General Bugfixes from RS integration.

* heisenbug fixed. msgout_find_node was inside debugging #defs.
 * fixed ReplyFindNode and ReplyQueryHash counters for stats.
 * added Node Space size() functions.
 * added FINDSELF mode. 60 secs to search for own hash.
 * incremental addition of search ids.



git-svn-id: http://svn.code.sf.net/p/retroshare/code/trunk@3326 b45a01b8-16f6-495d-af2f-9b41ad6348cc
This commit is contained in:
drbob 2010-08-01 18:19:27 +00:00
parent 5ed26b7ccb
commit f876dcb93b
10 changed files with 741 additions and 526 deletions

View File

@ -132,16 +132,18 @@ virtual void bdPrintNodeId(std::ostream &out, const bdNodeId *a) = 0;
/* Status options */ /* Status options */
#define BITDHT_QUERY_QUERYING 1 #define BITDHT_QUERY_READY 1
#define BITDHT_QUERY_FAILURE 2 #define BITDHT_QUERY_QUERYING 2
#define BITDHT_QUERY_FOUND_CLOSEST 3 #define BITDHT_QUERY_FAILURE 3
#define BITDHT_QUERY_PEER_UNREACHABLE 4 #define BITDHT_QUERY_FOUND_CLOSEST 4
#define BITDHT_QUERY_SUCCESS 5 #define BITDHT_QUERY_PEER_UNREACHABLE 5
#define BITDHT_QUERY_SUCCESS 6
/* Query Flags */ /* Query Flags */
#define BITDHT_QFLAGS_NONE 0 #define BITDHT_QFLAGS_NONE 0
#define BITDHT_QFLAGS_DISGUISE 1 #define BITDHT_QFLAGS_DISGUISE 1
#define BITDHT_QFLAGS_DO_IDLE 2 #define BITDHT_QFLAGS_DO_IDLE 2
#define BITDHT_QFLAGS_INTERNAL 4 // means it runs through startup.
class BitDhtCallback class BitDhtCallback
{ {

View File

@ -54,7 +54,7 @@
* #define DEBUG_MGR_PKT 1 * #define DEBUG_MGR_PKT 1
***/ ***/
#define DEBUG_MGR 1 //#define DEBUG_MGR 1
bdNodeManager::bdNodeManager(bdNodeId *id, std::string dhtVersion, std::string bootfile, bdDhtFunctions *fns) bdNodeManager::bdNodeManager(bdNodeId *id, std::string dhtVersion, std::string bootfile, bdDhtFunctions *fns)
:bdNode(id, dhtVersion, bootfile, fns) :bdNode(id, dhtVersion, bootfile, fns)
@ -94,14 +94,41 @@ void bdNodeManager::addFindNode(bdNodeId *id, uint32_t qflags)
/* add to map */ /* add to map */
bdQueryPeer peer; bdQueryPeer peer;
peer.mId.id = (*id); peer.mId.id = (*id);
peer.mStatus = BITDHT_QUERY_QUERYING; peer.mStatus = BITDHT_QUERY_READY; //QUERYING;
peer.mQFlags = qflags; peer.mQFlags = qflags;
mActivePeers[*id] = peer; mActivePeers[*id] = peer;
#ifdef DEBUG_MGR #ifdef DEBUG_MGR
std::cerr << "bdNodeManager::addFindNode() Added QueryPeer...."; std::cerr << "bdNodeManager::addFindNode() Added QueryPeer as READY....";
std::cerr << std::endl; std::cerr << std::endl;
#endif #endif
addQuery(id, qflags | BITDHT_QFLAGS_DISGUISE); //addQuery(id, qflags | BITDHT_QFLAGS_DISGUISE);
return;
}
/* finds a queued query, and starts it */
void bdNodeManager::startQueries()
{
#ifdef DEBUG_MGR
std::cerr << "bdNodeManager::startQueries() ";
std::cerr << std::endl;
#endif
/* check if exists already */
std::map<bdNodeId, bdQueryPeer>::iterator it;
for(it = mActivePeers.begin(); it != mActivePeers.end(); it++)
{
if (it->second.mStatus == BITDHT_QUERY_READY)
{
#ifdef DEBUG_MGR
std::cerr << "bdNodeManager::startQueries() Found READY Query.";
std::cerr << std::endl;
#endif
it->second.mStatus == BITDHT_QUERY_QUERYING;
uint32_t qflags = it->second.mQFlags | BITDHT_QFLAGS_DISGUISE;
addQuery(&(it->first), qflags);
return;
}
}
return; return;
} }
@ -138,6 +165,7 @@ void bdNodeManager::iteration()
{ {
case BITDHT_MGR_STATE_STARTUP: case BITDHT_MGR_STATE_STARTUP:
/* 10 seconds startup .... then switch to ACTIVE */ /* 10 seconds startup .... then switch to ACTIVE */
if (modeAge > MAX_STARTUP_TIME) if (modeAge > MAX_STARTUP_TIME)
{ {
#ifdef DEBUG_MGR #ifdef DEBUG_MGR
@ -148,10 +176,29 @@ void bdNodeManager::iteration()
getOwnId(&id); getOwnId(&id);
addQuery(&id, BITDHT_QFLAGS_DO_IDLE | BITDHT_QFLAGS_DISGUISE); addQuery(&id, BITDHT_QFLAGS_DO_IDLE | BITDHT_QFLAGS_DISGUISE);
mMode = BITDHT_MGR_STATE_FINDSELF;
mModeTS = now;
}
break;
case BITDHT_MGR_STATE_FINDSELF:
/* 60 seconds further startup .... then switch to ACTIVE */
#define MAX_FINDSELF_TIME 60
#define MIN_OP_SPACE_SIZE 100
#ifdef DEBUG_MGR
std::cerr << "bdNodeManager::iteration() Finding Oneself: NodeSpace Size:" << mNodeSpace.size();
std::cerr << std::endl;
#endif
if ((modeAge > MAX_FINDSELF_TIME) ||
(mNodeSpace.size() > MIN_OP_SPACE_SIZE))
{
//mMode = BITDHT_MGR_STATE_ACTIVE; //mMode = BITDHT_MGR_STATE_ACTIVE;
mMode = BITDHT_MGR_STATE_REFRESH; mMode = BITDHT_MGR_STATE_REFRESH;
mModeTS = now; mModeTS = now;
} }
break; break;
case BITDHT_MGR_STATE_ACTIVE: case BITDHT_MGR_STATE_ACTIVE:
@ -177,6 +224,13 @@ void bdNodeManager::iteration()
mMode = BITDHT_MGR_STATE_ACTIVE; mMode = BITDHT_MGR_STATE_ACTIVE;
mModeTS = now; mModeTS = now;
#ifdef DEBUG_MGR
std::cerr << "bdNodeManager::iteration(): Starting Query";
std::cerr << std::endl;
#endif
startQueries();
#ifdef DEBUG_MGR #ifdef DEBUG_MGR
std::cerr << "bdNodeManager::iteration(): Updating Stores"; std::cerr << "bdNodeManager::iteration(): Updating Stores";
std::cerr << std::endl; std::cerr << std::endl;

View File

@ -70,12 +70,13 @@ class bdQueryPeer
#define BITDHT_MGR_STATE_STARTUP 1 #define BITDHT_MGR_STATE_STARTUP 1
#define BITDHT_MGR_STATE_ACTIVE 2 #define BITDHT_MGR_STATE_FINDSELF 2
#define BITDHT_MGR_STATE_REFRESH 3 #define BITDHT_MGR_STATE_ACTIVE 3
#define BITDHT_MGR_STATE_QUIET 4 #define BITDHT_MGR_STATE_REFRESH 4
#define BITDHT_MGR_STATE_QUIET 5
#define MAX_STARTUP_TIME 10 #define MAX_STARTUP_TIME 10
#define MAX_REFRESH_TIME 30 #define MAX_REFRESH_TIME 20
#define BITDHT_MGR_QUERY_FAILURE 1 #define BITDHT_MGR_QUERY_FAILURE 1
#define BITDHT_MGR_QUERY_PEER_OFFLINE 2 #define BITDHT_MGR_QUERY_PEER_OFFLINE 2
@ -128,6 +129,7 @@ int status();
int checkStatus(); int checkStatus();
int checkPingStatus(); int checkPingStatus();
int SearchOutOfDate(); int SearchOutOfDate();
void startQueries();
std::map<bdNodeId, bdQueryPeer> mActivePeers; std::map<bdNodeId, bdQueryPeer> mActivePeers;
std::list<BitDhtCallback *> mCallbacks; std::list<BitDhtCallback *> mCallbacks;

View File

@ -53,6 +53,7 @@
* #define DEBUG_NODE_MSGOUT 1 * #define DEBUG_NODE_MSGOUT 1
***/ ***/
//#define DEBUG_NODE_MSGS 1
bdNode::bdNode(bdNodeId *ownId, std::string dhtVersion, std::string bootfile, bdDhtFunctions *fns) bdNode::bdNode(bdNodeId *ownId, std::string dhtVersion, std::string bootfile, bdDhtFunctions *fns)
:mOwnId(*ownId), mNodeSpace(ownId, fns), mStore(bootfile, fns), mDhtVersion(dhtVersion), mFns(fns) :mOwnId(*ownId), mNodeSpace(ownId, fns), mStore(bootfile, fns), mDhtVersion(dhtVersion), mFns(fns)
@ -215,8 +216,9 @@ void bdNode::iteration()
genNewTransId(&transId); genNewTransId(&transId);
registerOutgoingMsg(&id, &transId, BITDHT_MSG_TYPE_FIND_NODE); registerOutgoingMsg(&id, &transId, BITDHT_MSG_TYPE_FIND_NODE);
#ifdef DEBUG_NODE_MSGS
msgout_find_node(&id, &transId, &targetNodeId); msgout_find_node(&id, &transId, &targetNodeId);
#ifdef DEBUG_NODE_MSGS
std::cerr << "bdNode::iteration() Find Node Req for : "; std::cerr << "bdNode::iteration() Find Node Req for : ";
mFns->bdPrintId(std::cerr, &id); mFns->bdPrintId(std::cerr, &id);
std::cerr << " searching for : "; std::cerr << " searching for : ";
@ -391,6 +393,39 @@ void bdNode::addPeer(const bdId *id, uint32_t peerflags)
mStore.addStore(&peer); mStore.addStore(&peer);
} }
#if 0
// virtual so manager can do callback.
// peer flags defined in bdiface.h
void bdNode::PeerResponse(const bdId *id, const bdNodeId *target, uint32_t peerflags)
{
#ifdef DEBUG_NODE_ACTIONS
std::cerr << "bdNode::PeerResponse(";
mFns->bdPrintId(std::cerr, id);
std::cerr << ", target: ";
mFns->bdPrintNodeId(std::cerr, target);
fprintf(stderr, ")\n");
#endif
/* iterate through queries */
std::list<bdQuery>::iterator it;
for(it = mLocalQueries.begin(); it != mLocalQueries.end(); it++)
{
it->PeerResponse(id, target, peerflags);
}
mNodeSpace.add_peer(id, peerflags);
bdPeer peer;
peer.mPeerId = *id;
peer.mPeerFlags = peerflags;
peer.mLastRecvTime = time(NULL);
mStore.addStore(&peer);
}
#endif
/************************************ Query Details *************************/ /************************************ Query Details *************************/
void bdNode::addQuery(const bdNodeId *id, uint32_t qflags) void bdNode::addQuery(const bdNodeId *id, uint32_t qflags)
{ {
@ -481,27 +516,27 @@ void bdNode::processRemoteQuery()
} }
msgout_reply_find_node(&(query.mId), &(query.mTransId), nearList); msgout_reply_find_node(&(query.mId), &(query.mTransId), nearList);
#ifdef DEBUG_NODE_MSGS #ifdef DEBUG_NODE_MSGS
std::cerr << "bdNode::processRemoteQuery() Reply to Find Node: "; std::cerr << "bdNode::processRemoteQuery() Reply to Find Node: ";
mFns->bdPrintId(std::cerr, &(query.mId)); mFns->bdPrintId(std::cerr, &(query.mId));
std::cerr << " searching for : "; std::cerr << " searching for : ";
mFns->bdPrintNodeId(std::cerr, &(query.mQuery)); mFns->bdPrintNodeId(std::cerr, &(query.mQuery));
std::cerr << ", found " << nearest.size() << " nodes "; std::cerr << ", found " << nearest.size() << " nodes ";
std::cerr << std::endl; std::cerr << std::endl;
#endif #endif
mCounterReplyFindNode = 0; mCounterReplyFindNode++;
break; break;
} }
case BD_QUERY_HASH: case BD_QUERY_HASH:
{ {
#ifdef DEBUG_NODE_MSGS #ifdef DEBUG_NODE_MSGS
std::cerr << "bdNode::processRemoteQuery() Reply to Query Node: "; std::cerr << "bdNode::processRemoteQuery() Reply to Query Node: ";
mFns->bdPrintId(std::cerr, &(query.mId)); mFns->bdPrintId(std::cerr, &(query.mId));
std::cerr << " TODO"; std::cerr << " TODO";
std::cerr << std::endl; std::cerr << std::endl;
#endif #endif
mCounterReplyQueryHash = 0; mCounterReplyQueryHash++;
/* TODO */ /* TODO */
@ -519,6 +554,16 @@ void bdNode::processRemoteQuery()
} }
else
{
#ifdef DEBUG_NODE_MSGS
std::cerr << "bdNode::processRemoteQuery() Query Too Old: Discarding: ";
mFns->bdPrintId(std::cerr, &(query.mId));
std::cerr << std::endl;
#endif
}
mRemoteQueries.pop_front(); mRemoteQueries.pop_front();
} }
} }

View File

@ -176,12 +176,15 @@ void recvPkt(char *msg, int len, struct sockaddr_in addr);
void printQueries(); void printQueries();
private: protected:
bdNodeId mOwnId; bdNodeId mOwnId;
bdId mLikelyOwnId; // Try to workout own id address. bdId mLikelyOwnId; // Try to workout own id address.
bdSpace mNodeSpace; bdSpace mNodeSpace;
private:
bdStore mStore; bdStore mStore;
std::string mDhtVersion; std::string mDhtVersion;

View File

@ -734,3 +734,101 @@ int bdSpace::printDHT()
return 1; return 1;
} }
int bdSpace::calcSizes()
{
std::vector<bdBucket>::iterator it;
/* little summary */
unsigned long long sum = 0;
unsigned long long no_peers = 0;
uint32_t count = 0;
uint32_t totalcount = 0;
bool doPrint = false;
bool doAvg = false;
int i = 0;
for(it = buckets.begin(); it != buckets.end(); it++, i++)
{
int size = it->entries.size();
totalcount += size;
int shift = BITDHT_KEY_BITLEN - i;
bool toBig = false;
if (shift > BITDHT_ULLONG_BITS - mFns->bdBucketBitSize() - 1)
{
toBig = true;
shift = BITDHT_ULLONG_BITS - mFns->bdBucketBitSize() - 1;
}
unsigned long long no_nets = ((unsigned long long) 1 << shift);
/* use doPrint so it acts as a single switch */
if (size && !doAvg && !doPrint)
{
doAvg = true;
}
if (size && !doPrint)
{
doPrint = true;
}
if (size == 0)
{
/* reset counters - if empty slot - to discount outliers in average */
sum = 0;
no_peers = 0;
count = 0;
}
if (!toBig)
{
no_peers = no_nets * size;
}
if (doPrint && doAvg && !toBig)
{
if (size == mFns->bdNodesPerBucket())
{
/* last average */
doAvg = false;
}
if (no_peers != 0)
{
sum += no_peers;
count++;
}
}
}
mLastSize = totalcount;
if (count == 0)
{
mLastNetSize = 0;
}
else
{
mLastNetSize = sum / count;
}
return 1;
}
uint32_t bdSpace::size()
{
calcSizes();
return mLastSize;
}
uint32_t bdSpace::netSize()
{
calcSizes();
return mLastNetSize;
}

View File

@ -153,6 +153,10 @@ int out_of_date_peer(bdId &id); // side-effect updates, send flag on peer.
int add_peer(const bdId *id, uint32_t mode); int add_peer(const bdId *id, uint32_t mode);
int printDHT(); int printDHT();
int calcSizes();
uint32_t size();
uint32_t netSize();
/* to add later */ /* to add later */
int updateOwnId(bdNodeId *newOwnId); int updateOwnId(bdNodeId *newOwnId);
@ -161,6 +165,9 @@ int updateOwnId(bdNodeId *newOwnId);
std::vector<bdBucket> buckets; std::vector<bdBucket> buckets;
bdNodeId mOwnId; bdNodeId mOwnId;
bdDhtFunctions *mFns; bdDhtFunctions *mFns;
uint32_t mLastSize;
uint32_t mLastNetSize;
}; };

View File

@ -353,9 +353,11 @@ int bdQuery::addPeer(const bdId *id, uint32_t mode)
} }
} }
#ifdef DEBUG_QUERY
fprintf(stderr, "bdQuery::addPeer(): Closer Peer!: "); fprintf(stderr, "bdQuery::addPeer(): Closer Peer!: ");
mFns->bdPrintId(std::cerr, id); mFns->bdPrintId(std::cerr, id);
fprintf(stderr, "\n"); fprintf(stderr, "\n");
#endif
/* add it in */ /* add it in */
bdPeer peer; bdPeer peer;
@ -502,9 +504,11 @@ int bdQuery::addPotentialPeer(const bdId *id, uint32_t mode)
} }
} }
#ifdef DEBUG_QUERY
fprintf(stderr, "bdQuery::addPotentialPeer(): Closer Peer!: "); fprintf(stderr, "bdQuery::addPotentialPeer(): Closer Peer!: ");
mFns->bdPrintId(std::cerr, id); mFns->bdPrintId(std::cerr, id);
fprintf(stderr, "\n"); fprintf(stderr, "\n");
#endif
/* add it in */ /* add it in */
bdPeer peer; bdPeer peer;

View File

@ -29,7 +29,7 @@
#include "bitdht/bdiface.h" #include "bitdht/bdiface.h"
#define BITDHT_STANDARD_BUCKET_SIZE 10 // 20 - too many per query. #define BITDHT_STANDARD_BUCKET_SIZE 10 // 20 too many per query?
#define BITDHT_STANDARD_BUCKET_SIZE_BITS 5 #define BITDHT_STANDARD_BUCKET_SIZE_BITS 5
#define BITDHT_STANDARD_N_BUCKETS BITDHT_KEY_BITLEN #define BITDHT_STANDARD_N_BUCKETS BITDHT_KEY_BITLEN

View File

@ -1,500 +1,500 @@
92.12.39.6 16244 85.56.139.56 58749
89.212.217.239 28436 71.196.189.66 43541
78.245.141.29 24062 60.54.39.89 18756
205.237.249.60 60753 112.207.137.130 45682
62.21.68.140 29607 84.115.175.203 38839
61.64.105.113 25526 85.10.16.82 42070
91.124.60.138 29433 61.116.102.55 58995
218.224.131.30 40758 87.56.74.190 51804
83.240.70.102 36020 83.31.49.246 49408
85.217.136.19 12987 88.132.33.234 10889
117.200.98.12 52766 93.148.69.177 64396
78.96.190.94 62088 95.140.7.82 45643
178.223.87.21 10014 84.42.245.181 62910
80.2.47.245 15552 71.172.80.247 16639
90.170.111.137 13192 77.41.69.144 58436
188.226.10.2 34216 189.239.185.252 63091
90.227.88.106 54053 187.114.203.208 18571
85.75.149.20 28827 70.75.204.73 34767
69.148.26.74 40190 78.83.106.252 32836
95.57.8.245 13623 95.139.113.36 30816
77.78.137.242 34136 189.60.98.121 38345
88.198.31.48 51413 220.132.72.212 27085
114.177.196.25 23313 70.157.138.186 23602
112.143.5.152 10035 189.136.163.215 22838
201.210.35.114 1089 89.33.94.80 18377
114.166.35.238 20748 79.111.165.2 19211
89.23.16.155 21007 92.24.189.239 45717
82.209.158.227 29892 193.25.104.85 45766
71.154.218.34 32471 59.93.93.23 39382
66.68.12.56 42237 89.18.194.180 53230
77.250.248.129 35359 116.71.218.45 10165
86.123.20.27 59763 156.34.28.98 45682
88.189.215.153 47003 203.206.53.27 10358
212.115.243.128 35331 41.235.61.5 16498
68.33.231.30 4041 86.138.70.43 14685
174.3.187.193 17999 183.14.156.148 16001
61.73.159.158 62930 85.107.216.225 61077
202.106.63.129 6881 79.89.31.240 23687
121.254.72.205 18068 187.67.26.74 20595
94.27.71.190 45882 24.87.88.9 49947
76.221.142.55 8106 222.131.10.83 5070
118.243.253.168 51810 212.117.169.181 55788
83.82.215.49 27067 80.64.65.14 61551
99.56.61.56 16881 81.232.90.184 43611
93.100.178.63 63982 89.180.106.123 51337
89.124.38.17 7719 71.180.229.140 25107
94.96.39.71 14533 41.238.203.245 42311
85.224.48.124 19157 71.227.139.224 32093
83.149.3.111 2212 123.115.241.29 8808
165.132.28.29 22553 62.45.98.176 6881
210.6.190.167 9258 92.154.104.90 49500
183.89.42.239 10211 78.60.71.95 39201
76.11.65.212 11952 89.113.24.69 41489
173.59.11.238 49662 98.222.41.217 55836
85.187.184.104 11066 98.242.242.83 25455
82.44.90.159 22344 99.41.207.6 58729
188.27.114.217 32171 96.250.33.132 50343
89.31.112.26 51780 93.80.210.92 53838
124.218.29.192 16642 94.236.129.131 46060
78.130.222.130 43658 83.142.210.17 17901
74.105.211.205 48819 93.152.162.14 42404
114.168.150.173 55910 71.82.210.81 26642
96.51.33.140 32329 116.74.67.240 42370
190.204.29.202 54450 98.225.224.13 16321
80.240.217.180 56605 89.179.79.75 62045
72.229.227.66 51413 24.250.154.26 52769
81.147.10.199 60224 72.39.29.128 22844
60.50.255.65 27500 194.186.188.48 63808
82.210.154.254 49074 67.172.251.253 22076
95.178.165.85 22073 92.13.58.11 55202
173.74.61.121 20296 218.44.104.181 59116
189.172.91.63 32862 91.195.208.8 6881
83.149.3.87 49422 66.197.165.38 6821
221.118.228.240 19062 70.160.28.191 29602
113.167.211.162 26491 24.15.202.167 15309
82.75.83.7 32231 118.128.194.3 35703
184.59.26.110 57394 92.27.69.69 11399
75.72.139.138 57619 113.169.9.165 20302
187.112.195.219 35326 41.204.126.178 11275
59.171.53.80 6885 66.212.214.127 22767
89.132.238.128 14064 174.94.79.203 63317
79.119.179.173 51847 83.84.130.254 2302
94.232.9.137 22515 88.203.213.216 9463
93.183.158.243 33177 173.174.10.130 39909
190.142.237.235 57012 114.24.151.183 8262
81.225.3.15 52735 121.164.15.29 13396
87.70.134.32 35691 125.26.125.11 16915
125.34.10.134 16881 95.130.12.19 61050
72.252.147.147 44561 95.79.35.108 54704
81.132.137.167 64163 62.30.225.190 10398
188.17.186.176 20143 79.69.156.88 11179
122.173.123.126 10059 76.28.227.60 10277
84.124.240.134 13910 69.249.116.97 60199
76.65.82.185 53620 118.100.44.109 48673
92.83.123.164 10312 114.47.173.140 12818
115.118.204.63 23820 79.116.217.129 36525
118.172.176.216 16326 64.46.21.119 30393
81.98.36.18 37915 209.82.182.182 46512
111.243.22.108 19934 95.56.18.8 55061
94.10.204.178 18391 24.210.149.136 45504
213.120.100.133 64504 189.110.174.160 42176
95.42.85.28 22290 210.159.160.128 43535
75.65.154.63 49384 119.179.53.14 16001
93.185.177.162 26017 212.63.215.33 49001
71.195.178.231 29656 78.61.116.247 56061
83.97.66.17 36084 212.80.48.31 11175
88.205.175.143 52773 77.49.170.106 30929
78.8.223.23 35068 211.187.166.100 46368
195.18.14.209 42232 186.45.162.37 54458
175.144.254.70 21025 84.52.32.176 22994
96.51.132.228 31985 89.34.93.54 23540
211.224.68.157 38486 213.151.5.123 21520
84.3.119.43 37819 173.72.137.187 27512
64.120.255.60 6860 212.75.18.238 9486
64.120.255.40 6840 212.21.20.244 24825
88.112.86.60 6881 95.7.164.167 23502
85.15.90.39 62239 116.0.246.100 11209
203.219.136.214 12386 58.153.12.250 5067
24.86.186.73 35444 77.126.4.157 63977
98.117.17.53 47127 79.81.134.243 12275
71.236.116.230 53266 81.89.88.35 20576
79.88.52.95 58810 188.19.198.174 9853
70.26.249.175 12712 118.233.55.189 14280
84.238.32.93 39000 95.155.118.39 9334
142.177.138.67 42608 83.97.66.151 12608
193.227.230.38 25998 202.125.62.131 7444
159.148.201.3 51279 61.57.105.113 22728
81.101.108.205 55319 81.82.115.46 43952
92.112.239.251 54423 79.111.74.223 45987
89.32.161.80 20534 60.56.221.89 1069
92.134.174.244 63288 109.74.209.168 62393
76.99.68.51 50009 76.224.27.8 56053
82.13.104.126 60394 79.163.179.77 26850
190.254.250.39 16039 189.32.67.235 63258
95.58.121.74 59312 75.84.157.242 15877
174.88.26.132 10167 142.177.246.95 59112
109.96.138.146 23894 116.2.32.161 20124
186.19.235.217 25339 188.126.46.50 44950
109.192.92.151 42637 95.179.25.105 20206
87.239.33.5 1907 95.68.47.164 30021
95.154.176.23 46887 58.123.157.201 26652
94.137.206.211 50526 201.153.228.202 21677
210.146.116.72 62780 121.44.92.49 46001
218.171.243.202 9133 80.98.231.47 26348
61.244.211.243 8756 77.81.214.54 55140
91.95.25.150 47353 188.2.177.127 18893
174.5.75.103 25772 77.106.248.215 61010
118.167.114.241 51001 76.189.218.104 31714
75.56.207.235 26166 92.40.218.25 17436
92.30.126.173 18921 79.11.74.201 25511
114.36.64.2 17738 124.217.18.33 52665
78.29.165.84 52760 110.139.49.2 10021
173.212.206.213 6813 116.75.93.225 17753
187.59.109.115 37484 91.154.247.194 47519
85.22.8.175 52857 85.157.34.95 39877
126.109.206.4 64327 72.12.147.238 48200
82.210.188.127 20329 87.207.198.164 57380
95.165.163.114 23448 76.88.103.96 6688
83.153.209.5 17211 69.156.182.48 9745
76.29.235.184 17801 174.118.75.21 57528
66.177.225.54 55952 78.131.114.243 35625
59.26.76.120 49911 178.162.183.226 6821
70.26.207.239 50591 85.120.227.7 39679
87.2.17.117 18586 77.108.227.234 46150
81.102.125.77 40848 67.21.102.65 61696
109.104.187.38 13937 90.20.253.243 17134
95.68.94.144 16302 77.106.112.192 63044
85.229.75.44 35060 89.132.70.154 54892
76.92.217.64 26272 80.190.139.91 6892
125.1.208.157 40393 89.228.34.41 11402
92.27.172.45 12303 99.16.45.162 58728
140.113.179.143 14232 114.169.35.228 10609
81.191.145.10 58334 119.247.254.79 5294
70.53.178.100 9472 62.194.214.11 53956
126.114.208.43 50784 86.140.220.164 63805
183.178.66.202 24910 89.209.84.223 45645
79.101.206.136 10361 69.61.67.154 51413
90.136.101.48 41749 71.176.151.158 34312
188.60.106.125 39889 87.252.246.164 10004
217.209.12.220 20544 76.83.2.223 51867
90.190.114.159 113 174.100.244.175 32360
95.71.127.32 33037 174.6.184.150 55074
61.12.222.55 13064 122.116.144.204 6881
77.229.176.143 27625 188.126.95.124 51422
81.23.166.136 22829 178.40.80.76 14409
78.29.119.181 21344 71.167.112.211 6881
67.171.29.15 40385 204.210.194.241 6881
122.118.176.147 19139 99.0.82.216 51494
190.235.210.249 14178 109.124.16.234 11636
76.11.109.99 44390 220.131.73.187 20718
99.253.38.74 19441 178.88.8.252 56292
62.169.123.28 35746 83.87.238.214 6881
82.132.23.195 52333 87.78.183.103 24204
109.111.156.186 17673 92.249.133.6 6754
82.239.40.163 16624 81.225.216.54 53358
90.213.246.144 9402 89.166.108.48 47175
83.227.156.194 26021 109.194.46.208 80
95.79.96.241 15528 24.252.70.24 52516
74.192.71.122 48397 78.154.10.6 35981
89.204.102.106 15739 99.1.110.3 22440
90.191.179.50 16191 201.53.55.59 61292
122.128.7.158 13056 95.58.92.65 48802
92.112.175.123 57663 188.134.14.120 9089
91.126.193.107 47880 78.72.106.34 53188
109.213.51.102 29726 89.178.134.24 64389
94.242.39.161 52574 76.215.117.211 51413
94.242.146.69 12718 114.27.89.171 43349
71.162.145.34 29292 80.99.42.137 10566
69.124.254.45 22881 187.20.103.130 16333
150.241.243.9 11285 213.85.141.144 46456
93.186.210.168 10720 84.86.167.83 49250
178.162.183.230 6821 85.186.48.10 25274
126.129.78.39 12196 70.48.43.93 59364
220.104.150.203 14433 94.31.232.73 47220
188.231.161.11 15100 24.12.33.224 25976
92.37.60.58 36471 114.154.228.24 14512
91.200.201.18 30249 202.67.20.232 13380
90.224.113.160 14137 94.15.164.174 45657
188.168.149.62 32100 151.56.153.203 10006
89.85.101.239 49653 92.243.177.118 26338
85.137.231.20 27117 95.71.69.196 25226
109.173.31.9 35713 98.117.36.191 56023
95.93.164.200 30478 209.222.54.23 6881
195.134.67.116 47054 79.141.52.134 48614
77.204.69.245 20415 82.4.38.3 60580
118.166.138.60 20047 77.160.150.63 12348
69.226.208.233 58693 95.132.188.142 16747
178.162.183.229 6821 89.123.135.44 12967
147.102.101.57 31117 24.242.52.51 41199
99.155.75.169 27252 84.3.164.209 38059
95.95.131.196 53008 67.61.48.132 51772
86.135.175.65 22570 75.51.92.53 46369
96.248.14.215 54714 61.56.132.76 23439
99.114.93.62 6881 112.104.6.195 21025
218.101.254.179 20865 78.116.106.245 29797
122.29.166.207 20125 62.205.245.195 43207
24.138.175.76 54343 188.24.228.246 48433
74.59.81.208 52162 188.241.183.77 41892
118.237.9.41 26975 95.78.151.107 28055
125.27.16.14 24154 91.144.104.160 40122
82.42.153.229 6881 203.135.35.68 16058
72.83.129.103 13768 94.180.34.231 18040
109.121.138.103 16757 216.186.213.183 34057
99.49.108.135 61808 182.88.83.202 6881
174.16.53.212 10881 188.163.76.190 51413
208.96.64.154 8545 77.71.45.107 63222
70.233.142.241 10844 71.63.16.85 44949
218.250.92.55 24465 68.215.227.132 50513
109.185.145.116 46074 62.228.103.223 11249
71.233.253.247 52632 219.112.140.25 16297
69.199.158.242 1046 118.168.199.192 21018
61.237.150.128 16001 89.103.74.81 11790
113.167.87.35 23472 77.110.201.72 55144
92.80.179.29 46605 87.21.255.123 32743
95.174.221.82 13219 72.39.132.149 11229
188.51.50.221 45298 178.49.20.218 42235
187.58.97.75 29532 87.121.209.168 27230
77.31.99.230 12300 118.108.135.76 22708
109.254.58.59 16275 112.144.249.69 17601
78.56.58.195 20217 85.210.192.179 53929
122.167.251.69 10907 95.143.216.174 25887
60.51.126.182 10476 95.43.73.227 25933
178.128.11.174 61849 208.70.61.203 18073
218.212.172.84 15730 70.178.206.42 24881
211.2.124.206 21145 189.24.23.171 60416
109.228.129.162 21836 62.201.119.41 61849
92.81.66.102 14464 87.206.75.146 6881
216.59.6.151 49161 78.176.207.54 6881
217.9.228.38 52626 78.163.164.237 24362
89.102.21.149 59205 99.190.51.250 59551
94.236.135.235 14741 76.252.236.215 19134
178.95.49.31 35059 98.242.28.163 26145
95.222.241.5 20086 99.50.200.151 53564
93.12.155.205 13490 220.98.144.232 22922
84.189.184.178 27337 79.113.121.141 35771
95.37.6.182 80 98.148.246.127 50300
77.225.25.74 21516 142.68.210.47 63653
123.205.25.101 24874 218.168.225.229 22678
211.49.2.134 51699 88.162.153.3 45698
84.80.253.42 58301 109.87.83.228 48931
95.190.84.211 23514 92.104.49.179 8500
77.85.121.195 19864 173.32.63.117 61054
80.81.52.236 11588 87.121.173.150 6148
114.78.108.245 18763 83.251.66.66 65052
87.117.193.75 59052 91.154.137.162 11984
93.86.43.29 18717 80.171.58.170 22797
76.200.119.40 33598 94.27.109.220 36053
202.91.148.53 61417
117.199.66.185 59509
83.213.159.14 61673
78.69.137.44 51413
94.195.125.8 16194
74.60.226.19 39582
118.216.216.189 31485
61.206.209.175 19759
85.230.109.209 6885
85.230.109.209 6882
70.161.168.143 28026
186.89.208.31 29977
76.170.201.149 58022
188.168.37.213 26920
220.87.28.165 19422
90.196.0.115 8793
95.25.118.39 43292
89.89.184.28 45594
2.94.21.224 21167
94.24.180.164 51413
69.22.210.60 44108
99.3.36.205 29624
87.118.159.137 32214
78.150.70.194 11605
118.169.51.195 63655
109.87.209.181 35691
88.168.220.170 16515
83.21.98.78 23532
84.228.30.163 26271
71.201.250.18 62141
75.155.68.157 12004
98.244.32.255 27000
187.22.84.8 13362
67.174.144.251 48131
59.93.116.98 60592
219.40.160.200 11266
188.230.68.133 64234
93.103.76.133 62482
82.35.193.163 49367
82.199.200.214 40635
79.121.55.130 33416
97.102.6.239 59824
69.150.73.121 48195
99.250.69.227 25017
178.83.250.159 62178
75.65.95.130 24792
77.70.96.235 48474
76.173.74.239 10826
98.251.67.38 15801
123.201.200.33 54012
213.191.30.253 12135
125.164.105.45 14264
188.54.96.108 13874
98.225.190.156 63350
70.81.211.190 39510
117.201.19.29 29960
69.221.9.204 36204
82.226.93.109 52049
94.21.163.155 6881
173.72.2.69 58839
173.72.2.69 58838
174.115.207.53 40067
24.200.200.102 11693
81.182.59.31 26133
212.92.232.102 36439
78.58.104.112 49574
79.100.174.203 18249
91.123.214.17 47577
70.55.196.137 60603
83.108.244.62 59851
61.5.241.219 59550
220.118.223.179 55487
80.184.76.198 46930
95.180.177.64 20749
190.51.60.70 13430
178.253.74.146 57795
221.161.5.96 21381
95.83.24.44 58220
61.64.85.57 8871
115.241.141.104 31440
41.218.245.100 10064
95.84.46.158 40663
83.154.58.197 39055
67.193.111.176 38941
84.251.15.143 51413
78.144.58.92 10112
120.60.15.173 13419
78.130.227.226 55407
184.91.54.179 57218
213.85.190.254 18216
85.220.114.208 52900
142.162.24.166 37627
77.232.0.135 51921
69.249.169.177 51691
76.213.243.148 28855
203.223.253.214 7770
78.229.62.160 14415
67.215.242.138 6881 67.215.242.138 6881
82.149.25.41 46820 173.50.147.111 55669
116.82.89.250 25571 67.240.191.70 53081
60.50.82.192 12787 118.160.53.83 12731
187.114.133.241 10549 216.138.216.227 49001
109.120.6.96 21469 77.93.16.43 35431
92.124.180.230 23079 178.82.201.203 12055
24.19.253.77 48092 68.62.10.72 22867
58.190.47.190 27512 88.177.195.185 20299
219.116.160.55 25208 187.16.62.58 63388
94.123.195.173 17434 121.80.39.231 18252
125.54.101.116 57138 213.112.106.243 18786
85.230.109.209 6884 79.113.182.121 42808
92.84.191.232 10293 88.184.85.157 40478
174.50.54.21 32019 82.119.65.229 41614
99.229.109.124 6888 24.35.86.183 48539
87.110.153.41 56759 67.183.139.6 29721
178.187.66.20 17438 121.124.190.173 50282
89.218.103.57 19107 117.194.194.73 13257
114.44.18.94 1529 110.175.157.60 12000
109.111.152.211 35691 93.102.129.104 36854
77.122.1.218 30237 92.104.22.153 6881
82.56.51.220 59015 68.203.251.86 18992
82.245.238.156 39545 173.51.127.134 33785
68.44.185.187 29888 98.232.90.6 53436
83.217.190.31 39457 59.98.161.236 62056
81.201.56.15 6881 201.87.32.172 36138
188.186.68.15 42452 88.115.78.139 15273
109.160.57.143 11947 123.117.107.29 19970
151.57.36.222 57980 93.96.190.204 6883
95.59.24.64 26897 83.248.90.115 53778
78.13.96.106 9091 78.96.174.224 60387
194.44.203.120 60457 68.40.87.11 37253
86.63.247.225 14760 70.178.210.213 38087
24.11.181.218 54587 77.101.133.246 14789
68.40.4.78 38131 115.143.47.172 30429
70.26.98.163 10009 93.100.92.224 27243
187.104.240.6 27396 80.80.153.98 11832
41.227.4.6 53989 91.206.4.9 3333
69.221.61.72 63861 188.35.8.236 62459
86.7.2.171 25589 86.107.79.233 49905
70.73.113.97 28081 24.22.195.49 6881
188.212.192.150 44909 76.101.135.11 20009
82.246.253.38 6900 222.164.18.139 6881
66.227.154.68 55316 193.106.25.130 57020
210.50.200.115 6881 79.107.183.240 45683
89.211.201.1 47214 71.229.83.233 45682
71.145.142.137 44293 76.88.94.229 37557
109.60.217.204 9000 76.21.110.223 51413
94.241.206.69 20091 99.40.159.122 25946
88.135.131.100 58407 88.173.24.47 41595
98.179.26.65 10197 67.149.36.107 40347
180.146.24.30 24733 201.155.152.51 10196
94.66.189.31 34843 118.128.22.37 37251
125.26.41.6 44723 95.143.25.198 47616
77.50.185.98 45240 92.144.60.92 13751
193.43.222.175 15977 86.197.129.179 47067
24.34.126.186 59769 99.66.5.48 21364
115.87.124.125 53022 99.48.229.94 25361
67.177.209.198 32814 121.254.45.84 6800
93.102.81.243 20634 188.248.58.21 50340
62.121.85.134 6881 95.26.55.82 59164
67.163.87.22 6881 62.221.151.184 20536
173.173.24.204 17165 109.201.74.159 10207
189.19.28.184 2042 98.254.244.165 56359
84.100.62.233 52448 203.185.36.12 19872
88.169.213.101 35608 210.73.1.92 12469
109.255.144.87 8080 218.171.240.219 10236
217.131.178.155 31638 173.73.187.215 37840
193.43.255.89 12451 86.10.229.246 27857
173.57.57.106 41416 119.247.45.173 10745
94.62.199.171 15566 79.113.175.185 50877
71.177.102.167 37973 95.31.11.189 6886
59.27.33.209 51801 90.49.27.240 50510
89.178.242.209 27670 188.4.197.57 59491
86.132.130.195 16438 84.101.189.175 19015
76.108.128.141 58775 90.180.166.149 6880
67.189.42.213 53943
113.199.242.93 35720
183.179.97.20 24840
121.45.215.192 58823
121.219.253.112 31161
118.137.194.171 26705
210.6.173.121 14972
87.194.243.159 64670
81.236.226.106 6882
83.77.171.200 15846
84.52.63.250 14255
67.215.242.139 6881 67.215.242.139 6881
84.246.95.179 43652 173.75.218.211 63205
88.222.154.187 62265 122.118.67.231 23915
111.243.28.27 55276 83.9.39.33 22798
122.164.144.53 18463 94.69.249.98 48057
210.6.181.220 24282 86.13.80.190 51326
91.153.197.239 2104 88.106.69.215 11924
77.210.249.40 14915 212.242.219.216 47000
109.86.76.157 47312 95.76.50.171 19698
82.193.158.49 8807 88.89.180.142 10766
115.43.165.207 4713 77.45.166.176 32802
94.41.128.202 49440 24.14.73.12 40442
83.254.22.62 28881 123.203.168.108 16828
62.21.16.139 51172 110.4.246.105 15045
147.102.102.94 62957 88.215.184.26 52757
62.98.164.48 10950 74.68.145.105 11524
117.194.32.225 60090 112.70.90.34 7793
187.57.200.195 33839 89.216.145.232 57343
190.177.176.192 49799 86.207.79.244 19560
88.181.170.74 53822 67.86.153.146 61010
97.97.117.10 38628 92.83.127.98 18709
97.120.33.227 57680 116.15.128.30 9998
61.4.170.187 17790 203.59.10.85 22847
78.144.120.92 20965 182.93.10.208 13054
70.139.176.169 27008 79.17.30.127 32896
92.115.180.186 35691 123.118.137.119 25421
174.142.32.120 51413 219.175.138.61 23739
97.85.57.37 34092 95.96.188.23 12400
84.90.10.205 24820 188.134.67.102 6882
83.149.3.23 59982 24.98.183.64 57540
98.14.97.232 36193 93.123.41.127 23436
98.192.164.25 17489 173.87.8.115 22866
210.124.128.139 33819 200.29.72.19 46935
195.234.110.226 39347 189.19.100.69 1224
99.9.186.124 58889 220.102.166.142 27156
115.242.8.83 9388 81.106.247.102 19244
88.189.81.247 14965 82.25.111.214 21311
87.194.85.120 50941 193.201.198.253 63408
84.50.22.179 63089 94.47.188.106 56342
173.71.152.93 50989
70.119.159.158 62727
86.176.212.56 53046
74.78.254.79 55775
124.37.161.214 10990
123.204.252.197 10037
78.233.97.234 28751
78.106.52.107 15048
89.211.154.147 57399
78.92.20.255 14850
76.22.26.195 10269
60.46.193.129 20326
89.132.136.252 51385
122.217.69.120 21438
24.184.162.88 20212
71.139.186.245 31114
93.94.21.27 15252
87.70.142.8 15960
98.135.71.79 29008
117.47.90.194 10016
99.139.154.78 8877
85.12.239.118 64317
76.65.18.45 7700
87.224.254.21 25388
93.84.84.155 51757
84.124.205.238 23020
221.46.51.137 22507
213.16.120.166 54701
92.81.249.11 11185
77.54.70.32 35815
60.244.140.57 12687
109.165.40.174 23806
147.46.216.167 50410
99.57.47.134 19965
180.25.22.176 40005
71.12.16.186 11422
24.49.177.89 40029
88.141.135.252 58810
92.112.66.105 55311
111.249.218.164 56509
68.149.168.121 64750
41.223.241.48 38494
80.99.189.105 50001
95.32.38.47 31175
213.125.29.122 6881
92.28.148.131 22902
114.42.222.199 22443
175.115.187.64 13038
114.44.107.200 17500
81.50.148.235 64081
88.230.2.13 41680
60.49.48.177 21184
86.43.195.228 39164
88.237.29.153 14665
86.126.237.42 49627
68.37.160.28 29734
123.123.0.174 16330
84.215.70.237 25116
200.118.51.152 23106
92.62.116.14 38298
189.115.242.12 16373
86.126.244.83 10358
93.86.94.198 12077
220.134.70.7 57682
81.101.108.205 62082
80.48.112.175 24917
94.27.95.56 25376
41.239.99.14 16942
89.190.216.86 53241
58.152.99.134 16001
124.181.115.135 34574
110.226.38.196 11614
117.254.176.138 24325
67.164.200.224 40281
94.125.247.162 22331
213.130.92.78 32973
70.26.64.139 26358
219.70.171.198 18038
189.78.31.162 39736
86.184.173.124 63265
118.170.7.23 26814
186.45.139.74 12756
116.88.194.226 8883
114.47.171.209 21087
76.177.235.15 13961
178.164.177.154 8929