From f3fcdedcde405ceca9fa2c8b2c59f09efc43fb03 Mon Sep 17 00:00:00 2001 From: wayonb Date: Fri, 5 Apr 2024 11:47:39 -0400 Subject: [PATCH 01/16] [mainnet]: initial catapult 1.0.3.6 release --- mongo/mongoDbDrop.js | 1 + mongo/mongoDbPrepare.js | 82 ++++ mongo/mongoLockHashDbPrepare.js | 5 + mongo/mongoLockSecretDbPrepare.js | 5 + mongo/mongoMetadataDbPrepare.js | 6 + mongo/mongoMosaicDbPrepare.js | 5 + mongo/mongoMultisigDbPrepare.js | 4 + mongo/mongoNamespaceDbPrepare.js | 8 + mongo/mongoRestrictionAccountDbPrepare.js | 4 + mongo/mongoRestrictionMosaicDbPrepare.js | 4 + resources/config-database.properties | 21 + resources/config-extensions-broker.properties | 8 + .../config-extensions-recovery.properties | 9 + resources/config-extensions-server.properties | 27 ++ resources/config-finalization.properties | 83 ++++ resources/config-harvesting.properties | 9 + resources/config-inflation.properties | 425 ++++++++++++++++++ resources/config-logging-broker.properties | 22 + resources/config-logging-recovery.properties | 22 + resources/config-logging-server.properties | 22 + resources/config-messaging.properties | 5 + resources/config-network.properties | 162 +++++++ resources/config-node.properties | 102 +++++ resources/config-pt.properties | 4 + resources/config-task.properties | 104 +++++ resources/config-timesync.properties | 4 + resources/config-user.properties | 11 + rest/rest.json | 104 +++++ seed/00000/00001.dat | Bin 0 -> 6396296 bytes seed/00000/00001.proof | Bin 0 -> 56 bytes seed/00000/00001.stmt | Bin 0 -> 21688 bytes seed/00000/hashes.dat | Bin 0 -> 64 bytes seed/00000/proof.heights.dat | Bin 0 -> 16 bytes seed/index.dat | Bin 0 -> 8 bytes seed/proof.index.dat | Bin 0 -> 48 bytes seed/summary.txt | 19 + shoestring.ini | 40 ++ 37 files changed, 1327 insertions(+) create mode 100644 mongo/mongoDbDrop.js create mode 100644 mongo/mongoDbPrepare.js create mode 100644 mongo/mongoLockHashDbPrepare.js create mode 100644 mongo/mongoLockSecretDbPrepare.js create mode 100644 mongo/mongoMetadataDbPrepare.js create mode 100644 mongo/mongoMosaicDbPrepare.js create mode 100644 mongo/mongoMultisigDbPrepare.js create mode 100644 mongo/mongoNamespaceDbPrepare.js create mode 100644 mongo/mongoRestrictionAccountDbPrepare.js create mode 100644 mongo/mongoRestrictionMosaicDbPrepare.js create mode 100644 resources/config-database.properties create mode 100644 resources/config-extensions-broker.properties create mode 100644 resources/config-extensions-recovery.properties create mode 100644 resources/config-extensions-server.properties create mode 100644 resources/config-finalization.properties create mode 100644 resources/config-harvesting.properties create mode 100644 resources/config-inflation.properties create mode 100644 resources/config-logging-broker.properties create mode 100644 resources/config-logging-recovery.properties create mode 100644 resources/config-logging-server.properties create mode 100644 resources/config-messaging.properties create mode 100644 resources/config-network.properties create mode 100644 resources/config-node.properties create mode 100644 resources/config-pt.properties create mode 100644 resources/config-task.properties create mode 100644 resources/config-timesync.properties create mode 100644 resources/config-user.properties create mode 100644 rest/rest.json create mode 100644 seed/00000/00001.dat create mode 100644 seed/00000/00001.proof create mode 100644 seed/00000/00001.stmt create mode 100644 seed/00000/hashes.dat create mode 100644 seed/00000/proof.heights.dat create mode 100644 seed/index.dat create mode 100644 seed/proof.index.dat create mode 100644 seed/summary.txt create mode 100644 shoestring.ini diff --git a/mongo/mongoDbDrop.js b/mongo/mongoDbDrop.js new file mode 100644 index 0000000..6e0cf24 --- /dev/null +++ b/mongo/mongoDbDrop.js @@ -0,0 +1 @@ +db.dropDatabase(); diff --git a/mongo/mongoDbPrepare.js b/mongo/mongoDbPrepare.js new file mode 100644 index 0000000..716ca9d --- /dev/null +++ b/mongo/mongoDbPrepare.js @@ -0,0 +1,82 @@ +(function prepareDbConfiguration() { + db.setProfilingLevel(1, 100); // log slow queries +})(); + +(function prepareDbCollections() { + function makeSparse(propertyName) { + return { partialFilterExpression: { [propertyName]: { $exists: true } } }; + } + + function addCommonTransactionIndexes(collection) { + collection.createIndex({ 'transaction.signerPublicKey': 1, _id: -1 }); + collection.createIndex({ 'transaction.recipientAddress': 1, _id: -1 }); + collection.createIndex({ 'meta.hash': 1 }, Object.assign({ unique: true }, makeSparse('meta.hash'))); + collection.createIndex({ 'meta.addresses': 1 }, makeSparse('meta.addresses')); + collection.createIndex({ 'meta.aggregateId': 1 }, makeSparse('meta.aggregateId')); + } + + function addTransactionCollection(collectionName) { + db.createCollection(collectionName); + addCommonTransactionIndexes(db[collectionName]); + db[collectionName].createIndex({ 'meta.aggregateHash': 1 }, makeSparse('meta.aggregateHash')); + } + + db.createCollection('blocks'); + db.blocks.createIndex({ 'block.signerPublicKey': 1 }); + db.blocks.createIndex({ 'block.timestamp': -1 }, { unique: true }); + db.blocks.createIndex({ 'block.height': -1 }, { unique: true }); + db.blocks.createIndex({ 'block.type': 1, 'block.height': -1 }, { unique: true }); + db.blocks.createIndex({ 'block.signerPublicKey': 1, 'block.height': -1 }, { unique: true }); + db.blocks.createIndex({ 'block.beneficiaryAddress': 1, 'block.height': -1 }, { unique: true }); + + db.createCollection('finalizedBlocks'); + db.finalizedBlocks.createIndex({ 'block.finalizationEpoch': -1 }); + db.finalizedBlocks.createIndex({ 'block.height': -1 }); + db.finalizedBlocks.createIndex({ 'block.finalizationEpoch': -1, 'block.finalizationPoint': -1 }, { unique: true }); + + db.createCollection('transactions'); + addCommonTransactionIndexes(db.transactions); + db.transactions.createIndex({ 'meta.height': -1 }); + db.transactions.createIndex({ 'transaction.deadline': -1 }); + db.transactions.createIndex({ 'transaction.cosignatures.signerPublicKey': 1 }, makeSparse('transaction.cosignatures.signerPublicKey')); + db.transactions.createIndex({ 'transaction.id': 1, 'transaction.type': 1 }, makeSparse('transaction.id')); + + db.createCollection('transactionStatements'); + db.transactionStatements.createIndex( + { 'statement.height': 1, 'statement.source.primaryId': 1, 'statement.source.secondaryId': 1 }, + { unique: true }); + + ['addressResolutionStatements', 'mosaicResolutionStatements'].forEach(collectionName => { + db.createCollection(collectionName); + db[collectionName].createIndex({ 'statement.height': 1, 'statement.unresolved': 1 }, { unique: true }); + }); + + db.createCollection('accounts'); + db.accounts.createIndex({ 'account.publicKey': 1 }); // cannot be unique because zeroed public keys are stored + db.accounts.createIndex({ 'account.address': 1 }, { unique: true }); + + ['unconfirmedTransactions', 'partialTransactions'].forEach(addTransactionCollection); + + db.createCollection('transactionStatuses', { capped: true, size: 53000000, max: 500000 }); + db.transactionStatuses.createIndex({ 'status.hash': 1 }, { unique: true }); + db.transactionStatuses.createIndex({ 'status.deadline': -1 }); +})(); + +(function preparePluginDbCollections() { + const pluginNames = [ + 'LockHash', 'LockSecret', 'Metadata', 'Mosaic', 'Multisig', 'Namespace', 'RestrictionAccount', 'RestrictionMosaic' + ]; + pluginNames.forEach(pluginName => { + print(`Loading ${pluginName}`); + load(`mongo${pluginName}DbPrepare.js`); + }); +})(); + +(function printCollectionIndexes() { + db.getCollectionNames().forEach(collectionName => { + print(`===== ${collectionName} INDEXES =====`); + db[collectionName].getIndexes().forEach(index => { + printjson(index.key); + }); + }); +})(); diff --git a/mongo/mongoLockHashDbPrepare.js b/mongo/mongoLockHashDbPrepare.js new file mode 100644 index 0000000..bd0c70c --- /dev/null +++ b/mongo/mongoLockHashDbPrepare.js @@ -0,0 +1,5 @@ +(function prepareHashLockCollections() { + db.createCollection('hashLocks'); + db.hashLocks.createIndex({ 'lock.hash': 1 }, { unique: true }); + db.hashLocks.createIndex({ 'lock.ownerAddress': 1 }); +})(); diff --git a/mongo/mongoLockSecretDbPrepare.js b/mongo/mongoLockSecretDbPrepare.js new file mode 100644 index 0000000..04beac7 --- /dev/null +++ b/mongo/mongoLockSecretDbPrepare.js @@ -0,0 +1,5 @@ +(function prepareSecretLockCollections() { + db.createCollection('secretLocks'); + db.secretLocks.createIndex({ 'lock.compositeHash': 1 }, { unique: true }); + db.secretLocks.createIndex({ 'lock.ownerAddress': 1 }); +})(); diff --git a/mongo/mongoMetadataDbPrepare.js b/mongo/mongoMetadataDbPrepare.js new file mode 100644 index 0000000..b997bb9 --- /dev/null +++ b/mongo/mongoMetadataDbPrepare.js @@ -0,0 +1,6 @@ +(function prepareMetadataCollections() { + db.createCollection('metadata'); + db.metadata.createIndex({ 'metadataEntry.compositeHash': 1 }, { unique: true }); + db.metadata.createIndex({ 'metadataEntry.sourceAddress': 1, 'metadataEntry.metadataType': 1, 'metadataEntry.scopedMetadataKey': 1 }); + db.metadata.createIndex({ 'metadataEntry.targetAddress': 1, 'metadataEntry.metadataType': 1, 'metadataEntry.scopedMetadataKey': 1 }); +})(); diff --git a/mongo/mongoMosaicDbPrepare.js b/mongo/mongoMosaicDbPrepare.js new file mode 100644 index 0000000..3046fc9 --- /dev/null +++ b/mongo/mongoMosaicDbPrepare.js @@ -0,0 +1,5 @@ +(function prepareMosaicCollections() { + db.createCollection('mosaics'); + db.mosaics.createIndex({ 'mosaic.id': 1 }, { unique: true }); + db.mosaics.createIndex({ 'mosaic.ownerAddress': 1 }); +})(); diff --git a/mongo/mongoMultisigDbPrepare.js b/mongo/mongoMultisigDbPrepare.js new file mode 100644 index 0000000..0793598 --- /dev/null +++ b/mongo/mongoMultisigDbPrepare.js @@ -0,0 +1,4 @@ +(function prepareMultisigCollections() { + db.createCollection('multisigs'); + db.multisigs.createIndex({ 'multisig.accountAddress': 1 }, { unique: true }); +})(); diff --git a/mongo/mongoNamespaceDbPrepare.js b/mongo/mongoNamespaceDbPrepare.js new file mode 100644 index 0000000..c553cba --- /dev/null +++ b/mongo/mongoNamespaceDbPrepare.js @@ -0,0 +1,8 @@ +(function prepareNamespaceCollections() { + db.createCollection('namespaces'); + db.namespaces.createIndex({ 'namespace.level0': 1, 'meta.index': 1, 'namespace.depth': 1 }); + db.namespaces.createIndex({ 'meta.latest': -1, 'meta.index': 1, 'namespace.level0': 1, 'namespace.depth': 1 }); + db.namespaces.createIndex({ 'meta.latest': -1, 'namespace.level1': 1, 'namespace.depth': 1 }); + db.namespaces.createIndex({ 'meta.latest': -1, 'namespace.level2': 1, 'namespace.depth': 1 }); + db.namespaces.createIndex({ 'meta.latest': -1, 'namespace.ownerAddress': 1 }); +})(); diff --git a/mongo/mongoRestrictionAccountDbPrepare.js b/mongo/mongoRestrictionAccountDbPrepare.js new file mode 100644 index 0000000..2a74c96 --- /dev/null +++ b/mongo/mongoRestrictionAccountDbPrepare.js @@ -0,0 +1,4 @@ +(function prepareRestrictionAccountCollections() { + db.createCollection('accountRestrictions'); + db.accountRestrictions.createIndex({ 'accountRestrictions.address': 1 }, { unique: true }); +})(); diff --git a/mongo/mongoRestrictionMosaicDbPrepare.js b/mongo/mongoRestrictionMosaicDbPrepare.js new file mode 100644 index 0000000..3d35e8f --- /dev/null +++ b/mongo/mongoRestrictionMosaicDbPrepare.js @@ -0,0 +1,4 @@ +(function prepareRestrictionMosaicCollections() { + db.createCollection('mosaicRestrictions'); + db.mosaicRestrictions.createIndex({ 'mosaicRestrictionEntry.compositeHash': 1 }, { unique: true }); +})(); diff --git a/resources/config-database.properties b/resources/config-database.properties new file mode 100644 index 0000000..2753cd3 --- /dev/null +++ b/resources/config-database.properties @@ -0,0 +1,21 @@ +[database] + +databaseUri = mongodb://db:27017 +databaseName = catapult +maxWriterThreads = 8 +maxDropBatchSize = 10 +writeTimeout = 10m + +[plugins] + +catapult.mongo.plugins.accountlink = true +catapult.mongo.plugins.aggregate = true +catapult.mongo.plugins.lockhash = true +catapult.mongo.plugins.locksecret = true +catapult.mongo.plugins.metadata = true +catapult.mongo.plugins.mosaic = true +catapult.mongo.plugins.multisig = true +catapult.mongo.plugins.namespace = true +catapult.mongo.plugins.restrictionaccount = true +catapult.mongo.plugins.restrictionmosaic = true +catapult.mongo.plugins.transfer = true diff --git a/resources/config-extensions-broker.properties b/resources/config-extensions-broker.properties new file mode 100644 index 0000000..2772cbc --- /dev/null +++ b/resources/config-extensions-broker.properties @@ -0,0 +1,8 @@ +[extensions] + +# addressextraction must be first because mongo and zeromq depend on extracted addresses +extension.addressextraction = true +extension.mongo = true +extension.zeromq = true + +extension.hashcache = true diff --git a/resources/config-extensions-recovery.properties b/resources/config-extensions-recovery.properties new file mode 100644 index 0000000..3c40ced --- /dev/null +++ b/resources/config-extensions-recovery.properties @@ -0,0 +1,9 @@ +[extensions] + +# addressextraction must be first because mongo and zeromq depend on extracted addresses +extension.addressextraction = false +extension.mongo = false +extension.zeromq = false + +extension.filespooling = false +extension.hashcache = true diff --git a/resources/config-extensions-server.properties b/resources/config-extensions-server.properties new file mode 100644 index 0000000..db896d0 --- /dev/null +++ b/resources/config-extensions-server.properties @@ -0,0 +1,27 @@ +[extensions] + +# api extensions +extension.filespooling = false +extension.partialtransaction = false + +# addressextraction must be first because mongo and zeromq depend on extracted addresses +extension.addressextraction = false +extension.mongo = false +extension.zeromq = false + +# p2p extensions +extension.harvesting = true +extension.syncsource = true + +# common extensions +extension.diagnostics = true +extension.finalization = true +extension.hashcache = true +extension.networkheight = false +extension.nodediscovery = true +extension.packetserver = true +extension.pluginhandlers = true +extension.sync = true +extension.timesync = true +extension.transactionsink = true +extension.unbondedpruning = true diff --git a/resources/config-finalization.properties b/resources/config-finalization.properties new file mode 100644 index 0000000..86a35e3 --- /dev/null +++ b/resources/config-finalization.properties @@ -0,0 +1,83 @@ +[finalization] + +enableVoting = false +enableRevoteOnBoot = false + +size = 10'000 +threshold = 6'700 +stepDuration = 5m + +shortLivedCacheMessageDuration = 10m +messageSynchronizationMaxResponseSize = 20MB + +maxHashesPerPoint = 256 +prevoteBlocksMultiple = 4 + +unfinalizedBlocksDuration = 10m + +treasuryReissuanceEpoch = 481 + +[treasury_reissuance_epoch_ineligible_voter_addresses] + +ND6667LJBJJ6UMJSZKN2BLHQCS3WNZ3W4UGCFKI = true +NCKAC225JEFJTB3EO64MIVYF5D7YGZM2ZFXRJNI = true +NACXOOKIDID7S75S4FFSC7KBBIBHOBUXB5VSE7A = true +NCVQPB2LZ6UCYKGYJAMCC7V4JGXA35BBY44BMHY = true +NDSQX6J2QALD2XTU5NQ4FWA2MMEFKBOBEB2BIOQ = true +NDLFVQ3C25P5VO2VWP6AMHPIJT6FZYTXNJD4ZAY = true +NCXX3KEIEZ3NABMUU45GM7X7BLMPMQHFOZMMF4Q = true +NDF4ZCXFKIU5DSJEVBOOI2BDZMDKJTGJVBD6JRY = true +NCTTMDTZUUQVN4OKTSF3FTEHJQL2QOGAV25MDCA = true +NDLORKVADZSXTIVAA2FYLDMM7I32AIWE7HDWGUQ = true +NCQADXOA7ZHLUW2567H33HNNEKCOCN2OJ53PXIQ = true +NDX4GP6OL32EOSGXSB5FTGKXDJZP4D535ZZYDFI = true +NCE3EP762222D5D2UAF6KIFL7XZ7U4TPFWBYVHA = true +NDRLHNV4W7W2M527QOIP35OI3HOMAGTCJDPFDEQ = true +NDNGH7WJHSMULMCKYE333V6WU4CQDWXZIJK2VCY = true +NB5NIEQF7FM7LLSFASHOQF4X3F6IPDYSIGR3UVA = true +NDC3U2UERNMRYFQA45XC74TEEETTZPRUVWKFPAY = true +NBNCW3DUUHGBCVJ53LYSYYNMKJ52TLR33C5U53A = true +NCAXT7RH6SUPXEU75EIPAPF7DM4VWUBC5AW2L4Q = true +NALOQMBU45WOLZ4BCBYZX3N2Y2VSYQFOXGAO34A = true +NA2KVKEQDZZMM3NGXYVBHZ46JHM46UWIX3KJ4AY = true +NBI2NEBVAD45WWV44H3A53AQ5675Z4G3ZDGDYLI = true +NB5ORUTTH2QYHEVTDBB5WPQI4US22FNMODFRK5Y = true +NDMR4GMUWGMODWY4FF2VZ3CEC2F56HTD3T6EJYY = true +NCBLL63WUAL7FBNPZQISGJR4WZNB7RVWCWG25MI = true +NBGGUKW3GEUFHKTO4DYSGDTHIVPKAME3T2XSCGY = true +NCASTBFHXMHGQB2UJVUDSW7ZI4N2FDW54OTSHKQ = true +ND726EB3B2VG77J3EEQSGNGUX3SS6L2IEBS7PIY = true +ND2MRMODKMLCFJWPFJ4MDFI76R7FLZVKIIVKD3A = true +NDG6ORUW4PVWVQJRQ5AXADQBUQVL3KBX7AW7MUY = true +NBQS3VKGOJ3YNIABN4Y4SFUDBDQHARUIVS6IMGQ = true +NCC3VKV3V2HCAP2KTXJUWSXCJ3B6U32EKR6VU5I = true +NBUW4OTD42VHELNPCLPQCUHNBHR47PQKLP2EKXA = true +NDBKLXZWYBMUUTNRRZ5ESRAJYMQIMHGLGAYLTGY = true +NABH3A5VDLYAVA73OV246JTVMAIPD2WEMAQL27I = true +NCVG74MGUGR3PLVBWVNNACD6R37JA4RCQMXY3DY = true +NDQLBLKXVOK2YS5G7J3AYYKTNW3S3RRK6RQONAQ = true +NDTNPG2NUA3MPVDXHLC6D5PSKM4JLLTMQJ5HEDY = true +ND4MLYCECHPACYSDDQUFMPXONSIQLPAWNVBWSIA = true +NCNRS6KDPHV4MNMXOEGYD6LNRBMWUR7NT4SZI7I = true +NBRENIWJUCSUU7RJ5S2DEJVXAOJOTZZDKEFOC3I = true +NA7YZPY222RVYQMUM65ZSVFSPAHL55UWO3S35FY = true +NCVR72OUOHVGTVLYBKI7PLUDTIAYPRUWPMJJP3Q = true +NDE57ICE4UOAPUV3E4CYU3PBA2X4ABUGRGKDFBA = true +NBBBCIKJV45U7PNYTNXETH2UFZLJ3C6TJKLJDQQ = true +NCRLDB2O2QDPU57PEG3D3AIFSGPGCZU7VVTKBUY = true +NC7QENF6OO2FRYV7Q4B5Q74LRSC54Y3YNYN5O3Y = true +NAL4XHZU6MANNNFQI4Z2WNMU3KRI2YW2MRRMHLI = true +NC5CFRDWEZVCMGQ4Y77OEFSQLMQ3V4EL7JERY2A = true +NAIPUZBSDXZIHQKKILAFT3F43IQPS4LOZCH2H4Q = true +ND6ZNSQG3I7VWLWSJ3DTYVPEZSJRGSEERW2F7DI = true +NC54KVIISZCMMB3ABAMV6NQ6DAUIYYVKQ23S73Q = true +NBNRFJSGE53UNHBGZIHYZXPG7SHLQISJN5REGIY = true +NCFFJV3VTAK6BJZNV6ZRUZKUJPOWST6MYFAAK5A = true +NAAZKYH4V6SARDIJRGFXYEZIHVRWY7R2T62QFYA = true +NAGCLXJZHZSBM5ILN4LQBDKU4NYVHB6ZLGRTKJI = true +NBGEJ36QK43DR4MYB6XFUFLSVFLULX3HBVNRCVY = true +NCGCVCURBA2GCKPEGEA2Q6HKFEHYITKUNWRLMEA = true +NA5ZUGHBUUHO63E5OQQND7CYK7UZ3HVQONR2O6Y = true +NC2GXL6FQXZY3FXZAYJLBDQHBKSANZLGP4PL7VA = true +NB3WMVRI4RM3O3NUSWBZM7U4EZMKADSOFDPPJRQ = true +NCFH35TMUJ5QJL6LTBYRBO7ERMM4NIBH7TL6TFY = true diff --git a/resources/config-harvesting.properties b/resources/config-harvesting.properties new file mode 100644 index 0000000..cbaca1c --- /dev/null +++ b/resources/config-harvesting.properties @@ -0,0 +1,9 @@ +[harvesting] + +harvesterSigningPrivateKey = AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +harvesterVrfPrivateKey = AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + +enableAutoHarvesting = false +maxUnlockedAccounts = 10 +delegatePrioritizationPolicy = Importance +beneficiaryAddress = diff --git a/resources/config-inflation.properties b/resources/config-inflation.properties new file mode 100644 index 0000000..70f91c2 --- /dev/null +++ b/resources/config-inflation.properties @@ -0,0 +1,425 @@ +[inflation] + +starting-at-height-2 = 0 +starting-at-height-5760 = 191997042 +starting-at-height-172799 = 183764522 +starting-at-height-435299 = 175884998 +starting-at-height-697799 = 168343336 +starting-at-height-960299 = 161125048 +starting-at-height-1222799 = 154216270 +starting-at-height-1485299 = 147603728 +starting-at-height-1747799 = 141274720 +starting-at-height-2010299 = 135217090 +starting-at-height-2272799 = 129419202 +starting-at-height-2535299 = 123869918 +starting-at-height-2797799 = 118558578 +starting-at-height-3060299 = 113474978 +starting-at-height-3322799 = 108609356 +starting-at-height-3585299 = 103952364 +starting-at-height-3847799 = 99495056 +starting-at-height-4110299 = 95228870 +starting-at-height-4372799 = 91145612 +starting-at-height-4635299 = 87237436 +starting-at-height-4897799 = 83496838 +starting-at-height-5160299 = 79916630 +starting-at-height-5422799 = 76489934 +starting-at-height-5685299 = 73210170 +starting-at-height-5947799 = 70071038 +starting-at-height-6210299 = 67066506 +starting-at-height-6472799 = 64190804 +starting-at-height-6735299 = 61438406 +starting-at-height-6997799 = 58804028 +starting-at-height-7260299 = 56282608 +starting-at-height-7522799 = 53869300 +starting-at-height-7785299 = 51559472 +starting-at-height-8047799 = 49348686 +starting-at-height-8310299 = 47232696 +starting-at-height-8572799 = 45207434 +starting-at-height-8835299 = 43269014 +starting-at-height-9097799 = 41413708 +starting-at-height-9360299 = 39637956 +starting-at-height-9622799 = 37938346 +starting-at-height-9885299 = 36311610 +starting-at-height-10147799 = 34754628 +starting-at-height-10410299 = 33264406 +starting-at-height-10672799 = 31838082 +starting-at-height-10935299 = 30472918 +starting-at-height-11197799 = 29166288 +starting-at-height-11460299 = 27915686 +starting-at-height-11722799 = 26718706 +starting-at-height-11985299 = 25573052 +starting-at-height-12247799 = 24476520 +starting-at-height-12510299 = 23427008 +starting-at-height-12772799 = 22422496 +starting-at-height-13035299 = 21461056 +starting-at-height-13297799 = 20540840 +starting-at-height-13560299 = 19660082 +starting-at-height-13822799 = 18817090 +starting-at-height-14085299 = 18010244 +starting-at-height-14347799 = 17237994 +starting-at-height-14610299 = 16498858 +starting-at-height-14872799 = 15791412 +starting-at-height-15135299 = 15114302 +starting-at-height-15397799 = 14466226 +starting-at-height-15660299 = 13845938 +starting-at-height-15922799 = 13252246 +starting-at-height-16185299 = 12684012 +starting-at-height-16447799 = 12140142 +starting-at-height-16710299 = 11619592 +starting-at-height-16972799 = 11121364 +starting-at-height-17235299 = 10644498 +starting-at-height-17497799 = 10188078 +starting-at-height-17760299 = 9751230 +starting-at-height-18022799 = 9333114 +starting-at-height-18285299 = 8932924 +starting-at-height-18547799 = 8549896 +starting-at-height-18810299 = 8183290 +starting-at-height-19072799 = 7832404 +starting-at-height-19335299 = 7496562 +starting-at-height-19597799 = 7175122 +starting-at-height-19860299 = 6867464 +starting-at-height-20122799 = 6573000 +starting-at-height-20385299 = 6291160 +starting-at-height-20647799 = 6021404 +starting-at-height-20910299 = 5763216 +starting-at-height-21172799 = 5516100 +starting-at-height-21435299 = 5279578 +starting-at-height-21697799 = 5053198 +starting-at-height-21960299 = 4836526 +starting-at-height-22222799 = 4629144 +starting-at-height-22485299 = 4430652 +starting-at-height-22747799 = 4240674 +starting-at-height-23010299 = 4058840 +starting-at-height-23272799 = 3884804 +starting-at-height-23535299 = 3718230 +starting-at-height-23797799 = 3558798 +starting-at-height-24060299 = 3406202 +starting-at-height-24322799 = 3260150 +starting-at-height-24585299 = 3120360 +starting-at-height-24847799 = 2986564 +starting-at-height-25110299 = 2858506 +starting-at-height-25372799 = 2735938 +starting-at-height-25635299 = 2618624 +starting-at-height-25897799 = 2506342 +starting-at-height-26160299 = 2398874 +starting-at-height-26422799 = 2296014 +starting-at-height-26685299 = 2197564 +starting-at-height-26947799 = 2103336 +starting-at-height-27210299 = 2013150 +starting-at-height-27472799 = 1926828 +starting-at-height-27735299 = 1844210 +starting-at-height-27997799 = 1765132 +starting-at-height-28260299 = 1689446 +starting-at-height-28522799 = 1617006 +starting-at-height-28785299 = 1547672 +starting-at-height-29047799 = 1481310 +starting-at-height-29310299 = 1417794 +starting-at-height-29572799 = 1357000 +starting-at-height-29835299 = 1298814 +starting-at-height-30097799 = 1243124 +starting-at-height-30360299 = 1189820 +starting-at-height-30622799 = 1138802 +starting-at-height-30885299 = 1089972 +starting-at-height-31147799 = 1043236 +starting-at-height-31410299 = 998504 +starting-at-height-31672799 = 955690 +starting-at-height-31935299 = 914712 +starting-at-height-32197799 = 875490 +starting-at-height-32460299 = 837950 +starting-at-height-32722799 = 802020 +starting-at-height-32985299 = 767630 +starting-at-height-33247799 = 734716 +starting-at-height-33510299 = 703212 +starting-at-height-33772799 = 673060 +starting-at-height-34035299 = 644200 +starting-at-height-34297799 = 616578 +starting-at-height-34560299 = 590140 +starting-at-height-34822799 = 564836 +starting-at-height-35085299 = 540616 +starting-at-height-35347799 = 517436 +starting-at-height-35610299 = 495248 +starting-at-height-35872799 = 474014 +starting-at-height-36135299 = 453688 +starting-at-height-36397799 = 434234 +starting-at-height-36660299 = 415616 +starting-at-height-36922799 = 397794 +starting-at-height-37185299 = 380738 +starting-at-height-37447799 = 364412 +starting-at-height-37710299 = 348786 +starting-at-height-37972799 = 333832 +starting-at-height-38235299 = 319518 +starting-at-height-38497799 = 305816 +starting-at-height-38760299 = 292704 +starting-at-height-39022799 = 280154 +starting-at-height-39285299 = 268140 +starting-at-height-39547799 = 256644 +starting-at-height-39810299 = 245638 +starting-at-height-40072799 = 235106 +starting-at-height-40335299 = 225026 +starting-at-height-40597799 = 215376 +starting-at-height-40860299 = 206142 +starting-at-height-41122799 = 197302 +starting-at-height-41385299 = 188842 +starting-at-height-41647799 = 180744 +starting-at-height-41910299 = 172994 +starting-at-height-42172799 = 165578 +starting-at-height-42435299 = 158478 +starting-at-height-42697799 = 151682 +starting-at-height-42960299 = 145178 +starting-at-height-43222799 = 138954 +starting-at-height-43485299 = 132994 +starting-at-height-43747799 = 127292 +starting-at-height-44010299 = 121834 +starting-at-height-44272799 = 116610 +starting-at-height-44535299 = 111610 +starting-at-height-44797799 = 106824 +starting-at-height-45060299 = 102244 +starting-at-height-45322799 = 97860 +starting-at-height-45585299 = 93664 +starting-at-height-45847799 = 89648 +starting-at-height-46110299 = 85804 +starting-at-height-46372799 = 82124 +starting-at-height-46635299 = 78602 +starting-at-height-46897799 = 75232 +starting-at-height-47160299 = 72006 +starting-at-height-47422799 = 68920 +starting-at-height-47685299 = 65964 +starting-at-height-47947799 = 63136 +starting-at-height-48210299 = 60428 +starting-at-height-48472799 = 57838 +starting-at-height-48735299 = 55358 +starting-at-height-48997799 = 52984 +starting-at-height-49260299 = 50712 +starting-at-height-49522799 = 48538 +starting-at-height-49785299 = 46456 +starting-at-height-50047799 = 44464 +starting-at-height-50310299 = 42558 +starting-at-height-50572799 = 40732 +starting-at-height-50835299 = 38986 +starting-at-height-51097799 = 37314 +starting-at-height-51360299 = 35714 +starting-at-height-51622799 = 34182 +starting-at-height-51885299 = 32716 +starting-at-height-52147799 = 31314 +starting-at-height-52410299 = 29972 +starting-at-height-52672799 = 28686 +starting-at-height-52935299 = 27456 +starting-at-height-53197799 = 26278 +starting-at-height-53460299 = 25152 +starting-at-height-53722799 = 24074 +starting-at-height-53985299 = 23042 +starting-at-height-54247799 = 22054 +starting-at-height-54510299 = 21108 +starting-at-height-54772799 = 20202 +starting-at-height-55035299 = 19336 +starting-at-height-55297799 = 18506 +starting-at-height-55560299 = 17714 +starting-at-height-55822799 = 16954 +starting-at-height-56085299 = 16226 +starting-at-height-56347799 = 15532 +starting-at-height-56610299 = 14866 +starting-at-height-56872799 = 14228 +starting-at-height-57135299 = 13618 +starting-at-height-57397799 = 13034 +starting-at-height-57660299 = 12474 +starting-at-height-57922799 = 11940 +starting-at-height-58185299 = 11428 +starting-at-height-58447799 = 10938 +starting-at-height-58710299 = 10468 +starting-at-height-58972799 = 10020 +starting-at-height-59235299 = 9590 +starting-at-height-59497799 = 9178 +starting-at-height-59760299 = 8786 +starting-at-height-60022799 = 8408 +starting-at-height-60285299 = 8048 +starting-at-height-60547799 = 7702 +starting-at-height-60810299 = 7372 +starting-at-height-61072799 = 7056 +starting-at-height-61335299 = 6754 +starting-at-height-61597799 = 6464 +starting-at-height-61860299 = 6186 +starting-at-height-62122799 = 5922 +starting-at-height-62385299 = 5668 +starting-at-height-62647799 = 5424 +starting-at-height-62910299 = 5192 +starting-at-height-63172799 = 4970 +starting-at-height-63435299 = 4756 +starting-at-height-63697799 = 4552 +starting-at-height-63960299 = 4356 +starting-at-height-64222799 = 4170 +starting-at-height-64485299 = 3992 +starting-at-height-64747799 = 3820 +starting-at-height-65010299 = 3656 +starting-at-height-65272799 = 3500 +starting-at-height-65535299 = 3350 +starting-at-height-65797799 = 3206 +starting-at-height-66060299 = 3068 +starting-at-height-66322799 = 2936 +starting-at-height-66585299 = 2810 +starting-at-height-66847799 = 2690 +starting-at-height-67110299 = 2574 +starting-at-height-67372799 = 2464 +starting-at-height-67635299 = 2358 +starting-at-height-67897799 = 2258 +starting-at-height-68160299 = 2160 +starting-at-height-68422799 = 2068 +starting-at-height-68685299 = 1980 +starting-at-height-68947799 = 1894 +starting-at-height-69210299 = 1812 +starting-at-height-69472799 = 1736 +starting-at-height-69735299 = 1660 +starting-at-height-69997799 = 1590 +starting-at-height-70260299 = 1522 +starting-at-height-70522799 = 1456 +starting-at-height-70785299 = 1394 +starting-at-height-71047799 = 1334 +starting-at-height-71310299 = 1276 +starting-at-height-71572799 = 1222 +starting-at-height-71835299 = 1170 +starting-at-height-72097799 = 1120 +starting-at-height-72360299 = 1072 +starting-at-height-72622799 = 1026 +starting-at-height-72885299 = 982 +starting-at-height-73147799 = 938 +starting-at-height-73410299 = 898 +starting-at-height-73672799 = 860 +starting-at-height-73935299 = 824 +starting-at-height-74197799 = 788 +starting-at-height-74460299 = 754 +starting-at-height-74722799 = 722 +starting-at-height-74985299 = 690 +starting-at-height-75247799 = 662 +starting-at-height-75510299 = 632 +starting-at-height-75772799 = 606 +starting-at-height-76035299 = 580 +starting-at-height-76297799 = 554 +starting-at-height-76560299 = 530 +starting-at-height-76822799 = 508 +starting-at-height-77085299 = 486 +starting-at-height-77347799 = 466 +starting-at-height-77610299 = 446 +starting-at-height-77872799 = 426 +starting-at-height-78135299 = 408 +starting-at-height-78397799 = 390 +starting-at-height-78660299 = 374 +starting-at-height-78922799 = 358 +starting-at-height-79185299 = 342 +starting-at-height-79447799 = 328 +starting-at-height-79710299 = 314 +starting-at-height-79972799 = 300 +starting-at-height-80235299 = 286 +starting-at-height-80497799 = 274 +starting-at-height-80760299 = 262 +starting-at-height-81022799 = 252 +starting-at-height-81285299 = 240 +starting-at-height-81547799 = 230 +starting-at-height-81810299 = 220 +starting-at-height-82072799 = 210 +starting-at-height-82335299 = 202 +starting-at-height-82597799 = 194 +starting-at-height-82860299 = 184 +starting-at-height-83122799 = 176 +starting-at-height-83385299 = 170 +starting-at-height-83647799 = 162 +starting-at-height-83910299 = 154 +starting-at-height-84172799 = 148 +starting-at-height-84435299 = 142 +starting-at-height-84697799 = 136 +starting-at-height-84960299 = 130 +starting-at-height-85222799 = 124 +starting-at-height-85485299 = 118 +starting-at-height-85747799 = 114 +starting-at-height-86010299 = 108 +starting-at-height-86272799 = 104 +starting-at-height-86535299 = 100 +starting-at-height-86797799 = 96 +starting-at-height-87060299 = 92 +starting-at-height-87322799 = 88 +starting-at-height-87585299 = 84 +starting-at-height-87847799 = 80 +starting-at-height-88110299 = 76 +starting-at-height-88372799 = 72 +starting-at-height-88635299 = 70 +starting-at-height-88897799 = 66 +starting-at-height-89160299 = 64 +starting-at-height-89422799 = 62 +starting-at-height-89685299 = 58 +starting-at-height-89947799 = 56 +starting-at-height-90210299 = 54 +starting-at-height-90472799 = 52 +starting-at-height-90735299 = 48 +starting-at-height-90997799 = 46 +starting-at-height-91260299 = 44 +starting-at-height-91522799 = 42 +starting-at-height-91785299 = 40 +starting-at-height-92047799 = 40 +starting-at-height-92310299 = 38 +starting-at-height-92572799 = 36 +starting-at-height-92835299 = 34 +starting-at-height-93097799 = 32 +starting-at-height-93360299 = 32 +starting-at-height-93622799 = 30 +starting-at-height-93885299 = 28 +starting-at-height-94147799 = 28 +starting-at-height-94410299 = 26 +starting-at-height-94672799 = 24 +starting-at-height-94935299 = 24 +starting-at-height-95197799 = 22 +starting-at-height-95460299 = 22 +starting-at-height-95722799 = 20 +starting-at-height-95985299 = 20 +starting-at-height-96247799 = 18 +starting-at-height-96510299 = 18 +starting-at-height-96772799 = 18 +starting-at-height-97035299 = 16 +starting-at-height-97297799 = 16 +starting-at-height-97560299 = 14 +starting-at-height-97822799 = 14 +starting-at-height-98085299 = 14 +starting-at-height-98347799 = 12 +starting-at-height-98610299 = 12 +starting-at-height-98872799 = 12 +starting-at-height-99135299 = 12 +starting-at-height-99397799 = 10 +starting-at-height-99660299 = 10 +starting-at-height-99922799 = 10 +starting-at-height-100185299 = 10 +starting-at-height-100447799 = 8 +starting-at-height-100710299 = 8 +starting-at-height-100972799 = 8 +starting-at-height-101235299 = 8 +starting-at-height-101497799 = 8 +starting-at-height-101760299 = 6 +starting-at-height-102022799 = 6 +starting-at-height-102285299 = 6 +starting-at-height-102547799 = 6 +starting-at-height-102810299 = 6 +starting-at-height-103072799 = 6 +starting-at-height-103335299 = 6 +starting-at-height-103597799 = 4 +starting-at-height-103860299 = 4 +starting-at-height-104122799 = 4 +starting-at-height-104385299 = 4 +starting-at-height-104647799 = 4 +starting-at-height-104910299 = 4 +starting-at-height-105172799 = 4 +starting-at-height-105435299 = 4 +starting-at-height-105697799 = 4 +starting-at-height-105960299 = 2 +starting-at-height-106222799 = 2 +starting-at-height-106485299 = 2 +starting-at-height-106747799 = 2 +starting-at-height-107010299 = 2 +starting-at-height-107272799 = 2 +starting-at-height-107535299 = 2 +starting-at-height-107797799 = 2 +starting-at-height-108060299 = 2 +starting-at-height-108322799 = 2 +starting-at-height-108585299 = 2 +starting-at-height-108847799 = 2 +starting-at-height-109110299 = 2 +starting-at-height-109372799 = 2 +starting-at-height-109635299 = 2 +starting-at-height-109897799 = 2 +starting-at-height-110160299 = 1 +starting-at-height-110422799 = 0 diff --git a/resources/config-logging-broker.properties b/resources/config-logging-broker.properties new file mode 100644 index 0000000..786fae3 --- /dev/null +++ b/resources/config-logging-broker.properties @@ -0,0 +1,22 @@ +[console] + +sinkType = Async +level = Info +colorMode = Ansi + +[console.component.levels] + +# e.g. to log more verbose messages about the 'net' component, uncomment +# net = Debug + +[file] + +sinkType = Async +level = Info +directory = logs +filePattern = logs/catapult_broker%4N.log +rotationSize = 25MB +maxTotalSize = 1000MB +minFreeSpace = 100MB + +[file.component.levels] diff --git a/resources/config-logging-recovery.properties b/resources/config-logging-recovery.properties new file mode 100644 index 0000000..5e56e7b --- /dev/null +++ b/resources/config-logging-recovery.properties @@ -0,0 +1,22 @@ +[console] + +sinkType = Async +level = Info +colorMode = Ansi + +[console.component.levels] + +# e.g. to log more verbose messages about the 'net' component, uncomment +# net = Debug + +[file] + +sinkType = Async +level = Info +directory = logs +filePattern = logs/catapult_recovery%4N.log +rotationSize = 25MB +maxTotalSize = 1000MB +minFreeSpace = 100MB + +[file.component.levels] diff --git a/resources/config-logging-server.properties b/resources/config-logging-server.properties new file mode 100644 index 0000000..8550376 --- /dev/null +++ b/resources/config-logging-server.properties @@ -0,0 +1,22 @@ +[console] + +sinkType = Async +level = Info +colorMode = Ansi + +[console.component.levels] + +# e.g. to log more verbose messages about the 'net' component, uncomment +# net = Debug + +[file] + +sinkType = Async +level = Info +directory = logs +filePattern = logs/catapult_server%4N.log +rotationSize = 25MB +maxTotalSize = 1000MB +minFreeSpace = 100MB + +[file.component.levels] diff --git a/resources/config-messaging.properties b/resources/config-messaging.properties new file mode 100644 index 0000000..e354742 --- /dev/null +++ b/resources/config-messaging.properties @@ -0,0 +1,5 @@ +[messaging] + +subscriberPort = 7902 + +listenInterface = 0.0.0.0 diff --git a/resources/config-network.properties b/resources/config-network.properties new file mode 100644 index 0000000..b9bf9c0 --- /dev/null +++ b/resources/config-network.properties @@ -0,0 +1,162 @@ +[network] + +identifier = mainnet +nemesisSignerPublicKey = BE0B4CF546B7B4F4BBFCFF9F574FDA527C07A53D3FC76F8BB7DB746F8E8E0A9F +nodeEqualityStrategy = host +generationHashSeed = 57F7DA205008026C776CB6AED843393F04CD458E0AA2D9F1D5F31A402072B2D6 +epochAdjustment = 1615853185s + +[chain] + +enableVerifiableState = true +enableVerifiableReceipts = true + +currencyMosaicId = 0x6BED'913F'A202'23F8 +harvestingMosaicId = 0x6BED'913F'A202'23F8 + +blockGenerationTargetTime = 30s +blockTimeSmoothingFactor = 3000 + +importanceGrouping = 720 +importanceActivityPercentage = 5 +maxRollbackBlocks = 0 +maxDifficultyBlocks = 60 +defaultDynamicFeeMultiplier = 100 + +maxTransactionLifetime = 6h +maxBlockFutureTime = 300ms + +initialCurrencyAtomicUnits = 7'842'928'625'000'000 +maxMosaicAtomicUnits = 8'999'999'999'000'000 + +totalChainImportance = 7'842'928'625'000'000 +minHarvesterBalance = 10'000'000'000 +maxHarvesterBalance = 50'000'000'000'000 +minVoterBalance = 3'000'000'000'000 + +# assuming finalization ~20 minutes +votingSetGrouping = 1440 +maxVotingKeysPerAccount = 3 +minVotingKeyLifetime = 112 +maxVotingKeyLifetime = 360 + +harvestBeneficiaryPercentage = 25 +harvestNetworkPercentage = 5 +harvestNetworkFeeSinkAddressV1 = NBUTOBVT5JQDCV6UEPCPFHWWOAOPOCLA5AY5FLI +harvestNetworkFeeSinkAddress = NAVORTEX3IPBAUWQBBI3I3BDIOS4AVHPZLCFC7Y + +maxTransactionsPerBlock = 6'000 + +[plugin:catapult.plugins.accountlink] + +dummy = to trigger plugin load + +[plugin:catapult.plugins.aggregate] + +maxTransactionsPerAggregate = 100 +maxCosignaturesPerAggregate = 25 + +# multisig plugin is expected to do more advanced cosignature checks +enableStrictCosignatureCheck = false +enableBondedAggregateSupport = true + +maxBondedTransactionLifetime = 48h + +[plugin:catapult.plugins.lockhash] + +lockedFundsPerAggregate = 10'000'000 +maxHashLockDuration = 2d + +[plugin:catapult.plugins.locksecret] + +maxSecretLockDuration = 365d +minProofSize = 0 +maxProofSize = 1024 + +[plugin:catapult.plugins.metadata] + +maxValueSize = 1024 + +[plugin:catapult.plugins.mosaic] + +maxMosaicsPerAccount = 1'000 +maxMosaicDuration = 3650d +maxMosaicDivisibility = 6 + +mosaicRentalFeeSinkAddressV1 = NC733XE7DF46Q7QYLIIZBBSCJN2BEEP5FQ6PAYA +mosaicRentalFeeSinkAddress = NCVORTEX4XD5IQASZQEHDWUXT33XBOTBMKFDCLI +mosaicRentalFee = 500000 + +[plugin:catapult.plugins.multisig] + +maxMultisigDepth = 3 +maxCosignatoriesPerAccount = 25 +maxCosignedAccountsPerAccount = 25 + +[plugin:catapult.plugins.namespace] + +maxNameSize = 64 +maxChildNamespaces = 100 +maxNamespaceDepth = 3 + +# *approximate* days based on blockGenerationTargetTime +minNamespaceDuration = 30d +maxNamespaceDuration = 1825d +namespaceGracePeriodDuration = 30d +reservedRootNamespaceNames = symbol, symbl, xym, xem, nem, user, account, org, com, biz, net, edu, mil, gov, info + +namespaceRentalFeeSinkAddressV1 = NBDTBUD6R32ZYJWDEWLJM4YMOX3OOILHGDUMTSA +namespaceRentalFeeSinkAddress = NCVORTEX4XD5IQASZQEHDWUXT33XBOTBMKFDCLI +rootNamespaceRentalFeePerBlock = 2 +childNamespaceRentalFee = 100000 + +[plugin:catapult.plugins.restrictionaccount] + +maxAccountRestrictionValues = 100 + +[plugin:catapult.plugins.restrictionmosaic] + +maxMosaicRestrictionValues = 20 + +[plugin:catapult.plugins.transfer] + +maxMessageSize = 1024 + +[fork_heights] + +totalVotingBalanceCalculationFix = 528'000 +treasuryReissuance = 689'761 +strictAggregateTransactionHash = 1'690'500 + +[treasury_reissuance_transaction_signatures] + +0BBEADD37539444D75C09A245102D2B883267925398504623835DCD625290DEE4FA2371341050C49C001DEDD1C9FE241EA4A7DB335B2069FD4DAFF77AF734C03 = true +89447704270E8B2F8EED19526587DB58870D90A02ACEF8AE2A54311DEB95C227201CD39662A0229D5746FFB84074EA6C7DD9620A2CE5AA69065C508DC0335201 = true +D19BCD440545CF785D88F903141DE794F2D57012509BC224B25BFCA220267D1ADD42182702F50C1A4E95D0F21604E4F9EEEEF329932FCD0C76B43992B0D90B0D = true +C478DB6053C639AFC96F5D965159DC95449E5EE69A62E5FA28DF42D85C031B3A131B3AC403D9BFF27E1E64FD8012D05C720F0D2A8654D9F4BC48C8DD2DCEBC03 = true +C0BAE301EC15B514C5685A661BC3E23A6596CE9DC412A83F67A8C8611A4415B1B0447E8C09D2816CAE0D750C4AB1ED8FE9C85C05D448C2114147A2C935030708 = true +A317F4EB085C8D3D80435669EF54C6C9C9AD9B57165B14CF051F43879D0112E3A79591DD6D469BFAA850891FA2CB601BA58CD1BAEBFF5D84C49179AC7FE14706 = true +FDB98C472D0B98FDD766DA177366DEB2DB0E79721BD73DA96A84622A98932DA75BAA327BA9E23D448C6F25344654A6F17F7734C14D1530B327F911A97B4DE30A = true + +[corrupt_aggregate_transaction_hashes] + +97CA49FCE55644FF28248C6EA4DCB6E87E53909811DEE2513F0218DAA394679F = 657BE411624B617F51CD8D151735F50FE50A91A5B7D0658192EF3EC4DD0C91C3 +B2813813F709C3011468E23E61AE102BCB55A28A87D0CF74968B8BD2413615AA = 3FEF96C5496E60BC1D33815139BDCD4FA707CE1C2A9A25FF4F7D3B1BE698116C +30FA71E6D1E34DF1E430A07E1B0817BED9A4ED6B0245B7471B0557380A700E1B = AE377EAB7F1970DEC21FF305C39EBDD3ECE413B911EF3E4E11F7DDDC9C9C9748 +E14FB95DA63CDA9899474D7EFD0DCB6A6C9E8931DF12ECA01F22DF2B59B6624C = 342E7C1E6318F7DCE5CE5A09B8FA1820453C4437AEF1B872BD06531E3ADB41C0 +55EB9659C81600F1760C4C0A4F8A7A5C90A39FCEE36E3165143B8E72BBC709E8 = 8980CF4407A48410C4E910FE766C135F8C3C84EA9917BFDB7A71434C2CDC625A +D24D000FABBD1AC4BC21006A5CAE76AE9C32792A4920F66D6A6C6F76B438BDF1 = 5FDEF85E8B3669FF155B5F3DA98288C6ED8A293CC699338ADB743C0F5E8614ED +26FF5E7174DEEF3147DB25C37C7AE9905157ACBA2D233D40D1F77A65B60D59BC = 3A2F78C2E7B10FF84EB33BF1DD0FD61951F8E3EA3303614D1B20060CD88F6E14 +2DF1D19B5E68102665D11B3CF3069AB5DFED2E60A7690C8788172E0E5E30B72D = 3B64321593D06FF37B191F52FE31E107A8FDB0116AB5374157F8F415B8C73BE4 +8BAA5EC2DDF55EE583ABB7EA4A4FE6EB8A4C16C41ED30CB1E68F6D1F40C3FC5A = 59850BF728A08555D10DAD5745EE2A349FECC0B16810F5D32CF3DFC376DEFFE1 +8CE147B1B64E200FA48B17FE5B6F4FA2FFEC83FF03A1EC0D4725AB8122AF5B05 = 1F3D4045C3482A9EED536F61CAA58284323037B72A9A774A0C75932F85999B0F +BC312549DB027287836AD52B6EA30171AA1958B20BEB3D659F843D699DE45FD3 = 4AC4B12DE7C5B0D02BFFEA3ED98F4247FAFF701C4CE0A2CFD75E7F633DB0ED60 +B35D60C826470EB38B6963DCEF5A9FE406EDE405676EDB027956999D7618998D = D8915C7EFFDB62B3CB5872597522C0920AF5D55EC44A4548DF8679C08A0C0541 +91C27BE7E5AC8EBCE6A5D576DE250054A3CDC2B674BAD5FA29B554C0A50E2973 = 05718908AFBA83B420AE19BE0A11EE36119AC960353BA6C3F180078C8C4B428D +D91689D6A3C9FE7AABB45C3FC44373DA23EF363D71360CB4B7ECD74F0BDE893B = D8915C7EFFDB62B3CB5872597522C0920AF5D55EC44A4548DF8679C08A0C0541 +8090FFF457D88D98ACFDA7872DAAD1A901B4CB081387B1A45AFDA8EEF686EB54 = 05718908AFBA83B420AE19BE0A11EE36119AC960353BA6C3F180078C8C4B428D +33937869216924161235BA8E10DC075592022C22F6593042A1064ADD24B64FE8 = 9C00D552960DEDC38A009B541681B2C7A68902D94A9D6C089604D2E7EFCCD88E +BDF7755E44E1405C3353AB97651DD82785C6A3A8EAA5EA1CEA0E30DADB0D12F8 = B6D02DA3F69C20F69A9209B13192174091544512CD7D2CE53C366909B354B7B1 +852A41F9452A34054DE1C21E46F925EA7B50D26AF97FBA8D745F01CC6DD5097F = 8626BB52F6457D95B01A5C178E6A6977F8BD418CD9A7D5B0A814210E0A4FBBA3 +C1E7404CDAE41ACE07E8649FA2D5E3E2FF5DA502E43E5D1C6073192823F90BE6 = A7321E82547506079C0692DC0DFF8C9CB0D56DD2C9E3208F479DB8970B985E6C +C0FAAD2439E9D8017F9A2E5F67A46850195209402C1EE55CF99880426D0F454F = 3B74892D50665E4A989C89EDCE88905937B81BF260A679653E86886407812F83 diff --git a/resources/config-node.properties b/resources/config-node.properties new file mode 100644 index 0000000..7597f3f --- /dev/null +++ b/resources/config-node.properties @@ -0,0 +1,102 @@ +[node] + +port = 7900 +maxIncomingConnectionsPerIdentity = 6 + +enableAddressReuse = false +enableSingleThreadPool = false +enableCacheDatabaseStorage = true +enableAutoSyncCleanup = true + +fileDatabaseBatchSize = 100 + +enableTransactionSpamThrottling = true +transactionSpamThrottlingMaxBoostFee = 10'000'000 + +maxHashesPerSyncAttempt = 370 +maxBlocksPerSyncAttempt = 360 +maxChainBytesPerSyncAttempt = 100MB + +shortLivedCacheTransactionDuration = 10m +shortLivedCacheBlockDuration = 100m +shortLivedCachePruneInterval = 90s +shortLivedCacheMaxSize = 10'000'000 + +minFeeMultiplier = 100 +maxTimeBehindPullTransactionsStart = 24h +transactionSelectionStrategy = oldest +unconfirmedTransactionsCacheMaxResponseSize = 5MB +unconfirmedTransactionsCacheMaxSize = 20MB + +connectTimeout = 15s +syncTimeout = 5m + +socketWorkingBufferSize = 16KB +socketWorkingBufferSensitivity = 1 +maxPacketDataSize = 150MB + +blockDisruptorSlotCount = 4096 +blockElementTraceInterval = 1 +blockDisruptorMaxMemorySize = 300MB + +transactionDisruptorSlotCount = 8192 +transactionElementTraceInterval = 10 +transactionDisruptorMaxMemorySize = 20MB + +enableDispatcherAbortWhenFull = false +enableDispatcherInputAuditing = false + +maxTrackedNodes = 5'000 + +minPartnerNodeVersion = 1.0.2.0 +maxPartnerNodeVersion = 1.0.255.255 + +# all hosts are trusted when list is empty +trustedHosts = 127.0.0.1 +localNetworks = 127.0.0.1 +listenInterface = 0.0.0.0 + +[cache_database] +enableStatistics = false +maxOpenFiles = 0 +maxBackgroundThreads = 0 +maxSubcompactionThreads = 0 +blockCacheSize = 0MB +memtableMemoryBudget = 0MB +maxWriteBatchSize = 5MB + +[localnode] + +host = myServerHostnameOrPublicIp +friendlyName = myServerFriendlyName +version = +roles = Peer + +[outgoing_connections] + +maxConnections = 10 +maxConnectionAge = 200 +maxConnectionBanAge = 20 +numConsecutiveFailuresBeforeBanning = 3 + +[incoming_connections] + +maxConnections = 512 +maxConnectionAge = 200 +maxConnectionBanAge = 20 +numConsecutiveFailuresBeforeBanning = 3 +backlogSize = 512 + +[banning] + +defaultBanDuration = 12h +maxBanDuration = 12h +keepAliveDuration = 48h +maxBannedNodes = 5'000 + +numReadRateMonitoringBuckets = 4 +readRateMonitoringBucketDuration = 15s +maxReadRateMonitoringTotalSize = 100MB + +minTransactionFailuresCountForBan = 8 +minTransactionFailuresPercentForBan = 10 diff --git a/resources/config-pt.properties b/resources/config-pt.properties new file mode 100644 index 0000000..acd7471 --- /dev/null +++ b/resources/config-pt.properties @@ -0,0 +1,4 @@ +[partialtransactions] + +cacheMaxResponseSize = 5MB +cacheMaxSize = 20MB diff --git a/resources/config-task.properties b/resources/config-task.properties new file mode 100644 index 0000000..ee0f99c --- /dev/null +++ b/resources/config-task.properties @@ -0,0 +1,104 @@ +### diagnostics ### + +[logging task] +startDelay = 1m +repeatDelay = 10m + +### finalization ### + +[connect peers task for service Finalization] +startDelay = 2s +repeatDelay = 1m + +[finalization task] +startDelay = 2m +repeatDelay = 15s + +[pull finalization messages task] +startDelay = 3s +repeatDelay = 1s + +[pull finalization proof task] +startDelay = 10s +repeatDelay = 50s + +### harvesting ### + +[harvesting task] +startDelay = 30s +repeatDelay = 1s + +### networkheight ### + +[network chain height detection] +startDelay = 1s +repeatDelay = 15s + +### nodediscovery ### + +[node discovery peers task] +startDelay = 1m +minDelay = 1m +maxDelay = 10m +numPhaseOneRounds = 10 +numTransitionRounds = 20 + +[node discovery ping task] +startDelay = 2m +repeatDelay = 5m + +### packetserver ### + +[age peers task for service Readers] +startDelay = 1m +repeatDelay = 1m + +### partialtransaction ### + +[batch partial transaction task] +startDelay = 500ms +repeatDelay = 500ms + +[connect peers task for service Pt] +startDelay = 3s +repeatDelay = 1m + +[pull partial transactions task] +startDelay = 10s +repeatDelay = 3s + +### sync ### + +[batch transaction task] +startDelay = 500ms +repeatDelay = 500ms + +[connect peers task for service Sync] +startDelay = 1s +repeatDelay = 1m + +[pull unconfirmed transactions task] +startDelay = 4s +repeatDelay = 3s + +[synchronizer task] +startDelay = 3s +repeatDelay = 3s + +### timesync ### + +[time synchronization task] +startDelay = 1m +minDelay = 3m +maxDelay = 180m +numPhaseOneRounds = 5 +numTransitionRounds = 10 + +### local (built-in) ### + +[static node refresh task] +startDelay = 5ms +minDelay = 15s +maxDelay = 24h +numPhaseOneRounds = 20 +numTransitionRounds = 20 diff --git a/resources/config-timesync.properties b/resources/config-timesync.properties new file mode 100644 index 0000000..72a7413 --- /dev/null +++ b/resources/config-timesync.properties @@ -0,0 +1,4 @@ +[timesynchronization] + +maxNodes = 20 +minImportance = 10'000'000'000 diff --git a/resources/config-user.properties b/resources/config-user.properties new file mode 100644 index 0000000..ce8d896 --- /dev/null +++ b/resources/config-user.properties @@ -0,0 +1,11 @@ +[account] + +enableDelegatedHarvestersAutoDetection = true + +[storage] + +seedDirectory = /seed +certificateDirectory = /certificates +dataDirectory = /data +pluginsDirectory = /usr/catapult/lib +votingKeysDirectory = /votingkeys diff --git a/rest/rest.json b/rest/rest.json new file mode 100644 index 0000000..f76b3f4 --- /dev/null +++ b/rest/rest.json @@ -0,0 +1,104 @@ +{ + "network": { + "name": "mainnet", + "description": "Symbol mainnet network" + }, + "port": 3000, + "protocol": "HTTP", + "sslKeyPath": "", + "sslCertificatePath": "", + "crossDomain": { + "allowedHosts": ["*"], + "allowedMethods": ["GET", "POST", "PUT", "OPTIONS"] + }, + "uncirculatingAccountPublicKeys": [ + "A4739036FD7EFED2750A51EE9D1D3113BA3F9849E0889213CED7F221B2AA1A20", + "2BF1E1F3072E3BE0CD851E4741E101E33DB19C163895F69AA890E7CF177C878C", + "E85D10BF47FFBCE2230F70CB43ED2DDE04FCF342524B383972F86EA1FF773C79", + "FE454406EFC15EBBCF4C27491519B7EBE696AD2D734A53E02019FC5D02D1419C" + ], + "extensions": [ + "accountLink", + "aggregate", + "lockHash", + "lockSecret", + "mosaic", + "metadata", + "multisig", + "namespace", + "receipts", + "restrictions", + "transfer" + ], + "db": { + "url": "mongodb://db:27017/", + "name": "catapult", + "pageSizeMin": 10, + "pageSizeMax": 100, + "pageSizeDefault": 20, + "maxConnectionAttempts": 15, + "baseRetryDelay": 750, + "connectionPoolSize": 10, + "connectionTimeout": 500 + }, + + "apiNode": { + "host": "client", + "port": 7900, + "timeout": 1000, + "tlsClientCertificatePath": "/certificates/node.crt.pem", + "tlsClientKeyPath": "/certificates/node.key.pem", + "tlsCaCertificatePath": "/certificates/ca.crt.pem", + + "inflationPropertyFilePath": "/userconfig/resources/config-inflation.properties", + "networkPropertyFilePath": "/userconfig/resources/config-network.properties", + "nodePropertyFilePath": "/userconfig/resources/config-node.properties" + }, + + "websocket": { + "mq": { + "host": "broker", + "port": 7902, + "monitorInterval": 500, + "connectTimeout": 10000, + "monitorLoggingThrottle": 60000, + "maxSubscriptions": 500 + }, + "allowOptionalAddress": true + }, + + "throttling": { + "burst": 80, + "rate": 60 + }, + "logging": { + "console": { + "formats": ["colorize", "simple"], + + "level": "verbose", + "handleExceptions": true + }, + "file": { + "formats": ["prettyPrint"], + + "level": "verbose", + "handleExceptions": true, + + "filename": "/logs/rest/catapult-rest.log", + "maxsize": 20971520, + "maxFiles": 100 + } + }, + + "numBlocksTransactionFeeStats": 300, + + "deployment": { + "deploymentTool": "shoestring", + "deploymentToolVersion": "0.1.0", + "lastUpdatedDate": "n/a" + }, + + "nodeMetadata": { + "_info": "replace the body of this object with custom fields and objects to personalize your node" + } +} diff --git a/seed/00000/00001.dat b/seed/00000/00001.dat new file mode 100644 index 0000000000000000000000000000000000000000..5301f739ec0c8fb9cbd5a53c8a587e2b3bccf115 GIT binary patch literal 6396296 zcmbr{1yt4B)+lg5K)Sn2T0%Oc8w8}gySt>jyF%X>Z^kN`?eNZ74AAeI%7V_z3Z7LQbcP%SFq>bEdM)f}H#7 z{P(=Q)?p2c4%U&8Fqwb72B?XkH|Sr#0sP=|LpoOj0Xb8DB(x6TV&f!1XL~hKXd1SG zXJy5Y%d&7aZHrgvowdz9VMou=NGjByw87y%I!IE30DTk>;pyxEeFNE!d_q>oCLqXWu7j{=X?Nzh4*$=!v0(+QlG{_O6zC))oo>^M$sj zD_6c&`33Y?_l2aR`hw;G3HHL?K0b_9Q$t$B*$=0_W=_otar*79P}$C7Zu;LiJ#koc zT6IlK(Gm#{R6&4s{q6Z#dBNYDBDn+l%Ei_4mnrdoT!NCnbbhObZ}vEYf%wl{(t>}#{@>rnzvJ|`@9)q5 z?XvDfNM;LNEWXarIHnsMwB(!tMeH!NiPYmy)|3D6apTh5BuudiXPc1{uRG+P@c80= zFd8muxkkEv{tr!rcQF5%>%(6|;QxO7{rZ2q_z0>AaF%gF{{DQ`|9qXoH&%Q(#6;%s zAB2uHAa^J9cN6R-U5;3hMSF=WbJJo;@Ga)!&ntFoww29B`}$oI1j)#de40xKG8R+* zN&%q%nM;BHe_rl?U*Du)Lq6CH|8&`?uG6M{bLoLzg~8OM%;nc?_J6=sr|%5D85~S`1ABdf2(%YvakGoKcNJHnysr>RUJtH-^z9WL2mVX1c#xw;R{uZV zmOe&pLWM*;r#z^;(I>cyspeKG%{G=@%TEfT3rVF1J#!|#4o*!t)Y0h51{`W z-=pEd#k1419jTygtO;6%c}u#wj_#oK!*?Y?nEZ@jdz4lBUbc8?cRn@SgpHw>&fHYI z=`#amAJ~Fx3Qh>h|HE;PtJ(Du{HU#WV6?;$m~ zPL>t2F2~ddO)Txd$lvdWE}0-|J+I&reYy1PZj6HABVNBAdFjPHyPW=L@Q+tn<$3EI zPoMWqu<=C>3W+t?NC9aF(f6Avdht6*+mn1P0>dFC`>w#Fqj{=#I622RGlpsy_nBhI zRx9jZ%%P!x&R-;oDonpnTf-KMhZ3PCD+3wn%LN6D)tBBer)xGZZIJ)X2mCR%f=YB0 znT5e1I~yxynG{F0Pv#sqmi!eTbR^4fpp>OnYub(pRc=$mDBVfV-+m%g6*Po}NM{E( zZHzO%fhkNs8W{5?O!>6MZ=9r(SxM+piCyRQ~a%BP`4Gv64?Q8GqIq z5%gb5Gy!MS@(+8*LPznHaUpRerKd#pEN%diCb#HJ+B=f4@sYuHK5~^)17lRxjF}K2f8;bfq?4`FI0>7(F=^t;MHmNI#6bpI!`j1&o z(Vwe9$gf3<%1R$k$c2(7i%d}3)5~Xb{ZTf*qcPL(>(p)%v&|Nchsn&N6z}qi?Q`ovGd^{?@@Tg(EAo_lKQ|%HlYpA z7!z`yd^HZ}vz^?^8ppF&d{ztn8+)*a1CWn>#AA1?!ZbfeTpkJ-R-}(EXAf>ha@!pH)^*Y>R z+zgB!nqsYG>!cBmxZH*tujcna27(OmQB-HcmF?*&Vn~CCFGm-VWbzM6IT95%4*PIG z=WpneCgVkBOlU9u2-Xgis!&BK%oSqj>`O0UPc#x1fEOP%JWdKO_3TsjS5uzWcY3o# zk!h??b1d1?d3)!Y!VM=S`=@pV!ampjoJ=(9cFo$c^^p#odDrM8@`V(OzQB8M8c&kFbqTavlJ&%engaFuO0 zY}(Sz#q9#gO#O6<=4uq1Eib)U14We(@BZRO9WG^rw6Hv5nb&_GWMD*w3Ihk)`*`eO3M0SI_--IA ztLy}=!Dz>63y!4tPhNdtI#WK?OZ?rvhvOW-0}vLa+qQ_PM?CH6_pZ&|@5A@`v^!Zc zdX>#Mqvb3K8WLH}6_5g)p-w_<>ibk99D$!7Fm@T3cPzGce2{F@j+%Q)Y56LeypK-) zH6HA;JvN=Urws7x`>A(;^SB}{4I zL;qnv_HX9j_1gN@hNA*!ZNKQp%f9)gb{svim5;H1@}i6#s{AnY2d@v|h74SzDuMd4 ztEm`El!yk#7iJ(Gfv?ZDU~f6SG2UxA9O!n;;pjst zLVPE3K;!(AS5*V7CAV5fX&n;L+b6CJ?2O!`*Y*94_`%7OF-~l?f6_YP6TDxcW-$%B z9FKSMn|elAM4Li+xNGbJM2G8E6)MU6k+D(ox4|D#K0$jZdw2JOOBU6OkN?lhUgUmS`akbK<7yPO$KUkTGm&OHa3V#v@J|7^Q zImB>Y-+I;jkRS#{!R3V)DQYP8#(-HfRQT4DZNwQK+w3!8yp4S>*VfGb}ecw>&!cvGh#qIw< zUR`Sw^W_u<>UI_Q_%7%_^>e2PS4n(l`#L*Q2m!iqE1+2NTfP3Wen9I?k7Wsa3s*cTPF9ZxPoi0Mf&hh`A`}^c`pdYaWbhGzQURUld9@rgu z36*->I6fjp7uI`m?{>JfJY)^3k|<*3hQ}E%*j9t5$n5URj7BjK`A=V5^uv@(c%t10 z>bekrz5;rFm{IH0o7G-uQLKG{#NU;A&{%gi6CL{F`u4-<+_o2^e%Owy9v+*!6bw2^ zSJr>w226=kx9+Sa`}}B-q$M40EAOgV1%x6>RUcAwXj#JN0Cx~%V`?Wt82J6ZEYRil zC+TK&&Fj&x8RaDYKiH&YobGe}6kqI94^>7YL^ZFr6T)&SM}rd_^Ooc1{Cey(P1iR| zWf|R*I#ziS+Zt3gNC7JtCjuWHXS;p=L+Ejk9+C^kgMFRE-6Znw!{DxII>IC&$* z>cLj_>;?-=fR$d&u=9>qs{xB=pA2%QvuWujTSQklln>?m*`oI&*SdEFj89H$h0Y4y_R2N4EV&%(f_ zOIEUumDwWj>zj2JV{Ui+>GM!5GP>#+Q^8Dpv19V8?VsY?CwFqn+d{p~{KOxj*6^xS zy`Y;mx;@i=%*_FF`tpl^bH@s8Ut3%~{Tb|hheK8xM{2*L%3U8n!YA^=dxa<9=ikt! z=+${1GeY)m)ckhuomf?i=4LEdi$8h!20j#v28W0{FK;hWy&vVLtrwz4_Olw06t4aN zYdRDrN68Z#?G+C#tMbL?6Whn~8qiYm$}3GMQLrQ-pItxT*W(o5RF|}4Wt8!bkX3ot z2x@HJl+j&qqCa`R%fa_E_x#u<5g0w$^tcT*^Iw*G^5VK0U|ejjrX5KSiCy}(Mui#p_+}3(bcZ+(=oGxu9e85|LCkjMVM>(y?oVDP z)z8bYMjkR6;JPDrrt`6K@V)u>t!@nSR@Qj=*Pll)5I57_uHHMi5sZE2uC&CIz66Is zawPBU7|hD6jB^Bj|F>?%X=!C`)qY`@W$)FrsR)lX*1-^Q*Pp!X`Ovh}KVhyM5qWm_ z0>-+^eLLqnTL#ya7$Gz<$JI(Bpr;!$wxgqLR715Wk*>XwGIxa9qIeXQcw~ zZ8Z9HXb%l1PixnidrtV{jSr%vTXV4HpS(3Vjn|fd`^?j?cUG2HV3|+Z?5zGs((tZ-CN=r zqAzzJZDCPE!eH>*di-)e>nE6{t6I+ynZNdeSW{MwQ?t=`_Z*bZTal{Yz zHMYc+R#F)_bBJ*oY0Lr{7V>pcrKH`%%}+{m;P-bHsN-Vk#*dhsG`@}-A3>&mUuGYI z;7a{dd|7l0b;9zqnZWFm&Ju*0Ajn5NK%MSC4DOdMl) zzoc~^+6lki(OJD6pLcFtWXEjw(_405AM&erfd?c4=PMORN{7N`=G(U3NTMm=`wQ$~ zt!%v?la(;@S@o2;szYI4*9y(_nqI~?Yo)k+_}4Dg|DInYNid^)blTzDDlA0ggI_3^ zrKdKytFQc)P;pm7q|hh>^~FtqyY{@bl9agQvz|E@`&T3|ed0r>Dpf9OHA>*~p>2or zu|$`?a#~McylBsb8onDQl`4SYrPst*JS-CHA8#9jULdE{t5OVjb0tj|(Z}!6y)|m# zt-8b|pdWkiSS^Z`71MQo*f1rE{N&=VFcu^~vN?kL>d*83d%9>JTn6y#Tc&u+NWLL9 zvw;ojLcLT~U*mA@(TCjdmtGJ!5@kF9Z+E%#d&6!Lh!x%?FL*TZYvg`(RYpg3($C5b zWsVl68k)jaY^jnWRaNagH~4Q8kyZvYH$^k+j+Td?p3x36fUkd_DM2K2D56tIB+aa2 z_oQ%=Zn18Ai&B2`cC$~hcP6@RqesWgilN%c(YHuvm#)6Lre!M-tqCBvggz>cZ^_^y0eNTSl z@Tfw&2lmptuV_|?0pLAKFnxDl2>mq_uAr|asnZ7)BIz?ojwh_X981k(q_b)`O#}w= zGMlv-6Pe?ZX+g9d6Y^L3s*j|t(iJ}qE5U)!-$lWE*boZ|WY7L1Jp?^)^1WC4+jZPr zFTG4#xn$4)UP3Pq=l&7YsMe$=b!HFtg!Ps+7P}aZ!tX;uDz(gZi=)OBelt6Z2=*D( z#hrRF)S=HoL;H3n83##wlrY*Yz^}&-ipaRW({QtH^9-_1vG>DD2K%VRA?Gi>j^<2g zfZnre)LJN*1((zN=zb@AP&}O)tq93=lEnDjG z#RpRQ@$Uq-ev<1QAdtcbK02}!k!M~7ZZ^NYAEy%^6|g|N%8Hh11xYs|_;w}aBUp7- zgLM!JeE$Z{oI|T-p-ioyrRLzGLe=qZKvH6L|MN?)mfsN4H2OdB#nZyaYGy6Peif!z z@ljddi1yMG1I_l4(o|D8%%r@u#MbL{Os4VRww8Re>MEkEG`OC16&^|>Z-Fd!6iX`; z`2C%LAR^-A5bqP4b*gC(t0re?jf9{No*6H_dBa6WDyaW>Pejce+c;iVg?rMoL}f3F zf1@?pZi%kOgPn5b;z!AwH1seVIJj}wzhCp345`|CNb1@+aUx{xS4T$_X#BViyqBPg zIZh7Bd*HFZX<3 zV%__GgeER(dw79Xbgh?>)p8KTI>Iu29K}D)#-wqgGu+KaePam*k=hP?fBcvCaa=wC zyYr(1Lb*fVS`Ke1Nyo3JbN}`Hn1y@ibpe1^@OaN+o{*bZgAOCWt~d63eyVZEdH#aW zH`EO&szWtTdZPz@ksBk|n_dE7@-z4P&U$6h=eRprusw!a2 zgR%LB^OMuUbdY|*OD`oc9a9c~S5elrK1qwxTHNaTIBR`8UGn{>I>+Vro!?JWS}?^k z(lwmkAG&V}f|_@V=%MrN5?=dP2XM;xpx2ehNbEL70YBdU^5W~85*r_4+fOu7bRuOD z<{S&%z4TIiigL{a@WM^SA}3ezcxk^c&vcV-)1c3f+6KA(`emIm*s8LTKYk2%ILM&cb?5c5&<9cXU z_Ps*yjc`C%-Y*B|a>Jqs^Z>tJn2FRV;5c59qbJu;3Tg_D9+6cdX2Je;-mQ>tGF^r6 z&v;`vXOv;y_8n-VJfd`(b%#i~BTLeI$6;54e6%96(b*13c^tP6MLKejjhhT^h{l(&332f7|YO+nPt zh^$aB0Uozi>j`}RN>Y5JAf76oEn0uA)8$RfdMb~Tf-!yd(yN%zgboeh4KeGa6&3lO z+fQD0B%?r$L6kg?iPXgm7J8schlTI#!i0`U&P9YaOo0W40%1Y1t5}Yp#Ky_RKq7>9 z6fg(}d_G783S~Y)@kMCPg2dwAq>HM4t&Jsqzw^@Du6&Yn4Es-fV-s1;3=(N-=5MA$sj5?YmS>U8PEYI>OML|m-rmYJD=bi{!!J;RDpMQ7O z8EwlgzYfEFpm>h@-gtb;wCN3LmycUKWg50a1~Mqm?ALH11LGqf)!qN^>@)*~irBH))*skEMyzdBbJE@0W;~B=l?c zwcD3SnR(ot3^8zity$Z7ID6^MdfP%V3H6WH+;CGOtAmN*iFWS|?brn8 z!VtXp1&VR3_4pKuPK%Ryp2fUamX)AUo##ztm0+m2Eo_N^NUs?1=PkHZHND?ya`@pe z94!Wotw=EG9AplHO>6dTVDv z(5)-eQiPq~`k}64w&4%}uf7TR{qvV67`gyv8PcM!w9D|zDPN^Dk!46=*)yfBnA)p} z!O7tCxDC)85*P(gHD`Lsb*UfeLn&1ZnZydXfuDa-(qpPv$4v~P*-*r1a!TEMpaaxRVKc>p&a&L!-l=m4yFXNl^ zaE)mW;MFgl)RA?hCW>&ONm5S#iSk`~EYh;F!BP6v3|@0Ah*05&>6^~hMuS<7eTkr! zI1o>++v9O|d^;8F6q4Zxdf?|X6wuFLvJk~J@pPcUmMyt+ay>6XXEA zMp9W8l2}PwOE3|Vb!aH8N;=qLbFXA~)K#eB2xIOH2*>T&UHmnp(+oCu`))RW&g;*) zafZY>p6!pE_Gg#^|2!h3zqN~65rN%oR_^pp*NHhlJr^pKn4Lh8iHFoLZl0 zOREgw9{2)3KX8KzSQ-v@EJxK44B8z=lfV&jc(D~zzl`ryKp!z1fY*Uk%)8ikXj0oj z|LTxLT#|~T;f-^= zkHC+&Pfj<)bmVl`Q$;oIjBt(0j%_4OO01JFy+RFQex$$dv;95Zd=F}Ee+HtobsiBn zd!H^>*s1r+s^2Ljv#nj1Qwn{ROLz9f{`JUC3GWhW`P)r5#xKyjtP*P_4>P>VB|9>T zzI}kSYNwY5dYlNRiRv0^psgwK*41b2@Zb3Vg?;sM4s+lfZyd zWB`(adALZ0@%^I!SN*ub^FbCy7{oz(r(wqQ1+p~qT9L1ma1-BmLpL z$U!;x_NABE#N0{*z&m9Yuk&q&ane%d!z&6m+cyy(1<~96ZhLbex45-GZmNE8#JdQ9 zc<-sJhc6(2J2QKtubSTl5yIC8uQs-%*9-i3!+KTIsrXKU5G!d2(VTcf_(v4BLf`Jt zORw3HY#JMYce;;>JmTqXHntsjI}!>vh;^^XoSxr?`r*zSiy*6HgjAOq6m%-KInbQF z%*kmvDE8&=;V}11tA#kAMC4=%z}Gv0+IPdtY;Vuu2*b3Y(r%XM1Tp%)uSC7{HpUKV z-~)K83U2f7-79Kl6g~>gJmJDhP6{+z&jeYc@*ahL#}uW}wHXr~)iPe}H*7tD_0H`j zxlzd+4>Qlc@QvW^CNluOUO(jXFgp(VrYlOTh0FY@_B4qy6CbH#;ib24bY%?=z#DmG zouLo+wumGhCSoltY%(aYO!sz^sL0_otekF@FDNE814`9_0MkXx+;ctZ_AJsrA)`CI zANcV`Yx6!p>OwBl%GAHs%8>;%;u|v*o}&LtZ_J}d@X4=h?tiZr4x9Ns z_3B*-J$H0Dfr#;0L*67pGrnz8@*?ZD={AwP$@Ce%(U>)oOGRr7+a)l)`k{PZ&l5x= zLe}>nqNnYEuOEnrxv3yzuA2MdlY|xV4ngGX?A!VTX=EGX!i#D3{GEsX^5LV@2QB;6hm8NyONOW<2B zf6b<&YdUyr5TFkTaxHe{EM3qTIWOZs#cnID--$66~a!bP_3%=*SAni);K-H&+;|BLk^65c+ip7M;hi)}T2_I;D7 zbw`luL&wYb>YSPlkO6pkhTksbHAvT3RmfB&kn9~@4E8sW30o_mi-oq~rh&d*zDMH6 zk?zmBaGGf%Zu?N#A*DRV0&%#BTk?p4(EVTBk3GQ6J?T%6VCsfpT=FLaSEx0-bFz^5 zwNv)5=K)t)Hj;<{-U3A)76eH1((TJhbFZ|F?qFW*Z?N>;*Vw!2d-lFK$>!BkV<2}V zd>wKzz9kh-e6KNKSvBWb?}(J2fnP6%A?sy>q3-<9Xj7OzJRYw$3GtF-08nXJ;q3`exy0m6{r_iXXwnO9b!Y0K6MN z3mCGyohky5tZ2>2-cH;Pj2LTa!S0NpOsFeg))pIi=x~Mg6nu;yv((v~YuLk5QxVDt zx`A}3IMZb*ECl}fKGMe<9lpzjRc%;<3aB|mLBTY-L5LHlmtGkzL}&Ne9@}q)<9>ckY*W({QE@ zTmawCt8=lLO8KB5+*Fa^LHukf7j?O3neE{Hlb7@fm9o{Nq-t?Aw?ZdrMWAvTo_}rh zHG;e3t34dHtnb$Z=GO6sczZhOdfZm6%VM2e4o;?lG6)5_cnc%D&%oC^!LCJ|EXnt7 z(=yb~)zi7;J~rA27Pbj5y$Da5t(gG%a0cGv2-#(TBDk`!^p2S0kbM`9!lxjk9xf7_ z2#65 zaK6jh%J|dk;`XJN;sA;x9Kf59cX7G16`|W4?Xfs%P{kudXH-s8AZjQNNn6}3-pJpy z?)&}p4f%?8E(XqUaNT=Qln5GhbwX<;tU$-cUJ7L?NX%h`CdVGyki)Y}! zJGa~`^U@n4w0;u`;Qj2J{*Bn_lB=nem4SHT{+R0YYU*$}Kh8|w&U-Mqk`>agj6il0 zuGbdLVyUO~ew-|47UEH4aYO5!3O{2!FYxn&&qRV2w6Yv5BMun)^qu57Wq3PvUHotN z89qHSgt-HFeF{Lnz9*tfntM>nK&+r|GV}pk?CCcQ)z4p%gXQb{cHz4C$?jT$`?2^C zesO2SO2|@us;y`TVE}?eVucb6_VqbRGEh!U|8HCan=$#F10vfz%+zrTy$nDk$A=^RJEj1GXxF*UV;o z-{DZxJspXPuhzkn2e03uX#XNbYA5c~el4O@1GbY$-8)~Dd~NI{YcL_Dam_+(=T#a+ zT9RDD9Qsgv;OAdz9i@*|p_>)W7U=0zV9dj|C@z+$biX~n9=#-CssP~CC#Q~|#Gtqi z=##q^+Y>XsCgJXc^&PvJwmCp5Z|v#27*tQj!JnntgxxutS;YxjJIJ(#OqJ|l68T}X z5n=*-e{qRyCdYBT2ugc~_15Hra>n6;Ca6-~*30o`T%a*60pOiISP1)B#Sl(NjAVTi zICIF!1hGhSRXR9fz>GY$-kjIS(W+4@6wuE`*-|BR8iZ-JxU?}$(@5G-7ueag*b97p zraDw;1zFs%5x_$@=jKrZf=1Im!;bLV^S@2rV`+i_UXZP{_KU;^)8k;(h#^1mp7>Vy zG9TMnJ!l-un)eRUU9TTte1yMt=bC(uxm~Qhg>GiB`LbCkq}>6>VTVa>1bjba549O& zX7er5mC2Sj@OmIScpd%Q_B7wi`0g8?s{wkc5Xxx$VsS>m_yW#Yx>>Wk43B@zKKmsG zsdK7@asPC!CO9T9>TBGjZz#idt8WyHRMYnS{#hMC^Oe-Vy)rcL-WW1F21dwLzYA9I zhCyiAybY8-{DLB8)RL42)eK`vv}}VK!g92I z_Tr=vEHJ%iU>Ld^Qih|IBbtl`pwS7kDD2}>KS`-WeRwyLfbWM48KmRqiRCH9e8BTy zLqd{^nT!_SkhZ<_`fZc7umgBarAQwUDTVkNCzx!gm8!Dy-RjpHJ>EVdmZ}OUvU})D zMLmW>EN_x@%!?iO9_DNt)TZrbaaG@d=0)eqRUQN1Z#L>ppg}>Kh%wXlExUzYu6Qqp z7CgQ7dg*a@2GRalpebB~g`8h$S21 z^`>P_^NmkJiC>M+ewpI1pkY2G=1G(x9Pr}}1naRZvZS>=Ayx!Yh@9Z#J9Gm0N3-AV zcQg33suKcu-&`so<;c?1XxC#U1jyVsMKDPOHZ2UnHdXQ+nsE)XVjp@${ang+py{8k zL@K!jU3;j;`FS&dRCRK=A}a<4{QS$6uv6Q-Uv^-6^0C*oKhnT`)-Nnn+4N<6{ZZF^ z@BzFVuQGeVK6ue;YK|fm}(5D>kr=gZV2RpWX9FWPpX;Z!1XYA zlV%3ax6%w95Ys~yq=*7vKWvFgaPGTEJt97u3zm$?@Dd3s1VmOTy!7fP3`gJrc$u*c zpYkajjArSCo~T=>)jOpz_L`CSut#wT)5R@%5x=Q3>Zmox@FCC}e%M4>`YybG%p=L9 zKjBz}WsacH1$_QiF=cY7Wnxb-Tax#6)l_15Qx+w1mj8BMxZM>Piwoer2<^cSpkY71 z@~Q2NK0E6H5zKm>+~}7gG}R|hVkd$``H@)hvo8*T${g#SvFO>*9$eg)`G-idcyeD; z#A$Wl=QH?ND!t;*AB1=36Py>mrkh*BRS1b87`}`zTFA&(Yyhu%O;sLciR=UOWj>_K znzjuSy+LX*pE8BPB~0-%B^CzFUCfk>%<;nBV(Q$qYT(#AIzPub1=bJz3XVi=D&)Y& z*Jdr5sKLkte;g-YLJxu*vA}|3Dn$La_2O^@s|FLmi%z%e@&LASj83@QKej8KyH^qt zpQ*B|MJb&>j8aL$Mwc*S{Hhv#tcE1(R5j83t+RDSu@<&5ik;y&KQUt;@ZSB6p)ra` za?7x@hMU2B)fpltpLvk8=a=zifZ~<|^ui66VJsYzk@->7@g22DbdW_MC8GAR`oo{$ zI*Qa^7@RM}R6Qk0I;{p43no|{+Wly=jb>1YZCzs(=brUw0e(L7ZJL|g5NWQZ7z?|8 ztB-bC)kT)5n7JE^^W>#)kUHt zWPy>h-_Bd~q`&W=19)rUL#PfTn6U&a9f%lKcpBnB>g2`=EM3# zf*(A97g`^4F17bzi9-)MTphn+`DY77?6*)EngE9rY#pT-ET!WxR~4yZapbIQb+rQR zy1~yS9p~T-%8)Ly4C57rz^`vxlgeDw;%T&HMnX(%ID`IWQ6FW83V*BDX9b?ezyQ49 zhCUfW5>qaBX+t|(wEO1eDwaBXq*kWRCsX%|?%V@okFP5Vw@QPkJq>2FxIu5-_GBRzcI7{deyqCe|%W& zs)=eKB0^DxCjvE8%6c^mS_Tpy!3F_3=in0aq<`@lmABz?v_<5#Gp4Nm9#56YfPUd`4d_ zJ1z|Qc3`~FhqdDfAA<qfFZlxmARkDJLT!1c&X;P)+X&IC+7KEK z^y;$MJ-}vbe29x@BECp@Il@O6P$nVYgnl84gFQ3h>u#2pg`INo(3LpFqy&CGvmq%X zq=$`g;-uoz~C=bw2~S>YxGJQwREQGw5gEDbS)9D&zEyiHw#?+ z9QCSN#Of#!H6PJB9y69qu6J^Tw$)VCC-#=sWek{Wi*&*v6M)YLfso zX^FcD+|=%(a*SV3Lj7z1#viEL@CXp!GZ1cPA>yvFuf5oF$5*FU-w`vJwTrSfM-217 z(I$xCK;s5m$Xt8k3^aog82rS!{b12=;ZdAM0=sCcJ2oy3e0^5%`V7?@*WW_%m>6P? z#S7tfE7Lto?zi`IgiJldc>wTIs~0jPdG6uF*z5i@F1|}!j@c3kS6p$_@=9o*$;)h~ znWm=-lWJkam_4Hja@KlRA2q-~>+bF*Y9^3|Qc@rVa1 z_bW5*-_~R3nC#0t0B;cvM;Pt_Uw+->8#~d=9AX~~i*!;@BpRLQ`-Vnh&?J{xE$*d!U8_N1S&L>l6B9daRgJJ*?MOd>d%?=zxr~& z%!ex%igG}&^@(!8?S!Lx^38K_HvL0DRZ*cVj8E|7#u?*DB}1x6FlrlN}*U8|&jyH&fZ$Ga9 zyt|O5%kPezsR~*7uxc!HLS=jo>r+ZKI>SWX{X9_W2@s@8*MVr`oa~Hh+4MQ0o=N_! zFDw}&ewyMioyCG21bn}_-#$QY9%G9)w)6?cp7p{BZ5w&UiJttWmrFvk^&G%^WBVPp z)LX%(h4u4jzOC80MCHnGg-T7eof-x;8I_6hk1(+}vUuMb(0s=bzgoVUP4TBr4PTvM zsgxOA74s_rem=v8b2jn&%qTpEW=ZI4%bDAB7ImcP1ozTg@L81<(EBZ6$;uP)R9GD9 zq5Q6#X4id3u48sLRgdf}u7nbMaHE|U4+{a_EFn*O(gj=GKy&8S6n8}5W%bL+uZQ|~ zbAYdRN+-I55VdoN3~ImD^t)Fh@$O!cC~W<9zYsbU;o=M+zPTBkSe3$bEu%_!qHega ztHgfLP}I>?<rOv4Co?E!ecj9D1yE5~O&pN#;;xUVO+kp(c_rX6^En11nX&}-Q z(vW)Mo^yLBh07@UrI&&4)$Cul)c>w`ejv)yZp5`=q>IpmPPHU^E>OHlnHZVr4mYNQ z3aNy0>q3wIVW*(81k11}RvtfRHe{>W=I5cf~tz|tC31~-1L*V0!Y%Vb&2W7fs7mPWrHxeFhA3z7g zHU8W4J1$UJh8qC!?Wzskn5}z%J>n)v%k1YrkGcPjlkiImM&v8TC*(>EMjZF+rYFzH zxO-CNGs(wMx~|+2xa-;Y<)R4oz9WPV;P)Tsv@tWkKnxi`mp13V>yx)gGa-S`3`Tkx zUq!RAvULD&YbPk<&OFzNJ=SBh;ZgT6xfE{#MiF|IPLMxnUM*qGdD}yeH;sq_BCBw= z4lbAeJY6bSF6lnGVmBMV2AC)C>jmAaj%xSrGe$x1rMt2LHRxVaX0|0v$V;ypS~|%O z0B?Y{Sj;OpSr|@M;Z(={PWAe$S7YV)<)r*#oo%{|@b}GXqH%h!smzqLw}*&XhVJMl zMaS}Z4?YK~t;WsNRsvr?R8CZ(|6t_CIro}IxH}z+&5jZ|smT3pf8BFAUuX@$3s+T6 zJj*7%j458U+oHtptFWzfAI7K9Aw3%wE|s1&7K@mJu?!Qq5dfq9oJ?5#>~Y65cHVxI z!jaVg*6bn(eEt#>9x~&XCZSzEF!|rWC2j5+Rk{vj2EUANjS3Mrpch$_b{NiNS?a-| z&Eb*`o@Ot7}EtyBJSTcKDD z5%~VCXadTRsxTpE`TbKaNYXCJ4>eaEft;3?UR!NeOhE5LY(IEcb^~HBm4xk)U%o&) zq9kL94)xk_GW=9?;CcLKfpn)0st+03KMXVwG)Ar0Tp9}C>3Gsww492~=Mam^lSU&%I4QcExxjBs8wAn5zYL^z-4D%OEJ$0>7WC1uh@I zt^X*$N#B;#y{Tbd%Z-ZELE}*v(@f|1fGiq#46pig?S+8<`8OO@SjlDhl;nd+`#8U$FHddKQ%(-#u&c_u{bPJ zzdkX<_E7X?e2W@I3;?}n@uy~aUS(3cpUTD8KKpu*`}wu46ELl11Vz0l*DyRC_!rA?`nd%KsvPW=O(ZUhVN6GE)lAW}mvE9%-H%9e0- zdajQeH!N-2_R+P0lconwr}Ph0;O|QZ4uaLj6CdJvMu;Yd61R|GI>uzbdtLp~3*zW< zx&koXPW1B%+vW9otsDzNLyuiB6OFFC$+Yb7-fG6~o*dd5KUNuyi70*Xd;Ka=YSXcn zlE`g4bbWW)j+t8Dctjhc&T2CMA z$^uw(g)Ij(-T?o+MsRNNa$?qLLo~NPNY8uLtcm7xM#4bLm);C)Pa8mQe`%F+UO2<2 z8D+{PCNhhbbB7FE$A&5JSlc))UFaA&JZt%^68F>)c8N-|UqyC9* zbk`i<`-_E2#MxY4Jbl$47Hap7ZXYysC@lrlgI;qhC1QyaENT^NPQ$CyFI-wST< zKEO8KA8KPuH7_^4Nb%9H)T+e6Y@C7F6RhJPaRG^zOUrZ zAQzW5^jnM7zPQdyFAhpy?<{~f^xNHAA=4>8{P)_mQ7ttg=Z7EU39jRvKPKc8f7sq` zc|SXVT0maz*25G~#;bBD%7j4+W?*W9K{D}1Pn=mD`1Ni06Zu*O6?r?4C0qgvn)iLV zfa|m$nf^u)d9U*dAew-S88c>C76{NONo_NIKX(djG_S#cS296G@_J zB%2JutI{Pq95jXIOZqp^vKK>pe&3(Tu7Tf=QemJgVMSjxb&h$Ha+7cNej;+K*X&^6 zr59wvFB#D50V0%dpu^jfbXwb6oQooDRK{JB;TCBTJ^zI6^P0JG8&pCr($;5KEwapn znbuLUGlBQaEwGB<-D0GA;MXYN^S57`Kb6Sc8Me9m1W)d%o$#G%I4Gs}Z~f37diEzk zFGzIy8fQE?_Yx=7QbKJdPqwSWvXrSPH}%B96bn@5Pk(z=n_2CEg?I;Z<}cu7qqnh< zf$5b4aLGXzs#(qM!1qG~R$l9GmwJ}iis)sO4^K81J|b!Ma*Dl-uTikK9iUg5lgX0Q zd$mvhJ&xT{+q?at?Y9Rd(jH1;h{ZHB`ZMUp--KZVEbEzOtU9zUwYT5YUZBE;VZ(qD zi6?#&&)Ee2Jl56taXePIoIlBA>_ZU~wvMT-HQqah`Ilbbi!Mz-FQT(MngpY;C3U$d z0i&D)zi*-jvO)qMh2|jcD!1RPJ59HNyHPlddSV*ArTYYDF(ukml(lxXu^Y1z{df|ufCOu0S` zy(2xBV99w?3oRG=z@`H0$g_a=fE@OPJ$BR=7mR<{!K}yK#-T^ni=xo+?%XWnx(N9H z->GhP=A>>+x#CR#iV@U4TBr4Gb5_v$-Ak_*BwGTY*N{jF(|l=}rj&>FzFRq`SLYK)SoTmFB%ay>kg4 zoVlKVaLk&u*Iql$ed>t%h6tXrR4PX@zxkeQ==nGb(3`LgXQ++iYUH(wL1<8}>LDf_ zRr$Lny3%BEt;`d@VTX+mKb@*250b?*k6z*1%V_~>UK<*aE-i)sVe0(AAB0i?H>#W_h zM*3;$KOB7?r{YD)eRH3nYcE#>(0ecy!H!i@AoL+z{gj%9eMTSkJHcxGC{xgP){%QX`Twg zris`2(EPxzJ_+Eh&eumv`JFn5VNx#4p7ZdFpWxmM-AS%4We6X4k+eC0%qyF=+HrT! zAcWh>^bcmX6F!8x-VdjJhUjp+<4?oD*N5eVk!yG`Hka}`tnYEN1??Az9nYK*Z_ekJ z3JSOYy|p2*<;i0xZD^AW1fMIg6n`2Hd;;^8e!lnTun!_E4W17X<8hFu^Ebky)F5A; zJ{l^gF<*lCdipi$p<yMRoi~~s-{;;)*)W%z)xI2YxcNV!+e&XYHm6x0-*-7>&C0eX8e)l7vvF%A>=|{UV z*}&$2B9BkVn!NjO;Mbdx#SSRz5DC<2K{}t~8ZH8Rzs3vQqlGAz6D`9x?YH@l!Pk{-a!2aZFYP@@;%x zu{j7G23~aF^8wvp7kMxo&EJS6zCUC4I;63 zPn?>SrDWPl(b7Too$q*h=QMBg;60$vTTwMRz|YXtwXlwLR=;V~c4M_yYwN>l_S|Kp znFGImb0sO#5LB^35R(rW9dGzT$L!|vxbR%_Iv-Zt2A2W7#mSi<*s%#95aCw(*B-nM za7+A<&(!Ru?`2OU`drJr+^LH=+(yKB)U4W!mST-d$E6njTndz*2Ux5nF*VTwKVL+n zuogRLK1evvL)@SXoM_zVk+*~D_rCVlW1%1edg&FH?74ZfKy0%Mp7WksWE zVaDgjvV}(lc&PH{}_eMV3r zqc{5KIYle>l~}Suus=FvXch*Rb$NNaqF4he<8c=5rnk3N68QOTXLLAW^;8olK;?&% zj~b5wFX#wq?1bEFZw>e<9H2L1jJmzv8L!L1404i`&)W&IMPSEUphQo7W9xm5V`W$Z1N&Ngp7#S!)f!Po(~7#{mv!Ay!7H+FmOp^MkBGZtz1+zThTjkA4{JhqjN|>e zUz|$1|FzdBWdI7$yL5#<`Yj0opODP3w}Vwexvr8^Dl}?uvM(5JFTrYVLe>qN|BKG| zogte>u{{Yx?LaF`Zn`D3k15!tB4j#Ez^~u%BGpUK2i~P1RLpaAGt-VpW@hzlNyWeR zdRHof1A2{e2tJQ&u5K!h3nEWOM-0?Bb$NwIey*6s1Bc8XQRtO9@j<}e#J))PQIyTKPy%71Bo>EwoOl?wM}{WhxpvGKnT z0{(xzm5-d!H>qYxxt(zjSiakywW`bR`5iu(@=2n+*P)9ht4XWNPOnLQgg`gJwCxh< zopS9*9-rZDrsV^hQ+dy3;OlP(D41PUR3Aml%0wsSN$c<~Mn9LpW8~}ja%!-^_5*m$ z=i^b?+=ALXX=K|iZ}^C)+GV0;_2$Gumomj{yVe^Y+Mq~M=UKJP(sQQuiIYa@bT{E! zKZ%m7!J0?a9XbGCf59K#m3J|&w-|sB6p3-@zFaP8J_lUB`QHDNFx&4Q0BIM++g z;hSC36yVp#LIS~D(YX@PXUxUbhiN`-n&2i?WhF+h<7=+aodW2kmLr|%rb)=R{S~G1 z0H^xm*4=YITJ@7JH27mju{EY=NFxZtV@Hm(Q62Zqr@(JbHxchvOfzHAH{-2s1~OxS zA8!*Bt9cb)Q0=coY4lYT7FX4lCWf)(-rP@>g#|YU^opE59>P(fE1mAinOCy0o89MZ z9xQmO({3jxMTjs+FS(_sc>5B8@2+sVA|sOIxt*CBkHLj(_#;w`?0+w81-@Uu3>0Kl ziu!qdcB#>&hWiVvcE<~(z{u@&e9K82DFD5-7L}CU2thUwSe9IK{xs|CM^Xl#?kObi zH%R9+-aF1FA8b4oU`7N)%0bDU#SC5%mE-w~s(n_d!&#e)eB zB+FFd$)C0qw@9~d&SPc1ED->D)!yxkBjp(Jn!VpNqwW4QUg@4JX3^e!RKcS3dsun5xV}hw{YE8_`0A zx&X$d{pP$yxxsz28(_Re4Xr^tX@Xr!=ZWBAC1umyVb+NJYf){# z+SmE;;oEE+pm&)oYTG;?h!NT z0(vD%s{{S*grqu;ZAe>|iW}_toitvw&z3R^K4>)1beCqtrC3=JT5a`~v=}AkOoTOK zLDgkThrAGcSs&{`D+B&ML6AGar4O#B83%Vk`p!1w#<)~xG6v}C>-fSSKFa`lyJtec z^AtTGt>W+e`AH5ga2+=9`#Jm&iXE2myEf_DLow?~@mbc@RbG*^dxci4HO z&67}3^556eY%s>{pO0KViR6L4DBZ(SgvDVFT{J0FZCm4gIctFvlkv~Q9~%Rq27Z3i z>DQ*Y7S5Z?#z(y{SMX}m&Q`3@@)3F+Ul~@XgH8bN)2|-vARl8J8DpuSJhJJIJ0BTZ z!&dtvDtVVR35ljK?BpzFV?#v#n;qXAt-j3$`Q482!FBQmP#c$Nx6f?!0MyPWp#uG2Yak8U9R z#8q^XQ1!C8zPXA*iOq#A+}x^6^$_G*SD4Z=?*e@O&QGuea3>@nGHvjl6r5QW(yI&G zgwed2FG^YLLjb*%@*8+#4db)&unUS$MyOHU9Y>eQk|@w=JLA_)C4UNIzZNO$iIzSX z%N&wFkf!knR=m#u2M3*vvU?0gwnqlOo?&NBAZrsQO<_zmRJPtOb;Um5+6tDu=_k$F zIsWoWf%?oXZ~dzJ@X1>DMyPYpfKP_=i_}{JL!%QlQCoB7*kLf(sl-BH!PlpqSyHV%U|jZ7+>tE z*l)iq&wt!u-O+hg|EN`^=+UyUWD0iKGGJdMEND^A#PizNm5Z66^YgBc$MIoFYG?RB z63MpQ>V0q`XaRh`Q^i4I?X5gQ(i~WC5JruH+~IuqK@-;HwO1`C9RbiArBRkgap=v$ z67mPtdux}-!n0;dMGud&mWhE*!f`~`reB_*bLm}h3vTV`U_h=(@diDvtZee8QKoAh z{Wc5m`z3qkHpumT&1oE^+pxC$a^{?13kD@)G_SqE-wh%=0P5Koj65BdX(m~BYqX%X zf0Z%AaKbDPZ8BvLW;Z3}^I^x?WEm8F7RMqe_V^ct#U>GHv8RCF{fM%J{dbR5wC2F? z_mSeqvTGN#Db3#3fi?1PhQ;}^DRInZQ`TJV8_n~N|jNf6d?GH=f`yFv@(}rQu z15w|fx>+O5_h;Yclc94i%3jB}yU&*m(2L4p=T|K*uzHyN5R?beBj36Ztnx1Vbn$z6 zpwJB8B3u@->*~E;-hG-`^avIIN7oDy2l|MWvCekngRynlBH;63=_Zc>k64=vOwD!t z2}x8GdUqC*3jM!7iTu4ErIH|}yL^3U zvZ0O}IQ?7gwU^ll10B#CZua2Lnc;B}MwjXtNcVKZ6SIpF)?aX&dk*UHD9XxBO2Bwl zw=rM3OGee$m9aZK9uXl@G1LYZ&wbrR#DEHXK7>aqMwz6brr0DP5leIpQV{q*mxO_s zz4m${a=`<7Efo4|`1?@VaHbqP)g!#sFCa!5?;MiH^Ve(5JdsyTvED0Dg1L1cpH}w{ zjyU8BD8E2iVN^P8s#2mdWe}MFKWxnl^ecW;r`n*~jKAt{nYp=cS7CX=F z0QCW51qb%oE^xzNu9s|vqmasfbAUC2-wVrWDv6Y?UFx8s$8OO+e0R3E)M3c5kF!gIvHmi2y z3EPx_)_)KZ`1#F$tj7In?c87chTosVrRNB7rK;BR^uI4l{~m83_Ub!;UXeENGp|*n zwAF8>vrkKko*Q2n%=VJ18`OfLyLxye%&78~dWp=5Y6TNeHaTbCee$H8BZ*237(}(3 zO2*YA2fm+tWCcsM8D@p_xMc@(cgZuPB7Zzkj(>jb<^Mym3g~6AdJ6QqRut-|=kYU4 z)vBN7GRa~xYVw-$EF*U&DO%5@@hnoo@bd38rHJ3>&N(yL(C#CJ2dN@wRvxe`YQy!YUY>myj*ljON_Ms>p#^TNV27RMD1L(bFoCldtS=$l%Y!%lew7C~tbPtzB z8zmvRkw^T_?0fis2V!WgWjH708+Pa)|`7;%9=FXS+U*xxr# z3BBvsd#BKkJ9{_G1oZ;{=Dxkc8Fmk#S8hNcT5h5Pp^JmFsXtSg;)POMvyg59&H81R zMAswB3?b9jrr2(F*`Ex#YuLI@Ong!qZkx!yzv&!LrFzg4_{dzPcX8IzaEw z+1~xWp2bE@&a7YZV0TDKq~zIwgvF8DQE1#1tzZx@@A}Am390UXfiY~W&mrOP?Bo^) zG=;xsogE3z9#8{*J^!`iID}9Qaq>^5NE!)fuH~KxBy0uc&)4}&x#v;<=vBHQP_GNS zV7%OdCSdEI#4vtA?4O*W9>cv}j47Z|u8U5iyv*nGpdoB~nsyfj&7w`5H-S}vf#ld^ zmfBJf0KPuh?KrDwaueu>GxqaZ8r0mOI({~mjxT)e#hq?R1N3Im6nhTfbqWxGN=OGv zjr4HNYja#fkSB^Hh+y#5bTO%P;N_W1mC^~Qu;TUHtbb{TP13%?37-o_lPs}A_XU1_ zBb3$QX{`X4qWWSkQ-8t8M_fWPd-nUyc*_o>N&)m1K}%Cw=QdRKPxuL8S11#G^o*5h zQ6tQu!+9i(dHnhLt0gAr;^nq}8PQB~oC#ILY{qGqItAA^jRuHeoUix5-}mHXo)bQ* zDiseCCr3{h@2c>DTGmB(h?i$)>IYv@5#CrIhGy#@f4^I7o_IhFdfJ% z$-Ku3j$g<3-qt=8(E9;9I&2YRIu#*v7@a*MfqPL+r_RCFb@PZeokr7(a8jexoe4XR z+D~;}&TILz?R@JV!+Yhq!RdKJ(jCqj7U1)N(UQ^ry}eeo&&^LR2ZT|zMe=Pg!Id}f zbID7Eeg*WdeXv9p8-X-#6*c$YIjKr9Dg*166j47Mt*Cd*0rQ?aqTM{t>-!$kQ^E69 zLW5Px751p8wbV4Kae#opp79R&erM|=IwTZ`eP}a?IYlJ*OKw^NSMl}ioBO};2~nni zULklEsHWA}!&%Hv6-s=y0!LC2LtYh0QRwW^kIpX6EDtM$vMAkEQZ93#L3y7eg3E5u zYcB+sBzMW34*gVvfbSnRQ z$Hu>Ye#_~=t*dpAs*h}g)|e+YnmgJ~Gdff|rqM~4FV(_*yF4YbE zWF4lw_kK6XdpNOL@QjR5-OfdAQk#yLxJ^b!0Zg&WV$*(ScgD>$!1p^ygXx!^+I~Uh zdWGnTxw2IVn33v+s&D4wv6D_3K=0=QtThN@#>U;EG{e0CfXaK$zaWCCIz1-Zu*^uhsp8~Nj`t>4Qc&ewnh?U2Q8FM)7WAZAVW=S~Xt;1ug}bkm~V zx7N(L`O)G`n*`{U4PKV?mk~*8e&Dz640#CwzMg%NeX(TkWVx4M7Rc*lg|lR%EwB{z z^m*;=&30sM1K59{XUomLm@H^8an$!bvS*TI=gR-0iN$6<8*<_qh5QsCv5h^|cu&u(ly>eQ61tL2M_SholK{zK5jt*n=lXBSMMNjZTW?FCb1N@3dOoAo^E z?^z5$FVp6)QrwfDwKGp~ugH<66fV3R@@TwMimk81s3^*sJMzB4jjuz=pi zz&P6mw=R!Kk6&kJa^R%98g!Y`g4I_Hp5HkYYlC1zpE;!M7c+UM>g;1d3;Vx6JNmE$ zk{~5`Y9L4V!u${K|8hFzl~^}Mey&DVw^@}P{^}SUapW*J_}bf@!SU1zkPj((1mBX= zW5g2-hGp_~{n4FNX8GV3`b0>6ZL(xqO6Q}iq}#QW@I1s)FGw(U`Z%#!_d{T&c!R*B z7>4ASi~_%Z7F-~WBzuitW|+V9tiRNGTZNq)9rpC*|E4wQjJtr|$gS!i|Hf(~0gK1H zKbv>FU+Y$`DaSRnWj(vj;yK#HyFjx;CfOzgvD^e`;e)flmWxTOkNIW0p}WG-I)i+G zuMaUi&`pb`jTe-whu?eBEi+eF;PRZrj8-gRi+OS!@s z0%I)L_J);$FGpbOYI}L~lD|Dxm#cpK+oGgjXB%aMhxM1;gx!_%FwBnM3&8hha9k|* zsx_5N9ZQdBdKpLyESmI~9M*6CfALuIei+dEC4Ty03*s48 z;v0rM$m7~glqteTzM1%jK*f?dS-n)5{+=q>5bI1gZ z1Llu})s_)&C@R3iSzgDNlWVIV(ECf(d~;27{K#tUa_xiK1HmvX3Hltu(g)vn{z|D( zq*O59{YlH3LOGX_1OEFH--#rbH0@NpEjP0&+tVLd%6j1Q*U=|R8{}85=G|aNq3F@> zj3E5a-x*haue~5aWHo@^*(!Frx?VmPcbvc;uY+Y_4Kwmz*HQA!XChi6)&}#xtsmOq zue7q7;bhcoG1zLuzkEJulT%KYd#I1u;VLNre!c*4qTd4LYwZp@7J@c-mM@@`q<`tF zezX6e&D$;p=&hvSDFbmhr|IAHXO)3q z6o6idGb5Vz%z_Bv9f@ex$gf59d8XZkrxD@h9JYgEKl+c=qC!Y-Ao4J*NG3)oDRkC* z={|lZ+f^IxW#hM>Q_KT?|6#S}%muYeCwExTTLrzauIDOaW&*bV&G)88l3 zN?moux#E9K5vu{do`Iz@Z=!9+s(YfQQu-|`BAj`h$6upkz0Tj4s;&t@uY8j?YgMgl zKZG~I=(9#J$gZ@l@M`&N1om(TiM-5v*+_Q#Ru7T@OIDp>Z+h`Cu2axu1#n~{eBVe5 z?l4IY;Om3!)en*jys3-<0$*5gVjdW0-p~F z4^b+I(?_BY8mu*0gDMR^5|cbiQE&Fw$KDOJ0miqyHzBFq_m7;pI!>jM-_=jfR-xg% zQQki|hDJYD&*mAGqd`doBD?N;-8!^&EmEM)GqV_0YGOTxn@B70tfqkXKJyZpg&ZB= zVx2EFYl1-6d5JQmRc+b7jxWZ}bu*yX%jf$_`-IMNn;rEj_%F7f!3e$0dA%9lbQ<*O z&w}ncH%V^YRO+KTq&x;|2xg%Z1Z_TCfAGsgs%6he1-+esUk^c#3nBX-!8&6&rhY@1 zEEQ7>sFk%CBYy3zkT?I!%dXy%Sl_R7WKu!$>=7T>&bLx#$?9Piqopg#9Fuc}mHT_+z~i&+@{Q4EX-R92W94ong9N4oSTLB&q@jj`m&f3&+H3ugA9Q zcR;UUCu#rQqbZt3Lt(RuJBk}Pdtn0Tt#7iuzr7hnRCu40q3J>i3C=9_!QJuIR~9i| zg^glii!*Gd`^LKn=yBlZ;}aNc|I7=`G_j!I>SnjLZ*38X9VSj+UV9~fw#Nc`ZwSQ) zuO*tCmW!;0#h9cYOi32CUIw;>M8#SI9Z?#zK5WpHu@)@6i>mSO5z+ErA)$S=nP3xZ zG-y?1mBva1{=U%?PcAQH&j~KOc_~BcjO{LUQg;~P(&lS#oo`zRptoAQGh%#RK~*M9 z%+Cp1sEr)H+5Of@2ZHsWTOXw(0dhY!N7un++rdciGc_$a|UON9sAAuFeq>ge|gyoN}k}LhFYh8K4`e%p<+As z&+jEjwQb1SCnMnwE)XiUHfAIwvTy%tVvTd~{ZbOy;{V?^2MBNWVZ0@toe%Kd4=Oj> z5m^Qw6}>z@9FyTEsZ|l+S3`KejxV>cu|HsZi9X-O#aM|lZ1!`xx|>urXAJ1W=N;j_ z;6J}0l-KobCsZhwMDU{x2*;qKeE6tgT6qUcQO*ncV?`s`sZrS#c(1WN!MUbKxhvEu z_Ol*5PtDJQNnO-<>?}WG(PE%Z%XfFHcKacf)k`I z7)tg*7zHGL4PA)tC0`DsmG3CV9-oD~}J3wzXL-Sxal0`3%$Ug07RF*}dC-kCRqX9O(m2)U&S)@Tt>ADk> z4Yy@o=(;#d<`-*Y?)M7yNU&<+#mLOOC5gb-2d&hqX>nScjSGigF4_f86jh5E(J#nv zyvfsXmVjQz{hd8r%R1&e?8!`=?oBtUOh~Os%IlC-2Do`l(Pf))0n=(m-QZM$S<<59 z*2?=w{`ZzAvI~5ADn-M>M0LQ|hqO_4MM_&&boq#Ht_iHBFvXZtFndLB-V4&GnYRG+ zLUlS_tQ(wJiNqo0^cO4R)z3b{C3+g>he8EPc?%@%3gcx+V)frh)`*8Vefe~dhJ`tN z%DXpZrZHx#84t|}{QRa_hNMw&2zQ2P_j@2eUzi}zLRxqA56tU)h#k&i2K1&S3u#@m z23PPG>YZ9PC)RF!qEpa!JKmeDDOleR#!rjlpah3ldoDbn;l1J@Vm6%M_id`GIg6); z`C}-F+6ugPr4d7ZkobGDNvL|UpmyhrmS5P=N233hzJKpmyO6wN0Q7<`^KyBktaQ*{qN zac#*BlTTZjWRr;%P?LD=^$Qax1@tP4x8H^;a$1PM=&EtW>xtFtIEVPHTwf#+N2;f| z7a8E=!4VY~Qoav^{=ip=mM)D<1wx&fRlFzN5vl#Yg8}&X{-)9+Ido5IIXt<1u=@7- zee&1PcQkjFuf5NoAxQweg7PVs)Ka;Z(x9boxQyfMjE9-@UGM2Z%vwqkN8z1yw;OLH zs$;RcyX=#$G@kD<)W3Ie2g&x6dZ4_=p);@re*YnBIb-N#!j9E&ApAo>=1fjmGb)KT zn!;=E{6|tEKrghU{l&WRRynCiWPCnSM~75w?x@1GyH2A<9CYye842d97$(PZKPQ?n zkSor)VZYl}LP+JHTGoMFVI^-7IN4OZU0eeEeu)j}Ap0S*3MUhMyHT@3sw9iqDY8Pun|k(?@AMAPn^*Wl z_i6Bco(qJKST>YlJz{|669oH(Hk_5Tlgbl4O(KM{MgGEbYCwNVk^;TPUhbHeR@C$I z;rfG_yse@#@bygWNk92gP)VhE3?{WuwBt6Qf+o9s?c#NO@j%~W0(x7md59y?V)O94 z6F*MnnWsx1v{MaaTC*WL$=DK42Y(iZZnHGd=Fut0v6?yJ&_ES?lAkhK6hEa#!)t4MkRg1{Qu*2FX zhs%o#n$;v<71KxQjq*I1*|IPkr0RwZGn={w#YR?pw zg&neCYz30vk6JasfZP72{%UvXzyf-e{fH{nvW=eFwx4!yL7P(oy>wJR(Q}uuq`&>W(z4evT2Mw(yK4xqNH_M-s@o6roF&k%Rzg{Y@~d5)PB1HXSp9T*X>iC-BE-B#ljs_FWRtXPf= zP1NJH*Na2xcQe5Lp*15^S?Ot^BHuhIWM+@-v%szyf(4SZX!LYNyQjHU9js2!NF5qMGYj24V)-|A4 z1Z`)lW1t{ZMchXN8AE~KIl;O02^-d6aPmq!{n{ozLU(}q5-m89L`ze4GD5m;ukMsB zYS6^xc@6Jue^VCt`w!fZV>EjhHsKRXV(IPDrhfv*iY$=J*j{^m`BEZo%oXz!J65Wqu=f!MpvobwC~ zrX}}t5BUD!tfOlX#mPlKAGTmOZU7$5Gn5CV_Xzg2*Gy>c1kkH;?i7sUn1;bLI>Fk| z(j9WxNLz4!+JnZ*{rV&!P9ss@HAv_VgX-Xo@xh-|yUdXswt{ z;YW+=*Y%RvGBQ#0*;geaNCPSVMWHdi0Oq z{lhM6F67tCF~UUdnnMsJ#Ky44qN(#!dXQ4vi5Mv0>jP`{2fSHV&-3q$^2M0=5NXZ? zu1}F_3$NoVP8a`|S5*MZTLrg~l~uFGKZclKU7c0^-Al3IdvF7DNX@dIkK_pT8bfxf zg|pujJ7`v-l8WqdueLuAHf_kHD=@LP1HT?BCKAJhW1mf&V;j+YN!jn&#|Sox0)O+~ zU{{CMU*2bM>tSa4N0|+C%zVxL^G%Lh9{Ud*whAh0aOZP37)693 z`7H?euusg&H|H0+;D&i%ZotnMTc3wDWbD33_@84-DjlqZ*`O#wYrz$~j_=5X>|fsd zmrMGKNRx$4;nFXSakXD^%35+zFXT2|2X>ba3;IuSBI_ehi?{Ec{Q|$D;9Sc~?@#rp zhGt($T~KMmtw;l3A9&OfvId?yttvjF*A@m7$Z=i-lSVL9y!Jvw%q;-sZ=K&yWu^!& z>aF{#2)93rI9IX|UPoUdU;b#N82Ah(J%==J51urw-JvjpTcvs1)1bh3jf_~pOBUDg z83w-G1Ky_?Z3QQf>5a7B)Hd*IS$m_amB26oLcBa zY$(Q2!vzq|3)?+EIP)k*7m{+DzeuW!)j>d3v10MwOZec3{k&yoA~gYiJ_a{Xl*kSa ztj;@}VbKk zXSFE^#m(NQNsX>Ycq`><)7&Sdj}oD&<6T=DOF((L>5BG0yuTg`?&OdV5WV7_lUcDj zo;|J=JnbuPet~Zx2)ddq`5^_g0hoo(P6WhR3SR*okeb3auDPK2P4V zyh;NOrO+fA=XO7p&(fUIcpD7xxxJ|)GRLp>fS)fOCr^77I&Y}HrX^1Z-ty+uD7Y=( z{wjLywW2})%Ue>ESKoUFm6izOOiTywmC?RPn$WI5NI&6GGU%yfr2+XJ$;(GduV$bs zP;?pIOIOKz<{|iO>Vr@&k(^#RG4T77G}COEywacRHv+cM@7`;s3Y0As?3b3j_O{@n z{N>dv`GfI-$IM~_s@9H5`0%9qlleNRJA@4~aQOJoS{kNY*vVQ$M&BP7eutfuWE~{0 z%`f%gt>r?79Xb+q37)|B4`e28%dHZRbMHB%w`o+3eU-sHVn}n|d@ll-j`WvToTO4` z-JFe)8IQ&YB;{9;^47ow>!zMF9iI{;#1ElW*=&g*+fUvC|K>i7AqUtPVEx50oqT5!Ut&Yg<*4K^Frq@Z+sd zgs0?Mkyi~zmwK{m)!#LQZLHs`3ajz`^S3;cQE#mP@5h8lrVF!kdf-~(O{pT1mZ zm%F_=zgXZR&I9z$eldE;fTh#^X^XR+M=7!$xioq`U!4++E9qO=G2QNDWEA6+<75Oc z3V*BL?nF1+Kewj;V}@1@k%c8f$}#}>{$Z89L!@^Wa~<8#h)_n&G)@g7U~T+R@J)QF zvT^~v7c=PK{LFghdGUBF;I(Ft<{m2*Jy6zbAuFNdB3{FeYjL#r^thlcJ8?sXoygGP zI=Z7QyHx=n+b=m!RhV;t?;o@f&qBkp3q^th&0@B;_H9djY#iqm-qhdY29_K^ugBi$ zbUbe&wLrm#!_E9Z&OBNURrR1MmG3EKL$uKV}*3X+|5MUdeto7Hni!_vZf>!Bu3DfLGZIwbJ#wQwdwYa2PDH?R2bc zMBww+M$F?*FV?gpls@tLCk^g;I*$7&p+d&%e8`+>3kUS3th?M#RqAgK32>X0=GxX_ zQM2{hYAuXt?va_MknB6t?8Nfs6MfQXtILv*{j&llp_1$5#inm8JW`B{!Po%&eu<-F z<(>Qa%Ou%8DeU78wXW*LgP$9I>}&6T-Cskol4cSXAWJ86;-GiT~uhkMCEP4e+If%o27Wte(wqJ+71 z28{74p+Xk_Iro=HH+$_(Ecx-5*Ln-(zS2Agm4S3+lJC%pkReje$5wvJnBR-?n9=wg zbBb^C6imfz6#94Bk8Tft=MUbo$)y`A&v{zr62r^Lz|Y4xFq>Cpn*@S+1?d#NMzJry zbRm$Tag1Mk1tRLa0OQ+3BTXlGoceMvu4m`U)f{G2K&8-2w(5FvwFTB){@qh49|<@0 z({v7mU!nkn%}-hDE^8j%ZaLb3u@XUp;soIPNp_f1oms^6J8R-4{G4!kNVj*lznVtg z^bdBtntyps%ENDPC_0Hv!3l#Jd~!R=tHDJ*I3UrTZmcj`sQX>NR;&feoydJm=KkGe z#cOe3hiQ&@D@bI-#1Uou3!Dr1`x+-Z{OcZ0S}KMHj$%0l*j?f;HL>T^Z|-wt_4EJb zMLD&G{EY*pT7{~u9U*~Z_aT&obMRiSwk?43;0#p|)oFu8Mt{r;US;5zRB}Hmo{#fs zoTlpmI#P&b2`-8h`1tOWuz%qHQmgj3Y6K(T40aj)!%C4f<;{8FEI;C3-snxI2CGH) z29O#m8cfrS!ys+R;IL_&=WU&bn^{G{m6vlx|o9m?T|q8Xxj=oZs~t3zxIMKo&Dvt*iwIF8&AL`eompnGRp|~h~qTA zaLw1=Y9b2O7uk*4u$-7+fY6g@xGvbzhTY4ua>D@m9+W&Zd0n&vA-@v%{FMm66;cdGK9pcGOzY;o^hb8c1WBfPH4sBaC$@Kn2C-~6u*G)*R|1ph*7zSrBe+j}u}OsXJ@LEE4@}S%I+iPZkBOvK0#ay(1{(|`!1t4(p1-YfzCu)t zB-^93Y=`0YXHh-Q9VGoLe}@>nbnE-G@~!5?CaJ7VJxo<7HxqjB2>gFlQe)+k*qN$F zAwb(~)p3R=^d1EoS}JLTvkow|M8dVHz}E-&{Ygi@Y`@qV9N{HCm>r5T%u>4%OqYLoA%v15rqCWH zemaP?@mol7iSh7yT0Ja7Aw@{d1t2Zn+;0zSc{9M1rFR#cel6T8tHjSXx`mVhyQ%lj z>c0{Iem=hKTNgoH1vM1Lr&i-TwTgjk#j+MQfAf97>-_cMZRYf(D^lyJ_$=9wLZO^u z&5>NehJN@-M5&pfOdVC}w?>!6&r*MQV&_wY!Q-@h@y^80n{j*~W$u;SXd%Gge*p9J zt9y42=l9_3JWlCsfO2uzYe3xQ`LFoWb$=T)kC?U(W-nNrjzH(mPBR?ZU;{71m>nS7 zKiY}w^?5Mlv?U)l7a8{^7h6-nouxt9XK!=Ov`95socJI9C%ikCCY!}RFzv$Kw{df+ z%$ZPb-n?Zta^6f}6T z521NJb_9)bi4tdb9F&_#EwPfiBQC(7w_Fca^(bSJ{urlq?MfiJ_EOy~7NX65vmf<3 zAK2b2j#In#)sI+(;^)jQ@G-NI@{gA1mPEx~)a`2s($1)~l6}eZuO_+Ll9C*VPTmn) z!*73)r1(iz7j0h63HTqso3_3hlGTTb-I0rkx_!!_)qS?;=8+*tw!H|mhgwj zE_5n^1Nsib>YCuFPQEspuj8Bg#WVM%g+itaA-u{}iQKV%V7|=`lahY_H`wR~EXPq3 z1mNr00wHdERr1CXK8>@^u?SY!8sX>VN0B$*XT6SZ@s#mlc{F{%f6qVTj8-y!95?Qr zdslsCV3AlHgWRbC_!&B^1Dd%JLMmhPJ_OZ{Sj{nI>Yh=Pe!a2@&p`290;8}84$ z#SZipXltMfC$L-N?Qq)HqB{SIFQ_PL_VS;xGj4z4%~MP5G16=ei!SX2_CpMh#uKf8 zpV~&Ua@RLoeb6!I*1-n8NHW_dZQrmz&^QE-p85zI0pG6=t!0Vq;6qQgP(g-TZ$MRa zLIsAzv-tnZ+gNCGHlb++7M%m`>F@}?>r5U?QMA+~sC!*bpCajcL#k%K>JXq(pDGgn zV{YDzo;0UCc7hq1+oUB@^UNR!`0?gj_wXeP`!b;7Cn^~wZ@m^#e?4YIdDXwXxbbeZ z^H=_t4*d1fLbFF0>+9pJJ=1{4d zFq))|wGpoH(O1_I3^ui6eNB+Vs26KDTJ_!w!uVwr_`BA(QO@#&Bv0p(&s%P7@U0D zEX?OdoQQvnj5N-i!y-JfB0sYju5VK8`nFU8e_yTxjJ4gdR%5dx2z>rqSa`tdXIC4% zIop5bgN(|h04|5O<(GLqnb5#8#LprmN#C+Cs9hzH-~>w8JE49GjU!_%KAWA@oMZls z?q4l*SmGsb&&XI}9wCe41in8@!*vsOJL+dkvPbl}vkum@5I@PJi2rB*;FD%%GTugc zP5wFPhXE>REl-Bo;w{F4nn$NX zEq$L}c`io*8NVhW`uz*0m+>;Dwl;3K39ADG81-xwoK7NU!M3STlu|pIvFk%f;0X`p| z5{ID{`L!7)PP%5z6+$2Lrxax%62~t8#syZVkNyd11h*E(Vstf zL?MAyPb`R&6mA#Ve_t1{s#JBtf0T8LUu;54o75oM33X~7 zw=NRj+1m_8KmSkyhReZ;K&HBbigYk*|~&`18VI+l#>L+=lY(I;~$YUXjny4y1mJ5pV8$ zzMkJ=t%~(Yr&xt72$HDNZgLhKZ|{!iF?U&|{Mt`&1B-134N<*M8;6m_r)K2k550yB zu=clpo$=~Un)#dVHDUrk-b#oLrtJ^SXI$Z8{*?Qrf(G>`enm_A=l+9Qg^r{2P8_L-;!nfh;bDe% zrtE;v-|qZ1_D)SH*{Vo)NfFo{;z0ZnCZ?vef8~S0D6Zy5&E%XwhK2bk(Wx_?@q_Z@ z(Az+gP>B(!02#AX`-U9~CH$~lO1kV%_EEer97ou8R;ZVsC=`T-vqXWvj~J>l=bVhW zUO-<_^UhdBdc|D+XO{q^)4#mQ+D8JMb``!QnuT)m!D50ego4Pqedx%z-(y|fD4kdx zOzGZ3t38pch(ukGxe{N{eIH6TH)Q}XZHG)vy6FJE-vLc9c&x~SiGU3W^FXKm_}R*f zJF^aK{a;>3ZY){tQI0CxPZhAAL4}q^7j{K4)e+!)5IX9Iiz=ai?2UcXprly$!!N-`E2eE4(@;yCG2Xk8?%4`O%gtCl?G^)YNg@!=5sS~YB@e{BK^vu+X}qqbd&B)SXK?gm&Dk z&*3|Ay*?Cy@2e8ZBxR#Y3m8>*a{L=1Hvb7N^66|gUk$lLK{WzA=KSwFtnofw zqnD7D;BE;L{_FXO?=VF!r^CTA4{|lFFK*I3`{h26IIp046|Cu3*l1PD?KjUUP%I=3 z@>nx-YRCxwn|D2+KDbELq;~tNaYlxAUN2M1_v(c~BST8YC<01(sh)*??k4@+r|S1x zjz@*MD!M0KWb?(Gwb%!|VvF!NM4~icn5%vt3E2pR_dpWarenn3VYZH!t09 zwz}q>xerWSA*V_EjqR(dz7Uk}ZQdD4e~?~DSsjcjs#i9LC$_X6UL?Iz6i}iT=ow)3 z4n8!HYB%C?QwBZ01$AMHb1)Acr)157fzSy#pUiWs%=2ddn>RB$Z$is7b9A$zqsl;L zi}gG?-A=vzOq1ertCTL+hUeUKksu=;wfV4sF%%_d5eq7o$Xwp&z4r1}R;YSUCFu1e zlCQmY7oTv5+c4cv{6qVE*jpC@YuqPbueue-k2Zksv;0pEy={XBri4o0*`t5Xt zUx@XTYopsU;(et zq`&jMl4qJlkW-UNC2)Klu#yRj0KAJ3a*;prvxguIyXJBo7sze?){XqoysqvD+kdHq zox}|)UdLZ2*+`a!vnfKMft3!LdB}dvGKU=KN@C2l$^*SVg9s%MQXU5H%KQ?M_NI*$VIV%A5$Zs#Dl_gRw95UMy$((Owa%eTx27uy6r*q`p0@k}Ca ze?ZfsF$r`Cr(d;pe2;8T${J~F4-J#Mcnbisy1dr${`0!LiXLhG!A>>Zdf(gRVH;3GA`LukILc`X$CN z7uW6pUX@;|pHNyy3q0p?1JP+)9edJc8+b>_cquj%zN1eAKU8!==c(->`zrJjkx|+| z&oKBu1d^L1TgWtY4+N*3gFYV@QI4xgnwJ*zR$?)Z?%SiNrd)2CsYV0G*YV7S#2&!= z%>kb@F+2GK=XSA@e$at0Uw4VDsfS+mCvPJb2o$VeBWy49mA^ghD+HvqNSy3()lWDi zetzFIB#x!!IE)_$yF2|?KKS+J|HMm7)gYTAp!Q<^CPEN19%mof744` z3M)RM^=)Jm&W(j4A-m`D!%oaheE%K;p(^~5i1F}J;dzDuVR9LrNT`U5aZTkiGOHfP z-g;{1EC%%PK?eFJL#(3A^caR2a+*xb!s>)HbpYxC*gMz7AgTl4H8(x3!CfwUGz-c2 zo-HmCyptT$7pwLpwXj5-S_lnQItU)nj!>N8a>f2o5SziwKtK^TO5WE{BvKccsP<_I z^!R=XE)tG;aWwox(K3MAR9%jvh~v1@HcgTM9lqLp~zLA$fJw0HH! zL2fPX&cQ$bs!BVExzwn>7bdNycRw5657qgeR73JyH`t&F`g}3&7wasvin5t`s`)Gc zr*OdN+?|!`!2p~OV6Sc2901rL8) z9*8k~+VG$xc!HPT@;ZY6{r6VllKP~izMEY_Q6yeI%X>sMv2KtJO$+QD*J`$*0PyAx z*N4_2!uBLZQm@T@TsH~)Q?z+H?r2R#d`XFKg>qET&r{nY*q3gl${#E~B(V9HlZ*wY z5OFSU{E(m#Jq7gj(82SC@t}0XWp-=i?(92GLva?T(ZJ|KV6Q?_(E%oa*KA1tH3sgc zVmU4OdY(**w?+IgOz4+*5uDN*CyfkU5ZDYj?Q*nW)^)X}S=WcQuQ214anRerT!UdX z9_4KApwAba(dwYe~Z_BCn|oLhdT#^wThcL$SWkN~`ej}v9A#f2=;-1EOa z)*^UU42%@NRtWl z^@Vv;-MbyPA0-02vMZ;BGz3*yoYTBCZ~A@vZjwfT-d;)V3Z6j`XO(`gvbr&ai?z75+sJ0Q8=I$oAQZDLixCMQToOc0^3t_$VQ0tcT0s zZls#T2u}X7(Oz6~&L@0yhC>}i4@apJ8um2n}|}Gs`~CPn7L}< zTB6-3^Is%z7Y?%Tz+N74NJc=fytcjX#p&Ga&~9PURXsD^KH2Y?^=P8JezFF&@ZC{C zxPAxsCU_x%ziHPa3$V=c_|Sf^Hp5@ZUmtmEu*1ASpWl9u)YT={r6YLMeG_qpr88eB zK>op#_vSnSD_X`TB0&BYtHTJ$#e*+g{$x8F<&swJnw~ancXiF8X96cNeT)tv`spsL zMm4Y3CudVMyb$$+=r1hhB8@BQJHeHXh?+pqCLhY@i`< z3pl=x1}5u(UJa4}s*>Pn{>F$|57n8!SH*)QcVA2d>L=j?X5g8qAW3n}q`LfbT3SmH zPcGw3H)7URL%+I@{cO*qO^}uC0NvZwCFFMm(_NIjIt%$48Z!ITpp9vl`{sTlR!8e! zfL_&i3nAzsemT(`5ud7AslRrn7I`<~%_UkLA(B&WMGY)muk?v+U&QTTFH<@gIWlPt zG2Jz5PUi(Z-B|ed{}1nXBg7%1Z}H?l1sN1Yiju?ZiDCsQeZs{8j&G{(cUM4fux-sa z;dL+`@?CCd6aQtK3N!o!n1tN2MQGy)$JVH|A;_~G;vqBPtkkZm&IFoM?zxy z5%|Jz-{u@T(4$Klwqdh(rdpw|C9T)QxJ*~8$~(ELbDmnq##d4y+!q`MR6K=8Y+4n} zZ-M@M>!ta9Pp^+F9z5Ruy9#m~syn%YBrrY+*z0JSk`L(pSjNH*KKT-Z0@ch}l3+n` zv+uO}{1`C&*D=!&V-m?7 z57|PMHC7LIa6f##U;Q6!^txfJUVyzuM1hVF0P*c3Hpq28PKr-FA}5#@E6o?{(BeLy z)%XA(zuuI;@=0y&sz{F6@`6#OQlJn;g)8Z`s#V+v870 zB;z>v>q6Uh&uoX^qd%_&1ADsiXPMlg$KC z*GplrrLpKO4DHdXIL*je*$cxtT&PUQHOPuF+R<74A&xGNpyzMwM^t+|l6RKfc1asG z!xZ4XyCsr33H88U5%&^qKyN`=)%v^ux&XcCgwD&6e_Ls+0(qZ`207Zv5qNj+w2wnr z|Lz6KZz2BoJ@hG!jqB>aDR>Rs$4BZa2WDVXK7f8c>ip`b3;nTX4f53RysZ*zx_>I1 z$PgViu-9K_sqGmY46GLH|NXN`J}-B=cJUDVVjPzTxjfeMS3yz{O!Yx?W`$wiQ%6Kc z`gf%E=gI;oiJcnfOW2y#1%Iw5Xd*ZV4s0}bBMH#^zizP!vo3N@LDUzdQb!$$omNbu zXAGaGfW2o(A*ojY-i6B09iC^zt23HYu%JFRwx~+(eTtQ@23YDi{Jg5LvEp3=?@Sy@ zdT{!_PK~*Q%!(_vE|gc<(d}2MXCfdnfgWFVlI|^IW!`5mL0hEoQi2$1j+uSw-*3)) zQsn%(IRx;YQvYx}7bL8bt$*KFMxQENzlGfK`ByUs7sMa0VMm&;H+hUSyPg-)ae=9| z(S;w(nfDv{I^@VsyhSk^?IN{7A0H%-(3nJ9n4Dpj^iPNFqlNbuo(Y{!VJHMBCHl_bFcA ziLU^7(Fqf3OEeg!&^^r*R8LK{?ysbO5RLsrGpqN4C3SxhrR!kwLgLy;k4RN(Z{4Kb z3TFAK7m4g!cp@_$W%@h>x;G_&ieXyA>VVKa933UlVb(m8iZ%T=C9wBBFCpG6fY)H^ zzOjvbSaAvr)rZ9Q@L1aq4=0LO3fE5|HNEc#CTf1M5`7;M!ipIU$IR7rczM;q=(7^n zC*P16W#u&HLeS^qm-T&eaKG~*ehzXq_NAzU75S*h$#_;^?_B2+%?yBdrqT}fR`1yF$AH$oG;FQW^$#}Dybf=6K+}B+kI$b~k*IAL=nfBX-Fl^b455*V6 z01ki9`#ae4X{{*u@AVxxOHCD8<)55}whSOeOM$%~y-;xgz1crc)dbSlmZxVtHOIk; z8o@CgBRXz)6z@zoKk?Lw^|60roiPc%&J-{pfHhn}PO{#V;+=ZnV4Gm6XV6==nLHNn?)!$n@`Nj*&5eetp2;Pz-VWngeOIp*@|N299Mv|@i`i&a&`XOrZmZ2_< zi!1MEj>;WL;=wP4Xjkp{H}S;)qraU7$Ok@DuYT0t_7uhPSi4;h3~30FcVqpg`J)4x zc=-oCS)1w|7==8dnQ)Jn`{Shn9kaS&U$elTEDtFres}t=&4Av2$T%3#IpkqP?u@AC zm-RP!>U^hfpO*9H`*|JmAIpH=&*lL?KGgXs_1~ME8vo#k^oGNy3e)4c<{7WsMtl`` z|J8!rA^8*o6|aYb8&Ny`DBtC4nER%5-sK;%WSqnQ;r*dWUMzPLsVO`13&z0!{-^-> z@AS#i{BQ0X+!Ty+xdZ!7l$y_cdtzl z`#qviQ-5iTL$38_C=r*jJ9MKg?#PE^ayX2P<(Dp*S$ zes=8BT$MjYL#(^LWwml4_1(h#592Ra;%wOw;p<;lYJ!K=hEX-H=pky4=ObV*zv0Xe zKrfuV;evE#*ErfT#)SgZyvziPE&Jq^r^(1uPz(*P-Eur_k#RalV2J~myiRkKQ)4<*-!uT3MZ)N3P{tpIiTU$ut zK8m&9rS#K9N9xaky4uQ7Tgey9RJnyyUDd1Z#8$gW_lWo6z6P$-rcT%&tBAbZUkfyj zK<}?x6{B!7gMw;J~ecd z$&0l|4=a9#BtqI?PlKUXek&fKO%Bh~b}EJb#Hn^RDAW}{+N446Pv#RLTA@Mr;?Bv( zm>>w0p)miAuCrZx^Zi8+hV=j8eYN5!`eC=goPknuXz#z|jBw*Y85XO^zv+TX$D*Gx zJYb{n+CRYx$*eZGlJB64aiD)pdidcf$M-S$g~5#y^!~bc%3#Bm>Z1~)L00JonM&n5%+A zY_Qu#es8vCwqUn_H8W|PtjR5X>_|P%0QCL&1V60L@TmPr*pVf{)17%|?VWpAIPr+U z`7lw;YB&inAIr1#-wAK*(WjK}UA6Tr=J*ED#&Y0aRV0dTZ-L{ijb|4im1mzb@BN7h z+Tq={v-MMQljtsdF2sNLh+&c140`=Lf~#IJR?KQZ+|jJtcI0wkfe6i4GRFq&4YVeG zKL+4Uz>}Oat^J)3;qSfA18)~xCUkTzg_S#W*1vh7QW^|lkEK6Q$+!!7@@a@zTxP*f zC>eQn94fZL&Y&XfE8PI-`M~}et|&`>(R?*#jpDFTe~2I@U)bj0&G#bN<;T>c0A5xS zv(gxYU8s%U$>)045eA}sG^Gp4X}QY`yOT2bQ=A?Yhe;gk1dM^a`gpS|U~=|YA{`%6 zP?%@w*vl`DutBfSV&Infs5vfH+16Isd@x6?iGwP(Z;k!{#}`$rq+t-8a}~_JUzYHDvHgz zj3b!;!+lp3Q*9WvCyg!l8o$u=#8cgxGb1c&{NJ3{IK!ETEx;H$cI|U~9oMiRBtWn1IndIn(YYGpAPseSU+_iz*F^MW}Ih zc9&X;vbQlE`LNk)P7R#DV17-pjR4*xw*DQyAX1|b>p68_&z&no6Tda$t+)B2HSu!(FUjC=Sz9d6gv?2FPt+v0wxYEE zp=GSfC%>a+$;YRmmhz?hg7|AQ&lZO-=;JR#S*c&zCeMt*Z);Bd%$yg7ZfGYpcShiR zIQQS(E(7q+m!0^5@9E5$v|YtGT3(9PxroS;c1rv>k@AyJaQJ$ci7jLFtQE0PDPnlJ z9jsJO`m(gHCp458+9=Hfo^A*Fd<@SYq$v-{cg23RR|BGb%f5H={j_Zw8Q82UOGS!NFRCSNnVSawZtSYM0;SOu^*;ra}x6d=A}gfQ8_iXwy*>iat0qf+=v z`C39UVIKSbk1AsH|g*9=Y@3+i^ zc5mQo8#i&DxNH+6PUfKWIBfFh!~=Wjl#sX!0KBkce}tmIp438G6YA(Ta=Cxy==p$LSxewD!El0p6H^3V z_VkGBZhW79|0aJ~D@fbY0lWcO{r41$;(g&)cM<|_gJJ=w(ZS}fz|JfsKN*TB9lx2e85qx3*R&&qCziX7U>E2jCeyJ{MY&qbqMAe^g^b z^%wAM&$0ew?!)5fdFNBEnKm9QBbA8KIZB37^27S&%D5dPlYwvmKz%Z%ew!h+L3#!R&U-lfyL6EeO@V?YRYS`e!|e7me`%-azbK zw{UJTA?vUHyV!3ZActKD~5_FbweZm-Cw6_yD(RcRCCO~1svbOPUg^L?|c+P=tnH4TS6$lm8HQK zfh@Eg2{o+DFI6{~<<2zzk0`Eow|)NN3*K64x3*Ut-{@gFnxdGFx+{A zI8wh(EA~sq4`5 z-B_%0g;S(Q^^pEV8aJ@FtKCq|6Tth3q6#(G&*W(@&X;xdo*v4f-rLWq(@vnTH+7H2jXNKDJ@#!*W2O3n zwllhnt&;`QfxVX#WSVvW-jcJQW)D6ldDb6!8B|zO=kGnEp|3-Yp&BHo6+?*P48d$| zvDYSUuyZd`zDCKRXI_BE8%2(r z+xKHrL%0{M0KCEzp^%F{6LXe%WQdkuH`oH8DR8HZ9X-2fJ6|dXPd=~ea47}I;3s1@ z`^nB3I#wS9_@X&Z6Y0u!b0;MB{Q|xI6*LXV?;-zmMHTJBnwZcqAK!>2lscge9N${O zDJVd%*V8QZg{y`^9GRNFYb+%!bHXyA^w;-a%N(dQq!sqoFX&rE>EfBA{&=Q4Abdcg zVy?8y(32WV@Y4KIe9iwqoIh*%gOW;-s($anL`tlXOpERHx(K>TDPWfU8OYciPqWDMO0%sLQB=Y_m zcE?mAllZH@=RqLo@vV~&aWSjFtS6di4_fl9)|AjknnB!!0*-GF7?Y$ifOqV%aE%}r zImCzrNs(cLR1RnMz{-^=x7Pc5+b5TrCMxvd&7VkSEcW zNZI?V{+r4oj79tQ`er)#MdEggdcpqUUGwFsk_sh(b3n7FZF|c4qOBSeR)%R-oR>sw z&mHLdvEc9nAHi!eO6Ae(+;9rygQqPGs)N%Gzl#sc(*(WVp|4I|Y}>M& zp?~?cOFra~NKnW63+3~h`2sBMRtV7Bj!Cw{K3}}wk`vIuCT$TRSX?Lif=EpC zi7+MF#5AWAU4;a7&CO@pJuz>v<*ku`^0unX?#=82U! zSR_xj@@Uwrj@Of)`>JlPFc6{k@*y#l5{6ZcXN%!=&?rVSuqFKGe2dD&<0>ssddJqLrVMn z!gQRCk9Te@kE!Y9?UjoKJ%4M}+PY#T*Yz_$5V3N38FC9PTFV<`qX5Sj1HExd4!}!( zIph=C2HQ58B}lijoA<2}aUdGc5s6=ri#lg@#$sJhqdTEff~@qzgzhe(68IQ-&b>l| zf}U`_a>95_2{-8Vq;sg~v8i-GfX?C_M7hrfbLaYrd^oxwuvdlnq(m0LdlvQa=-H$V zBX=ILL`v7l318IkUBHv^;>L0V?R}ldYG-i%--*<^e9cRgM7f7C6-jUzHZq&ph}EQo z)lskt(C6d#lwS|-$Fvc5((TT0s-}-!)FG~-JmG-7K@LgoQUKoTW(Kssm*tZh@4|mk zc}j`~5xUL(RP*4C`RS}&YX`$FFncfA^zRF08fMBNhGoQ(xRPoJ=AoZuSYxq_`?e{d z_jeRsqoM8bev521Ce&tdgpWyd^A~EhMF4vz8m->}dflVU8+Wd#GTEdLu8#02xSxa*%wzO)LrRjr^p_4_L^eB0i9jC^zqI4U&jilbx{DXU2fO*;!mcM*E-Yb810RY;=gjz>Xz?u6fp|| zF2MfO;wnpHufJx&VVwDkS_JYgu{uH={T|k*_Y*pQFC(%Idc9NCzl^r1iZVKSH6Ku~ zP@PCwv%Kz#`)2>Rv2Mj*1i)MT)eyTC#zw&|67ENW9m}5|dYIli{z~eOi_0yIc`)UP zpH+@!QK4R}S#(`AErk{(Tvn8~2#wB_x_8Bej2A(VZyQhZh@PQ|sAzj3vd8x|!P=`2 z_yWuSWdHsFoTu%}SH|QA@KPo(^g>}l#I2LcMGd}|qOX+dFNnC}V^JgY5J@=~ZY=4= zaJA(Oz6=^+jxR zg^RiAc@NLRdZ9(!;b4?0D5A?Z%b^_fdYwkc;}x~()d$X5D`Ch;O!W!v$E3{EoBr8m z&!7=EfVX{xU*Ox_4JvAU8adWrmxD|U#Wu5uSW54pyos;B-=JIbH=~9b(+Q#c8^Z%% zh+}C6)68FxG9iYzvQdP)XP|qO)M9k+=q#UmHyt9u$<`k?sLKN-i3Qtzr-&W8v>R-tZ^JsoY&_?sj1M$sR z4cDfEITmG8dK&cnO&s}ko-o2%U<2!^wNHu9F4$Pm>C*A0pZc-5V1X0KD$KwYBwP5L6}KkW9+LX;~pF zGiq=4etECe!ro6VuC{dhnLy*h!{SaRF=gW{FL?#cxEK=Da!KzWRnr9T$bh~c>i^O4 zIlJP<3z=ihMnc%fWLm~vKu7S+er&DMbQ}wSx5jQu7DCiJFI>!lZ_COidnm9R$qb7I zBA3givt$I)c+3E8Y|6=YnKZ!;aAE&4k==G$7p=QlaSft0G zmfL$i!@QTxh|?&SJP&}52->UZzEjlY^@<-IrwX{E*c!pc2(xZS2k{?~ z>r<)r>R&b&;V8^){>7Hc|2FJk7PV{WK_Ac9>sk8|FV+4e$3e0w|0-s7IxNB;7)Ah& z?^)Y&3pIeZyZH3al@Ej+XZ{^jM_;i;`N@Gso(6L(hU$}^xgjNEY(d^p?3{McfLxp9lE0HwO_xrziV>tG$|^{)X_xx<%Q+4=99!NaMQ1I>d;l6q{dj=R~wakx}fAT`*nbII1 zWnSSn^-!R%k6BvmSq>104J87j-7=SOn2RQbOpLYEfV~S|_~n4!Qb|guj%3el$GQN_ zD(z~9oO`&rkGkOs9F9!eZY0(9zumuc1(X)_AK3DkmMOsr568WaGn_kOVI*@B;DLMv zeZ6^k-*)mEAc${-v4TVF(^&WK1-HXJtvBOuBQJ|21wednkdUD{eA9v{x>qhgWGaT^ z7>bX@(?yNU;S&~+8z9Fn7r8nul1_-beMdZ(m9N zRbSgZZpM`a-6L8AN1b%d|+?5FC`xdfEUZ@iWmn{yNUx{I&~1QCZhF;nx(G2LD6AYxcci$s4-eP zcRv5E(4i{wR3Vkk`)Z^^!=z&S#^j}>OL`8FWKtG6F7Aey!E$z(-_Da49_~huT)l=T8+kNVT3nVOSoXnYd z+EVMf7WtneGI!t=8ulKr!PZXmJyujY` zPfu6`0N&#X%P%m+pVsR-NL6q@Q<~wJoUnfs0fVvfqMFo?_1`BS-!iRbtfzHNhKZmv zPiP`;`T4DkhJf^d<7I7De+~5c;xaBK+$*_^^savb{0o82oz*JXD~>o3u-B+Bw-g`1 z>o-49DM=<37?AZkz`4eygm`r1(;rftA7#3z`O_jJWThAj<)bmVWUAP7C-8#CsFWg82j$TB4DrO*}M}jfLF*^@0SZ(DUGl? zw9%SopVL>NLF5_?84(B8>TGzsPU<9PYO?D1nmPiaz;0X#J8~Bl-=Ka7b0nI6Dn1|Y zF3|VqeP&qBUU2tH6f07!54%scS|OieIMvR8z1fNb)_~qz(sG&NmB&-Y(_3tt{_zOs z%b`8Ub-%RfzZvN#)?G~sa&}1!XcbNE1p}JL1YfdS(_yj73-=cjv3fLe8Aw3)ZXPx{ zvoK65=x%c`SK^}=EQS_6nC1Nj_HrO_cH#iUS8Y1H1eXIQ6s1+h>rktdOF>$~v!epqB&B>7z3ZjOU5-26A|E4`Y5Wb(b)1dt+nZvLLt1 zWH~H3U6!;0Oq(a?{NIY3d0pG+DIVBouJL*sPlOM-Goa5G>>+y|3pfpq1d_c3Cc=6YLwv*2`*=p@2Aleo=KC z{JIg)`l|H-)>gFMVMEkme16y{J1+ z?ttEt8N_BwJ+GCJu+K~u<@sA4i2mNYWCA%9D(1>U$l zi5iw3C09Pph@y{!#Z7}g{<5FJ+9ruYpL_3rm(H-?Egn96lp&ye(@%ZZa6yF)@O%3} zE9+FtF$vLyNjN45jsKT%n4K-oF!Wh@@tCf;)*tm~QdVfQaN1)5f8y~lrwRHu6|2w4 zuUqa3J)sre(0tJ6w=CTRL~nYsu5_*WKVJR?0{q!+rtlbr!0{y=)pK3-ta&T))m?h*P%`FZ9Mh5pGm+3nRk#E8YUI7fEUTBPM`X(wp=%1kQ`iKJh7n zyXHV4jTy0Ul#ZH0angqXM{W^!C8~6Sb(9)6#1~hBGpfJ5KSW+8X`@oBY;iUc8Fz?w}<>es6Rdu8QJMEZ(_fn7~pI7gii1yFo4D0mzB9E1bsd9`b$IXI!=Ikd&h|2t_ic5 zQ#O?fYn~q1OIrMK2@Sv-{MWS2zV&lyEF1GzniIC&nxZG|5b0~P`uGE#M3}M3!2AkP z;Z|@0_n$k(nErcn+-`sIM(GGB!wvIHsceuyA0JdAJ2rM;tR$>GgE_Ng+btYRKIyHT z-2!{Ttml{jy$zI;W8SnQD^M=4K5~d8-Wf_HUdOuca~uT93)R)<_Y*dBh(ld@G)Kfk zf1T#-@( zQedoSm=+DEk4$0_<*@Xi*AGE7P8zc@RqD?%T96_|IN5<<87jMI{lMOEJ-7sT0Pp5^ zT(qCDUeVffMVJ_at=5{*IzM0~=^L7eRB#yG#00!A9v7|O*Js#}Hs@d%d~MY=9CiN_ zl6-q$yF*@Mpbz?fAwmnz*XbiwN&l3-#0==~ z-IhOQx(j0#^H{#)S3!BtbC?wwU^cMxW_*wbOUDKDHcYtAeQ{B^{ycNAF5i|?HxT!S z_^uP8Kt!tQS(2vDJW6ksj-!x9lu)7by1w$8(&&?;*e-Wu>)yeK#q%Rb(8u2}ZDIBX zD9sK?cY{02;*To=p``f!4K#1^p(qGwlQD9U)v4NWA$e+7y2vafK*Ku6Q_-5^5B6v^KOm{nAJ_ z{BzXCF*tcUh(6gr#gM;wwOqf^R)W&kkB?V|j$EG)^!Z|?s=%Mwq)YGz?x+6ll&?iF zOV%+xZExx`8AL@+aDe#6@AJj-)@)@seaGiC>k@K%Qtm7_bkWmZj6Yzq72_Hnu%jHo z|HQsR%S6{NTDO2M!QKjq2HvE}U%2jddnyL{_<$Lnx}B*RD>8+^QtpHIWTq4+drNfb z44e;F))Wr^_m+L_|Fdfk2KGt{y=%@lfY@LBX*ya%cTjHnWW8MWqE>sig-5$e419>N zXNQNT*-AP$8-XZoBdFi3#J;f<=>yp92hY?zG|<3$Tp4+)(m8a#n5Bo|cfXOMP1=>s zY!WCYZ#oih5aGSWbm}1lEt1@S{qY9<_x3{*YT@o8qB0(9_b7htbQ z;lCagKzzl^jLCiH9B5Hc(<{ws2-h6Ht3U`lW6V2Fc;Q9Bj3R8s$bSstKJO2aC-dt> z{j74DS9F4TjKcSA06SjTZUOZD*s#q-W<3T6)9%xGZrK3)ryq8B&K_QG?w?d;0slX| z+${4@%~dVZFP%Kodepf;Ijlw*HPm3UJ+?ChCO;0Y`6YH(QkyVCQ}~%3NFZ&O*^Isl z4w$n1rAyN8c`XG4J-%s^*TQH-(iX^{61l=P_;;P=E6P=;0e-DHc5uDs{Ne;9YNigYl znK?J1Z?%ifzWop1JJG@N4$Q_OFLj%KShY8~w>?Rg;_M`R^S&Nyq^jM&M|1w;wJIy6 zXwgAP@Z+&8}a z;1!4w7G?LJKp!9aJ}anH_BOchrW>@Vl*BK7|MU5Ptn1BuT(v@}`Uv37;(qy7St>k3wl}ENv1Zg zl%U7g!Jp$3-_hpiXr!RTS9(tbcxt2Tv+_z{uXdDHE}-|3Y{hq8?vap^*`{8=>=&51 z)f}1f4i@gui+FG^ZRJNgk)Y=I}I=Fg+Qu&m5?tMju)WUJ1j&N zQpA!?4HDET;U%znk~rtGMu!)dz~13WmFYWx_!{!nA!uh;J~R9gB=*+-ut)quKF>Ij zebu6RrPAJFn&}S4HZqD;j8y|RXLE;O7t*ImS7GkQyIapwVy!y(LD1{<1-aik%)K3b zA&>j`oJ%GaB{@kgb}mW4-p3iv3_$OS>RKjm3jL{&Nz;SxCpe44lORm$8V)v{#;P)= z0Hg|9%BtGoF-kg)({^jV?d07xuW)y|v(vN(t(zb?yK>OIpL_yq<(sa9!^$)_!ToGq zJ=h{79sUXddkJxr-vN3{D<3lSMd0}HR|j`^XeWpsDZ*AN<>gdGg)vNzbm>*n($pA- z8p8DhKWnjI4t`NfT}_o` zX1{xdDFyrABJ@AMH{*c))GecuwTrvW4lL(1gneRl^@C;Gzi0GEX^nY(gEj~O{ldq= zW!+z((BQi7K9OkjlRUOF;tZimj;-8Ef<8XH5HG`msUmE?rZ%IKQQjO`#E{$EjqjdAkW^@56w$O)$f#sNy z^Pu@g9p)FXDZbRUpP-LtJbmH1;SRV42qMb9MxtUZ41yiUEj`u1-aHuwuYVuC{3jo( z>~nH)4nB1$Ub55&PeUs7ctOh5vcR=G(=VYp5^!CV6n$1WbDHFIaH?kRbJKB2@H%lJ z(UAzNQ^6YZHoXP?JVCJ`rUAkcGO>RY>AKpg#IMRI8hiZPH{bIbk^Ot93cwrR2)@<+ ztVmV$(js+g&6vvJjj5|WkoFU)m!Y}1b`25J>`s6VvTxp5Wz$1jwML6hX^VXAU2+6d zE!pnONfzk+$s%>vb_bDE73{XA9?uiEMcH4|YfJ%E!10aN8q@&vhOp&P)HvnI-JaV= z!g~f0yvB;XXmbbfI)6<+ur6yf`*oFy0>0rZd+HfXO1gENivOHG^)0nphrdwnyTH$U z(Dw^}cF)!JCL5_mV$1$C_EYva@U8c+qJFbKUrS=d2btA>6*-YbwN5qeLYvrpxcttiY(okrlLh{&ncS%;neDhiRFbaZ^a*i&uoTei$`%pHAeQ|BhLTH-|&`v=6GG3ELgl=3q@HUG+DtG zaO2KR-0=K#Hj#=*e5s}-AXJj$Da4g#X{2Kp3J~r$JYcgK=1W&3a??e@)wua7?|5U`))aV?$BRQtbWM` zjcpgBNRZjRe_8(?cU{3`CW{_Sup?!eXC1e1=LSy4yIU;3%K?2nWBKe&t-$$F!o(5t z4BadA5^dx6@RGwMu(#G{j`bWMzGAs7qR9^h$1)H7@;!sTn+1*So7rWK8y*^$@?gh` zuAIiQLoMPr(S+ZICfk0iOnxQWIfkJt4*G6ux0qP+0rdGI(z=|CDAj-eu`7mf9U)xS--|K!7dj6mS0xEK9$Buztb}v}y&j4t zDu!eIn#mkTwzZ9HMU@Z5U%N;z?XOb{dVCxH+Ur zKTFje1H_lZvoo~VOW0-&P31kQuhG9FJD4*~iitP*+zW|+1XaK;er)%|nPnhnyQB^* zUfEuJVVqyEzm9zO@3K85j}>ds&%>B7x}%0;+ce*&N&jD@on=#^d;}q3JXB3QW%FLeP_VSk(^IQz>?sayZ!+pDfZKuB$Q4IwZT4 zVetyxvv8GRbh@CLey9vYW#Hq*5&8I4)ew8R$1T|6RBsK5=tTk5by?$U-al*VgfEvI z{#kERVM3f$uC0dYVi`KF^{DR>FTy+Gw9okHi1I#8iv|oWgQl<)a;{zH$JZ+aHu1w% zDjm_b+oFE{1}=M*>fZo7FDG*}vUh+aHSw+KxAQw^_76nUTcB)j`e!F;j7xg}yw?F= z!rf0Rhc&DeNy>#HhcqAFlRsL>z~gs6dfbPoRb!xm2imDPTq?Khj{huCbgG8(LWz&I ziu&0+XhK~z1bqD_x6(90o)m@-rG?Z@!ijIMLLUE1>eHL|cPw?ES^#-h`wJ_lVP&o_ zEvFir&Z>BWg(Zfj!-F?Z7ioG~h5Fzi#*V3Lw>+vYHb%>lE@+g-9x#IV3)+I7^xoBA zJ6HlA--1plt&QRoF!&`R?QB{mQ@>=z?jv&gz4k*2t>hO#UWqoQE2*Iy`BtCY;6hmr z^}c4;6pqM6TURforM*$i4I1yA1yX0wfl_&0N~xW)o^q~Vuw(7rm6vt$DU4z@!1pIH z?CO_WphX~6(2Cnk!I%q2KZst%(+j`m1>FgR2joRy>se=wCS|JR-=TIVa7wGw!<3Ku zdLnFew6#g!<1qU2KEPrqdgyd=+_XQQ#<3*l*t;(}^Y6NbG6agHStNkx-EnWb9B=kT z+3DTvsKwi@m!l#Im!<1|&C5t^ZL$mCU$1@dM~s159GcH%eba)pxI%mRnuvPA55;&= zB23U|g7kG+>V@m9XG-!bX4=~3SREsW&RL9VUK-fUq(kxQz}FX_ouIE5)AUR2b5)U2 zVGE^-JYfwqOAB7}$`=RijK7$d4Ro75FkNRaIYmID0wMK(0Z@+r}CuwcaF84c&kdZVZ$ z3f)hH*SyrKgS3FWNkL$SR!(cFzMS{)J0G+)F}ZkI^LxLXmFNA?CsxROg2jHP_jzO( z&Qx!*yck;$$N!V^45@g<#K$;-KOG;%fsbz$*9BsdAZN8x)_=@d9=j5MCS)Ra@4mTD zHZ37e2FQEJ?jQ(l=J#HPmDv356P+5-SG@P61yJxXC{~8q)qb*A#Yq>Hh-f&m?`tbp zhK(IP#OtiagEn~bNi6JPr&@vUKTw+gYD>KSc(vGYPL#sS3fkisi808v^jhDKqKlY- zym@}SiL5l-LL)MM{>5rSf-XZ-Pf?PcOhqe?sW>$IAUW@rnH^x6HWqFC!?Ms}aAhbl z@5!qFP&UbJLtH$G1Hb>;J%3GVcg0bSrvOpnnwB)C$W1gOD0ri<4m9|CKwbzHEs>*{ zBnzW^7^>_J3MNLw5#1iYf|+Bzs^f>zw7#ks(Y&6xxxBb0SIxiw}vK@V`?_hr)Iv}swaZ!3ijM7hkHlH!r zSj~H~i^$@}vC;It087^rdiG{oxO2ULOU}|`@O2#iT=$GLmF0Qf?ljS)QcTYReqZ3v zF9_J=ns=UWFq)?yrB1A78BHfI!rAg`U-Pz(p27k0dLaF#3e{NYF~0rMG0fZ;VS?uY)nmm%?g@*TwvqowC?W@!xHTnw2jslVfm{Z*OW ziT#e?7adlG`FOTGbNV&%EuGXjTh26StMz)1)GhNfiMh&U?#;^aXTaCTdH0kWMaMc| zHOVBOeRc8-1?QOQIY)+H^M?PRzXIg_YlXk6-AP@(@~Q9{7PFz!7z}Ohp%wW_(S65d z7r8Ubww#n7v1d%nG1m-f1o|iCeIXAqr)=iMe)Ny*{*2$i`?m{L!i!MuCFiE|^c^Gi zC17fmMX;eDe$8u``TG!%myxZ5B-Qq#7R-Kg(7=1mwmBFH{W0oCUwAb47@2oIr+0o> zZRRhrUcugE_aTbdquDqWe58S;@$>RZ6nM@p@P5dp%}&hE#Nj#e6nHU6NlXP*d>I(ow@r(+EUG=ol9 z8V%#z6TQv5ecDRn!{TfSvyo(6+Uz%BvvNcO_eGWRK zqf)F|q^@(F`qVK~7>FLBy*P%uUBGdZAUEIfe<(x?AgS%dF7+SypetSy050~O5cqm? z;a(|4^3a+ogFyhabrBNg_T(;}q3g~3WcP^IJRmPl>hp}#tjCg-4VW~|32HnwkA;Z{ zO`9k?;dHZbw!O!tr8gH-k-3%l-m)+_Sf4d-5|jCqpB&}os_Uh z6i$}Mkj2g#jU5*Sz_Y~#Uh6v+TsQ~FyS;!KDyDkEZK%mAaCyAc6k`Af0sh6L1fw-E zV2zYMD~O!mNh+SkXbA!S0>xdFaylJ9E}}Z!Oe=>v^6btJ_)-0{nWbot}OEBUX7G(Bh!yKmfj*EA~ z>*N!Lm^T@Hls-{jtOW3W;ObK$g(?RBUDHSM>)G5cQEP4{+T`a;EB)W`4FbDj2GG9- zj}6ZAf7`8jW$xCrQ35(*^t26lD5S-$i{}_;Z6GcQSIEh{rZ!s0ia*}|e!l5aiA(D- z-YZG5dWdy~np_9IUvex_lJnK{u5NF%wkk4oskxHWjQZC8YjfustNasz$W~;cIROEqhn&ZDb!_Fisa~(1r_MfVkRaX1|-(Y?}S3#dBE56 zCBgX4$pVPKF+b&MJdD$>t^8c%H=(QgFW!i+6^cZ$G(s_IEoTf`JDd3j{!t zQkWO4bQrr3LL_a4^7b@~a!Ee9acv4)!{U+_N2{BX@~L+n(F3pV)EBWl72964y&h)B zitO>k;_I{DZchvU#jB{5QpY<(>0q+{R|e7Lf(rgZU@?5@D0blRd4>2+7z+C^YV+g3 zfCP;!8WtyoWvfI+9-g%)`EMJ#?18cFap2E~bPMwNZ##JUlIZ0%R9Mx%zfY8ihEgLWZ>P04iw-=INMCcNm5vje_=mQ)?)>YElajU#F`cfA-Cs-ik&qvwM1U%UmgjGv-t`h(zR z&SC?!!z9L8Zw!OfstsLVKIBP5>$KNgSBGE~dfG5bpxkld+23qN_8l?RMO}I5kdH$z zH5GV$6HBC|ycvE|^f^=8&m;vqdk=#J{!GvKFWw9TSR(bQBuy7J{?QVBc`vv1*5-vT zGbkxuw=^F5D`TxkO$7o<^|mbh!@@YOWq<9sEW1LvRM7dPlJSzvbAexPLFX3lExtJj z9%nSD8<>0&#QHoYp^gLgU%WUNL~W%C3-68dFfDQXRCIpQcg44QC$4iRVWqNFTex5C z*{|N~FoM{$Lq3c3nGQQ~<`}oH?>iy&**p(9AOT+w1s=&?9vrARh4Ot5_UG=kNmt$- zfN;nAFJ7urX7TN6b0$h6(uzqZ_P;xJtD4^qza8a&H)e{gpn(9XOvMp;H!;n2g7f?_ z7Lz(ciGX){ocQCh!HjDGWh(IcrqZNs#8~;%c_EGEoXSS9yvI?6_r@{*FWv{kfRCS< zw5dm+M)|lLMnr9I_0Y->Y{?Gw6Wa{QBrZ!ci&{$1Wk)4Wevc<+i{3!`Lyy6awf3G$N7l7C$MMi$Kg577=2V(D z-=li1Z+GszFz0tGP&JubBs~n!x<~#t0UOE{lO4o~4TvUTywRjVlQfg5PfceQI73JX zSes1@k1Rq{?wt%ViOpqwz}K4+Qff!DS%kKgf>OSpji&0h)b2RqL$Lo#-v&Ib3+v#t zzrzN-55iP9F;7*gQXwV^-MoaMiGbvh9lx-+FFZMW z4cx$Bt5m;OM544cIaT>)gJQR&=fD+1jn@)+{)s68et#(0UW+oPFYYnQ`g$nq6E{WX zEVM;Up!Hw80%~{ArE_d!*Xr&e*ApL!TR_9+^u;o)@7H|Iz!{B;4r!CcYH6eYNc1RY zAsB33f=rU(Kvrmu?&Kcs4-_*2U(c&z^$5ZQHYqH;@)fb zJO93#+sy=%r?WBLE27A%TK8;JU8U8Em%-G_G1{YA3i){hd*RBkMx1FV!KQs!=6$ z9pYnc_OFfX*&{J^(>S(ehE5eJZ39+e(~>Or!Il#@VF=*k1)12Dt&(y*H2Ma6tr4d73*^-`6{-cf8yE6On%{=1k zctKNVCA?MaswJFLdsDLFx<3i&Dei2Bm={Ww0O>QLHEZ9J?S&^M?W>HwuT!d~U#Dh> zGPCjHn+FdX!{oha6!87NKOXH+DyTvIu1VqQL?3@C$OZpR8^Ry@FMSVvQ;AS>h>!GZ zSD$hB`#Z4J6r^{*$9^1z3NN1ZXLw%1v+RWl=b%zMm$YAPpV|r<^^}H>sF^%igC6s- z(FMNVbREal+{OFUp52anH$1e5`} z40!E5f09C)u>VoXXRz6qzdr$TXZ|$IhV?RMF<4>9&rVHUd)Aw`hK*e#JaR3w z#(ida$Bc#?J;hy7%c&G!*bjWX=&bvCwDE0@>MPL{u0H#r7c?J3vT`5OfAKcm=CnC* zD1|Eepeu;5c}}tRCEogwW?l)NRxn->vV14@Tb9Ks#j`O)~k5C$qdyPeV<`){)S7cZPZlMY_VxpAHYH(tT&B(L6_ z-jjhgfA5x#NqxLl4;1n{TKP^H3#W0UiVwzLo!-+hR-zBrZU_37R#L-&nE-#jDS8;1 zbhkeFN#O^Mr&-{4k!k34S{5kh*SxJ@>Hq4V=`!t8;*|AcM7*Dl!O8VUbZ$y?w?9fe zvQ@&c8a3*dP>JyB;bh1PKJ(LYEk$$bw@BPUQ96d!?CNFPbB#0OX9xMVSR$s*cj1xCiCZpsNzX;4qLs_)uj0o&KC*N!8So9l2IV z(72{of=WHKBlX)c0N;Q3Hj=HZN7BZV0wxQcIuJdXsdAVqpvC%{x3x!X5U~F%t3UTX zt({12H%s;8W_nP#PzQHbY{(A!u=raBR1umK1;3>s?(7dK{kdx~myQs}>^i9A>zoHi z1>VovXFO%V_jmA9TkfIDsq>(A$Na?6^$cha*w=)H-rR4wXl^9~Umb&Dt8IY!5~z51Cy1J_Ovs%yJ@nI? z-!>2U&|UBu#w!TD2f0Rgy+)y6sypqZ;%rxv%^Jy9v2~+jiiEb9Iur5oeTs)efZrc1 zrgm%K!lSQsf}N@PuzT%GZ36Ial}l4|{caEVxypxmd^HXw%*QS* zzd3g*=6d&mQN89sk}>1}Bo6V49xXtnX~#3bkcJri{LV)>8zwzDkiG+WeKl=8RJt7a zo7Ear#br#fzpWQUpc3XQzvlh>)op77fLCaV%~9wx>^1()+_1(akG&2tfp$P+d4%h` z`UL&qZ`lYEJ7T5?ce5qJS_SuVs}+86-Px892e*AQqYJRGBEaX9oJM*p8=h69a6jxc zALuH@8o;-$nl+4G^SWmi)B^J6&*{KtrVTQdUlL4*>Lu#PYt?s~xhEBSB4^&S!5W4% zpWVZ><(l;JkDy+kF>H!cs%4uVl#Quh4BkPFV7LI!%W#nb^3O)YgA?iW3Aqf9 z!b)ZR*Sz9_KV4S<^lh^zp-YeQ9VUTT5YOqLn9k;B$F&_Lq&AQHPR|r{E2t{D1$Dl< zRa9F=)o~svn0ob196nrPV6c!y(kHPq7x;RS z&KMj4Aa4MwW>~L9Jvq%m1V=ckUc29cq3hlT|A+x%|r&()R@(Lm5-31L4sL$ zlD_kSptf7IKip+1E|ts)3-Iy6TeHMbNQ}hfdVa3(noMEdf)*{RSB~nnzNLil;>!T~ z&MkZ+buAMb5A~+qibS_g^?Oy+kP)@hJYqW!qtqy7SX z5!bOkF}t?;Yyj}Q<2T)RG9U^E(WNdRPsf73HUiNi@&swGd3R7}8vuE8ew8obENK^ansgJ?m;G z1pW{64_6iWtxgISjBNfONyMMojnJ$Sb?3eMEplzx}}V;zS&b#^W*Ik zBy88O?>2?DHNrNIA5du|&A|08IQc$Hd-9$-9_nyRutz`_(u8r;i zKTkl!-$1H_yuZu3So8QUBq!-6Ab*+(^XfJ4pk!ps8~`ta)1lr;uNDv7gBxh2m0vYc zDc7*N>>#@G79(q530`ov4oDT0v+vJe9KY4}uIwj9VY(sBL*9oEVSSTx`uPNWe`hBz znf~#dn(n6Gr|q3>o4&!PHrZ)gx!1h4_EU>5LrDMVdq^r`5`>3VIf_+QRzFa$$hLyo z_Dj1#9HM{}#GB%-=v1#S1F96Ct%2h`bm|kOfXQ;d`fpPI?@ThMb%LGIz}IgW3vKC{ zLr$;g=Rf;ui@ezV3xCIWo@_SBsT2eGy7r?aO8 z>Ig1!y>`>DP+!XUnpZ&aN_7fAU%KwFFS!%`3nCZ83u%--@WxRtTKZK=?fijd;Rn9T z62EXi<4OnZdSIGH_zbBjr}i1E24dp?moXqPF<61e_{;tgk)sc-4vgP1ZSC`3Tneg_xTVQ+jdhC(QZy}{He9$- z2&DAB2Z%WI`<7tn=d6@v<|ZxEV8cEJulMS}$77Z6Vx}ES@7>cXM2ol*=ODkTE>9hN zcr)*L(il+w@@V2e{sq(9u1RmC?*WlHvWcs{?EIs_B7v%;VH3x~?Q>TW6yJt|!J_%zmE^I=}21FwFZsp_DV!Vkk zF@fCGy4EBta;U11_@*Xtc@qK;e1C^+5U({#D5% z9RuLa!Q6i?%Yl$OVyaBg^0_Gn{VlU?OP}Z~l(QS%$>&auVsV<)$-*+?P{j8BF$LOy zblGVJhpU=)1o1@te53>T{=;Tgl?{kKSw5|fgKG>w15Qx1IFm=((Q955k^P>RO9TJ- z0oymlBU(1Y1>9ASgIUmHpgDW@cUO$v{8`t=6`k57^84s^aHT}5AlrRV`ss8pB34j* z=noislrUmeCO^${fR7jbM@=`Vbwr4{dmiq-O!9(53D_ASA|bDN-8?Ls0C{hx=nFpx zVWsIto>6Woh5t~|o8DQl$t zgitcw7Yn=}?3Ry=9%>q}eoJOV8`ogQ$`niEV_zz~=DqgwsR86I7fq1A_(kr+%t&xJ zG^=AG5yz{_UphaYw-PGFl$npWl@m^hIF8kN$ke z1ryS)kjxNqKfuglWso0lX62lf6uNQ!*Q&7BK4 z$tMmWM;6`2jD8weO{vxERdo4zFBj3-Ah|D3@vPyPdZJ#>^taxZi#OqZ7f z)kF!ZsR{X@?-Mdi{hF7loM;@7*Q%tC6e&^p)-_nIoswN(Dc(Fbef zya5^LM48SaKYPsmUk^-XcAL-8m$iksP9IMOl#`@efcJy;Otxdc$ZhNoXCX2OuXx2qkD*<0$SfPvr(D%6OWqYVgAJI9`s;LwNDHxZ% z)>pRI-5QWrM2SkLDk zkMY*RA>zYQ>4sc{1HQUh1J|^`$76{$0V&HX&!ZyJmeiddGEEP|pU?a^Z{7#LIYQ6? zvmb_rS$wQJ^@BJC$@6?Lkg2PJd2An);2j!BePox>QKaEryABzD-@9kV=#wd3<4Ut>}}2PG#+qrWijHV4dUB!IU!#?0TRu+n z$~F6v`=rn1Xq(y8=zdrUcgDD3aX;eDz}9y%Y0TFSHC&UvFRf%+af;m(mh;aud@j%WQVo3mFz!Z_Okst# z$o3=E{9?^;HoxvEt_AMRegBiMf3<%rNE{f zEgBiKSUGn`{s2laK=&zcJ*PF@M*sm$G9mFG8{A`G*6WwwCGhp}Q55f9h3xr4q>gT~ zuiT|$6FL;Jf}HPbeFM@F54!+(n|4Tsr5DDuJ@T`evA0$h?A<@2!YmR~A}oszqbZ4-97FjljtA3A*pD1k z+A3IL@G&oBCRiIqZeJ4`H%>r469PM;68QeQ>DNDu;_U;|{w~Uq6o|A>6$L+a2mIcg zU+`Jc5Vr#8>r+lUX+t?akr2A#H(|8u;f>I84pzw<-DH(4l4Ma#bYcL>0QV!pn46Fo#VRg@tgM)@E<6w zS^#*LFWm{lD7I6fXklhr8h7BuChSoVV!0W#Gj>Stv8DiifA}08dWMc3qfzNl436VToo}e1Mm1mLD`+Ea0?^x7>qh9{{fAbz>i9Nm)9sk5* zFILG;bLJ?wQjDQBh7*NaCzuI|fJc3#XTKEHs}z%|cf)jE?MBR~a9G|83=TyQ$wV}k z@s$)-^6+CB*iS>i_oMjJCb+u3kjC9cn80g+&4bXR8mza*KfUI4N0Lry0N`at3g3uI zf1gZoTh+7G{)tP}jR!?r|2)Tkx2?JBR3;u|c^+@bTUQsJg{tn?ZzE*g8#iU{O0FK?LJZ;8evbWFo``HY3eem)^OMIjLZN`X1)JF$5)S&ZDV%?^ z2oPH}oDerMPDg#vYZ6B1x~fee!qbJISG~LNzYc}=7k_NEmy`>8F_XAc8Q)+MB@lQ`=jD{@l^2{w%ympGm3a z?sW5^YB&iIe$87Mm7ww` zmL)8eAj>G51*+@7JQ9B;>V_@z9L085LVum@Nuq6S;Ps`BrA>@N??%@=&MmS`>B@*B zx-rJ3;u2a54S^+(|AA*N6(`mhA>U*fgB-}v=N{{CP+Y|c_K zc+J}y1V;$S`>Bir^QqBr0@C0ch9afaT}3On5A&~%gbAxt!q0d62!l2OIov<=t-ejF zqwIAM3(gWZ(-AC-wiJ9fH;!ceAMVFmB1yES^X<1|i@zEi-4EGg%fT}X*rGaN7?PDPlHv14P)64RR3BzjbzAB<}`=hk{-owL8E#3Qz?mVye^h!tSRzvhJsp-Bbg zwV5y$^7=`n!GztYt~n~7&@XB;hOV^*IqkUoqXA+t+O(E_lU*L%FHmRcOG4?7X^H+M z+Vu3qKy>DbO6T1M;Qgyk9>?bk@ile(2kgBekA{3DChniOgV@)+Cmw-M6#)7sO2_c0 z`@=3{JAb{Xa}$L4$S7?XzpRC0s3qgeCat=I&Vv6{@~Qiv#-xw!Qxrz6dFW5H^6%4n zGCbtE)=!+k>x;R_N|0ZR<=|HlUKGp*+S?OM^;utI_cgDj&leFu-s?uhx|9M*)$BeC zVWcX*osF*>TLK_C&ys%)Q8IMhN<@-aVOow!x57AcyH!kW@14F&trV=Cxq+`;?up>C z0N-C{??rd@z}2%oBh;u8k--kC*jkjMhcklv;_|6uRYDYOv}LtSzw1yNM#}UMT6Z$=`NKh; z^jUwUSJ14~k;3E0HIc4mj7gRfjn}*&n6(^$yfx!kwQTG8c_KI!4A!0%xi&#PHN}~f zVk8IhB;i7R_1|?{3*qLFxh)H)P45Nc^v)YHJdfM`uXt%iff()!n^apTOcE4sq=}0Be zWFI{>C4X=k?#DQA{r&v%=20p`0kNhE%*BbLSU0kB&Rj?}@cV;5%o+2gRAjHtft}+W z2tFmnH2+`u3Z&P(F=Xm=o?mD+n`HTGXsMcNKF*XL+zxT?!IRP;-~I5p7eS7K{B zD+Ld)Qtc+@$Up%x<~8n>${A- ziq9UuWkqXxg{LTUdm=<%6;yqFzXvz-KfI6FHA5Pz)U?0)P91D2q=Eop&CLgCoaxVN z-kuh`VL)E4mDMkZzYPZ)Bn^5Yk!pRrC*2#L>)Mlzy8arX);Q(#{-mVU)vnk`tS`6F z5XCg5J7^>#g!WF>nbTHA`CbY9dJBi;$Pky%PUXiCRc)w*&Ol{SWBT(D^O{#oxl#g< zmv-OV!GJWy#S^D9_3Wn+DH?BLdun7>jBfW2LJ|a`ykkx&-tLOI7WBc()W1H1QXQ~b z4RR-jW@#w&3OTG%$@^N3_HhP*xLoazdneh&{h;a6iAx{kSw$L)!LkPuZEhvkbn=l76`zGM~ z)iIpq)E-V`2k>^$E-`UjHT(Dh9(ovvul@UXSfi*AfOqE)7~4i$`FNdcW(7#uoCB~a&EZJWbikjt+y?R1 zX}ebJF)gS4(TlCo_smO)R3%7y&0Cs?RZ#%IyFlA=D)`=Rkkz$)W!A8EribcQR06ld zd``fL8P6zFiPnr!S?^9mOqs22#u{^(z&jp)aMg%fm@YDoREISK_7qoUH> zqs)=$)We(&*+b&!eEKzSy#Dv*d;nf(NRAY1+t}n{e`h>CwMznIh2_vzl$=E_x24re zw9>~KO|3L!CCqFeQDx%k&`IM!v%Ds6IKybZ(PQnlt03V0D^F1$3W~)nRWuAEtF{fg zC@m%SO+e^PzK-^t1{;u9vcEafyM70_RhW_QL92@f6>GilY#mwGF3AU2ZDB@=s9oN@W8MmIox0r4us00VQo(wB42O-F z?I_@@XA|fGyyT_Ua=OxwHFv8{Q$_Jb?} zc~mX{FS6H1Yso{`S^^?JT~DG-L>Jw7UH(PlEj9Ypz%!P9%|Y;n40t~NI(O+r<$(+$ zQO$FKEI-Madl5!2#Nxlaz{j^1oo)3xyKPKRDxSz7(Bdup(THbAHoxbY`(a-+NJ z7@S_?PY#4}+Q<>O{mDu3)0_Fe$DkH)Kwg7#OEI*$9K&w0Wty5t z+fc2RFOIGI+FMB}-GNF3<$D5$J%4EFXL zDzlqm;~I+LLZ4I-pHOL@;L66Hcf32a6i7Rd?UwYOaRrojlh)(&H9@+KfbXxn=orUV zc~s(Uh)mT>vo6-d$E&Um=10HwgJm7w%F84D|KvO7U{QO+nqoW#U{Bm>+{4DtE1+IJ zu;$AYt93sz*gk-{=dXO+LsL>r2+o-~GSkR>w7Uw23Qt8@2p6bKd!_>Zyb!asBr`gB zHZHgaWm;Em3L%v7$e{;!G%@@vP2Hp>!1hY36)IW?Wk?d14 zG<=Wkn6`h`^m|Da{@ss4Vb-n60??NeH#YE7JUxY4c%pCL(31~GzQEvJyY2^E&erDJ z+#-Ef9^9{DO&3mc>q4X*AbOQfi@6;Rjk?Wr-#6{*Ect-1hZN;h+6QTH-1x$U72F$9 zQgKuG?Jw>|Uh|$9N-|~w@YcqqvHCz=-edo3v4~e`Fnt3SU|GUkfl4@P8)(@pV zDp}+=PJ7w-Pbmn8ll|5gal1;E01v-=S{Q|{F~^xsnriI)-6V5gwF!U@wxmkCBp)hHgZ5Wb(kH<{ij2Fu>ZO07+uvsR-4tVxG!*piyFIO%8z25lBc8~yh*SbPr zFazkMK#2`(M_nHx8v|&u!W0_Ghc_c!?wTG~;R@iguDyQ{KBo}|$J}2$XGmEU(ORox zj;!+#op~Ps?}tR%wZ)E@)5-_jlcwG;)qi)Rr2<^nSzq&7qT@jW^7;hW`kA+WXrpLR zB8LUJGVD7pMsvB#FF89mZZ#*D+R{IN$Kl1b#mxvM!>gC>HZWgV&O`-jkH6)w@6QN= z34DF=7qb|N1kUQP-AF=q9S!Y(Poih{x&Nhg`fq(-^QKIs5Q-s*zI+S53*ynLFU*&U z(Tu?xIp~mC)f5)h={2llm%CO{O8Y8$mV9INn zpzi(+Gixpw8~>!`!$+?_pFR;MB5x9Q!8@2pcgRmSX{Gmid6jE zY&3uQRP4X?oqZ-3NCVK9@g09(0z762fx4@~HvKgZ<4Hs8&o(kxgux?A^W$Huo7BhB6|PJ_=-9a zXE@wX=olgR+uw?G!1K~L>*roPcFehlj^(8F$3n*8Cr#>2zUe=_e^fLCaf=te=f&*2Vs5=TA?+Gr`Hv>_uAXZOVs4CTwuCHQ4`rpX;M6mixl z;PZ8t;UB20rHM>k?=@){Nc+dW&H`+v447m z*Uu1=ZIspTJYT^(KzArZ2Bkp7}G>#B3 zi(A-EPq6UaE@cZxH?;7O2Qfj`?N$Kzh z+-i_fV{0Pmi6;t zPEO(*)7XwJ>j{!SC!y|SXi|HubOL_8WzMDR%Dsaxp(52!VuNcMDjE-D zKp}e5e*oVvEPPpn|M($<=oT4#SwW&9E}E<;N9ZnLKoMi_7brv3THl_455m>w@^wei z87(rOdrtc6?OT+?wm+Z72F9Bm)S-?(yUhT<-b^+f6<5_va4FH#kGt{m7^D$uEFJUS z%tt-xod4gZ{15Ma=@Z@$E;BR`$piG!El^u+Vy!!}z{f4ZdN)6KhfeHqVEp{tYE=R+vSeUiM|Jn~i zYnN?+yiA5F(V%M|qstA7Wxm2@;jn(u4#luW3w1W32Ah;S{PozGyw^zI?Q}^ZL0Eu? zRfQYX?FRFV>-JbCu`t^C8~At;z)l@->V@24RaLYPCFvo?TY5V`?W^{h_asY=6Ogx! zNUK)EK$pVMVVRd=_$*i&L^NG#p#c0(!pYx1L=au-jBF1sR?suXbaKLyOqB)^H3*xK zS>{C~X9iw_s{g}#=9{TolpSO=&Bex24b2|z?1CV3a~t0vU-L>e@sa}a+PzPxiw~&6 zRsJCyNtR@7QBN0CB_7N*IJzZ2UFNPDIxsryDpmA*4ax7UGsswAPwKa`gFq(#q>s%;iT7u{`j0N)W-3HW)K zowlsq(6#c0Xa=!#rXMyTX7or)gwZd-?cec@582xtkT=%6RPz@^Ux#wzG;IIClIrdG zD19Vhz;1cLd|dk^Ylr93uc`n=&yPcMJM$7YldM~+?66FuyuV6cp0+qKf2rx1G6uO^?GlmO&KS_s$FuIHVkY98WSWOyJ%?wF4A(~aAS ztlBFlL7GZ-gXU6;EYXKsEBa=)eHr(d+Wehgt^XeQd6<%B9VKr5`FcCjeWRD2kmdi- zna)>@O-cg!g5E#=CHi0#DV$a|szme%Rb=)kyszm68e}<5C_V5nf(ryDjulNV0@ZPO@bpT^M@b!fVMn~KHMj&>L;I`zvE5gii z1(7TwBKm7y1Wclc-vGSiH>1Pn&wFzuPZj5)d{iN@JIAoQ9ZOQkN#4kC_R45ARhHk| z%68y?-z=k0av=4jC}{UH6-t7kBv3LW#aII0k1DE$$yEJbK0W)MtTF+^Y%OKKsSvr+ z`ZaG+YEd8{FIam0&e()K=!cBEBW+EAQ@`|gT)rQ+)E3E89>LscIVg=hxY3~vX7yT; zd(v%1_)FKb?0yg7`3}ToAYfl80`CVH)cBt!bWoalQ&b&y=wQl*UnJ=~ruAO)a%|~Q zL;>gv@hhFqU7o7RbGA>CJocr*`K+(Gdnmas#3VXR0#;7AatSXAtBsKQ!zzt`zlSr+ zg9OhypaF6d-YOo_zL@~{`#7Er{!^Fn@|ED+VW-4!Gaz@ZE2}=YZ{7pZB==5_1mK-C z&C)>%9FCrCla{LAQYZUk!#65;z7TM~vOA>p@qrCXXTd@nZq2Yxv_4k}+%7yhA4X0< zF{*Pp!0m|C^TYq(U!8;lwW2n?xICx3y-@vXVkQ`^{F<%T`q~lx-~{At{V}b`!AELC z`aTfqL0oy*n|=++Yza5R+~t#~Zszd8MDFSj_pXc!`raDfUqzrQyloj5{Bz{^AJa&b zu!w1Z=QY~Uqgc6^LBk-g?1sD2|9_<2WmlD5*DzpGy1PTVySqz5knZkokd|&ix;vyB zk?!u27LX3Eu^}L+sAH36xPlRn0oBr89YrfhJNdU+PX~Ew|muCT!ErLSi zHc`*249IPb?;_PTj3<|;5Fe0^j7VZO4pfBNKgF*?-aPJD6lONeg(R%{bi|l1XVU%# zeLXbi*I_YtD>PU$BX{g1OF>Y$zxRZy@lU@4*SDqt=-o`~=u*HVjg2K08OeX}b_45tgti7@3d{xDW-J_Z{-A)oR( ziFY))xL`kQ7E&KX4`+zGqb;j!@P<5%3cZ|CN+#y}r$+A%@T<=WLDf-I)Q6)Qs1 zv*9dS_y6~4=D)q^0@z}40QvAi|KRwY^9uuhH&4htC7XuKk6ANua`;Lt zOjNZCunu~e{od3RK8kgItW&m>t(H(3^~Nr$V`jdz?fHR8Msm7t$@8=QZ&G{9Zr4B4GL=oEKdlI5gVmnxwrPNdUAFGHb-FH;#p5E-B7tTfH5tBzXO>m9EQd~9Sukjy>= zeSSDB0HZBu`h1;n3SJ0}pbT{skpP8X^Ap(X68#}ZQ{PG0~b0ehMAn5&0PfKKu z)r6z+<5Hx#L@QOHF%rHKrlK0K_hN0+2ha;$=jZ>D_;s4sspD-O>7MvN;F}*}7#_as zVchZRQhHGOnk@O*G2vD!tUbeP3~$QVSfi92bL%NXR|toL(>p-#e?MKkx!&&yoBsj+ zD@h}FRCf4{2%6FHFtGRA5x*Ir*TikxRg+=b2V+$BH&g{> z9_M)&)S{5P-vJa=F9o!!SSGEi%n1zW`%&Hp2NZKH&zF|`Q%puod2BfJ3l|W=f3Eue zU5}gK+i#-);@i!9SRPyTOY8CxN?|EYS>}+@EUD7XJkzKdJdM*bPVuy63CHjq#k(R<(glxS%{#}1_UFUP|&Ef+bO6MJe zL4M1Pd;JY~VF|jD1kmH_R>SpY%M6$9_P}GL_$SJ&Nh-(Jvs*!6ud=?#DPVkCPiISZ z^YU%n2*#fXJtDoCKMi}5SNm69R9u-C5RYIh>2yVTb!p_2yfKiKG)Ak;6uCJQP7z&W zsCJI`Ts#N;eCYXSB-wFOIZma1<6er{9oVUn$quD^)@8FT%n zs4jMz;=pYL_r1*tcU`X3*~^?3Rp==~g{%oB5aVK(F)8r~0;=2UIqyaauJM;yWd zoQ#^k#@XdFjA(0Qe7@lCfuCFd^y}~C@^!BvUj4=n5GT}R37fLOhM9MJtkN_fZqSg$&b~LtFurj*dBd-D9?+D zyJDH#^s)rbhkD`3zr5R>ko3&>{L?Rjst5<%^#vF0R!UcVEBUFjSlhY%tE^7oBiRle z4$aMt&YB-trh_3rhz0VFi_a3T>8L)Ant@&~(rhoq6nVODz*wl0KamEF`;g^@8##po zd%J8P>jC2{B>Lsrf=#0FvA0?+U$8JV7CKNZua88M7e|1q8@B}9VnD-vteWdX&-o|b z8ty(NX0f~V?@XKpZO-!_@ZL&*ejY%E$QlpDVQqTyV=APnfBgD}a04pC>M~+t_+1ZB8j#3VL`;gT*TdQs=dc{6(5M~t_g2JZy zgJmd0@Jdsj$X7o*8T9qMyt~=_FNEkE2ob4n%|&K3Vs(;8pRbp|UeX_Ze|e#KAa7AQ)+RpO0qA5de)1CfuItz}+I6I)tmQ0Cxl_zPTktb%3gxyVBH>x-x*-IO2 zhfGXP`ybBVPTUnl`Y@+8;U?U(O47-|nX@f__hIM(dmUXvf&t@Ow&?4k`THy}*3?#y zwkQ(slZ3pQx%uZg5pK1NXP@jbB|S$jm!aP-_pL)&UPpp0lEEv`z zx3WLoR}q>pOQg8&BO>)mBDl`k*e9{7LV*`7Z&YUV1U4i)ocf9QqVvZm(9h?UjW#wt zKgJV#7r#nbt@L8ZRz_Ekqy2N=KJluR5zrgH#l*msB$;9i%MhVDGxSQPnb2q2F#AP) z#?irPbE|e>f_8X%#i!@R3DIhDP!0Q=MMVQRTQb7F=yb?v)&Ed0++aVw@{B_jwM}U+?R~fycd`Y#R|u;9s3K;TQJ2_RLjM~l7L zhi2~z7S@4EEzW#M@ZhlW;kIiMtpvSZ^gFJ#{tOch5%9^M_g_+($8p97i!=DMRrYtk ze%yiJ1?a88f;u1BXEH!^o2JI|G)J=^&J_?8qW8ImEpP2^7i6*ryI?E{eMgb^S|3kc z2=%r6&w<;VxJMx$uqFR0((!8w`U>% z@*zkSsZ|F_!FZ!XBeRKu4LeVds%SPB!RnhGd?|Tmy95fB%(4%4(aIa%86u*ln8bRl z7#2QOyeH?g>Y9TecA(db*>7N>pWN6I$8If7RAa__e|f85baxK|d*flkDgnJs?6A#< zS9wYE(%!ofdH3GOK?I3v?*v#w^}hkqH@%*^QDDzW=$>w7dL>gPFoR*!0ej8YJ#zrPs~XuK36>tf6-jP0 za-#~%KNDlFWhoyzIz}m>+%i~AtGdky@l>?SUYApiDxc7HG8$%_pk8k`#MI%;bDHaOt078mrRU27Uiw zq2=}Ft45UH%crB=46Y0hjU>d+XEgN_s99Wuc1`HUOucT8$fUK28#LO16?ZjomX+TYpj~>7v(OD90vNwPK$!)H@t&N zq1T_uMsLq}O)~jqJ>LhC8R`nqyP!f`&CtJ4A2x%&|Jw}7DCZ@yHQpyKDcMzXGL+RdR<2l8LDpbUnQm1+uTqz*@YZj6wyTAk$>R`9>55|kV^ zO5V^=0%yIZaIDcQ0;h(s+)gf1Vo+!TeY|1s)yfTiiSe_%2)4cPAQFAxCJ_}?6$192 z$5845dL0?0a3OK+pMtLm7uTO?IqjBsg9sw;L(Z8c<-MuiH+}B^R!i6t3BmlWZM|HQ z6>WyOCerSKjP6Ass!{>tf0)lSEaFT9;<~?tY|nFe(LIK8` zN7^?%*Y^zWPTGxOgtO03(A+|kUTY%II+NYhVI^W!73V&{n+(Y5f6v)e6e*M_4< zZQcDEH0OjZQ-uG+_ur~_+IA*{sDIddN?L$Bt#-W2s&sdx`DcC*!7EGx^zue27ht5Z zV3n&#!wtt9$q2Y-WDefnWkK@KXNs}>bU0Nsq%N@jvG;rJntbkl2h2A7Q19J5gs0KE zy{}_<8R+L($jCF`rKq96R|k~+%Ih+ABW(WwfzOer#SI0jJa6`ChO zuWyXf+>W$VInW;mg&ON^R4^f+PfUkp|6Eo7yWgpAQ1k@!Minf`H0OEvblM?OG=h4$e8t%=G9=t8o6#CfYaUfuC6OD}3-X5YFnV@uvPg2|g`uva} zBmP)2<(DC%p+mp&W%Qtz`=s0W#t+y#r9&eG=uJ7#zAa|{Mz@$}HLb12YTXGvd@ zYKPk;i+ou-u4nt)pllkWBt4V(TxXZ+T}|?PB*y}F*C{|gyB@|>67=~2#!WEHN3ESf zLC{LawiNosIo!)AvGkwy=6hnl?mtcZfAzR@O(pRC%$a;eZz^T1 z>P0?vD<7)6=tQ#`pTz}*W2aZte556qdJNC$@Qz0++I>kp>pRf<$gDe;%O zoyp^|!aCI@Bm7vVL=M$(27=&+p+Ao@n}%h@I~4x_J-$QqKAshl&0BH(U@a&@6VQz@ zS|$T+qQKs+>LPhSFFS2N?MY!q?N@ktr02@&d$^YLN4&HnEzA#ZC}XIfx(({d1s5UM z>4}&~YrR7_k~$|~({N;AlI5oDj>HgxK<^*+IMQ@|{XMXTVI4#!jn6kMzP}$U$EXGN zI_5-u3jxT7vhT5_jpEf@sp zMuwqf$u9^Qm3c&9ZMwkHOeQ~45?35_*b=WUz)|GXV*t##l=A8F9&G&RMiC^z#K-X4|_ z?xI~kgo&6ieL7I#<7&-L7-(9<`t-et5HoaOOo~kGlsvw({Nf~uo*ndlQg`G42TGOf z{gAu~16BJF%J-d&=jilBU~diHrXXPc62@5waADj^(0?yN zjsJD09N5blfyD{vMSWvxtpA;`^>)efOAEiPM7CS93qnO>CyN|>5{kjwa52{;T2cm@ zTGGQrlnQjyKIKUd=X0CdtM7adnIG;ULC=T6F!a8K=h3y7GtMJ>4i=Lzu<4c5ZcfO|5}4xo+gVj~iY@88Yb9jG@Yp^n??>dO8db^05;Jc5SYG)nQ& z^wvBy>YPEu*8OE{Z&xi7woDlG^NWpXw-dZ^wzk?(in=JH4d z^fp78L|rLdpICY9g+y7|TWvBZRy66pJV1tf|xtr%eMuO6zewN8*((X!OsG}Zq3{mFN%Kb--+l-5Wp z=7@6geg|?8uicSIH}SMrzCVsn!(ny7de0XRjhwrtuOg@iF>bQ4q`H-dwFLIT*@c=} zu(<5*ybKsY&tH@VLCr4(o>TsxyjvzP`16&+%yhOpz zT2VW;vcH@8>6ugtLgl7!F^8|DGdRp9&w6b3>pTN7**--2($ol26xtOPG2gBW`AR#l zb5?-9AI0s1p-x*7e+vhtInKOl^2ocI1@^nL71%pV6l50wkiVqwWn_ofT(o@pnSJe! zg}E<6W584UFZdz(I|V&@RPqdOQkLl?HVjcd{>FgGsaH%HP<9RBOII#y&fHb(oCAHo z<|8tow-0>SsD0>J zuwXUmaLk`?oV-yGK93~Z^Th%7Ld^Xb^9P78{9;wCzh8@h1_oaU^*IHtC!YWPvIP|x zu~3(sXLr~E545iu9zR?H7h+Y+=0zg+hpQLGvvydw9l={HlNWWNeK(8p+6zsxSZg`50jaW)}kiA-npL*6P;aeDqPf;!>wkcpieo&}Z z>*;B#M2y-Ja%;m;_3Sqq?!?cRb5xD!jG*T)>)Lw%&)yeh8=fSL3Hyv`xt&D1KYte3 zYvvHS`e#x1-+CxbxQ#IVrifj}3i;VvkY0ygbb>{rEGl1uKo>Vz*^R3chFF%Pi@#bg zR9xDK+Q-$92Il$+5qhVHfZ@5UFwyIzzJUSy`CTXL@kSeP?<3ra!=K&I{ zXX$^M%>TS>v4iR==f;FlBzENI;gW4Ju6^O8iyYbtpyHVDW%}pPqszXPkeC4GH z|8KW`+vqttsL$ahUxib)84C3EP*8i%FHMOd<-y=+d@B`pq&7?ahab&8!147Rb9Dgp z>L*JYn;A8c&AUB_v2qB+XKoLCE__qUK$lPO{N@Ftj$B=ECrP|@n*&uJ(OI5ptsN`l zlr^oZfnX7;Q_ge}^zpV7T69(xpRI+hW9V7Jm)_Zq+wLxt+Xn0nXd5F1^zu%LF+Psy ze#OQ=iAngRPouVHLMd*Y^~zkm^jz(<33FQFH!E}%XJagk?VB0N5RMtz@fG#Qb}SEuV@v3@CK>7BEY5ylFzck}nbu`fVAe7x5NGuz*NbN}o0 z9oyK&qX&~ldURl-ct%vER^it0Sq>MAy%?B6X-28pZxr>G0Bwk#Rw5n)1^V`l&u2M; zpvQOnfY<3sc2p^#rEj9YITHyE=7LqG4DgHpbH$8S+00oBz#Zf0+yXtw_!$w(VCKC(C@>*p?;n? z2GjF+A=3QWzVPA-N!&bZO!&|H?v*0*qd!Ug-*{t&et0_ME3J5g*>l4OFI4HnbuOL*2zOYZG??a0amKve^$4_TXztp$SV$hDx zq$?dt47cV^f|N`wcf;XGZ#79`mil}PFLq0J?dLGRC~92=F+J+j=lZ97L| zu!MU}%Ah37V*j*afA%A^!gt3DB&;(cN7eX zl*qMmn317#lV{#Syp9DzG+rYga2mTma)aJaVg?2~%!=w0-q9|2gi>%*avzs9H}@?#@Yzf>8zV<(EGErHrCS#;8?(3{@mYS zfL_!ON56xY7BB;d%k#-fX?N{0m(oJ#jW4dX4VBS-}#u5%+pEC%Hg#H7m}5 z_`Z;a%Rr4Y{W&jAM;mnSDbdU~XvKyj3FY)f?~o_{RXo+eb>2Ty*WdZ;c#E;*1rXns z^wf%<3)vYQN?Em>y4uB??&MD*p{waxs74}N^=B1NKfl~ou23mXCS`<}L~aCiv4EQQ%p;&|_>hau_&vSfs2{u~AU?HxA3O#<{T%5+bW zd?gE(;)A}yU7ycJ`hAy!O!nvZx(&h}Auu*a@gJ=0UOI)1?O$4r63^3A@!%lEP=%R7 zVcujb4nz)t9^dreEJ9?ST&Ao0U?g`t0^)<&imi{hN5I}(g= z)B>5%p6Ho)l1(P%mo4ARf=$}XZ4yq@cUv=7GqdMvrq=7MhqIJ1P4VQk_OsbpMuJuU zhwu4#RI`G2<`YtV+%kcFFAaU56&bSxzfKJ7_5M_g3+QbxoTVFbzPz@Qnxx|V(1OgQ zEg8rRbE8?phMQ?}J!AIW^O#~NdaLr6^nMpj&(?I zVY6@Gs2d=wEJO$RG9GAn#T!lkd4G|MEBKdphQOXX^5%-x1=Ua}Px|`goMEXk*E`SX z&AkQ^RNYGc|GD3XbF6mx=h4f5_4rpivy;Iq;|zJz7<{M1M@pyKVk=*Vaz06& zTJ?DO6v}|`ive*wgeg7TOGWRPZ;y`n-$x+Lm<$QSV8}h+8iIabZgsGgcD;WeYkASb zsH*ps;B}lgZf7zLI3MQGn;QVVym?KlRX5{#Lyn`qKH}jRE85AJ$|L+EkhDdzV2pS? z0X#Di3PRA5dhwc6u@DZ+tqjkBg+HD_A8*wDpVtf&N{_!bTR>H3H#%?! zDGqQ<{S)6U4BbLNFSq&-NnomVU`a!3*q<+cG$M75KF2dwxP59T`aW~!r_9dMV`VWD zuzmI}j~u6x0FSi*`*&;o+)M3AgBLHX73kgMZ`=fGDxxNg_qgHPuocfQA4A2sAwI;A=eO&I zjdFiJ(^)_WizsFvU5>V|5DohNSq!%+v$(Ha%{#5^ZK4nrVGaz0LMnhxl<3trz=v0=m@Mj_o zI?{6O2|?I$W;5iwEzrHf5UQ@>iG6{4t53_uC}bnV;%9FAlYf@(e|w)A#+$*@ zRM-!q2rJ$dHwN_=`uqq4{6-_0lBL?k7mWMcJnHHL)R}~YBJ_r?Z>NN#&6(5TjVv5x z9|_0oLQb#Tp+WD@R(tvcMp0hApARy+nL3u&=I|nbI~$e(dzBYZbOF6A)0Z5Q>a^Ge zzuaT3Wr9#q`nf%?Nq@Vqw}g;-3&m7;{Rqn=S}=*-luK^5FZ}KX1&5Kajs>^)E2C8_ zWV06Z_`3OvekoELfE^y7AQ(n4o+q}gWli^Z1@=0I#i0UvWy$W>I7zYXT#E6eWmX}p zT)%Yt5-nTwiYZ#!oXk}U{=klvGolb6>tOXlkYr)T{-B#zwVPkv{|@1OSJ{CX=<7`@ zHi!k3f}nW$)ii2Dqnqo_V0p?>A!uOl&!@C|cYu7@YBdb>CT<}Z(al#j(cf7<$aF1h z+OkFR@a65e<*S^W7Qm-hc`8a-yKDH?c^WywOos#~d~HdpYW3!Wrm!OD@m2Xi{YHw{ z?ls8NE92;B_Xo3|GxaD1Cb0LHg3%$MH%`rcy^ZpNl8({aRi^id_E^1cC2ph-dHUh# z9)S@%^SkfH8pRHpG7BH?&MUN&F zIxptn{Umr*E})0mn~EkN9z2}P)%`gnFGsr}=K%VBjS#I2RxdPTZ-kNXO%@j2ks;4Q zDW3H?;P@tEnvA#s zjx-I^leG9?b>auwE(ztZEiYBuABqrHz+U5?@0@^M=m(kiNQY5bQq>mLV2-g|BpLdz z3oRKI+|ow~Y8{qe#P~XG*JT$jI-^6QF<|)lLdO&DKh#CpT#Bfi1YY-nUXN*W=KV|V z+aZ@TGkabqTqwo%beDQ#{~2#{uyh=N-eE)fF4S)FnCfAI-}FeoYJW{XgOQYrJ^0`? zVFxY0ZTuL~Y?fJnpO_)?TQXVhVNeiPF8I%T9H^b@6qpY*UqRoGqQ`uPk?co~NJ?le zmr51BbQ1te*1}E#9ADqerxUcT4RD$DUY9YB zx;2N?i;KxRwsx|vMC@THgE*_$R611F2#=l=&eiWO-EWu4HIAQP>{dAJ&;}_+KWMU>dd-U>l=_m6eK;dMDbC% zRPC5=WY6UzULvegILM-=zS9@xU10aV0e$_(>TYrF^p-EOSv&2$G#4iMho7q`t4K4z zUPrlZC_t}VHo6xpnrYh_$6TMpP8GIv5|pirqAXXw&qfkBJ~INW$3pQF5;eitAnMi7 zinueO!ilT{KIxVMlH?CW26NEohYt0kN|?;GS6q9S+&bUZYlGy>2zSJEV6P!7LBA_N zedB&hlSWE8(--gHet=}-T~LIZsVDwrTYHcY_WKY~VD3ucVvmEmZ3{1Hx(Wp)#BnTV z0K2hf_>JU7;-la^A?W=>bcRv6QGd?hW?c^g`@)bjIt@FQeN`iqbva1aw=cRia5BmPPp7wD^mvj3E?4-|z zp*$4zDVile9a{hV^xfb2AV?$?1?Y{~HmZicN?1o+jj?YpP8D%5>5g9!h@H<(mth!a zu;`8X?ZL*z9V`09K6-QGyo~d@_|HV3@3fqr}d>$>zQC4gLy?+SnbuxGi*Tw3QzRXQhGY#v9aifOo zJ_Yt}oAiVLdhfB-eq?sSB=VHNWBs`t^=z5X{TriXiBx3Ew7w}SY5d2Qbz3qTTmocs z)l&iXo$t`S+k?gcRP!e;)@$VV*`U`qR9HRPB+l4vq5=kD%KRBuyGfo~*|>l1_ic9T z2LO5v6JR5rJUQmy+4j|t#tmu@kDDb$vKFNaoq6v>oBMCPyY^c&U_AA?XDce`7LjKi zD&KQ&VzUvGD*s46>(~$ad2EX&?XP`CjgQ&l;#vVi31g8F=bgxp|HOC6a?cmg>wl56 zUPR|j7&{^;pj4^%brCAU~sZCQ(A4|Zr3;t6m*?Egsi2J~9(K&Y?{(K*i5 zNv1942+haKVw%m~GPkbd5Pkh|&J&d5wi?d2(T?Qoc-v~_VDO2DKp;JFxoq*=ki4+A zsRQ(Wa-C+FkX9qMF^Kj=uO!us_l|ID_NwEb_1j61{a@Z{R$2PZQG!^dNOZ7+U<_Mn zJLVFX8AC#rM`*aiw0s46AAK8BBl@_y?_&ZgQSh#}XflLhy=ABMX7Fo@vk{>84;d{s z3SONL6Ek(;CVm3O$;7LO$;4Dt!13Lritz%BZ(GjV)b<)y0IC{+S%q0}qh_9XrtI-2 zGFwDd8TJiAk}C0*n|WdJZ|!Th@9b60hAQsY8LNG37gckuGtq1|LGK?9vO|4V-^%9r ze}>GZIQ`D@?Q}9h95+q21De#XGQl18B`S_4)JU z9u%&jZyiBe{7(@K=zsle>Vx0iV2If-QE6_A;jhr`v2_qsU4@A8%y$%BNElrh&g4;7Y>`o|9vOjrh0w zSAo4<+e zHtj`kj4R4l^CyW~0+cqZr2zJgfpf=2`WC;4ZzKF>A|X_afvO`^3KqS?ZwteA5#$NO zv-xV6xR&%m_iB>b3L{1DLbwfKqK`)sv}7CeA3s+7v;WJ2d+Y${Whxm{f+CmHHg?9X zJ>c+*TpK;{VH+#5-|Wrt);*kicu{ndeln` zy0_Ny4zfSt3Qsr}5>0b5bbE|!pGEPG95}w=F5mz1;sxL>4Nle3ySbS1J(lQi9XqTv zGJ4I)yV`c!Af_{F)(`8j#JIH#YnCqcSy{0Q58{Tp{`oz$O~s0ky3)WU(Dx_RpX|+j z5H?oWUpUNF;XL1#OXMng8~txUT>9ULo23C&s{df$vbUl5(8+qh@dX>9{mYw0Oz9;2-W^;wb772z{eeSI64Zw9@w=T0_ls~ltG1Yy%1=}I(pB^&7Vg2F!WxiWh9TPmWNg79lTwziou z<;{H%uy;r}#vU+#Z_ZY#$!qr7&{~SOFC)SC2&mb-aH8sOJQG9_S@EToZp*9Vpce9j z&)YmN_J~oOvEKK9RWSVgT0BAN|E^O4^z{%?D-D%;YDd4xw{^4>=AHK$a*oHD9?ihs zvmZf!dChAqR>!PDFVHO-5(F9{ks#l)L_U}7ZTakb`&W+KG~A=MxrB*1bU3c5hp}f& zLlbghnpJA*1xOFzvf1;gf!^FFQUSq< zeXe7cZ>CcJTr+3Gt4YsIJ3IjmcG> zeN%F-q(RT$e8Oi89O`c!5?@?4hli?}@Y*#0RE7#*ui^W98^HXf2>s4IAvNX77CSHA z&kyD!%9LPVCiaXO^`>$^(u`g#LqcGjTH+*H+HKMtHGyM4a9nWpNIKwmLel=PMfkU% zp9gf@#=&2<6(m@Bt~+39>CttNsW)p5SOR;ythoR3&VGd`V&io;!{_MV3m34vn+h@; z6Mm*~XY(vJ>cil}7Mr!BlIK*wuWrW<@2DDJ^;Dj3D8vysk5&4fuewbG`gY-73oK_*I(L{g`m%89Bc=NxzK50<(ZdYHL!79O})s}BZt+%Ua;`@ ze|e8Lty+YM`Q(1z8%m!`r)-Re?PBglvjh{LBM0j6c->CRL^ISsz7pu`AyXZ?Vgd85dRelNHNMrbVaD2{Q}VWd<_B#}Y;(ZzR$Ah6Rs7e~t~7MunE2B$Y8S*UV3cp#M-#2%)PZfSHiScPU6&gr)ln z^n6%N3V=QTlKs+nEeLmK-O9H;x6k?Ii~~3y3c)D!0lmCFy)T?*2NVruQ;S{h3cS$O zjl!i@jsB@9^*G&Z>752!!mEqr>xS9YgjQ))Ta>p=K9@btznd4K-5qk~AVA-r>`u*U zrr$;0+M1rg>ygOSTo7!t6NdiheIW}A*PaW&`NfN4(fR4yoxH?o-F|bKT3+F*Ta$R& z!bBI8hH5R1N?Pt(V?(0f6400X(jdbTj0#rr96NZ3Tb0C5$oSLw-ssIm~wP zqpORF>qVPU2YXNySWM*c