From ace0f16ceaef31bf4ca5b30d841b191b0ee8fc64 Mon Sep 17 00:00:00 2001 From: Jacob Gadikian Date: Mon, 24 Jul 2023 19:40:51 +0800 Subject: [PATCH 01/22] upgrades interchaintest to ibc8 first commit --- go.mod | 42 ++++++++++++++++++++++-------------------- go.sum | 33 +++++++++++++++++++++++++++++++++ 2 files changed, 55 insertions(+), 20 deletions(-) diff --git a/go.mod b/go.mod index dbf7102c4..dc9b5b80a 100644 --- a/go.mod +++ b/go.mod @@ -10,8 +10,8 @@ require ( github.com/StirlingMarketingGroup/go-namecase v1.0.0 github.com/atotto/clipboard v0.1.4 github.com/avast/retry-go/v4 v4.3.4 - github.com/cometbft/cometbft v0.37.2 - github.com/cosmos/cosmos-sdk v0.47.4 + github.com/cometbft/cometbft v0.38.0-rc3 + github.com/cosmos/cosmos-sdk v0.50.0-beta.0.0.20230723220119-d68a1231a44b github.com/cosmos/go-bip39 v1.0.0 github.com/cosmos/gogoproto v1.4.10 github.com/cosmos/ibc-go/v7 v7.2.0 @@ -50,8 +50,8 @@ require ( cloud.google.com/go/compute/metadata v0.2.3 // indirect cloud.google.com/go/iam v1.1.0 // indirect cloud.google.com/go/storage v1.30.1 // indirect - cosmossdk.io/api v0.3.1 // indirect - cosmossdk.io/core v0.5.1 // indirect + cosmossdk.io/api v0.7.0 // indirect + cosmossdk.io/core v0.9.0 // indirect cosmossdk.io/depinject v1.0.0-alpha.3 // indirect cosmossdk.io/errors v1.0.0 // indirect cosmossdk.io/log v1.1.1-0.20230704160919-88f2c830b0ca // indirect @@ -66,7 +66,7 @@ require ( github.com/FactomProject/btcutilecc v0.0.0-20130527213604-d3a63a5752ec // indirect github.com/Microsoft/go-winio v0.6.0 // indirect github.com/armon/go-metrics v0.4.1 // indirect - github.com/aws/aws-sdk-go v1.44.203 // indirect + github.com/aws/aws-sdk-go v1.44.224 // indirect github.com/benbjohnson/clock v1.3.0 // indirect github.com/beorn7/perks v1.0.1 // indirect github.com/bgentry/go-netrc v0.0.0-20140422174119-9fd32a8b3d3d // indirect @@ -80,18 +80,18 @@ require ( github.com/cometbft/cometbft-db v0.8.0 // indirect github.com/confio/ics23/go v0.9.0 // indirect github.com/cosmos/btcutil v1.0.5 // indirect - github.com/cosmos/cosmos-proto v1.0.0-beta.2 // indirect + github.com/cosmos/cosmos-proto v1.0.0-beta.3 // indirect github.com/cosmos/gogogateway v1.2.0 // indirect - github.com/cosmos/iavl v0.20.0 // indirect + github.com/cosmos/iavl v1.0.0-beta.2 // indirect github.com/cosmos/ics23/go v0.10.0 // indirect - github.com/cosmos/ledger-cosmos-go v0.12.1 // indirect + github.com/cosmos/ledger-cosmos-go v0.13.0 // indirect github.com/cosmos/rosetta-sdk-go v0.10.0 // indirect github.com/creachadair/taskgroup v0.4.2 // indirect github.com/danieljoos/wincred v1.1.2 // indirect github.com/deckarep/golang-set v1.8.0 // indirect github.com/decred/base58 v1.0.4 // indirect - github.com/decred/dcrd/crypto/blake256 v1.0.0 // indirect - github.com/decred/dcrd/dcrec/secp256k1/v4 v4.1.0 // indirect + github.com/decred/dcrd/crypto/blake256 v1.0.1 // indirect + github.com/decred/dcrd/dcrec/secp256k1/v4 v4.2.0 // indirect github.com/desertbit/timer v0.0.0-20180107155436-c41aec40b27f // indirect github.com/dgraph-io/badger/v2 v2.2007.4 // indirect github.com/dgraph-io/ristretto v0.1.1 // indirect @@ -125,7 +125,7 @@ require ( github.com/gorilla/handlers v1.5.1 // indirect github.com/gorilla/mux v1.8.0 // indirect github.com/gorilla/websocket v1.5.0 // indirect - github.com/grpc-ecosystem/go-grpc-middleware v1.3.0 // indirect + github.com/grpc-ecosystem/go-grpc-middleware v1.4.0 // indirect github.com/gsterjov/go-libsecret v0.0.0-20161001094733-a6f4afe4910c // indirect github.com/gtank/merlin v0.1.1 // indirect github.com/gtank/ristretto255 v0.1.2 // indirect @@ -143,12 +143,12 @@ require ( github.com/jmespath/go-jmespath v0.4.0 // indirect github.com/jmhodges/levigo v1.0.0 // indirect github.com/kballard/go-shellquote v0.0.0-20180428030007-95032a82bc51 // indirect - github.com/klauspost/compress v1.16.3 // indirect + github.com/klauspost/compress v1.16.7 // indirect github.com/klauspost/cpuid/v2 v2.2.3 // indirect github.com/lib/pq v1.10.7 // indirect github.com/libp2p/go-buffer-pool v0.1.0 // indirect github.com/libp2p/go-openssl v0.1.0 // indirect - github.com/linxGnu/grocksdb v1.7.16 // indirect + github.com/linxGnu/grocksdb v1.8.0 // indirect github.com/lucasb-eyer/go-colorful v1.2.0 // indirect github.com/magiconair/properties v1.8.7 // indirect github.com/manifoldco/promptui v0.9.0 // indirect @@ -173,14 +173,14 @@ require ( github.com/multiformats/go-varint v0.0.6 // indirect github.com/opencontainers/go-digest v1.0.0 // indirect github.com/opencontainers/image-spec v1.1.0-rc2 // indirect - github.com/petermattis/goid v0.0.0-20230317030725-371a4b8eda08 // indirect + github.com/petermattis/goid v0.0.0-20230518223814-80aa455d8761 // indirect github.com/pierrec/xxHash v0.1.5 // indirect github.com/pkg/errors v0.9.1 // indirect github.com/pmezard/go-difflib v1.0.0 // indirect - github.com/prometheus/client_golang v1.15.0 // indirect - github.com/prometheus/client_model v0.3.0 // indirect - github.com/prometheus/common v0.42.0 // indirect - github.com/prometheus/procfs v0.9.0 // indirect + github.com/prometheus/client_golang v1.16.0 // indirect + github.com/prometheus/client_model v0.4.0 // indirect + github.com/prometheus/common v0.44.0 // indirect + github.com/prometheus/procfs v0.11.0 // indirect github.com/rakyll/statik v0.1.7 // indirect github.com/rcrowley/go-metrics v0.0.0-20201227073835-cf1acfcdf475 // indirect github.com/remyoudompheng/bigfft v0.0.0-20230129092748-24d4a6f8daec // indirect @@ -205,7 +205,7 @@ require ( go.etcd.io/bbolt v1.3.7 // indirect go.opencensus.io v0.24.0 // indirect go.uber.org/atomic v1.10.0 // indirect - golang.org/x/exp v0.0.0-20230515195305-f3d0a9c9a5cc // indirect + golang.org/x/exp v0.0.0-20230711153332-06a737ee72cb // indirect golang.org/x/mod v0.12.0 // indirect golang.org/x/net v0.12.0 // indirect golang.org/x/oauth2 v0.8.0 // indirect @@ -233,7 +233,7 @@ require ( modernc.org/strutil v1.1.3 // indirect modernc.org/token v1.0.1 // indirect nhooyr.io/websocket v1.8.6 // indirect - pgregory.net/rapid v0.5.5 // indirect + pgregory.net/rapid v1.0.0 // indirect sigs.k8s.io/yaml v1.3.0 // indirect ) @@ -243,3 +243,5 @@ replace ( github.com/gogo/protobuf => github.com/regen-network/protobuf v1.3.3-alpha.regen.1 github.com/vedhavyas/go-subkey => github.com/strangelove-ventures/go-subkey v1.0.7 ) + +replace github.com/cosmos/ibc-go/v7 => github.com/notional-labs/ibc-go/v7 v7.0.0-20230724113134-e8c560b25881 diff --git a/go.sum b/go.sum index 137912f2f..a17b99c55 100644 --- a/go.sum +++ b/go.sum @@ -189,8 +189,10 @@ cloud.google.com/go/workflows v1.6.0/go.mod h1:6t9F5h/unJz41YqfBmqSASJSXccBLtD1V cloud.google.com/go/workflows v1.7.0/go.mod h1:JhSrZuVZWuiDfKEFxU0/F1PQjmpnpcoISEXH2bcHC3M= cosmossdk.io/api v0.3.1 h1:NNiOclKRR0AOlO4KIqeaG6PS6kswOMhHD0ir0SscNXE= cosmossdk.io/api v0.3.1/go.mod h1:DfHfMkiNA2Uhy8fj0JJlOCYOBp4eWUUJ1te5zBGNyIw= +cosmossdk.io/api v0.7.0/go.mod h1:kJFAEMLN57y0viszHDPLMmieF0471o5QAwwApa+270M= cosmossdk.io/core v0.5.1 h1:vQVtFrIYOQJDV3f7rw4pjjVqc1id4+mE0L9hHP66pyI= cosmossdk.io/core v0.5.1/go.mod h1:KZtwHCLjcFuo0nmDc24Xy6CRNEL9Vl/MeimQ2aC7NLE= +cosmossdk.io/core v0.9.0/go.mod h1:NFgl5r41Q36+RixTvyrfsS6qQ65agCbZ1FTpnN7/G1Y= cosmossdk.io/depinject v1.0.0-alpha.3 h1:6evFIgj//Y3w09bqOUOzEpFj5tsxBqdc5CfkO7z+zfw= cosmossdk.io/depinject v1.0.0-alpha.3/go.mod h1:eRbcdQ7MRpIPEM5YUJh8k97nxHpYbc3sMUnEtt8HPWU= cosmossdk.io/errors v1.0.0 h1:nxF07lmlBbB8NKQhtJ+sJm6ef5uV1XkvPXG2bUntb04= @@ -268,7 +270,9 @@ github.com/aws/aws-sdk-go v1.27.0/go.mod h1:KmX6BPdI08NWTb3/sm4ZGu5ShLoqVDhKgpiN github.com/aws/aws-sdk-go v1.44.122/go.mod h1:y4AeaBuwd2Lk+GepC1E9v0qOiTws0MIWAX4oIKwKHZo= github.com/aws/aws-sdk-go v1.44.203 h1:pcsP805b9acL3wUqa4JR2vg1k2wnItkDYNvfmcy6F+U= github.com/aws/aws-sdk-go v1.44.203/go.mod h1:aVsgQcEevwlmQ7qHE9I3h+dtQgpqhFB+i8Phjh7fkwI= +github.com/aws/aws-sdk-go v1.44.224/go.mod h1:aVsgQcEevwlmQ7qHE9I3h+dtQgpqhFB+i8Phjh7fkwI= github.com/aws/aws-sdk-go-v2 v0.18.0/go.mod h1:JWVYvqSMppoMJC0x5wdwiImzgXTI9FuZwxzkQq9wy+g= +github.com/benbjohnson/clock v1.1.0/go.mod h1:J11/hYXuz8f4ySSvYwY0FKfm+ezbsZBKZxNJlLklBHA= github.com/benbjohnson/clock v1.3.0 h1:ip6w0uFQkncKQ979AypyG0ER7mqUSBdKLOgAle/AT8A= github.com/benbjohnson/clock v1.3.0/go.mod h1:J11/hYXuz8f4ySSvYwY0FKfm+ezbsZBKZxNJlLklBHA= github.com/beorn7/perks v0.0.0-20180321164747-3a771d992973/go.mod h1:Dwedo/Wpr24TaqPxmxbtue+5NUziq4I4S80YR8gNf3Q= @@ -331,6 +335,7 @@ github.com/coinbase/rosetta-sdk-go/types v1.0.0 h1:jpVIwLcPoOeCR6o1tU+Xv7r5bMONN github.com/coinbase/rosetta-sdk-go/types v1.0.0/go.mod h1:eq7W2TMRH22GTW0N0beDnN931DW0/WOI1R2sdHNHG4c= github.com/cometbft/cometbft v0.37.2 h1:XB0yyHGT0lwmJlFmM4+rsRnczPlHoAKFX6K8Zgc2/Jc= github.com/cometbft/cometbft v0.37.2/go.mod h1:Y2MMMN//O5K4YKd8ze4r9jmk4Y7h0ajqILXbH5JQFVs= +github.com/cometbft/cometbft v0.38.0-rc3/go.mod h1:5Jz0Z8YsHSf0ZaAqGvi/ifioSdVFPtEGrm8Y9T/993k= github.com/cometbft/cometbft-db v0.8.0 h1:vUMDaH3ApkX8m0KZvOFFy9b5DZHBAjsnEuo9AKVZpjo= github.com/cometbft/cometbft-db v0.8.0/go.mod h1:6ASCP4pfhmrCBpfk01/9E1SI29nD3HfVHrY4PG8x5c0= github.com/confio/ics23/go v0.9.0 h1:cWs+wdbS2KRPZezoaaj+qBleXgUk5WOQFMP3CQFGTr4= @@ -346,8 +351,11 @@ github.com/cosmos/btcutil v1.0.5 h1:t+ZFcX77LpKtDBhjucvnOH8C2l2ioGsBNEQ3jef8xFk= github.com/cosmos/btcutil v1.0.5/go.mod h1:IyB7iuqZMJlthe2tkIFL33xPyzbFYP0XVdS8P5lUPis= github.com/cosmos/cosmos-proto v1.0.0-beta.2 h1:X3OKvWgK9Gsejo0F1qs5l8Qn6xJV/AzgIWR2wZ8Nua8= github.com/cosmos/cosmos-proto v1.0.0-beta.2/go.mod h1:+XRCLJ14pr5HFEHIUcn51IKXD1Fy3rkEQqt4WqmN4V0= +github.com/cosmos/cosmos-proto v1.0.0-beta.3/go.mod h1:t8IASdLaAq+bbHbjq4p960BvcTqtwuAxid3b/2rOD6I= github.com/cosmos/cosmos-sdk v0.47.4 h1:FVUpEprm58nMmBX4xkRdMDaIG5Nr4yy92HZAfGAw9bg= github.com/cosmos/cosmos-sdk v0.47.4/go.mod h1:R5n+uM7vguVPFap4pgkdvQCT1nVo/OtPwrlAU40rvok= +github.com/cosmos/cosmos-sdk v0.50.0-beta.0.0.20230723220119-d68a1231a44b h1:gj5xt5WtP8akQjo7DWcR20W+vfYfV5yB9QA6asI3xQQ= +github.com/cosmos/cosmos-sdk v0.50.0-beta.0.0.20230723220119-d68a1231a44b/go.mod h1:MF/wnXyreoL0g8YdRZhUD4apPdgebMc29LgMJB+dh6M= github.com/cosmos/go-bip39 v0.0.0-20180819234021-555e2067c45d/go.mod h1:tSxLoYXyBmiFeKpvmq4dzayMdCjCnu8uqmCysIGBT2Y= github.com/cosmos/go-bip39 v1.0.0 h1:pcomnQdrdH22njcAatO0yWojsUnCO3y2tNoV1cb6hHY= github.com/cosmos/go-bip39 v1.0.0/go.mod h1:RNJv0H/pOIVgxw6KS7QeX2a0Uo0aKUlfhZ4xuwvCdJw= @@ -358,12 +366,14 @@ github.com/cosmos/gogoproto v1.4.10 h1:QH/yT8X+c0F4ZDacDv3z+xE3WU1P1Z3wQoLMBRJoK github.com/cosmos/gogoproto v1.4.10/go.mod h1:3aAZzeRWpAwr+SS/LLkICX2/kDFyaYVzckBDzygIxek= github.com/cosmos/iavl v0.20.0 h1:fTVznVlepH0KK8NyKq8w+U7c2L6jofa27aFX6YGlm38= github.com/cosmos/iavl v0.20.0/go.mod h1:WO7FyvaZJoH65+HFOsDir7xU9FWk2w9cHXNW1XHcl7A= +github.com/cosmos/iavl v1.0.0-beta.2/go.mod h1:EA97dJ07TBktRlG/iGzK6g1eCXNj1q3MGoFYkVzrwHE= github.com/cosmos/ibc-go/v7 v7.2.0 h1:dx0DLUl7rxdyZ8NiT6UsrbzKOJx/w7s+BOaewFRH6cg= github.com/cosmos/ibc-go/v7 v7.2.0/go.mod h1:OOcjKIRku/j1Xs1RgKK0yvKRrJ5iFuZYMetR1n3yMlc= github.com/cosmos/ics23/go v0.10.0 h1:iXqLLgp2Lp+EdpIuwXTYIQU+AiHj9mOC2X9ab++bZDM= github.com/cosmos/ics23/go v0.10.0/go.mod h1:ZfJSmng/TBNTBkFemHHHj5YY7VAU/MBU980F4VU1NG0= github.com/cosmos/ledger-cosmos-go v0.12.1 h1:sMBxza5p/rNK/06nBSNmsI/WDqI0pVJFVNihy1Y984w= github.com/cosmos/ledger-cosmos-go v0.12.1/go.mod h1:dhO6kj+Y+AHIOgAe4L9HL/6NDdyyth4q238I9yFpD2g= +github.com/cosmos/ledger-cosmos-go v0.13.0/go.mod h1:ZcqYgnfNJ6lAXe4HPtWgarNEY+B74i+2/8MhZw4ziiI= github.com/cosmos/rosetta-sdk-go v0.10.0 h1:E5RhTruuoA7KTIXUcMicL76cffyeoyvNybzUGSKFTcM= github.com/cosmos/rosetta-sdk-go v0.10.0/go.mod h1:SImAZkb96YbwvoRkzSMQB6noNJXFgWl/ENIznEoYQI4= github.com/cpuguy83/go-md2man v1.0.10/go.mod h1:SmD6nW6nTyfqj6ABTjUi3V3JVMnlJmwcJI5acqYI6dE= @@ -387,10 +397,12 @@ github.com/decred/dcrd/chaincfg/chainhash v1.0.2 h1:rt5Vlq/jM3ZawwiacWjPa+smINyL github.com/decred/dcrd/chaincfg/chainhash v1.0.2/go.mod h1:BpbrGgrPTr3YJYRN3Bm+D9NuaFd+zGyNeIKgrhCXK60= github.com/decred/dcrd/crypto/blake256 v1.0.0 h1:/8DMNYp9SGi5f0w7uCm6d6M4OU2rGFK09Y2A4Xv7EE0= github.com/decred/dcrd/crypto/blake256 v1.0.0/go.mod h1:sQl2p6Y26YV+ZOcSTP6thNdn47hh8kt6rqSlvmrXFAc= +github.com/decred/dcrd/crypto/blake256 v1.0.1/go.mod h1:2OfgNZ5wDpcsFmHmCK5gZTPcCXqlm2ArzUIkw9czNJo= github.com/decred/dcrd/dcrec/secp256k1/v2 v2.0.1 h1:18HurQ6DfHeNvwIjvOmrgr44bPdtVaQAe/WWwHg9goM= github.com/decred/dcrd/dcrec/secp256k1/v2 v2.0.1/go.mod h1:XmyzkaXBy7ZvHdrTAlXAjpog8qKSAWa3ze7yqzWmgmc= github.com/decred/dcrd/dcrec/secp256k1/v4 v4.1.0 h1:HbphB4TFFXpv7MNrT52FGrrgVXF1owhMVTHFZIlnvd4= github.com/decred/dcrd/dcrec/secp256k1/v4 v4.1.0/go.mod h1:DZGJHZMqrU4JJqFAWUS2UO1+lbSKsdiOoYi9Zzey7Fc= +github.com/decred/dcrd/dcrec/secp256k1/v4 v4.2.0/go.mod h1:v57UDF4pDQJcEfFUCRop3lJL149eHGSe9Jvczhzjo/0= github.com/desertbit/timer v0.0.0-20180107155436-c41aec40b27f h1:U5y3Y5UE0w7amNe7Z5G/twsBW0KEalRQXZzf8ufSh9I= github.com/desertbit/timer v0.0.0-20180107155436-c41aec40b27f/go.mod h1:xH/i4TFMt8koVQZ6WFms69WAsDWr2XsYL3Hkl7jkoLE= github.com/dgraph-io/badger/v2 v2.2007.4 h1:TRWBQg8UrlUhaFdco01nO2uXwzKS7zd+HVdwV/GHc4o= @@ -464,6 +476,7 @@ github.com/go-kit/kit v0.9.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2 github.com/go-kit/kit v0.10.0/go.mod h1:xUsJbQ/Fp4kEt7AFgCuvyX4a71u8h9jB8tj/ORgOZ7o= github.com/go-kit/kit v0.12.0 h1:e4o3o3IsBfAKQh5Qbbiqyfu97Ku7jrO/JbohvztANh4= github.com/go-kit/kit v0.12.0/go.mod h1:lHd+EkCZPIwYItmGDDRdhinkzX2A1sj+M9biaEaizzs= +github.com/go-kit/log v0.1.0/go.mod h1:zbhenjAZHb184qTLMA9ZjW7ThYL0H2mk7Q6pNt4vbaY= github.com/go-kit/log v0.2.1 h1:MRVx0/zhvdseW+Gza6N9rVzU/IVzaeE1SFI4raAhmBU= github.com/go-kit/log v0.2.1/go.mod h1:NwTd00d/i8cPZ3xOwwiv2PO5MOcx78fFErGNcVmBjv0= github.com/go-logfmt/logfmt v0.3.0/go.mod h1:Qt1PoO58o5twSAckw1HlFXLmHsOX5/0LbT9GBnD5lWE= @@ -630,6 +643,7 @@ github.com/grpc-ecosystem/go-grpc-middleware v1.0.1-0.20190118093823-f849b5445de github.com/grpc-ecosystem/go-grpc-middleware v1.2.2/go.mod h1:EaizFBKfUKtMIF5iaDEhniwNedqGo9FuLFzppDr3uwI= github.com/grpc-ecosystem/go-grpc-middleware v1.3.0 h1:+9834+KizmvFV7pXQGSXQTsaWhq2GjuNUt0aUU0YBYw= github.com/grpc-ecosystem/go-grpc-middleware v1.3.0/go.mod h1:z0ButlSOZa5vEBq9m2m2hlwIgKw+rp3sdCBRoJY+30Y= +github.com/grpc-ecosystem/go-grpc-middleware v1.4.0/go.mod h1:g5qyo/la0ALbONm6Vbp88Yd8NsDy6rZz+RcrMPxvld8= github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0/go.mod h1:8NvIoxWQoOIhqOTXgfV/d3M/q6VIi02HzZEHgUlZvzk= github.com/grpc-ecosystem/grpc-gateway v1.9.5/go.mod h1:vNeuVxBJEsws4ogUvrchl83t/GYV9WGTSLVdBhOQFDY= github.com/grpc-ecosystem/grpc-gateway v1.16.0 h1:gmcG1KaJ57LophUzW0Hy8NmPhnMZb4M0+kPpLofRdBo= @@ -714,6 +728,7 @@ github.com/json-iterator/go v1.1.8/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/u github.com/json-iterator/go v1.1.9/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= github.com/json-iterator/go v1.1.10/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= github.com/json-iterator/go v1.1.12 h1:PV8peI4a0ysnczrg+LtxykD8LfKY9ML6u2jnxaEnrnM= +github.com/json-iterator/go v1.1.12/go.mod h1:e30LSqwooZae/UwlEbR2852Gd8hjQvJoHmT4TnhNGBo= github.com/jstemmer/go-junit-report v0.0.0-20190106144839-af01ea7f8024/go.mod h1:6v2b51hI/fHJwM22ozAgKL4VKDeJcHhJFhtBdhmNjmU= github.com/jstemmer/go-junit-report v0.9.1/go.mod h1:Brl9GWCQeLvo8nXZwPNNblvFj/XSXhF0NWZEnDohbsk= github.com/jtolds/gls v4.20.0+incompatible/go.mod h1:QJZ7F/aHp+rZTRtaJ1ow/lLfFfVYBRgL+9YlvaHOwJU= @@ -729,6 +744,7 @@ github.com/klauspost/compress v1.12.3/go.mod h1:8dP1Hq4DHOhN9w426knH3Rhby4rFm6D8 github.com/klauspost/compress v1.15.11/go.mod h1:QPwzmACJjUTFsnSHH934V6woptycfrDDJnH7hvFVbGM= github.com/klauspost/compress v1.16.3 h1:XuJt9zzcnaz6a16/OU53ZjWp/v7/42WcR5t2a0PcNQY= github.com/klauspost/compress v1.16.3/go.mod h1:ntbaceVETuRiXiv4DpjP66DpAtAGkEQskQzEyD//IeE= +github.com/klauspost/compress v1.16.7/go.mod h1:ntbaceVETuRiXiv4DpjP66DpAtAGkEQskQzEyD//IeE= github.com/klauspost/cpuid/v2 v2.0.4/go.mod h1:FInQzS24/EEf25PyTYn52gqo7WaD8xa0213Md/qVLRg= github.com/klauspost/cpuid/v2 v2.0.9/go.mod h1:FInQzS24/EEf25PyTYn52gqo7WaD8xa0213Md/qVLRg= github.com/klauspost/cpuid/v2 v2.2.3 h1:sxCkb+qR91z4vsqw4vGGZlDgPz3G7gjaLyK3V8y70BU= @@ -756,6 +772,7 @@ github.com/lightstep/lightstep-tracer-common/golang/gogo v0.0.0-20190605223551-b github.com/lightstep/lightstep-tracer-go v0.18.1/go.mod h1:jlF1pusYV4pidLvZ+XD0UBX0ZE6WURAspgAczcDHrL4= github.com/linxGnu/grocksdb v1.7.16 h1:Q2co1xrpdkr5Hx3Fp+f+f7fRGhQFQhvi/+226dtLmA8= github.com/linxGnu/grocksdb v1.7.16/go.mod h1:JkS7pl5qWpGpuVb3bPqTz8nC12X3YtPZT+Xq7+QfQo4= +github.com/linxGnu/grocksdb v1.8.0/go.mod h1:09CeBborffXhXdNpEcOeZrLKEnRtrZFEpFdPNI9Zjjg= github.com/lucasb-eyer/go-colorful v1.2.0 h1:1nnpGOrhyZZuNyfu1QjKiUICQ74+3FNCN69Aj6K7nkY= github.com/lucasb-eyer/go-colorful v1.2.0/go.mod h1:R4dSotOR9KMtayYi1e77YzuveK+i7ruzyGqttikkLy0= github.com/lyft/protoc-gen-validate v0.0.13/go.mod h1:XbGvPuh87YZc5TdIa2/I4pLk0QoUACkjt2znoq26NVQ= @@ -790,6 +807,7 @@ github.com/miekg/dns v1.0.14/go.mod h1:W1PPwlIAgtquWBMBEV9nkV9Cazfe8ScdGz/Lj7v3N github.com/mimoo/StrobeGo v0.0.0-20181016162300-f8f6d4d2b643/go.mod h1:43+3pMjjKimDBf5Kr4ZFNGbLql1zKkbImw+fZbw3geM= github.com/mimoo/StrobeGo v0.0.0-20220103164710-9a04d6ca976b h1:QrHweqAtyJ9EwCaGHBu1fghwxIPiopAHV06JlXrMHjk= github.com/mimoo/StrobeGo v0.0.0-20220103164710-9a04d6ca976b/go.mod h1:xxLb2ip6sSUts3g1irPVHyk/DGslwQsNOo9I7smJfNU= +github.com/minio/blake2b-simd v0.0.0-20160723061019-3f5f724cb5b1/go.mod h1:pD8RvIylQ358TN4wwqatJ8rNavkEINozVn9DtGI3dfQ= github.com/minio/highwayhash v1.0.2 h1:Aak5U0nElisjDCfPSG79Tgzkn2gl66NxOMspRrKnA/g= github.com/minio/highwayhash v1.0.2/go.mod h1:BQskDq+xkJ12lmlUUi7U0M5Swg3EWR+dLTk+kldvVxY= github.com/minio/sha256-simd v1.0.0 h1:v1ta+49hkWZyvaKwrQB8elexRqm6Y0aMLjCNsrYxo6g= @@ -816,6 +834,7 @@ github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJ github.com/modern-go/reflect2 v0.0.0-20180701023420-4b7aa43c6742/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= github.com/modern-go/reflect2 v1.0.1/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= github.com/modern-go/reflect2 v1.0.2 h1:xBagoLtFs94CBntxluKeaWgTMpvLxC4ur3nMaC9Gz0M= +github.com/modern-go/reflect2 v1.0.2/go.mod h1:yWuevngMOJpCy52FWWMvUC8ws7m/LJsjYzDa0/r8luk= github.com/morikuni/aec v1.0.0 h1:nP9CBfwrvYnBRgY6qfDQkygYDmYwOilePFkwzv4dU8A= github.com/mr-tron/base58 v1.2.0 h1:T/HDJBh4ZCPbU39/+c3rRvE0uKBQlU27+QI8LJ4t64o= github.com/mr-tron/base58 v1.2.0/go.mod h1:BinMc/sQntlIE1frQmRFPUoPA1Zkr8VRgBdjWI2mNwc= @@ -847,6 +866,7 @@ github.com/nats-io/nkeys v0.1.0/go.mod h1:xpnFELMwJABBLVhffcfd1MZx6VsNRFpEugbxzi github.com/nats-io/nkeys v0.1.3/go.mod h1:xpnFELMwJABBLVhffcfd1MZx6VsNRFpEugbxziKVo7w= github.com/nats-io/nuid v1.0.1/go.mod h1:19wcPz3Ph3q0Jbyiqsd0kePYG7A95tJPxeL+1OSON2c= github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e/go.mod h1:zD1mROLANZcx1PVRCS0qkT7pwLkGfwJo4zjcN/Tysno= +github.com/notional-labs/ibc-go/v7 v7.0.0-20230724113134-e8c560b25881/go.mod h1:5kPKhT/m9Xo+G+kWtSmQl7XcPissS3vL/8d1BB1eL1I= github.com/nxadm/tail v1.4.4/go.mod h1:kenIhsEOeOJmVchQTgglprH7qJGnHDVpk1VPCcaMI8A= github.com/nxadm/tail v1.4.8 h1:nPr65rt6Y5JFSKQO7qToXr7pePgD6Gwiw05lkbyAQTE= github.com/nxadm/tail v1.4.8/go.mod h1:+ncqLTQzXmGhMZNUePPaPqPvBxHAIsmXswZKocGu+AU= @@ -895,6 +915,7 @@ github.com/performancecopilot/speed v3.0.0+incompatible/go.mod h1:/CLtqpZ5gBg1M9 github.com/petermattis/goid v0.0.0-20180202154549-b0b1615b78e5/go.mod h1:jvVRKCrJTQWu0XVbaOlby/2lO20uSCHEMzzplHXte1o= github.com/petermattis/goid v0.0.0-20230317030725-371a4b8eda08 h1:hDSdbBuw3Lefr6R18ax0tZ2BJeNB3NehB3trOwYBsdU= github.com/petermattis/goid v0.0.0-20230317030725-371a4b8eda08/go.mod h1:pxMtw7cyUw6B2bRH0ZBANSPg+AoSud1I1iyJHI69jH4= +github.com/petermattis/goid v0.0.0-20230518223814-80aa455d8761/go.mod h1:pxMtw7cyUw6B2bRH0ZBANSPg+AoSud1I1iyJHI69jH4= github.com/pierrec/lz4 v1.0.2-0.20190131084431-473cd7ce01a1/go.mod h1:3/3N9NVKO0jef7pBehbT1qWhCMrIgbYNnFAZCqQ5LRc= github.com/pierrec/lz4 v2.0.5+incompatible/go.mod h1:pdkljMzZIN41W+lC3N2tnIh5sFi+IEE17M5jbnwPHcY= github.com/pierrec/xxHash v0.1.5 h1:n/jBpwTHiER4xYvK3/CdPVnLDPchj8eTJFFLUb4QHBo= @@ -916,6 +937,7 @@ github.com/prometheus/client_golang v1.4.0/go.mod h1:e9GMxYsXl05ICDXkRhurwBS4Q3O github.com/prometheus/client_golang v1.7.1/go.mod h1:PY5Wy2awLA44sXw4AOSfFBetzPP4j5+D6mVACh+pe2M= github.com/prometheus/client_golang v1.15.0 h1:5fCgGYogn0hFdhyhLbw7hEsWxufKtY9klyvdNfFlFhM= github.com/prometheus/client_golang v1.15.0/go.mod h1:e9yaBhRPU2pPNsZwE+JdQl0KEt1N9XgF6zxWmaC0xOk= +github.com/prometheus/client_golang v1.16.0/go.mod h1:Zsulrv/L9oM40tJ7T815tM89lFEugiJ9HzIqaAx4LKc= github.com/prometheus/client_model v0.0.0-20180712105110-5c3871d89910/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo= github.com/prometheus/client_model v0.0.0-20190115171406-56726106282f/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo= github.com/prometheus/client_model v0.0.0-20190129233127-fd36f4220a90/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= @@ -924,6 +946,7 @@ github.com/prometheus/client_model v0.1.0/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6T github.com/prometheus/client_model v0.2.0/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= github.com/prometheus/client_model v0.3.0 h1:UBgGFHqYdG/TPFD1B1ogZywDqEkwp3fBMvqdiQ7Xew4= github.com/prometheus/client_model v0.3.0/go.mod h1:LDGWKZIo7rky3hgvBe+caln+Dr3dPggB5dvjtD7w9+w= +github.com/prometheus/client_model v0.4.0/go.mod h1:oMQmHW1/JoDwqLtg57MGgP/Fb1CJEYF2imWWhWtMkYU= github.com/prometheus/common v0.2.0/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4= github.com/prometheus/common v0.4.1/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4= github.com/prometheus/common v0.7.0/go.mod h1:DjGbpBbp5NYNiECxcL/VnbXCCaQpKd3tt26CguLLsqA= @@ -932,6 +955,7 @@ github.com/prometheus/common v0.10.0/go.mod h1:Tlit/dnDKsSWFlCLTWaA1cyBgKHSMdTB8 github.com/prometheus/common v0.15.0/go.mod h1:U+gB1OBLb1lF3O42bTCL+FK18tX9Oar16Clt/msog/s= github.com/prometheus/common v0.42.0 h1:EKsfXEYo4JpWMHH5cg+KOUWeuJSov1Id8zGR8eeI1YM= github.com/prometheus/common v0.42.0/go.mod h1:xBwqVerjNdUDjgODMpudtOMwlOwf2SaTr1yjz4b7Zbc= +github.com/prometheus/common v0.44.0/go.mod h1:ofAIvZbQ1e/nugmZGz4/qCb9Ap1VoSTIO7x0VV9VvuY= github.com/prometheus/procfs v0.0.0-20181005140218-185b4288413d/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= github.com/prometheus/procfs v0.0.0-20190117184657-bf6a532e95b1/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= github.com/prometheus/procfs v0.0.2/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA= @@ -940,6 +964,7 @@ github.com/prometheus/procfs v0.1.3/go.mod h1:lV6e/gmhEcM9IjHGsFOCxxuZ+z1YqCvr4O github.com/prometheus/procfs v0.3.0/go.mod h1:lV6e/gmhEcM9IjHGsFOCxxuZ+z1YqCvr4OA4YeYWdaU= github.com/prometheus/procfs v0.9.0 h1:wzCHvIvM5SxWqYvwgVL7yJY8Lz3PKn49KQtpgMYJfhI= github.com/prometheus/procfs v0.9.0/go.mod h1:+pB4zwohETzFnmlpe6yd2lSc+0/46IYZRB/chUwxUZY= +github.com/prometheus/procfs v0.11.0/go.mod h1:nwNm2aOCAYw8uTR/9bWRREkZFxAUcWzPHWJq+XBB/FM= github.com/rakyll/statik v0.1.7 h1:OF3QCZUuyPxuGEP7B4ypUa7sB/iHtqOTDYZXGM8KOdQ= github.com/rakyll/statik v0.1.7/go.mod h1:AlZONWzMtEnMs7W4e/1LURLiI49pIMmp6V9Unghqrcc= github.com/rcrowley/go-metrics v0.0.0-20181016184325-3113b8401b8a/go.mod h1:bCqnVzQkZxMG4s8nGwiZ5l3QUCyqpo9Y+/ZMZ9VjZe4= @@ -1089,16 +1114,20 @@ go.opentelemetry.io/proto/otlp v0.7.0/go.mod h1:PqfVotwruBrMGOCsRd/89rSnXhoiJIqe go.uber.org/atomic v1.3.2/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE= go.uber.org/atomic v1.4.0/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE= go.uber.org/atomic v1.5.0/go.mod h1:sABNBOSYdrvTF6hTgEIbc7YasKWGhgEQZyfxyTvoXHQ= +go.uber.org/atomic v1.7.0/go.mod h1:fEN4uk6kAWBTFdckzkM89CLk9XfWZrxpCo0nPH17wJc= go.uber.org/atomic v1.10.0 h1:9qC72Qh0+3MqyJbAn8YU5xVq1frD8bn3JtD2oXtafVQ= go.uber.org/atomic v1.10.0/go.mod h1:LUxbIzbOniOlMKjJjyPfpl4v+PKK2cNJn91OQbhoJI0= +go.uber.org/goleak v1.1.10/go.mod h1:8a7PlsEVH3e/a/GLqe5IIrQx6GzcnRmZEufDUTk4A7A= go.uber.org/goleak v1.1.12 h1:gZAh5/EyT/HQwlpkCy6wTpqfH9H8Lz8zbm3dZh+OyzA= go.uber.org/multierr v1.1.0/go.mod h1:wR5kodmAFQ0UK8QlbwjlSNy0Z68gJhDJUG5sjR94q/0= go.uber.org/multierr v1.3.0/go.mod h1:VgVr7evmIr6uPjLBxg28wmKNXyqE9akIJ5XnfpiKl+4= +go.uber.org/multierr v1.6.0/go.mod h1:cdWPpRnG4AhwMwsgIHip0KRBQjJy5kYEpYjJxpXp9iU= go.uber.org/multierr v1.11.0 h1:blXXJkSxSSfBVBlC76pxqeO+LN3aDfLQo+309xJstO0= go.uber.org/multierr v1.11.0/go.mod h1:20+QtiLqy0Nd6FdQB9TLXag12DsQkrbs3htMFfDN80Y= go.uber.org/tools v0.0.0-20190618225709-2cfd321de3ee/go.mod h1:vJERXedbb3MVM5f9Ejo0C68/HhF8uaILCdgjnY+goOA= go.uber.org/zap v1.10.0/go.mod h1:vwi/ZaCAaUcBkycHslxD9B2zi4UTXhF60s6SWpuDF0Q= go.uber.org/zap v1.13.0/go.mod h1:zwrFLgMcdUuIBviXEYEH1YKNaOBnKXsx2IPda5bBwHM= +go.uber.org/zap v1.18.1/go.mod h1:xg/QME4nWcxGxrpdeYfq7UvYrLh66cuVKdrbD1XF/NI= go.uber.org/zap v1.24.0 h1:FiJd5l1UOLj0wCgbSE0rwwXHzEdAZS6hiiSnxJN/D60= go.uber.org/zap v1.24.0/go.mod h1:2kMP+WWQ8aoFoedH3T2sq6iJ2yDWpHbP0f6MQbS9Gkg= golang.org/x/crypto v0.0.0-20170613210332-850760c427c5/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= @@ -1132,6 +1161,7 @@ golang.org/x/exp v0.0.0-20200224162631-6cc2880d07d6/go.mod h1:3jZMyOhIsHpP37uCMk golang.org/x/exp v0.0.0-20200331195152-e8c3332aa8e5/go.mod h1:4M0jN8W1tt0AVLNr8HDosyJCDCDuyL9N9+3m7wDWgKw= golang.org/x/exp v0.0.0-20230515195305-f3d0a9c9a5cc h1:mCRnTeVUjcrhlRmO0VK8a6k6Rrf6TF9htwo2pJVSjIU= golang.org/x/exp v0.0.0-20230515195305-f3d0a9c9a5cc/go.mod h1:V1LtkGg67GoY2N1AnLN78QLrzxkLyJw7RJb1gzOOz9w= +golang.org/x/exp v0.0.0-20230711153332-06a737ee72cb/go.mod h1:FXUEEKJgO7OQYeo8N01OfiKP8RXMtf6e8aTskBGqWdc= golang.org/x/image v0.0.0-20190227222117-0694c2d4d067/go.mod h1:kZ7UVZpmo3dzQBMxlp+ypCbDeSB+sBbTgSJuh5dn5js= golang.org/x/image v0.0.0-20190802002840-cff245a6509b/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0= golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= @@ -1341,6 +1371,7 @@ golang.org/x/sys v0.0.0-20210819135213-f52c844e1c1c/go.mod h1:oPkhp1MJrh7nUepCBc golang.org/x/sys v0.0.0-20210823070655-63515b42dcdf/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210908233432-aa78b53d3365/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210927094055-39ccf1dd6fa6/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20211025201205-69cdffdb9359/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20211124211545-fe61309f8881/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20211210111614-af8b64212486/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20211216021012-1d35b9e2eb4e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= @@ -1414,6 +1445,7 @@ golang.org/x/tools v0.0.0-20190911174233-4f2ddba30aff/go.mod h1:b+2E5dAYhXwXZwtn golang.org/x/tools v0.0.0-20191012152004-8de300cfc20a/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191029041327-9cc4af7d6b2c/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191029190741-b9c20aec41a5/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20191108193012-7d206e10da11/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191113191852-77e3bb0ad9e7/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191115202509-3a792d9c32b2/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= @@ -1778,6 +1810,7 @@ nhooyr.io/websocket v1.8.6 h1:s+C3xAMLwGmlI31Nyn/eAehUlZPwfYZu2JXM621Q5/k= nhooyr.io/websocket v1.8.6/go.mod h1:B70DZP8IakI65RVQ51MsWP/8jndNma26DVA/nFSCgW0= pgregory.net/rapid v0.5.5 h1:jkgx1TjbQPD/feRoK+S/mXw9e1uj6WilpHrXJowi6oA= pgregory.net/rapid v0.5.5/go.mod h1:PY5XlDGj0+V1FCq0o192FdRhpKHGTRIWBgqjDBTrq04= +pgregory.net/rapid v1.0.0/go.mod h1:PY5XlDGj0+V1FCq0o192FdRhpKHGTRIWBgqjDBTrq04= rsc.io/binaryregexp v0.2.0/go.mod h1:qTv7/COck+e2FymRvadv62gMdZztPaShugOCi3I+8D8= rsc.io/quote/v3 v3.1.0/go.mod h1:yEA65RcK8LyAZtP9Kv3t0HmxON59tX3rD+tICJqUlj0= rsc.io/sampler v1.3.0/go.mod h1:T1hPZKmBbMNahiBKFy5HrXp6adAjACjK9JXDnKaTXpA= From ebc28a5a204da58b115daa92087ba36fc78ccbf6 Mon Sep 17 00:00:00 2001 From: Jacob Gadikian Date: Mon, 24 Jul 2023 22:05:57 +0800 Subject: [PATCH 02/22] initial tidy --- chain/cosmos/codec.go | 7 +- go.mod | 40 +++++++--- go.sum | 178 ++++++++++++++++++++++++------------------ 3 files changed, 134 insertions(+), 91 deletions(-) diff --git a/chain/cosmos/codec.go b/chain/cosmos/codec.go index ac5c1e70d..f8f53db39 100644 --- a/chain/cosmos/codec.go +++ b/chain/cosmos/codec.go @@ -1,6 +1,7 @@ package cosmos import ( + "cosmossdk.io/x/upgrade" "github.com/cosmos/cosmos-sdk/codec" codectypes "github.com/cosmos/cosmos-sdk/codec/types" sdk "github.com/cosmos/cosmos-sdk/types" @@ -8,7 +9,6 @@ import ( "github.com/cosmos/cosmos-sdk/x/auth" authTx "github.com/cosmos/cosmos-sdk/x/auth/tx" "github.com/cosmos/cosmos-sdk/x/bank" - "github.com/cosmos/cosmos-sdk/x/capability" "github.com/cosmos/cosmos-sdk/x/consensus" distr "github.com/cosmos/cosmos-sdk/x/distribution" "github.com/cosmos/cosmos-sdk/x/genutil" @@ -20,8 +20,7 @@ import ( paramsclient "github.com/cosmos/cosmos-sdk/x/params/client" "github.com/cosmos/cosmos-sdk/x/slashing" "github.com/cosmos/cosmos-sdk/x/staking" - "github.com/cosmos/cosmos-sdk/x/upgrade" - upgradeclient "github.com/cosmos/cosmos-sdk/x/upgrade/client" + "github.com/cosmos/ibc-go/modules/capability" transfer "github.com/cosmos/ibc-go/v7/modules/apps/transfer" ibccore "github.com/cosmos/ibc-go/v7/modules/core" @@ -41,8 +40,6 @@ func DefaultEncoding() testutil.TestEncodingConfig { gov.NewAppModuleBasic( []govclient.ProposalHandler{ paramsclient.ProposalHandler, - upgradeclient.LegacyProposalHandler, - upgradeclient.LegacyCancelProposalHandler, }, ), params.AppModuleBasic{}, diff --git a/go.mod b/go.mod index dc9b5b80a..320c2fa60 100644 --- a/go.mod +++ b/go.mod @@ -1,8 +1,9 @@ module github.com/strangelove-ventures/interchaintest/v7 -go 1.19 +go 1.20 require ( + cosmossdk.io/x/upgrade v0.0.0-20230724130706-5442197d6bcd github.com/99designs/keyring v1.2.2 github.com/BurntSushi/toml v1.3.2 github.com/ChainSafe/go-schnorrkel/1 v0.0.0-00010101000000-000000000000 @@ -14,6 +15,7 @@ require ( github.com/cosmos/cosmos-sdk v0.50.0-beta.0.0.20230723220119-d68a1231a44b github.com/cosmos/go-bip39 v1.0.0 github.com/cosmos/gogoproto v1.4.10 + github.com/cosmos/ibc-go/modules/capability v1.0.0-rc3 github.com/cosmos/ibc-go/v7 v7.2.0 github.com/davecgh/go-spew v1.1.1 github.com/decred/dcrd/dcrec/secp256k1/v2 v2.0.1 @@ -51,42 +53,47 @@ require ( cloud.google.com/go/iam v1.1.0 // indirect cloud.google.com/go/storage v1.30.1 // indirect cosmossdk.io/api v0.7.0 // indirect + cosmossdk.io/collections v0.3.0 // indirect cosmossdk.io/core v0.9.0 // indirect cosmossdk.io/depinject v1.0.0-alpha.3 // indirect cosmossdk.io/errors v1.0.0 // indirect cosmossdk.io/log v1.1.1-0.20230704160919-88f2c830b0ca // indirect cosmossdk.io/math v1.0.1 // indirect - cosmossdk.io/tools/rosetta v0.2.1 // indirect + cosmossdk.io/store v1.0.0-alpha.1 // indirect + cosmossdk.io/x/tx v0.9.1 // indirect filippo.io/edwards25519 v1.0.0 // indirect github.com/99designs/go-keychain v0.0.0-20191008050251-8e49817e8af4 // indirect github.com/ChainSafe/go-schnorrkel v1.0.0 // indirect github.com/ComposableFi/go-subkey/v2 v2.0.0-tm03420 // indirect - github.com/CosmWasm/wasmvm v1.2.3 // indirect + github.com/CosmWasm/wasmvm v1.3.0 // indirect + github.com/DataDog/zstd v1.5.5 // indirect github.com/FactomProject/basen v0.0.0-20150613233007-fe3947df716e // indirect github.com/FactomProject/btcutilecc v0.0.0-20130527213604-d3a63a5752ec // indirect github.com/Microsoft/go-winio v0.6.0 // indirect - github.com/armon/go-metrics v0.4.1 // indirect github.com/aws/aws-sdk-go v1.44.224 // indirect github.com/benbjohnson/clock v1.3.0 // indirect github.com/beorn7/perks v1.0.1 // indirect github.com/bgentry/go-netrc v0.0.0-20140422174119-9fd32a8b3d3d // indirect github.com/bgentry/speakeasy v0.1.1-0.20220910012023-760eaf8b6816 // indirect + github.com/bits-and-blooms/bitset v1.8.0 // indirect github.com/btcsuite/btcd/btcec/v2 v2.3.2 // indirect github.com/cenkalti/backoff/v4 v4.1.3 // indirect github.com/cespare/xxhash v1.1.0 // indirect github.com/cespare/xxhash/v2 v2.2.0 // indirect github.com/chzyer/readline v1.5.1 // indirect - github.com/coinbase/rosetta-sdk-go/types v1.0.0 // indirect + github.com/cockroachdb/errors v1.10.0 // indirect + github.com/cockroachdb/logtags v0.0.0-20230118201751-21c54148d20b // indirect + github.com/cockroachdb/pebble v0.0.0-20230711190327-88bbab59ff4f // indirect + github.com/cockroachdb/redact v1.1.5 // indirect + github.com/cockroachdb/tokenbucket v0.0.0-20230613231145-182959a1fad6 // indirect github.com/cometbft/cometbft-db v0.8.0 // indirect - github.com/confio/ics23/go v0.9.0 // indirect github.com/cosmos/btcutil v1.0.5 // indirect + github.com/cosmos/cosmos-db v1.0.0 // indirect github.com/cosmos/cosmos-proto v1.0.0-beta.3 // indirect github.com/cosmos/gogogateway v1.2.0 // indirect github.com/cosmos/iavl v1.0.0-beta.2 // indirect github.com/cosmos/ics23/go v0.10.0 // indirect github.com/cosmos/ledger-cosmos-go v0.13.0 // indirect - github.com/cosmos/rosetta-sdk-go v0.10.0 // indirect - github.com/creachadair/taskgroup v0.4.2 // indirect github.com/danieljoos/wincred v1.1.2 // indirect github.com/deckarep/golang-set v1.8.0 // indirect github.com/decred/base58 v1.0.4 // indirect @@ -100,10 +107,13 @@ require ( github.com/docker/go-units v0.5.0 // indirect github.com/dustin/go-humanize v1.0.1 // indirect github.com/dvsekhvalnov/jose2go v1.5.0 // indirect + github.com/emicklei/dot v1.5.0 // indirect github.com/ethereum/go-ethereum v1.10.20 // indirect + github.com/fatih/color v1.15.0 // indirect github.com/felixge/httpsnoop v1.0.2 // indirect github.com/fsnotify/fsnotify v1.6.0 // indirect github.com/gdamore/encoding v1.0.0 // indirect + github.com/getsentry/sentry-go v0.22.0 // indirect github.com/go-kit/kit v0.12.0 // indirect github.com/go-kit/log v0.2.1 // indirect github.com/go-logfmt/logfmt v0.6.0 // indirect @@ -131,12 +141,17 @@ require ( github.com/gtank/ristretto255 v0.1.2 // indirect github.com/hashicorp/go-cleanhttp v0.5.2 // indirect github.com/hashicorp/go-getter v1.7.1 // indirect + github.com/hashicorp/go-hclog v1.5.0 // indirect github.com/hashicorp/go-immutable-radix v1.3.1 // indirect + github.com/hashicorp/go-metrics v0.5.1 // indirect + github.com/hashicorp/go-plugin v1.4.10 // indirect github.com/hashicorp/go-safetemp v1.0.0 // indirect github.com/hashicorp/golang-lru v0.5.5-0.20210104140557-80c98217689d // indirect github.com/hashicorp/hcl v1.0.0 // indirect + github.com/hashicorp/yamux v0.1.1 // indirect github.com/hdevalence/ed25519consensus v0.1.0 // indirect github.com/huandu/skiplist v1.2.0 // indirect + github.com/iancoleman/strcase v0.3.0 // indirect github.com/improbable-eng/grpc-web v0.15.0 // indirect github.com/inconshreveable/mousetrap v1.1.0 // indirect github.com/ipfs/go-cid v0.2.0 // indirect @@ -145,6 +160,8 @@ require ( github.com/kballard/go-shellquote v0.0.0-20180428030007-95032a82bc51 // indirect github.com/klauspost/compress v1.16.7 // indirect github.com/klauspost/cpuid/v2 v2.2.3 // indirect + github.com/kr/pretty v0.3.1 // indirect + github.com/kr/text v0.2.0 // indirect github.com/lib/pq v1.10.7 // indirect github.com/libp2p/go-buffer-pool v0.1.0 // indirect github.com/libp2p/go-openssl v0.1.0 // indirect @@ -171,6 +188,8 @@ require ( github.com/multiformats/go-multicodec v0.5.0 // indirect github.com/multiformats/go-multihash v0.2.1 // indirect github.com/multiformats/go-varint v0.0.6 // indirect + github.com/oasisprotocol/curve25519-voi v0.0.0-20230110094441-db37f07504ce // indirect + github.com/oklog/run v1.1.0 // indirect github.com/opencontainers/go-digest v1.0.0 // indirect github.com/opencontainers/image-spec v1.1.0-rc2 // indirect github.com/petermattis/goid v0.0.0-20230518223814-80aa455d8761 // indirect @@ -181,10 +200,10 @@ require ( github.com/prometheus/client_model v0.4.0 // indirect github.com/prometheus/common v0.44.0 // indirect github.com/prometheus/procfs v0.11.0 // indirect - github.com/rakyll/statik v0.1.7 // indirect github.com/rcrowley/go-metrics v0.0.0-20201227073835-cf1acfcdf475 // indirect github.com/remyoudompheng/bigfft v0.0.0-20230129092748-24d4a6f8daec // indirect github.com/rivo/uniseg v0.4.3 // indirect + github.com/rogpeppe/go-internal v1.11.0 // indirect github.com/rs/cors v1.8.3 // indirect github.com/rs/zerolog v1.29.1 // indirect github.com/sasha-s/go-deadlock v0.3.1 // indirect @@ -222,6 +241,7 @@ require ( gopkg.in/ini.v1 v1.67.0 // indirect gopkg.in/natefinch/npipe.v2 v2.0.0-20160621034901-c1b8fa8bdcce // indirect gopkg.in/yaml.v2 v2.4.0 // indirect + gotest.tools/v3 v3.5.0 // indirect lukechampine.com/blake3 v1.1.7 // indirect lukechampine.com/uint128 v1.2.0 // indirect modernc.org/cc/v3 v3.40.0 // indirect @@ -245,3 +265,5 @@ replace ( ) replace github.com/cosmos/ibc-go/v7 => github.com/notional-labs/ibc-go/v7 v7.0.0-20230724113134-e8c560b25881 + +replace github.com/CosmWasm/wasmd => github.com/notional-labs/wasmd v0.40.1-0.20230724133754-0a95e36cabc3 diff --git a/go.sum b/go.sum index a17b99c55..c8440f1cd 100644 --- a/go.sum +++ b/go.sum @@ -187,11 +187,12 @@ cloud.google.com/go/webrisk v1.4.0/go.mod h1:Hn8X6Zr+ziE2aNd8SliSDWpEnSS1u4R9+xX cloud.google.com/go/webrisk v1.5.0/go.mod h1:iPG6fr52Tv7sGk0H6qUFzmL3HHZev1htXuWDEEsqMTg= cloud.google.com/go/workflows v1.6.0/go.mod h1:6t9F5h/unJz41YqfBmqSASJSXccBLtD1Vwf+KmJENM0= cloud.google.com/go/workflows v1.7.0/go.mod h1:JhSrZuVZWuiDfKEFxU0/F1PQjmpnpcoISEXH2bcHC3M= -cosmossdk.io/api v0.3.1 h1:NNiOclKRR0AOlO4KIqeaG6PS6kswOMhHD0ir0SscNXE= -cosmossdk.io/api v0.3.1/go.mod h1:DfHfMkiNA2Uhy8fj0JJlOCYOBp4eWUUJ1te5zBGNyIw= +cosmossdk.io/api v0.7.0 h1:QsEMIWuv9xWDbF2HZnW4Lpu1/SejCztPu0LQx7t6MN4= cosmossdk.io/api v0.7.0/go.mod h1:kJFAEMLN57y0viszHDPLMmieF0471o5QAwwApa+270M= -cosmossdk.io/core v0.5.1 h1:vQVtFrIYOQJDV3f7rw4pjjVqc1id4+mE0L9hHP66pyI= -cosmossdk.io/core v0.5.1/go.mod h1:KZtwHCLjcFuo0nmDc24Xy6CRNEL9Vl/MeimQ2aC7NLE= +cosmossdk.io/client/v2 v2.0.0-20230724130706-5442197d6bcd h1:Xg/hp/Ml1YPCCxTklzgEIwhy80o7cEd7mvrIx0YS+H0= +cosmossdk.io/collections v0.3.0 h1:v0eEqLBxebAV+t+Ahwf9tSJOu95HVLINwROXx2TTZ08= +cosmossdk.io/collections v0.3.0/go.mod h1:CHE1+niUElL9ikCpevRZcp0yqQ4TU0TrEEGirN0mvIg= +cosmossdk.io/core v0.9.0 h1:30ScAOHDIUOCg1DKAwqkho9wuQJnu7GUrMcg0XLioic= cosmossdk.io/core v0.9.0/go.mod h1:NFgl5r41Q36+RixTvyrfsS6qQ65agCbZ1FTpnN7/G1Y= cosmossdk.io/depinject v1.0.0-alpha.3 h1:6evFIgj//Y3w09bqOUOzEpFj5tsxBqdc5CfkO7z+zfw= cosmossdk.io/depinject v1.0.0-alpha.3/go.mod h1:eRbcdQ7MRpIPEM5YUJh8k97nxHpYbc3sMUnEtt8HPWU= @@ -201,8 +202,15 @@ cosmossdk.io/log v1.1.1-0.20230704160919-88f2c830b0ca h1:msenprh2BLLRwNT7zN56TbB cosmossdk.io/log v1.1.1-0.20230704160919-88f2c830b0ca/go.mod h1:PkIAKXZvaxrTRc++z53XMRvFk8AcGGWYHcMIPzVYX9c= cosmossdk.io/math v1.0.1 h1:Qx3ifyOPaMLNH/89WeZFH268yCvU4xEcnPLu3sJqPPg= cosmossdk.io/math v1.0.1/go.mod h1:Ygz4wBHrgc7g0N+8+MrnTfS9LLn9aaTGa9hKopuym5k= -cosmossdk.io/tools/rosetta v0.2.1 h1:ddOMatOH+pbxWbrGJKRAawdBkPYLfKXutK9IETnjYxw= -cosmossdk.io/tools/rosetta v0.2.1/go.mod h1:Pqdc1FdvkNV3LcNIkYWt2RQY6IP1ge6YWZk8MhhO9Hw= +cosmossdk.io/store v1.0.0-alpha.1 h1:/151XxAgm0tiKuYrtJzMG61lf6enpPuP+D/hIN8cRjQ= +cosmossdk.io/store v1.0.0-alpha.1/go.mod h1:ejgU9GhRGMNBduVnDwC3RyhOmu4uKlNQlTiJgPmbDkI= +cosmossdk.io/x/circuit v0.0.0-20230724130706-5442197d6bcd h1:eN2ZRy3Aw89NESga/RvLR7/QzYHr1Ip0mCsi+ATo1+4= +cosmossdk.io/x/evidence v0.0.0-20230724130706-5442197d6bcd h1:nJ+cnzXGnxRg2a1OKcx4QLYImwlrnWE99pYbRaQSBes= +cosmossdk.io/x/feegrant v0.0.0-20230724130706-5442197d6bcd h1:of8W41/xzf9Yr68UMMxnodw5Nzo405psYZEie+IacGM= +cosmossdk.io/x/tx v0.9.1 h1:9pmmXA9Vs4qdouOFnzhsdsff2mif0f0kylMq5xTGhRI= +cosmossdk.io/x/tx v0.9.1/go.mod h1:/YFGTXG6+kyihd8YbfuJiXHV4R/mIMm2uvVzo80CIhA= +cosmossdk.io/x/upgrade v0.0.0-20230724130706-5442197d6bcd h1:bxUrk7NTpXxe9CPjz2kUS0tfHfnPoQTV+XCMcVFk9rM= +cosmossdk.io/x/upgrade v0.0.0-20230724130706-5442197d6bcd/go.mod h1:V3F7GY3iFACMLYYwm154Tke2bbCJyCSEyYeaPRNc5BY= dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod h1:H6x//7gZCb22OMCxBHrMx7a5I7Hp++hsVxbQ4BYO7hU= filippo.io/edwards25519 v1.0.0 h1:0wAIcmJUqRdI8IJ/3eGi5/HwXZWPujYXXlkrQogz0Ek= filippo.io/edwards25519 v1.0.0/go.mod h1:N1IkdkCkiLB6tki+MYJoSx2JTY9NUlxZE7eHn5EwJns= @@ -210,7 +218,7 @@ github.com/99designs/go-keychain v0.0.0-20191008050251-8e49817e8af4 h1:/vQbFIOMb github.com/99designs/go-keychain v0.0.0-20191008050251-8e49817e8af4/go.mod h1:hN7oaIRCjzsZ2dE+yG5k+rsdt3qcwykqK6HVGcKwsw4= github.com/99designs/keyring v1.2.2 h1:pZd3neh/EmUzWONb35LxQfvuY7kiSXAq3HQd97+XBn0= github.com/99designs/keyring v1.2.2/go.mod h1:wes/FrByc8j7lFOAGLGSNEg8f/PaI3cgTBqhFkHUrPk= -github.com/Azure/go-ansiterm v0.0.0-20210617225240-d185dfc1b5a1 h1:UQHMgLO+TxOElx5B5HZ4hJQsoJ/PvUvKRhJHDQXO8P8= +github.com/Azure/go-ansiterm v0.0.0-20230124172434-306776ec8161 h1:L/gRVlceqvL25UVaW/CKtUDjefjrs0SPonmDGUVOYP0= github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= github.com/BurntSushi/toml v1.3.2 h1:o7IhLm0Msx3BaB+n3Ag7L8EVlByGnpq14C4YWiu/gL8= github.com/BurntSushi/toml v1.3.2/go.mod h1:CxXYINrC8qIiEnFrOxCa7Jy5BFHlXnUU2pbicEuybxQ= @@ -221,11 +229,11 @@ github.com/ChainSafe/go-schnorrkel v1.0.0 h1:3aDA67lAykLaG1y3AOjs88dMxC88PgUuHRr github.com/ChainSafe/go-schnorrkel v1.0.0/go.mod h1:dpzHYVxLZcp8pjlV+O+UR8K0Hp/z7vcchBSbMBEhCw4= github.com/ComposableFi/go-subkey/v2 v2.0.0-tm03420 h1:oknQF/iIhf5lVjbwjsVDzDByupRhga8nhA3NAmwyHDA= github.com/ComposableFi/go-subkey/v2 v2.0.0-tm03420/go.mod h1:KYkiMX5AbOlXXYfxkrYPrRPV6EbVUALTQh5ptUOJzu8= -github.com/CosmWasm/wasmd v0.40.0-rc.1 h1:prIM2vP1jNh0zgs9seua5BgKdayBgp3FiHtwxFcZSGs= -github.com/CosmWasm/wasmd v0.40.0-rc.1/go.mod h1:uacdue6EGn9JA1TqBNHB3iCe4PCIChuFT23AzIl2VME= -github.com/CosmWasm/wasmvm v1.2.3 h1:OKYlobwmVGbl0eSn0mXoAAjE5hIuXnQCLPjbNd91sVY= -github.com/CosmWasm/wasmvm v1.2.3/go.mod h1:vW/E3h8j9xBQs9bCoijDuawKo9kCtxOaS8N8J7KFtkc= +github.com/CosmWasm/wasmvm v1.3.0 h1:x12X4bKlUPS7TT9QQP45+fJo2sp30GEbiSSgb9jsec8= +github.com/CosmWasm/wasmvm v1.3.0/go.mod h1:vW/E3h8j9xBQs9bCoijDuawKo9kCtxOaS8N8J7KFtkc= github.com/DataDog/datadog-go v3.2.0+incompatible/go.mod h1:LButxg5PwREeZtORoXG3tL4fMGNddJ+vMq1mwgfaqoQ= +github.com/DataDog/zstd v1.5.5 h1:oWf5W7GtOLgp6bciQYDmhHHjdhYkALu6S/5Ni9ZgSvQ= +github.com/DataDog/zstd v1.5.5/go.mod h1:g4AWEaM3yOg3HYfnJ3YIawPnVdXJh9QME85blwSAmyw= github.com/FactomProject/basen v0.0.0-20150613233007-fe3947df716e h1:ahyvB3q25YnZWly5Gq1ekg6jcmWaGj/vG/MhF4aisoc= github.com/FactomProject/basen v0.0.0-20150613233007-fe3947df716e/go.mod h1:kGUqhHd//musdITWjFvNTHn90WG9bMLBEPQZ17Cmlpw= github.com/FactomProject/btcutilecc v0.0.0-20130527213604-d3a63a5752ec h1:1Qb69mGp/UtRPn422BH4/Y4Q3SLUrD9KHuDkm8iodFc= @@ -257,8 +265,6 @@ github.com/apache/thrift v0.13.0/go.mod h1:cp2SuWMxlEZw2r+iP2GNCdIi4C1qmUzdZFSVb github.com/armon/circbuf v0.0.0-20150827004946-bbbad097214e/go.mod h1:3U/XgcO3hCbHZ8TKRvWD2dDTCfh9M9ya+I9JpbB7O8o= github.com/armon/consul-api v0.0.0-20180202201655-eb2c6b5be1b6/go.mod h1:grANhF5doyWs3UAsr3K4I6qtAmlQcZDesFNEHPZAzj8= github.com/armon/go-metrics v0.0.0-20180917152333-f0300d1749da/go.mod h1:Q73ZrmVTwzkszR9V5SSuryQ31EELlFMUz1kKyl939pY= -github.com/armon/go-metrics v0.4.1 h1:hR91U9KYmb6bLBYLQjyM+3j+rcd/UhE+G78SFnF8gJA= -github.com/armon/go-metrics v0.4.1/go.mod h1:E6amYzXo6aW1tqzoZGT755KkbgrJsSdpwZ+3JqfkOG4= github.com/armon/go-radix v0.0.0-20180808171621-7fddfc383310/go.mod h1:ufUuZ+zHj4x4TnLV4JWEpy2hxWSpsRywHrMgIH9cCH8= github.com/aryann/difflib v0.0.0-20170710044230-e206f873d14a/go.mod h1:DAHtR1m6lCRdSC2Tm3DSWRPvIPr6xNKyeHdqDQSQT+A= github.com/atotto/clipboard v0.1.4 h1:EH0zSVneZPSuFR11BlR9YppQTVDbh5+16AmcJi4g1z4= @@ -268,8 +274,7 @@ github.com/avast/retry-go/v4 v4.3.4/go.mod h1:rv+Nla6Vk3/ilU0H51VHddWHiwimzX66yZ github.com/aws/aws-lambda-go v1.13.3/go.mod h1:4UKl9IzQMoD+QF79YdCuzCwp8VbmG4VAQwij/eHl5CU= github.com/aws/aws-sdk-go v1.27.0/go.mod h1:KmX6BPdI08NWTb3/sm4ZGu5ShLoqVDhKgpiN924inxo= github.com/aws/aws-sdk-go v1.44.122/go.mod h1:y4AeaBuwd2Lk+GepC1E9v0qOiTws0MIWAX4oIKwKHZo= -github.com/aws/aws-sdk-go v1.44.203 h1:pcsP805b9acL3wUqa4JR2vg1k2wnItkDYNvfmcy6F+U= -github.com/aws/aws-sdk-go v1.44.203/go.mod h1:aVsgQcEevwlmQ7qHE9I3h+dtQgpqhFB+i8Phjh7fkwI= +github.com/aws/aws-sdk-go v1.44.224 h1:09CiaaF35nRmxrzWZ2uRq5v6Ghg/d2RiPjZnSgtt+RQ= github.com/aws/aws-sdk-go v1.44.224/go.mod h1:aVsgQcEevwlmQ7qHE9I3h+dtQgpqhFB+i8Phjh7fkwI= github.com/aws/aws-sdk-go-v2 v0.18.0/go.mod h1:JWVYvqSMppoMJC0x5wdwiImzgXTI9FuZwxzkQq9wy+g= github.com/benbjohnson/clock v1.1.0/go.mod h1:J11/hYXuz8f4ySSvYwY0FKfm+ezbsZBKZxNJlLklBHA= @@ -284,12 +289,14 @@ github.com/bgentry/go-netrc v0.0.0-20140422174119-9fd32a8b3d3d/go.mod h1:6QX/PXZ github.com/bgentry/speakeasy v0.1.0/go.mod h1:+zsyZBPWlz7T6j88CTgSN5bM796AkVf0kBD4zp0CCIs= github.com/bgentry/speakeasy v0.1.1-0.20220910012023-760eaf8b6816 h1:41iFGWnSlI2gVpmOtVTJZNodLdLQLn/KsJqFvXwnd/s= github.com/bgentry/speakeasy v0.1.1-0.20220910012023-760eaf8b6816/go.mod h1:+zsyZBPWlz7T6j88CTgSN5bM796AkVf0kBD4zp0CCIs= +github.com/bits-and-blooms/bitset v1.8.0 h1:FD+XqgOZDUxxZ8hzoBFuV9+cGWY9CslN6d5MS5JVb4c= +github.com/bits-and-blooms/bitset v1.8.0/go.mod h1:7hO7Gc7Pp1vODcmWvKMRA9BNmbv6a/7QIWpPxHddWR8= github.com/btcsuite/btcd/btcec/v2 v2.3.2 h1:5n0X6hX0Zk+6omWcihdYvdAlGf2DfasC0GMf7DClJ3U= github.com/btcsuite/btcd/btcec/v2 v2.3.2/go.mod h1:zYzJ8etWJQIv1Ogk7OzpWjowwOdXY1W/17j2MW85J04= -github.com/btcsuite/btcd/btcutil v1.1.2 h1:XLMbX8JQEiwMcYft2EGi8zPUkoa0abKIU6/BJSRsjzQ= +github.com/btcsuite/btcd/btcutil v1.1.3 h1:xfbtw8lwpp0G6NwSHb+UE67ryTFHJAiNuipusjXSohQ= github.com/btcsuite/btcd/chaincfg/chainhash v1.0.1 h1:q0rUy8C/TYNBQS1+CGKw68tLOFYSNEs0TFnxxnS9+4U= github.com/btcsuite/btcutil v1.0.3-0.20201208143702-a53e38424cce h1:YtWJF7RHm2pYCvA5t0RPmAaLUhREsKuKd+SLhxFbFeQ= -github.com/bufbuild/protocompile v0.4.0 h1:LbFKd2XowZvQ/kajzguUp2DC9UEIQhIq77fZZlaQsNA= +github.com/bufbuild/protocompile v0.5.1 h1:mixz5lJX4Hiz4FpqFREJHIXLfaLBntfaJv1h+/jS+Qg= github.com/casbin/casbin/v2 v2.1.2/go.mod h1:YcPU1XXisHhLzuxH9coDNf2FbKpjGlbCg3n9yuLkIJQ= github.com/cenkalti/backoff v2.2.1+incompatible h1:tNowT99t7UNflLxfYYSlKYsBpXdEet03Pg2g16Swow4= github.com/cenkalti/backoff v2.2.1+incompatible/go.mod h1:90ReRw6GdpyfrHakVjL/QHaoyV4aDUVVkXQJJJ3NXXM= @@ -330,16 +337,22 @@ github.com/cncf/xds/go v0.0.0-20211011173535-cb28da3451f1/go.mod h1:eXthEFrGJvWH github.com/cockroachdb/apd/v2 v2.0.2 h1:weh8u7Cneje73dDh+2tEVLUvyBc89iwepWCD8b8034E= github.com/cockroachdb/apd/v3 v3.1.0 h1:MK3Ow7LH0W8zkd5GMKA1PvS9qG3bWFI95WaVNfyZJ/w= github.com/cockroachdb/datadriven v0.0.0-20190809214429-80d97fb3cbaa/go.mod h1:zn76sxSg3SzpJ0PPJaLDCu+Bu0Lg3sKTORVIj19EIF8= +github.com/cockroachdb/datadriven v1.0.3-0.20230413201302-be42291fc80f h1:otljaYPt5hWxV3MUfO5dFPFiOXg9CyG5/kCfayTqsJ4= +github.com/cockroachdb/errors v1.10.0 h1:lfxS8zZz1+OjtV4MtNWgboi/W5tyLEB6VQZBXN+0VUU= +github.com/cockroachdb/errors v1.10.0/go.mod h1:lknhIsEVQ9Ss/qKDBQS/UqFSvPQjOwNq2qyKAxtHRqE= +github.com/cockroachdb/logtags v0.0.0-20230118201751-21c54148d20b h1:r6VH0faHjZeQy818SGhaone5OnYfxFR/+AzdY3sf5aE= +github.com/cockroachdb/logtags v0.0.0-20230118201751-21c54148d20b/go.mod h1:Vz9DsVWQQhf3vs21MhPMZpMGSht7O/2vFW2xusFUVOs= +github.com/cockroachdb/pebble v0.0.0-20230711190327-88bbab59ff4f h1:V7Cg5eC+VAHz4rusEB1/kSEQ1mbhHJfV0RICDcTBFLw= +github.com/cockroachdb/pebble v0.0.0-20230711190327-88bbab59ff4f/go.mod h1:FN5O47SBEz5+kO9fG8UTR64g2WS1u5ZFCgTvxGjoSks= +github.com/cockroachdb/redact v1.1.5 h1:u1PMllDkdFfPWaNGMyLD1+so+aq3uUItthCFqzwPJ30= +github.com/cockroachdb/redact v1.1.5/go.mod h1:BVNblN9mBWFyMyqK1k3AAiSxhvhfK2oOZZ2lK+dpvRg= +github.com/cockroachdb/tokenbucket v0.0.0-20230613231145-182959a1fad6 h1:DJK8W/iB+s/qkTtmXSrHA49lp5O3OsR7E6z4byOLy34= +github.com/cockroachdb/tokenbucket v0.0.0-20230613231145-182959a1fad6/go.mod h1:7nc4anLGjupUW/PeY5qiNYsdNXj7zopG+eqsS7To5IQ= github.com/codahale/hdrhistogram v0.0.0-20161010025455-3a0bb77429bd/go.mod h1:sE/e/2PUdi/liOCUjSTXgM1o87ZssimdTWN964YiIeI= -github.com/coinbase/rosetta-sdk-go/types v1.0.0 h1:jpVIwLcPoOeCR6o1tU+Xv7r5bMONNbHU7MuEHboiFuA= -github.com/coinbase/rosetta-sdk-go/types v1.0.0/go.mod h1:eq7W2TMRH22GTW0N0beDnN931DW0/WOI1R2sdHNHG4c= -github.com/cometbft/cometbft v0.37.2 h1:XB0yyHGT0lwmJlFmM4+rsRnczPlHoAKFX6K8Zgc2/Jc= -github.com/cometbft/cometbft v0.37.2/go.mod h1:Y2MMMN//O5K4YKd8ze4r9jmk4Y7h0ajqILXbH5JQFVs= +github.com/cometbft/cometbft v0.38.0-rc3 h1:Ly3eVPWoFu0y68PmZwLljucPdEBtfigZtqm+OV1W6dE= github.com/cometbft/cometbft v0.38.0-rc3/go.mod h1:5Jz0Z8YsHSf0ZaAqGvi/ifioSdVFPtEGrm8Y9T/993k= github.com/cometbft/cometbft-db v0.8.0 h1:vUMDaH3ApkX8m0KZvOFFy9b5DZHBAjsnEuo9AKVZpjo= github.com/cometbft/cometbft-db v0.8.0/go.mod h1:6ASCP4pfhmrCBpfk01/9E1SI29nD3HfVHrY4PG8x5c0= -github.com/confio/ics23/go v0.9.0 h1:cWs+wdbS2KRPZezoaaj+qBleXgUk5WOQFMP3CQFGTr4= -github.com/confio/ics23/go v0.9.0/go.mod h1:4LPZ2NYqnYIVRklaozjNR1FScgDJ2s5Xrp+e/mYVRak= github.com/containerd/continuity v0.3.0 h1:nisirsYROK15TAMVukJOUyGJjz4BNQJBVsNvAXZJ/eg= github.com/coreos/etcd v3.3.10+incompatible/go.mod h1:uF7uidLiAD3TWHmW31ZFd/JWoc32PjwdhPthX9715RE= github.com/coreos/go-etcd v2.0.0+incompatible/go.mod h1:Jez6KQU2B/sWsbdaef3ED8NzMklzPG4d5KIOhIy30Tk= @@ -349,11 +362,10 @@ github.com/coreos/go-systemd/v22 v22.5.0/go.mod h1:Y58oyj3AT4RCenI/lSvhwexgC+NSV github.com/coreos/pkg v0.0.0-20160727233714-3ac0863d7acf/go.mod h1:E3G3o1h8I7cfcXa63jLwjI0eiQQMgzzUDFVpN/nH/eA= github.com/cosmos/btcutil v1.0.5 h1:t+ZFcX77LpKtDBhjucvnOH8C2l2ioGsBNEQ3jef8xFk= github.com/cosmos/btcutil v1.0.5/go.mod h1:IyB7iuqZMJlthe2tkIFL33xPyzbFYP0XVdS8P5lUPis= -github.com/cosmos/cosmos-proto v1.0.0-beta.2 h1:X3OKvWgK9Gsejo0F1qs5l8Qn6xJV/AzgIWR2wZ8Nua8= -github.com/cosmos/cosmos-proto v1.0.0-beta.2/go.mod h1:+XRCLJ14pr5HFEHIUcn51IKXD1Fy3rkEQqt4WqmN4V0= +github.com/cosmos/cosmos-db v1.0.0 h1:EVcQZ+qYag7W6uorBKFPvX6gRjw6Uq2hIh4hCWjuQ0E= +github.com/cosmos/cosmos-db v1.0.0/go.mod h1:iBvi1TtqaedwLdcrZVYRSSCb6eSy61NLj4UNmdIgs0U= +github.com/cosmos/cosmos-proto v1.0.0-beta.3 h1:VitvZ1lPORTVxkmF2fAp3IiA61xVwArQYKXTdEcpW6o= github.com/cosmos/cosmos-proto v1.0.0-beta.3/go.mod h1:t8IASdLaAq+bbHbjq4p960BvcTqtwuAxid3b/2rOD6I= -github.com/cosmos/cosmos-sdk v0.47.4 h1:FVUpEprm58nMmBX4xkRdMDaIG5Nr4yy92HZAfGAw9bg= -github.com/cosmos/cosmos-sdk v0.47.4/go.mod h1:R5n+uM7vguVPFap4pgkdvQCT1nVo/OtPwrlAU40rvok= github.com/cosmos/cosmos-sdk v0.50.0-beta.0.0.20230723220119-d68a1231a44b h1:gj5xt5WtP8akQjo7DWcR20W+vfYfV5yB9QA6asI3xQQ= github.com/cosmos/cosmos-sdk v0.50.0-beta.0.0.20230723220119-d68a1231a44b/go.mod h1:MF/wnXyreoL0g8YdRZhUD4apPdgebMc29LgMJB+dh6M= github.com/cosmos/go-bip39 v0.0.0-20180819234021-555e2067c45d/go.mod h1:tSxLoYXyBmiFeKpvmq4dzayMdCjCnu8uqmCysIGBT2Y= @@ -364,24 +376,19 @@ github.com/cosmos/gogogateway v1.2.0/go.mod h1:iQpLkGWxYcnCdz5iAdLcRBSw3h7NXeOkZ github.com/cosmos/gogoproto v1.4.2/go.mod h1:cLxOsn1ljAHSV527CHOtaIP91kK6cCrZETRBrkzItWU= github.com/cosmos/gogoproto v1.4.10 h1:QH/yT8X+c0F4ZDacDv3z+xE3WU1P1Z3wQoLMBRJoKuI= github.com/cosmos/gogoproto v1.4.10/go.mod h1:3aAZzeRWpAwr+SS/LLkICX2/kDFyaYVzckBDzygIxek= -github.com/cosmos/iavl v0.20.0 h1:fTVznVlepH0KK8NyKq8w+U7c2L6jofa27aFX6YGlm38= -github.com/cosmos/iavl v0.20.0/go.mod h1:WO7FyvaZJoH65+HFOsDir7xU9FWk2w9cHXNW1XHcl7A= +github.com/cosmos/iavl v1.0.0-beta.2 h1:XOsIM80Yyml/KifCXEYOy9tWCXwMAbLa91n6pReW07Y= github.com/cosmos/iavl v1.0.0-beta.2/go.mod h1:EA97dJ07TBktRlG/iGzK6g1eCXNj1q3MGoFYkVzrwHE= -github.com/cosmos/ibc-go/v7 v7.2.0 h1:dx0DLUl7rxdyZ8NiT6UsrbzKOJx/w7s+BOaewFRH6cg= -github.com/cosmos/ibc-go/v7 v7.2.0/go.mod h1:OOcjKIRku/j1Xs1RgKK0yvKRrJ5iFuZYMetR1n3yMlc= +github.com/cosmos/ibc-go/modules/capability v1.0.0-rc3 h1:jEq48O/lE7dT34U6dJLLl8PaHSwerFrRqgaVVPg7J4A= +github.com/cosmos/ibc-go/modules/capability v1.0.0-rc3/go.mod h1:h+HXgDnFpzthSy7mKw3xCeOG1QZDiwlz7Vuw8eSevjg= github.com/cosmos/ics23/go v0.10.0 h1:iXqLLgp2Lp+EdpIuwXTYIQU+AiHj9mOC2X9ab++bZDM= github.com/cosmos/ics23/go v0.10.0/go.mod h1:ZfJSmng/TBNTBkFemHHHj5YY7VAU/MBU980F4VU1NG0= -github.com/cosmos/ledger-cosmos-go v0.12.1 h1:sMBxza5p/rNK/06nBSNmsI/WDqI0pVJFVNihy1Y984w= -github.com/cosmos/ledger-cosmos-go v0.12.1/go.mod h1:dhO6kj+Y+AHIOgAe4L9HL/6NDdyyth4q238I9yFpD2g= +github.com/cosmos/ledger-cosmos-go v0.13.0 h1:ex0CvCxToSR7j5WjrghPu2Bu9sSXKikjnVvUryNnx4s= github.com/cosmos/ledger-cosmos-go v0.13.0/go.mod h1:ZcqYgnfNJ6lAXe4HPtWgarNEY+B74i+2/8MhZw4ziiI= -github.com/cosmos/rosetta-sdk-go v0.10.0 h1:E5RhTruuoA7KTIXUcMicL76cffyeoyvNybzUGSKFTcM= -github.com/cosmos/rosetta-sdk-go v0.10.0/go.mod h1:SImAZkb96YbwvoRkzSMQB6noNJXFgWl/ENIznEoYQI4= github.com/cpuguy83/go-md2man v1.0.10/go.mod h1:SmD6nW6nTyfqj6ABTjUi3V3JVMnlJmwcJI5acqYI6dE= github.com/cpuguy83/go-md2man/v2 v2.0.0-20190314233015-f79a8a8ca69d/go.mod h1:maD7wRr/U5Z6m/iR4s+kqSMx2CaBsrgA7czyZG/E6dU= github.com/cpuguy83/go-md2man/v2 v2.0.2/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o= -github.com/creachadair/taskgroup v0.4.2 h1:jsBLdAJE42asreGss2xZGZ8fJra7WtwnHWeJFxv2Li8= -github.com/creachadair/taskgroup v0.4.2/go.mod h1:qiXUOSrbwAY3u0JPGTzObbE3yf9hcXHDKBZ2ZjpCbgM= github.com/creack/pty v1.1.7/go.mod h1:lj5s0c3V2DBrqTV7llrYr5NG6My20zk30Fl46Y7DoTY= +github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= github.com/cucumber/common/gherkin/go/v22 v22.0.0 h1:4K8NqptbvdOrjL9DEea6HFjSpbdT9+Q5kgLpmmsHYl0= github.com/cucumber/common/messages/go/v17 v17.1.1 h1:RNqopvIFyLWnKv0LfATh34SWBhXeoFTJnSrgm9cT/Ts= github.com/danieljoos/wincred v1.1.2 h1:QLdCxFs1/Yl4zduvBdcHB8goaYk9RARS2SgLLRuAyr0= @@ -395,13 +402,12 @@ github.com/decred/base58 v1.0.4 h1:QJC6B0E0rXOPA8U/kw2rP+qiRJsUaE2Er+pYb3siUeA= github.com/decred/base58 v1.0.4/go.mod h1:jJswKPEdvpFpvf7dsDvFZyLT22xZ9lWqEByX38oGd9E= github.com/decred/dcrd/chaincfg/chainhash v1.0.2 h1:rt5Vlq/jM3ZawwiacWjPa+smINyLRN07EO0cNBV6DGU= github.com/decred/dcrd/chaincfg/chainhash v1.0.2/go.mod h1:BpbrGgrPTr3YJYRN3Bm+D9NuaFd+zGyNeIKgrhCXK60= -github.com/decred/dcrd/crypto/blake256 v1.0.0 h1:/8DMNYp9SGi5f0w7uCm6d6M4OU2rGFK09Y2A4Xv7EE0= github.com/decred/dcrd/crypto/blake256 v1.0.0/go.mod h1:sQl2p6Y26YV+ZOcSTP6thNdn47hh8kt6rqSlvmrXFAc= +github.com/decred/dcrd/crypto/blake256 v1.0.1 h1:7PltbUIQB7u/FfZ39+DGa/ShuMyJ5ilcvdfma9wOH6Y= github.com/decred/dcrd/crypto/blake256 v1.0.1/go.mod h1:2OfgNZ5wDpcsFmHmCK5gZTPcCXqlm2ArzUIkw9czNJo= github.com/decred/dcrd/dcrec/secp256k1/v2 v2.0.1 h1:18HurQ6DfHeNvwIjvOmrgr44bPdtVaQAe/WWwHg9goM= github.com/decred/dcrd/dcrec/secp256k1/v2 v2.0.1/go.mod h1:XmyzkaXBy7ZvHdrTAlXAjpog8qKSAWa3ze7yqzWmgmc= -github.com/decred/dcrd/dcrec/secp256k1/v4 v4.1.0 h1:HbphB4TFFXpv7MNrT52FGrrgVXF1owhMVTHFZIlnvd4= -github.com/decred/dcrd/dcrec/secp256k1/v4 v4.1.0/go.mod h1:DZGJHZMqrU4JJqFAWUS2UO1+lbSKsdiOoYi9Zzey7Fc= +github.com/decred/dcrd/dcrec/secp256k1/v4 v4.2.0 h1:8UrgZ3GkP4i/CLijOJx79Yu+etlyjdBU4sfcs2WYQMs= github.com/decred/dcrd/dcrec/secp256k1/v4 v4.2.0/go.mod h1:v57UDF4pDQJcEfFUCRop3lJL149eHGSe9Jvczhzjo/0= github.com/desertbit/timer v0.0.0-20180107155436-c41aec40b27f h1:U5y3Y5UE0w7amNe7Z5G/twsBW0KEalRQXZzf8ufSh9I= github.com/desertbit/timer v0.0.0-20180107155436-c41aec40b27f/go.mod h1:xH/i4TFMt8koVQZ6WFms69WAsDWr2XsYL3Hkl7jkoLE= @@ -432,6 +438,8 @@ github.com/eapache/go-resiliency v1.1.0/go.mod h1:kFI+JgMyC7bLPUVY133qvEBtVayf5m github.com/eapache/go-xerial-snappy v0.0.0-20180814174437-776d5712da21/go.mod h1:+020luEh2TKB4/GOp8oxxtq0Daoen/Cii55CzbTV6DU= github.com/eapache/queue v1.1.0/go.mod h1:6eCeP0CKFpHLu8blIFXhExK/dRa7WDZfr6jVFPTqq+I= github.com/edsrzf/mmap-go v1.0.0/go.mod h1:YO35OhQPt3KJa3ryjFM5Bs14WD66h8eGKpfaBNrHW5M= +github.com/emicklei/dot v1.5.0 h1:tc9eKdCBTgoR68vJ6OcgMtI0SdrGDwLPPVaPA6XhX50= +github.com/emicklei/dot v1.5.0/go.mod h1:DeV7GvQtIw4h2u73RKBkkFdvVAz0D9fzeJrgPW6gy/s= github.com/envoyproxy/go-control-plane v0.6.9/go.mod h1:SBwIajubJHhxtWwsL9s8ss4safvEdbitLhGGK48rN6g= github.com/envoyproxy/go-control-plane v0.9.0/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= github.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= @@ -446,6 +454,9 @@ github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7 github.com/ethereum/go-ethereum v1.10.20 h1:75IW830ClSS40yrQC1ZCMZCt5I+zU16oqId2SiQwdQ4= github.com/ethereum/go-ethereum v1.10.20/go.mod h1:LWUN82TCHGpxB3En5HVmLLzPD7YSrEUFmFfN1nKkVN0= github.com/fatih/color v1.7.0/go.mod h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5KwzbycvMj4= +github.com/fatih/color v1.13.0/go.mod h1:kLAiJbzzSOZDVNGyDpeOxJ47H46qBXwg5ILebYFFOfk= +github.com/fatih/color v1.15.0 h1:kOqh6YHBtK8aywxGerMG2Eq3H6Qgoqeo13Bk2Mv/nBs= +github.com/fatih/color v1.15.0/go.mod h1:0h5ZqXfHYED7Bhv2ZJamyIOUej9KtShiJESRwBDUSsw= github.com/felixge/httpsnoop v1.0.1/go.mod h1:m8KPJKqk1gH5J9DgRY2ASl2lWCfGKXixSwevea8zH2U= github.com/felixge/httpsnoop v1.0.2 h1:+nS9g82KMXccJ/wp0zyRW9ZBHFETmMGtkk+2CTTrW4o= github.com/felixge/httpsnoop v1.0.2/go.mod h1:m8KPJKqk1gH5J9DgRY2ASl2lWCfGKXixSwevea8zH2U= @@ -463,11 +474,14 @@ github.com/gdamore/encoding v1.0.0/go.mod h1:alR0ol34c49FCSBLjhosxzcPHQbf2trDkoo github.com/gdamore/tcell/v2 v2.4.1-0.20210905002822-f057f0a857a1/go.mod h1:Az6Jt+M5idSED2YPGtwnfJV0kXohgdCBPmHGSYc1r04= github.com/gdamore/tcell/v2 v2.6.0 h1:OKbluoP9VYmJwZwq/iLb4BxwKcwGthaa1YNBJIyCySg= github.com/gdamore/tcell/v2 v2.6.0/go.mod h1:be9omFATkdr0D9qewWW3d+MEvl5dha+Etb5y65J2H8Y= +github.com/getsentry/sentry-go v0.22.0 h1:XNX9zKbv7baSEI65l+H1GEJgSeIC1c7EN5kluWaP6dM= +github.com/getsentry/sentry-go v0.22.0/go.mod h1:lc76E2QywIyW8WuBnwl8Lc4bkmQH4+w1gwTf25trprY= github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= github.com/gin-contrib/sse v0.1.0 h1:Y/yl/+YNO8GZSjAhjMsSuLt29uWRFHdHYUb5lYOV9qE= github.com/gin-contrib/sse v0.1.0/go.mod h1:RHrZQHXnP2xjPF+u1gW/2HnVO7nvIa9PG3Gm+fLHvGI= -github.com/gin-gonic/gin v1.6.3 h1:ahKqKTFpO5KTPHxWZjEdPScmYaGtLo8Y4DMHoEsnp14= github.com/gin-gonic/gin v1.6.3/go.mod h1:75u5sXoLsGZoRN5Sgbi1eraJ4GU3++wFwWzhwvtwp4M= +github.com/gin-gonic/gin v1.8.1 h1:4+fr/el88TOO3ewCmQr8cx/CtZ/umlIRIs5M4NTNjf8= +github.com/go-errors/errors v1.4.2 h1:J6MZopCL4uSllY1OfXM374weqZFFItUbrImctkmUxIA= github.com/go-gl/glfw v0.0.0-20190409004039-e6da0acd62b1/go.mod h1:vR7hzQXu2zJy9AVAgeJqvqgH9Q5CA+iKCZ2gyEVpxRU= github.com/go-gl/glfw/v3.3/glfw v0.0.0-20191125211704-12ad95a8df72/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= github.com/go-gl/glfw/v3.3/glfw v0.0.0-20200222043503-6f7a984d4dc4/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= @@ -486,12 +500,12 @@ github.com/go-logfmt/logfmt v0.6.0 h1:wGYYu3uicYdqXVgoYbvnkrPVXkuLM1p1ifugDMEdRi github.com/go-logfmt/logfmt v0.6.0/go.mod h1:WYhtIu8zTZfxdn5+rREduYbwxfcBr/Vr6KEVveWlfTs= github.com/go-ole/go-ole v1.2.6 h1:/Fpf6oFPoeFik9ty7siob0G6Ke8QvQEuVcuChpwXzpY= github.com/go-playground/assert/v2 v2.0.1/go.mod h1:VDjEfimB/XKnb+ZQfWdccd7VUvScMdVu0Titje2rxJ4= -github.com/go-playground/locales v0.13.0 h1:HyWk6mgj5qFqCT5fjGBuRArbVDfE4hi8+e8ceBS/t7Q= github.com/go-playground/locales v0.13.0/go.mod h1:taPMhCMXrRLJO55olJkUXHZBHCxTMfnGwq/HNwmWNS8= +github.com/go-playground/locales v0.14.0 h1:u50s323jtVGugKlcYeyzC0etD1HifMjqmJqb8WugfUU= github.com/go-playground/universal-translator v0.17.0/go.mod h1:UkSxE5sNxxRwHyU+Scu5vgOQjsIJAF8j9muTVoKLVtA= github.com/go-playground/universal-translator v0.18.0 h1:82dyy6p4OuJq4/CByFNOn/jYrnRPArHwAcmLoJZxyho= -github.com/go-playground/validator/v10 v10.2.0 h1:KgJ0snyC2R9VXYN2rneOtQcw5aHQB1Vv0sFl1UcHBOY= github.com/go-playground/validator/v10 v10.2.0/go.mod h1:uOYAAleCW8F/7oMFd6aG0GOhaH6EGOAJShg8Id5JGkI= +github.com/go-playground/validator/v10 v10.11.1 h1:prmOlTVv+YjZjmRmNSF3VmspqJIxJWXmqUsHwfTRRkQ= github.com/go-sql-driver/mysql v1.4.0/go.mod h1:zAC/RDZ24gD3HViQzih4MyKcchzm+sOG5ZlKdlhCg5w= github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY= github.com/go-stack/stack v1.8.1 h1:ntEHSVwIt7PNXNpgPmVfMrNhLtgjlmnZha2kOpuRiDw= @@ -501,12 +515,13 @@ github.com/gobwas/httphead v0.0.0-20180130184737-2c6c146eadee h1:s+21KNqlpePfkah github.com/gobwas/httphead v0.0.0-20180130184737-2c6c146eadee/go.mod h1:L0fX3K22YWvt/FAX9NnzrNzcI4wNYi9Yku4O0LKYflo= github.com/gobwas/pool v0.2.0 h1:QEmUOlnSjWtnpRGHF3SauEiOsy82Cup83Vf2LcMlnc8= github.com/gobwas/pool v0.2.0/go.mod h1:q8bcK0KcYlCgd9e7WYLm9LpyS+YeLd8JVDW6WezmKEw= -github.com/gobwas/ws v1.0.2 h1:CoAavW/wd/kulfZmSIBt6p24n4j7tHgNVCjsfHVNUbo= github.com/gobwas/ws v1.0.2/go.mod h1:szmBTxLgaFppYjEmNtny/v3w89xOydFnnZMcgRRu/EM= +github.com/gobwas/ws v1.1.0 h1:7RFti/xnNkMJnrK7D1yQ/iCIB5OrrY/54/H930kIbHA= +github.com/goccy/go-json v0.9.11 h1:/pAaQDLHEoCq/5FFmSKBswWmK6H0e8g4159Kc/X/nqk= github.com/godbus/dbus v0.0.0-20190726142602-4481cbc300e2 h1:ZpnhV/YsD2/4cESfV5+Hoeu/iUR3ruzNvZ+yQfO03a0= github.com/godbus/dbus v0.0.0-20190726142602-4481cbc300e2/go.mod h1:bBOAhwG1umN6/6ZUMtDFBMQR8jRg9O75tm9K00oMsK4= github.com/godbus/dbus/v5 v5.0.4/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA= -github.com/gofrs/uuid v4.3.0+incompatible h1:CaSVZxm5B+7o45rtab4jC2G37WGYX1zQfuU2i6DSvnc= +github.com/gofrs/uuid v4.4.0+incompatible h1:3qXRTX8/NbyulANqlc0lchS1gqAVxRgsuW1YrTJupqA= github.com/gogo/googleapis v1.1.0/go.mod h1:gf4bu3Q80BeJ6H1S1vYPm8/ELATdvryBaNFGgqEef3s= github.com/gogo/googleapis v1.4.1-0.20201022092350-68b0159b7869/go.mod h1:5YRNX2z1oM5gXdAkurHa942MDgEJyk02w4OecKY87+c= github.com/gogo/googleapis v1.4.1 h1:1Yx4Myt7BxzvUr5ldGSbwYiZG6t9wGBZ+8/fX3Wvtq0= @@ -601,7 +616,7 @@ github.com/google/pprof v0.0.0-20210407192527-94a9f03dee38/go.mod h1:kpwsk12EmLe github.com/google/pprof v0.0.0-20210601050228-01bbb1931b22/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= github.com/google/pprof v0.0.0-20210609004039-a478d1d731e9/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= github.com/google/pprof v0.0.0-20210720184732-4bb14d4b1be1/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= -github.com/google/pprof v0.0.0-20221118152302-e6195bd50e26 h1:Xim43kblpZXfIBQsbuBVKCudVG457BR2GZFIz3uw3hQ= +github.com/google/pprof v0.0.0-20230228050547-1710fef4ab10 h1:CqYfpuYIjnlNxM3msdyPRKabhXZWbKjf3Q8BWROFBso= github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI= github.com/google/s2a-go v0.1.4 h1:1kZ/sQM3srePvKs3tXAvQzo66XfcReoqFpIpIccE7Oc= github.com/google/s2a-go v0.1.4/go.mod h1:Ej+mSEMGRnqRzjc7VtF+jdBwYG5fuJfiZ8ELkjEwM0A= @@ -641,8 +656,7 @@ github.com/gorilla/websocket v1.5.0 h1:PPwGk2jz7EePpoHN/+ClbZu8SPxiqlu12wZP/3sWm github.com/gorilla/websocket v1.5.0/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= github.com/grpc-ecosystem/go-grpc-middleware v1.0.1-0.20190118093823-f849b5445de4/go.mod h1:FiyG127CGDf3tlThmgyCl78X/SZQqEOJBCDaAfeWzPs= github.com/grpc-ecosystem/go-grpc-middleware v1.2.2/go.mod h1:EaizFBKfUKtMIF5iaDEhniwNedqGo9FuLFzppDr3uwI= -github.com/grpc-ecosystem/go-grpc-middleware v1.3.0 h1:+9834+KizmvFV7pXQGSXQTsaWhq2GjuNUt0aUU0YBYw= -github.com/grpc-ecosystem/go-grpc-middleware v1.3.0/go.mod h1:z0ButlSOZa5vEBq9m2m2hlwIgKw+rp3sdCBRoJY+30Y= +github.com/grpc-ecosystem/go-grpc-middleware v1.4.0 h1:UH//fgunKIs4JdUbpDl1VZCDaL56wXCB/5+wF6uHfaI= github.com/grpc-ecosystem/go-grpc-middleware v1.4.0/go.mod h1:g5qyo/la0ALbONm6Vbp88Yd8NsDy6rZz+RcrMPxvld8= github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0/go.mod h1:8NvIoxWQoOIhqOTXgfV/d3M/q6VIi02HzZEHgUlZvzk= github.com/grpc-ecosystem/grpc-gateway v1.9.5/go.mod h1:vNeuVxBJEsws4ogUvrchl83t/GYV9WGTSLVdBhOQFDY= @@ -664,11 +678,17 @@ github.com/hashicorp/go-cleanhttp v0.5.2 h1:035FKYIWjmULyFRBKPs8TBQoi0x6d9G4xc9n github.com/hashicorp/go-cleanhttp v0.5.2/go.mod h1:kO/YDlP8L1346E6Sodw+PrpBSV4/SoxCXGY6BqNFT48= github.com/hashicorp/go-getter v1.7.1 h1:SWiSWN/42qdpR0MdhaOc/bLR48PLuP1ZQtYLRlM69uY= github.com/hashicorp/go-getter v1.7.1/go.mod h1:W7TalhMmbPmsSMdNjD0ZskARur/9GJ17cfHTRtXV744= +github.com/hashicorp/go-hclog v1.5.0 h1:bI2ocEMgcVlz55Oj1xZNBsVi900c7II+fWDyV9o+13c= +github.com/hashicorp/go-hclog v1.5.0/go.mod h1:W4Qnvbt70Wk/zYJryRzDRU/4r0kIg0PVHBcfoyhpF5M= github.com/hashicorp/go-immutable-radix v1.0.0/go.mod h1:0y9vanUI8NX6FsYoO3zeMjhV/C5i9g4Q3DwcSNZ4P60= github.com/hashicorp/go-immutable-radix v1.3.1 h1:DKHmCUm2hRBK510BaiZlwvpD40f8bJFeZnpfm2KLowc= github.com/hashicorp/go-immutable-radix v1.3.1/go.mod h1:0y9vanUI8NX6FsYoO3zeMjhV/C5i9g4Q3DwcSNZ4P60= +github.com/hashicorp/go-metrics v0.5.1 h1:rfPwUqFU6uZXNvGl4hzjY8LEBsqFVU4si1H9/Hqck/U= +github.com/hashicorp/go-metrics v0.5.1/go.mod h1:KEjodfebIOuBYSAe/bHTm+HChmKSxAOXPBieMLYozDE= github.com/hashicorp/go-msgpack v0.5.3/go.mod h1:ahLV/dePpqEmjfWmKiqvPkv/twdG7iPBM1vqhUKIvfM= github.com/hashicorp/go-multierror v1.0.0/go.mod h1:dHtQlpGsu+cZNNAkkCN/P3hoUDHhCYQXV3UM06sGGrk= +github.com/hashicorp/go-plugin v1.4.10 h1:xUbmA4jC6Dq163/fWcp8P3JuHilrHHMLNRxzGQJ9hNk= +github.com/hashicorp/go-plugin v1.4.10/go.mod h1:6/1TEzT0eQznvI/gV2CM29DLSkAK/e58mUWKVsPaph0= github.com/hashicorp/go-retryablehttp v0.5.3/go.mod h1:9B5zBasrRhHXnJnui7y6sL7es7NDiJgTc6Er0maI1Xs= github.com/hashicorp/go-rootcerts v1.0.0/go.mod h1:K6zTfqpRlCUIjkwsN4Z+hiSfzSTQa6eBIzfwKfwNnHU= github.com/hashicorp/go-safetemp v1.0.0 h1:2HR189eFNrjHQyENnQMMpCiBAsRxzbTMIgBhEyExpmo= @@ -676,8 +696,8 @@ github.com/hashicorp/go-safetemp v1.0.0/go.mod h1:oaerMy3BhqiTbVye6QuFhFtIceqFoD github.com/hashicorp/go-sockaddr v1.0.0/go.mod h1:7Xibr9yA9JjQq1JpNB2Vw7kxv8xerXegt+ozgdvDeDU= github.com/hashicorp/go-syslog v1.0.0/go.mod h1:qPfqrKkXGihmCqbJM2mZgkZGvKG1dFdvsLplgctolz4= github.com/hashicorp/go-uuid v1.0.0/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro= -github.com/hashicorp/go-uuid v1.0.1 h1:fv1ep09latC32wFoVwnqcnKJGnMSdBanPczbHAYm1BE= github.com/hashicorp/go-uuid v1.0.1/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro= +github.com/hashicorp/go-uuid v1.0.2 h1:cfejS+Tpcp13yd5nYHWDI6qVCny6wyX2Mt5SGur2IGE= github.com/hashicorp/go-version v1.2.0/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA= github.com/hashicorp/go-version v1.6.0 h1:feTTfFNnjP967rlCxM/I9g701jU+RN74YKx2mOkIeek= github.com/hashicorp/go-version v1.6.0/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA= @@ -692,6 +712,8 @@ github.com/hashicorp/logutils v1.0.0/go.mod h1:QIAnNjmIWmVIIkWDTG1z5v++HQmx9WQRO github.com/hashicorp/mdns v1.0.0/go.mod h1:tL+uN++7HEJ6SQLQ2/p+z2pH24WQKWjBPkE0mNTz8vQ= github.com/hashicorp/memberlist v0.1.3/go.mod h1:ajVTdAv/9Im8oMAAj5G31PhhMCZJV2pPBoIllUwCN7I= github.com/hashicorp/serf v0.8.2/go.mod h1:6hOLApaqBFA1NXqRQAsxw9QxuDEvNxSQRwA/JwenrHc= +github.com/hashicorp/yamux v0.1.1 h1:yrQxtgseBDrq9Y652vSRDvsKCJKOUD+GzTS4Y0Y8pvE= +github.com/hashicorp/yamux v0.1.1/go.mod h1:CtWFDAQgb7dxtzFs4tWbplKIe2jSi3+5vKbgIO0SLnQ= github.com/hdevalence/ed25519consensus v0.1.0 h1:jtBwzzcHuTmFrQN6xQZn6CQEO/V9f7HsjsjeEZ6auqU= github.com/hdevalence/ed25519consensus v0.1.0/go.mod h1:w3BHWjwJbFU29IRHL1Iqkw3sus+7FctEyM4RqDxYNzo= github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU= @@ -700,6 +722,8 @@ github.com/huandu/go-assert v1.1.5/go.mod h1:yOLvuqZwmcHIC5rIzrBhT7D3Q9c3GFnd0Jr github.com/huandu/skiplist v1.2.0 h1:gox56QD77HzSC0w+Ws3MH3iie755GBJU1OER3h5VsYw= github.com/huandu/skiplist v1.2.0/go.mod h1:7v3iFjLcSAzO4fN5B8dvebvo/qsfumiLiDXMrPiHF9w= github.com/hudl/fargo v1.3.0/go.mod h1:y3CKSmjA+wD2gak7sUSXTAoopbhU08POFhmITJgmKTg= +github.com/iancoleman/strcase v0.3.0 h1:nTXanmYxhfFAMjZL34Ov6gkzEsSJZ5DbhxWjvSASxEI= +github.com/iancoleman/strcase v0.3.0/go.mod h1:iwCmte+B7n89clKwxIoIXy/HfoL7AsD47ZCWhYzw7ho= github.com/ianlancetaylor/demangle v0.0.0-20181102032728-5e5cf60278f6/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= github.com/ianlancetaylor/demangle v0.0.0-20200824232613-28f6c0f3b639/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= github.com/icza/dyno v0.0.0-20220812133438-f0b6f8a18845 h1:H+uM0Bv88eur3ZSsd2NGKg3YIiuXxwxtlN7HjE66UTU= @@ -728,7 +752,6 @@ github.com/json-iterator/go v1.1.8/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/u github.com/json-iterator/go v1.1.9/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= github.com/json-iterator/go v1.1.10/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= github.com/json-iterator/go v1.1.12 h1:PV8peI4a0ysnczrg+LtxykD8LfKY9ML6u2jnxaEnrnM= -github.com/json-iterator/go v1.1.12/go.mod h1:e30LSqwooZae/UwlEbR2852Gd8hjQvJoHmT4TnhNGBo= github.com/jstemmer/go-junit-report v0.0.0-20190106144839-af01ea7f8024/go.mod h1:6v2b51hI/fHJwM22ozAgKL4VKDeJcHhJFhtBdhmNjmU= github.com/jstemmer/go-junit-report v0.9.1/go.mod h1:Brl9GWCQeLvo8nXZwPNNblvFj/XSXhF0NWZEnDohbsk= github.com/jtolds/gls v4.20.0+incompatible/go.mod h1:QJZ7F/aHp+rZTRtaJ1ow/lLfFfVYBRgL+9YlvaHOwJU= @@ -742,8 +765,7 @@ github.com/klauspost/compress v1.10.3/go.mod h1:aoV0uJVorq1K+umq18yTdKaF57EivdYs github.com/klauspost/compress v1.11.7/go.mod h1:aoV0uJVorq1K+umq18yTdKaF57EivdYsUV+/s2qKfXs= github.com/klauspost/compress v1.12.3/go.mod h1:8dP1Hq4DHOhN9w426knH3Rhby4rFm6D8eO+e+Dq5Gzg= github.com/klauspost/compress v1.15.11/go.mod h1:QPwzmACJjUTFsnSHH934V6woptycfrDDJnH7hvFVbGM= -github.com/klauspost/compress v1.16.3 h1:XuJt9zzcnaz6a16/OU53ZjWp/v7/42WcR5t2a0PcNQY= -github.com/klauspost/compress v1.16.3/go.mod h1:ntbaceVETuRiXiv4DpjP66DpAtAGkEQskQzEyD//IeE= +github.com/klauspost/compress v1.16.7 h1:2mk3MPGNzKyxErAw8YaohYh69+pa4sIQSC0fPGCFR9I= github.com/klauspost/compress v1.16.7/go.mod h1:ntbaceVETuRiXiv4DpjP66DpAtAGkEQskQzEyD//IeE= github.com/klauspost/cpuid/v2 v2.0.4/go.mod h1:FInQzS24/EEf25PyTYn52gqo7WaD8xa0213Md/qVLRg= github.com/klauspost/cpuid/v2 v2.0.9/go.mod h1:FInQzS24/EEf25PyTYn52gqo7WaD8xa0213Md/qVLRg= @@ -755,9 +777,11 @@ github.com/kr/fs v0.1.0/go.mod h1:FFnZGqtBN9Gxj7eW1uZ42v5BccTP0vu6NEaFoC2HwRg= github.com/kr/logfmt v0.0.0-20140226030751-b84e30acd515/go.mod h1:+0opPa2QZZtGFBFZlji/RkVcI2GknAs/DXo4wKdlNEc= github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE= +github.com/kr/pretty v0.3.1/go.mod h1:hoEshYVHaxMs3cyo3Yncou5ZscifuDolrwPKZanG3xk= github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= +github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE= github.com/leodido/go-urn v1.2.0/go.mod h1:+8+nEpDfqqsY+g338gtMEUOtuK+4dEMhiQEgxpxOKII= github.com/leodido/go-urn v1.2.1 h1:BqpAaACuzVSgi/VLzGZIobT2z4v53pjosyNd9Yv6n/w= github.com/lib/pq v1.10.7 h1:p7ZhMD+KsSRozJr34udlUrhboJwWAgCg34+/ZZNvZZw= @@ -770,8 +794,7 @@ github.com/libp2p/go-openssl v0.1.0 h1:LBkKEcUv6vtZIQLVTegAil8jbNpJErQ9AnT+bWV+O github.com/libp2p/go-openssl v0.1.0/go.mod h1:OiOxwPpL3n4xlenjx2h7AwSGaFSC/KZvf6gNdOBQMtc= github.com/lightstep/lightstep-tracer-common/golang/gogo v0.0.0-20190605223551-bc2310a04743/go.mod h1:qklhhLq1aX+mtWk9cPHPzaBjWImj5ULL6C7HFJtXQMM= github.com/lightstep/lightstep-tracer-go v0.18.1/go.mod h1:jlF1pusYV4pidLvZ+XD0UBX0ZE6WURAspgAczcDHrL4= -github.com/linxGnu/grocksdb v1.7.16 h1:Q2co1xrpdkr5Hx3Fp+f+f7fRGhQFQhvi/+226dtLmA8= -github.com/linxGnu/grocksdb v1.7.16/go.mod h1:JkS7pl5qWpGpuVb3bPqTz8nC12X3YtPZT+Xq7+QfQo4= +github.com/linxGnu/grocksdb v1.8.0 h1:H4L/LhP7GOMf1j17oQAElHgVlbEje2h14A8Tz9cM2BE= github.com/linxGnu/grocksdb v1.8.0/go.mod h1:09CeBborffXhXdNpEcOeZrLKEnRtrZFEpFdPNI9Zjjg= github.com/lucasb-eyer/go-colorful v1.2.0 h1:1nnpGOrhyZZuNyfu1QjKiUICQ74+3FNCN69Aj6K7nkY= github.com/lucasb-eyer/go-colorful v1.2.0/go.mod h1:R4dSotOR9KMtayYi1e77YzuveK+i7ruzyGqttikkLy0= @@ -782,6 +805,7 @@ github.com/magiconair/properties v1.8.7/go.mod h1:Dhd985XPs7jluiymwWYZ0G4Z61jb3v github.com/manifoldco/promptui v0.9.0 h1:3V4HzJk1TtXW1MTZMP7mdlwbBpIinw3HztaIlYthEiA= github.com/manifoldco/promptui v0.9.0/go.mod h1:ka04sppxSGFAtxX0qhlYQjISsg9mR4GWtQEhdbn6Pgg= github.com/mattn/go-colorable v0.0.9/go.mod h1:9vuHe8Xs5qXnSaW/c/ABM9alt+Vo+STaOChaDxuIBZU= +github.com/mattn/go-colorable v0.1.9/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope9wVRipJSqc= github.com/mattn/go-colorable v0.1.12/go.mod h1:u5H1YNBxpqRaxsYJYSkiCWKzEfiAb1Gb520KVy5xxl4= github.com/mattn/go-colorable v0.1.13 h1:fFA4WZxdEF4tXPZVKMLwD8oUnCTTo08duU7wxecdEvA= github.com/mattn/go-colorable v0.1.13/go.mod h1:7S9/ev0klgBDR4GtXTXX8a3vIGJpMovkB8vQcUbaXHg= @@ -807,7 +831,6 @@ github.com/miekg/dns v1.0.14/go.mod h1:W1PPwlIAgtquWBMBEV9nkV9Cazfe8ScdGz/Lj7v3N github.com/mimoo/StrobeGo v0.0.0-20181016162300-f8f6d4d2b643/go.mod h1:43+3pMjjKimDBf5Kr4ZFNGbLql1zKkbImw+fZbw3geM= github.com/mimoo/StrobeGo v0.0.0-20220103164710-9a04d6ca976b h1:QrHweqAtyJ9EwCaGHBu1fghwxIPiopAHV06JlXrMHjk= github.com/mimoo/StrobeGo v0.0.0-20220103164710-9a04d6ca976b/go.mod h1:xxLb2ip6sSUts3g1irPVHyk/DGslwQsNOo9I7smJfNU= -github.com/minio/blake2b-simd v0.0.0-20160723061019-3f5f724cb5b1/go.mod h1:pD8RvIylQ358TN4wwqatJ8rNavkEINozVn9DtGI3dfQ= github.com/minio/highwayhash v1.0.2 h1:Aak5U0nElisjDCfPSG79Tgzkn2gl66NxOMspRrKnA/g= github.com/minio/highwayhash v1.0.2/go.mod h1:BQskDq+xkJ12lmlUUi7U0M5Swg3EWR+dLTk+kldvVxY= github.com/minio/sha256-simd v1.0.0 h1:v1ta+49hkWZyvaKwrQB8elexRqm6Y0aMLjCNsrYxo6g= @@ -827,14 +850,13 @@ github.com/mitchellh/mapstructure v0.0.0-20160808181253-ca63d7c062ee/go.mod h1:F github.com/mitchellh/mapstructure v1.1.2/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= github.com/mitchellh/mapstructure v1.5.0 h1:jeMsZIYE/09sWLaz43PL7Gy6RuMjD2eJVyuac5Z2hdY= github.com/mitchellh/mapstructure v1.5.0/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo= -github.com/moby/term v0.0.0-20220808134915-39b0c02b01ae h1:O4SWKdcHVCvYqyDV+9CJA1fcDN2L11Bule0iFy3YlAI= +github.com/moby/term v0.0.0-20221205130635-1aeaba878587 h1:HfkjXDfhgVaN5rmueG8cL8KKeFNecRCXFhaJ2qZ5SKA= github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd h1:TRLaZ9cD/w8PVh93nsPXa1VrQ6jlwL5oN8l14QlcNfg= github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= github.com/modern-go/reflect2 v0.0.0-20180701023420-4b7aa43c6742/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= github.com/modern-go/reflect2 v1.0.1/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= github.com/modern-go/reflect2 v1.0.2 h1:xBagoLtFs94CBntxluKeaWgTMpvLxC4ur3nMaC9Gz0M= -github.com/modern-go/reflect2 v1.0.2/go.mod h1:yWuevngMOJpCy52FWWMvUC8ws7m/LJsjYzDa0/r8luk= github.com/morikuni/aec v1.0.0 h1:nP9CBfwrvYnBRgY6qfDQkygYDmYwOilePFkwzv4dU8A= github.com/mr-tron/base58 v1.2.0 h1:T/HDJBh4ZCPbU39/+c3rRvE0uKBQlU27+QI8LJ4t64o= github.com/mr-tron/base58 v1.2.0/go.mod h1:BinMc/sQntlIE1frQmRFPUoPA1Zkr8VRgBdjWI2mNwc= @@ -866,12 +888,19 @@ github.com/nats-io/nkeys v0.1.0/go.mod h1:xpnFELMwJABBLVhffcfd1MZx6VsNRFpEugbxzi github.com/nats-io/nkeys v0.1.3/go.mod h1:xpnFELMwJABBLVhffcfd1MZx6VsNRFpEugbxziKVo7w= github.com/nats-io/nuid v1.0.1/go.mod h1:19wcPz3Ph3q0Jbyiqsd0kePYG7A95tJPxeL+1OSON2c= github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e/go.mod h1:zD1mROLANZcx1PVRCS0qkT7pwLkGfwJo4zjcN/Tysno= +github.com/notional-labs/ibc-go/v7 v7.0.0-20230724113134-e8c560b25881 h1:rSHEAjk58B73gADuyYxNTK3LhrieJ3kzEjNi709jLxI= github.com/notional-labs/ibc-go/v7 v7.0.0-20230724113134-e8c560b25881/go.mod h1:5kPKhT/m9Xo+G+kWtSmQl7XcPissS3vL/8d1BB1eL1I= +github.com/notional-labs/wasmd v0.40.1-0.20230724133754-0a95e36cabc3 h1:4f+wIWhgJVsbPbq7kzcoc7iBi/Y+LS9iWWG/9WuY6Sw= +github.com/notional-labs/wasmd v0.40.1-0.20230724133754-0a95e36cabc3/go.mod h1:ode6mZxHtQ+EMJTgP5qDc2eQOHCqe7fRHdhxJmBsgoM= github.com/nxadm/tail v1.4.4/go.mod h1:kenIhsEOeOJmVchQTgglprH7qJGnHDVpk1VPCcaMI8A= github.com/nxadm/tail v1.4.8 h1:nPr65rt6Y5JFSKQO7qToXr7pePgD6Gwiw05lkbyAQTE= github.com/nxadm/tail v1.4.8/go.mod h1:+ncqLTQzXmGhMZNUePPaPqPvBxHAIsmXswZKocGu+AU= +github.com/oasisprotocol/curve25519-voi v0.0.0-20230110094441-db37f07504ce h1:/pEpMk55wH0X+E5zedGEMOdLuWmV8P4+4W3+LZaM6kg= +github.com/oasisprotocol/curve25519-voi v0.0.0-20230110094441-db37f07504ce/go.mod h1:hVoHR2EVESiICEMbg137etN/Lx+lSrHPTD39Z/uE+2s= github.com/oklog/oklog v0.3.2/go.mod h1:FCV+B7mhrz4o+ueLpx+KqkyXRGMWOYEvfiXtdGtbWGs= github.com/oklog/run v1.0.0/go.mod h1:dlhp/R75TPv97u0XWUtDeV/lRKWPKSdTuV0TZvrmrQA= +github.com/oklog/run v1.1.0 h1:GEenZ1cK0+q0+wsJew9qUg/DyD8k3JzYsZAi5gYi2mA= +github.com/oklog/run v1.1.0/go.mod h1:sVPdnTZT1zYwAJeCMu2Th4T21pA3FPOQRfWjQlk7DVU= github.com/olekukonko/tablewriter v0.0.0-20170122224234-a0225b3f23b5/go.mod h1:vsDQFd/mU46D+Z4whnwzcISnGGzXWMclvtLoiIKAKIo= github.com/onsi/ginkgo v1.6.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= github.com/onsi/ginkgo v1.7.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= @@ -885,7 +914,7 @@ github.com/onsi/gomega v1.7.1/go.mod h1:XdKZgCCFLUoM/7CFJVPcG8C1xQ1AJ0vpAezJrB7J github.com/onsi/gomega v1.10.1/go.mod h1:iN09h71vgCQne3DLsj+A5owkum+a2tYe+TOCB1ybHNo= github.com/onsi/gomega v1.17.0/go.mod h1:HnhC7FXeEQY45zxNK3PPoIUhzk/80Xly9PcubAlGdZY= github.com/onsi/gomega v1.19.0/go.mod h1:LY+I3pBVzYsTBU1AnDwOSxaYi9WoWiqgwooUqq9yPro= -github.com/onsi/gomega v1.20.0 h1:8W0cWlwFkflGPLltQvLRB7ZVD5HuP6ng320w2IS245Q= +github.com/onsi/gomega v1.26.0 h1:03cDLK28U6hWvCAns6NeydX3zIm4SF3ci69ulidS32Q= github.com/op/go-logging v0.0.0-20160315200505-970db520ece7/go.mod h1:HzydrMdWErDVzsI23lYNej1Htcns9BCg93Dk0bBINWk= github.com/opencontainers/go-digest v1.0.0 h1:apOUWs51W5PlhuyGyz9FCeeBIOUDA/6nW8Oi/yOhh5U= github.com/opencontainers/go-digest v1.0.0/go.mod h1:0JzlMkj0TRzQZfJkVvzbP0HBR3IKzErnv2BNG4W4MAM= @@ -913,13 +942,14 @@ github.com/pelletier/go-toml/v2 v2.0.9 h1:uH2qQXheeefCCkuBBSLi7jCiSmj3VRh2+Goq2N github.com/pelletier/go-toml/v2 v2.0.9/go.mod h1:tJU2Z3ZkXwnxa4DPO899bsyIoywizdUvyaeZurnPPDc= github.com/performancecopilot/speed v3.0.0+incompatible/go.mod h1:/CLtqpZ5gBg1M9iaPbIdPPGyKcA8hKdoy6hAWba7Yac= github.com/petermattis/goid v0.0.0-20180202154549-b0b1615b78e5/go.mod h1:jvVRKCrJTQWu0XVbaOlby/2lO20uSCHEMzzplHXte1o= -github.com/petermattis/goid v0.0.0-20230317030725-371a4b8eda08 h1:hDSdbBuw3Lefr6R18ax0tZ2BJeNB3NehB3trOwYBsdU= -github.com/petermattis/goid v0.0.0-20230317030725-371a4b8eda08/go.mod h1:pxMtw7cyUw6B2bRH0ZBANSPg+AoSud1I1iyJHI69jH4= +github.com/petermattis/goid v0.0.0-20230518223814-80aa455d8761 h1:W04oB3d0J01W5jgYRGKsV8LCM6g9EkCvPkZcmFuy0OE= github.com/petermattis/goid v0.0.0-20230518223814-80aa455d8761/go.mod h1:pxMtw7cyUw6B2bRH0ZBANSPg+AoSud1I1iyJHI69jH4= github.com/pierrec/lz4 v1.0.2-0.20190131084431-473cd7ce01a1/go.mod h1:3/3N9NVKO0jef7pBehbT1qWhCMrIgbYNnFAZCqQ5LRc= github.com/pierrec/lz4 v2.0.5+incompatible/go.mod h1:pdkljMzZIN41W+lC3N2tnIh5sFi+IEE17M5jbnwPHcY= github.com/pierrec/xxHash v0.1.5 h1:n/jBpwTHiER4xYvK3/CdPVnLDPchj8eTJFFLUb4QHBo= github.com/pierrec/xxHash v0.1.5/go.mod h1:w2waW5Zoa/Wc4Yqe0wgrIYAGKqRMf7czn2HNKXmuL+I= +github.com/pingcap/errors v0.11.4 h1:lFuQV/oaUMGcD2tqt+01ROSmJs75VG1ToEOkZIZ4nE4= +github.com/pkg/diff v0.0.0-20210226163009-20ebb0f2a09e/go.mod h1:pJLUxLENpZxwdsKMEsNbx1VGcRFpLqf3715MtcvvzbA= github.com/pkg/errors v0.8.0/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4= @@ -935,8 +965,7 @@ github.com/prometheus/client_golang v1.0.0/go.mod h1:db9x61etRT2tGnBNRi70OPL5Fsn github.com/prometheus/client_golang v1.3.0/go.mod h1:hJaj2vgQTGQmVCsAACORcieXFeDPbaTKGT+JTgUa3og= github.com/prometheus/client_golang v1.4.0/go.mod h1:e9GMxYsXl05ICDXkRhurwBS4Q3OK1iX/F2sw+iXX5zU= github.com/prometheus/client_golang v1.7.1/go.mod h1:PY5Wy2awLA44sXw4AOSfFBetzPP4j5+D6mVACh+pe2M= -github.com/prometheus/client_golang v1.15.0 h1:5fCgGYogn0hFdhyhLbw7hEsWxufKtY9klyvdNfFlFhM= -github.com/prometheus/client_golang v1.15.0/go.mod h1:e9yaBhRPU2pPNsZwE+JdQl0KEt1N9XgF6zxWmaC0xOk= +github.com/prometheus/client_golang v1.16.0 h1:yk/hx9hDbrGHovbci4BY+pRMfSuuat626eFsHb7tmT8= github.com/prometheus/client_golang v1.16.0/go.mod h1:Zsulrv/L9oM40tJ7T815tM89lFEugiJ9HzIqaAx4LKc= github.com/prometheus/client_model v0.0.0-20180712105110-5c3871d89910/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo= github.com/prometheus/client_model v0.0.0-20190115171406-56726106282f/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo= @@ -944,8 +973,7 @@ github.com/prometheus/client_model v0.0.0-20190129233127-fd36f4220a90/go.mod h1: github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= github.com/prometheus/client_model v0.1.0/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= github.com/prometheus/client_model v0.2.0/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= -github.com/prometheus/client_model v0.3.0 h1:UBgGFHqYdG/TPFD1B1ogZywDqEkwp3fBMvqdiQ7Xew4= -github.com/prometheus/client_model v0.3.0/go.mod h1:LDGWKZIo7rky3hgvBe+caln+Dr3dPggB5dvjtD7w9+w= +github.com/prometheus/client_model v0.4.0 h1:5lQXD3cAg1OXBf4Wq03gTrXHeaV0TQvGfUooCfx1yqY= github.com/prometheus/client_model v0.4.0/go.mod h1:oMQmHW1/JoDwqLtg57MGgP/Fb1CJEYF2imWWhWtMkYU= github.com/prometheus/common v0.2.0/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4= github.com/prometheus/common v0.4.1/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4= @@ -953,8 +981,7 @@ github.com/prometheus/common v0.7.0/go.mod h1:DjGbpBbp5NYNiECxcL/VnbXCCaQpKd3tt2 github.com/prometheus/common v0.9.1/go.mod h1:yhUN8i9wzaXS3w1O07YhxHEBxD+W35wd8bs7vj7HSQ4= github.com/prometheus/common v0.10.0/go.mod h1:Tlit/dnDKsSWFlCLTWaA1cyBgKHSMdTB80sz/V91rCo= github.com/prometheus/common v0.15.0/go.mod h1:U+gB1OBLb1lF3O42bTCL+FK18tX9Oar16Clt/msog/s= -github.com/prometheus/common v0.42.0 h1:EKsfXEYo4JpWMHH5cg+KOUWeuJSov1Id8zGR8eeI1YM= -github.com/prometheus/common v0.42.0/go.mod h1:xBwqVerjNdUDjgODMpudtOMwlOwf2SaTr1yjz4b7Zbc= +github.com/prometheus/common v0.44.0 h1:+5BrQJwiBB9xsMygAB3TNvpQKOwlkc25LbISbrdOOfY= github.com/prometheus/common v0.44.0/go.mod h1:ofAIvZbQ1e/nugmZGz4/qCb9Ap1VoSTIO7x0VV9VvuY= github.com/prometheus/procfs v0.0.0-20181005140218-185b4288413d/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= github.com/prometheus/procfs v0.0.0-20190117184657-bf6a532e95b1/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= @@ -962,11 +989,8 @@ github.com/prometheus/procfs v0.0.2/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsT github.com/prometheus/procfs v0.0.8/go.mod h1:7Qr8sr6344vo1JqZ6HhLceV9o3AJ1Ff+GxbHq6oeK9A= github.com/prometheus/procfs v0.1.3/go.mod h1:lV6e/gmhEcM9IjHGsFOCxxuZ+z1YqCvr4OA4YeYWdaU= github.com/prometheus/procfs v0.3.0/go.mod h1:lV6e/gmhEcM9IjHGsFOCxxuZ+z1YqCvr4OA4YeYWdaU= -github.com/prometheus/procfs v0.9.0 h1:wzCHvIvM5SxWqYvwgVL7yJY8Lz3PKn49KQtpgMYJfhI= -github.com/prometheus/procfs v0.9.0/go.mod h1:+pB4zwohETzFnmlpe6yd2lSc+0/46IYZRB/chUwxUZY= +github.com/prometheus/procfs v0.11.0 h1:5EAgkfkMl659uZPbe9AS2N68a7Cc1TJbPEuGzFuRbyk= github.com/prometheus/procfs v0.11.0/go.mod h1:nwNm2aOCAYw8uTR/9bWRREkZFxAUcWzPHWJq+XBB/FM= -github.com/rakyll/statik v0.1.7 h1:OF3QCZUuyPxuGEP7B4ypUa7sB/iHtqOTDYZXGM8KOdQ= -github.com/rakyll/statik v0.1.7/go.mod h1:AlZONWzMtEnMs7W4e/1LURLiI49pIMmp6V9Unghqrcc= github.com/rcrowley/go-metrics v0.0.0-20181016184325-3113b8401b8a/go.mod h1:bCqnVzQkZxMG4s8nGwiZ5l3QUCyqpo9Y+/ZMZ9VjZe4= github.com/rcrowley/go-metrics v0.0.0-20201227073835-cf1acfcdf475 h1:N/ElC8H3+5XpJzTSTfLsJV/mx9Q9g7kxmchpfZyxgzM= github.com/rcrowley/go-metrics v0.0.0-20201227073835-cf1acfcdf475/go.mod h1:bCqnVzQkZxMG4s8nGwiZ5l3QUCyqpo9Y+/ZMZ9VjZe4= @@ -984,7 +1008,9 @@ github.com/rivo/uniseg v0.4.3/go.mod h1:FN3SvrM+Zdj16jyLfmOkMNblXMcoc8DfTHruCPUc github.com/rogpeppe/fastuuid v0.0.0-20150106093220-6724a57986af/go.mod h1:XWv6SoW27p1b0cqNHllgS5HIMJraePCO15w5zCzIWYg= github.com/rogpeppe/fastuuid v1.2.0/go.mod h1:jVj6XXZzXRy/MSR5jhDC/2q6DgLz+nrA6LYCDYWNEvQ= github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= -github.com/rogpeppe/go-internal v1.9.0 h1:73kH8U+JUqXU8lRuOHeVHaa/SZPifC7BkcraZVejAe8= +github.com/rogpeppe/go-internal v1.9.0/go.mod h1:WtVeX8xhTBvf0smdhujwtBcq4Qrzq/fJaraNFVN+nFs= +github.com/rogpeppe/go-internal v1.11.0 h1:cWPaGQEPrBb5/AsnsZesgZZ9yb1OQ+GOISoDNXVBh4M= +github.com/rogpeppe/go-internal v1.11.0/go.mod h1:ddIwULY96R17DhadqLgMfk9H9tvdUzkipdSkR5nkCZA= github.com/rs/cors v1.7.0/go.mod h1:gFx+x8UowdsKA9AchylcLynDq+nNFfI8FkUZdN/jGCU= github.com/rs/cors v1.8.3 h1:O+qNyWn7Z+F9M0ILBHgMVPuB1xTOucVd5gtaYyXBpRo= github.com/rs/cors v1.8.3/go.mod h1:XyqrcTp5zjWr1wsJ8PIRZssZ8b/WMcMf71DJnit4EMU= @@ -1159,8 +1185,7 @@ golang.org/x/exp v0.0.0-20200119233911-0405dc783f0a/go.mod h1:2RIsYlXP63K8oxa1u0 golang.org/x/exp v0.0.0-20200207192155-f17229e696bd/go.mod h1:J/WKrq2StrnmMY6+EHIKF9dgMWnmCNThgcyBT1FY9mM= golang.org/x/exp v0.0.0-20200224162631-6cc2880d07d6/go.mod h1:3jZMyOhIsHpP37uCMkUooju7aAi5cS1Q23tOzKc+0MU= golang.org/x/exp v0.0.0-20200331195152-e8c3332aa8e5/go.mod h1:4M0jN8W1tt0AVLNr8HDosyJCDCDuyL9N9+3m7wDWgKw= -golang.org/x/exp v0.0.0-20230515195305-f3d0a9c9a5cc h1:mCRnTeVUjcrhlRmO0VK8a6k6Rrf6TF9htwo2pJVSjIU= -golang.org/x/exp v0.0.0-20230515195305-f3d0a9c9a5cc/go.mod h1:V1LtkGg67GoY2N1AnLN78QLrzxkLyJw7RJb1gzOOz9w= +golang.org/x/exp v0.0.0-20230711153332-06a737ee72cb h1:xIApU0ow1zwMa2uL1VDNeQlNVFTWMQxZUZCMDy0Q4Us= golang.org/x/exp v0.0.0-20230711153332-06a737ee72cb/go.mod h1:FXUEEKJgO7OQYeo8N01OfiKP8RXMtf6e8aTskBGqWdc= golang.org/x/image v0.0.0-20190227222117-0694c2d4d067/go.mod h1:kZ7UVZpmo3dzQBMxlp+ypCbDeSB+sBbTgSJuh5dn5js= golang.org/x/image v0.0.0-20190802002840-cff245a6509b/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0= @@ -1425,7 +1450,7 @@ golang.org/x/time v0.0.0-20180412165947-fbb02b2291d2/go.mod h1:tRJNPiyCQ0inRvYxb golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20191024005414-555d28b269f0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= -golang.org/x/time v0.1.0 h1:xYY+Bajn2a7VBmTM5GikTmnK8ZuX8YgnQCqZpbBNtmA= +golang.org/x/time v0.3.0 h1:rg5rLMjNzMS1RkNLzCG38eapWhnYLFYXDXj2gOlr8j4= golang.org/x/tools v0.0.0-20180828015842-6cd1fcedba52/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= @@ -1768,8 +1793,8 @@ gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= -gotest.tools v2.2.0+incompatible h1:VsBPFP1AI068pPrMxtb/S8Zkgf9xEmTLJjfM+P5UIEo= gotest.tools/v3 v3.5.0 h1:Ljk6PdHdOhAb5aDMWXjDLMMhph+BpztA4v1QdqEW2eY= +gotest.tools/v3 v3.5.0/go.mod h1:isy3WKz7GK6uNw/sbHzfKBLvlvXwUyV06n6brMxxopU= honnef.co/go/tools v0.0.0-20180728063816-88497007e858/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= honnef.co/go/tools v0.0.0-20190106161140-3f1c8253044a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= @@ -1808,8 +1833,7 @@ modernc.org/token v1.0.1/go.mod h1:UGzOrNV1mAFSEB63lOFHIpNRUVMvYTc6yu1SMY/XTDM= modernc.org/z v1.7.3 h1:zDJf6iHjrnB+WRD88stbXokugjyc0/pB91ri1gO6LZY= nhooyr.io/websocket v1.8.6 h1:s+C3xAMLwGmlI31Nyn/eAehUlZPwfYZu2JXM621Q5/k= nhooyr.io/websocket v1.8.6/go.mod h1:B70DZP8IakI65RVQ51MsWP/8jndNma26DVA/nFSCgW0= -pgregory.net/rapid v0.5.5 h1:jkgx1TjbQPD/feRoK+S/mXw9e1uj6WilpHrXJowi6oA= -pgregory.net/rapid v0.5.5/go.mod h1:PY5XlDGj0+V1FCq0o192FdRhpKHGTRIWBgqjDBTrq04= +pgregory.net/rapid v1.0.0 h1:iQaM2w5PZ6xvt6x7hbd7tiDS+nk7YPp5uCaEba+T/F4= pgregory.net/rapid v1.0.0/go.mod h1:PY5XlDGj0+V1FCq0o192FdRhpKHGTRIWBgqjDBTrq04= rsc.io/binaryregexp v0.2.0/go.mod h1:qTv7/COck+e2FymRvadv62gMdZztPaShugOCi3I+8D8= rsc.io/quote/v3 v3.1.0/go.mod h1:yEA65RcK8LyAZtP9Kv3t0HmxON59tX3rD+tICJqUlj0= From 1b0bf838fc4b9d2bab483c21190d38083d208b86 Mon Sep 17 00:00:00 2001 From: Jacob Gadikian Date: Mon, 24 Jul 2023 22:08:52 +0800 Subject: [PATCH 03/22] use math lib and use store from 50 --- chain/cosmos/08-wasm-types/client_state.go | 25 +++++++++++----------- chain/cosmos/cosmos_chain.go | 7 +++--- interchain_test.go | 3 ++- 3 files changed, 19 insertions(+), 16 deletions(-) diff --git a/chain/cosmos/08-wasm-types/client_state.go b/chain/cosmos/08-wasm-types/client_state.go index eb0a8417f..b186cb0d5 100644 --- a/chain/cosmos/08-wasm-types/client_state.go +++ b/chain/cosmos/08-wasm-types/client_state.go @@ -1,6 +1,7 @@ package types import ( + storetypes "cosmossdk.io/store/types" "github.com/cosmos/cosmos-sdk/codec" sdk "github.com/cosmos/cosmos-sdk/types" clienttypes "github.com/cosmos/ibc-go/v7/modules/core/02-client/types" @@ -21,11 +22,11 @@ func (c ClientState) Validate() error { return nil } -func (c ClientState) Status(ctx sdk.Context, store sdk.KVStore, cdc codec.BinaryCodec) exported.Status { +func (c ClientState) Status(ctx sdk.Context, store storetypes.KVStore, cdc codec.BinaryCodec) exported.Status { return exported.Active } -func (c ClientState) ExportMetadata(store sdk.KVStore) []exported.GenesisMetadata { +func (c ClientState) ExportMetadata(store storetypes.KVStore) []exported.GenesisMetadata { return []exported.GenesisMetadata{} } @@ -35,20 +36,20 @@ func (c ClientState) ZeroCustomFields() exported.ClientState { func (c ClientState) GetTimestampAtHeight( ctx sdk.Context, - clientStore sdk.KVStore, + clientStore storetypes.KVStore, cdc codec.BinaryCodec, height exported.Height, ) (uint64, error) { return 0, nil } -func (c ClientState) Initialize(context sdk.Context, marshaler codec.BinaryCodec, store sdk.KVStore, state exported.ConsensusState) error { +func (c ClientState) Initialize(context sdk.Context, marshaler codec.BinaryCodec, store storetypes.KVStore, state exported.ConsensusState) error { return nil } func (c ClientState) VerifyMembership( ctx sdk.Context, - clientStore sdk.KVStore, + clientStore storetypes.KVStore, cdc codec.BinaryCodec, height exported.Height, delayTimePeriod uint64, @@ -62,7 +63,7 @@ func (c ClientState) VerifyMembership( func (c ClientState) VerifyNonMembership( ctx sdk.Context, - clientStore sdk.KVStore, + clientStore storetypes.KVStore, cdc codec.BinaryCodec, height exported.Height, delayTimePeriod uint64, @@ -77,26 +78,26 @@ func (c ClientState) VerifyNonMembership( // It must handle each type of ClientMessage appropriately. Calls to CheckForMisbehaviour, UpdateState, and UpdateStateOnMisbehaviour // will assume that the content of the ClientMessage has been verified and can be trusted. An error should be returned // if the ClientMessage fails to verify. -func (c ClientState) VerifyClientMessage(ctx sdk.Context, cdc codec.BinaryCodec, clientStore sdk.KVStore, clientMsg exported.ClientMessage) error { +func (c ClientState) VerifyClientMessage(ctx sdk.Context, cdc codec.BinaryCodec, clientStore storetypes.KVStore, clientMsg exported.ClientMessage) error { return nil } -func (c ClientState) CheckForMisbehaviour(ctx sdk.Context, cdc codec.BinaryCodec, clientStore sdk.KVStore, msg exported.ClientMessage) bool { +func (c ClientState) CheckForMisbehaviour(ctx sdk.Context, cdc codec.BinaryCodec, clientStore storetypes.KVStore, msg exported.ClientMessage) bool { return true } // UpdateStateOnMisbehaviour should perform appropriate state changes on a client state given that misbehaviour has been detected and verified -func (c ClientState) UpdateStateOnMisbehaviour(ctx sdk.Context, cdc codec.BinaryCodec, clientStore sdk.KVStore, clientMsg exported.ClientMessage) { +func (c ClientState) UpdateStateOnMisbehaviour(ctx sdk.Context, cdc codec.BinaryCodec, clientStore storetypes.KVStore, clientMsg exported.ClientMessage) { } -func (c ClientState) UpdateState(ctx sdk.Context, cdc codec.BinaryCodec, clientStore sdk.KVStore, clientMsg exported.ClientMessage) []exported.Height { +func (c ClientState) UpdateState(ctx sdk.Context, cdc codec.BinaryCodec, clientStore storetypes.KVStore, clientMsg exported.ClientMessage) []exported.Height { return []exported.Height{c.LatestHeight} } func (c ClientState) CheckSubstituteAndUpdateState( ctx sdk.Context, cdc codec.BinaryCodec, subjectClientStore, - substituteClientStore sdk.KVStore, substituteClient exported.ClientState, + substituteClientStore storetypes.KVStore, substituteClient exported.ClientState, ) error { return nil } @@ -104,7 +105,7 @@ func (c ClientState) CheckSubstituteAndUpdateState( func (c ClientState) VerifyUpgradeAndUpdateState( ctx sdk.Context, cdc codec.BinaryCodec, - store sdk.KVStore, + store storetypes.KVStore, newClient exported.ClientState, newConsState exported.ConsensusState, proofUpgradeClient, diff --git a/chain/cosmos/cosmos_chain.go b/chain/cosmos/cosmos_chain.go index cdea539e8..858841f89 100644 --- a/chain/cosmos/cosmos_chain.go +++ b/chain/cosmos/cosmos_chain.go @@ -13,6 +13,7 @@ import ( "strings" "sync" + sdkmath "cosmossdk.io/math" "github.com/cosmos/cosmos-sdk/codec" codectypes "github.com/cosmos/cosmos-sdk/codec/types" cryptocodec "github.com/cosmos/cosmos-sdk/crypto/codec" @@ -714,12 +715,12 @@ func (c *CosmosChain) Start(testName string, ctx context.Context, additionalGene chainCfg := c.Config() genesisAmount := types.Coin{ - Amount: types.NewInt(10_000_000_000_000), + Amount: sdkmath.NewInt(10_000_000_000_000), Denom: chainCfg.Denom, } genesisSelfDelegation := types.Coin{ - Amount: types.NewInt(5_000_000_000_000), + Amount: sdkmath.NewInt(5_000_000_000_000), Denom: chainCfg.Denom, } @@ -824,7 +825,7 @@ func (c *CosmosChain) Start(testName string, ctx context.Context, additionalGene } for _, wallet := range additionalGenesisWallets { - if err := validator0.AddGenesisAccount(ctx, wallet.Address, []types.Coin{{Denom: wallet.Denom, Amount: types.NewInt(wallet.Amount)}}); err != nil { + if err := validator0.AddGenesisAccount(ctx, wallet.Address, []types.Coin{{Denom: wallet.Denom, Amount: sdkmath.NewInt(wallet.Amount)}}); err != nil { return err } } diff --git a/interchain_test.go b/interchain_test.go index 77950022a..d571bb51b 100644 --- a/interchain_test.go +++ b/interchain_test.go @@ -5,6 +5,7 @@ import ( "fmt" "testing" + sdkmath "cosmossdk.io/math" "github.com/cosmos/cosmos-sdk/codec" codectypes "github.com/cosmos/cosmos-sdk/codec/types" cryptocodec "github.com/cosmos/cosmos-sdk/crypto/codec" @@ -309,7 +310,7 @@ func broadcastTxCosmosChainTest(t *testing.T, relayerImpl ibc.RelayerImplementat t.Run("broadcast success", func(t *testing.T) { b := cosmos.NewBroadcaster(t, gaia0.(*cosmos.CosmosChain)) - transferAmount := sdk.Coin{Denom: gaia0.Config().Denom, Amount: sdk.NewInt(sendAmount)} + transferAmount := sdk.Coin{Denom: gaia0.Config().Denom, Amount: sdkmath.NewInt(sendAmount)} memo := "" msg := transfertypes.NewMsgTransfer( From 190cc6da63632172f82aef8aab71c2e7700995e0 Mon Sep 17 00:00:00 2001 From: Jacob Gadikian Date: Wed, 26 Jul 2023 00:00:32 +0800 Subject: [PATCH 04/22] update packages --- go.mod | 10 +++++----- go.sum | 20 ++++++++++---------- 2 files changed, 15 insertions(+), 15 deletions(-) diff --git a/go.mod b/go.mod index 320c2fa60..46d109c12 100644 --- a/go.mod +++ b/go.mod @@ -3,6 +3,8 @@ module github.com/strangelove-ventures/interchaintest/v7 go 1.20 require ( + cosmossdk.io/math v1.0.1 + cosmossdk.io/store v1.0.0-alpha.1 cosmossdk.io/x/upgrade v0.0.0-20230724130706-5442197d6bcd github.com/99designs/keyring v1.2.2 github.com/BurntSushi/toml v1.3.2 @@ -12,7 +14,7 @@ require ( github.com/atotto/clipboard v0.1.4 github.com/avast/retry-go/v4 v4.3.4 github.com/cometbft/cometbft v0.38.0-rc3 - github.com/cosmos/cosmos-sdk v0.50.0-beta.0.0.20230723220119-d68a1231a44b + github.com/cosmos/cosmos-sdk v0.50.0-beta.0.0.20230725121928-d234c6aea2e1 github.com/cosmos/go-bip39 v1.0.0 github.com/cosmos/gogoproto v1.4.10 github.com/cosmos/ibc-go/modules/capability v1.0.0-rc3 @@ -58,8 +60,6 @@ require ( cosmossdk.io/depinject v1.0.0-alpha.3 // indirect cosmossdk.io/errors v1.0.0 // indirect cosmossdk.io/log v1.1.1-0.20230704160919-88f2c830b0ca // indirect - cosmossdk.io/math v1.0.1 // indirect - cosmossdk.io/store v1.0.0-alpha.1 // indirect cosmossdk.io/x/tx v0.9.1 // indirect filippo.io/edwards25519 v1.0.0 // indirect github.com/99designs/go-keychain v0.0.0-20191008050251-8e49817e8af4 // indirect @@ -264,6 +264,6 @@ replace ( github.com/vedhavyas/go-subkey => github.com/strangelove-ventures/go-subkey v1.0.7 ) -replace github.com/cosmos/ibc-go/v7 => github.com/notional-labs/ibc-go/v7 v7.0.0-20230724113134-e8c560b25881 +replace github.com/cosmos/ibc-go/v7 => github.com/notional-labs/ibc-go/v7 v7.0.0-20230725115016-ed60bbb0ec6f -replace github.com/CosmWasm/wasmd => github.com/notional-labs/wasmd v0.40.1-0.20230724133754-0a95e36cabc3 +replace github.com/CosmWasm/wasmd => github.com/notional-labs/wasmd v0.40.1-0.20230725154726-6f2a6f0a0bb3 diff --git a/go.sum b/go.sum index c8440f1cd..72a8fc41f 100644 --- a/go.sum +++ b/go.sum @@ -189,7 +189,7 @@ cloud.google.com/go/workflows v1.6.0/go.mod h1:6t9F5h/unJz41YqfBmqSASJSXccBLtD1V cloud.google.com/go/workflows v1.7.0/go.mod h1:JhSrZuVZWuiDfKEFxU0/F1PQjmpnpcoISEXH2bcHC3M= cosmossdk.io/api v0.7.0 h1:QsEMIWuv9xWDbF2HZnW4Lpu1/SejCztPu0LQx7t6MN4= cosmossdk.io/api v0.7.0/go.mod h1:kJFAEMLN57y0viszHDPLMmieF0471o5QAwwApa+270M= -cosmossdk.io/client/v2 v2.0.0-20230724130706-5442197d6bcd h1:Xg/hp/Ml1YPCCxTklzgEIwhy80o7cEd7mvrIx0YS+H0= +cosmossdk.io/client/v2 v2.0.0-20230722073756-0fa85b7a424d h1:lCk+DQKrWfikuV7fgKhiPRPE1w/LG80JZQaFUPGVG8o= cosmossdk.io/collections v0.3.0 h1:v0eEqLBxebAV+t+Ahwf9tSJOu95HVLINwROXx2TTZ08= cosmossdk.io/collections v0.3.0/go.mod h1:CHE1+niUElL9ikCpevRZcp0yqQ4TU0TrEEGirN0mvIg= cosmossdk.io/core v0.9.0 h1:30ScAOHDIUOCg1DKAwqkho9wuQJnu7GUrMcg0XLioic= @@ -204,9 +204,9 @@ cosmossdk.io/math v1.0.1 h1:Qx3ifyOPaMLNH/89WeZFH268yCvU4xEcnPLu3sJqPPg= cosmossdk.io/math v1.0.1/go.mod h1:Ygz4wBHrgc7g0N+8+MrnTfS9LLn9aaTGa9hKopuym5k= cosmossdk.io/store v1.0.0-alpha.1 h1:/151XxAgm0tiKuYrtJzMG61lf6enpPuP+D/hIN8cRjQ= cosmossdk.io/store v1.0.0-alpha.1/go.mod h1:ejgU9GhRGMNBduVnDwC3RyhOmu4uKlNQlTiJgPmbDkI= -cosmossdk.io/x/circuit v0.0.0-20230724130706-5442197d6bcd h1:eN2ZRy3Aw89NESga/RvLR7/QzYHr1Ip0mCsi+ATo1+4= -cosmossdk.io/x/evidence v0.0.0-20230724130706-5442197d6bcd h1:nJ+cnzXGnxRg2a1OKcx4QLYImwlrnWE99pYbRaQSBes= -cosmossdk.io/x/feegrant v0.0.0-20230724130706-5442197d6bcd h1:of8W41/xzf9Yr68UMMxnodw5Nzo405psYZEie+IacGM= +cosmossdk.io/x/circuit v0.0.0-20230722073756-0fa85b7a424d h1:pKQ4w2Ftqi41z0DZBy7zJD5jFJBoWryD2spG1iuGQvA= +cosmossdk.io/x/evidence v0.0.0-20230722073756-0fa85b7a424d h1:c9617QDbJH+0twSuNrUJKF7M3lNxYod744NGvLRQc+0= +cosmossdk.io/x/feegrant v0.0.0-20230722073756-0fa85b7a424d h1:89X9UB9p0zYlYHIqOtLQ0EHzJ1dAAmkWUKAaDMGws+c= cosmossdk.io/x/tx v0.9.1 h1:9pmmXA9Vs4qdouOFnzhsdsff2mif0f0kylMq5xTGhRI= cosmossdk.io/x/tx v0.9.1/go.mod h1:/YFGTXG6+kyihd8YbfuJiXHV4R/mIMm2uvVzo80CIhA= cosmossdk.io/x/upgrade v0.0.0-20230724130706-5442197d6bcd h1:bxUrk7NTpXxe9CPjz2kUS0tfHfnPoQTV+XCMcVFk9rM= @@ -366,8 +366,8 @@ github.com/cosmos/cosmos-db v1.0.0 h1:EVcQZ+qYag7W6uorBKFPvX6gRjw6Uq2hIh4hCWjuQ0 github.com/cosmos/cosmos-db v1.0.0/go.mod h1:iBvi1TtqaedwLdcrZVYRSSCb6eSy61NLj4UNmdIgs0U= github.com/cosmos/cosmos-proto v1.0.0-beta.3 h1:VitvZ1lPORTVxkmF2fAp3IiA61xVwArQYKXTdEcpW6o= github.com/cosmos/cosmos-proto v1.0.0-beta.3/go.mod h1:t8IASdLaAq+bbHbjq4p960BvcTqtwuAxid3b/2rOD6I= -github.com/cosmos/cosmos-sdk v0.50.0-beta.0.0.20230723220119-d68a1231a44b h1:gj5xt5WtP8akQjo7DWcR20W+vfYfV5yB9QA6asI3xQQ= -github.com/cosmos/cosmos-sdk v0.50.0-beta.0.0.20230723220119-d68a1231a44b/go.mod h1:MF/wnXyreoL0g8YdRZhUD4apPdgebMc29LgMJB+dh6M= +github.com/cosmos/cosmos-sdk v0.50.0-beta.0.0.20230725121928-d234c6aea2e1 h1:uUY7q8Rn55BON6BcvKgf8acoRtMiM3fterY7vhgx/+A= +github.com/cosmos/cosmos-sdk v0.50.0-beta.0.0.20230725121928-d234c6aea2e1/go.mod h1:MF/wnXyreoL0g8YdRZhUD4apPdgebMc29LgMJB+dh6M= github.com/cosmos/go-bip39 v0.0.0-20180819234021-555e2067c45d/go.mod h1:tSxLoYXyBmiFeKpvmq4dzayMdCjCnu8uqmCysIGBT2Y= github.com/cosmos/go-bip39 v1.0.0 h1:pcomnQdrdH22njcAatO0yWojsUnCO3y2tNoV1cb6hHY= github.com/cosmos/go-bip39 v1.0.0/go.mod h1:RNJv0H/pOIVgxw6KS7QeX2a0Uo0aKUlfhZ4xuwvCdJw= @@ -888,10 +888,10 @@ github.com/nats-io/nkeys v0.1.0/go.mod h1:xpnFELMwJABBLVhffcfd1MZx6VsNRFpEugbxzi github.com/nats-io/nkeys v0.1.3/go.mod h1:xpnFELMwJABBLVhffcfd1MZx6VsNRFpEugbxziKVo7w= github.com/nats-io/nuid v1.0.1/go.mod h1:19wcPz3Ph3q0Jbyiqsd0kePYG7A95tJPxeL+1OSON2c= github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e/go.mod h1:zD1mROLANZcx1PVRCS0qkT7pwLkGfwJo4zjcN/Tysno= -github.com/notional-labs/ibc-go/v7 v7.0.0-20230724113134-e8c560b25881 h1:rSHEAjk58B73gADuyYxNTK3LhrieJ3kzEjNi709jLxI= -github.com/notional-labs/ibc-go/v7 v7.0.0-20230724113134-e8c560b25881/go.mod h1:5kPKhT/m9Xo+G+kWtSmQl7XcPissS3vL/8d1BB1eL1I= -github.com/notional-labs/wasmd v0.40.1-0.20230724133754-0a95e36cabc3 h1:4f+wIWhgJVsbPbq7kzcoc7iBi/Y+LS9iWWG/9WuY6Sw= -github.com/notional-labs/wasmd v0.40.1-0.20230724133754-0a95e36cabc3/go.mod h1:ode6mZxHtQ+EMJTgP5qDc2eQOHCqe7fRHdhxJmBsgoM= +github.com/notional-labs/ibc-go/v7 v7.0.0-20230725115016-ed60bbb0ec6f h1:M9yame13/Er1yDvs5hZr4oFliB4frOxSsfEbEfjBeME= +github.com/notional-labs/ibc-go/v7 v7.0.0-20230725115016-ed60bbb0ec6f/go.mod h1:5kPKhT/m9Xo+G+kWtSmQl7XcPissS3vL/8d1BB1eL1I= +github.com/notional-labs/wasmd v0.40.1-0.20230725154726-6f2a6f0a0bb3 h1:b6OawIdo5lzGDRjSWvroBoHbvdL5BktYYMEN5fr/y8s= +github.com/notional-labs/wasmd v0.40.1-0.20230725154726-6f2a6f0a0bb3/go.mod h1:kyyRiOsYQjwQzmc1iXRYzyAAsWwBiiQ8q+f16mAHREY= github.com/nxadm/tail v1.4.4/go.mod h1:kenIhsEOeOJmVchQTgglprH7qJGnHDVpk1VPCcaMI8A= github.com/nxadm/tail v1.4.8 h1:nPr65rt6Y5JFSKQO7qToXr7pePgD6Gwiw05lkbyAQTE= github.com/nxadm/tail v1.4.8/go.mod h1:+ncqLTQzXmGhMZNUePPaPqPvBxHAIsmXswZKocGu+AU= From 1bd743d178c5506d6311e070b0f313a60154deba Mon Sep 17 00:00:00 2001 From: Jacob Gadikian Date: Wed, 26 Jul 2023 00:03:32 +0800 Subject: [PATCH 05/22] remove beginblockevents section in chain_node.go --- chain/cosmos/chain_node.go | 40 -------------------------------------- 1 file changed, 40 deletions(-) diff --git a/chain/cosmos/chain_node.go b/chain/cosmos/chain_node.go index d735c0e27..ade24dbc0 100644 --- a/chain/cosmos/chain_node.go +++ b/chain/cosmos/chain_node.go @@ -355,46 +355,6 @@ func (tn *ChainNode) FindTxs(ctx context.Context, height uint64) ([]blockdb.Tx, } txs = append(txs, newTx) } - if len(blockRes.BeginBlockEvents) > 0 { - beginBlockTx := blockdb.Tx{ - Data: []byte(`{"data":"begin_block","note":"this is a transaction artificially created for debugging purposes"}`), - } - beginBlockTx.Events = make([]blockdb.Event, len(blockRes.BeginBlockEvents)) - for i, e := range blockRes.BeginBlockEvents { - attrs := make([]blockdb.EventAttribute, len(e.Attributes)) - for j, attr := range e.Attributes { - attrs[j] = blockdb.EventAttribute{ - Key: string(attr.Key), - Value: string(attr.Value), - } - } - beginBlockTx.Events[i] = blockdb.Event{ - Type: e.Type, - Attributes: attrs, - } - } - txs = append(txs, beginBlockTx) - } - if len(blockRes.EndBlockEvents) > 0 { - endBlockTx := blockdb.Tx{ - Data: []byte(`{"data":"end_block","note":"this is a transaction artificially created for debugging purposes"}`), - } - endBlockTx.Events = make([]blockdb.Event, len(blockRes.EndBlockEvents)) - for i, e := range blockRes.EndBlockEvents { - attrs := make([]blockdb.EventAttribute, len(e.Attributes)) - for j, attr := range e.Attributes { - attrs[j] = blockdb.EventAttribute{ - Key: string(attr.Key), - Value: string(attr.Value), - } - } - endBlockTx.Events[i] = blockdb.Event{ - Type: e.Type, - Attributes: attrs, - } - } - txs = append(txs, endBlockTx) - } return txs, nil } From 2e5b0ef3b7f6f51fd678a1337f8d658dc21ab297 Mon Sep 17 00:00:00 2001 From: Jacob Gadikian Date: Wed, 26 Jul 2023 00:07:06 +0800 Subject: [PATCH 06/22] bump go --- .github/workflows/e2e-tests.yml | 6 +++--- .github/workflows/unit-tests.yml | 4 ++-- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/.github/workflows/e2e-tests.yml b/.github/workflows/e2e-tests.yml index 75868b76f..fa8b6e60c 100644 --- a/.github/workflows/e2e-tests.yml +++ b/.github/workflows/e2e-tests.yml @@ -17,7 +17,7 @@ jobs: - name: Set up Go 1.19 uses: actions/setup-go@v4 with: - go-version: 1.19 + go-version: '1.20' - name: checkout interchaintest uses: actions/checkout@v3 @@ -38,7 +38,7 @@ jobs: - name: Set up Go 1.19 uses: actions/setup-go@v4 with: - go-version: 1.19 + go-version: '1.20' cache: false - name: checkout interchaintest @@ -60,7 +60,7 @@ jobs: - name: Set up Go 1.19 uses: actions/setup-go@v4 with: - go-version: 1.19 + go-version: '1.20' cache: false - name: checkout interchaintest diff --git a/.github/workflows/unit-tests.yml b/.github/workflows/unit-tests.yml index d133e0398..83ac09e41 100644 --- a/.github/workflows/unit-tests.yml +++ b/.github/workflows/unit-tests.yml @@ -17,7 +17,7 @@ jobs: - name: Set up Go 1.19 uses: actions/setup-go@v4 with: - go-version: 1.19 + go-version: '1.20' - name: checkout interchaintest uses: actions/checkout@v3 @@ -25,4 +25,4 @@ jobs: # run tests - name: run unit tests # -short flag purposefully omitted because there are some longer unit tests - run: go test -race -timeout 10m -failfast -p 2 $(go list ./... | grep -v /cmd | grep -v /examples) \ No newline at end of file + run: go test -race -timeout 10m -failfast -p 2 $(go list ./... | grep -v /cmd | grep -v /examples) From 43a831f45a4a4aff9202592ff5677885c0f29479 Mon Sep 17 00:00:00 2001 From: catShaark Date: Mon, 21 Aug 2023 23:30:42 +0700 Subject: [PATCH 07/22] upgrade workflows --- .github/workflows/e2e-tests.yml | 12 ++++++------ .github/workflows/unit-tests.yml | 4 ++-- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/.github/workflows/e2e-tests.yml b/.github/workflows/e2e-tests.yml index fa8b6e60c..759d75461 100644 --- a/.github/workflows/e2e-tests.yml +++ b/.github/workflows/e2e-tests.yml @@ -14,10 +14,10 @@ jobs: runs-on: [self-hosted, linux] steps: # Install and setup go - - name: Set up Go 1.19 + - name: Set up Go 1.21 uses: actions/setup-go@v4 with: - go-version: '1.20' + go-version: '1.21' - name: checkout interchaintest uses: actions/checkout@v3 @@ -35,10 +35,10 @@ jobs: runs-on: [self-hosted, linux] steps: # Install and setup go - - name: Set up Go 1.19 + - name: Set up Go 1.21 uses: actions/setup-go@v4 with: - go-version: '1.20' + go-version: '1.21' cache: false - name: checkout interchaintest @@ -57,10 +57,10 @@ jobs: runs-on: [self-hosted, linux] steps: # Install and setup go - - name: Set up Go 1.19 + - name: Set up Go 1.21 uses: actions/setup-go@v4 with: - go-version: '1.20' + go-version: '1.21' cache: false - name: checkout interchaintest diff --git a/.github/workflows/unit-tests.yml b/.github/workflows/unit-tests.yml index 83ac09e41..ac405b781 100644 --- a/.github/workflows/unit-tests.yml +++ b/.github/workflows/unit-tests.yml @@ -14,10 +14,10 @@ jobs: runs-on: [self-hosted, linux] steps: # Install and setup go - - name: Set up Go 1.19 + - name: Set up Go 1.21 uses: actions/setup-go@v4 with: - go-version: '1.20' + go-version: '1.21' - name: checkout interchaintest uses: actions/checkout@v3 From d69e2ec2e6f257e792e19607149c5578d841f2e0 Mon Sep 17 00:00:00 2001 From: Jacob Gadikian Date: Tue, 22 Aug 2023 13:16:06 +0800 Subject: [PATCH 08/22] update lint.yml --- .github/workflows/lint.yml | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/.github/workflows/lint.yml b/.github/workflows/lint.yml index e703eaa3f..9014a18dd 100644 --- a/.github/workflows/lint.yml +++ b/.github/workflows/lint.yml @@ -7,10 +7,14 @@ jobs: name: lint runs-on: ubuntu-latest steps: + - uses: actions/setup-go@v4 + with: + go-version: '1.21' + cache: false - uses: actions/checkout@v3 - name: golangci-lint uses: golangci/golangci-lint-action@v3 with: - version: latest + version: v1.54 only-new-issues: true args: --timeout=5m From 92d58574780b861047f0772ea8c364773955f9bc Mon Sep 17 00:00:00 2001 From: Jacob Gadikian Date: Thu, 24 Aug 2023 22:16:33 +0800 Subject: [PATCH 09/22] update ibc to use upstream repo --- go.mod | 6 +++--- go.sum | 28 ++++++++++++++-------------- 2 files changed, 17 insertions(+), 17 deletions(-) diff --git a/go.mod b/go.mod index 942dacef5..17a85b989 100644 --- a/go.mod +++ b/go.mod @@ -7,7 +7,7 @@ toolchain go1.21.0 require ( cosmossdk.io/math v1.0.1 cosmossdk.io/store v1.0.0-alpha.1.0.20230728080422-54ed7dab3982 - cosmossdk.io/x/upgrade v0.0.0-20230724130706-5442197d6bcd + cosmossdk.io/x/upgrade v0.0.0-20230818115413-c402c51a1508 github.com/99designs/keyring v1.2.2 github.com/BurntSushi/toml v1.3.2 github.com/ChainSafe/go-schnorrkel/1 v0.0.0-00010101000000-000000000000 @@ -16,7 +16,7 @@ require ( github.com/atotto/clipboard v0.1.4 github.com/avast/retry-go/v4 v4.5.0 github.com/cometbft/cometbft v0.38.0-rc3 - github.com/cosmos/cosmos-sdk v0.50.0-rc.0 + github.com/cosmos/cosmos-sdk v0.50.0-rc.0.0.20230819070346-e8164be94954 github.com/cosmos/go-bip39 v1.0.0 github.com/cosmos/gogoproto v1.4.11 github.com/cosmos/ibc-go/modules/capability v1.0.0-rc3 @@ -263,6 +263,6 @@ replace ( github.com/vedhavyas/go-subkey => github.com/strangelove-ventures/go-subkey v1.0.7 ) -replace github.com/cosmos/ibc-go/v7 => github.com/notional-labs/ibc-go/v7 v7.0.0-20230725115016-ed60bbb0ec6f +replace github.com/cosmos/ibc-go/v7 => github.com/cosmos/ibc-go/v7 v7.0.0-20230824130558-7de47052f528 replace github.com/CosmWasm/wasmd => github.com/notional-labs/wasmd v0.40.1-0.20230725154726-6f2a6f0a0bb3 diff --git a/go.sum b/go.sum index 568fe4d1f..e0ede6a7f 100644 --- a/go.sum +++ b/go.sum @@ -189,8 +189,8 @@ cloud.google.com/go/workflows v1.6.0/go.mod h1:6t9F5h/unJz41YqfBmqSASJSXccBLtD1V cloud.google.com/go/workflows v1.7.0/go.mod h1:JhSrZuVZWuiDfKEFxU0/F1PQjmpnpcoISEXH2bcHC3M= cosmossdk.io/api v0.7.0 h1:QsEMIWuv9xWDbF2HZnW4Lpu1/SejCztPu0LQx7t6MN4= cosmossdk.io/api v0.7.0/go.mod h1:kJFAEMLN57y0viszHDPLMmieF0471o5QAwwApa+270M= -cosmossdk.io/client/v2 v2.0.0-20230722073756-0fa85b7a424d h1:lCk+DQKrWfikuV7fgKhiPRPE1w/LG80JZQaFUPGVG8o= -cosmossdk.io/client/v2 v2.0.0-20230722073756-0fa85b7a424d/go.mod h1:cRYwwVgXhMpKrh6/oao3u+SW5Nb7RHQCGcF+jTsmcQQ= +cosmossdk.io/client/v2 v2.0.0-20230818115413-c402c51a1508 h1:tt5OMwdouv7dkwkWJYxb8I9h322bOxnC9RmK2qGvWMs= +cosmossdk.io/client/v2 v2.0.0-20230818115413-c402c51a1508/go.mod h1:iHeSk2AT6O8RNGlfcEQq6Yty6Z/6gydQsXXBh5I715Q= cosmossdk.io/collections v0.4.0 h1:PFmwj2W8szgpD5nOd8GWH6AbYNi1f2J6akWXJ7P5t9s= cosmossdk.io/collections v0.4.0/go.mod h1:oa5lUING2dP+gdDquow+QjlF45eL1t4TJDypgGd+tv0= cosmossdk.io/core v0.10.0 h1:NP28Ol9YyRODmZLJg2ko/mUl40hMegeMzhJnG+XPkcY= @@ -205,16 +205,16 @@ cosmossdk.io/math v1.0.1 h1:Qx3ifyOPaMLNH/89WeZFH268yCvU4xEcnPLu3sJqPPg= cosmossdk.io/math v1.0.1/go.mod h1:Ygz4wBHrgc7g0N+8+MrnTfS9LLn9aaTGa9hKopuym5k= cosmossdk.io/store v1.0.0-alpha.1.0.20230728080422-54ed7dab3982 h1:61YFeW2AhwwPfoJWzNJWvVubCj32sm5jZkJfraS9pDQ= cosmossdk.io/store v1.0.0-alpha.1.0.20230728080422-54ed7dab3982/go.mod h1:QAF9zeRa/9ghuv7E8NS9SzWqRbgVNwH/dZwGhYDHUjI= -cosmossdk.io/x/circuit v0.0.0-20230722073756-0fa85b7a424d h1:pKQ4w2Ftqi41z0DZBy7zJD5jFJBoWryD2spG1iuGQvA= -cosmossdk.io/x/circuit v0.0.0-20230722073756-0fa85b7a424d/go.mod h1:9j92Murx9xkeeQZl+nkI6iVT+h9/GHg/MqMzHqHLKhc= -cosmossdk.io/x/evidence v0.0.0-20230722073756-0fa85b7a424d h1:c9617QDbJH+0twSuNrUJKF7M3lNxYod744NGvLRQc+0= -cosmossdk.io/x/evidence v0.0.0-20230722073756-0fa85b7a424d/go.mod h1:NP5ZOOrFS2JQtStyIrRjlBjXJrgs0aD9zPofXTkA4Jw= -cosmossdk.io/x/feegrant v0.0.0-20230722073756-0fa85b7a424d h1:89X9UB9p0zYlYHIqOtLQ0EHzJ1dAAmkWUKAaDMGws+c= -cosmossdk.io/x/feegrant v0.0.0-20230722073756-0fa85b7a424d/go.mod h1:AhfsRnEMElAAnZfrFuIrFpzqbc6o45Dkbkea8XzT/bU= +cosmossdk.io/x/circuit v0.0.0-20230818115413-c402c51a1508 h1:9HRBpMbGgk+W4BIp4ezYH2EjbpuVl2fBlwyJ2GZgrS0= +cosmossdk.io/x/circuit v0.0.0-20230818115413-c402c51a1508/go.mod h1:BhFX0kD6lkctNQO3ZGYY3p6h0/wPLVbFhrOt3uQxEIM= +cosmossdk.io/x/evidence v0.0.0-20230818115413-c402c51a1508 h1:R9H1lDpcPSkrLOnt6IDE38o0Wp8xE/+BAxocb0oyX4I= +cosmossdk.io/x/evidence v0.0.0-20230818115413-c402c51a1508/go.mod h1:yjIo3J0QKDo9CJawK1QoTA1hBx0llafVJdPqI0+ry74= +cosmossdk.io/x/feegrant v0.0.0-20230818115413-c402c51a1508 h1:TKqjhhTfLchU8nSo1WZRgaH7xZWzYUQXVRj9CePcbaw= +cosmossdk.io/x/feegrant v0.0.0-20230818115413-c402c51a1508/go.mod h1:kOr8Rr10RoMeGGk/pfW5yo1R7GQTGu4KdRgKphVvjz4= cosmossdk.io/x/tx v0.9.1 h1:9pmmXA9Vs4qdouOFnzhsdsff2mif0f0kylMq5xTGhRI= cosmossdk.io/x/tx v0.9.1/go.mod h1:/YFGTXG6+kyihd8YbfuJiXHV4R/mIMm2uvVzo80CIhA= -cosmossdk.io/x/upgrade v0.0.0-20230724130706-5442197d6bcd h1:bxUrk7NTpXxe9CPjz2kUS0tfHfnPoQTV+XCMcVFk9rM= -cosmossdk.io/x/upgrade v0.0.0-20230724130706-5442197d6bcd/go.mod h1:V3F7GY3iFACMLYYwm154Tke2bbCJyCSEyYeaPRNc5BY= +cosmossdk.io/x/upgrade v0.0.0-20230818115413-c402c51a1508 h1:tZ5fSX+ev+QHQ15457Vhxug8BSZJcHeBhU8DpgwlkCc= +cosmossdk.io/x/upgrade v0.0.0-20230818115413-c402c51a1508/go.mod h1:M0JWINHzdN0eFHrWMs082akHHSO5muExS+/tNNIOyP8= dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod h1:H6x//7gZCb22OMCxBHrMx7a5I7Hp++hsVxbQ4BYO7hU= filippo.io/edwards25519 v1.0.0 h1:0wAIcmJUqRdI8IJ/3eGi5/HwXZWPujYXXlkrQogz0Ek= filippo.io/edwards25519 v1.0.0/go.mod h1:N1IkdkCkiLB6tki+MYJoSx2JTY9NUlxZE7eHn5EwJns= @@ -379,8 +379,8 @@ github.com/cosmos/cosmos-db v1.0.0 h1:EVcQZ+qYag7W6uorBKFPvX6gRjw6Uq2hIh4hCWjuQ0 github.com/cosmos/cosmos-db v1.0.0/go.mod h1:iBvi1TtqaedwLdcrZVYRSSCb6eSy61NLj4UNmdIgs0U= github.com/cosmos/cosmos-proto v1.0.0-beta.3 h1:VitvZ1lPORTVxkmF2fAp3IiA61xVwArQYKXTdEcpW6o= github.com/cosmos/cosmos-proto v1.0.0-beta.3/go.mod h1:t8IASdLaAq+bbHbjq4p960BvcTqtwuAxid3b/2rOD6I= -github.com/cosmos/cosmos-sdk v0.50.0-rc.0 h1:cdcJSFqy4Yl7f9F3c5QsvDz+GF7/zR53571ECQeucvE= -github.com/cosmos/cosmos-sdk v0.50.0-rc.0/go.mod h1:6HsAg8cQ/D3JnFN7jao6DOuTLWnUC4qh/vracVlSLAM= +github.com/cosmos/cosmos-sdk v0.50.0-rc.0.0.20230819070346-e8164be94954 h1:DSVQWPZyt0f7T0Arw7doznp9BK+HDzv3h6HwjMJxNCU= +github.com/cosmos/cosmos-sdk v0.50.0-rc.0.0.20230819070346-e8164be94954/go.mod h1:6HsAg8cQ/D3JnFN7jao6DOuTLWnUC4qh/vracVlSLAM= github.com/cosmos/go-bip39 v0.0.0-20180819234021-555e2067c45d/go.mod h1:tSxLoYXyBmiFeKpvmq4dzayMdCjCnu8uqmCysIGBT2Y= github.com/cosmos/go-bip39 v1.0.0 h1:pcomnQdrdH22njcAatO0yWojsUnCO3y2tNoV1cb6hHY= github.com/cosmos/go-bip39 v1.0.0/go.mod h1:RNJv0H/pOIVgxw6KS7QeX2a0Uo0aKUlfhZ4xuwvCdJw= @@ -393,6 +393,8 @@ github.com/cosmos/iavl v1.0.0-beta.2 h1:XOsIM80Yyml/KifCXEYOy9tWCXwMAbLa91n6pReW github.com/cosmos/iavl v1.0.0-beta.2/go.mod h1:EA97dJ07TBktRlG/iGzK6g1eCXNj1q3MGoFYkVzrwHE= github.com/cosmos/ibc-go/modules/capability v1.0.0-rc3 h1:jEq48O/lE7dT34U6dJLLl8PaHSwerFrRqgaVVPg7J4A= github.com/cosmos/ibc-go/modules/capability v1.0.0-rc3/go.mod h1:h+HXgDnFpzthSy7mKw3xCeOG1QZDiwlz7Vuw8eSevjg= +github.com/cosmos/ibc-go/v7 v7.0.0-20230824130558-7de47052f528 h1:OEHFVBFy6N4lFRSGjQ+QhplQ5AmPzNDFu/vIbNXc7xs= +github.com/cosmos/ibc-go/v7 v7.0.0-20230824130558-7de47052f528/go.mod h1:fp481Yxa0mVQ9a4w9a6LifFPmfOgNH1KCmoH9SNwl/8= github.com/cosmos/ics23/go v0.10.0 h1:iXqLLgp2Lp+EdpIuwXTYIQU+AiHj9mOC2X9ab++bZDM= github.com/cosmos/ics23/go v0.10.0/go.mod h1:ZfJSmng/TBNTBkFemHHHj5YY7VAU/MBU980F4VU1NG0= github.com/cosmos/ledger-cosmos-go v0.13.0 h1:ex0CvCxToSR7j5WjrghPu2Bu9sSXKikjnVvUryNnx4s= @@ -915,8 +917,6 @@ github.com/nats-io/nkeys v0.1.0/go.mod h1:xpnFELMwJABBLVhffcfd1MZx6VsNRFpEugbxzi github.com/nats-io/nkeys v0.1.3/go.mod h1:xpnFELMwJABBLVhffcfd1MZx6VsNRFpEugbxziKVo7w= github.com/nats-io/nuid v1.0.1/go.mod h1:19wcPz3Ph3q0Jbyiqsd0kePYG7A95tJPxeL+1OSON2c= github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e/go.mod h1:zD1mROLANZcx1PVRCS0qkT7pwLkGfwJo4zjcN/Tysno= -github.com/notional-labs/ibc-go/v7 v7.0.0-20230725115016-ed60bbb0ec6f h1:M9yame13/Er1yDvs5hZr4oFliB4frOxSsfEbEfjBeME= -github.com/notional-labs/ibc-go/v7 v7.0.0-20230725115016-ed60bbb0ec6f/go.mod h1:5kPKhT/m9Xo+G+kWtSmQl7XcPissS3vL/8d1BB1eL1I= github.com/notional-labs/wasmd v0.40.1-0.20230725154726-6f2a6f0a0bb3 h1:b6OawIdo5lzGDRjSWvroBoHbvdL5BktYYMEN5fr/y8s= github.com/notional-labs/wasmd v0.40.1-0.20230725154726-6f2a6f0a0bb3/go.mod h1:kyyRiOsYQjwQzmc1iXRYzyAAsWwBiiQ8q+f16mAHREY= github.com/nxadm/tail v1.4.4/go.mod h1:kenIhsEOeOJmVchQTgglprH7qJGnHDVpk1VPCcaMI8A= From 339d5ae26d634ae886e80c5de1e7086897b64495 Mon Sep 17 00:00:00 2001 From: Hieu Vu Date: Sat, 26 Aug 2023 12:57:23 +0700 Subject: [PATCH 10/22] add finalizeBlockTx --- chain/cosmos/chain_node.go | 21 ++++++++++++++++++++- 1 file changed, 20 insertions(+), 1 deletion(-) diff --git a/chain/cosmos/chain_node.go b/chain/cosmos/chain_node.go index f946a2ba3..79f58dc22 100644 --- a/chain/cosmos/chain_node.go +++ b/chain/cosmos/chain_node.go @@ -417,7 +417,26 @@ func (tn *ChainNode) FindTxs(ctx context.Context, height uint64) ([]blockdb.Tx, } txs = append(txs, newTx) } - + if len(blockRes.FinalizeBlockEvents) > 0 { + finalizeBlockTx := blockdb.Tx{ + Data: []byte(`{"data":"finalize_block","note":"this is a transaction artificially created for debugging purposes"}`), + } + finalizeBlockTx.Events = make([]blockdb.Event, len(blockRes.FinalizeBlockEvents)) + for i, e := range blockRes.FinalizeBlockEvents { + attrs := make([]blockdb.EventAttribute, len(e.Attributes)) + for j, attr := range e.Attributes { + attrs[j] = blockdb.EventAttribute{ + Key: string(attr.Key), + Value: string(attr.Value), + } + } + finalizeBlockTx.Events[i] = blockdb.Event{ + Type: e.Type, + Attributes: attrs, + } + } + txs = append(txs, finalizeBlockTx) + } return txs, nil } From 52eb9fe3385083c1171d8a5072d7c94974b27e5e Mon Sep 17 00:00:00 2001 From: Charly Date: Wed, 30 Aug 2023 17:21:01 +0200 Subject: [PATCH 11/22] update hermes config --- relayer/hermes/hermes_config.go | 20 +++++++++++++++----- 1 file changed, 15 insertions(+), 5 deletions(-) diff --git a/relayer/hermes/hermes_config.go b/relayer/hermes/hermes_config.go index 92e6af3c1..1584c1a1d 100644 --- a/relayer/hermes/hermes_config.go +++ b/relayer/hermes/hermes_config.go @@ -19,10 +19,14 @@ func NewConfig(chainConfigs ...ChainConfig) Config { } chains = append(chains, Chain{ - ID: chainCfg.ChainID, - RPCAddr: hermesCfg.rpcAddr, - GrpcAddr: fmt.Sprintf("http://%s", hermesCfg.grpcAddr), - WebsocketAddr: strings.ReplaceAll(fmt.Sprintf("%s/websocket", hermesCfg.rpcAddr), "http", "ws"), + ID: chainCfg.ChainID, + RPCAddr: hermesCfg.rpcAddr, + GrpcAddr: fmt.Sprintf("http://%s", hermesCfg.grpcAddr), + // WebsocketAddr: strings.ReplaceAll(fmt.Sprintf("%s/websocket", hermesCfg.rpcAddr), "http", "ws"), + EventSource: EventSource{ + Mode: "push", + Url: strings.ReplaceAll(fmt.Sprintf("%s/websocket", hermesCfg.rpcAddr), "http", "ws"), + BatchDelay: "500ms"}, RPCTimeout: "10s", AccountPrefix: chainCfg.Bech32Prefix, KeyName: hermesCfg.keyName, @@ -145,6 +149,12 @@ type GasPrice struct { Denom string `toml:"denom"` } +type EventSource struct { + Mode string `toml:"mode"` + Url string `toml:"url"` + BatchDelay string `toml:"batch_delay"` +} + type TrustThreshold struct { Numerator string `toml:"numerator"` Denominator string `toml:"denominator"` @@ -154,7 +164,7 @@ type Chain struct { ID string `toml:"id"` RPCAddr string `toml:"rpc_addr"` GrpcAddr string `toml:"grpc_addr"` - WebsocketAddr string `toml:"websocket_addr"` + EventSource EventSource `toml:"event_source"` RPCTimeout string `toml:"rpc_timeout"` AccountPrefix string `toml:"account_prefix"` KeyName string `toml:"key_name"` From 79bbe451e41a93e0fbfbde0823a84abc6f08a5f7 Mon Sep 17 00:00:00 2001 From: Charly Date: Thu, 31 Aug 2023 16:30:37 +0200 Subject: [PATCH 12/22] update default hermes version --- relayer/hermes/hermes_relayer.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/relayer/hermes/hermes_relayer.go b/relayer/hermes/hermes_relayer.go index e67a89412..de6889e5b 100644 --- a/relayer/hermes/hermes_relayer.go +++ b/relayer/hermes/hermes_relayer.go @@ -18,7 +18,7 @@ import ( const ( hermes = "hermes" defaultContainerImage = "ghcr.io/informalsystems/hermes" - DefaultContainerVersion = "1.4.0" + DefaultContainerVersion = "1.6.0" hermesDefaultUidGid = "1000:1000" hermesHome = "/home/hermes" From c9539fd05629852c2ccc674c1d1137ad363071e1 Mon Sep 17 00:00:00 2001 From: Charly Date: Thu, 31 Aug 2023 16:37:15 +0200 Subject: [PATCH 13/22] rm unneeded param --- relayer/hermes/hermes_config.go | 1 - 1 file changed, 1 deletion(-) diff --git a/relayer/hermes/hermes_config.go b/relayer/hermes/hermes_config.go index 1584c1a1d..38fc01047 100644 --- a/relayer/hermes/hermes_config.go +++ b/relayer/hermes/hermes_config.go @@ -22,7 +22,6 @@ func NewConfig(chainConfigs ...ChainConfig) Config { ID: chainCfg.ChainID, RPCAddr: hermesCfg.rpcAddr, GrpcAddr: fmt.Sprintf("http://%s", hermesCfg.grpcAddr), - // WebsocketAddr: strings.ReplaceAll(fmt.Sprintf("%s/websocket", hermesCfg.rpcAddr), "http", "ws"), EventSource: EventSource{ Mode: "push", Url: strings.ReplaceAll(fmt.Sprintf("%s/websocket", hermesCfg.rpcAddr), "http", "ws"), From 33aa10d9ee9a2d1e2f39afd0069c98fcec152973 Mon Sep 17 00:00:00 2001 From: Dan Kanefsky Date: Wed, 30 Aug 2023 14:28:31 -0700 Subject: [PATCH 14/22] remove wasm --- chain/cosmos/wasm/wasm.go | 17 - .../wasm/sample_contracts/ibc_reflect.wasm | Bin 301084 -> 0 bytes .../sample_contracts/ibc_reflect_send.wasm | Bin 319451 -> 0 bytes examples/ibc/wasm/sample_contracts/icq.wasm | Bin 330394 -> 0 bytes .../ibc/wasm/sample_contracts/reflect.wasm | Bin 304952 -> 0 bytes examples/ibc/wasm/wasm_ibc_test.go | 221 ---------- examples/ibc/wasm/wasm_icq_test.go | 406 ------------------ 7 files changed, 644 deletions(-) delete mode 100644 chain/cosmos/wasm/wasm.go delete mode 100644 examples/ibc/wasm/sample_contracts/ibc_reflect.wasm delete mode 100644 examples/ibc/wasm/sample_contracts/ibc_reflect_send.wasm delete mode 100644 examples/ibc/wasm/sample_contracts/icq.wasm delete mode 100644 examples/ibc/wasm/sample_contracts/reflect.wasm delete mode 100644 examples/ibc/wasm/wasm_ibc_test.go delete mode 100644 examples/ibc/wasm/wasm_icq_test.go diff --git a/chain/cosmos/wasm/wasm.go b/chain/cosmos/wasm/wasm.go deleted file mode 100644 index 94ed88544..000000000 --- a/chain/cosmos/wasm/wasm.go +++ /dev/null @@ -1,17 +0,0 @@ -package wasm - -import ( - wasmtypes "github.com/CosmWasm/wasmd/x/wasm/types" - "github.com/cosmos/cosmos-sdk/types/module/testutil" - - // simappparams "github.com/cosmos/cosmos-sdk/simapp/params" - "github.com/strangelove-ventures/interchaintest/v7/chain/cosmos" -) - -func WasmEncoding() *testutil.TestEncodingConfig { - cfg := cosmos.DefaultEncoding() - - wasmtypes.RegisterInterfaces(cfg.InterfaceRegistry) - - return &cfg -} diff --git a/examples/ibc/wasm/sample_contracts/ibc_reflect.wasm b/examples/ibc/wasm/sample_contracts/ibc_reflect.wasm deleted file mode 100644 index 9c715dba00c47cd4439f02f642fa6eeebba752c8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 301084 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 z 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

Ii98T%E!ORs^EaWk(*6Vb6@RuXxwH>b_zbR(R(O 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 diff --git a/examples/ibc/wasm/sample_contracts/ibc_reflect_send.wasm b/examples/ibc/wasm/sample_contracts/ibc_reflect_send.wasm deleted file mode 100644 index 0bc7112b3d147ae204fcbf20a6e71fff5f53b74c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 319451 zcmeFa4YZ|KS?BqFoR53&Ip^MUQ@4^TQo=dc8of1>8e5jih5|t<5J({eD>h;ws1*jZK+uX}cNozr8r0B6yAWD~ ziq7xeMuivOdh?CE`PT=Mu4;PO7ryLAZ@9I5Hhk%U8*lq( z-*efEzWcf#J8=8WKm6m~$&Tvr?FVjTB)4C8+sj_?q60sk%&DdM12_G%@A;nZ{@zBN zrTFj#H{5aK3mdQ6HywDv%YMXX(|gIw4&46Z*WLKS8*aXp@%~-@H+h=0TD`QDwpvLm zp%g#Cf+W{Ri+?#EU4ErWp0@b(f0W2nEK}i(uUWU7RsUM8ZnxX%P&c7v6;!kOqE?f< zpZ4=k+R3}sf8B0t(4|18K3nbi{=!Vw8q&;$|I}$l=dEPeO}d>{x1$lKN!NPuu6Wr^ z7H5;$?y!|yFq<*{_At*|^X>WhR^FXWy5584oFuaerCXYmMy;uLvu%0O&eQqsaH-FP zW~{XoW@(>RX+=NvuRGgX8gwW? z8@$SF9(gk4JHNYmuBZGHKso}bLA=xL&a`GPT;hS+;Ayv;cGB5St2291cgIe~10=iF zaGrEJeAhpUKh3`APp8wlnEzYd^tSYs{Kp)V#m>(BuC!QNJD&9JN{YXG(@A z_5&}yjv2h@=39Rx`C7VIe|Gzis9OCYeBt&R?s)O-JluBkt^D}m8*V%x@_OmbFTVA< zD|kG2-E~m^4c8sG^`<=SU3c9J58QCubuYN#r3dnC_N!@{6lw47^nd;3{Qu7Wr+@X; z^zYKYN&hze`}7~uwe0TfmD#JZd$OO%UY-4KJ1@TJz;&xXa_!AO{KBv0-}Y14+tRnD zKbIa(?@xa<{q^*b^r7^F=^v&aN3W}nJ_C;NEz(d=W{C$c}u{xo|$`(pOS{Acq+`J40C z&Ho`km47b(Px)GF?sIRs;BWF@ zZD%c{!nd#SFDWj4(QJhORh|k-Y6}SD~l@h$Ev{c(P6tV^U~u}Q=?s~UkElqVJA9X>qj3)hS)ac2 zzUZ&owD|-Em$3@%QF~9e`|@lFOM8Eirukg~c}Fi=&ipYzONA)R@cV#r;z+to zD|alXBc6`(@4t9CEoLY-^Zgf(Q(G;=@l1mPPg8Z2jarvwOME0Y&!J|Q70h_Zr@G+R zaCP`+0xx}Ll+vnZKIdhAP+}!(jgsNdy^1nmzJ3CE4QXV3fCSbRtKx%S=ndcIg_&Gd zn_ON^Zj`MqGk^^y$J0@^+2r#2sQI4k+2Ad(@KqK*+r&zuv2x*Ucm=&=Mk1<5g@8zaP?*Q! zFh54uvVko_l*Tl{()!R^hGfa86__Tk<2b3SN~6|`injQjUUdS$vuRazm)k|Ml6-89 zCAcgR3!}N@yONLVf%u?R_1V*E0F)XwMyj`wkxn!m8L1U9re#QX#VFsGUY=iCF5jiA z#j)4Y+3@os29d1LV)(?}{DQ26QVfE{q{>Qm#qhn3Bl_{o<GA6vTi$B|C7KKT~$&$;)!Iw3*0E0hVSvEW+hE7B?zvL z3!crTN^4T8v|OrmM651;SbATI-tXrBq!gW-Qe-MeYxrj(H52gY5-iea8O>rPTPdlO zA5fL3R2pDKn`gDAn`sL5H7zxT4>Z;kT_K7aQ*>L|Rdk&OMOUiaxD872%+xw5M5QQb zp;5V_Yvt&TCt|Vfs1}YoQ3Wd%-L|z*D!QnG^)?VEv<1Wh&*pV(P{XoUfoJPg#X zvMw4;ooA<$Jlm@JFf}os(Wo7Gw%$gbJ<)KaMJp0`Hfka)+*L~h9$a-e5G}Txn?j4G zZ#XwaOq$5vlPxWGOIoz2;DFO2(g)epR2X^>O|IKN@yiXZoVZ5o`K3vG*V-cevHa7s z&S}W3WS#Hm!#eY*)}5@Wb>BL4){$-`T<-?mXo4J^&fY6kNV-v4U~xfszYrf-)$>JX zC_Rws+wP{bVs2Ai7)==SQr5_xTxOg!M}0#z)yFIg?%L;!)MW8ppA$+buk?LcW@wGa zrFH&<_Gvm)oyVm?-8Id0chqiCVOx%CPVg<$XLmU-Js(W46&I(y)#AKc@bblx;<`6^ zNDt&g(Bibu%i?SDHDUv@ zR;U_2L9RO@N*M}G;#7v33Z@+rHUv;!W!6ryW2;r&#d0E>+bk(&PAeKdT8SNl)Ym#T zV9OX6T3B((<=HMF12SLLgMn0u^j&h=%#6%t4I(`_ZCC}g8poKE(Mak&l%{F4fR5Kh zgjs^v^Rfg*Q`TS23S_;5SK=?t3^W@~Q=l*`EJ`>1Xq7f#B0r2uRyH6_16x=27kV{| z4T9UiV0$#rJGd%l>q8EnCUhWMZ~lPF{Y6$~ElGSO8J3)Dqhw#kbVMP+p2z$P-B@nGJu8UnQO*g3H&a=DBp!Tr0FCEWNt1XzOV0YBrM{`VO ze%u+&B7O$r#ZixG_Lij}y?1=6HN%qX|8KW7 zE7sD=Brx<~cG>VPV(6gD6@d*7AJ7AbTm~Q8n_PjP7PYr!YOg=~Ub%CNzfGRQ^ZBR_ z)A#VLp*1F9T?~KLAK<7MgV<{BnKZZDzA||}KY_tD6l8j7vtL^`3a@zIn7@#=9P?^n z4<0!4NEEHxk^gz|7;Xr@&hqtCvO1nqSuhDN?6}YOP7W4K^B(|YUWoTgm>6jCH71Av z(8EDm%(A{1bQkt7>W%vLj72PG%)*2@Xow^8ZR2~~n~cX9<7OD*ObF=bi>G-%lD!6KA(sxbimp)dodqgBt>TEROCQ`-raAhk!6gc zq{P-dHdAL_C3@HJa#&zuUCe|!gWjmSU#J$4qHO;#L?ArJWhLGMB#JNi*Ll8zHhQ`c zATrAK54MjM^(PxG#(sT49NEg5#&-4CIo=tX2DBISx2*?Ozc+&Q{NO-nqQ)X9?+*hH zqgCr+vXun8oEZBD1jN@bnZjUDi8ak% zWZ>}aK4fr8eG20)(8u-TZ9d{opGsaK9ll-Y$wCSRA-(O=baDyCk|l_WhRz6JLK?`R zueDdDy~(0c!C#n$G=ciX$u|q@^5OlF1VRtE5kNCsad8muh$FrU0(rQ2R;2;Shr<(#t=XY|{Sdsm z9NvK0Lw`t5r~8urL?EMk$4k7wK(8)PY!RAAlNhJs@usOPyWlQfA&Oo$2GXxf@w6a1 zm_j5(1~Vdqz0uNx%((X;gtTox3$~4BrCTZNNc7CT>JBDB+9&dJ8%?B!4mPJvCvv`L zz_|P6xciN9gIr00@p?h2KWy`FgfKn)C=nC%jHOknEYd=tKMM~eqa_qy2~*INVRr@i zVO$+!48w{;O79u9#zXP^@Kr@j`QDRXKVCw&>eZ39f$v6~!ibsCY`}M+`e=3n--$(l z@9&KG9>_$xLGgDLcYm_v?km|HF49_kwDnv~2HpZ2Ko;&zW+e;vCIs`*bb37rA+Z@* z4bppHa7ggf)V%Y&bZS*-m-zA--b*g01Xl9&pO*-Pd>BU+Lt|#nP(_~lD@JLM&{HJ z1a{an2vr(A{+^X=NzNX8uyXbo_iwo!nFV`6R)X6LNGVwbW*j_I#z6r#jAmK(|MDuS z0la;=g|4v;vR7Q5-9tB0M%VN?b6NHZK2XA6PQ?>cwCck@zniKozwsBNgSO;q6?Jo7 zBc?QqX0!!UvdYRth?U_p#*}8olxB@7&Fx2a&IMLPG_S^rq&KZ(yT+QY7TXMhtoSrv z%}U6MPx6&%Fj1MN*YiPq?^-@g;kLP5EiyENfn)~q2+V}_-@CE&M?I@9rd?dJy4(vb zs{yq`fZp>j&#-1FLt|etlJkBU)b%`vqrl&BplB>uI4|Uxk|)Y%{mZi3cm{{+ zg=geLxM{?gi3Z0}3Z9zxHL?r$l=WjPa=Mkr~#43vvg)o5d=e>)I}$QXjrXHKUbH7} z;Cvkfa{LsmIR-rLFEOX zMT?xF_Cx!2+_~IAi+pf@fmT31+JoXFYDbG_jwSQ&fkD8GJSZlcs@6aE)UT{ej#B#> zz&-oqsFYcg9Az9AkUKzPe5p!~dLpfSh>h$aX=bP`swwXW>0C=8oh!!?r;MlKEr*0i zj6N^GIeo?H&5sqX(C3cyh({6QEDAC&+FRyCg@7RE+S#gSC|{8G;& zS<)=ceJWRzftJ@*T1oGz%=Yzf`c|9myJoW4Du{Rr4{^X~Pzq0+v?ekwOYPYC0Skfr zyMo}H8OfQ*E02D&QMNaDoj_x}PG%MV0aP!>;BGl#H$U7ZN10t{wluh7OeWM=TmW3S z6hg-(xnihIyurMIMXHoeH5<%uDo@ICoe(RJ)q&?}Z(X!$C=BDfF}Pzm#k4&NqgZ`2px08sr0jmO$r z+K`)A#Yan(DJe7MXo+DPLrSGhDsGAPlL)HD zmXx%1}rP-B@F+)B~U(Zc5 zAVg(27uQ-SC1(>Kzykzn^<|+a`^3eLOO2EXXHY#eAZfbQSIULeK9#C=E;~-Bt7Rs% zCd4oxBY%Svfu~3mMlB*V;EMejMXGdOQ~D7wl5fj6*BB zStC3Iu%W690H;dv6uzl!C<&ZcKUXHuv^D6Ua{P4-@`~V%OGya6CgH9$axJsJe2>`g)}=()Ils~+UL zsED0k0nvnY`c=cU9}v~AWLFO)=u=zO?dqRilS1D{knw;xt^P2Xh+cR}gH$k0K|@i@ zP7ZUv?lDS`7E+(Mtb(Y8xPOIct%~oa=J3fVU9M)aP;~J5SfSLVu;bm;Q3>+F$ z-2&^xaOISpX1Ef4g*-8RVmM){<~R^ZDu`mtFHt1Jm}MrnUQn)$ERCq6a^fIR?x>h& zkfiebnvguhcnljO<2AQT=-a4xYtXB%0AIOaVi}s#-V27YEQd~w+%kwK*#x3hv_8HVkA*{AHi+~N!#hDl&P!S)qZ-SKMkA#R= zn!oizkYJVnrS^b#u_W_To@J>C<_Eywv>(9>g3yWDSxa_Q6gj0C)k4$U(2CN8gG~C= zFkOfa*M>!?qyd2;2J;a%InPS%9eq;&$;U0~MC~Rc0}kzvoJwOfU(daE4Cc$sP-|r@ ze*~m0mM?-`?p&EXo1cJ;4r&|y9{ceHEUjQS8#WkXxa=sfs3Nd_eSmFG+ zQD-c9PvLRb8_I1O{(b#lutqGt@8SD?2;X<~(8Bk)YxfVf^)DcfWY6FUff?so>Bv|a zlCyNIXBjvle6I)~;rnL`XcOUkIj$AFpC@?V7RwYS)Z26AVBWzU)B~KBZ_n`L#Z551150wdg$&Gqo1N_L%}$Ra?C2fsa}7f2_`9OUx;tL2>1e@#5 zLZSV~?m51ekZ}Dfk7?lR_soVVKR!mNHCp9sK<`yuyRYQuUZ0Q zqm9t)RRRq4oDwG*R_KCjQy8i&oqYDWO!$dz+ zHyxEx@k@RN$lDF(ffO3YMGPc(g7JK1E%M#OgfSx9B1g9$Pti{@hBKDgbtE%wLZ0$9|EfH} zdo#}y>_{}Kz8cJhx3=>%{)hb2 zn?xCcd5ZZkC~V_G5wr?R5#%5iz4)N18}$@H%i137Ns@h^|DzAS!Q7}Wn;6aSAM7F{XFiUsPonuG6i`W#H_|ZGPlQmA@jL}v&9ida zAu<6flt(nY=UC>T>PJ9sR3BWiwY2fAX^I?HunxonLCx|Ud_-~DRg3D!HsD+yzy`R= zHb)CFdzE4!moa=t9XEufOB}5**0JC}HC1wu_Yy3n zgTp*!vPaV8$oMm*gp0HehpwP|%L3e++%K;)2^lZ3jN$eqCvcKp9=K^SFw;UAsgcfy z=#VsR51h{R1c?*r{1Ahw85oB&03~fPm^ab2Dtn})q;vVuWmNQ_@}Z}nk(5wxX23k;iGg)(YB$^qI1ik1|Fj+#Gl7wV*hF zE!C3arp&<3^5Xrx!K`)44Nc_7eIV!>HcYBc4g`fz;ES){;aqAZW2r2O7Jh80sVtRc zd5Rm0oDOED`2-mYOOqa?JZN}_zFK7};ZQ_cXw)_@8>Zz3LXkW*?ah=4;DuiA<7m0Y zU6Jr}1`I-sQ%%bsIMGWc6^69SO5gUz?yWEwp=;>>8c`njd#}?Z@f~^{ZM!`Ciku9@ zjm4Jtz-7kU!)S8TKWa7r>qkt~vVa1s^h{&%Bv2O)OxUI3z~m;9#@`s+g>k0dc1=Y; zFKs6ZBVO>3!d{6soVkuHuZ<@GSo)Od&6pLV3%wkt%nJE$m7t`9lWW23k&MdIuD4C6@jnJcSQpO2P)pTTMDVJ6Z`63u{CvckY z7TYU#f21RSSL4SkYNzxTt!RCL^!B9HXX0S zgf3*~O`p&0lN`D}ujcolKrK1%UNYXDBZ4FEPWwBm4ISN*V*~UsFpa=n?HB6nPKE`y zbAtnq&_~VB;aXb1uBFKX1ueUlX6t~Lsn(`@nUu~Hx8uH4tt*F2^yNf5H?$e{TLb3H1({% zk|f1fe)pH&(;=J)r#D5UZ>rhJpZKjm`Sbty{x58xnk|X)g12ZXDnQ63+rD9mUKeWn z#`bHJY>oMB+(x|pWK++I+>L2RrlTwu;Nn)Is~(WMX>4UHaV}9p1RgojN?=`?9D|ed zXIvNVOP?22EBb`t58oY`@>(XPZBGtU-nlOwUnrqlhZL-AyY_TQuxYTLv}v`5L63@a z(SX7zmgEds2iIAxqIo2|od}){+Noe-xFHtkY#U*Ki^5!uCS}2>hU_^~GEvrH58_g+ zMOHY2LzcnlVJRTKPeu4xL4gRbI?)2?eFf(Rl4f#qo}a!SsP}DhaDCqqx{*dQt&YPl zBE|;rE7!qN#jBaDZ_T_`fE!-7i7X28vA(wJKe2ieOIT-<8N5NrV#S&%Q@u*2o zU`t&r9@$!DLXj}6pct)`s#3%^d*=wotW67%Qemt1Ua+^!*$J76XG<;L8b&@Yk zSeV|m1<*~JIGT!sw}h=q^VeeNYqc5xVzlG3nhH|l4y#>~&4io*b`F-Hz@h5|ajLGI z&9A{c8Sg0HN1z;YZfB6Gcf0oP+n6Sd^Yz=9VmD&XJy~$MCAc?)_sci#=*K67cQp_O z8?6=XuqY+?-bDUUbN&iFZj0uWp#MTTvF%2ClbaFq89&W{3R`cRLi$Wbl<(?-2bazg zJ*inScy;+@3W_?v-a0oW@`kzz)r&%SfGQ*rJVXQ!d9G)%|xr{fNEvuS;yP0gkOsEZQe zJNrb1NX}T@SeqE`u=Fd`-bU6jLAo(7UIHN4OlB{L0jxJw&a2HN-m|66WMQ@1K!l6X z!9ezs&=c2hL=GplYgk*fuNF||=*NMe9CRLV=Xv;#rN#a)tMjdHlB5=&{uitEZ1($5 zaptLp*EnDRbY@(vLWtmxRumbuzs72cO!g*M8%{yudz0_OuA~=2l9wt#+%LYDgBZvV ziOpmW?VG!EdAry?D#rE)m+@GKwv>3?|2|VZj@!)MXSzoOp0LUvcu4f~hU zu}NBtj_CSG+}QeF>EbcxVb*f%%ti%%&Ns~{49kzTszniwNDJ5_>lF*e%}3LOT>J7m z_@?3XlR`19l9^{vOlh8(tf_vP5V+TDSz1?Iumi;A;WHkq|hixw7yD>^i%42UvF!nj)oYlI9-E*#Xl!B-ZWktER z+&;&8!rV8M!#*87MQT%1EbRd!zK_h zy>`+@7rJ5cZv*o2t6;~xg^OT?mY8IXdstSvGS)II>zUQ!3p$6ekRCzNa)TQv#RfY^ z-jmttZnQ_X3jJiO75A})*he$b4|8~ZBDS)mE{!I$r9OoeY!(L@A2r zZ}rzOMCq`?iy`ynqc1^jQ?4Cb${`N`h#XoSTl%+lP?HV_)y5n4m}oForTEZK3xTtE z(u+6DX-a3=!<9NnXu}Tv+&Y*kT7KxP#&ngILSLS(%^+GXhQpNi>b%)!m7_zPySY{`RE8Q(XiMpz!Gi-Am2&Gr8a3EByn*um@EL#&__{gI_-O(vyR@Soh zmA?_zWt6_iPs4=;mxn-EOXAw&)E;wmB2bP!#k^CFy(tEwx5)Y}+(cNHba!{R7J442gq zB{RFP1xm)O6D5bGgmnoW99^`U9{^%@B8i$4KSV!oR<)yo|E=Sk}bBLuUw8&YVz|9uNV9IoB&9{ z;V%fAC-~;6n7!D0c$jtX%F4t6@;GxBt=4+nSoh6+$zwEForai+ zk|<$uS`MLQ&+;vtdk-nfem4D5YppYqa+RYCgl^(k0&cLxC3n?9r_Mx#Hzul7Ui7MA z887gQ4Scv+@mdoj+%Hg_U0#mWtROq)&qiuH3~iQn;NR<9!m;aMz@tzwQ@}Z~!?F|#7Te<}^Ghrgtnf^AzzTfN zk6yXNJz;?bi|N!@F#9d)2lK%mtZUeVv0&SdQSwe>!7$Fu5s$Mq>xfs?U7pqc;D7fT z=u!KFXE`HUXY##K5B!us9m^@^0!wwq9@()vY@EqgwHn#66|v>@1=W#%sBW#{FPi)^ ztkZ1`PbPLC1G%``tI3LurHurceIg;-MSQ;ruG)l3nvmLlL8M=cuujta!J#7m6^o$&T{kfqEB+NEWtgiI469}Y!_m7WB<@Mx|Ej=yL@r|GAJzjq>H!%wcOG>J*+~r@BHc`fz-cMI zgVJHgDF^zq{i^Jv(QyyB$!x=fpP?7@hmPqFF!7*21fJCp#Oovg?YaIC*hsh-DGv2> zMsG;9V1}B+kuwL$fAyxi!+*9~vIXt36W2K8&(r)(yZHD|0_B41dO&EDsrsELW@JuF z&5Y*?(?TX`I)!e%@j%iY%O9n8NLmChPtS%Vjb>51EC}fuEXZ#jTISq(4xbS#Fv2Bt z;j|2Hqe)HD@<;v~pk=!yMoRsbHxB%oNVhs{`@52l)M>f%|94t`%w^|U(()f#EvfLE z&~l_<^D3cribebr4WH?t>a(NapUbma?*FK?-~l%t0$GW2fd)MvvnSX&dM62Q-WM|? z3X%F#mK!7*g5%ZW41=o9y0ub+f@bv#6c zD@VP-6X`@+Z%~YumfMOa)Ll7k-+Zhx7Pequ=TcYN=_u+;4`$!!jk537+F@(kOsCo? z8;-A*IP|pvAWps;?TwYIDLU||fFO5Ov36|vG<#!T)2-jOCdD$I*l-3PzWJ)6TjcBF z!DsIHP|l|h{{e}gVuBDzrPpXvrQNvj_H3$BLkG|=^*QQo!RlZ-I zL;Ku;Z+%(p=1eYjbHhi6CM`J$iGZRTewUmo8SSW10uSXS4*I<^XgT1{)felHpV5DB z?)Q!T_u=enH^tm@T6&G*9PDBU%|TkzW@R+X2#LChWsSIrWleltUAxC#C#3lU(HpB# zxpu{?LhpQHs~A6ZR;K~twT9I-z1CuNX3dV07*4Bfyhr9T-6jxXs@kX?Nzr?r2&9c9 zI>-o3*^_Jo@BtPdew)UNg;0FVzOfH{_^=BS;l~U-$-@Qw=*N*`-VBeJuR!6p;4i$8$K(?{7pqN`OL~X-#zD8n(BXD<4wqGQyc#LPu}{o-CCdt z`$KNc7-)*uE-DNaJ)2ZD9V9kU2AU`mRT3TEYYUqfDVmH6@tTXhLZo4^j18oz`Sr}P z-p22F3tshL70XN}B>l) zNu#B8Z_3Lvmy)61RKrbUDH@5uS;I}IO|S}>@#-4K_e;fdET{!l)th`i_hov?XO~f} zt2T^kX*j4`0&W}-M-S%L$G-8&eC^+gpX}xdg`NG4l42yT4V~G+!>-W-|V2NJb!gyImI*`?I{&;1w%Uh7grufjB8kvKvN%1HR z(UGMTf*V%mV^&6qElaDze;WfNBinZ+9Ur%?Tt&Nr)Bg^QbgGj7-P9#_PhIlcC0z_F zQeahDnMmb&EK;ll$k$?##MK)3cG&Q(Q>Dz5@Hyx9gOzE_;bib`B$cOfBptv`lNKsU zxe)CK-b22EX%&4*XqL!8uG55|eJftB2a$D{RX@PiP=OLFl0=o)kz+`fLpw`qF)n|QO^q`d|J`Wf?NNJzX{*+ItjB=zd;}d znkN0;^HXX;$D{Wf^b2i?8yWrHSC-k)C==+^Jhw`G8U8!bc8NVy-hjGTj45em9NOnv zoG`hx_&FPjt~rdVtSH%3w&@5_jh+c6PrO<%(TSW9CSguz*-r!@4FNa0I^P=hodGSckV zN%P!WZjxqQup0g>AXxvaebd&xvlgsjdp5YUUa)RJR!=Vx<)fkZwD>*ywzJtg!t1Qo zKK6bFvbO%G5{2KUkxo_8t`wZAq@5CSZVFNZKYrWrBd_C!4nI1#mYeu7Gr_voTq%Ne zzuLYHn#;sCn8q?~z`B2?RJ|tHl&N?d;K91eM+&b%L{(k@W^0u5|_C97je&n2(JWx@cO4W4j5@jo2G(b9*lRvh4bv-bw=Vr{r z7H=x%ymQ?!^Wrb9yZ*WBFlzLi=X4gR6$fuf|Mxa(OZBKL!utnPW0>tjHXaa{EGu4R z+HLpT8LJxo$ACo~yusq9Y}9z>_T($|G}N9kGSu@jB;N{U~2s_Ugj|1s7p4&K&lJ$TQaVK*8KM`^NNyX#&Z zoijS+dT~Lkw!L7k<7SqgtNd6_k~<$xjo+_pa>h8_<#W!h*IgP97$4wH-Qwr%+ZjA( z8?f8=Sv@xOHAqLiRu_t-S{fW;;#1}U?{K&V&-9%eA{r?L-Fiv^+j3Go-b$HN2DjX~ zqi)#NV+X!&Nk=*pb{dDvGel=g!5g!g^TxJ?8s$7@OEFutiVxbijV#xCw{q%i;O^~!Gl#0~U;WXe@3H-6R>-*k^#j9D6Y2MR=V)G@tv=aA2m`7C3j>OG`hTO= ze5*_}huTOT58gN;2=*}xrdGRY&qVFZd5T|th zmFYxe7W>kuCJ}I&n8tygc%svKKe{J6!Rib}&fs6R6Bsry%e8gc_}Vg2+Z}+_uFm0b z?GSMF)7!yUlOvJ|N+4#dxP_-JnRu3vXBhx!jb;OCSvigr;7P z=t;%B%H_0|QS5?dH&Ls+45`>^(n?Ldbo6THy%jN;J7Fm>7q^4 zWs9E@`u+1)>G|*f)5WQA>U;7ls)X%muN}8dt{fsFEIn1`ffY^BqodN$k+fGPDp6&7`sP$|M!EPz%tmQXQ1}l`s6nmp|~^pZUeVOrGa=-=r~e z66y)OS)(4OSJ^@opENgnKKy0#+gtN$*E)#(^iJi~;;wNYd)sMjL?*8m7ug&%3tLgH z@*)onm}-H5o-a_FrAL1&Z2j7Poou@}6)#wA$JM%o=Fs+@#Rs=LUBQQ%(&e)Hb_L%q zwQqjSEZ2l+Rol9j=_=kUGpwyF)cV~_JOS+=}ZA+OfaviaA{vE`ft(75fecm|m7 zw=uHWFNK#}gyy;@`I|Q|B<+uucR&xmTs=TN;=!L)5BT-@_)8ga`*e-;>3m`rgp?&6 zilvjlGMy+ahp6w+@Y|^}k+I(RL4Fz@i$LzT4otH1+EQ*d^GD5_sr1}y`Z#!=bcUU>;sM@K#JZI+#D`k_1e$AAhTyGDcG46b@i*Cv@--PAy6hnsKrvT4tG+d^uiBB8^ zuM|+7VmQMohHVD{3S6xPKTXL}?8?h0!|hVKeWmJ{S@A1eLb;N?d^{&O-2n{vxJ{s2 z$!@U?{(O0%_yd5>?T9pvCu8_?ev;uvg~CaO#(G+`R1q?;R8;H1LX!~LQjogvHt;yNT)MSOM2B8RPr*R=FYy)O@dw;cOhF3+B=`c@Yh zR41otrt$RmO%F~Z0}Y(MR?NoGgcjcEopL0NP9C@X@lOI?OD~pP`?CFLPQQ4v66R!LXjf zI-ilX7f(}vO6^(toDJWU4;wv3yWcXDTaT=Y9qb9wGBll0$6#^J8($$AuV-v9+@;4_ za!wrzzr$!w+KI!+j`VXFA>p))?0kK8I4PE?f&{g>h6V(8fd(M!tJuj2|7tY$Y&$bZ zF!U1x9fu*~&;#AyqBO_LvKJ!MVWGxpi)YXb%TnFpWA`~`m00P$A**Emu)IeRCx&_B z_~U^I#$-HRpIG+8cis(EIa4#o$Z`s!+FchC$X@YrwgdZJiYd&t!29v`HzG28D=gWw z$b>iRL0yKtu6p1yQ1X=cN^t#AIia+MkH~kWs*&=58u*cKF2?;y z@xHe++d@esw)3iz3pxyC4Jb;-;PgsX^5y!frJ@V4@XF*BWlK;nPMr_g#Jrw*q$q#w zosS9-*f@tDu9ej8^Lj~Al7CgN;k?$At94+F;OYIB38xH*gI&1@`xeQ+ws1?880p^R z6(Qx6-!H_oqoVn>%d?kfyD7-pJDfl#&X;66gwSX-`{42%ZvmCR9=^-*O83Nac)0yx z66I>y@qu>TXxnJPhu7S0fSPJ%&n-%ywIOaj5mNxqG+niH!bZt91M8dR7jYXzZn-?a z+QIijzPSJxTpNvs+VFk2627(C`PG-_YiiVB#6AN<@Ip{ynZiB;j+e4amQCqJJOEcv z-k#E&)wSIQ%bccRgHmg@*x0b)~bwiz{>olCK2DX;obbTkn+OE9m zsE@%DZsqX6Nui7pR-Q4C=uJ;$u(oJg$BA*kmGE4_9(Fd>+rXP<^`bYO*ReqjOHJZU zpVPYORWGcY^k99^){~CM8k32tccdlpp`Ki zyAZftdDH#3NkrSCj{3?3z$;%;y9!rg$SQ^S5QGmedQ@ zmb6_b#cD^-w-6}~A}P*qMT$RNEh!j+$iFW>5V6glA5uh_B-a9h8)(&^Pk4D0qi$irbRElnQJ*RxfjeW2XO$WBFDA42~GDBQO7K<>} zV$*hfEE&x1%d;hCL0lXpuxMLKwE-V41j=HU*lhuzw7NPAE>)p)&3n7nj)>P{&Lxk2* zuB2(u?hKdFns;2^m$d<+3@WB&P|?a^@$f`ki;GG_qDcrUIuM^gHS!Lc>Iv=)1EaQ0 zG6n@XVU#iKm=c%sa}<3vA+n7`va{@X9lNBig&k)?*io-y*m0unnZk}%)h9x$F;-5) zAy%$@m0GMEW0VfyRpr^NY9I)?!PIs#U2nEiUL3boLlMghpiECC4&Q`(Pz$TmUG3s%zFiX)F+dl+w{hidBC$4p z!u&Sc#4OQn($a*o!a)x+`jQV>I@p}JcaYdrswrSf&f!U^fPq{!1#E6>1^mbR|g&JH}TRH!%bqFP9bv?-rHi!SkFKDKAh&y!0nN^$yOf z%i^6X=Dq&%CqDL`|MR+p>2PbAOKj9!~Av zhc*}~cY`iw?VPbPTK(Z)s`1HR{>Pua?^S>O(3^i*cYbQ8tlb2Y7Qb#I-(DMeW+N{? zZ7-^eMKfx^GSlKS_9Bi^gU@{Mr}Tm_$E)rEls0&~_qRP}YUSYNk?;N427~``z|6&_ zIlE`oOUSD9#&jo28WUqf`?9E;?)@^mGggwXG$cTWN-33EjhH|hbB|*sgLH@!obV|8 z`Zz(}Xd{`3PuOJDmEsk>w^fq`n+SCAvAN12|NK~Xn7K_VIiKdd9>Cq1Q0F({d<6w@lXEeB+Qxg zopzFUI-L}qIW690iF^@@+jKpNOmTCV53aRtaA^^@2Zc#VILACwuOwJ?s}aV~)t4Xt ziJ$pvTP@vXwhkl3V*b-dKKKWn=L~34zyA6opZYW16i3-kv$-Pf)(vAYQVT%)f=zK| zJ4A7n}S_{zznzLs1-Vikr@ZD6w%bJqXz{!6ehf`?w#hsaqsbZ?=cx$XoITUVnx}ba~6iei(ee-+1L5e+*qNge!h-Z z(2|FXW;`4+}6{W3JTFx1;7*T;MJoC6)7R0UGQU@Ebgm#m7t|>9{!3C0h%cO=^{AR7ikEa@)T~smSz0T#t_8SQ-;hxQ&5DCP5)d5uH5B^v!E%d-4R$dMwl77iuh(Hk%T5n_ zZQ;GNXn)^~SG^z2@qxbJWN(2_BW`qbE{3e;xx8CeT{4;%2N*c+OC`3D)gikt$PkG( z-Wi8|s3!tLN@fM5!{5U_JL|-%apKb0M`twLjW~D9V{rmzI&{wc@rVU3n~>5v_fcPQd<`yeFA!P75Yd$A@uAsr* zurq}@(oz8OSFyux)fgClr6XVY^{iFIbQV(u{Xzg)W`WW zP3&RD*=5@zjrJ4Q1 zt|;y-#FE2~BInx|`&857PP`;wknIb24o@YD%rXv)nz=-$K&yEA9mUgMRwP#sE&%%Z zOXjnzg+kT7h8qwUjGkL$QIzW&_dX2|J3)v;!H>8pz0|a3MHv%A8^Bx06(WbrTjHca0N>^R&#jnU|v%Q!*OyEx`lmM;b!1c@wq^^RywuSFJN_gL$P#X zJXkF-9A}31L6?JCW;1GAo{++``nfD<*`NYR73(X&d?zvA0Ws@2Of9lmKZ5St8I2Y?b{p=Nzl3$;=CKv0lNh;2{-X;n_6tYG3w z%fCSd$>ViHGF~5_T2{<=CGTW0_9hSZO-f7vf}%2bOjL@=cp{C!6S;+{BDJnO$)|$l zN+u>Hmz=GUw3t|R3$hQ3Lx(2MHO0KV4cr5`VmMp%6>bPaBp(N`S3Q!r*}Ia zc8#MFbBC!{OZ7VJb(ReC>NTSHwg~ZpHltXC_yP}5A=)gfC9(9~{{Pr3ddzJ}O8x>c zm3C~mojGxehxFj!Gk3TUyPdKFFUv)$Dw~U+FUWQc^z67rIm;vxyf$Q4g4l4h7?j1K zw6jIWbaX^tB*ZXvOHK7L4x^KXOq4$;b8R3;& z+nHP`5jRna&(cYNiPxDh4Gt2Ha#@=9FO>Xdu=jb8uJR7B3$^kN+-pskdJ4sC6Mfv< zkwvYluT^u)eN1bN{1Lfd2W9N9QDx3`;0h#bp=SscvRvfY}7b-%)F@GIEm+?M8=_x}eu0pw;N)u+_UpKO=2 z&{UuFGg9~H`&ZjwgLxJtf8|*i2$tSYH!83>kKDHaC5-c4e~)Fq)a=zOp`{G{_MTX-{KK#Yro2q19t8@#2M6oRv#M;^skZi#<6ip%ma*IirfMo=>JjXy$SJJAbT*)>< zWU(9|yvS!?5FPb7^1!`7b5TiU9T?f69t_g_(-)4Gf?U2(0%mDKE^C&MQ3b92SXDG2 zx>4Jk4apMiH+>sh&_Fe4osr-x9LZt};DpL0Y|2JBC(O0I-K!&RN|p*PopH1}+EM)? zOJbq=MPA)S)i2J52$|BVM@oj>H14h7#_EoCR%L-z&wk0#h0`pPj&)d{0$Hc7HXbX1 z?Q?YPR!A#!2pWGiD-C-1DM8%9A`gW*(Yj%w+-bpJyHsvGV{%=EuiZ81@I8H<@vzqdlnYGJCx}i2GR>rbf`1uX*g4uX*fF!=p==y3lKHa@zScE3h~Dl5=Tk zxM@vN%H2(yh-n)dA$fO*0`)vhp?t^D^BdVnF>1Wi|HwlvxvmRsaJ+Rh)CJ=p3D{gBagscT1GV7m4L zm9)S)9IUXF>@Dyj2{dq_lE{LUR`@drczr&mRVS}WRzlu~?Q2$HMoau2WfNu}%re-& zC%VLwDlX14Ml>1OX61m8E!!f!AE9r!>g@12dgJ$MB>~OvG@8 zJPiLp^CM zeR>WXjO0-176XssMEbEPv7$JAX^!9!)0j~qsb}j8A*R*p`Y28xoH-EK zX;HX2E8;6ywjYUD!T_7Z<8sY_&08#D;eo6EBCGq() zo6nyapFgYl{8@Vbg)()`2V1GSzpq2NSJ>r7oe+(l^Xt$A_cxM^Q9{z)1}+Ige5H)cQP?PD4_rp-NzE54d$wz1HL_Z?^I^RB<)V<1gcC42#W>@;NB}AqIom8=H+1 zv$6`e@;S(|UmW#EsJ$M{^Q?o=W|Z=0*QP}A1ONsE^BA&p05u)kJqrud8;z4R*bUkO z9ds;$SF`c$Su~4NqUVPFA=AhkvO8+!$!N!DKFFpWQXQ1=QP<|_e9}TUC&U>obRcyG z-@w`T43MYr4UpLA(i|yJGq{n4HG>;z&{QD0!QeKd9zb}4i4sW6{3hq>e4F0}A*m%3 zqC03X4fFdejHqFI|D8QJFNSwDQ!~7osp}-hwQG|5urs6}x$k#|w2|ayXmzP-l6xcR zyOEUMNSd#xy{Bk+=TUx_suOyDhgfou-__%${KiH$Ier}5IAEV$!2%-k%6xgeG7%3+ zC@ah<7NThoTxCAbkG2JZv*fC669nhPTI%SLP_5mq%xBBHI#`JiM4xFB_eowNmJVw5 zv@J-YlmL+u1TlV);^s2NGizGI0H=O_ zQx|sbBP~Z2LTqE0)85(rw~-=|lQ;HRtUXcDJ22_2%(_b)MY ztrQE!Sf>qes4w^P6sMYPpYpaZa&Udl15Qz|D63UN3lczS0wRDZLLDhh=S=Sce+(o(y$pD;;TP$+CA!N19~W zg49G5qwGfFpc+jxu%Z>%{B6{AG_?vi5!<%_PN>*`jr$4YIYGc${zj=H)nXZ_NFH@C zB?yrnvTWT&MTDXj=>QI{PDzh46^YZm&bNwW$wS`+DpEC5Q<0ddsYs8*Swn0>oceL+ ztYUxs`l55zZxsb8LlZJHw90OzM)t9NrFdm&u9f5c%kJ<@qBKTmC;vFR{ zsM;sh)bcQ-jo@Rlw2|W!pNVNBDt0{dDD6>HiO;8@Qjts?RjP~mO1yl$3jpnqS~VJ4 zj)~S;YRo*R^)2A?B8em_1Jiv51#7N;MjF5k3RXIvD`puTm#Zz>ql6j6eKp6b`LLjK z8vilPX#e2p`u@RE$5NW8>sTrWWZgSdWJ4^jL~rWNw|!5TG=KVy4zyHzx^|K>z2o94Fy%UtrESPnKbo&If}anY zLZ?%4qA&wU7ixeP>X3vMUjL=lahgm2((dtPPHRg@Q+tJ65X<4D9{?JYu~VeiSZ6qK z!~yx>P#V}Y+CGrtwB2{5Nr6BC3x`yfS=f~b-pXa9C2uqnrR~{GQq3@;frVM4HW^b7 z&aNr#FWU~Rmf5|1A(+j%2f>+jVNZ!no{KL9WM(sa^J$}t16zEW*y6<-u*I1wCKT;W z^Ez*3Z-OuLqzMJGkJzwe!q!g6q13p8b~XUm;Xer;CVg>(AnuI;}`_)t0H#jL1}1@SU{&QlU15r)s-~ ztWE9J69zeX($j?-2;dDX11IdNsd$tyQ+(jCbEyl>^5OUW&Z+)_xNU=L3a^TjI#ril z{r5)`(0v)c^B-S4{Aw0M+mdvBAZ3UTre;j6#?*|-9Rm%Np;FE?$OF$h-5~EOfVC@n zC^OCKiCJXMfLPN7shP4|67K_k640w!v&l^;^Xz zgNu4L8C=vefY%5vPMsrEO}VkF?J!qL*%jMtE{rOh!l>XiKVXDL!6~x+=};^E3xW6D(iL+;0{UX zo%*xH9}&!GCuw~_M5EU|1HEo(l#h2xnXmm+Q8RdrU!rvxL$e%a%<+Mx|JbVw!z(h5 zO$+LU9RZXoP1+I^b+P9xH43m~v}^RVAozAk@JaejMmEsHq(`YIv7|I~iNmSJn|KKy zBSh;gn29K>kl-qeLa|?a{cYj3WqC4GUceN^9M#sLCJRP5pnIW?1hxP)AC@T$#I3e8rxetUYFb=FN_Su-8C|3!mgk@i=)}VPk+(+2bK6&wqU}X63nfIx!njxd$$? zccI!?qVr>0RRTd$eAFJ4`GScu3|dt}VWKRAR+Vv>h?(fbwXoD2II7>C_6H#(VoH8S zm43if!=4q`5a+z=nN(0#By7v6#@b@6s6oB`rp;-a_%?IQZ4*Kc@B+oSqU8`_JMY+! zD8$xli8fj!AeVGuXUUkqB#CZgY zZPbbxmnl_Jm-&7^)$7rAbr$tc4sNdW&r+p=4qi&3Z7Nv<3PI74)DtYM8o#LXiZYJS zF6U`!#g=DhQ=NAsVc{tn39Jia*b%g7nc1Zlty!4q?Za2OT7o*BOp?S#{g)IR_`>Y< zx?#V&jm}|h+SO!+qP8TL)Z!=hA(yrP1`ZT3uP=P7pU}uTpX3I)YICw8Ea7A{jKwWZ zdIDq_SBdY|f2#DOMuKR87IR^qdEAwmyEH(HfewB5_U||sL@^|#&5|17Uy(@7Qy7bK z?uHfiPSw%**-``F$~U({_aL>@&8lxt6+#L0h>yWiFQR&kN!do7eVjX=TR-d9{Y+1SGh_4JH=t$e`y?iJ;2f`J zs`(w){PqvNL*E}^Mq*Y;8KAN)NcB0YOTjBzooK-=@uR~@MJCUTEQU78Fw3&aUonI zvBNDL5fj#?IffliONeY)Uk*UYIFn|mLpc*xwzg@a-Es^bb;8z`w=^Jq9N$(Ns;yQN zK(n?m*xT6;!lp}mn{2(4m5L_~&s<(`WBG?U>%(*YrB$OFTqH%J{tN@{A}Jf;86IYR zI|SOA(cUgk>L{0Mt6>|b3f8UZlQEczeOyAywSVQ?PNWc!Z(HuFi5d8|t7b9-pM|3C zqt&!6F1S(V%sT&qmIy-LAulQz6xSpY##WPK6#@S9EOF~`WD5}D#24EsvBqQ^?iDDD zCsoE4qXzTS<-^+IoZ#WeTRP6yV3VKXtDnMB$WkABflu=_M6^!wwHCl)DcyW5-p`Ag zY0bLV5`)ap-f$;QjB}mWojAX%RT8vgvM`kY*<^UnJv=r+A$u8Y4ZDFDLt}T$F_T## zNe6O=9UpW42@T-acJ8SdRBd;Rwx(DjsLmeB%kG}W`c)@efd#$+MSDdo;n;@CW8bba zZa$9NRZ8~@oF-z;*>MV!lk)aGMf`7Ac2i}JNrWv}q|{8h$-ObQ$xaMlJc>R$eLmJ3 zk7fLQ8lz92C$)>la(tZ*H%SB9K6-jESwz00r}L+7o%;OCG@wZP*6v#d##`n7B4b}{ z)|kob2lxmqq#QVPWRP3Jzsc#{#u$lDmvWjd;L(p( z5$8uBd?E*la&!w00zw&&Dy@92hx~CaIPA=*Zv^9C8c1B%cz5*k2?Hxj`iy#ovPw)DMpF5p;Dw%SVjQh{ z9Mug)WH#STbEqOzSguj|o5X~m_CwB|zR|mBES`995}F5naOTpn>uDMAeUoe&KY9h) zd##D+q%gU2Z#z0EUaRKTIVsktvcVRcwa~Y_C}N`Q-L~5{ZY@=IENdbDjW!hB6Y*FO z+!OPFJGv)^XX~0k_Y?;{gFAwK_v`azpR8o87WqlndF@2Iub#U*!p^mQyxH{Q-gG$F z?u#3^BdGOM+!0HVQf>^K!|l4Q#l_CzVz$_HGw2OBgSw*ua71qH_H)J}xHn-XsU6E+ z9tINiKrcOghAfAHcvh+HE|!hX{UfrkCCeQxO0zc#g)*XBMrlnqtsA(Emi?-Vw$z-d zuJwmTkC;!Sb@tgCcA!)WKtl?xGB9dcRSGXp0uMHXvm>4I2M0wphDK=qbmgEBqdx82R3yr;FIDb| zn))!kdqP2RV@9QJV`_vRo4gI|By!6wdDJ?OrE{dJ<*13+$rF~dYWABtYMQN87OTY& zV0~w^J?Ns*&fpgil9Q7+m0!RT0k`rCSWN#^CE8%ZrXGDRSf;1eTc&m_AEz~8q~>Kz zT22RI()`sP?b1_4hM#%ZrSP6h^jT> zxqe+%70)#sP(0ULQ#^OpVvU-U`J6-c?fS?bA|de`Q_O*0lObi;67T@KT2mH7w7_NE ze*&i4%`4W9=la%MC~Uu6*nc~H*$`^(li1Dq3ND&o?ofRloCFW~x-%7>7wFI4wTpqW$T-1c;hC4GO)) zHX-TPmrNygmxPXRME|M=Bq>)r4J8H->d7gA7eS7ud?;ywL|L2zY~^mXh|8JliGdkh zY=?J?9p2j9op3C2*RGWR%SYbxSMPc22cJlu7fwv}-Q6Gm$>W5=!c{oo)Z|UVP_T|@ip4eQffT9s zpPIe|fq)GS@A8RRKi5>dy5kA{wyV23!N1hAg-Ml~s(h6If-UtWHoI@GO~n>U?{_)h z4PX@lgzEq$Gb5bAdJHuvL}sKB1szCU70+?2yec(i37P3W7r9zY9pWgGGBGl(J4?u8 zEw540(oJ)6+V2TwKEa?4<;535yheKC_(t;a8pdealcK z^_Y@3e7fu?@iTYvs&a3z5=`8`W257do#0APDcN^7<2@dNoYG}{{5osQaLYcyEz8mc zU;XSU8F!PoRRL>Io)}<<4NaaH;CT7Yh+7dSO+!I*h?!3({j072Cuh;vOhb9RVvcZk z(@?&c>l}D?R|!;}B-io{%o?l&mmR=>HEFwS8atJZ+n6kGoQ6^!iYqv|7Ga00*v&U~ zph}sqs&!*nfqlZw7}hBt7UNKO-Wlte{;J;R-1)I#evTczE#F?u&-t`NvzDL3 z*42n0&HS9!&YN8h2)*&%Op0_;k);EJc2AEpD zYe-XkOrTK^lgyhOubhck62AdlPHu!CHY2fV$B)&ra^SbEa_7!TYqN|?d|C~`f_TdK zPv*6_goGVkod^p;f}P?=SUAPZd1J}nj#anbe8Ctsf=&Jvx&7rU zIK~-nbYJd{nCKq1I^7v=oQ7sBG^}Q1uUacRL`|LR*zo?xH$Ddn4Oz#0p?POTSWDck!6**8HmcVv9kvX47auXED2$p=) z(CWB(5|*C^$q_*=Q!L@>aX=d4HG*z9bn6sf!=YQ2jRADz%Vch>PYqDQH(H2*rG)_4 zf)@1EsEE<*rfP>$tJnvR5ylw{vNT(aI@k%Hc25_W$O!_1)GeOOEzgo88p~r zEHXWtG)ZA|htkx7QV zbbjAM$q!p~b^@)``DosFr_M~GZ^$c8S2O{+8?XEl5m*t{Y0(FlgyG=RS*;a6S!3j- zr6TNh3Rt$-}6>nisFqzilg%^zR~k)BcRn z&{$(f*Ih6NT?z6{!l)-4bl6|_%f7A0HXLSOkH8Y2`L;G=GohfY#t>+hw!=bHj zko6xg-J>_p`u}}bB5GCz?xwgZO{=0aw89l4Y+zTM!>t-mA?u%^X2t1rBJ2M&J1b(= z|AK@jF!@qyTtB)qZTmwNP=DN-C!$&`8={Fb`tty>xd z=2>eTO8K#Rg8kHoQc5SQxh>5iS}?bzFKC&<9z`pQDy2^Gkq`UV^^?Oxv5S3C)rpiW zR2DDtj8@N<4Hj(AD|JT!%rBsgb=|KBZ)Lpl32ChHUG%|)(P^Neu~}_sn@q~b(}&|E z4UI$~ZqbN|AckaW?NJTQ*xMls%{GMjq4LIpGaLcwh*KuA>xx!pWw*9kSa%DUpRdkK zAE`RWpxdZ(T*u)$S)sCT%0-b-K)1GkoKRIQ*t=4uw5#Oq($T43>=IP~1XNzz(%HN+FLgKAc0vF>0>Rbo2l z=~4*y`IgtX#!Dei8q;p*RVSSvnO^m%bEAp0cMB;oevB=%l5J~(!c448uAGT@0fe5h zcDZsU>d#o0JnTd*>#~lGvnf^gQaxLDDTH>?Zhk3*X`gb?8vLaQnAG=!2+GGX%U&k1 zVV!+~b*A@0e0DbFK&gM+XNL1(PG;_&{N&ttq#B=`^Ju~eu03{lf|FQ-JS(jEIvrK% znSYfyVYa4>eo!(Lv2;vJ8Mi}AwcXT+KjXy?*3~IAtcfc`PGyyz5W}9IbL+6u6R_ti zJ>fBHq|_5WYYKF6lBdA+u`KEdctdpZw4EvFqVZ(t%5?^92dp1w{V4mrAeN@ypaeTn zD0+i!1w>!iu6jI{?w~z^cDUu4L!Whh0;F6Q25o8*c4d1*li;|GN{*jkvNcWOgeJCs zz!pYatW0AXO~SW_G}}4m?I;h9mOj|9(RDLgZ3K?3<+WQ=XcF6LHLo`N&Ey07m!P$E zi+g@bHu@m$_iOR!zWO8lj(+%(z&Ntqelyh-vpkw;B5e3WHcd7JMk5e65VO-~F9803qM@HjiIL{y;d4LW9g(V()ZKnkZ+)whRC zsvPF!vS^K?{}f7xdn32hF}9aiP}xSC$t$QFr5ZX0s?kPbew|(yX!mg&C+7?O{#P%sLWOLdat;9doO!IqKS`fr`RHPR*zi|GE%+L+;oXCs)@*0Z+gWtL+&!W7QKK4xQ{~xceHYMb&cgq<=RaC%_>bx= zJ^FdhlBL^G3bF1tm;cB@C|h!~ucQCyJavBdGR^PIlhXH(KEyZG-K)&N|Pt_c`aj->Y*a*_L0DoO|$0Ukz3vraZCRxTd{Td2yv><#^Q>nvQy1<&ZlRt0N0Ma6 zLmKr$8h!LXEt^mK9h?-=wfWR+gP>{7ZY70+{?qjzc~Y0Q`j7rH`HwEO{YNA{r*e7= zXjAqrMLE55^UlzzUUKT~B_|`sR^2bS<>Gvu#Z$fDmKR$spLffJR?G8lIp1n|)-9wt z*4aQLkZ4nFQy@&`^t|2n9FwV|t)juj)au*G&=D^^k)Zj_7ra{HKy*)|Bd%8G5a zYfiUu7x+5e!QSU`{82d{8C4`7`nlS0d@=%$o3z53r;41|7(H&L9z`3EQ9BNMEx8OO zWbqSfAA)oSUl;myNO8NJ4{ev-&9ixlQ6>~Xw zNYa8+7iS3_4!kt0j(0mb9-ZKrX0u0%8@`>uPLm15MEF%3eB^+!N&qNJN?!1pg@noV z%~9xqR!r|=T8$k zN%H}sbz#j&kLyJiI@LbEEdPDH)B{!K|E`B%;vysCAMs(Az9q;gYDg|k)sS?R{9I_> zMKWf`{Y*AsY`V~VtRq+J8j?%gk}9zagd`HDsH}1+!I;7>yB)4+b$xp)EFrwy?!|9s z?fLhoQWrW)Puzerqa;Aq%fo9ZICXO?-Awk}(R-AUDSz>#Mu?v=7b;}Y7D8n`-WT-= zNk(|<@=QtvJSc|iEIrvCfoQ2u%hCZ362tt@3a$}2a!pVFi?!usE{<)GbRc1f!%10i zdizyhz`aHx$2gd}eJ&Ob(N@G^%z(A+he@ts+(3@1K2T}{)}yXDXhGJbQ7f_{$K6P2 z3=x+V6Ezv?bMBCnxYcE(q309^4Qih@6*cQnbQ!;Dv9!znEB6>Rg((?|ZzFZai$-}_ zI@GC~apGn=3OphV)Dw&iS&`WAb537K1qeBuL9>qiSlK313c8?)@yV)Km4 zezAFGHS~kVlW}tuvs7B|6wt%b*CB~9gqYmJ!iAAWkI#doqeq}m!TIcQ@>|dCxW7@+fEMt`p+FIXvMl?l!fNg9B znIe=Q!)WcN3>xsIBamXSJtOZyzM02J`U5S~6 zmTne}seHLMCo3I8nID~H7nxZ?U+4p$B4lkPQ9!^afb3LPEK*IVvFu2BQPuG@f~{4@ zy<^e)%aqm1{EM;8LD_+PBgfU2cl$kBFkw9+0PBOK_-@n2{_f>4ZC0mD8#W@a%((J1 zbfV;+YHjO~89e4~)5c3N?@e!s_Pi8(1d9t~D^k!Ifqqq2( zvKV~mYy7<$fBU42W^h&`D(nl9kLX527A2Y6CaQCpky47$imb2s0lLADA`SY{?0GSd z>xz@hmcn);j~+4@(!0i4jGnP1VXvWn_T#5^_V;zQR(gc~8Ppv;;dFrNW0nevyZ=)h?p%`9YiJch{QUG(m@s;cRhR`wmVFXTpSNY zAFNv80{;OJb+yg1!SeqhPDm*1L7tXN5*mCDRuzruM`B3!v>QcMr2E5S#Iea*;qHxHqxq=Q6g^kGFSuwX#`XfRY^c~ z#M0|kbpLN%(e0lBg0H^le!arz7rHR=&({h@f3O3e!su~KV9{(2ORRu4nw#Vk&$6k| zmy(5xk(P6`vd_VIsg&qyK0aN{fuK3gV|=h$wAjvyvku zvXl(W&SYsl^hz0WG&D&l6miKi)`>$OLg58dSjgXP69FO4SqIiBj$)A%PP0lHmGlI%bNRjH$e}mo?@~! z@)Tq2Su+CjTMP?OQ}Say0|rk=gPNN?`l{)x|>*i)YRDQ7kq2hyu|1Uq7)`y!# zYk}x6lTVRtMN=AL(1PW7F)4C<0bB5)kD2+VL_?dVZQfL&yIA3>j;aaANr6SWTxN-#4Ec1)zZ>)&oRc<@b2;O*fnyf_fCSIJQ^=p%wfDC zo?Q8^_ToApMs2Ng-7fBS7pdsVJ7W1we40R!?{8GB!hf}nT`x}-Ybc`i@{vLT3kt|N zDz#odT&xX+1))hAf^(2Nr|l$;mbzU~IkRE0y1Lq@GCv0*rE80B@8Lf$SaivMKB#{D z!?L35s%69MKOa;-=_{#_$&CR87Ys`4pM_es1DrSBU%l}kSG~KJNBq#nz@m>)J=Og( z$yA{7o!)yV^yZgmH}E5cB&#=a5JlA21+9~&#T3YQf}yUQ8QMNo54b0kKo4-FiSQeCE#kNAUAeQzND! z`jc3R5o&S=`yhY$NWo2ZPy?R-2AC`hCb-?xuXG>&x*(Fcn(yV#gQ6WaJ#>q4r=b_*R$R_^HC&rfW;_wk0Ys=Cyn=&|46==|E+P~#Y{tS#`l zXE)iBh#~~QQbg(Ekn=uugL9N_sN%^B{s~*v_A@T<)&Ro&?HxhaLp%=9DTx)8cYh;f zMvageS;$;#A>*`lnXk=+!XLXYs51PqDLyw;mU}Y{$(TX5<1J&Bgll9Bc(9DItdWcf z8d%oGAjy(NZ87dsQOrAxvm{w^YfeV=J&yhY0Shed|7V z2XfQB3X~)<I0>tDmUHRH99s z8F-S&iaupPu(FE@c!8=#BM6ohysdmtYr?YPE;{+qpq%ycfq34Rjx}UNj);Kdfjo#R zVwm#r@?_XWs3*yt`4Ei}ET3KKIWnkW_NOL}aiu}#<*mjO#yZ^wEWE(AQ%N?3RvKf+ zapa?njZj_=?;%_x+nhVdX-YAY@zEn>bXzmtsBn&6gNmPf!aDaxx(+*~hB{hg#bra5 zC>ydTa*^^yW@@z|No_@ktiq7sxK}^1z!UhP=aNR5L!&r=6-H*GP`lWfsdq{{Tc?RD zHb^P16e*^P2YD@gEr&(Mh)qh1u|vI{<^9kYL0!vVU@v!g7j_4~-4OWsnn!#EdvZ8N>mxuJOS-$wgF z&RO^VwNEZ<3=V75+WfxNK38Z6Mmju6R2#}-9nfIH;OYmhO$$VqX&>MdonNYe=cC=86t~SQ^@T1nDLmhLtkaTFEwC*;GcTg&c$HGUc zvij=Er>$8LV!d`eY;9D<&X^jw>~mfQCz^8dq_SE{9qS!Xliwkeb!v{wNYRBO#W&l? z*J!6xMz-n3g8D6ifxE!6jb`W=bk*kVy^|T)^%`7bO9fBJnzC6xk;o}hzw$LsG4z{AN`foPl!Iz)SmGun#RT{chor5_}0t2 zWMCZZ-#uBd*d^jj>hxr9Qk)Ab#PQB z=Zwj_MAE|K?07C=Qb;6S&L$tD4I&F7sEwXP05*DFX!!m@i|@acycDCE-WsC^9LebM zI!ZEnOeING3e*WO4EXCuEYBSK+l)?^o)hzg2=wE^*mtu5~iu z&HQ*pZ{GgBbcmJLbhxEl9Dk%W_vn@c`)M;{vc)Q;EfSTWB-AFL=-xCxx-jg*+71pMRH@y8Cm*3>RuIs$X~O_34o8S>`L} zHXlykNGCJ*EB7_zzXCLE>1!B{_-qk%l5^7QuDrr1YzYzgtsGIVlyEwu}^B&x1_IR&P$=z%CcJwFBu$R}I8% zot|jckR++1qxk3sgE+MG3ZAzAI15A)L12}Z6!DE$ z7>caLoCItw=3c3QrH_bbCb>Db5Zx*;u6Qc#4n^5@hx};GcyT|!k=Od8T(&=cNW$m+ zMX{~yLH#H30P_?`59wUzT3TYz)YQ)!7rv;K6Wn*|ldz5@%jjR}6>9}Qa@N|oSp1Kr zW6mCnMEefuK_`m$Iz?%Y!k_)S7;hYFP{`NiE-!wtNkdW&Pzzqhw((zn_Q;9igHJ@x zkp|L=c3M)W2y-hrN_QQ2@6ok>|1P>Ll17a#rS4K-pv<~eFBX7wE$#~Oy7fkGJ8*PT zjQixq!9|fhA1aF>#Em=>JqSN67?1S6*_o1C z**Cco8iLjnNoEF5MC!@JH_BO4Q+^SG+r(d_aYuJbN|9+r26q_@pn+Rblqm_@3j)W0 zGcT9C6%p50K4o7Lfw=X}YqlLi$&?FlgAkOth==SQs(VT^`;x_sTNSOMIZk!R$0SshH}IbZByMRd#umegx-RdwP+ zjrlO0#f&5}>wWgf#a^i4kWCHaN!+xkZwHVpp4(0F9&U^b6mN@u(jJl^7>zYcAUG7> z-X9Dh4OkDM1z~jKdO1!SxxfJl>tbl`1 zqa%AfB(35n;ms^&##g9*54R1U{P5z%et*?@KVO4f+vrsrWc~ERH&WgOTu4Y~eOB_n zvaFmTO2k}Z&s!8|pMebe^3}3>8Lqk)#G@bX<93{Q1289?9L48D!`(yz_;?E-(u-!k{zt<}3NDqgYHW!k>kdc71j$0Oy!>z_e!iRF>nf-#Xfc`kq}exb!M$pKy}2OtK7MlJNK2Y#u;d~n{$Eqo9JTIYk^a5wWoKKYmroLD#U!N%+Ze6Xa4+&B|m{J*i_sm+`!VzDv17m-KV=4%sQy z#>U{AlEC^0@8_lu+|eV&feTCDLD_hIk$J$cneV9bhLP7D5|5u=hJClfT`t>QUES z5(jMC#td_gaw(ED{cj%^-xQ<8^7w?us|y}4pJPT@%EeNQjvW(-2SzcL5$AxX3;56!ZvCs~Uf zDHE^HA?5|@m+k%Xq?xU>-44Gr>?SuiLflv3Jx%B2he4DODC<&TfguopVn#op3-o6m zg`pW*5Emfg7u|&?D12zio3{AHVmn`EDNZW1?bh6sZFvU9c0-ZKxc?7tBr8+18u;7a z{_WrXgZGb%w^e-^)>d84%84CQq9v%ZiaHReqT&6LI9L+^6`>;uP>N+08;cq7#ORMi zv5Z9vQu~9F66Xh?0DR-#=!fO95V`V`H*2WLPZ%!5vdXTEJ&U7H$IX|Da)541nyDe^ z9i|N^?w^P=_@BwLfd?|ww1>7gCNqk4y)|Y&L(YM)A98+b-f6Z%m!JG^%l+M%>m_>T z>StcW%p=MZ0Qd^e95>A?oHWw3y<7A9v&%f!_pfn zXv<&hz3R-v^gQ|lF)JQgh!{8XL2B)FM;DF1OjBS1E*z6!+Xc|~;GVNKcp3_vT+i1PS#LvnV zTRs1A{*Hc4v&HJV>>Zyg8w_6{X(ti3M2WNjlqVR8p2kr6=s!qL7}=0f*kOHdY7#h^ zG>TIuf$onrP6DV+aZy2Z2Vly#aM#8UFjzsXpQ+$md8JKn1+)43=JH;CA6A!udGr~h zHF_I-z*k0(r#7$&9ZECa8jC5u9p36rfC4bU69srUX~-fT+}v@Hqi28-8y**4bfFH; zUR*BrWIIwIONJyYt~@8P-Inxg4a|c>(cF#>NClgiR?6~X+=TWbT^NmhsF#z4wHKiY z^R4TFIv47eHOUoX_Vl{mEgm**a-moYVJSvkKo`+LgQlGc&}B}7y4~MMxE7dw&iV{W z-~Qb^_~}p5Ds;HOVx&81@4(v_Y_maOcFP6@wX}9tkgU`yG!}`()N!VcM*D=+K~8s? z1xN!YJoQL;nq7?4KN!5#Nn{VF>OP%Jms#E3?CJnjt#V^`D?eY$Kbrz~39jqqohm5; zzLr(6b{46+SbZmF5S0rHg9T*=FdpM{$<1s*$VpFw>W@DRUFVYkZv^zA=AKmu;O#9`KGzPk7j*tYy}B>r?tp8N24=L%oC2CDm_}&Dz#?=(d)=yE(+d zcnu4f<)kqInN{ji7}ewCl^r&At(NpdM3J&CK78{xZjqe?UW zQ27nLA1zo(0-;Zrcl4e}-yh}s``u@P~MotpQSDQ1FXq+DwQPfi8s>*E8dQDs~mx)4BO%8k2By7t3(!}OPdnr zvFaJr(aFr1R$ zdoJYBz(<>EE7+NYp}y!I;0XB+-R zN1lO^-EH_XtUd;K_$nlub~WrI*%ZK$8xAbp43;K?#DxHS6ZUHfHUXvxlZtdi8!vx9h!StZG7^{QOF$1$XPYuxImLQW@XI1>vH_Cb5) z!Y#$pSWGC{5bO{y3egJp)%8E$zP!*H9Dw6jodkcrh;-%W%}DFzbKZ%=!Fq)b+*>ct z6>(tLc&|Ac48Y+tqkk=$3lk%nR--8y?*Oogx*h6WDwf}*0sUpcW}4ZV;lMj|SPW&1 z7E5nnqtaWK7cvf13e!ryU;_lCwQ{8VW|syGyjM?doZZk8WK-jypYyTt3*p1rfE?3h z)=flGo$z{vyV$XQLPPo0sf5!XsrKKB0FGIAfx7zrnAh%;Fo-3{}*<5&R zm0rG-o>RHw>X;RztdfJ}%YfG)@-e+2=AEVt%_d_dFIJvUSc&xrchD6|WAt1gLewP_ zo4G@VL)GbI1IasGyS2I5n>$6@CPt8L3}1T$DV+9;6= z!$H@?a55=n)M(D)PJqs9OrP8D>`MNJ!H~5;4eS4X=-4Ly~{>It~ z$zw0^^``iWMjgK)zP`xUH^x^|W5#dtSFN>f^Ju4prm%q- zYn!ed?|n0zL=z`>Aa2ZM3`p*djO@)oW($W~#T96j$cn|cp3m}T3o+KF5aY!n$#!bb zeoY^byI!IM-Y5z|f+DXikrr+0t(O;yHJ^R;`C^TewoSS>>XS!qN{_rDJ+kBt%YKCN z+Uq5ccw-Da&UQaP;%ctE#pjzLcbCJ|vgl5|NEG`l2t*EdxFqqpkkCcczdgltL6nxf zHA$)sa-Qc;rwuxtZ_zW0W)blz5D@wTJR$sIOR7`=QdJ78V_n9c8EnEZ5wS4YBqM_} zk;|ci8QU-jsFL`*L<0GXIcp)t9}n35=vsRuZb~D+bI}Kxy-6Lmh74%7ZYXLNKr293bK&%^Wbr<6Q~9Q5-Tqvs zbPoQuD=>6LYIikeE^d~N!#YZ5z_;zqyKOU9)^v7Qt6qIFb6u|e!;4meB`|pEH<GXgKLbi5Mnk?m2V|ZZiwMg-*H}IBNw)tOJt=-MMZ3~xD zF}84J>5i5rC}tbKZ7X+NPe}Jd0f1>7lVZ0qR&M<)7uNEw6D^gobRV&$>$mV^RO)D| zXwVdOG~__wcodDn#%|*TiT8z9-55$6fZxuVwXwvdidx1lOLd>5$O;Z#(AqovaE~Tq z_hb~lCk@<7`wK0NmLr>y?WTHLB=k1 z?dOFIS-r5l{X?aS{bsyZ&)aew)|MlpO-!si9*?gIh(j5**PCg0WfBG`bC)*x*Y4(; zSI~{Yev|c!1O!=F_Q|JyFSy_3tL&Ev@3X+#hZ!|qZmir;p7agAI`->Hm)_B4$;%WY z0J=Q;qoFh@YoDI8*Z-LYc4uqYQScqtjb{l$a5M@>nq8h+)}aa9f_wtE&t3o~a-Qmm z-!w30Yx``wCvYAoG`|g4#&a3RyS-^ek~Z0bdRIp1?$5*v_{$cPQEhpiL}J_WgcF#K zeHl=ZIRVaGFHJ(S4So8A4_}Cp{)}hXlqzY>P=m7988@UYYZ|tDvAtlIdGWmWL02Dh z58qoH#j~U0au`vxBujFGugQ{>b$D%78!TD(0;0y?NYzRdv=!embe$O%q9%{sjEzV5t$;_-E zcO^6eLRp+oi-s{1v8-&G3U$bcjNHv&9-ZX0ji_nx+$I%LJF!2#=Q#D2nPKM)TO-~-N zHOnKmW_iTcEaczR?`cb-(wZ}2t*$c$iDaX(x27XH(R8(YyeT#2NG%0xvV(gVG2aDr zVul<2eDWi#AtuAomjVfgdT66k?^Um#!aoaCL_x#RN!{5VOMz*ilij;_=t)yqj2Aqm zdjP#`z_kP<*I2P=>$b9DnAW5*#!-whkBxCM8lRt)Bq((e>hcX)eisZbzc{Ta9+ilm z`wlspq|%6EX-pQVAx{R}$Se#$smTDqX!I!oV7uvg#hu?$PmhUoo@~IPkbX0)`T^X) zO{+t5L=~6-@dS3q-T#5<5jV7as3!@^BgTlrrIx8mF=UCix0<^@jGYf)fULO=L@{1_ zVyzEyM&Ttn1B$0qU{+<61{%+_qkSsM1Ea#;;ffP^VD1C~3H1(5hg8>;8ousIenz)! zD~m4+rXyd!R-@lct2E{nW$a=?0mEeD*$Xi>@IcR(Gjsrc1w#jL8Z`ji<7J^o?)4@k z_j;3&%fY5qTIN<6w=Rj(sRf0HUiP?gp-5&fjnIv}T&9GD*Lg%r>UADZ&xssX_}?2H zy^>oT-&k9XTo}dK&)18}uODO9racQlajdraF{X8DV|)u*ZlP@W<6m!VmWGECH^T{pMvlMkixT{gRO~C} zd#*_Ef_;5^rYaJA(XGput4QFEhCL)+QB8G}$`N!sA`8={4Isgq zwMPbLBqk{g-}l{q!to*UGH!8Ymy|H(gLhrgR_PA(>jruylH&x3oc`9AFEtH8Z;Yia zZ&mPXw{t0HSR-47_st(M2|XrDgzalFmrk}==MYCth8IUfh@`@|XdkC?Q#e3S`8NY~ zphPiJ{H;&)$EQ;&4wr1!{h)N z1nCUOo#0fNHmxvx9DLO*V`XLy$w(k(s?8{ev@|C{KoLe&`+zr$3Gdjkv!zbYpiZbJ zW%4(O12yA}nttpJ#vvs<2*xIho2jko2LVhPfu^cgs<NBG`cROcn zL!zWaj}*wV3E|}D93L<tzjS_mm5IP4$#4=x$H1 zfmD9cQ+YL{a;K-Dj>|~p*K0wq|5q|vMh{jh%Y6S-d{W!UirPw5@OGLRGh2w=GBaAH zBnIs;V`B~`woJ^}S!Mi6(UV-u{}6)z)6tcsUVl&y;=e*hT=meVgjKR0TxO!hyDErM zJ?uMDaXPH-5Gj1fknkOU<|EaX@?ufvYVzEspGzEoWJM%4Qb9@V-U-UMp7f1_j=c2s z_5$kR*FF1VNexxg&-`DTO+Rt|bAN<>NG1Kg>mflqL26f{jOB9@0MlJ10nqL0H4p%g zcrLGo0O<4tU5Msm!O*4vD5YLPzg`8vhd5mD9srL5H9PKU=L)Tp-PVRQ`8gTMi&*9bJQH}QcXdVm`U zGLPBcOse-}mY;SMjAtrWcbRM=d01qdlOF;^+}4iUu-9`PY%bZT$zvgCq34p>(cxd)|3)AQw>YeyOZc-uukgLIF4lsBCq(*ABhhCO#*c^B6~Nvil2KU{@Nt5RQ*BXIO-jZh$>juPHZ ze4`A9I*}77|6u<ukT6>p%w1v~bxB`AS2;Kst-lE~L125L@G~BEPJPCCJ z#mYU3$j9YzRVRz4y2n^524&?3HLSzoClG}&&pw79Q$5s6h>1uE}77Vx<;qBQh2Mk z>?3>zI@^E=3!7uX1%?(BD|U0HX2WLU4Kf*HEtpSyFex17E{vMV@@*7^(jX8EhAFI& zHrQbDr;|*PBitv5+wyO51cM|Y$$uIMu_mu>YLl=vyNFWdQmfv2?~m*`>ZxHw!@=Gk zs6oUWw0^Mn+f4(Pe?9+_>*~m(Vx)d}vP6^WS$(^#UoSqYkuFIDtH>2HNjC zkfSO!?^n=Y(wXU}rX@EmswpHQxI=iGEt20Den=>T4HC+LMuW1HHM$MTkiHUP4vZHq zyb-V$-crRJi=kXShXV0PerD>!H$1~Rs7D%xzKGe@2or$Zp|v zb^@%;t9x-=7z*CKVVzbeqbte3T6Hf-;|q_(-SaA1Q$Q$-*}h;~XfD}8GqN<^rR+p` zdefYAt4OUkS%R*^m{=bDtTo8Y!Tv_UsV*{ z=yuGsld|*$1WR0?Nb_9#0&*rUjE+tg+7}QzaY1$E@&%%qU|5xaX2UF+lOaUO!(=4Y z_7HH9J+vX((li-m1BW1=Rj2?HgQ{VwpI1Z=1!a9*P5_XjwJh!m*#zG3Zp~uY2)`Q4 zT~c9%Vi0>0J_?x~0B#glZq+p44m6|CqnqzcO;{MYN!r%8p=@)T6tmmV%ehU7lx|zk z=;u%u+dJwQSJd$$X7T{H3Dbr7o>t*k8+3wj=o{8s-6?cz$!r5A;oP=8BN8o;DDl9wB^ia> zp}#b9g;BEfNF)@Np~HW11&Rsc3R7~gi7PePo}TQpEHO*kR%HK@4aL1-3POYC8%GoO zMH_}9wLvw@B&EXQVXy;9X#TVYNnB=kEAhugsBi9xUBXIyEH8PomH4Tq0W0wn`Pb#G zM5U5b|I~lT+{$pnUJIZY0_3B`F9VNsM+p765&;c{7W87u0K`x-POZ!i2aJcAaDrI%I-i*M9IcF-Rb+^VkF^&S!wQ$Z@)dT6~SOe_8 z4bAO2C4_n=W_qZkjas(}wammj{;3a_foCHFZRSb75_b24VI)8>z-%Xm7xK1+PuqGO z4`F4qHDBhsl4tgEl1I~PuK_zlX)`WnO=~S_Q)df0>Fn>a80xjf5WL!OxajqCZAJf| z`v;3#t>|IfiYC-8gJ>4uZ?U4Wl7v!O(L+=v$Q{qNtY{a_BP%>x(ZYTheta8T-l?X( zZAH7IWJRk!hb$5kB{ntpU`5ZFI%+H0x+fvMmL$sN@l)gZ+KR@fmps;*!nRiQQ0DWy z&~B{p?unPjtziafH5m-Dl&om#940Gzn62n#4bxUMpUV36aFZ1sRmE&Yhe3_m+ftV? z4O!7M086x}Bly8j%>v z(QV66_65wNxPYPTt+dc&sw$Z-U??vqGszc_#qk6KLYdge)QGx<@_ZP|%SXbBYZ=PJ zWGF``*-$ndv}Wo}b~cogQH*GJ%+`jo>p@K!%27E}I(OPo25^m`?CEq3Wj9S3%5Ix7 zl-)LED7$Sv8_F{~8Op&nEkijP7->MHWhloLrW>1_g&DCN3e6a?p==cJEu#QK+5Mz@ ze_r-Pb>o#8%9#M{mCQ)Dp_~!Td$t(LpiYJ|A7m?!7?NWI4HI!}RDZeM%46~C#=0?ZwX)XC$7|KBxSgt`rEkn7cn7Gn1lvS-(iXod+ znQ%Y@Tz&P1@-UrH^Exz?p%_j9@SnyBCC6q90vO6I;9)33=#8P=g5Fga%C&YdO~WAf zZgnSeN&|)_t2dBgh7>d~UO7NX0H*coa3E*u^X|O%0!K8Wiq0 z*n7Tdh=uI4O@l&v2Yb&n4g7jK|MEiiG~Td{nP43Z2qlY4sHboTDU9+_Fr~GHnCMt} zzjETN=~76fCB9h=Q)^Ra`^ncDVX`fLT*|{7=HdmfC=ZAKHrt(z@Af`ix5;6rSL?*? zi&09`-doIM7SB38WmOI~j!i+n&)`lI=(8*L_Q_t^dwUsM%^lc+@(3f2x3kAQETBBu zn`|RTvM|5)g~=4xvAXuRuVZY@wTvix8}ExLww;al$t~ZTTob;=+3+C!aEKC*l;2Wlm&DL2N zEAltYMLUsELnY7|ZGj=^z*;EUw9{MA6SBj+oE2W8%?eES&1q*FfmgjT9Fd-;9Fd3Z zhuo`&F^v2h>nh-ib=5d1xe?=PU;9REtNrcYAhGsRYA*M6DXaP`+gGb?`>OFh0uzsd zLD~`NH~9y!_G|nDhR8l@hU);dOrGS29ErY0TF=a4Qg#Egwt}*O66Fiq$q&gu=|ly* z1#pknGgeBgUE6A_%r>FRU69G!Mo!CNV2|XMyTT(m^v%-&X045PnMd+SwxS!`&7%*= zh}6SetmiZA&SzVX-2yMiR#mNt8X0FYjleQG?>snBtgyz@vE{Pbv!BRAY z=EdyI3qCv8d$DNI$U5eK%^D%=n4f4G0$e}RG=z@%!KNX=^?gkP;QCnpWpHUhePSmalcoec?#54E z#b-rxmbI@CdgAC%T?Exw2AQSzsS>d50O5yuX_3=l_@NmytsDPHcp~} zbX;hB=eDG;vI&%ICHv_tBfB>eukL}K2g3C;_IEtAYs-;EGfgFbKZoqlEi8cLtNz>T`!lfWVqOBB?$_IJM_+WnzhB8%?2SJ9k&TTWOe>SHsDH_) zTGqc_&$eP3nD<1x@OK(G!}KzP>02vb)qPUXDZ*lJL|W2R~LXMT-xAyjb9|;+Zd~5F`5{ zDPzg6je;Z$K93ipM-zC*5{z6<+pY)Nk$tE)_D=Lg3KaS0nya0uX0(C@x;tvkdkcIt z#3?X5dK0UuKJe3f4op^4zh!h3JKPtrb18Yxee8Fh>{aIzOf$An!|^({Wu8*a<#p_U0988`y>R@e z=w-4`KLmn{{MfG_V8vwPb3!3G+4ieu5Ou^U7}a^F!1qQMMVQ(e88ka$#GOkzE^yXQ zB=wK71Ldr^>+(1pIQkoBlC}PF=TppK^BB*0dexKseCeV3CkIVb=bN7rBKTwkz0eO? zo>=VcKRUr@6#eKTrk3P-UG+3RgVZ$Z*z6Fm$+;f@>rlR)V$U}4z-^KO)>I^dfyRDzob<7=`(0Q5`#iAUWU7Eg>of>Y+Hwp}DxH&h(B-Yix z+Ha}b8F2ZO2P{=CGC!@XQIjZhj@t(xfb!Smuo+Gp~)^SGKcknXhxf{SYINL>;k`nYt6O%!_n?U3-*>Hg8Qx-Z!y8SgMzVux>~Np;?`5bFV{ zy`j~3UnbJiMfIEyu>9K8{mcIK%s)X>n_#nqY3TS3*7jWe@3re)|EM%u%iTfhDqM%>DQTfi#%$v`+{!Sf=NTj0 zW}0&`&BGGGhcos(^K~_?cbXWw_$}escY$|H_*kuFkXgdFnt+NWd}>k|`2@0rln#v5 zwmp!A6qckrK>2-KWr-SB4`c}~|5C#EMqxbAcS3`rCGIhv932x*WIP&|e}{osgUNoA zHmU9aBOVz26GI1U_3t`#zLF&NT>_#&c%pX8eCEF!$}O|X|AXwBxj5YFnvqG^xMoiC zt8vZ9Vr^VAo475}0h?v`W=@r_#5uD$$j+Gy*`}gjc&X)_k)2>xJvYc=!Rv%m2)zrK zO9;=igY2BK?WHc-&Y7p}g(r;=b1S~eIrDscWw~9QchA)FXAuz7I$cf{G`%xrBKoMFBfwG7gCcBKe)(TLK)*dnAPP;*-_O=4#Oc|hdP97@^)YE**Ks}}3Cv2de zqQ|aL#yjF_%P2$9)24g7%g9ssRK0X#O z1Q3@t9{o*N1nfBOFSGQHqP)OE{+C#NrlHr5;FI!0Nk#Kg9yL@y(YIejuUO4B?S+>U zeFo$MN^#%y1z*tunW_D?1rjqXuJ>{hFDGSb39Ab{K%HcnKacVNZWR#^9S1~o9NoN& z3GW@xKf$pxHe%3#$te`DAgrVVCxl~{lxL)0pB!=W2x+dA$!#1x>w3QS!`(vie_yJe z@vKiqK|j&)*d22fbL$b8fT!y<=FSmT?;Dc?p~AfNXxB`=WQ$>jB1i3981RV0awlzypEXdWf6J zq!w|q436uuYSkKAcKXAE+e9Z|3<1b2T$JCGjcdclKE&{k{h1le#VCcuCX$vq@B0WFhKm{?Q9^K~-jfpV^!vV&RmX zM0YnP7Q7J_gsfGTdcRo8;xyhX_BIDnroYv!6JYv+!?6LMoL8`+PmViy8Gy;_CzR}! z%m}}n8Gn3TTOM9#oBhQ;HL!&mp)VxF-~%;o9y4w@O=v|mzRiPB=Vv6>64e;LxX>+~ zt{uBm&~~l(pz}J$^swrt(o3T8z`JNTwiHWJk!%yo3ZwoS4N;gEOw0sk2AJT6!~}?# z%x(gn0Iic*_<+JyO_cK7dvW5omb8*1+xtz?2J$U5ZeTUY0-jb}9XIgRX)Mu&$S7c) zbe13=I_vZ>+w5UO?5wc%T+y7quJ`?Pbg1`9Ru@#E*NZ|QOtSd5Mq%-_wxIjaD5KB_ zA}}2!Hcis!t@(o{B|G%gZ$`OCpH^VC0Gcz6W7D{kS}$<^mlVS}>1Z7sHrd-&4d+t# zCCWv_a;W#q1w*P8!*j!<93Pg2$l4pg`ab@@UgS8f6@o;&e~J7k+Owmk7;VuMY8mgX zHN{!R-5K%O7C&AV#Zk*#{A<2ob?5|$(<+6^+xYrv}ujE}$^@?xLdav6p29%E5 z;O`y1kLoA~zCMCN^f4~B1ma{8OT34Xc-2Xa1CHW(gS7w;__dN{%;|bdH1RMJEf0S) zq)v6-jAnD|`S?n_se-x^D{z#ZpvDn`ak4>FufD9F7Q^kRKAF>Vf(sHKeCP`hb}x}!5hD^P}L1*%X`(r}{lGon*ucTnih z28Bw)^;+D2K2#6pX#Gwr>D&6}E#fW~lPNX0zd{Ht9T1=yPMXrS`k8Q<>GSGvsk0th zJt8zhh;jC67AH{h4P8p+t^=X8NHO~;PNua3Vo2LLDQ~MjTh%rYUc*D&sDr#ALoMkv z=se=kr>yN7>PsZIDwm7tSp=x)D1@)CB1=r*nk=#WMkutJzNJj}ro&U9h2w)DnsR*8 z_zhN{z41*#=^JVUXhT8_D>KC|!{XLVU=ka=+woQ=C5e+&_&IVynRzgcdT-c^(;J6D zrih^h$6MWmNssg&u3eWNyFP~1nvQw7H6pikJrjfDu z@UxtI#A31$)7))Ctsz`j{#KM!M3k_B4SILNGxiV7FhI`%J!r?sg*5z8l`M;v}iJ%tW&Q|qO%k60&a<=Sg71j$cCy_ zZbf>6u#39%sn)UYF%R|hvHEFP2R%OD)D_NC6a9{qa%w~urED~;N zRYw0_mEpE+E3FNYQLVH-yq(h8qK{;Zdi}$jl0Lfp`YY5%{Y0&A@Dg0%!YtOz5+z|f zV8&$h)C;pgh)q$#Yq2oHcY$2NJF(5e%$akE>$1#zzf{|y-uujcUYv<~V(qP%?29f{ z7W9O&w(WrGb5enpwOC9@QXg;&2kb*#*Ah0bZ0zYe*>5za)-+ktcD-IEU2OxYm+czd zd$Md8)gGH~vutSAH%z-(-&}A9N#v3Ys41$Schk>g{~f(%NzPOiZs{x^?v1yJ#01Pk zy>F3LktNF6blEUr$+Lg$06^4Q=Z5X%t)y`KADTt$oa@6QcD+4fI0)2ej~JE?rmdDB z2i(TiqFVHl>)RdUJvBt?rx@rv8L|&$mBSA6=w(ZjyuL~vGA(-Kk3#@@(W4IbhP&}> z`!(D~mv`kCU018S%AikTS@?qOvRuwrNr z9$lF&O8wXK;wN+1L&xZKx$xp=9dE)P|KSh);4J5GieBq=&w=WgooQ3+p6jAlib4-5 z4K3R1^qLnxb+;7H#Il5irWZawh|>07UijehsTV$2t~Yt*F}3iy!4gAK5sC3TuKzno zr>?dwvuuTKyYS&KEiHWBnE7j`g-Zz)C(V+@UMe~Pa0xc z_%uW8#tF>gj|ZV0>fH^Q)+*#3CeT-7*@Hb9KF(&@Q^!_XvOlZl#>USjdZxY}(%-Gtc~tRH@yX8dF|J^~P@+ z-;~x-Z<3Xv#Z+jd08o-a&C9fNDJEs)HCUQj33%{65G=x+^ zzZ}F{5Xo(7!-s(&>lg>V7xe7??2++zjaNT=tQ7=!5+}XnXDg1VV4RafLoX0u0q@=agLa4Ciru z65V*5kmtp6+f>mn5C&_dioU?lR;uXd`PoVpRWOxQQCSZWt*+hHxYKF5 zlq&in7tEq@--XUkq51+t+7xg|6+Nv_QbjN7lT^`j2AYC_q|o!d+LR|En~2p(ey!Fc zKf$lso3Eb9-R&P&$Oa_ym$^uw|z1jf)}HAXcJhqKk*Ni$VLossDU zHw~>cQ$4w^cj?A%n&~6Z_2xk4i1_kEKg|8JjNBt@x+Mpe#)iJc2oQYS)y?u0MVZ(! zoKFBG1<{WSSm)fWq<$-it~ZN);`)}5gzjz;Fi<>BIIg1}c{qj9JL!cWX@^LQv@HY? z@R-h{)y12YE!9e-RoiqXt=gtjY1M`|b2^t+3(b^F`-SkMte4M}k$Ji`CH1LvWr2R0 zszzyB;gi?zU2&TzMOw-i46)lBy=r3MW%_MlWbkD6@^JCoei z=Y;S!=Pajm-G&yp@M@>)_NZML>AJmkx~`0_SCD9%NgIJeO3x07wwcPgiEN@RH%S@= z!Eed6g)$%qSgoCGOZHKtJ-Hm&My+Jq$EhsG?leeD5?6#5ibC`!X|L8%lWeQ*bGGfp z;n7aEtq6Au^{LU)S-rQiZ4;HpTieM-X&BZPC(u`QwymCsY}=>W*|wiL+%MbJQ=Tj9 zJ-+Rg_mzAXaC<9#4tpaH&O7S*`cQpi*P@@=2CS_ga3-5K4^LF}{B~KODumTKEn|c1 zw}Eb~%ldKqW-+ls;p^iZoo?Mi-dz@IP#0G=N-#I52<`|eY?j1uiM^ygQqDEikChX4 zyr0p_c?I`zgh9GW`=&xbrXZc3HU$y1YfsdlGmu=N1@4`_V%&?6sbQ*Wbx<^`MkOr1RA<@z#XIvv+MeeM?^jzN%{ zOp$v@<37}5?en;1T!S{}MbO3oM*q|%uOaBY3I-wCrv<`1OZvX8d|JECxGG4a%;GlZ z5;J&#!&gvgam6$|nQgArU7Lz0E_Y(EN#(VE(L;I)km^m*d+L__3XVgd>1j=s&j-1n z8%eI}Z-YlujjAwas^NA#M0%&Pov@Db=+(-*`>>%}(-_ps7_?PWtuap7y;N?mi>bP` zC#LpO!~@c(RlElY0d#t<6`?3zn_(J?oGQ*Ukj*OeiAao9SWH+xRZJF`0&#cfsS?!n ze=#~`vyU4FYi70H8oA=tAQdx;Efrx0vt-oyw1Wzx*DSH|Fgo(hbjxS2;LK%N5 zSgC6^HA8;X@jW_$L^7PTE37V**cW&*RJ=Vo14C><DpE?UEJs?lXpn3#wB037^2V2}d?3Qz_mSb)?+q4MGXQ+%XAtjmn2f~HP zyL!?b91O7_kYrW}xSC8gG8e%0fF#L-P}N@B2ywqjRqeHnknvN`u&yi*dmrpSKpp-P zU;qYr4yNR~mxEabO5)dYJ?cUvd95q8T=y!jEls(SGy`h&CQ)4ys{CX@Uu3CorHe|= zf}XOiQrMKowS>PV2~R$NiZ|<6pu)4NKN8ZF`RB4+7P@TPxrHkdxYp_*Sb{fe;3#M@ zrGVG{KA)q6nJ}e)X{mnI`d29v*1thYVSq^gS^;J4Yik7w$I%;h+bs<%cO3Mll@y&A_-T^874$wKWt3*XRa z%VK#ou#-a8V_?5%V;{I0<3MGia!{!IObR@!hsMRXSF``nbR(_ziH35TXOH~eFMa&4 zf8*c%;J^H$%M_{;5G8t|lSF#zr^x-3+xJs_<|S9?QU@jaiZj+IMH{TZ~v8q`6^|HeLzW~n+X2keUC4{xOaM_>voZbj)BI;BRL z6*2d@iK@@rp)Sx3$4d!xz-3NKjTV==V>6r}#Tn*e8!?TBJFNb1Gwvc}zQu4RHG?B1 zt)xBDP}F|T$~lJt49d3A%yyON-nWg5(a#wp0R&l4dUd*nxHATkf_#piZr!OhQ~S>G z(b3QAa)zhmNC@Yaprw<{GyvDOxkUtAB6!QxIK-UVtgCY)q<$eQpuJq(6Ao@Dne^mX zz6=8!RqySiAIm)d09jzRm_d54>F*x8^SFa?PE9k;W+4H-1LrhyY6U8(=dxm9j(8%H zd?ho61Fz&ZA{AG1n+01aa8d8}BKE-$7}B%GM(DqK1}GgQVELflm=+m%h10(0K~$S= zIh({BU*o8V8mI4)u@V%($~V@gUJs}0g&lKYJ4q_Tr7KGR{U;)4=Pn)t)iTNZ^%h8Ggt7M~PO+guW)U9a`5wJY^ zQLP^&W_02`1Um7!t^#F??h7EFD>8m??1jf+;U*c2O7)h71lgwU8g!*@FCx6CvL?8SIGs zT@lt=nPp2n@J2B|(}fUv8ARFEGhS`sfwdm?89tiig(3Lj9&GD@OI=liY_Pml-)_Yc zPWStyVq4~#4(7ZiQ}#SR*7I%i?b{UQ54{PlHo;ZbSbhL;LwvrH0BUUO%PSabwOYYQ z6i9SQfb3X{V6t z4TTiy$*r7LFWZS+(mGfk=>7`X(NIa0IO${0 zt@UlE%4kon>2&O1l-kuwE{iKE9lUaNi4zS%-3x~}6zbkhm7IK+jv~|(*+KS-Xt&p< z-6<01&E?UXQ9Jk}{_vK;&{YMCTmbYUbp^|~n(7Lcl2`TS_0qyMZ(c7Y$yMy-Oflh| zg7DRDSC`W6{!@vG(@9H}3fD-ym$I4CnvY6qxseJsxlxauL30o@ExDaZ`pS8Js#FxP z1`}mP0V#bQ@byA`9rE>s_&USa7yTf026+w9b|!VMKxy&$T(16CR+7KIUT-g_E^^9y zf9vvfLfWC;V@}eY%-4Ie=VSBi!rJ`O4U#o@>r*eWCws%LT%N?kTCyQ+e(8GM#xPQj z)A+2<+)ota9lsUeVrwz6WOAdvGaRymAV6Rao)d%n2&2~lVz1PwWk>Xn(QZNe}FCiWES?(?LS4a>Ctky8e9 zI`O=c{u72a z#w-Ht>~5J)IE@)8K&SGTP&ON?P$z_`Y1%6XM1M;5Ge%b#m@EbFE}7+sE{XCI|L)OD z+<^JU2Ap}NWzW^zyun~Q!`x^=fjb%EhZ&+eiC0mzKB^*U*vf}pF>@Fp7om|(XYXqu zs$HAv?fvG8l<7UM%*hPVcA<8pe3055%2M zxss(3=&XmhDZ@h82Fol%LO;}H5zx$(MZj+bxd<0lfeZESQG=k-N@$rR2}L~mYGEh^ zrONUn&cWT2$EI>FrDO3m3j}%|FkdsIyj4mlE^3-zcH-rp&mLos0s;x5TttmY{}GFu z*K5koYrZC~EylH?b8W&9lu`JMDti$OJgZLvfKTg_b3o3>?Yv}GjtU2*_UFmGX>DyS z)5h0R1uHeC;543qXA8`a8O)4s!E7g{g3#(zU`<`9%CKCGPVtbgZh0L8d)WSozy{YUMUad^nIZfc@?i|ci2Vp%;UNoomblSz|~?)$fu zPZnHay?RQYuur5W3Y_N(Vo5hNg%f}*+_haXi1O=tAE(1Zz3;_3p>V>Kt(LfGL3hAK z^I-nIJl3 zhS-Q)G~+G7c(bwsxZE~Kw_$yGU^@b%{fuC?%`@&-@(m@bVj<{kseEs{D z;gSrqSu)@)$1(v%^D0C=&)c^hx-{=sc<3;Q5<}ZVS9Kn3(`M*aVpfxEYC9G0MY#aogYAKQP$79%YJ1qgQvu4Kop3t$X92Dw5pe|dG9@8ZYugM(e2a9Y{X*rYe$?Yd%|2$t^ix~A`W`?<h?vtCC0)=5yXH#N%f{8 zI{(Cyq|NBtamnKRCOvhDr#2d4@uItBWZb&}LOvGDzMO4q8b^0Z#Cm|@Pm3#Xi2tF} zZrP^xI*mKTnCJYYm1Y()(!1m_ma+~4_o;5B3^Mnl7q$9PyWgw!)_c`%T&TSnr_ime zaEnD`#)Tv%sh5!a1Qp~rmBAf$jIVDIlNT&H^6<5jqAMdA$JX@iU1Xz`ZEcef=SgSJ z2eKKlB(DwzBD3I0=OO{7XNhNpo3N=C8vuM7w}7tn@YXa2QUy~ar*TM7OkG@r%d_#& zMj4KhmkY%+p*R#mFU2%@+eW$8vp^x623PZ6lgcN?>N&=_Vd65`i1U8VJFm;plM#pw zoZ4=5M_2QnJGQ(A*p7?QA0^5R;i0k8HC6>%1@=8Rvh((#IWAPfqAF@Nq=QdQ>B0{Vui>d0F ze=4`;o8tDAd>&&mpFP)jtvt}Lx-FuGQ%*kLjbX0dTmjLRD)wk9)Rk#rhkWoL44BMM znV%H=$WO)PtKhVRdmt}rEk-|?ZCPp++I~162Dh(+Na$yh>>CSe#fR)Nl;Qx-=^CvP z`%*9|*V`nW%y)GXli<0Fb=~Ejmp!4y`QU+g%x zwL+rR*GA_#1^v5d%LShwn<>g%9`$T*+w}8sfApu4Hj|yr@X4}L)d{mCBPEz1!QXq`;x!^dm9D$mZ=Q5Ho$ z#B>3nEN51zo39eYi_6HBbAIy_yDT}vnJTfTu_YKkj?Dl`dFe6~V5m?&0trMTvqMUri zjJulWW&5cYa!mpcx9zD>sfa}yXH4=??_RH~_iCKq;x#`wk?&etYV7arxQz7%Tm#@e z9LFjZg3Y*}N+FJ?C^j+mf{0I~c*;9Ep5y#nGr%)!SliQhkIxOl|M|=yylrO(qOkSy zX@}V`%w1GhzGGnVokv$zsFB+IH(av2EfMOHZ|J#zNcuw&#p;7>Dp{-^)xMBwHq`8m z0f!G(1y_E=SN7LeL`%z3xXD$l9ZJr8m9OND_g8QH$5roc9C7ni|NSdve<&{umB(hQ z@@V!M9LxEYo57paxhSuIC%AehzT&|V<(MrR zc&O*l>)?>eg8P^E$VWUiyJZ>mF`~DlaQ#;PvO9b9=kY?rRZCdLh@Z9|rF@Z709iI~ zxfVbSKac&fH1;%LjXe#Ru^WL#uK8KxR+l($$TphuNXKFV4-ujM*n~EUzx} z$E*o2S)!a~2DUYVRMd9^L{gYr*a-+V6Ycvg5h4A5d&7o0l4eO@LImQoF*EHuP*o*Q^E9cnSuDlHQSt}jIGm9x55HX zB`QbK=Hkxa_ze3^vrkS)h}=oNSHD8~x2VQ&8+;%reN2f9D4ik~i46l48*mr4+Mb$t zCCV$cHlx(9dXyU7F)0#8yP;3Tacj@1pG0^g_(J6=o+}{$BfYbBq!v7olqUIyGn6>O zsfSi?MsdUVx}?IcLxsVm3y`0qdGobFURKY~h_WX>pof9PFPxIS@qFu~9_dc4*j4W* zJxyl|a)|QY)CZDEa7=v=;v%xOw!p@yT5JX93D8KMO#YjRdmE;?3`NgMHh@Yv>l%F` zsIN_YzQ4_%b+|?s8@%rrtchnOG53sqH1l?r30~bk9R)f~E%DW)^3)JQ-cRjXyKON# z+iD5WG1^1DN}$TMtgI_|q_3Rppp{rC!XL5eD;i^=2$tIe@{VXd);l3L+?@b_7Mf%N-&p zKMh|V>irC7lBWntSYVTEaKVXTvl?tzZu4P-pt;2`9zzSvd=}n$)dyGg-N#_o!?) z0y-yUy9vSBc3WrHYLg4IZpKFW9qJwQZ2~-;zh4-Muh))O)|R(3)liN~!s!I^2_LD^ zf&4|4CUjzrSUHOdmXqxPj6DFud5yp`i~DP@m6YI`hRk`BATaK!pk6lV!bY%zo% z6xy26$Q{aLV@|6^M2g(|_GTR7viZjLIy;QW=F`Ja1!sm~ii*Ph05zb~kzdH6#n4;VMzt4g6PMF( z)e*AV+Z=`*gMff=Eyq|!5EQqxf!~-F)mbDu=mydy{XAY@+X^iKZTlp`#ClXOv=d)X zy6}v~ZSSq7XTbs6)xe45D{(c3*p@rKsJd%w*tAAagkLzq~)S423X2HfAy81k? z_#g|W6Df9D?eRMGlvQ^M<0Alh>r(fPA>~?cd|D!tH=fZaayhAHi=VI)VAACv@&l&$ zUi`S;6fX|xwS-L{`cBl_JdypqcRk&63XawB#7^GF7n}XcL3B=yEh(&<2kEPE-?!*HO(t_%z_v zeFnU;<79}vU_Y$Fo%(ele!+*cWE?bcPlT+M6@I_*LNjKqWKdyn%w!oniDvzqIbceO z4iUDGYkhH6K@?wufIpv?Jlh6HHTGwT0=0vrG_`}I{A>qF`N36kQG zF+ZgU>2n5QxOM6$WI{)Xqxw8wb9mIZ0z6Nty4d-tK6T!$ty_gh0i(mC`ZPufj|#L< zy<3=`etEz^r3S|6p!w4lA5c~@U=ybc1LCKMQ`QJzcR;jz z|6QPhVDTnHV!#-=w*^|J?U5MVls!UMVW)64StH0}Ei?n{yI3PU7uJZCH>nUg;(-&e zUNSS;V>rCtx;#JbH9b>e06flhyW!E)2ai5B`rr{;gL)TFT@cA z9W$hD-eidg-t41l(l@d(B=6Hyn5<#jHM0xQ5`2Q5;{8CMkeNs&u?ZaehbQE9xLE)N zyg!zVZsF9H=h;@!OpO-K;<@cCPqnuq6%mc!*6`d3(WX+5B#tl_4PObOc`gtQ@xFpc zSWOo)0NRl-As~nYPkTcgNsUCrIrs%dTr9&sdgA!Z1nlzUOz@9p)e1MWEQ@e6pxF{` zKCXpdfJgA|gqzi;e59}BEuCO<_a&pxHnD8Fe?^n%hK-NU*zIU43%dqltoPMe20TS= zg2&595Q1))bizGWRUJOuBwEu~(Z|bjBF~HZc72(!7Q(_Iz^Ocq$H~(;GYHTg1A$&Q zgdEh@sSu!E#$Fm|A{;;#Y&_3KK+~+5j}YKbf1lXvju>7Y0o2o57Itbhdx>*v_L7)T zLyNB>0=UVNx{d(q*(gHwLc0hR&nBH7;@EzSR^$~Sk9^2FUE%_X%o`;&EGBq!EAr|X zD>V4jFa=&aVwBLy(VLMU8?ega_v{^(1XYR;^*=b5V~`g(bas&LNO4EDr4C4bkyQnV zDQZ*hr-5H=5Io{U9F?5lu*29=Oq}ft3ahbC=W(eku#$EUYU$;B2+v^-2rGPxZQz5^ zztpHgw^_dts60FwTD^hryj@ui4{xdB@>%vQ3hlG>Qfms7Mug}#90GdW0XX)2^2-sq z&w27ZeF8{nSD^Mm`Z^0Nw0ths!4AUIY&5eWQnT0gsMKs^tKgAl7#+Cy&1Auan0i{T zp+gn@gN)KfJZLACJ_3*2sH=>ZE-b?!Xe1j1?b2R^c6B-2##$K=Z1n37D;Y_Uh)2EW z##P3m5Q$xcc|<(K?Ov~FQ>O=eu)Nik+X}jGwg%?1QaxF4X}s`iGhQOD&3Lu*#W1a~SVrpL8!9G>ATT}Q_zob*oan3WN%H;AHSHG44fOt&vUMsa~sxh{_6 zC&(K}&D5B3J=ZkU{sxxu`@}*A`zI(Aa4Q~rzkYPY8^`yAh?zYisdYArDj|coH}%Iv z8kQc<3NCvY*n7c$1wbf&5j{91zzidqqu0GplNrKF#iM8Bdzq5FxpZWlKC-*FqgCsUq6eGwf%Hr>H2FdglH3G_77Tkozu!5F$}eA9qFh#gP&qIL!pM ztTQcmF_Wx%U)TG=jk6mrfHG7b#rNr#GA*)TCZj0H+9TgXH|&aza&(~JOab!-O~k3- z!?E^p$?l?t$>`G=eUBF^_yfZ}s<$2hgWx!dMaiy1V#doXW(DCwx;W1_(;$xua*rqB z#+G_-ClxHcB{~yly5G_+Q*zyg+>5sQUCcBHR7QpfRC8KqQv(;)%bV9?j^mC@RPF5d zBEt#^Fs#dNMQu(?rlPill=#}HPYE(jWo_oj>#}f)SN>;VniK?(sTD{|n93RpXl@bC z!1+Qxp_=0sMd>LA<}-(f!?fSGKCb$!oMvJ-!T*m_O#aq#0JqrHq?q`juo~r2)6z(v zuT_ePmhHQxnB)k>bc#tQLeWYw(Q5KNIYi;~5<(O&53&C7nq6vzD9&j~iXo6)i~_=a z_HW`8RBDOrjSDPRaeperNu*C-*(mm^#we6H(uyfW(g?3s(nvQ*@p3Cjv6}Z8atP0K zkV2UvtsWywBt2(bvjuGyF@9}Q+AeLL6o9-qoWkO z(NT(42En#rij+fu@`sK7Kla`~NV4my^L+VUR#jGJ{mAO-R+qZ<<7Lr6X;%dz!Xs;q zhv`>K8*7aN%+4R4h=~m*Vt;ts#0FAm4b0A(vfYSgtif&E9%K+hS#G1Yk%l(NGwnso zltDlnBN)4_%FO%T{dMlS=l4Cg zi6Xd^n_@Xc4=ktA19B>kxhar5Vv*bw7Wuc`Y`EyBsN7F+xaFq+Rx;G=Fp;PbvCJ(Z zwTUEJbwYV!DG3ph1`6b=dqHmbzRlo)$%G0rkBs}i>4hgePki5}%;o3Clpr0;j73wg zZm%(wFXaFiZhbi%;EfrYd(R}LT;2?={qEjy1{J;GS8s;aC7tORKgXrSa~?w<$35q* z(8pV}Gt6^dg~-QSL{x>A<~?6}P4)zANVmE{4C=^7V@;@1%_V76kpFx>3smhUak$8x z!JP;ZvB1Y`$|VbYTr3VdtKa?afV-`|frRVUI1hJ4dX&S~EOheY_SLrgiRbOW32K zc?f$HYclp%)As`aLV}fJ#fuMnq~$>WvJp|ii!+ z9yt@N-LBz(C`5^V&}H2iEv2ZW%ZEJ*GU=sOCbqKA7@Dw(R@CDbx0KO} z!Yi6V94N=+77wo=JSB~Ke8!^pV$|bB|FwJ6BLTxZqaH&W#4uj zEs@aeX-7q9RD$5bB+Ps-rOQsoUn*1u-sM!v>0bP4HmKc0RqVBkAvS>yos7~y-$m}= zVhkaIW%wTRF!=uA>720GMkZDW>ddzaOp_4Y(}VWB=u@NoP_&Mlb2|EhB@1dZZRzd} zCt~=tdQ^)#fDtyV{5{|nHj=*w8uS=Ps|*6j$>ydk5IoWrNF}~6MCb|kZM>REGTtp6 z&N6zDWCd`IB$T(a0z86`BPLI|2% z<8JA;RKAK(n_ihU(G*ay#K8|9Owy1{ef10|cBg2Y|xHW*R?nGKJ)d>y00%k zTs7W4Kb_CYwY+_uF>jxZ29fHN2UgV1zMJWQ6<@O%9ADaB;A1lKRBQs z|0Z)lb#X$?L?qk1%5%=J0CB?27k$pzxyFuD&d;I)MWMoF45oX$*?OvW5e+Sza^4J2 zwzScocd=6@YtE*zK$c+kM03iSvu7$5)4SIy+Iij+vix1*lrzu$Fb3jkPvCEzavmz) zgQ6c0t3e!|aLRc};<0YDg{RV%pK^Y|Dbjj&z8g+Cn@LnJ#8b{=RXF8rm2#6ptRgGE zo;_|SP_2XHjPv<$f=z&V((c)mXwEg#yse4MX;k{jn8O)ot^`K%FbSTnox|fwvGbZt z&SSE_ye_Bt*JNC{Y%ZtMiOcDE=}s3KYq6&N-QzB&6G#eJ@^msqrgiV&cTRqB6T?p{b0;e?a-NYFlO0ZPLo~&GNLt0_NP(z>w_`! z75c##jna;gH1;e;qW!6(D+`G|%TJ|yO+ELutVg)zn?*P-%I?qGE~k@7pigxDV2nej zrQ)8bT~3SKu;wl&Ie!>MBFUnIZ3dSUCH@$mvIcb!W z55}mfI*e*S7z*RIgE7AA96U8}?0EhrO~T)F3Z8qsRo#>u6`OFvUEi%jQ)IYLyH&WR zadY){tMC>Ta!Yrs@HQ3RGgi3G{v*HNSgD+*M%@^2Y(xP=((EgZ4;Yi)&3av(^I^lh zH&N@Q@*b0V&%E1?ut>bXGPprQxI&X{N7xxN4y?|4K1_p)ihxVZmRXkpmZ9Xb2tU0C zREE6VDg!7(czml2m<)NjRVI)O3C?O23L-%LK78P}!OB*wM759<)W*n#z2%ED?Ah^!JnpNoVxDT+#_Q>_wdxm0+&3!tF zC|;u;l8VM1go-FX2>&F_Do>s?VP6W{*;;}`snSZQ7yg2$i4PD%FlBl>p&*DSXYc`@ zl#Ia&pU@|j$9#ZGsqUcz4ZHXNe}_@7XTOVV8xFzxJ~9>!QxDs0J%g#w!m{e~Cl?s* zvKw7Qa)OnZ8s(Ce3JIU+2FXQK*ByV1Bx=YeG{kM(^lI`$eg4F$7T6c;vyQZhuP?@+ zjQjdpF(_baoo;^olBMUfT zy_~PB5>I{w$^!M#<#7Q3X*r4q+^A&fmB&PZiN}`ZIa5xN`uH-_MmX+^w?E6VEr|uP z#JOndK#Ba{9!TaOc#>BT-D+zCKLMVXBj=^%uqZFLb308Bwu#hEB6z50+i@yy1P|+& z<@I(Dn$q?Wq#Ef^CzKU)xg`UqL}ND_BpIU-kL$D5t~1bDOG?%tYAM+wawGu;~@ zOGuO2Vo@;oD*8c$tIH0ljFHFpNaBO$(GL=#y@n-)g8EzmUUA-8qR0hgdxtDOtIHGt z@b!cNqgb84#DVSk=Aia+b4YusIiTIA z9m4cAXI}x1mbs)P2x);DZmUbA=W$R_fIK-%?MaQ*Rq}FvlTaFi{ zuYOjaoLe}Kqe}x*&3ona@^x36hLd~=^Ow3{@TkEsd~fi5iPnQjRv9(fgmJC2$`LKR zJaHDO+%Qr&lz5hEo}u!#C+rDKzMEY)r^vv7@k%{N)>12XZs3Q)Jo?Kvck!3)f`wriMpV*;6lxd+5*8%9GN6oON5d<9NTLHG(dThw)F+!&!%sFp zm!52XZ{jbzr9M{dbgE((HmA(w0Q=HkcD^~2m+0nr)EGjtVO+5bS&9xVIFNi?O2~^} z3+GXHAm$Bo2okk`bF3$hHdppG?q;$VtbI;4ilZrlVdFY|DHC^9Q0FvTQx&ywGuDsQ z+1F(ED94!+@$*SC>*8L8TO&io8;Epk6tBCngwd^M7)yBN-u_XuYHjw-{wc!=DymAI74^hDCL-(I2I#qxy|}=;w)-1$SBQiU=XJ;81?Qtm04}BjaC~C86VC) zc0HNrHd~55oPIbqq|4vJtxpiPq`}>-HkOjJ8HW%oxs`0I@2;Es`ho{8oWAEeJJ}yC zX_Mff?3>4hZUkC>;?c8 z!IVY4oT%58q0cdKmtKO?hTL6G^1#6C`r-N3Pc{7(V)XhTA*$h)K6RvBpP|w@zH8rD z2~G3sg8cXz9Mm3aFf4mt}!jq zw>wW$EfE4qXr9HS#0^@U!DD<`(VZmv6WK7QQpEjQ<~0&432NGO2DLMdfMSJ?IY1~8;OiYK$fW|j3p5wuA%fg# zAZYrvAPEZjY*WYycLGd#o_g5~c3R3Y4V#2fE$|8CKjo|i$%jm{Ggkl=@yPDTy!KlR zD>%x;6x;w+-OE=$S)pr&PTFOVfi1o%;<=ME!LBC8G=>x#*4j2rP-aAuiOcBuJw~Ey z1`V&+RJjS-{p#X^Sw$TwY2DwhUqZ?)tB2p{cyRvd>~EIU(}0V`YsNX|39p6JK!+rBSlOHul|^LJRZT_|gg^ zY-z!g7olgzjU+*5;%-8fX?By=Q9Sdb=z5WmA%J%!9}6FYkJUBZh!Rd;yCXUBy4 z67&oy`?49F?`oow$JaBybN=;_sATpP|OZIRrzoz zLrH}ZaJ8A|uogBYLSK!{F0tg#bUZt@i)F%mScmel)GsOlmp2pG0Fe6LX= zgGo~tyC@3&d*8_-cs?6;3I+GZ0=2qWw;G_VhC8w0d~(Cp{m+@XK@H^C2DCZFh_d?f zI3XMByq0gxxJG+=CcQZB)QpGxru#sMsDFm`AR}!$%DS+)g(mQ`k={BMwVpr7^9PgX z5@OQ&XLfgJGKVzv0+&k37cXCf^RV78G%7k@+Pt) zw!vqSD0C4bvw)7}jJdIG(im)meRS{Tghc$9WZO+i!_F458Z;G+0Y-Xhkhm!CgI!p!O=rNZ4>k7;Kcvh?P0UqLz>8N|JJkJ+L~Jyij`x2oPH=2ZK$u) ze8q65uR7$giN;#sn;ZU#=|J7;0*WopV@0rpb?uT_dm2n(7TWFf4w!e>v*&Y* z=gDH(r9Sokf5>+a0OvXkhNh8dJRt!5OEza}ZgOJ~wzpYbSL83ay=_Mo0>G`3hN3R1 z2zOo2-k|_+e>((#>p7FIFEQy>#|i&1AF;p?L%?+*(?Zed7T}_l$5`-gb&rLMV3Mg(AH z5W_oG3Hu^%NmqtMPCs?4XL&uUF8OG|dw5o_(kr^m95;?r`3u}!5(caoO1^R*uxyCr z`9tBE9}Pr1#{ap=kW7Adft5nE+ri)qbNhkQm>rR(n=z^HiyF<5`F;BSC%Qoe%|f}? zVfmVjpyKHpW}_()!={CUFJnqvaLBUVqA8JP+?2TNvu)*TSkPTs(Uj;bA5Dos^F)_3 z)_mThi!k^+ZunvAZjA{uj(|Gqb{_+ygJpisRuI6V9IRzo_4z;gsh^zrw$ZX?(HW^0 zLZjrp)>FMD7=dw)xR~vm2H?QW(yu8=J6>*5YMX z0S6ZgW=$L54ls73A@wg7!D!g69^(l}Sw!cFx-Tvg_W3B5*!g8$f5WYUhI;h`+;GSp z>s~#ECNqd`7!G5%$08I>TA&}&{~ z%et0`mb0{FOyNn(`v$(2U`ZrD3T$U@>c~1Deq@~sizxiY?1w;v_3VdZxNeJzhSjpl z5MYab28U8o>cAy@+AebPUtfr1RGY7%pE9x5^m9FXM)$|SJ17;V=BrHt90qhDw5Y*- zR=ILmkUOk`<0xlGd_O@clMDX>y=q6fBm`nI%VvZ?fy48~m zCk#YgKk38ZNaA|-dkjOBog^+sk_b*1Nu1Fge##`osl#?7=e!XP@U3T`a@eeX8#w}+ zUbTH<;u?Sf5rhc0h@e7hDKYj50VA=d{(x5eX)b!vO{t#UKrcg6O*M7WauwUtIv2;4 zVv8r+7S8sQrf}Y;V_f5LpN@9YY+Pzx4CHX|Y3)MMmg~!2>>|46vKOahEHfafDcN=b zpWi2hf=V^u)lSuzJ}DI8bKA$3(}qS4(TkLa_#1t-sXbaS!oqHu2G-%)@&z!4oJLT(g&yo2>5x66a zdDb{GOlvd?N1hEFS*1tWYN*d7=S34|o8jVJlrwg*><6|?1C-E2tp#yuo(9aF>im5wUgHZj;!Q{_(wQxi_^mgsB|0DEYtb%g@{|AR&Bsj! zz$Y6IzYd(BpPj03gw+B6a9JSKMK{xeGch?-ix<~7+f=mzD2gmgej z9B;W0P#2cqy`BlZW~2Qq^svH+Jtc6^`Nuk@kOiq{#TQWe;kCYGqXXqNqh+r(+Mgeu zq%AhPz|RY>9(29&V9*<{spX?Vx&H{s{}7{>tt?}#5xY+}BiF!AI|3}}`$rh0SZKy| zm8LvCQ)p&(IGJ0PS0RFkS`t(wDJ;S~2D*5D;BdFv3)E(4dvpM= z8Im^8LO4>)&OqQnEHwG)pgvI|qbPHonv6>1LGb;$ra>NE2gN(6n~n3l+m~R#`-bVu zR+z;rj_0cvOu4JCIKEEP?o@9lSx=U2{NXQu?A?F#`6qw=i`knFj;<334j!Rp+Ys|~ zQ2Ru$YwkFnEw8I|$8p}xRl&|F?7WHEz+h) z4lOT;{Ek8MyXMW6vmaPG0W(c^c)t@d6N~B97XJFM@HYe~>~|Sf;E8~oFrWr{JI3Tv zj>OT0BqK1LA(9?+{(hib2_XRoq@1tR$~njp1`L)qgB9`fH9Dy04diVG(ZC>@uQRop z^+7faWLzIDq827yR|(CAx3oRL8&`z&2zx@fYO%(hNy|Z}piY*ej!^S@m0hoUM>^$x zVjQFjQ>+Xvo^rky?j3Ojl|a%O-xW21BHz)yBQ7=Epn!lIbjb)xJPV&F@g}-+e4(Mt zk?CwXeEqS=KMpvAc+z?_jfVjbG+=J#M6ZW^l?*zs2c5SDt^C-R zf!fP32<;ID(WwW)N+gg2MFL|2>kU&{7zM31$}mjva$G$NIK5I{8*p0aTwXhd)4m^4 z^~~xSz6Y&Km=&}x!%ws>t~dmM!eY~talx>uq8P{f>)Csa-K}RQw9;h2)rF6G--JZr zvrAktipz02NVH2wAU}5kp(s8z0)kC@-ozo6$)q9kRI{{~#d0&iVnmEsKG+q@2f}i^ zt}QI@iKz8_!4P}+DG4OltFS!`p!F$@1~NEA6y_?wh}7EZIA*z9{-^@-lOi)DbXVW?qsyM#9T*x5&X0!aitG;a$XG9WN3IA^?x>E;1~9 zCgayxVE{LY$IOzvCRCZlW5-%OTX4F{E1Hw5G#mUZqby5d38!Q(~a#S4tL=b$pY5}{t&m~0k zUiBuR!;sXQz7kCr2{Z<3E+p@cZqz62s`Q~gTDW_Q7~+P0lnSVpy!R5uPa;W#i@h}J z;rbnXF8URM#e7v$*jT2LN;5(s$#T<)^oj^i~P$X3;EBD{NwA(bor^C{S$#~HHiL+ZCw~S z5`3VhgxU>6E1gM*0a(L*Azq}uZixnM?S!HK0%2KY;eljf?CF*kpes~(LIO5Reomjb zmoaJE?6)RM11}j zXjDD*Q@Aw%vc8AMPxGB$7rMl6Jn7#751NjDKdtW<^ajop{+>fKzTXq0DaW#7*CWC6 z!(I0#_pgDxzM+`LY21N=9`vK0?^hHReLYdR<9Z5XG$I8w)GMG(()INu3O>H!TV;GP z9UHEAtJnslZEYF4IT;$a;qoEdNN7r`ll*e%TC$4Wf=uf>x|PnDo`*_ zN54*nU$pNslxCMOq_*S-`x-;etDFx6&DI$yCUd4}Qz7whGl9LMJvIr8#h5&(@cZu;4)L}6!8C1n`rW*wAhDh>=8S%E_zRS9YU>FLC5njl za&BGHkQ?LWSDcLpzKrf*MF&wI6SdLNtX!0tG;SL|#5m8}(JVV{BYr`gw9)ij5Hfn6 zRfjb23kDPinH>XDzb?Uu1&EeHTA=#|<$&% zn4G}%G^I$;Vd!EcwlM<3)untdk>Q%g)2SKmRI=l2@&OU8S7jfshtsXLge8uHD63b1 zfVjUW;$K(>`twy7Ux4E*vm=|uabC$9*h={tfKtsGXsL_pIg7LLkSnte;KW zGU3JgEs(T#e{s9j=4&tUCTA?vOlXsP3@0|qFrThp9P#Ud|0<5m^Q)QB+-Oi~|3>)_ zy+V#I*-oWn7`1Gu;mf0=2O4cmCebv_(39=dcY|>iHMHv8$d=Y0ErhVF9~IU59E)2)^+Gtf&Ptnbrq@h&kt}ZNkqd4mz=9@wQLO|S zO)f=kjS}DJ-x!QZmrl%GS2&JB+V(NAY`XGlM(y3b z5ZZLa9GMwovL8YbLYjW)X*WLv<`W-EwA7AON&OJ&GVwx48`Ikpyb!YcBi#m&y8?|x zs%LRa`gu7ogzR``MK*I+=;jLi4uXrB^tAXoR8<@3b16AY;QP(<#p95|)Xdnp#OKZ3 zjkOiU(Eebd3{=e40(kBymsf&;MteR^hjKuSkvZmqVXkxKp%N$v?tq|*bx9rs^)GuFy5KF?uQhAB7LE^EjsiToW*alxGfI67=ej1M-w~vQYv@6#OF+S$(&z2Qq%hy+#Jw&r(AH$xdffWI`6h>WZ-$ha-lY^C$DTF zS81!L=B2~TXu-Gppl!)UrH;QoiI}Im|IK9a*(qc2sd`vs6bJEU&GjGlJMNEB$<;9oP5+(n#D@>|2YKkUunfk%DI-$g*ep4wMR6BLmfFB~+Oz-@ z7fzYLt^m_&%fE^My0CA7WG+u=(PiN|>F+?9%=U!^5VKz~y3u=w@tMlolGtyQxeuF@ z8SHS!Hby(5BhabnyU)a0>UduuO4adxs*a-oFQO_($3K0~Lp8XLl*`_TCmHQilZ}B5^tK#>|_`9imfhfQpX2PJVT9*;u-K^ zk%BFa+Knykc(J-DTN)J;kxbFp0n&nh18FURez`48g2)MnyHVtOiWsqSys-w|GYRx8 z5(Z18FLh)#+h8)1`9*f4wxh~yY0>ZFDiLyOt?LB8Ps^63=4}gN*`uM(fqXB+v zXx2|h0uF#hqeSCa3(x05yoB<(G)4oUER@xHy3s(HU0OziEn9uP6mB@s7!soa%Z$+g z1UD!<&2SG$V>@t(*Nh2nlr`gePXd_xR<9CeMG@RcEDW`V`_jikkG4_VMduHPJgo7*TP28d zZ*lYruqNpGJCFu28|wyY^DTgp^fz&1q$;hXsP2fP3xs(=WbA0Ovvu1E=EMnIjYSukrF+a%FS|UrXzV#cTr#6AF;dI`Z-G! z_F0KzqK$sDjv2m%tWNL_nH9j!YWov5wLh`*{+@6=5>d-|u!_ohj*}(Q#mexmJ0yAl z`4D@lMtaLhX!w1jTg2!VUZh{gl>m_lZN9M2b;E3DCwO$PM+K#vB&ui=RN4IF4 zJPLXSR1wAoq+>Royp{_nvWz^O-iqOMofux%b7e?O#9JFvYqty3I8(pWRa9xmUSFMR zLhCdDDw)Lf$->rKZ%;LWbvP6ENWK*+oU6rxHSlMI37jeHL9KNXFK3?cK?nraAW518 zL4z({*cp8c=N3+<_Pnd8)>7r~ger6t(9b$D^MK&#L&a^&2ovE^vsi0H$D3-=G2h6r za>(~LV3gf~ezJ!L1{Ay!h%~}RlezgZ0Q@~+-#hmOy zi;qPWicH{Hg%Kdo8$%f}e|BhK z9PFNkag@$NXl~>-Q)3*gW`a$MF%!bCTpj`Lwsj|Y=Dtd3Rs%h%2@MimN{={}*FEZI z(g*MOx+$GVpXa}B%p|!r;jXj`SdN-hlCn-WsU*)Uv)fw!-K!A6wfrrUQ%Nd3?EG|0 z9Z58wC=bckNCSb7xR4VT%9B?(OZ*A9oy9`ceUeMjPIPeEkzjn9JSO&RlLBjk{039n zAW91nF6vb(rcJ*PP4O4U{Hp?H{JOP~qKI^=i7|igDh;jW-(M$^l=<17MzKpdF=T`` z;Yr62KtYQBfk`Dzv_C?XS94jE!PO1bIVHanDT!&UXMdmebQJtyV&`t<}K)-h#CDW z?5}^{`Pcn$t9w1@e{Tr-Pj3$6@NbOwp9^vrc^;T%7_DY@*yJ`Y!d};9HzG`;%ejt< zKWw1$tdq-iv_I2Zws`+c@%{q^pXbU9p0s(JwHYoB@(WjDw7*_&#&VhrfOE~=VQ1}r zY?4e&Ven*;&rD&h<@3R*ku4&DL#6@m<2=G%Z1{Urs#wo`)uM#Wy_F@jsTMsDP9}}L z)z&*jDnk*TRXYcuip#2$@nx)=vZJ^ic z=)@v{ykQVJ*JvmPVDEP!n|A@?>8U90?t18))u%2vNnMWtrruV#t_*HPN)*4$P@_BT zUu|@!rtO5wf=&Itbf*e)V)jZFA-Lev+cZ?P+n_4WkcK223>hzl^2wBTjqp^^@;J#ZnY4``L>Vo^DWT$ z=8U$>W|$fqpqB^kT1k)zzy%h@>zUUC0Dh87jp5HBM-Pu3V_l7mXh;wf883@yVUvRGc=CmJaTVo`)a{a#I}*B@cuU7=E_((icgc_m zfKm$HuzziFr{yxb>+k^Y1&foo_$`g#f&CqBzTkY4M`pYWQ3w)DIDHqM(?k@5*3@1t z0j)`5QL~m+dms5@v@Os}EN>u~*@Pz?5F)OdA;<+ES)M2uxkyv)OEWqo^Dz-+{OqD1 zM^OC10mX6bmGH)Nqw7Bx*2SO$`fz)Yb$6|&ijmJWw}dx#-qSm&rI-UjhEWW{0eP@> zJR)rn+xZ>%NPSACpt%6F!0S@`YjA0uVh92&g9vj_D})GR3@s61bXL*UPQ>{-YsWUP z4k<2s!kfKoSyny$%a6Z%`rAf+1W_jzaeiCEo7PiAJGB#JkmUw(ufrayyfsFH_)D(W z;bSgb2yqaTe0bwxMV;`*i5CcddQ*~9On3vK16hqLH=EZO1GI?Eo1dDNp6}hJp#U~# z7=@jgH-ehB5{VOJ*jjm1_yw!k4i~JjLx68BjchlUpCXIU+qw4Tr`zmx1`>r8%cv9S zT1algV+kEW_O55?LdyR6o>%t$XF@`=<6bx4r(%%H#IK?lqgRj*=2$F3_9P$duUAAm zKsgr#B#z*+eQIR^@pe5UtC2o3+qlpN4Q}^7bn?;d2M6@x8K7{`$-4jo1w$I9dpToaC+`-hmowR|1+LG2)$Nz*#hE0c`h=t~L5Ei8hgERSnWw zCuIlQq#ub;@4*@wN%&d-!TkjMiE)FjtNAjvmXuep1 zuwfXd`zw&BMJ18botYaSezwtRCGj{ngYAoVMg>^q#?4gjE=MtWNfgq7w>mT^zDZ23 zxY=pN=DHN29h7i0QHCH_@jOX69QYY;*C8|3{Au=Ei={D?Cgt$=Vxw;79G%Q&u%nqa zW17iE{w5IDR?Fo?;Y_)3CxyF+yxPVA-z1#?2^Y(2p&K^gmzmN%K@smWo9C(nAsDTE zfq}SN2@H3cE%-52gIU0$@!IeZ;cM^&zEZ*kUy~jjzLGN%_|m2Jvq3+R7J{4(O{!hY z2HmsVw9t-%cFcD$}myLkkzO5?+6V+D2yRV*5dCa23M{r) zBA#d%JNAhRP3jxlC-s=e_lbtY(%MR&A*W(}w~lIf(#9v!yLBF1DW<+M7pa(5(2q7S z&&Ur5w~|EU7@mZd?3kud)xLUtimB;bbRpB$SFca`>h&pKy*>ph5fVuabBG0WWQ>fr%ysnU3nDPh} zTDPT~i58^uYDywC ze`0rpfHafrLaz6@_6m3`kd77OE26e!=f9bEg#3bev%gMQ{na}{>TTlM!i2rDLtAjx z!Zjw1wh(VYK*$5 z1}*k~qIkX4LTwqzcRRX;ecE*<{%z`ZrQFlMvRh8Qm4M6a^;Dtm9FB8E4R%H|SS*G= zt-%oWDech@fTN$9*@O7_F7dfViQ*evG6s-83vFH{<}`j0tr_90an=( zz-BtkS_P|upr7ismvS|d#Hnd~R0`LH_|RfZSEEf2p36JEWTA>fwjd5&dLkbUW-Zd& zVKl*~q4WwgI-0T(3)sGlqZz$Ld|jaho-SwVbuA06sA4rcG=UX~-$SAlSi?N5AwTLh zCG4lB1zm_U z>hj1;6&~=_;>UjVgrHI8BL+c;nIngxMA2UK&hCr;>v?BtC)7bl+8u7mOXjd)C=8dI zIvlV-+i<0|a~#4-9K=$Ad(Q zRDdwlqdvc`pAcI+Kj3tvvo@fP9|Rry)S>3ofhseNIlh#2H}h}j-ZRgTiG6+Vs=1j_!F8K?P+OzNpq(I%#j7A zxwr>1W+c)s;`dPAsY9^RHSt+M8d({Pl3E#>&;(eRK%Z?E^{%qZjB#UccE4l3!0N5| zTA;;-AKzii4pST6uQ_M|d#jlFgu+_Pk;0%$ z?1-BGv17b)fGM)t(1!&1s;v)gZxYj2ozUm-<4(Tg`q;Q*VuAwav8yRX^~n9aeQUl_ z7Fb?6(o<9yRo`0&xt_JwKH;r>K0)E(TUTesD6oNup&3_G=z6R7I;{yyG~>i*#?L-5 zk+K`7W{-MWfRb3}vg>P4X*nGL#D&#eZEwM*r;nZxf<~}4^HL3>j>-f$aoZ(ku<1}2 z-s?{6UgG8892l#Z*Lu1|jU*6erpq`)WWo_C;^B}{ z!Z7WTPj^azvAVrWRQ3s5 zXyPm@TTfV8U_D`#hY9~#d&1L~ns7^MX(o)+!i1-N!i+`o2SFFjgzeFe2~%26c-kk- zhc4jZ!zN54V-r@hqVH?@%F?mcWRaGd$xiPw*^@I3W8;4JetWV)z~*16wK4QI&IF2! zRm**6_~NL|IWSy)eJ8|yX>!9-#J5Imdqj$0iyQXlI_hKB=J3#6NpthsE5hnNQ%yEX zANgfO699+<{ETJ3wL|*koFlB0D9DvTGSwN2rPB-*+u0YPSS$PT%aqJ{N<6zo1j#n1 zDIekkB3PE9$YIJXpFLY+&eMootmaY9l9QUehnsYDfnWe#55qYnEOxq;FcAisu-N1`@id3Uz82ZN?ADqeS@j(a_w9|GX0HM!At0q1Kn^8jt z{pntRYKIzqr9U93N#fa*V&Kw}nbZ2jtoW{J(@n#VKvHawk?|z7HGL=jKA&y8`{_S^ z|6iPa&+nf7!GSam0IWa8412?$)nKy0H>2(aSqerJWGR3HSBHm{4gY%hXBcxOlS*g! zr&0mO>t;R!rg!XNn_iEv>o&{kiC?f1`X7GO`yC-%*pR^AD!;2b`xtK=Wr!Sw`Xez( zQ%p7F&hY09Ztu!lL(RRrX21D2Yja^H>*PguY8q&Fs-INT9OtoSN12XyajxyxRoJf! zkqtW4@Bgw2m+C?grBgj>h1b-Du*gnz+}d2O3qjjXb;jP@TNgsqkf^GAthhh?Q%#E! z$$^$BtorBv1eg-ixuqY&U)4)oIX?UyeHk%9>co3(v%3>%^OVTWAutzmfUqIDq!VK+Px-HM_b+h`0=Om$`XMS^XMGGK`I?JRUkBJCP=n+bI=^ihBa&kow{L&Sl*k!0}f=gFCw@Z(r zx`L`{+BGPT$G7w9flZ(&IV+OloB5U_+8FHlb~E3~F_^2-$fQ9aSxud`*!CFw<4LP; zuZS!s!y(D62<=WK zTE4B>x7+wu+P7EnZAI{o2+n)kS&)bT_S+@`mr<|+P9_ee%S{Mjb;?B$ohbUK56J<$ zR(Gnwt=S@D&GC&j2H0kef5o==ClUc<(iXSzEJRv=Y2@8)pIvsl?6%Kd+1urgW(8Bv zfbdB1keEl%w`6Fp!~fmop-jH9sI=R~3vC%<*w;J02$7u z(`&s+h*7(sQB|*|^tPkbDY263=?C~5eLvQA&>t|^{b#_3P9%$}b?Zm_X@a}p7rPTp zk~Vi$S(xkhJ9%I7_DpZq6r7dV=qx?dc~1Gk9E0&hLB+BkhTf$t_)s`9&5!0q$zsiW zGwFN$*zG-;4eR#!vD3jUx?LD-nragY7@8yDHJrg)Xcr&-fYu?mE92kHb-3t5* z5a&npnl2H05e}u`u;x(H0%y+X|*zKK71ga$ds% z;#rQcQ^YNXNk+~s8gf5JIC0(>D&W3ToS9K?)~WmpQ!(^r@%`>);*TA}8Lo z_VXsh(rFnw6A;5&AYA4U=YH^iAIP)w0Fz7t zo|vSfn5C6fVu8d8*23Xw9q+gqV-x*hEQ4Ym!XP9$$>8VpsIs#gtARUG711D6aT)VPlgZ58+$1$JM+0wJrK1tzgFhb9}vN+)7vlrlWHa1ozbsh@IYLq=7mi&)kLgS>Pp92%$mYl0okzDuo5ps4Kf~>Ne!R@oCatT!7*&+mbe8f zGqg=%pfnJqKE%N+D?`{AobJ0DNr2&IK@t$WL!vrCi*=|jxc;Rj{aKe8ujA{*j|CX2 z+~rsj$*3@ba)~Ek4+DB!h+AcYf1fwvL?eA@gZL)lbfi3CxrRLlS=}6d2S_68&ELC& zXLr6PBS@HE({HP`^=l44n4EM#hMowPU?@f`b>J<-CGfkpWAscO97@>tk~3^v1tJfo zRIg8Gn_cTX>5W)2e(iZ1ce$&#*moSvf)&iYtr;EXBrG-{9diBFg^7*KSH;MZj)b8z z1&qUraab+hT6WBNC%fbD37d-^*jxlzW+2s`hsTZq;RD!#d6OB!L-Iz7yQ{U*wajNw z__7I_Z#MpBeXJI~Dn_(@YS~-eFDZ_er&D9(U_YzJtQvQu$U&}ofkdweH}{iTjNEpr zG543t&AlMJZ8pq*9e^0%XQ(0YtabzZa2nO{(*tut3x1rWO5lf4KZRc{(>F>7b3p_p zX~)Dc0ZPkaw=e-=8aNva3+|ml&SDfOw<1Hi_Or4Ls0%~PVT2z{#Ne0H0AD>!fI=2L z`V7T#uC=pK%B5tHd8`{F)Yw<{P9jKm{L;yU9f<&c!$TaU`ly!0vb%g z#v>YR7p>TsnlCX_`P|`uOS?t+)w|I|AHQq>tjS=KYYa2ngbT8_qQ zRq0-e`Vclv7cq?t{V+>9Lb@0I0pj{WW&JRE%kU07g?p$(fTHU(MO%lhuNq}g8l4BJuwF1guBQA z;Sh%7VYvl%>i*v*Wm0R+Yq9Pjbt4-iT#Mr)znQ26+#f*^_g$Fj(R#)z=mUkD&6wK- z^#oLbRLJX8Az;VQdm{RY0IF4zY#oC9;amLNOrtei0Gk>@Ar{s`Cr7GDe?=S)JEG~a zepZG^MfKqyJi72TU~K17|C{Q_XTN-Qdj5=&FIw;PKrHw8SM{~iWo{9 zkgN}MV<@31tQp*iI9$&>t?g&X_?k}Ks6xmjVoB2IxYX;1s5!h~D5GdGP5HMwH-f??^96c56*coj6t-*X;ofG$rI+>0Q<8m&;Sz^kL-7{P zZfv+1P}Z|oX}JH_*l_#xaFgSFA+riPpBWR8 zW@x9@Ak8*oZF)DLXy-|%G7uO$vHC_#tiJ8iOM_1>DWPz{MsXJJ+gQcr>k3aU)SLXb zlS2|XkqY1Y;8jDeE6i}dwIkv7OCXGNPZjKH{X=TeX6rhC=-OuMP+T(vXq2*u&Onfu zWn9&is`EB&Y8S&lM7Tuew3jVXEI{4zDqCN4fxW@l13)O8#~B?}Ltt{GzYqYEFbJ|@ zhe*~i+K)v}e7QwPWpSj-S#iOX26(U)EW#I*6%JN1mR43WH4}ZHgBNxYu;SiyfTe$h z#F?Q#*hsz+=VrP#Ho{4=5kDdcsYNJJkXnQa@|25E9g&eam!x_+=%83fTPcMn;}@Kr z?SR6aZ=~lx|35pgo1axG?oM^;H@7#lYARe+I|FuMt?BTgSU$WY)H)=cT8tkqH&rld4)$Ulr3 zMPJ|G{rP0^dVKX?rZs1og#f!Y8A|J3;t*(fA)`rJiWHh6QB z^Q_PrQ5XAp0i&der?re6z~5S&P{!hDnM7%7uzW0U)GXolvPR{m6@ zbyP#|aI>O`-IAaKSp^&PzVlN0)4G@joha)J`&%h|#QpEkg{Z&%LsQW?TYPK&o%(uf z{$?J+Vq6EmUplydM-;Xv!&9LQMf-4WB<5A_Re;#s;>V!O)Dj({)UVaD02v!H;uFKx zDY;x-*y;^Gr3q{N4Q;;v6^cp!wv9>lb226+yV`cTF{`niZkuV+PH!U<%N}-m3$4D` zF)Y!7*rMds4;)>X?{xitdDiU~rd@QZUsQ-oHH?`@VZzmKrbT2z%Bs8}btdpJu8t56 zV!`iD^%<)%6NqEZqhjoh2knhI!Kp?4cd9?M(&bRk2wkh5O|HX!dEQ=}a>_;X0*sAB zbSsQx@UJWqCmqM5d@=a%F=E@&F59>(7`wD9B){`0A6Ja;oc zIP>;8;x{qDX{eL_0iwU+f5jbTE@wkdtS)T6_@CrejQ>J>x#cHo?%kEoOH4qTfEi=3 z4%{l@AXW}IAv$LT%hldP8`E!Jo#me62Xw}>oPEF|r`0<41UV~=lhwoqdKxV0(1F7v zqztKuup@j$NBugQ%1#;)at}wrWz-$M^B6rH&>L8cSM{1A%Y|mhQTRw7<*V7e) z9)3b2OXp~#$*UP8u7&Ar3J3NSXRCS$O~_b%K5`{?H{EZ}^lSRYzxmcx4$qc4c{Zn8 z%je6vHv+}pXn}qfVeWhk^|dfylANvN&f#(>2Mycqjo^rO-_!qc8_VS{h#caqefGor z;(XE*RvOMHakc#cM58y%+qy8#PDyI&E@IAV|L8aIcXs2iI^?r*m@?(&$r4Y#iw+S4 zkB(%>4)5g2JA3MPI8K$kQzY*!*Y6aqce=?td+T?&iZN+tDtTvL{SNDtyfdA=b4~ru zw7;W;t!9!p_S+jkfzlC1dG2@U-CYiKE$cB38KGcsKg7{h?$X(K)!pUn#%u0AR_@vO z2L3K@tnqj6#wvgJZCuCSYc{Uo@BWS9-N%6AZF+s}?hR?}@a@0K-gS(El~8cu@4bs( zJ^%IWjqf_9hrQ!^`}svZTG96xW~|a0-~YctrMDeFcI+5;m4j0Ki1}<|tQE_lV@5%))qYUXZ_@vR!+|b;n^U0rWMn(x$tZ*d8U=pv-$9BK6$1U(zAu|Y$183 zmC>`s@N6-87S?1?uGnJqLD6JA7AlUIy~0*wn5@PynMv49)l!({Qt~XW#-8wOPx36T z#&USJoIH!Gu{S*1n>>rFu`fK^mpqHBaZPx3P4XbM3 z4fB0i#-KVQZd8q`V?QTe6}eJAKP6l8&ixLhE&(5oFR>7|OkgE=F^@k>KQm4Gx=bWL!0X{P3+ZKuDU% zVdO@C=c@1LbX_^8S#$7|_yiTle;7NJ40@G&{77nGEFNCH2nAd1my5Tf% zK0jTqsHn?Fi$4#Jt`2w5cjLX{#Lbh)pLMOD9hD64IDdBT5cxBf=hi#UpZ%T4pGm{t zddK;*zZ3a0H_Ei$asKS@ME=Yr?X7p5Kl?k8KM#P2AMczpPTb5Y@@FhmyuqPLyD;4l zMf@50O#Jy3MuC9*g3xTGTo7KYj222=O5bNo;6M2eOgiaSc)GO}WGp&mCF6qJ$@INi zyn8q;C4cTp^@NrDtFSr1rcg58-lMIW3!@eGYM1MafGLJ^{YU--Bv8cD5qDBt{Xa>o z4u}PyAo+Hl3p}%Hm#M`-H ziWBW`nBSujsXgDsn2L_BE(&u7wIuXi^ORy{8qzTT9(+(_<6{9bxkTR;=>W^nfW@$x zyt1k3V+aFvH`iH)6im zW8XOb*xAD@kEh>A-ef)YJ>!p^Luid=-Z(FZ`C<@g{joENdA8B_Bha!t`an%O`c*UO zT}4$?u)mv$++C@}`YpVz6gX&U+6LO}eJcRpbnvxNR!*JK3PrX+2r61wNs5QL8s8tY zH4JZ5Iscw&t!h^U)#~)?I?uG~6jf2ZFjl7sb$WH3dmc(gQg!)vpOr-Hp(NCquIoJ5 zsx!q^o{x;xnF@8t`V-W%$69r!tLf^gu{xl=&4&{-q0Td{Iy2Qw^}<-48LI$_0MT#@s$n?6ChUZG&~3aq{lB8&}iS zMAE>Ck5xAtn}3;!I1imgvPSql!51}$rmD0aoL(yj2O&8_SwTPwZNF6{207?@IC98jPG zPiap?icyP~&$ZqKt!vI=ILXq^mP>bgnqo^V(=TU)zkL8_6PgR_-V2Qn8QCFAklh0bj~fQs?85-|8ntp)BIXgl1$!1JJ#h6d7F9;hz`kyhQ)pOpc6g@T5E+28}~Y)UwbtH1w-1$93Ry0 zRsUL9B`SUjgm!wmdQ?U6$lIJ2vNQaQ1~PcA)Aolo(KS?NSwfmSt$uLu8O$b}KE#;q zXDo`6SMgwJ9%FHZ1_eDFen`Eu)oAvnqVy<@;LFCqVpXH{K0jKXyAUo^N5d0agzSIF>bA;5r>@H1l>%oufXmr^{!&SWB|0}(5JVZ0yBAdw(T z(~;^nX51+BfpwtzCj6Zuq=Qv1KtE8QaWu zn*@#-(i@i3ex^aGwERqiVhACFeDvh5U|ZgacLXg1LXqa%QX(Ct%@K>@Wnl8wst}J- zYM z=-0ckuJ>^I#^A?`Vj90v?Nci2z%^eI<`8KQ^0~Yph3rXkiwIo!V%9Q&w+&1IHih?{ zt21vUms|G@o(0r0nsK5G=TYD-y$8@cU0{+D4sb!Fh!y<65fiAIJaMxjN01KH)EEML zZk%%pvw(~N$~x;54m<<5qYPKSYO4eqPAX9RNBZw}yL$$;D997X{J?)h=|I~{Wng$# z&{Y>AA=UE+>u_eP7DXOSSAe}!3_q;Bn0cC^U{m|yPTpZ*zQzb_)f__-5#7i(Hc$T9 zQ^f{{^^Q?fOC|c$bHORYSB^kWLH18{QsVE!&2xyP6YH{o@V%T8WvzVcSs4@J!W+(dDKlnV#NXW$ORER-3B~e2T!-ECn@7W)tcnR4(QTM zajKajC<^KJMRK$V$0`|?@^hKUMqX2Vz=fAg&pm`$c}m^MNT`((kt;kmQH0Bm~ii$we5#Ak?CL zAbC5&7elr>V@?)m@CCsPj;4&fFb)4_XEBr3IhxvmB^X-Rhw>=eitYq#h{raj0xuKL zU{sO;s6+BO3Hifg8plWmlo-^|z#3drP&b^|M&KKWGCv=il!1d!3Rq4}H5`abvWZ*Y z)l&ctL-|rSFPiP3lgP<_h)@WyC=gTOpw^lLn_a?j5eG+Wmyka3ZrdT#Sn)k4rBcaN zWlf!+3{#9-h{iIY5M(!H_dLQR@ZVCv;Ux-=H3c991utlt{szCEi@$U}VPlI9H#wfH zEvb+twXDz%Wj?jwQ&FKB=PlF$B=*ygh$8Jup}Ow}-{K%>y`8n)b?8~gvXK?E-L<0i za~SiCwmTT7VRUs&As)uE4SX|Y4{COjgZV08DV+{g*e^Pp!#5qw=}N9v{h>#9)id$| zbHUZnwIWNTZHMa^m(N|m6<)%vT?+P-qCzPV>Y64e6BGB_PK4tWi?n$4wo1NtNl0Tv zkh&rN62sS~)+_^=(kuZ&i%flfDy79Q0{L`S#`afRLZIF6jJRoN+~tSds#evPW}B2!c$xRfT%6fr*(-4 z{GyQ-Jbsbr{^Sl?TO4BXHpM%WP}o+;R6=Y)W!@ZP!V;aU-*508itO1ToX}aUaChVP z4c}3cj37V~Xl8iaaDIwLjVu@~CojJQ7vD0*aG({}flQXdAd&eXKS{!|C_@QNw&1>O$vdEmynZPB5{^ypN6QPi zH6}FB55mBY7_QAM3^3BmM$i9dkb?}js4qrMV7;0^|D5p?DGFniJVxw;K6pjpqzcCG z)ly_HLU^U@xfI!}o^V9!@fy_gDgBC4q<3R8RyTei#Vv={uZ8-C2!AU;f#OB4Cj61^ zI^zM44X;n6$a2=e^r(CJ47{^N!KwyoUA}hk)jo7$)U+Rko?Ij z*@mv%dBDNPu8V z>?T}enJlFpsF0XgQC>rA=Y_d+%^(qlnk^E5-7i(#UU?h&-Cx0t zeDdD}2-`-!PrvGod}$JJ_LtI{+xk`4G)e<9JEi&S-SPJm10D5roqZ1LZInwI_V76w z^p$3Rh-K8W?a%I@>On3rs%~1jlyfX=)RWT$uHQ6MVmhUn73{`4NWN+JM(ZUS+xF?f zsZsG~ng(ux8qxr{%993M%5Z*w;v+(VT*(N=DGjuS5h8os^D?8+V_5D@>8TmQ>zyII z79a#Xx{a@#5r1S1k1km?AX2FMV5{njMWjTy675~fZ+3Acq-shek%W5ro7YK>hqT!r zh}$HY#owG;HM9sEKX2abHHW3Ij4QoZ3(G~l=s@Gsufox#?y*w`DMRcwEo$?Zg$ zt0_s4G6Knk6ysjeg2#^dQA0pM6L>|PkKxL&ZHFO9g3obIIAg*!y4907m2n#m?=v@D zw>r;nD-D??@DtKrcRf1~$nW6DX^BT&zaO_FrK`Q_OPu3YpFKbL-{(B%NJ{rP+{@n5 zkE`wBXKm+G^IR7VmRM1m3NQEp?HyG}fnk*dFLg;pMEmvZQ)a5S4nmR)3H;}}42F~b z_<+{($GW3FjG3KD7w5Y==CwL_b@4n$G3iv#dAavCy`Xkrc(8m$De?OWUPtuz*BRri z>{>_Wxmlt*2Xtc24Ku3QupBY~cWzEsJ=hQ(I{g|t{Ro}8xoabIilIa1=>#%UKt|2b zO$wFp>gxQ^UUm!`g9)QIn9Ro%2mvZ{p8p`iAp*bvWM^;t3sd=^Kih+KIB4bs8bu~J zDB^NPC=q02{*{Gt@Brsk7;Lw?z}fownA<`F`|fyvcy4Zg0LnkIC;-D3o8^82h3i@3 zY2=rmD`ymMCYX)ISkL|;?W``nCOak)%uSA)wxYZ|OnduI?=2hcVbzzb92o9pSnJuF zw5ZhyiNJS`_VV>?VPE(0bsKNqHRaMs0Z_~Qx2FKnF8z;?4xO)F^z+q=mVcutE$;MY%U4fk2-9Z+>xPfiE+!+15Q*E8B9^CNw|-J(M1e2D>}4ji*cDDNfU%y2YExBro2 z)+3Ht&-w1c!JIUBi#2$ohWqVP#|IfM8pqo! zLT###{U%aN6;AE(L|CzSgr-9pMPj9*Pi3yU;jZe2|5-jEfwQ<{Ax-nB=Gh{`$=AV?9trHC3(f@+$ZJ%?-w?3ouGb)+ zY*Wz7&(sWrr>#B~_rllsIO(-2NA=6ZJ6b~BBydzKd4`<;YV zp7s_Y(?V;X`kamEG)>-ATqssk3JrA;iR;hp33Ko%QN+npcBm~aqYN{}ck1Bi-dQj9 zm2EF7IwsNdGGt#rAuVKPv>kG7c)TY?#TFVj%d@xK7tmN3T<)u<>UDh!c)A`MkLYhG zexJo=h_F@n`d3@glZXU!`!u(;nsy2@0`pDUW}d1=;mKkj%X$+u9P*_6)+oZJGwo7BFSWiI^)?miL#rQf=mw6yUlFU# zXtWdh4M*SVI!C{cjjio=Z`V0H*uNB6#Svz^M9+OzkFq6xqC4xVutlP7sz3YfPkd54p+5pS|FOC5Kyh@%ckWJBWs6kL;fB&l_GXu;H6dfwv_BsYqlPqcgSPp0_Std z+?Pd0pyb{eJ^c!=1J6cf!FUT2I1D~B->2vD2Xp%B%gzo?T1sE!zet4EBb zq4_qnv(8qU_8-wI(*9X}Zh@jL34hCx6d6QF`awrh;dNH;{V^`oH+B>GOJFxhc*btV zn9>0ipJ=uPdkQkXp1s$$`+9c53Bf?O1k$XSO(p0lZw+6y3aqETLKn+LXOf5skFkn~ zksV265Rm0^PlLKCDNJ-9gBPSAs72|d<_Kg48&c3XIF7e~^CRQ*5s{~%kDFFK(8u-c zm=m<;2@7YbHuKemRMUB$fHpf{0WAJQXVll$yCbE5qC8qjDBw~<^~wo~OHSQL>*hRh zpcSyMNgSw>a-pVr&oZ1a5G}*AJ`AEU*RwA$3^4-lVmXqzxpLXaoN@=w>AWXeV!M$G z-bmL$_SukdDJm}1Xu4-c{Hhg~NeYWvG07ZqCVvj3DVJ`+ADuUG-GZ16W*yB0(tkvD z$X#(I65}PM^h8#SE!w`k$edgI=3-bupY@;ktXumAT<=#1Wde=^YZu9CSS|(9G!z9~swtrHQ&TP$8p`LAmG(5-t64opW`fi22?Ifa zCw)%Jv!dZ%N(4hw3|tZx6*m=!hp2Ww1(k#6ycz}{C8tJd<8cRBV@PO88|SQ%TG}{g zBh(llQ&T&njcs1vRod7Ny*JXvCp+n0`wB=KXPfb95@#LI2J}xb7E!;emNrhe+dS=U z25I9Xt!?;amo`3o?!E7u*;U$zPrm}v#+I2U{&q?mac(bN+Q1|EWtBE)-=vK*wu?`> zjYEik#*s8g8y}lMHCt9mBcY-*ZSle-MCjv~v|%>Pt!7(L-K32V+IC;hwww_BbxRv2 zI^8=CntOe4Mk9McBm2NOjYKwWB#sl-L`@@4bfUHOq?+1cZavQHEpzMf&|_+E71LYK ze#FRa)W%-A!4)nrL2_xET;X{;O|F~Gm^H3Vjra&hzxn2| z4r=Fntw~d>*0Vd>R#)DCDOT5I=3QG|yZQWlcYcT2wVUOavAcGvw_~ZwvW>s^jZeSp z|NZo5KJjm}H(jyebq=6j!tnYLBbU8KIh$yBWv97(Au*w`z3yw-URl3!+bcrPi?h8- zH*U}PyXI|AB*xb`^a&QsX1s|NP(meK|JwPXi~CZ!Uq<^YG1OOJe>DL~!#ibwpBhdW z{cfgXCxW}0c8MB#neDGcu)N&%S0jB-GXIy!{>l)Ikv-qoU$v*d-}ZFJh0h3$` zfz;JoUpWU1Cu&RU(ypSSR6o~gq89_&MO9!i#>7OU68o#H5wA4+t7(B38!{U8 zi2u>mh_?X!Xn?iAC)0IIw>*LhLVheq<$DWd;la{kYAwi&A^AjxiSk;rPV6bKjf$&TEwU2F6>w-A zSG58~OyNtYt`NlDUCu`DWM(zYNF!itR@N|L$%3X(+G^3QOm~f$HUe>^-LpEu1->l1 zs!<%^v@tyywP0VLvvo<)H0{Fo4DYris`{EF56@ z(mrpE#{>}_kLW54spnQ1;Rv~NkS#)>L`XgFR*Yq-@4ecHqIvY96+`AK+1=%+z+9!T zFdYq3UyWa4#z$h&G?cLdqO`0~3;VX{2j&*BRCh-6>4`XG$c5uCyoZ^&=Mil!G9UIAhV210{*ogPa z<_ulE$n{EsjmoYQX>~GIQ?S9S^B3eA*K^=Ujpy^#gHDT824b0+bTt@WA+-;(Z(YF8Yn<3PLnPBvE+-bi(`f78uzo%W#*Ydw=wVDK%xV4=BC zRKAJ0>u_SYD3P;72Q?!yq(Vvb2El1M`ZpaH(CzPxiym((NFkzqr!XRRogo2q_n^XF zbfM-xWD`c>^BavgG zlN7EGS?>8`lhe)sxnQBkVP-&OKBs{ggrF7jUOo4K{3pl5{dndh#94d+mWKzksMUBA zCDKdFgb~#x<~7fdRxMH z0^`EZX!TxApXeKtvN+V)Om=fz#%9c@1Mt96_I z^6J}!`Ait+6HS|^uf9#V_k=bdc}Z=e2jq~f>gRkonfG8QBLM2EGIE;e&NIRJWYbru z;BX#Jg0m=^j^s~(IJ9NLOfEiJL;OWR2ZA@D&BtC+n@F2!n-K~xsZBVpK|D-x9O6RR z1me&C%4C>aEyNMMuAvgm7p* z!igD3MkFwsvH3RXP_=l+OPLK`&v^seH1Lm6$H>F;TRS$T54;1yOHc7s*5K1K4Z&}6d*r4uO#ZtY!Ka4@&#@1x#o?clT7X`F zvNnn)`BBmSisQE;V~^;y;jikY15&3*!BPE)RUKZg>V0Wdk#DO0l?8qDCscj6J>iVA zdVTa~lU_xosrnc8!u(ZL6)~pjFI&}gt|G&l>*MxB>q)Oq=|`9=^(2G(ThG{A0V3&J z5-ZigS$pB?rX})9)rYL=;Hsu2DoWK4TGif!sv)*!0x(4^srsY4R{iHbo}E>x*Fa?V z)e>E#gXav1<|d47^Cfm55=aM6SqGCQ-@@Og^;*PVQ97z_?>e?t)yLARB4|{-*Q)NB zFs)YAGf7n{4u41cXQa(sC)CNv0l4w*r~ml44(xmp6K$sHKmVjy3A|oFk`yL$4|3>g~V&tD}ERpwACm4g|5K+`;>j zua162+$$a@r{hbSoRHQKN#+inWCHhMNUR-fa;D@daDatGiK6C)&Ar%PD~O4Kw{Gfr zTD!rm1V{wg%WzZASc{Wy>glpU2DALJi%b2Rg4PDV)NS_hm1%3^EZykC!oHUFHoveq zT-vj|*R;4l{B4`^TD3aLWTwumPsNgJDZxaMR}aOK>nI@zIIn&zmK>ynfVaH*;^U#6 z8!6G<=GCWT$=6YWuO_cP981dx3bD2j8@;PtJRk=0fi;`Dzuv*G?hi|=Fjpj!p3J---}>e85!T^~jA!F|mM_rWK1 z7iQIw6z^SG21PPl)Ll(AcyFERO>*8G#coQU-*akp*u&^Rj}Z=J>zVpKg0T?d}9o=C^Q~V;y%N8Rto`w zx67gi1e22O(K9;I@$~EFyOxJ>BJ3xx2nY55z`||0e$z)}E0_&F)d_3mfV%XG0lctg zHSngVv*{iGON+W}goz88lM8`o(-!zCv}J}IQgsM%0vl8`vIq3yp#OjN-UYy}s=WK& zXYX^)T+U2#0tkTw*)s$QnEO2eF+1FhTtWdA(V9#$C&^4EGs#>6X%PlUk$T0JTHB(f zEpMTU75m!iTd~Ggt!=GRi(*?^XsilwZtGcV&(Jq_-a+L?h{2JXoebGdZS4Q%O9dS1CbHw0P&(j_t#iY|Bj<*){9>PW zWP3O#HVO)$l5e3oNj6liSs`fM$P29z=zX22Z%Z6Lbx`Qr{-inEmY;2f+a3RAzv(cRht8M?RHu~n7Fxpp%Hml=c$P!_WgW^~xEvC-01qyZi25Y)ZMo7_6M<5zh@0mBth#VMXwjD0^z8~eO)tOPrtR&{ z)4;b4x(yQg7ONp0O-%SaW@O4&i)BOd5@&%f^92t-VW_~b#1F;+IBnu%9a*XoW)SRb z{ASR?6Xu2?gry#Ktk`f|EQaeUMSN0QM|Q=aXglLe8i*pW@0PSa!FRu364~GE8UK8` zzRJT{i zn>M^IH`i2duBmJ_+4=ru)r6Yb!GX}O9yi~BNUM#x*&qcVHyc=zv|2jET;A?1Y+g|t zDlSJ~k2Bl5#z%o#v$;4v+N&9F>xLa}#*kt12ne5ifRpwkC4zot$7bTwX_%t&cIr|tf1Y&WUdLw4s3)0*6K?Nn?OcH_qh zLMkvIgNY^H!aMY)^FY zu+_j$2|Kqs--yEroi+@)0yATXumGF?9xG{wv}lKwv}0zhD8Qv7#EdXH;6`x*<{Ly< z>jO(BwIC3LIbTXefzl^c6}%-GV-hLWtWN`l5x`($BjE^F6;;O)-K?PJgf^N2V`zuO z`lDWS*tj{mD>zzEGu?)qRYUMP#m%&W+VBJoZxNalS1|;e2`0d zCcmr}@_F2wkOwb2wMqsea^RtADXyD#7Wr5Yc{wQSi0{AH>@`y?*hjED8K0&Wml9+r zILezvy=^i>klSgSH$%{LX;UA!OQ)JaQpD1-eeXEsgUnH74el?hv^HDKKWFsWhcnWm zFN2n*Vw>@5gkpf|3}Xpgn)K3ERoXG?Qj9DCnv%k#zM$D*=Dbif{m^Q9hg0iaUmQ@q zgeY+Cd^2Erhj9?#^GLFDr34yh&jXxQNe{70TQJ7)OCU^CpoIBY&BQyzY@yYofrg|E(&o{ggv3E5{ z+gk*jDJ&_rrJqF%nOH}tT@yIxe^_n5B%@(`3U(#aK{-?Vc2>DwT|~ymqpPtM+OQqVG7r0Bv&;j(xc!kF zzsOEV+xFO}odaoebzaN1J#q$!oN3OpTA!vbOB-#s$#kiIOCV5)fdz4BG9(O#!%5}H zEWV*}y5UDB_ZQu3IxY&6;LXpi91+@gCA_X~UJ7fvG??{DV}qMvqEL&S#Kmc5;^y`# z4l_qch!2e!VPU5ldv5*dV*veWkWpo?&`6-FajP3+Pr6DZF3 ztdV_$yteLC(FD~Sdt2WdSjUZp(%5s%%mTuuWB5LD5xqC*l}G{YmnW4w0`~I zta+UC*j6gHdVus?h$KBqX1iion~=Yl4cMk(GozVrZXTB#^B85wk64*iK=BZUweG*6 zx@TTarI2H$AwTm{&%QMqT;G_<%O7WB|6nNbt(hME<81B8d~0@K(vP#XZ{%CE^BjJh zt^H%ZHPQF8AgyOlB;U@r)=+$HexxWAnjYxAVjj|aHStaFRrq|Vu7?xB%o8f9>Ah?W z<|(J9ccb@~%#HD5?aOzqFV7wa%bwe8ZY@TiXYc1!xz5cv7~8Y8`sigl63Q6k5t(cU z^n~;Jm{=f)H|>~5A!E{fX{Pj?z)Q{R;3woWog%I+UkE!TKgQi*RLwH!!ZI=LpU*<{ zI!Fk%$P_ZDQ%SJyx-m|SSBT~EF`l&K#3hzv5SLO68=Mzeg-Tuub_x05q|#kYs&R}V zeA}E}C|!A3*viO*oHY(!*E8YlULb}g_{yu@N{O$GN{N5P>>v=x+n3TIf^1hpPK!m7 zn%0D*Q1?(2zws|0`rl<#nu=CxfSNUe>ix1yE7#_9%b7Ae(9HjP)6gEA>s zr&fP_b7+=-qxsNO_0y;btyRlyF6^{ajpFbFtNOEX%kj?b%^C@YbAA*$@;$-&lM$U$ z^E-UCOd2e(9Cjqub*dW?<|7|3p!uh&#;&agf!KB2c$0m^1Z+FKk@ru^Cxpi0&?yJ;gSwlz!w6ywO@ zmg>T1HzMirqJ&RLA(gHeWq;}P`1#yE{x|lPZ@lp^mw~KueL^q8$-xg+6PEODOk_{O zmW14F9#fFVGF{8SMz&L*QbQkP#l;-_E~^%}vQrqP@a3&G`hqpYM>UzqDIfG=PD1~W z{gs*vUjUu_3QsI6K4fphH#3>G_PI9TZpQ#GJO^JfPd z&c>#<_|~nLhc?Y`X%Q-uH@!SK6M{N?(WggHXUO@i5LB^JQxF70o(@6Xp^ayXqNzQe zr7EUF9Up+726YP02SJ<*H3J3B2_QW!1sxZ1J}U$rZ>6RnNT0EphJsGi>*qy5C#i-h z6!ao%F72F(Ph5IJ&~Y;&=wx5?=_!b*Z)CdZSs`eim70Pe?Jt@JL8pc`o;wA-SXDql z9j%k^G$qK>pPPJT%-#}=5<|M3wJw?bp2=m0^K8spnFW|*vah#$PcNU=mbF_-XGu{m zn^QM?NIW^~$&TcCo%tbHN)x{;kr|FF)+)Kit$nePPdDm7>~ z63H)aN^Zj-@4&gzmd+yl0oj3D82sEZE$EYZ&>c2g|4qB`CePxybp$Nvm7g6{P_^9S z>I%p8c~Bd@G$GG=^%fSJB~+}(#qn%eo$GeU4T0v-flJk@g$R@%Z^F#g&H^ip7eHv~ zlzRl*7IuEIniHA;oVJ-Tr#30>f%j0w5NC%C zclGrz$m5}=H#C$zHs#F&R!=CUdX6;Z5t&Uk<+0IgdLwaucmBcLK$m8OeAyPGq8g__{;FTl~O(* zQ0j^0xzm|^bV&k$@L#VeUqs{d2CVYwt>1rr38IK)#>EA)X2YWcRO7)=bAq9sIR`IAiaLB5Z@oFd@c~Tc&!(E z(HrBn{z0oqP!BgL!h_KPb zwYiVm21Y|5k^0DhXr)0MNimxz(6Bx|N?klHnzoU9d?V^`t^v^?2&7Ed=68R{7-wI0 zldz~c7pC6SO_bnLR%s6$L(BsCA?Jr6gt@3sZf1f3vpuJ4=#fT4>YpLXHJOLj)=+?# z?JvH7dQ82Jr-+LPou6uSprzhkU$ek9HZxrtO|!D7`Sit`@A|t>e)_3z-gi^W?D{Ve zs{TdM7z7~K)e9M_&eU5)y&2s5$zS^9r0UKXobTH`szD?lkEL)6Vl5#nRL*v6%u4|G zv3L!t`%EU&wXrN7vTDxQ);0}HJ*&v7zJfkqU4#W>Pl%;tFNH${Z3KbSl9)a5Ei&aY z9OoDeg+4EAaUOH!dvRkXvxF5pr$)Td{RfmT%ED$;mmaHxqA(G(!bBR&eckpHA|&L8 z)YqZ~CcZ-CtH*%cLQIY7U#MkE^Wv4MVm>W8j886=$IO+du}K9WHnld}o*FJqL6Y-q z&$8rP0E%3i1zQ!%fn3k!-Qz8l$USaBOdfQ)fSb{lqmw-*k<=5g_!;Yqtw~E&@IBDX zB=OK8p%^`bob*uoKz%C_h#zmL5jc}P-hp1Vh#|+cX?{2UvD0ZZ$$5p_L0-@BDlOQZ zbOk(&4~r@+U-b`c!I_~#ZE%B{7An`&1I_W6I#(d9HFPf8lg4uRGG=Um%5@Id%_Gb) zK~&i28QIh`dh=gmD^6em^7}e5P@hJCEqU75t)fSX5s+Y#QzPmGQ$SZ^x5|Ih?NQ&B zkdFOKjyFO!vS%_5nXUe-5w4tt5=v3^VLe;iNh6slP@Oa)N)Td*U{Q)Inehn#cL#~q zZ}(*1Kl;;y*>(G~H!8wD*Al83tK*sqm&{8Gd(!AKsH~95{|V97Yv9u*X>`fFP+@OA zZ7{oG(1GbbP?c0~HrOI{kh+L<0z?HPM`6C>;HQ;6`+ZJkU#M9FU;Vb>AXXktyFCJq zpgCDN@gDogQdIq(@(5NK*Y_>IW=7-gOL`~nqFLKx`J6K4X9jkJucN@7wb+}(3lRl! zDquEMf2f+Iv~ln12d0#dS4EA-YP~txQ-$hLD?_WUjZ@O7@;fhytBsFe!O#nNh7P{J ztDreQuJj#D$g+6m<4TzZ9_!;8Gp-COAZtK7AK29!?Kwc~H1!n5_hjcO1e5`C<6$E$hevk!-PGBTkSu~$j|dmz zE<&EB*!)6cQT0|4iAOvx>sRy#+ ze(__yjxL_3gn9U7D%HzHv zi$ji5JoPCm=F5V}Fr75UStXV2Ka{8zt3PnrURoy~2=kH*)Xj86jO)B&t_OP>eS z89j8lJvVObH{lQ{(N7OSNn!Z#N~Z1Oz3sMpj8D|J6MLyBjF|3Z#5FU0@t%P~hB!NH z6kxLkJwsPnM~*Ifi;9ZoS)+<@aH9$xv~f&oeBFLe3XH43IV8{wvgYyiXD zXdoANne{;7=ebGIKyGaP2+c7Bc&*2K%Z>TrSO3_~mYW~=*C2oC&M;56sm108eo$VD zZ-Q7GJ)v}sV+1+$>7&OfzV&*QWktI(2UR6evTjtUOM{~gLCQ}(p-LJv-g1nYNIa{X zT={<+hyi?C-Q-Zrz@)UPrH~n)0J)}rAQK?0y23H7?g4GdT5w89_01xAbA#xB5OH>* z>l^5fpj4X1TiBQ@28Zl7-#gDYCByXAItpdQQ-~1nb)5_}OGL(&o7;eY5w{}?%j?*v zXIH=m)^XVo6zFK~A>l%AioGl%(73&DX%8Eo;0IKRsJU)&f`{@T81axe7=Z^6fL^C})`5u?+B~&UZTzcuDqmA#yvFL0_Tc-c5K?Kg zzKay?F{xmkhX>RNr?+EIHXuih@ED{9VFO+*Zr=meh2aKu3~rv++wS!(f{2L3clw&w zqIhlrhT_fdi#z9Ut9^BK* zZZ(@C>Fg9=5;L~w=LVlZabVM0y@Rw?7Xln4P8rukTBXwNv}?~GW*fB1l$pdC^>q<} z^~xwSi_VJOpv_4;HL-YpOj&g5T4y@Pw(e<5w6KUr{Vl|AMS0uF$##01Fyy!# z9l}J6-;%hNnw<2QGJ(p-C|dCTMF>+k&mIzr8Ub=!x$0A1-vDIOW0d0b4F%|%w9c_s zCV0G2l;iXbVigbxy@~Ntk%ui103w36&ir5!)a007T_gc!T{3B6KyoO3HpfLFJQI;D zT-Han&ZwlC`Oz-d$4G(FfDVDde>_Sk%Y9I-VCF`C7&C)=?BFCCF|tURz+l@8WIYK9 z|0cwAm(*dNoQ2WmkrX*?4*sk}9}a`E>IHGT#2)Rbk7Z-<*t_8|nsciLXS7 ztvu9(88tm2k~1AXH#&7D(g3eKSp93Ej;yW&p6@G%WA?5C?p~NSl{eP`$fYR5u}+(D zoi<}fo6VU`r<5KOwBl)~G#>Bu%WmN;LL$>+H&+3Z&Y0hkKDf^I1eY82Vy(RT4F7NDG0QXg}vPxw@y+1`@+b(i|2PxYDYEvZLb>Qg?|XSTPbe&3}Y`bF14pV{6vQYU?? zUDw2KZGODnKiYLod}s6H9sbd-YvQ|_AK&dC?Ybtur}^=2|7cgv%xr$V&p+CAP5j~J z#|QkQUDw19Ha~vUKiZY?^^b>jWqg}c?Jd~&tV?~kIkUYb^&yw~s898o?JcQaajB2{ zRG-=2lKPlSeZr^u%=VVlue;PIeX7rFZ%IAkQlIjvKC`_g_4_XMklX`}%=VVYNxf!3 zeX7rFZ%Mt~rQYdNeP(-0>K!iiE}!Z%+gnoK?NaaYsXnv4CG~EXdcRNgne8p9_qo&$ z`&6IV-je!&OMTF%`povWk@``kdVPR%R=qxuQ+S9JZ0G}MnK@0QF0bVG>U3;fjN9{b zSR9%NW+XeV`79HfNZ{6RAXA8vRo;NYeI5IhWvDz2z;w2sdH+H0^EfF{elS# z)a|+_K20hQmpD>_+6!K&#ZFa)vp;FVm6j#<&56Ow;1iTvzo%eb`jPVCEC|B+Vl9!N z8{j?2IKU(Zc+@N>O1MRQnLfkn(F5X0ssr~U^#K+Rzqd)d#(~2KQ=>BnqCMUYurnuu z+htk_U#v@bJ9LBXOin)N5Q-@hK53Hh@kU_#j(Q`LH3urv#8eDm^6H3`2YWKXNsl!` zb@NHtTz^>z&G+4jQLURP_Y|$c<#t*F%?E*>$E>hYH?is#8xGOft3PgF4BUXHIIjt5 zeTD(;MS6QpD7MZ7JV}l|4W5LWV9+(gRv+k!4HRowrmrf$>8o0tLaUYK$7N zN}-UT2$*5$6#?|bx*||us}+<4Ch%wK(j}POMIER-5*JEPHM^;Mtp0c-w0p>`Ie$dW z3FaZ=fN`yt^d|EhQoOw^HKY17$_}1!2ml}L1a<)3TYo~?EK!eUTShAvg04Ovs=)Sk4J7J!vLKXzG+^)k)EtdbGi^Vd*=K{&sM z0gj~ae5s5wt7zr6q|nW(mHPdd6jymG7}A^~3-fU1sXRL|KS2+fN@Zr8w6F)y6U#0O zhn~l3rwZ?~!h!1B9e*Wn-RDqd=Z7=R+kyaP8!2&uj;Hjrdm+cM7GAt|=FDw;&Gq-V z5WP_*`;ygKf)sT^OJ_>FcGuvZL7eFZ79BL!nVS2ttxLV3`IJ3Y9(J+88VxsC!vw!5fF>4`>D?eA!K~GUwW`kma zdHMg#NiPehmy`{cr<0E+ z7iL#u&gGVk2b&h2#VqQx5$?(os3yTB^K{M%4cKsS?qW?OSe@mTmI{6rkYnFLkUN7y)`gG+iC97P(__@ zkc^I*=!M;>V}=4c#;swp2YhRUJok*lNXfAi7DwPfUeN<PWQ_NXQ>cDCViDid*IuLCk6SRh{jQo z3)Mfct=TMLbNt$f6*;sW0-BTkxR{zwnLlhDPB2af=TDe0LH^j_ff zbwW)^u7`AolRe~be_Un4oTFwhdBT)w6mv1m`XZexTj!l*X9iXV5s=@0l{L94fBXVWX_ksE-~**;M`aRvaq+g3&o$@Q+)}|t11vw z&OIlps)GpC;~@5e?_Dl>_>y` zqB+g@G&YeYh%@vLmE*s94x-CEA4y&GnbmU&6`I{txiF$5b-rV9%&|9Fs_zhyi$NCL z1P?KBlAGdBw;Uq<6rL(K#|=5r2#eJSi<0ga&$Dd+ZCcB#epcf{KaI@pR$@;AMI+Dc z0f5*Kq=NT_G-;vspttwfTLS@aywy$aTww#*LSN_5(qsfuq&>N=&{@SU`LoT^xE^Oa zy8;vDxp6#{i7;&4G!7>{-KWTGCl+A%pR+ja|0OI%mDe@}WEU2ANm>0x$N;{+ZryinQv^#o_w6BLK^X(}MQ9cDmMgbiG zV1hf1&q_Fw$}nhk;eS#NpUzo{ehW!Lttf*9x9J{!zc#_IW1nGZ9CpPv%K8EIAm^-P zt`@NsKy4lZbA@D2xxvt6fjlI}>k{{~g~n(+9m1%ediftFW_{6UPm3_Qp96M0!lsGo zJ~qPS;AlZul9^+Gc5=q%FOe9EhqwE9BS1{IvqJs}7xYx$Ucn?6JN>@on93oo zqgRO6X0d`m5CA%m5-*lW6MqLjJxy}s1hlEcvZz6g_Y%b98H92eKaj7B^uQFP63|n8 zgkG=Wxx`lpHJ;j)4E^BmI>9H_+u;~7YvU$5Xe|Jp*?VZM#uccu`hVPP)ah)e+vJu; z94~P5oWYUgfB^^YP<=xAPhtKRBmQwml?-Y>6qW7SUzx3uD2!|Q0h4qTjn8hd|(g%o_5hZ>d4wmDTI+_*YB@@Iq+Z1V)j)Xs3#O$wNkE&*^RhQwE@UI+4-@R ziZ4b?MdeKHT^f;ph0#n-YNHd(CI4P;Dlb+(45b;8o!aV>D<`_VrVFT)3(~Kg4oSO} z6$8rZYt7SUMF%VHy2q}JmwMjr9A%btLK+ZI>oSbLruk9W+ zT|_rFZVyym!mN^}?CMf*qYXD!2$%!tOUwxM$fH`lt*n5DSMc(3!AhM80Q9w4`KZQy;Quv$E0&`n(_7Frg)dBbNAoYedU&B(=8AxUBLzevBpc(Gn!#^pl=nU5jho-jgFK>(e8sy z;v?0sC<_{ernx$ZWsRh+$W`@MN>WYmNIxg^-5mq&7nD|idRNoaT{l}ANSfn14J5y$ z9ANCbIlk1GYhohqKd5rbHYa%jYzLA%Q?{|+>6vUELQw?);AEN&P$gu(T&V>4s&0efYL1lBf8|OPsADcmH?3)CGOd~vj~iK{SjhV1qWju0c97nb9Ja`nH^&~&Y`D6)g-8NbPW~ldbP@RpTF+**KPiKjlW*uudlFcdC>pS z4iW$CJK<~4)YaR8XyMHTydcU{SZtHQ(-s;eOj#w^yUluu ziC0o_tug9lrV|*oo{8gz-XJni|JovdutkCuZ5vHJ} z`njtDstJDUwF9ZXjI}?C+Szxa1(*WdA!kmQ1tMlsw=hz_MHEb7{K{1O!MDEgT~W47lkGdQjgW%{#b%hMdS@q{|*H0_*w zR-H9-oeFg5??UPWo|H$>d+57DjJMX`lmnxoT9{u?q<+54=n zPYaJat6o96F4sr%xehnwn*P&-(t1)bjRWXDH)bF1Bv9dW#}AK0_2Y?g3c(c=)+`i< zfeTkC=VnE$WRooT#~agVQ8XFzk%U+B>S#f$0gIxe1^?nl{>6{Niy!hrPD6J>sUigA z#Mh9Vz(vvwsxD;@sXvZya12W>k?;0!V%{f}sB$FD=K|?t3!_Z;mL%n*Viy2S?kmkO z-9p3m#)L3f@GGBCz#wNOXB%H(Bqn9tx}By_qbndsA!KD<4sNt{l_n&#Sy?NRhZADt z(!;_Wi1Lun^2VuI z0IDg=4NY0#y+6$h@u37aj<}RmZ(W>H!bSK{06RHCTef|O1p4Uyvs7yceMJMVW1;ON zX$VUvN$a#q&XLCBs57IZQHw7Dq4sr|HSvP1U|av8;{1`)0;G`Hk<#GMj+C~uq(iO* zEq9cJ`dQNO4)^H^qXCH2DrRg--GF7FU`Jh zdFrQTh*tO&Lq{~#5n!hzH|fARoA`z5`&}oWr_Aw7g7^IpK%S+{`KZbS?0cX-@InIh z_*2gws3%pX1*i|ckU-t}9Dw>%9w@v4H|GR2dV)9GH0IJ1u(vd0lDeLd=pdc?v`Tau z5W$Yw;qQC&Bq4DDWfQL_a3`|Y3#kh!S2+kLPdV8(JD zU`9&zB>H5N8HAFkP%GPTO0ZeCOTDaxTU1wcMn(HTz4lp3(&tMR!-+NLHZd`rO}2pM zvZDOTIe~18)n=L?7ub1fqKx+VzKm0N+p}#Fk%>;~tG_aCo^VK>y-JhCkv<!OTj^hus3bIL0`}5677aXv>P&7 z)T<~;H)bWsI+%GJ9n`MJO z*qg7x!n~2K1gmYgFn!*0%Mk_64vIG-C-5+*z3eH@l8ffik6B3^6|_A`W|spW%jkgB zNDMr8(oIBzOixF|U>kfEXt@_+k%f3DZnrHp={hzps8+dCe)hI>r*k zE&6?Xb7>QN!Q_v%-eTIet?-FG^3lZXVF^!XnRuvK2!zR1zvdhWry9N6KSd3ZjZ;_k zUI(XU1MR-A>FNHar{8u@A1@U;gUyoX*4YB@!-DB-h+wsw7-;l9_w5-VOQ9y%xljx0 z%yFj4;wFq(X$c^-04d|NESix=rN=JS9@+AB|AmZ!qTCUXMR0c5$sRb=Qd>I{!&(?G z$Ptpxfu}xNhVgqRpeIHh^ub%&kZnwhfycqDHE&%2fjM`gtTZkX_prcGnFAeWr6#6v8v5^L%&epk z>Cns$d_HV(mbB?4n7Ox$IhlP&b4~&0JP8RL=$aMeYT>JNA|gA)LudWi=_$FYt>>X? zf+EI&f^RM0uxYB6C##mVwL%Xlv-&hmDjMrfLp+7)CK>$*P(eUHhNHtfTaJ*|y=4nq zrw=H~wwC0+!6)pchH5lXYRece9Ji{He;}EZ$dAWbTd=hi(Y3w3xjDcpZX&AoV*b;?PSrTS=T)Wjw@%*NApPXx|jmXddz#fbH> zEPF%%@R5xoAK944X+}B_R$SQ__v}lcUEn()Ov8~$nPh53+06>?1qFrdp?^O-3G;GQ zk_gfXOZ{6RiH7Np4g53>ul;ehDGa#y|bd=RWw(um2+_ zp(XYWhHP06DpMn{F<=}zD9l>e9zNz=NXq3nJmjxMJ(Lh*k4hsc*te0&+HL(L&$@nF zR|2fQp{or%?2xFKLe|R*x&V;2mpD6;2WA)%9>8`|6u@^Lt74Q%2_oN0Qxt ztKKfmp0exRady{jdhx;7WdmlxTgbk7>pC1d-2CY1(P)46-Xon-ehb-S_W0PJ`^P_i z=fq%UA2xu1{(+gg-<6uYgZsyJ`G-j!-ZSnWesu9*_GkB8Ee9?29izJ$=XAniz>jmc znmsM{onriBOeDC}(kQEp_Y{~7ah5X5sT*a<3r06Vf01X1(I3z5e+L~Ef29QRX6BvZ zqJTu97ih@No+xumaX^q}Hz1p2@F{+x#@T7=OH8da`9~$S$U@anW45djMA2W&+F(O_RitC+S}kOk9)yeMEQ^m5+~ zinxz@3u%WDTH3)!;nQwD6Vye2`DQ6Xjj2Vp?o{8e<)R}-=x!%++$zQKD9pGcu&Il( z(3hk<`+d}7Fx19$omwkj&Y-?HxF=LMPvMi4Xee^8ureWDWNReUt4@P%;zs$Fkq9F# z34S}~d+tPUxAVDox?|9^+ zH(i-;{<|++^Ach-+GWraLU2OPVHE=~y$en%>%a9j6()?56jtbcuY_<4Ju>hXT0Q2l zwR7l&hzFkz5l-Q3kV{fI*ciTs{u>4gfKA(VDy*i7q3{_lUor?9uAuw&XhiC|ZlS{A z=>=DxD%D+}wQFWDbio@`3yPfe9cPEa6s{wP4Z0#}*~1EUHB_N(`?bHh){JjA$5#k^ z$w!KK8g9jc;Aa903;a_L2j!KSkh%3+&R?>?LsYIj0)V`MfT;5Gg+@PfOc@ShbCdb4 zx!DvS$y~?V$qI{@3G?9J9Fg+mPC+kak2{pW!2->!qKXnWj~t%5a}y-bro?^%ihfus zblBpsEz#MiKm{5h*#^wg9{Vt|$uUjWV)j;JQ)X|4Nlk)zbL20IgZ=1ax+G+74HH(* zUW^D1fUk)oWB1DwC3{OT1*Q|2Re>{!|JqPwBII)?B9)K)NomPYF+mi^UZJsY?>;(% z@h?pWuI;lRpyZf^{kxY1mD5WW^$@S_WgK4e?RRO@Ry+wWIRK6CPq>#@Pp&u)&r()$ zFZouxd&!0Z*4y06a@KiqcgYMR>ryWoiyV&D15~a~v7`!$TUyE9eCK@+MPu2~AO7IF z!Tt2e_Eq(EDzURUaWtE}`IbZ1oAC$n_42hFTzRGjx9Ox_P?fiZv|*WPq0j8<&@SRE z6sv$f(u~JKii%@+97LmaS~Yr;eblwnc_lz{S*Om4P1#p=n89usllUclx zMEWPKnTu9Vv490xSUJVo(qj)ZIF*c2)7m=4Tj7OYXl6rWN)jAUTEP68q+?Ddp%}Xv zX)6&nKS`_pzJri2ViT|}UCMNMZY=b~)>?becb$fBw65vYD^1qaE90@*uXt(iWn`n5 z?sR1F;p~?!Pa!a-d>$lBic+ACn-4v@xbh2A)IKl$4Pn4%ku|`=t~|iAk5RfO@M$30 znF55~I2{n}wxI+5sz6DL(*9VBn}?@ns^-P$%Rf`s-qZqBqigc7)%70V=_#dcXq~wt zQ&WK8pc0e_MbqJuCLIosh`i=bhht)!Q!y=j9gZt!p6aoR#|qM1>~uKp=)H6}JYUk` z&>*G5X`#dEaBy&GXSrTLWRPG(JL4g*ok8Q!#D<7z25(f{yquhea|+s_giRey+PEJU zdRGK7d2O6$_n#XN?YSUMOXET1sNZJpgj>SbuO zjG@z;tlnpWbqo8T1&?*ET6E!31^K+MV;vYg)rPAowT zIYpVR22JA-J|N1$Z<@VnR9VZ+r>BM72ngHEgSpv@k-C^{#Cab`b7;Z1jZKAM~< z!}ZE=_|VH{%y2*%Cjan}rIYt&k4O8aX=B`SeD;HPpD|;WQOk1oo&V!)r;v)$Dg_&+;OEK zhWji#IRkIQ#{xD{kRlM5GZ0A58GyyQrIn#QwmQa`W;d!x%UD&68<*|{ zqIZ1WWSBxi`DU-V0GZpY>?MPU?REnT@PUpGXR$=D}6PH&$ z=Q8=EWgJB8-eCfxRwqnjl=w$AQ!9T_OxOv+d^_D_b9M)A@}ig1#q3Ouiz^sL3!5e< z)2oe9E)#7u1l(!Tij@B8b2z4uSv^lxOWr#+X)Y&!3Dg?DjD%bVic4mm9$+I0Nwyj*@9?e8y6_Rs@)kF@8H z(GU-L?17K`>PPPSZnWv9(ABdNmV0g>&)4V`Dt&>&Hid1NAw>>dVQ3^xrYm7o3qf)= zH0Za1Qs4xkT~w#`OKP797a%}A)nH85Dk;;nN)5iO8^3?l(uHsJrber2bT6L+-w@RR z08{C$uw$89witu*=sP1=d)o%HGf{v2LIr!OA)7%@G;!rnJ040$G}1d>nrZ#nNnD&% zc5FX^4uliB;0g2QA>SoP3)y1y5?9vgNs*lbYHv_VoT{AoD1ow5fQV1doD7Ei6-@1O zH=+b&HrYpT5=9AgD!1Mws7-019vA>{jVJ+mOLHl?C;^HnN&pY1cuA+}-5qqaxi(r* zePrv+~Ja7NuPdC#*&g>68;q&!UZ7+!^_1d!Q*B<}A}q$Twga%2GT)rWbJ(u$HMwm+)2BJt*g zC{-bKP31}$4ww!Y zTkZy;Vti>I(n%bVguqHeK_PpJ{On`1#r_-$7(YWn+cYScKFy(E+BBhHx`aFm0KOp7 zDhLe_ixGE`-g4v|l3Sq7T#ca-@>Ctroz)>0dJN>b!)rwh5@y0rZ1_@?x*?Z7J_fqZVX|Bz(LDb^c^uRo>X?x}Mh!=qcLL@jp zg|n7s-O7SupzHc$2n?05wsWrR{8_pt$q#2p8d<}lL&b$O&JapH!xB$W|ESM&F=6>x z$vC)ym6=|+G2>BYnG*Yns;Y#ibbnSlz(-2W@oSx#>h#q_!ZnUcoyPKAky%_;{%Pkg z{tfSwdd5ZH+g_L*jAne>iIe%lzMDw&pDm)j^u{gH;u@{?wuPX)$PJot8>1rtlCs4* z0vt!&*ff2pptGmT@^(TpOjnCf@04cNN!7SYdb;J==yc)VJ#5a`PNmsUM6A6^Q94^u z>9am~GwV_^rW$S55~+TVJkx=)Q8U##xDq5i)c|9$ zcaC)kRtw(ap4kj0=gTo1mSgs;VzF4zlE5s(`|K!3ODXxPcwN=OI@#tJnsG5U7mP5=J64;UqxVL(qU_ zRYkMP9Y!GpHM6WJlC`i)WrLg(@@o?}6jHVpMA}gg__LtPOq9(B{K_s?7UB&Qk{E@+ zW3+5+6izlkQIJFEx+t7jtZCpE?0z!N47+tPKN&rQHW_o!+hp`T^OMm)w#n!Kc9Zeg zpc*Y(q^U+S^udLQ)JY|&+)_>yJ!Z%6xHFd+#e+C)CHYv9$Lr@5enlN>+1-zXEOS35 z@Gp%&zU#T;8F6p^ASgEA%4}yzZx0HKZ4o9;k%eI)kRo=bIb&_ASZ>Wbfrw~cRs0RW}8>4;20&?V8w z2O#%n!xwiGmLXVm0ajBKI&JTHn~#|c1L1m9EY8|kB?cW*KnpyE2%p%+^u*bH zBFhleq;=_qV1}ZsOnbF65(%*BC)5uxR;A<4G?TAfiewrqhDx6^c+zcdbrDn3SFWm; z1=-%0(c%xR}kp zggGuOBW{_^+0CYCB|H(c@jFu5m@If8a~l(Ag}hmW_aSUd0DfM1;paLK7L{BF-ak_Z zB&48$=e3Oj@CC5jNTJE1&ddmY62Nclt7rlLwz#O(X8juS*{kzLl2}``0U?5z`f7xw zSj@?*;BAFCl7?d2R5i7ol_poWbLVQB6ve@1+wl^*&aTjr3!U1-*#H zJ|X0WUPAn?9@RiRE%vIt9cdfbBS!h^UQWKT2i8rlMuc`;JJ0Hvic^;TIB8RrgWb~8 zVK)S5R=)n6wjwq01-}&u+Iaz(0PqJEFm*H1G;`jx>lvC}%kZ>pf;tBKdDbmM$}JqK z<*}I^{d1fsf+PvrHUcIX=VyB3+(J2+F{z?OQ2BTd9VS@^^CcH5qIeG$Ub!gHfhhS9 zA;7BIln4=m5p;UejH~)`Y-%&34_85XFZJNS^!_XY7RrPSXdTaip%s5ZBJ>_*rrvUS z<_6&F%n2eS#S@zIc{%mInV_9PDm|M$cH%}aq)_^9A(23;6LFIo0H1>cOctOY z>!G9SM8og=*B0cf9ZJsZO72C{FhNBdgcd3yMDT8^x_AIln#+iPSnKoI-T29&q~ZbF z&=^6BG?i?cjIV}llTGcnqfBTIv8*%3NScPOPMbKUIJQxmS(W(C3)XFT(lhGyS~2+W(=iSHu%4Wc8I4Xp=71&{4`3v_O`8-mH3eoK(#C@7 zr-d1hIGvm#Q|6tPO?V~SU3zfY41q=YZ-mKQFf=M1RWQH~vC#`23Z2J|M_C2;76gU6 z>rIE~LgVrF=EvLYakx;vk?aX^n@5k%z7>tD5N^viqI&5$y}h^nMl`ZScbNV+qL^(; zZzGz^v@M){?KhIK08ZM7-F3u?Ym#_NqY+`t~Q$|qw^b98iO77tWr zW-f{_tOwr+BF}xG&*%zf#@4w6j;KgxXd1CBgBVt4K9977@PW}04vQp24`4AC*JffZ zDAcmIgF00edI1Nmr9ASTx@<0sM%zgtVu%D(wL=0%~HbF#yJ}r zw7U2r_D5*@sy=XJjMi#rZ$eK2SV0+Orq2zmoF-tcYaP)13vx9HMReSHDicIK^)^Lw zPwhO^+c_}jg9r~9hn#&k5)$2s6C3JQ@K{SmbrFw-E!px7hbvbRhQfK z!VBD^f9NOAZ1Rlxykny~`fFq3W3~Mgwc#B#z`NSDx_xM5#~wj2Hr}^)AAs!}85kbl zp@wUt`}#)54{i-FM@IW=qX%lEV*?|@J4Wczj&bhj&%Tk-aW0KYH>uLm+JOOO-CY~l zwR@c24v$Y+qia-7kD@IjScL$vNpDFWO%IB z#}Eu`pBS%=)eZpS80lBmcGLzA)IyFZDp5{<1%73IZTtkEV9loqCXJQa5nQwQX*{a@ z=J3nsJ&xz|!Fqpfcx10pL7!n3z8^qC-4olFo#6vgP@*mgieqo=<6c{ukfg1p{MlKp-L}({*&I zf3)wqt^Kv3+O9rGXzOV0y1vo=1ARjS%%hRfvD*07dM=M1>Y7NZ(Ft6y;(9XI?R~?0 zc1(d!UAt5GVijUU`s+d45iMCB8;f$cklyj>#)gwT;OprM|-sISQN zZmyz*-{dNK_yAXp`~Tu9+W0)zgzH~$RsJve=Zi-UP|<;r@!G!8k$od$%!Yw}($6ls ze4Bui4BID0Ax13v8_V`dk4m^tnC{*xCI6#W;U^7 z2duU>Iyy4iH*{U!!LgA&l=+yi>jAEss~7IwH-1o8aR$*w7MR7J+Q9~Uh>mB53#Q}w zY3w!LqP-XKJCWZ>{DM5l^H|STqq(FDW|b4IYM#yG*OxLI_6_wNOb7Pv8!{G(+!z^7 zM{DEIN3B2Y8&0hg>BKNo8s1#%A3C^n6guCrbZ2e#_T?-4*Q{H zXMv||g_UgBAf$|K*l^+Sf#&xJvWcN_QtH&|-fY-#z9(PMM~-uwi)}|bj2_&uVUu0Y zYfgN|buw{b5<7=L$5zdu4IA`^c|gT|Lw!iXFwj^xPYm0WJVE%H6Ob5Z+AV;m0CmYpyShZGcufE3nQmv==%_@!UHzwO+m1t10=K z-6PrF%>l}pI`b0~wb6sq0*J5}uNhz2iFP?PG+b$d(-IkiN5T)eTPyD}!-`;_-F?eXY zbD%av72CSHoNhjkYk~BMVX4N$_4GyQ`0m>ih6Z+kj!-M_CP|a-+1l=bzR>}60w8N?*(a#&dwkj7(VoMw}>>s8uCmG4Q&}7 zI+&VflkPE&`+qsNS(u@2?ve+ntV&G&PNc3Z~UoRM~xf<5ZM; zcinC*%DtFZBWa&w%BsO(DWA`GaV&u6^9rh6(EiTRk-e!(J~*ptbLA^sHGaO*F$6sG z&JaB|vCpiE)NDoy`>u_Fvc+B?FFwF>)!f-t(G^ z)4@OUXZEQL^GFmh8h@zlNCsk+jc5#)?m~xda859_gLlpTybiuXY?1oFp zFI(~rT#x4(bkV;BE{)TT=*!}3Lr7NQue>(T_1@!XM7z*!tw}9Un{M7dI>|Y(At-EVO`>|MOPwqwVd73Av2Ml6rA{weyllzxl}nac?tXK? zsJ9Q(-fO7;i*!We5T3u%^87bEi$90-zi&x@ye0i#TGIcuCH*@s>HpS}{!~l)(U$ZQ z&Xzp9?L6n<LV>2q4rhlNvq`pfZ;v5Dr?nc=yw7f;sg0-@z?N7)O~bT?zx9& z(LqQ*yCq%E(x*fEl9qHmFU+Mc=2?E3kYE1JeEk{E@{fe{3wV}Jn}0qo_k1zw;-ew` z8lEM;!}Cs_^ZmJ==RBU}PtCXgW}c-ph4OFbc{$IU_u^zk0~=xno62N@&a~2H5^U?z zf#H1<%h?%FUK_0W!qAskv*Nhn|j#Kcb4LcFkT^yOWYl?;Dj=ORlY@HOV*W^cy4>gtQu zMcYnx^HOq1wxRgrE?^3J!c^F|JD|q~eyT?PP+l~y@ew}>^6fnC?}W$cFQ7EoPK!=) z_EDZcznpv<{V(5l!Tl_p{bO#;##Dyr^|W&lb&8e+N&ZPyeL;K~i@tK~&^M5ijy)unx5K@F!@;kZY2+ps|f9jh;T zhl?G;!<2MJj|{Gfv05XmR7z|qIkN#~NqXrBgo8sLhhchgjRg}PT?1y3k2%{#8E7fR z(h?BY)rN*rujV1;`cMWjwf3@*GCaN{y^3o(vJ-L~r5!IA?PjOxg21Fo`Uga&l#oZA zevMyOgP!|nV0dxudSnAhDK27s1kOck-8QI}q*rQTjI7r!GTY8qIa)(E!mA)?w%3@R z1A+li@;zFTUOkesY=9eo+zOj@Ha`AdxcLR_VGZrh=eHona1=B`sVN6fw`z57CSm9bcai;5D^u}~-goPM0gz=+e z`dJr7=*Q@i_IcP!@c-vQyD}?q;q2WfnK}2=YIHI5B^^Y5^6KBf~gzhF~jJNB%{wo@=OQ9&lKm-4lEJhAEIszrnZTz06mSjM%&}Q6O60-M0^y zF_a}=1poIj9d|(`HjJ;nY{^}em+l>K(he_|91G89_-D^VU(q+V`=XK2y-ciU+(h&g zZAe!Qb-vu!iF*xnirb|tP)Okh@E{1dR;R}l-D>sBz*FZHr&S}3S*ZKG7WlWeJioy| zKMz{k3!@r62*F;7qR5=K#dW5pSP(8P_-^Wad7lF|(U5qpc(2b7y|Xqe-lXiIIO!WH zCtqbKC;6aqukyY`TMB}z!jXc28=pxxglL<>}ola z=?==v?h56{26heivEqbZ(T4UR(j^;0`fdi@Cq+j{lOE$?Vh9Z?TaC=mBh4>go`nDd z?+QWZ-(3}&bj0M}HmD2RC^(HmubHns&KGjQz<~j1X8XbPr)r}k8`9f(FIl(6>mQ&f zx|?^>DF6@}V<~VzQ_WZ#Yg(zYL?0&4NnHPoD{Rc?1&QX_MJ|k_TEj^nBVG6i`ApL6 z#A(&vkoWDquD$cU2r)w-mC8|9y{OJDys7a8Ba(K{C{mhWnTM>x!x4 zWHmIwb}8kIW7G-R=31C+(Z2$NY=Iwe6}{!hv;og>|A14v@sJRlG=}m_TtGPYl;}w@{Kc7M$u9Nxt*(cl4N8}I0>!z#{DRY zwpl+h&CM}7%6ycv(lwgq1<#N2Ub?|1Io=(?M^Eyu!aHA|8-B;YESvf-o#OPDIDT>u z`88gz16SAZdlkPc`EB8Msjj32+u;iCe}Z5B-IYA|Qecnp%kTqZi7>gYv;)9FVE!nbtP@1jy zi&xiSYc3Qa4ABHSk@Nxk#{}z=kfaG7?(tl1N6LlA+Srah_;d(_TXLa~m2hfoy@P_p zgfCq(cwH|WxzWDGRMHxrW02dIZW|w+sIh{!ZD-%mm~N#0rQ0O8w;ih$^}b%mnTyV3 zMbQeL`NlJI<%HPl8hA|?UU2@hW&bew^B3TQKI_?54_IgZWOMD({F|y@=c?cI^wq1j z4XSO+MH+3)k02JCQ8!JpAJJ(_vchH*Fm0_`z*qu@!rU2Z&?IUH{9FX)tIg|e&(>du z7SLZ?JUFI_K-?9MyH!h;d%xXMB5aI`(CZGJRgDns=G&LgCH&?5S+JUBS5_z^AGiEE z`pe~?-v4zuknBeAXIGuSd2?&0qbSt*OVlNv`(x|--Vs|-nLN81ZKa(B{AA~c=QncS zn|r>Q`$haVInM}ld8gBRU+QGTj|WahZ>a-xA?<9V{YUr-&bldY%>URv?srpGvQd9e zJ3cO3{oh>vDdYcq`aIQ-T=!i?^A|aP)z1Ni{EZXR1CQmcLg{mEJp5a}tmsF&aCrVb z?$g}!N4VE|LP*#18M){0aWDNhq(8;|(w1lGpdtN-+{?bmKlkLGkH-dE((pdN9nD);71P6=Y+D}sc6D? z?BL$*a4p2c&Ykjj(YdZAe!Z8gU_FZ~MWYLYP^?{FmzCzN?Mv4z-aa5toQGsdbOB{v zN|_+${{7vThHAk>{CSF*wZ7hF8e+g`_0mcXUiS~MW zPhW7xOU_()*4Zyzw0PO_6)RV*UbA-H`i*&$$S+lEijywK@ z7oF%zoiz94Q|8S-^~I;9Hj+pEP##?jVwA&;=+UE$>4tO8J$m$I=e^t&{O|X#LGH+t zuDr~5pb0+>?0^@SA&;Fv=ZuqmHKDpEA$&uR$BlyHpCwuANj69W(VKIYq`IcU;f?ec-|(r06N8-wayQ-C`BjX zUcS^SSLr+9Y8LRe#`C$P%cm96pN}Hq?7HPkSS(nvCfIY%RKUZB%Llb;9}6ctXz%s3 zE4}1lI(Hn`pX68czc+A|{j-fJ+Z z{IZ=Ea>uDd>)WkuSV`rhod?Jxon5w_^waQs5rcPH?)hS#6?@soPw_Lt)pmZuTc8i& zwV$6nRZ6e%+sQAVXBW@A`3>+3_#Wh5{xX(Kn%?jA&s>a#1W)KoV-t&ZjUA}%pf5Oo z`WRzYC;b8d`QN?X#R=WORsB?4i+pi?ej&q_lPyH)X*b_YZF=Y4ahi?3N8K8$S5ddx zIBRN70Q5%dS?SpBkqKhO@eQ5(GTCV9LM-QPedF6wHUUARw&~AaQrFcR9KF1Z>q$JP zTs5D1xT>vR!SN{@;35Ke<>NNrs|9&9<8qihW)^eJ<9>u^Zxvh@z|v}p&|?eT_8^~| z&!r{MvAv*QUbLMCZt7g`wn&o8H6(}p^tlGS)znWY|9Go!$CJ8q!O5mqT!t-yyG3&E z0a_CM%sGz7Jc~KH;UVy*zmHK?cnsI;?5(4->$!Jx#Dxx=dFG<@h|m8mt_kU(9yeIT zwTJ<3my>F2gY(8Ru#BrkJ;*!jGV+G`b8a=_5-s8?-lMj|TsX-6HWr3L{e9$ttSnEM zcR$7RPxHHhU#h>K?p)Nlh)ep$^o#YnH8Dwr<(_<;#{YU%q1b%H^w;uU@`p`P${{makv2Y{l{wD^{#r zv1-NY6>CD~<;s<-R<2&TX64$I>sGE`wQSY$RV!AlT(xS|>Q&m2 zwr)yq~dU%g`W%GIk@uU@@o_1e|zRPY|ZjDE7q)Bvue%iHEY(aU9)b@`nAi} zE?>K1?aH;Q)~;T=X6@Rw>(;Jcw`|?=bt~4bT(@f7>UC?@tzEZn-TL)_xSr;yrHv8Gqlw-IX(zAEqu1?QOm#>ea-vyWRz{S@Xc=3Qdj&9`nCVrFr*sBfUIuEfM zHU%zefL)5F#u(zngr1KWe(Ys#EWgdQmpZ1P+X^hT>cle^oL4peD*h~3T+P}O;99(z zbWv)kFXZ3s^Skz4-o`?*Q5%)ms&aIQI<#i@%Us1HLLIO7btpze8xHX%OpNbb>{cl2 z-g7tQTnkb3S?V~Oa$)AW0>RTR+yqIdodmAbQrXmb)qoQjzy0xbrTs5}aplR{3bv%o< zB}XO4w-b{vECC~uTBw_|oI6N_qvf7$?DL_FbdcZSDmZ_St7xvZPRR(-XlO(HWHGW!9G9QR{i=Q*jQf_zJ3TAoiAx|qYWtP27D_ROt&FX1ZvVGUR5fvs(8PO9xGxbrJS zOZTybbzI@gnpIIWPCaLE72V1A7!{IIsa%fR%I$3(b2{f&PVPFTyE?0TcCnfqciizE zCl*dB&MlmroYFS0Fh4%+#58$nvbeIOuq;^~uPEFb|5p6I;``hGBmP0@hw+b+qa7c( z{@`2Q_Up@DbIn`cddK{~oi+QCOMmdxlBF+y{ZDTFheL0B`#XQ`w?6dyAN%xY{^U>p z?(wf3jf!)QJ8Su>wHwZP+2&XN@TQMFc;ZPfKJB85FW+*_ zwXc7}jW_-7ryu^(qes5=-O;gkj8DAlB}GYLx1s=zxt;i9gWhhy|;X|c*_Ot z^NQs;H{U;N^8KaLI&PkqoZMb0E-kJqw(-sSa@(BFD`p?p_Num|IKQ(aX;0dcm?_g$ zEG3n4Vb+UEm$%JpdrezhKC%0X;`zzqq)?nwp53*fce_eR2^!M>U6~7*TBRx|5ehi@&y3Rc3yvw(|V_uX@kj zzxEsV+1VuT z;mUOzUh&FHueb{5E=0F&M{VbxvFqP>)0^*k-v=K!{LpWIaCqeB-_ZNhrKGqx*_jlU zE}6XL)MWYW`NahtFD|{bbU|^}*^}=pFDNc3E^J>_x%~W_*LIxP**^E23)d$*+B=q= zSn5gUl?ofz6)!0*Eq1nbv~5h!EOvFQNj8*DX)AWMU9oxX%I=kIOWHece#w=WFKj>i z#8X}}|Adn|E~kMDx=(KFEWe`t%#Ml5%d@k~=af3jKT$4}s!3_`E!$uGiuTUQ-+V*w zg_X{7_wgIboof~qPn!I{bzNO(TtyU~b7tn=xp)8DZj#MrH@h{)ZL&!=ZAr2*(NJqP zwZZ1cBuJHPv?*B81WbI;m%GV|D2hKQtrbgFPz0g)CIz3Y_~L{1K@ok)_C-O^fLI05 z`rVBYeUN3?J9}ro^D{H&&SB@Cb7kbrY;eMH$L~%~nAy;YiaqY8Wa-493>()f+HPea z;eAMv!=cSL&#ni&PoAHAI8^O>>DorAc4ebzcc}-gPIuhR>HQlYoL)Yuigs+wp9ANA zGu5xUoVUNL9O;oUWhyT`rykWI>DbX%%Oz)R#Jk}>VOHbg-o*pK1t;M>TPewBjz!|t zsdlg4?S0uJTNPKv+GE3-s@vYLhbEP)cr$i^`Nyx+zuiUidVgvptM_g3x;#-*0Flac{#xvphkRlUz{b*t9@8tA_b z^`d`zY1c-_OVP%e`;#!wIh4Kn0IF{@ro{s2lsD@ea)HnV5Z#uQ+}(vtB}dByt|#}_sTu#-^;z? z&&R7CPzD)ONf{V0+vOA?GX=3i5+HK9m6(e#7>Z#qDa{fQolw_k zKnJ)9<^-*Qjl6r(H5FP}BkHaOkWe3rul>m5eHc8fS~}Pn#4n#c6!Tm~4YoXAZ%P z(>fodC#7PCEcq>z0B&s`k&Wdt725k%0d-9|gvHK4NRmUiiH>sEFkg@qBHJe@`O`5$ zSF=LCNac*M9$}#fLBppQPkiv6U`^+_bzg`&O(M`M3y_WZHo6O%XGFj?)JI2v%B&%G z7aRJ~R~un76~(KPK)Ft@Yk_FKTIHmocYrVWjX=M8ng$|=Af+q&foRjH?9gQHKmf#} z4ptZ~BH;r;2U{dfyrEU1CJNh9Up2lU&Avu4PJS!mAHbJ|?Zyspr#1n!mP$9SuA^@Y+*wgG}8n|fbx_D0?;>Rnoo)#2cBhu?o`wMbuTvy z$gH$6Y^T+0QVgoYhQidODFUQe14U!T(x?*lW40)JJG<{Srm&Pc|5X;@2OmReL%9K; I+V@xg0 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

`TH`Z~Tcca^9%lv8+9g@vhGMhVuR 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

wzS%<>S&ZfUEJG;+O2s+p_aDB(5EJZ9>(mblO+ z!U=ivcZZd8Yn#YoN#1Iav5q%scYl)|}iCEUy3zoR8O_b4O(3YHJG1)#ZG;j4^ z5XQv=x9X+(QSX}MVO(B<7CQ+1Z-W3bEsr{;GdbhP>rg0*88d@Qo@I^dW& zjOH>GS44GnSIk{BkFt~oRCl%na2`+MP}6TboySwX4(94jG*3Z4y!WB9yM3X-x5JAHL$$ew19+a5#c7g-;_%urq|k z5XynfX^)@M3?Z!k(3FmQu|tTobw4OnJDX6AW4@`?+-5Wozm5yYshhp5@g(;6G^8N1$g`r>WjvzCd?YEh}Je4#Jv zPHUvlc|JW~(e#`u?2KB?NMz=?Zi{A)Fz*LLal(r`PVCA+*%dy=PO)kCc==UZNHjZ- zBv^zL9(^|N4hLMXb1cBbL~1aH8NoiZD@$!PVQviB);sO#+E+B^?AM9AK)}XZh(O_W z4MB^vlBcZWsgH#$4-T}$VlWG)TCKhyA)|3~nFBTOfX=L=&Y^j;=(Lt55Rca~`uwkSeeh;ZJQXYJyLaH@y)__K;%Z6r+G@mijvKuK@ zgl@zV6kBHWaW>ft1SpIz#bl@poOqcN;6(QbgwgUmO`1upfFX5F<3|hLAoTcIX&CL6 z8$1Fyw<2{$SWG~}I(rdk z#|B(*ubout8g+viN-dHgMR(+{4y|R)QuBBAI}g^d1s=1P>;GDxfbX`ofrFcdF2xo2`K}ng^^oQ7_%O!xA5FlYqG=-EAM_sLEldga1164w&!OVGm7S*%9%k{x=A79w8h9F*8L+&%-n?} zv?0#?CsGi4dC1j}K9NB4T|(^$ywDMNNnPwNE$pSaSBMhT6wQ~s_}MLXFXKs7d9a7> z>x>tn>c*qmzFx@FcB9Mo?o;_w0`+90{oNQ+l@?fbk@|P0iWRxlJn$LolDsC5d6!(B z`h`pCl1Ohwjf%ayb`x#--)1)3LatNhTtlW#92WN6f)7C3>7eqakFCimpEM0GJ%`p| z&sMY>NJF}hhY8Q+ekb7%s{n?E=IIkf3F+yMb4Rv$gEww9SW$FS}4G86y) z6ePT2X$bMr?pJns0zNpI(x%~fr-M>A%{D3FR`Ho$H^{e?N|~0SlZ)gvkhl@$4)u^5 z_7t+yJZvxbh>7C`dvBbd#f}c9S$_?!%Zp)JH=LVa7|Gv_8J*bR$f@R`&(ew+J; z;-RkgCjcFrx^{Jj9v^&Cb=s^J=!EX9hmOcAh0c){I#c~WS?Ji5_=H=%`zdPG=F=Vg zaK;Mbw{*3yVfMphCquC|YuHfd^Ir%zm8bh6QMfeC-0_?2`xw`y_+YM%oBy29` zN!0U~`<*Q6?A%#W$kR5FMevBIKnCzZvvs#LuQl^ht772rCM8Bsk4c)O#9utb$EKPt z@u(8p5|SfHiBDLGh2{}!gV}@HaPv7>mx^{zOMKKyEFG(aWB_e!w4vW_Ww$i9+i$Sn z@3fbD>~9#PB~}0ZI_LvWo0vQ4^8c`$qhobItecd0qc_*Q#eSi;je`_ph7uApT1|8$ z{G$P8u9>p&4M4Lx5W6gnn_1nxR^4JUi(txd-0H+i$$0JveVQVSyOh|XS&WjDxG6L{ zRpQpE5@Lg-#8GL1=9FntI+&IqKTz6R!8T^wYCz+?vEUxz0t20odoLUM4be3i4!53x-5_U?V(`qL?`4uf`?4T z9QY*uTodZuV%x@ow{23;B=@ljUcX5}6VKheDy-?<`)KIjQ{yDv<|r0~aEMhuz7F1g ziR}qaz}AF@4(jQXV_>wfkQWPDSQzRG1syHg~be4K1SS&4uORA!X-tJED6=^H=v{{}Ts^Flqksif*n2;Jg1^oz-d@ z)lV&^)vT|{H-bCm0vO3+E-qNDKI1-82CZ?MS0&)nY!K~C+CJ%BTuMW(upTPuBi(!+ zOR0LclXiBpSYKd)80fqlMK(5LC0N^6!QhY{Fc2KGXHVt@OP;pZ^DWGLn3@-xNkmq2 z2kOp_4&oXx3#T!~{M9=2N9T?+SSE*YT^}c)*7fmwGwrrRiX>i>nV*d-T3=!7%1T{C z>np5e;(rEw&Gbs9%`Jl6wy|VbJq;zNR!?uANui>W0>}WAO{kK&b)ZTX`!`Z$KcPx0 zf`+*uf_3f|Zp_zlP;(%4!Nxs^5nd)=xNOtO-(CM2l>El+V(dKlU=^0szc0GA<&D}C z`djmTZUU*y$hGQ4bXx9^))!)LI7bedtAu+2w0Dn=AW7yX=JvL$_CRIzc_USQuxJg4 zNNy3ox7hN-dtlhh)7YBA7p7X<5?hPSFI&Q5;+wIAQ}%NpRCCn3QfTX@IVtiGu$vn?isEb z>T&6&e(=a>CgufD>*b0|Hw)FXRGd>+{dh6#7$y$7+G6*0S6$kmM;qh04 zc|gXoQMD&me;N|F(E{oeWxmYgH+Xs}8C!`dI;d_i`<9}&wAZKvtbSSbjNXu^xa)+X z2-jSpB)D3HSO@^A8)3Hw{97`-{A{vaPy#}$6fkn4C5QoDD6jafFg_p5>7m_XGJ^~ zMrn4ZY~`ZDEw;vJlMxM)=YBFeh8;)LZ;r%?Vc$p8Z|?tmK()den>!!jEe4jQa7mx9 zu=$Xs_;5f+`W>lZBU`7xs@GbdQgW8qTl|y92+J1)iOoJ*I)^G{q7@sf0(m1c-u!hr0yc zj>I>aJiBk9-8Iyb1-?k$v^35n7h1(=d9MUDVWAlzdsQZbxkq>lhPde;$o-L5!^JQ)93k*>UKzwJAQuVUQcwwC< zYBOOGTocgUbLF)@v^$X?ibRjz;&qr8%mcPf{>JB?R!$_eDB8|$Oth$n?d(QfniefT z+b=YSeU1Q~H78FpI@by4t&^zOg)OpRfL=moK%5f0wVeXE8?&j33N%7u1^gIgE)m?C zCNq2Lcmv3STy_{q5^siFXme-VytTKUHfw;jlHF~HGum`wy-NuxvEI=oII-T=B|xmV z#y2C@TN%M2BUY$Ou}q>aVzeW5u~o_p*Hp3|pSq5yjjs@O8P)QIb^oKy4cDg(+*Q6&J!>B(`D!5z=Jrq6ZEW^O;_wnFlz2APK%bTvY#G5lFCUQ z_!aTvD&Br1p@ftq59r2GXopt&kE}?Yr#-D;^`>@Eo(GLyhRY+CCln#hKSTL)Rfm+5 z3Txr2jghcR!Ofo=f+k{k>|ASZ&2{G1oSR#7&D~A_b2yd|R`=>Hnp@PZp?dhJlpXq; zG!4xs95N86t=LrP&fEB%tmhK@&yr`5L7INFOce|W8m0&;QWUu%$HWt7B0T0mm7vGZ49-*l z<*>yIr+7s(c<6ZH6x4{9q44tHG+xY4XV|db*ugVM1@Bu;-^7LO=o=A9RaQziy;Lj&hiu$6kxrgz(RV(e z`?^eX^7OgfUpJvi{3C{}piQ2rAK-f7ER~p}hx$dYvmNCFpD`((rjyxTA}HcbMiH)p zf^zVPdQDP9_)J->Dp!>~bNJ#ksNOFY0X!ItS2Y72{V87%e{g$Jk;u3w=c*l*6^9$h;A&Ow z>NN)hCYi6z;^mqFs|pLv+-{fUmV8u_#eVu0Z<5r2Z|>H2kL|R|8NdrXV00H*KsA34 zLGicz4ULAVQPt-ktJkV^d5ddEAT0(W7PJ`1&~^m}ze?QGf(UEfA;k#H&CBRh zq9OAUS`FX~I_qkmsK11dLEByB-B{;)JWko5?_$|0h1cAvaa!yt4(#Trz1=H-$KX>N zm1ckPP8giej(FD!JRRB=55uzwt}q=A$Fqe&U6t8#TskdaP_3K$xAV>oV7GAcexqujN&a55}OxW|m!jF-B3oo~COY(3PBIVCy?44I7a_&J~ z-)G--A}!`Qdy-i#l?RV?Ar|wsAX>0vS)1JXLjP#ISN*#2n!YNSKubvMJd&J1Yk~Q= z!##7lwKBj7H3?xvkx5%+bN`n_QQ^eccNV3l#O>w`4C`*_XNU z5d+I-a8YK~gKZ%t0P0;^x&RaCqZR&+FGAnJ9bq3Jt6%+EhpMh$&E!%*nOlDCjWZL( zg5(z&C&~a|Xyg2#1d@W~c^RIc=GuRw4~jMs6d@lrQi+q!&$PI1n&O^1MnP3cxR4OD z{$E;uX`=HgY(haaM`Ok^HK4fpoztvn7t5AnXu?VwPrUY=+t>!Fow+4Drn zwl1g38R z(^5u#TyCO|ZMqQ_*v>-Kqi3WQ;~adTV967eR3=qh6NfHHqRYzBikVwEqwhA`PxwlV zDQU)B>MQM}`993dw@+4)p}AOXKKIw}`OE<0XH>~yM{n69_Pzrc2c!SHt$%J}Ed;&a zOZ7h9JgbQfyPq(IpbmG_T6?n28;fYmBcm{isj5$eO}}*FRe!ix=Ra*7+}42!mnXCq z%zQc$_F~vb=2shUF6}Yq0n?5IIwqa)15_Ta4uVdo=1ZrU3XhH~niKESi9lC|kUVJC zXUt|S=!s1PagTBO;ABDj6q(2}9!(GNPx$OnZz>sW#?i;~%!Vl^h92U-grc;2%{0anE;_3hJvuj1XtJGx;!n#W;h7sMB)uhQ+j;(Lw&n{l(4H`bFxibP zoc`LTXRQfaASDZ>;fwKjH!6`Wb$&h*!FfBBW}&IkwtO8SRnor3XSrSX!lAf%_9B87m~QDt zF#Hgz)~}wMZ?0mmEC!JL72I&k4Jyt1uU%b!Zf5^1ZTe66uIVJlscAZj?{UbzClCxx zFuRt77&hobV53<7K24Dj8Y3)74cRNl)Ul@7{7ih+EiwJ(=eYD`C~q9Ksb}hV9GZUV z>3>{Zeo3}9`Df}SNuT-XnRC7s;d{w%Z)<;Ps{}K+X1j-`@$N(jEJ9+X6Lt8-((nQ6 z#V*g))jcO%w3!ogbw%e-qUhpu(Ycc-x-ebT=D#O4)@EtCsOhg0EGoK4#%j}1b~SSS zbi;kfY^<}(l1>+|-1BE9*#=8%4?Ka^52 zHw1x%`zH$`PU9=%gg{>jfnouq1S)nCfzC@iFQ|?AW4BT5=TJ=AScnXeSsR0t3B;-i z6R^X@+E`E<1GTYm>^8QCHu@*uM!#)Ca%(oM*rPLtH%UGshAckr?c*R%Se55%VxSBe z){cVJwcATMclZd7Vg9w--_LnRYd73=?G+Oodj!USagjVYPY59tXx8pzE)Y*KqmUw`(+6 z!sDh6(x0`vkUG{Y*4 zmg8;;WkI4n_19 z;jrFf1UWGzwZj}IrmLW8Rj=Zj1Iv+XCTzydLne%(Be|edSaOIbi)lBG%z+RP(wZi| zXrVR2CQ-^K zv1UlHk6Oqlqk+*(L8dhuzCeO6S}Mz~FT)lH%kwj0sv zY3TAMBMWr!i#caSTlZlL5u4*(kDwVgF@v=<5NNj#bi1I%9Z3>ehZqpyS~~{2n&T61 zf$&=Z^5|8qF4!{1Je8v!^1bx}CD14cF%wHO>lJINLMMcU2zZ5LjDAClddCHNU!#aX z7p?xESyq<(xBj0QNg>Oz5D>X&i^kv>!1$R-S3+V((4!yj6?0w80ZVhqblgX!zfMl; zITGIU6QY}BEBipb*%bC29R6+QoH> zEE=?-mqBY^p<=(;!%@&}1(->-9sSOFk`m08Ps=>i)lSV?Tw2~zZ9V1GZ3f}LKJZ%# zJ6LHZ96PX0F#r9SawaLKD&?1B%GsoxqLjDBlpUmORmzuM7wS2O6z;Dsnm>vu&m{!} z7R|e3$_gpVO8JM^hEf-k!oAQ%^RbxnFG%5HZNeC0$|a=0A4T)&*Mw3^vBS0A6H~sC z6gwL0Cu7QXQtV)>H^!7Lq}ZWTUtSCKERup*RWzT8DH<18BnTr-0Y^pi#m6xm1hJ20 zWI`zv&2Pk{%SbWeKM+&CnG{I6fT(R-uU|9ZgJ zpry^uiuY^6xYNhUoYaMzAM^I9qm$#DQ|9w2BwIkdlMuEM^o}>LvsV&LguYMD!z15zt%}pX;Z&_YLYo zkipFjdcy|4%Tl9-&jtXsF{JN<)d}a*XOqRL$_{wUor{2Bd zGZi-ZJf6Mo0NE})_)aFCT~5M!Jm>b1^YFL5j&gJU#+A4SRO%bomEwp5N^w2%bY-}! zlss9NtUC@==RwVy9^In)x9j<_;p+~lk34_5RO%%MX>IYHljY`gou1J3635@LUT&)C zRN`-}?+13Dy{<)c@{kL}2dkR_Xg(A@K7bZt&XWSr$VzPh5L3ii09uM|oG6Gkj(AyB z%mUpOeb@jxEE)lbh`miHXlv}!aVhAOnDe9nbgGrw03hN?X94JRB|j+&Izu&V0K;k4 zT)nsvo;Vr=pi?#l(3zp=@hJ$_H!|IQQUKavr8WRaUho+#_I0t1Cr&|MuPUIR(R$`P zM;}Jh%tyRDLTx)XdA-0KU$fUBPVbed@OWl)S*oNU;)lA-wTBtzxKyZhiQ8G47Mb~2Q}V{Lyn z89G2{B5;cRQQFKkCfx=EwCU4AB8cWlqnsuq`b3s}cq#|`ubIkY!gm?xB^inP*s?eM zJdZ*dF)^L538GOv1Rg|ybL-50-K{@+xy@g5ba*^ejT0oeZ1r63Y6fug8ZsLeb z+^yS;A`TXqGVKzC$&50h)6E4$_{l&ct$D;c5PjWN^PJZ_zrI$05o@irRzaQgW5Mf3 zy}bz2l_{0O57?ll0uVRAXatzOOKfk}8Q+)DB^->HpVEI|U`|D)>Hy{{-Zd1h0u761 ztY^rnTN+%j(4Fn0>(`?_0)EZ4-f~loAcE#wsHD-nbG|7=N}yI>?L!Xmuz^{E zTCGP{EcLO^fk1Qr6ih^PN2XE)x4X@nh;UP$yRH*q9u7v@fQHs&PQ-PD=3aeo{$=y1 z<@;R7r}hqPsO!e56eFLh6d4nDq$$^Hpu{uqj zxr6*-Jh993XWRhE_p7_jziJNu6u(uZ z!lEhnj~*?dp<~Rm4fvB1WE3U7oVWb6YFch?(QoyaP8hTwx7rrXQMF;vmAS5iXdm?y zEe+uDBO#tSEf;-L?!#-R`M{V7m7>70t3f&2FyMUK7hK5E&75#X)dz02#-`7>)j8sY zrVN@#hVzfFj~R>R?M@GPIOHgED%f})_EKJJeliw)<5(0=aS0k+B%x&Pe@5ek!q^q} zGPALFbd70@PQ})23J7WvUA~Fo=^{c zl$`#Q6}!5BUFHptdF;$a?B&gy-bVkLfnR@tmdcygSju9O^7jU}ElJ8lmJ;svvQmdF zC0qe!Dfe4SsAu$n+$09dgk8O@`&8@L5@v(xfup#%dvybp#7$2 z*9i6YNk}!!Xb)vqbZRv0t#BUZtaI&Gx4VTftq@htz7UgLDuf0l2lo>Ettjy63_<&^ zF6-5;i5w;R?IXArYKvFtSbzPj7NQT=o9pr`WNYP5CZS=aRxJ06@>l#xN-k4vcV~yRa(y_4#;B$!Epam*XP%wZsxDo&D z35J&_0;AYyQAp69)>rSv+$gJm1lL;BCCLH?jJdRTi|c2#NeffWdo9oc;dQM*r~jlH zveBE1l!2g{_Fi0$wW7VLf&QSI_e zy2YbQk)&IOap*T#{|uf1QAz_Ud_eFk!@;aehhq|EsvI3s4{e7s%e?mqzsot482FsTc_1OjIobtG+Bq^4JFbzjSl_J+;U? z*`7YWzNhlZJGP9)7e#Imu?Puk^}AR$2r!w(Km>tf&dBzKs>#)dsRbsI*M^!(i?E~0 zHdI?vaODMP?G9jcO+?{nbOye8p{Ze_`gZY8K;og?Ky#9-~zU^1;|HLVy=@qJnq=-ASsoaS!S_6(il3|1~ zNG?6yw-UZlt`RdapQadg1oU%^3cJCy^xToi=wF6BvUP*a=%@JFX`~=BqH#3(qGWI< zaSDf>k@wg@=wNIt{to=3H5Q@9CwH**8w^g+z8`EYR)k-XY{r+^7I?mxmI{9uv0wdD zt(|bxJ>vcMq&Jtnc6ubC|C$72Ccal@;#oBmQQP=5ca4I&dB$8C>O}iAZZX*hHFn$? zDGd1tv?Rp~w3(ZgoQzS}ZP%70BQscTC8EbIJvQAlZ&_{bmT0!3)kDI;7*5AA7RWar z{a-B$Xj0)PdPn>f@+S)`MKv3L)RiJnwkMId|2*cHkCkl%O<--U^`cYes#}eiwG=F$ zP*z=UfYm0f?la!g>Q|JGk_{!soVL+E_miyJYf&^w-AqL}w*bJ)@84ft-P1h!_z$i& zKd`s?A^B?ga>b51-&5Nu5qYDvZ&2NKt@**#I=ga5Y-^H!TWwyo>K*pua?0vX>%GY^ z=tyV(*QH{wAQhYG5*XH?SoiD=IpNJ%vz&R=&lxo6e+@aH8PSV7Oqt{9-DBHjv+5U> zhdNQ3)h}6oXfkhO%@W` z3-!|{9RrbduT|R|XI4|+|7&Gv)!RT4jo$m*qUs{)y4VnrLa_^Ye?f890mE>i)5N$; zFw73qHoXsq!E%=pFszfIh#g&rVIB8dfML)}=Y`r>KTuvNZu=lCjh#WA+8tG}U?R#q zhZQN#3wiwU;gvwTXcY7?xBq)5*`EEFU(#j!_B7wRN?;zS0y9K4*jQLf+SlB94|SSH z!BijTX;tqOR9IP{8Rm=Qvb2F$zoz7X0(FzN_z}4dBrb+bFUedF>5-XM+y;3)x3Bu2>PHKX zy*k`h)cC)Y{L&3WDn}()1J>Ep01&D#qG7tv+~^9nAnc&)nkMl;->Y9$Z4>pS#wjFC zs}}G4Fuwlml4{jik&(V*qayI7Y$1H{i&EiKo#U@Tvh`G3gmb#cjfIirQl$&Zey` z((s@;jv>?;=xc|i-7C;@f;HG^r8p$Qfq+}c5b{bcA#VuskOo5D5QZ^&;XM9Vh;@k) z0)YF_BzGDK7{{RT^{Z2goiHZ0m&RuJa!UoALIpS^>f#6X20{R@LdQPGazru|GqgsH zn$Fof83Ya^_h8@NfDcy7=|*oxHvntwM$f%t9ff&lRXb>UGnnp8;DVNI#Edi~^s!OI z`Jw}@d1qOmX&C~+8bNC$*tSG0D+u$aR{xPlW?hvuW>V!CT)5O7=h3lQ z2Nt@o)jvRSR}@d0T<49me-U&Q`k8ejS65t|-95IVNoTrgHsN`y-xB=Y|1dC}Ga&G^ zgE*2+ki#R@2{-G9WtyBa`_Sbe64$cHz;4%e-IL-{4{tKT$G&bgBuf5RPV%N-gsjFbT+&~#nfvcx2F@LSlB(H2jV7-l$oUq|)y<9KWORK9y&+M77hs#)` z-lD)3IJOsfV=>l5YwZAOt!0gIr83?GaU{zM&)l=htOo;0t4R3V4huszDx*v;8YmoT zTZuA)v3P$#S+rSUq29_5U7Wk9culxTZr%7k$u(W;!;KfY(+`$s`MD?86O~Hs+>= z1$iNT0zfoh>P#v&of`2W$yfK-PBh>fxLPX8-b|$EB+9IMxA9?LW9IGW^ai23F~+r< zdS|Q#H$MxcPZh3&hpLbEG*tFsYK($P3p!L@55Of_50i*<(HM9{ro!-nBhU(TtHMsE zc;*0`KQm+}*+~ATxG9L-L4?bC zZ1)5^Ed;yn^;fI67;q%QS~2Zia8d6A@MjU5sq|z3C||TLA0lNIEoBx?nbVnzMEOI= z#jY06AS^dybKk^+$N(b8A4VE2S{h}FC|zSTYC2x(87S+=%zz+W0B<2oK7P(c#Y2HF zkH@WU2!RS2Ym_yk4cLcQv)0gS;q{Py(LK|dEtRtO_}BZVGg~TO@AIz@hOZ&BrSkOw z|9T{R4Vf*KuZR8X!{KYlY^i*G$iF@kzJ|<}%Gaa*^|A0ZWVY1q>!abT{a#cY_>e;* zysm{;`{kyt>DPnd)qXE3Zk&F-A-vk}Ma9k2uQ!EP`@N{Rb^7&|@M^yo6}L^lzAL=i z??uHO)33LOSNjFO;q^}ag5T+{mI^cu`PX}=Gg~TO@A0qqhp!>CrSkPY|N3C~8Zuid zUmx(VN5a>T*;4s>*uOp;zJ|<}%GZbd>m%W7$ZV;6J?dW{3tvNKOXcgM{`G)d23=-L z<#kQTAT)dpnJtyC2mR}f;cLijseHY`zup|ahRl}A*PHz7t>J6PY^i*`#lPMbzJ|<} z%GY=K*E_=3kl9kZuea;#F}-%f#1_E9OstSrTWM`*!4;Ckc97FdGh5Bfyq(6v0M z<3ggjkTU%RQ>`c|X?^owkob!sQBMDHPPwxBWhLPxAfGAb=VRE);f~j!VOMuS=P|Kd zk?@G}GL6CN-n%4hRL345oy)C+!|!fY$Fv#@Q=?A>GJ+-S$#&P4$I|aTbgk=mqK)ND z2~%3s{6_t*X=bP2i(T~X=e>D#tL-Y<#9%_75>v$9;)sQzcIu>TK3;`2C1ZCb%E&Eu zpfcrlJHd1NGtEbJuMAx~?PN><3Qgh=ErRjmh_UWQIB_eW2IY2;R&V5jz?KPcvcMQl zm6RSO_4sfSXyRmUx^FF_M}{cYx6Iq7{AR1lahsR{Mr*3U2w_q-IiKZM@yHB_XwKZ( zfQw1Rw@k^S@r9JK^;P_wwe2V8!j5b zqTJyiv6*ry*IicKrR+c{6r2PJ!qwa}&7j?#r^IT)EKG0O&*vqJ?Nh)R7e!#sj|gCGRW z+r(B_uRNYD>b7@44-5%^D|YEa6)yA<+PS1m^${2s9ln0q4+GF=%@g!_%V_jT0TuxT z;=q(47Z0}l714v8ckJ#)jxL#73db}Z&D zEfQZTo0uVZ^L5iYM==Xo!No|F0jGG_>3YzOJ5vn;j9>7kd5uOka$XaJkBgjKW#`(q zo3JOu1b{BNwXrR&xpj?b<4qBK$D&l0c#MUNlcY0@A`NuRsDx@Di0%n}Kpp{bqKrhv z_Om!zEAu6Rm)s&;jsF3euj)*6Xq5WK{~6sbL?Bqo3RTk4+KP1Z6@nmIbtorkO}@YS z9f62yn7c$bLpK|rp85|RlH<9c+c+I4%-~8hvhYBB~B`z)sI03&eo8fn-jhU z$EMq)fbFf*ULt>cb5ZqlXi1!A65(Hcg~-rbg^0M>gvJG}!{Ty9UgUx0TEi4x@0?mi zV#t_`dZG($b6{hvMa%*CmaoQ8Hjr>&JKfI&_NbR- zPvk(09~Ww}(eLNo4zDh1L8OZ6_dNqX0W%${xmDP4%Hn$Spkjr_AleW4#wN7jMp?F~ zJ$tsRL}c|?EWT_YHdFqrL=H{#pwquoKlDN{LiKsQ!~-+P3HXw7hfb{A>+&uxD&0NU zus`sI57M+uk@SWb0?%2vYi@f7-=w^YxMgssoBHSRQxF4%*;x7vps%xE{P?gT01oYfL4}M zm(MoZmf-P1*u23;N|sp&!{|tfNxiVtrI^qj)(Y$17%#*MbDa}SQi?@6QFcS95b-)) zll0jwmYnKhs7*i2=m(;j^j~tsX*@KI(!rMjgo4Ue5IS$Bq%S8rW8ey(b%{ZkV&c89 zZ7ElfMg@BaVHw(FfCY_U(XoXkbYn~o`$#vGn}H~dLgkv*tg(w6&$asj=(z}fu!oNv zK!r1axRd4_HYx~p)rX8MZ`EJT2ddw;CuS-FAB*i6{klu1Y+lZ+4wCg%mNDoDWzNBY zlFMe_s;3xjyNGjH&pH6h4{%Bl_=3a{H^FHIQQI!=c`09wWTF5~f|0NqsY8A=K>FF@ zU&mT?p-xPaFvNdJLy!58L%^(Ct$XsONpeZ(~KDl-<8wD_m|L$OU9yvBQHXZR%qevesO#xGx|O{Rag{iOSp=JjT;W<4RJ!$AWNq8~xBM6(X)D z*Waran?&+rvR+|?k`*>j%B3MiozT5nx>4D|o@tim|7dQI$d4NZ+SIi)^*u#;Z(b+x z=_W`2L1?y`uW`WQWB5pNo5LX71yUDmL{{vprR#b(?Ld}KMHfD_QL`j5wX|F1LLjYf zQYNGpjewSHqh{H>Y*DkEoT>u4nN!>>F+!Y}x4IME`xlTB|4uo801 zn%k#gWTzBtNW8A-=$p->{hg-1T{_(QL4Zssi^9}XHmMB@uz|qYHa<79%m+iR*yT=~tZ13n49-A}udH){% zo^$yQ>S%^$8euMC>5qUMb{uD%aK`uk_CxN~no-GSA&_htRmKhjAB{pW;<`rvf@jZ3 ztXzIgqg7sG6DAoUT`8llS3bPL-RInB&9z-H-u(0Ebk7@C$vF;2OgDNCeCI0?)+wuR zeV(BeT^;%F9{UAf8u^^RymEDPb{lqIXgOoc8~i< z&xK)R4HmmJQvA<8DK2f?boxr0x&`1-Ef8ECeY1?&g2RAz!C*9Ps20`=n|CA0uDyIx zV1fWeQklXNi^r=dpqce29}O~!_KX(j21Itd)XC_z`KG&Opcj*u>VY_2kj<+%s~Ce3 zHJ~;a7CpE}T^O!!VCPddxV`~8U?KW(ZskYs~Y|n2} zV*)1kjrzB&NF5w z-tQYOP$j)_Uch!B!x_Sj4&uqsV-|v5I=jNQOncW}X)%XpPS#n}$ML*!Bu0eaKkK`X zg6Q}o!7#IH#JcTUS(HCIyvPhK!W$&NukN#nQHPmQ zczr>#Xn9w_S3o`}o0L+(HY-Hr?_i^>9bIZqgpi-J-`B!SszThTGCR(~%wvr*AVn)D5cdEfG^>t`gL;j8l8a^>QZef@R`bctzP{j@$AxFG7Q1gx?-%>53s zoRo_Pv!_Dwt1d3D<^z`oShnh?yylf+=a|{dN>MY_D6#d!=bOEDeL36u%uLy|rSlDq z$X>Adsrn$uVcv1vvV$38P&zH1bHRlHT7bgpD@7~27!kAGOC&Hj!GQO?F6=^J-P0}& z<-&%>FBxNSt`xg;u9|!upzZ%J?@i$3s>;0odu#8i?xX`D1QOtO3nYQ0mu%f>wp7SM zAS8hVP(eG@-Ib)1?yjb)Iw6YCfvBJ$sLZ%4I*i~3>bNitDvpXcZa6P9F7u9pgQN2q zM{&k&Ml}EL@0@#T=_M?IcmDIfmE6Af+@PyfOz9QaN_nGuhi7=;(@G zKm&9PcT}fmyDm_+>VPPfcm`dd`ENz5b^-I;)dncH*{#~?ifC%Zl;EH-YDYadi0bNV z(Lklt^kgHItQPc4Ar({rWDjhtfeR3w2o3`b%^L>Pe^Insnw|!~X$*J9mk1VWj*OO=E%G!hQ%?YMpc#2qN4q4L|?lGFw~?aN|~MIIJFvrB9%IM zwVebeZyloyilXLN>u@Z4wzlApvoukA(V6q7;_6~rK=fwSA!!BNOZ$&6f7$`I8 zrJONQ#PQ|S)EUt#FBy?h9S@^fZx9M28@sp&buet9W-))kJiEaP6>7KbK!Xd_QDgZ? zm=hB!J*2N;uPJjCM^~$dPkrn^z(s{Bat1VD@i`Hd7BH z3p=R=5^bawDw+MR_(ygb5f<*r-lCD3{e=EjPJ@qBZ3bhZrfqZwhY=S4q>vcE(0H>| ziO;R3%_01F#g%~s zMk}e`+Ii~3A23Z7n*2&-*j6K|zVp>I+{+xS2WW*sT7bfO=?X@L+dwf|w}E0*d-UM( zoV~-AqP=}80M*Vs7N9%{ntCC)2HZi;hy$kd|G+2w7B$~9I-m)^)rS8$>8F@Gk-Jhf zL^NqJvNFp|8`WkWn)A0$CMyl)P$QO>C%ZA`;TBfALSWE;!T~PBBNT|WILbGO>Hzcx zJ4nfum9Fdv%Bdjc*sUPC#4`t=>m>)Er%BLY4?t)4*K&|5vKwv`E@zIhVDnJkk;EQ= zu4T3jS#tn-ie(%+09}!z6Cy|1LRQCKRSrO>HukV63p<^Op%obcL`u7r+9S;+C1^y+ z$s|Hb8E! zHC}tU5}l!7t?7~G*P78G&q=*E%tQgAz&#qm*l-{nM?{s7U@fDGWN`%$3Ya%S0MpYP zigqDfb1}W@o+6c}sCgoVgu5p|AzO=8n3L(5h~l{pXo{#eqXIpcrj=$a0@{dO zBP@T4Z25FO`|&E$kvn$UUKg@NGu!LvT7?qHoE}o4kb*G>Y0cr_mAv;1mC|WslCKTD znu55z%@UI{L?7q@k10=7(Wkx)O*E1NF758Q`A4FS#$dA|0w+U2yho`sKdZ6)j{6nD zZ+q4tpd=w=pJwfU5X}ZU64R^8gO%tyz(gG`fE_wSJjMZmENI`u z_ACavrsHQ`gbIPiw6BGEH7m}HBV?gZ%Uee*Hv7N_X-*clr7Zafw&7bcZU&BBiZe~Y zT`y$0@OzKiWIwFhRklB#;#EX-4plTS^QHJy2d4s$Q>}8u69<*USIjwV<1v}G4Jrfx zR>~Gw6P}fd)MNii|4g;U>7CG-LF>hRy=`uxt5`Iw@dQ4Ha;yd&a)p7K85B-o7CDrt z8koM+SV7aP8Af!naDiGFIm~F;;ZS5ETY{M>&+Hk?;(S9~3>|k)(MCP@v+=UXR#+hj zc1?X~WumT5CP}qUM(wPvlSY|Q^3cxa?_mrW=#hI&QsSE6Wye%u8uBWxsro@gnb6?O7=3vE-K>wp9TpRoT{0i`=xa zwb{O*CU-Lv>vCs~wG5?8oAWLv<_ys?IVY8~VSr>QVvtd{rw#Z?k19&Uupc0lt`j7s z8R#<~f}GM?IThY?H?9a__p0xi=&NKzZs1mZXB*vH-ksD0pvZg>VzHljoj=u9qeMiO z2|P&4Peg1eO?@Irp@7R>=D)vri=Z-Fp~G66MgQh~O-bn%4w^zGkm%6vr*)YWl;Fan=!B|8aK+~mcFAF(Enje|CwEX7Ci z5IRar(on9r&?rb~0i@Y^1Dy|^A!lN<19A$VIK52X8o(8j^du$%d^l zlY(=+#N65SC3@uWAAY}o4+ne_?;2524*4}?diofejHSxrxnKho5c5?%?)gX!*|Dgs z_iCnX4q9hqH8eA38lwiFqvF?LHc}7_7! z_JH=-LBrt$7&_AemYFWI6AA?1!Mye!Fj!SO%{Tj>x8j|wxxqLyDYPENbT6U;Pt*nt zlU3?e59z?lJ#{%HvX9(LgOywMx;5aE&;@LGLpJop_NYsY^}A49yBy$-CU zQ@1oF%;}GnS{O5h^a@THu zX8%Kf>3n*=H90SfI>1Ii$hZ?!3)AT~A&_B%A}p^p3|lA>X8T!_?c^9Vjr9>qV`XaW zK}HubMc3BrXC?#5*^}y^Vnc4IX?S$@j6qzfItW(U7N3Lzw zn-oKnTXTzyOsOSa(BpOM39ck&!TACi=Bst(owr)y=;Pxs6_A!-iH~ z${L4-x~7RDK?@@t*jMHB8MDfJApTcQz>&zfnil@pu>D(WlzT%Q;g%}$a&)AfL*}G zM5nb`&K{>%v{a+Ry$aad!8mA$%qvYepQtuexVV>jvtMmz&FG=G4IJqUD;d=Ik$8}#V_7Q!bin>-2CswgE?aUl8y=RG)+81~{y z-)7Us^s`1Irdc>i%K$eNR;<~8+`N%UNcB3zOhbVe7h*5P{?-a$m+;yjdZr`$eKffqS-W(VW#3VlCzd!;|#pwRj}R zFqG{JanNr^c`GNh#eQqUleDd`KgdVyb? zqgYL5NS*%F4fQEOU_ByyRuAVe`>0!=}bOVN&4^ACN|p2MzTyK&ZCu+2`Su7DoTYI zYi5kBVIBN6dHtt>jGTxkq?VvYm4K%?ltUFkH_ z*eggMnk6#?i6xdK^AwU~G#-&;xPe7~5jc@#2DylBO%v!EP_jyF3Dgo>%>(F^RFKMu zq~h1nI(mCBitA$?XAS#=rp16tEoUWc|JlxvXClI?=sT=Js!TnUw@~4{O;@%-slu%lue9>@4NG~X`>WP zlsoVE^IK0Mj%E?3%nK4?B98ydjUW5L9K}ROn5s~uNE&qAtM0bDw!G%UG@8>l@6z2l z9b5RtD)3Vi1Uv2|1h7wdBb+HVRrWE#4YlZ--pG+EYcywSoX7$|Vop<8gjGrzVi!Zn z+}QfAQ<4dNl`+&fem6C`?VBFF5uU>6FryR-q-L~6wXa0VREz3UI}QM2D!@W>1fhFE zp0FcZnr1>&0~>cjEL$>)Jo#YH{3la*!k%3u(s!LHSVu_+VEQ|KMj}J1P8!9+;Ia}6 zm&phjWXkf51AG)VR~NHGCRKBo5xyG?I^)BU^%3WW zmR-QMB));Dzh-j9I!HUIJP?|$Lk@BZx9|K$2L>_a4rE8p-2(YL>S{Da^B zx4Xak+TReUe3P4lKV8BH!;e#@T>`lB}@|r_yKKs5K{_G7O zijB9>0$D`l98X@NA&-6Z)9?B8JAYl%)J0Ji+FwhYAJeK>_7;Cn^B)9lXctKiZ8c!z zn=Jhu(mrnSvqO8r1qCFSEwBsgRDN9LGvHheTET*8O6AKGrIJIK*7n~&%kmzUdVRIj zz`Hx!QS9;ZQ~*)*7Fn^7!;LL2tG+djQC(Y;d$J2ytP|SVWiPtDV#bbU{yyO+jh!u! zeKvb$R&y_*1cWngt3MBB1{}h4 z*?S?Jvee9&m4Y=A+{_qu8{45#&5TK`G;gBJQ3k&BdNUu!Q#domQ#domQ#doG0|yZ> z{U9R}g2*h>3hk@UgpARv6%8BDp4PO9hP+D)Z6go_Q$`r`8H{E=i!&cXUP#ZH8N}wB zG@7t9=(x$aAmb*hw6ll%M=HCDhx0&X`C}>1)mSA7?QLz4=|j>_z?i@wXXoAg8PTY3 zOZr&!wa5Qbg>i;SHp{8g}MHJ}6zqrPC#M@xa^o0aHcou(+tRKy4!oTnO&chxdM zwL6Sy2=HO*_i3aj@h5QYsp+x$s(A+b1`4W7O;Z~fanm++Qggfj-NY2ArC1C{XuF?b z8AgRn*E(Tnv^JU%;%AKmbwnkPYp~d-=kc5a8Q963d6{t^S~0_f8uw)%QwZISZwVb& zZ9g|jr++Z#!8^*~h^Hjobu*`|HW&#Mr!F&^# zML*GOOd=yvmezEd<3Y53#%Ru(M(`u6!Ctc|5OcA(@R?!98?yyN=!XHhFia~j+(wog z^G5U_h*Y=@Pa(JADdaXhh1^Cc54XXTBW?r7fZJ#WwmuUwj)>Z@{k@24(nLey+0)`t zQG8?t4n*FoapDXMhP=UWWfZ}f;HqF=nrSfe($+>|Hmi)}l_9TKGyf%<6h3^?t{wzP z{Lx&Qfso=dcWD3;%RU94hxyTVGabfx*?hG#Vwfjd)DANb?RXeWp_EPTGvuRa=E}7H zzH#or6F&(yx`;e$^lIg!lX z_u#%C8)EGb{yx&efvRQY3DZ7p?L}hKKD(opkU?$Xa7xa|*1X@z)NHv=P_f8M;XzMs%ATm|0t)kuhOH~uoP}f9EpHOB+9!jdtzGNXW zPEBkk1FwRaJcXFaQ;3;7g_uc9VJ3q_nCTl3Y9g>c69DB2GX+pE6Xzu%aOOftw`v1+ zMnVQpG$e20$#(3VcVy3FGX*M#sI4QYrNtu;S6P1MSmCx$GCnllDS^q$oWwh9Hs*CG zh18^&+IH=vm8eN-D*Ws?h^i*8Gd1hb5R~1q`D*-FkQ!|$xH=o(r!_6L3_Tfgxapf< z20Bg*O%jO2Z-KJN8(T=>*k#0sMDxE%(@@MMUSo>~qo5GTP8Q><9C;`}DGiA@oQUasXXq@{@IYAFJTT1v@k zDQ4{nEd>UMq(QpU?u=_U5C13I&7NFNMya&>P`#Ki^O>}Jrfv63+wPgR-E7%?#C8K8 zw(AaNRG=`^L4k+=lTesB1r&Nfb2BrP{bPtY;e=6ja2l#ie;Z056C)^!y(4o&%AZl8 z7@%HjG~3E(Gv;k=z}DOvcm6G)I>-)ULp2fxRSnlthzl8@b^--rCjzTOC8fYHp#imL zbYzsUA#{92o|WTk6WKq+{S7iRUX)@`nO`L4`%xFD zz3ZT4wh};I!6ce#ezT~gj@iHrUEBq0&n8PPGqjENuRMGIciq|l;^(>}>u0!Ov_5ER zp%A&;5h|y3nJB6zfDEX{#~*;^H)f;224@;8ZZKuQ;sCze)d7+zq|I}aPc3EfY+Mdj zU%-L_;%PcXHyh7rbvlTGc&UnOf{6&_);b;v*lTBUt!FLCjsIu7WhT67COgqb(B^DY zfQdWJ$3m2v+FGNs&@I$@Mhtf$kH&i~GqZn?;M3?jB4`$_%t*wNanEO&G%C!@?C*tj zfHKPSul3CP7|$w6jtA;puzUs?HMh(RW|$Wn*!u!{42PyqjP6EW5j{(L%OZ~I8T}2X zVrgF35tK0%@Piri$lZ8QHj-PUyib0V5#vV*Y9@FG!}k;oj}z)HNeAIC94qR+^(5YeHkkf>| zk?R?oSelwn@LFdMW)xnkz>R z$LG=KW_c#_13U#99GoyhS6(x*k139Wps3q%xJT`Ar@tiPRlZj|l zX^#YMqzqLoLYd|du2!;UUytKI#l$Qe0zWYFqtxI#9uy3qH1ZMCPDUUnxqmU9{jS`8 zn|~-V0s5fqm>S_oLUB_hf&RseSdHdwBJpxwWr;@FQN$sC|Ra z)4QKE6V}$F9;d0tzCjp-5n5%xct3T|o{@daU+Vs#pZ(5f^zf-@^ZSI@+7-CPC*D`y zIJPI7boGXeWuLsUjCBamnSAd03ng2a{gt`j379{n7xzVMKA9QdMgS^=jvGIVVhRN$ z8sKt`00S4$3E}K4`@mM1m!r=lWJ_sNP+G1!N}CX+1%MWZDA;%!)lu4nC~d@2+Jq==#8TRXDXBtfu`iR6&Q^<8 zC~Y9E-)Hj4wM1gmPkP?j%MAbyq@SU7UNF&eF(xRWqdsDLR zbW4j655m<&lb049r1z)tN|7`L8IUjuB>@4$GsmZ1-E@omDgS$`@Zix@LH4>%5BASM zvI{JlTy;7|uY2aA%>a#)vCtSUV_zpYfPw(y-oV)$o%l zit7n;{3NebybhVX-;;ez°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 diff --git a/examples/ibc/wasm/sample_contracts/reflect.wasm b/examples/ibc/wasm/sample_contracts/reflect.wasm deleted file mode 100644 index 4e8057737bc2d7825cd389a7f25e8b3d34f72118..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 304952 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%0D`gb9}Xhu&P3!^2Lwxfve&#@29 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�L{(UZbw_ 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 BW!V4# diff --git a/examples/ibc/wasm/wasm_ibc_test.go b/examples/ibc/wasm/wasm_ibc_test.go deleted file mode 100644 index 5bd2c034c..000000000 --- a/examples/ibc/wasm/wasm_ibc_test.go +++ /dev/null @@ -1,221 +0,0 @@ -package wasm_test - -import ( - "context" - "fmt" - "testing" - "time" - - "cosmossdk.io/math" - "github.com/strangelove-ventures/interchaintest/v7" - "github.com/strangelove-ventures/interchaintest/v7/chain/cosmos" - "github.com/strangelove-ventures/interchaintest/v7/chain/cosmos/wasm" - "github.com/strangelove-ventures/interchaintest/v7/ibc" - "github.com/strangelove-ventures/interchaintest/v7/testreporter" - "github.com/strangelove-ventures/interchaintest/v7/testutil" - "github.com/stretchr/testify/require" - "go.uber.org/zap/zaptest" -) - -func TestWasmIbc(t *testing.T) { - if testing.Short() { - t.Skip("skipping in short mode") - } - - ctx := context.Background() - - // Chain Factory - cf := interchaintest.NewBuiltinChainFactory(zaptest.NewLogger(t), []*interchaintest.ChainSpec{ - {Name: "juno", ChainName: "juno1", Version: "latest", ChainConfig: ibc.ChainConfig{ - GasPrices: "0.00ujuno", - EncodingConfig: wasm.WasmEncoding(), - }}, - {Name: "juno", ChainName: "juno2", Version: "latest", ChainConfig: ibc.ChainConfig{ - GasPrices: "0.00ujuno", - EncodingConfig: wasm.WasmEncoding(), - }}, - }) - - chains, err := cf.Chains(t.Name()) - require.NoError(t, err) - juno1, juno2 := chains[0], chains[1] - - // Relayer Factory - client, network := interchaintest.DockerSetup(t) - r := interchaintest.NewBuiltinRelayerFactory(ibc.CosmosRly, zaptest.NewLogger(t)).Build( - t, client, network) - - // Prep Interchain - const ibcPath = "wasmpath" - ic := interchaintest.NewInterchain(). - AddChain(juno1). - AddChain(juno2). - AddRelayer(r, "relayer"). - AddLink(interchaintest.InterchainLink{ - Chain1: juno1, - Chain2: juno2, - Relayer: r, - Path: ibcPath, - }) - - // Log location - f, err := interchaintest.CreateLogFile(fmt.Sprintf("wasm_ibc_test_%d.json", time.Now().Unix())) - require.NoError(t, err) - // Reporter/logs - rep := testreporter.NewReporter(f) - eRep := rep.RelayerExecReporter(t) - - // Build interchain - require.NoError(t, ic.Build(ctx, eRep, interchaintest.InterchainBuildOptions{ - TestName: t.Name(), - Client: client, - NetworkID: network, - BlockDatabaseFile: interchaintest.DefaultBlockDatabaseFilepath(), - SkipPathCreation: false, - })) - t.Cleanup(func() { - _ = ic.Close() - }) - - // Create and Fund User Wallets - initBal := math.NewInt(100_000_000) - users := interchaintest.GetAndFundTestUsers(t, ctx, "default", initBal.Int64(), juno1, juno2) - juno1User := users[0] - juno2User := users[1] - - err = testutil.WaitForBlocks(ctx, 2, juno1, juno2) - require.NoError(t, err) - - juno1UserBalInitial, err := juno1.GetBalance(ctx, juno1User.FormattedAddress(), juno1.Config().Denom) - require.NoError(t, err) - require.True(t, juno1UserBalInitial.Equal(initBal)) - - juno2UserBalInitial, err := juno2.GetBalance(ctx, juno2User.FormattedAddress(), juno2.Config().Denom) - require.NoError(t, err) - require.True(t, juno2UserBalInitial.Equal(initBal)) - - // Start the relayer - err = r.StartRelayer(ctx, eRep, ibcPath) - require.NoError(t, err) - - t.Cleanup( - func() { - err := r.StopRelayer(ctx, eRep) - if err != nil { - t.Logf("an error occured while stopping the relayer: %s", err) - } - }, - ) - - juno1Chain := juno1.(*cosmos.CosmosChain) - juno2Chain := juno2.(*cosmos.CosmosChain) - - // Store ibc_reflect_send.wasm contract - ibcReflectSendCodeId, err := juno1Chain.StoreContract( - ctx, juno1User.KeyName(), "sample_contracts/ibc_reflect_send.wasm") - require.NoError(t, err) - - // Instantiate ibc_reflect_send.wasm contract - ibcReflectSendContractAddr, err := juno1Chain.InstantiateContract( - ctx, juno1User.KeyName(), ibcReflectSendCodeId, "{}", true) - require.NoError(t, err) - - // Store reflect.wasm contract - reflectCodeId, err := juno2Chain.StoreContract( - ctx, juno2User.KeyName(), "sample_contracts/reflect.wasm") - require.NoError(t, err) - - // Instantiate reflect.wasm contract - _, err = juno2Chain.InstantiateContract( - ctx, juno2User.KeyName(), reflectCodeId, "{}", true) - require.NoError(t, err) - - // Store ibc_reflect.wasm contract - ibcReflectCodeId, err := juno2Chain.StoreContract( - ctx, juno2User.KeyName(), "sample_contracts/ibc_reflect.wasm") - require.NoError(t, err) - - // Instantiate ibc_reflect_send.wasm contract - initMsg := "{\"reflect_code_id\":" + reflectCodeId + "}" - ibcReflectContractAddr, err := juno2Chain.InstantiateContract( - ctx, juno2User.KeyName(), ibcReflectCodeId, initMsg, true) - require.NoError(t, err) - - err = testutil.WaitForBlocks(ctx, 2, juno1, juno2) - require.NoError(t, err) - - // Set up channel - ibcReflectSendPortId := "wasm." + ibcReflectSendContractAddr - ibcReflectPortId := "wasm." + ibcReflectContractAddr - err = r.CreateChannel(ctx, eRep, ibcPath, ibc.CreateChannelOptions{ - SourcePortName: ibcReflectSendPortId, - DestPortName: ibcReflectPortId, - Order: ibc.Ordered, - Version: "ibc-reflect-v1", - }) - require.NoError(t, err) - - // Wait for the channel to get set up and whoami message to exchange - err = testutil.WaitForBlocks(ctx, 10, juno1, juno2) - require.NoError(t, err) - - // Get contract channel - juno1ChannelInfo, err := r.GetChannels(ctx, eRep, juno1.Config().ChainID) - require.NoError(t, err) - juno1ChannelID := juno1ChannelInfo[len(juno1ChannelInfo)-1].ChannelID - - // Query ibc_reflect_send contract on Juno1 for remote address (populated via ibc) - queryMsg := ReflectSendQueryMsg{Account: &AccountQuery{ChannelID: juno1ChannelID}} - var ibcReflectSendResponse IbcReflectSendResponseData - err = juno1Chain.QueryContract(ctx, ibcReflectSendContractAddr, queryMsg, &ibcReflectSendResponse) - require.NoError(t, err) - require.NotEmpty(t, ibcReflectSendResponse.Data.RemoteAddr) - - // Query ibc_reflect contract on Juno2 for local account address - var ibcReflectResponse IbcReflectResponseData - err = juno2Chain.QueryContract(ctx, ibcReflectContractAddr, queryMsg, &ibcReflectResponse) - require.NoError(t, err) - require.NotEmpty(t, ibcReflectResponse.Data.Account) - - // Verify that these addresses match, a match is a successful test run - // - ibc_reflect_send contract (Juno1) remote address (retrieved via ibc) - // - ibc_reflect contract (Juno2) account address populated locally - require.Equal(t, ibcReflectSendResponse.Data.RemoteAddr, ibcReflectResponse.Data.Account) -} - -type ReflectSendQueryMsg struct { - Admin *struct{} `json:"admin,omitempty"` - ListAccounts *struct{} `json:"list_accounts,omitempty"` - Account *AccountQuery `json:"account,omitempty"` -} - -type AccountQuery struct { - ChannelID string `json:"channel_id"` -} - -type Coin struct { - Denom string `json:"denom"` // type, eg. "ATOM" - Amount string `json:"amount"` // string encoing of decimal value, eg. "12.3456" -} - -type Coins []Coin - -type IbcReflectSendAccountResponse struct { - LastUpdateTime uint64 `json:"last_update_time,string"` - RemoteAddr string `json:"remote_addr"` - RemoteBalance Coins `json:"remote_balance"` -} - -// ibc_reflect_send response data -type IbcReflectSendResponseData struct { - Data IbcReflectSendAccountResponse `json:"data"` -} - -type IbcReflectAccountResponse struct { - Account string `json:"account"` -} - -// ibc_reflect response data -type IbcReflectResponseData struct { - Data IbcReflectAccountResponse `json:"data"` -} diff --git a/examples/ibc/wasm/wasm_icq_test.go b/examples/ibc/wasm/wasm_icq_test.go deleted file mode 100644 index ebc90eabb..000000000 --- a/examples/ibc/wasm/wasm_icq_test.go +++ /dev/null @@ -1,406 +0,0 @@ -package wasm - -import ( - "context" - "encoding/base64" - "encoding/hex" - "encoding/json" - "fmt" - "strconv" - "testing" - "time" - - "cosmossdk.io/math" - "github.com/strangelove-ventures/interchaintest/v7" - cosmosChain "github.com/strangelove-ventures/interchaintest/v7/chain/cosmos" - "github.com/strangelove-ventures/interchaintest/v7/chain/cosmos/wasm" - "github.com/strangelove-ventures/interchaintest/v7/ibc" - "github.com/strangelove-ventures/interchaintest/v7/internal/dockerutil" - "github.com/strangelove-ventures/interchaintest/v7/relayer" - "github.com/strangelove-ventures/interchaintest/v7/testreporter" - "github.com/strangelove-ventures/interchaintest/v7/testutil" - "github.com/stretchr/testify/require" - "go.uber.org/zap" - "go.uber.org/zap/zaptest" -) - -// TestInterchainQueriesWASM is a test case that performs a round trip query from an ICQ wasm contract <> ICQ module. -// On the sender chain, CosmWasm capability is required to instantiate/execute the smart contract. On the receiver chain, -// the ICQ module is required to be present in order to receive interchain queries. -func TestInterchainQueriesWASM(t *testing.T) { - //TODO (1): force relayer to use specific versions of the chains configured in the file. - //os.Setenv("IBCTEST_CONFIGURED_CHAINS", "./icq_wasm_configured_chains.yaml") - - //TODO (2): use Juno as sender "ghcr.io/strangelove-ventures/heighliner/juno:v10.1.0" - //and Strangelove's icqd (or another chain with ICQ module present) as receiver. - - logger := zaptest.NewLogger(t) - - if testing.Short() { - t.Skip() - } - - client, network := interchaintest.DockerSetup(t) - f, err := interchaintest.CreateLogFile(fmt.Sprintf("wasm_ibc_test_%d.json", time.Now().Unix())) - require.NoError(t, err) - rep := testreporter.NewReporter(f) - eRep := rep.RelayerExecReporter(t) - ctx := context.Background() - contractFilePath := "sample_contracts/icq.wasm" //Contract that will be initialized on chain - - wasmImage := ibc.DockerImage{ - Repository: "ghcr.io/strangelove-ventures/heighliner/wasmd", - Version: "v0.0.1", - UidGid: dockerutil.GetHeighlinerUserString(), - } - - genesisAllowICQ := map[string]interface{}{ - "interchainquery": map[string]interface{}{ - "host_port": "icqhost", - "params": map[string]interface{}{ - "host_enabled": true, - "allow_queries": []interface{}{"/cosmos.bank.v1beta1.Query/AllBalances"}, - }, - }, - } - - minVal := 1 - cf := interchaintest.NewBuiltinChainFactory(zaptest.NewLogger(t), []*interchaintest.ChainSpec{ - { - ChainName: "sender", - NumValidators: &minVal, - ChainConfig: ibc.ChainConfig{ - Type: "cosmos", - Name: "sender", - ChainID: "sender", - Images: []ibc.DockerImage{wasmImage}, - Bin: "wasmd", - Bech32Prefix: "wasm", - Denom: "uatom", - GasPrices: "0.00uatom", - TrustingPeriod: "300h", - GasAdjustment: 1.1, - EncodingConfig: wasm.WasmEncoding(), - ModifyGenesis: modifyGenesisAtPath(genesisAllowICQ, "app_state"), - }}, - { - ChainName: "receiver", - NumValidators: &minVal, - ChainConfig: ibc.ChainConfig{ - Type: "cosmos", - Name: "receiver", - ChainID: "receiver", - Images: []ibc.DockerImage{wasmImage}, - Bin: "wasmd", - Bech32Prefix: "wasm", - Denom: "uatom", - GasPrices: "0.00uatom", - TrustingPeriod: "300h", - GasAdjustment: 1.1, - EncodingConfig: wasm.WasmEncoding(), - ModifyGenesis: modifyGenesisAtPath(genesisAllowICQ, "app_state"), - }}, - }) - - chains, err := cf.Chains(t.Name()) - require.NoError(t, err) - chain1, chain2 := chains[0], chains[1] - - // Get a relayer instance - r := interchaintest.NewBuiltinRelayerFactory( - ibc.CosmosRly, - logger, - relayer.RelayerOptionExtraStartFlags{Flags: []string{"-p", "events", "-b", "100"}}, - ).Build(t, client, network) - - // Build the network; spin up the chains and configure the relayer - const pathName = "test1-test2" - const relayerName = "relayer" - - ic := interchaintest.NewInterchain(). - AddChain(chain1). - AddChain(chain2). - AddRelayer(r, relayerName). - AddLink(interchaintest.InterchainLink{ - Chain1: chain1, - Chain2: chain2, - Relayer: r, - Path: pathName, - }) - - logger.Info("ic.Build()") - require.NoError(t, ic.Build(ctx, eRep, interchaintest.InterchainBuildOptions{ - TestName: t.Name(), - Client: client, - NetworkID: network, - // BlockDatabaseFile: interchaintest.DefaultBlockDatabaseFilepath(), - SkipPathCreation: false, - })) - - // Wait a few blocks for user accounts to be created on chain - logger.Info("wait for user accounts") - err = testutil.WaitForBlocks(ctx, 5, chain1, chain2) - require.NoError(t, err) - - // Fund user accounts so we can query balances - chain1UserAmt := math.NewInt(10_000_000_000) - chain2UserAmt := math.NewInt(99_999_999_999) - chain1User := interchaintest.GetAndFundTestUsers(t, ctx, t.Name(), chain1UserAmt.Int64(), chain1)[0] - chain2User := interchaintest.GetAndFundTestUsers(t, ctx, t.Name(), chain2UserAmt.Int64(), chain2)[0] - - err = testutil.WaitForBlocks(ctx, 5, chain1, chain2) - require.NoError(t, err) - - chain1UserAddress := chain1User.FormattedAddress() - require.NotEmpty(t, chain1UserAddress) - - chain2UserAddress := chain2User.FormattedAddress() - logger.Info("Address", zap.String("chain 2 user", chain2UserAddress)) - require.NotEmpty(t, chain2UserAddress) - - chain1UserBalInitial, err := chain1.GetBalance(ctx, chain1UserAddress, chain1.Config().Denom) - require.NoError(t, err) - require.True(t, chain1UserBalInitial.Equal(chain1UserAmt)) - - chain2UserBalInitial, err := chain2.GetBalance(ctx, chain2UserAddress, chain2.Config().Denom) - require.NoError(t, err) - require.True(t, chain2UserBalInitial.Equal(chain2UserAmt)) - - logger.Info("instantiating contract") - initMessage := "{\"default_timeout\": 1000}" - chain1CChain := chain1.(*cosmosChain.CosmosChain) - - wasmIcqCodeId, err := chain1CChain.StoreContract(ctx, chain1User.KeyName(), contractFilePath) - require.NoError(t, err) - err = testutil.WaitForBlocks(ctx, 5, chain1, chain2) - require.NoError(t, err) - - //Instantiate the smart contract on the test chain, facilitating testing of ICQ WASM functionality - contractAddr, err := chain1CChain.InstantiateContract(ctx, chain1User.KeyName(), wasmIcqCodeId, initMessage, true) - require.NoError(t, err) - logger.Info("icq contract deployed", zap.String("contractAddr", contractAddr)) - - err = testutil.WaitForBlocks(ctx, 5, chain1, chain2) - require.NoError(t, err) - - icqWasmPortId := "wasm." + contractAddr - destPort := "icqhost" - // Create channel between icq wasm contract <> icq module. - err = r.CreateChannel(ctx, eRep, pathName, ibc.CreateChannelOptions{ - SourcePortName: icqWasmPortId, - DestPortName: destPort, - Order: ibc.Unordered, - Version: "icq-1", - }) - require.NoError(t, err) - err = testutil.WaitForBlocks(ctx, 5, chain1, chain2) - require.NoError(t, err) - - // Query for the recently created channel-id. - chain2Channels, err := r.GetChannels(ctx, eRep, chain2.Config().ChainID) - require.NoError(t, err) - - for _, c1 := range chain2Channels { - logger.Info("Channel", zap.String("Info", fmt.Sprintf("Channel ID: %s, Port ID: %s, Version: %s, Counterparty Channel ID: %s, Counterparty Port ID: %s", c1.ChannelID, c1.PortID, c1.Version, c1.Counterparty.ChannelID, c1.Counterparty.PortID))) - } - - require.NoError(t, err) - channel := FirstWithPort(chain2Channels, destPort) - require.NotNil(t, channel) - require.NotEmpty(t, channel.Counterparty.ChannelID) - - // Start the relayer and set the cleanup function. - err = r.StartRelayer(ctx, eRep, pathName) - require.NoError(t, err) - - t.Cleanup( - func() { - err := r.StopRelayer(ctx, eRep) - if err != nil { - t.Logf("an error occured while stopping the relayer: %s", err) - } - }, - ) - - // Wait a few blocks for the relayer to start. - err = testutil.WaitForBlocks(ctx, 5, chain1, chain2) - require.NoError(t, err) - logger.Info("channel", zap.String("info", fmt.Sprintf("Channel Port: %s, Channel ID: %s, Counterparty Channel ID: %s", channel.PortID, channel.ChannelID, channel.Counterparty.ChannelID))) - - //Query for the balances of an account on the counterparty chain using interchain queries. - //Get the base64 encoded chain2 user address in the format required by the AllBalances query - chain2UserAddrQuery := fmt.Sprintf(`{"address":"%s"}`, chain2UserAddress) - chain2UserAddrQueryB64 := base64.StdEncoding.EncodeToString([]byte(chain2UserAddrQuery)) - - // Get current block height for chain 2 - cmd := []string{chain2.Config().Bin, "status", - "--node", chain2.GetRPCAddress(), - "--home", chain2.HomeDir(), - } - stdout, _, err := chain2.Exec(ctx, cmd, nil) - require.NoError(t, err) - blockHeightC2 := &statusResults{} - err = json.Unmarshal(stdout, blockHeightC2) - require.NoError(t, err) - - //and chain 1 - // Get current block height - cmd = []string{chain1.Config().Bin, "status", - "--node", chain1.GetRPCAddress(), - "--home", chain1.HomeDir(), - } - stdout, _, err = chain1.Exec(ctx, cmd, nil) - require.NoError(t, err) - blockHeightC1 := &statusResults{} - err = json.Unmarshal(stdout, blockHeightC1) - require.NoError(t, err) - - logger.Info("Chain height", zap.String("Chain 1", blockHeightC1.SyncInfo.Height), zap.String("Chain 2", blockHeightC2.SyncInfo.Height)) - - query := executeQuery{ - Query: msgQuery{ - Timeout: 1000, - Channel: channel.ChannelID, - Requests: []RequestQuery{ //can't use abci.RequestQuery since Height/Prove JSON fields are omitted which causes contract errors - { - Height: 0, - Prove: false, - Path: "/cosmos.bank.v1beta1.Query/AllBalances", - Data: []byte(chain2UserAddrQueryB64), - }, - }, - }, - } - - b, err := json.Marshal(query) - require.NoError(t, err) - msg := string(b) - logger.Info("Executing msg ->", zap.String("msg", msg)) - - //Query the contract on chain 1. The contract makes an interchain query to chain 2 to get the chain 2 user's balance. - hash, err := chain1CChain.ExecuteContract(ctx, chain1User.KeyName(), contractAddr, msg) - - require.NoError(t, err) - - // Check the results from the interchain query above. - cmd = []string{chain1.Config().Bin, "query", "tx", hash, - "--node", chain1.GetRPCAddress(), - "--home", chain1.HomeDir(), - "--chain-id", chain1.Config().ChainID, - "--output", "json", - } - _, _, err = chain1.Exec(ctx, cmd, nil) - require.NoError(t, err) - - // Wait a few blocks for query to be sent to counterparty. - err = testutil.WaitForBlocks(ctx, 5, chain1, chain2) - require.NoError(t, err) - - // Check the results from the interchain query above. - cmd = []string{chain1.Config().Bin, "query", "wasm", "contract-state", "all", contractAddr, - "--node", chain1.GetRPCAddress(), - "--home", chain1.HomeDir(), - "--chain-id", chain1.Config().ChainID, - "--output", "json", - } - - stdout, _, err = chain1.Exec(ctx, cmd, nil) - require.NoError(t, err) - results := &contractStateResp{} - err = json.Unmarshal(stdout, results) - require.NoError(t, err) - hasIcqQuery := false - - for _, kv := range results.Models { - keyBytes, _ := hex.DecodeString(kv.Key) - valueBytes, err := base64.StdEncoding.DecodeString(kv.Value) - require.NoError(t, err) - if string(keyBytes) == "query_result_counter" { - res, err := strconv.Atoi(string(valueBytes)) - require.NoError(t, err) - if res > 0 { - hasIcqQuery = true - logger.Info("ICQ query result counter", zap.Int("counter", res)) - } - } - } - require.Equal(t, hasIcqQuery, true) -} - -func FirstWithPort(channels []ibc.ChannelOutput, port string) *ibc.ChannelOutput { - for _, channel := range channels { - if channel.PortID == port { - return &channel - } - } - return nil -} - -type RequestQuery struct { - Data []byte `protobuf:"bytes,1,opt,name=data,proto3" json:"data,omitempty"` - Path string `protobuf:"bytes,2,opt,name=path,proto3" json:"path,omitempty"` - Height int64 `protobuf:"varint,3,opt,name=height,proto3" json:"height"` //do NOT 'omitempty' for JSON field or contract queries will error - Prove bool `protobuf:"varint,4,opt,name=prove,proto3" json:"prove"` //do NOT 'omitempty' for JSON field or contract queries will error -} - -type msgQuery struct { - Channel string `json:"channel"` - Requests []RequestQuery `json:"requests"` - Timeout uint64 `json:"timeout"` -} - -type executeQuery struct { - Query msgQuery `json:"query"` -} - -type kvPair struct { - Key string // hex encoded string - Value string // b64 encoded json -} - -type contractStateResp struct { - Models []kvPair -} - -type statusResults struct { - SyncInfo struct { - Height string `json:"latest_block_height"` - } `json:"SyncInfo"` -} - -func modifyGenesisAtPath(insertedBlock map[string]interface{}, key string) func(ibc.ChainConfig, []byte) ([]byte, error) { - return func(chainConfig ibc.ChainConfig, genbz []byte) ([]byte, error) { - g := make(map[string]interface{}) - if err := json.Unmarshal(genbz, &g); err != nil { - return nil, fmt.Errorf("failed to unmarshal genesis file: %w", err) - } - - //Get the section of the genesis file under the given key (e.g. "app_state") - genesisBlockI, ok := g[key] - if !ok { - return nil, fmt.Errorf("genesis json does not have top level key: %s", key) - } - - blockBytes, mErr := json.Marshal(genesisBlockI) - if mErr != nil { - return nil, fmt.Errorf("genesis json marshal error for block with key: %s", key) - } - - genesisBlock := make(map[string]interface{}) - mErr = json.Unmarshal(blockBytes, &genesisBlock) - if mErr != nil { - return nil, fmt.Errorf("genesis json unmarshal error for block with key: %s", key) - } - - for k, v := range insertedBlock { - genesisBlock[k] = v - } - - g[key] = genesisBlock - out, err := json.Marshal(g) - if err != nil { - return nil, fmt.Errorf("failed to marshal genesis bytes to json: %w", err) - } - return out, nil - } -} From c819b0cb0fb89c7eb26e61404095a9eba4118ca4 Mon Sep 17 00:00:00 2001 From: Dan Kanefsky Date: Wed, 30 Aug 2023 14:32:01 -0700 Subject: [PATCH 15/22] remove polkadot --- chain/polkadot/keys.go | 106 --- chain/polkadot/keys_test.go | 95 -- chain/polkadot/parachain_node.go | 396 -------- chain/polkadot/polkadot_chain.go | 852 ------------------ chain/polkadot/polkadot_chain_test.go | 91 -- chain/polkadot/query.go | 34 - chain/polkadot/relay_chain_node.go | 300 ------ chain/polkadot/ss58.go | 107 --- chain/polkadot/tx.go | 193 ---- chain/polkadot/wallet.go | 42 - chainfactory.go | 21 - chainspec.go | 38 - examples/polkadot/ics10_grandpa_cw.wasm | Bin 781087 -> 0 bytes examples/polkadot/polkadot_chain_test.go | 232 ----- .../polkadot/push_wasm_client_code_test.go | 183 ---- .../polkadot/substrate_cosmos_ibc_test.go | 174 ---- relayer/rly/cosmos_relayer.go | 3 - 17 files changed, 2867 deletions(-) delete mode 100644 chain/polkadot/keys.go delete mode 100644 chain/polkadot/keys_test.go delete mode 100644 chain/polkadot/parachain_node.go delete mode 100644 chain/polkadot/polkadot_chain.go delete mode 100644 chain/polkadot/polkadot_chain_test.go delete mode 100644 chain/polkadot/query.go delete mode 100644 chain/polkadot/relay_chain_node.go delete mode 100644 chain/polkadot/ss58.go delete mode 100644 chain/polkadot/tx.go delete mode 100644 chain/polkadot/wallet.go delete mode 100644 examples/polkadot/ics10_grandpa_cw.wasm delete mode 100644 examples/polkadot/polkadot_chain_test.go delete mode 100644 examples/polkadot/push_wasm_client_code_test.go delete mode 100644 examples/polkadot/substrate_cosmos_ibc_test.go diff --git a/chain/polkadot/keys.go b/chain/polkadot/keys.go deleted file mode 100644 index 18489ff4c..000000000 --- a/chain/polkadot/keys.go +++ /dev/null @@ -1,106 +0,0 @@ -package polkadot - -import ( - "crypto/ed25519" - "encoding/hex" - "fmt" - - "github.com/decred/dcrd/dcrec/secp256k1/v2" - - schnorrkel "github.com/ChainSafe/go-schnorrkel/1" - "github.com/StirlingMarketingGroup/go-namecase" - p2pCrypto "github.com/libp2p/go-libp2p/core/crypto" - "golang.org/x/crypto/blake2b" -) - -const ( - ss58Ed25519Prefix = "Ed25519HDKD" - ss58Secp256k1Prefix = "Secp256k1HDKD" -) - -var DEV_SEED, _ = hex.DecodeString("fac7959dbfe72f052e5a0c3c8d6530f202b02fd8f9f5ca3580ec8deb7797479e") - -func DeriveEd25519FromName(name string) (*p2pCrypto.Ed25519PrivateKey, error) { - chainCode := make([]byte, 32) - derivePath := []byte{byte(len(name) << 2)} - derivePath = append(derivePath, []byte(namecase.New().NameCase(name))...) - _ = copy(chainCode, []byte(derivePath)) - - hasher, err := blake2b.New256(nil) - if err != nil { - return nil, fmt.Errorf("error constructing hasher: %w", err) - } - - toHash := []byte{byte(len(ss58Ed25519Prefix) << 2)} - toHash = append(toHash, []byte(ss58Ed25519Prefix)...) - toHash = append(toHash, DEV_SEED...) - toHash = append(toHash, chainCode...) - - if _, err := hasher.Write(toHash); err != nil { - return nil, fmt.Errorf("error writing data to hasher: %w", err) - } - - newKey := hasher.Sum(nil) - - if err != nil { - return nil, fmt.Errorf("error deriving: %w", err) - } - privKey := ed25519.NewKeyFromSeed(newKey) - pubKey := privKey.Public().(ed25519.PublicKey) - key := []byte{} - key = append(key, privKey.Seed()...) - key = append(key, pubKey...) - - priv, err := p2pCrypto.UnmarshalEd25519PrivateKey(key) - if err != nil { - return nil, fmt.Errorf("error unmarshaling: %w", err) - } - return priv.(*p2pCrypto.Ed25519PrivateKey), nil -} - -func DeriveSr25519FromName(path []string) (*schnorrkel.MiniSecretKey, error) { - var miniSecretSeed [32]byte - _ = copy(miniSecretSeed[:], DEV_SEED[:32]) - miniSecret, err := schnorrkel.NewMiniSecretKeyFromRaw(miniSecretSeed) - if err != nil { - return nil, fmt.Errorf("error getting mini secret from seed: %w", err) - } - for _, pathItem := range path { - var chainCode [32]byte - derivePath := []byte{byte(len(pathItem) << 2)} - derivePath = append(derivePath, []byte(pathItem)...) - _ = copy(chainCode[:], []byte(derivePath)) - miniSecret, _, err = miniSecret.HardDeriveMiniSecretKey([]byte{}, chainCode) - if err != nil { - return nil, fmt.Errorf("error hard deriving mini secret key") - } - } - - return miniSecret, nil -} - -func DeriveSecp256k1FromName(name string) (*secp256k1.PrivateKey, error) { - chainCode := make([]byte, 32) - derivePath := []byte{byte(len(name) << 2)} - derivePath = append(derivePath, []byte(namecase.New().NameCase(name))...) - _ = copy(chainCode, []byte(derivePath)) - - hasher, err := blake2b.New256(nil) - if err != nil { - return nil, fmt.Errorf("error constructing hasher: %w", err) - } - - toHash := []byte{byte(len(ss58Secp256k1Prefix) << 2)} - toHash = append(toHash, []byte(ss58Secp256k1Prefix)...) - toHash = append(toHash, DEV_SEED...) - toHash = append(toHash, chainCode...) - - if _, err := hasher.Write(toHash); err != nil { - return nil, fmt.Errorf("error writing data to hasher: %w", err) - } - - newKey := hasher.Sum(nil) - privKey, _ := secp256k1.PrivKeyFromBytes(newKey) - - return privKey, nil -} diff --git a/chain/polkadot/keys_test.go b/chain/polkadot/keys_test.go deleted file mode 100644 index f43b043b3..000000000 --- a/chain/polkadot/keys_test.go +++ /dev/null @@ -1,95 +0,0 @@ -package polkadot_test - -import ( - "crypto/ed25519" - "encoding/hex" - "testing" - - p2pCrypto "github.com/libp2p/go-libp2p/core/crypto" - "github.com/libp2p/go-libp2p/core/peer" - "github.com/misko9/go-substrate-rpc-client/v4/signature" - "github.com/strangelove-ventures/interchaintest/v7/chain/polkadot" - "github.com/stretchr/testify/require" -) - -func TestNodeKeyPeerID(t *testing.T) { - nodeKey, err := hex.DecodeString("1b57e31ddf03e39c58207dfcb5445958924b818c08c303a91838e68cfac551b2") - require.NoError(t, err, "error decoding node key from hex string") - - privKeyEd25519 := ed25519.NewKeyFromSeed(nodeKey) - privKey, _, err := p2pCrypto.KeyPairFromStdKey(&privKeyEd25519) - require.NoError(t, err, "error getting private key") - - id, err := peer.IDFromPrivateKey(privKey) - require.NoError(t, err, "error getting peer id from private key") - peerId := id.String() - require.Equal(t, "12D3KooWCqDbuUHRNWPAuHpVnzZGCkkMwgEx7Xd6xgszqtVpH56c", peerId) -} - -func Test_DeriveEd25519FromName(t *testing.T) { - privKey, err := polkadot.DeriveEd25519FromName("Alice") - require.NoError(t, err, "error deriving ed25519 private key") - - pubKey, err := privKey.GetPublic().Raw() - require.NoError(t, err, "error fetching pubkey bytes") - - pubKeyEncoded, err := polkadot.EncodeAddressSS58(pubKey) - require.NoError(t, err, "error encoding ed25519 public key to ss58") - - require.Equal(t, "5wfmbM1KN4DCJeTP6jj9TqCAKKNApYNCG4zhwcweWhXZRo1j", pubKeyEncoded) -} - -func Test_DeriveSr25519FromNameAccount(t *testing.T) { - privKeyAccount, err := polkadot.DeriveSr25519FromName([]string{"Alice"}) - require.NoError(t, err, "error deriving account sr25519 private key") - - b := privKeyAccount.Public().Encode() - pubKeyAccount := b[:] - - pubKeyEncoded, err := polkadot.EncodeAddressSS58(pubKeyAccount) - require.NoError(t, err, "error encoding account public key to ss58") - - kp, err := signature.KeyringPairFromSecret("//Alice", polkadot.Ss58Format) - require.NoError(t, err, "error signature KeyringPairFromSecret") - - pubKeyDecoded, err := polkadot.DecodeAddressSS58(pubKeyEncoded) - require.NoError(t, err, "error decoding SS58 address to pub key") - - require.Equal(t, pubKeyDecoded, kp.PublicKey) -} - -func Test_DeriveSr25519FromNameStash(t *testing.T) { - privKeyStash, err := polkadot.DeriveSr25519FromName([]string{"Alice", "stash"}) - require.NoError(t, err, "error deriving stash sr25519 private key") - - pubKeyStash := make([]byte, 32) - for i, mkByte := range privKeyStash.Public().Encode() { - pubKeyStash[i] = mkByte - } - pubKeyEncoded, err := polkadot.EncodeAddressSS58(pubKeyStash) - require.NoError(t, err, "error encoding stash public key to ss58") - - kp, err := signature.KeyringPairFromSecret("//Alice//stash", polkadot.Ss58Format) - require.NoError(t, err, "error signature KeyringPairFromSecret") - - require.Equal(t, kp.Address, pubKeyEncoded) -} - -func Test_DeriveSecp256k1FromName(t *testing.T) { - privKey, err := polkadot.DeriveSecp256k1FromName("Alice") - require.NoError(t, err, "error deriving secp256k1 private key") - - pubKey := []byte{} - y := privKey.PublicKey.Y.Bytes() - if y[len(y)-1]%2 == 0 { - pubKey = append(pubKey, 0x02) - } else { - pubKey = append(pubKey, 0x03) - } - pubKey = append(pubKey, privKey.PublicKey.X.Bytes()...) - - pubKeyEncoded, err := polkadot.EncodeAddressSS58(pubKey) - require.NoError(t, err, "error encoding secp256k1 public key to ss58") - - require.Equal(t, "NaqsuM2ZDssHFdr7HU8znFsHKpgkCyrCW6aPiLpLTa8Vxi3Q9", pubKeyEncoded) -} diff --git a/chain/polkadot/parachain_node.go b/chain/polkadot/parachain_node.go deleted file mode 100644 index bc8f9c387..000000000 --- a/chain/polkadot/parachain_node.go +++ /dev/null @@ -1,396 +0,0 @@ -package polkadot - -import ( - "context" - "encoding/hex" - "encoding/json" - "fmt" - "path/filepath" - "strings" - - "cosmossdk.io/math" - "github.com/avast/retry-go/v4" - sdktypes "github.com/cosmos/cosmos-sdk/types" - "github.com/docker/docker/client" - "github.com/icza/dyno" - p2pcrypto "github.com/libp2p/go-libp2p/core/crypto" - "github.com/libp2p/go-libp2p/core/peer" - gsrpc "github.com/misko9/go-substrate-rpc-client/v4" - "github.com/strangelove-ventures/interchaintest/v7/ibc" - "github.com/strangelove-ventures/interchaintest/v7/internal/dockerutil" - "go.uber.org/zap" -) - -// Increase parachain wallet amount due to their additional precision -const parachainScaling = int64(1_000) - -// ParachainNode defines the properties required for running a polkadot parachain node. -type ParachainNode struct { - log *zap.Logger - TestName string - Index int - - NetworkID string - containerLifecycle *dockerutil.ContainerLifecycle - VolumeName string - DockerClient *client.Client - Image ibc.DockerImage - - Chain ibc.Chain - Bin string - NodeKey p2pcrypto.PrivKey - ChainID string - Flags []string - RelayChainFlags []string - - api *gsrpc.SubstrateAPI - hostWsPort string - hostRpcPort string -} - -type ParachainNodes []*ParachainNode - -// Name returns the name of the test node container. -func (pn *ParachainNode) Name() string { - return fmt.Sprintf("%s-%d-%s-%s", pn.Bin, pn.Index, pn.ChainID, dockerutil.SanitizeContainerName(pn.TestName)) -} - -// HostName returns the docker hostname of the test container. -func (pn *ParachainNode) HostName() string { - return dockerutil.CondenseHostName(pn.Name()) -} - -// Bind returns the home folder bind point for running the node. -func (pn *ParachainNode) Bind() []string { - return []string{fmt.Sprintf("%s:%s", pn.VolumeName, pn.NodeHome())} -} - -// NodeHome returns the working directory within the docker image, -// the path where the docker volume is mounted. -func (pn *ParachainNode) NodeHome() string { - return "/home/heighliner" -} - -// ParachainChainSpecFileName returns the relative path to the chain spec file -// within the parachain container. -func (pn *ParachainNode) ParachainChainSpecFileName() string { - return fmt.Sprintf("%s.json", pn.ChainID) -} - -// ParachainChainSpecFilePathFull returns the full path to the chain spec file -// within the parachain container -func (pn *ParachainNode) ParachainChainSpecFilePathFull() string { - return filepath.Join(pn.NodeHome(), pn.ParachainChainSpecFileName()) -} - -// RawRelayChainSpecFilePathFull returns the full path to the raw relay chain spec file -// within the container. -func (pn *ParachainNode) RawRelayChainSpecFilePathFull() string { - return filepath.Join(pn.NodeHome(), fmt.Sprintf("%s-raw.json", pn.Chain.Config().ChainID)) -} - -// RawRelayChainSpecFilePathRelative returns the relative path to the raw relay chain spec file -// within the container. -func (pn *ParachainNode) RawRelayChainSpecFilePathRelative() string { - return fmt.Sprintf("%s-raw.json", pn.Chain.Config().ChainID) -} - -// PeerID returns the public key of the node key for p2p. -func (pn *ParachainNode) PeerID() (string, error) { - id, err := peer.IDFromPrivateKey(pn.NodeKey) - if err != nil { - return "", err - } - return id.String(), nil -} - -// MultiAddress returns the p2p multiaddr of the node. -func (pn *ParachainNode) MultiAddress() (string, error) { - peerId, err := pn.PeerID() - if err != nil { - return "", err - } - return fmt.Sprintf("/dns4/%s/tcp/%s/p2p/%s", pn.HostName(), strings.Split(nodePort, "/")[0], peerId), nil -} - -type GetParachainIDResponse struct { - ParachainID int `json:"para_id"` -} - -// GenerateDefaultChainSpec runs build-spec to get the default chain spec into something malleable -func (pn *ParachainNode) GenerateDefaultChainSpec(ctx context.Context) ([]byte, error) { - cmd := []string{ - pn.Bin, - "build-spec", - fmt.Sprintf("--chain=%s", pn.ChainID), - } - res := pn.Exec(ctx, cmd, nil) - if res.Err != nil { - return nil, res.Err - } - return res.Stdout, nil -} - -// GenerateParachainGenesisFile creates the default chain spec, modifies it and returns it. -// The modified chain spec is then written to each Parachain node -func (pn *ParachainNode) GenerateParachainGenesisFile(ctx context.Context, additionalGenesisWallets ...ibc.WalletAmount) ([]byte, error) { - defaultChainSpec, err := pn.GenerateDefaultChainSpec(ctx) - if err != nil { - return nil, fmt.Errorf("error generating default parachain chain spec: %w", err) - } - - var chainSpec interface{} - err = json.Unmarshal(defaultChainSpec, &chainSpec) - if err != nil { - return nil, fmt.Errorf("error unmarshaling parachain chain spec: %w", err) - } - - balances, err := dyno.GetSlice(chainSpec, "genesis", "runtime", "balances", "balances") - if err != nil { - return nil, fmt.Errorf("error getting balances from parachain chain spec: %w", err) - } - - for _, wallet := range additionalGenesisWallets { - balances = append(balances, - []interface{}{wallet.Address, wallet.Amount.MulRaw(parachainScaling)}, - ) - } - if err := dyno.Set(chainSpec, balances, "genesis", "runtime", "balances", "balances"); err != nil { - return nil, fmt.Errorf("error setting parachain balances: %w", err) - } - editedChainSpec, err := json.MarshalIndent(chainSpec, "", " ") - if err != nil { - return nil, fmt.Errorf("error marshaling modified parachain chain spec: %w", err) - } - - return editedChainSpec, nil -} - -// ParachainID retrieves the node parachain ID. -func (pn *ParachainNode) ParachainID(ctx context.Context) (int, error) { - cmd := []string{ - pn.Bin, - "build-spec", - fmt.Sprintf("--chain=%s", pn.ChainID), - } - res := pn.Exec(ctx, cmd, nil) - if res.Err != nil { - return -1, res.Err - } - out := GetParachainIDResponse{} - if err := json.Unmarshal([]byte(res.Stdout), &out); err != nil { - return -1, err - } - return out.ParachainID, nil -} - -// ExportGenesisWasm exports the genesis wasm json for the configured chain ID. -func (pn *ParachainNode) ExportGenesisWasm(ctx context.Context) (string, error) { - cmd := []string{ - pn.Bin, - "export-genesis-wasm", - fmt.Sprintf("--chain=%s", pn.ParachainChainSpecFilePathFull()), - } - res := pn.Exec(ctx, cmd, nil) - if res.Err != nil { - return "", res.Err - } - return string(res.Stdout), nil -} - -// ExportGenesisState exports the genesis state json for the configured chain ID. -func (pn *ParachainNode) ExportGenesisState(ctx context.Context) (string, error) { - cmd := []string{ - pn.Bin, - "export-genesis-state", - fmt.Sprintf("--chain=%s", pn.ParachainChainSpecFilePathFull()), - } - res := pn.Exec(ctx, cmd, nil) - if res.Err != nil { - return "", res.Err - } - return string(res.Stdout), nil -} - -func (pn *ParachainNode) logger() *zap.Logger { - return pn.log.With( - zap.String("chain_id", pn.ChainID), - zap.String("test", pn.TestName), - ) -} - -// CreateNodeContainer assembles a parachain node docker container ready to launch. -func (pn *ParachainNode) CreateNodeContainer(ctx context.Context) error { - nodeKey, err := pn.NodeKey.Raw() - if err != nil { - return fmt.Errorf("error getting ed25519 node key: %w", err) - } - multiAddress, err := pn.MultiAddress() - if err != nil { - return err - } - cmd := []string{ - pn.Bin, - fmt.Sprintf("--ws-port=%s", strings.Split(wsPort, "/")[0]), - "--collator", - fmt.Sprintf("--node-key=%s", hex.EncodeToString(nodeKey[0:32])), - fmt.Sprintf("--%s", IndexedName[pn.Index]), - "--unsafe-ws-external", - "--unsafe-rpc-external", - "--prometheus-external", - "--rpc-cors=all", - "--ws-external", - "--rpc-external", - "--rpc-methods=unsafe", - "--log=ibc_transfer=trace,pallet_ibc=trace,grandpa-verifier=trace,runtime=trace", - "--force-authoring", - "--enable-offchain-indexing=true", - "--pruning=archive", - fmt.Sprintf("--prometheus-port=%s", strings.Split(prometheusPort, "/")[0]), - fmt.Sprintf("--listen-addr=/ip4/0.0.0.0/tcp/%s", strings.Split(nodePort, "/")[0]), - fmt.Sprintf("--public-addr=%s", multiAddress), - "--base-path", pn.NodeHome(), - fmt.Sprintf("--chain=%s", pn.ParachainChainSpecFilePathFull()), - } - cmd = append(cmd, pn.Flags...) - cmd = append(cmd, "--", fmt.Sprintf("--chain=%s", pn.RawRelayChainSpecFilePathFull())) - cmd = append(cmd, pn.RelayChainFlags...) - - return pn.containerLifecycle.CreateContainer(ctx, pn.TestName, pn.NetworkID, pn.Image, exposedPorts, pn.Bind(), pn.HostName(), cmd) -} - -// StopContainer stops the relay chain node container, waiting at most 30 seconds. -func (pn *ParachainNode) StopContainer(ctx context.Context) error { - return pn.containerLifecycle.StopContainer(ctx) -} - -// StartContainer starts the container after it is built by CreateNodeContainer. -func (pn *ParachainNode) StartContainer(ctx context.Context) error { - if err := pn.containerLifecycle.StartContainer(ctx); err != nil { - return err - } - - hostPorts, err := pn.containerLifecycle.GetHostPorts(ctx, wsPort, rpcPort) - if err != nil { - return err - } - - // Set the host ports once since they will not change after the container has started. - pn.hostWsPort, pn.hostRpcPort = hostPorts[0], hostPorts[1] - - explorerUrl := fmt.Sprintf("\033[4;34mhttps://polkadot.js.org/apps?rpc=ws://%s#/explorer\033[0m", - strings.Replace(pn.hostWsPort, "localhost", "127.0.0.1", 1)) - pn.log.Info(explorerUrl, zap.String("container", pn.Name())) - var api *gsrpc.SubstrateAPI - if err = retry.Do(func() error { - var err error - api, err = gsrpc.NewSubstrateAPI("ws://" + pn.hostWsPort) - return err - }, retry.Context(ctx), RtyAtt, RtyDel, RtyErr); err != nil { - return err - } - - pn.api = api - return nil -} - -// Exec run a container for a specific job and block until the container exits. -func (pn *ParachainNode) Exec(ctx context.Context, cmd []string, env []string) dockerutil.ContainerExecResult { - job := dockerutil.NewImage(pn.log, pn.DockerClient, pn.NetworkID, pn.TestName, pn.Image.Repository, pn.Image.Version) - opts := dockerutil.ContainerOptions{ - Binds: pn.Bind(), - Env: env, - User: pn.Image.UidGid, - } - return job.Run(ctx, cmd, opts) -} - -func (pn *ParachainNode) GetBalance(ctx context.Context, address string, denom string) (math.Int, error) { - return GetBalance(pn.api, address) -} - -// GetIbcBalance returns the Coins type of ibc coins in account -func (pn *ParachainNode) GetIbcBalance(ctx context.Context, address string, denom uint64) (sdktypes.Coin, error) { - res, err := pn.api.RPC.IBC.QueryBalanceWithAddress(ctx, address, denom) - if err != nil { - return sdktypes.Coin{}, err - } - return res, nil -} - -// SendFunds sends funds to a wallet from a user account. -// Implements Chain interface. -func (pn *ParachainNode) SendFunds(ctx context.Context, keyName string, amount ibc.WalletAmount) error { - kp, err := pn.Chain.(*PolkadotChain).GetKeyringPair(keyName) - if err != nil { - return err - } - pn.log.Info( - "ParachainNode SendFunds", - zap.String("From", kp.Address), - zap.String("To", amount.Address), - zap.String("Amount", amount.Amount.String()), - ) - hash, err := SendFundsTx(pn.api, kp, amount) - if err != nil { - return err - } - - pn.log.Info("Transfer sent", zap.String("hash", fmt.Sprintf("%#x", hash)), zap.String("container", pn.Name())) - return nil -} - -// SendIbcFunds sends funds to a wallet from a user account. -func (pn *ParachainNode) SendIbcFunds( - ctx context.Context, - channelID string, - keyName string, - amount ibc.WalletAmount, - options ibc.TransferOptions, -) error { - kp, err := pn.Chain.(*PolkadotChain).GetKeyringPair(keyName) - if err != nil { - return err - } - - pn.log.Info( - "ParachainNode SendIbcFunds", - zap.String("From", kp.Address), - zap.String("To", amount.Address), - zap.String("Amount", amount.Amount.String()), - ) - hash, err := SendIbcFundsTx(pn.api, kp, channelID, amount, options) - if err != nil { - pn.log.Info("IBC Transfer not sent", zap.String("hash", fmt.Sprintf("%#x", hash)), zap.String("container", pn.Name())) - return err - } - - pn.log.Info("IBC Transfer sent", zap.String("hash", fmt.Sprintf("%#x", hash)), zap.String("container", pn.Name())) - return nil -} - -// MintFunds mints an asset for a user on parachain, keyName must be the owner of the asset -func (pn *ParachainNode) MintFunds( - keyName string, - amount ibc.WalletAmount, -) error { - kp, err := pn.Chain.(*PolkadotChain).GetKeyringPair(keyName) - if err != nil { - return err - } - - pn.log.Info( - "ParachainNode MintFunds", - zap.String("From", kp.Address), - zap.String("To", amount.Address), - zap.String("Amount", amount.Amount.String()), - ) - hash, err := MintFundsTx(pn.api, kp, amount) - if err != nil { - pn.log.Info("MintFunds not sent", zap.String("hash", fmt.Sprintf("%#x", hash)), zap.String("container", pn.Name())) - return err - } - - pn.log.Info("MintFunds sent", zap.String("hash", fmt.Sprintf("%#x", hash)), zap.String("container", pn.Name())) - return nil -} diff --git a/chain/polkadot/polkadot_chain.go b/chain/polkadot/polkadot_chain.go deleted file mode 100644 index 826c00235..000000000 --- a/chain/polkadot/polkadot_chain.go +++ /dev/null @@ -1,852 +0,0 @@ -package polkadot - -import ( - "context" - "crypto/rand" - crand "crypto/rand" - "encoding/json" - "fmt" - "io" - "strings" - - "cosmossdk.io/math" - "github.com/99designs/keyring" - "github.com/StirlingMarketingGroup/go-namecase" - sdktypes "github.com/cosmos/cosmos-sdk/types" - "github.com/cosmos/go-bip39" - "github.com/docker/docker/api/types" - volumetypes "github.com/docker/docker/api/types/volume" - "github.com/docker/docker/client" - dockerclient "github.com/docker/docker/client" - "github.com/icza/dyno" - p2pcrypto "github.com/libp2p/go-libp2p/core/crypto" - "github.com/misko9/go-substrate-rpc-client/v4/signature" - gstypes "github.com/misko9/go-substrate-rpc-client/v4/types" - "github.com/strangelove-ventures/interchaintest/v7/ibc" - "github.com/strangelove-ventures/interchaintest/v7/internal/blockdb" - "github.com/strangelove-ventures/interchaintest/v7/internal/dockerutil" - "go.uber.org/zap" - "golang.org/x/sync/errgroup" -) - -// Increase polkadot wallet amount due to their additional precision -const polkadotScaling = int64(1_000) - -// PolkadotChain implements the ibc.Chain interface for substrate chains. -type PolkadotChain struct { - log *zap.Logger - testName string - cfg ibc.ChainConfig - numRelayChainNodes int - parachainConfig []ParachainConfig - RelayChainNodes RelayChainNodes - ParachainNodes []ParachainNodes - keyring keyring.Keyring -} - -// PolkadotAuthority is used when constructing the validator authorities in the substrate chain spec. -type PolkadotAuthority struct { - Grandpa string `json:"grandpa"` - Babe string `json:"babe"` - IMOnline string `json:"im_online"` - ParachainValidator string `json:"parachain_validator"` - AuthorityDiscovery string `json:"authority_discovery"` - ParaValidator string `json:"para_validator"` - ParaAssignment string `json:"para_assignment"` - Beefy string `json:"beefy"` -} - -// PolkadotParachainSpec is used when constructing substrate chain spec for parachains. -type PolkadotParachainSpec struct { - GenesisHead string `json:"genesis_head"` - ValidationCode string `json:"validation_code"` - Parachain bool `json:"parachain"` -} - -// ParachainConfig is a shared type that allows callers of this module to configure a parachain. -type ParachainConfig struct { - ChainID string - Bin string - Image ibc.DockerImage - NumNodes int - Flags []string - RelayChainFlags []string -} - -// IndexedName is a slice of the substrate dev key names used for key derivation. -var IndexedName = []string{"alice", "bob", "charlie", "dave", "ferdie"} -var IndexedUri = []string{"//Alice", "//Bob", "//Charlie", "//Dave", "//Ferdie"} - -// NewPolkadotChain returns an uninitialized PolkadotChain, which implements the ibc.Chain interface. -func NewPolkadotChain(log *zap.Logger, testName string, chainConfig ibc.ChainConfig, numRelayChainNodes int, parachains []ParachainConfig) *PolkadotChain { - return &PolkadotChain{ - log: log, - testName: testName, - cfg: chainConfig, - numRelayChainNodes: numRelayChainNodes, - parachainConfig: parachains, - keyring: keyring.NewArrayKeyring(nil), - } -} - -// Config fetches the chain configuration. -// Implements Chain interface. -func (c *PolkadotChain) Config() ibc.ChainConfig { - return c.cfg -} - -func (c *PolkadotChain) NewRelayChainNode( - ctx context.Context, - i int, - chain *PolkadotChain, - dockerClient *dockerclient.Client, - networkID string, - testName string, - image ibc.DockerImage, -) (*RelayChainNode, error) { - seed := make([]byte, 32) - if _, err := rand.Read(seed); err != nil { - return nil, err - } - - nodeKey, _, err := p2pcrypto.GenerateEd25519Key(crand.Reader) - if err != nil { - return nil, fmt.Errorf("error generating node key: %w", err) - } - - nameCased := namecase.New().NameCase(IndexedName[i]) - - ed25519PrivKey, err := DeriveEd25519FromName(nameCased) - if err != nil { - return nil, err - } - - accountKeyName := IndexedName[i] - accountKeyUri := IndexedUri[i] - stashKeyName := accountKeyName + "stash" - stashKeyUri := accountKeyUri + "//stash" - - if err := c.RecoverKey(ctx, accountKeyName, accountKeyUri); err != nil { - return nil, err - } - - if err := c.RecoverKey(ctx, stashKeyName, stashKeyUri); err != nil { - return nil, err - } - - ecdsaPrivKey, err := DeriveSecp256k1FromName(nameCased) - if err != nil { - return nil, fmt.Errorf("error generating secp256k1 private key: %w", err) - } - - pn := &RelayChainNode{ - log: c.log, - Index: i, - Chain: c, - DockerClient: dockerClient, - NetworkID: networkID, - TestName: testName, - Image: image, - NodeKey: nodeKey, - Ed25519PrivateKey: ed25519PrivKey, - AccountKeyName: accountKeyName, - StashKeyName: stashKeyName, - EcdsaPrivateKey: *ecdsaPrivKey, - } - - pn.containerLifecycle = dockerutil.NewContainerLifecycle(c.log, dockerClient, pn.Name()) - - v, err := dockerClient.VolumeCreate(ctx, volumetypes.CreateOptions{ - Labels: map[string]string{ - dockerutil.CleanupLabel: testName, - - dockerutil.NodeOwnerLabel: pn.Name(), - }, - }) - if err != nil { - return nil, fmt.Errorf("creating volume for chain node: %w", err) - } - pn.VolumeName = v.Name - - if err := dockerutil.SetVolumeOwner(ctx, dockerutil.VolumeOwnerOptions{ - Log: c.log, - Client: dockerClient, - VolumeName: v.Name, - ImageRef: image.Ref(), - TestName: testName, - UidGid: image.UidGid, - }); err != nil { - return nil, fmt.Errorf("set volume owner: %w", err) - } - - return pn, nil -} - -func (c *PolkadotChain) NewParachainNode( - ctx context.Context, - i int, - dockerClient *dockerclient.Client, - networkID string, - testName string, - parachainConfig ParachainConfig, -) (*ParachainNode, error) { - nodeKey, _, err := p2pcrypto.GenerateEd25519Key(crand.Reader) - if err != nil { - return nil, fmt.Errorf("error generating node key: %w", err) - } - pn := &ParachainNode{ - log: c.log, - Index: i, - Chain: c, - DockerClient: dockerClient, - NetworkID: networkID, - TestName: testName, - NodeKey: nodeKey, - Image: parachainConfig.Image, - Bin: parachainConfig.Bin, - ChainID: parachainConfig.ChainID, - Flags: parachainConfig.Flags, - RelayChainFlags: parachainConfig.RelayChainFlags, - } - - pn.containerLifecycle = dockerutil.NewContainerLifecycle(c.log, dockerClient, pn.Name()) - - v, err := dockerClient.VolumeCreate(ctx, volumetypes.CreateOptions{ - Labels: map[string]string{ - dockerutil.CleanupLabel: testName, - - dockerutil.NodeOwnerLabel: pn.Name(), - }, - }) - if err != nil { - return nil, fmt.Errorf("creating volume for chain node: %w", err) - } - pn.VolumeName = v.Name - - if err := dockerutil.SetVolumeOwner(ctx, dockerutil.VolumeOwnerOptions{ - Log: c.log, - Client: dockerClient, - VolumeName: v.Name, - ImageRef: parachainConfig.Image.Ref(), - TestName: testName, - UidGid: parachainConfig.Image.UidGid, - }); err != nil { - return nil, fmt.Errorf("set volume owner: %w", err) - } - - return pn, nil -} - -// Initialize initializes node structs so that things like initializing keys can be done before starting the chain. -// Implements Chain interface. -func (c *PolkadotChain) Initialize(ctx context.Context, testName string, cli *client.Client, networkID string) error { - relayChainNodes := []*RelayChainNode{} - chainCfg := c.Config() - images := []ibc.DockerImage{} - images = append(images, chainCfg.Images...) - for _, parachain := range c.parachainConfig { - images = append(images, parachain.Image) - } - for _, image := range images { - rc, err := cli.ImagePull( - ctx, - image.Repository+":"+image.Version, - types.ImagePullOptions{}, - ) - if err != nil { - c.log.Error("Failed to pull image", - zap.Error(err), - zap.String("repository", image.Repository), - zap.String("tag", image.Version), - ) - } else { - _, _ = io.Copy(io.Discard, rc) - _ = rc.Close() - } - } - for i := 0; i < c.numRelayChainNodes; i++ { - pn, err := c.NewRelayChainNode(ctx, i, c, cli, networkID, testName, chainCfg.Images[0]) - if err != nil { - return err - } - relayChainNodes = append(relayChainNodes, pn) - } - c.RelayChainNodes = relayChainNodes - for _, pc := range c.parachainConfig { - parachainNodes := []*ParachainNode{} - for i := 0; i < pc.NumNodes; i++ { - pn, err := c.NewParachainNode(ctx, i, cli, networkID, testName, pc) - if err != nil { - return err - } - parachainNodes = append(parachainNodes, pn) - } - c.ParachainNodes = append(c.ParachainNodes, parachainNodes) - } - - return nil -} - -func runtimeGenesisPath(path ...interface{}) []interface{} { - fullPath := []interface{}{"genesis", "runtime", "runtime_genesis_config"} - fullPath = append(fullPath, path...) - return fullPath -} - -func (c *PolkadotChain) modifyRelayChainGenesis(ctx context.Context, chainSpec interface{}, additionalGenesisWallets []ibc.WalletAmount) error { - bootNodes := []string{} - authorities := [][]interface{}{} - balances := [][]interface{}{} - var sudoAddress string - for i, n := range c.RelayChainNodes { - multiAddress, err := n.MultiAddress() - if err != nil { - return err - } - bootNodes = append(bootNodes, multiAddress) - stashAddress, err := c.GetAddress(ctx, n.StashKeyName) - if err != nil { - return fmt.Errorf("error getting stash address: %w", err) - } - accountAddress, err := c.GetAddress(ctx, n.AccountKeyName) - if err != nil { - return fmt.Errorf("error getting account address: %w", err) - } - grandpaAddress, err := n.GrandpaAddress() - if err != nil { - return fmt.Errorf("error getting grandpa address") - } - beefyAddress, err := n.EcdsaAddress() - if err != nil { - return fmt.Errorf("error getting beefy address") - } - balances = append(balances, - []interface{}{string(stashAddress), uint64(1_100_000_000_000_000_000)}, - []interface{}{string(accountAddress), uint64(1_100_000_000_000_000_000)}, - ) - if i == 0 { - sudoAddress = string(accountAddress) - } - authority := []interface{}{string(stashAddress), string(stashAddress), PolkadotAuthority{ - Grandpa: grandpaAddress, - Babe: string(accountAddress), - IMOnline: string(accountAddress), - ParachainValidator: string(accountAddress), - AuthorityDiscovery: string(accountAddress), - ParaValidator: string(accountAddress), - ParaAssignment: string(accountAddress), - Beefy: beefyAddress, - }} - authorities = append(authorities, authority) - } - for _, wallet := range additionalGenesisWallets { - balances = append(balances, - []interface{}{wallet.Address, wallet.Amount.MulRaw(polkadotScaling)}, - ) - } - - if err := dyno.Set(chainSpec, bootNodes, "bootNodes"); err != nil { - return fmt.Errorf("error setting boot nodes: %w", err) - } - if err := dyno.Set(chainSpec, authorities, runtimeGenesisPath("session", "keys")...); err != nil { - return fmt.Errorf("error setting authorities: %w", err) - } - if err := dyno.Set(chainSpec, balances, runtimeGenesisPath("balances", "balances")...); err != nil { - return fmt.Errorf("error setting balances: %w", err) - } - if err := dyno.Set(chainSpec, sudoAddress, runtimeGenesisPath("sudo", "key")...); err != nil { - return fmt.Errorf("error setting sudo key: %w", err) - } - /*if err := dyno.Set(chainSpec, sudoAddress, runtimeGenesisPath("bridgeRococoGrandpa", "owner")...); err != nil { - return fmt.Errorf("error setting bridgeRococoGrandpa owner: %w", err) - } - if err := dyno.Set(chainSpec, sudoAddress, runtimeGenesisPath("bridgeWococoGrandpa", "owner")...); err != nil { - return fmt.Errorf("error setting bridgeWococoGrandpa owner: %w", err) - } - if err := dyno.Set(chainSpec, sudoAddress, runtimeGenesisPath("bridgeRococoMessages", "owner")...); err != nil { - return fmt.Errorf("error setting bridgeRococoMessages owner: %w", err) - } - if err := dyno.Set(chainSpec, sudoAddress, runtimeGenesisPath("bridgeWococoMessages", "owner")...); err != nil { - return fmt.Errorf("error setting bridgeWococoMessages owner: %w", err) - } - */ - if err := dyno.Set(chainSpec, 2, runtimeGenesisPath("configuration", "config", "validation_upgrade_delay")...); err != nil { - return fmt.Errorf("error setting validation upgrade delay: %w", err) - } - parachains := [][]interface{}{} - - for _, parachainNodes := range c.ParachainNodes { - firstParachainNode := parachainNodes[0] - parachainID, err := firstParachainNode.ParachainID(ctx) - if err != nil { - return fmt.Errorf("error getting parachain ID: %w", err) - } - genesisState, err := firstParachainNode.ExportGenesisState(ctx) - if err != nil { - return fmt.Errorf("error exporting genesis state: %w", err) - } - genesisWasm, err := firstParachainNode.ExportGenesisWasm(ctx) - if err != nil { - return fmt.Errorf("error exporting genesis wasm: %w", err) - } - - composableParachain := []interface{}{parachainID, PolkadotParachainSpec{ - GenesisHead: genesisState, - ValidationCode: genesisWasm, - Parachain: true, - }} - parachains = append(parachains, composableParachain) - } - - if err := dyno.Set(chainSpec, parachains, runtimeGenesisPath("paras", "paras")...); err != nil { - return fmt.Errorf("error setting parachains: %w", err) - } - if err := dyno.Set(chainSpec, 20, "genesis", "runtime", "session_length_in_blocks"); err != nil { - return fmt.Errorf("error setting session_length_in_blocks: %w", err) - } - return nil -} - -func (c *PolkadotChain) logger() *zap.Logger { - return c.log.With( - zap.String("chain_id", c.cfg.ChainID), - zap.String("test", c.testName), - ) -} - -// Start sets up everything needed (validators, gentx, fullnodes, peering, additional accounts) for chain to start from genesis. -// Implements Chain interface. -func (c *PolkadotChain) Start(testName string, ctx context.Context, additionalGenesisWallets ...ibc.WalletAmount) error { - var eg errgroup.Group - // Generate genesis file for each set of parachains - for _, parachainNodes := range c.ParachainNodes { - firstParachainNode := parachainNodes[0] - parachainChainSpec, err := firstParachainNode.GenerateParachainGenesisFile(ctx, additionalGenesisWallets...) - if err != nil { - return fmt.Errorf("error generating parachain genesis file: %w", err) - } - for _, n := range parachainNodes { - n := n - eg.Go(func() error { - c.logger().Info("Copying parachain chain spec", zap.String("container", n.Name())) - fw := dockerutil.NewFileWriter(n.logger(), n.DockerClient, n.TestName) - return fw.WriteFile(ctx, n.VolumeName, n.ParachainChainSpecFileName(), parachainChainSpec) - }) - } - } - if err := eg.Wait(); err != nil { - return err - } - - // generate chain spec - firstNode := c.RelayChainNodes[0] - if err := firstNode.GenerateChainSpec(ctx); err != nil { - return fmt.Errorf("error generating chain spec: %w", err) - } - fr := dockerutil.NewFileRetriever(c.logger(), firstNode.DockerClient, c.testName) - fw := dockerutil.NewFileWriter(c.logger(), firstNode.DockerClient, c.testName) - - chainSpecBytes, err := fr.SingleFileContent(ctx, firstNode.VolumeName, firstNode.ChainSpecFilePathContainer()) - if err != nil { - return fmt.Errorf("error reading chain spec: %w", err) - } - - var chainSpec interface{} - if err := json.Unmarshal(chainSpecBytes, &chainSpec); err != nil { - return fmt.Errorf("error unmarshaling chain spec: %w", err) - } - - if err := c.modifyRelayChainGenesis(ctx, chainSpec, additionalGenesisWallets); err != nil { - return fmt.Errorf("error modifying genesis: %w", err) - } - - editedChainSpec, err := json.MarshalIndent(chainSpec, "", " ") - if err != nil { - return fmt.Errorf("error marshaling modified chain spec: %w", err) - } - - if err := fw.WriteFile(ctx, firstNode.VolumeName, firstNode.ChainSpecFilePathContainer(), editedChainSpec); err != nil { - return fmt.Errorf("error writing modified chain spec: %w", err) - } - - c.logger().Info("Generating raw chain spec", zap.String("container", firstNode.Name())) - - if err := firstNode.GenerateChainSpecRaw(ctx); err != nil { - return err - } - - rawChainSpecBytes, err := fr.SingleFileContent(ctx, firstNode.VolumeName, firstNode.RawChainSpecFilePathRelative()) - if err != nil { - return fmt.Errorf("error reading chain spec: %w", err) - } - - for i, n := range c.RelayChainNodes { - n := n - i := i - eg.Go(func() error { - if i != 0 { - c.logger().Info("Copying raw chain spec", zap.String("container", n.Name())) - if err := fw.WriteFile(ctx, n.VolumeName, n.RawChainSpecFilePathRelative(), rawChainSpecBytes); err != nil { - return fmt.Errorf("error writing raw chain spec: %w", err) - } - } - c.logger().Info("Creating container", zap.String("name", n.Name())) - if err := n.CreateNodeContainer(ctx); err != nil { - return err - } - c.logger().Info("Starting container", zap.String("name", n.Name())) - return n.StartContainer(ctx) - }) - } - if err := eg.Wait(); err != nil { - return err - } - for _, nodes := range c.ParachainNodes { - nodes := nodes - for _, n := range nodes { - n := n - eg.Go(func() error { - c.logger().Info("Copying raw chain spec", zap.String("container", n.Name())) - if err := fw.WriteFile(ctx, n.VolumeName, n.RawRelayChainSpecFilePathRelative(), rawChainSpecBytes); err != nil { - return fmt.Errorf("error writing raw chain spec: %w", err) - } - //fmt.Print(string(rawChainSpecBytes)) - c.logger().Info("Creating container", zap.String("name", n.Name())) - if err := n.CreateNodeContainer(ctx); err != nil { - return err - } - c.logger().Info("Starting container", zap.String("name", n.Name())) - return n.StartContainer(ctx) - }) - } - } - if err := eg.Wait(); err != nil { - return err - } - - return nil -} - -// Exec runs an arbitrary command using Chain's docker environment. -// Implements Chain interface. -func (c *PolkadotChain) Exec(ctx context.Context, cmd []string, env []string) ([]byte, []byte, error) { - res := c.RelayChainNodes[0].Exec(ctx, cmd, env) - return res.Stdout, res.Stderr, res.Err -} - -// GetRPCAddress retrieves the rpc address that can be reached by other containers in the docker network. -// Implements Chain interface. -func (c *PolkadotChain) GetRPCAddress() string { - var parachainHostName string - port := strings.Split(rpcPort, "/")[0] - - if len(c.ParachainNodes) > 0 && len(c.ParachainNodes[0]) > 0 { - parachainHostName = c.ParachainNodes[0][0].HostName() - //return fmt.Sprintf("%s:%s", c.ParachainNodes[0][0].HostName(), strings.Split(rpcPort, "/")[0]) - } else { - parachainHostName = c.RelayChainNodes[0].HostName() - } - relaychainHostName := c.RelayChainNodes[0].HostName() - parachainUrl := fmt.Sprintf("http://%s:%s", parachainHostName, port) - relaychainUrl := fmt.Sprintf("http://%s:%s", relaychainHostName, port) - return fmt.Sprintf("%s,%s", parachainUrl, relaychainUrl) - //return fmt.Sprintf("%s:%s", c.RelayChainNodes[0].HostName(), strings.Split(rpcPort, "/")[0]) -} - -// GetGRPCAddress retrieves the grpc address that can be reached by other containers in the docker network. -// Implements Chain interface. -func (c *PolkadotChain) GetGRPCAddress() string { - if len(c.ParachainNodes) > 0 && len(c.ParachainNodes[0]) > 0 { - return fmt.Sprintf("%s:%s", c.ParachainNodes[0][0].HostName(), strings.Split(wsPort, "/")[0]) - } - return fmt.Sprintf("%s:%s", c.RelayChainNodes[0].HostName(), strings.Split(wsPort, "/")[0]) -} - -// GetHostRPCAddress returns the rpc address that can be reached by processes on the host machine. -// Note that this will not return a valid value until after Start returns. -// Implements Chain interface. -func (c *PolkadotChain) GetHostRPCAddress() string { - if len(c.ParachainNodes) > 0 && len(c.ParachainNodes[0]) > 0 { - return c.ParachainNodes[0][0].hostRpcPort - } - return c.RelayChainNodes[0].hostRpcPort -} - -// GetHostGRPCAddress returns the grpc address that can be reached by processes on the host machine. -// Note that this will not return a valid value until after Start returns. -// Implements Chain interface. -func (c *PolkadotChain) GetHostGRPCAddress() string { - if len(c.ParachainNodes) > 0 && len(c.ParachainNodes[0]) > 0 { - return c.ParachainNodes[0][0].hostWsPort - } - return c.RelayChainNodes[0].hostWsPort -} - -// Height returns the current block height or an error if unable to get current height. -// Implements Chain interface. -func (c *PolkadotChain) Height(ctx context.Context) (uint64, error) { - if len(c.ParachainNodes) > 0 && len(c.ParachainNodes[0]) > 0 { - block, err := c.ParachainNodes[0][0].api.RPC.Chain.GetBlockLatest() - if err != nil { - return 0, err - } - return uint64(block.Block.Header.Number), nil - } - block, err := c.RelayChainNodes[0].api.RPC.Chain.GetBlockLatest() - if err != nil { - return 0, err - } - return uint64(block.Block.Header.Number), nil -} - -// ExportState exports the chain state at specific height. -// Implements Chain interface. -func (c *PolkadotChain) ExportState(ctx context.Context, height int64) (string, error) { - panic("[ExportState] not implemented yet") -} - -// HomeDir is the home directory of a node running in a docker container. Therefore, this maps to -// the container's filesystem (not the host). -// Implements Chain interface. -func (c *PolkadotChain) HomeDir() string { - panic("[HomeDir] not implemented yet") -} - -func NewMnemonic() (string, error) { - // Implementation copied from substrate's go-relayer implementation - entropySeed, err := bip39.NewEntropy(256) - if err != nil { - return "", err - } - mnemonic, err := bip39.NewMnemonic(entropySeed) - if err != nil { - return "", err - } - - return mnemonic, nil -} - -// CreateKey creates a test key in the "user" node (either the first fullnode or the first validator if no fullnodes). -// Implements Chain interface. -func (c *PolkadotChain) CreateKey(ctx context.Context, keyName string) error { - _, err := c.keyring.Get(keyName) - if err == nil { - return fmt.Errorf("Key already exists: %s", keyName) - } - - mnemonic, err := NewMnemonic() - if err != nil { - return err - } - - kp, err := signature.KeyringPairFromSecret(mnemonic, Ss58Format) - if err != nil { - return fmt.Errorf("failed to create keypair: %w", err) - } - - serializedKp, err := json.Marshal(kp) - if err != nil { - return err - } - err = c.keyring.Set(keyring.Item{ - Key: keyName, - Data: serializedKp, - }) - - return err -} - -// RecoverKey recovers an existing user from a given mnemonic. -// Implements Chain interface. -func (c *PolkadotChain) RecoverKey(ctx context.Context, keyName, mnemonic string) error { - _, err := c.keyring.Get(keyName) - if err == nil { - return fmt.Errorf("Key already exists: %s", keyName) - } - - kp, err := signature.KeyringPairFromSecret(mnemonic, Ss58Format) - if err != nil { - return fmt.Errorf("failed to create keypair: %w", err) - } - - serializedKp, err := json.Marshal(kp) - if err != nil { - return err - } - err = c.keyring.Set(keyring.Item{ - Key: keyName, - Data: serializedKp, - }) - - return err -} - -// GetAddress fetches the address for a test key on the "user" node (either the first fullnode or the first validator if no fullnodes). -// Implements Chain interface. -func (c *PolkadotChain) GetAddress(ctx context.Context, keyName string) ([]byte, error) { - krItem, err := c.keyring.Get(keyName) - if err != nil { - return nil, err - } - - kp := signature.KeyringPair{} - err = json.Unmarshal(krItem.Data, &kp) - if err != nil { - return nil, err - } - - return []byte(kp.Address), nil -} - -func (c *PolkadotChain) GetPublicKey(keyName string) ([]byte, error) { - krItem, err := c.keyring.Get(keyName) - if err != nil { - return nil, err - } - - kp := signature.KeyringPair{} - err = json.Unmarshal(krItem.Data, &kp) - if err != nil { - return nil, err - } - - return kp.PublicKey, nil -} - -// BuildWallet will return a Polkadot wallet -// If mnemonic != "", it will restore using that mnemonic -// If mnemonic == "", it will create a new key -func (c *PolkadotChain) BuildWallet(ctx context.Context, keyName string, mnemonic string) (ibc.Wallet, error) { - if mnemonic != "" { - if err := c.RecoverKey(ctx, keyName, mnemonic); err != nil { - return nil, fmt.Errorf("failed to recover key with name %q on chain %s: %w", keyName, c.cfg.Name, err) - } - } else { - if err := c.CreateKey(ctx, keyName); err != nil { - return nil, fmt.Errorf("failed to create key with name %q on chain %s: %w", keyName, c.cfg.Name, err) - } - } - - addrBytes, err := c.GetAddress(ctx, keyName) - if err != nil { - return nil, fmt.Errorf("failed to get account address for key %q on chain %s: %w", keyName, c.cfg.Name, err) - } - - return NewWallet(keyName, addrBytes, mnemonic, c.cfg), nil -} - -// BuildRelayerWallet will return a Polkadot wallet populated with the mnemonic so that the wallet can -// be restored in the relayer node using the mnemonic. After it is built, that address is included in -// genesis with some funds. -func (c *PolkadotChain) BuildRelayerWallet(ctx context.Context, keyName string) (ibc.Wallet, error) { - mnemonic, err := NewMnemonic() - if err != nil { - return nil, err - } - - return c.BuildWallet(ctx, keyName, mnemonic) -} - -// SendFunds sends funds to a wallet from a user account. -// Implements Chain interface. -func (c *PolkadotChain) SendFunds(ctx context.Context, keyName string, amount ibc.WalletAmount) error { - // If denom == polkadot denom, it is a relay chain tx, else parachain tx - if amount.Denom == c.cfg.Denom { - // If keyName == faucet, also fund parachain's user until relay chain and parachains are their own chains - if keyName == "faucet" { - err := c.ParachainNodes[0][0].SendFunds(ctx, keyName, amount) - if err != nil { - return err - } - } - return c.RelayChainNodes[0].SendFunds(ctx, keyName, amount) - } - - return c.ParachainNodes[0][0].SendFunds(ctx, keyName, amount) -} - -// SendIBCTransfer sends an IBC transfer returning a transaction or an error if the transfer failed. -// Implements Chain interface. -func (c *PolkadotChain) SendIBCTransfer( - ctx context.Context, - channelID string, - keyName string, - amount ibc.WalletAmount, - options ibc.TransferOptions, -) (ibc.Tx, error) { - return ibc.Tx{}, c.ParachainNodes[0][0].SendIbcFunds(ctx, channelID, keyName, amount, options) -} - -// GetBalance fetches the current balance for a specific account address and denom. -// Implements Chain interface. -func (c *PolkadotChain) GetBalance(ctx context.Context, address string, denom string) (math.Int, error) { - // If denom == polkadot denom, it is a relay chain query, else parachain query - if denom == c.cfg.Denom { - return c.RelayChainNodes[0].GetBalance(ctx, address, denom) - } - - return c.ParachainNodes[0][0].GetBalance(ctx, address, denom) -} - -// AccountInfo contains information of an account -type AccountInfo struct { - Nonce gstypes.U32 - Consumers gstypes.U32 - Providers gstypes.U32 - Sufficients gstypes.U32 - Data struct { - Free gstypes.U128 - Reserved gstypes.U128 - MiscFrozen gstypes.U128 - FreeFrozen gstypes.U128 - } -} - -// GetGasFeesInNativeDenom gets the fees in native denom for an amount of spent gas. -// Implements Chain interface. -func (c *PolkadotChain) GetGasFeesInNativeDenom(gasPaid int64) int64 { - panic("[GetGasFeesInNativeDenom] not implemented yet") -} - -// Acknowledgements returns all acknowledgements in a block at height. -// Implements Chain interface. -func (c *PolkadotChain) Acknowledgements(ctx context.Context, height uint64) ([]ibc.PacketAcknowledgement, error) { - panic("[Acknowledgements] not implemented yet") -} - -// Timeouts returns all timeouts in a block at height. -// Implements Chain interface. -func (c *PolkadotChain) Timeouts(ctx context.Context, height uint64) ([]ibc.PacketTimeout, error) { - panic("[Timeouts] not implemented yet") -} - -// GetKeyringPair returns the keyring pair from the keyring using keyName -func (c *PolkadotChain) GetKeyringPair(keyName string) (signature.KeyringPair, error) { - kp := signature.KeyringPair{} - krItem, err := c.keyring.Get(keyName) - if err != nil { - return kp, err - } - - err = json.Unmarshal(krItem.Data, &kp) - if err != nil { - return kp, err - } - - return kp, nil -} - -// FindTxs implements blockdb.BlockSaver (Not implemented yet for polkadot, but we don't want to exit) -func (c *PolkadotChain) FindTxs(ctx context.Context, height uint64) ([]blockdb.Tx, error) { - return []blockdb.Tx{}, nil -} - -// GetIbcBalance returns the Coins type of ibc coins in account -func (c *PolkadotChain) GetIbcBalance(ctx context.Context, address string, denom uint64) (sdktypes.Coin, error) { - return c.ParachainNodes[0][0].GetIbcBalance(ctx, address, denom) -} - -// MintFunds mints an asset for a user on parachain, keyName must be the owner of the asset -func (c *PolkadotChain) MintFunds(keyName string, amount ibc.WalletAmount) error { - return c.ParachainNodes[0][0].MintFunds(keyName, amount) -} diff --git a/chain/polkadot/polkadot_chain_test.go b/chain/polkadot/polkadot_chain_test.go deleted file mode 100644 index beb065491..000000000 --- a/chain/polkadot/polkadot_chain_test.go +++ /dev/null @@ -1,91 +0,0 @@ -package polkadot_test - -import ( - "context" - "fmt" - "testing" - - interchaintest "github.com/strangelove-ventures/interchaintest/v7" - "github.com/strangelove-ventures/interchaintest/v7/ibc" - "github.com/stretchr/testify/require" - "go.uber.org/zap/zaptest" -) - -func TestWalletMethods(t *testing.T) { - ctx := context.Background() - nv := 5 - nf := 3 - - chains, err := interchaintest.NewBuiltinChainFactory(zaptest.NewLogger(t), []*interchaintest.ChainSpec{ - { - ChainConfig: ibc.ChainConfig{ - Type: "polkadot", - Name: "composable", - ChainID: "rococo-local", - Images: []ibc.DockerImage{ - { - Repository: "seunlanlege/centauri-polkadot", - Version: "v0.9.27", - UidGid: "1025:1025", - }, - { - Repository: "seunlanlege/centauri-parachain", - Version: "v0.9.27", - //UidGid: "1025:1025", - }, - }, - Bin: "polkadot", - Bech32Prefix: "composable", - Denom: "uDOT", - GasPrices: "", - GasAdjustment: 0, - TrustingPeriod: "", - CoinType: "354", - }, - NumValidators: &nv, - NumFullNodes: &nf, - }, - }, - ).Chains(t.Name()) - - require.NoError(t, err, "failed to get polkadot chain") - require.Len(t, chains, 1) - chain := chains[0] - - // BuildRelayerWallet test - relayKeyName := "relayerWallet" - relayWallet, err := chain.BuildRelayerWallet(ctx, relayKeyName) - require.NoError(t, err, "Error building wallet") - - address, err := chain.GetAddress(ctx, relayKeyName) - require.NoError(t, err, "Error getting relay address") - fmt.Println("Relay wallet mnemonic: ", relayWallet.Mnemonic()) - fmt.Println("Relay wallet keyname: ", relayWallet.KeyName()) - fmt.Println("Relay wallet address: ", relayWallet.FormattedAddress()) - fmt.Println("Address: ", address) - require.Equal(t, relayWallet.FormattedAddress(), string(address), "Relay addresses not equal") - - // BuildWallet test - userKeyName := "userWallet" - userWallet, err := chain.BuildRelayerWallet(ctx, userKeyName) - require.NoError(t, err, "Error building wallet") - - address, err = chain.GetAddress(ctx, userKeyName) - require.NoError(t, err, "Error getting user address") - fmt.Println("Wallet mnemonic: ", userWallet.Mnemonic()) - fmt.Println("Wallet keyname: ", userWallet.KeyName()) - fmt.Println("Wallet address: ", userWallet.FormattedAddress()) - fmt.Println("Address: ", address) - require.Equal(t, userWallet.FormattedAddress(), string(address), "User addresses not equal") - - // RecoverKey test - recoverKeyName := "recoverWallet" - err = chain.RecoverKey(ctx, recoverKeyName, userWallet.Mnemonic()) - require.NoError(t, err, "Error on RecoverKey") - - userAddress, err := chain.GetAddress(ctx, userKeyName) - require.NoError(t, err, "Error getting user address for recover comparison") - recoverAddress, err := chain.GetAddress(ctx, recoverKeyName) - require.NoError(t, err, "Error getting recover address for recover comparison") - require.Equal(t, userAddress, recoverAddress, "User and recover addresses not equal") -} diff --git a/chain/polkadot/query.go b/chain/polkadot/query.go deleted file mode 100644 index 8b0ca27db..000000000 --- a/chain/polkadot/query.go +++ /dev/null @@ -1,34 +0,0 @@ -package polkadot - -import ( - "cosmossdk.io/math" - gsrpc "github.com/misko9/go-substrate-rpc-client/v4" - gstypes "github.com/misko9/go-substrate-rpc-client/v4/types" -) - -// GetBalance fetches the current balance for a specific account address using the SubstrateAPI -func GetBalance(api *gsrpc.SubstrateAPI, address string) (math.Int, error) { - meta, err := api.RPC.State.GetMetadataLatest() - if err != nil { - return math.Int{}, err - } - pubKey, err := DecodeAddressSS58(address) - if err != nil { - return math.Int{}, err - } - key, err := gstypes.CreateStorageKey(meta, "System", "Account", pubKey, nil) - if err != nil { - return math.Int{}, err - } - - var accountInfo AccountInfo - ok, err := api.RPC.State.GetStorageLatest(key, &accountInfo) - if err != nil { - return math.Int{}, err - } - if !ok { - return math.Int{}, nil - } - - return math.NewIntFromBigInt(accountInfo.Data.Free.Int), nil -} diff --git a/chain/polkadot/relay_chain_node.go b/chain/polkadot/relay_chain_node.go deleted file mode 100644 index dcb862292..000000000 --- a/chain/polkadot/relay_chain_node.go +++ /dev/null @@ -1,300 +0,0 @@ -package polkadot - -import ( - "context" - "encoding/hex" - "fmt" - "path/filepath" - "strings" - "time" - - "cosmossdk.io/math" - "github.com/avast/retry-go/v4" - "github.com/docker/docker/client" - "github.com/docker/go-connections/nat" - gsrpc "github.com/misko9/go-substrate-rpc-client/v4" - - p2pCrypto "github.com/libp2p/go-libp2p/core/crypto" - "github.com/libp2p/go-libp2p/core/peer" - "go.uber.org/zap" - - "github.com/decred/dcrd/dcrec/secp256k1/v2" - "github.com/strangelove-ventures/interchaintest/v7/ibc" - "github.com/strangelove-ventures/interchaintest/v7/internal/dockerutil" -) - -// RelayChainNode defines the properties required for running a polkadot relay chain node. -type RelayChainNode struct { - log *zap.Logger - TestName string - Index int - - NetworkID string - containerLifecycle *dockerutil.ContainerLifecycle - VolumeName string - DockerClient *client.Client - Image ibc.DockerImage - - Chain ibc.Chain - NodeKey p2pCrypto.PrivKey - AccountKeyName string - StashKeyName string - Ed25519PrivateKey p2pCrypto.PrivKey - EcdsaPrivateKey secp256k1.PrivateKey - - api *gsrpc.SubstrateAPI - hostWsPort string - hostRpcPort string -} - -type RelayChainNodes []*RelayChainNode - -const ( - wsPort = "27451/tcp" - //rpcPort = "27452/tcp" - nodePort = "27452/tcp" - rpcPort = "9933/tcp" - prometheusPort = "27453/tcp" -) - -var ( - RtyAtt = retry.Attempts(10) - RtyDel = retry.Delay(time.Second * 2) - RtyErr = retry.LastErrorOnly(true) -) - -var exposedPorts = map[nat.Port]struct{}{ - nat.Port(wsPort): {}, - nat.Port(rpcPort): {}, - nat.Port(prometheusPort): {}, - nat.Port(nodePort): {}, -} - -// Name returns the name of the test node. -func (p *RelayChainNode) Name() string { - return fmt.Sprintf("relaychain-%d-%s-%s", p.Index, p.Chain.Config().ChainID, dockerutil.SanitizeContainerName(p.TestName)) -} - -// HostName returns the docker hostname of the test container. -func (p *RelayChainNode) HostName() string { - return dockerutil.CondenseHostName(p.Name()) -} - -// Bind returns the home folder bind point for running the node. -func (p *RelayChainNode) Bind() []string { - return []string{fmt.Sprintf("%s:%s", p.VolumeName, p.NodeHome())} -} - -// NodeHome returns the working directory within the docker image, -// the path where the docker volume is mounted. -func (p *RelayChainNode) NodeHome() string { - return "/home/heighliner" -} - -// PeerID returns the public key of the node key for p2p. -func (p *RelayChainNode) PeerID() (string, error) { - id, err := peer.IDFromPrivateKey(p.NodeKey) - if err != nil { - return "", err - } - return id.String(), nil -} - -// GrandpaAddress returns the ss58 encoded grandpa (consensus) address. -func (p *RelayChainNode) GrandpaAddress() (string, error) { - pubKey, err := p.Ed25519PrivateKey.GetPublic().Raw() - if err != nil { - return "", fmt.Errorf("error fetching pubkey bytes: %w", err) - } - return EncodeAddressSS58(pubKey) -} - -// EcdsaAddress returns the ss58 encoded secp256k1 address. -func (p *RelayChainNode) EcdsaAddress() (string, error) { - pubKey := []byte{} - y := p.EcdsaPrivateKey.PublicKey.Y.Bytes() - if y[len(y)-1]%2 == 0 { - pubKey = append(pubKey, 0x02) - } else { - pubKey = append(pubKey, 0x03) - } - pubKey = append(pubKey, p.EcdsaPrivateKey.PublicKey.X.Bytes()...) - return EncodeAddressSS58(pubKey) -} - -// MultiAddress returns the p2p multiaddr of the node. -func (p *RelayChainNode) MultiAddress() (string, error) { - peerId, err := p.PeerID() - if err != nil { - return "", err - } - return fmt.Sprintf("/dns4/%s/tcp/%s/p2p/%s", p.HostName(), strings.Split(nodePort, "/")[0], peerId), nil -} - -func (c *RelayChainNode) logger() *zap.Logger { - return c.log.With( - zap.String("chain_id", c.Chain.Config().ChainID), - zap.String("test", c.TestName), - ) -} - -// ChainSpecFilePathContainer returns the relative path to the chain spec file -// within the container. -func (p *RelayChainNode) ChainSpecFilePathContainer() string { - return fmt.Sprintf("%s.json", p.Chain.Config().ChainID) -} - -// RawChainSpecFilePathFull returns the full path to the raw chain spec file -// within the container. -func (p *RelayChainNode) RawChainSpecFilePathFull() string { - return filepath.Join(p.NodeHome(), fmt.Sprintf("%s-raw.json", p.Chain.Config().ChainID)) -} - -// RawChainSpecFilePathRelative returns the relative path to the raw chain spec file -// within the container. -func (p *RelayChainNode) RawChainSpecFilePathRelative() string { - return fmt.Sprintf("%s-raw.json", p.Chain.Config().ChainID) -} - -// GenerateChainSpec builds the chain spec for the configured chain ID. -func (p *RelayChainNode) GenerateChainSpec(ctx context.Context) error { - chainCfg := p.Chain.Config() - cmd := []string{ - chainCfg.Bin, - "build-spec", - fmt.Sprintf("--chain=%s", chainCfg.ChainID), - "--disable-default-bootnode", - } - res := p.Exec(ctx, cmd, nil) - if res.Err != nil { - return res.Err - } - fw := dockerutil.NewFileWriter(p.logger(), p.DockerClient, p.TestName) - return fw.WriteFile(ctx, p.VolumeName, p.ChainSpecFilePathContainer(), res.Stdout) -} - -// GenerateChainSpecRaw builds the raw chain spec from the generated chain spec -// for the configured chain ID. -func (p *RelayChainNode) GenerateChainSpecRaw(ctx context.Context) error { - chainCfg := p.Chain.Config() - cmd := []string{ - chainCfg.Bin, - "build-spec", - fmt.Sprintf("--chain=%s.json", filepath.Join(p.NodeHome(), chainCfg.ChainID)), - "--raw", - } - res := p.Exec(ctx, cmd, nil) - if res.Err != nil { - return res.Err - } - fw := dockerutil.NewFileWriter(p.logger(), p.DockerClient, p.TestName) - return fw.WriteFile(ctx, p.VolumeName, p.RawChainSpecFilePathRelative(), res.Stdout) -} - -// CreateNodeContainer assembles a relay chain node docker container ready to launch. -func (p *RelayChainNode) CreateNodeContainer(ctx context.Context) error { - nodeKey, err := p.NodeKey.Raw() - if err != nil { - return fmt.Errorf("error getting ed25519 node key: %w", err) - } - multiAddress, err := p.MultiAddress() - if err != nil { - return err - } - chainCfg := p.Chain.Config() - cmd := []string{ - chainCfg.Bin, - fmt.Sprintf("--chain=%s", p.RawChainSpecFilePathFull()), - fmt.Sprintf("--ws-port=%s", strings.Split(wsPort, "/")[0]), - fmt.Sprintf("--%s", IndexedName[p.Index]), - fmt.Sprintf("--node-key=%s", hex.EncodeToString(nodeKey[0:32])), - // "--validator", - "--ws-external", - "--rpc-external", - "--beefy", - "--rpc-cors=all", - "--unsafe-ws-external", - "--unsafe-rpc-external", - "--prometheus-external", - "--enable-offchain-indexing=true", - "--rpc-methods=unsafe", - "--pruning=archive", - fmt.Sprintf("--prometheus-port=%s", strings.Split(prometheusPort, "/")[0]), - fmt.Sprintf("--listen-addr=/ip4/0.0.0.0/tcp/%s", strings.Split(nodePort, "/")[0]), - fmt.Sprintf("--public-addr=%s", multiAddress), - "--base-path", p.NodeHome(), - } - return p.containerLifecycle.CreateContainer(ctx, p.TestName, p.NetworkID, p.Image, exposedPorts, p.Bind(), p.HostName(), cmd) -} - -// StopContainer stops the relay chain node container, waiting at most 30 seconds. -func (p *RelayChainNode) StopContainer(ctx context.Context) error { - return p.containerLifecycle.StopContainer(ctx) -} - -// StartContainer starts the container after it is built by CreateNodeContainer. -func (p *RelayChainNode) StartContainer(ctx context.Context) error { - if err := p.containerLifecycle.StartContainer(ctx); err != nil { - return err - } - - hostPorts, err := p.containerLifecycle.GetHostPorts(ctx, wsPort, rpcPort) - if err != nil { - return err - } - - // Set the host ports once since they will not change after the container has started. - p.hostWsPort, p.hostRpcPort = hostPorts[0], hostPorts[1] - - p.logger().Info("Waiting for RPC endpoint to be available", zap.String("container", p.Name())) - explorerUrl := fmt.Sprintf("\033[4;34mhttps://polkadot.js.org/apps?rpc=ws://%s#/explorer\033[0m", - strings.Replace(p.hostWsPort, "localhost", "127.0.0.1", 1)) - p.log.Info(explorerUrl, zap.String("container", p.Name())) - var api *gsrpc.SubstrateAPI - if err = retry.Do(func() error { - var err error - api, err = gsrpc.NewSubstrateAPI("ws://" + p.hostWsPort) - return err - }, retry.Context(ctx), RtyAtt, RtyDel, RtyErr); err != nil { - return err - } - - p.logger().Info("Done", zap.String("container", p.Name())) - p.api = api - - return nil -} - -// Exec runs a container for a specific job and blocks until the container exits. -func (p *RelayChainNode) Exec(ctx context.Context, cmd []string, env []string) dockerutil.ContainerExecResult { - job := dockerutil.NewImage(p.log, p.DockerClient, p.NetworkID, p.TestName, p.Image.Repository, p.Image.Version) - opts := dockerutil.ContainerOptions{ - Binds: p.Bind(), - Env: env, - User: p.Image.UidGid, - } - return job.Run(ctx, cmd, opts) -} - -// SendFunds sends funds to a wallet from a user account. -// Implements Chain interface. -func (p *RelayChainNode) SendFunds(ctx context.Context, keyName string, amount ibc.WalletAmount) error { - kp, err := p.Chain.(*PolkadotChain).GetKeyringPair(keyName) - if err != nil { - return err - } - - hash, err := SendFundsTx(p.api, kp, amount) - if err != nil { - return err - } - - p.log.Info("Transfer sent", zap.String("hash", fmt.Sprintf("%#x", hash)), zap.String("container", p.Name())) - return nil -} - -// GetBalance fetches the current balance for a specific account address and denom. -// Implements Chain interface. -func (p *RelayChainNode) GetBalance(ctx context.Context, address string, denom string) (math.Int, error) { - return GetBalance(p.api, address) -} diff --git a/chain/polkadot/ss58.go b/chain/polkadot/ss58.go deleted file mode 100644 index 0abcb3e87..000000000 --- a/chain/polkadot/ss58.go +++ /dev/null @@ -1,107 +0,0 @@ -package polkadot - -import ( - "encoding/hex" - "fmt" - - "github.com/mr-tron/base58" - "golang.org/x/crypto/blake2b" -) - -const ( - Ss58Format = 49 - ss58Prefix = "SS58PRE" -) - -func EncodeAddressSS58(key []byte) (string, error) { - input := []byte{Ss58Format} - input = append(input, key...) - - checksum, err := ss58Checksum(input) - if err != nil { - return "", err - } - - final := input - if len(key) == 32 || len(key) == 33 { - final = append(final, checksum[0:2]...) - } else { - final = append(final, checksum[0:1]...) - } - - return base58.Encode(final), nil -} - -// Decodes an address to public key, refactored from https://github.com/subscan-explorer/subscan-essentials -func DecodeAddressSS58(address string) ([]byte, error) { - checksumPrefix := []byte(ss58Prefix) - ss58AddrDecoded, err := base58.Decode(address) - if len(ss58AddrDecoded) == 0 || ss58AddrDecoded[0] != byte(Ss58Format) || err != nil { - return nil, err - } - var checksumLength int - if IntInSlice(len(ss58AddrDecoded), []int{3, 4, 6, 10}) { - checksumLength = 1 - } else if IntInSlice(len(ss58AddrDecoded), []int{5, 7, 11, 35}) { - checksumLength = 2 - } else if IntInSlice(len(ss58AddrDecoded), []int{8, 12}) { - checksumLength = 3 - } else if IntInSlice(len(ss58AddrDecoded), []int{9, 13}) { - checksumLength = 4 - } else if IntInSlice(len(ss58AddrDecoded), []int{14}) { - checksumLength = 5 - } else if IntInSlice(len(ss58AddrDecoded), []int{15}) { - checksumLength = 6 - } else if IntInSlice(len(ss58AddrDecoded), []int{16}) { - checksumLength = 7 - } else if IntInSlice(len(ss58AddrDecoded), []int{17}) { - checksumLength = 8 - } else { - return nil, fmt.Errorf("Cannot get checksum length") - } - bss := ss58AddrDecoded[0 : len(ss58AddrDecoded)-checksumLength] - checksum, _ := blake2b.New(64, []byte{}) - w := append(checksumPrefix[:], bss[:]...) - _, err = checksum.Write(w) - if err != nil { - return nil, err - } - - h := checksum.Sum(nil) - if BytesToHex(h[0:checksumLength]) != BytesToHex(ss58AddrDecoded[len(ss58AddrDecoded)-checksumLength:]) { - return nil, fmt.Errorf("Checksum incorrect") - } - return ss58AddrDecoded[1 : len(ss58AddrDecoded)-checksumLength], nil -} - -func BytesToHex(b []byte) string { - c := make([]byte, hex.EncodedLen(len(b))) - hex.Encode(c, b) - return string(c) -} - -func IntInSlice(a int, list []int) bool { - for _, b := range list { - if b == a { - return true - } - } - return false -} - -func ss58Checksum(data []byte) ([]byte, error) { - hasher, err := blake2b.New512(nil) - if err != nil { - return nil, err - } - - if _, err := hasher.Write([]byte(ss58Prefix)); err != nil { - return nil, err - } - - if _, err := hasher.Write(data); err != nil { - return nil, err - } - - return hasher.Sum(nil), nil -} diff --git a/chain/polkadot/tx.go b/chain/polkadot/tx.go deleted file mode 100644 index 38895dcaf..000000000 --- a/chain/polkadot/tx.go +++ /dev/null @@ -1,193 +0,0 @@ -package polkadot - -import ( - "encoding/hex" - "math/big" - "strconv" - - gsrpc "github.com/misko9/go-substrate-rpc-client/v4" - "github.com/misko9/go-substrate-rpc-client/v4/signature" - gstypes "github.com/misko9/go-substrate-rpc-client/v4/types" - "github.com/strangelove-ventures/interchaintest/v7/ibc" -) - -// SendFundsTx sends funds to a wallet using the SubstrateAPI -func SendFundsTx(api *gsrpc.SubstrateAPI, senderKeypair signature.KeyringPair, amount ibc.WalletAmount) (gstypes.Hash, error) { - hash := gstypes.Hash{} - meta, err := api.RPC.State.GetMetadataLatest() - if err != nil { - return hash, err - } - - receiverPubKey, err := DecodeAddressSS58(amount.Address) - if err != nil { - return hash, err - } - - receiver, err := gstypes.NewMultiAddressFromHexAccountID(hex.EncodeToString(receiverPubKey)) - if err != nil { - return hash, err - } - - call, err := gstypes.NewCall(meta, "Balances.transfer", receiver, gstypes.NewUCompact(amount.Amount.BigInt())) - if err != nil { - return hash, err - } - - return CreateSignSubmitExt(api, meta, senderKeypair, call) -} - -// Turns on sending and receiving ibc transfers -func EnableIbc(api *gsrpc.SubstrateAPI, senderKeypair signature.KeyringPair) (gstypes.Hash, error) { - hash := gstypes.Hash{} - meta, err := api.RPC.State.GetMetadataLatest() - if err != nil { - return hash, err - } - - c, err := gstypes.NewCall(meta, "Ibc.set_params", gstypes.NewBool(true), gstypes.NewBool(true)) - if err != nil { - return hash, err - } - - sc, err := gstypes.NewCall(meta, "Sudo.sudo", c) - if err != nil { - return hash, err - } - - return CreateSignSubmitExt(api, meta, senderKeypair, sc) -} - -// SendIbcFundsTx sends funds to a wallet using the SubstrateAPI -func SendIbcFundsTx( - api *gsrpc.SubstrateAPI, - senderKeypair signature.KeyringPair, - channelID string, - amount ibc.WalletAmount, - options ibc.TransferOptions, -) (gstypes.Hash, error) { - hash := gstypes.Hash{} - meta, err := api.RPC.State.GetMetadataLatest() - if err != nil { - return hash, err - } - - assetNum, err := strconv.ParseInt(amount.Denom, 10, 64) - if err != nil { - return hash, err - } - - raw := gstypes.NewU8(1) - size := gstypes.NewU8(uint8(len(amount.Address) * 4)) - to := gstypes.NewStorageDataRaw([]byte(amount.Address)) - channel := gstypes.NewU64(0) // Parse channel number from string - timeout := gstypes.NewU8(1) - timestamp := gstypes.NewOptionU64(gstypes.NewU64(0)) - height := gstypes.NewOptionU64(gstypes.NewU64(3000)) // Must set timestamp or height - assetId := gstypes.NewU128(*big.NewInt(assetNum)) - amount2 := gstypes.NewU128(*amount.Amount.BigInt()) - memo := gstypes.NewU8(0) - - call, err := gstypes.NewCall(meta, "Ibc.transfer", raw, size, to, channel, timeout, timestamp, height, assetId, amount2, memo) - if err != nil { - return hash, err - } - - return CreateSignSubmitExt(api, meta, senderKeypair, call) -} - -// MintFunds mints an asset for a user on parachain, keyName must be the owner of the asset -func MintFundsTx( - api *gsrpc.SubstrateAPI, - senderKeypair signature.KeyringPair, - amount ibc.WalletAmount, -) (gstypes.Hash, error) { - hash := gstypes.Hash{} - meta, err := api.RPC.State.GetMetadataLatest() - if err != nil { - return hash, err - } - - assetNum, err := strconv.ParseInt(amount.Denom, 10, 64) - if err != nil { - return hash, err - } - - receiverPubKey, err := DecodeAddressSS58(amount.Address) - if err != nil { - return hash, err - } - - receiver, err := gstypes.NewMultiAddressFromHexAccountID(hex.EncodeToString(receiverPubKey)) - if err != nil { - return hash, err - } - - assetId := gstypes.NewU128(*big.NewInt(assetNum)) - amount2 := gstypes.NewUCompact(amount.Amount.BigInt()) - - call, err := gstypes.NewCall(meta, "Assets.mint", assetId, receiver, amount2) - if err != nil { - return hash, err - } - - return CreateSignSubmitExt(api, meta, senderKeypair, call) -} - -// Common tx function to create an extrinsic and sign/submit it -func CreateSignSubmitExt( - api *gsrpc.SubstrateAPI, - meta *gstypes.Metadata, - senderKeypair signature.KeyringPair, - call gstypes.Call, -) (gstypes.Hash, error) { - hash := gstypes.Hash{} - ext := gstypes.NewExtrinsic(call) - genesisHash, err := api.RPC.Chain.GetBlockHash(0) - if err != nil { - return hash, err - } - - rv, err := api.RPC.State.GetRuntimeVersionLatest() - if err != nil { - return hash, err - } - - pubKey, err := DecodeAddressSS58(senderKeypair.Address) - if err != nil { - return hash, err - } - - key, err := gstypes.CreateStorageKey(meta, "System", "Account", pubKey) - if err != nil { - return hash, err - } - - var accountInfo AccountInfo - ok, err := api.RPC.State.GetStorageLatest(key, &accountInfo) - if err != nil || !ok { - return hash, err - } - - nonce := uint32(accountInfo.Nonce) - o := gstypes.SignatureOptions{ - BlockHash: genesisHash, - Era: gstypes.ExtrinsicEra{IsMortalEra: false}, - GenesisHash: genesisHash, - Nonce: gstypes.NewUCompactFromUInt(uint64(nonce)), - SpecVersion: rv.SpecVersion, - Tip: gstypes.NewUCompactFromUInt(0), - TransactionVersion: rv.TransactionVersion, - } - - // Sign the transaction using Alice's default account - err = ext.Sign(senderKeypair, o) - if err != nil { - return hash, err - } - - // Send the extrinsic - hash, err = api.RPC.Author.SubmitExtrinsic(ext) - - return hash, err -} diff --git a/chain/polkadot/wallet.go b/chain/polkadot/wallet.go deleted file mode 100644 index 767aace28..000000000 --- a/chain/polkadot/wallet.go +++ /dev/null @@ -1,42 +0,0 @@ -package polkadot - -import ( - "github.com/strangelove-ventures/interchaintest/v7/ibc" -) - -var _ ibc.Wallet = &PolkadotWallet{} - -type PolkadotWallet struct { - mnemonic string - address []byte - keyName string - chainCfg ibc.ChainConfig -} - -func NewWallet(keyname string, address []byte, mnemonic string, chainCfg ibc.ChainConfig) *PolkadotWallet { - return &PolkadotWallet{ - mnemonic: mnemonic, - address: address, - keyName: keyname, - chainCfg: chainCfg, - } -} - -func (w *PolkadotWallet) KeyName() string { - return w.keyName -} - -func (w *PolkadotWallet) FormattedAddress() string { - return string(w.address) -} - -// Get mnemonic, only used for relayer wallets -func (w *PolkadotWallet) Mnemonic() string { - return w.mnemonic -} - -// Get Address -// TODO Change to SS58 -func (w *PolkadotWallet) Address() []byte { - return w.address -} diff --git a/chainfactory.go b/chainfactory.go index 6a9a46adc..1d8e35ab7 100644 --- a/chainfactory.go +++ b/chainfactory.go @@ -9,7 +9,6 @@ import ( "github.com/strangelove-ventures/interchaintest/v7/chain/cosmos" "github.com/strangelove-ventures/interchaintest/v7/chain/penumbra" - "github.com/strangelove-ventures/interchaintest/v7/chain/polkadot" "github.com/strangelove-ventures/interchaintest/v7/ibc" "go.uber.org/zap" "gopkg.in/yaml.v3" @@ -133,26 +132,6 @@ func buildChain(log *zap.Logger, testName string, cfg ibc.ChainConfig, numValida return cosmos.NewCosmosChain(testName, cfg, nv, nf, log), nil case "penumbra": return penumbra.NewPenumbraChain(log, testName, cfg, nv, nf), nil - case "polkadot": - // TODO Clean this up. RelayChain config should only reference cfg.Images[0] and parachains should iterate through the remaining - // Maybe just pass everything in like NewCosmosChain and NewPenumbraChain, let NewPolkadotChain figure it out - // Or parachains and ICS consumer chains maybe should be their own chain - switch { - case strings.Contains(cfg.Name, "composable"): - parachains := []polkadot.ParachainConfig{{ - //Bin: "composable", - Bin: "parachain-node", - ChainID: "dev-2000", - //ChainID: "dali-dev", - Image: cfg.Images[1], - NumNodes: nf, - Flags: []string{"--execution=wasm", "--wasmtime-instantiation-strategy=recreate-instance-copy-on-write"}, - RelayChainFlags: []string{"--execution=wasm"}, - }} - return polkadot.NewPolkadotChain(log, testName, cfg, nv, parachains), nil - default: - return nil, fmt.Errorf("unexpected error, unknown polkadot parachain: %s", cfg.Name) - } default: return nil, fmt.Errorf("unexpected error, unknown chain type: %s for chain: %s", cfg.Type, cfg.Name) } diff --git a/chainspec.go b/chainspec.go index e111362ca..9e05a0fc2 100644 --- a/chainspec.go +++ b/chainspec.go @@ -162,44 +162,6 @@ func (s *ChainSpec) applyConfigOverrides(cfg ibc.ChainConfig) (*ibc.ChainConfig, } cfg.Images[0].Version = versionSplit[1] cfg.Images[1].Version = versionSplit[0] - case "polkadot": - // Only set if ChainSpec's Version is set, if not, Version from Images must be set. - if s.Version != "" { - versionSplit := strings.Split(s.Version, ",") - relayChainImageSplit := strings.Split(versionSplit[0], ":") - var relayChainVersion string - if len(relayChainImageSplit) > 1 { - if relayChainImageSplit[0] != "seunlanlege/centauri-polkadot" && - relayChainImageSplit[0] != "polkadot" { - return nil, fmt.Errorf("only polkadot is supported as the relay chain node. got: %s", relayChainImageSplit[0]) - } - relayChainVersion = relayChainImageSplit[1] - } else { - relayChainVersion = relayChainImageSplit[0] - } - cfg.Images[0].Version = relayChainVersion - switch { - case strings.Contains(s.Name, "composable"): - if len(versionSplit) != 2 { - return nil, fmt.Errorf("unexpected composable version: %s. should be comma separated polkadot:version,composable:version", s.Version) - } - imageSplit := strings.Split(versionSplit[1], ":") - if len(imageSplit) != 2 { - return nil, fmt.Errorf("parachain versions should be in the format parachain_name:parachain_version, got: %s", versionSplit[1]) - } - if !strings.Contains(cfg.Images[1].Repository, imageSplit[0]) { - return nil, fmt.Errorf("unexpected parachain: %s", imageSplit[0]) - } - cfg.Images[1].Version = imageSplit[1] - default: - return nil, fmt.Errorf("unexpected parachain: %s", s.Name) - } - } else { - // Ensure there are at least two images and check the 2nd version is populated - if len(s.ChainConfig.Images) < 2 || s.ChainConfig.Images[1].Version == "" { - return nil, fmt.Errorf("ChainCongfig.Images must be >1 and ChainConfig.Images[1].Version must not be empty") - } - } } return &cfg, nil diff --git a/examples/polkadot/ics10_grandpa_cw.wasm b/examples/polkadot/ics10_grandpa_cw.wasm deleted file mode 100644 index 4d921948a9a3e8ef0ad2a0ebecbe1d1290a12d9d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 781087 zcmeFa51d_9dGEdd?{nsynK}7OAgKGC#ya$d8rn2Tf!OSM6|i8Xz5Vp#dv8B4prpka ziV|YP+q`6yh*1zxQBhG5QBXlqQBhHYpaw-n1&xYrR8(wfjTXI8QQq(GS$prZ&&-*G z0Ij|6r!&dyz1LoUp7pHf-+I=w*7i<2=kI*a^Zd65zk6!1ZJWPMf4x(~ZRKB5d=h-U zib!?$=bakso`+!DdF2}`e4clz$3N~<%VBl;%A@MfJ2i2s-l>h^HFdbUYDEOVdDIk~ zcOFFq3>W26qG~wrJc>2T8n|y&_W}w)m4Slf*MrriE`;aleE|f|^>RFp*Q(KNQG!cE zCFgm;8-nq0<5^qc)1LX9O`E+)_vz`+JZ00y(@ytdJvDfG{-$Sd-st&yY}(7ed(M`P z{mkb)>$J1Huq=Ak#&b8jqNAsse)^_Uww!k6vrj*b@>bmfOQXPZ&U*H+I)k-1LG|o^{4)&pr!y zU*5d1>Dy0|1VQ2_?t#C7??*wS(eRVN_u?o@p*hcs`0+x2WJDRr?+0EI`ebWRB#8q* z4J;FH$H&KGKZvNskG-Tpy8Tez_vxk@3OqmQc!{rC1HY3jBS%BG0sk67BaS`40a%B+ zq7+E^(E}V1L_h|VwI72nqFV1TQmxkI3&^RyM1Bl}6!9Z35(8B~K;(t=BT1+(4CyXi zQel1si2G6D#E%a*6xci87c^>KkGeMbX?Zk1;RU;FgW_r7;-Vh8@7de_hS{=3%j#HU>J&@B@}|H?3Kvo zQTP!FQw_wapQ1vI9=KiN$M(Y@gZ?=6q6B7vz(lj57bbBW3Lv0rXw<0%g60M98Mwy< zOP7)+5{B$lyWeRs)G7eUKo7cw5*I)s)jy4Cnuh+U9|{l35>iRzk4EiibhPb7W1!UN zuK`dFKq@C=@ud1GM0;u!$eZp(nXa-BC=CHtXp|?A<0M$5))sh;Fb?A&&broB`o5?E z2yvW@^?oN=G)CXmad6N88Dpw8Sm7!!{)Uea!!Szy=lX9;-~o)E}&?W%%32%*n83b?yBbt!JNg&gRq3+Wc(E`SbmB z{z>@BMz`v@_3q&a?FXz2V5|8>^@5!v&i*p8dRMZ`ydyDQKBZr)_@D zChx7`qGzAQ!{40ttc_JW>qs6s-5lXopQ<<8&7-gDbGCZoQ+}7ylm9> za=&$D`qjp*jhWyR=}|B8F9`nE1;GWuOM^e&I@7$R@uWMGi4A{paj^cP=6C$(-_}_B zul|dJHCt}*&;7A~xxYP~iGLE4Vg0?qGp~t{deT|14$pgQaAmOm&z?@|hx`xvZ}iU( zj{0W!<@A)NU2i$J+!@>v><+#Wd^`AR@WtS3!QI?_Irvg=SMV+Fz7l*P_Z#_x&0?Y}f#|D=EN|N2M%AH6BOB7AfBmhj5(ZQ)hn+rxK+SBKYx z?+o7+e%F6lbYb)Z{|Ej({`dWt2ZHa_!7GDT1uuAme^Ky~;AO$l7Y6Ir{r!&M}bJ{G0q6`TJ4-s89MID{gNIZuNKiA1|J^e#-wuaeHg9C-{e8S8!YK z+29|8ox$gVn}gef&jgqJHE7J(k@ay5{!=u-&dxQVE@Ds_C)_*PB9j*tmj{w`fq2Qme4!HZz6mWh%*b_Q9zZ!fu zyeAau?+m^ZelOH;tbc?5!|=l9O=(%t&uSI9`+h|~E-Jb+*c<-TihniuN%(J8<@&4A z^_Mn}dT+e-1Mz+Fzs4Vq-W7c|dULcZdUy2d=mXKk(c7Z;MOQ{UqnAgojNTr-BKk=5 zs_3=RP0<^pk45i@-Vl8-x-R;3bVc;0=rz$b(aq8OqjyFhk6s^L9epbLP;_~8S@fRh zw&?okmgsZQTcR7ItD@IMpNwvZE{Wb6-5Px&x;A=mbWwC^^wH?3`=UM3KSlRPKaBn% z`q${&(Sy;w(Z1-e=pUnhi+&vaH2PL_XY`}!yU`D#FGgR8{v~>0yf?Z#`epQ@_#4qz zqkoPbh|Z6{6x|d3BKk@6o#=bf=cE4}{U*92`f{{8`g-)U=-1Krqi;sPioO>8Ji0yl zr2m!Zs5iuy$FGQA8($h<6u&WkRs5RxmGP_NH^py`Ul+eTzA(Nxz9fE0a9RBNc>P=B zx5QV(6QA_o6~8;aHhyP(6eE1p`{MV8GnaXcE?}h_uKIvUQFB-e}&&~ z#Q(s_b2a5u1nsSyfk@L z^1|fWGI=2WNb>IF!T93j!sMOF%aczgZ%%W|QF1|YMRH~G=H!y(t;vna zdy=;$+mnwa*C$scuT6dx{~~@A84#EJ8)ZKc>ZGI@Z9f9 zAARe;k?aI9pG!WM+@2U>z8-%*`F!$)M7Y>`)R&VxlCLITO1_f3B(PE5o$N~f-sI3X zlY5izCqGMmo~-}pWN-50~|)8Pq==|`t#GR z7o;yvCoW9azbO4#BH{3wbp85Qz-Q?z(^scf?`zZbFW9pF?ddzxtJ7=J_1C7?rRzVK zzAs(B<(G{QrRzVLek@(TGrc+eRQgf>mh{u-sy>ucpYZ@1$FQlKwnhe^2_|^n2+GwtPGNR(gNBo8O7Ar9Th;G2NH`BK>9htMsn) z?(}Err~FqpE^VxTedBeF%NoyrZR5qwYa8p|*LZK^`o{CGYrLoNvBsAgcQn4-IAvGk z7mZIhKGRr#S9(|D+l_x{T-^M}#-7G^8ZU3Ys`-lMCCyhhM;^TU_bzPyGzrGH1?T;a zm*3${_reukutC3>moJ-|2)thMME~NTH=6lVy=LBeTIAmPyzkiihP@AXku|a)^QU{! zF_g%Xtm&?KG}VhUKX0GeOQ*6p8`a%N=XK4)vNTKb9aKzunz^JPi*iy%rhC+t`_spd zMwDr|N=8()HI)Ur2A#{A-7yL_TpgKSD6N%+z}6e*RiupVsa}*f1ne5@jxdXk2)wmn zgIpV?dnp}>^p30Lp@i~Ns8f`PGah0Jbr)ovEbdno8B}_)5EvJ%Rqgrhp1K?5m(YuL z)#k#r;W{;Kpc(+dle2a*(Hgd1)^Bg`s+K>z8t!GbndENCx2vR+FL~#rj z27OM1hGO{iW-!@C(-oK+eA70PH=U`jmo<3-&H7WhfBYzz5E*v;R@QjRsOwgi z82DYUgo+Z@LbDGN^-yk#?ldUgYfzEs@(yomh1a?v3EJCY@!W=~AuJa^(NB8RsUaQC zaY=6$!zB=4dW_G7aqcCw9dDiz4{|lc596x@*ev&m8F#NUn%C7sIxeDG%XYo!t$UD5A%R3P` zbdtbHKF2z>)IrXvy%=Pi+6&{G^niR5PpO05if<@!j2|JVD{$svn+?-&&G#F1O%>HN zmD5C_X`&JFO)|(gPLtI%RhT8FoC=K<+k+^$2b&k_L~P&d6beL?P|50`P#}>M$oL#y zkpe+Op)ZRProBc*WMfW?G_$dOeSw5c(`k{W6Woz$ktS>*EizU$Y+3}g8-xZ0T4XG1 z6&c|1LW@K>T13jF7f41%dQoVRNLoaY^;+etQj3IwWE}a7(rnVMIL6A4Ik1{Ak<>Ns z>RQF>kw_RZVlQ75JwS%3%sm*dp`M+dN((); zW#9{~BUxa|U?dBLVCfRHKpw$TL47Sneqx2#v zy%s&+b{ycv8q-k985qeImjWg<uW*5Rm7&Tnhflykbm ztL))Q$|Q_2Sc&HmGKF#uGsFri7HR8@;$)7bsI+QJx~)^HV*{!!Z9FQYyVS7FO2anc zOs6bcS(BSmYavFcXCW4hY1mX6wpr7#*35X;avC;85+Lv9)39mY*RZM6u<4+NO{HO5 zm4-F@vsr1_G)pTDE9DC$W@kJ!P20wxsmT+`LTAy88ha-2qO);ihd9$xb}cw|@*Uuh<9e&B0*htOjMYDz*Od4)Qj}48$-t(XNrhLS`ZM@4e>G&G_d~B zj0hSAuQWc8CT4sfz)WPza79a@SGJu)ITcuF+>ofAv8=6>MQC-ZsO*ICtO1v5RydZ0 z%7A7bB|ozT9>$EG8?ZXIfSa%`mbmllQ1}K#CquDii>I=(O<4ziMtcIen%xF!ucP*S z83Cg*A~M$u^JFYuUwTo6P{`b(RMA6JApNS|pnB0fPe;O!pow}Tu#)A9W~p9gttRS0 z<6PB?G@0&=INg?|)3Cu@j!H#Nn=|U2t$<68V&ci{UbW9=srs8io~pg6n5vfMxTWoppq#CioPp0#Mafmy%hiO0&>V zg$t&JD%AN@S1J}%1%@gn=f^A1?Y@762HLh)I`VBLV)tGj?V%o%bc1)^$L_ESA7gE)9-Lb56y6<$hrkx{< zZVx`;B1LT}WJd^4s!YlJ;tuCW$qLeTC0|#w_(V-D%vv`0Rx8=4IN6h#i7xI`4=~Sy z@*x{3?iMm?sHoG+1_t|Vhe;*2!`D-> zU8`Wb0UR0IX~w&Mu4~NVx(0G{x+|BZW98WhD!ESjYbevzUJUYF|3$@e{UnE=2E^s2 z1_j5p2RLqAqdhVo$Nenz7xy_1bP7~AA0IRAC_Bzs)~P+WvtYTL$)-o~20`z6>qI=2 z@K?LLNEfe*LXr-}QHBm}fX;=cLr26Oqs&nNmnnf5(o`C{rRD)1VKyueu;#_`?x91` zeGO<-IQqSDBZN1KO^ahA!41%M;9 zc*rarijJ>zXp|i?m6dHe9ZGuwIa^S)hk;n>P-{v$)HM?qI#e>BLgHevZlOa(h6NX6 zREbDi;^G!4wp{pR2BxpDuSs3dSYu<^c3sdVHf|XkgRj00#nh8}fB~c%1Vcu>(hU)l zL%iuWAr&DNlh}radfIOg>ER{h)_v3D9bcaYE<*w7L*!iMj}>&>CnZF znN!BB)S+XhLld4EzCwpC6rRSJwj&0Np`%idrVd>(-7;5v-}RdcT_Qac1TcdSIu5!b zLs#NB8U*kjJ(`#vjmQbEs8qP}sT6W7ChyF&kwECtB(thf7}c9>tH*Opo8@>l)&vdoDGf-iE*fC+JMgpQuk`bKP_J%XV78*Y zKJ^zCY~R!ry2kb$saLrh9M`kHg!(O*-qi4DHnKmaM@%I6ffMn(9Ng&OB`8fe-;{Kt zrjD~ZrnQHF5ckIA8>Z=np2qx@4({l+=EFvDX`zE1_nN`xEMSpo#l5Ct#>Ksj8aWQ= z7u2Aeu$6>SkfFGvwh%$5hA{7#RE#k%1Su6$XWr5Pmin~HOWxIsa!Ogen5%=`3sEE4 zYY@ukD$uB7K*iuZV3>`XrGpE$O>8a6oX8+hI#@G=l5Ja=vF#}J$#YQRX{a8q@Ko2s zg^;V^X~c1DA>Pho%H{O1Aqneue@L>LhastWF&9bh#Q>6uyu*>yaU453$gvcuIJQ}; z2T=@TPKK zlFycPbGLpx>8}mWBxMIHpKF3MxFgG7b5YRSn&5;iRE}dwxXN;9-8am4dkEBX?RFh^ z&uAwyJ>Xp%ZdxqBq`|4Y&H5)Mo}Ns7w4^LFO-r(UX$FT~?spcl zoJ-O{7Y0IC1=d_=X*&cy(6_#tKrUF)${BV#kN zVG%KiK%84f1kw~?Xnpoz3FIOl51R6;4!OK_RxN>*3Nx5QV zvav$*YbiY&FCIdz?8!wz;~JK05fz=Ah`ab|%Wq2z&lFIDvFcX0iCKY0iXfP3V|ujvUm5h$VZ=%o(kkQ;S>m#0rw-RI8&uNx{~_ zg=l4DB>Z*`d1V+ zjsyJ&M3bJ*8R?aP@d_gS;#FO2SpTq?MkRpWuYC0c$ zL!uJ$>tJn!{KZ-gEv*I_0jw%aLntQXk=?+AsIS-)ej^3$D_KemOv;AoGNIrxN8FHI zXOR%n?s@8j_N}(N@&D zLEDchfdrbb3Th`np!Ie(j%{<+d}zYhrU$t5L?ZMwc`9uL^vG|i>yj?mTPzDmF1uxX zSyapfEH~CU`qqrGG{9bzkd6cm#uxT^&5Q^@8yqeT6w83aDLPH()3bYFBxK470{Uq2 z-T>FLWein&p0bqTV7b@cD#x(@lp>Cf>J27Vr{oI(Q^JYwG=(SBYMvDVGZT7H3|d%n zxSO?x{J-V z%@9V=`EDTkAYOrNAO?^+-w9gkH;}NT)a(;Ws)_cN1sAsD6IK4{ks7sd>1$8v~X4$+Fv;U>Vpz?VhkXSpaL62*~CRArcQFc_wcKYAYPp$O}{JVa|n}0j~y50A~gC8>aZW=aZMjhR#8mO{E z`{|ARkpE7j^vy>&N^M7g@4o9@cX>}m{?tYa)^{V-{w-19BkddfR8ZiIKVRR%-x3vm z>k*FI4&M#jPrh?YI$z(&vmc`TcN86uR4OiZef#0LvdQ6IGqQ@n%q@net@F0P;B!;BP*t;1&W!OmMAV-)INebic|J= zRVXG9u|P3%+_?q&DCV`%xK<{Z{wDH0%SYhmEn(+FHVFsi$wV+AswPBQPB0Wjrh7>A zNDtTO(cTK1M=2D{Lia6H;8+C52HT59PF%0n3i_wOs7>wNVxZ89vlp}~5pn}}eaiJM z73pC}6_EJkA}2zU{8;go3D#BUE&BW65@^KBDw9y+{M9)0AVs<50r_YTCm+!BXJRV< z#O|FQ{w*ywc1Wk#s1NLWJQs+oJhtzqXSC{P%{oo^jwbwyCdBf6;QPD-%|R1Q2e;A0 z{6%Ncgo--u@uze1foOp|DTlUbQNcO4s4Fgd+_GRxsI2;mAI-H|QHQWqaBi)NiUE0T z)WHr)A+Ld#I?V8WvuNsb$)@t{ufQSk-NvNXZ5w}fUEm^|+HHYAE&E3BQ z&n4qi5Y(8Y zE|yy988&=!q_?6=`-vLSCS<&}ICDFnM)`tfI>7i*pZb`9VE(KYAOZt9enhZxEvHRc z1@pXAIYvi?s}5MnVsz?ujEzpIWE1N^>qq}($2hK#7KC9;#bQ7HJJ>VtUe2CYvuEx= z0OKf?5wi}RiB8RsT|xd*S>jO1AG03Xc^yU$ph;*i)Z*we7Z5u^+!h5^bP)l1M|3$G zLA&@y6~aQ1l|-|5{*6h9TVjVtj`nuwaq-&l8C=*QeR8m&{LM4g8FBH--HPq4xE&7` zP^eoO(PPihZyEIC;djR8?lxJ2u%b+mZ@1_I!cy_)CYs@GMYjdH3p(g_vWPa4eAm0~ zde{GZ;;8icGLDI0S%Z5SIk)MB{J*_%L4?0QXyvkh0^1@xZk)mc`opbt;JMdgnW83} zXvCY;NtU2))U~rFxS@Eyo~z34(lZgvx9UpCol3u+(Aps1iNwE9k1MApuh29%(h?8s z%yt*aIK$;?F8JMb0t4%DOn$XQbS#$-?x7}>^`u^l zp`Plz%!hV)UMWDNf0&x}t0qX6?h}kE8(Pr|=qjR{86MSO^hqs_u$~OrbwieS@K8wZ zQ6UJn*|E_sSWfa~<#syuAt}2mI>9ylWNX@|GFPwnXCgPviDHo+8wwG~Ml=BI7F(b) zNo8YMi_yr8xW%%Zb7I^o9)(ru8Qg3@uW z(CS%gU82I67v@x?g-vefGH2`-TR_EDp|WI7%vdlJ^_i3UIl09#=Lj$Q%-Ir#SlJO# z8Dlyf%!3#cz7o5jB*mCaD@(=%d&ZdXj4>w91B?k18DmniWK1H5_sg1an%V+^HP#$; ztl4&~$>giXn(%T53itV+@L%kR{OJ-@*==AKci6UqRMr{=LTs5^m(2?L(i}sE`dpq6 z*=mZ723b+i=`g-Vi)*fYAih?nhViq>+t3@%u5Fpa%(#%*(3|Lgbudp>W;f(nY1;r= zLq*Q0c;9lZ>Wxv?*w9=p{3!aRVVm4xq7yW4?23^Dy|GuJH6=Y^HVg)-Pfd>TH8lyG zawRzC!3WcGdWpOZ5r&r;s)lA;rN@4xE^6+)jDvy{1uEx24zuDL%$bhj^?9>aMvd=t zXpMvu29T?kdV0@_Gn9@O41t40@R?RAS)=9R{hh@}9_+2De3?933npiL&4N@(H$lcM zxH_NNwn_7FHAQvDYg!B#C|lKtCFixYGH;VQ=ts37y5MNl_TYowUvWuybQcs$%zcnt z1qEVcDC$<#!Zk%jh{OfQDkM#GG3oz#0olXpUM7I32HoL6@}RPEyl7?KtMLwR8A(H42$sRA<_b5krhAvVx|8xkQXK zmMAZrn*5X}T%fqrBTN?1giKRocp}9c)Z2idbz$x@TUtq=5pIIN#L25@Tkdh@)lfmi zsZ-H)b|lb@Pb706=a_BiEFdy=3B@jbU|Y!75;OxEWj_zQ?5DTZKlQHYw=qi9)eVvr zVkajqioVFEB71`!r-IE%hCX0jVbS4DF7dMFyi=15gMDO8yXa%2KGLsZKnjAYS2JH9 zT^$aVeg$%!TZIUN0us>Vgn`t*BaCT+n-onm;_MUce_7!L+XU71itIq70K&;R$IDWk z#R2n5DmcHWhlX6h-W zdgTIJ*!5xW_a#9**S~Lk13wmyMjlx|mZOmijz+yUFDW!%q5mn2#10kCBiUPo??DzEsLTy z8=Nh~#a5}v1_qS~8{yUHW6+%2!l2<#?RO)rHMv>}YYo+2`ji2?ZhrEk(|6bnQvtqf5>{dX7Xo#bv?p69YkBStv!NUx0xN@PmnpVO!Cn z4ilsvbH<2@>B#}}z?TQgBT`m4lHnPzk+#)h#uBu}Krqiy$eUy|leo&mq_*c><7&!u zZdA@K_7A8NAh}>Y#;)j?OLKXP)iUy^Y5@c{AH=ecwOaQ`S*u>*QY)5yes)x_&>fgJ z6O?{xTnODJV}1pW6V~LVSk?q>F2E}FDYbqQ90u47$@9d}uE z*O)3YY1Z#zI*qJdST?q`PRzK~V@pU-h4Uf%;e*rNtW(m}g8TW)Y^>a#beU$cv{NPE z^d!N&+(LUO*~Q-t+Ttmqk*kxq`4BIS-LAqzqh?Nm-ME~9py%>r6gHQY%%QnVm^n-> z+8Z3^_Yk=IKb5}2XKp6AvO`qsCB8NzFYhf~8=jFZ#TI?=!STPc+2qp6^!(nEwc&HK zC6kHl-7qI$mzZX52*S0!8XB0(fdQOqodCe!sclaVPHi1o6I`Zb767pC4VKOaaZh#5 zCYlhTwDf9%`%>)u{Dybz^zy}>O)h=O)!m>BkOa5YFT)dVp@=^{*6{owjN&A1K-j23 zjfFb-ra*JghE|XPPLK!#`H!xq{#JhJHCz^SUSgQq0eiGZ@$hEB(H;@)TH!eZf?Z;> zt1!PC5xv6jughOr&+k>ATr9L9fpN$oHA6yJAmP?m*N{Nh3nYM!*+?**TOXp_4Urol z8=fZxtJ_4YLIlo;AUR_`1(4H#N>vPe^mni(C21bqG{?{n5}4)i&hug~|3Xh-XP9(nXT_b5~Ay0$T7 zMXm9Co!hMeZPh!6SMbpuxktHk$F}8H?XzMuU+1pY$ffnpVcGpB@7xA>30#7 z9DB#z6S&hA!Fm$Q*T~gldAj=}l054yhXU+RAPpzF&xMVLg<3I*YA4yoov(&KLm)#6 zFezElJGrw*sYw<1{ zIc^jS;FX}`P*Yu4d{sl+)I!;iW-AJ9QA1MkOPr=vD=80XS`=^t1#Fr&m8M;x0@$Gn z*mtzx2!8nje{{YkGA{CZBgaeAa{G5+l}w38%f!X zmIm9c=hAQ6l+hoeVdHZJ*gnwsw1h*i1pxUCqM(i_Nc3at##k{xEk1!Ng=?+4GiMdN z4cla&a;=QY2BnxtX#u~mD&ZeFM#FVF>8$~maFI8Ifp-%lSyc?K{A8LCw+hn7bGEq$ zz4JRVYZnF+G+yLid)HmRr&YLan+jr}WVYmjJhdj^f;?#q1kBon!3sHf`@1lh$EkDF zz-&QwmSB)!W7DEys*knzLe|@C7lr}Ktg9Bn8rUqu`Y0Eh+66>>%90DV?_bYM>EJzQ z@yp|*lc2?hR-l+U=1g9NTWp#Y9&(Vz{CTX%PtP&5wAKN}ObB9zb|!6feYgh6D8mg3 z`uCg(^o@QsH#i|U2~==^JJOsz*GDjkP|urMn>?Hg%Ph;>i<4zSvFTSVN63++3I~vB z?L@o|_~Uo@lY#vD5yURP%#7dpdLl`{dK@#w zNRGM!?>dH>1Xiu9gmubsO)Y_uiPS)qgRzThqwAW{rt~U@t@bmIBB6JP=m&?!5#bD^ z)X5G3I0YtYK8lAy6H&a96Tt@N$6SsDS6tTVuy=W@iOtgPTyrk3)cu6qJ}galm)P1v zcbO7TU=|y}Nk@A#6gSlaQ?Ci`x2HA1UR@#K`-1pLTJk1%8qT&`Lt;H* zI$w5{g7vaQHV%goX)#)rckP6ziU#n7IT|ROw6&FJ>SJFd{OYnuIb6Yxsv_LM*0zoa zPtX9k@aEcnc~wS#;J9Mc%n?_)J*^0xH4kr*BbeNdXl0A*;X<&15``b>-Ae!$0sI6OuFLy9UDUh*Ll~424+OhiEXOSx$t4 zMhX?wkqTPCso%UD;v#d4H>;b9AYn z%j9T{vvD2TTB?{4@vOpV3k>QUIG!sBr86OUuJpE!t>d|daYGPm*cs=P;dIhz>T^+V zE`C5*?Wl3pqeYDau6~pp6K>IcOHc;%%8)EeQ9dCT%Vz{D^hkIe3ID=y_jqCnt(n_N zKp#PpxC1aHYkCr7H`kJ|>PJYrt)GNs@ZM+Ah8nN;B^-_jukpJ}B`dCycIA47??lbz zzLPwc`4TqraY?2~j7r2z1ltwY5k1j+p)VNYU9iF$w`+Gf2cwa^}ovZA3 zOQLh#ZCeHM4o9?Uu{RQ{Rc8<(S$HasAc}+ycPL;fD{W2pV$z*=_xiEbAt4i`&B?ZgIca!m$wF7f6q@g_=CYvZZACmotd1^aGsc& zWognpyEeKGIl`&BfsfXWG|if9#(>!E@QXxV6G%=A)=Rkx*zJ1Wd7+g4jLU|EUK1cw z6y1R3Vlv&$?%q|jL9+~<^aJXjWnk0yB{`wBdU*H5P-PN&3$DR<4HWpT8(jtld{Ra|T| zJsD{eJlQmnaAysymo1ZHo4KWwGNUQd@G{fZ0DVOGjJ4h$lVB$U$TZo!Ns7$NZ>De7 z3rQ%?BZXKq*UKv9%a#HbsuY}~;*$TqMkT}^C$I7TZ%w_T9PS>d(3pFmLgQ^x`W2$g zkA|@s2ReFmyc$1AAC zf`a0x$e_?7EWCsZ!kw96YIl{`|bA3{aVyj9^#8xfMH(+B;RaRE`oC#pJ)|baPJD_IJc+L@P*dd{^hrV46Sbm0tAbNK3wOS)>sRNWc_AyAUe@pag$O%KdK=22SP< zwpL_gfW4p-Uv#&cJ7TGvX1D`a{Jk7#FjiKo`8q3QR4yE4dT6rmgT238c|BZt?y1bH*Av zn0`{{yp=LQLf%bpE|G_reMrb_;T)e2(xTFf%o8L?M;>COBY2;!QeoeXgGNN-paF;N zg#25%C5V;Va_o0kV?R$z8w}&Z{TwQ2;uL;3ZQgr%iL!%lvw^Sn;k3E)5ww}=uqTn$ zLE`q>1C8Q-aGPi$O>G_ohap2X$l|bKkj=*$!{)Hqc?%yMknVeZ$@Gr| zBr|IsEi7GPB=ShH6iQnvHs6*TOR5nc&XR|kjufLcC=Yj4qjk|+grrl+MP><`y``|> zewK_xG7iW?gX57kf7Qco-bHk(_4&2V4VC11s9J|=_;1wD_poCr_d4&^Nm3-( zGLij>l!lSVIX2SK)#MrrLq0g%hMK$j&bIS2?}z}uZANwi@c;_OHq)Z>E~~?K7az?D z1O`wMHwfr|sQDJl6r7;+6dG4)0M@OHOHSnBNjD$&?NlFU8f4y)e9b##KB4JanWjnz zVd8^fdBm1&=p{UH`B>z#^=oF-$Vr_>$Ypzel`3#MtF7fSmyjl_meB@au5N-YUn>uG z=#*|X)6!u@Wt}!os-x9vdy~6fcF#M$_U$)(;sveas^tso9w7JEF8usfCPDa4e%NsE zeL|0k9u1E-mXE5_iqq@|(%Qq-aqZy)^@nTX){kP$F+(37YEG05kI#j4e|ovhdiAq& zth*TU+2=JhA0%NzNM$6%2!*+%Qk} z8;57#Jx}(#hi89ap6uAX!+^OW7!LbY!?WKyPxf8Iv)?;Uc24FU2Fyj_a9}P8hi1Qi zp6oXa&wl4T*>?}mzHgrF4-C(KIUGKWX0G5EQIix#yhe|$+cfhir9*iYZSPej!8HCk z2poCHCy6#63exY>(!LYDYoi17=Hp&3;N;JG8{@`zdk9 zuoBXLGOxY-{u-O{Y$|Aw&5*5Vr&cTU{MHjZ40UNKD_dFVq?myQOZ^sb%7iGNbMF_8C9!8tR0;?1}D|DT-AJI;XM(_5soS9qtMICNd+FSTn+iyF~( z1m-0K(<>48xzm|MUT6`(pf5rqoZUP#6IqK?S~kHNlxw0)(5JWwhTl@|7my2c3_%B<;tc8zgBxN@p?H?gsEp3jS?c z1f2@#Xidssw`m;af}x|TP5T{`RId%B7F7|tp{l6jZ2@QZ{*I>z8ludD4bBwNXBs7B zb(VO3DZ#(Qscr&t1gyzfxvPuM{ntmWaTeo;*9c32$C z6d9UyfN%b7ML8V;WcXyEyQehFnD$r`t@?MJT-T_G9odw1# zT#v(@6t2e%od~PRm?Q#+!XjVeYJ)%a{4^k#G62Z9m4{r|coB0ETrRjziwG{b&z2dE zb;}F{L{!0j%He|hY$?p+(M7p=gwKcaH}|X30?_Pw${@4@)I1gGTkMgiqF<^0CR>~t7sywtF z8d$e|Q*@b*6+3|PNFTcL(5mSi?=mrdcUr2Sv ziU=e1IMDZ}El>(r=>V*%fi?k>h0?rX{-AgEb=2`EXJ2?`br)=99JREHnyHa%$E|j2c@zrB@5Yepd|VrV?~_S) z3rCV&O3KZ$bOfARDODA!4K-(pwv1gSq691vH@`q}ISHhJTe{d!(Sw>LC6{1UGAAK3IcrL6znfk>*CRJF6qsSsk%O z+_^dsJp&bVArY&vI9x%MAZ>}5iI1fkADz>SAyw$P4-(=BMN@(_cpd`#rS*n0D1fr4 z6ya7(+2(@f>TzHpznI;qw5&WyH_5_&&jeEIQi3$M1+v+-duN1oFOD%}Bdp|brx!2p zb|kkf+P_0*5U`zmo5-+(`syx_tRx1_vS-S^(6TO6)*xHxvMyBCMXhWB80Sm25q;7J zZFP`@M6duv>gWXmo)=x8h)_5gfFVl|I&5nm(tf_bhY zz(y3*s_@wIy^D=PqX-Y2Afx5C5rw)F*h!d|YRRZ|1N+*Au+GQAoYq0kC9&IZtRPLf zbaY0BZ*e$vv7V)FlC}r`mENx^ql@i)N+uUt2rR;kBdyN%bTT**qAmv6g1Yq$aY0-r z0Sn(bR-eig`lL0!@|l%nz2OW>7pzu5XtO{fq3q=uyi|CT+v_CMm2U`i%;h{gyxJ$> zg6ker#j)B^k-f*dPns$Ut_Xcp?3L}XB`A_;%N)0oMa;2g(&fN|e2>0Iv`GhyD)_sp z%c`zE0%I}h7+EfyZdvC6DFbqYbH6i#;?8$N;4-3!-(w=%WWu^2pr zJ=cb@_5vT_;T}0Ysq-0w<66G=mZw@uISlUY9%ks?yyP9 zeSz!8-arwr6T$rf@EhW@L)a4F4uUu$xGL&qdVNLIT{=L>e0p4~JM6?eak*x;Q4|J( zufm26ACQ~cLq@F$?$K}{EoUCi-s0^6I_%bn4*@WugW zT7t5q8NZiK%WUNI4}CY!-y+6+x@LMdFl0WLQ|FGv6!Y_OOt3uKqNv%km-B&d3IIPZ zg5w#W0o3fFbA8m@EuscByWu+SMBcMe!<_1oRX}JPqvb+y?~z-QhKPXZyijdFK#K@F zF$pfq5;D%fm;oN0S-4M#WDxi2+Fc9%bH%0rVx$s93aBL&VNLCI05wnUe9x$Kmo4pU zYTly#w zOjZyKocQPx474$qU;zA)^&ByzGv4kWPB6J|5$0l28#Jt_{ZNeDQbtR23B*w0#1WMt zj-JAJ4M2_nFM08y2~fEzom_HqPKv6KWP74%2j?7(;Px`q@A|^<8H>?A$Hg0?r~CiSmntRxk!|HAvLx!3cXY&Ph0j+tf^5O(-e(i zceJ1BPO8JZ5UHe}8X-CKs@@~?E4*K4uJ z7;He@icq8cCOedkY1x9XS}_T{0Jl8*?W6;h4Nh(IzL&@;TFMHiz_E!)!Gt1fqw_BS zIe~oz32@y*93w9gNJ3c({+Rgqrnxw&9Ng+)057pnLGls1HU^cfVE>)~ZRguGo7UHU zDa1D}H6diI4+A@R)ItacgUfvmSXMqKqb=89al_{;yS{vGsz|GTZ1@ulZnB5ntnt)L zo-DvQVY}nOoi_4AK4zzo16kXAO4fSHCgOxjOhLXJ&kv_#uVD{qQpE&MSl4q|JY*dfX$HAL$t5vfl*!s9C8roqzZYY z5k8QYdO@BVDS%Ou5&}ElNySN>MF-pt6?RLunoFDOGe2LIUux}B665PtY_mY0a=>?X*CcS7!M;w zTI;eT>snge)5&=OPF1a&uqy`dg*%N|q7ZZ4t!V?v9=yc1n9&PiYhjV=aizLau!5YU zFVz0v^STT%Z0f9an`e4bGT3__I?SDmsFv&iMJT{Tx5psmF|)_RmYYO}>MHE}`GP`z zgKi&+b@H2sK~$JkwVkt8s~NtLwdOI^{N7SDovCK`mcr1RX8>7N(v(r6coPo+He{Vl{<$(`M69K65WC=X z+*^!WzE^?jH@%*DlD@Ao_tmxKt2d>5)fczd-qA7yWrI^q#(ok)upwVlEfc9+Y^l$S zktotmP-pJjKOdYR4Zb~wVG>ptCy-vqw=P1H7#_z!N!($3tnrvGYVRh- zM*~uk40aZbC`=A;p3RPte77BTp|fV(GeZ+Po5tnmbOGDsYNr6o(!hw5CBg-RL-M^c zNEmzfv~0?p7?46%-AxpCo&ArUb0WBtwI)r^gM5$4*+3)0)?%H> z$yN;&>zt^Jci^wpb>}F{CJjaEx$1=h**5S7!5599X%^o5xA*mLcZa*RCRYPZ5L_C z=KRiD+D_8wZhm_|jjji`j^cL;^UD!g1%WbnPRDC=iW&>2N(hWb@RFbqkD%1r;C_v? zZRn{*?)ke6vZ%bZQ-Jhra5!q}vP zT?P?gYpH3D+ax12TRyMWv$NamJ)(P=L8uIe3wi`Ff3Fzn(>W5Dl*?)6rrBcVgKBtvcx*129%T<;Ud^1Q3KUR7LYitF9ftM@k+*Gr4*Ug%Tlw-;ATHhbP) zTu*h6Y(`Zsa4NHPpT5b$b&tUH^V<4gE!1Y5^frnPfk|vlaI&@dZt%NH) zsKk2L!==qympt21ufvz=b=T=KO<`7wPn+}J^3I9NSveqqW8m@?XR?UNxd#YpR9AO| zD;A@zAZSKGy(#mlHiwEsr2)^RC_*3)RJmn_Vg57=wTA}6Kb!ptV?jvRCDB;1NHEMl z)TJ1W;8n>wJy#RFP{(cP*p5PA;^B~1@}G?I8nH5bbxMa|F95O-C%w+i z<21Y8Le~}(C#f49NzhxwrJ@vt?y;&fa5_<@)fu%|H5NY6fATT@3L3*`m|%(6`phg` zT7-i_rh8+w&|7M|IizcsV$X3%8C_*ko^QXs@`tjStGASTJFg~_uG(xg=H~ApT+$!* zO7c|eUNpNxAJj}Jl`W7+Kz{JGo1!=NQK?0RJhQJ?Ev_CA`AZ7$nJQ@3Wixn96y=De z@{YV8A(MaMt;Gzj)!{%0msz?O*B&hjjeBLkNDc05Vm~;&srdw?XnJ*ytlCwRRnVXl zUCa2ks8bzCtlRO_A7_W)1{;{6j_dealI;{2sY=t^y-IUeQmtcBO%j54l~~(tda8h? zXL3yn2j9D^XF#ysr_{P+lifO7v>AKZ#1p2IK-fJd5mcCzOfpe*mQvW1ma@xI5NH|& zOWA2DfLo?W^vJz^BVX^3rvN!;f@&|*!LpE(n)lXHoYdS?OL0I`!FRHaC@2048yQ`F3jW2Sh85tNgYq;d{A zNy;3>Rx+SmqY}8SbBtU(>$ahn5y{x$2U(|C) zalN*O~SgxCtK#| zjY|lUAPLK*!RkT>|DuzyBp_x>39EUKB&?jPvm~tCTS!=8t&p%{5159^Ei>f*r#d*N z*riyLu!YS(OTyasB6TQdAz}4JM+yG^GZI#(85UB5^PUO`iwm)kuuNGcVcE3iBy1!J z%UK+f=7mhMFj-C+>q}TWaA*-Jl`@te2brrt(W|MVL(L?t%j_g9CN>h5nQ19umuY{U zk5yQ*jdDQ5kRE(v(+vzGMqrNMHJXM4UFKelnJCi_B7#nWBRyodR!5QE)b~X17tLe5 zqjbwrIU{R1EyBzHkg`X5ziJ9mp7d>HmH~oir`%Pho25Xy!6boXK ztrQfpLo4ZNWx*asb~Pcld1D~wKvl#hO@-)GkwSD@X$%hxe-kRJxiGe?3^@kCT=dDo zmp}fgAl7Vb5r;d)(`1$)tAt~)!454O&`u+R+DX$xnNpShtF%*NKQ_0UmYZ&pv9_Y9 zWI#0?yv>c4pt6dy=$<81<_#URgqo?0nxIJEm=<2KhIetqnKY89O@iEXb(YCiO^XG_d)Ui7kAPZ!p;I%&5lPE03CoG-+ zw`m>Q>!F0EThgn;yVCZ1Hnrm300l{3A1K`v)< z3G(|CCBMOL@73)(yXA}_ckB>Mr`rij2lsQp6_dEx%}QsXzXaq!(q+^L!DC@^E<&tF6V=Nc124txF|HmgiS{oO}^w+ek(+i zOkN;oQJkVNTZRG+*Iaw6*ZD#NhLG>Ot5;mmb7ElygNm@)J&5T@Zxqihfm)fzMG$yB zPfQxQFmge3^*i}6v#?u(NaV@pg=P8c^-}HBUTQ9sK`<6T?HvyqOmDX?_WiKfSs+~O-@QgKyJBVkQub7(dfqvN?pLGOutD7?7uvOo0_3^k zZk62CYdsqY3(pxmZq8@9-V8PQPUxZYbC99QuKA(0oe`*c^m^%XP>6-Z6230DhC}v) z(jT*`Sh+bHZeTwOohLXK2Sm#EH;shVSC;v8a19{L1g2NGd(akrxHyq+!~uxYEltM{ zwln5KXnR_?D!M~l@T1!sNW(~hudx2d_a@83S-q(bg&QL93}?78^BArJ3{cq{78C!& z#-`vwgprnKi5z3T`DjyJAuGVfe`L?pmzhVsFU*k(nuF2)!$wKm{1mbFahsTMA2ciK zvy`$dwd=X{@@2sy7uTOLGnIl+hZM&pEdJMSHT-28*I@T_M|ijp2tbdAwDw!;{rwCg%^STIpd<%cHef7R&7`b+Q<> zYgwc+k=UEyTIlteC?z(I6PZS_o`Wl!>bj zz?C;JaWb2`Ul*>CZDeV)rvb?uQ`Zch0(aE7?mMq<67|l;Ciq};e#K{Qv7_)YrVR>K z8}rzrt2n}1CPx;Z*jo~9C^ZZVxg^O=;AgmRFw;Q;7Pi}t7%`uuQALg~l#{%fFMq0S zMAr6bbVf5j%oT0oTOTK9LK8uL7%>hfV%aD8chaX5B9rh%URuDu&-5uk6lHH2+oO7i zP9DAE>e8zsTb?Y3X3HigE|}E*u$h^i4|?ZsC)?^Be0lureoovMF6Xi$=bk?~pK=ZN zwD)o6Z&#_`pH+$#J{^)fF)NvAoRWL9lJ!Ah)wx5k>>F48%XI%hdj597$o+3ZrLNmS zYs>Tnl%+bCpbsUV568KacLr0TI_k|1-9CBvtQIi_wdjz@rWlGKX0;CyLHJJ|27>rL z`7i_#T|Epzd}Z0S@la7Tx5v1S!Nm~NjqAl6)G;}At1|N;h-eQ7(g7)GVVU!wC}@$D znnOWs5E_P{rAmH86m*Dcn1hBTR_`zh!Uh+D7S2mSM8G^m1i`~D=RqN8xs{rOAa+*` zL(pT&HXc3&JyumfLGf(ndz@Y{+pjZUf(4IZtCQ_n5euF!M}wRI%uZ%@;g0zf?iiaH z*wZKVJqd~UDJ1dTdP&T4Iw^?y5MAjyA?806Fe ziNSHeGBJpGt<|((ODQnM6=%Xrw_?~kq$W$o<*?N&7pYH{&1|emwrm>6WAbxp9&ILL zH1LkaHFezYA;}Txwj?I_fcu)VCt87wk_7y2OQYHaV=BxNRBleC(2wP2P3ag1gV12{AUlZA?nwSVnnb5F4 z&-5Ue)of&xwOfZGy3dBb0)W|QV6zyN=fAPg7~tESA1ffj0toB==NM}3$5rq0T|$OE z3AB87`KSl}-8<{~nt{Um%D2|9d`I;X@bk;6r&yikn_49yfKWyYA6>Q>`z(u2lzo=u zFKnQDnXYPj89p};&k@b(V=jkT|GPo30g$o;jZ7jmuwGUX=sJ;LS+uLxY%P&~lWIOT zpBI;Y?v}EPG^=Tvb@dW)gq^pdrfrWBn_g=^0NX3cL>?=Ly=qD4b{7LKOAjlk%?Bhj z>6bmk9z&Ua{Au(O*<;Qia;FV#0Q#nV$>OOpL!Bc;d!sh@+Sv%dZNAOHvbmPdF;GVG zZRg~V+hQMuN^Eu^JIA?ii0obrA`_Pd?~XbX$mHUq957v`H8p1a%WdwfDK13?uLXs> z#EAG!sPEiYL)p7}8Mm+;5J<(TEMZavC~Vqa%=c)tzH6&e;vBEh`?!__`T#h*s! z1EGC-LCr^UVgJ{2|8m9$-Y(0++Mv0#4(NPnDY$j zn0g`vvoXHJ+ry2HTLE*_ywjP!2EfoVqbHAwnRn(Nf*_px(Q4u+IE|;84)6%WYdQc+ zG9A!s?%+G1FQx-b4@ecqGq!9bz#2W;V-m6dqBb2EEGjG43fXi(0!GsTRjy&XX%uNR*JTx7cRj`~6*lQbZeJ788anhC#eie+O@#^DOpKM}9%{*@ozxr$+ z_$4xK5Wg(t_3@iJ{C>9?#Q%j~`)UajD_`?X!#D1e4~I@&i4_g!h&cQHHhIWZe198Z zWYWoAH9nOGiM}g(KSGlzRub)fdO3eMVZyR75<>VLH zqR7f}@+)s!7K++MWRH{Rf!Y-%(5H6u$r-h?EYPR+0~9rCA1rF}EeogfQB;N+ z1Lgq%2g)OfEQx<`GR_cC*CB?0Qil{W4%hsD>5wT98(~WunM;C5@$`H)%j?_`+0k+5 zXBhS3PNP?Odt`2yMw6kO@3`hu-h}6^fm>x<n{|+5|B&?CKV`TRn>r>$YvL&)HD#%UaG*QTruAQGR?chAmuM{{WuXyX z!3&qNkfXbX-mk_zmdfGAlbDlO(9UO*Uh}%i7>$WI}p& z&mT)XR&-dFB(c)UNU`bexJ^-m{M6%c&IK?qaUKmVttWEb zaZDsjI*4{D1SqBFPaVZyJ|*n``6z}gaL*{TlnY!>h>uW~RHRgT1A#OgS_%EA1q%26D*U^yOB z<=~ty%aLSb`fl9P$<-HROD2!LK(4>v=PzzV{vI~j_#UgW$ctCpi(%h4YO{LvK(M{7Cy!!TOQF;>gbABM47j`3QK{xFOeIa+u{e|v)< zAq=`ZH4w!O`fi%i7u3@G!>~Z0Glf%*g|!_0VZfzcx$s!_r!gLuxrR41Y1|!`X)@2jWe$XE*FxkofHlh#}Q%$C_{|hvU#% z7y83-Xwd}?$6>V`{oy#QmScG>M}Ih$*K!!)rMnQ_ImGj>pt;JhqmjKOB#( z<*<$MMIZZI@wg&K3&Q#>4nmWFQchaZM@G%78uvKgQHMQY)OuM%8h8#&Ts*ZKCwmD?=BE(+G&sA`!j_|@0ipG<#==pA?3R@k;hi8V8LlmEi z(G4bLBA{XVkC_G^Rxfi5(|@ca)^ZHff9&h1_*fmzmF--r(d0fjeO#iXORLe0; z|HV0{Y*}BV|9*=kmLT_`E#^j|GqPI09jOG3Itv zIcz)0h)b{>3~CV!DH=J@FMtG^Q77G|jAsK&XK)153X}o1f~H>JXbKk+lRHrrZ;rFj zMYF2n+3I{LGzIU-?1GGHQo-aGwj8gYX0{hJRC{g0i(@Tu2tRFf#7fU0D^5WQnJ$cS zXd0Ezp{Y><)AIOfqkKb~*K-JJbez}8(?%7?rKQO}hx*$9y_ihwNLYA0o3Dt#Vr}Sb zMfP%+wU>8WTG3YyR(HsvuEoqE4pHE(gNLSZfKQ2lDK*vVvMA7HYcdmrrAlIvQ&zYo z&~Gr3?-K*rT7aH*S5I1jAzb0!8h>G@jkpBy7xJ60gGip+38ze-`cDjm%^1emGRJR~ zi*%bOFb#sP2hs%>c1TXR|FFu37!eyBO8- z`)j30$oQC&tr9Qsu3^_LT}#)hi-?59f0C>y)6+ z=4!jR1vuvSkk+|LSZXMoqQe|8UxxQ4&ouX&(9CaDs~hHgj#!I9hj85L1^P6+mOYRw z`cK$}=rGCGb$ux~K7h`0SW`k9g2~sNeccW_2~?D?MJEt0g^m8h0gjr4I;cg2pK3!> zN3rqjB`$onesv++`nM_3yV?u+pd zDi{yLjp0EpJkd8iSPX9+U`pW1%7))jB8@)3gn~HN&QF{~q*%23Aa$N3>KrSv0nI)<>eS+D z2_zB45kMMPMxGOD8TK8ZPlD|W0?lZXE}Zm`2(YG?n4={Fkawt;R2=whIY?I1ygm*|UEa_|<)j1vRE`P%Tg zWI-6l+U?MJOVvDvTWnv+)usR%kL`?L+v(%N{uK?Zg{5j!fM$o)rT{G;Dc?ZtYzwfj zrYS}u_fFDxPPA_!);YpXCdB!6f6ATy5_8e#=c#E8N5jVX6(5ovv6&;nIg(;4>4JMr zKnqH^%C}R|*k`4~5_=6!jqTy=8`EQiIhtbr@?~=3WAgTNw?pB3X_OhIjuhaKI^DKy zs>~UB_&vp~c8;XQpW5nEjM2;v#{ZAKw}G_-}fw=k}O%m zu`RXZp>;J;>~R+w23Q;0)qBhh+r0mgc+^D#BOj_3~|7K z8!C=zOk)_OF<`(A0t^wvA)?zff&`e~|G&?@?^U^MDJuybvSKB5?mPF~^Rdr9`|Iqp zPeE&sr+z&~YNk>Vp|1Oo`b4$-1(@EN(4VR9o0Po79WYET!m@sy$@@N0MTnBKd5;hU zkT9Sz9$r~%%eiuVV}C8e{#R+94Fu-7u3l*L4N(nqGgV&XUS(4J50@8d8q~|!?9=G@ zkWZo)-JkHT$*CM*(E9UvZ;f6&=Sy`_s6>cjD^J;vYhQr$FlYU-^3 zx!0!GA@+BOLJ-0dC71wVTKcHPuYN0J@)_QaIiERY91puYyZQCr&Od-1n~D9D?7Rj*m^3jJhc?32IjoBrGZ z%YKuR-6m0O=KimTtJb$y2M97uFOSe?>I1FyoC5x59>`U+N0_k_h`1aO7uftwT-?=(34VkT8iJ6tFwx{ zGl?KepETD-E_QA}u1WS%!YABso)Oxu*$rZla!Bda0R5OYnl(lVyShIJ*-)Ej+|%ei z!O@0#pE~)Q0?n@0%H1UBZ>`-X}+d;sz z8o7S zV5Q<4zqNJJ8Xl%kNpIf7A5oA?dZP?R@ufC534^tUwSpH4`J)lz;ZWrRXz=X$;;0UB z$`}B}hwSX;Am=FB2Yb)*4nhqQo=eDXNa;scs?tW#!!NOlr;V zdIub$L}NAM9j%T(B=*W8AC)E#SwLcN7L-91(NyuUM5i3(Rxw|&_Rt4f z?v|t1LQq)Kql%2KlC<-DCV!i%Oe6?Io}{P6Lax0&1^=O(E);-sIRl|&v^p`A0c)e1 zO@_PFlQBXUYOqso%ICNm7vU6bK?gk*A5i!WnyT(u;_?L{YG%(J4srM9`1~Z6FrDmd z%fs#x63v*D@VnnXgmlQV{n)m zt#SbU%29g!8lJi?Lc_$$#v#+!isKvkKyOZBC?mQ)`wq$w5#U~aAp;QMTzK9aXW7&f z9D|R5@1B|cFFJR5B1V%m_fN^K;g=Uqo zEfyx(HkK9=eawJezi-|RB5EsfXZ}B!!mNyimY4&Ah%gG$!Jnqu95k07`OQ#-TsBls zGPz?+a*qBMwnZ~-S0eAERo7?93yN~mc-=h$Yp_`$k1z~-ZS}QoM-*nzWzA!S4XJ+1 z;Fk0PPpMbwg};2&dLei98hq)Oprc=b?NhyFbk~Tu#ZaPhbx+(;_}iB11hr#B*{7n% z1R`}o1t0@z>_+;Jii-8mrE|_oG>L{D(O*@fT1H9Xj#F zPvbq|1|kS|Na&=mAncD3-do3U0uOT%u?uu4l{2_Pu~XEgfsd9Pm@X zc-ONd`!);|n9A9L5|twT7-?sxVl}#*`Rr?iM8N81DK1b~PUG_HYsE|Fi(4!(u^1+H z=A4bGKPvY2S1Wi4J2LXDhSOZ1-An>_ZX#KIUG_C3Y$x49i*S~&CBexeF`@90BuI?< z!{qhZR2nRUju%A9NDQ_Tz;u6)ZFMr(nCyTU^>R^U-jdF*>i$07#Yd{|{dM0=I^JFM z$)Jhy6@{ro^#LB_x|QD}MB<{@{ZAazB9wHe`=_H)*MiRprhs^BtJF##ubyIPEN!hj z$uaD?kR{R2Oo6{m+$T#hWXxN(H`izJkWn@nno16=06(F&W4t3Ocyfl3buU8k7Z6t& z%yL9+2coirOxG?1Q8^y=*(2(n-gw~QO%j{u+av9Edt_up{~!Ku_%{Wzk&ZbwSZ{2) z{O~Yp_q2B@81Kk1)Cr$A3A+hsL#$o%1?F_97-mN`D!B)Fj9n{I;sR=8L_P~4W;Z$>MTiFWJ zrRFer$$}EwuMB?se*9HP6{ZSj;YymY=Y6y~Z9QJPZO|iY%=8)#(BzzQ8CXS=^Ne%O z4stZ;L*8zXdcKIp{%_$y()q2j3+uF>kQ#k$<$vL|lz$nPXd-X|fScLV%nO37!KHyd zJ=}PQ!-Jo|I{$@(`hH}P1a>_R;7*eX?Ao`)X6D;8y{*qH-H_=umb0{Z_Wcf=JX!Ba z#R6Bfz=@c6ip#Uz#kDyVMe2D^2T>@b&s~UFkkzR3qj?jwDTlZVXT&zx7*|5%ppZ56 zlUt*8#ux~5RgBFtRo49pTjxP9TmST@tvnDjm*l4P-5+-y-hw^RFQ)EmX>aQ+yGK6Cq|aH69Om+BYzb5QIT8(?3^>kc z(FtrJ%IR1WNOv8!AfC=>CyMl(JTH?;JiWQug z-mFg|Kju9uB}g%03}xV7C~Vx+rCNMO1nus>)a&O9haINFxM%5-3* zo>_I=HK{D$ebSn+|g`XW7G($~;X86koEt~{__9EO$JrQzx zdis;yiq4=o%+nc??ZAQlBL3_mGQcF*8`#j#KX5B0n3ac*^j3i>tCqaPRix6o$+-k= z6)sYE8&w+&REV{kQ$zO+H{@obA@Crp(Lk+?HE1wiW5JlPU<+>~F)Cu7Rj?aEdD_me z=YLqRn0EoUHyh z>+ZuC6Q9_iCJ9(^<(OZYn0#?KLm7eT#q{zd3Lr6L)FaT-7*FdZJSYs~$UY`^JHMX$ z&oLI2kZ;x=QehlPGnSsF)a&={X%*Ak`k&{9xV>J;zDLVZdHbW=GrVzh^Ei%naREC% zhv=b4c;UN*M7d;Oq-0LXrFX6Kr3?xfytikpXulo0Yuy#gwUpPb^m=gRxlX0hFc7LF zPvqRSjtQM8LD8YnLBk^}HT>pPxF@Lm=&LlW7>T?dd$opP^15q1Jil<5oIqG?x}sad zXYN%GZ)(529M!e!EYNRURdDcWoPE`q`i^x%xOa4sx}5$B)$jqy3=c73)in5?%UY>f zg01eCId$H4Hda$_MkkTT*-jyBeyJZbrDloAh^vTntC*I4hNpVfiu&=yYsVArcq2R| z=QVd3!MGar+ZY1KT#XI?W;cI)=ywO8b435EQ8c6BavWVl8&Rl0YMA}568Z}^7{gS! z`pkE8GT+{oBUo!8AdZ*Z7WbJ)ik;_D+JEyAf>KsLtz@kGUC7@IJ%o0z3$TK9(X5Jg zvnqJfs*r{rt3pq)D%cy)s%XcmK)K~MdN)XkSQS#bSrzKRfV#7qZJC1LxEGoLT#cE6 zuPWl=N9F*LP;L&QL3C~TFn&_Q7^#PWKPokP+y#EEvcV3h(MqJ~B!uOBq^Q%UF55P$ z$3-l=B9^LH?NrFEikaaH6$EARHSw_O3~a8NuKrfZggR*E3eDCgGz&nU*W$WA;_tbD z&LYC{&;P4FZx4SiM>`0cKdxScxVe8i1PJfq_O3$W`1yo^5CS9=Fe#`Vv@VH2C`TP< za@8RgigO2bVG@uWf`E}kBv>bY4_v=_YkASW;w=&fs?Si$&LRL*91?v26H3H66`EqT zX(8yK7PhMUmk24XTX$mua(r61Gmy~X#qv)vWR4{^edlfoKXjltW+6&fQ*a`qwz0HO z@)^@qlJVWsy}MiUd~#8+eLE85^?ONIa;A!2Yh3g8C}>s35R7C^_i*%rXceE)AkHNF zeKLWOBbkm4bbE*kgMZ~J8aW`O=3%@yb6F;@-$|J!)XAb}rVx~jy}a&6P}xv~p^8{7 zSoN^t{E-O`dfP_aC6RO@>cuqH z@b`BIxN5JqzfAzv#sI)t0#CG&b&|?7U)~klBRkwgIVIU|LUuTvhSysK&7%cdH6_o; z-o!b676ca8XAN+-8Oy%IG>I0~YIRcyfOTYNriH#QHGy@K3Cte>5m{9G zH3}~MP*>Ip027?lPpa%t#h^O4Eo+#(19Mr!?DbK@iGFQu?UgmGQ(MEVxzl(0OcY8n0-L<=Qkj(F4G9RD<9sxUdRjM-3>rql+pG?Bl{XhE@ zb1CC5Kd^#bS3IKZ1y-}K-4g<~QKyq#SToN6-HbNOZ($|T>4Q=kK0D)9wJrAFVG21c zmws_5eBX~FC!NGwnn04^VkT?kAKOSG$Li{ZC!Wf7V&gT4QTCqW_g1|7{98eFhJSa7 ztv&o3FZm~je?Q**@E)TWtGJ#|tqZ#~M)p3yUhmJYVuljlV*=hYxWkY)t;GhcT0zb+FP@)*qyDT5!NL?)(KGVRChPXn?S1wM-Iv%TLsiN>;<)@ zuBF|E7onpVZ^SH)YB;hQC=`*lfcSwK8HJh7)ES}<(k+J-S?hNzDzcBhU&6x$DY9nG z1E#C%a*6UJuNYq+gkS1!E7mu3l)vCG6Be%caa$BN0NbegurNj=W^|`i@4Yc1a4-$$ zA`c99>%l5t>pmEi!~#}bawFjf_6_T>EH~?{6knpKKl16J@eOoV6Xr%wm(mF#`b}(- z-FIM((LzNsWmq=b{C%5fLoM_k6JItgL(fr6S9&(!m1b?C{r#2{pTg=3U$raFz-h?s zM)i3!zmaRZ`)8nN)`0kg@N`Qwpqy``k`k6J9Vp&6IuO_{9S6}uuUqN$KnF_ik(?VH z2obK)fyBO~e38S^)ul~G&1gw_JNhaOkHzaTqLoQ=8#Ih+q>kZ)DII9kr(ZZtHqnzQ z*GgSWI?sf49#+Lft?y815^;gnlhP(NW9(jt6G~7|22(_W9yV*Vh4GH|kRkZ4K1{x5 zjhY~U9x4uAjG^KHX@A<{QJ-RM z87lkBkGk~*1L{0Y5??0P?ITDq)ax{sX3(vlL2b0YI&Wpsn8JZ-{MgyGP^J06dUnMDrXnuvi10 zCQqI(yGkE!H%}^@zs1iv_p1wosv= ziVD!p4n(l&EE^5cS*^CH22;AXg;G%L)Py^h%WV|VW#mSe$dI=9UcHo;C|Kz$1#o;( z=W_DfV4PN>q$76Pq+9tNOpvTtqwTO4+uWd~ioC+-y)0QFWbDxK-mF4lW}TK$PK+!1 zmK!M;SNHw4%xa3FGvWH5)`ho6=pLtOz9=DBZ|kUwY4R;w22l5;EN(avNCP3lWB-eE zJZyi`Q>_C=^agidf-ieYw}AQsvZ>eE^hlN$BQ32?W^d&M2f_}}m5*xbx5;bk?_0Se zou=DzXuK;fnuS32-F1aLqPYdTsN8c`j~#+{Yh*dQhTi4ebAx#4#w#+#$gB} zxzkahtIvntE-?^}c8hABFAjKsh24g0eOKks3R?%M8tvn~@AyboT^`MJ|2EfGCFFwb z03G}U+4<|`?lxT0@Euy>R9kkp4!HT2bT)&j(N{CCF#aT6&-={23ni3Fu?gr!qiu_V z@!Mt!0HVs&espDMq^$$Hi!FM$yoYs%s#O+$n2-R4$q2+v>|Sg+<69%Q9%G*q+9>M) zH}7by)(8L<4e1Bol>9iTNwVTlA3}_xkP$;UMyY;5i9o8S3$~^5xARHs?tb@miR}1&u#il;8v);FFB+O%m>79=hMogb{`jW%?%sE&CL=b|? zwzRMj_T#dzCmB258wmpFI*esQ74*CtLWLaBsVnJ2x3GHLKsD0i`Xl=mayIb>T>>!> zW9lxo)FrwRUD7Fw=-HrB$S3o-a<`(M=vGrn1cgj8=3r#%Qs;LHiE3JrjQyVrb|CY3 zpS}Vj)sv^;DOazTipwW{K7dV}=P!e7_$*T<=%BN3xgpD9M=a5WK>a=03t zK+)Y(P090jNnJL_sjl|2x+3`9lDdk!utZ46q%%wc$#}nrAr*$NUI1Uc=t*)0wVK&i zE>!n$WqS=%c!cmB2^^_yS&#f}f=YA&Dp>tC65KNx=fv};40 zw%AU$>iDQxwU86I4kGbHet6&CJaz89-}j>*I{SN&F(yQ=G5bF8x8M1@zxd(*`jJZ` z>k+d4pXdMPcb@vb-+kwM?~A;XxAA9)k9{#aZ z4r9)~pE&y)FMseap8S~`;#2%O_Wk^?|M>f#KlOy+nH@-S^0Q{`v?0 z;n}}A_UF7<$cw%DSMg#i#roO9tiZQ%seE=|qgKE42w3$3DZ&Mq4Q>+{FAi^|PY9WC zFQE=H?QElaxjE^fUaKwQ79hUxzk+2=MQp3Gbl76%4Q3$8CBlcglGSEthj#&%AoxdB-EKqjKI)1*BVB zr;0v-uK|J>hT9T77Z{WWwRS%Xu^+cu$QbRm3iv&dQe6&rf7gp06?ah0J-~SovIx{c zc}O@EOONtGZ0D~#BJHx&JyfXD-(XMT+&i@hD{Jl!|3@7ffsqmKzJr^Zd z&qLj7NB88US2W#|aWZueXuI*@R{tz7+QBc&BrS{c>K+{UgFyoQ&hPr>>e6qkCXQCW zf(2{z+c5?m7PHSnP+`Sn>{IqzCYjp8f}O1VkyIz}@<5wl_&65wodprtUw-WWB@-4Z9*;a%copc&(d4)oAy z{o7TkFOn3BV9%igCjP9iqtETcpY@&iv#PJ_3I04>Pw?lus>Gm|RAwfr%ETmxD+}(p zq%t#TRi+w%y^8mjk4hI8Huab%GpOLoG1fl&BtCCLxF?n?16rXEsser;@QJRlT$m0q z>INk&x(Xw9)fmBCqYk8LG8N3(bZUN!Bx!FYO=APq(IeHRk`{C}vPKWZuvae>w0;?e zh|s1wbR7dz##$M|6A|6I4b|A7$}4+*V5sL1vh-Ez`RSnycO418uJ<3k??Q9bJ1{*~ zswj1h@Dje6cX%d{@uW)^K#1txVYZFQ;%Lv{1X){qqXHzXf;AogwEHUaHfF1Kj_nN@ z&GE&d`n6UEwm^Bb$)=}dAsm-lbb%#7rwc3zj+=ie3OK{jVAQ6~7P6j-j*}VVaCG|G zla6gT20l=pp$eh~%f}^nS+E?(>Cl4ZB+#W8t56i4ohuTNbm@Vl zgA)iZxck<|zIeKyaOHx#&oRX>Cg>Z1jrf5)I`Oa~)_5y2z%HEmJWW2UV#U@tejt9F zAI4ZfW2{(6gWLur%L&#Y!GY7zQ+6?pZZHG5=Mc{k!ivI^E6H2}XdB8~<2=+kj)9HJ z{Hg7Iyy82_{OP73N2-HA;p{`x#YEir(I|Y76@=D@ zMq=4w9Z|DX*n^gdhT%}b5af)eacMEIi%o!+Npu{IxK|V=Xu4ZK8hT5&Iu!uUvUxHF zi=0SAt;vb`GrxnlX>)}i4cSx4n%GIOMk3ED>fd2v^99 zbsfn(xCHC%gJ#59X3Fb>^D#qdp6HkT8?nK!6ZA&Jd`1P1h&p$TH^FmF80Nk0yK`7G zBo{@8fJ68QQm!EI-_|_yu}$HRJ&WSEaIPXQZ*a=$<-gO$v3}sY5Kl2!qJ@<@m-Y z-F+v`rJez4HO#^hx1~UI$ju;7pspe6sFOz;?ieeKbZ0ZtKU!g=08;xY>VfB)X{$%xYUY|JMKj^e_kCtD zt9Ewrs!1~iA1q{P5xynZDE`2bNmKVVd`SvooN0iDmPdzI7vNhuILM>mqrkFLn)5W& z6$ZGY8Q>zliysNC!c@HC)D8ELsf(EqNr`VhyO|ITKmSb3Hy!=t@{Xc+49x^oMDVVD zfn`!%r&x^%+NPfuJ{;&r*pgXhpABNkc69#XY;A_~1Fu-l!^6>p%M%vrZsfH&01`Hj zl*@&^;uokYc$J|`6hD-1C1ux z6_;X^#dMKpf~1OR2PPH6UsyEMRCJFJ4CEGXWf_44n*CgiHJ3-=k^Y1jD~y1OKyi&Y zS#dhoBixp@KZ~`~$vh%U@v9w8Bz9%x%$!%H_3*2kicUlYRSY?w0+MO1pH>nsJ^a8_ zqGi>R^#$WY{7~|Q7N52_lwxj0QF|pt7rVbz+qEr7zq}PwWm==n4{ToSU&I@^3_X$e zSM6@y1I;2?AGI^AZ%}1VD3}@Plev!^eU9CA_hjk>GlqI6JQ#EjYuRh`Z%<8l5};lI zB2Gsw0g>7~liL*;eUhdDY(0AKVHxgC4x2TUVVrf&Da)cb-`9=qG&lY1#LZ+N=Gh>I&hb z>{Hc`d?+ZNHmHK3+IA?JBt95oj?^vv^w5~#B{eiT)iw-GPPHuoC;K4hZ+ctP^mjjgK5#-NT8gEF1RRTEA|x;G zmWUJP-Jcz+1uT&zoyj7^&UVh{TlZ9OyM!PF{}zYCR7wY+QiVw3F6oxl+*>&UpwG7> zui|ecN9J;ZJ1gamRIv#pqE=LY`s@$APEp}yUcgm?Ky(;z`1Nt}--H>BqhTSaLB_CY ziriUvlm$UdqKx>Hi11u95F-3M+ZYTfZBkPg(&SE(AUs92^A(b02;swj_tpSVDu!!{ zgoL?sdZLx*IgUm7mZ>%IqQd*2TKuV)#X|fgRt0wP>xwr7(DojY7wT~eReQu^>E9b<>q4+qZ=gQRfC5NR zAHS&sN+1G>qiKk478IE~Sckp|mRU(xp2Afr!3y%}krNBw-QsT=XjHtlxNSFG!u1Fk zYm;FBWA!izQ@0X#ifZ;+X!0C%zahaC#ColY4PU5iuJ3PCXiC+ye-%DWg?K|f(xu}R z{ioa;z^3tU*FmV)?i^F|dF`C1;Q~8{bJc5iE=K(MgB*+Kf*}W;z@#jU;Hrd#S;;e| z#;mPC*;rNJ5iTssB++vPnl=e-z~J!8?(AQZ3H85qcP4*qD?ooxTS4Wpmb!FiiStM6 zpeJ%icAJL3Gy7NavHG8@?%j8Fu$)K`_jf{cJ2(I;jojXoHvzpP0t8#=? zY#H>ION8xOt-UZSGqKllM_kEwGPxrT)CN_Ial~4Q^Y=Ef>Ch89%~o+Rjao^t90D6k2RLN>rx|{$>(=6EdFd_H$UhJ25UC_0=_(Rc zk%1-LNPm%_`92)kthStk5x4K60D24R-`|V*UMh2fJ|Zyn@JILh8#{j$)rXMCs-8+_ z;*yqoWKgMFi%t$&8>bvnm=60TD6rqD-}8gtY-CD1s^3e#U%xxE2eu-GXS=8a0x2D( zE+citCoY-{!~${<7U~>T1Cc(!$Kum1`Rdj0?6>Db7EKPTo-*KcoulJuNcE~F-IM{X zmx}30XjKb3HZe0;WB(z~YK$da^3Uq&G~7EcI^o4V!8}UBm#@G57wyT6UDMv#q>v-$ zqo_EAJZJ`Jo`o{x%7`O3*!*g*z>!yb1)8YhPG5hi*19;U^y1D>%oXGJjmYz;QH-T@ z-^;ur8>5)wj>42{KYS=S#{6Na#R&LJ=Dr2~>n6n0p_uCwNjyY#9V`Vgdy}L%4D}lM zJlT)$!`uKeKVC0xM$F7uS$kl~c~oMJ#Szf?;*q>Z_47m~gTa!XbnuLMFg`Sc2X(Oy z`H%XHgF|*u>Ej&h<5Cpax4%|&2Fh-AQ8rPZgn=~g>O*%~C$Vap5FQ;uc#MO$2@~W^G z;GM!=)FC`nLfifddtqv=))U5Qw`72C!y!C`Z2=#hJ_wa^Z_u_O)GP8jh{q_BGeJDS z-*&|AKve#mV-%cwzgEsX!pLjHDDV*{$0!&jJdPqI$mqs?h|$gmg2~+8$L=Hu|KoQL z7{6-w1|bwM?y(3pA()z)5DG7TjI}mey-SxO&D0?jJd9TsdifWI3;EcCS@K>)JmkM7`^(AwBRNYx!X^xO!lQXdyl0;Hl&V`ai`z5I{N;kBwpie%J$icv5_YJZ zuEQrFLo4J?de5nI%#R8fe2b`=>;@)qhp;8+1D> za08+0J_H=*i#`1@88G$8R^2m#4Xr8qk*KNZxY)120xhc^`>hKdI~f4djIICvOp^MjpFCa%Wr82N zTURxdnvSKxfyNI+*NFo`C*!c{0+0MKb>`T(V?!umV4_NrjWFGDSd|{Uq$Wwv)TeWR zMmNlz1TadR*Q~*?qQNDc_XG^|0y(b-{OY*G{ebkuyZ#cF5)>qhrenbfp@@%~Yt6hQ ztSyo%!-QpVQb(Drt7SO1a@Uuo=&shXutcMLgK(0W*SrYKg1jfJczZcrN6Ip9Mb(I= zOh0sC4Z#LhDcT@)mGNqQ$K5b3A@;mBsBM8QNl*hfk#Gi?ekd-uL~gs>a!ecZ8hvV{ z+-E>CZfCR1TrE7oj~Dpk+u6Q+a=5?pk!4((bT;_QCx><37>^Zp^gf4^!;eZ1c04E+ z4fvdatR(Huf6uAfI@*Z+zndtdx#;E`KKcaOoT70e19~SY{J9&Iy39LYHB^U9`b`~0 z)KNqoa4H$?IrAe!oZlgFcmBSEzT~U2PNT>pE5YkgC~^MPE=gh*l($-a(2@+=XmbaZ z;6hjkHV}OQRYXayorF=SA}WVZV%3%j4Pk5iKvMA2px%@AdWZ2r*DK#XMHRei}dFpn*D2}S5*A>*O(jwxFq~}B)NBqK7PrJIb#2Ko?P#R*1 z&FK~@+H$4!CnP5D`*G`#rkLz!1yIEpf;~CNiEc2VWZ4(%YKQN8 zf5gvQgbz>*e3^h7>|)uqO}!}~H3gv;z^a87=U13utJV5sS?T^%T=GQFpCf3vT%0_( z=+ZOp zQgqYD51Ver;X_Rp;#NmDHW9sR*^Ny&sd-s_2~D>UHD+5fK(Y_T`WFU(E(3gLQn$8F zpl)g{coWm7GacIpg!)ngO~PWW1g(S9I+D}*yV+tU=>KEQWrVB{0!R(fe^#eg3oAt0 zx{Srb%YFwwz$3^Rq+~=9+JZjYm*P0(MW64aP|)Y2==V@$E(nyyafti}xlDNyO`QWP zIo!vDdP=K_et(YeDsVVd~b%-*t%bMHorpj3N z-@@(eK8Ti8>$-mheZs)bN|tq0)C$I+%iFMe$hds`KYuh6gUaBPnA@u#9R7`i*ondK zoJ|5c$e{2L);{x)BX~3u2Q6twzT^b&_qvzOp4JrN5E<9hQrt}p)3Lx}!D?jod6KFs zbMK_8(YK^99;`huo;;wYUyub+b=+gJ@RSYfr!$`0uT3JH%)8&LQum~goJ;-_{;IUbQcyg3JGT-!AF1fs?yjZ-J1~?~=T7CuL z*On_k8q&{O?lk}u)p}4?&Rr~~hR}GICZZ0(u-WaOgS|ftE|uPX(W+zl3`s~By2t_& zG?T<4-*t&TKO`x!jQo-nI489#7`AT}G_Yl^_C;?B&Sq0KD^85A{-wQ{XIL-~+81Q` z%)^Bq!fui_aGun%4YS-6TJdKG>-&ZL@X-1`qqmR$w3JkIS+DHp;8_A4_A76W0qef+ zm{*MtO0_-}wbxoN#p3EupdyKkxOH*$Cxk)bn6Caj7vdP}JmyT7e<~bZgcF(Yd}uR4 z5%|c)L^2VRhODML@RY~ylxPiqC0*s@`3#YhX zuOJwHM?bjwkvo)dph21&DRmoYyS@$d0m!26LpUMw7_FWl=Cp4EeNanmw7Ct`J}Ap? z17*N`$S1K((`}&Vd>iO|ajZa^qgM+BS6YyMCP{TPSg&t7SFYNBm%C|tzXnkSvM3%1 zpg<1lws&>$lRdmu0yKF!+kJMthO_Aw5;6qKo&3ryQ>sUbns+%O?)!$80tB_*T|ZY~1>R)h5<+)5%l0j4h53Am7KoCF(! zpaoHcsucB=sl}0M{aZ~S8f2T`)MZ40qkSD51)bDrp3Uo0h-rdc-oR4UGE{Xxsj=6Xx(H_i468^yLFB$%)31B?I0FxXHgTn3w7n+Q$Kw7MCZyZd1~*-GIy(b^3kUi6nfDH zOk!5(XPcj$p=fFg6GK0~d#rO&3{PXkY|%Y8-Z?d%kHKP6qS3csiT&pXm$~2bieQ{7~za&93x9i?YdA zZXKXYf=Z1uc`^owf6?yUkp4XAA8c1qxQt%B1m7B+y~W-gUiEE-C2m_-(lK+Yl&3R8 z*rJZ;y3D!*Ve)S}oP`DXAEirzLJH|cd)GuSVVdDdtB!g>)O!yrK#c7piq{|$F?&q_ z+X6Kx?)Af2u2DlnoC7%Zb@FadOA1|PX;p{S<*}ermYs6Vih!-t2h0bfkz|WELNgyK z-;-H_`DlsYx>1Wwmi;}kj9K=#3$KNZWy$18m=^J=rD^1#vEYBK5A~G(XpNf+X|F_` z7ep*pHK`9CV&Xe|NF1Dm|8+S5*@c8M+TgDNRjEw3=)8EwLZ#}*3899v}+ zV|4mtxiXiB2~WX1p$4GMz=X%y=48TS+kSw4GU4U#V!lKS+)E)&>KLsoQRcE(gn=El zTXgo2*+SkdtXOn>&&tvM8U%@7Nr8#hk?r)F#G%Vz8=y&&dzG7Km z4f&-JjokzukSRRS}Uh2&`QDaJPROedCEBJk|Ca+ak-Y>Oc8DxO_*} zMxDXa1UVB@i#XZh7kn<_o9andFLJQxNxDc9)!S#VsaO#}4IczrpDfBGu=+bSB%Ly= zW|ae0$QidkiGJq!+I6^ony;UfQEIGg{klJei~)|a#`v`nT(Bi5W2`p*dZWMrKFpynj1|Mjnd{Apt`npQOLmmxxS*T%VNT8 zC5tRNpr3GFq+O~Tr^09KCh^+ku-sEldRfbnk3-XuVNWo$_kit1`PO2tM}|7EN$0oF z)no*WlMF#q88akoFFbcm09l6@cVvCJMrNE-#T7a)3E0KV;ZprNxmqgVxr{|?lyeyk zkX(teI^)QJp4Z5ZgutU8a<$ZtRmi>ZG@_V6&O^4cLPz^=FwV$Rn=MuuhJ@5U&08`j zOgqPvbjGr0M!7!}F5`wJHfbfX0BGOJsF#KB@(l3>J=np0`BbMS zk@uv<$VBN|Rakp%z)${oT+k}&iiH!IePbW79i}hooj84neXw(X6fLn`kqmg+#4{(6 z*#T0c&e~P=z^XPi0q0w6X^JiUK0x7%vi&9jg_m!rfQ!sdj*qYTW$9~Oj;sVLXhaRG z(YwKtfEB!b39N7;cr{?{61|b71e1G4Ycf-@HkcM}DC zm@jTA?VT}d$Bb*#WC;e3n7yfE@^I{`F}{Gf%`2gq&Vh|Oh_jtH#Z=bGIxXN2>ER`# zQGhlg5xok+z}_6xut6BEfe^y9K<9)otrZZaRU?eVv|)tt+G7fCH?pX&Aj2@qBo!7j z1~V&kXvvypbb!kaql1_mqXbiV0-eehUnKd9kP9`6K%NKa;XO#NpD!9LsUZ|t0zqR@ zdYE=W622I1R=}4AO9q(p3Va#h#Q;?TacWFr4y4SS2VcCs#~Q^LVSE_@UvQw(LJ9)o zgTlF%N+K{VEgEt6L}0)}xxO!1G_NEu(lTm%kI6+3q70i7W!MBvExHChC^cJTdGh<1 z^>mfu@ZuM_NR!#niUIvdxrJ^Kv42046>{ot{&sJ5x zr9>;Y&7~fCeo22MqO#-kvYwBrewCnpWpqC^E&&HCgx+4%{dh7;JgT2l{G@xdhkX0) z)x~s#X*nIo#=Czlx4}J!%dGpI@@j*EW0~-yjvf^8$OeFP`#pWTPVDXeN-h$nf66{l zRE{mG!xU73?V1^s3`&J^NEdCkyL|QRv5#OsUALAecb9DWY_P5Ew`rPDb zCxaS>avpRJ2N{|&Y(n;Fa=7{G5%R?EF{D#&=w=Ib>UdsW^e{b#F}JD(>Ql@**nax<&wniW?LVH2HQ47uH(Mpx-NeOJ6h6@X)g`by zYX`yVx#8hx5pZUA2$sr8u;ijoiTaEwjrTK4kG#AbBWqQQ?3q0OF5q2K_&6>Dp9T`T zTDV$eZeR~aaJVM`(Y_v4@2Pkc0j3Yi<-RWMndlL6tQ%wHpr<+oaE|2myGjmre_j}* z@n+rsz$lf;aRek@Nze%r?#jQTVDnC-OQ?gO#0_6mDmo|bt|1p1k9Sm?Ox~TP&w>Z1 zTV7W8HP*#kY6sqnNk3Px>$arKASh?J0QqIKV(>(f2jxQtS-SbqK`hp!+E?F^LT_5kk zL6VM1FhxvVP|9ErfwFpJGh`n0O7Z7q?*<){Yl=uU5k2)o^JG6Vop;eb z$|4)^NK5;G9<&a!2(R%|H$4GR`nQrrL^c{R%7NL&_9Drs3fR;_rfRG_qUOm2g2_p? z6LiVtCXg`BCp!>W0#)rM(~$R_BTJVtYZkSW))IY4v!FS7r1@nELC(pc94LgoYjT8R zCz@Y|tJbz)4p9Pee;Uwn$eDJdAN;tPA8}7HKW>l>ReKrX#Y>(P{O7DeJ5JY4CaA8_fjLvG=rSn7~=8{ft**gEXgcVPR#8<0VSl zeQOYj^LNkS;M-?DKV6h~dZAtPHPfp+wW5MHUW%)ONg0?VehLZ&2GsUKFv&Pu@4Wk# zqvXCo$v~$`*;RG*Q2>G2p;yCL!R(MTzzPqaoE0!*QS)+P^R!sclUCma0DfYZndL1@sct%t}JG77}n5gvqxtOafIVUJY<79bZf!5u3gZX0n z-$8OZ&L8pwOXu(K)GS}HX6TezVQS9i)pI)2c_puDqFVScKNfy^F?_qL#_tpfx^%X*p<3Ma<}OjpU$Pl?=;4%mX=(v_cYE zqwZ4Q2@A85BG!~^wziJ9EOo4LZ<8!UrRL3=pEVML_)B2yMBvt#lhe<&2S<(RsK@gWU3a3r&eeQG^>K5~KdlH7$SQwJurb}2DszoCYL&DQNX++%5 zc}OE)D0-z*Tod|AA1r#WQ;I{y#Txp_qW8_Tod9@K|9{oXVPVLqOx|&Y30zaX&+tn_ zf;p`*ZZ`u`PJ(E{?KKkoJiZ4QUlDz$NO3hEf9GIBqXT88o7aK2syoI9}Mqp zYxWumM5~H*fT$>hojckFc z2}O>}9b+W2SGy;d(vwpRasz|hV867?eW5oS=8Hqz#AeBF!;Vb;R&|NR*5IvVzYSdV zi*!Y)|6Pr5C^ziPzV-EaTRCh6sqmfpe7?AwE?+8>Pn%@J&b+O0T^gOdRJ~`LnG$q2 zDA1)SNFk$Ls=2l z$gd_t{*seqOiHn2534bbGkh+)EW?J+Q%~~-$Qxp^g9})ch1R|G%DSjGkNq%z8?czH9>8m|+j_+y>OqzBio4OD@TLUr6@SOI znbL{LT$NW7y=;n$uly7I>c-FM=pJBHN7SM${4$Y&Dk@LTL~p*6>dwK*_?U|Rjseb8 zvy@|Je$t}nT0n%rw;Bko*4(Jl=w7+H**xHBA~p})`f9;qTAK%}W!u2^uFZqhu^SDn zRs%e(x(U6X3-2$yM{vo0+y?~LvdHvY+Q+DNc3NxSUTMf{b>`Gt0IRhHa63+0ROBsy zwdL*F0-y#;bZANYK^pSQI+o4+pvkB|P^ZZfJO5vW%*M0XX+|K1kLP6`5Rh}@H2xF0 zH@3I&%}xSl87>MK^k;tvqgvPfF-@esIaNiXS(6er?sOaC+^vJ<7Czr*N#GL6H8V-B ziQ0ZsRm}}o1->NGJyaDGkg7W6He9oM9U=wUvF!>;4Xy{Evn*qj^Mbm%22Umb>y-T& z>AIu<;|itc0LE}}Xj9H^0Irae?3}@F|A=mF?mnC=O2CTWcZBElSkZEhGGs=6h~$dv zirYzub$F1qcZI^<%u4Exs((aPvTU+%OonVU>NB_I3zHbE-NCkT;`k+FvN^9EAz zz{!fMqBWePlIb5oUwA22XcVid~r~ExUlzX)o)zCTI6w3x3sdR)RU_< zA6-iL*AU+Enb59NZsuvHpGJ9#Ai~}KOpqMgH2tc*wO3HPT0kjDfXOBjV6vVBn9Pv? z6E#HPd2U?dsjJhdS1SP4EhJd?Zzh4%-$Zg)L%zD)tmENVmpgS7{Ax5#jr+RdHlF8r zp5^%fLx9xOvdh)jgv*Xrg9mp_bJzA1!GruJJzkZbrc3HRweL>BTR zb5Z@KCO>m}&1de*%XxoxP#kI{@?-BD3PG!u6^7Q(HNL3n&0NqMMk;#4T-5YNG$lRhEGdkLHMDWnH`9v>aV?~~*`Pqt`*(7wggEwkwAmilMvo_js#-XC1L(G#UDtuR=5lAikI|< zZmC{7{D;E>l51qcURmi(QDDVdp5}~BQ#@_y97zS(7W{#l95uU7+%PK zqGKuAkL#ml){$CKJ=Oy(g1Z1Y7xfTNr4YtvJWBW;Mffg6y{07$^(F!qn;H6MVTGzo z9ogIn-#jJZ+wE@F`du&Kd$WXZi3<#Ca}vJc{Ym&9)BCx;{9vI!ogmj^)%X1HNBG3< z{jdpcy5QAG<>h$#N+z4ItFL`M2j69{_%2)WovQM8h!~RfWCs-Tb9zI|01`XV$n={- zrk_y%EYnYfOg~|HMgy=+&n#LPdLwu~%}wnYWRdv?a*~8H1o;~U`P+M!lo>D`>Cjsr zr!r`(MM>OiByp>vkd@=pB7-GQi`YW%AW^)(y~hBiMH#M5u>WLYwD_SOzoNgVWE ziW%(&GkBV)e$Ps)QKL=MtOOhR*^1ZjHkTA)EB9@^E#R6ieF#mD7U#>=vS^o9*Pt&? zX}x4ZKWTnmFW_z*O^xhT$(pwWrOqTzwCA~+ohzpG;hS(pS)#VzS}s$(@pOCZ>4Dg0xxpe9&Q zKCIwI(Tf?=L`?(Oyp3T-<_4t69bCcF%CbD`RMRk}y!y%`8e%o^KWb@d2s)_5(?{j5 zvg-(Cs4kR$s4(3pdg`t>(Y1f})pxDR!Bc<4U7u7kc@$8Me>>ozUBSfJl-=b<&|g%n zv<)eh(5dlgjk>Mg(+?ge+zij7)%9)e#8IxHEPrmdl@J+;80>E#838O^s zr3UL4tA*pMt6$F!bMyD>bF_azpTAMzK$$vC(taXR39dSBK?d#`Z^U6$8aK=PQsvPvh>@Q?2*tI*?l_%5c z<({UK^g?oz+B8F4EppCmgX|40)NRh;yNI)6qK5b!LJfPYiXflAU{@V~B3`mqG6H6W zK)SV!L29k~FV3fVTZ?x~F=z9G3e@|bYfZPpmZ9TS!qJs%8TuFriCUK1GFXhjvE9(U z0}yKo@re$h;||jyG)vPVsLO4lWRl8E#cpAWr)xF>N>G7-4qI)2t_ht9N(}I4f;yXU z-5|c1-6-*Qy1eB2>>3hwNOy_iN|4MDoc2TLKyT*Eu&3o+!GF}QFNQW{-7_Gp*O;)1 z*TJOGf@_K>n9qpbw&{cy`iww|)`?84AqWrL*+e!~jsnAEb0**p?akdG6VR<(4sbhF z)6fla*O&?35@iKZ_J+5Z$Q4Le32D@uxx_#vm4x-G(EB-HI;RdvCMoCY)kvmjuUI-e zrXmni>YgT&CyIM>87C8saLOYTTFeCsOsVEg>fTgzZ^~b4yi=YMT;7HTH5FG9`#fJj zelAc&*4yCgm{rxZB(dVCFw{2H4FjQGGMMGGL-E!Y<5VbZmjiHkUkGY)DdtA_E-OoF zE(`v*^CXybabJ@`s+&Bya-PDwtHV=x|BUfe8Ve?P;$}FU2yf@f`_ZTn)X_yOa-?CpL$=LV`DHeX{_f$YZe2K@oW< zrXqsGt|U(%60kOCqj7_xR3=4Xg9fodTR2SyBi*1~rj&81Jko7v-`cuU8^@kpw2o$S z(K=!TmqzWtx&H0S%fWBg?OD4zG!g4)a?s_3rzF*aRF)J%ee4Gg9}oxwHNz&rwdH;`EdcE*qg62NSg}ds;%_U zFEK>Mts>-vWk+g5ZQ0RT+VoGtX$kj-N%BBWYE9DIY|!z~wGvS* zajQRS&AJ)|+UQP{Cue9Ywy_4~sDKh3=g?pCsX2+IY$){Bhw>VhF@!Ev8r`e~Psyp0 zJAIDJt;>W)L99WwFe{0)7G}GRFgsyk*4ChMJ!YS7_e0)_RoDeRhx$^RZHP^mWTEwq z*(S-Z>l@j1eaNoVKv`tlkVzRbF>b7u5LQjrDa|ZWeD-TdOT;OW1xJ3Y85W#h1QG!O zrU)H;q*dfn3M=gsVWCSqW5i#>bUapT?MUuLY$_XW)jMSBX(v<9Gv1AsLIMiN0x}_t zQP`c-E?M;U$N@yUqY8Ezb-Y`3tX@(F6Y6+y-_j`$9U!Q$=2P-nR4pkD;m_KU0=6uu zejsr&pPEe*sy*cY@(0vA>Uz_+j9n6zzK!y(gC44msf#YO5jOgx=Rc^PUo_NnX*1FD z!@8X2!umYZNtkx1feC2EW;4Kxd9)p_ddcJ0{Ka0R#;?8?FKT8P|7jZyrX|@{scW&< z>*YzEzed4%iZwcJfb>iVzBNeMZxJ}qnHUODd=Kx-dxtPKtCvIb_PO^lO+0;6TOuLL z`iSCGgK*_OhMx);Wn_v90&u6j00cNl(N;htb;If*dh8Gg0o$`fU`sedmrzDL$#jW; zJ)R2U#pI{0zPcx0 zr;a?AvqMPA!kSgezB>qQT%owP`Y=F9iCD3)+zO_(MSOoko8wA3Aj@|Bv|I`na#+f2 z*hHW4oXDn{T1Zp{Iv==~tmi>jYP<|wG&EvPe$x;P#PdL31M$SqphDUzr~fapYpE1G zw4vq29D}o}*xGtN?|qX};zr&9iXI6ggfRA7_{l|v)65;b3Zf%!pv_5=EKFcB8Mif8 zC5b66#IMQl<|HLDCW`YRNBJ}t7vskY9=F6J$lzg9NBZ*^*RZ$COcvIHE)~Q9_CkIo zmq1pt8)L2?#ias=BMA|)4AQaH^!-S%nk8BbsS;-yTwmZT}z%^Z5{ql!5n8>F%fHZBOZ3hDrTR0i`+5xGPa)Qns` z(7b&U&a^yH68)=ZE5Rjvf&XF9}9 zG`J_&c7AtWWu0DL!1eZ*muM4tjIoaeMidv05e|c8xaySoUEacuE$f(mQ#!y9 zd(iFz;Ks0Wkf8$=Z$h`l_yu!eE*LHkq{gO(W%f{?y)vw}dynwvv`rpSU$QyJEU8uu zxsqRO#7)4L?^sxJY-#phxJ=WWt7b!*+U09Vawq6cayNXPjxATt2z#%=G>Cy^7YXp*PQqyBNiZ61A;HvCVsoT3>PPC_O!U?UE%n}}N)4fY zua1uMMrgBII9U%Z0l)*%$Z4s8r)`v~Oz;$D#1o07`vPD_*e>1ON1QZ4AV1H%7or4( zDFGXD0|RMOwM}WChpKBLvs!Bub0Id#dAe!SBY&Hn@ePVONk+g9^x2?WfcP80b%xf% zhP2`Cj0c>tt2T*ku)pyJwgUujN?aO&QLX=A89N#(OEPg{2i)MJK($exCXm_`7y7))b~w0Ut?3H5f?QTlpd)Pq zblXIodaIR#&+05Wvm#nqe=HP%A*~5wFuSAHn|P}ArZH(Gv%=aj?F8~>lj%K+Y<9?Z zwa}Z`z8ax8j_J~y*7L|xMt|b1^rlPBt2ZUBiI77Q^R>$4z&g;H3TZd~X|2gW?Ls;$ z?4Op_L|X%`$py$+No!KQ(wb(yhmMdvs{=N@IpBo@>sr9&-5OOYDG?B@jjHJxPf2TX z>ua@+?ZCQrXy0gU+5(uOqSyk+OWwyGI$;A5bgU#-_Mr)dDw5GLT z@t;#gw)oG5)BxX11K&ntc*Mm@6E3u3iSqGPI^Y$i3qY z1ehT1Z?_{flEWyRb>~K=ac7n5f%u0|M>c>08~|j5lk7mlfE!Yq+-hu*M=R(^G-<&H zR1s20lR|Cc#D2MDBN&3driZEWuoNlFzESHyk!osXj^$O?Ly+s-R#1u!*3V#1Kw6JT{GB*PT)$V6iX+Vt?uVQNDXj_RdwHWrf^mWvS2ZDRurge zlqo(jcmj?(R5C54in$eQ;!>F)H{H0OkPdH-+MkNice)Dz8emTd}l$3=BW@#<=cMggt4Q*5oEh`p=bikhYB9H}q#Ha3k z^jmmIblO>oO%EtVTVt(pFKOMpG&PW)YR_0y7i)mGcv*tw_GMj)_JQi?YW0+&tMU1T z;j_4C-A#AHUbY?XU3Uo@aY zj(ZKz;X=nc#A)^pr8N3YtVhQWi{&Xz@(5)>$fsJ2mgx*ll0-7D96`_%SF5>_#F`|U zcavdFl8KgEc#34k6T#V}Q({GJ=|`?ac&Q?$JVJ z19)WeQB`KJzwS7G+IX4lkdJ-)!sGge}pnEV%W)pJMnFs4Gkrs-v zct7;5oZlb1qryT$ks)bib{BXd#SfP);nm266ruZj)GTrFEOcawF}wa$C|&sa<**$(=xnM4BndJy0N$d$DGdEXenn^ccr*^yzW= zOm7265QMkIY8G?gvDR2E(O;o<_m)@4vEc?1l(#)3SWm7YL7Ux0Vm0;(;mJI|tj1m; zKbn%0CiGmLP9wP@hSsRDR|tR_Z~b0ftJTF;rkTdp888dJaIU%&^snZ%_E6` zggnVXANdmaVvLaWj3UD=E&zv|P=pUfVsqN9zLQT!gWoYMO(x zs`18Elh_$Doo~R1DXU1>85);3RX5xnJJmA1nvN*U0U6I@=?bFKltv)i_O%{hy z23k8E@;;8txK_j%9$Z&6%PO5O1ar#ziWLi z)i5%WBO~U+HH=7t&4+5>NWqdC_+WD*O>S=7M)9MQBkN`j#Ws!2qWo<#U_qHgQJz>= zC%&Jq6*^V`YBe>>N12Yx7%p-y)ZC2U+-n!_hM9!9V($eU(gvb{C_P%%;p|V)_)q!S zJ8KzclHbnDoC%a#TZ(yXLo4%CYG3xxPcI5=91mEn_0Qjz8dHMBhkIPF_Uu}R$}9L> zfl4@3ZQU(Vm#FRcRn^pRRiJPpcD7t=FY}OT(T%-1Iby;919LbQrX?dW1?0d$z`#xv z^}xV9#6s(_9TCyh)%%LWwOA-vzi2&{CBuo9G$1zdYK*1E|H$wJDmpDRe#Jo5fJcaY zw~Yc2+I#$c9R1VBs5d*6qLxr1_F^SSBC`p0YB~XcrqMC#R-Q2oLX=uvVaSDxt=9F* z^#CM)_0!Q^gK5#?+@XLwu9eywT&-Orw9VDhGLI{bJ;K$FxTN1#=qT@M$v~Ph_}i^C z!+sO{0ZXK4Z%5UKchw%%%h}xqdiqv}&Tv<5-QBv0Hw+Hah4{|+57oX5oJCJQwssR= zJ@B!`Y-moE9Kwf?hDoju2ChOJ6#9S$s!7`#7%nxul7!K1B7vo?Ct++D4mGwe35DT@ zTX;f6!lbF~(;G-Qqq`?epS6y%R_xR|3i8-m9Z5^R>LM8fY%_sjXn}DerCtU69mcbS zgD(o$;2it=#wAE12!@1W+~`jXW7tag4~DTf6Bx!iS}l*4IP}Z-jTmfcH3w>&b+f2u zb@SWq)?;o9e7r(!qAsH?`55V}(uG1X53CB9uVi8yG9U;`_}Y@&apuh)Uq(F;=Sa|Dx+GSC2#zMK zCvdp1-limVJCWPcEcJ#8*F6h&eqnAm$pr!K( zbrR`LsrpWNrS^X|SCf*=u0$MX_)OE4$zy+nCxe8kq~s=g-Y$2r$at|Eh)%`?9v^zZF-QhXD3bmSe#4KY~3w{2atHop<@*Oh4G$eDD zLlh(B&XPSYAEH1?th3ug+0f%UyET-}BCWHFp=@MF2V2n^6e8{rO5RR_4e%fd29n!I zz}QN#M9QkYK*sLjulULjtMUMS^*7I|=M|o`loq zTS(v;B?+u}6AA2lJqedvO_2~-W1J+GQrJRwly`7VR(bm|2&?cBlP6l1<7vgpT%)x{ z6s=ZGr4>KR!Li24KF6NGpD2K)VqZmYRzN^}D&$AU#Y%LL*kI1lMs*k`6`Bh=Q@?jm zF65uH#K976J6)7(bQtt`Qb)T|c?D#v!y7sj7v=!M8!7@DTj^`6(~UIhAYacTsZNni zb?WO`h0PPgjZa-I5|vMrGhm{^i4^&@`-%))_pUnQ97fgT&=wUjsyas_I9KKY#BcOcut>tzW$YtPHr|j|6)733`xru3d^)#*Tz^uJmt9vpuk@So_*Hr_mUX4CV_R1#m7(m=M(c3zCepJs zkOd@q8G809j17GjMqlO!-Y+sZT``d)m%hwnzI9P@p^Cwb0&i#giocwYq_4$P=(|`1 zebIm2GSd7;0xIBp&2MZQ#lTe6mq1hu#EU-0G_|;=>^EBgeaUd$4~z`6gtCulRE@t8 zeCf-k%wJ4~{eO|;U()OTH_FjqBEP5`Yz`(@R!>`SgsGQIhop%qp6r?f8!iKCaN;tZ z6TFP4`kY{yq>gpuh19X0r?`7$gr~5DjPm5U>wR-sVvz2AQ#aN0!n6Ot2#Y;c%N~Pn3ki5t6V3j2`8&Ztr;Q=j~>=C(Bm_M$ESJp zl5SOtJi<~`;K{+`6FjCG9^;V(qyi5O>OD!Wx7AwJ`v#8>@(7!vtf@HRbH(2tQOZ8W z38je7$Cc8lV@hF53rbo4pCMwc`f^Sw%<^TWaLcnw>B1SM)OVUR5VZS~iW7PkqnzUX zo*s#Chq&RaW7V$HvXe*t&olj&zDZ3(A7;CkyK-3()nWv6(9Mpzx7 zQS|#rm48jDsaT<=|M%rg_t&VF;;;ZW26%ni25`q_0pRXpXbW)5es54?<~OKy5>~c# zgPIG=8M-bi;ZTLQ27QiB~ALm0=?DY&%%EWixGDrgFDRDD)KX-BFB$G zMZGpE3TO!xJu#Sxm!aZ$J~b*X{ZzHn+L3Bhs7QmHG`ZYO3Ki9&Q1Q<+lu@Iii!4RO zx(ef<-U|oGWKe@D5)S%xgM$Ev?R!+)4;Ejb8PVGAXl|euJF+RE8)^eN3EkM57R_VB zS+mxl8#=^!%Ye4$Edv0~TL!c}Um4y9k`bc$EOzfXD5kvM2=Lqp(26%+yd3UX6gwuz zT+)T`vmm%KqN~4RPBmo5CqE$pUO}uE+J~zjdndDe6+a-#DIWAfyIS?eRbN4#twhA8 zUucV;=x$uq#>L7>IS|?tyLl*s#YEWWI%5jcT1))yIDx~(VHOlX9H#f6Qj07NM^Hwa z#Rghv2w#{H!*QzjN)fu8<_04^J)#kBA+H|s>5-ukpBq^=;)Nsc9TV+`JL{((Ae(Bt$o1VV04TL8 z_<5QIBIY{>Uf$$9;+zvhIVYWSd?<%`q@IPL943;S!Du~`5`&xghu~&f=J;?XgE?6bJ&0sICzoXN`umu2L@w zMILi03GDn}J>%WQ$2@~m6xCO(XYNC0bw8;ayrCB;+1(l;L+?1jy>VLK*VLLfT!So; z!5eDJNz1w!oQT@V-yTJeLjn_$&+rsvLFgW&Vt@o%7NHhi%u^_mA{t4%6iq<{gCJU| zL@R~^_C#NB@ea&Yt&D6;2<>3op66Gc9u>BMx`7ezh+J`5-_ z^9r98Ma~0r9z;RX)Pgocf^tTgAqks5xr=p49Klk<#o;B5WcX)-S2@j7ivVQQm=#ld%)niII79TL)p z;Nn|zczzHe<}r(?-+z4l- z7k!)U=4@!1>pqk(wFBw6{;hqPHF!A0av`~m^^wZ6mDgXVyrbQngr{oV+W+Q##amDS z=d?lFR|;mNvCdVC#=|+xRrL(d$#Zf}yNJm+=V)1T+VO8PkS^!68Q)|ef6i484P{`5 zo2woj%D@meS3TZ%3(To+2OU2^kHy{Ey7!ZI@rl{xT}Q$lIQ;A=-$FE+z05gT(@Hru z3%6Yt2P<2E1Q?p+FhvZNU$_Z$Tn>-m1R^;t09Ms~E7#yEyn-M(rbKRYLy&Z#qupzwME+v^W9)rQC^Ro1@)w$0O2y($ATU&9*?uxZK?a$hXMOGemCUH`Mr zX!cJpwhQ$fguM9#qRS_y;?X4x)4+15ljTNlO5a1Duq*8%VQXePi49yA>p(3Z1o3ti zd{Ert=_Frg#dQyzGDLY@OeTNuQbH_xAL=)NgHSZDjjT)^}|97fV;v z#6?Hh3j$92P`vE7RL@tSd_T}7%~zoOV7^)o&g}W(9HEO|tX&1~*Si_J!(J>ugQgAC z&e!Mx%4FRGFow=A?ZInc%mw$L90KRygt(6eM_l0{(CYnb!WLL3&~}(TO9aXS&**!a z1h6M&g_3bm(ncXr4==q=bLK!x&gEID-VuWqhN={d`7x`@!D9PtGKdI2;=Ew8{bVOS z>AYaGvD#`?I~Z-uo=NQ)G%=rsx*SZ7a|V}dZMmk)wWz#WFPB-#YxHt)7#f~09z%)0 zTn~?W!yio%c?-fQ#hyO)*QJ%{KK8lET*_I0s>!97{f*?(&wj&}WD@A>3O{<*)& zVhU2zPUKj}EOsE)B#tdD4|j)Tg_ah`B1^yE$>qh(FKLlp@UBvf(y|~N7Ah!}UUEf$ zEm|r&4(h|g68WKZuI(O}ks|!Hs{5C`FOJbei!BJ3y`H}35@v36uTGN+I*2d5?WC}< z-eqEI+~yRaZEbk40fBw{GP}0e()}dY)af4C^_s2uch|)E?hhqa zSGIR#rwcZI{+V`M+SNP3f_C)@j4K&#fE-j;+|Cz^-Pyk;`%{Gsp%{J4}Y1#ed` z$D=FcCjtX+*hj!kREH2*m}6;EU>ExU-ae2gApU?Qmn$V@F4kaol6IW&fQWua|r zW3c+T30WJyb6xR5iy}xuY~`u5x_SOIk8*ZL?Pxy!&gdvKOQtp9BM+zd%VadM@ui z%13yxa9~Dnf6p-Fh`NN98j0?W?rMJ;Ih(;or&(4;EX1XD^#=$o1H5A(LS1)~G!2AK z?N;z3gR2kf)N(kLZsmm=tbVs19YFa1*?S)#yRN&=^S=Au>woXH`n3`2R(DIf_eqvo zi4@Bdt^V0bbd~tuIKf^BkSffKQ`q2=yp$7MuFP%*H;YL$TV__wnu#*wDVkl82(Sk+ zxIo!>mJab$#9{``tO3p7foAc50I{nD@2+OnJKoRtd(OS@zLsP=B!NI}snqwL^Ughg ze&=_7|IY9HjsihwR6<&?B#P}Gm|bGbr+2f?`j49MjR z)heE>Wgrf;O7{bokUY?m0BrmUSfl5G1c?j`CuP z&v!PyUqi}^aV6M6b^^LY5c zMzg}m#n~02!a%nG6(IBs+xEMY19WmhUO}3(A3-f?vzdSJXzx>_-qeR?<_~2HP#-oO zc_er%@fbtj zTg7o`>5yLyLy)IMSD=sqWg%dL-!)U@BL_zorNu224^yUHg)n8up?tfOkKv|u(7qz& z^b2hAexN~7^5A|(j>)#@uKYqRP_$&krdY^)B3wKf22IB*&Bh%7GUxFsVB?bAVIQ1J zij7jWlH$Mrla+v14h@T6p$MNQUZ51smsDh#Q(f?H$@DRQ}z$+j0 zK8t^S_P~+s_-B0<1Dep#DFIy|2r$Cgmy|bM3B)XATZg#GR?lV0P4Y(A`r>MBc8JWE zpqu@q_w6a14z46-*U0!$%;}j_^WIQgpzdI=4I+o=ogyNOqH6Cgg{4p-V>sVHSptFv z5ezDT$mIK3Fe_;;- zqo!I2E??o_)9gayS7{*f)jz^}8-j>9&xBzpsH!_extBgI$Kvbvs=Dih*J0wBb{9^EMf-H(;T_mVLU66^&VFfIMK2vk^v5Wwm;!6Q%!!$vrX zGndfNa^nmEn2DO{$0%EumD^-Fk~$Nkp4`X zK3>sSKGNpB(~?(c6VEge+}~YGa9_~EVKtfzz?S+NOdz?CBHmX5$<;{g9ig+7?QKa) z6ZANME5+)frGe|n&a@Rg7Qj!A??mtkW^Gxt5>|-l6gVVj4bm7u$~0>Q=YT<4f(%r# z{9Tpva*fU@+0af;KiO{#*dX|Nqn$|C2_OH5K9Vs-7@lo zyN=chYmh1 zu3@RT^!p`4`7Oo#DH+Pr*MOk}Na-xqUlv1YBU557!`Gr@D8Gj^F18{0{U#KVI!n3C zs;*cHnsdb;%u?9-s4~n_*c_=c%u?7tsWQw`PF5M_#5JCB$v$q^=PB1DMPksfj{r|g zY7~ntLPDG)MXpACrG2hMvS>mh7Q7l+Fl+rvl$ICM!}4>77Tzj=jSMImbEiEYmdju; z-iJWytmRxb>4G7Yty_r^X@en@d7{%|2dm<3q9`x24pl^~jZFu=^L&L>Dys651du>h z#6U=#Ye{uiHn_!KP&#PjfdH`NBWa;9a(K%tz9HhGuYWOcQ}lKvcP5h4SHe3_@5MO( zOX#$}zyed5U*KJ%D8(7odxktz*tH^*Z4dfJie%u#LBBTjs+45)9%#WKqV7u%Dpfga zM>~MJA2j8fQtcKEu7Ti$j;sTWqBNrUrdLrC_N3DJFsYqvYh|XCP;6;=SCu8Ji?g`# zMNou#5$P*r0q9n6R}1FM?`CI(-@lT5#(`;(Wt0s}io&(hl<1T5=3JHe5CyQQedI55 zPm#U)W^n=2Abz6tJ;mZ2dE;4^fr?XLVGw1)Jkacu$`i!9K~m_c!S?0f0tiZ{%p>NWN9i z<0FVFJf9e0>x=J;FHy6^!B4U+s_Is#V#!;iFOJA`iB2+-&*=HmNWLL!VsaYcP}4gZ z3iPO%y%VK}g~*`ALtfAm2ig?@;q)kbg|%)s&(qaq{j$U_gMCA_$}d+&FuBHPquG2F zO=hn0FemU_qy+4l!i)x6p44!H8ZZtwCBJWaHtRks^QlKffQJj}7KIiOCDs1QsN?+2 zTZN3r;K}CD%ToqJaefp+p`BvU6L|rPp4gw@_&;4?u2)@maYFv1at^jN3Nvrp^kg>d zr3q-45g+x$!Y~`R@`(#MEo9+HvDD76L@*8e()D>+p6Tg@QOp}W&yO0)%|#}N8=KuM zyTD@*LA_&?w2v}duIh%4GhEV>fX-+qut46*@!1I^5ih>g;;@> zEq!v9E3#`_zDm||u;Y_6U|6={lQZCHw%?P(f~;!Bsf?TfXY`ziYicZ7mXCy;{)b2f za5QDMs%`W$0ss~^`fOk7YQ zwGbBl89KGdvfz|J9nTouSAb_mAwqk2=XMRYjSpel0MFbBt&?GVdnBOSLkt`m2ajR{ z9^YmO(3L9$EhL}h{BMPYvQv5HYS`9TgKa6G4)}J5N&eRrzFlEfSlP|XJS&X53~?B^ zmeetBw+zZ{Fs9$el+?}Gx@!u|{Jp|u0>}=26Ho27(_Vj40dxXj>{H?k6*iQgb1LF*`EA!!5 z(I(_zz<`JE*05%B)-Yyr>TLO0fAzD}Z6(rUGXoa4(Ky9`Aq~6^^I!AXVg4%GHrUL(@WS!T z2yuF1H+fM~?RAEGgn@!*WjKantq|a*sDn1nd*`CdVG_ zCf$_yxXyYua`l7mV$o{UyLiN$Q?U?N%So+XPlXa)1ZM0KDukeDje8DGH27G4I!@Kf zu16;yl$a}1LnS7LO2pJqiOx`om>Me49V!u1LnS7MO2pJqiFHFIVrrccbsWLgaWUK{M;zwBqO!=G-81#X?Q(^u_91$w)9!|n$wn$(mncMf ztz0WusQ8d*s2jaRv%@ zXRFlY!MFR4YifprN=+V|yYHx`&O@ap4~4oPBIjsGQmHjuRO)_Bv<-Y5Z*6g_8Y4$h z#&OAtGp7;f=Fa%dnmgm;YVM3;X6_8HGk3-p*4!C&@{PIk5I3&z(ss#M#bw2L zVHqVOFgG^kuSq~+*Pg;bp19|=`EbQx<$*9@y*MQem@-pcvFnNtXInLql1{@MiX$WV zT+NX=f?RQ2p&F7xcaQ-`rn5B`4fmqNfJsXcnSVB$3u=AvLtr#L^p!^M!vY7)@12w? zF~=5)=#2$JQ9H-yqHqdWtt~&urtrIi!u;U7aS0E+U%XV~!v`7Jj&}|U``|F{#ZT&> zFbl>9i1C@`05Ku!G!JP)7)N7fObMgG$(WLY0XD`ITNG7iXbC|bjAIvIHtRB+GmZ4H zl%}N?yZx3-g3^S|Qr{c1gOZLnd6k2#s}`#q&HZwfDn$%LmFf#bKFT1fR5?M!KvXGn zJkKqud8o}A5fGG9xnv|{II9-MGG_ETN|U?-kI?Hncy(e`P90^x+C+{B30v#|9422xZa3g!xeQ1c(szFgF_VVW zj&0eNK}H~Q+Xfk6?6qi?7Zzuq2AZOEw()X=TI52bn#lnrQSPf&t@MPb=*&la6(!RF zRr#8q(GzRgGdzpusmK;rs29t~)h<_5ir5X#8Bnoi@se`}l&o32OwLu*>^apg8ZN_H zfC!E=Cz{9l6W)m))f#4zk77*WmB>`_#CpD+w{T)|9dGCDn1sS0$1Imjc#S8X(riL( zVYIL@4yKL=D%+dX*H`exhmZDK($6O70=vQ>>H*$?)E*x2;ay7IRx}=!&0;b9l!c!b zc#t_u15l_5I@J3QRJ54h-s?0K4=7hQ( z=WRkngB-?GZs0TK@LQ@q$kFOi+TbS zcGo6^NUM566>#&JkSuvYPmC1ox*5FZ8`*A5-OL@ZF?;8ZEKdu*mU8ZkUD768)_|IS zD4W=wTxk%RP22K(wwRtu^C>--Q??#>KAq-oQ>lNH5+9A{r{#FT^CW7met#+rkUEhH zM)F94rEU{USyTKyo>sonuvk7kAAP0y_M(^qPniH6J7qx?y3%r%ld%~y1CW@t64w9J$Uu_VB7|wx$lxR?#a1Kr; zRgQ?ogtj`X9C$7{7X~>RqFhU^&|#q_YDh71yAhUD?;kX>y!R&~x*B4l_-8=+xQV83Ng8^!lNkqoxEM=7VzhCfTc8$Uw1OjaZ;RX_JlZM)Uto{6%D@-cqm2V) zk3hs>i)?Z0c_0Y(co1G?9glY$N+x;CE1b&~gvVrz$Kt+(>*{6InBpOmh7RFCnC>K6 z57rlXT5_bSNjzDZS8TabDDycaj!rQV3a~lb#Hr;co?Nk`JkypkVa2ngqanrgO+Y{L z-z+UHEqfCj!mI0u=kR;+xg6F7%TZs(;mj#8j7~{~`wP3g$=o7`{kh`bV5@!9IY?RB zp_$W`*u$I^vfs{J@${#^2sA$AB9b2&~3)v232s4IPEzT*jT+T%qCO z%0K>MQXKzBUrc)c8^y3hvj};}!DIY(w(a|)S7 z8jq+Tho?FoqmyV=8h)gMXk}V`V6TpvL@E#P+mep;Kztg->s-oLtW+*!sJz2##WIg<_(5BtUNKD1rRPd6t(4-9PW{Lmi;jR$$E0 zT!$PqsDZU9--s>~)BOr=X6W&K2z46ba`~#l(L8A$X0ez45t6gDyvg#VrM0UH+4InG zni2}o_&y9yGDdZ%%DjMc>JvJBTpg5xZjoZHiWQ!vPz>=RC6;@RXQ|Qyt;OUuHuQel zkXuat1Asm4_npnt00__P39-)nd-Q}Vf481c;|B#ym@Z{^iYY&!G|U<$yYj_|dNH^U zO{>;JxxbHyVR)+#w7HMAHG7NnWgmUwof$nv`-rr(z>~gl@OeU83Mcf$ISoy8Lf&a& z?&_I%-|3V&^sFT_zz{$N?X#Qy_gh)S9LuCz;wrV4i@=+935oQ>ffpAVzkYL$qj81SC-k)sA0;C2p zSOGY_m##CCHLQ(CGDBbm=U^+Ua?rylQ!|=MM^;cIYPaDj>?jUQNeN4p<|vl@01kWa zvPDiL&i$43TYmi7tw%yS5O>S1=XmpzE>=6?Ulp_YE|}^(rl?IByWzYE-NF_5elP|P3qn&#|WiRNYIXf2GJYsK%*@@-Fe;nl+IXltCX+qmV$y%-CIV$_7P9&%lh2njp?QLTwBkF z`rTrk?uVH|(Lo8D()s6Vlgu|KP)?C2s{JtEqX1FyEeRaQ3Hxro3E|^9pIzRGa3>|0 ze;ujUpE3DdauUCXfXHJExe#m<2}WvS7c#yLc0ZnhHGlUsRqI-w=JA( z0K5&wuerqLa*FhIW8s$M1FFZ-n^lOBO^F(*+YHcmB~M9{tuoLCr=-zU8O+9%jB8~^ zHghO>Kb2y9ypsopg7@)&Zye@%B`und!?hP7{zI5X`S<9G4YcEM#fH!g zsaqpPX{~Bir$Fx@#mFZuoKArywQQ!4ux%XF7257IK(D}t?eiMF#&x)?zrL9Co^{tv zj*oNU(|Ej6fV%+QnhDKxul&MRzP;-7DsZTqNAG1`I~!Yok*n{5$m{ zUr2hN(~-y+jzbbg6^~<{@!A#>=O&48(8U+wCi1`KToE@)r8_l}M<` zvAjGbTe0LnMh!nC;76xe7k2(mTW=%K#DKXL%j9YE>ACVWU-NBROE6Y;2SzD=G=EG?=-*Rq}sxqTe_Eu z!g&<@J>4u9S(eXzx zYmTs_$bK59uns{&hAD~chI@-lX7CX)4#b~ITEJT9j7nPY^^%mREO;Z@0BXPrB1IpG z-Vq0=OaxWeQug-n$T-oU0421Rut-sFyn5v04Q$Ey}9_d>esUZo`iFLCKMLw3Rfed+`4Y&9?6=4aZ z1{p0=_f0H#)-F6F-gDrtIrarOyB_*`GIawl!ed8-h?;WH0Urlhc{tr+3+0Hs4k;j3 zOw&)N3K+u6O1NEZMD&TDsU@O}zkh*!o9^yQ97EB&R~8zz@KzAKTvPa)ShBbFb*sHjNfhgNsA}HBwJyELAC?daQs+f zY&n_H2`4jKPQtVY5a_giK#MX>psB{7TQ(e*BcS$<5Nlhavv#1A{YAlCfb>E`(jRjc zAmmXk^NXYa%v`u&+RQZ~sUiSIr}-U(T&T@k1UupS32LtRH+IqwxTlRaeICll9CeDH8v$@2tYzfj)*LHUJ*E9Tj z1^84UBo@JIzIsIXl*o&u%L76(B8FYod*lb$v>>Jg#$5yAxLOa$28Qr{(LK2m`h&X~ z%SL!dWC|6*WQs4i4XJ!Z zBr0DKiON^wU#K0CsB8$4sC-2v^5wV@xxm6(g_}qw_-`=1{0hQJLdAy=uK{L6W_O`# z@xl*lDG5bL9H0GZcL|Tddx_KlX>4;H20)p*7TOp&j5borBMJxro<7}{RpuEJLP=vncr7s@ z(xK$21Y_fdh7ewi0icL`E=&}!a{Y=zPz|!$tYC)AyTmi`3w9)t)x?%T29CKkW!CdK zOZk6D;z4e!SqMchlHLiOIl7p}UmXq}`!2aQLWNiG9l_qYV0`%s#+R>Pd@$K;z!b!WcooYR80AyZyt9DJv0&pO zCj(26a>wY-VAxrZ47qR(!w!f>n5;d0-4C}Q)6T-cw6l;cMAMEg7iF6Ib29BXV8e_) zlWB)z(7WXQC({m(R=(A0C8iyznoI#Z>UGnO?>XH|Gl-PYwBvp`S{J4rs9=6hPU)hxpe2r~xFAbF5Pv`s213vpSs?tzb(eQi0{*-Krl>zQ z?GXPRM(&v;+?Q|HZ3EvE(Ft#stcwazuC02Aw9eESpjsUu9F85=NTbOa+_LRIn*U1gBZyb1<4BVh!g&>(Y*O--&gCmiw0u?ngbS2~k(RFr0p)A7 zEg z)W80W7Oh_0q9ty*)}kfP>9rOu(eav0;#xIMOtYK>`T9!PpX;t119G1hv z1a}_Tu*84KsadrYsDhj`wK5mj=agmX>>y7DkL%jLkoN+&w(ZNF4`67peGM#OvV9Fa zZ)N+k-l~!!fqxF$mn5*ins%?9n&z(~yVs4DENtcCVxkJs{^IRk2%M%7mGF0-qZk&g zWeL+lkbt8jQ%K2qPsSB2VqFBCuIwtoA~sT5#46oG@k(~}+rcK*l|0~!nIgmM+T@}u z>8gyw$0$&l#JV!M=x(s`cdnt*4#^%`m3^%XufZhNr3R=EHVc}Ym4v951-5H!5*wGA zk;)|2xoz^DvcE(ZNN8tQ{P1BO>~TGW#~6}^ZCcKMMAdu<_QvD>zI-IR-uO}tH!4%t zEAx0Hr=~O`P*a0nPL9v1+N^_`N)2Kqqwbshm3ofj)3qt1EA=Lt#HeLSDo$51J^71$ z)%GFa%V$_r_Y>Wde0b1Vo5s2Yb`UbCLS1;mrZHa52GdyA_6XM&vC8!jA+(9=+?7|k zVhU5enkrwpK)_eDlY9K{OXJ2Y($$Yxbi2isA66FnSGPcVc#`g@oK$war1Xx#!>YXA znI1k@m!-7)4TK{)cRCD_a=mu~dqwjOHY#@)Y9@P?*$8}(v6a>=NYe6Ky%TqK*ASm#qgb=LHvAa+>ZzI>(;r83#x4|oIURlh7;-DZl-0G#vMX*=VqS4V zfR<8<2b)EiqX|~9NB85Rrw4u=i8LK|=)YC<>WY6nGyLOeX|q@bN^2tSx`qop zLFd=1ii+oL-|sQDSU2PMDGXst&v-+4YI#dlTcUO!1!pS1F#~Re4@*nf3%p01V#au1 zbssPLuMqW7f#)nTg)Cse#)U2nMjv5zzLpbUcCMBaV8+DOVW#L-z$_`z@VNm-zQ`-G zt?)Epl1-&A4-#n1CfMYoF%R<5nFk59=0O6zxr^Gx2gtec4KX*qVJeGnUhG)k zDTt6;HiD2_zKT#w^$~;Njp^U3sYYK3G=@A@w~pJGLO#VL%XDa}6-xvs17hITXW;&DnjpV3NsL1M`XpzBRZHKwX2b z>~DsF>~9gSvc#6J2CFAa>Vu#u^P8WBDQN?gX9-Q=X{b`Y76ZPf?ahJqdzHSYD^>*o zLegZnPbR^k^Xh>q$A@3nAQgj~p)QTgPlhF~uTeS8ko;ske$tSn01d`Z2ID7#@sq*$ zd&c4?L(%h^BVmx|WkpoHIfUy!w+S)r?y#`-SISma+Qz1)(y6JbW~)6iIyP=EE-VE) zeJlaXvR&`Hcz(s^#JrQ)T}%c`ooq#GwpSGBW69F%4GU(B%k$;8c-v&IG1-C{j)4bj z-C7%7Fz4BZ7hXZJ()0(GmF7GUt$YR7%2&{B6U5kLfRJY4Wo!8o^ebzF<*;P+)FI#} zT3s%|wt~oCc-`6pue7x#b1l8x=N&1|HQE~BdGi!1tIAH7I=psxDDiZok5$Gi4wc4| zM1N#m+HAm{8oH`b^_L#XxS>3R;u`yI8_CuNb{B^DN%ViO&EQClkyvtV1Y1cpFY0@}z@p5`3(#UMc(R4M;m&|#utb=iKLj+ z0mvALo=GLI1?FsJ>GCVw!u|GA*xCbea*pSBh~1OV6iG1dFrhON2@@caYueZmNQ=yY z?;-S3o5J?gR@g6)Q*kiGRHr!i43ImZSn!b~+*oWA&A_*V=0!7Z}oZ6?<`_>7yO z4?g2XSRH((qTnCSc)pUu&kiXP;S#o57;tp}S`Ol9BMi(sXi(Mnk%^F#e}|r^^0}r> z>U;ZGf5*1O^y5~l1VghO#TDRitI#ptO|gSmC9Nz6dHTt--|Qli$k%CNc1R9G=H5Yg zSw%Kn(W|Sl$nBrkXFGIdO^f{1KbH2$XS}aSEbl235853Pz;+ZrN7Flsi{4w4J3Qrd z1;_s6r}Z_e%#Pw`aPI79mUg*O&YWJxDK!c+qhIR zevM7IP&mMnpdWMeCD5!L!j@2sAw1nSQ7h=CX512fFzovmrHp;CKw<5roYycXl zzz%Jds?a%qn>SDqkd{0-=vy87w?nFP7CvB3dY|#m@(vk#D0em>E_8*-aSl%Tag{KC z&N*Gnx!|1TS`IvbZ{q@RJ?ETrqE<$p)MXzdlAucC^B0gRMr{Sb;Ir-gyVWnyMOWzn zr|?0(Gu>ssz+4x}Jecvw@&_o1{Uw*2TXh;-$`O^TG?2_?nyNCO?70jWyTgIy9X8eO zAk0_f4Lb@fwbVR4$XIp8#wtV29}qP*hN9n|1B*2!FX+kk#PfQx`+|F6ToJ?;Vcquk zXW#v9_G|WQZR9ueBm_f#h!uN=6*~$2oV3+!Kg2Xzb|x7NY>r%QQdoN}eSVj|Vfjlo{J ztQwL?8ptgmLSI2MJ9qax^Z6)8MDdN9XCpKSL&yizRC>ma2XSTaCFYWB^sfGwLYn7 zCfNf^HFNlhbpr2fW|M+z<}e6;o$cS`SP1@xvUI2SKc*^lsVQ&27I_yn8zmKG;ZN%D zKON&)IjTV{Xp>(=`v z;REJ4hF6{goz#Bi!?8GioR4Ud!gy^-N%ABO*Z_@VM-^J-bcqd$>QG{XZ+i=6Jh#y5 zEMelwVqV*txgfzxNQ}ZK2*>>LZxq2&g@s-vb;grU5eoIO1=sN?xW>yIB*;=J@{Q*j z8I^JA|6TI{cvP7ZT$M#8^cab2k#yn z^(RG`1yV4^vzonUAhq%%l=MAX+dhE3lKD})tZ#CKy8%uHL0DWk+NGfiwqb zWoCLa;Jo$|Zw8!VmCF9DmRPJ6Ee)AFZ3>+slJ!Qkl+vV&5@;G_^1Y8he#SXgBC=^&y`=g3=o*ph92jZheKPZao5e9b?`Tl5;+`+HO zop4TAK4VXV$NH#ZRPg@}e40|s6C!=sFNhDTMTKR7MJ1;V^wNhR;v?qz(PxnC%4IOd zH)zWrrR}d~`8mW#&_xg*@Jc+)+u=|X5-`AgOEujqk|=KvbESYVACwzbBGBBM@1i2^ zc9y>k;Yh|M-OSz8_>FOfioTo_kLO^S8oQ0=M`3PWIKT$lFLjyiRS%t=L{Svc6NT0k zYk&u|fh;=r9r^?KW-Kwu?y2A&isrIQ-P=_(j^(=KIW5vhj}~W55%alj(m`u~;xk`J zikpfjKg;nW-^ey8=ckJhZe64x0xmxya|Vg%UMzh!7KOSO%yeKv3%yItOo)is1BLSn z7gC*ro%>TsGP2W~m_R8mYT<&=3=d4?**=ow4S2nu{6#>8MgJzJ_xQ5oX0U5qg^L!o;9SEaPf(C~Ogo$o~zmoFYpWaV%k;Edj544)q9WN+V zq@Qc3^h}6>11<)@V0YlEDeW@M7WB>yM0J8Yxp)(Ufi^z)Sx*(+={+pb&MisU0Hjzw z5jK#Xv_^}h1Mqd#9>SV3;`GDXSw6BuiHVJ~7AAM_a8x54^~m#-7%1!s0u%{t)8P-lxPB=+-%R>$+V97{G@!4A?o?z7RlWWci-eZgE^9 ze2f{8X$5xbZLlpzZAlJOv&A+GFPa%Gc_{di$A9R^(hvOCPaHq7yt4H859SXx4`&bF z8wJ#*<}r{#p0}RId~NCegZD;x1%iMin?3knezs^nR@_UhIvo+DU$n}$u-;4*A3W0d zyV-*@lgU`2ac82!v17E-IQs07J>UP?V=g@#bZ^ldO70;~^AU#W;RHqSuk_H2lNy?! zfVid{TXOESM7mcw@tpC9-o%F9H|`Kp5TW;Uy|xov_Pm9Z*BOLwKK_;>0L?z z-e|sUcV4&t`OR0fN&Ls+si6iV{iV(zal4UVD!%aanIdip`D$BbmA(msgt( zAYcG8NY9N14#WdsjpfiIbYth#g1E&tHGNc{k)?q-d5EwBD$K^rJHS zN(&Q_)HqEf->m0FQ{4`tlOn>6Sr}yL2p6&x-wn5}ibLxjGe6Q6Jg{ujaoa}0qHXAW z)mbv37OMbfIEp9o5tmu%1J#)_mbbaMk)rgZF&zL4Oam|s=6jf^ck#dA{~i3_#s6>N z|5h+(2|;yiKv;%FoIq~E;s;#=+RB4>9=#S3@Y3tAzy5dbo;*mp^(bT=W_U0Rf0S9B zDgH#iYfbgr(dCU5%*-Qv@+&&+Y_a}(iC`MS!;OXpV7s7CqGHm1VV)74T91>{)6&r% zkYF$_&4$2g0r%iCf`cS3ts3gShpvuhGe`4Hu&yZHNy=6AtjwsdM@FQIb4V@is&3YT z>IO}P*NFV8J7qIS#WdaP{ibRhe9pH0G;mQ@qkSW7fw6GWW2sDU*vhF-Z-}X`G6>hy zvM4**rl7x%X8?sA!QLk%9e5nTjX|geI>3%%l;5Pos4`_zEf2JfA0@sb>bUX&BUK&i z-(YS$CVA;_HYVlrKz0~WZ%;7-{^AKyw2DN{g-l&i;nPiHI_yGB)v@9qpoVSY z`3yU_TnbyXKblYTAdv1}a$jg3&A*jr02IHmdi2{y@}3?&n%~BgtL5@<<9P+S>O{G4EikYdPz+*GAoK3ZX7UlAu!Fwm-y(K6mfxXAD}R@nV=Sgqyxcz) zrQ||LL=Dm@#)`ALyd*2KcYzXtb>*#sHk$NHQn;lbMBd_?0hij&*wZxH$SqGpoAjeq79K;tm>$8Oq;1o*MM>yaV^$gEPklt-evBYhVD;6R@OBIbH^>W$ zV+6(WZ~Riy`$Yxb&;B`G6-x2Q~9n+tS=0e|PywRf;XlYMtj})Y@~Ka72^J%yiflgPgRx`!%f+IP9_6y& zqDe$z(p}1ID4Io*-4cio(;%hL%{ZLTSbtOtn2U2h0Q6``GeEViK9&=)uy$=c8;VBJ zRJ|*WBE8*pafj*(qc5^zO#`>60&J<7x54U=W+vuE9{8CGu-7=QjQWVYYYyOG zF?2(CHcIoOcexq3`e57$X(=aB7&Hj6cJ%%EKgW1ptj5#+bB!l(BMnJ0evl;I!jOn15ZXinzeisEl(==u^ zl2#K4-*MaIH&7n#_O9MSHuj$(HdCet4cCg7Z~9pAKXYUKSn;P-L}rsBa`1Lg_f5Rn z(!0xtTIU$ zBE7E1w2>*Xf$VqVwm`XW=wJ)&FmA@dDhHEKhtkIYNlJjB>w z1KIk!)g>B-u+*s9*zRPH#8{DOywp=#BkSgVau*nhl|%p82K2Ab%Qt@U;iFJfq$RH{ zG9>VLeqTuQ9PUd@(c349h-NYuu=NV-CJM=xc{o<3<#Jgw5C7-yE=;x>O z`t7dZ$^@@M*AAwAWsh-Db7z0@GraFkUhKd-o%b{3eJcD;InH-W{mbt`kOUG)RTENl z5OR-Y>xD7x;v1MQVb>|JOX=P*g&Wt~)UiI5V)&v;u~Vcp&c7Pb=5?7GJ@}M=vayj^ zXSOO>@a90Dq(=2a99?P~4*M~Hm2SOcUJy7Wi)ZM#^s(sO!(`Ov$^qm+6hKTR;1`p} z1K+juaI~-&nOxi6jV(=ZOR{$h{iO_4X{e<7Q>DegG$o<@Sb_QVRlp_{^Ten;H%AEs zKby@79Tc~mVW1y5cz8mw^Tq+9E`{NR8Cil(ie_5&W>CC=D?$F|fGuLGDju|jI&cC@ zFxhxbj{ytJpC%@|XbRk3WTr+T&uZ_s>j#woeW;TU;pfIly4gy!p zGle#F<=3ECi^cN!NU@4DycJpTwEAWVr&aWd^ZMCBAFH5P9i;f}a+xZY_@Bw%R4r^G1-co8i(cyB7|U%jeIQQ)FIVDziTh}y0clI;P$O-!25CJvB~k-d z&rOB21_4558$kwSRkX5eAnOXp)zGu9M%J_AF*B zBUXxeT#b!<6(+|O7|Uhn87tmOM|3?t+S{WksLC+ENqL3Dtg{9SJVF zrl-X+Sqo(CDKVRm$(kZ-agcR_tPNyU4pe}Nto3A7K2%U}vgXOERtYL1dt{?zRSRV- zI}$jAx`*-r9gE#lztLPdiyCCI#q_ZF5hZBE@Sf{LWB zkka0@+!oBK>W4*rG2-1?)Tj!{kU90R>Is&K-9VDDFu23A3-LTa2kC?mkV&h6;NkA0 zIm3p(fUE@Ad*#$7{ZTXdUS?2n6wFcHD;im{m-h-a6-h#T?7gC9iWnLa5V83x!Kx`; zhtb7xUc!J+A2WdTjQ6pif);_#c!l)cEtoTWfG5iSsH%cXURD90CPW==DTT2 zE4GeP*HRZsVk4_gbckU#E{-vG13eY&l1STjnD*N=!{0WL^YB^Fe)iPeT6y>b$Y>-{ z3O=SaO1)y^h*IWNPmbr?BuX)DMH*!&#Dr)G^qPzty=*Fk6@m<{RO{O( z8M1VieksYoSyfNQmdgGdN#(XquMNtaCf%h?C;i<%Xn>C4)Dl7sKfV(V~Xer|W znE4PDuq1`iHdr-fh~x<4`c@ml%P5QIV3L9TF}Nj+meZ(a*ay6uiVlSIRd^7VDA@2~ zle%a~(F5^3$ax?y+H6(>iYl{JP32OuT05g$kaM#k)LGR2HCZqjUo$%af@fc-{UpLjue zazCgv!@j928Dv>g6>U(Gi3pyoz_lPr8+{7OM5hvJi;nG1Cb5s@+Xk(^#pbrTIc@FI z<}qqa)mv!4dcaulz?DCVbvJsm9*hkv0H^_{0H6oymfO>q`%}m6_8_T?T^MD_?!l9B zS<)~Y1nwlM1j#@_^4HGQ`}jS~)oqir*PAS)jO$F6X9gQ6mR-e zPF);S8s|xHj`KuW4+uIGWV|`85B3b1C(K_ER-#WzlEYn0<|T23xs-($hyV*P!w-WM ztnD*)uE!L_;H2F*C>u!vy|!^E=8G6&;dgP-pgZ)1PG22H#6y-y*xXSydcy_C%QTS} zYL|>>ep`ACBugc>@i_Hc$~cg@#4a+K$*x@eGx276mW#JkuZHMZqr4KE#K59 zB>0`sk!{*#5?$OG=;F>`7up%QB;9ula}HL$(lhVYd}BK4Z$+2EoHC zcZvt0VmI($$CUv}x(lCWqtFKwnC3@psNfsXes2S&4Z(m4#HOl2d&q{J=jeuG#TE%A zJJHxPn6WZ*wnkE=O$t4SNp^z_5tjbboxunsrVcJtmdtr+me^2B%jUckW8E+q%8TI; zNwBDnuWcYv9d1MJ9UOgYxgmYV34qbcXAui>i^&9NyBNm!m7$ap-H<#-JL z8_;;v=`fR`FpSD`kl6qX4&oTb*tdNY(4%w8(z0L!@wQ^=KLO*h$2!pD9Ce9udGUAS z-m|uy-9ioy>lU;I6Kw&vg%JVC1rmeNtvK^LaC~nK=kT0mrG82LAJhmb|0b3wZ;PPK zq(O7J;yoB-najFtl;?4IJz5U3@8E8_5CnyJR?Yt~3JO6~|Ng&RNs9ljQJnfUnhI7$ zE1FiEQ9Lb0Jl|Bz41|=sy^$ab7iJX}XMvz{toLcK9)d-!VPkJ#ozMg&v|4TBdCHRP z9qLKgNr*NHtj)Ga;EqHflOUfgVvR!mqXODSW<`4PfDoZQOQG00g@ftQ=SH9Lp%i^bV+I0Bi|wOjPk&~(D^E3qcY;r zQ%Yb>(KZj1DQq1`S@Atph`3sQw$j76=H{h~?dDf|a)dhi4vuH|EZb@Vl&au;h7aYI z$&-6+WxJu**l+knmX_^>54a<ilv+sliC<8BqLGOCo6vlI$VoE-}VTuK8xoB5cdeF3_2*K{CU+Rd$^4N_A6o&a9`4;=22ZQy9Wh4VP{ab zT;D7E^<*ZKXG{bRnu$+D8Ye1y#kU21CB0!R`?k{FQy1cc;pt=>$5reU!Wy>8v%Pg2 zlXlOi>ltS;?0!(hw%j}Chz`{0gV0+hIyAP|b|zW5vgv{K>4W}6_6zAwn(N)k)9qmG zSmt6y<>LlSH}F7};?ENW16MF%8bs)(23zt>HnVq#X>pGBfpG%Uv=IfE!`;jtTtlS6uE@>?+j8}CpksQ&xlusYf!upP)I*Z4vZT;@5Tm4cK~&5e zDQ{#MGBSsOY9KU(S&(~`Uk2@pzfrs>>=P+;l}^PfWjn8HSwW)$8Y|<+=KkW;!V_W( zK`pdjwkL=QGp#<=?t~dyL;kfn&(@YV=OfT77*~tS)8jQ(E-tf}NQO%)!hjDHuR=wF zE23Rb!5R@4lOS2uWr%%KDgwi2x#OwmeMBx52}_)ZmN=NBUKk6wa|xGD*Up|tR~(a% zA!xz2Ke;zrcDrjpMm=eR;tbOQ)5EMV+(CxWIot&66O0rH3S!jm>V{w_j;8CeGhpYz%9S^d00H`v%A9LFV9fQ!(L|o z)z+IFq4bGb4%@YZx4yzvm<4cVRTGS3n+S+FMLEIoJgPS6`)&KS(VHjR6yX_zUGPS% z`ZVOd3OqoEul6Ze+PG4+VC48P?R~S~`0eHR+XctZ&%O!=?>N`5>4N9UIopis%?`W1 z{HEuN$xCj@-rBOA4s_D%;|aNqoqC zLRts(&l+Dr4e*tpUgCvU4hwLwBD}9^J#f5KMOL}`P$-RR@;~W7E@HeHN;qUIM|+?D zz~Qv_i`a117U0+85@Te6)szU2N_OeuyipKCDe{<1z^>h(!gvhbBa*{^fc z?;8Y48E*4RD#}CSuLdOgu##Uh3`6(mi@r9Z2Yryp**% zCz|m?JI?Wum7y}h*FE;dWr9n5J;#?Q4Si+5{W8ZRK!;@nVP{G~qI5`?!+ko++RpBi z7sR3LK5VnHEfctxgCv>+n9rLn{MFBjCBQqp9K1kSL|TS%*-+u6)}>A|6@U8EDy_p! zJ{zu>hrDVN@|dP2HNGxvFHufQTBLp?$X6qgl^4j!6c3W>%WCbx|7vL{?{~!L`Iwf)`%9z zo2`eJVo;9jtq0-4U&}xn9V~b61Ji;WO2`KIi2|4?E(5O$;&4%i-bp%oiK&JSe3XM= ztTr*)eN$oc4)Gt*cf_G7b(yb3E#MP?KddAkvqop_=6;k|92{e)-}%I+Y_oWs=N#iax1w~7b`^|_@}(_}ye%M6{%zExzf%s7rgdIMRN zJ61~mJ z&7>-Y96$~Ruquah=p{!cEZ3l|j z*L^XV(dG!Ol`Tj*!B3H6MeVGYkE8M60U;qmqDM}Pq^}h@$*x@5uY#F|I9i;^v1O`J z3K|W33Hk)AYUqrgB3JQnOAgzWQjpVJ^?cGdhKj#dXlci9_RSupSg0ixxr1A*6b4bJ9`0I=r+z;vxL0Gk)U zrhFZuhk*$Nt(}c>9bmBxCTE8dSPHjZhM7u`JW%Yx+Tv~OMQTITciVuV#jAg~lE|8q zB#bIMT3jM6L#xvY+F4I4sAoORHuFpM^oxT;>&Q=W3V0cV<5D|gD|BD_8i-W<9;=9O zjQe;+rPfly8W<*!BX9KyoB`f5cLQ%GaFhw;g@;Ejb#M>}O~H|`HG#VZ6R0Sm<&?}0 zCU8?NyE~Xb9jq-&dji$`uK8?hHakyL-7aUeHG%3)n85jR0y+4{e2z=SVeclIS3Od) zN1Yv($7GrgV|r4<^O@SzHCRZBGbfKo)&p3|Isr1WmpF86536)oKAxWKuu1mzje`nXN&es%*$=85OKT zb3v(L4Wk5&Al6cpK>mto@VO!(u@+8qvO>7Z>ocvAjHmVwv8q9nG%-MXAx4Sz1K6?h z4LhC5W+{~Y9Kjwa*eQB%9d`AIYH0;K5em%We51v$1DXMLsuatjDkab`uOc_&z>fI5 zu_b4bd41Sb^QjKTzA!Mn79kOMy3{dDYJ?!g0*Yu=!tU}lV8`xU9d>+o5_51*%qi@! zw2BkX$Oak5oe}od5c(m}4kWz9lsG`sNd4D{(4zoFYz1vG6qx9 z_IIl=KA`^>r~YUqDQ;FI-9RW-^hFqDqm1vc57dBabUMYBij+ZKikYLuCok1V7o=*b zo`zIi`QzH}mj{W~kspIpU2eW9srpN46!TsUME@5Qws^-|0ueSqC@!}hTQv0RBi1R6 zEnp674f&7oiw1Ju2rh^1ZAp4q|HMbTCO@cTI2?r?x<>Je1R?QVoipKwN`gTj-z&J>BBh>uILySL^A2F-T~c(4}_oVgoCL z2$t!Ch>UeI34=k>YaBVnq^=NGmm?n9I^d9qxew~Bd{Au!c1LZAYwdBiAmL7kVwteytApQ@+-+d)Dk4B&Pma7jks z#&h`t;I@za1i&Sv1i-}wP{3`M!0lAPRYwKfh)x3#-%cw=KFv%3XbDz%A+S?Yn0Get z%LF$E$v_Rt`B9Wyw#j!fJ4Czvo|g2#^;LZ3JDFg!;w)Oi?44G1u(0q#gqz-P`6sL^yaWviu;PnxqiK4eiL> zN9x>XSIGa6%beGxWe@ok%|BcWbU!0e7{2V*tf5-5XWR-l@}-$3zvz+51F+57o15>LQex!u4sre5(8Lhb@jx)8_Dbpzy0k%tk4*$U;J@t16pdKCKd zIp^T$Qsq4F9Nb~5oG&=%S#pA2+msi#F3}dn#(?f?2$q25Yw`V|{mtWK%ByEtPi}XA zT2EaJ&9U@TycI91(#7PvB+`&xOz+>9{IY&v2f07N6F@K?a}C2W-%I9Y_O>?)+nRVJ zm9jwOj}r`2o<2#YgQh{=?N7^ogRe%|dr0_k8W#piQuo70u?Q4W_NHYzek7YdLPVK| zNXe$NvG`X&GsxuAiUml{FV}J){N#LLkdtlPnH=2TTvm0kVE$GnplO{%B%?zA>0;R# zn7jhMPV*}cZHrExY?6`=QTBeBwx-R6(CVfYi?#m_S$=pWJnQBH3dzDF#hqch0KqP8 z0d2W^a*nt5qX=C@h0;4hM|Kwo*udknfuQ%hDKclrawdEV&oCY3@4t=ve}9NkET(r- zRy|`;2xJ1@i+=4lID~VOGP*e6gq{HK$(UY>>5uE@+wj`csyiMtKSmv4I3T8C;L^+r zf#jsh7;gD|lc8AA@kEpW@`ZVxh$;u>LP;i~%*m#A0)OI-y4ux7zE#z~+{n9nUTA1I z3Ne|_=t;cIo}T9##0TQ}LLjnah?(ZRD@R;Vy70_R!*8ZdBi$bWLpF{Y%e$yZld@mj?KwY%(`~G z^@nU}!KSwHre!!`xiLG!&*6TH8Qyv>wUxK6p(bz}V7{fAAUMJZZ?A;~6_*u&xKH;k zYVx5e0*ol7$KBhg> z?6ypBlv4f`%tL-HO|m5@?hy}eUm$ro4XF1Devy+Y>vdE%boZ`5Q}$2$ zgYF$xqu9TYg?#~wCd&|#?wfC15HmzybzC6V=UAP)Om3T8)pp?BV2&TgAqOt(8O7=Aza4lev|6Og-A@Y_=eL) zd;_oJ8}ui>fgFbbmz$^QeRLso;aqCidd%VO@`hb&WvM79-fg!{!AvV31J8Ss&YHws$AL zC7VO>+V8I<#f`*UEvG3!i!4J~J`#3|ZXo3Y8XNhrW8gGvfF}49 zE+$wmehetF$tW}=ntxcF?7zTrOne^^QREjyujnO=6fs8Me8L(8!)KU%U+k)wswhZ( z5*@IWgk$KuArZ=5oHx7{z1g1>^Ei%S5m3))+`hu_`OtUwB=nuO1r(byuFany(k$8T z_72rQ2gPUJ)e;hwWCvb_O{bti#p!=9Y+BYUg`U)I#}e=~Qn?iPf+Mg?0V34`ra20+ z-oZDxrM`kq7BBNWMO-kH{@iUzNsCa=f0#kaD7) z#)@^ao?bj!EZ5U}juxlu>HSBGpCN7BQ7>;XEX_tln3O)DC-CAg5bS+IbPs93wDQN< zh^z^37?Y=qpRDB};+cB>Y%Om^T%B^CtL2>|PxT@MSM{AIPfh=FE$=tU6NQCFN05k4 zK+vEQuW)w) z_inQVCvfjJ@m0cvFx#tB=sHj9*&JAuVDOK7S@hqI+)NlU$b+#FS2PN6oD_~#N_Er95stcORD#*Cp7-T^3F@4oC(8u_^mVu2wWt|K@A@C==5w#3d zMtU_UAhJ=l$jKgc0-};iVo=wkqY@+Txe=dYPx zBt|x8M4&fO6&`QMD;oZ|_ml~z#pVYcgA(VsYN7i2cSRg{{QI&^l%)AWjPiz9GvQzJ zPUtHF`6ypn485Q?vmE!;2%;SP3Pdp3h~Q?gAe-5!x3d zM1XF&C4w-rM}%~4@q4m4M-Mpg3HXUWkf@o*>>)S$kz;wnD0NLX_BBidyd25?o}7pp z*#q%ScWcvCbo^sm|UfFLWrhDk98OqT_YM9^T@Cm zk!pAp@r$`|g*uIjYLGs9EYmUf$G?v|*yHbJC{nEiUFo!dQ!8`47}xQskTOI7g|Lob zh58s5!*vnp8Xy1?JP9qG0=!LV9Du9w0e1;2E{(CV+k)hIf0yuD0uqb0!&WVU4iY{Z zFPicqq=14nx(Ja3Q3hb>e4Gr?s2Ek6K#v?G2oFwjHTs~6g^&nKKLCZs-TMh1gTJRc{@`Cv{r z6;64s4l%dcv*}bebA8KB0i>BM5SzyGf3z2*gB??`bah?Jm}Csv!|?LljuV7?^JD=rX|F z!ZLyY(|&*6DBJ39)qWP6-K=Kf{qV!4fXn@DZYrD8F*^>&8L!4wxYgf6q7UsPoHTEF zo^3(g+@>ShTUbkKq)U_ftuIRtkYhJlxVnYgH^@)k|4{(6F3VYoTCm`Ai?0Pi=1%Vd za6iW`o+~u1fS^5r{H}hY3%^FGJ())y7#Hj!*&^;Wk_|{T63ClkSnJp)T9?VZ+op%K z-DE(tJxbfCG@&Uu*3i)zTBH%RIWFu4qRRV#hfhuSunk7zPBKJeDYSGq-Ch=E`c#XK zF`lWY$S73ADW5a!=6H6fR;K=#&0xmav2dVHhz9)-B(tpujKb1w>I^?9&f;zzv3DU& z6a5gs%sRqK;`jNO-oZc}gv@lR5nv*BXBMqi9NrmKM+pg4oLA~|5V-E!!s^k|p&M2Q zy1{b52(%)2VBH`AY^$+Uti=0f6n|J_JFgpMf+UYe1Cd_3cUI?m{ zQezaJ5uw6#qTwon3TP@?qI-*aP}Uih>-OhGh2(0AuHA_2hm&i31Bz3nmZc21%$y_? zOg!;Z4(xJp6p|t;gr)<+^Hs$LBNmMqg${bNF5?0qP(@R+k!uiH2*trDH`}UG{9IkI z#Wwl*dK$s`i}f^u^RLv?2+sdYJ&oY}TlF-8^Y7Ku2aXnhOnP@X!ZlqSTq8J>zMkNW zIjmSKILq*`R&bUuy;g9RRwjYjeeOTW)@a+0-!VfdhyT^adsVQT+}{B zu%#=EA8CwHWtxSm7>T74AsupAibZfzN5c#%&vtN@S9C<2)KO?pNV?0JP1D0_gsAZ zaQ1ep4faRbOyB0(H}m!mzuA1PZPMw&=L7hGo(3x=FWZ9Nitj8MR^07NMIho%U!uyz z!W#U#=J-+r^sbJVXcE~sZaDiEc;z;%v$FfG~Fn&YVD(~%Aw$?fm@&EyLhsmh8#RmPro);%hN}e ztujPY69{ybscDVT%O;dZ3|E5L$e0YAAHp7zHvp{Q6Gl`sDK82zQiJ-bNg5wK9LD_6 zU(ZQ=2LiPe-)bvEqxFuBIm)zbIs)6B+O`1I#b|7MEaA^nrmeUulBZE?mb*BnUo@z~ z?&8z3L7k;w#s{bM0j3JOiwlit6f6>@h>im09bu#OrfQyUqGX(f%T2ZyD?yX3wAFV1 zyN{$gSjU~<5QAp1JW}q2H02^e&dFMi+ymKGtK}>^=XfpWq;t4=UGx$al=9BG61D@K zbKE(X2RYi;yC_H17UdZ$=9wneu;voaf*m^up?5Hgmro%<{IA-=WRovTdP_1ZC@44? zgf$rF`D%4?v{_uhZ^*w@7s2~ZcO=ke@ibiwZr*f}Cfekks^!TzuI8Vq<;gV8CT#Is zEl-AVb?^B>8`_+`#Bi>RWZts8!uxsZSN>BYVOY4ww~=p}?7xj5*77_tf{xDf_z2oL z&nHImUHYc@5;e>I`3EEfsTHbN<&FKP5wv@r=ST9bdcHK01Hs+NuZ*xC^-hMDKfovN zMCbvr7__z=h(5r##fn02J*ju@m^&_joFyWGq$r`R+qptJXY>n^D(zia{c@fGE$f#n z>}HfZ2TTEIUz+FvG^z5+-UT$|fDcn9sZ~u&Sivs~%rLd}&t|)x?fpprR5QaaukJD6 zSsZfI+I9jGGxxl$jMDoP!ULApt9&8b=_@>oSDuxjbk&sAYmPgMS{d`rLvj3*Rb(V2RlxFIQ+*b<`P=5k%>j9J1} zSg_<-_G)PaXZs7kv4U?C8NLU*PcWH%=9GgFD7-8ZnHT3=HgPt#W!c0cc!3}{o2)iOEa5;32L(zuwX&mz3-JeKus<-19bm_OU*mW@=pT_eQ6M%_-W-O#QAei*6v3gokc(-!>x+9ZF(sB;(dl7_&%i99 z5Nrx1+V(wP<7$e5IxsD}untU%q)vspT!?$VKz1Ypz8BWZMzT3*1nPqK0VEMf{?{}n zLxE}Mx{LZrA!!*IEpksxi9e_V5y51$VnA5k`&}61EGmM8GD8Jf2puq`Cw-f4oyj~& zhonjN*kVc6klyYOkZT)?vN>!e@9}1v ze__3Kqex3lsO%_lMU*=rsyL{JhAA98B-INi!0po5?C7B$6TeW6ZmZl}iX28U;u*~| z(X06OY-gsoYn>Y<0BGs@l5Nkzc2AGrkN@V1WUk`L@Fa)1`i0cuFPa)sFykfnFj{=? zXPdm?S^%m(*R=VB-|q!D+vP*Ey?D7o)$Q5#o#_YnH}|Lp9p~b4*!aEO{vG;&W<{4& zw7F-0^Ij@oq5bgdtX|qzJH7wd(1*SLVlgQ@{Je@nsI=S4z_t&(k7#W@#FqjHrwVX4 zFTcB%R@-)ME^U`PQ@z2%#M97kKJ-d#L=MyF+x3tqeW2-uaIBvmONz;S(W0rlKc6kS z)8I0r@+Fsiz?uWvAVrU*OMVxiSDsNbB(jn}_efMeQCiSV{D+yv;^uwn`Cs~8|0N9KoYCI)=CI1ZSq&zx9O)adYpt;= zODhaTAKWXm%Jo$uKNNgco!=SOP)8GMrUr`3vo>%tCm@G0^i2)x*8>r(l!7aeDE>sm zUt}$y@q)U1XMhS(4#RYd-H`qM3NY7(2ik|`l9G@kL~%KfV8+l>@Q_J{e)9vT6Iso? z(`Y`<@?%q@-vuGMrYu@Es)TjaHS*JXSd9Hf@8`oh>aq(clGxQ0p(*7FD9{CmGJd%a z%H_QWn$8!wC?S~qDb4{DsJm~?Q%pFlaRhi%Ch8eRNg6#`>^cPSFn^I7$PT`0>ITNj zr1+&o@u(1i=K%JZ%Z*zE=#1DF^Z|ruJyyK>XJ2%W4kbDOf{da2n`*h5U9bs*FdGt$ zd|qUs$^UGQ{&@?=v4`0zBI@!7P{pt&gM3(iXk1r_@Mg5RMvK~TV6*C%;)Ng$zN3jb zK#m{LRsHBGjF>h>=3ykN-=7w%|K}H@@lGuk=gTBrRECUBT^XxeJWB6Jm%OZ!!LldR z0*1^5lgiTX{ajPeJ7qxC=ppE=r$w!&Mb=Z12>v)1_5Ov+EmCe=^q=UcE%=z}o=$Ev z6J@+1si$3>Wcb6KV>Bc()8(V|{rl5hVvX_FSB8JRk6-m$rZ4yE!~WpYU2>6uORK5S zsL3K35El;xFCss~Y0|FD6B4e3us!o=$sgdWNus{75VC%M`hdE$+1%jjUz^Y=VR9j{ zs@P6KR0?WNwfA$h0Qtsp5adB1tzRRR^2zbLQ+mD4#WuvHE!DrHb$s~l8Ra!_Ea98^@*R?9&}B?kqzDs#~}D6nOY zM!1Ant+8kwT|`llA#WAP7RE;LC4*gJmiwxXN&j=lu7ntX zg&kS7ikgrw*rXKVC8<~mJ~CE1KN(UB;kV0Fg0eK4ORFBJV~p=Q>eyRBGHQH+uw&O$ z$~r?zS+(v$C!~r85SKW2G2+~+a1Lt#VRS~dDJv=7M<&Bq!NpIG4RCP@r`<4rHJod# z!8t92fOTTRUuRf%1{4zGuo3-VE=ww;UC&?r=|eS-z#Oz5s*OO z!(-}JvbFB+=ZS;g0UqZ^kM_Rg4dwE?i`5-4{%#epul4ch(TjaaQV$@UToSeV zCrC4i{i%|q8e{^ER+DOwiP)0hpKz{DHF#%2&715&Rt(TLH(=3j+W9L%XpH23^5GUN z%AL!%L9i3L7q~t&0R2Sf)7?rCDoNa?a%x7-HLFI>HB^-)mpwB9#kQrGYxaRqh&t1K zzFoo3V8xC?!~aS{N8+2ZD!k=5Y}L4dVSKgsgkbSR6i@%1y9SAsrtjPxwUfL!`#UdW zPH?*C1V?7mXkYA0?#m_jnm~+Bu2zrcl1KWICvwT-eaW-A)>R|STgv!>hhf`Ufjt~#5hj9_-gIAaF^Jy4S5P(-;kZTT2uAa$(&o;r1bVuO(uH8 z;evqvuan74CNSHO&W!jgZ zbWjHo)s-}3ouc*8vi)Iv2km+MdK915Lq0sppYTLjh*bU`8HSu^%uB8jv6MS*i>u0e z;~D`)V~F zof6G$pBTrx_k{CmpR5!8t)Lt?ag2VSoOYf9xM&>3w-1Jsj^~S?fDguR9>9@20Jmf+ zA_NO7(}53I207SQ9FSN^qqdCna}9uWgz zqWUe9F}7(`+Na-Z8j}JXQ-~DZdAn1~Vojd2F1m-J6x}mUOiVM5vQ-BU;)+!rrAd{JZppd(5LXr?>k^f%t`JU6#I2W($(r^_a|!G zpQYwtVlRy3ApJ^3EbhWH52kRX97cneoXwg#48kkxTw7o!dCB9&&w#tQ#jj0ly&gj^g+JUd994|dOtvxspz9K#ue&+vE3aJEwMXsx$(d;4OH;-22@ z_N&$1curmj7fCnFb1T3~dHpmz^f$i;j`X_@j^W6XX#OQ9eGa04Wkvt1`&%q2Y@es7x8;Xj~}Qv)!F1M^-Ej_}DC?|M^Hw@*I|$NyG4i;L;V z&+>4ZKf(UnCzu#y6tgtow?}w*mOn`}piG2}`ng@z`FED@VP%Sg#^%GnU&iJa_TR@@ z%PCe1w>4#2rwaFJ)s~}0KF7)fYhz3__bA?ZQEdVBl3YZrtPLNY>-Jvr70dblHg5QB zRAb!CRQqdkku)S|pgCm~r~V2JmKagrj#H3k}iUBAkNn%+cXN?(o22oYi4Ew4}Ps3Xh9Q#7G-w zzt9l$PWx=>u$gz$%q-{RB!BX1A$v6vxgg+(rGL1pmv$x=0bN}p(0O(b)l9lp$J6C0 zd11{yO@COS7+={Y?>7^AKNC;6659h_M}svDdXA2v`J26Pz$qDz(;c?4%YCC+=D3F9 z;>n+?bYw-%?zc&eneJNi6K+n8zd)0!FtoJ`foPitx{uc?ur*3?*8QzJjEseyNX z>MQwaO^wZKYUHOiHCT?EY9l|bsj+2Ejr_Ex1_vQcwUM9J)Y!VFMt)jTW80b<`Dsm! z?Q3e}r!_UsUsEGLt*OBtm#LoSr!_T*qnWCapVrjawWdaXT2teKH8t|nni_14nEFb7 zT2teqH8t|nni}k!m}(V0!) zT$8(O!Z2alOP4~(##7YX7(X=cs>2GaJyX$81RlXJCJnx-6 zqZ-w8K7StXp1tmZpWI9Yd}iH7QlI;sV8!vq2o;{AdJMAx8u3*QdkE0PCpYyEd@l|p zFAy5I)cPr|5I~EQU2Bt>DVUcs?Nf^=0XMfzcCB&j%RKYLWuVK5Wxe6Zr+ItC)y}x# zjK+27AY?V)=A#PIX3WaZJTR@590*Inmj1=d5k6bGIfxc$OwGym8X|C)^OiMw%E!l? zXdJ)236FuIl5J{C)NQCX13u2io!F*^XtBa_-kJs~$JR9b3cR5lvn?j|tQJPt^)wP& z)9C8q(IOHs_mil52eNET(TvD(+Za|EecEnwEYu^$`6NHUncR&tp7m3FOles#$6~tT zk-n+|ur>?PNhZic#^+X}m1cp{Q~d~;VdJ;)T-usO>VTx0utu! zIWLYFt5A6UlH?s}o7y>+R zW}6v>kI+q+HGyRJE{tPKW%QQAZrn2|hMxZ0XtnG@Wx39G#9wj^_dO!kN4b7ECt5nW=fQ3C=W=lTC0#F~Vk9 zKu??Cf)K!RXDIMqBw+HkvxY6+v#1B&OD#m;{4M4^Dv1yZ%w5hNUOTkZ9MD^&0g&(^;-Qn$$e7>xiO+LLf^Pi@0?)< zjQo<<2WYCqe5)ypp=~2aVZLZlc@Bd4!n~Q4F_{iCqlJwbbPDrb?#rlv`X%!XtYbMt z!s}5=_)qYShklxS=1a61V3PkXspz?rA!urfKcB@wpF|Cth8I`Z)6f> zLfo|9^O&$+zFZ{p1tfXrEevjAz8opv#HK}6Y%CZ;&%%PKmd58XTf}FHLra|nGt^{Z z_s`+cb}n@0{D!PQiSssdV}j>^8B!b@1WXvkS=b8W0W3=1MI17CtRb@)Wo~pGMRcFN z1(#z*1SEIww7kw;OV9ztLM|$9^D+S0^^0q%6rM@AUUBWap!PeP!G-XZg$upc^jWwD zog#?$mRoOyY9y&{AC}+9xfdzt^cj;~L6DrM+RU-%{vbqyz7pRCU3vMUJu^BK?JwlQw$84RR_5ZwzVI8Y>xi6=m?FzgDRoXH~%oygfd^k61u4RP$JEdeUik{4dDCz`nkNKks3&U1H zEv6|_NQ2GHiy-lV9p0eh0`sy+KtIS7=OHchAPVz(@fyx?ycOU;&b*nX->;;t^mCLh zc95q^g8V_2%s{#LdQ48PLS1n(p{+``pcyc5ZGYow3J94|5vJ~tDTi~@&NWn6c(c3F znWQ%%)|@G3RW6Q#>H)c6Uw9~HoB21hs-v}Slfw_NYd`6i5f2SJbTZt*k7=u_BX0&b zP;u4g(2=+z$kg*N)6w&$%GF}j(r8_IM?|dhE?)TxsR?KVCJ`Np7FhcWJ-!#j{frbd~3`{)fJHR%!yjpmZ<}>ds_w@8D!yo zup`u@aE079GFEN~X*8P@XPe#z4W7r;$&<&m8r20&jdKTzL<6is0~B+hQZ>L?=5?$- zFxrCj;oh&0wr1^>MuJN(OG9yobFjc?L<+P-9r4bV%&?ZFl4x;jE?EgusUa24PvGpC z3&-5cxx+mrJWv23=w&U#e7`bvPZ1ntgGW`*ssGVnpxg%{u$wafUe}!3zNg%(0bFrMV$W+c%ngfs}-wm7%CI`DJ zq~~k~JL3OZDkbSTh&h;N4r&g0Mub8%%mJMBnx?*nnT53@J(&~WFq^^aHxkH!4W>xQ z2vKctxS3BfLQWIk7JTbeLBN`RAh`FeY)vC_7SHOCL`0flokR!?*WTtiFi|_Og+fJU zJOrR~(!%*7P{({x!Hyc8g1r#zW=sMLBJ=^9X-lAnW@jkaB%=t1qk;{gnPnm>L2cU9 zXm-%$w1RENkvFL2Q&}e94=yvPGgMQ0_GX?YdbSGIM3wfaaobTPRZJaw6t{F3%JADM zLz&*FnA@pP%+FIX2V}h}KDezRYzKu5lRxuoddL`qQOlgk!_w^mUqUxUbNu0%a*hl{ zT_XnDCi0$bTm>3oTJtNL)Pu57U#78&{xzMFk}!cOabGxZLd4)#-b_VG48GjibYQUuX!&w@0)R>o~7-a;#juY&=y)j&P*1=O2OsAvC|?N1gx zMUP8%iuvepDMqhBAo&1b;HelxwPo!KLJK&Aeo9%QE{s&E3gx}iNxOlPWuyei4kD2T z${5di5YV}Us52J|3y>*i2%7RS2&*s%tGv}DhRg_gj?zXnP}YP1ly!agXL`wKRJsxI zQGZlPcl|haQzMibx{nZWTGeqK*El6}&EtrG7c>OB;D4z{rgEi6Di-iWKEUCbFoH~o z(V?(;5;I(QWJo|!F2Qrc|2p*sn>euFMJ9p&&cgvn_ zhrLuH=VXEQJFG^=XTR&{H(yS@q_d(Pl-zxd4|Q$(imc_sWmU71MPEvy4eR}Rys?SK zVc0F8Ij^R|ML^#AKev~>t6jL+T+r?8yGaBIgaKp3?2l)z8{F9zxEcX;CGfb8&VQf#BC>mUPe_buyIitBs&bo26o1g3ogre@m@{yPM1mlIofcPDL zzz@sgMZ+g!jtVA=(7rf3G*G=p=48(_<-U z$838N+J+fiUVf?`Z^eN$LK94`1+)-Gvo)D(aE#Wx)ZhrBQ~P3u@dp@?eliDGH%a>t zpU5EokhdBeLXS&QW$;?#NRc(*dDWYeQgt0N&qNUaa-fL>NNDSAq2A;g6+NVa;rH5LIzVu8`3+!Flab z7}6pTZ{Z;8o?|RQFPhdNB{jsm-$g3yu>l@46o-F5sAkeq`3XEZwdlhu`n$jc=ZalT z>K@?oKhqRVgD*Qf;n+?j53?0M{$tMkqix~t^zI4kwTE2}#wBJ+=JfQ4!e+I$|4pc+}G zha1xC<`9@P^dfJ)H#NeW(FjjR*l1--MyaK(`jz2n0^QP6lm%5%Qbb;~;J7@u^Ff|LkaX^|n3LEsSh){S2yB!KDUb3y_f1OL;Umh|VSEDEcU zDPo4-i;Q*J)rn+@@Bom={$8io~e0mM>Dj2G}Fv@kZYj~*n8Ia!A^pR|qOX*k@1f6?e@bG4tI zRU~frfTwTwtVl8gvTCK%Bc8BvJ_73dp?l1*vL12~~2lpO}n$oc|g1u#ts zkd<=<2q2;_PNo86E(wsim^a`z5g^g52AV6O?NfscLvjvxPnwW0p z>tzZMY?|q5n)`+d5Vu!P2@oE4k7r#vgJ{2!00HOq1IUM0tA=rh1TnJ@e7@N>{Lwkw z`rOas);FMt+aV;1i}ZZ|d;5hvY%Fg!eZ%CfHfPL|_^B>MiW@Cy`uhD3AFR|FlB_bH+qlYUw&7wA1Z0Q;E7TCsr! z8Cob?S$Kd0w5Lh~n4%$gQt=r3$8HOT`9yy6dY?Sz;|e~=eHqn1?JYd)wyVmM+_t|? zIAE7CqHam+-KPkw+uz}7Zt{^!>+3mP%$MNr0Wi;`P|FPMvwf~elKk#6OF4D`qAao3 zigyqeh}gP45+%3874{~bnf*!*IXM#~I_Y<=H-dN^j2AamMG1+{lB_@UuVVO9$=qie zT`Ka=z%o#ng!&AL>7iUc1{=JhBBztSW_X#^`8>*w9gD;?mnLuWSA1Rkq zL1GaNSRpuN{=X-v`HKe%2Hyp{e?E{#5M*44d7=6!3Lu`CU;gfz6fm_EY?%}=V-zg( z1<+T4Y(0tE96D2ZE5gF?4kb-vkPgdSocN)4;@p3r;=d^lw`vOix_I-2Yj>7ZNqutn z2aM8TxbwqXz9bVK{s17%wImZYrEpq!8};>yTk(%(-M`V@&MIwfhpr9Y%(v?|x_r>T z>}_an;ijtKr8a;|&f?(@mR$EAwrG&e_HzfeQ3)Tr_;9N@yO`l#jgh-!FtcNJhyR<4 zzxmJnj)ldgP!zIl1yg^o&OSDY6hDwF2_|p9uH>5 z{BPDjEO?F=xGs*D;Q5m#M}3pASkCdwqFVU%Ix< z+!Aa0i5P8cXJ6N}P2I5A;_WiJpE%#!7*A>}rPkb2{w%($TPPPWEmrKlU3JlP-re?Z70`d(aqaw zQpKy@p^>*eh=M{heua}Fx`0cfN)B0Ly_}s4d<@L~2SaxIA2gV{PJ?E-BNJYeRky@g z!!;o@s3%;752Qu&thM?=${?jE=2!3qluf%4yY}-}QCclg3=eFUVzE0O6TgcQW(Qkp zPDeoSyXa%^JBE;gdeJAcZh&E>DXd+o7N9W6lAuyc(9P37qeUoX`sb0)m^(?Us1#de z`z@1ayiBfeMEkN&{7;It{#nu6F#ZIx#m_ zlq2xINd7Z)7}L%yU4^T&!9c^|oF=1G_*DDV*#$dGMCtdu@@Sg0@2XC}9 zQ->JoGQ23ShWHaDxtH9hRSVq4Z)PycM8jm7L#6?ZR$)PLh3UjK&bQxrNUjpkFp;>f z2pA1$hJbr&(`vD)U@)6D`QP;ark|-$L<1Kc@?gbiC_Fz52i_9TaFe*gKQ2 z^VHjRNZBtCJTj#l8g@MMwG4MT`xlo!_yuNi_Ajmt@e2%PgRi^F8y$pb;|e`)P<7p8 z$V>ljQ$m$B2x31@+j(~8YLAy_4l{FAUCi3N8Wyv43lo++v4=?$Z$APQ;-|ltheN&8 z=4KSbAB(dHtkS+ZB9asCc4)iTQ|0*7I&b6DMY*E^Cw=|*_Y`~Ov_<Yh&e$ zL%s6vWArufKhdM?P(tKt;@9#k(b4*!hOW+?d6UUac)?kn#cjLZD_FA|zJjNCy;trF zQ-1w^u`zMISMXMB_?5@kf91KCc;)%^UtweBhF`gRUEFLRdWl!?*seDgHj8ffm8aK# z<%O4cg`_6yeT9vs8-C@!b@8<2Y~T%F!5O^XS5CdeE6=U}%3Xtvze4V|^}a%CxD7k@ z(E6`D`4X=@weBklNOdq$nNE=%&+CvKA_lTsS~@gQ=?1;L4bRgUM*)E{sIfJoc2L)` zWYg<+Xw*rgQaA5QLq>HES|2{6*IcSj->bVKPpe zA1VYftMH$$la8nZg@wOc5Qp3?wEwn{ZPdd@=^U4zw~s~xXfm)0WhEBEZyC+e;(n%s z7V#y$u27c8vJJ}suE>_Ihq$9ljpQsBe#9N+ypc0p6jq8w(O8@oN&06%DvtEe07zm_&(5em z4gTz#?iuN_E6oi%$r7!~w{YYVb;A?DvoB*%W2Zh>S6hipk@f6vXK!PXkGreeOKxHJ zaK?RtAfzp4JkAVw2WwbVx{)9VE;qQlo2~mSDROzco4iRT!Kwt8x1^YsgJ23z``krA zLT@(0a9JJgvT!#{h)V;aaM|fr32|!C%W%X<(!vavVzeD#Zoh6+)XWfb6q({#z2@KS zn=Tv?B5${6s00&}n4q?{92Ht-xWsP*33)b=&iSm$vd?&K_+eMoSUzhO7(3A=;Z{gX zo_rwh=}0k3&DL=pIRJKD2XDh&EWP>J_}(BwN1GLQl)zA32X(v8HsS%gj}VT)7Y;Ct zrlyvgyeiim;jo0iiU;HKue;Di0^b)U4fr}xQh&zH2Eb%XO02a5tB9F!ow;yZ)DA*A zF|wxDmv^MLi&&K_mi~LJ#FlvJ6cok+viAnW@E+L8^d#bg?PmrV2or%nwXF{ zSQ$vL^oy@z5j2tqJjDvt4BQXDypct$@hB}|a<)A~0+IHc#lo5PZ<-7wZQn9Gh<5|H zcf*ysoH{?lIzMYEGwrj#>FUbuQKg{@>nt-7O)%q{imMrNT##}MTL%AFALnu-r6~;( zsY=G1w)oMMKqI+WT>IFUXlQ3@4;0nU1ai0<H`BO1e`Tm#+;yXmvyafxfnq$U(;EO-aR5~CN7B*?GyFQ$o> zX4<>(zsHWuEw?xH32V1pViEwPUO_5_}p=i`?h_=%U^1@F#e^eZ9%|!5V=G zVP+hS^}d<*{--B6YUX`liW4b$#q12oG!_feSb(F#wVAoR`0lHU(mReW4*lB%@y%rF+(iiNr;6z`*(&HV<0;lXQmS+(tAbKH- zab;NFUz$WgGW@_fbI2GaEknJSPH(r^)E$T!!6KcSnPt4mo-nY$$nb{v4ZI$W6z(QUqZ4@_PBhdI%1Xt_$I2osbMqbcqb z#$|9M^~&Kpec^iI{Fqac##rUX@pc2hA@kLyK0q>+FK_-fU2Z(gy>AQ?*xL*a%znEs zsGLcjuFM9di)uF~4sZjd_y2;Jc74>?M~#~(!$q!oZ5Kqj+2JjtSahr(7%#MQ>_ltt z{rQu)Gl#dP^1%ZHhQu%#C>w6xO*NdYRZ%L3h<;*Rj^sxwqZKQX>B~F#reA39`$gK? z)IRrdE`#9*pdy8SER$02b%k7uW#m=b9$c5~0vrtO?qEV*;Ad1ZKlXL~KxJfbBnL{8 z9tV2nCnp1CfN7+#xw8i9xyaO}WBjGhe>b|5U@znmKZt!sMK5n4MuFj|1i)R-8qY@@ z*22_yFihB*6s@uhJv^`^Fg&P$_hqmE2~&!^fDbmovj_x?y}3Z}}~zDneuyLl-R#rBI1i*<6*)AmjLxct>4u z8~SCi4pEU3*dV%wX3I7u{J1{Q9Q~VMB^u2GZu;2AFYpI7PT3L-H@JOm+k0mC4gB`+ z=nmm?+#!V=PvtnbHI*?Em>lh~(~gtRanJOruP4R10*O<9-wtkTp^=(P@v-_E3?pghW zIbbtOZEn@2_0Pq+<6AUp`0PP?AzPp$teLG=myL)p05np#(_)X(C&DW9%pnj+#g0Y?^G8qc-I)*}O$Wfz=j%WjN4WKJ@ z)zfGViLwn|nzbR8uXyOuBP7Wx$pRx1WvwV7%ifikUT2At-HHL6eMvXu*UK!pf2!a$ z7CbanaJ2;w2a~sRS#of>tJGq!;O_Fu0;_?EJ4cW}kTXUP@%J@y>1e|7QE*vw1Eh8w z)$S{6W$Kyu37i{#-+EFf&L39)Q@kimkhnY`T%vJ>GceppI4hQ3zF=N0zWa)zj3JWD zP&LriAEu?a!z@n)Y?Ag~nb>8nlG=2%gPz%$3r}nSdIr@ahUdA27-ofQ9WgxDt5S&J z@uE<0U|A4H{L&rZbkylOr!$3K2mkF0J<`AHm;9>L4sA zQs6K}VgD_vQd4~me!PJ^9+_^Q6gLSyu8h4vr4wO5`;->>kOk<|~W5zA+ zNmoTmZ5ACxAf7f^DRqq70N4{ zZVKdgR@ahlx~D)WCr>k}ciw!V+S`DLuz_~G0t{)ojDY;uKRHPQF@^1u_na(-e=?t@ zVN&HjtKhi7E!0jxxz4Y2s$7uOa=aZ?S&X8YA?|gxJ zExNz&*oXAa8GFM!NTluq=~I5xuAlTZeq8&SALTX6-C4Bs9R&~~#1aTm)QQkS*MXmW z=2s;j8rJuHK#t%q#kibgnOqjVNIWFxUD6miv&%Y8THGq#;=GkdXP5Q=6> zpRR!PK>if7=zbD#`2i3182aHWsY1F zK`0*n@8wx|^Kd1PkEVJYuxmAohV^+V~l!<)!ogGD_tIa=Ej%Nb1zh9~swe63{8DT# zro|)NwOg*J9^%T~5l_l|&^s{sVTmQ^gy$!rq(nbFJZQBOZW|@!A@-64-H6Z3=kWc= zIeT=ZM)is_ngESz7-e_Wp?^guiIeqbc%~Hn&q>Ig)XusEKB%3wP_?Xs5T3lcC0>K( zL|^)OY4PJEvOkhx^d$EIqeo16#n&FK60A;=9n0s(Nh9p_iE0F(VwyMg)127R0{CQ= zlflwC+x!(F6K)5X)H4<5jn^zGn6h)FAA!V5(wB_+U?|Td;+`4}BN@L+z1X4EQ1U^< zIs~;jw=qyd?($;})R12#aNG(UXJc}Q!4Dl-2BG2z^A3$&R|aCx z?_zklpFGay(!ad|?8BX4xgD*;mk>q)oei)&$Seb)FbvuI0w4Wgq?Q`AOZ0tD@e`3q zIiSO?r5~@Z3J3uMsOV9YQ{e!VI7SBSlC4|du-hl63K)9eT3^HU9B62QeJEZr&zDvY zRijtY2B#nJiHGwi;H0lgZL{cmaojZv6Hpu7+A$Ac!!Xm%Rz=+SVnM-zDa<4|#SuEj z%4AF!R1sxof_sQALg~RMJDtidNoB{Q?D{KcnrLxdLx=mu^R0dVjYT}{e zZ;CP}>4|cT9|wAKJ9b7O)yn8apkaJFkT1R%C>P%eM2^;D`+BrFXlSiRzGZmhO0Wl9 z#WT%z4Of8h*I-^}rsfsbHS1y_)cTPHv}!<>Y2Us4fVWrD0&-I(M!;{%1PLfknJ59v zDHA3jIx%sGj}A3VsUI3ri2vx-QHbYY!Yh)h!tn#M(wu`=@GE3dU`Hwguf}8oGoHTZ zTj14r7i9^vQa$j>Y+kC#eLe7s)7QK0hp8TTH6~!Blg=`rFz65neNP6lqJVJeOM>p7 zP+n!s>li`+GSUJ^OR&M6J&56dyZQ$h-v#{x9QDHf0sZ8n?!kFG!e^Mcgxpgo337^& zD68D1bFf^IO&df^Secv*Tl7M26LpaVQ&p9J>(q7ctBs!T?>pkwwF4k@qE-!3&6geg zcPMgf&F=EDpoPO8?~z;9huYuy*vU@ChC@vrsskTD*F6o3!)b-M&c+o~-I+2>7fl7R zXH(`Ba!(WH2`h1(s3c))s)n4TG4&9}%=M|xlmQ*&_rbQql0;XpPf<6lx!#uHli8NR zs^x?k;#WGev$tj*>9HuAGoWUkqioMS*cB|h!^%alxV+tHfNFnp@qzMh+dZ|->a`WC z4zI1=GW;WAAzasH7n|V)Y)(EKVIxt#v-09Es$Ym0K#p!ST$TmSRZ_s zJ2XkN05^k3c_aA?< z2V!0X@VV>^B9poD$yBsE7r_^pIwHx&@Jd3Z8ZyTih2b>tqN{8HWjeaWIEY0Iv{yA3 z69XX>76s}~UAg$2H8~dz_mXS#A#@qUd5Tp_8z@4v;T$WBSff{>mjr^Ys!vrd@syd? z-5%S~`ruIe0_1&pcf!Q!XkUl@lWgob*RSl6ah>j&%*MXK9+{OUv1*0fEA_~@ed=rCfSZ@5M1w)D9l9VIzAyn} z-TuMk;j0x5V&h*Cy1bDcUj^P`CHZ-2mCQz4- zM@dp9hRG8NAq@#mim4f*ge5|vXf=wev?-a@Asj)hpZ!wFa%0k_pjQ3Vo6??@Ng3ME zxa5a13xZ##tu3+F1=9qQR~wZFL_!YrYC7x|(vs33{@6c4-`)S2es40K)wLOp5 z%&VGyYf6K&*j~+Il%X$6huS-CxrWIpuZ?uy@$Sd!Zf^~1taH0jvC_XL@+B3Du=%FY z{iuc{H{)d1ag7?3ULY{)I!3TSKwU$y1?r?3E8$YhCgUSRc&OTR4lnlK z%8IPatG(;7ljhgE=hLh&nO~3A4H!h5jRc;vYO~Q4YOzWfyCrJ1S(B4Tzer=MZz^vh z;$z`HA2@8nAJML7-%Q7-%=@oa$u-Gj=(?f6a@H4>LV@KA9tlHE^jdXSRa-dmb_q`L zmcw>HmBWkWmT_sebe17pX>@lCwFqZSEvPKBn0+sybEz%V_9{3w)~6N}KZgayhnXC7 zQX`ipDH_AX)c7zK9^s(BN8<}r^ex+tGMC-0_V^M?A{vAH~}q&mtJ za%Vsz{;c~dmIUSmmM6{E&I5b&nNp&?x<#HMqehoJHQbq9ub3%?BniG)gmp5|AV6HT z^RwPd>z7mS5iEPwdj<0O)q&kW7$hf?e6)sH&mhgSij9Od(ndtW;G?5OknBjw#%$(l z@qzZpowqWpu!%5XuJw#Q+7V`{*?EE*b3>rI6X!YXVK@+`T6|lxcwp}6Xfes#Xu~Do z=>|rLjww3SEM8qOwYDBz(=w7!r}D=R@@J>tVgpj(Aul!&a?o2&!aTH-ZtC{8A` z;g42JOFykPU4 zfSy@GAW}e(LK!J*M&X6O2!hb`8i54H{(_%|e};2^Hxk1J!{#1Wm%%1MpMwL7%65^^ z+ol9Ea3Ox;he$pat|fMy4SyoqzaC!)Ena4j=6J>nA_xL=~@$abKDuS0McB|+5?f2m+^G^=wpmy zHENhjZ69Tq!xSnyk!?H|V zBW9UZPchA71IDg(vK0WJz-mpG&E$(WEfWp7SbsFMt2wi zjim;u7Dy_?%IOAXp*mXgvpfr3UrGJkO@q;HZunG*K zju+)haY~t}I*z3v-4y(U(C}Q3BoBlZy>DOq;A6$`Q*!+9M0|nAb~wCs34+sUy}L-A zPp%JeDd^8XJBLp~=Q!Rl>gQZ|Y>zz-K3z_ndk_Z`sh^1n1~0|J_W57s_qzQOuYXEKS6lM5lAQ0tn@P&7jynm--l<%J82srEm??$ z6@{UP+PsAtfwmqhQTNT%9e)OCM`0>4Ny^BhDZ$kLJe39lw7L@U|n4%FFs2Xptu1?G!@aMxa=I2 zUbd+yr=50O)@lN^n0&4#fHQ1b6G%ysVKQn0w4o-zB{~7`RT<#%rZFcpKwByU@M0vB zYICm)7zdFuHLDC%@~>-sEtCOX+Ml+HQZlU!h(!}+0AX$`5-{6W_BKlsWq=Zu0d$0e zs0Fb{sY=R#5Y5U!m6U-hMI8})mX!gkWM#l`FuC2dGEj1v&dPuqVp0ZpQDvY`$^a{lSsAcKQU=r|8HTR= zDP_P%mIFQ1QfZ5v!R;cbo6RM+J}@> zY=~1z2sMH0I%TmLAoC{@bNcph5?t209SG z_55=!<7}AiQXPm2nX`5}5JDt&t0WyLtU9nJWMKpoDNd%CQPP2`vv^Ub1AQf4L{l5} zu#++fQ96MY0iDEtGIgL7Oon4E>p;r+9#ubEvfmzL*~mo2K%qq%F=E}oy{C}Ej=DBt z9g{UCO^d}l&Dd40)Y!)>EN$=QX+J^fT=pJn@A)M}`0pjt7oqZ-^H?4aQPy6`@6V(D zKIg+p+$t%Gn(xLEEIMVo&2H#(qv~YYHjQfOFRL^R)TO+;A3kX$s&kT9huZm!JT}G? zoA=#RcK>J7cxD_A5vvrrV%)@CT3tp=y4Br~)q0iR5f}`}c+P%625ZKEU?Zr%h8;5v z)15XP6m(}0S`}_NY9I57Tly5rOy8#$GmN88m&tKt`q=Xk`x#&Edgu;Yx<*-oef0HU z>Z{}J`nvz{I(;ouU-zHeSHx!OtX(}~tSRefd8Q&7_pF(E#c1?G2K)bC(CFkZ|L2EB z_fGfeuLT-CTa|UkjY=G5x*msrif_d_;s0gN3$6mn#UZ9?KLB#98v_i+wRjtI0K9J zOh6uX1^+U55?0`%4R=k)!cy0Qr4a7f z-N4`#jGmz@60qu$Pbl!2(c}mif2sk;KHFSI~!a`)&6=vpJY1)7UcLm zDT3{RE%EorJAPPc&f}v9PP)v)T&o{0O3-TJSgSO9WBQQq0Ao|9bMEL8MrBiZ&K+Iy zZB`O?azmSO01Trs8xnQ_4!k&_6!c50b%VoXS&4)ge#bQ={)=|CQ5=ub+$EW20M^cv zu_zsp=`xGuZX3SyUCkU{(hD%hn7HhSuaCESXbhqBG5i_6WGt#*!`XlM_m$>?4;Lk&rTH%GUY=13vKu} zw>IZXcf9-V$SxI!H|thTbcJq857HTu#Ha+p#FHdc=TnX#=$bu6F3|{b9=QKkT zpcZ1u)TyO$6@mWWH~wcnP~?RK`(K*7ENx0)YB4J zB(TB=u)TSI@Elr)d!C=-Y}z+t2J{S1U(3MZ-aKaQ+6DLJn_*shF3vj)K6CbZ9ML`G zlT7)|<2YUT0=y6Sm!OHZcnjqPCk%tl5;&|z90z{DR}276!CMf_KN5v~5zEru7BFs0 zB905aJ=|Of3LhMAzHq!Hqp6&!$;UuD!Ei8+oKFDb2Ks^~<&tm(eKH)OY=qP7$aFJw zW+=#6dKuTUi|F!Pv-z#Jf})Gf3MWg^WmkWIf8WvWuw(3++)>wH7AI7^C>4j3^1|_A zM^AP%57Cas5<0RWICOi7g3XZZ!P{_@!xXxb*=BPP2c5;^Ge?{C+HgXpFAW%3KPX z4;q}E_z!h)`9SYU0OHei^3uSARVsjM=5wFjg1+1S(z0&0m7y5 z1FL!=L*rwC22MvhoS9{C;XBhlIzb7b==$f~T-TyT<>OI)6h%P)bipm9U~w5~smCm+ z-mxUi;%fcSq>YLqy;NQA?>|Y{70$N&$vVHoHI1tKWDK&#S`|x@@8QSfu6*JcIFc8gS6G+!7d#>~B6hmLlzd;M+M+ zO_O9?b`8ndX((z`aXXY33^I=nJ0shSmUn^8!8PI}#-5jS)Rk!pV-bXfVT{SZmW)|Qp zU?M4KWia3v3VXt0n1C?DRTA$Hz)AcR=xE@3e8+0TgsEWO8)Kba*d(+?bE7M)zTL)W zVlbs+?-4rfv_ZDrU9zB&NHCa!e1P5^ot*Gf2#Lxjq19$Kz8rvt`MC_xZ* zIF#8|K(~j#Tvq$}msY(Yi^pp?|D0q){xoa`C*!?rcR-Umj+>fp(&9onesm7?mEB2jp|Bs`Dm-|i&8{ze#!8B~@ zGbCF3hg$T)Q{iwd{SJ9h1{4r1;q3BRD8ae;$qBqlsnHUueMLAnL5^9Ez;dgZ+| z2a%PEg`0pL&BRucLQ4Ulu#ZryYo>h~Av+t>?UZZhM2;vAh2nf~DuhE8M+ta9mTf%` zk>|__B{>0Z1#Do#BoeYzz_hI4)v;PwE@5Dyjt)j-a(P8i_F(pQFshusaCWq-H!mU5 zV#glp6myf^eF<7ylGsHF3vdJioD%Fm5EBBBJK(iH93`ixN`5>_&P`QkR{gaj>$+-~2ch(~}DjZ)d<2E!QRQIbDBBV_6Z##%-oV z;okz`ddlx6bM3?b&y%~tC8)#6kSf%rvsSe8cvW$%aOt@*{XVSKnOwUSgeY*KZdxiwL4A`=$ylJVvOy0?fxY zCW?ZFQTjO?S@GIdp&_a@7_bd?od<(vjgDhG7r0~BCizZPw^z8ZS7#HKOTsjTUWakQ z>Ue7#u^0tu0XzUn1}2Y2CyFh?*FZRu#_N^svkWDsOrq z-DA{96NNtgPKXd z<6sJ;;dbuA!Hm;34x^w9&!vKrm;&3J<4+csk$QE9g3~E%&QEuU;q7tPuyIp}mxnN} z3F#t)vh%YuDKK&JspteK#D>#lQ#2g?@VwW>%q++<^j=p;iGn%eHSvau6EBPQMTEc> zrWDk0j!z5_97}&(riI;ZA91L?%Z|~{yKK?`!QuNCDiCZ>F%;3jG54589GS;sh@dFU zdx|ZuE53zyNK(=2L*o{UjA$Bez6Di|7PxaAmBnk9WZhBBvbXM+r~j4fdk3S2Yp%v? zuF7E3Ue`#p3W?l`{>7fx+SO_*6J#Uecbi+HV+Vzy3og`RkwPSJz_rUz4EQg%SLdf> zZYOgtscy(-q<>9xz%Vfv)`7v}cySGCG7n9A&u`dCbI$N!u)#@7*~!jdvcyC@5CR<- zqw>)!QteQ|EIE)5P~iu8=42{pqR8D-H314Wf)!ALL+HQaVWF4YH#)m$@b9@kI{vg zL8qEM+7IUxMU2%sNqtJArjfho?4IHTz3TI@r2IpXbS2=kN)wUmfe+~9o6eZ@l!J*( zDEx)rrYUQj`)B$mKpuI?`mO-*1jL*zY0c-!sv;p?#SJ~`5ZbqFm!&X}}r=;cFQawIyLk|SZWYGwRk)Vq z0m2U5q*jOa+$1**Kq-EjR3DI%@OhTofDeg}f-Ig?8Rm;mRS8Z{=Y&aQE?Ue8MPeV1 zCS>ZLuQ(;7ZaJ?L+Ukx7B0UGsgujb2XjnQ)=&QzKKSO)R7hG8%<3qO6q|EnI3TNc| zj9p30acEW-NIr$cvS=d(Ax$Y?5vo0gXe!$cUrcv!_%OE%m&|wBiz21iF$twlgrfNA zVQThjOg6h$6e(0Tr3?BQ)DWv8sYn;}(~&NyAaF&vkx;7Z#&j~E)ULUJvT!NjA!!2o zf|M@k3zI1^GmvmJ3DM{RKFES750B?huv~gU`WP;TU2$iQ;Q1zvn3FExv3MY6{W zmUFcwep>Ah3|yZBb?oq!aiKxa1TzmB8mvPPhsTW{Lsm2Z>$;8;NfR^2ZkomBRQ=Bx#7&!@i3) zi-y)Zh=gU3Pk+{ZXS(Llw%RA)dnP$cU`PW22xC;Yu+}?%2oNG4U;;xAgh+jsz|aF> zY-+;X9CJF6M^E9Cj@FR&IX6VXVz0<6d<}Bh?6;8=; zjx2q0TG2bE8!}|+Q!y;)Ryo>fcyUF;Tcg#b6xm`IQJEQ!wes>@a+fl1%XiYTFQzI@ z37w1y*%BJtX6{lt?G;_po1A@UWa_0@wTQY?Z&}#C#$s~(4vm=0Y3VO6uD0JfYck`f zh!9~dq~n8alQc`b!&nC# z_Z_t@{`R4m$rr!>O7u5rEV_fT8%I42MEIoX4)zqM%3jkQrW*Y%*{7KfU;Uv-k6a z%;nRmi4dxd1rvf#YD=4#qZAuVX)wh)3i;JwD%BZrEhw?O?11WPI=W}q)X_bLdk0AP z{SFoIv!Rl7+X%OTeSi)rEfuY9<;@cT1bB^jvW)_|&n*f#?VS|A2d$^IlY}jei-8W* z{rC$J3alvkP?S6|Rbo=pf#RUA^MNRNWK!a))d|%0I}Kl;FW3ABw@<#PrM;IsV*L<5>5O8y-Ti-KqgiZ2JN3rl^p~5h=6GS ze5&kT%4}oe;bjbzvH!aLAiTP356GiqCj?2xq-Y5u%Cpl%lU(YJEWZQEd(|fgk;@{gCe?n!tW2+bLyWGAp#Lth>&&1Qls91&~{@+_yThYs8Ev%k&9%o{DqDz3rNM< z@}PxCgec5mpms7a`E6gI)zd<1eF0i~Xg9Im6B<|`$enPf#AVynX)i@{sQvZ3d)Z;Y zYx^&!pOG!UH2sWh`NZ_|$0rYo$JWC=!BN|ROI#gKP3O7=2@AYCt^|_M( z)Mk?^L(&8t4u9Oo-4cJ2BTbegO_1uPHOv?$tve}*uVWH9i#jxVDkTnL<9M);)XEof zVN<`>4I8iJe6v3?t_OnQ7$`QKdk4H-3qFM_b&)Hc(^LVj@_9??l$*+P*pg zc7e|noM*0O`+2v(^e1UK--AQsI zby#mgn|^1y!((|9FTjb0{|k#8ItdsezNn-+aC212!}YG1y_O;HA8{;{&N>dXFydrb zlVco=3Gq?tiRB$#?;hHQ)0XVv0l9F~FF zjrsh@gpnz9mAfy{o_pF-MeyOqG_!05dIxv70^Zqv7MyNBtLA<8Pjh#MKe5*-C`Z=V zsj8e1=j_JI{4e=cLr+m|@gr149aNZfIM;yGF&RUm6U_1OxKZpvK);E&(6ZuW0 z{m5l5SHDpZt7O^stK*l*Ph)z=nM3UbDssXd!ON(kk#~-EwUIR9()y@SUvf`w^5X%6G@lIh z9e{w;;Mc7b0Rl~~0DkRid~YXm;hH_A^*Hz5jggq4v><)#GlI_TlMg zB-umL&oJEkr=MZC_f0>;aPOIZzI*bp0|;EzgheE`iN(BF${V4!NsX{5u6MAu#^v@A z5n6rMS)F+a*FU(H%*2|>onyV)5?V`&6kaP%QsN1LkGyZ2%?d>!syAw8&(q~@c0me%%lSGc9*`}-$vZG z-^#BD#`dm%#KS%ONkr`Q+2*ucuj_37w2Pjx3Mjmc7ieUSm)p6XUWhE4i_7)o`WYW)d*qGQEMP7nxF*tE}M;@te3x z4|DxK_iPUHk=5#*DBxUV)06d}Etz5UiS`z)WcDEKXh z+F$;}r#rlzM`de&iDwlwIEkyT?I)(6!OM?NKZBPKOh5nFiPxQa6 z9tfFP6+{D2^UM*zA9p+3U!|2cDG==`@9%%)(|O+Pec-|ZwLOm9)m!L1hm_jx!hxTH z%uk@HkxnpelJMLQ=O~2G0#pt_$kYZvq609@E({hNj~xLhumOH-4^Hhhh}*cT1Os@jh9`&E>tf-C!)dsA-~=#4AU zR5S(hq)QAU8;}9Ah2iIoqOw0!MHUFyX&9oZOgGugUtTVcm)o7UwL8D7J^dXw)2&U1 zNGoyJpw=jS!_9{t@*{(BO&&UPJRLZ8(R*01+#3&faJQO@uYS)RcSQCsI{4-K7Mfc4 zE|#--I#&O^G0yY(_P#s+o|iwWZuTLBx7*J-vJTp>q7mas&V79d1c(A(|K^sITmDQCCt}Q z^1=`4>D$ZQ_poO37Ctm99x2qk9ddV&D=h!`hdz_ecxq2@7Z^m?1$mDp0EIG3Pm`%>Y{l=);^O!hZ_};qN`miL>0GQYo zL^xYT2_1*|ztF7?i>{x&!KTr#ge4$b5o}F5?Wr5WVm}1z4T#)$2DTcdP;~kWpQI5q zdLmF#F$|KgJE9`+F`raOZYioP)=|~Q6HFr?w!S)15 z-~O5bH!phkh37g|Lef$sC3`@G4*@0G#EqB{H}C{eX@akG@ZSP*GE4LQbmzp#)${J zd35{rc-d{m1cZi7FR(7-DV=$M8Ops!M(&F{qaK79*3G~_1>GuL@#j9Uq7(((vCSqJ zno*quX)rpEmLZU>I2^MM;=UbFyuj0uiQC^%%9G~Kwd*|BeAXzyr*de!6y_x*XzZ+v z{#nmgyG?9~8BD6a3p=TZn9l?mHlJ!+Ej@EVwTV5^mD=)gmWqgX9Db3h)Z4ld2`SISO^`TSJbR+_+(u$#Zx84vQZGdG;^uAipNJ5S#A7)u&F zVBrnFluy0Ja-alzAme;xAAMn}M5ViOU9_)*)TQL)R0;StmK98OKxB25C$B4v@smt- z>-uK+0Daezhy}@_ZyZL3%^DOKgSg)OSaHXRS^FIIO$kHYi^$UvB^1}YN~Au6K3ck` zOG?GiqkI)-8kfDJ0(i5-yaw6b-dqfS(WOe9gKEG0FvAbAovW9^*#4Z2G3C#sb9sO;x*XExx&eM@}oOUi}qD6dQj;~yT`xFi`QON;;x5zvcSmY zYBV0YM>DCT5zRxv<>f^&Joo-WiwzxPI1YAhPaNHdFSEyJ*r=c>3r3T>@~gmc(itEa z%W}>T!OjCexRd!|1+ZO8kGtBxD0E)ejGPY{M#+W5y941COLoTdK%4%;ze}svTv?-v z0pqAk3BFC4j@yBJA=P!7H|`Xodb(5a&FM~US+`S!CJj>L5A^<3c8b~FxKk)9)14BN zry#YkZl_rL9HgOs^_>co2~<0G`quQQSlgp=-5y~@4ph9phPm@)nYZD&?u!JcaBB2a zSxawl1r@G(_(|A;KY~1x>})viD?j0@e!^QodW3=o*>K8d^n+);Vnq=60fW7w zdY-ETWIB$1@}#|fKKj8hnbe1$IjP?|TyO+2kDS>UIn`H^WJHTJXgL#nmFyKht>#oM zC-^>xKwDEO$-D37~4}K1KKD4#bd?r z_mJL7B!tcn)(8&wDf5RIqpn*axiGLztI4Nw{o&sa(Pk`mIy#TBaX5i%M&Syi@;NoGG%27J{5{5$w^w5xw~ru{0Uy_ zS`A-C53IJSH#YD{IBk^HFbi03gq8)Xjdi&VUX-V=`=Z~|1uFSF5e#x>cuG~ozBbMe z%7xg)w+5-l?$@Vs$4b(x>g>cZGrq(G8Q7)OZaeJ?G%o}{9HdT1JWI?T+y3L4eCSGW zg%V!}pHAdNn=++}eb3W8qIy^hGcm111n2&qr~q!$o_QZg@w8Yd_Wno6SJ|RWkkHcm ze8tWui2xZ@H`w_gq(>x?;OsK!kTjt8@O!mOI_riOlXU~faUH;^3}b=6u%?baH5MqD zreRxOkA_dMYWeWVqWxBW<#X+kpXK4$&%umz7q(BpmU{ki$1|+bRXlhUra}1SM6t5+r3C8p7w@me3={)5DlM~`6`l^{!VHS&$xTipviy~ zW4aFfVEy#p^7X;+^RXUJQ=mpDx$Tqj1FbBxv55QOpO6nmn9=5S>$XY5;@r7yp4;FH zU+)H=I;+9ugqc{N$LE%|^3blvzS#DDDuND63zo%QU6f19#eq+L=tutWU;O27JajQT zx(Bd31l|9GbGrw4xW^Pm0w&;ItKjSt5j{*CYd^~e9i&;Acf+wwOuIq|Lk zFdyx5_dR8I_o=z1EnUTM16b?(YIcbwwwY!b5|pR1l%32r^&O3Z0rVtA?J0JR2du|m zmbT+!9ti0@#Q;If#sEf?vT%o~z`#^DHLe0z7~&rGzn8R<+gXiwBUX-CR9Ql;#XS^M8s~tK9uJ zX?v#7)(xbdMp z_^6J8t0HqbH>rNOSfqIW*4HDclLQf*@ot z68e}M{&`)2oe&0WrdsEpzwH{QnbL`jL;C_2WQ(n1!#x{G3Y zLGsyT+*tU=qcWR1#Z3+aob<|=%{=Ojdu708SLqwoD^3TP^vZbF?t^(I&V^MyRp}em zt9d!q0$#sc+D1OLK!n{b?J%uL4>)l6$4?gRdBacY0uA8CFfMV*FVUvzhcQ8^_L8$F zeR{OtsDUu)GtC0%B#wrMtVdN4MRn0cY<73#N+1-0k5BAp$eV8&^Cx_A{jA`3lRnzb zac~PyyT(g_!Di{|rfwlHnDhx&4h#;L-wZxrOiEC;grT}>DPmlh?tu| zmCPUA7t+TAssMaa<-KG9S*H$+V^T*~SMKOkGjPN~yD0Tf!4B%rup_{xhaGv)gk3^N zU+XmH2{UWz?ob0J7!S@Fvz)pe<V~$P2{p(nVUkuOInHqE4df01GZ#-}IKSEK>Ar&8tcv*yc3gp4v zz#5hzJ7uFlWJ%skG2hH()nz6rqy1)bfe(LSE zvz4pL&@9~I&&#jLqyxBIs^Y}1&4w%F=@-?R{&2W~kIBJi4=g8j43sn%f|4zsC8NVS z^zJ{Bh33!L4$o>AvwE%6cI~Y=Poj$pfg2Ox4!huNQ6Sie*>vWunPYhhWro3MF%pDNu^(4TIDYBH;N;HVLLN)k#Rk88$B)Avu}& zW!L4D6gE|~M}7yqj0~J;k?AQC4!-PmAcB`$mx}P3Go?rDL{fu?Kv!eLj_2z=`Fb>8 zU(_qW@2B(ixqN*lU!Tm^lll5^zCM_*_vP!ce7!4Q&p@24jU>Vt)WIv-KdTR24*ty{ zM~D-}t?sNmL9(SF)r3t?&aeUng+1YE>eD~t+DWAN)C{T+HK++QvSw6tzU8yLBPM8~ zaGMy*(=%r=7Jf-^T9z$lxyRigzbMmeuB8d}_tYS^uMH-&dWr`1b6Aql>Y16d(5n9g z)2CBo)O*!lSkoQWI~E3p6@fMZLByDML^=ZtjMHTrxjOC}F73j`}4z zB5YWWcxqja2wi86Xgi7YWrH$7W-plF42JuL)b12-NbTZPZj9--u>`{Yg(;FJbYoJv zh3L}@OU`Qt9rr2B4uy_U`FM;;)=2if2}sH%54%4T^Mschtv)8H7bK@C^E*saNB6;y z@aCRUhQNqp<7)eO2D#$X%|K~(aoxHO9+RIIyA+PR3Tu_2@gKTGWPn;gT{@W}IXg-7 z)n5fgSc8M29GE`JTqP7G`NJtTZ-Qlq_z~i+R9ceYzM1H%h-T2?R1UA~;p)qxO`{nw(E<|B z2gDQN3!zsmlO^cfj@t#~rnCGCI*uJY>G(5Guj%;mq~ma14#fMKJHA8t2xEL0mBZ_U z`FdZz;_Qp^yYlt+^hi95wQo$9x2KCyC=_0uE`-ncv^!nY3wSd2j*I-nQ$e|~#=czd zM-t=8MzI~Ez!q)w#<65s5t0SG7dVoLQW>R8j9ajS67nm*X~i6^0NDiDq(n!KONZxH z+mfoC*HvT9Ylhjw`3@5yJlMR)!B&G!f&qM3HW}e0>Kde%I*GlC<7&H*NBTZldK=^U ztA`$76MFQ2VLj+APoTGaF7!}(GW5;^ERfh%NE>tqg458ORNI=W5uT8%Ey2VBdT{-7 zpcgO;=mi|tLhrn!Ej%w`_u4`{1$}CH2erm;KAq`nO3CpQHPty@s+Ay}zLh7|v=UF5 zAI!9qnrbfb)c-bl&)=rso1c0QN?-Hde5x5=_qYB%@O;oQ%Q%BeRQCw#Ky?Ck&z-D{ z>aaANbfUV6(`HGLyDq9zt>>4y8mMk~$Sj5~ma^oqF%Pw626mgzd$&230M>Y zCp}M7J$hj$IrpA(?z#8$yIb9s_Bk}>DzwH;jmBzhPfc%?Tb4>TR;o;) znsTZ%Rhok8t8y$wQ8ZN^+<*x(kDwxCtORF9lQCFS97X|?2*$xJTVQ8KCL#zh;0%H> zMg=A#uwX@dKx&4%6GfCB`OZV)(_TKC9t#5tr^{to=Oi8ILB8$5y({oC)tvJKYBl2wyaZ>G2`T&rb$x{+UiVjQqaoM79y z{ERbRZ?{vHX?b;&s#Ydzy)pjadO4DVL3BXV3eJGcS(H@Wj&{ z1iAjvS<=eg=zO5w(6A*Jk`^lGtUafQtlT(~SkFBSitLjEXH*e-c1zeUgu-GEVN>l! zi#8m$I@6wil$^PAQ=X&=ZWn3)&;HC7X znH;sXpht3QKDlX!BQ=b6zgFmy8O7;APa1KVP$HTUgU7Hh`w06N@4t^HV?5x5%&J@3 z$MESt{baI-u;mIuCYQCWA(B_w+&5;Zm?m~WghiEwZOh+rPTP$nVL%D7r->;t{rrGN zw*jtQk-)`MTfsNW%oR208<6<}oC0xXz3h2wJ zejSV&wmyPxz9b*y;ii(OKn{`f3{I^8R6dn&0Vn|qbsMCi!=hcT!eW(=0*otd$xsy^ zOjT6vCm7~&KC4&)*|iz23(6dQn_H20K}Ix*T);LceDrtaed`Gjf(1oR&-Z2Qd5>lubXI8j@1CKd91iDlJtCLbv}wrRz}&baI5?n*3uV3$ADD8N3&5 zY;CzQxf0#j+Hzwe0&Z+=xiRT6xiQigLwFThrA?`FjACVtwaQfv0LGTSe|9ZI6j0za z*x>3~TT-1EKxnN<2Tj^XOJSPAPZSg^ZtC2t0W;=rDD& z^_z>?wQVt*@_QY>BYqqHpK-k(dj2T%ytYUPgl3sBWU(15@u!Q*V0?9tK_;zy#{u z?Hg952^fQpdUKViw_6X_y{I?3-V`USsdty|gqFjQhN3L$JrSG3m6b=_97LGk?3Z-` z`4)-9q}To<(c^*X@kHd5fPe2QZXe?TH0ze5vq>hX!}cQ!>J4UZ1VQCkn~r+#y-Z`1 z<;M2r#wIkf)Y#tK*krje%pzT5dqus6qTUMZ74_z{i$uLQI_k}q?)|elMs+}8>b=p- zwMaIstZJ4_y_vKh*6tS&3K9v2VA9Y8>g$WY$1;AmF53?#;{CUp0sNO4+*r`>M)7P| zjzPLFY3&X~yj+L{xRbt?Ue_h3R_jxkB-J6uKI>-adM?~sWHeL2#LcNgfJ(Uv_`fX&Euokj~%3qpd(0%vIE z9RdA2Hh^LPFk#{{0CPn*m$Ml{nQ?c4=(`~*EWfJxwlb?ZODhFo2=uEX}`1=re7-=KjaT%pSqZOovqXY^U%`tJq zMeRiZbrq$bSsIUPzVvutk)#3-^cD6ilMjbr@XL-oEE3+KXYV%6n(JvxC!}jA7f)~t zncg9Vc%md;VFM9LVPxqFEY_m%=p=PSLocyqigAatl9JhH1_Ehm!F3V;X#5U|e_A+r z=9GCIVQf8QIzn_L({ad8G)ng(hnPb)^?LOVVJ!#!2wtD-bi>@MkW5Be4JmJ2yhgLd z-_o9+y4iR`A*5wIcW4r|uekVT-V$ny5;UVTIwdh@eL?@^A+Tm_OBr$Rh(vu#g`tI{ z5g^R-V|WQFk2-q~^4)M_M);wA;svZw$kM5i5iqYOh-i}8oI z*mueRpg{gIf2283RIz-4;l)7-Xu0`kLfI zt|S)<4U;CDaqUPn9A(iE(}#q? zI)uSG34sB?;=F z#cC(e?d}jQQ9xe?04x>7)SYqMCP)=ZmyLR;OTAgefZ-XTFcs}Y1;#WAk3i{f*xBsW zMNzV0WRo?r)_y}6x`(0@#yl%Q<@A#>8K3k+-s5X80cMQLJydk^HlBau?f1n=eOfTp zKe>7I?elBN3*_`|G%bp7?T6>0F;SDwp4zyLg_a)5OGc}-MXg#0$^^sZ&<%)kwQuk# zugrlu2TcJa;5>%k_CR+HBS{FBCdX5DN+7-Xmf+?uA6Uu|=WN+uqI+FpglR7nfbek%3)AM$hf)M*6IGvEPVT8$$fZiKNC}kcn0l z8>12y^h~*LVJgZ*xjEUu2?J(kX-|amp9j+tE4val~%7FeVE%uIS(u9vqg@B&@DoMmCn zmIa`R#}8(r0Hjx`*z8+XZ1#a#!Awwb#7y?evLN=buU!K}no0X{F_X2#OkfY#CO|AH zKOHmKpWoiQ`ZmY4b#Hrjw-d`NS-iORC6%LVSCk_&lc9{8VDmz^zgu#$m_&&$hkbGsk)k3vQs)A@LY+)AeOeD7RFB_jl4ozgYNev+9flmDj&%v|Fb3mUZaq}h)FYz^^XO{Vz z^I2pwasVEt))iQ%WRVio{g&BlG!&bkX$enl@t_v7a-SR6m^#8bwz zJD5H0-U|5mxplTiV-NtjH4WNurjQPOk{@{D34Q>`Hb3}$kMjfK zH~cWd!~B3V`}u+APa6z*s@mJUkSQesx>7O@Q)!s|{f>tLLNYCSp?Z@L(&0Os%1xN0 z+5AO{?_(w+Q>zadj-0HUfq&y4?^OfRFTr1kZ@7Y7DcKReb;P!O#@JcU%Vf(}njTXN zW?{F^fss>C~~F)v?Oz7=Ww+tCJ8cYh$WPeV}g_)5hFjC2g#qwwf}WRc%ZWO~F8& zS1BB;2!Qf3KmYKPMO#dN%-S)o-sPf(EZhqxB{74EzVuf0DikIudDg3tF*VH*uG#5T zz_^h@1<{K^G9e#Fg%fV>s!?K!O{VT4aBOR~<8iq)RpMT>4#d+#oE?W@pYTq*Or#XO60zMXbxuGZDY!Y<$! zDA}Xfr>MK15m634*##ybVkxI#*r@xvL^)NutCJUV7P%L87EL>6QF8TXXOT8221bH~ z66qXW*g*lc3P*ocu}PiP@=*zQ@)4a0x2H~G4Pvh=UiewPAX5Td%`v}38CkN`2Cf1g zwCMD5&FfdHdHv!w!~4<9RI?%JRY6%lR)zF0SsPvpzsc6~e)C#kHE~l~L686f!6cZn z;v0J##U=i7{JUhx;kA%P9dtGRpiqeh@xtzXFpWE!wea?cm!>U3LT71qiTJ{NO zLr`-t+)4y(-pw68`n&icW{RUv#f$E2ApHonmae28LpXZ(LDI;4tHeL7ami|Lj<+Ri zInA+ykB%gh@tr|zh%Nv+n2h;ok0@lFc(CtbV-i-yY?&0>l$5xm^JTduKF60u;tsnC zF8#de%c-qo;vs(n9&Ex(uBkj-S8!DThh;ndbj3Agp)>lB{1Um3xTd0yc1+p;4bbug zVU|HD!0j$^8i?vqntC2FDSO1zA+7lFJ4n$^V$tcq={=#dGm|%hKt2zG>fVHGqYN^Y z*<$~GNV;M-*^6=MI8McQ%H)R05&MOxjgQAt*aWq|NkFuJr~~4A7dS5=*vJcbLnruP zDNNn2aCG915T5BMw{DG0%4?bd>;pNG!V6y>(-*5sLPd~E0SppHT?Qc5n%*1xWYlJ9Fz;Qx>CQ=Lc>m>^?2dPm;ZXMrke?!x(-|Qn-lpUAM^+D8? z{af6E>bcs3=BoVGXAv!lrRVo+GLu3l7Gvtta{L>o$~cIG127H>&iloN?CVhFs!pb= zsCYOV>J@v4PKkgXR>oaUc~<0`N#J4WEbB-@fqr_2?Bl3q`p#{)G^yHJ^lg{=OlU{V z4sR}I+x-7p{{K4qv%&wz`2RY9ph(BC^ux6CuuT*(rZv$+u4c*3?@`#SzhA)R$uS?v z2F$RC9nSF|1nOklqe9tGm1N{^xCDDTWg%$}rNK`32g=KbJ%V^ot~O!jw8z-xsU52{K3XjldDB zlB#r9=SJN$a6qI}s%?YII)lBG98_#7oyz$O(2tKX;R`{#$~q?N@Dfed_3C}tB)&Q_@rJ4S%BirR)@rj)dSuOSp8DXhptrfp^MiH{8G(g>z(Sq zFtv`v>aRzVW@r|G2hH`uWhOka`a#F)<4W}y&-aNQA4)oSl*zo{xDY1qokF%y4bA9f zyD$ElG)}G@Wu=I|w?o@Jjhl(jZzP3fIQQOF&u;sS;xDp)f*ggCU!#tS<-sMWDx%?F z!*@zR-2N~T8u2mA;#c&&V@qW1k5ALyMs*9mQEy9GK#ok~N$*i_QfBp@61{C}4Wq7K zClc=lZ1aI;t_-&2fTL(9sDK7-{&YWAQ0I3GE4dK)!|IGOFOk|amXT$jxuscLgUA1XPz`8zm>;JgAC)!n##j_{Sjiz&oYFWZn% z)1pU6UAPD7PLfa)7_g9pE<`;<5MhsTN40u&Tmc+=U=;Oh3UMX~p8 z*A+6V6gU=0b6Z>A@6E|FhofO=Cj+TZctx0I{Y@AY$|hHAB*vq}5>b%E^r%dlO1jRE zH)G(3F`{W}sx>_(B^}5D1J;s!P+kBKQLc%>Qm*}etTGLChCI&iVRwVWucYiuX%--2 zVxw2^RbdR>k%1EkY7ZUoEP$sfAY4MmyLF2=627#ZnxBLzlBQ6zP9@0;cU*zw1*uzK zC`YPh-ZxBu)`t5d*>YIpIS2^za7ZU0I3nl`&xqGxN;WLfQvumd=@A3*E9=RIjBMJO zrzVUf(w_7YT|-77zziw}Ba$qORQq#CwfcncOHDqJZ6Z#4gM;qXdWRZtwyy>t;EN;@ z@CJnwLGTMonBsQ?NkEo|B^v}|>N6%bF9~b(B#%im;*Cy>Y0YD@YNf-7gs^)%W7yu# z7^YUicA8JJz+PrYy>K5nr6ML7-5??j;b5U{u$M2)=ycES6037Oq~CYiH{y^iYe$4+ zS(|8br4u}_jt>almLPF*7 z;cKB2EdrtJI(6@efckIrs(Pm{8OH{o+tA9=>H(-FKxOY<0;&{3V?imP%Gji}YoMYw zuonEVk}baZ+WQnvb-*RzVKR)M1#?px^?*#5;QOtpt<1lf)*coBkPb~%eRDXKW$G=- z>e5cRI6>q5Yy&HPj?-IySaJF}hAByQL7NI?HmB^c@J_;#t>iL+gMOI6HK7~)fN@H{ z$6Cj-Z3Co$xJ4Eu@W7_-t=0*Ww8)CUhC*;NAGVcTFZ-$RU2i9Bjo0`Hq=k0T|1gG^ zT$O^feB3~~0Mdl=CP?S4kQ4!Fx+F-4l5MIJnP0cUNcw11)nQN9OGy6O#fD;^CI5?> zn=cmp%yWR!g^;W(E4dXlJU&2r?Emfc+fHN^Pnn3S(puXlTEmfve2;_M#vfX<8KMO)t zG9w3swgWEB%3Jkmi@Y=t|VLRxAOK<=kbH=;txd zv`Ygb74lASIdof!a9NFN0djz+CdO+9L1Df`M`I7-`0o(Re>o)54936Qm{7S>AYVB; z0sXQaXgkgDmvD2~Kcwx3t;s_A16X6d>o+pv)sgMyG)sOv>?xz~kE z>~iFok;~4w#1 zxUeYL{fQQvurQG^Ex;gSRXV3hP5V@)gaQ9}RP_UF@@xgwk_&r5*z=0au(_eQ10oPs z8G-b#LI-}c*xCG=UO6l;_ur@-LM-cczOy;5iu@nRo--?1keIaUy{)~r0TK7!EqseD z?>>G=xO*SjAc7w76JM5qkPfk8CC+H*1_ugU0tc(U5-rr=^rrn?Oe2?jFnK}C5`~d@ zwoDFEw%V9wm6}=1#rBA#>2QVN^`H$IYVbPoCCd8=&$5E0JtTQi!2&hJ{5MXasczPY%LUBb-Q1=!X}3@#^^rMCn8I@Ph!FGmNS=U@ z;ntRxG?Y6nt_5B9(i0vCV(gC8m52E0r8T8q-fDEHPV4%%WJ6BKcX}rw0}&q@i(Yv% zuPZnOdMP=&l7hrvOzqQ88f@>LGc5>A2zb1HzeJjVE1kb{-m`N_t$EgXH3AcKa`^IG z3FK+#lhoL%MKg!1#LS#4-G(H1PtA8@BD%{nLp2U`{#Lb(u2G8IU8;{>ny%n)=I>=S z)6Dw&`}y2pwD<*RGvZOQB&m3UK;6kQ9@6Q`6GC6*D@M>YhZy`J@uMwNJ8|L zdSDG<{JC+p5owv_9as_Zs=NY$fP}oDV0m|Fnpsv|UgpQqDvY`e3GG>Hu|l=r>u~>j z*4bc>+Q|Z6uT%BW3_^ySD$qnbb(86T-JbrTymv&-5o6-Z<%o|Zs^`V-7ig0F<`P_@ z&Sd&mEUCQwL%jS$sg<739Q_}j5flLRJdZv9X8!^(=ykH2`{7*(jy%C8fz%ns|GcGN z0rH^=5F{e=rOuaCr83m)Yz{2DNpxEWTiTERPVD)dSaw@)KgoSN4A~6?XXP=1W!WuN zl0~=iN+p)v#!Ho;I<8a#BBs3p;C9+800qGMw_h8g)M1!8LafI5gDg@iAeH!PLg_V&E zcbk-$jm0ueA>tKl$T?mME3%D`^>VszC*adUqfF|FC?%MyZ0`I?Mp3n+KD=8;($@4e zR8n^1kQqlq8U%u@41|}?n^Y{|qDWY3U0CN;s|@#dQ$L-!D~L3qruZ)s956;BLsac^ zeA=IW#!$H{nQl`rQ^;)YY?3)*rw4g^{ zZtT>0)!nJ}Aq>i`3`(6*o-CnBM_n~i#%>%)F`q$p`_pe$>3cB8@$+Et>-*tm-K!JF zNL}n54H_O~`A|1p;O9vH&Fo!*vP|rhiH*(S(nllA@>4qvE*bB zYxHe68O$G%lm__ZqUmb8_!bdlA138IG1!D}D!!4YK;k5rdS;__C zrT5&J%45Ckw*IFB)PPIQp*d3I11JB`Ikcb=mc74e4Vsfuxnz#T(x=oG0N_Pb$TWK%S@vg^m$3m7L)6QRhA0<*7a<^ADVo04t zPbAa!Spi{9gbs9r$q5)LUl2fGE2=ox&-)ggWzo(z8V)TMJz&M3<4X+U!Ft{kkmI29 zZLSXZuuxUY(hJser}Z^J%GdVIA<~6Xvhd9nngiKpO<>_73F@dy;Eiak^hb@&8Dwn3 zZ76^g9^+?|zO2Ir74B?5qZJ6%#}_zWj?*GDumM5RAPQnrwZ)Y-6O#*gYe#KD%Z_@- z6I1UGiGwg9U@w$)yLyzVUcAn7Bf4+4A>i`x!k5Q0fek5IOpbBh#Scy^DG?CxJ4LTU z$iLdo_<&V9V=i*h&e(?#o!RwrbcTEYOPzt6EOmy1$n9iMRP-lmddFDhjtZfusaXPKqo(_}+N z8AbWzHyKB~G??4@UZbdLymP)!P6ki=-Z0=pi!}8@G&ObJ3C4bHRIM%YiiHZ1n2c1_ zs-yoJ{M9iU0JOqr^rbBuFoi1Q4@&j`&j?YkyEZDwj-~#KrUa`c%dj-iBz$=}&f*tn z1uK^5t~7}*hzL>GoP`K1Dl)l2rn-zK@k;dvw1%WVI5Z_9*MaDJp`tzlWYE6&bLWe8 z3nf7m7e~lke!cJdcq*J!*NCz!Hps(}crM{ZZ?bcea$Q@Cw6~$Fcj&#l9vfk}wCga^+RcwPvh6C^Rvdl_Afmwj)B8$Uo@eU4B615$E z*bL$;((Y$U4czToM7?CYqcH1_g0JSbJE&Qyy7GuE!4k#-d-db5@T zH(d!7DCcj`j!`-cg6C+M&Vr-LWBp&0?z$JY+YDt8x7}t}Dn{+92)oT_*=|Gg>sTb4 z(e>cV@Ba@^7X1EISr3VSXI~!^Ux)j;;=5#1tCYz#{62?S~VC=C0cZFUG=65q=P?kO#xuM$rnU<@Q zR*B-;6w8y?N~txYNM2TE2y%C0i}$M5!dTjPYkKI7x6D@Gn1;z9RSiioEfbL%F4=QC z(hTyY1Pr7RR>je}7l{Pd1!bNMZpL5(evTtD>MC#{;>QCSXkH=C5FCaBI8%(7v3^30 zoG29fBBIZBQ{UXXsczt#ET>T*@>;?-^v1AuB3NtPBtHgD4G9pPP$Dk|K|kTeP~tc0 z$!ex*)W?fuu_l3-61FZu%kW;N!3q&LXR0m z6StT~3$J~7lt3L^rUd5Lz$`eJl+2{iCBen1QN$y(wU(bdV|l;BE<7={Ge$RcK=uR4i?5rD8_(mD9#1E85uP)oEkeWs|mN3_GlHuB619Bs7M%?uKZ7)wW@GVU(i@guryk5ShwotHS%uEXF%T*i~GxTb^^A%7WFF9Sv znx@7ONVYy)Qdg8nD$Q>s&9Bn~$J_}*4Db^&%YAk9KxP2lZd)_)6;TJDJzgCQXU@Yo zbNa|LPPbonWGxXlGKe6YIh;w^L{=2Sz63oxba--{3XotCwwn1wkf&~%`vB`cy{jQ4fbQ$K1y@5^0kt#-3UNV@9NO>q zs5ckEo8q?HdbCeAjLGyDOUAt~1qeu%bgJ2&nkQ@0>xu(!EQXYg&o(r1NG1k;_an0m zC1vjO22rdX>KI`^TzMaWb{@#uuWAH*6csXq#2&`3SsEUx;be|y@1nLBc=MAWw|FQ$ zmOMW?sE?Q2iBU6B-%3*AM0cp^Fp<~%97Bv^M~?*JA#ar%F#>gGxt|)oB&HaMQ&f1E z2mLLD6o742ZzpgbCNul3=RGr$gZm#n_@(i_RANsbM?4o zd`a_-Poj_>V|3@MWCMW?Y)HPQgm^0!kk7){Sjs7OQBh_KQAU-q9)yxxV6<*o6S`eK z^??N@?TPvqnw?*w1XH%Ol%;T$R0)MLcqqr14Jwgaa4jI!xiA-LJEbNj(T1yGxG+;D zcc#K;PoQZ`=X*j8$}UVL90(<7OR81m7z4h0+MdvLOOYi%@Iy}){DS=0Ebz_kX+N#- z-5j)zekoi`29NaN-U~n6yYivxN(PTDsX00E7`v5J8-n&)7qxEhC};JlhmK5HYrJuK z&6%GBz`R%Qj(IW=YgVm~4Ie@}4-MN@i1RD+Xtp#=zSCbK?<#1XBky6Wh?dzPWzciH7O}YLA<}#j!bZdmv3aNKVK!qs0vgd2@&sVoG^gn zMWWzr!*XbrW@kO^(vY>L6f8ohO-(aT zgfgIvHK9Xsm7_)sA)A>^d3kb7@gV9TLjK{ovN=F^L54&HVW5?`IGegC+A~vjGf3~= z8r^a6k8p(`jVsZCd&AbO7^}TuXV#??LO6s+jj2|xqlgyiIUY+3j5U?(Owoa?8&9*M z1GPDVe!aBNBFD%DW6k#>AH{O_I-)!7h_3sAaHLP3#E>f#+zO&QPAIrVm4SkL^?d() zKiyQd0D`sgI!!z5WocVSs=-@2_KOI2H8?JC|56QC z85cMfPLpXwT}^R;M?){%61vH1*l@s1`}}3%0!h4Iu`d(j2G|L)zryR|K!4`&JwhYG zzC_op7$Mge|NTw1gH9Z1A;;fehoC#B=OCzdovAj-HNqFil**^II4mO6B*$vxU>2&b zh{d?ob|`H?fk7yA+#&EaN%!V4WTV~bW6Au95*!0V9n zj)b%S8V8;z9ug845hu6K$KWdD5-Z>J)mt^sYa)DA`>d`0LOA%9B2L(0Z1mGU0dLoV zGwLg%MhFyvH+wD=Wdf=yzy#Kz?ZvpI{kf@VSRo?}FaVIX@CVfs5pJ(XAmc!i_mM$S z5NE))Q|7QhzuW}^UgRytF0T0we&~$CN?|T<<%dDs3KiV2OTx>XJ5Hcgzy`PqyXCSF zOOEirJo;d=z`83iul4K#D>_;H^@#l2dPAXx82qjL$bxZG@ivA96z{~Ydq#ZsK!j!l z->nq1=*b5>^TRP&e0S@di91DuAQl3UfPBP1U1SDvco3|0HeE2w>k&t&&#}e(2!STy zFzo5{TxUp%7m~Ltf_wZ{qZ0#p{#N9Der^Q-{Ji<9*`&6E9)knI@WcoK_I`dC{4^M+ zT1@T1CdH=6&HxyFgEikFN!{D-TIQTayNff>^vD?L9iN$xvVwpJjI?32i7#Rz8bV>< zo!hx9;;P)|?2ehYc3mZRhlm}E@=Cl_%9KtiR9Y8{rBZ3xDkX&zOSm(2YBe)ZrPEaI zsT+m=#Znw8w{h|mBRSC(bF&>IBJg3 zETZN#qyTZU6dC$SyriR|UxlL!SeQg}9@Uv)ir=h{idPA$>D+Zse^aneIn>%h_+z!U zfT@RE=!kIeJ+;rRE^1L58-v%4tKvV&Y&vfbJZsUJlmVF)FJ5@1MBfVgO z0GIF%rSnqd$}dYiB4Hc%kiN7Qt8!Iyd4OP2y_r(1?Y~D(AXbz++2}Nn&0bLy3dfas zN*z?rfHA4X>=g9sp%FJ&I-{JbA@{2tMUru&V`{=L*&RezdaOw#+#+-`3PcD=?L8u6nyBV^Dq>`e%t?23{u+A>Z!5Qrlf4!r|W_! zxiT~;s@1E+(Qi42|ZO3SWP zi*NdSq6zWZ7EPqegE*vm5^;!!Y^jciUOOG-(09l3qbAzVMCE@xRUL|;E=;vUM3Uk3 zpVrhy??hvU@Dm@{*u)XNqx)~JKTH40;U{GMj^o)$RK=l7CUs9gjMXQ48ks? zcMjV>_~4V;qV-cWKojJ__QnLgccnVtaM3DfiiPP+%y2%E;Y|N|)ILJAV*SCJxH>+E z{}Go#OGFMxzG8-8`V=62Xe0_~@KI@uM5?1lazd>-yhH<;6K>&n?um>Z&Wk*Wq78Dfa94XD5GsIl3f%%0Eq(1GmYj30Xa$u}azc%$e`qlK$-u#FE`)7XS17H00 zpZty)nuB7;$(HaI4UW!v%&a+YZi%2L7y0w+a+ocIg}RmKM@xZ*qD z%wP#;F5QV;IHOLae($tZOgc0tPkQQmQ<2ZB{bhjgy24Z6W8&Li;hqT$B;+GF$8v26 zg({Y8!oWps3l!q9P^hDTN?tqPU_zmQeYyk%B+-|*`j`Z2PS609EGQp)x(3DpVY1eG zB$tGLP?l~%s;{^I=4bPGNF%5rkVj`+Ysr`Lr8nr(YkBkwSGr zbztZ8)3r?jG2Sn%woMnV)OM~vRW8zaVeOQpXfZ+!g~`M-$;jeFLZWOaMOSvT(?NA!w*{ zT^0_R>;)y!`&aa#K2!JAvX@0KD4k-fjk|U&nP4jKf96l9;XLg)?eZ8557xu47@N|1 zFz$j#rg~RX?}ckZV5Zsvx+_F$^0;EfO z0mwi%>Cv$wAm&_|O;0}+3oMx)ZM-x-E>)Z6=Tg-&KUXvCz>MC7n4wMIg4SIGFnt}u5N^3ZL8>Zs_P*rZ^P6UOzJU#OE2@vvfRQJM;UTw{qBNOf) zSI7E{6@4R(6-UPvM~3A&f%hj=!P?6inZAAbQ*bpS%f0f*ep(%qL!mi~XappuFSm+- z%Ju#>>{M6aA-4B>zCY>4Uk+6C?M0yy3sT`S8rJ-fv+l!-B2jwoy^5}4J2G3 zHb6}Em?I$Yj+&TS`oz>ssf2x~6M#D8Y|&Tx)FRpHr|FZOwtt(NhS2vBqExv~^HYn> z+SxYniqurs#4FLPk!E(NtHN@as*oJEyNV>r`*Fx&UXqR_pC8t^9rLq3{b()n6*pvg z7sH|#un1|EiUrcUj5jefM;+};oY16tAAvua6CUaa_@N-+hs+5({2N##CSjI(0bHxR^{B8RyYF>-{SeC$Eb``&otH3~#>4c@Y%TqCjM0iE~mO=1x zR)oI2=!yu^W5B*L3YdGPDqb#Nm%qITU?o0WadJ?@ulP>LqpYexNao!K+q5*Ru*byijRG1^rc2&SdaZtWo=auBxEJSEqtDd+VBS9&V@cPi_vEa?zb_a&9BsVvE>l>OWM-eTwo#R&ADO0~(~8nV1>WrR1` zs1f42?HMi|2fl`#Bbt0AAG%+!;6sVu62xtSLVez&uqsXtQy`;aY$J_vTVQ%}I1OPE z)1NnJwzMF((t`9*wv-q+DGmp;AYFPO26&)bkQlZS@s2W5H1lq%2|&q4rL`ARXOFHJ zsSIlT0mFab`_5xeT`KZVx$>>Z5ol{#c=!Tm8m(+38F+GP-mU zeGKEHKBTJ4Ss8aN^uJs)W-V?~|UI@yvXDM>F`Hah{)lBG9yro8#Fmzw^pLj{ukS`w5H>59z#k0mlN z{n@BgE;0T;k?&S&z9O*b;TKt{Whah{eeWCc0)kmb|O7Cb%U*VmO%L>XY1BLs~ zNUw?gb*()ddEK>k2fNm;gHlrpyD-Wqj5e=b6DJ#GR*4fGV&>A?T{g_7n!I*>laGA89|HLnS-$0IeEeTR;tbF;h4E>;UNw9zyK}V(% zpG1Y4vg;4(3JOhsgiw6ZFs%PxANpBGThOnZ)+zltt4MMO6wTHp_GtxA0cBnpIb+&h z(TDoXtU+$2Nol7PJ1%f8B~Mk!vXrZ--_QgXEXy$X><ulzK+b3|`!Gicx~v7tv`)RcIdu z;{lXB}>n= z@8tXGXZb1`*&j7uLyb>;@srvi`g`l+AM2MrHLdI(!!*+bU;(P$3?y9qGxVSyAm)f4 z2)J`@LIl5QUMYBH1h5_dpzyLnp-LcZtQI!>vpru150~4Y3Y~ciUkUA5v5G;Kh5(R- z%JUH=(?!V?=Mp8HKAGNWl*B^YD~CAf=i)JWHL!*-Me*zu&$fwZ;s+^ksOTo-|BXF^ zLW2^{Z~I6JE>6x&Gfp5O$Za`PR8;hQC|NVC|3hcHBz90;{3S}&buG+71^?0o5u)dU zCtbi8(i>XD>k6pCeXcxp4&r+!Kjc3mjFJmFh~TiXM~Q+W1GCyuC&~#zdqI8h)XQyL2+(<`S}=~GOiUR1w(Z_PQlibc8~6fx=sBo+aoFnrAb4} zG{=!?S|X)p9J0YOgAC9Tp;Ku7o@&jwC2H`nQTBDsIE07TKhc?BAHzs3vz1b(3vV1N zGismu5@`G9q%QX$T&Om5F{CHd_`Bu!yZhz97+Xg^8l!43EY{5&F~gFc5Ey-*xhMKm zbU}Y)2cLdfi{v?3`cSuN}li~v? z>M)h?V2YIUu|sF{OQY&@r8GDWv>|-?;=)Q%i;(R^*1!&lI^%2sA zD-hblp+w#1*!K+J>Ft6qHYbR9xKlpQh;k=PDL?0e=%@>xbwLcq1?TYuBg|=>38$*| z)07cLt%1^Up+1u7^|ca=%4rZotDasANH!k&cRi04R9eDMRArq%FSR7;e(g5=Mx%ny zE)}2;5pTRy025hLm;5?wImO|En(XR(p`$W@fT%NpKvuLR*ghis+b zE0CY~({uykyXHbjzg#o)eQBE77ivjAKekqlyBHen4m2Jb)e5P3L`Yc9Bg9o_u^9yk zLG8#C+|*>M38jQ+1TKIDpJogcHY&OYYMU4JGQxyBtgMLCMdVa45D{@p1FCJgL1YUz zNET3fVJ|%K6`_UDKW*Syex3E3`X_J3Ovg|oDB`rQPRBnci3Y3)i3xz6(uSy_xD_N= zLozF;{~QZ7pnyP^w=+3hW8u)1G$bGc;kO73FM(+&FLhf&i@m{$0x>^cnf^{iUJAru zZE1>NWk!JBl!3{|?Gyj{6Gi*=ws5zf*Yz{M{E1@vtcb}4kDkkqE>k5uU9&|ON7D~L z#~hLjQ-kxH6gH(}q{&JxWlL*Aj$H}HK{z;Ji{SvI*j&SEL7z0wjOT~v2+e|;%eBa8 ztPYq_v_Z54KVtcdLd9@W2t4_Y{y}|p8Z^wJSvL{ML)Fv-6wY@;UFxp~2H`UO@R4ni zvV_njaqSHakfk1?wH2{oF2XFyD_TM8vkA)tAAuJj$r-e2z+asyE`sM(#8TGzUfn$_ zS%EqEp7o|TEe~|8D#}Wr&r)4_+pKD-Hgl?#)|S^ST42bsA76y-0eD5eY(`jKhsO%G z`)Wk*i43W3=1ReryMuj8N;gCoO*0`|0ha(wzLZQpej~D>?ut1Srl7J?H8ByiZJ~Jz8I!OdRZ3~qV^Z2o1CgI>Z7g{k>OUYhh%STek zBpwT6Tz}A?*oIwbH#kI(+DGpqQh9XGPJ8mcHxQQjUP6yRoVQI1wzaY@NALCntY#E{ zzPK&Qb@?toU{BR}K5Xm10UuZAQb%`gSD$I1KmC*Fk=B{I*|6E)5eFb=U+X7SGQTTN zoT)j$6MQCBTh6pepRI+?ZM?8{z){#txUf`SQhgwYNMS^YHHrMZs&~**vUU_<#<7l) zG#C@5+Dmr)(}U14bi{%;5^C>&PV!_4Pqh|=PfRZZciF8XFvc)#O(GyhPa#DNk~V|L zgCim3+f@i`t}hUA*Xb{WpyW?p=pYIAON4=GEf<7=&3w1c8K#OE#VU zPfoEsmNZeK-^|xkvE*NKR-)49>s^VP-aui33A;i5P`vQx%t#%Mi zK$D1->laK?4`G_eC+B3`Vs$WPxJHznN9+de+ow2^*~VilUS<2D??rBsfxsL}kz<-u z@)1iQ5^zbDF>arym*_I>vo9iT|Dp~GlF>mgmN=xvndw-}bESD^D5_6G2W3#Jgd**4 zd(bDd-Y{-|-38l=0_jL&AwdXO08S|+irWlAyuII}!(ur*AU3Rwr4{Ivq}afT9^^TU z^&Wmul5RzF3RsUMB9(^lDcB^CeUp|a1#V!SEBY(Bkp2pj8g-=Ws<*}nb5h3?!p`&D zQKUUUGH%a#Ys!lli6gP_IrNQ)Mtz=+isahet`?B`EGyk*5)nDkQJ*Pi6!$;?*iASO zQE2(~ck_fK(I~sMdKV}?(4H8y-C7;YMI22zmz6D66o^mF*B5N+IVbW0j2_kR<3x9s z_sJ_FQDa|5J$~N{B_3$Y;fM6zrz<=T3DAS~Ja<`(9JEgmGdkt$&X@-IgJ|QXnjJEV zu_c}R>#K+2`cYlKFRq^}xIP!x!0q+bmuZLhNk{hj>Ls;_aHFhsbdkR(N$vao3xX*$bMCuuXu}=XP3kz8o`h%V zo4lNigWZ7c29;aauG5-a0@rDgZ`NlS>k}T9)@R=VR7`BwJCxtaQuhqN*o*3eXg{iU zN!O|!Myu_TBP;~=0&byGI}-WU_61P4ee8F&eL;`N?oD#^_H%!#0;NV50&7!Z(SDw? z>BqE$2VOq)^gA8(veG}qxek0UqkkL77?mM$Vh+sMvwsjP=!973Bl*xxcsDS2$JGQMXrcn`bFS&JN`Bi2a!q89AGhy@$N6W7~>=E*F@gk%5UG{Ph&i8g5QU#UNS36bDY#T8j!AQGmSO+#niut~}t zl|qbpzUrH>_&DPo1hkF-SYlJE4@)~&)P)wB(0>{-kc6Y7P0aKS@AucbXa9@GC8gm!$8G>)Umt&@ zD%T=shd*CK;ukX(TBFmx_itcy(#I*g$LYXl`NA=5uVW5Jc_PeO5s>ydyqyxB%0%A3 zU)HRKG;TN|2${ocZi}^p4|GHmAeZ6`5)a@+TBpt#ODQasNA(WY?dW-1-LKb|dX=p! z(IG!r?NCZnq7G?sUeF9p;vD`H}mX9bSjom`yPlCPu9ODC9i3Yr?PgJRXmqT%JS~JS z0MTotxvFK?y)^HsRW}#V)4cc6yyG?2ysPBw7?MzF2$+h+Ug=JB&mbeFVSSIwjMYC@ z5wY6)c6VOWUr9GCZeF*8PM}*?Rtf#1mY@2<(?@O>!yhw_C)fF>zeceEE<%9=m zwYCI@bNRkvZzBb z!Fm(j8-ykUPemokE$0k8g6f>L-JalKT?_nv-|=^;HM#Qa^GoxS{DX@eLMg)sum?)f zFJYUkhurD&#RCNaH&DFfA`9N*-i47p4r!9j9!?&9Fy8Oh9Urf8-gs~@?g<%Ta=xD-HVdBBuHm&5HtEUb{^u(I$;`#bG#wjskm17#WmaZ} zW;G@))Uq$X@5!S5`u35({bVtHQj4VPqy~soM}Zl|SkY6jE5ElCu_S04e2cz_vY?RB zPf`4`eW*P9y0TCN(cJGt&}BN)W1D0}h9r%MI-=FUC{iNySxL9xB8*>QWm+TE4)fJP zhB@D1>RugWphWqM7TClxWHMpptQ!o}y|c{t=N>vQ=)ClPXoaBjdxL5KP1PK$8x3~A zw2q*SrOqn@%;p^WLBLE4SR`q)Dto|JWSDVQQkW}>W9qS!0ZrXUw9q4hyv7^H$uRZZ zSGI_(*N^uhXHO3V6*%xO&K3QUSg7KA7K?7rTdYTkhURKmX0(vfp`QHb?J^6 zP~l-zCBsN0O(XPBWf9ekF`!yA76a0~`l7xvu$2KBm;L0jBN1jXV|Aik#%1u^EHUBo z5*|O);jw5MJ%;0SU3EvtkrVB8VyUY$__c#sQm;e_rDzb@NQ z&CRnzbDxbU#Z)g&E(#(_&WAmH$ZF84U|l3~9$r_Gc>7yZTmv-Myd8%OkH+s`BewIa zzsz3bD5O=a+_lVJL`Avu|5sRMMf)LK5X6)GrL8i?bBR@U=|O0KB0684RrW*Z#aFS) zUhI3ZzWP;m!HjmR>GHO$6sVzcn216T!p z_&>l{e`h@e&63*59!9ffs@lGw4$zn9Kl}-<4ijmK@FFkvxyMvMFge%jP68M#OL~Zg z5>}4x_4r<->&pm1$LSV&E?N~ea&>~M##hp`PAn=FwUy|HbmL$uv-c1WgQSt^6>ToU zi0y_~PSu!BDLetd$}G2-TP&BZssTzux9Ht-Ucnp!FYqY_ynPJ7v^N1Lf{C8f^~cU3 zpecy;rSerz2dbnXd&%jrqV!aK$zcP-)nTXT8Y^(ShTZN*XcckE!)AW1+Rz7ORD2mD z|NM>B(KvGG8RR0I888`XdN^L*Wp~BtU>FU1@T4N>cuE%axj%a1gM-^qJ=O@Qxra^Y zHtF@-?@;+|@OZHR)Hk@H)!KTT(6=+h+XBB4u5A}?W0uz$pu#1WH(>A!Rm9UNnaUit zu}<&`KOiKw!D_y#I0^3Ye>7u-_Tar3>r7j+?aMcf$yA|9B>qrX+3YZ)!C~M=${CF6 zS`@QunnM(vbiqNc_(;zjFEyJWmLMCjp%U4W|A+jKA#S!M^aJVUDdR_MVwhyzEEY5G z^x7{x{rCTKnE-m^hMhYq0{K|&9;N8_cxYHjgkJ|*1Th&}YhyckCUWD;O)=66P!+Rd z4WR{$Vyii(p%Yzq;T}a zQEZ7YqN%as>=>@v88_GXrf161be`gs0uUNdi%#b@!~3DlQ}(;eXSfjxt1hRvP zJ>{waZjlP=_;}Fh;1OEcpU_{n%t$wYDTEr+onC^?>qo)ai#L1*Fe;p}Hof7kJ1T>W zsSY^H1#hJN-06*Ux73QPqKj7Qe7EujwzZ{J(%s4%#Op1+k?vOBxN+r;bhq-xsg*a< z-O3wpT6rVgt-Qe|&!v8(yOlSdV!1B8l5bbuA@XbaoqW6U&eN;!)LmEM9K!Pp_2i|_Z+2=TIeHN8FUCDVB&&V1*YnP{LpoC z2x$v}T#BH#kZuB0w{AJcEfeniP4_9@qM5MQfR^!#yS8YJV+M;`Q)^Ur6%pr`m@gc&l7abDXvkh&?^?BP#HzE}&o&0&*Q3FI<$&eE+L{zN)i4bWjT{0K7(eC*w z&!+0O#=rxQTlUK!GZpxOa>XcAw=A{QZgPRx$)thA)X7&n`CIZ|xFNe7^<;%M;oKHp ztkM=8K_lt2^uuBMs1L1@d`}@ia>!W7#}rQ1Td7HqBaMVjh`&m%i7-|XdZOKQHWN(a z=UDul#8e=PCCJFk#GTICV1rMX5x8r3ll16pyhSqf3AE2Z6>2OU3iN|Kgf9YTMeM?( z0|=9Vmp}ErQiOqq?j=|^{nybi`!JpeR|tdiRA__-su6zoYhYQq>&vSvvgqE+Zbu8) zqF*0M?88xl<@7JWafOgE@t81JQ;I3YxiFLdfM)?MnSgPA2Mf~Lky!T?TpBAJQ^pjV zYFa{7Wb5I3bUfwdPAZ)TeAd&W{bY#k3Z8?pLQ9=X0{tjre{Lk=F5?mEbyv9+dz*{Wf zc~!Y*UV6&=rUfFBW8>?b18E*E-vw!4w6e&Fc9~2|MC|31QF;)@f4wO~9%EzyhBvOd zVdRRnbsNm3upEh-s#Tulm@KZw@b)4+8v}7XcED?Be(M ziB8~wRNzCNwBYrQ4!l#sG*u*nrz)E8cfJP>j7>=gvQwArlv+?clI9%}EYh%5#- zD)n+pv=+sIXno{@q3T1}g@(=#5DP4;m8~B#aI%DwiO-=n$0X7Hxzu9!0Rsd`-S}g(fgXo?Q}(GErcd-ok#W za8acACpa`MF%A=X@sW=ONvPV=^sg&FpUbP&@~3iny;}b1T;5wPe>#_gs?gV{A8E0D zTyZo<+Nb$39cy3sP71c$N4_f;Jo`QhzK(FDOzBW)O^G7_1^|-?2tf!@i102^KYow# z4nO;~xcL>?;K!uLX3$~`;{v`CdKte2=MBjm3%8S;KC67}=LhA6+?|+L=ZZN7l+zhv zvi2s+)DKU^s?LFCj(<2s{v7V09-^kufr(`mh$RjWy2EGdNaX9cpk##b2jy1a@gs<& zqDwL&vOua9d6NQAJr_LY0x&)ofMLAh6TCEju)vQVR=u=5;^#P2OnjrzpK@%wr$dw~ zvkI9Lfsen|o(urIRKI%Q=*--p`sl#TRDh#XS2Q@JwGAilbgYbJ92`6)<8Z7VUG3Uo z2~=t2ieogBnYDFe77N1 z5TzhR{re61L)x@8zy%&Jebsm=knTVmd7#M0O0IyYE==?62|q$T3e}5N6{XGaF=m}` zFhVU(EpvNapYFJIz03tA6=QMi6JI4m;ek)DK=QX!1B!Y+1F_W>0m@dR9|b4=Y*ROzMT2_3zr)r|~c>6d{sCJl9i&Vi{A zSOsSwn#u)z(TF@cx1q1xS$8!E6jBkfcs&_9q|(fK;4l9I^^^Zn0=igSipG=B#Q=Ja z#>3EJ=&C0{>ea8L5n}q1HK~I`67E54MhDtWC z={a9>@e4f{`i1xBj9O`xnQ-#X!zzbTtkmX0wZiJ7HA^(S@)Elxa^oNFk6#$EXK1JIruEl+>2Qd^<5fk~{b=!Y(a9H}duBfNaY zlJWXS5xAXsuWyk}wfj<+uF=SaR;go%{WH5MBHRa}O zK&yH_@Ac>WH_)H8`TBgw?`S^WSgvx`RXGdzGVYD01NE87b=?csEtOu|m0nA!DC`o1 zU$cO)E;EETUb9pINn7{|xNjWmN?GQqP(>(0<@7~OLfXJ_RQyX^dE;n&qOP)oD7A2A zawLDgail9}8~hgSs@%M`h~?TjJ?~_*^gU?_NAJ z*_XSe{_f+!E*S02b)K2%vV+mysE)p!ne6F$vqz<=^Ga>gb)Nms9X4<2b#-pTD4bs3 zTz;K|FdekWP?%<5vQ!GgNToyzsUZzak_}zdB^&U&2EA0>AbX^{dRdvN22P9WO4qtl z?-ufSm6asFi}Oa8%V@-gv%JK0*@1{i^X@^gPK{X{4-2sYS99sil6rsy(>*|$RrKylBWMy!>@LF1gLNXjmIyJs|^H7G&A-j$s{hD0&jgw5Ct2Fs8muTe~#y9R%h)# zrc6q;gF?ltu;(1}v9ii_9f<@_!zrgfLvUNF4dc{lYD3|9Gd2QO+G_~`ka7TDARK6= z%2rN-Ub0BF+wW?>fJCxgy&3)eC}|MIWyZI0MU{E4odQ(YYe&4!t%#KDiS4%8%||J| zi`nc+xFAqdf(;>15kxgs&m^nM28$;!zxh4V*^S$yRJ7h6)w}EMbN@gYtw=d%!43V+;W4Pq`dEg{_K_DN36@l5 zy(9&fj^OU1Yc~|vyrBReWqLdO#?l9uUtfH^^=kAv*@loOwu_^Pg8W>kF>DuK;{g<3 zhfS*zC^#|P7{w1kx9fmH<2!6HYzyc88JHu}npL<+6bCwx;Uo#1D2As%7@B)sx&Ms? z5z6f$3}~;Xd;NAFIm+T{OF?ih8>3ss)lt+$X@oA8R(XBVkDF~018FeHAAr-F?T?itp!@^YxF7{%Zxn{ z7n1p=6|jZ?fwghOPgg>Olg^S3?V9S8l@0URh@b8qqOQnn0sK-4mFxTzwIz2vh(3Ld z?$C(9ep+TQ+x9hc5Ubaofxpq+*r=ADFwRA0U|`q< ze4=%_;qXeyW{@rWbwrT0+9`{e+9L2BaPTc=2pV)}xd{XWGpObmdRJPAwunb@h?YU|}fpo=teW7o*z z7iomC3WzbAvQ6yTYPmt3LV|Mocz=8(ZssmYjEg6KvOfNpGzwTlZ1Y}7=KgqIuvVD% z%^KO1SuNW~zyHai9dhbHm{TNkdox%2kRCuJ=u-PI*V8|8%1p7+*oCbtA(D)KpZz{w z*2Yy}_B_||*-Kna|Ja#~^JjYbU+87gPHO(NUiqVR5GS^h#UOv;l7oC{ef(P*q(?+0 zvnn`Yaa@}wAb~P|stbKZN57#!1`)<3MB+!H)F)!kT8Iu(hA3OJNd%TGL6P@PpvYG@ zInm%}fAT3%jdGqS*nJxkYeDf-9-d#{P@|&V+IFF}5SAC-1J6_!Mgb)){LrQAlE9&9 zUxLH`+F!bPb}-(GnP=S0_ZJ7_O)#SU0qu*ZrsvnkCyMGc4}M>HRr&n`vYXPaa{82& zHZHz%C}D()hlb;C2~=qkmuwg!RL83{5h@l`rNybeCBjVIvwclhVuU?1YQN9ZjhOf; zl_(YV#nLmQ$EjnI^=y<$I}vT4$&!*yZ(r!yETqXzuL{SrNe5FW8yd=4QR9XKSmnJM zr?M1i7j6svQ7fv|Dn6EGDgA|=nG2==`(;t*=#R$K^6v@D|Q&tl?+@B+Jz);`o_NAd7>LyEg{NkA~Y!eXG{~$c;{vMnG7|I zMt@nB(tdi5=SbDiiPDxGd^Q50^s;p zstZz`%vd`jnDp;lsj!Ml3_v97+*El3HTVD3y*wkWHj)x|g9nJy;BKS!CT3to789ec zj@p44kRY_y$;zN^iDh?@?N7|F1Wle6rNw_G)We6JhpO3Wz308OX zu_dJYWTsrJfhC;VBjV3$wX>pa0LtirZzT~+t5h*-w;g5WlZ#k~mhH#ajf~!G-hNaB zO>|K*wfdphyWnRN`lcvU#3@OE77XWova7t8^|=u&z8|73+l$m=y|OU}uS^wjfGdC4 z8mQa8@6SKUYHvTtPo%d-IcfV3%q>`25MA4O8&cKyZT^%qf0{8OtOkTONAH@kZSIhc ztjD0OIMWNd30w6@39o1c6bX62P{;ULpMe=VI$^8?G+dFFnky-9svc=bxUbsj=6DC^ ztz5QJ<>=gX_iE|!ri3Ocp$1X-a<*gwlb>TsPIMqhkW$e# z*La?l%h=VU%u>=8KurzM=~)@G`=;(s`I3I&V7ZNT%zH??F~apULO#OLisL#R;^ZXZ zQ*>BmYG;cOg9#4{C6eZ~+lQKU#g92&7?jZJD2PGg#q8bOykCk(&yhNy3sCTOAoT`# z@Gib})iGyAwuph9Lz|>EZ@o=zzU^Mrlu(<4;HGol@6jfo~dYnnN(JYW4R{x3EojWjcwM|69(%rJv77}b#`En(mHci1Nd zEnzOPAAtjCY~YdT3OkwjwuvJz0fms?r-x67%n3Pef{2x_B%*B)nDG>~YovUgM6`+C zI8MO?u|(3Ft|YuR{35A7tNu7sw5+rMAa^`0`v)qF$;B`fIYWGs2B4hxYSyF7Qtx7;}c!=ECEY3b!Wysp% zJp($fXjh=bq)6k!BEjFzVJrI%$>i(P6ygL|FyU#ssTmz)dPc|QR3>DqST=16mNQ8s z)0?`4WUhv2hF01~|J^4MQPeYM>v;Ml-C9QQ<$z1=nrolvel`t+z zhT)#feq^9?eZ7quCV*OT-MzV1liYs!{b(OQr(m+0(=X1p-))7kZrPX;$W;ru-ptdF ze(#eYmmsTm-l={li@l;<*rD?J>JDGB@#FQ?UA}x1S9kLC^iKPTbR3~s``F(`^EuW& z`aKjpNx>JdsSbo8?=-l@f*3M!Z~@E)5iB%hcDcuBkng2IGuV8OEUqV0>v`6QdYq8} zl_|Fim;$q-2!S|FMvT*O$m_2w2XmsX?w?idd%ZQbtWJYAAcja)JsVgiY1S18#{A)w z`+u2x_h8Gev#|5*ea^X$b6@9n-|oKsQtxxrl5gV{Zj2rcR!#NpSXO)Nj8&A2an1OT zo+?)j)z{-e!sT+M6ssLeMxJp%7=s0IDq_$e1yR8+ER`BH=jaQs36|1{hgOd+CrgIBn)Ox>PM zx8-D}WZ`j;Ta{9TGa3UQc=?#0>avUE-$+lj0-5e$pyK# z!KV~*@RJD_&t!D~k((%``5Rpv6T}z!P`ECSI*bAL1wqd!v?>Br1A{P-2rzjvCb^t6 z0x_E+Oe=Y0BB|FZP|WTc0m^emnVxqN^-+`5(1}_lyOkhwW5Ad`TUxOR=A4Z!#7X2j z5_+uEFGc~4GzDO1>P0RvKx}wd_rBnOY|CDW4cBXo|FWyd;NXf}16;w6+dyIWHPl6e z_~uY=A_O_G3qMkHp+Ec-L~i$zCnz}lJ21N7G zQO25HKp6lt4vFLGP;^|&pt2fA?^)ovvJEvT;=_Tt-9L9%x1s@>?zHt$!K5v|4i~Kr z`#~jyRAVu(3fNAlc1|3$8k?!IE}X+@fypp2u#b+J;0#}VP0<+*5&|v|oef>epZz+^WS0TN8aWe1O@-g5dts`0^TY)c&?u}JMo?xrU+y!jI=n;RVJxDvTyXQ*O@bpwXp_{KOl<2X-LF{RyyJSTB z-Y8n{WB(E&g1pwbI|p&Nr;e|+XEZdpdND|C>FC&06p-3}fdZ7H--*L-yB%1|LcEu&b@?Gy*wgE)xS7@vRoz?Ild;(KZ zV>OiQKZayP2Bj#r*3r)vH+K+q>n_jh_f`9p&Fs603cpH)(g$wn6kJX{-R-Gr^(3Xn znB&<8z4k#d^B})IQ;ECK0~3rsW>_iMeb^%21SN@8-hqsrO6i{&jlR3}G-*h3*3H!? zgITD(BlhjYtnG+Z z@O`TR8R7_@rkS|U=+ZvV$dc}D!dVa{)s5I2XmYU#Vt$2HO?86oKwzA`7CmUtCd4;Y zuY_z+r>ww57~hd##XA_I8A*7bF_xF4#OTyC+PUxL>Szapeg$Z^!1`=-p#rUUqMh|5 zvNSwvc#}w+VSFAjp;Z4pyl^en2 zQHQWl*~tWq;P8=QV^E{Qf8a{mOItt3ulkPq^1~FU%qLN>`$f9HTz|U#Y-hN)J46f% zU16OW)0Z0%OIL~>VFV&0K~Panq6_t8Qf6n7gC8Aly=eZDE9mTua=9iX5F=Dlb}f{} za_6v7QZY*a$i0Npvn-3YRS({T3YIkyi~_J`1!@_GkDph&@;#{`tEp)XPdy^3tzFgF zuvpT)HK}B!&WK-~go3t9+=u<4y#O+%KWb+52}hAzD+D=yQ7hVyF`ufeQtlITvFMO&FDpYt#MS{~6UgAXq$qH@1q*y?d|aK5^iG)4xj z6o!p(e=!P}7%d$Ov}44@wg6q6f`pgR&2Bupz`LmKu_pK;VsCJ=6O-kH#eX~py*X1T zEIO{7vj$}Lu;|b-H07@7bBN>9p(wJ2c5(WNG6~<=B^(7)b{*$7^TyWX4cvr*M9mi) z8OfS^lFkPbHuopJpQ;ec^4Ih<07(7IT!OTrA?3&*pr<|$tB}g@?*%9>@`$yX)R%<7 z1KAn{RNfS5V8wWH0Uv81{vaQ-b)oGDARfd%iKeGf;690<7rGt=?vrT7YC!^=`y|-3 z$h4T*fdKze4}D_%}%R4Kt7K>EUg#LPPN7`CyLrxdU(1|*~61h~c6^Aa^T1wt~a&IMHM zFCfX{og3}#IGh&0dH-G%@_9Rr$1<6cu@z2Vs>Thv5Jx+{6H(9Kun6EYdAPug?l6L+ zS}%IkIRy-{DR?;wfI(B>){;ec?X)G2MhVE!mbkejM%k9QyCk5}l%x${-RGG^f4a-% zYfdQW!C$5oI*!gVQ`L&@B?gGcJF>9i*3z_N{eo@AV8x0FA|MXI-$8j{&LEgHad8h@ z3--}GXX1i;#C@>dsGdatCw)|uDtW3uu;vQBN z%5d`>{AIsE=5>e~Sb2n#=3*tr z7}vz$7^6UythzhKXeO!YF?M&15p8T{j3`rV&TPksB9=!566ynzCxDU-GRBtt*e}@! zMZ)w_kknWuGULAIc#jzKk z$g`w^D3PVF2iS+dsv($pE;qRPfYaSgbTVq=yY^@(>m>z;POG8*l!P%OF z!r@5$`dLf|PKKE(#!@eCR#*``YcTY!K#tqdJtIGl8eN7bFqAN!2ln;|4Zzw7r4H9BFT= zOKCGKuc6nT>c-)YkY=!_aH6|9!ic~M_KT#!bQu{kaUKbU+@$weO=HN(b5ejlz3w?s zEpPkLupxuY>x$11c-t(F&S|jW3#sOCo$xogPRy?%&)>mH_p{_2Xkf-Xd7bNCj2?Cp zeO;B6;z@91uujB(T4vIMFEo9M zdw65h;kbvdG^2@ocxyA%q=}h9Mx@l^N#+72N$|i|+CS(u12d=#jW4iTNJO`T-{+b^ zyGbV)1d}z>NhWJ%5KPweAlu=Wq9DvJSqh4S(m0%{Wc{F&6Hs1;4#KjP9 zgBZDJt+&ecAA#-LPm=EtOxBCq8M8bR7>u=~#+nbJkj|NCq%OcSNQd!+yNVq=e2lwl z&S)rGukaf^LyfXlLSn-CB*y4BfHF`StQT3_KGAV7{Umt~{6^2g)D!zh@k|+bOUHx` z+>W5P?6M*Sk&-aUMSaZsX)@Rnw7If9*4G&G^h$|nLVn*KIl*!4Fue-42%&r3&)+nq zM56~v^%SDvYKz$b(_`a*+&~7wHsc1_8K>gL4b%goJ|DY(Nnhp!Qy)S@?yT%kbHWqn z{BsSg3BXX0+HVR)BZ$V_45Cb81h>ew!HGL9glQ?9o`C!b_=YM&%@@<~Rg=85P;@pS)G89^t_@)>kOZcM8h zUEWCwMsyxqs@1+Unu6_S6}dq~1;SfV(C`V}r{Cj>8<2HkJ)x=)zN!ATomin$#EZS@ z7wPIXomhjd@@+>d{tZSLioAxUjZl3hZ^oX}CJsaHH1M1r<}CN|hRc4AsKDSbasvwyy3j7k}hXofKg9lu#CnicNv$ek?gQ1)BS@kdq3myA>{j`qR|b=+C=VPiSjO z{obv*LX|V>yJ|wLqbJEvTv=vQdC)*HLtMWAI#2SawX?t5pVrRz_5Eph^3?yGOLZL9 zu^J~KW6l8UAp4n_3h!!Lf=JTRX~7VycGAGO*~bv;b{bCOPV*H|OzHtsY_NY)9JtZ- zkyOf<{BBk@blNT_58~3lKVBYusGIjkE#YBsBRe_6Gma4@p4_FPH-mOu zE{w?jmtn>dwI)cw3^p3I86=jYEr4LGIMaEgQtb45=XeE=%VaDBCB|4T@+RU3u^ZSz zjG^KCF@@scts996aLY;NjXu*_&D zJ|ml+`cHS;n|`Q_J6@iuCX*=fh!nE_E#8M3qX!^TV7Lq689))SKgNlkhY+3uLvX=_ zEk2W12|>q#`^GMic?rLVp&8sPM1OV+d&BLYlTe zN;qt9XN@db-Ol((nm3q+lQ%Z!)c9!lmw{I5E1Z;BJTpG#zRg&cKUBplA|}Y2s;GGE zbjZ$GP760pY{Tdo;>SU}Xf>|4u&7aYMjZ$kAfk0KWx8qRM$7ew%ZLpL!pt;-2BrNu zO?qlAL2qv+bU4Tk79{$hfhC3o@ezJDOMC_&NqiZ9!=u8%;Gz?|v;*{)up!!s>{a_S z`E4*!2@Upxy3=oj<^oK>M#D60BGDcui!o2o-b$jqzC4-fH4m(Q8fmXjsxG*R1wbK@ zRk&zYs(l%o0Gd&zkisVIRvWoE<^!s_pcetMk%oel!sEeu8>C|oO3MjmRdUe=tIa6$ z{_bcL5G&GQCc52o%$mf;Q|AsA^19-~cpQ_04~gpWP}}R{@!)UrcpPL>CWL;VJ*YZ5 zccCHqp}u5byq;(;q7lR^x|rlVXTwVJv9`}R1M|(}rz|rK)6|3vVnQyoY(V!QFvS$g z(HGR|h!+@-y#{Y!vvMNpk`>V7wmL{ra&aP}-gqS`&CNSXrp1ICP#TH}JYyUzWF@F{ zXO)x261oI|8cQs_PQI8L6DmgL6Q~9lagM_|qN~VAe*(6~eq#ayNkEo($%!-oC1#Jz zY~d1!K9)d18_s1(Ih9p@w23!yikHPVra0CM1v-jXmudkXtWg_oF3cce1B_tl=o0AS z66h;aZM~v_k5gj@GKP4<@Rtv3!%;8HJ~W){67Y#O-1L)V!v*i2ePaJ8o_!mZhK=GXry9B{FN2q)rmS3An4JN z;n(nhK+$es5J(mdOiW6_?4-$74DT2Zl}nr_;Vf{Cxl5gECblVzXd-ldrooAhd1b!= zD=Z8Jsh=h_LKXroc1$X$8bFJv+?|t3e#MHmB#X<=6aEp zG2K4NliEH>lj;)I~#pximBhuRpq)iy{e2_U6X$tOv|#8^=H)FeZ^ zYP%$ASKUvTAqzXn9oBpWo-mcGnIA;tPq?5{2nq|P$$AeBZg*tK?huraHt}M2#(IY- z)z=6?nJ1E-rNV5zt7?y#jMkP+>hMdbUG~t*vjG$7 z!_F)1d|50+gOMEO0cKd}BQn@|1OCU2N)(&glJc&fI1`fIS3F!v@!O@wpl8ADk~JQo zX1IN$YYZWEjj^`YxVcEPHQvtVZfm@qzxoEETb68P3EP3#mjBU|AVoHLF{CPt+&a+G z{QxVS$b$*syDV$USqDa?gqX&pB}_GC8sq7*##TQ?qbLo=Um$4ts^kMM&yt*WCUuJ~8n$6#9T<|@h9#7^KZ%~MBR5c@P z^uw)Tt>D73+WqeMTP+$DbaRrYJa@t^ zY>X!Hu^64K8#fLZK1?UEalh4Y0`(&&T+pv%?tp3*dy)8Xt2`6n>!RNaLFMc1@rzZ= zABp(ba->Irq3MT6CuduPJrc^3utX29iVp zB=B)7ARRP@Z6E>Tq0gx85iSyxOMG!M^-iPngnxuUl6bBR8`hn4VO$+X#oxn1GJ7O`UA`o<)Z(I3SZV!GLBvG}!nUP`diRn9?RUp-7pv zb-YS}rOZ-Nq8D5!51lB^DQhN_5ol1vbSAmvG7PSTAPc5gH^JFv?v0c@)7*qe+%k{K zK&Aoj6OocLqw3w(S%bAujweI^6u&ge^l3?Bk6|;&;0LtkcPh>S^OORR__2H_d4#CN z-UHsz%*8R2^yzRHATdi0Jxg(eA8q3XKl8V)bm~$4B9{~`2(O@vb_M20xWue*Q+yEx zRUtxfQl8YA6`rJdb|7Y4;B)n!=w4j}GuDv|%vj^Xy$w)h3~zzP1IB#Fs^dV2u%qpCXJOn6 zI1^mD7={k|B2O={X}9>U&f<9feEDB7)kM=}jFN^rfl}o8K+!rs|G@{(UoIY`f&oJb zJe8g2A)P<=!K(jYHFy5(2OnfEBhgz`PE9Szam3GMa=jr6>POu&=@~BdF}) zDoyCSz0v@@V7>=7=G6!*n6)=u+c2c zqBl;f96`E!608v#B?OBq6WpaLuTQY^Q?nXWe|3VD$L}K8e^-`8(lO6rav}~;bj_}V z&Go$<1zsoc*nP#6oxD_^bVm3UN)kWZ!CdiGH!|(0NPsNt?>*nW%MHEt%b>72o^NdO z?pdy`331uFH2h^4&G7zFFqBYAsEU+2;p>8Xm&2bb!=y%$L%so=7S!0O_%XR_Ufa9sZA}tLO2h`BT=Lv8-OTS-S6W;9h{VRaC>|2lp zd;_+E7C6O&-5`EjO#Tdri-2!EGtg$3OV4%7E=a{#y6>*b2gaRGhVI1BIw1job((U( z$1jw+xu@#O4?Tb-;v`ba0Um%t2?pCEVTms;!E$xzsmBU;WJlFA@ygu!Z+^4${aofB z9VLHKs>6w#uE2?idoaDJ1Z2YEox7WA5(>~&+PrM4m`T6v2ofjvs~fjXzg*!?-J`3y zW)Kl0bML;Tdd8j9JBE~pr%a@Q=wu#UbW3z@>J<^w4qm{7lMqe;7E(Cw=>4&iom5@w z)40n?FHR~(xPPn2LOu1`!U!hZ02A9fyu{8yN&&OC3gkR}ljh4l{!qKT?etl*W`XqviQ?)oRWKr#P7;O0aq7A_}h| zGojg4-3iX9`4N3ZSfSF1Dc~uwu^|n{1J}m`b=CN|6OrX0HM9ffRzAGP>@0jm61_lj zJseaH3OiP#-3h8p?YNHAy5S52XkBpZrH@ls&an9ZXK2F^-dz0zKH9!#t9KYJC#`o7 z&7*@bEVy{)5G8VR`ajr6VigAPsnM+9&r8HyqKf-7oQwykf!*FnK#Y8LVQ>&bta7~w zpCrnenW&2qL0xgfq7vdRa*DZb5vhKR)U%Rtd9NAl!J4)vmZAQLz-IiWe1k-u3xDHY zwT3noggpID)8SQpil!k=$HCBwM@L07Wpo&>HfNX)f4>%s#N%pW3ZC*3Z;IldM2_1AEG@)55K)y?TqXBx}TKk*yC{u4j-%Rlq? z1`m$69+@GNJ!pR`$mC=-u5O)u7Y?wSxtxr*c{0U=_FySvKZg2l{KXv=RyTiWJU)N; z(ecUi-|T$g{QLjb!;e1p#Ffj%`$jic2c6hHIg0VHjUuq-NHuzj_!NL&jk+MiVl{qh ze5mz3vQSj@?kB$T6vmxhgDX4)C@0na%@3Tv+_dq~2Sy{Xcyu2)I} zU_*#<5yz!CH2NE(TdA)2o7ISq6Kz0Sw?0*O-=i4r-e2Dr9%8rGg?p(?_WqdO{^#Il z3GIxvsA&_4P=R$`PlsqUCTk1wC1FsIG@{sja9|!J%(h0_`xw&s7+bs#UE1n&?(E3K z48J)}5k$;hlwcz+^xQ-d-t=5V1g5_(OG%vO$?=986JSL^@^o|YDlgsE=}(|NMY%nJzDs!Ou8 zvR**j((SCiIR7pj1pn=Oc!9^b0r+2WKL@lQSzb_-!)`e;_9!y^ljqO84`d?j3A26l z6ww+~gwVF){u^O;oeK}}1h%Ixg2P-ulj7!^hEe_0qG}s0u?$VK(NSDvZ#-J9Z-25{ zH|Xl&(YRU!-|Y1qckVn=>Y16FEvcQ!T#b z0Spy;s6K{+{f(aU2KK4<;Q(3+1tdC;g@LvKm7vg0$m9bc`8U7u7k~a|fAW9-`Zqfd zW7v0K#Bo-Qb0Sf=5)E~r7K>S(u&P8D3uAQ>R!-x1_qIn>;$=5`xhe;{^^wt*FKhw| zS>EVWh1O^CD1>(nkTH-Zz& zyl#Q~^A5%xoDmgkhuSr&Zpq)=Y#W_d@PUm4Mc()~Gt6@INOjAHo*M5bj+uERJI&Qd zm@tP(!vMy+a4Q~2%^=3$epZ@y6Mk^2UPHf_I=ojVXW4(@G&^fkY%^$g1UsZ5mT36% zLwo^3^X_4S!wqm^U-6BNig%hjAFWgyUdmX?Zr)gE?xx;YAUYuG zrIjGs)Mk8~S~0#LPW^$zma4<_)`v4g&Slbm!cMpkhOnE&6V31dXS$oj+j|s7_ZPSK zsFeDv+j{`1%euKI1}dn}SZ!7fAa3c6pfFPuxxBGdZNg=+KqG?<>`A>#g(tHTVp92l zgvKfxw_cM#w;q8cgFu6j7e=>0oPDOGPo~1;P!67;vO)sGED00FSEn#7Iy+1YC}|gU zB`xJuRFSvU-vF_^Dk$<*)vdO1BNUlGnB@<9(RzMyCmFs9GF;!AltPBWn#Ii>#J8~b z7rTg$_il{%P&n2lwg~|(G{hD~yAY2_$%v>&roka`u)6~X^`EuR!NKkh98|w=p5vv; zI7rgUH_!%%=+c$QHzUoUm=w=TATpw1xmr}LKD8aH_ZmH5>4ow&Q!|FuvQ|I+=Nj&t z)tb4lmwEJMOf>x|29?&&VacWZi%C_iR16V;G&GK+^_ z=-m5&{wkpz7tG+zm{*!(QTmqDn-u-#;Pg#$K(IT;IYH~w^RyGS=sO3+cBNfE&CqwJ zUB4|bu}Qmr`aee6_18obBvp@$>ab=yLW4~b_V0{>sU+;T)!{bxwO#K-&h=eY-1f?I zt`mu}N6z&bKn7ngp&!=P|6z|+&GMX>5pj1QfmBtbB97sOxfH>iI$?gI3HEqqFa*Ph zMfW`qPI#$=x$wze2PeD)23-B0ObH>H4{@X`;Kv9SWn(I##O<+l*mDz7oLTgSJ3WTH zs|YrXhJ;cMq_o4)Qx^{GbBTQ3>)eFsu|vu&PtHxadS4v}{e_DWz!6}D&N!EnUh|Jm z?>HI3)y3BoxkqS?kqYc32JF!T-~Pb}JAmFq0$mf_c?dHg?*L{#>X<-`-d*irgwOm( z!kuR}u8up;u#MpA|84+x{wZkyuZuj-M2OfcK%VIGp2&0c&N`4+hCI)$@4%iHHtJ_M zZ1*n*dv<_*3VW_QhP|;T_3moe^N;6?1vn4n3&*L(bFRem3&&(IqfwDKkp~3Fukrk- z05A1~x@w5)bh0~>l5gcy->>#*rE7ITyv>Nw0KSUr_Uixms+8nQNghJ)C&{@?=a7hv z0Idr)CP$3f*B@rN>DBe4A8g}a5RHE2aATakrEugBuJ{rB9^z+MSEcX)LUEvVkyc%8 zTL$;lelR%WKNtY3Ep$W;Nd?EA5Hv$il;|OKx^4U*i#^geUx9tZZ~=u}NrpmNrH&`p zgo0*g1BD3$rrK3Z;LS$Ms!!rAk3%c41+s@1=WbeAazq3dm-Nb4U_3lg4GVL`*8|`r zkqv+|;N~TDjd)4DGJU7kk&8mHjuUAp+)Q=6qGsZ7rqs(#>tsfW(p)KlbaOT_>Y<&j zA4^GkaJpk*je1LDv0#Q+wexB8r>BQ5%a#`&y&^)q^r0(lK$Ou?dA3;#yY|tb5hJrTU9(I<$!h1_y@ zwsTKxpRm4;J`r8sQzTrs!#nkfN~Pwi=P;G$AU;=uoU2guc{?aXg(v94S>+$Y-l34h zL}H8^H64n{l3OgW`2Uh*%8q$!I4sJ=b%D^Lq#U->%^FGS-PL5uAM`_}$XIu1vjPcj z+vu}Z-}4Qo4hGZHo)NOkyA%CZ<#CUL!9Kk_i;$d_&StaJ%TJRd^XmWjZf0n3KM_)* zk24q0Z~rAR@*-qcGFyo5aMvoh__0CAPp4xPOQ7QxPY@EC?eGf)H_mRybf!Nj$%N~u z&PA8^M98amHh-m8D^a^aKOWFa-(K#((~XV@r$+GK6i5IXGN5j~@y@hAGs)?ygCBmi z*XeYMh|x@IR%*mcAsIy8Gy;AFm+>&ZR8gZ{&$XQ20LWm;GzA0*HNd>rFTgA}JXuBz zYX8<^+L%kWSoSutYjC12_4x2wr;rr^SpHle1DyY&8(4Z>aJKWWZWF=(1}@LwdFtxb z@ciTdku>kyXOS8^sYUABx5_>KzYCdn8*8tfVy=nTPvdej)?$~(NL0QtTg`s%iOG9( zk$&^`PL?Xp@NX{@?aU4(`^&@#O(RYBI!Gf87TbFx%`AXlF?c%(!8jbqK3xqv9{ZLA z@+;$iPt47t$~6Cb0^+>-zg;M^TOgamw&j0U6Ubz^fz$(OvOvBL|BEi~i8WX6tOKFL zv-~d(Mr2_n*k9g!9L!jjjpPaD1^b(5q{Cbk8fkj#Sms{WkjpZ!ocs|_0r_{Hn48AK z>oKou;o*+yn?l6v!lGqfGyE#`?rIqMv3`lIXT+!5?;;``mo19%Jfx{EeV;1OCp|1rZ2rd9cB)h;87<*-OKt_T;qRu!dvD7E%9tvEk67 zGkD959(*s`6-~QCBA@2CV{pERo;CUF@nUMaBdzLM8+;gNG^lNFfH@>R9E|oN*P}Ekw+4v zGW*DrH~aSqz$FyQhI5z8nf|Ip?Vtsljnu7>|BgO7@Z6fjD)<(k>nmusd< zYhF$@>-YDw*r&GirC!M*)>RPG3HC&Hp^lCf-JG6}PPH(p6H%T}7#L@qt(V_be+kh8 zDzl&UD8BRnG{H%c2$rB1<$tgK`7izampX3(S5)$2BNxA&)lc}~jc9x0`3R3@3!GgK zCq2tUI^P4FAW%>WN3i!EKpX42OvA4}N@7iHUZKMFZYN z&DB{^A~v&$&l49i8DJ+?d>Y_4JFW?ANVoxcrwG%)HM=MxuzXWgPPasnYSmJF8%wpAKY_(D*+0~+R>i&IX1%JNY zxitK*?ajHgL%3hv;aeBRcOX8;w?}m3?QHM(<~P^ApHRGhb^H1G4~*};s|(2QJU{0y zxqi(${6}Tmkxhd%13IyQ)?2H-5el#8?!~`v$O7;3o7hZ`_Uk)gV_!YD?KY%>ZAdcn z>h`CA>^%Ea>QDXL73>=Kb6S4qQzP~^PM`?HyYJyu96-HJQFb9B#u0lo)AXG0-9?l{ zaUPjt$U05f9Ywt>vrePyf-zHkYAhCm!h`X>oy!G%z4LteeKEXei1j|1W}OSjI3@ogG4Tdy4T3%@!UHG@r~HZ;{&C!>zF7`q(1<n4Qsjs z8`z>dTuvu%3*qu-#EA!ld31G+qI1z|2FCv&lz|A0r>td&?HOvckat+ka z|FrNRj|;y&JM=7960I2fp0=Wa1LEeLEe1UOk%R%3-p>3(kV7IyUHfeiVG0epU;zTl zA@=Iu?+ni~vRaJ+0Wti$rOVo+MF0<^WHUC@kAs)>O8r?c{oxOjJPAB8-6@mWGOjXPYd-u%KU~WnE-x`H?iXj?Q3@iO ze*(z#R>ixyOZ0L!UJ-*XPzGZJLDtnTTP6WkuFHUX(k_W6f~@Ho zq(gu-VNhtLi$OGNiD?l=i&(YaTS&^fMXF z;k4)Va7H9L%#*a|^|1KDKqfE)AIhbKG-fl6beaiih%lGaa>+K z%I@N{&S!Aist9+b6TAl*{kFXuHe_V)4(G3O?FL~Wu*i(=ypFX9tBi%acHwciXBpFog-3HYvB= zw^$Fb;vT=)@yd|-0#o*Ymh7mYg2QqmEew+aALf;m7nsIS0EWRf)MYn8x2RJ(#}fl< z@n{q-9hotQl&HYkhsaZ-z>s(Fm>y)WOp%sy=vkPF$!L^+z#bjr2&a88>J`vCT7X2*pc@+k6evHW{we9`z^F79BO_4h1{Z6iAEh$6=n#!&^^&vOMTNdci%)?Y?|1eYq{ z#|#$;jePc3Y81n#QDP1_S?9##18|Mhhm6<<;29L8ZK~-FFugC6Y2N_bIT~iF0F000 zc-l9>`o8QX6{t5&+s|QD?qNSa^K%m9M+ks&@!66T09-+My z(h*RAc}R>T(hkd$?BG$~oRMEanV*g%|)Hs%51gwWW25s3iJjpRO*DroCNo;WSuli%#iy%|%Hx z=F&)g6-{)Ld_?-a(#B#-d-Rypk5MoBd)n(12%Dh;yx)-l^sL-9Bosk{4;S*Ojrs~6 zG;S{re|t{Bf)fnkb%-lyDZX}fjJ-^m&p^Yr>?J?c_12bfJQC-BZRE}0>B}!tcGwyc z_D5~cQMO1~rYg%kCFSB>-7AHC`EoIi?G_tSRY;$4ILSAZ+L1PNd`GHXXV+oc*Ck;; zwGUGgv$(}Ai)GjLuX0~#esc?4sd6nOohZ^i)9A-bq{7Kvy28&Pk_yiw2oHZS_Bvp4 zILR?yB#A)Nf?HC)%n%$6InNjk7E=2#4ua{v#Pe`89zki)`MHwj#CZV`V?xF!Xm5Oy z`Qb-3dX<-Bqwn&vIXdiRIAX&LSjI*)F1^ur@aam9BcNbm{Mx#@m+whTduRC-PQ9&O zdnX5;ab58gD-OElxAp@*ycG?IhrNH{AAF8sUQVwuzv0$ffhPi=6%j%!;)r^CG5og? zt9}GS;Cnk1QU|d34w_83xWyt3vYEbYjJ}(X;fW_%lK92>>I5v6;i0IU$eLf_YbRj} zE6}haoNgKh2kG8fel_myEMNB842HHHKqB-BF4w<9 zWW@ol#6)p|9YOv$6N?8%#)~aW9W)O9E#~Iqunmf6FwQptj_DlNIO`);BcceI!&_K% z-S$K2!-1q@R(valB01cL?+kOo*4c+XY3pl{?W7qAn}xWxLM9!OnKU3XU>&e|o&g0S z#h~~LG7bNA*HdqwEJlZ_<=dD()`FJnKck(c`b4umAF@=jPJ378xM??Mbh%+F(vxMV z*I%@-05X_6ehrGJsH2YuQF|a)6Zc@%fm~DEBWMrg%D6wo+KhgAu(y;kR;5}d8$58z z%IkcVO5iKQ-|cD`#+kS9I@@acq#1C4lD5msc&6ZBZoO;Yf!8?fXIp;gZdPDRNX=9c z(+;p?x|uD+p}8)lN}za)OR|3&0B#d>ycUYLC_F*&M35jla7uVSX;3_$v?ZS7 zrfRz*p1b5$1~ccB<^@U^P6IP=xkm}3%_Z!#^n1^(-i)$g?g43H zU=S!LMKYB4XEkKC@|?2q+?xWu(s~AYElA%3mh%q-8Kn)COjCJ{mHv04C#}`L_xT@Q z3tPDhimo&F`;)D_A5)!oG?w?Q?(%MsH`-=>V^{m?lA!}i!g2wNErU+A*$d(rK#EcU7>57Tsa3Njy%DWX9H zU#Qo;PgoN7hrLfI6!+B(eht&vm|YS(DBCw=+GAtYU89LAT4EV(a1^=@;DR z&iG{u!K=D5p~hX%l?gQ-g04)c@enL0jKDd^`bpy24actF-mcQLNxvIFFC;+290hd9 zj|R|uNSIgdfGcXYS1u9RnT$It_xoI z5Idt$4i8X2KRRTTLJxx`JwIvaJBZH%EPuq0&;Rg`-XvunAc+h#08*sb3roJhvmily zSA+`T1tb8YPo!EHHA6c#WHQjxmbsv3E`YBTR@IQ+vUgD=+aBG-^-w0w{ z*?=7Di%STBGEY~Ce;}0@BjWce>lLCWKM3<>pG(}KS^mT#!8(k~QdCLL3irLp5HnYv zLoUHk$Y_IXM2s0dLf{a8{W5Nd0ybAHYC^nW*06_usA7ROPG#mqb^T`^;2gU%*jp*bz#WSsE9r0|vT~ z_03aHiRl6>06*0ns&1m&48zGY^WeZyY}gSHNJj=1wtes>Nlck)KBxtn?eFi*WP*WAs#adPI3 zd^ht30%xip`EKTo(=%`6yO}rCXBv3m(oAA|hVnt|4o5XjKS$#7 zd^%WWk?xmZ{t_g9DL$BdA9O>Ky{I`?1CA2BU}t*jo4Y;>QVHTAum-PmsxtKe^fpUb zNqyT83n`lD#em@KfY)Sv%<72B&=m2ngGz@uZ*1e41ZT1+iidGwQ)+3@4Vg5{U^vOXuy- zWfYWg=|u4Cjh;*HkL~eMzw;Txg+0X?(xIFDYzgC&#%O2)@!Q^C2+4|tq8 zfXzj8T#rMyWS4QEZE#M^X+Xtp5`eUykB*xQY(F>`hzdKJPal9*XrO!t??%7tyqO1` zHhC!%H)aCGLV$%rgDx7x?a1 z{muYC+dr238rq6!y@vn1Yx%O|$koL~9o}jPrgBINOb3EI)GUdlShNt27=@wOj}#M zM`huF0=Lt$=(uyUY})547}Ym+y(Yfx`0~bz5D0kp5jFu((=y_kF)?k-%a6=Tg=u4MW-QDWAnrIsGhj}b=sbFRKmKhW;s z#c255?zy(f5a_%eO&0kZuCq;s_)X%TYUV*Kf$fp;tKV!#Ps6(x|<77<}1i1;$?aa5TBLLc%q6F(y?p2j2bTSGO;rp3Tc94 z{5)RLWtYAy(&|VqjZHqOCHy?R@hvoVcT+RlHgdHJJy>vBHZ%^F4vQ;3F2Q0HUQOD4 z_-H6i`%m{ND!r3Kx2u*nv>{+0J}JKBJ8Hf=`mnG5&8W>X*T{3@+@uxWXl0-I%6Ssl z^h$Oh>~jf`4`UEp-4V%1n0=A_zK{~bpMnw%SHB@X5=rqAOwaT@WE{Ul>QQ$Vfw}NjFr`#D7H? zXDpq^Yq+`HNo0>vhTed6Q)arm1)3V;L68{AcZ1eJ4`4W0-^i$x(hK|at9@eIl0E{j zwl=Jt$OPlAkq}{R`PZBBa<=?(?40F&jx%hq)VzC`h*tfB#E+%4dO#^r3_e^KcR5=5UCai~iO_kB&YHWXPNUZ=$_R}`mZTHr`akE}E79i`i& zUc+>I^*?>`Ba5-_Q2@yW>RwMvk1jXxj)pyJ7}4)odR!OC#Obnc20mgWF-wnxTI-GD z5=)N+6^VZb;A}xEdU)OH!eeH*U3xU!+*+pGD26YK5rzffp2S-$oPchTpnC*}#xOx} zy<{+cC>W4W0WH`JHQb(N|ID{N`=^CCn;b&BTXL%6jC+^jXt>cec%Z4BI8q>pMjAlv zL%=d5YB{91dz-sa4`re`B#rj<6C~7-1M*hmL5SEwQhyW97HT8Va#nEL$ydP%CA(nt zJQq~%9{Ob0G%RzW_N8oVJvz{)VNr{*5w+VTRHZ-^C!*ErT_~X%)?6A2Fd&CUauWdt zyP=F-NQyQce0$7hJdAyXOk?84MQ~$SV6}1z)_a!$V+J}s%CfD>(Vr9zJDXy;!Nqw0 zPeKGI-gk;G704V|JmF?+^;@H3EA`_rW7oO)`B8o@#!pKgwK;AhAPnTa4AT_?!GXPD z(Xdp$tmvJ3!Yf4k7*|;xyjb*&N|UL+Qh(+je2#j2qYX5B^cO9TwFJrRVuHgNrG}ce%KY1|gY-;RdY59}l9ZSZcnjeWs+r^eaFNl{2|EP@ zBZB0JRt-2r=tD9DMhtA4OJ$Xq*qa-Y=kxrXWDBlVjIb1fkiBkTZ{O+`08*x zdu?5@S{o6Bh6d(X!EAG~X@VKNO0{LsHquNIQ*WoaFyuVII93h_ugVnaibgbt;jZhR zO+=0Am4z!EqQ5DeSB0MsEMmHvPqU$(ZN-z8Q`0MLEL;iE<0hOpMem4$jlUp=P6q#p zUZZ!pwja^6_tC8p@uO(-nIB4tDW0^PDdz_4e}+Pd;b|X28*i>Qq|dv#OUdTX@|@qE zhk1b?kC$?=4P>(fGE##ohF{XJ|NfF&&?Y3_MxZ;PxT0B3s;vns97x-30c1MRE^7-I)j$QkDX0dgx=%p$@2v*> zB)>pxnfG_sFq=)@{vssY#1PXQcMZu6>aTFuSV!^EqkMEB>gvAtuJRq#YnbBOV&cD( zUuXOUKQ5}%q>-#{ zqD1{lf_6VNG@j$+;&bl4J)LDMz2L5bzPV`WaM?tFbJ>6oa2e7KE+<9r#Q@B`)P=mglJqZ;v;YNcHkm<`-|-a7o{dDC+KQ`Ct5GSa z3a%T2X*aG1Olj6}*1!Ms6%uvS54(?i!|g(jm^MWNJ_jrUB5&Y5LSGrfj&J|ODh^D2 zi*coi>zA-@_vCnJQ|!s1_B;WzkavxoXKx=bxJ!#)d45h}oNeF$!mb-~!Tcnu&cJ%I z4JmJtwxQ}OJEj1BW>0`W^KT2CIk|(5DbOM0^X2c1VGSK;;qeT_76dYwJ z;HJp4UtNpzFcuuk+amUd!n8jN@h)x-84Z7v6t|$-@6itMGc+jDS;S@%BM5m34J(4S z6YDbok;0G5s36kBBK;g9O&b}yX*~z^Rh~%LV$kh=IU;l{-HbM~Nx2H$tx`mn#|DE^ zp`^B2-DK4VTt8fu`>v|;|3PB|u5Oj*#_lp)wJ)nG)R~8^N|Zf{5F>3-rT=JEP&Gx> zs+u`^0X4mKbkNIv7{pxO40Uq30IhO)Jp@c&k`Oj6iZ^=KqMz@j(&*dQh=Tir_~4vN zmPJK?*s1cZcOjHkH3o?eqiqHhp1jRagjRJB%i;miroVaX%Tp!%rUahaz9WBKt-snB z5A=mbUN6YcPyZu4Eu!YwyA(^#+~ZI_MvBv_Fu)Oi_O4p zmEApnG(EW0`Zr>5=##VG0s@vL{~D!uOIA;H&Z%;48j`xI7!QNP0yM_e`u_xQoj7Z6 z9?VHvnvsec;bCP#-FsVE^U2EUO<7s<(^i&yz8!`~%kFJu%>xZk31h3#g|1;`<>d?` z1{1wEV5YM|c`0yk#P$>es=-9cn?(=Ci6H_}$qgt!9^}UOT%uOuBvKQXmoQPZWvtlDec?^{FX! zsZp!gQY$^d@RBYQN>y8;J~JSaGqEAxfgWbHs!+40wJL~WR;vm%Yf7t zvq|d6@`Gd>Ss_Ny=b4L!g8n=DoSH_ad#G_{7iA;Y>KCNe^ed^vv;9h{^Hje+^{w=4 zN?DZ#!1|1CorsIO_&eL|i*-SS;2Bo`Y;sKzT*UWP} z+OdJ0ZNcppfSVz7tS~UD3ap3*;B~x_Ec7V&VicU2ypb^b?4$sZ$tUNw+eWHx(NGoTpk_%FCo4~ z*r9q#Qu73Wy*+o1273M|PQ_PBo@*vwH1dEK7 zX4SwL6Lj_FJ4XW&$0r#{W4Hm?tn7sx5}plP09y(2{Atd8OL`Q{K}oILyAea7*Lph$i!cw#<5oZC9f z!++eB%}{cx+)$(tVyLJwBM|k3ql9}!=5^m;wAXvb)z)x!3uk!9A_E#>q>Z%eH%TFg zAG_`lo3zAXllRx1dx!s9xCSFI(lg_$K3Lv_DYN~C>)*% zN#;Iu5^#e_=1t|cB%hbIVF7tc0QYsjlG|RVW{ko#x<}^9xxM%jfyE*XUbcoWmFI4p zGksm`k^$jueQRb;wAe7Nhd;t&tk;HdmDD|9TyQj|q9IJz)PixT!NvZ6Tn7u8ae*u# zro_eK4aCJg#D!SqN5in63rcPT>976HUp5*1dD$t??foBoV0nA>V1IFOalYVBr^}zk#oprL z!r~ku_(lB-KhDSx5Wjp6LHexkOm5}4|Dm~EL8Ys)*rEHn2MVtF?Z5EpI^V9$Po9$R z#;5Ju9CDi8{*jOJ_Ceq7PoDOhr%(Fym`_a`n_HS|o?h|kvQN8{r!0i0nt#)$BcGO& zr|i5-Pd{%jhdf0Cm3bERAN&3Z-*-5jI!%Cw`~ z8N5kjc+47mH`47to$a>RL)UxTt83j((Qp4phGjeck&jVtKl&nrOY+x_OwCo>@xSBC zb3UD#s}>7>#;5yyIyF}fMq$F&FMsZzeV)B=dCb4$>w#iZQjrj|yxu3iKRQ>av zW6mS)ba#!o?FgHdCn%B;ps4p8Vheyhhu8vO3YOOzV+Ki{*T)0?vttbO`-RytF`|v_ z)d5&n1mcx}cmL$4`Fta$PrUnTb2~i+ZSViJPY=b*xqpxT9ZHTnWm9u7gLhB+MsGOV zzdgz2v%uOzE74k6S)FBC%IuIAT#Z4E1Yl&?!H&lunN|XvjlP&z0w5=0ae`8KWU3@TC}ototSIF+myUoRV%CX6%{l4BJhFL4d0RRM|{@*rl>41qUjs zhKer6a73_+;$4YH=jSW|CofzoepFpAc8Rn4hj^h}t2&tpZrgKGf3r*Gnd2JK; zF;#u64sg)>i?Fepjasgq)sO!YH(%w?@VAI!`-SCVB@1Ad#p?~kc0@lCpXhG`-C*<~ zDqI>L56&CpN1BWto@cB<>_lxWrVHaWjN7;gmg#EeaBSouKNg5dU2rF^rY21cC|)q0 zO)Iw8u1(zDy??Y^4NQU8EIp?w$F^I=+lQ-4X4?-|OTV-XX$|K&R-;K|PzyZTqPPSJ z)n)UWJyyNucS&ep^P6bTVg9{D5CWT)9RzXfX;e)D5PfHu={h_JtB>^>UP8zoON-XH z@Y%q?K4z zDnIR$Rszo{4|B8Uwt3RZYBMu6Pw+)Yk649eqhN|4q+^$sm}dNp$rXmpfbya@fbb12 zz46M3SsS}lH#h1qR4u~5^h-Dom>bobQ3TsJ5l>6JyCnJ;F3Bg;ydh4f8{-NCR{~kU z6>A7w$*2L*i4_o>2!TE!F8CTC)x$8KTLwkhDHDOG`pG=OulbKP0p=Q%QyamB%$|Rd zPvkb{$8Z;2jF1M|oWv?A1RQgKIZ5M~c*@J{U(YdwL*2G;zwBBGEpGV#;zCJS&Shcb zSUd&^U5K!)^{|M2(@Lk}--H=N#v;ch?D_iP@e}?-I^2C(P zeN3LDZ)3PS*o8ft;S})Hn0=5X;enwq;w8CTj2~%!$59ixJS1EGZ9ebjo#7Hr@@oNC zQ2~BWV9adn0plEl3!u_Ib5Tcj8{i=-b4L>^S3?9s{M*`B^t4sx%1+{8fRK>+TCy4f zBZmcZFV~KuMRewq9XuOy=GcDvP>tRFcaacorf<&XNqgddZmC#TUbvNehs72)*mzZM zo0gj)7Af}uLG^Nl`PUS`)+IGo|J_jgLsAliAPrS(#07~ckcC_4S$S{)0n)~aXTlwd zsi1xc_j%`D|6Dja9=P!a{2b^*55ox0h_OM%HZ5~dM(nqFA{{I@zuZ~k-JZl)#d!>@ zy!NmI2|vkEmo!7Kmk|is#35D93h zYZ66%rgNNz)v6#T)dG2gdPWzTWRVPr0&0!H0}6NqohOb+2IKT|keO!(_wD&sc`njR z@Z)ZcLI|3t{F!gIwR$hC;t+Vpmyh>Tl#JvkGWcMFB19^7wM8k-7ok?bVinw68x?{2i}gv< zdMsx0SPb$QOp(WgKn96GdWKFlM6%Kl$vl!d^q5&%S&>%w1FeufHE3le(F(jQ1}KV* zAemWOS%lX)&rj1-G#HZ`;UCDc`brzyKr#--YC@_{PnCU&>=LyxS@h(`(RKhY_Od-YJ1V=WwnZl0cz>`Nk{Uzuj6A>CoK5G8)55kE*t0E3E zwV?%cRtF5A33U~?4xfaFvi--9prudrizWHAXEe5ax~`IX(g)U@XPzB99?1o3GQhPh zVf3zsjOW`D+Dl7UxuiES1VXuy9GKgvA_xKROneBAdG zGL~SAVC`rC%`C&0RwCcZ98M0oJ83u;4aT4Ic;)e`Bm-+T|5}htq?JPUC{v;Zyh4f< zgSHSWk{p2!)YDbG=n_J_6o?m8wtM{p$zV$a$;1*Zf(0u@UZ<&oTtb+Ic**BB&t;Nf z{I2zm3t`j%!9dyA_M1w8#3Iw5U>)pXG2TY^GmH(bZ1VLv6AmS43Es2%uUY_up0;vE zw8j{76B3t%<_j*~2PL7IA|hKkse?pvJ31i)hp(>VKx!#(WI zMY)~oI}SCFWk+L}mrqBmwu_3%Cma>gxd21loB@-Ci8s26-#b2G(00G#BD;Z3xl1XP zxvCd}Y@UoFg7BR|-Y0c>X>NKTW>SSpIy_P;W#&>VopNUwoC>CB)%DF{c&8Ozc`)q+5gM1W^XvH zCVr_sgNTWH;jCt|`zkwQxgy**b0d0K<9i5byv>n32z^d^p{7R=V#nt5rn%W}ML)LM ze*DWl`hjCe1m~SJd}5wZr=qD9(BKII{yBvWdNrhN`fOUGCm$~$7Bu5{(cXLbr>TnLCSqySy^Zm~ zx!k#wFx)Mw?N8zcbE%h$ya(16T$rg@+3-92$A6TUz5ajJb>Tvi)c-F{X)7SR58+X#}gtNIfyQJLS*C~wl{<) zMjnTF?R(4{l~~7Icz{IyMU!&6vxW_tY=x=F1fW-Kow;pbgHM6eg6f-mZ>j$CICYWe zqQsM^K{OxB8jDG3m#F_L|1ZNVIFno#Pw$4Rtu+kVx@?(_sPeIrT z!lmK{c$W2#O_eEh+45X}XsQgsyN{yxPZc42iL0;w18*O0>yzi#|DK{FZ4ok|tp5!~ zDQPwxa)s@`xvN`I4sr$>tCb}*J~M^ITP2tfia5#q%gMFW65 zLf&2we#~J!gSX@)*uDud$fN+L&6zTm`?QD{_mB}BD-I+M6_}eUwGrsC6>>1@Wfn^| zR%Bx88QQzq-Y|`3A_<}k#i%7T3@x5DG#K86mOMkhW%Gv}Lykr8O4#TGQ&MJHT*n@Q zQlA%mxN}?L(b1PJcS-yXd|3wlJnF=i^qaCfJD=zGR_7G@HHgMt9knolm)!a%~xz~a+?<{#r<8d6qNVGXJVU| zAi}>Ph#0#-gwFt<1kUh^{qzTc_zv}8x^ne;zPPg<`i&-4PPY6& zC{q=aqv%={hl=KW*MD){iq%G5j^qUxkge{c$+xN=hh>d^+ClkXFHdJY@(h{Kh|qyF zZATMT$gfrCz3Mqs@$#%pDtb8OwBdmVi2EMq2x?e02?+qesEOLk9&Aeu*l?-D%0q+ay%1RhaoUSWYgK2T52cVTMa_TnvBPgG6e>CP&^0-1+Y55JM_HA0A z4St}5^Pv&#NHCys9=#oux{MstdfJ54eqZQs^2nA+U z*p2Ao?)~@E+oSI0%hOs_I0>>N1SVo+QE{RJ@0B{xAucVaK<=-NG@v}!POqtIO@lgnJpq=OPI4Daaf+> zPRYAjF-9eSSA9}CdpH?Kutfd~icZE+ETi=5e?np!*F+;#%@}%!MNw{>j5Xs$jUyZ` zE(!=AbT(;qS!$QC5-Y$s!sd(SQ?la_>c#NCOMM^>e{c+ydI?Sb7QBv1{0*=B!8E|& zb^XNa(#Wh~IPUv>__=v6whi_%#IBZ@WubenZ1#)yZu?devrH{E=EycWpjRxsB~4iP1_1X{?Tv_bzkj4e)}9I1DKzz>0B31o^Taq-5X^V-|-w z6kM;bgNL&tMrGHL;)9P)b$>9f5IAY)L(V9f2Acl-< zvGf9lPXrfOfITtAh{5C;j+ngJl74W+JxJzzT9WzItC0-+AmeysR(9!3-Uug&YR^Kf z=xf0@;0aNmsskim;Ua^?s})hx_hs}OLG!%NRCq73qe;rs+WXVq<0NjLV_eO{M%(Hu zW>BXk`lt(Z!69^`{cOP|9SE6Z8wCPME|S=kks_nXzI|?c<6h20QxZ05Fk0Oiej@Uf zmB?Zj0sYgnjL{bI$sAPT5RrohI-uAoc7xHeVper>CK|DH%v%h?tOA|k&qp2Rp;`LG z7rJHr&}qGTFT!v*-kalLQSOqZOny%E$u?r7-g@Vy(FU(-8QsFGx10xNJ?LrA{}ApQ zxM#^cdCr45Zh0!Tf>EL(s zs1CMz6U`q}rD_x^T6+(MYqRsVV7W!TdW#D-?ny34xvIKFXwS>(2uV>nqM#FuiIvY^ zAH!b?^$)t5$wZxlo#3Ah-))L$HSz#?g>Gd2)!5bLs$2yF$3cCIl6OV741OH) zxnF&aN8OCUW`DJtnoCk=Kc1GsL2NYk(K1q}XZ(h!De^Lo`C@3Th@I*tz6Wyd`>)>M zFY=JOk{X~q%LP#0&IM4O;j*0I%laztl|KOA3ccnuIAWyf=@e<|{03CUuLb({lk4)R z%SiDVBScW++=4;{&$>=Tdca@t$~|nYx?pE})oV|cL^OTc2dE|0Yo*DA2x(=B{63R{ zFUA`vKj{r-DkPGGB07s7Qqt)#+Fr|WGtQj08Q^>$j}%F-Re?&5iPKUz1+>x>Kq#pn zxqy#59MgD_kBLG#!{tRt=|G0Y2`J`tcsFp0E=&ihOw*4ZQ;uQ?WSpC1BOl?Swzg_v z_^Abc()3u13db8~9lnG05-t}W6-a<${3li5Oy6OdXrN z+69P68|msT)@zQC+7mX zgq5I(S(T~>;fc+$iN1TczV)g>Qf05u@^A?j{^d}Su=Ex7a;g)amMgGLOYIelE~;c0 zsbpLws;d$W%HvEY|0^Mq@*t^ir8@MN(w{-@$ADRx?N2V*(I3-Ru?BY{Qc5&9fs;;dz;p2Br zNV`IENJ-z5m>S}iw#I`HZEcY($1tBM7Le9CFIKn80>o4f+at^Hc6IB$D@Q;kl38Ab z1+0*sQl!3BY;ITp87reGu>j9(U7xUkG3U3pGs`TGZ%u&!F&#`X-3@nmGb2I#By2^f zAEQ^qH6F8<%k=V4wGQ6eMM;#2A$=i^22!Rp0+?ATgAbwhrsE=*t~H;+b3rOt)2EO` zYLkepwd$CG4{QE-qYmw3@Dl>dzd<-e@3I{ROHO*8}XVRpMEh?R9 z9gJt9!Qz-oz!806RzU>jn@-3A=K|@hGpl3CK_YC*OK(9{$=yc5Bks2kkZjj?Ki-SO zMXEKi1fdsL5J|p|HG@91F1HKLxP={Orx7^y_w8_ynv#bfcc<0l40(=&|plaVaz$fHmQ3!=7tAM zW}nHtb(=0bRI79{drYPYDy`K(_&k~Oxnj6@`zTN5u3?l^|37C)TM%ljSj^83G1EFjAV1`;$lekBVK1Wk&`> z3!b5s0TAGR5s3o|aX`?4C}2R)hA7~sm9)E`(w#i?LI4FqP&8JKn~IPc_vxIOJq#U$UU@;3naIN3!b6*d6jTgvc15J3X5auO*y>dVGJNe$hv&A^7X}X z;UYbrz2%lkci2S2v8k|$oi5R`!kbZ33bsLc=t_*0H)a4Xm+kuVN`jO#2|OT=&wvJW zSUiK|@t8AQjd0MKWP{XIj0i!ej>Rwp{LwgdcMT9NY)rnM_U;{Msw#dA-%17px09u`DT)CrIB5kgC#*o0(k2--j%k;KB>xakRCi$9)=`9{ zI*O-55RlxYd09{ncudY5@NH1{gM~$`jloRsYQSU^a3KR(m_`&= zi6~^c^CZ)~Ylj`;>sBXa*qH+7EBUFG0y5SZWnn_@t7U8vS7K@G^gGW zaSLGFc(i9oOps;}Wtr^< z%gQn*Z#^iQKToVuXv~YaZ=C2l>EjKKe7;U=e65;j&=}pjCxx0fGEOHEgt0DmA?N!zn^1H2VitFZ^l5vSFQUG zP`ZarKj_*uGIn72<7|LS_37+ah1AlaW7J*Z_ExbSj^7s9DLhakrmaj@vqYMM>S&TN zNCgP;mW=0&O>+3OhY)`Rz2{&tUo-vSWoqxE@VPKG{L4(@I(doiDtBkzO~29-PUf;2fj-hubP2T?l--j>BginZe2OS&aflwe9em4>U^^E zZd}D@|N3`z?8@1{`Q5BWsVSU5t@qx>_~=Ci$FIbg&P}N zt<@v6G+lWMz4bQ!s?H68H#Q-yXRM{55qdY(61l8db6KuIHMtlNmrFTNe79klrfS?< zU=%a+&HI{P)p+0;En@##>k;o~>e;y^1TQto6-xd6ocf`)h`@;-;zTcJp&*C)%Y8ng zt#Qx?KPV6LGAiXgRtWCnUOr)k2#CY+q@DkE#)p#PazIv6@MABN7uJud#ZDK-r*?sI z?)nL_5FJO=;Xp|S zd|lEqy^?m;&T65uY+XAFMpV60NM;XYyNDBu=z&Ldg()rR*a)$iZ0lH8Ye0*t`DjUW zS{!Y^k5+3c#nH;SR2*&pC689g2`_!L+UwpI5)c)-1-vA5H`nW#y>H^AZaVsad4SlX z%{dhzg``3?1|E~*W?DhvTi`>bFks_A`I?`foU$sLT)L_#B%`#fGrL+{lmIvZQOQ}M z$u1QSsE~tZ?-!XsIhr*lI*i7+-Ma!h!d})F@(*EPP-K=tc1*~qZ79ZNpbf=rI5j&| z>1NU8ZI6b6kyJ0fdLISqpsG|E4u{1}wp)TLXthE8Fxlf04G-qxLJQ}}dW`Rbe|77s z!nT;+tPY4WZ5|;tbo!PB*s~@|;f&67k*BdY%JO)2kNlB3ibBG~4x{LEVSbX5?s6D1o+?^f=liQSDtu za;LBl()NrB0O$|eqOOVsZ*xbs#NABOm8V=U?SPdanav-aS)~|dwrHspC|5HEBtEcw zsm~Fw6Hrhe25}ePu6M_c?5N9nbdYo2ctR1{y`@-2Unjf1x0^zc`G+3Ud346DFi0R_UoUIq%y~Ri+>| zs85C;tqR8+Y$VKNciXn2hzz7-ddD;ve}^$o@~Z72EUn}P)S_&6VM!EBh)K5f(4Ns5 zvwev?_qdA%J|@boorU6fU#2ZN*)8fA$8(rI_Efwch}Y+p(;bjK%~kbc zSlacll9j`yuVKJ!p;^OQ&y!4IGgtJ^)>T|VR%;Usd<`Hp7M`q&LStE2XLv9YJ`B5D zXNs$@PctAZ(N3AHgmV>nM;ZKMNm#eB^hTzlCXs}|i}`uozUBusli<5#%{O7un&!$J zY25%42!(51%k((by+7%5#gJd66t0D&=#Z@ltc6HgH-)usU5NeY47rN*JYz*a9EfBQ zx8;Cs*L>i*yI@k%^I%m{RS1X`tLn=2JWNb!KK)vx=--b*z{T~vEpjK~5ZEH%nn9rz z1Zt;^jNiiaHdce|7QUAPZu_6%x7togN^=mv>eO@uZeN(zSg`UAvddbB<%AatFuYoo z2jB)q7Qxt;&co?$5EFN}_NC`}{RTjg6@(k??py_k;Biu@aOFW$kJc(DmRhR&qN%oN znlY=OoD}Qxy7C_lGm5Ua;z(CK4&d)fpB- zgo7QBrwyd%=p8X!3eG_Z-^IP4j`C-_NxSn6*a~jc65)PnuGA+N{!<>tWxGi$+rt*@ zK6E2EBK{)wi)=2L72YrIiPTja)WH!eWqI|(&@OxW1Aa7^rbr;Yk;+p@b^RD?`FDyx zekT7;Pe&GfS89L9rrWGNy?LgTwWp_>JDc;*(h}PMz5>l?_fDI3*nrTdxswoz@o)H+ zfr!}?-WLbK(Q5?hr_Uly`cp=N;IWbF8wp^0a#YchDar zVnv1na-h@0)!M*!cZFTepXpYd6A+=VZK$JD9Hoy^F^=ep5A(gc!Z8l( z%Bsc_T*b@j% zBz@`I?fr-~D|yUHBG#_v1TQ|WF--6Dp60sTIq{ofrz(r z93aRYC}}B1`xvLhhk|dw=Zy}}l_!pCKLH<4#dKY!2gBbrF}lJ^i)MRv820oWDI8ad zn^sJd=t`fr0@RbN;ImeM0+SU$EJTyQ*o=A*7dOEqB^ZF*e4ae0m z5&Mq%O(S&2r+U-WdUZN4kk+p;W(B@0t$M19($7KS*2S!MQX)oIB%=n7x<};@r7*6( z_J>geU$25q6sZD4m=^N>up003-=2Y(P7KX|2VzqZVr(z0z&)(`EIh8aqL4VPAtrT& z$FV>jKeZ5$Le<(IQ>?mI$S70|b!#nEAna9@3j-4_y{bYd46mwIc%}Y^-$;>oa~31w zWljJ+{1A~O2a@olF{6e!ZmD{_5ax23;41)LPJLN}-X9^$dT4#|j*Z5$j*bz0J&I`Y zo`HP?FsNcg-h*#fgK{ZuriVfEkdsT6* z)r&tA_b7qt;s)L3cx|Bf^~lq-7A&3|UL0NrPv~(T(=z5_;dQO)%K0ufUvP!9B)Y;` z#uQ=qN5d_S1Z#70#Z+`~m~mFa#9^jvmbL^llxZjXA$}8+v2=XSR9c#~mX;@1np@_U zk{c&yH7(?_-e=|-P1dPM7*Diw1zzKQmramifOBOPh^O8#xd_C=i@7oK8ck|Vlqvp3 zxdE@qsc1@7M=~CZqY$MKBo`6YGAbb)KYtd5^yE<@tHAm$JU zFDn+W&ib8B;8HI|pOo608S~PR9Sqo<_Hmh(pr!z^Terci@VCtHSG@E#l?cxUN z2;#ef<_eu%$a=GWI1d(&1JSWVhLb2`t0Ed`A&=`5`-Vb{PBNZNAPdr8j>l-od0Zd6 zP-9%5jYKSbVO-y_F|dmd!ra|d9VyQI&Dx_X`_K^)y^Qj3cgq7W*C&pI29aPrve?zO z!upO=V-Gd<Px>aXH9UT~l zLJZ1qD{1c$<2L7%Sq&4Iq{LvH46};;>&Y-arL{O#^R32~K%!_F2X7qkLni;)Xj!NxZ4LAi*%7sJPGF)W|* zmvrT9k!dbaJ%Q-9{w~GiM0X4fGy}on1cr(MfG*ape5zOuT@?cZ1IsNH2rz6e&7>S% z=Jp*9aa0m%vRGbjYhe*#?Ev*Jxl$-IFzMAoF&5xT9VJ)-JX8k;_&ZMutv;zCnh7JgRyvJV*&~ zyCbC7&-hw0gHkrADIQsYY)~!Ozc<|eSkHL zXjk!+78SS~Yu&QgRP~o8lN2f#5j|Ud*8yKPeNBZ_fNovSPguc9A^H+-KZ$_W+aKck zBChz&TQAisTw7e_?!J+$g1D|uE3KQulsv|iV7#NpSjeI)kBovM>4drRIHG76Q1`14_MDHZUCrQ`R6IHp5*%3wtTuDZpHxEgv0t@EQ>G4#_ zS0mZw*TqUk+PiC+#CEJ9DpMh02CBasNAr+;%lyH&jGAV?FIVMtf0?3a zhSJXvyU=~-z-DeONjDf{F*(f0VXq|sP3)Qw5Z?w-j^t&U?+y*iRNkF-$7(VK5tCXq2}~r9Q5X@I)Uv4NLG=VK$x_f9IH|b?+-(lX z4%F09?p>zLh`9F?x}u{0Fiuk4BB37F^*TFun~8voc!fGuWfG;QczR`gs)Y?%dAQo{ zPS}Y)7yHIKw8VE<{nwg3-U`=}auRNKSV`--9x1m*<)9cfY}DfD0D~n4u(l%ZEOn7} zF)uLe0)kio8&QQOg@D6LAWJbt z9{^S_H8yo0cQ3M^cNYghQow7ofrOFGFd-P`L>P}mIuf>DS3*v{625-DMMT^Jbxmo3 zxUxOmJXq~5^_BVnJ!H(^Gpq=@>SJ_F32Rh&34|;pwM*1X;tUSExG=_I%hkqFdLhm# z`RF0)YUC*R58x;bU~L?Qg{zFCG}zvar^p0F##I#i30FZ2z$r^D3%LqGpu3n*;wosM z##MT9u3{-#Fr>BV1O=eTRjSTa&K-fPY)%itT%4;YNK+goZd$A|!R+K1(FVLpjDw6# z1Z>c0d3q(=NR$JkV_Rb!3al*aCXI?YMlOh2tU1nS45_MfZghtP#s|tzu_*``eqYbT zGEx)iwiPl;YA&cDJ_&-5 z_d908!S^8}cf3#9o5}5(Pm5^=Lq(wlU)CC{SX5V}MdJ;|@{Z(Yxkb2|=#F#10$okY z=95Bdnf5eHD*%SYL(nP6C6YU}WI`!vj9!KSt9BnLcu>4{0%(zH-Iq2+M++sB)VNGC zwJE9YvWaLTmrY7$N~K!%Tv9d>0Jsa=OjI-(sc3S^bO zBoHGJfv*t|nV2MvB5bQ|*h;OTx;AX3)KGw06hSGKh5|I04A@pBqZ9ib72>9o>Yc!N zBt4H$K!|k4rmp$#ax#x7@7lEb4go=ddGANkC-fO`icCt15&D6#Z0Tu|0MLinMP{ zz_7Lg6MpqwGuD4htqDp{S8UL7dh%ZFx^mri=HYMfm2y1o&=(qp@IeTIxQ#?3V!)>) zY7g293+rYrV6|xS;tGH|_ycudLKu&+Xj8N&T&yxfM(LX-8U?}++O_T^5oHA_?h8#s z(O1$*rQ4jfQ4_gZ>GBsZR0nHV*wWxhGn)oYli=^O`2w&huFtTni;gp*Bp*+5m1Zwp zTiF&^{7zP{)2Cu37zO>UN$t!5>% z53lCq(xwkaMYg`?1h;^aZCwfs%Y4MPCuEee85p`IY*nAY9(uV<1I4Ti@y{I7uhW(7 z5+wYN6cAARxqZfO5uLU|b^U1kuxR2R9G$s<5DN__J0k+s^K9i}{~0n_3v*;b zi2^mfOCo842sg$Pg`(NqO~i+V$v7;ngZ_IT_h>{mH^6G0DFX8J8yHU?}F#;$gLvKZ3Z~zj*%KiBft^`o!O! zC^bJWFT_XRK|w1$!^H|DI}lX-<(oKGlT?%x6-GoAC5sitgJo1ymk|UL_7lc6-Wo*` zCDMg-{9Uf3qBGU{q2HIG=zUgEs=uQYJ~D~SPlcBN$3iqe;_eSvpzZz;D?EV7$Yu}S zBJ0w}WkG&aHLx2moqv)ii+ZgoQv8WL{244yFp>SaQ}I+#9aEh30xA{}xtb`QP)dVryQG_Ua#e<%=%_L( z*8x;w{q$67;y0(tz^bXrRT)v2?81@uOmWk2B+f#nj$3+CRWkB(RR!CW-<Scu~W7FGSWsvND!Mva*cRb3ZSVWrnyQ7g0OOrr{RO>%mhWtHEMJd~b}1H<-{g zVrXN;y%imyXp|yHzly>}5rP?Qu7aEB_0~`uCLq*;{e~lFq5YQY-C5wF`Go3ASa2Nf zB-*{81;>_zUATUvUEu&S?W&RM-dJ!@JChGPV37qU-P<IAqBX- z*a|Ijl?ettqhqX9vQ2KKRj<{&2>s0@tewW&qv%|2pyYmjV67fn(7ftbEE(~P744MZ z_8i`%Y2HDNw(Y}uC1tVO1d~0mlP-%c@0Xm`zACGUzI*V5y|xY4m?peEY~SzRQF}ll zy9Bf+e0TqqzI zM>|xWHDh3{)Q#x07r{EYj4vh^QP2W%5d|$E7g5jxav24A`Am0m5e2y{FhV#8ibX*S z$VC*ifLugD3&=$jw18YhLI1nR#g^#|QIJcUb|9BF?LaQt5S){X1%}!;kV|ilcgUqp zJ0cg)e=MAfTugztuS71UKiQMWrA<5;xwt;vK`^dUcaThej>(0H2Ks=$Gu^yT#FJ^} zeIP4_#K2-=Ot}szP`EPE`rnx5E(wmfM}v%!%1;yETBRNjQ$B}iVAq@8WhX%X@_jc{ znB#rv6IH#;^!B%&Q$6io!ex1;>>by~wU?9gT(05{@n!WLXn-h+WH~ooSdXxM)R73oa;k<{p)M ztQBxu07%{m`mU>GhwUowXIyZJQ5FrbskK-wxCH%5Jr`YY!T%JKOd?n@b#ZRUB8v+y z?iy9VZVg8Pmxgb#TL}x1^T$&7Dw<0kys0o@zEEO&8BZ5|RmvV5D&(cK@nAYO$TU@9JXaOWu_!l!yu?&g7?Cyz z_kkRA;<|kCX8w{?L6!!1y2*ZO{ur)yVu3ZQR%aAak*|#CF|m#@w%bFSB^m#46jm`P z(++RTRiR(>3>UIg71=Wq&9c_}GteB91C(nM6;5W(l+ZQ~K^Oqt7SI~pLJ$hxMiPK9 z17OtwNFY~65*G*HkO0UZ0JvZc4m5O$#x4xM^s7II+B20NJ(6iXbx0bE0fN^FCp_pt zJahPzG{A)eHOR(OWSx36O$0oEj`(m7f`G>}5+-}baHM(oyMvl2gq@v&#HX5f8Q12l+Sn|{fCjays$I@mnARcV|IB#vQOBT*j;a1Uf^Xgc@gAlMP8WK zMB~Zig^g%5lNWJBxxDDsh_nT_b433H@}hf@yjZOj6_bTOR&MQEEpIW>C@3weZ2yqiH5#r#-;GK(?oPwfwxd6N` zOhH#7UX&v#kljS9c$X?(vSUq+*uFVNy_9$vGV!9N0Mo@5ix(q~C||y5;`m=Ejcfxa z@@^?b=SnE?8%rYxWiE}rU|bdlNG^LmYbAI|@)Gt!!->&S^Aa4tl;Cg4O2nJxR(KZi zFwI{M5U?FLYc(i-%pSH91w*ZI#)NICUt&4pH@1a@tC;L%c-V ztJMLiqR{uH2TXj#-yz?=^l>YRby$gPs=OVQXwgmviaJlfDqpqx^vQ14bkFYuX87aRtRTmL|$Ti#|7m-Y!g$t18A= z4511}AT?2paE}e4!RI9`Dx6fHgJIRK;hSmWfUhynzJQHav31 z^-GCt8l1Wy{0IBqC0+NB}xiY}%7h7hPh&UUazhh0}#zo5~0#KmD68PNDVhP-wK8X?ImH_+y zP#g_An#_icvsOYU@{%)FLMO5k;piNe;yr37r~<0Vev~c44zWT3#ti$r+6DUj9?zE6 zb7Sc`VVEUa{b6ym*A{e@ov5OS0gOOaS|V~ekORFaM{dm|c|@)){l=Y{5x-i+0ay?)l_|;w{Av@Suhd7^K)2y{TpCc98&L>3dEhb)h1|wE6JouuY)<>YuXQ!E876oQRckD9@SATo1peyLPujCiK_K}R^oCwE=rFD!7+<3x_Yyns=wJQ(gYp0UuIO< zc`6%MW!Zet3=xj<0!IW#B+AdfWv+T zp>YN{u?+wgX>%T5VDroR#bQg?%kg+QBOa|Nc#4b~OFVFbdiu*>`h|(T13Ef(Q_R_< z`(L4S4;)Ga)tRgb2iR(j8KAQC#x`b)Q?<^?V^3C%;4!ywu{E%D=B*t&Yav=9AB`BD zz#_D={l)f-zara!%yTn4be<(d4wJIzSW8r8j067}R5=fir?W897JSwAZ1x92GRE0N z$zE;*mU9F#RkI7(52*b*)i5C$L?(Yt8twF3=`IQfY-^BDt73o-Hwd!+9L zUL1nFbELWK0&ZHP8cfAOl3p2u{J|K66?nXqltjv2DBsV2yI7brAwm=*JA%ZjxOn~* zh6V=B3o0cZ2lGms)kq}xiOFDO84Gj`)M&4hwfEBA0S+-pt7HkKUAtEbrScw%pr0!E zBNoV#*4FxzeVPft-gY9%I3YzM9ak|+UY#5rXE8$Eq;5u{av7WCUV^Ki0!a!C1`u4I zz{gmT9M%joKzl5&7zxdq{U?5&aX;?wjogph`xe`OB71|)RL=Eus$4TYmch$M!9IQ^ z+|7lcM$t>zi9(r1q0t`C%7kd1GlE7;DxI%Jq_I5i%TO#YH^8)8-k#pn@Bv-OD+;#E z#8Hs?Ce|m-Lz+#-#0jx=IhX-2pwAT_%^>z*B0SZdqs(7j zpETNPS|mxGpaT1;g~yGXBV}Oj`*aw*iCrd?ZFA2vp4J zQ7t|q4cX)!ry5uB51(+MKF}o>pJ>bCNt)>)20GN-V4XO`DOdsqhkXq~zHEw=S;j>t zZgOcJS18FK&>}f7yMg!fs&BU&j3Y)f9+bCu+Ar(4upvCS=QCSWGPh^8rsQXN36OjX zht@#&=lW?u%Mqpl$b^!(Zj& z2m;eRS_uyDF}^wD+LC^fH$B&6-}OekVwSjlsR63@Z&Y`X;Otnv)HKL$?1Ha)j`(0o?&kc-zb+rSrP zEnENX&a4%@k+g}el8V3XFilS#eX@J!{cKSA63lE1_3+LSLPI|5OKe+ov^_-}?w*&B z-2^GRMVW*fTrA1(7Go+}DvYyli;%-XBTTh$h3g0UOzdFyjxx43TB)MwUj5g*c-i9hQo^iwveFnKN5VT&YWD zRtO4%iVw^FBS{?2s-V?R zU&z#}1xxKPy-21RnPnCudOcjBPppjs;%0DST8f#NCx?U8P&|}gLiz{WmEss;PB7~{ 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Πg|LPSRM2#9;~ZdtHKc!h)Ibg0ET$wS%wz9 z9bQT_MJGZE!0AS`eB5#TO-S|}7%ae(G2DH>r8^B-pm|k6+r+s4wlt4>HU39rshnBE z8EJ89bTVbtc~l^ow-Tfgv1<7#&q1WsL@p{-M{4F#uPzDH@Cs&(h`ne7nyFCKZmm}n zvr%@B6XBDVz~&>oBxkUyyB|vPH7@p?GSBYFDGLW*6`R<~+u)vGYeccm<2sA>Fyw@j zDfl#BO~LT07u@JRf_$A#D71#Kl|-h{=+#X4&qMl9WE4FudI^uGMpuEF=Vr>jAd^0< zcM4BaCAdH}uxTW|M2t;F8QE1Ia9_ zB}nl>ua@L@)-Y+`68~8h8BZ81sGWr6nV=`*NcU&uKNU?1X4tYVFvD!JMRiequbw3I@W|Q;iA!{gv4ny+o#?@vk^6drvT6e!`yg*=*8iDi6;qz)+ ziR9LfJ7ZH#xopB(XqoxgV94CErn!u!IoDc-VrJDc|3k2M#=W?WbUPA`)-|nw|5@Ze z998mfC%ci+6r{M(hjZNzLkr^%x}(`U1+ud4mS#FD$C}ofLmgDj5s@=Jx5@_p!?{3W zp06f0Bw_7N7%(`*j`~N$n+(H4QR$@Kc)Fej0eT?>0Gi|mR^4M4p}+4it|tL z;S^G)bnT}lncX$Ho8=8j2-8q#%O;+PI>EwW6qp~tM(TcD1$V_f|JKt35>VjJr5x>{UQJ+^G^y9vlw3^xm|ftFnY zD7Xaho(|(lT`57T%qI94^Q*7F9jYT^%p&UZwmq3forn~&`uaLk$hcK8moFcYP_U{^2F5awW#T9K%K}vDM#P~MkgAw^73Ysu zMaijz*4KywWe)imCp58#HC#Xpw}(t%kU{_XsK*TA2oBNz-$i0U9?u@}D2b#}Ct3yb zD0E~2?^x-wm=7f7=zu0qZ0JVy=Hut7J;kcTIpy=+=V2(T-p@FnZx=kBIWj#pF3k7q zsh!)PO%IGjb@Q{DJCDNH%Sv%+R^L9X06@<>4HV_5O zaeL9eZ~+plF3d;H$FpvD)J%?55G^wuv;+&w?Br>S29FJC!>XTdJKK?mx=*lI74*f? zytiYr>|17)P*Zm4YWbrO8i)UL3XS>Hh2K1OVx2)DW{Q}B*+Lo(MnN)&Y3rpFth*Gf z=bzi@Qm}4P@R?*$n7?|C?$mRX4c6L(HwY;>%M&&zVz4d`VIc|Zi{Isq4NA$#P(SJ*%ZX81D6i`7=oWX@IE72p+1&XJ02X4G`k!{GH>BtK8 z0@*FwmOvI(60%zsBa2Po*a}xPZMBcq6-Kw9lfE~NM}l911`x?1oJ0?$^pQ1ZyFroH z&`wfHdfkv_#iE+tj;L;Kr(Yc&IsXFPUzpGTEIpsQ=?gEopg&>;hz8qn)-Zdsfyrp& z45WBALXl_5K2{1^n{LBQRdCfY$J7ckw`xSQ3T zc*I;D2T5+g-1Qxy`TLaGeg;9byK*WZr9q@@COvx8USGV2!XDc zWxP0J8}!AGME!j5B^cZ*aZ}hZ-k|%-h70^B6`gD+rd#6&*0cz7Oq$p}#75;hw!R^HZdW%jki8dg(T(?HEQzK;I_WW{4 zA+F9->d?AbcENz8E@xLjQj@(f2&|Rg{&E-Nk@GK3IjXIy02d6q4;a;tn&Y9@F3e%0 z@?Asf(9Wo=R~`oFyw(Ol}e5_LTlQNXcbnTAn21DquPqQS9F&3KJZ zt_^ip01-RUSiCV9e=-Eagf?|kshDF{okZ1PWSD=>I6yvKAIVYbLR&QhWVnR{5>ThPfI2<1@tO44p{qoDCH@kbHkOi$Asp|N z2L!o0gS%O~lVzCM-D%vhA|8EX_1B1N;hcwaxdgmW`i15^hKri0&Ut*PS*7~Ijwtz7 z{4;_{&b3|6jWkEcT5a>kLN_Oy+6O}9^9T?h;eMG9CfiMH*{Hst#uPM=tPri#XWJ4m zi;BAcl|@nath^}Phf5T7ds&p4c7<5s4_>0E8y`(k=Kn>@-0Q?DZAhs+$zs?=gCG%b zXIZ`yJE{`WiwH>XA-O(PNonrnMWnp@ih`8KP=E8yEh_4kM^luhE-DRNRQ1smWsW{b zS#(zrG&4w~lzyy`@_|<@uJtjH5-D$5ZUvC`|6-8LqqB(8*OrCeS8{@CxQG*~?T^~1 zQabd?-DOc3{e0`U`PVkknvJd}%s5h&XUM5{gUk|WN&F*|XDH_ZNSFy3_ z;6L)7T7*4lBqk1FuFT@%EPBIe!!r?d;kgXruz|vXYj2Y+gh}^tF}sB!?2d6~U~*Bg zVq-2bzeY~jMlPRQvW3yRJOx?YeJwsH`F}P0s5=5+W{GqlXcC_~w5^+Onwd?!3p|e4 zBcpT;rme7y7??bkHx?{}KJrjXF?CG-CQX_?bImkH7$0NBcI*AYFj=5AY$aUKN3Ge| zX0!Wn1Z<*8)0*j!aO>B*J0vb}KdGXW(>I3{s#r04W4^w9mfcPG1V$2|{ig02#m*)t z$tR)N-jIp(o8*8{p_YmrnUt9El@cQ=dhI)%)EM+mI{v&xje2 zlMe@L{2Z8rn33%oUvZPZXq%dsy2!BUM`vFkzZ0`I!jj&R$A3-}y09{?F|RJ{Q?n=| z=wW_?ntW`88_;72`T9oEXO1kDk1gf@D1Y-OK5ApS1Z*4m%vref;Ej9(UQi%6&YtOw z3Pj3RKyKKo>79Chu7wLgQc~5}@f&Y0ITJu^s2IK8Kw4k-^lV+Z+~{&eVs9Xpll$-9Sh$puF+ z^6Y}wY*wn*{ROY_Hzz8yJXC(7a;Q8whC}742#3n|C$8_0%naMDhpw*UZ5rJ%yVKE1-Rq9`egVw2pMPyiG*==c%lS?oNE3;pAmN!hU}7c_!lAA z$kX%sW82u?!{-HvLWx_5$27m_Y=mr@r`n;WA)y%M|KHinbD8)iZ1-%LhLV$#?yWFaF!6NborZTM13Ro^8pMw``lIidYy2gk3D}xajQru~SFnT(> z6^d5-{?Tp6dbMu4XIH}!LUG3%ksQW^Kj%$C1Zpf*W>45=r`8^Cg zzl&(kIbEhmDk*HY#!xofk%uzW!HY6#UK@k5p-jO%dYQs17|NI_Q`9Rd8kI6OmMI#Q z6eE=s$CW8YLJIcq)V`%_=T6&|t(klJuAOWh`(%FC+eWb)=K9>v%x&a%5BRh8TzA&oSm{GlRGh8KNHY+H4GZ56n`_an#K{Je2 zDmPY1F=&RdN(xsU-cW;PXjM|QD`gCtpi_)>cxitE5mf{6QzCXRlKVM4P-`-eePuLVk4(Vq~AL zpjvH?^_BO7=2#!9pa$DeNik@S4V4r#l@x>Kn5m@LSV=Kxj*XQR$5m1cn&Y@iisLIO z2F-DNCB+Gq6oX!ILP#;eNat7B2&2Tv;kg@OJb^=!sii))(-;Q77=?GS6pkzu?wYOq zeqsgl6Z3kRoL`PvVW0DJ8HgNGVjGA^O`+uMg;}VstMd6> zqzEIEEvUDqY`a7^+xo5Nbt2ck=@u0Di#=T5d@-myV&d|@&`89LH?$tEMshBp_2}n` z)xr2~DdmT8a={?QQpzvMlS+!ElphYSN{XeFAO7S@ilvlalGiIKmQsF6-l(KlO8Mc^ z4=JSleuexsg3yPtMzL&Qvlv?}&RS>Eu9;-;Q022pE)5ci!85xI2C95Ev4#Gr<+bN_ z6k)8{h(X~dvpU*ew*K7CxP4y4P#ta9-gs`OYo8Z!Q)iOTBhT%uvd@cHsk5441J;w^ z{!+OJBmTFsjFJ@_QoloLtSH(kh@)&2zQQSvh|qXnZO1TD7p9QpBvn?iLM=nJb5sE1a_!)ojcn~t8RhfemIz`1^xqLSvd;&G zbt7Xz$5wWZTO(7RX_5TtFUo)C{CDii*6n0mkiz{P{Nq#lHj=GonO%DWo4Dl(YwygT znssK_k51e|3MftzRSj=NdtFNoSHmZd{yT?DY!w5u=zlBoLium^QX3tt)hiT=3~YNr zy`e~cKpn^i!Ft+TK54knV1MjN|H4RX`wR6i|t4gOW%oAF<3;X_w zehcp`o-|kVW8P&1m`~$)$TQ*_^I2Lb-_)`g@&qB3t;=ff*maIH5&t7t^gr_tHUi8~ zw=m;48+|tFjGa)nlAIMw=f8u!%QS3-^?5IfD_m6W5P5~f9+SRPbrLZOHpQrU80IRF zw>ZOCg|89xq(rOk+%JOIMdrnG2}4TbqjvsDRmL1alNy4PC5zv|i5gjIn}6GB8|!w8 zJdCbw`bvXso2J6OOC+5{Zq}Gh&d~&w_9#!DuXSw=m3AK61F@jtg**|?4{|u32=d|+PW@v&D_PgC|5a4F$0Livr5*FH~k6pK_NptjV9Ra-rGNl5@CH*5%+V?%-gZ z{9)#UpO(DXlHd|~TCzJ-$SOt!yEn_@Ll2I-@6(+vLW49f5@lwS7aG-6zwVz2C0|tc zuDG1Bi$%>MM7l;ML=6rJzp!bv1x7>dS~u?7UJ;QsnJUOkD!NGm1+Fm?Xmy~)D<=k4 zGmLaCUqdhmy^hOROd238CWuvG1*jBJ)UpHzQPejN5T+Yh^Mh-Fw$0eqg{fQ-HgApk z1fwDWdl<+ZFi)CY5bcgK>AHLpqM96sfMLZ$HDL4sYXlY{IFf|QzNv7vf#e|`ylX1Z z+^o~$=D(E~EDSz3T+vECf$R*_P4TKR7ki5;n@7FaEerMGq9P-jU1!2lHMNVTFDV31 zT!kK?y39_?cWjf?R%`RuiGNrK(bX0Y2uHcYm^qfC$l5T51w;;9d)#@1K$Op4rwYUF z28?BGMGXfxDod45qqz0?)K|0->1zDt6)AoZG4lx;w5Sx#Cws>#WfwE8#ZdKbqhCWv z5qqD}DF?pOHN zBvg1w#>A=AaI*?vEg_PvRqW50+=LL@2DzQ4-o9bdS(6en7i( zrjl5d1De$JPsyw!aFkR2Igs=4R*j==<%@N5#!BAj)$ADpSe;gK*c#0vJYtI-t2UF! zW)53b%Wh%?5t>{odLhxiVsHU3A`Ub%8}z~*HTKN2jSH4)*oDms<(P%=X0=NpP4fMb z(-zsmn$nU7>AG|K2`Dhys&d?PM||N$5H&EnLQ6UtlDStu4Zi4Eae8 zW=USTchL66EB9BQ;gtug&k*6E>T^bf8_z8BvNg=&oj1ce`;B*KdLk^W>1D)wGqFtA zC8J_YAn;L}{@TBLG)-^u92Bjv!D`bRwTHx#5$4e{!Os&6o(dCKSEIhz3{nWa#JhRX zuHw!mnc&L%locNi6iJ1 z)kQL!?qd@HQ7I@G(WObcXECBT9!8pC-dTHbsY(-u0#IkAB)n=sLJQt9!WjZxDLxU; zXCHaO#1q+M1OQ=y8D~TYLSz7Zkv&(eaI^Ls#Jg1yUX*8P8}On3Jbd4J?D_tdx44OE zbi17gUrku0+oHa5khV3OPkrTqK|}u{J>+|-OPd3cbr9=^*7tWZWzIHTho2LKy+hCAQL31x|g!fG8%&wJ?kdo zImtSUdnIJGVItd)Dyv;&ZAj1z_eDJkeMEG--&icX$S*VEScKOn8C?cD%3I`2x1-Jg zX>Y~TxjP*@s?v%_%jC@%GJUShbTmQd3THMsrL@`I&hU^|HwvvULo@{fOB_mSFr<{R zFc65xIAUR&c9rzm^ONH*so7@AnpZw45WQ%diuwviH{H?rGB+(t|K#6L(58J0a_JKS+3smQ_#k1u?#!59=jIo8^95 z+4^#iEAB@7jl8ejY#Q1Gh@sEq+)J?D_TV)zjpC13qCBEj)?kFPRNN01jIT`@pGM`drWF%u%3`+33zjk5S=cc2P8mrPnv#| z;BB%`6ji{sUPTpF4Zs3;l>j#!@G6x%S|r%diCM)*ZJ)9#mlri7ks-l3SHdl3=V3>O z#Pm4j*+~DJRFBbR)l=fO*TA%M1yA82#p)HY-e}d7YnqA(bH(io-`-4UoDLP}s7*$_ zO*ZhnVL_X0DBFa)QK)Kdl7u!Ho!eDy6Mrn*WP=mur)rZ8gEnESFN@^Yqy|FSPwerPFu;S>5+PqlLLUnbvs@Jx8qS(SA+sp~jb! zaADUa-|MqU#xCZ!rFnuEnlIWFOg+1v;uvHW)E+7Iy@vdv9O72FrTU`t^YM!bI+S;rR+pOE4@SQ4Cj4+LWyoK1PQWYY{B^P5;l!u2`5u5h%KCQw8sF|J)5784S8hZ3{sq)a?P z;%r)@>@GrBws51|>#|Yqb&07s)$5}>LDlxUY-D|nu^ZV0+>VWGhMfqwT}?O}wl$-w zIAu$B6 zqP?Q6*!tz<p1 zwLCoiDXT)jml|02j^I(aW|WT1MID7X0x8UviEfwGkkcOzns!Cs)wN~^K8LIbAj*yY zNKO<+^jaQnq&{bJ^qb-@XmEifsCywrHh2YF#i^zRRHB-*vlCCn+pa#L2jhd=0y{Ot z5;ca}{M=jmgVhcTQndCL6iKJA@R&g!Ed=e&Kf1 zgbS9g1jMLWy2w*8L0ZUcdRqBRag{S4?NB-GMXp|46NL)A`hDeheEKJ9jgv`zdWJOB ziR#I&Aw>C#mJ9?)#_P;O)oOgyCUPPJE5gkBtAUP13?AW&M1$?RtO{xjDqf^D9LQd^ z=Ma!I{l$PFe;tS@fT}ntVh|kk71BA}CCKSS9Y@w37;YhabT9#@%@Cyrd<>#3Mtz${ zYZRaJw>>{)UBYon&cWnt^Qheq5G=EljVMZJxv5o!q4CCg;t!e@>F(^n!}6*)StEFC(fDGqHpnumQy4Jeys1%5TC zTYySZA%HE522oE;0#l<(@`m=_9E%>P{ToZXyazfykD>=Q z20aj3s0VWK9w>CsrSz$#zi3rn*#l|TBlkcDVm)x_qE-ZiwkvvI8hW6Gn9E{x`v{9s z_L73Oy(7*JTa4-@vu-kRH)Jh}QRuY3Ys_uMv0y89%~q_*{=+=L=(F1qiDVNR1*CzkXbFHcX+hkf%wRDx z|6E#(HCxNBZBctQw;0`IhACBO;P#*hWq_0xqd~Wg^hRVcqDVOex3H1iVnmS!ixC9| zcl5{HV&ss$+;)j;<@+%gZ6R}x$%p}k#8GDh#nNOPFH(;Ur)Et`nR;9{V@q;uEZB_9 z+fk6TN3FCOQMFS&X+e-No3WOiq#h46(n`t78K?$gOJG{E*g{w$N20>E5I#@0wkffu zN&Z4+3~hZ*?Js!?8S~p^G>*tZZh-#DTnyfcLS;#3J;)>2RyPxJU6lgg!983IVCL~AOp_dv!t@+AMy(8sLy}^1k zY$?SLdy$$p;mH=r$@8Is7)4a5qOgE~D?)(wvii#k4V1hzbsoh4qGq3>DP}=cXsI)a zh(|)pb~^Fz?5ypSa!fq_q4Mp6(1pkE;-B0Td1-JgRVpgcoQ7-8pt&ky6HRS zrne;t6*v7j^cj~)IdIcEYLH~ytx8O5?nW!_`ft z!B8v6GGGrDLP_9)>;VxTC0Al_%(s2EKIWNa@wyuh_ zH5q#Z=uTVf6#s?`KW@3gk2^x)Oml?7%_(F9I-B|^&hr>ACIP76@Fai+bnXGNa2%Q9 zTA*w`Asbc;MxB*psaTd>R2AvNN$kW}Dc69|G{f#D<}!i48tcjZHSkW?`FA(T(I<{O>Jn>hAlD5Nt+S5j7KUi;}N-xM=CC3;?si5*zU|_Ou(Ib zs_(NQ=i*3k8FM#q8FRbXmKj;#G9E$F6)s|PWuPmHXCRj@;}N-x3%uOz;P^ZWmvLp% z23p8v%*9>CLdThL=`W9J(q`$R#1Tt>sQ{@=+KdF3as0R~^Pk(6VTH!ZOqu+!Y#r^M ziO64(B@>EX-jG?k=*R6Cw`1NdJH}k&Ncj*?@gHT!$fx^X&W;HL9hfPP+cCkoeB6$C z+>UwNj?u!GV(L5CF$&z&Ah$)}s;)j{&pH+3v?JrRQ!!3EGEO@c6FH4XJDLiJ7k>B$cfV#7^gGxX>5Pi&42;tmAeY8zN5*M^mm8;! zj~k~m<($}z&xy_0l%D2JPv&~f8*=`R(#aVVn5fgB;C zXz8M4oG$&P0;JNY9XC!bRN8}42zhn_5!Vc9R}DxzDblVQkk(?MSCym{S(G`M(v-M| zZ+mR?Dw^L1IG{(60Fm4tBtUsZFggWu*5_z)NzUwg@QHPz4Txc$CUHCvV2cxNjA5Bh zN8VtO0mZ>d7KA}j7K<*1EkeSRG8Ubnn5RT_MRF$!eI_hsL<2gm95l>3Wz)?LR+>ml{C!`7+f|IElR+u94k!Yhd^js8?WhR7@eR8-2uj;)ooI@ zBh(wJG^5`lGF{6L75PyFZ5RcWuh~5i2abl27LlPE6fwN4x}w3MFk@=IPk~n@0BO)o z7ls|_j8wW#@iuuS1sW5Hxel@3lcHq4TA5!q|fWf^-(E?%-60G_vBe{HJYkAC@Wo@=3 z?f%``p4R`bL_6rRGTK3xQ5Hg`e}C zRB%XiE-PNO%0-20aZaI|wdwyB1ks4RgiUGYW<@hMrJ0-3%zbtXvA|)L$p+nQccz0(WtlU1fHGOeW%LPzM} zgQwp^D5-5OuC|*X?qP^ae-ST-Fhp7$h}Nu4*QkJDP1(5~rlw_X1Z>6fQH#pNtHwGE z;!hQ~Y})~*TsFBj*}^g-%1%40jf6trsj<$uNKcef7sHC;jlSxCsv1d4uz7JZ%u z+quw8x9e!e6atb-#E_saZk>6F{xfI1MUi?E8c?B0PCqIkO6F7A4o=dO2Z>o;`l|W_ zhCm~-)sCTRYq-PSF$z*!xOYq}Y_(=tu}E6F82BOZGD+({uYz*qpL^#T>2Oq;OJM z#5x-jZ-tY|X=|D-LzIy=$}*Am1Y@G(`K46C0f+W1;MIS~lH&YEsLB369Fj>u;{AHq z&t5OK0nkfgU-;U!P}fR`xgAleAFZoO>0pSVIRC=+WVX{N>1&(;sYg4Fk`BkQOL{Dh zpG+W0as1?NeHhEHv$sOnL3+`cFW>}NTw z-$n&4J43ohd(L9pDF%^lZ??9w6-_A-Z5y80gS0dKcfN=w4IY$pN^BdZ}Y+OM<2zo3ku|5sSbRp?#`X{dZH@L z&|nYlk=zb_Nan`o+38^HFE746-^7{l5%PQN`3!52)2!E!#(P!c5aK4ftbZ zoEBy<5aEj5tO*s$YlMAv47ie}+t{2;4I_ic=$C45(^MOcp|X343G!BcNj{Yyx`E!L zy~aM(@$+)%&#I0?*M%i{m(aGg?gvm#z-PwK5!jmdg*tMXw?On0itQlsHjQhG)fsMW z?KM;O^vjY{qNvYg+V9c4sRGHtB_W$+EF+wl!v&a`OY;-XXLOV1f1*7E*%NPj#ul4O znG`7#Qlf<#+b^*6=V=>BmcHk0UMOK|2}kl(I$HctbiPVY%RHW@#%6txbHMs#7eG61 z8=t`}7^yc#miUViXIi5nGb#nZ?HGz9nvxc&*dzal#JX2wu7%WEVJ0WACOKD_VYp3} z%jE4CfH29hT>3{_aU3alZRJt?cCP8Rzp7vDLAs#)bKQJ+*T`>EW@!@yCv%2r!T| z%TZ&~qv&r-$28O18LqCugWwBmn@=_ zr<}2nnVO)_Z95zOF@3a@>e9(ejDWR89MLmd*)qn)FNhBISEsx{e~fB!r0{zii}6zpl6No=FZy6;U} zf55#JXob79PX?;dJ1OIkdyHdAEXye1DNEmC+y+_zh$}Agrz?&$lfMQX3lsfaR=A~E>4W2&S0kICT6(t^$Bhzi=l@xQD6H)7w zX*Azm6~4o<*Khd93KnzIIcxY}PfyBbzNaoNtM(|3x=#%Z)G+kM^2D&g*i}*+k6gMXUnOj`;dMR=L*?tv&Ov;8 z{wn0m`7A=m4-XtUN53vBiVwD2pCI) zyWRHIt^V+q#3IHLOkCP$2HgfAcfErZZy*nmh~!@!tvLm zD8+-e=x>QvAd!nCsrlxa?C{}xKp%BSC?@8u@Yl^yy9QC^i9#g!y%X& z%G}EiDlvh9^idecRVOQ0@m>?-t@qlVv_X%Bz2sJl|2!mZ_36~wglo)qeh!;YA(B{B z&KDZGDMrE7d=`sINv9JL6lO<%=g>ypZwtp;u_hOW!68bVp3O)^b8B#58ZyeQT?WZr zx7lAF2{O-S>lqxmi0>nnVhtj zEJM^cHb*!8pGRl1$sVhWeNb$R@vWB^SzW{qXN`I>RA-Vl>NoR@<^Vq(%QTEtLc>64 zp)(2<B$)XP{I zCo@_J5L*0?tRO(0@tb7s6apObSqQ&?A>swdU^mo=asIX9@p2}m z2AqTe8Ky6j+1Nvg96|W7B~Kr0lHdRL!Bs-jZ>HtNooN0G`>FV5v}96VrvuLMK~#lv zG?o(QjJmj?B%Odk@V^z;4aGH&wYX+koX+Acikl9_arAHKLMy~h3JpZTPEtTi6PWVC z7b7nVe67-I+b`&=S8&e}CmJ@AVg69c_+f7<_lV9LPS2-X&F}p%rqTQrw_I|Tw(PXd zVr#wCFdKQn9#WUcP@p z%g44~pwSOTo6rC%9-3_qTX}eT_62Meif${1HLLB3acnWpS!FLOV<9%9BRylMk@J1{ zgp9PV5r!4?Kp$3!apa)mY7RQCT?P?iBPEe%iqHmOk--PD8Ruhh2-mKzRkTVhY_tVL zQdN+g%uT&lb2ysCfSltj0H{MA}=n`*3b;3@zCN`T!ggLl;)RY)yY#wFD}F5xzQrgp-(A|x0y->$ zULp5X(8nJZ)IQZ8UpW34_wk3845?=gWwd$ZMH%fatGNbFXSHUO`?h2wg=<&i^K0J@ za&~SHrh-4&kv#f#`Or6e(zpKylUxD^eqF-OqqE6sLc^OOE?ac5Aq?edS}D&EsfJ$@oQ z&a@}>`1bI4f@$IWvhessMFl7Meed$Tvs%NKb8UwBLFZjU2_9Zc5k9%)_Ae5z*9 zx(g;6BQEjxpH0D`2PW4(zv);jIL6T#=4Ra>%GKD5;-!Bf=03Gd# z>amUo3BJ&@T@fn+1&D6J*crT#OOBADKjo8#U<&q-*hhZwGgxkzXko3SMQX|0+$EIq zwB(swzl1v6Zf|baF+b<=3Z!4;!sd^8y7qM+1!*=#;-0_^xszYWts+bkg?H#s5ab|V z#9o+-5LhCF^el1RoKhl4KYYzciLH74N2BidX?$5PHa1i+8j)nxEa$NUQ$Fqca%(_s z_cl|EDwDIVo*$qvfdJsi=?fG`z#tw;#V64rlolcX!07ZM2qr>S^1NyAOt6UrsOXj= z;}k=Z&>-bA)|!U*PFnAwtrTnF)MQqD{rAL%l!tXU~ic@*G^#PW; z2z~Bs>YZY_tE+^}Wv>zTyv{6_yxDL~_sW>-mTf9%vD;x#zoqX0cHA~p2A8vE#?L@< zuB+A8HP-2G#D2q1bDd0!b?Z9g;l;$d?qs;d)>yY@EyA{>(AtthYmY!~p_4`9$Ho05 z?e}Z-K7S4UjP#rRQLbZsWJ{&UURfj~j8JhczAj;&P$oE`^7i=h?eV-_K;z@c9cZju z>&R-R<0=Jk3QlP3jpbXlx4+aYBGIDmLu!R7^|fbpW=saEpc&6X8|m1+64muZ_V)Vn z?Qof)B+Lhjr%)A!8@()HU0DLB^eH4uAaoR;*T)MhHh1^0I+xG+MW$d`agHY(R2-vl zA&piIlIpgk5e8$44L+hkBkabK3kjIZxf}ButAtyt!Og>&sj!9XT-YHARvMk@C zBm>NF!mucSaj68lwV`!rTk0w>}ptl+oi#Q0=OU z-V2a)Taw6nX!yWrEz}t;t|%Yl6pijJx?Clj@CY9?*eySxu}h?3vw$>8x_pa-@V9!0 z$d@okOU27v7LrXWS0i%+OpgbohU&&%@C%9B_Npj9K*a#o8@VotMr+7!mddtAmv>e} zm9H*f#aS$ss$@8tkdu!E#4Nf`s$B}?we_TVNutvNg3>p=i_!4@kzr{i(S5ow;Ce=1 z;x@C+C{=A zvvl%(laU&~+K?LmF)AdFiSl7;M*vY)+Lhf*gBf9R3VZK!nKiF&4`tYsLrSkUv9IH$ zm?KPES?qp;d}CH+iU6uSW2ZCRM@{0V9qE3+&UUdHsv>7o6uxfs^a!I-U6_qen0l$h z-(jm%i~})Ed z1UI@|7A4Be0$1?GU`Rs6W#^>%QkdEFf?)>tYe9vd17a&F%>7~HHp@+unr!+gl~njf z*xT8i3NkWKa>WtQe$E`_SzL5}gUtJ^dn=Wmc|ohf!85Nk6d6MTXkv#YsFj#u3_p0M}6 z4Cl2nTRvwE*spJn)zB=`_+935<8iOHy@g9R$INBg*i&*R%`MhJhIxJqO`G?rY~_2R zu_D%Fi6kaH4s$c?&J6TwgE9iJ;frG?d=bUBg*b~bo6SPanUf0@{#MGrWej8H^dTv zv&oGylYA*LRlg9%h94d}<|eA>AzlaQZP|7d^k%a_uRy6qG`d^3dmW5Mf_Qh#Jf(>X zexYnpc@4mL1L4azv=witW$|Vafi&zKCXlw?N%N}!oaQ%?Q=`ft>2GB0dU-7GR+|6F zigu3GVV5T4es?qekgku{@DM8|0=7{|K1_reLcZ@ZIAn8PJ0R0eB7UM|fg<(uuOL_a z0pVeHGBRMf=2p+Zz@<_;){@kZkfMMgKvr0>(N@v~=eN8@R-^O8;dvM$rr@3%hry5G=g@OTkk#566_ z(rkUs)3ra=h}IYWp(MKNEgxUg%EvqhV)0p`J{(ONR83hrWMo^w``e*+E~VPaH<|I;EFg64NmV6^D};X4452t)xZdzP<;?t&(u8bv@@ZzgHOi>USPgilG~iVq1^(< z+iKw?|1Ad7V)9TJ1*1Wkb5_fdXBjWmwfw%G&y-3P zJSoSHZ8`-!qt&i*?QIi0qe9tAvo`y&vcvvb_JRWKjiy^rTBgXXuVXw{R*`mg6FXkuV2pV&I90}ep-|7Y)g zpzW%v```WN{JHm@b8ik1A&@Bh9HZW7D6t|*f!6Fh0O5xUwvON9^*KfzCbmISMH^eRQBYB-jg_CIHPtAoMhzG>YE+c>`OdZWKIbO) z=B^VCiQ~N*xo7XS_nvF5`ESiN*IaWk!DZe);%z37T+K!#*6fe8CbHZN9P1~mAWyc! zwgz*c(yY1HVV=pkW_jup;L$vV~L)P_?2u``)b$(pIJduB})FdfjXhv}sgW zD(0W!UQPGASs9F-f5J_zv4PfW-&@zx8|AdfuEn|EnWQwtEY7|0RFjh!-6@vfwC35< z)gm)Fzc8zL25QV220d-FH*bqEylnj-MU8l*F!`6g?A8Zpo2?&c)>1r|;XSl8(ymyp z#+OD*cn5u{sYCIOHs;FHQQk9rQm}kwQJ_z+SQ=f!ry93y4p2PPyo?gc%Mw%oC6pH> z!c3DEn30J80W^pSeYa$Nn89uRE$sfBy}Wk{i=QoPs1p)h)RW_ZVhk)babfDQAE!WPokjQDP;`a&6(xIl4QF z{Z8}dbuRGK$qz-i3*D#kini6(CbLr$AMq_u9en3*^cg8sRC+umn~QA-bK&I+b?qSa zRoQqU(e!4aNi^fI#SAxo99yJ@EyPo|Ev6%Dc&|W43No}Cnp!)F>rvK@cuHRrA*$?a zv3f}neYIC`7+GKA+?wq_cdk`84^WZopD#6ErmG3oQ(yb9>=J$FDqH5k;)&}BZLquR z^f?iSI@^x)$aw`!{-hfkPtqe?mXqWG8M3#$c=95TKQfw(xQJveh|1OAUEYdlFaA+x z>lRE+%$sOYSrvH`@gQRQ;G1OLf-g`bksOrT*{^A|#K!xwr4?XmaXtsXn9soks&zMO zuV_TM43r**3BOh!wRX#oR(SE(YK51vgoRIubnCtRYCnMd5IFu`Vhg`^oJ_oW`=4&j zpYw`*_`3Y_%q@r{!vO-)=kupI5wAP;Y1X`EzSMHUr0S3Jb9+8z>ZDO3_4$SIAxp`7 zr992Maw!uFWIaD@wjE@nQ`d`ZdCUpQG2p5c^5zRV%DKn@GVF23h?7dL$6c2fx-Mp! zyyAEn^%j0$q#kFt!?2o$mYW8_;EQKV2qE<7jU0M)Cfd>H1& z##lq2tJpWf0@OCwR`|iN!#=nYGqzKJs5r^qqmM@aouB&pcGIcRK04e4vzDuNsAGHU z`=gEPk)23c-;N;E2_GO-wc9PGS04X;bjz}C4WL^MNmIeTsD#|SN3D08k{#0UkA`i% z0kc!tX|#hMH3D0V$U>0qr*IvosikbZOBdZKsdj2eipJ|9nIz^><(_~Utr5Vzt*@el zS>7tYfL;9u4Q(&rBV>G0nz=<4^F^88T&rh%?`<7EL2Ypk0gP|&FEQ^SEd;QQg=(=k zX`CtM40D%*C3RsPMfL>^D?S`$*srm{Ybxo+Cf!r(x%q6R@vdqz%5Y}Gemg=x`Q3xy z?4n4C;YoI-J%Mvj8t$nUfi&2+M~cxdS#C|F3^`_}TV+xPJ@WF5uS8L*=ySwTZsoJ z8(x)-tw424XbANMb5}Dh8Q}``%P6vfZ$`D3w^6*_=)P`)54E$pXfjrl87k+1d=r|} zu#-eFs>GtJKr<7oBHy^5fFUJOU_eUqb>$uNsv*TEiw&VD(a-9n$+>joA{LA0Ol0e~ zl0iuU^@*_xzE)`~`(X;F$TveCCq4h3?IWBsG0rFTi=(rF%zThtMK`Fw42~B?xU=-V zqQ&{q3J>2a@@WX8=UDrU(0V5Z^vEX2+89Y!{e%Z9x!J9zh-|AkH$U{}cSrd%fOjsL zST=CI;m!2@e)>+wv^%sTYs>Az6uUz!RUp>sM5w#T*YeF+>k$2-a07R(2ZmaEh7e-D zW)f+?GL(@uC#n_3CRtXEKbexwg|Rb2bV)1$uW5t;19VWmjr03IgSC%8oNniPxmFOM ziJ^N%p@g5*D^;^l^LyMYT5GcKy+5EP7~F+fmN>L`T^!;@IaJ5;_vlA)kyNu?*LUfU z*4Q-%m=$QC{qE9E4Sw&@LKYFw zfR|JFb6xQHTdd7r?3SpO&j5LgujTVxZ?IbKjX6Oh(V-Fem66~3Biope3;`nxdy^U+;hw3H`xj5eF&oKm#BI(h1 z6y1-;qww8>N9(-s-P8F1-1cI_@N9SmzlPUchF8O{Fr%JVir(ewxzwd2w|d^ik+5Fk zNSy=^Mc;*oqVK}P#vVLuhzb9b**0e@d}XIii*t>~U?|!EEy_A!C)cX71P-8tmX#$J zses0n1sAG-_7w$c-DaBMxsGN!u2cCYu05a7%!^|p8dbc3%L{*alG6pX6Fbq6mT%XeGwNR00$!iqtz1pB*o{6zw&Ja48XB-@3YMI^&`# z-z;-7qz;?*xNyqT3mj)Tv4tXCVlWO#8F7<%^=ZsA`wp)dYd4bB0OZV>Uf^g@XMx8Z)E(tgdJn zESN8Pf&(l1p3N%^wS`VmQZ71C5`d@jXpvIbR-}PoS1++K$Ge*n^giQQdlmJ&fZOuRsDP*$IoB3&YoEJ#+XySw03O?!Eo zfN|>q|vyM|%}vU&RWyReXWbdA^JZGo%Q&)hB8y;kG4Ac-nog zaNB8Nmf^Mn?|~6+TS7Righ05h{K~3=a9iIW*FYC;TRbJ)wrC6Cwq?i9uu@+I;kHNP zi2M@;j&xb#h;ZAoHORj258<{Y8qf{h#uIK^!kMGji*VcWbw!$$eI?wsgpR85&{^Ls zOHoC>lyF;pDGU&fs26m}a$#AaiE0sUTS7oGJp{sS%hGyTYLe!K9fQ`t%VL@?dj-{* zvPODcmMFqIQZ@mN>if)SE+uBKr(Bj%wWc@9aNC{-On1uW!DhZ8jG$#H`oWc|jH$8L z1-_+JB_}7E9c^Rvq9#p~`0!ZRMP{&5E)I}aE^SwzjQrSXEU~uTIX&lMZP9b$ejV%`| zeTFd^3%ctmZgB2dZ?UnWXFUdcL|yjF7!lJ|?s*^QuE8^}r1|3uhl2x>mpFg81zOvgst{>b(UfFW`qY*LnQleqGED zb0zk?WW0{Sp`A-8Cwft#7tV#lNNg5H?(@<)rgS{$)@j5JZc5g~i(!oG{P^NLsD2&O zpR^s}mC*R<7!m<+AB!v6n&Ps^Q}GKQ#+ZET_9pvichy)*AC6224Ghfz{aVk7);3-U znX4{=?PY%aXY9=nYMGMQNDV1u&#!2Ct!PUyq(L+^*x5k{E|{&Wo2Kf%~rIg+jEDiK;&ukY=tgewT!&x7Z*Y=oaf$E8Fsk@>P}nZ9N{7M%sYSNv<>+XVZUh#$1|J z0(o+jHM)%!B9^Yr9uY)IzGCp^vyC82B-?cK7(!%6IM6=RWW{7%Gy5a9+RCB=8b%W! zc?x;%RFD-gJ2Dw5-oRa{cdw^#p@sj^Uov6fl94Y;$plh)<5a6nt?-071y+Jr7SsZo zH9$E~ivk4+8u&W?#5rv_dQ7+*VoGxm4lDb(>BEGoT_v5StZJ)ao{H#2$4qW3vbYs` z+8Oh2k+1@b-PekyusrT^_lC>OQ@j`P$pN~s|6Z#xCab5@jl6(pZ7=0kVhB{$0)xC=}v zac^;VxahkJ?EQkjv;-fUXlXnF<5Ri>)l+uZ;meKm4z_*b@^3dDYT&@LeL1_lxZ0DB zg^ddgLR5s3JLdGE)5!!}`zl`8hLlOU!KFuql?!j%lyR7+uzL}sooKKtg3A*b3M?Zy z5fB5ssxxP4D)$FJOxjJ%ESwx@uadoDL74nqR|ZRq$&(wGYU~$XuXP*#?}jPa_Fu-Y z*jq#|M;8~dsn}Mg;G9;pkyqd^#zv4^C6an1PWovYk~Q|_yG_&S28MC(i&IQ&TqvK} zCz1~UjVCwykj-mpcQ?R>^#MJ$=uu#KuYiMR6`o&K__OIN?1@7ax$U+iE;Q#P(x}T3 zwcy2VJ%%=nga3jrRm=?@p@|$T$3dZir6W?ybfjHJqj$F+NY_q@lcw@XInPkB>tZyz z%Y>QVR??^nJsD0|T%dC_nuereE?UYu{>yV)C0d7E5-iOcX~usfBDClNc1Wq0mHhKt z-ZHFUX&sn%9XYrxT3Ty2U*Lg7OWVphx)#GLHEEF5B=5GFQbSsN;lU;s{jKWTHK}|X zJ7S#8(n{-M*5U0vq0QEu+g`D!d^ zq#hqfVGEWTvQfo#g{{#BC}ZZMc|FUpHN|YYt}AS<-koERuf=H`8KHowDQvCgO){G$ z(EwFpdd9N)t0@*5qJ}kX*MXllnej+p@nQMicKd3>rD%)8+BSj=5%S~`oT{G~ivV+n z=pYD{mXWa~zpA?LC?#7JmzUN}bT&0V2s|2Jk9$I@h&a!on}< zRz1P3387~;GexODw6`cI=>gXLZMny9BvT}NuPh2p#}mb8mZJFnPs++UM)rF|QAhWn zTQyBd8cqk<_`TocvD}1(+>4v!y+Zd%0ZRRuvOzIQJC^sE?z@vLsmFOs<=WFC9ssft zXQEj!ZzKt80u?{1giM0ZRutQYSp zg-N^Ce~?)-XJ8b~LnQ^?yfG)SxTd^k9xBG6M{1Xpn&KQ?%om-|ZqryssCr?iUig{4 z-j1_KaA;+5YDWo3+w3VVJ1BdV`?7xJABbTMjtx*oI1b~&mQ3TK_Vv=~<; z$JbA#O@G0Y+rg=;&QLo>Ey<9QaDn=A4vQjY6Jrv~WDtbd0rj(tgr_vQzDi~b5Ohx^ zD4fGpYDonyl{U)jSB^%~e0p-c|M)5)Nxh4wGb1&UY{Smt3|L*0`Y4Zyn6e{THr?~- zD1S!2MQfa&(jqmjY@!HVWA#&U=6rm9{1*60yYCc)qAkOQAvd{bTS$eJbh2heez{)ZKWG7!GZ_kvEX7$7)WQq0?XaP z0zLxsw|NZo)T;#r3k|B|3$J6#C%RQ6rH4?-mPi?77*Vp+NIUaXlcaaWh~amNgCRGo zmV5zJ7z3#`f^ad<3|sTyoNztnf-CBQm~mDgO+d138ihxE2xh(^UBN;glG2#tK8}1}V)dnP6~dRXWBtZQQ_|J;XkTX?Dqa@9 z=$&Hs4@i+=mVVsb*N-9nO%|7u=6`?`>kl*yElfykhQT zVzUB6D;h{tr-@|+{btDI{6bfk`3-Hlp|}JLEEfBn<52Y?0}R|SC88QN08!OTaxLgB z%w+=Skskx*A~B>~LF_!O<4JQ7MDg`|km2YwzDWQ{Cx?oxesbW+_P_*XJY1&U(t2Lf z2+N#KPl<)FOzrwsl@{NMYxq{dQm84WAv{t_K&e}6oExPzMhGF1gx+ioemS=f6l-U@ zMplh7a~g(x^!th{PmF^QtWP8V=Vzanl`Dg9XsR!nY|k4hpAc6 z>e^yiCN0CHh4W3@XM$!Z*NC=76)B?cZLv>@o-C(6=?leFP@l#}pBbc5hBY#~^qD~z zHqju$1sWYCwrN<}0(=NBbyKAD&5R`d6nsu=)AQpYax-+}ILjD3GMC&(vy{G5M;AZ^ z{Q*&HF1J(A-2MRITbCK35WJzrJiBlG8g6zk8`f4{-uUZEJYpuWx>o!%u$`2w+>U(+ zPUBkMPgAMbZEN5-&st2gxvl8PDqN=cAZoG$K_TC84gz@OhlvXH%Gd)4>oYn<##1XH zI5W2$X~IfH5hQvU9O&{D#A%ZIH-J1$P;%f3E&=v)+Qh-f&HMw?hO{>2h!c*e2Ryh^ z3p%2`saZ)bt1O+B_0y&!IyHud=tLoC?*e?#g&^NKE#QqTSqU?nbXM}sYNB<9n)3}s zgFmdLt=`r;rtWE`aSWMR;1ZW?koJ1vqwT00tDyUqX%g23ahBK9v>3Hx5{N*o(bW(k z%vZVPNhFA#uGQ3Z71Z#qGkDiqAkMs5Xlgp=@Bn86VGPjc?px+ouOJBtws?b(PDx_B zDICI0-LHp{*ckbNS1w23rQRAPgAa+~AWYnyK3_6Qo2(9#n<#7ca4cukB4`wX<@k=5&>Vy|-=G&(&2Nu7?qP3{$Y&%(kC9$O;+ij%p={(u zxf@{#gw|9*VA=e;7N9$W`_9JsxF6)7x_5X_1 zmF3&`aqbxeOgMJu3Ci(`zNu#BZ*Gd|PW4ux0@ZW>Ww(}ffn>EQ&JnZ-rY{`)v;$O@H! zYXlGnn3@pHt1H~6qP)mqQwVAKypje{&Hnf|0t zvVP)14v}FZR#u3!V;iC=^#JYTH`=?3#kt^3HEx#6oGL%?QxMtR3N#MR!aqyybS z5?TsxTVr=zC_98w8>12g0U6VDQW$LgJt0FRnAH%E7lCrkIm&YRA1QYm(hyoCMuuGl zT)1sZ`A&(&Gx&~0j{Umc^%WXwd|$B>)>%lxE)ZDo=SA03mgYiin>aMK#25umQ_)bV zaJR;VeSt$pv`L^zlCMP)5{+s!5|BJV*`W?E@5Gv0W!`5n)Mi>?gCyv(ui<`#UM^Lr zq%OtA0J57gS=7Y1SoCTAl~mOfb`!psNY}9)9{9AI`tpY9Q$=cV*|;rsyHWfigRzyk zbS|{i8wt?_{z{%-*?v3rI4=NwF(-z~7gE0GkjgWz_JRflhH|B>+*QG zNHDzipx5%W+iC%Xx4kj)ca*!o)QE02c*3HAt}@bLiBY8q{tNS4a6 zk{{lyrj4sfpu}R)h^cmAYy2!fs%hPP^2@>UGNT(Im)1`6@i(rCpgQasX?!Y?6*&|| zC5oc_>okz~+I-vB)B>#-$vq=%#CUUn2pG|*Z-AS=etdv~AS~DuVRt-S5cV4`YcwPg#cwV2L zFw^%f?Dy?Ee$V>`c+V`H(l;vig`skjk!Sh<&3i&}chkW{2bbQ)9HP zH?whoM%%rEwgL|rYYni4_YKyXvOs`N^H^9JCqY%sn5V+TT~I{S!7~`zGvdHqo8AdjltI>SnQbezPR(QBzp+ zo1BDM?8fh@1vB@2fP}r%kep%foIJv=|Nim2*Egr^n?>Ib5MKxOtL?(q3D2J%FTR~L zEZ9Ik7``0@+PwWUc?x_R>rIYlmZHAt5I7|6Jy7b8(hGKShs50{VPNot-C~xJ6{J6s$btKs_C!0Ru z%(Ld5ea`#^Pkhq3S-bP(g-?0v)5aG){TYkT`>perJoC4ob-}YQT)OOcF1q*dqpKW8?EYKbdfOfHi z<_@MjZrk<;K)Way+J6Q>`<-BD-wuGbEEw8%0-!AohISwT+Jz39+(NU^^t%Djo^8-( z1@*lEP#1)O`hEbYXSqIVp>dWz9t?o?+hGlRC;-$m!$3V80BVWrV*nk05CHA`u!bE9 z0QFm8pnezt>bx*eKMDY~I1JQ}13*0^4AkKOP)`p7^^*Wli^4$tGyv3i7^t5GfO=XO zs3QTOo*D+~=K-Le5(erQ0iYI!f%;_ts3#k!kkR&$0BD_HXuk@8)^^YW#_nGSK+A%m zJsJQ_shF@b12o|zAtJNcJWAmd2JO`W(3IuL#Uvcp;CW2|D5Zu9YuGIT(3CYQ4BEN? zXi7WjI!D6;>Fu^#Rb7O)CuA>jR)E`xejwsPKjW zXiDG}z`Ab?0Hu^)G%Ua#yDb2kvVw(m^GyNJluaz4n|~GnO8Lja8usS_(1;%kgtj37 znv$K-wg4sh<^X6)k`@N-EdkJ!TrGeEZw&yY&7xrq+ZX^%`Q5^xy)6J5=RXBPdwT#h z<&z6*+g}7gQy#i7Xqy6{DSurUw08tRvyI0=toxS%(1=5%ZL>}c-x&bPBFKaE?d<{3 zEMhYV+PeavxlqKAvEbdaLjz@OOFWSvxqY)NKKAY5+cpcp0eYtQ+cI7TBcJdB$iN-R zej#fA4@yV!(GGnrI4Vgr<@}i$zi)+o z*PsFJoMj2T?-uTRY>UntEs9rIFG9`l{qb8m7Cq;M{fmcMI z>eCaBq59B5B@y@ySOB$!PxjD^Ej!V*PPfiEvxVz$s-@1qp54N2&bDONh4!8RXnx6V z#@Tik+Is__`6as<{W@J}TLPfDCA$#3y)OWoTeS;;_Wl59e&H?vZ(9SPxrMuswrvZ5 z=GN{)pnV_!+HA{rU7G$)05rFJH?w!A3+-PauXnu(=0NTy~XtOQxb$j~p z0BC-RFQ9Gz5CF|D@dZHp#{g(|K8UW2N_XTk8R|259<-QQ9zdrz)U-1iQ+y4rH=2!dzpnWv}nqTn? zfcC)b&_Y-I9BF%ayzeKExix+Jac`T&G2FLb@~AZwN8V%o zl6zm>^-Dg+r6-rpW!FsWX`FJDKh=DtIP(13rV6@lT4nQiF|JgWcb^$~NKUSTVs zJ!hS1z0IF>)|<>m&eVm|_+ef8{cgUTn9qFz8h4Hj3Dd@X0%W&%);H}YXAzXX0q(x# z_^Sj1KowZS=JB-K>)u|Z@(?IJ*M@qLA1s%f$uOa zrq*aIIyvmHd6w170d{ZSV;APW6J^<1L$j_m-g{Uw;no_p0K*WP^W_OIH4YGI_doXG z=KcL<7Yjq$?M6;Rn!{MRI%|tD%li(*>RVClp2dvl+XPe(u$E?9n%-e*+p)_)mZtme z`KDP6g1&nmX#DOl>!63`Wp0ncKt*!8X%@$kCDa*ZGvzWIprq{lX<;jzyuoz;EOh9b zuy+o6bUt8M8Q|!=eincOr06}5eZc5j5PY!WY${;$Yr3<*LIvp46CN`9=9HbY%zyg^ zcw`o{>v0-;H=DWbl<6SG-oE>N`=CW`*DnTaVIQ1jcH4KC4-b0a43wJvgO-{BDw~~U zDBPYCor?{yH5<$#)l}ew2eYPJlRB_4AQ<*oU*_&Xk8Jw~EfpJQ36tFDPt=-JGImlW zE3Y((z{^9Q*l(iKDL6@Ck%`SLhR>5#DE7}8XnW5gReF*0%I92d+sn)jt~U0KUT6%Jk^iFjtGEr|xatz$en5F~Zi<10Ek zTdpJ-SXr8Kx?5foaEWie44Yn$=ln zTsV4Fdg#Ubo?bfKcM82Y4^gN8@Dq_6zhd+nu@vdTzkPT-df92Xz4W3YPcIs$enYR3 zUV2rIqE`hXmiUKWL*)&`s+BiTs$SkeCObOSlTE$j*te2Q6;Gzwg{S^s!qY|mNfMs7 z9j($NTjaJ!4EV!wkXxirHg)xhP9s2{48f-SaO7dKyg2uqLt8mBfbTgMJAZ^v#Izh{ zBGyatb1sU2Yd|lwwFN1}|6wI;-MKJ%36J>pMyC+bi(bIcfn1}xE=*p<1$vLa2b_4N zI{u@QFDTU4XpCyI`ZycGP9n&U+}@+St|^t*JSPmMSbGH`VP08sw$Y$Rp_u~f5fD>g zJqpbfSdT(89Cj6&6c}fGmy+QX7{@&p=O|lGqz-&{9H=pYJr zNFi|jz>{j&u)0B0ejf;!mVi1J3r&e?EFq#PIXA=iAG9w@Uy62w!kNb~6pr&Py(r~q z35^F1>C!J8qRrTcj@Ai@^%C^_$ASFu6!NE>hFY+joy)F6)e7=62rf#E{Kld4ctl%I z75U-(a{RK>KHZS}|6%f9_+RAjO8@`=$iMWz$RAGrStj2{%uT~6Qf`sE=ZzZUPS_)N zEWkat9v|QdOiPPOY>;2z2Kj|3;78t|sx&SAcf{iHSfMIv?&9mvpz*bC7JT(h(c5o3 zJ^}g$xM}@>0q%L-@c|BkMf{TLz1H@V%OZCTnxcni!B^iD-8|?P-er^$SX3Hz)!$AX}?G1qD!$AX}{YL;a9}XG-?dt*1d^l(T zv~L7Jn=Kr)OND&_&}Itu zt3eWF{yXjNt$S&jZL@B-HUBw#Ynro#FL$ARI{=#J*BOJMyU@N90L}Aj0JH-E&^*5e zK>Kb0wAm6Cb$j}~0BEx%Eb2o0egL%D5*Br#9h@Cn$*+BnQ9ECId?TT6fSU$AiteAK zg}Y}8rJX4?O;2VTf2qVY?y^_{cG#Cw42Ks+@I=++rMd0(Lf3eva~#I0=oKKp0MQ304LMcDmXD=KL zb2PWpz;W@k*&a>uFj>^;qW2-?pG3v{#cQ=G3#>o1DVu*RN2W7VCX zdr?uNOsH)Y(7`JzWV=@C-9_oVrFIl9J!6gM zs5Q4H$19tUT*p{1S<$icd%?6kw0ydJX*ymkx!Jkh<&s;P)kU7PTyitF<+xm|=F#Mw zV7V=|J|t*Wa0u|^yyy%aZq0{QhkWF$gRw9-gtOkTUp+5s>L_X!kyJq>2?MFH6re66 z%aJHx5%}&9_Qu}ComuQrn=IEGvyp<{CPx$C;Zs8ZTb&pZ9cCkdEn3uOM!T(?O+mY1 z)FE9MrGv*}G%hd-hZ?PIN!6Aw(80s{&Q{TFNgYSI-Mk|?jy+h;sgjs8rTHFihozek z^O%DvwwU`slc}H5y4faEvzf|WXg>>pHk+y3g?40iXr<}#f9r(e`-x)VFsB(qFe(d@cm+u1p~zB-SXasLAUttf!Gk@o;SGG*vHz5njqP_ zdg=g+niK;dCDQa7XB}fmY<>aXF}P{$b0b@Eg0(-p+eXzj4xSrD`3MiEY*Yf)TkZZgL zr}uE(`k`*juGltHB=)c9Pl9y&eahH+#%+MyBEyH0A<5P$XV(CnRAo++Vp0$&W>bdCq)+0Jia)-O))m- zUzn`tcj7~nlanmyPI4{QeuU*mX`>@rhUEURenI>pe}B+FKcL?YF-xWSfp|shCsnP$ zZiw5p1nDaNscci+sW3PfMTlOF0Fk`@Tn22eqWm6ck=I*q8}4~&ZO`kKJdw$4_2`SC z&Tv)(fqdJk7Ba1x4q%=k(9}@947rZmb;)Nnk6zFjx@`1}teOo;(Ce3tG9#~N!&y~g zE_395`oRz>^z1G#GdTagSmt$_@3W3hCPipNn(wiaBXPGxU#6JlWr3hUo{dT3D6-R9d%EbY65I))$M?LvdSO)hojg<(P+9 zib6;yf$miaV4k$AO}6%{!)>R)3v7%O=&9!K0w;L`bX+z{1VFy6xE+m|^g#1!{#F%@ zxHlTmKwH_Cycyt2A$ zj@l>oW}5FuMjpbg1T#N(w4#1g@`k^PdRi*GS!m&fA)*?(d_Gc)U24EFoNiM#}fb1VHp6YBYxubN~Kb*RIAmfz+D>-F1fpr6C%dFrV2Zy zS(;1J9r|r7O}FV6&9g5#78bKg>!YTbHj78co+~{vp4<~N zrAQYgcg5`y-S0&7#FjhaHk`MJ7KlB^X+b+_RvLvaf_PQ*ixID5>5uhQ#V;T!NI$Ge2g$TL3)z*O7K?)I6k7tv)n7(rA)a#I%ZJn^upTST0Jl&d5aa z``O6Eqx^5qE!V6XZD#1%IbvpVhZq;ZjqOU4Y#lv!WZOt{6d4bYr=AC-y6CxMZGyOy zSg#=(#ig;iD}|SfQW4UFgx!iu)0?g$QGQW6ZZdy3HZ3K5)01{HuOZn(9>-v~eiVis zc7Iu7mk*tQ^kA0|$^yNrXuXkdQ95blRahfW$5*ueejvzi*Tvxz$qP%|Pei}JT8d#& zdcBD9Laqz4OvEo71^*(9Qxw0Mq3<93Hvh z2&UvEv~ochG#AfoJeWqai{~Np*vhd=G&B@T@8)k8)G-^z^3is6B0}ZDoYj1b9-L;? z*#ijMgikA79V;(_saQ3%4g2xz^2%D{n(-*gzxmla-ifJEs?{E@*=KxVLMht4RP4DZ zeTh_p1?UCvjCBT)JP;oxv_@u3fgYhf9^YIuGvACkz9E56k93+4GfX%EH#v5aHjNOM zuZ796lkS=2*bBPG3gU8m_=fTFc(frPxRDP%mw{R8a#0jb{OAjB`rEg^>Gps4arFC? z9xK($SN00^6^=a1jXX<&BpODWjyB|wI$EI~k2XtYrp;-NHl&gI4W!Mo9@;cb$9Cn0 zcvdGjvTlzjO`?^?#$!}2Guz$)t;b$JdQh8DMtbRBV>H77#yH`n!g%k{hBc2#KYBU_ z8l#)O!*$ta%%JUaF#pCP2FZGUp9Tq2PR+dDoGLL>^{zd05;M){SW1iumJRSKIu2Z;O7J-)+_}R#U>nbUWAiqs&^(1WWVnD%{M6 znt^N9plP(t4&3$u%?0&s%&rbMbCiun37C}oInB56NI;p~z)?2S5)to>m!<~SeCty@ z&`54moX2QF$4p?^^}&R^`}JnN#u6^~ec->b7+$(s`krZ-CSfkV7h}`!A1L;Fr1_>q z4c(TgT^)0Y(3M5$=0x+h4R|jY$z+Y<1Ik9^D$!b&5GJRPoGBQHt&eC9Cv@BVq4b2C zqk5tHZ~;HmugDZ^UA&qyb@A{CHb8Cq31g2Z8)KQ6e%i1j(Q4Q2X_BsuHI0`in`wL^ zGAFWTeH&s4L##=KS*Tn^`A5W9Rh#R;GUbc(7WK&+L)t~-=g~l84a)n*oCK>aONt3~ z;wIEKM@YnAVk&xE5rZ-1K#dTrUNV@XrX4PA6~fUQoXxeFl=jqM#Yg2tS>|!tjag6i zQQFVg(r6|nDg5@I6k;7cC!6bWyI3 zQa61T17pg;0?Ay}C@M1t5%p`1`mlrEkI>S*oHA{zmrhOeC7TJ8CfCMY^&9 z@4?-#{qeW&c*n;y;92Pq(@Rf*cFgy8cOKG^RifSdjF;IPbV_n?1;x-Q z_P(@On}LjBmJ||91sL^9Q^3)RDZ(pGWZ6O;M}}i9N||TCWY@mCW@);tkX&P~QfLq( zNkmeLFgRM2E|UZ&8A}}U8nS#e1Z*P}6lQ8?3y|gFmezl$w)Dhmjfwlx6AR;Oe-C7Z zXXQtWwKqfVF)Udz*mF^zVncO+tMP=Sm@(EYqH(hv8A~)Ip(d6&{%Ng{-aapSW?N^7 zmxRbzNNNGwSDx=?J4v~V0pv)*@iWA*7oQik+KD8u*oab-8W4mgBkeZ75v3;NNQZ$4 zAX}g0pLHa@)JhgZV(|?mez7All=dWss$47Uz_t8J4-_e|YI6FOyHIe3LsVB;B1f1A zQfxyof-ETsg8Nhi5vO>Xcyf$)?~NR8Q;Cr7Fw!ND$iW_rqsf6hAG@n$DvdA%8n(-f zHll8`VU#MLK|GUb+t<>e5YmcXSqH6aWS)!cQ7{iHNt^5V(7tah1+NvUXln%z#ET=rhi*_9ohD^~&zu_`ez#ifWTf3S+KfN=?l$H&c|2y3vI}Os%ukfcqLK zs>Fs7xA(JGQwPNGFDhU+2elY8zY-l_cMVLn1}O zHqd@kb(!sW1R~@PQAX$-oYDzH&$kk@v)#`} zULfa7JT)2A8RN&J7hf153cC8=FN`3Ey^$r-v9^f~6(YkDWo6>W4?BpXY{#UoZ{?E`^a+RHR*65fom~&R^ zG=F*e8FSBi!kG-%*ePeqf|RT@&n(?~$2KObj6D(ObK2=tsvZ7U)1P{Wg$I5|I*q0S z)-HjyvCms?iJO^Ka&B2pl5#42Qh86B@$@pg>!f+*Dkzs;zIyfO6JdCoMA~rPW>LpC zk;LD!1^q3~?-m|@zr^@8No+6AdLbqmQcZS^n^!kuTh7L(k0y8fK*o-$FRiqpy}m?yhduqftRA?K!i zW7dD>Xzn>7O#V3&H9!!cc66v$%9_RLF@rqsiry?SZh%A&Js20nuyt5?hm?ilNvp9WPjfP@1F(W z|HfJ@h7@S6Xo`cyPHTu&(vZUcPpeQOl=lW8xiRA$`^dycvqfG)ocN}xqQ<2IfZKSr zLL44z>)iKE>yhFg=up?FNUZ&SuddXAZ-3d5>juyd-vVk@uqcR9BRtML{+valh4;tW z-2!kAF(^Xku`pMsTK(oFS|O~c+YegI6a7SWz)Uk&k8@AUjUf1E=;^pk`SZo z-=S|9HATP#Jmir5GgD2?Hhd>FVHPeVa>lp?PK-tqKlsjPZn^cX|M<@JYa85s=Ns?% z(BXH#`KMou7^EgX@XaspIe2)}Z77H&#ZXkThz^Cig!<6eA`>6ef!>Hio2AWBA!Mw z{zyEN9&Roq(~W9Ils_qH-9Lm-#)Yepc?HO|K2dcyFMbTwg5{(22}Q=j4)}`(4P4DP zrd_wOB#cOFWxJ*+dt{ojoo_q#+rv}K&JqU^8U*u99Qnp4f4Kh#|M<55_QLs%-tr%Q z`&;k6`&*y=#gizX*Yo~sK6&tsANz-&er4<0qaOTX*X}Pr@P&sz@E$$rWf+rcIrq%Q z?=ZnPhQTN+l#n<7nT0q#q`ynlxNc>?F9CNWe1|7ejQqcK+Atwq)|tjVahwwTJ^eSD z?%P1o!LHE!v}lcd^J3p#FK@xVscX$NT)+bcax*Y!#oW^xw4$h>|L*qk)PJ9-ZzRQ)hzAFEXDX$yAO{w;r{Zi@3 z@bq|)KU=yGLK|W$r^UjOG@KaUywgT(Zcamb-{S?5gdg5%o)%%T`)YmI>iT*S zz6fKP+NFc9#W#Wwl-|S#QxR7ZlPMpjf3OVyi`4u9~D>YN6^Ys-5rVeg!C`PIg zYQPQUe3bX>eR+|k5L(|M(1AIAdx&o|H&)F2@_epqp-?(BVa^C#@yITiAcK(OH(xK< zv#ZRZJONmz+WH#7I)=7Rku?WP(GufibW3qP9YtF4(lO7?rZga5$5r)`8D6QjzQF|k zPiB0&kEi%mrUhSZeUqmvXMFlCp2{`F1pAopucw@ecqeT=ShMhIZEyLs`FRs%N-D33 z%q@y9=w2=^FXew=!j|8Or)Z(|c>x386?Ua4Nr=zW?`zJ#%r3vDOJW%*{jM&@?Gjgj z%LvLCe;toN**ch4zc=!;?#oi2ui^^ES;NnLyH!9h>_1`y4K)}u-Dj?5!O-L24xO9i=kAaZZF0+Aas zO(nPSF(j8OEkAf4`t})ou%6I>P5;czM!sy_ub?(51Dj1I&J~2>kW-K~D+V^SM-ggV z$=5N9TY$o{z~D-L_%GBNsV1oy&A@b3L>pHWyo!odv@AcFho&hWam~_^siQVAQbIQ#Q;U4%^D^~$^ z*Yqis)+lU)w;@_%E4%5H;IMMlYD9w$tZ1K|#qH5#c`ANcn~g4xB3zi!3+N`H0`V$_ zmQfr|GHOQEh3Bk-SZRLlDqFn&Be53g3D;!R)%IpmyqWMOqf~9pYJ30sD|wMnp}a|f zK&JL$B|m*lJ~??PS|#Xd`ORwDFgbZobUCdY#ddF~iB$WIM<0z=<)4aH=I5|@YDKpH zl1{@rd1DQ6ZqII4`LE);v^-x+GvXVvnpP8&HTmwlu>;@+UhWKKBhStFbLISw@S`RY z7fDx#)OG&Tav@)@Xluc zf1E&&{8?J^spZek_wByN$B9?-`-^t*I-%ZjDb^U;iIDDTGa;eTDzO@tYK8$1E-UiLeyWiDR)Wj(r#NIkEx-M1 zU1T3B+BFTbOHd)mek-y>J+mNt{l86z?63(CU!al%V|anGw{ zu3@a>`xfGXBb1XMxVp3P!_qD7s zABn2AQ_50F2`h7IH(y_^$kVK;4X)Pq6bMKY5;m+~ly3vzPgv1zvdfGb5P6K@uuPAzdo9*366yW9U=2A0l6}G9S5;R@OB(rk?5iNN2-H z%xDNo>R1yi6s>pkKV#O;FiI9gX2bcIPy)bVdI*p=YgK5szdw zqL0;co$)Izla8R{}g9K6l1su*khaU@;5aUA9>>U0W>@+)z{RP<>qp28IYQ=_4ZQ+Zu zDm+{5;aS&3^qtOQoFGsQPmv8V^i%od(r zPYcfBt~6SB(To;*akcFk0pBDQ_O=T&aU@ctN!GA@2TD0CIJv#pvP=Av_EqIdmVHw? zEBYD=Y@0?+(&~B)6Ocw=OhF_DTx{U$Fg5@+6^1?pivOy@y~h*_n6RCh0bs>8-eri7 z>2PT;p>X*X@>jagQjPs77#AE>W_ zeahlu75784_Ju^^ywRl%ZpfLn^2Q`#1_I%F10?mS4#>4V;#kaGoZvk0&wV zu<$9Y4~HD(8>X-$@|HNZn|2C|+$PzmTk4x`3Jco&6n4bJu_(((B%KQV1D>H%0=2l{Tra=kgC> zj1UgGqCKp6xHc)X(<)YMT?1uy@@aa_1>B zLgHo9>J#aTIZ}GMqCPxd&A)n; z>|bk_9QUGiC11Z8{rOMQpG@%SIKSsb3ook?2qLujnKt15HY;m6PW9kqY~5`_Y45V{kZOrN$iwmige;nwxV^o znk*NUSehejhK@xtJmo#D5Gkv{pGOO@JA68J260)6W+*@>ldg$%wo^TM9=)O)R{&Yd zI0>55{O}Q%hy#C@6`KeW#XnN8q+7tWg8~Zy*4i55&!RLlC%&|!MU~Q8HK)}X76n)~ z#W6%wb{@B5F~>M9Fn>>?FzI#$)UhO&I@c+LA<~n2h(3^x9| zN>}L`%@VQsCNb=A*Jw(VX)MI5voOxA#yiUR1R6}Kw}dSufv5b!>$+pPZ@yxn6=1J* zYoVA~hN!GYNIxmglQ-Skb|rr`HNHwNGRYqD>cYyL9!Vh?s{r)$iZ-Sn^K4BAm^T=- zm6>HfK?v1RNOTRni6Aiy@G}L4P3GJ{Ax07dPV5J=uTW^TjXwBci|AD75C6IK0kMEa zo8G9HO)x&yyV#N4cEhSDEpQwzhPks zS3iK9(jdL$RHB%1D?^}*^;yyQ3dA{)aDfry)_(FP&5n{gxAuXO0kXixJNl^i1hOi+ zo{K_I0r3(QBy8KasNRgLLr~!oFwU)86YXXX>MqnRg91xL0f+uUGvxh$bBeI=w~rYM zvxK!4_>b}*f@d}v=J$SBbTwTXiaR~ zE(HFjSQ8s;R1d_$0M*k0vup$F?VF9(-zglQ6gE24k2y9#1nx983Pj)l>)m{c^!uHs z$X?lVitL6X{Rrmzr!()gxu$K}$9E9n*C9UV)c-59B(r59tyFy?xY4mWt<%`d`h+vj zns@d&^A|kvN#|zm&XX5D<*82_U-a~6EI#kI&R_D(-+tBw&%SW!vfsJr;!A$__nxyH zFRENIcyDG%vRurfqx?ta{E(}_IS6!BI6o}N{J>B%chF`$d!h?XbMM9Gc$gX5^5C}p zH~`vng4=dD0NU>bL;FbpwBHSe_R|1pmjvVOX93VI4u*Cl0NO>t(0(2O?RSFl_KN^$ z%YxhX%K&IggP}bV0PVtHXuk@8_UvG2zYc(QK`^vO1E4)C7}_MR?Adh4ZwEtrbpW(y z219#I0JJ5+&~6EUc78Clbpg_ z(EcI-8j*m3J>3)ljWjZWZF@%mG?LH+w(Tzips@%Z2<@E#&`5X_2<`R&XynWZg!Zlg zXe8SSg!b+LXr$~3g!Wef&V8aaXjq5X9LG%^eYLVHgDG-7T7p}jW%nr$r% znu%`-fJS1Zz_z_F02*nP0-?P>02-m#fzY-FKy$$)#460{!Ppi6jRaAFZTmm~G%`#D zLi?KlXlz{wg!Z=q&b!R^ot({=b4mLZ% ze1M(5uOD;oqlr7NzMFiDly*~-Z+(=>+wl%^*`4*cFwR71v%n>QbmaOS^F87=h?>F=1n*nAH1HJDLa-m^z7_f7D z%9iEg%oeumP1&`qdworoL0#dCm`7{a;KweVW6?JEztHCP>>m$pVtE`ru>7M#jk}Vh z>T<)ezme>rkcJKRqIj7eK?&5f3zQvKJS9V9Y-vZiCMWuoWRLbze16;{pToR0`Mg)= zhyKs&05zuM5i2vcFk0cI*R9wtn3YbQlOiS_jc=LQu;AvbKC#4ZZscm*6<>1mjU1yv zV*&VRx(W!xue2N{`G)jm9kPw2`R!|8rk{tB>-1C64cjRu4;p^Swq)n& z4UOw&q@kgymxP8ewp~A1kdQa}qhRk2*?ay~VEhi*N9?9|hpZ)C-}x22(_3s14tI+M z!OC{rU%slcW3xT)<%OfNJ%3Y0KHKwtu9f5Ru*!V4=SN&wPmar3W_gFdYJCFf--lq@ z$F^;cN@k8n?;GHr2aXSL+e~iogS3d9rP{%$ZKXK5*;Oij#f_S8H>hrBqc)ey$xY$} z>4s%?vX2HieWMaV@|z^37m7|BXpN zv)Q^?_|{BKWfyH7tTjHJ#1$oEkjdwUT{7JC4!YX>uMyYAUhR8^ZCdaMDlPvZ-FT6e zETrTbN~W^rZU0LQ?^u)V_sSL}?j(gnmp65)pHyvW3{rtV)lUOE!{rVnGd}_-*@JMF zQhI2kKS{U}XAf#*HvZP9y~$YZ^sgd831a|*i%g33Ue>AC+k+&4(9mX?e7g3aWf&+A zi9>$;A#n`Dh7@oA{XBIz)CTg(!U$~oQ!+6D(6c%wi}y*(OJ}r-On!y@XQ1vfRmG$ds}F$mT03=QHYL_u}~eW%8V|E;7_F_|C!Qv zTE~?$OdThwv+>LY7&kg8PU_5Fc^=uGO`TPI$Cud~PMuZgA+I@QW~XeEsYGn4WTj>u zwn-X8A_p=%S<7{8DTK(@Yt1Vp%s}dQ6(>UxCkMccC~*u25#% zg>W3ur*sn7H6N?E8IvctX5uo&vW*Ch%JkumI#KEu3dj<|OLhX0ePYK&I5cL;Wm__wWypo)x&lMe zOwTtGA;&i+Fwb)WgWQySqc2EMUOnkC<$BUC*+?=VsD4Jm>=-xwyy zk0?w?B76Bp8B$8V;R8G76AltH6i2rHp)-dwuXJrFRb58xDfw=ssNr&(`JjRP97u*` zg*>aMdahWc{+vpbNu_a%w<26F63gTl=bhH!A*BT5dsoem=o%)pObWg2pukc6`(BMhB<(C>dRS%0)N*)G zlResC2|StIDJ?Vk6G8XT4Z2v(RqKY;VnH!Q4?<4U;N)jmBloA z0VzQ1`K3xGS|{ScvfPmUD$${CNCWVfLM^UL*fbNpI3}+Y{TY5Gj)j#-{>88KW`xSq11KOU2Vb1_-$@C&9h4+hrScV#x&KQf3jgMVH;eF9SPuh-xqpi!XHgzq3@hpY zKC}ZTPIEqyveA+Ph@K6vSuL{DEOf2dSVI+T%p<2UG^?(n4wbfz3ntKJCsp$UCfDOx z)d_kvzwO`L+(hi3ALgcY7xT<_jwJP)>#`4#wNW!|P+21!F-?UxW$?vB^aq_WG8FR) zPa25h&BAQ5oHro*MD+W2+;|gLWAi(y(jB9)CpUh7Z~7vk*#J% zyNN#3Uv$S!9RU1+a(`uY^%m}1CkNYjby1DQ6n^U0v{Du)(zUO(TH+5 zkuE5eJ}x`H%|^KIRBys~9GkBXR3-vBRw2zVrAlRM-;ZXabREKvI$XHMx86Q%m>@%? zgD+m>Mc@i8m5JxP?#50sF?q|EAN^4MCce4n$nKZ@A>4;TlcQ~I2g>7byNQ>c^SUg( zach3tFE^55tdalKt>2AE-wpUi{>!hwuCX$I^OrxpQn>|3Xw&}ay8LYTJm34ib$|LY zUith_zaGDAMTaxln|hcvNaxIZcf2ck8M%7-G5=pSBG9^{&^(0#W&S{SXffYxpV%MW zJaP6-G)+L)Zsm&`se&(8WDR>tLrnw#q#p2ta9I2O9Wt{&diBI}VD*XH*RH*B>k5*h zrCZw#sXJx6=b}LlZ%$;^G`3V)UYX^bDV}AL8r2V88!NmjqtNJcqY*0lgZW!K z(r6nNyd1o3SO6~dMSjW4@0dWbM)@Vz-!UP*I&uesE`sZS`%u5@vSb}BQN5`XJC4D9 zi`WAZ#cPT@nwb2Hw;h>$r8qE>Ql&*X$>!wwS@-XSqlP16m@iUtdrt{!n3BKjDKRaPZ|W&wlE^!6?O26%|hm?`pU)!0w{@R%u z?%S#v7w+0l8}RSAQ^b|#5__hBPJ_G`MKM1qgL30X-tsPeDMt5>n8N%d5HyR#256!4 zqSi&xA7Vy{JIb=*i=zL7rx6PU9K5d6y=8%Ms(0%_+4mgIP@V=xKx}a^7{j{rnv?up z$K@bIc5IX-qXTg+aS0D((cfhS=IcXWE={knD!$guMfdNzbUqu-uPP3Y(v)gkctZ`l zh}eBL0hR+-a|->qOvjbRd16^-w{&IySOW!d;k(9jU%Z1oOvB(cm#UXCq4 zavf>XGdHB=a{N$q{V4u%jqzwwdq)N2yrmZVm)Yu)db zC5e?x-tnzUQ3R05Pd{+}%i9=$vimG8sAf)JUh^oev2=;V>{UeQp;6D_Z4imcm!7k< z;Rpx5Y98x2x*gJuyiCP-CXeDc?;o@k7-*-@aK+{KS%LW&dWfls+Hz~tI9HibZE9Y@ z`EuXFxA~k^m+|-P|CvY6UCl+hip^X+V*tn>PBaX3Us*lhzrc~K+dsPb?Hv~t5f{s$?}h0kE3j{D(?GbFm@%6h!#nY;|m2}*Y9FkZX>GIa0x^ESSf+P(`VVnYnpbjbhIbR^- z6~C^C;}3jwIOa||2HbF}1s7_52j3Tn#WlwKK;Myg+0B-Qm3N$1w5HFoA7Tid!O?oC z?&fdqeJD}l0I28-yfPqN`C37p{009F&NQLGh$ z7_p`__V{67IjjC40aut*oO$9ng9l!(aFmMNr99K5bs+@@_qxH2!!i(?OL$vuV)H6< zrB#Y$^iTE!X`v6`r^+QXY3sXiF<_K!8LLpoq9s&OGqJ5gyTlHrkQJa0;0lhf6%?%p z$j?1bz2G~YjLpvw4h|iG)u};hy({m-)Hf?_`ygVDWnID(t`5qBNSE-37hO7X+%8E) zu?|pl$W%g`s-+5OL}X4Eo$to}rV1Wp5Ls=!r5@L$5f4SSJmG2veHykir?ebSP%sYB zI?J<*=@$daVftFGglXr$mr3wazzDm-xthglju5R&)+)eFraue2D4W+2epI+X$g^WZ zO~{KnfGAw3(!2gc)9c zx~DY`)+0Qjv{1yV1u9_jW+}4{3PF_%FDzqlr9t-!yAp<8C~eiEBF&Y)wUsPduL~W*!xadG``!5QZFL1L=fAhECt?z;b9#Yk z8s~Ndqkio;I)2@8bTk-`8&6kX6wQ$|7 zgw@K#8}NX%mZq8Xf~~mr4y3NI3Ci(ad5o9ZMghBBO8=oRcNRtQ|l z$_^&5d|*_AIW?riHQ=F&hGi&(Y)V9P3~L5fcen;4lH3#d2zmd{!K&67l$|Q}1jd72 z)!`a8;OM9~;=FKjatdNL%%GcKJ?T_1`=oZ6nslX(+Q6UVKmsL?`KZ<&&1#yftI;yE zC@sJNN(zG?R*9T(5Odmxv=^_fD2#Qps}*h5va>Qx7V;6TmTB$-YFX>$I6w`kIzb4; zFLCED_&j~GYBk; ziIZ0O^9|nMjqD@^>frb^+VhA;2-#dF7A=4Be7DjDB(jQ4Ii~r2rmultG~s?LkPseS zjje5zO_nFYH9kLNpJaSs{FLVVJd8AdTX;9La-wwz%=bu>45c=p6HcEpMyi3Aa<|cd zi_vZcI932x42X&@(WR_ASs}|;qUjj-MdIc~(RuuERuR)WrrOX2k_xb`aApVu1aBU~;R!JEA>yoaGfGZN0h)j@dROG|RL z#@9yl5n9;*oMdN*`(obca9`Qw$C{W9@*SiiFP_%Wo!t)J?+a1K)uqKK{d*^tmVNRt$U`zuH2R>ZQ+`ZIUK^0YKRa2HJlWW z0D{G!hdEwWy#9AbSIw82O(Q}I>5L6N4i|U8AWQ}X<*;Kkk#8TNpeSaTDOTLl%Z?$z^2;6*@Uh=2v1mhyh-NTW5+BifX21a z+GB=w$`sDGXAbQt>^NLj)*hBb3zXUEor?valNe!zB14@Q;TZ9nf;!em+jGk1CMEik z>Cm^tnpShowLk+68)|ONiJwIkq__fln(JT4m^8rmxH z%IasM-NN!I{!Nt)#(YPUI=n$F3Ddg~xT4+2PTSf}FxFULbsdNRUUNXGu;>C|7hMTT zq8N7HE0lUJrKNU|IL6bjRIKS^+U0qK5hHZvShXtQt8-3g9%l(h4(Chq2S6;iO4i(f zFPWtdjwsKF_>j38uf!naHHEL_zZBerBj)jd{Y2NPJBr?#QPIKgRH)NCYdVNilM_Zf zO?j!@smYbO9T!(%qJbdyV4|6wzO|FIBXCi{GA!|dwr}_1q+a4=iufLl6O>-tB-P<% zbP8UO(@O7x8w-NMPEFVuYB;2@v^5Pr(n7lBnJ5LIVEzOV!8rx zh*!}EI3mKEKqO?F*rwYN(6b0Q+Uk=J~$)eJw*l_aMNgA38_SMjTAcqTg~*+G)wQpdXh=n&Xi)XREpQ7(^XTun9_>xFU@| zxH+bg9*+|r<|Le?U7S=j4i^86c2lLNTH-{@Q^(>2Ye&+17IY?atj= zICkf%$DJkvNUB+0MHUw1lZD0bO5^2>a~2k}LbI?m0m8zH`7sNNDeRgokx>K{%@*TL zv#?})t%egKXJN@Ea~2lfc6%}IT3CEzClT8>tFiLLd6%1qU6xh_ODl1zJ}U56{L0#@ z$NqmwC63eLruVn1n<`@BtSto1X*si)F2k)B!%xoOO1!~k8VZBUV&(K0h1g?4$=X8h z@+xA;7y|-98cHT^dr^uoWX+&eOEDb^VLDpHAm(s!wP;Xk?pm*UO~o)THq}csAbi-9 z3cgpxpny&9PN!n#w03p@xp@NhUu6}S#ZbwEbQb_>yXx?&BrEDlv9qtY2L!0pf_3% z4CyFzTXyc=xAyQA<{utI?c1`J^T*mkr+zZjSmnv+iHWZyG9obARh*o?>zmYH!^?=d z73Xi(U9-4*jqc_YcSqFHk>c)ZG7LeFzwhPoiz^jI1W>{mnB)2g$40q7{XfPS;GXcF2W#L zqwt4gwQYfAXg~oOgd-9eG{|IZFo^=5EDy+7#u}o@Qb2%A6eJq~G6)bLKm#(G-*2CD z@4K(MT9S>KmAI|C_uYH$`PgTF?|sf0z&YTXXF4I;URV#LjPKxt#fofeJGv z-iI6MHTg<=Ud8jkyzsRKYh{!u&kVPMWB}W9dVb`lRA@o!4as*<3i`d zOzOgIQ)p)h-pM~&f~bT^RWr<5FBAo1{{*ncfWfLVjdGDz(%#Cd&FQC@HM+zHM1V;x z3pQL$e_iU0e6r^z)8Ba%VE3f>;L@-E=&!Yo6z}oZR`=_t{k7fwy2D@R@oREH?{P01 zJXQxxZ#yvgw{3Ot4Ye+xn+=JAj;q*Oz{K%_==$bQg#uBlVTlH}mAl-*IB!!rl9s*f;sLT=^@iZ;M+u?z_4%Mc}a%iS+iwDVu|? zj#sbEkw|V&%%xUtUV(g1O;NMGz3aDag9^JwZ+R>=I;huAj-P`3@S8` zAw^)eIfrT^vy_RWn@(<9;|~B)2`_~Cv9IxI&Fc6n-YAUqWwt_tQlxi3?h) z#5__qlnE}}QE<-F$nW8*@ElKngTxkN(so3*{w8;1OI_1eysvlK4}K;!94JZ<~MF)mv-vwE42`<@|W_lIHkV17MSAj?Z2aiBr^S&LYC2 z`7-j)qqoWL848qOqDXSdt0)LI)b-bGLC7eeG0Z&b{B{$HbXw-74KbnXDbY#tZJZt_ zQtR(+*Qls@{`csTqPcWy3@|HxFp)7^U8{ph5bJ&KJalm9Ncjl~`|U&T0pNER?LA;} zN-!Gr3qJ@ze@<3rpfG|`WFUNJ3d;sU#Wybeh;ps#9D(fVzxp^)i+54o1H3|USxG9# z<7)*CrX;M?^^~MAaxNGf-|`27IQ?CG`v|4myR7PE?ae;;n3X-xQD*#B6H1tlE)}fj zhAwpl0u9|7H7|?UIsPK$cqkFf?&dd>#K%-ryWxQeWh_2X^-878S;xf!Su=t$gw9+Y zVs*qj!L+;oN~icH?}&}v1aQTGC~-WMKgO@1PWgihMPoR$h9<|+_LuOO4BpubxWYb2 z@SPn_`~lhzrC?rw1Q}(D_T}{VMc{FC<`q=F1}sriz>OfvW6%-iT=3bbu{lOdsiJ0j z-xw>Wpe#z@X|x5eHtWVkyvBd;;@irlrAKx!B2S-$CH`L48D34_T1 z$mq(W&7q_736=2Ql}BesVMiC9n!UK0%&N+9SItpa9}SKu$m`nY{!8z!VrIAb2Bi|h zKhzu|n7qjz>OzBFPu~ctR?Ptxdo<_25u~Y_7aHrPwF|upzxaNBYJR})v9qmXY{vVx z*m_JBOhxUP?}fJhFKLUa+S~eH)^6P;rCxk$c5yUe`>fBirHi{}4m2||tXK#owVh8b z^a>H)oR4ew{PyYZ>8j7eu{+G0{V^U(>Vxcz3~CoP!98Mp=U)-RV!Jut&TrY_G}8^A z6T1a%6SKvY8l0B7H&L4lTth>+f+Lb7-EqVfvk_P=M|Ob;{S_;0aA~zacf%XDB0Du+ z!J&CRGpB<~RY!hu%zOk?C+CStPMy`M&SQ(<1P7X9%Gt;KJo{=9%;irx4AshYje-Lxw6j^P~OnKW93B z8*E9)n*T28NP9FUTu8vaz3JwA3cRcJ^u6TA;&J`kK>ycogU}f{b&sytT04T*nWqo` z>}UTNGitSc+YIXoJXvX1KyhwY^ur<1d4hs+eqRa7O8a&S>!!hf_fNTnoTAoXc|L76 zUJf{&?^qtouZmx<=Y9GzJ+)^3dxFl!DE(?=IlF9y{CE1F^)LBl=O5{di#Rv{cnIC0 z=`{!F$GR(5C2LU-{N_;&Rxwx5lBgA_B$S2M;%i+O>ON?&Y z(M|WGr)iAN@-aGC_8xlLUW~4zr}$<;Pr|SpWsGP;-qWP??y8wwwngx!@Am7Q!#oMk z(M?FHBl~CXCIz3nn?}e+!F7gQ2sXfk!ZK6V_<3R!5p1U`7${xXolO-SU@GbjS3e2r zd-x9cB)LFP0?Z{S16sh%BnH7FgUHB{GRySw}p1E-5%7BO#~v{-l+oZlVCyn_bG!a-`@3Je%!;Ku>OG2L6vcn zH=7G0H&}Jzg61Hqw6^#KXymlm@0xUh#=}AW^zTvi4x;a+-;4uN#mERV1uV>ZTNjdJ522aRDUEHt>l+9ky% zZoZhM6yegb8@@8GeQKi8jo)BN1$em|WF}H+#J;Ey|HYSJ{%+!1>&7E4K1B#|`m-7_ zb^8<8+U*56oS_NPgpP#~JM38?@)xsbw7iDP5X=PP&+Z-m;Mv|`SP2t=%kt}5Q_b7E zDB{nn+iB952`7egJCJ)HkMo0P)yX8FEn}4vL8+maT0?1*3sn#Vl2l_8rY?gHAZDLJ z8$1<~)m8#u#3Wh&4tuP~g^XiBc&;~gBPFUeMUZMw@Ddby1^mXa4_im!n?QkgaEpK8 zus~($Ht}StBef@7Wi&NUdAiQAukflO)u<>EMXIvyR_zgmYhugFfJxDQ@JI7{0Xn_MVu&ivb!-K|T>boUvo4<_9sy%vGFMP&3cu z#!bvsiZBIpj@HmdwdW{CTBiNL18d%zyJ&QL$RUsA#6T6$Xae$NG(Ui(#uN=sghOnS zU1PX^#}=5*^=wPBM)f-;7m#w>iuizO+A z@FG{4;iHD})5}nUZPx%|9boKAhPs_r&8tqox&U}SV+nl>^O9op>cZG0&sJVt;Lh`o zji}A~;cm@sVa0)HPt?`g)fJ73D~MR0dCKg600LH20g~x_BN#{E2x%}2@StR5@FY(f zn5Kh>;*83{WH4IJuxb&b8JV#{$Mc{7n25(596~R%DSnEp86aqNyYqEBNp~>2ZGSY+ zXv^fUkVoESiad>|zS~Fc?-XI!Y8C7Dlkpt5oTtAWq98L}gr|Z30!Nr;D zjUnL2VIixZpw2-%dO@fv`j3j&_uq~t&(u=?wNt4;qH}!0*(SvJ(Pi`P&@H3?p*jrg|8ggm2Dj2WeQSG-vlF;^0#xh!LbZ861O)I~dx{r`hQInWDxOgOZdjv`M7 zsNYWq+`;KUt~xFKbR^al2rzfWxo>yDoNg+pf}sIGCxO>RvzcdL3F>&Ebya7g(xBCe zhUN~EZ|enGK^nt_QqW(B#|i`ZN;4~hd#R&E;;=Zu^FwnC0d#(8pYo!MuCpNPxm<=B z(gi14$x6FV;C#bR9Fm-1?k=Um9Fa4qUY(hZCbhc`n%lNat+pfd{C0@H1neX!Z@%8h%y>NH? zXwfeS*tAL`U6TZO&BX0_RbHdw2H?lZ zz5_*?F_>qvsLpkR5XhV8RniqIfbUGQ(#mZ80zS=%LbHOSB+(b%Rr?_}6`j(6^z&mS z4hkqUYrLEctVg+|pw6=g?tg^9eTq$^m!`ly!u8F~BFv2!gHF9kEl;J%3@Fg!i1y}_ zwsp9D^mk~>ov_=Re~SmN1ed6+z1JUi*pG-*rAnwbRU#&^-=D*Y1+*MB%nt49c+HW? zR&ny-AO7_B{K601^l$&q8zw(mcj-g3;>Bt4O4=Q_VcbCiaBJeOm~04ZLk{7$=GL@? zmp7G43+W~~U*SZ9w0LRVbla`m>%fou5CtJ8KFsw9o#@x81A@FxJyw7Y8+8DOXEBar zGrKUVwXktr03|2`{|?DE)Lz=t$WCwudCX;mKqbM7MR{OY9bYu0P&o?BqNOhoc78FX zsop1LS-Z{rFO?+*8gKkR>hfCv=DLm~1yMgd!z zm2{zp3;1A+Lsge4t0%u*_6aCXPN*oAit8qY{;OZ|`F(DFADKPhGg>V9OsfAzDCgZ; z&*SKaP!Q^-7jyoAw@M?w4k1N?(3L05{tPA|E{s7Lxb1vPI}X1BDUNzYgYxSg=60o9 z{JG-hi=hi^D8%~DRo8za7&e(BF7kZmt7Wd3qqP2$Z8w5xrS+e&6)VC`PpsN12e9W%L`-!=G$)GMyx^3^|GiABv z%JJ3fQF$^Y%`2rNp3ShN=a8vq(nws~C1VP#o!*wL6p2kNpJ>gt$VHo+C-nZirc8TZ-iarB@=#gUIdK`z71T*@h%R%k1)L|R?V?wa zXG_X6|3>85vaFT5iMexEUk7QsO5ilQmA_UhfX@WLjWU`D=h(&AVT#QflaezUXI4{B#_YvTu&f zJ5x%?XywkO;>S=+$OA19d~UbUKEiai7XqnRD5i!(8WbQg-Drz0VO}Ev9OpRdYX8g+ zV7%1UJ}oYg!+Yirc!vL(ZnU>?@3Rm341Yg9g#Otle0Gp$B=>aXe${8jf7sP5KbtYU z;Kl?EVai(yhZd6}HjEa^Qqp_DC$PTnWRUMv|zvCt?b2@sG17B=V5)_E@H7&GY8cZZCeu^af+nvl0>*f+hx!; zhyZQNH`Fv~l26fRG2{urmDNtY-}DC$Z3{sy&@{a3be&@-;*K%Bch(8t`R%>k~}&RG+NfSL55{=~I8m({X#+muhWb z)=k_`e;-3I>oR{-2Dga;ytv2UjuI&)z5^Ul`h)+O33pl702>%fkJ9*#mQng&`+LPuMzb0Rg`;MeBXU$@Sx;R|C>lg ziM7)IKJM@1i{IEuCA8ST50&A0%i$4oJgJLv;#nmhYD%|vy)pNjbcC-=-TX?r`9FY8 zl6JL2s1pMSdn`~A{{Y%v)s{M=q-{lklW^<$tYnOE{&Bi=BR-JbDSo3n-s zSr>!|AyCXRXrM9;P~zn7_CHn|Y??}|4`$td;7@$OzGXJ4>|sekc|;|-2#N*u;0ei4 z0ooT+h>HssJ{(`VaDfL_bvjkW-Onb=k~=LVTH{VhkhbN_jezSq>e@z4JF@B8U@#`> zPVSfZpgQDD*bzcORiM#J#JqoDv(?nWbYrPCqaLRQ6igV-(R)E$2W9&VR8Yzy+xuvq zOdNdaRY?0%p?NSx?W0t|1q#l07$FbvEOxT{)-<3zM}RfKl&KMk85+VU-`x~l*%z`u z_uP=BssQ0(IJ=-~8v;4N8JWYM*BuQ^g?)e??^>VydIoe_?UFcWs2qVcsY4#C<^-Sl z^S~AEm<{dbtY*ft6`n38TPtEP*_rjillwu3K2x=9l$Y+@d&xE)|Fg5&h-l3IZG^XC zFKWrb-B51wWzL3fFk2<;@zmW;x-b#qT+r@7tA3l2%~`qlpxOa+eykbi)t7QzhRr~X z{W@zYy_$O+l{`RA09_7TqX`(zQp@Oie<_H|iOepv)<_2zfbw$SQcV6QXt&FZyR}eM`t@_Iw(X;)M^ah#sXv~Ts8 z?f#J+0pdHjpZ!gj`8(;3#M(!Ha_Yv#+qlFss4~G@zNpb4F7@cL7 zi}pSmOau~D!vB(N6ziH^QIOdvg#zVbh9zH-Dg2tfuMo3@toC`DFEOn zN~~{SPzkx2lIvHy%@TJaDZ3ppL2Gb;yf~-C@_N*)0bukNJV?m zrM>6>h2UPsTPW}e?{5YN!gKzgvhKscYvg!%63I2NR(%-Q5 z>0!P=eHewPZy*l~cOL>DV10Pz62fQN{GW>+^+KA>mvO1ufpY{^b=Xu!vAx&?)5v77 zK&BpJ_Vjux!q97%MfJUY^e;QU8N{(ftDXo@hlH0h=#msWhbXWN45gmUDOm0Yr@-|9 z15!JIdmDcRp&*bc6p+4~8R|e3?Q83LLtr>_A{i%RmCKl|vX`xVMN9;uRCq6SJ*{o$ zdrt6H&I^iudsb~XJ}oYBu=t`b+XvVb*Iuy6Gr3UJehT@iP(i1lOT6+>K}Xs3q>RDO zm~Q47fzi8vFbv5rO^Lt`FSyb^E&O_J!GTzHZmVx0Oc3=o3-a2!7M6#-y`%5#urBp1 zYjbYI(Y^IL>M*zV+meEPHqbyNC8TX|j(cO`d$H#h2Jv1=8>&2{r|uDQ6CiZkGj5dt zE4U0JvPVU`T$PGX6j!O>+=D;-nV)*#!|(sxd%ki)xcHqv`}lYL^uPPFU%vB($?s=H zA?4=LT5SF3T1$|rVrLL^Z75O!1l5$Ta7H=sG*MF1Ys_c_X zrcRrlp4A)UYb|JO_hU!#V)B@}AT)#@0m&bf9Q#LFX$NmJKV6cEjb`&G1T3X&@5bY# z)y4`{?tBI~TxE%j_Y8yf!Q_%+$E9bUSwlEaKeeXavFACCWL{uGeypoyk}5PAO+`U3 zFswZVpNYa+me%{n#)K8?!BwxYyx0C(rpsM=fj6j0&Q$ak=w`{+RUH11o{0YGIH zDC~q^V-&NhO&iPk5ZY(9UFqp7r=E$Y>^yeda#32c8b?PbphTMPUn4}CCoE+dW1gAtat%$S*fW^Q?+y9otg;Djo!af@Q| zk0Ir*!{u^^)s0o2&gyScivdRNuT+mY(aFjxK_z*6L(I{;u{UA5Mkl|BJNL{Oe;NT> z`!GyE5VPWK+N$Ood%Ox=yS+bFWCsn)lj79h0bT_Y8Q>LKd0?1|`5oewp0@4|E>Q(i z;ddtnl4rtgj8BtNWqWMZrE9_MtYjV8Y#YrAI?c8#_B)UsAJik)pzkY_(UB!>Z(9F*}VnGM< z-#(tAKvA0urGeS*^dSS|Y(WmKrbCBOX%cuS!a@dcrlO|yAwG`G@yV}N$$^W)&^vI8 zicA?sh7+ocD6Z^E@@GqMiGaIqC-Ad(M zjVkK%8by192EM?p#vSOOmgnATd@?J6nUrU*(g<>#8r9w?61xC+2j=kW+gt4_dP^_Azb;pp>GThH zx&Eo0vf;$%z;uo|b6Qvv%2tjVl<5V|M5Mh%X6!?hZWwmDVZCg=Ww$4DVoslaThi1| zo!V{x$u%vxg$U?om8Ih4Zc|((wXlVPQh(w4AlQlx*9jB(nbiRn(Jw*d89*U zdIs91rX!QznpFqV*}V|uI5`af(4R_+9pq7CyD8Wo@~-1L3-V}?u}B}Vt5yQ1m`2Wr zND2ia4#;_OTVTWu{%B9Tqv(%R$a#r4?nR90TM+kPc!7A&Z_ zu6^o}yuW}74oOba)8p%6%hVbsSk*gBowG5=)Ne$+vNk0<*;0 zX-=ztEX|iWzr3oiziuAB6!ltoe7v@IELMTT%Gwxa=xts$=@R<97p?IS3X~q5ntq2I z3`A50OZ(?0%x(cqGC>#pVes|!^YVHaQyoOv1B3Oh%nWiXcOBUC;4Iiz5~&zSM+9qH z7?B$`c^d4;bSc0LDFpT^^eu43+`meuhZJBU4}jT;y!hWM`zW z<({&niy{Jf6+usPLb;w)JD?^RLtuXd6YJ~db^DZ41f#$i5ef`pi8{^OJT`ser;ra{ z;bN**+P62wKVgR(xe2wB67d~!gEIu;S^NdAIL$A*W?qWF&f9g@2sxp=)T)vqT3>Dz zn59?(bWm#r_F#_9nQlcVnV2am<6jz zGY(2j_K?A+3;kv1O6MZnCox}1l@ULI3a6zxKRDFay2_w@$C-WY0y!$9x&12Bn%@`o zF{Fa~?JWKdNV+6@tbMwpZ@B3eFb_7W*hx%zA+u0ulwwG@>vxJ7iRWrkZXCrF%AjSO zH(WL^as0b|Rl(2cb?m|^-NyDcq#y?$Tu;CV5!9o#Qxp9WPGM4Zcs(P{gg(YIK`c5I z32?D)DToBe3}pm-n!{w>qc+Kc;99|u(ns(Gy5km3H#sHT<86w2dPF4MD$dvm|A>H4 z3ID1q9EosjZ%i)$-p$<2ih73*{WFl3jOkm1v>+#9<{kD@2B=R@w1 zOmI)zD_0-ED-Z zn2;V+r%3i&bsl)xY=;Qx)PVI)4d|7#&FCAWlY4L;aMZcM7DaqF-*BEpUT71eXOs18 zlT++Nbc%IXykb=rInIz1qCGyGvFIz^Z06o@mJEfci*@>&qzjLCPoYYV+S{2l5c;&p z6uo@+I6#Zh#rk-6dTMW_2tReKt~G|B+uL}O$om%Wpk1OX-UUipURx$m1!oj(k_Sv< zb2XRdKx|mSveV0uBU~C+w*-8@b3A>IWs?jQ;>b`ixLC0HA*-reup(GhA*<5B>t!gN z3hq))X7ow|kutcDJfAog)$=egRN_=Y2^cVepkgT6qcj(owCc=ey)rXQfWNRL?ene+ z^nxh;8I(u%DypKGz=KmLs2$QZ2|+tS#ZDd3l>5pN7+R@BKUAx_(;*Oq^0~ZuS8(+t zBv$pV$61^SR%L-@#Rvq(eNMGK>|V6SSo zoJ3>fv*5SnAKLI}fyBi?-ipMkUf0c6_K~+q5qvIr+qD7@{(!Uc%!?$*XD8C9k-?$g zSoFq+`Jo2n53l{3Grl>^AK!TGi{0XnoAMj4eX-m8adUp-wJ&yuKW@!$y!ORD=#Sg; z8?Sw_yZrHi{Kjiv?4$npaDL;pFZPk)n|u7>6Nhm3@W*}r@QH8k9sYR0A3pKT{lgy* z`NJo^d2smSQGfWvH;)W|Jnj#l_~xyvAg{7f&9j6U+km) z_;7yXwJ&y$KR%M*cW@-CT9(zh0J9NCBS5N{N6JPV)9 zJO5e?OryE%SgO1kXU$)ieY>DX4_Q-A9vr#;F0s*BRqgl>=J&2p^OU7^{O+7GvUEz< z)9;d%%UCJn25$QJ6@KitG04$q*lis#OsmNoa4xwBf)Jm_zd2|;K}G65U1n>%CzVVRJvQEo}L4$5`%aaeoQnaEfk z?j7DGt!k}jUPjqi}+6Vi)M@n$otQ`o7U51bHf(mZ|}1C8`K)TsM4%3g(OM^zC|iXD3mL15KV zH^(IdcU@7~BFuvR0?&`;65To0yPP5_D9*7LY)kZ;Z=2$>qtG*-HCTXPl)7*N-|@9eK%_{s7U==ALhH<1 zcK>n4T<88{sTXf_|5eHTSM}~c+B2eEWgnnKoc?t^Ha(=NvYsN~09S>7P>-5!9&}hH zI!+mhPb9(6!NZ(4B+n>0Nnqp@0J7d0IFBRUV+B7=xFCw0_FQ8ui3OMDWx|(?Jxgc< zbeN~ZKoKS031glxNj#c>pX&WwHYaZ`H*W}AM)U#3$%0&^Hz0#HGQfr-B_wbiN{$^7 zN<-Vv38vyj(z1B+%!}gBmC5R#{J>gZFV1UtZm9B=`f8cLcuo!p_)IvX&u4K+`?Jg; znI-BLFA|6JsMXgXs>R??Yv(RIi_LU(o|k}IRrom~}|dN0d4H=i7o z+sh~O7C+&z2l)USJ?xlbnVDjqHke}P%1d4Bi0b#r!g%UTs$RrwPk(o=K7#yFA;|$?Ex=&6K$d?IYXHAP zJn1<7*#y2P($PfxH0-Sjb`G*ukOAcl(?47zf&&MBgn)kg z8%6sN2av^n7fmtw4^_324%kTfHwnPqmivAco6#@rxo>6km}LxkbA1@+p~TOp@^itx zc(XZ!+LS4g4G5Nhx(aNM5J4mW+*BrxmSo=4A&Ru^J|+8Y_X9gzC=|6Tt;DD~vyMj&f-#9WpDeJv<$f87KaHtB zk$h#wr2Eec#l;5pN@WwerfCEF_l=NBFD_c33Hm2!`qxP?=fo;#n|7lUG`~n_Phe$V zFPEqQNV*uA4h@KQ%^ZZnPloQ!t36l{cp1pZgkMs;kZ4^g%nyeWF+yOnf&Qf&F2Gr9 z926U`LgE4&Y#pTe>jLqr?{_0bLwJ<^!Wk`7~H@N+R$ z8jQs=7B>SR!n~x~8G9tZSJs$U!?2i8v zjVd`M$p_D~jR`9*rIsl>cwC!EPf!$7q&q zeQ2L_qTBuW!~6-15wwmWZv&I|Gp7=gyv(3*0%lA~jnx4bR^-P;Mzj4e!P!4XAfNJZ z1|`Ahl7cPLE-9iIhljSey^H3cM~Wb{-CBu#7d%p?a{U;HjlB(s$#$ri&)PLnbm!*p zpnq;zN&n#Lo_>KST$%h{nbMGk%vzLbKMG%@uW8@JJ~NU@)V&yNq->ONm|AswuuS2> zLGnVZWJra1L;K6+fXTUYB^iJ8!^sT_N!P?jwYn0aJ#Sg}?g_G~^6;l8AdWS40WjSe z*+32WiB1Lnj)J_<&B*fnPRgm;s>E8D1FJc{g+V zo0g(UbzANhO+Er$QgM6N-llKjGgs)+(o1WyaIcOwkL_(ew=Giu4WkV{vyH?DPjK=G zgzaEHkO#BqFx|`@PB5Yn()h!aJ9mdaojZK`o%Rn%47v_LZ799UT_-&`bv=Wt16DF| z8g`s_!KUU!vf-jj`6wla!>g438iRU`ztfW6_)R(i4;EYex@YlmAhr3*+V&%>Q686O zHEBU zmG+^?!v^opg%h`RSe8*(#ty97ht+l>vAbv{=qlku@$^0W` zIJ1n7qCVQU1YOG>dZys*EDOjZciB;jcLoA$($MhN|N4bn0WNxQZSMe#2_vvdV_qXKhTfu zC$uVEorCe%-h=L-eOx9ngm$Bz#;k!!YVO{>oV$iA0_JgwCzZBL3tsN6a8%OP!Wh{j z&O_`6?%bR7ht_MHu$Fe7+*2Nj**=g;;@|MDed0YoFHdRj&yP{1d@L#hM3jZkC&)JGdtB@MA2W{ArPSjn$~;6p*eEvE;hynJA$IRajFE`xnE{tw@nARZ>d z1N;bh7LzkoHA=ar%$pc!Lz+;ac<7{3or)V9Dknd7Q$fddtVW_EY5NVhjS2T?DS=M( zh~I-X9d*2MSBXQX+MLqNN}f-0)UJE(G7bOVfJ#9m2k_h@>1BWY|Z5-oawnU6W*}HM)BlI&<_c`6#rX z`&C;YwD%np94nk84gQv;!N-mpuVI|gnjXPqcQrJc&XnZ*CL7Eu>?ITdas%ISbZ-j^`@|sC0Ak557E=+^| z56}g#D&MqRcdwZo5P#T-t>AaDd+lT+-898D?CpkI_99(lcZRiC}Z#gEMa9*N@gXQ@sm70 zHfg?QaeIBhfH{s4o|@dXS+0v^`UvWUk3h_-cA|`lgi(9An4KFI6{ODc99&^E9^dI; zaq}>qONx?2IW7gUIS6^wZt!hO=i2649{n0^QH-CTE_TVR!vuZf7TIB(JAve4Ar98; z4Qdbj6^62TPqr5u-;u>w;ite3ixm{Gsu8K1*HU5Zz8s66+t|H@1g_STTh`jU+4&gH z$V~O*5$+dno(O+`jr1wg$u;Psjie5A7=yk>bH|t-A z*av-Gh2hw1;oCzufcz}|T*lJW&!k^<{X_%07Ct0OmrV)nC6wON&yoGC_v@!FCcq8E z9FjSXu9k&33jIMmI{}7*Y#je=ti{6?Tyrbofnw~M3-!%F0oA9B>5)@iaB_xhJnb$H z>eB*DG41ig6tR2^`CWOcky_;9Ft^ofqhvZh5M~+28Lh@~MwXA`&h++rn449eb(kC9 z)YJ}oupN0S!!c)bV#sV8*utMib`7cZRTO#i71#3jTRo$VE8Scin>NbzaJ3KArt>S- zz0vly*T!%!n_Nn#9Qb8ejz;uu{sH9V@%AHJrY@z;P(fi-QpYhT0&V(eco>6a5}2J; z)ediwFo9B-Iib#T=B;}G&&ry&jWG2fD%{5$GuGe5d4BQC)68BUNiwQ%$TcY>osdSD zdbtkRh4VqF$~antqv77zMhOYT6k?2vDKaU z&G~b7q}^dE;~+V9_$0<7_|FfUZC3M!Gt6fF7CGr-!8ed4{D59id)*ioHQ*FXPC`Pl z3h9DRBbE}0`tZ&az(d=}<={P#1f{VKVi74RzvO)nj>hwu>Xdq5MkJO9C z@GVF0PV5FNihTn}33r{1-AkzIA)~mzNQglZ?^k~n4vvqjc^DYPg5mNKNP4_#(=XfI zu1hpb9mFgUh|LPQ1D*9UtAEZ`yAMXOXc17ymmzyNosrz>IG6EIoXa?B4&6CF5ISQl zwbim9e>_%<#YV$3$;JA?2l_Iot!SxDP}yc9gWTZ6VGWa9+!Iy6Y!65=LTTgze^MG# zzVnH$YNc7TRE{Smo}U3 zt1s$aek}*PskoBP7#q@o#mX^`E=^qp62Q|I$DEc#hhVlXO|&<6M~2qW4YhLU*LCgT z|1A_FeH>W~j74ilql(0la;`fCJ|HpD!1dbcaJzUPzmpuHf+gv|sojCrt9+|?@XNDK zm*t~@c%Z|{<>2~m#%M2{bR8>QS3|n0GOQ-)s=@$bfr|!rL9l>N-Bdd;F5caqtd-sW3O!AtQ~?jGu0VFce7o97+QwrFY71oAPi0Pr(qeDD5r{ijJKf!;S^RwCUz(Jp)O6iR~SzJIY)1y zDCjC*^G*Zk22Wk65>-Wet5Vd?>$Wy!$55KM$VFfSO7Ja!ZGjF;BHD}OFq7i#@cR-p zA%8?c(E;cq9e{e*DU`Hu8lH8Q+%5lR;559~kK-)4HHf@UU2=yWJ9Q+XK)pbLrk=1i z93-}{vmybtA-`#@Ea=jzTOc1r}upzp8nqQ z(@&Krg2( zkh}`al%Or7zcj7hN!){Tv>CC5`R_^UPMC)#qiV$CUDY~>eLj->>KzbR2P>yA>*0&T zqdC4_Yic|AhYc(r#?E=uGLa1~!9+G>BK3ZUN7pi0h<`g-Qyx^TxU|Y7E;knZ78Vua zGQR2bz&O+`#3i<2h|4RuVtH~TJF0@9Vd*ZXuO>Blf||_gL=|z-f4-62B^3&rguk&z z|HH}}>VN26EO1kTaEI$hl}LrdLz`CHbu8N&e&jrb1z&fvyHa-7y|X9!hqDJ`u#H*Mo+jf{k8L zOn1OeWt>?=p==9>P1FiqvMncQ1;A0iuLswnEr#w$qS)+U!$!8j+v5+f54NX2T)#Db z?Y5_H{^$+tE(69~b`&Tj8Gwf(Iby4JqIA9G?r+oeK|}2m_k*AsUVPGA!JlWC+8I;p zadV`kiw?nIVE+yp7M)@rku<%<~4rck|V4wX`E#8z=hQ$ z}GcZXbrh`oD_*R#xNIKP%e+tLqB8JCMXNtK0Y69bo4m4sK4DN*q{vJKYSk zTu^QuXk3%9DUCbWwIoe2hdW5J8m1dk>ONAy?(2wBbq(|KVYn)N!Xv}Kl`D?I0#{7x zr(@8k%X*>oJhY9L(lI>}u7ln(e{zfbNidLRH*`8~${Tgy7W|eU`SXa9bEExO{}W?w zqkZA-Y%@_8zB5m1l)rZX<+SsY#mTRn{s01-5X{NqYv>Ah1*E+Bp_9*)@1p5u`|A_8 z;8XD5PPx*f-2G6q^>u+Gaq1hsXh1~$8Lf~aoJc>Mizquvz!s^R$x)KLFXFO5u7=}0 zM}m8ZSGdLXyYW;sTQ~nwAz=%YZ`2%F+^rc<7j;wO}$ zl>67;QgoOrs>plSgPMq)Y^y8}N^WHPCv|>nb0a46ji@@PT`}>0f`oJr3*4h< zD^4bMIF4(XLdJ~C`DKCFrUOpXCa1t1o7k$zF@Om(2nDgaQF@dh}jc zl3PbCIt&1ZM8M+WOuYbHX2rZoxI!2Ka|+76eVlarONtXThJ^e($z6w+>816nh(uPf z5x(+e`r`e_a$TvVrC&j5)CWMF84A@`M>_Dz7*bn=R4ZJq9A5$6MJh)$aALl#!ihbZ z0{8qn(N_gsBQ8?2<@7dBQ&@Tj1U@_7+K6YaRVmuf1V4gRhaTzHd_0}LXPuw9f9-EB zia42Fw^zj5#03Q)dseg;$x7J9Ol}fc7foad6u}B{ErM?_y^RjU{q}L}@u`uk>+UI7 z2MnNAt_VcUg8`g|V4~2{q%2qtP(Gn*k>@Vv#q;8qW+SXD&u}G5Mpvm==KwQs6#RVQW801CydZa-xsxQoP$uzd$5qRsYKEJ0Yt5*%RJ0lsfk zz$5ag>k&(qsibl?pdEc8hD9!}3pPo_H3f-8TsdHLlu35}gDk?Ne%@bV+AW578yqAy zWEzYB-I0EMdeE=F+tII}QTne15M4OEzJR6!TW$a9z5Ss0sbor2qq{YzW_40KC&4Lk zLMBd$ZPLlbdMFpSucrR(lQ$r@LdQV1As!RY5Air^m&D^}z(CRRSW~x~c-lw>dS-9v z2jVffb%lsoNJy9-TG!V=sHQ6*AvuO-AtCV_bW`L&gI1Op?g~s6{Q+P82*nnPodU8L z`;_5wBhQwWRq)(WdWsUqpxP&I0b+lj2Pk-V3B9|3e`G!nT1?EO)jVu7%7|R*XVV`= zZ$n`JKY2He1=0S80V)Pn+6OnB9!xpgSPkkN;*$ik)F33sLQ364!I0!TIJK=>fThGI$3@J(pE-k}QQ$6@3huBEkuzRd)?NPZF_k;0Tvve zcaL328hJEKs~Hv6I0Hcx1extF#{bn2Io$<)~axw!u9S_?dk&2Llx(*L2W!~y53I7w{4HS#;2JhrNu~np5 z`@&2V#y#>y+95J8TUgp5@>1Ofc5B{uw%XHKZ1<(klD$!fny!ab@AYKz-f?w^P?*A? z`xp9w^jNmr;wYGAS{A_2*NAmlzEwN5B(2#whoPhRfKyyX+EJ?XEBMd77}wD?p3)QN zdO+fuY@dljAn-n}Nm&g-Y<5U?2>iBuHaQ{Hc!!VF#)>CcPOiJUoBoDf^e zo~DnuTkyTHBw>auf?Lfz3Gm{mcN_7)nwE7pt3XRE^|m{A9l)nxmCgEgp-14@Pf#z|={=U$EsBFO}9cV(?hAh6fOIYYr$* zR89cS8Da{_u;=^sw*HrXC@U-}b@0^ef~eO<2^(4c1zp`$bG~ll187FsVdwt4^am{S zNJ?sb`g^)I(g-cs7+4Wns^K(ZLNce>8bdh`8$7mv#7clTD2;DGGy#yo8l7hV#KkoS ztUD29oR#b!g{$yPy-4{~X_AFCZps*tgTwbONttJbvxx1(B9QC5`P#rmAHI2IuURB| z=5^QORKq|`-ZXxufCU92_SE^(^hp`A80V11XyHPm=)i?Gp)$6kqJ*<$VC)B=VLJ>nUsziWP(?1hq+GGVpDE`vXLjM z@-{%SXgE1#&@0>=?U)}&{69bl#Ay04@#VL1yWGE0ZspZpYhm+4+?#VcqZEtnJcHUf zOI=Hx`(h3qnW(v|2^=JGwk2H30DS^I=4XD< zMk&xQKl7|D08cqEJwJnSaWa$7h`i@#cq>e`jv6s!FPpC(O(K(LVn5>83mSEX|M{$@lc2jIY{KJK#9L zec-nQJYXg8!ln9O6Y$DCz!Pd$39vWDHlzChBrQ4vt=gwV-JjE=8Qc*^O)y&GBO!|? ze>AQRC!gTWq|AWSyfD|eJw5WkVcABoj&2LJLvSRe>ul4@cpeyg0n^E^(R^F|Y_r)m zU%+~ppv_qUH$x=LZK~wS$FI6?UXE@-`_Yxzg{&Exy`b5GAWxIW2sVQGh>`Zg@zczFyt+W@y zZ6?j(56$&{Q)<5Qp|{VEm=S`caO1XdbL38#Q+0HX*X;ZT&z!Zwh8s3zL=)zTF$2i9 zEjeeoZauW*h|d&C1-iqmXpXiQqf%J&oeZps0jf+OrBFA{XC`eDlMK-{!8w1v>e9h0 z*fALFZ7!l4#nJgi0qS}6E%OauuXnHG<@#Cfe7I#ypi%N?3b@Cpna+x8hw5ndo83$~ zvCBy6IjrtVwFtkXlre8qS27E(JLSSN@Sr)M z!m{eDT)-@jX!HE$!f%-uP4z8Jfm~|uHHod!e-Vi^BcWt_zxH%-C6^a}%ev;}x10ixrlQ!Cu!ooiXi>=Uc4|}xVT~9RenlwpE2=X_ zba%9qGG^s${2FcDJt$Pc9Rh-47Ys%D>A7^j=p`g`w6}l2&*SG zGS_vL70osSETwUOmc0C&FC+T^`ouZcxQLg6Wwz|2F?)UUNaeqnJmb2HSORM9^N437 zz5`2BMV})TtRa~~m65vXd()y(Zp~G1glw&CYt0BJg6M-AXCcdVd6oMWoSTMQdyaJkhy5f z(Zm4{;+s%~;+uVEXrse4ud|`DJ?QN5GTXVi+ws(7o|ci7B5?; z=2qygy4#%4C^cf|Y34Mg#@P||;hd);_wH;{>ws=Up;P~Z0JY%xtwUZ*_ugBxUiYc0 z;_wSsC1-Dps@rT;Ncb-R11tp7d`%Kp^=H)jpqP$;7YZb7BYzO4f&4ppsoD~jxB%kV z2+sKG@HE(`$Re>cfh>?9v30yvfXjJLTpn=o^JCpl!wM^Us|?9EF~ehxftB!E@hCNy z{8ng5U08?Hzay*zFm;)})eh1eMvY{6f;tLNDkY^{5l)7oW#Cfl1ZV)e_{p1AkA0 zNPPq-;4sthMlGsT8o(x>Vc&ni5;H+8Ezk@nr3w6EZa5381^B}h8-icK4ER$%Qve<4 zKL^kurv&tsWuQBSxho)72h1?%Bwcd~An^W01jI9ZKe<}1_a`RwMhP3qCT#6tnjvbA z2JD(_i40X#o^e=*PKtEhO+x;l0|*XRvO)XF@H29lV7hdjulx@;z&iK`^kBk4K`1)B zSdX*`NLG4CTmm3dn=}zq8?}uiYjvW+01#H1$(?gH)1?(TUJQOg#I_2U1`njdeY&6c z&Y+n*R*K>!0I8BkqKm~{3ARMf`NDi#MkU>Gk;gK@%Z)-3yzDqtxF|8<(Ix;RW8lKp zEY2Kw(X%N&LYT0taeRw{7n>GD#hcWBAFjk?q+<1;JZQqkSq^eG0Blta*|P9yp_`1r zDn7$=9ka1+08ND_oESkQ5VpqTOqOdGy(D(Z#q?%A)GLs9X=LrFMlh82v5rgHv|WM^ z33%;L*jiYnQEd?E^RCR{N;mz<+GcSoaN{#Mq)ckwW+_z&DA7vD5SLL_-KVkQY7bm}t6ozZUP~ z4zJ9Uf#DJ6*#2)<#^uug4jwF5%eBR$`oas!QCS|Y50^E6s*($D`LpP*PJV|t%mQhA zZN#%h_Z8Lx|3!muF5Nm79}VI1!p&n#C5}Xi?_xgMGR3%#ZL)wJWVmX}HIzx>{s9vA z{LRDq%e3|q*ulxIZ5GsSkr0kRVuPZ+Z#^nAqG(l$!Y+Ti;#(s$CbPx2CB)y=?m+~; zs#5%c^_$YJDNDB27DK3$mZpWpTyfG4Ky*A`-i2q995Tk`-DpuewkD zU`c6C{cv$9fvxpnU<-31$PN}0IzaH6KJ_Cu21LF9MW`|3F1dlrsUNJ$0i@+1^<$h; zKgQUr20~RfnvH}}WrtBV+oyg6%UaQqMyv10a~y?N7aLfwC7Q907%m zoE_>2)_xO>>R1OOf_3P2rn7l&QOE*Aewj?BdQ@NFU^9C6QSpoRM#W=e)69A<-MVnd zclf#af<+x@&=)MfzF_mh!D}YO^w5s#FhEtXoSuCd7GKiUcNLo4Q8# ztUZE(qxnQ#u;U}DmawWYViEyBc19MEZkbYbTUsEgmSAMGN4-d5a5v{CnDb$VHA)&! z2{@cAVrfBCr}-Jxotu~;yBogx+K8+(t{~}+=SR|>+YL!?EJ)fUl>teQ79`!N{j4BN zB)zeRq?NB=H?#hJ4R8$WMsYj3q_}ui_9H)c+6&Om6Zt%85^c)nBS~SU{nug=b0H>i)&hV9WlHFlW(>AiGwEY=@QjRv+PAs~?DGVR1rlMY+XF&rY_RI{0IQjvXRxkgoL%U}SaY z^Q0FYlN6`6%#gUwQx9qI(Adq`YdG~BOwQr))dgvQq`@mt#WH4g!SOnA4s3%kUcyFR z4G;`SBB3Y13-OhqXe29Q|8HJg^K6k)V`XngI+Esp1?c};IZABF5YHw z&9DaVww9U2*5<*pfn_S@e!xn(S!wza=5`~v(e|)`jhvqq#Yq2Rg&wRSG$E$%mxxNM zI>h#J9nt?*nCn2jZxnAKqMnsDS;mLlsS?TOcK_9QYf9bz>R5ds&Vh4u-aP#dBz7q} zqeE%{912j|?+?-~QUjDpSia6$hhd9>TSVa(Js;qf>jk~#P%WCLNCWP?ZSl^dK33yY^N(UuvAJwxPLWR7gL#;9*SIXRFg+ zM7l)}jEV~?SQ1zUq0tw{FJMBqOz$!{=J}-+N76*KwQewbFqt6-7ZW;|P3Eq+Gw(-b zW)f=S*P?4|@oYC1YX=Kmur=5x*f`M5FQu_T!XumoM>(=JfnkCfh;p~6h2eG1>eO-F_rt!R_{Zn4N}U2wa_F_Bm2ApYbJatE zR7dKX(-mT*p8U{}&bn;!!IsUy5tg{Hr^``urw!>3qmv?A-q+8MEwgHRShb$@UDXqc$+i#%4i7j3e{nHOFxf{ayFgW-mzZgFkExKLZoYv>dfV zj>>jnIL=AjZvRMrjY>yt6pUp7dpdTO;6g_+-Od!;kEJ~R!56A zFTr&xy{zL-#Y_ox`{lrh{ST9$Ux$@)!4SrBjd@U;XCMqE-9?I*J(0On^?7`Z6v4J`o% z$P_M|%pC(Vu`_e2WF*42VEa*nmV8qFJI8Yo;L+ON)RNzH5l4Wy(o{lIfe(toCmA7mZ0&uvvBeRo7 z2SaBO(83cmC2X)TbQv8zC*7e#yQIUTz3qZT5VQ$zh zDC=Bk7cs{H+SLk{g#)Qxb|BSSn}K$*x^OSrk?YZ+-5v+h^F_OPSTC`q4%ECKpXz|O zhflQ>N6G>B;8jsg_-`I_!hpFmu4+I1F_@IlAhkQsks6qvqZLR5|K*|g!a#ILN9=4+ znDNQa3r0}PvqLCI2?)XZ&Vo>=M12nMp}!WDane^ZuI*2vln_q~-6!ROCpu6{J9n9> zNSk|g)i8QSLMC}-Lj%x4mdMq)i7Egb zG2FELDtP%IhO1Y0DTZs#4MY`3QKiUjERA`7ynO9!UapW@^2%Hg!+L+O?518>7-Hv@MQ;G15yrhU7E!f#9bORglAI+l zke#uvN=c3{1gkumhGX5rda^$RrXttV*WdvEk~_B!XDY_pxX2+L$XVfn(Py3!x^L9G z84_pJmZ!1VGxM z3%N?m0;{9g{7mbLm6$yeB&?wjdrD6cXs)6c=7vHzGtuE?)?cC0q}$! zdh-*PhVbq2G@ihrSQtY4CqPXsf0|h9haT%f81Yq#$4iPg#K6Iw=sYq1-WALxY1hTs*2wKEPty62z+2(0? zA_BG28=jgUs8{FR$z3muM38nV8jvvQJr>C-B1?BO$z`o1T9-niJ<)4uKZB;(HIH4p zWIq#2R^}w*E>c3e6Z(2fC-n)M4+l(G&r<#_<4TPu#dJV*iF&g28w67mE&xSjK@Qg+ z9edG$?HGnhKfDaaLa(4I5N{t)oJr2Rgi+EWy%Mn=Dd5zT->$o(J8)s4VYT=znWAF) z<7xl0vUOmDnXm6#8K%hFw<7)EW(#<(z=8`Fv z9a2te&9p9KS8n8ww{H?FTmq)TYjKVLIj`ykB6gL=cV|01`xCy3XXi z^>U78mqwU+ii{{y$Kp%Ua*}i?>J#>VKrTtp*H`3W4nBbntL8%iHE_roOwToHlUq#Qu@bomoiQnMOe@txXOd%^x{w zb`+2j)mhqITo*nlnjuxPQNY$HUr)#RFr#VWc3CS55+6z8!?0(leza62kAsb_p>4{o zeVEi}zQ9Y_={%E9t&o2hsk3kewYNbkQkt4rv>Tjhd1_cZ7xVG+i>dj)V`|!}WiCU9 zKdM=t+KwRo@(c}ga0fHA9)_FqMdl$=E2%;I7;YQR(FXc|(s;vg3tpDy=-CXnoO~Ow zNrqc2tr^bI#@;zX20BNmzIl!|nn^g}@)$!qa|@*ELvIQO7u!7akZ%EBGHfbWcXjg` z3~;c_Te6CXR++%hdp6lnTqYJ=?bJJduBb>8GBmb3$4Z{rhVG{!|V)0_d!XZ#OXJriwK@%FA`%32qv>RAU+-8w4pSEo=>p17juc4wU zvSHxt=L-CTi&A@JA-jG!QU+DVJgr zBH`A1_#^7=l-??^rr*~EE3bg@@|jz`vm{wQkql%y0%~-bTgjKoqtIb;kpi1``3r?k z&h^UP*RT~!LB4=|FymZ@sh(g%u50SocE{)!ze7Gpw6i=NM*v@;^<-_#XClc zWRL|*{&0XB3dQOklEH#&)*^4bN-NMInMfDUBolerX!t4^^VpzPD%rRK??LCO&LlHF z2g$_tku4oS4qJ)u5RyTK9o489p1 z4n_z!I0AQ1@!>M!!=Z|&&4`KRa{fdY%Vm$_E|!}H6~vb}ApZyhPrJH@u9)*6-LIU5 zp35i@`(ZplRqc5!{hE9uLC6%B>$bz7(Ky&98#*&MJoIpmoy+h47c~4S6I94nf_o!h z_Sw1IBR^0vspk9FCl6NL77(+dZyEa57Xu3@gNMrNkt*)O5qx&BZN}M~V5lrE4677S zsi*%gL|N=>5&a4uWAuXjd~Dvx*_Y+yrA><#;`}MM**I&bj_yI~!+GSFT*KDRu@^^L zwM>t@GS9uehu-=U$i?wVc?i3#lWXWNp!(C0{%HULk8bDPI&LLf8esASmWpW!8DQ=e zU#x9AKEj+*>C(0xS9+LAbf^G7_U&=CUyn=tAE~<K+c!(e5bP-^9Ut zl!I`J$xb@;4E9vudmQcn`v{$ilXE>;X_Hqs|I5J+u($Ffc7Xkd=Ig~)rL?eulx(2n zBs|&`*Cv)BH`jF0{P8c?S-3h-(>0Sh8-TTFhpPG`xYZ!9rSJtG)2 zOdL0{O$1cHO3`P`|9~P8;UEg;nac)Uo(3x+Z%-{~jlDyVD68#Ll;*UBRbL?&jJrAo zyXiX3*TebRT#J&~`kifer;|BqHGoJ`TcnE16iL)E@!S0Sd^Ubzgl>YA(FK*MSG zt#lme0e~?Mzg4zJ{z!Dbe+UqRcarBsamL4%5HdR^8&Q#x%FRlscBnJ&yIpb|^*sC` zY^;IsocFmp@ZiT@2$9`>3PKaCJxJI`x9?w$TzQLBBD z;z6kYxNi{M-SOFA=tW{t*I?Z@Sf>W-_SPRs4c4haVU!y5E;Y!V4XQW6e%u)PAEef% z-S7gj7#_Hh+#F;kpi40K08nd+PxZ($ zx*~m-xTFk<9@818i)jzk&qb&@`Z@Q6JBsL>PEG*1%*fMTp|y0#Ioln6?&Gm6tESmV z{=g{*JJmN=;MY!F>H0vcANlrsqWY1WHpYSy`bqe1`m_gjLm#Qffiq=$$Fr4g@ABN! zm$gsc2$%M;mjA@+I=57cWdXw&@Z^P$G?!) zzGn?PAlMq{HlC9ee7Q(6Ra{-}t`{&OZf-zUY>e2z2rWKsV6>9f@y9+!>?LB!w2r^Nq=rDAw7V} zV;&+uJuOV?&wA)u$vuo6m@X+o^<#&D?gS>hdja9_uOZ`E$*Np~7vP!<<=tO;zw{BX zU%moGxfcr`IlWb`h(E+l4mYsjgIh_!;c!R?HZeII*py<7d8uhqL_NA`C8P<0ARpZX z*>+A#j&IW26Hk!;aNgvn;0Pz~@)1tlav>uL&KBT}?gIn%=;4ay zYinS>oH~rD+~l5`q74RjAT7M(9NefUcP!QByw=n}&-Qscd0nsfhBSoM!r4X5Nlf5I zNhgYe67HcEf-;?Ebr=aI?Il6?1+$Ucf8q;ZT3;%AVE&4<>CWT-xl1-~AI!IIxu~H0 zyH(Ma=tb{dpWIWW9T-omVk-C2ztFbk$ky0&r)ryPn6trmI9>EwIl%=pQ!z8l6+5zU z9@q)i_cQ$mM4k;cd#g{m!$HN=Lq$Bll0T#CV`~?lo<<`t+IM)WArgxHGCfroCB@o! z*Yf4=^r3O`@|>%|SN=`3r}04-+K1@T^k>zI_xyA#BviSkm>l1$(EymFSj2{opXk+; zXGZ15!b=K9U7XAr?&?<;xTH?1P@axG=>x4A-cS|T3i6_6811^^g(#2hMuTp*|! z^VHVYNq0az8$L-;s6xz&dWSb*Ge+J5xX%SB0BqL!XKA&}zh}T^Uau zTv!W=P8=*nwxC7KM|P&5z{+(qVU~J`ZrJOc7sMOTT_{>VlaO(L5TO=KJZ#G`?A)y^^ zGN@se!dXfQ0H<}d^A)7Oae7|k1MEO1Fp>FIVMD=chX6EO$;7Z9DYb_w^}iCX?Db-L zh5p&VH>RIRyAZ_*;7TGnV3>)ZlLByDM!602xv^av6N6!fc`la$VDG zu;1vlFaTWXI7`yPUawGW6Q@6)KY5V;9h% z?5I@2k=NQsI{l|^w@}Z80fVs)cb5z2WsN;K4Zs*j0AL(|IBVki-#L9k~}7 ztn{G=D~~c*?KMN96ETp8t~q14bePC)ReMsw-vHXxxnRKR|KsjGz@sX<|M9au$p#2T zslrV}ijYEwP?wHWA#^m^B%17sz5f}o;w1kZB2~ z7olNd4ag6l2_uy{>0%-CBp}U$;3|dfMN}m8bf7&igc;s=qGsr3MN}VZ(KloA#+E+Z zOxl)i5zilBGYZKKiBh(iEK<$Je@b9kn;sN3uq?QsAoVJ@hu))!!gwg>_p9yvN+FT? zy#RZZqB-zd*iHjk7!j>a<<{^%Zv%wyJpoHV8%yF=8%7<}jKP6|;Jg-bYDranDdy=M z>0J_{G)`=;st>^VOSpwVn1CB8oRny)&rhJp%${)e5rXh=3*rx6a7my9>Wcz{)j<&d zj5!f>-7f zS_01-dyFw4HY0hB=1?9O6L>F9J*I26Ln~CyWt)ccb<3e%ma%yJ$b>%es6pw3rK~8> zL9j!?e^`81ziF%5wN!SB#iufC3`uZLcE(A&6KE!fbfF0?twsgF{fl>geuXEs=5nM7 zZu0}Z9O^BC*&1U zBLr%SCj~jVYTiYM$J2NeQ(-QsBU$iYK1IX5xuwus+_M zMf9gh%wkVJTV%d-mNS@tFkPc{a$Y1w0P2fr0jBb_fGhK~fTA%%nY^Z36Mv{#PJ*d9 zEOJ;twhLmsSbzfBwNZ!-?`(_XC;3@sxv+Ry$%P|Ew$Pxn`l&NP!hqL&3UnCp!9$=J zM4j8Ga{>l}6Z=7<(lp!?M?pGBjhT0()=+jf7=grKB)funP><3oLEs zRnRp7eiI-446Xr#1K))3ORS=D@HShAZCFpzLv9O#;Rk0K@cM@MEJZ5L3gXVv3!fmW zhbW2s;6x&mv6biqZ}7)T5t2X<%7NptWdw4OREyCq$VFnC4M*F8aIl0UWN}ep5JU(x z5NMmkGI7BE04Gw`erEG~LaY}Nra5nPE4my#>tmjFN?Hz=H(L*+_%Qn?b&3}&tbi!5^`F3A)k3jK!^ z!kkC#F3$iE)ysPDtg;@=F}vH)Q50kop2~M-v(h9W8H#yCbHYDSz{Ik~3Mwyb#{j-K z2uQ>c8X@p=XBfn5@|jO84RyB1EiYiU!OXq0eJa;%+pswUEu%@Vc!D(l%RAGG2?kh5 zQ@C+4Iqhp@pZq2c#s@iHnB$zBLb}0{^Ti3Q1kA3;W03O3|9ob1&#N$Gf=0Ywgt0;%E!qFPpMdnAbbESpyAa;Xdq^f4B`@gNR#WoF5ec^Jg)0YE@%K6>zFAeE`4TGrn;_?}PaL z=)GqmN3XD5rp&wz1d9xZ)-Qghpd5uoj>WGooAwm4uuDI`nlKgkgd_&}{vj| zOwoke8)QMJa6~w^JWJ4JK!^6P46VRSi&ppqdu~}~_0PmDBA6R>06>>SqtNtaqc|~K zZPX}0#Qzsi3pyzJ!Dl`TWJO7c6O63*2B`Ydzh$9*fq?pFjADDVbqvmO90fuO^CR4x zY)+D^3)Ujocgl)0Urq8DedZAXws8E!#MmknFIB+;>u2MO7@_z?5&T5#1CkrRA-C`_ zVcQ)T8YuGUr2j|Ji(o;#f$s-PFH~n>;SnE?=EIrc_ra6u_ra6u_ra6u_d!mm!l63F zduBOK^@4okUkQW~5LC_vvjC1h6#6A53O+-07~KIi5y$rEkVPdbVHP|I<_fVT2w*mZ ze1}LoCRa)rSc^?{A)ym6ld|1TQZwlo%D*K( zUC}s&DsOZ_~9d3|+ve9vENNO)JM$OTrijbsl1~71&yg@_;Ddrp^ zAadZdK;EGu$#ymrkun*21AdDt*^nVVVXbu`SIweL1QE59J!j60sYO7vFlPZKp@`%b zkOr++v~Gu?78T%uIlVxa0Z%b`xrbwm;*a{~@|*D>xYu|idQBK~uxN!p6l4_cGB!-| zxv_$aa4zd5ozx$+KnxbdgHe*r_`EXU-r%(+;{N3QUklF@2AY2op2xx(!Z*ADeR%^9 zvCxn~etio%K1RWDHrAeUj9MUwjM~t%1m+X4B$O_nfF)EUG)S%m1nx4(Jf8e?Wi{Xg zNWmrs>-YY!WJZk=0-*oD0_VT7*Ul) zEE(1%$qEYzyKtn*n6-QBEsHmrLbbQUdJiU}=-PvR8^srNz#QQ(w~3Ds!F_@wxNRgv zWlS2!9+>zyc8#DYEa9+Du(Mp!db|YD2Hg=}PfWj;XyZvG+IUilHl9?XjhsxhIld5# zmc#$R86?s6sU(!MfoOyBG6^%NMnMyNZRif4bN38N=FxC;W#mC%_oWL*&o5go-`VwtIYf7Wf(9B!lg^ zB76}&kbeMml>SG_LiGTd&616Qn6q8NhcK`|;3$2L1-z8ud?XgLfD@a#!eH8D z1)eR0*gDI@6V5ZN*=*Z`G50J3(HU{?4@Z$P%@&dk6Fa0N4hLcGtsbM|H#87oOaX)r zA-eFaNVw=2FSIZYQ39VcLncI(npJ3^S1fqv*W>>!AVRs*Ui9MKPMDjA^hUrBn1EF# zIHrK%!=VN?;@#;89zT#HdPQjg5+T;{0@0yiSVO&w15fJWz>~T-@T4vdzNj9T9<7;>?hojahJ#ix(E;W@rc^2Tg?9q6j|vA)?jLEJv$hz_!@-0202! z=~2ifjc@FYgnESVSDV)G3SeaoR`1&hXD$_V9PDTudcp2 zy24%OBR28K_Hb>Wxd%N{1pp6vmV9n*l0!ZHw?j=4!{VXJL07?(9CSrI$w9N_ye;p3 z1EOIan(+xibX0UtnE&&_UhOJ}8#BcBV*xxI;<8EZhHR3%(N^r+0*=n#26cU}h~xp> z!AEhD27jqgEJ9l~q&`$%vNEQ=M6>K}5cclU#DqP+m@$7FzowmlUUBwE7dP{`WSHNF z6Nn?cz1dbR6*3SJRNj;_&}PcEMggToV}PumX;#p91U)cD$m2p-q$2Bnomc#~fcE7- zuuv#H95GRd^&be=xM2qHc|}OWf|LT?LXHN6vQ5$wPQl>BxD~=e=fjz?5JUAg&>T*p zcNC@$26Rd^Xj2W%D!?RJ7Nn33ld7TF?NV7Q#{A*@&&=OzVMf{VF-Dgn1 zc?Du=6Y4TYaJ19`-s-l)?Vw1n^7L~MKHbG@PW8RQw=xc`O|(fGv}DP7>nyP+DrH^3f@ z{k7PyEw)l)zc#x;dB3(W*}`(mb`~?_E_5Rw$x?*HcqL2W@609k;ZqWtu&W8WkUd%Y zh42W6=>P?@$>KS*O%4l3WQzgb(oo3dU?$va_zuq#+{2hj?H@3KrKLRaf;tnS_i!mA z;tvK~d`?=HP=W;m;jk);2|2uvsJfY8*70_l6 z5ubD+@EZ~}Lj{0>2L-lV7z**JO<|&C5bAhxZ2Q+h&|%32GvuqY`>Ft#M~1jI1(-K= z3Q&c23SdE%&GBO6_Js?&S|e9E$`RDs>H*4zh8l3`LuQTehu?8W<>piy7 zCn1bN5I|;_WQ=W~jNudrEJSgtF|-gy4f#>I2k=@lT(LIs8(QSUGSDI&M zzQevQolOyn1)4!y-iDsY#>&S#RAxJ4LhmZDEm3C+wVgi$D80{6GT6pz{X%xM!j@y! zh=CP8eTI@xd|n1rNx>mlT7z|nwHiR4?G8ABM*fFw`n>Y-Be)nV!{{KKlpI)qA=t*B z0vJF65cp36p~XhUrCM0;rczqz1xhOQ?!$3SuGjQ1*aLkc9{-7PuJK z#LDDH5f?$W4F`h<*iO7xtsUNfvK-H*cKjV!vMst}9bo&`%D-PcgU2^ZsV@-qx9C<- zYyAH98~DAj`ZJ;iFC0a{gV3wUHhmX-VAXBk^KHM*w(0}i_ZmXR1Y*qsAh!2z1P#C$ z9a_hDao!r|X(zOB+bxLVwkozg@8b3*PJG^h`+B`v*lNY#8KfbIK03i0eQi2vW?;H+ zwpGU5s1X1-Ac}Q-lB5y`2l2#66&QE*AF~sPo;a{Vr~Va4GsSx*oE%9k5A$HcDd6QL zlT0B%Ao(ydKG1^U!30vwBHuu91ewAZSkc-#(OwG-Izt-S)*=P zEUN0sv<<|hvce#i#0%>bUkyMJvB?956peTxFa;6Oq*;<|m^|Jq#dHd?2s37laOthD z>AhkPZ_eb&!EnVAhDS<9-#}RiVfl+!KFc~BMyndqf!e|^fxB?I39Oe+LFTA@=kgc8wAX2#w5r7*j=Tw10HgOz37t*TWGXq4P3*u0L+*K5^i4%u>OR!S{%6m49 zsNxs`LCo-z>Xg_c4nPu08o=YlU;u{)DZCXqJBGxzRTk=D)U_!r7C&_7?*)V=vqqzr z8*zERuiS_$_WM>r$JqL;?fk{c;*GfM!>B>PN~EzDXr)yjgtJA}PY1FotUfP7R=7dL zqKQ8!Ge+M~7mQ!oKn6R#{Dv5Zl%aLhhWHs_mj?;Zg%;8?;xb`Jg2#><3`L<90|c;8 z>4RkH9Q!*0#Fhr|NYF%h1|eRFC-GrOa5#iYbA8a)SWvTZEVWfIWR$kTGsqUVpaG$U z_zhEcc*AVhHmlSfxX6B6WU(lPT8Ej-qBQD&`2l4iX`v1a%v>V6%-cn-iF=)^tAW@z zlDn(Hva8H{yj^A0(x1o zkUflS&qbIMpXS&c{0b;DQ7JN>A2CQy$!ERKvq3)N8}RBE;vv@JTOJ?+OmwgtMg_1L z_d)Uc+0xPVa!WYR{35D)LDBvJ+Ej7p-H_~c=pQ3dd*3d>Pp6NrE< zkBV{YZ$=di#0geM6`bFwFa{NS7^U!4#dc-oZi_&yZq*~Co}K~hfzcdm%NKt@z}Z~| zIrZ`I$H%R~UNApQ6j+9tMjScX7FY(XWz=PCKF{;Io5ef`oVFw06su?=B`kuB=DTv< zv6=)1a9E&@V0L@ zu;$(P0%1%pF71CzPVQYTFiJyG?Qh$*d_Ovit+Zu9l)=)Nv*N=piovGu&qsRZ$^=D1 z5LVvef*t5=H}u)!;#-}_>C=INHn(7YsFMr-H|y-eHWScwpKUGJSt3;h-qwQNu(S=& zi{7^(-+p86kpp`?9+JZV7RgJ=yFo^L&Br7*$Vjt5e%oXGx+${BjWOu&-*t-B8w0k& z8*sQFe>)lSlE58E=W@#741qSrLV!-dTbjo(xA-lX^J1dFiCHTX9N0Pwwg5IMjm9j9 zs9V4wR1XSBAVo*Pj6!TPiXFPZH)tyeSVklm>r6&$)djsq&7)Zlv0;xc za7~Yt&z4vyN!pfOQ9H7NiV$zv#n_NS2nLH8IC;>fiWy(&fxJwQ83mxALVLpC5Lw2W zFB-d#IK6=EP;Qv*$IKldX7-2v4-+)(GMGVdBdBl~T9^pcMj#Y_ADcsRgTr(R0=rrA z64k?^%aju?a{lr#b3RtaxK&o(Fkpzgs0S@z-RP7;tZe~Wfs%Lx*iLv|2FxNvN{|w7 zThi?;OdK%6u}>M@=F@}F42H)XG86&`_Z4mckF8V|;0vo06lOsvI06Z8VH1EBhk?U{ z#F3bK#F?=h8$oXHRJ6tD5X9vMk-^3l*1(_ut6mG+1@5A7Tp-Ip>$Kb$AjE4PbI$B* z8?=3=Uxh}&8?*sNMuq$*UsNt9U+mZRPCmkw9|r9{i;z z#${lcq7w?S)Onf#Od>WL1xoWmAm9mnJt8)nZJ=6gw$~8Koe>^w@pc?YG^+G_%en+_ zzSSHgXLNqr7Ss_zPPpQyel3JKW52_7$;3F>%x z;b9cgnUK$D{|(QNRFbrTy`|UdM+)46{oKroq}2PdxCN?Wns|qSz8U`$tK3!%`!;oY zlC~5Gh|ED4@7Yj}aS9rs70}y?g5F`>KyqnL&4WVbV#6s|7d4npG1FSr8s z#o6Sk3%qMtJ&>HAAWri*fCxy~bYgFa{0^e^L%rT4zZSur22NC#8@@R(JBEQI)H3u1 z1A;rxCxV$Hx5GpLH^(nOECd+#%K?BmN!~|nrLBfPq<68qX7{73I1`ifmP80mWS`GqcZbg=p1KDq!_fqwGQ9;%R_9-?9W{P9KxdFBxYR`36QTonKc zpiCI8ZH}ikBLEoc6h^R>Nu!H)K*GX(AgxRVe6}{RkdMA%MAwn%Rkv3?}j%8U5!7w8f?i1=9p-@lGwT7%?`V%#R{Qz){L#1js*x zh)^9SRfrLM$g_fmn3h3=5W5@2TM#?QpqyJs5Q3|)1R=Ye|K2WC!TetpAN+7mu3=0$ zzD%Ks64vQDDMNsZxog(gbpG zkdEvn5>Se(gQ6hLhYuVX54nc*V%2zw(IK1)r$yo(#TvysI?_-c@ZqMJF~i(##5MyX zsE`=me3n*nEh%V9;@z+O4n}3)<)*#6%I}abzjqfN^6m|OmkT|tKdYdFjN%nFF&>Zs z*4&U=h@6Zoe4d5R;%9it5D#R|Er_k+0z5ra@c=2zwpG?3B(pv8x6uD*l9@)+j^Ny> z+<>&Uz%pZ`7DgN)@P+{jm_K|2heZ+=gMb!N8qzb@)~hUrt%2g`E*uDI8mV9n$S-b> z;|jD#(?~X=A+1abvy8+WM1Syez{uhFdX+M9c$kSlB?5l0m}AyLUJDqhK>3PUi+7^b z_~FBOF^?P$fy+AAqz01*(QW*Z#HJvbfW zWW%5wqD}cm(FwN?+QGmfi3s8$MLww73ZIn=35jhMX0UnK&%&U%>h;agRRl%i2qREr z)C4m&M~Rv_gNPe|u867(p0L0Hwo(J3PveWRB%0zNm_Ybpd6~j6>T!w12P6!I{)ro` z#PF;N*;G~w3uma#0I5KfDIhnG7P>CFDKu*yzMidp2J{0#qv$qF-HHWWWq7fO02?yi z@T>}@n8(h-2|xp2FmHjVhGAnj5t|LeAUWz$7j8z39!_s{^d?kk1Sj6FVx;`(2%ay-3W$|r z6CS)BvI2F)jOILIV7FQUkC;h1AIpnkm<|KlL;0MXJVPkYcp>@-oU(3a8wvoz#u_iS zp_&|QLktS098dxtD%w#(X0=xIOLSA#>Vs_v^9}IBHs}PvC(HwCQn8IUtpNoYb8MKI z9C%~!jBREN0Eq6zHY~?S!8XIAU|WF1HfhHJ)X=L(2ikfai%-~M%z)Ftrs__lE>eIE zMmqsE9mavRq0Se3>UqBi@RL~^0L6$NhWu>ABb+D$)MK_eMx46DvxtfqTlly#rckml zuZmD!CMbY;#j4KJj97;}%hs{yjlvhZhpao_GT7a2hs%@d%utf-scDYHXeBjqu+m6r zVe4XR(JrQUq$|tqNrej0jRUWKnz&)XMAVzMJ5#gUqv;!zqmR@{!XBrO@P)X>Vmq?XsxFRSU)43EQ=VNX*WE|=34 ztvERCNK~>iTn>9eiakEfp(LO$(F)Od^yOLf!I7Tn8KQVga#txt7edAHPOJZvk*Gqx z{q^l&6D7*0OveJp2pC1AIWnqLLrniEy<5{S@5uENHOFW{=@Q$`fcUC7&Olo;VN$KBD# z{MT8AV^Gfg_)e`CP5}j$WvuYW^?03ZCjmqN%Pp>RCa?bJ=&X!EE_-H`s&NX)ja`ZB z=>^p44;)NJeS~rqAujNOZW8vN96g_QXV&!|hJR4}-g9#dmZkrzWPmlauZ4 z*tFF2RFJ#Ov>~z1jIMm|oRQ(kcDUSG2?;18klda&$Uel~)#1(rd34x49#?97mdD{n zz6_7MT?T-Yny5GuYu2e#qk)o{6`z)xpbT&fQ2=#D8s!aB2tAGdN2WN_9g%Ji3WDM$ zIwF%(JtVbU)r|{jQ;(5lr2)77r#?f8YvppOQ%|6DL?v*6 zlu=P!hcKoWaChM1-&0jEBskLn(scA$aXFnH0RvA;w6fG30z4&ZEjXCsaVm)phJlia zY)J|eJ-3qNbSas3&d%hXj-X6s+<(CxC?Nh6^{%D0J4hn|r9~UuN9}j*&hK;D#tf$> z4N=?9X|=k>g^1c(LMRkvQgP??SPWM%F0PyT43GHHHgSj&?*tDXXgK2O@{0Li1{vyze=E{vI1VVZML zqC>1Tz=KzXCq;1#PH;F99ax$PSuQsVHzI=~*uEn%2UrjZ5|w0^Gb>Z^*poFp~kzjWvJ0o3=%6sfg_=Q z&03K_O}8gJDxyY>h`J)PBLgTafvmNaZ3omnT53?L%b|FNWI|j~s%W#VR0Ry*R{OXW zcPr9+aA){7!o3&n-ElF#<>iy{LqKa(fuo61BT9juDt_zh`v#K23lIsT2G@`Bs}n4N z+R3%q*6vR6!-cYV=ZhQVkZvhfr3*{n>GFN|6yEhxP6MYaALOpR00w62;q^(FZ%(eG5kmj*y z>Dov$UTf*LNEh}=w?~@SyY@a7X?+6OS`1AT*Bf#CS|g&Ds%BVp{m8 z#CS|gOt8e~n`omkE-ifn&-HLY!g5DuI$dCCk>J(fwrO~BI|gQ9aXH+PM^K*E#~Iv% zaKEUgWf9P@LLmfkn?OrF-PBUHgaK-mpv!pAbFG!v!0la`8f8G9M##(buZ1%!EfI6$ z(Rfl^7s13MqT=$t>Xw?EVFzh<;O)N*L`~;<4gKnYe!YaNJT8z(M`|V@rU9XF2o=Ha z+88w$`NE{DBOzPMUj_M@$7uO|^K}Dt)$(=8l~03RcTl(*HR~&tD=Xm&>KTlDECWo& zoq38TqeRMw7|=gjjCTQew-R@rPj#+aK_1hZqy2ct>rCsHT3%2Nt^5__VZNIqSLBp8 z7V$5y!2wcXhNjI%ArF_w`BW4K-o$?`@f((v_nwsr0ST1g;&MP1h!s*O)~CbmiIu-d3Dy56(BmYRbEqRD*6(em-DOvQ z5s#^f;E*l|7O`%J2coT(vS)cxoUT+)s>2q96Uxk7sake*|OA=|~Jz z7PrTqo>^UC?L|C-x@RykigzeO9WE#2VAN3)WmV3qAeToIoTcyz9fC87(QXt*tQGuzbxh<#o(um~TFgT+8+u{^PO!+j8wLjH^BB z)#O@@KKaUmrHU6U3u^fvRc7m<)rC8+DG%;EuC@Zoyfy{Yu~r%CZgsIHr2?N*JwsxJ zX5+J%iRXp?Z0f=tB6Y=B^nZ|;44*}jA7OYXB~eL>PkS1jD3EIS(5jB9?sx|znN%l) zafpB!iLw6UNJ@2qmihnIS{-Q@R^j?XAWBV2O%U1-B%TcCAf{^qGD2LePVSPlQke%CWr9^jJ%? z49M$+7yb~3Cr6uPb1#0shH|_v6H*)r0~B{wJfQ7?6$0udjHQ{0Oc4YakSF*_sk>@* z7ei;ctsG$n^O&f>YNCi~Qptu;zr{Q&+B{1Qxx1WAHJh91Q)NM(gdsMxuWVjgB3@85 zDrIMR4r*3tHxIZJh^~|lRO%(fVM&O@_;#bu%qP5=H4-oLOBf&z%WF~f!w1>j>ETgo zjj+C8w!}2yWEmm_7t=Ga1uuLD7!GvXgPOD>UE%k977yKky>MdmU1FnDrVdweQtWXl-hlY}ADAJ+v=VUn2x36>1j z4D|-3q#VVz5AFxcLB8Dczp!bkQz_Spzd;MIEEPh1(8dH@+-45`sjN*^&g>}bgb|w*%acfhBfShN=HYhIg{OSd0$Hs6&(%w z!a`dL2+BipN#6XB43fApHGD`WFWGa){!PwA0kXJ%V*HB&>=j%r7uLY#JLmt@rjp=v zr;Ekw_9TYaV3|qGJ!~bc6ABVZGs;NY;!L!~Yeh>#obpSvPRZ|CHj2Z={i}tmHm*9j zG`XfOo>}+w?e{;$Rn|Y88KSRpLejxIQZt0%x@}o$hhTk|Z7TI~X>B*ab2KidHUF)x zkjKJ*AQk_*OchejU#8-=cy03)ic90#zB1Nulwn$@z4NuVX}>+HjP;&c*HPSA#yX2T zkFx-?pjLezA;S8U*}ki#8zIehE-l?0Xs=0*dD(Q62(y>s6z`yjK%ve|5i*nSqWh=BLK8zYzXuxv>#7tZ+X<0RG$V+{`{<(s zV~GIr@EGAvfF~sp1lY^lGT{Y6nhkSeByPwh_GE{Y?6mS@P@Z*Lud>tgV4;w1R(Fa zl4H5Gdra%_`kL&Pp32V8WC-;Rm^tI(sA-tAA9li>@lDm%ycysIQyoWZryt{7Yl^B%Z* z;^H~zjf-W{zPQ+~^8&8N!KJ(&4&g6wB*sd~o6&zU`W=UM!f`P@*U~K0wDd`{oWZ)p zzuO<#4_<{)6{VcB4Q(j6wDh}pe#R$#56|U%(tqJO)F)jWNXI&`R-V)Bk{t1#Vj1N#~Kxbl8GtwacDvc48mgZKuDD<>SA@m~pcoqPC3U@7i9BJl{T6z(l zInC8VkOpBA9yMs3nsYHx0o6)S-=Z}{Z!meQA*M#CtRQR2>|qBd>W0V)X6%r{5(cz_ zy=6#rGy-NCO5(`5g|Ci7J6OZhN}>dJK+1(20|d6kH;21}!=9wbu%LuAdzRY)4_-=Y zLW&~Gs`aTY`;2Q2o_)uC4r!i0ZQQ5u%ybRvH4|##JQU-H5T)fgjQ1>;<>ekCCoEfz zq}0J)mvEF;Zl_vzs;9CWZg#gDgM$|Dn_UPyTK+xA&-N@Wy%*2Eefgfk5yYo>_@6wTe^|g!9oJ0`w8W^?+-6w&lsYW5?WidQm$$Uu|DfxJK_%6;hkfbS9>7} zss3Edbx)X8`~`j`2KBM5px0)0TQha)fm@Uq3X|u2p!q4eU^|Nv3~O)-$SnE8OrCqf_Y;7UYkb=LD9+l zs@6JE0HBBtqF=1j=L;XT{d_8sUC>^r!xX&$%!8|i2)?O?MX6S5VW@Gq^Zk)MZ$#-R z$LmAliW}B)NLA9r%|sDY1O6VoS8xU3s)6ef?ZdF&NI7>G+F*QO*@StVe_LpTsU3O~ ztq|QqUX}+K|M-u27{|}W;j-h38r%Y+I_AomZcpckQ2f@UdWeuATj0)q^t|S)E>OKi z5La}x2k|m+ITm2S%A2u3TNeCnhzk3=3UlT9+uA_bWKZ+6!m*#;k?7M$Z|;1|Xn8U- zXAxfhN6DO;7$@{i7o7BPw;@Ux{3g-C4MM1e>j3OS3ln2T6%V*;x>W+6ImXiWw?zEr zn`T)mAAXO}C4^AG9RMGvJ5sm=Txc)6o+GM$?OL@GYbVsI7iF(mBQhbrc2dpS4G_=7 z;f^qEyCYfj5XLMPIAYltmH_-~r^coT>j`L4gtS!)9ARs!a2rT&%~nPQD_RH+=-+7M z4aL2cprcZd;N<~*EE>{3EbAijji1{%fxT;xpZWiXxU*hy6nD01vynv+m4K$H@4z-5 zIYyi!C12>|gc9R{lb9pR90)qscG%GF5m%PJOB^~RM z9%J%iIUbWQ1n?oSLG(8^6XBE2MEMI>ul^t;Gl39lop5NoVPVPfR%yHh;kRl4h4zc! z6W-tayCJHKeYBTCdhqAben1$Y&I8W{~)cDrbI`Q7;!DRzvT?tVVN5ut*{X=yfbh?CzR8v2AeQxXC+aNiix}Q3zJ&UUno-+ zmt>tj(gD25YLu;m1Naywkf%XGC9Txffx2WwwH<_vsEVRc7^DsZ6-mNMC_YefpwMvq zu@(Wsg(4ocsMiOsN~96mI1Hd&PhuQ@=iCLI^>3aX{+Mi7+r^Z#?7*_h!rCEJ3HA8~ z8c5~=`z+9a(L<=1b|`X!$`q87)h55(V&IRQTe_v4uGSpTz!q#7?!dfFgl))9$u0<~ zPWTdqRZXgcet`}MNoEmAWYoB)Uj`09z(x^9eNh~mhGtu_=DmqKOK+Wo9JNeXrK4>`k9&nOrpq5^OG_N%+{gO|bf9~mWg0Ofi zSG54KdWGg7F|>``Q=us=A}~R*^TgDz7b1LjF5Hvc(i2on$4NA9XM#5j?8p3pXNquPp%>wWh^i4}g>HY2hkLq`<*+9yI zt#G%ZzAm`)y!!H*f9kHv$DWtwbPmYM!~oJzKiiL+;VO@dae(DshW{8`V{!GAR`mqo zSx#2$y!$HA(RmQ`nCNI>qlyzt$gWzogcpkmtO(ffq<}SXS+EuDjTXWr5C|?D@m8!@ ztv}okw()4`ae!xapY)4rn)7LL$T&QY$CXd_m`gE%29r`Zax zE=J@xLd{mk>(=AS;{7r*=snG8=gk)=tC|3LL8Lp)!@b*QoOg51U~Hs_$t3}*%h*ecb4 z5Aq4Pr#{|6e-hD;j<|TP*xl?BZ$;3XKprhmJl?a8zOpfEdHK<0FG26%OpcE3#%nYS z+b&zcJd4fK`E4`sFVWiRf`|RT%U&ZN6NZ27oinh9jkg~rK0;Tzurd4*^6{?1^uNy- z_sB6@zI{fi9H#jQ5nH(+&c1=co>-p%`g~xNr;N~dgh&k41_e*%5gp1ebf9w07 zjI#U(((YHS5%EB6gc{bOrA=jZGL7 z9i5;Cu_6PU->tJUcSxkXO02w17hmZL=HpwnpNL<>+9ROk(s8QdJ|b*Q=dpuWF~3QZ}~ZZbiS+aA(?d1>>*Uy$ z-1~+#*gl7sJjbfvRCPjPw>XseI4@-5Fc!oyAzyGSDPx7>&N%%zu+207Vn?pa-4b=j zpzdcNBlG;lXghc^>>1c7Dz;I$*`O^1J?xi59&L>^#_J+|J9vM3_v^A+453odzf z=jOzU^lL3+MV?0+3>#`Id{^>37dtjzVTX+3gzbwrwc_;w_Hb~0(A5In=X)!@JP7w0e_1#OOR6Cz>< zJ3&c;V=gN>MFwtR%2eeatQl_C$AJTkdVp@Y8?@UIE_@&1wIXV%J9R~xsTR>4^u><5 z5lAU?KsFubf8vC;mjz5rmQ86JBKC@HM0tj#mi}B#w{c`R+^O!44v(FcPk0i9(&oqi z*anp4PL?@i)77m0EEj<$D3}VPBK-5QXr5~m=EYc;)V$W@g4n#Y^>RaKWe^-)e*O*d zlTQ}OV%ue46`{?c4uJx>%3yra?WC?X5_gU}@)u+z_QWO#HUvQeJDagr$6Kc~wyQ>8 zXs_6q=T1q@RDXc>0YK#XQLRxm4GX(lEG(dY0Pr=R<1CW`-^tQG9vO&uaIFBU4!@ph z-j>|2_hHPe<*dV$(~4EHih&oq0z(?!1pw9UBWG zJiF{}_VZJ@`B#`su{*$vA?Hz+;eHi&wo&Wa%k){`B->B(*`FivBL=N>bSLw)X7R2a zcqLJMg?VHkl^a#GOS*VZs+dSNv2YiIS za(V&M+~>D&Xa2SscZR2Ix05p?chh*6yRL%j;BXaRyLchY4Yw^r7JQcv>|Y&ZKYHNK z^Ca7sU{gg>jN2a*ryy@(n&B zxR=D;qoya}&h)hf_P#h7?>IUo0sAGL>GAfA0nKsY$9NnUBf~Vnj1oQ0SoPc@F^lfx zgfxfUh2PQ<6sKxeB8R$m#S8IYdMflbjob+*Z#uNA99@eU06f3qXrwfIyd%vaRV+ba zoda6&sYbjUa}GMPX-6JuRQz$6Q^Ft^`9v5XW;@f%!pu&koXLo{nD&uP#=PF zMI=Shf4Wx!<+OUVeGJf9;n_ocB&?Y1EyUca8!K}1-ohi(RIThEY8sYTSODQROcIeB z%>C5S#d7!Dx%e0F(YV{$sAORhka7iMQ5lduPHUJ+;sCBw=7 zO>tTY48QR33ELWE9vJk!{yPndnsZe4=#4HRA_iL<&(n~v3!z_Hx(w3nXZCN}zg<3U z1?Y&)cN@kvG+&o10OKO{7*~Y#=JA^#J(5|b$}z& z(@^!v%A=q(oWbyASCfQAT=+T}IIvcG_pETQxh8dnRNQKUHkpoSZ8kufeF@(2q0ewB z^NtsRojDjQwm~ZPB-V>nQAEL!5n2Ok{X0;Xf=h00RXw6ZF^jT~Qj=iQehLIdV88l1 zuu|PYpzZfY9hqH2a3(2Y?R~d}`+7@7U$xbl*XauGB>bhjP){?|BO^52(y$-z>p};X z+tlI0K$@E2#cDsg!Bp?z=dIb(lKC`^lyrBbYWR}z(5ViWP$Y0_CWur0Zc^vVM4uQZ zRap7@(S-+G4e-?Vp-R^=dq5ED#p{?K1wTO@3sEP-O7kgrH*=~vuHZfM6G5TXcmY=J z@-!+Knk>XV_kb9=*Sv4G5MmI@qxN?>NNxs^{&d^xz{x0C_i{4Ac3)@p;o_OFS}6oO7xItF_p(X0&RD|y(aGe!KGP~ zyaAJfwtHhORhGqOWW}%Ig{Xt$l{K7~5QAA?M2_$x0SS!D*%{=m(GA;woYt!J%HS99 zt2k&{so741Tq5Mp9j73^4{flnujQ6)6xbzRGSsZ6#7A$q4f`3C)FiAbE!dQawdw>? zYh-~y&?KR%VsYTqzjzoo#P$OOf5>cZxy1qUTUwSl_)x1*P^<{8m)?dnDh`Awu+MVe zT~-EsGKp%ik(<897}{YhzH-xlMgRT=GwSz}KKTT+#k@~jn}Vu{sbNQ3UP8jOVkOG* zx_{I%y!!%20jmIJ>L-E9b)83DHrzE_(#}@_;JR_#c9q_8%`8M7&2RGto)_U_9{%6@ zZQev#{?p-N`us2WT7}Jy7u`zqxjpLC&bndQ;8Eg>7o!a8=d9XAM@| zXWz6|_JmsYAl~o6rIpoiyo(xl5Zv$4;|?k!Zz$>#=4c-|0&;S`G1^^_pVx;2cV0IG zaff@}FGhQY`cA6ULes}tD(Sof6&q05Xcw)lM;^9mpwBsGPW9a(ykngiXRoO%TAUrL zzJ*;0@0s86dm&F~mEt$!3$kAE4!WcEO2O}p^ZdI;Fc1aqt+PJfbDg3;a5!jhda319 zp052&nfRUUP2Hs4Dt||M5`JeH5C@pa6P+L{FUD^SD_`3CkK>32IR}TcF&jRox~du5 zojMptN`X77`=Pg>ofpu~G+aTrwDhZZ4#f31?f>1WX0>1RKhrF)A1DL+z~SLiDpgYO z2#*Z5ec^e)0Qt;glV)#qd$8sRP_erkhn#c}=frBiX!|ib+S6eAOvla+aYSQ##}Mx? z-5jvFdhpBRjU6XUhf6OMY!eMstGN{Z0oSP55U~e%yb5P6&2a$C1GF^zPs{qGqw&nR zqP@4NY1}B_@UCByzYpx+aK*>tC#*}}S?%{%@4J4oQ?b!^J1;vq_WQM?x)y%E zLRyn*Q&UU}2E1?kbM?7#6^4Y4EMEHPg}&Fn4^4i*Z4v5oIeE?2_Y73_yE<1NJSd|2 zH`F^2xZ%mJKRQkY(woaac;a9}Au?vCeB$`PM596*AG~qiK(9v)FKYwxxEfBq`_b%R z`t_N8V+MW`K-)Srv0Cp2P>l{tC(N#CqV|oKeEP@m0BSO`*%?y+-R?j3Z4)Uwmj$%krKjdGi@&-$IDo=zb&73#5Jc4{ z-ko+M%Ssh8N*wR^Y7o8md7GvC#_H(jn{~fStg6Qz@t6u@XX&Wl^udd6|DmU?8=L&F zB1T6O#y&gd_Ll~lH?Qe?CI17Ry8gl~3x74!vYkjbZFeHwmhay_FJ2 zzhM{|YNqs&wE~uYZ6@>B_+lRpHIdtR$?-`WGaX)AVVP;6k;<-bHDmV`BYl3MRrIA2 zCMt6O<-U!&S?F+yk;A%=Gf}{XP^Dxe3w{0U=qcktNq_xrzp3?wK>APeys{_unCRvD z&EK4K#zJRXKeMh+Wh1q1F|nP#uZ5~r$_%*}VWOjb{)|~y5Aa*Xg6^?XbN8bbZj5 z3*PNvrK82}m%mcpNFxF*@4ur2Qbz4-Bmb(cr`fwl)oiGtB2A!;7qdGz;)Ww;dTr^n@x_+}QsC32n|J%fLUDh6{q@{A2Ku_#sF`8q&15}3we`fK z1{$-cOjx%GM#>24)V}p$GZ~Df#=jS9A=9+b)BPG6>B+4p7DQ(2Y4ayv{rSU3I(q-x zHTwd41I|st=jlR?)Nx%%vCoT|DC3R7b8cpvsn^ewFO=CHNMlRQ32WELO!aCm==j;~ zAR7N=$63#OT9{t?T4~vKqJi{dw!N_Fb3N^GSDCw|iUl@5b!k7EC6`^HUmhD@0i*>qeh~0F>V5 zBX_O8jP&e@8|AAO)>DWp;&?=)nJ!P8F#p0p3w=|*)!R>hmDwsq4#3G_LRy_n$3Rh-&C}CLLZ6Iybh_xWW5%^h$|)`x*=mq~Bj2 zG5M3{jMUrRwby|QChB))y}NG%17+^GymY+_{V1}iW{EH}{dK>NZW|P+aqWx0SRw`I zeeN3@IPtQMUOQ7f_D`fo#DYT-c!D*l&Jug_T`^Xh>W9-u$5 z7iJDhpJJix9gEwv&$Lj<)n$GhyG~C>&GVaoZZ*+QXJ2`u`)D(DU%UUo!DlSA>9yl0 zp8)-tv~amCMhT*B?T?OV-quJ5-k)-1=E*=R|H+_PM_#qip7|%r{ZedqYNT#m*6gjc-%KwCwm44)ksW5pSZqb;?I)iKigw}1a??q0xaMTv8NJYk~Gx`#cOS;Im%-(R}7U*|$} z?B$~OdVXb~gEMM3cmwp*_DqGH5uodDJb3!uC$7NH6Z7qpTPEu1$_FRw--kdy$U_Hb zt%NSO7Tu2|nojRNZi(6Jx8 zW_8?VrP%S-`xnYv=)2UzappJ7bnczji=T?L())KKj#Zm(qAAX)zg?MXrcL%)mnz*b z(;LUF%YqsksHC&;v(6L?^&j3leR(kxJ)gBK^Yu8`Z(28+vIlhRVuKrpDs%(ge0@r6 zl-)!htebUh+B`_FZx3I$HZ_1^id232$MS(RVCJ;RHsJs1I!z9&3ksmm_H6i}$`L(X zPMdNy4(omSpuH2SB8cGXr>%!M>Y8czfuGmC1?6bfsc3Tlrlag4A68E^LC?Hb{r9#F zamH+m8zGIF>B-S-?}tBH^|ahQx8m8C4D{^qS?5=NP>608c6>JdeG^@5cC=~Xn*p@? zmc7>ME})w)>c4&NGGc9wmFErn!$jAv?QzvkG12g28zUx7($PqBs{@JiK<7e!e|ua_ zJ)L}d+H=6Kh;z?8xoES2+>^ST?)$rm zUbymSgOuqO8Zcpdz2CwOWbSmk`8dEi%XVh+;JF6svg}Vw=};ZwMC-g#sfdNz#E#xL zu9cZiR3Ep#Z1o^|^33V7duj&K^u8es#LHm|ADp+) zGqor-TyCVob2d+@2>2dsvg~k7jly)jk@NEH?LpMy z?v6Se?;B~|?6tE_g1`NCwAk{9PDWZi?upm#WSVKqjF-Nc^0I+m_~ZF+7Cr}keC}s| zCY&?TbKk8=SrD$L*ACR3H2obTy>+$v=5_6`4}QqKEbE8>YM1rimbbIj*WG{Ts5pvn#deK)bv^S?CIQ_T5xyGtK6)5Lx29ietJ zJut*CDN|BMt5zy2BNBtCNYfg_cK#Abm#TWA%YqIrSy-~`3_Iw^`dhOdA3`_x^c%9@ z!Sdh>&o?WF`L=FpTm*FIt)8<#y#%_rZN;mnYOOZV=Ig!R8?xU>&YB%d720Q{MmLWf zo)rRm{FKSF=B$C%o@jA*TTmdq@c*c;Y9-V}|~5t44;2e%D`|6q{h8?aNZn z9r#2~Luhlrr$Z>Q`Bt*(*gkLkQ>O&1fz>@TsuXk{~HmUNgs z;QNlf6Mt@b(nw=w-MBT$qod&LeqW|7($V&7?q=^mfB5}Wi(e9s1<utz0sq?~(uP@S5l^IWca%;VTey)As zjtB#R zrZ)V(=L#eBs5o!dtJC##s)O^&4#BJjuGr|67NmN(&3?$4dS0lINw{Op(C zDQlwHbFCx0_k+)(@ZQNAb^=cqS^uAN*m=MKkSw{qy^E6LfU#kE%P8 zZW(EI-?T*!el*g1o7(T1JXJ>@&v`a+_j)t!SXum!%r1p!XSFqp><$a{_S|`<>uM{t z>ASkb^)w6VwqI`)SUr$FJasod_-okGI=heS@bR%FoitM?uc35Z~|V5=P4IQ|3-=1<1=gRw2~FOm&hL4p|v(pham<+?xdbFXh(K zj8>g)JTme119hrw^xo4>{whq0vq5o9Wq%Q$x>{F;M&tCGa|w^uM-sYj_Ep1rtgP zol&)yiDs?1(DrAWnZlBy4^+6Wqww&+a?6{WY1GN0Kh!I2rBK_^>+R16)7On(4t}#o z5WO{YS>opg$k{(n?l}EN9nHIc@5yx`;6v79uA(LNG`8;U>ocD>(Vmxou3K%RiRwM^ z&J33OTJ-+l-uHi)smM>?{}dUmCvyeeoT&qiRN?g(Q_QIbdTQ|5&W%1W(&Q=k`VVX# zMA?mYU%rzTNH5m>ZT4O0?R`fZkDu>uptg%rx1YtKR|(TzxfH zzLCq5ihO9Ipvk}2biHPx32Tc-Ogt1syMKJJqSdp2-~9IPRemvmmiLUjov_3}u8&4c z7?fn7R%g0=m7z1^i}JxsuMe_N(GlBUnF+erablnHBbJ-#!oiT{2g;gh+k11Hu3l`S ztTvN2)Pel7EU{zrUw*gH`iX5fS=#C;q4TcTNoTFJ`RVRW<~*UJ#-~cXa|ZmdaE-;E zbpHYTs?(5)b*q}`3;W6P<*yU%b8av4%XFMeWPLEQd%S__)Ldv<@iERHiYk-c750YM z;zz$eWd#1!e=W%|6MV%y^yz`6bhJ71#WMfF=k&s{w`Ga(dot?bc-^F~09Ia;S#y3)@?&t!i+W9@$| z)Y4wA!9>WHt=|lYNUjRI#k%W9UMg0YGH--67;qH$(zxaJ-eVvSMZ9_KTptsq9}l`U z4DzfwF6dbGe$b;lM_;}-SWgG9*82Qa@L9{(zujql+(hkKj$hxUHuQ_mrT$YD^6sS7 zGrQVTz@M&m`0V-mkZ-g$yRT257?uHjIJR4(kz3MCG!+ZF$5(8+v#Db!rt81x`A5tLnBOx*dA#;;P|6boJoRH?Kwn(vtm^e~bJv zfSzs@dngn1YC)BGK?e?*sOzt7p6T*}h1UHiVOhm5Ok_zIa8zE#&0>oL3j zcgq0Jw$n;ix5KW|VfpA*M`J*bwj6J_XqA!TS3eo^WIZEIT>IBoe**ubcilcV7x21o z-Zs)>Fw>E#!MnD889)Pf+@A2G(@3wk|GsXOAfiguJFS>i9{T?m%|4rX)Iv*E%&ghG zypF!w>pI{1Cj+hc=G#dVbSApr?W?Pcn}Q$wuyD?&1NC&ReWaxh_(;t=BR<|R33mFl z`}boCTPS$!rX}UF^ptfYdiX1!8|gnqU+Vl3FLFfsqVusgh1^syGAL)mV zTPV8um-h75Mtbh*iG#oH($U2bd(4K|gt7 z>!u!9*U{~J^joK+`n~mr4r_H}Taej)+AFYY-RwMLO35HHTyT$myM~o!PAhF&t_z~R z(=wY({GMpz?wD;QUc)y+=2o_4pVUziPm}qUeFnNcWlZ_wkmIWLe(T$YPl4WE9apMn z2NSKzSYN#c@FHW;(p}HaHqnI&b%TSzr)U5AO~7}t!8CT$z*`>z51wmQq4=Dy18MCI z&+Mlc>qvPyvqNXM1%W4wXTIIh;-Bj4(%^SbEnXJN1|Q|Re8qoB78 z+Mc|oCLBpsE8EV#@{^9HOuDkQ66^zKhZTEo!!ppv&UNR1-N8&hbWYngc1K})F<{4q zeWmo2cH-M6*J29O-qnp}&NT#(zIllw$@2oKOJW7f<d};y$yTaV_uSgjZD4mS(dXoIkmH{Iv)`|c+Z*W9eXsZ4dbKchZ`1VMRgByu%%{_Lh|6MaJ-}39ki%ax$b7iIViRFW7#A~Me zU(^nyng_4%c-s>|t7hGsyK7evxo4H1dVMZ@h^s&OVlV6!YdelyaQ+hm^*_1bqoXgI zY4iH~?^J$Zrm6`Q>`gEaW5N$L2>A>#|Ht;6*?0Hu1qr0_;1tu_Niu}ef5@9 zX$`tC?T5HK$!U-iTq$3FHzOGKCf%tz<1zn#Eg#yat$~yuQm%WT?^PN(=i3pOuS%Xv zg9v)nx`kV-+=p}V-Fbzce5;I^rWflzYSw8+E9`gu2I(?){Rj5oXAZ`cKVqbX7o!K9y=bLkC0CS;!unk_H28Ao69IJp_{Fe& z4J{PDq+VEO$XnABT4W{dG191!6%J1hw$O6Md52wn-t-o9s5jhRzE#(u%S_oPM#Zj*@zud}%7|)>T~rNuRX|pw@>=UES0J za?|o{X-n&a9z~sARSkOPo9#}2Sa_Y0qC!V*?K8(n_9Y)IIt01l{@UG+O?UJ(K08_; zTFOALwDOePGQvVDMtt!0f=|pebi;c^7V6OMn$pD{z>agc{i)cVFTqazg}rv!Q97Df zCC$)yKp@q!{jzZQdFa_sUDaPR1=3;nnoFNm3ZzCYo9-VAyHwX>hT02C8|m=Ia^I$P zHqiKKn@%qTUwHfdCwHb4H_$t4i@&}D{Ca;@rOaaBmuvU@SY;aQ0Y9|d{a|A;3k_TQ z>B6u>I@&qr{eW3;G&?PYg8qblGiuKlPkkC*n6^B<`sp}*Fx5SBcw=0}AnFqSMPkrp zE7@FC!Z)AS)4P@CZStv$jYd3;o%>U(rGEFEsBk;k(dt0hHXi?ni$Xve32L3%BoR z8$gw+yu0x>=-8?7$ulqB37{i1uI3ZKm-z0#-`M~;;i*4E_g&hiqctBqxv(zgffKC#}N zUV01tYJB~{N6@do-1KaPeg~jWzxIS}I3nL3K1OXpQ(>TXM=J?8|ai-(2}U&Wk3NUNdP`*ec1|Kk)X|>_Z>BZp8WD z2wQ2puKD5{%!kL$c;z4WRoT{8KKpZDZL;4=d-h912mZ`w{cZSX?i_Lo>&hi#TUu5H ztZ&c1b@l7BLRRLwjT1`YZ+_5~Id9XAN!GMT#VZRd)2t_g8#)H;_gSyytS%1z#&2D} zzUz$MA8@XC+t|Neu!?hvzkesg{$a@ap`ACO8)a>;o_2ZNl|y~jMc=r5$CH2eTlbev z`q4=Ua1SY6o%PgmzxD3TlWutb7eVWpTW|i}KTl7ww%z-z{qSEnYyXe0@9KnamHa_$ zvj0oT)(z)gJoo)>_T{Z@doP$9wq9HO%yD}s!T-MPo5R2UZqR!FgZCe)`~my$p1%j) zVtsml>?ObcC3OF!5g)w15d84`?<*IqC<|JHe|YD}EnkPv_RNW^(!iTZCrr3rT9qdiZ!crNvj5?(iZ}KJt=?}8U zTeT-V_VvX<=-I%*?u-b>dOG?xweb)`OMX8=fc+TZeYN`CN$;v`%~H zdy}ucj`V&tZBtDR{PbS`qYIw*TW4*ldh#;(2ZuI3e#1uiymxO;JAMlLz#E2Ne()C7 z{koJNTz}@D!`6*UdT+hz0`T0yz~aLDea9rTz++dNV(JCvoJOv_ZQ#aRp?h|J7CJE7 z&qAnb-)FVF+EtK%A|qk^kGg&(mfh9Up`IdfxQxNI?s~-h(YGa6DqUHH{LPE_9gB>? zM_hqujvqJ z^|67ru$}`>WK<*_*ag-Lm=`hssvO+Uh$}xEBQg-5rX1Yey?y22`rcoU--++q!n4{N zMp{ zgtTiy5B@&FGCVLwSASd&KEkhYjbgy1oUh@>U`rnptgm0V`udGdd;?br+;GVoVN{;L zG=sdsJTQyglo8H3mLV^a;~)Bv??seh6=i6{unbwoAEi+ydi+Ccb0sX{AIj3*k@vwVq{%8nFq$1HytQnRu^ti8-$)!&JBQ*@%nElFL#Eyphjt5 zAP59mq-*4-z4iGm-xpjY5~6Y^vyB<3v;@cHL)Q={cw#}zCN7?f z0y9w)RpD&ryTmecw!-0UGQPn=bY*J0xM(9c$CVNW?ogs6ov@w2$h!C-Hq+FF47ffVH;x7 zw}Ruuz}|HGZQhpC={0W{ESY%UdB5-D`*OGEL|2DSRVhTWyl}q>+R^2% zEZQ6vNk0jB<+jWz-A!e#b8&35>smkyF9+$F72E2Q{vSwRH@6F}8`o`0a&#LH(O23I zKk(l2{Sm*n{RF}rzMt^r&8^FuJ8Rm{I%X!DJL&VvD zEqKOM}Chx_90Tct5AdTwQ3s>hw%qTE?i<8O<)m4?cRSZA)YT$B7zKdJ;> z6;8fthk{)4A$|$@nfQ!bgp=iJDKk@at`N2jm=PYBK6jx2xt(yC*Cq`m{_Mtnim*Y1 z^_egD_wrrjh3Cn0BzhuP2loNNCYTh^pMV282a!It)v znOOWqt?$6y`&d=@1x7B`*SKM-1|Ajf0 zwGg&~`u#iB!gndNcP*5>48D99_g^u8!?+!%ZXTBuS2)dI(rvwB$;<^OSLj!A^c^-? zn79Y5Zo$djH1}piMFsc0Anw%50H`|XMjvSx`{ym~J-E0g%sU8iP?R>Y5)hl6TYY1$ zvqY5j%9VO9qoBb0&1q2}Dl=ZLS5pm7sdAl@ z<=Q2nXJwmeN|NZrmTTUsG;t+0QWQ_zu3TqDyIgANmh0xyMyiJ0Ts1`(qq<}Z4c&%r zQ+au*y@UIGoiV9Yr{@N}(guObh8D>2Sf;Z|U(P0TT80~PF_kV9f!gi1&^0k(Wr!vU z(JPV76GzMx(ap-GMo36tm?@0)=Gou&ORQEN7Y--m0#9$%7?{g zXtcLMhlm;=m4^3&C!Jo>8AUl1Omol1`ZgkX!gsp)xc7Hgw708qt{%IRfzn*x(GhE7 zBuED+EdXnK*2$ETalG=x+{cJtM*3H{Z4v=N2yJTolU%=x$P*|#F;PD*3v1$6(yf`E zH0QW!Ds0Zkfd($*iod#Js^8=?R~K*|F!hrrFR7o=H+4~~(kJ;co&3CyPhL{1kkpnfa&O8T_CnvL zJ3_GAqeqAd>sO6{Bc|HQK+0uj2e~2|iu%k?8DRYeirVwYkkI=~eU<`);-PD_UJrBU z)+ixyFZ(j?gaSt+Ph+OF7uX5Rt@%oImSz1Dx52%KaPv4qvnZ4Fei!DFn>K2V+~=== z^}^V|sJp-*Uhj7w->Z2ur??-y-~C?L?>i!g)=DS__$cuI)auzMpP=L;16CA;a#ea` zN8fUU2=@f_i5n(tJ~OSMU!Fn_IM-^Nvy>V7Kdn=8F=eTzj9g1l_?frKgzQD93Pii& zRtdQ|zkMS}t-G?PsBre-8d$WhpNa~GFqHR)JwIolKJ=M50{{v^xuHB*R`=m~#dYp< zeH>(C3olxA*LhwQLJ3Q*(!QcE!FT1lDp_(j703+n=oZyHbE@zCXvw*T@V8_v3;$cC zb!0u9N<#~@yiU{eaMOY7v`!WotCE(%ym45;q}@CdZ4RO2-7Y?D?D$Z~7FSVl9MU1( zGp|p#repW5LL9`Bw|C8)L`2z=X7_$eb8NUoW^fu__FSPI%4IH66BR%eI2Pb|C! zX*aGRSYCeye)+bWG`SLE4Z;k@ASP`M#c-`9&WAw6xsQJYe)%@~Mjdw~?or~$jKLt{ z8rMTHuAkq*FW*ijE?1YV@t6r1aZkj^zC-98DYL+N{U+{}ZrsU)d*dG7kBi*Lm%zg9 zO%)YNrPL87Yd^3)3WYu%++{8qC1rI-+dbA4%AbXqikXI)j^TQPm4gvIeR-IC%;9J@f_ko29r@ghYwl&s-URIbQXmx0S(cK-- zkLv?!kA8T53f#%3EGCb&w2_pJT{Uk_ICcL+?+W$NDgVKCP0uf(-GtY0?0wV~e=ntV zhkh@GtJ!K#WBhse$C8)vm*JPar|~0ts?HUSe;$4*oAIN{K<%0TUuwtsH}%!cFF3MG zR^Tp8wa8gL#a5;ex1rU%-??&cu_ZK{0Tf~J%=Hn7hLYmhA466EL0%{GfHU&>3>PON zDx7P8mGiQrMKUGS-K+tnxV?Tv(k%J5mo&?9?lo@Q6AAam zU5bAhrUr8o2C-yoIc5ds6wFEtBDP1}e(r#fBg`YP06zVva`SG{x(;QW$(S(y<8TZ8 zHLs(qwa0~5d!i8reW6$fK=kec&TiViui(hyy#{X^HQ$7B>aLd`V370bs;Td}UvpoKH z`-KawC3yJX*=A_>m*v{(xGmjUOI|ZD(gw0xX3pZ^Q8QS@I|;6(|CKnHAT(_L+Ke^cvYd<`Tk`#a?&p!4FSvO9oQVs%I{dj`7%}LDf^SS6UzW7< zlGdgBuX#T=@^Rs34SJ#McbQoWTT^~t{Cv}jhksRb?$h^8z4OswNypuL@5|ffrDmk}$-VGI8GVPbfuCU|{5aieqPtzU7HcN)1?QSNyX_iJCUI<#Z*2p16tJf4MT|@fqa~o!xi>Jk z1DlzE6~>X!N3ObTIbe5FF(Gl*Qv9TX!)Osc$hTf1t@)&7+QUR~6O*%GIUCUl0_WV7 zuFjVXya}k`yPO>X%mKJM>M*5%$D@zN^{Z^?KLu8BqhX_&MsI244N$^l?!?1nr|gcY zy9txExJ{1YWn-~U6mY6xV?EnHo;$~Q2Ey7$n4CR|s31ZCZXA8MOCz+!*0nc?*n%9{ zd#Aelx;i3Q^7@%D=w;eM=ija0RF{S^Wmj`jpxjfQgggbJkBP}>tsrg@W%0(Pj80az zGd1x_wqn&;R{$$(-41LY_RZLWKk5_G7V-R5j4mgOGf5}$P)_4i^D2NEtdc1kxkRZw zn1*zpCH+&d1q?dDG)kiMj;YWXHRF^vo=RxprClnV=rvF6RUz1q z055CGO0S%va2+|U?K9r=Ifp8>d(35~o^>T@%p?uSE~3z-EEJwj(zuoISAmoHKDS{5 z@+E9F*D2kohfk{Sr7M0yjmCZab-@*psL%Y4qIgyo=?D$^Q8+{1CXur0xs$*c9mEwH z!QhMK>YUJtPg*%56iHik$|vV`3QZey!ksGOi)_||*i*2p4UX&!=s0g)vYk=Cxtr5N zhMq~ld6#&Cqf`Dv+X%k7xQ$WHEY?pLxR^ocMYja~aE4V(d};HOu!WX(+th%`A!rxN zN|!8g`u%YC;LuIa%|V8OVX$XA{St9uvSk7&CbAMCIt(nHfRjx-D$vBIb1C0y%J&Mk ztU15K794Efqw&R&vvg+n%@eu~cv+K<$CmloFJ2M{e^3{Nb%0 z53_D34Ve@D`dt8IeTW0P+Z1a*@G=kk!MjbX4vMYO_v$t=Fo{HHb%vupMA6f2rY8#} zoC9*LXEE&JEik0iRDxBcx0pQVtJi?^1V>g%5DSu9XUEzIy8;;Lk8fa$T)4^G;9B5S z<_R2w-fCcFO_}fFefP~ib>dDjG^s`SKHy|;b^u#sBqZbct?j6OPlOHMrSo0PQrgwb zyKC-2s=_ixu3F zkr8$yc+T|4c)}uNnD{(p28NoN{ycm5qbA6+>W)6aG@Gx@TXy88zpMhQu!(~;(&nG{F%W68?xdkX1_GJXci>FWf91%KnhaGWx-Mnwa zPWF^Jk%kLvO6{id81N48{o^4F2%RlxM@zmO1WwVIygjPWyQXow5TFpbc};XzIM(3% zHLnu!GWgLN2oV-uosNT8mB2_JCis{xj^_1(h88C#FF}bkNcGwV^(qv}T6M$`p3arn z@^gznWlADh>w3auobJRHe!olTo1KOb|B{sTDB&`W-TCBM&}DL}x8E5FGFV+ytF{e# z-npx^vzs)87Ek-Wrs3T3)VIog9qt#1ybA)|RyN@>hTQOYgGxb`5Tn3a&1M*JnNA=aCzzH9~Jxx4ps#1G-QUOVbdPKJ>oPEG& z0q?d9J+!t5<{~0O2u3jB*ljd(YNN$Tn?!Jm-ARR$H~fKgE01``VY3xIEdB~s)L17E zjIn=emv?jZKJ8(9(5Q`h%L@_vFuWxSej==_9iuM2er zFjBu3mww^-QBzOP_=esAPSsD*fN{YH54dU;>viB{Y^Y6m;w(hqbnyraJfzoQv+wAi zNEYEj8y%rc{n`WGKCs^XjVG^fOdHqn(%O7aEgx)r=x@HNY*kx(?8}u16>( zc#AA+U5U%sV4z;&mlB`%VUg%*uXr5N z%_d#N`@$C5a5J{79sPUIjT2`~Kos?Ph#mb5BFtrSa>1b^NKe+~JFsPK^3do)EJAn7 zZG=w89p~I;H`}UN?1~@*IndcpTp2gReyGQ=TXh-kvTn+DRjpxa-^y;gy;1QJ5h~=- zt?pSWm3-n#{&kLV8M7M$-9Jmak(eFUqLzh`H{xu2|5AxCgQT1 zFA49Qa4E+DIy8VS<{jMsh4~9+GvV?}><3Opnu~X%2@_l`@PEZ^$|_@bW2|!nG^Uz& z+len_P2}%l{QeUZm`8!l#MbM59{}OjTl)!@aiYV$xlooLYy8|N416Pdj4Z;052eF2 zX+>|T{oDe=1``&ae`bD5=evATkd~@Tm!5sh9VO2w^mbPr@yq_T_{dauS=)&(_`$TF zw^qB|vS|c%1d@<=2Z2#*R)Xhl_$`bDdFm7X2wh&!zRa1DH^q5O)1%X|g~y>z6iw!u z$?n7_uxX1N;TUM)dsx_(N#j(~khW{Zmi9dlo1tKR7F%duosQC|V#-qA%9E2cD>Jac zlc>z@x?E)b>T2cBborAbe<3z~Dz((~%vl(-{GI&#LA zm}0>+_)Uj8I^pq*F z_;L|fqV;5@x7LuR(6SmP5vb-8-+Kv{^-J?H72%^$tSt5036t^hkSUkSuM1IGxo5&Q zw96G`?TqDd)>K$r+su8zJo5yw^%LUBy7p6ytnG2+wpMJlVp5>+~ z>JAKZu*+@0g|I|~b-3JR$Sw!rdj0SpHhKN<84`#HrZ{4~+>hW@DV3Y?>z0iBSS?gA zJK{boh3al${xH<);Rtp&TlYSx=gcnbOzOA~TYjJ9+&Tzzo$gd7g!@>|GI?FQyET?$ zI#OK^Dp1{IJ}J=!EBh%e<1Kq7!6Qd24Ws4tqyEd1Z&k#VyiniVCtuWy zs&Op&@+67n^~*cN^6gwV?kL>eGJE@GG+|yp>QycIc0X}ZJ!_4_I2dtfV#bT#tuLz8 z`uHc}mv8S9cM|qwjN~hBX{#w1(^gsi{5)G^$+!Gx;NxIV$4FdpOWbUXH?G%j;DL-k0!8ycLGDWn%3k zP2nHcU<>@x_IRjf1qeP7Y)jIDRFuLU_l7h#@YfA^R`1I+ZZ^R2Qd^aT3q7?4TYmGG zEL*;Cft-!4IQcZOs+U%;;JdV?>q?NVy?%??^y6o6Hn0Rs9J$?igSw< z%Hh6SL#(q_cxQRBEnIx=?Aj@Ll9#lL@D+_;_$cD9q)lgGW@F}HsxWggsJK>bDD5b7 z&g(bxu^+Uw~PNS%f(bBWW(iNSlZe{NeQ*oN^^;9to#Z1Ajc`1k4i5iI}CB zWf((ONBa2#4of)&S9$#ge^oxG%h?})tpfg3 z%xRd@F{?3aFpFct8|aK};us9E2i2Yt(id|E;hLJriI0t4q%Up%ugX+$Vh~ef0-mr? z2y&5MR-&g!cNyv4#)d5u+xY(jztq|5_lB3!7&7(`mnYj;zgf-(VS#=ep`tdXP$E)} z?&tOXQ}BfB9dm1^=S*0AM&;~Jxx(KkAF1#CG^X$+j&|KWlRh!ysus7`Ux#15RlUHP zj=dJsfDt!OYFIIh?BQhmH1+eZ!!O^?C2liz3uZk=+#4|W^L_4PJAP~>Cpkoy;o-C9 zzA7Jf$l77~F-Kd8jYN<_h-t%(3Y%CbZs$dffEqftbab~vqIER4xW^z?7Gd7aG`lX? zGE8W`3&M5xJPP%!;hQv4U+gOK#1&2lVKSilhABR|3crkSX(R~cZY0iI%~{Bue3#OZ z3VJ9!H{tm97-6z;YV6T!bo7?AFVt>egaFr@*Z7rnEATVTTw7bu3Aj<+Ld{0I-_4%R z4!I>mlL^6Q+JGN3-yX6d#WY>ZO|d(24<>Sj651 zUN#9PpZW&1IdZBOxH4meP5gOZ#%{d5JWz{)k#;ugsPO1SDPJq!rT^kNq7<}^^Hx@N z^{6-6HKm+z*7|ntHsZ;qB@s{40tq!^Y>a>r1}_3Z@>Dh(MWyG<+Rb+vn|xL#3JU*sg@d{XYIS;cO+%Sfp@r3MS(gzmj3g5`QEv@!XTN-DUbS*O%l84Ec%a`}P6%qv zoY+gaj3bk7LirMS;N`w$iVs2H9m1rYOgtqstw)p7($>^oNw_!Nbto(Aq8FvyYY6kU z13l-;3DBDL8@o2UaZMY?>&pDQhA=O_Q9>ttzlZNqPbo*O`dBN6B>KQhDddy;RxO>J z-np|9CIE3nu+iibAGf4u{i1I^@wz8u4Xx3@cn>rrew-~#x>bbB=G~-k`m~PkGUmU569>k7fH8O8{AzWV8_7(CkjUdvV7z5?VYHqo z7ie$4bhIE3&DYdgzm7B_ujqQjaZ!g}7_#^-_{*b9N@+3>HhmRg(#PJg`OUG04J$UQ zT-OjT}H7N<9LIhQ!nU*0&&M32Wu#JT$jacZ=%0hXTo zUGO`4y7cO>7x*mlU|jb-kPyx*SVZ;%aQfw3g3*p*96DT7L1a;|!LMqjUjeq%eId3G zW$|`1lMfD^9;01W9Wa6yH6r5ZKpjK7M?4N34v>_>P0T7Oq1=3D4FKb?xgo9)S=YH~ z$UKn&qBbpRA%#FAOz?_kJm{k{se>DA?Im2sXngFuA%XwY^Qr&Iv`k^q1XSP2W%Dc} z#>4Z|1yilj#F0Y+u&gWS*FSa^IISJhPt_s8?aH5O)eyIcxcy^DX6lkdA~UGRg1jQy z`!eE)phUcV6AWc^dTf-#4MFhjO~5<~tPrSiSb+e5r8Ew<9~hZ)D`>}E9$M%=+!KGP zX`ufbo3L#10_DdyVfT~&_c0G(9>hF^`2pr(jF;&2`VG-}KWQC_=scEs9Ik1&K_)Aj zu@(?WaF7Re!|2_lc!`&oi;r?C%>SusCY(6 zX<2y{xNO0~MaM0!KK_IyCoZiy>Ez`rPFZ>CX{WEQL%60f*4(mwL+i$l&vf>MTjm0; z0#d;>t<#Wg?Z9?*_iQ?A^Omy{*-X#Q%{#Ufa`O_Y{VOT`D{&Gz=F}cr{ONgzKJI7P zK7Sw>3P+Nn$ti~prKSx?&losp@Q|T8;;`W(MvfXiX6!ge_2eP9D-Y$+Fan`_^w1&t zv|?uEp+mD~&(RV8_x)8R*Ta*l%yKKxr+pHwL%V1IZ|j(Gt_RKkz7{xS*)ln$_VI4? zjE+9FA2~|bFEKXy*1mYg|H}F&s_Pa%rC+TR_0<6VYkgP){x52V*@q5&!tp=n(EmT< zpV}Xq^9k#J=>PTl?|wbq+K#EiIGEk9;m0^{V)kHmW8T308uP1kOZNDkZEUI)kqK8q z{LslgZHQNLP$;T5MVpyyvub{$X}C|99?^7&Fb=no{wipQuV93a(W96mhWl^?wfXS+ zHO~tA+KqcP@njEW{JU^F9{+u~Cwcq_aSI)3;QxVJXiwu81vA3C@cNTHeo;Q-^^5W% zFTD7@;i>p#?`zUa=@%}_ZUnv>4WK-aAhyCOo-k;_d{R>$wI{@08@M zZ4vdZZV7X(ZsN$k!sI2gW)A+_`7V5%{%J3Bc}s`)ZeoL=C|0#YQ0hrP-QlNYaAf#d z{@>~G_bBBQ#`Pzmi+>C)EI(;4+2s)nw8BFw z(3GfOE4=W3p6|Vo;N3_C268N|rkf~}O?EwN0ea1JWkK^|GpTIBQT7REz zJ&FAk=4p($pTYbDBSTAy`D{P`Pw~sQ+ll)e_VXBt`vOMdzK9WKlEmdvvp)WxB#R06Zxn$h8*ol?v>=#NM7b7_t)hA24**A59UqGZ!mi?hKV5k*f0lZ6NH1I`?`a8a7tSU;w;(E4P=3>w@8bR|=5LtA zgv;;0J>l=;{s40jqa|787)r6>+|vrhvD2yvMqnL`i>fbs&5LSiD{tVP5*SCg66+o}SFt6f z3do43+;3vbH)B8T`uU_16>}VaGBR+BqMq zZQywV(SB3vYQI661)ZIZG7avebgRkZ7L3rIhW0uNrFikUcMwl_ki5YgFZ&4GD3eEx z#fr1q(L#mL<8d6@b|944*{xhllsb(Cu~t!s8*5zNvblT9BA!S9cx64ZL*3Q_^%$I5 zKs>7}$|FhJ^vr17oJ}-rApbF*?_+T%gj`*LZ%#A1+rfSY$5uGG(o;JR=$;C{qeoH% zTY4-JU+n=dd!K;G|~B3B!FI_1ca+ah|c zOz7ro-C|84uKZ-4DEeP6A2#Hb6&1}WSzB7xP~6m16f12kD~^?yme$vo6ciVgmKV(^ zo>5*>T9jXqhsLtbdX$i%BC5T?NcT{FnH#VESKkLq4j0tvinTW7wsh69VehP6D@W&~ zl_lz+STLuW_=o6FY2URBQzcKvX0C%;ad53Jl^#nUbMXRY(@gIC+>&xte$_})eCx8m zXhloBF|OuzF@E{Um_LYH#<&-&M&3g(32-bhuCmSkhU0G+`pOx!L zH4k?_rT}y7H9=lYkLaTwz=EOfqy~ba22pDfuQvWsuD?>=Zm5v7c{-$V_OT3NG@h`- z?%tB)YOIEKD=5j;GT-nyl=Oxg(aZmquCSF{VUQVR{3qc~vgYpo6Rmr5aJ~}QS*Z_# z5e?KQo@M1SS{vc|j2UH@8O88AK(a|LzS~RDpRzzt! zy9EDs);Gg&Kx+jjy1X*bc+8rHtu+?~Qx67idZBt)PjL=rp$yAmUvRYib7zH@OW4m$N=?y<~O zS)OzB3oarho!^&7#=tuq$!u~JKF@XvoatJ|&iyjYDGa=?%PuHK2C4Dq;a2<#H@pD9 zbeahlr0<0<>la?$&o3xL7{u-rMZ#%w;`WyiXmZi&11&5v3|rF9-;8X8-20R9=Sp#9 z6E>JIQ;rL8tHs@YuPbY&bA~HNXq^hIl(`;T`l|t3*kUI9UHVOa+xRYQw0b9Nt*8~t z-<+fK6~P(qIk$IDRpr%)Ts|rGu70ou)`8ry1H(JllTH=sEal2+zZV#qT6m#M6R1hi z3Pq|l$aczF;2A3maSNsG{kDj2@_^ZK9=OH0c^M~GjeR`k1kACFDRnU#8paGK9)(OEJqZHJFnyW|N{3`$uaMJsEiU$-G$2pHmO&7m@u;5E1$@{tWyR@h=B{1?CjY zr(UPpjXi>!&CyEsKX}EEJnv<2$ZdDyzXbm%{4OEs%yMQ5$*6Y~vmEPA;>p%`7q*N& z6HhdB%XnK!*;ips#ng%971u}K0anIdw!@!)>hXAhZ_+NtR`1Q!CH$j-lW}RnkEJ~{ z$`CrWU`C-r8oa!uUo!%;L)>wm(ZRE24dhozzN@hJgYu-0R#OkbepJs|gZm83nVxU8 zxEnDNE+&S%39}AkRIsc?-wz^rjRGe>skaCQ%Fi3OnQ*Va1-}_@N3ki6GN+`u*i=zWpxu!Q*F4iKmk^tY`>T*S(e8D?+shCZmIwNy!5@TVjo7yF&7+4RtK@ zX4b=pv~Zp9R0V$}Hn1XEih#GM%534aBQD=d$&fv+a3HYs(@wF?&0qw!;?{oBDJ8y1 zZzYW?0yd1=>=c8ahf!~0;71P+#rI+$} z!d@}P_{Vr!qA_+5@lF364L&%)*pgp`Q_-iNHpEOc zd|9t*+FQ_sqmXH(tBqy$;qloXLXe`vT{k*JVpF?rusYI{bmTCx2=nJhexP5_M&+Ok z1N8s`gGsL!?rxEZ{|(}aK;k{vY1sYqRI$n8CBkJ56;0-X7u+*MW*w^jl&%srg&rrBe#=ZO;^*1rL0ay8wt!2hkgtjtcJ^?@X;DwJ_$xjZJkuK2OCXdJ1 zMlSMAu=y%tOY6BCLTy2n>;y(yBTBgBTFdMdTfJ+nhKQh)gtknCxRtU{xGCLogZx?I zX8}JE1F_J^qc%LM3A*hQjle*L!ifD_v1?0Lp6vCcEj{xwj}f||E6+`lQ81DCLWK!+ z@HPW1CxncYyt5`KhRC`dmr;5>I}I6Q1k<;P|sws0HWs z#BxPs7$iK|S-xWKiiNc&&Ru?j!z&~wpR$yDhQ}?Fs|4~6Y`r)H_d4Cp8;*HPMsF-Q*$IWC})$*3(DaE8yf?me|e>EKanG^)7J2GBfZqaEm_yA_OuI zW{Fga?7rk}JXmfMLm7%%G4X`mA}k;E2CT_PWkG8aRnl8S9Krr3PAhI%*^U2f+=9tO zMEpGJEptW8XK{ZH(~I$b--`cVWsJn{@uAc?uc@a^=_O-CJxdvD$nzxnLRQaXPMG$L{$Du88Un_H+^G_B}iYS22ylOq|{a`KaTDLBpeEBg6o_47C37mC-wci}-g1jyR*|Y{lPhOuO`V_ZfxQ8@>}pNg_uwAy@!yME7;UECkAm8ar`1lp zL6}dkQ#a)clHHx8$E?&z=Bx2bJ;YyIdvg3+VLzDD@e59?Yueadp|_lMT}G)W_wC>$ z7*Q*^&>^S6^*os=z>AdP6L@HK#P^PE8Ox>&)wl(R8o%tsM|%9ySF(C{^t5deQMz+- z&dWEj^5&SdHOEXxC5C6>6%bFxnei9n2W7?mf;%+MJ-T!&z{Q;v6>?*~wx_$PjMZrt z8n#$_48oPmiAw0JK(Q;b)w|}(i7p^f6s~T*G$&_R!tvOFEqL=5Y#CcmVhe6IXZOb89o3N{X9`3YD~9PeEZBSNM4dv8SM2a3QdHPdP|{LHLFJfZ zZF@V&+obmh>3REPEDNHyeJ0?Sb~f-6@jLj>aj61m6?Oi{@fcE%vBvYxG5i_m?(X`{ z=Xv5@L|p0bIa8o&Dzo9KqGH>rs5qyqxn*Mm3TQb|so=tMYRhtRW;>=_FM&&>T+;gIIL>)ov4I=d+7&ye0&YyA{Lj$1s{MFT zWMl59H``d}6-~1=Rj)zyltuC}{$|`V-(-!N`|NellXnhr@JnCQEb3=$s?ul9Y0AEC zIbFI$pS3R9*gdzABPiyV8f)ykSPW1q(`T-2BO#N&h)W9YJV%L!_U*EG!VBXYNL3~& zn;0pNF{Zq-zKZdN8+fu(-@Rc{H%Y_$P2kE?GOT%+*_c$!OiVgPzD>eR!3=W!McCso z*_h#&WQ@RxDZz}#Y^QxA?zepG(U=s>1!Qi@cOmYJFc)LI-!H*$=(WT#5_jTi^=mtE z4vt~}Q2uiV==oWPE$dr|ib}iGGp$AUle$aCAp+F;$DNC+vJh3RjWQ<>FAKPpQMRAF zWLMZoUNWD|dUG_pXQ{9Jr0s>9c6c7LUsgles!7jKV@BT4k~&TG;QmSxAa=4~t4=*U ziNwhp)VTW$puUBsB6yQg5ALXREbA`vlfB1}v8DcB!IpA<6v zjCBYj%bA4-O5b2SB9uYXJVQ$g@!OXy60ihZJ_Ce5%rIGE*U3{KRL^l$2q-AE=nS2(2q8u%6RJR(5o?if{1lwZuEaV2gN%gVXZpbWqL@$y53}h7mlFzd1iY zzaYObzbL;re@1>uerbMLet7|s-UWpPMFqtLGYU!yN(;&g$_w)g3knMhiwcViXB3tc zmKK&3mKWt06%-W~6%`d1%_u45#P zB2qGAM#+rQ8D)r;DJdx}DJv;2%`Yt|Ei5f6EiRo=T2fkCT2@+K zmS0v-R#;Y4R$MlttfZ{8tgNiOoFbN!eK|>&6Rn(2hj;BXVJSla6+rZvdjHnNv(o0K z&91|JJ>~|?5t~kP;H`s0blc^Ew`5I_G;pePuD~6qhxle-&jwKFd*k1VUvOtu9HqxQ zNj=e*2XC{XSuVc9nI5X=hR`*_r_l2prU9BF^c?D=%R*K|Mb(RhuVsfq_4H>K7 z!X6(_Lr&Xu3a|5B_+}*eMfh}5oHbN+&)x6zJ zRwtvdndaVeW4&c#&qg_aK3m3KK5+{^DsE4Qq}C@|D{*A6sHLLas=D=LPayA4D|Vf} zZ!gCI=2K{^ufW8COT@`|eIr zK;6IhkXk0rG~ygK$5`LIJfQ1=las!AEJ%VEy?zPvB zHN+8K-Fj@nGi}&1&rBMUr?8gm)h^XBVsQvdDjhY@bf|4{IO^t#67-)cktxr1(waM~WPfHmPNcRsMI4EhTJuEQX9^oGu9%YaAjT`Ft zr~7k~bM1V8fv?cM&G${;w*q%W-uHbF{D<$K{zFOM-n`|~FW!{D>eNdwyJGaO(gvKc z=DFwh{?-blrm4`1nF|+HAAe?JY}=QwyW#2Qo=?q~%BSj8tJj=a+Zg-em%mAr z$De*~(5&ENk1&qKW%KlAH1(#Ey5j~-Kd-eTqO0`jou4|J>GII&03ng;#ue`MRE`o_^uQSO4>^e;%@&+VSVV z5jcNAWKLxM}gqr$7gzR<9gn!tR2j^7Ssga)Kk1jbCNbv6dpPwIUtc>dk~k)iYd z;Xf@rG--I!;FQ5B>qF7d$k1uw>A^+O>_AGu_7@~)2S$dH{k?Y*lvi+~zjtS((m%jo z87_-V51xN0V|XMlBgdaPAag+PWr6dr9+5oc;wyuB!I@!S+VG^_hsSrP^!{RGO0f4( zu=kCW|GL3nnzVJz;NJTqy*~*?htKp!LuHXgk(5w(@>u`rfzy(DKR$iALSpAYK3f@%K3ufurCrx@3a`c_}x%Asbtpdm4A8R z#lYapPvI^~A#J8s^2+wI?e;GxGt z$tgp|RLog;(yg~W`_t{=5hKS>nmy;O{eM36_!9wV!lcPrMP(I>k6%)=9Bmeiy}E{2 z(}u3i=Y8%AJHK_;-H*QTox9rFAO7l@*SM9m>!unbmZjGgNG$8C4&X2Bf`eVwp5%G6 zr-fz)qoI>Rb}-!^?7ejD*u{}(@2zK!Uzi*Xr4FhHMN6^+!+O78*|{)Qs~Hyx^}akk zI6Kqs$nlR1__kJ!%cuz2TVI%V{_lGKK6ObT8t{ESW5JSHy+5i9*@07nql$f7)3O7N zDJ!GB-zgiDnjJ`DMud8={rsze41cQstUzsu`86OVP)6mlBIB2CU6C?|vXn&908I+_ z{$x^gTj)b^xQol>PES2(oP+4bg%E06PDf+(iq0*vm#%KpyEiXAd?U1MjciLzAn4s2 z{td#H#?~1L$eQ*pPy)t+CZ!u!VA zL7X44QK}wj`8E!DmcDz>h~_%bImU<`{A_*?y|3&@ZI|B4t{U$_0~gMZ?In4al@^@ z*mI-x#@3s!c(eZ27xvbFbN5?&zG=Ok`K|nSGVg?YanJ5s$KP9V-@JQodhYyt_x#bf z%X)9#uCed0-Nk9lt`i2`yzA}>KgJBcZ|=y@$UHl02khW5dz@_rQqqE9Xwa4Rw4m+t z1#DZPE!!S!FSjp^+-gtu*`cXZ(g5-C&j$Ag#v}*J>~LC>9SKAN{;1z)r{|}}hG!-b zJviJqXwZmoa&WjE%9s{S@rOf8>~z~77?3*1jzDA%waLyO@QYj014G)u6dxt>+o6CC zmz;coAU;wIQ>F|My`2O)mDs@h#qIOk0|G+=#53tih)S1|;7+yEDZC#fOc5!6d?E7N zd<@xHsiZQ@PWMN!iD(1n3ycm>DES_h)O1M5X9rUKDFQ#$r@q;CFc1z74e@25e>i2c zec=dAXGaG5QY(VtkX7OAGUL7hb~*0(lhV^y`a*uomtl_#p5RXo4^AEeN|18-Qi^?p(&*RudX*e! zrv#FQjr9d(oh%t0nByBcb=$OYYK&azK&UZk0Db{GneGb)?2M_1 zaQrqz`={s{mWA!~VM$?9^8R!3Y|B3)DID|#11m#*`*b@HoNk|);p9WUR$23NeU?8x z>KmLFjQBq@CCRtWR~1yPJAAO6IlMS!fo*3K&Gtt#gA-E6_>1h60d{(NG-#J5r41bB zUnqqd?)Rnp0?8rj6jCLaZl{IL8Dhy&4zGT_TFO(X5Iv>FdTXXNu*z4GmC_xwFPg}_ zNj}Z5V*C6PQtXlRs?Q$aOB;XA!WrCfD#&wEW&IlKn;3}L!D%-RbeFJ{WZGLst!vM> z)Or@Or`bsh8CZ6$__w#P^Ae2?eR>9 zz-%?XC{r|CK8&&M&dK=Pk(m(;Uq6qW1B3lz=gBO+zr+_F5gI>7D4LliKKr;)zO*6X z@0YKu8ppI@jQH%aU=OD284+KuPlkbSRFN;5u{dZCthSQu92q+WW10PF)zTK(^cM4t zKfd9NIeQX@d2S6$%CM*U{q6QLtEoNXF{^%nl_A>s$RW- zQnnOd8at9{NfxMrR4f)z<}u4C;%jOVjRtH4t&SrrDPq7*p>$z;F7qjZJ(_&!aX*_A z-w1mIII*vZSS+zGhauY}^`Ks9qv3Sh8aptXZAn-LKdt%r%mpA35UM>2zx)>@%a2u8 zENMFZUHcS>pf`dA03jk~R1i@jMp}q1j$?(m_AL83%_T+Z($Vrl-{y<(f{dTCD8DcS zKObngPeYe-;jQyZ4*ZQYZa^s=8l7HBH zO6+K6>BQ7MrFW#&m*)-NQJz1#e(_(%?pRV)Twilw{f?8CwP&7u!$Uhxww|wF9(!@e za_g6wE3DmnPWjH8^{e*p%{=XeeLGHbthY})V1Mp(s{__;4)vk2ZF_NY{*ZJ#2DMM) z2PW8KN3Bk-NJ_GY2NX6BPWM+vrVY0p5TVUlLN7#pW9$lv&Lm2*qrQ>!nV>$_0&wx7CmD&@N>?VaJeZCRCfImHuO8G)`KW*q#T5iBrQ`$i5-wI@eL zBg`+ORi95V=QM`?+tO?-I97VP2p!vR+E)cF#%M5*9 zrSG;|205X(hi(ro8nHXn;p`6AP28QdX^NBlkL>Nq;r!jnUny`>oLhIN8D0^WW1k}IjAme&(NB|^}}k0?isOrc>Tzl(V3%a#_bqoO{^bX zw|>v)-nPs!kNzxk>~pWwkFDC1Iqtxl_2Ulg-7)UTeS5}zW`Cw*y|cqP@WGzU_dh5c zpC8@KXyCeb^up*9Q7gJB8VI%WcT?0CYD?{kM#Af&&EfE%jnO*3EgEdGErBub|8q3N z0%JvclW)PbE4q^Sp(x`k6pB7kxQap5}fh3MFbJ-~@h8DK>pidvy- zqm#*RDDhy~M6H~Z@(iCfYGPmvqwm7tGf^utB0MGO1gNI%KGx#gs-$AySpNyZ=E(5K z)UXxGk6Pnyj7|%5gfAT18?B695e*OiK$YK$Hbt9KtU+f)tueom(ngzxSnZZ7p&jN> zk&RL72<{i^oRfN^)=ZfeOLFMfRKCV><7 Date: Wed, 30 Aug 2023 14:32:19 -0700 Subject: [PATCH 16/22] remove hyperspace --- examples/hyperspace/hyperspace_test.go | 402 --------------------- relayer/hyperspace/hyperspace_commander.go | 392 -------------------- relayer/hyperspace/hyperspace_config.go | 144 -------- relayer/hyperspace/hyperspace_relayer.go | 206 ----------- relayer/hyperspace/hyperspace_test.go | 27 -- relayer/hyperspace/wallet.go | 44 --- relayerfactory.go | 9 - 7 files changed, 1224 deletions(-) delete mode 100644 examples/hyperspace/hyperspace_test.go delete mode 100644 relayer/hyperspace/hyperspace_commander.go delete mode 100644 relayer/hyperspace/hyperspace_config.go delete mode 100644 relayer/hyperspace/hyperspace_relayer.go delete mode 100644 relayer/hyperspace/hyperspace_test.go delete mode 100644 relayer/hyperspace/wallet.go diff --git a/examples/hyperspace/hyperspace_test.go b/examples/hyperspace/hyperspace_test.go deleted file mode 100644 index 7e9a4b7e4..000000000 --- a/examples/hyperspace/hyperspace_test.go +++ /dev/null @@ -1,402 +0,0 @@ -package hyperspace_test - -import ( - "context" - "crypto/sha256" - "encoding/hex" - "encoding/json" - "fmt" - "testing" - "time" - - "cosmossdk.io/math" - transfertypes "github.com/cosmos/ibc-go/v7/modules/apps/transfer/types" - "github.com/icza/dyno" - "github.com/strangelove-ventures/interchaintest/v7" - "github.com/strangelove-ventures/interchaintest/v7/chain/cosmos" - "github.com/strangelove-ventures/interchaintest/v7/chain/polkadot" - "github.com/strangelove-ventures/interchaintest/v7/ibc" - "github.com/strangelove-ventures/interchaintest/v7/relayer" - "github.com/strangelove-ventures/interchaintest/v7/testreporter" - "github.com/strangelove-ventures/interchaintest/v7/testutil" - "github.com/stretchr/testify/require" - "go.uber.org/zap/zaptest" -) - -// TestHyperspace setup -// Must build local docker images of hyperspace, parachain, and polkadot -// ###### hyperspace ###### -// * Repo: ComposableFi/centauri -// * Branch: vmarkushin/wasm -// * Commit: 00ee58381df66b035be75721e6e16c2bbf82f076 -// * Build local Hyperspace docker from centauri repo: -// amd64: "docker build -f scripts/hyperspace.Dockerfile -t hyperspace:local ." -// arm64: "docker build -f scripts/hyperspace.aarch64.Dockerfile -t hyperspace:latest --platform=linux/arm64/v8 . -// ###### parachain ###### -// * Repo: ComposableFi/centauri -// * Branch: vmarkushin/wasm -// * Commit: 00ee58381df66b035be75721e6e16c2bbf82f076 -// * Build local parachain docker from centauri repo: -// ./scripts/build-parachain-node-docker.sh (you can change the script to compile for ARM arch if needed) -// ###### polkadot ###### -// * Repo: paritytech/polkadot -// * Branch: release-v0.9.36 -// * Commit: dc25abc712e42b9b51d87ad1168e453a42b5f0bc -// * Build local polkadot docker from polkadot repo -// amd64: docker build -f scripts/ci/dockerfiles/polkadot/polkadot_builder.Dockerfile . -t polkadot-node:local -// arm64: docker build --platform linux/arm64 -f scripts/ci/dockerfiles/polkadot/polkadot_builder.aarch64.Dockerfile . -t polkadot-node:local - -const ( - heightDelta = uint64(20) - votingPeriod = "30s" - maxDepositPeriod = "10s" - aliceAddress = "5yNZjX24n2eg7W6EVamaTXNQbWCwchhThEaSWB7V3GRjtHeL" -) - -// TestHyperspace features -// * sets up a Polkadot parachain -// * sets up a Cosmos chain -// * sets up the Hyperspace relayer -// * Funds a user wallet on both chains -// * Pushes a wasm client contract to the Cosmos chain -// * create client, connection, and channel in relayer -// * start relayer -// * send transfer over ibc -func TestHyperspace(t *testing.T) { - if testing.Short() { - t.Skip() - } - - t.Parallel() - - client, network := interchaintest.DockerSetup(t) - - rep := testreporter.NewNopReporter() - eRep := rep.RelayerExecReporter(t) - - ctx := context.Background() - - nv := 5 // Number of validators - nf := 3 // Number of full nodes - - consensusOverrides := make(testutil.Toml) - blockTime := 5 // seconds, parachain is 12 second blocks, don't make relayer work harder than needed - blockT := (time.Duration(blockTime) * time.Second).String() - consensusOverrides["timeout_commit"] = blockT - consensusOverrides["timeout_propose"] = blockT - - configTomlOverrides := make(testutil.Toml) - configTomlOverrides["consensus"] = consensusOverrides - - configFileOverrides := make(map[string]any) - configFileOverrides["config/config.toml"] = configTomlOverrides - - // Get both chains - cf := interchaintest.NewBuiltinChainFactory(zaptest.NewLogger(t), []*interchaintest.ChainSpec{ - { - ChainName: "composable", // Set ChainName so that a suffix with a "dash" is not appended (required for hyperspace) - ChainConfig: ibc.ChainConfig{ - Type: "polkadot", - Name: "composable", - ChainID: "rococo-local", - Images: []ibc.DockerImage{ - { - Repository: "polkadot-node", - Version: "local", - UidGid: "1000:1000", - }, - { - Repository: "parachain-node", - Version: "latest", - //UidGid: "1025:1025", - }, - }, - Bin: "polkadot", - Bech32Prefix: "composable", - Denom: "uDOT", - GasPrices: "", - GasAdjustment: 0, - TrustingPeriod: "", - CoinType: "354", - }, - NumValidators: &nv, - NumFullNodes: &nf, - }, - { - ChainName: "simd", // Set chain name so that a suffix with a "dash" is not appended (required for hyperspace) - ChainConfig: ibc.ChainConfig{ - Type: "cosmos", - Name: "simd", - ChainID: "simd", - Images: []ibc.DockerImage{ - { - Repository: "ghcr.io/strangelove-ventures/heighliner/ibc-go-simd", - Version: "feat-wasm-clients", - UidGid: "1025:1025", - }, - }, - Bin: "simd", - Bech32Prefix: "cosmos", - Denom: "stake", - GasPrices: "0.00stake", - GasAdjustment: 1.3, - TrustingPeriod: "504h", - CoinType: "118", - //EncodingConfig: WasmClientEncoding(), - NoHostMount: true, - ConfigFileOverrides: configFileOverrides, - ModifyGenesis: modifyGenesisShortProposals(votingPeriod, maxDepositPeriod), - }, - }, - }) - - chains, err := cf.Chains(t.Name()) - require.NoError(t, err) - - polkadotChain := chains[0].(*polkadot.PolkadotChain) - cosmosChain := chains[1].(*cosmos.CosmosChain) - - // Get a relayer instance - r := interchaintest.NewBuiltinRelayerFactory( - ibc.Hyperspace, - zaptest.NewLogger(t), - // These two fields are used to pass in a custom Docker image built locally - relayer.ImagePull(false), - relayer.CustomDockerImage("hyperspace", "local", "1000:1000"), - ).Build(t, client, network) - - // Build the network; spin up the chains and configure the relayer - const pathName = "composable-simd" - const relayerName = "hyperspace" - - ic := interchaintest.NewInterchain(). - AddChain(polkadotChain). - AddChain(cosmosChain). - AddRelayer(r, relayerName). - AddLink(interchaintest.InterchainLink{ - Chain1: polkadotChain, - Chain2: cosmosChain, - Relayer: r, - Path: pathName, - }) - - require.NoError(t, ic.Build(ctx, eRep, interchaintest.InterchainBuildOptions{ - TestName: t.Name(), - Client: client, - NetworkID: network, - BlockDatabaseFile: interchaintest.DefaultBlockDatabaseFilepath(), - SkipPathCreation: true, // Skip path creation, so we can have granular control over the process - })) - fmt.Println("Interchain built") - - t.Cleanup(func() { - _ = ic.Close() - }) - - // Create a proposal, vote, and wait for it to pass. Return code hash for relayer. - codeHash := pushWasmContractViaGov(t, ctx, cosmosChain) - - // Set client contract hash in cosmos chain config - err = r.SetClientContractHash(ctx, eRep, cosmosChain.Config(), codeHash) - require.NoError(t, err) - - // Ensure parachain has started (starts 1 session/epoch after relay chain) - err = testutil.WaitForBlocks(ctx, 1, polkadotChain) - require.NoError(t, err, "polkadot chain failed to make blocks") - - // Fund users on both cosmos and parachain, mints Asset 1 for Alice - fundAmount := int64(12_333_000_000_000) - polkadotUser, cosmosUser := fundUsers(t, ctx, fundAmount, polkadotChain, cosmosChain) - - err = r.GeneratePath(ctx, eRep, cosmosChain.Config().ChainID, polkadotChain.Config().ChainID, pathName) - require.NoError(t, err) - - // Create new clients - err = r.CreateClients(ctx, eRep, pathName, ibc.DefaultClientOpts()) - require.NoError(t, err) - err = testutil.WaitForBlocks(ctx, 1, cosmosChain, polkadotChain) // these 1 block waits seem to be needed to reduce flakiness - require.NoError(t, err) - - // Create a new connection - err = r.CreateConnections(ctx, eRep, pathName) - require.NoError(t, err) - err = testutil.WaitForBlocks(ctx, 1, cosmosChain, polkadotChain) - require.NoError(t, err) - - // Create a new channel & get channels from each chain - err = r.CreateChannel(ctx, eRep, pathName, ibc.DefaultChannelOpts()) - require.NoError(t, err) - err = testutil.WaitForBlocks(ctx, 1, cosmosChain, polkadotChain) - require.NoError(t, err) - - // Start relayer - r.StartRelayer(ctx, eRep, pathName) - require.NoError(t, err) - t.Cleanup(func() { - err = r.StopRelayer(ctx, eRep) - if err != nil { - panic(err) - } - }) - - // Send 1.77 stake from cosmosUser to parachainUser - amountToSend := int64(1_770_000) - transfer := ibc.WalletAmount{ - Address: polkadotUser.FormattedAddress(), - Denom: cosmosChain.Config().Denom, - Amount: math.NewInt(amountToSend), - } - tx, err := cosmosChain.SendIBCTransfer(ctx, "channel-0", cosmosUser.KeyName(), transfer, ibc.TransferOptions{}) - require.NoError(t, err) - require.NoError(t, tx.Validate()) // test source wallet has decreased funds - err = testutil.WaitForBlocks(ctx, 5, cosmosChain, polkadotChain) - require.NoError(t, err) - - // Verify tokens arrived on parachain user - parachainUserStake, err := polkadotChain.GetIbcBalance(ctx, string(polkadotUser.Address()), 2) - require.NoError(t, err) - require.Equal(t, amountToSend, parachainUserStake.Amount.Int64(), "parachain user's stake amount not expected after first tx") - - // Send 1.16 stake from parachainUser to cosmosUser - amountToReflect := int64(1_160_000) - reflectTransfer := ibc.WalletAmount{ - Address: cosmosUser.FormattedAddress(), - Denom: "2", // stake - Amount: math.NewInt(amountToReflect), - } - _, err = polkadotChain.SendIBCTransfer(ctx, "channel-0", polkadotUser.KeyName(), reflectTransfer, ibc.TransferOptions{}) - require.NoError(t, err) - - // Send 1.88 "UNIT" from Alice to cosmosUser - amountUnits := math.NewInt(1_880_000_000_000) - unitTransfer := ibc.WalletAmount{ - Address: cosmosUser.FormattedAddress(), - Denom: "1", // UNIT - Amount: amountUnits, - } - _, err = polkadotChain.SendIBCTransfer(ctx, "channel-0", "alice", unitTransfer, ibc.TransferOptions{}) - require.NoError(t, err) - - // Wait for MsgRecvPacket on cosmos chain - finalStakeBal := math.NewInt(fundAmount - amountToSend + amountToReflect) - err = cosmos.PollForBalance(ctx, cosmosChain, 20, ibc.WalletAmount{ - Address: cosmosUser.FormattedAddress(), - Denom: cosmosChain.Config().Denom, - Amount: finalStakeBal, - }) - require.NoError(t, err) - - // Verify cosmos user's final "stake" balance - cosmosUserStakeBal, err := cosmosChain.GetBalance(ctx, cosmosUser.FormattedAddress(), cosmosChain.Config().Denom) - require.NoError(t, err) - require.True(t, cosmosUserStakeBal.Equal(finalStakeBal)) - - // Verify cosmos user's final "unit" balance - unitDenomTrace := transfertypes.ParseDenomTrace(transfertypes.GetPrefixedDenom("transfer", "channel-0", "UNIT")) - cosmosUserUnitBal, err := cosmosChain.GetBalance(ctx, cosmosUser.FormattedAddress(), unitDenomTrace.IBCDenom()) - require.NoError(t, err) - require.True(t, cosmosUserUnitBal.Equal(amountUnits)) - - // Verify parachain user's final "unit" balance (will be less than expected due gas costs for stake tx) - parachainUserUnits, err := polkadotChain.GetIbcBalance(ctx, string(polkadotUser.Address()), 1) - require.NoError(t, err) - require.True(t, parachainUserUnits.Amount.LTE(math.NewInt(fundAmount)), "parachain user's final unit amount not expected") - - // Verify parachain user's final "stake" balance - parachainUserStake, err = polkadotChain.GetIbcBalance(ctx, string(polkadotUser.Address()), 2) - require.NoError(t, err) - require.True(t, parachainUserStake.Equal(math.NewInt(amountToSend-amountToReflect)), "parachain user's final stake amount not expected") -} - -type GetCodeQueryMsgResponse struct { - Code []byte `json:"code"` -} - -func pushWasmContractViaGov(t *testing.T, ctx context.Context, cosmosChain *cosmos.CosmosChain) string { - // Set up cosmos user for pushing new wasm code msg via governance - fundAmountForGov := int64(10_000_000_000) - contractUsers := interchaintest.GetAndFundTestUsers(t, ctx, "default", int64(fundAmountForGov), cosmosChain) - contractUser := contractUsers[0] - - contractUserBalInitial, err := cosmosChain.GetBalance(ctx, contractUser.FormattedAddress(), cosmosChain.Config().Denom) - require.NoError(t, err) - require.True(t, contractUserBalInitial.Equal(math.NewInt(fundAmountForGov))) - - proposal := cosmos.TxProposalv1{ - Metadata: "none", - Deposit: "500000000" + cosmosChain.Config().Denom, // greater than min deposit - Title: "Grandpa Contract", - Summary: "new grandpa contract", - } - - proposalTx, codeHash, err := cosmosChain.PushNewWasmClientProposal(ctx, contractUser.KeyName(), "../polkadot/ics10_grandpa_cw.wasm", proposal) - require.NoError(t, err, "error submitting new wasm contract proposal tx") - - height, err := cosmosChain.Height(ctx) - require.NoError(t, err, "error fetching height before submit upgrade proposal") - - err = cosmosChain.VoteOnProposalAllValidators(ctx, proposalTx.ProposalID, cosmos.ProposalVoteYes) - require.NoError(t, err, "failed to submit votes") - - _, err = cosmos.PollForProposalStatus(ctx, cosmosChain, height, height+heightDelta, proposalTx.ProposalID, cosmos.ProposalStatusPassed) - require.NoError(t, err, "proposal status did not change to passed in expected number of blocks") - - err = testutil.WaitForBlocks(ctx, 1, cosmosChain) - require.NoError(t, err) - - var getCodeQueryMsgRsp GetCodeQueryMsgResponse - err = cosmosChain.QueryClientContractCode(ctx, codeHash, &getCodeQueryMsgRsp) - codeHashByte32 := sha256.Sum256(getCodeQueryMsgRsp.Code) - codeHash2 := hex.EncodeToString(codeHashByte32[:]) - require.NoError(t, err) - require.NotEmpty(t, getCodeQueryMsgRsp.Code) - require.Equal(t, codeHash, codeHash2) - - return codeHash -} - -func fundUsers(t *testing.T, ctx context.Context, fundAmount int64, polkadotChain ibc.Chain, cosmosChain ibc.Chain) (ibc.Wallet, ibc.Wallet) { - users := interchaintest.GetAndFundTestUsers(t, ctx, "user", fundAmount, polkadotChain, cosmosChain) - polkadotUser, cosmosUser := users[0], users[1] - err := testutil.WaitForBlocks(ctx, 2, polkadotChain, cosmosChain) // Only waiting 1 block is flaky for parachain - require.NoError(t, err, "cosmos or polkadot chain failed to make blocks") - - // Check balances are correct - amount := math.NewInt(fundAmount) - polkadotUserAmount, err := polkadotChain.GetBalance(ctx, polkadotUser.FormattedAddress(), polkadotChain.Config().Denom) - require.NoError(t, err) - require.True(t, polkadotUserAmount.Equal(amount), "Initial polkadot user amount not expected") - - parachainUserAmount, err := polkadotChain.GetBalance(ctx, polkadotUser.FormattedAddress(), "") - require.NoError(t, err) - require.True(t, parachainUserAmount.Equal(amount), "Initial parachain user amount not expected") - - cosmosUserAmount, err := cosmosChain.GetBalance(ctx, cosmosUser.FormattedAddress(), cosmosChain.Config().Denom) - require.NoError(t, err) - require.True(t, cosmosUserAmount.Equal(amount), "Initial cosmos user amount not expected") - - return polkadotUser, cosmosUser -} - -func modifyGenesisShortProposals(votingPeriod string, maxDepositPeriod string) func(ibc.ChainConfig, []byte) ([]byte, error) { - return func(chainConfig ibc.ChainConfig, genbz []byte) ([]byte, error) { - g := make(map[string]interface{}) - if err := json.Unmarshal(genbz, &g); err != nil { - return nil, fmt.Errorf("failed to unmarshal genesis file: %w", err) - } - if err := dyno.Set(g, votingPeriod, "app_state", "gov", "params", "voting_period"); err != nil { - return nil, fmt.Errorf("failed to set voting period in genesis json: %w", err) - } - if err := dyno.Set(g, maxDepositPeriod, "app_state", "gov", "params", "max_deposit_period"); err != nil { - return nil, fmt.Errorf("failed to set max deposit period in genesis json: %w", err) - } - if err := dyno.Set(g, chainConfig.Denom, "app_state", "gov", "params", "min_deposit", 0, "denom"); err != nil { - return nil, fmt.Errorf("failed to set min deposit in genesis json: %w", err) - } - out, err := json.Marshal(g) - if err != nil { - return nil, fmt.Errorf("failed to marshal genesis bytes to json: %w", err) - } - return out, nil - } -} diff --git a/relayer/hyperspace/hyperspace_commander.go b/relayer/hyperspace/hyperspace_commander.go deleted file mode 100644 index 4576379ac..000000000 --- a/relayer/hyperspace/hyperspace_commander.go +++ /dev/null @@ -1,392 +0,0 @@ -// Package hyperspace provides an interface to the hyperspace relayer running in a Docker container. -package hyperspace - -import ( - "context" - "fmt" - "path" - - ibcexported "github.com/cosmos/ibc-go/v7/modules/core/03-connection/types" - types23 "github.com/cosmos/ibc-go/v7/modules/core/23-commitment/types" - "github.com/misko9/go-substrate-rpc-client/v4/signature" - "github.com/pelletier/go-toml/v2" - "github.com/strangelove-ventures/interchaintest/v7/chain/polkadot" - "github.com/strangelove-ventures/interchaintest/v7/ibc" - "go.uber.org/zap" -) - -// hyperspaceCommander satisfies relayer.RelayerCommander. -type hyperspaceCommander struct { - log *zap.Logger - paths map[string]*pathConfiguration - extraStartFlags []string -} - -// pathConfiguration represents the concept of a "path" which is implemented at the interchain test level rather -// than the hyperspace level. -type pathConfiguration struct { - chainA, chainB pathChainConfig -} - -// pathChainConfig holds all values that will be required when interacting with a path. -type pathChainConfig struct { - chainID string -} - -func (hyperspaceCommander) Name() string { - return "hyperspace" -} - -func (hyperspaceCommander) DockerUser() string { - return "1000:1000" // docker run -it --rm --entrypoint echo ghcr.io/cosmos/relayer "$(id -u):$(id -g)" -} - -func (c *hyperspaceCommander) AddChainConfiguration(containerFilePath, homeDir string) []string { - fmt.Println("[hyperspace] AddChainConfiguration ", containerFilePath, homeDir) - //c.chainConfigPaths = append(c.chainConfigPaths, containerFilePath) - return []string{ - "hyperspace", - "-h", - } -} - -// Hyperspace doesn't not have this functionality -func (hyperspaceCommander) AddKey(chainID, keyName, coinType, homeDir string) []string { - panic("[AddKey] Do not call me") -} - -func (c *hyperspaceCommander) CreateChannel(pathName string, opts ibc.CreateChannelOptions, homeDir string) []string { - fmt.Println("[hyperspace] CreateChannel", pathName, homeDir) - _, ok := c.paths[pathName] - if !ok { - panic(fmt.Sprintf("path %s not found", pathName)) - } - return []string{ - "hyperspace", - "create-channel", - "--config-a", - configPath(homeDir, c.paths[pathName].chainA.chainID), - "--config-b", - configPath(homeDir, c.paths[pathName].chainB.chainID), - "--config-core", - path.Join(homeDir, "core.config"), - "--delay-period", - "0", - "--port-id", - opts.SourcePortName, - "--order", - "unordered", - "--version", - opts.Version, - } -} - -func (c *hyperspaceCommander) CreateClients(pathName string, opts ibc.CreateClientOptions, homeDir string) []string { - fmt.Println("[hyperspace] CreateClients", pathName, opts, homeDir) - _, ok := c.paths[pathName] - if !ok { - panic(fmt.Sprintf("path %s not found", pathName)) - } - return []string{ - "hyperspace", - "create-clients", - "--config-a", - configPath(homeDir, c.paths[pathName].chainA.chainID), - "--config-b", - configPath(homeDir, c.paths[pathName].chainB.chainID), - "--config-core", - path.Join(homeDir, "core.config"), - "--delay-period", - "0", - "--port-id", - "transfer", - "--order", - "unordered", - } -} - -func (c *hyperspaceCommander) CreateConnections(pathName, homeDir string) []string { - fmt.Println("[hyperspace] CreateConnections", pathName, homeDir) - _, ok := c.paths[pathName] - if !ok { - panic(fmt.Sprintf("path %s not found", pathName)) - } - return []string{ - "hyperspace", - "create-connection", - "--config-a", - configPath(homeDir, c.paths[pathName].chainA.chainID), - "--config-b", - configPath(homeDir, c.paths[pathName].chainB.chainID), - "--config-core", - path.Join(homeDir, "core.config"), - "--delay-period", - "0", - "--port-id", - "transfer", - "--order", - "unordered", - } -} - -// Hyperspace doesn't not have this functionality -func (hyperspaceCommander) FlushAcknowledgements(pathName, channelID, homeDir string) []string { - panic("[FlushAcknowledgements] Do not call me") -} - -// Hyperspace doesn't not have this functionality -func (hyperspaceCommander) FlushPackets(pathName, channelID, homeDir string) []string { - panic("[FlushPackets] Do not call me") -} - -// GeneratePath establishes an in memory path representation. The concept does not exist in hyperspace. -func (c *hyperspaceCommander) GeneratePath(srcChainID, dstChainID, pathName, homeDir string) []string { - if c.paths == nil { - c.paths = map[string]*pathConfiguration{} - } - c.paths[pathName] = &pathConfiguration{ - chainA: pathChainConfig{ - chainID: srcChainID, - }, - chainB: pathChainConfig{ - chainID: dstChainID, - }, - } - return []string{"true"} -} - -// Hyperspace does not have paths, just two configs -func (hyperspaceCommander) UpdatePath(pathName, homeDir string, filter ibc.ChannelFilter) []string { - panic("[UpdatePath] Do not call me") - -} - -// Prints chain config which is populated by hyperspace -// Ideally, there should be a command from hyperspace to get this output -func (hyperspaceCommander) GetChannels(chainID, homeDir string) []string { - fmt.Println("[hyperspace] Get Channels") - configFilePath := path.Join(homeDir, chainID+".config") - return []string{ - "cat", - configFilePath, - } -} - -// Prints chain config which is populated by hyperspace -// Ideally, there should be a command from hyperspace to get this output -func (hyperspaceCommander) GetConnections(chainID, homeDir string) []string { - fmt.Println("[hyperspace] Get Connections") - configFilePath := path.Join(homeDir, chainID+".config") - return []string{ - "cat", - configFilePath, - } -} - -// Prints chain config which is populated by hyperspace -// Ideally, there should be a command from hyperspace to get this output -func (hyperspaceCommander) GetClients(chainID, homeDir string) []string { - fmt.Println("[hyperspace] Get Clients") - configFilePath := path.Join(homeDir, chainID+".config") - return []string{ - "cat", - configFilePath, - } -} - -// Hyperspace does not have link cmd, call create clients, create connection, and create channel -func (hyperspaceCommander) LinkPath(pathName, homeDir string, channelOpts ibc.CreateChannelOptions, clientOpt ibc.CreateClientOptions) []string { - panic("[LinkPath] Do not use me") -} - -// There is no hyperspace call to restore the key, so this can't return an executable. -// HyperspaceRelayer's RestoreKey will restore the key in the chain's config file -func (hyperspaceCommander) RestoreKey(chainID, bech32Prefix, coinType, mnemonic, homeDir string) []string { - panic("[RestoreKey] Do not use me") -} - -// hyperspace can only start 1 path -func (c *hyperspaceCommander) StartRelayer(homeDir string, pathNames ...string) []string { - fmt.Println("[hyperspace] StartRelayer", homeDir, pathNames) - if len(pathNames) != 1 { - panic("Hyperspace's StartRelayer list of paths can only have 1 path") - } - pathName := pathNames[0] - _, ok := c.paths[pathName] - if !ok { - panic(fmt.Sprintf("path %s not found", pathName)) - } - return []string{ - "hyperspace", - "relay", - "--config-a", - configPath(homeDir, c.paths[pathName].chainA.chainID), - "--config-b", - configPath(homeDir, c.paths[pathName].chainB.chainID), - "--config-core", - path.Join(homeDir, "core.config"), - "--delay-period", - "0", - "--port-id", - "transfer", - "--order", - "unordered", - "--version", - "ics20-1", - } -} - -// Hyperspace doesn't not have this functionality -func (hyperspaceCommander) UpdateClients(pathName, homeDir string) []string { - panic("[UpdateClients] Do not use me") -} - -func (hyperspaceCommander) ConfigContent(ctx context.Context, cfg ibc.ChainConfig, keyName, rpcAddr, grpcAddr string) ([]byte, error) { - fmt.Println("[hyperspace] ConfigContent", cfg, keyName, rpcAddr, grpcAddr) - HyperspaceRelayerChainConfig := ChainConfigToHyperspaceRelayerChainConfig(cfg, keyName, rpcAddr, grpcAddr) - bytes, err := toml.Marshal(HyperspaceRelayerChainConfig) - if err != nil { - return nil, err - } - return bytes, nil -} - -func (hyperspaceCommander) DefaultContainerImage() string { - return HyperspaceDefaultContainerImage -} - -func (hyperspaceCommander) DefaultContainerVersion() string { - return HyperspaceDefaultContainerVersion -} - -// There is no hyperspace call to add key, so there is no stdout to parse. -// DockerRelayer's RestoreKey will restore the key in the chain's config file -func (hyperspaceCommander) ParseAddKeyOutput(stdout, stderr string) (ibc.Wallet, error) { - panic("[ParseAddKeyOutput] Do not call me") -} - -// There is no hyperspace call to restore the key, so there is no stdout to parse. -// DockerRelayer's RestoreKey will restore the key in the chain's config file -func (hyperspaceCommander) ParseRestoreKeyOutput(stdout, stderr string) string { - panic("[ParseRestoreKeyOutput] Do not call me") -} - -type ChannelsOutput struct { - Channels [][]string `toml:"channel_whitelist"` -} - -// Parses output of chain config which is populated by hyperspace -// Ideally, there should be a command from hyperspace to get this output -func (hyperspaceCommander) ParseGetChannelsOutput(stdout, stderr string) ([]ibc.ChannelOutput, error) { - var cfg ChannelsOutput - err := toml.Unmarshal([]byte(stdout), &cfg) - if err != nil { - return nil, err - } - - outputs := make([]ibc.ChannelOutput, 0) - for _, channel := range cfg.Channels { - outputs = append(outputs, ibc.ChannelOutput{ - State: "", - Ordering: "", - Counterparty: ibc.ChannelCounterparty{ // TODO: retrieve from hyperspace - PortID: "", - ChannelID: "", - }, - ConnectionHops: []string{}, - Version: "", - PortID: channel[1], - ChannelID: channel[0], - }) - } - return outputs, nil -} - -type ConnectionsOutput struct { - ConnectionID string `toml:"connection_id"` - ClientID string `toml:"client_id"` -} - -// Parses output of chain config which is populated by hyperspace -// Ideally, there should be a command from hyperspace to get this output -// Only supports 1 connection and limited info -func (hyperspaceCommander) ParseGetConnectionsOutput(stdout, stderr string) (ibc.ConnectionOutputs, error) { - var cfg ConnectionsOutput - err := toml.Unmarshal([]byte(stdout), &cfg) - if err != nil { - return nil, err - } - - return ibc.ConnectionOutputs{ - &ibc.ConnectionOutput{ - ID: cfg.ConnectionID, - ClientID: cfg.ClientID, - Versions: []*ibcexported.Version{ - { - Identifier: "", - Features: []string{}, - }, - }, - State: "", - Counterparty: &ibcexported.Counterparty{ - ClientId: "", - ConnectionId: "", - Prefix: types23.MerklePrefix{ - KeyPrefix: []byte{}, - }, - }, - DelayPeriod: "0", - }, - }, nil -} - -type ClientOutput struct { - ChainID string `toml:"chain_id"` - ClientID string `toml:"client_id"` -} - -// Parses output of chain config which is populated by hyperspace -// Ideally, there should be a command from hyperspace to get this output -// Only supports 1 client -func (hyperspaceCommander) ParseGetClientsOutput(stdout, stderr string) (ibc.ClientOutputs, error) { - var cfg ClientOutput - err := toml.Unmarshal([]byte(stdout), &cfg) - if err != nil { - return nil, err - } - - return ibc.ClientOutputs{ - &ibc.ClientOutput{ - ClientID: cfg.ClientID, - ClientState: ibc.ClientState{ - ChainID: cfg.ChainID, - }, - }, - }, nil -} - -func (hyperspaceCommander) Init(homeDir string) []string { - fmt.Println("[hyperspace] Init", homeDir) - // Return hyperspace help to ensure hyperspace binary is accessible - return []string{ - "hyperspace", - "-h", - } -} - -func (hyperspaceCommander) CreateWallet(keyName, address, mnemonic string) ibc.Wallet { - kp, err := signature.KeyringPairFromSecret(mnemonic, polkadot.Ss58Format) - if err != nil { - return NewWallet("", "", "") - } - return NewWallet("", kp.Address, mnemonic) -} - -func (hyperspaceCommander) Flush(pathName, channelID, homeDir string) []string { - panic("flush implemented in hyperspace not the commander") -} - -func configPath(homeDir, chainID string) string { - chainConfigFile := chainID + ".config" - return path.Join(homeDir, chainConfigFile) -} diff --git a/relayer/hyperspace/hyperspace_config.go b/relayer/hyperspace/hyperspace_config.go deleted file mode 100644 index 50f1fcee2..000000000 --- a/relayer/hyperspace/hyperspace_config.go +++ /dev/null @@ -1,144 +0,0 @@ -package hyperspace - -import ( - "fmt" - "strconv" - "strings" - - "github.com/cosmos/cosmos-sdk/crypto/hd" - "github.com/cosmos/cosmos-sdk/crypto/keyring" - "github.com/cosmos/cosmos-sdk/types" - "github.com/strangelove-ventures/interchaintest/v7/chain/polkadot" - "github.com/strangelove-ventures/interchaintest/v7/ibc" - bip32 "github.com/tyler-smith/go-bip32" - bip39 "github.com/tyler-smith/go-bip39" -) - -type HyperspaceRelayerCoreConfig struct { - PrometheusEndpoint string -} - -type HyperspaceRelayerSubstrateChainConfig struct { - Type string `toml:"type"` - Name string `toml:"name"` - ParaID uint32 `toml:"para_id"` - ParachainRPCURL string `toml:"parachain_rpc_url"` - RelayChainRPCURL string `toml:"relay_chain_rpc_url"` - BeefyActivation uint32 `toml:"beefy_activation_block"` - CommitmentPrefix string `toml:"commitment_prefix"` - PrivateKey string `toml:"private_key"` - SS58Version uint8 `toml:"ss58_version"` - FinalityProtocol string `toml:"finality_protocol"` - KeyType string `toml:"key_type"` - ChannelWhitelist []string `toml:"channel_whitelist"` -} - -type KeyEntry struct { - PublicKey string `toml:"public_key"` - PrivateKey string `toml:"private_key"` - Account string `toml:"account"` - Address []byte `toml:"address"` -} - -type HyperspaceRelayerCosmosChainConfig struct { - Type string `toml:"type"` - Name string `toml:"name"` - RPCUrl string `toml:"rpc_url"` - GRPCUrl string `toml:"grpc_url"` - WebsocketUrl string `toml:"websocket_url"` - ChainID string `toml:"chain_id"` - AccountPrefix string `toml:"account_prefix"` - FeeDenom string `toml:"fee_denom"` - FeeAmount string `toml:"fee_amount"` - GasLimit uint64 `toml:"gas_limit"` - StorePrefix string `toml:"store_prefix"` - MaxTxSize uint64 `toml:"max_tx_size"` - WasmCodeId string `toml:"wasm_code_id"` - Keybase KeyEntry `toml:"keybase"` - ChannelWhitelist []string `toml:"channel_whitelist"` -} - -const ( - HyperspaceDefaultContainerImage = "hyperspace" - HyperspaceDefaultContainerVersion = "local" -) - -func GenKeyEntry(bech32Prefix, coinType, mnemonic string) KeyEntry { - coinType64, err := strconv.ParseUint(coinType, 10, 32) - if err != nil { - return KeyEntry{} - } - algo := keyring.SignatureAlgo(hd.Secp256k1) - hdPath := hd.CreateHDPath(uint32(coinType64), 0, 0).String() - - // create master key and derive first key for keyring - derivedPriv, err := algo.Derive()(mnemonic, "", hdPath) - if err != nil { - return KeyEntry{} - } - - privKey := algo.Generate()(derivedPriv) - address := types.AccAddress(privKey.PubKey().Address()) - bech32Addr := types.MustBech32ifyAddressBytes(bech32Prefix, address) - - // Derive extended private key - seed := bip39.NewSeed(mnemonic, "") - masterKey, _ := bip32.NewMasterKey(seed) - purposeKey, _ := masterKey.NewChildKey(0x8000002C) // 44' - coinTypeKey, _ := purposeKey.NewChildKey(0x80000000 + uint32(coinType64)) // 118' - accountKey, _ := coinTypeKey.NewChildKey(0x80000000) // 0' - changeKey, _ := accountKey.NewChildKey(0) // 0 - indexKey, _ := changeKey.NewChildKey(0) // 0 - - return KeyEntry{ - PublicKey: indexKey.PublicKey().B58Serialize(), // i.e. "xpub6GNKSnPmR5zN3Ef3EqYkSJTZzjzGecb1n1SqJRUNnoFPsyxviG7QyoVzjEjP3gfqRu7AvRrEZMfXJazz8pZgmYP6yvvdRqC2pWmWpeQTMBP" - PrivateKey: indexKey.B58Serialize(), // i.e. "xprvA3Ny3GrsaiS4pkaa8p1k5AWqSi9nF9sAQnXEW34mETiR1BdnAioAS1BWsx3uAXKT3NbY6cpY2mQL6N7R8se1GVHqNkpjwc7rv5VRaQ9x8EB" - Account: bech32Addr, // i.e. "cosmos1pyxjp07wc207l7jecyr3wcmq9cr54tqwhcwugm" - Address: address.Bytes(), // i.e. [9, 13, 32, 191, 206, 194, 159, 239, 250, 89, 193, 7, 23, 99, 96, 46, 7, 74, 172, 14] - } -} -func ChainConfigToHyperspaceRelayerChainConfig(chainConfig ibc.ChainConfig, keyName, rpcAddr, grpcAddr string) interface{} { - chainType := chainConfig.Type - if chainType == "polkadot" || chainType == "parachain" || chainType == "relaychain" { - chainType = "parachain" - } - - if chainType == "parachain" { - addrs := strings.Split(rpcAddr, ",") - paraRpcAddr := rpcAddr - relayRpcAddr := grpcAddr - if len(addrs) > 1 { - paraRpcAddr, relayRpcAddr = addrs[0], addrs[1] - } - return HyperspaceRelayerSubstrateChainConfig{ - Type: chainType, - Name: chainConfig.Name, - ParaID: 2000, - ParachainRPCURL: strings.Replace(strings.Replace(paraRpcAddr, "http", "ws", 1), "9933", "27451", 1), - RelayChainRPCURL: strings.Replace(strings.Replace(relayRpcAddr, "http", "ws", 1), "9933", "27451", 1), - CommitmentPrefix: "0x6962632f", - PrivateKey: "//Alice", - SS58Version: polkadot.Ss58Format, - KeyType: "sr25519", - FinalityProtocol: "Grandpa", - } - } else if chainType == "cosmos" { - wsUrl := strings.Replace(rpcAddr, "http", "ws", 1) + "/websocket" - return HyperspaceRelayerCosmosChainConfig{ - Type: chainType, - Name: chainConfig.Name, - ChainID: chainConfig.ChainID, - AccountPrefix: chainConfig.Bech32Prefix, - FeeDenom: "stake", - FeeAmount: "4000", - GasLimit: 10_000_000, - GRPCUrl: "http://" + grpcAddr, - RPCUrl: rpcAddr, - StorePrefix: "ibc", - MaxTxSize: 200000, - WebsocketUrl: wsUrl, - } - } else { - panic(fmt.Sprintf("unsupported chain type %s", chainType)) - } -} diff --git a/relayer/hyperspace/hyperspace_relayer.go b/relayer/hyperspace/hyperspace_relayer.go deleted file mode 100644 index e5bb74344..000000000 --- a/relayer/hyperspace/hyperspace_relayer.go +++ /dev/null @@ -1,206 +0,0 @@ -// Package hyperspace provides an interface to the hyperspace relayer running in a Docker container. -package hyperspace - -import ( - "context" - "fmt" - "path" - "time" - - "github.com/docker/docker/client" - "github.com/pelletier/go-toml/v2" - "github.com/strangelove-ventures/interchaintest/v7/ibc" - "github.com/strangelove-ventures/interchaintest/v7/relayer" - "go.uber.org/zap" -) - -var _ ibc.Relayer = &HyperspaceRelayer{} - -// ******* DockerRelayer methods that will panic in hyperspace commander, no overrides yet ******* -// FlushAcknowledgements() - no hyperspace implementation yet -// FlushPackets() - no hypersapce implementation yet -// UpdatePath() - hyperspace doesn't understand paths, may not be needed. -// UpdateClients() - no hyperspace implementation yet -// AddKey() - no hyperspace implementation yet - -// HyperspaceRelayer is the ibc.Relayer implementation for github.com/ComposableFi/hyperspace. -type HyperspaceRelayer struct { - // Embedded DockerRelayer so commands just work. - *relayer.DockerRelayer -} - -func NewHyperspaceRelayer(log *zap.Logger, testName string, cli *client.Client, networkID string, options ...relayer.RelayerOption) *HyperspaceRelayer { - c := hyperspaceCommander{log: log} - for _, opt := range options { - switch o := opt.(type) { - case relayer.RelayerOptionExtraStartFlags: - c.extraStartFlags = o.Flags - } - } - dr, err := relayer.NewDockerRelayer(context.TODO(), log, testName, cli, networkID, &c, options...) - if err != nil { - panic(err) // TODO: return - } - - coreConfig := HyperspaceRelayerCoreConfig{ - PrometheusEndpoint: "", - } - bytes, err := toml.Marshal(coreConfig) - if err != nil { - panic(err) // TODO: return - } - err = dr.WriteFileToHomeDir(context.TODO(), "core.config", bytes) - if err != nil { - panic(err) // TODO: return - } - - r := &HyperspaceRelayer{ - DockerRelayer: dr, - } - - return r -} - -// HyperspaceCapabilities returns the set of capabilities of the Cosmos relayer. -// -// Note, this API may change if the rly package eventually needs -// to distinguish between multiple rly versions. -func HyperspaceCapabilities() map[relayer.Capability]bool { - // RC1 matches the full set of capabilities as of writing. - return nil // relayer.FullCapabilities() -} - -// LinkPath performs the operations that happen when a path is linked. This includes creating clients, creating connections -// and establishing a channel. This happens across multiple operations rather than a single link path cli command. -// Parachains need a Polkadot epoch/session before starting, do not link in interchain.Build() -func (r *HyperspaceRelayer) LinkPath(ctx context.Context, rep ibc.RelayerExecReporter, pathName string, channelOpts ibc.CreateChannelOptions, clientOpts ibc.CreateClientOptions) error { - if err := r.CreateClients(ctx, rep, pathName, clientOpts); err != nil { - return err - } - - if err := r.CreateConnections(ctx, rep, pathName); err != nil { - return err - } - - if err := r.CreateChannel(ctx, rep, pathName, channelOpts); err != nil { - return err - } - - return nil -} - -func (r *HyperspaceRelayer) RestoreKey(ctx context.Context, rep ibc.RelayerExecReporter, cfg ibc.ChainConfig, keyName, mnemonic string) error { - addrBytes := "" - chainID := cfg.ChainID - coinType := cfg.CoinType - chainType := cfg.Type - - chainConfigFile := chainID + ".config" - config, err := r.GetRelayerChainConfig(ctx, chainConfigFile, chainType) - if err != nil { - return err - } - switch chainType { - case "cosmos": - bech32Prefix := cfg.Bech32Prefix - config.(*HyperspaceRelayerCosmosChainConfig).Keybase = GenKeyEntry(bech32Prefix, coinType, mnemonic) - case "polkadot": - config.(*HyperspaceRelayerSubstrateChainConfig).PrivateKey = mnemonic - } - - err = r.SetRelayerChainConfig(ctx, chainConfigFile, config) - if err != nil { - return err - } - - r.AddWallet(chainID, NewWallet(chainID, addrBytes, mnemonic)) - - return nil -} - -func (r *HyperspaceRelayer) SetClientContractHash(ctx context.Context, rep ibc.RelayerExecReporter, cfg ibc.ChainConfig, hash string) error { - chainID := cfg.ChainID - chainType := cfg.Type - chainConfigFile := chainID + ".config" - config, err := r.GetRelayerChainConfig(ctx, chainConfigFile, chainType) - if err != nil { - return err - } - switch chainType { - case "cosmos": - config.(*HyperspaceRelayerCosmosChainConfig).WasmCodeId = hash - } - - return r.SetRelayerChainConfig(ctx, chainConfigFile, config) -} - -func (r *HyperspaceRelayer) PrintCoreConfig(ctx context.Context, rep ibc.RelayerExecReporter) error { - cmd := []string{ - "cat", - path.Join(r.HomeDir(), "core.config"), - } - - ctx, cancel := context.WithTimeout(ctx, time.Minute) - defer cancel() - res := r.Exec(ctx, rep, cmd, nil) - if res.Err != nil { - return res.Err - } - fmt.Println(string(res.Stdout)) - return nil -} - -func (r *HyperspaceRelayer) PrintConfigs(ctx context.Context, rep ibc.RelayerExecReporter, chainID string) error { - cmd := []string{ - "cat", - path.Join(r.HomeDir(), chainID+".config"), - } - - ctx, cancel := context.WithTimeout(ctx, time.Minute) - defer cancel() - res := r.Exec(ctx, rep, cmd, nil) - if res.Err != nil { - return res.Err - } - fmt.Println(string(res.Stdout)) - return nil -} - -func (r *HyperspaceRelayer) GetRelayerChainConfig( - ctx context.Context, - filePath string, - chainType string, -) (interface{}, error) { - configRaw, err := r.ReadFileFromHomeDir(ctx, filePath) - if err != nil { - return nil, err - } - - switch chainType { - case "cosmos": - var config HyperspaceRelayerCosmosChainConfig - if err := toml.Unmarshal(configRaw, &config); err != nil { - return nil, fmt.Errorf("failed to unmarshal %s: %w", filePath, err) - } - return &config, nil - case "polkadot": - var config HyperspaceRelayerSubstrateChainConfig - if err := toml.Unmarshal(configRaw, &config); err != nil { - return nil, fmt.Errorf("failed to unmarshal %s: %w", filePath, err) - } - return &config, nil - } - return nil, fmt.Errorf("unsupported chain config: %s", chainType) -} -func (r *HyperspaceRelayer) SetRelayerChainConfig( - ctx context.Context, - filePath string, - config interface{}, -) error { - bytes, err := toml.Marshal(config) - if err != nil { - return err - } - - return r.WriteFileToHomeDir(ctx, filePath, bytes) -} diff --git a/relayer/hyperspace/hyperspace_test.go b/relayer/hyperspace/hyperspace_test.go deleted file mode 100644 index 996684d40..000000000 --- a/relayer/hyperspace/hyperspace_test.go +++ /dev/null @@ -1,27 +0,0 @@ -package hyperspace_test - -import ( - "testing" - - "github.com/strangelove-ventures/interchaintest/v7/relayer/hyperspace" - "github.com/stretchr/testify/require" -) - -func TestKeys(t *testing.T) { - bech32Prefix := "cosmos" - coinType := "118" - mnemonic := "taste shoot adapt slow truly grape gift need suggest midnight burger horn whisper hat vast aspect exit scorpion jewel axis great area awful blind" - - expectedKeyEntry := hyperspace.KeyEntry{ - PublicKey: "xpub6G1GwQBqWwXuCRhri9q1JzxZ9eMWFazo2ssoZNkAsqusDTT6MPUXiPaXMJS9v4RVaSmYPhA1HK5RCD7WPutmUn3eeqXduM142X7YRVBx8bn", - PrivateKey: "xprvA31vXtewgZybywdPc8Hzws1pbcX1r8GwfexCkzLZKWNtLf7worAHAbG3W3F1SagK47ng5877ihXkDvmNfZnVHSGw7Ad1JkzyPTKEtSpmSxa", - Address: []byte{69, 6, 166, 110, 97, 215, 215, 210, 224, 48, 93, 126, 44, 86, 4, 36, 109, 137, 43, 242}, - Account: "cosmos1g5r2vmnp6lta9cpst4lzc4syy3kcj2lj0nuhmy", - } - - keyEntry := hyperspace.GenKeyEntry(bech32Prefix, coinType, mnemonic) - require.Equal(t, expectedKeyEntry.PublicKey, keyEntry.PublicKey, "PublicKey is wrong") - require.Equal(t, expectedKeyEntry.PrivateKey, keyEntry.PrivateKey, "PrivateKey is wrong") - require.Equal(t, expectedKeyEntry.Account, keyEntry.Account, "Account is wrong") - require.Equal(t, expectedKeyEntry.Address, keyEntry.Address, "Address is wrong") -} diff --git a/relayer/hyperspace/wallet.go b/relayer/hyperspace/wallet.go deleted file mode 100644 index 441cf8f9e..000000000 --- a/relayer/hyperspace/wallet.go +++ /dev/null @@ -1,44 +0,0 @@ -package hyperspace - -import ( - "github.com/strangelove-ventures/interchaintest/v7/ibc" -) - -var _ ibc.Wallet = &HyperspaceWallet{} - -type WalletModel struct { - Mnemonic string `json:"mnemonic"` - Address string `json:"address"` -} - -type HyperspaceWallet struct { - mnemonic string - address string - keyName string -} - -func NewWallet(keyname string, address string, mnemonic string) *HyperspaceWallet { - return &HyperspaceWallet{ - mnemonic: mnemonic, - address: address, - keyName: keyname, - } -} - -func (w *HyperspaceWallet) KeyName() string { - return w.keyName -} - -func (w *HyperspaceWallet) FormattedAddress() string { - return w.address -} - -// Get mnemonic, only used for relayer wallets -func (w *HyperspaceWallet) Mnemonic() string { - return w.mnemonic -} - -// Get Address -func (w *HyperspaceWallet) Address() []byte { - return []byte(w.address) -} diff --git a/relayerfactory.go b/relayerfactory.go index bc4af42f8..07da94d46 100644 --- a/relayerfactory.go +++ b/relayerfactory.go @@ -7,7 +7,6 @@ import ( "github.com/strangelove-ventures/interchaintest/v7/ibc" "github.com/strangelove-ventures/interchaintest/v7/relayer" "github.com/strangelove-ventures/interchaintest/v7/relayer/hermes" - "github.com/strangelove-ventures/interchaintest/v7/relayer/hyperspace" "github.com/strangelove-ventures/interchaintest/v7/relayer/rly" "go.uber.org/zap" ) @@ -61,14 +60,6 @@ func (f builtinRelayerFactory) Build( networkID, f.options..., ) - case ibc.Hyperspace: - return hyperspace.NewHyperspaceRelayer( - f.log, - t.Name(), - cli, - networkID, - f.options..., - ) case ibc.Hermes: return hermes.NewHermesRelayer(f.log, t.Name(), cli, networkID, f.options...) default: From eea91cbcf38ef4a96e8ca3db0466e4135aadb195 Mon Sep 17 00:00:00 2001 From: Dan Kanefsky Date: Wed, 30 Aug 2023 17:31:12 -0700 Subject: [PATCH 17/22] update go mod + tidy --- go.mod | 51 ++++------------------------- go.sum | 100 ++------------------------------------------------------- 2 files changed, 8 insertions(+), 143 deletions(-) diff --git a/go.mod b/go.mod index 17a85b989..5412de41e 100644 --- a/go.mod +++ b/go.mod @@ -8,21 +8,15 @@ require ( cosmossdk.io/math v1.0.1 cosmossdk.io/store v1.0.0-alpha.1.0.20230728080422-54ed7dab3982 cosmossdk.io/x/upgrade v0.0.0-20230818115413-c402c51a1508 - github.com/99designs/keyring v1.2.2 github.com/BurntSushi/toml v1.3.2 - github.com/ChainSafe/go-schnorrkel/1 v0.0.0-00010101000000-000000000000 - github.com/CosmWasm/wasmd v0.41.0 - github.com/StirlingMarketingGroup/go-namecase v1.0.0 github.com/atotto/clipboard v0.1.4 github.com/avast/retry-go/v4 v4.5.0 github.com/cometbft/cometbft v0.38.0-rc3 github.com/cosmos/cosmos-sdk v0.50.0-rc.0.0.20230819070346-e8164be94954 - github.com/cosmos/go-bip39 v1.0.0 github.com/cosmos/gogoproto v1.4.11 github.com/cosmos/ibc-go/modules/capability v1.0.0-rc3 - github.com/cosmos/ibc-go/v7 v7.2.0 + github.com/cosmos/ibc-go/v7 v7.0.0-20230824131743-d0ab8285e9f0 github.com/davecgh/go-spew v1.1.1 - github.com/decred/dcrd/dcrec/secp256k1/v2 v2.0.1 github.com/docker/docker v24.0.4+incompatible github.com/docker/go-connections v0.4.0 github.com/gdamore/tcell/v2 v2.6.0 @@ -30,19 +24,12 @@ require ( github.com/grpc-ecosystem/grpc-gateway v1.16.0 github.com/hashicorp/go-version v1.6.0 github.com/icza/dyno v0.0.0-20220812133438-f0b6f8a18845 - github.com/libp2p/go-libp2p v0.27.8 - github.com/misko9/go-substrate-rpc-client/v4 v4.0.0-20230413215336-5bd2aea337ae - github.com/mr-tron/base58 v1.2.0 github.com/pelletier/go-toml v1.9.5 - github.com/pelletier/go-toml/v2 v2.0.9 github.com/rivo/tview v0.0.0-20220307222120-9994674d60a8 github.com/spf13/cobra v1.7.0 github.com/stretchr/testify v1.8.4 - github.com/tyler-smith/go-bip32 v1.0.0 - github.com/tyler-smith/go-bip39 v1.1.0 go.uber.org/multierr v1.11.0 go.uber.org/zap v1.25.0 - golang.org/x/crypto v0.12.0 golang.org/x/sync v0.3.0 golang.org/x/tools v0.12.1-0.20230815132531-74c255bcf846 google.golang.org/grpc v1.57.0 @@ -65,12 +52,8 @@ require ( cosmossdk.io/x/tx v0.9.1 // indirect filippo.io/edwards25519 v1.0.0 // indirect github.com/99designs/go-keychain v0.0.0-20191008050251-8e49817e8af4 // indirect - github.com/ChainSafe/go-schnorrkel v1.0.0 // indirect - github.com/ComposableFi/go-subkey/v2 v2.0.0-tm03420 // indirect - github.com/CosmWasm/wasmvm v1.3.0 // indirect + github.com/99designs/keyring v1.2.2 // indirect github.com/DataDog/zstd v1.5.5 // indirect - github.com/FactomProject/basen v0.0.0-20150613233007-fe3947df716e // indirect - github.com/FactomProject/btcutilecc v0.0.0-20130527213604-d3a63a5752ec // indirect github.com/Microsoft/go-winio v0.6.0 // indirect github.com/aws/aws-sdk-go v1.44.224 // indirect github.com/benbjohnson/clock v1.3.0 // indirect @@ -92,14 +75,12 @@ require ( github.com/cosmos/btcutil v1.0.5 // indirect github.com/cosmos/cosmos-db v1.0.0 // indirect github.com/cosmos/cosmos-proto v1.0.0-beta.3 // indirect + github.com/cosmos/go-bip39 v1.0.0 // indirect github.com/cosmos/gogogateway v1.2.0 // indirect github.com/cosmos/iavl v1.0.0-beta.2 // indirect github.com/cosmos/ics23/go v0.10.0 // indirect github.com/cosmos/ledger-cosmos-go v0.13.0 // indirect github.com/danieljoos/wincred v1.1.2 // indirect - github.com/deckarep/golang-set v1.8.0 // indirect - github.com/decred/base58 v1.0.4 // indirect - github.com/decred/dcrd/crypto/blake256 v1.0.1 // indirect github.com/decred/dcrd/dcrec/secp256k1/v4 v4.2.0 // indirect github.com/desertbit/timer v0.0.0-20180107155436-c41aec40b27f // indirect github.com/dgraph-io/badger/v2 v2.2007.4 // indirect @@ -110,7 +91,6 @@ require ( github.com/dustin/go-humanize v1.0.1 // indirect github.com/dvsekhvalnov/jose2go v1.5.0 // indirect github.com/emicklei/dot v1.5.0 // indirect - github.com/ethereum/go-ethereum v1.10.20 // indirect github.com/fatih/color v1.15.0 // indirect github.com/felixge/httpsnoop v1.0.2 // indirect github.com/fsnotify/fsnotify v1.6.0 // indirect @@ -119,7 +99,6 @@ require ( github.com/go-kit/kit v0.12.0 // indirect github.com/go-kit/log v0.2.1 // indirect github.com/go-logfmt/logfmt v0.6.0 // indirect - github.com/go-stack/stack v1.8.1 // indirect github.com/godbus/dbus v0.0.0-20190726142602-4481cbc300e2 // indirect github.com/gogo/googleapis v1.4.1 // indirect github.com/gogo/protobuf v1.3.3 // indirect @@ -130,6 +109,7 @@ require ( github.com/golang/snappy v0.0.4 // indirect github.com/google/btree v1.1.2 // indirect github.com/google/orderedcode v0.0.1 // indirect + github.com/google/pprof v0.0.0-20230405160723-4a4c7d95572b // indirect github.com/google/s2a-go v0.1.4 // indirect github.com/google/uuid v1.3.0 // indirect github.com/googleapis/enterprise-certificate-proxy v0.2.3 // indirect @@ -139,8 +119,6 @@ require ( github.com/gorilla/websocket v1.5.0 // indirect github.com/grpc-ecosystem/go-grpc-middleware v1.4.0 // indirect github.com/gsterjov/go-libsecret v0.0.0-20161001094733-a6f4afe4910c // indirect - github.com/gtank/merlin v0.1.1 // indirect - github.com/gtank/ristretto255 v0.1.2 // indirect github.com/hashicorp/go-cleanhttp v0.5.2 // indirect github.com/hashicorp/go-getter v1.7.1 // indirect github.com/hashicorp/go-hclog v1.5.0 // indirect @@ -156,12 +134,10 @@ require ( github.com/iancoleman/strcase v0.3.0 // indirect github.com/improbable-eng/grpc-web v0.15.0 // indirect github.com/inconshreveable/mousetrap v1.1.0 // indirect - github.com/ipfs/go-cid v0.4.1 // indirect github.com/jmespath/go-jmespath v0.4.0 // indirect github.com/jmhodges/levigo v1.0.0 // indirect github.com/kballard/go-shellquote v0.0.0-20180428030007-95032a82bc51 // indirect github.com/klauspost/compress v1.16.7 // indirect - github.com/klauspost/cpuid/v2 v2.2.4 // indirect github.com/kr/pretty v0.3.1 // indirect github.com/kr/text v0.2.0 // indirect github.com/lib/pq v1.10.7 // indirect @@ -174,27 +150,18 @@ require ( github.com/mattn/go-isatty v0.0.19 // indirect github.com/mattn/go-runewidth v0.0.14 // indirect github.com/matttproud/golang_protobuf_extensions v1.0.4 // indirect - github.com/mimoo/StrobeGo v0.0.0-20220103164710-9a04d6ca976b // indirect github.com/minio/highwayhash v1.0.2 // indirect - github.com/minio/sha256-simd v1.0.0 // indirect github.com/mitchellh/go-homedir v1.1.0 // indirect github.com/mitchellh/go-testing-interface v1.14.1 // indirect github.com/mitchellh/mapstructure v1.5.0 // indirect github.com/mtibben/percent v0.2.1 // indirect - github.com/multiformats/go-base32 v0.1.0 // indirect - github.com/multiformats/go-base36 v0.2.0 // indirect - github.com/multiformats/go-multiaddr v0.9.0 // indirect - github.com/multiformats/go-multibase v0.2.0 // indirect - github.com/multiformats/go-multicodec v0.8.1 // indirect - github.com/multiformats/go-multihash v0.2.1 // indirect - github.com/multiformats/go-varint v0.0.7 // indirect github.com/oasisprotocol/curve25519-voi v0.0.0-20230110094441-db37f07504ce // indirect github.com/oklog/run v1.1.0 // indirect github.com/onsi/gomega v1.27.4 // indirect github.com/opencontainers/go-digest v1.0.0 // indirect github.com/opencontainers/image-spec v1.1.0-rc2 // indirect + github.com/pelletier/go-toml/v2 v2.0.9 // indirect github.com/petermattis/goid v0.0.0-20230518223814-80aa455d8761 // indirect - github.com/pierrec/xxHash v0.1.5 // indirect github.com/pkg/errors v0.9.1 // indirect github.com/pmezard/go-difflib v1.0.0 // indirect github.com/prometheus/client_golang v1.16.0 // indirect @@ -208,7 +175,6 @@ require ( github.com/rs/cors v1.8.3 // indirect github.com/rs/zerolog v1.30.0 // indirect github.com/sasha-s/go-deadlock v0.3.1 // indirect - github.com/spaolacci/murmur3 v1.1.0 // indirect github.com/spf13/afero v1.9.5 // indirect github.com/spf13/cast v1.5.1 // indirect github.com/spf13/jwalterweatherman v1.1.0 // indirect @@ -223,6 +189,7 @@ require ( github.com/zondax/ledger-go v0.14.1 // indirect go.etcd.io/bbolt v1.3.7 // indirect go.opencensus.io v0.24.0 // indirect + golang.org/x/crypto v0.12.0 // indirect golang.org/x/exp v0.0.0-20230817173708-d852ddb80c63 // indirect golang.org/x/mod v0.12.0 // indirect golang.org/x/net v0.14.0 // indirect @@ -238,10 +205,8 @@ require ( google.golang.org/genproto/googleapis/rpc v0.0.0-20230815205213-6bfd019c3878 // indirect google.golang.org/protobuf v1.31.0 // indirect gopkg.in/ini.v1 v1.67.0 // indirect - gopkg.in/natefinch/npipe.v2 v2.0.0-20160621034901-c1b8fa8bdcce // indirect gopkg.in/yaml.v2 v2.4.0 // indirect gotest.tools/v3 v3.5.0 // indirect - lukechampine.com/blake3 v1.1.7 // indirect lukechampine.com/uint128 v1.2.0 // indirect modernc.org/cc/v3 v3.40.0 // indirect modernc.org/ccgo/v3 v3.16.13 // indirect @@ -262,7 +227,3 @@ replace ( github.com/gogo/protobuf => github.com/regen-network/protobuf v1.3.3-alpha.regen.1 github.com/vedhavyas/go-subkey => github.com/strangelove-ventures/go-subkey v1.0.7 ) - -replace github.com/cosmos/ibc-go/v7 => github.com/cosmos/ibc-go/v7 v7.0.0-20230824130558-7de47052f528 - -replace github.com/CosmWasm/wasmd => github.com/notional-labs/wasmd v0.40.1-0.20230725154726-6f2a6f0a0bb3 diff --git a/go.sum b/go.sum index e0ede6a7f..16484f642 100644 --- a/go.sum +++ b/go.sum @@ -228,21 +228,9 @@ github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03 github.com/BurntSushi/toml v1.3.2 h1:o7IhLm0Msx3BaB+n3Ag7L8EVlByGnpq14C4YWiu/gL8= github.com/BurntSushi/toml v1.3.2/go.mod h1:CxXYINrC8qIiEnFrOxCa7Jy5BFHlXnUU2pbicEuybxQ= github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym/WlBOVXweHU+Q+/VP0lqqI8lqeDx9IjBqo= -github.com/ChainSafe/go-schnorrkel v0.0.0-20200405005733-88cbf1b4c40d h1:nalkkPQcITbvhmL4+C4cKA87NW0tfm3Kl9VXRoPywFg= -github.com/ChainSafe/go-schnorrkel v0.0.0-20200405005733-88cbf1b4c40d/go.mod h1:URdX5+vg25ts3aCh8H5IFZybJYKWhJHYMTnf+ULtoC4= -github.com/ChainSafe/go-schnorrkel v1.0.0 h1:3aDA67lAykLaG1y3AOjs88dMxC88PgUuHRrLeDnvGIM= -github.com/ChainSafe/go-schnorrkel v1.0.0/go.mod h1:dpzHYVxLZcp8pjlV+O+UR8K0Hp/z7vcchBSbMBEhCw4= -github.com/ComposableFi/go-subkey/v2 v2.0.0-tm03420 h1:oknQF/iIhf5lVjbwjsVDzDByupRhga8nhA3NAmwyHDA= -github.com/ComposableFi/go-subkey/v2 v2.0.0-tm03420/go.mod h1:KYkiMX5AbOlXXYfxkrYPrRPV6EbVUALTQh5ptUOJzu8= -github.com/CosmWasm/wasmvm v1.3.0 h1:x12X4bKlUPS7TT9QQP45+fJo2sp30GEbiSSgb9jsec8= -github.com/CosmWasm/wasmvm v1.3.0/go.mod h1:vW/E3h8j9xBQs9bCoijDuawKo9kCtxOaS8N8J7KFtkc= github.com/DataDog/datadog-go v3.2.0+incompatible/go.mod h1:LButxg5PwREeZtORoXG3tL4fMGNddJ+vMq1mwgfaqoQ= github.com/DataDog/zstd v1.5.5 h1:oWf5W7GtOLgp6bciQYDmhHHjdhYkALu6S/5Ni9ZgSvQ= github.com/DataDog/zstd v1.5.5/go.mod h1:g4AWEaM3yOg3HYfnJ3YIawPnVdXJh9QME85blwSAmyw= -github.com/FactomProject/basen v0.0.0-20150613233007-fe3947df716e h1:ahyvB3q25YnZWly5Gq1ekg6jcmWaGj/vG/MhF4aisoc= -github.com/FactomProject/basen v0.0.0-20150613233007-fe3947df716e/go.mod h1:kGUqhHd//musdITWjFvNTHn90WG9bMLBEPQZ17Cmlpw= -github.com/FactomProject/btcutilecc v0.0.0-20130527213604-d3a63a5752ec h1:1Qb69mGp/UtRPn422BH4/Y4Q3SLUrD9KHuDkm8iodFc= -github.com/FactomProject/btcutilecc v0.0.0-20130527213604-d3a63a5752ec/go.mod h1:CD8UlnlLDiqb36L110uqiP2iSflVjx9g/3U9hCI4q2U= github.com/Knetic/govaluate v3.0.1-0.20171022003610-9aa49832a739+incompatible/go.mod h1:r7JcOSlj0wfOMncg0iLm8Leh48TZaKVeNIfJntJ2wa0= github.com/Microsoft/go-winio v0.6.0 h1:slsWYD/zyx7lCXoZVlvQrj0hPTM1HI4+v1sIda2yDvg= github.com/Microsoft/go-winio v0.6.0/go.mod h1:cTAf44im0RAYeL23bpB+fzCyDH2MJiz2BO69KH/soAE= @@ -252,10 +240,6 @@ github.com/OneOfOne/xxhash v1.2.2 h1:KMrpdQIwFcEqXDklaen+P1axHaj9BSKzvpUUfnHldSE github.com/OneOfOne/xxhash v1.2.2/go.mod h1:HSdplMjZKSmBqAxg5vPj2TmRDmfkzw+cTzAElWljhcU= github.com/Shopify/sarama v1.19.0/go.mod h1:FVkBWblsNy7DGZRfXLU0O9RCGt5g3g3yEuWXgklEdEo= github.com/Shopify/toxiproxy v2.1.4+incompatible/go.mod h1:OXgGpZ6Cli1/URJOF1DMxUHB2q5Ap20/P/eIdh4G0pI= -github.com/StackExchange/wmi v0.0.0-20180116203802-5d049714c4a6 h1:fLjPD/aNc3UIOA6tDi6QXUemppXK3P9BI7mr2hd6gx8= -github.com/StackExchange/wmi v0.0.0-20180116203802-5d049714c4a6/go.mod h1:3eOhrUMpNV+6aFIbp5/iudMxNCF27Vw2OZgy4xEx0Fg= -github.com/StirlingMarketingGroup/go-namecase v1.0.0 h1:2CzaNtCzc4iNHirR+5ru9OzGg8rQp860gqLBFqRI02Y= -github.com/StirlingMarketingGroup/go-namecase v1.0.0/go.mod h1:ZsoSKcafcAzuBx+sndbxHu/RjDcDTrEdT4UvhniHfio= github.com/VividCortex/gohistogram v1.0.0 h1:6+hBz+qvs0JOrrNhhmR7lFxo5sINxBCGXrdtl/UvroE= github.com/VividCortex/gohistogram v1.0.0/go.mod h1:Pf5mBqqDxYaXu3hDrrU+w6nw50o/4+TcAqDqk/vUH7g= github.com/adlio/schema v1.3.3 h1:oBJn8I02PyTB466pZO1UZEn1TV5XLlifBSyMrmHl/1I= @@ -304,8 +288,6 @@ github.com/btcsuite/btcd/btcutil v1.1.3 h1:xfbtw8lwpp0G6NwSHb+UE67ryTFHJAiNuipus github.com/btcsuite/btcd/btcutil v1.1.3/go.mod h1:UR7dsSJzJUfMmFiiLlIrMq1lS9jh9EdCV7FStZSnpi0= github.com/btcsuite/btcd/chaincfg/chainhash v1.0.1 h1:q0rUy8C/TYNBQS1+CGKw68tLOFYSNEs0TFnxxnS9+4U= github.com/btcsuite/btcd/chaincfg/chainhash v1.0.1/go.mod h1:7SFka0XMvUgj3hfZtydOrQY2mwhPclbT2snogU7SQQc= -github.com/btcsuite/btcutil v1.0.3-0.20201208143702-a53e38424cce h1:YtWJF7RHm2pYCvA5t0RPmAaLUhREsKuKd+SLhxFbFeQ= -github.com/btcsuite/btcutil v1.0.3-0.20201208143702-a53e38424cce/go.mod h1:0DVlHczLPewLcPGEIeUEzfOJhqGPQ0mJJRDBtD307+o= github.com/bufbuild/protocompile v0.5.1 h1:mixz5lJX4Hiz4FpqFREJHIXLfaLBntfaJv1h+/jS+Qg= github.com/bufbuild/protocompile v0.5.1/go.mod h1:G5iLmavmF4NsYtpZFvE3B/zFch2GIY8+wjsYLR/lc40= github.com/casbin/casbin/v2 v2.1.2/go.mod h1:YcPU1XXisHhLzuxH9coDNf2FbKpjGlbCg3n9yuLkIJQ= @@ -334,8 +316,6 @@ github.com/circonus-labs/circonus-gometrics v2.3.1+incompatible/go.mod h1:nmEj6D github.com/circonus-labs/circonusllhist v0.1.3/go.mod h1:kMXHVDlOchFAehlya5ePtbp5jckzBHf4XRpQvBOLI+I= github.com/clbanning/x2j v0.0.0-20191024224557-825249438eec/go.mod h1:jMjuTZXRI4dUb/I5gc9Hdhagfvm9+RyrPryS/auMzxE= github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw= -github.com/cmars/basen v0.0.0-20150613233007-fe3947df716e h1:0XBUw73chJ1VYSsfvcPvVT7auykAJce9FpRr10L6Qhw= -github.com/cmars/basen v0.0.0-20150613233007-fe3947df716e/go.mod h1:P13beTBKr5Q18lJe1rIoLUqjM+CB1zYrRg44ZqGuQSA= github.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGXZJjfX53e64911xZQV5JYwmTeXPW+k8Sc= github.com/cncf/udpa/go v0.0.0-20200629203442-efcf912fb354/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk= github.com/cncf/udpa/go v0.0.0-20201120205902-5459f2c99403/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk= @@ -381,7 +361,6 @@ github.com/cosmos/cosmos-proto v1.0.0-beta.3 h1:VitvZ1lPORTVxkmF2fAp3IiA61xVwArQ github.com/cosmos/cosmos-proto v1.0.0-beta.3/go.mod h1:t8IASdLaAq+bbHbjq4p960BvcTqtwuAxid3b/2rOD6I= github.com/cosmos/cosmos-sdk v0.50.0-rc.0.0.20230819070346-e8164be94954 h1:DSVQWPZyt0f7T0Arw7doznp9BK+HDzv3h6HwjMJxNCU= github.com/cosmos/cosmos-sdk v0.50.0-rc.0.0.20230819070346-e8164be94954/go.mod h1:6HsAg8cQ/D3JnFN7jao6DOuTLWnUC4qh/vracVlSLAM= -github.com/cosmos/go-bip39 v0.0.0-20180819234021-555e2067c45d/go.mod h1:tSxLoYXyBmiFeKpvmq4dzayMdCjCnu8uqmCysIGBT2Y= github.com/cosmos/go-bip39 v1.0.0 h1:pcomnQdrdH22njcAatO0yWojsUnCO3y2tNoV1cb6hHY= github.com/cosmos/go-bip39 v1.0.0/go.mod h1:RNJv0H/pOIVgxw6KS7QeX2a0Uo0aKUlfhZ4xuwvCdJw= github.com/cosmos/gogogateway v1.2.0 h1:Ae/OivNhp8DqBi/sh2A8a1D0y638GpL3tkmLQAiKxTE= @@ -393,8 +372,8 @@ github.com/cosmos/iavl v1.0.0-beta.2 h1:XOsIM80Yyml/KifCXEYOy9tWCXwMAbLa91n6pReW github.com/cosmos/iavl v1.0.0-beta.2/go.mod h1:EA97dJ07TBktRlG/iGzK6g1eCXNj1q3MGoFYkVzrwHE= github.com/cosmos/ibc-go/modules/capability v1.0.0-rc3 h1:jEq48O/lE7dT34U6dJLLl8PaHSwerFrRqgaVVPg7J4A= github.com/cosmos/ibc-go/modules/capability v1.0.0-rc3/go.mod h1:h+HXgDnFpzthSy7mKw3xCeOG1QZDiwlz7Vuw8eSevjg= -github.com/cosmos/ibc-go/v7 v7.0.0-20230824130558-7de47052f528 h1:OEHFVBFy6N4lFRSGjQ+QhplQ5AmPzNDFu/vIbNXc7xs= -github.com/cosmos/ibc-go/v7 v7.0.0-20230824130558-7de47052f528/go.mod h1:fp481Yxa0mVQ9a4w9a6LifFPmfOgNH1KCmoH9SNwl/8= +github.com/cosmos/ibc-go/v7 v7.0.0-20230824131743-d0ab8285e9f0 h1:6vNbAPOYq2uuZThM8gWUvWYIPUIffn5JsPR2/jLzX4U= +github.com/cosmos/ibc-go/v7 v7.0.0-20230824131743-d0ab8285e9f0/go.mod h1:fp481Yxa0mVQ9a4w9a6LifFPmfOgNH1KCmoH9SNwl/8= github.com/cosmos/ics23/go v0.10.0 h1:iXqLLgp2Lp+EdpIuwXTYIQU+AiHj9mOC2X9ab++bZDM= github.com/cosmos/ics23/go v0.10.0/go.mod h1:ZfJSmng/TBNTBkFemHHHj5YY7VAU/MBU980F4VU1NG0= github.com/cosmos/ledger-cosmos-go v0.13.0 h1:ex0CvCxToSR7j5WjrghPu2Bu9sSXKikjnVvUryNnx4s= @@ -409,17 +388,8 @@ github.com/danieljoos/wincred v1.1.2/go.mod h1:GijpziifJoIBfYh+S7BbkdUTU4LfM+QnG github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= -github.com/deckarep/golang-set v1.8.0 h1:sk9/l/KqpunDwP7pSjUg0keiOOLEnOBHzykLrsPppp4= -github.com/deckarep/golang-set v1.8.0/go.mod h1:5nI87KwE7wgsBU1F4GKAw2Qod7p5kyS383rP6+o6qqo= -github.com/decred/base58 v1.0.4 h1:QJC6B0E0rXOPA8U/kw2rP+qiRJsUaE2Er+pYb3siUeA= -github.com/decred/base58 v1.0.4/go.mod h1:jJswKPEdvpFpvf7dsDvFZyLT22xZ9lWqEByX38oGd9E= -github.com/decred/dcrd/chaincfg/chainhash v1.0.2 h1:rt5Vlq/jM3ZawwiacWjPa+smINyLRN07EO0cNBV6DGU= -github.com/decred/dcrd/chaincfg/chainhash v1.0.2/go.mod h1:BpbrGgrPTr3YJYRN3Bm+D9NuaFd+zGyNeIKgrhCXK60= -github.com/decred/dcrd/crypto/blake256 v1.0.0/go.mod h1:sQl2p6Y26YV+ZOcSTP6thNdn47hh8kt6rqSlvmrXFAc= github.com/decred/dcrd/crypto/blake256 v1.0.1 h1:7PltbUIQB7u/FfZ39+DGa/ShuMyJ5ilcvdfma9wOH6Y= github.com/decred/dcrd/crypto/blake256 v1.0.1/go.mod h1:2OfgNZ5wDpcsFmHmCK5gZTPcCXqlm2ArzUIkw9czNJo= -github.com/decred/dcrd/dcrec/secp256k1/v2 v2.0.1 h1:18HurQ6DfHeNvwIjvOmrgr44bPdtVaQAe/WWwHg9goM= -github.com/decred/dcrd/dcrec/secp256k1/v2 v2.0.1/go.mod h1:XmyzkaXBy7ZvHdrTAlXAjpog8qKSAWa3ze7yqzWmgmc= github.com/decred/dcrd/dcrec/secp256k1/v4 v4.2.0 h1:8UrgZ3GkP4i/CLijOJx79Yu+etlyjdBU4sfcs2WYQMs= github.com/decred/dcrd/dcrec/secp256k1/v4 v4.2.0/go.mod h1:v57UDF4pDQJcEfFUCRop3lJL149eHGSe9Jvczhzjo/0= github.com/desertbit/timer v0.0.0-20180107155436-c41aec40b27f h1:U5y3Y5UE0w7amNe7Z5G/twsBW0KEalRQXZzf8ufSh9I= @@ -464,8 +434,6 @@ github.com/envoyproxy/go-control-plane v0.9.9-0.20210512163311-63b5d3c536b0/go.m github.com/envoyproxy/go-control-plane v0.9.10-0.20210907150352-cf90f659a021/go.mod h1:AFq3mo9L8Lqqiid3OhADV3RfLJnjiw63cSpi+fDTRC0= github.com/envoyproxy/go-control-plane v0.10.2-0.20220325020618-49ff273808a1/go.mod h1:KJwIaB5Mv44NWtYuAOFCVOjcI94vtpEz2JU/D2v6IjE= github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= -github.com/ethereum/go-ethereum v1.10.20 h1:75IW830ClSS40yrQC1ZCMZCt5I+zU16oqId2SiQwdQ4= -github.com/ethereum/go-ethereum v1.10.20/go.mod h1:LWUN82TCHGpxB3En5HVmLLzPD7YSrEUFmFfN1nKkVN0= github.com/fatih/color v1.7.0/go.mod h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5KwzbycvMj4= github.com/fatih/color v1.13.0/go.mod h1:kLAiJbzzSOZDVNGyDpeOxJ47H46qBXwg5ILebYFFOfk= github.com/fatih/color v1.15.0 h1:kOqh6YHBtK8aywxGerMG2Eq3H6Qgoqeo13Bk2Mv/nBs= @@ -515,8 +483,6 @@ github.com/go-logfmt/logfmt v0.4.0/go.mod h1:3RMwSq7FuexP4Kalkev3ejPJsZTpXXBr9+V github.com/go-logfmt/logfmt v0.5.0/go.mod h1:wCYkCAKZfumFQihp8CzCvQ3paCTfi41vtzG1KdI/P7A= github.com/go-logfmt/logfmt v0.6.0 h1:wGYYu3uicYdqXVgoYbvnkrPVXkuLM1p1ifugDMEdRi4= github.com/go-logfmt/logfmt v0.6.0/go.mod h1:WYhtIu8zTZfxdn5+rREduYbwxfcBr/Vr6KEVveWlfTs= -github.com/go-ole/go-ole v1.2.6 h1:/Fpf6oFPoeFik9ty7siob0G6Ke8QvQEuVcuChpwXzpY= -github.com/go-ole/go-ole v1.2.6/go.mod h1:pprOEPIfldk/42T2oK7lQ4v4JSDwmV0As9GaiUsvbm0= github.com/go-playground/assert/v2 v2.0.1/go.mod h1:VDjEfimB/XKnb+ZQfWdccd7VUvScMdVu0Titje2rxJ4= github.com/go-playground/locales v0.13.0/go.mod h1:taPMhCMXrRLJO55olJkUXHZBHCxTMfnGwq/HNwmWNS8= github.com/go-playground/locales v0.14.0 h1:u50s323jtVGugKlcYeyzC0etD1HifMjqmJqb8WugfUU= @@ -529,8 +495,6 @@ github.com/go-playground/validator/v10 v10.11.1 h1:prmOlTVv+YjZjmRmNSF3VmspqJIxJ github.com/go-playground/validator/v10 v10.11.1/go.mod h1:i+3WkQ1FvaUjjxh1kSvIA4dMGDBiPU55YFDl0WbKdWU= github.com/go-sql-driver/mysql v1.4.0/go.mod h1:zAC/RDZ24gD3HViQzih4MyKcchzm+sOG5ZlKdlhCg5w= github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY= -github.com/go-stack/stack v1.8.1 h1:ntEHSVwIt7PNXNpgPmVfMrNhLtgjlmnZha2kOpuRiDw= -github.com/go-stack/stack v1.8.1/go.mod h1:dcoOX6HbPZSZptuspn9bctJ+N/CnF5gGygcUP3XYfe4= github.com/go-task/slim-sprig v0.0.0-20210107165309-348f09dbbbc0/go.mod h1:fyg7847qk6SyHyPtNmDHnmrv/HOrqktSC+C9fM+CJOE= github.com/gobwas/httphead v0.0.0-20180130184737-2c6c146eadee h1:s+21KNqlpePfkah2I+gwHF8xmJWRjooY+5248k6m4A0= github.com/gobwas/httphead v0.0.0-20180130184737-2c6c146eadee/go.mod h1:L0fX3K22YWvt/FAX9NnzrNzcI4wNYi9Yku4O0LKYflo= @@ -689,11 +653,6 @@ github.com/grpc-ecosystem/grpc-gateway v1.16.0 h1:gmcG1KaJ57LophUzW0Hy8NmPhnMZb4 github.com/grpc-ecosystem/grpc-gateway v1.16.0/go.mod h1:BDjrQk3hbvj6Nolgz8mAMFbcEtjT1g+wF4CSlocrBnw= github.com/gsterjov/go-libsecret v0.0.0-20161001094733-a6f4afe4910c h1:6rhixN/i8ZofjG1Y75iExal34USq5p+wiN1tpie8IrU= github.com/gsterjov/go-libsecret v0.0.0-20161001094733-a6f4afe4910c/go.mod h1:NMPJylDgVpX0MLRlPy15sqSwOFv/U1GZ2m21JhFfek0= -github.com/gtank/merlin v0.1.1-0.20191105220539-8318aed1a79f/go.mod h1:T86dnYJhcGOh5BjZFCJWTDeTK7XW8uE+E21Cy/bIQ+s= -github.com/gtank/merlin v0.1.1 h1:eQ90iG7K9pOhtereWsmyRJ6RAwcP4tHTDBHXNg+u5is= -github.com/gtank/merlin v0.1.1/go.mod h1:T86dnYJhcGOh5BjZFCJWTDeTK7XW8uE+E21Cy/bIQ+s= -github.com/gtank/ristretto255 v0.1.2 h1:JEqUCPA1NvLq5DwYtuzigd7ss8fwbYay9fi4/5uMzcc= -github.com/gtank/ristretto255 v0.1.2/go.mod h1:Ph5OpO6c7xKUGROZfWVLiJf9icMDwUeIvY4OmlYW69o= github.com/hashicorp/consul/api v1.3.0/go.mod h1:MmDNSzIMUjNpY/mQ398R4bk2FnqQLoPndWW5VkKPlCE= github.com/hashicorp/consul/sdk v0.3.0/go.mod h1:VKf9jXwCTEY1QZP2MOLRhb5i/I/ssyNV1vwHyQBF0x8= github.com/hashicorp/errwrap v1.0.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= @@ -760,8 +719,6 @@ github.com/inconshreveable/mousetrap v1.0.0/go.mod h1:PxqpIevigyE2G7u3NXJIT2ANyt github.com/inconshreveable/mousetrap v1.1.0 h1:wN+x4NVGpMsO7ErUn/mUI3vEoE6Jt13X2s0bqwp9tc8= github.com/inconshreveable/mousetrap v1.1.0/go.mod h1:vpF70FUmC8bwa3OWnCshd2FqLfsEA9PFc4w1p2J65bw= github.com/influxdata/influxdb1-client v0.0.0-20191209144304-8bf82d3c094d/go.mod h1:qj24IKcXYK6Iy9ceXlo3Tc+vtHo9lIhSX5JddghvEPo= -github.com/ipfs/go-cid v0.4.1 h1:A/T3qGvxi4kpKWWcPC/PgbvDA2bjVLO7n4UeVwnbs/s= -github.com/ipfs/go-cid v0.4.1/go.mod h1:uQHwDeX4c6CtyrFwdqyhpNcxVewur1M7l7fNU7LKwZk= github.com/jhump/protoreflect v1.15.1 h1:HUMERORf3I3ZdX05WaQ6MIpd/NJ434hTp5YiKgfCL6c= github.com/jhump/protoreflect v1.15.1/go.mod h1:jD/2GMKKE6OqX8qTjhADU1e6DShO+gavG9e0Q693nKo= github.com/jmespath/go-jmespath v0.0.0-20180206201540-c2b33e8439af/go.mod h1:Nht3zPeWKUH0NzdCt2Blrr5ys8VGpn0CEB0cQHVjt7k= @@ -795,10 +752,6 @@ github.com/klauspost/compress v1.12.3/go.mod h1:8dP1Hq4DHOhN9w426knH3Rhby4rFm6D8 github.com/klauspost/compress v1.15.11/go.mod h1:QPwzmACJjUTFsnSHH934V6woptycfrDDJnH7hvFVbGM= github.com/klauspost/compress v1.16.7 h1:2mk3MPGNzKyxErAw8YaohYh69+pa4sIQSC0fPGCFR9I= github.com/klauspost/compress v1.16.7/go.mod h1:ntbaceVETuRiXiv4DpjP66DpAtAGkEQskQzEyD//IeE= -github.com/klauspost/cpuid/v2 v2.0.4/go.mod h1:FInQzS24/EEf25PyTYn52gqo7WaD8xa0213Md/qVLRg= -github.com/klauspost/cpuid/v2 v2.0.9/go.mod h1:FInQzS24/EEf25PyTYn52gqo7WaD8xa0213Md/qVLRg= -github.com/klauspost/cpuid/v2 v2.2.4 h1:acbojRNwl3o09bUq+yDCtZFc1aiwaAAxtcn8YkZXnvk= -github.com/klauspost/cpuid/v2 v2.2.4/go.mod h1:RVVoqg1df56z8g3pUjL/3lE5UfnlrJX8tyFgg4nqhuY= github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= github.com/konsorten/go-windows-terminal-sequences v1.0.3/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= github.com/kr/fs v0.1.0/go.mod h1:FFnZGqtBN9Gxj7eW1uZ42v5BccTP0vu6NEaFoC2HwRg= @@ -817,8 +770,6 @@ github.com/lib/pq v1.10.7 h1:p7ZhMD+KsSRozJr34udlUrhboJwWAgCg34+/ZZNvZZw= github.com/lib/pq v1.10.7/go.mod h1:AlVN5x4E4T544tWzH6hKfbfQvm3HdbOxrmggDNAPY9o= github.com/libp2p/go-buffer-pool v0.1.0 h1:oK4mSFcQz7cTQIfqbe4MIj9gLW+mnanjyFtc6cdF0Y8= github.com/libp2p/go-buffer-pool v0.1.0/go.mod h1:N+vh8gMqimBzdKkSMVuydVDq+UV5QTWy5HSiZacSbPg= -github.com/libp2p/go-libp2p v0.27.8 h1:IX5x/4yKwyPQeVS2AXHZ3J4YATM9oHBGH1gBc23jBAI= -github.com/libp2p/go-libp2p v0.27.8/go.mod h1:eCFFtd0s5i/EVKR7+5Ki8bM7qwkNW3TPTTSSW9sz8NE= github.com/lightstep/lightstep-tracer-common/golang/gogo v0.0.0-20190605223551-bc2310a04743/go.mod h1:qklhhLq1aX+mtWk9cPHPzaBjWImj5ULL6C7HFJtXQMM= github.com/lightstep/lightstep-tracer-go v0.18.1/go.mod h1:jlF1pusYV4pidLvZ+XD0UBX0ZE6WURAspgAczcDHrL4= github.com/linxGnu/grocksdb v1.8.0 h1:H4L/LhP7GOMf1j17oQAElHgVlbEje2h14A8Tz9cM2BE= @@ -854,15 +805,8 @@ github.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod h1:D8He9yQNgCq6Z5 github.com/matttproud/golang_protobuf_extensions v1.0.4 h1:mmDVorXM7PCGKw94cs5zkfA9PSy5pEvNWRP0ET0TIVo= github.com/matttproud/golang_protobuf_extensions v1.0.4/go.mod h1:BSXmuO+STAnVfrANrmjBb36TMTDstsz7MSK+HVaYKv4= github.com/miekg/dns v1.0.14/go.mod h1:W1PPwlIAgtquWBMBEV9nkV9Cazfe8ScdGz/Lj7v3Nrg= -github.com/mimoo/StrobeGo v0.0.0-20181016162300-f8f6d4d2b643/go.mod h1:43+3pMjjKimDBf5Kr4ZFNGbLql1zKkbImw+fZbw3geM= -github.com/mimoo/StrobeGo v0.0.0-20220103164710-9a04d6ca976b h1:QrHweqAtyJ9EwCaGHBu1fghwxIPiopAHV06JlXrMHjk= -github.com/mimoo/StrobeGo v0.0.0-20220103164710-9a04d6ca976b/go.mod h1:xxLb2ip6sSUts3g1irPVHyk/DGslwQsNOo9I7smJfNU= github.com/minio/highwayhash v1.0.2 h1:Aak5U0nElisjDCfPSG79Tgzkn2gl66NxOMspRrKnA/g= github.com/minio/highwayhash v1.0.2/go.mod h1:BQskDq+xkJ12lmlUUi7U0M5Swg3EWR+dLTk+kldvVxY= -github.com/minio/sha256-simd v1.0.0 h1:v1ta+49hkWZyvaKwrQB8elexRqm6Y0aMLjCNsrYxo6g= -github.com/minio/sha256-simd v1.0.0/go.mod h1:OuYzVNI5vcoYIAmbIvHPl3N3jUzVedXbKy5RFepssQM= -github.com/misko9/go-substrate-rpc-client/v4 v4.0.0-20230413215336-5bd2aea337ae h1:ZYbJh4TLwfSuSQe6DT/1982SfNNBcmvzrX5FycfSrmo= -github.com/misko9/go-substrate-rpc-client/v4 v4.0.0-20230413215336-5bd2aea337ae/go.mod h1:XexEkZgpnQ3sqUYz84DFoVUcDake6G/tYHrwdbdERhM= github.com/mitchellh/cli v1.0.0/go.mod h1:hNIlj7HEI86fIcpObd7a0FcrxTWetlwJDGcceTlRvqc= github.com/mitchellh/go-homedir v1.0.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0= github.com/mitchellh/go-homedir v1.1.0 h1:lukF9ziXFxDFPkA1vsr5zpc1XuPDn/wFntq5mG+4E0Y= @@ -887,24 +831,8 @@ github.com/modern-go/reflect2 v1.0.2 h1:xBagoLtFs94CBntxluKeaWgTMpvLxC4ur3nMaC9G github.com/modern-go/reflect2 v1.0.2/go.mod h1:yWuevngMOJpCy52FWWMvUC8ws7m/LJsjYzDa0/r8luk= github.com/morikuni/aec v1.0.0 h1:nP9CBfwrvYnBRgY6qfDQkygYDmYwOilePFkwzv4dU8A= github.com/morikuni/aec v1.0.0/go.mod h1:BbKIizmSmc5MMPqRYbxO4ZU0S0+P200+tUnFx7PXmsc= -github.com/mr-tron/base58 v1.2.0 h1:T/HDJBh4ZCPbU39/+c3rRvE0uKBQlU27+QI8LJ4t64o= -github.com/mr-tron/base58 v1.2.0/go.mod h1:BinMc/sQntlIE1frQmRFPUoPA1Zkr8VRgBdjWI2mNwc= github.com/mtibben/percent v0.2.1 h1:5gssi8Nqo8QU/r2pynCm+hBQHpkB/uNK7BJCFogWdzs= github.com/mtibben/percent v0.2.1/go.mod h1:KG9uO+SZkUp+VkRHsCdYQV3XSZrrSpR3O9ibNBTZrns= -github.com/multiformats/go-base32 v0.1.0 h1:pVx9xoSPqEIQG8o+UbAe7DNi51oej1NtK+aGkbLYxPE= -github.com/multiformats/go-base32 v0.1.0/go.mod h1:Kj3tFY6zNr+ABYMqeUNeGvkIC/UYgtWibDcT0rExnbI= -github.com/multiformats/go-base36 v0.2.0 h1:lFsAbNOGeKtuKozrtBsAkSVhv1p9D0/qedU9rQyccr0= -github.com/multiformats/go-base36 v0.2.0/go.mod h1:qvnKE++v+2MWCfePClUEjE78Z7P2a1UV0xHgWc0hkp4= -github.com/multiformats/go-multiaddr v0.9.0 h1:3h4V1LHIk5w4hJHekMKWALPXErDfz/sggzwC/NcqbDQ= -github.com/multiformats/go-multiaddr v0.9.0/go.mod h1:mI67Lb1EeTOYb8GQfL/7wpIZwc46ElrvzhYnoJOmTT0= -github.com/multiformats/go-multibase v0.2.0 h1:isdYCVLvksgWlMW9OZRYJEa9pZETFivncJHmHnnd87g= -github.com/multiformats/go-multibase v0.2.0/go.mod h1:bFBZX4lKCA/2lyOFSAoKH5SS6oPyjtnzK/XTFDPkNuk= -github.com/multiformats/go-multicodec v0.8.1 h1:ycepHwavHafh3grIbR1jIXnKCsFm0fqsfEOsJ8NtKE8= -github.com/multiformats/go-multicodec v0.8.1/go.mod h1:L3QTQvMIaVBkXOXXtVmYE+LI16i14xuaojr/H7Ai54k= -github.com/multiformats/go-multihash v0.2.1 h1:aem8ZT0VA2nCHHk7bPJ1BjUbHNciqZC/d16Vve9l108= -github.com/multiformats/go-multihash v0.2.1/go.mod h1:WxoMcYG85AZVQUyRyo9s4wULvW5qrI9vb2Lt6evduFc= -github.com/multiformats/go-varint v0.0.7 h1:sWSGR+f/eu5ABZA2ZpYKBILXTTs9JWpdEM/nEGOHFS8= -github.com/multiformats/go-varint v0.0.7/go.mod h1:r8PUYw/fD/SjBCiKOoDlGF6QawOELpZAu9eioSos/OU= github.com/mwitkow/go-conntrack v0.0.0-20161129095857-cc309e4a2223/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U= github.com/mwitkow/go-conntrack v0.0.0-20190716064945-2f068394615f h1:KUppIJq7/+SVif2QVs3tOP0zanoHgBEVAwHxUSIzRqU= github.com/mwitkow/go-conntrack v0.0.0-20190716064945-2f068394615f/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U= @@ -917,8 +845,6 @@ github.com/nats-io/nkeys v0.1.0/go.mod h1:xpnFELMwJABBLVhffcfd1MZx6VsNRFpEugbxzi github.com/nats-io/nkeys v0.1.3/go.mod h1:xpnFELMwJABBLVhffcfd1MZx6VsNRFpEugbxziKVo7w= github.com/nats-io/nuid v1.0.1/go.mod h1:19wcPz3Ph3q0Jbyiqsd0kePYG7A95tJPxeL+1OSON2c= github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e/go.mod h1:zD1mROLANZcx1PVRCS0qkT7pwLkGfwJo4zjcN/Tysno= -github.com/notional-labs/wasmd v0.40.1-0.20230725154726-6f2a6f0a0bb3 h1:b6OawIdo5lzGDRjSWvroBoHbvdL5BktYYMEN5fr/y8s= -github.com/notional-labs/wasmd v0.40.1-0.20230725154726-6f2a6f0a0bb3/go.mod h1:kyyRiOsYQjwQzmc1iXRYzyAAsWwBiiQ8q+f16mAHREY= github.com/nxadm/tail v1.4.4/go.mod h1:kenIhsEOeOJmVchQTgglprH7qJGnHDVpk1VPCcaMI8A= github.com/nxadm/tail v1.4.8 h1:nPr65rt6Y5JFSKQO7qToXr7pePgD6Gwiw05lkbyAQTE= github.com/nxadm/tail v1.4.8/go.mod h1:+ncqLTQzXmGhMZNUePPaPqPvBxHAIsmXswZKocGu+AU= @@ -976,8 +902,6 @@ github.com/petermattis/goid v0.0.0-20230518223814-80aa455d8761 h1:W04oB3d0J01W5j github.com/petermattis/goid v0.0.0-20230518223814-80aa455d8761/go.mod h1:pxMtw7cyUw6B2bRH0ZBANSPg+AoSud1I1iyJHI69jH4= github.com/pierrec/lz4 v1.0.2-0.20190131084431-473cd7ce01a1/go.mod h1:3/3N9NVKO0jef7pBehbT1qWhCMrIgbYNnFAZCqQ5LRc= github.com/pierrec/lz4 v2.0.5+incompatible/go.mod h1:pdkljMzZIN41W+lC3N2tnIh5sFi+IEE17M5jbnwPHcY= -github.com/pierrec/xxHash v0.1.5 h1:n/jBpwTHiER4xYvK3/CdPVnLDPchj8eTJFFLUb4QHBo= -github.com/pierrec/xxHash v0.1.5/go.mod h1:w2waW5Zoa/Wc4Yqe0wgrIYAGKqRMf7czn2HNKXmuL+I= github.com/pingcap/errors v0.11.4 h1:lFuQV/oaUMGcD2tqt+01ROSmJs75VG1ToEOkZIZ4nE4= github.com/pingcap/errors v0.11.4/go.mod h1:Oi8TUi2kEtXXLMJk9l1cGmz20kV3TaQ0usTwv5KuLY8= github.com/pkg/diff v0.0.0-20210226163009-20ebb0f2a09e/go.mod h1:pJLUxLENpZxwdsKMEsNbx1VGcRFpLqf3715MtcvvzbA= @@ -1055,8 +979,6 @@ github.com/samuel/go-zookeeper v0.0.0-20190923202752-2cc03de413da/go.mod h1:gi+0 github.com/sasha-s/go-deadlock v0.3.1 h1:sqv7fDNShgjcaxkO0JNcOAlr8B9+cV5Ey/OB71efZx0= github.com/sasha-s/go-deadlock v0.3.1/go.mod h1:F73l+cr82YSh10GxyRI6qZiCgK64VaZjwesgfQ1/iLM= github.com/sean-/seed v0.0.0-20170313163322-e2103e2c3529/go.mod h1:DxrIzT+xaE7yg65j358z/aeFdxmN0P9QXhEzd20vsDc= -github.com/shirou/gopsutil v3.21.4-0.20210419000835-c7a38de76ee5+incompatible h1:Bn1aCHHRnjv4Bl16T8rcaFjYSrGrIZvpiGO6P3Q4GpU= -github.com/shirou/gopsutil v3.21.4-0.20210419000835-c7a38de76ee5+incompatible/go.mod h1:5b4v6he4MtMOwMlS0TUMTu2PcXUg8+E1lC7eC3UO/RA= github.com/shurcooL/sanitized_anchor_name v1.0.0/go.mod h1:1NzhyTcUVG4SuEtjjoZeVRXNmyL/1OwPU0+IJeTBvfc= github.com/sirupsen/logrus v1.2.0/go.mod h1:LxeOpSwHxABJmUn/MG1IvRgCAasNZTLOkJPxbbu5VWo= github.com/sirupsen/logrus v1.4.2/go.mod h1:tLMulIdttU9McNUspp0xgXVQah82FyeX6MwdIuYE2rE= @@ -1099,7 +1021,6 @@ github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+ github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw= github.com/stretchr/objx v0.5.0 h1:1zr/of2m5FGMsad5YfcqgdqdWrIhu+EBEJRhR1U7z/c= github.com/stretchr/objx v0.5.0/go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpEOglKo= -github.com/stretchr/testify v1.1.5-0.20170601210322-f6abca593680/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4= @@ -1120,16 +1041,8 @@ github.com/tendermint/go-amino v0.16.0 h1:GyhmgQKvqF82e2oZeuMSp9JTN0N09emoSZlb2l github.com/tendermint/go-amino v0.16.0/go.mod h1:TQU0M1i/ImAo+tYpZi73AU3V/dKeCoMC9Sphe2ZwGME= github.com/tidwall/btree v1.6.0 h1:LDZfKfQIBHGHWSwckhXI0RPSXzlo+KYdjK7FWSqOzzg= github.com/tidwall/btree v1.6.0/go.mod h1:twD9XRA5jj9VUQGELzDO4HPQTNJsoWWfYEL+EUQ2cKY= -github.com/tklauser/go-sysconf v0.3.10 h1:IJ1AZGZRWbY8T5Vfk04D9WOA5WSejdflXxP03OUqALw= -github.com/tklauser/go-sysconf v0.3.10/go.mod h1:C8XykCvCb+Gn0oNCWPIlcb0RuglQTYaQ2hGm7jmxEFk= -github.com/tklauser/numcpus v0.4.0 h1:E53Dm1HjH1/R2/aoCtXtPgzmElmn51aOkhCFSuZq//o= -github.com/tklauser/numcpus v0.4.0/go.mod h1:1+UI3pD8NW14VMwdgJNJ1ESk2UnwhAnz5hMwiKKqXCQ= github.com/tmc/grpc-websocket-proxy v0.0.0-20170815181823-89b8d40f7ca8/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U= github.com/tv42/httpunix v0.0.0-20150427012821-b75d8614f926/go.mod h1:9ESjWnEqriFuLhtthL60Sar/7RFoluCcXsuvEwTV5KM= -github.com/tyler-smith/go-bip32 v1.0.0 h1:sDR9juArbUgX+bO/iblgZnMPeWY1KZMUC2AFUJdv5KE= -github.com/tyler-smith/go-bip32 v1.0.0/go.mod h1:onot+eHknzV4BVPwrzqY5OoVpyCvnwD7lMawL5aQupE= -github.com/tyler-smith/go-bip39 v1.1.0 h1:5eUemwrMargf3BSLRRCalXT93Ns6pQJIjYQN2nyfOP8= -github.com/tyler-smith/go-bip39 v1.1.0/go.mod h1:gUYDtqQw1JS3ZJ8UWVcGTGqqr6YIN3CWg+kkNaLt55U= github.com/ugorji/go v1.1.7 h1:/68gy2h+1mWMrwZFeD1kQialdSzAb432dtpeJ42ovdo= github.com/ugorji/go v1.1.7/go.mod h1:kZn38zHttfInRq0xu/PH0az30d+z6vm202qpg1oXVMw= github.com/ugorji/go/codec v0.0.0-20181204163529-d75b2dcb6bc8/go.mod h1:VFNgLljTbGfSG7qAOspJ7OScBnGdDN/yBr0sguwnwf0= @@ -1187,7 +1100,6 @@ go.uber.org/zap v1.13.0/go.mod h1:zwrFLgMcdUuIBviXEYEH1YKNaOBnKXsx2IPda5bBwHM= go.uber.org/zap v1.18.1/go.mod h1:xg/QME4nWcxGxrpdeYfq7UvYrLh66cuVKdrbD1XF/NI= go.uber.org/zap v1.25.0 h1:4Hvk6GtkucQ790dqmj7l1eEnRdKm3k3ZUrUMS2d5+5c= go.uber.org/zap v1.25.0/go.mod h1:JIAUzQIH94IC4fOJQm7gMmBJP5k7wQfdcnYdPoEXJYk= -golang.org/x/crypto v0.0.0-20170613210332-850760c427c5/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= golang.org/x/crypto v0.0.0-20180904163835-0709b304e793/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= golang.org/x/crypto v0.0.0-20181029021203-45a5f77698d3/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= golang.org/x/crypto v0.0.0-20181203042331-505ab145d0a9/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= @@ -1196,7 +1108,6 @@ golang.org/x/crypto v0.0.0-20190510104115-cbcb75029529/go.mod h1:yigFU9vqHzYiE8U golang.org/x/crypto v0.0.0-20190605123033-f99c8df09eb5/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20190701094942-4def268fd1a4/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= -golang.org/x/crypto v0.0.0-20191206172530-e9b2fee46413/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20200728195943-123391ffb6de/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20210421170649-83a5a9bb288b/go.mod h1:T9bdIzuCu7OtxOm1hfPfRQxPLYneinmdGuTeoZ9dtd4= @@ -1444,7 +1355,6 @@ golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBc golang.org/x/sys v0.0.0-20220610221304-9f5ed59c137d/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220615213510-4f61da869c0c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220624220833-87e55d714810/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220704084225-05e143d24a9e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220728004956-3c1f35247d10/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= @@ -1806,8 +1716,6 @@ gopkg.in/fsnotify.v1 v1.4.7/go.mod h1:Tz8NjZHkW78fSQdbUxIjBTcgA1z1m8ZHf0WmKUhAMy gopkg.in/gcfg.v1 v1.2.3/go.mod h1:yesOnuUOFQAhST5vPY4nbZsb/huCgGGXlipJsBn0b3o= gopkg.in/ini.v1 v1.67.0 h1:Dgnx+6+nfE+IfzjUEISNeydPJh9AXNNsWbGP9KzCsOA= gopkg.in/ini.v1 v1.67.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= -gopkg.in/natefinch/npipe.v2 v2.0.0-20160621034901-c1b8fa8bdcce h1:+JknDZhAj8YMt7GC73Ei8pv4MzjDUNPHgQWJdtMAaDU= -gopkg.in/natefinch/npipe.v2 v2.0.0-20160621034901-c1b8fa8bdcce/go.mod h1:5AcXVHNjg+BDxry382+8OKon8SEWiKktQR07RKPsv1c= gopkg.in/resty.v1 v1.12.0/go.mod h1:mDo4pnntr5jdWRML875a/NmxYqAlA73dVijT2AXvQQo= gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7 h1:uRGJdciOHaEIrze2W8Q3AKkepLTh2hOroT7a+7czfdQ= gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7/go.mod h1:dt/ZhP58zS4L8KSrWDmTeBkI65Dw0HsyUHuEVlX15mw= @@ -1836,10 +1744,6 @@ honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWh honnef.co/go/tools v0.0.1-2019.2.3/go.mod h1:a3bituU0lyd329TUQxRnasdCoJDkEUEAqEt0JzvZhAg= honnef.co/go/tools v0.0.1-2020.1.3/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k= honnef.co/go/tools v0.0.1-2020.1.4/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k= -launchpad.net/gocheck v0.0.0-20140225173054-000000000087 h1:Izowp2XBH6Ya6rv+hqbceQyw/gSGoXfH/UPoTGduL54= -launchpad.net/gocheck v0.0.0-20140225173054-000000000087/go.mod h1:hj7XX3B/0A+80Vse0e+BUHsHMTEhd0O4cpUHr/e/BUM= -lukechampine.com/blake3 v1.1.7 h1:GgRMhmdsuK8+ii6UZFDL8Nb+VyMwadAgcJyfYHxG6n0= -lukechampine.com/blake3 v1.1.7/go.mod h1:tkKEOtDkNtklkXtLNEOGNq5tcV90tJiA1vAA12R78LA= lukechampine.com/uint128 v1.2.0 h1:mBi/5l91vocEN8otkC5bDLhi2KdCticRiwbdB0O+rjI= lukechampine.com/uint128 v1.2.0/go.mod h1:c4eWIwlEGaxC/+H1VguhU4PHXNWDCDMUlWdIWl2j1gk= modernc.org/cc/v3 v3.40.0 h1:P3g79IUS/93SYhtoeaHW+kRCIrYaxJ27MFPv+7kaTOw= From dd103da0ab8eed4aa1fb63757ef3f632f4acbe81 Mon Sep 17 00:00:00 2001 From: Dan Kanefsky Date: Wed, 30 Aug 2023 17:32:02 -0700 Subject: [PATCH 18/22] update sdk boundary test --- examples/cosmos/sdk_47_boundary_test.go | 84 --------------- examples/cosmos/sdk_boundary_test.go | 130 ++++++++++++++++++++++++ 2 files changed, 130 insertions(+), 84 deletions(-) delete mode 100644 examples/cosmos/sdk_47_boundary_test.go create mode 100644 examples/cosmos/sdk_boundary_test.go diff --git a/examples/cosmos/sdk_47_boundary_test.go b/examples/cosmos/sdk_47_boundary_test.go deleted file mode 100644 index b35e80585..000000000 --- a/examples/cosmos/sdk_47_boundary_test.go +++ /dev/null @@ -1,84 +0,0 @@ -package cosmos_test - -import ( - "context" - "testing" - - interchaintest "github.com/strangelove-ventures/interchaintest/v7" - "github.com/strangelove-ventures/interchaintest/v7/chain/cosmos" - "github.com/strangelove-ventures/interchaintest/v7/conformance" - "github.com/strangelove-ventures/interchaintest/v7/ibc" - "github.com/strangelove-ventures/interchaintest/v7/testreporter" - "github.com/stretchr/testify/require" - "go.uber.org/zap/zaptest" -) - -func TestSDK47Boundary(t *testing.T) { - if testing.Short() { - t.Skip("skipping in short mode") - } - - t.Parallel() - - cf := interchaintest.NewBuiltinChainFactory(zaptest.NewLogger(t), []*interchaintest.ChainSpec{ - { - Name: "gaia", - ChainName: "gaia", - Version: "v7.0.3", - }, - { - Name: "ibc-go-simd", - ChainName: "ibc-go-simd", - Version: "andrew-47-rc1", - }, - }) - - chains, err := cf.Chains(t.Name()) - require.NoError(t, err) - - client, network := interchaintest.DockerSetup(t) - - chain, counterpartyChain := chains[0].(*cosmos.CosmosChain), chains[1].(*cosmos.CosmosChain) - - const ( - path = "ibc-path" - relayerName = "relayer" - ) - - // Get a relayer instance - rf := interchaintest.NewBuiltinRelayerFactory( - ibc.CosmosRly, - zaptest.NewLogger(t), - ) - - r := rf.Build(t, client, network) - - ic := interchaintest.NewInterchain(). - AddChain(chain). - AddChain(counterpartyChain). - AddRelayer(r, relayerName). - AddLink(interchaintest.InterchainLink{ - Chain1: chain, - Chain2: counterpartyChain, - Relayer: r, - Path: path, - }) - - ctx := context.Background() - - rep := testreporter.NewNopReporter() - - require.NoError(t, ic.Build(ctx, rep.RelayerExecReporter(t), interchaintest.InterchainBuildOptions{ - TestName: t.Name(), - Client: client, - NetworkID: network, - BlockDatabaseFile: interchaintest.DefaultBlockDatabaseFilepath(), - SkipPathCreation: false, - })) - t.Cleanup(func() { - _ = ic.Close() - }) - - // test IBC conformance - conformance.TestChainPair(t, ctx, client, network, chain, counterpartyChain, rf, rep, r, path) -} diff --git a/examples/cosmos/sdk_boundary_test.go b/examples/cosmos/sdk_boundary_test.go new file mode 100644 index 000000000..acf00d768 --- /dev/null +++ b/examples/cosmos/sdk_boundary_test.go @@ -0,0 +1,130 @@ +package cosmos_test + +import ( + "context" + "testing" + + interchaintest "github.com/strangelove-ventures/interchaintest/v7" + "github.com/strangelove-ventures/interchaintest/v7/chain/cosmos" + "github.com/strangelove-ventures/interchaintest/v7/conformance" + "github.com/strangelove-ventures/interchaintest/v7/ibc" + "github.com/strangelove-ventures/interchaintest/v7/relayer" + "github.com/strangelove-ventures/interchaintest/v7/relayer/rly" + "github.com/strangelove-ventures/interchaintest/v7/testreporter" + "github.com/stretchr/testify/require" + "go.uber.org/zap/zaptest" +) + +type boundarySpecs struct { + name string + chainSpecs []*interchaintest.ChainSpec + relayerVersion string +} + +func TestSDKBoundaries(t *testing.T) { + if testing.Short() { + t.Skip("skipping in short mode") + } + + t.Parallel() + + var tests = []boundarySpecs{ + { + name: "sdk 45 - 50", + chainSpecs: []*interchaintest.ChainSpec{ + { + Name: "gaia", ChainName: "gaia", Version: "v7.0.3", //sdk 0.45.6 + }, + { + Name: "ibc-go-simd", ChainName: "simd-50", Version: "feat-upgrade-sdk-v0.50", //sdk 0.50 alpha + ChainConfig: ibc.ChainConfig{ + UsingNewGenesisCommand: true, + }, + }, + }, + relayerVersion: "v2.4.1", + }, + { + name: "sdk 47 - 50", + chainSpecs: []*interchaintest.ChainSpec{ + { + Name: "ibc-go-simd", ChainName: "simd-47", Version: "v7.2.0", //sdk 0.47.3 + }, + { + Name: "ibc-go-simd", ChainName: "simd-50", Version: "feat-upgrade-sdk-v0.50", //sdk 0.50 alpha + ChainConfig: ibc.ChainConfig{ + UsingNewGenesisCommand: true, + }, + }, + }, + relayerVersion: "v2.4.1", + }, + } + + for _, tt := range tests { + testname := tt.name + t.Run(testname, func(t *testing.T) { + + cf := interchaintest.NewBuiltinChainFactory( + zaptest.NewLogger(t), + tt.chainSpecs, + ) + + chains, err := cf.Chains(t.Name()) + require.NoError(t, err) + + client, network := interchaintest.DockerSetup(t) + + chain, counterpartyChain := chains[0].(*cosmos.CosmosChain), chains[1].(*cosmos.CosmosChain) + + const ( + path = "ibc-path" + relayerName = "relayer" + ) + + // Get a relayer instance + rf := interchaintest.NewBuiltinRelayerFactory( + ibc.CosmosRly, + zaptest.NewLogger(t), + relayer.CustomDockerImage( + rly.DefaultContainerImage, + tt.relayerVersion, + rly.RlyDefaultUidGid, + ), + ) + + r := rf.Build(t, client, network) + + ic := interchaintest.NewInterchain(). + AddChain(chain). + AddChain(counterpartyChain). + AddRelayer(r, relayerName). + AddLink(interchaintest.InterchainLink{ + Chain1: chain, + Chain2: counterpartyChain, + Relayer: r, + Path: path, + }) + + ctx := context.Background() + + rep := testreporter.NewNopReporter() + + require.NoError(t, ic.Build(ctx, rep.RelayerExecReporter(t), interchaintest.InterchainBuildOptions{ + TestName: t.Name(), + Client: client, + NetworkID: network, + BlockDatabaseFile: interchaintest.DefaultBlockDatabaseFilepath(), + SkipPathCreation: false, + })) + t.Cleanup(func() { + _ = ic.Close() + }) + + // test IBC conformance + conformance.TestChainPair(t, ctx, client, network, chain, counterpartyChain, rf, rep, r, path) + + }) + } + +} From 18fdf1b61d6a947926a12f2231e3c5453ad331b1 Mon Sep 17 00:00:00 2001 From: Dan Kanefsky Date: Thu, 31 Aug 2023 15:12:00 -0700 Subject: [PATCH 19/22] relayer image for sdk boundary test --- examples/cosmos/sdk_boundary_test.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/examples/cosmos/sdk_boundary_test.go b/examples/cosmos/sdk_boundary_test.go index acf00d768..4e282a237 100644 --- a/examples/cosmos/sdk_boundary_test.go +++ b/examples/cosmos/sdk_boundary_test.go @@ -42,7 +42,7 @@ func TestSDKBoundaries(t *testing.T) { }, }, }, - relayerVersion: "v2.4.1", + relayerVersion: "colin-event-fix", }, { name: "sdk 47 - 50", @@ -57,7 +57,7 @@ func TestSDKBoundaries(t *testing.T) { }, }, }, - relayerVersion: "v2.4.1", + relayerVersion: "colin-event-fix", }, } From 9536aa656f64cb999633250488a9f6dd01a9f2f2 Mon Sep 17 00:00:00 2001 From: Dan Kanefsky Date: Fri, 1 Sep 2023 12:18:11 -0700 Subject: [PATCH 20/22] bump module to `v8` --- Makefile | 2 +- chain/cosmos/broadcaster.go | 4 ++-- chain/cosmos/chain_node.go | 8 ++++---- chain/cosmos/codec.go | 2 +- chain/cosmos/cosmos_chain.go | 12 ++++++------ chain/cosmos/genesis.go | 2 +- chain/cosmos/node_test.go | 2 +- chain/cosmos/osmosis.go | 2 +- chain/cosmos/poll.go | 4 ++-- chain/cosmos/sidecar.go | 4 ++-- chain/cosmos/wallet.go | 2 +- chain/internal/tendermint/tendermint_node.go | 6 +++--- chain/penumbra/penumbra_app_node.go | 4 ++-- chain/penumbra/penumbra_chain.go | 8 ++++---- chain/penumbra/wallet.go | 2 +- chainfactory.go | 6 +++--- chainset.go | 4 ++-- chainspec.go | 2 +- chainspec_test.go | 4 ++-- cmd/interchaintest/flags.go | 2 +- cmd/interchaintest/interchaintest_test.go | 16 ++++++++-------- cmd/interchaintest/matrix_test.go | 2 +- conformance/flush.go | 10 +++++----- conformance/relayersetup.go | 8 ++++---- conformance/test.go | 18 +++++++++--------- examples/cosmos/chain_param_change_test.go | 6 +++--- examples/cosmos/chain_upgrade_ibc_test.go | 14 +++++++------- examples/cosmos/light_client_test.go | 8 ++++---- examples/cosmos/sdk_boundary_test.go | 16 ++++++++-------- examples/cosmos/state_sync_test.go | 8 ++++---- examples/ibc/interchain_accounts_test.go | 12 ++++++------ examples/ibc/interchain_queries_test.go | 14 +++++++------- examples/ibc/learn_ibc_test.go | 6 +++--- examples/ibc/packet_forward_test.go | 10 +++++----- examples/penumbra/penumbra_chain_test.go | 6 +++--- go.mod | 2 +- interchain.go | 4 ++-- interchain_test.go | 12 ++++++------ internal/blockdb/messages_view_test.go | 10 +++++----- internal/blockdb/tui/model.go | 2 +- internal/blockdb/tui/model_test.go | 2 +- .../blockdb/tui/presenter/cosmos_message.go | 2 +- .../tui/presenter/cosmos_message_test.go | 2 +- internal/blockdb/tui/presenter/test_case.go | 2 +- .../blockdb/tui/presenter/test_case_test.go | 2 +- internal/blockdb/tui/presenter/tx.go | 2 +- internal/blockdb/tui/presenter/tx_test.go | 2 +- internal/blockdb/tui/update.go | 2 +- internal/blockdb/tui/update_test.go | 2 +- internal/blockdb/tui/views.go | 4 ++-- internal/dockerutil/container_lifecycle.go | 2 +- internal/dockerutil/fileretriever_test.go | 4 ++-- internal/dockerutil/filewriter_test.go | 4 ++-- internal/dockerutil/setup_test.go | 4 ++-- internal/mocktesting/t_test.go | 2 +- local-interchain/cmd/local-ic/new_chain.go | 2 +- local-interchain/go.mod | 4 ++-- local-interchain/interchain/config.go | 8 ++++---- local-interchain/interchain/genesis.go | 4 ++-- .../interchain/handlers/actions.go | 6 +++--- .../interchain/handlers/uploader.go | 2 +- local-interchain/interchain/ibc.go | 4 ++-- local-interchain/interchain/logs.go | 4 ++-- local-interchain/interchain/router/router.go | 6 +++--- local-interchain/interchain/start.go | 12 ++++++------ local-interchain/interchain/types/chain.go | 2 +- local-interchain/interchain/types/genesis.go | 2 +- local-interchain/interchain/types/types.go | 2 +- relayer/docker.go | 6 +++--- relayer/hermes/hermes_commander.go | 4 ++-- relayer/hermes/hermes_config.go | 2 ++ relayer/hermes/hermes_relayer.go | 4 ++-- relayer/hermes/hermes_wallet.go | 2 +- relayer/options.go | 2 +- relayer/rly/cosmos_relayer.go | 4 ++-- relayer/rly/wallet.go | 2 +- relayerfactory.go | 8 ++++---- tempdir_test.go | 4 ++-- test_setup.go | 8 ++++---- test_user.go | 6 +++--- testreporter/messages_test.go | 2 +- testreporter/reporter_test.go | 4 ++-- testutil/poll_for_state.go | 2 +- testutil/poll_for_state_test.go | 2 +- testutil/toml.go | 2 +- 85 files changed, 214 insertions(+), 212 deletions(-) diff --git a/Makefile b/Makefile index 6c9a6c720..586e7e4c6 100644 --- a/Makefile +++ b/Makefile @@ -6,7 +6,7 @@ help: ## Print this help message .PHONY: interchaintest interchaintest: gen ## Build interchaintest binary into ./bin - go test -ldflags "-X github.com/strangelove-ventures/interchaintest/v7/internal/version.GitSha=$(shell git describe --always --dirty)" -c -o ./bin/interchaintest ./cmd/interchaintest + go test -ldflags "-X github.com/strangelove-ventures/interchaintest/v8/internal/version.GitSha=$(shell git describe --always --dirty)" -c -o ./bin/interchaintest ./cmd/interchaintest .PHONY: test test: ## Run unit tests diff --git a/chain/cosmos/broadcaster.go b/chain/cosmos/broadcaster.go index fc378dd65..cc3eb9383 100644 --- a/chain/cosmos/broadcaster.go +++ b/chain/cosmos/broadcaster.go @@ -16,8 +16,8 @@ import ( "github.com/cosmos/cosmos-sdk/types/tx/signing" authTx "github.com/cosmos/cosmos-sdk/x/auth/tx" authtypes "github.com/cosmos/cosmos-sdk/x/auth/types" - "github.com/strangelove-ventures/interchaintest/v7/internal/dockerutil" - "github.com/strangelove-ventures/interchaintest/v7/testutil" + "github.com/strangelove-ventures/interchaintest/v8/internal/dockerutil" + "github.com/strangelove-ventures/interchaintest/v8/testutil" ) type ClientContextOpt func(clientContext client.Context) client.Context diff --git a/chain/cosmos/chain_node.go b/chain/cosmos/chain_node.go index 79f58dc22..623f37c77 100644 --- a/chain/cosmos/chain_node.go +++ b/chain/cosmos/chain_node.go @@ -35,10 +35,10 @@ import ( "go.uber.org/zap" "golang.org/x/sync/errgroup" - "github.com/strangelove-ventures/interchaintest/v7/ibc" - "github.com/strangelove-ventures/interchaintest/v7/internal/blockdb" - "github.com/strangelove-ventures/interchaintest/v7/internal/dockerutil" - "github.com/strangelove-ventures/interchaintest/v7/testutil" + "github.com/strangelove-ventures/interchaintest/v8/ibc" + "github.com/strangelove-ventures/interchaintest/v8/internal/blockdb" + "github.com/strangelove-ventures/interchaintest/v8/internal/dockerutil" + "github.com/strangelove-ventures/interchaintest/v8/testutil" ) // ChainNode represents a node in the test network that is being created diff --git a/chain/cosmos/codec.go b/chain/cosmos/codec.go index f8f53db39..6af50ecf0 100644 --- a/chain/cosmos/codec.go +++ b/chain/cosmos/codec.go @@ -25,7 +25,7 @@ import ( transfer "github.com/cosmos/ibc-go/v7/modules/apps/transfer" ibccore "github.com/cosmos/ibc-go/v7/modules/core" ibctm "github.com/cosmos/ibc-go/v7/modules/light-clients/07-tendermint" - ibcwasm "github.com/strangelove-ventures/interchaintest/v7/chain/cosmos/08-wasm-types" + ibcwasm "github.com/strangelove-ventures/interchaintest/v8/chain/cosmos/08-wasm-types" ) func DefaultEncoding() testutil.TestEncodingConfig { diff --git a/chain/cosmos/cosmos_chain.go b/chain/cosmos/cosmos_chain.go index 7e6f0901b..71c4ec9dd 100644 --- a/chain/cosmos/cosmos_chain.go +++ b/chain/cosmos/cosmos_chain.go @@ -30,12 +30,12 @@ import ( dockertypes "github.com/docker/docker/api/types" volumetypes "github.com/docker/docker/api/types/volume" "github.com/docker/docker/client" - wasmtypes "github.com/strangelove-ventures/interchaintest/v7/chain/cosmos/08-wasm-types" - "github.com/strangelove-ventures/interchaintest/v7/chain/internal/tendermint" - "github.com/strangelove-ventures/interchaintest/v7/ibc" - "github.com/strangelove-ventures/interchaintest/v7/internal/blockdb" - "github.com/strangelove-ventures/interchaintest/v7/internal/dockerutil" - "github.com/strangelove-ventures/interchaintest/v7/testutil" + wasmtypes "github.com/strangelove-ventures/interchaintest/v8/chain/cosmos/08-wasm-types" + "github.com/strangelove-ventures/interchaintest/v8/chain/internal/tendermint" + "github.com/strangelove-ventures/interchaintest/v8/ibc" + "github.com/strangelove-ventures/interchaintest/v8/internal/blockdb" + "github.com/strangelove-ventures/interchaintest/v8/internal/dockerutil" + "github.com/strangelove-ventures/interchaintest/v8/testutil" "go.uber.org/zap" "golang.org/x/sync/errgroup" "google.golang.org/grpc" diff --git a/chain/cosmos/genesis.go b/chain/cosmos/genesis.go index 75e13dcdb..afe765e9e 100644 --- a/chain/cosmos/genesis.go +++ b/chain/cosmos/genesis.go @@ -7,7 +7,7 @@ import ( "strings" "github.com/icza/dyno" - "github.com/strangelove-ventures/interchaintest/v7/ibc" + "github.com/strangelove-ventures/interchaintest/v8/ibc" ) type GenesisKV struct { diff --git a/chain/cosmos/node_test.go b/chain/cosmos/node_test.go index d4b4a9b54..e3223dbaf 100644 --- a/chain/cosmos/node_test.go +++ b/chain/cosmos/node_test.go @@ -5,7 +5,7 @@ import ( "testing" stakingtypes "github.com/cosmos/cosmos-sdk/x/staking/types" - "github.com/strangelove-ventures/interchaintest/v7/chain/cosmos" + "github.com/strangelove-ventures/interchaintest/v8/chain/cosmos" "github.com/stretchr/testify/require" ) diff --git a/chain/cosmos/osmosis.go b/chain/cosmos/osmosis.go index 330460af2..4b6546ccc 100644 --- a/chain/cosmos/osmosis.go +++ b/chain/cosmos/osmosis.go @@ -7,7 +7,7 @@ import ( "path/filepath" "strings" - "github.com/strangelove-ventures/interchaintest/v7/internal/dockerutil" + "github.com/strangelove-ventures/interchaintest/v8/internal/dockerutil" ) // OsmosisPoolParams defines parameters for creating an osmosis gamm liquidity pool diff --git a/chain/cosmos/poll.go b/chain/cosmos/poll.go index a2caa59e7..2f76cf846 100644 --- a/chain/cosmos/poll.go +++ b/chain/cosmos/poll.go @@ -6,8 +6,8 @@ import ( "fmt" codectypes "github.com/cosmos/cosmos-sdk/codec/types" - "github.com/strangelove-ventures/interchaintest/v7/ibc" - "github.com/strangelove-ventures/interchaintest/v7/testutil" + "github.com/strangelove-ventures/interchaintest/v8/ibc" + "github.com/strangelove-ventures/interchaintest/v8/testutil" ) // PollForProposalStatus attempts to find a proposal with matching ID and status. diff --git a/chain/cosmos/sidecar.go b/chain/cosmos/sidecar.go index c0d044596..3c2059bef 100644 --- a/chain/cosmos/sidecar.go +++ b/chain/cosmos/sidecar.go @@ -9,8 +9,8 @@ import ( "github.com/docker/go-connections/nat" "go.uber.org/zap" - "github.com/strangelove-ventures/interchaintest/v7/ibc" - "github.com/strangelove-ventures/interchaintest/v7/internal/dockerutil" + "github.com/strangelove-ventures/interchaintest/v8/ibc" + "github.com/strangelove-ventures/interchaintest/v8/internal/dockerutil" ) type SidecarProcesses []*SidecarProcess diff --git a/chain/cosmos/wallet.go b/chain/cosmos/wallet.go index d6caf15c8..2ee27bc08 100644 --- a/chain/cosmos/wallet.go +++ b/chain/cosmos/wallet.go @@ -2,7 +2,7 @@ package cosmos import ( "github.com/cosmos/cosmos-sdk/types" - "github.com/strangelove-ventures/interchaintest/v7/ibc" + "github.com/strangelove-ventures/interchaintest/v8/ibc" ) var _ ibc.Wallet = &CosmosWallet{} diff --git a/chain/internal/tendermint/tendermint_node.go b/chain/internal/tendermint/tendermint_node.go index fe42b4f7f..0fdae6f9f 100644 --- a/chain/internal/tendermint/tendermint_node.go +++ b/chain/internal/tendermint/tendermint_node.go @@ -17,9 +17,9 @@ import ( dockerclient "github.com/docker/docker/client" "github.com/docker/go-connections/nat" "github.com/hashicorp/go-version" - "github.com/strangelove-ventures/interchaintest/v7/ibc" - "github.com/strangelove-ventures/interchaintest/v7/internal/dockerutil" - "github.com/strangelove-ventures/interchaintest/v7/testutil" + "github.com/strangelove-ventures/interchaintest/v8/ibc" + "github.com/strangelove-ventures/interchaintest/v8/internal/dockerutil" + "github.com/strangelove-ventures/interchaintest/v8/testutil" "go.uber.org/zap" ) diff --git a/chain/penumbra/penumbra_app_node.go b/chain/penumbra/penumbra_app_node.go index 5f0d5b9e9..636422f75 100644 --- a/chain/penumbra/penumbra_app_node.go +++ b/chain/penumbra/penumbra_app_node.go @@ -10,8 +10,8 @@ import ( "github.com/docker/docker/client" "github.com/docker/go-connections/nat" - "github.com/strangelove-ventures/interchaintest/v7/ibc" - "github.com/strangelove-ventures/interchaintest/v7/internal/dockerutil" + "github.com/strangelove-ventures/interchaintest/v8/ibc" + "github.com/strangelove-ventures/interchaintest/v8/internal/dockerutil" "go.uber.org/zap" ) diff --git a/chain/penumbra/penumbra_chain.go b/chain/penumbra/penumbra_chain.go index 9939340e3..0a7fd4ada 100644 --- a/chain/penumbra/penumbra_chain.go +++ b/chain/penumbra/penumbra_chain.go @@ -20,10 +20,10 @@ import ( volumetypes "github.com/docker/docker/api/types/volume" "github.com/docker/docker/client" dockerclient "github.com/docker/docker/client" - "github.com/strangelove-ventures/interchaintest/v7/chain/internal/tendermint" - "github.com/strangelove-ventures/interchaintest/v7/ibc" - "github.com/strangelove-ventures/interchaintest/v7/internal/dockerutil" - "github.com/strangelove-ventures/interchaintest/v7/testutil" + "github.com/strangelove-ventures/interchaintest/v8/chain/internal/tendermint" + "github.com/strangelove-ventures/interchaintest/v8/ibc" + "github.com/strangelove-ventures/interchaintest/v8/internal/dockerutil" + "github.com/strangelove-ventures/interchaintest/v8/testutil" "go.uber.org/zap" "golang.org/x/sync/errgroup" ) diff --git a/chain/penumbra/wallet.go b/chain/penumbra/wallet.go index 4823ed388..fccce97ad 100644 --- a/chain/penumbra/wallet.go +++ b/chain/penumbra/wallet.go @@ -2,7 +2,7 @@ package penumbra import ( "github.com/cosmos/cosmos-sdk/types" - "github.com/strangelove-ventures/interchaintest/v7/ibc" + "github.com/strangelove-ventures/interchaintest/v8/ibc" ) var _ ibc.Wallet = &PenumbraWallet{} diff --git a/chainfactory.go b/chainfactory.go index 1d8e35ab7..d507740ee 100644 --- a/chainfactory.go +++ b/chainfactory.go @@ -7,9 +7,9 @@ import ( "strings" "sync" - "github.com/strangelove-ventures/interchaintest/v7/chain/cosmos" - "github.com/strangelove-ventures/interchaintest/v7/chain/penumbra" - "github.com/strangelove-ventures/interchaintest/v7/ibc" + "github.com/strangelove-ventures/interchaintest/v8/chain/cosmos" + "github.com/strangelove-ventures/interchaintest/v8/chain/penumbra" + "github.com/strangelove-ventures/interchaintest/v8/ibc" "go.uber.org/zap" "gopkg.in/yaml.v3" ) diff --git a/chainset.go b/chainset.go index 35502413e..25e6d7dc5 100644 --- a/chainset.go +++ b/chainset.go @@ -9,8 +9,8 @@ import ( "time" "github.com/docker/docker/client" - "github.com/strangelove-ventures/interchaintest/v7/ibc" - "github.com/strangelove-ventures/interchaintest/v7/internal/blockdb" + "github.com/strangelove-ventures/interchaintest/v8/ibc" + "github.com/strangelove-ventures/interchaintest/v8/internal/blockdb" "go.uber.org/multierr" "go.uber.org/zap" "golang.org/x/sync/errgroup" diff --git a/chainspec.go b/chainspec.go index 9e05a0fc2..5c45de301 100644 --- a/chainspec.go +++ b/chainspec.go @@ -8,7 +8,7 @@ import ( "sync" "sync/atomic" - "github.com/strangelove-ventures/interchaintest/v7/ibc" + "github.com/strangelove-ventures/interchaintest/v8/ibc" "go.uber.org/zap" ) diff --git a/chainspec_test.go b/chainspec_test.go index 24e25f2a3..d911147ab 100644 --- a/chainspec_test.go +++ b/chainspec_test.go @@ -5,8 +5,8 @@ import ( "testing" "github.com/google/go-cmp/cmp" - interchaintest "github.com/strangelove-ventures/interchaintest/v7" - "github.com/strangelove-ventures/interchaintest/v7/ibc" + interchaintest "github.com/strangelove-ventures/interchaintest/v8" + "github.com/strangelove-ventures/interchaintest/v8/ibc" "github.com/stretchr/testify/require" "go.uber.org/zap/zaptest" ) diff --git a/cmd/interchaintest/flags.go b/cmd/interchaintest/flags.go index b291dab01..e4413609b 100644 --- a/cmd/interchaintest/flags.go +++ b/cmd/interchaintest/flags.go @@ -6,7 +6,7 @@ import ( "os" "time" - interchaintest "github.com/strangelove-ventures/interchaintest/v7" + interchaintest "github.com/strangelove-ventures/interchaintest/v8" "go.uber.org/zap" "go.uber.org/zap/zapcore" ) diff --git a/cmd/interchaintest/interchaintest_test.go b/cmd/interchaintest/interchaintest_test.go index dd65f4b5d..e4c32c2e2 100644 --- a/cmd/interchaintest/interchaintest_test.go +++ b/cmd/interchaintest/interchaintest_test.go @@ -13,14 +13,14 @@ import ( "time" "github.com/rivo/tview" - interchaintest "github.com/strangelove-ventures/interchaintest/v7" - "github.com/strangelove-ventures/interchaintest/v7/conformance" - "github.com/strangelove-ventures/interchaintest/v7/ibc" - "github.com/strangelove-ventures/interchaintest/v7/internal/blockdb" - blockdbtui "github.com/strangelove-ventures/interchaintest/v7/internal/blockdb/tui" - "github.com/strangelove-ventures/interchaintest/v7/internal/version" - "github.com/strangelove-ventures/interchaintest/v7/relayer" - "github.com/strangelove-ventures/interchaintest/v7/testreporter" + interchaintest "github.com/strangelove-ventures/interchaintest/v8" + "github.com/strangelove-ventures/interchaintest/v8/conformance" + "github.com/strangelove-ventures/interchaintest/v8/ibc" + "github.com/strangelove-ventures/interchaintest/v8/internal/blockdb" + blockdbtui "github.com/strangelove-ventures/interchaintest/v8/internal/blockdb/tui" + "github.com/strangelove-ventures/interchaintest/v8/internal/version" + "github.com/strangelove-ventures/interchaintest/v8/relayer" + "github.com/strangelove-ventures/interchaintest/v8/testreporter" "go.uber.org/zap" ) diff --git a/cmd/interchaintest/matrix_test.go b/cmd/interchaintest/matrix_test.go index c06e98d73..98aac8892 100644 --- a/cmd/interchaintest/matrix_test.go +++ b/cmd/interchaintest/matrix_test.go @@ -5,7 +5,7 @@ import ( "encoding/json" "testing" - interchaintest "github.com/strangelove-ventures/interchaintest/v7" + interchaintest "github.com/strangelove-ventures/interchaintest/v8" "github.com/stretchr/testify/require" "go.uber.org/zap/zaptest" ) diff --git a/conformance/flush.go b/conformance/flush.go index 556442aa2..e8d508ca7 100644 --- a/conformance/flush.go +++ b/conformance/flush.go @@ -7,11 +7,11 @@ import ( "cosmossdk.io/math" "github.com/cosmos/cosmos-sdk/types" - "github.com/strangelove-ventures/interchaintest/v7" - "github.com/strangelove-ventures/interchaintest/v7/ibc" - "github.com/strangelove-ventures/interchaintest/v7/relayer" - "github.com/strangelove-ventures/interchaintest/v7/testreporter" - "github.com/strangelove-ventures/interchaintest/v7/testutil" + "github.com/strangelove-ventures/interchaintest/v8" + "github.com/strangelove-ventures/interchaintest/v8/ibc" + "github.com/strangelove-ventures/interchaintest/v8/relayer" + "github.com/strangelove-ventures/interchaintest/v8/testreporter" + "github.com/strangelove-ventures/interchaintest/v8/testutil" "github.com/stretchr/testify/require" ) diff --git a/conformance/relayersetup.go b/conformance/relayersetup.go index 4dc706235..487a112d5 100644 --- a/conformance/relayersetup.go +++ b/conformance/relayersetup.go @@ -7,10 +7,10 @@ import ( conntypes "github.com/cosmos/ibc-go/v7/modules/core/03-connection/types" "github.com/cosmos/ibc-go/v7/modules/core/exported" - "github.com/strangelove-ventures/interchaintest/v7" - "github.com/strangelove-ventures/interchaintest/v7/ibc" - "github.com/strangelove-ventures/interchaintest/v7/testreporter" - "github.com/strangelove-ventures/interchaintest/v7/testutil" + "github.com/strangelove-ventures/interchaintest/v8" + "github.com/strangelove-ventures/interchaintest/v8/ibc" + "github.com/strangelove-ventures/interchaintest/v8/testreporter" + "github.com/strangelove-ventures/interchaintest/v8/testutil" "github.com/stretchr/testify/require" "golang.org/x/sync/errgroup" ) diff --git a/conformance/test.go b/conformance/test.go index bf8b1f668..d75964aaa 100644 --- a/conformance/test.go +++ b/conformance/test.go @@ -14,8 +14,8 @@ // import ( // "testing" // -// "github.com/strangelove-ventures/interchaintest/v7/conformance" -// "github.com/strangelove-ventures/interchaintest/v7/ibc" +// "github.com/strangelove-ventures/interchaintest/v8/conformance" +// "github.com/strangelove-ventures/interchaintest/v8/ibc" // ) // // func TestMyRelayer(t *testing.T) { @@ -38,13 +38,13 @@ import ( "cosmossdk.io/math" transfertypes "github.com/cosmos/ibc-go/v7/modules/apps/transfer/types" "github.com/docker/docker/client" - "github.com/strangelove-ventures/interchaintest/v7" - "github.com/strangelove-ventures/interchaintest/v7/chain/cosmos" - "github.com/strangelove-ventures/interchaintest/v7/ibc" - "github.com/strangelove-ventures/interchaintest/v7/internal/dockerutil" - "github.com/strangelove-ventures/interchaintest/v7/relayer" - "github.com/strangelove-ventures/interchaintest/v7/testreporter" - "github.com/strangelove-ventures/interchaintest/v7/testutil" + "github.com/strangelove-ventures/interchaintest/v8" + "github.com/strangelove-ventures/interchaintest/v8/chain/cosmos" + "github.com/strangelove-ventures/interchaintest/v8/ibc" + "github.com/strangelove-ventures/interchaintest/v8/internal/dockerutil" + "github.com/strangelove-ventures/interchaintest/v8/relayer" + "github.com/strangelove-ventures/interchaintest/v8/testreporter" + "github.com/strangelove-ventures/interchaintest/v8/testutil" "github.com/stretchr/testify/require" "golang.org/x/sync/errgroup" ) diff --git a/examples/cosmos/chain_param_change_test.go b/examples/cosmos/chain_param_change_test.go index 930319821..7551ab84d 100644 --- a/examples/cosmos/chain_param_change_test.go +++ b/examples/cosmos/chain_param_change_test.go @@ -6,9 +6,9 @@ import ( "testing" paramsutils "github.com/cosmos/cosmos-sdk/x/params/client/utils" - "github.com/strangelove-ventures/interchaintest/v7" - "github.com/strangelove-ventures/interchaintest/v7/chain/cosmos" - "github.com/strangelove-ventures/interchaintest/v7/ibc" + "github.com/strangelove-ventures/interchaintest/v8" + "github.com/strangelove-ventures/interchaintest/v8/chain/cosmos" + "github.com/strangelove-ventures/interchaintest/v8/ibc" "github.com/stretchr/testify/require" "go.uber.org/zap/zaptest" ) diff --git a/examples/cosmos/chain_upgrade_ibc_test.go b/examples/cosmos/chain_upgrade_ibc_test.go index 2a97aef1e..413d87286 100644 --- a/examples/cosmos/chain_upgrade_ibc_test.go +++ b/examples/cosmos/chain_upgrade_ibc_test.go @@ -5,13 +5,13 @@ import ( "testing" "time" - interchaintest "github.com/strangelove-ventures/interchaintest/v7" - "github.com/strangelove-ventures/interchaintest/v7/chain/cosmos" - "github.com/strangelove-ventures/interchaintest/v7/conformance" - "github.com/strangelove-ventures/interchaintest/v7/ibc" - "github.com/strangelove-ventures/interchaintest/v7/relayer" - "github.com/strangelove-ventures/interchaintest/v7/testreporter" - "github.com/strangelove-ventures/interchaintest/v7/testutil" + interchaintest "github.com/strangelove-ventures/interchaintest/v8" + "github.com/strangelove-ventures/interchaintest/v8/chain/cosmos" + "github.com/strangelove-ventures/interchaintest/v8/conformance" + "github.com/strangelove-ventures/interchaintest/v8/ibc" + "github.com/strangelove-ventures/interchaintest/v8/relayer" + "github.com/strangelove-ventures/interchaintest/v8/testreporter" + "github.com/strangelove-ventures/interchaintest/v8/testutil" "github.com/stretchr/testify/require" "go.uber.org/zap/zaptest" ) diff --git a/examples/cosmos/light_client_test.go b/examples/cosmos/light_client_test.go index 89cd6f59d..ba26b4d26 100644 --- a/examples/cosmos/light_client_test.go +++ b/examples/cosmos/light_client_test.go @@ -6,10 +6,10 @@ import ( "cosmossdk.io/math" clienttypes "github.com/cosmos/ibc-go/v7/modules/core/02-client/types" - "github.com/strangelove-ventures/interchaintest/v7" - "github.com/strangelove-ventures/interchaintest/v7/chain/cosmos" - "github.com/strangelove-ventures/interchaintest/v7/ibc" - "github.com/strangelove-ventures/interchaintest/v7/testreporter" + "github.com/strangelove-ventures/interchaintest/v8" + "github.com/strangelove-ventures/interchaintest/v8/chain/cosmos" + "github.com/strangelove-ventures/interchaintest/v8/ibc" + "github.com/strangelove-ventures/interchaintest/v8/testreporter" "github.com/stretchr/testify/require" "go.uber.org/zap/zaptest" ) diff --git a/examples/cosmos/sdk_boundary_test.go b/examples/cosmos/sdk_boundary_test.go index 4e282a237..d7654a67d 100644 --- a/examples/cosmos/sdk_boundary_test.go +++ b/examples/cosmos/sdk_boundary_test.go @@ -4,13 +4,13 @@ import ( "context" "testing" - interchaintest "github.com/strangelove-ventures/interchaintest/v7" - "github.com/strangelove-ventures/interchaintest/v7/chain/cosmos" - "github.com/strangelove-ventures/interchaintest/v7/conformance" - "github.com/strangelove-ventures/interchaintest/v7/ibc" - "github.com/strangelove-ventures/interchaintest/v7/relayer" - "github.com/strangelove-ventures/interchaintest/v7/relayer/rly" - "github.com/strangelove-ventures/interchaintest/v7/testreporter" + interchaintest "github.com/strangelove-ventures/interchaintest/v8" + "github.com/strangelove-ventures/interchaintest/v8/chain/cosmos" + "github.com/strangelove-ventures/interchaintest/v8/conformance" + "github.com/strangelove-ventures/interchaintest/v8/ibc" + "github.com/strangelove-ventures/interchaintest/v8/relayer" + "github.com/strangelove-ventures/interchaintest/v8/relayer/rly" + "github.com/strangelove-ventures/interchaintest/v8/testreporter" "github.com/stretchr/testify/require" "go.uber.org/zap/zaptest" ) @@ -45,7 +45,7 @@ func TestSDKBoundaries(t *testing.T) { relayerVersion: "colin-event-fix", }, { - name: "sdk 47 - 50", + name: "sdk 47 <-> 50", chainSpecs: []*interchaintest.ChainSpec{ { Name: "ibc-go-simd", ChainName: "simd-47", Version: "v7.2.0", //sdk 0.47.3 diff --git a/examples/cosmos/state_sync_test.go b/examples/cosmos/state_sync_test.go index 8e7db028c..181ae3050 100644 --- a/examples/cosmos/state_sync_test.go +++ b/examples/cosmos/state_sync_test.go @@ -7,10 +7,10 @@ import ( "testing" "time" - interchaintest "github.com/strangelove-ventures/interchaintest/v7" - "github.com/strangelove-ventures/interchaintest/v7/chain/cosmos" - "github.com/strangelove-ventures/interchaintest/v7/ibc" - "github.com/strangelove-ventures/interchaintest/v7/testutil" + interchaintest "github.com/strangelove-ventures/interchaintest/v8" + "github.com/strangelove-ventures/interchaintest/v8/chain/cosmos" + "github.com/strangelove-ventures/interchaintest/v8/ibc" + "github.com/strangelove-ventures/interchaintest/v8/testutil" "github.com/stretchr/testify/require" "go.uber.org/zap/zaptest" ) diff --git a/examples/ibc/interchain_accounts_test.go b/examples/ibc/interchain_accounts_test.go index 2ce1796fb..defd58537 100644 --- a/examples/ibc/interchain_accounts_test.go +++ b/examples/ibc/interchain_accounts_test.go @@ -10,12 +10,12 @@ import ( "cosmossdk.io/math" "github.com/cosmos/cosmos-sdk/crypto/keyring" chantypes "github.com/cosmos/ibc-go/v7/modules/core/04-channel/types" - "github.com/strangelove-ventures/interchaintest/v7" - "github.com/strangelove-ventures/interchaintest/v7/chain/cosmos" - "github.com/strangelove-ventures/interchaintest/v7/ibc" - "github.com/strangelove-ventures/interchaintest/v7/relayer" - "github.com/strangelove-ventures/interchaintest/v7/testreporter" - "github.com/strangelove-ventures/interchaintest/v7/testutil" + "github.com/strangelove-ventures/interchaintest/v8" + "github.com/strangelove-ventures/interchaintest/v8/chain/cosmos" + "github.com/strangelove-ventures/interchaintest/v8/ibc" + "github.com/strangelove-ventures/interchaintest/v8/relayer" + "github.com/strangelove-ventures/interchaintest/v8/testreporter" + "github.com/strangelove-ventures/interchaintest/v8/testutil" "github.com/stretchr/testify/require" "go.uber.org/zap/zaptest" ) diff --git a/examples/ibc/interchain_queries_test.go b/examples/ibc/interchain_queries_test.go index d1f159584..6b63c6b2b 100644 --- a/examples/ibc/interchain_queries_test.go +++ b/examples/ibc/interchain_queries_test.go @@ -9,13 +9,13 @@ import ( "github.com/cosmos/cosmos-sdk/crypto/keyring" "github.com/icza/dyno" - interchaintest "github.com/strangelove-ventures/interchaintest/v7" - "github.com/strangelove-ventures/interchaintest/v7/chain/cosmos" - "github.com/strangelove-ventures/interchaintest/v7/ibc" - "github.com/strangelove-ventures/interchaintest/v7/internal/dockerutil" - "github.com/strangelove-ventures/interchaintest/v7/relayer" - "github.com/strangelove-ventures/interchaintest/v7/testreporter" - "github.com/strangelove-ventures/interchaintest/v7/testutil" + interchaintest "github.com/strangelove-ventures/interchaintest/v8" + "github.com/strangelove-ventures/interchaintest/v8/chain/cosmos" + "github.com/strangelove-ventures/interchaintest/v8/ibc" + "github.com/strangelove-ventures/interchaintest/v8/internal/dockerutil" + "github.com/strangelove-ventures/interchaintest/v8/relayer" + "github.com/strangelove-ventures/interchaintest/v8/testreporter" + "github.com/strangelove-ventures/interchaintest/v8/testutil" "github.com/stretchr/testify/require" "go.uber.org/zap/zaptest" ) diff --git a/examples/ibc/learn_ibc_test.go b/examples/ibc/learn_ibc_test.go index e96403c7a..cd537599b 100644 --- a/examples/ibc/learn_ibc_test.go +++ b/examples/ibc/learn_ibc_test.go @@ -8,9 +8,9 @@ import ( "cosmossdk.io/math" transfertypes "github.com/cosmos/ibc-go/v7/modules/apps/transfer/types" - "github.com/strangelove-ventures/interchaintest/v7" - "github.com/strangelove-ventures/interchaintest/v7/ibc" - "github.com/strangelove-ventures/interchaintest/v7/testreporter" + "github.com/strangelove-ventures/interchaintest/v8" + "github.com/strangelove-ventures/interchaintest/v8/ibc" + "github.com/strangelove-ventures/interchaintest/v8/testreporter" "github.com/stretchr/testify/require" "go.uber.org/zap/zaptest" ) diff --git a/examples/ibc/packet_forward_test.go b/examples/ibc/packet_forward_test.go index 396741328..951080265 100644 --- a/examples/ibc/packet_forward_test.go +++ b/examples/ibc/packet_forward_test.go @@ -8,11 +8,11 @@ import ( "cosmossdk.io/math" transfertypes "github.com/cosmos/ibc-go/v7/modules/apps/transfer/types" - "github.com/strangelove-ventures/interchaintest/v7" - "github.com/strangelove-ventures/interchaintest/v7/chain/cosmos" - "github.com/strangelove-ventures/interchaintest/v7/ibc" - "github.com/strangelove-ventures/interchaintest/v7/testreporter" - "github.com/strangelove-ventures/interchaintest/v7/testutil" + "github.com/strangelove-ventures/interchaintest/v8" + "github.com/strangelove-ventures/interchaintest/v8/chain/cosmos" + "github.com/strangelove-ventures/interchaintest/v8/ibc" + "github.com/strangelove-ventures/interchaintest/v8/testreporter" + "github.com/strangelove-ventures/interchaintest/v8/testutil" "github.com/stretchr/testify/require" "go.uber.org/zap/zaptest" ) diff --git a/examples/penumbra/penumbra_chain_test.go b/examples/penumbra/penumbra_chain_test.go index 494b77c0a..8697b6e27 100644 --- a/examples/penumbra/penumbra_chain_test.go +++ b/examples/penumbra/penumbra_chain_test.go @@ -4,9 +4,9 @@ import ( "context" "testing" - interchaintest "github.com/strangelove-ventures/interchaintest/v7" - "github.com/strangelove-ventures/interchaintest/v7/ibc" - "github.com/strangelove-ventures/interchaintest/v7/testutil" + interchaintest "github.com/strangelove-ventures/interchaintest/v8" + "github.com/strangelove-ventures/interchaintest/v8/ibc" + "github.com/strangelove-ventures/interchaintest/v8/testutil" "github.com/stretchr/testify/require" "go.uber.org/zap/zaptest" ) diff --git a/go.mod b/go.mod index 5412de41e..36438eb22 100644 --- a/go.mod +++ b/go.mod @@ -1,4 +1,4 @@ -module github.com/strangelove-ventures/interchaintest/v7 +module github.com/strangelove-ventures/interchaintest/v8 go 1.21 diff --git a/interchain.go b/interchain.go index ab8093d79..f81e15cae 100644 --- a/interchain.go +++ b/interchain.go @@ -6,8 +6,8 @@ import ( "cosmossdk.io/math" "github.com/docker/docker/client" - "github.com/strangelove-ventures/interchaintest/v7/ibc" - "github.com/strangelove-ventures/interchaintest/v7/testreporter" + "github.com/strangelove-ventures/interchaintest/v8/ibc" + "github.com/strangelove-ventures/interchaintest/v8/testreporter" "go.uber.org/zap" "golang.org/x/sync/errgroup" ) diff --git a/interchain_test.go b/interchain_test.go index f59f02744..a1eb21a1a 100644 --- a/interchain_test.go +++ b/interchain_test.go @@ -12,12 +12,12 @@ import ( "github.com/cosmos/cosmos-sdk/crypto/hd" "github.com/cosmos/cosmos-sdk/crypto/keyring" sdk "github.com/cosmos/cosmos-sdk/types" - "github.com/strangelove-ventures/interchaintest/v7" - "github.com/strangelove-ventures/interchaintest/v7/chain/cosmos" - "github.com/strangelove-ventures/interchaintest/v7/ibc" - "github.com/strangelove-ventures/interchaintest/v7/relayer/rly" - "github.com/strangelove-ventures/interchaintest/v7/testreporter" - "github.com/strangelove-ventures/interchaintest/v7/testutil" + "github.com/strangelove-ventures/interchaintest/v8" + "github.com/strangelove-ventures/interchaintest/v8/chain/cosmos" + "github.com/strangelove-ventures/interchaintest/v8/ibc" + "github.com/strangelove-ventures/interchaintest/v8/relayer/rly" + "github.com/strangelove-ventures/interchaintest/v8/testreporter" + "github.com/strangelove-ventures/interchaintest/v8/testutil" "github.com/stretchr/testify/require" "go.uber.org/zap" "go.uber.org/zap/zaptest" diff --git a/internal/blockdb/messages_view_test.go b/internal/blockdb/messages_view_test.go index addfb2240..442c563a7 100644 --- a/internal/blockdb/messages_view_test.go +++ b/internal/blockdb/messages_view_test.go @@ -11,11 +11,11 @@ import ( "cosmossdk.io/math" "github.com/cosmos/cosmos-sdk/types" - "github.com/strangelove-ventures/interchaintest/v7" - "github.com/strangelove-ventures/interchaintest/v7/ibc" - "github.com/strangelove-ventures/interchaintest/v7/relayer" - "github.com/strangelove-ventures/interchaintest/v7/testreporter" - "github.com/strangelove-ventures/interchaintest/v7/testutil" + "github.com/strangelove-ventures/interchaintest/v8" + "github.com/strangelove-ventures/interchaintest/v8/ibc" + "github.com/strangelove-ventures/interchaintest/v8/relayer" + "github.com/strangelove-ventures/interchaintest/v8/testreporter" + "github.com/strangelove-ventures/interchaintest/v8/testutil" "github.com/stretchr/testify/require" "go.uber.org/zap/zaptest" ) diff --git a/internal/blockdb/tui/model.go b/internal/blockdb/tui/model.go index 169297237..12206c8fe 100644 --- a/internal/blockdb/tui/model.go +++ b/internal/blockdb/tui/model.go @@ -6,7 +6,7 @@ import ( "github.com/atotto/clipboard" "github.com/rivo/tview" - "github.com/strangelove-ventures/interchaintest/v7/internal/blockdb" + "github.com/strangelove-ventures/interchaintest/v8/internal/blockdb" ) //go:generate go run golang.org/x/tools/cmd/stringer -type=mainContent diff --git a/internal/blockdb/tui/model_test.go b/internal/blockdb/tui/model_test.go index 0cdce5cb7..91f66492b 100644 --- a/internal/blockdb/tui/model_test.go +++ b/internal/blockdb/tui/model_test.go @@ -4,7 +4,7 @@ import ( "testing" "time" - "github.com/strangelove-ventures/interchaintest/v7/internal/blockdb" + "github.com/strangelove-ventures/interchaintest/v8/internal/blockdb" "github.com/stretchr/testify/require" ) diff --git a/internal/blockdb/tui/presenter/cosmos_message.go b/internal/blockdb/tui/presenter/cosmos_message.go index ad7795d5f..026453a14 100644 --- a/internal/blockdb/tui/presenter/cosmos_message.go +++ b/internal/blockdb/tui/presenter/cosmos_message.go @@ -4,7 +4,7 @@ import ( "strconv" "strings" - "github.com/strangelove-ventures/interchaintest/v7/internal/blockdb" + "github.com/strangelove-ventures/interchaintest/v8/internal/blockdb" ) // CosmosMessage presents a blockdb.CosmosMessageResult. diff --git a/internal/blockdb/tui/presenter/cosmos_message_test.go b/internal/blockdb/tui/presenter/cosmos_message_test.go index 67a29f9ec..8e8cec90a 100644 --- a/internal/blockdb/tui/presenter/cosmos_message_test.go +++ b/internal/blockdb/tui/presenter/cosmos_message_test.go @@ -4,7 +4,7 @@ import ( "database/sql" "testing" - "github.com/strangelove-ventures/interchaintest/v7/internal/blockdb" + "github.com/strangelove-ventures/interchaintest/v8/internal/blockdb" "github.com/stretchr/testify/require" ) diff --git a/internal/blockdb/tui/presenter/test_case.go b/internal/blockdb/tui/presenter/test_case.go index 1dd3334a4..168246f53 100644 --- a/internal/blockdb/tui/presenter/test_case.go +++ b/internal/blockdb/tui/presenter/test_case.go @@ -3,7 +3,7 @@ package presenter import ( "strconv" - "github.com/strangelove-ventures/interchaintest/v7/internal/blockdb" + "github.com/strangelove-ventures/interchaintest/v8/internal/blockdb" ) // TestCase presents a blockdb.TestCaseResult. diff --git a/internal/blockdb/tui/presenter/test_case_test.go b/internal/blockdb/tui/presenter/test_case_test.go index 82af43cda..94b44dae5 100644 --- a/internal/blockdb/tui/presenter/test_case_test.go +++ b/internal/blockdb/tui/presenter/test_case_test.go @@ -5,7 +5,7 @@ import ( "testing" "time" - "github.com/strangelove-ventures/interchaintest/v7/internal/blockdb" + "github.com/strangelove-ventures/interchaintest/v8/internal/blockdb" "github.com/stretchr/testify/require" ) diff --git a/internal/blockdb/tui/presenter/tx.go b/internal/blockdb/tui/presenter/tx.go index dc9219cd0..6b393d8b5 100644 --- a/internal/blockdb/tui/presenter/tx.go +++ b/internal/blockdb/tui/presenter/tx.go @@ -6,7 +6,7 @@ import ( "strconv" "sync" - "github.com/strangelove-ventures/interchaintest/v7/internal/blockdb" + "github.com/strangelove-ventures/interchaintest/v8/internal/blockdb" ) var bufPool = sync.Pool{New: func() any { return new(bytes.Buffer) }} diff --git a/internal/blockdb/tui/presenter/tx_test.go b/internal/blockdb/tui/presenter/tx_test.go index 3bceb3eef..12df5cf0a 100644 --- a/internal/blockdb/tui/presenter/tx_test.go +++ b/internal/blockdb/tui/presenter/tx_test.go @@ -4,7 +4,7 @@ import ( "encoding/json" "testing" - "github.com/strangelove-ventures/interchaintest/v7/internal/blockdb" + "github.com/strangelove-ventures/interchaintest/v8/internal/blockdb" "github.com/stretchr/testify/require" ) diff --git a/internal/blockdb/tui/update.go b/internal/blockdb/tui/update.go index a6acbd253..9771a78d6 100644 --- a/internal/blockdb/tui/update.go +++ b/internal/blockdb/tui/update.go @@ -7,7 +7,7 @@ import ( "github.com/gdamore/tcell/v2" "github.com/rivo/tview" - "github.com/strangelove-ventures/interchaintest/v7/internal/blockdb/tui/presenter" + "github.com/strangelove-ventures/interchaintest/v8/internal/blockdb/tui/presenter" ) // Update should be the argument for *(tview.Application).SetInputCapture. diff --git a/internal/blockdb/tui/update_test.go b/internal/blockdb/tui/update_test.go index 89a7afb4b..4cff91cf6 100644 --- a/internal/blockdb/tui/update_test.go +++ b/internal/blockdb/tui/update_test.go @@ -9,7 +9,7 @@ import ( "github.com/gdamore/tcell/v2" "github.com/rivo/tview" - "github.com/strangelove-ventures/interchaintest/v7/internal/blockdb" + "github.com/strangelove-ventures/interchaintest/v8/internal/blockdb" "github.com/stretchr/testify/require" ) diff --git a/internal/blockdb/tui/views.go b/internal/blockdb/tui/views.go index 7c02f70c6..c94824530 100644 --- a/internal/blockdb/tui/views.go +++ b/internal/blockdb/tui/views.go @@ -8,8 +8,8 @@ import ( "github.com/gdamore/tcell/v2" "github.com/rivo/tview" - "github.com/strangelove-ventures/interchaintest/v7/internal/blockdb" - "github.com/strangelove-ventures/interchaintest/v7/internal/blockdb/tui/presenter" + "github.com/strangelove-ventures/interchaintest/v8/internal/blockdb" + "github.com/strangelove-ventures/interchaintest/v8/internal/blockdb/tui/presenter" ) func headerView(m *Model) *tview.Flex { diff --git a/internal/dockerutil/container_lifecycle.go b/internal/dockerutil/container_lifecycle.go index be7b7f7e3..264d8f82b 100644 --- a/internal/dockerutil/container_lifecycle.go +++ b/internal/dockerutil/container_lifecycle.go @@ -14,7 +14,7 @@ import ( "github.com/docker/go-connections/nat" "go.uber.org/zap" - "github.com/strangelove-ventures/interchaintest/v7/ibc" + "github.com/strangelove-ventures/interchaintest/v8/ibc" ) type ContainerLifecycle struct { diff --git a/internal/dockerutil/fileretriever_test.go b/internal/dockerutil/fileretriever_test.go index c73aa1c21..e9157faf8 100644 --- a/internal/dockerutil/fileretriever_test.go +++ b/internal/dockerutil/fileretriever_test.go @@ -5,8 +5,8 @@ import ( "testing" volumetypes "github.com/docker/docker/api/types/volume" - interchaintest "github.com/strangelove-ventures/interchaintest/v7" - "github.com/strangelove-ventures/interchaintest/v7/internal/dockerutil" + interchaintest "github.com/strangelove-ventures/interchaintest/v8" + "github.com/strangelove-ventures/interchaintest/v8/internal/dockerutil" "github.com/stretchr/testify/require" "go.uber.org/zap/zaptest" ) diff --git a/internal/dockerutil/filewriter_test.go b/internal/dockerutil/filewriter_test.go index cb985eabb..bf5001540 100644 --- a/internal/dockerutil/filewriter_test.go +++ b/internal/dockerutil/filewriter_test.go @@ -5,8 +5,8 @@ import ( "testing" volumetypes "github.com/docker/docker/api/types/volume" - interchaintest "github.com/strangelove-ventures/interchaintest/v7" - "github.com/strangelove-ventures/interchaintest/v7/internal/dockerutil" + interchaintest "github.com/strangelove-ventures/interchaintest/v8" + "github.com/strangelove-ventures/interchaintest/v8/internal/dockerutil" "github.com/stretchr/testify/require" "go.uber.org/zap/zaptest" ) diff --git a/internal/dockerutil/setup_test.go b/internal/dockerutil/setup_test.go index 007df13d3..020a45073 100644 --- a/internal/dockerutil/setup_test.go +++ b/internal/dockerutil/setup_test.go @@ -7,8 +7,8 @@ import ( volumetypes "github.com/docker/docker/api/types/volume" "github.com/docker/docker/errdefs" - "github.com/strangelove-ventures/interchaintest/v7/internal/dockerutil" - "github.com/strangelove-ventures/interchaintest/v7/internal/mocktesting" + "github.com/strangelove-ventures/interchaintest/v8/internal/dockerutil" + "github.com/strangelove-ventures/interchaintest/v8/internal/mocktesting" "github.com/stretchr/testify/require" ) diff --git a/internal/mocktesting/t_test.go b/internal/mocktesting/t_test.go index 7779487d2..fbb84912a 100644 --- a/internal/mocktesting/t_test.go +++ b/internal/mocktesting/t_test.go @@ -4,7 +4,7 @@ import ( "testing" "time" - "github.com/strangelove-ventures/interchaintest/v7/internal/mocktesting" + "github.com/strangelove-ventures/interchaintest/v8/internal/mocktesting" "github.com/stretchr/testify/require" ) diff --git a/local-interchain/cmd/local-ic/new_chain.go b/local-interchain/cmd/local-ic/new_chain.go index 30715be23..f27bc0c44 100644 --- a/local-interchain/cmd/local-ic/new_chain.go +++ b/local-interchain/cmd/local-ic/new_chain.go @@ -12,7 +12,7 @@ import ( "strings" "github.com/spf13/cobra" - "github.com/strangelove-ventures/interchaintest/v7/chain/cosmos" + "github.com/strangelove-ventures/interchaintest/v8/chain/cosmos" ictypes "github.com/strangelove-ventures/localinterchain/interchain/types" "github.com/tyler-smith/go-bip39" diff --git a/local-interchain/go.mod b/local-interchain/go.mod index c82f7e55f..ace549025 100644 --- a/local-interchain/go.mod +++ b/local-interchain/go.mod @@ -7,14 +7,14 @@ replace ( github.com/ChainSafe/go-schnorrkel/1 => github.com/ChainSafe/go-schnorrkel v1.0.0 github.com/btcsuite/btcd => github.com/btcsuite/btcd v0.22.2 //indirect github.com/gogo/protobuf => github.com/regen-network/protobuf v1.3.3-alpha.regen.1 - github.com/strangelove-ventures/interchaintest/v7 => ../ + github.com/strangelove-ventures/interchaintest/v8 => ../ github.com/vedhavyas/go-subkey => github.com/strangelove-ventures/go-subkey v1.0.7 ) require ( github.com/cosmos/cosmos-sdk v0.47.4 github.com/cosmos/ibc-go/v7 v7.2.0 // indirect - github.com/strangelove-ventures/interchaintest/v7 v7.0.0-20230508154211-ebc1cbd6d88e + github.com/strangelove-ventures/interchaintest/v8 v7.0.0-20230508154211-ebc1cbd6d88e github.com/tyler-smith/go-bip39 v1.1.0 go.uber.org/zap v1.24.0 diff --git a/local-interchain/interchain/config.go b/local-interchain/interchain/config.go index f726274db..c3dc8faf1 100644 --- a/local-interchain/interchain/config.go +++ b/local-interchain/interchain/config.go @@ -11,10 +11,10 @@ import ( types "github.com/strangelove-ventures/localinterchain/interchain/types" "github.com/strangelove-ventures/localinterchain/interchain/util" - "github.com/strangelove-ventures/interchaintest/v7" - "github.com/strangelove-ventures/interchaintest/v7/chain/cosmos" - "github.com/strangelove-ventures/interchaintest/v7/ibc" - "github.com/strangelove-ventures/interchaintest/v7/testutil" + "github.com/strangelove-ventures/interchaintest/v8" + "github.com/strangelove-ventures/interchaintest/v8/chain/cosmos" + "github.com/strangelove-ventures/interchaintest/v8/ibc" + "github.com/strangelove-ventures/interchaintest/v8/testutil" ) func loadConfig(config *types.Config, filepath string) (*types.Config, error) { diff --git a/local-interchain/interchain/genesis.go b/local-interchain/interchain/genesis.go index 4daae2e28..e8eef5681 100644 --- a/local-interchain/interchain/genesis.go +++ b/local-interchain/interchain/genesis.go @@ -6,8 +6,8 @@ import ( "strings" sdk "github.com/cosmos/cosmos-sdk/types" - "github.com/strangelove-ventures/interchaintest/v7/chain/cosmos" - "github.com/strangelove-ventures/interchaintest/v7/ibc" + "github.com/strangelove-ventures/interchaintest/v8/chain/cosmos" + "github.com/strangelove-ventures/interchaintest/v8/ibc" types "github.com/strangelove-ventures/localinterchain/interchain/types" ) diff --git a/local-interchain/interchain/handlers/actions.go b/local-interchain/interchain/handlers/actions.go index 8333a1cf7..5aba9fd2d 100644 --- a/local-interchain/interchain/handlers/actions.go +++ b/local-interchain/interchain/handlers/actions.go @@ -9,9 +9,9 @@ import ( "github.com/strangelove-ventures/localinterchain/interchain/util" - "github.com/strangelove-ventures/interchaintest/v7" - "github.com/strangelove-ventures/interchaintest/v7/chain/cosmos" - "github.com/strangelove-ventures/interchaintest/v7/ibc" + "github.com/strangelove-ventures/interchaintest/v8" + "github.com/strangelove-ventures/interchaintest/v8/chain/cosmos" + "github.com/strangelove-ventures/interchaintest/v8/ibc" ) type actions struct { diff --git a/local-interchain/interchain/handlers/uploader.go b/local-interchain/interchain/handlers/uploader.go index 51f2749b0..f2eec0466 100644 --- a/local-interchain/interchain/handlers/uploader.go +++ b/local-interchain/interchain/handlers/uploader.go @@ -7,7 +7,7 @@ import ( "log" "net/http" - "github.com/strangelove-ventures/interchaintest/v7/chain/cosmos" + "github.com/strangelove-ventures/interchaintest/v8/chain/cosmos" "github.com/strangelove-ventures/localinterchain/interchain/util" ) diff --git a/local-interchain/interchain/ibc.go b/local-interchain/interchain/ibc.go index e7fc9789c..38931f773 100644 --- a/local-interchain/interchain/ibc.go +++ b/local-interchain/interchain/ibc.go @@ -4,8 +4,8 @@ import ( "context" "fmt" - "github.com/strangelove-ventures/interchaintest/v7" - "github.com/strangelove-ventures/interchaintest/v7/ibc" + "github.com/strangelove-ventures/interchaintest/v8" + "github.com/strangelove-ventures/interchaintest/v8/ibc" types "github.com/strangelove-ventures/localinterchain/interchain/types" ) diff --git a/local-interchain/interchain/logs.go b/local-interchain/interchain/logs.go index fef5e6fa3..3640ba270 100644 --- a/local-interchain/interchain/logs.go +++ b/local-interchain/interchain/logs.go @@ -6,8 +6,8 @@ import ( "path/filepath" "time" - "github.com/strangelove-ventures/interchaintest/v7/chain/cosmos" - "github.com/strangelove-ventures/interchaintest/v7/ibc" + "github.com/strangelove-ventures/interchaintest/v8/chain/cosmos" + "github.com/strangelove-ventures/interchaintest/v8/ibc" types "github.com/strangelove-ventures/localinterchain/interchain/types" "go.uber.org/zap" "go.uber.org/zap/zapcore" diff --git a/local-interchain/interchain/router/router.go b/local-interchain/interchain/router/router.go index 98a768564..6f67847b4 100644 --- a/local-interchain/interchain/router/router.go +++ b/local-interchain/interchain/router/router.go @@ -6,9 +6,9 @@ import ( "net/http" "github.com/gorilla/mux" - "github.com/strangelove-ventures/interchaintest/v7" - "github.com/strangelove-ventures/interchaintest/v7/chain/cosmos" - "github.com/strangelove-ventures/interchaintest/v7/ibc" + "github.com/strangelove-ventures/interchaintest/v8" + "github.com/strangelove-ventures/interchaintest/v8/chain/cosmos" + "github.com/strangelove-ventures/interchaintest/v8/ibc" ictypes "github.com/strangelove-ventures/localinterchain/interchain/types" "github.com/strangelove-ventures/localinterchain/interchain/util" diff --git a/local-interchain/interchain/start.go b/local-interchain/interchain/start.go index b40595059..dba47f910 100644 --- a/local-interchain/interchain/start.go +++ b/local-interchain/interchain/start.go @@ -8,12 +8,12 @@ import ( "net/http" "strings" - "github.com/strangelove-ventures/interchaintest/v7" - "github.com/strangelove-ventures/interchaintest/v7/chain/cosmos" - "github.com/strangelove-ventures/interchaintest/v7/ibc" - interchaintestrelayer "github.com/strangelove-ventures/interchaintest/v7/relayer" - "github.com/strangelove-ventures/interchaintest/v7/testreporter" - "github.com/strangelove-ventures/interchaintest/v7/testutil" + "github.com/strangelove-ventures/interchaintest/v8" + "github.com/strangelove-ventures/interchaintest/v8/chain/cosmos" + "github.com/strangelove-ventures/interchaintest/v8/ibc" + interchaintestrelayer "github.com/strangelove-ventures/interchaintest/v8/relayer" + "github.com/strangelove-ventures/interchaintest/v8/testreporter" + "github.com/strangelove-ventures/interchaintest/v8/testutil" "github.com/strangelove-ventures/localinterchain/interchain/router" "go.uber.org/zap" ) diff --git a/local-interchain/interchain/types/chain.go b/local-interchain/interchain/types/chain.go index 880cf3b11..e45f4ff29 100644 --- a/local-interchain/interchain/types/chain.go +++ b/local-interchain/interchain/types/chain.go @@ -2,7 +2,7 @@ package types import ( "github.com/go-playground/validator" - "github.com/strangelove-ventures/interchaintest/v7/chain/cosmos" + "github.com/strangelove-ventures/interchaintest/v8/chain/cosmos" ) type Chain struct { diff --git a/local-interchain/interchain/types/genesis.go b/local-interchain/interchain/types/genesis.go index 3d812deaa..79cf2818e 100644 --- a/local-interchain/interchain/types/genesis.go +++ b/local-interchain/interchain/types/genesis.go @@ -1,6 +1,6 @@ package types -import "github.com/strangelove-ventures/interchaintest/v7/chain/cosmos" +import "github.com/strangelove-ventures/interchaintest/v8/chain/cosmos" type GenesisAccount struct { Name string `json:"name"` diff --git a/local-interchain/interchain/types/types.go b/local-interchain/interchain/types/types.go index c631f27da..4888cb632 100644 --- a/local-interchain/interchain/types/types.go +++ b/local-interchain/interchain/types/types.go @@ -1,7 +1,7 @@ package types import ( - "github.com/strangelove-ventures/interchaintest/v7/ibc" + "github.com/strangelove-ventures/interchaintest/v8/ibc" ) type Config struct { diff --git a/relayer/docker.go b/relayer/docker.go index 052b99140..67c3b58bb 100644 --- a/relayer/docker.go +++ b/relayer/docker.go @@ -15,9 +15,9 @@ import ( "github.com/docker/docker/pkg/stdcopy" "go.uber.org/zap" - "github.com/strangelove-ventures/interchaintest/v7/ibc" - "github.com/strangelove-ventures/interchaintest/v7/internal/dockerutil" - "github.com/strangelove-ventures/interchaintest/v7/testutil" + "github.com/strangelove-ventures/interchaintest/v8/ibc" + "github.com/strangelove-ventures/interchaintest/v8/internal/dockerutil" + "github.com/strangelove-ventures/interchaintest/v8/testutil" ) const ( diff --git a/relayer/hermes/hermes_commander.go b/relayer/hermes/hermes_commander.go index f532a2701..29f70fea3 100644 --- a/relayer/hermes/hermes_commander.go +++ b/relayer/hermes/hermes_commander.go @@ -5,8 +5,8 @@ import ( "encoding/json" "fmt" - "github.com/strangelove-ventures/interchaintest/v7/ibc" - "github.com/strangelove-ventures/interchaintest/v7/relayer" + "github.com/strangelove-ventures/interchaintest/v8/ibc" + "github.com/strangelove-ventures/interchaintest/v8/relayer" "go.uber.org/zap" ibcexported "github.com/cosmos/ibc-go/v7/modules/core/03-connection/types" diff --git a/relayer/hermes/hermes_config.go b/relayer/hermes/hermes_config.go index 38fc01047..5f6d0b4e4 100644 --- a/relayer/hermes/hermes_config.go +++ b/relayer/hermes/hermes_config.go @@ -27,6 +27,7 @@ func NewConfig(chainConfigs ...ChainConfig) Config { Url: strings.ReplaceAll(fmt.Sprintf("%s/websocket", hermesCfg.rpcAddr), "http", "ws"), BatchDelay: "500ms"}, RPCTimeout: "10s", + TrustedNode: true, AccountPrefix: chainCfg.Bech32Prefix, KeyName: hermesCfg.keyName, AddressType: AddressType{ @@ -165,6 +166,7 @@ type Chain struct { GrpcAddr string `toml:"grpc_addr"` EventSource EventSource `toml:"event_source"` RPCTimeout string `toml:"rpc_timeout"` + TrustedNode bool `toml:"trusted_node"` AccountPrefix string `toml:"account_prefix"` KeyName string `toml:"key_name"` AddressType AddressType `toml:"address_type"` diff --git a/relayer/hermes/hermes_relayer.go b/relayer/hermes/hermes_relayer.go index de6889e5b..bfd294010 100644 --- a/relayer/hermes/hermes_relayer.go +++ b/relayer/hermes/hermes_relayer.go @@ -10,8 +10,8 @@ import ( "github.com/docker/docker/client" "github.com/pelletier/go-toml" - "github.com/strangelove-ventures/interchaintest/v7/ibc" - "github.com/strangelove-ventures/interchaintest/v7/relayer" + "github.com/strangelove-ventures/interchaintest/v8/ibc" + "github.com/strangelove-ventures/interchaintest/v8/relayer" "go.uber.org/zap" ) diff --git a/relayer/hermes/hermes_wallet.go b/relayer/hermes/hermes_wallet.go index f3742cd7a..8d02c62a6 100644 --- a/relayer/hermes/hermes_wallet.go +++ b/relayer/hermes/hermes_wallet.go @@ -1,6 +1,6 @@ package hermes -import "github.com/strangelove-ventures/interchaintest/v7/ibc" +import "github.com/strangelove-ventures/interchaintest/v8/ibc" var _ ibc.Wallet = &Wallet{} diff --git a/relayer/options.go b/relayer/options.go index fdbb73ec9..05150af90 100644 --- a/relayer/options.go +++ b/relayer/options.go @@ -1,7 +1,7 @@ package relayer import ( - "github.com/strangelove-ventures/interchaintest/v7/ibc" + "github.com/strangelove-ventures/interchaintest/v8/ibc" ) // RelayerOption is used to customize the relayer configuration, whether constructed with the diff --git a/relayer/rly/cosmos_relayer.go b/relayer/rly/cosmos_relayer.go index 2d259b768..2f0d20413 100644 --- a/relayer/rly/cosmos_relayer.go +++ b/relayer/rly/cosmos_relayer.go @@ -9,8 +9,8 @@ import ( "github.com/cosmos/cosmos-sdk/crypto/keyring" "github.com/docker/docker/client" - "github.com/strangelove-ventures/interchaintest/v7/ibc" - "github.com/strangelove-ventures/interchaintest/v7/relayer" + "github.com/strangelove-ventures/interchaintest/v8/ibc" + "github.com/strangelove-ventures/interchaintest/v8/relayer" "go.uber.org/zap" ) diff --git a/relayer/rly/wallet.go b/relayer/rly/wallet.go index ddc853dc0..84a58e80c 100644 --- a/relayer/rly/wallet.go +++ b/relayer/rly/wallet.go @@ -1,7 +1,7 @@ package rly import ( - "github.com/strangelove-ventures/interchaintest/v7/ibc" + "github.com/strangelove-ventures/interchaintest/v8/ibc" ) var _ ibc.Wallet = &RlyWallet{} diff --git a/relayerfactory.go b/relayerfactory.go index 07da94d46..7312087df 100644 --- a/relayerfactory.go +++ b/relayerfactory.go @@ -4,10 +4,10 @@ import ( "fmt" "github.com/docker/docker/client" - "github.com/strangelove-ventures/interchaintest/v7/ibc" - "github.com/strangelove-ventures/interchaintest/v7/relayer" - "github.com/strangelove-ventures/interchaintest/v7/relayer/hermes" - "github.com/strangelove-ventures/interchaintest/v7/relayer/rly" + "github.com/strangelove-ventures/interchaintest/v8/ibc" + "github.com/strangelove-ventures/interchaintest/v8/relayer" + "github.com/strangelove-ventures/interchaintest/v8/relayer/hermes" + "github.com/strangelove-ventures/interchaintest/v8/relayer/rly" "go.uber.org/zap" ) diff --git a/tempdir_test.go b/tempdir_test.go index dc2979672..47d8b20ec 100644 --- a/tempdir_test.go +++ b/tempdir_test.go @@ -6,8 +6,8 @@ import ( "strings" "testing" - interchaintest "github.com/strangelove-ventures/interchaintest/v7" - "github.com/strangelove-ventures/interchaintest/v7/internal/mocktesting" + interchaintest "github.com/strangelove-ventures/interchaintest/v8" + "github.com/strangelove-ventures/interchaintest/v8/internal/mocktesting" "github.com/stretchr/testify/require" ) diff --git a/test_setup.go b/test_setup.go index ba50bcc85..53e54b492 100644 --- a/test_setup.go +++ b/test_setup.go @@ -8,10 +8,10 @@ import ( "time" "github.com/docker/docker/client" - "github.com/strangelove-ventures/interchaintest/v7/ibc" - "github.com/strangelove-ventures/interchaintest/v7/internal/dockerutil" - "github.com/strangelove-ventures/interchaintest/v7/internal/version" - "github.com/strangelove-ventures/interchaintest/v7/testreporter" + "github.com/strangelove-ventures/interchaintest/v8/ibc" + "github.com/strangelove-ventures/interchaintest/v8/internal/dockerutil" + "github.com/strangelove-ventures/interchaintest/v8/internal/version" + "github.com/strangelove-ventures/interchaintest/v8/testreporter" ) const ( diff --git a/test_user.go b/test_user.go index 50877a73e..1e1445378 100644 --- a/test_user.go +++ b/test_user.go @@ -6,9 +6,9 @@ import ( "testing" "cosmossdk.io/math" - "github.com/strangelove-ventures/interchaintest/v7/ibc" - "github.com/strangelove-ventures/interchaintest/v7/internal/dockerutil" - "github.com/strangelove-ventures/interchaintest/v7/testutil" + "github.com/strangelove-ventures/interchaintest/v8/ibc" + "github.com/strangelove-ventures/interchaintest/v8/internal/dockerutil" + "github.com/strangelove-ventures/interchaintest/v8/testutil" "github.com/stretchr/testify/require" "golang.org/x/sync/errgroup" ) diff --git a/testreporter/messages_test.go b/testreporter/messages_test.go index 678bb8915..1e7afe70b 100644 --- a/testreporter/messages_test.go +++ b/testreporter/messages_test.go @@ -6,7 +6,7 @@ import ( "time" "github.com/google/go-cmp/cmp" - "github.com/strangelove-ventures/interchaintest/v7/testreporter" + "github.com/strangelove-ventures/interchaintest/v8/testreporter" "github.com/stretchr/testify/require" ) diff --git a/testreporter/reporter_test.go b/testreporter/reporter_test.go index 541d3d171..8d66ed91a 100644 --- a/testreporter/reporter_test.go +++ b/testreporter/reporter_test.go @@ -8,8 +8,8 @@ import ( "time" "github.com/google/go-cmp/cmp" - "github.com/strangelove-ventures/interchaintest/v7/internal/mocktesting" - "github.com/strangelove-ventures/interchaintest/v7/testreporter" + "github.com/strangelove-ventures/interchaintest/v8/internal/mocktesting" + "github.com/strangelove-ventures/interchaintest/v8/testreporter" "github.com/stretchr/testify/require" ) diff --git a/testutil/poll_for_state.go b/testutil/poll_for_state.go index d136bd94c..907e2afb0 100644 --- a/testutil/poll_for_state.go +++ b/testutil/poll_for_state.go @@ -7,7 +7,7 @@ import ( "strings" "github.com/davecgh/go-spew/spew" - "github.com/strangelove-ventures/interchaintest/v7/ibc" + "github.com/strangelove-ventures/interchaintest/v8/ibc" ) var ErrNotFound = errors.New("not found") diff --git a/testutil/poll_for_state_test.go b/testutil/poll_for_state_test.go index fb41a2f6f..0997c7170 100644 --- a/testutil/poll_for_state_test.go +++ b/testutil/poll_for_state_test.go @@ -6,7 +6,7 @@ import ( "fmt" "testing" - "github.com/strangelove-ventures/interchaintest/v7/ibc" + "github.com/strangelove-ventures/interchaintest/v8/ibc" "github.com/stretchr/testify/require" ) diff --git a/testutil/toml.go b/testutil/toml.go index 7f382adf9..3f3b5bca8 100644 --- a/testutil/toml.go +++ b/testutil/toml.go @@ -8,7 +8,7 @@ import ( "github.com/BurntSushi/toml" "github.com/docker/docker/client" - "github.com/strangelove-ventures/interchaintest/v7/internal/dockerutil" + "github.com/strangelove-ventures/interchaintest/v8/internal/dockerutil" "go.uber.org/zap" ) From 86b2183f17693ad00561f033c8d1838aa1119617 Mon Sep 17 00:00:00 2001 From: Dan Kanefsky Date: Fri, 1 Sep 2023 12:19:47 -0700 Subject: [PATCH 21/22] boundary test run in parallel --- examples/cosmos/sdk_boundary_test.go | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/examples/cosmos/sdk_boundary_test.go b/examples/cosmos/sdk_boundary_test.go index d7654a67d..eed455076 100644 --- a/examples/cosmos/sdk_boundary_test.go +++ b/examples/cosmos/sdk_boundary_test.go @@ -30,7 +30,7 @@ func TestSDKBoundaries(t *testing.T) { var tests = []boundarySpecs{ { - name: "sdk 45 - 50", + name: "sdk 45 <-> 50", chainSpecs: []*interchaintest.ChainSpec{ { Name: "gaia", ChainName: "gaia", Version: "v7.0.3", //sdk 0.45.6 @@ -62,8 +62,10 @@ func TestSDKBoundaries(t *testing.T) { } for _, tt := range tests { + tt := tt testname := tt.name t.Run(testname, func(t *testing.T) { + t.Parallel() cf := interchaintest.NewBuiltinChainFactory( zaptest.NewLogger(t), From 5b748bc25cf670a97b7fbf909b428e8f9af7d7ec Mon Sep 17 00:00:00 2001 From: Dan Kanefsky Date: Fri, 1 Sep 2023 12:32:00 -0700 Subject: [PATCH 22/22] fix: bump hermes UidGid --- relayer/hermes/hermes_relayer.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/relayer/hermes/hermes_relayer.go b/relayer/hermes/hermes_relayer.go index bfd294010..b5e04e59f 100644 --- a/relayer/hermes/hermes_relayer.go +++ b/relayer/hermes/hermes_relayer.go @@ -20,7 +20,7 @@ const ( defaultContainerImage = "ghcr.io/informalsystems/hermes" DefaultContainerVersion = "1.6.0" - hermesDefaultUidGid = "1000:1000" + hermesDefaultUidGid = "1001:1001" hermesHome = "/home/hermes" hermesConfigPath = ".hermes/config.toml" )