diff --git a/.gitignore b/.gitignore index 558848c08..5370c8638 100755 --- a/.gitignore +++ b/.gitignore @@ -1,11 +1,7 @@ *.o - - - - - agents/iguana.exe +Debug/* iguana/pnacl/Release/iguana_unstripped.pexe diff --git a/MyTemplate.vstemplate b/MyTemplate.vstemplate new file mode 100644 index 000000000..7dd0fb0dc --- /dev/null +++ b/MyTemplate.vstemplate @@ -0,0 +1,22 @@ + + + iguana_template + <No description available> + VC + + + 1000 + true + iguana_template + true + Enabled + true + __TemplateIcon.ico + + + + ConsoleApplication3.vcxproj.filters + ReadMe.txt + + + \ No newline at end of file diff --git a/OSlibs/win/mingw.h b/OSlibs/win/mingw.h index 1a80c56dc..14425c659 100755 --- a/OSlibs/win/mingw.h +++ b/OSlibs/win/mingw.h @@ -1,12 +1,14 @@ #ifndef MINGW_H #define MINGW_H +#define ssize_t __int32 #include #define _USE_W32_SOCKETS 1 #include #include "pthread.h" +#ifndef NATIVE_WINDOWS #define ENOTCONN WSAENOTCONN #define EWOULDBLOCK WSAEWOULDBLOCK #define ENOBUFS WSAENOBUFS @@ -18,7 +20,7 @@ #define EISCONN WSAEISCONN #define ECONNREFUSED WSAECONNREFUSED #define EHOSTUNREACH WSAEHOSTUNREACH - +#endif /* winsock doesn't feature poll(), so there is a version implemented * in terms of select() in mingw.c. The following definitions diff --git a/ReadMe.txt b/ReadMe.txt new file mode 100644 index 000000000..3d1d8f0c5 --- /dev/null +++ b/ReadMe.txt @@ -0,0 +1,40 @@ +======================================================================== + CONSOLE APPLICATION : ConsoleApplication3 Project Overview +======================================================================== + +AppWizard has created this ConsoleApplication3 application for you. + +This file contains a summary of what you will find in each of the files that +make up your ConsoleApplication3 application. + + +ConsoleApplication3.vcxproj + This is the main project file for VC++ projects generated using an Application Wizard. + It contains information about the version of Visual C++ that generated the file, and + information about the platforms, configurations, and project features selected with the + Application Wizard. + +ConsoleApplication3.vcxproj.filters + This is the filters file for VC++ projects generated using an Application Wizard. + It contains information about the association between the files in your project + and the filters. This association is used in the IDE to show grouping of files with + similar extensions under a specific node (for e.g. ".cpp" files are associated with the + "Source Files" filter). + +ConsoleApplication3.cpp + This is the main application source file. + +///////////////////////////////////////////////////////////////////////////// +Other standard files: + +StdAfx.h, StdAfx.cpp + These files are used to build a precompiled header (PCH) file + named ConsoleApplication3.pch and a precompiled types file named StdAfx.obj. + +///////////////////////////////////////////////////////////////////////////// +Other notes: + +AppWizard uses "TODO:" comments to indicate parts of the source code you +should add to or customize. + +///////////////////////////////////////////////////////////////////////////// diff --git a/__TemplateIcon.ico b/__TemplateIcon.ico new file mode 100644 index 000000000..aae70d3b8 Binary files /dev/null and b/__TemplateIcon.ico differ diff --git a/basilisk/basilisk.c b/basilisk/basilisk.c index 467f3160b..8f5c8f64d 100755 --- a/basilisk/basilisk.c +++ b/basilisk/basilisk.c @@ -48,8 +48,8 @@ uint32_t basilisk_calcnonce(struct supernet_info *myinfo,uint8_t *data,int32_t d break; } iguana_rwnum(0,(void *)hash.uints,sizeof(basilisktag),&basilisktag); - iguana_rwnum(1,&data[-sizeof(basilisktag)],sizeof(basilisktag),&basilisktag); - char str[65],str2[65]; printf("found hash after numiters.%d %s vs %s basilisktag.%u\n",numiters,bits256_str(str,threshold),bits256_str(str2,hash2),basilisktag); + iguana_rwnum(1,&data[-(int32_t)sizeof(basilisktag)],sizeof(basilisktag),&basilisktag); + //char str[65],str2[65]; printf("found hash after numiters.%d %s vs %s basilisktag.%u\n",numiters,bits256_str(str,threshold),bits256_str(str2,hash2),basilisktag); return(basilisktag); } @@ -95,7 +95,7 @@ uint8_t *get_dataptr(int32_t hdroffset,uint8_t **ptrp,int32_t *datalenp,uint8_t uint8_t *basilisk_jsondata(int32_t extraoffset,uint8_t **ptrp,uint8_t *space,int32_t spacesize,int32_t *datalenp,char *symbol,cJSON *sendjson,uint32_t basilisktag) { - char *sendstr,*hexstr=0; uint8_t *data,hexspace[4096],*allocptr=0,*hexdata; int32_t datalen,hexlen=0; + char *sendstr,*hexstr=0; uint8_t *data,hexspace[4096],*allocptr=0,*hexdata=0; int32_t datalen,hexlen=0; if ( jobj(sendjson,"symbol") == 0 ) jaddstr(sendjson,"symbol",symbol); if ( (hexstr= jstr(sendjson,"data")) != 0 ) @@ -118,7 +118,7 @@ uint8_t *basilisk_jsondata(int32_t extraoffset,uint8_t **ptrp,uint8_t *space,int memcpy(data,sendstr,datalen); //printf("jsondata.(%s) + hexlen.%d\n",sendstr,hexlen); free(sendstr); - if ( hexlen > 0 ) + if ( hexlen > 0 && hexdata != 0 ) { //int32_t i; for (i=0; ibasilisktag = basilisktag; - if ( (ptr->numrequired= minresults) == 0 ) + if ( (ptr->numrequired= numrequired) == 0 ) ptr->numrequired = 1; strcpy(ptr->CMD,CMD); safecopy(ptr->symbol,symbol,sizeof(ptr->symbol)); @@ -162,7 +162,9 @@ int32_t basilisk_sendcmd(struct supernet_info *myinfo,char *destipaddr,char *typ if ( destipaddr != 0 ) { if ( destipaddr[0] == 0 ) + { destipaddr = 0; // broadcast + } else if ( strcmp(destipaddr,"127.0.0.1") == 0 || strcmp(destipaddr,myinfo->ipaddr) == 0 ) { printf("return after locally basilisk_msgprocess\n"); @@ -171,19 +173,42 @@ int32_t basilisk_sendcmd(struct supernet_info *myinfo,char *destipaddr,char *typ return(0); } } - alreadysent = calloc(IGUANA_MAXPEERS * IGUANA_MAXCOINS,sizeof(*alreadysent)); - iguana_rwnum(1,&data[-sizeof(*basilisktagp)],sizeof(*basilisktagp),basilisktagp); + iguana_rwnum(1,&data[-(int32_t)sizeof(*basilisktagp)],sizeof(*basilisktagp),basilisktagp); if ( *basilisktagp == 0 ) { if ( nBits != 0 ) *basilisktagp = basilisk_calcnonce(myinfo,data,datalen,nBits); else *basilisktagp = rand(); - iguana_rwnum(1,&data[-sizeof(*basilisktagp)],sizeof(*basilisktagp),basilisktagp); + iguana_rwnum(1,&data[-(int32_t)sizeof(*basilisktagp)],sizeof(*basilisktagp),basilisktagp); } data -= sizeof(*basilisktagp), datalen += sizeof(*basilisktagp); memset(cmd,0,sizeof(cmd)); sprintf(cmd,"SuperNET%s",type); + if ( destipaddr != 0 ) + { + cmd[6] = 'E', cmd[7] = 'T'; + HASH_ITER(hh,myinfo->allcoins,coin,tmp) + { + if ( coin->peers == 0 ) + continue; + if ( coin->FULLNODE == 0 && coin->VALIDATENODE == 0 ) + cmd[0] = 's'; + else cmd[0] = 'S'; + for (i=0; ipeers->active[i]; + if ( addr->usock >= 0 && strcmp(addr->ipaddr,destipaddr) == 0 ) + { + return(iguana_queue_send(addr,delaymillis,&data[-(int32_t)sizeof(struct iguana_msghdr)],cmd,datalen)); + } + } + } + return(-1); + } + if ( basilisk_specialcmd(type) != 0 && NUMRELAYS == 0 ) + return(-1); //portable_mutex_lock(&myinfo->allcoins_mutex); + alreadysent = calloc(IGUANA_MAXPEERS * IGUANA_MAXCOINS,sizeof(*alreadysent)); HASH_ITER(hh,myinfo->allcoins,coin,tmp) { if ( coin->peers == 0 ) @@ -202,8 +227,10 @@ int32_t basilisk_sendcmd(struct supernet_info *myinfo,char *destipaddr,char *typ if ( addr->usock >= 0 ) { s = 0; - if ( NUMRELAYS > 0 && basilisk_specialcmd(type) != 0 ) + valid = (addr->supernet != 0); + if ( basilisk_specialcmd(type) != 0 ) { + valid = 0; OS_randombytes((void *)&r2,sizeof(r2)); if ( (r2 % NUMRELAYS) >= sqrt(NUMRELAYS) ) { @@ -218,8 +245,8 @@ int32_t basilisk_sendcmd(struct supernet_info *myinfo,char *destipaddr,char *typ //printf("skip non-relay.(%s)\n",addr->ipaddr); continue; } - //printf("send to other relay.(%s)\n",addr->ipaddr); valid = 1; + //printf("send to other relay.(%s)\n",addr->ipaddr); } for (s=0; sipbits ) @@ -229,7 +256,8 @@ int32_t basilisk_sendcmd(struct supernet_info *myinfo,char *destipaddr,char *typ } if ( s == n && valid == 1 && (destipaddr == 0 || strcmp(addr->ipaddr,destipaddr) == 0) ) { - //printf("n.%d/fanout.%d i.%d l.%d [%s].tag%d send %s.(%s) [%x] datalen.%d addr->supernet.%u basilisk.%u to (%s).%d destip.%s\n",n,fanout,i,l,cmd,*(uint32_t *)data,type,(char *)&data[4],*(int32_t *)&data[datalen-4],datalen,addr->supernet,addr->basilisk,addr->ipaddr,addr->A.port,destipaddr!=0?destipaddr:"broadcast"); + //fprintf(stderr,"(%s) ",addr->ipaddr); + //printf("n.%d/fanout.%d i.%d l.%d [%s].tag%u send %s.(%s) [%x] datalen.%d addr->supernet.%u basilisk.%u to (%s).%d destip.%s\n",n,fanout,i,l,cmd,*(uint32_t *)data,type,(char *)&data[4],*(int32_t *)&data[datalen-4],datalen,addr->supernet,addr->basilisk,addr->ipaddr,addr->A.port,destipaddr!=0?destipaddr:"broadcast"); if ( encryptflag != 0 && bits256_nonz(addr->pubkey) != 0 ) { void *ptr; uint8_t *cipher,space[8192]; int32_t cipherlen; bits256 privkey; @@ -237,7 +265,7 @@ int32_t basilisk_sendcmd(struct supernet_info *myinfo,char *destipaddr,char *typ memset(privkey.bytes,0,sizeof(privkey)); if ( (cipher= SuperNET_ciphercalc(&ptr,&cipherlen,&privkey,&addr->pubkey,data,datalen,space,sizeof(space))) != 0 ) { - if ( (val= iguana_queue_send(addr,delaymillis,&cipher[-sizeof(struct iguana_msghdr)],cmd,cipherlen)) >= cipherlen ) + if ( (val= iguana_queue_send(addr,delaymillis,&cipher[-(int32_t)sizeof(struct iguana_msghdr)],cmd,cipherlen)) >= cipherlen ) alreadysent[n++] = (uint32_t)addr->ipbits; if ( ptr != 0 ) free(ptr); @@ -246,7 +274,7 @@ int32_t basilisk_sendcmd(struct supernet_info *myinfo,char *destipaddr,char *typ else { cmd[6] = 'E', cmd[7] = 'T'; - if ( (val= iguana_queue_send(addr,delaymillis,&data[-sizeof(struct iguana_msghdr)],cmd,datalen)) >= datalen ) + if ( (val= iguana_queue_send(addr,delaymillis,&data[-(int32_t)sizeof(struct iguana_msghdr)],cmd,datalen)) >= datalen ) { alreadysent[n++] = (uint32_t)addr->ipbits; if ( n >= IGUANA_MAXPEERS*IGUANA_MAXCOINS ) @@ -299,10 +327,10 @@ void basilisk_sendback(struct supernet_info *myinfo,char *origCMD,char *symbol,c } } -struct basilisk_item *basilisk_issueremote(struct supernet_info *myinfo,struct iguana_peer *addr,int32_t *numsentp,char *CMD,char *symbol,int32_t blockflag,cJSON *valsobj,int32_t fanout,int32_t minresults,uint32_t basilisktag,int32_t timeoutmillis,void *deprecated_dontuse,char *retstr,int32_t encryptflag,int32_t delaymillis,uint32_t nBits) +struct basilisk_item *basilisk_issueremote(struct supernet_info *myinfo,struct iguana_peer *addr,int32_t *numsentp,char *CMD,char *symbol,int32_t blockflag,cJSON *valsobj,int32_t fanout,int32_t numrequired,uint32_t basilisktag,int32_t timeoutmillis,void *deprecated_dontuse,char *retstr,int32_t encryptflag,int32_t delaymillis,uint32_t nBits) { struct basilisk_item *pending; uint8_t *allocptr,*data,space[4096]; int32_t datalen; cJSON *retarray; - pending = basilisk_itemcreate(myinfo,CMD,symbol,basilisktag,minresults,valsobj,timeoutmillis,0); + pending = basilisk_itemcreate(myinfo,CMD,symbol,basilisktag,numrequired,valsobj,timeoutmillis,0); pending->nBits = nBits; *numsentp = 0; if ( retstr != 0 ) @@ -319,31 +347,33 @@ struct basilisk_item *basilisk_issueremote(struct supernet_info *myinfo,struct i if ( blockflag != 0 ) { portable_mutex_lock(&myinfo->basilisk_mutex); - //printf("HASH_ADD.%p\n",pending); HASH_ADD(hh,myinfo->basilisks.issued,basilisktag,sizeof(basilisktag),pending); portable_mutex_unlock(&myinfo->basilisk_mutex); - //queue_enqueue("issuedQ",&myinfo->basilisks.issued,&pending->DL,0); if ( pending->expiration <= OS_milliseconds() ) pending->expiration = OS_milliseconds() + BASILISK_TIMEOUT; - //ptr->vals = jduplicate(valsobj); strcpy(pending->symbol,"BTCD"); strcpy(pending->CMD,CMD); while ( OS_milliseconds() < pending->expiration ) { + portable_mutex_lock(&myinfo->basilisk_mutex); if ( pending->numresults >= pending->numrequired )//|| (retstr= pending->retstr) != 0 ) { - //printf("numresults.%d vs numrequired.%d\n",pending->numresults,pending->numrequired); + portable_mutex_unlock(&myinfo->basilisk_mutex); + //printf("<<<<<<<<<<<<< numresults.%d vs numrequired.%d\n",pending->numresults,pending->numrequired); break; } + portable_mutex_unlock(&myinfo->basilisk_mutex); usleep(10000); } + portable_mutex_lock(&myinfo->basilisk_mutex); if ( (retarray= pending->retarray) != 0 ) { pending->retstr = jprint(retarray,0); + //printf("num.%d:%d required.%d RETSTR.(%s)\n",pending->numresults,cJSON_GetArraySize(pending->retarray),pending->numrequired,pending->retstr); pending->retarray = 0; free_json(retarray); } - //return(basilisk_waitresponse(myinfo,CMD,"BTCD",0,&Lptr,valsobj,ptr)); + portable_mutex_unlock(&myinfo->basilisk_mutex); } else free(pending), pending = 0; //ptr->finished = (uint32_t)time(NULL); if ( allocptr != 0 ) free(allocptr); @@ -356,22 +386,24 @@ struct basilisk_item *basilisk_requestservice(struct supernet_info *myinfo,struc int32_t minfanout,numrequired,timeoutmillis,numsent,delaymillis,encryptflag,fanout; struct basilisk_item *ptr; char buf[4096],*symbol,*str = 0; struct iguana_info *virt; //printf("request.(%s)\n",jprint(valsobj,0)); basilisk_addhexstr(&str,valsobj,buf,sizeof(buf),data,datalen); - if ( bits256_cmp(hash,GENESIS_PUBKEY) != 0 && bits256_nonz(hash) != 0 ) + if ( bits256_nonz(hash) == 0 || (bits256_cmp(hash,GENESIS_PUBKEY) != 0 && bits256_nonz(hash) != 0) ) { if ( jobj(valsobj,"hash") != 0 ) jdelete(valsobj,"hash"); jaddbits256(valsobj,"hash",hash); } - if ( (numrequired= jint(valsobj,"numrequired")) <= 0 ) - numrequired = sqrt(NUMRELAYS); if ( (timeoutmillis= jint(valsobj,"timeout")) == 0 ) timeoutmillis = BASILISK_TIMEOUT; minfanout = sqrt(NUMRELAYS)+1; + if ( minfanout < 5 ) + minfanout = 5; if ( jobj(valsobj,"fanout") == 0 ) fanout = minfanout; else fanout = jint(valsobj,"fanout"); if ( fanout < minfanout ) fanout = minfanout; + if ( (numrequired= jint(valsobj,"numrequired")) <= 0 ) + numrequired = MAX(fanout,sqrt(NUMRELAYS)+1); if ( (symbol= jstr(valsobj,"coin")) != 0 || (symbol= jstr(valsobj,"symbol")) != 0 ) { if ( (virt= iguana_coinfind(symbol)) != 0 ) @@ -395,6 +427,7 @@ char *basilisk_standardservice(char *CMD,struct supernet_info *myinfo,void *_add if ( RELAYID >= 0 && basilisk_specialcmd(CMD) == 0 ) return(clonestr("{\"error\":\"unsupported special relay command\"}")); data = get_dataptr(BASILISK_HDROFFSET,&allocptr,&datalen,space,sizeof(space),hexstr); +//printf("request.(%s)\n",jprint(valsobj,0)); ptr = basilisk_requestservice(myinfo,_addr,CMD,blockflag,valsobj,hash,data,datalen,nBits); if ( allocptr != 0 ) free(allocptr); @@ -415,7 +448,7 @@ char *basilisk_standardservice(char *CMD,struct supernet_info *myinfo,void *_add } ptr->finished = (uint32_t)time(NULL); } - if ( 1 && strcmp("RID",CMD) != 0 && strcmp("BAL",CMD) != 0 && strcmp("MSG",CMD) != 0 ) + if ( 0 && strcmp("RID",CMD) != 0 && strcmp("BAL",CMD) != 0 && strcmp("MSG",CMD) != 0 ) printf("%s.(%s) -> (%s)\n",CMD,jprint(valsobj,0),retstr!=0?retstr:""); return(retstr); } @@ -540,8 +573,8 @@ void basilisk_result(struct supernet_info *myinfo,char *remoteaddr,uint32_t basi { retstr = jprint(vals,0); safecopy(CMD,jstr(vals,"origcmd"),sizeof(CMD)); - if ( 0 && strcmp("RID",CMD) != 0 ) - printf("(%s) -> Q.%u results vals.(%s)\n",CMD,basilisktag,retstr); + //if ( 0 && strcmp("RID",CMD) != 0 ) + //printf("(%s) -> Q.%u results vals.(%s)\n",CMD,basilisktag,retstr);//(int32_t)strlen(retstr)); if ( strcmp(CMD,"GET") == 0 ) basilisk_geckoresult(myinfo,remoteaddr,retstr,data,datalen); else @@ -549,7 +582,6 @@ void basilisk_result(struct supernet_info *myinfo,char *remoteaddr,uint32_t basi portable_mutex_lock(&myinfo->basilisk_mutex); HASH_FIND(hh,myinfo->basilisks.issued,&basilisktag,sizeof(basilisktag),pending); //printf("HASH_FIND.%p\n",pending); - portable_mutex_unlock(&myinfo->basilisk_mutex); if ( pending != 0 && retstr != 0 ) { if ( (item= cJSON_Parse(retstr)) != 0 ) @@ -557,15 +589,16 @@ void basilisk_result(struct supernet_info *myinfo,char *remoteaddr,uint32_t basi if ( pending->retarray == 0 ) pending->retarray = cJSON_CreateArray(); if ( jobj(item,"myip") == 0 ) - jaddstr(item,"myip",myinfo->ipaddr); + jaddstr(item,"myip",remoteaddr); jaddi(pending->retarray,item); if ( jobj(item,"error") == 0 ) { - //printf("numresults.%d (%s)\n",pending->numresults,jprint(item,0)); + //printf("numresults.%d:%d\n",pending->numresults,cJSON_GetArraySize(pending->retarray)); pending->numresults++; } } else printf("couldnt parse.(%s)\n",retstr); } //else printf("couldnt find issued.%u\n",basilisktag); + portable_mutex_unlock(&myinfo->basilisk_mutex); } } } @@ -620,6 +653,7 @@ void basilisk_msgprocess(struct supernet_info *myinfo,void *_addr,uint32_t sende // coin services { (void *)"VAL", &basilisk_respond_value }, { (void *)"BAL", &basilisk_respond_balances }, + { (void *)"INF", &basilisk_respond_getinfo }, }; strncpy(CMD,type,3), CMD[3] = cmd[3] = 0; if ( isupper((int32_t)CMD[0]) != 0 && isupper((int32_t)CMD[1]) != 0 && isupper((int32_t)CMD[2]) != 0 ) @@ -637,6 +671,8 @@ void basilisk_msgprocess(struct supernet_info *myinfo,void *_addr,uint32_t sende if ( basilisk_specialcmd(CMD) == 0 ) return; } + else if ( basilisk_specialcmd(CMD) != 0 ) + return; symbol = "BTCD"; if ( senderipbits == 0 ) expand_ipbits(remoteaddr,myinfo->myaddr.myipbits); @@ -693,7 +729,7 @@ void basilisk_msgprocess(struct supernet_info *myinfo,void *_addr,uint32_t sende hash = jbits256(valsobj,"hash"); timeoutmillis = jint(valsobj,"timeout"); if ( (numrequired= jint(valsobj,"numrequired")) == 0 ) - numrequired = sqrt(NUMRELAYS); + numrequired = sqrt(NUMRELAYS)+1; if ( senderipbits != 0 ) expand_ipbits(remoteaddr,senderipbits); else remoteaddr[0] = 0; @@ -703,7 +739,7 @@ void basilisk_msgprocess(struct supernet_info *myinfo,void *_addr,uint32_t sende { if ( coin->FULLNODE != 0 || RELAYID >= 0 ) // iguana node { - //printf("services %s\n",type); + //printf("FULL.%d RELAYID.%d NUMRELAYS.%d services %s\n",coin->FULLNODE,RELAYID,NUMRELAYS,type); if ( (retstr= (*basilisk_services[i][1])(myinfo,type,addr,remoteaddr,basilisktag,valsobj,data,datalen,hash,from_basilisk)) != 0 ) { //printf("from_basilisk.%d ret.(%s)\n",from_basilisk,retstr); @@ -751,8 +787,8 @@ void basilisk_p2p(void *_myinfo,void *_addr,char *senderip,uint8_t *data,int32_t len += iguana_rwnum(0,data,sizeof(basilisktag),&basilisktag); //int32_t i; for (i=0; i= 0 ) - printf(" ->received.%d basilisk_p2p.(%s) from %s tag.%d\n",datalen,type,senderip!=0?senderip:"?",basilisktag); + if ( RELAYID >= 0 ) + printf("RELAYID.%d ->received.%d basilisk_p2p.(%s) from %s tag.%u\n",RELAYID,datalen,type,senderip!=0?senderip:"?",basilisktag); basilisk_msgprocess(myinfo,_addr,ipbits,type,basilisktag,&data[len],datalen - len); } if ( ptr != 0 ) @@ -834,14 +870,17 @@ void basilisks_loop(void *arg) basilisk_ping_send(myinfo,btcd); } } - HASH_ITER(hh,myinfo->allcoins,coin,tmpcoin) + if ( myinfo->expiration != 0 ) { - if ( time(NULL) > coin->lastunspentsupdate+10 ) + HASH_ITER(hh,myinfo->allcoins,coin,tmpcoin) { - //printf(">>>>>>>>>>>>> update\n"); - basilisk_unspents_update(myinfo,coin); - coin->lastunspentsupdate = (uint32_t)time(NULL); - //printf(">>>>>>>>>>>>> update finished\n"); + if ( myinfo->Cunspents == 0 || time(NULL) > coin->lastunspentsupdate+60 ) + { + //printf(">>>>>>>>>>>>> update %s\n",coin->symbol); + basilisk_unspents_update(myinfo,coin); + coin->lastunspentsupdate = (uint32_t)time(NULL); + //printf(">>>>>>>>>>>>> update %s finished\n",coin->symbol); + } } } if ( RELAYID < 0 && myinfo->expiration != 0 ) @@ -860,8 +899,8 @@ void basilisks_loop(void *arg) } portable_mutex_unlock(&myinfo->messagemutex); if ( RELAYID >= 0 ) - usleep(30000); - else usleep(100000); + usleep(100000); + else usleep(3000000); } } @@ -882,6 +921,7 @@ void basilisks_init(struct supernet_info *myinfo) #include "../includes/iguana_apidefs.h" #include "../includes/iguana_apideclares.h" + HASH_ARRAY_STRING(basilisk,balances,hash,vals,hexstr) { char *retstr=0,*symbol; uint32_t basilisktag; struct basilisk_item *ptr,Lptr; int32_t timeoutmillis; @@ -889,40 +929,46 @@ HASH_ARRAY_STRING(basilisk,balances,hash,vals,hexstr) return(clonestr("{\"error\":\"special relays only do OUT and MSG\"}")); if ( vals == 0 ) return(clonestr("{\"error\":\"need vals object\"}")); - //if ( coin == 0 ) - { - if ( (symbol= jstr(vals,"symbol")) != 0 || (symbol= jstr(vals,"coin")) != 0 ) - coin = iguana_coinfind(symbol); - } + if ( (symbol= jstr(vals,"symbol")) != 0 || (symbol= jstr(vals,"coin")) != 0 ) + coin = iguana_coinfind(symbol); + if ( jobj(vals,"history") == 0 ) + jaddnum(vals,"history",3); if ( jobj(vals,"fanout") == 0 ) - jaddnum(vals,"fanout",(int32_t)sqrt(NUMRELAYS)+1); + jaddnum(vals,"fanout",MAX(5,(int32_t)sqrt(NUMRELAYS)+1)); if ( jobj(vals,"numrequired") == 0 ) - jaddnum(vals,"numrequired",sqrt(NUMRELAYS)); + jaddnum(vals,"numrequired",juint(vals,"fanout")); + if ( jobj(vals,"addresses") == 0 ) + { + jadd(vals,"addresses",iguana_getaddressesbyaccount(myinfo,coin,"*")); + //printf("added all %s addresses: %s\n",coin->symbol,jprint(vals,0)); + } //else printf("have addresses.(%s)\n",jprint(jobj(vals,"addresses"),0)); + if ( (basilisktag= juint(vals,"basilisktag")) == 0 ) + basilisktag = rand(); + if ( (timeoutmillis= juint(vals,"timeout")) <= 0 ) + timeoutmillis = 3000; if ( coin != 0 ) { - if ( jobj(vals,"addresses") == 0 ) + if ( coin->FULLNODE != 0 || coin->VALIDATENODE != 0 ) { - jadd(vals,"addresses",iguana_getaddressesbyaccount(myinfo,coin,"*")); - //printf("added all addresses: %s\n",jprint(vals,0)); - } //else printf("have addresses.(%s)\n",jprint(jobj(vals,"addresses"),0)); - if ( (basilisktag= juint(vals,"basilisktag")) == 0 ) - basilisktag = rand(); - if ( (timeoutmillis= juint(vals,"timeout")) <= 0 ) - timeoutmillis = BASILISK_TIMEOUT; - if ( (coin->FULLNODE != 0 || coin->VALIDATENODE != 0) && (ptr= basilisk_bitcoinbalances(&Lptr,myinfo,coin,remoteaddr,basilisktag,timeoutmillis,vals)) != 0 ) - { - retstr = ptr->retstr, ptr->retstr = 0; - ptr->finished = (uint32_t)time(NULL); - return(retstr); + if ( (ptr= basilisk_bitcoinbalances(&Lptr,myinfo,coin,remoteaddr,basilisktag,timeoutmillis,vals)) != 0 ) + { + retstr = ptr->retstr, ptr->retstr = 0; + ptr->finished = (uint32_t)time(NULL); + return(retstr); + } + return(clonestr("{\"error\":\"no result\"}")); } - return(clonestr("{\"error\":\"no result\"}")); } else printf("no coin\n"); - return(basilisk_standardservice("BAL",myinfo,0,hash,vals,hexstr,1)); + if ( (retstr= basilisk_standardservice("BAL",myinfo,0,hash,vals,hexstr,1)) != 0 ) + { + basilisk_unspents_process(myinfo,coin,retstr); + } + return(retstr); } HASH_ARRAY_STRING(basilisk,history,hash,vals,hexstr) { - struct basilisk_unspent *bu; int32_t i; int64_t totalspent=0,total = 0; struct iguana_waccount *wacct,*tmp; struct iguana_waddress *waddr,*tmp2; char *symbol; cJSON *retjson,*array; struct basilisk_spend *s; + int64_t total = 0; int32_t i,n; char *symbol; cJSON *retjson,*unspents,*spends,*array; //struct basilisk_spend *s; struct basilisk_unspent *bu; int32_t i; struct iguana_waccount *wacct,*tmp; struct iguana_waddress *waddr,*tmp2; if ( vals == 0 ) return(clonestr("{\"error\":\"need vals object\"}")); //if ( coin == 0 ) @@ -932,43 +978,42 @@ HASH_ARRAY_STRING(basilisk,history,hash,vals,hexstr) } if ( coin == 0 ) return(clonestr("{\"error\":\"couldnt find coin\"}")); - //printf("history for (%s)\n",coin->symbol); - basilisk_unspents_update(myinfo,coin); - array = cJSON_CreateArray(); + unspents = cJSON_CreateArray(); + spends = cJSON_CreateArray(); portable_mutex_lock(&myinfo->bu_mutex); - HASH_ITER(hh,myinfo->wallet,wacct,tmp) + //HASH_ITER(hh,myinfo->wallet,wacct,tmp) { - HASH_ITER(hh,wacct->waddr,waddr,tmp2) + //HASH_ITER(hh,wacct->waddr,waddr,tmp2) { - for (i=0; inumunspents; i++) + if ( myinfo->Cunspents != 0 ) { - bu = &waddr->unspents[i]; - if ( strcmp(bu->symbol,coin->symbol) == 0 ) + //printf("Cunspents.(%s)\n",jprint(waddr->Cunspents,0)); + if ( (array= jobj(myinfo->Cunspents,coin->symbol)) != 0 ) { - bitcoin_address(waddr->coinaddr,coin->chain->pubtype,waddr->rmd160,sizeof(waddr->rmd160)); - jaddi(array,basilisk_history_item(coin,&total,waddr->coinaddr,bu->value,bu->timestamp,bu->txid,"vout",bu->vout,bu->height,"spentheight",bu->spentheight,bu->relaymask,-1)); - //printf("%s %s i.%d numunspents.%d\n",coin->symbol,waddr->coinaddr,i,waddr->numunspents); + if ( (n= cJSON_GetArraySize(array)) > 0 ) + { + for (i=0; inumspends > 0 ) - { - //spends = cJSON_CreateArray(); - for (i=0; inumspends; i++) - { - s = &myinfo->spends[i]; - //struct basilisk_spend { bits256 txid; uint64_t relaymask,value; uint32_t timestamp; int32_t vini,height,unspentheight,ismine; char destaddr[64]; }; - if ( strcmp(s->symbol,coin->symbol) == 0 ) - jaddi(array,basilisk_history_item(coin,&totalspent,s->destaddr,s->value,s->timestamp,s->txid,"vin",s->vini,s->height,"unspentheight",s->unspentheight,s->relaymask,s->ismine)); + if ( myinfo->Cspends != 0 ) + { + //printf("Cspends.(%s)\n",jprint(waddr->Cspends,0)); + if ( (array= jobj(myinfo->Cspends,coin->symbol)) != 0 ) + jaddi(spends,jduplicate(array)); + } } } portable_mutex_unlock(&myinfo->bu_mutex); retjson = cJSON_CreateObject(); jaddstr(retjson,"result","success"); - jadd(retjson,"history",array); + jadd(retjson,"unspents",unspents); + jadd(retjson,"spends",spends); jaddstr(retjson,"coin",coin->symbol); jaddnum(retjson,"balance",dstr(total)); + //printf("return history balance %s %.8f\n",coin->symbol,dstr(total)); return(jprint(retjson,1)); } diff --git a/basilisk/basilisk.h b/basilisk/basilisk.h index 3576eee12..b1d85bf11 100755 --- a/basilisk/basilisk.h +++ b/basilisk/basilisk.h @@ -20,7 +20,7 @@ #include "../iguana/iguana777.h" -#define BASILISK_TIMEOUT 30000 +#define BASILISK_TIMEOUT 5000 #define BASILISK_MINFANOUT 8 #define BASILISK_MAXFANOUT 64 #define BASILISK_DEFAULTDIFF 0x1effffff diff --git a/basilisk/basilisk_CMD.c b/basilisk/basilisk_CMD.c index 695ee1c83..2ba7443cc 100755 --- a/basilisk/basilisk_CMD.c +++ b/basilisk/basilisk_CMD.c @@ -236,6 +236,21 @@ char *basilisk_respond_balances(struct supernet_info *myinfo,char *CMD,void *add return(retstr); } +char *basilisk_respond_getinfo(struct supernet_info *myinfo,char *CMD,void *addr,char *remoteaddr,uint32_t basilisktag,cJSON *valsobj,uint8_t *data,int32_t datalen,bits256 hash,int32_t from_basilisk) +{ + char *symbol,*retstr=0; struct basilisk_item Lptr,*ptr; int32_t timeoutmillis; struct iguana_info *coin = 0; + if ( (timeoutmillis= jint(valsobj,"timeout")) <= 0 ) + timeoutmillis = 1000; + if ( (symbol= jstr(valsobj,"coin")) != 0 || (symbol= jstr(valsobj,"symbol")) != 0 ) + coin = iguana_coinfind(symbol); + if ( coin != 0 && (ptr= basilisk_getinfo(&Lptr,myinfo,coin,remoteaddr,basilisktag,timeoutmillis,valsobj)) != 0 ) + { + retstr = ptr->retstr; + ptr->finished = (uint32_t)time(NULL); + } else retstr = clonestr("{\"error\":\"no coin specified or error bitcoinrawtx\"}"); + return(retstr); +} + #include "../includes/iguana_apidefs.h" #include "../includes/iguana_apideclares.h" diff --git a/basilisk/basilisk_MSG.c b/basilisk/basilisk_MSG.c index a5a09769a..4463761ec 100755 --- a/basilisk/basilisk_MSG.c +++ b/basilisk/basilisk_MSG.c @@ -189,7 +189,7 @@ HASH_ARRAY_STRING(basilisk,sendmessage,hash,vals,hexstr) free(retstr); } if ( vals != 0 && juint(vals,"fanout") == 0 ) - jaddnum(vals,"fanout",(int32_t)sqrt(NUMRELAYS)+2); + jaddnum(vals,"fanout",MAX(5,(int32_t)sqrt(NUMRELAYS)+2)); return(basilisk_standardservice("OUT",myinfo,0,hash,vals,hexstr,0)); } #include "../includes/iguana_apiundefs.h" @@ -203,7 +203,7 @@ int32_t basilisk_channelsend(struct supernet_info *myinfo,bits256 hash,uint32_t jaddnum(valsobj,"channel",channel); if ( msgid == 0 ) msgid = (uint32_t)time(NULL); - jaddnum(valsobj,"fanout",(int32_t)sqrt(NUMRELAYS)+2); + jaddnum(valsobj,"fanout",MAX(5,(int32_t)sqrt(NUMRELAYS)+2)); jaddnum(valsobj,"msgid",msgid); jaddnum(valsobj,"duration",duration); jaddbits256(valsobj,"sender",myinfo->myaddr.persistent); @@ -252,8 +252,8 @@ cJSON *basilisk_channelget(struct supernet_info *myinfo,bits256 hash,uint32_t ch jaddnum(valsobj,"msgid",msgid); jaddnum(valsobj,"width",width); jaddnum(valsobj,"timeout",2500); - jaddnum(valsobj,"fanout",(int32_t)sqrt(NUMRELAYS)+1); - jaddnum(valsobj,"minresults",1); + jaddnum(valsobj,"fanout",MAX(5,(int32_t)sqrt(NUMRELAYS)+1)); + jaddnum(valsobj,"numrequired",1); if ( (retstr= basilisk_getmessage(myinfo,0,0,0,hash,valsobj,0)) != 0 ) { //printf("channel.%u msgid.%u gotmessage.(%s)\n",channel,msgid,retstr); diff --git a/basilisk/basilisk_bitcoin.c b/basilisk/basilisk_bitcoin.c index dae74758b..1af51548b 100755 --- a/basilisk/basilisk_bitcoin.c +++ b/basilisk/basilisk_bitcoin.c @@ -299,7 +299,7 @@ int32_t basilisk_bitcoinavail(struct iguana_info *coin) void *basilisk_bitcoinbalances(struct basilisk_item *Lptr,struct supernet_info *myinfo,struct iguana_info *coin,char *remoteaddr,uint32_t basilisktag,int32_t timeoutmillis,cJSON *vals) { - int64_t balance,total = 0; int32_t i,n,hist; cJSON *spends,*unspents,*retjson,*item,*addresses,*array = cJSON_CreateArray(); + int64_t balance,total = 0; int32_t i,j,n,hist; char *str; cJSON *spends,*unspents,*retjson,*item,*addresses,*array = cJSON_CreateArray(); spends = unspents = 0; if ( (hist= juint(vals,"history")) != 0 ) { @@ -313,13 +313,20 @@ void *basilisk_bitcoinbalances(struct basilisk_item *Lptr,struct supernet_info * { for (i=0; iRTheight > 0 ) - balance = iguana_addressreceived(myinfo,coin,vals,remoteaddr,0,0,unspents,spends,jstri(addresses,i),juint(vals,"minconf"),juint(vals,"firstheight")); - //else balance = 0; - item = cJSON_CreateObject(); - jaddnum(item,jstri(addresses,i),dstr(balance)); - jaddi(array,item); - total += balance; + if ( (str= jstri(addresses,i)) != 0 ) + { + for (j=0; jRTheight); jaddnum(retjson,"longest",coin->longestchain); jaddnum(retjson,"lag",coin->longestchain- coin->RTheight); +//printf("BAL.(%s)\n",jprint(retjson,0)); Lptr->retstr = jprint(retjson,1); return(Lptr); } @@ -374,7 +382,7 @@ double basilisk_bitcoin_valuemetric(struct supernet_info *myinfo,struct basilisk void *basilisk_bitcoinvalue(struct basilisk_item *Lptr,struct supernet_info *myinfo,struct iguana_info *coin,char *remoteaddr,uint32_t basilisktag,int32_t timeoutmillis,cJSON *valsobj) { - int32_t i,height,vout,numsent; struct basilisk_item *ptr; char coinaddr[64],str[64]; struct basilisk_value *v; uint64_t value = 0; bits256 txid; + int32_t i,height,vout,numsent; struct basilisk_item *ptr; char coinaddr[64],str[65]; struct basilisk_value *v; uint64_t value = 0; bits256 txid; struct iguana_outpoint outpt; if ( RELAYID >= 0 ) return(0); txid = jbits256(valsobj,"txid"); @@ -383,7 +391,7 @@ void *basilisk_bitcoinvalue(struct basilisk_item *Lptr,struct supernet_info *myi { if ( (coin->VALIDATENODE != 0 || coin->FULLNODE != 0) )//&& coinaddr != 0 && coinaddr[0] != 0 ) { - if ( iguana_RTunspentindfind(myinfo,coin,coinaddr,0,0,&value,&height,txid,vout,coin->bundlescount,0) > 0 ) + if ( iguana_RTunspentindfind(myinfo,coin,&outpt,coinaddr,0,0,&value,&height,txid,vout,coin->bundlescount,0) == 0 ) { //printf("bitcoinvalue found iguana\n"); Lptr->retstr = basilisk_valuestr(coin,coinaddr,value,height,txid,vout); @@ -401,18 +409,40 @@ void *basilisk_bitcoinvalue(struct basilisk_item *Lptr,struct supernet_info *myi if ( v->vout == vout && bits256_cmp(txid,v->txid) == 0 && strcmp(v->coinaddr,coinaddr) == 0 ) { printf("bitcoinvalue local ht.%d %s %.8f\n",v->height,v->coinaddr,dstr(v->value)); - ptr = basilisk_issueremote(myinfo,0,&numsent,"VAL",coin->symbol,1,valsobj,juint(valsobj,"fanout"),juint(valsobj,"minresults"),basilisktag,timeoutmillis,0,basilisk_valuestr(coin,v->coinaddr,v->value,v->height,txid,vout),0,0,BASILISK_DEFAULTDIFF); // this completes immediate + ptr = basilisk_issueremote(myinfo,0,&numsent,"VAL",coin->symbol,1,valsobj,juint(valsobj,"fanout"),juint(valsobj,"numrequired"),basilisktag,timeoutmillis,0,basilisk_valuestr(coin,v->coinaddr,v->value,v->height,txid,vout),0,0,BASILISK_DEFAULTDIFF); // this completes immediate //queue_enqueue("submitQ",&myinfo->basilisks.submitQ,&ptr->DL,0); return(ptr); } } } printf("bitcoinvalue issue remote tag.%u\n",basilisktag); - ptr = basilisk_issueremote(myinfo,0,&numsent,"VAL",coin->symbol,1,valsobj,juint(valsobj,"fanout"),juint(valsobj,"minresults"),basilisktag,timeoutmillis,0,0,0,0,BASILISK_DEFAULTDIFF); + ptr = basilisk_issueremote(myinfo,0,&numsent,"VAL",coin->symbol,1,valsobj,juint(valsobj,"fanout"),juint(valsobj,"numrequired"),basilisktag,timeoutmillis,0,0,0,0,BASILISK_DEFAULTDIFF); //queue_enqueue("submitQ",&myinfo->basilisks.submitQ,&ptr->DL,0); return(ptr); } +void *basilisk_getinfo(struct basilisk_item *Lptr,struct supernet_info *myinfo,struct iguana_info *coin,char *remoteaddr,uint32_t basilisktag,int32_t timeoutmillis,cJSON *valsobj) +{ + struct basilisk_item *ptr; cJSON *infojson; int32_t numsent,fanout,numrequired; + if ( RELAYID >= 0 ) + return(0); + if ( coin->VALIDATENODE != 0 || coin->FULLNODE != 0 ) + { + infojson = iguana_getinfo(myinfo,coin); + Lptr->retstr = jprint(infojson,1); + return(Lptr); + } + if ( (fanout= juint(valsobj,"fanout")) < 5 ) + fanout = 5; + if ( (numrequired= juint(valsobj,"numrequired")) < fanout ) + { + jaddnum(valsobj,"numrequired",fanout); + numrequired = fanout; + } + ptr = basilisk_issueremote(myinfo,0,&numsent,"INF",coin->symbol,1,valsobj,fanout,numrequired,basilisktag,timeoutmillis,0,0,0,0,BASILISK_DEFAULTDIFF); + return(ptr); +} + int32_t basilisk_voutvin_validate(struct iguana_info *coin,char *rawtx,uint64_t inputsum,uint64_t amount,uint64_t txfee) { //static int counter; @@ -505,10 +535,10 @@ char *basilisk_bitcoinrawtx(struct supernet_info *myinfo,struct iguana_info *coi jadd(valsobj,"addresses",addresses); } //printf("use addresses.(%s)\n",jprint(addresses,0)); - //printf("(%s) vals.(%s) change.(%s) spend.%s\n",coin->symbol,jprint(valsobj,0),changeaddr,spendscriptstr); + printf("(%s) vals.(%s) change.(%s) spend.%s\n",coin->symbol,jprint(valsobj,0),changeaddr,spendscriptstr); if ( changeaddr == 0 || changeaddr[0] == 0 || spendscriptstr == 0 || spendscriptstr[0] == 0 ) return(clonestr("{\"error\":\"invalid changeaddr or spendscript or addresses\"}")); - if ( coin != 0 )//&& basilisk_bitcoinavail(coin) != 0 ) + if ( coin != 0 ) { if ( (txobj= bitcoin_txcreate(coin->chain->isPoS,locktime,locktime==0?coin->chain->normal_txversion:coin->chain->locktime_txversion)) != 0 ) { @@ -524,7 +554,10 @@ char *basilisk_bitcoinrawtx(struct supernet_info *myinfo,struct iguana_info *coi decode_hex(&buf[sizeof(buf) - oplen],oplen,opreturn); spendlen = datachain_datascript(coin,buf,&buf[sizeof(buf) - oplen],oplen); if ( (burnamount= SATOSHIDEN * jdouble(valsobj,"burn")) < 10000 ) - burnamount = 10000; + { + //burnamount = 10000; + printf("low burnamount %.8f\n",dstr(burnamount)); + } bitcoin_txoutput(txobj,buf,spendlen,burnamount); oplen = 0; } else oplen = datachain_opreturnscript(coin,buf,opreturn,oplen); @@ -552,7 +585,6 @@ char *basilisk_bitcoinrawtx(struct supernet_info *myinfo,struct iguana_info *coi return(clonestr("{\"error\":\"couldnt create rawtx\"}")); } return(clonestr("{\"error\":\"dont have coin to create rawtx\"}")); - //return(basilisk_issueremote(myinfo,0,&numsent,"RAW",coin->symbol,1,valsobj,juint(valsobj,"fanout"),juint(valsobj,"minresults"),basilisktag,timeoutmillis,0,0,0,0,BASILISK_DEFAULTDIFF)); } /* @@ -791,7 +823,7 @@ HASH_ARRAY_STRING(basilisk,value,hash,vals,hexstr) coin = iguana_coinfind(symbol); } if ( jobj(vals,"fanout") == 0 ) - jaddnum(vals,"fanout",(int32_t)sqrt(NUMRELAYS)+1); + jaddnum(vals,"fanout",MAX(5,(int32_t)sqrt(NUMRELAYS)+1)); if ( coin != 0 ) { if ( (basilisktag= juint(vals,"basilisktag")) == 0 ) @@ -808,99 +840,66 @@ HASH_ARRAY_STRING(basilisk,value,hash,vals,hexstr) return(basilisk_standardservice("VAL",myinfo,0,hash,vals,hexstr,1)); } -/*HASH_ARRAY_STRING(basilisk,rawtx,hash,vals,hexstr) +HASH_ARRAY_STRING(basilisk,rawtx,hash,vals,hexstr) { - char *retstr=0,*symbol; uint32_t basilisktag; struct basilisk_item *ptr,Lptr; int32_t timeoutmillis,i,retval = -1; uint64_t amount,txfee; cJSON *retarray; + char *retstr=0,*symbol; uint32_t basilisktag; int32_t timeoutmillis,i,retval = -1; uint64_t amount,txfee; cJSON *retarray; //if ( coin == 0 ) { if ( (symbol= jstr(vals,"symbol")) != 0 || (symbol= jstr(vals,"coin")) != 0 ) coin = iguana_coinfind(symbol); } if ( jobj(vals,"numrequired") == 0 ) - jaddnum(vals,"numrequired",myinfo->numrelays); + jaddnum(vals,"numrequired",NUMRELAYS); if ( jobj(vals,"fanout") == 0 ) - jaddnum(vals,"fanout",(int32_t)sqrt(myinfo->numrelays)); + jaddnum(vals,"fanout",MAX(5,(int32_t)sqrt(NUMRELAYS)+1)); if ( coin != 0 ) { - if ( juint(vals,"burn") == 0 ) - jaddnum(vals,"burn",0.0001); + //if ( juint(vals,"burn") == 0 ) + // jaddnum(vals,"burn",0.0001); if ( (basilisktag= juint(vals,"basilisktag")) == 0 ) basilisktag = rand(); if ( (timeoutmillis= juint(vals,"timeout")) <= 0 ) timeoutmillis = BASILISK_TIMEOUT; - if ( (ptr= basilisk_bitcoinrawtx(&Lptr,myinfo,coin,remoteaddr,basilisktag,timeoutmillis,vals)) != 0 ) + if ( (retstr= basilisk_bitcoinrawtx(myinfo,coin,remoteaddr,basilisktag,timeoutmillis,vals)) != 0 ) { - if ( (retstr= ptr->retstr) != 0 ) + printf("rawtx.(%s)\n",retstr); + if ( (amount= j64bits(vals,"satoshis")) == 0 ) + amount = jdouble(vals,"value") * SATOSHIDEN; + if ( (txfee= j64bits(vals,"txfee")) == 0 ) + txfee = coin->chain->txfee; + if ( txfee == 0 ) + txfee = 10000; + retval = -1; + if ( (retarray= cJSON_Parse(retstr)) != 0 ) { - if ( (amount= j64bits(vals,"satoshis")) == 0 ) - amount = jdouble(vals,"value") * SATOSHIDEN; - if ( (txfee= j64bits(vals,"txfee")) == 0 ) - txfee = coin->chain->txfee; - if ( txfee == 0 ) - txfee = 10000; - retval = -1; - if ( (retarray= cJSON_Parse(retstr)) != 0 ) + if ( is_cJSON_Array(retarray) != 0 ) { - if ( is_cJSON_Array(retarray) != 0 ) + for (i=0; iretstr = 0; - ptr->finished = (uint32_t)time(NULL); } } - } + } else retstr = clonestr("{\"error\":\"no coin specified or found\"}"); return(retstr); -}*/ - -cJSON *basilisk_history_item(struct iguana_info *coin,int64_t *totalp,char *coinaddr,int64_t value,uint32_t timestamp,bits256 txid,char *vinvoutstr,int32_t vinvout,int32_t height,char *otherheightstr,int32_t otherheight,uint64_t relaymask,int32_t ismine) -{ - cJSON *item,*details; - item = cJSON_CreateObject(); - jaddstr(item,"address",coinaddr); - jaddnum(item,"amount",dstr(value)); - jaddnum(item,"numseconds",time(NULL) - timestamp); - details = cJSON_CreateObject(); - if ( ismine > 0 ) - { - jaddnum(details,"ismine",ismine); - if ( strcmp(vinvoutstr,"spentheight") == 0 ) - jaddstr(details,"category","sent"); - else jaddstr(details,"category","received"); - } - jaddbits256(details,"txid",txid); - jaddnum(details,vinvoutstr,vinvout); - jaddnum(details,"height",height); - if ( coin->blocks.hwmchain.height > 0 ) - jaddnum(details,"confirms",coin->blocks.hwmchain.height - height); - jaddnum(details,"height",height); - if ( otherheight != 0 ) - jaddnum(details,otherheightstr,otherheight); - else *totalp += value; - jaddnum(details,"relays",bitweight(relaymask)); - jadd(item,"details",details); - return(item); } #include "../includes/iguana_apiundefs.h" int32_t basilisk_unspentfind(struct supernet_info *myinfo,struct iguana_info *coin,bits256 *txidp,int32_t *voutp,uint8_t *spendscript,struct iguana_outpoint outpt,int64_t value) { - struct basilisk_unspent *bu; int32_t i,spendlen; struct iguana_waccount *wacct,*tmp; struct iguana_waddress *waddr,*tmp2; char str[65]; + struct iguana_waccount *wacct,*tmp; struct iguana_waddress *waddr,*tmp2; memset(txidp,0,sizeof(*txidp)); *voutp = -1; portable_mutex_lock(&myinfo->bu_mutex); @@ -908,221 +907,109 @@ int32_t basilisk_unspentfind(struct supernet_info *myinfo,struct iguana_info *co { HASH_ITER(hh,wacct->waddr,waddr,tmp2) { - for (i=0; inumunspents; i++) - { - bu = &waddr->unspents[i]; - if ( bu->hdrsi == outpt.hdrsi && bu->unspentind == outpt.unspentind && bu->value == value ) - { - if ( bu->status == 0 ) - { - *txidp = bu->txid; - *voutp = bu->vout; - memcpy(spendscript,bu->script,bu->spendlen); - spendlen = bu->spendlen; - portable_mutex_unlock(&myinfo->bu_mutex); - return(spendlen); - } else printf("unspentfind skip %s/v%d\n",bits256_str(str,bu->txid),bu->vout); - } - } + printf("need to port basilisk_unspentfind\n"); } } portable_mutex_unlock(&myinfo->bu_mutex); return(-1); } -struct basilisk_spend *basilisk_addspend(struct supernet_info *myinfo,char *symbol,bits256 txid,uint16_t vout,int32_t addflag) +cJSON *basilisk_jsonmerge(char *symbol,cJSON *array) { - int32_t i=0; struct basilisk_spend *s; - // mutex - if ( myinfo->numspends > 0 ) + int32_t i,j,n,m; cJSON *jobj,*iobj,*dest = cJSON_CreateArray(); + if ( dest != 0 && (n= cJSON_GetArraySize(array)) > 0 ) { - for (i=0; inumspends; i++) + for (i=0; ispends[i].vout == vout && bits256_cmp(txid,myinfo->spends[i].txid) == 0 ) + m = cJSON_GetArraySize(dest); + iobj = jitem(array,i); + for (j=0; jspends[i]); + jobj = jitem(dest,j); + if ( bits256_cmp(jbits256(jobj,"txid"),jbits256(iobj,"txid")) == 0 && jint(jobj,"vout") == jint(iobj,"vout") ) + { + //printf("(%s) == (%s)\n",jprint(iobj,0),jprint(jobj,0)); + break; + } } + if ( j == m ) + { + jaddi(dest,jduplicate(iobj)); + //printf("add.(%s) ",jprint(iobj,0)); + } //else printf("j.%d != m.%d\n",j,m); } } - if ( addflag != 0 && i == myinfo->numspends ) - { - //printf("realloc spends.[%d] %p\n",myinfo->numspends,myinfo->spends); - myinfo->spends = realloc(myinfo->spends,sizeof(*myinfo->spends) * (myinfo->numspends+1)); - //printf("allocated spends.[%d] %p\n",myinfo->numspends+1,myinfo->spends); - s = &myinfo->spends[myinfo->numspends++]; - memset(s,0,sizeof(*s)); - s->txid = txid; - s->vout = vout; - strcpy(s->symbol,symbol); - //char str[65]; printf("ADDSPEND.%s %s/v%d\n",symbol,bits256_str(str,txid),vout); - // mutex - return(s); - } - // mutex - return(0); + return(dest); } -void basilisk_unspent_update(struct supernet_info *myinfo,struct iguana_info *coin,cJSON *item,int32_t spentheight,int32_t relayid,int32_t RTheight) +void basilisk_unspent_update(struct supernet_info *myinfo,struct iguana_info *coin,cJSON *json) { - //{"txid":"4814dc8a357f93f16271eb43806a69416ec41ab1956b128d170402b0a1b37c7f","vout":2,"address":"RSyKVKNxrSDc1Vwvh4guYb9ZDEpvMFz2rm","scriptPubKey":"76a914c210f6711e98fe9971757ede2b2dcb0507f3f25e88ac","amount":9.99920000,"timestamp":1466684518,"height":1160306,"confirmations":22528,"checkind":1157,"spent":{"hdrsi":2320,"pkind":168,"unspentind":1157,"prevunspentind":0,"satoshis":"999920000","txidind":619,"vout":2,"type":2,"fileid":0,"scriptpos":0,"scriptlen":25},"spentheight":1161800,"dest":{"error":"couldnt find spent info"}} - int32_t i,n,j,m,already_spent=0; struct basilisk_unspent bu,bu2; char *address,*script=0,*destaddr; struct iguana_waccount *wacct; struct iguana_waddress *waddr=0; cJSON *dest,*vouts,*vitem; double ratio; - if ( (address= jstr(item,"address")) != 0 && (script= jstr(item,"scriptPubKey")) != 0 && (waddr= iguana_waddresssearch(myinfo,&wacct,address)) != 0 ) + cJSON *unspents,*spends,*item; int32_t n; char *address; //struct iguana_waccount *wacct; struct iguana_waddress *waddr=0; + if ( (spends= jarray(&n,json,"spends")) != 0 && n > 0 ) { - if ( relayid >= 64 ) - relayid = 0; - memset(&bu,0,sizeof(bu)); - bu.spendlen = (int32_t)strlen(script) >> 1; - if ( bu.spendlen > sizeof(bu.script) ) + item = jitem(spends,0); + if ( (address= jstr(item,"address")) != 0 )//&& (waddr= iguana_waddresssearch(myinfo,&wacct,address)) != 0 ) { - printf("spendscript too big.%d\n",bu.spendlen); - return; + if ( myinfo->Cspends == 0 ) + myinfo->Cspends = cJSON_CreateObject(); + if ( jobj(myinfo->Cspends,coin->symbol) != 0 ) + jdelete(myinfo->Cspends,coin->symbol); + jadd(myinfo->Cspends,coin->symbol,basilisk_jsonmerge(coin->symbol,spends)); + //printf("S.(%s)\n",jprint(waddr->Cspends,0)); } - strcpy(bu.symbol,coin->symbol); - bu.txid = jbits256(item,"txid"); - bu.vout = jint(item,"vout"); - bu.value = jdouble(item,"amount") * SATOSHIDEN; - bu.height = jint(item,"height"); - bu.hdrsi = (bu.height / coin->chain->bundlesize); - bu.unspentind = juint(item,"checkind"); - bu.timestamp = juint(item,"timestamp"); - decode_hex(bu.script,bu.spendlen,script); - //printf("unspentupdate.(%s)\n",jprint(item,0)); - n = waddr->numunspents; - for (i=0; iunspents[i]; - bu2.status = 0; - bu2.RTheight = bu2.spentheight = 0; - bu2.relaymask = 0; - if ( memcmp(&bu,&bu2,sizeof(bu)) == 0 ) - { - if ( waddr->unspents[i].RTheight > RTheight ) - RTheight = waddr->unspents[i].RTheight; - already_spent = waddr->unspents[i].spentheight; - bu.relaymask = waddr->unspents[i].relaymask; - if ( (bu.status= waddr->unspents[i].status) != 0 ) - { - //printf("mempool spend for %s/%d\n",bits256_str(str,bu.txid),bu.vout); - } - break; - } - } - bu.RTheight = RTheight; - bu.relaymask |= ((uint64_t)1 << relayid); - //printf("relayid.%d -> %llx wt.%d\n",relayid,(long long)bu.relaymask,bitweight(bu.relaymask)); - if ( spentheight != 0 ) - already_spent = spentheight; - if ( (bu.spentheight= already_spent) != 0 ) - bu.status = 1; - if ( i == n ) + //printf("merge spends.(%s)\n",jprint(spends,0)); + } + if ( (unspents= jarray(&n,json,"unspents")) != 0 && n > 0 ) + { + item = jitem(unspents,0); + if ( (address= jstr(item,"address")) != 0 )//&& (waddr= iguana_waddresssearch(myinfo,&wacct,address)) != 0 ) { - if ( i >= waddr->maxunspents ) - { - waddr->maxunspents += 16; - waddr->unspents = realloc(waddr->unspents,sizeof(*waddr->unspents) * waddr->maxunspents); - //printf("allocate max.%d for %s\n",waddr->maxunspents,waddr->coinaddr); - } - waddr->numunspents++; - //printf("new unspent.%s %d script.%p [%d] (%s)\n",waddr->coinaddr,waddr->numunspents,bu.script,bu.spendlen,jprint(item,0)); - if ( bu.spentheight != 0 && (dest= jobj(item,"dest")) != 0 ) - { - struct basilisk_spend *s; - //{"txid":"cd4fb72f871d481c534f15d7f639883958936d49e965f58276f0925798e762df","vin":1,"height":,"unspentheight":,"relays":2}}, - if ( (s= basilisk_addspend(myinfo,coin->symbol,bu.txid,bu.vout,1)) != 0 ) - { - s->spentfrom = jbits256(dest,"spentfrom"); - s->vini = jint(dest,"vin"); - s->height = bu.spentheight; - s->timestamp = juint(dest,"timestamp"); - s->unspentheight = bu.height; - s->relaymask = bu.relaymask; - ratio = jdouble(dest,"ratio"); - if ( (vouts= jobj(dest,"vouts")) != 0 && (m= cJSON_GetArraySize(vouts)) > 0 ) - { - for (j=0; jdestaddr,destaddr,sizeof(s->destaddr)); - s->ismine = (iguana_waddresssearch(myinfo,&wacct,destaddr) != 0); - s->value = jdouble(vitem,jfieldname(vitem)) * SATOSHIDEN; - //printf("(%s %.8f) ",s->destaddr,dstr(s->value)); - } - } - //char str[65]; printf("SPEND dest.(%s) ratio %.8f (%s/v%d)\n",jprint(dest,0),ratio,bits256_str(str,s->txid),s->vini); - } - } - } - waddr->unspents[i] = bu; + if ( myinfo->Cunspents == 0 ) + myinfo->Cunspents = cJSON_CreateObject(); + if ( jobj(myinfo->Cunspents,coin->symbol) != 0 ) + jdelete(myinfo->Cunspents,coin->symbol); + jadd(myinfo->Cunspents,coin->symbol,basilisk_jsonmerge(coin->symbol,unspents)); + //printf("U.(%s)\n",jprint(myinfo->Cunspents,0)); } - } else printf("waddr.%p script.%p address.%p %s\n",waddr,script,address,address!=0?address:""); + //printf("merge unspents.(%s)\n",jprint(unspents,0)); + } } -void basilisk_relay_unspentsprocess(struct supernet_info *myinfo,struct iguana_info *coin,cJSON *relayjson) +void basilisk_unspents_process(struct supernet_info *myinfo,struct iguana_info *coin,char *retstr) { - int32_t RTheight,relayid,num,j; cJSON *unspents,*spends; - RTheight = jint(relayjson,"RTheight"); - if ( (relayid= basilisk_relayid(myinfo,(uint32_t)calc_ipbits(jstr(relayjson,"relay")))) < BASILISK_MAXRELAYS ) - { - coin->relay_RTheights[relayid] = RTheight; - } - //printf("basilisk_relay_unspentsprocess relayid.%d RT.%d (%s)\n",relayid,RTheight,jprint(relayjson,0)); - if ( (unspents= jarray(&num,relayjson,"unspents")) != 0 ) - { - for (j=0; jbu_mutex); + if ( myinfo->Cspends != 0 ) + free_json(myinfo->Cspends), myinfo->Cspends = 0; + if ( myinfo->Cunspents != 0 ) + free_json(myinfo->Cunspents), myinfo->Cunspents = 0; + if ( (retarray= cJSON_Parse(retstr)) != 0 ) { - for (j=0; jbu_mutex); } void basilisk_unspents_update(struct supernet_info *myinfo,struct iguana_info *coin) { - char *retstr; cJSON *retarray,*vals; int32_t oldest,i,n,RTheight; - //if ( coin->FULLNODE == 0 && coin->VALIDATENODE == 0 ) - { - vals = cJSON_CreateObject(); - for (i=oldest=0; irelay_RTheights[i]) != 0 && (oldest == 0 || RTheight < oldest) ) - oldest = RTheight; - jaddnum(vals,"firstheight",oldest); - jaddnum(vals,"history",3); - jaddstr(vals,"coin",coin->symbol); - if ( (retstr= basilisk_balances(myinfo,coin,0,0,GENESIS_PUBKEY,vals,"")) != 0 ) - { - portable_mutex_lock(&myinfo->bu_mutex); - if ( (retarray= cJSON_Parse(retstr)) != 0 ) - { - //printf("%s UNSPENTS_UPDATE.(%s)\n",coin->symbol,retstr); - if ( jobj(retarray,"error") == 0 ) - { - if ( (jstr(retarray,"ipaddr") == 0 || strcmp(jstr(retarray,"ipaddr"),myinfo->ipaddr) != 0) && (n= cJSON_GetArraySize(retarray)) > 0 ) - { - for (i=0; ibu_mutex); - } - free_json(vals); - } + char *retstr; cJSON *vals; int32_t oldest,i,RTheight; + vals = cJSON_CreateObject(); + for (i=oldest=0; irelay_RTheights[i]) != 0 && (oldest == 0 || RTheight < oldest) ) + oldest = RTheight; + jaddnum(vals,"firstheight",oldest); + jaddnum(vals,"history",3); + jaddstr(vals,"coin",coin->symbol); + if ( (retstr= basilisk_balances(myinfo,coin,0,0,GENESIS_PUBKEY,vals,"")) != 0 ) + { + basilisk_unspents_process(myinfo,coin,retstr); + free(retstr); + } + free_json(vals); } diff --git a/basilisk/basilisk_ping.c b/basilisk/basilisk_ping.c index 404bb7095..9ec8f0e2d 100755 --- a/basilisk/basilisk_ping.c +++ b/basilisk/basilisk_ping.c @@ -231,6 +231,7 @@ void basilisk_ping_process(struct supernet_info *myinfo,struct iguana_peer *addr //len += basilisk_ping_processvirts(myinfo,btcd,addr,&data[len],datalen - len); for (i=0; i datalen ) break; if ( (n= basilisk_ping_processrelay(myinfo,&data[len],datalen-len,rp,i)) < 0 ) diff --git a/basilisk/basilisk_swap.c b/basilisk/basilisk_swap.c index 625e9d4f0..c4089cafa 100755 --- a/basilisk/basilisk_swap.c +++ b/basilisk/basilisk_swap.c @@ -576,11 +576,11 @@ int32_t basilisk_rawtx_return(struct supernet_info *myinfo,int32_t height,struct item = jitem(vins,i); txid = jbits256(item,"txid"); vout = jint(item,"vout"); - if ( bits256_nonz(txid) != 0 ) + /*if ( bits256_nonz(txid) != 0 ) { char str[65]; printf("call addspend.(%s) v.%d\n",bits256_str(str,txid),vout); basilisk_addspend(myinfo,rawtx->coin->symbol,txid,vout,1); - } + }*/ } } } diff --git a/basilisk/basilisk_tradebot.c b/basilisk/basilisk_tradebot.c index 502912140..ae99b441b 100755 --- a/basilisk/basilisk_tradebot.c +++ b/basilisk/basilisk_tradebot.c @@ -229,6 +229,7 @@ double basilisk_request_listprocess(struct supernet_info *myinfo,struct basilisk double basilisk_process_results(struct supernet_info *myinfo,struct basilisk_request *issueR,cJSON *retjson,double hwm) { cJSON *array,*item; int32_t i,n,m,nonz; struct basilisk_request tmpR,R,refR,list[BASILISK_MAXRELAYS]; double metric=0.; + memset(&refR,0,sizeof(refR)); if ( (array= jarray(&n,retjson,"result")) != 0 ) { for (i=nonz=m=0; i hwm ) - *issueR = tmpR, hwm = metric; + { + *issueR = tmpR; + hwm = metric; + refR = tmpR; + } m = 0; } } diff --git a/crypto777/OS_nonportable.c b/crypto777/OS_nonportable.c index 7d148ff76..24ca8de0d 100755 --- a/crypto777/OS_nonportable.c +++ b/crypto777/OS_nonportable.c @@ -47,6 +47,85 @@ void *OS_nonportable_tmpalloc(char *dirname,char *name,struct OS_memspace *mem,l #include #include +#include +static uint32_t __inline __builtin_clzll(uint64_t x) { + unsigned long r = 0; + _BitScanReverse64(&r, x); + return (63-r); +} + +void usleep(int32_t micros) +{ + if ( micros < 1000 ) + Sleep(1); + else Sleep(micros / 1000); +} + +int +mkstemp (template) +char *template; +{ + static const char letters[] + = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"; + static uint64_t value; +#ifdef HAVE_GETTIMEOFDAY + struct timeval tv; +#endif + char *XXXXXX; + size_t len; + int count; + + len = strlen (template); + + if ((int) len < 6 + || strncmp (&template[len - 6], "XXXXXX", 6)) + { + return -1; + } + + XXXXXX = &template[len - 6]; + +#ifdef HAVE_GETTIMEOFDAY + /* Get some more or less random data. */ + gettimeofday (&tv, NULL); + value += ((uint64_t) tv.tv_usec << 16) ^ tv.tv_sec ^ getpid (); +#else + value += getpid (); +#endif + + for (count = 0; count < TMP_MAX; ++count) + { + uint64_t v = value; + int fd; + + /* Fill in the random bits. */ + XXXXXX[0] = letters[v % 62]; + v /= 62; + XXXXXX[1] = letters[v % 62]; + v /= 62; + XXXXXX[2] = letters[v % 62]; + v /= 62; + XXXXXX[3] = letters[v % 62]; + v /= 62; + XXXXXX[4] = letters[v % 62]; + v /= 62; + XXXXXX[5] = letters[v % 62]; + + fd = open (template, O_RDWR|O_CREAT|O_EXCL|O_BINARY, 0600); + if (fd >= 0) + /* The file does not exist. */ + return fd; + + /* This is a random value. It is only necessary that the next + TMP_MAX values generated by adding 7777 to VALUE are different + with (module 2^32). */ + value += 7777; + } + + /* We return the null string if we can't find a unique file name. */ + template[0] = '\0'; + return -1; +} #include "../OSlibs/win/mman.h" @@ -496,10 +575,10 @@ char *OS_nonportable_path(char *str) return(str); } -void *OS_nonportable_mapfile(char *fname,uint64_t *filesizep,int32_t enablewrite) +void *OS_nonportable_mapfile(char *fname,long *filesizep,int32_t enablewrite) { int32_t fd,rwflags,flags = MAP_FILE|MAP_SHARED; - uint64_t filesize; + long filesize; void *ptr = 0; *filesizep = 0; if ( enablewrite != 0 ) @@ -511,7 +590,7 @@ void *OS_nonportable_mapfile(char *fname,uint64_t *filesizep,int32_t enablewrite return(0); } if ( *filesizep == 0 ) - filesize = (uint64_t)lseek(fd,0,SEEK_END); + filesize = (long)lseek(fd,0,SEEK_END); else filesize = *filesizep; rwflags = PROT_READ; if ( enablewrite != 0 ) @@ -528,15 +607,23 @@ void *OS_nonportable_mapfile(char *fname,uint64_t *filesizep,int32_t enablewrite return(ptr); } -int32_t OS_nonportable_renamefile(char *fname,char *newfname) +int32_t OS_nonportable_removefile(char *fname) { - char cmdstr[1024],tmp[512]; + char tmp[512]; strcpy(tmp,fname); - OS_nonportable_path(tmp); - sprintf(cmdstr,"del %s",tmp); - if ( system(cmdstr) != 0 ) - printf("error deleting file.(%s)\n",cmdstr); - else return(1); + OS_portable_path(tmp); + return((DeleteFileA(tmp) == 0) ? -1 : 0); +} + +int32_t OS_nonportable_renamefile(char *fname,char *newfname) +{ + char tmp[1024],tmp2[1024]; int32_t retval,retvaldel; + strcpy(tmp,fname), strcpy(tmp2,newfname); + OS_nonportable_path(tmp), OS_nonportable_path(tmp2); + retvaldel = OS_nonportable_removefile(tmp2); + retval = MoveFileA(tmp,tmp2); + //printf("call Movefile(%s -> %s) retval.%d retvaldel.%d %d\n",tmp,tmp2,retval,retvaldel,GetLastError()); + return((retval == 0) ? -1 : 0); } int32_t OS_nonportable_launch(char *args[]) diff --git a/crypto777/OS_portable.c b/crypto777/OS_portable.c index d59c1b1e9..ff16d4a65 100755 --- a/crypto777/OS_portable.c +++ b/crypto777/OS_portable.c @@ -30,7 +30,7 @@ void OS_portable_init() void OS_portable_randombytes(unsigned char *x,long xlen) { #ifdef _WIN32 - return(OS_nonportable_randombytes(x,xlen)); + OS_nonportable_randombytes(x,xlen); #else static int fd = -1; int32_t i; @@ -97,13 +97,7 @@ char *OS_portable_path(char *str) int32_t OS_portable_renamefile(char *fname,char *newfname) { #ifdef _WIN32 - char cmdstr[1024],tmp[512]; - strcpy(tmp,fname); - OS_portable_path(tmp); - sprintf(cmdstr,"del %s",tmp); - if ( system(cmdstr) != 0 ) - printf("error deleting file.(%s)\n",cmdstr); - else return(1); + return(OS_nonportable_renamefile(fname,newfname)); #else return(rename(fname,newfname)); #endif @@ -112,13 +106,7 @@ int32_t OS_portable_renamefile(char *fname,char *newfname) int32_t OS_portable_removefile(char *fname) { #ifdef _WIN32 - char cmdstr[1024],tmp[512]; - strcpy(tmp,fname); - OS_portable_path(tmp); - sprintf(cmdstr,"del %s",tmp); - if ( system(cmdstr) != 0 ) - printf("error deleting file.(%s)\n",cmdstr); - else return(1); + return(OS_nonportable_removefile(fname)); #else return(remove(fname)); #endif @@ -131,7 +119,7 @@ int32_t OS_portable_rmdir(char *dirname,int32_t diralso) strcpy(tmp,dirname); OS_portable_path(tmp); #ifdef _WIN32 - sprintf(cmdstr,"del %s\*.*",tmp); + sprintf(cmdstr,"rmdir %s",tmp); if ( system(cmdstr) != 0 ) printf("error deleting dir.(%s)\n",cmdstr); else return(1); @@ -169,7 +157,7 @@ void *OS_portable_mapfile(char *fname,long *filesizep,int32_t enablewrite) return(OS_nonportable_mapfile(fname,filesizep,enablewrite)); #else int32_t fd,rwflags,flags = MAP_FILE|MAP_SHARED; - uint64_t filesize; + long filesize; void *ptr = 0; *filesizep = 0; if ( enablewrite != 0 ) @@ -181,7 +169,7 @@ void *OS_portable_mapfile(char *fname,long *filesizep,int32_t enablewrite) return(0); } if ( *filesizep == 0 ) - filesize = (uint64_t)lseek(fd,0,SEEK_END); + filesize = (long)lseek(fd,0,SEEK_END); else filesize = *filesizep; rwflags = PROT_READ; if ( enablewrite != 0 ) diff --git a/crypto777/OS_portable.h b/crypto777/OS_portable.h index d1b6e579e..ccdc774d3 100755 --- a/crypto777/OS_portable.h +++ b/crypto777/OS_portable.h @@ -17,11 +17,18 @@ // iguana_OS has functions that invoke system calls. Whenever possible stdio and similar functions are use and most functions are fully portable and in this file. For things that require OS specific, the call is routed to iguana_OS_portable_* Usually, all but one OS can be handled with the same code, so iguana_OS_portable.c has most of this shared logic and an #ifdef iguana_OS_nonportable.c + +#ifdef NATIVE_WINDOWS +//#define uint64_t unsigned __int64 +#define PACKED +#else +#define PACKED __attribute__((packed)) +#endif + #include #include #include #define HAVE_STRUCT_TIMESPEC -#include #include #include #include @@ -30,28 +37,29 @@ #include #include -#ifdef __MINGW +#ifdef WIN32 #define sleep(x) Sleep(1000*(x)) #include "../OSlibs/win/mingw.h" #include "../OSlibs/win/mman.h" #include "../OSlibs/win/pthread.h" +#ifndef NATIVE_WINDOWS #define EADDRINUSE WSAEADDRINUSE +#endif #else -//#include +#include #include #include #include #define HAVE_STRUCT_TIMESPEC #include -//#include -//#include "in.h" #include #include -//#include +#include #define closesocket close #endif + #ifndef MIN #define MIN(x, y) ( ((x)<(y))?(x):(y) ) #endif @@ -119,8 +127,8 @@ int32_t hseek(HUFF *hp,int32_t offset,int32_t mode); #define issue_curl(cmdstr) bitcoind_RPC(0,"curl",cmdstr,0,0,0) -struct allocitem { uint32_t allocsize,type; } __attribute__((packed)); -struct queueitem { struct queueitem *next,*prev; uint32_t allocsize,type; } __attribute__((packed)); +struct allocitem { uint32_t allocsize,type; } PACKED; +struct queueitem { struct queueitem *next,*prev; uint32_t allocsize,type; } PACKED; typedef struct queue { struct queueitem *list; @@ -192,8 +200,8 @@ void OS_remove_directory(char *dirname); int32_t OS_portable_renamefile(char *fname,char *newfname); int32_t OS_portable_removefile(char *fname); void *OS_portable_mapfile(char *fname,long *filesizep,int32_t enablewrite); -int32_t OS_portable_syncmap(struct OS_mappedptr *mp,long len); -void *OS_portable_tmpalloc(char *dirname,char *name,struct OS_memspace *mem,long origsize); +//int32_t OS_portable_syncmap(struct OS_mappedptr *mp,long len); +//void *OS_portable_tmpalloc(char *dirname,char *name,struct OS_memspace *mem,long origsize); int32_t is_DST(int32_t datenum); int32_t extract_datenum(int32_t *yearp,int32_t *monthp,int32_t *dayp,int32_t datenum); @@ -203,31 +211,36 @@ int32_t ecb_decrdate(int32_t *yearp,int32_t *monthp,int32_t *dayp,char *date,int int32_t conv_date(int32_t *secondsp,char *buf); uint32_t OS_conv_datenum(int32_t datenum,int32_t hour,int32_t minute,int32_t second); int32_t OS_conv_unixtime(struct tai *t,int32_t *secondsp,time_t timestamp); -double OS_milliseconds(); - -void OS_randombytes(uint8_t *x,long xlen); -int32_t OS_truncate(char *fname,long filesize); char *OS_compatible_path(char *str); -int32_t OS_renamefile(char *fname,char *newfname); -int32_t OS_removefile(char *fname,int32_t scrubflag); -void OS_ensure_directory(char *dirname); -int64_t OS_filesize(char *fname); + int32_t OS_compare_files(char *fname,char *fname2); int64_t OS_copyfile(char *src,char *dest,int32_t cmpflag); -int32_t OS_releasemap(void *ptr,uint64_t filesize); void _OS_closemap(struct OS_mappedptr *mp); +void *OS_loadfile(char *fname,char **bufp,long *lenp,long *allocsizep); +void *OS_filestr(long *allocsizep,char *fname); void OS_closemap(struct OS_mappedptr *mp); -long OS_ensurefilesize(char *fname,long filesize,int32_t truncateflag); int32_t OS_openmap(struct OS_mappedptr *mp); -void *OS_mappedptr(void **ptrp,struct OS_mappedptr *mp,uint64_t allocsize,int32_t rwflag,char *fname); +void *OS_mappedptr(void **ptrp,struct OS_mappedptr *mp,unsigned long allocsize,int32_t rwflag,char *fname); void *OS_filealloc(struct OS_mappedptr *M,char *fname,struct OS_memspace *mem,long size); +void *OS_nonportable_mapfile(char *fname,long *filesizep,int32_t enablewrite); +int32_t OS_nonportable_removefile(char *fname); + +unsigned long OS_filesize(char *fname); +void OS_ensure_directory(char *dirname); +long OS_ensurefilesize(char *fname,long filesize,int32_t truncateflag); +int32_t OS_truncate(char *fname,long filesize); +int32_t OS_renamefile(char *fname,char *newfname); +int32_t OS_removefile(char *fname,int32_t scrubflag); + void *OS_mapfile(char *fname,long *filesizep,int32_t enablewrite); -void *OS_loadfile(char *fname,char **bufp,long *lenp,long *allocsizep); -void *OS_filestr(long *allocsizep,char *fname); +int32_t OS_releasemap(void *ptr,unsigned long filesize); + +double OS_milliseconds(); +void OS_randombytes(uint8_t *x,long xlen); -int32_t OS_syncmap(struct OS_mappedptr *mp,long len); -void *OS_tmpalloc(char *dirname,char *name,struct OS_memspace *mem,long origsize); +//int32_t OS_syncmap(struct OS_mappedptr *mp,long len); +//void *OS_tmpalloc(char *dirname,char *name,struct OS_memspace *mem,long origsize); long myallocated(uint8_t type,long change); void *mycalloc(uint8_t type,int32_t n,long itemsize); @@ -347,7 +360,7 @@ void SaM_PrepareIndices(); // iguana_serdes.c #define IGUANA_LOG2PACKETSIZE 21 #define IGUANA_MAXPACKETSIZE (1 << IGUANA_LOG2PACKETSIZE) -struct iguana_msghdr { uint8_t netmagic[4]; char command[12]; uint8_t serdatalen[4],hash[4]; } __attribute__((packed)); +struct iguana_msghdr { uint8_t netmagic[4]; char command[12]; uint8_t serdatalen[4],hash[4]; } PACKED; int32_t iguana_rwnum(int32_t rwflag,uint8_t *serialized,int32_t len,void *endianedp); int32_t iguana_validatehdr(char *symbol,struct iguana_msghdr *H); diff --git a/crypto777/OS_time.c b/crypto777/OS_time.c index 0782c3f2a..e127ad7a5 100755 --- a/crypto777/OS_time.c +++ b/crypto777/OS_time.c @@ -56,7 +56,7 @@ struct tm *gmtime_r(const time_t *timep,struct tm *result) /*typedef struct timeval { long tv_sec; long tv_usec; -} timeval; +} timeval;*/ int gettimeofday(struct timeval * tp, struct timezone * tzp) { @@ -75,7 +75,7 @@ int gettimeofday(struct timeval * tp, struct timezone * tzp) tp->tv_sec = (long) ((time - EPOCH) / 10000000L); tp->tv_usec = (long) (system_time.wMilliseconds * 1000); return 0; -}*/ +} #endif double OS_portable_milliseconds() @@ -536,7 +536,7 @@ uint32_t OS_conv_datenum(int32_t datenum,int32_t hour,int32_t minute,int32_t sec } return(0); } - else + /*else { #ifdef __PNACL return(0); @@ -547,7 +547,7 @@ uint32_t OS_conv_datenum(int32_t datenum,int32_t hour,int32_t minute,int32_t sec t.tm_hour = hour, t.tm_min = minute, t.tm_sec = second; return((uint32_t)timegm(&t)); #endif - } + }*/ } int32_t OS_conv_unixtime(struct tai *tp,int32_t *secondsp,time_t timestamp) // gmtime -> datenum + number of seconds diff --git a/crypto777/SaM.c b/crypto777/SaM.c index 068862a67..3f9c2d092 100755 --- a/crypto777/SaM.c +++ b/crypto777/SaM.c @@ -46,7 +46,7 @@ struct SaM_info { bits384 bits; TRIT trits[SAM_STATE_SIZE],hash[SAM_HASH_SIZE]; struct SaMhdr { bits384 sig; uint32_t timestamp,nonce; uint8_t numrounds,leverage; }; void SaM_Initialize(struct SaM_info *state); -int32_t SaM_Absorb(struct SaM_info *state,const uint8_t *input,const uint32_t inputSize,const uint8_t *input2,const uint32_t inputSize2); +int32_t SaM_Absorb(struct SaM_info *state,const uint8_t *input,uint32_t inputSize,const uint8_t *input2,uint32_t inputSize2); bits384 SaM_emit(struct SaM_info *state); bits384 SaM_encrypt(uint8_t *dest,uint8_t *src,int32_t len,bits384 password,uint32_t timestamp); uint64_t SaM_threshold(int32_t leverage); diff --git a/crypto777/curve25519.c b/crypto777/curve25519.c index ec23175f8..6e06267c9 100755 --- a/crypto777/curve25519.c +++ b/crypto777/curve25519.c @@ -16,11 +16,11 @@ #include "../includes/curve25519.h" -#undef force_inline -#define force_inline __attribute__((always_inline)) +//#undef force_inline +//#define force_inline __attribute__((always_inline)) // Sum two numbers: output += in -static inline bits320 force_inline fsum(bits320 output,bits320 in) +static inline bits320 fsum(bits320 output,bits320 in) { int32_t i; for (i=0; i<5; i++) @@ -28,7 +28,7 @@ static inline bits320 force_inline fsum(bits320 output,bits320 in) return(output); } -static inline void force_inline fdifference_backwards(uint64_t *out,const uint64_t *in) +static inline void fdifference_backwards(uint64_t *out,const uint64_t *in) { static const uint64_t two54m152 = (((uint64_t)1) << 54) - 152; // 152 is 19 << 3 static const uint64_t two54m8 = (((uint64_t)1) << 54) - 8; @@ -38,14 +38,14 @@ static inline void force_inline fdifference_backwards(uint64_t *out,const uint64 out[i] = in[i] + two54m8 - out[i]; } -inline void force_inline store_limb(uint8_t *out,uint64_t in) +void store_limb(uint8_t *out,uint64_t in) { int32_t i; for (i=0; i<8; i++,in>>=8) out[i] = (in & 0xff); } -static inline uint64_t force_inline load_limb(uint8_t *in) +static inline uint64_t load_limb(uint8_t *in) { return ((uint64_t)in[0]) | @@ -75,7 +75,7 @@ bits320 fexpand(bits256 basepoint) typedef unsigned uint128_t __attribute__((mode(TI))); // Multiply a number by a scalar: output = in * scalar -static inline bits320 force_inline fscalar_product(const bits320 in,const uint64_t scalar) +static inline bits320 fscalar_product(const bits320 in,const uint64_t scalar) { int32_t i; uint128_t a = 0; bits320 output; a = ((uint128_t)in.ulongs[0]) * scalar; @@ -119,7 +119,7 @@ bits320 fmul(const bits320 in2,const bits320 in) return(out); } -inline bits320 force_inline fsquare_times(const bits320 in,uint64_t count) +bits320 fsquare_times(const bits320 in,uint64_t count) { uint128_t t[5]; uint64_t r0,r1,r2,r3,r4,c,d0,d1,d2,d4,d419; bits320 out; r0 = in.ulongs[0], r1 = in.ulongs[1], r2 = in.ulongs[2], r3 = in.ulongs[3], r4 = in.ulongs[4]; @@ -149,7 +149,7 @@ inline bits320 force_inline fsquare_times(const bits320 in,uint64_t count) return(out); } -static inline void force_inline fcontract_iter(uint128_t t[5],int32_t flag) +static inline void fcontract_iter(uint128_t t[5],int32_t flag) { int32_t i; uint64_t mask = 0x7ffffffffffffLL; for (i=0; i<4; i++) @@ -711,7 +711,7 @@ bits320 bits320_limbs(limb limbs[10]) return(output); } -static inline bits320 force_inline fscalar_product(const bits320 in,const uint64_t scalar) +static inline bits320 fscalar_product(const bits320 in,const uint64_t scalar) { limb output[10],input[10]; int32_t i; for (i=0; i<10; i++) @@ -720,7 +720,7 @@ static inline bits320 force_inline fscalar_product(const bits320 in,const uint64 return(bits320_limbs(output)); } -static inline bits320 force_inline fsquare_times(const bits320 in,uint64_t count) +static inline bits320 fsquare_times(const bits320 in,uint64_t count) { limb output[10],input[10]; int32_t i; for (i=0; i<10; i++) @@ -776,7 +776,7 @@ bits256 curve25519(bits256 mysecret,bits256 theirpublic) // x2 z2: long form && x3 z3: long form // x z: short form, destroyed && xprime zprime: short form, destroyed // qmqp: short form, preserved -static inline void force_inline +static inline void fmonty(bits320 *x2, bits320 *z2, // output 2Q bits320 *x3, bits320 *z3, // output Q + Q' bits320 *x, bits320 *z, // input Q @@ -804,7 +804,7 @@ fmonty(bits320 *x2, bits320 *z2, // output 2Q // long. Perform the swap iff @swap is non-zero. // This function performs the swap without leaking any side-channel information. // ----------------------------------------------------------------------------- -static inline void force_inline swap_conditional(bits320 *a,bits320 *b,uint64_t iswap) +static inline void swap_conditional(bits320 *a,bits320 *b,uint64_t iswap) { int32_t i; const uint64_t swap = -iswap; for (i=0; i<5; ++i) @@ -846,7 +846,7 @@ void cmult(bits320 *resultx,bits320 *resultz,bits256 secret,const bits320 q) } // Shamelessly copied from donna's code that copied djb's code, changed a little -inline bits320 force_inline crecip(const bits320 z) +inline bits320 crecip(const bits320 z) { bits320 a,t0,b,c; /* 2 */ a = fsquare_times(z, 1); // a = 2 @@ -1888,4 +1888,4 @@ uint8_t *_SuperNET_decipher(uint8_t nonce[crypto_box_NONCEBYTES],uint8_t *cipher return(0); } -#undef force_inline +//#undef force_inline diff --git a/crypto777/iguana_OS.c b/crypto777/iguana_OS.c index 0ab6a7b2a..e60896623 100755 --- a/crypto777/iguana_OS.c +++ b/crypto777/iguana_OS.c @@ -107,14 +107,14 @@ void *mycalloc(uint8_t type,int32_t n,long itemsize) while ( (item= calloc(1,sizeof(struct allocitem) + allocsize + 16)) == 0 ) { char str[65]; - printf("mycalloc: need to wait for memory.(%d,%ld) %s to be available\n",n,itemsize,mbstr(str,allocsize)); + printf("mycalloc.%c: need to wait for memory.(%d,%ld) %s to be available\n",type,n,itemsize,mbstr(str,allocsize)); sleep(1); } //printf("calloc origptr.%p retptr.%p size.%ld\n",item,(void *)(long)item + sizeof(*item),allocsize); item->allocsize = (uint32_t)allocsize; item->type = type; //portable_mutex_unlock(&MEMmutex); - return((void *)(long)item + sizeof(*item)); + return((void *)((long)item + sizeof(*item))); } void *queueitem(char *str) @@ -429,7 +429,7 @@ void *iguana_memalloc(struct OS_memspace *mem,long size,int32_t clearflag) #endif if ( (mem->used + size) <= mem->totalsize ) { - ptr = (void *)(long)((long)(mem->ptr + mem->used)); + ptr = (void *)(long)(((long)mem->ptr + mem->used)); mem->used += size; if ( size*clearflag != 0 ) memset(ptr,0,size); @@ -584,9 +584,9 @@ void OS_ensure_directory(char *dirname) } else fclose(fp);//, printf("%s exists\n",fname); } -int64_t OS_filesize(char *fname) +unsigned long OS_filesize(char *fname) { - FILE *fp; uint64_t fsize = 0; + FILE *fp; unsigned long fsize = 0; if ( (fp= fopen(fname,"rb")) != 0 ) { fseek(fp,0,SEEK_END); @@ -641,7 +641,7 @@ int64_t OS_copyfile(char *src,char *dest,int32_t cmpflag) return(len); } -int32_t OS_releasemap(void *ptr,uint64_t filesize) +int32_t OS_releasemap(void *ptr,unsigned long filesize) { int32_t retval; if ( ptr == 0 ) @@ -728,7 +728,7 @@ long OS_ensurefilesize(char *fname,long filesize,int32_t truncateflag) int32_t OS_openmap(struct OS_mappedptr *mp) { - uint64_t allocsize = mp->allocsize; + unsigned long allocsize = mp->allocsize; if ( mp->actually_allocated != 0 ) { if ( mp->fileptr == 0 ) @@ -757,9 +757,9 @@ int32_t OS_openmap(struct OS_mappedptr *mp) return(0); } -void *OS_mappedptr(void **ptrp,struct OS_mappedptr *mp,uint64_t allocsize,int32_t rwflag,char *fname) +void *OS_mappedptr(void **ptrp,struct OS_mappedptr *mp,unsigned long allocsize,int32_t rwflag,char *fname) { - uint64_t filesize; + unsigned long filesize; mp->actually_allocated = 0;//!os_supports_mappedfiles(); if ( fname != 0 ) { @@ -876,7 +876,7 @@ void *OS_mapfile(char *fname,long *filesizep,int32_t enablewrite) // win and pna return(OS_portable_mapfile(fname,filesizep,enablewrite)); } -int32_t OS_syncmap(struct OS_mappedptr *mp,long len) // pnacl doesnt implement sync +/*int32_t OS_syncmap(struct OS_mappedptr *mp,long len) // pnacl doesnt implement sync { return(OS_portable_syncmap(mp,len)); } @@ -884,7 +884,7 @@ int32_t OS_syncmap(struct OS_mappedptr *mp,long len) // pnacl doesnt implement s void *OS_tmpalloc(char *dirname,char *name,struct OS_memspace *mem,long origsize) // no syncmap no tmpalloc { return(OS_portable_tmpalloc(dirname,name,mem,origsize)); -} +}*/ void OS_init() { @@ -893,7 +893,7 @@ void OS_init() decode_hex(GENESIS_PUBKEY.bytes,sizeof(GENESIS_PUBKEY),GENESIS_PUBKEYSTR); decode_hex(GENESIS_PRIVKEY.bytes,sizeof(GENESIS_PRIVKEY),GENESIS_PRIVKEYSTR); SaM_PrepareIndices(); - return(OS_portable_init()); + OS_portable_init(); } int32_t OS_getline(int32_t waitflag,char *line,int32_t max,char *dispstr) @@ -931,3 +931,108 @@ int32_t OS_getline(int32_t waitflag,char *line,int32_t max,char *dispstr) line[strlen(line)-1] = 0; return((int32_t)strlen(line)); } + + +//////////// test suite for: +/* +int64_t OS_filesize(char *fname); +void OS_ensure_directory(char *dirname); +long OS_ensurefilesize(char *fname,long filesize,int32_t truncateflag); +int32_t OS_truncate(char *fname,long filesize); +int32_t OS_renamefile(char *fname,char *newfname); +int32_t OS_removefile(char *fname,int32_t scrubflag); + +void *OS_mapfile(char *fname,long *filesizep,int32_t enablewrite); +int32_t OS_releasemap(void *ptr,uint64_t filesize); + +double OS_milliseconds(); +void OS_randombytes(uint8_t *x,long xlen); +*/ + +int32_t iguana_OStests() +{ + static uint16_t pairs[0x100][0x100],mappairs[0x100][0x100]; + uint8_t buf[4096],*bufptr; int32_t val,min,minij,maxij,max,i,j,histo[0x100],retval = 0,n=0; double startmilli,endmilli; FILE *fp; char *name,*name2,*dirname; long filesize; void *fileptr; + startmilli = OS_milliseconds(); + printf("\n>>>>>>>>>> starting tests. Please count the seconds (or use stopwatch)\n"); + name = "OStests"; + name2 = "OStests2"; + dirname = "tmp"; + fp = fopen(name,"wb"); + memset(histo,0,sizeof(histo)); + memset(pairs,0,sizeof(pairs)); + memset(mappairs,0,sizeof(mappairs)); + for (i=0; i<4096; i++) + { + OS_randombytes(buf,sizeof(buf)); + for (j=0; j 0 ) + pairs[buf[j-1]][buf[j]]++; + } + } + fclose(fp); + printf("\nend of random bytes\n\n"); + if ( OS_filesize(name) != n ) + printf("FAIL OS_filesize %lld != %d error and if OS_filesize doesnt work, nothing else will work\n",(long long)OS_filesize(name),n), retval--; + else + { + printf("PASS OS_filesize.(%s) matches %d\n",name,n); + OS_renamefile(name,name2); + if ( OS_filesize(name2) != n ) + printf("FAIL OS_renamefile returns filesize %lld != %d\n",(long long)OS_filesize(name2),n), retval--; + else printf("PASS OS_renamefile (%s) -> (%s) worked\n",name,name2); + if ( (fileptr= OS_mapfile(name2,&filesize,0)) == 0 ) + printf("FAIL OS_mapfile.(%s) returns null\n",name2), retval--; + else if ( filesize != n ) + printf("FAIL OS_mapfile.(%s) returns %ld != %d\n",name2,filesize,n), retval--; + else + { + bufptr = fileptr; + for (i=0; i<4096; i++) + { + memcpy(buf,bufptr,sizeof(buf)); + bufptr += sizeof(buf); + for (j=1; j max ) + max = val; + else if ( val < min ) + min = val; + for (j=0; j<0x100; j++) + { + if ( (val= pairs[i][j]) > maxij ) + maxij = val; + else if ( val < minij ) + minij = val; + } + } + endmilli = OS_milliseconds(); + printf("\n\nDid that take %.3f seconds? If not, there is a problem with OS_milliseconds\n\nMake sure above numbers look random and the min/max are within specified range:\n<3%% %.2f%% min %d max %d | <75%% %.3f%% minij %d maxij %d\n",(endmilli - startmilli)/1000.,100*(double)max/min - 100.,min,max,100*(double)maxij/minij - 100.,minij,maxij); + return(retval); +} diff --git a/crypto777/iguana_utils.c b/crypto777/iguana_utils.c index 3f963393a..da95b8179 100755 --- a/crypto777/iguana_utils.c +++ b/crypto777/iguana_utils.c @@ -1079,7 +1079,7 @@ void calc_md2str(char *hexstr,uint8_t *buf,uint8_t *msg,int32_t len) bits128 x; calc_md2(hexstr,buf,msg,len); decode_hex(buf,sizeof(x),hexstr); - memcpy(buf,x.bytes,sizeof(x)); + //memcpy(buf,x.bytes,sizeof(x)); } void calc_md4str(char *hexstr,uint8_t *buf,uint8_t *msg,int32_t len) @@ -1087,7 +1087,7 @@ void calc_md4str(char *hexstr,uint8_t *buf,uint8_t *msg,int32_t len) bits128 x; calc_md4(hexstr,buf,msg,len); decode_hex(buf,sizeof(x),hexstr); - memcpy(buf,x.bytes,sizeof(x)); + //memcpy(buf,x.bytes,sizeof(x)); } void calc_md5str(char *hexstr,uint8_t *buf,uint8_t *msg,int32_t len) @@ -1095,7 +1095,7 @@ void calc_md5str(char *hexstr,uint8_t *buf,uint8_t *msg,int32_t len) bits128 x; calc_md5(hexstr,msg,len); decode_hex(buf,sizeof(x),hexstr); - memcpy(buf,x.bytes,sizeof(x)); + //memcpy(buf,x.bytes,sizeof(x)); } void calc_crc32str(char *hexstr,uint8_t *buf,uint8_t *msg,int32_t len) diff --git a/crypto777/inet.c b/crypto777/inet.c index 6579bd6be..837d9d2e0 100755 --- a/crypto777/inet.c +++ b/crypto777/inet.c @@ -24,7 +24,9 @@ #ifdef _WIN32 #define in6_addr sockaddr #define in_addr_t struct sockaddr_storage +#ifndef NATIVE_WINDOWS #define EAFNOSUPPORT WSAEAFNOSUPPORT +#endif struct sockaddr_in6 { short sin6_family; diff --git a/crypto777/jpeg/jconfig.h b/crypto777/jpeg/jconfig.h index 966b1d514..98cf6a54d 100755 --- a/crypto777/jpeg/jconfig.h +++ b/crypto777/jpeg/jconfig.h @@ -20,6 +20,7 @@ /* Define "boolean" as unsigned char, not int, on Windows systems. */ #ifdef _WIN32 +#define USE_MSDOS_MEMMGR #ifndef __RPCNDR_H__ /* don't conflict if rpcndr.h already read */ typedef unsigned char boolean; #endif @@ -29,7 +30,11 @@ typedef unsigned char boolean; #ifdef JPEG_INTERNALS /* #undef RIGHT_SHIFT_IS_UNSIGNED */ +#ifdef WIN32 +#define INLINE +#else #define INLINE __inline__ +#endif /* These are for configuring the JPEG memory manager. */ /* #undef DEFAULT_MAX_MEM */ /* #undef NO_MKTEMP */ diff --git a/crypto777/jpeg/jmemsys.h b/crypto777/jpeg/jmemsys.h index 6c3c6d348..5da67ae30 100755 --- a/crypto777/jpeg/jmemsys.h +++ b/crypto777/jpeg/jmemsys.h @@ -154,6 +154,7 @@ typedef struct backing_store_struct { /* For the MS-DOS manager (jmemdos.c), we need: */ handle_union handle; /* reference to backing-store storage object */ char temp_name[TEMP_NAME_LENGTH]; /* name if it's a file */ + FILE *temp_file; #else #ifdef USE_MAC_MEMMGR /* For the Mac manager (jmemmac.c), we need: */ diff --git a/crypto777/jpeg/unix/jmemname.c b/crypto777/jpeg/unix/jmemname.c index 4bcd66290..631bd8922 100755 --- a/crypto777/jpeg/unix/jmemname.c +++ b/crypto777/jpeg/unix/jmemname.c @@ -11,7 +11,7 @@ * Also, the problem of determining the amount of memory available * is shoved onto the user. */ -#include +//#include #define JPEG_INTERNALS #include "../jinclude.h" diff --git a/crypto777/scrypt.c b/crypto777/scrypt.c index 99ce4a04a..fa482eaf8 100755 --- a/crypto777/scrypt.c +++ b/crypto777/scrypt.c @@ -344,7 +344,12 @@ static inline void scrypt_core(uint32_t *X, uint32_t *V, int N) void scrypt_1024_1_1_256(const uint32_t *input,uint32_t *output,uint32_t *midstate,uint8_t *scratchpad, int N) { - uint32_t *V,tstate[8],ostate[8],X[32] __attribute__((aligned(128))); + uint32_t *V,tstate[8],ostate[8],X[32] +#ifndef WIN32 + __attribute__((aligned(128))) +#endif + ; + V = (uint32_t *)(((uintptr_t)(scratchpad) + 63) & ~ (uintptr_t)(63)); memcpy(tstate, midstate, 32); HMAC_SHA256_80_init(input, tstate, ostate); diff --git a/datachain/datachain_KOMODO.c b/datachain/datachain_KOMODO.c index d9beb46a5..403990eac 100755 --- a/datachain/datachain_KOMODO.c +++ b/datachain/datachain_KOMODO.c @@ -78,12 +78,12 @@ bits256 datachain_opreturn_convert(uint8_t *txidbytes,int32_t *txlenp,struct igu int32_t datachain_genesis_verify(struct gecko_genesis_opreturn *opret) { - int32_t txlen,datalen; bits256 txid,threshold,hash2; uint8_t serialized[1024],txidbytes[1024]; struct iguana_msgblock msg; char str[65],str2[65]; - txid = datachain_opreturn_convert(txidbytes,&txlen,&msg,opret); + int32_t txlen,datalen; bits256 txid,threshold,hash2; uint8_t serialized[1024],txidbytes[1024]; struct iguana_msgzblock zmsg; char str[65],str2[65]; + txid = datachain_opreturn_convert(txidbytes,&txlen,(void *)&zmsg,opret); if ( opret->nBits >= GECKO_EASIESTDIFF ) threshold = bits256_from_compact(GECKO_EASIESTDIFF); else threshold = bits256_from_compact(opret->nBits); - datalen = iguana_rwblockhdr(1,0,serialized,&msg); + datalen = iguana_rwblockhdr(1,0,serialized,&zmsg); hash2 = iguana_calcblockhash("virtual",blockhash_sha256,serialized,datalen); //for (i=0; i= GECKO_EASIESTDIFF ) threshold = bits256_from_compact(GECKO_EASIESTDIFF); else threshold = bits256_from_compact(nBits); for (i=0; i<100000000; i++) { - opret.nonce = msg.H.nonce = i; - datalen = iguana_rwblockhdr(1,0,serialized,&msg); + opret.nonce = msg->H.nonce = i; + datalen = iguana_rwblockhdr(1,0,serialized,&zmsg); hash2 = iguana_calcblockhash(symbol,btcd->chain->hashalgo,serialized,datalen); if ( bits256_cmp(threshold,hash2) > 0 ) break; @@ -140,7 +140,7 @@ int32_t datachain_opreturn_create(uint8_t *serialized,char *symbol,char *name,ch void datachain_events_processKOMODO(struct supernet_info *myinfo,struct datachain_info *dPoW,struct datachain_event *event) { - struct gecko_chain *chain; bits256 hash2,threshold; struct gecko_genesis_opreturn opret; int32_t datalen,i,j,len,txlen; char symbol[16],name[64],magicstr[16],blockstr[8192],nbitstr[16],issuer[64],hashstr[65],str2[65],argbuf[1024],chainname[GECKO_MAXNAMELEN]; cJSON *valsobj; struct iguana_msgblock msg; uint8_t serialized[256],txidbytes[1024],buf[4]; struct iguana_info *virt,*btcd; + struct gecko_chain *chain; bits256 hash2,threshold; struct gecko_genesis_opreturn opret; int32_t datalen,i,j,len,txlen; char symbol[16],name[64],magicstr[16],blockstr[8192],nbitstr[16],issuer[64],hashstr[65],str2[65],argbuf[1024],chainname[GECKO_MAXNAMELEN]; cJSON *valsobj; struct iguana_msgzblock zmsg; uint8_t serialized[256],txidbytes[1024],buf[4]; struct iguana_info *virt,*btcd; if ( (btcd= iguana_coinfind("BTCD")) != 0 && memcmp(event->opreturn,"NEW",3) == 0 ) { //int32_t i; for (i=0; i<76; i++) @@ -151,13 +151,13 @@ void datachain_events_processKOMODO(struct supernet_info *myinfo,struct datachai datachain_genesis_verify(&opret); memset(symbol,0,sizeof(symbol)), memcpy(symbol,opret.symbol,sizeof(opret.symbol)); memset(name,0,sizeof(name)), memcpy(name,opret.name,sizeof(opret.name)); - hash2 = datachain_opreturn_convert(txidbytes,&txlen,&msg,&opret); + hash2 = datachain_opreturn_convert(txidbytes,&txlen,(void *)&zmsg,&opret); if ( opret.nBits >= GECKO_EASIESTDIFF ) threshold = bits256_from_compact(GECKO_EASIESTDIFF); else threshold = bits256_from_compact(opret.nBits); - msg.txn_count = 1; + zmsg.txn_count = 1; //n = iguana_serialize_block(virt->chain,&hash2,serialized,newblock); - datalen = iguana_rwblockhdr(1,0,serialized,&msg); + datalen = iguana_rwblockhdr(1,0,serialized,&zmsg); hash2 = iguana_calcblockhash(symbol,btcd->chain->hashalgo,serialized,datalen); for (i=0; i> 24) & 0xff,hashstr,opret.timestamp,nbitstr,opret.nonce,bits256_str(str2,msg.H.merkle_root),blockstr); + sprintf(argbuf,"{\"name\":\"%s\",\"symbol\":\"%s\",\"netmagic\":\"%s\",\"port\":%u,\"blocktime\":%u,\"pubval\":\"%02x\",\"p2shval\":\"%02x\",\"wifval\":\"%02x\",\"unitval\":\"%02x\",\"genesishash\":\"%s\",\"genesis\":{\"version\":1,\"timestamp\":%u,\"nBits\":\"%s\",\"nonce\":%d,\"merkle_root\":\"%s\"},\"genesisblock\":\"%s\"}",name,symbol,magicstr,opret.port,opret.blocktime,opret.pubval,opret.p2shval,opret.wifval,(opret.nBits >> 24) & 0xff,hashstr,opret.timestamp,nbitstr,opret.nonce,bits256_str(str2,zmsg.zH.merkle_root),blockstr); if ( (valsobj= cJSON_Parse(argbuf)) != 0 ) { printf("datachain.NEW (%s/%s port.%u blocktime.%d) issuer.%s (%s)\n",opret.symbol,opret.name,opret.port,opret.blocktime,issuer,jprint(valsobj,0)); diff --git a/deprecated/iguana_instantdex.c b/deprecated/iguana_instantdex.c index 9f21a4309..20de75225 100755 --- a/deprecated/iguana_instantdex.c +++ b/deprecated/iguana_instantdex.c @@ -225,7 +225,7 @@ struct instantdex_event *instantdex_addevent(struct instantdex_stateinfo *states for (i=0; i %s) without existing state and nextstate\n",statename,nextstatename); - exit(-1); + iguana_exit(0); return(0); } } diff --git a/deprecated/obsolete.h b/deprecated/obsolete.h index 9e38d3df0..919eed598 100755 --- a/deprecated/obsolete.h +++ b/deprecated/obsolete.h @@ -18656,3 +18656,501 @@ len = 0; } #endif #endif + //#define ENABLE_RAMCHAIN + +#ifdef oldway + void iguana_RTramchainfree(struct iguana_info *coin,struct iguana_bundle *bp) + { + //return; +#ifdef ENABLE_RAMCHAIN + int32_t hdrsi; + //portable_mutex_lock(&coin->RTmutex); + if ( coin->utxotable != 0 ) + { + printf("free RTramchain\n"); + //iguana_utxoupdate(coin,-1,0,0,0,0,-1,0); // free hashtables + coin->lastRTheight = coin->RTheight = 0;//(coin->bundlescount-1) * coin->chain->bundlesize; + coin->RTgenesis = 0; + iguana_utxoaddrs_purge(coin); + iguana_ramchain_free(coin,&coin->RTramchain,1); + if ( bp != 0 ) + bp->ramchain = coin->RTramchain; + iguana_mempurge(&coin->RTmem); + iguana_mempurge(&coin->RThashmem); + for (hdrsi=coin->bundlescount-1; hdrsi>0; hdrsi--) + if ( (bp= coin->bundles[hdrsi]) == 0 && bp != coin->current ) + { + iguana_volatilespurge(coin,&bp->ramchain); + if ( iguana_volatilesmap(coin,&bp->ramchain) != 0 ) + printf("error mapping bundle.[%d]\n",hdrsi); + } + coin->RTdatabad = 0; + printf("done RTramchain\n"); + } + //portable_mutex_unlock(&coin->RTmutex); +#endif + } + + void *iguana_ramchainfile(struct supernet_info *myinfo,struct iguana_info *coin,struct iguana_ramchain *dest,struct iguana_ramchain *R,struct iguana_bundle *bp,int32_t bundlei,struct iguana_block *block) + { + //return(0); +#ifdef ENABLE_RAMCHAIN + char fname[1024]; long filesize; int32_t err; void *ptr=0; + if ( block == bp->blocks[bundlei] && (ptr= iguana_bundlefile(coin,fname,&filesize,bp,bundlei)) != 0 ) + { + if ( iguana_mapchaininit(fname,coin,R,bp,bundlei,block,ptr,filesize) >= 0 ) + { + if ( dest != 0 && dest->H.data != 0 ) + err = iguana_ramchain_iterate(myinfo,coin,dest,R,bp,bundlei); + else err = 0; + if ( err != 0 || dest->H.data == 0 || bits256_cmp(R->H.data->firsthash2,block->RO.hash2) != 0 ) + { + char str[65]; + printf("ERROR [%d:%d] %s vs ",bp->hdrsi,bundlei,bits256_str(str,block->RO.hash2)); + printf("mapped.%s\n",bits256_str(str,R->H.data->firsthash2)); + } else return(ptr); + } + iguana_blockunmark(coin,block,bp,bundlei,1); + iguana_ramchain_free(coin,R,1); + } //else printf("ramchainfile ptr.%p block.%p\n",ptr,block); +#endif + return(0); + } + + void iguana_RTramchainalloc(char *fname,struct iguana_info *coin,struct iguana_bundle *bp) + { + //return; +#ifdef ENABLE_RAMCHAIN + uint32_t i,changed = 0; struct iguana_ramchaindata *rdata; struct iguana_ramchain *dest = &coin->RTramchain; struct iguana_blockRO *B; struct iguana_bundle *tmpbp; + //portable_mutex_lock(&coin->RTmutex); + if ( (rdata= dest->H.data) != 0 ) + { + i = 0; + if ( coin->RTheight != coin->lastRTheight ) + changed++; + else + { + B = RAMCHAIN_PTR(rdata,Boffset); + for (i=0; inumblocks; i++) + if ( bits256_cmp(B[i].hash2,bp->hashes[i]) != 0 ) + { + char str[65],str2[65]; printf("mismatched hash2 at %d %s vs %s\n",bp->bundleheight+i,bits256_str(str,B[i].hash2),bits256_str(str2,bp->hashes[i])); + changed++; + iguana_blockunmark(coin,bp->blocks[i],bp,i,1); + break; + } + } + if ( changed != 0 ) + { + printf("RTramchain changed %d bundlei.%d | coin->RTheight %d != %d bp->bundleheight + %d coin->RTramchain.H.data->numblocks\n",coin->RTheight,i,coin->RTheight,bp->bundleheight,rdata->numblocks); + iguana_RTramchainfree(coin,bp); + } + } + if ( coin->RTramchain.H.data == 0 ) + { + iguana_ramchainopen(fname,coin,dest,&coin->RTmem,&coin->RThashmem,bp->bundleheight,bp->hashes[0]); + printf("ALLOC RTramchain.(%s) RTrdata %p rdata.%p\n",fname,coin->RTramchain.H.data,bp->ramchain.H.data); + dest->H.txidind = dest->H.unspentind = dest->H.spendind = dest->pkind = dest->H.data->firsti; + dest->externalind = dest->H.stacksize = 0; + dest->H.scriptoffset = 1; + if ( 1 ) + { + for (i=0; ihdrsi; i++) + if ( (tmpbp= coin->bundles[i]) != 0 ) + { + iguana_volatilespurge(coin,&tmpbp->ramchain); + iguana_volatilesmap(coin,&tmpbp->ramchain); + } + sleep(1); + } + } + //portable_mutex_unlock(&coin->RTmutex); +#endif + } + + void iguana_rdataset(struct iguana_ramchain *dest,struct iguana_ramchaindata *rdest,struct iguana_ramchain *src) + { + //return; +#ifdef ENABLE_RAMCHAIN + *dest = *src; + dest->H.data = rdest; + *rdest = *src->H.data; + rdest->numpkinds = src->pkind; + rdest->numexternaltxids = src->externalind; + rdest->numtxids = src->H.txidind; + rdest->numunspents = src->H.unspentind; + rdest->numspends = src->H.spendind; + //printf("RT set numtxids.%u numspends.%u\n",rdest->numtxids,rdest->numspends); +#endif + } + + void iguana_rdatarestore(struct iguana_ramchain *dest,struct iguana_ramchaindata *rdest,struct iguana_ramchain *src) + { + //return; +#ifdef ENABLE_RAMCHAIN + *src = *dest; + *src->H.data = *rdest; + src->pkind = rdest->numpkinds; + src->externalind = rdest->numexternaltxids; + src->H.txidind = rdest->numtxids; + src->H.unspentind = rdest->numunspents; + src->H.spendind = rdest->numspends; + printf("RT restore numtxids.%u numspends.%u\n",rdest->numtxids,rdest->numspends); +#endif + } + + void iguana_RThdrs(struct iguana_info *coin,struct iguana_bundle *bp,int32_t numaddrs) + { + //return; +#ifdef ENABLE_RAMCHAIN + int32_t datalen,i; uint8_t serialized[512]; char str[65]; struct iguana_peer *addr; + if ( coin->peers == 0 ) + return; + datalen = iguana_gethdrs(coin,serialized,coin->chain->gethdrsmsg,bits256_str(str,bp->hashes[0])); + for (i=0; ipeers->numranked; i++) + { + queue_enqueue("hdrsQ",&coin->hdrsQ,queueitem(bits256_str(str,bp->hashes[0])),1); + if ( coin->chain->hasheaders == 0 ) + queue_enqueue("hdrsQ",&coin->hdrsQ,queueitem(bits256_str(str,coin->blocks.hwmchain.RO.hash2)),1); + if ( (addr= coin->peers->ranked[i]) != 0 && addr->usock >= 0 && addr->dead == 0 && datalen > 0 ) + { + iguana_send(coin,addr,serialized,datalen); + //addr->pendhdrs++; + } + } +#endif + } + + void iguana_RTspendvectors(struct supernet_info *myinfo,struct iguana_info *coin,struct iguana_bundle *bp) + { + //return; +#ifdef ENABLE_RAMCHAIN + int32_t iterate,lasti,num,hdrsi,orignumemit; struct iguana_ramchain R; struct iguana_ramchaindata RDATA; + if ( bp->hdrsi <= 0 ) + return; + printf("RTspendvectors [%d]\n",bp->hdrsi); + bp->ramchain = coin->RTramchain; + iguana_rdataset(&R,&RDATA,&coin->RTramchain); + if ( (lasti= (coin->RTheight - ((coin->RTheight/bp->n)*bp->n))) >= bp->n-1 ) + lasti = bp->n - 1; + orignumemit = bp->numtmpspends; + iterate = 0; + if ( iguana_spendvectors(myinfo,coin,bp,&coin->RTramchain,coin->RTstarti%coin->chain->bundlesize,lasti,0,iterate) < 0 ) + { + printf("RTutxo error -> RTramchainfree\n"); + coin->RTdatabad = 1; + return; + } + else + { + //printf("RTspendvectors calculated to %d [%d]\n",coin->RTheight,bp->hdrsi); + bp->converted = 1; + for (hdrsi=num=0; hdrsihdrsi; hdrsi++) + { +#ifdef __APPLE__ + if ( coin->bundles[hdrsi]->lastprefetch == 0 ) + { + iguana_ramchain_prefetch(coin,&coin->bundles[hdrsi]->ramchain,2); + coin->bundles[hdrsi]->lastprefetch = (uint32_t)time(NULL); + } +#endif + num += iguana_convert(coin,IGUANA_NUMHELPERS,coin->bundles[hdrsi],1,orignumemit); + } + //printf("RTspendvectors converted.%d to %d\n",num,coin->RTheight); + //iguana_rdatarestore(&R,&RDATA,&bp->ramchain); + bp->converted = (uint32_t)time(NULL); + if ( iguana_balancegen(coin,1,bp,coin->RTstarti,coin->RTheight > 0 ? coin->RTheight-1 : bp->bundleheight+bp->n-1,orignumemit) < 0 ) + { + printf("balancegen error\n"); + coin->RTdatabad = 1; + } + else if ( coin->RTgenesis == 0 && coin->firstRTgenesis == 0 ) + coin->firstRTgenesis++, printf(">>>>>> IGUANA %s READY FOR REALTIME RPC <<<<<<\n",coin->symbol); + //printf("iguana_balancegen [%d] (%d to %d)\n",bp->hdrsi,coin->RTstarti,(coin->RTheight-1)%bp->n); + coin->RTstarti = coin->RTheight; + } +#endif + } + + int32_t iguana_realtime_update(struct supernet_info *myinfo,struct iguana_info *coin) + { + int32_t flag = 0; + //return(0); +#ifdef ENABLE_RAMCHAIN + double startmillis0; static double totalmillis0; static int32_t num0; + struct iguana_bundle *bp; struct iguana_ramchaindata *rdata; int32_t offset,bundlei,i,n; bits256 hash2,*ptr; struct iguana_peer *addr; + struct iguana_block *block=0; struct iguana_blockRO *B; struct iguana_ramchain *dest=0,blockR; + if ( coin->peers == 0 && coin->virtualchain == 0 ) + return(0); + offset = 0;//(strcmp("BTC",coin->symbol) != 0); + if ( coin->RTheight >= (coin->current->hdrsi+1)*coin->chain->bundlesize ) + { + printf("inversion RT %d >= %d\n",coin->RTheight,(coin->current->hdrsi+1)*coin->chain->bundlesize); + coin->lastRTheight = coin->RTheight = coin->current->hdrsi*coin->chain->bundlesize; + iguana_utxoaddrs_purge(coin); + } + if ( coin->current != 0 && (coin->blocks.hwmchain.height % coin->chain->bundlesize) == coin->chain->bundlesize-1 && coin->blocks.hwmchain.height/coin->chain->bundlesize == coin->longestchain/coin->chain->bundlesize ) + { + block = coin->current->blocks[coin->current->n - 1]; + if ( _iguana_chainlink(coin,block) <= 0 ) + { + printf("RT edge case couldnt link\n"); + } + else + { + printf("RT edge case.%d\n",block->height); + if ( (bp= coin->bundles[coin->RTheight / coin->chain->bundlesize]) != 0 ) + iguana_spendvectors(myinfo,coin,bp,&bp->ramchain,0,bp->n,0,0); + iguana_update_balances(coin); + } + } + if ( coin->spendvectorsaved <= 1 ) + { + //printf("%s spendvectorsaved not yet\n",coin->symbol); + usleep(100000); + return(0); + } + //portable_mutex_lock(&coin->RTmutex); + for (i=0; ibundlescount-1; i++) + { + if ( (bp= coin->bundles[i]) != 0 && (i > 0 && bp->utxofinish == 0) && bp != coin->current ) + { + if ( iguana_spendvectors(myinfo,coin,bp,&bp->ramchain,0,bp->n,0,0) < 0 ) + { + //portable_mutex_unlock(&coin->RTmutex); + printf("error generating spendvectors.[%d], skipping\n",i); + return(0); + } // else printf("generated UTXO.[%d]\n",i); + coin->spendvectorsaved = 1; + } + } + //portable_mutex_unlock(&coin->RTmutex); + bp = coin->current; + if ( bp == 0 )//|| iguana_validated(coin) < bp->hdrsi ) + { + //printf("bp.%p validated.%d vs hdrsi.%d\n",bp,iguana_validated(coin),bp->hdrsi); + return(0); + } + if ( 0 && coin->RTheight > 0 && coin->spendvectorsaved != 1 && coin->bundlescount-1 != coin->balanceswritten ) + { + printf("RT mismatch %d != %d\n",coin->bundlescount-1,coin->balanceswritten); + iguana_RTramchainfree(coin,coin->current); + coin->spendvectorsaved = 0; + coin->lastRTheight = coin->RTheight = 0; + iguana_utxoaddrs_purge(coin); + /*while ( coin->spendvectorsaved <= 1 ) + { + fprintf(stderr,"wait for spendvectorsaved\n"); + sleep(3); + }*/ + return(0); + } + if ( coin->RTdatabad == 0 && bp->hdrsi >= (coin->longestchain/coin->chain->bundlesize)-1 && bp->hdrsi >= coin->balanceswritten-2 && ((coin->RTheight < coin->blocks.hwmchain.height-offset && time(NULL) > bp->lastRT) || time(NULL) > bp->lastRT+1) ) //coin->RTheight >= bp->bundleheight && coin->RTheight < bp->bundleheight+bp->n && + { + if ( coin->RTheight < bp->hdrsi*coin->chain->bundlesize ) + { + coin->lastRTheight = coin->RTheight = bp->hdrsi*coin->chain->bundlesize; + iguana_utxoaddrs_purge(coin); + } + if ( (block= bp->blocks[0]) == 0 || block->txvalid == 0 || block->mainchain == 0 ) + { + if ( block != 0 ) + { + if ( _iguana_chainlink(coin,block) <= 0 ) + { + iguana_blockunmark(coin,block,bp,0,0); + bp->issued[0] = 0; + hash2 = bp->hashes[0]; + //char str[65]; printf("RT[0] [%d:%d] %s %p\n",bp->hdrsi,0,bits256_str(str,hash2),block); + if ( coin->peers != 0 ) + { + addr = coin->peers->ranked[rand() % 8]; + if ( addr != 0 && addr->usock >= 0 && addr->dead == 0 ) + iguana_sendblockreqPT(coin,addr,bp,0,hash2,0); + } + } + } + } + //char str[65]; printf("check longest.%d RTheight.%d hwm.%d %s %p\n",coin->longestchain,coin->RTheight,coin->blocks.hwmchain.height,bits256_str(str,bp->hashes[0]),block); + if ( bits256_cmp(coin->RThash1,bp->hashes[1]) != 0 ) + coin->RThash1 = bp->hashes[1]; + //bp->lastRT = (uint32_t)time(NULL); + if ( coin->peers != 0 && coin->RTheight <= coin->longestchain-offset && coin->peers->numranked > 0 && time(NULL) > coin->RThdrstime+16 ) + { + iguana_RThdrs(coin,bp,coin->peers->numranked); + coin->RThdrstime = (uint32_t)time(NULL); + } + bp->lastRT = (uint32_t)time(NULL); + iguana_RTramchainalloc("RTbundle",coin,bp); + bp->isRT = 1; + //printf("%s rdata.%p RTheight.%d hwm.%d RTdatabad.%d\n",coin->symbol,coin->RTramchain.H.data,coin->RTheight,coin->blocks.hwmchain.height,coin->RTdatabad); + while ( (rdata= coin->RTramchain.H.data) != 0 && coin->RTheight <= coin->blocks.hwmchain.height-offset && coin->RTdatabad == 0 ) + { + dest = &coin->RTramchain; + B = RAMCHAIN_PTR(rdata,Boffset); + bundlei = (coin->RTheight % coin->chain->bundlesize); + if ( (block= iguana_bundleblock(coin,&hash2,bp,bundlei)) != 0 ) + { + iguana_bundlehashadd(coin,bp,bundlei,block); + //printf("RT.%d vs hwm.%d starti.%d bp->n %d block.%p/%p ramchain.%p databad.%d prevnonz.%d\n",coin->RTheight,coin->blocks.hwmchain.height,coin->RTstarti,bp->n,block,bp->blocks[bundlei],dest->H.data,coin->RTdatabad,bits256_nonz(block->RO.prev_block)); + } + else + { + //printf("cant find bundleblock [%d:%d]\n",bp->hdrsi,bundlei); + iguana_blockQ("RTmissing",coin,bp,bundlei,hash2,1); + break; + } + if ( coin->RTdatabad == 0 && block != 0 && (block->height == 0 || bits256_nonz(block->RO.prev_block) != 0) ) + { + //printf("bundlei.%d blockht.%d RTheight.%d\n",bundlei,block->height,coin->RTheight); + iguana_blocksetcounters(coin,block,dest); + startmillis0 = OS_milliseconds(); + if ( iguana_ramchainfile(myinfo,coin,dest,&blockR,bp,bundlei,block) == 0 ) + { + for (i=0; in; i++) + if ( GETBIT(bp->haveblock,i) == 0 ) + bp->issued[i] = 0; + if ( (n= iguana_bundleissuemissing(coin,bp,3,1.)) > 0 ) + printf("RT %s issued %d priority requests [%d] to unstick stuckiters.%d\n",coin->symbol,n,bp->hdrsi,coin->stuckiters); + for (i=bundlei; in; i++) + { + block = iguana_bundleblock(coin,&hash2,bp,i); + if ( bits256_nonz(hash2) != 0 && (block == 0 || block->txvalid == 0) ) + { + uint8_t serialized[512]; int32_t len; struct iguana_peer *addr; + //char str[65]; printf("RT error [%d:%d] %s %p\n",bp->hdrsi,i,bits256_str(str,hash2),block); + if ( coin->peers != 0 ) + { + addr = coin->peers->ranked[rand() % 8]; + if ( addr != 0 && addr->usock >= 0 && addr->dead == 0 && (len= iguana_getdata(coin,serialized,MSG_BLOCK,&hash2,1)) > 0 ) + iguana_send(coin,addr,serialized,len); + } + coin->RTgenesis = 0; + } + if ( bits256_nonz(hash2) != 0 ) + iguana_blockQ("RTerr",coin,bp,i,hash2,1); + //break; + } + return(-1); + } else iguana_ramchain_free(coin,&blockR,1); + B[bundlei] = block->RO; + totalmillis0 += (OS_milliseconds() - startmillis0); + num0++; + flag++; + //coin->blocks.RO[bp->bundleheight+bundlei] = block->RO; + coin->RTheight++; + coin->lastRTheight = coin->RTheight; + //printf(">>>> RT.%d hwm.%d L.%d T.%d U.%d S.%d P.%d X.%d -> size.%ld\n",coin->RTheight,coin->blocks.hwmchain.height,coin->longestchain,dest->H.txidind,dest->H.unspentind,dest->H.spendind,dest->pkind,dest->externalind,(long)dest->H.data->allocsize); + if ( coin->RTramchain.H.data != 0 ) + coin->RTramchain.H.data->numblocks = bundlei + 1; + else break; + } else break; + } + } + else + { + if ( coin->virtualchain == 0 ) + { + //printf("%s skip RT.(%d %d %d %d %d %d %d %u)\n",coin->symbol,coin->RTdatabad,bp->hdrsi,coin->longestchain/coin->chain->bundlesize,coin->balanceswritten,coin->RTheight,bp->bundleheight,coin->blocks.hwmchain.height,bp->lastRT); + //sleep(1); + } + } + n = 0; + if ( coin->RTdatabad == 0 && dest != 0 && flag != 0 && coin->RTheight >= coin->blocks.hwmchain.height-offset ) + { + printf("ramchainiterate.[%d] ave %.2f micros, total %.2f seconds starti.%d num.%d\n",num0,(totalmillis0*1000.)/num0,totalmillis0/1000.,coin->RTstarti,coin->RTheight%bp->n); + if ( (n= iguana_walkchain(coin,1)) == coin->RTheight-1+offset ) + { + //printf("RTgenesis verified\n"); + if ( (coin->RTheight % coin->chain->bundlesize) > 3 ) + { + //portable_mutex_lock(&coin->RTmutex); + iguana_RTspendvectors(myinfo,coin,bp); + //portable_mutex_unlock(&coin->RTmutex); + coin->RTgenesis = (uint32_t)time(NULL); + } + } + else + { + printf("walkchain error n.%d != %d\n",n,coin->RTheight-1+offset); + coin->RTdatabad = 1; + } + } + if ( dest != 0 && flag != 0 ) + printf("<<<< flag.%d RT.%d:%d hwm.%d L.%d T.%d U.%d S.%d P.%d X.%d -> size.%ld balance %.8f + %.8f - %.8f = supply %.8f\n",flag,coin->RTheight,n,coin->blocks.hwmchain.height,coin->longestchain,dest->H.txidind,dest->H.unspentind,dest->H.spendind,dest->pkind,dest->externalind,dest->H.data!=0?(long)dest->H.data->allocsize:-1,dstr(coin->histbalance),dstr(coin->RTcredits),dstr(coin->RTdebits),dstr(coin->histbalance + coin->RTcredits - coin->RTdebits)); + if ( coin->RTdatabad != 0 ) + { + bits256 lastbundle; + //portable_mutex_lock(&coin->RTmutex); + printf("START DATABAD fixing\n"); + iguana_RTramchainfree(coin,bp); + if ( coin->RTdatabad < 0 ) + { + memset(lastbundle.bytes,0,sizeof(lastbundle)); + iguana_initfinal(myinfo,coin,lastbundle); + } + coin->RTdatabad = 0; + //memset(bp->hashes,0,sizeof(bp->hashes)); + memset(bp->blocks,0,sizeof(bp->blocks)); + if ( 0 && bp->speculative != 0 ) + { + ptr = bp->speculative; + bp->speculative = 0; + memset(ptr,0,sizeof(*bp->speculative)*bp->n); + myfree(ptr,(bp->n+1)*sizeof(*bp->speculative)); + } + iguana_RTramchainalloc("RTbundle",coin,bp); + printf("DONE DATABAD fixing\n"); + //portable_mutex_unlock(&coin->RTmutex); + } +#endif + return(flag); + } +#endif + /*if ( (checklen= iguana_vinscriptdecode(coin,ramchain,&metalen,_script,&Kspace[rdata->scriptspace],Kspace,s)) != vinscriptlen || (vinscript != 0 && memcmp(_script,vinscript,vinscriptlen) != 0) ) + { + static uint64_t counter; + if ( counter++ < 100 ) + { + for (i=0; iH.scriptoffset += metalen; + + + /*static uint64_t good,bad; + if ( 0 && iguana_metascript(coin,RAMCHAIN_ARG,s,vinscript,vinscriptlen,0) < 0 ) + { + static long errlen,err2len; char errbuf[1024]; + errlen += vinscriptlen; + if ( iguana_metascript(coin,RAMCHAIN_ARG,s,vinscript,vinscriptlen,1) < 0 ) + { + err2len += vinscriptlen; + errbuf[0] = 0; + for (i=0; i 138 ) + { + errbuf[0] = 0; + for (i=0; ihdrsi = hdrsi; + //s->bundlei = bundlei; + //char str[65]; printf("%s set prevout.%d -> %d\n",bits256_str(str,prev_hash),prev_vout,s->prevout); + //if ( pkind != 0 ) + // s->prevspendind = A[pkind].lastspendind; diff --git a/gecko/gecko.c b/gecko/gecko.c index 496279174..cd7667089 100755 --- a/gecko/gecko.c +++ b/gecko/gecko.c @@ -179,9 +179,9 @@ struct iguana_info *basilisk_geckochain(struct supernet_info *myinfo,char *symbo virt->chain = calloc(1,sizeof(*virt->chain)); virt->enableCACHE = 1; serialized = get_dataptr(BASILISK_HDROFFSET,&ptr,&datalen,hexbuf,sizeof(hexbuf),hexstr); - iguana_chaininit(virt->chain,1,valsobj); + iguana_chaininit(myinfo,virt->chain,1,valsobj); virt->chain->isPoS = 1; - hdrsize = (virt->chain->zcash != 0) ? sizeof(struct iguana_msgblockhdr_zcash) : sizeof(struct iguana_msgblockhdr); + hdrsize = (virt->chain->zcash != 0) ? sizeof(struct iguana_msgzblockhdr) : sizeof(struct iguana_msgblockhdr); if ( gecko_blocknonce_verify(virt,serialized,hdrsize,virt->chain->nBits,0,0) > 0 ) { virt->chain->genesishash2 = iguana_calcblockhash(symbol,virt->chain->hashalgo,serialized,hdrsize); @@ -212,7 +212,7 @@ struct iguana_info *basilisk_geckochain(struct supernet_info *myinfo,char *symbo if ( virt->blocks.hwmchain.height == 0 ) { memset(&txdata,0,sizeof(txdata)); - if ( (n= iguana_gentxarray(virt,&virt->TXMEM,&txdata,&len,serialized,datalen) == datalen) || n == datalen-1 ) + if ( (n= iguana_gentxarray(myinfo,virt,&virt->TXMEM,&txdata,&len,serialized,datalen) == datalen) || n == datalen-1 ) { txdata.zblock.height = 0; txdata.zblock.RO.allocsize = iguana_ROallocsize(virt); diff --git a/gecko/gecko_blocks.c b/gecko/gecko_blocks.c index 0e0b61045..7f089ae34 100755 --- a/gecko/gecko_blocks.c +++ b/gecko/gecko_blocks.c @@ -121,7 +121,7 @@ struct iguana_bundle *gecko_ensurebundle(struct iguana_info *virt,struct iguana_ int32_t gecko_hwmset(struct supernet_info *myinfo,struct iguana_info *virt,struct iguana_txblock *txdata,struct iguana_msgtx *txarray,uint8_t *data,int32_t datalen,int32_t depth,int32_t verifyonly) { - struct iguana_peer *addr; int32_t i,hdrsi; struct iguana_bundle *bp,*prevbp; struct iguana_block *block; + struct iguana_peer *addr; int32_t i,hdrsi; struct iguana_bundle *bp=0,*prevbp; struct iguana_block *block; if ( (block= iguana_blockhashset("gecko_hwmset",virt,txdata->zblock.height,txdata->zblock.RO.hash2,1)) != 0 ) { iguana_blockcopy(virt->chain->zcash,virt->chain->auxpow,virt,block,(struct iguana_block *)&txdata->zblock); @@ -132,7 +132,7 @@ int32_t gecko_hwmset(struct supernet_info *myinfo,struct iguana_info *virt,struc printf("no bundle for %s.%d\n",virt->symbol,block->height); return(-1); } - if ( iguana_ramchain_data(virt,addr,txdata,txarray,block->RO.txn_count,data,datalen) >= 0 ) + if ( iguana_ramchain_data(virt,addr,txdata,txarray,block->RO.txn_count,data,datalen,bp,block) >= 0 ) { block->fpipbits = (uint32_t)addr->ipbits; block->RO.recvlen = datalen; @@ -169,7 +169,7 @@ int32_t gecko_hwmset(struct supernet_info *myinfo,struct iguana_info *virt,struc prevbp->emitfinish = (uint32_t)(time(NULL) - 3600); iguana_bundlepurgefiles(virt,prevbp); iguana_savehdrs(virt); - iguana_bundlevalidate(virt,prevbp,1); + iguana_bundlevalidate(myinfo,virt,prevbp,1); for (i=0; iRO.txn_count; i++) gecko_txidpurge(virt,txarray[i].txid); } @@ -186,7 +186,7 @@ char *gecko_blockarrived(struct supernet_info *myinfo,struct iguana_info *virt,c struct iguana_txblock txdata; int32_t height,valid,adjacent,gap,n,i,j,len = -1; struct iguana_block *block,*prev; struct iguana_txid tx; char str[65],str2[65]; bits256 txid,threshold; struct iguana_msgtx *txs; memset(&txdata,0,sizeof(txdata)); iguana_memreset(&virt->TXMEM); - if ( (n= iguana_gentxarray(virt,&virt->TXMEM,&txdata,&len,data,datalen)) == datalen || n == datalen-1 ) + if ( (n= iguana_gentxarray(myinfo,virt,&virt->TXMEM,&txdata,&len,data,datalen)) == datalen || n == datalen-1 ) { if ( bits256_cmp(hash2,txdata.zblock.RO.hash2) != 0 ) { @@ -212,7 +212,7 @@ char *gecko_blockarrived(struct supernet_info *myinfo,struct iguana_info *virt,c } else printf("%s is new txid ht.%d i.%d\n",bits256_str(str,txid),virt->blocks.hwmchain.height,i); } txdata.zblock.RO.allocsize = iguana_ROallocsize(virt); - if ( iguana_blockvalidate(virt,&valid,(struct iguana_block *)&txdata.zblock,1) < 0 ) + if ( iguana_blockvalidate(myinfo,virt,&valid,(struct iguana_block *)&txdata.zblock,1) < 0 ) { char str[65]; printf("got block that doesnt validate? %s\n",bits256_str(str,txdata.zblock.RO.hash2)); return(clonestr("{\"error\":\"gecko block didnt validate\"}")); @@ -312,11 +312,11 @@ char *basilisk_respond_geckoblock(struct supernet_info *myinfo,char *CMD,void *a printf("REJECT: duplicate block %s\n",bits256_str(str,hash2)); return(clonestr("{\"error\":\"duplicate block rejected\"}")); } - hdrsize = (virt->chain->zcash != 0) ? sizeof(struct iguana_msgblockhdr_zcash) : sizeof(struct iguana_msgblockhdr); + hdrsize = (virt->chain->zcash != 0) ? sizeof(struct iguana_msgzblockhdr) : sizeof(struct iguana_msgblockhdr); //nBits = gecko_nBits(virt,&prevtimestamp,(struct iguana_block *)&virt->blocks.hwmchain,GECKO_DIFFITERS); //if ( gecko_blocknonce_verify(virt,data,hdrsize,nBits,virt->blocks.hwmchain.RO.timestamp,prevtimestamp) > 0 ) { - iguana_rwblock(symbol,virt->chain->zcash,virt->chain->auxpow,virt->chain->hashalgo,0,&checkhash2,data,&msg,datalen); + iguana_rwblock(myinfo,symbol,virt->chain->zcash,virt->chain->auxpow,virt->chain->hashalgo,0,&checkhash2,data,(void *)&msg,datalen); if ( bits256_cmp(hash2,checkhash2) == 0 ) { if ( gecko_blocknonce_verify(virt,data,hdrsize,msg.H.bits,0,0) > 0 ) @@ -341,7 +341,7 @@ int32_t basilisk_blocksubmit(struct supernet_info *myinfo,struct iguana_info *bt if ( jobj(retjson,"error") == 0 ) { valsobj = cJSON_CreateObject(); - jaddnum(valsobj,"minresults",NUMRELAYS - 1); + jaddnum(valsobj,"numrequired",NUMRELAYS - 1); jaddnum(valsobj,"timeout",3000); jaddnum(valsobj,"fanout",-1); jaddnum(valsobj,"height",height); diff --git a/gecko/gecko_headers.c b/gecko/gecko_headers.c index 520a3253b..e916b622d 100755 --- a/gecko/gecko_headers.c +++ b/gecko/gecko_headers.c @@ -28,7 +28,7 @@ int32_t basilisk_respond_geckogetheaders(struct supernet_info *myinfo,struct igu { if ( block != 0 ) { - if ( (n= iguana_headerget(virt,&serialized[len],maxsize-len,block)) > 0 ) + if ( (n= iguana_headerget(myinfo,virt,&serialized[len],maxsize-len,block)) > 0 ) len += n; } hash2 = iguana_blockhash(virt,height+i+1); @@ -53,7 +53,7 @@ void gecko_blockhashupdate(struct iguana_info *virt,bits256 hash2,int32_t height char *gecko_headersarrived(struct supernet_info *myinfo,struct iguana_info *virt,char *remoteaddr,uint8_t *data,int32_t datalen,bits256 firsthash2) { - bits256 hash2,prevhash2; struct iguana_block *block; int32_t height,firstheight,i,len=0,n,num; struct iguana_msgblock msgB; char str[65],str2[65]; + bits256 hash2,prevhash2; struct iguana_block *block; int32_t height,firstheight,i,len=0,n,num; struct iguana_msgzblock zmsgB; char str[65],str2[65]; num = (int32_t)(datalen / 84); printf("headers.%s arrived.%d from %s\n",virt->symbol,num,bits256_str(str,firsthash2)); if ( (block= iguana_blockfind("geckohdrs",virt,firsthash2)) != 0 && (firstheight= block->height) >= 0 ) @@ -62,14 +62,14 @@ char *gecko_headersarrived(struct supernet_info *myinfo,struct iguana_info *virt prevhash2 = firsthash2; for (i=0; isymbol,virt->chain->zcash,virt->chain->auxpow,virt->chain->hashalgo,0,&hash2,&data[len],&msgB,datalen-len)) > 0 ) + if ( (n= iguana_rwblock(myinfo,virt->symbol,virt->chain->zcash,virt->chain->auxpow,virt->chain->hashalgo,0,&hash2,&data[len],&zmsgB,datalen-len)) > 0 ) { - if ( bits256_cmp(msgB.H.prev_block,prevhash2) == 0 ) + if ( bits256_cmp(zmsgB.zH.prev_block,prevhash2) == 0 ) { height = (firstheight + i + 1); gecko_blockhashupdate(virt,hash2,height); - printf("ht.%d %s %08x t.%u\n",height,bits256_str(str,hash2),msgB.H.bits,msgB.H.timestamp); - } else printf("ht.%d non prevhash i.%d %s %s\n",height,i,bits256_str(str,prevhash2),bits256_str(str2,msgB.H.prev_block)); + printf("ht.%d %s\n",height,bits256_str(str,hash2)); + } else printf("ht.%d non prevhash i.%d %s %s\n",height,i,bits256_str(str,prevhash2),bits256_str(str2,zmsgB.zH.prev_block)); len += n; prevhash2 = hash2; } diff --git a/gecko/gecko_mempool.c b/gecko/gecko_mempool.c index ce953211d..7bd5fbcf8 100755 --- a/gecko/gecko_mempool.c +++ b/gecko/gecko_mempool.c @@ -226,10 +226,10 @@ int32_t basilisk_respond_geckogettx(struct supernet_info *myinfo,struct iguana_i char *gecko_txarrived(struct supernet_info *myinfo,struct iguana_info *virt,char *remoteaddr,uint8_t *serialized,int32_t datalen,bits256 txid) { - struct gecko_mempool *pool; int64_t txfee,vinstotal,voutstotal; uint64_t value; int32_t i,numvins,numvouts,txlen,spentheight,minconf,maxconf,unspentind; struct iguana_msgtx msg; char *rawtx; struct gecko_memtx *memtx; struct iguana_info *btcd; struct iguana_outpoint outpt; + struct gecko_mempool *pool; int64_t txfee,vinstotal,voutstotal; uint64_t value; int32_t i,numvins,numvouts,txlen,spentheight,minconf,maxconf; struct iguana_msgtx msg; char *rawtx; struct gecko_memtx *memtx; struct iguana_info *btcd; struct iguana_outpoint outpt; memset(&msg,0,sizeof(msg)); iguana_memreset(&virt->TXMEM); - txlen = iguana_rwtx(virt->chain->zcash,0,&virt->TXMEM,serialized,&msg,datalen,&txid,virt->chain->isPoS,strcmp("VPN",virt->symbol) == 0); + txlen = iguana_rwtx(myinfo,virt->chain->zcash,0,virt,&virt->TXMEM,serialized,&msg,datalen,&txid,virt->chain->isPoS,strcmp("VPN",virt->symbol) == 0); vinstotal = voutstotal = 0; maxconf = virt->longestchain; minconf = virt->chain->minconfirms; @@ -237,11 +237,8 @@ char *gecko_txarrived(struct supernet_info *myinfo,struct iguana_info *virt,char { for (i=0; ibundlescount-1,1)) != 0 ) + if ( iguana_RTunspentindfind(myinfo,virt,&outpt,0,0,0,&value,&spentheight,msg.vins[i].prev_hash,msg.vins[i].prev_vout,virt->bundlescount-1,1) == 0 ) { - memset(&outpt,0,sizeof(outpt)); - outpt.hdrsi = spentheight / virt->chain->bundlesize; - outpt.unspentind = unspentind; if ( iguana_unspentavail(myinfo,virt,outpt,minconf,maxconf) != value ) { printf("vin.%d already spent\n",i); diff --git a/gecko/gecko_miner.c b/gecko/gecko_miner.c index f77193f93..f8c1dfec7 100755 --- a/gecko/gecko_miner.c +++ b/gecko/gecko_miner.c @@ -215,20 +215,20 @@ char *gecko_blockconstruct(struct supernet_info *myinfo,struct iguana_info *virt threshold = bits256_from_compact(newblock->RO.bits); if ( (newblock->RO.nonce= *noncep) == 0 ) { - struct iguana_msgblock msg; - memset(&msg,0,sizeof(msg)); - msg.H.version = newblock->RO.version; - msg.H.prev_block = newblock->RO.prev_block; - msg.H.merkle_root = newblock->RO.merkle_root; - msg.H.timestamp = newblock->RO.timestamp; - msg.H.bits = newblock->RO.bits; + struct iguana_msgzblock zmsg; struct iguana_msgblock *msg = (void *)&zmsg; + memset(&zmsg,0,sizeof(zmsg)); + msg->H.version = newblock->RO.version; + msg->H.prev_block = newblock->RO.prev_block; + msg->H.merkle_root = newblock->RO.merkle_root; + msg->H.timestamp = newblock->RO.timestamp; + msg->H.bits = newblock->RO.bits; for (i=0; iH.nonce = *noncep; //n = iguana_serialize_block(virt->chain,&hash2,serialized,newblock); //char str[65]; printf("nonce.%08x %s\n",newblock->RO.nonce,bits256_str(str,newblock->RO.hash2)); - len = iguana_rwblockhdr(1,virt->chain->zcash,serialized,&msg); + len = iguana_rwblockhdr(1,virt->chain->zcash,serialized,&zmsg); hash2 = iguana_calcblockhash(virt->symbol,virt->chain->hashalgo,serialized,len); if ( bits256_cmp(threshold,hash2) > 0 ) { @@ -247,7 +247,7 @@ char *gecko_blockconstruct(struct supernet_info *myinfo,struct iguana_info *virt } } newblock->RO.nonce = *noncep; - n = iguana_serialize_block(virt->chain,&newblock->RO.hash2,serialized,newblock); + n = iguana_serialize_block(myinfo,virt->chain,&newblock->RO.hash2,serialized,newblock); while ( 1 && time(NULL) <= newblock->RO.timestamp + GECKO_MAXFUTUREBLOCK ) { //printf("wait for block to be close enough to now: lag %ld\n",time(NULL) - newblock->RO.timestamp); diff --git a/iguana.vcxproj b/iguana.vcxproj new file mode 100644 index 000000000..2aa68ff94 --- /dev/null +++ b/iguana.vcxproj @@ -0,0 +1,297 @@ + + + + + Debug + Win32 + + + Release + Win32 + + + Debug + x64 + + + Release + x64 + + + + {80F58B93-D1FC-4FC4-A880-1F40A1FC851B} + Win32Proj + ConsoleApplication3 + 8.1 + iguana + + + + Application + true + v140 + Unicode + + + Application + false + v140 + true + Unicode + + + Application + true + v140 + Unicode + + + Application + false + v140 + true + Unicode + + + + + + + + + + + + + + + + + + + + + true + + + true + + + false + + + false + + + + + + Level2 + Disabled + _CRT_SECURE_NO_WARNINGS;NATIVE_WINDOWS;WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions) + 1Byte + + + Console + true + Ws2_32.lib;%(AdditionalDependencies) + + + + + + + Level3 + Disabled + _DEBUG;_CONSOLE;%(PreprocessorDefinitions) + 1Byte + + + Console + true + + + + + Level3 + + + MaxSpeed + true + true + _CRT_SECURE_NO_WARNINGS;NATIVE_WINDOWS;WIN32;_CONSOLE;NDEBUG;%(PreprocessorDefinitions) + + + Console + true + true + true + Ws2_32.lib;%(AdditionalDependencies) + + + + + Level3 + + + MaxSpeed + true + true + _CRT_SECURE_NO_WARNINGS;NATIVE_WINDOWS;WIN32;_CONSOLE;NDEBUG;%(PreprocessorDefinitions) + 1Byte + + + Console + true + true + true + Ws2_32.lib;%(AdditionalDependencies) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/iguana.vcxproj.filters b/iguana.vcxproj.filters new file mode 100644 index 000000000..da9ab88db --- /dev/null +++ b/iguana.vcxproj.filters @@ -0,0 +1,146 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/iguana/SuperNET_keys.c b/iguana/SuperNET_keys.c index 0e7b8d077..be283118e 100755 --- a/iguana/SuperNET_keys.c +++ b/iguana/SuperNET_keys.c @@ -309,7 +309,7 @@ int32_t _SuperNET_encryptjson(struct supernet_info *myinfo,char *destfname,char wallet2shared = SuperNET_wallet2shared(wallethash,wallet2priv); wallet2pub = curve25519(wallet2shared,curve25519_basepoint9()); sprintf(destfname,"%s/%s",GLOBAL_CONFSDIR,bits256_str(str,wallet2pub)); - printf("SAVE ARGJSON.(%s) [%s, %s] -> destfname.(%s)\n",jprint(argjson,0),passphrase,fname2fa,destfname); + //printf("SAVE ARGJSON.(%s) [%s, %s] -> destfname.(%s)\n",jprint(argjson,0),passphrase,fname2fa,destfname); //printf("shared.%llx -> pub.%s\n",(long long)wallet2shared.txid,bits256_str(str,wallet2pub)); SuperNET_savejsonfile(myinfo,destfname,wallethash,wallet2pub,argjson); return(0); diff --git a/iguana/coins/allofus b/iguana/coins/allofus index 3671efb31..3a266ad55 100755 --- a/iguana/coins/allofus +++ b/iguana/coins/allofus @@ -17,3 +17,11 @@ sleep 5 ../agents/iguana coins/genuno.json & sleep 5 ../agents/iguana coins/genzet.json & +sleep 5 +../agents/iguana coins/genbtm.json & +sleep 5 +../agents/iguana coins/gencarb.json & +sleep 5 +../agents/iguana coins/genanc.json & +sleep 5 +../agents/iguana coins/genfrk.json & diff --git a/iguana/coins/basilisk b/iguana/coins/basilisk index eedabcbdc..6306b6456 100755 --- a/iguana/coins/basilisk +++ b/iguana/coins/basilisk @@ -1,4 +1,4 @@ -curl --url "http://127.0.0.1:7778" --data "{\"poll\":100,\"active\":1,\"agent\":\"iguana\",\"method\":\"addcoin\",\"newcoin\":\"BTCD\",\"startpend\":1,\"endpend\":1,\"services\":128,\"maxpeers\":16,\"RELAY\":0,\"VALIDATE\":0,\"portp2p\":14631}" -curl --url "http://127.0.0.1:7778" --data "{\"prefetchlag\":5,\"poll\":100,\"active\":1,\"agent\":\"iguana\",\"method\":\"addcoin\",\"newcoin\":\"BTC\",\"startpend\":1,\"endpend\":1,\"services\":128,\"maxpeers\":16,\"RELAY\":0,\"VALIDATE\":0,\"portp2p\":8333}" -curl --url "http://127.0.0.1:7778" --data "{\"RELAY\":0,\"VALIDATE\":0,\"prefetchlag\":11,\"poll\":100,\"active\":1,\"agent\":\"iguana\",\"method\":\"addcoin\",\"startpend\":1,\"endpend\":1,\"services\":128,\"maxpeers\":16,\"newcoin\":\"LTC\",\"name\":\"Litecoin\",\"hasheaders\":1,\"useaddmultisig\":0,\"netmagic\":\"fbc0b6db\",\"p2p\":9333,\"rpc\":9334,\"pubval\":48,\"p2shval\":5,\"wifval\":176,\"txfee_satoshis\":\"100000\",\"isPoS\":0,\"minoutput\":10000,\"minconfirms\":2,\"genesishash\":\"12a765e31ffd4059bada1e25190f6e98c99d9714d334efa41a195a7e7e04bfe2\",\"genesis\":{\"version\":1,\"timestamp\":1317972665,\"nBits\":\"1e0ffff0\",\"nonce\":2084524493,\"merkle_root\":\"97ddfbbae6be97fd6cdf3e7ca13232a3afff2353e29badfab7f73011edd4ced9\"},\"alertpubkey\":\"040184710fa689ad5023690c80f3a49c8f13f8d45b8c857fbcbc8bc4a8e4d3eb4b10f4d4604fa08dce601aaf0f470216fe1b51850b4acf21b179c45070ac7b03a9\",\"protover\":70002}" +curl --url "http://127.0.0.1:7778" --data "{\"poll\":100,\"active\":1,\"agent\":\"iguana\",\"method\":\"addcoin\",\"newcoin\":\"BTCD\",\"startpend\":1,\"endpend\":1,\"services\":128,\"maxpeers\":16,\"RELAY\":0,\"VALIDATE\":0,\"portp2p\":14631,\"rpc\":14632}" +#curl --url "http://127.0.0.1:7778" --data "{\"prefetchlag\":5,\"poll\":100,\"active\":1,\"agent\":\"iguana\",\"method\":\"addcoin\",\"newcoin\":\"BTC\",\"startpend\":1,\"endpend\":1,\"services\":128,\"maxpeers\":16,\"RELAY\":0,\"VALIDATE\":0,\"portp2p\":8333}" +#curl --url "http://127.0.0.1:7778" --data "{\"RELAY\":0,\"VALIDATE\":0,\"prefetchlag\":11,\"poll\":100,\"active\":1,\"agent\":\"iguana\",\"method\":\"addcoin\",\"startpend\":1,\"endpend\":1,\"services\":128,\"maxpeers\":16,\"newcoin\":\"LTC\",\"name\":\"Litecoin\",\"hasheaders\":1,\"useaddmultisig\":0,\"netmagic\":\"fbc0b6db\",\"p2p\":9333,\"rpc\":9334,\"pubval\":48,\"p2shval\":5,\"wifval\":176,\"txfee_satoshis\":\"100000\",\"isPoS\":0,\"minoutput\":10000,\"minconfirms\":2,\"genesishash\":\"12a765e31ffd4059bada1e25190f6e98c99d9714d334efa41a195a7e7e04bfe2\",\"genesis\":{\"version\":1,\"timestamp\":1317972665,\"nBits\":\"1e0ffff0\",\"nonce\":2084524493,\"merkle_root\":\"97ddfbbae6be97fd6cdf3e7ca13232a3afff2353e29badfab7f73011edd4ced9\"},\"alertpubkey\":\"040184710fa689ad5023690c80f3a49c8f13f8d45b8c857fbcbc8bc4a8e4d3eb4b10f4d4604fa08dce601aaf0f470216fe1b51850b4acf21b179c45070ac7b03a9\",\"protover\":70002}" diff --git a/iguana/coins/genanc b/iguana/coins/genanc old mode 100644 new mode 100755 diff --git a/iguana/coins/genanc.json b/iguana/coins/genanc.json old mode 100644 new mode 100755 diff --git a/iguana/coins/genblk b/iguana/coins/genblk new file mode 100755 index 000000000..1103b8501 --- /dev/null +++ b/iguana/coins/genblk @@ -0,0 +1 @@ +curl --url "http://127.0.0.1:7778" --data "{\"RELAY\":1,\"VALIDATE\":1,\"prefetchlag\":-1,\"poll\":10,\"active\":1,\"agent\":\"iguana\",\"method\":\"addcoin\",\"maxpeers\":256,\"newcoin\":\"BLK\",\"name\":\"BlackCoin\",\"netmagic\":\"70352205\",\"p2p\":15714,\"rpc\":15715,\"pubval\":25,\"p2shval\":85,\"wifval\":153,\"txfee_satoshis\":\"10000\",\"minconfirms\":2,\"genesishash\":\"000001faef25dec4fbcf906e6242621df2c183bf232f263d0ba5b101911e4563\",\"genesis\":{\"hashalgo\":\"scrypt\",\"version\":1,\"timestamp\":1393221600,\"nBits\":\"1e0fffff\",\"nonce\":164482,\"merkle_root\":\"12630d16a97f24b287c8c2594dda5fb98c9e6c70fc61d44191931ea2aa08dc90\"},\"alertpubkey\":\"0486bce1bac0d543f104cbff2bd23680056a3b9ea05e1137d2ff90eeb5e08472eb500322593a2cb06fbf8297d7beb6cd30cb90f98153b5b7cce1493749e41e0284\",\"isPoS\":1}" diff --git a/iguana/coins/genbtc b/iguana/coins/genbtc index 64552503f..9ffd8b2f1 100755 --- a/iguana/coins/genbtc +++ b/iguana/coins/genbtc @@ -1 +1 @@ -curl --url "http://127.0.0.1:7778" --data "{\"prefetchlag\":5,\"poll\":1,\"active\":1,\"agent\":\"iguana\",\"method\":\"addcoin\",\"newcoin\":\"BTC\",\"startpend\":64,\"endpend\":2,\"services\":128,\"maxpeers\":512,\"RELAY\":1,\"VALIDATE\":1,\"portp2p\":8333}" +curl --url "http://127.0.0.1:7778" --data "{\"prefetchlag\":11,\"poll\":1,\"active\":1,\"agent\":\"iguana\",\"method\":\"addcoin\",\"newcoin\":\"BTC\",\"startpend\":64,\"endpend\":64,\"services\":129,\"maxpeers\":512,\"RELAY\":1,\"VALIDATE\":1,\"portp2p\":8333}" diff --git a/iguana/coins/genbtc.json b/iguana/coins/genbtc.json index a45c9ba8d..94931216a 100755 --- a/iguana/coins/genbtc.json +++ b/iguana/coins/genbtc.json @@ -1 +1 @@ -{"numhelpers":8,"prefetchlag":-1,"poll":1,"active":1,"agent":"iguana","method":"addcoin","newcoin":"BTC","startpend":512,"endpend":512,"services":129,"maxpeers":512,"RELAY":1,"VALIDATE":1,"portp2p":8333} +{"numhelpers":1,"prefetchlag":11,"poll":1,"active":1,"agent":"iguana","method":"addcoin","newcoin":"BTC","startpend":16,"endpend":16,"services":129,"maxpeers":512,"RELAY":1,"VALIDATE":1,"portp2p":8333} diff --git a/iguana/coins/genbtc8.json b/iguana/coins/genbtc8.json new file mode 100755 index 000000000..2778078d9 --- /dev/null +++ b/iguana/coins/genbtc8.json @@ -0,0 +1 @@ +{"numhelpers":8,"prefetchlag":11,"poll":1,"active":1,"agent":"iguana","method":"addcoin","newcoin":"BTC","startpend":16,"endpend":16,"services":129,"maxpeers":512,"RELAY":1,"VALIDATE":1,"portp2p":8333} diff --git a/iguana/coins/genbtcd b/iguana/coins/genbtcd index 46dab365f..0278e1725 100755 --- a/iguana/coins/genbtcd +++ b/iguana/coins/genbtcd @@ -1 +1 @@ -curl --url "http://127.0.0.1:7778" --data "{\"prefetchlag\":-1,\"poll\":50,\"active\":1,\"agent\":\"iguana\",\"method\":\"addcoin\",\"newcoin\":\"BTCD\",\"startpend\":8,\"endpend\":4,\"services\":129,\"maxpeers\":64,\"RELAY\":1,\"VALIDATE\":1,\"portp2p\":14631,\"rpc\":14632}" +curl --url "http://127.0.0.1:7778" --data "{\"prefetchlag\":11,\"poll\":50,\"active\":1,\"agent\":\"iguana\",\"method\":\"addcoin\",\"newcoin\":\"BTCD\",\"startpend\":64,\"endpend\":64,\"services\":129,\"maxpeers\":512,\"RELAY\":1,\"VALIDATE\":1,\"portp2p\":14631,\"rpc\":14632,\"minconfirms\":7}" diff --git a/iguana/coins/genbtcdsigs b/iguana/coins/genbtcdsigs new file mode 100755 index 000000000..662f95c1c --- /dev/null +++ b/iguana/coins/genbtcdsigs @@ -0,0 +1 @@ +curl --url "http://127.0.0.1:7778" --data "{\"prefetchlag\":-1,\"poll\":50,\"active\":1,\"agent\":\"iguana\",\"method\":\"addcoin\",\"newcoin\":\"BTCD\",\"startpend\":8,\"endpend\":4,\"services\":129,\"maxpeers\":64,\"RELAY\":1,\"VALIDATE\":2,\"portp2p\":14631,\"rpc\":14632}" diff --git a/iguana/coins/genbtm b/iguana/coins/genbtm old mode 100644 new mode 100755 diff --git a/iguana/coins/genbtm.json b/iguana/coins/genbtm.json old mode 100644 new mode 100755 diff --git a/iguana/coins/gencarb b/iguana/coins/gencarb old mode 100644 new mode 100755 diff --git a/iguana/coins/gencarb.json b/iguana/coins/gencarb.json old mode 100644 new mode 100755 diff --git a/iguana/coins/genfrk b/iguana/coins/genfrk old mode 100644 new mode 100755 diff --git a/iguana/coins/genfrk.json b/iguana/coins/genfrk.json old mode 100644 new mode 100755 diff --git a/iguana/coins/gengmc b/iguana/coins/gengmc index 688b18f50..23bf12a35 100755 --- a/iguana/coins/gengmc +++ b/iguana/coins/gengmc @@ -1 +1 @@ -curl --url "http://127.0.0.1:7778" --data "{\"startpend\":8,\"endpend\":2,\"services\":129,\"RELAY\":1,\"VALIDATE\":1,\"prefetchlag\":-1,\"poll\":10,\"active\":1,\"agent\":\"iguana\",\"method\":\"addcoin\",\"maxpeers\":256,\"newcoin\":\"GMC\",\"name\":\"GameCredits\",\"netmagic\":\"fbc0b6db\",\"p2p\":40002,\"rpc\":40001,\"pubval\":38,\"p2shval\":5,\"wifval\":166,\"txfee_satoshis\":\"100000\",\"minconfirms\":2,\"genesishash\":\"91ec5f25ee9a0ffa1af7d4da4db9a552228dd2dc77cdb15b738be4e1f55f30ee\",\"genesis\":{\"hashalgo\":\"scrypt\",\"version\":1,\"timestamp\":1392757140,\"nBits\":\"1e0ffff0\",\"nonce\":2084565393,\"merkle_root\":\"d849db99a14164f4b4c8ad6d2d8d7e2b1ba7f89963e9f4bf9fad5ff1a4754429\"},\"alertpubkey\":\"04fc9702847840aaf195de8442ebecedf5b095cdbb9bc716bda9110971b28a49e0ead8564ff0db22209e0374782c093bb899692d524e9d6a6956e7c5ecbcd68284\",\"auxpow\":1,\"protover\":80006,\"isPoS\":0}" +curl --url "http://127.0.0.1:7778" --data "{\"startpend\":8,\"endpend\":4,\"services\":129,\"RELAY\":1,\"VALIDATE\":1,\"prefetchlag\":-1,\"poll\":10,\"active\":1,\"agent\":\"iguana\",\"method\":\"addcoin\",\"maxpeers\":256,\"newcoin\":\"GMC\",\"name\":\"GameCredits\",\"netmagic\":\"fbc0b6db\",\"p2p\":40002,\"rpc\":40001,\"pubval\":38,\"p2shval\":5,\"wifval\":166,\"txfee_satoshis\":\"100000\",\"minconfirms\":2,\"genesishash\":\"91ec5f25ee9a0ffa1af7d4da4db9a552228dd2dc77cdb15b738be4e1f55f30ee\",\"genesis\":{\"hashalgo\":\"scrypt\",\"version\":1,\"timestamp\":1392757140,\"nBits\":\"1e0ffff0\",\"nonce\":2084565393,\"merkle_root\":\"d849db99a14164f4b4c8ad6d2d8d7e2b1ba7f89963e9f4bf9fad5ff1a4754429\"},\"alertpubkey\":\"04fc9702847840aaf195de8442ebecedf5b095cdbb9bc716bda9110971b28a49e0ead8564ff0db22209e0374782c093bb899692d524e9d6a6956e7c5ecbcd68284\",\"auxpow\":1,\"protover\":80006,\"isPoS\":0,\"fixit\":0}" diff --git a/iguana/coins/genkmd b/iguana/coins/genkmd new file mode 100755 index 000000000..0b2e25a0f --- /dev/null +++ b/iguana/coins/genkmd @@ -0,0 +1,2 @@ +curl --url "http://127.0.0.1:7778" --data "{\"unitval\":\"20\",\"zcash\":1,\"RELAY\":1,\"VALIDATE\":1,\"prefetchlag\":-1,\"poll\":10,\"active\":1,\"agent\":\"iguana\",\"method\":\"addcoin\",\"startpend\":8,\"endpend\":8,\"services\":129,\"maxpeers\":32,\"newcoin\":\"KMD\",\"name\":\"Komodo\",\"hasheaders\":1,\"useaddmultisig\":0,\"netmagic\":\"f9eee48d\",\"p2p\":7770,\"rpc\":7771,\"pubval\":60,\"p2shval\":85,\"wifval\":188,\"txfee_satoshis\":\"10000\",\"isPoS\":0,\"minoutput\":10000,\"minconfirms\":2,\"genesishash\":\"027e3758c3a65b12aa1046462b486d0a63bfa1beae327897f56c5cfb7daaae71\",\"protover\":170002,\"genesisblock\":\"0100000000000000000000000000000000000000000000000000000000000000000000003ba3edfd7a7b12b27ac72c3e67768f617fc81bc3888a51323a9fb8aa4b1e5e4a000000000000000000000000000000000000000000000000000000000000000029ab5f490f0f0f200b00000000000000000000000000000000000000000000000000000000000000fd4005000d5ba7cda5d473947263bf194285317179d2b0d307119c2e7cc4bd8ac456f0774bd52b0cd9249be9d40718b6397a4c7bbd8f2b3272fed2823cd2af4bd1632200ba4bf796727d6347b225f670f292343274cc35099466f5fb5f0cd1c105121b28213d15db2ed7bdba490b4cedc69742a57b7c25af24485e523aadbb77a0144fc76f79ef73bd8530d42b9f3b9bed1c135ad1fe152923fafe98f95f76f1615e64c4abb1137f4c31b218ba2782bc15534788dda2cc08a0ee2987c8b27ff41bd4e31cd5fb5643dfe862c9a02ca9f90c8c51a6671d681d04ad47e4b53b1518d4befafefe8cadfb912f3d03051b1efbf1dfe37b56e93a741d8dfd80d576ca250bee55fab1311fc7b3255977558cdda6f7d6f875306e43a14413facdaed2f46093e0ef1e8f8a963e1632dcbeebd8e49fd16b57d49b08f9762de89157c65233f60c8e38a1f503a48c555f8ec45dedecd574a37601323c27be597b956343107f8bd80f3a925afaf30811df83c402116bb9c1e5231c70fff899a7c82f73c902ba54da53cc459b7bf1113db65cc8f6914d3618560ea69abd13658fa7b6af92d374d6eca9529f8bd565166e4fcbf2a8dfb3c9b69539d4d2ee2e9321b85b331925df195915f2757637c2805e1d4131e1ad9ef9bc1bb1c732d8dba4738716d351ab30c996c8657bab39567ee3b29c6d054b711495c0d52e1cd5d8e55b4f0f0325b97369280755b46a02afd54be4ddd9f77c22272b8bbb17ff5118fedbae2564524e797bd28b5f74f7079d532ccc059807989f94d267f47e724b3f1ecfe00ec9e6541c961080d8891251b84b4480bc292f6a180bea089fef5bbda56e1e41390d7c0e85ba0ef530f7177413481a226465a36ef6afe1e2bca69d2078712b3912bba1a99b1fbff0d355d6ffe726d2bb6fbc103c4ac5756e5bee6e47e17424ebcbf1b63d8cb90ce2e40198b4f4198689daea254307e52a25562f4c1455340f0ffeb10f9d8e914775e37d0edca019fb1b9c6ef81255ed86bc51c5391e0591480f66e2d88c5f4fd7277697968656a9b113ab97f874fdd5f2465e5559533e01ba13ef4a8f7a21d02c30c8ded68e8c54603ab9c8084ef6d9eb4e92c75b078539e2ae786ebab6dab73a09e0aa9ac575bcefb29e930ae656e58bcb513f7e3c17e079dce4f05b5dbc18c2a872b22509740ebe6a3903e00ad1abc55076441862643f93606e3dc35e8d9f2caef3ee6be14d513b2e062b21d0061de3bd56881713a1a5c17f5ace05e1ec09da53f99442df175a49bd154aa96e4949decd52fed79ccf7ccbce32941419c314e374e4a396ac553e17b5340336a1a25c22f9e42a243ba5404450b650acfc826a6e432971ace776e15719515e1634ceb9a4a35061b668c74998d3dfb5827f6238ec015377e6f9c94f38108768cf6e5c8b132e0303fb5a200368f845ad9d46343035a6ff94031df8d8309415bb3f6cd5ede9c135fdabcc030599858d803c0f85be7661c88984d88faa3d26fb0e9aac0056a53f1b5d0baed713c853c4a2726869a0a124a8a5bbc0fc0ef80c8ae4cb53636aa02503b86a1eb9836fcc259823e2692d921d88e1ffc1e6cb2bde43939ceb3f32a611686f539f8f7c9f0bf00381f743607d40960f06d347d1cd8ac8a51969c25e37150efdf7aa4c2037a2fd0516fb444525ab157a0ed0a7412b2fa69b217fe397263153782c0f64351fbdf2678fa0dc8569912dcd8e3ccad38f34f23bbbce14c6a26ac24911b308b82c7e43062d180baeac4ba7153858365c72c63dcf5f6a5b08070b730adb017aeae925b7d0439979e2679f45ed2f25a7edcfd2fb77a8794630285ccb0a071f5cce410b46dbf9750b0354aae8b65574501cc69efb5b6a43444074fee116641bb29da56c2b4a7f456991fc92b2\",\"debug\":0}" + diff --git a/iguana/coins/gensxc b/iguana/coins/gensxc new file mode 100755 index 000000000..71100684d --- /dev/null +++ b/iguana/coins/gensxc @@ -0,0 +1 @@ +curl --url "http://127.0.0.1:7778" --data "{\"protover\":60002,\"RELAY\":1,\"VALIDATE\":1,\"prefetchlag\":-1,\"poll\":10,\"active\":1,\"agent\":\"iguana\",\"method\":\"addcoin\",\"maxpeers\":256,\"newcoin\":\"SXC\",\"name\":\"Sexcoin\",\"netmagic\":\"fbc0b6db\",\"p2p\":16814,\"rpc\":31812,\"pubval\":62,\"p2shval\":5,\"txfee_satoshis\":\"10000000\",\"minconfirms\":2,\"genesishash\":\"f42b9553085a1af63d659d3907a42c3a0052bbfa2693d3acf990af85755f2279\",\"genesis\":{\"version\":1,\"timestamp\":1369146359,\"nBits\":\"1e7fffff\",\"nonce\":244086,\"merkle_root\":\"661de12dc8dd26989adb169733b5a99150d52b8b6e8332976277856e246101f4\"},\"alertpubkey\":\"04a5814813115273a109cff99907ba4a05d951873dae7acb6c973d0c9e7c88911a3dbc9aa600deac241b91707e7b4ffb30ad91c8e56e695a1ddf318592988afe0a\",\"isPoS\":1}" diff --git a/iguana/coins/gensys b/iguana/coins/gensys index 209e33213..b4e5b39c6 100755 --- a/iguana/coins/gensys +++ b/iguana/coins/gensys @@ -1,2 +1,2 @@ -curl --url "http://127.0.0.1:7778" --data "{\"RELAY\":1,\"VALIDATE\":1,\"prefetchlag\":-1,\"poll\":10,\"active\":1,\"agent\":\"iguana\",\"method\":\"addcoin\",\"startpend\":18,\"endpend\":18,\"services\":129,\"maxpeers\":256,\"newcoin\":\"SYS\",\"name\":\"SYScoin\",\"hasheaders\":0,\"useaddmultisig\":0,\"netmagic\":\"f9beb4d9\",\"p2p\":8369,\"rpc\":8370,\"pubval\":0,\"p2shval\":5,\"wifval\":128,\"txfee_satoshis\":\"100000\",\"isPoS\":0,\"minoutput\":10000,\"minconfirms\":2,\"genesishash\":\"0000072d66e51ab87de265765cc8bdd2d229a4307c672a1b3d5af692519cf765\",\"genesis\":{\"version\":1,\"timestamp\":1450473723,\"nBits\":\"1e0ffff0\",\"nonce\":5258726,\"merkle_root\":\"5215c5a2af9b63f2550b635eb2b354bb13645fd8fa31275394eb161944303065\"},\"protover\":70012,\"auxpow\":1}" +curl --url "http://127.0.0.1:7778" --data "{\"RELAY\":1,\"VALIDATE\":1,\"prefetchlag\":-1,\"poll\":10,\"active\":1,\"agent\":\"iguana\",\"method\":\"addcoin\",\"startpend\":18,\"endpend\":18,\"services\":129,\"maxpeers\":256,\"newcoin\":\"SYS\",\"name\":\"SYScoin\",\"hasheaders\":0,\"useaddmultisig\":0,\"netmagic\":\"f9beb4d9\",\"p2p\":8369,\"rpc\":8370,\"pubval\":0,\"p2shval\":5,\"wifval\":128,\"txfee_satoshis\":\"100000\",\"isPoS\":0,\"minoutput\":10000,\"minconfirms\":2,\"genesishash\":\"0000072d66e51ab87de265765cc8bdd2d229a4307c672a1b3d5af692519cf765\",\"genesis\":{\"version\":1,\"timestamp\":1450473723,\"nBits\":\"1e0ffff0\",\"nonce\":5258726,\"merkle_root\":\"5215c5a2af9b63f2550b635eb2b354bb13645fd8fa31275394eb161944303065\"},\"protover\":70012,\"auxpow\":1,\"fixit\":0}" diff --git a/iguana/coins/gentaz b/iguana/coins/gentaz new file mode 100755 index 000000000..1efcd29a3 --- /dev/null +++ b/iguana/coins/gentaz @@ -0,0 +1,2 @@ +curl --url "http://127.0.0.1:7778" --data "{\"unitval\":\"20\",\"zcash\":1,\"RELAY\":1,\"VALIDATE\":1,\"prefetchlag\":-1,\"poll\":10,\"active\":1,\"agent\":\"iguana\",\"method\":\"addcoin\",\"startpend\":8,\"endpend\":8,\"services\":129,\"maxpeers\":32,\"newcoin\":\"TAZ\",\"name\":\"Test Zcash\",\"hasheaders\":1,\"useaddmultisig\":0,\"netmagic\":\"a5f1e726\",\"p2p\":18233,\"rpc\":18232,\"pubval\":111,\"p2shval\":196,\"wifval\":239,\"txfee_satoshis\":\"10000\",\"isPoS\":0,\"minoutput\":10000,\"minconfirms\":2,\"genesishash\":\"0cdf00b25a93ded11d73ebe1728cf7867f18e1f62aca9554b95e0f3026174e33\",\"protover\":170002,\"genesisblock\":\"0100000000000000000000000000000000000000000000000000000000000000000000003ba3edfd7a7b12b27ac72c3e67768f617fc81bc3888a51323a9fb8aa4b1e5e4a0000000000000000000000000000000000000000000000000000000000000000dae5494d0f0f0f200900000000000000000000000000000000000000000000000000000000000000fd4005003423da3e41f916bf3ff0ee770eb844a240361abe08a8c9d46bd30226e2ad411a4047b6ddc230d173c60537e470e24f764120f5a2778b2a1285b0727bf79a0b085ad67e6266fb38fd72ef17f827315c42f921720248c983d4100e6ebd1c4b5e8762a973bac3bec7f7153b93752ebbb465f0fc9520bcfc30f9abfe303627338fed6ede9cf1b9173a736cf270cf4d9c6999ff4c3a301a78fd50dab6ccca67a0c5c2e41f216a1f3efd049a74bbe6252f9773bc309d3f9e554d996913ce8e1cec672a1fa4ea59726b61ea9e75d5ce9aa5dbfa96179a293810e02787f26de324fe7c88376ff57e29574a55faff7c2946f3e40e451861c32bf67da7377de3136858a18f34fab1bc8da37726ca2c25fc7b312a5427554ec944da81c7e27255d6c94ade9987ff7daedc2d1cc63d7d4cf93e691d13326fb1c7ee72ccdc0b134eb665fc6a9821e6fef6a6d45e4aac6dca6b505a0100ad56ea4f6fa4cdc2f0d1b65f730104a515172e34163bdb422f99d083e6eb860cf6b3f66642c4dbaf0d0fa1dca1b6166f1d1ffaa55a9d6d6df628afbdd14f1622c1c8303259299521a253bc28fcc93676723158067270fc710a09155a1e50c533e9b79ed5edba4ab70a08a9a2fc0eef0ddae050d75776a9804f8d6ad7e30ccb66c6a98d86710ca7a4dfb4feb159484796b9a015c5764aa3509051c87f729b9877ea41f8b470898c01388ed9098b1e006d3c30fc6e7c781072fa3f75d918505ee8ca75840fc62f67c57060666aa42578a2dd022eda62e3f1e447d7364074d34fd60ad9b138f60422afa6cfcb913fd6c213b496144dbfda7bfc7c24540cfe40ad0c0fd5a8c0902127f53d3178ba1b2a87bf1224d53d3a15e49ccdf121ae872a011c996d1b9793153cdcd4c0a7e99f8a35669788551cca2b62769eda24b6b55e2f4e0ac0d30aa50ecf33c6cdb24adfc922006a7bf434ced800fefe814c94c6fc8caa37b372d5088bb31d2f6b11a7a67ad3f70abbac0d5c256b637828de6cc525978cf151a2e50798e0c591787639a030291272c9ced3ab7d682e03f8c7db51f60163baa85315789666ea8c5cd6f789a7f4a5de4f8a9dfefce20f353cec606492fde8eab3e3b487b3a3a57434f8cf252a4b643fc125c8a5948b06744f5dc306aa587bdc85364c7488235c6edddd78763675e50a9637181519be06dd30c4ba0d845f9ba320d01706fd6dd64d1aa3cd4211a4a7d1d3f2c1ef2766d27d5d2cdf8e7f5e3ea309d4f149bb737305df1373a7f5313abe5986f4aa620bec4b0065d48aafac3631de3771f5c4d2f6eec67b09d9c70a3c1969fecdb014cb3c69832b63cc9d6efa378bff0ef95ffacdeb1675bb326e698f022c1a3a2e1c2b0f05e1492a6d2b7552388eca7ee8a2467ef5d4207f65d4e2ae7e33f13eb473954f249d7c20158ae703e1accddd4ea899f026618695ed2949715678a32a153df32c08922fafad68b1895e3b10e143e712940104b3b352369f4fe79bd1f1dbe03ea9909dbcf5862d1f15b3d1557a6191f54c891513cdb3c729bb9ab08c0d4c35a3ed67d517ffe1e2b7a798521aed15ff9822169c0ec860d7b897340bc2ef4c37f7eb73bd7dafef12c4fd4e6f5dd3690305257ae14ed03df5e3327b68467775a90993e613173fa6650ffa2a26e84b3ce79606bf234eda9f4053307f344099e3b10308d3785b8726fd02d8e94c2759bebd05748c3fe7d5fe087dc63608fb77f29708ab167a13f32da251e249a544124ed50c270cfc6986d9d1814273d2f0510d0d2ea335817207db6a4a23ae9b079967b63b25cb3ceea7001b65b879263f5009ac84ab89738a5b8b71fd032beb9f297326f1f5afa630a5198d684514e242f315a4d95fa6802e82799a525bb653b80b4518ec610a5996403b1391\",\"debug\":0}" + diff --git a/iguana/coins/genvia b/iguana/coins/genvia old mode 100644 new mode 100755 diff --git a/iguana/confs/BTCD_hdrs.txt b/iguana/confs/BTCD_hdrs.txt index f73225519..6ebde857b 100644 --- a/iguana/confs/BTCD_hdrs.txt +++ b/iguana/confs/BTCD_hdrs.txt @@ -1,4 +1,4 @@ -1251510 +1287010 0 0000044966f40703b516c5af180582d53f783bfd319bb045e2dc3e05ea695d46 a5d211145f8e6ba0920b2893d307c5d7c207ae0800a80955299678d1706ea8ac 000000000c4682089c916de89eb080a877566494d4009c0089baf35fe94de22f 500 000000000680a9a697eb71155b18a5827e0889fca28afb81fcbb46469ed7877e 79f80a8f54c6762d6408347c6dd7dfd2f8b8c191077c1d7881dfc5b7ec6a408e 0000000002b868fe717dc60b8d146de4d9aecf779b7314224908566e01847769 1000 0000000000000cf908c887020f8970b7fe952f8b81164d83a87621dfdb581d08 3356ec4296ff2f04281492b0dedbaed80edeb6dd9170b87230ff79f6b0daade7 0000000000001e7c6d28962a03b3d75ffa1355ecc6d3021893b2727a1ccfc669 @@ -2334,15 +2334,15 @@ 1166000 a0fac4b306c379866b4c01b909610b9e7e1f2ca794fb5c590aaa2c83a666effc 4b67f68a8adf5d50d262ceb7a95cd82ebf00065db0ab242f696e0a082b7f8151 fa111449ad59977279759470503b67df2cdbea065862f5d3b6ca61b62a34fe1b 1166500 2c79c6b923aec6eefa4951ed06fac160d02c82caaa0a1c11bd49fd6ff59d8ead ec655e3e7f55442ae0e5282b8f91a6d2a88ee19668e0df9d92eed382eba50069 7e597d5b821b7140cd3c10445409fc1f11b4f209df0b7f394c31d7b7f9f954c8 1167000 f20f0ba0c20fab2a4990bb6d31a736d1f444457af660cdc05d133228e8d15047 2166fd932a979f00318f6616c3c2184055c29c214d49a68454be63731fb380d8 63c980d73fad3a22262d71955940980544682a37c1939e259463faae424f1b6d -1167500 a401abd7e22dd4c5857bbecffbbdb575ef2f3b1cbeaccc1ff90aa3cb7ba4d03e cd245140f4ed7ca46bd7dc30295cce6db884a18f06a644408b3122f53d85eb7b 20c8c957ce0424d4a03c4ce971c2e1bde4732d10fe316b1dcf52e3683ea914fd -1168000 169f9da4c456d381a672847adc804eaaa695bc4c50a4b536ee753bab29ed0224 8fca11c8318d16f1364d2663f6cdaaa47a92d008daa7519846f22a68fbff6d44 e66b572b3c4b692d4c2ac327643cd16fd00a7a4ecb91fa4bd2e97d23030301ec +1167500 a401abd7e22dd4c5857bbecffbbdb575ef2f3b1cbeaccc1ff90aa3cb7ba4d03e 0fad862612c685191b30b3116b3bdae78404f3cb3850f4cde5f13f7ec0db7cb5 20c8c957ce0424d4a03c4ce971c2e1bde4732d10fe316b1dcf52e3683ea914fd +1168000 169f9da4c456d381a672847adc804eaaa695bc4c50a4b536ee753bab29ed0224 952e85e8eadb2831ac7a843af4f9e11479ddb10e353bd596c25e4c10fcd6773c e66b572b3c4b692d4c2ac327643cd16fd00a7a4ecb91fa4bd2e97d23030301ec 1168500 54757c8dd834113d79ebeb28a73535972d005c345e33d34d9b9f0d1b5092d71b 3fd4ecda5d6a11063d66ce9a849038ff370c6244d14917ec8c87b2cc3e8e9142 2b9f660ccf344bc479ae9cb412b7f1af7d18e08d585f10d4eb41f77ec366e438 1169000 0408e4fe84a28338f1ac1f36fd6915bcfe05dd3a08ec6c1248c5df58542dff6d bf97ed6cc13fdb2e9817a702a24b264aaf746c67e7a7bf077376dc08ee1ab9dd 1103ca26dab6666385aa27a932c63487da46a44a6c13ee27804a22bb78d9bedf 1169500 e8e952c72e3b1730dcfcc4d73c5c7ca6f64806b1c350cf127e09b05c5e03dffb ccb974938643549c6dbd2eb11bd60cfc7c4a977f88eb2f935ab81f111500dbbe 392391fd3ae91091d658218b2866be420097c4bfaaf209f37aa1961e3e380927 1170000 74283d0f2aad17892d0d4832778bd1f3a55879d8ddbe1314e410bac40f6a6c02 59407452382c4869286b028e35e69940a81ba9c9fff7eb427c0cb4650b18e7fb 25ec2c456054fef281ac033f1160df826f8458a5f7f24be4faf503b6ab9ca070 1170500 038c3e9a4f8af3e1f89208f1e10152279998e4c56c28ee571b64c1b1a2576b11 1c50f607d118aa4bf311d63ea309ac5fd6c023bd73937dfa60ae685684d5d0ca bca5f157ce2ba2f4b2fe57e949e84052ca934dee1d685460e7a207b1ac4f1dcd 1171000 657b4ad8cda15f1fac5b96ee4c78d30d24a202cbff03b05eb42b8a64a9fb3f85 b5ab985da7441c00c83a521cc8191c7b255e45996560aa7b5614c9a85ed10382 441326a82f1c67280dbd7d42d06c41e7f2b131c9b591b7b9f95bee52dc354bb0 -1171500 57a6596c7a9b14774681db13f91c27e8d10a2a4a3afb4932bc0e99a352d616b8 a37e46a4e94337bc220479a47c7bcbcc512f9235e06f7cb3ca4af02e2d1784c2 2971d7353bedf68e705796a109ef562fd54215bff4d23e130940de8ff28b2abc +1171500 57a6596c7a9b14774681db13f91c27e8d10a2a4a3afb4932bc0e99a352d616b8 88479e26ee3bc7057bfaaeeda3b7ffe957c16b15f1556406412d28224b76c7e0 2971d7353bedf68e705796a109ef562fd54215bff4d23e130940de8ff28b2abc 1172000 c8c332595916c25863c065b8164053b7306c9b91280395899646a89ef5c7efb9 79045e4de4c46ea93c7531b2983c6cca978a870f81e69caab499819eed84ff97 1ab7491c615a897bf0e521a4da4b85476a0a578946b53af637d95a25426ba645 1172500 de2a9b82e5b0fed78938dfb45b5d03486a9e8f918bd1d10e9a5dc3a5d2ebd375 ba34eb6149f1c2d4a8fda76bea4c0126d2ffb924554b02d46a7dfa3af7a42a95 8cf00395570c76499738996b0ad071319f08337efef9ba5cad46f908b9b495d0 1173000 ba3a9dccb5269e6c3c3b4372dd5473799a479d5f1bfec6f1495704a031cb7257 a5a363ac0a854dcf3b3d461a01bbcd7c23b527a5ff7b1bd80c2556a39b1611a9 be41baa05f09e1eecb3149a981ea9fc7772546695219c581cd96e3acdd89307d @@ -2356,7 +2356,7 @@ 1177000 6ffa6c3fdfebe30cf1a7e8ef456d706423ca7370d250108a345c921a43f6d361 e96c39acf261f3f79139e4cae812888ca292b61de0f49a6f14f724458ce941a8 0d27963c7629d5e24f8848666af214eb3753764fb839bd5b3b18b6d5c9f4b4f7 1177500 21944d33335de6e7be3eab1afed00a8840ed09059769a4cc8c95ada2b739bac7 d88e2a0c9645654dfb23354a9f0f90e41735a796e184a969ee32f38e0761f0b6 bb28cb1b9f1156ec25ba4346c69f25bb4a1a30f230199fe560394344a08ff569 1178000 8766dd180ff2d647439a5cbad9b1f79ab7e85c6c9fd748eca22f707a7544985e e250fc2eef43908fd12d91b90828486f99db25f9fa749deed0b9959c3554f667 eef4af40225d005aefb2d36e2d6b6375b78ddbc16712d82598e2e4ed351c41f9 -1178500 0bfe9b952084a9906d48fc53724099d6bc735bed7b327ef362f32eebe8c59b08 4053aa9f0b929b2d3f7475fda64edbfa8a5567c3280fe8979da8cddb43e194fc acb4f384b6d271f82cd521ba1753b687b27aced918d9e5c37e4a0a2cfd91a226 +1178500 0bfe9b952084a9906d48fc53724099d6bc735bed7b327ef362f32eebe8c59b08 cd078860ede646ae1128e84b2d909892ac34570c9b1ac0eb55aae1e804425110 acb4f384b6d271f82cd521ba1753b687b27aced918d9e5c37e4a0a2cfd91a226 1179000 9052cbdd7759a7dc740c100cfbf1f599192393b4dd166177eab203eef214fd5e a64cb29918db51c90ffca1e590956df66a3b47eead5018e56b6f894376d0f1fd 583a6a580f3062017f6a7ef8b0a51fe13b2f40659101a4bb3bd4cc3ef79c327c 1179500 2d24b0b8f56ac3c5d7016923fcbb74c9a7f2bc5cae1302edcb2a02c9ead8e285 1e8ef0170644ce900729fbf779c85a9f7c4e41913f38bedc655968799c0ec061 843a1a3ac0fb093a840dd998812c3ae7e2bd420f8e10dca85e7b153a2c99f390 1180000 5d7b2c7e019293bf5b7f4c5339aec0ce4e22fe103cb50213e8e7d3f4da3b29c7 10773667c0417cb9c8fb7028d932e840525495a92f5f0872ab2270f4dcf4c4d0 5cf1307b81e3621a6df541defdb59171a59c04a70662ad0423a8549204447215 @@ -2393,7 +2393,7 @@ 1195500 c224c284a418e9c6170393789ce17221b65b2cb4d01d78bab846023b01337c1c b2e46eb9bf71fbd3559c99029d84df9410d8ee1541662ba79303029dd46189da 6f9b3fdfcab00fc669b96bb50858ba0c41fa7922f7407da5e9683dd3adbe216e 1196000 4f5e727fd3c0c4316ede3129db86b088a9fb077fe6eb3ec9ad84f40e89ddebf0 cc941087965fca35754518a5d3eb21be92bb38882150dab8476b47cb95ac5241 274de1abc69b95db66bb8e1d0fab6cda37df4a00cb676496c08c8751e1e6b86e 1196500 8d8c392d670e068ed6621469c7a4adefabf064424208671109d94edfb0f2e203 16d66ea77ce1b52ef738ab4fa793819f09ad930124dbce9dce4e5e2c701c3d41 3879592b2b19c74ce6f54476140806a4ece95a60a6e107dc2095af40a8c308ba -1197000 1599a2fb940450bab2282542cb60c30afee5c195a4c63fad5ae4c6c2c42f74b9 f022f651ab7fcff2fbe8296d9a2f802ef70de273d05bc7c2dde74666b1ecd05c 04a77a5c3839707bb9a7f96ec74f9517c5b57dc6c4d1a5af5256bb667dec44ea +1197000 1599a2fb940450bab2282542cb60c30afee5c195a4c63fad5ae4c6c2c42f74b9 248bf18b9ef28c09806607778aed8ae2777178b4d946e00a79e70948b147955a 04a77a5c3839707bb9a7f96ec74f9517c5b57dc6c4d1a5af5256bb667dec44ea 1197500 4e570d3ec2424400ad95e0c98e9dacf5c35196d851df3eb410d5af0b58fe6f98 7cd9e67d5115385506704d38c17ae7409ba050d47cf8cdc4736adb935cc0a95a ae20af61def9617941f12b4a704115ad1a030d951db13abbc77cf9377ae3f78c 1198000 d090b0121d9b30c48647797b366e547aa147195753b6d24c9823b004a35d4f40 5f6b352ba1f84934e13d2f144c8313723fe382d05f720f25a175fc3684032e92 fb7e3b75ad79622ea55fe9503327f342125f6f51f1a6aeecb249332bd0a9443a 1198500 33ffa7f777060cb4a65edc50deade02100c9ba4b044351b7cf8483335f1f33a4 6312888eafa2beeee15eba13879b11e753d460a9b54bd14c16cfbd92fed6622a 0c80a80a15684581a2f10b63a58635ae575217b04101066ed6875e519c2cc8e3 @@ -2423,7 +2423,7 @@ 1210500 65d1e575763ab257869cf3836d24033f4dc201af30420d753da99cf756afc957 04297b9ad1a6a46395ff05e3646a0774ae926119210b7f9518a34ee451ff7876 b7a78eb78dc0de0269e85aad99f6159e0c62cf1896bbbc4d57644ee6841e66e9 1211000 63f7824e59c39582208dba5f1103259d967f57347aa09e9c11a5faeaeddfd1bc 16f8e67d3344c9dff651e1a2798f7dd1b0e99e7cbc11f5e44ec98f6880cf443c b57a7be6b38c613f08919ebe694196097ee2bea41e01401fbcb98a3904362926 1211500 d899dbddf39d3b7ffb4f7fe28de5acb406d425ca8e045d3f781add82186f937a d3e071c935166ebd9ce6c5eb2c0ef7830b6774887cca37a5f1d36a2b256a05a2 c6a78f9b427a055d4a667cb08a74bdb1ab24077de9e7992c570e96c0af7daa4f -1212000 f90c9ee5bc12c59ec108657fe98e9324f9c85aa1f9cab7204edf6730d70422c3 0150577230ba870ebb96c21f7e3ec7ae1dff39cb722ed7b48cbc60d330be744a 088ff4328e9147a7563fa07206b6171840b291d53785164da29e62623b1feeba +1212000 f90c9ee5bc12c59ec108657fe98e9324f9c85aa1f9cab7204edf6730d70422c3 76812de9f7d63b6412f310ea3814b3a4aa29e4d79b85b9d5c01f3336a0a8d75d 088ff4328e9147a7563fa07206b6171840b291d53785164da29e62623b1feeba 1212500 f8cc7adcb309ff208a7a740eceb0517c8d3b3a88c06ce005b37f17ffeb4905f2 ca2fd2e44948441520e2e9bd79528e0bfb8077ce313cea0190b229e2a8977d5b de0c8389fbf4d54b78748152d6a1b909a032a7292dcb52068fc18014d973a5ce 1213000 754d66c3a3828b61aa7e5a15c8fe95981fcc17ade1030484f91c11c8610afa8d 0a736f7cbc44dea49246af39c1db3b9f98a482f3263278ccd9d7e2c42427badd 7dfaff65e0b6b9ee50eaa81d8a30304d9f258f0da1966d390cf169bdd9cee31b 1213500 a44133bc1878ee0a11110db3b1e216a32e3c1dd7871242184906e37707c4c3a4 9a49bc0837e480d6feb51cdb641412c1fbf83ebd07aedf5f5b52bcadb0262efb 41d16e41364828cf2cb397e50f0536c53f9a165f51dbac05ff80eaf2ed63f6a7 @@ -2432,8 +2432,8 @@ 1215000 aa91d090e9109a62f7bf56969cffff445b7458ba7a5d37d333ac0f6ecf33bee7 fce092c00141d26053f0cc948b1c9e6909798b2e48a5d6c2a2234455e1260ab7 1f39cd37ed092c6703ec9a4d52d68f4193f0c09277b8a60b4bbf7e0ce0a502de 1215500 4a3cba5107b521f2fec4838c56ba42075bea7b56111407c3e1a5d29f268e39c5 d148409fb60d5fda12f14be6d10aee9d40193b64d09c2990c3cb5a457ef18cf9 bf15c48150f64d7002923b94b5cacf0ba7ebd9ec8d5e47aad52fab003e70506a 1216000 2a224b00ee3a56ee499bba718b11b688f789d44a11c42b566464204f51f2ec33 0769fbba3f55367e95375dfefa08dcab6f53c9c5e5609a0422f73d75f04a4f53 40d9e49dd70d4f1aebce07bf99ed706b3adaa207d2eab29c843e7bca0e69f9e7 -1216500 d9943902065c4b0823cd64a62d37b532c6d62d0ed1d8828927ac39089207b9ae c83f557b4e2cc04d4375f91003054dbca728cbd9626fa9e9420ecc77aeb70e6f 32fe72cc551ce71177df0895e2f384649fa4f137e4d6f7b6c93eec53d2eee53d -1217000 382d47307ca74e43ab3cf0152c65cdf01ea2348b1ea1b25113e6b5fdda458a34 835103782e04e0e8bd18c741ecd1a8238eee814973ab7ad40eebe58e2fffc100 5f1d7ac4471b7dbf2927f5a3dc7212cc025e8deb674f87559ae7bb80c81ba2c4 +1216500 d9943902065c4b0823cd64a62d37b532c6d62d0ed1d8828927ac39089207b9ae a5acc122a9f9a8969f84685d22e76d090f5c4ea7bac3fbdeb32d56535570ed7b 32fe72cc551ce71177df0895e2f384649fa4f137e4d6f7b6c93eec53d2eee53d +1217000 382d47307ca74e43ab3cf0152c65cdf01ea2348b1ea1b25113e6b5fdda458a34 38b01c4fd857554451c9e4f7481ef4dc491e230779bb1efa92f7fc6ce58955d8 5f1d7ac4471b7dbf2927f5a3dc7212cc025e8deb674f87559ae7bb80c81ba2c4 1217500 2e165b64031b2e689a8e6cf9b24f4a928d7f9de6777ce918aaaf99991562c603 84f608ddd07f0e6c7307570ad6ec5bb0b7361c779d1c18e8cb0c9e08a29cee0c 0ea9e4d3b33c19fbda78146bc486343b4717edf67573392742a697bbf34778ed 1218000 c62fb3c42177536ab92a97c2d8fc21f72ca1499aca8bc9b604d8265cd8630771 375f71108b5160a7a7990288ef3394cdcfcfcf77955f21f28368d101ba93eb66 b51ab010fef2ea591827977f896d80a4dd63cf94bded139805169c581849068f 1218500 a162e27d52028d27ace91149cd6526e41f6ac23e67378f81f51836f7326fed9d 28c6848464f675c93a357833cbd7af6fe0d1881723c9b1dfa731a7ee2c08536f 898dea8a454aa96a0931532a0eb7e181de7f83359f7433c520e4693b5fdf4948 @@ -2444,15 +2444,15 @@ 1221000 fada98b054fa44944ae7f458255ac03af0bbef0f4711e0fea4dcb3071f4af719 ff619e93f10311744a6bad4ce2add55afb6c258beb2570d825489a6901c493b4 b6ff3aa01bcdbc9e4206838490e78dc4ac9ed06171dcdbbaf7807211fb3047bf 1221500 867936e9456a796ae62e181d029e150d63ed8d7fa0b91dc96f0610101e96bb07 f283a4dd8854af5b6419c79ce98c6326283ef8b8f3295d8912c5465cb99c9b7a af190d37c2900db674adacdc741c59fbd8431bd71cc6cb70cf420f616964b083 1222000 92d956413724e3e5fc5e7386ec1f9717fb6f080203d7cd464cbc1cc46e40b1a1 d2212c160766ac9464f0f3b7433614303114af00a95d746177ce70af39b97fdf ac8bf70a3e63d097dcc407247331b10d4fe125d9b53358079b3e0ee7900af8b8 -1222500 988b9749da4643c17df869d68c4c6afc39c6427bc79eea82a2c2d23262319003 b2e29bbb854e916e259c68907d86603bea9f63c174cca8483cd6a806e0687cc1 016cda454ed0574524c3ec1cc40c5aac64f90ab0cb7599669ad04793021a48af -1223000 ba1cfd983bae07bb33f094aa313ad4e27773ab1316291ed338ec784638a17fa0 6a6e92ab4ba2174d2fa9ea9d518f1dba0d7b4b02b6f208cdcb191cc8d9743ff6 56a23b35c73f1a6a2f63530304cf2b4a7b314d8c44911337c7529a3bb72c2999 +1222500 988b9749da4643c17df869d68c4c6afc39c6427bc79eea82a2c2d23262319003 63383c371f1f25f45ec916233c94344c0030962306379ea8d9c90c925b3d7daa 016cda454ed0574524c3ec1cc40c5aac64f90ab0cb7599669ad04793021a48af +1223000 ba1cfd983bae07bb33f094aa313ad4e27773ab1316291ed338ec784638a17fa0 e65128c850a743e68dcd65aaefb16e71eae209d940250b98e390e32d6d96a281 56a23b35c73f1a6a2f63530304cf2b4a7b314d8c44911337c7529a3bb72c2999 1223500 c9d4b54460eebaebe3dac55af5a41c92b93f2cbce7dc15a6a83d0ce32624da27 a7dc5399fff2ecf6f31036f2859a8fd6dd455cba0f36cb066198d196366a07e0 38742e5537cbdede5af65f69ba51e038fd50a4861daf98eefdf2547f92d30091 1224000 9eced849f18584d868e2b2203d7c8e670ec4b3de64040d4a83107bd4f83478ac b7833aa659aced32c8af2cede17974e2034248b77e1d8234e353f25aa2ac0f58 e61b4c8274aaa6954ffa72836f4b6f2a765bf42dc4480dd60321addfaefda699 1224500 e8efa9a9da8c7457cefe2c10edbe2ea4b9d41b1db527fedbda3cd04321a5c111 e957aee3ef528beac7121c3104a2a43fa436c729322b813de1d67312680d4083 bb24fb54ae90008799f9aca682ab21eac31ae86d517e2d332c7a9ea814a61730 1225000 4e12cd3ab7e05f9e285315c668939da5701bf4fb82d36d6d3e594de1cd0900c5 eb57dc646237d51bd9a1a2f8cb8c7f9d886f4f2cecf5d357a84ed677a2f261d2 1d313c9945672934be9457c33f639259391e674f70a03af4dcaa90adaedeff33 1225500 c688db4d88ed9d2df5c2f27c6835603c51901d117b6d1b84e758ed295fa48944 9a8422e25e95aff28f97a49c8c92b710d2444263b8d2da7a0808d175c0ee4347 c11b772a420b555ac5e6b924ad5c423f163ebffb82dae741a238d989b634e52f 1226000 c4e1d256b6489e0bfba212ee15761336138eecf8979b7723efa734ee1ff26b18 1e448b947cbdefc052935c120b1f5c6ea572b9b6e57db325ef6854f6d3163c43 a7577442c1b52b71f18ec372828203737f4135d9860b9b1cd4c37817e8a241d0 -1226500 97c6e37ce3aaede301449d315b6121ad209d7c05bf1e1009e28ca4c9d9103c60 9210e0c390ee24dbac3246141271a88596a901e27e827c8ea57e3a5c7a75e4a2 6eaf28adcb51c7a25e69644a00d3aa5cfadb46b5561f47befd9dd8f469dd0373 +1226500 97c6e37ce3aaede301449d315b6121ad209d7c05bf1e1009e28ca4c9d9103c60 bc898655ff32b905aa999fd3341f0ca399cdf4aa3997be7d83f3d4dc6e4dafda 6eaf28adcb51c7a25e69644a00d3aa5cfadb46b5561f47befd9dd8f469dd0373 1227000 329572ad3b9215cd69211538c61554eccfdad3bb5d2580d7319bd4e610a178b5 f2ac70bcea88b98c36bcdd15d050ea30f4ab11690e125ea3b9edb317a05312ba c55ee0f1638c5e7164ce7f58f5a39b36fbd7800576af58591468dd72848e4e9f 1227500 a116bdc25d0d36cec3fd5feeeb19ecd338d3c9db329114bf9a97e30f08bb96e6 2d1c9941a6d1fcb265b5ce131b77f4f24b3c41005531012ed24a89a271ad25fa 2589707edbce375faa11ccad06df92ddde9e531d1ef0a3633d78151b3f9d0f0a 1228000 84f4f33c057c0e992a875e7a96f06bf7c348e70730dae4d4c92ade46c2a7e116 049ed2ddedf886363d6fd427bf42206e294ccc455ff2f83fec7c10f74cb38a5c 4970249edfa5de8eb69588783f9ec8d9b20467efb4f4924d17894fb2ff3dfdbe @@ -2461,20 +2461,20 @@ 1229500 e2eee37aa2938c02f852b9ea2bf88737f87203154bfa499db7577fd97c1cbd81 ed8ec1aa4e346b93d4f5a9016a5582df83cda6d59f71c910a778dbd8087039f6 a4dca6bda7027ce0c275b175ad2a725c65ddd4cc03f997deecac29824b1bbe19 1230000 6f65311001ece9092002e408d232b04a3958a801ce14745bbb33bc50b3d3e434 e92c307817b8555133defa5001453f674d64975f118469dac59022b47b1b2875 ef025f195d124354b0987f05b7d46a547e19cbff077dd162bd1d4cc4ebc51f2a 1230500 756a4e8628e68dd8833f1160a9438b5082b81dc62d57e2fea4c7f2ad73d4d361 3f201a9f0e46b64d4ee464133e142ec08efda7d70035e2bc87a9115578f01ca9 00419dbbd698d08b0f89b4669237468bc366a853ef0bfeb9074c29d1ed4b4f73 -1231000 c8e6f0e59ddf904a7b2d085ca6cd5b1f243b75ac09ad637ba72a91125d6211d8 2c3762cb6d023147d669b4ca877aff07b7194d6da09215863f4fe199f67198c6 9bf01e88b22df0e00bff6bda68ab7087e573c3155dd093d7461f14288455ff04 -1231500 61ef9b1c57fb9764e6bf4805a520b4fb74566e1fbb4eee699f517f62e22e64b1 acc8c1c0739411ca10405ccb0c49b403967cade11fdbf8811a8ebab9e46a6e27 2d9742b07b1a54cd422958e68b59b0cd5db43a876a5063427f138386d4a7fe2d +1231000 c8e6f0e59ddf904a7b2d085ca6cd5b1f243b75ac09ad637ba72a91125d6211d8 9643bff43c642fcf08b6cfe1b08065042e7d4ff70154aa883503257d1414470e 9bf01e88b22df0e00bff6bda68ab7087e573c3155dd093d7461f14288455ff04 +1231500 61ef9b1c57fb9764e6bf4805a520b4fb74566e1fbb4eee699f517f62e22e64b1 b2df081747be0041571a8cdb62144a08408fb8911d5967717afd3117fbd5f05f 2d9742b07b1a54cd422958e68b59b0cd5db43a876a5063427f138386d4a7fe2d 1232000 391308af085a5484df59509f31a00f63833180fc69dace72a38461c8e51c0a86 f98e065e8818fd81b6b3f0a8da64ab17013dc010096e6c34ec3eb5f9fe8a3724 fa28fd3a2fc93ccc283fe42d924fc7492ec45cffec7d3eef82ea249e8a1aa855 1232500 3f8da017a3767553a874c1f2f5596700b6eebde54b1f27a119de031e94a5d70a d00e3a3b2a29c5f0f0ba83c5066cd3b0f4794a98768be0c7326fb82b17679185 994cace05d26e4ad89d275f8f45e9aa058fdccbe54d0fbbad58d87df2059089f 1233000 248b1955a1c0cf58366a949e73cd07abc509709e30a427a55e2edfff5d8c8677 88110fccf2c71332b30536569a6fc46fe183d3a2847ee627213ef66bbf0bcdd8 ccc0873dcdf1b09702ed7b3e6ffb8d00e9afa59d77e4f7f86ae0566879565b18 -1233500 381e2949e83693efbb0e432f83034aa5ef6cd569428a3f5dc0ea46721d58a571 3e7cd9eb6c797ee4f40837dc8a437b417036a2ee6f6d8d0eb8cdb9d0143bbe51 c2a8f947967184ebb6a31b47961bd4f37252e5ae81380562dcc6165a85fc9a49 +1233500 381e2949e83693efbb0e432f83034aa5ef6cd569428a3f5dc0ea46721d58a571 5e4fc7b3c7d55d2f0f236af9b89acc1edaf638427adbaf959d72297623ba683c c2a8f947967184ebb6a31b47961bd4f37252e5ae81380562dcc6165a85fc9a49 1234000 cb6e218e6b06db72e9ebd1a779c6fbda5c8967d527731d8e5ab48676aa9a1d97 27d02fde617293d42a4de35098f148deefd85340bb2b038a2ba17602eb26fa41 db87890c8ffa7bbf7c093729078598d598ad11b73a393bae34836641a393ba5b 1234500 5b0df15f60febb52c49aba4936bf83f9bdd2654d4ff883ae326c081fa7b3fa8c 802c5a78bd41f37f08ed7c395023a4661d743d59f98c6b7afeb231716fad6829 3b035a4d24d0cbdf71c38dfd81423d32d8cbfcea642da34d64aed0855044824d 1235000 48f8a254d98836c4d8559df0ff42f13c8b62ea04052381bf411cf47b99900884 d59adf1c51d0d1f8b261320e990593686f75c1f8f2f405758179b058946873a2 d83461b796e705769281bb9e53d7b7c951f9073a399cde0c567aa9916456a534 -1235500 eb8ac12b006d0cfc692173d0a970260435c7c7ac1e67bc54807345a13f7557fe 1e716e5508018cddde941f3079be2608509a9e319684ef8144245f613ff46713 6db77cbcf3e70b684552735f0ba034057ca13ad7cfcb8d698eb9e4f5a188060c -1236000 524ce04d135aa08543baa6052549f6736395eda2ab3b5d8fe5fab430c014562a f1ad0c14cb9cdea0f4cd5847d1c256cae712d24621a29afec0f54677c1510706 d2371119849dec5a03d380b18a65b43981676db7a59ab13f989991317cc0ec12 -1236500 88275a75fc986491ce9dd6d2cb83243060e61d6c4e81ebe7e7c7643fb8bab0f1 2a73a779cade5defd59863657468f9985adabf08572a23192060672b14e2de75 4e2f3e795940126c02e8a0479561df998e82ae5ac4839f07f28d130e9a32adbf +1235500 eb8ac12b006d0cfc692173d0a970260435c7c7ac1e67bc54807345a13f7557fe 43c9ff4e1ead86165b6f3976cf5904e5af8fe53cc313c11cfcea03714d3fbe6a 6db77cbcf3e70b684552735f0ba034057ca13ad7cfcb8d698eb9e4f5a188060c +1236000 524ce04d135aa08543baa6052549f6736395eda2ab3b5d8fe5fab430c014562a 6a0498d4a62c53e08fa49b0749b75848bf0ba3d3cfa9b6d11b082e56e8d1d605 d2371119849dec5a03d380b18a65b43981676db7a59ab13f989991317cc0ec12 +1236500 88275a75fc986491ce9dd6d2cb83243060e61d6c4e81ebe7e7c7643fb8bab0f1 eb0fa72267b5a91ab4b257bb7d2913630e230bf9fca0bc7a207cb716c518e44c 4e2f3e795940126c02e8a0479561df998e82ae5ac4839f07f28d130e9a32adbf 1237000 4b99f3d475c781dc2caac67ffab7c53d84dbeff79678922694955a9854590018 554600aac19287681afe0e9765da07a02f1a1aa493dfd43addd9f31edb78e875 e60302e3377c7fc2b9109912f015bbe23b4b2ac8ad628c7d6e3837ac71f7b1a5 -1237500 73c09a49ed9f47f700d4554cd0a94c1b01b802a3cb3c61946c74d40a443540ff 1775952f2d8dc63bcc08ea478fd4714838a31f7f683a8b83d5d26435b8b3b6c3 59f24ceb689173661dfaa9bf80b396831d5e7dcde15bf806ed7160f75a988274 +1237500 73c09a49ed9f47f700d4554cd0a94c1b01b802a3cb3c61946c74d40a443540ff e1ad250e45509a15694363cf3dcf684d69ec8ce27538720f20171d4a02400b50 59f24ceb689173661dfaa9bf80b396831d5e7dcde15bf806ed7160f75a988274 1238000 29489c531b3419cea99dddefb9b19111f5baa184f287ebddb3e760a2663014d1 dce39dcb5a1a2d072fc999d3f662bcfb16685cb8922386cccba187b68b6d5947 32dcdcfc9c0d815a79435b769a35954dc71df347a2ac1a810929f765c39218bc 1238500 c0555685b80e5d5d0f53434a8ae44eadc953dced274ceadc80de36c44078283f 16dbb1b2bbd5d13aee22743ed27c7dc4dbf1dbb221cb45325d188889d6101dd8 c44cb9916bdb7e6c7dfa417da3be72bd5987cf345024ebfa68402bf3f3994189 1239000 a3f94a2821165fb910806ff75928c5255a4358b5062288571e00e6646abc5203 175a8f872f777325f2444b94ccd55602b3bd8204733f86af40713fb0a0474106 c637a21fdda667d21d172bdeedd54fe7f09095a015229dc6854eb37d917da596 @@ -2502,4 +2502,75 @@ 1250000 ff909ef870867e5408ec24ec40a290802f79bea220c8f4a92db22965fcd4f626 03e5b1fcdc2862ced4fbac3aaa81d1e0085c14d6f6d06c6ae592f74afaa16f34 c4f52d30fd52f73e6c5a8e27d3727b17887edddc5400dfb9ca1cce4703e3809a 1250500 8f0c2debaa498a5f78b8b247d1867ef6ade586bdfa823596d09f72abb489a91c ebbc2c14544a97d0bd12993dde913e52f2ef78450c1ce0fa2ca17274b6850836 de78b1c377adec4d78d5e4875569e052cc1d4eb959149a28783d3a14e05a365e 1251000 e484a8dae7eb5135538bf13009824a60f2e01446f7eccd39d7b6ba4ab7c02f6e 832e2c77cc85a51df16361177033632ca54768944daf778522cfec04a1968805 9d3db1d547f74210714713bf27f88dded8e2ac50a618afe41220ac606fecbf7a -1251500 d39df71c033cc3435949073db5f0dfdcc0665a7cb4f948704c30a36198d4354f +1251500 d39df71c033cc3435949073db5f0dfdcc0665a7cb4f948704c30a36198d4354f 6a635908c166d3caf33af6623f5653dd7a3a4139a0db2395634326fecd5db79c d63c2672584eea742c19e89c2e355a1102051a4494c76ce8be9590813d2f9fd5 +1252000 ff536638f8d7f8cce1ac36b65a6f64dd4223d06a8969d6f6f64febd4d8f4befb 187604f03a82305b18747acd7c90d12648f5a37f045e326b657afaf4224f9d98 25ec47454fde992b5ac1e02e2c9d34c3d825946b9dc7e0a5c2ea71f96ff0499d +1252500 7658e586ed7df96fc8e00fea09f92a693a09c7d335c5a55454f3ce2339536225 2d0b4cab008310e0a67f36158c504ae840169b751a852aaffdb1c1672ad17bb3 81bdeb301eb2e6f4e06affd7c5bcb3f22918ed9d11c310b634f77d738b83ef79 +1253000 bfe9a15bfaae2127653f9a072b7a3a9ee018c11077a7d7526bb10560c2cbb53c fe37841e2be751fd9648b697d20d7b5c3443a3ab39c2f913bab716e6bc91ab5f df64f68f75427ee2003331955ee1a0827b3b344445f577aded9614b48c8ab5a5 +1253500 54621a5564053c3d3c3453d26ef0135bc1fdbb4b09021c5c33b7d85768e0bf31 e534ee517a9e71318bc9aaa5027b2957b6259efa66fd42096f8d6372567b876c 83a7dab72690b7fd940713f271903f7bac10f3bf077b0e6dcef9701e56f47ab1 +1254000 e6d1922c5d41fe5427db84660db3f4182c69ef901ff569fe947118f2825501f7 7a1746032319ad8c92c7eacbf3a650d1f042d51c811eebf5a416b0b6dc249148 5525f731e53e110f43c70a42abf78f5166a800d8ef0821dff2b8e706f994b05a +1254500 fab487c24234505c8c8f7e1cf2dacba1a900a9d7811f9f59e43e1a7a18c64473 d8cbe61a2e9a9b2fa09620b37f62d9ace603e22072ab453da531f97df482137f a1f29b818a6c6a1be19dde40773903a794e6c2fbed8dc133e3f8106b4807a3dd +1255000 2b2763d4fed34ea05261387b94fcae12ce56b3769588f2f49bdbf05ae8cc64ae a827b0415a46a3b9a936352b43c32acf85b613f4d0cbf1d951fe1be18bbef819 f99426d0923bc2c972ac884261fe45c16610b8ab844e4db4c536a4b67b5748e8 +1255500 da061eadf21c010d1390f8658a679293592c0ba5a5c66d4e5be8e10534304bec 59700e24b9b859bca6543abeb81bc64bcf219ae2787b92bdac617f57cacacfa3 151234c7997bc8682241978fb74052cb79bea8371f20055982e45b5fd62f3ff2 +1256000 c58a7fe56facd3e1ead7304cbe4c0cd9c9855a5edbce2383ecc554f9ea8f2e46 d17fa10880ecdb2bec979b16b760f9aad490f6c985133dd26900f92d8a17a1ee 22c14c88a589109dea128ddcb4d27e650bdfdb75434d51a979b7e0fecc7173f9 +1256500 e092fb1e2060e4bea4c6125245089220a7a6b48ad5c129a91d2d95e8fd34ca70 480fad310a88d8715313cc62c5724d786004e5b041daa8276c5d4948c4ba90f6 38e6b6dd573466bb4a147ccdf26a022ff750e3d0adb847b87b1eb54b074ba3f8 +1257000 bf539bfb1eca8f36f36e5fb821bcf78e9c5890c9bc490541f3012952b8f86125 5d95c9140a50bc2cce9de1965f0a071f63f377a9dc5ea3e35886045824212ff9 d715e23670a3a4bc72654be1a716df874bbfa61f053b9c8fcf76dc7a989a6fe4 +1257500 f44dd8dface0150c62c461b1ceadeb51ce2004caafbc4fef9f7e29175cec0442 8f59e207c888b79b3937e6d86cda3d271b755af290cd67b84623847ba8a4b1b4 f56de880992d59006c76fb6575599460a3cc7ed1e623528d4ffa5c1a58143a8d +1258000 cb6cce5ca0c669ef304d5e236eb8ca7bd5c340bcb33f469c8888595ead0037c1 4f014015e8549cf6ba7bcb1583f0dd758f456cf8dbad0d23067d61ac89746649 a7cb39492cbab14ea097c62c47a6301454d8d8673011cc23aaf9774aa6bbb97b +1258500 5fc18d3aa7a6ee374f73d3c2eab53dce9348015cefed3cce9c80577003312a14 bae86b9cff37f003d1483b5c13a6a1f7c8ae3d1e3df71f0706ba40abaa6866af fe16cc9840c10195bccbd7ab5279a61f58c4581e320d10f7a013fc17874bdaab +1259000 fa80a9bb10191b19d85e8719edb1fa72e47d3dce38fd3f46a19206c4a588fc39 d75ded4868c1cb6899e08ca1665febff4d2064ce9a0e2829f30d3ed1b0cdf3a7 17493055bfe1b927937afaa9695c2dbc309cea3fcec846134d02452403908fee +1259500 ee2e7f98e80b3a1ad13b83d1451fa0a2c14ec79b919457e399598c2b5ea4232d 670a0ffbc4369d6db1fc09ccb771fcd8a522cb2a4eafe45fc54a6d714e6ec4b8 4172cb25e40679f04e304ccbe391990fe8c499c742c161dd6b81fc13f7b7e0ff +1260000 b9f897897344dff04b69437c82d2e8ed7fb33138f1c986199abf2bf9dfb2e522 da2d970ab83aa94031ac3ea434a4eed07cc3f4c1b18805b290506980406592a8 06001c15b92d41a1731598f70f614c9526c0bfdbbcb652194c317b80b96ad8a5 +1260500 e3cef70b0e598426ca78f8ec7bfc327f60604c26cc600d0bce48426fc2946016 3d7e42cb25d348b579bbc4442478b59a8546fba105b06acef26e4fcbc9d8377e 3a5d6f868759505e83290c567690d6d87f44fdb73afb64f191ce94e47e684e6f +1261000 9443d63a89847cffc74318c290e3f87138cc88036784c30b48793c2a5f6c9218 b1b83731e4c67fc8f472881f2b2bcbc29875c57fa0a130be65e7e33b7b8511ff 056aa8f7598212bce414a3a6a076ab722847c41169b640efc62477737a50b6ed +1261500 7babf7d11087d87c3683058eee9503e4ea41b91bdf3509a5132372ab7125178a 0fc234c5928abe54bb6b12aa3f033d380d2db44174d832f53260547e9c9e072d 97ca0cb26141b0cd7cea1383c2b7ee512c2bb4b8052ed1eea710a38e1ebb9409 +1262000 67f9f917d49c6ba84183791ab7b56889b349dde7a1745001d011fa5827bfdbd2 65eb240a9878fe26fca01678bad9e92d24b572db7cda511f121226ae5f4bd065 5c439ea8b47d73906eca78e9392560614e1d15c16436bc562fa5d5cd12c92613 +1262500 8a1cc98ca400fe611f7e620e8648602ce22d333a8159f22f2497e00c3722e9f8 1f5020780af98dbed16ede13f9904a89f3960a7c881afedec23a700ec9fa3463 be09717e36d77eb3e8cd38a61c86447319811fe5b2ddc41fe82c7ef1ee2096e1 +1263000 55a8e34e3eeff1106fe3cdf12c1d44bf5de872477f5a8865c76996e36764f87e b2d872a076739d50f465345fe2799893e97eb15affd70741a7a3d3db6133e709 28f7e07c950049c73a85f1e67c37fba655bf8c511f9b000e5d472160c2e2a542 +1263500 3e2ab5f78b443f66e459c642f93d98e2b95fce2d27c7a4d39020f79865cae4c1 a0365ca0ad690d08bb075c7a33057e091ecf0bec936f3558196245024f053519 f0a960b82c0283271c38bc0614f0cd10bd6bec28afc2cafadebd7309ff35b1cb +1264000 012540d25436c7713348010a3e444934425c28c53fb7c3a0986f73d2782561fa 004442787bc8f9e55c854913e2572913397baa9e06fedaacff5e0fd5b1253467 b6dfc77fda7bde9351d150c28b1dfd30ad08119b2e8ba4521f312e2a1663a4c7 +1264500 bd8186b47cd23bbe3cdfb71e7347a0d2291ed697090d92d94681d168eb17bce5 a2627ddcc0b79311eb6c4fbb979883a57bee5ce66b27079ee9345dc564a97d74 555a546eacb99ffa4b4a0634739a5f55176d31fd194598a801b92ddce87327a1 +1265000 dc6f4c1b94e3c7fd674f285bfccb376d816b7b9d25639442888c90417c6e1928 b8eac66eb748d10262da557855712118ef39ce59cabdb301c6bbba7dc85fb029 58803ea037bbdfcb26040bd14d176df795b2238b1a75f3819548b3890d5685ab +1265500 cc65848c358b799451503a3c57fd8618e27a1a1d1e9af32cbf33ae4f48d90a25 19b5b42b15691677fe764058e57fe87577aae10d89a3d293045383faaf22e76b 780a43c5a21945f6a95796eb3ae0b9ca82d07d90efb8196b848ca4e0999283e7 +1266000 f69c6da50eb22f5946f080c1b73eb8f84d2770945deba271f9dde36047cc9643 3de5cf725b49edff7aef2ffa9ddd1e7b5664d8b338092b126baebf26d2af9787 c7768453c6cf0fb612236b79a19c9aeb8abbb967090bd8b2e0e031b2b5865dc5 +1266500 8091893e7baa0a88b9300f71616afa17dc5b9b0a5eca5367b4a69baf985b1ac8 d02bbf77beb68fd0ae78d670aeca4ed42c4f60bf34be33c827a9cc7dac7b3122 340c352d09dc30eff28f85ae5d1fb18f14aac32055b06369ecc89019cee7cc0b +1267000 128f33161f9bc0e2c83fbee3cfb1c2fa50ccb383053d09306af0547ed9b68505 a66be448d6c66756535e0ef764429a9fac0478101d17e05289741801e2c2ee03 169041ca942e04e3aa28d626544f519adc2be4690c6aa08ab0928a5e5c67448f +1267500 31a9129736b2c3b254d11ca449fb0eaaffced86d9a48cdc39a884ca6b06f255f a4698e69577f70436ff7e0a35fb2585bc4fa1add1972bc891cddd2277ca20348 7438112570e3522daf7286af5aa53e8bf7ffe5c1625d3cce3b45f9fc579c89de +1268000 16c0c54660fabda9e221fdcd808b55d50276ce9d7d871ade48ec03fb00885f8f a6b879ad3a1e39b77530d98d41a6b4c7b9975e2edf28e1a8548625096429a863 a0ff752370334aea4a585bf357e49c7003c7143b08fe7bd6ebbf27bcf1efd3f6 +1268500 785311a0eca2b874f5bb33c7a89dcd1f070687c83097a3d0e19fc321794b2973 16daaf3f6dd6f9297e476c1937f5a6b94a34f6c0f61e632a721589d41dcca399 725bb8b8ecde7acd94587f99aa26e0437aa2adae8708173139b7531893430803 +1269000 27c720ef7d52372b85a5b9c00dcf65093d4f1e36f1eaf6d60396669475269188 ce3578d69e986a47bd79f4f6ea1af7faeed33b524968a2daf0c46cbe2d7ab897 68a147f7750ce84596b0a924b9d1be5e4d38bfa7b4db35bbd2ea5c4e0f2d0d80 +1269500 ab31f7ec6924dba82608d0090da6cf1082847e4d0e45afb860c6438e4e192dd9 663524bb675195f8be51daaaed5719e708ae88417ef8ac17b17d8012d0790862 f899334618382fee4f71a82dde3f2b19efadffe200616de3add2a59233b86968 +1270000 047cb08100d236280b31144337c8099e728ddd05f1d7f88ce1ac18f29171c276 5165759c24f5324535815114fb1a4624a80e727cf51a8423f656a332805e35f4 69bde7b7be62447e487a37a550002b1f5e65c936f1c619f816205c42c6f30c4b +1270500 e5476f3643be6062c57e6d106cec58735f5e9634240057116f69c51c48cdd7df cdf1c3a1616b92af6dee00860e080f993816d0853c8b566bcb9cf39fa9f841d2 b0379e835b76365f46d60033d0f38e4be68517375a8e20e38c4d893151ad47d9 +1271000 bc9d66c3a41ec1563d87a039dc160a62fa03f140b64aa201fb0e0d85196936f6 6561056eea7e542a19122f3bbb7de349f81b7958a285673261fb1aa50d19fc45 2f71eef960e939f4e0bd002354aecd03aaa7e150db63f301825cf4634a2b3097 +1271500 683fa8faac9cac93518e65747a4794bf851029955dc68f7d35013b15848bedc8 96877e23c45469226569a2c19534da7c3eacfe00fc446001c2e59032327314f7 45132f28d37713688fd6162da9da162967fdd8f127f9870b207d6a123252852e +1272000 039015360bb09f948495ff398aac0d7fad64c21647ba87172417ff5965daaa5a 9bf6c52d052bc7e8767cd0c3e82974b9e7ab395cfe420530667158f064083954 f35e325a482acc4b19cc370901c0137953bacb47bfa4350801e4c432e5df337a +1272500 10483769977f89699e290bdd63de97278c5402a84d7a6afc9da4300cbb2f5ad3 f52b3cce02c295ff33170712c0311f9a905208e33905a659475bb48c2232dd51 1b5847abd3c3fbe363cc8beb223fcad2d47e6edbdefea894fb8a6a466a608167 +1273000 5abbe45e929f9799d10f24d845a2c2bdfe92eb4badc58cdcd80a67253db03046 89c39b33025754778ae61b21ed02f00269b7e8f95b0d84d5dba24315e78017f5 f2acf3d6432d8a064a16e614d2f295bbd7f0cbc6e276eaa8911fc6ac34e60fdd +1273500 6963355dc1a4f110d432f2ec4937c9a864c097eb8f4860d8e86e0145accd7a5e 747860bcd450d1a413130ef9c0d70e9c0457286e8a42fdf8bd4bec9acc4de6c9 c2b2b6e933d2712db73a3e2783752f2e6ebf7fdd8ca098a8b1fef45585601ce3 +1274000 5f3e0cc50258520df89de7bff9b8f189e3bad9a3b56262f49eeb6c030e0c0d37 9e64e2b2c81cd3ae1678d99c25bb7d23dafe547e0fbebe7231055f2b23919d33 d2581fa580e0919d0deca17b8f5cc9b15fddd1238b6b2dfc1955bbbbfd69c429 +1274500 da872f704465d6cc09095c465849ef587002034ad2eec621f711f59aa4f5442c 285c67087a1c1b81ce26a75dc784b3bfa44d1ed3917c2ab39523baf5551df4cd d177183bcab01307731283ea7a463ef5f6e8ef9abd3879965492a708faa94ce1 +1275000 d31a4ddcafca32ed48e102811726ccf4dd0e70bf6e31ed1573e72533290338e2 7fd218c9b9c8859cd9740ff17f4405e793d900a087b44243a80141c9a4ab9f87 790cef1e25930ddc308b3af55d25c14c4165f51ee49d1ecb2c16a23965fdd22e +1275500 e8b9859c7fc85a2f449e7beb5b67c8a5a4ac9852743c258037c5b7d18c7e6775 7089285b9581c23e207655b5731972f426e3906536dd3c54fe6000bf69a47081 1a2db31610a7f4fa48368c08d23b8fde80c38c855eb2d2dcd84a850d6ffb8593 +1276000 d0938a0f2049afec1c7cdf43b5d367c005e7f1110a86ea2ab4573088fe951893 b764de4aab5446cd85df183d57b0269d720d42e39d8427ac2fa05bc971b24f46 5593a08c66a43c78dd4995c96fb2e787c9cea457f558acb8ec2347b561f0913b +1276500 b318359130123cac42618d6daf142377a50f3955dd3c2eb6bca23ed122c95cd9 5a71e9ba231a41ae838e4e1edb15bdb0cce8c278a8ee4cf3fd0e87a5649e2e3b 1f5e5701670c35765199e23d0ecaea1c2cf7264db6d239b557b64554c414c440 +1277000 30c579043d579fb723c282f54d7366e1ca7d926d2b0212da79a146f8d7eefcff 10cc0b462735bbf385786898251366abebde01aa9ff5c75747b96b5d5be5de74 d012018784a6ae276ab06f0b9cc48fb4a7b545acb42d38be0eb0f19ae976da9a +1277500 3bb84fa3412fd76df538a6ecc2764240cc5178700f333e18374d68ca55dbd8be b7e210f4d8a2fa776b541976e4ffe67b33ae77d2aa56fedd989e9a02c27f7e1d 698697a763f740bdc4f7cf1e3044c7a84cfb77cfcb25c2779f93dd00005cb8ed +1278000 48d9155ff3d4e83243191a29cfe0198827862b0848b7a9125237bb28480ba779 5cd0556aa6e4bb2f9de705d581341bb460cb3ff882223c0392ae02ee3fd88779 ac1a1cee86ec42d6dfef08e13f08e034bb5d273d810a5acb727548aca5a675c8 +1278500 d10b8cff3e5e37a480c5eca736b4e4d1b707b2ed9d44ba4fe4da8ef17f94ec05 d52a09dd904985a347a4ee0957a1c10f92d11323b0f1e63c604d4263aa73bebb d7462919c815ced10749fb5484e6462ee3e763aaca0120748cd013242c80ac3b +1279000 65adc4b476e699248abbf1a79a032eaca65a62018c6fb410a3b081b50e2119f3 e5b4bdd0b64145f87a36aaecbd4adeddb304f3811c99249b41ccaa61aecdb63a 537297de7b81d984b28effe3aaad242c613dec3e33019d53499b94c33f621214 +1279500 7477ca04f254d3dfc24b5d939bd9ffac2d82fc95df2de2102c979fc74c0ad11c f5b195948767156ed2dbca0911e56d96fd2154d6f00b24e6df7e60cebaefdc66 bacae9d41d64289ccf9bd44bd02f4313c9ba42edc23801fdc648d739b9dc534a +1280000 c1f9c7eae3832cfb9a173e2b3d127b318fd9c0ad4e7f7166cb02d45fa3ffb0cc 49296641f1fc718614a5a9fafc86fd9028b575022bada11f89a6b27706f8d3ea fd52322c2ee1d3621084caac172d0fc7a75e53869d75198e3efc2d869665f282 +1280500 8d750e9deb9e57ce2a7a4e896594cdf8e1dea273a15e68919a2f3224dbf97d0f 5dec7ca354f5cd8959829830e6cea8b8618d364bf8e0552df0e68f2820ba7437 74f2a4ea67ac6383799aeb14eab12814e291bef087296461c65e5fc062a955fa +1281000 33f4f1b24dcb9f14a2e0e23709437d08d200fa37d9f3e876e038873c74134cd4 68179c760d4c48863244ce5fe6395f89cfd49a28853fd39cf3509149ad4ae1a1 81e405df4a3c3416b476ff1d1d4bee7fdb8bd957c773bf2d2cf7a1a6c4dc116b +1281500 3e5656fde2e644c01052ce8c0ac4825e1aeb02325de493366a345aae44c9b595 ea8a070d45f666477dbe9bf61b1e2bfa4abcb98484df696fddde5e3e9cc6b2b0 507b84013d2b60d24e96ef587f60fd6ae4e1068e1a712860cd0668b9e0c6d463 +1282000 460dc5a8b00f670a71a6a810916e85394638898eec053c2c29f71f1b8106c260 1ec4300fc8c5b3ee0fa37da8175eea93aff328294f67ade579f5841d90b6de60 59aee7ec52f1f420543f0015e0a3f4751cb633ac20e01e0d8e9bc5d4acb55b15 +1282500 53ca6a167b471af842c2bdbce872fbef28c0929645493f443f1ffa132b8ef74e 6f47f28baf258a131365e86ce4aea0a0ed6f8ff724effc39a6d6e9ecdd37469e 493917b99595fada5561f1fb2ec0efa7e24f2db194e42514d75b3a45d8a2636d +1283000 ef26b129d493fb802fe635d458049a2f111aef0e2ad1301d014d5ac852c8017c 010b034dafccba6d4ecb8cc6b00045a3a15f641c6a5435e67b34a58eee3031cd 4f44bae6dded24a72e8cf6346c3080bd050596c85d895daecc2223b8612253ed +1283500 909285e4f9c7027f23527957968bcdf63e1b808c978d8fa77aa31630749aad91 283247be02994f4f902ce749b431d94abaa8bee68190a98168efcaa7c07ce5fc 700a7723f0290335db92346681c67125133271e165bb1dd5371da9b66098fb75 +1284000 076257928b85090d0ddb6990b1d407989bff6a40bd01fa44055aec204d93928c 92753e55543543c1be66988e74806a08dbaea8c54263dbfd80473db9ec8aea95 1eda23256e68c54b26322745da4f209c00ff2f146c34f148563002714f12b84c +1284500 5c21a60192ce74b58394dfe188e8b3bcf9cb86b8e71424f0a447b11d82fb7d2f 3a7cfaeb0ea7162993fc607af16989ba8d27f1b89b1f5a5be5312b87dbc35cdb 6a1ac2fdf33bf732648facc31e64ffa9c7415de9ae28e8c699ac41b93f29880d +1285000 23a194e22d5302e4f2feaa1d1b1906e91f8c7808075c55f0a8fc2f5ee6617df2 9b9849c2152e8f8467970090e2adf6a52e22a2abb255bfe8d3c9d17673555bc1 d59bf5def0f1ca0fb97dc1d368c3c5175b847a4c507630452a69dd38661dda89 +1285500 47d91223c2513842f9833d26630079872e58b3c29ab1c2860704513ff817a017 4c4befed95e81a843b315466a3c459b61de781f68a4eb3e545a1168779f84fc2 1c4f2e61bde40eddbc29137cf4aefeca2b1445dbed4b642fa778dd481d70a7f9 +1286000 d68322938435a8915aaa0a1755c5ef11294bac81d64a76bc576424b373079ae1 010ae35ee9093052277dcba8a3456effe7a0eccbe26a32a8e3dbe41df5b02409 72ef60d505eeeb89e538c243b860d03597bbd75e972e698f1a604d4523cc20c3 +1286500 b68cca2dcb4aed574ecfd888f2d87711b3939b05ab5798c5671395b6b032a90d a4037221fe0b9fe5c4611d77d50c661d2efc4038d983e17c463236ca0412896b 23910f32c4f9ed70129db37cdcd238c217b255c806cacacf196e3524f8b37850 +1287000 20df89c8172f75ebf33e232d4b3ad8b4e81039a413952c625b8e8d661ec3d0ff diff --git a/iguana/confs/BTCD_peers.txt b/iguana/confs/BTCD_peers.txt index 34569c8ee..5226d6ac8 100644 --- a/iguana/confs/BTCD_peers.txt +++ b/iguana/confs/BTCD_peers.txt @@ -6,6 +6,7 @@ 89.248.160.242 89.248.160.243 89.248.160.244 +89.248.160.245 85.25.217.233 65.15.37.140 62.75.145.171 diff --git a/iguana/confs/BTC_hdrs.txt b/iguana/confs/BTC_hdrs.txt new file mode 100644 index 000000000..485d68a82 --- /dev/null +++ b/iguana/confs/BTC_hdrs.txt @@ -0,0 +1,4293 @@ +429103 +0 000000000019d6689c085ae165831e934ff763ae46a2a6c172b3f1b60a8ce26f 35d08fbf1b2fd7b8e87b29c8ad6682b9d2f09db56ec56bf16e08e973b6aa44b2 00000000839a8e6886ab5951d76f411475428afc90947ee320161bbf18eb6048 +100 000000007bc154e0fa7ea32218a72fe2c1bb9f86cf8c9ebf9a715ed27fdb229a 472f1ec3e6647533551ef65a7f826ef345daa2e8bc27384845f377208465c8d2 00000000b69bd8e4dc60580117617a466d5c76ada85fb7b87e9baea01f9d9984 +200 000000008f1a7008320c16b8402b7f11e82951f44ca2663caf6860ab2eeef320 5847096dc10d1f31efc6b881ca9710bdd4602ee41d6b61ae40d1f02e30e31c09 000000002b50d5963806b024fa09d296a3d8762713536eba9e5bdfa7596f814a +300 0000000062b69e4a2c3312a5782d7798b0711e9ebac065cd5d19f946439f8609 cfcc1460aff4e691ef60ecf667b6de05270372107d425517ad71af123d247aee 00000000a23332a5740d8676baabcbffe490fd8849b6d30f7399b83aedd733f6 +400 000000002dd9919f0a67590bb7c945cb57270a060ce39e85d8d37536a71928c3 b26b312d37818576473e938e3f1cd16a159ab47a0e26fbb391511bc77f03abb6 000000005bbced8d14a6ec258a8ab28ae980616e9820437cc3b6d3daff3b7d14 +500 000000004ff664bfa7d217f6df64c1627089061429408e1da5ef903b8f3c77db ea0ecde47c59d3535bff221a582592417d15d78caf553758341a100adc33d1c6 0000000046887292a76cd113a5fd6af38b17c9fb77e5936cd9856694030598f9 +600 00000000c7f956a913bbef9c94f517c318805821b59ea6227175f3841792ea88 2faaec5851b60165422e3d7379fe3c5123fb6606ac3cb30c6c5b3999098a64b0 00000000a893fa1871e9a349309b47a9fd30520eff9605d52d981419cc210884 +700 0000000084d973c18381c87a63a2430ad2eff1d84934ec34e3bfd78ffd3cd9c1 3e5586b6bb4838a5654aa527e3d94ee4e8d5eefbfeb5e9bac47d347512ccdb49 000000009185a6d894df317ab79ff4ea68bcd9b7bd972888de20a9e4ba9c06d5 +800 00000000def8545899ea7274e5c59bda5982f8f960052774df45b7d5c64f9c5d f320be873b8454068375797ac3aeb4ce34f56f490dfdcaa08156df56181d6700 000000000057d77971fb0bf24812e155f9eb7c4eea682b62defd627b7d42c2eb +900 00000000e684309e67fabdf765bea193cdf8532111079b7f53a0839746d19240 91a09b90adf5ac40a79d40d7fd0f0de5e60fbb16547cdca21d4f0578f3bd77b0 000000005d43dd65f5b334be51b6ca0910477a0344c5290a36f147c0d5c0730e +1000 00000000c937983704a73af28acdec37b049d214adbda81d7e2a3dd146f6ed09 f782a99fd4da88b084e6b563459e1036b5b63cfe12c40c79398990ffa0b2dfe6 00000000a2887344f8db859e372e7e4bc26b23b9de340f725afbf2edb265b4c6 +1100 000000009cd3f93cd2d843202155561eb773b2a7b7c97561ddef31e707f4eb4b 56cc9f936b563839f95a4d2c67d58128fdebdcec85af02dbc396166d338d13be 000000004ea3fb1a453c3c7d29dbd5baabe7e23571f73cb242dc10282c705907 +1200 00000000f0b6da96d1e3272e87e181a7057c3d79bf984b420d4f6fd6d7a49fc7 dd00b9e3aec2d7e1c7b45839bad3715429a3ae11f2e8bc9c66e98be26848a0a3 00000000e6fbf1fd197e80e1e738ecd5890cb6e038b6ba32484adfad3c335921 +1300 0000000047a712b762d9c91aa1cc2e33fb48ea64276a7086c3c10aa252a934ab 6cc68b9880843468dcfbc22207ae4831b8fbbc10cac2234e3b3cef2675fb5cf7 000000000b57d2d81865b33cbf69ee905688ee70772fedb7cbc7407fbccd5461 +1400 00000000c9c28d2bb760225beaddbc212a01720869b624f088e9311df5b5d8f2 febe4243420ca549fcb9a14fd9dc27f9484fd10f8cd591b93a2316ef02f0e86f 00000000c7a7852c997de77ca70c5788d2e49417142398b245c5d257a2d96075 +1500 000000007d07681a955b7bb9d96c473e847395b592b6e9e5a73b15b594bd4013 11b715004c23994ecee4670f5082d00eecaf4fbfe641fcd9d759fe7f239f2247 0000000054f7d37ec4740027b6994907d8e771d77c14501503833da4146e8637 +1600 00000000f6b38fee667afb9cb2eedc5a9988d345e7b61ce220d34005d2d5b8bf da98da70c3926abe9baf698ae2f1d8ae82e9421670758e24d7b69f860ceff9a2 00000000ffdacee18e2c714d840888e87796855b446f4883c2834c6ad1b9a1c7 +1700 000000009bf03aa138b1bb31491261221f8d4562941c1022a798acda7e3158d4 250cdaf7d7023daca3c9b4a5997142b19e2d97625be5daa5a9d27e6919512244 0000000039c9ee6476f7ff947201bcab7167916dba9754fb5b446bab0cf8ef28 +1800 00000000046d4e2de13c9a31dec05fafcae393ae7de773242abd4db47e9e747f ecf0ec8b84aa542b01042fcf636e34d53b29b44de40065e872e84d82da03d6c8 00000000c9ccddfd2f3e45036a8d04fcc3263a83b82b4a9fe134dc1d8c7ef295 +1900 00000000e67f39a80dbba80e5bf130294ef460b89022c7a56c3df76ab2df2e71 ed4c0b1e3faa53831a21be8f1f3c6ad55512671f801446fc7449926543b2ff2f 00000000d77df12843c43e959cf8afbb1b20e3625f698602639bec1635c7eb96 +2000 00000000dfd5d65c9d8561b4b8f60a63018fe3933ecb131fb37f905f87da951a 1b18a3257ac9966e9706600308c4ccf283764f3fa45e08df52c89115b2c9183c 0000000067217a46c49054bad67cda2da943607d326e89896786de10b07cb7c0 +2100 00000000d5092034c3a92473d42f28e3fd279f0652e2d5b0049c7d40fcbc990b 64e05e62d6e5c28dc8bd4f90528dcd9663d9f839b4014a3a65049256d09be8a1 00000000d8982f243bdc42ea9b6dd9961f98d99db54decdc6affdfdfd7205eaf +2200 0000000070118b55e0436a721d4533fc3d09a0238f72a5380e8a694c9dbf948e 4f0a30e1d6ffdb992101e3514c3993e47263dfb701155d2c644c479c722048e1 00000000bc04ac00ee40d71ceff705a5e56f27e7c09c60320fba0c1da77f6c82 +2300 0000000091a5fdf4b5f5fe07ed869bf82049b3d61a403f2771b5cbd1937dad09 d3fa235d4ddb746b02ce52fa9aeecc78addeb96adb266796e12348d3aebaf979 0000000005293c54b44c3ae0230ebe9efab661dd7b3068fa44ad33e872282363 +2400 00000000081038eb250216ebb27f94d8896d2984dc962020c53e6a2852b92967 21f8c70e47cce809a89dd9880ac31ea89ba15de9434c5b140fb8900f409269d7 00000000b127bfefe6afc98908e6071840b979cbd26a54f8b545908176ca4022 +2500 00000000d84724559f1691d916b2ed63a44884d495d155197647ce7667116b16 10611ba69d93a1d22cf092af9f65c8ec00ec4316a732b7df87b22c75487dbe39 00000000f11a02048994849fc2e785239b23de9bcfd7222d159188c52e7a98c5 +2600 0000000091a7488531bb1050f24c0f8f90d4da873673eb4dec62bbce56a32910 1f11a6e2aff356a5d165349db68fb1692c8030eb5f978a0ba3461a44f7b5be99 000000001ef2ee83e0a9e851bae4530566ba9353e89a7f814cef7bb36fc99641 +2700 000000001731f7bb532ebd8ff11c253f128a9e3108eaf038d8155fedeba5bc0c 05302971715042cb8392da825d441336a1eaaea90d04c9b66cf3c7539c30e0be 000000009d65522d29ae00f24ccc272fb66a97962440b2fd8aa0ca04bd1744ab +2800 00000000d10250150162aefbf7d64ab10f3b4706ffe4d04ae59ca410f672e97b 12de1a43cfc57c7b0bf66e10c26599a40417245627cb9b26e6afd52e16aa486c 00000000eaac134c9d036c67b7d9e6006abd10a0f99235cdf910bcba535d8d3d +2900 00000000a4342e04aa766386cdb4da70137efd47ac271f1a4e18429af3020a7c 681ff08b32824ed7cc490ccebbe5f24b21987cd6e9a37a2095d74dc330931434 00000000f903ce68d137addc7b21a4a8951ccf768e1fb0aa870311788f8fa22c +3000 000000004a81b9aa469b11649996ecb0a452c16d1181e72f9f980850a1c5ecce 86ababfc589d5ad88d5cb03f5ca86a1a977b6ba69efad8eba9004a4cf521b41a 00000000ee1d6b98d28b71c969d4bc8a20ee43a379ce49547bcad30c606d8845 +3100 0000000054470b7eaf483188546c296cb32dbed05bed5dd711bd7c685f8c8907 623acc4b1eecad9fe35115690043b6a08309420e2c823e1150fe1d556fa59428 000000005a83151304f6be998d66d53d4e684255955d352e85a65e7020801738 +3200 00000000bccaab487030fe7c0d8d66a80fefc157bd75f0de40b6b8d61ea1d287 38725145260281c30e8155e61152bb780c54176353a201f320bf169f8841a569 000000002cc7aa44265bc9802bdb2aae0fd16493a861779838ed65ee1627351a +3300 00000000e5a427932794530bbadc6a9a6c354f030da4cd9b5765d866b51502fd 39ae64132d6b4a2d08467bb53a152455126527e2e78c001a5e9dfb25ac1aa14e 000000001a2b99010ab59e07281c075ffdde342a1564ba1419036c30e4dff0f5 +3400 00000000b6641cc18693437c5208bf362730c533fd3ea4cca364793603bba957 14b8241fbdb0f764749a574bc3f96bf9f1496f6bbe075008d2d5a67827b8c62f 0000000060c90ddfb7ddbdb075faa171b7346afe6b60681d666d7b06cbe4fe09 +3500 0000000022d49c5a3b2587f48bf6583afccac824f5b7535949afcff3ae82a44b 87c528461306aebaa8dfd6133a191ae080ced221da46ef651fb8329856b78df6 000000007f08fd0d06d1f19d5332accaccaff19e80616346b45f9ad3158e8394 +3600 00000000bfa35a68d94bf878a712c538484d8bc272c6ddd70de4e636d55f45de 44dd9f3219ca823c9cdc3874195dc8744f58814a809e3925080c16f0737ba42a 00000000caf8f5eac6579a9b86bb669ed9daffb99fbaa1786b104e150b825aa0 +3700 00000000d9edaa8b2912a17d733001a1eac038171ff6ecb2ea9df6e7a0283dba 1e6c98d4221d7e47057d484c05bdbada8545d5fc11289ee06b0ea4182578613b 0000000014fe4b2f902e7d3da230590f660b4ed8e3029594ac4c3f851f22b13d +3800 00000000b590a5ff44afeb50e51444d8b6ccd08f6232951316f33e19b5ca5ff2 6dbe9319b26b34355da44de2f5ad6f1567a95b7e6b667bfffe27e6b81d007326 00000000a186abbb4918a881df9adb05be688a3d51d8ac6e33b599d752da0b25 +3900 000000002f02872c40bb68c0e73156c8a0c7de7d84bd01c5931775f1c123f2bf 5b9061b12bce000750470d1c883fd5c9f0cd4f6c6805363bd1f850cb9ae6eae7 00000000ff3332353e803e59c14a8093f26a4e41b2ec7f3544b9faf6d7cee08b +4000 00000000922e2aa9e84a474350a3555f49f06061fd49df50a9352f156692a842 e5ee7d970261efa36d3d8c5156808847ae1e03dfb9f66e1b1dd29a932a2950d8 00000000a86f68e8de06c6b46623fdd16b7a11ad9651fa48ecbe8c731658dc06 +4100 00000000d55579d1311c2841fa900531f34df1d543ff52598f2d526c5550cec4 ed4f991b8066f473311c694fd006ce18bdecf874098c11dc49730332ff3db23b 00000000367551c3c80466ccaa7583ea433b57aa1e48b9f312775b32d89beb50 +4200 00000000456431810949b7e73d40120a65e6db7353db1c7da8dd141cdddad4b5 e85915de9256ddcc4729627b7428bd94f77bf5ff31a39ecda740e0697144ae95 000000002f099129f89e7f425d3d846c15ac86267f65904deb73999fe22e334b +4300 0000000000b54b5510fbf287ad4c31ced608521b2ccef6c7ed8ef033060e3eb4 16a8e12de6b88b63a8ad62e4f7834eeaa342c6acc0750dd8bed68b1d5a0fbaea 000000008baa63431721e601b2b003bae7726adee3086867863657283dc30114 +4400 00000000400a81e69af7a8431f7e42ff27f55666969731a52b821c6b0f206a3c e1d38c84be22f3770bee1025a3f5430962a0da0233632d61d8531eaa3c668021 000000000650038391c2d2ff162be23c9e43e1c9452929db31e7ee8374a86a7c +4500 00000000015a64948e4248f08bae4f0e9754dc7a747b10eae2ba603d21dcf718 f57165a560a2da613a7604c97dc23ff6f4905c1138978ce31e151e8f235e317f 00000000dbae13c4a1366d42db3967b7cfc7604675cbe8be06ecd08ca7fb97b4 +4600 00000000013f500570b064a9bcb07667ca77993430d602eeb536cfe29310d636 d111c0044410a32a1a8deae769ef1691e518d07f81525371509d498d836a9e46 00000000c85651122f4f03d62f864068289e81f39e772314dc87eecd075189b6 +4700 0000000050cbf0bb4491affd04777b895195114a6a2dea7bfa51f1626d58c1ef ec44c24fb19120e9b093545e938da065bd96f33150e2e757a8c4420c5c406a55 00000000d6be90582197a2edf3a3a69b11a0672ff4131f2554d15c750678ac57 +4800 0000000097ff6abc82bca6f90e04c2f898fff86a3f13c361a712d4722f6871cf 503a2c7746c9087a019fbca29849118164546521eef55b2a67fc1eb057b2c847 000000005f9b24448be4d2c0216ac940c35554a090c12c1192603b068e2d7be5 +4900 000000000b1bf41e99038c31539269f799725cb56bff67f7a2492cad380d36ac a15936bdb986fa3ffbb2af981504aab73e32cf7075c33fd681edd00db827e44f 00000000c6303c4a85f581fc12d76a945055d2134c18f7613493d94c972d5133 +5000 000000004d78d2a8a93a1d20a24d721268690bebd2b51f7e80657d57e226eef9 eefcf848cbe224da12fb5b00e3edc7820460ddb9d907861a72b044bd7d3bf72f 00000000284bcd658fd7a76f5a88ee526f18592251341a05fd7f3d7abaf0c3ec +5100 000000006280c0aba2c1776df0eee0b1f6a773e4d47ae78ee134bcb6ed21bbb4 06e4e10f49b6872fb60b3e48618036add258d0a6cb3ab4054acb4835fd275ca1 00000000aabde39b81be3d18ddb1e925e3990f6c0f011e6ee6bdccf52ba32531 +5200 000000005139fca0ddd3f3ab9372b45b51171e3ff9568dc2e5c756d08db16b0f c57a3a1aceedb20cc6d9fdd83bd423301309e89704e873fe8711bc28587d885a 00000000a7900a5c3cac254aa7db9052d2f694529a49c5b0477bf4d1e09269ec +5300 0000000033d54f6bc59c7da718bf75fe4073f89990f827dbed01469b976f86c9 11342d7c97baffa7d95dff7dfc4f1febe643d055967374f753314147c0bcda9a 0000000011696100810276aa2c187641dfd89e734e1eff851aa9f3cbfa869f09 +5400 000000003819e45f96d069bb41dfa72e94c0ee0c9c97a1b127b62e8613b71374 59cc8dd9aadf3b16f8f6f7f3af96ca5667497c1f34330ffe6226f24637f0d034 00000000fd4411e3f13508716399cf84b669649cc9e358588af36400f71e9cc9 +5500 0000000032f2fbfb5849e57629bb28ff2e79d4e231fddb25b183a2b13ff2d123 f2c509c69a0479bc3d8d76b52f46941535a52baf9b9886b67ac8cb794eecb9a4 000000000dd21696e382cfc77279cab9a6194280fc602d1ee7a6809fd549534e +5600 0000000089c7926f6bbbcff90daac70c8817a40e6df58abea652dbb6f4feeee0 15c4d4820ca83694cb0175bd71fc3b5397d2ba35c645b7ac2fc35c96c4764075 00000000423ff2bd1a5bce685406e1d166305f17040cb3123c1f52c93f6c1605 +5700 0000000092401f6c614f894c6cc1f2bc24a68c817371e82fe06cd9a954acf7dc e9499b22220beb6b8c6394a4275f5a018ced5e4be567a15fde1c020f1d885082 0000000043daed14132a6a3b129c5a87f8d8b27b818878583dcc2702fd32a479 +5800 00000000c93c9874db8d899f8409a98980d3cf2b0d776aa8e18e82a961d7eafc 728e182c9947a777de3b0cf294260a7974d65c558edad8fee4f71d091ef46a73 00000000f94d02c84f733bfa4cf26bb87a44b6261c2b62c659e6f582a402727a +5900 00000000b81a499a58a1c13ca64f6f2bd072bab8146e3067b29dcc1eab71e926 c153082625451256a6fa8c22f9c1d30494e2bfca51ce8a00214c476bbdd01ee3 00000000e2ce26991d2fac07c4600b4881e91819d186aaff6f530ec237725747 +6000 00000000dbbb79792303bdd1c6c4d7ab9c21bba0667213c2eca955e11230c5a5 70e5e7f91278f4f854a17def6fecc396eeab4a06022d13e7bbe4c02af852e440 0000000055fcaf04cb9a82bb86b46a21b15fcaa75ac8c18679b0234f79c4c615 +6100 00000000707f5eba0caca3b6e725956e92c62f68c114a239f49ca9cf2b043801 d020949680c2bd5c6e7166f980a95db28a39b5a66ba7d4fda9fdfa2454f5efab 0000000065dcc2ca9250ed1e6c5d089663266646ece20545a7fbed933f3e8753 +6200 00000000670dfcebdfff4c8c0ef726645b0c51400b464b9f55c73e6377f160cc b55c2138e006e1072455e5bcbf02a57d5ff17c9ba47dedb1879add535e882292 00000000ce6f8700f60c1814cf727e5c05360bfbf87676f6cbbd8cc1c89c6d1b +6300 00000000d75f53340a8ec23ae9396ac489ad788c2d1becba57a2e468b29bdee7 bb8dc720518101c2df2d425533b92cc9f377f345992b1febce2fc5126b1d408b 00000000004b166c36d656f176b051ebe712ae69cfa624c5ab74719fbc6c7a56 +6400 00000000584420c089821bdea32f64a73ad055ed814e90972f9108cc295517cf 12bfe69f39aa395cb76131d35c5824a0e1e4c341df4466c6098c5551125dbd1b 000000005e7d5b3a44803b333b33ff2497edf213b1c7910277f49c6de67122c0 +6500 000000002dcb4a3fbf33a516ed4ae12d08f11c7bfc001271f9312a31eb6dbf52 3f416b76fbae6c52e5a6d601d83f7f789d7b2109f7396159e3990b86d25566c0 00000000bcaf0e3c091ec2cdb925f8582cb9fe04822f4ffc1e8da2760bc9647b +6600 00000000ed467a2513dd15679b22b20138d16b7b608f6ab79db482011fffa423 454291513f806f4ad196e563274fea09dd60b5cd11d9cc214a0d5776f0092130 0000000030d8559b2a6a5e5191bd206ccca9278bf37faf042f61da3e4cf660c9 +6700 0000000097ad82fe2e9d3ce60dc11312efcdda3815e5b1acfb886a787ac59c4f 7f21ce118c91b4d8b44be5e437803caf4e3557be15dc5f3cf516200f2619c13d 000000003fd1bbe55cf76942175b13d725f8673722da819040844e8ba3019bcc +6800 000000009dbf018a558bb165176597ef69cc4c4be997f94e2c3e160059b93667 147cca1063df3a533d1ad86c6bcd7e1a5c26dba18c34c203ef8c1b7c9346b1c3 0000000009e116a06e5a8ee2f64f3777ff2d82cfaf10a97a6a27fb947a835353 +6900 000000002855bc26b205524b86a8c5440a1fb7f05b136d840310308716c3a3cf 0de1a4a3c50ec195719af79b3d87d3399a39bfbbb3e6198c0548917f077bdcb5 000000002bb02e73ed4eef388e4c4f738b688cc02da3265fe0a57fb8c951feab +7000 00000000febe750c27cd55f8bead2b0d4faf33ba961f9e3c0314791ab90ade55 c323d94e3df5cb4963799995fdbfc638149ae2ff670493f341b74afe380415af 000000001bbde9ca358ef26004688ddf7f6bedba1869ebf2482831b6d1376be4 +7100 000000006171874a43a089008ad4dd754d2b9fe0d2340aadf5d2f6602453379f a4cad4471ac1eb12685afc87505e382b1668956bba0e8d59cd2457734dd014bf 00000000875b49bf7241597cc91fce9cef41d74252f28d89caca66e6cb91c99c +7200 000000004418cd7e82b76420e68870d9200d1deeaa334e5733a41a348fd948b1 a1fc21e8b371346423920b655c3fd0835d537e4da46c1600b1710b47e3da3300 0000000094f20fb6a309b8d5686a13a9cd3fdcddac1a52e5b7c5660e560cf1b1 +7300 0000000033ae4665f982447e4907d14478d018a37ad72ad9799cbde30a864410 600131ec110d97b6679e5262f44631c3eb0100f3710d5796a1c0fe8018816063 000000001f4f51ae1ff49aad126b6e1e2ad1630e68560638610f56818c253fda +7400 000000007f2bdcc71d60336ec1636e0d034d73362b86bd75256b4bdbddbeae78 e1c1e0ad59eb98ea562388dc57a59e9655a2aaf7c44796eb7cfc7c83bcb5afa4 00000000faede889e3a01b997f793321c0b482da1b4a019386f730427d7370b6 +7500 000000000ec68b31e49154680704cf194ed415a8d978343a19de657429de095d 6ecfd23481b6a1e14557f860af716edbd28efa11f86bb9af8c506a1dea3ab4ef 000000009142a40196f95eb651fb96ab906f06fad66aafd95bef2e8c341fdf6d +7600 00000000976df3c85530c4a7e7545405289688896dc75026c1c9c3d5d63d76df 285525ef8d6b66f0e2048f5f3cf21ffe86e8bf34b079937903e0b05ef867a464 00000000c8891dd7682afc1be593d084b2ac3f0d43427b307df172ba50bef104 +7700 000000002439994e38b1e72809730bc6c074baf85c6166821b1d8f9015e2f569 f4fb3db056877d6ebe169f7e0742b60a139e3043b8e6fd32174d2cc4603c0434 000000001b5b9e27fa2f90ab9ba101b4bc9efe9b80ba3b1f3e3a0c0f25a14f60 +7800 00000000380462e5918211a1534e199b6585c139d2bf7ca7cd38b60e650e4600 a445b753b288f535053ff403e4f86b8a5fd3f5d5550571882f9cf98dcd60664e 00000000547c975d1418ba51f5a154c01e7c3be2336db1bb54b911f1a5b0dfd2 +7900 00000000b5514e2e72cec7ee5d03cedd91dea5c31580673911d159711035e2f2 002e8a494ae2a24b4ed4684b5d3f34af9bc108862afddf6032d0c51b96ad4db5 00000000b07280236b8b97753074465f2baf0db60530a44f3629da847083f086 +8000 0000000094fbacdffec05aea9847000522a258c269ae37a74a818afb96fc27d9 cc5495ed39c9a4be40e79061db25e861b5c0ca07b5811efe26a5661d2786528d 0000000072e011d1731643b13159a274aa0d4e15024d534e1f62804a018d242c +8100 000000001979ca78bede4c240bc903db3c4893be5db8b6fcc09c9077cc820082 038ed1e28a9326e5c03b3b47da235d9553844bf1855f3fc473de268c885f9672 00000000b8dc5f844239cdf2a13a5e4a71b3e767c13004d310a5042696a0517b +8200 000000001345c8c75cb9b340e9e3aed752ceac79c000353a9e456f545a701b66 91f8204d2886c5f1f63e00a4df3e74ccec024566027a58d6a456ec58e00f9045 000000004ca8bd5222b4a82cc4817614f67fb4eb487de9cace123bd3bfb13417 +8300 000000001af2bc6ce395f9495ed79306719e34467152479862ecaed4de7fd1b3 289087f9b51a7b69d2419bbbb63f516eebe9cab76a92fe9c573dbf1cb077916b 000000001751d9f38fef72a0202ff032d3e9c808d5fb3950fffdc8a83a759977 +8400 00000000297c8bfa5d4cf7826f31f39d6bd92cbfcf2ec9ca2ed298ea471387d7 aee3ed8bba701888924be6e4ce3e8fa00843cf25af74a88b17c8b18058e35466 00000000b0be827c7f99d96cf4e9187ce77c0f3c67613fe1326834706df88492 +8500 00000000aba1f720821fac035481e72eb918c138372260627a3a976aeff59226 c02e22987beb0d3fd38c88b374325fa886a1059e0d5faadb124be028a0da2859 00000000e6608bf9e2f018f1534a0e9ba82ba0c40eefebc144312fcd8e3e0abd +8600 00000000312efa075ffb31b57ab2f1239105155c51349b426c19c112c66474d3 b77b91ddb674d0eced1c77bb2e7e302347ffc9f11e0c404ace5a9c260ad494b0 000000008849986c44878f325590e577febaf1d60c9af9d79411c664264e5c0a +8700 0000000041bc68035e785d030689d2d0c50c019a059bd370d40ea78cb7312a1f 6986f51aa3de733a988ab45ddac33f6188fe8cdd903c2e0927d526dbd3914c7e 000000007a7f2fc8caf6f4b7ba2a661f086999e5d9f6d56aaaca148c11f5ed10 +8800 00000000a6b938f2407fa173d034c9da999e8f82ff27503edca069b88dd9b1c0 f3f69a799d8aa486541c4e6c36ca983b8dfaf3a706a98c466044bd37a56c4ae9 0000000074b5bae4abdc95e88f7e12e68987856cbb384d61c3355bc2b9be4b9b +8900 00000000f73fe67c4b7c62068e1801cc53d8333f951c14107e70f8179bd51cf7 0bc998b2ea29e23afe613470305236f9a2d80f731760c98a6984158565efcfa5 00000000d44e8ccd202074e7c892d68eb22dbb7e3a2201455cd7c7e428d3c2b6 +9000 00000000415c7a0f3e54ed29a3165414e5952fce6848b697696fcc840011a5b5 6fa42bb7d1f316f6012457a23853cd93f23377cb7fc948c2d54f7edb63afeb74 0000000003755221a82a55ef769e3a785768fa567a1c03580cda400656f2b216 +9100 0000000071a164101778a4098e1b550a885fbafcf6b208291529e8386786a4c6 19fb49da41c797a6eeba391bdd0f2aebd7c6f6eb1f8d0cb9a2c792e024808451 00000000a23e5952c979ef6f8e1f90fd2bf52943c4a3e172613dc0b770e7cb31 +9200 00000000821bc8b810300b56540b47d14ed719dc8ca50c941b4ae139e9f2d3c1 a230281bdd5377839a51b54f604f6016b5348d065a9a32987818ebd5ddd296f5 00000000365ea47381ee446a6a311955fec1dabfacb83a9ef57b8ff34b1ef6b0 +9300 00000000af5423167651b8b485f0bea8ced1bdf7fe832821e5fad4cc27c59195 d784fe0f00a287411ec93e8d51927b48cd67e547ae6b74987215c2269ae32e6e 000000000ce946ccf793f66a47c78377d7a75010f71ffb4c63923456f81b13da +9400 000000007499730f719cfc25ef66f08bee28bbe22e91ba9467f72aa5d209b760 e4851201741cabcbba77a50a865dae9921823a668275198b21aa480bd00bc809 000000002c60ded12f2b34694c99c395c323d57b8d30ff752459bdd1c6ad7535 +9500 00000000436e6caeb22a9132729282c21b123311ee09b5f79f1f061325f1776c 3edc23b203bc6ad69309cc79a29272c457991177a53ffd18488466c502c72c56 000000004383fe923306472b416c0c2432523b3f5fbc2ca25def2c7155f9b5bb +9600 00000000ca2be0b2535ca0dc5b74a3d59f3209f664c3c6dd016d227d31548995 46d7b2f50eccca85e0c5d7eb9738b0d790e2e5d7df65a28549ee02a736829818 00000000cad779b7ff1028ba66f4216ae112ea9a5e7ea26f109480887e3ff5c6 +9700 00000000e9e87b0295fc0b953f70dd7a4cf96b2f44b02a92f5673065d92336d6 40dbdf499c9223ef733e369d2ed3600d1814a90f9f1fb814ef6e616b46291865 00000000d88851f4dedcff7b938afedb0de4723f32ccb96b0222bdf4b8e057a9 +9800 000000001eb7936cd07a1a9d2454468f93c0732bd12c2c19433e0510b6df71cc dd33eaaaabc7cf122264d2e78da9e8398f1b8758d6ce41b5abff469269a6ef2e 000000001e46be0459127a37770c88d455485b00d3ea4a4b93dd76dca6055401 +9900 00000000aaba6f091b5f8a356dcaee98fe8c5ea8bc915cc4516dd9da528c0724 84f000092ffb5646cff59921132280cb72449885f3e18cc3b9c61c477eccb3e2 00000000d79c1ab80b93877791d7fff8bd99c8c45c8ec876ea670abb4caab165 +10000 0000000099c744455f58e6c6e98b671e1bf7f37346bfd4cf5d0274ad8ee660cb 2b16bd9a8d2bcf9bb5516f26ab9ee8d295775bf9b9a37f09ad1ea2410e1aa0d0 00000000f01df1dbc52bce6d8d31167a8fef76f1a8eb67897469cf92205e806b +10100 000000004dbf0b1fc7bb7dc72423352088d32d7a7d79c4d78144758742071716 d83110dac98c94266454b3d3bd2e0f1d050cf4951aca398314e18717c9968599 0000000097af9ac5783cbd948785be9ebca3373681a2f1381a5786c1cd943770 +10200 00000000d3d29e4d734dbb7ab2a2d0e4b8f4c14ee3480c0ff87468498465ca98 a0377517df50bd7d96c2823fea3e7efa6ceead626a265276902d42fc8f294fbe 00000000b59ed5e53200ecb890f9d0c69754eb4f38ef0829f2826beef2f2e366 +10300 000000001a02dd5ed3e0d6259139cf3ef6a981a1a723f431314039da8e7c6fc4 17b222e05057be799da430ac2a8676148ebfa55e837a88b261b115d934cf487e 00000000517960a7a42852c9bca0b371a5376895f9d8bbd7d6739535692f751a +10400 00000000754ffbb3b325c4c9b3d2e42a0f4bbc7ac6362d07014b6168265b6dce 01d005d4e60bbffa46fbeefc8925665b32d73d829e7383bd13570e22537c4eda 00000000c1c52eae8046c026a17f751d76e78072fa5c8382553515ef70b9014f +10500 00000000e6d1be14564ac099e26074c84e8c5ac8332413c2db3cafc0634711ea 603e5afa7684958105545e544f5ffeb576dc445e121ea20cc7355b6e23bf83e6 0000000075dcf7b5533218b4614f843149da32645c339352a01cea8263093429 +10600 000000007c5e161f7c54a61eef5cd172ef0c80ffa8eacc481f257d9237982076 b8669eda2ccb9851acb61dc4ba1bae7ce1a000bbfc208a6a4ea6768d54a21491 0000000095723a47405de14a0a6e7d14338beca28e6db53e4b6b1f9536f3a345 +10700 000000002239d890b1aa3bcdc1752414c43d6db9df67a91e81c3e8bc64e4923a 08d3716ff5e7f9a02bb9707301b351a5eaaeea94490ba671669d5ca9f44ee93c 00000000b42d72ed212ac51bdf9105028fc58338f2475094a34a8439949d92a0 +10800 00000000707e3f89e9626b9379aa1a1157846ddbec7a6aa2b6834eacf957b776 de70e69eda3d95c12f9a1d1d6ff4fdb248790d1e1a0a43b399ac78be7242ebd2 00000000246ba741d5cb6dd08f096cd553df34c67121f6ba1a5af07279022c5e +10900 000000004e501a8a9e3793343b83e86de60c785744ee9dc3b741bc9cf92d728c 17d93dcc23b4704ae1004453674083e40a270e0d9821f0d5e308bd93586f02d2 0000000090f705a252b37b8a6c6102062dda3b13e4ff50c6cc1e8515e4dc2365 +11000 00000000ea47d068e0ba9b4d902ae291850ac59cf29c2b89b2bacf3db3c37e3a 0b6cbbea53627d015a5a5840522b550c60b007cb1ba66ea99e788b4d95b03e5b 00000000e8c8c215bb95cf5c4bb248ac7ee0737f26c5d64dabba3cbb32d19cb0 +11100 0000000085d3fcf3e1c6f635ae79ffc9c03f03892ea87426ff364caa9aa2e69d f5bea04526eab8c6fc03878fb52d0ba7279133d69762a9250e992f4ab5227fbb 00000000cfedd561e7719cdb3451b4cf8e6d828e512c49bdee5a75ccd1e70919 +11200 0000000015ba8c6c93bd35fb39eb74410becec279e022b689e97d41f7bb0127c 6befa1ae26256a89a43139b317af2d7c983559fd2cf779fb209cb5b6b0a0b3ad 00000000209f70fe43885ba809943e18b601dd3894cc5c812b69277c963a4ffa +11300 00000000824db432f3f29f23f55a213eb0b64b5637f175e3c43e1f79971a60cc 30c362d02c0114f9c398a74ace9ba5220162eac91eb789268be9d1fa4dfee696 000000003f666322c2b4efa08c6604bae64eee2938721bea9fd5e22a116c9ee0 +11400 0000000024c46e44075550da5ddb5964d56aad4ed929a9809e3364ad426fe181 011efea3027a039a43e59d0952dbed93c7a2805a953fdbf415f3b3d83b64a165 00000000a47707fd279a58ed9a9790dc8ad872b7923d49662b17569d8d9e4a72 +11500 00000000ae2bd594a8286c69782c87bb949710fb9078798609ee95731f3d144d edc52179807e30d63142763412d4ef5de18793ff4abc593e00e22ff3dcb59cbc 00000000622ce481c610280584c7216c6300f9592c1cf3830e3984dc70bc544f +11600 000000000ecd3faa889f77bfd9a25d82b2807a068f093557e27f42deb6f7cb02 b4fddcad1d32450b2861be65ce73f86cd8e4ad7c1908537a650ae140f45364d1 0000000007fd6d38cc1b0e24b5a84d7ea4dc7f9f0f2679a1074736f5feb50a87 +11700 00000000d2a57d347be15186bac207ba6a352eed2908599aaa975a6d99422721 c3735357d706106b02c79f69726b6131bbad62e7b3f540ddd9eafba96492f4fc 000000004c6467559cd9e57d3036d03e1fc71da79fcec733cc7dd963bc7df097 +11800 00000000129b70ce4513913ed3233d04770c709f9e8db99c9e4323c7782fbcf1 7d442c486f38388fb7176025820d7e0765cef0c32236243d5dc96c5b931ed00e 000000008a974b4db7f824b16a4c36e9fbcc63bd0a20000414b61e72035b2d3c +11900 000000005b5291136e9d9cff55abf0e315318404a559e716b3255d19257abef7 ee84139576048fde97c2d65e947fe14d11308cc79aaa783ef94103956b8202c8 0000000002d604d1d46767bcdce2f71920eb31a66921f64744efb9ff7d333b2a +12000 0000000011d1d9f1af3e1d038cebba251f933102dbe181d46a7966191b3299ee 43a1c641b82a88bdcbfda344c4413b44d092298bcbc152c94c81f5cb0e98c27e 000000009bf236ddb082304d8ad0954cd3292792c4958b643f2ec3c1ac3f026b +12100 00000000d71c465401ffd4935588ed9f715751b0daa272b5f1ce175bc4a62194 d29cbe0871418dae18d31d2a07f5740dc5855d4f2311c340b7bc6638066d624e 000000001bb3ad7a1446eba07686f32d379c0738e74ed815fd97885dac173374 +12200 00000000b9601188fd6a59bafda3a2feb5bff5fa7b9d6f5004d6140e511bff15 d149fe0bc250a6e3d5f0919c3143d9198396e9d105093fde219354b8ebce398b 00000000a37fef4c0a479075783dbc6aae6ea4472240e148ab3c26cb6df21ac3 +12300 0000000037f68fa8220084e201354b83ec8fda23d9ab65d606e1e9400f6ec009 84ad4a4d62439e51db6fd03ab09f65a82795914b8e11b76816d538ddf9c06994 0000000052b14f173760304dc2bcc0b3bd6c50aabf77734d9ef0582a7a39962f +12400 00000000c565a0514ed49006b5bbb429c46683ff15cf3c90daef8a6b80724ace 3bb633d09209572c524c6784b6cc4b5e16ef3c6844b40d4360d325889e001b85 000000004ee96874c5ae3bf40bb3c5b00aa95c526a93cee7d9e272e185b3d3ce +12500 000000001d3fe4f9d83b8616e09d9a95d52f789fb875ed6e0cb1151c46c9d0c8 c7e0444e2b051c5b60cf896643c000e059563649f3c4718344f58760be77e77c 00000000e82eb2fff1ab11ac39ee85a82a3d74f7e5d9cf975923bc028aad6869 +12600 00000000ad6ee886602ed02e8b95cf1f505003641923fee37de5ca1d0ff2a847 1ad86ce7a6c2656f24666bec65aabc310e34a73b4a48868d28429098f8af359d 000000008d612e3797a883f4cd99eb5e53e0f8629e41a76294ab46e2f7104558 +12700 000000000ee7b6b2c13f68ea175b5289d3b9dd265d2743802619af9642743ef2 cfdab3dd1b1379f601f5dcde0ff38f5728c59ac05115749d745eee2d9eda1d23 000000001944ff5d790a51865409cce44fba8c95e814999b37f28e6d1734da72 +12800 0000000019bc5480b84950863db6812b824ea5db26e393cb2d440d1fd3715574 e11ed8b2e42031ef763efc3a1115f06d30e5ffdf995b72ab98d62ee0c4f03c1f 000000006a5cf979d10c2a1e1a1bc5d02804722a1ee97d2512a686777c0234c1 +12900 00000000f7d7ceef441f9df1da26114a2400a742684b8276c507b53035cd44a1 00fa0f730a704a00c7f088aedc9414931cf194c9298c93cc6bd6444567940dbc 000000005e87b918ea95222ed7a17813a6c1dd19f63612657a22bd7f16dc0e8a +13000 00000000d85a4cf33f325d339b43559df5c8aaa1c2af2c71a1255e95f6038b5a 7e2c6ae7ac4e5373b19715ead6a576aefaca9babe5e3a586dc63d2d4227547c1 000000000b8052896a16fc806fca2959b0109ec20ad0f7023b162060c693a183 +13100 00000000fe4bb91998e202103da359565d32c4b4461a7234eda2c8f4d13fac04 a13a507bd6ed6bca4ab0ec9bb66d3b47ff0d39b8b4acd31b58633088781ef25e 00000000f73ae9e3cf5578897a85e3b5cbc32349d5945121c3844de1c71259f5 +13200 000000004426b8f8aecb1cac441ad7bda340788d57e8a3566fbc522e7fc84406 2d111f77aa682edf4da1c0442db49e933fcfc4be1c677c00df0e82d9c364b208 00000000518715c170dd111de98a17f39f401b5777f582875f1ff51fbd06c2cd +13300 000000004828e05f79d9e6f7c0ff5d81c367d32cea04b72a0e4d18ffc607400b 2a01c67f8cbad4ea3b230c22df68e3b9860b86851a480e3291ff657b56bacaea 000000008b382f8dcdfbe982dc12547505ee9dddb34b5708e6b0ca95cd3ae277 +13400 0000000049a03def008c43a709d320a71125fb623733fcfd6a8adc882c70ae0d 50f86a22d37bed18445d6244a9dbc563242efb5e389566be2f4482a8723872aa 00000000c4b3a8ebd661f37381279c7ce01f7d0a962e572fd6903da50998d245 +13500 000000000ee07793903b338cf2019da24f2a34386d56e5f5402dd392cbf24785 ce842f21d4b4f11c5be1e143b1011de8756fcf572d1cc5361e7f21de5fd9e2c3 000000008f60f1dbf2695408eb31d0407034398befb44ad27f8c06d05a2e8198 +13600 0000000006ea563a08f0d7dcf808ca93506d2795cc202a91154c9089a591d2f6 d28b86e53b959c82eb12bc2b03eb036f39e0604289b8e4bdb2ec658de0f13e4a 000000002259e1ede7d2d7b0250262a18a2293b32c56da4c82d265f368738c22 +13700 00000000248a9d6668ae484c742995f1b21a0d2a083143cdabf6665d061e2d2b 29018925b827f7dc8ae093f4baa6318303c375e915a7f63222b956ae9cc37595 00000000a09539d95e6ca95111641ecad17687ebcc05864f480f112457163035 +13800 0000000077ae1203bf2923b06f2353350e2df017b2e9e08854f78ff013b948ad 6f0dc6cdb7082e0073f645bec6bdea00493ba4cd0a19b9df0a6210940a9801a4 0000000057831ae615c7ef5c798c86e00fc57bf68186dab9b90cb37c1363dca2 +13900 0000000062619c9794c44bd6fbfcdf034adc67076485577a54ee5f285165d2be 4da35600c143d39ec74c2d9508714ea6b03421f068265e29ea01eae4cab7dc72 00000000b37d7a36d0cdbae4bf013ddc4087464d3db14c391fb5a1c3459ae32c +14000 000000002d9050318ec8112057423e30b9570b39998aacd00ca648216525fce3 8d26d6dca5672b405fc81c75b7bbfb72d56ab1bfc0b150253c70f52baec43110 00000000b44efc0402c4841e13c29e2843776abd8ca1a728b4d12a092966e87a +14100 0000000036735c63fb9c6c25fdeac09abb6a3d991a6910ec88e5ca8cc8627d5b 5a078ae114ef8e266f958e48fb46e3f427184ae4448684f707dcaf8faedc8702 000000000dd68d782e2c4bf63aaafad290ea0c28966ce2914078670baa747e6f +14200 0000000059bc248e02560ab9d2a7cdefa20176a800b71e08fa7af19dea403d83 84ba5a38a1cc985e40e96e419b36a8b63568e72f31488830941b3ac6321b4a16 00000000b7f4eaf916e6351c5af3d69a95c833a22cf87c00f52a18d232f785fa +14300 00000000bbf4e352c9971ca07752c990027e0b68cc5d296e8637dea1dbf845f8 8519f9459eff0d528198576fde2bb4004df3d396ae20a668decd118fd1334636 0000000046f6e41d8675bc2924d33dfbc969bc86e830ed0f186eabd113526249 +14400 000000000595a55c095ac3b4558a03a1502b244446347e8d81c1b97b701522bf 59acba8f92560c13d4f2136720a51ff2c19ac391696bfb9a47b55a211f23a8b2 0000000028e4478dac4ddf81f9344b5534f9d55b78a1f1a531545f1a6c3b3b64 +14500 00000000102971fce5695c52a40b5f427b20072c583250cbb57d3ca27923f584 99acd415ab692429987cce0d95317ce5e5e00ca4d898b86c0fcf584d682ae17c 00000000d5bd79e259e807af99992bfafcbab4094dc7e1af5c7b3dd28a2adb5f +14600 00000000056e118d4e662ac66a37687ba186d563acfe86b52293df4ca787cf9c df6ba09ccc309ae8c8cfca306fb0dddfbc66457e650c17ba3b5eaa14869abe71 00000000e72317e3692f1d3f3efa4d5d3ea926e56cd6a850efbad426c8142d7a +14700 0000000074882bfe743333f8e5c0c1adc560444b18d41334164d7862c09a0cbc 26fc460f6c2ebce72540b8cfb143508d679bcc255469e4ab7772dfe6bbb50d90 00000000ed0ad507d4c53ed9433678ab12b28925b252108975ab3d9d8b68a8af +14800 0000000001d994858ca98829022fcab874361539845ed1c2353c82c6373ddf49 fd8b2f1c65f8aaff8de12b8a0dabbaf3fcf047e47db32e8b9ea86b81bb2dd645 000000009d9d4cac52c74bd968bebe43edf132f2a1487f2faaed66f5cff44fcb +14900 00000000171391e38f611a6907a387948c2dff5a576a298cd2c0017fbb6d1493 2ab74bf138c3a84943b9e1cc463a1a26c36378bf5edfe81daf6e24a1154289ec 0000000009bcc61ffaa883ce16f2d88b62203f04a5b5128bfad9a359545f7cf1 +15000 000000005c3548bda7c3d3e2fb2db21f68b87f47dd8b7ed095dfeecee76038b7 844c7c17bede5cf3035a04d7343a8e280561b19bd885592da26b88a7aa61e89f 000000003dc0cc439c269a5cced1a770f65f4e59e0741fea52edd9959a1ced13 +15100 0000000037b9e684a7060384a5a7d607793a5ed2373fcf6827f852015f18cf36 6a1d1555454fe5c3da69a69f14da79b15acba0dc18052dff78ecdf7e1b5e831d 00000000f0f8de4daf1f63123948ad2dac134e6d3b6db30ad1d1d60471f944d1 +15200 000000007655941ae9b51587e3ec3b1a2fc6da7b0cd152720baa6cdfa3280cf7 a2782b6b82effbe9483b054a68fe9e8e0b4b67d1496b375bd9bfaf7bf1a1d097 00000000dff236e856854b2aec23d07807520e1ba9051b8e88ac9f9b3d0dbf83 +15300 00000000ac1debc9b9a430372843951c8a4e61f12bd561d50f5d96ecb8326042 bf9aa313605353c4235a55cb12b38b7c8256373ff505e4a7d9bed88eb9d99a0f 0000000068e432c0e63d1a4a6428280e261ae45f3f6cb40c0ae732eb122b97a7 +15400 00000000cea8f9819b976381299be1ed0ee7bf50a43ada4be0b6586ee2df9d08 f4b85e7427c7fab649da0dcc2fc776a48fd060c22ec131c9f5242e13acbe46d9 000000002aa6a35fb54b1ec830033e62eea9ea88b95e02f30ecce0b2e2053ab7 +15500 00000000ac8659ef86a83415f54e92cf870090d8a4f528b4804264e3c36ba00b 48c021ea5f3d4754cd5c584a668f433989d29033c209605bbbd5bda6a10c6687 00000000496de44942d7844590be1bb9ce500c59a7797ca4df406ad3968fe8a4 +15600 000000002f531045360bb2f0ddd20e04e0615d712cd17e4c615b298ed14c0536 2feaac42a198a4fef0a535d310c0de57599e1a0c24f3bb7331ad85e45960e11e 00000000e15683b663c37efd5c87ddb98851ada5dbf096b9929f0fa45a72298d +15700 000000006598379df8afb50af8bf8defddeeca400ba828fe42c93166ebfbd171 467f4621ab2900bf2b188f1d75e6125d6a34d543672cebc8247ebdaedc60e2ba 0000000074ef0662f8d1f8630ec561a273caa28846d049353ac3436dd2104560 +15800 00000000657edf33b3c852d1b1f4f7e82c210fcffde6e4fff46a0c9d8f64eeec 9ce8b29002be0a02f121fd73f6787e1c0b99f695dc2e1668c329a35af6fafefc 000000001e9ab73438c44e4a6d42b6fc2164fdfae3afb511f3f2c5364929945d +15900 0000000038b78182f7e60d5900749f143c4c33b6f09081e2cbd125f63ab4c5be 1dbab8f961d106ac1a7f0d7c69cb7d156ce65e88b9cc29ca6fa1dc5f77c4c3c8 00000000f86cd50356e5263d96602512f89b103af8e6573255008dc193ceed4b +16000 00000000679a1ab3af6da03f13a0bc96d7215e65458b2d2edfa030b5b431e8b3 3cbebb20ab230e673bb45415094b0225efb0a60329c6bbcb3f724571dfde7933 00000000bfd11dbf1115ca74217c55ab3938e59b2cf91d862c00354b65023043 +16100 00000000c6907e502c525418f7353dfd67bf15bf83448dffd78332e7ad25f2e0 54b64e241ab0aa7a72a9e2c116f383400f7fca4b7673172c77f9ccfd0c4130f1 000000007135937dfcd86ea9f941a7c006cb26aadf4f47a873385642f6f75566 +16200 000000008a27b1e1dc69baae5c20aa1c1d65d446d45556fc6069446de10701f5 cf8164ac2e6acfad875b1962ae52446abe7e5b630c16de30a854617e5dce2450 000000001fac086551ace4aeae7b8791625433a9131dde91f023163b1db41883 +16300 000000001c462bc17a8d94c169790e579b5708167e78025a3eccbb19b8c3d98a 5751bcd74756f6f84b5a9090f4ac064bbe99366389a6cad01212541510b68f27 00000000afa548bf23e3b430f407a27bb0e0d333498655ad80c30ac24846fdaa +16400 00000000867ba0417f786542c9c07f2f4d95340b33d5cdd25c3a44591c1653d0 7e454c2c77b1be7a7c751d621979c42e509b9b5b7a4dfc889573ff2ffbcc2cb1 00000000b246106e430bea62475b7053ae6094689d0c3f151ae876023b31b8ea +16500 00000000de6833dccf6ce1dc4b6861b80c922279180d7e1352cfdab4dbbfcac2 075166c94c8ee781bf2276992693c1e49335abf96a77742bea8e6d4c525d10c9 00000000a1a74c89e1e8fd8b352bc84be878eb764b80f7fa32d666c11b33d799 +16600 000000001f61302529a5be46e3591abe65d7ee4be6043cfc13ee80e24630023e d359f48bcdf3c323e7f95ebda33255332a42cbf0eed030923bc4e6c44c8cda1a 00000000ec2c48646e356109fd8006b7e7d0c4eca6357b80d7264048808331c8 +16700 000000009f0a393b01a015965ffc36fd7854181698a20441524a4d8c5b762e6c dd6620aae52cd399e4459023447c211549e0c39eaf2a42bfd7fd15f6e2a0b451 00000000fe80e7a138fc66610c711160371cac236ab83a6754753ecbd1a9a750 +16800 00000000c24e37ac749c11d602b83c6b15c91495f5a118998419a0affe4a6380 6b12ecf2d5164bddaf74a7aa89b1ae4972cbf34d969df3c19a85c20633fd856c 00000000576d86cf60ab26c1e4d42af9bf9a95a9c6c614f409dc1c46458c0446 +16900 000000003ad3d7c17ccc9cd180eefe4416d1b4c448a4194aeff173465b4823e9 2dc9dfc945558fa75df56219b229c25cade3b73260e7559bba05c996937c7a05 00000000ebefeaff2ba095d0d996d72dd9d6aeeea957997ef149960beeb96b32 +17000 000000007778515cfe0665840b3697d542469ec21bef64cf44f4975690bc75dc a33b45f760842afdcc13c46fd0d08bdc0157736b9e709bf9a51305738851823a 0000000024b28363ab1cb85d7c9cc41b95ff8d360009cb1fd6604124e5c8d8ae +17100 00000000edd79e499fad9d0fbf9452508a02e99452672a0758f38ae6ba28f41f 7b5a620da3b0979189361e744ede0d528615396666c83028f70c89c15bb36b4c 0000000067d744bb652f388b4514b50ea4e6215cb21c56a0f7ee29428a357458 +17200 000000000749d53cff439851c7713b3febdb3885df33fe0315ff3bae781af4e9 239d73250072e59e6614a83c07b5980575e1980cb4d671e7a6e6cec0693f44a5 00000000a05dead178a53ae587dec7059768ed4114225af0bc9519003eb910bd +17300 00000000ce2b9611a90de04f155b80083c3a4c17d84865a9684e6d252022f675 d2043b96c3fb11795a1a5e67589f894833f5ce01d189c85f8abe5a1f5ef38f90 000000004a8e6ad84c6c4e37e09588554e6c73f00d488c6d6fda9fd362562e5a +17400 0000000008bc4027d2e156939aca5d091014eb18cf828323f0ec8417e6deba6c 0a79359d22b977c843692dfb1f296cd5bf784b312b9b5cbce54a07f9302f3865 00000000825ba37996af0f4c7db800e6fe8935cb9ceebdf618453c2efc142dd3 +17500 00000000a359b2e0673d31ff12b3829928b821820b568404f8bb945bb9304015 37560ec477eb6a61febe78a32eebfa191670035e1e736df982f4517774cfbb9b 000000008b9870160aa9b724d3d7e8a3a3d083ce56eea67e16f63f65fb21a3b9 +17600 00000000e7f78d6ad948e18c6df1e7673b88021f01bfd1a848a7f8cd9df15e91 07aae02be204bc0b5596b5ab75539c5fbabb8595e689cec27cdb11ebe020064a 00000000e1ab4145bea5cd180d47c411c1e5f5aabd5e0ff41ec9f73d9d6e3c00 +17700 00000000dd1dfada6b1f0258b306ad77c1df49cb24c8f1186b1c598f78994e28 839999e1dd039653da39b335b068fc54f561d434e5e7d42ba1fd5e36e91770f2 00000000eef5cc4c17091255fea811bd4af3368339164ac4197d4b5739a17d19 +17800 00000000cf06ffbf5969fefa61ccc1bfc5c0db1846f95972a469f2ac0087717a 2da978a98969f78e762d83a09337739e602e2f1f61490224c65dbe133ad1b573 000000003a649dc2c71341550f06f96bc95dbbd82bdf36c527bababb453d18a9 +17900 000000007259f612c337bc4040dc9c8d4a55a30741850af81353b5dd2b9a1ef5 bb1c7863d90b5cfe492e06d91aa980750d4a68891f1b3a339df167f30eb3c87e 00000000b53894006fd4641e7cd138425683a351d10e4f1548722ea23d3b2fba +18000 00000000f914f0d0692e56bd06565ac4de668251b6a29fe0535d1e0031cfd0de 8a4892c1cfed05818bab06e025640be63d3e230d80306c07662e99933a6535ab 00000000d50b1d5fdcad186077855a0e5dcf357b246238eeeac208052a9ff3c5 +18100 000000008d52237eb864ab4a15771ddff869b21efbca234faa9fea1d5ffbbbc0 8c0f56d93b054d7a02e724bb31575ff408dfb42ca2b6c1b9c832d4a17109db5d 00000000cae545899181924c48ed1a25a1ade3527a6cf354c4e50a15ad112b94 +18200 00000000df25e07f54801c07669a5a760168a993561b0d6b99bb8408f330aefc c4db4b23504f971fc4abc9deb3b073b455385680ea002dded81ec14dbffc5f93 000000005d34961c11090dac0ee7e4fa07adb7373be1357ea71b0107b1b1a55a +18300 00000000680b8d1dc037b26b1a6a47a696463bde4791eee8778c6812466ba1af a4ab40e3147349ad339a6d980d1741ef155c7924eb7dbc70c4ca502689b35b84 00000000e30a0825e6dca65a254addbc3690f676a26147034b727b73e870ed5f +18400 000000003eb2ff6ddd60ac6d2df97c4017180688959ae801d440fd7bee655ba3 c0e9bc1205d844b9d1be01d44081ae9ce35ed70342f9661cb44e98fcd921b999 000000004502cc942bfb87b5c7a411279f33b04b01fb3e86d851704235a8f950 +18500 00000000c73951aa45ec779a3d15830e614b29ca36d5618d6d300313d68a739b 0fcbd60141f9c21ac7c2742f37ae65e67f6cc4e0305c36158cf49ed7d739a306 0000000078548086c6d58a07836ebdeb9351d60e7bb0ef7ff1434ed83fb042ed +18600 00000000c47937e237acb459ec5c2b335ddb43339f5688029b3b08b6c57cb4dd fcda5c45e87282eb476fcd9d70b276128398ad16d37fe6beb488b40a28a75a38 000000007c2b0f1a3c05a98f8da9076701c2fbc84e77bac71828b4b4c8cd8461 +18700 00000000b7ba814633a219189753d2526b6eb4781811da007a41b16624394929 7afe86ee11e0b9c611e8c4829cf82d167ef52e79f6639148f8531c26b3a3ad82 00000000df15074fee2e829960feaf52193d93d6335c06727bee2fd8a83e173d +18800 000000001e80782f725bd0932dbe0fe88bb9484452143ee0d6512ec6bc6d27d6 624dfddb0e9a9190f6ae7c73c893c3d97359c0f737bcdf55b827c8a61ca80d75 000000006bd07bdbe6f5bce1cccc68c72170a63cc1fb6c2e1cffe3e59fa2303d +18900 00000000023463b3fd0628d957572393e8f4120f1b0c482a6063fa106af5d29c 34a1cb6e41157df7498471cf1ab0dd2a14b74a89301a3c985e97a42e7692c02c 000000004eeb3c0f12b82878cd8b47c8570e08b3536803a5dc89e038e2ed7601 +19000 00000000794894208a98d6a323f37e23ead638bcaf3a2718c80a4cf5e846fd32 932b954aeafc2f94408a9dd7681f39d5870260507a2e77ef3a69f8d5b1a9d348 0000000061a6550896ec246858319b224275ef39d376da5c0b9dbaf5ad148ba4 +19100 0000000087e3c9bb84b38721a06a3a34689efa90903e7478dd3790c67ebe388d e2c4ed4c4bbd4e1dcea20e0e9a930f855cc1b05dd6a2c07cb16d356889de4a5d 000000006a2e548cf194aa2705bdf113e078969ff75dd8b8b97922d88ae64b22 +19200 00000000d7df5f0be432e393da8e2ad65a4e88b68c95c88230c55524eab87767 ad4076b1539c9a663150cead52696590047646ed54bdcb634a138b72cb34ad26 00000000c5df1d5c08d9f447de84f30a0512c961e7715d078e47e68283e75f8b +19300 000000002bd5825c558700e30ee89141bed91fb44b8abb84e52eb2bdc8760544 ffdc6f745aa71feef65903fcf50bea5c2663a66df509be878bedff64920695ce 000000001e1cf4c3fa116522625d173a7ceb1e0f78704ef778a88a0e50186d75 +19400 00000000e2977e6e496b1b15cbbb26652d5bf3b66e50909f377fc66e71bfa7a4 bfcb22b6f5c0d38b9dc15d11b669f3c56f6d71c77da19f83bc8dee8d12156d44 00000000886fdc62fe7234f8cb2443c1c387a83e0462f98e5d4939ed66329975 +19500 00000000336815bdad5764dc34757708da4ee4331aed330a7db49c903ddfbb0c 6ecd26a0c9296e53ce88fd88c6b90b651e3d65e4d754082d06bb1167ac15d28c 00000000acc7c39ff7212b35d43ecba6703fb034b3d7f99763889431ecf9208e +19600 0000000074279b4ef09e7ac31c4237829c328ba746447db16e3fc61c52848c3c d879095f7261151e631bb4bdf47e0a4781d85c17fba8b14a4c45c5afab315c09 00000000abcb67af69f794b8c81e626eafc20c2e22ac926b4865060f04704424 +19700 0000000049a9ef969e2ae2f44de940de9266ab59b624a49cdb4cff7ca68eb432 4159a4caecf0079ce3c03f5c4ecfb6272eea889c15510767c6d532c3bb29b596 000000005ab5c46b76507087ab3c9eabcb0b4366fe8afe0e11ca784e5feee2c5 +19800 000000005addbe224c48f2dfdcbb080c0f89eacd2593b02550ed0af4c4fa7dfe 80b87ea04e5d7efcdab0da947c21df0f909a26291418f58eddb6cf3ffa8d7e56 000000008748ef994612564b27fa45fa9b780c562cf793bcbd11634d6c58ff83 +19900 00000000258fd6b0eb962c811f7819cb6b6e334ccb2eadbe32f871d6815dcf67 2bfe025af78c1ba9ffaa483541411122183ec2977848c6a16a547b59a86dd8a7 00000000463aa5564f66354582e21c4cdf7b90ef52644d0d45bb7d850b41fb33 +20000 00000000770ebe897270ca5f6d539d8afb4ea4f4e757761a34ca82e17207d886 06b758a49370094c61332a4bae7bf0c5a3b0bafbfb8d5621248e3502c699f274 000000002434a3edf8dee4fe506d306c59d3bf41f73d979f30ed3f7b7c34d06c +20100 00000000202b43cf403055ac8cb9b14621ee8818e1603377265d56837d21704a 9213b6f48effc6cbf6aa1f21c1621e263af9d90a5be65fd67adc526b7511a9cd 00000000b7f20290fbd1821dac7c09c73677efa02252c1678cc14e9a0ea611c6 +20200 000000007353f9a66d572101425c512e403ec05a65e0e09c01c2bc2abf109bf6 153e65924951c7d23bf1bb829eb60b411f5c60a861f64728fa139978fbd87ae8 0000000049b130f88e7b2496a22c5798c77e0f02996f47df4f897c44b962d806 +20300 00000000fbbf75bd37f69e9c5b2a59c3dee2addb558acde0d8327c4378ef05a7 ec21acb506a8ea8db78d2b6342de228d687e946e017abbd3226c85690136fcbc 000000006f77c3c0ef62b78f038a5f0f261ae0fb1bb051550f3a3d2bb8f215cb +20400 0000000081189ece565b3837c465a44eb77e4bf86d5f0bc24608e84413db8925 ac903553da641e68363d7691162b63ae1f1ae1fe292a34e061fd815f8529a3d5 00000000115bb0ad3df39e5d3715ed376fd0c36f90379a77dd880bf712867146 +20500 0000000068318b0e651c4e6a3a0ed44496f6650c7ae671dbc043c74fabfd1053 b32af1a31122074d6ff03d7cc6b84643190fa29c61f8c61a269a79bc073a5d05 0000000000e0ad3d241b04e6d1149255aa54b360724a07bfbc81589ae10ebfc2 +20600 00000000749eeb5762c9e9e03f3c7eeca586f19a7b39466e9e90a196872a2c95 1210ff1a900aa1b10f1e54eac1803feb341bf76af22df0780bb5fde8aafa0538 000000008dff293f8b284d1860f1fe0cb025f35a3f0881369715c2ae993fa63c +20700 0000000079c8a42466140e5e00df56cee839c4eb0e4521351f2b2b6e8e440290 e601e7d7cb173133f925a35f24540e2f607e87869d97e16f6094ffb9cbf7e8e1 0000000069c8b6ccddafe70aa8105727a38f1851ecc3519376d111feed210afa +20800 000000001e968c39cd30afad9153f35493dd24cdca9f66df8aa32a14674192df 5e8d818fac3117f4d61ded7d1c04ec333211572d7c345ca5c187882f8428fb52 00000000ca73be499578cfa84a05bca73735aaaaa98d2ff4197bd1fbbc06e6c7 +20900 000000002b94617af6b0b6f0b330e75e99abe4b92943847a22eb2497603cc20c 01b434130b110e5f84b7a5f79327e93ecdcf7072a77d19010c652d4cc7cea314 000000009fa057655ea7f5931d42844cb803d7f9f26fde367f01cc65c3088f65 +21000 00000000e435f35c8305e92dd2d4a9b9a29172a745bb7889cac6b5de4c643362 bac80dd309e595b3ca7e535f0023802e90ef94e4414e72386eab8f788d960493 000000009dfb87dd0e92d62c2232306147645fe58873626bcf905f099644676c +21100 000000000ea43875b9e24c082e0d3c304d3a29e5f6b862d8a92f525e27b603ef 847008d0bcc22de07c5df0411db72b9ba9a369543627b2bb91781c8030c760e1 000000001a3d899209c70ef6b907ecd017b28bd0b2318d6c2cb39735198a9bf4 +21200 0000000066b7fed2549e58f13b68954008299d8ca3bc23c4eb8649a74fdc31eb e3420422ac7bb9e1fb6a9698e7dd7ea94ac62839ec8955addc9bd104ad3ec83a 0000000021acc94fd5247e674b67da79dae611b787a35853c933fecd5c3e198a +21300 00000000dcb169c6142f18fd51610527ad929ad0b205908cc39231d78a86d073 6972eedba03c8441596eb0195aac05e018bddd1127611a89f1330b6fe57aa91c 00000000b5fb94e576b87576cf7e428b0439676fdfa3b9eb1d2be98777f34a31 +21400 0000000049ad37de5181aa80075d5df8b923468d43030356db259acafd03ce69 8139d1774e756805e5308681738c1471c2c3a735fad8fba5303b64db8a3485c7 00000000d425763d53cae92e429f391ca58cded09be50bd60859bab2c4ff8798 +21500 00000000c1ba2eef3196cd2bfe90e5cade3df9bd18eb72a7759c5fb5347282cd 18404e45b94a830bbd4697048644c8c34fe953c3161e1fe71b0b8d1f53397038 00000000d5ffe01bf119ead8e2631549b5de71c25ce0081db83b93f6bd55bc79 +21600 000000006fb63be9ebe54f554cdb168ef0706ef6e859709a1d7f080db0388d6a 8c76258f1918a33589c695d444df015c177c39c72ee3254c344f716b4c74920d 00000000d9a1a7443631f7a33807ac7f86538cfe8144aaf170f6ef7914d0c7fa +21700 0000000047e40e43ce2e6181bc6c692b5ccb84045a2a05b2ce157f69a41af8fc 44ab1225dec306687356206259c8564718deef008099fe6a1acfc64ff756ab9f 0000000037d14f3fb19a13f2dccf958f92a84529e2abb58e16245d437e0c298a +21800 00000000d4fe2d10393178fc184b1fa2285389092b561f1b00e4a5bdcd79589c a419b8dbd44822ffd386845214711f6c710c90fc17000e50aac2da5d18255f77 00000000ccb77294f9b9f07bcf006d9f58c23f690da35f48df31c0c2dec650b7 +21900 00000000066e4bf6fc4c59f9cae6c6607b34af01c4ca9f55c8c0eef688a091ec 622a4f8b006befb2dae95e546dd5b9d34e7f4e955dcc8d1793687b47d6ddfb8f 000000004152f9acaf0754e123f10c1599f1c34e539536c4f297d79ab34e1dd2 +22000 000000004625a14242beccb38c63a1f770a76ee5788764e6c0abd4129bbc1b9d adf5939e74e0c3ad618eac223bfd6ec025d31ad313d89574e639d5914dbb4d1f 0000000082b75cb83e6b30ffd99d598b2b3869ae31c38d56e6856cea95ddccbe +22100 000000001065a9ee74a8aa5d64ac0e3cb413537e2fe1fb5f7780e83f241fe219 b476f9a668f1b26aa1f48dabdf22b993bf9976e1c8b951c1b393eec9e36b4f19 0000000055ec3caf5a04bc19f01b58d27c93a308e472104f6ac4be7e5b6480b2 +22200 00000000c8dd4b74f50f5aa7b081b195ed928b8a0fd03385f5b5bad7d70c465b 18a1ae1117f2313b570993dd417642c66403fd63be0ae01f0588abc6866e510d 000000002374e674914d10cadd00f950bc5d9ec4d258b6a62c908c60d7274a21 +22300 00000000ea113d91f74da0a7eebec23ab766a07d3b48bbcb5061c17c19a538e9 c82000943dfe6419248665fa43b4dc1d9c59a21e7c7e151012ea0da2ef7f5146 00000000d5fa1a49b2565d06f5b5a247883a8dd40fcbda3f1b506ead11f90436 +22400 000000000bbf0a8d99b8662a822a683d15e5a5f681117965d5093ce0955dc70f 9e8487eb972d1c676bd0acb7914014d48a99d64f8e0cba4dc9feb4f7a61cce3d 0000000042981ac56d8e82152e67739bcc255879551318b5574c7c6faf6d5180 +22500 000000005bc7b8eac15677fd28c393e3271e52c6c30614e9c211c8c7c2815075 440f15361ec1bfe82e852a34bd737723ae1e8acfeb0a21d9b6e9f5b482c1be33 000000005bc92038f06013da7d75df98867209286ab67653decc3f0ec12af00c +22600 00000000cc55ca0fbca908fe8dba8c6b636f7bda6f60be0377596576fa1b3083 d011d046683267c332c29b05f6f6e0f37e4b8431466b58752382f73781f91922 00000000a8c0e022488cd7e698ac0b3f5d299b7ab17167d0ae4b45be3c0f8bb1 +22700 0000000000be9c8806afa5d94d7c005804270a1f74d6848e36b26b420666860f 328e46e9c79ca55f980c4eb3243e43ba8cf3f754a4000e567a49d5241440d37d 00000000dd14e7874df00e8146d9c7dc8232dabdf668d2b81bb72ef24bb0c7d4 +22800 00000000c57e7a0789ab7dfe15d6c9b7ffb668695df5a3574cb2773691da0bd0 874dee7389234e66160adfe48c0f33c3b0e9542eb1b2691cab01dfff36799084 00000000f285ad1ed5631d50bc0923805bef9f199846d4612c47a4a9673422df +22900 00000000ee32fababac8d960d02b23f97340315d29f8ba14777bf24972987eae 17d29093ca11cf5879a37a79c6fc51178c7e3f00c1341dd903e4f09423708ccf 000000002ec606141e88a183bb9982513f850eda656e05839f7f501a9273281f +23000 00000000034516e6053bcec513c978f3f83fa90f4e569044a59a2a7f3419d487 12911b8caf698b308a1c3fa212484a1c0aeae888b5de9ed42f992e28d5228a67 000000006a476e1e8895027c6a523e35ccde517c47af3cb2c8e248197ce9da08 +23100 000000004d55437ca542122ac21491121a7d0432193dd6e2e378eb5fdf883d7b 7fad6fe5f757e1687c9f1c229f64670f2de8c73cb4c9f0ae9b2be6332941f84a 000000002ccfa2ba3d173c1df43a6de4e1a64d41825f623252914224e2283f9f +23200 0000000046df105656e8c5f0a47fa4253a75fa52e495a98008b16115a4167323 68b30397ce50a35b9118b80520eb6519b62805c9561b2f3ab3a7f5e05d07d1ed 000000001d621e1a75091b56ddbe287d5f536f1670a11e91d0b85fea60a00c70 +23300 00000000a608a36a15bc367d50585a8c25ceeb4a2a473e3264ca0ab74985eeaf 8dd82c3e067e9baf84bc3bfa694bb2ac4a12b8a60279e154a91af06ebdb435e4 0000000099042d4c9ffe58d3fad8b73f8b0928a8bd37eadc952647b3e9ddbc0c +23400 00000000bd5d84af567f2981c84a2f9082a63e364510469f4d3767ef8315b6f7 1e16fc56dafc5398149fe130323c269a7703ad27109f06006dcfaf211a9c4309 00000000296cb4bf9969fffc153ed4dfca483e84d3b0c2e316229c05435c191d +23500 0000000056f7036d31b8f919075b91118460197edf852c2df61f267ea0ebcf5e af93edd8a257cad8a5c60749a65bc2aee901b0a4103c2996a098c2e3f4fee221 000000006567276231ba29858357853105d4da8f34ce592dceea6c269be353b2 +23600 00000000800a83c7a66e584959b61ee47137b05b65cedbc4d6a30dd940448124 a0329d4d71c91aa316aae94d1a63c5a35992ebf2ba40641fc18bb45e599aafde 00000000e034b28f2c68acdd240484d099e96fa6fbc554649fb917ae0dfc1099 +23700 00000000a566791ae620ca88023a4667cac81386ea9a83125b7d14a2898e69a4 c5f31eb3125f6ce24d52babc8b5b1810982ccae0c49b7ef8b3b86cb0a3b2e605 000000002891ac5cc9d03b445b409b91aa4105373f85fd4f7048963ff2072da8 +23800 000000007a9ea937de2bcea319f1476e3eca0404d8ee15f781c575e9aa6def08 61290339a58b4dc35008ae93eb0e6324318d35be704323b35d9420cce91bd300 00000000ce34f4bc124f14e6200821e04ccf7c00a1641c0063ba0d38d9e3c01f +23900 00000000393960f969d2e055fef2880fdfa54dfe48be81276bc67f7f73764650 0a769f9d51c89c7e09a62a059be59cdce663939dec4a2bb325ec65a911f7c58e 00000000737b378c784b7fd03cef34f0c0c1646472ebd097ddf5f844e358b5cb +24000 00000000f04fccc81f37002707e9501a3f7bdcf25f65531f386a2da8af20122e 4e8d0051946548bd40055e27cea65ffb9a316bed16da3a355af3921228a491f0 00000000057136237ef09824c432d8151cc23bcb009cecf49ace17003fe574be +24100 000000009aabd053c0d9d62a2159b2740e39d616535f506dcad343f11d12f580 c545bdaf98585ce887aca4bd26978b66ddef28e64944593dfb36f3f4976b57db 0000000077e9ad9687c186b10feaff958bed8321abf666ca6d3b7073e2118f11 +24200 000000008ceada6c82ff9fec90201e1823f2278453c3fafde4ed55539ad7ad3c aca643951500dc1126f53bb93df549f9547ea58b370d00e36902fbcc60f2793b 00000000109c23b98a22836c7a6d366bc4e5adfee45e35116af0bcb2d165ad1b +24300 00000000bf98231f5d0379b00b8af879835f61efff7730e0d76d181c4cae1b9e 63d4666d40f65b645b28a22b0f38bdaa84829de4eef7d1a610559120506a8454 00000000a497ff9517ec2bfc87d48a843f21239e9d1e91af2126a095e63fbfc0 +24400 000000006ce5f5d5d5346accf93e41ea7f14912ded1a3840dbe8caec7ae1a9e0 7121119c8b17aa444c0cb11635808ea5fe54b72bf6fe909054a37de4d10c6d93 000000006f39257c5e63b0b34706c8b201a2717b32dfef178c9490affaaed127 +24500 000000004df6129bd84db8a3b4eefad3745bfae61813d2071dbeb8fef782e0e5 ed05a276cfa5e4f655d109ed8b97b3c84780180aac4a0afc7a46016d2e96ae8f 0000000079acb3708a66cd6460e1f75671519b94c58fc6a06bd8b0135292b92c +24600 000000003bc743b6fe89f66993cec154f569664fef66025b0202715f61d85113 ddb78def2d20dde73d042677eb336ac8b3127b68b9cfe5fab9e398f1e453be1e 0000000067224997f5edf4668913b6f56476756068845974d759a6d4cfc983a2 +24700 000000004554a81bd62d8c7e18a353a756d85cc9fb6a2c764eeabb98c755104c 90972deda239bde6eabcee8bba8fb77c851a326e4e44f10aea2d6c800461ed24 00000000c0c312834c207a36e7d772a3138b9e876e0f850a9f9642511d1ab555 +24800 00000000d3bf13168c0f1938f68e97a5889683ee15833e22d347e508bc588ad4 68d7629413f631dda7be692c4445b4d1dc82ac44cfafd5ef5b71bf716671f4c6 0000000012be991d183f9e6e0c65679eb48b815f1c40ed5e61f1e5fb087bdb4b +24900 00000000deb6c227bb2ea93ce50c303a6f1a00a1df34c09d75353c5f21f03af8 f5120e68b61f4b1e3b164b81e639b9b4a6867c86ddb777ac450a356bf34776d0 000000009e6e35cacd51720307c2d1009716766308e6aac9bd6b9b1bdd593d77 +25000 00000000ae4b125eb183e689b7231eafa8c992d5b8c952d9f3cd30a79a788ddf f55b16aa5c46b4e0d7563fa761d1159901e8990d5df6279d45595542f3cf66c9 00000000a700c40776e53c325f32b4ff3590ebba2cc24ff50a5e3ea6f1b99ecc +25100 000000002543565369c9e4f85f1e5d7766a78aae245bf8b27360dde7146b2bf5 62bd900baebad643d99a9afdc8847f848ee1c3bd5273174cfd53e3179c736398 00000000af2647cbb9dbee39c29f100a4f56c0485d31bd4fb014faffb00df50b +25200 00000000e1e453f0fd9fb2af8d3a9113a0c7cc6b862d9e7469c3df6daecf3901 f936917406a351f75e42ac6004a2d86ea00f2da2cbc2540e4c77cd1749adc859 00000000b394a3bb728a3cfcf13d8ad986746929a5acd7f7474203a57a9cefaa +25300 0000000028f1b78fcac36df9288b39b7b9b3ab81bc72fab601b01c901bae9ebc 354dcb30ac1a86262542a9f08807e4d466c82b0cae81b146cf2fdfa425a69532 0000000015a13f56b906b70fa5ba1d6840ae1dab2767299cbe2bc72a7b777099 +25400 000000002f219f104ea3f9e407c2801649a20f2d7c995a07ea799fde2bec5c0f 6f2f08c3fcb5a5e86784ffd9ba979a659a4a888627a3d93dfd3107d23de59f4a 0000000053fbadd9d400b4b7e3f1452f8492e39f11c8b19d58f4fa5684fa5019 +25500 00000000e35b111ef685cd2f0f4acdb18aeb454182da22740e525704a531842b ba3c18ca87ed9f71b31185ffc868d404bfc385d0bf4b7382236dc2e2a7fb745c 00000000d6a9909eb464eecaf742b7422d90958fcecc61f941ddc8a2ee03072c +25600 0000000055dfc40e058768372ecb6d414e7e866aeeee568195d1b156fa819639 47ff6a47039b55780d95e152535b847097924232cfc2d58bc44a0994ef47db30 000000006ae73e27bbdf7ed9d3c9df7676389486e655f6e57dcde1cd84279b0d +25700 000000003ee2fa1f7955c68e728090e5177135478fd727bfadd05d88d0f6c264 09c3623cd3d0d12f47bce40b16c80477ee9f03ab940999ff78370e5a5b2fa67e 0000000027599ce55a892d15ffc56eda9eb55f9a4ed2c1c16075e13febeaf623 +25800 000000009c47c22b9eef0eabc380f7b066ec0c6673419c670412a5b6c807d294 1392b95f076e4f8bc712cacf507de258a1678398ecb445f5e68f355c59ae2151 00000000780d9ae6ecb7599e192a68a27af2310644a2a502e7e5fd67405e2768 +25900 000000009fd2e61fd705b1bad7d862b6ac8b2931c0918899bf39de2e45903877 d9c3f1fc9c4e82772762549fc8c380852a36bc8a3b71481906480b75a6ca95e6 000000000b04ef835175d01cb856832d9b968e3140e1352997167e7e56c84ade +26000 000000006d6c151db6d4d67356d590a897a11cd7d8111ee989de6f2f548410bf eae3e9a105b574e14ff16d3d0f6aafd5c7dab94872718d4919a4d21efc895b1c 000000006aee625129fc9ad7ba7930b89c80ebf22ce4448d5ebdd8609fdf0a3d +26100 000000003b8f260acf275f14b900f46a0c92d9196debe4f01cb1a1f9284c6b7e 31bf84f24f6413c0d54686add4c1a124e1a3da45b59f0c1a27f20c6741492f3a 00000000ca963097a942138f5034b757d1de03e37c4c8988cdc4280ceffb2e05 +26200 00000000d119757a02dfbb1a09857d4db711dba70c1f618cac8186b25c29f248 ddce07ba389fbdc2505b06f608c6dc09ea18e981fc5968710423d55ff68145a2 000000000e11b1557fd5729cbfdab3ab667bf7634a608433252eee67ff8c22c2 +26300 00000000a679cb4a2c2858c5a945b75daecb61fd17529d143f9b704f1c4b96d7 594c99f3aaa792be2fb683ab7bf212d165d4df6ea5750540295c97d60de373be 0000000077da6dc461db8a779b116c82fff0fba204dc5619217935fae2cfb1ea +26400 00000000e3c222b69ed13ab063fea70aecfe16d9d5958a6d5c0dc512ef76fb6d ebe80dbef9bae4fd3bb7e7c000ca00cf013d2c55b25a99214f04514f739e08a4 00000000d138437d1433473504f376d03cbd7acaa6bbddcbed1b63485b95413a +26500 00000000508cf2dedaa7168b3d13d04ecbd10befabd4c831e2073236e98cea33 ba0a2b4e21ed6d9c3f3c0653e89b5e9ea4b2e2c35639c8c47bcc2e9303e760e4 00000000350bef4072eb22a313badd5df4d0258b6be1fca1e58710d699947048 +26600 00000000ccaf846a8e8f0dc1ab38bbfe1a6183d69e0fd733fdae3af6c37963d0 c58a1201ff98eefbf36282642acd99f0eabf2a51f8cf737879f040dfbcf0b411 000000001fd1eee68389493636d865ed985c82488af96622e3727856aa9df422 +26700 000000002e984cf2b1167e45c2ba3161648dd41dcf44f4094143719959462a01 ee9e72047ce5d728d8ac8b74150bb513766f1ef731406a832d8097db2ce5e796 00000000bebd52cb92ebeed7eb910964094e1baf44c120daddbb4d25db534c0b +26800 000000006c7709d67f4d632a1a5220d925d9c3a9ae00bf42b2365dc0a54a23b8 65ff4ec5f9ad958eb394aaa6cd5305d065cfba4988b5912fa2a9d176bb7e4a76 000000005494f6a43f7d2f28a1a6354b0702a246417837f19ed3993c22f66758 +26900 000000007b426c4bc2c6b9136b1b1607572b0791a65debcdda0e64ff42128acf bed5a9e906869f178e97bf6d7c56fffbf07b8a03ad55403fc412f5e913dea43b 00000000dcbd1aa5c276b6583a2627fa602bac9de4bd9de81b8461ed4746f4a4 +27000 000000002cc4a38b7e2e9d45b0fe677806d841835af340b10e5c8b51811e6572 0493657ebb3862c9fdd9087724d5e3c8a268b33b0c1681ca792f605c5a34f954 00000000a59b38d781bbb97d206a1996026986a17b6f994489fa76af852be445 +27100 000000005fc9d585503fa5b1a23c73cbfc9d6e4dc6d6043af2b6b34c002d3f30 66f2ae1249dff616b97c711086965041c6e840d86cc9c4d000f40eec287ed1a0 0000000037ae36b226bd54b3994855b81da299aff9042f5115241878b5d934cf +27200 000000006d78ac41bb13613233b2912ba0dc3e477b1178a9997ddc7b59f32b69 09b2dbdbfbc9b2de83926a361ee3247b764ef9642b9cbe85dc281da3ee126baa 000000004d74f5379754079dd6db2bc206761639169f91c569852932c478d5cc +27300 0000000033a77cf167e7ac2ebd0f643c5d2cc438aa50028a9576c9ab86fe0da8 197877140c4b1be53794536182121e393671167724ad1850b4c70c4cd1f43d81 00000000b796bcb5449f493068270e690a397e286bc3970ec6cf0be7b2f15cb5 +27400 000000002aa75846897fbd33a13fefe796cdb0e1e0acd974b2524d776677db7b f5da161c1cf5bddc83e14ad10ce8c3d3f2408f354f4e0877b48a7de2111749ab 0000000033668c1d54f4339bc2e207362a37af592b9e5a93acef4af4980c1704 +27500 0000000065b390d0bbc02c9c2c38c7268163213e6cb347ff1bc0883239a8ab4d ac474e20c6fc95aa037180d54cbf88f93dcee7e7c0fe8a9f36c083a20fb7a8e2 000000002baf632f35408d4bcb68b9d5d738b902ce866b91fc731c76e8da5c5a +27600 00000000fa903a39973a966ed582c4eeb7119e87e2d784ef401eb46c65770b06 9e10efb8074d4a5e3b2b6ef456b4f008f441c0c2355a36f3956b332c195b9160 00000000a8d17f6d9812d123944126c671536294a0af7b116f8c8680e77eb343 +27700 00000000ca22f224d5d5de7cda6bc4763785a4088b85099a0f8055918a21dfc6 d610ca8608af2592de395788bad8b8a746088d92134ccecab152f5c0e7204fb8 000000004fbb75af7fe1ad4fd865dd39e6eb736120987a989f80628e89d9bd5f +27800 00000000b32bd9af87dba2d0354213d63c9524c3340f2613f85e17c83eae2c3d df36ad629772a174642ce37608c52154fde37d7a64b52c164789d313d58bfeb5 000000009370f48d150126349ec68073a29cd17e3c637b2f679b4a714c1babf6 +27900 00000000c120310eb08d1290ed42183f4cb511c018bf15c8a90f220a369e6ff1 520719bf9db43d4d85abbfd5d86a135d6de25fe17d31a7292c8223abb0b894a7 000000008ffd17327a2dcf8378b1c76a54b7b556a4e1509b8712b411c33d63a4 +28000 00000000172c5ed49d7dfc29bf9a18a53fa2d050fa37aa210d6d4080fd0c7e67 a45063d7518e03add7f4bde1dcd765cda8ccf4aad0d0f3870a82b0389b091434 000000007fbe48fbcac0d33fb16cf7e254508e14cf51b1788d400b854660aa89 +28100 000000005708993f39e5ecaa550ac661691601e5713f8387390cbd948fa9a513 1c2d63087f95369989fcc2c8f6319d474eb8dcc94a7ef7c31da9381662af33a1 000000001d177f77b9d7e700e5794c0033ebbb66422fd9e65dbf23d8363338e8 +28200 00000000b96255125ade0737a08eaa0cf3dd5af4485902a9f158d55154634a72 6fd537d617a1c4c01b4958d31ef6f6bf7b296ae16545bcfd984b7ae762bb73f3 000000007cd637d39cef7e401adf2e0661d39e63dda1cf1fed77e1eced10f664 +28300 000000007a3bce783c7a32c7cc0de1cefc08618e25636c9ceb1d8acd0f9d1d18 efa961c6ae7408f2d0d42844831eb2dfbdd39e9845aeee995ce96d5a72c1b82a 00000000676de26b51fc2bddbb752d640e618f7e2c7f09b37222ec297d504662 +28400 00000000b78a30fe1e70d8704debcae67f2e080471d2ada6a1821002f7615f41 0e9b704eb07192f53ae1a566b8304ae3064a310d4496331f28a03989a6f86df9 00000000261fb9afb66e72cad91968f80b12925a1f64a90f50f562be38a034ad +28500 000000000773022d330621e526a1bb89829663f1f6f1d60ee59c1a145e7ecc75 b55c33299c619f6d51e8de0b685e4e41a37a3e46d5cf83f075aa0189424bc566 000000007563e58fd5413f030f69116895e220fdcbcb17b8709755dc955d5644 +28600 0000000002eea5ae5c4296b5ed985d54fca651838f2be20c084a0382544ab3ad 5ca9ee84b2dadaec1d348158f1049b1d0b2ca96e3e74a9f0473303c22569ca46 00000000fd95f395a9ec12452be05c280f913d01226f81179e7bd62179290fd5 +28700 0000000018612db2e77b8c310080f0a159bced20ffa49ec77946fcd45a74d028 8a4fc9c4ce1ee128fd20d781ad44c610ae28da9342c93ed9a0db9661a18bcf23 000000009152484ddc2192bc40c3ad656ab2b167307944d72f0411bb4b7e0099 +28800 000000003b5bd4ba182e000f0c750e9e04d81e4bf4055a34e1721a244d560f74 2fa66d6da62e6111d83aed102ca3c02fd71b7d1f1d17279b0038cbe9ce3ab907 000000008e1f43bfce694fd8bfd4185aaa3d1f0a9ad771405dd63226bd194c0b +28900 0000000032c48fb73e2dcef331b948f3ae29ecb20c9ac65b2e798a9abc7523ec 7b9a18dcaffd0d41b824259892e213c6de8aba55893dc3cdb8e1f7ef79a555b6 00000000eb84e12f6a0dfd8d6850e6effa2ef2c6164ad555b0b1ad42c9ad5de3 +29000 00000000b8b9f3b66b43b045aedc3380780df7e492866683c59efa770bb9a3a9 8c2da5e2bf975e9c431df7ea21f4a7ac2a855b52728c5f83b169e15e575e0718 0000000071b907a3b25b40b1d2eab18cf53953b8150336844b19fb3dad44b6cc +29100 000000009adcbed482ffc44d9a8f102c286169091c6a45b3331a420d9b62e586 a5d7257e6cab3f68e86601c2ec7b08478cb4299a074ba152fecf4e2714894fb2 0000000093293dd19c9d92a5c7842d42499cee38f94f700c8cb15f4665a466e6 +29200 000000001f4181bb58fd5eab03e6def356c3c5bc91c8d5cced8faa1b5b638743 3142fbc493d16094da6626a9df5225d16abde0f3f992d22b6ec7a69f51725e4b 000000004b6305f407aa5b801f8479eb4ce39a18c3394065b49c460b3949ee2c +29300 00000000cdeb480bed805eecb5c2fd12abbc78c5c01bf67e2142ec75c454eb10 894dff463ed5686d71366984fdd61584df09c0b4bfba548490dbf06b77283e11 000000007ba9eeb138966362c2df0782f8a24209bbcf4daa0e8238a33c7e5509 +29400 00000000d0c0573887502a1521453c7fc51cbc653e18737236963dadd8034958 808257af2040ef8b9d6cd73357d64d0194701aebcbdaeabdfbba486c8d5184e4 000000000653faa0fd905140e73e227dd644076e252715eccffc80c076a80f6d +29500 00000000e160f35d20d237590cab613142325bd2c6e762b88a173ea021809299 47da8ad60c15a4ff60067eea07c443fc68ae78b25996b8e529987b1d63bd2452 00000000d753cd3667ff952c5660e1d7f01c4295388bcde4f338eef71ba95b2d +29600 00000000b9a9683e05983e62c996aadf2fb531abb9d5d34098e84e82b0ed9403 7e1ef512b0de5fb5a7471c6a5f9e298387e250db290d0df49f795274bbbc7f20 000000007339435ceb7b9eb21b68f2eca330194a1f6ccec86b5f09a8998eaea4 +29700 0000000009d72ee8b9185c5ab2d72b7dc24472202af49cfd0a4275a7266555fd 41be04370bee8af6c436aec831b7d1e59e58fb57d20b339df157f5e93bdc832d 0000000085aac465a7d915b87a946eb881759814e9d3099d7d7c60684a3275d8 +29800 00000000977dac45efb3b6af20fac4f3ceaca8a2d886dae1e9ae3abeced7a9f6 eee92d829815544cfaa8fa1232d5614ebfe2c49fb9a61d3dedd94a20e2266f34 000000008834a3516d333409316db1575b39de7a83678cf6c7aab16b25d89835 +29900 000000004961b1972d84435051ef6cca02f355077c1b6256ed15c0b463e7dc78 20b0a20bc8143cdc5a42be8648a170d0550f1d277d7e7f9b30c0c970b87f533a 0000000089410fd95bb1453b310efde92fc4cb4215d964331e402ee8508d26a7 +30000 00000000de1250dc2df5cf4d877e055f338d6ed1ab504d5b71c097cdccd00e13 fb60c4ac1e61f6e6186d1c3f734f36e2ac1a68e018d06c779797fa3807a5a038 0000000050a8248e6eda4db7b5919491746c06e2ca458b22c35d8d72b3f3e5b6 +30100 00000000992e62cf373fd7b4f2862e0bdb1d00ac87733d98cbbf78ec7adc88c0 c182a03d50d8291936512268c2e19aff9308387d9ae14a255ae14b8142c2c11d 0000000038efdd423b6ab270e19b772a7e02e36ec612a7299f3e81d8258eda09 +30200 0000000048f54ab0b907fca296b9220aed4f454625bfa298869d967db734a347 9064abf403f83c27a2e815cab2a9d3c90590ac56e25a2f64820b2cc18fc8e4d8 00000000693df5e5d69d391eb579c763284cedf9530b478a95d1f11269acc9fe +30300 0000000032a9314493c25270d43f67438ba25f10957c0040e7a4cc51ae6c34a9 3e9d48eaf83b24caf2d005f21a0abeccebbe5f9e65deb26e9810cb85a408568b 00000000a357b61f2bcb2af053869728c217ab45bca9c324a3495571078f9dd4 +30400 0000000021e0095a989551cf05edecd46b24ba4f22d9f6a97f755f29d8c94c3c 07fb9ad8ebf0053412a07eaf3ad80c479f7f84a66cdd823229a6b2562929f54d 000000000dbd226e1933db1d2ee67f4e2458cb5eeb1141c3c99f68b7adede320 +30500 000000005170dede6e71a5395756a6c8e10fb1c44982dfdca739ff688187541e d5bc54ae3ed12ab7c33da71c5dfe1286677ccc9acb4ddcebdbdf54222cfdecfe 000000002c68740c7e37eb5e5655bca25786fefd444c36f99691a7e52ff899d6 +30600 0000000033efc0c9cfd3c958e07b5c6cde759d3cea3e8f0e5e4a0fdbd3ed1981 1475b3f560e01007b5dc4641946a1fc70a058b1321b27753af36fd1a85ea4c54 00000000046bfe1248ff45ed231291c6c2aa3eeba0f93efa5f097109b035af76 +30700 00000000deb89818022c594925e5d75047edaab7f7d900ebb8e72a9df88bf8f0 3167754bbaeaa6c3412e61a79d9773ed748d02f3b469b9d30cc66f08661dd068 000000002171b216d696ad33011e33ee581e1a617003355fe7601c9185af58c5 +30800 000000002d03de4eb6393604b51678fd28c52ad7282217b9d8d9b51a57f75b97 4db88b01d0434a81ad842534bce7308f104e11a8318a14f2fe44928aa5fcfd19 000000006bb350f988e26b03d307339c6e099de57f1809a739b88ed16ac03b17 +30900 00000000654c6595e1e7cfddff4b87cad0bdc152938fd72d5c9d5eff95dc1e22 e91baceec4bd88283623ea93de3ee8b18c765c28c883bb99ec148f28d6a299bc 000000001666dd390fa55769e08711d4f6830feb57ea20204fc8d7ed06db3574 +31000 00000000a6a6be6014fb079b06ee52c222d1897010c453f4ff7b40dad1c126c4 017347c8df64be8b624bf1bbd14e118cd049be6cdadc15641b87664cc4f8afe7 00000000d9062d83810fb85c85ec8c071e98d3bfe8f377ebd61d1737487e6a34 +31100 000000009c8e84c50c683bfc138375cac3ef95a44943578ed1bcf774a95bc0b3 b5ff243e6360e713159c2c3b8280bf69acb0eae3b5fdc0c0d2e5d935b4dfe5aa 00000000fdc78c04dc84839a926b8f919305e8e6638ab0b6ae022e922680b3fc +31200 0000000081b30eb94106a6a86f688af62d48e8269f663a8c3f784099ff96f2ee 0365fc718453ae4c03c80b5040093401a4524bc547b7ac9d7a69ca7363be5961 000000001f43f2e04ae011e180dbe5d2fd6e51a0dfd6ec841c15c28e0aa30efc +31300 00000000e1c152e60ac01d20f269f967c9c675e48c0b15075fa276c1bb8127b0 efa7abc45aa84f70856bac572e8c800398096af3b251f8f483418188b9f278ab 0000000074afb9b691b6fdea2f4895df9aa6228065657b354636cb586b0129eb +31400 000000000c88f8939a1b281fc8c049d9a5e17598e9da3e59c9824f6dd4061830 6a4298590153254e191641f278b288d02a223ddf627c313ab7d850a5e72f3427 00000000cae4290539b244a8909fb1e884f6c5a60312f2c0c4c386a61529b884 +31500 00000000685ef1db98259f4ed1ae1605053f67379b4b4acc1d94e057f8426c4a 1b74d5ed210564a0c99a8f221364de92ac82e5cb414160d16890df1d7a63a112 00000000c6dba86cf0c50a87bbad2b158306150cd3c66be2c9734ff9b82b9419 +31600 00000000eb336d427cc7864d2fc8e8a62dda629c6b7f3b8e652dd71c1a0100bf ba8941e49e74efd5e8132d258a668578991e401aaa2c54f4cf7b93dc37633e22 0000000071e96a203f6605e7dea438d8b6615b00e3bb5e0471e0e6657f2deee8 +31700 00000000be5cdba89133e7937a5f4049116f3636af10019a12626d0510321b97 a2af1a70c96a8251536ba234d93e7a24c09965640ee6b28688e60c9abfde1bb7 000000005d3f783f7e52329154ce092eef2ec360e0b2f9cdaabf9e9ec1b08f93 +31800 00000000c08401ea469bc40b839c2d5109d5cf5032692a2c7cbae6595ab392ec 2da1c126165d840f2074d830fca692b19f0fd4b6329350905ffdaa88ecbdeee1 00000000205c7f247de578801f614a27a153de0ff73a45c7be2ac54156228f64 +31900 00000000fbcca7123ab071c62812122fe0a0e6fcac30d95554be4b62905c7efb 22b0a96bf815e729ad3dab9bf0459dfd4f01249e7d4e70618509dff7e05d6214 000000001f85b9a3b457a580f2a43adbcc2e6631da8f29b8d8649e0443bb3fe9 +32000 00000000049172ba3ec1b673cf13e3d0049c1c07bb103ed3fa300e3833480055 0148355a80f331df5c207e3a2e3685c1d4be27b304724e3283e195fc67539c0f 00000000a34346ed69d4a8e1d9221c63943aed2338857e72a35ed3bc4fe249b6 +32100 00000000e10b6b7da5575cd80381e3c75d520a3ff1372e39e197211a7dcf4724 8438368d260e6a52418473421483a92dffbfc0a06dbc56075dd9214fac35b918 000000004cd57dfd02f5c3ff94f7775a8e6c5fd1315163ef55fe428a877fe801 +32200 00000000f8d145bb69e3f55289662eb8d081eefed4295df6ed0eee5797a22b07 8bd6edbc0fc2b866b32b26381eafc35a647d0093d9b0c9957f7cb71b03b368a8 000000002b321cac0f4d1e022eb3359e76421a0154b0b3a542eee64fc692661c +32300 000000006aabd4d47b6c19f13d562f7d1563d92ab7708efceb28590a5b9161cf 0079beb2cc00209a21707e6d5694f68e41c97aa86af421956020ee239bac2e60 0000000088b573eb1af70622aae20d935aa5c31b2030379b80c8cba76d663b7d +32400 0000000062a945617a27b81bf17aa4a36219b0a81ec73fd8cb5258a0578ca96b 2fdc3e943f3ca19af681c61d480c913b3df371cdedf1935e04e424c5732a2549 000000008f70f82749c1fb938b97ad17f3fa4dee3af6f91eb207b462b490f7fa +32500 000000000517c518075f866c93984930389b1836d54c68b18079d600c19c7559 6c90db00550d06572e3d4cf23214e775030e2b14994615c5bb5d15ed870121d5 000000002526e5865f9c509988e07ec47df938609258b8a0a37f6538de81a932 +32600 000000000186f1b78f0280376baecc7a1856dec449673901676790110bb9f39c 745182471091f773da6a7088504ce1f17e7544d8a78be68dbdb71314567329d8 00000000032388238fc99ea5e7c3d090717e176747014eacdf01d1dd07e5c059 +32700 00000000886000a7d903955ac999e9fcc0805b25e80ee7006c7d89dac111724f 276baf2b7b87923dd3a61a35e3b3e29f3581b953c14a9a6ea020dcfdb4129165 00000000c6f75cf71d2e10c1c25e4066a9cedb384c6888fa1d09613e91cd7566 +32800 0000000083c73afa07a582549441fcb8f4de7e8c2108b30e105cb5023811bdc9 3cf371c1ae218c2f08d64118902eae41dfe6c3c830b97d5f7ff141828ef932ed 000000007526922f25c28709899053001a053447da2a90336b3595e837389ee0 +32900 000000005d10d7b6d19e5567b7409eadc3d13b78e7e4c5637a1250ac63c33855 8f9843f8eed382c92b2b3c49efa93215530dbdcba46222e5392b839426b60b7d 0000000092b66f9e19cdc145a9bc8d226ca352675746dedd6edd8ff7935d2d4a +33000 00000000942725dd706c453fd044c5542f638c02a6982732fcc32e35ae532f10 89bc1f495ad4241f822d35221ef28af7ac213648e617a33258e4f44bf70f357d 000000007c2f33c042a48f17fbec1915d0eedf2d7a1be1484dd3731964fd01b1 +33100 00000000432ab178d5b2ed791ce9fc67d2071a03348f28a79674c2cea79758ba bfec7abe885936cf6018016e821b3968bf65839fb22e93226d400173c3f59dd1 00000000120aacd9b25f622c15927ef8b804eae93c906b3842b09a5da46b54fc +33200 00000000752382a9aa355fb2a663613cea7b7ad503331df3ac2e100604ed14d4 597b643ea23986a517375eb721ba42cb3ab228a757044649ebbcd9d51112db19 00000000509ed00e8d9670d4ba534288b6b449428d68788ce47a624c69c07f77 +33300 000000003e307a34ee1e3a12abc5e1aada852055febc82a1afdf4a05d5dc47b3 7cc25ba42939e206433cdac80e7816939b5366ebb1ec294cf12f27d176f3060e 0000000038e8cae135ba00e71812cb70d182c675c3dc52d19c785ed1a33bf588 +33400 000000005dac67ecccc6134c3218302a014e60b80aa2695a9874e35958c79f02 bd6c6d15cf59f28a7a149beb0c0e34ae7fce7d100c96d3ec300943bc1395e986 000000004effe50e92a57ac4ff69e24a4a8ec722936cfd3045f927d3ea080afb +33500 000000004ad351192939d8c11cabb03c6b4e96a1a0655c0078e182bacd66c7e5 010ce10c63ba7c3c1ff8479615ad0a18df49d5c30aecb04316f512b0bbc0366e 000000007da6ddc948274cfd6b6c6bdbc570be48bec33a9096d7e34152554f21 +33600 00000000922811d417808514e99a4ae78f610da31c53abd1db184fd430b0b7df 2274b3ee972306a828067055a946e1e97a9b2aab7fca6ffb310b13e2240f4b4b 0000000030304b07c80ccd80d83a4e55755dfaa88503ac215d19cb902bbf68db +33700 000000002eb8a8b7636d666a6e51f8d1159a44e406a6765cf013bfd3291ab61e 3bc06983a94729fd1cf076d08d31d847bed098c2cc6bc292fda84e43c2141fb7 000000009bb5d25cca52dfb88a3ccb114ef5fa6dc584a5b680f5ab8ea33d2cd7 +33800 000000000d30a3dab7c120ca79ce032516f9dd2f99ee161e8eaba802b9f9c83b e566bb922b9e6f2c5827f34d8f3ecdbe73175daef38de59fdc50f811b90ae249 00000000bcfd4e01ec5f327fe98c264cc20da834bb82e3edace31d2775df7366 +33900 0000000024a17deaea0d79198447f1737df25b991c638bf4fb9a82686254dc37 5a8c647e93bf8c600ea0f03dca2d54a49e34af2eded6f7921955c4ca97858f78 00000000d797e258eee9f823905365489bd869de4c2381ae3436f2f47d60bc0b +34000 00000000495968d19210d3be15bd24fdc19805a0ef15026b0bb4482b04a9da3c d7a9129287dd6b87b52597371ef7378a91c6f633aec160c75708f8e419be1aea 0000000025dfa76b856cf6313669d4c6399099abf65402c2d849400427c60b04 +34100 00000000c98dd47f2f714d4af2438db87c51ee658032285942289f299ec35eeb 2288c3c4577d95f0d282e4b2aa91deab107d837a562e3786cb1fda2aa010a462 000000001253d36d5cf9405c9e935e9d26e760bbb0c4d839fd53e361a453b584 +34200 000000006535763e5959196f59194fa16a942c863dfdd94a3389c86645a95c31 c75cc1a55939d0f8182b8465b1ae428b35c200158527c58055563f1fa836c64c 00000000a7cdfd61fac85e8fce2fb50dc8789e6e0a02156852d6fa77dec9bcf9 +34300 00000000bdbd1d920a7bc1a34acd616c708878bf675150a09f417b3932f3ff33 4c66050c84e0b5bf18f6998fac1c7287680d11b6e5b26d0dbbf6230e2bbf906a 0000000027e75333fdd44eda9a1db37439bb983008673e3e93cd01697cea8046 +34400 000000002931e91b9fcea63ee137c8a87885717820e655075cc30db128d7d915 4da37f0866edfc67eb2ad4de07dbaec8079e982f3da81df0a169fd381ce32dbd 00000000959521c5e273a937661d1c5291899ac7019ebf8676d7d314b5784d03 +34500 000000003a8f21d5801b0fb5df97039e675ea86f81a256cb4a1917d86ab90b77 5f735df39db62382e0188fab71bf768ef52bd2ad67e39e5101950422ca0800d5 000000008d04d24b1b46db42d91f7d6bc268b8ac7baa40f9123649e616dde794 +34600 0000000039d9333ed254d909bf87a2d31f45b3613473c42c2e5f36dfd354ce9b 2b88ed99d7a7aa3de15524d96c0480ac843274f4affb2410c868a824cb33727e 000000004ad69fa5103737a66e5da63279862f107a314467244c6a876693477d +34700 0000000074394675015cdf17d3fcb3ef9ae2b4aa0ec0722d26c60c6a7352adbe f5b24fc9e61f3fb8290ea848e3bc428e0b5137abdc038b8f67b56ece4ab332b6 000000007edb706cf26beabcf52f311755e61f5171ddf4f9391f4b43d207383a +34800 000000005641889ee6efd520e97476af162fdfbaed4f2e73397c604d95754e90 731b28c6dbc1f40cc3627d26d2d429c6534f6440d29ef316211d8d2b0d94baae 00000000ac8e8a8e175ee44c977bf3099e78b530d45a0f61cf42b0e8a7e470ce +34900 000000003c6569dda7f2e47c8c1f73845c7001cf924d1b50f4efe84c6b4e9bac 9e357958124446e832d3a37a37e57db9a5581f280d8629f129d27243317eaf79 0000000065ced77df74219649a0a43d96b3526c2ae4ec56ff7f871c5cb79d77d +35000 000000008f0cdb273d95e830c726b253b80be537cd21867b0a03ef0a326df91d 50fbdda56f55afc2c506c8631b8ff01433fac14f26a46084052745dfc9507fcc 0000000061b31b7d0a14aa4bf27c5df50519d59e6df884ea46469369d3f60218 +35100 0000000061056ce2feaf07352a6a9a63290fa1e1b6d6e1f3102066285e7226cb c2b7ef6cc10ff06736237e13721e2f06c25688662bbe54536febf4199cb62584 00000000217fa4253060862c998df51645f8c1cc756d841a710409504f2cbf6f +35200 00000000579d908b5d44c3a795614385abe2e537f14281add566d7b95960643c 02cbca5565814dd8125d69cf1a8504beeabb335f81ad6ac37e45e6f868a9b7a2 000000000c400f8ae814d9b3326eee8862bd25892fa2bafb318576943e7c2ae2 +35300 000000003a0faee7090590ef6747c3bc693d87f32b54342a986337cdf63fbacc 8c9d85d17368eb02a4e2c50fdc158e4ceb44e2cd6f68ddb15464893be511dcbd 0000000025f7c0cccbe84c690011ac18f213487ae7578ce04448b73ddf9da37f +35400 000000004d321d4f633aa46f1ee1a4269fbe84f9e00eb6d6cc7dee2b3bdaf808 3903e985c6d96dc18eb14105dfd7340f21a9f21e11f39f4039f71badac5a21f9 00000000b0d00c86e24b978f05a077527f7df3f58a17127cfc717899d60829d3 +35500 000000003d5ef2c5891c76e2a3e87399ff2c5239c9f38303c4ea357f70e6d83a 9970a90791c49f2c63cff4d7d1a4fa7878ff40c02f7933d000dd3bcb074070b6 00000000bcf6cb499a5ef0be8b67910e4f7050a86d9187378139ad16e82ca3de +35600 00000000a8e6406194847e3a5dbdc2aadc715f73d6b71ef2668582e89a13f25d 8010d143a166c4418a62db82249a758a3e27c2c52808c872987c721fa7a15a27 0000000002491b806453df2d549e1fba58bbf58dcffad8ef1f32f60104faccbd +35700 00000000b4aa46c572d2e7cdd9f32b58347413b6dc73f53bd9eb68e9a8f7fa09 e6ff5cf72f12be434fc05814c359c2bb2aef3f4085cae1f6c37bed4574da3440 000000003c5edc83e279d888f690f5bb8aa4ba5a67623a7cf92e51ad395814ea +35800 00000000493746ce4e99f3d4288fb8f8cfb605964dc35cd7ad89c3412b4d7ee6 2a01f454a8e147e83c435f1d25d50ff8572ac339b3eeb7a286305747e5a7362a 000000000a07dd8c94aeeb8017e1d6c696e6e9399de41f45f5fd9daf24f46330 +35900 0000000029ef2a38c3400a1d59df756b1690e3a0b1d67500f882b8315932a91b 20bef484fbf9373d7a38bb562d9c444d606decb9bf16e27dc83604bd89bce3fd 0000000072a9f2a4119aeaa96b39c6a4961f95fd55197f26ec9694de986dca10 +36000 0000000080c3deea35dc3df90a5fbe5f27db52f5e01018ae7d62f8b454c71335 41140fffa56089d672d62f6457dc540aba6c8db1716e02b0fa8aa7edbd82ba2d 00000000351f0ae03b547ed0f9eb5e92f6cf6870aedf92e31487465e52d56af4 +36100 000000003e452d0b3695a8ff8d28120889b223521919a4352850c67ee77e3463 aa991db1053dc8dd139a277f0cfc81873413461c2afb39dfce5cee9926ef73d1 000000006827f1c6ba47266819d65aa7345c27d254b770f45c26d0a7d0817c8b +36200 000000003d62954ab422bc6ff4cb0701b57362dc96ba0e69ba04b42500300fbf 4b4b5695fc79f7288094fdb30e74e8a11f923298a23f27eb2456602c94124e56 000000004c9292e4ad5f045c489b06329a38222980c45927cbc5d44533b61113 +36300 0000000084ea15b5966509b51e40b82b7cfe03aec61a232a4a7ced84ebd0b092 e7314524ab0a8d6b6829e44403457f52578ebd48742845b889d8b28cce9d96b8 000000007a8d90bba9fd9fb1cff05ede2ddeaf1447e0fffa94c20518a9f52da3 +36400 00000000479cfcd33b8508841190662caea9c4d9e70fdb53bf9a6cc818be6114 653bcd8c8351a255760e1b56a4df4310feb7c16df11b80e56ee831224e5ed3fc 000000003c26c0019bbd1b1668be5a5a282edd812666171c7b9f6b4b0ee042a7 +36500 000000008099eafc787d9043370684631ed0136a7c04f60c9bce6bb51b32c3ad 383db41add35d267105f25c266338cef51aaff619ec7cf872c642eefe98407f0 000000005a917f77c7494729ee4d49b524ce97c95a46de3ccbca74338b99f664 +36600 0000000040036771eb1a8738f2fe8ff2a1c58452883befc9c175b2b12e18369b 21ac8b9260f4b6a551584d02c33079ade9e6a4790642eb87cdcf9784dd338df8 000000004304e68df768ab91984474c39d4fd688bba9e60c917871758ad4deea +36700 000000004c6077804e9d005df4d4ca1f9e11f2d13da5025900744fdf5b17a1d8 8f96831bfbd2227bf7848f173359eb4b01539c232dc6e3cc08714285bde160fb 00000000b8caf2e8864cb31c8a50f4948db11b52ad77bc52baae206c2be293a1 +36800 000000002a939c2e0894ecc1b460b8d62ede0100981a0eb35500bbcbba58a691 8de1f72b59600d600be6950e9a94425d8ba66c6f11cde0678e1d6cd1625e221c 0000000051398007018628cc2861b2e53f846bb7c7624313191ee6df490bb29f +36900 0000000061da1cd9dcf00fdf70d4495d2e67c188612132d697b19b699c823b4b de5b5f7823e6fd9756709f1be1a7bf649c6fe93dc2c8b0700212915fbaa43a4e 000000002d1d6991cad0d57f5861e11067ba6419925156717cf78b29180dde1b +37000 00000000ba03c2f33d1fbdbf2a03d2bb6aa7fb8cff5b5dc6424cf937a8fd4423 58d9e8bf8dcceb9398e8c3257626e71d891dc8b64351e6c87676c8d22be27845 000000007f544d937918165493e06d742c23684ea53c96d25d77ce1ec3a63ada +37100 00000000bdfba0fa27a67f2d298aa2eeaacf3139b9c48790dbe2f9d9393755d3 7b724127ba6b8d1e3cab8edf678b7ad2eb69a9f405511db4804bf1f373c87ad3 0000000031c7d9a7d61836992130dffc187b0ef24af78fa867d4738fa31015ac +37200 000000000719eca768dec6d6d57b7953ee5696f3e193a185d000617a8773858a 100d95d6b3199c6c3a7369b5f7c8b106604e11e35b22dbde9219769a45093432 0000000037f4f02d6df0aab29503ce97b143a5c2bdf3c773001fb427178cdfaa +37300 000000009c5884b70d2a72cf8c19d41f17bf38c50a45b50d9f266bb8ed13b1c0 93484914c3141eff79feae9cda28ccc0049daf30b4213f218d3389eaf8c95d67 0000000006c2908872a6f398e3d05d331892e5c13b87cde78eedb4fbe59aff19 +37400 0000000099fcee3035ee58a65e261efdef8bc3eec9c6e408e9837c9fe7ddf993 c634b77f4a565294b35dd4f5721c289039a0d4f2d7f2315f52fa86f1094da0cc 000000005a03d458cbac45b8efebed9f9b30e7eb8818b1cf1bed8a4f3846dc31 +37500 00000000353eb7f067a2decc5825c2f3a808e00fb1189212a02e4e7f46ed0dbd ff56eded0726a75328630ac2f318e41384ce18baf2af9a3b7576ede71b0d2551 000000004d997e9c6cb391ce9fb64e48ccfce92dbf47284e9935a7f00ce9fe44 +37600 0000000047ae527afea9696590a385d8ea0415d0f4aa8f233f64d5852fa3df88 eea23055129fc43e4a77f4f9093ef669d1e00fb352dfb2cb15e8fd52e8ed0596 000000007d658e9f826b78ffb178ba7abc98ae0e0a81b06f10c133a7d713b56a +37700 00000000478c70fcfca141ee6d94f0776de7cee06f7e3ea8a1e324d743f17b29 0fb5e21b5a6eb5d0ca094dd9fe07f1f956c6dbadcef92113e3d083bfd2a067d3 0000000021069f36c6cf664f54e0a3557307adcd63bba94566ffccfec6dec834 +37800 00000000aab0f89c1670d363d3f03892080cc0afd4d0db7ca0c879179851672a 2621a28e93327334919b63a62646b74d848f15d4548ba6a3d972212877b15236 00000000156d2b50294f8f67cb4f43237085ea2822884db9d34e2aa0eb1d51af +37900 0000000032be72cdb40c8091ed6c22da7299284569e905e4c372842b0cae02f4 fd457ef3e5f155ede7b69a452a18ab90a50e3132c59232bdf5f23e9c13d880c5 0000000007365671115ceaf206f0e23e0fa66509c9edbb1ebb8eee2f656c39ad +38000 000000002dfebce284d1e08b6cf04452530891579b7377669865889498de8f3f 6364d0b929a5a9463ca47d00e28029c39fbfe97bc776e7fa2ec733c5659c098c 0000000041b52b3217479dcac62e5cab86fc9f45511fdeeb0106bbd47e5b0851 +38100 0000000093b76f09ef25c6a496c7aa5328fbd23fe4163d1dab6850724c81f7d2 eeb5d69e3235102ecde9c7cb5cf4f7562bf2bd8166a1390c89c64b3cb009a12d 00000000927d9a7bed762281a99cb5a0cfcb37ef6a7f902ff25f807240adfe29 +38200 00000000a1d77d8dd98f2c416a414bc067fe0fe0c3ff9f71cafa2e4207ed4945 342bf0f037a1189180c33584343617c0eca07563bb09cc42e49124bba1eb9fa1 000000004b47c72433d7a1f09d4bf8d1890dff7632cf6464c9445bbb9a721fb7 +38300 0000000042a957c2c85778837cf45ccddf69b71f3ded0469646a23e2f7d57e4f 3e5d84dc7da1fa5231afb429a65200b72d4969f36d5167e88005151356a189b3 0000000039323b40efad6cb9cc29e97dc4a824327937a4b04e31a1294128fef4 +38400 00000000445f46146285e79c040dc5560160b33729845dbefce72a9e2c4e2ed1 dc19662996d1a93e2112f434e19d2032fbe178b12817df3cd66cc42b303b75f2 000000008afe14fb86b0af4a5e35b28060fb88b7108581a5b62c9b5193f74677 +38500 000000000fe4b0db48711c046390b333dd59650dc2f69b20a666e44202be33f7 7d486a102c9c7b4061ee3217c94dad6509c037d777d4e9f3b603aa517fb36b51 0000000040de3b4b7bbfceda5e694fed0c9933089bb2e7ad464e9f820b700c9c +38600 00000000235d708630407b70ec9470ebf771bddd046488aa0bc1dda31f41710a d4a7a2a8a26a476be2e47facc4f07c2a804a86eb0f4aacfca907c8bdd900dd37 000000001e5b0e482f8d2c2f2fb2df26a2566fd619226cd0c15678c076771b7f +38700 00000000109645498eaa6f4eeb858a3097e9f37c65201713848fda6c9a1b6646 022723fd6658af174c930f739862393b499fae0f4b6e47788dbadbb7c21c5060 000000005cf9f7f489627e57b73a325ae7b9a9e8955bc6de32f618977c84aa8a +38800 000000000b602bd7d66344a22bdab5d6652eeabbc7a4cd28765def60358c3f98 8167efe2e42ece68e2346a7f4439ceb38467015a1e926909b4e9f3f40b51e554 000000001dfde19b91cb1e1860cbdb6f6612c22a77bce22c76ae1c6290590a14 +38900 000000003e3f753167d27e545362539772c658982202a168ebc0da87375f9b17 8667f38a2a71ee822eba8acc9fc1af2eb9079aa6d6d576cff3e2b4f0e2e66484 0000000083f229987445c3be105d327f1f84879fbf5339d5cadc4dac824af817 +39000 0000000081b8c41f27bf3955713105c9bdc5118ddf429a9aedc54b71114ad563 26b2a6c1cc44e02f57c71063a1aa68d1c81db2e1db27730d051cdca296c82e86 0000000013a777083b9ed2bcf634fb12116c7646ed15855a432ec3c731fa3524 +39100 0000000025b47ffb637a7fcfc3a5faf0243fd1dc29a42b1b7b286f096a5d87ef 3e2f6bcfc42abdfe4183a479cc7c1c25cf899e191b390b1afc9cadb41f700ab2 000000008885defa6124ee2d890119c59785945cd9391b627cda63d9ff79a7a3 +39200 000000007e5d61ce470e69b6be0bd242e9634840315da0eb62cf12e5a6f401ca 8418bb7f3d514010f61da9fccd8dd51984d7212dffb2a00af343d2d879501ae3 0000000014bdf8a1f61938bf2d99b1ee8df04eb2fb07a349111499cdc1337621 +39300 000000007d3763ec3ae5b27b620ac360a61d686d07eb88a3d4622bfd0258b622 3132038aef7735a6c93df158e3d4c91ff9aab2aca683f2203aff99fd3508b1c4 000000000fea0772aed3ca4267847af257b2f16007db03f0e7e9fe110152a53c +39400 000000005393646a9207b3a2f1e61cdf6a7d76e8103026308729538bde597e72 c0291079b940a425d4f904d5904f17747ec790f9dfe318d83d7432355489fe5d 000000008c3674c23cd835d5cb672238b77dcb6ce06e57caf08d64a3dff90ade +39500 000000004de45bda95e343d20a412916358b231a6af9d23518c84a30b4f55a91 9fa64ffdf478efd354cc16630ead650765674e5d3acbb220fa0dc7e407351c4b 000000001e12923de4eed567dc8e4dd361866d5f632c7a7b926f2a616d99846c +39600 00000000512eb6202e6354d8ee0c06a878e7bb054e730f25db60b2c8e778104e 4110e70c898b7decb74a6203861accc6ea06bbff9bafc34c626205e3cbb4c4c4 0000000050078db681ca1b474342805e65d1f840bc77c5e51f505fb270bcfbf9 +39700 0000000041bc782d5d142ac6274cfe75ba6f14f79b3e0e52e1837a0214634d9e c0d6552fb58411d175e53f36a0cb9d5281058e2273f72d2584fe00450f2150ec 000000005bb5ac22873939032a23f60e4dde4834063b865a15e5d93a4addf0f1 +39800 00000000722c58b4a1950d2949be63daa4da39abd966053f4d26b9220c94fcb2 cf0dbf4bbf36df57614c1496a4f926a6af641380b8d29f0febdae532bd127052 0000000056692d21f86176c3705e7ca4b218050f4a1eaa191ea5fed363ab8763 +39900 00000000128749d9400b7bba390340445963d1ecce3a7262c4d17809e80920bd 32c704fc984c5eb55b62ded1312c66c08cc4297dc787d9555279f01faba014e8 0000000066a8f210e60553e276165b278fa3b178987e18c5abaa14b696bf7dbb +40000 00000000504d5fa0ad2cb90af16052a4eb2aea70fa1cba653b90a4583c5193e4 745409c3a06c59ee3e1701fdeb3284f81cb938683e9d9289eca17e25be79cd15 000000004f5399dec71dd54b434bbb35a1c30488a37eadd9be7ee61399b4ac90 +40100 000000005d07a49ba59ed1eb33715ca8a69e6d4d26ae92a8e9a65928f124917f 429fb36d9e37c346df8dfc0d3f19284e794fc977a60548a59059540e3c34ea3a 000000007ec42501d3c303c898aa07fa8084212fbf6314dffc574acc31b3e68d +40200 0000000024a30573708b35a5b37ee9fea26c59d5d78dabd8664e79bf15b83e67 1c43b75a8112eb9cafd2861142bef242a75d2c94917475d27d4aae84af380f73 0000000082620caebb6dd0504bce4a4d130839ba9eb526f93709240ea1daa959 +40300 000000002920347d2c38fea1bf99a7a4f5cd3406fd5af4f62a4881ced4ee0242 008dff8481200f10b1d4594e60475193f7a7abe68b837f6e6352836331a7d6fd 0000000085d7bf55d3ede6e828a7c5f221d0b1965c55f4639277ca16f0667e99 +40400 0000000008c8288d3355f1f3b11b7b3bd5706b419c44269bf8fb33303e37df73 5f592d777cb8c5d510c35e892c8227f64458e03d1bca394f3bf8eb2b41816aef 000000005280064f3a75051985e4f8ac9630496021898f25aae5dd994202d49e +40500 0000000053707adcdd8f2dc792a43a681d96349d2f418ed7dc839f6bd384a48e 94e8c0507f5d797fd590bb03acdfff5838f02818e883eb0c5a7100e5704cbe3f 000000004d2bfb650a5daa332496ecb311b704c8ceb96141fd5a4390ab7da9df +40600 000000000da0642d9adc15cc4805ef98a3bdfe69ce83a922aeca418bf4efaf02 2fdfc35a9209c1b32180369c7e08c02fb94f2393f7f84bc5e93ff1903cf0be4a 000000002127c3ad6ec93653effb43fd7780ba621f250deceb69bc995cd17505 +40700 00000000399f6aaaf6dac34d5474f6504d9b9806f64e5e87a84968ed20827898 89f4da14dfc2cb0e0ab056834bf8eeedd93a9b6670c6393740bc06f1e3aec8a5 000000003b2618b6dc3d447d6d63e75c48d9183b48cb260c94f2c439c0a15a1b +40800 0000000010f16d1f25d6999534a83b47713f117c2f320a3522d0c28afcddb4fa a67b6c8cc8c177ad555b6238ddc71dede34a5034ac15c2fbf3cb258178fcf6ec 000000005928d1d8f8a3e4f99b5b23806abd468a1cab2b0fc268361ea6ce8e70 +40900 000000003008f2ff1c11ddbb84a5e3f237411f41ffae1666bf3855cdc3d13e0d 0a47fc815d07b4c4ddb03cd8695cc726bdb3f6bc8de37c5e836ddd0a8a9b3169 000000002ebc63f4c3d9adc38c22f6474dedb7a647a317324d10ae5dffcf0730 +41000 000000001b8e5f1e2c451b0af5703e714d1c31dae10ac65614963f44e819e860 94ae0c38e1803a929e23ccf3eda999783f04a3c32c50ffacb1b6526daf2db86c 00000000119e08dc7e28b949c787d841a94becb466885b1ab4671792fa24a69f +41100 000000003443f07e2b7dafafa20cba23c04a117791afb2c4fe9bc6ba947e3e27 deeaf5cb4a4c34d5489dc20dd8605e039ffca954cea38e57934d72db4f191965 00000000022261782236bfe63e9aa7552a7d77cb317f1b8e7a6affd46743f060 +41200 00000000303056c2934e91f6cb6a08334368ebe506300689bd7ac08b81cf3a35 1edb0f1ff3b5845a2a55320e435ee1f029b47788998b8abe6ef5679acb70f049 000000002b64265956a6bab359d9a1c79075468d106d8a5d7da8648dea4500c2 +41300 000000003afbfc011543fea7f2189441f3b9055564aaf29e205a4429b5acbcdc d3d25e72549a7e64171646ba26c07edbe3a3411ec27657b05760cbe7349623b3 0000000001752d90cbe87aa8a11ef329cf6b2b3c5c39aab439cfff32a4610097 +41400 00000000145f99de0af55c9fe81556f6adf986954fb7fd7522b4433a71c50c09 69d3cfa230877a03bd1c380b34e02ca47c228bcffe017441d0d7cd756025e2bd 00000000392d9d687bfdfa99c9b14de66c39da76d2869689abd04798ae0a27d3 +41500 000000001db947d646891d1357454979c3b51429c4c38a85eb0600dc487529eb 0570908d4be8af5009c6c4ad6b10f3fc107ec1a1b0257db0a126ebd2da0a78ca 00000000163980b0942043fb024edc6b58d64bdd3afe4032e368f1b467eef0b5 +41600 000000004a995c476f065cfb1be77b8fa1ef9eb0c630e2022c0ebb0747511852 df2d4077418b1b49e4c97df7cc61229dbd3afaa27ac481d44f7737d1420eef43 000000005a7a3a2afd5c7f90e6e11c40ddaf010a313e896c6b1e1e506e0e8530 +41700 000000001d4e646fd3f8e371ddf05160719b82edc1f92c740b5e085bcd8ec801 027638f9d3ecacccc94fdbdf07133a96ce46d23110cce738b367b491dedb51d2 000000002778c388748dc9e8140993de661939dae4e63a1efc126de64ecfeb65 +41800 000000005940413d1babfd2ff0aa32f8518cb9b65bcc46fef7b1adb02e1b67b9 ca9e85af5e73e11a12c2178a443b171a8417acf3055d73ff25f6d3d832b06b36 000000003e1f624a5030d15e245d8f0a6e767fa7322e55b99ae6c3c4a94e39d8 +41900 00000000247136e252878c669840a733c97db7d9525458d889fa9d94391f0f2e da3af99b98b5aa5d5192b4d9d7b56c22851cb425d977de93efb985f9f1bdcf66 000000003591b0ea0f56381b30eee9b8bcdb721677bf4d70d7d8a4e499880a73 +42000 000000000f80c09687893406279f62da437a6a0b95b8dc096b30c10ce088fc64 4242fabe2d6003470cb3394b9ae3d3131598bab0b7f03328a949258be209d6cb 000000001865924e539fd6744d6814fe81543d93000e7e9e70c4ed8c4c4d713f +42100 00000000324c4890ea4b8967f5ad909e4a82887ef1454952c456510110c3c177 ea0a28069b5f9b1a0c958b7ddc2bd26c07c96a1824da26f093e3acf6c10b9caf 00000000608253b57890efec5995c1fbc8e9859d11d5e04d9bc0563641d5fdbb +42200 00000000427a3121a94413562ce665e8a143d4b292afa01c109d21b9f617d698 66f145ce877f85ad1866c0f16f6f0c6ba8fe983d25838e10da1f6e946976892a 0000000018f6d3e41d22ffa2a17917562f8590bcf3d9607ea124599fb6eb1d41 +42300 00000000078f80ce03ce82397988d27d37cee362e3cbc3a6f2ab7fac8ed376e5 31535d4dfa87594e150ab1c8f490ed60b7e747db84e7eab780b8587c1deef1b0 00000000553bca2c1b5eb5bce6e7f8e838ab8b35c306995d2c6e7e8b4b08cbda +42400 00000000319681bca8c1a580e06dab33f1e37f8133ee1be274a5fc9694adca4d 40e5e695523efcf080a10d90f5574a5dcd75feab9935971229836c754121b1fb 000000003aa678921553576d379ae43724c5d019b0c012391a955e045bcdc608 +42500 000000004368763ffb8e808e605c05d8feb7f0eeae425ba38fb54dce833fe4dd 9510dcceeb8e254b2dad1c0b1c76965dc31d1c866ca96a6e16b3ecd63f6f623f 000000000750150a921f71cd7e72ff723f086f7b46c6f2b7c21322e7493f86e9 +42600 000000001f4b9e962992c36c6305abe2d285046a770727555d9cc4de29adab4a e645b98860eb5c233879e6d0af80bed06a80f5958d25a17e6043c07872b5c2d0 000000000b62382fecc935f06b79359f52affb7defa97026183aebf612613100 +42700 0000000005da2502a4f7455b40c34e3f52bb47d01e1bb2b15d27a72fa3741e97 fb9fddd0385ca5a42ed894772be1dc9fce2db37a99c8ab75aad033db329a99ec 00000000052f8b7e3467bc8e236f68d1daf9e1376cf3fbb35964620ae864f324 +42800 0000000023aa4cf8b9c500365947dc18e76cd6c06c410645ee28791728bd5f7d 4cb6c784bc04b691c811207d2ed9d51a1e4f5bb49ee8be740517c6c7e761e1b7 000000003915292b1352980e0a50530b0b6a09db469adce59ec7da8fcb9437d9 +42900 0000000003dd99665c63a69a199b767f673d9b1964e197995d4438a381a4c572 36fb034faf10a3cc7ef7160bda05c6a746832e9db7dcdb49ba008ad0e470daf1 0000000016bb64e95550a31f18f8bcd7bc4b5b3b032cfa1ed657163393f9c97e +43000 00000000212265ec8de3a24751d355725f05370882e2162aa7a57d65d31c506b 5c97f1cefe5715d497f9f11830d05485f708f731975be9aa99dd97e5a029e845 000000001fbbbe6c8857eba468a0136116f76a9607e1b2d961668abaf77ba2d0 +43100 0000000004f6ac12474a1e25352cc13c427fceb6f58307f0ca928f096d0f0f9e c7dc13c1930187e38727ca8aacc8f95c6c15725838f628c811c390ce8e37b489 00000000313a8aec634d9d5abc23d85ad39abdcd0db738960a8d4fb1fa2a3c0b +43200 0000000010e5815c05e49d199cbbc96458402d3c41acf9cfdc2fe682c83d2d28 09b183ae6925762aeea0aa2ff537619248e47e5948a161f27a19d3b6d022c132 00000000369dded6a6bd96c2107d9407d99d8c25558cfe81283123390af562b5 +43300 0000000043984efa166bc1f3871b75fed75a7a6ba6a4b6178a5c53704921770d a31b1651f4a8f439b00015f8cb98c581c9d776f7d6d6cc6a2bfd26c54f33dcdd 000000003719441128248a5eaca30ca1b503d803bdac424cc8d3f5215168cee5 +43400 0000000039478d91f89571693ba7d01867d5e76774d550e347d9e04681acb42a d730ebb3fc5c3a30c2d0b081151cd374624a7310e976cd92ae2bf2f831b9daa9 000000000c03f12cadc6287e49d72e8b51bddc1a4ff6cb7b2350c04ba777b5a1 +43500 000000000a5379782ffddd174c3f0753dbbc619729d42f21eb7ac2564c8d7878 34af594c413d03207c6c611ffcdbc51ebee8048a90e7bb370476785f6e25cb2e 0000000017771732f3b804e760f33e41b9702a01ce53e22fa1a83824417c8139 +43600 000000002b1d4b84dc06b0a4423d210b2b914e95c51a1e58fa2010593cd330bc 3827b24d5f110a38820ae89a311c7e20d423abab45b755013f28b39cc566061d 000000002080bea519a81f41f6aef2cb9907b98d09a7ad8e4132b5181776c738 +43700 000000001074b9c645b770e5deb19d91ad2b78bb19a3509b5858c90e987eb34f a34f47b078e06ab66fd75f7cb3c6318d558ef45f9cfa7d1cf5bb629088fcc354 00000000111744e34049e3f186588fde49172af28c21aa64d0b01352f8e9fb68 +43800 000000003090a72829ef159f8a84016e4e48d38a566d0c13bc4521c04cdc0bad 41effb5e09e7b8caa260bd479bf5d8bbbfcf6e43ace0d8fb4ebb2a03c1e6cc37 0000000040b0fb42e391dc80ece31d3a673ce0a1e7a2f7f29a9545719fba5b1a +43900 000000000a75f846d7345c6d06efe52b5f4115c6f421668667a32909672253c3 f1d033829e4a24f4e90cc4f9a2d0bce61b906428f6bb800da6325a2d52cbc77e 0000000019578134a51c22534feefb604c4d8edbf75150493fea6f17f7c0b2e0 +44000 000000000122898b31073a770a97cf599c00672fc8d6ae15652235862f8b76d8 367ff093c81dca63c20d1c688a017d732464a5003d7a93ca8fe49310b8a53fe5 000000001611e0eb1961d279254766d3581143cb9144464df1d709805fb555bf +44100 00000000377ad7d8952aca32788cbc364253c80d43213f9323583d268a1e5d34 ad140154e7beb471e736b08134a50422f0a11e3ba7c428d2622ca595f7a08df4 000000000f005c92534dbd7dccd258e81247f57f14fca27101261541f6182e9f +44200 0000000022e1cfdd86e4fe72f7e29ea95ecb93aa7747ae0e239900db1fac7ad7 f42d2438694926f3980e96b09017f080a03acef3375bb27f5ff86f99ba6ff4d5 000000000db800f3465e80b64e81bcfdfa2e31a82ee27708923389b337a5299a +44300 00000000405f29f468c2d04f0c3da34dadf8a1dfc2f1ecc64c484d386ea5af7c 0974d2d324601d5676e7b223dd293c5a98d5005a51615893923960a8c5312128 0000000021aabe21c123c037e30adfa57f59ade745278fbacf7eff48e909d7f5 +44400 0000000024c6fea5d5152b55b790afb15308c1219a9a43c06457f60923ff1b2d 88b2f503ebe09fcd7f8cd5812b72c7d8fa3c962d0e69c3566e3762ed889bd089 000000002f1c867f7829c56f57124fd8b93e09f50f512e469d91555a61926fab +44500 0000000024ac83d64bd7dd9073765318d5a94059707cab5dad87b9caa3e24146 0a8d6c12ee8645236f56760e8d7eee218933e1bb20dbb77e26b6c89e27f20d02 00000000157dbd4cb187c34b2f41ba8cf7327b11ebf913f13de2eb895020af91 +44600 00000000218e53e9600a7fe16294c4a479b243d1a0d8e493655a6984c4a339bd e313d3d882471af243e7c0fd842cc76f7b88bbf1d64217f889a3b05126a17388 0000000035843565a9a08c37df1c5cccba8e68f1cc9f681c354159c693db4df3 +44700 000000002356785a791f0bcb899705411dda357f8731cf544000fdda15eb4030 23ebf55e0dcc0b46810e7db49c8b1eee02714ce3b9c6f8136b08ff44da7c5e0f 00000000379263a31e88b225de78f87e1a71e7b10a838a91b1d3739c1e4a6ae5 +44800 000000002c59046dc05c3028f451a7d6f9f2f9d76da40f8b9d2dcf79c1a692cc 6dac5c380b279a4b427359302ed88ba6626e2e0b76932f514a6e07d15e06126b 00000000341833144fc2e692e1968f257cceeaae5546e604307d515c5b9fe48c +44900 000000002c550ef4d3cdabef75cd91ac0c3af057e25ec66e69b46c496a4d4a45 d227403c4236125e053ab563cfb67ff8353ad8afa58f593a79d0fc79c013ca13 00000000264aedb41fb79ddded3377e8555f62de18d2e61d48e3fc5b475384f9 +45000 0000000007758365e4eef39e396f257a3caebb2850906f054066a58ffe657e3b 5bdff639c7469cdf43902d54407fc4f692df5b424dbaa772e5a56e6c472ccc3d 000000002e3396163275f4d1c2aaf89a7efcf78ff9fdef2abcb6fbed1ec9689b +45100 0000000017015461e9d4c42b145fbb066b77667027a7598fc65f28ad73267795 5c8db6a7dc51d2bbf618e449a3066a4c54ad79d49cfa21759608c19e125298c1 00000000017e945ed676ec70f850b5e848172f88508add9c02b8882b66d1c15a +45200 0000000027f421e4a286d0503bb01190d85548c81df54323db696588770415c6 ca98e1251a15ec88121398217ba94f431b98ad5b7e99012adf205c3029d510f9 000000001979d2242ec88e231036866072174d89b4d7022f791e3b90b7ef52c1 +45300 000000001eeb29606cfda88f2e18b426373a1eac0d954ce075b3b8e8f8aa6e3a ff070e0329ec99e9bfb66d4afd03fc06428789881390e20b6f0383fc38a4ebba 0000000012fa33c1fc2c465a453d51f4d1534dba903716be3d1e638ff22fa764 +45400 0000000025033d0805935a3944515d3a8ac149ba1de55c85074605846b3750c7 9c722dac9fbbd816533f3ba76dd7ac9c6b747990bedbd53847d61ce61f6bc1e8 000000000c81c0d1e13de7a5a088da8314986c05c76c378bc4de956171a35e62 +45500 0000000015144e5f4f4726ef79ce347841c0b928b9a9b8ad37979cebd1743995 76304ff19cc7ca6f78e3f2442fe4733649b20d0a3862ed4b29381403df9d84d4 0000000023865139cb21217f815d3372d75a1ca61fffe5ce7866ef8b402bef7d +45600 0000000018dc932ab8734a951c2eccc6d485dc6ec908abc40d42fa1ef9a2f4a1 7861111bff070ab0932cbbeb9d61d3d874b988a57c81ea772ef9ad727d763b3e 00000000107d1f94ed89e957428fffa60bb190ba10f2dffa52611c3d038b0936 +45700 0000000005c10d1af8c1b9f4a108737db47d0af4a7f200079e887223a910c5a6 b9870d3342868ecba319169c00ccca146d677380a562e70a5eafbbfbcd973607 0000000014e31bdccae946f796adf4d8649cf469aaf8fc8579578cc581272568 +45800 000000001821e7070ae548f7943c1889344d8a3a0e222c93a18c4c5557dbf595 192e51718838758da327fbf782c31cc46dc2e91de9833fb50b9ff49f64441a90 000000001f1809097f2db2d371d8f673ca890db2a37edb810e9915454b93fa0e +45900 000000000ade3a00346c5a4893f8ec28c93ae5f9b0e33cb6876d5676d63fa61b 39d6c1470492d0e146c718dcfc6d9082638e63332e7e6e179601a78d3eb0d9d4 0000000026e7cdc5b7c9bc5cf295402b15d90a043a03a69b4945de7fae694411 +46000 000000001dd39771dbe4f9fc6da07327f13f894dd2c1a46cdfcedf930fbbc52b f2e2c567a164d03394a101fe898551e4048161b00b758f7ad4b783d13aa8b5ba 000000000a882eb77d5d9a0abd7f189f64f9a18c06952d8e32f03df3c50dbfad +46100 000000001f07adda51ca38c6f0c171130d6150d844d3cce528df50b0813182d8 2b5f5e5b9c5cf36fcacfc6ae58963ad4ad4336d0ed6774d7954ad536e9e85ab2 0000000033f395948283b3115f439b3889c4d1c7000a53d11962a50e5c838b6a +46200 000000000219cfce557178da9b54cc3552f320b0340c7191d5c0a4dfb8633d4d 8aba484cc2b02eae5ab38297b834de302c52c4bcb89fc66260e13abfee56689e 000000001646ac3e406e766522ad79eb26c9b024c1af7bb1bf0608d000b1f8a8 +46300 000000002541291e14acdc14f71d79f027557dc617e0ee1ccfd49089c1fe9d50 9efe7604edecd5c20f1678e6013bfa25b088d150cc57f58c77c1938d902c6aab 00000000021e1e5301c00408cc135a6e2bef87537c6e456e70ae0d0a66123899 +46400 00000000195344efeb1a89d2e5a27d3fe7b4bc6c60edbf44bf3bb43255b599da 88f263451bf5c8b720752d2c198190ddc533dbb2f16a9174235c40f9a40842d7 0000000023722dd0f3992933ea04d34d295a81e1ee430084a7192f500eb307c4 +46500 000000002cf6a125a40239398069a8de99384a334573975551bdd88842d61767 9a7aeceb6e2297c5d407bb278a6d5de9bf16a5e7cfc63e46d76bead420b3b585 0000000029f33523ce94c0461b416d767af34385621fbd93c63a09194d40eedf +46600 000000002b47a4b5157366091f81ad75a1806d2ded9f2152e3a36cdba39ce53e d8451fe70e492d83da4a80127878e6e571fb5a23454d64501f37d80d931d89f0 000000000ea3f252d917e2516f6d6569e507c7e08b5f444cecc64af16f9babed +46700 000000000baf43efc50c5341db6b81cbede2090ed46f9185193ae6772f924542 81a423c56c6b693b10aa1a267aaaf3813ae72d27f79baa3304b1e5aad5a37b06 00000000360db3bd34359781cf7026763943b2aa119930579d1319ac3f6bcf64 +46800 0000000028223dd60a2c4de2443de674dcab442b164dfaae737a63e117f3a6b9 5fe23b6a63d832a9404282396feba8eb348e1dc5704a1f5a919e6d0022775d27 0000000010d9e043d69d50317e7db19acc67abfc69942b1860593566af5bd3cc +46900 0000000009a067fdd8c2e6e7cc505b88ca8f1a79867d54c6d44958be528de782 159758902560f1eecd4ec43b7f0799f54ae2965cb96a0155384c23d2943469db 000000003022b20eba4b6e4ec959a3b70634c97480ad5fd8fb85bcf98b028e73 +47000 0000000000e7189f8a21e7202826283ccfb276461fe5c5813b4778b708ae605c 58d937d8207f2e0b6490f424ae3e274bb4b21ff7f2c23bb54346f09046230c70 000000000a074f9ef0497c8d55b33d3afa7c03161c86e62680e9923caf9f4c62 +47100 00000000337666efa967bd4789e9a0157bb0ca1bf6d692db88caf8243c2eeb14 49d4bf901bae842652ca4798d9bf70cc9357415d64a5e6daade91132f66cbd51 000000002517a94cddc5a04c2ce8a6d9fe68ef38b647a64b45f900a2eb410a80 +47200 000000001b6b6f58e0471f4abb74bd3b2a5f3143f9714d519036a1565cef3ce7 49a5393ebe3b72e34a9f5c20007441d0892959b5312fcc9eb6f7948aaf6130b4 000000001329aff70c8293b844b91413013a7b2a8c4cbef41c38e6abc2b178c0 +47300 0000000029e19b318b91d6dfee11cc9f6ef07244e5032e0d4ebcf119bd91a913 2018f0638907e66f14117d4a990feb057e63efd1e5c63cfbc869914ee5ce206e 00000000254e60cf8848c6c6221e7ec82e70441ef83bc35ae4dba7e4fde5b8c7 +47400 000000001737baeafd3746a28e698fcdc345f4227c126f0354e6ce5ba73aca88 f28df15034c254efbd940ecb3118786202ad52fe927770c74e82722717c31cbc 000000000d899bf51aa7511555c6088d55523ec4c46bc0da483d132c88179262 +47500 000000001be0576677de04f4e9e4b84cb0b0c47a804f24160229a4c5ec0a33e2 853d0fc4799548742224e6ffb65475ff9d3f073bca679a343f0404afcd2df8c1 000000002cca6b261afd87fdbc50b4989350979f31c7c4c56999882e49f752c4 +47600 00000000327b7a58a129882990cf008f29f0e53747d02bde11d02f06d30682cd d181ab7dc9422dcd89243da4a402c2da826b790eca364e88a6008a29696492c3 0000000009179f032618414cb26f46c5cdd2d88fc71e0eb611acd6b53a1fa948 +47700 000000001bd770c4cc8a81ce0dd79b0e57e5216a438c5461b8af71801f9d1468 46d0aa95b1e3a7bffff315e11e1ee78ffaf3bec564f1105f7aa9e71d399fde24 0000000036a54f3029272377768c379eb30c8219672e3a2a1bfe3db0eb4fc8cb +47800 0000000031859a5d95f3a06c7254d4e9d00a76d103ece565858efa4f7d4daed0 13c33f818df84490374dfff150ed64831afc85fb09af4dbd6de03376e84a562d 00000000182a40480620e6b78f913dd6a595e0cecf972c05733e1015cc7c8a7c +47900 000000000113c7444001db1ed0789d1a5e00c5273a2e713379f9d7b6ac69dcb7 cf04807b7daecff81b14c9f946ce657c88b27a943f61a14df10cd85e353d0980 0000000010c566e8098b774a840e9b8b5a2d1e674426257b036d3e012b1bae5f +48000 000000000f3d40ea2bfa8d779010e52cff4720c072ec4b12ed576cf5cf93c947 d247c389996573ba993726b6d01e77654fcc18dc20ccab0555007a994a2ff77d 000000002085503169f527995fc46d02a5e33666493c46ed4516dcc0b96fd53f +48100 000000000641912a2e4dcfc8a0194f4e257416eacd9f556d59d9a60008ac7ac0 143475c81adfd18f4a04ec80a6ba73b0cc593b848ed0aa1160d50f6675c069bf 000000002d2d30887741544fe3d63c0f232850d4188cfab2b3adee006efb72f9 +48200 0000000033726db5ac513a968afc064d6c48def54f8baf7c2423a2f996ea2be8 1c1991b7245ac192207f36d72d79add41d5316096105efad1e03ad84580cbbbc 000000002e97973fe6957b66b0b39c47f327ef91d14810d5eda0d978cc418bd0 +48300 000000001cc2a74548c306191b56d71edbf6e22bacf0f60b457914327c01bf06 31ad975f5be0de5ab5469251770cffbdb9f8b75d5becdcb679945472811d3d52 00000000097fd3b28dd358b9fba1a8796273bd6d6a9338a602e3201c170957e3 +48400 000000000b7c5c4bfd4faf02d647b53740520be0c38c2f9e3bc600c6dab3408d 33927278ed1d222cb05cc65af95f6ba4f04ff5ebcc79b083591367ba9efd2f83 00000000194e12cd9c864b24d0fb45c98b4ba1a52c67c35e2905364e8753f9a5 +48500 00000000035551f2eeb1da841bfe7d95d8cdabaa69d8dbdfc934bc793e19edcf a4c916fc874da096fc515bc29f1499158a5507b2766c13b279bb8b19587261ac 000000000c80d7091be6fd51fc3a6b5705686f253fd8a6ec51000f321fd0cd3e +48600 0000000028404f70d2535ff1eb17a9af71dd3a434e5d6dff2d61c1f28449a93e 5a6a58a9c8224674ec0c8b6d0150ee34b49d78b2b1444ffe06998b3eadda744f 000000001529a98ded32f46cc9dd70afdb2083d72bc46acee57adb712da31316 +48700 000000002132fee5f552ba3be97b7921d89e98e25272174d3699d59652ce1751 5fc1dcb6e775cc92689b22d3bd2ca9ea9749b2b838d0ee14b57517971491c627 000000000587bd3a2dace5d3e92876b24c8744cf40222475dc77e96f8b1987e8 +48800 0000000000292c6f0966e92c4e9d35676fd7f703eaf8808d0d48962d3f2c7be3 4d80035d1737c63397a88ca253bf3de2d35af93b22cee276e5e12f50cce00f29 0000000028f0213a4cc08abf44e5313b9f4f992bebd11288998bcb05c04653b7 +48900 0000000023a6d73ae402047b2f587f9e0f2b57776625f3aedf858e5a28d38ce5 f173b4c664cad7284d0a97eee1fef43581e53c5a97d7cac11d3f83dbf55ff800 0000000004711073834ae3ac5e1c6556be86da325787b96903817e7b035c09a1 +49000 00000000289418da0e84f10d9563c4f08d2b4265443b9b88045b13811999ea09 71f2065c40f49d475080db7f578bf57cbf8f0fdde1ff2867f21d782b33d6182a 000000001ce3a31959d7986679e9a4d072b21fb6e37f9c296eed176f6fe0e7d8 +49100 00000000294a5698f73a52a4fe1404ae99ea00f8858230117959711633b86a54 bb5ccb9e190091a059c1969c382f43e4b23a150a31608d211543bc1119f1dca2 00000000054716b6cab36043e13a03ee26e0b59bcb7f8e627fe9e34bd461a42d +49200 000000002937c086a343b7c1fc1f0fdb300b0ce046437c11b1e9f544282ccbec fef095a94fb2fa4df2ee29510d07846cb8ba9ccf2bc65b773bb6faef7fdd8bb2 00000000208335a1f151d935f0ac01c6f9af80463fb2271f8fce63a8a8130b9b +49300 0000000007e1b27c3c7278bf4cf2fc27fcd122d6440c508ce4fdbf2cfd50bb7d 9f066f061165ec4aaa342e121d73517054a3099c2280c0d82f1a55c5b6860549 000000001563ea1b2050a8039f1f59afda33e7d30e0d62f48f0da8524f1d3e87 +49400 00000000118e5d92a12a9d781ce610b2db1533132de2ff5905f5eb5b2def6ac9 b263d21f4e04ad232b6d55b7248751c63ac094f0a8e44aa715947d536a7751a2 000000001e4508feecd656807983338a180ce942a46ceeecc8f03c01bdf5caf9 +49500 00000000138d20e79a86839335a7d537bd344e731a7a01003304117b016e90d3 4821cae480a1ec03b54b113bfe751dc64676c1dd13661244eff9895354d82a47 0000000015db79a6fb7f5a3b07cc5370aafbcac8369734a28e7b0c3785413257 +49600 000000001c6896e7f45857f25c1ab2d7e379f8e14b3c806c28cd0b88284bab5b e3fb29ef65076de7ac8bb0eac27349feb02f5e97cf40d40748bf4a84e3e62365 000000001c082e285555076f4b1d22482ba21da428ef6102c9faec7ea159fae6 +49700 00000000002f6a3a488ebb3e9ab9ca4fef9a5de53db0553697108a3d3f6f6963 766a7b0febf3a18cd4f20a390e787fa20ba5e487c60f6832912300e13e3a7974 00000000247ab3fa849efc09a9d63d115375a53e14a46e9790e9ac43443c94ea +49800 000000001ec1b4bd7a592298545ce3594f2684f607ae8edbe579735bd9787fb8 12624d348c5939dce70d1782006048ec64dbc88b8ae114039f62603045e8797b 00000000060b61848d7c7bd129ed18af9569fddb82111bc6163ddf51f724aaff +49900 00000000151271963230005382bdd22f0d8f97c535f6e6c682343875195d584f 8d0c6e26c61fea2df212beadd3f609cdda90ccecaef4dd77cf220fc63806684e 000000001fb8f6d144efeba1c36c661320b746a06f9dc890aad92f505255dbee +50000 000000001aeae195809d120b5d66a39c83eb48792e068f8ea1fea19d84a4278a e2d387f2fc51dd4479cc98b5ba25565cf8bf5f3aa9a3e15b48d1bdd5707b49d7 000000001c920d495e1eeef2452b6d1c6c229a919b28196c103ecffebabee141 +50100 000000001a768d40d82d73cb7873977f1fd557f66702c71766510b6276e9ce17 55e8c0d97466cf6ce9c47c2fe1fcd35fcf113a94cb78addbaddb44f3871715f0 0000000004672b91a58d652e341c1aec038039889d89422091c892630153fabe +50200 0000000027fe8dce3f77317181ce3dcb0bc295cc74af1b81afbd4c4d789baea9 a36416a377ab5f8738dec3890e3503214de20def06e6e2ffe6b117d0833d8373 000000001d8a42889c8c62a7c79755def64f13ec0bff0fcd1bcf857e3c728ce4 +50300 00000000162c3bc9dc9c0c49ec7485229a6089bbfaaea06b3d457b1b2a1c8b12 7337ff384f506696bb371b9cde76009b60858c31aeac90908ed42324e0252206 00000000180d929d70d6b5e810e57a89f5ba1eae4d2e1fbe927c315fa79f7c59 +50400 000000001af6e66db5628c7ba98501623bd23ea6d720571ffedf007973be07c9 183deaf6499fb791368fed35b104e9394c5442cbebb7a74213a4e2b72597f324 000000001a2b58ea986bbad76cc644b5be00c2309624b8e4cd2d4d7437614ea0 +50500 000000000f7a00006941c145773c1566ca582d7dc12e0b4491d43157d9ed6e00 4b22a77f055bb9be48c964133eafc226a61672e03a281a3b92f1a54eb17abb3e 00000000173edd7a34524baa7fd6ea867d960e11a0f89429703bea9adad87511 +50600 0000000018f546e92141f996976ad528962959803dcbac1673d596c3c8fa3851 6d4d603bc97220088cd6733100c58c719617932015dcc4962a1b108dfaa5e1b3 000000001856b614b2fbbc7093ffa4d33513497dd0f623b944aa911182f3d821 +50700 00000000035ddf191314bce73df1ec6e3783a15867602ca993b97afc34ee2e5a 7363487893cb1d198f83e9ac427c17b3836a53efdabdfaa5417a681136e34ed1 000000001e80000d9975931e9255b48db0c47342f058e4b56e728008bd30ab07 +50800 000000001fe0678cc4488039854ab0b2926d2824018587f4e66f6a97906c7c43 5c0c543e59cc6aeaaac923415efa4e4d52c1259bde121760d3faf801806319a8 000000000402892108e745f403a4df8a0bab449eacc4d24248447db209c450e8 +50900 0000000018abe1988446c0f3a332da34723818bed05e36afa1ec5071f2be1035 ca783a9a9a117a335df7e84d4f1221f17c809b4aa292b05bad9e54c34bf6fc43 000000001381c40b5ac4d7ae4ac2463a551df423408d210ed707f733c1e681f2 +51000 0000000016aa231b566ce2d1e95405962d6a12d3690c0f01427ffd2b5f4b9df0 5bfb750c2e2c8d5cf6b0b4bc4c734b33f6628fd21463f20b7909e5937a272756 00000000157ffe19b5b5c01069d134cec1e83ac34a5d81e44d16b98058f92499 +51100 0000000015dd90972f84cad9a51ebb192a18a2df31bdc99f1a9bb3621cb6df75 748f68974bb792a7e788a19720839e6183e260c4e2d5b2cf97b122c39144d267 000000000194df3d1fcb0bd428fddbfef5d877b2e3affc2114135e1b9d951df8 +51200 00000000201fae857af713e52fa719e004a954e8c37dfc87b9b2b0096eff85c1 f799d7ba140643923bed81c8a2cbee4d4cde2b0cabc8338c42face48bff84519 000000000c4ede44a904220e66aa0e8b83915b784f75535c98b82746cbfe6b01 +51300 0000000002a960e367b111c7f95b1cf5d9fe660a8451041624a6ff3ec546c5d6 6c81362e0a3301aaf4fae43d8c31bdf83021e547a82c804d8856ec8cd1ca7deb 000000001df1399927afaa6d160cff7398d3706590bd54d9f8df4df76418a490 +51400 0000000001da24c61937addfb3ce5c3bd8dda41168baa33d0ca69e523474de47 0785c60044848b11516cd48e68e0bebdd6e2927355e4ab35a8264baedbdfab62 000000000acb0adc6501d49ce885c774c2bb1a24155f61442f3ed6dcc2dffc42 +51500 000000001eb03b26176e70b7d4e35108df00daca033a86beea0ce9ef0f0aea8b f096b7d4192a3265e957eeb910000fd57e70186d92a60477d3952e8d2f56072b 000000000688dfe6b71522d431a7da0aa293d6a00e121c0a4cc20f0aadd1961a +51600 000000001d4c8aae777f820e4260b61a78783cbe604938a3e6312be0ba42664d 9b4769de0c94e8b2d98f982658a7e0f94e7684bacac47af3efe9611df72a2c60 000000000aec9df098db571132aaa1666c1918f739549f8aa9651452f8234adb +51700 0000000018f490e332aec00bc2108f0067baf851827e78af36624467f20ae202 c5eeff4ea41de5b6728f53369dc29639c33ef59e522c86d5452adcba1b05d1d5 0000000004e198d59768c58fb2819ce67005436ca26db54b0f0b44366b8855dd +51800 000000000a5488f0e96ccef8ec7debf4f0673b7099bd12b11a0695149afaf895 0162160697a1fd16b68c76908bbefc4f9df2d5e2509a2b0e9530a0a7900043e2 000000001127e3281720f7905c43259c2b4906a9c1da3ccd11ec527b1ed57b2e +51900 00000000196beca40517a45241718ad25247b88015ff348b24a1be51be350255 3a084af6a9c35b6064a589411a8d3c51121805f858c52458f1caaa8ed23de33b 0000000006715e379c252a3b192e837a48712dc40c6e12a3eb85eb7b95ee5065 +52000 00000000082bc4398c4aa5bd8d9fc452d60d533ef68baabf594c9e7d6649049f 54db68ecc2acfa3eb60625afc0871899fc5a2443d2e866dd87b4eb35cb397cb6 000000001ab16006f0e6372bd266b8dc97805aef21d0362048377cf03f80909e +52100 00000000038248c718edacda5a379db47d00577c516952e14c9ea52aef13ae5e dca6c8ce42c23c92dbc1125e3069021e9bf9d219ab5cd9cab93f24ee9bcb8513 000000001a2b380c2d3ee6797498a1e90ed0ffc80f99d629380d71b4c1dec5b4 +52200 00000000109ad460c12247592d168dea8a1009afaae3bb2f7400c4cfaf6642ac 3d2ed52f6423a4ecca5d6be4fa169019b5ef4bb205ecb57a515875c52f18859e 000000000bebbb46c9772cc34ff45e1f9e6229d3debce1c200d96b27db4e65ca +52300 00000000129a667e836f8c80cc4cc29cefe06fc1c690f48cd4ec9255f1624c3d 74ee72b020b769d64b7689c97e6757200cad5140e82412c3a8d42025bc88f437 00000000159a607b5ebb055abf80a9270e39b9c793c098c365c0c9a56e8c529d +52400 0000000017013299f5b9c9aaea62bf5249aa11838d5273bf227053bccb841eaf b29c193309e8fd73ab539e7083fbf3aceaad938d8d9ff9035531c38899783cdd 0000000016e5c6815a1c28239b0cf509136b3e55f64773f2f296ed866068cf21 +52500 000000000260878c74a06c00adcdcbd940c7d28cc45a622846dd7a173d25ad14 03e9e29a610302cd78321c502c8163d332f5f85fc9e56976dbdbd7a6513c2d1a 000000001502bba38f75c5ddd51969f774987016ff260ca49d91ae4cdf4a8f01 +52600 0000000010bcaf30353e193b01a6a628cc0332e3c392cbf75d4e9c2a96f2b000 55a0400b95741d2b992500fdd7db30fbcf14abef6eeca7ac09de945f2e050892 0000000008f5ee81751539c8d22cad5365e8fdcbd4e81b42911d9ec5dc33c896 +52700 0000000007b80dc8b09155d6bd0dbf7e0531d45ea4cdc44d2ee5ed2e45702698 684c56d726814a05ca52c69858c9b288bf49755ee0e5237bc59c9ecd079da292 0000000014e883da778207dacc7b877033f9405fe69c47dad933a5792d708de6 +52800 0000000003e5b9f423b612b022e49176a681d62dff2273196ba6814c6a901880 887550b5ccf0a71597eef5faba16bd25e31aa71eb8f3701270c6fe7f34b1eece 000000000e5ad0f67775531e1456e1a0bc2b74d560b909e96c02c843a0fd53ba +52900 0000000001d04464215993b0e0023388b2dd996466f1ee85913f72698f98c6e3 bdbccd6801b46773bd0e14c15428d63529d59df38f50d6a970cbc46855de07ae 000000000a984e7ba999687d55eb4ec06e8bf2d1346a0f185437bd18932ccc19 +53000 000000000bc96af7886cb12075ab1c79711d9589b5051b02f06553c62c22c971 77538986825225968a817a5714fd6219d0651cc1e3d67cf4d9470d8bd8ce30f9 0000000011ac8b235fa2af4c262f01cccc348cefbf435aeabc718cbe0c4dfe43 +53100 0000000005f247b2bdf9708c013c304504e34e08c997b0c179f4c8a40b35d544 219a01f0e4dc37ec036fd90e67f3e2d4f638930daf90d88b53fe9ea3e7338be0 00000000054397ec5dea6057c795e7f18fee43a9a51a4bb5a710516db51f7340 +53200 000000000bf154261376e1b7ae975307e15244c9ff6879f8239508d2ed4af3fc 889a51e6b067aa036f31944beb4c99ad59f828684002f2bd57ba43c0af18a87b 00000000038f7d015d2cf73d8aad649bcf788a133b80d3cdcc17b296ce1c98fa +53300 000000000317b1d1635bd3d906d6aa8322024d47cf6397a12ab97fccb6810af4 3f6138b722821c762cd280dff0c43fe4887ffdb0f993a6ebf761c2abccb9e0f8 0000000004bdd29733fe2e754657a9dac3dfdefcde6fc70228f98d46d0111a93 +53400 00000000075d37d793981da7717e3317579a3376b6485fc9468f0f781bdafae5 3f92fdd345831a34c8ebff059f86dff159d0ee1674763a3d42ad61dabade2f23 000000000176fbcfff5aa666a4e391f2eb0ba20fd41d9c823f6400e344ebae7a +53500 00000000050325164f7ec5614579bea967c8a883cb3883450da597ab0d31a84e 7ed69a42cc6fe64e27c0d5ab0e69511e4153f9b80a25b7fb37dc0d5cef40a3e8 000000001225c081ec30ef9b765ca42efcff4cfb91e0b9de18a5f8ae105b80ca +53600 0000000014ace502ca0525c27439a3bbe2c95742f0aa024c88a4556396a5bbc1 668e316b2d6253b8dc5e6e03147c0e4869e2d47b3cab8fc41e1f9da9ddc9385a 00000000082c78ef79454aeffb6e1116179e43b9b4529a7ce5cb6102e68fa8ba +53700 00000000053f667894bbe2e4a420e066f6564b0d8c64dc308c329925084fbf42 548b36b139d0f10b9c575591d6c71a385df658fc299603027600221a9c32105f 0000000002ca827623ab70cfc38b3b0494d082a027b4d476d87cbbb30d856226 +53800 00000000154f1fab600fc92f5ffbcd13f97a612cc2057975caa27899e1de20d2 13709a2f46e709aaa2d46b985bcc43176749e9982622b80a3e649cd99ccc0571 00000000133db0a6c67770fbedc99230df5134a9bac9eb1e59d3ce1391d2e502 +53900 00000000158b5fbb85f4509e1ad0ee6ec8adbf20c92ea0e6c2c1c8def9b08c5b 85bc84cd4b8a265c9e924b9e8ea485ec337e00bb032ec13a6e51389854824feb 000000000d18829018a1f817dd6700332a7b120940b504ff8baf028204dff07d +54000 00000000144197f54afa21ae7db2bc93eee604432101fc0ebe7966a52bb27e61 11f226514df8008866b6c68f1a8cd2313a0070ec668f1927edd7b5f667c6c63c 00000000100403d4ad879391f3fe2d80f2936eb2dd6389b81ade62ca6e3dd0bd +54100 00000000115172f3a86694b781ae4192bb7cf6caa13089235d3b58b1c95e2b6b 8f5ac9ccff0e41c348420b3134725c2078bca39cf89970a0ef9c03f3870aec25 000000001207d3112d441cf83421ccf7757637755d3010a35bc1c1b74b6b48b9 +54200 00000000141c918700bbb4f185cadafbd26614e5d64ad93c2b8e525fadf81e2c 4996bd0f9d19889c839efbc3ea0d53c434c4d5442c77e2467b6881f2fb8da0f4 0000000013ff9c01a99ee3923e0ab6a017fcc3bd1dcb35d6dddad7f96f3e9c7f +54300 0000000005d9c2949dc9dcd9cf08561d4dd83b1322c478b848343e219ff43130 a2a5834c6cda6e8d432b35fac1c76259df61619eadd7d7b3c8a2697c7c511721 0000000001cd16be81e57d359bb7098bc66cd9c70a25696b27e5f3f7ac99d12d +54400 00000000153b400f2d4fb6a3b4d1d122f526a07626c087a49381d8258cd00f81 95f5ea8c05ae160dc06579046b72f5974167fe8eccedf640bef8a05fb5abe530 0000000016353e77dd80cb56062915e69c67493c67ba0d15f53380321cb7be75 +54500 000000000f559d93aaa9fe1706ff7a2fefbedfa144e852e44bea67a109eb3eb4 a23c2ad760f92e112e1a3b3f67a65415ea1f23fa09d7294eff5277771e02f91d 000000000c74e257b8fb4508fb69faafe8aedc39678ac4b350c4c34b349cb719 +54600 0000000008b14cac6ff49bfe3a231f8cccf40a3f204717781935735587d731c2 d8f9529f173cb5f0fd01c798334c66f3bf43e3a5ec46efa9d3cdb81edca4da4e 000000000a802192ab9aedcccdc36cb5c040b6835590376d5cecef5ab64ea425 +54700 0000000010dc1658d00e14bf262d469225174347566917b739cf1409ee3e5edc cb073107a92e780d2d3e8529a1e469e03edd84acc2ce7b60ea1b693cbd90d5b8 000000000816db8d4cb1e518b594a43f893c2740feaaa8ac00cb97ca4933a612 +54800 0000000000bec6db13cd682f4c4a92da18e063e072b39d01afc226fde2a660a9 2f3728873cf2124450c3be9e19e8ccc22194f7b814a93ba7ad71346f082d1845 00000000052e3a006cbabaeb96fbcc2a2097d2d4d38c367a94506b9208916ee2 +54900 00000000137a5be37356d166e1ebf71335c5544bbff51efde51279db0ab6deda 1c50c116393ba923084a65ad87630637f1606103ca9b76dc76b34565218eb858 000000000d9c13b983a62b17edd00e17f1568a0ed43d8be6c8b2e1a43e943f93 +55000 000000000a629716ce673212ea154bab57d7d2b62aca42683389dfcdfe747e1a 959a41086f9cd1da10bce02103e3ff896a1c1d4f9ada73440a1024f24e5183ba 00000000070fe6b919a2a77d8e23f803cbf818e08bd782ed202c92b66ebdc083 +55100 0000000002f8398c51df4cf312fba8d00ac9f38a2935547c5f0462f253d04799 0cad13da7854ec3466f59f8acfe9660a7c6c267347e969f2a1cc0749ee94347b 00000000017d42554ad39e7be5ed5368814b9bacfe363b6569049fbc12913b2c +55200 000000000aa89e8e3e08a71f72b2263c484d629538667bef9e954f488814681d a86c5cefbb55f6157ff2346b85057878b1d4e9b248a3c89a821f439b24b15c92 0000000009b1cae57239f0c894c446a113112ab0d03011c8e6b889fa6ad2d165 +55300 00000000070ab5aead89740f546d0027b5c6f47dfbb8401aff0c45a5b49f3218 18130d99d694e7254be8f4f27410cf25ceeada4e5984dc155b1904a6ae3ed4f6 000000000b005bc1ad8a6ebf2536164e9e59593dedd3b438188eb5397bad8311 +55400 0000000003f41b5aa020ce24da77d41f72ee565ed2f78cec6311cf85472b50af 3edb0405e7879820d9bade323fb877f3d1aeec323a4e217a61475b394c345e19 000000000a1053113413446a2fbbb7cb038a7fe6187372c58d061bc4875edf4c +55500 000000000bd8c202d9861ce2a2010ee42b5ca387006b65c87e694c3dfa580033 5cd8f5b8ebd6b83fad48f1b56d5b0dff07ecbd53553726f5d3b8f2609fdb1fbf 00000000104bdee080904c54600aa8a80546cd67286602cae27db24fed269e0d +55600 000000000c9963ab5431ad9f8cea6e6a16bc1676bf1d5f788285efc592503a29 30b7dc26983dd839db1a97a428eb25670befe169dd157d9b53f1a25368cba7e4 0000000007c50950aa28ebb30aff51242a0dac4639641adf9aafda75524ca7ee +55700 000000000288f3a9dfbcbc0f3e4d5e8272c889fc43d00d123ed7a2cc5847f15c 404a8a94d3081850290e3ff7a95efd2a3cc6969b701db1cf6e7d6cb80fbd3069 0000000000b1135d491d42538c10e9e855e2e6cb4604226b400fef19ab4fc3ee +55800 0000000002e69b57d750388b369c43e7a99dd911ffd6b558a3b60088b420e7cd 20650d374a47a36c795fe0a838930b9ac7aa68fb317975522b8cd04b27cd3a11 00000000120e8b1a454c2877c42f8e2e33cfc7ecc86b473a571d72271b6d2db3 +55900 000000000349d57b888d01d597c6be1fb6afc014007afac0854ef77648903bb7 ae2fb7bbdc53dde1f068e8cb9839563a1b06020b995ef20f2c44c16ea32c39c9 000000000e2bfac1191ddf8482272b6925b53817a2bfca43148c6deb68ddcb28 +56000 000000000dfa452ea45e0426dd8914c35e24dfd4399037c5e6deb9f18f58d6d3 031d7751817e1608dd7d53ae2b8500e9f1ef27be16bf67e35ffcbd4e04b2dc26 00000000002157f86eb59fb1037319fa879c0afe087ed79e019cc29560a224b9 +56100 00000000101f59e944f7069d4e34cc403eaeabfc89db6607ba53aefb4da81fb5 6d05e75e6ea39b82fa694ff5eb8380bde0cc5a00bfe571b9a1ccaaebf90f161f 0000000007c505cceec93b386fce41a89be522e8af80eb1d81e81fdb7f1e5836 +56200 0000000010c5a13e8b62ca0f8b7600b0e0f0a5e1dbbd1c6209c72cf8f43d7a93 fb48ef6fd737701a3c5509512cc7762eed049abdb3eaf088bb619b3bd532ee4b 000000000ae257653cc1fa1c2be4bfd414e9651c238dac24c402788e988db92d +56300 0000000008e02aa869d860f52b7cf9a75d8c6598163ca7a9d9b51ad0592cc631 9fee5b9b0c85cf3fe1fc3075fcbe6272339082f6736604843d06ef20bddc3e2c 0000000010608c56ca536e97357c1f34ca60c225c6cb208a31b6610130c17528 +56400 00000000015ed45ebcef699d0f4708fde4bfff58b444f1036e2fb2bed4c239b7 ff846c3a40df4740eb7b123369409f058b23b66b86c14b0113d2be0c1302f59c 000000000367e5751ecb3cfb843a7e78c4bedff4f5dbe2c45a2baf29e8558dbf +56500 000000000f981e1d1193dd2a5c2731984ee9dcc25dc81d26a238690036e0bdda 03d6c3a53f2123387f2f34e83ab44e5bd618cdcc5c93c2df76cb520f58c3151f 000000000daea26ec98945fa5603ef28a6f90536015467e068e1a72b5e1bae4b +56600 000000000332d5a378be227b18521d8a1e6fd3911400b01aa1a76e372cc9cf14 f486b8ae04acc54a97c1891262394fc18dadc1c03d09be659374240f12301ccc 000000000e23bfef60a766fa2738a1d91d29365cc5d3b708d829b4c7553389e8 +56700 000000000e85ce4a331c054417de618e31b1da0be4d05b359dbfb01d380f7316 b25e6f7b33c33ac8f5fbbfcd6585674cade539ba6213de0e856680e13557fa1b 000000000ba80f9eac42e53aa3f237bf144c7a3d2c97db4c020b2808a74f3e75 +56800 000000000f1facac04f40235188b6ed052086f4491b1b933ce2c36990d771190 6540b9933e33436a9c2a420cf8d0d71f593a988095c07301444e55b2889c07d5 000000000492599f1c9f2583861041a32171631f55e0a3abddab06b2a4bcebdc +56900 0000000002d32e8f98fef5e9a710c23a8dd42dba8cc764a5c22f3adf59b151a9 ed2514afadf57f850b472a175b4b98144b3c791082410ad667baea44305175e9 00000000067ab4a7574edfa2a9f96ccad909daa97c9d44904f8cb4150c70b2f8 +57000 0000000008ee3753c6dd237a3a3b4f6d19c2651a2ed26f63756e9f300073722d e2e73a2243cfdc2e60ca92d4de0c60fd2f697a85cb4431daab0dc0f2fb80f18e 000000000ee702a3f75854390bc7268ce44585ead2c3b09889bf9fed202cb286 +57100 000000000175f963aeb163e182f7d2035dcb4f6add2e821edb61c2101375b901 128d5e80479c3b1d5f615845c23d2c7a170370e773ab044f30d1cdc16e5cd8ca 00000000057e2ac6c9c16a938607d6fef889450108ad28750b51faefc6cb6464 +57200 000000000953b1ec746bc5af71406aca80b2d8db6ddb418b0b20b9d47e6ac9a8 4bd3bdeda5084ebf75b061078c4033b846498f0a041f0065ad7fbf3c809106a7 0000000007047fb0179c8184f338be86431972ca0a8718bce6515db90aee8521 +57300 0000000005465beabd8eb583ce012a45aa358efdd16f0500404ee3335426b766 8fe984f14a23a0d7e525ff709d5ec0998d095619c742a6ac00e7b671cd68f604 0000000003c74f335eeef41fece87acaa6f03724d24c9398f28d204409bed74e +57400 0000000005801c1894aa2662d04a45ad1507ce5e22fb9689665db39dd091849a 534126c619b5e04a726e3dbcb5b6c49242eec675839cccd6a2e299f7cf0e4c02 00000000150693be3b198b1f93d7ad86c835af408dde0f9d04b37f36a09c393c +57500 00000000111610a60130d221414d1d4fba26f2043ac04d032f0160659e0e532a 7a8af0cd5d78d75454fbbbcf28ac21e2e68060266b51cb8020ca38afca49d86a 00000000055e0bffa56ef75611537ba24848a5431e87758eae93deabd265d1ef +57600 000000000eb6448e10b40fc59ad0b733ef4174f5d86bd0c6044da1969ddd6780 149b470cee18136679ef84094505a09257b1f6e43909774b30681c3aae1a37b0 0000000007842ed6526d4db659490818602ce9275ac9703a48db7459c92e4e37 +57700 0000000014649cc6c87ceb4052e710e2850d217f208baab2558d6fef089895ee ddfe48d8d222e2cc05755721b8499ee5f3b05c8f3b814a2480589c96306a8cc5 000000000357f027f6302eeb650dad2fa16d300e799a09167d7eb1d06faa7e01 +57800 000000000f8a488b3fcaf88a29c8cc1035c38073ed7c1b93a4f8a0071d70a85b 44d99f221f4615bd9a67ea30a63c132a8d06c5f88a22fa0e258a39e100eba138 0000000006989e51a6a1ef0283d1c5a6188e791429191fff7ddb895e35363e1b +57900 00000000134b4618ea4b556ccb33dc77a46106acf8e76945bb097841a5b3e522 5738778bd66b3df164e3f5d73457a910e2a221e817ce4fe81d5e5600731202a5 0000000002c2b312456137ec0d2c3a36dd6b76e8b1eae124b0bb14125d44d9af +58000 0000000013e3791d288d9db814c52fbdf240b2206eb8e19d7dc80013c60c0c00 e456a9cab5e63f45ba7fcdcf5c66acd689ea9ac726927769fe356eb265b4bd1c 000000000e52b80e848807d7d0a7085fd561b613e5045a492da9680d380f84b0 +58100 0000000009c4d8afc783d13838c2ed81f55e11e27c496b676b3466a48e386eb5 cea78da2af01011bb286f60b59e95eb557ea79683006613c33169afc4fc4c182 000000000ace0cafd3635e2fdd2e4bd4689046ae3942fc84ce3cb12d4e34277f +58200 000000000dc42a8642d3694e7b040b4edaed1394b29c9df835c0cbb194aabc0a f7859f9176970c830622ebf7704b157ab85205efa24e9be1aea6f9d10ceb7774 000000000f13607e5f9af5b15ef27602da15b52c071cd321f3c61bd9884010c4 +58300 000000000777e39f52c87035c2e44ed823d95f8430a81f799859d26c92c2aab3 8344f88773dcb0a65e449cc3b5dcbb52273f220056c17a7d765f0a694598d79b 000000000af1d0c253e0b4cf11c215747162e314cb958373ea347c65c07eca54 +58400 000000000b49042a958655403395d2a35b899aa3336db7b810b7c7db32c2a4ec 2ece7e6870212491779d37a0531f6ee394a6cb28af66c64566bbd0f3a8c7417f 00000000120d240e0472f9779454f437bb53f4ede1187860feed1699c6dd1c12 +58500 0000000002b95b79690ad708aa689d28d688e7fc881fab227ec6f9ca2a5c7a34 71b8c80da5a0e894b47e0079e208dba20ac2db0424ffbd601bf8cc8bb87b97be 00000000095c02032218cc7ee6797926ed2235778745a6383b72a85766dbee8f +58600 000000000ae6fa1c3d462d196c3e3bc941d8740a95dec84aa023e0f3c0afcec2 ca0e170bdf702a65c9f13e8a48027ee56f8784733e9cd84e7ea0060beac9a176 000000000c7e5b19bf10ac1ea0144d72c399642b9efc45ff74bd277d1f84e20d +58700 0000000006be4143a519f165d5ead76ed1dcba494757466c2747b1e228faa120 481562e3e902c8b0efbc23f08d80b1259c0eded1d3300f383524c8290b5c9cea 0000000007b36f1719f85fd937acb01765ee8f4f4d9c0d084826ad707373270e +58800 0000000007de4da6feab9b03352eb3782b1dc49553f9e916dec633f8f0d49eca 124e63ebdfc1136da528de3bc015bf94cec445979181a960a340a6c3f665fa97 000000000aab10e3bf8c988b8e1bbbc146d1881b590407e5428c592b132b3e39 +58900 000000000036c3510aa38546df1c3582bae3140c2ec32ee78e5a83fd3feba24d bc4379be5f4cb3287b89ce7399009001004b56ab40914a57840d4207508bb0d6 0000000008364f1a6270499c0a15cf3ac38855e09b40d50308b5fd11f26007ce +59000 0000000006ddc481d2874ca7ca98ffaae9645b6c7e316bc80e0415a072277d27 19d96128886319d9b0bd00fbf4886a84515f2c6c8ce299c2fc7a77bee3666f77 0000000001fa071940b85b1e04faa53f634599d1e878d102ad2923b6b9b46a7d +59100 000000000bfbc8cff186b4d5680366dc650d98d88c75481c9e64aaa708ca24c3 40c666f360adc1b54cb94668bc55a6e3a90e8f58059586a2c39bd8db534a0c5c 0000000006d3b9c79d73b7e81a7e99ec940e70ce5627ab92dc5eed9f8b2b491d +59200 000000000a469aaa47e576a8834d2fa2b89d1718e095dd093570b0983e7a633c edf3dd174261e5ef6b5a06705ed42a381891a4867e035260ed968f87b9584c43 00000000040c6e9e3d08286ff67cadf84f79fcfb9cb32518e39889c3ba25ca73 +59300 000000000e13e28c2dc4da5ee48d503a56cf6b276baf566697c97e3d8ebed67b 70ab308a12994defa46011d3d6fc6112c26e4357fd062f281c8d01016b1e0667 00000000081d1cd5481332c79a1ab03802e2c3244f2fc0961f38a48a9ddb3589 +59400 000000000733a05fc5cb1d3f9b3371baafe2fce77f6d20811dd01f9197e7ce02 d9d62f2451535debeca42fe0b13b2b79beb225374c903c8e46a40756e5bfe7f6 0000000006d7b22599f400a0ec7bc8769837459339f82c6c7276ceef4824841f +59500 00000000096af43105123c499521e1d131d172e7e1bf2ed0843290a921f1f6a7 d56e5a5e18201e1af0866222e75f04ece8a494edc9cd9f6c1bf2cc8a7ff6737e 000000000d111de83e0873c8d643d8625d43691cddf199d075ba75ea260e978e +59600 000000000277b486ccb1a98cda87a656b57e2f741fcbbfed42dfa2ee1a3ecc6c df928e32dc791e326bdadc380da41ff7371bcc977b078d864fdd51d05e06d835 0000000003da52151951a15bdd4427d1dc0ab1f8c9a82bde2a83ea0caafa281d +59700 000000000c9cf67130f3f41ad0e09fcc624c96b795bae954d9a31204213fa560 747f137d01abae44168ab978ab0de5e932056adb80dba93d3366b1da3c66f584 000000000f2ed8035e9c99f88c7e8a45257e3237a5c3c16889b9520426091a96 +59800 00000000036264ba3ee70da01c97f7181dc2fb855bba146083443a483a23b391 1aac4f8c165ec29d1688a82aa25fe7c14a08926549b06b0859d700492bb7dc07 00000000090c7bf36b30050a987d979eaf1690b2dd5dc6b9c78390983aea1cc4 +59900 000000000d4533b0a1560446e1a6aa9767cba71892da93c06e24a9194661b129 1bc6f4426345d094af2d23d2a09d125214372620259bbdb9b209d8aece4e7635 000000000d8102afeb79377dd9284a687e0589eba9919afa680a772f24b2a99b +60000 000000000b554c46f8eb7264d7d5e334382c6fc3098dabf734de37962ccd7495 a20742dc1fd640a7ae617041e24365e5924bcb776becbe7c1fc1d92d654adf9e 000000000ea6be82e57bd76b1dfaccd5de0ef63d9a0980310a5148bc4bdb6753 +60100 0000000006033e1dc6c42f752c25e7f546dfc5a2e37745eaae68a2c805ae96f8 e4063c6ae583c557f39172798a5bf3c8a6c9f092039ed108fde5838dbaf1e2ab 00000000050063e3d7343d2a3ea503a3120646e7c546a9d2b469714b6598d29e +60200 00000000057e2e535bd8394638d2c08bfb5d9dd77bae356e03aaa2e08db9d5a1 7569ff73e8c0a61885482ce24d89fa76683b05babdfaafb5a79d7ac10dcb7184 0000000001901bd23dc2766c310108b68aa8ddbb36df7dac19d81cb93e97f927 +60300 00000000085e3f531388ab902b9c51fcc0a2c784830cf04a72558a224696a60f ab63cdc66a8273fe3267e31a4ccb5c016ff4dbf8ad5448c9c52e8c261e41aac8 000000000a553eb0bcb3be3b966cba542a336076322c2e642bd0633f9622ebf2 +60400 00000000036101c35d5c48f5c124d0ed280dfe48b47aeeb5521fa3c69f06eaa0 ad45aa5370876cd3fca805c1dbfe9c6e9f4b8afc304e28802fbb83bb8f22dc26 00000000026e4f1cb47fb653ca27a88438ead41a9440b6327f2355923a09aeb2 +60500 000000000c25025a1f8aa51ff7fa645488d8fe85d0e4791c0dbe1585ae06d021 b3548fd2a5649286acb16fae1ad09f321974d9601c734c15ce796753b2bdc8e7 000000000a3eef2287fadad763ae9981227ed8fc3549f9fb9e44b1687a7aa84d +60600 00000000037acbc20fd790ceb76f1edb45b238a897944912edb4a07031df2932 deebfbb83e2c205b7149733895f6bb899f45cfd7312753cf03e208983b8aa40f 0000000008108c291abfde63ffee6dafef95fa04451d5461da78f7e8ca8de653 +60700 000000000c69ec0ea78ca77169fba57ad133a89fb703cd85599290ff17202285 814d6e1d4ea4c81bcca71d9484e8be67fc54c36da3daf6f900ad9074aa99b8bb 0000000007b6f07ae71e0203797f622ce7ea46b3e2cd2f08ec91520d15b9adca +60800 0000000005ded69557de7dd14b6800e7fccaf5e14e2c402acd0dbe8274b16a34 66962c87f6f5ac66520b585c24f49a59d31723c1ac9155911a612fc570acff9e 000000000badb1bd4e870330fb7538c5046a2c7bbfecedcdb2124323171fbbf3 +60900 0000000001bcb34aecc82fa499842f1c187477445d3146059e629213edc2d8ed 8db944eb52096c588c54fdf535b743b2781a72184987b45b6f3331b43d91a3ce 0000000002cfebba6bdda8daecd604473a738abfaef089acc610a2d3aec10759 +61000 000000000045edc734e45c83cad9424f9946184026c9637527067340f3c7c65e a5623efab8d2065a53492a01fe849b2321132d0ddbe9dcc8d37b1b055be491d1 00000000029871f2d8c305a673c2c8f558916ab1e183d97b4105658400672dcb +61100 00000000026a327c16c03be94f8e2167ea0a2ff21da22904788cb2798a3130b1 8116b55c5a9e663042479fe8e3604ed8fef59bd41431511f9e55ec2430e2f326 00000000090f92ac83d254334e054f63ce0184d2c822fd83298d42cfc814d794 +61200 0000000004ea522b5c7f294cab1a44e8bf253b56a595d5e22f555b1f418a9b9b 10a96d19774005522ee4eb3c99a52d3d3834014b903c9f99ce7a2fbe10ef08b7 0000000003278d07ead6668a0e85796c7ee975f619d2a01fa50ab3dcf69b61e0 +61300 0000000005ccf672f8aed3ebbfdfe6255b8d71235d0a3d6c66460dd291f09908 5fad8d391287869ba73208bb8842252d80e9319ab67c84deada547aaefeca78e 000000000405b2385657ac404631b2913c29b72dac7fe6d0e284c74f0cac8bad +61400 00000000071748d956bc9768da7ca507bf2fcec92c296421bd2fb44d16d62cb2 d1a475705ced5d43e5d3c033d4d01eb2775f99dc61ffe880a230f0d09e0883b4 000000000b95f96ed748a0b06321ea53b60a12a65f8d636e6e1035df09764dea +61500 0000000005d354a48e71695e4fdeecc86d78e4e65bdc016442e4597a7bfe6bcd f9a4f70ce3d144ada00778d7f72cc0c0af7c69efe781cf469488bfb260c2165f 000000000c69f1b78fddd0975dcbc2c1a4279290fcc6b5187e6f8345950c455e +61600 000000000031065b177c698ac59d483e3f089f1b94ecfe5958a285d7dccd0775 71b0f4f082332512becd04d75bc4b5e6efed095461a28bfe1958d77d6a72ecec 0000000005ea1719807201a36b544e5ee7f319c554a3851a4e19dfe034f0f139 +61700 0000000002b013fceef07c2be004406f28cba9b5d29ddc8179574cd284f516b7 3cbf9f62a298edc60708556eb34acb2e342b0b7c1b63643576c7853322a2ff2c 0000000008653f6d079dabba4d4f0231e9db1847f7fcdff9d1a3ab3ef13874e1 +61800 0000000006a6427e644f74f57dd1a3090d766929d1006438a66e42f558e9f7ea 8bf794363c2a75b8383c46dc6361cad47dd304e61b0761a432e38ac14f6a45df 000000000b5c3321950d538338780437f6b4c3982ed0d5cc449d2fa33ec3143b +61900 0000000008cf71aba35b065c8624567dfc1451911084967bd98ba98e247de502 582a9675eeef51851a65fb9695e81d16f74c6fb7daccabdc7c8a46425f57b91b 000000000618b6a3bfb5f5326caac34959678c78317bdadfab42b2202c6adadc +62000 0000000006dd4bc72daabef992f860e703820de119af3e24a1ea6f6c81521011 5c27f5057023817bf4627bf11636df538f49dafc758a67f956cc32a38a547f79 00000000014597753c3e08e3b1d191c14dbaf96e6cf5727be128dfd4705b5afe +62100 00000000090ce0d76805fb286ec5cd7b62b04ed507bb8fcadbba1ad79a753ece 4814c70ff9c169e5559ce9a4d1617b1d410591eff021e18d33533c12b92f93a3 00000000008eb7882477fc0a7d1b59d3b2f1b7548ed6f5cd8a50b9baf91bd964 +62200 00000000092e39678c44974fbddbf5856933457e783a10c692f0631bd16a0fb6 7f311422b2cf24fcbc081daefcdb2b672ded7dc3adf6b7bec52d06224a1e3423 00000000002949aaa504d78f6aa01e9affbec77d29adab1006cf220aaf82f6d6 +62300 0000000009bcfb36af34ee8ef374424de8330e670c16a883b593228787bb3bd1 b05dd8f3f13ec44afaef0b7580803d02befb11d42397b0b29b83aa3ad83d6a5c 00000000014f45a8dab36c8dc352a093b8d896da7285b493cd98ec30c3a5b6e8 +62400 000000000d51384d5c7573ebb8ac95d860ce2d1bd74ad6c228406b55f71dc75a 9976a1c5ac496bd6f7a8147bc5eb100a7457006d7f0bd797a6d70efa33c5171b 000000000d742c21de249759b45192eb57bc15c35dc1241f6f122e5b7a451545 +62500 000000000424d2cd4654499d26eda28c570e08ba7216b49b4b97b08e7e6f70f4 59e032d9127c40e6cedd88984a7815e2e198b24cbf9b68e7d0b58433bbc34487 000000000347fc7112144f84c40989f2f3a5dca70bbccca72964b9c25837426f +62600 0000000001943d1f4441cba8a77b9aad4f1e8485203c5ff2e952398f896e8e08 1f84688a9ef08ee56b2448c964e1115ec8f9765aef2b40251a97b932353e5d81 0000000002c025f0c0ee78424c0294daf22cf6d9cf75a13a43b8e24084158c1a +62700 00000000011728b7b980bc921bc8ffb0bb064a73f3a844bd125ff70973837b24 00c955a46df368a6929bde5170d808893d86e8fe83d51b38270277fe3d3c6759 0000000000675f5806dac93392ab5ce8c240e15ca814185d034135ad91da4ee5 +62800 000000000a9b8faae20927453c6dd13e6ae86383bca56e5daa14b9606f93873e e11ce5fa2083ebce61159866d54c0b1f626c2677036c812d1c8c25ec0d360794 0000000009524acd10591fc25aa9280942d25e234ee73d7755719759965f77ca +62900 0000000004ff043f56b9a6f15011f5cfe31765609aba940d6a554f9bbd496aeb 6162bccc2219b1df41caf02aef3c08b0af2041314b4d27646b2d99fc70ee805f 0000000007018a2b32c1f38b605de2e28e94284856e6b90aef0aa15b008b742c +63000 000000000abcf1c5c959bfbbdf5ad13054a1c43e60e168d6ef790b8200e0891b d312dfc87204de45a36758318edbf2d69e238b5deaf551a18aceb8466487d82d 000000000c27b31be4db0ea3d800ceedda97cfe6db4a21746d319d2a56bdb50a +63100 0000000009392c94d3c022d804cadef8586600ecf2bb0c6144f4850dc7d68362 0bcf5843c38430cd9243ebbbf4ec4b3765ad8eeb3b8a127653f4a6549a7ae1a9 000000000158294f8afee900741b2658f925e76f6bfdd770e4af70476134d94e +63200 0000000008a16350d67c4357222933fba95cb0e453a933a7a94edd9d9a33decc 31be1ccaedffe6a24ed2015c6828379449c3025c38f4bf46fe439fd4ee50632d 00000000082f0762f505cb04401c60d9b04d70dd3757ecea6959a130d826e452 +63300 000000000b1444048e7355011bd392ad84cc458f2bacb7aecdc3387d83df76ea dd84c57255b9e66a2e3f07ee1404b1ea06245ac98c0c7d2826aa2abf320c694a 000000000c5d690039c277b4c87886fb82aa751484197b4c95913030eba6b960 +63400 00000000045451515841f4008e4ca6e61bc4199a98baf16349d5041afd90a7a1 ba274633654de9dba390012d56a797b9904432882d5038f7281d49385239f2db 00000000090f10e38908f30a99b0fca845e6cfbaa6026c56febf0478e4bd15a3 +63500 0000000004dd2b5b3704aa330397b6fdb1ed337e44ae2746fae5e1d7e26b024c 00bbdc26d892a2e75109cca61fef6a86a43f45d34dd85ce18b7d0218ad2b2f1a 000000000422c7553a6e333dc6b4bfc33b4aeb9d54fe0e8398b2355be1734c54 +63600 0000000005b762c7e37aff0807a14d9f420b8c28ebfb647ea1b7128cbee80a8b 2378e247d36cf5047f728e01488f79ab0ceb0a717bcc1bace3a538ff8cd185c8 0000000001340bec0b1d732bdc33643e1f7d5cc056368cf37a291f9c535f3c87 +63700 0000000006684cbd8e5a124ab2f2990ca515025095b1edac910742cf20bd2a91 4a65ec86e98cbafd990abaf1a8eade6d6f22ccbb74eb60a602031604547e3576 0000000006b7e1f852206eacbd79f63bca7bb06afb3dc949460593d3feb8e3e1 +63800 00000000056f77b69482303b59c91fd4f597c068fa394a861fd95055ed47313a 1e7c3c10aef9bf203b7161df90f8413bcffa8d00f761050b51ad3c7ab6ce9bb9 00000000038f8444b27e752910dc32f79046a0029f9e65b04a9988ff356f3fb6 +63900 00000000029c99fdd7a8a2a6eb6ebba061ff7553169f56f1e98d1150af3a4072 5592a1a414daefa5c767ddc3653c85bcefc0d570473c62fbf0639565c84e95cd 00000000096d434fd508d75eac1d50112ff8ca5f38bd1a30bbc4edef4ca94898 +64000 0000000003d7055b51d7b9ab693de84c03201fe0396af61dbb30bf31445d3f55 2c32c53cc5ac13f3a116161cf44d2a9196ac1d5aed950698e279e736d8af92e4 00000000005e61abe20a48deb7dc94ea3ff37ea7b5a57b1519fb708ea5967013 +64100 000000000cfcd8f887746143bed43a105c61e90edddd7dc08ba316203cf49b0c 8049ebb5400c003ce1c0bc351864a210095073a9a84627d1b3f42220d361f995 000000000c0a239fd848af1bc3d842719a1b3b9f6d3d9491cd7bf4fdc4462957 +64200 00000000092ce81342f7b8a5a15ca88911169e05618e114fb385464cdd94ba5e fdb758e83d91bbae6d19224742fb36b035c22e3f9cdb69534ba99c121964124d 000000000c5d18df2481a07b4259c25775070b47e863d999ff5916acafd61dca +64300 00000000037ec053852dbfe8f598535be17bd8f1b5caf44bb78d8f469750e41d 6883349611694b7829bb6f68cd6c02659fec26ee726ae152c6562e51757d0b86 000000000464f251031d27ef126d9ba27ce00a49b232b3cbca55a25015639ac8 +64400 000000000510d2e9e31a7d5d2ba768f3f9742a9a8cd80da26b04d10f0378a847 c69a2c2bc34ab39aa900455649f2f06fc2e0decb99871012e2da413c0cf3c9a8 000000000b3177abac29313a18f625d9b15cfbffdc55a214767dabab099238a3 +64500 00000000048223a1b2ef9866231bd42ea960e033b0b0da8ee247f525dd0b46a5 b20cd49eaf0466ac8808796f7a73485238ee3951ac6b23efe419de3301d4b2e9 000000000aafe9e73b003daed213ea58da710fdf015eb4151198930cf8cea614 +64600 0000000005f080c3d4d373b373f38be6b1b0cb9c4f1325b3a9cacd314d668593 45d79f72ec54cd12ac9aac650a9c1dc964b576fcdaa889effe54fbde9367172f 00000000055ec43b2854cb06148438be698f2602da88424c04e99c2d745e0064 +64700 00000000075653df0a0c71289750c14a171896a5d2f8f3df1730e142e8422b5e 1b75a8b14d980bd512d62af0cb9e7b3daa903de8fc76a0ce57431dbe01fd0f26 0000000002db5189ba53cf205976e39c71cfcf27190c8a5209c56b4059158ca3 +64800 000000000322fc0c08c85ae62ea54184d049bf995c18c99eff9f21825226b4fb fb5c48331b0de7761eb14387d7e412ab7f1e32d7c20c0cbb8e7419455bb3c86f 0000000009c450a9e4f32a261f167b54267ca88010d34d78d5b5afe5aad2a17f +64900 00000000013d9c4f6dc5c9ed6d81d4805e0219d360eb4d007e99d00fc4f71340 c1ddbfd0269197ab47f66606c13331d07ac6669c5f10f13c75d50aef27fd0af8 0000000003f65263b38b5169cc2560ea24e562042eb7391f323835d6a33d2ac3 +65000 0000000006502bbeba998efd13a8dfa7fb6f213da62143f5cddc4b709daa2cc2 5a8a1019407345b7638aa1dd192f0a59445d785d873db3ab8ea95006c3fd0582 00000000098356299c90c4538a528c6188551dc28af28ac0140bdd4a4dace695 +65100 000000000777c9285c621edc2889207de4b5c9b718c3f006dc2107a0b4d69b18 b15315ee117e5fe781eb98b903439e8cbf0a59443a6b3ed89f695684d557902a 00000000018cfd82118e6b1cae19d4093208e9648ad0daaa932c4beea159b636 +65200 0000000002e09647ab8aa727368bb41e24c15a7062dc654ef3e997c78be47fad cd32cfc0a3bd454026d23d49d4b0c458fc8bd5ca16868d08b247010388782099 0000000006158ac598081ff30e3956a603dcb5968479e9d08d781950c6fb8488 +65300 00000000037d524cb118fedb3f2495a4c999ec74839d7008114461f3b17529b1 1bca1c72e263f6515a8b577405e480d3846bca4082b3e354351f10dfa12d192b 0000000004083306eaa420132cb1099716faf9ac627691c78167eb671a3fbf30 +65400 0000000002c1747abcd12293082c60434db184e4363a98015a0b9b8bff5fb94f ab283134c3f7a1af428bd2a65a19c9b6f7b58e6a39940244b90d83c2870cec86 0000000009f7cbf88ecef909f53992f3d8b56143b9cb7c94efedaf2f2a13244d +65500 00000000038166ab207a4340cac0c1a1fe983ebe28217af9315aa2c4e6745c2a 045861924379ff297ae0a7b1e361d871adcb037e0bd5672c61b53ac4292a5d26 00000000029c9d2d49c220ac04dc2d8a1c3e0bd1d64ef39b4f7dafbc78718676 +65600 0000000009b563b10ecd9c902990dd22b393a720340071fabca0b023d88203cf 2d8c6e83fd0d7e18233959c02b5c33d86684107f1a97a8b2f412c32ea857401f 000000000a389db4705e55fcfcbf9751ff8c46823d52ee4522976c78d8ed06f5 +65700 0000000008d6dd6bfd4b1256bb9db390514e3505bebc32bedfd23576ce04fb50 b7131d77c9caad673066e11c45d4b639a99794fb77ed4ce09c525fba5735aaf8 0000000001e0d9103c6a04327a061a4a2a08e9ac9bc72c85ecd763a73217ac26 +65800 00000000081bbc7c7c5426bcec0b586c1f273bd41a6cc9ee8af5c2a39cde0060 b9c9f1aea05d13e2703ca2e8559006e16f1190f0ee07f4ad7d265c184aaec435 0000000006c43e2878d94504ae20512ba64442d9e6b857bbdedd8e5af2944709 +65900 00000000097cd814e8cea23960fdbe975ad127769361e49d7a37bf1c89172249 abfd52a1ad11c9c88db8764352c66bd4a1952f5a4a42138797bf6766ad30f554 0000000004526d089299be8089a443547e9c00ef436143794e2b5c90d74172a0 +66000 00000000071d7e8a0f4895e60c1073df9311d65a85244be1ee6369c9506281af fef458b7dd546f8fe14e92e073a3a78993fca9ce831b7f78be77d2c2fdb71568 00000000009cb106f888501f42e729cee5062c533f9a75d28736ba3290bd56dc +66100 000000000489cb00ff12865c5d0b52bb880c88cc0435e7129ad2e5170e054236 ebcf8c8c7e822e81f63e64dd4920d12b14e09c3765fe3ebba63c8940861f2df5 000000000796b01dbebdad66bc0b9de12a52601b97ad8700c5404dc0953464d4 +66200 0000000001b6e5f6d221e979dbc4858b5f1e58a6a1c2607489dcf0e87dade2ee 5da253ba898ebf6ee5dd1a82c7364d0d291f87670b39df62a8e607aa2bba77da 00000000094be4778e3c479328a0598045b6d1bd75917ab5e60f093779f477cf +66300 000000000739d8a2f35e7c2163e921811b9b4890845b07e4347dc70c25c2cd6b a458812dec1f89583d57634d8bcc970aeb00466ea95aecaf33d2ebd9c94197c6 0000000000d39bb29e872238cc750d316a4d0a3de2116d16229a49a4328cc76e +66400 0000000002438e2200bf993e46de0b8671c9de425988bb5ddaccc195e344e471 9a3e61f143cc5b6b9c3a40227f7970a978cc652f772a767ecbc481eb5f229fa5 00000000060a9ceeaea83e7db168db52c816987ef071179105b66286d6159ec1 +66500 0000000002b4c8837bf58304eaa4f8477c1beffc116d2b44660f70867a7c3eac 558ef0b95d6f61b6afaa3683482680aa7f591202ad1a4e75c8506e24725b45cf 0000000009ece89b50b169a35b5808f32cac58c08fbb29d3a397182934181052 +66600 00000000041febfbebb611cd8f587c690bbdc86af1e3ab04b134bf0d66c63751 3d5abb7cd760f8b4a377992a5e8e901b92395d59afa348daa69758442bb66b16 000000000062f889aa5ddca7cfe172c92be6605397d0c314ff9efc81aba0d259 +66700 0000000001747f9945c51d19fa4ebb84f4b06d4b27480d708e9f7bfc2a3f76b9 ea208b54e2d970e5f41480099259495dc2f251c69ba6a1c9d2333e9779f88118 00000000051b18f82e3faa8febf1f8db76407aea9ab4377ad8079bbb4598dd16 +66800 000000000443620dd9d869917af548bfbe10b3fc0a0f4ff2dd8a49061e143c98 a3b5180cb73094e431f13c25d824a79afc33d624c73018d230d829a8ef69d25f 0000000005658ca3c559ecb015dea32c146ee8673c3ba2ba4fc6ebeb175d3836 +66900 000000000286874607d3181b79e565de1f04cf44d7039b45eb9057102a36dcb8 ad1a9a85a573881f9a05b95c2bbf0a83e0ddad9ee7e096d08b86a9d3ca858629 0000000001f076d88e94d66545a1f979c1eb41b97116258907aa79e33313c6d5 +67000 00000000052c31495cf4c2afcea5ad5762fded7444a2bba0dcf600fa3fc900b1 f5c5163dfebf2cf13e0935e5fd022354825e7d39d3a7b63d90f6d2c7b01dd7e2 00000000043fcaf5737af8e3f522a05ec65aeddc2e88b9111f37c6a2a82a321e +67100 00000000018443387938f356e2f02472b06aa6b9d238a3eaa1e0723a2cfa10f4 6f0be9faa78b7bc7d441321bd745db6d61819fedb520d8ef2a97df6eb0872901 000000000566043ce186c492d45e91483a86a25e5501971b2fbd323ab65bc0c9 +67200 000000000489739b8d2455711b9c8db6b0c7c7d286b2067e433b3c47161f0185 9a0fe3d0f1531eaf99d5fd36e771599b5e1f5891394d5c6a05f68d0494059b8b 0000000001af102c05f77b05187ba4232cc10a96bcbc772807926672476dda58 +67300 00000000039dcbf42ef1370d47d07149bf510bad652c8fe847fd2d90b7c1ae68 3de34947d7ec434119db7578639b5ebfad8b3b4c1d73a5462b6b405c1d20582d 000000000453ebd3b8aa8c010a2f4bab9c450965078eeeae0e49d1f658a38002 +67400 000000000450da6a6eec6509f0d2bc5d5ddfb9c2ac2fa766788ae34c55c40276 5fb983e692e15927a6e36d32249e5752540f8494f955c9d0601ed1cc0fd06b24 00000000019f3c527cf200859cb4760941e2c39131a541d0605e28b124ffec42 +67500 00000000010fa1865040651adb05dd0746bc8e5579bec06762cf047e8c2261f2 ce8ed11b8edcfa0b19428e8a3bc2847d5efda8f36e1929d9f991e1fc6aff8db3 0000000002b5c405bb563983bd72ff47c0d8bf7dfa42a0ccdebcc32d927db9fb +67600 00000000054d1119a41c68fc3d527efe642158c13508b052430873351044c8aa 5b097a1e617a5f1c1669d3a600d73a3fa936825f5f53024a8dd96d0017083d11 0000000000991ac7c8ad3ed6a59b24741e03bd747912e8aa06f6f9eb308d6963 +67700 0000000003017c34cab5b5172b68fc7a1afca19c6d269310b6d4cd87e60c14cd e8a8d1a955d7a75404c7fe9f06a2a5f9f8b8e57f365802ea5b9a7f76c08735f1 0000000004686a440d23f328d1d7ce658e49cacdc319a938ee28cafaeb98fb7c +67800 000000000218f501d29c3adf29fd7eeac99e84264d9290fe1fec1d7cdebfdd65 93c493bcb843960331306da011a569abfd7b310999746ecca46ff1bd539116a7 00000000030449fc60cb7516d441993a9dcffb23d50b0bb7d1bfa92eba8a6e57 +67900 0000000003153e58fb90df051710ec48e6d4d9742d92c71875e4259cf52b6b1e 6cfd7453730455309c831e42c38ab6335db867216733f01cd949bd471227c358 0000000001861efabdd98a1a28b1ad3556598d47c0d62f7e2f9378fccf45e0ae +68000 0000000000d991791fdfdbccbbc2a73d2f86ccf78e2d0a7ce7675f40b5986b3e 37f96e952b42e4f5d0859711fec9a7a8abc648cc3cbe8e6d0ec57dc750fc168d 0000000001544eddcc2e3c5ef5f75c65c1adb99865f7f96b877ede591a5fd6b4 +68100 00000000007d9c9b24914c9a6eedd8348a093db320a4acebc639efb3e987d98d 5d27a975ca59525c0a11de0ab7f0b8521f92feefb133e77df65b27000c3780ee 000000000265db67a09080ac81b197af4a0aa2cbf2e334c80c94a4ea341ca9b8 +68200 00000000021f4884837d585bd84efe98198b77052c86aab515b988d7e439fa5f 05546a7cd1dafd4ac6499a4a905ea1abde412176ebc3189e7c24a43b8c29db17 0000000003fb0b50e8366c3545020abfde856b5a46b8385d3be95e6ad4234575 +68300 00000000040a9f03870f399c957ca2b6e43ba8e30eb168e9986e603b54d326f5 5b35ae83d2a2f065ccdce353297481d2675a85f0f336798bcc21d5418b6be1f2 0000000002d2df9529d99b1fdc6cfd6838d28e5065696b0ec911363593258bce +68400 00000000056572357c74173748176732548e3d4ad4dfb6fbb31d22c9b0a2abdf 3cad0ded3041062059eb730663f560b22da1ae77b1941ff06c4cabeba4bca0a6 0000000003c78c1b88f6882246dc6696b5cbcc6c667d505454416b36e5446bf8 +68500 0000000004a6872eee1cbd25bbe4ca33ddbef27b6ecc0ce72d58cb205ad8b5d5 15f41a2a32add3717c1ce87d4a166747ef5c9b6bc0a628c404878b29acc13532 00000000021cb5a79c6b05ec2240f759341e02775fc6c85c804fe29e26cb327d +68600 0000000000b474fad43c7ff8a2f77f6983be35bdf291f88311ce85f9bc897c14 ef23f1a0dbf3769c458690db1d0b28be205d5464c633fc493ad600d52f75de40 00000000002a1407571c1f66d64f8bf55df9fa4993020231af1afd776f9d1458 +68700 0000000001313206c27616437b932f0c9109e3db2988e6116a89678c8ad46177 b824dc26a028364dbbd49289c68c5d48480c9d01d661a8a318764185d874293b 00000000015205e2949dad13b348c4df631cff4c3b2ace7858b4ec5a2223ae35 +68800 00000000003515086581c50fd2611642776439720c647aac9b8f6d600087f7f6 60f178d9a8b1b99dc96ac0424b5df20dcd918c8dd985518a88decaabcc45a8f8 0000000000eae65ff451a5a7a1c2b4d8a7ad7c56572c75dcb038048c0909c220 +68900 00000000001f64183174521be6e5740af16dd714c41bc93dfcceaa5acb9de0ce 198ac427e43f8d886ede51c8a7423204147d48fff733eba9fd1a8b6de3e55a19 00000000003ef529220f146a07772d136a690ee5ac09351c80588ff51f61604c +69000 00000000000672cb3e0f7c83c90b505ecc9cee701747a50ed998dcf00c499746 bc66eb399a66c993ecac3d5c451c692afd4ee31bdac751e5a02d8a7185028e08 0000000000caceb6daba8e2b048a3c6ba9eaa540f98e00e2d9811c39c1d6212f +69100 00000000004830fe0d8dad98391cc07082e2f6a4e4908500ae33f5906ec9a444 fbfff6612be3976659311e41f090cb2b1e47f995f86b24e88bc9aa8c08560ded 00000000003d13de96f48891773ee9f5915df2b49bdf68286bc584a2e47a37f2 +69200 0000000000521b396f7aae11917de742c787b7e00ed121ad9e8e9f7b450b4750 165e44e584179eecd905a4617bae4c50b8882ff9bc668a299d2cfd301985dbe9 00000000015ceb76398c527b784d93fd66b3f3a2cfa1e7326ea46a5d3c52eedb +69300 0000000000989937bcdb9903e0209252d34fc55627ab6a318777542126a5a1f4 515c25c7cde1e33cafcbb98daaae699ac61958f862756b7f09b36c6a7561a906 00000000011c1cc8b0170c0337e3bf2011718f7b2fe5caba7954c0e04b59c747 +69400 000000000076cc49e8b89eb10fb5121990dd5abbb6962a9a3934fc2371ce9b90 39d9ac178e319fcdffdf206be83debc004dba210adcc07daab0a24503e97b80d 0000000001099a2a527b7eb8963dfae292720901a8b603d647606dcc3dc672ac +69500 00000000000570ca92bfa514c5864984b4bf01938b6f0dbc669e6c6e242d3005 598d94fb816743293f5849bef45b1cc1ec8275a18950e0b6bfd1d1babe0f94f9 0000000000e3794c142f2429ffb5f048b507f6e4fcd2653ee955e32abbc1da47 +69600 00000000006b5840ad7c63ba7436fc477ebd2e8122da8ddf7eace7c5e7e35c40 a4ec75747facd9fcb5e0fae2177e20bb54e9b301b9a5ba588ecc11ad48893733 0000000000d3f6bc95bbdbdba7d00dcd846a78356d44769394affa62bddc44e0 +69700 00000000005eefd2c3b421c6b7a980ccd4d651ee29e64adc8524b2ae587c3079 86b26e0842b4a2d5d12ec34f7d336e7410776fd0b31864e6657cbf22772bc92d 00000000002f8cdaa1b91da9716ea749c754da235ba4df53fb6c419a9fc52277 +69800 00000000010f585d02ea680bd891f3a63a8ca14b792e2893496396ee78aa9e7b 000b49ef5b2aad41e1afee18d469a3df2d05c1adfab3d5ae482f3a1b6885753d 00000000000edc9f23338ada8e057b4b3f2ce1bea73a208ddf0e2cf66bed8fd4 +69900 000000000105310389654128c4946ca0dde50294cf20ff22173e0a7c7dc23743 30cb1e1b0d44f2f20044a4dc45faaa752cf09862f83a2d7a44fb22b401124d89 00000000012b71b4b4374c86e879e45352b4ff636718a35eb92734cd7cee7f33 +70000 00000000002b8cd0faa58444df3ba2a22af2b5838c7e4a5b687444f913a575c2 022fcac5ce25648ed6fa7b92a770c2e3b22447033a317b84143e435dd63a867e 00000000001337176fa420cb4a7717332d0994491bbed7fd797e45a02b3a7872 +70100 00000000011abb7cb0fad72836e1db5fd21a26489a6126073100ee04650410c0 09e549103e8d07d1ba7823a0c64ad7bc78bf30ce72aeef3c5c353ace622b61cd 000000000144816ae7ba60f77dd916348f5e77dd822e0d06170befb0cb497bdf +70200 00000000014ea4c652c06feb6666bf1db97d40db15481311bed632169198091e c0ee06fe00001b3f96223c87b17b27d8b2ce0d4a89f3305e23c998aad57a696c 00000000001dbf32bd55d22aa051adc4b144216cdb5e3ff067ae5791e83bba4a +70300 000000000038c6e01f40a04069e74b910d9a34b22f679799a6657f9dd49b46f2 fb1fb3dab7d8ba2e50119c93aa6fce2c09879ea67d54fb65b7372c1a9a3d7cf6 00000000005671b6d1534e59b4a56b456c2b2e4340eb3a8430fa4ea75e12308f +70400 0000000000ea646aff57bb947eeb4cc119dfe75046757e1b61f85038bc13e583 b412aafa201f6ed66317339901b6d4d4e9c4646db7dd6a39b78ed925e34274a3 00000000010ebcbf2fdfc2c92b98faf4a8177ebbd009b55e9dca43113831d6cf +70500 00000000004e42fe160d7fca7c18000eb63f388d5b3561373eadc95b49834c31 11eb9d7b0ce37576cc183771b79132757b459324000551f22ba488b1f062c608 00000000002183aa91b812211d1f8070fa5f97789ab28691a952757ba1cbafc8 +70600 00000000006ea57975835e859eef2050c4d78eefc16332622827fdcf90513ad3 0c5edfe174a476e4bed53569342f2f72399a7f8a41fe155d6cc1ccfdc153a1ec 000000000067ff009485e5949f32724aa759060c1b29959d31b41f191509c552 +70700 000000000051605c706aca4fb695c97e1403298d364c42841674fb238ebd826d 24012dfb4d1a2c71b18f4378ef70db24832d2d91733c2ccd573b5638c73f7262 0000000000ddbc8a8e8c91c834bd3447c8e6b4d58887407f55ce8878027fcb9c +70800 0000000000ce83e4026a35200c2508c8a6ef805d9edc24720902b5edcfad2939 7aaf73968cd6b2d165ab14a836df1d07b660d792c5a27835f3dc749ab9f2a585 000000000100ee33fe7b16d2c65afbe5bf9e9ac4affd1221ca64eb7d97550e18 +70900 00000000008ba8d6beb01577730fae52517988564322026e5e2d90a3ee5d3cfb 1f9486ee9b6a5ced8eee2d7ea2a0621f75f58bd04b35bd96e0119267c53d4a8e 0000000000f59a0e6aeb7af8efc5e9aa3484622978668a03876bde95490817e2 +71000 00000000003eea76022498376477294a921cfabeee70f0630ce0fd45dc22179b 6dc80b8bc7c73e142c17b24df4b404304c2d2e350935eee4d16cf5233f8db13d 00000000008fbf55c91ab1e83f995edfebd2302ec9b711705e02d91c0fdc8a7c +71100 00000000005ce7472e94c9afcbf049c410af776b3526df58bd4fbf60ee2a34c5 8890c2e29cfc0be4b7aa440c68c74e2d0a1cad2db24a9ce50f802cbbf017fad8 0000000000ef6f21f7f19da4fcacb67d9aaf19caab5cadd50149c3be870b53de +71200 0000000000bdb51fbb9f9156e0c67b5b3f9272c6fa25051193379ce0a204d544 211e490a3d048e5c44789e224e72ee3c6e9d58a5c66c7d48470a27e5f3e586fa 00000000002a49c502e301276ed11cf5131ccbc41dcdfe7ce6be3b49b04531e8 +71300 0000000000720458cacc8126dbd369ef167cbbb948485ef69489486ac8fd895e 9d3fb8356f74d0175a7d3f52b9d71b63fad6e41bb2fd8a53b147f1b47bd8b474 00000000002bf16015c8d255e71a607f5a6852047b4b199b10bf99c3b38e660e +71400 00000000008071d8c627946d15262a4d1cc86c0d2e82f6d6313778cf2158f2d4 858fac5a80a338bf4683fe1e1e8fb8449939b3e53932c1c073ea130c444721ab 000000000007cad6a109ebb8f33c3e2729f7cb59a210ba1fc1b4a29169c27601 +71500 00000000007395951552c84e7527b1883f0c6416cabc75f4ffaf181e21c22a50 13f80607b5339d5395565d4c8059af653992997641c5ea53d34a7318463be314 0000000000c6144ba8e9d025f70ffaf7f6c2ebc507ffea9d22ed77b98cde3457 +71600 000000000077eef8175ff525b1553265fff386ff58834f1e3ef305d83b817662 3eb8dd2351f6de0829cf6dc743cc2fd21ffe727cf24b39f361355ac85b432524 00000000004b160c5a614139438ecde2c453cc893ff401081c9850e3aefd6aaf +71700 0000000000cdd0f441c12f6fe38d12dbf488c54290d3af72318b62885d7fa247 3ffb65e552e44af4cee11fe18847bdd6959444f8518904c8f0bb01d0f95d68b6 0000000000d7ac36c5521982ceea8abdf727ed05cb738b0604dafff5818dc4d9 +71800 00000000000440deae99256350aded0924394ec0884618c2c042a72dfcc50afb df8e476262c53417572bdae1b857da5e29aa249f0db2c8d2687b1991952a4838 0000000000076a8d54da640408b55af2b07666f629001d5630ad79759fd6f989 +71900 00000000004f08d750ea3d9a8cc4ccf5ffa325b6ae14fbde6ea0d1454299fb8c 7e53b6807e7ee3226e9647edfc3e4a607d4753b5e8df6ab3c7327292b32c58bc 00000000003e5bd6ff4698cc9bd11a06ee2385a414e36cbb6faf68996c656161 +72000 0000000000eb357d4c6fef6ad9a6fade126985ad36042a99cf215a4454545977 d7c781fe14eaf8d961927b830c18b978d1fed794abbe1b4058a2f5e23dd47a56 00000000002ec11f3242aeba3465cc0a350722d355d42a6415222c82cb336bfd +72100 00000000008c002c3369289be0087b471b36420f94bfa6555399811f754f2a1f c4575d397c074d6dec39b5f7b52ad369259a983a5dec0d9e6340d04bcc0fa729 00000000002e03482294c5f888fb765889bfbdd5657dd06993fb2ac37e94b56d +72200 00000000002ab91a874ad050a902473581b1fcbfbcfbd8b64b0a0ba76f025a0b f9d396655267967ac647a1f262658a49c2a141d757d735fc3f88f72b4ac486c0 00000000006e64e29c9e9a93727754ff63e36c2f2c5c6f318c21b5c36646d692 +72300 00000000005fbaa7894e4677b3976aff3aff002f4ab3455363c4fbbc8fc49636 63cc9f8756b96a487227b7045e8db82662373ca175832693fee39049f07237be 00000000005e1ceb5b7960d6ed5ea9748d0db80c8ab929800b44e7400abe84f1 +72400 0000000000bd5c54db2328e619494138521a6fa17ba655e45587cbab4636acd4 fbdaa07f596ac8cb4d1b4fc20981a24ff8a40a303a9900e2e66f20ec6efbcff7 0000000000594125ab5b3ce3c076e78f898b0fda8e347c0b9e63861d42fcbceb +72500 0000000000f66e1534339959a6f7c9ad1aab16c4ca7ce8ab4277b71770630899 ca58dfd707177fe6c3066a8571abd966636b93f4b258a3af321362289cb18613 00000000002713a87683020f0451fb50cc9e3497e3bf32690e9221e2fcced75c +72600 0000000000b0bb4c63fbe5ddc8609bb316cdd73de0a52b7a7337eda7cdda17dc 9e6422c4bfadf66e6ea1bdeeccb373c19ba0c463f91bc50d541f244b43bacb7f 00000000000c65c0fba0b77d08661c3ed5b5d818d677c051a6e86d05b55bdeb7 +72700 00000000003cfb5957b2e5e1fa93e9f64a46d66ba11c72d0b3b919f0b7f7d2fc 35728b0b59a035174ed8c5f814c22d55e2c90607e0fc3920b207b642cb1a28cc 000000000098741fc61953fe6c9e9b95cf40b04bf829d537605c91e64cd40b61 +72800 000000000033bce15d2952c8cc4b5f672a588e3766f3827ab613e76722ab5d91 d35936c7e36c927a22f371f61e79f351d33e2415fe4ab8b0bc97f41046d0998e 000000000057ddb4d5aa749acdfc0293443ee0baa1b12f8ca70daa4dc68bb653 +72900 000000000008256d627e183abc4546195a240907f1ea19fab033c78fabf5357b 22429a3fb0d3d0af64ce8b7d934541b1416664a5f18e0f85d5410c8347ebf0ae 00000000007a3e0edf87d5137df5d48c92d02e91521113092ce78b57f2bac552 +73000 00000000005936a8d5637765967ad4da3599596adf19879f5e65d6940da7fa64 ec4aa74e040a905046608bbe0073d3129153a9bf51c6c9bf221d45677477b73a 00000000008f8792aeb1dd4eaebda850d96d45c199c1c183760d6614acd89f44 +73100 000000000088c3406f300043c1822ce389e656a1885c100bffd61aaff4d23d67 b121180bc2755151ab25c357dcf49146aa7ceca39e4705e97cd88d588593af56 0000000000311b02f1951c1eec52e6fe3fee6821c282d427517ff70994ef81cb +73200 000000000076a3e5e95f964294923226bfd3e07b5fdd9262f36f35e2d9cdbfe5 94045d71582d081a2b2a4ee7dd71cd42ce25e125d1264f349f4eb96ca4c853aa 0000000000576ef39303da85af92f63187e6715a985714522169306d61d3a939 +73300 00000000007dab748cf5f83af924699869aafa4a71b6dd35e4afbf0b953b8aa4 e0d33503c68da668de497dd2071d0c4dea2c6c77b556f9ea9ecd47847ecb9860 0000000000714e3cb87f777da1695ae5dd6348e6427f19b2818d19b72b4feafc +73400 000000000033cf0862f8148225c6c11a8f36b2ae0f1076629070e4efc93f7d9a 48c30807611bed3632f33159ed6b65b3276b2f32d85b4e18f5fc8295d8cebc73 0000000000018960a6ae6499c86f18c4828668aaee4d9ff721f609257a4eefd6 +73500 00000000007602883978c6b3d1d295e567621f2846d934f0112a99cf8e31366a 3d7b9576a9c4fb0da0c15cdc87c8e8b71397fe8dad554c66d1b665514097c9cc 000000000095ab428162e86ffc269a090312e75be64665e638e2998137786aa7 +73600 0000000000afccd8c1be67a0c2fe9543a72e96e6d802b4e78421c1f4afe28914 ca0ac15e6105fd54b6cd78554fb6101a2b671d5e137eab17772a991bd1b6bc39 000000000006e987ce8fb9d5352f41dee051fcbc800891a1d1dcdd58ba8f3d98 +73700 00000000008ae36e0b3b4ac7746b0c0febe0ff289871f1179fa3c74b976b1fdf 887402610acb4c82fb7a50da31c4e9352e967d337aac66f0e83111a8dcf0fe9d 00000000006a4b03587f6231f40cee14ba436de23fd4a24024e4218beffdeab5 +73800 00000000009d60a7608e14ccd1ec1e6ff4b20fee6f0ad803ac2569086adf59d3 361f51be8b1e16645746a240bf65632b76a86880e91deb64f591cf41876fe546 000000000008d93debfd2d21492901536cd95fe7d6d384de5461a460ca57f625 +73900 00000000000201252bb4e556c7d6bb2bc7c15e93943c7da4fd4389b7e9a2c6c7 0ab702d3ba8020369024c4bcccaf17a3d8dc7c58757b9bc3ab41ca9051ba0f79 00000000008ece4d7d38ac9b14fb99a720189dd756188eeeede2a107726115b5 +74000 0000000000573993a3c9e41ce34471c079dcf5f52a0e824a81e7f953b8661a20 94d2ad0b8599204963713bcf844d8f1ae52351b15197d01f2b8b299a199585be 00000000001ba557f4e72c127725d7ff26be2cb48519c007189d45691e650d0a +74100 00000000000a49aa8d2ee47e882851dba11f587f412e01550c29eab96daa9eeb 070625c2515d36db6f6f9cbd094293945b8720055c73ff520804c9a544857012 00000000004ec5f37f47f14cc25577b6f7055044b32e4c05aae2a408dba93d9e +74200 000000000027fefcbbb48e77ee35fc16d9059c34878337b558b7603c5f330a89 4a3f222dceb971ce0405c095384f20595bcf97b785149d9419656942e38d57eb 00000000006ce11306f55f8974c9e0dd33b952c4763934b42a92e147664ac379 +74300 00000000007e85b0458902d370dda6a2ee9f82b77405466aa3e087b78abf8136 e4d419c6c1a69cfe8e9cd7296087c9c0786c285733c9f54174c161f5bff57147 000000000085a920efe3ecb9b0fe36a158b147aa1e12f3685d9632cc9a3497d6 +74400 00000000009390aea3889f90872df044e18482142387af697a86384540080aa2 0a52829333da6d8cb9c381f6c079eaf8748f81f7b788b1258b732cbb3d7d8b8c 0000000000b59bb7e6f2c538d6bba992ff2e5ea968415d8085bc984dfef32c8f +74500 00000000004e46121f09833603543b302c04566921d55ad019f86b2e15c6728f 4c89f4a8b07c8eaff88117f49101f4cda1929926bad8326fd83969bc7a5c4301 000000000052398687cf7e6e3edbf0c585d08c51b4e6c2d9b9fa30ee49beddda +74600 00000000006acdfb4ccb5d5389a53a16463e1ce94c6be915d72f97afe2d253e9 ed81ce2f74727fcfec1f62e02392fd01941eb815bb4e16dd2d1b7028af251876 0000000000027e2552739efdd4ec371ff3a34b5a779873a2822fde284c81c750 +74700 000000000016abae6e15846d30d7eb27c79bd16ac5f70b3b0bdea586c755e9aa a80cd405f42b6608cef8d6590c8cb01f7321b6f128054a25cf4157101c030e5a 000000000047e962cf0f5dd9808e3300a845661ff83b695a5c32a2c850479f6b +74800 000000000060f19d923b654584967e60411a18b2f6df90ebbf7f04b463d1257e 08147e6927697cdeed5c8ed2734974a462449aa90cc63c84e13b9b22b9632525 000000000063e7db9b027dacb2daf889c44d80ea15e4f9d9bd12f1f34aca1c34 +74900 000000000001df6cbcdc3f19d68f4c77e308f5b837f884fc5249dd635c2ab0c5 08606223033fa3fbae3c6d061014119ecbf463e8017c80577894a9a7f1e7041e 00000000004b785d23b27629e13f7903eca450af3ab628adab42f2af6eca4122 +75000 00000000000ace2adaabf1baf9dc0ec54434db11e9fd63c1819d8d77df40afda daf19b8a0288c8b8f36678213508df8c5b43a230549552ea89d8370c10dd0dc6 000000000049e6b73d84db7eb4704a52fb923f28a96276bf7e62ecebd00933a1 +75100 00000000004f128d1c105f90e315b6af2460f7c80f8df2217bccc7e7b79f862b 0b92342678e7f972e390648f4ade2d9517df457897c71870f54ad665a6489af9 000000000040c86155db276e1d4ec239dd479df5828f8b415d4a9ae7adfa13e9 +75200 0000000000384936953a99208847621ac006db3317830c8d42ff7708f3aacb4b 266b0e5161faa4094495800a6c73e4beaf6c9432f49f5d4a7f0b82b82f63e8dd 00000000000bcb416752a93f6fe42ec713628ddd01636d88015cc89802e3d566 +75300 000000000035c5f264d5940eaa8275d600fa31ac532b4d36bca45c456f7e1f40 79d3de9f55660b465fd53ea6a572f909933e827078f337cb88d2f554c3103f51 00000000004fce78be7a922e73139a31e85f248a825dbe8d2388677e17905a8f +75400 00000000001115da4fc45d9d094089eb784e755b87a34fd05024c13a02e6fd2c 1cdb342c8d75e84cd1a8a0e38d0e700b302cbb7d38d660c03135674a1a5c85bd 00000000000828461ac76c20ef69e2e131460572da5bbbd03eb7ad1dcd2b2987 +75500 000000000050de28c36a87990ad32da90a0ef1053bdce8cdd7b0cfec4ac1c0c6 1eab729281b77e30a906866c8eed1603b10d9def55db0925cebf2ce989ab93e1 00000000001442ada73522fc9b2319a7c507acb73d76972d293095c526870176 +75600 00000000000e3deabe21faaa6941b6d9a89a194e6d1646a16389ff17fa67c33e ebfb29d81eb78a463005bc2e3d3cff394d2ba9e5841a1f8a47f90a65d4659b6c 000000000045c1d285f23777f24978c209565a5cc82d956b7289bfdbe85988c0 +75700 00000000004cb1b0bee45a0276f2b4add9608878a323ea0a0ca74cb1e7b5b285 96df18af55c4794212207d0a155334cd7de728aa7e08aee2e47244dbd9ff0b66 00000000007b251c6cc8ae689e7d57b64dbed3377561bbee91d09bed75b7fbdf +75800 00000000007e81bbbf64405ee4b1fe39124bda7079f07c7dded8468308319112 e59862e304bed25d504e649d4bfa608fe9249d6c1f33be28b1f3229fb450cf56 00000000007580d83edc39774cc42ce25d19d22930cb96a2b2d24e76c925b753 +75900 00000000007e01eb97db12b83af072debc409318cf74f7fe7d227f7728d033be 706187e71431a1f3483dc8c73d47ac104df796e9f7f5d4ff3404f15002cb16ec 000000000058e4c68c42673a2403709020bea3a5c901bfaf004923ed71e025bd +76000 0000000000571138ff757a28ddf9b56f28c4a461e170660bb5ae79a556069bb6 183ec15385febd2f7692b05b6813e21990e9c5b876a6140d112d978aba616780 0000000000393b1b3943fd383fc68e8f509265403345e3f6589d8683d4a1fe49 +76100 000000000022bfe1b12eafc6f35577e7a96f4d259df2ae3f5f5a3ed2bdbbafb6 3d75b8db4106e1cee937c42bdc613d05e7436fe5b52668d1a20efd6d28faf75a 0000000000652b7f7c5ca59dcf4f147b5ebb06ab5571897ebf14d9ba960f6294 +76200 0000000000334acb94cf689e23b90a249e7a65b303712367a669cd05ac5350fa 0d026a8b76ff3d715838c81a5d418418d7006673ecdebfbe677a4af961df114b 000000000010be7c2ad8eed74d5f35848d0c5015431ab7d48d76a12136ca5876 +76300 0000000000458faf69b323b1fdb0a62db7c094c5a357b077a1e14a7ee694c7e5 18e5d0f1e186b25617a447696f809234af6290f890fac2009c504def5bd5477e 0000000000683db160123ac64761f6b9fd2d89d4c9e2cfa2c2f62bc26538dff4 +76400 000000000058701a88a0fe3f57c7108e5a666aef1c800683175e615c058907c2 3f75da42b5132abf4cf18d267107cdf5b7b39e4d8faf768f879ac6d0d6579b99 00000000005f1c3dd6e6d550270aecd278fab76ce87c2948b6570265edc30c04 +76500 00000000005885e1e1b8c3d1fd2409d91cdde99be71d13874260ebb702f665f0 c6e55b1a0e68a787ec2566c95daf399bd56e49a4b0147acf4dd207555872b74b 0000000000243d4ab285b58d11efe641509d9ad1ee4095c60f631d59aae8a9ac +76600 0000000000048e282556e261f950d7e68ef6d26cfe3946587ce6fe74acf7c14c 080654f88e83163edc395c25cd7fce8d562ad554bd8b55e69b87c9ad82c14a90 00000000000b216e6f8b64af1c47fab96d824f6efd9a1040256356ab36241551 +76700 00000000004e831d70c2b754c7a3fca9dbf043eb254b4211c6759d9454d02e2d 48586bad45a52bdf757dfabe9a3405043d16cabf2876fbfbc8b39756193c86a6 000000000052ad7df0c6edcb476ffeb47e027897718959c6f2e0a904f8322320 +76800 0000000000047dead788fcc7d44b07f6dfe6c13c7ba2720fc0e23f91e8899f6b 2372fede954ca14d4f8e10fa8c0c174bfbe53d9afd29f3d488fcd2e053c5789f 0000000000513206050ec0cc9b7a1414ed2ab0ba2098df00e49dc643d8f310bd +76900 00000000001fe35b487a56686807fc936ff24ef9f6876bb9d2ec2a1c44fc53f4 80c9b45815df688942348585c5ef9c0057c05f71a21277829f04009ac6f51214 00000000000327b313f12a4a9b0b88245e20273de90950e801709558efe2809e +77000 00000000001bd84391562e354949ad0480b83f5058449cbcd9f249e9dbde91c7 c2de0f1e5244f89ef09ae90036ba29c29c682914419d56497b52aa58c7f6071c 000000000060c75efb1726acb8da3f40c3431dc31c99c4ed76dd01240ebddc16 +77100 00000000004c27e9959e36b1bd1fa50c0162cc24644dc1d1bf688bc7fc7b420d dea653a49452f301a92165fd21b7b26975cfe8038650106bfe343b0b413deb1f 00000000002015389bdc4dfff33df4110d3073fccd13d7835c9030508ebef64b +77200 00000000005a92e5293c66cab4e01f4567b362e8f8782cb14256fb8bb58ea7ae d59d7af05a3b6fbb114b72234bb5a3860eb2e6448caa66724a555a5a7981e00b 000000000063b03efe191127569a586a2b73b0246a4331d4b5a96db44c5297fc +77300 0000000000125091d74bd4230e42fc65fe95e518adda39a37eb1178466952c28 8646a0a02e974ceef7a887f75a4baf4c9b7e4dc27cecd74db963332b840389e5 000000000066f7c448a0cf8bacf155d881585a5b933ee98f31bc5679ce84cc2d +77400 000000000024723ae453867663c708c259b9d875cb1cb2eed56b6ed1f0fbdca0 38623f396ee9fc5fed52c4328204c3689dad3084163b658ede03213fa611b601 000000000053a98921ab15ef53d3daa2640d4439dbfb82d8ab972be26cbbf63f +77500 000000000028549e3b5fd995b9b06ad4af411fe0fe40e65a8187b1c28ba282a1 3459768a1051aad4fb20702471be4643e9f5f157e2025d2de6351ee1245aa01e 0000000000309c4eb1e53bbb27d82dc52ea8592e94197a0aade2880982272c0e +77600 0000000000005be72f31f6e44d9cc92d69b9db0d86b7fde42c4173a360b8d4aa a404823709174effacac635562fc8e149f33e5e4b83d44609f4f1e030eb0e096 0000000000540fb66722343fa896b157127012b9f3fb00f2b2ab58fd17271b88 +77700 000000000033658f4e4ed62f448498ab4e7761efb4b02671fe8312a93ffb86c2 95ab5db9bafc0d840094091e2a455281b480156025fb4b6c7bc00b8072aeff20 000000000063a783d78c0e35a69869730e8faad1a9f1f450b8eece6b996cbcd0 +77800 00000000003e57e57f981ff54c6ad9675f7c7023f771e9233f6937d242a31e52 b6f40657c6f9fbc3f8e3389652e3074ad52ed5fd293954a5b8667299595dee89 00000000002e9009bfed9d0dc34531290ff6ce9dfe89090462d2f6cd9b435837 +77900 000000000009d0d24ed46ad35d578332802abad7d00a22db5ffe63526df4304d 64ba95e9623d144ff9595c90483e12b135ef0edf1fb3c9edc1c5cc8c699cd8b4 00000000004211af4f2bc5f185ae029b0e2cf98288c5b5767d11e860208d4e63 +78000 00000000001f3fe62641b473673c9ababbe207046a109f0861af95c905a918fa e908348df8bc10ad063eee008ee3ce5c33bf0830d939599019bff8b9ff5973d0 000000000000883080e6717f944f2ed3bb6f2fa0e2723a8486c476acc713a079 +78100 00000000004ad735f9078ecb5041564da674c4884f3f688b149ef1e4c882e58d 5481500a27bf1beaf1b82b940016bc0d27872c3853e45a2504e8f6a7ce38ce3f 0000000000192118f6e7ad72cc5a2fe5cd3f5b76626c7a77f642abd88de5b570 +78200 0000000000402ba878b088bc4f5076cf342aa70eef9fcec33f447f2709a1c774 e054102b441257de6ae1b7641b52bdbbb889107ee7f6536b8d82ea94ecdfd832 000000000006655654adc861e36f7384b9574136d3debf3ef6897a843a3a70f1 +78300 00000000005360088e2e663df167c975d4af725cd7d938d1ca959abfbf836a05 7d4142ab7d4ac4eb1c62d086bdb343e1288be26ba1c23abded568ae0292016e7 0000000000142cb3affab394abac43fc40d40fb258090ba056a80aa662cb4ea1 +78400 000000000068c8c17fdd4e9ceec82a874da300601619a0495ba9117b4267a313 8614033c527c060943ec75e35dfdeb4a787892e5400e67e661fba25647fc62dc 000000000043d1da24099f561fbaab10acb3d3e6fa84774572b677629d1535af +78500 00000000003522284cd9125fd754c00cc92616fdc02d525b5b8750b450ad24bd 0e4f9b30f34e1ca401e458e9779aaf7f8afcc41ede8e71e3cd4b71310718c5cf 00000000003ac7dc9896812fdea62028a52972f24c6275c2615d3e7967af6c45 +78600 00000000004a763aaf213e7fa357030b0abaab713be0ffe5203e89861486e1e3 a5373e7105565dac4c7f1bef786f10d15762cfb517de1ef809bc74c203b03467 000000000049f66f90f67b3aadfa32bd8dce0e2e7de14e72f300c0b6ab0e20e4 +78700 000000000007cb741e9cc3f43dd53c1cf287bf2e73e3c08ecd1c995f3455f5bd b2241728536c55cd9ab0897d7692f45f2a60b73e46a6e8ebcef6769fa7a2ab3b 0000000000266ff3154de74aa3e683611242f6256f3d6dc17e952960ae573c9e +78800 00000000003aae5b42b5f41852efffed2c75700e55c473b15ae7a9157b47c2d9 69b1b13e5fa1207326be5a546d5f74ae30325e0ad2ea80221423d490a37bf4bf 000000000026b9e101b55982cbeaaafaa8bb86dc9cd7702a05e8b666f7c74e54 +78900 00000000003b63dbd51f4df69fc4a59a8fe51c07a012b71de88e962fd1856791 96ece0a294024c9f70f7f2bae558309a797b45eb0a6e4097e7b37864cb3fe8ac 000000000018bee52a3f208a3a0a641a8c8e4cd3998e2a93b54ebaf64bd33850 +79000 00000000002703587a4eb2b2b5595749f632ed78b3ef12fb1f5fcd3adcc61620 c8abc3063587092a60728651eb29d9d245a3aae5f8f0a48ccc7a1b4305ba27f1 000000000051ced52357e98def2d8f40f3e9fd712c741deb9288fc5ac62b522c +79100 000000000043cbdd7e64a581fc861752f3b2364cd4f6dbbf6eced14054679d51 dc91c0afccd95c8566ed7034fb2d78ccd70cb6eaadec71489a7a1caa608829b0 00000000004547b8ef814a904284d106d94abfa9cb6d1ed7ebf1aaaacc45c17b +79200 00000000001f2751b2a06d2a5a37467f39faa2104822654b913284cb36a955ae 8ad66184f34e84ecaf1ba30d90731b88b5e3c0b8d97f3e6f9e7529f11f46fdd2 000000000015188f7b0182aebf4e808df2cb3b25fa14416ea44a3263f5f43370 +79300 000000000023ce18fb8f27b8d1666d796d4daa0cf26d8618167bdeac07cb3bc4 b091548efbc121beb08c11da072d234675b9270ff5571ba0afac0585ab7f2fcd 00000000004d03abcb902016245dea11b740734f57dcf0cb6b8a281cfbb36302 +79400 000000000021d821ec06be7173f413690bc5c4bc648dfa70b3b6763236f055b7 c401bffc63030c7476b26d60d088ccd9a612daf91ab7c827844fdf632dd663ec 0000000000539783559ffe9cf1d7fdc316e52ba267cc9e4ca20cb4ed83d27af5 +79500 00000000002064fcb7e89948378381e247c514f78f8d441597f3419d47e9f282 a8701203a88232a020e64bd30708731e19d94b8208a50d9a25443bc71c7a171d 000000000038638db89212453807de4282e53ab37df5412795faf44e5617fe00 +79600 000000000042828814a86dbb65077185bb7effe0bc027e32683f1302717a82f7 fc94ae18b67b7c38125efc961d990810050bd5806ab283333ef3ab6a38f086b9 000000000033c3203ad11bbcfabd0556ddf047e8f7a7ba8f32e48bcb736d6304 +79700 00000000002eb858c2c1ede306a6d851857f06e4edfb781b50b8d65575b8c7d9 5a65b4a68d45fddb9bd8ba802999b0c3cbb8ab169a150499f2323b70b229aea8 00000000003d9bde3d684a580cb87544e2bf18c210d194b2decf788f3d7ebfe6 +79800 00000000002094c293cca7a7f1a76036f79a75dd572dcf94d88b4ef383f6eb0f 50fe7dbcf6b58a11cad6fc47c036ba0635464fa624de17a66fbfefa9b9b5a61e 000000000004a6771a9419f583ae28d1c22d383b2019ea7d0a1dd13868841371 +79900 000000000007918e67cc33b9caf350afb65715d3855fb031a5c3b19189c31325 a866a6eaa9c47336c86249cced154bd7655f1c5f5dd6ae7fe5433bbeea85a296 0000000000058badfd057485e9c66abf6f7995c33cfe80d1faf86017f7f1b5c0 +80000 000000000043a8c0fd1d6f726790caa2a406010d19efd2780db27bdbbd93baf6 dc0b54ba6fe70efd73227aca24f19a5856ac3f3e04dec5baa84727fe522cdeeb 00000000000036312a44ab7711afa46f475913fbd9727cf508ed4af3bc933d16 +80100 000000000011ba1a6aa8ff940840013c4ab79f18d6e550ae1a1b761199959288 0b839b7d6715c50a2eeda9c5e8b2028732dbef966d3a41dcee3129231950b004 000000000047663a91c7558bd52897f6628e63df81ad737450a75afe4a00fdc0 +80200 000000000040fca9fce776c1158e74ef19337e4d0ca839ad83e53881f1f7308a 05645c905fa61f5402905d18d6e6522a8c8f3ac69ded301dd6f92203a7b08535 00000000003fa556d5695f6a3505601785bb3fc7843d3b79450c6851dcc653eb +80300 0000000000463ed65d7e63dba9fc4673db1c156d7896a12dc02e278c179173c4 deee899be6aa87e5fdf3eacff8e1d0afa7b83b1c1f1a9886685ef3e2714cb952 00000000002291b6fda2bc7b5aab35a62b38ddc1303e62e2fbc9934df6a2a87b +80400 000000000000b83eb92d83c2cfa886af313d16066edc15cfd497eb9d7cfa50a5 ea31330028a814135c81a01411d6ad9c38518e5e6ab73b65da870ac6a047cdfd 00000000001791b92eec53bc6c9ac48366dcc2b945a0e446f622cac9c24b28b3 +80500 000000000007790532e8ebd45e4b541bee6ba2a5881f3ed08e33d8ea593983c3 6ddd9ca0ac78fa70f32602d929091ff61338f99d5ab571b8073046d990d03e28 0000000000291efa4b2750bf1d6edb746ed45b1992fa9045ed304b9f2da1e89d +80600 000000000054385bc5d5120f9abf39148807508040e79b8b8d10e86d3438a102 101a33df0bc241355ed6a97ef0f808516dab987734b13a96667c8da02a32a373 0000000000230996d05b3ee0c32a6074e34d964a87e0cd3725cc2b0ac307bd83 +80700 0000000000048e744c5be2e7c572a6a9fc8487d32d15a23268388e1ca9a31e6e 15866d240422725587caa5947fd6f40879c4a0f4f42429f09c7aab0845df81cc 00000000003fab258e24963d2edffb4a3d107dc89eab6b5465d27a230b36940a +80800 00000000003ab318b86eaa5f13f374077a80bf5bca7474c7f093309933742c37 e737a557d2cd11fe158be4aaa0a5d34a7359ffb385a690db1abdad75c7e29768 00000000000d5690caf4cb8303b4ac8f117e82c170e9e5424c4f263298b1736a +80900 00000000002e8de626dcecfddfe1c6d3a627b519f35a1a14cc6f5e3758e52037 27fbab60feba734441439379bda391fa40e0f6ffb6dda1b82bc017b2d19801db 00000000000f4a4fcd7b0456369e4ca117c4bae1bed1bedca059b7921d69d4aa +81000 000000000030c11525e18d5083000ca58a6b1625ce54b48edf16b9b6dbd8f043 c4f6f2affc55d5dfe3d889753259a771be1e399b7796c3c45cf13369381c8596 000000000024a8e74920194cf01de89766fa64ed18f87e2dbb214bb5e0b391c4 +81100 0000000000391396d2f4c227eb7293204a494727943fc3e43a1187c3867ad5fd 83fd41cfd6e18ea274ab44965077053140d44c1c6384d1d53202fbb9706dea7a 000000000004e7695e829590833d807182dcb631a02504f47dac544ea496505e +81200 000000000035a33adf30e6e9439ccca88e9d26be9ceeb14553bf76d3da01d94b 1fa1572ffec28bdb76d8cdcd1a3b8d999a950dda0b9f1dd2f7c4af79e79480e3 000000000025df3ec75d7f0ce4d50571ccc230a35c0e6118af8e618b0d0518a8 +81300 00000000002c4aee85bf8f856957ce333540d56ba570757019803962ff87816f 00029c3e3aea92537b5dc4a9e4201f2c25c7ade2e527d7a8c3170febb8ee7160 0000000000348c2397975205911d20fae828f26f67e294cccb4aa0f786ebb71a +81400 000000000041d9adb4549dd3810e9968f4a94a43660053b15124cb9c826c3bdb a327fea2efc8edc40e5f357a10f6c0af253a7b9eb5ab4a6c41872abbc5f2ae7a 00000000000348aafe82b2bf936f71f198ae2c8d4da40d56a39b8ee28bde4c96 +81500 000000000040ac4077b501c30877a484864a1d85f530f8b5cbba427700fa8a5a 390c470e5ebf168ca42c627dc0b66fd9355f665dea0f7ab9a8f51b055b090749 00000000003997afe8d491c5ad13f9d8c11097857f0e4b612b464d22573b9b15 +81600 00000000001f57bb2538c1a663ebe715dd9b6e4ed2851de696b25223cb01c34d ccaf8d91f7f935011de1630f7bd6f7329c7ad5bcf6cfc503a2431c616eb49e6e 000000000002a3158e1978b48ef23276bd77b5782ee19e78d7bf60de6717ba35 +81700 00000000003b2292575c4277eff80d0ce5cf7df28942724ec4c8e57bcba763df 653a4463c333bc865c59e715a3693e3ee92295ec719340e975cb257d284f7fd2 000000000036a968df95c0a808630ea27f492178633bd3731d9178c9fc65a04c +81800 00000000002ff57368d49957a8f61a21e6ff038dc30c5d6263b05b337665f345 ba9e1783a8d6127ccf008733ba7b9d32dc30037d4622de00f599f8dcb8dfaf1d 0000000000169ef693cfb0b9283beefbac2146070ab9e6842e571ab1ebe13bcd +81900 00000000001c955f95151148991e2405c01ced96fbc0e4ebc68909cb080a2103 9cbc175f08b6f4a1b3dbc20c95ad5202fc35835c5b8ce6a723c74944696122dd 00000000001c59f5e961144633c27c51d274163ace62005626670f6fd43741cb +82000 00000000000c9d1c4acc114afb58d55db5ec44a963263cf6247220b7a3f85c5c 713242f7a2699ff6b5be0bba4de53001e1d461ca8728a0f4ec308f514b090d98 00000000001e0f5b8021e95bf59ef9279c45f5162a0e41074a145c5825385625 +82100 00000000002f68df4b5e2a0d5de97843a46b5261793fae2245a55b117da5a840 b2152e9ed6c14364647e2d10f80d43c755eb4ef039ace75b184cb53da5c97fb2 00000000003a63835ef815d22f1ad6b3ba5199fef2a22bd30452b772e3e5be7b +82200 0000000000238e4bf6be5b5fd284926810aa86b5adb8dc4a47883490509cf6fa 469a9836b56a80ebd3c8fc3cfca0c06b4273d201db25f8beefb2235a7a2c5ff3 00000000004124d2d2c94b9b0f396b421134ff83b6cff980270b737e5f44ef3f +82300 00000000002b4860a17ba2b96a849dd0b1b8e4b789b0d1214966e3c223e53abe 8e1555988e318fee5069154c3d132ec0f4fff1846f5a3f4fd9b851aa7f75a961 00000000001db1cca0aaa796691993f37370bccb4cb0ccf6f865310a5748c4ef +82400 000000000034b3fc95932d7a96f97f8914c621330f045b54ae071caad39ab1af 168abe2284c239c0afe5d4ca0d2bfafbe2cd94d3fce528a6fb4fbdfad2a0e5e3 00000000002d55954f48d94785d82e99e44ba5cc44448e25e130e08147bbbf4a +82500 0000000000317258966e57eb881edc4399cf6f616b53f4d143a46800adc77f76 9969d88a54d777abc79e1247ac601c2a62a494022a031a227e7e89324f75eec9 000000000012f5d5e567b9854c3f400ab5dedbd9ca793fe9f6bb5669789eb926 +82600 00000000004465aecfa43eb63723535a18261839140812bc3c2c705498993e09 5cf4ea11409fc1a64108fcc1319010129859bb038f509f74481a2140b5ab4ad1 00000000001643b79c9fa7a35d8511ae3ccfb20fc4c2b177859247a67c6eb726 +82700 0000000000317bfb3efa27ac7956ccdda74fe91d634abdca1b6c43694bb27c3e e9e1aade96fa7a165f0b1de3a11474fee3397dd1358b5221f5df738e2e4399d6 00000000000d6b33b00d7ff1dbc449a62fe3a11177ab1efde3c003d36efaa200 +82800 000000000020e047993c68848ed644e3deb5537135e9602cae7b8f176dd9737c d6725224de64cb09def566cd5b324aa8c2317258fc42061cece7c4a17e657cb1 0000000000213efdb31e795b94b5bab3dc56eaa5ce792696eccfbe7657b93276 +82900 000000000018f3483adb5241f3f1e3e6ae4d986dc45714f933faca8354190120 153e1665faa9804ad5214beb5da0fecadff162a06568a8321603a91594f30966 0000000000058b9e7bfb667082b65f7c5da43f126fbcab808ef96d859cf5667e +83000 0000000000230ee9fb4cf0933aba6c94e9c425636fe67c28366abcd8bd48b734 d39137258db79034156fd59b41dff8dc0c8cb6e4a999ae1b75df6efde5ab132c 00000000001725dca5a5a05c07c3cf42b8dc84b5d53a514a2ec451e3f985cc69 +83100 000000000026b55fe559818467b70b5eb0985c79fa283abbb81b763fde3bd23f e6018ad7347d3170e5692db7bf8503821dbf303b2dbc6edeabba61e6c45144ee 00000000000612ee860428b6251ab432ae91a14148dd4ceb135842c52e9a4bbd +83200 00000000000f83653cf83828809664ccfa6299d1b3170398e0bd6f3784883f9b 29ddc4479fef8f4dd08a58aabc536c8db1469f29d5cbd65c16ac7b0f2f354f2b 000000000008325894955ffced38ed67aa540e3d647ab2532a27042366f8712c +83300 000000000000ebfb084c4057efce6f4d198de277b4a6d034b380964c1a9f098d ae3197e30868a1710d09c42a6eadbcccec461d09a2e19b38dfefca31495b63a7 000000000014d01d70a0d58ef24d3b9aa3c2971f07cf28255321de56f5e101bd +83400 000000000016724c5ee48b2b44ed8396bcbb926b24a5440e3aa8bc2158a36c23 c213453fee7ffa6846720142cbd91e8aae054984bcdc7ef7be61a69afb8d3876 00000000001bdce122bacee8cd90b1f2645225f3d4e50b6ffbc428e31297026f +83500 0000000000174ea79eaf44f30ff9f115613987c43c7902da1ce91d813d52acfd 0025898343baf5e1ddf76ba5524780ed990ad4a59c5ee71e05b8b63132c56f97 00000000001be18608048fb6bc8fbeaee1299f28e85a92d6863009b4dc4dcf1d +83600 0000000000080baaad6157104f3785c633ffbeb6db8850ab773e0966e94b5044 6784b2d368a3be9c22405449c6674baec71485e829fda3d5c245f98c3ce9992d 00000000000a67be715430acbc273f236565502d5e04d1aabcd3913f4e57018e +83700 0000000000070005fdcb9b9dab9f6ce434d129d65055a02068d4024a757c1d05 308a9ed5555f35cee6a663c7d18c436d5d2ae5c41cbafb821b23306899ee3246 000000000028656d6a611741384d1ef0feff7d62dd076d3af1f5b20f773c37f8 +83800 00000000002730e733e4a7e793a4cc047a9423e79d83770a63db588a910141c4 b1e3723c05120dfc39f7d5c3c7fca84cffff4a83012c2adee421a557aa08fd8f 000000000002410216636ccb232f77d3604c7f86758f225b48a3b6a7fba8779a +83900 000000000022d6d05af25f48231ed7b968c0b417c64e31b1995553b6d723cb76 2ee29d400f34b13bd11d1a2f60564bf449fe85828f5cb9f0298a61108b592d7c 00000000000578060671daec856c399ddbc8531746ba0b0ebb43c7e8942c60ed +84000 00000000001385326e30864192ba84ed2f9cbfadf0698655b1c25f93c92f22ad d96103909633e2df1409edb957e7b3e9b592fa00fe9b3c79e9427bc965a3cd3f 000000000002c05ab3ea86dc6a8167dd6be5450f6bd4efb431535f04c57d5ddb +84100 000000000002a3f2186dc983428d0a142353836e8b970ed2b4fe85bb2ea48ca5 d46a0ba6998120965c4788987ee1e9ee892e68350fa7a3ad162288337ff2e838 00000000002278757a603c947978f1ec1440d064b789cc00e14c7d94b56080c2 +84200 000000000025f948fac740b70d55d65eb96d530015a8144643cfca3884e2a38c ca9e01fddc22228351bdd619b3957790233e1fe976ba0292ef4c76bdad736861 00000000000248e3e2c17cd91ba471006eaa3d507a94edf5d1965752dea3a027 +84300 0000000000083d60beee57ffa16093009637cf12d561f7545d1d76a8142b238f dcd51f53bc1a62ffd247d08e264d9953eb44dd6e5948880bf9231b7715505e01 000000000020c6cc746d54218888fdf5ddffdb7e047c8193b0ef0558a9759418 +84400 00000000000360332ad7c205deb96c1ced86eb2790d6df9019decb3d4c7f3b80 08cb71731b38d7fbe3ad239a470eb846e55743089351647e7f2a68fb4ed42429 00000000002c6249df82c795f8d97d77ea98807137485c6787f508a1cd2a3907 +84500 000000000021d7e26af815acbdb3c4684a107e8ec6ec3ad3fda1c424d67aaaf9 da909d367caa5721f5fd15d4afb1bc782d744e01f3a3ce276c23a32730b03be8 0000000000001bd34f5d8079c62e58dfd39dbbd78fdf52b93cbb1593579ad022 +84600 00000000001248b82a095fc78fa2447144922b463027ca216f9129309684efb8 183d84ec68d780d750d33bcf18d99f00263c50551e0fa09b77012e9012f352b4 0000000000130e5b7b710018de64ee5f707ba1be749372e0bc41192dcde1ca4d +84700 00000000001d3cbd32d0da9c535d01e34fc58df407fbbd2f769e7c3db00f985b 2da2acf8a91a89a3be82dc120cbc9d60959a8955b732d0d52d66c99a087b30d5 000000000008c10cff308f436ff49c55bd8976278b040f693b15dc8a4c258bda +84800 0000000000183b52d7f51815e410b076a34127528f2b3e37160f12d717241404 7cdf116b85f3811462d549a8d08dde00f512c751db572257803a9067b4feadf1 000000000005f7622f582dea3b3e0dff27908222c8c2bf21812dfe77c00a48fb +84900 00000000002df72fdee0c5ee854b872fd8972bb39d1f471953197f83c3cf1868 df8be190536d4d0ae320826cbdd9ba493f6362fa81c899fc92da678dcb860414 00000000000870f146927b93e07183749981ba097fd95997a88314a841787eaf +85000 000000000005dcaf122d18052c42041ce2afa1203a0c33b27a4be7a18e3e226f e9bbc3ee2043104a757ed3cd903f22808ab31e89adef574daa3cc84c54bf6c22 000000000005bd486e5f8d4d5ed6f239d181dbffb9cad9be6d89ac05ef5ac044 +85100 00000000002211b4bd2d798f7f011e852b57e6f87764dcc2f2f6bc6e2e37d275 3b0a945b6a1366058fd55a245ce661bc9568231dac0aa56aca8354693b9fc9aa 00000000002714d0bdaf08961d39dfcf96358c4431a3d4ed0e12738ec8639f76 +85200 00000000000de65c171ec4dc1095e872fce17b193fcce3b6f76963aff612de44 8fc78e40301fd491fa9f6b5984b88417602cdd52bdfc649824244cb01ca0308b 00000000001806c5a659cef60b1e44f0fdd95941403ea0a9afa9d3441d71915c +85300 00000000002847e1ab3bca5464dcd2d834a8a8f26758943e11f34a6294a593e1 92be4a0c2f07652dc9e2effd0191794c99b3904e9d3959a53a5b888f78119a28 0000000000128a4556cc872c94d0bfd881e5a9a52a950b88e0392bf66e53b4fb +85400 000000000005ae239b6c96f06db64d41edcbdbafac77e71bf85a0d116dc1ac3f 79fd54e462ab284e716cf4a122dc2cd032032fae4038f181f0051c99be3db306 0000000000140af1d0cc13c981cb1b446a0a619c3a570f6b56fbd18d9446270c +85500 00000000000db6db3dcf8648542570be0cba0bf33bf5612288147caad07c96d1 ce7dacb00f82dac57f25bed7081ba5b21f308178204abe10454e40bfdccebd46 00000000001f37601d6b020f19a6b0cd4c672103bed997d8c78b0e0c6b2abda0 +85600 00000000002af69e311402c8f3bf588367546a433ceef0381c1e75eb69d9561b 245fc1e8522f3d4203fb64847634cba699b0f2bcd2cbbcb31a17c2a0bc9d99a2 00000000002afeaa4d5d2c0ac4f71aecc90454d65ebabe4e51d4805f15ecc7ca +85700 00000000002821bdcdb4f0f2accdec1cff83d0cac0833503b11f7844334e4ff2 e1bac4eda5d88fc414301f5ffc7e1f8d2a98c9d3c0aa936784a3cc5c1f2c5c59 00000000001f1aa47700f957caf408357e2fbd1ab5a860dc82e1c28cfb80b3a6 +85800 00000000001448d3d310c2f6b805b653262faf6fb1412aacb63a11e8da3ad42e aeb16ca2ff21f1d4a4a066ba04a64019f6e83c7560e5b7987f3a9ce72742dc88 00000000000a7a6b5855eeff0653b9e88d78aad2fe9e20dcadb04f512bc886ae +85900 0000000000067e0b329b2b1ae0b7747d2289bf4ebe3b1dec34021cf5e2a3db68 fc1ffd9ae4ffb2a54199239e9dd6f7b452b069f7e1f40678d620dfda053e3c5b 000000000012693b97ab0c57f1d0789b4b9810f67bddcbb3bc7061c41c74e1c2 +86000 000000000000ff4e1adb14f07774dad6b34968a5e19d1a2fe1fc9157e7c2b85d 37f7216063d1c8b7ed97fe1044be7b0cbb4974b3a4b7a54b6d3da81bff55cc35 00000000001c1196186701c95370644621416e575bede6e0a7dc47525035277d +86100 000000000022c09289eeca6d0a4752fe16023f7c44513d182140e63485458c8e 8b5a338f826cae9e4849ea205116c06cb7bb88ec1a9edbcafe88d640b214c7a5 0000000000236dc58417dce99732304d3d8f3ca8a4b2a718734ff86d48cbf233 +86200 00000000001002f8ca11b90c0390009584468d8f37d0df108fbd11f264867d58 5f1e2d6158c81cb6f55ef85edf96ee8de925b21ccecff35714bd98040e744a6a 000000000025af82ef4f076a1d23f5d9da1ff398a92377d3606d5174d8425092 +86300 000000000020ea049fdc3d9445d033f53115a5bc005f1bc806f785fff6e892f6 346fd7a389619a051c010cd6460cbdd85990c4f32b251fed88650d68c0489445 00000000002b4c61b2b3c88787dc81d6e781335da063c572d4c92331d4f79cf7 +86400 00000000002caaab3c1e80a18fcfd608cd89a6afc8b497653b3a4ce731435437 fc897ef73742ff4f53e4b48f97f600b1a7764e9660a390c379e8bc34f950af4b 00000000002a19be521846a4abdc502281bc3b81f48865784ccb52d0ba6144ef +86500 0000000000149b5ae50401ec721e879ecd927d912c1d7c8dc7172b1006a28722 fbcea0d6e8edc7308d2bb8663a1c07ac9c32e341a7e39da68cd16573a2c39d33 00000000002074598cf897967eb7aeb46027245ac78eaad88a871f3d01526831 +86600 000000000024d20916e4d935b72708b0c4c926bca65676c2cc9964167aa2806e be20e8d88d94bc9104a7024082495d86eb03ab65a8d67fce8c2d92f98ec65d39 00000000001afc5a19432c9940f90ce79aaef71fcb8813ac17c8fb7f2507bc62 +86700 00000000001885501392d037853b5317a68e53f2983a2c9c4bd0c298aa1dd31e 65fc0a5e4f9402850c9e3d159a2996d949e583834a4b5209737c59e32bb2181d 000000000007f2b6969df6a6a6c2cba08a5aa47fd9584512e4f3a1d148022274 +86800 0000000000054958b1e11df90134fbfe4ace88ac5aa7be019097c9634844a235 ef6a6a5d207b899440c11c1f3261159431444e476f357b252727a29d86eb8170 00000000001664fe659dd80b40d2a45b78f2a13ed80e9040358bacf03bc75b0e +86900 00000000001564b97a1b2e6f0856c6da4f49847884efa667038ee9ebd672d067 3f5e5602d117862e027eb83ffcb115ed7fe8561806b88795c8ceb2d9e553d5e9 000000000001bdda98651c93bc8bbafcf08f3a5cb6e8d99b5c050979f12f98e8 +87000 00000000001e468674df93eb3897c3d7558fdf61991708231246e9002e9526cd efd192627c0288b10dbda8018f80bc76d9e67c3810411c62b4ee2bf57d0a5464 00000000000a47bcd549473b9a65dc43c8a9fb2cefd17b044816e0b7ad56bac6 +87100 000000000004137c8f84dc38be84f6e68a6a876f4da1e9f3fd51c6f8c9629af8 811d41c137089d87e94b9dda1620f7aed754dfc301f2e39ede80bff52adb13f8 000000000009a6563129c0e62acefc3f8fa7f9b9ddab3cf7c62db74ba18e0acf +87200 000000000005370d12e1320705880375fdd6808d8a5ddbb571d3f771438190b0 04e26260a5e00f41c3fa087df440901085b7a4a5556216d530ce4a5ce504e97d 0000000000028468b1cca11b786bb33580135fd3381ea693b8ef3fec9b4ed156 +87300 0000000000190e3abd5fbb9dbd33e09f148d95ffb00666395a09d62b769f2389 f1e07365d771eb4a368c4e4cfe9ff28b9392c91effdc0b8ce703be7cd4d668d4 00000000001c689bdaac5b1cfd851d592c9701404884bccf03d097fa19447e56 +87400 000000000009dd57775ace08a5f6be3bbdf476c53ad4951435a977a0051fd5a7 670eb0aa5d25ccd37a244373e8c0900e8b2ff981d81d6883384ce63993503cbd 000000000011c5beea36be46a9aedb561b7b3ceccb4afa7e7489bcd452bb9f57 +87500 0000000000071d3635e2992f79aae907b897dd6683089d159cb96988aa16349b b271c9ca0ac875a8ce18bf53171c0892e5c02b68fab1d0707df4745569f8d99e 0000000000123c2159d3a40110c7ec34cfc4de4df1da4e25676f87bfa0ee2ac0 +87600 00000000001a2ee15e5eff365d3911a20cef4c0b4e492b062808d94942460d23 8206f502468da28034bd49988d2054c9a3b736c38686b5cfc6c37ea1146b6a0b 000000000012c3f7ac716b8d01be5f52730c6911a4965486d8894c01b2744142 +87700 00000000000a4e76f88562305f1b68f5e8565564f4c402a7f64fc8e6ade23447 8c5416d2f9c3ea07279eb7538a36fb907aae2638e3c1b89b68634689536d9ab8 000000000007c781c543bfcb609a7954f7d8a63d6cae16844fbc9f0333653377 +87800 00000000000c6aaed83ec196a07f0023ed4352922cde70cba467d46132cf653e b4c40b0de6946b0b43bcb9c65b31911b78784aec29a01020ddc7085088bbbed7 00000000001e5f14717590e46bc16a4973762b8e1d6e3a61ee79de686716c026 +87900 000000000003790e79bdc45deacbdb028b8a2b5a373ff209f3b14aa6ae43dbdc 5bff3414e07ea0390da697c26d56621d38c4faf0170b8437642d87b5e213b62e 000000000010f95c4b2bd5c210ff0bc3b630df6ff3ddf2864db146f2ae3205a5 +88000 00000000000ae9e98b82b39a912cdc0ebed97c26376780ac996c84d9ec3264a4 3e2ee20c1b0ceacf8ab83a6db21a0a46a4d78bb4caba61c4d2176176c9766e86 000000000010454e08817326f7032770eb75062476e743cf2715b7510b9ec96e +88100 000000000018ae927be3c38a1d19f3e1a41e12de49d88c274931b24eb129d883 d153e15ef8ca359a2e8c067ab7b6cf6a8b238a78d498e459ec6380c7bb9b3db4 0000000000087204dfc72c141935e5074fe60199742bebce4206800825125493 +88200 0000000000198f21a8df0546313062a2543001b5665e59887e6d35ad5fac22ac 63c9b9c8df66e08fd030d9f62ced64c4c270a9c52fafcef2fcd5f492f1bbe1ee 00000000001a158b1db50fbc339ba31b0f5034c077a5f7b7b3e3fcbe3673b8f1 +88300 00000000001dd476950393d78d77faf25df9c41c846015be9ef106c42dbc50b9 18a1499b02b5395c12708327b9a67f42d82d456416d078f4d0341d3a5b4e49a8 00000000001c741589299f02e5c2f0b3037b6456fe3f13967d88d003f50324ca +88400 00000000000ab0e387b3962461fd58b3f5ca34b0184ab4ea66fdc8b827d3ad69 bd7aed90f189742d351283112f7e9c2fb09229ea7919a4e21920fabd08ec5011 00000000001dee20cf2323604befd30079b42a9dad0083feb4bdacc7ec512fbf +88500 0000000000129e6ccc625d9b7fc59ce8632886cde1dc00ea26b58c25731f5dfb 2d2d6419d74fe4bd0b3c103c6550232ae90047f1a40a5c47324b553b0d851a3d 000000000010c8ccf1bdc020a3f723ebb2948f133d3c03dd1b6fc4853beea806 +88600 00000000000a36ba1bf92095d266c11c61d13d393b37883fcece32b493426cbf 83c8686ed4131a94ee843ef1add9ec6a6966d40081a0c36a23e6be0b36b3c193 00000000001310e16042439d0855997c989ea5aa523f173b36d90b1eae62e70c +88700 00000000000a7ae9d627eb9e6db85b34155dc93b062d0339ae7f6ecf2bb42691 4e6efeb92b3f32d02dd5bfd0fc660e28fb962c3aeecb868acd3c0e6dfa9415cf 00000000001cab7993e4db699e9d5afa81705a02d5862dd0ef0455d5fe1edcfa +88800 0000000000114e2f952518927ab00f4b98e6e4c771dfc1b8d2a215f1b34cc79f ca5dc901e2e3eed8940d2c8be47d44231fe138e45ce528a737900c1ba81ade0c 00000000000e98fab00b2df1cdf72f138f567bfefee074909b300e967b80c311 +88900 0000000000127d00a0ec58e83f7ac54f5e5486e10f8cf0dae3824fcb6072862d 6eee3e95b50f93a5b139b26a1f8d19056757c9dbd34c3b1d281a0361f5c5880e 000000000011f14abc3fdbcd206377ad2f2b7304c0342a452d4c0efb0c802593 +89000 0000000000078b8967aabc82021fe024484be7e2982dfe19c58a1b6462130da8 da3dd5c41020db428911165f7345ddde911a310541e89c788078ab4bd9d29c38 00000000000540c6f0c8a870a8b61926748ff72bf6b3f366559d06de24bdb15d +89100 00000000000760d0354522d5ba6f8d6eddadf4214b69b9fc24861ced8053a6ba e948139af1735ac87184ec549d1b7c1c14da20a68e6083d80dc7d69ffd892538 00000000000c24a5a8955fd2b6383349ec923588e7d062eb226bad5af9b6004b +89200 000000000005f5cffd4ebb115f55d32eba7319436a8302bfd24c663e37e198a3 526deffc5cfb23f74edc7d40401eb5f9216457dcbf47419fa08c16441f8b31a0 000000000008f3951b42fcda1d9071e86efc4225af0a5e24816e1dc9de797709 +89300 00000000000638a2082f4b3a8a4e1b6f837eea0de4e76de453571948bcbb4eb2 36b51c43b56e090ab63622660da43c0c9ba3d075215344622549837b64d7907f 000000000011eca1d696feefd8f3841985085820d634d072a94a6c04322708ed +89400 000000000005657aaf1363e33bf81d8d9d266da79c896cf0f12a2c13948623b5 d58c79138ba924f0733041e1f8177535b33ac00bdb648cdfbdcae74106eb8d48 00000000000acc29ab483e7ec9bba79117f589eefa64dcc07890ce3430141e6e +89500 0000000000099b2815c874ff52c48ee2dc731394526c1513fdbc49b25eaaa8e6 01b98d5a7f71220bdea2f00804eaf86665f4321f03246c6efaf2bedc0d30c0f3 000000000001486fcebc5774023e66154b7af7f520220afd57766261a0759b50 +89600 0000000000151929dc55c9a9b88d762feee30725e68e5acd8afacae7d493679b 40721b464c04bcda409f11f41de9e366fadb93e444826a993384b873ab34de12 0000000000075ae9606be891a3c154b4705c54a615e30d2eebaa8e5ff6ade38b +89700 00000000000419696f9c69802da1d5901f14e60527d2323c8e9a775f0ce3788d 14d41fd7b209b14853b87ce4fc5546c568412638c72b3551611b313cf5e8a128 00000000000e860a2027b04d1a962d00948ffebe7b4fdc69a038892938dc2236 +89800 000000000005d659793c8314eeaa4975127b9cc15de37969373bc8e121bfe504 f5cb877198eaf8615fdb20018c630f0cd1612e8aee792d1fbb84c69ac4cec972 0000000000027fc216663f05cf3d712b799ec949a6fcf710d7448d0e586656aa +89900 0000000000102097c35269960fc852230569da148078aa543afdf5809ac693ae 5612222b045c1a9fcafbe83303b89633839c88e27f1227de08317584ba0c9304 00000000000be1ce041663db516af39603d06a87b540d2072b69ff3c0497c04d +90000 0000000000071694daf735a6b5da101d77a04c7e6008c680e461f0025ba7b7af 24b168f2caae657a1d786c1b45afa1eb767c7558819d1d8acf9e3adddc513747 00000000000bbe48ef6c02c01e4cf6b332825e7943a0cc15a5678b0a92858a20 +90100 00000000000e2815adcdc0ff3496afd8da6b138bff129060a4e2c6479303c00c 82fee1797172178e7f0d291502f71f9eb375c0d915b824a07a2353a8916085ce 0000000000060adb5453e25d415d08d3bdc8262e65550d67b6eb489b97961cdd +90200 000000000011c72d2442ba84dc44db54469721c2374f809694acc82ef76a5919 eae27468830b204ef49e1624d956c7e4b90f73fba75c1bbe5f038df9237457cc 0000000000116a9ba9cbe82628e9a330f2067c6dcb70df4f7c837ef0d8b651ab +90300 000000000008f437ce399371e305b02c82603b5b2261db22ec4c1148c2d803e3 caa305cbaaa2de549dd6d74573986a6d7ffa5e8ebf5267f869bb92967e464217 00000000000cf1f603522436690f531f24072c98c28513664bf2722583517d20 +90400 0000000000048ee4a5d6369c09a42b1c7ef564da934d08d8fddc4d796ecc89ed de6fd3fa9c2a327ef57f627e8331d888043218d562b71682eaeefb372589afa2 0000000000111d9e70e0f772f3756dfabf589ae0ec68fa163a7e66fa2ddc7d2d +90500 00000000001104f5d1435ec5b7102bcfd8f048e7c1e2a793c9d21a5d97428c01 ea9e4a5898c7cd1c9ad6b2039300a7996c47ece3f0d856fb0189848a66c6294b 00000000000935d678a5d4d01167087687c72e1d5e66e4058df6151d5577ddb2 +90600 00000000000b0e576c983ff442fd297dec163d02325c8cac9c16df24008d03ce 664fff96efa26c58ae6ca41f9008bfe146154e7c8e6ed72daf0e74df8a16d367 0000000000124174ac7fff442ea51f62e07787ae6751222c56aed176e0ead510 +90700 000000000006ef0393d6685305b0649a5d30b5032367db7b6a1cc3f8c7be332b bafdfd2b96d71ca0dafb75d851e9ba2b63bbda1d885180a8a31dd64ef1ee33a1 000000000014751ae3534ece15c67d140fc031c6445ec2da6dbe651a33d4ffff +90800 0000000000092e76ac3b07da170a84f3e4f5eabc039aa61d59bc5f1b3499b519 2edd62934c7fa764b7159eb987ebbaa9d76ae27763989a035dea24642149fe90 000000000000198c8187e751033dc8e8748dfd76d6b183faa8374c885f71e1cc +90900 00000000000d8e8a369383f6b483889e07ee000d7e07e9ab7f6bb844f578625b d2239e9a0bcccf90a4529a75fb6a100ef7e6e65d8e4dd4a561e1a39d2b0b0422 00000000000a555bcaac3ab9632ef83b2c09d29dbaa7e5161f4de0a89363d6da +91000 00000000000573bc13322a6c97ee0076e79ba38a8e57e8f1bf790d13190321d8 aacbf73b1f0e947e1ed75cfcf2a2d98ec2a3b6d194f725bdf51859f53b20d529 000000000009982bf9c88c76d0d9476c403caef7691f7c8f6bbd0aaf050c5bec +91100 000000000005ae4a7f25127c2a22e18e998170829334d33262295a25e3b0507d 6eb96dd0541b6340a51ed0e865cf96dd380f1d6f43d63125eddf74369817d88c 000000000002d98d1c942100510dc0dd37ea4861e0086205fd92ac2b3bc06912 +91200 00000000000330a950d351e183ddd171a9a540f5832bd3052cbd14a4f01066c3 f48482e111b4f0fd6b8d103ec9df35212dc6fcfa468c850da879d7e564c4e6ad 000000000006172709c6ea5696f1bf34a4a7f7152a6154cc6c0c0c3ffc8ec6df +91300 000000000007d143a6710b3cc9f2acac27ec4a1fec2948e461688263b3b51a27 3205719cb265a78a245b86d9aaebf15f216835dbbd37a99faccc8b732dcae5ab 00000000000996b82b6ba92b457733424fecf0f2a9310826d1ed3c0bffdabc7d +91400 0000000000068e94a4130e50889e24ff883fc0c4fe35ef27cb60cdcbce428238 af166952290c208078127c12d509c8c7ae05c80eb4115b3efa189413fb717029 000000000005e81a11dd9471be1c40e552dd11b0d7f01a6221ab5509eaa9ed6d +91500 00000000000778ba57df085f43d67e4a2be57f1620ba5e829136cce38796730c 1db2a2986be1a6d2de88e66bc01912bed69bd7e24931abe54e00d1c3ef172cf2 000000000005db7c53efa5a48681906f14e3a72258cd730c88deff87eac4d4b5 +91600 000000000002e7316db7247d0ad43472000c679b27b255eb5faaa97507d1671b c34dffc33a24b552321db051409cde77ed0c2419a801ec831664827caa59790e 0000000000061a8568e91be0fcc8afbd746a02752adc7e95f28468f375de1d7d +91700 000000000000e001deecac420b8f2ed64ed0efbe32254f547ad11834da0488b5 880d8e742f8272dbeedfa3cb52e81507affe29a13022495d609d9741e4fa6aa5 000000000003fd8e89f44b6fdc7b7aa30797fb57b5d69f284747f53f79ab595c +91800 0000000000055f563abfe00e42aa4e0c889742c42f14087922b353b24cf24425 f1cf2449f7277ce73f04cdd24da3f7fbe6fd1745c096b682df3452fcc00f9682 00000000000292ee05baf017f15780a2db02a99a1019a1068c9c12ed667f17b8 +91900 000000000003422b9310497c471f9cfd6f012896769d9cd0126007d016f0bab8 8e5e33a32662aba4d798193af6b52e238cc0f27af64ef611435c5325b44d139d 00000000000257c808dc8ffe684cbcf9665cb4652f16cb95f5bfd2638f3a327b +92000 0000000000001df90b0c523a4d7e4731336b00cf4ba9d8e02d111523df80998c 617a5e6b96eec2dbcfad287003f4ce4e89340fab63811faa1f1fd518cfff1e2e 000000000007e96d8ebad5e4e36c737ca121a1bf77078cb815f6068e59cf9861 +92100 00000000000b720a0407c8e8f08baa12bea8c6e56633d6e88819a771b8eff26c 2da8f8116f8f997c32adb2924963a8636edeee677960e264f894cbaca1f45854 00000000000607988ef93a111df1dcc8d00902819b097c17d0ae863f34a343dd +92200 000000000002f5de591c3ad3321145f2a8dd60f24d4d122a29aa99c4955761c8 03efdc5a036e63094ef1af5f51fbdbb97a58d3f8a69a983e16b3ac75902de7bb 000000000000987c630f5a14c30cdd57d5aa25251aa990fc77c5dacaca63d735 +92300 00000000000128669f396328418dc4bbfd55449c8a21f8b747a19dfdb00dc622 d7c19a43a51d894f09d8d426dfb23c6ad1f0346c178be5a12127d24d147f47f4 00000000000dc865752bda04653e49ee94e3aac62b109b6addb00b024843a115 +92400 00000000000890521d6dd1fbe096cec7d3c3d293c7929cf5699d7e2af45f9b0d a0215227cb8b064c57072edf19c5cb082b23c19a09569f0e62e9f191b470b331 0000000000023bf0dc268b718c359dffdcca089cf71c5653ff4d38262092a148 +92500 00000000000c6e13d490f022a3e58d24c673c38f20bc7c5f8c6cc98c633d92a6 5eac4390533167baeb244ea083596699582790721a69b4930f4efc33fdd3aeed 000000000008c686fe450f1923974405dad6db8f8f8d95e710325293c974c593 +92600 000000000007945a98b6c640decf9d3115aa088092f982ac66d4731ecf0d45aa b5027641637218b7f7289a47e121ff0ee756c8dda37ecfd889797722b56016d1 00000000000d1be55ce347229534b6760693be12981473a621378f01e259c0db +92700 00000000000132cb13076fe45f38dfe1ad781e978746bb97d3281642d51777ac 6a7cc0eb96f4c79f27c9f0de1b6e9f0e84510e54af8ba75a879440fe9923fd8f 000000000005bfc401fc8f6208a67ba6bce7468b0a0093d912d8ace1e8a78fca +92800 0000000000057df2aa27522e5a385f86dc31038c2f490de2d155e4d8ab327191 720eaf360aa93c7e83530bf5902cf943b566c39073e76bc2a8108df06959ca42 000000000004f0fb70eef2338658d67a92661ba36f964e46999db6595def6f44 +92900 00000000000354c114d9d97c7c8271bcccc652c647a0a4a494b610b7965e77f7 408463f467ebe1a61238aa003baa63001e41c79cefd396c42f1bb91d66cfe662 00000000000955959559f002b01e34736f473ca18d94d922a0749c8311cc4fd4 +93000 0000000000015d5379547ad416695137953a85f5a059ea7023b5aa1d9fdc6f29 fe7225b0feb4ae144ab10cd6fb782b1173af9efb8e268b22817511a56c36000d 000000000007dc9285910639eca800e61829d99785d70245c88654a4bb4f984f +93100 000000000004ae1806ab6049aea8e18cfe73c4fb8cd171c7fdb6032246e3a96b 6c76eff2887a9b5ab56758937bb5b77cc8a4673d317797bdf8f99a2ca9678163 0000000000061b826c837e444a7bd95c62ad2322b2adc1367293a17d2c98dd9e +93200 0000000000067b98b05971a9bee5a2766361971ed55341275627e791d8ce0926 d6b67159f5d506bf154d8db696e49811820c83f617c4cb8b999e57957430afb5 000000000008b45987f4bf67f6fa99fe402404c1ec8af7e1d8ec5fdddafec716 +93300 00000000000589b6f3b3561bbc923e223829adc8dd79a7ece92bf551b4cebe02 9f526130fdfe20a8eadf732aaf515c8ad407a52c637af5742b979c58712305dc 00000000000093412d373bc8582da2666df749c21c2af5690246a60975b05663 +93400 000000000002b3756400ae209362b998689f10c20e0ccbfbdd60f35934def8d1 ec9a5b2752335138727b4c21932ed580e3364cd1bf65b120e2c4bb1bbc26cab2 000000000002b4cd7ef4071782a0d23c0bfe0b599c1405244fabde8af3a37a9d +93500 000000000003b8e6533b3f238ee00ff8dd68c3a2377a213f7a72c3ef0fe0c54b 0b31dcaab8c429bf9f41f84e491b6a5bc91685d864fe4a52f857420d2691edd3 000000000001a692f5f63748a807170471d324d79d5575ec5111f52142aac009 +93600 000000000001c2e4aeaac29c9f7700739b47b56efb02504591970e5dd0f94a3b a01e9af4eb8b40ce39ecf761624996bdf5f6f086b2fbde0aa803fb9669fb5af2 0000000000037e3283e702f6186dad340db78e0794e227d92c4183959a4e3a28 +93700 0000000000011c7edb2aefce1150fdc27dde71b9dc60127a252f641e54ba766b 09190528133cb3025d13e80f2ebf003b9b0fffeccc43ab7bcefaa078f7c78716 00000000000238888e066733d2e91965bb2441b5c6499f764065bd210df48dc0 +93800 000000000001f97499cd82a440ee1e15a6581537ab1617743c29182f42d9a527 c9184b65f77164da2fbded855c672a3324456393c5fabb1dbd85ed64e8286e16 0000000000085fea8d24eb15829c362272420c4df3df8fd3df3d01397a09f2eb +93900 00000000000049108fc9e501fc7d8cad6648b14eddaf9747abe16c73105110bc 34824f3cf78fc8b30a068dc4a92d3af0513430f626c8162ff04f9674d27a4c46 000000000004f7f4a567f4e103b49a18e05a45a48a58145f835a56ae28e249d2 +94000 000000000002a4c42580d51f0ddfd867eaaa790781c484c633a69167d17b48ec ed9e2f062caeb1a2e4224ec4b5db152faa41098773ecc6d0a96ec265f9e667c1 00000000000271be2d9430a96ce054a55d6e7ea93970faf2dc256fc24f42a0fb +94100 000000000003fcaa59ce84a09487d0c9f19efe4052a9123552633f1fec712e1c 41f4b1ab791eaa2c77dffec40360d516785d0d21265b41380a712a0ab75d3eac 000000000001c7f35fb840be14d1922135f5edd65a13bae2505e7d262faa32e1 +94200 00000000000081b1eb68ccb01607dac58f342e733badeefcbf8a86ae131b9a0a 06484517ec8fb88f74db86fc7be78f0e9577cae8df45d0e184454aebef570856 0000000000034b3708b6b9ba05445703e37cabaf34c88b4ed45e6d4e42708e63 +94300 000000000009230e0183c2f204e328b6423a4c358c009f58a6d365c05a7292a2 9100306ad68a54089de0ef673bf98e837ff6e77e436e052a936ca6bba58b9f0a 000000000004ccb42d8940a7f7efa5daca869292add0d58d3d74382bd5835e8b +94400 00000000000339f0006e7907f514da28984cd5c5e7a69cfe4c70fde50755e16b 7785d856bc117e4334df3ca67665bbf3046ccbfae87bb175a53f26440d27bd74 000000000007e35aa4de86756830e560c68e951d7eacf81dcd27a84ce141e30f +94500 00000000000066cb6b9e0bc1f315b5ae37f33b945649657328b2010c8a44e510 99877899354e5048cb3984de810ed7f5de490aca04967243e6de85acc5d116c0 00000000000294dfff295b06333c9204369eb1ab508b96beedb995c1286cbf46 +94600 0000000000018fbcf686aca81d795acd4c92dbbd83e45211d892d4714270c7c5 bb328c2f42428a476a5c04d3919055b937754ca28db3514afea689fd201e8add 0000000000040a74adfa2c92b183e79a8c571f173c8693940d84d62c9ddf06f6 +94700 00000000000209647892b994991ce8452bf3ecfcd3c4549b40e3fceff0d1c8f1 8a8f193ea31707dbe00a477a4202a9c7b778c48fbfeec71cda5c5c0e280d63cd 0000000000026300f5989982d059756f9b9dc7ab7fe60c319bf447303bacfac1 +94800 000000000004e65b3f7ebd33b3d4365f67cf210a8519851c76c214e621abd6dd 5d4d9e262c234dcaf539b8474e2e4f6419ad095fb3222ff6b24b1b97e78b4942 00000000000122d3c73aaef4c08340c7b388801b623d0650c1851c8bbb65077e +94900 0000000000066e0020f4f74c274569a6c19227ccff8ab0f8459dc38f009cea56 fdea0e684cb6ba8f9a4192b55c4a809727987834bace87c623e8d5f6350692e8 000000000007c278402bae2ff8d81e3dbaf4764c4ea4b1b66af6b9cfd65bbee2 +95000 0000000000074a6f7e2d07cd8e5dd6dc8183993ee3b84666af499bc5b439d21b 069ea7375c9b0df17f535500941dafa23ba85512b12ff8a9cd09cb3220881905 000000000002b51a6a06258bd17d92e09acf7ba72cf1dcfda15ce75efa0a30ca +95100 000000000006e342b6b686a30efd3b3aa5aab3aae3d0ac475332e79385fc8bc4 cf91cdffd587ff4bc37f613213981f8e9175d9da3b45a91f87f40caca5ec61dc 0000000000074074eb23186625aad8ace4898638f74d019a86ca6cfb3eccf129 +95200 000000000003d7c2a1677195b8c733f079ba9599e75840893aa57709371689ac 4eca7e2e5ca93c8e899af8f10952fe274d8212b36913bc4ca1587de43d682ced 000000000000aa8d45c81d402b9529f8d9f832f908ee20dbd5713f46914e3e60 +95300 000000000001498988c75148b09b10c1f481fbead6f9c0413665cac517e2ba71 b329c1ef9a4fa2be4d9602fcc989b4f98d9611ff54b63d76c7ab766c3245d591 000000000002dbb8b2d74138fa2590bcc88641b2a541d98cbc52dd85a94ebdcf +95400 000000000005c084ff8153efdf67c261c5e122d322bd59f7e80b89010a37e85a 89f84c13aaef954facb0170262b482931ca55d4d786dd7b87a80d2f2993b81fa 000000000007dd187635b285ffc8eebac528e90d8988c590b63ad50c8be1fec8 +95500 000000000003340fc85f7f24f9f28826dc05590b558e224114771e93466670c5 be54265ec347fa3dbdbb9d0402814faa3ce5bdb170809d38b765f1fdff970220 000000000006984a2515000f83c48e879900cc5d481e00af179d7de339931679 +95600 0000000000062e91042e587c0b8b61a0efeb75962790e20e09a1cb468e2b6a77 53c48b90e7c130c7cf23dcdc5e3b187c1a4a5e309035fd5c8c83467e0fc02ad2 0000000000062d443eaea6ed409af89ff5ba71e7002ab8f896d4e540040e1abc +95700 0000000000038eacd7b4f39b05aa2ac760e1cd12be5c72eb7c2b9e396c5762db 69c3a2f5631c22f55ae25ab1ad13ab17f07a8e8e1c9bdfef00223f31023f12fc 000000000007f080e1516d93a7c3c312d75c501b69d178837ed191b84b564d4c +95800 000000000000803edf4ede8a8600aa2ebadba5394c5633394d2b2f4ca74c614a 7d2144252d3b82015b1317638c2c60d3741c8001cfb883cc9f8fb6e2384590ab 00000000000570c63368eff43961943236c7a23ddd128c22ffd40cb72a162981 +95900 000000000007353c808928c1824296fa28040ed02f4011d6264ae431c839364b 99fb58304db622c86d5a11cb1d9a1635a59eba6fbd93662953999bc24c4367a6 00000000000636b3780f83a4c0c0c17918343bbf73d99e1ac9f8dfdacd1295e3 +96000 000000000002c86b568cdd2d0f4b0430cccf42bcde3361f63a32e23b5d839e99 e9099a8a5760817225908a04ad8cce28975d1b2661a405bc8cdf5a9058a17802 000000000007b4e174a5dd07f1a785a5d0a52faaffd9d610ff65f64270ea7674 +96100 00000000000707297caeaeb7181c10e4387757a935c459ece11f134c7b0a5567 b597fcfef8af47629d2a578bf65c5084db3777818b4d8264f2a20033cc0350a3 000000000003afa3b68403d0ab16d2e39748e8beee77773d46fbb5f233bd1f9f +96200 000000000003b97cec3e714136796147fb7ac36cd18eba941dffe346b330e7e1 fb063ad525b4405ba5985c55a3175ef9a51b8b8e1e826c3c70fc522dbe4602d0 000000000003b0bde61d579b5cac2a1634b9aa553d50bf4767a372da0b89eb38 +96300 00000000000388b7ff437d4596dda03e9268fa49daf0afea3754b982cc3269a3 1b26aef7ad68a620ea6c3c08119befce153ee6b1dea3881bacde6d9e16f7b0e0 000000000002f96cdbc4e8fda3f962189042c03a3d241ac720643d1bb05afb92 +96400 000000000005f7ef8404dc7f19923759055eef4958e6925ef2d2857191af7fbf 9010d7906679ee3bb1c13ec2880c200ac98b22e1e22c11248cf507c1f6062af8 000000000004d684c9d2dcff1a4aeaf23f10d6b6b4d62608cd553de36e400419 +96500 000000000007ade4492162553535806069439523fb43f13aafd75c0bb20685b2 8430f87500403421a1988fb777dc9c613e08f4290f832ceb873fbdd09da876ae 00000000000215df16c04334e24412d50b5ea086ad5934c22e1e374ac53f6d4b +96600 00000000000709b491bbca122caa1d228862d4053e0460f4aa040539c9855c1f bbd481145a7e3ded54f61f70c348a111e73cae817c489cf435b7c99562e2eaf2 00000000000186837b48d1e191598a881524d0d386d7d7eb44425a4497ce21fa +96700 000000000001715eb0c743a5fbb813ea4c103276bc6d3c9b21cb9491860780d9 a7dbdaef58453af1aaaf8b0b9a29a1a75412f9ff20621ac26d1f6b59b1cb6799 0000000000021e63af5111a7aed484425a42c1dce5bb22bb854418fe380daa05 +96800 0000000000053d79c4b7b757341e50faf2af99fdd62421306f777e09f5e06d6d 228cb0da112c064985f3e20bb13bce822c4033aabf7a40b87b25ee2057578ee0 000000000000a4ec5372a8da5aab64355fccf19ffe8da3266f1347cc9bcc3904 +96900 000000000003f698b3b023451e7e0a8a0a8409b4c6140e4e34bafc84b46c5048 cf660a03ab94846ed877f5a82a9d1449875fcc5dfe2969f46aa7d38070c28182 000000000004882dabbc12dd32d907aba2276c7678cb1f899aaac417a05dec31 +97000 00000000000125d656e9f28543317f33fb1b66baaf90de44a375ce6c5564fe0c 29882924d2c2bf7903dcd9920e0cf44dfa8fdcb6a685af1b7cc7af8baf30d2e7 000000000005060830914914b4ef5b1f62d2af15bfceeb4414cde51576ce51b6 +97100 00000000000009171b98a3870d1d40b799d80eb50903a8747e3ac1968377e4b3 66602b2500d54d0490eb05b8ac1e05d4723bc68612b483fa86fdf71c6e5cebdc 000000000003d7a8f9845dec920cfbdac206e8e8c9a3bb0d0feff48434f58011 +97200 00000000000056c9480b1090eae62c1ce319c55e2a3364550fc58bb809196f73 fa3a61ce39f154da4713ef9557c772ab4f3ca9498bd5fb0859c9c31394075d08 00000000000391c04395318dd6b916ee171fb8cc07384e58748def0c509d093d +97300 000000000002ace93caa3128fe86e305c0059a2966cfcb306c53faa9048aaa21 4a3a8e57c5d7a310dbd367471e97ec26aa63c514b5727cc69e3eeac034750e15 000000000004d04d6ffd13f5cd1316f798ff00f0a5e413d30e2eb70dab999701 +97400 00000000000542d15aa82ef5b43779a34c8f1a20feb890bf634486391fb2b04c 2707072b102567da95c5b82e5ddb5979133c0b28ae81fa4673a972c9a7fc9992 000000000000dec2d580acfcd6fbcc5febd9887accabce9b08eab60783b29988 +97500 00000000000521670474ccb00b98eb386d880cd8ae9907bbd232b4ef1cd63ee4 c98eeb2286b905975565fb796bd46f28904f264511a77763a0ef3cad19994ad8 000000000000aa170542e6bb7cf905de4f94be4b96f86e42e0858be99d8c85f2 +97600 000000000004945c888b2a3dda63df0351ac1a43514cea2f54a4bdddcb0416bf ee1876a3b30e236faa879f28dbfb2f1bc8896d45b69c851f81945a954be967a9 000000000001cdedd57a311d508345bb026e41e24bf455bfa06b61f439586ed2 +97700 000000000004d2dd26abaa950fc0e59d75c3abc102b6dc12b02105c14ba38ad8 837a2f16a9224a95fdf6aa190752b09d1f9c07a7b5148ab5d17599c1323b0928 0000000000022433e2be2b71bfb303be8290abcb2f8a00ef94fd8050bb18bc26 +97800 0000000000005d3118f7d300d3748d549a3bd41083021d82a0e59d320b1f3294 64515f0ec1c206312f7f11b19f355ad97bff6cd02e1116a337665317923870b0 000000000004902e5fa45437703d1fb855408225dfc94ca9672bbf22e229b71a +97900 00000000000232380d9560ee8e46de48de930fdaa4c2c372687afc239a67833d 4e62c63ea19045672c5a5dc09777b35d1a99974382bee8b6c1fcd2c5734f070a 00000000000393f71fe204aea0ed3e93fb5f2af74810d2c60515df0a282141ac +98000 000000000002272a6dfb695d9db936d813bf0055ae92e920c2791d4c5f7290f1 905f0077ae5aede9e321e8211ff35ec32976f4ce67b44c1f4094322f840c9a0a 0000000000054030f5e323cd782b8030858356486a369701470f6b1ab5854e28 +98100 0000000000007f7d9c153eb16e6eb865cc835f6da8a539bbec701702f3bb489b f6db3bee04b44e2e200e6461679f75a4c973236e989f0a6366c2cb47fb4087ad 000000000000cb7af5a961182b5a5e2e3eb7075be0e98e58ba4e85ef38b6a5c7 +98200 000000000000941ba9e7b94fea58d9a7a20527839d808893facb87b09922c5df 02e171d41931458076b72ee62f2a09458e384bef837eb073ea12bbb3be1ad260 0000000000010850224a28a9cb19610d3e68b4384176d0e117dda38e624d4560 +98300 00000000000536637b79d1e4cb197837225d166b7d1b5f552c9280cbfa14ecc6 7f0a1cea14da89708ad18e3994546d61020e5e23f3da1d3bd5a5151f88586881 000000000004960b505a35b55c09a1d9c438c4dcb38610e0ae4ece76e6c50742 +98400 000000000000a73978223424a7a5af563ca60c5e2ef630055842b223e649aa60 5606b4918b492d8ec5af7f48bd6dc4341f20f7e41839ac1afd6e43e9b78e0cc2 0000000000035762f5d85a4fff0fe6d60784f6b78d7c6084e671b0ec78dbba47 +98500 0000000000010e44c3b207c18bfe83fa16966c40dfb7690c970e501211afae9d dd2a929d1b7663b19b47cef70d78c42c2918b095ba20d2ef49878b29bdeb7023 0000000000017d04e76f4f54e6895ef9685c1fc9b6021073fa90bb178ce73c00 +98600 000000000000c915a43e52e1de0e1228d9a77a37b21848fe7ffd1ba287e203c9 f8dd4ae25eb7cecbc36e888e01c27ca72ccf76b83bed433fb123fd99d5ea1751 000000000004a577ad59f0093f606286116cdea93741138319f4e529848f2dbb +98700 000000000000fc0bf43f757443d95994da84b0040d92f3fe97b4c49843c8671c c1d3c449a5f144594b178e2121295e461a76e30586997af1ef0a88056f987a18 0000000000026a4fe48156900433d7fa1af863f9956afe902ebbb64d9852f7a8 +98800 000000000004599fde995b12564c47ce30b70664c0b514e3d559b72778e39401 6d3c8d729ed32be5064e2c6de1195125dc1f546226974b6a8747fdcc91b2f32c 000000000003e48ec74f2a2ba02f21502e5e0fbbc8edd93730fe4d34b27735b4 +98900 0000000000029686908afb414dc30760d74ec0a34386617d010a47de394ae61e cc1a254c03870e1c8c99cc6231156d78738b28bfafac15523236d9c28aff9247 000000000001741120135274584b2a0da45b39c8cc78322a14f9004ae766a8e0 +99000 000000000001d216ee63e5910da39b56d4b15fd962951b08901bd520a0b2b6ea 4135feef91f8d06b7b072890b6499ef5df4c5413361e7ee1a316ce18971f087b 000000000001ca717a5df4f57597b8857a2d10aab94058ef316906e56e0fcb16 +99100 00000000000476fdc864086ddc6bdeb06db08a5cd3442db781f028b606e1dfb8 ed683d28b25d80904ef0c36e7e24acb6a57960f9794756128d7b7d6f3461e554 00000000000233df19df1a9fed5135981336f9a5e0789fc1a8edae2805536957 +99200 000000000000f7b1e2a08722bbd959ed71c007ae2b06c88cbd540f20227484c2 4514272a9a50bb01b2134c68dec95ad2cf08c43a15f9c81da4e30f65295b6e6f 0000000000032941cb26da8ca61328cdbff0c3238245badb50ef95afc008ee63 +99300 000000000003a9c8f5c7519b551b4ca6fa778b01cdb0483a2f7c4bb6d8b1759e 616ce2db9f4ccfc0b2ad5ecc9d30fd10abe66aeeda3a85fb2924db96e23defbf 000000000003076c16ec122268577b289a732481e2a3ada56f09d1c938d6d400 +99400 0000000000016ee002b1c9c22fa48bacb8bbea700ca06fcb3d11de6c8ce1ee1b 823a9b30dc016aa435c97951d0ef894aa352cfd1672ce09aec3df3073a4d38f9 0000000000001127faa05ac51020ae6618e8bdef2a8a90d1544dfd287daa05f9 +99500 000000000002e7ad7b9eef9479e4aabc65cb831269cc20d2632c13684406dee0 63998fdebc4ede799349dd09adf0fcceed43c9b6f6c16017b8b45d3b751f00e7 0000000000029964c7d51f585238f335f4b921b460936efcdc350af7e2e45cd4 +99600 0000000000046f21953c9d463c27058b2567904134ea781affc852b65ab8b85f 3358debb5135e97c8536ca52a09e699ce6b1704d44ca1158d78db9ce55bd1186 000000000002cc73b21cbb3830b323a22c581fbf592e5707af48dbcee0c0fb3f +99700 000000000001c74d8389142debd66d4d077bef96dec3f5127f6baa79ac01ffbc f0bff58c7edc100ab603882500fa4db0299cee2632ebc53c1eaf46ee5ba5e888 000000000003af270f25e9b6470ae9a113cd79f7c5597fd11b452a12ba544c76 +99800 0000000000046271e3335cb857ac8f971b7e43b476c9549e496a42ec73c275ce 9849bab9374fecc1a7cb3af5f904c3c4c7a308631f32175c1d9a8cbfdaec75db 000000000003d3efdbe6b4b45ea697a801ffa8a304c9a0e51ce1e0c7e5cf338a +99900 00000000000371b15c205c32d0796c0a791000b73003ada3d0ef8bd7f0aa72d1 389b333a7aaa870cf975f80fdf704c17d9d5529e312b5f86bca19cc6e447589a 000000000000655ccc8b2af70741c86690be257ae40881593a4f68c309ee85a9 +100000 000000000003ba27aa200b1cecaad478d2b00432346c3f1f3986da1afd33e506 30055e07017397d8fa3b3510372ef7aa8ad814c5e70d55eb514fd255f2781ae3 00000000000080b66c911bd5ba14a74260057311eaeb1982802f7010f1a9f090 +100100 0000000000020ee4806021c0b6e7b97d31df0c2fdbd0f6c3a7cb5883c7bc151f ea09400a6c20ea3926ca2a96f3215321aa324b02bcaa9bd18b568325b92ece74 00000000000313ea1e469dbfeb7851667644800006138e13ebc02a7ae4cfb27f +100200 000000000001f903504b2bb7fb65f35090d3bda3a60ee72be9cf87ec9ee6ec20 42cdc88119d85266ade220bfcb1e44a5c3f07b612558704d36306453f9402a82 00000000000414619fcff3fd0e18657963a03d6bc46daf23c8b4d2234e06c452 +100300 000000000000391d7664b7691f92c93b6deaf47da897bd02738a50a772f418e7 6b69ba98308745e525dd18443b2f34135f8fdcd6fb90f4952d0d6caacd3a0a01 00000000000094bb6ae6ac97b82709b33bfd2f4817872c140953750899226e3c +100400 000000000002143085240c57a5eb481940834bfd110906a83d097d3f74f1393e a5e96422c2c56814e7c6bafc1066fedc2a849247b0c83eea57dd29e20b6cbac4 0000000000045aa264769b5a8bf0460674bb3a22a3b0fa13e072d49c571a6a62 +100500 000000000003f477deee16235ccd7ab4d7455a5a25bcdd90eb52c93916ce7d35 25fdfb947a69a97438ed0e4e9c7dabaa7f3b088958a6df398b7b9397e936285a 00000000000137aae90ffd072a62f27273be0ae59f3b05a619d6ed2aea7e7501 +100600 0000000000007b92760b8d801c6956cbec2dba71a6737456320053c41fb03de2 19883ae62603a0049333966e20075ffa9d4d115263202a37cb814c9158399b6b 00000000000177cdafcad7cdd484326252928a960da20a65cc1a289ac0820eb8 +100700 0000000000037b6ded27bf92e3bea2f8919cfef48c53b60a5ce84083ad6c77e8 ce9f0ee24d80fd3021756e10e824a24fe0dfb29c8732329c465bee1de34bc256 000000000001b9a7de403d4ce5f0f1f659ae72036c073602c9d3e6f521eeaa25 +100800 000000000000e383d43cc471c64a9a4a46794026989ef4ff9611d5acb704e47a 6951ebe5bc87483ea1ab7f66c74a4201a4c8694a015e6f970f7e228085daca2f 000000000001cc8b34e984092a1eb4b51fe0b9b991b7283f6c859467a662230d +100900 0000000000035eb85ac833a97e884cfcafb6299651dfb3eed5286d527d26d20d 9662dbc302b3c7ee448bb8c397e127ddf894dfdee1efdea4a5e8c9b151008e3b 000000000001d0f29ab4fe89b068ba6eb81dffe0f2ebb3e618d705baec8da375 +101000 0000000000009c11d2683ccbba6d1b8dd7985c3e693f55c95539156aa76a8d41 b093ddd8b7a59836a3f08a5e2a6c38020725c8f4842121edc25758c01f975a76 0000000000025fa3248a57ea24d5c91a20879490ae69bc77dc482a0e748b4964 +101100 0000000000009bea89a426754c3897b7c48a723d52b8f34f7b5f785c82217832 9483e1a6255ac2bad6f28a4dbf8ee5b0f0eb451dca1f929ab7c6ff6efe48f7a1 00000000000290c971561d3d7e103c17231dde9d363976311e121d07182b5df9 +101200 000000000003526c848a56b2fbc252f18bda18edf1c05dc4e75351b173874b61 1c640dc86419e4db40753386fc5be7d01b639cbd323ca1e85b207316eefeaeaa 000000000000f513567303e43c016e1241be5914818ab74d25c50bb688c1d8fc +101300 000000000004044f1a5c496565fcfc37d2ec2ea2cf1b1bd1b1eb4aa56a9523cc a6201a754806df4bfe3cfa86e87ca57ee6bd0238d897f154b2bc7651a48b535b 0000000000005cca107f3f9071bd69582c7d8469f8b261fe8a7560cce4f607bc +101400 000000000003e8ffb19073074f905f4f3ab51c39415fccd45045b17d903dd11c 1b98d295d1ecca99e2b98df0a667a554ba5ce8cd2f53fa1e1d53482811f7b0d3 0000000000025ae0d4daf112cab075dc07f23379add7ee6a9e6f0c9e32825051 +101500 000000000000a99859dee7f1473f62ab817ad8662699ec9dc1bae590e3a0b433 8fee43302a593579f060084dccfc22999935f89bf02eb8d51caa49911e3ae908 000000000000526785ec4183a4645e8887e576f8c94a57a68c9f96485cd7a3ab +101600 0000000000008dc0a3f530b8a484e338febd8cccc17b40296836432f88457fe4 5a39e8aa1e8d774c28e7d897bfbc232a269f3712fdfea0ae25b54dfe76b82102 0000000000020d966bfd756898f293fe31256044207f65b7a6e4d543086de968 +101700 0000000000002b32591bd3e847a3709376002e51fdcf50fa40c5850c8adcd3c8 2a55822b33625e976caf3eecca46bc93e30559084b0f6160a51f3ae9e88fe25e 0000000000025638fccfd0967e8e718fc29b494767e408c38e942e4611b4ecbe +101800 000000000003456a75efe3e995499296a93f4a3c5d7a6a83118036955ff6056a f1c3ee7b300a1c83c0d9668a021e1dd0360a90268d29d0f5e6679e36b120bee4 0000000000012ec59c0bad157659be2de225eb467ca74ef47ce6e18ca3e7da33 +101900 00000000000251a23cfec2d71a0b34a1838759e8f5e974ef80d5370427902990 0487027e9301703c925f31a3cc4b28d396974c0f501db33d921bf23bbcebf362 0000000000007baea3c6cec27cb50e3ba42a3ac90694765fef4a151def198c52 +102000 00000000000335c47dd6ae953912d172a4d9839355f2083165043bb6f43c2f58 5a2ba0d9512078c1574fbc56d57a9672cddb8252e3dd4bfdf16ff56c287010ac 0000000000035107dce8eb675c6fa9a08c7617c109b3553ad8f208dda24065a6 +102100 00000000000004751b3fac9c7bc3c3ff97c7c45c4328d1c9ff131a1063c1af57 7d12d2f090d8538ff2768cd808cb0e6c3ae447fb3f5ad69df8d32be6e01ac1c2 000000000002878aed576f1a2bd3d729751e064125190641efe6574bf9612ed2 +102200 000000000003a6907ef82ebf06524de8ae6eb0ad6a277bb1268b94a7d268feb8 c6084e402c74234fd63be9c8fc3edc8e28ebf11c11ec2d1b9855d79ebcb05dc7 00000000000141e64bd8181aedfe9e3539c19c9828c941841b59127e984de2dc +102300 000000000002aaa83b402d164af74b7c9ecc970069027cd828e382541139a20d c14da81c11da6672b169cef448868fa0d5eca8eec831a0e9f80edb8a5cbe7440 000000000001ad089eb9f9baad765c3955e4f479e52723a2d505276d885d754d +102400 00000000000388b58161a8e2299f4aa60f8fa96b45c060c568ceaaba71748e3c dbc4eb56a2f95dc7c81704b44523b907002e657c8a2242e710d0a003ae04104c 000000000002bfaed9871a3c959a364d773ac9ab9aaea2688ab27448249f9430 +102500 0000000000039b338fd1dc8218f4516ae50367ac0b2ac4d0605a433ae74cfc22 dd90c60eebe0d54bc3026da5894e85eee7bd6575c219a846f12daed9c97934be 0000000000028af3c4928fdd8c6327210405ee5805b9f356b215a705afa7957f +102600 000000000000f84f229ff7305639af440f1477cde3a5492904c61e708264bf2d 7699821bf3b477c33430adbee78b0c978fa3dee0899d7e3536e954dddc9e5c30 0000000000036677bcc8bb71eb42bb74b4cdf61f0d10469d4048713bbb7c7a83 +102700 000000000000b873826e93b80fc37f0ab20935eccba9fc3acc9c2b37fb1dfcfa 5ac43f0b1214a290ab386adac7e66f72b158f1e668ed27c806a517d18b6118a8 000000000000f0972d37405fd285392729237bc03887f54adddc8a65760282a1 +102800 0000000000034b7802c38fda9c89f2bfd97bd9c7717a78a67b3c4bec144ead2f 26b12dac15b05843aa89d3730bc4b5ce462c47f8530f58d5e25cd32f9081e31b 000000000002270403abce8462ef2d6443d6919208a97695a9dfa7b394f559f8 +102900 000000000000d34b432ed7d89f0d5301df0d6c75e6de6b43dad9eced97e89ed8 55f5c8f4f764332784916777ab2720157bc367b2f14bcf9d60bf4c8ef8ae48eb 00000000000185237c68d60b70995687fa1459008f60c25f85b7a5e38a5a56ce +103000 000000000002de7f6fb9d9b6c03d948a26f31922738b87a658489bd800bcb17d 6e29c431672c85d5b70b62145f56ce39110746f134f013c7733c4e438dfcc203 000000000000fe53268d70885be56629754ee905e4632cc22839a05b8cfb0e13 +103100 0000000000004b72786dd2028ffa619b0f6f61500dab6545db34e937c1728824 4720e9c8d84d9870187821f9f89492cabe74282d8a92f780c4fc0f73c0eee5d4 00000000000140ea558deae9c0bc15e167999cb1c194ca9a737b3756e9b5a143 +103200 000000000000750f2e63c327d0eca76c7aabfdbaa22332f75f29b611579e0e78 0d20e24c193026b2f26ce13297b8f8f2a47004aab5aa1752b88324ea5eceb5f3 0000000000016b2d05ec650864cc89f4050f9f3722224bf06852fedd89e6ed78 +103300 0000000000009838e8036339fd1a778edb35146a0029ef14e31744a21e5d0c61 e735532c01a123a6823dc1dfdd61053e3e877fdea728c68f7a77b48f3c034721 0000000000014be4ba97c1100ef4e26ae69631df6415bc403998d685261229d5 +103400 00000000000202f17de6dfa4e4072dd0daec2693e2c98ea603f2e0dfd32c7de5 7bb948a919c2edc11d67ff47052fc166736794f073799a389edfc50b97ed39c5 00000000000274faa7b067dffcedb4e638b819b8f5aecd6253a88e8e7f3f781f +103500 0000000000029b924435f3e38195c9127a3180fce6b799d99957b7143f9f9ade 7343e40abbc2d03fd5a422022d4a5e5853be489bb3050f296c4f0fe2ee122a9a 000000000000d4b1f1a3d112925dddf69010d11468226f793b0780dc9c9eeb4c +103600 000000000001e92bc8c52d9023f7c338bb8f087bdfffcceeb132ea5221852a8d 2212dc253aaa9489a19d017309fd0728539007265ff8d4817821adc251e2b64f 000000000001e52653d5f7bb4483ed72bc9e36c9dfc461b489a74605e9e83b55 +103700 0000000000012b37740f9ef79d821e9d88312c677765a00905046b42cf8d142f c0c90264b1e68cf72d4c32c73ee06ad2b25212d1e7b16065bf3976dc2dd25b5b 000000000000bc9beeefb24da3181c661551c57b19ae7faaedb42805a5534310 +103800 000000000002c0fb904c4b769816dcc8ecba468f1b48852621ddc299fb07ae18 8d87ffa7e50060f335935cc6fdf91c4176e8a97ae6f8a272d42c29995f6210e8 0000000000017bf13e668c766e2cce3594ee5602834769429eb5fd27aff994fc +103900 000000000001121df0d4c7573f19f1ad443f4411f9d245a155180c5c9938408c e77fbd3af1060d684d8959321862ce17a0a9bd1d9fb19fb2f58a6c084c82e330 0000000000028bdc28e844e35a1322b4962a7b3e31645202ec4bbc84efe80a09 +104000 000000000000a9887c91956b638bb3c0651321fdb24715354c3fc6633f5a16a3 a8d786b52025f7bf6a43b3f348ca1f819187a01c1e4911d418e726630464da32 000000000002a850bc55fe565089f1631752e487d23e1e83f33dfecd12ae3ae5 +104100 0000000000007d5087d7620c50584917de5eb2af159f95b17296e2993706d6e0 baa69fc226a536fc93bccdfde73dfdbd84679484155c60485ade8f4d0b7ed2f7 00000000000348d89c1e4a95ceea4fff1342ce30d7d3681bc24e1f22c5340cee +104200 000000000001132b073be91470eb64f5f2256a8472d142d77b5242e2031811e9 fe7af8f0d222cb5bee2ebaa1484244b9db2476b09e8491b8298d0b9bc0bd28ad 000000000003795f51ba24de6d49cae7d361fa5c64aa64cb8e86a28e985428cb +104300 0000000000007508eec44c56480dc0bcb2d55e754e7f09aa090987839c73874d 5c7d247048d2937b11e747604c9e9ee666c457f5480cd4bf53668fb7c08b2029 000000000003171818aff2c702accb7dad2438db83d5731d7153cd777b681eb5 +104400 00000000000184ce92788c9e30e705c2cbfa37666c7b633b3de51356331cda22 8faf861bce631a605a98522ca69f06c25a93d27c4bf9faf904e332c56e019839 0000000000007f6db3e3d70433f4fb1e883100ea07e3f891391e095b12ccdf46 +104500 0000000000035c81effe425e21dd20e7e72763bf453774634463c4a97f56f090 be260dd9b2c2b4da2822db12c204951b86cd6a9a8bb7b8902bcff99b72af78fb 0000000000027da6cb3ecdfbad2300b4f5eafe1d15511941f2dc765d72dd5c13 +104600 0000000000011223f1011251cd95d922f2dbf617e029c5e24882e65920526d35 0dbf72a7f049bbeeb23c228d3cadd2c0a6633f0cc8b9aa6a22880b45efe12821 0000000000013552114a6947189785eb8f337a09cd186d2e0755ca098e1a47b3 +104700 0000000000022b109e161a0912aecc58fe5ef31e99109766dd79b7138566b0cb 56012359a16141f2b717a5ea58d377f011854896b2d141782a857124fc8beb71 000000000001a72e68ebadbad2ab6015ced1c8edd9531c50ad0cdd7ed8c7d77a +104800 00000000000364c80474c15901e99ce58755dcf212081c4ac767875dfc55510b a9ee02c7b5842430a7580234a8e6c67be38a1ec26bdb73b3076a94699791647f 000000000001bdb0c01b68e58464a112132017c0b55219934d6abf663dc6e461 +104900 000000000002ba5656425eadf3e1a022b7f313244958d5cc8aeff8647760c2c6 f313c29d56cc010a3b3bc4321cb4e84d50f34c61e5d3c93f6bd59301850c4c54 0000000000010fd2c2b4fb23c44319e01754dffb1aa398f1d5c3f9ae4ab04741 +105000 00000000000291ce28027faea320c8d2b054b2e0fe44a773f3eefb151d6bdc97 c1a09bb68266a17559f6c04d8ce6d00f753d11b2234637faac65fa76dc0e887d 000000000000265dad8db0728e318aabd0098e69a82984f8c1c5b9d55de5fd9a +105100 00000000000195d7010f816400580628f61f723391147f93383a17c45c1fa79d 71314554fefea2461691b12b161881e6ca7ae28b5f1aedd47337b7f8d173386c 00000000000178bb15c014c55085e79b8b530cd3c6e3d447f0c65bc0cb181d07 +105200 0000000000017b9e2efa53fbabf847bf0cd4a5f3b420087ee43c42130aa9be71 959df82e258bdca91a3d6a4e611e8477eb04f70cc442a5f1814acf1fa812c05d 0000000000010e4ffa7f6539498b4a5b072637105ae2e93e4c06c9d8c9c74d9c +105300 0000000000025eb91ef04637e2b3c9e76e3327161f15a94bbe8d019745bd57db ba9456fd2aefd8a7c2ad03fb91a0efd4eab5a28febee895908c4e5d0e6ca3024 00000000000219f7100d60d007deb58512d12e36528917a2cffb9ddd07dec38a +105400 00000000000142257802d654804fb42e8262baef9705a772947b0449f6d155c6 30cec7361aef6002fa7246b6c6161978ccf74a2e2bb5adfa458aa86229c6544c 0000000000004ee81863aeb5fa976253760280abb41ef95dfb0491c5a9869229 +105500 000000000000609f51f48f4eddec43b358b3189615201314b5c6113c6327e9ad e95a1743504244b1faf2595807fca8ba4d55e296747e907e3d05df33a02993e0 000000000000c6906639ec39070bb26bd94c355709f098c40c9713094e861f31 +105600 000000000000235e6e18398a65cf3b46ef7654a2bcbc135fd5666b96af5e561e a30403302e74692394c93b96d04177c7c988b0825c63ac590a1b56e51d840c09 0000000000006f88c4e8f766cf5ecddaf40caa9d9e18fd898d1a9a82e2520273 +105700 000000000001ea69eee95c5adb7e40e2ec8347d0889a98679820448d85a173a5 a73ea3814b1b24c08c93b3a6a229b91e90cd77b00661b7a1de7c08ef6023b84d 000000000002ccdd70fbe2557e73811d67e4ac361db522d8eadaf84c9e624e99 +105800 0000000000020bf196bc3926d908b66dd8a163a0aa58ce4e54fb56197ab42780 706859dbff5a651194db7b6182880ac7d9411ac9e94fbff59f1f5e647250fb51 000000000002e7ac242af582a23cbe491e800920d608b4a343279178d77320b6 +105900 000000000000d270aa6ed1efc4d6593135f1425a9593e3eced349cf1f8bb61bf e17ea8fc0e04cdac3c1bb955a2df875e147c7b61d17603c97a3fe658521d7597 00000000000187e7918ad99d3d080879225ecdd0e9c46e97dd10b7e25dbd3557 +106000 00000000000058d919f52d255f394ed0aa3a344432676fd30f1aab4e10c22fad b4108285ae85f4944a378709637db38a3e37730a06078467f84454c3df36e41b 0000000000009c097e197c7b517d36483026639676b01c14fcd681721721d300 +106100 0000000000005bdfd3c348886085bb62523db7766e81cdcafd3b6752790ae7db 61300c9081ae76073fc3b2e29eda2ea263c126aedd2557181da260d7c3ae3d80 000000000001564b4f67c51e6d244ee19bf32de4342673554fc10bc6139f979b +106200 000000000001b698157e0937bbd3e8fd2c91577c8c4bad7f2901540fb4d94b6c be75b22fc1d4140ce48f3bb894985b93a3795e98e90d192c34b563029b0a133e 000000000001515c427bf4a56f18c35bf1c373e5e33e6936c8585a9daedc7813 +106300 0000000000004f0b6c4879732db537ca1e16db63ddcf058e22b939159c44bc51 785cc0961124ceda2aa8489e6c66da5e5fc5803088cd007d101a66fda5bfc3a6 000000000001e84ad99877a93aa5e4d0de0ef5cafb55788113f934f0b7f4cc8f +106400 0000000000012926659abb4419ad6e09a8b3cfbb66564cda9513728a24c9fe3e e6912e70d4af69b8eb663400dbde6c1beb864d40745f28cc62e3f1155ed744ac 000000000000defae36477f12511b6f1aafd8cb6e7c6714655dd92370cfd6485 +106500 000000000002817c28eb34e66326a20097525a5519a7bfbe9ada86a0285e2532 7bb992569e94d966e04a2dba041dbf8041b0e348963887e22e791db940759da4 000000000002f26df0c8c260b2b147519b1098ca06cc00df83a9cff032e1a3f6 +106600 0000000000025da1e6bbe37ab44c2e6cb0a7ffb1e4881a488457ece0dd3e5c99 1c52e72f7fbdbc6dcb81b34da49f449cd3090c346616a6b8a17b169258cdf4b3 0000000000023de9e73c2b6d9d20d68bfbed2e57f297e8731233233265d35492 +106700 000000000001c9f1738adc21f1fc902b5a1a6e72114d2f3d655cc86843d0884f b745b1d2a1d3ae6e5e9409a9cb2918920a489b54d0e0efa6d84ba0d2049d949d 000000000002d845374463185cc07ccb10da17d14ca1ed6cbd2979a43ea30104 +106800 000000000002e2cc082d925dfb198384f2d2f01096c81128262f281fd9c76ebd 2dfe80e34f5889b09f8c7ef4e9d686fad7414a857f1f56049438ae8fbdb5dbb5 0000000000009f65ab9e5e2a04965aeb461b0613f81d073e771570f44d3a6d62 +106900 000000000000bf66e5c7943dad9b31db5637b552cb37086ee2daea96c2751564 dfda46116d0ee773f4b5e6ae0426f7c91af23019a17e725401f9ef86a6876e0a 00000000000033a13a421ac3aff5fcbb1646b780a27d8cc865c87646f19f3362 +107000 000000000000a29d57f3c6c6696e84d21de79463b7bf85a6ccfac39438291d64 7425797248113495a572578c7db249d2b50b5a1bc543ec5553e7aecf3f9f6135 00000000000011522adaa3df3983082e86c0335a2c4a6a3a68f2d138a6256179 +107100 000000000000db9415e1a515894bf33d4f2523b05055bedf2087093cb6459125 cc3205646469baa82506d0bd6fe1c290e29c5d1f867e72df6baa92c61f91e8ad 000000000001bf08cefd7791ca1be81d9eddf9ed76b3f7cbd243247624d8bedf +107200 0000000000006cb76e3a797d0ab761152157f850bba0153aa7ace105ce2405dc b04133767322877835d2d6704c72c22a93176cc27a5d8af8291fd59dcf3294c6 00000000000211e3225c14078768615f7fcab1495ddb08f150984ab1a357cdd6 +107300 0000000000009cccb35a15e8a0c31d64fcffa95967ad2b3c0c9d87822c5f1e3a 02b885777c85e0b6b224938c834eb652767b8e9afbb3f38a15463befdb36325e 0000000000001d85d1726e763ce7ba8f84ee524833e5c0a5b557f3809b832730 +107400 00000000000243a5b10a7d217fd4c259ffbd5a51f4c435f3a1fb5583395b82e1 ae05c6671c3aba1cb4c1ab6354781cf1e2835cac1617ff3c990d98bef1c22ad6 0000000000014e10863b102097920d6e6baf0c45bb3564cd6f0827022897849a +107500 000000000000f0c2f8dd90080a80efa50ba21ae650d17908f02c4234095f5c67 a152ea5dd62f1aa1986f23a59b2182758e6b57f806e2f4fe59851314d4df5013 0000000000005e7c81f6f4c5a97c651afa1190b4401ef7d2e0f1d3a27879d3a6 +107600 000000000001a4fadf39731a5228d5add914ba612f92f3ae10ad4b62a8dcfe6a be7d5d1e7bae79af71190a6a53288ce92ab001dbd45d6c0c84dc29a64672cbce 0000000000026295a730cabaff69331ae5ce345526f1592b228e8ec0bea86f20 +107700 0000000000013e5f48f23c023a58eb054491ff890710edbb41830681a8e3ef6b 8a6246ec3c7688a0385c42b8ce856a649a54f792586e2d5c52b756961471f86c 0000000000024f4be7fe142a2610ff765580dee0c3f760589f1dedb2925940b6 +107800 000000000000d5e381be9fa4fee09d6b3526d24d0e321e7b34600cb8a492fdd9 7017e9429d83004f2c3dcb64d13b58f462d8124b5bf8b7046eeab93b5232ca83 00000000000133cc49e74d7974361f3368e4438c5ebb4db73cb34f1d8cc91e59 +107900 0000000000005bfecc74d81a63a82b971425a2c54cba8ebc60567662bb8bfa21 e66d6c76bbcc58007e62c2ba3ab9bf1fd4ac3d20ee3b6dd267d89fd664a9de1e 0000000000018a46f201ece4ca8f04a4e9d042e2d6d128b5cdcb2e78f87cded5 +108000 00000000000167cea0b43ff7ce22f330d3e302832187eb31c61b15bb1511e118 fedb44e8873ddedd6b4c354a3e788b9405e76e205403d949e2d5957acef92f7e 000000000001110a03b89e33a6c0d71f89319cc1215997406bbc74ed9a6b12f4 +108100 00000000000217a8b9074995bc33a2d9ec42181bc934da244f8c4db9babbe64b cfe3c78df6850f1f2c7406332b52e0cabdae0bd1e03b42625b228f80da0390bd 0000000000017ecba4f4e1a0d05e80683f29835f90c4db3b01024956ad1dec60 +108200 000000000002392439cc95d0d387542051e00788a758a8a64a0195ce469e8600 81f2163fd1e38c76f9a174461781982fc8cbc8bad61282aec42974d28b8d9b1b 00000000000085822372f66a0b168ed5d1135bf01c1296a645b2deb9336289d8 +108300 000000000001a7d94230aac603bd9e62ff15045270f327cd880a3a181e976b06 e02f8d50757339deef7aa14193842d132a1c1d845abdc7397b5fd993c3292bd3 000000000000afb8d5436811dbef25708923b3e76b8cd563a4f13fe590e9a4e3 +108400 000000000000c19f9adc07014fa635b58b4b537386adeeab8ba6e22f7893517a 5c563a49a52b345f22e6b7119897513ab8c9e4ef4d62db587e7973a33a3e0909 000000000000a9ea3293f5c6f9f8ee9911650a47dca77e1a3273ccf215242d62 +108500 00000000000132bde8508b955fa1748e859575610abe3394c9f20bbd8157aca1 8527905e7383681b5e0c3e4abada91f84ca22c0fc61ba9c7b9281af17cfb90b6 000000000001817110497985dabbf8fad648cd4a12e43da7d641778fac766b52 +108600 00000000000227698dc4e40b953291b216d2b602fbe6fe0c30f0bb5ad498facb 6713cd4a2146336bed73f613ba684c7e633734c768b6d6773a84fb9d15f6e7b7 0000000000004b2fc3db027663dd073fd2d482817fddca33612d653c140261f9 +108700 00000000000108c560520dac4c9cac0504173efad2112497ac8243f9715264fb ebead7f6b36df9b660fca3103708b014fefcd0e923fa8c22963461e86be10187 00000000000166832f829e5232ba7a0d6a0de8ea5c855353e3f40c56ccdcdad4 +108800 000000000000095a06781ce51be66d6af12db28b41a129fb79c6c6cfd4051bbf c9a40595c5871fbb402f5063fb49070b5f9e4176089b489e51ed2bac2ac5a1dd 00000000000082e3092afe9f04474b6ef2922e5d3967e039d5a382a3bd12337b +108900 000000000000c5eaf935144b7ca54558339b17ab60d02ed007b056413513c0d0 8fa6a95ec4e9dc956afa0ca23cdce010f7971428de8f93898c17f6d1038328c3 0000000000012873306a8d410562d88fd26dcf5c60e7ca6eef7f1b7190eb7634 +109000 0000000000018ae5c97cf968e269afe18f15c6cbaff0beff192126401dedb634 56ea190219cd4b751078cd99a768a8f2c05fbc85712a8df408c2f47b713eccde 0000000000008d32d93218ab539f9f32a0ee12b163ef9d290a98217aee356ba2 +109100 0000000000007cd23b6cb9c29335ef6908c110cf221cce587c8bd7837ab6b117 fc69385980420ffa7e4ab914a0ec1d0b87c3a3cd4c33242ab820013ccfe75c21 000000000001599f1a7e7b91d6d948d94f6f6726686fdb581b29e8f60705b320 +109200 000000000001a5777b278af02a4f038c4a0446e8a2607ccce48dd92f17ba95ca 179636ae961075c98fd8882586b71308a8367b8da909e5ed531e88acdf67fbd2 00000000000175255d43a679c43a967e710e4095a0d531ed8ce28bce7d423626 +109300 000000000000523dcedfda7151227700edde4fd45ad225ad4bd95b9aace14627 45534a26486a99be458b0994defaddec04011cec08b8996ace8a51a5f7cb2339 000000000000c88e307a56c84266402c7a8fb1200d1fde13e73b94e735ef54c4 +109400 0000000000014ea4c61775674d689285f4d92877cf2123bd8c139a4235d7ddd7 73b956c515357e93818a186fe98cb0bacfdeb97cc78f2e921e74e39b9129a9c5 0000000000002bc3ee7d655108ee549184e6010b3df190a0414042544fb2af40 +109500 000000000000fb46bc4eee320a845a1e366b50d376c79b42920055d5bb7ae079 f91f4e95c7210d125ecd0c58908cfe9e6f495967096e06f9012f4d19b30d54a4 0000000000016c4f471b4372b939c11c27793b8bd3420fffa63872a841d490f7 +109600 0000000000019079d8999a42b26a79dd1e959cb16010b2409a997067e305e103 96dcf5dc7630fbbdf64ff09390214e7438395b8896d675ca2c9a1e83d2eaa418 000000000001bfd341793843c81080da2f866679795fed5abb0ef9c35c544cff +109700 000000000000d9a3651fa7a6c9af737eb32165fde7f1c07a75d5b04c6eaa060c 13b11ee81a5609f3cef7e92271767ef78f0f82011778fbebff348a2bb7672a0d 000000000000778f995ad9c481edf583b3b956c5719b0d8a812e4601c4f7e65b +109800 00000000000169d885a65c6b3e18887fbc04eef4c67029f5a49f70c2bc9b5ecd 28667af3d88cdade0ac1d4afffbc6a1173ae636626eaad1e2da47ea036cf55d2 000000000000b58c6c1a639b0ee472a39d46161eb46de713f0dab462e067069d +109900 000000000000464cdd0ad30e6b9e73edb605f2ad7dc693fa2c391852cf1220e0 87f738bde271591523b61f302dc73101bd68f3b1a1ed5e8f3e070a9221d5997e 000000000000039b1fc2f76a47566f072da93c3f3d793d47a7e538ac06c31b96 +110000 000000000001bbda3f22ef8e476b470a2d3ae16821c23a6d22db77318d0799a9 f41b84badad5b09ee331d46be2c84039d9ac8f6eb741815e922e242d298ce32e 0000000000018d067c617c2e262e544bae4807e413122b1f4814077a15ac57c6 +110100 000000000000a1b1785c2ff02491d8a3d170c376f2a11deae182e169aadfc040 4059805d9c5bb371f4c345309a7444668efec14244d4a16cecea8f21ee282db6 00000000000121fe495d004ceba6ec5f4ed809e35f76856cd5d557400058f373 +110200 000000000001bd107380753987a4849bc2cb6dc3ded85660faac835ee70358aa 0f998d7086417817783d16e00e9a726ec512ef37a739a9e09f8756104f1a67f8 000000000000fc45cb881982702983d733181063d5506101b3c76e48fdc92250 +110300 000000000000b8c3ad583c44e2655f5384f3e4e6a1f2a932b512ecc69a07cc24 1beb6c92df10967ec14c7ce946d4df3738ff0e0504659870a440fbdccb8555cb 000000000000e1882a4d9b13215fb5f1ae8cd68276f622642b53ae9afb83171c +110400 000000000001133ef720a8d9162b2fed76dd79f99894b9a46b905f5b26b28165 8c74b808b4c927068bf3722470e7fd7d3caded3b2499c74fe148c281604d9c28 00000000000096fe90cd3e46dd98a5f193a6b5133a7d7fabcbb2aca82a308fb6 +110500 000000000001b4f0587cc2e31d3ff2c63d7cf6c1804fadafd2122d54591aaf80 10cf6f525dc1d1ab98e90d5ab6acbb9aff250686c62c14801a41618b89b32ad9 00000000000000240b044a3090d3ae4f9b342a840640240304eaa8f68a0fa1bc +110600 000000000000b7de0674d4b84c46be7c477b4f5c7342ab791d37f1f597a384b7 5689db815bb4df5dafaa78e1872a6482fda0b0918ee87169baa14cde90b1da4f 00000000000084bcca63cbd092e361a3c490a71c6ead2cbac64d125e90afbe2d +110700 0000000000015c262b3d8ae4de41504806abe2ec4f463e0a8d614819c1fcf942 be1dcb219198a28fdd4d132081930907962e3758c8d2c22253d30901ce8a03d7 000000000000811e0ee203caa4a8c99acb3d5d9608ebb4e9c8586f5628469837 +110800 000000000001179e32e2bd0410719f4773a7dd4b4bd4fad930ccadffd5b15676 0e88bc1970d5271430200360f283835f15518b9c3cc751d88d144c04dc9e0a6e 000000000001b0ee0d6dfb9f33eca6235298ea0f36ee1cd39b812da9f425465d +110900 000000000000c41f464f38f9aed166a79905d08183997686675b0b5d41a9fab6 e44592715f93410d50b8db8bc8dfd733b7d004a0ddacbdfa0b75c5d3a74ac02b 000000000000c726e0e38b7c05e9bf451c71d3faec3a86bee942d4101991c932 +111000 0000000000011a7786add1f89b77bbb9a50077e982b4fb6f9a706674a71b9735 e433b5d7b3c9a69e0ee0600db67c5c7d4dd82bf3f3599c3dbe9bc90dea0f6ca3 00000000000106c23c5643031af3c968d4cd5b54f07e01bf65ddec49ec6ed171 +111100 000000000000a2ca227196cce920d903f291747c087cca11735e42f754e3ebed c3910192b546ef19aa4a008a700087e948fb7a291fc5944fc8e6546d2e3adbb9 0000000000012698ae25ef08286eb8625c735424c7ddaeb13fb145db1f137dad +111200 0000000000011e6d83fbc9dabe9100ed8f30df1a9adea8a994f6338d90857a9e 608d4efa3281040a9a0194901423ce9f741ab7d3a2c754c62679977615188ed9 0000000000008b922cba4c060c348ca35bac1cc85e175486db9418c1cc54f2b3 +111300 000000000000d82aa19655c485a9a68f27455518d2153e71b3cac2dcb1c78b54 df5eaa66e232cee961fe4e8a968f71809457a6ae53f88784a5e611b50533a755 0000000000003f6f3b858f6a5768c568f8179697e33f21732e706c0f3c794e13 +111400 000000000000ae56d35b98df16754c1ef687c920b05b52ccc7807b515ede7915 0166c7eddc181f7fa8338ce9b40c3200c4e3c9ed23740a7a066fb781e8c7e677 000000000000d114d32e785d8b680bc11a764af0b01ef0da43b70bf3b6cc12fe +111500 0000000000006ea9a415fd1c4850f27d4b9460e10feb9598ea2f577a188fdaa1 70e6a3c317d5513af33ae8e60102fa4bd9273d62e9bfab8875aafbddc84f93f6 0000000000008e43fbb7feccccc557b5074e0b8ee2df72507b72fe2959523b9d +111600 0000000000008f7825915679ef59f89c47a519e1399565271d5f47ac3c74c6ca 7ba762eba2a78b6d8fd49ce03455c5b8be3b5228d77aa1da90be6bd656ad605e 0000000000002806dfac4e81be103d725a2206b004f58f7220a83d7ee41b89ca +111700 0000000000007c2247a85a2bb7f65b5d4834c0df0d0907d9e4dd11eb098af3a3 de90808c147a4e2a2dae8fb146dd5d342763ac8cd97d99b0ef9bb28b0a0a6cf2 000000000000b5533053abcf62d1d3d79e7e13fba840bd6d697290bd7fe15b28 +111800 000000000000c22b96e1840b7b47585f2954817c147cbf194f2fa578ba43a20e 079398b4203a8589e72ebe274d45c8af2bd8adb7837db9bf67482608ee2cdeaa 000000000000f9345fb9dd3b4acfccbd8365daa816a6fd6db6da4d23c6d4ce99 +111900 00000000000031f0fe681879d1128c556e2a8cdca16ef796fbb855760a466284 0e24202010abfb14f65e0a9917d77ac03a10861452e3b2d943e1bf7a46af478d 00000000000090b9068c72a51522b2a1e06166b79fbd7146db402a53443965f4 +112000 0000000000001d69b3899a49f37799c375a7471829953d5470f468f48ff70432 32071a3970ee45028b3fb443462c54fc3b4f94c14e23994ad446d495c3e237eb 000000000001035d056c81d4edbdb2763e40739fd0b2f9cfa06f657299f4f66e +112100 00000000000085b2a8a700a118628a907e81c2fd8886ae9176fcf605d8149560 e5e2e9800eb51d020f09a36035fbb10bc9bc2d608c1d6300578a2949a9a3b062 00000000000051cb98cefa08793c82793250912ea8e584a135b6843513af9605 +112200 000000000000723f7b514cb48f8f2bb4f24ae054837693844693979d7abd7481 628ba510c931563cbf5832a3e9856620e5ac20f4394bbe75a52c55b2f282bcb9 0000000000012c570dbd5721ad6943b49115cec83a197782e2ed072aea6bb1df +112300 000000000000e9b7a2d2a0b26a662469d414d0ce16f746c02902fc1773970746 226dbc7f3b508f247a615f4c360cca8e739774ef454ee407cac1327a1d8ae992 000000000000176933d4b8f405372f3a6f5260eb031c010507777f9c74e3176f +112400 000000000000bd01b8c2832cf69064a660ec2b9760b66ca5a670b96facf5e017 01539a4fb323a487c3d2246abc19e7cc6d4bfbf91838e6e9a1e35aaedb4a1dee 000000000000b7201af58b0479fb01b8ae5f9226e245fee7454d50e6c249ac1e +112500 0000000000006322f9774ed2ac87a61189f9d16bb13dc1e9dd95516a44e59863 6026e946a82d0d30c5569109797c27b69d9cb476e7c3da9fecbdb1ec52724403 0000000000002b564b3f6d4542703aee13fecf7ad8c176dc1be3783ca5688a4c +112600 000000000000bd42b923050c7c79944b2338fa2e32c2c56bcc7f75f378ba2420 2666f2ef582327808f733542f01c5bab43abed838156cb781f9fbca746f033d1 0000000000000cbe8601a082a4dff349ede3c08bbb5e152ca1775b692084710e +112700 0000000000010ffc1c7aaeb79f576d30782547725a5eb9b78731f604c9fb24b6 8159c94f3b41ec8f0e15afbe43d27363956f72f0c36ff4ae604a2a4c9918905c 0000000000005b739573e152b8ba1e311f0f1cdc5dcbe9487b82dcf07126928c +112800 0000000000001a89ec756daa7751c9c5af672141f7923d92bb12d3febeeded1c 4948c3e0480236dd43fbcf615022aafc522ba1d593a9ab6e503603f8d6c97c85 000000000000ebfeede77d5e888d4b3942803177553f4cb037357f2b5d74452d +112900 0000000000007742c0f9d2a36fde1adab08d922d8b42bfaef29044b89d5ce652 b5798254dfcd026109ac4400f71807c17609557f8a997be7c913cfdd7d56eaeb 000000000000205eb144cac7a02c9ebafc3b5caec6ca995d975a18a948994f25 +113000 00000000000032775da8b166cac99dba6685a5b582216bd94da0a820c07aa3a4 f8bf51e0ab8202b8518ed2a7575f26916f19846d43ff9cbff07f306e08292a04 000000000000182ebfbfd8ba68597ddeecb158b443dd71b488f6e37086e9dd9e +113100 00000000000076168ca958193e0b5a901cf0c37331e2073476119326211b70fd fee238526f5ca2a631538da91adf1f56b0b8fbb25131212b844f713911aa9a42 0000000000002076fd4bd9d04cb61f7f8d28cfa56c76e30b7d1433b2ac6e24e8 +113200 0000000000003d0367477f9d22b93f4d4678c8767437096829a15c7738852a37 6e838bfc3dcc701eb1f0972232a61b4cd67410d786818c556062a7ffaa57eab7 0000000000006528a2053c6c065b1d7ab4ffa8834556114a8c7792f52b4a283b +113300 00000000000005acb2285e4c101848bf631382229f10a5ec5e15033c166d40d8 d803d809975fc4a8c9156d6a1026ba0c09536714fdae9e9ca9c29df4766709a8 0000000000009d9d4f427d0d66edf84c0edc8c61ef5b694cd3823c7ee42c8599 +113400 000000000000d67bf18376b5afc0a5039d6ef28ce169dc173db27a7e88666f5b fd6c801e65cd0a34320104875c6ba08349e72bc523181e706516cb25b5a8d2b0 000000000000d00b85f5bf8480006012a6ec6705bc5a34a8038fba8897499083 +113500 00000000000019cca398fe0a4d6d4fffb2396596d4866b933971b4c16b5bfddb 92d2fb1fe4d1eea279952ee42f875d87c6d83b64384ce654281913d131153341 0000000000004e6835531fec9a386cdb446fb5becdb6ccb9d09431afcef8f937 +113600 0000000000003292bf54dfb86f2eef66367a77e026e40c908ee1081e895e6092 d24cd3edf1cd139b3692eebd33a100d8048865cdf6cfe7e008a2c310561232b9 0000000000007c1c37d3b2add4c272c443896083bb2bfa9f149005607ef7f536 +113700 000000000000cf24be17ea96f71558543cb5bbb0900a2c29a49dd0981b0ce68f 1e636b3cf203e383e3bc12e36b5fd488343870a38d88a59662c50bcb96f73589 0000000000003023387d50fc07d9981508557de8cc71a5070ded5d9d8809d80b +113800 000000000000adba836a98aa287d5503dd3ecd84249f507c7bf885c99f548322 dbdeadc390095646214a5064050e9d6933bc3e68e8f839a91cce96b2778dd402 0000000000007f004f15982f61db7956c3a5db647dbedbc3993a33ade9fb59ad +113900 000000000000c10ae722e371838c71557782b854a0afff3b77515db7f468f232 0d9c88b08a5c389b037677c7dacfe4f427dcd03b9d2a66a42b4ff78167f1c8a8 00000000000053e166af69013dad7639aebc88c25ef76f0864ab5c193543c2c3 +114000 0000000000003195a1e6dc48a540264d37e9ef79b552bd78ea4b93a3b6e7e449 c52e73b5721777a5c47163763504404977f21ffbb314775fbefddd4187e332a9 00000000000086f38ecc2a8f8dff3bb9e1a2a642e965d4ad84e5c00e8cb7847c +114100 000000000000335127a847f489d76b0f3d1947f765e7eddfcc46b2ee6d4ea040 f29564f78efccbb96090e5aeb6f3381940faa0c8720cfb4d063c11ce2614e8c4 000000000000b46f3c47b337e8b5488660f9e96d1810d0f8acca0b9d18b140ca +114200 00000000000058dc07cd2b7ecca3f024a03b20db3ed806a592028e76cafebf69 328b1e134947b67c5e3d1b8adb1360e2c1f0e40767137293821bd4c9a0570118 000000000000a15473f12eae7165df7a0531bba908cc5f5598a8465790894659 +114300 000000000000819b7f5ddc6c8b6378f209f0eeb317afe23e5f29fbe6d775a85d 9d54307d1a7afba994bf4d8021c554e5eea8071ce43c884218e81ffe5cb9ff49 0000000000002eb20f09b5cc6ea488c63e0a785dbbbee068189f57d6a60d0568 +114400 0000000000003c5f83c5d5265ae0904d84067eef09de7424f3747248980df77e 517417887de30bae80081f585ab38438f57ae4460db7b2525a436b6e58ce19b7 0000000000009ac540ac6db87f0e9958920512d2c37a571cb9c9936313398945 +114500 0000000000001e52cd561bf2ed0c2e64df51166da412bbbb78f9b4bbea00c3d2 ecf42d0f787ce7e790ea2aa1d05ab1afa793546c58785b608fcfa7ca61b1d060 0000000000008f3fd2f1b0849a1582c9d64d0b6a5fe2da51469463f3f81b076a +114600 00000000000092c47035291dc77faf10a8b928f44824017de73ef68aba3aba7f 55453246c329d1b60d9564af83acffcda59092310177f94bd259e607eee4ffc0 0000000000005d61456f99bd118b16c0ec6be2d61290d01658d1a10d88eff4d0 +114700 000000000000803d87f7aaf80a57a57aa5eeb52828a06be5adf2509fa252aa10 f58b866ebb0aa1d4c0404645126e550fefe29ace3cc5eca0ee9fb1a0ea4a4c3e 000000000000d75107521c9c90a1e75e273af700b6dc0922a5f661638c8772b2 +114800 0000000000004036d7ad29f775eae9e18f6cc9d282d329ff029f9072f4589662 aa1c1216616a2c5afeed4b6ee295b8709121770e08ac44cbdeb1f5dd3ff5885d 000000000000b40ba8b97da1775094c718e5e7e04440e70f8b8f1df5bc2702ee +114900 0000000000005dccc0048b232409d130c45e29170c2a3bb9503676e7171078b5 a7120be2a897898eedfe65f4dd5aec3d8ef4186e283a0cea55ed0afa17b228e6 000000000000a31ec1ea4c5d9e6e4f6573e37a97dd3db52c76f1ea3c7c587edd +115000 000000000000e58392f3b59350e72cdaa81655460a0bd5547319522702799993 1e1d7fa42296a12ebdcfb037d15f1201f63964683158b87406312f6b85b7b7dd 0000000000007f51a1c13814ecb9698f56b91b2599552d7c47ec1d5b7517ae81 +115100 0000000000003ffec6472ca2f3b58f9d5dfd8e3e0b8a7686b8dafa1a311ac7c0 0f3686ca502f668e2744530000c77da12dbc6e6f657e373b75856f4485e54a45 000000000000a686807f7193607e95c7df037ad6e952a05345d7a493e5571d41 +115200 000000000000bd862ceedf1ddd92764bd91ba4bb06f36f7dd7a7c5694ba4a6b2 8dcf36906bde6fea9afd3f93c5e8e60bf3c2fcf9951ae01a238656fd48597cbb 000000000000138929d184a14f679bfbe1efe35bb9931c5f96a8efee22276a72 +115300 0000000000003fd0733f93db3e13f53ca668d5ea8bf3bb69befba5b1185514c7 5034bb50974c0807fd84bf093808797361837e7e8d42ac74842a58a47f208085 0000000000007510fe781531d402a82fc8675d805ff26145eb2679781698a749 +115400 00000000000058b47d2d8fd306883a1f5ae16b6205276acd26e64a3ee273fa6c d3bc79c1b2ea134d87ae5dda2100adff33ef6cabaa576ba7518f506fe21dad1b 00000000000037b268a9dfcc2a6f1e8e5b00b6339285c4dfeba28db0dcc68206 +115500 000000000000d3b249606ff59a26d258141687d3a88a1d6362ca7196b0587e82 b5b0662229d612a0b045a8e1abdb3de9aacfbad7afda61573fab6af0d4e38bcf 0000000000009b59980ae6c310d53fb2a99226f4ea8ee0f881756c5249652fac +115600 000000000000bd47eb600d6d8adb5b9c42d01ed0fbfd3a6f2eaa6879c6ff1e1a d257986a7fda294d9ca271fd1b58092dca4284341de482e84923e8c9d509f9a2 0000000000005712d89c405e32674098df539c2f038d5c7a3f92d5fc0d68bb9b +115700 0000000000004628761bb22fa5871afedd661c802395185de13488c26f5790eb 863eaedf0e19b44bc93b51816768a571a711d90a00dbb234bd4507d7ec75b963 00000000000092494e8890e43b6355d5a3438265bd190284358a853cd3275447 +115800 0000000000009964c4c46022d9787c6cc6947d03f098e98c60e5fd399517688f 4b0ef11dda23af8520be16a8fe541349bdae3ba1b46bedd656109ee708eea28b 0000000000008f93b2efac1cc32cb766badd66df4e92ab61179582dba26cded0 +115900 000000000000479a4ce82b5912b52b5a7933eefe46e72b8041a99cfb20019746 3300ee91ae66c8e3d74af68d3e91cab37723286c873bc05bd2ee5a81c486fc68 0000000000009a14aaef1cac6a9a9d1526ca2b4d3d625e47bca3ab33db85a776 +116000 00000000000007ff257fb2edd3fdbd7b00c127a66dae1288fc5e26c402d13bf7 fd0cff2505d972f056864073f1e8e7596d4ac9558e6ac4143f2cc21862de4131 0000000000009b84d74ddd7657bceb5f9705d25dd29b5afc5318a3c689472a73 +116100 00000000000065411fff4820e49ec49f2cb88a9ca32167f63f467f7e617ad49e 4aae3b498e10fa97d68b0ed5c71ef28b7beb356572cb03d063fddbc095256db2 00000000000076fee78ae3e7ffc05305fb8571ba8a5db9a9f90506a7d3ef9536 +116200 000000000000f1d697e9398b391fb7f82c055cf82275a34476e79082ccedc010 e670b1798d12792cd8b4f1a3db9df6cef46d3002e32c28bdd8532077852feb94 000000000000cb6eb309f85c0ff869bdb6579943ee00a4db3b559c4bfaaa8e3b +116300 0000000000004d16919d8d7c06f6de2e928839eba4cd004bde3c5f884dde4dbc ffeb8e03f7d4c02b2acf372a304abda23b5b39c6102d88521bf7c0a096166694 0000000000002feccfec1d1ab6e479b307caa12e88fd506c2a267ae89b1081bd +116400 0000000000003417beb349dda3fcbd5a96ea5fc9edb3a8695f159dc2b21d5ce3 b6fcd5fcb73d4b68f5c3919ad11ab116be5a234c6a2d1a0e3d2734e4a9845252 000000000000c096650f7ae5b31fa1ef38b7c45c210ad6e2fee7795599311745 +116500 00000000000082cfd1645d87c7b939ff0f84393962bd703cf48cf80a192e1d20 9cd9a0d7c539ffc34f4ac10198f9e93bfe4ddd8b5978ba3a03efc8df3ea88eda 00000000000016d7ae2eef19a69429f2eefc0823147479eca8a0c640771917b9 +116600 000000000000f27619ad204369218507f6a7066d5b3b11b49c08793bcec576c7 0e342e84193b51b7bebd12f487702698ff8c4bde67855f0449254c90ecabd124 000000000000e2e5fcd47fb9e200888dc725e619f59f142a312e369f113de248 +116700 00000000000014308b79e3613e8a44ce128c7bcea044429ed05d477489f44521 da45c12d0b8150bc2ca6ce769e080f9198edf7479b48ced28b1130bf386f762a 000000000000f016398e7dd02b239467c4478334ee459c79d486e1c878a96293 +116800 0000000000005ddbd8a9b4d0497851d7f10327e7b90a245a397e3fa6b4e19f9f efb6882f0b45f771628a0b5731b2244d6cc7dcaa0249bc7f3ae49b626582321a 00000000000054bf249846384b3a84761ea8426378edc37def84f22885a6ce5f +116900 00000000000093d1c86c8a514f2f13564b739628dfb06f48166816aba2edb77f e9da8476819dc3bc3a7a4559412022eda173f6a52b134de287e2d4409f94ac5b 000000000000a60233c462a3c70deb8eea9fa5a7c62e2cc6ca568b0c08d805a5 +117000 0000000000001c78105335022027226fd1d4547293c2598b2e145dd96ef78505 3488347b98674e2d6f239cfe9bd3fe0886ff1b260b5eb3b4673f57f9132185c6 0000000000002cc576dca6b2d08d9702ce50e8ce4b666960a8bc374319457722 +117100 00000000000093f0e35420d98c2ddd3d02c4d50bd1e809d8fafc3e2bd468a424 c165d329f39de0010bcb3d60bffa595be59f4d7bccfd6643f27d83751193aace 0000000000004319070e4f7d3a5e4fe928122155555a883f437a671eb3840108 +117200 00000000000010ebeea908506dd887bb4065d68d09f342bd1774ac7610bffdc9 093a51191e627e0802e142304bb01c53a98f48fd0ae2a30bb4a38f71344f859c 00000000000085831e0b7ba49f0c3048993d1d85505a055af668676080387f69 +117300 0000000000007307c09f13327ff55d472b3968edca9fd4e8d20fcae5ebac3617 c2441c7983e5688cdc1d63ce911a96b9fca00df59f915c064e138cf27fdda6fd 000000000000c0fa258c433f6c1a3af9d88cf8eda2040b4bc3fa0686598b8f60 +117400 0000000000002b9f9113b14a2cdfff43a803f211b8d99e9628610f0c9b18e914 b05fa0e6499ca018650e152a7b1986e7bf6200b0fa3c2161a1288c6340ea4b0c 0000000000001bb19b4deba36c4c2e13bea940c36115b3004a1beecc95ff80e2 +117500 0000000000002a271c9d723d7c7221648c7d64bd93e24bfbfd54440726b791a1 b9f710ba23e2134c0a364ba96b8837fd9092503fc51d3aea5d19df6488d04b7e 000000000000943972f7079d75863b2732179876ed65726bae871ab6e6a149e7 +117600 000000000000361674f68680e304b78d2cfe786508b4adb2f41585ff7329bbea 4147f090f506d1b15bd32ca3658ea19647418101e6db3ed43a158857c8655060 0000000000006b5aa8727a22c2c4afcb59dac35bf2d644f24c3ab2afe6e4d9d3 +117700 000000000000c37245ecc27645b7b1918f9b3e8cc2a14697b7c4e8992b71342e 76364aa6b083387c75a3fdc3ba2c538a0f768415d24daa495aaeaf5c08bb99fd 0000000000004a41a8f8dbd02e814bc43a65cc693c1c4296d71c81a3c4623381 +117800 000000000000578232c0e5a895a87f5d7286c479a9971ea75f371916ddad6c12 2121db96b43ef70501102f28ff3632857b87f19807c3c68bce88a65381197ea9 000000000000503faded18be3428443f95146b1b4fcbe766425b06a706daaab8 +117900 00000000000011de44f5c1f660e0347aa0fe3a57f4500f8da487e45c5b52a35e 2bd63c4348aafe8867b95eba763ebe8a27d6b50194d2b852e5e409e04d3f5fe9 000000000000490468ec8a8d14dbeb8c07c3061fc7ffcf949ac1c02d18d4d507 +118000 000000000000774a7f8a7a12dc906ddb9e17e75d684f15e00f8767f9e8f36553 3126c064af9033dd1e87de7a92e43d3dd6b3f25629bf4e4665825bce85d01ca3 0000000000006013206f2e7e1d5694b0b4272b89229ca3f9dc2fa4ee6d19c4c4 +118100 00000000000096d726e2c0a688e525e281211475a901b88e6cdc1a4bcdc5110e 8970af065ca5cf5f24c82791aa85f7daf38a65fe85a3434b719cff8ebc21cf89 00000000000065061358d17e10037eb26e22ede3abacaa144e21dea8a54d82a8 +118200 00000000000050c2c33d368dad544ccc07c1435b7cbc85ee9cf6b1a2b953ba3a 74a24b61491aeb884abd2d93c89f78ec290bb4fbcf43edc19cd35aca85f2139e 000000000000c3d1787f1fb537d2ecfd7245deef4a4c2d8185523dde5afc1fde +118300 0000000000003277c3f6fc4a65825efe4ccb84419874e0f7646eeba452f3e705 1493724d9f7077628fc798c7598b1993fbd28cdfd59f2b7da00e264d0daa4bf8 0000000000002cc7c1dbbe9a29db72c80a638734e0922ca7e7b6bbe0765d067b +118400 000000000000ad7568a1f314070d4dcb51f5324b996c66ba223a3757ebe21d87 eff55f7d1cbad81c9ebbeaa735142f22688beb6b8a7351dba941cd34af3dad0b 0000000000003f5e57bbd4c304160b42fdff28a68372407faefd1eba6fa8507f +118500 000000000000b7aef9af63a97bceffdab174d09085034537b0523c7ebf624c5a 1f08d6454b5bdf68d64e31443e558d33beba893b3e600ede3421499fd6370d9e 00000000000047cffee21325667855fececc700dd6fd9eb3e1a7129c99a82b40 +118600 000000000000110f1dd5756bcc8d2bc233b2272b78eb8c5b0c1f7cf125c97b49 203d3069458865c686cb92d38ac59595f398f74786a234bf5558e296f083ed37 0000000000001b697dd8f12d872ce8904dda607a8eb4648e09111ea21e7c31ff +118700 0000000000009ccadd6fb21182b99d8851dbb9019ac5149559c0b95e4c4a83df e9d0bbc4195e4de57b561a7e87229ca892532092e1ec3ba9a28eb4ab8f75b7b7 00000000000020304684a71d9b8a736c5088d76fb4c6d864f04bcb75d2e20fe4 +118800 0000000000004bdf73028c2610712d404072fea49fba7b2f6d0a535341881cfb d07052018b3d89320872879d163146df3460b69f1ff5543d94a72f4ec687f0fa 000000000000ac0a2ef28f55e35399df72ef57e6c889fff44823c327a0d581d8 +118900 000000000000ada7544c3412bb1df2027aaeeb06ed57a492956b91959ea03de8 e697b4f346d30cef008bb134eab06336a51c2c67029c893fe24657186f1978e9 0000000000006f917d4897ae4340fe5449e6e4244d8fd9f41b4b2a82cdca2ce9 +119000 000000000000499e09bdbe9b99dd44e202e5933919f578d6baf03dedca727d35 949422d9a3c1e069955897178f0992b6570945a9251786fd1ac3ee313751c23b 000000000000ac313a76edc9930c19962b2c594573eb54d2d703337fcdd7fad8 +119100 0000000000007dfd609b7ff123110414cc81c2f868cfbd0d4b17b8d73617a2c7 c6a532bd4d3ac693b6075286e2535d315e993e1962713b626120db6a3169b7be 0000000000008b162afa33a337402eb94673083ef4a3db2d8cd7d16f834a29f9 +119200 0000000000006780d7f71b0a1cf84be3513ae373ca9741bdb10831e9892f5baa 03221b6ce372be9948a1e999fa9cf5b7a69c8bad100148275c0945832e003f8f 00000000000028a14fc2a83f529c63d648c92b1c7416f8c72aca415e9b8b38e6 +119300 00000000000024d8b30b59cc164f5454b48f4c50d0cf088488bd85c6aec66f2c a6b27ff92dbfc24c3cedcf7bcaaa0750eb1e9384bb00a20a48b337ee167cd9f0 000000000000ac50b90227e65fb7db25db1f4600c6844f9c5fce73270d622adb +119400 00000000000009b9a521263681a3645e28a4102a142e67944ea8a9ee2eda392c a750351a66ff8779c005fbefb0a337a2801731107d21386c242843a75c2fba2d 00000000000063b946e655044d24baaf92c577058cfce6c8b5a9877e7bd5e6ef +119500 000000000000829fcc84f32804b145554780afdd64f158414f914544b610ee0d 9b41c8af86b3e6f1793a9ea5ca3e0faa478ef6c2642551711fd58a8fba0cbe7b 000000000000af1686f87d247d0763ab8701aafea3dc0896ca720edb972a2cc4 +119600 000000000000ae5ec05f0d8644eb0f0fd5b311dbe117bb2052d3d5e1d2f1ebf7 b171c5afa3f0b5153577226a305cb1e2aa70339fa8ccba7df01ab219656fb2a2 00000000000051c71d4dcd37e2baa7bea88b7597d24a14d2b372f4f7bff5f7d8 +119700 000000000000a2b546b34abeaa11f0a53bace542d63b5d605ba6b890c58ef9bc 3cb16aeccc8b34f73b2509989c235b77af2c6dcfb5cea144d4b5dfa0137fc30f 00000000000082a3906f6846d8dcf98d5d7a79eb944a777dcbdce4e622c6b226 +119800 00000000000087a9e18d9a62f87222cd3a8e10298880fd61f57a1f9abf4cc57b dee78a762eecd4a1b5bf0b37448415465413d0a1c4756cf777810437047321e8 00000000000039535b0b20dceb85a53f8e46ea22ab559b4eb26e9ba4626945a5 +119900 0000000000004a08d045812f4071d45f855bed0c11a09eec8abb2d02171b85c2 06fd0dbbcffb501cb2cc319f1cb715a1ea732733b202d922c989b99cb18da3ab 00000000000048d2bcc040a28bdd9685ca1454c3ec3fc4849ce7689b8dac49b1 +120000 0000000000000e07595fca57b37fea8522e95e0f6891779cfd34d7e537524471 021aedf56199fb102c49158e5432de8030ee49ca48960433eeaaebb13304e0cc 000000000000218e1979853b278e527b6c447603942b461014964c4368c27482 +120100 000000000000b46d228e73b260b48d8a3871cfe46cdd5d94b48afe600a0f9f71 29d476212a08324b7abf97f22e88cf6f19744ff191204a3257f66c811445a431 000000000000840604fdda12b89ada4be9c389ac12a4d899337c6af0782619ae +120200 0000000000008458979f4637ea80f579f030a824558a03a12714d0af9900fa70 7c2cd4c0bd4d3de4e22abb02ebc03f114e7725ad8681ff49debe8cf449c60d9f 000000000000a0a91d011e31f0656096b18e0bcae100abb24b58cd364b8d788a +120300 0000000000003e8d5bc3e06f7700568fa032a20cd789c10d352584952fae671e e1385ab6079cb3034f2ddc36b2160ae4b3493000ff48dabf2111c91193833cad 00000000000031c69ed313859b9e6380db52a026dae23db88a690072e3c9f22f +120400 000000000000a649121b458a3611d6dd7941e6d531ec51156c78614b94d5c0c7 dab11d4b200545034b03d8550fb3df0388173101db08ad61bcfe99cd5a38db06 000000000000019b0f776afaca4ad8fc05d3f2012ceec19c42890c49b646d930 +120500 000000000000613c29b06338f06a70dcd32042405a2a9944e2f8b6b61fdc35f0 76c1d7b1dde2106c2b276a3e1b3bc742af95679ce4616a15be16a13248c26f4a 00000000000008084b1b02676df06558d5cbaa636ff3355355f92ce8ddec8f69 +120600 000000000000879a6376bea11ffaf2d89897004c3d7ba8c96c0fa8e3de737629 232f685a659a15dd5a64e18026a06628bb9755bb2bf467773ffcc6d71934a652 000000000000885b9e32f504fac3022a553f606014f1833284d9e4d3eebe5527 +120700 0000000000001a63a5aa32481dbe1fa9b856df9a403f0dd53ad4cc1a9c6c5360 f0f2b15a0796d57c731ee273ede8c56bc45c0dfaf58a16e22a8c6291a538b2cb 000000000000585f9f2005172c8a584f821b701ea3dfe3b90b3279ef95a6f4cb +120800 0000000000008375e2021cfa4caf29f319ac4eea3a317d6291d1b54a481e7834 898716f68bae6ca19c0d298b8a5290bd171fbdcf3245290adaab91a41a983a07 00000000000087443fb1d09b0394d34e7cad961a585e9a0a0e08f5581e4c5988 +120900 00000000000012fee0a7f7fa5696567419a3bdbe0011a2b68ab4903ba2bd1eab 7d5dc59b9e625163486431edcb435eb97b589be406a891eae7c572a829dc1714 000000000000ad2ce42fa38b264e81a4e842353fe9a0bad14951d888c0bee7dc +121000 0000000000008addb06debe0ba6b11e220b14b2b531750fda710b62bb1d3d706 308e100986b09cd9d8895bb38fa20db4d5fdf45a9994bf6e91e5595841b93b67 00000000000087390012d022582eeb5abe18f817b11dd9a89be678c0ea293dde +121100 000000000000177ef47ee4d1b9ccbe1f18e5b58ad0c4c067c889a149486dd327 3a54c9daea44e46e2e35415036f7f4b3f7c5a62c015b16ca842df494335c841b 00000000000095015156b62244ae673fa593f901c61904ab112928bac95525bb +121200 0000000000008b09a33ac1a000745bb9cd68dedbe6663b8959d7517224c7f5bb 7828bed5549775f838190218d746a8d63fb7818430803fa5ec0612c3169cab54 000000000000518332e48d85ec4e751e3a4a0fe5924beb01f534ea9af313b2e5 +121300 00000000000049870666a81076ce7d6b447491e598dae0954a14f83e5c021d7b ff10a89654f3abefb08e387edacdb5512f81d532192c9ade7479abd61a232a7b 00000000000084c9d282ecea44a13e885b3363800ed5165ff86e589947285989 +121400 0000000000006fb74e83091e4af7ad8d5718584b73cd6f9eff8a665280a14947 042c8b30d509a08fff054bfbb780daaebf82d8004f0e1e992569b181bf698ff2 0000000000007195b81899c85c41ea0ed36184ac5302c30ca2cfd5e7e2345952 +121500 0000000000001514926f085cac3f5fc2eae6be6fca32e85a06b0a132a30459d0 d3ef348c63cd531bcfbec7bc14a3c189a6389534b3e8716d695b326379c3fbb3 00000000000076925af6ea93922470f22c511055f03a82a1993e332f11ebdd5e +121600 0000000000008f0087f4e342be4643b2951f7b364601ce778b8ab6c79f563474 07b6808343e96750b5dc663f6f63e6bc6d21b66447185dde054374a028f481f9 0000000000003f887b9343368ccc826c4d82355631e88182c58f7e0824a30dc7 +121700 00000000000016322421acc1f13a3102232128379bef109d10e8e0f7df8e86ec 1f851e4b0a090b8dc7892cb29c49510484894af47932eeb05f1e291069982a6f 0000000000002738a3d2c37eba40eb1a63e7a32421fa4361bf6012c59ff6bdc2 +121800 00000000000040e92e86c23da6a588de09c25e7f7a143a88890367d47ee1bb3d 9f9d8b0403d7474f004ae431ce66ca5a58be48f40919947eb701ced8f421070f 0000000000001166a5fa905088a2cbf1cddf96b9ce7b80b56187b8d817c6d451 +121900 00000000000015ba37b5884964b2375ed9e5de80b4826c4f2c3ea90245bdd41d d984d9f1fbb9c8f61b28f181b72285e3bdcc1ea225792d61afd75aaa721baabc 0000000000006a2a9f14e10e0e123942ebb8c2ea35999d29b419ae1e58738112 +122000 0000000000002fe5f29af38282ac1c8f4ea2bf8a0855946150130419491b6c05 cbc0db790aab07360e0f70698d4b6836710b4a455a7a025e5aa57e411849df2a 0000000000004ce89031692cee278dc09e09aac24fb2ff514fcac80e4013a911 +122100 00000000000042b6088aa88d0234e53b25eedf1ba2780c0949403bb9fe9a7329 604ff94c7211f06602078c1fc3a072618961db7fc4189cc0ba16201d91359108 0000000000002c317a8f3417420f60850c56cbb10b3f1531aa67770d1e41a9b4 +122200 000000000000549858509265725ef7df06d3093ba205243ddcf94d2b1c50461e a3eff597d476ab4743ca230f057ad1595d41b198a92bd2898899899043f16d16 00000000000030245eb7917b67c95574a36bd6df31c895431737400ec41ac0ef +122300 00000000000090e005c70f525af8f60f54fbd16104fccc11d09f05932121f133 e92a25a517e33ff9261ed2b5bb606f45c56d6c67f6d1d38b20a7a3414a4deb09 000000000000846033290f65b9eea94fb69418ada66270df42bd59246e140ff3 +122400 00000000000002b7349e9f66a0647caf479915c47789a987731c1f7f6cf5346f 6ce79b4ac2cd2d508edfa1a597cb2eae4c5fae716816fcad05c3adfcd9a0dacb 000000000000338dd673c60446a939464756a37049cc953696971ba3098037fb +122500 00000000000001e588fbc21b5e0f9ee387924ba0ac382d8f0ee645117d10303c ac1661fc05f9580848edfe92452157fce789e465f8026b43c3855b2844bd99af 00000000000085d6c2c755381a86c92fabc620a4524e614c345df84b71fd9887 +122600 0000000000004a16a9abab1a3f6a0288408216312bacc6a40f202234459ad948 fb9d83fddb988b9bd01660955579aabbc6496d0230489547ab590fbdb74eb3a8 00000000000097703eb3d5c4330253e43e316429e0c22bb6b01eff44459c4888 +122700 000000000000517b82b3b30cacc099db2961231c3630f1d5b2eec1d13ca1275d a9767fbbd46958edb26ab31523c648d29f0ef8752c12cb37281aa87bb4243356 00000000000084cf903da023978db36f07c8571ea41a10bb80ca29a59cc28f2d +122800 0000000000002528224df41ed781655eb376744d481a65d0c92874ec332b84e1 c80c19c37a2e4eba6ee062ea9639e4ba6f2cd29f1cda11ceb88d886919bcb787 00000000000081243d9e57fb6477fee6487d12a21165b7dd3f48ec39e77c768e +122900 000000000000621d24653b86c6ed7eacade0f2b0a968160c0a92721517d5db1b 89e7ee251e9d60aceaab04a988436bdd7ac558c575e921cfc0935fa507cc39bf 0000000000004f15b7de4a3c007f7c764daff682aad7a1bc7be5e68ca78b4996 +123000 00000000000069b73594b10aaa38beaeadc6d3f28cab8d76c4a6ac182694fd41 59a50a8ca8a840ec92d4acca666bbb13d12d977dca6ad798e21181f75372ac27 00000000000020bc3da483fd21f92f69eba87698826759d72bdf30e980da1f61 +123100 0000000000000e1194606998335c5d5babca547db3d84168f5aef36452077cc6 c2603502c609e7f08f968431dda580381687e94b2cf7c7488e9c5e680917b706 000000000000571d247720af09e4bb2b85fd9daaa2df7657cf56ee530caa2ac8 +123200 0000000000003c0bb7ed07c8a59d2f6726a037d0ddae2d54cd1b8510cc7b2247 e432c4d0e012237615e578015db168b664a8cca22ab852000da4f2e414a655bc 00000000000000821d43fb425e72a93edac4ee418bc975505771bf04dd456e1c +123300 0000000000001c9ad67d1a67cecb7c4f7616ce0085d86fcd9823adb5a4879c6c 1accdd765088a3ef61be8ceee8c363ba86146b4066bd58aa143967d074780667 00000000000050d2156b1152537ac23132cea841eb033ffd0ea6b006d3d2fbc5 +123400 00000000000000f0f1db797325846ec571b61727ec1b2bd13a7433591106a94c 6bac9dca594d3b45980d936065a1ad12f1536525f3bee05666cfd73cfb950d99 0000000000000856210a80397f8101ff93de8efb936fc3096dfadbd02438d19a +123500 0000000000006987b20d356c45d93dcf1c559d3013df28b251e3790e6cb279cd c372eb99a5e992d9031df0c58d43dc8da110d5e4748bbff70383f820d3d3ab90 000000000000279affe19851b3941187a380eb20e576a44ac74f98427307364a +123600 00000000000008161e5ac4f0f4ed64433df278f5dd0fb7cf9b422fc0e4d24bf8 0509d986a3a03802d8b3ab48a022cd62442accb31ddd5d2ee46fd159dd53d142 0000000000001cbd4a04751b2298e3c73ab59faf0de3f4413209aa83e1c4fc32 +123700 000000000000415dcc7583e49cf914e166eae4753f9772cb32145c42c7a568f3 f9510148bcb3e0182ead764059cc167a839aad7682cf22a6f95951d837ce4660 0000000000004c8fa09984079d1115f6fd90f4d210945bccf163a53c1dc981bc +123800 0000000000004b09977b4452bc2f5e6b33e1dc0143f3cd9a090e799cc76ea867 e12fc368846844f5708b5a90dd3c2b8f2aa70022568953546e69c32bbfe36f2b 000000000000488b3d5ff6fef0873ab9fa8b74dfcd12d38ab0958240d7cd8274 +123900 00000000000062b727ecda27173017ac99303c6c7bfe84a57d16eba44e66d922 8156a13766ecca058444369c5148d4b90993804ffc66cb4d12d3acc8af6a590e 00000000000052d89ad443e4d48d01f0f7fc0de58151378cf58d7f5e07e4eda8 +124000 00000000000023e9a0523cfac29afe07a07acf81e273cd892c51ff8318846620 597e724366fc04f83c8d133e6629de0346e053206ba15c81e9b4c4b535882681 00000000000021fb283d1722b29e809e80e837b89e25d159362166161dbd0fe0 +124100 0000000000001d6b70ae7186be1e95eee721c3b931ef003819df8c26142fae90 211dc3a6659f5c86abe1653ea3d7fe37d9ac82bc44014d5acf8f64b9346bb3bd 00000000000064d2f22fc95da555fd418ec12ce67da084ff66a1de506cf387d7 +124200 000000000000274320eb952073f4f1db434f1d6b6b63070700bfd45189caadb0 69f1dcb144366f57e74a0dfc03222cc63bdc236d9efbe5375a200839218b735c 00000000000065bf3c51ab27fd2a8379654cb00e0abf6b54a546bbb5f69e8a08 +124300 0000000000002f6d2adfdc94dc3bd8cbb3a8baf67f35e9bd16b9c95fea7410e9 2cd5f9e5e1c98ee1f2cffb2e1a80a4b7a57b710f5c14765c055319bfde904a4c 0000000000006810fc135066c6162b18c9ca02605bfcb2a1a85e90c3476c1000 +124400 000000000000572481367b1ba1f5a871838183c510c2419590a4e1ff877f3e75 5cb2c3037d7ceea8cba8244088df514058d69f56235f924effb124f0ca2caeda 0000000000000457a15d1d72099da0d64c908c20d88ec34438e117ee378c0fcf +124500 0000000000001f5b7f86d2ea42c64bc41b2052941f3e50061038174af7e76ac4 b07f01785f2e8d2392671a5d0aaa7e33546972ae11d85733fce56ae9eacb2e2c 00000000000067150d45fc2669d071c4ea898f0c020a37ab79c675d8ce4a286d +124600 00000000000028dcec47988b70e19b7761215898d93869907b5a72e961a51ed5 94116f558e15896b4d33834e449eddd24c691ec691cd04579b200e9065ddb665 0000000000003f52e5b2ba9f820b7d7e25d18b2d34ea8fd439f4cddd962f50f7 +124700 0000000000003bc6789ea0a512f69b0d1f6f1b0821b9933216facd4154a1838d 5b0eca39883cfc8e6720cd67e733ffda8203946620316494f5952a16f0ef7620 0000000000000edf51e3b776e85c1bfe5871ecdddd712a1ead72ddbae7b516b3 +124800 000000000000126ff19d623fb898f15db39a62d2122f10d3c42eae7732445cfa 045fc401f70989c5a44877c91d2d95a395b2b53713ed9e03715173d08ec5dd4e 000000000000125b8ff07b1f7cbece74542e38ce4ba570e809c4a73f1a0cf8aa +124900 000000000000001fb03a83f633a0973747dd9526dbab1d0a1c0da8512d39dc14 e51bd83c1ef0881fb6697227abacb850c70a9030d273db7d5a55e499acbeec72 00000000000058632ce262fe4b9ecec9e2f6c3239baee1c3a2c92bb3ed0820c7 +125000 00000000000042391c3620056af66ca9ad7cb962424a9b34611915cebb9e1a2a 5210b932f8199e8306adc1111b682b881a398bace8ace901d54c0953021fcdd7 0000000000003fc97dc375993b8eb6324cd5c772fe2ea9384231f6c9b69b4163 +125100 0000000000003ddac149ecf9a72e69744201652ad405a0861d08543f43b165e9 1032bfb4911a8b2e2049cb3853d0603e01a3fba6caea0912abc4e0553cbb59f4 0000000000000baa3f19eb0d1168d6a0558fcd09338d98d5ada1704aaded432a +125200 0000000000000770755c8f06c145f273e70530ce9559bb561289f951b99e65e6 d719cc9a2b5c15a7b3d229d516a6c52a7e59fc21a3622837e91e88b05708cd38 0000000000001166add644cf911e1bc1c53f05dd4a968e2428945a190744ad73 +125300 000000000000252297edfa2047f8743f9cc987ebe98995f01ed0c3c44d1b574d b8c767f1f11c0cdf789899b9f3838fe64e304fa65bef0e462cd330479692ce7d 0000000000001334cd7d7c2b46239efe5451e9b9eb9c2326db47fd7e0cdf549d +125400 0000000000002522f3897c6becde23f2d1f246274edfbcdec1aa99ffbeab3ed4 6c9265ab231233414ee4615210987483bcd362ddbf5a08353c3c0b04edf2b951 0000000000000cbf2b6bd7b12960172fa78eb8c7a40df7f6217534bdeb682fca +125500 0000000000003d46a48941799daedea70611d9947cc0e282dbe29c4ea346094e 72bcfd89d8f176db34fd6c6ee008cee54b9fbf0b669c2b18d70b1098fed06d29 000000000000030ffa45846bc33fab38c5eca2150894dd40a072ac57f64f5272 +125600 0000000000002ceef932557b9b01e1956a84d9c8e3931b699e3e8a22b80a97dc f1a9ae82bc8f5f4d096ebef2a929fba3236a65255120ffc6ccd6a3f1a6b9ab78 00000000000022a7444d1a1be38fa208278cf52df06b26b4bc7e3da18cc12c86 +125700 0000000000001ec39abbadaa52a804d254796c4e1db55ad906dedb2e3ebc7df6 08a83b1d68058f9f577dfe966860167f7a37f8d94347881d416922fddb982e89 00000000000005bcd8f8affbe9dee24c90fc3ad333fc0f3dfb97855ff833efb6 +125800 00000000000005bacf89beca55a0354b961b5126c96dd73b807e80a0eb6c45dc 34cbb53663fa893fe818e030322a5d1aa1564169b1d9238c94314bc262ee85fc 00000000000028b96c9030cbb7379f1747f98428cb79b548147cf1129dd1c97c +125900 00000000000044370c6bfb757299702a60da665d66e9b7a237a5093d8cb33c8c edcf53b29c1ce2bec1c1ec6ea00a55c2f0496473895024be2d5f3f79feeac59c 00000000000010f07e98bf90b68d2012cbc7cb6ea579b4c7343cdee6474f3885 +126000 000000000000166b7d480aada35af1e6f9a2835d68f9c2fbd272073dc6c9d5fb 2329e4a75c99f5ce4717b003416235ecc66e06f82e698261e95e570b5007ea69 0000000000000205c2c2b5aa7dbe0bccd98bffd4af38f9c38c0ba9aa8df704eb +126100 0000000000004484f2a41e2a16e7e60d06d6c675a0c2af31c3bd665fbcf6162a 67e04053e79ad1bc28eacc1371ff0bad69fb14e44435bdd4aeae135423c7d560 0000000000000e16e410ca9cf25eab64f03a60ad8f6295a62aa31036daa258a5 +126200 0000000000002ebfba4a73c445c2ad8b8c264e73fa9dd269106639bc8aa8417e cace74e3371362dc85b16fc4c682281a6ad97700ff9c64e0e0b26b56558b914a 00000000000043331126330786cc87ce9b0017f0e48e43b211d49ed5250b4a55 +126300 0000000000003fd549a0fca1eafb61533844a65ffcf96f6bbec05c8a69d98620 6bea7fd5126d4a9193004311d1d260aa8cad4a6124929510c8eb7f01bc03e46b 0000000000001e00d89e56527b0c9b2ac031a6c21bb64c5dad7cb3f7323729ac +126400 000000000000443a397c099458703e381557d45881bdbe78d50e81919fbe007a a0c20b74a51f50aaae255f8bee01381d613d0085f0a4c5a9e3f4c63bee953283 0000000000000f9ddef454c312a8bccd9baa808ffb9773755cf0ab867331e742 +126500 0000000000001b0448b385b0a2616852cb8c16b1d5f6cc63ef5fec74922a1138 e5591a4638249bf17e13b74a315b5c129fcaf9ce12cda6a256114efcd519a6cf 00000000000036e9d2ab127a46e4f7ae58ac304cd54bbdf0a79819e25e0a9ec8 +126600 00000000000002411e38f987a8c45a64548943ec9b4e87077f4db1788bae40bb 6afb939f8bb68c1b01e296a2cbc12cef1f7d080c796ec39e41095afa9ceb6e98 000000000000020ceb92f8772990decc3484d92c1b1321d12aa0b33870424243 +126700 000000000000139ad4540d0412b70d606c313e221135523ad421121387f8473b 9ff78a506f54a44f596252aac3564f9cd0593a0d9c1578d5e6b8bc423807234b 0000000000001125742d8b55863088b91bd96befc0671419eaf1dfca6acfc435 +126800 000000000000199afe02dc91754286ec906e094d0308ed30ad0434f6233a7fe4 d7db088c3d99884f1f8ea687d03f85b6600f6d5bd8545e6de5befb5b6091ce27 0000000000000a39d68edabb9bfad51557baeaa051909778e34e42c5fa14fe33 +126900 00000000000034614737c609d49d00dda3bfd56eaafc38a50bb2c6639d076cad f66071a712325ff6a9c82282d3b69b494f01691c7864887bf1b9868734796af9 0000000000000a0a2ceb6b8f5db41ec898b1d24a7789e2a7787e15847c3a45fe +127000 00000000000019ebf04316b28e56943e697b142edf332dff9faeae22e29dba99 d928fa83f4782c1ad46ca222a2b697965efd3cae9be59adfbb5163efd2595cd2 000000000000311021be9b74cac6dada9f5e9266aaf9b933940e269750273064 +127100 000000000000052ca56b8add1abdcc3d3d9c0ba52dc636d89f0bba1597769a18 189137881e9f9f101899a717c83a83d9ca418dc7a95be2867a003f8ff6ef5d3b 000000000000114c155b28ce3a249c64c9e46122384fc48ab1b32533979563bf +127200 0000000000000e0d00862ddeffba0fc474b77ce1d39aebdf0a650cdfc0ebb297 eed395dc693d77bfdf1dad3419245ac2ab2f66ba1d8e73b58ee8a9dc5e105a62 0000000000000f216acf7c0cb137e36c6aa1899eb53bd2455d129e1cc8a4e978 +127300 0000000000001ddfe73332e1f5932ae1e8dc264219d365185b3e116311b93376 7dc42746fc1dc7f9ed2fc216df3df28a444aede3a1d7792fed7df6c2dd622303 00000000000016857be2a1f77cf645819e48dad9a707231c0c59a2d0b0577801 +127400 00000000000020449c862044e15eba2b2b0c9d80a0d031bc86457a82c8e60f85 073a5cc96566d2bcdeeb3df936ec0b73615d855d618e8f7ee6ca5bca0976be0c 0000000000001881199cc18aed68c9be6dbee59830239765a24afe8dbdb4d278 +127500 00000000000011095756da3548c943ce7250499947f78d00cc3ef6f48ecb2ce1 788b613bc0a708c733cc4b8120a3cce11e3e6743e73c0b6fa3a04597cbb11011 0000000000000013dc0d9247d7f197892531f6c42cf3592aa88062c49c91bef1 +127600 00000000000025f691b7f6aa88ed1d7fce0eee74efd20c4a11e2685a02bf62cb 7cc06ff7cb5134216033a44bdf80e09a04bc2159847c77b9d6771d255a71993b 00000000000015e59e32e239aaecbd37548ea0d15cceebddd9f17366137ebd82 +127700 00000000000002a137bc91ed879031ce2960f29e6312487442e02f91ff1385e4 f6eb15fe600b011577039dc0a2ef91ebec2a75809513dcfb92d47c8ea9fbe17f 00000000000013c370402dd7e61a04aaedbe36545392bb0116edd80ab9f7f978 +127800 00000000000010c9885df440bca294dfd5ecc4ecc956c0e90d231087e2f23f53 0e6255652da7cfbf6ba8914ee77dae5d806e4ca60adcc709218dfbada1e46db1 000000000000003cdfc23d65c87110963c6d7b62076f6e12af40993ea32cf30d +127900 000000000000251c76a3a7e21eca484a9f70ba7ff7fd6e592bb111462d8e6072 4b6e8e1cb032858cc6f37bc6d6d8864dea144df9f5f311d1deec7d6702e15349 000000000000186042e76c6274c6db03799ca0038de6b6485e5b67573f076513 +128000 00000000000003b8ddd8692769e1965554a8bb030863e0566a28bc0dc952864e 58be22d7b76245dfed9c28db0c7bffc7fe2fe5ed832005ae16a87c0c2112f06d 0000000000000ae8912250b0d92a9fc63f021f490b8e359d01ad883298f99c06 +128100 0000000000001fcc9a750f063766b23018b82b4b6b19bdbe95a55a64959d07f1 717d47ba946c69931dd9ad986e457fec71088be468f18ebe87d1695a1c94aba3 00000000000023352d6a4d3ee2fcfa94b4a8071cc9678747f58e6831f444ec97 +128200 0000000000001c305598c2c9d5eac816342f036e31139f86ea6fbd26d4f0e848 1b0409046145717db9b1f994a91a4a70e903afe3ac04a499f99a6db6613b015a 0000000000001175a05700ed42a7a6110fa44e557c324d8b9daae73cb5c48da0 +128300 00000000000012c83c45d41ee29677696193c5eebb5609618faef1daeb9c506c 4b5427991614e3d9ae664ca85e8f2faee0af8220221bbf36cb50cc10626666ba 0000000000000c7dd9b48515fe3bd6d8a41f9984ba0c3dd11a5309cfbc3dbcd0 +128400 00000000000018359e5d441408debfc9a7ff71eae9b2165dd0d6a1f937065557 2c6e6d4aff11297a925102e079c036154d89055c963fd9575ecc56b59389826a 00000000000021a6748552958bc0b7608860299b6f4cfeb140cf23fd8b4864ef +128500 0000000000001efd5791bcc29a59e24c25ad4c8c35d5a6dbe050aae69e4c7b12 0d382c98a04f06d15c538345f115122b1bdeaa32a217192e8ec31b0c87678914 0000000000001888f9b61451b3d72f852729c21aeb6f71267bb5437dcabe3186 +128600 0000000000001f458b584aaccfd8efaeadb9222e4390b3e87fdaa5a9ccc8ecbe 40acfb5d62feaa716e029325b40886d489137914adbaffc854d512c87e2c9d63 00000000000008ea37461767aa58c529f8f6483cf9b1e784b2de24c98165c918 +128700 0000000000000bf33ddfb887ee6f31cf888d38ee5671317a1143d45cd3d28b9f 3fc4fb896287b09d023e629442d1747b202fe7d96294ba87e066adf1cf0484a2 0000000000001ad22e7c486a7ffd5db26fd982ee71bbd17fd590d3e8ec8c8cd5 +128800 0000000000000225cf04dad9ed66fd789c24330d8c95a1f8e8cbe82611426a47 c54dfc07725da176e1a2e2f98144627ef228d29932e31ce4b18040f226c4776d 00000000000006618ccf0e32eeff612e049017044a1c909dc3399ac9cb307848 +128900 0000000000001d004312af91362c1ffeab94f891d6a007a78c64dea8dfd2a1ed 1620d2198247420e2818decc82fc1adf1f85441908d71a7dadc74c4934dcef2b 0000000000001ade6d3bde45147517dc520503d90c6d988ab227b3ab181402c7 +129000 0000000000000b85f08e4fa7cea9dbd1a7ec5ecb9f644d214e3572e214b570a7 e15f6d02f15d8a4b3956b8163106555e1d47ddd11bf33a0a0a5e35b7823544f0 00000000000014417bffbaf300bb1d360be148a897de3a5914319105166c9e46 +129100 0000000000000d2c60ba7301526c95eea1e821e464013e8db08efc7f1088503a 147285b0be62de4ffaa8f2d4b851e9145b2dfb3a3c335e3ca69950fa970576ba 000000000000084db654528e237561d9d9f96059421aab2546d6a297aa4a1f9a +129200 0000000000000c35365877efd5cb4ac783d93477325d5ed4382c99f10edc3f18 fd4e8e27ce1caf40cb3787fd8f2afcc3cf3d072302884ae6124f8528cfd9699e 0000000000001b7bc14e0f55a2b0674b7d34f9e4e887ee8f9fd0ed9ccd902e18 +129300 0000000000000232b932a1e9b31fdbd568e9078c78f1e68158480ff02f616f84 19bc3e281ed5f109fb4ba58797ffffd43f624af525dd71b9b0df4f0236a22f52 0000000000000f404cc3a74e653b620c32d01de90a6b89dca4d83143691bc62b +129400 00000000000017601fde84f330befcb3c8c3d2d70b8a2ad52aaabb898f2a6d37 42e825186c5bd747abecc5c07da962e1843836192f2d9263a2ec4eb7d2e2d65a 0000000000000b3a19fdf5f779a0dd93e18a26e21aa2fea9f18563d40f97de66 +129500 0000000000001c427502ea512cdfafd30504eb6651bc4be72e2e528263f778c1 0d70afc6f76df18c28107127e4a922fa033d979c04a84b24e4f362fbb22f6874 00000000000008ca2aea3c2b9e760cbdb636a9551918fd6cb41074c7bf9bad1d +129600 000000000000103517ac0e423f881bcb09bd67968c1ea0ac258a9a7dcb0d3132 1c1e4d24ca6acfcac7d91997f0f48c2379d38f05dbd54d08112ba0bfbc94f09d 0000000000000bdd0c0500e65bd6368728ccec4d7c0e080b1408d6cde9bedd10 +129700 0000000000000e0c4963b942ee4c90ff751e5b3a5c353f8342c39cad047ff840 4935cd55773ab3802001c38ae97f502d924bb093f291b862f7347a0662f16cbe 0000000000000d818aaa480a1d494bba7f1e71e6626b87238ddae86d3cd892b7 +129800 0000000000001cbb8057bd77d1705133cca34d2e88cc47aed13803bf7efbb98b 259006fdc465a94e1b088babdeaafdc9ca6ab16f33a69e56c766a7332a3d9b7f 0000000000001a7f06cd9efb48b2a69779d13080d99d7d87ebd230edf70cfdf6 +129900 00000000000012e5c65c0591fc65ef854c1bee890526048256ae563626575d8f 8e32860e2e671587f2592b8d7f5d02382d540aa9f6f044731e157315d22723ef 00000000000009e4a86eec5f1c9b897aae92958cd20b24bd854e3118a122253e +130000 00000000000011906b491883ab0f16f0e690b133ca860b199b775c3cf6581c21 72818a4227bef2d7c09e2e626400aa066701382869c4d20714ff976a48d44846 000000000000012f983ccf25fca1659dc99a24a455a60a7fe3e848475a0b67f7 +130100 0000000000000e756c0e0883337d9dbfdc52a9b3acf6b413f0836e8752a161f0 cdce14131a3c276c1f5f9dd501ba9b18964135333bb5edfac970a135c40a8fc6 0000000000000501175b0f5f1df03aa3f65b9f269477cec5ef1b8fa8cc1f7c19 +130200 0000000000001903187b3f62c13ab7f0e77e625a5f44e3ee53b7707c08c52577 b720383d9d966ef6ec2c13767106c2f684380de18811bac4d1d4d0b2b3bfef92 0000000000000ea40d112ef8634bdc6ab01c4cee87860188a00b2c22f97a5eac +130300 00000000000015deb891a05a917edfa87de07c9cf36ff81e41d6f0bf5b1d6f38 cd933ad863d8bc12f94edd8bf643cdc8bc45099d200d7dbddfcebc1055edde33 00000000000013f14987b26cbc28410538431b85dc49d64f8c03aa65b1ad2d99 +130400 00000000000002001a34e42f3c453cae7d2b6453e08fcd04d7b9737d256ead0b 89671d126982d7e2ee42f035e49c03db242750e6c0f86d801e61ba35faa2d3d3 000000000000025051ded7d3a685084b3a9c20078291b22c0d9ac335028be7ad +130500 0000000000000f2c8c5b7acc4773401178c2bd401e03d0e4feaccdd2fc654072 486fd16ebfdd17fe890dbf4fdc0fedfc37f4ddf04de2e4cc5058abb810f42b84 00000000000013fed2c4e91ea2d4258672c3ba7e14e9a9e29de02030de754a31 +130600 00000000000002f367a297de1f8aba3bfb46af38c6ec9f6967ee525802a81f56 501bbb88c430c854e7687e1a0fedbdb2057eaa42f4e94b07c42ec78854a213d2 0000000000001c6260d64fb5e10691db6c5f107f1ae80e10845da647d186ef60 +130700 0000000000000eb7bc28fc431de3a10df60f26298946f4eb2a65e02f325af46b 562dea1c98f06e7398fbd701f557981d36a2ff0d3a921a4be067de1ac4e41eba 0000000000000c2fb17dcb4ff7e0b8d3060620e95453313a6602b5b7344d3a05 +130800 000000000000138d5d5071b71215be7f9438590169b0f2dea29a88eca4c962e4 d695610c2fa6a37252575b1427b8cc3ab5d40594eb37c278dbb312b44d4ad3c9 0000000000001b11b5ee4ae9f8e3d87c2610033fedeb5ff9653ab75b0ddb35a2 +130900 0000000000001b0aacab477b05fbb9217439d3a49225ae3898b5d88b97395479 b869acc617b26f1e13b3d60c4d0f688ba1d563fc22f685c6282883f1e317ad58 00000000000016af460d34214831db7c361cf7d9bd711c22b798a83e55b0827f +131000 000000000000143b8959d6db75bf13d4f4789ddb0167888d819eea3d413d82a9 c29e36afcd9eadc17f5c71e45e558441dd33470db6a0091426be32036eb438bb 0000000000001046e4b7a63f76bcb45e62e05868bf59155b0aa552440633faf6 +131100 00000000000010a4272fe7701199567499b8db4224f6f787395ef649d765a0d4 0c3152e23e8be8f77c1cae3393be5bdfa5c564a049bec0ea7f04e97cd114b999 0000000000000aecd16c3a17edaf9be552bbc2eec2629db8037322a4f723b8d8 +131200 0000000000000b7542b05601fed20f0ef46895d8b4ee54091a8d49db759283cd cd6871c0579d02d11f89238586f9583c2dedc7ddebbc4905b165b5006668c206 00000000000000c7d069164c8820c3a4093adc063d9b32e66cf8a3cbd5b1b039 +131300 000000000000008e02cfb5b9df130496b876ef1666d48be12216bd3e47eac940 eca221f2e7a7d20e8b90c631a06e20ea4d695a0a55fd8b6ea98de21697d229a1 00000000000000322cee8a774b3bc50bd304f92ee63a7d8c7c01bc9e71f182ae +131400 0000000000001044ad23b02bb9aea40703d0b5aab12a4eb200988ebc25fb1a43 272dab63a3d24d3984d938052797d3f760ed6dd6116dcbd874bcbb8514dcec83 000000000000123d78f8c42baabb5c53f98458cc5da85493030a5ded72b6b52b +131500 000000000000006bf0e3810f147c5280892da51b904728921baa9522b90aaa0b 0114e43f85dad7abdf762b9c64b83df24bd5fb7855743061fbb60c33549387ed 0000000000000ea7bc02bfc86ce7060d926447371ab06df03ed1e13645732d0d +131600 0000000000000ac9b6275dac7f4d0974615d88f6c176dc77de9d65dc60655fed 65a9c80793e0bcf8b6950031412dd1b4501efc50aca7e7a391883b0fa06b74a3 00000000000010447950df89ce454d523fc0cae1b97c04f1c7b3de2cc39223a6 +131700 0000000000000d904ef52b4e628b3b7073f06189a8d4fb218ecf65d1dd891563 5ca8e8293970983d749bf826bc5171a0d7bca8863eef096a59d0a2d5605bd16b 0000000000000f650323d9d8fdd3855ebba9543df9a8791c8d4c50aed629ff51 +131800 00000000000011bd74717d7867500e54afee0c1e6bf5543b07180577e35c18eb eaf047ce7a8ed434445a606ac7dd1c5ddcea0d4c480bc00f2584425b678043a3 000000000000129266e5594e14b729f1062c0179949046054c80604c5d5450cc +131900 000000000000052f2444ff4ac073aa78543ec8d2b1c5078ca816a540c24ed2ec f3414a1d17e6f4bd37b543658348bea5e5d81e802fdb1215062387c635d7dd7d 00000000000004f8251e6ff5175de04d75f9dbbb55bb4a4d52109a633b1ff313 +132000 00000000000000a7a0483857f0d951983ff2834a47c38fdcc22563ac0f8f707b f68d8c8afd8122e32513ac9115aae542a85ac7437fef7371156feff8592e8c62 000000000000029054ecc6a343125f6f526f774c7189caad04bf299124acc2a3 +132100 0000000000000711e288932bc1a01fa6e1b120f86b2594a6a9c3e4c432363a08 42e3b645275f9bca7f17985145fe0d453faf486a9fe538286ae7881f5ba58a14 0000000000000dd95358cdcaf75cfa8cccb27955df9b04628fe197729dce9954 +132200 00000000000007b4fa1ede15a0207c76558d1e8c20257945ed5837c0e9c0b7f9 da3c4e83187336d35487ad6218446cd4ff6a80c9dce52f2dc60b66378c85866f 000000000000087bf95394440739d33fe7e1e6b4d4682a4c5b30e9783e8e86e9 +132300 00000000000002bad2836063fd794b0d2141487c16837fb7d0ef1157c32a1309 3a13413220255e53bd44c28d0f85e5cfbc4dd7c5feb353d21ca316febee64a7f 0000000000001260989f97d0c7833cfcb4aa12f31a54b93a8f6259eef2efb8ae +132400 00000000000009cbc21e8a499f23171b0378bf50d0f13f375df8c59ca38598b8 04340298edef2749968323f7ebf53017ea5792006557fc010c4996ee454f8dff 0000000000000cbf2750adf8d9f8826e52e52e0260efd99085b6de563c6059e8 +132500 000000000000112cee76a5577b4124dbedf2ba0c882f5e6a7a898f853b7c9791 c1e26b638dc9f2a741433ea5a2503ec6404cd7d837ab3b0b174474deb0de08a2 0000000000000681b858b51080af14739f21685070f72a183c66be3d9ca7dee8 +132600 0000000000000e2583a45a36838c3527799d4b570be1efdbff66f4c9e32d99a3 476255bf5866041ec615d7b30a66a2a8f4571fbfd49c78e8fe323afaf1087254 0000000000000d54560c73ed2bbf8aa65ae70acfad0a710c26a51eb14443a5bc +132700 000000000000072b730f1ca0681a3279a3c1c32a488bf146b005c4327566c0b9 b67dc2a1d7a56f027996f120c4e796bdd136b465bd345c21ede980bc28948d65 000000000000091b392d5057e549c0a1dc216eff768e934629ead2fa73b50d79 +132800 0000000000001214acf5b4c84b9f7170f168ad667eaecc03fea5265b0cdb9398 f6b7f1ff3dc59939fc1d7335854e42152dc000cdbb09bb1754064e2ad6e5de84 0000000000000df42b538904cb22b26f00d6959009fbf30de0385ace8cb47a8f +132900 000000000000035407f0f3ff659ba9ff24c5795879e5e4df80025f94c98553b1 321911ad673f780d97c84984a1e29ca7a2d49efa51e5b3cba3d0d0c43aeadfe0 0000000000000b98f64952a75334681d4d6dcedbffd5a7e0c2f8407168433d1a +133000 00000000000008aebdeb747bdedab72548e3101cc17da53301085ba6362852b3 a901626dbc4fc8ac08ba7a3f25c923ad877c47bee9e32295ae94e13f4adb6b0c 00000000000006e6202ca911dfdbd4a2918719bda2bd111478ffa6a9a1a75b09 +133100 00000000000006af8f8d4ff3af5efd6225170728349bafd506b56e4f2ba072b0 10588f2890de402a60b3f6acd824266314ffdb3978e75f86ad47fb600096359e 0000000000000597ae2d735cef492637934571fc5cf87da38b4ae24c7603257d +133200 00000000000006ae784ee6d1c61f2943d69d2493e0a961ca37fd5e71bd60bd79 de175ab1ca912712f0e6f262797d786fab954dee2aa195ee1cb5babab98832b9 00000000000007949a8fea2cbad1e4ca6014a820729f7cdffe5617b2fa317256 +133300 00000000000002daa2f51102114bcc8297e5bd5fd8415de973554d06e68efe16 00a2683dc13861690db4725fee4cdd816b1fd6671966599ce2d51f6d3d2b8e2e 0000000000000a870461a3fa10520373488e8ab0d934bad4ff9e1750d07399c0 +133400 000000000000098c76291c6c59474d88eef82ccc24e531ad9d5e670713544e82 9fe48bce7ea4762422f72871371ad3a61eb870d6a88f850657ae76e65586c816 00000000000008f312e5342eb88be9ac931e6aada2d41a4510a6b9d5cfaa57e4 +133500 00000000000008547ecbf9b155e62b1c63b575be223349da86b3ead21fca710f 3599ed14f94df01a8ab44d7c2586456ddef9b7e6755b7f1f54743b2339bd2cd9 00000000000007327214ab99afd6592858af4436f0065cc89f59f9793109fcdf +133600 00000000000001c2c6077e5dffb089a4f02611231e6c7a84ed11d4090ca2a3b1 2c1baa766889e258db2794bc3710ebd5682bc88f23c9fa99bf9bd5ebbcc7c863 000000000000097155d833d5160df3c3bc604a8b8568ed0b2980b6ce8968099b +133700 0000000000000bc7636ffbc1cf90cf4a2674de7fcadbc6c9b63d31f07cb3c2c2 eb1e7230147e54cf9383630045bf35df3fa58857a9f2b3669730566db752249a 00000000000004ecd261ec0d7b0d5f06f36576222ac3375f236d5240e844a482 +133800 0000000000000b5cfd719453a424cf2067ab49fe09bfabda8d56e5b91672d765 7070b903c993a682d549269a36f9ff9137246c9f5261f83eb5c7a94d6470a454 0000000000000722f37776d128cef7ce9e7004b1baa33b7b86e28321f8d4bb43 +133900 0000000000000c06fe5c69c528d83ae1997c48dd3532d0fd876a5b522146f18b b50c2691800c593531ca8ec22e71f56308702747b734a104404edaf063423801 00000000000007a8c031547f73acc80414ee4f1bf4e6b9d7e28e5769b7e593ba +134000 00000000000007e3e442ce1423496a064a7c34342ba98be164ac0c9f9b872213 31d1e81bf4cdaa55e93a13384406d92d0da752ecfdb8807c2d57f41d8b339e33 000000000000067ecbc0c0a94418dfe5fc75bd6e04473aeef9b53973720f1679 +134100 00000000000000408af403d759191d976bb708fdfd9ca46776e3861d96fdebae f34a326fb96fe4195946812bd01ae0bdf918b89c17aab89759dd0282f37f4b12 00000000000009f109ee377ee1e0bb9b6ce02f1f33ffd23d258fda5342df1f0f +134200 00000000000002e49d0f77dce5d360234288e013a8ac4ba72e02615c855ce8ba 1352b901b8b640999e5becd8e100046fde45f7a871abdfa436992c98f74ab563 0000000000000249208ff8092e5f014a8f01499de9146ffb5e235bf632aa99e8 +134300 00000000000009c2389c4826c2b2b404091652333f0c934c76c070e22e2b8e92 6ad8631bcf9a27ed1a80a0a3184e78f05d14c01f8defeee1104e32b4a0e20eca 0000000000000bb8a6737978579510f5a9c8835c10ddca73636d7c3c4929f379 +134400 000000000000051b6be6b8b5c7404ed68eeb47f2b3c8d6955c43666f261c3f6f 819bcb87025f614950321155b3d336f9b58d3d2d471b733e9dda6c69035f7e67 000000000000071ed3d2834bdaab882933a60902f6f5e92aa8bbeaea36c5a9fe +134500 00000000000000241123ba5f49ec423ad3e3a380abe9e4a1fcd699dee8f577da ed6bdd77e55262ae089959b919f71f1994de15a60ec568a40200b8bc6fa1f0cc 0000000000000085efa40d44472865ed0ac4f0966e9c33dd328d4c3f8ff78789 +134600 000000000000094c1afab9c2399ce28cc5004870cf38f03f156b10aa2d58f78f c3aa36c3f77bc7c1e453b974b781387c7b21e48686822c8ddc5f70da89891542 000000000000002235aabd843b08a7050e95b3be46087b9cd473823fdb7373dc +134700 000000000000046c2da63840f64ba7e290be206232e9d48f1b3da1e4311692e0 cc572081a62c42e17ff31b47f2afb66f29d860f49ce702c0e7d81db547415e0b 00000000000001dbf2b9853c91ffb88719049abad42ec1aea7f28987007c43bd +134800 00000000000002ef93d8480b08d1c76507ed692ac8d3a88ed1d2a498f5ccc106 668efb7c1138b1ae0bb64e1b687a3720509a0a5be311f6d66bcbe3d77705ab59 00000000000004879fe2c08bff4911c4d00dccad97f77438ce0532920acd4092 +134900 00000000000000411c4c8466b1c0fa8a740e7f8d8b7c1be762f4e4a7c7544641 796a3587cbf48b76dc26377e4e7b12540147ce43144adb565b75f293a22fd745 000000000000007c040ff9a1d0534174e2d61d9d86d362acaf5f4bd394e61632 +135000 00000000000001bf349e3e8195f95a080ea17efe012cf7f512664829f9d3772d 548a16f4c9caf55eff2cb4aa7435a3bb5ad482c3f660b76c933633ca55b9b491 0000000000000275c9817fd5998fee63944df8bc4e473a4717173d98a5ddb64a +135100 0000000000000ab9b39e61cff860ec65e65738fd2faeac5acbd136676912a7bb 6ca8935ba362ceacbc3d4af3f240b98f31348c5e9928352c2fc01363856e1131 00000000000005ac399c70a52a3a3c9efbaa853aa46ce1925dde3ed69d6acd7f +135200 00000000000003558eeef20d861f9c0c1324ec18f8dcfb49b978cef8c39a7576 7c44e4b5630884e8d4122da31d6fa07d75f9d12748b58c168b31ad71191ea5c0 00000000000007a88718752afca443e279c0c1d3f08a51957a449829ba544748 +135300 0000000000000335efbad45a991e04a6bae82e207f754d4268efa3b8e0197c5b 38adfe4a9404e9272fdfc8eedd89373e055e6ad74ee3c9e90633f0438819a438 00000000000000759a4df0b56fb026c0b06aceda55da5626385a230e7630b962 +135400 000000000000076cf9b166f3c23e4aa6082ff4a93e187b0f7b97f977f593e6ba 77d183e1e8e6e5e2573f04d522954c0e91e14e6c55dd39ea1cab7c278d5bb1cc 0000000000000a753b507e1a96d77a89cc8732bd279636bb892d0114dd794496 +135500 0000000000000599a3a74d17b6c28e0608f33bf01c53ccf14e916e8ce88ed32a 048e2fdc6ba0860da0d84df0735b554f21a9e0705edeff5d40793857f72e4f2b 000000000000094a61e01d2545d7ea1275fcad177e893016fc26404fcafd9ba7 +135600 0000000000000a8e4ddad1a2b266bf701eb225296a16a32696e4d85c843e3e1f ef28b2b31e70ae4b9a2ebcd01bf007a58ec4c96efbbd1861e7a306b4e13c6e8e 000000000000039e2ff1f9e93f7bc6606782ac009b59aaeb5559daee5ac2e536 +135700 00000000000007cc2ea1690ba3271d5ccb56651dbd997ce54fe3ec0104df9337 f7b388d582a8d704bfe06061e4dd35ef425fb638be8f165f9e9fb973f13d86c3 00000000000000fa5dbe6cb1c8a9e9e7146d694719e521866498dff54320356b +135800 000000000000028b031d6a582956fb9ad96732b6ba5776a413e86765f3aa24fb b8828052174a610cc47def116e800dde29cb60cca089e3808af0e20312955d50 000000000000012e9924c4628a8cf8f2f2cad86192c4dcb7175e3f91eb0fc317 +135900 00000000000003dc00bc3d775c54a668a43bfbd5d65d70c766846bd424c9631c 98c6317fe2cf45a60b2d74aa3f710af72e1188dd51bc7a31b8c6db4462176442 000000000000008bde22d58c68640a28c4e521823f3d7c931f1b221f2360a2b8 +136000 00000000000004da0d6d69fd474fa08fe2ff3111ff1e9e01f72899dcd9d897f0 d8b835bb216729ae07f6982c43f1b339d841081e74404ae7e169f2f4562ef5f4 00000000000009a3aab1d1d5c4f1fbddf45a3c1d0484fcb5f0773d0755f42353 +136100 00000000000009c87758598ff5162cb9afe71cbf52bd8efda74506e08f136930 fa436315acf8de71accb230664b53a19a6a35b4a403fad2ff456d2ab4dfd26b7 000000000000025152d740308eb9622e7cf88bd76058fc6e3c881c5caaf82649 +136200 0000000000000892224bf7504dacfa3b74b2df00085d88da6b6fb2365e1ca08c 7caabc89075156f10f9373e0d769d97a87b3f8a76999e896168a4d1f520e4dcf 0000000000000862b21ab851bb559f902cb88268b5b9be45277013f39548edcf +136300 0000000000000a794b67b03d908876384977d6e185324924a21e2134414845ee 00ebadd2596540b8fe5f4bca332fd5895f4746ef11e57d8673a9e777b10a93e0 000000000000041e3f5a977518eef2717c0313db4546f74d50572626911a2513 +136400 00000000000008079751b074b5c8c5e36e40880fa8884e5ba791586d1f0ffc63 cf81fd6fc38054cfea32b1fc525e69d647aa56f521aed4fa11aa913399643357 00000000000007d8626314648c1e13c766123513f4a808d8f05bf1ec475c8c31 +136500 0000000000000184c56d3cbdcca53198918f1cd553ac49beeb9007f56bad1eec e6566c3e826527a8bd9d507d4c13058281b2d055d6cc10cd8c0242e247e0055d 0000000000000ab2cf3cedffdd0c13ac1cacf50228610adb5e5331e4fc004ce4 +136600 000000000000027d0c70f5409ce688b84ec6b915bb06d8002c4972c6ede4fb88 39ad13fb952435ead22bf9828464b5f1680d099eb87ef37bef05c882604f183e 000000000000047b7b1ca5869f16d313ee6768f444cdc4d3565388cc47ab94cd +136700 00000000000007e7dd440747c321018a8c10b3ca0388cfeb6d6f5daf97d187ca 5f41bd855b46c156ef9b599f892c6bc2feefc12520828a378c98ceb36dd7dcce 00000000000006131ff35e7f259b16c56e23b4541f21e92f006692e623b50e75 +136800 00000000000007f32231aafb64bd044b902cb6d5191bb9b8a0bddfe5c57e6938 e8bddf10d6ff51187b23a75edaddadf2c43b4af8fea7a837b5c6eb7f15341b15 00000000000006eee923de3c5de11bc21f29a831b3eee32a50150834b40eed17 +136900 00000000000003029803109a1da4c1ed6f60fbb48555d1e7e978d2d81aae8bac 33526f86596f7bf976102a0dc27e60460cd2d2e099d269aacd91f05daa0375a9 0000000000000436412a6cc9c3cdbcbd28b6b6223d274cbb037ac30d6f9823b4 +137000 00000000000007c0c0ed00db0a4b2ca07bac088209d8484dfbdbb3cfca52013f 5a0410db2fe70d2b891318baa95e2ec7189d18a08bc689e61d28a514d1b24e48 00000000000000dccbd74876d3133f574e0aa9585ef4e9c056ad5d09725adb68 +137100 000000000000006f44e492192214a298b72f2a3b733954da51d71ea9eb415466 249b5df707d42f2499227d11ea0a3b2f46d2ffef15de293962c776eeffcded88 00000000000004a50d6ec93e98bd1dab4ec133354d71313b4f4dd90a958089a2 +137200 00000000000002510fed4381ebf75de2cd6f9ed643772687843d907d4e205bb6 f5cae4d0cae01a44262a45c029819ed195f21f6f459789a0e7cc9cff67cc6616 00000000000007f0c28b4987e9e0cbcf0eca4b82865115b126a49efd6388ba5c +137300 0000000000000029d1565035dbca3efa218dc8fb219b1a868802074fdac9dc1e 9a91495f095f20fec56fa36bcb680cee400facadb56d10180e5b2a7c579343c9 000000000000038854ced3e312a83e5120df4e3ef88db903dfd80db3f7c71053 +137400 00000000000005bc9903ca88a90aceadd6683b8e2fb49428de865a445ed5f889 10b48f09e8c2f2a51d8e7f2440e628caec8f326de67728cb298d0578da72a393 00000000000006efd27c2f5bb246e7214b00715a2743791b0740e0a4482a10d8 +137500 00000000000004bfad597c3a381f1c60612e62d4b70f638a5e3f5099e5265d0b ca96abd9c4f27766459793a16c1c6997b19791db3bce76bbd9c534fa88e744d8 000000000000068dc2912e453f5ca068c5e20017e504cfb2b88b6918b70afc2d +137600 00000000000001d9899113a0e5e42f70c7152875dc777c5148e9828dd58e2917 8f063b0573e041dbc0041bbc5d95984efff6590ff4575ddb589a00eeec5ef1d0 000000000000095414d2ebdeadfb64442c2d151cc5c305ea4b3c12b8b0ddca93 +137700 000000000000033187ca5be26a76add150a8354ebc859e0bd0cd38438e6fdf9f 0e1bd31dce028c08b8aecbcf0e80b918391d1003b8b9373326c875a3a2f653c2 00000000000007695443ecd712438f3ca1984f75e9aabb20b93623d567ae4cdf +137800 0000000000000615bf1e85695a47abc79f6598e0d67636ddba259d59a0394289 962294e0f6664c9017ff483e7876893620bc8e4b78c3d4c8eead13da56bbefad 00000000000004e5ebc3d05f4bc4ffe6a7fad8cf592ec40650414bd5d89f3b48 +137900 0000000000000592c3fc573014e8aafe52ba2996a74733aa807d647bca2e2c27 7d0e173cd742cbd24305f79ea740da42bf6e1556d37fd2d39216ac9719ee2341 00000000000002a7e4873a8d4a2fe31366316b9e3e07d058f5458a2bf1b08d7b +138000 0000000000000044c7b6a5511c0b2ae64ec545abccac8053f31cf7bba23bb886 4d1406ec86fffa45190441990eca0a0edf49e611d52a1258b78a9f8b2d044981 0000000000000285b609d3491293ee7ad5e3fc3155d0d59b066522c752e539cc +138100 00000000000000876e2a8aeb2b4e5d6434993d1eb1fbcfccf02f66b40dd27e2b aa66d261c5985cfecc94d288c21720ba87b40f63993a332e6559302a9c5ce37b 0000000000000272f8911494998d3f9c29a6aa05261c1e79cb01caea27b2a76b +138200 0000000000000471bece4a96ee78419d7e93e2a1efdac727917421a491361c27 b024e73a4fbbbc3df2f15cb3ac32cad27bff4980d1eae95968a1d4034fc98ae9 00000000000003d608443268a16f590a16f3f9941a67f70d2f5a7597e1eb98c4 +138300 0000000000000093dcaae4ee875c5496318f0ef8fd23a8b24c7318b109e1c05e 7775cc218b1d9f07e168ec38f8c10828e8184ccbb44567385286ffb24ac8f4d2 00000000000005f66242fe5cf422c38eaa3fa3dc926d825a1265e7235909ca07 +138400 00000000000000d50c5191fab43e4bb71b3582faad0f483dbaf17e56df76f34f 47b793e05f412a5fb585ff664e9a274acd3aff4fb89c8c3cd79ccbaaa81fc08c 000000000000036f9107f5b73c26431ad7b1e979a1acf2ccae1d2c0797eb05ad +138500 00000000000005f8cac280bc20cf95982c110a8d3a7f35fc9cb308a454fd6094 b48fdee5e4cf7a7170e8c7a4cab8260624e4bd39b7ecd6200b479e69447fdee8 000000000000033595660076582f68eb77cec69881b42a0419355e911c13401c +138600 00000000000006a10da4baf032a0d7893df81358391f59b6bb2764aeaa0ee3f2 ec40d2c907c871ba3dd342992da6832944257f92e6c20e213c22fabd52cf59b1 00000000000002f740dd2f156bf4afc050e9fc03a64ce967c54826a18aa55057 +138700 000000000000069a43ca2439300d510b373cfcb7369f14c4becd1ff15bba7347 ccbbed92e06f68cc3c63b2d21c5d6018c3ffbdb78333e36087a93519c1973cad 000000000000020464663c7a9f664678ddb71223c510a4ca88a3ba19d3f39493 +138800 00000000000000ae5ab37a400b402db68422d3b315ed65717a950f2016f63af6 bc45d40b3da0f40756a5706a0c0fa7eab39fde8644f264f6f4d6b1a3b9b2ed99 000000000000096183230f0cffbd7c0b8a31e16548b4058eb7f951e6b1fa7c6f +138900 00000000000008e462aab7940f1859142e40294c5a89615a599d1d1a0fe85f30 896979f46c714d92f32cd0c747f099c18df0900c2866a1a96465e6eacda957ee 00000000000002374b363a1156b2716928bdb0720113f1a2a089673829c632fb +139000 000000000000032a64e8aea278290cd184efbb0a2516b3dc3753c2567153e5cb 617a81e54f6b5ba1f596799a62f86a15d5b2de27dd183c17d3d1fdf2099db782 00000000000005f03ae433e5a2c2e9096dd5591eac4f1bf9856072666fc9ed38 +139100 000000000000064574b9d3ee0ca49accff3bd2d1699f058e65f8c3326cc4c570 5dbaaeea7c98f853c54933c4d59a7d5cde7dcafed6a73b4f66a4bb0dc32081ca 00000000000009d9f016834c203170c53023f2e704721cdb7dac6dc71f64ccc0 +139200 00000000000002b16284fa2004b11508ea8ecca3d113c3243238bdf936afbd84 d091d0771a5e8c18a587bbe101aff73253b7b6e4a0e0d169eb94724512bb5169 00000000000007c28912e0d5ef3eb69710d0802c36e15e4d0de79183c28b15a6 +139300 00000000000005e731df0d5027a6fc6657a4bf93fa38b9d3a2cc1cb289d69601 5036fd1b256e2dd633e02bb0ce0d5a8c94af435745b92da73f8f310577de6ded 00000000000007644d1255977715204f38f1c261948853bc074eff7f9b9ba9e2 +139400 000000000000030f0da02d2dec11b38591ce7652464eb5d7e4ee7f8a808d1c0c c71443281d69a08ce018509985d57eee16b81567790952c3375958ab5e3d0d9d 00000000000005ea67f3f2ea5478a0280568b6a598f74861c341cd0f2ee0becf +139500 000000000000026fdf8e0f000596f77adfdb744888feb9e609e48dab05ebdc56 d94032928666a655c50d2f28389f7fbdfa4142c6394da8ac1eed6340556c4318 00000000000005c945b7361f257002a8624969038f2e79bef00ab4ae2a1b2f2f +139600 000000000000081cb4737f3099d5e06f1166ee84d72dae8ad1c0c6959520bd4c f20143c202c36b64de2ff7068281a9d089b03d5d7e71031e28ad8c98e7e2aa50 0000000000000360a627f09d45dd8de07ad27d8d6d0fd7610959eedd190b2eaf +139700 00000000000002b9765e4bce6db2b236ef98762b2d7b235fbfcd5e26365a7c2a 6820e9a1f7d6fa1aa0520ca77f0412155b24253f7a677c0508e8c999c4e0728d 00000000000001b87909f1a8d437f9b692f8b2366cfca8e775e01b3070f55090 +139800 0000000000000153baa61786ef35b82751e2083c5ab2779e5cd3e4291c2f64c3 612fa0428d0bf72803e5f54b707f6bf889ddce93df882188f4a4c8f3a993604b 0000000000000459a4fd48ba3d18e556120394675a7493f0e96bf4c5aebc59b2 +139900 00000000000008b66a4e3b498fb8c96395e101aae664176ff5364ebf446da80f 19859531e7030a0dd2ae6e617888f5aac2e94c476c664547c40c6bebad5de08f 00000000000002bb0c7ef25c7834ef6ea07d39c42b2f13c6007f80595b138c02 +140000 000000000000086e28cf4717a80066def0ec26c53d660582bd997221fef297db 6f0c10ff3fa3a9f85d505b7f015d33ea54c83d12c242cd622fd345ee86b9d2a5 0000000000000697dee71229cfbce9ac011b900f65702f62ccb09849f7556e88 +140100 0000000000000000bd4c6139e78aa472bfa22e33953986092e77cf60340a61b8 d1b54e807993e3e6ec055c9a354c5d26a18a93cc377c3d25b6c45a865c8d1d80 0000000000000817f0766cc2c4cd0c353113cdd0c5f642fb8aaeb92266d90cec +140200 00000000000005ee2f8222208e86d0004e409f59428b48089e12f9606501fcf8 9640b9c075bd784f0c956ed23df54b444549d44296e2d3430d884a91417e308c 0000000000000842471c25e45e7eaa9d35393ae244754d4f14f88780c0aab8ad +140300 000000000000010a68e772f6a0ef1081ce3b42d4c9dde1ccdd007cfbc5701ea4 e0648a42342e01f20fec898ffe39f5028c8c0e4d90f3e4098eb0ec415fd8167c 0000000000000458cfc1b3768079f9a1c85f3b3e660e9e596e5a610ce1193119 +140400 000000000000023e7d072ac2d2704515940c1adc16ccb0e35e7abcbe4eae0e56 bcbf28799b9c4b01ccc5a6a8aa17737240d9a40bdd124c7a8f3e2b27a4c80b5c 00000000000008b5b1de48a1ff7dbb97a6202816e9ad51218f0d129c7377167c +140500 00000000000002802ff884f55c426b552250dca82db26c757a6bf4f6a560cd92 7d506ffc6df7c0b4dc3c5ae57cd2d2dbdb5216ce765cfc92ca32f8d0ad75234b 00000000000005a2c2a26316474e47ac2f17d5f052a41d1ffa580c79287804dd +140600 0000000000000375143a36aacbccc7b1ea0b975a6206bed28fe13ac3c446d42c e459680a98a64c3a57c569aa292fdcabd7f05acc7316ccc4fb0916096abedffa 00000000000002b14668fc071793bdcac63ed7e73f9a09dea3f598d147965acf +140700 000000000000033b512028abb90e1626d8b346fd0ed598ac0a3c371138dce2bd 1754a038fd869a54aa6a8b2477ee7a11db3cccd4648d78c26be7e800a5fd8db0 000000000000035ef19cc6f38e12b5f2f6d8c324a016ad391dfc2e5afe1704ae +140800 00000000000001563993887788d113967fcf8a3b17f349e89b47f204e78688f5 e76823c638a74f4612ca1b459f9b5cdb942bfa8c7bce40b2727940291428c331 000000000000049c48a8ec9271cb30a20c3cffc4474e811edeeb9dad95742256 +140900 00000000000006b52211755a6550b7195f1783909ac296a4c932d779f837aea4 228103afd10244fdadb28b7b1dbf601bf9fa2c5c226276c894dfddcec320a4bb 00000000000000f6bdfeefc9f2a005da2d5038bea0ea36f1b1e2a6cb82c863a9 +141000 000000000000079c4c0873586e86365f5c003887bca2b5112f5a8950862accbe 08ad92b289a796ecb2d12c85a1d73cb9f1c61789166ba17690828332ac853bb8 00000000000001250c357850bfa91362957c19bf5f603c53d745d05cbb8db029 +141100 00000000000002f3b190ecd582b2e7edff6d9ffaec2f546f1466f53118b54d46 8092505030f30729dbdd0db3111fc4af748eacb3752f4172ffcec6f92ed614a5 00000000000003f19dc558e308478681c55b30a4d3cb294da3382ab68f41742a +141200 000000000000085673dbf5dd9cebb8f414b4f6574db7ce8e999d25c66aba95ee eff06bc2a34059d0b0b4f73822ae63684b7f2f63ae91a0e8b303670e019f4524 00000000000008ee07e2d81431081f14156d36bbb4bedae9727aa918352c1620 +141300 0000000000000357a0c7ae30afcd398cfb3769641774135607cd724b951f43e2 fad9e8c634551978e994df4f7fc25f9c337f609ef9b8a0d43d71d06263f33206 00000000000004e40640c376d944417a74ecd48de5252b72ee491e1a6d0d847e +141400 000000000000020ed1e5f2de15580e5a798554f140bdf688a43b41c5bef0afb7 29adadbdfd96dd801b915f4856f9a6495074697bf53873d4c2676c5562629f05 000000000000065c3b4b020dda3112e06fd5cb1a8e7e250d1569e3331a3b59b8 +141500 0000000000000646ce82fce0f8cc4feec9cc1d2558db3e73b4f3086713e7d69d afb25405c8fa0d48e93f062297b1d36088061d598c9b12a9eb5ddc9d12707aac 000000000000007e9cc22a07417a9b4f03f533289824f8ea9ac3619dff4675e7 +141600 000000000000065c61b62aa25f3119091f4c51530b8c41ee6ec9ec75a85f5652 d07c384056e6fc46dba48c3896044cab34aec9335332fe78d154048182a9262f 00000000000006999c9d4b4dd35a5a94481121ac2d2e38bd6febacf29e865e36 +141700 00000000000000e5749d915547827d7be51b845cd921987aaeece329bbea2538 ae12279035d4cf6e4520c0a26fbebd8a14a98629c717ec9ee37cc2dc08b1e99b 000000000000049f8c8d73171a48315cb9782861071116619c976ff8b248e74f +141800 000000000000046885d54d62e1c07130040dfc8a1fc0390c6b9fe574cfecadc0 436136b36287b4d47120756504e87c73d388e94e94639b4ab6c032f9bbbcd4b9 00000000000006dd709338ae44d263dbbb3114c3bd07047e8ff0f1af0f883f6a +141900 00000000000003b440b94c9487a6c1a4a50e4f8a1e9cbbb46febf8d9c05a0e6b 2719851bd7e92efe8359175c9fae98649cede98ab0a76a2c51e81677161a964e 00000000000007728b0bd6579ee146838f6a0754c646ef51a7315c06e1846677 +142000 00000000000006379826f5f10cd23739b9c29f87ca10f199f9f4b72006311f85 ef43b7d11a548a784fb25030ec5e39bccb9c301534d7d2792b60bda1843911ff 000000000000024966c57274fd19fe22bd4d03326a4e64a6150e496e09fa265b +142100 0000000000000599ae84a9e36af3c3e00a0d6f8a65a2dcd2038c7efb368858df c03447b725c0f512e6750a5199983e5d360d5992d8fee1956dc115ab853e7a08 00000000000004233c09c1daa2411f7a79a02bc919a7932d7b3af9b3f7e78873 +142200 00000000000007839bb5c112322aaced4fa54a83b05de0cb0629eabfa307f300 bb74f63592d70a36fd5d681d48d9d8051e8c621d532eb9db6eda008c8eb246e9 00000000000007642f77ed5ed0d33e2ac94ee463fe26dae4c79a7ae928fba801 +142300 0000000000000556b2e29e96e71964e99ab49e6ce1b25d2040e63ff9b1b1bc03 f01dc7568466e4c3551cdf7f0a277e7762665c5a9b2803764efccaf8ca4bfabd 00000000000004528c5b2d8a160d36ece8413b58395c96346a0a806ddaad4b3a +142400 00000000000003d6d4c461e1800579b685413ff0155d0a779c0acc89592edf38 76ade742ab037ac79052c59444f686c30637e3aac535087ffc0b8f5dce8775b8 000000000000005d398bbafe4345a1a602ec557a21b3827cec0926bc9cc1f721 +142500 00000000000001efa43fc0052cca77939f62c6f81079e6a157c9e5c58d68ad7d f4f12f555d603aac85a02a960523abd7582c7b328742a5b428b2f14249ad4f3f 00000000000006a3badf6ce2357bb38b190028519546c39830050164069c8a65 +142600 00000000000008d78e7a6e315b9ef038d18353aa0c66191ce4187de630d68c4b 16c3f9882e41d2a3a02a3687e48fb2ceb26ad0dac6599b05fb857a01da8dc52e 00000000000007d2142f5d95005afd71e6f8a2c2b8cfef4af8d8e5c3e5ad90ea +142700 000000000000062b88801f9eadfc2c9d354881fb2e2fdda1047363ba0794e435 cd52b2e61a41c2d8dba423d4b8c291969e399752e952b7f33f3b1e378acad781 0000000000000359774e15758b00dfdefa078d038704642694bc5b63d64498a4 +142800 000000000000073f6dc66929dfc124663613b4c9c6a589509d2f004d80d17881 36656c4b00634b704f708fa74aef01b25e9d464c153e4539a7b8d24eec6e8c1e 00000000000001b3e41aa833358a2b3b92c4a0c746b16fba217e52b594c9a313 +142900 00000000000004ffd0772317bc59ef97b97b6434a9fffe7a24927133774202cb 7d38d97d7e1e9198e5962baf5eac863e8de092287b386f50c9f5c05e4ec62638 00000000000004b48de7a86e1e473e169fb7351f6e29efd4e320ec597c6b3c5c +143000 000000000000026bd2449a46b551c82b6657529d6cba61dd842bc1ba0cbc59f8 a26221b6d1a73a090683a8212eaa3beca31b7608d46ebc7552a89ea2b160f550 0000000000000654fe69a041b68350b0b6989c142411bbbe92271b920f3abe2b +143100 00000000000001b20756a70ed853abd1c08eb5dcf56d78abe527bb4b626ded5f ce1ba780b82b0cc1bb2b36b829e0f58dd6acdb0cb5fceb41fbb5c051ee4434be 00000000000008f5921e612a7fcf13f4db7d10ee307a52abafe1bb9a6d4672a7 +143200 00000000000003e6df417406519029ce279e08ddbb251c6161e747ae77a35f95 143e994ca8bb34fb6f987fab82eb58b96b9cdfbeeb46464007a05493e1f5f639 00000000000009387a5f3bb47cca7eeb945861f817c0c28e5ea310a973c44300 +143300 00000000000000ff0f6eb103c0d187de0cc9501de07041a466ba8fcbd6e52eb9 44fd6f0a5e3c090bfc7bc4021107d83867d5bb7e97f49c64f37c0921542df821 00000000000006b23b456c55be2b64a9012b99bb950dc40e5857684a9e43dc34 +143400 00000000000005e12d1978728b97c85aa217a0deaff8864cd978046cbbd7a3e2 abe09f5b79890340d62f8c046939495fa218eccdeae84a6f391588cfe06db342 00000000000007aea09857e7ac52f612ea35d24fd09e616c58b65963da5dd2f5 +143500 00000000000001b97624f84f87dced4eafc0c372d75bdace6cd6fccfac3d8fa4 3f3443ee9cedc85beb8a911296fbccc2ac0f73ba9309741e4b2b0baaa6060965 00000000000007b79a3f447e7f2bdf314d5aedfc737ff6d546c9b6ca8a3df5fd +143600 000000000000076d6e1c0fef188ae125e9860a5acdb4d8aa03d5a4c58970b3cb 0512a372a4e02f812edbcc4b4c9ab35175c4c175fcf2e7e67d7375db0764c22d 000000000000012f7d2eaeba6ff1f75d4c2f3c9097e459a7244d50d9776be815 +143700 000000000000003b6cbdd3db840c500faa8d0837c534693e99f27d1b59e22e94 85eb99b03c4e146c22111e89af7384148dedd7341f3234f34323261f6235fd95 000000000000008be21a27e625b52c905a401fb4879157a9070bdc91ecf050df +143800 0000000000000924f634b005286ad2832ee74f4ba26424f02d29ffc250c419b5 0ea20905dcd8946c5e5b1cbc0b5e6c27a4bc99c319c2022de18e8ec53e8239f2 0000000000000619cd935735da7b994e3f72965b5900a890772007978e0933ae +143900 000000000000000ae423b106b8d1bbfdaadf2f87d8cd48a3ebac067d583e3ef3 f64bcef1c7e1c332e197d0c977d1892110558c4005eb19b34fec59391c46ad31 000000000000071057d0c76540838539149891e7c572fa27a83473aedcf06e09 +144000 0000000000000681a73f1bb50454cee419048d24e1091bcddadded89df53fd07 a2aaa0f0e3a5fc4befbe6cc4a53755578aa7216204d67b20ebfaacf43a784967 000000000000026ba4c837d96f9f1260e64733054949f22d9189d27003c10ef9 +144100 0000000000000796aee008bf590e966a40b03a4bc1ed637fb99d4511c27abb31 ade58199cadd257871c7b23ead65ac6d5818c491de3604e677068deb8a4635e1 000000000000041a13d8f166ba5a9f48678bfc43bc1d276946d4e8a93a515118 +144200 00000000000003527d9f089431010aeacf01da6150a1a12c8366b88e3eefb3a9 92d0ba3d4b0491ad6ccaad4b6368cee3038788751ddb9c03f3b90f289f8b3ae1 000000000000035dcb8fe986fdfd3ec27413a55b8ed7308e3e9bda749d062afd +144300 000000000000090f7f0a8ffa5bdcb62f35ce70cfd1353413b95044418ee387d2 d798a4f171cf9dfd7b627925244991b4e042ccd0dd131736db2393591a341ad5 000000000000089f995336605457580d0665d84db0fdba8635dd423919226a54 +144400 0000000000000152bdf5ddf5be78a058232ec315de6c6e0056db9bdfe7db2f4b f444c185bc95de2c4c617ca87fdb6c6342a6b4ed1a86305f3119f7a3f1530397 000000000000092cb95b3458536d6aeb1b64b713b720d6fb097c7188438f604d +144500 0000000000000050dcb2f323abd12b5e1c11533374856e7bd6b1dbf2d611cc8d 41ffc93f77f28ce4d4a4801786574de6a756566bfeeb6a225f48020b1eb7032d 000000000000091acefb80979b3e617401fe0ce0e3cc6a5fd7fb6d990bbaecca +144600 0000000000000940c5587c40b81890ced5d4d0875969acf8b82d96623e242fca 72739e16c01f673aea41d58fef15444f344665bcbca2e6f80a317262dd273129 00000000000008401d72d21e8d1d75dfe6ef237e3a4ca64c98c69fdb2ac985e5 +144700 00000000000001f04bc313e3a63cc26f9799ffd49b7af4729cb1074ff8ec613d 8d734b3e8ce0db369903c42d5661f4dc6ef97e87dd6b98eb7363a0778503586d 00000000000004c51b434a4a1ef9bbedb0ad5e8683fb798e0f72422b37faee4a +144800 00000000000004f3e90508470e2f852b644a194d32044807827ac49c3c2a6b4c d6f263a6d8395d65a98d586b44287331ac1acb25232b81c92c057208764a0366 00000000000001f632092fba2a8586cbc4d63cd4f0c5118c365278e370befe01 +144900 00000000000003b3eba8d57e7d7e4337269517a1602f96685a34d662002cff6e 4849607428b47802a6337cb33e96d862414fd0795f393287b792110adbaf89ab 000000000000054b35e3d50f29362d86952ed319950c4f3b3175fb65f3dacd0e +145000 000000000000087f9aa52a08d8ff065ebe1b6d12f03390fe771faa8720eb96cb 45fc525151d08301b7ef88d3fbe5def44621456c203a7a5bb07d3d35ceb61c58 00000000000001d3a873c3f3246937f55e49ac9c9d9498ed4c0d9c45e3674a9f +145100 00000000000001aaf5ed4c1287d6d4b010dbcd5887826210f84e33d1273cd488 85be17decb69066ed4b45ffebd525d98daeb2bddebff2e25b0acb0df903bb7b8 00000000000007edf2834cc8f01762fd48a42ef4dedb2d288148c603ce1557ca +145200 00000000000004e4020f77bd41e229640a18001d4e2f5bd2ea7dd2ecb54de103 b13cc0bbbb720a356c0d70d4c159e87b6504032b8f1ab140cb476da017f1d17c 0000000000000587ef65a1468a6c17d6467cc0fac03b2516501c18ad0fea225e +145300 000000000000064b6ef6308ea85842ad1c71f0931c25730851217a5df7306369 753ceafb76377c0d448e1c91769ee0317dd791de3221cd043d35a642729febbf 0000000000000039b88898a06eb42ab671fe3cc169cea02385aed87fe0d70007 +145400 0000000000000374c21f2602d4cd5bd7bedb82f621e3408854c7406dcd15c3a9 ebe0848a8209a9c520a4dd6409508d0150700efccbe108f8b31b1ee38085d3f5 00000000000004b10354ff5ca259d87fd9f16b3647b13d380806bb40904abb5b +145500 00000000000008c30b38cfb1b2970cbfcdcfee4b8f0514138b296053cac4ecba 395d3d947104b36cef98b463f870286f4dbc6fdb779fe913df725b252407b19e 000000000000095ea79944089cd7202089e8e04daaf0d9e802ac2124a9190491 +145600 0000000000000468163355b4c2a73b4470de29873f5d8be1c3aaee74a8a51d6c 2ea3e106dff642c825849812460853f3a344285261bc24ed435e8fe14aaff731 000000000000035dac7ad511b99006fb7f2d0cabe4af281b168b76527e00279e +145700 0000000000000410e3655f644590e1115b39c70f8190104354fc84d17bcfa026 6ec7330388859996837b9b358fc17e88c1b0bd2b0448483663391bf3782edca7 00000000000006f0b37f269249b306eed08ade4d7dddf80fafa464a83f232217 +145800 00000000000004c055fce46b07e3917bbe8346521f44042afd52b8a7606db142 12c07ef53195d13fab14595101245e5ac30179dc0ca178f4663f61e6d9bcb471 000000000000001b519cb377b60f2ba846c153d10fd3a46fc4d3d0ab181e928f +145900 0000000000000639fd67cf8f1eefb9dff5bd247edcb65c8f2548622aec4eb9c5 56b857ee379cefb7b6a3b1c183a5c410929af9a1f79602b4d94a75dfbf0ca5ef 000000000000059527d3325269f1cb8e6577e10ac6ed7b97173a2621b892dabc +146000 0000000000000188cbeebda87456f040370995dc11eb3a1e76b1577b6e0b588d e6e9f1acedf33968cd3e7bf134efdb28e48116f60005b6e0ff957474fe36c7c3 000000000000036479e4b26fc6b54b728f505df6ec956c68c34deea22f5f79ac +146100 00000000000000c93a89ac198089d50f7ab54a63e663803ac95c073680504e18 d3c1579eed957e3f837906aba0cb1c174149c02217481e966448dfd55d140b4d 00000000000008b588be230f2b09284e9e81c8c1ffe416ceb4d316b649e8a5bc +146200 00000000000009063ca24f2b0989a239ecde876508de23e86a21658f3ba44d10 268a9cd03de483d412146f10dad5ff690dd3676f018cd9fac8953585d4aaafec 0000000000000949e4a89fb9509c6ef5d429a304e623ac4f30aff3634de875cc +146300 00000000000008aeb3b98261e29d4ea6b5b3cd7ff291af95db8806c5bfeb909d 19af5c1d04f68f567531a76702d6c7a33519ebbe493bca91e8315fe5a19a8478 00000000000005b8a31c97b703fee3ab73b22b4510aeb360e14849402ff2ca80 +146400 0000000000000678bccaef1c08e8acd5fa4a2a3bd32877146591d48d68a86bf2 f06de4baef8281bdc4586a622e42eed32602bfd15c38564a13faa5582bc316cc 0000000000000569680b8caa548b1d9b2ab09892aa207dd8f5bde649a4873a77 +146500 00000000000000e3747c3c1c4b7c409d25c706f294fdb7fe3ccecd2917434499 ec92c6f941428a505746eeddbf2b342aae2bb96f95fd268bb932a875c0e0c6a2 0000000000000131cb340b4f36a4f259464538f5aa0ae08f1504f3e5d6c384ad +146600 00000000000000db1538c7b8e6b8c6cd451b92a831fc60b1134b0a6d23f8f64e 71b9987bf6ccb05674b4884febd5f2c195b0e116a9e16b768c933a4626c6bfea 00000000000001123bb3d21abb660c27b3dfc3153e63ff16802c55b6738231ea +146700 000000000000033d610725cebf5570bf40573bd0f1f1669d85ce65d363054b5a c8ef0e569cd003ea1124fb8725f94ec6714a4aca581e987427e2fdc6f41f0b5a 000000000000080db9365552d4982ce23bf0f3ae450f265edb6054162cf9bc5e +146800 0000000000000638177e7af24cba523a74e5ef6ed6f6db619cbfedadae6cb458 b02ca52e54a680fcb735cd9f2733ccb2c004cbd57ed6325428c1db95f5597f12 00000000000006435c0b8f064702d41a952171f355fc55a6b7e31ebc0d0b8f20 +146900 00000000000001a61d473d68940d022af01968ca2f72fbfe5cf225db4d7d2645 cd99948ec6d359ab960c7b06c2d42e936f966c8aea75b750ee3ae570472f1c00 0000000000000675b088a335a9ad5adab1ec0e505fe2f14745ecb841bda51ed0 +147000 000000000000096aff3f9a2090e6bd9f0d0c545c9190914e3dd767fcb24ee284 695fa7454429d145a8d9203cdc22439f50f77ceef56138b5d86e654469ea04b7 0000000000000851df3e47dd63deed846858726c47076ddf6f5ef98703132d1c +147100 000000000000034e142e71c5ae46e41169f524678a3d2eae1e8eecd46801508f 473964b195bad3824c61c1e112c5681ce3f407f091837de16a6e0f1df36c7299 00000000000008f3089261d957fc230884400d6e070c3563563d1a2d4a7d7b93 +147200 0000000000000291c826714cd1e454aaf7cdc67eb890eee2d1432d0d233a8acb f20af0d1a9109e4cc3af52423755d71dcd38230869f718eda822d8889ed3897d 00000000000006b632f2e6ed515fcebd6e9b9ccb3f6e35c8e4eeaa6ceafc649b +147300 000000000000014690dde11bf076c2124f5227fbbbe15ef1cb1d8823e966693e 7e98359cc9b3618f1990dc7bfd48438a9cd74eb445a92c524a8bd916d374f37d 00000000000003ed3cf2e778967db11534d10ba2c656e2ff5d0b3a5db34a762b +147400 0000000000000821542f1d4403a8ddf935784557ebc8aeba414538062c481f7f 69a640c32a42c0059bd7f034c21ab77473090f513593a74d68953f1bf2e60511 00000000000008ec4d7441d37b9099116ed172d7ea3f45f90088adb37eff21a1 +147500 00000000000005cbffd7621681c66f7da5ddab947c472743bfe05b59aa9cc243 99af91b5a19f848868bb580d8e6300bb4114907aaa441442a271ab92a028b303 000000000000069a337dd043c590475b9eeb1c52387712d628192ded078db483 +147600 00000000000005fd5ca8892f430662b392edd5b3045cbbe8e8a97f83dc4483ba b1057965216eb798cfe341184d916747ec52fb08d1e01ea954236148bf7cb372 00000000000000f3f0e9ae40c7f1d6e64e3d91ecd223ba54d223d12fdab77edf +147700 0000000000000649e05bc82de9e3f2fc7283f970a14184882267cd62ae57bcdc 6d60c417728aa0eaea29ed00aeccce4ac163d1e71f4cc7cda99808946b7a0d5e 000000000000007f6aea941d8fdff215df78faad6a79c2a74856d91fe1cad780 +147800 00000000000008bd850507bfad1b02bc9fd8d2682caa197a92da93591a8f4d03 71cdbd6623d5afd757146deaa73d242d0164f0b6e33c9c34e48d6c9a5816950b 000000000000059e9b1c168dce59291c49408855c533693d9582708be31c0a18 +147900 000000000000079faeef6ef108e0dbdb888034be78744624a29880204a5316b1 7d19d7cb34360d2d56bb0347dc424c9a3482f1a0a5e4adaeafe3454cd7ca5708 000000000000052bbe1375320b66a719b62a68a7ee0dbf65480a867ae1a5d32c +148000 00000000000008be94b219a94752bde6a6a1c5b9d72abf2aaab53df7d93c5fa6 3dc4d615d38b4f6a808f160cab57135753b36d3882c792461ff081468853c908 00000000000006994cfacc4d85ed1c84921eff8673e4463ed71a1df22ec6c662 +148100 000000000000015d8bbb783256280108e05e03bd508672380ee0d2ff2b6959a8 26e48bbf79bf807b41010d3bae19f9bc99a360952e621956370de96c59eeb271 00000000000000bf1b30fbb2e539f7b32f781186a7ea3eb4654dde8a0e99b1b8 +148200 00000000000003c33dedeaa37cfce91252304798ba6a68a7190dfb53305b6b48 61f8d12c24c2cccc9d8d454de968af9660f1cdf177a8113449bc58e7b44f9735 00000000000000fc1decfbaadb5f0c81847a2ba37fc09bfe6e7fc9428bc232f4 +148300 00000000000007fadc00cc69e8a013b4895dd3ebb8dd7152fa6de63786b0837d 658977df93fce20cad7062a7e9a620c3759a4307b6edc83bfebec68b5a603c98 0000000000000968e8a653326705c3a14a7b7822bdb28980e7ac2f9e6a6d30c9 +148400 000000000000077463f7a83ccd863c5ba76cac98eba531866d4dfd656b2cdeef 444499aabc99e10fa6f58daab48f44b87fe0cefd11f638226563e30e34e665ac 000000000000063bd910426b96f2c92eb8ed15049e12bb1fdb286eb08484c147 +148500 0000000000000989192ab469d6bfdba1c2599957be2a5df6c9bac74bd1b79416 99e9e2bc83dabe886b2be55d5c7dd262ab05a26398a3336fc8cffc4de77747cd 00000000000005ea9cfe5cac44acd4441dcdc907c4455bdccb1b48ec4da42dbe +148600 00000000000003011c6a1e5c8c06a706ccae42eeb3cbe13484ddf4ea8e363410 fa0b6f807bf486e722ab44675151989549cb2af1adcef141cecce2fef43715a0 00000000000009ea381e6209d1f8b1d2c5be168e8819e443c1cec82b8259c96f +148700 00000000000000c4b758080af1b8d4ddd61e668444a40711a2c99a5dac78a1d7 df16b3664a0d83a768d93936a37c0c13e71c1ca371fc285ecb78865b65f76cb6 00000000000004ac291461990445b05dc535dcd14b85720a373dd252c320eb88 +148800 00000000000008371089fddbdee1f7cf580d98e64c276c649102d2ab95fd9844 cba3c874d563638fdcd3b8a9e60b1de78183e7044948930041c39e5aa7edc094 00000000000008e6557fb186c072ab5d9a557cc6304428c0d47382bda5252390 +148900 000000000000070d7363fe2a0f4ba2a1bc8e06363cf27446967c7e6dd758a9df 968bd4f54d84d61d227298dc7ecf74215498766cdf4109974b6549375e954f52 000000000000057e3df7d2b33cf99c629d67d66167a59054f7c97381caf9de7c +149000 00000000000003365798631f867fccb0eb0ac014e8bf2bb628d9e7a4479786c2 78e2453b544c054336efc17236f9d04480f38e3e2c8a5b08fd4efb04c25cfd7f 00000000000008e0d6ff8460ff187363bd4071cac24bfbd17d0e40f34bd47f8a +149100 000000000000091b548dbaf642c80b6ae353f321afe30516f83dd941c13eedb7 6eb9598bd42acc8e41f9279eaec9a641077bb661cce65eaf185441868881ab74 000000000000067f217e1c1bee955bf8256fe110a78dd1ac15ed611086b656b7 +149200 0000000000000a4cf5d7252cb9385c8ce32bc1cea6536b9cbda0d5949fefc2f4 f43aa0eed697d2b65beb80e6ec3e36fe8651935c40f0c9d6316f80e9963a7b60 0000000000000136b4adf87287cc86628ec45e0609cacf3ae804a439a0d47a8c +149300 00000000000007d08f1e55c0fe4abc35731e66cb655067e4d5ffa54114b283e0 1f7d7c97609b642912b19472e0cd1626bd2f0226608f0d3ff2c38e31263137e9 0000000000000a4115ab4972efccaa2dade99359eb6756da307d031d33179374 +149400 000000000000056edea733c1998b955596ca98163d66ae3fce1ca65dc9c443e5 b4ef74d5d60e541f8a2792e0412135b4f558b73bf28bd366635416ac675cfa65 0000000000000178f0048d677b859169a4066bd76ae739dd976e3d906083d4a1 +149500 00000000000004886c1248696c6e4f25bd797f25761e4abb985aabd19e5960d1 4e901d76d265cd03c5a3a21e087bff1f3d88b75efaf12fdac68285969a729f7e 0000000000000144ebe0936683e9f949c2270ea91ef2a0b0070c8382f7ddd90f +149600 00000000000003a7a772014c5254827d3ec98a2d83dbc32fcd6c4ee2636f33b4 61b92bd3f1a2580e42776a430a015ac4b29237aa3c56e984b73342bd71de1bb4 000000000000028a660778d25655072155cebb5c5d2a60089f4118b0179b9bde +149700 000000000000038afea44306c329b1bab7bcfe5ac3ff0a6c818bc4ed7e0e8887 70fdbfc1e518b8b4b5dda7affb71378d8f43372f4278ec81087780ff2e2e0d56 00000000000007cf783b8fa2ef3e3fa4b09831427ee6e88b1ac72ed2fd532055 +149800 000000000000020f1438e884f93b7c6196c4d1672ee875a4364f92e62b6c4bfe 209e027c4e2fab596ae8c7e593a6da7200f7f18f74d09061593a6e5c3faa6dd5 000000000000039fd2c710ed8db5a61b0b21ebcb04bb5bbfb7d9d57dab42cf29 +149900 000000000000075020ca7abce46cc1d3425b7800b88c14b4503777750eb8450b 605d8d1d5563a46df216e712fea1fcdf79b607c0d0d7269a0992a4a6b3d37496 0000000000000a6fbd3a54fe92acc2f9cc05a5baae5617609afa163982ce1b49 +150000 0000000000000a3290f20e75860d505ce0e948a1d1d846bec7e39015d242884b bbea6ea106ca5fbb26774fcd03ec989102fd01ad3aada5e17e6dc9a2273caa52 000000000000006b1c90f01554b0aa0b2b3adbe339b175c23b8b8ce8b503a89f +150100 00000000000000b0fc91f5a86e6a9f9273574a211ede5bb2f58659d6977bd1ed cda4082ae42d9dbd52b4d5a036c763a365c39d5147bacb3b2663f6dd855474cd 00000000000006bb4096a302361fbb92df9458d0bf407f09bd0f06f2b6a18cd9 +150200 00000000000008975f64af185acdc482351b1b5729b17eebee9d3ffd539d1d50 a99970ce92d2fd7456f906d192d7219232a3ca4983f4eda0aefa3bc8a29d276c 000000000000026c50a576b9eb45b0d31a828c9a9728de7a639bc7b97f4d1f5c +150300 000000000000073278e5df06328f662f2b9e12e527ef0103838aa6a86cfb72ad 28db0d8df6dd8c1845162eda44cca578da1ba5c0de9c8a81e77b0c329766a553 00000000000003b6feea62574a8cd33bf54d646b3cc9ee2ff1b45f44be27acf6 +150400 000000000000072168b1601c91f63ecc92aed86110cbeba266397958d94fc7af 706c73771d8f3bc35a47f557b20282b280dcf32081589820b501738c2f3a642f 000000000000059880364664e471269a7c84af6a8ac98bda07debe2a9a0667d1 +150500 0000000000000112f644be7e7ee3bb716017d729327bd196139a92446fb71f21 36865b288c94fa5cb981b0626ab3e15d74e65f46d9db636b4c407b17f1d82c59 00000000000006862cdca4523deef46bf7e850898d113f11b8abc937fa8f02fb +150600 0000000000000727ee977ff20530096f81986b5e9be3b6f917de13991d36791e bb94198d4bb9f079155422b590320bf9bd1259faf5709e424107896bb0930384 0000000000000899219e7836bacd997db59f3bd23aca51435d9f29e703091769 +150700 000000000000026434e94d99089e01f3b81ed26cb9017eb39eb34b8210b49817 bac146b028763fead2080f7832764dea385b94da0071721d5b09e87089b0c099 0000000000000645b16c311d553b38ec02a8b7708eb3925d2bf98570a248ffd4 +150800 000000000000080ab2d87211cada3fb5033be8d63ddec3fb8f27ebf1f57bdb96 23cb86f84b2a93371d24408e4db4f7519e39ac41835c93e4ed786f0843535004 00000000000007eef15de0b26587a8bce78e9083a7e70019bccfc2b1414261dd +150900 00000000000007eedff11a5bc52702fcb403575153a2b9a03493de676af06b43 a2b8d5d512fcf75664803dc8e649482cfbdf9c110cfa728cf3b0f39887019bb6 0000000000000103126a58ee1574a008acd9ccbf0e02485bb655ec1c410923ab +151000 0000000000000a6331baea34235c05eb12ad238a7a61c878cdfe348e03608541 b238edfe5bff1cf4a2ada0a0fe5edd994f01138828c371b8c131206d35a26d58 0000000000000282eab3833388380d9c1be207a98b243b6d1c36faf02de5ee4c +151100 000000000000047dc4f1730c3f5c1004170c2b852802c59000c25608204ec72d 3f722d37c948658a258c9264fbaa0000ca48e4e9eefafa47093b6ac0121db3ee 000000000000027364fc1849b6970442127ce40919dc1981822527037f22409d +151200 0000000000000b9746bae9c3dae632c01ecb831fc0a46097cb5575be4f895885 0ed22a7f532c49496c9d2dd9a77c5cb51ff746c3131c5fdc42395e8e76af317f 00000000000006b1fb39602840ddc4ff3289e6c60b75102f486926489e402bab +151300 0000000000000c3cc72c5c70d2ea33ad6b168887ce45c7c22eeecad1194bf165 59cba403b08491d415d3fccb9719842af6a784ff205f8e4e38dbbd4d371cc58c 000000000000064f01a001b48a36257916e60b265ae3cff31b641bcbcc300be3 +151400 00000000000008bfbd7bd9a3e2d84e24c837afbc7382a4095f8d6ccada23426b 289441a3e012ad2476d3fd3fee58f7f1136fc2b324917d7f2b7fc94f0cf0d320 0000000000000599ea67e3e529f6991a95bef797d45d44b87b777f86d177f12e +151500 0000000000000c605f3b541ff3f37ca0274e325faf63a0b853d0824803a42c78 9b71c75944fa74660bc3f048f142c84559ac2e5e2b91149bba5146224628fa19 0000000000000b62764af457d7028b1941edd97759d80ba13d82bd6383e2232b +151600 000000000000061d81c1732f2dbbca9463b5327a9f51e76257c9263a918e8351 e523c982d5ebe67b770abf1eeb8398784860fa2b14350cbd52f6da6ecf95482c 00000000000000afc7cfaa9bd8b8300c1259b8ccb34784811bedcaa934b37954 +151700 000000000000067e9629527909e980229f6eb4edcaa1d7141ded3a572741b307 1bdf14c871028116ae283e50fa50763bba91e1497e0f54bd7a50737e1742876d 0000000000000c574fee36e822ec822e3b13d3ef4e6084afdc58c2108e8142ce +151800 0000000000000dcec83b40648e1d84fc698aec2f4af54d945f1945df3fd85aa5 b9ed80f1b0a52743e13a0fbd6506e0af7fb4665ed35b8adc838d8e91a911d27f 00000000000001d383238134acac79c87a8b3e2fb197d27aaa9b003771e02f2d +151900 00000000000003347276a7a1d0978a89ebbffb46b36f6bc197b2b98da1c6fd7a 7e5bc4a6fe090d3aaf6926b53219c0ca34165c743e87cabd5c7c54d0517dd13d 000000000000030ef51754641501fdcf5d5c4c2750a9d7f3ce0a8612ba44143e +152000 0000000000000aca2b3a267dab498adc48afd15b60cbf21fa58dc26c86a6dc13 ba5c0ee795d73fd6f5a576146cdf4a7b379869c8c03ec15bf0d1141b54436171 000000000000049f8324c2da6a67441d11b6d3303529354351a9bdad9d4d8f1f +152100 00000000000002c5a588ff1f9323af5812c316b16406cd1bf0470da6b6444137 a101d256bff8bd8a0d1bfa702c65892cbdd591e25467b5ab728503c9184f31bb 0000000000000ab794fa292233f8f8ca45c4efd98f16430798c374cf21079a46 +152200 0000000000000359df20ee40fd4885f5b0fa113c742fb5fc9327b657f7f1762d 58a8f293cce9bc4427325addeb825c602693e62029628eebf6a031062a33f305 000000000000000eb15f10f3bc37d0033eccd66147f7914e7c5804d4f68a3b74 +152300 0000000000000978f358cdd0b63da5f6c8a6a973fc065845768c352011b245b8 ee41f9c04fd33f2a055c5838ae2193d66c1d8a214e657065be871c3dc5697a27 000000000000049227852e112525df4dd64dcd52ff34db1f803d666e0e593fd2 +152400 00000000000005b72ffa18135425956ed11fc56262622881e876e2ce33ba6ed8 64b62b0cf052d6c53701bee4e78416fb934dceff1ec64316570b38cb936fc5a8 000000000000021de21881a375823d20de73719a12c9140517d7dbc5d34b3136 +152500 0000000000000d96acf6528f443ef2c4695a1f54aa044f315c3c176b78bf1443 c0e4858e2b5b8a522267255941ab52f3b4a4f934f1f358b87bfb27d282286d4f 0000000000000c695dd00019702cac28244192faa2baf641810904280dc4aa07 +152600 0000000000000375fd57a15993be226e0d45921ad4b994893a9c931f0e5468c5 237bc52ef4d3f445f281bc7b08250ebaf839f11db67cfa07ec227733292b1ca2 0000000000000cc231fe9ecb8b5f3c7445de8772d50b48f19672c9db5f5f3d19 +152700 000000000000066abd06b58dacb398c5a7a43594104fae26f7e3985ccb7eb68d f56fb8170f0852090005a79c27e1b6d076e8b6d6c825c7801116ae4c56393ee1 00000000000002b777f713b5d0f7b6d2a92ba9128ff32af9b3b1cf3c4fee04d0 +152800 0000000000000c7b829c5e828f9f764506916de42a852b13b634d3419f2c91ce 721a5961d9f3bf1c4b7f7c853579e032fe0e8f238746718c2f11f93c0fbda2a2 00000000000009514dc2c3b44b1cc165bd297885bf35b8cf0dd9a5c9e005aea2 +152900 0000000000000344a66850f30540990b96cb6ebb70a3c3853b496e5a47d816ab 5ee195f2fef3d5d5c0ea8197c9a5dba2797b61ee1cb37833a08c5726e4260f61 000000000000006a567ac62256b4b46e3e8245fa13500e15f180e42f3fad11cd +153000 0000000000000bc97a18a07ee50430131ff934a09e550424ad85726ac42c7ab8 14009d48e3efcc2265bd0161328b138169a31f7b95f457ccf90077109a75e2db 00000000000003493e4a221c3ea865c9a195b7f03f1dba87a2f28f67ec78ec63 +153100 00000000000003bd82202e8e858b120c5c8ac4c02de4340e6511ee443d8028b9 4895de7ff0298a62141d5c8e21da3f0d4c3e8e4b13f2a98797e8e4cb7e08c2d9 00000000000001b9146aaeac17e1eb174467d0c226fc2c149e42c91202d4f72b +153200 0000000000000c2466dff91636c9d774e3468f5ed942e15fbcf037eb9cc9c2ca 2b5b6cec81c7912cb96f1af169eb35a6fdeb85d9bd06bbb2791bbc133d0bd7f5 0000000000000a5d2de7b39bf007d845ec33ad811d06a97d116d25258cf70140 +153300 00000000000002405a74d5193358bec4166a2693a93a549f351c5fea14dbc7ed 89ba5e569b9fba01caebecb9e81cfad6b70cec07809a067577b4af73caadcd43 00000000000006f357e091f912fba099279e78ce34cfd3a8af456796e62f11ba +153400 00000000000007e459943bb2c1934eae6ea8d63ed2f19837cb118bb562c4e1f9 32e0daff9a4fc3dbc450d0aab70bb4d7be826547ebe029f3004c900b392b3ec2 00000000000004fd66c1a86fa104d036ae8dc0b348774d19110d40f2c071944f +153500 0000000000000acb845049f313d9bc7d020491c49e0663cba1ffa234f596de2c 812c082afa5deb3181f22f47fe467fc1df3da9dcf3cffda128a8e9fd3514aa7e 00000000000003d2c47bd83eac4149cf5d5c6ee0f2e6b3623b82051714292671 +153600 0000000000000cd8df9cd9b79aeac2cdf675d7e746e821b0300e818082d3ae01 f6ad9aef2ca793b63e3eea87493b23b27912d741a65e9b6cfae56a3ad56561e7 000000000000088139105ca4f891d866ff1e881b057492c8c8de3f36c4186982 +153700 0000000000000cd360a431e078a07c2a14d2f5ebb4a5ec9159eb6959a497b6dd 33f356a59a6042f63eeaa5c649172a2f2e2e32a55340a54d244b6e3fba616802 0000000000000cd29c8819472ec5d4d9cac4427df01b08188130ed8a5a80dab9 +153800 0000000000000353b528c2e326ffae4b3c546881e94b315c40dfa6bdef405975 85812b181657b5319606e786ce80db59d758aef2d42fb5d14850b04c1d12c739 00000000000008ea78701993868e8be84a6a2d37053381d8ce2a704e77e3586a +153900 000000000000064ebf75f02a9fc91fb9a22a69a2ea529b49986e97bd45538fda c42beb5cd4c5f7aa1618a06a2c1ea917ac2829916b8743a4d21e8008ac153c18 0000000000000086b95950b852889fcd90f806ff2fb874478e4b38cc306828a8 +154000 0000000000000a7446d1a63b8229670aa02d1d9fdfd729b89107fe5d88dacd8e c81ce1dfbddcb1a69a962514489c39ab75b99c276376ec5247e4a81e120dcfc7 0000000000000cfad9660f9068486ca4fc83ba6e5fcef0ecefc8c7eeb2e0e15a +154100 00000000000007b0c2dae12b278d82314b09bc425de25b33fbd4fffbb3bd8a14 93033cad7ac78d98ef20a9dc71b032666a88f0ae5e1a4054865fe1ccff9ce508 0000000000000c91adba729f5577e84972ed7fdc34ba9b60848eba846655a596 +154200 000000000000068038b71221ea5f47aafbd51f33c6469e22cda1d0ab7997496a 60781b0eff1ead2b15a6c5767a45dea964f13d601f21dda685139150c89f0e39 00000000000002e3c59306a2954c413baa71ad187d67bbffa71261e8b2dea1cf +154300 00000000000007e12dfa9f1186f86b3dc2bff10c65a41400bfcb1426b3b34264 ff10cc666d0e4654b8a5f5713a61d477da263c8545de7ab41fc96a10de4b7578 00000000000007fd08370d93b27aad99ebc2b42fdbabaf8bf8e07d5c51dcd0d2 +154400 0000000000000517a6428f4d11295e4f2a4998eae180fb4503126630962c3aed 726eb526d3f886df61412af981ac4cb0b6f6b8b407ce029fafc8506e34e3699b 000000000000026bf2366c172359c34c819172c251330b5389a40c724d2cb833 +154500 0000000000000982574190476c8ea7d0941528650cdc10e0142a081cf397fda1 157b55d722677bcf68a3857e6bf294b3c97997c3656be7b3c01421566350ece6 00000000000002a79d97179c66656e4b9c6bea3995f6f72c4ac84f29c2ff424a +154600 00000000000001de6811527902b2a994f3721af035110242ddca509e9a40ef7e 002e5331a3b34a4f0b84085ee53e4f0248da9aa2c8ce9d7afe7689d164bf680f 00000000000007e5aa04f120f9f503be42e0261d74de33b5d2ad01ab43b0163d +154700 0000000000000d11667ed46d168c6e69a99419d4e8ba63dce39a10482d34f33a 32b9711c62c97a66f9e67fe3c7c79503579738d580b8d3b6bfa9b455e1403dbb 0000000000000366c2cd0c206cf1642db8d7a46f4b842f6c9d098a659e4ad310 +154800 00000000000008243cba0bc5c286d11393cb6e930190c163204692436a3833dd 22f8e151938001cd5f7a6182b9a3ab104c94f392bd0216dbd1fbd414816481f8 0000000000000d94738927c8365fc09da50a98aa1b6bbb1cfbff437a4bc34e6e +154900 0000000000000a1f37867a7a6c57eeeb326373740582a9d8f92a76a065f62f47 a7c5b2d45917940b7efbfef9c7c4af5f97bfa6b53ac698cdd7b826eda8e9398b 0000000000000c6b7a55fe41f48400923adbb1ca5b6452c247b6e9768f460274 +155000 0000000000000984d00c9f2d51e6ad2b601b7b1df06deadbf62be24e49b8f486 0f55c23b7af7e296f4ae0295624c68d4df567b314037395a170c263a81529f17 000000000000058ce3754a0dd5a37013d82e9cda5f8699a90e5dab3942b32b93 +155100 000000000000069dddd875fb01f0c6505b21f6aeb5e3e6f6ec8739cdd4e43346 6ca2185a35df8d26195165e690874bb6758f2f05bd5673504db69ac1141997fc 0000000000000901b71ec71696cedf3a3ed2711a203969eda94c676db90a33df +155200 0000000000000b8cbbf3c986e6622a905e84cda12ef9210b88805b2fd385de44 94546393857cf6f50d3ce232b9d5b68666a774865d2e257325d401bd732b7aa6 00000000000002f7499bca4d0a154d27458107dcce1a6bc6cecc3c36d950b64d +155300 0000000000000694dac853c1a2f43d0ea4fce9f05639ad24a7c5307cc2ac4973 f83ba492db359f66c68a24c59e1d5f22e2029610424395afee2dd07000fb52da 00000000000007209a344b37d7561e6fc7e7c5061092b1ab400f21b2b078e56e +155400 00000000000005a7332d8fe512b07701d1f2f9889d884c5bf0ff72432b96c4d4 de105e59d029f0e9a96e434bfb96e6c811022f32201a6ed604c0e7600fdd8055 000000000000047b2dc4c294bc080f33b549d5ad486ecdf9d42db0dbc4bdfa36 +155500 0000000000000c45636f96585992219cb74e5c54bf58d7d16106373fd024932b ca2ca4005e44a987692f397ca6975af846651133db3ee44a1fafe889bda3a446 00000000000000fdd95284cadee93a2f9b8692842a15093a6c8f8beadea24730 +155600 000000000000096284eed54697a4eeb3ecbe9436f874c80efea76144de728b0b ac233fa06a6621047d82f8d0a2db0eb029fa4fad248ebf38ff609b9a6018b435 0000000000000e7f36ca49edae8bc09a7166fd8a297f40c5706dff2a2cab0afe +155700 00000000000009f15f16930111ebcd967a5a2b4dbc49e43e6d2aa2fcc3d245eb bbefccab6e2e0e360a23b88d6b4d10a25d3ca6ec4066265bdbf0e1a5670d5589 000000000000087c45cb3e9718f539e96ad7ebd2eb29aa854cda7a91b466f963 +155800 00000000000003942bca6f7ebcb545c8ff9ac6697adb6c6ac920b584f6f46cb1 efe2d2320d8a40e00d9799f4a9c8aaa339d70e7d16a50e0f18fa66d3bc6ad7c8 0000000000000d73a4aaf23d74da8ae8519f8bbfacff231ebe0e79087daa3303 +155900 00000000000005fe59fa09f033b85c7eeec7f78824ee9b5637413adaf72e8b14 268f8cdf33318c81d640511d3d6d28187e876da8e4dd29eb469126572e4d5c50 0000000000000c4c7ca967e733af87be7ed8325fddbcdadbac4a0030cc5a32e1 +156000 00000000000002adfcffbd5f09744ae3b930597dd0ea684cd37b816783ba3762 f557d3e760567d047cf0980f032a68dfd8b466ef80da574c7ba99d6cddd8bf06 0000000000000c5103789361bed6a8fd64d45f81c63dc3eca73d4c73a2f02779 +156100 0000000000000bfd18165112f0a29c6c756ba07bae4c712b656ab06b048ef28a d5ed5651a4b17463c05acbceaedb21473b4fcc0a92cf1d3802e54ad40e1ddfe2 000000000000056b69df0eaadfa7cc745d1ac260ebd3fb455f8bae50edc1cf30 +156200 0000000000000903bedfcadd0348c63c13cddb423a4978a9ba80042312a111f8 bcae5cfcdc9048fbeabea7b90e8e1cae5cfc61663034d0513a76a1fb4350b7d1 00000000000006c817b538db7bde43e8414be1cb8db876d54a53ac31b9fbdbdd +156300 0000000000000ef2f9b13157d3fe699e353769b245802524649dd127a2b22ad5 2e5f8e3eeb911cc2539e54e201dd8ae3de52053fab1f21fb9419babcfacc0438 000000000000070ffbddcbfa7822c4042ab1481d1121a919bef969e5fa2d8477 +156400 0000000000000729508928b16132de480988e666f279d9d12e61a1ec310ff5c2 d4fc9f8298fdb7ce55ec29102a2edeab68158f37d3ada08b2c60c46ca88f0dee 00000000000004053f39ea7e86a4208c0dd121c9a2b520fc0b6b127681687c64 +156500 0000000000000455776c672951c51dd7cb482f0b27b9ea35737dc8f540b47daa 656d35c05d0e7ec706daae7dc2a549038274d1e76bb07cdcfd0ef4775f4ac4c5 00000000000003c0c9011fc0195cc875799fe7a75e83ced5dbdc5bf4265c885e +156600 0000000000000d46c50ff465dbb9619f17106b5dc9b7916b9fed2e5957eb9668 cea6f07e5d8b9046c61435d5a0719982187a32332950704116b23f6a3af14951 000000000000029a8bfa52e84c68467c03405f272e4a514eabc4139ffa684d3a +156700 000000000000024f293ad325cb9d2290f221f0e87e2a555c69b4db8710c2875b 534f2a3207927e5cee968aa6d789b82223223e0e3f9e8658d4eec96c4fbf7180 0000000000000c4714d401aa230c4f7e394faa3f8cd6553cc97ee22eaa3e5432 +156800 0000000000000ef31baae3f26b313a5aca25cedc0229c9e3a1cbb825bc43a3a9 f460366350efaa5afc21a09fef46213c9b1f60988d0df40a1ed6cf9a07bc98b8 000000000000057f6059c2b678e5d42191928ecd4af5f06baec34f5db1582cb7 +156900 0000000000000aa1102cad2ddbe04f83c8ab771859b43faadacd7f967f0bb5ef 5f6376c2bc9661fc78b1a1f465a934a03b64273f687ee68a1a6059e804c5a6d8 0000000000000dc0668ebb96d0f019e1d47a63df632be78893b86e0d734aeb6a +157000 00000000000007ebf3a6b6ebcf46d550de83636fefd0a4eb91a5367f2880fd4c e1d72524f6a5b7ef35b7a2df465ffbb48bf18da8929004829b743257e8df6a9f 0000000000000b5c4d10aca8f19676cae82b9d68b05522a201ffe5b97d8334cf +157100 0000000000000c71eb95e8121e9fba110af56e1da73af2645218f4587ce21ce6 f963b669bf04243da248bae9ed9a7995520604d2247071c9131106f9a37b0a5f 000000000000040434328dd003a10b7a7aac5ab0960cda33d3c1605418c5a28c +157200 000000000000075dd20a60abf06a789880076cd2cae0903d99d028b59b11b5f5 6af6a54df3843b2c48f1ebd7c63a4872b57bfcbb81a7a4ef10e820e1dbcb2332 000000000000034cbbc03b7f2672c0853040d39d480581483913f22387e0e15b +157300 00000000000000302b1ea6683f4da4a77df8bf757f74d8046688057f2a07af31 d11da4fd42b1373f4220a1df2bf8e689a9dc169da83f8c1133bccb7f44ce8713 000000000000072be9f4e5cf720a56be3c6dc9ff4f57a633fcc37fbd757e4247 +157400 000000000000035135d21270a0e0dc3e7df67524fce200b12290a41c5a1b436d 778c3bd64766040eb9644b26a40aa2714cb66e371655ae6c15a37a0626c1868f 00000000000004627c50afd6a6ddf584c34ba809951c14bc1c4bd4624b53c01b +157500 000000000000035a50f9bc70622eda869b8810625b9909ae7b0d2b45f35cd1d3 dc03fbd877e8e68b1585301a6fa483f2bd85867a4e0f0c55c1d06256bdd42c46 000000000000038e417f7c458e5a86df6e0d8fe23e62282f9e5a697f1953c4d1 +157600 00000000000008fc67fd0e4f16c538c4fb4a06e328d8be2bcea218741bbaeccb 072f0ff2bd22ac0d263636f92a811c859fb87979f9acab28777738cf4466990b 0000000000000a93999d433b16c8ce44512533003bfd7fafce94ade253b3c295 +157700 0000000000000e3b75812a30e1ad25ce98f33ae6b2735c2eb4ede0a8ec15bf8c b4b6a22a247fb89b2c89f836f267fbd89018903d5beb942ceb08d03ad31bccf6 000000000000044a02bd28a6a86cbdf9c1cb604376dfa6a8dc2b321e3943c87d +157800 0000000000000251556bb869c25044d9eab4d697b144d7dd9ad4b2c4c9713d87 9ef0b6d6ab5482df2b4ea90253a3c90cc14f63ec260a0ba57dd47d6010ad5494 0000000000000e7f0c316e8b7609e9c8d59e9ca065d0be35172525f6df5d2be9 +157900 0000000000000327be16880325b79002900cfc61870e83ab0b60916c77f72f28 7268394b4c6ae4d8be297a2d583159f6067b22f6ceb6617416dac707768c0415 0000000000000787077a0b9708acf6a6ae2bcec29c26ce621dd3ac04b8387a2f +158000 00000000000000e50d56f13c7ce64183386abcac63462ca745b711be27568f52 67189b62be21c79d563a3991e04839d643265cabdfbed747e21d4a2a20f4c26e 0000000000000cdbef919d1caf804a847486022f9b24f368a47061718550bf01 +158100 00000000000008a7fd04ca698beec74330eda41fea1b9e95d26e3d2cc554ac9d fd0e7f650d142a36ebd766cabc2644b44688b0c978a12b87fb2c703049f33a8f 000000000000005238a9e87c8ce71efac76c42cc32001f0190d86440e34058a9 +158200 0000000000000ca82968c44b6b32224709bbd60be0a36edb4fe6a8b4cb950e32 047bd983dde2ec72606cc393fdc953c6f2fea684725aa807b315b696606bd896 00000000000006ed67de5c4dc9ebe0c50b640b2fda72358ebf877f1fa6e4f290 +158300 0000000000000b30862abcffad87bd0187f3c6f9c9b9572459e180d19917c042 c9e2bf14ccde31b60cbf41c3d2c6640bd5e1a72d6550578ee37ddc376f21f6b8 0000000000000453ec55a64aad52a13dfc30c4c06eb524d33d41a13226b84431 +158400 0000000000000494ff953010c1696ea00f9476b89a27f0f3f62b4e1f292c1a7b 738689a0a91adb9dc66ebd85ac287034c2a17b20542177a6c8c532c2240598bc 0000000000000a1159fc3a87fcbff4afcc5c8c494352630c4784a58831de963c +158500 00000000000007fb3e7116c33e6794d226ab216b000b835821e0fb6ae980bf66 512bc0cba65412414c21016f71a852df3d8022e7e321608c3e53bf99c6c27f60 0000000000000524db81610e4f9de59bdf87c875c99fadae30a1eda24e3d3df4 +158600 0000000000000e10bb679395973a73d92af1dd7333c890de12b281c04b20da38 a80318102e9f0758a3c17b36350d9fd660b1b2d44841ec7b4919be6189f59e64 0000000000000130f0f7675b0bf6ec852281008512312d510e7ee349b784479d +158700 0000000000000e02bc0a66b000b891184fe25fc629779153c2561e72b9a1aec3 9d15d9f0c47bf06f21ab0c00f717b3546f921538d30874f0fb336534fa1bd90b 0000000000000832b51e2593bd2c712e743952f9bc4d2108eef9ce805c30d06d +158800 0000000000000b5d0ba20740d4cb84206e55d2eaa1a46f03b1a21d8b87aca180 aff10311016771eb182084b02ab5c0e931c717d241ec1391287661c1765b8a6c 000000000000067a09a776bc6493cfd6fe308c8b6da5e3e7913bce28e38aa321 +158900 0000000000000b94069c75b2b2f3fc4815293c7e6c3a4d13a3ef29c12f2a3bf3 c8c5ea3a599bdac0c0e0304e7c364a20eab85e5853baa4b801d84c9b1f7c4cda 000000000000070f8710e8819bc92b4050e58ed5852b79eeea4d99c34a58be69 +159000 0000000000000de25617d0cdbfce23b41289abb01c46b78b0f8128126929ec00 5b3beb4918fa33a839e3bcedb480c8a4d7d2f46e2c0cc8105678ca9cf20c88e1 0000000000000586e86188be77cd86356a466375d79e235dd845acb13b104dff +159100 0000000000000535880ce46cd083e33dde59feb7523a5ca15de39341759f3e40 23596ccde45172f8ed2ea55c148d6de413c4b8a56633ef80efc02fd066e859cd 00000000000004e1753a4456a7963d5fd7a3ce51be349cc4a24eee0ca5e01465 +159200 000000000000019ca45008c57d8e76b593eda4aefb6b6740979324c216db5f51 b4c8787cfb1f4252072176a798d76d3bde1ce3923c865cc4dd299467f5fc4153 000000000000026ce8c145038d31035f240fa4c5f675c12b238234662d798731 +159300 000000000000091c031ae782b2c8ec00a19e29132c88cd25e2dab5367afb3300 2d02efb540a5d57faa8495a21280aea548166145991f82bb49a25245b43a94c7 00000000000002e5df78d959ecd6571465b03a7ae47117a0f11eb82b8aad67cb +159400 000000000000093afc77a2ac9bfcd95040e0352cb926d3d645c1959c7006199a a7656e673f636829748bb0d4d9049eb4a70d6a6effdb75e3180d4718b2f13120 00000000000005ca47d58cb699922ea0137acfec61e6c7231fe6c97a89363bcd +159500 000000000000065ce6213ee8c9b55ca2ff7935345a4d1815341688dfd63f69af b5d87341c69d4efc5ef569d6128b761bc30bc8f1cb7fec9add87ed0cb7d86c83 00000000000009fe41cb0451656e56e1d1b3dfee9df01224c1ec41394eb59d1d +159600 0000000000000a6ac935e28d97f0aede5ad52b4f1c9de9852441d53efbe8a366 cc812343831d3fb2f02cc8b447abd1ecdc50ba632a8b299f807c7124e1b77469 0000000000000e1563836b0ca3270f81a807449a5454651f4c475f85ee579d6c +159700 000000000000005e5852f7cadb5cbf88aa757a42a3126b41b03d513f5b9cbb41 7b48c54c0e15f32f56762ecb1a27faffec05578c161a77905c431d25f50674a2 0000000000000498c7b0048f048e5a3181cdeeaf1e977d6332949254ad6efc38 +159800 0000000000000d00734781dbae50f14b5aa5696f54b1736bf3b3c7d3d14b3ede aec943971987ede2058a53c77007b701731aad1aed5ac2b83ce7a5028af16770 0000000000000db338368b4190add7a15c0390f31e7df0172f4a942c40b52e31 +159900 0000000000000c34649af67c0d2e3626bc1bd48fc0233af1ae19172789986901 d0667ebc5b46aec0cd454ebfeeaa29df77a230a2e13b33c0b3d687c0d47fa020 0000000000000a3068b6f9647d57938e192a20d36186cfa91e245213b8c96b4c +160000 000000000000066c6e629b2fb49c7fcc52b82fe9833f328e0c3943856facf231 4feed05bace1c590f857e546c4e7672fbbfc1a0f2ebaf5a79f58e3a4f1efc6e2 00000000000008754857069b7a1df3acd1643a7ffe1623eceebcb7346ffd6a63 +160100 00000000000003649e905c40c47f3b0fe12a1276989359ab46e8cde92af7a534 f6024eec0f1c6f17941a431bdf431fdbb0e49ad041ac2cceaee32a141547bdba 0000000000000c812e8fe23eaf03d1342ab3a1a62a4265599b1b137ec31ebf87 +160200 000000000000010f123e93970bda828b9bbc45bcee98ad9d649ef9eebe4b80af dd59ff8bde09acb3038fd24cff1b0b632b04bb08ce3bdf80e7e3303e2d1d6fcf 0000000000000d468d8e817bb3a9d4796064c3f8c23e2ea1a2a595fcb87eea71 +160300 00000000000000a7fec67afbfa2883ffa313d1f70db7d03f3c4e4bd580ab88e9 a68474cd93cb52c62dabe5ffc2b46cddfaca8177775b61fbabd193bf06e0bbad 0000000000000aafc386bb41912b33f751387ff38299101dadcd7453ea1d9663 +160400 000000000000059d7a720f3e7a7c95cc903ad33bfd6da365020581d15f705757 73467c41c75b485623bf4e5e872903f0a9b8604aff15716c1cef9e6523a298a1 000000000000034c0d4f6975272cc42c918149c891dcf278f423b5a1effbe86c +160500 00000000000001d1744b6c765ef9b92db0ea635232720af6b4c917349659c3a5 32f6ed124110802c130b4e84c6b0fd8a9518c8d99f2262ae59700321795a8dd2 0000000000000c54c3aec4388855e6a5f5a7921c59e2ffc248e4e888011703da +160600 00000000000007229476fac88c253d25661cb68dada83b35610cac7566693016 a690843720eb35bbc6259b69177ee3210dad8d685017df4044d5c153aa765df7 00000000000001da3401325827314d19025d342d882f816facc35f4c313a0dea +160700 0000000000000d0b82afb23e0e65856abc57453d91c51ed7a2851a57bf8c86ea c6e87456a865ef1434a2027df93240b8d0150bada9efe6e062c5d79cc90e81d6 00000000000007f3c75b67f35b7f79ab15c41ef80492cca8c781dace5180ec53 +160800 000000000000075ececbe542e3431a42127419af8614832be7487a98eae83e75 26100e4759edcf7054ae7dacb15e9c794ab50c60fa15c6082aa093c61ac228a9 000000000000062c8318bec46a09316b2b2ac7e6d0f2b522ba666b2ac22b9504 +160900 00000000000007df3b974177458776b54bd23260a0135141499a9f712ff4d19f b62de14ee1351dd1e6cf8f09eb4a71279b18368e8c898df9a5710d9ffa5a3ba9 0000000000000214c23d01fce38ed9cb3a625d5228fefacaa2d13dcb0b8fc2b7 +161000 000000000000041db1574dba07ab482e4e0da4a47f85d2149205562c55115e23 07ca13bfd25e25ee4752187e49ac40fd2c3febbe328928051013ec161232f04c 00000000000002c21cf65f743501bb7302c9ec17e88c942c846508f390369eed +161100 000000000000049077f1a8346ebdcdf668eb3c46c1c3466c8239b8563b94749e 6da2337957c1ea8fd56d059ac13a8a2141267db6fbda479650827e829dac92b9 0000000000000589b7dbd82a3d41e843d376c0f5739da49bde76a05adde8d0f3 +161200 000000000000095897af517cdea929fcb149dbb8333aa0da11daa485fe233629 00db74f4a6835ce372f0e4dc0072049254960b747a17410151b6458685d91c93 00000000000009d0a1cfd2b907d620c1f77a68a938c10c99cc504814f904c1b9 +161300 000000000000011dc73be45709cf36f98bea640384dc689e29bcb5a8beef21f7 234eef5b4bdf93551914ad8d5d4a390d26b7d455d7d18414f74769fdd5d9450a 000000000000094f3a161f5a7e86e4d4da921feb6b20529443c3840591035373 +161400 0000000000000943791b8f44587f3d46d20bb8f1a63ffb22bbd9bb1d24bcfdcb 5c70f77d9680f90aa1bacf6b8fa16c65e04b6aab3a6a7d303c59b29041d6c8a6 000000000000079ee82fac4a50ed9af17b56e8e8757cb01ac827cc225cc00f22 +161500 0000000000000203a51f4310b4a715a7fcc402c2e135970cac09d0a17a1b3110 85e95af0716e311a539c7c82dee225cd1437026d4879ee8dba10bd2e44f8e00d 0000000000000d2b1a8e4abc9d5cc12857526748258d1bb9467aaa534dbba9b0 +161600 00000000000000a416fc79b974678e574dc897d60f64b095ed494a8d727b61b5 70bbda9501ddcf1438bdec770194b1b72dbde7678abf12c2be072bb9e2a2657b 0000000000000a74bd2a08affa00db35c97ac3b190ba5318c45fd9d4cc6c14a5 +161700 0000000000000751c3c4d82da008410ecab6fd78044e845ee40d1cb0782b1fe4 879bbbf1e3d5738f9488ec01c7fdf198dc87123502a6666fedc685b90c92f2bc 0000000000000c3bb6e90363bab1d02af6566fca383cb40d8a580c171f422272 +161800 0000000000000626a4ed7d6904773e16505566c6933d48e389054c4e779fac7e c73b529eb06b6f971e9d3aaa3e4c7c9f8b817aafbf6456f2a0005ef4212b7b2d 0000000000000bb840ed84397f8b3b6c59d753bc785abb76263aa9bad4e1c2b9 +161900 0000000000000b8cc68ca144e37eb33becaf95ba6de2817dd312db9a8e6976e4 76372044cf6ae05928a0ce2468ea2a548c891406b797fa45f8d0649557b84d17 00000000000006199ef3b56a7a4b29563f14c63bfa22647012cac453039fb4c8 +162000 00000000000001a83f5b20cd132f38f792fc02a17eb14d494c780ea9d1c82acc 7820879a5a70b4790373034cda898d7eeebc649bfc5c849398874988dc4b6206 00000000000007df40fd05a7b78bf3a920786711de165006d7c9750ea4043dbe +162100 000000000000001ee1f2f4ee232cf71a7a909d73d631d88256e9279adb286c88 e2e15498f165701ef7b8cd6dc4554a383f01b247bbf7c3f858ad6ef40d7f3af3 0000000000000a7667121ac52bb600d0603058af6e309814b75990f9190d70e0 +162200 0000000000000371e3832d4dac14040a2d11d9760cc5f1dfe62cf4453b31ba86 f475f3285f24bd56ff0841cabdbe4211d8515b696f50402d9b2e7cb5336d7427 0000000000000a6d004e051b0a6c4b5d66544fb6a786c175bd37ca228d8a9849 +162300 00000000000007506819e280c866556dd908e2646c253823bb68592e02284528 ce995438278e8cb975283502d646a549c9bb558f1efddfa0e5c4ce2b538708b0 00000000000001996d701ce17af030a6afc4bff6d19c8d5ea541e7b6edc20f5a +162400 0000000000000c916f972db49ba0a2d6ac6e3e4debbb0339b72d5e7a4c704cdc f9843821d88795fde84ee3e69aa92e23d7b67f49c57a18c39f7e6b3bb4c6bf11 0000000000000188fd0eeb575555cd4502d18113a4948bf25fb5e7d2972037a8 +162500 0000000000000295b629e94570ebe77eb499285c89f45478dd7aba55a1f88d50 738d146377bac8a539baf24de3679db2d2f5359ea3d1219b9ca83026840ad6b8 00000000000008e69407cb4aa45fc2647db285ad9e0d7dae42769eed5f7d9a2e +162600 00000000000001443664a56e8209aa98422db7aa23d8c521dc5e9e29ed6049ed e7d743091e136f42420451f51f9a1d6a4019373278f99f6f21da59b50f8b6a9e 00000000000004aed69373bb893ec73d11a2aaa439dd55e5bf9adb7a58d01ac2 +162700 000000000000084522e11fc92f2d018b6b6a27c57f87060915d8d5f0580e88e9 81fe2f92d35d90766d98d281c588b7570ddfd41b95abe1223804695d392d8b70 00000000000008d87e7d6ee664979842480757ab51a63b8b4d18c712d18367aa +162800 00000000000003459152238d54af5a27bd3054ff043b811424854ba34856197d a954d62848fa4464f2b46c4398b2890beb90e9710451971b4bffea2200164fb5 00000000000003f6ba9b1eb43e1d539bf3b50b2b12007527425d9ebbdbcac863 +162900 0000000000000b8e9eade1ec2e778e5ac4a72297011051f6aa8ff9fb8b1b529f cf8a1365ce79f67842f6bb789aadd88dbca829391f7758f6132d760c2be43481 00000000000005018eb54ae17a4d1f27227262249a6c0497f307e641d207295e +163000 0000000000000d66c125aa33593716ecbf6ef26b6f4c1d74998a87cf502bfc36 9a7c145c160d6bd2b893a5cb3cf3a3a45198ee96ec2098e11848ba7c3d7646e3 00000000000009f32a19cd841e42d9bd4524cf6eb8419ed283d561c35849a9eb +163100 0000000000000487b04d498f8ec29fc1fb07a76240d63b9cecbae6f5bd71509a c6782c491462e75c98ea7543d9282f0a9b80bbf0cbc2d0a5830e694221055811 0000000000000d4d0865ae34c01e8164930f017d707866172ae17966a012c5be +163200 000000000000006a4c9c33805a0798c894cfb3b0c91918a694ed85d65b3d9000 8d933a81c633b00f60f77ec17744241211b349432257b194212bfb77d3c6b8c4 0000000000000a514e86288352b8092c249baa51694f69d060870eef1efa6af9 +163300 0000000000000b745159d9536570cc5cbd1fb52eccd2a9f7793e10d29c3d1352 b7ce4f2338cb843451b2a76c30f5a275612331b9a60e27afdd5413ced1d7d550 00000000000006c9236c4a185222428bffe982fdba8c5c8a5853ba22c9f1e3e6 +163400 0000000000000ccef2874fb04e9ae82fcfa8af79edacb76d912e66e0b1cbb9fe f441c2cc44f8dc4183632c7758b950f61f539a6ae4d17e3b6df4d25aa09f37b0 00000000000007a0e53f08413420d35585627fe25b1de4eb77adc9dc6d6ce1e1 +163500 000000000000087da748318a644fb0422e5e2e4043ed1ad728dc699d4a825bb9 9ab0596225b6e13ee579d29255968ccdaa3411dc0aff5f1448cab8de616f3182 00000000000006b34747d9ee7723a1b927e60dd3436a26fb72dc0d2424b1fe2d +163600 0000000000000a79ca3fe7e37010dff0e891c057451bd61096e4aa1777c42a53 d1af0323b5532a28873651d5f553df61c88cca9d29677fe78097c170ecb61abb 00000000000006d5f1bea7ab15c732a6b757045a47006475d472a5cb6b76fad8 +163700 00000000000006bf77423f2392e3d5cb5289d064c1693a2bbfa1fec525163421 217d50b8656f1e29895ed3d802b5067651569c70021d19e82271f72f1f5e864a 00000000000009611e31fd14c3c786bb792e17f9b95f65620491ac55ed4bc018 +163800 000000000000005c25bb6a16e3ffa64428fca15ac30bad54c25b9f2a44b1c1a8 7c434b855e4bf278f7718a0aee05ae171e43cfa409c409346b97d42a6181ac19 00000000000008fe2d3dddce5607898a56c40d758f72205263dd0cceaf7e1111 +163900 000000000000030115055f7afff3c1979fcc74c0c23c55c9a81165e1bc45cd7d 51f7ad0c2489e14385e1236fc7e173d7abcce0b2048f5b086c46f765f87c9806 000000000000068341e31cd8181ef7b70a9e5508c2689bedb221fa5dfddff45f +164000 00000000000005a38f162cf308edea0a0a5d000bdb2073cba2386ebb1df7a2cf d561d8f10eb58ea5af3a9cb5fb3b91723db2afda2a79bb7bae919fd01d024614 000000000000094d462f1a0dbca9187bca75238108e11433be19c9c92da29a25 +164100 0000000000000082910354a5139437fb4c69756ef5906972cea316e2ff3c2ab9 e95370c666d32b0adc9966d5b8721c12933c7fb0250c996356d4938297f05750 00000000000000228a15368e3ce9c1e83315f91592785f322cd8a03c449d8e91 +164200 00000000000007dfe77845072e5e33d9b47cadba97c4c946dd7cd3b9fbf43da3 465a02f3085b6e2b3f235f278b216ee3c2656c5d154f67c68a870aaafff05ea8 000000000000074368b782f3c6c291ac6cfff07a972f3827a568860398ea12fb +164300 0000000000000b205a09ab7db81fcefd6463af17c07022a7aafcb306fe47aeef 70547c825cd07b5be6417a2fe47cbcb1a9a6f4036a64dd479e785cfe57214596 0000000000000215364d032df63d9a6f7550a56cd0738d5c8d44ba5cd6ab1a5d +164400 00000000000004db2c6e16f9011087d0e1ecc5a12dd725c701cd58811907deea 364ec3248bb98d1d4c06e17cd38e27aab771536e5416af844554a5292adb9e61 0000000000000bb5ee92a910c1e4585e5583d554009938f1dce80712ab9776fc +164500 000000000000089d27a58d0f0d18e6247ed740f9eae9f9ad5b9770925452380c 26ec6279ba5c1f397416ea4aa39801e78e714d5d12ed0ef9f39dd70fae1ee938 0000000000000a7f0f6b89c3d6a2d92b4d0e5e4ff079fbc3ca8423ca49aa7b96 +164600 0000000000000bb278958f40343cde5abcbbcc304f216b218d7e21652dcdff7e a0f7273735175989869b528441bd43b9aec0df5680d5871fd9459d98f822e9b1 00000000000005d39b8a8bb45265bcc3f45423953b753bdce2e8b6130658ddae +164700 000000000000007df2f0c864bfae804dcc6779406553c5a6b5ec4a21c96d381a 0f16768c344579dd3ffccd91c6f7d3d2431519d8981e71924a9dd09ae606ea29 00000000000001f3c382bc1e26923aaff9123adcfe3971698ecf65b2551d0ddd +164800 000000000000097f833c6af6c91c0500d49e266085de2f70fc56b6ce8772f42f ac7e73d02642a2953fa764dc69a28e596587dbc053a9d7d3bd50fd72ed8e9ab4 000000000000087e689dac72f9901d0f91eba53e01dc7c4c0bcbc51ee9a42112 +164900 00000000000000ad31e87966aca848e28a249bfaa5e07ae2388529c613be2013 c127442881362504141e596b7d3f6a18f2052fa5d11148e06a065d8d09ab8bb6 0000000000000224cf7af34c8bff10bc7d99322ba1629463f5046fc2fcd2f526 +165000 00000000000008863b4603ab6886773685d259c8bfb90a26243f76adf167ac5a 1e77665e65b323e274a7b1414ed5880a6b00344cb260fd8eb2644c15cbea1fe7 00000000000009f2aa6a7cce7480214a84cbb2f53a6e5cd856fc3d55e46a3e7e +165100 0000000000000bfc77c672979281518b01db6877e5548b513eb44f9f5db6e14f 640c8174b8267e9a270756cc1f88c51df9887a21f0862c255bc682e21e2ccc29 00000000000002a6cb7cd3c7d0b10c566ebec059684ee10e03eaaa6a0f37c2dc +165200 000000000000067c87cdf56536a2bca4ba58f2fc97f2b11d59d5d809937caf8e 9c5e7c9c8a1ad3a0a83682e40163c770f32c035559a95acd6e8655a4a8730887 00000000000003ae7c01750018d532550be460c523b42ec60e1c117f5667bb8d +165300 000000000000077540dd1566fc9aa184228a672339a019289c705c128ae22fe7 8345fc36879298b0dbf38ecd2903d0cf89b7e077dbbb8abcf724b6cfde664713 0000000000000984e07129e54bccfc801b455c1e43277066735b6acae77063d5 +165400 000000000000068e6204201727d960ac6d595eb5a46f495712473b8594b5421c c37e7c0e2ed922a45ce2b4c6048302c4d9db3d77a9f872ea17f9f17aa540596c 000000000000000b45aef7ef7c165509f56639dfcab6c673da274f6efe9910e6 +165500 0000000000000746fd2556b65f46d56ba0811a15dbeb48b919ad875b944a3569 dcb7489fcfe383228be8e4aca899ff555bb40970bca2147ec5451fb4f88f27b5 0000000000000053ec73e4acbe29d2a70c8e41cf26a6b2e691ca46898c851163 +165600 0000000000000a71df2c53c083712cc837d0c8b940731b1549f30ac5cddbb184 0f228157cff58780ca7ecc11295300582cdb417ef96dfbbb5be08c3001868526 0000000000000647b253e1b8e321cc0a3c03cc0e104be41d8606f9da95f5646c +165700 0000000000000a4cdb5a63e42f975af2cbf2426d966be01f087b62477776c3bf eb4c2523fe043c7b6f9f9d5e5b6e27fc8bfd1e04475fe9f91fdec26c0ef5f1e2 00000000000000a0ec14af7ee76e09cb960121d11445e1d27dfc163061694def +165800 00000000000008da23f05e81937e393bf6a8f9d8aecb966de96a288e630c2e61 525a964b17f04070500513d9e9a42759504fb93f0e327c59557f71f0dfe9898c 0000000000000871755c4e86a48d05d553abf16eba4aa707e87448a4797b9249 +165900 0000000000000580bf83e1c2aba922cbb33eabbf83cf0805c9021e525260124e 26d684b3319a30e73e34eb253cf468c60c7512906eb65120b3bc729c47267aa8 00000000000004112d3274e746c03efd05ca37cefea89528d62a48cd5ebb6ff1 +166000 00000000000003b3402f35327d144a465f3768d6e6cb06cd8a2d8fc1328b2477 b5c0d1b086b775f4bfd16028a90e9ca84b10cc5de5fb7be6361edf65aa5885bd 00000000000003dddc13fe8cd12a0b31f6a7c23a42da5052c3d65ab4b764a84c +166100 00000000000006fb456e96abad11ab0d08931d7f045e6b695bdb3dc2ee6b2ef1 a3cd2d47627f8edbfcac5df83010c999601a2c4ff279009fe1c2770268a676df 000000000000035e10ea2c86553057126cb19af34a5df013e23ff4ebc597c544 +166200 0000000000000a5e45d61b47c7daac65964a35f966b96a0eb2efcfd44b8cb62e c4273f6c4cc3281a313a7d9cbb2d0d8a1ee3ea8579f4ca94c3e0253e885d73a1 0000000000000c05d7f08411dc1f01243ff3f854761a4b7b9b9cf8b483b17450 +166300 0000000000000a9f610ca5e50cda20f7ba3c60cbc7febf690ee48ebc21bbf73c 70d12e090fe448bcbbc293eeb3570fca45c286a45af5e6005eea377d68b5ab6d 0000000000000529e290a8e4b9c0c679c5dff57f2906f2cb2c944e57faf9aeea +166400 00000000000000038ca3daa43d5616870d9ac7ae21a19bea55a1a696e0dc1a6b b2dc66877520c44973eaa7acc77f173094bb4bffa348d9281c2a0d1faee47375 000000000000033033c26896c71618f12fdaaea3a3b62671973c55f7f143a8e9 +166500 00000000000007e2e7dbc2b8f153d5a9c9faa9c6690877d2d3455ab0b3218d52 692797158b6d05c3c3322956aac0b5465985be155181ecb2132caccf9f38c0e2 0000000000000149c9d771e17a4307ea08387c89f2184a8c312fe2094ba7b89c +166600 00000000000002443e9c5e83df0209ed95895041888493c5c54a7865a86c227c d3d3121c29796787767d7268ff4f1d3681de5442f6843695f00b21805949b200 00000000000001a6aeb8d98b2d7d630ab54bb7365fee946930fb51fc6b2007e1 +166700 0000000000000661cd66bdb444542111676a1b82a211890644e39bf25a940560 7d6903f41b9a97ae54b206e139387e0dc4872a15d86ded3c2fd95ae2b621ed92 0000000000000453a1da7a6f62dc66eab937b09ec1ed6e1fd12e0ea4e7b7b4f5 +166800 000000000000053bb866c1dbc200eee7d90d7c3932f8150f9a7227dc33a73907 31e47b63761e96315bd56d5ab10f7d12772b09d6d9828435daeb170f82943d57 00000000000003f1edd58f0d96e9725b88dbd4e0101174ae8758d3f05886d3a6 +166900 000000000000092a550e9b271989933928d3e681b39ccc01648e4cf30038e49b 188e46b4edb13f2c1acdc269b84bbe179b90e396a1ae4d6be5bad53f3f1743ac 00000000000000f9960c44ee8f553318e8fb95c9e2ac18fdf39d00086c17f12e +167000 0000000000000a082a56845388ddcab7797b70f91e720d883c6794c7dbc49901 7aca33b45f86742192a6ee1940bb5c66f9c57efbbf4efc5579d1d329954301f9 000000000000062a8096e919e40b8b05ce2ad7d5c67c2d63beb63d56b8a5b9d8 +167100 00000000000009b78a1352f1b51126c7b89c6e91f26ddd76f609c3d295dba969 116cc1782db00f3beac7dafa1dadacbaa21215e312df245725036e8d9b54b3cb 000000000000080767bd87a936228c022e5a6781f7d40f00c3b0f6c3a39ef703 +167200 0000000000000b303e117fc792e9f019f64f4c00846a352394e67629b4c8e92c 0d906c651ea86ed68278a6a5d1ae388f41e1d157a61d72743168d5ad1f9c9177 00000000000005b6cdbd5958bca6b3a567e240da2c688ea731aabdc3d0d59910 +167300 0000000000000634650a03514a928f1e52ba7a4c6a4983d613aece4d9072a16d d5ca6e0126bdecf0ac37002a3d97f48d43f45053c36c25a1186cfe48fd56f090 00000000000004cb0a52b2d660e6e3cd91a65bcf3f2c646a6898409684507007 +167400 000000000000074a45870df1db1280370e9e0bb0a7aef8b06d1b91d11610287b 19315c0af695038fef5bea788fb063763dd67fc773337c673890882f300de2ca 0000000000000536cdb51f3ecc258e5d0aaef7c77e97fa68a00976c227e6b401 +167500 00000000000001e9133463d9aefeaa8b40bdd77e307e8720e80c3408b04059a9 122327c7ec4f572e8fb4e1c921dc03a19dcdcf39b9e63e5332622dca015a679b 0000000000000719507b9e871e1ae361ebe0a3818f3e660a0ff319576810d0cf +167600 00000000000007f1c694428baecd66cfa8f0ac2a276e3b682e7c39c9d9807ef7 9630cb5e73fc615635fdf2532caeecbbeb4a68b3ef05e74a1af31835ab92f09e 00000000000009d3221c8d4bcebd43562049038f63323b7beeed076d8a6a42d4 +167700 000000000000047541c606ed631554b7aa65eefdd988ff259c87818af0c1bcb1 918285fcd367c5fe01cac921af926d8ec39b3e8aad2b0038e5815bd261a81839 000000000000066a68040779bf2a793d6132970fbb931fb145d9ea3063fc7e0e +167800 00000000000008f9585fc1bf26cc864ea090b7928a9144a20ca1f4b4825ca68c d9b03439a120ad4ddce18cb695756ec0f0a5b305e289d3a6ee2209c461a4879b 000000000000078841d15590180bd6b6e5e1e5013dfde24c037aa6678ea257b6 +167900 0000000000000bda3eb35bf59eef25e7354af0cb904421f6cee44464cabe1a6a a1faf8d2757c538320e338c005981eed490b36699a450959e295fb08039e4f1e 00000000000004ca947d07f395e89f38cc1acc8854e58d0980eede2a11d8b83a +168000 000000000000099e61ea72015e79632f216fe6cb33d7899acb35b75c8303b763 2a2be6445a3dae92f2386da0290176a9044562c2dab196454494a93f4ef10ee0 0000000000000a40136ba56d6b514769534831e9ba805fef4d122f6c8d6da51c +168100 000000000000068e81398915896ed3cc5d0faabe92c0e1b145b6fdbe03474cb9 f576457daa87d65327d2e57e59c0edb814c5608cbf9a59900ea154f3a8bf923e 000000000000026e8d868371c821994b7149edb4db5415a6140f8191ea89f1f1 +168200 00000000000002780f2f2d67789a7c5dda3709e867026eeee453572bd1424b68 6f4e2595ac4bda7aadebb2e28b3248c8099410e15f6f937e4eae47beff39439a 00000000000005996241a8c6e3475a2a3adf68388000b4b0aebf8ddf15aabf2b +168300 00000000000009de7dbc06c49f4c42b8eb90639bf680519ed045020b346fe079 82d18dbf291c6f6b79076d1e3c265cb5e700ab85d4ed0ccb7ae0cc63a3ed0d00 00000000000009169dc33a0ff478443925424fd10cc55c71dfe89831f39593f0 +168400 00000000000003c562c8ae7899bd2fa6466246048af9fdef6e1f3f7b3f621c10 2cf1601274e341f1f1462bd905391f24cb3d519b48437aae1bf6709a8fc6260e 00000000000008a8ca7533ff3cbc2a5ab52553bc2066a18a20cad8978b440bbf +168500 000000000000054ea0a9027e5eb507fee5b5dc29824365bf6cacf8bdf0d21aa0 96dc10d5d2cff059883d99e9dd606cc5876fdeb5ed43ba141a95838a6aa90b27 0000000000000582b5419f2637dc6a77d4be3feeb6aeadb11117b191b16e3f74 +168600 00000000000006d928053f2a2affbb8a00f6d93316b14889fe9ae7e7f0c095f7 578d36f3ca5afe778793716f724161b8bc3bae519c1a3335f1cf34a82bebab1b 00000000000004ba070d16499ebfb6800d91319fff8b1c22140e497e429f8dcb +168700 0000000000000401e949d05918d018469d3131a6d6bef15e386ec75e6590f4ce 4c6ce4aec489f58cb5099be860cec1f5db37322b370931fe103de8ce018cb23c 0000000000000a2b9eeb24812e6a059df30d8317c7995272b0b10305dda49bf4 +168800 00000000000006a94033d639d71948e768de66b7f7149a7b6e0580d17c01910d 5b2928d12dcff32524ed0ffaf392180f3b1f1ceaca21faa9f991f802da137eea 00000000000009300d5cb9f20cc2af4d1c702ed23f19b2b3616446dfb143c07e +168900 0000000000000bd3cac23c1a3ac321f365c310386d1ac253606c69d2e7237740 b069a0568964990fc7197065bf07a2d67dcb89005d0718428ec83badc5c697c6 0000000000000615adaed02fcce55cfd30dff6839d288262957dfb0c304050ac +169000 000000000000099e9f2a34b7780d71b1234e08a60afe229dc0aa822f9d841610 55549bf111657a409636b95f0dbe2a94eaefd57469f9bf2d62c70e4868bb3eac 0000000000000a519a8f5e43d4f4f1a32f0c37ced4aa19fd558d761c34f33f1f +169100 0000000000000b179c9067a00a0844600f74234061bcd75d10027a00e2d938ee 742337152b88a2bcc60fcfb7fd3bb0faba871704102f3691bfa19f95c8f181f0 000000000000053b93551a5622442908c60a64010718c621758e35606b6097a2 +169200 00000000000001130d6c5d5ce8558a9fd3a2da9fe2a1364c02ded5dfc0b871b0 1f401d7aa6d1442671e6a8ae4f59e185add729e4f7df6fd49fb75a434a69f23a 0000000000000784a32a208d25908a42853cea1d8a957eaf3fc82125edcab213 +169300 00000000000007a2688e8d5a2416baabc4ddb30c632a5349cba7abf9b9ad5a83 238321c7ebc5af15f3ffc6bd3814a185c7e345bdd2d3cb12a9350e2972a043a8 000000000000076c4ef844b951a8b1abd2130d82b5c1447c210d4764fe404a9d +169400 0000000000000ac53b8d446e5c0c5b1ec64b66c25f73d5b7afb10e51524fc719 dd3c32b116385cabd20757e7dcbddd56798370250d2064dfa3f87cc733079af2 00000000000000e57bb24cd80f899ee1045d20fb0406780ad6bf7a41a6ee8c41 +169500 00000000000001e8cc8a12a97576bed718cc0153ec28fc4f0cd5d40ad54660eb b9390379f9614700c140b2516e9c64e05c6be752b0cfa43016f486b3e003c5dd 00000000000002e6b766add6a125ef6da4df7e80de0e513c9523078a0e0cceef +169600 0000000000000713fc8ac9c3fd2e8c5e3d8c4025a9ebc9de3fa295f5046d7ac4 a958fd4fefca2cb55def1ce373ef991c415be381bd1cc5d4a529e49162af857d 000000000000050502728fe6d97948e0b28c864e37f6f6153e3e5c5f4cb2e38d +169700 000000000000013f717250b231b9fa50641428f5650e11aedf96be166ba1635f a1106306c8464d1ae4f0aaec44d2a1702162d0e5fbd391d546110a3917f4339c 00000000000009410e043cc9aa386c2269f4204f448310eabe840f151fbe5f9c +169800 0000000000000883d011b9913eaa8d7cdcf1083489683c67d69ab43ae782d19d 0b368bd44a0ce4d61994f93d6dd776cfba7eaa8fcdc0332d468cf6bc1f6269a5 00000000000008af30d07c497e608bb338abfa7161933f3df8aeecc7905f4f1f +169900 00000000000008ac62b0833b3d8268ad8da48c79cc2be6e3801f1937eb33e325 88cd845b53b117ae83ab862123e1c61fc9888e4d571e106ce0790db6c92ccf2c 00000000000007dc56098c3b34f05c0c95886392df09d6877072245369338929 +170000 000000000000051f68f43e9d455e72d9c4e4ce52e8a00c5e24c07340632405cb 657855851f29092a07b2ab7cf1365c3a0d4a0e9ad7ce0c17cdb9b2804fc96d7d 000000000000074cb2c7d9585396b1f64b7e2c6bdb33e354b8e580c21238b76a +170100 00000000000009965df431e78c0f3062601cb5e287e9e3bde4a442eea2a747a9 aaf2993ac8c85ee183ce8eaf9e43d5f8bff31f055fde5541d15723a3d999e087 00000000000003264f94fd0b297a274386997a7783d14a9f9ec0bbd473274219 +170200 00000000000007265e2e1481b2c06bc608da8b9573c6831ae5205c17b08523c6 a52441c18578487193994a546085099d7a233f1d2370047d4f5b1003fa8505e7 00000000000001607c85f3b6f60e61ce08bda7eb9dbeafbc6def08cea543fe79 +170300 00000000000003dd67290087755b499693ab1a26489f6d275fb88b09d6b332a8 e024b9993dbb3fc961e94dab7467d67d81de2499bd9ab50c20279d8e4e956e76 00000000000005e5077d996fada7913cb759aba0345578059f4f9af0f6ad93d7 +170400 00000000000002f11c66d35af92d0d1b33fa154f9b397ac53ef6b63f546c8f02 730b918eddac9e9f3c68a03586eb0807650096ba95162acbaa3996612b076dd0 00000000000006edc3b76ac5738adef0d9ee010df2cf742233d726c4a0c2c789 +170500 0000000000000574fe503c699d4f656e8f48d7cd5bef19182c6a996408d4a6a9 e977be99fc9e465b54b7e063ae4737f929fc1716c8828683495a8231f9cd3907 0000000000000677ded7d11df9be6591bde0d376df668d696084cc1bf129577e +170600 00000000000005209ca04495bf5de4c8c3a0c4b78a58cf978a646ee9c3bf9520 3232fb36f2d0dc207ee201326a3c542ff8cb51e01aa0fdad0ed5fdaf25a841e1 0000000000000a549245648702a052642a8f771bf819079e01e8a0d81f61de86 +170700 0000000000000b0a54a14561805212262c3c0023eba29e1be4c4e80b18284bbc e3a049870fbfde31e828be476a89d4d1b6cbd56bb426c8e1db4e0f1b6803c0c5 00000000000001ed9d875dafc0b31a8126df1c5931717ed9bdfc8f073745d809 +170800 00000000000007645f923f4cdafdc5bf775f42630476ad0db08f3d1c087e369a 24540c938222c682f64e6895c55c86ee432e3d51645ed19dcbcaee8fe49705d5 00000000000006428fad8ae116422d97ea6ef0f16625074337c12e96970f4bd3 +170900 0000000000000a4764809483f2e0a2132e8d70da38e7d15482cf9a251350c3ed 559d6ed7377e23f5b9a57a480bf90aa4825932c3832f958bc8ddae19e48f3921 000000000000032815d2dce1131be1b403134295f84f5dd88b6d2725d2277e5a +171000 000000000000070e7585c214a2a9628c61d5be904d318e2cf5b2418a611bc8fd 7b65a06fd9554fcdce5241c4b4e9608fc05209d16b243e6b8b1f1c899f0a821b 000000000000026cfef8caeb467b83a6a74411a8a534886df0527e0fd4f4637f +171100 000000000000064642393f911a53fa1310c4075c26a9ddb106375ef3963a11b3 12d15de088289a530b4a173795f174fd0e3e77ee6bf4aeeab150a2477f00204e 000000000000041180ccb20ebf3ad69cbf54dda56e43404028452ea0186d3f8c +171200 00000000000005772a69b8a0b2ceac3a1364556f07b9ec3e97a535cc7bfa5d9e d81fbde7ba4cbb7da511e13b9e6840678eeef39f4f263672b9a043435f95fb4d 0000000000000a0bb1e12a5bd988c6b1c887afacd5a22050e54f03b9f97254a7 +171300 00000000000006aabf45578231175704cd94052b8390b2209bc45f50c15f1608 8a660ff43137e6e38f17a7114dc797159d76fb88300f3e013b72e287b0292357 000000000000030482139ecc1e672bdb1eb15b34e2d78eaaa37fcaa743ab150c +171400 00000000000003c95077d382b716fdf2080d385e583e2e8d322369499ed69273 d656bc300ad7179881d2b809b590279935acff34f2289464c45553abe1e5d616 000000000000013257cb9cdb80a44873e445b8a808935c5d0905a719d18f8535 +171500 0000000000000033c1c1833a32a088a36021af837ffb007ca39a762cb178c358 d357a943055e195d6f62a8e05c26332cd01e1232f3edf8d8f7a78a8a173cb84e 00000000000003df7cad23237deebc5e2ee77c4537692fe88d9bcb41f83fb20a +171600 00000000000007f2c63ffd4509afeab135bca06630c5ec22099ba86dcdfbd533 60af754c629c8b3c12b311a521a8e55c7215858662de82efb154fa166af98491 0000000000000034d9c11d4ec5370b570d9c4905aae368bc10df7e94387d891e +171700 0000000000000464484a8202f455a8efcf31c8ea925c1905ba5c82ccfcd6a73a d9587b3fd4bf1d3a9febf2e5f8866eafd3e9befc4f2d9108b1f2a118ad676815 0000000000000ae3ca873f1b81a31027b91955e0b0d39e00cc8f9bb395747ded +171800 00000000000001b6be86b1d81a3b18131ae0c4684cf30002a39148ed8ed21943 2baa89c95d470e5260eb163c5c00fc55b43c7f4c328cd7ffdf3138d9e203e5e7 000000000000090016e2a0801173e9380d4fde534baa807b803ec7c1df72c88e +171900 00000000000008b7c4a432aca449da9dc5b40a867704b6214dbb48cf9e2bfc26 f73a8f5b272c2416c0a862f0d7d8da30ec4313bc8a429a11340a918490a9bae8 000000000000027b72c70e8fb50057a50f8a0defc177f6d35f9445caaa25a295 +172000 0000000000000837e82c3a4ebe35a1d1d943e056234dba7c629922c6d4052d4c 3924b87daf870f8a9bb3504040002b6b64533a2745c52ec2bb125d88c45dd601 0000000000000443d106c7a849bf6c703002756994eb9c93bbfb20b54ed05ac1 +172100 00000000000007effb31f23496d30a54f98b51a1776d26a60e943efacb988631 276e9863ba87b98ebe6e030318bf709d076c0f4908aaa57cd30d1bcfb698477e 00000000000003a1ff4333c041e0e991e5baf760e80467fcb586ac5a7eff0986 +172200 00000000000008a02a67184cd94cfef3a50efb066ef00ab6221e2b9fd6f96b88 c80d840c7f694b3ca8490b8b336c74a721c081c0bf262af2d5c1310f24215123 00000000000006083e3eae638d76c93a931bdec8acd11d749cb534e31694e3ba +172300 000000000000053c12da577fc895f447e5f2a0b760e704860cbe60411f5c6bf6 0a27a6ee4c6049f10fd4f91a49c05d2290d133f02d95b3e2ee95fc9183aa136b 00000000000000f4e431300f36eccd5b1f9fd51f620848eeddfe1c0c4fd87185 +172400 00000000000008475bf844461ab35d3ef8f9abf3af9b582c0fba44656446387d ea8a6b4c9bad7694849a85bd0c7ae0524524b9b5b4e021e0cbe62f80ddb5c0f5 000000000000069a9d827393338bc35e641e411a5edf1647ed6de214cb197606 +172500 00000000000004eb01a7063c81066ec47523516c2bcaa3308c1351c0e6176e68 98ce65f840e8193bec4700b052545509736aa672cff0d05000723790a78261a7 0000000000000853e7182d5a48e9b2dc806bc3dcfde4349fba2b341175ea1d81 +172600 00000000000007e9ca758184a63181c897393d403da506a46e9398f22a06964d 56e6f4795a3bcf03eb356a09ba0fe6ddb35c18996287e08746e3ea5c93ad019a 00000000000000fc1e2da9181e2087ed926f240c07224febfb12ad8fde644274 +172700 000000000000053519bec78fea96d175959cb233a43830afac764013e06d705d 90c835be45adeb8fac453fba18d8fc353032091d2a501dcf62d3aaf99efac662 0000000000000599d6c3e0fabcbfe80934429b6e88f92321e981d83ac977710b +172800 00000000000006b5f49fc22c4864a6cd52ed6da26cc6555328eedfd1adf0d86c aca83f5e38a391cf323e57bb0c88c736b451713c589ac1fb4a942fd7f8407d22 000000000000079d2c8b5ce41f4b6564513c809d0dbd12343f34ff4f040714f2 +172900 000000000000015d7a1bafa89056d1f0afca48c20345cea330331bf448f6d1fd cc56f4ca9d23c901f1e994c17fe3881e8d08ab6024cbac7e4b65a1493ca8d12e 00000000000002e48b7bb37e4c48fcb1596f132379219b7ce638621876b0c013 +173000 000000000000077ff3de38ce09c0279dfd7746d07a476d72dd6323ffa2520ef0 c212b09889224f0b1dac4bb7125a9f59b76ca78b927e3927cdcd9bc9e6e673c4 000000000000060abd5d2b8ff55a15c9b885202da7ca697b7920d6a94bc2a1b6 +173100 0000000000000695965e21674c545ee0744b6bad840e5648ee2690c87240b28f 6201f11a8493931909b320d3fbc2fba3e446a04ff64ffe8657d877d0ccd8ef97 000000000000045e73b2d5718a3ce02f24498216a0ec26ce1b37c6cbe0f85dea +173200 0000000000000a675a17e80b40f7f3729a42568263374debddfc391e4c4ee71a 65bb1d03db428d9eed4575f13e95ca2bcb6cd5fc1556f3e56bb98c62e964e5ca 00000000000000cb371f408a9a5791227339807de288665e8ca55d81147b20ed +173300 00000000000006f20e76d94c1a79648d5ae5d089ae3b06f8c61a81da7bb6334d 90eb1e4007da98f0c10417e6541b4962501319fcc88d3507ebaf459f222ef447 00000000000008030ef62b195eea293cdb36089586cd4530b42346d1cf736586 +173400 000000000000023496d419ffc0d983af05b1f25e131e9d7befa27f825f006445 8e5e74155fc5df9ba157dc540eb196019915adc2a085ed92711bfd727a391b63 00000000000001349537f718f881801bbcdf4fcc85cb8220413be489dbc91583 +173500 0000000000000558fe81ae8122e2806e5b9292fba95da2d35a8205173b78c28d 65280f220d3340b69e3c92b90e2e2cb85c259f66ce1f080c2c8615887c624230 00000000000002aa757bbe2771e5ba6881e236ba66cd94b22ac35dcc0ca1896c +173600 00000000000005d701f0dca5a65a961005c04e3b9d03d1196683564c20b50677 a0db975a00937a69f18d07ed57df75f0d93b7635937aabd40e397fac88ad314a 0000000000000770696734ff0f731c67620755f91efac8d5d4d665ce5cd46c1c +173700 00000000000005a78ce0ea8cf1e2eb570bd3f694233238719e65022842e2643c 66f907d6e681e90a8e7de619066638bb0742c1f017ab1a835f1bd38cd2fefb03 00000000000006a3aaebadd4f4318f48a8d28788080d719e1f90e326c48c00f1 +173800 00000000000007b514e96f2a23e57f5a034adb9af7f8d17f08f28b35d8154f0d f618fd41c2cf84676c1dde02bbd03d58abfebd1725d330ee4d9c09e1c67862ac 00000000000001d77dee42198542f530a38d36e8000b966d804d59c232e9060a +173900 00000000000007b20f5eb25a1c55eeac4472db78e3e0bf5812a049dd8b57a61f 9d8b5600734ab088e0d4264e3b29934b2bb2347ba06da83386868b0fca93182c 00000000000000d5d2851b9f53588fae2ff77a88ccace5780ea70df8a72d9ee7 +174000 0000000000000504d3e701deb624eee4370f50c3d688fd1c27be5bbef07d76dd 56dfbb520a80d32b4bd70be999ec22af695173027d50d6226f6a5895e2e25acd 00000000000004fad4496c734994dc487c1397f22545287ff848b1a819f68303 +174100 0000000000000071f79c6a7d23ee9a7be025aded887968afb34acb58b300a48c 29bf8467a2b00833e2da7e267177e2871c0a0b31d23d02b4fefa2cce7adefa80 000000000000054f58ad28dca771df5a31c48973a4a1623885c5bf081f2f210c +174200 000000000000040e1ee8b1187c64f6fa99e89e08dc1de09e8689881ea4a17cd7 fcb15405ab3c149740f0ff81b7c5dfd28a0eb1753f5e666ba4c1fab397d60247 0000000000000454439190b9d4f57d0034117e23e55b0f992fee08fc2ffeedd8 +174300 000000000000096f456ab44fd612b9ecdca373d42da5f5fec47bdcbd579c0ef5 82bdd22d70b244035e1ffadbf34a72164cd904a25f121ab0ad65f3d8e0ef3d65 00000000000002082e03f4bbba0ba30d230ba37a03d0e421cea8dbfca51a898a +174400 00000000000007f0103e508a419527df85d618c50cb4d90a105a8a7c8ab57f50 7ae40b3eb0734c9fdadf20ffeccafd89595cbe6ef97c8342f3596846df744bb1 000000000000067ec706da210798b24a315d18ffc2b43ebf4d2565c3ab6d73c3 +174500 00000000000003c14046e41f0cac850ea544a815ce03f2861724ad02ec3e3db2 7170607f22467e3d05935db0268119e85a8cfccd4f4d006e4cda4e5cc7d2efb4 0000000000000a38a73a4dddcd7b2e1d9eb7cd5f08b194f452ba8bf65d40210b +174600 0000000000000787474b2b08301e43b5f5a4ee4f8aa539f82552b44f6a5ac26b abebf61525e80f5cbad1148f8a8cdc93e906081b5416bfec9c610c2d70064435 000000000000013ba61f2aabdecca137e78b625c0ec471f5351d12cf809ac0a2 +174700 00000000000006c016e22abe6acdafa62f1954ba7a0fa06c8dd6d3f5ddea1c6f 9de46e6fe6ce07e2a631c0cf257035023f89f7933ffd7dc91fe383a721d16d71 0000000000000110bb76cd823a73497747d352153bfa848e06ff7686fba90718 +174800 000000000000038d990dd1710f828b3ad58a985452ab057c3977d00058fb9a17 539cbd870ffcf36d80db4baafff081b51a1776c1e7a4d32bd44c822234f58a48 00000000000001516a711fab8441a3c1356bbfad8807e765ee4f552478a5879d +174900 000000000000077c029670690775ed321aeb45dfd8af3e72412733d9b110d722 3d06e7b07242aa64bb59714092085d910a15503bb0a07ad8753d920d6b167e75 0000000000000091cbec1ebade52f97d8f41afca023be12d86fb05ca79783cb3 +175000 00000000000006b975c097e9a5235de03d9024ddb205fd24dfcd508403fa907c a7a8d0b0a0aa6c1b26fbf7ca07b9593fe63961f0710cf8b51fd5b5a9622dfe17 000000000000079d059869f828411b00fc556b27b2425b78d341a9cbd6d87b28 +175100 000000000000075476a5db4772d42c0292efd6e483a132c86ec743b65ac33319 cb0816aba3b1c8fadeaa32402dc8c7a598e0b3bfc6341a0455b2b964e29b9cbb 00000000000004ceb4b720e6ddb18ba904ceee498d0fb787689a772b0d4ffe2b +175200 000000000000070e2f1e5fcdbd58b60a282fc3096b833c07fc25906987864089 f95d7ba7d156e8749feeaf3c34e5716bac165f5b0319542ff0b2caedd83b7339 000000000000039c5e01dc1e21a79c08de3dc413171ce6fbc8af0a001a3c6bfd +175300 00000000000002c1bff78fea37f6a80e64936e94bdfb3eff87219b54852aed54 0c7284637140b57edf1962bd61c63934572187e945ed8f0bd89db8de3b3d48c8 00000000000000a63d3bbbc495cbfae2b40ad0cb2900b5586c1d66f62e5b5cd6 +175400 000000000000054b63083e9b2347773e383fd986af1c6d9dba5551c714d84180 82b2d7dde813736fe8c95a3d7c2e003792decc1b22fb05f29c8ab5fdbab91d0d 00000000000004345f0ee91a6e75be357b28706907d30ded83dc953acb1fa222 +175500 00000000000009b1d4aff8894373fb3bc600b85b7705e368bbc01ee4e5da468a a001ed37517ca7914ef3b36a874c8835d49ed8e39d4c22a56d2599293bdd9e0a 00000000000009d4cfbb7453819e6f84cd49672c4c8ae81a09f4b47c38100707 +175600 00000000000002236df8d0f69388a14093ab501429cf3308b78eaa3f5092eb69 f5250fa19f0a89c82317baa8aea0e6dcb5e0521471f74b5c9c53ab87597375e1 00000000000000c0fc935bd65c1d4e92f0be5c213bb98cd765d8519b9a66d272 +175700 00000000000009f9c5627bea458fb98cfa843ee376aed9c4af3a11cf64ac37a8 c49da841195f1f19eb2c00ec96e803cd070faab15c113a2a4e998b88d1ee4afb 00000000000002cadf32dbb4544e39baef91c7e3d35333bf114448047334bd50 +175800 0000000000000436ec2bd0dd68eee48a053e04ea1f88add8ef4785eb382baeae 8dc8eb1de2a37401cb9f319297d02ce90c66222ae9f9673f702672a98f6e2e82 00000000000006aa835565f7cb791d9db6054df495eafab27f8487ba4e51328a +175900 0000000000000598fe1117ff9b277b34581e1249a14ed5bc1a6a2986578ff37b 269f08c05f7d6cce087f4b2b35a9e9db7021772a87299f22a384d70a949f8d48 00000000000002165920a84cc610cad03ef70637f919d1e18b564b4eb88ca22a +176000 00000000000004659b5b8602b2132b62973994079a1c828df6ef8d6427e4686b 20e7b4b2b80a87747c96f24027b0e9429319ea4a1db59ac71d26e341e9ed105d 000000000000094af92e179f0401e679bdccab2e475072a60d28872ce735b3b8 +176100 00000000000009584b73c24f8d861249ca01df96910430f246f2b71ea5c47d1f eaa18c06f4adcaada6d4eb45abe9c7d0eac536f63645d4fb525c956864450a13 000000000000060b1f56b8da04c28178301e774129f43a51bddfdd1bfebb7172 +176200 00000000000002018c3180a9f7b4b5ed0dbd9439dd9cf70b4f151b5d231d3054 59094bbbdddd1cb3ab9a86415e027d30020fae85d474c3b07ac87f8680507b2b 00000000000009fcc6d13b787791e6c723aa88f0fcac77457e9f51872ba2cb28 +176300 000000000000015564802a0ec0fb01b49eff0603ce4872ffd2580dfe64f24985 711cecce19db1c727428dce4229f5f93b4c5c3b8982bb56fdd1ac8371d62c32d 00000000000005db12794c33c7c78e552f40f48d93b7cbe8fb05c4ac52057505 +176400 00000000000002a7c1f43aa9205cde2e01ad1148d445b4d47896f1f7709b33f9 4d407acbcead527e3e44f97fd1a2ec7e82667e8b57ca71513790cbb5c697b103 00000000000000346795ac9dda31fd3e9ec30578bfce3cee8352304e76821e48 +176500 00000000000003249a97d28e3f30e4235d684ca26d9094867dc9ca591a6b6233 dd16f38b18ff81593151b60b7cefdb98fda0a72dd627fe440def7b2dbca71424 00000000000000396d827c2b7bb972471ffa259d4652864a3fa981e72db60187 +176600 0000000000000165e01f941536daec165fd33e5694a1011abc7b7bc2150df3af 504bda007b5eb63c2b153da1c28a41ff0c5a6a283e55d6ed1a71fd649cd60c0b 00000000000009012b2c6076ab431b42fa8aab1f2fac8ec802ee430bbd6556af +176700 000000000000051e3f9861dfd0aa0a9af682c4972558ef6b8a9a58dc0acf9929 43ff7b7847ff6a9967dd45ed3c5906d4091c56d2e55ba4c0861ae8a359be464e 00000000000004f0d7e1c05102f865cf881184514d1bf7c1fe74503c42a949f9 +176800 00000000000006ef4d9200e7b5e1b22fdf21a6c5b9cda2441d8b2dd281e739d5 c89085836d3060f5c497aa321e1e69dc95667f173c5e3d99b07fe120607be889 00000000000004888299169d3a1e56f0eb4b0be9ea1debfecd58ad66d16de400 +176900 000000000000089701daa438927842e77ddf24c161f81602018f90173eff0ccc b5895a86bc71e46eb310ccc7ce32d24a5967d814581a189610afca8257f7123f 0000000000000867fc531e3ab3f0e8bab013e460a7ed9ee2a93626b36d742973 +177000 0000000000000359be6774f86dec526367120cbfc7dadf6392b6ddbda2af3a3e 94940bde2f43100db3831f342920b0c869bb18c7e9d307990ec6669f169fe175 00000000000002e880ee928f4cd3aff8269b0426bd7d5a1eef2f2c80e1328616 +177100 00000000000001509cb3e263f5bd3000065c33981e0e09461a5537c276cb2497 29a11feda877da1a22899c5a17f232971158ae0bf7e8c431b9db36407ebd00dc 000000000000011e72ec4f622b6a5a5ddde1847e3e63d5fb5a435f0671d31e32 +177200 0000000000000011f4771501cb4c66d2a9a48b03bdba28470e39cc03b6432cd9 081d06173779b12a9223d42a48c218c060d2337610a1d4b0972c6fd4e0a89223 00000000000005353ca3f58e531b02ecd29b140ba2e23c9652197f9dd898106e +177300 00000000000005b1c4344735e044425659545ec767d5ebdb3d8055996909e4d5 be9e63a26e5ccbd7d261e83a1cff13642155c3dcf29358f4616bdc72e39380be 0000000000000a738093655135880c03ef5e552c67343133eb48650b94ff3894 +177400 000000000000085127463e27d762af4464b452fcaa89c7503f4c5a11d33bb64e 128a81eb5050fe17a8e2ae03d8c49b49ec0d2ef86f8a15421c496a3d7a545e0e 000000000000083e73d4023fef05d169aa6aa490c7beb23eceda225763e44e29 +177500 0000000000000464994383d2d46b0f3ce591feb8f53140d0e856e3911ac3e42d 3e261b794c7b937ee68a115818c4d8b876b4933e050d96b303871ec9b62842e6 00000000000004c64a1e2b25e6b527b91efb384c10f5c9897be600a53926397e +177600 0000000000000074c31874804eb9cda1f89f45b029b7ab314d66995f700e7e09 3c98a7f426bb3b96b5d7020df69658aef419f5318bda27b80f7833155a49610a 00000000000001e4135ba5570331a49ae05961996a0f82b1af3063a126333a69 +177700 00000000000007cb13f59fc5d41adcdb8fc5e63815149a1fb88ab5e2d06324f2 0d0d9a176eda7e2767458440e2cce781f304b7bfe950755513d43d846b73b1c4 00000000000008fe07a8a731b09ed85d42175f16972fb72f9971e9a0c79d7a96 +177800 00000000000009e66100cab83ed79e2469eb9c03eca0278c0617131dfcb601e8 126236023a05ee497c772bee115410703b372552d324861ed298ecd52fee8afd 000000000000081b52269e2b2a004e9d84a2033278928379505741d3d193231c +177900 00000000000005987378cca51011179761ae4cf5227252d61fc0fdda2e102d44 a81181367e0ec7a12ef30508657abb3ad719663222e54ee7654ee9c493e35981 00000000000009068fb7fe0d46d12288be11a9deaca546b8cd9020f9cc0fa01f +178000 00000000000009eae2697a7aaf57e730b707b9f4530449c16d924d534d41f297 6b2bdbbe7e20c2137dd567c63b1dcb3f434affbc3ee61274a55597d037c36d02 000000000000048b777caca656fc0a79aaa095e3b13c1717f9d420efaee17faa +178100 00000000000008806b6a0e823fec0f63798ed695b310dbe57eb7269017174a71 7499d2f65d0c51c0979d0ed9e496abb84cb7d111405c428910983bcf0cb6d9c5 000000000000008c37a173874b00a48bacd00e8c3279d5ff92617f2ee8dc0564 +178200 0000000000000390610f6f5ef5a52a6a8f6b3b18ca5d0383472f4d314f5aa8af 596f4adf9508b782d3cf323c602163c9f8d07647797050b44450086a5366adde 00000000000008abb165a9a52df957904772983a35b86080160472931b868de6 +178300 00000000000008901b16aaadd519471adb1c4036a9b132ab3253895a91b0e0a5 b7a470f01d9549cf196b277687f7b1969ccd50fdd1889e8164e27fbe00f42759 00000000000008d4e06cc1b8174681367184fe92ceb7978ff6c25974cbfc264a +178400 00000000000009ae427eb833c698993f466f93db2f99ec9f79863f9bb7d884c5 0c13c269fecbc3a74c610da0107b56e82a8fd28a71c0056c9492e5b5ef0313e7 0000000000000482efaeab28d32b1ec705c3444751dac6034a95dda5bf14ec9d +178500 0000000000000920e795905e4d432dc1e039f31f304277287c1c35316405ff64 1b27e1d1b45f54c15f3a03505a025d402074cd33325d7dc509adc5ad49e88aaa 0000000000000644eac1da9d0beb13e0d8fdbae8bb9a4fbacd8ec245386bf30f +178600 0000000000000218bf10d219bd13ceb8bfa328c26e60018f669c8c043718b248 e41c4da7d95d0a8bad57129b33a07ca60d3dc08b73d478d06444eb134028c7f8 00000000000003dbacfa9952213e925dff9ff075d9d7e5bc9bda2c89be64fb1f +178700 0000000000000464bb7fb52c50f48c00915e661cdb5ef381e97c6c8c5ae969e9 e6839fafc5994be1705f261d207e61159e04f6118ee6f03af7aa3cd0d4a66ce1 00000000000004aa8e12044fccbbb49c684cb98501a5c2ed4f1af55df8ced37e +178800 00000000000002b951b54e5cd09bf0cb58b6d8385c18e29d175538425bd56dc4 074c02ba712a06328b3462da29a2c8750cb1ba08cea89ffeb4de08938ad874d9 0000000000000711e763c317349bcd79cc684cf6f472d83b6cafa654c3ef9a0c +178900 000000000000065a3f4e91439391256bb9b1b4e4856cb9c9822ae3cc499fe1f9 94d501160398843727b8c523059d36b0e64017f39cd2cd44bea3d155762db570 000000000000019547d35e691884e95f0b4e1df8b62bebfb883f991ca83bc261 +179000 00000000000008dddc8b99d4bf1d3977e4ea15fa9900454148637f0d3ea8e410 3842dbff4bfd3f39f91d86a194810118208b2d2cc407af8c4e53e5ae88c94979 00000000000003c70c6bdf9f924e264f4cb737d0dd34ae27fa493834f59dfe34 +179100 0000000000000567b8bd2b791f50de0eadb99fafdc10e2025bc23cbca43693f8 01b9627853d3e3c76ee82ef390ddb7161cf34a6683da0de09811220da3ff9775 00000000000003ff3cd18ca09866294245582ee7af83c94c0842904d5a5baa91 +179200 00000000000002db4324a4882135cb41d3a4f4cd4c84ffc3b43fa7fa86f886c7 8d9ef038ee8f35f834010935f86d7eeaf014e2929d8df0332cae8949635fee10 000000000000005492b343a685d7516ae51c1c685f0170e0336c3e76b7971586 +179300 00000000000007539c0633d4a8a85c009c1b36b32831e3ed490264cf6e349369 637051e2588898d6bf42411ba7ed0f846f9918662975a6baa02a096978483460 0000000000000783f1bfd5dfdfa88ebcb0e766fe6c7b3079632dd6813f658e53 +179400 0000000000000435e44123773e1570b7c7f2a874c4e97a0d9dc2fbb4b1e4906e 14e251e953a02cb30c9a79681c229ecbb33643085c385f8bf1c809ee27f1098c 00000000000004dd1adfc6b20b54e9103ed7734c9801e8806f8b5b4eb0fbfb6c +179500 00000000000009496f9c2216c050a8e204a81218820838b0f9291b9b0866a99d 2e6f3890e389702d24e6e5b734d26a5628ce9f3ac8a1df9422dc83596ad4dc2b 000000000000075ea59d2124c431bd74f4a2541617f0d4d5ea42175e23928926 +179600 00000000000001cf299fb1ce61aed4eb334d37fbc0e0c051bf1a176e49f17102 b82b0ed0fdd7c8af27562fc93613f2e66a7ac953e24689016fb6767f1cbc39c6 00000000000003c3553a61a5fa75cc3a39af68cd5cbf6ca9391c3cff6e9971a3 +179700 0000000000000127ae6d9b52e6065f069c968cc835032bfee2c738c0284b74dd d009314ad0f8513677b7c582ad92656ed8e7fc255711330db1d663f377332551 00000000000008c1d60127e89027d7905b3a50130e6c09a4ff45348a0ef0aa1a +179800 00000000000004f20eedaa2ec0852213ffae72032fc2b8fff4c6d085fa08071c 09c2bb9146d3fada299456970c45cdfb4ae268048e18fa375a13afd4b1aaa192 00000000000001e90ab8c3b907fcc639d3c2fa885bfd90460ce4cf45bf0d9a0a +179900 00000000000003e21e4c75bb543ac7d6859fe9e27c7ce5872287391ea955ce37 ef9e935f329f07495a206b83a227ed5dcbf19d5e4ff652e71e534ce5c072b547 00000000000004f37cbb7c127a2bdfdd332afa054e52d4aaf52d0724d55888d7 +180000 00000000000004ff83b6c10460b239ef4a6aa320e5fffd6c7bcedefa8c78593c 6606e8dd49216893daefcd0d6feebde68f888c900f8f6d20ec30abea69825f48 00000000000002b833041fa0a23d7f8c2442781ff33062fe5c483288cf151e74 +180100 000000000000069d52556857e21dd13a069871016b6d3fb862bc8012417bd4cd 85838ac8345be857dfac1fbdcbd6a9bbd86d2d4720ffcd7a5c7576aa31dde97a 00000000000002cbef20e5d0c4d4e5baee92646f5426581eea1af8137dab8c1b +180200 0000000000000434c4df871537023943bf86760c413ac96badcd99a0d4286af6 6c828e6bd624c27f6689c7ffabc333ffae0b198ac51a96e4453cce31c809af49 00000000000002793280efe17cfd9143418e9b78f90154dff7c484d6db8d2544 +180300 0000000000000184b48409de0a7f21a6cd2a8769803cb25b79a23d7567c866d5 cfafbb041afeee4e4c7677f3f609c395aee7d16232ffcb027df18afdd1cd6da3 00000000000008e45062d62e8cf43e781880f98fd0e8189c9a3dabc30a753498 +180400 0000000000000815a5a27b81a0d943b4feb037b2d8465eaa6b0577c1f41a2d75 1c5e4f0fcd98ed2beafa70f257c86737ee1cb9a9f2db82171eb5934f18fb12a6 0000000000000842ce2bb4d9ce19ac2b29198d38227034ee209dd2cf9db76898 +180500 000000000000038501d23913ceb48ebe45a5aea2a3c63928ea00308a23ee20ae 2d31b0583d2f86e5db4c486df5cef38f00f1927c3b4e413987bcbddf26550270 00000000000008bbd11e4ed44c6c818c4eb3e91a05b4abc9c4b0c9062670c9b1 +180600 00000000000006b901c1f2146695e123331bbec6e71d26edbaca06a4a233eebe f59fdce0a0eab2e38364ac6c8d64b957f98376eac111bc10a3e4c369b057ff40 000000000000019a19f00152506dfe768a8423facf948a1a982c2ae644c51da2 +180700 0000000000000751db4fb6228b0b53898c70d5972623e6016e90261e45b694a2 45fce61b2854590bfb23c3c77864cd0fd51e150125edc58836a512f42ef8d277 0000000000000671573a2ae1a142121108e35af3bd8944dae2ffb3d9284f0808 +180800 000000000000026f9f99ccde88c96bdedf5870b5c36a3657f6eb735a3be5423c d2a25436816a024ea40e2a407b88efb7a64d9a2f6490ba6f9f5eb6250cc84870 000000000000021555ff13f69b44cfbd00b0246b8d16ab4c9f7eda8ae827b964 +180900 000000000000062d77804089b2c376b44f44531655b4a331003f578da7b65bde 582e4206b4132e647718cb4977b73c3470289ef085178c4bd95f0f6b5cbb7990 000000000000073887c69419033c68ecc474cd19e91ceeac89981c5ae9fe16f5 +181000 000000000000089558f2de87ee02ba250391e964683ac7d867e09f66e65ebbab f5fb2c4816fa5a8ee4c1bbffdb6d49f2e4e753d877184df1a15d06b3bf44127c 0000000000000949bd58b743e2bea53cf95d42596f9b09ff148c2b956f3f4c66 +181100 0000000000000358e4948e5869ed35e1ea03951e4abf1237bf96cfa8f5875e05 9f9c6a607cee9bf0837a226788fd7b5fa91ceb75add2c87cb512bbd25fee652c 000000000000098d36b2b5e882feab7bb13021fe5a1709f4eb0936d032110571 +181200 000000000000029786603927610232eddd7de06e9859bea62e2423a622394c7d 72a6361b4b7eac1011f755ec160f0e368508c1169f7ec0f514aa3a43f03469cb 000000000000071af41eb7327b35b0b6a1ca9ad2da837cdc1065f6351c622739 +181300 000000000000099be648ecdf8cf78dddcedcadc6396980dcf3accaa5832371d8 0144cd6bffafa566d57432ab00906a41dc006bcb2a2fb9e23e869df8aa5ad6f3 0000000000000658cbeefb4aa8e43f447e289fd1ca5804f9aaee9b965a57da81 +181400 000000000000035b6a2f5d2ea5b3706281ec61474a794201303f3f5657fccca5 eb833a5fd717907668847cb8ad5a44f241c1dc266ad678f98dbc95a57113af88 00000000000008ce90c7ce8b11658d5f69e0a5967d32643f4fb96e6e62bfab70 +181500 000000000000078b9d714fc16e55188a9f72e787dff0352800f9a643db48dd3d cf32806931a627965544cb9945d55eba3629265f6eaa55dd4323b3ef688b17f1 00000000000002544a752783d39952eb6a64cbfdf9eb97976995a9aa90117b62 +181600 00000000000007e5f3add3325ddb63a43a86481e5d6be173c4143f4b66c686fc 8ad2900e3238733da1341ca9a99f99b2cd256e5409af0a7c9f2c0e83f68e76b5 0000000000000334366b53119ef552abccd85166092da95a4da20b220ed6f10e +181700 000000000000033572ac81c051953dd62aa791552f05412a5d3c06d57c8cc78a 19ceea62644b9ba7b4906c8d21b6a469931cbdc0868fbd606ab8bc2606b90768 000000000000015f0e9a0519fb95bd19658604404e74512c0a3e2c3870cd7fdc +181800 00000000000005719baf3999c44f7828052fcb68ed8ba0ee90de76e15d273fd9 c9bebc17ae390749e618c2ba02249fc24721681f91cccda0c1a0c6ae3bb1a54a 00000000000002b983a465861a830b70797a92602215a841a59a50cbe9dad137 +181900 00000000000002fe975d8708d941e81ba1e01a4b0a14681861ca86179a4f8340 38f56951032aa3356422d1d6bbaf470b2a89fa4ddc36e030ee7a68bdef51834a 000000000000075b5e5ee7573921a3b48e45ace6d9020af7777f32fd99737f14 +182000 000000000000068dce12903c1447e4c5b60311b61e443a25d5fc82c77f4f9a8f 05eb3b1fd71c113a80968a7fd657333c29c0ae621c9f3261c037eb751d0d764e 0000000000000a6291a6ced756c7b8b46e75fd01d75fabb1c10d76ebab5dbdb2 +182100 00000000000001369f1030d260fd6f19278240859a5094c183b63694984adb60 2ca73fe27e09a006fab79742fc296fbad04080fa978660c344edaef546a7979b 000000000000091388e51194d5d35a73c0cee6b412048ee69d2ea2c1ff769977 +182200 0000000000000873b6cd618f4d5d2e301f38d9a6ff1104644c2df07df6a779a2 9d72716ab4d31604402ee9ad0895ff90992feddb9bb185ff6bff57fc7ccafc52 00000000000005816c93f7fe9500780a426cf130f547d40b5c479cff3723bf83 +182300 00000000000009e8eacd80741d460ffc4c3fb488d6977dd703e55b4eb518d4e6 72a40619a23349a2c63c83f84b3921a4775be1e74fe26602f9ea044d68c60382 0000000000000a78c419dcb1957779b2c55a76cd7f5ae5d8a634fbf39ac55f85 +182400 00000000000006bca5f9613129affe05a1433e45d1087fe3109816aad0156a41 412860db26518ad62c0a628aaee12e1ceb740015315c8b1420de46a251cd7ccc 000000000000047dad78df9a6df33e848cd278d46c5fdbebc79598fd8c7b0ff1 +182500 00000000000008d7fc792f9e7b37bb46febbf0746211572b4627a7022763957e 6e206b2579a22f671104579858b2d6ca5c099c0c35c17a4cfb5821c0fb14e4c6 000000000000023682e229e9391d9eb9f59a3d73e2b295cbd660425b5e9be7a4 +182600 00000000000007716d307b5c6d60b1b5b9f8d4d2b9c0a5b418a6e97e5f885ec9 44b7a85cbece20f77e0e2f75e057bb1f8a1a4f0a6673e203cba4b6dd895f0122 000000000000040472a214da94d21e47c03ec47943cc5e4fe55e6accb3b66c78 +182700 000000000000045bd095a28df2658ed0d29d2057cda7473587965ff06bf413b2 8ff6a8a19bc6551e37ad288a70f5fda9f70c0936f4f8b719cf42b83be69e1e4d 00000000000006f940a0379ff87366d0c1b2e52f437dae9e6bb8579cb29c2ec5 +182800 000000000000089ae03a2571a5e4e48de7ffca40ecf86c0030c5209527a0077a 816f3f2207c24a7ff43efa4e06b4817de0ef576c25e89534124ca6c439e7cb5b 00000000000003ee2c646d8ac029dbdc95e3facda2241dd630b906ddc6ced94a +182900 000000000000086ede0600e97a6f075b5c41306e0fd9a04d07741a632c736c62 65d24c6a4d4a1b7ee3a1a26e387282228be38bb846e9aea4acfc00addf7982d4 00000000000007828e32874af9302cb7825e9d0ecba597daa2098cfd1586bed6 +183000 00000000000007be8b15bd307b7bc04aa22369e4079c12914a415f6c96ab2844 d7cd781e51665b923fe671928d8ab848a8944b83f84a5a2a25eddb0f84dfe0b1 0000000000000844473d11e706c94e4dab9190601d2bc9a6ec9fb41118217abe +183100 0000000000000566182f9de8379bebb04aa66e485aaec536c36e7be3560463ba ad69a84bebf3e2274ddcad84d01feb5cc43ba9a376055875366793116c6579be 00000000000007622f14a36d73f689b91aacbe1b49fbd63491e23e66698e91fe +183200 000000000000070cba2448c5d5d84d512435ce68ad338369da1ab47c2c7dbd20 e5af17a601177fe36274822a414e589c9a7c9419a592a64e873aa3ac61dd5e77 00000000000009ed16d87b5425582cf1d105122843736c1716bec4a9d4dc3587 +183300 0000000000000a40353c058c3fd185e9f784aac1596082aaaaba96f5b0fe68fb 76035523ee5e0ba8bcc3ffdb7df656ff50ae304196e20971a06ce4aa12914346 0000000000000954489d772e3a95b9bec13f5dc63f36bdf2fbf9e03624cca67d +183400 000000000000077a36e27b500547460d6337b32a98dc31a0b72621b3d99333a9 aa8747a7c3428bc030df6befd8021a650fdd12c9b862cf9104ba6cdfa148ac75 00000000000004c60200407bd5431448bb5f5bf8ea53d9d070b2c3968f3b4f06 +183500 000000000000016fa5218777828abfdb39a86b09fc6f58cd127f848bfb9b5c13 5a3597abb81c2cd1d34714fd03079d01d32216a559f816cfb31cc0fa3a9c9d6b 000000000000043fa91006cb7fa30ef4daa1fee687ce0bea8d1f4ea8b017d506 +183600 000000000000050b5916aa6f6c661c046fdf0b009f3c83426c51ed2447994b1c b1cebafd393f7353e3a1d13247ae3a078e8d6da17e1868d34034f683647e2911 000000000000072b3809557cc8ed4f65e9327726de3b396d6c663e78a620d866 +183700 000000000000097781a626868b72b587ee976f7721a99325ce8fafc45823ab56 2dea1ac862eace2482e18a8fef4597c0860b81120d355ca59f8b064b8ca86cf8 00000000000006153f8f630cf7f03cc1c9586b282e26b13bc8f4f5a7b0eb141d +183800 00000000000000a90857252d4faf9d28ed6decd1d9bbc2537811408af4adf8f4 5e3cf7571fa04797b0bf6abeae588d74470efb24c9eeb6c0a491c903399de2bd 000000000000080cecdffdc047ac13db7dd1b8d10a4cff94df5dc1aad053a05f +183900 00000000000005e4e35516822a8eb35bfee2c982b63e9d5d5c8c1f2d8441d26d 99c2bd0f5bdc7dc2c620febfd80a86171265b360ce67b4233b3cec6ac74791d2 00000000000000d916c6086fe851a617120230cb3af1921aa41096aa42cefad2 +184000 000000000000060405a235c6b968ccb18fd6b3800ae9742c2524e28863367359 62c618ecf6fabad32ab5074b7ff5273c889bfc6014d16210e713d54ce9970bdc 000000000000017c48347973112e2f48dd6ebad919d5385782b55b0341610a01 +184100 0000000000000147bac4b537341b60b751f5e3ba13e34089796d7b173fd4f797 38cc7e77b0651b6bac4b805b25234a089c14b5b07a79b42f56864837dba32881 00000000000002225e8cd9c6d4a787dfc4aed88920981c9d9c973e9c55ac5fa1 +184200 00000000000007879b4e1d915fb00d684a6346d8f0cddf5d84eaff7705deeb72 0c1ffa1c04066abda00a872dda2480e1a6c131fc836ebdf5b74bd8388412dd1d 000000000000069f5e46f00010a55eebd1cdac5c79f00dce4273394b1b1aed30 +184300 00000000000003065c6330968372557eb1978cbe1258035e5862f4d783b77e01 d3eea5fc4223aec53321a112620cfb14be329f1b91d97c4b427eb704e0c29d17 000000000000051c471372e456cd39026bba15466343137034de17ba6b126449 +184400 00000000000009fb73e6b4ee417cff3534ab9e613c8bef249cce639ac3948b70 b71dc66713f3864b8810348c094f83dc5f6b85b2186a551aaddc817a0a3b980b 000000000000096eedf914b1311cf709077acf5caec03f624283411d3a1c6d88 +184500 00000000000001b2a3bd02767c5a9000d87ff8654a43d437ee3df44290234a5c 63b3fbc385394f87546325478d2e1304b184f86ae10aa54125242332839c496c 000000000000096d0d10d619634fa7af19b8a58e505633501545f941c80c5c31 +184600 0000000000000850e0197806e9ad3b28b8131df20ce46c604443b7992f941bb5 7bad1afb5fa10acbaa1aee1f787bd4cfbde11ccddf6ee69ef1431202464bf7f9 000000000000068132a6203ac96505dafd141b324533498a4bd558f636e2a02b +184700 00000000000004e2dbfeef0699e12bfb90ae4c3a639e5364bc23263609e2fcbb 8e6b9ab5db458b6ce8d5673fd528fd72f3bddd5fc5cdffedf84d47f4dd641238 0000000000000010158e34fe10b1c95a6621872a4725bb27c1215436cc194213 +184800 0000000000000130ed43fc455277317d615417d54dc4496cb1ddaf2ddf9c9e0d f971a591c3257b067aabb61633292644ac79b5f24c46dcf12972387316d13a5d 000000000000030f324d3a7f3ffce38338069c6319fd6790d9f60e30cdc4c5df +184900 00000000000001509c47730450bcab99dee0858096f0c99deb48dc0c6d73cd55 4f51a5e09dc0b83d6c7c41beeb7243016746b26d490c1dac8d7afb0f4fb47c92 000000000000009e4b8effc12eff8d43c75e08f3a1ee3aaf72f6e87008c731f4 +185000 00000000000008e4a049f80eb23c83c71f3f2bd34f7a50caf66c17511c40dc13 052a23801f853988fe82f34d4a07688604f31a61049d8dd682185011eec1a08c 0000000000000566eb164345a545c66780a17f9dec91ce0a8835d77e16ad0cea +185100 0000000000000a97df9c7425ed7651cba06a8237e94d3ce315e4ff3fe546b7b6 537ae9ef6414c52ec1f962fb0645c6d9b711b2cd3ea5b5033ffcbda4acb6541e 00000000000009f8e3e3449e44c7c7f50c0a2f46fba6183e99b5cdcb1e1f56d3 +185200 00000000000001cf6f9b6fa17873c98c2c16c13fd13f768ed51ce25084bae401 14c6a3de03484ecc82e934312d910a27da8f1dfa60e4ad41d79c55f27017a530 0000000000000015c9b18c8b33e111b58be818dfc7919f86080ae2236886fabf +185300 00000000000007f0f79c7ef0dd8f38c2faec5c3b63af47f4218e289564dc5851 670150147b8db60b32427b7f6a663b923f9f5be76857da1a8e354b5e55467b8e 0000000000000155d0f930554f2e7213a5fe6b4d48cab1032341abeb275ed525 +185400 00000000000005611c51ff11b34bacdfddb757934dcc626d9677f86104d77cbb 9a435262dcd0d3022391d8f1833efbf860a7a7618d3c1cc04f56cd7a886a6ea4 000000000000015e8096ed1bb2d28193cf88e9142a250af3183fdf1d92ae36ec +185500 00000000000005c4805d0c6d88eac0e943f085352eb52782bdfb5d46a046120d ba2525c4fbc2be5d93fa63541edc7c7e0f6f7e4543e50c791773142f9e09ac92 0000000000000291ac3e60fa3df5db20a631d75244d217adcb23797b2df25c36 +185600 00000000000006dd89d1b59d55fd49b8999003b2a2e1ab8b1118c356e9e99ab3 6dfe8a2998a9bcf1fee0fa43d85a79aa22b38d9f2d836853229517366f9d3325 00000000000002fe696c7cdade6076acf33027ac5afb1605812366c31a08b342 +185700 00000000000000edf3eb0bb52b748382193be6cbe9c280df264b45de5bc55485 085899c3d28af9859fb1eb6ef177581b34eccf996664db8441b595cfd1096940 000000000000025e270b1cd0367679c0ee5ba60ef5167342d3d5dc104f7ac12c +185800 0000000000000782e6655b2cedbd433ee06ee022274e9bc2965be5548562cdd1 183c1ace1141d20c21ddc5457260b405a67923347dd32b767198e376eaf5a940 00000000000005be2df4c34bae818b7dec241ece13741b43bf818a61db32c3b3 +185900 000000000000053827de2fe239353399d036ac6a081879e930fc0832597f6f91 1267dfd782153f787c6327ca05224f4d4e653124cfb93b6e9084aabbfcee821e 000000000000072f91212f4796fc549c97826a72f1825c57323b1ab280cf617d +186000 000000000000072ede9629fd1fd1af3cc2baa0e637f1959f34884be0e160dd1c 5c0f4d85aa5299ac1edd3c1f07ee6c880bd6729e4c1d67a5469b710ec1dc9048 00000000000008db6520c33d4d75470b1a5fc5ab34670655b6a18f0ca7b860d1 +186100 000000000000000a2c994baa06c29ae5ac2fd901eb1f0c9816f8357b12501bce e6c4bbccd4822e5757a3b6f9a3574bd62e65e38bddbb8b7b9908fa08fb24680c 00000000000002eeb6131ae775339a79efc440e7c063d63a4479ac131214408d +186200 00000000000003a03cf1ad77a3d5ec07bc78ddb941e5221c4c424186265f6168 e44045f3989b3038881519e66e8c69e8c1f43e7ae9ba45185ce36a42fcf3f983 00000000000007ede024ebd38902382a39d9902ca2fca18f45f041e27405a553 +186300 0000000000000566300f60e60a76570ab3aed7d9d9bbc342a444c353a4c19af1 1ca89bb7b5f6ef2ea33828a5b365b25a3d19fcc48799f6e7dac9bae513718d9b 000000000000040e4d1da66ec1b11860d9efb116732aefa94b440f4ead2d6c5f +186400 00000000000002cdef80e2a76c33b09d1ce9152e0a5914945f4e35ff9b148454 d56a8b5f41cbb39d1656502c2948573aa44bc1c26e12100c698cf819bed64316 000000000000048d1d9988c67289c24ad8eb39a572f9cc73aeb61bc9870b85ff +186500 00000000000007fdde6f714c606fb2dcb791e664c092d1b05d68063b97b4bc11 dfc26e06eba184dd7500eeef7f6600975be4818da0140c87f0e71fc1203507ae 000000000000029a8c2051564be5a9375842044904a033349d73d95b91b97e2e +186600 00000000000006446e6221a147f8adf4ef9161a8ccd3aab02e684b766a9c47ee bf13917df1e7b7af0acb632f9ce3405e1e28391a30ed49bd2ca400068ce87cfc 000000000000083d6b95f9f74af10687dc7243871726e7b3f26019de66380c53 +186700 000000000000062845407b914d9e5ba78b09610ebfb1e26eafb5ba5a984cf452 c04a4091316bf32b33b41706462617beead9fbefde3c17cfed05d279ca254a9b 00000000000002ed3117a236a791f19a171b33037b38792f13a512ab24f5d704 +186800 000000000000011f19a01e07b865c3823c6b2e6d932cb28ee28fcf4723bb719f 03b1b492b9cbe7df58170cad4663a7e814cec149c5658838ff216e1fcd6573e7 00000000000006fa471f37aafca8e679f389e3274dba6736f0acb9c1fdcb91d1 +186900 00000000000009909936cfa9e58dac4d628e61e77a6722ab3ef066dd471cb9da 01ed4c2cff850bd76bfc9956b0bba1985210f31c82ca527c22a8567da355e618 000000000000003dc33275dcd0261d0881e59567f7fbeaf5cacff14001515b30 +187000 000000000000095cc058085cf175b5f61427e0b505ce6444f2abf359f7d5542e 910a8318a50d158139e1565979894b99e9ceef7cb3d2f91f8ac436f394491231 00000000000001591ab1919c101be910ed4d5c0d62f3cb5ca5d3a1a094b2ee52 +187100 0000000000000991a62d8d84435331f61315fc7873eff4896a447e5a865537b1 9f962497e9fa38ddb772cfb6ba591377e0d9d76a14612584eec3e0b92c1de828 00000000000000358234038272c11b895cb60198c9fd3450b25eeac50a23807e +187200 00000000000005976f66382caf10f1f4c2a7a256b1d2dc8efadd64353d3a47c1 e65ad41577ac60705c65d77c8e4ee8e00d0ab5c83b3a78b383cb608ab200f43b 00000000000002180dcf38a2c747de22a97fb548fc48412555118bed7e42ef1a +187300 000000000000014c3ec01bf7bb3963359c8227c2100c25bfef3cd45bcf9362e8 0c744b8382931bcb98f8573e36441610e0f56fb5582a4a227453eaf8e22e1d56 00000000000002db28810c26aa83d50eb1ae18c4bc70416895e093d13200160e +187400 00000000000007525b8c2a4e04d9bd98ae8b2f385572fc1e276c8d10711b6494 5b5ca68d08dad2362600e00e3d98e1d2e5f0fafca49b001facdc2e6bfbd02c4d 000000000000045e04b3319d47ee3aa7e77ba282835f4eec8354835a812ec30b +187500 00000000000000461dcf498b2ba02f19dde9a98bb126de9d8e313b0bcdba5bfb 2a71a42e7122ee1d34e3ba27d447ae8482e38a63737b8f11ab451f9e2b86dac6 00000000000002c9f400bd231973e42268c191d7cbe95f199340534723fed784 +187600 000000000000009555a0b09a482720a894042fdae60a7df10cc2718b596c220f a7a902d0ca71d7f2802ec128b89aace0f1d4b44c2f07c36ad5160cae2494138e 000000000000036454d28f39c93344ed780df49d02ab9f2230ed950918bc518b +187700 000000000000040c92f7d477e566bc723ebcd4cf0aad2803a7c8b92746cc4535 f2df0521e7e9936d05a5eedc99f6570da77eb296dc004c35e6d25f76a3a22dc1 00000000000002b6d1dd37363e3447e92d0610370ea338ed1c749e385bfc2832 +187800 00000000000004fe92d436fdf0ef877deb799f1e6074e18983728361d99f3644 eea5cc6db5e7f24fb4ec413d3b075b977022c86917c149625ba043279973cb35 00000000000002cf9c80081b76048526d56c132e7ec9dcee361569a9c86c3614 +187900 000000000000088da52656394bf954c9900c09f96746f85c7458f69284eb79d5 661202484fa63ad759111150ee35246d9e5059f29698a91d4bcfacb15e9b54f0 000000000000046f6d4db41936a11ee8d5c5a7ee534d0d9342daab1659ae9e54 +188000 000000000000004cf0c72d6dedfde88ca4c3dae129563210072ee68acded0ab1 5f7d33c54844e04627fcc5b4369953764fad3116904723e1716c3c9d576e8339 00000000000000b5944dddd5dacf2665d004e5a10283df8b9a387725315c70e7 +188100 00000000000003b9fc08a35afa5e7eb21c9edc1f36909ea3d3242d0ae6732aa7 b193f480e1ddfde40c1e14152bf1528427812b76afa43c5de750a2fb4de22ef0 0000000000000154d26106e3addeaf6843dcabced345b511f66c31d4d05c6c12 +188200 00000000000008ee90b65bc86e2f5655d7e156f6d8dc75fbfad33362132764c0 191f42b426ce0ad41b40fb089af881e528ba8b765d9007d240283b09dc4f5902 000000000000061784a01e82ad1ebe0cf7d98e72fd9c50549fe1789ba8d094e3 +188300 00000000000002ad7744e04478a082e67ca4a681a7edaafde7288b6ee9999fc5 b414e285386626d91e8f25fd3c76677f7a9825cb8fdf12ea7ac2a5be3d469493 00000000000006e22fe8c11888e6fdaf1752e4de1c2ae5b32da5e0ff6a5d5bfe +188400 000000000000033dcc678a165c3a2bff8e716cad2fa5a3c5a87c2ff9b9001100 f86cb1bcd0b10155085714340236072f6e9760b87cd44d746b7d33eb2902eb22 0000000000000447bfc853cde5f196141187cf32586e863c703e0736744af0a9 +188500 00000000000002fa6ab13eed97726f775d351579043968091024ad316bfa2dfd cbf9a14b34e246f1af2837c1a85dfb7678bf9f5df600de4b0e6400dd8e3964d5 0000000000000939a36a70339cb9c424d67951a8cf3b1f8cbc6d2aa31dad83d0 +188600 00000000000007dd802316034a296520da6ef3598d63e99237cdeffa054b9f73 7ff637e1b9f98cfb345f4497ed845167b47243d62c9d803117df4f55e16a1abd 000000000000050ea601ed98623e384481b8e334c90b566dddd790cd1c6d3fc0 +188700 00000000000003e7a632b8987c0a05eb2e69ad03843b20ab8b95b5756994ef3d 03aeed02b3052cbfdc346622d6685142b88ed933e2f8ced21d435b298a02ab14 00000000000000a0ae448d19f1634e7586702fe0b380d0712bcb9232f0f25c64 +188800 000000000000065eb0c98bf7d10f5f1b4536a3f5b0ee50a295e6e0c42a8f4ff8 0bc9a9874cd4776f3934f721857d8347964b59dd4c781d07730c2438494c7b1e 00000000000001ca8155fe5d7b6e4bb2b9d0b02c4b04d48a8bd7ec2b7efbb659 +188900 0000000000000478037f327467de140f167065bb19c34a9fca77b14302299a18 5aa09d0fede9c6bcd18dd9dca74058899c9c4cde83e0139d9fba5d317ed8170e 00000000000005b1379acf645a0dc00e6cc3d70193845a437047fdc1e3f8b420 +189000 00000000000000cb70eababc6787d13fd1c157f487145b97a15339336855d797 a27c3b00c3464e8597344c33b4b1f77c10f99a993d9f579754cb7ebd77beeda8 00000000000001d234cc1654342cbe77710fa4ebb68bdf5218379c7b35f85d4f +189100 000000000000075073016e8fca07a4a82db437f486f27a2ca438e518e19759a1 9ddb0d70a93560cadfe06ab75dc68750efe2f262a415ea34b18318348d23f907 00000000000007f61e9712fc5cdf5d5f2616d3fc31af3125bcbc7cdc344b0ffd +189200 00000000000008e8f8039903f69df6bd245b4dd75e6ab750805d96d4fc02b972 8916c19b7ca4f2b4d7b56f543831f955ce57f2eb775a9668d3a35c90b30f5a13 0000000000000214aa1889a124a4cbc47d329ca12d4c3abcac9a8aba250ccf33 +189300 00000000000002d06686680005c0ec6ccfee5ca3ae54a2fb51800b9cf09867c0 9e7e30dce44f35ce3b371d9ddf1fafabfebe0586947fd58473aeae0ed465ee60 00000000000007aa0853480ebb2a6ae8e38fe58158d245b081b54cadda057285 +189400 000000000000078c17e9d38755542066b674ea5ac5d4062486ca3e7d3bad9978 55449edc80ac8d8355c8b3d5a07f4c85e89345098c2193814b491269dc42e253 000000000000074171e74478711785b9cd59b76dc34eb047a7b3844253763c7c +189500 00000000000008a9b61e18c2694b425635c146c7603c2219aa8c434c2ff0f7c8 fe2f869eeda4bc90a16ab60dc622054259e84276cda5e724e9cf89e56923a388 000000000000061b88b57e532523c62f948cf16bd4bd0d98700e0dd03a9a6487 +189600 0000000000000098af19f85b74f55b6a043f89a62d175dfa1b0b1dcbc45f3674 e77f85683291f440269300250f8c508919fe52b9b6d8393810e3d9634fd0e6bf 00000000000000556eb5d681ad6a5a5b73e47831c00aa51a6362063aad266389 +189700 00000000000006e80d10dc50eb0803ffcc872e0e1074fcab7cb7a1d21d20ddbf b3656003505ab09fae72ab6f2cfbda1d7c19f85f8530c1b96005df85cb6bc083 00000000000007b23cf22959e77383f33657c60c4db531c7ce4086876cb9521a +189800 00000000000001009c1d9bbb2f2ee10ebeaa5fcc8d23b9baa299538de32a566b ac33f077f6f42bca0254208a140df6c8b295c59e599a28b9d78db19298d7ce97 0000000000000772f953ad6367639ffcc960fe4a2efa2ece6a326151429e64d6 +189900 000000000000055ccf03a628b58a69e2afce1f938741bbc1c75f11a00b6548ea cab754cb8c0c38a70f1f2fa7f9921653720efd0256a42f49f7ce6ebd01cc4abb 000000000000071eee5feb1b386aa706b7d558d658cf23c9f50ba29edbecf56e +190000 0000000000000708bf3b261ffc963b6a768d915f9cfc9ec0a6c2a09969efad1a 46c4701066f811997b57764eeb20b22de9748afcab27b64b86c61d4db884a6f6 000000000000086f0e0e1666a9f1874988cc16d1bdf3045524d72a0cf72684d0 +190100 000000000000082c6313cae4d9373845f0ab584c2458209d04ad130495c755ce ead0fbaec560cf4a4b89ebf9ecefd2b9276b96409a5029d1ed91aee2e34b643c 000000000000023188091b1693bdbee09b858c9b636d7f884b07186621007bcd +190200 000000000000007dd4065aee391fe2e68862d060b495089e29596a9591af5c84 c611bd214aae40087aed5de39bf8193312657425f83509d589f6cec72d5685e4 00000000000002e51eb56bc3dea3bb9229d6146f3beac71aa4d3777ee900fd30 +190300 00000000000000492615f40f7e063e5e69f92012beb04d38d54aea6d1c479bab 6745cc88123de7e5a7a409890ae1eb68299af97d62061961d2894d2ba4db2902 000000000000087e6e165e38501096a5ea6680d170a7450836bfef138aff5998 +190400 00000000000006a6db93e62479f809c6afeb4728427f5cd6b572e559799532a3 074071e2d6b2cb66f42ff3309c5b5850a025931c7f7a6f9bc28aabd5de876106 00000000000000a2110bf0ec481cedd448268d9ac2eabb8a6c0a75954ffc8cb1 +190500 0000000000000531aecaf3ebf3843b758b0a439c8c587cf02472f714c1f975b8 3d3635111b07538c94bf2cad52b108f8c7f4e6aa3a29efe1b0c27aa054e85530 0000000000000599cdcae885b962dae172155aa6d35d7b8a3e468f6fc93401c1 +190600 000000000000030bdd5211f5ebce889a3b03ea5ba7257cd5d1501c4b858144d0 964af8c421ac244fd0b3bc3335fbbbad98f77841bec768ff12f59d50fc6b5fb4 0000000000000778b5466a5802054f6794252869433f3b381463ac232fdadbee +190700 0000000000000552eb2b642e7090a7f91880209938c0451b0135a92893365944 7fb10847589b4d3d18e4bf4443c9bd801797bfccc44bb48ee4f28b6ec4f35b75 0000000000000160bf4de67b567be3ed287805d451b949a07049a424591999ce +190800 00000000000002fba30b75c3dcf513ceec7da75a98106c18451e4fcbf48816a6 b32599593461326b0695980c524873bbffd3668d0095b1773cccbd08983ab4cc 00000000000001435644c3901e77662ecbb746add51eec81db5b94563ad878e7 +190900 000000000000081ecd8a2186f6d3e076defd3822b50c5b93f75c824963e29938 17bd122b7693d44c1e946ff3627c55ffedc152e7591cd26df907ba2bb7ebd4f9 000000000000029f9f9fa3e1e76838e0d073231630560662b7a611e9cadb90e0 +191000 00000000000008d64e842b503d05d2e863dac578127f726832295ec92428c27c 160f1b0a4deab69c5ab39137781df0dfb8a5573ce05f23264589ba1bcec9d386 000000000000052444ddd654902ad6f5e5cb19f8d74c252e4b6a0f549443bd1c +191100 000000000000034349e5550aa3232ea28c115e452a5c53779a0b6ee0401c7746 a8ff08f4a394662d52ee4e42861b20c1f69d23d2aa50926cefe12b2b4d4f2124 00000000000008a1fec6779facffbe0bbf065852a02badffaa7571becbb40267 +191200 0000000000000318767c948783cc082e8cd1b58689d5329842097e5e882861fd e7a5fe31521d8abf97485a02201e228a8f772f7741644d2bc630ded8c1597229 0000000000000273b020ec9c2433d0ef9fd21d55cc89844dc568a9340aaf9f86 +191300 000000000000035f724a32148d963065bb47b5fdf4f13ccf92117529b291261b b8e947eb7bb8cef0a39d2d9a465a064581c68c78ed9ede9bf92488b889cc1b9f 000000000000075e928fbd5fb9ed04649d3067b9e2d1172cf50aa9bd4843ed5a +191400 0000000000000203ff8dee3bceda4f478110ac8ea2a47f7bfc3f5e546580ea9a 30a2ff47d7f40de9aaaee1321bc994258769c886d8b2c83b51725522e46ad73c 0000000000000673bac8fe24f545de12efa39dfb68efc3be18c2757717ad600f +191500 000000000000036c2d1cbf656267fb7840f40651214d6d01f8c42c9c22540d9d 69ad516d1f3f08f1eb2087b278ebe78aaea5a352d71432e091b8f95b64a1be22 000000000000030b5464d9433aac1f286aaaa7c24d01d6b76c35fdb80df323da +191600 00000000000000befc56f825e797be240dec437ff3ab7e9ea90d2c0d8b8e1569 50f918f67af4667e8cd51f9ea1a292090dacba3a1c237a64f3430fe8c1a6e1be 0000000000000353b60e3f4575bbd9f3b6fe0ea16a70b0ffb19bab875fe4db43 +191700 00000000000001e2ddca277e64cf2bcd026691d118cd810658633153630c6aef 8a658b9826ea823fbadfc9eb44fea328843007969f0aca35073727badb09a573 00000000000007e792ecb76382b9f74dcda57be791e25f4858aadf259f74d97c +191800 0000000000000285297e16d9456cccd123b04847f68494b97ed43fea3e118d04 5ec30575673273927d36f56cabaa99542c49d631b67a564bb4dc0ce3746e241f 0000000000000585269f2f12630ca90902ef238d79bf1e78dce53d66dc2ab557 +191900 00000000000004ab679ca15d78ce67bce7120b277c66444e5d0146a4dcae00b1 d59461313f8806b1eaa057ed348cc0d8aff064d51a5131e38ec1542527f37701 0000000000000497d4fe897690941361c0da5c5eb8ce1e6ce5f9ce3594654610 +192000 00000000000000af130d565291ba49208c546685c69b48a293aaf06387fc22ef 34639296607b2e585909f7dc9067dd2c3d172c19902f934d8dcd02914822cd2a 00000000000002b1e750d5b58c4d7976ecc430fac70b24b4a8b4246867b43b00 +192100 0000000000000261a8fac12041ebafe2185f671f8ce012b32f459b1d5133f778 fa4a7897463e16247e139b6de62b141587aed864b478964943cc5cd25f133ffd 0000000000000127f652b22cfdf9885e8aac5a3b5628ed990cd3020f2a3058b6 +192200 00000000000000d8c5528d9578809597c776795a9a12ca3e98345151fcd3e5e4 ba0ecc0f2290603a7af31b8b1baf7b038f8b498a51500dd340434c890e25b09a 0000000000000417cc86a7e4a0f09627bb35e18dd1b4742bfa89c604a763d5e1 +192300 00000000000001455e870671ecc775edb49f3f5bf4238e32362e54b899727a36 4d223e2ff29d592c6fc514fca4984fd3ade0c49ab91be5faf5d2bcfb1e522e9b 0000000000000289fbf28416198c5447edf2c3fb3a3958cc32c32c102adef7a9 +192400 00000000000001ee54bf56b79671a9c152d1aa308a9191cd0722d3a0259a8ccd 54e695ae4ad82338f48dcc368476274807b9a3a6fd7306f15f814d41d96c854c 00000000000002cb6e11aadfb033fc926e03d05d10b82e7bd8da9e99579ffe7e +192500 00000000000002f229deb68fa8782cd3697fcc33be6fe819fd56a00402055d17 9f168d7240cd7792fc72801e6cb8a82f9da359083e02427e2a0bebf130282120 00000000000005fde0f8ac3f1aebfd7e194f93a4823df3d292cdd1e363b866a2 +192600 00000000000004b0f4575a4349b4e4b7e412e68e13f8c5deb1ffe795ff3ce6ea ad7904d57a9d604956ac4d5af2287285e11cc5cd087c916889f41599535aebac 00000000000003fa73b197310ec01534523a009f774dc32f95bbd00ece9401ef +192700 00000000000003915dd4624898adea7b6a3e37bcf5bb6bffa8a2686c23b0139a 717b33dede19a60885288aea7b3f8ec008aa3e6f6ad42b92cf8a760ba9035ff9 00000000000004f058bd1b672f021c4a205779af0a25ea65a03e36543d672593 +192800 0000000000000681f69f4f29ddc4b50b357ce74391fa57e2c5f7a3f314feb0fa fe44239c4f4fece837ed4455c94ca29460c1445e9bd6f552678847ba317e4429 00000000000005020b50085af4b8f7ad23e24f2ee6ad3f56d9c9b3489310e989 +192900 00000000000005d6d2deb2c2b8960f7a3dccc95d41c8b7094d862765cdc5299e 27958c23c227b23f6aa1f563b6c2c4a650719fa59e8ce88e65a75232945e94ba 000000000000004cbb9988878934abe231356c0891832ebd8219302fcb8956da +193000 000000000000059f452a5f7340de6682a977387c17010ff6e6c3bd83ca8b1317 fe638aad25fddf97b21c2946a5f2d8bd923b8ae7df9a17a923c7f3a9879af9e7 00000000000006a1e50bedf15148d15aafa469aa02c0e9ad1d8fa3a479bb770e +193100 000000000000007f1284ade16a27f5746194d512bd1e51c65f2d2505bd8920c2 1eaa7c57c028f95ef26d01106b856e22baae914b4ce8ef43c7801ade7a9f3f62 000000000000010873caa9684e0b7c8b137bb2174b7458eb4f535be09ac124b8 +193200 000000000000044413bb4e28fb13b0752c2c2cb50a93e1744052c889c9670573 fab78e73cd55d0a18d7b101cfa65f855902b4998d9c6c4116f4da440e2597d50 00000000000007dfac031cbd1840183bdc4b5a1ced284492ae0b752d72a91dbc +193300 000000000000008b9ca2182c7bcebed8219c0f608a8c6021d10341c5ed440f03 4388216697694aa8a37a52fc0091c7fd0febf81ea78627533df754824c0bd19b 000000000000078275b9a97c6f51cb567afd355bd3e52c93d173f2f0e99ad1c4 +193400 000000000000043b3fc193ad9d9d31a1aaeef3328037c63fb10a6ac459f78159 9ec485e8d46b87058e7249a6899199e73e062678d22259d186c21117ea7de5bd 00000000000003612d75e06e2b67824d508032ff541a67d6bd2eae03502577c1 +193500 0000000000000333ab7e1d57889e5d79e8c2ed0c05f52f41ccbbc6364a34a5f2 3c51502438700ee04306ea3a7cf93da1a93fa928280d449a7eae4e7f1421c09c 00000000000006dfc417a2d778dd9c372b9a9c7338209efe6d437b66317c3582 +193600 0000000000000340766c3af62744ec1bf13310c15fce8161f0fe44679d7180cb 8057540e270f82d4de5342c2340351288247e2d8bc26e48652fd517accf60cd2 00000000000000fef378c25a49a2243689f4aa9cd57163dca17aac93adb81ba2 +193700 00000000000005b7e031a4dfd2a96223f7f5cf9e7ce257b5c738881b113ac6e9 caf927cf86d7fe2c0b845943391e0a2de775e662248040b63913c83293e0f48a 00000000000006cddecb4c66b1007112cd2db0798aba9452b7e19e3ebe0124b4 +193800 000000000000052918825b4529465a3c8b3832ec5ae357b7fa5855e5c986a0b6 3ccb09ef78517e4c238bf98a9ae62a773c8511900167e299799b667bbeb0cf8e 000000000000014514a52c875500ab08e45f7b691a6ce1fcc04e5849c840be17 +193900 000000000000001c4d1e4324fa14028dcfa8f0b8605c738216702851b49b29a6 d2659465485e3650b7b5cef686540393bb06b15d29271403a62a6aec53683afb 0000000000000498b29dfb7c89da263c4bc1c3e16748f5580e122530f39a2488 +194000 000000000000046242d4984ecf2217e9afa113f2835bffbff118f2df4d80b216 fc3803256cbb14fbd3ae3300cef517c22a198f3365b602442c0f5a11fc18b5c6 0000000000000368a27aba8f6ca19496fcaf1e74728f34a6befd4b28ce734681 +194100 00000000000005686a48f2090e6bcedf04530cb47186ecb10f5821fe227170fd be27ea6d337acc9c5b6a489729777128e78330823f617156f821658f01e6729a 00000000000003a4eaf939b0dc8472de0479add51fb05575e2bfdfcec7803dc0 +194200 0000000000000398d308463103367d2ccc00eafec0ab7a967cdd7c42a59b0cad 443761e48c6e174105786c246996d9aea164a440f020ba31cf6100e25c813111 0000000000000299432194f7fe0fe6886f1e18532f8d9d2d7df8ecb38c76e147 +194300 0000000000000404eab63156257a95bff17d43f00512ee5cdf1d3c210e51d0c2 359b543ab225ee135eee4c5ba3743a3d62f2bcd5c625fb8c6920b4dde5bdeb2a 00000000000002e4ebc841794229c416ba5a5897eb2a4aa152bad24645f8c571 +194400 000000000000072d9a416b711243a46c4c9b9255bbdacc7ea6d625bb943cbaa8 792e63ba4ed7b603bbc387798db6c156407d852b38bcb4d9b6157468d871dc3b 00000000000007a4c41dee46c1bcc02dd21e685c1300ef615f42b00b1ddda624 +194500 00000000000003361d05c1c3be3f74f0e11315a60a3feca1c0af049018ad312a 2de68877d265e6d4158884e30c1a32cbb78ab5fc2d9f315b432a2456332ef320 000000000000076d62b021071bdf56dbca985a30e0cc6005400deae38682b583 +194600 00000000000003a8bc44d972f738b25320d247d41148df48cf3dc1ce9c99d9cd 57aeb7c3ce12d15d822ba3beee9bfa39b39003c51f032993aaff46eede7997c0 000000000000079220edf2cc3bd63e7774605d789a181a831bcbf89ea76b18b3 +194700 0000000000000688e74f08fa4d4a10b2756d3e92a3248571b8d9e9e4b853d776 99665e7eae773828662e538a8ac99b627b5af8403f2577444946aa018b7ad33d 000000000000070c28cdeabbca7dfb51e9dac9f83ba85ca7700f683318afd5c8 +194800 000000000000059a715008fbb010c01e61d3fe25ffb7034034dade67c6abe82e 1d6ea871922ee31aec6802234b680596bccf6f82cc9614855f962483171157e4 00000000000000ba8811d1a2b97badf087fee4e9051e167ce11b6e7048bf138c +194900 000000000000029afd8707be9a5f6c8dbfaf752a9e849bbbe61d6a0aea2c5628 e1b0529d24f888e51c36e2245f98473d4ba45274f0a6da03c819c0483f648da5 00000000000007960c5e50fa7f2c6ed0ab4374aeb13a8f8c9880462b63cde362 +195000 0000000000000716889a0c9c7d773f1cfa65cdd6a60a2a9da18b55c9a1f14a33 e9497f45135b1a748091bbeed36e8a284782552ae93d2a4b619c110d4d9c28d9 0000000000000443efdd88862b1dc1221b6ed517d3862822d614bd213889e68d +195100 00000000000000b70b732f89db7ac741ae9640f7342a1f5bd2c131f99237ee76 ad7c998e42e884b1e4e5f0b92afea74f2165da49e6d8ee9e1294152f37aa210e 0000000000000281f5f75baffd7ad6c0983fc6d1416b3554f6ecce9d0cf59a10 +195200 00000000000003a95d78b1b29e1bc7495ddc9d3124368b0ebeb3827ad17b5926 dcf458dcca766284733c1bdd69eaefa5935950fc443c0b277a994d4e5b9ec8b6 0000000000000574a56ad8306974825d58021d69ecd466a53a3b809001117a81 +195300 000000000000013aa6443b4ba9c8f329942e478a6191ccbfa520943b76704c67 913aab071703f05bdcbaddadec1a1086e267f2e080a57934e4a8acdb2dd29a6b 000000000000008e6e8f09ac5b0ead9007c9cfe7163e536ebc2158fdd42e0285 +195400 000000000000018c80c684acfbf9e7930f31e56f9b2973f423225436143f07d1 0f921bdafe092658f4875257b89cef8a56001a5c941c01cc7980f34b6928e848 00000000000005eea22eded8fd8d46716b50dadb9d04206cfc16b9824f46c9e1 +195500 00000000000004d9559a4e5aa19c4f3f29fe9c4f698074991357158911bc1bb3 359723ba082f6e6fa8b7bd4a68954cb091fb404d5f4e73c2f17b5fbb8d0462f7 00000000000002604b9d9983cb4b7aafd078b3d6108e31d50bbb9ff6f10940db +195600 0000000000000674655ba2ba2a610b2a50f9c74bfcb2d43a5899ed0cd42ad1ae f2dc7d4767761a0f4486c954642091bdf051bbb2ab33bac39557f3bed7d04c66 00000000000003c8d76448bda281686731e8fad180df23dab2644682806a6520 +195700 00000000000005d47dcd7b093c4dc469781035acd9ee5cdfd3c0acb017d9f5b9 6eb410734624fc1bfbbcb55d281f43f9e4b0f7f5e8686e5332cfeecfcb9b7e57 00000000000003a0665e95c0511505fc85180ba642ca17b5cf7d4bd5ce69306b +195800 0000000000000594ffd54f7683d0d142936227e9c99cb25f577d91f9137494f1 0cf82bef3b4dba44bcb9c8fc8bbdfa26f8e9072d07e9ed1e9a216b9258c57dfb 00000000000005aceaa565367bfd353e16b02621615da758fe2298fac50bd3dc +195900 000000000000039388db211249e34973890cb0deeb553f40100980f7c4dce038 7c03b923814a0e0ebed5d9c831201e4c134308ed7634e20e071100c93fd6f8cd 00000000000006c74bc0eaf942f5c93b53afd19c4b7d4b0ed35dcfe549ea824f +196000 00000000000006ae59396d4a289e83fe1b9967630752a5799f064620af7836a9 c784d76e8f0c1729e5c34559f01213f49618d723b6dfe4b489fba91e97dd5418 00000000000000a0b861ff4767ada7d0310823e9316af4208275237554c247d0 +196100 0000000000000299bd84a24da62aa17b5702133bae85ba3018f67952ce1fac6a 9238a42a72f5884874a99fb5f50fd13d54124141ad1e0289be2ced47eda21ab6 000000000000044fb44e0fbdfbb5944d6a4c2129916df4f168218b73256a1e93 +196200 0000000000000671f8eb6bc77bf0972a18d829dd6f97e2bbd68222bc97eabf67 baffc25b6ae5507a95fe808cb611a7769dd041099dc7fdd8eb94f8f010eaa493 000000000000046ce5b2f0746f39c4ae9b6664a35091e012d4db790f97ef0a67 +196300 000000000000019d8d9cd0a63db8c77d129bb628012e0c5a3602d2af5f82610f 76984d40935c6c5cee2241b4c90ddb916c5ef5d507bb3b68301f6a11d0026a45 000000000000069fdc882e5c26681c99e8c709d372964068e090851c347c0795 +196400 00000000000002ffdac437cb3d131f39b5ff793b0997207aae64b614ff7f0b18 7fc4371dd0e8e34e74c53dee60986e9b6fc551ba641fb81421274a6198a46de2 00000000000001ed55ad94d864cca267f1afb7cdc5ca7c711c891648340b85e8 +196500 00000000000006bdd8cefe72fd2830b193d1df2eede2452e0ebf7d2c5345db15 fda3be7b81c8fd2b3e5fe04aeef4b08ef39aa27e62e71db7b873320d9034a6d8 00000000000005b11f0677bd5d944217d46cdf227afa065bc810fde5a6f161e8 +196600 000000000000044f8c564d82cebfb9d2217ad254779cdf95ad5a9baddee9f3db c124084582a19609145c130ffa3163a76142c09442ef4b7321a61eca136387f4 000000000000037fabffc3637f57ef521d297aa922bdbfa0ca989b23f6ecaf96 +196700 000000000000068154c246a3e250691aae05feca083b24cdf27817f6c0399dea e54b1d90e08b2b971ddc0d63478159b43daacf94318485b292a68b73327ebc4c 000000000000035132ed7900b22d1cf41308ccbd066fef3bdd3cfbdb9b1af797 +196800 00000000000004960f1f55da8a22c5393b962a0afdf4e138a56e6b04cd678cc9 a558b02918bd1dce0ae798bb371816f9c09bff0313fc65591bace4d3e2e61a2e 0000000000000030831a651ea7c6796dc8a449ae0569d7cd4926a5da88edcd8c +196900 00000000000006ae310893adc0a66d336195c55ed2588bbea18e08db3d80fad6 67493d3f9201d97671cde97e4570665e93bb231e4d93ee38bcea5dafe9fccc62 00000000000004db12b7946768ab71002c96410b74defa77ad6bbf560f7c7c1c +197000 000000000000012094fc2ea1b763742c424736748a4fafe59fdcf0cc92e1c15b a1a59f7e4e44549b1e11409630700362e3f0a87f970c8717034296e52fe5074c 0000000000000276bea3def6b28644f1dc9f0f0010b5a027f523a0c8cb079388 +197100 00000000000000461bc726bf3104c93ceb0f069ad63823a26fa9050b3d78a07c dd32ffbf4eb3f2a7dfb0241e134d5adacc3a33d1e23be2e9a68af7278800e348 00000000000001af2b13f6c43eb6e82ef56bc3e35a43a5e449a92922c2224f08 +197200 000000000000030645c114765350289bc11dda3f29b41872dff1f70c8a578fbe 85e24297c64105baa37c4000abc061cb893c77336460863193073e9254995cf5 00000000000003f8874785cf54a2885aa1d3aa796374697cea25553c4140c7c6 +197300 00000000000005aa14a22cafbbd3baea7534d388429c04b903368bd0fe23c031 2f5bd627061622d68b3bc56b89b190356a06e0e9cc381454c93f95d135a76549 0000000000000638ce17db07923da9a54ff8e82870b96f13bb43fd28667baf45 +197400 00000000000001fdf97f5e11f8ab24cd89dddb3dcc638f16a1405fa74540ca7c 2172c587cb00e4e734ef33e40652e9a5895c78e4dc6e280e0487265990918a01 000000000000013f220b8f4a859c8074cf918c8af4183ca304c2efbffe3afa2e +197500 0000000000000426196708cf453989f530797e643e822e2c47b931a5b6afa54e 22d8a1346bca79660149d8c3964da80f578881a3aebf60d81d532fac71beb63b 00000000000004838d75888b95fb5d7b28dedd62f87bb0e99a4742ad641ca85a +197600 00000000000001e36e86253ff39f177100c2b2eb0f90e0713f514976fd429a0f 5aa7283bc62881fa019a6fe6de3b1204d1e605e0e3933f4a7ccda18b6913df79 000000000000045cdbbe476c6b12a2827a60537373ee3d88ead17d75f9a867e7 +197700 0000000000000211e1bffcedc52b9b2cba1b0d997d2506e79cdd750a992888b6 5d3ac018dd49fa702696db3050c80995f410a996be824c050bf5d886b0cefc5f 00000000000002448b1a1fbe7db158c913aa23fbc0689635bf860a3e3fe513e3 +197800 00000000000003122975529d6e7da88ef5e2a01c726812c41e2c0848117c45c5 d7668351393a9730246957fcfafea564d33c02b783bf4ab21f8e68cac109111d 0000000000000306a15d8e2ff7caaa619e65ed889cd05ea3113a3c1684c2e366 +197900 000000000000054e8c833f882ac511d6a43afd5ef10d914d617f39dfdc6e5b4d abb02b4274d6fc6f7e6911f47de9af5f4d11777c3a81ed0ba64ea5eb07ff284f 00000000000005389350dec624c122479bbdd1884501080b5dde24aaa39e25a0 +198000 000000000000000f2ad431ff18ab1673d911395c8fa1f6801e054c5dcb54f8fb 4e836c56b7ade264002812c2a1efe1a2a332dee65e0c0588536af99f796c4884 00000000000005e980307d69776708a2899ea7af6fa376d15b0676dcef00eee2 +198100 000000000000052d1fc28ac2265dbe6c797a5a77903604785aaf5e0073b55ac0 f1de2c3737b8f226de73997e419d5342fc9ce29501a452d8b650471f1dfc82ca 00000000000000d9e166a752e55d1a5056a5c060957deffd4e2bc08b521ffe3e +198200 00000000000004fdd72a66a57c887b35f7c0e8ee5014663d1b221c9dcb996420 aa0969471814ef6bab6009f8751dd1eb44523f0c1c36674f4c7c31df83284b9f 000000000000025ddcfb97a91118a1d57b7dd5bedcaa74d6462b1b2ad79c1f64 +198300 000000000000016d7157131175af5ad44a01a5bc9fa879c463922b667effe88a 62eebb5928df3399ec9c128c77a95b5e8723ea0c03bab70ec4f69970625d4369 00000000000003f6416aad229d22f6c8fb2625544fb6b39673416115459ca826 +198400 00000000000005150ae967343f5e25f46138b27d7419f23a6c57ffc9fe9611f7 4890c4cf0af3c086061c434e9d47eb73fa2008e2bd7ab0f5abfba1b7f48818f5 000000000000020d29c701e67b6a2363dfb5391ebf3f0b456f058a8870a46ed6 +198500 00000000000000d7e44355a84e43f7a2ccb4ff227067ba48039cff34db53372c e68b903085021971f82d38b78f6dbd48c4635e3b283478b965ba0f6761a27694 000000000000053ec515c46c6b71ca1988b7f78667af2cf743d152e2e3119c94 +198600 00000000000005f174862daf4823ab8235024a1bad6d82e6e8ccf02efcb281a6 d7c2d905028b8cd5bf553c811c6a3314e4cced302377b3edcb7cd315203266f4 00000000000004aa38173e81b517cf1b73b0ee17e53fec7a3a09c15485b8b43c +198700 000000000000032dcf414fe96262c69f23473c8ca0abee3e7dc017d7f177a3eb 90c7e505db3ebd23443ab31f67a6b55ea5971347001b4a4a96177f7524c3f75a 0000000000000020cf5d8da3b445aca92a91745794dc0bfb5d1e7bf8f82494c4 +198800 0000000000000031d615f3a4536b1273967d8de0a6e1fcbd83b7ce6221abcf15 53fe2324aca93493700394dda24bf5b02d172df2c9bca4d25b31a4fef93a7603 000000000000048c31112e4af77494660ccb6c15c9315c5fab6372d271a7f3af +198900 00000000000004e69a939f83d9e9d4b4a8bfca7c60ae7de4a1e4b2c043afa0a1 37e816fe7405a2fd7b56a8f1409c0540bd6074b6b4f08370b6155fe09d571cdb 0000000000000614b4ba419a46cac3a9dce59b6c47dd34041e6a1ae737eae2b7 +199000 0000000000000397e4ff8f223d31783dc80b3720cd77fca21effd39709e0c9d9 b51f48ae75283303178569b6491763eeea9760c78cb905279225e020bc3fac70 00000000000003ed1e0d097b5f648f4d9d2f30127bc3d64421a1cfa1e738bb8f +199100 00000000000003bb7f96e6c50a55833c935eb0e5ce41dc565d16ac2ce22462fc 0326cd6cafdc0844a581250bffcab2568c7aac0a61eb8c3cfb006cb57a059dd4 000000000000005fe12f1a64c608a77b0e1a1649f3142b00a4625d53ddebc8d0 +199200 00000000000001f731d56d3122d7d3e0cd7c7b70c5cfa248ba0406ecbf26e4a5 35c88ea2d66fa8e1b978878540b12a997e3317b955a9c9c531fdc0f82d87dd6a 000000000000036c09cd665887417fd76517396c106892a0ccb887391e9c9164 +199300 00000000000003a6068a2edaa133637b19bd6901302ed9b059cb6f02495527bd 8236681c6ba1d01d4e78895698d72d17adf4c2e691bdd889cc3dae0ca79bda63 000000000000014d93deccf85aeee5d6858537965e274c8a9cae61376ef7e8a4 +199400 00000000000004c6d590deac7297c57c6f303022fb047c9cfdfecbc400a7f0b7 192e1cf45748df72a50356e7c657d7035fe8a94602f4a3e7727f8f59c34f6439 0000000000000579c1239d8f3e994376c84d4f5e049244679c470938a219e734 +199500 00000000000003580e0ded0eefe75eca1bb8cd9d605bb98a03448debfca9b5aa b93f97a02495f364de403ff66dbc178dcd833119507d834d6195f2006db7433f 000000000000012de75307beebc3f4c372ec10b8297fe9141fff6fb56340bd63 +199600 000000000000039e3b0c73c0705527fa525cc8c549f672737e3a580d6f242fc2 bb30ec6f8c0f4e12429546b19d4839bda390f453cf6db808586b9674ee6e70cb 00000000000004ceaad7f008d66bf7554eaae5781d0f83a48a3fb0cb03a4a2eb +199700 00000000000001fb7e83dfd3408839ff84027488d0f821157e6221faf4b91fec 9a29ee555fd532c192cc6ec5460c34f34997c66de33f1be12a2fe8e0a1b7c6fa 0000000000000553795edcbb8989856e02e1eee90ac9063d39c6777ee46cb853 +199800 00000000000005c0c51a720ad801af7313ef666edc358c7bdd2cade47c8f62c7 552fecdbd99934bfc50c467fed309f858621a29ef35554686bef87b6eb927ae7 00000000000005742ada8c07ec5be31f18dda31b55c1dac1b3dbdc37d39835e9 +199900 0000000000000138f016a6fc1666fd667b7d282d65ad14b7f0b16a75a2e90e50 10c79a459cc0482a87705e0788c4d9cf1259f866018fa5ba3ddac8488aea4cd0 000000000000056312cb86bd849f31d6260b1cdf709676d4caff7ac44f15fb6b +200000 000000000000034a7dedef4a161fa058a2d67a173a90155f3a2fe6fc132e0ebf 1cff6b74df6e3a029c0b38f922fefbd7b05cfc515e6c0f353bf02951d24bfb63 00000000000002e3269b8a00caf315115297c626f954770e8398470d7f387e1c +200100 000000000000045d7f10aa3eca5beccc17aceb505592fcd8298e46bc8211052a c170aeb442b96ee349a40b5373c12b22ad2833f3382dd4899c1feace8c1ce425 0000000000000416a2192bfb5b883cf0614bfac0ed91ff4ce022091944bd648e +200200 0000000000000512f520a2448bf5d07c724fd3f68d74f398b1e94e183930add1 a578ee27852652b2194f8f7b06f3b8d5781fd5ddff889331f123b73403fe0396 00000000000000e510b96fcf03e27ad30f8d50e4cd4cb7cf4c06cf7ffb9add3e +200300 000000000000008f6d9c93f92bc3bcd605708c5d0002f50514fb89a5b72e2a97 9096a1369834e495913e8a62d7312102b409b433467c029c2ff606bbecbfd549 00000000000004d08921e3b4002091a24fc47b19323925483693bc87d51a52bd +200400 000000000000027b53148d16a3934be291a598b49c8987b83b4283424b30be21 bc08a32d660ab4be1bc0940c1d674c3245eccc2aa2b00bb53af49a470aa03bd6 000000000000027e00c19b4f78f905afeab7b71f5cb4a3567743fdeb1b463238 +200500 00000000000003539c2a2591a08d048a892b391b7e38573a92674f7fe65d45ea 6023d1bc0d9b97f957b4f402e04b571f60d9129f1ed1d9f08a62b6639a621149 0000000000000538beb57a7046b072e8113a101011813d8d87cd2cadfe3d7ac0 +200600 0000000000000466935bd1a97a91eee072044345f42619b1da515bd249f2c5ff 3c9a155b7b8d289a2e50a7a65ee150230449c5d83f0c5fc3343f34683e795956 00000000000001a9bd722a2b52f0861b6abd496a2a394f5cafe95541905e172e +200700 000000000000026dd2fe3abe56701b6c6a8cd154ba06186d1f2620bed8592ea1 673cd9c0abf94ad8211d1de1c327f30a344c075fb2585b83e6765ebf8d60c2b3 00000000000004d9981618daefd42e43fb95c927d493ffe0510754459a5d511a +200800 00000000000004419c4022bc1b61c237e3af5c6cd8454a1cf9ec55430b0b7dfc 1092dff6c9ee81623686ffbbaa98c034d9710b1e8ea48eb8efb4d098c8200503 00000000000005b35a1c797a75117d30460553017c24e247fc5d6bc037354e3f +200900 00000000000003d903cfc5970fc2038503f7ed21249ed841c4c8938bbddf5cb0 574ecab87e182067ae56f2c609b78078c338a992b2d5af74592403318f5166d0 000000000000053ad10bb1e4a3f8c9b385ab6c40df796f68c2739fb892300a33 +201000 0000000000000350eb681b2b81513489c5b0a74f456cd9c8a773b92d7b4d53d3 b2aab90de5bc065f949c59043000e8883570c1b03bf9e0f54cbf672b4a886ce4 0000000000000030f696773ae2160056e59e0618c627623fc56b0389a7232eee +201100 00000000000002ecf5f71a6d163fa4960a49a415f65209b5d3cc87f94dfed3fe 3faa73f0da90ac8c7214b37d99b63fb5b25eb14a9b75935ab146436a03bb460e 000000000000048874b5c2bc909d50516b8bcd1eb640f6289b665f006fa355ef +201200 00000000000001d5c485053b07729a4cb9e9217b3608e44b329e3196c111ac93 36f0c77730dff1e126088e6e4887567064f6ea6f8d5825c890641de767ccda84 0000000000000220898a162e779c0c39bd3f1d56d698460301124765012eb135 +201300 00000000000001bf42341be20b0b41d893165577a289f1163b34f42b8c006e20 b5178f2af53ca5802f5bb940cced0c1b7ef77e5272f4c9c0794c4b8fd41fa1c2 00000000000002339d07e8c0e00512f3013be002dba9074eba17aa1126be0d80 +201400 000000000000005f56183cf377c9db38292decf80dd4ce53943a22359ac52d9e b4b280ec3cfa2f0bdcdda04711af3469efd73006b7081ae80f5d9e62c67965d6 0000000000000348599c6c808ef1006008d7699b9d6422bd21f99e96ba0f5ffd +201500 0000000000000372858553145604c79a674c0e5767d4b513f63b1ee949b9e2c0 3c8faea311e5dfbbfc163da77c266c552544a45aa399eaa44d3c69b80861daa1 000000000000007fcb87b0286ed23308dc03321b50cbeeb8e38810b5b44a39f3 +201600 00000000000003a5e28bef30ad31f1f9be706e91ae9dda54179a95c9f9cd9ad0 817cbf0559f7693a2554b2fa2e747afba535ae4c2ff86a345ac9312db78c356a 00000000000003c52ff2c90f4e318b7d987c9a6a23c809d0f945d50689411cca +201700 000000000000008f9c8411ae811ff7b98f421433db0aed5d1872bb7d4a2a1461 0b6748a23721bda49cc0b40cf4ad735a5846c8e755f95d496db58a8fde5b10f7 00000000000003550249dff99cc2087e62147a0df3c1d42182fb1c427c7a9853 +201800 00000000000005451e9edc12b216691991e6de0d3bdb969085d9f3818feb2ceb a703167a5c5b43f3ac1a1153fec342a00c8a3540b2f7581f46bbea53a3f939ab 00000000000001ce5fedd19e5351d8a50240cc0a89deccca2e01aa277a24fb3b +201900 00000000000003062906bec4e7ff64efce341bd2b08a72fd45ef3688985dc21b e2ba66a5a3a2a78e636a879d9287402df746f5efed6dd61b3ed7b6505a082e2d 00000000000000f3f9bc7313ffe349402e76e8fbc655960865dc9c8e798d9f65 +202000 00000000000003282fe1d5533e4275fd9f51e6ba0352ec01f32914e9fbaeaf55 79e80843d05248a6aed61fd20f531d10802575f4fc804280a6901551177de0c6 00000000000003acd024ceb34c283d9a71883d1c5a74d50608a9636d2c6fdfba +202100 000000000000033f0ba2dd17fc2a2b71ccede6ce87269d37ea5614ba9d046f6a e7b0a82ed21a5db5fee22095e54b7012bc5a371bd974bcc810623ceb8c70035c 00000000000003bdb59f77e17416c1b1e751b9dd48b83442145b4fdefeacbb5f +202200 00000000000000bf0c58476bc209761170ec8040c1cbfa745204182ac4f6eee5 a333152044113725c05d04423c9fa8371dfdee645491269503bc579515cc373c 000000000000038534029a66ad98ec5cc6f4254e67d7bc619102e659f2b79da2 +202300 0000000000000480e59228308b00cd25c6f7fc85a38deeb5d0914463435317f2 b7491f86668c984f49b0dc76c4421d24f7c1bee53c6058bde185e4ae1f0b0bc7 00000000000004abd3658f11472fac7c67298120735d5733a28c0db4be3cc230 +202400 00000000000000e9dff8703761b40d2b2bfdd0eccf2be98b451492df0d27c620 903b90aa0be5d56c8cf4c1619f2aec00e0de9d631ccb7d431229dd8c5c6337bc 000000000000051b258aa2e17271db5cff1191f956bdc0e4d413c40f56de3054 +202500 0000000000000066936b3ac9a6049e6d8fbae97d8aa5f754b5b2775a1000a507 678295aa549f585660bc5c7d6a82a06ab534055943b747e82d14665472d7d3a5 0000000000000299abee2d12078be1545733761347c7e8dc522213cfbf4cb02d +202600 00000000000000109281b2cd76d732da4b92f6e59f1d86f84966ebb78a556e13 2e89cf0b70e3387fd511a7a21120dc632ee4537e79a5abbc84a2e9194cf6b33a 00000000000001898df910de161c39fb20099a67c792285b872dcaa8613c21d0 +202700 00000000000001803c6a4e75ba0a20b8602dc984d91582af324004046187d8f9 86b2cfd433c547d8a9d24173ac55a50084097f899901fbe56881f53c67088473 000000000000025cbfdfbf38c8590545584eefd9438c0d8ca49e1c8d44de6ceb +202800 000000000000030d10bca1df1a67e37e3cf80934544976406020458ec603f475 0363fb5a6b5ee899f6065440dbc352720c71e3a3a8ebfa14569eb20b5682c89a 0000000000000063868d0b418d608fd31b5033c93eb774d6d666ad4c9eb721ca +202900 0000000000000169bce9b0805941397912b9c8095dacd59e8d06e1dcc4779a63 5ddceb8d7eddc7e2b9d2b2da6c7e007d9062d25ddc304b04408c50e301d70dd2 00000000000003b2319771fc80db8518473bdcc58c3b4f40a2df1c7e95962344 +203000 0000000000000575e3b569cbacc02e284a292fca7872b37c433bb3a03a5de4fd 15df9330483e602e68bbad2e90198d2e8276fa8a463cc28e89116dbebe108957 00000000000003b7e4d0e72aa776ce346c4a2a803b2dc8a06f59a0d7f777a02d +203100 0000000000000312e80e7a7bb6ccf9d7a3059d717d7e2448db4f2849c04d6586 8ef9db5bf38b7c5507734535af7b660701b5259d91ba3f9844f2fedad21584b4 000000000000054c846c848006465dbe062ea05c910b04b0c16b46f4d28f7999 +203200 00000000000001590ea890cdb19dfd3838be11195106e4ef32f489225e6eb737 688204d428620283d54748367d0bb01dc23bed796c20a33e976534fe19cab333 0000000000000378de61c5dac712da01cea62865af691a51c3c83dd2b6a40805 +203300 0000000000000423eba91ea15bc04f6be9383fe6197a8d1e301212ab054b3736 7e269991aca20b5a164595a21d56dfcd6ac38564ff11dfc012cdc3372ab9a91a 000000000000008af8a1345db12ccac4fd78cafb3671af3b669da1d55c094325 +203400 000000000000036b1a4520ddf1ce2b9d9a517cfd69af10b0bc5abf609d2465a3 f753ab79399c3a7d323a65d1eef66c1c398fb79cf506d0b98ea789eea5afd117 000000000000049a3d299d205a370a372f3415737a9d0f2d6043f090485a809d +203500 000000000000049494aac983b5360b2b271ef38957a0b78fb75ae10f0a0540aa 6dbf8ddffbdc6000375c31a8dd5aba198b731aa55c4c9b9c3d6ffc78f064bda1 00000000000003ca9e561312933f74081d04822e64b8716d0bbf85a410e65105 +203600 0000000000000562dcf5d5ce440c55a3d5ab108f62a12aba0909a46586e66d0c 1e901972a3296e599fb3cfc7a76c85d29532f44c021d295a97878d06662d6dce 000000000000009e45a9c591ac7001128ae14e0765d0ffa2cbb5ea68ec8d4064 +203700 0000000000000481ce3d564a4439eea934acdc3c9d51d0eb088b615cfadf3188 7cac9e3185b0631bee976fbf4e1aac5e79475a022c78af212fc8e467177cc076 000000000000033ade960d39a772c3991120a5a1a367c2cc08787e9a9a0c5f8d +203800 000000000000023bb74d1b33a7fca1746532dd80afbb00c6bfc0c9610055f971 06490a6b736f6cdd700aafd1d304dce3579fd484baa7b22804e72750047679fe 000000000000045273ce42673db8c270af25b6938c11cadea12244ca44b1c29d +203900 00000000000003dfb2db1fe5f4c1ca632aaf65adca589fa1f82627dc7910446b 71557508ddf5950081440034afd1c1142ef6a09737d0aaf8e25e08183aac642d 000000000000001753ed885672ff89715ab3e885c2d777263185e8b0697058d6 +204000 0000000000000423eb625dc140272ab97fea3ba6baf1dc56de77deabcc492872 40a3d8674a03cce794cb9fb274157ce75d9a97ace56467a23d9aa23a8c52ea85 000000000000020aef81dcf0ef072f2f8f77c9e0fe57efd67442ccceef89b323 +204100 0000000000000363d7f5f3341fb0b5b69949103e2d681591c9f737e4ea67e2a7 5b643fadf0a4290468677cce2fb34479dd1b693808e97232d91fe6746b7accf5 00000000000003e5387c1bd28d5cfd4072098dd90b1f8dc09a9165a32693e832 +204200 000000000000053ab5cafe0435882b6cae116e69be95c0b10968ea94d9ba2d55 354a696fd15f01cbe8d2170c844256228283102b33eea6da4e7f1e7e7986da35 000000000000016fd3943e447716c95d4f38b6eaa72127f479b4b8e57c148396 +204300 00000000000001bde555807e9422e54dc827daeb74a69f5f7e6dccb1dbb0af87 36d6fe74704df378370f1e58c94029d61da97aa869aefed5e01cdf37630836a8 0000000000000456df693329be70cb1399a9a3cb72e622289cebccc26ec1b177 +204400 00000000000000cf4db9e9de90356e80acdbff0d528c442b66a04ca074f312db 27507c92fdf8fa968fcecf431a7a928bf2bf3df47ff531c3f0bf524438ed6d66 00000000000003342501b2ea7d678e8cb617acb1af4f6712ee0556abd977cd97 +204500 00000000000003d98bc94cef40aea36353916def21d103742d31027add0725b0 2826720338441d9cac705c24304a4414e19a8671b832578a8a6ad0c30d51b9c4 00000000000002bbdedb383a5fd4636c754e190bbdc65f9ade9ca89ba5d8b7f6 +204600 00000000000002d5926db3c08074969ac3dbfb1467a80268251101318ea6d7e2 755abfe56241331b9aec72ef237ebb2fdd94d315b41d7c63843a6427aee37a00 000000000000036992725340a4e5469e0270d3c51573f2c5e396030dd3ba09b8 +204700 0000000000000405d72623fc7639d326c69c9100b68553059facd4e540b0566a 418e3b9a7a636a88323690cd3b0a6f7a5ad98ecbbb9472b944ce824c9729579c 00000000000004337f3ecbd057fb1c868a48c83f4fe1cc16b532c949eaea2bf3 +204800 0000000000000007ac12f3a8c763006bb6b057f5f0592ee0e1628d5cd12f430f 2bae85e108a0935f2bbe3c71c7c1b682554bb4293b9e392e26f607be1fcc5684 00000000000003b30afe02e5839d90aad028e532d14c027e5d6b981454e5dc8c +204900 00000000000004a37a788dc79240d33f3a1973a5f2042758adf7762a57e1d374 ea55c5995e3ee2b9dd0228117b4a2021b757a34dea40f56f535acd240f8de866 000000000000018e22541f38f5a98ed0840936fc3ac05aa75b7c20a830e43661 +205000 00000000000002cec464aa21f8aee916b90e6c5c836efa25e4057b74ca6b921c a9014bd2e9980594db9665f5e2b31b80714e97df70a71e9dbd5c00626dacd5b6 0000000000000351a0da44dce8c5d921994ec86cc95f3ca39d2ead98f63e73fb +205100 00000000000000b1b2296bd82b53deba33e521c34e059480a5a98d5ab87f2edd b9ffb01e6ea4337f4b1c9130e3f4b304ad5233fc4cb7c73c674fe4a004265c05 0000000000000486e47edda5207c825f52d1d87e44da06edea6d04faead9f9c2 +205200 00000000000002a004fab5b9574b0e05e111e8fabb6cc2b284aea92ccb874b0f 954e8352dbd0eccdde7b107c0dbf43fbe3c5c8c16d04bda062105b5fb1ea73b7 000000000000005c2c453b20b4ff2ab7012ca92053eda9f1a0c1dac6c9621d36 +205300 000000000000029658eca70c1bd9d4c0eec12d13da66a924dbd3eec4c79608f2 3b17daa2799d1a9004f1396f476537e1b50fd5764fa685b319df86b502e63175 0000000000000542ec79c5ace530661488d04751f32c80a2c49b0e0bf48ec88d +205400 000000000000046fe7c2f45f1fd692251fc995c53c6c99375306df412609297d 58e47f1b6a4c5a2581df88f0fe54e6292a8dbba68922d0f051fff5f2e112ed4d 00000000000003ab544a57b397e1e1a15441da0e2e32028bab1336a924b11d72 +205500 00000000000000011f32897af953630a387d1741b8cb320660ca76c8542faa1f 56cd2301004320b3dd33d669a8b5261625fcc2350e8f3b865c50b62d36bb9121 00000000000004ef739ccccade8406ff0bb8a4fafb304fff68ebe8a5856b5ad1 +205600 00000000000004f430ab511411c83de96a34a2e3dc231d91423cfe48843cb5bf 24f46a6c67bb3ef74a5d8db6c740eb89bb6695842abe6eee0efa47bab292140a 0000000000000490a0e80fd141a3eb821a994682716b5af549cae10f23e72d87 +205700 00000000000001a5c3ee494a09b95de03f01e086e0cdc14f30136c2729b99b16 7a989f7f16e56826673be127481a011ba3c487ec965e47d9bc79b71c7d6fac7d 00000000000004470e9a3bbaaa36b69fa641c7556c9845ca0b1695ac2ecbf2b7 +205800 000000000000016c169477c25421250ec5d32cf9c6d38538b5de970a2355fd89 05b33a8b0c6c050ca225d91fa3641996b00b979b383613a3d553e483afb163a3 00000000000000b9d6e5409e98243e93624d7c1b60373c0cb15bccf6a6ab7cb4 +205900 000000000000036c09cd8dc29c9278cf396c691ca8005d4668e28e2e3f5cc90f f4f23f1aac2d11d0c53a1c0a4ad75b3c02af1b19f8cd3d04877ba4e53c69160b 000000000000034db3ba5ea4a0edabaa73d688ff6520b38a3fcb8cb68922f72c +206000 0000000000000130b815d40fd6d8851438cd21ac9e428615ba03a1285ef1374c 16eed07ee0e896e36fd86ead7960789e668bc0f51e85c5b6eeae589719ba057f 00000000000002dea49a5d979239cefef6bc38777d7faa9542b73df4e6f9ee6c +206100 000000000000021ff136698ac582cfffa8d6f6e0e5a6803f72f64406c3f66c21 6815736ed17e4d9c1e814bc784d86ab72fd68d3983d9f1b681c57b0ce03a137d 00000000000001f3a29994c16a187e40360bf07d5d08dbf534d0a102eab3a7df +206200 000000000000029983f8d6cc527bf82641063f5c289a027a2a3bddcc020fd102 936cbc241caccc67b4d3c01f00bb6715f1aa58c4f8b036c858f33362ae6bc0df 00000000000002bb7b3caeaad557d7090197471589096daf0f8bd5ba33727ab4 +206300 00000000000002deed3c4301ca830842c3334edd3b5f0286a7d48f3ac4ddd46d acc7eee4ed80979e86db8b2405a0cadcabb881c316b1fccd9df15ad5ba1d3ee9 00000000000000e0c6ce77d40053675d09065109163044118209acc46d4b423f +206400 00000000000000391f4445ef4243bc71710fe5a5bb388556a7c984dcb9e3fd79 35464d2b0590863d2b6915fbee678c63a97ee2dd9b3622fdc9ee8266e15dc8a7 000000000000039f4353f23c4fc3671691ac637d63a09a20ed698dcb8907ff0b +206500 00000000000002e26a33982c8b2f24a6632e72c50a012adf0f659dbdd39508fc f360b3c52db652d95d4ffcb0bc1a85568b49a721ac3555fefc86ebab754c08e8 00000000000000cd9ded7dcffa40b1da8d79821bc4dff95b272380e5d1d13d14 +206600 00000000000000dae61e24e97f76c29b859e81a001d113b8a1db39b4c9b40a07 79ff0828dbbfa7f243df2a26b77578c72fe3eff3d1ad00eaffe8015dbac67008 0000000000000316efb68a55ee90c8fec40eff4d19516d7ae66e827ff5de356b +206700 00000000000001fe59517057b262c9d716b8f390e5cbd75adc5404168bd10c39 45ed5a52d29be0d253f7c4bd19087880307a1919bce56c09f51df909d621d38e 00000000000001f3a9965e8df155987d2b93eb086f43daa7a8a9175fb27681b9 +206800 00000000000004f0a960fe1e7ddbdfb81541b636025710a29cdd0992969770a1 2becf4ab59807257e3ee377f40b1a5205bad654cb99d083d334392453d3c2e62 00000000000003dec9f84aeadecfdb02589e58a326d16db6a46fdc178066f957 +206900 0000000000000409564a3c5c0a7453d1f194fcba30ea49c24b957da4e8a9bbb5 b4692c5a1555686d6a313f7ada3c1531aab00d5832691c12e5fd6812ccdd6e75 0000000000000504620bdf6587604e10cbd694538d4771392717b44dccce9293 +207000 00000000000004bdd54a303529953b64a85eee5099acb965f53b577a1ceeca44 4f720988533d20501e378d5296f5fd699892fb3c52df14e6ac2a5706585132a9 0000000000000478e80bae3a9f9ca2d19fe2d2e6d2f129b7fcaa804bdc17529d +207100 00000000000000231b3686ab0a26212666f2e909aa5b34fbf54b0e46a2d374e2 674e6759a58d65a785ef7e4ab04c0e05462cb13b02728fd771b3dfc9d922fa31 00000000000001916e167006fe9e75b64c8b6fb85ea59f2ef256fe67b859d8fd +207200 000000000000044db115faf63b87d5734e2eaa82fb448ebbf14e33ce5a1b9e9b 6d62cfb815ae06b5541c9f531a9a484f0fee05367d176e7deb1a46984fdd9a18 000000000000043add05d7e7629b4f48c85e56cb19143cd1fcdec983419a0f55 +207300 00000000000003493b283ef604db26cfd0138e5ee44c69a66de9754ff2e3eddf 8318bda4a7c5ebce1c7e0df3933e62ed87b5933a59fb0befef121123b254d3d5 00000000000002b32c5ace160cbf3d290e2439a755171e764e6cac50151cb7d5 +207400 0000000000000019362ef5e1518df785650927727771046bf46ec9d29422ddbb 1f968343132f074bfc596abf1255faad8baebae5b210ff85d4206820c08265aa 00000000000004094d9c4e4ae0407068a3bbd3b30f60fdad54c4779d235b99da +207500 00000000000002b77f270113800ff68333e98c3596b89814b83c9b54bb471326 0342f420c2399536ff5e0e25435bb275041516cb1bf2c122614de633d833c269 00000000000001e8e679ee60c8820f51d1d207090bdab060517133ddc29d0395 +207600 000000000000016f9aa1b929007456f8374c5bdd0f891422d770f6236a899d2b e80c9df32668ef92263f9382270f87048d987f746546dcbc1fa1f9ed3e55b624 00000000000004aedad783bb8556b1b4433b11744e4079fa14853fe775920afd +207700 00000000000003ad6f13ad149dd3ec3aef9151e80e9320c9835d9fc5c6d7b32c 44cee47e245d4df7b9293ea790309fced53028a790a09748697370dc41dc013a 00000000000004728cfafb65b737ff3465dc6e9d7a6a21aebc745584b96ec699 +207800 000000000000045827f9f0f5e4a84a565afe23b8b56fee09c6f179db85c29de6 69740573c306cdb2e657149bdff82012b4d6ed76e6b37101e9e3be89ebe55825 00000000000002ad4a814a9b8d23ffdfc91007b902bc7627b93289ce2831055c +207900 0000000000000313b5eb3157b8167941e0317068d8befbb1a5fceb4836f08398 c84655d9fe562fa46cd61bdb8bb0869b1c5b0029ef936a20d54e0c31074d42a5 00000000000000f770af82b983f7d111eeab3b2dac538c668fe47e9ff44b2d6c +208000 000000000000001db5a1515a5f8534c941b1628f60466e6b709b3b320254afff 1ad8c6b9ac7fb5faeb924034d401c4628276c97a255ca81ef3c4abdd24719068 00000000000000b689b3f2bf7d6da132855d5eb8859c440cb09ef591b2c835ff +208100 0000000000000076c56ace5d4c9489c3b709bcebe8b648a4a05c5fc766145300 00880a5a35dde55b05d11d77da27fb480d78e247d94c0e3cf4af711087a9e816 0000000000000219aa34279b0909467750c9ebee98f0f85cc136f4596881761f +208200 00000000000003cf1de105fb5d56114dedeac8ac77e97cd482da16143aa0e71a e26a6ac7ea9f436e793873f3c30c504a7c5491b923f00a84687a9300f69fe2a9 000000000000031c83d1f8de006e55a7223d3fdacc00252dbfeff3be569f4ea4 +208300 0000000000000026a7efda7167aee69759ad950af3a015685802f1d2eb931549 e9597f8e5506ca7e8106918f8b9e16dc04e6233cfb524ba24f24ab7ed084b2ac 00000000000000358ead29667039ec4cd7b26dd10935254d0abd183b6d8a3342 +208400 0000000000000277820bbeb82a19a7f9766a04485543013ab511c6f8011d405b 6f25b7fad82d31c27f8edbbe31b95039d4b65e974d48ae764ce2155d859d2535 00000000000000892502ab7e98512bf9c28195016f3fd7489b5c8f6bc9bcad3b +208500 0000000000000021c5eb9f83bf61f637fa878a957fae58326f8babc00e9d136c 042c7b43faa48f778db6fa9888e5735edf8a9c207c154f9e9f2ec55a2b76211d 00000000000003e402a44d4a7b44d9746ed86cae25fa846171391fcfc70db5fd +208600 00000000000002c9cdcc030c62f1012c98dd39c22f63895f0e2ad7955c54cfae a24af6682073119cc55d5b0ba2b2c061e5ab83cf97461e0099eede0154957889 000000000000001572b3c20fb9756eb370c2838f4b6e2209274beb9adac75c4e +208700 000000000000044ee5e4d652e4a142770216bb0bc4391260741e7fee85d7df8b e1d9758e7762529fe4c18c418dabece09dfc4b346ce749c983e0f7b0e8d0b867 00000000000003229ad3eb7a704559a84b88937539fd4080047cbe018fb2311c +208800 00000000000000a21b6c36f881beaf7054e973f7e7ed258dc804f8b753cce726 fdd22637df016eaef268940cca89184be4468a0171048bcb325ac48ff017607c 0000000000000307999734f251777484c4c2b4ad70bf5a0678d4337e3cb9da94 +208900 00000000000004c15b1973914f5234a3a8d604f95fabc2076623051f3fe948e8 f5845ec35f24c864846008f3e69d3c6e6d99834c781d76f2bc749f66ad6987d9 00000000000002c6e9d1249713b0fe9cc47c381df57f2483a252bb7467fb21f3 +209000 000000000000002a356ffbd715fb0cd8f1003e8024801ac4e25dd41ceed5ba0e 0c77f5def4eaa69d2a987584bd19b533078f8714bc8108c23a3bf98d2efa0dea 0000000000000317154a9a0826357ba7be75cd11d904bf49b6585fc66ea788e4 +209100 000000000000005969c5e904245ebbd3592911e731b1a6d3983e8186f9884715 69d3d55f284079fdd7d4f42c873b9b0081d15e4c91d5accba5a35637195cfbb6 000000000000043c1ffd6fd966a4ab36a702390398050baf2b981e904d346992 +209200 00000000000004cb1a7dd7a915e3ab771e3b959cdec1ecdb4d58a8db83433a06 08f8086a3e9769404d6329b7eb7288dd894c85d61e393880b4399066a31c56b9 00000000000001d9fea8128ce8af20eecf378d4fb878900b9bc42b50940ddd18 +209300 00000000000001a9527731ebc19e26ba529c0421d99fa2744942b21ad3c348e5 0ef58571bb270f2398290c1ace58f9cc5e2b27f3ff05f495b4b2991048b6882c 00000000000004f2fcc6e14a7125f43ad685db833a0bc9efe40f7a8bc48a9284 +209400 00000000000000e64f1d5c3afb2074b3cf6f240adadf4cec9a971d5c67dbcb48 55bc619c5c7b1698075522341a6798057c6ac76c7f5dbd4e61e3999c73b40771 0000000000000008ba78f779cb03d66a71d4cbc7b940d1e589ba5aa0698f6d54 +209500 00000000000000f09437c57b3855345b1f06c3fd0154dc008bf640f937848808 82d75dd941d014df3141755b00f96ad5e900c439ac42910f9a8cefc8c855344c 000000000000014c7214f30f2826e8305268dc1abbe1ff63f2014be46155b177 +209600 00000000000003e29f9ebfd2cbd2714e638f59b9bb453ccc6a478035b32a3e54 206514f04578a15ed329eddfc2fa7c06b5e77740094e6a0932fbcfc87d9e34b2 0000000000000196b5a2353e65bdf0e0081ab2870c13ec7c7cb0658eae0e45be +209700 00000000000003c1950a7cef24ea12e16b5431fdaaab88d1d5906b1b2c81277a 311da5bfedbc60f61cd82845c942e7345c633ed767d76fde665b2a9cbe2239d4 00000000000000722309e2e4494a908f141c6af1fbb21428a59d1fff253f4327 +209800 000000000000042b60a31c9de0026e564bbea6a7f0b39da986cac4a957eba89f c8cc7a58c3e2155bbbaf70d1fe89632068d48fec0d1e5670c16e4e5c9c58382b 00000000000000958660c5fcca6c82b3f177a2a631284c1b91d1b4cfe8290e9c +209900 0000000000000098f8267fc474ad46d96bda14162e39fd8ecf6ec7f841e85739 f13adb9a2521443ca8200f263305622f6da44a8f9342999d65880c8fe80d9625 000000000000046561503ecdfa7a187298db570ef975903174253ebfeefbada1 +210000 000000000000048b95347e83192f69cf0366076336c639f9b7228e9ba171342e 9ba8dff145904cc3c24ae69744d20f8a6c4029086fce1bb527b809a53e571d9d 0000000000000198b7aa4172cdd1e5d80207535da5a2d4acd80242c07729dc21 +210100 00000000000001d0f8407406ec727bd9fc3c7fdc62ecd1f6a3e583639a9d5396 a4a0fc7ce0708c4a4859aba4575c9fd42fcab656406a98b900f156787217b70f 000000000000040d34186cccc1f8a6c5473c8272339b778ac799ccfddb8ab89e +210200 00000000000001a29b9770d22100c4f707a7dc350d3749b7364d078111123d0d b66ac7839fe56558a345598c7457faf459fd6820533d4fddd4fcf0e1d0005128 000000000000002383789cd830d99c6488d1555a19ed8bc9a6ed6f785f44aa2b +210300 0000000000000410d3263e7355f09a892ea7ab049bb1c1cf8625270cb82e51bc 9818c80178754e73d5d5551b282082335bba581490521f4178c9e514b418f9cc 000000000000016458ef124462c387d497442fbb1cd30cde9926f2ced1c33455 +210400 000000000000028a9c53d6d4ddafc83615dad8f9147839ba77877a3b38729fe4 d3f1d0b62553a2f91a92adf11ef4cc289bb7ee4e82696d20c3c2b8b416e292c1 00000000000000f6e0c83371649e385d761d779cf2a9cdd6cfa6aaf299bd81d1 +210500 000000000000031b9f89e53899f312522575871a012a7d94ba8eb2f89628af97 521689cb63cb9caae39403e78f3ce8b7d0523db79ce3d61d5858898e1025c17e 000000000000020c66dc8aefcdc0a0bd52476f80d6f75a38b19ae45e67e524aa +210600 00000000000000d7be2851a24f36f9e4b385af771233e2d20c00e17bf32c88a1 b509d79e212a1420a9efee2c8931e6c2a981decd476d5bf1310a2e87755de2d5 000000000000020708a73585285f0645cc47a5eacf46a5124839222afb649d56 +210700 00000000000004205e72e881863c3dd7dff0ba4f578c25555df12cc1d984c2d5 e38e47d5a34bb9a20445cd9a4bcde399bfe857296bdd86d18aacbbe8b68f58d2 000000000000026cf667d1d68d0e362345b5a92097c208d57c86826fef0778a6 +210800 0000000000000030d456780296d4e42fa6589ff22dbe63c46722ee3c4d951c91 d4c4f154825316e27fd7b4eb3b68cc1192a2b5d8b6f2430ee3791baaffa5bead 000000000000021881b44cb8eeffcf3353b88dda6586a47b2b5bc0ffe03cdd80 +210900 000000000000007e2a961526141f71f39121be8326082a9bef0c38d485594f53 7aec9477357faef0de13867a42a522974648734cdf595164c25848834281249c 000000000000010bc0f9da8d308e95981cba82326ac662a70b37175d825ffd39 +211000 0000000000000345b371caa3f829cacbe2b4d38ecd15a5a02031efae79934d15 f576a404f2446aa75a50d80ead099cb5641dd2a0d4afc51f7c794cb3b389af53 00000000000001c9c0927b4e0ed222789714581d6cced7d32be84af3628f8434 +211100 000000000000001879bc69529c05f4cb4ab1c9ac80edfff5cbec0edfb8796b08 e25e95b8b9978cbf5d6722abff4e13ba4bfef6d56b5254bd023c5bbe1da2eeee 00000000000002fdef51089bceea0553d2e97a22e5d72d3e2acf32fd091e8fc5 +211200 0000000000000172a91a156957f9cf5375e0bb553dd34d83edab7f68a0d269b7 6197787beda68e2fcb51b6ad2cda6d54288c1253b1e5b7273ef2fbf417d2429d 00000000000003d56833b4af2f0e89e05adda37512f6f221d12d1ae5b0c71978 +211300 00000000000003d2833f80a87d11352e95d931fa3238fe3e987e3ffbebdd8120 9e14e92614d9bdc4c0c95e73608c3e01a4bea22dc3fd2907e99da0ce43e7b6f3 00000000000004cc08a7823881d836fd30de8361c9c2b38b341cd378e40dea64 +211400 000000000000032993879e057e35b2664d672002887edaf265cc97e875688724 537c0ecb3d9b8b8053bf16c3042e7b60cf87e217adb61c63a843485171590c64 0000000000000313e4e19d774871346be68ed9ff3d55abe90ac0dd054dcb23c5 +211500 000000000000010ed06870a80a7f3a0bfce85d8dc8b12873e44206f490716646 01013ca53983d88cbbd211492ae181d6b075b71683c13a596a4e0ab717cef0b1 00000000000003f8d58ea0da92de790fa06988b1da9e99cc46ad9185b835d71a +211600 000000000000045c3e34040e8a42b17468347acef23b842dafe10e7f53996ea1 802ced7c7c49a063ffbbfd61884edb92b853f77f8263cf74892a2dc443725b9e 00000000000004c68371de050aeb9dbf5ba58eb4e988138a0e1b028cb8c90e66 +211700 000000000000001dc5755f0c164dfd435470f9c62d75dcc96d0e66822ec54eb2 397f5d72c4b98dcae2d3c85dfc970853b2cd592bda058a32d0820386857532af 00000000000004c15ee694b41e17f926d30d28cce230e0c637a72699e11fb335 +211800 000000000000037c3faa0f2a33863377e7b396cae6d8523702370cd3b8dff835 45876ac2f72ca93e13853a2e327dd2a4e86981085fbdc96a255aa6f4e476e123 000000000000030a2d82a1e18eccd93043de4f4be2c307455fae30635f1ed602 +211900 00000000000000347ba6d0d658d3f653c7c03fc8a7dd3ce2ac226973a6e04051 0ed95c4df96051f20e19ce421143cb49f5d1f2fbf923777508179a5801907f9d 00000000000002077452b71c35b31e574011d66822f98481e17e6d37642c2918 +212000 00000000000003d906e4131c39f7655b72df40146d2967f5d75113a09610de61 df9bbe69e7cfde9f368f0706500acdf411f4136c553a3ad5f458f6987bc6c4b9 00000000000004bd7804653f46d187cbc1dd55b9d3fc4285ab450b7175453a38 +212100 0000000000000223b1fd85a20b88d8d568ee410ddfa9a663a2f47aa96f731813 424db1fbb9968c127829ca47c8dcda1e0a5f193b35d0a8870ab3b3a110a13a8d 00000000000004b0b85617b87d7840c5e4752517c551c329b37fa3ec4bceab43 +212200 00000000000003bbd8383db0b0f1d7ae5bdee03b97c5366affe06261e0e8d1eb 0d7e0df8892548ee43333da79365e603be2c646da4625b28429c4466d59e520a 00000000000004057468965c29db6e636e88edeb1a66f6a619bc6720991c189e +212300 0000000000000304ef2cc30c6f91ecf416cde67b5a1ec91c93d90466bbd39036 ad4517ff824ac2f7922ecd851324fb798f543e0d513b82033c0d60d7e2f339b4 000000000000046216ea34a6a9fd9b1f5931f720bde3cc6dc5b3551c73b6c3f2 +212400 00000000000001b3eaccda1bbae672df4a1cf3d1b2c6c778c87a865ce9bfdacf 9a4167fde584892d3cdf7f4f3b11f2353925546f1ec4c8a72830a2a6b5c4afbc 0000000000000110a1efce52820ef05103598ae8784faade4759f668f36e1436 +212500 00000000000000c309265b65e241d20ff520ad3b8ce26bef59b69f21550f02f9 5a8782b5b0f0a33b131ace601dec3663edad53e4e0194dfaf613f872ec86f741 00000000000003cae37a2b6fa0061c0f4177c4e5c11c19214a58c4b87fff17ff +212600 0000000000000477cd7b57c21142f99b1ae05630cebfdb3aedf48f693223e940 ac59272b573e3ec4e9a7629aa0ba0d771b8fdc3eba60922ce7bedec3a698e9aa 00000000000003c81d2051c6957fae2b8265b6175f203d4372899c90d9345f38 +212700 00000000000002226f938936e50a19d857203d8012537f0257ab29eef25ce74c c2d20ee8d1d5961b4dfe9762f0d4928c48abdb5753e0271c13bf3874715ceb1e 0000000000000192a511c7b640f166d02a2bc009e870b6ff7904e1ff68e171a3 +212800 00000000000001d77fd36f7400573ef548e179b12f60ee12a0b345e0e4950e85 a25c9ecbfed80147b9e6eefb400cc9d4bd400ee215fff626cff3eab4bda67540 000000000000006c9e905c80bb6b8289e18a5a830d55a09a7a2f24e91b448480 +212900 0000000000000123f0039b01edeb7e4d7232450fd0e29a6b5f0407ca43755bb8 08b8ab580acff024d7e1615a3464697f5d2b69089fb325c3b6e037cb739a550b 000000000000022e7cc6ab43a39723229d3774e4019b439a67fb58a1cd7924f0 +213000 0000000000000242076c882281337e58a657471868d12083b1d2621f41d4ee2a 40922d3eb7ddf0d488fc8f5a9160eafd28054555286eb6ea858b703be25d168c 00000000000000a8559b729212f84495559e8764d4262aec4175e23ce673d9e0 +213100 00000000000000a21127bd4394a5192bdc4e60b4b5d418d0aaa69e152dd3f0e9 8231c6242ddcec998c9686de9d1074e981ef276b1fe0af0c9b7de02bdfa9d073 000000000000011286b38240bea46ea5b6ce0dc6c9a2b417a4c05946464e483a +213200 00000000000001866a8d11d50e1da9b800952f65c60e3397471f73639a33a70b dc478c7c4e837350c1c3d588cced09992d6fa3087048e300adbf29da31bc5028 00000000000004f75e395e18e39bcd58608308a4379b16c1a400c6c75f10345b +213300 000000000000035315b397503fea4324e665ad13ac989f7a192ad1ebb7367a9b e0ac3148b5b357a8f37cf115d4a59c1618db0e42d6e68930fb3ce86a205fd698 000000000000040caa4ee721d781bacc763f42201f00a228222512a42b48f787 +213400 000000000000009481aa8da7f2e1d112d16f32549e91eb2bb7370978ca40a353 9756c5525f2e964ee1fb2a6d6dd4c480c62b9f2083e52e3c5e4a1389e27282fb 00000000000001a395703b9cac33a5782f1540ecc0cd3472b9907d16366facf2 +213500 000000000000030cb3fcafea82b0eadb36143f8a69a04bf55ddf348059a7b6ad edbc04ff3ae7b3eec1216395281664cbbc722074dbd05fbd84d2ca58618c3bb8 0000000000000460e24ee0bc6998f339deecb8b08f6da5562f01172ebdc0c7a4 +213600 0000000000000021f462191756831eafb3e209ae73c407431960f40ea6f2045c a40e97d9e0aa460c21688b011c509a5a360eb5cc7cb6767d4ba3a78e761401a0 000000000000002ee2137344320f279e269b469082a0c9bed9acb8bd2c059a03 +213700 000000000000043a869568a99851984d0154c73252649ac9d80d6d279e45c76c e54b16e8ccb4a80cc35b0ba54c31c11d4ed554e8db6eb725d318c797673e4ca5 00000000000000fdc0742c202f82a12bd493a77040f8104478af5369cb30ec9a +213800 000000000000034d7ee4e381b3655876ff54ee6e0ad81915cedfbe5fc1396cd9 2a3ab538d6908982298343ecbd78c2ec099ec7f25c1fe16aed7e14d4edd3cf69 000000000000026467aa9fe68448376f933ac0830060826577338a3b5cb46d3e +213900 0000000000000331baf19f701170a77f732ca1d700c2a6cdbade3d15376ed08b b6326d5b11b3606657d9f8093541eeb40e739e7d762a0d18a1fafa1a26cf8a85 00000000000004639ae126f23965e5a02613898e6c9982a69b1feea259324da3 +214000 00000000000003e6427f9fafa8b0e1af0859f15cea90d911f64445d296a2781a a71f41df959b1ca6b2f209b917c76308628fe19d751dea5a44d33a931e75c069 0000000000000246c4afd6fd3204ee2d81595ef621e3cbb3e36a651904c464b7 +214100 00000000000003c5d40df0642b16df295d704d5cb043b45171ceffcc857641bf e4350a88d1dabc3a3f8f6cf2486e5788e8cc17b68a7edfd01e6ac77ab30e6aba 0000000000000450a06c7bbed6ee1e157e348e9f6f197c357b48e7861ac3d82c +214200 000000000000035688a5e224794c2b14d5435e1c1ad7efcfc9d15990d8878af9 c6b0571c3114538037c9e3a78ab010f86359a6cee8041df88c0abf5f8260bf9a 000000000000029acadfd2c473312ed8f11a6a2739f36180ed244806ebe0fd5a +214300 000000000000025820f057b899eff0adefeea21611280f105b6b27e3ed6aa3d5 b369da8b6c2e3e0fb3697c63624d9ebca672184bd0dd9bb3c26774ec41145ffd 000000000000028f4c0ae4c491cdb7cd005d9d34eacf5a9d831d67bac266706c +214400 0000000000000053abdbc1882176ba88ee29466f6a572a5bbe83192ff675415b d722f0c3ae6db163ab95606e2caf007e9fe7039417537883f9bc93f3813d0cb1 00000000000000e117923fe7eb66cbf627d6ebab588e6d749a11dfc1128657d9 +214500 00000000000003f0217b38879b7a13642180ac97ffe328d220cd3afbbfb79a85 96d77bc69e44b9d8d5184ea82fec7f6432ff8d1e90c41b15a8fa97d7ad2895ef 000000000000044d0432e7f17e1600a94649c6c16011cacd88b05396e916d1b5 +214600 00000000000000f63d8dcfe127dad92d922ef41075cf5de227b5e7e6549dd80b e7d673d7ffdf0ad156ccc2c8c9a0546ed93dd0c926743d3e70e94097397b67ba 00000000000001d8611d462027bbc9285a9193b1261be9ad09ba042d0f6ead31 +214700 000000000000004ab2c3edb75dd20bc60528257140b5d921cc8d33524962f9ba 81ae5d1f4e987fefd1ededf3ef5cb36dd9ae9a221babe96ef468b4e09ea8caba 000000000000004a1350b49f63454815b46f979b5c7692f006d60882495ae50a +214800 00000000000000917df4636746aa18340b590725f75d1950fe1aee45224142e5 7582ca92c76293c1dbc597b557cd9f6569917e812d7d5fc5772ba08374e89dad 0000000000000102499f2c6164c7a4b0be05a1d3c4c8481dc81d5b0e90565080 +214900 00000000000002b5b755142c9fe6b39bc720adb2dc0e50e98d2f9a03a03307ed aa1322747b0db5724bd8996262cf693d38767872ea0c0d379a6f1fa72fb3f4c9 00000000000004bc72629381fc71832278f0e7dfde7985b0d0c9056811a21f53 +215000 000000000000032f64cb76edfb654062e7b94b152bb6458a59b979fabf99012b d29911cf16968333cb47592de2a56e10a40039e54fa1594ac98bdb9d9f9eeec5 000000000000012f5751345a1e7a8c058bfae9fe31a09fe845511fd8caa080eb +215100 0000000000000250265e25d8c8fcb25f56c8f017dcdc8bacbfae148b84ee4efd f223dc250fc4e05c8f6b4130b338113ff881a98cf462382215eb7b41d030514a 0000000000000199bd24a60f393e469830f86f6b62e42f1fa961f0763298b1f2 +215200 00000000000004cffd7f209e0db422a4a4a8273f89da60b8abb8fffe608d65cd d1b9b67f811a30862c587102bdf881b800a4ab55616622a5abebfd57d8155109 00000000000004af02a21df0090a796e3f2dc9f28440a4707de995485ebb7e77 +215300 000000000000045374688ef817a3be0cd5eedf1cd7d2817bc3a43e1500e04e68 69d13bd71f2b5727bf2306394c676f38ab36152441fbecfad2005d3c86007a9e 000000000000007e5d9474411906798be258012afa174587437fbfe7c12fc1e7 +215400 000000000000042f3df12c164a248308bc0e467efd0926b5f559e9e437350ef6 65ab3319b39f169f1001ea86b959d015434e1e7cf6a7484775e00007631b87c1 0000000000000029e3fb0134055d202205b4ca438de5715afcc48186bab28663 +215500 00000000000000d1cc2c7d947aee5211fed67883cd5b3c0dd4b19002417965b7 c3897d20ba6b57e54f2a7f348aee95985585984f0fa5aebbe0480baff876b4af 00000000000001bba29f9d74bd2d339989f1cbc20681a0e0b4764c474ce7b449 +215600 000000000000037f8976e195fd144e6b057b29ded54d8c1d35265b8e05fe1920 3aad3bb58f7909b8211b7218513ce886ff63ec1e6838ebde12579ae2d6fcb984 000000000000018331cce36c9b176ea594a47dd2ffddad6335a2ad9901e7f9d6 +215700 0000000000000513af949306d2cb80ab26364701ccb37d6748bf05a3c2d67553 6242717c13e07e5f6410f4cfdd624de0ee569300ecc65eeb984a896d7f5a30ff 0000000000000268214d3cc924688c104a88f1575a1530e13dd08117d6cf0212 +215800 00000000000000fd047acbf74f9fb7b80e5bc26a321eb91eebb59756419eefe9 6daf704d5ebb28fbc52d9d937bce057957bd03c95ee4af44acac2180028fa52a 000000000000000bff2eef6e9bf5f8459addd7c9ba1898547d46becd6394eb6c +215900 000000000000050c20a3cb6fb58b517ceec4d2cf15c0669ed77c302a967bd769 6341029df6c74b9b85f4c08a3015dce0cf12140047e3e763d3699ac5cdf0df24 00000000000004739e0a366d7d18158dc5e3b0b73a1c8da6ba4b0d8b40dc1dfc +216000 00000000000001f79a2db15d0ec6d951729e044749372caf504679bba5b1e65e d6551acf4d8ac0aeae948a6ab5f981038b8f90be92bcfd23789c2ded3a1ab921 00000000000002b5171738a006b7d9a3157990e13427e29da9a0172e3cfd51aa +216100 000000000000007eb5ed0f6650f5047b1aaba950423d7aee12b3b2ccdd646964 6e9108027d566d41a81fe4d6f5607145afcaedbaaa32ae2a359e61de2e6ba06f 000000000000005c971eac7dd0d642d2db6dd9ee91e71a05bd31fac43746fa16 +216200 0000000000000170e0fbd849e1fad98c314edef9b7d406814f04d69aca37fd91 c6624d424ec90f0e6152aac6fd5db1c03f3c258614202b8301109597a1c9fb73 00000000000004c5d873c73788513f4b7db19b0337d215ffd753053c38f427d6 +216300 00000000000001920773bf7a6de6cbf13913ae6ecae8e8e0570b6558d5b24e04 f093d863c18f9371cbec70125b0df11520d99b9a0c3165e33449d90be6271cb0 00000000000001224f4e828627ac4305d486d968c15a432f0cf20e4e8ea2a37a +216400 000000000000042b636db297ce8f5a7e0c3019f0de6e5f3ea81147902ba98089 a1e6bcb6cc5c39ca3606731d1412184571e0f8c4287191ef3427c69c3f2bd3f9 000000000000002172bd1e3bd9f4ffde6bd4db9c5341cacc641a8e5c59846ea8 +216500 000000000000027a94a2aff1aa30b4cd4ccaddca4e42f9661a5a4ccd84b3f89c 551c68e20add52176704a5b4ac2c792c934a6f245f97fb6673431c24cc99ce35 0000000000000064dc3a78bddfb22e5fc848eb7199508b7cf3261944d3cff942 +216600 00000000000000d4001ba3bc406e534940a012b42e8af2661401d5e0bcb5873d 66aa28456fa8d932dcedbeea7cf58730622c1453114423b4488a4ca7d4605bae 00000000000002d21fbdd330997288356f2bf80052ef6429fa71f0892a03f6b6 +216700 00000000000000757055ef4c81cf8b690b3b4e5e5f7b67871c753f801e3f8330 77eeea6b5d9029e11b1c27c055d5b67f0c11377faafee3ec5ccea33e089cf29b 00000000000002d577c5588a93644e54dc4da21b938056b1e29bcb482de9792d +216800 00000000000000f240fa6f708f70a4260b9840e2734f704a59eb692321d5744e d7e0aff152c34ab940af26848e9381fdd982c46e705c26f4e9cce8132728fa65 000000000000047e011496327da69581ce6e47de0adae9c34ffbbe6e12bf6c1e +216900 000000000000035c671f86dad309595e2e8b4a6ede500761ea142574ddb40ab4 750523028ca751c5d7b96616d1d1a5ebe1967ed7c29e2c49eed279fe9a797d2b 000000000000011cbf7efe67064c5a65d2edb2870eb3ec396d695fde0d6614ed +217000 000000000000036d1e5c410c393017277f8ccb59cb30a9143e818e788ecd2515 176cd9e416e21405fb405d937a3f0238728ead6fe94a0c95a18cbb089eacb775 000000000000036eb963e4cd8d8b0a20d1cfc9dc0c3f625b7e61c23cc219bb89 +217100 00000000000000a3e7114019f1b25985f3052cacb3a856b286e5a48670313bc2 7c8c7f456381886a7b7c6355d7b72d9e6cdfe3b740a0c1b8da82df1f8cfc5fc2 000000000000026833286e8abd16563f293460353dbb3f256f8b97311d0514dd +217200 00000000000003bd639654d6e78a4357b85c887c39c608c7e43abfb129aef6a7 5211b6a27a63ab77c934cac426c86246a4d65b35ec66514f82f3bc0ae0b9c6b3 000000000000006a83a4468813f885be12e6eff191c19c6ea923a9d87275aed1 +217300 00000000000001d7d1fdfb5697ba7cb63c1488db6b7fe4f030dac8754b1d4b3f 697f7d4436cb80abb73183306f4bee0d710d1e9993c6dc50d6cd81cb88adffe3 0000000000000156998b9798ae5aa4289eeb1951738497d70a2b790ad306c114 +217400 00000000000001f2ca13ace8e9684a3e580f249486d8c8b194e79c5eb689e251 11cb462cbcea84cd074751512d33de2a21dd430c6a2a3de2bb66efda7168f0ba 0000000000000249701893fe0873173147d998ededf21fcc83e56af91df8764e +217500 00000000000004f3fe12fefc6b35f2c7280cdeaddc5467d164251ccd7b5e8fce 0d8d0923510d47adc5a8d0e84eb29145fe8786f114afd0d6b9bceb6637c180e4 0000000000000280d02fc9475798e48dc70fb93e7e4ce77337acb0391b5b49d5 +217600 000000000000014fccdc731d868a24486b137c26d609d48da8e245badf8f4a9d 9a65066fbb046e28a4eb2825e893b18ca346abefc093723af5be7c21ea2acaf0 00000000000003fab93f835bd28aecc37643497eb59b1e10ed7f5f1cc7400980 +217700 000000000000047dd2ea91d84f0bd90f6de4beee7e9777d554919d131078ff4c 26a646981ef0fc6636c3ec4535aab4abb89f32a55a1c9d0fe27a2b9ac4c2ba36 000000000000049f17f69b5949f62e6b3dc70f7fee054cceac4b1c300cab5d56 +217800 0000000000000565ed5ca5a2979f7f4e006adb84dbb31b7fb91bd30d5d5f70cc e84e62dd150bc1a5ce4aaa94e313c7179c1a1f8b69174e5429ae8be9f8a9dcbe 000000000000052640dc0e6accd6821de725eb1dcd52f4ac19cbd9312fff8613 +217900 00000000000002c304508d7f00a825f912d457021a34ce1001121fe1c15d178c c512461df913134b4a029f1d692c209354f3f664bae178e91b414c39dcc1b1ec 0000000000000216380de57ebd3386f91a11e522744a82ef73f6e08a2f07fc2c +218000 0000000000000569070e338293af66258adba29dcdd5f33212314dff752ff458 8bf0c81613667bf103bb169018c7dc86ef535dcd6b918c16924dfd0d6f5451cf 0000000000000427e9d7228b14d95965b2424a73fb2d46aee0dd3f064c36cf71 +218100 00000000000004928a032dccc98fe9e893d9e69ce2fc1b7d43b2acfdcb8e18cb 77498c74387c09a8e8a5800f11b320a5e59ed89add9071b22bd4cb44fda460d4 00000000000001ee138497b563cc75040af6028841196942193fcf7b77143432 +218200 000000000000001b7a7a3035d7a8ebf2a5a4ffa956677190418ee7172c2fd491 cd356ce10b4bd666ad63341c93ce1f8c627418231db08f56bc16189404aafa5c 00000000000000072b932996c675b2554cfcbf0f2a1c19d282935923aaad9492 +218300 00000000000001d6b66aa673fa43ba2405f398aa415a2b8b9562d3d4868a1977 31b21079930aeaf2d78b8e03b9d214324a7a3a05dc61e177f47e78ac46fd2a49 000000000000002ec923d417c853fd4fbe2b8cf7647c3cc33902aaf9f05d3201 +218400 0000000000000305c596f0d620393782f4b4b0004f1d4c4df34753e5a81ae38e 47a4c55b78a2fd684782d63a7988266d02d012ecf2698b5adb89c2fe07bc9055 00000000000000ff1c218213f6711b5ad0bb36f3af077f1e5227d2663bb85d8f +218500 000000000000042f01cf41d868539b3b9efa89384e8abfb4e3516cfb11a743e2 d98c146fbc82e56433a194c2eeb4004c86a9103994dc06843e284029e6d87aff 00000000000002b95fb89aff56b62413abaa1c343618e8129bf1905e063c9cfb +218600 00000000000002ca35e1803e84f413394683a0e6ec457e7f76cd4e794ea3de37 9717fcca745e425769116907858666bb22131051da4bfb70b69a7cb85a2a2cd8 000000000000043f3f533ca0f055ae951fefc9a4ceb31690f691eed3f7262ef9 +218700 00000000000000af4b09344842f89a60cb9f423c2532ea32fbfad37eb23cd236 4511c5ff9b11f1e4317973d5b6ee24a97117bd730a12885b7b96e301afe470ed 00000000000003a30177081c5f1f0d9df799e3473762a5a0c572c5bef4777ad1 +218800 00000000000004f1cfd5fed69905a4ccb4d144ccec8715daff5e327685e4e470 a990f9f315ae92d251f7ba34802e5fc7c771079e2add9407359ecfd50680fba0 00000000000002ea81e486a899c869551a0b3b3033631cb0f14e884bc32317f6 +218900 000000000000010bb863a7afbf6ac26916ba4f5e1f559343c6c30410e08f57e7 6833aaf6f6b4c8a1046405e2b5b7b0cbb5ef11b56a1ff971a1957180fdd54785 00000000000001b37d68e014e62cfbbc196df0915acdf0fb1ea7cfc7535cff39 +219000 00000000000004b359c1cb685f9e39223cb76ee91929a1d1311df50d1f939e7f d87fc691657b466e175fbb9cfa134c3c0d67f486a099db2399763cf96a1ca413 0000000000000357463993288acb90f3d1a6d5d3e345c0ac1b6ecf01d8bb053b +219100 00000000000001af145fc663d03d7d369887845426c4757bd2cfb969581a67fa f1c2a0d6ad700b453d911b4852f8fd2d1e98f021ecfdf62ec98b5cb9cdf426ba 0000000000000081791c15624944ad94556ec3330e4497d9a17b7c1e87f0a970 +219200 00000000000005565cb86de281d94c1e3208360a602a5ff4bb26f283cdedf9c0 3232b436e22391543950ce0a757d7b48570e5dc4e0f47c6b61ce99a20d856cc7 000000000000035201331038bdba6aab6e42e39e04a38088ccac160c46857231 +219300 0000000000000061d6337f1ac31595849c6cf976879a1f4b111de5da080263da ba55e00dd0e5e07e91636bfc71cbdab814d305555c5e11917f1e8fe8f7ef4bf0 000000000000040ff8f6f4d8c8cb6a1e5f006d24e5fd2a36ae8ceb3fe0cc01db +219400 0000000000000246cd2f93500e4162d54febe8fc690ba9993efaf577a453c6cb 723cff425b5a5c65e0f0e87f63b49c0f7f74168431993ca900e1bfc8d7194640 000000000000012f293d22d30913618516b808ff2e89340eadfc9228a926b283 +219500 00000000000003656d550bad47d0c623f5994e606985104084e9a84ccbccc5d1 9a6d8aa95dee0de77776cf03609637215e6e3c7d39f51695eb97e4479efc1f0f 00000000000001b4c6097f8ac5da9a21dd5dc911e6a6302a62bd4dc2a3df618d +219600 00000000000002f51e6b09f9d10ff31eddcc1f2872936bbf53e66308da10e645 e24aa2ccd90a3a15834bc717c88a677494e4bff0bcdb2e4663bbeeac7e458698 0000000000000181f0f34e37874913446378ad5106df14caa045259904495aa6 +219700 000000000000011dac5c74d854d65ff1341a916af081ef0ebeaa637d82d715ec d224aa468f5a747da9639815c704ee6c5d3d432ca3939d5952e2742df19b1e2b 000000000000009d080ee47a13584ff11b564ef6c215eca67b293a7623a5a7ab +219800 00000000000001f03f611c9f763e6a5f747c92cf4693e4f8aa05f47f99ed6440 09c93d3f7c97d2c21d77442838ec327b42e86fecafcaa3dcc909a3765efb6ca3 000000000000044121b4e46041e13d728dd6e0959d02dc8cbd6c1bc4ff58e8a6 +219900 0000000000000079d1b1ab07120c3e8129cb54279b6c1a877bb786c275e7f601 c69e01399912874a03fa617610e06ddc756bc52ac24014b440ce581fbfd212dc 000000000000036536a29cd8757ed2ffecb521f5a1c65269d78826f35e3abbdb +220000 000000000000002fdd2c741ed50bc3975a640ca419081711f30f553939641303 be851a8b7df2bb89c092e65b337291f793785668ef2d557f2bd45113f0db48fc 000000000000010d60d852a95461b8204241633a372490b38b33fa6fafa82df5 +220100 000000000000051ba9aabe5bf253bb6c6545381d051d088334317dbbeadd8476 df1e81fd794c380bfc0f2e1152759588c69d20fb3e7b4c21a4a82839488df4e2 00000000000003da08287ed3f338a38517fbe83ed495848d154530c5582ff0d4 +220200 00000000000002b3ce8b1fd19ece53139ca2810392cabde647b1cd67977d9192 239b2e5ab797230d484fb3e5f6f034d66fa5aa80658374ec17feab44a3dce70e 00000000000001cf3cdd280c5435da770b53c5da0bb428b0e1d7a9bf83dd81de +220300 000000000000002b7130c71b1c28b8cf8a7f4d5c64872b642b92031a18ef4c61 56c08ceca830f3114e73b02057f64a25d027cd634f54a9bb675b082fed75c3a6 0000000000000048cb0e6d9591eb889a39574bbeb3129fccea89399ff6821f0f +220400 0000000000000025e7ff937023d2d8ea9cec59d4ebcd1c31da4f73f5326edaa8 c0f1287ed7865f3461de70a6eb93977bff17188c09bbd8e3a037b04a6bef95ae 00000000000001e4846b1b99334e579ec459c8ddabf2639473d70087f2916b53 +220500 00000000000003b5003dd212d419b85565ea68bb4f6b23b937bd47fb4db157b0 29e341337d9f37a9ec6787d4a92807e1aab0faee46390f3157ae7b2fc1144c26 00000000000003d8249562cdd8202c2e180883291e21f8f2532f5abd3a1f7d0b +220600 00000000000000703f0da50ae8a0aa4d6a8587340a243d20e5dadfce096c4c35 8aa2907486e01de5d52483b0045703417d6f73db27e6ded01b1804a7c4862417 000000000000012d07f1e565710954d6a4727839173554993b5f74127a27f8a1 +220700 0000000000000502395988e6f77010de2948e37a430b1042c31dd672e7b7f26f 975545952c54cae94594ea8dce769305411161073bdf1ef4960ec67a271507de 000000000000014243cee7f3b20c3188e3128a2df354414af930a0282d095efa +220800 000000000000045758d1d23895fe064531dcd099a2d7c92c3595cb96773bae0a 199593b0522a43717ce0e8eb553ecaf98e3d3b51b50b7f4b267f962cdcaec146 00000000000003d9886ea84e2b792dee5e30065f39546fbea65c698ed4354e54 +220900 00000000000003bb9a7b7f9a9e5d890996a97d9093bb4a74f5585ed6a304d784 6b3ffcacb798d2e1c49402542f248d3c6d8150da100b0d671399fe76ab0c4c71 00000000000002c3d00f14db74104c1f5787aef50b6b069cb9c67172f17345ab +221000 000000000000034588ba0f8771e2f48b4a3f1451bad40de0e8e04a5b6e5a65ed ef35f31b63839e4b678587637394d4853a15c00148e537915b51c1009d56bd5b 000000000000003c40a20067c74629ee65c306562fce98e09359ca603139faae +221100 00000000000004f7d97b9c4f16c9324f18d120ddf45efa94a2ea1dc80789cc44 8e0c9a650e0a319501af4c0fc0045579e97012c0b14cf36e730ca33dcffcfc7d 0000000000000079602ab023bd91d080fea841067159ad2e61d2296ae52c7a61 +221200 00000000000001ccd86b43bf1941b8cf1eece28bf4f8711627c3d0d3f84f1133 df1e047e4b1514f94f40d781367c5c467c4c21e854269c35446189bffae9b578 000000000000041a247a03237ce06806f51970526672f190ed2dd6493544df51 +221300 000000000000030f1785c3dc5bfcbf505c70207e1e8e736980855676ef36519c fdc4a78cfb3c97249e00dfc903ca50e0a73b9760da7567ffcf77cb10153f3b37 00000000000004b36b7ff0d4f8e38f534b7ce5f5e1b4d53fc9d266bfa6e37022 +221400 0000000000000089e87f51507d57a7cd239f389d8958c38e690bc63e961a8945 c500c5e57c92c62911bdb3a01a4354b16b1822a174202b71fe5ba3e4bdc1981d 000000000000022c050378ec58239f7f2708ad1a26307ae091a0b2a758aa87cd +221500 000000000000012763958fd65f2aa1aabfea6b84c1291afd088df7c64285f3c6 a8a81a4fe32ab07d9058cfda67b0195f1ee91df2b33ad84ca392213ceecd7e40 00000000000002eb09ad8c75017ed9344dfd9bfc462894c82bf8d1454c2a74b9 +221600 00000000000000e2274ed200183b30d1e6eae1f3e7000c6df67a17469d0f251a 56570bb120660e906ad3a66c7dec6d144dc252badd844e2aae1f65f11bbf6d54 000000000000022839921d6dd0ab26924b8f6b67de83dda9a5bf17054ff43d3b +221700 00000000000002c77bf02d2935614101dfae872f979f19f8f48cdd80ce810938 3cd4c8ba5963097cb6fc8767532909833c6af4fecf5f7cde2d070d81b222614f 00000000000001cab6655e135f06fc19cda142bf31ff6b7debbabf5f6ca3f875 +221800 000000000000031150d3d8b70791f766fee7e411f98d6e253053611806c9b4c0 98b53101d634311cf5209208528e4313fb7a2dfb46a0ec5b45e3088722e19a14 00000000000001960077d3151b0d14fec04f63ef4c8df8da2d177ae91c733a10 +221900 0000000000000017fffefbfcc12ef10d1faeaf4b828e95eeafa635381da45466 d77fd6ee18b5613c3853253c76aebaff68adf2843fb5a5e942da7a8587461583 000000000000001a9e39c91bed784b1f7bcb96937e789cfde23d8461b764eefb +222000 00000000000002c752a481ce0c45450ab046e640d38d6532178721e7700d8148 047bc7f76c591bc09d0f0a2685af7259bcb90f63bab961efab2fb837a286e2de 00000000000001e591318e4a6b4fd712e7cfd4e8a87bb65ea1b3c0a3f5a87ee2 +222100 0000000000000240b05f6149dd2593e1e5741bee8422e403ca659ddeb4ceff34 bf84e7edd733e9e7ce42194bdc09e99f357dc01928604c767fe72bf169eed42e 0000000000000362d9e7e351d5dd6bc4f02ca3e1c4540b42755813f85dd85261 +222200 0000000000000314c027f40b94a290dadd174bb6c0b609fcac1a254edaf84965 e4b9239dc8d958628844da95267334c3a760dea412dfd3e87570794a58c2a138 0000000000000174e2de974bfb90a3878c89d119292541f513f2080fbedbba1e +222300 00000000000001df705ffdc92220481e4346fb55b8b240b4b84b931afacdd610 2bdef28b2eb8eee974709bcc4cec1097468689ede9c3306196ce91ba42c657ba 00000000000003fc8ee486362cc65eff5113c07e62ed6da71b8732a879ea1d7d +222400 000000000000028588a30e8266f6a349bfe29b2b8daf2f545e88fbd6be954b8c ab0f16020cae7c296a1b5199c1819fd383492dfba454390e289238027a5d9b38 000000000000048ba0d2fa2720c8aad0a3923575c07c65e187e10e6c1f5c1bbe +222500 000000000000038600012e562426bb8d8c7123f558483d9302039152d8c8fcae f9f34f45b152b5a10707b9c22294b3ef102e2f6763f1eb8e1c03f8b6b1cfd3a2 000000000000049544fe62dc96acd1716228fb6ae376e22c479f1f2c994817a8 +222600 00000000000001f6568bba669f6354c276bbb79059dca01a2125e14df040446f 51222c7b172268163f487aef895dcf09e352d7ca1c1221b94d94d51fb9e8b4b4 00000000000001bd534d2f6b095ff27f5762cc09ce62a3b69b9db8f0597ca81a +222700 000000000000013eac9d6b2b0c181073ce84aa86937c4a736b517a37e36ae146 0b4087374a83bf6f46d6fdf29ab31134ac3c3182a5a10921f96d594aa7104227 0000000000000099b253d5e43f3a36277af619a1c03d828add74d9ddeb008c4c +222800 000000000000018568a451a58a1b548deb7c9c4b7e399cc44891c1632a4bfe67 42f5c0bff2398734a82b535a51e4da6785853a643a106673f012ef3763ee171c 00000000000000073828696e9ce2f4d392b8a0414598810966c9f7c5c54bc3a6 +222900 000000000000021309a98b8827a82277f659ceed6ae57f51b06ecba81585a291 fd592012f867878713d27a9a1c49f2768ad33af9f4d24ca0c3ee083ad84bfe97 0000000000000096bef146eca64576f939c6cffcc251b413157612047eece179 +223000 000000000000012d0917dbac896a60746683db6a3a540856b89a22c64621e18d a8041c5a2a21c7b4c7bdb4bda3cbe7128f6f83faf2061861ea85111bfbe7c1bc 000000000000006d4a08b2305de2b654c4adc38b2d851d7985ab4218d1d62e86 +223100 00000000000003ece3216ebde7f342932534cff6005d9fbbb956bb0ff2a6ec7d 9161a602deeb4a8645d63d9721c73898bc50abbbef87410a0f52a85ed16d0d47 0000000000000212e802f36263a399abfab1aa05123089c82db028332728554b +223200 00000000000001a9ca98d03a4ad35e2042d96710bc613170c1d56c0bd2a945ad ea6cbee361df150c570e15ea7b7c987d1e6ff8c66657339bdb271498ee57f274 00000000000002f535dd48f597a96e38e4ebb1ffbd0a117331a6e516491b4208 +223300 000000000000046566aaa95a7c57f5de88ed5030b16e556684d661cc53e4de74 e1b0bc5876912728ca9ebef3ca8295ccc71c8354d5d3915e297da78a8be261ff 00000000000000ad9e64facf51ca5921027026ec0fb7cd54436fff72ad559fa9 +223400 00000000000000e404d2c55c9c310c0603e4c81750977d80d09a67024e449075 fa5ddb852db30bfd8e8278d8ca6ded351ddef314f33bae9a5c05554d85082625 0000000000000117eede64c77b6e2f4cbbc2b087f7e6974268d91c6520d828a5 +223500 000000000000038e00ee336f7f65c96c33138a672f98d1f761580c9fb802cdb8 904f83aa18f308f1c40c8165f5dcecf1714bbea0acbeb67f68cb537527181bc0 00000000000004952161c79edcc8eddd92609c9e58384d87cd5640c5641c062f +223600 0000000000000066a81399325634312e155dfb7820975e8a35f47af9f822390e 82c23582c1ecfc5e86f2ed14fce1eb740102ede6381fa38368aee27403624c2f 00000000000001f1bcf388471ce8cf448e563262126f7498c5dea9ae67dfc44a +223700 00000000000001891b026f2b4739d09a8b261598c89aaadeeb5f9219526c7590 cf27d57095a4022f2b032787b85fe793ddc624dd999549ba29bbb48e3000b40d 000000000000014f5263b538f885a1d9b0b79beb827d9f6b1b1cbb01044ac744 +223800 00000000000000d4741c636efca544ceaa050f8c954f41705c06f80907578a1b 356b23b3adb88d1d015c06c15efee85ad28a7d3f2e2f58719399e5e708092f58 00000000000001058445acb6d282f56d30d1b2d2dd2a3af26f7e5175c3ef1097 +223900 000000000000032dc1b04f6802f023ca81430f91e612b39894b309639769f765 7340f8d6c874c7e5b282fb145c68029d5229cc8658fd2162e547ac35a9f238e5 00000000000001d13e23b5294fdde5f25255d2d7305be8ca8c2d22d254c0122b +224000 0000000000000107ee276d037218bf1780dbf6d4256bd7e05c66ca133bbc9ac5 1ef4d88f8593ded7e943a60ae4ff4f6325cc3e187f776ee6da0573d0884a9b13 000000000000039882763f89f40690e59c60124f94f3d3cb33f48a6869bac408 +224100 00000000000001ae2609301ff16bf721da21c8f90c3540222ee5da941a2d87c1 6025e84e930a5cb24092e7d83085e717b193d7e95f63208cf5c8bc6d096d027c 000000000000018e3a3eaf10c61809f62b9aee506f8f987a4fd2460cbe93aac0 +224200 000000000000027f8ac4f5b5f7add070ee189d7b905bf5df16d6ae92736521e3 4dee36736cc28b9ed8eed1934c0a04f4ba35c24f31e59fd4252a1fdd5eb61e02 000000000000009cfca55db9f141c5242882fe7cb54077eabf90eac0087ab978 +224300 00000000000001eafa23d0afb6ab3bfc65b169d645c2f782efe774aab9ea1252 c97484be1289b893800f1bb3ec9ae746ad7911342e5e4ae402b712957648515b 000000000000000b34819029bee4557efd485c077248d75d5b0489c04d7e0698 +224400 00000000000002c22f17ff5177b5805888a239680507d3e4d395f0afb06e0838 9066158add85b7df85c3e08867dc25134c6951995dc21a08a15086981e42f9ec 00000000000000da1ebe383e434c3ff367acfed390b14545c8110df065bde963 +224500 0000000000000023a93be8080fdbb7d1e76c711b7f7d1fe809776e27d7114152 be8145613d0a067383097e15cc0b4dd6dfc1838b054edc3f057f8288ba5b3844 00000000000001021bec365366b58fad9e714c692bed3cdcefbe0948cc5c58f1 +224600 000000000000002a86c1043a742bf85c9f82b5c4be8e7604de340a9d0e94f8d1 c3fe93842c31bd8588748a21947cbff59243d9093dc71060d2f412e4f59dda46 0000000000000372a7b89f387ff2a68ee61c9c502a4937c1d9104d1bca591785 +224700 000000000000000e6ef5d0d9615417e806d4e3a9986377fcf4608e616e5be81f 39418cf13fbdd4e27ee8804e30f7dd218aac368067e53c204389fc35e4ec2696 00000000000001479ecd51b3b96faf1273f4ad15d16c8be4ed8152b0d59f3d8d +224800 0000000000000186dfe0572fceec7528605bded25e936e5163d0e647d74ec866 a2222e6d5d8d647a5b6ef2c6f0ef90ab2fdec9a22fe5a9696db46b5b6db91296 0000000000000004fc2c2e9b98f693c16fb6e273efd4879a3029f355b5b08b9a +224900 00000000000001e62bb9a10aadb180ce5ccbac1ad7e393f70d12bf6a7839c999 4ac98ce85057d9b916da4877f9c597f51b95ec78e18058e0043aa5d554773553 00000000000000ac63039190e456b0be6c0bd6d9738b00cd30dccf050c6758f3 +225000 000000000000013d8781110987bf0e9f230e3cc85127d1ee752d5dd014f8a8e1 25ad609e5f988b8e00568346f3fa6a15499d1d3380e359e55bb1cebdd55b8566 0000000000000265e4c2627216c992b01c89da085043a16426ccc28a32119a2d +225100 00000000000001a30afae8ebc3748643bc26d9aab554006819d3bd8a52578df3 0099d4e13c013d2bbbf6e61d09f6acf383b9fd48d3641d34e7049a5d515a7232 00000000000000c099e6e66c3127a066647fe6ad130362d793b1b4514c649411 +225200 0000000000000099a8fec3601d399193da46ccbadcc7953198d14ade5b35c302 c0803fa4ef7c867edf6800948bfa0517e16dd9341a3237f04a24f18e41b59792 00000000000003bae54b6ef5cfed2773bf85e18f9c252e79b4d1089d1c188c72 +225300 000000000000019f4939c05a6dddca79d14e3c484c4a7f1641876f40c3fde33d dbb5da5c3bd160eb0b4feff62b35db7a0e1bb99fa3ec958958eb7ba61ff792ec 000000000000025c074a7f62fe865d2692bf3a6a720dd44ae934c9fa4351cafe +225400 00000000000000ef28d826e3a7c7bed3420a6a289d7eac0fbef86640051088f5 020bdc72a38a7e588f901b5183cbc3961369b63ae33137fc9a7ff0d4ef530e06 00000000000000a065146dd5934d8b6ad809b51f32582b43cc02b69262d6c800 +225500 0000000000000228b59b1e7fbc2338d4d8843acecf67a20363f1ec4ceb4bfb6b 22ab9ef5e7e974a343e0fd020d81eb6cb2db965f2eb987cfeb827ac73a1f55d1 00000000000001dd55df4b7b4b03985a73c625c61837e29fad0d65d31e84b529 +225600 0000000000000216ed4f9a2210016ae3c67dbf280a746b2ae85eaa9aa8881db7 f7e19426aa68b3171957947e807cd26af2fc161318936a3417733f544b9c7338 0000000000000172b0ed6fda84a03b2ff59e2526691225ee3a532384ce352472 +225700 000000000000021e9e7083d944aa802ae35e9fbb0fa083a93094d1feeeed6cb2 71d57c582a0700a1af4a28f31cc9f5365a9c46fd73b45b3a6738d78ade5c42ce 0000000000000395ed941e0ddea6ac1ec40e49211d1bc75fa24a9b148cc2bb2e +225800 000000000000007cdedf81117d6c7d4f0b0beb4bc04529f497de4907e7da0c18 9aec8e3d050ccf1048d34f65f1dddac3452511a2b36669bfe59b1527ff5c2436 00000000000001b0b7ab11c0ca90a8bf34c8d75a81c8bc4c57fa4b7539743d83 +225900 00000000000001ac4ef570fa6c2a2d0a82729ea95da4cb31b7158be9c172451d 73c8afafda23740df0ded61f2a8a27adabb14b7ec02ba3b0507db98b5fff04a5 00000000000002d750eb1ef761c8d6d5b89d02f0f896b058822efb20860c5aba +226000 000000000000012c614cf477c3b155d339f29d565c0258f9846c2f4dd402ff9b d62c12660c5d188d1a5c0cfbbeea5596530c72a0cc1657f20cd90bc79f7e45e2 0000000000000083785252ea71c4d69ab32aa45334721fb116bdec493fd72687 +226100 00000000000001fd693c10ea02882afbfbb5f050e5260406b81930968fe1481f 864955df0e625e22352fac410eede22ce3db47044aa6275fc71755df86516ac6 0000000000000320b7cef17d9d7bde0a29785ca035e76fa218f3e0e12e9e14db +226200 0000000000000287cc64c4469de825b17e7c8d90e3ecb942edebbd74a726f7d7 68be1250968d98b36c775e050ad2caa4402d752fedeb0834dd56f1b484da0ffa 00000000000002b414435f9489578e54d089a9aa9a805d97d36d763d2d68720d +226300 000000000000024e408ddc2c8990896f011708c933c23c33be0d3ef220780b19 ce0dcf435e49d045203ab9bead5fd7011592e18429bea21d9c735ca03e74d1a4 00000000000003341850f65d6dd4d88efb7b02c351b82b14c47aac2017234df3 +226400 00000000000001223ec6bcd7680600d8596caaae53eaf0578570a9fdb061db8f e9ab3388d20641e99b88e70504755c09c16ad04255cbe5c0c2e503e300748232 000000000000020bb32a9efffbb7adceacb469156ad40c01cc9226b9a2d74a58 +226500 0000000000000211d5083bc98c19c72be1b93632f60fe6ce04ca4ea43d3cf1e7 f85ab3d3737948fc18cd5ca3f23ab0a928e2fb14362dc0ef8a79d252c3d43f56 0000000000000083b69d4f6335bb0064382b8254c948edbf3bfba8e7235931d1 +226600 000000000000031c94b9119c94eeffe1ac8013beb8c3b319843e134c57cf851a 1efb53203260fe287a3b4b8d676e5392ad8d091e3a54f6d5a0a9bae4d0ed1f60 00000000000001197def6983a14c6eb9266c178037ba912a91d5732c69b1d21c +226700 00000000000001a05cbd8b3bdce822c0b611fb5a1984b370f3e9c7e5147dcd3e 2ccb2de098549717a14386cb73bcc29b11b887c1abf0af3515ebadd685fe8078 00000000000001bd2cd4a32e9245bbddd8a9cc147a9ac54c34b38a70594cc168 +226800 000000000000020becd3c9272f0c51c8641ee0b5d54375f3d6ee886ab49ea6d3 90b30242df0064d12ebe23a5a10aca96f461a3b4ad7f3e0d8007bb6bdcb01a73 000000000000006a896c2a9b3df60435556e584dd135a650119e6ed6902c855a +226900 0000000000000305cecc12f40ecd08f92483f5831e3bf38529ceeb2eada62c18 ad5e1503fbb5a13560c00ae9974d8e400de8824f209ee29bd4a8a9af868ea096 00000000000000abac46035d88bdebb3e3b8ed3e942ca150c2fa374ed34c8750 +227000 0000000000000303d872c9bffdf46429c40b41522a9b7c7de21dd192fefefd98 329b2aa2e25b598c6f4781914fc9d4002caa18310ac6e9b0a0e5f6bcae03fdc1 00000000000001f0313e43738fc5ed509086b0f8f92a6cb5ccd5f6931aa5c71a +227100 00000000000002797ed662d93172e599dd7b9248797e15024926fe85690076b6 27ad88e2102a17083522911976d3f88e71ff290e9afe93d1b7773d42de834b34 0000000000000011e3bea6c80dcc9191ecfd66b06a7dd3da8931503095d95707 +227200 00000000000001b239b2b842812b93d6421cbc2eb855cb4bf2e7cd9ebe000329 d7f2b7636e2ae3510a895a2914907cf312aa457bd682179ab1b06c58aa1f3d92 00000000000003363dd9114ec2e204f4c6cee20ade38f137594f91e5c1356ed3 +227300 000000000000011ddcc1d56bcb490ec4eeb9fc4392898e98464b52f38687e05a dc33bf968047a640831389de5372c011c858a528f3e44a964ee6654408205034 00000000000000fb2bb96c5b8888185400e1d5151f9f4e0bd2315ec4d2563098 +227400 00000000000000ebb2db29171fa803ea82c37efeba92c19547d7a48399d25c49 ce8b7fe5ad76429cd7967c5999bde0a6018f512478e2367eb28498cf30b2a193 00000000000000b7ba51dc00e34ae0e5c583943754d600b63c9fcd873614c64c +227500 00000000000000db0f88a28a20ee6b0b383090dba28e9c0198a433b1d2844192 155898861f9ebb84ab4325d2db18e9a03681cb9192d1592cb218dbecaf7cbd56 00000000000000c31217a86fd154c778eeb7eba54fcbb0840d09fe16ae20bb90 +227600 00000000000000b60d063ccdb62065352e07a9877b5b2d0b455814a668f15b4f f10dd9a9c56c19d428438eb9560e7d36f1f1e484b186cfd2caa297bcd366eb6f 00000000000002ec75f2048d8bb7400db17c6ba9ab3c5ba9b7594a94f7e3bd68 +227700 00000000000001f2827208b0b419d2c6d85581f3945502e58adf0298d7822f65 50e69cc317af07fe5bf8d30f40c91f91948d7649320e293bb36be6ebf49235f2 0000000000000178a45d25b7370be57ecd110c9280e3bbe4be4e8d4e51d9da3f +227800 00000000000001f43e19ff1cea8d8e9d6f652808dda7b8e95a6dee5f3a2357f2 e878aabb1d752367bd3677d52ea19ba8514218da2af7b0697e36dbe06baa14a9 0000000000000030ca67670fa8d7057be631fdb7aeb983a8a2fdad5b5db3eb8b +227900 00000000000001762972aba5ab63d18671830c49b11a1bfe036dddd2232988bf 474978b2740c2182c914da84e050176022d1f77dab92a8313a80edbad5f1f613 000000000000004429fb9ff515544eb6c8fd11badeb605b8262b3d7e52bef140 +228000 00000000000000efc4311c93fafbccedb6fdc682b566cba9519f1736b9788a67 b3f675d88fccc37d9f7b82a2eec5ba0f3507a2f5f13b07c9974e78bbcfc20475 00000000000000e62201a56eba803dc5510affd2cf7cbb35d8ea90a513ec5eaa +228100 000000000000027a503a6cf36ab841612e7834c19868ef73227cd5d58c05a761 c5b827111cac22f70fbc49984699888592da913876744f85ff039df0a740bc3b 000000000000001f5d31a74c56a5c1dfabe3a7ddc36eca233f5a347f666e2903 +228200 000000000000008f0a6a7ef10e3725696c9594032692598db31e780dfa037034 903043370858b5fe55abb0e11dd58c8e63bde853135f06285f4bbd3a9f84330e 000000000000001db84a246e19e5ded8fb706d3ee2fe05e9730f61aa25360157 +228300 000000000000005b8ad88bb95a16063b5cc84f99eb57efad4e393d9c359fa1d2 585407ef52f27d9105b42efe439b2829f11befdff635cc3744732338dd3a76c0 000000000000020a576babaae4bf243d0ce978044bdd37abfa389f72fe3e1825 +228400 00000000000001752a33342cb23c6b79088488b6a7ecd0cef3d741c0c73acf66 78a842ada1f994c66e96b7021f2818d667246517b85f302358dbef1cbfceef2f 00000000000001c566fb3065889dc1c4f43f070e13841db09258fd7142b843b0 +228500 00000000000001995aa6d383393fa0bc21da183df4f9f16c5642800fe6413bd5 621c979e8e149b608b0af20e24a7b931bf98d202dac90d4fd0ff236303c72ca3 0000000000000001c05b806a9821a97d6749780ec51e07fb3eef02c0a33eb4b8 +228600 00000000000000588f9bf9141e540086c992a511440eccb4681e2d5253ac14b9 c7d1e50e3ff34682ba89c1d78fc7e8b0972908412b68036b0d6e67b81f10674f 0000000000000076024cf20984ca6eeb84fd3a6a4abc73bac5d3a95ad3dc86ec +228700 000000000000006219e615504de2bc02860b0b70889c47c1b9d4f3d7cffe082c 7dcfb8007ca1dce2882d8183aa998b5d795e0c7e7d8eb4e0d08c9170e25da03f 000000000000023bdf6321dddca9989a5f11ff568818ceb45159f2f39bc4e464 +228800 00000000000000771f79f24597eb36b5850f26ed69f05ec87302c8629fa53a56 9425a21417d6fecd55fbf56b2a6b19ef0eeb40ac300130b9d9eba02dc9fa162f 000000000000027a3154de81598cfc628237649da64f9422ef28fa7f9f4e9804 +228900 00000000000001ad393f504eaebacd8093c738453266fddc8e676c66cf2b8434 327fa6f259d6faea611240f77c30245552455d3df3a46ed8c429c3517b7b08d6 000000000000025a1540ce3156502100dac6c62299691963fa6bf940b8a871d5 +229000 0000000000000246d7f05f608a407caf6c6d99681a4f3da8388d5bf799448d50 4df1cdcb7b3cde2bc8d2edc84a47431c4e1d7f6fd1d27a76661ff89fdec8bbab 00000000000001d988829e54b45f4543f5b0d23658d50ed1226880495fa761f9 +229100 000000000000026832b00d0dc08ea8f42aa5218245edb8df6aada3a5bdf7a98a c9a3955754f64c43d46f2f7b9c62cacb2527762c93498172497d617eec0f6525 0000000000000198f34c88f29c6907b2bc4edb963e4589c9565b91d1fdcfe6d3 +229200 000000000000027cbdc46bef8850baea301a521b0723a068ec19db803a4e1af7 88dbd80b90b19a61af7ce5ea84d2e2350cecc287ba3374956c538afd0d9cd686 000000000000018d30179d9f757a21131a65fbdfb7b0dc7dc3a9f8325d8d8f25 +229300 000000000000026358fafa7a4cc70b650562880c9f2d69edf3edbf4102eb9077 1f75f8d815ebff8c3ebd3dcf8cf3141cea87ae2a73b63f327c56d1b3c46c8547 00000000000001484535e5678665b1ffffb72e6980f0a910057c73d0952cf251 +229400 000000000000020c8bb512207806aab6ac65e56e240dcb5185b37fb54e16309b 576160507ddcc2b77ea9ecc7def8d834460b702c743e094c3a76b9736f72aca4 000000000000002784a2e45bff193a9096a7eab1ebc194cae4b73b6b657494a6 +229500 000000000000007d04c916a2cb80e5e6602de90f9f94b20a2dd14fdb5b0daafe 13e5106baadf25194f6894e24fabe799c22839485772f401582b6dc753747381 00000000000000f6d633030057d4302722c8a98c16671e03636142e41f905c48 +229600 00000000000000bbf228fcb546cde14d40e8a284b82395d597d17d04ee0f0492 da64c3593dea4ff14261f48fddf1b915d79c7c6ac835be07a535a66c060a3b40 00000000000000a990d630852a1e09df2accea6761afbf25013143a938d115df +229700 00000000000001dee53bf52418b1221e4dca90da453daace1b6a78ea2ae22604 0dc4bc4ffac9d2c02778ac0c396e86d69464e5b8b480c08c49b4c226ef450258 00000000000000b2ceb1151908739242cf3eb2f23f8acf605f2b7d3760bcd7e1 +229800 000000000000024c361230d3329dfed07c3e2f24c55dc77a86949969c4d9b31d c4120d030081fc3c20101203b05b0534324a4a74656366997278b2f43a595f6d 0000000000000224615e7dc4006fcc1baec60b7cc3fa102332575ef53d2b8be0 +229900 00000000000001434c1b8caa78e0a36ccb8fef0436b9882a38d65b2bb25589d6 391415d4682ee4096df61422132bd7a53fff6238315a9913a9c609a3f0929cf4 00000000000000f639b3e28a3f675fd2473d92cb2ea24368d8af5d2e23d25f34 +230000 000000000000012cfb19f5662707816e122ad60dd9b1cd646c6c9899be2c9667 219640630ce967fd03ac560c4f1d36e64079e547733712c5e226df627b13cec2 0000000000000200641676d2831f4ce9f0f900d0a60d72df7b78d09dbe91e777 +230100 000000000000005532cb7de8eecb862f4aebc3cad1e4338ab51edb3286e77e41 5b16ca3c58ba3b7c453a335da8ce2d7fef9eea92bc21d1de012245b8692bce1c 000000000000018a739e131d6a38cd08060b9b21fe344508d391c77c713ea81b +230200 000000000000000e65e95381350dae59d5164a6cb726cb9edf108b5beba27c88 e28829de385d6f57db4f81809f2a26ab806cd348a572fb9fc45aa6fe655ee3ab 00000000000001ae996409eb686372c8d390887069b93e854fe5605de430cc4b +230300 00000000000001d032767dd18ff5f8ef099b96c30b901baecf75035c7137e381 f60f5ea80910d9aa6acbf5ed8cb188df610986ab6059cc02b01a9b4e798ad348 00000000000000f70703ff8220b8957ed2ffb421fe49fbac68e4927fac0711f0 +230400 00000000000001ade328085f4bb54206781e170cb7d7f56ce24d1175d81a1c92 09a26b486fdee33bb30cebe5c33ae4f2e26d62c3a3ddca66c21873ef1b52d0a2 000000000000013ce852cc95753d430521a239f0d1054d6b2f0c3e9e8558b4fa +230500 000000000000021f230e3042f2eebcd37cc1d8e866462de3dddb4575851f6dcf 573fc77c8a8cf0597479f203a4f33e63970e9754be6509574db6e3a6842874da 00000000000000612d34991f1e9974d6005dcf815bc7fd5147c5a9ae2d31ebfe +230600 00000000000001f1449928eee5897360d3978e9e41e75289467e907bb04e81c4 94ed195438c9c8c84f37bb36fbca77bb0b3075c5dd4f335810d58c202c36556f 0000000000000178c82ca5a2582c1b794df48ed49fc1a3e578dafa1a1f902efb +230700 0000000000000100b0db587d03f344b0f480e534d6244a40051082972370c03f 4a44b89bb443ad779e19343f26fde876c15fa052462db4c22acb8d92b3a16ee0 00000000000000ef82578761f0e5aa4f02e4f90bbbb9e350820a038a091bbf74 +230800 00000000000000662f73798a62196f8943abdf97350dfec4e8ef0531d3d9860d 283604f2db0c2d83dfd2dd66568972cbeb2d533ab42f48ababc173709f22cb23 000000000000001bdbc7f22fc970a194331dade164cbf6b2b544c9caad327326 +230900 00000000000000b26a8996f285784b5667c17ef515ae4043ab1d169c61da369f 51b0710f4ae7337734fb04ac1b6896d97ecde4bf3d21d3e98f3344be7f9d7ab7 0000000000000178d0bf07be7c647df61990be3f78639a50b1664b1eb77162d5 +231000 00000000000000649995b9008d249e39da05135109ad938abcc01ac7383a2815 d200373dfbe15c6dc99835bcccef62eba51f3f4f4c6ac988146a474289127bec 0000000000000005c0dc87c4b9e78cac92273c5bad5bab1e81de3b5606de0367 +231100 00000000000000c1957ab81c0e12656e51bd0d95e9ca4f53993a40b218a94b0a 2839a46f8405e4cc423f94beb52c2fe18aa95560e1260e0f4f87f248c6656849 000000000000015e4befc2e742623c0d310fdbedb86095ed0feecce11da2d36d +231200 00000000000001fd9b88ed7c0f4a88303151c5a6a01f8494de95c3299555e842 8bd7f8bea5b183ff47d3def87001351d8147aa1ea4bfeaa379e8d01cd1d598c1 00000000000001242e383d0dd97dff07224af3bed913259ce6c90e6ce848ef47 +231300 0000000000000179c0cc546fd466b4686809434180ee25ceb9aa76735060e7e2 3d9a6f2bb64ebff20b7af1c97ac865560b4ae0fd2bd6001f7ce228e9f2bcab2b 00000000000000f7de439d799edc41bab5f9e788ea8c3e10fcd606f1da10f226 +231400 000000000000017cb38ee4dd9f2c944ec28ad9fa9a5a5d1fa07bb248482801ef 49825b0a7a703ca6a8451e7f0546e5ba525ca2b74cb72001fd3eced163efe1ea 000000000000012f1ef8d12f69465f70ab21fa7c258e73dee7ab4fe7d745fb30 +231500 00000000000000c740c60db1db2a3a1543c1b3d359040fcf78c693bfca9c29a0 5573a1a37bf19791b2942d40ea24a0fa4ccecf8924ae15c3f2f44d41783fbe72 00000000000001732f0b4cd93576ff26c3bb9b8bd0f189b5378d186c190131ad +231600 00000000000000a23a6caf305f01fbff722279d8c28f082c658c51e8c7e51cd4 bbd7445e57354364a968aa8fb603c64b645acf245d6d5a15c9e5e84cd13ee4b6 00000000000000ba71dd2b3c3f62e14fbb1c9cc8aef4b7ff95023d0ef8d0c23d +231700 00000000000000a9de5c7148ca7d836f086323e3725c5d7b869490a483d8439f 4495244b30755424798a2fd4176cd948602c82c0cb58ae4b12e635cd5b29f230 00000000000001f07f624299732eec4148ede8c6922777ae0bc6f5550deee9a0 +231800 00000000000000412ff793f318ae8a8ea80c3f4f3c516b29eb9b40142a28ef7e 1b6e32c063fa7e59195b6a24d2fdfd73e4a4928778625e88f2447f07feb3cf42 00000000000000d9148d049fe95c6148b29e192b4f7adc5572d37cdbcc9dc264 +231900 00000000000000e64f9641edc3a42cd846f0ce7707441b1b9ba0595f05003032 f8ac8bdca5306eb3574d87c3f6200b28160d9c7eb4d095e93724899560423593 00000000000000a15a89147afcdef4d70a411e00d8affc641cfbd31f35d9e6a5 +232000 000000000000018f47636e1c3a946db77624880ae484ffb0233f5aac6316b3bb eceaf5d829c88e13f7a4c2d2dc64fe42e7b7f2d2766b89ca9d53c2fb264afada 000000000000017bf6d8208debd93d57c0bc951c0f032741fc1733bca49bb0c2 +232100 0000000000000088c1080274408cbf171852bca0bb0cfefc526f82f28b209b25 cdf694bb77a5639f6728e53a3833289cceea8314115e674a59ec694844599dc0 00000000000000e7113c7cd16234c52bb4fb46acf012391b673df04ac8926f38 +232200 000000000000005e717a7db480e004001300a5183dcb380ecea1f6a7fc89233c 01c853bcccb6de0606c8a105aa058cdc10cb6ce6a606318d6284ccf44678bea8 00000000000001dcc80e63a5875f6980c10d21cab8df88c7d3cdbc1f03a5d97f +232300 000000000000018162e1e79a7afead697f7971414c3abd1416b77212923811a5 e2a704161b988875fc23014c8b8b324661c71bfe3d63c0fadd9a4516a7a5608c 000000000000003f9afe355f4191dab5d7a60bccaae38114c8b60be33a84dee8 +232400 000000000000011f43e34af3f2f9d0bf296e1bb9c7dfc2282a28ebc000dd538f 14b4706cf1301c4e67a04f7672599ca576131bee03123113a269c7aa701ec12d 0000000000000142de32c60d56198b0b0c5458d2935acc99bf124eea36cc4af7 +232500 000000000000007a52db9895fec5d18715a4010c8aaf96c3e4e1b1736a1ce07a 8a06911fd6ff08307b859f3a0257b613d7cefe30ac7fe8e84810beb61e9a6747 0000000000000016739848d28ede348939e06a83d923ee87c5f73ce3c9cfa4d0 +232600 00000000000000fcc04308795aba33462feb7fa7801a3247a7edc9796cc5a502 7346251a8dbc6fbed78d69b1f926c4c8bf0727dd895a8bc9dd5d5bed6d69f482 000000000000002cb0ea5e9031c82efac151b994dc73882fbeaf92565ee7d5c2 +232700 000000000000003d7bfff6c17ee609a602f9320552099ceeca538220840b84c0 f2e14335aa145a811c7c76a0da308b6cb77f61496b2b081543249b8d6209d0cc 000000000000008ee3a722b58624087933e84535ffdb94bff996ba82c2256e28 +232800 0000000000000011918f8eff29807090005c3f69fb546c7db13bed43a745ca74 4debb0c0151d0d13ea0f1cb37de89f67549a68a22c1e4d0d5ed8c8e045ea63b3 000000000000018e1c7579841a285337de1970b1f084ba7b3cc997d6170c9831 +232900 00000000000000bef95f02c338748145b2ea6609a02845a74a8799d54b844a40 48ef7d21007b8be082ba066c9a49fc571b9b18ab20d27313788ba06443ce5961 00000000000000432849603103a4f62f2594145a4a78b1f2bab097096ce08853 +233000 0000000000000110df141cfd908d5652c32a417c27187169aa1567b383ae0575 54d690e04090ea5cbb7748b54f3b271e0ba0c201ed4d9d9bcf994faef14beeda 000000000000010327ee36c57b0dd16122c6f1c1ba90282c7e2cc8968126a434 +233100 00000000000000ac210931c9fb58864ebb9482521ced1087eafb0bcd58af362d 2869d55e0ee3633a6de6e9823a2a1114afb9797208b421c8951586108a536736 00000000000000cb401729f88f8cb91a9c5fa0311a52e4e1993601825123c1c2 +233200 0000000000000106ea348ecffa5e2afeae32ae04cba87a0f4d321bcad4448f1c 1156dcd6e1504a9aa91cc918df07607016badbce0dab1f2896779d17895364cd 000000000000003ab7c97fa5f7391102979ca5791bfdea664b53c31da5f84c1c +233300 000000000000009937fb932fd95b0116184868b80e6ff251fc0a14804294e5aa 1b4548416641837b7005d8155f03d2dca1b7c0b5b266af9b5a6f169a4854d25b 000000000000000ab566fd6efcecffcbd9a833d495979233df2fa0b921249224 +233400 00000000000001b724886230d269e377921a48c1e6c4a8bbaddc49e519d88ea2 5eb27e29d1befaad8e8026dd2965f9b16345b51e1ba97e4a94305e6ecf92e5b4 00000000000001a6784af783bdc5ff780cd4434b1ec28024c04ccd86ae9f7a15 +233500 00000000000000cc8fc800f2f037785f31b48a88ee66528eaedfa6f5f6430850 f702b9f24a7acb1ac9dfd5e6974953cd3b1b33b155383784dbf823010c395a0a 00000000000000051fd28b1e00523ed72c6c35ea754e30a75774c4e44997bfa6 +233600 00000000000000b35f8d18bde8c2f6a1477ad4f5e9e441dff24c856e12cac2e2 d9e1df7699ce5b9503b98ba0136fe1ea7b9bd852bc4887f412393fdf6663bfff 00000000000000b134530f0a1ce277555a22b436771b970d7f51f9dbe0155380 +233700 000000000000019bb231125fb48d4b314e58e2caf83694f58fa9e1083a22a657 1909b1250792aebff30e755089ca0094384a6181f7091ebd940025960056f914 000000000000014a4f4230dc4cb42a6b5e1b4cd0a4e0e88c9bacb224e6b459f7 +233800 0000000000000043946e0e25e87b7a7a8c08ea6c2099f67419cb77d3bcb63c18 c73c9a8c65b4a5d0f355968ec3ed32eb488563ccfacd331f8d3df216c7520e0a 000000000000014858c01f6a4b236a52c3876d6613d3fee6f99a0f4388cad527 +233900 000000000000012746923247961c78ca5fbf2955a3c00fbb6a7f228041ddda79 a9894ce551754fcd1fe1a919dcc649acb5948a73d09afea89b3eb21a1e6f7ac8 0000000000000116800f232668368267eba4ca25f45dffff1a5a8452df1e5ae0 +234000 00000000000000597f9263ea97bed4d3b10fbd55733a73bd1027f1a9b6c1451a aba08f70bc0a710157028a6bde58937c7d29978a93459836fd875705de6f7413 000000000000001fc3ed9921095a06a7bc3ed2db0400341a6ff7a12ec4f08912 +234100 00000000000001a5413f79c2c17f384cb774af450d9b257bfd33bda1ab896ac3 d40ff0c13cd9b737941661783666288bbcf2a9fda4570717b3ee1915699dbc50 0000000000000195c2eada6f9f60cc3c45e405b32a08c435eb602333c66d9695 +234200 000000000000005d50fadcc6c6af6400edd0e8a34da62d4572781a67e76d46f6 e566fc01958d3ef6f68b023ea1582709fe6aa1769755e4f9d0016e6215d9fb13 0000000000000153f58616d839cfba2208591a6ad1af750e1160e564d83821ab +234300 000000000000010ae4f8e3f9d2fd9803f067e4d8c2416cddeafa894c1714cc68 05a6225565c71be9bf5cd557c6cbe286270c8b5f472c59bb66c9d1caf99c6356 000000000000017bc23a8ec2ac3247e3d0c6f88e2c7639ed23fb83549c35e5eb +234400 00000000000001640a590fadfad33111bd91fcd6407e83ff8540c194af38c126 e0f88c07fe21b407c6cf39c491a7dff9ffb048179837d921cf6e0b9924882e87 0000000000000197803e1b1ffd7d37f85cd9507181afb0ff24b66db8cbb7ab10 +234500 000000000000002f2d37f8aa95015f24071d6d5759d824cb30856615c8dd2004 1cb89ee2869088bfcd5c34781db770bb0975b45f84a08c092b39d05aa742c320 000000000000005315c97ed783320890d886968843fa231d0bf13e486601c0a2 +234600 000000000000001ae94c5c250f0db0b972e2ba12eb5378485d0412bf12e2a031 48b4b642af41ba052fceb62077560764dd6b7270dfb86e358c4892d12376e445 00000000000001405c1c7110910d5dee697b6411976d80317e9fc2cba6028c8e +234700 00000000000000f10e9f9dc68a7d620400073025d77abfb757b9b71740415807 97ff71ad652640c4fe15d29d53b14b64a70cd2088428538e6d12105034a7c567 00000000000000a67a2dc6098981fe1080cbf2a0169eaf75df589a818fd1f7ed +234800 000000000000016d7a6573f7db813ee598955b0ef1f07dfb35feae29b7881831 c09e8aac50ee62e36dbef06d03311513a0b9e3e4a346ac3532cdbd68fa3e9b0c 000000000000006846f4da76577e94be38aac00ea2bca80f26cef09c6c25abd0 +234900 000000000000006d492d2849cdf536a77a70e2022a8c53f6595883c7e279bc67 31032eceb3c9e18f1b5ee07e0470a2a74238e2cf9425882be468b3549e7f1416 00000000000000ef2c3227627cd13b9d58ecc2abf727f9437ed330c809af2386 +235000 0000000000000051324ab4bdc1899c671cd340681ea814b2d4b6e141efec52b0 1d21c44a53c6d639a8afb5465e294264715858b05f9bc9705172182af554db97 000000000000017bc7d0f6140d75d6ccf0bbfa881d81b1e951b5385bca333a64 +235100 000000000000018cc6aeb8ecb4241761c7d2af99e95e848560838ed23e3c6453 e50af9cbad37eb96eea01d34b6bd4a919822f6359620075d872b3c8beaeacbe6 0000000000000055f0e974d12367ceb0f9369a48f038292deda1e36050533478 +235200 00000000000000bd564841e3face91f324e05c727b3dd01c74f68e6f39cb0912 efc4448a9a653f13c4745ed8eb3b958fd78fc05b1ad64afe9d386c722e78804e 0000000000000008f28ca6ff05d43e4c28fc8282dd594f5f8ef755c4917c6f58 +235300 00000000000000c05911afd079df451af78cfbc7e282db17c572a569fabcc783 688f1427b3aca072592419e19ef426ac8d4fc85536500a167a62914982cf3cd0 00000000000000220dc3b283e651068535f8e934096cfef35342bc688d8ee578 +235400 0000000000000190d6478545aca17efd40d82dae8fc0fa364a5bf6c0f403fbe8 76929d41848bd934ea8bc79c260a77f8c6485180b3cf63e7d84b9ee9e33be577 00000000000001381727641808aa30d483e38ab15c398c5c2c72c9a99f99f1c8 +235500 00000000000000f4fc8808d350d1aa6b92c49194a1487e088463c140cdf98a17 9d185580e010f269b68805e773157b2cc127c7871164c77923f29a2de46eaf9a 0000000000000166bae0b7f21d74c47e53cef3db290524ca43c640c23266ba7e +235600 00000000000000d9228d3cee04aeed7d3704522b2fbe6606c340b9ed4a02ced0 d38a681a29c2ca4b4d35a9bcfc29ceed0185ef1b22c7f6bce50d8e8508641d3b 0000000000000114443c3a889c0bb5195ccf498cf6e35413ea98250569832eb0 +235700 000000000000000f399762b3a7df151f5acb28da1dbe7b99b407315727a7566c 9ebef2a400944088b86f9b387fe4ff98e32d25c56836da534a3e242303321b75 00000000000000122f3985ca2935ad236b88ea98b658f19b77c37fc8a20117c8 +235800 000000000000006a5f6b8d5165e556cf532e044ebb66585225f1ade462ef1dd9 2c42b2fe2e95939de031093afb519c63bfe71b473b51e9f6680366e3d9e0cfc9 0000000000000125f6a7a94614115a4c1c702534629d1d39e906cf898b0c8cf6 +235900 0000000000000105599bcfc47f57acbd4210168ba6732e6930656b237b8aedb6 180ca01250edcef5bb46d1c22ebe1bb7f01a6d5324e9f83dab5452212e837ae5 00000000000000bdbb980d0c81d0835ec55e72f35e29d56be3a9c5611020619b +236000 00000000000000f2f5e55e89dde082cecc9b4a46a10bbb4197f5e35b16612db5 fad901475f5f6f1f5b27a6eefee1f2757a22c3f2694983bb7b7ce37aad56fc33 00000000000000a661436a3afba0ae9027f8ec858b45c87c309b22f1e53493b3 +236100 00000000000001372da97b7c565b6c5df147457621b5c194336c3f72b95d4aaa c01348482121c3954d3addebbb641f04198da688e70488451f4d8f78655bc88b 000000000000007e9cd9eadda5db2bab77d95026e4b74ee6421d1b940b6f3ac4 +236200 0000000000000006cb32000702bd8f23388b54095099568f1c8c4ef1f9264eb2 a40c861a7f737a1d16d2c92663fd10f240211f69a732ef23670a006a7968ec58 000000000000003afe4ac473968ffc0770234a873242e0cc1ad53974802179d4 +236300 00000000000000bafd0a55f013e058cc2a672ee0c66b9265a02390d80e4748f5 1997d23d843dfd892a775f0a49d7f760e6b106142d5b3424f2d7194fda60e0ad 00000000000000488a59a1273583318918e6349aa806deceb7876eb85ecf813b +236400 000000000000000f38f8693eeb67d1cc4d94faee697e15aaa324541dc80c4a41 1e57919b9ec9d6079bfe8c7f53eca27880eaaad44e2f9645bc25acd0e8fb2cfb 00000000000001593bd3a405eaca3ddeacf8d99b6b07f1c987330dc3db7383bc +236500 0000000000000133e19e734c141050ae014cee3251a11ccbaad4741a840ff072 c44bf7a78fa77ac4a24129d180df6803e458e2ee6c50b2dbf13d85dbde32b6f8 00000000000000eb4379ccb0c7653f98e7ebab68b17a198a211f5f0d6a86b7d2 +236600 00000000000000bd5e042e9d6e664079ebdfcd2beda08f8081dd6012dd178154 d5c7e9b74a3511d3ef2dda271fe5cd41d71628ff1ca0e1c880dee68ae9ffb14d 000000000000014c5e3ba82128419f5af67a8e665112acd98c86a2c971a531f9 +236700 00000000000000e92e587fb649fee6e3b6139fd8aba390ab36c533d58f79feea 4f246cb028bad980a86ed81bf4c555e3f51ce1410fcbe2e6acf290990a235821 0000000000000120c4328987e0999b95ffbedbd50f9d1482ff1f006a38c6750a +236800 0000000000000083b77cd59027250fa447113325e32df96f7d88f6838bf12ab6 5a3ba4682c7ca24825127ef3e85306c84d3bc27bad2cd5cba667ea6c4e97f5fa 0000000000000005f64cb81eb3baf49a8c29c882e44ee87ab7c3b05e52e5eff7 +236900 0000000000000155024ac202393fb87c23277f73234fa730f2af5b8c3c60236d 4d71e41936bb5a046ed52bc78cb49768867d9717d4415a44f53788144128e715 000000000000011ff72068221f18e3bd0f1f605065e4ffa192e8a66874b70932 +237000 000000000000000efb4eeccb046960b9117ace9db6b3b24f016246d3bf1c403a c5ebaa864a43b67984d68b0f363cac5ecdad3e0196d8654b8a192bd1cc4d904e 000000000000002ad4cd15e53e890c7c0b976cbb4b84b1c5dd0fb059d0b0f7bb +237100 000000000000001bdeb06464b1305a4886651c6033a836a52cadb305e778f393 718822969e65f8b3ef99df7d5fb3b91c446d2ce16ad7b50ab3c292d8f9e341f1 00000000000000af3ab889c6529d923fe0d4f30d65377470730ba5da9155e985 +237200 00000000000000a4a3ed1e0cb8256461ebe7175939695c2d7ba3a859c25a2ff9 a0ebdb71487c83c3fc56f4e74252960588d3b27f254036bbde2fbc872771f9d1 0000000000000157f5680e4f5491489f5ce5ea09454465b3ec610ddb2dde5dc2 +237300 0000000000000014ae0c8328db3b9e240a092eada60caf0b8fb895a8417c4341 9d5beb26e2260d603db74076bafa399e6f541e5ac8fde9dd57363d87796e74e6 0000000000000096570c26e6d66ed519aa1937a403cedcc7fab1ef2331345e90 +237400 00000000000000fc9bbfd92c77543219f2f4a58c7f72b6045faaac6932a827f2 6dd6b66f0c0534ed4bdfb786c620dac8da2d70acd925fbf1ad877ede727de233 00000000000000d6b9e4ada63ef9193f820c189ab272aa14525411818b2b4c54 +237500 0000000000000115020104600c9689785b8fe8d684b6be343f7849f2d9946106 bec54691f34600ebe17bd5204844978c5e868243d9a61a2e9bd34883c4561235 000000000000016dd240c83db2d6453383896cd5fdfecc4c1e50b167fa855652 +237600 000000000000013549c61b496937e13332831ee4455a6207ef94f963634eee16 7a36743a14c34c35e9d6772a33094a05e4906002975db7006191ff1651987a73 00000000000000a81216343ded733a17fe802496586f8a0dbd50cf353e28bc14 +237700 00000000000000604d2d03562c4fb3758cba6b1366155a760307c3e7605407b9 5311b1142bfba309f8da7491eab260cdcfe641b2c739e4ac6ce6aa30f4fa46ac 000000000000007a3fe7760d1ce3b47987f007c4b55ad2eced16d0ceb42f7d18 +237800 00000000000000752da71822646475f2ef5b974ff9b306ac1956f4cd7e27165d 86fe5e15b91f92e21083dae1cfcdd7e2ee74b20d6a2f43cbbbe7a66982c9aa00 000000000000014f20acea117bdb74a34fd4059ecc373992e1404a9abdf98150 +237900 00000000000000cf52033131cbc42f5b2e300fcecdbaef87c2986aae721148ff cc49b492bb9ca14ac490b529e162ec015f1015da8133b931255f7212cd4e9c0f 00000000000001147a534c743c28037d7a1094ee0a6c42036ff20bfeedc292b3 +238000 000000000000010014007d4b51ab60063684665401e448c6b0b1971a7398a442 322c97d8ffef374f864af67e2a32b86093ab92edc6e34eb0775244e926ec3108 0000000000000089c8544766168f329b696c69b273419fc305722475f738be85 +238100 00000000000000dd8c2de55ce2803f6c45fc1940e41830c5919b7c044e54344e 264249bf792ab8ebb6f17ebc81f5aae7d1b6434eaa53c098a3bef7593b0b22fe 000000000000009d8637206a6d1e9575b49f7fd188173bc73f23e4099617beaa +238200 00000000000000d8d002d3ae0b4d2673c262f277a4062e145be421c428b4ca7b 2e42ddb05ae2f6078f39339c6b61543f6d716e80f9ff30f7b253192805e5ef84 000000000000004def9828fa6b83b800a083553f2d5db25bad7c6dae6583a7b2 +238300 000000000000014c5bb087c58296772f599e81e4e604bf34a8c6473667d18649 0761de7c15e7c8d00bcc53e3e48107ce73549c230ff28739cd53fe15f5cd13de 00000000000001027c8b5ae04fce5ccf3948a15e137dab152e62450fd998c3ae +238400 00000000000000702b1c4de9cab12a892087c9a928eb10b5106769a61320c44c 55173170bfdd943f2184d5ff4feb8001db775b907b4ce9fc10197806890a554b 00000000000001025f117c550edf4c694c04b2bc7a675547cbc6087099876bc4 +238500 0000000000000020b997d4c219f8136559ff50066f0e946a409645fafb29fe8f 834208ca20e6e8500826286be8a7dc189e1dd783beeb62234afa4ba9998b16bc 00000000000000f1eaff9a2009d4cf94312afedbfd0a85a08b3127fed9b257cd +238600 00000000000000cf5177ac1f8ccfced5ccdee5faa9dc453ba793401f2c8bd2d1 1f0607dd23d70f90bb788fbddccd0878785dc2a0154a97ae0c2890275e15d7b1 00000000000000e0c7a3103ec75042c97f466be04d08a6419dcfd30a438d1399 +238700 000000000000004c5a35ca0b0f73dfb7145aaad241cee50740d0806303420393 b462a47621c4aae526b9110eb53bc536a59c4f4b514f88a4447af3b702732d41 000000000000006acac97826062257a82a19790f8d519f93332840599dac33f8 +238800 0000000000000040f742ee49374315b12a172ec1175bb2a28a77ef17fd369bcf ac19d4a47d3a16ee2b23730f653886cd3bc2d5ae7f9288c3969d3ef774540994 0000000000000019393f384b46d42aa5198ca79b6cadd5788d97453a1efcb855 +238900 000000000000002473da39607d936f071d367ae720cafbd3fd34dd10f4553952 8f50239ff502f2d3932d5524e6d28841856b08f3fa072b212680f9b729527041 00000000000000ed7dd49f3cf5624be032fcd504298691887201bba49acbb806 +239000 000000000000009457d1c7aef43436d3b5f67542b343b4b57835912c9ca718fa a069ee5215c8580c9ed262d3a087f8efebab2f7e2ecb49d1ee77805c8e760d6d 00000000000000aa7d046f778d3028edbc99fa90ef8f453e68de4eecb3f8ab0f +239100 000000000000004e3063fb654c4ff1d01786bc1569251ea28a5a5a0d05734471 79583704fc097e89a8545b328869de4e57d3d5058eed00ae37249420c9f47265 000000000000014a699d9b8d2aaa0169701327add0fc6075b1358785517574e7 +239200 0000000000000008ec48c1ed0fb7f95cf067a8dff445c9f4556f8eaf29a41d2f afe8add466db4955f08d1d7c1d45855ecc85ece3e0cb1d49f560dc7ba72eb0fa 000000000000003b1d07a83ce9f77a34bc8bf8830eced21273c68c306d199e91 +239300 000000000000011a3b211ed9f3eebd0531e24157799def6ed4abdb227f0c4114 34794a2e879b80c5c221777112a6429bb309a2c6a3b8d150538562afe2f8cff3 0000000000000106b140ae2c175245bc4d5b1570b0d695a81ba039047c121555 +239400 000000000000015152d27ec14e3327b1a3eeaa269b02db2a40b69ee917a3b9a2 fe840f5fa755bb748f391006ad7462c1e70b0df786ff2f5a5ac89060f1eb90a7 000000000000006ef290b55f7239bfd4b255d0605ddaa38ed6136e1111ee9820 +239500 00000000000001401a9f32d825106023daedfda9f4508476f3d55d3ee7556b4c 2ebc31971e0cf67d6ad09eefcac1e5be5cb22d21a04a33cea6b1043de0f52905 0000000000000093801033fbc0f78b4027e65650c913953097412a8dd1ce22b6 +239600 000000000000007cf0cd0abfbb3a187d495ce29f81e189748af958bdd330d40c a022af430ea3112472f00a81b647662f01ac57dbd3965138fd62709602718fce 000000000000005ad7d21ac9249388636fcf765af86ac267ca255100b7ac9172 +239700 00000000000000d8ea2d31cf284470c65e05afbcda4862423cdc1d7b704d73d6 b39799c1784e31fd7e14cf9fb4930e0defb59ab127adeab1972153422cfa0122 000000000000012b13fecd4ac7b10de91d6d97c85ffb5667cf6618154e18da33 +239800 00000000000001100f1ebfad0273e0d679d7cb2b2aa5f77c5162961de3fd5f47 6a9796c2f81fcc2e91dbbf00f116f3cb2b53782eb89c2c8a09b1b04156ce84ce 0000000000000038822e0d12709e0e6d7521bebfd0a1ecb68ce1167eecd4bacf +239900 00000000000000956f45db4062e709bdec0422bd03873c223a295d7ff5516108 63252ea47ea61a309088229015ed517fed39df60a137efba962583af0d4622da 000000000000008f6dbaa440973fd0d1a82169a96a4113c96901e8b837233e6c +240000 000000000000000e7ad69c72afc00dc4e05fc15ae3061c47d3591d07c09f2928 2e0a0fc8f236d09e34943c63a0fa165a39de708cbf0ff0bd163108f6fc51844f 000000000000006e77df3985d9f69d92289b28bd3510e8b124ec24f2bc91142f +240100 0000000000000027eab65e0a93eb71ff35d18ab1b13fdb4a3269509fd06d1536 d4d808c0a98dd6482d19bf9fa361bf568ac82137d3bd14939e8aeaca2a6cfdbe 00000000000000648c0b428ed673c39f13e1b905efd84d05a76db8e3622e070f +240200 00000000000000ccd0a1e5e5c49c86b774d2a382ffc6a067290767202d4a2ce2 c05117a19608e93b02f2a9d172bbc9d045ee2218b5a4fb857c41948e51054b89 0000000000000100d9cbd55303647c2ebd545de6420effe7ec3de6b32d1df0de +240300 00000000000000da23e9c4922a4f9eb20a801e2924ae7cae195f11cfbfa4aa4f 5351adefb2483deac2f06c61ecf9af1bdefd0e543688fd4ce41e18ac5c6d1170 00000000000000218aca25d965cb0d3d3a509513036138e79c76f5855043d881 +240400 000000000000004567127d969e8febb22b43199eac51738e7ef05e7ef917056b a7cbd4fc8f21045855d48bfb57bb4f3ed7d5e539f1a2d38ef0185a372747303c 00000000000000d0142349ca7ea47fc01a4059654ffb76cd76e2d95e6457a05b +240500 0000000000000105cf4cba99802b777a81cf78858d2ddd13086710cfe671df1f dc926e3484c40b0e5563612e0f9ad6939ad3b7714b470cc5c93fb5bfb3e9b14c 00000000000000488c42f73e19248c0bbc6c28e082943ac9407a1cf4b473e2e6 +240600 000000000000004de05165f73973c4b446cea555319bdaea0d4df7697df09696 f2c1f7fbc04583b1f6b66ab38e0e61cae4e86f1d4448f0bb676c387dddfc542c 00000000000001129539c2327b2cc04c87b5427f3323f555f84b1c235214c944 +240700 0000000000000048053eeda0dc5566a27dd49eee6328f11ae21ffcd164d7d469 7771a98e5171e2e8556e1167d1304f1ac64cf7417b0fd6c207402fe9417b1e0c 00000000000000865228a43d8570edd1c90f460496e1edf06b6f0a74f39e2f1b +240800 000000000000011245dcf10881556466cc029388c4b79cd3d3e2cbe8bdbb830c b7786e33b5ca46664c6eedf656da53ab380aabb7caeaed6cf94adab2d991416e 000000000000010da9f0f7498254a52323e8fe3c971e792ca060d692471700fd +240900 000000000000009a5f91eebc87532a5a1d3dfc0b8b109646c99809f5793b1771 42dedc99a8577596cfa87bced0f255905322f8e91ccdd1a81f2231bc5e7ece46 0000000000000095deeedab1460b9511e30f8b3d74aee31ecfb915f6634564c4 +241000 000000000000002a2562421dc7814786d3595249f50fd4cd1fb7c41b4a848fd2 a0541e7faa9f047a47f00d461303104ee013597e3a6350e412424d963ae19479 000000000000004b9455b0c39dc8e7cbadf5058f46133162c4311eb854750ea2 +241100 00000000000000b58746310730c2ebd9a9f40593a7a23584e95e89855d833b1d 49e177db1424dae3f608e28edba8b62db82e1cee769b91ef693e84eb5eeb28bd 00000000000000d2ffa79ece0841feee775f77a2c6dd1d181819e77697274394 +241200 00000000000000a744781cdf08f2fa90a12c9fcacb761100c0d08465dd3650f8 7360ccdf6ad51d3338008333b19794c7c4915b06f474156e218ce3633b4499b4 000000000000005ecff3999490cdfaee79c762519496ae2c2ed19a6f0c73b60a +241300 0000000000000083768de45278f5b8a962473049fa568374aedffa15be03a461 d0176627877fab0d4f0222c486456b11d0928581113937bff13f95848140fbe0 00000000000000d98c8eb5a374636c4f0f31da79c2b09407ce3969641c7b37ea +241400 000000000000002590349d867ec20dd6670892f5c749ab18914406056eee8060 40fcf1509788463a7ca4f807f9d44d232c4b38c82d2a6d2e47e3412a1fa20238 0000000000000100651f6fbc464532301b77266933cd41610ca1e95177b0544a +241500 00000000000000cdc0e1ba19fe7a76a47e5c6f02eb4af30717d34f671a8c7c58 9d0d0e83728f2f9fb6ab6535f477bc5f8d5811ade2b8597cdff4f4c0c21babc6 000000000000005e1eae1009aad748e13e26b4c9ac346bc1910df7cb7e60255c +241600 0000000000000015805570d756a299f9177200f19db61692a85868ac91a3909e 7f344119e8d831866d8f88b4798bd50b2fb0e6d48cafcf120ab2f95312f2366d 000000000000007c3b2e4eb951edc839cd1111609f9372b4184396d6ae252e79 +241700 000000000000006331373d9f4561d7fe86483999fb68494837f430a3af83894f 353005bc22f701ae0547a51b5bf1cb9107faa964f500c600969489eaa8a2ae84 00000000000000b19f849243c751237700330d5ee62c6f571dd9cde2d6bf8ea6 +241800 0000000000000038f2e042acc31dd9c629419ef687d1a18b1f61ac9d7de0aab8 997b2906af58f7e9caa6ba9ff02aeae2ea112f57105ebca6e4459bcb84b2d259 000000000000010ecbb1a4d6616e0b53ac47dbb29b060d3b82b599f05cf7d5b6 +241900 00000000000000d632c92c22ffbeb7fe3774fa27ec5959aa3b33351b54b812b2 f99b8a4d660ee80aabd9af1ea0bb4bf30bf0a21a811fa8feef634d00a5b6eaa1 00000000000000a05b433fe06ac2af0f555f83c3376568a655af0163983dd299 +242000 00000000000000c95233d37a8c78dff10afecb14060347151b7eb7a04a2a5a3c 746bc861943c7bb5f47c24b7fd2998271383a0e1a6459c2ebf80b5479e534cb1 00000000000000ccb81f6bb82efc9e2adbf5525bb9d638a1fa7981fc5a9d0a3e +242100 0000000000000049985ed88109ec48805640290c50b837effaadc01eb4d5964b 62f06aea5ca80f9489c5567bb0ad3072695fefad2335bed7142cdfe58f4f90c7 00000000000000b265c3858ebc160a940cbe402affe90bbda6a281c42440106a +242200 000000000000008b8f5aba3438d986789de96b62c9a7f6b68afe00b7bad8101c 293bde4b94d165f26aa2e60d0c2be4a069a33fd8669322871b1e4d954981c614 0000000000000036e4661c172e70ee6b117b006233c902c418a3ca677dc48fa8 +242300 00000000000000cc69cbb72a9315b8f010adf8965349147a494fcb64bd2741c9 b1dedfc21a3eb670620b60c309a7bd947e20906fb4dc996fbb4d386eb2035097 00000000000000a16fd4a0f87c3a70574f7fa876feb24d0985503999f101dd5e +242400 0000000000000093426161280e5381598e8dd63d4d41110bb5d1c3df79e5dea6 76fef5c7f608012f942c5fb2728d9ad42b5b9f534f74a87effb62ea0ab8ab7c2 000000000000002c61504b45a93cd1498be4038ded53c73f8fa3d20644767e41 +242500 00000000000000a7e4c120c1cb900a14f0dba91d34fcdc8807c0a2fdcbba4c09 21b283fa1ea08dfd09e0c01746a618e6c04555f10de820a85daafc8a8cc8671e 0000000000000048bf9ac4567849ccf3da5cfc040f4b5b2f228958a5c9a53874 +242600 000000000000005cb092fea67390a07d1adb105167cb80d91d0faa09b5eb574e 21afbb6a2d462a963d6ab7b98c76167d70e3f15f1285abd634615bb7041007f2 00000000000000363683ec6ec4ac26eb38358095716cb9b5b61f427499fd374f +242700 000000000000002d6aa3455150dc4ed11205a84269ec9d8248c74fba1760ca6c 5b9a8116f1d0859fd9da687caf95650ca05c64b5480106762989af0f81d39cc5 0000000000000035054271c485c0c1e7d0581d22196ef7a11b00ab308c9a20ad +242800 00000000000000302122c1b063780624ab918cf25d54a3084579ae17e8bc6944 d0a2d123bfcf17a26f65ff9f997dd242d278413dac804db4ef7d33f59e3d721d 00000000000000ce570d17df3bd3da9ccfc1e02f5b9a681e0b18230ddb352054 +242900 000000000000000125688888f538d30b6d689ab0f68f142333d84df7c6afdb00 8ca3fc55cf20a1d5b5a41264bbd028bf941571b8cdf0cb0c30633f1b6130ef7a 000000000000003cbf4c440e85d77a96063ae07889ed015770fb32f49013ff5a +243000 000000000000004701942914ec40b88654862cd042f04fae98b7f3603a26e264 595b311b265d0c2226db6170fbce75dc1cf23fbe3657cd609eeba48605ad391b 00000000000000047c754b20c4f73fcc2fea8d00e571ac477d4e2993d93a9feb +243100 000000000000004454e2d5f40742d185e29af85e9c9ffc231d73781566752bf9 6a72282fe2b99f0a8d1c1f524c4828f0bd35b62433ab857369836d88e9a63fce 00000000000000525ccf3b1157d6f79fd655b115d652d12e32ac92d59191d0c1 +243200 000000000000007497f4b7c0e435ffb0c165b5aeb22f9fe384f81bb517c56151 48984d002df7730197a31f7431c11a2869ec84a5471ef6036f35951cfe9ad8af 00000000000000382691339643d5e4c7fea7a9105eeb898d6dffda7da6dcde62 +243300 00000000000000a4148d7b719f6dc8f366f01e04fc17ae328dac53c70c799a47 d94996120493a320838aeb52e25758a94295baa403499bd453739c21cf450327 0000000000000002dc266b67a34caa0cfd6f68b1d2a32298b5b10cfd7d483443 +243400 000000000000000accd2e0d1dcbd6e05a884b7baa8e564a3820a45c95e815041 314d8ce92c6ed72d1cde42b04526632f5b17724f09abeb0394596ccc656f36ca 00000000000000703ab7d4729f2ff7b9f4335665ba99607aef7cfaacbe18802d +243500 00000000000000dac6b703fb82af969d6ab2501d20c466e7a49671d3c923b89b 39db4f3089086ea8d5e32cf439e1411f4d10b6639feee3852d32736aeaecf274 00000000000000d87932f2b3aeb8a9b7268ced669dbf3e7cb33db3bc818ddb8f +243600 0000000000000071d73cb5a538553753b57db4f4f667de599811eb9df9bc0da5 e6069052c028e4c654086a31d212b2d0a9d5d3c0e66e6e8cb356aced1420d753 000000000000005443f06fcba5a4d842fb0f09cb3f6a8f061f5a2f58cf5caeb7 +243700 00000000000000a69f62c0b1eb1d722f17de05e0a7d1e3a63740019389e6a2e5 d7e89308f1c507edc62e11f287bccfcccea57a82219efcf0db4aa8bc1001641c 00000000000000b106e9c3308034c390222debc52a2078fd61c05914b9fdd8b8 +243800 00000000000000bf235a834b8fa15c4ed51853d39a0c1a7c25f88b084099eb2c ae658f43ff0b8a1d87c0d07686adabb19fa46cbeaf20c7fb461404ba5c34b181 00000000000000633565d89fa6981ac02f9f5ac7df18a6448a2a5e55cea08c68 +243900 00000000000000aeb4d6fae7b7871a688426e388e77923c9b859aef6f8fa7c6e ce15ceb2687664cb10b04a1ccea7bc725dde2015967ed3c19af6353773ea76dd 000000000000001c02655280ff0c74fc75b6dacb48489cf2aee053c98c3cf41e +244000 000000000000006ded1526017d5b87ca22e1bd0da3921872cc99e9ec77ee5166 a5a29ba0771a5bdb391c2a762d8b3d62159ce31ab4f62c0e76b880ff87b57114 000000000000003e7b0ba0ab332ef6659061f86fe63002f81d14cdd2b787b48d +244100 0000000000000017cc1493dd680ba0f6f02823fafa6878093a063e42faf583a0 647ca500a6ecc68b92fd9cd826014a8bfea9fc3d6400128c0366a2553a168c2c 000000000000006af9c0cde3e7f164a7cd234a2aa2110f9536308ea118b35c10 +244200 00000000000000516d2826f9cd8cb5aec17f9c8b9bd9fbf156fa1cf44592a33c 33f5b64e4567282c47442dadb4906cd6359798fbcf22af9d3f3e006c5dd948f0 00000000000000bb81ee677011c9d0534cfc9898067d00d347cd6b8b05bea249 +244300 000000000000008c200ef4c24ef2829ee4726d8a6687827ed25cd7f9133dd920 0e37111d85dbb020d0aab24c5d0755cfcf0ee6e6013b3d522bd977b48f583fb0 000000000000009ed6531ff34df95abe17a1df681a14346d1280a3c1fecaa767 +244400 00000000000000b665be8d13c4977905fb8af008b774ba951279a43d4c2874d6 e91f81fee1988b768011fa981ca8ab7996245f868016ffff0a51be8d5ceaefdd 000000000000003421b8ad56f28708b1b90c017e8575b97964723e411343bcf2 +244500 0000000000000048eaad55efb130561f447a26043353653990508c4c3929d5a9 d7d1ce64c2b6d1ed67e21627faff159f67529a0a39aa3b23856965131fd20f6b 000000000000003f2f1e9e3af435447fc818c001ca45e1d62cbc6199c2acd7d9 +244600 000000000000001fe183d6bd48798bceb348ac8f915c9348816f6c3acb2040e5 90d2ec599b8ea091aa235129e27c558a0b0569e9f709b095e4f519e1132b40b8 0000000000000061537f8989b41d0e7ca757fa48e2615126147b1cfeff706cd9 +244700 000000000000007131f12c65c27cbd4de56b5206316cd0907916589528424ea3 6a776c5c2076f1388838582bb5f0f52a2dd6be6ee5dca9f7005e0f62f5fea4bb 00000000000000c37b1e86a6a25f124e650504cf8b6f4e4c31ddf1be19df9791 +244800 0000000000000088b031d48a7bce734d97c96c70367df5f6f93983f00f463c88 89f8a2439bd589ea351d43a409a684c19282ceb8a45cae60340eeb71dc198da6 000000000000003bcb8c79d55f1877168707fbed9385af449191275ddd3d3492 +244900 0000000000000082293078e71a435d315a13559a628ed77a5c28284e12ecae14 3b09ad987c442c1211526bd761ff0b9bf48a485c80f744734d5533a2a010cbfc 00000000000000b7938541c98baf8bf74409a6a898f4cdc1d22ee11fae2acd0f +245000 0000000000000023bacb560accb704fcb94665d02f191ce56410b11b93a6636f 7893e459fb0e06f21b1b6919762fac09069dfa9a44f3597e79dbdc62885b4004 000000000000000a7d0af8233b2d8dceca0c804b28967365d95c477b07915899 +245100 00000000000000ae6b97cf8065b3a2b28d035fce6bcdac3c94e90dcec1c8ed8e 60d61acf29bdfc8292501211c817258a21155fee00552527eab09fb46be4f1b5 000000000000004cce1d4056cb79df8774d1070ce09ecb6cd741aaff08764a73 +245200 00000000000000ab9c7adaae7659f9a088613d019d8d9ab591d298e296bac6ce 0fde5a59be168a370ed2226bf33b70630535803e1d0a6285f18ae81ceb80edfd 0000000000000052334c33a2db1c9c9ff72f603f4615c44c4f13ea2c6dc22d7b +245300 00000000000000a76c50ad9c85558d58867f4768c954b43d675f049e0d090565 62e197876268d73cb4d43cf3228c5c4c0e21056849bb01021113e4c27d35cf47 000000000000009e44318c618bd7b8d1a8c91fa6d90df7593ed8c0e28faa484b +245400 000000000000005cf08d066b9ef35cac315c6d50e5e27c185447410f3e19f3d4 ec568621a78827592ff8c2468c3a5a7873f3e7f32dac6aecb482cd7d01265453 0000000000000055286a2c027541dcf5c9c120aacf6631340eb946333dc65ed0 +245500 000000000000002104103711c69e487e54bf752a459b602aaf0377e19e76fe78 c0e707d9a10679327f818b603300541b6c65020e2467517b3c6f5c70a85257fa 0000000000000077d4b409f1ee745c4030da05ffbbaa3067475f7404ab8bbc8e +245600 00000000000000a1e34d73bc9f6d80d3831b11d9a7603b21829d83c5b940ece5 90c49eb4047fa6f4b8867e1488a550fa820846379bbdd576611c62c0443035fa 000000000000008164d23166a164a37dac5a6c58b110157e7940a95653ecf00b +245700 00000000000000357f0f711f80cf72b1e81d32b21252b1d18d1fcb4a1989d21a c54f1fdcafcfb2d5fb57b8f65f8f585bae2a344785d27c6cd3ba5cb2383660e1 00000000000000b3a8681e1a7b8e380bfee80de5fb93aa85e30d7c59ccad4dbb +245800 000000000000004a527202e44ad88e05ea0b21e35be63dfc6d326512118ac843 f93e48add73fc2cc3fb0247d40dff669e9f37778cb446c01a8dc06ac2005b421 0000000000000025bb54c497502329d6da630e888bbad2673f146c0643d0cceb +245900 00000000000000acb1c90fbe24ef87f7e09ba7cfb6d0e055a9399f01385aa86b 1801e1e738d266050a99978975ef0b427f2c95356838f727cca570b7cd9b1eec 000000000000005a038c4ecd3033020c02e583fd9e2c5ae23ba4aa2c65bb2061 +246000 000000000000004c318a3ad2ebac28d140fada215b11f5b7d8e9151ff0b000af 6c2ad4389a4c9114f7f3ad2c894d860bc5a883282a5a857483c121522f385af9 00000000000000349dd94eadbc44ee38ecbf5e97227e37f3c9a7ad24f7ec8dfe +246100 000000000000006750b94d042f123c0c969110c3488297e39793293254eae71d 71749133ffa3023334e133c4a42905aa797e426146799816d16c56539ad73c0a 000000000000008785621dc712943c7608fec2d937d3d07eb914abde70328d12 +246200 000000000000005be0eaf123aa78b24ab0de8cf978989e9919de76b5abba5e98 339c4486ede7c1c628be2cd0265ebc9806384e62bfc2d95ea3130b1575223ff0 00000000000000999bf028464ba20a43f5a44e0b97dc36e03aa4a312a8533f30 +246300 000000000000004816ac51825d4209c814fda76b5d05d2939216bcb9926793d5 2dc5df65399a2e007b92d8af872c38d2690124ab3c2f20a63c7ece97b0d0b80b 0000000000000085d4b63505921e63be6b00365c10399d9a7c45c28cc7c183c8 +246400 000000000000001e58356307166a15357ab03a459afdfc68b859492ef5e16ec7 b4ef994dcbde21b206caaac9888414c355737009e9ec667e49843f0f079b4758 00000000000000a239a3f52d451d65928c2294cbe12bf0da22526324588f0528 +246500 000000000000008b6a5eece395cbb3be9c9663e02dede9831e7d4e117cdc2b66 8c09bb06e09812acde2af08b1dd06df6431152c321b028c40bb2b01052e85abb 000000000000008553073747bfd08e0b3503b90b8065b07d0e7728d3ebb44e0e +246600 0000000000000055a1ea46618c238e033254e532c4ae2f7b32121ad4e60eeb2a 0111141fd578308cc2a0fcd93152d63a62a9540012450a149d061e40f1e3a05a 0000000000000070d95d7beffc2e30b352ea9540943ac92a2a0f1e35a42c1a38 +246700 00000000000000483373c6fcf3555850853789eb96a3953ffb72d9fe974d21c4 eace282876905f62fd63bf697521c37d5695a6e206fde5228920a98d5552e9e1 000000000000009efb30483ad17453cc7fe6afa9f0241ef3974747ad0026c411 +246800 0000000000000023b473d0118a068beff6c15b8b7d5379f172c91f36899420a8 ef6e72cfc8cdde9f67923844ed77f04713223bf1658f35fe77eb208ab03a3540 00000000000000100a58abf45cbbd272031d4f4bb4f6b9ade606e81affb4503f +246900 000000000000002458236a0b12e6b05feda5da409c97852588a976be866d8747 850124033b00c2114740c0569d7c5cd05803a3aef3fc56f4cd89b857d9bb1743 000000000000004a1e517caf413103af8f4d6b6ed0e7b7180f35587997bab391 +247000 000000000000003d64d714747fbfb615e056f533386d162f0bf5e049a9b6e0b2 52d7a3881807f8bf9e6c97fe98db9767177005e3e1bcf35b778d802fe0dad4f6 0000000000000015258e972eb5d3334ec7013d97f569377ee940567a7a47a56d +247100 000000000000002d6f83245a4a73101bc7f57c8b2b68b3aea261e440502bf7d3 b15af0098a5f5491564dee071b1460e5a603a87140b97855bf5c7036b0594fc3 000000000000009c74bf14d91610999e3c33bdb8a8bf78ffd05f03d759b3122a +247200 00000000000000762784b647ede3678f172d73dd0c72c2180ab451b00d756959 bf0300a2d5e5f23cd06f3b2e0a99fd969d381ce10c9ca81857faa02c8e428aa3 0000000000000090344430e3956a709039288ceeb473fff6c1b68e70ee7169c4 +247300 000000000000002efb6eb419f23215514516a38c8ade1014b54e622dc57f5c99 33546b7a3a04bf4c6eb16444358e643ea08939a78dcf6c161c7a3b2e036977bc 0000000000000055767d20613b065a229db4f27ed0bb6cd73532a40a115b495e +247400 000000000000008547e24261492b9c3b2851155a0c99e704f1db191b856ce943 147de3b30df402df1145072523c0f444ee58d1f30b9d0758c06c096cd1b2d7da 000000000000008c10a1e5d4a7c1bbe89160290b70f643040a29df391fd894f0 +247500 000000000000009c3ebacf2f0c1fab318ee905ce46832985dd1fad7038174777 57fcf44b46b8454cd3b2f38362d7c07b122bc035d6d847f769f2f5cf8b8d710d 000000000000006b55245d1508de275f77cf3ae06ec5768dc8f569386735f904 +247600 00000000000000357ec1a79cb1aa8c6f9517cb932620a4b917427b13e2ef3e3d 2470fa232e7a7ee905fc7ebbe6a4b6377701b22ee40584655b4bd75e75cb6646 000000000000000b5d5992828ed9d0845afed9c596714e3701ac05ba897f322a +247700 000000000000006a5aa50066c94dc713740c98682d550f87d08bf0c35674731d 9e67650f8e773ddb0ea70b83bacabec1abcbe6e2a36ddc7f5ec604f486d49dc0 0000000000000077d49894f1904fa62eaa3b234791ee97c60cab2c359c4b77d6 +247800 000000000000008fb854729f7500337ab98b1ee180e2d8801f1fe9286ec33b4b 0c12480bbb8e4f8f84d0b2bfe1359d4a348c90091902fc0befadde36dcecf80c 00000000000000a03cf4aa1c080ddf1b97c259884aeeb830e3579ffb55e20718 +247900 0000000000000006e675df13c15efd4f4ebf03838e07b85a6a423293fb8e5d0f f18bb9fdd64de7cad8de5ee6ad5183c07651cf221efbc8f154e737dabd163104 00000000000000040b45b983bd2275500a8ccc6ab0cab01359b9ab63b0846d5c +248000 000000000000004d945017c14b75a3a58a2aa6772cacbfcaf907b3bee6d7f344 b61d51d76d44ea5d6714b40ab851c6919de2a09f23b6d844d79a5993bdb30d8e 00000000000000172fb9615729d960ebd66864c60f04f564e6b2464142460a58 +248100 00000000000000305216785232f882b7c4392ffa11e0ee1c4bc241fb07283990 6cf5edcee5467cec3ab11118440e32e4caa5223579765387f18805b51df70afb 0000000000000023cdca59905fbc468dc3fb47f5bd30dae5b05d9b9ecd5627ee +248200 000000000000000c562d5468a053d94c8ad2b17dc5190843798985a229a19583 ce73932ebcb24fc3bc8e18cffb232869d05f37cd8c319d995a3ccef404e6043d 000000000000001f2aaff9cbc31130f912e51ba88a72c5b2cfe4a6082e0dfe5d +248300 000000000000000e59c865a6835d0c09ac4dc2166fb1c510293e5eab64b36670 d14c12451b05f0c2bf1ec33ec5a00513d30a63e6cf097d45953b6ffdca63de33 000000000000001120dc266f6683300f32ce982585ede9a785ab99235ff1015f +248400 0000000000000031611a5ee7e9ea77c36d247f9171cf8ea8838cc6e44adc73b4 eb719f25cd43e8dfd2ca80695c276c7e10d38eccddc98cf137ed15c484a2cf99 00000000000000832aacaa3f1e224f71451161c73fd753f1d9eefb957051d1eb +248500 00000000000000588576e7948161039aef0534dbc2379b34eea05eb6980946a4 e245b52d6cda58d87c3160ce4539d820432021bd8e2034f7bd304dd70029cd97 0000000000000069366f1462ab9fed9c40f788d9e74f1f67c209da20db6122c7 +248600 000000000000006900e1c65b7dae83fde2ce6efa7020ffe83ef4cc13c778a3fa 19528ef612eee43b67f289ceddd5d21906067dab7bd5dd0e892d0c8bf6269236 0000000000000008e4c523116b7364f55a1383dd4981acb70e9055d308783c31 +248700 00000000000000061840c8f271deb10c2a6cb7151354ee8f2d4ec316d3487af2 9f36b00d81658264b06d95c167fe71207b0caabe07c6def31554975062f6df4c 0000000000000042a8082e97866e18ace6b748682001111a569099a1abdca5e2 +248800 0000000000000081e8c01ed71f5b8c2e91667c528df13ae17976ff974e027684 58d059aa64aeaf017a5943a7be1fa2cf01c350ca4eec583597c6fd3276e32145 000000000000000090790978e7ab0d580d39e1d080c3a5aac84d1a6abcf36edb +248900 0000000000000084c69f82dd4997d16addeefc81dc88f3b5c929f32b4188ef39 b50381b6f06915bfcbc34949b6b7d6c9448848d795834352e591fb0bc3895b6d 0000000000000043ea5b63fa9289deed8d0e02541887642ddd776d4dbe8a11a7 +249000 0000000000000085929039ae75bc5526699e29cf2b1a3741bf0a845fb94e6c9b b6f38aa3eda8715df95ce8dbf21cdec5e64aae596f66ca0cb24d78de8ad2a74d 0000000000000055e3892613d9d2f949d29db931c9a63382b5964af8a5966b2d +249100 000000000000002e886c5ed2aa2111e6c1089992db67f4403156a6ed611f9da8 3846988035e8264754dc72be400f07ce3e325bad054db3c849b963348b61f1c7 000000000000005ee0ba2769da6a1a6b668585f4dafca59d984ba580716b75e1 +249200 000000000000001024604a15425c5dd246e5ab42aeee2f546f028ec24838c0ce 1f5e613da4c6973c1f9edce7b7f764e1215517fde0e96ba5288e332f0ba5e86d 00000000000000321de803f29606b32a1e0952c45497732e4f56084aa92b0a0d +249300 000000000000005f2d7e62569b1613c52f1a4084ed4d168d051e010a73f5c5d8 4eed7a592331ac3dbaf8217018150dc905c5972562653486b698cd8f68082ab6 000000000000007cbf9856c20f4736dac357a1e6c6237a95dd77234a5e3662eb +249400 000000000000006f0f76f7d09b2ba8b556814168ab5b94463cf80d2a30f97c43 eec98654ed105fbfac04648331680396f87517d2ca689d5191e7b235a5155629 0000000000000044d0245789d6280a34404d12be42cd1dd59907d94e8c36cfcb +249500 00000000000000110032b6bb08335765ac87fa04bc95ee15c9ab44bfbf80ca8f d5d60fd7dae9c14121f7ef86a3195182d4bb6abf2b9ecf21cb392ef2d8bad740 0000000000000040048f0e18aea438224b4a894e5acd6732b380d7440ce0055f +249600 00000000000000735a1b6a809c40ca6782780270a951ce1422e0e5f2da8348f6 9d7c52f104c0ae9b009955295dd0a8c204f3ba0e4ccf5da4047b6ae69e46b82c 0000000000000024f239d5f4feece3aa65b5b282eb34def13a2bf420a433b2ae +249700 0000000000000041cede57c9725cfa1b8a33914e07f2856beba53fed403d9784 a792c5f25ddf326331d95424de4602b204575be93d4618a3cb7ee88a5233adfd 0000000000000031b821dfe4547565664d5cce9cbd3bc2e422cace5cf093113c +249800 000000000000007d8b8a636594facecae0f60f349654a58a26318b29170422b3 51efec526d94a2612f85c740b97a1975cd61ed9ff7334a6a3fd0cdccd7e601e0 000000000000002c5af6a4a330527739a8071ed2fe86eba876dce8d7e9a96793 +249900 00000000000000389e55191c0c053e24a0b3154126e724d918f1f349225dd455 bf85a98805b329b7c89875a5f4c57b3bd1cf7b58c9ad78a5d1b8af31ad5425a4 000000000000005f08bb8e6860e189e1193f0dde3c71312ddda1a08fe2d44fa3 +250000 000000000000003887df1f29024b06fc2200b55f8af8f35453d7be294df2d214 ec54deb3922032bd324d45fd498457b535e9a38fc23eaf439509ed1466d3dfb5 000000000000001b3f536a81be90d5cbe8b79c2c1df53d1f91540cf5cb5a7c58 +250100 000000000000001444a09639a61b244a5ab3954cbe272e35fda17c25e25156c6 5549a214504fe99a02d96742794f34c9174ab7d5f1937f47a504e400fec1a5c5 000000000000002af4f16113ff10770c293401520f50df8ab0d56f078a1d9bc7 +250200 00000000000000726248ae90dbf85d69f65372884e194c9eccc8f4fc615213d9 826d8b6de470be82ca7b9b7f12fefb31dcf69aeaacc59dc4f84b715114af3d93 0000000000000022d8778c04f9e24c5df5788ecbd7666b766e7279a91c75bafe +250300 000000000000002570c114f900dadb97991c97ab65b0090194ab5eebedec3ec3 8ab605bf907139147494728c649efa96171eeb915d3650fde94547f9292d49c2 000000000000005bc8c6e81719a6166881baa70bbd6d7b849be47d23d69d18fb +250400 000000000000000ead5617229ca302153fb0bb8ff9eb2283b41ca2640194fdfe 7bb1eb3e2c9bc51fa6555b2d68d9e18271d56eea479de0fc2906be3fde0bfa8e 000000000000006c571ffc24ce5ba757f5f011e2a2debc1f8d5859504a5ec29f +250500 00000000000000141dc9c0447aae40b30996475a05683a3e4d44aad4a2e25479 2f4f35d03863d043327336d52fe41546f542e4718bf8860d879f3218d6a2666e 000000000000001eb527e6fb058be59f1dab66d45c651ae1cb511e61112d4489 +250600 0000000000000039e1216ac2483d7d356f775229cb7ca01c5b927405b8d3eb6a c4087b94a706ee115022ab5578f24a855f2f65e81e0c3784698ac3f221fe0aa0 00000000000000335a71e856f5e35a201269f0e2533ccd29c7baf2c6ac5d7c73 +250700 0000000000000032bb8fa5c29296c3ecf206ac9229e95b4282f320cd5628c74e 9d4c9d371488dfb01f77013b02da0042382c16e76792ce72f950a4182254fc4a 000000000000004faa8db1fb1b1f236c5a55a65ef390b2b3f272a8cd04754c0f +250800 0000000000000039eaa841c9de4cb01fc40c6597160b6da870dff3a4ad6d118b d876051011cb8d453cbbac0b0274436243bf8e240d92dbb4c60aadb3c236513b 000000000000003c564ee98ee9e8afc395c29b97d3ae60d45a34ced734279cf7 +250900 000000000000005c8f469edd54a2ac1a4d47e1638f9c55e0e881d49449a28fce 591caa916611d06b26f2b40eb5212dc993959c36a005f4f757f43ec7ea9c868a 0000000000000037203c49a3bc00902e06338d93c8f543a268ffa53834da9163 +251000 00000000000000187d502943a776688b80da0744eb664ce7c5c04eeae1a33f52 34f0f3b4286179d86f78ddd404ef803bc17d95d32fc421e6a20c060c885e06a1 000000000000003656d9ee65c6a650237a06fda6635ec33b93e7d55caf6530ca +251100 000000000000002d1e929a9feab87613338d15745ce695863e6b05bcada418bf f644c73a198f3943c2de92a3d49e3358143eea39a5368b396448d5988cc495ee 000000000000004f42f4d1e67a71ec75bbf040b85bcd01b8997aaa7c578c580e +251200 00000000000000363567a4644278590a77fe509c85b77ef0a55568bf5360c435 e074323dc79aaeebf184834fd1506fd2c854765ba4f5be2b10f3f2a76bacc78b 000000000000004c098efdf8d8aebb5f3f04079f4becf5ac2691a28c58d234d8 +251300 0000000000000051cf74153ec8be615c5b7f70fa58a2f24d69694f8d0bf24a4b 7a43b9111384cf2d26fe961251410277732920619f232db6c4c6aa70c63e3437 00000000000000643dde64b0e1d8ee93d5afcbee0701bd25ef1839d594e9259e +251400 000000000000005f17704f915625e3fbb5b6037793165cc92f8709aae9db94c9 87b5369ff13beb157f396cd6414b7c6267399bfc982250e48127fe6ce67d40c8 000000000000004dc57f725a1646d459c94659fc2eb2186235a44aaca99e574c +251500 000000000000000e8326df54a2053c9c7e5bd77d05fb0fdce14adbae670ca493 2545791e87647dc00c4bd12b5e08a13cfb5d18da7d1a6626aea4ad257d118f53 000000000000003f70a2dc46ab93aed74aea72a54d5d143da16fcf4391e1f014 +251600 0000000000000013cbaef247bc886d65d7720a70bd6014069995c1b6d180657f 3ecb72328430d3e54ff9829c1e698e5842aa022e7f44da6b88370bdd1e087b1d 000000000000000cbb45fa57edd91c61d0c1c3590a9eccef11a6873b9438193a +251700 0000000000000048147b96b5ca45c9e4195d82b68135c80a409f7ce0d18e0f3b 13035d79ef516fab970cf653fa2289e33ceaaab5a2fb3573a4bc393f95906e2e 0000000000000007f616eede683462779b139ba2a0b156059c36e8c45b3e0d58 +251800 000000000000000e8a0fdf291db6957ed869f810b3f40c98c98249896b0156ee 41be64ba2f5a8614d66dc3570dd2a87dc10e1765f5865e717c246a9bef42e566 000000000000005f78df846c3ffb1ba6257d033711f1bf82d3cba54378171464 +251900 0000000000000009b62c31a6bd7213f3b8bc1ab806889894637b76cec56685ca 7561ab39bf831c8b59d03b1e97ae4a64976e7eb1fb7dac1e1b1f42c12fbe4286 000000000000000330f54543eeeb3751976b17620725133f3ec49b11eaabd5ca +252000 00000000000000200e99940b296ded4ce16462bba1950453b29abf313ba7cc47 c36e638013c1bd1b90b5babc5d8fc211f4f6f2f21c0ccadd2a36d7fd79a5d234 000000000000001ce1ddfafb3d2d71c7be37dc51a069f6fd3835ed5d0bd3cc3c +252100 0000000000000017f3f939a22de6877dafcd29fbe430b83f81fb38d78616db90 6bb21a3075b0c2dc92c4a177d44a7388c90a36483f2f5d011787b5d22cf24f8c 0000000000000021b950409227ede965e737942ad44ef81170701abc8c2fb842 +252200 000000000000002aff04919981f8f37604e1a428444217934dfcf66ed6fc9b87 2ca786330df0e68ce1d17aaed7e6e33e1b2db322c7a87e1b8696114bef227423 000000000000004e60a5ff9d6f1f26816a1a20e1c84cea6cd77308c2073af5e0 +252300 000000000000004ad0ca93a213f76db1b6eee6241e8fddccd083d4846af950a7 7e802a807a2a709c4917a7da7ed577d5242318d2070650ab9f8c788c5c78c005 00000000000000279a6268e4832f7af4935959c61f1566c6963ba367bf21f730 +252400 000000000000000a08ab33c658a4d33791257b56eb7d6920cfd84c740567bd1e ec6f193ff1c389c4136a7a7353a40fc50f89378deecb3b937325a35116cf1e5e 00000000000000447f092e2042801a17824f74b3db57dc89d05be065cef5ddca +252500 000000000000005210597e8065e4aba9afe08af63df2864496d3bb51d69d0438 aedc247fbd670a7943948274f40f5a525cd2f8949ccdac296621a93238a6b6dc 000000000000004ab47b23a778089c5ee8cd9fd519fd4c61d7d70af4a12cbfff +252600 000000000000002edf8874b652786209931f5a07bf905f7d23246b609dde0220 69e9547a085083e02a776f20ec332d100377ac85762d2e1eba63b1aa1d01620e 0000000000000008bb27b0327b88ae0396b41260e9f8a786929b4dd5240cba11 +252700 000000000000003d67278de4fbc320ff1c7a98a5f7301468ca36579194cbf982 8765447d9e3c5fd46d2775c9db8680ef5317338440d64cec9fe048bc14a56ae5 0000000000000038ab51edf6202b61309ea828888091f08a47b55269a2e8e4f7 +252800 000000000000002e649b8d0dc8d3ce18d6724165ff53827769f46219e139a940 5a9786ea3ea136bc9f64b8bdfe58cf4cb68b551ae6d279710d8b0fb02ab3b8dd 0000000000000002a27be1ebecb4f5198065a738b62a61f78024a49ba734a06e +252900 000000000000003934fc2b9fe700b875f8ee3b92945089c6f3f163e72688a8fc dbc220d9585b2739f983e0a47b79e6a56bb0ad6e76fa08256cde9fa0199847b9 00000000000000359be96844f338dd0f0149ae6049233572cc1cce7e60a3eb2c +253000 0000000000000036fdfbf3886d1b1a1b08f5abbb5f2ca4ec6b2aff2a218b8c38 90b083862c42817cefda3d446a9378bcca9a40fe9e1b7e1640b6f8128ea7bc61 000000000000001b3d86bb1c7cc08e5a12e6912072b2bd31ec163fbb828f0a93 +253100 0000000000000012869a87d194fe00e98421c3e46ef4cb8a4acf0467a3b418d8 bbd03d3d8e5c993dc37986ee67797afacce551f4cae654755ef3e15f370261a1 0000000000000011417673f989aa97b9606b04431fca1ec81c5d702987d1c606 +253200 000000000000001e773fbcf671689895abdca9430c27925120feaab9c7471e24 7af52418c3aaf4547c30fb8ac900c9fb33dce2c3a464d53ce59d3479116cd724 0000000000000016047e2ac3881a3cde69309e15ad358d52e29fcaeeae2c00c9 +253300 000000000000003f56c9f58946d3fd0fdd50a03ee09a179d0f2454759987475a 09eeb98c94f7e8b83b9d63eb7db97a9d84332d05a3921a515005e916fd762757 000000000000005094c6d6af73935a7cc57f8bc8a71aad2bc78e906851726c56 +253400 00000000000000008ec703208e9c95f79ff65b798789c4b007c3b6aedbfeca68 1330d9e7d7af3cb2737d2c437202573c98aae8012ca8df982e8708ae4e9be96b 000000000000002df3a1f24f860b3ba8520cae82f40bef6ed3b10417776f775c +253500 000000000000001df0e70c0e6ee3a5fd132cbafcbd429191c230ece13f62182e c627fdf1579a9b70509d6096ccd10f602cd8e8977e8068aa808fd4b562fb9cad 0000000000000001607148cb16d4c82c0cf58c388e5b4765c426e8f5f4b184b7 +253600 00000000000000140f99db7a55255d479c252bdd90951e4d71da4dc0718f81dc 4ff8a3cfe3fb9f0aa4828b9e742ea44532a4c3dd82c6b80f76d3911e0f249fd4 000000000000000bb3450bd2245e507e3a534cabcdb2016c09bcad0bba3621f5 +253700 0000000000000005895ab1abc5fba1beb93709b6b6d9b85133febe9debdd1cdb 06df35db9637a173210f52673fecf11eb1fbcbcb4fc3da1c7a97d2689b3bf5db 0000000000000038f405155cb9b500b58a61b5ff87f2a55b5a6795fc9e2c5310 +253800 000000000000005407d514543d703a67516104737c8157ef5720c394e9bc3349 f18e0870bfc4a68cf1b3a7c2bb444ec9ede6ddd0c7dbe74c50dc6f1044d311f5 0000000000000002cd9b4acbb5fed8d5aa9520d699f86f0e789a10e1aea73663 +253900 000000000000003745ba555dae9fe24f2109d504bff505aeadfa482caa74fd4e a47de8a488292e2d51eeff1fbe1c32ab4a19cdbe461cb1b4d9b45c99b96913ea 00000000000000199f0f429bd7f049a8048b5103ea91086f05baf859a155002d +254000 000000000000004753be91559a2c74c6cb8a5d2be6db1df2ca0b2385697e53ff 938326ce0f1be84afb3263d60b338bd31441737611f91f66c1881d96f8bd04d1 00000000000000305aaf9a4a98b6762204fba13dae98142875ff7557a51cb176 +254100 000000000000001f2c25e7c8bae86c349586b15121f0fe56d29deef5eb4bcef7 39ea4f63c21488cabfbd0d866baa6f13d4c5b975f86371abc6f2189ec0b2a222 000000000000002404be939bdef81ede1bc0dbfd26eb92ecd67540c7b7ecce05 +254200 0000000000000019a8b0869cd6ae48cbd6a00a21e8cbaed08781a2db5eed50d1 333b8266db53ec23447e15adaa529a29a891f49bc928e88e5ee02425db86fc70 000000000000002314f9d91de12d8712ccba57ba80c7fc77fe89188d806f00ba +254300 0000000000000008aa752010478056c56efacb7df597b31aef6a960afca384f7 96f9c99018efc1770c327570c1dfc7cc9da9a4ed031b7560344434c1c25c400b 00000000000000346bd0b5f2046736696e8ffe69582ab0269836a49833522151 +254400 00000000000000142ed84dc5f3781db8d7769932fddae21c3297f3f00061a5ae 9e863810b2d8c96776e409a734c49d06660fa1addfec80100db2ddec7c8ef1d6 000000000000003b667dba8ad699192ef950f17c32dcfc99c2cd753646f56636 +254500 000000000000002743fb1383cdd80c26a88a72cf50ead9ab19791afc7b8753c7 e0e6ba757ddf18cf283e002232a74a7e9f1e0e132e87b8b28dea854b8e476a7b 000000000000002d2989a94754806dc20df373f96752a6dc4e6b35d7d953fb43 +254600 0000000000000011f3d4f89ff269d0b3cdcbfed50ecec13a100de9306490f61c 0e5216810de390f2a6bb1bd10a646cda0f563485c057d28bbbb0243f3e5c4f21 000000000000003f02df4613baf52861e30725f381c4b6f391da98568d618d93 +254700 000000000000001bc96da41b78d9e8389e8979fe2b2f5eda832db9c3cd20f126 fed5826f7a99f63b8b9fcf1ba2acf7e519665147efac0bbeaac4185f411e6cff 0000000000000007d34fad315d6507612987f711a6775d4ec25b83beaf72fcaa +254800 0000000000000022a4090dc1691e84286110bb7656322946fa3d810cba11dbf7 f82a866f64ad2e93cdb5298d28e50bf7305037a01f10883783fe374f06b93fe5 0000000000000001204a4c075f3359eb8359aec4ed31c0f175d091e8527d2a09 +254900 000000000000002040853a37640517e93912095a9fa1e7f277398e294ad0bfed 5a9ccd807364c6ce04abb0928c708e930438f7c7f4ea0368c9757de8b1fad38b 000000000000003a11ac8e45f91deb78469b641eee66bbe5ef370fc64a731453 +255000 000000000000002c4fe8e6977739aaa04694ba5383fbcd730d36fd5b9a83afb7 4976f840a80ba92810d3d43071e75efe839251f03e5b02a8d25d178a66da475d 000000000000000cdb6a85e112f47b0fef0c7dfd3d70ebfa590daccd5071b42d +255100 000000000000000a5cb56ac062acd1bae6bc66ef25bb65a6a95180ed320a2fa0 5566163774abac089827fa3e7693e02ee5cf58580ea02babe7936d4fee7fbc9d 0000000000000007e0a539acfe4581f6894af110bca1b4a75ab95b2f00ebfa07 +255200 000000000000003fe0f9f8cc49a8c93b0fb17b4e052fa638b034a040c5f71235 251435e86174c351b16f34470f4a43fb28e1bcc9274b3a73894ac891a7d2f24d 00000000000000007c16ec68be74e6c108980de75b2bf1a581f2012e7bc0382a +255300 000000000000002c6f8729d7dac319f331308c90fd1ab32ba54a7cbc082f756a 18e6b1627f310f56682964601e64db47edb0d074254eed99dd8e764e15d18282 000000000000003a324041eae700844bfb6cf2f163a764730c56c0ade01c2706 +255400 0000000000000029ee2e58fe4c414cc653209c133c4420ff8813f18d69ec66e2 2c114393d550820e8216c85d20a24d6b051e460d42e5f128db9e8e982eaef088 000000000000003957914308ea6a6a6b285ac29d6a24e6b5872b7c5215b92f24 +255500 000000000000002e05037b624caabaf38732cb09f8019b5d637180dc54e3205f 45f5175b17ab74925d4f149ab70a7f7d630d51ad4b1658a2c3ab2efef78f0ecc 000000000000001444038873bb6f51dab3a9035eca5000a4acbbb2eec061b609 +255600 000000000000001a9b0a05d08d9f66200fe4155f2752772ccdc13459ea620ab9 4b6a34eae8d429decea6f676e33379f219d178ccad22ca7156509e688d5f249a 000000000000003c49d411eb1a48bb739a422606711b97c7a7a12a73f1c8daf6 +255700 0000000000000033efbb695d8daf36356a4400c46f9d24d417208e2ad2c39c95 09d40aa56ebf2703936ca2f3749aafe85571adeaa48106c2edeba7c5557b39fd 000000000000003803e636efc083471ff7ec28c691f05dc359fa94613fc7b0e8 +255800 0000000000000020cbcc7554e38315e6b2bfd5f2f2a73bdc3d460451438854a0 3fba92a072b85e6e13b1812290196c74929131459a80cfc58b4cf9000d994d3c 000000000000002b5f8064683eec4643c31206ccea90ce761252a35e6086c230 +255900 00000000000000369a43ab431f6b5c05695ab79efe40d8df8e8c43c30caada8f c22ff706fb14aff9dff87c368861a39abdcb04a1ff8794488babaa2ca852a1e8 00000000000000175c48c6531cef5cabe9509f28a03e9c54608094854cd8a8ae +256000 00000000000000252b217c0ce5c4d96b825b90dacbe8e4dcf5f6a8ba6749f3c2 101fc746a9121f7c1039d1f949aa39bcb6676eccbdc5702bc93fec66092b5b23 000000000000002ab7b60009c3d6a4bfad05ad27e27fb0aea72fb9a3bd3ab9d2 +256100 000000000000001b34758fb7955da4fbbb2e4eac9e7ea4255a7bc7a6a6423987 448575fb7af161f3095d302c32a0e7c68629137bc8f3fe9ce0b543bc835ff07b 000000000000001d8aa1baa4fd121a61ba7145f6690e1958ad34452e0e0360a3 +256200 00000000000000032827a1b515a31d40f49998db3aa450456a4d8a843c59d8da 9420c5f59cfadd4e74ea0ac6fda4eebc6bcf50c2cff929c5b79e1f58f55a771f 000000000000000e223e2dcd8dee9655f1fe6f5a133077ebfe4834c61c113e8c +256300 000000000000001b0326c319e92c6b9da767ef4afd124363307a6da3d902fa0a 2aa0a90ba36036a6e58098ebf47635a379d0d4f8ba9796fe5201970d86bae6c0 00000000000000119a3ce9b6ba7951f3d377b3218bb1be68e48434b5f8a5a9d5 +256400 0000000000000027d9d3d793707da3fd684af4c0e595c1a981c7671b06dfcd45 1fd667e4a582b3f67a1eebbe30785276e16e19fbac7a62f1770f22f7bbdcd2fd 00000000000000166163372cd3058ef59a3f2e9fce51d0d2995f5b38cddcfb82 +256500 00000000000000079629c8da630eb5c5c7cdf243f4ae1296f4b67ac952d4b9d8 f54554923b0ea778cc96ba4d2c72aa433d3d789f9065259e3d80e4318e4b113d 0000000000000005a90dd534b15a0a175d151bc388d0f1f3f530c1842a6b6021 +256600 000000000000000772fcd2ea8400307edba9061abfa8e9833e0337b00186c1ba b27fc9b1b176bf5795d63cc7209d03b768f1953b68c918d1911a1b7e16331ecb 000000000000000c0087f78b39500a5b420751ff1398ec33e664768ce6d2bb3b +256700 000000000000001191ac5247f603da619a2dd8302d59c91c5a4ceb3d30b6843c de7cce0b1870fcf58d9a4ddeb192ea3ee0c93eec7b4e81108dfab05da77779ec 00000000000000287f723d6add20753a007c10440bb4323159f34961da0f7c40 +256800 000000000000000a4d7e1976840b58fd4c7ef857d21ea355e8af3b84a61e56aa e89003fe9f5376e2898136489d9967ceffa849c424c828464c335f43825f20ce 0000000000000006f72fd6d7f2e75293d07a587fbfa6b45bb8c431dfc83ab800 +256900 000000000000000885535a9127619ea5fe2c93471fa965600a9ec7dc57e357df fad2d58de94b1e9bc1b250850f1a9dee69ebf3b2768ef8aa8bdd47f2cbf690d8 0000000000000020c8fb26a2ce0df61b30759763b05ab240583d31aa50d41923 +257000 0000000000000009e6e35821509617f787a8c154a67b1f2f2f8f5ad8e85f65b0 b4c8d9a3ac3b5fef43763aade2253857e0d8bb0f8c209eb0172cbfc88b01e3e7 000000000000001f63128296d97334405cb5eafc4f5c86080000828cc47dde6a +257100 0000000000000007602833ce938a814ecb998c229a0d7bdfab11bebe0a494086 bcd96a12a909c7c496af266e33d147f326e7f4261be864d7bee51c6ebe6b4630 00000000000000057b394fb7abb55ff7b3ef1e61f134516c490e622d26f4a5fe +257200 00000000000000035a74942a302d07f322ea7ae0991dda217562c9f757230b32 514b56f5cad3196b7e2264624f5f365d6953f0cffc43dddbb238b09af13762fb 000000000000002406263539d505fbd23d8bfaa02efcb0fa9cf0e62ddab35d64 +257300 0000000000000004fc4db38cbbb5157b5872a1d364e01242a6518e4c3d43041d 3429defc121c895fc6984cbe5441a3f5b5b192c833728a5626b7ff16f8101904 000000000000002da8fe96537e4de2b05427317f6ef3d04772d82793929cc1cc +257400 00000000000000068b71e9c39973d9ac2b0e07f4f41b7d505bf0d783e132e39b 5d93cec9790e4614d5d18e04327f237c801037164257327ba8e543f6dd296366 000000000000001a0d781c58be599abdf74b1b164b66658fbf085101b5fbe8d1 +257500 000000000000000e433cb15319913760d427153bbeb15bb99b169ace48389ece ad78ce68c5d6d4a92a7bc8627ae1a173547165a2abd27067d480d656e30232d2 0000000000000001108d121eec0c1f35f43b877afe224b4d3456dc69e11dd3d4 +257600 000000000000001a0026fe74c794c42cab01b0cbc8727b79e84e3130ed9c4ad9 ba6ba5c9f087bbf2a9074837d0fb3c2c1a0db333152d31744acc7da6fba44198 000000000000001d92863625fe49d77492d66f7a5c1d132c2bfcc366d6ac67d8 +257700 000000000000001cd4031e153281c922faab51f17a3ded9426f82887fae93f3a aa629073cb1ce0bbb1be3c4f15708c9d73959894b4d25b6ab2ca1ca1aa88158c 0000000000000023b62398e23d4d704b1451c0117474b36108b98017df37b502 +257800 000000000000001f063ad177ed280a015146dfc4ca1628ee754814bd9b67eefb c1bb7da62baa0dfb5be11978f25fac92d3965ed86b025ae764943e0d053ff2c1 0000000000000010722bca59d384bf67db79436918cad11b5b8be13139671a09 +257900 00000000000000248bf8b480198db101a397a095fe6fd691a1b52e167ce4422d 765ef46144570179836a84a996e152591b26f840204b95ba30ab8bf20f4d54e9 00000000000000283399b50d0958a8f349a621c0e6cd80af8e874a516526e5d6 +258000 00000000000000159f682a983465761f471dd24300746efe8db5642411f1b631 2dfd4d4e1f2da1cb15d6eb1ad6d3acbb2ddb3e1d037e07d797edaa16434b9c67 000000000000001b86532884bb74b3d170f05aa29367aebff48e139d561e2c35 +258100 0000000000000025a24e33cbd65a64c04f162c0e5bfb2575a628bded28e3aa2d ce0e995544b06ae05cbf95cbcdea4884674e45cd94cef79cd555c729e1af0ede 000000000000000f20b60277dc9e3cc2aab16d5b27b5ecb930aceec0ca5b2f36 +258200 0000000000000021ee1c1231c6cf927595a3b04f24bc86e22a6764f016240118 1770454659c5fe29029f0e021c9e927c078ead56b4cb80199d31d68a01daa30b 000000000000001438440e498a7702fa0e2965c3995801ec6489a3f7083452da +258300 000000000000001876d8c4d7e032b4ab5be3512d82ca1d13f933c34fb1706901 159e4e137f4e57a8e7d2fda3e172cd033017e9a8ea614d2ed0e8793a4a18f039 0000000000000009185ec79bd2871a19f3c238d8ed325ed8d4a560176ba9536f +258400 000000000000000f942c5b1c153216adc963202e783fa5f3a4171680ac8505d9 d22992aa0ddc8563fbff6ca1ee3dc4747ed9e4e1aa5bd1a2c4c7436c2881ed2e 00000000000000118a9951dceffeeeab790cab5fb066bbf319117e9382271318 +258500 000000000000000895d2eb920c51a46859295dd7d7be96c8e619c0e15ec6dc48 ba6eac8f6b08e1543e72002b10cbf9bd84e967da2b506c8b47d29efac1335c8c 0000000000000014fe66d33068f6e5bc19107886a73a99bd80684a6f1d81ecf6 +258600 0000000000000023d59e048277c9338c0497f30320fc38c3e43cea5850a89914 b804e5a6d11cb80ca7fab305ddfc7166084c7077339c85536baf56640bb69373 000000000000000a062f671e97641ec78a506416fde89ee0436982a98825d670 +258700 0000000000000006d597ebed323b04840ab001d9167ecab6e67cf1e080943acf 4e90f6d183f7b32c3a1fab71ff5b419ddec4d763e6e5e07d4b76d9705ed4a252 000000000000001fa83e973a059d65cdf77ad2fa511b16136cff630b627f9b0c +258800 000000000000000e8c226aae1af1cf0e8dc15a7d3f169c44cd1bcff3b68f3fcd ef5cc8cdef69526d01ce784a52ce718d82eeabcf7271833d45eeaaac09239984 000000000000001aef1c642c2246fab5a858d5c1353756662171cd4983873030 +258900 0000000000000013d9bd1ca522aa1ab5ec4db22d682d76d00d0f545d7c55527f 36f577f651c2f0f40cfdae14a8e4d7f1b3d85a4c95b4144c97caba3b5e37121b 0000000000000001448dfc9dc6eabf3be63a0622a85e9131f99f39ea359c9b73 +259000 00000000000000169684a5a1760023e1c7481373f3488c3c21793ed4fb3b6682 8021bf80a816b825db0cee5e2820b5e100b11a576c1b590e29492de4f496587f 000000000000001dbaadb858f4f69c326c2ccb7fb6e570914d2744bce424a52a +259100 0000000000000012029f15693dbf5f7595fd8a426a59b9d93906ac2281e15480 ac892e9565ad34ffba19f65726d61d6a70cad9f1136e7cd698413e5b5123c19f 00000000000000226f639d1b9ec2fc11fb224140dc88a4b416e6fd2f3c878ccd +259200 000000000000001a87a1b4e6e55f7e3225e6a98ff33d3543a8733ee8f0ff9145 85f2710c6d00ef868ae86088fe4242565d82d904cb761e08ea3a52b2bd2264c0 000000000000002219b531db81229c078010c5fb80970fc8b0729bf97c7f6901 +259300 000000000000001ec629c44f38dbb94e3092588fc727b8c39d4742e2caa4966a 1b01613706a885ae0313a62241c9eda5b65aa8eb00a51e519f57fe1a019be18a 000000000000001c388275514031c82570ba07a59e981a465c3ad713906dba1d +259400 0000000000000004ba6c7c70093aa5920390e7f355c47da509e89fa1c74d2a2f e07d866ae74ae3eda43821fcf445f40fc4d121e9e08fd93dfd080eb64adb6841 00000000000000022576d2bebd98b79df389e437a4feb316165176fb3f6ae3d3 +259500 0000000000000025d039e50dcaaff30dcb6c1c566ae41a26a5bae1b4f7591bbb 1c5a1122cba9405455cfa2f79edb2635fd2cdc341cdd85fe7a2a1663c192753e 0000000000000019d73629c4ec5bc9faebd6cf611dd50c43817d8e7c6f304ece +259600 000000000000000fd694c194b473a704c6c1c2586ba67a165e9f6257814b7987 de8d0caaa9f61210aff4f744f96e0a96cf737ec747d170ad960b37281cc14a3d 000000000000001106d3e90a3bf222ecb2d93364f846428687f98fc41bcaa872 +259700 0000000000000003e9cc3a17f18b95f32ab581164ab68c7772428c11f4aff4e8 dd95337521e217d55ea52358abb7baacbeab94f98a778236e94bb321c55e79d7 000000000000001a6a8ce718d54c3aa9b737ad73283caa5960ed32aad00d1f20 +259800 000000000000001184992d10d089623af93e08ce9d7c0478e7b1045a8ec7ba7a 6902768d3e986b3c7fc3336eeb3ee43f6cf34e193bd5654ac45afe9a0b288ae0 000000000000001476861d564af4f957888b77e016e270f634bd1de682a87177 +259900 0000000000000003d65bd7d7bd495097242f26c8b51cc1eae0b7d74bc8722b78 8cc68865a66feabdfe5e14d888f2b00dbead5a106e7959178b6b71047ba5d2ce 000000000000000a228dbdb3ed7ed17aac19f1475e62dd014f77d441d683d1dc +260000 000000000000001fb91fbcebaaba0e2d926f04908d798a8b598c3bd962951080 e2b64c35262d2db92221b84db411bb2230ea821c3b514338f718ded10db88632 0000000000000006bda8a9646243754929a49cbe92a1312ad9623468cf99b9f3 +260100 000000000000001aca38a0240d45e52f00fdd9fe67ce83f47c5435f87dcdd7a7 a22f74a7747626b14f832a8bc4748c985615a1278ce318fa02884c572d979d21 000000000000001a684d5809d6ae0106ddb7cd48071aa72d1c5a0f4562693540 +260200 00000000000000165a5c277a2b21af523c8b610e94769ad088949ba479c313b3 6d3e08066e07a292b507a45b0098c451bc0752e8c50741395a6828bcd3a0fad9 0000000000000001445597e0770973acedc063c2ce401cbd08eddf6b945cc580 +260300 000000000000001147d2d9bb011c0464e3a5d7a3dcbeb037105d0d6970f2788b b7bf555b98ff3b5e66ee516dc2198222d4a201fb766014f749df0894340ce492 00000000000000134cdafcec53855526f65e80254721498504f74e0ea34f0486 +260400 000000000000001b0c774b5173ca9bbef60b809768db89cc2574742ebfe7cb3c 9160c60d0f49950af853ea71f06267f40f76d1b06b053dc5d91931837b6f2b30 0000000000000003ccb10c778c01189b7dac5816fe2f448b3b58187b298cfff3 +260500 000000000000000783586596920c351f3fef30dc8793c0e33f99ed23c1014d74 ab18d2c3b39c938c6d0a223053bd5164a615fdda69210c354719b1d69be449d6 0000000000000006c12c03b7b5d3e6dda75b60d092d06151e07338355df64e48 +260600 000000000000001b28d9d794c965e75c0f0cdb4f842e6d7726f5b27644ce0fbd 598998ab85a9b85b8f1de7a6aa48230290dbd583a886fed2207a848c06f43a2c 0000000000000000d55563f0a115c6295f2f7678ddb9322f3edbd71d4b4638a0 +260700 000000000000000343dd31f25a182e14a4b13c15c6c005d24ff3f03a61590794 766cbf778c0b16620fabadb3ae5252d1fc1eb86beb22d2c6ea622423f90f2ed2 0000000000000012f5f1b7f2a75c0949ffb13bbd3dc74c9cb864c46b71d8c4d4 +260800 000000000000001495f806b8735dd8970dbfaa41464e9f28d710f36ef7adccdd 8a0c13882732eef8a6a9c2115197291a598328b2b1513f1709c0c89088404aaa 00000000000000057df55508ed884df487f546fd113862c2dcdcc2435cce6be5 +260900 00000000000000145da4b28a32785d6a3fcdfe748e0b1df613109c7c40f24ef8 702cb981efe014fa5f0c85b39bf1d01aedbc5b53353053ea3f2e62257e10a54b 0000000000000004d770278dfea0e39b58267b6c6df57c328c98a538c5a1ff42 +261000 0000000000000004752a2cd32b73e7aa15d5e975eaa3d1cad6ae5dbf43080beb baf549b435af92e7afb1dd0fb75cf6f4c64968e8513360f2270ee2a4d3e21df9 0000000000000005513af2463d56c5c0b8d823eb5bd1da06dea8cb8891a4be0e +261100 00000000000000198b3001f927fe3b565a213c15408a18ebeaf025ee03c98d6c 4b5a48afe3d49f5c42e97372b410fc44cf7c273f52bb5cace1ce49281c49e15d 000000000000000971aa10d51396948d4c42e01a545e5693091f28f9e33da391 +261200 000000000000000821d96909105b0e38b787f1cdfc96b0ad74dc8ed72f77bf90 97ca0862ebcbff5c24533a356d2e23715955d57d2916b0b614ebce161e1297e6 00000000000000114018bf11c502c09057e3ed5e4b8e442bf92f71fa050248cb +261300 000000000000000b4992ba90cc116960932ab9d77ea9b6a7f36010475dabf4f0 b6ca2534c146b4582f02a14ca6b0e88ce317e68e24a07fbf22af0d97ab5832db 0000000000000016d0deaa3689f7591a0aae585893a4272c63dae5f40382b4e6 +261400 000000000000000039926d207c49a390264fe3a1014755cc94812e171e216c98 92c5d3927500ba70f39a032ae780cb048dfac25cc61f8c20b2a09cd01ffeb120 0000000000000016a741ba371cd574fc46c1433af53876ca473e13bd346a9c83 +261500 000000000000001681c5a82b0a0f6a8d74cb92a9a6b13b0bb7812a237c123907 4b127df4804192cc2810cbbeab5860008e3a507f0983d81e7b7e2617bce10612 00000000000000176c3e5d3284a9ad63a7284a54311c65eefe2275b0d81dfdbc +261600 000000000000000b153e03a272bef7759040f6d29addfaea964d950b29f0e8de b44e062265588911e3b49dbc6aecb689c34bc642db6b5c04d587afbf96a9bc06 000000000000001447492e740aeb2f3e1df3f9cb2934f3febd2e4d35188896fa +261700 0000000000000004a293f029f2ec05ad90fed7c68f34c8118c9ab2bd98302390 664a63204d8e6c8eb3d58078eca9ad23b4292368391f0c2c11ebc9571eb293bf 0000000000000013626cfc0c669271d6d5744722a8a9e99ce5ac692a897b732d +261800 000000000000000c815e1099554a7d4790664dbbbafa563b520a27b77d2e0096 56e695df572cd89153c8b61b2794c46e05d5ba86d703deb1b14a0f2cdbee273c 00000000000000010d4e4ef596c91ba10189e70abe93f6c47d06e85150804b01 +261900 00000000000000181fb20bed6eec89cc85d902e47a1efb0e4053df1ec5a16ff8 9f763fdd171e6a231e31b871973e25dfb036c219220537d00c34564b8ef452af 000000000000001a7d8c76f42ca3ee7969e485e242ef8973bf1dee41d94e3230 +262000 000000000000001002ac67e026c523c3779b1ff2e3b9e2b7bfa6022ee1afae2a 520c9a67b8a62f099c1b3d49f5b5ad244a7d9cc3d07529314f2a3a8efd8f66e8 00000000000000153388f79e68c8a5b974c6b73d0666ed6d75461af43c75aa81 +262100 0000000000000015b990829e7ea46a903f30fa66923d31c3216bd69e906f526b 7b9c85cf4f0f23d9b0aa95be6b5510025390fbe9c558c65958c32c3bc14f9dff 00000000000000065b35cdfac40e1a11f22fe510ea628c9c732da7987c1f8a32 +262200 000000000000000429b41758ac07b2fc97fb0c7847dadf56573f9fbda5b84312 fbf625daa0934dbb7589a322e3f9d81ed54170800443045bb2edf87e74d62be1 00000000000000116fcfdcc900ca8d80ac4eee361fa72bc6d7b869f705b0e108 +262300 0000000000000014975f1c69c35aef692db1fee6639803fbecb5a7a270dd050d dbb3023edfc123ecaeb438a2eef497a05dc4969f936667e9fc4f93782c934a80 000000000000001390187a91fcdbfaf443003889c112ad5cdd2feb31f6ca02c5 +262400 00000000000000061e846f9adaa79f14f99a5168fb54ef514f1c7305cc9cc92f 8f9f6a39511c6f2fed41ce1dc8e10a2c95cef5684f77bec76eedeed427d1282c 0000000000000008863b7d608dc611ac5c6c40e6e9c1aeadf607da380334e7bf +262500 000000000000000873ae6f84e06c066e127c536dc124a5725464171ac48c5169 2714ca085ebc6e0aca16b4159dc8768067c1a184d16ecda4e8eab14d1f3d2bb8 00000000000000025314cb0738d0604107ae4baf9a90e02f84ee84e3c7948719 +262600 000000000000000adc23b77205c425c1e668f1d763bca8a8f02c22efd8542f75 09df263c984af5d7ee0916c3a7d00bb99be02ca4441e288149a0f02e89c6fc58 000000000000000f20a22c7111689f9683ea2c02ce87b5ad3d6374a783e52415 +262700 000000000000000b413bfa5eadbc905fb1f6bbdf2739f309042b6680419c1e10 d00a89a618d8e79a4bc61705e0a06fc3512dcd45e2a60bf10a5194afa61680d2 00000000000000070e5ecef15732abe3fa83df03b3449b3e6ed81b3f0e384c21 +262800 00000000000000073fdf2123800e5c1614ff8fe8f3137230153d2c1c947cbb9c 5b3c9761b9446f3f012136eea1d81947e9648ffc9494c546062c9921411436e3 00000000000000166df614e384ddb40ae8dc3eb2c19c7dd3be6258e76aa49dea +262900 000000000000000cf4cc7ce14f818dd6eb7a7cb144528ee144cfa2e4a3a145fa fafe063bb63c5227cd6ba299db930f016c2c1120b4eb314f6c659e66c06b8b53 00000000000000167de1b731abad4eab1869e6fbde68479b26773c20cc5640a7 +263000 000000000000000aa569b284565f2d48d8bb99705baa06c7fea6a1bbe8dd1165 a7dd4577f2f6a54b5c22d0efed1ad42c830799c099311a7010550ae4b25b58da 000000000000000330196833a32e310593e566a33554f9159539fb48e33da0fa +263100 0000000000000011d4967ded0a0705e20d4e676b0a07f66f5b4bd6ff3779510b 10e2699e406cbe7aa7c22f771f168ead6bc89fc0b38e105f8780155daddbfc13 0000000000000009bd369ca7e9ff2d197f8f188ba8b4f0062741743e56bf14bb +263200 00000000000000114c855b36adff8675967fde9e4e37bf812ddb0bde1c35fa38 0f3254a413378934654d56cc1cd33e0cdaad60dcf3e0bd11be4fd68e2cbbb1dd 00000000000000013a9ccc3de71f6d4224100c3d1aa70405c638de98f00d972d +263300 0000000000000011138f56b4896eb528ff7551be3a507205a74c3f9a49022b02 869ce80d4ddc291ed6aca29249b04334b32b014d77e9c43e4740ec7bdac5bcfc 000000000000001557da1098314ee1caec3d7f60aed0213ee01efd1305300f9a +263400 00000000000000073f73f16cd017101fc1ee81f3ff6adfa24afba669243bf77b d00728f9c32b2ae8357ee674606418ba22f20756f05a35a48978e466e756334d 0000000000000013be453bc5a39dc7ef2c6af4d5ccb210412ddecd0ad35d4558 +263500 0000000000000008428e1bac61d5d50273f0d8c9382713e1d0d304cc0208e6b7 670b35d7025b8935335a4cb403d73fa9819d7a980c1fbf065f6a322c5bea1abb 0000000000000009a520e5c6c1bb6b71ad5ae9021a8b3e62e9cc6d3b7e19fd81 +263600 00000000000000034eff6e5c432d958ee8130cffd20d65ba7613170ffa0fbc5e 4fa3baf078c79df50abe8c517eaf549c556cdfa487f5a9168e5dcbfed664bb46 0000000000000011e14679336a7e47befe38a520f16d466e12d3f494c25ab00b +263700 0000000000000002e13dfcc9150e3a72df6040aafc19bc0ed98da3622dccca60 fe1cbaa80e26c2b48990343fc905d6b944252d37ddb96590d4baacc67f162174 000000000000000587e0cdbc7fda5b7be96894ae85166b23cec3a7934fe0a58c +263800 0000000000000009f5c004cbe7807ed4f5a77d73ca37fa82a90d3e73b8215975 c2dd9a73011d42e4a13a54d6b5ada344b5f9545c6bc14aa397e668783b845120 000000000000000c22096af452417c02145b091de82803fffac614d43bb17e3c +263900 000000000000000cf2c364ad8cd0012088eefc6ea7d5143f21d72b58e96f79dc 1e295f4087acffed86f8ad62eed7f41a5bdec6d9de58cf3223c822ccfc10f127 000000000000000e85867daaa304465ef0cb1ddb1074d2d962e5fbe3bfea7bb7 +264000 000000000000000d05c31485c532503939ca0b88d7e322dff79900ee6cdd5ed4 e337d1c22fbe130173961aa707406e3c94823ea80f2de8ec496e614dc95e7d3f 0000000000000007f58dd8567278c80bb9f964c293f02589e83dfceb8775fa60 +264100 000000000000000feac02c3025f2164e1ffd3eb014ca2cd636509da79512883f d49e4b2992d2cfb15aa962c7e294191a8192be4ebef07c5c3e70c9354fe56ce0 00000000000000081d277f7eafdbeaa2b254c7fd2f49676eecfdb413b95ecc5e +264200 0000000000000006e00f954c0e30a40e214528e4771cb1fa8180801ad56faf93 dd3e24243cd6ef1be34fb884d1dc6ae9de207ff3cec8a77ce32f8cf15c9c5631 00000000000000070d2d6d340c3099a1bb74b5c85d6536e2592db3c4cfcd2af0 +264300 000000000000000002f171ba88a159a6993d1c59c18337dd557ffb168e19987c 5f1db502fd3a05b3d4dd5385ea0cda277144258ddb25f88620d1266ceaeba708 000000000000000cee6c1ad3ddb30fc0f2ccd2f055f0a77ccacaed14af13b96c +264400 000000000000000c15cd5083f8f29234cc6c3d8f0eff5e9dd2fa454bab3c813f 74db4758ae17e589406ba4864df995f15855c98ac40f8d1512c5f745f14fdbd0 000000000000000926e976ffa4911ff3ab7f993effc420d54d80b6c4cad922c1 +264500 00000000000000052e1a96ad2948dcd4722fa5742f7aae08d65dd896726f67f2 2db67226c42b744ee5bae2189bb088a05e7dcf6e97fe70fcff45e1d9b3f829f0 000000000000000e5f6fe056452f03436b50318c36e2896801d64521f03dc549 +264600 00000000000000001fdf8ae68c66b01ce3cb66c3214e463360269806a1699da7 509c6c52bcf4debfb6986af5c91137ea6cd4488cf351294724ab971bb704b318 0000000000000008ec7bf31c650d8a9935286aa6679892bebaba6cc7adc85ee5 +264700 00000000000000037f7bc1817d53fdb62dae08fb9bbff40fbce136462c729570 b6a72c62b8fff89265f9877c4b0d42d5ad1e3eaf725b770dd991ca08f8a52be8 00000000000000092bb6528984530600ffd52eb75477d0ec37322ced8587db68 +264800 000000000000000f82fbd3e02b19e5db9f8b9e9603753d9745e248dfe520fa63 0feaf9b0d310fd7066c76b53bdd5ded148f375a160f3f35bb63fe26bee30bf87 000000000000000e49da9a5e245b8b5a83ff797ef92a38e82cf912969375ab36 +264900 000000000000000649c089f9e83b66d2e46f9a7e7ba2fe61ee9d4699a5890ad6 cdd2be327a4bc169130bdb64415652202be12e1cac20127c8dc0904d9f891ac3 000000000000000d1a44f9de3cadb53e39cfc54edf8d6a23aa3a6a5ec969273c +265000 0000000000000000a34b172ea52ed3c4910f5356c0e0724c48b585135794470b 3954cfdcb81cb9b45d0fdba692e82c4ccf1b029230e9d1ead12a74b9d8791c9c 000000000000000a21ebbf8c7927a4a8ae614f136064a0e1a9bf34340191866e +265100 000000000000000dddbcccf0616d8f4dafe4042567bc3715a05187241d4bb8c4 34e26b3750ec6d2f10a1ce8461163ebd23558b72e67a9065fcc24ac9653f69d9 0000000000000005fdfb81f69caf9fe25f75a0b936ef0e3aca3c04d22fb51ca3 +265200 0000000000000006d9513ff28fd5d79d9d4d07fd47200ee6e1bb8c6f62c93219 964c82504258ab4d0d77398e66032449908c1cfa4dbbf7c9900c025890ec68a5 000000000000000c28e4ec7fde7391621907556f3f4214b9506d8bf82d074186 +265300 000000000000000f3f5e9a640aa7b0dc597b750dd212211dec436a5c754636a3 1102d874dab2e327028cb9d6aac7723decc6437b9e36a0445dcf5c21480922b4 000000000000000a65c905db47da0da3521c8a222d81d7d60953569fe328ab49 +265400 000000000000000eadd47fc2cb84a7f9ad966ad3097c4a7fbe52149a6e1c1f9f c9ed8013f1b90204984600ab4f56f6884fcf17e64b2253bc7a9a8c3d3ea425ff 000000000000000b4c122595ee01dbaef1b4675cdbef1b74c11cda0c97de5c4b +265500 000000000000000be5473562d0da2f4272bab0ce3ede36e1a10f9b7556b3a652 9e85a4379c34e4be58978f45f892072b542dfa52c7d2c68db7468bad7acd8571 00000000000000032f43aa448c23bacc7cce5f1534cc33bc41141df8d34ef70a +265600 000000000000000c02b3283ff1f55a1628051c66982151e3563fc55111c512e8 fd8dcee083be1e73e52f7cdc914327ebb5669dfddfc52008b746dbd16f1c21af 00000000000000025f78ff66dfdc684aefa79c2d324dc9927ed4acd97995173b +265700 000000000000000ccc03f4916d8ca5f5b0c5b5b5f7a0ff43d7617949bb4ee9ca 274c944799c3b732fbb0494dd0412bebe3133ec4cb9cf82c777c8fab9434bb1f 000000000000000d315808d4c2b9a3962fbf177a106443738439fff5432ab326 +265800 000000000000000a7d29b9a32977ca9b9788faa03b87e872f7a1f4d9583e47d2 c6729dd4e50ac7ee1c9d8b53f64ba5a841413a9737b48c624b6829a2d22214ac 000000000000000eeb9528c57a40500271f93aa3629c52e55e82ea395a8ee8e2 +265900 000000000000000ac7a97b0d072b106b7334aec2aae5263d070989df5ba34344 355927da896d5890c046f835161a8a0657cf998e81b310daf527311d0c603bf9 00000000000000033ed52dacc12000eafbeef759f9b165cb01ff764b8454c8b6 +266000 0000000000000009d755c65d58c7c1fde9167ba632a85574de3bb11c8a862e35 c7bd2a5c738055fdb69cd3ba7c116d4d9f3a60ec2fa86ad2fe5808a96e33cd00 000000000000000c29b5b02f59257025f48808779bca45a0f1414344fcf59807 +266100 0000000000000006b3de08ac7649d0ea71ebc831c6e8bfa15b847a0ffdd2ae06 c70ef96ab0de33f3e0842501919e7d29053f469996f8c6bb3bf725351f662b9b 000000000000000e3e203bf0538b1883c7424a970a3a4e0674737239dfb635b8 +266200 000000000000000654c8bacf0660c0ceab00cb4c86f65825086777af218a1896 473e3bbc3daa42b60908dfcf2e686ab4b9ca79b2c7110651970598516d76343b 00000000000000098ea71c63e56805c7c63ae540f9f593513921be33a61745ec +266300 00000000000000065d1e171c3a3a1815a5dfbf25fe9c60feebb6bd478f4ec702 c2fb3cc4928552e7bcb2dead63079ae1bc5b3ec076e833c9c47b759cac308a01 000000000000000675d95bd9391ba13332a3cc42674f28c78329fb2cbe37717a +266400 0000000000000008fae34fd47ad1df9b3ee6d861e67887c14cb8dde595c62c22 67fb18272e6ace91b80f8a059437691f45f5068a16f1659eee8ca1e2cb7c2cfe 00000000000000020b96f9ab4316efbb4ac6b9a0c71de4b573a449a8bb42845e +266500 0000000000000009c82914ce7c77faa0e11916d9b687fe0c752f37bfbfdec609 2837be4c425ac8b748009b577f5859854137ebb13ba947c50130b1890a36059b 0000000000000009e0938c9c20e4b2b19842f949228722453b8de6950825b386 +266600 0000000000000009a50926476103cae03510b35d2b431d2ba066e9310dc44b44 6d7da520cfc541390cb3b31161f46d93567bac61d8e262218782f0bc257d3fe7 00000000000000031bbe5f28f8c49f8a4dfbff44c0cf7cf0902537ed553326ae +266700 0000000000000004681548ffeaf5e0104d2ca193e580595fb5c84b30212985b5 868d21d11beedfed650bd572b600b33e6a1b832f4d510777723511992a117fed 000000000000000a253c48eaea29ae445ad8e67f0b41e488fd033fe7b41beafc +266800 000000000000000a2e3ea1236979ad90be7aba2d8e68cfe809c91216646fc547 4792bd72b2657565ced275249d240acb17969b40438fbf6fb2bd3c13c99eda07 0000000000000004b37334f0b93d8fd6f74c7324b65c8a1803891505b5a99b48 +266900 0000000000000008a931238dcef22a0fd4e8b4c2daf7b4bf8f7bbe4f452c6f4b 9579f76069627799e9c715641d13eec18de6a46951841b201a914e9f7f6ddb3a 00000000000000017774f7c6b62661bb2b693df8ddd7e011131118a524cd6dff +267000 0000000000000008e015f27b7bb1c624ccf3adab262878246dacd6de5050148d 5d7cdef78d1175e01a836882107e9913c420ee6628ace76028c2da28f383fd9b 00000000000000071e49cebfb22d82ba7bf543172289be28416fa449ead053d9 +267100 000000000000000a8afe3b83be84227d110a2cc11f316170ae8c4104974cedfb 79189c4bbb647cc46c7f21e30f7f6f89bd4fbf28439e77a78ae0e60dc6c68b9f 000000000000000563fb24a9667cd58ea007fa5b113007279f679d98f157d167 +267200 0000000000000006ed2fcd576bfbcfb7f295750d85ced86c680b3881964453f0 c850cb0003d9453a4e671708ab2d9fdec22cd282c5ee0632d8f3078a1ff9bc56 0000000000000004c678db93f0d8b4e95ef9b90359b01ea1a69d0375c9acd72f +267300 000000000000000a83fbd660e918f218bf37edd92b748ad940483c7c116179ac ae5cf48bc40f48a13283edff3aec739852385ef7fad14344bc822cc380ee36ba 00000000000000009b23ad20a246f2352bd0e3bcbc5c36fd8abcd12ece370aa6 +267400 0000000000000005d45dc418099a994585bcb621a546b14794ac7cda8c9f30aa b92e5b54b613d7a9c4c45f8d26b1a304ed1ca53cca21603c3007d11f923e1296 0000000000000005c537eb783ac95d9494f655ad45b5e40bb2a6b7628a514662 +267500 0000000000000006b56599e7f473e7d1fd5e63452bb8755bf26562131b91226b 11d5faaac268d04ebb0795436732f97002b9b52361c25071707cab2be590faca 00000000000000049054b918bbb70855c9574a81dc17c316b26328ea49aebb5b +267600 00000000000000042b8fd40a4969193944a0dbb63f8f3e64b46eaf085656b604 3aefb4ec0dec74243391d4b047fc3fe509fc58c8a189d6abd88d8567263b7ea7 0000000000000002c93c3056b06ad13380ecc4a1636f34ff1d501cef8c3e33e1 +267700 0000000000000006ce5a7d708b8343ddcf243250a002851c9b73e7db91460fe3 65ddf07c042f0a4aa5a701b658ebfadfabd308e47c31b92fd58659d210a32499 000000000000000256be2a057efc9431d0e7d009fb6dd0e15d20d769e2196e44 +267800 00000000000000047179712179b50dea5e6fb35c6ee6e071aa18b5b2c181529f 1e2cd555ad64c347a2a623a35e165fe5968f26708f1bf6669d2412b1c0cdeeaf 00000000000000011900f0d9814b2a0c31ae218af17fbb8f79dbec17ddc1ce55 +267900 0000000000000005562bc209bf1d3775dda485e11312e92d864e31153b720d1a 2b0fc94f597db8b8dda4effebe1e72607238ef168a6455c94e5279e2f5e02d8f 0000000000000001293674987449428c3dc19ff4ca6b39a85d2854511d8eab7e +268000 000000000000000048974ba0669938f7f8463650cd5c48c027aafd88c00a46af a768434a7313d4d72ee0267bf24fb073c4fdf624092d2c43bcf809eb84f48867 0000000000000001134627e5ac79f7fce271a5fdca76d5470758247ed65020f3 +268100 000000000000000a6b380a29e3570fc08f4d9001fc203c4355beab1f9037c02b b20b71dc9ac51d0f487ce99d2b95bd137677fabc0ea406c088208e2d0913d90c 000000000000000a2bbb0dc41644f468fbd1e9bde224d9fe9af7bda30220e653 +268200 00000000000000085a35ba8285555768e488ade52121fbe896f35a06e298f2b3 26dfbb1d2a849563ce7629cc80ee0e62f82d2b8e9a10ddd7b540c2921116b928 0000000000000005f478a81a12a25b7a562f2f75d1088727aebb1170d4da3cc9 +268300 0000000000000003e36c11bc2884bfe995a147ed0d83e1c263cb5a657c1dc89f 2f3b12e018fba81c44fd8b3317a7662afc8908094638585f865da8702afdefd7 00000000000000041a716b8f667b8effad995cfe4fbed891a109cfc2e03cf9b2 +268400 0000000000000000990a9d1e4c8d7bf9abfedfc7a029ee57f9c122de777dab65 d3435cbd4e9a51ef0a6f6f880438ae7bc78c87e3d9e9135610e4175424b27957 00000000000000082ffc2ea5351ed56c48ef8049ef0507aef28783f5117ba25e +268500 00000000000000004c2439104bd4a14d071546d2e4274caeec2c044c6d99b7ac 717d836cc8a7122b99aff08321132d1edef0ce457157705fbe111970e8770663 0000000000000004743ea486eee044d39b0814a2e9aa472cf8078846809d3cf6 +268600 0000000000000007db86b366f60318c63bd61c56bdf1ed4e0a625c7be25375aa 52156ea74d3a3f56b40108936176a39c8b67a3c28d8561f32022660d086d41d8 0000000000000003071348c468c0e3d95d761fad257778a798a325218a3ec92a +268700 0000000000000000fd719aac4de4cc82c6de34c46a6484a963a9db62f20b76b4 043da157965040249edc8411da81b6b5fcb65fbd53f7b604039df6e4d8960f2e 0000000000000003c2605b8d12c584819cf7bd1f370c37cb9ce2c84209f11d39 +268800 0000000000000007ded2114512b81d067615942bbf9bd870d1017f1d157be22e fdc50ace40b0cddbf894577a621cf7799dac341e7de5f180c6917343e2a382e9 00000000000000047139613a6ad3549674ceefb272f76d3bef9ef24c4baec842 +268900 000000000000000685eb64e3c36ec9bb5b9332dd78bb1d789119c890351086f1 b6cc54fcc00d3b945bac4a51c46bc53629e159632e09676321632afc1e16807d 000000000000000483e0f7dabbed1c3f7e15d8b8bd30c0d0569d79906e6974df +269000 0000000000000000a49290932a6374d53ad4e41be89a6a9c5dc2ec291f6bacac 3ca01e952c994511bf1727db98249ed1f3811783202d808745558f661d8c4f89 0000000000000001d5dc70b06246b264c9f4e20fdbc84f3f97dd0d53b90c3721 +269100 00000000000000022265fd015efaac14950531ecacb8159554a0850d8cc9ca67 ff1ba5f8937174eda980958bc83d940031e019d5eb5d2a58b75e7f466565780b 00000000000000003073915556565d64d14d7274c494c7f45bf4cf60da588b50 +269200 0000000000000007a35e866ea0c0c25510c676fea0220d2140afde5226bbd9e2 7b412c4f8e21bb72cda6bcf363af26b4b1f3a6ebf2cec3b69f6cf344d4e672cc 0000000000000008455e41d0dec1411422b4a54f10592a64fc2c314a4469a98b +269300 000000000000000110327d6de2c4bb6314768abf52720d92cf91e378fdba79e6 45785cda03dc61932f8095ce3eaa955a2581ae5718c07570ae7d8a4396dac6b3 00000000000000058c26b89c1d098d03371ac6d691985a5ca9db73972af7dcdb +269400 0000000000000001553468f6775c3687cf7d6414db00d044cad45c41e4aba571 8641023d125c7092ddbe8cc5e57ceb53362c767b62b43492283b8dd2468a8847 000000000000000743756bd8278421b525fb1e02d5d01b9ae75a2fa899a3681f +269500 0000000000000007614927672d1d153d2cd75378d476fb3fd284e30c5f4d3325 967f71b20c67bf1e8c0354768393f81ed37e6e8803c9ad211b6aa6f074eefd3e 00000000000000022aac296cdd1f02efdfe0c3afd6c986979dcef54ca5b27f4e +269600 0000000000000005dcdfdbd040f29768017934edcca016bad1dc009f9f051e4d e28cf25cd3dc7623e6888504627356a018e84ab5689b51fcd430f5a749781ab3 0000000000000002c2c50248356a9dd8127a2a701781b7930ca35b0b6a4aa2a1 +269700 0000000000000001e2ab3c287f960b5e029d9878b78419d0136795b890be396f c44dfac40c8169191d9d2650ebc196de00ecfd58686746784665e4cf2aea56c8 0000000000000005de24dc375b5ea0201dda651bdf3247ee5f8c0da8461a4b52 +269800 00000000000000002b41732543f667c39aabd2f4132feac96fdfb510211d6b7f 55e46e9ccbebdca79d99fe86a8ebc06337b6a2c2f1cc20934096e8344f434007 0000000000000005a046874e9a2d59bc0a05ca054abf4848086880abc1c58ade +269900 0000000000000000027a5eb956fee39ab7f1910e5a2155080ce9914dfedb7b21 aa823cb6de0879dbcb73107ed4bce6e27174fccdf561b492323790244b4bf2c6 000000000000000867664c13dddad22000d1dbfc7434c51637f20e1b3f637476 +270000 0000000000000002a775aec59dc6a9e4bb1c025cf1b8c2195dd9dc3998c827c5 84f2fb14b6821470e35f903201004760dc56e434f5ad5e15d11aeae37afdddd9 00000000000000072c426558ed4a3431bfad3398b8b114aca7c0581337992105 +270100 000000000000000427ef332dd54bf3f611c1400dcbe1863c811d4e223a975d9e 7540ae505d2cd81a85294ac3ca85dfd6f39151b72cf510e5136ffcef417d345c 0000000000000001ee27dcea2d3b0702b310d6213866d8dcfffceb8b5b87e973 +270200 0000000000000006c536e2c7e9545aafb2663a95084bddf68d9251db8685b2f5 30381dfd643c3f2ef47eb58643861598a24aec09243b8625b6dbb5da7b491613 0000000000000006afc319a360003791b54656e97f94c0cefded5c8909e1eefb +270300 000000000000000177074f8e6730f198fb2c7b28e97aa2341cd95d7ab0988141 b94b9c86b148ec98f6619a91963f19bb987b12ce4495ab97d6def5583cae91b1 0000000000000004a150746147a19923bc4adb986158b726b71b70f2953c9c53 +270400 0000000000000001efc47cb2ed833c5249a5e12a800bdda7a15b32da666044fc 3dbd487c6ee48a661db89b548d25979919f763d61fc9b847686bb6e4c6f4c4ce 00000000000000023701db9d6145666d8ee8e0a4f587d431bf0889343ce452d8 +270500 0000000000000003992393172ca43ef3f566bd68c4437e79d02326444c4a72a1 5844aff270229280c1532275b161c479c9d7ced8bb067e762a0d8b02f1715b44 0000000000000004205908712f580fea034251412accc8dd7e025bb832cbc596 +270600 0000000000000004db2825b463e3eaaa33b7a9805589475262fd977c028e70fa 55fa15917a6bfd8b628af0fb1e1692c4bc68723efebdaa02f6b9391a0a75b010 00000000000000067f70f83dabb03baa79c235fd55c9ace804a18225d93b4d8d +270700 00000000000000064f72fd06b78ba81bbf4af77a68f9a1e058cd5f8f7a6e6379 43c8c91e5e6be5f0536ed45d31793708c1b77d860b96a8ddf31cf5652801791b 0000000000000003eb892338c0953df5201abc4ffe18f1e595fb1be85e53aa7f +270800 000000000000000126438278c0c29bf036790fe4ed8468496c831f17e1caa7bb 09d2055be8bdfe7a75ca61013d157012e80d023fdbeab41ed0f3043d6c95b458 00000000000000066c6f368dc5ba8dc9a3a1edd16788ffb0ed79e5dd6c5587b6 +270900 000000000000000206d88ad682569279ab325be88d8c7323cb8ad9b354053806 82c314d015b5310780aa6f118b596d5cb42fd1665358d6cca3d72af2f7e3ce53 0000000000000002344e2d58255a19d00fd2926a02fd84711dedbc1b517fc377 +271000 0000000000000002ec315dca0e0ea2b00cac28ef02113bdf85a9d1eb907a7511 a14d65e1604b2932d82fba4b63f8c25b53d9620000633f03a3aea433e93d70ff 000000000000000088fac639a3fa99a23d02f71b9270037e5110240e92de7cb9 +271100 000000000000000504939bbcd2bbda6eb748e0589fa1222e5c9abbf5ac8e0059 206da726579311bcf1898b61fd397f48bb4e165636e6f5da9b441667e8ee2728 00000000000000054bf32a22f7865c04e436f8bfd9f9a8c2b33050ae165410bf +271200 00000000000000016b9cc118ea7d86919f809e55294861ee09471ae4dd7a51f2 facb2d693fbc67963c98babe0ef6871c1a51bcd88eb9987c20f46e62b3e971e3 0000000000000002f0f6da934e421aca87110dc2b06a291ac4288b351cdcdde7 +271300 0000000000000001bf8167a6d5d5c89436fbbf9c64558bfba06bbc71e6e2b590 727a11c8c1835cec377d0ca81bec48478fa2245888734fe28217d17e456d8861 00000000000000016f6034a31d68c5da3f66308355486263e3075f683c3c306c +271400 0000000000000002a60e7b188ca2f76d91089deee1abd745e7a1fc3c4c7b385e 3fd119d0eb4f14eeaeb73aafe8257b12b345c28bbc25e58e57f610253555feda 00000000000000057cabf5c78abe41effa5862348da4bec7698d0dfd1dfd6573 +271500 000000000000000290112a81dcfd773afcfec1a38a277cdbe909027ca35335e0 9ce451321e31ebef88d037788b32a106d15773df5c301221c975ecb6ad5d192d 00000000000000011e3ba01c9215ba22d9718304c35bda9da30ec6012a9d4245 +271600 0000000000000004f3cc28d404aa133cdea637b03f35152b266622eb1cbc5107 059ea79969961435419ebfce845ac7763a28dc2d79ef52b8831dbdc0c83dfd34 00000000000000042e970d0f9405f7032c91457d739a274b49a0b8c3f6aef7fa +271700 0000000000000006a670e6fef24e1fc0bdf5f8ed7e22f77c4931ebacbc26fa98 92eff944874a6ba69114cc13e3e5774a76cdb292adeab137e56b25696bad294c 00000000000000004339686a5a6ffa9492001431a4d3eab06adb10bf046f108e +271800 0000000000000002c4e9c1df445ddf9fc85d12d7b7a5f85b181901b04b88c76f 8f4f0622aceb2a1db280dd5e5dc64c8d7a85c14d608639ea9d435babf2e0ef4b 00000000000000002b0ce2fc49234da21554539a30e4ed5250d906e7c7d55284 +271900 0000000000000001eae08c92dc47858a459369882b835ce0065a8141d501138f b82aa5c862d063000f8398dedd5f370c2acea14e9aff168152f3e54980bdf4e8 0000000000000006b1dfdbae982886b023970bfad3c3aaa7039137d14fa7eded +272000 00000000000000050a89e2ffb28757d35e14615f23b981eca68906c8c71f65f2 481491a036a95b8bdfdae189e8486612ec4badf95b14e15ae7c5eac810eca2b9 00000000000000005ae2b9dd4ea05866eb5f5e8a8ea54e25a217a9c6bbb5024f +272100 0000000000000005dedcba566d4311ce32577130c1f168d60a02636b9df1ce0c ad2a88f83c062d895a145d6285a20ecaa5a6413befaf83adec0c86334e6318c9 00000000000000046cafba7fab66e25bb71e6dc5c74b71956e751341588972a0 +272200 0000000000000002bb731f4609f9c56a613761a04cc10c272027fa0404179af2 e91c9547290b2da5bffa80305a45b7449a1035ffde258d5972445a1eb50368bd 0000000000000000fbe0ce0961d0b427b73fcf743cba6bbefdbb5850838fc3a8 +272300 0000000000000000020f1b5f355602fefd96a8292eb15981c93f1f133c7e733f 1e93d1594289fbd8d182a70246afcc4de23ef2074327e66dd3b4c9a077b131d9 00000000000000036878f72d8be41c285a233891097516f4306fee23fc6881fd +272400 00000000000000015790fdb1f1b57df5353ec2c7a8af1c57fb76af6278ecbe2b b945aeaa2d11b7c71cb9f4f7eb005bae6c7d3f423bfb7824a95baa871ea81f32 000000000000000069daaa55bb7b6afa56bc94eaf37c5603245f78b1a4489c5e +272500 0000000000000002e7b0c58dbe062770fefa09dc88825a9d4122e7e465dccc0e bdcd5f4ca72854eb4808bac517aff33c6fb801da8966c448e1e14077d966fa53 00000000000000053c555b2b76fbf0e059247ea2ecfb6e20de0829464e4c127d +272600 0000000000000000f03d33e37227977f83b13ed97964561ddc07470039b2168d 3e1fd5316ee4d1a5d0b39361a75cc06a3e861b14862d64fa45efe8a91b717611 0000000000000004b9cb4134f5f7f7c11098510fb39a28ae0318100a5367aecc +272700 0000000000000000b04f3f190d021fa9600bba241676081b81ebf0fa443d8905 12539f6279377edb1d5f3d9519c04e4ea2fe2856a3eec607c884b6dfe19721a2 00000000000000027570dae855d526511754aaec1952cb42d2762d170fa0f13f +272800 0000000000000005b7c79d0527f61138bd162bb7d79f08608a7bb874437712c1 db67e0b35138075500cac81f9d45e02b6ff7e4c68d4a90cae6ac7a3c162d2d1b 0000000000000005cdb96e6cf6b0a1b275d15c80068e059e54d815b0852d9c11 +272900 00000000000000028cf658998f1949cf4fa1231af0407b1cab56c88d32ad2b6c 999eab115e508c32540bc1a486fdaeb44b68354dec463db7b9488e30fd4a01c7 0000000000000001b0e5dd1f270fe9357ad19f4331a7cc19adfd78b0ce41e64c +273000 0000000000000004e69efe86995604dccb8165f4ab96ac11e85f203fe9c0cda1 408a1b2d1ed6225fa5be7588424fbc2236431724014e5ed4d913c4cb6658d496 00000000000000033619d25b3ace4a54d73aca73c825a2cd653189f3baa0fd9c +273100 0000000000000005c50f737574a98e11eea9119a5c733d2d24beb90c745508cc c6ba24fe557059cf5f12cfc39afd69f2d90c2dd857b570524d2952246f0faf0c 0000000000000002762a7260047357743582682db086de51b9bcc20005ff5f66 +273200 00000000000000041a1d1963c429290cf5f90574060fcb7ab6d28d66a7527fd7 525d826edbafdc2abd6ae178b82d422d1b50894cfdc8220ccf90717b846f4469 00000000000000008d96ed51c07aa656fd8d106cf4d1280e58d68465a2bf7748 +273300 00000000000000000657831e6b1612496acf9a48ac6a437ad731331c574f6ed1 49a10baf018b987a1129c426ddcf508e913710722a3551e4a0cd24a5a5816a5c 00000000000000030c308d00541b0b589f88584460153de1dd20aa861cf60f8b +273400 000000000000000306838aa4d513da147a715cbc3e573875faadf5f0678f8ca7 b8f0cccfb88940e8d6da1b9887fcd7097207b4202532c41e289f11032d6c97cd 0000000000000005eab956d1de8f3b4e9b436c6cc0c8189fa9d71ae80a2e91d2 +273500 0000000000000004c30360d173dfa67bacdba4e2e19334b971f6d7f12a338937 d7d856d39252829cec5b97236995dd5fa44b0a84f1815c9a5fd8448040446056 0000000000000003b06c81e74a06dd8135c2a137734c3ca704b61cbbf0fc0ea2 +273600 0000000000000003fecb815b2d5189b42a4a5cec121d1f4bea624c39faf1ea2a 66aef1d43745d82b771512c96b3df456f55ab3cace7c60d93faa90721d826f62 0000000000000000877f067d0bed13e4b8997eb3a54659385568de6a5867f7f2 +273700 00000000000000012a2e6926aface65e43aeeca947ab42441320824aed7702a7 8a0a033437f4c77a232f54cda02eae2465e94636630fd3a27c594091a6c36658 00000000000000014d370182ea58588721f1f94048129922d426f822028e9dba +273800 0000000000000003ce6a67ebc684f0fdb2f8db07b4df752e2a5de0cc7fc639fd 7f2144fd63439f9be41cc7faedc6ba9fc5ad245027d0ff731a75f91feb5431a3 00000000000000031e65983279d36179e281a50e7d052d5e0e44736f7e779b50 +273900 00000000000000020e2fe323d40d34b2d2a782a5ccf62821815416282758bce1 954e828c4167fc4b38a2a549a4458c80de201218908a7a440ec35fcca502acb3 00000000000000058203f6b69a7c209789e8362f4947e1df9c2087a949c3338d +274000 0000000000000003fe2d3425e9f9b906f02f40b3db90d908ba0fbd1e44cf43f8 744c98ea5e0afeca679acf925d4a256c23d7495805a3cebe94ef43ec1238eb4f 0000000000000001dd30fc52fbfb29a7e7fa0c40da666b2ac5b010cc7acb3674 +274100 0000000000000004b61834b9b984e8c1305c4279568273327ca3ef76006090f0 8ef69f63feaf4f873260b7226978c4692313626b242bc3e996495553cda6ae71 00000000000000005b90f8693837826a5f72a3e243c22f6cce004e4855e59881 +274200 000000000000000332b62390a003a63fb8b2c0563f1e13fe25b023333de15a4b 2c20e50dbdaa9bc7de0329c7e6b3214656251a233e4fe7f769fe2e7d08e19781 000000000000000269efd9a6103e9151793db35ff8e60b492081c24b4c39baa7 +274300 0000000000000002c5827e161e996c056cf5f0fd8b6e5a2e2a68fade99115178 d9ec07ab9aa4b8fb8d1a4a375805e293ac8ef718372eff7507b0556946b2ae23 0000000000000004385358285193199e99548e226151a77853d2e32633c8ce4d +274400 0000000000000000ecf8abfeefa867c3f17267b8df8bef5f4926b5762a859286 f045a03cdd814e13803e6b870d9ca146b3b741999bc8a1b690ec709248b7fc68 000000000000000494a249c199d5f859bfff38c05d488bd02f2bca98a2336ccc +274500 0000000000000000680da195869e81bdd1f9c173d96c29d7387149c0d2eb702a c7115b0a217d9b4a69a0d3a9e7db873d1895abf86166b2671d845919525d6ca9 000000000000000158cf7628a404aceec1eeca9e8571f25c6f6d1206e9cb0c5b +274600 00000000000000049a8e067bad644a7eacc43687babf7ea4800f561b6c1a48f8 e9b29a8fc978fb20fbb7cdcb612cce16b6c05f39a73e5eb618b3dff472fc912d 00000000000000012b2d7aaaf7caec9ee0be55d06381228f34a745d1a16d1321 +274700 0000000000000003b8c68fb86ff86a9a041125f92d4da59c90a71ec9e18f5f0e b6efa3fc70bab0e5e55a6dc4281b32c2ad838a14e44bcdad19fb06149f240306 00000000000000025d17d224696ff72976703d59ebc1a28c2e8b7ec8f6642bde +274800 00000000000000038f83d10cb3ff234777e369a526a0c01818a6af1113130ff1 d234b12a79e2f1f7da2bc45b85816024567edf6ecfff3bf17b6872e1d4ef365d 0000000000000000a7528893be28e4424eff807311efd464ec889085f924e5bb +274900 0000000000000001541cf9dae3511acbad1164e98f15131f2131748e76b59b8c f743c97c2bfb80f923c37428df1064f18a04f8e7c86a7aa7b6d50a9d2658adfb 00000000000000043a26ebefe352aca51bd4223ee08cd12c1b04cad9fffd15b7 +275000 00000000000000044750d80a0d3f3e307e54e8802397ae840d91adc28068f5bc 414e1d8ccadff6f7df4f01404b2b4ad603ece0c6ee290c6c4ef87516e74a8e63 00000000000000033faea7c96ad1772c60a5c3e44130e3e98e64542909359e3b +275100 0000000000000004600658634acef376b760c579aab83c46be64e9e702458c97 62b0f1a4be9b191f411e161f920a039d971baec09861953a91589c1edb9b2c30 0000000000000004a6dda6d6d08bd889bd36eb2ec453a781d2b043015aacf477 +275200 0000000000000000db9a2245f1d0c97cf8938b88d23f051614ef93a71e09aea6 ea66003e48c6fc60c6280cb819987e0265cc2e2d6bb64b04d090927c94b45eac 00000000000000013e0e59c8c30aaa2dd5c995b921a36d1a8df07e50302f2cef +275300 0000000000000003084306c8c5b89a1570e1d1ccdc3e31d9a3c61483fa83aad7 aa541424291c1c1cae08821f9f5350042962e8704d641349cffa3b3a06f43a08 0000000000000000d871cc5153ef927629a7c57d2acf8d490bc6925371c61009 +275400 00000000000000038c33b4311e32ce812560d29151dd4b8b657149ca1a63633a cdb51fc70e0ca4aba79f53280d69e339094c7ae8fb608e76f4c51e94a2167ae3 0000000000000001e283b4e31c3ca57b5cd6318ff044866614d58b3b9e15e831 +275500 00000000000000027554ba63540304f483c289ccecf9df8edb717bbfd23bd2be 1e3965f5767f517d588e590d11d57f734e2508b5c0524eceebd4dfdc29ebae84 0000000000000001df141537436562453313f663fdeae487c9cb6a4cfb7507c7 +275600 00000000000000031d6e6deb0fc8032c3db9038cce53aa00ce83c5f19baf685b ced945b3124c596469e2eb302fa6d01f6331375c491d23a70ff1da3224871001 0000000000000000f7d195ec44a2dd9c0d2e121147271bc304f840479a5673cc +275700 00000000000000039e3d2ae7262f5521b7606166e97490c39b309f330e097b59 b1af360feeb80be1bbd086bc97b61f6e6d808f3007a9b3555700b6536e2e436a 0000000000000003f93eeecea9402974314c0322d3ba60d87f28cc002d24a441 +275800 0000000000000004ab86e70e384fe20b581e391c617cc740603cdeb2e565e025 95b8b0bcaf09e04eee8fb603cf5a8f78479688e15bb18395034e8bfe4b936cfb 0000000000000002dcdd4c3f6bbf4a3dedb5136b682bf1f1d040c6c752d3e2f9 +275900 00000000000000005d46d3dee13a755d0129880cd01d7659c2bee0ea213eed9e 22dc5389c5f67770830cfb1bf6354c4567c0948a8c8b7a97e5b154bdffa0d38b 0000000000000003cc308b099274e69d44734d1c4b8ce8b1a49cfbed06f9ad01 +276000 0000000000000004b8ed801f8a09ba8c1248a5b1dd1533a35124a80438573f59 2425f7233a762719799caab2dd94ebd22a8b888c44e4bf845c277fb11af1814f 00000000000000017c2574b167a6be0482d330d8b3788c3ecf30aea1ce52a579 +276100 000000000000000048a3355667051cc31e3ae51eadd912f7ab01180b82a36257 703ce9f9287fef3d4a49da888de416a8c1a060a97e476bba6483f6336df1cfa7 00000000000000029d5167ad18274d40a39bed328782dcc6fee97bc5b43c1594 +276200 00000000000000037741486be66318dcc99dfa5655d3e32b25ca9d51e31e6391 faed0c56f2c76fe032779a2b8d192d3f5f082a94d36df520608f0ded4d49f04e 0000000000000001cc0b59ecb41d7c049b524e2fd9b28aef5e1f94b93aae877d +276300 0000000000000001882fbf61cc9b33acf4c691c95e43ab930ba361a041be3a3f 1e76a86f62eaa7a6135126d188711556b18e349a9b6a5779a8861b227e3b9727 0000000000000002cee0605fd633469134e979fdaf89ba99641a32dcfa8ffffa +276400 0000000000000002ef165b60dc2b602e173d53a185660eeee28ef09c227e97c1 290035f30abf869978ccfcf5d0de8b7ea1452dc03559014612f33ccea7e7c535 00000000000000007065cd7d09b1b84aa99a78123d532d7b541132fffba154a0 +276500 0000000000000000b0564e9de957b6188bfe767ef6e529f9272dbe870dfcd768 cad6232b7176acd439b2a938154208f7e4dc16ebec6614e07c00dc22cf3bd77b 0000000000000002c29e079e41e426d3805bf60da05606233af4b6ca50d803bc +276600 00000000000000018809be32e4682cb98ea78560f697352cc6b77d719adf0b39 b75136bbb84f01f8642c221765365d3e40794f4b01114b34cfcce0238468ebb9 00000000000000023f21d17384979ce23c829aa5088f1de0a6d08213887f7568 +276700 000000000000000298970a25aaf74079d6b5f02cb8fba30be83b3324287997cd ef3a7739e690fc2a514dd71b411104066f22777b5cac7ce232da7413f8eac321 00000000000000016b986e850c12e20dfe3871b74e49286ea24ff4c78f7e80d6 +276800 0000000000000002c26e81e219a1232776cb29dec36c86ea24089e9f79877a3d 36bde52f1d2f43877e5b21bf552a6fd6c648263489b418248a75238028c409ad 0000000000000000af633dedbd0b825bdcd3c23093fa8c6cf4e0939a21984407 +276900 0000000000000001867af6368b70e8213dea094b5f0ee75d603f6570686e8099 65043da873595f4369639d6551ca4cee61954c581e10a6595b611a357a63aa25 000000000000000189af8ec13404e014668c129ef52e0ec3c8da5cf57c0f97ed +277000 0000000000000001b8a1691057cd6639e56224d99f7f7d80e7b61f55be52d931 01357ac57ce5d9ef9e080b0912a78517dafab54d7eac25ff04d978569d625f9e 00000000000000024c9b563c5f34515c037e0e6b1aea26732ec30dd997ea5f84 +277100 00000000000000014bfaea20d12d171311c379766bdab3df31d05cf8720f59f6 ac2754169e5a16793bc9cda691a60a9e4f943bb0f2dde3be2a0c51d6f45bf630 00000000000000024b16cd78c396aa96235ef7a01d32f8ecd6ba752252b04dbf +277200 000000000000000124c2029853fe6e2273971455c9f4b4240f78eb1addcace26 9c758a9487ac08b0b8b4d52360cdff90f43b7be9ef3b7f7875c66a46b2e1d0ff 0000000000000002d8d0cc25710b9992856c4188565f42a7d11211446334ca08 +277300 00000000000000003374e135ddc177811d125d00ab126f36e71b72a1926d16b9 a82305b7e30f1cb5c4809924038cb0cdf7724affec66e3b5172cee9b07a9ad03 0000000000000001219742a2f4bb8f95d1a0d184693cb140ffaa468be24f808b +277400 00000000000000009d5145a62f14d291dd78d878e5ba0ffd137b4d76a1c94f8a d102f099dfdda730f87ab847be262329e748c8436b75698f318fee9f0d2220e3 00000000000000037442cb9a9ad01787302b9942451bff0baf82e37d2bc579f4 +277500 0000000000000001a07b4688e9bd626b5d0d6af29724e54e6737edf4dc7bf07a dcad423cfc04e1aeacd55efdc69038d0a2aef8bd0c018cae91f0aac603548b31 0000000000000000b53b7fe92c643e4985cdae41fee10f15c77d2404ddbbfa84 +277600 00000000000000022689e5223857c609388f8db886b147298e9d920a11c91392 dc1ecdaafba0c80ad36b7c2eea412e63bc95bf6c707d9e26b743e01aa1a5fd7c 0000000000000002dc4b8ba2144950193a5c9171901d6f833fefe07d58c4583c +277700 00000000000000030ee26e4a98a37c96033d4b3bafd64f86648ea88c8a628803 f6db113a32b922e850d4c68d55808a6dfde3db049f0754ad8870212ac60dd77f 0000000000000002c4ea16daca5b01c742ad63331c75ad1861f4ba651c585eab +277800 000000000000000253ba02569c9b6325a4a4366da25a89d8c550a47bf1d29df8 f7793b01bf68f23abbc00efe05eec25c91050e247c3ef704ad13532d2277a837 00000000000000012b4e4933e05d22ff76a4ee6ff3792779f6a439cd92b7d64e +277900 00000000000000016ac3cf46d00a505c5fae30ea735c9c5ade8fd15ac9cd6f60 bd24ab69e75a1b186839aca5947abb93e6d400527dd9e927cd6307f806801a6f 00000000000000017782a6d566631572ea1977ee84f9f79dd442126f0802d7c4 +278000 0000000000000001bcadd1e4b4d01063a17347dfca126c63893d2aa37d82eb7f df7966d03f57b595a51dbd01c190151ea969cc06a872ad951b28781f50931c6b 00000000000000013efa0ef2b6d85ee121367173cc9d7eb375717e9782f4a6cf +278100 000000000000000197dc87e0ea9b5a9c35fa57fd12c53b541805d0a82b58d989 9d627c4841e0ba9e3af25e75787cc5f6b9a7552fa3ea776158eab7503bb00438 00000000000000010802944a96637fb5b4dc64bfe4dee846131cdf5147dcd54b +278200 00000000000000015793f5d606921cdcf40655672a54e5f2e1de19a51357b4f4 56e73ce4fa8a07f27eed692b8bd146c0255ad4dacb9eac4d1c614d361af5c62e 000000000000000225097f454cdb82164af3d37a1ffaefec1526a85decba59a3 +278300 0000000000000002397c0fd9dbb8e660ae1ca4a8d50a9d4d12bed8e32563c694 786fbc18b7ef44d5ef83db0fd506d1cff9a00e75aac6222e8c9a27be8b2d57f9 000000000000000170b111383382b09c4876ca2513cfe130690409c369523b3b +278400 000000000000000164c524d0ad61283ac10608fe634cdb959496ba1470d6c144 a8b9c4fac830b53b9115ce5aeac3ebc3deaa53632907d82ff6bce4a598a21c58 0000000000000001c8b4348ba0acb63167aa89001e12caa0122bf0b302b68459 +278500 000000000000000142468ef10c92c7566a2f398f11b11e340d15c6aef19e1f63 76f16a96d1dfb0faaaa61f44b13ab764cbdfad706eddcc9586d3e8b56156ef1c 0000000000000002ffb99ae85aac3dcbddfd2ac0acad45fe5f92103d34254e96 +278600 000000000000000137413577b63716429a26ac2670b3521b26f2d4cf9e973ac2 0153a6a156963c933fa7940a6c51a083fce305817cd68b74075505c65d5f8768 0000000000000001fc89a18ce3e3ee36b0630f93b7685533f6a657843a7d38ad +278700 0000000000000001b5a6f61911dae8ff457575add2cfa063c1d6193a89bcbeb0 e293a377add8658944c49742b1c94d3fc4e0dc11e3d2a048bd69e0ddf6216569 0000000000000001c11c498a1836dbc759fb0ade9fc0a2ff801ebf7a9791f87c +278800 0000000000000002f3685ae01c53c0dee722e411fc97343d99d3dd3569b95516 c9256c462e14aefad4c59026cc58cc4ccebdf06742b95b99dd6a12cffbd6f71b 0000000000000000ae2073d9f5379922f2fa6f6930ac242002f19b083abaa7f3 +278900 0000000000000002e38233adbd81ab5bfc7561c769dc4aa1ac054df9090f6506 6f3bbc8b9cd46c4eeb42e736b37e6c9a0193db7a5a6f3b6c34451c4b6d002cd6 000000000000000132ac64ce02123d8c19ed2e6164331145c0b9ef56ee119856 +279000 0000000000000001ae8c72a0b0c301f67e3afca10e819efa9041e458e9bd7e40 ef3094c285c77a767729c6f112998fe433cc1ce7f0ecf5ab8f7b0e94c7b4e688 00000000000000005ab68faf866e0c4cf255c97d55574db7be30a8bc2d2fa58c +279100 000000000000000279bae6fffc533ddaf9fc700d5441a9bd58bff7c64853b0bb 112e9cab3636835ab58d405caa05e2dd834e07215002f833b358b43ead7443fd 0000000000000001a1a7bd25b760dffbd8b13ca6f07dff399287edafc97d376a +279200 000000000000000123075814391bcb0c43148683d02af1a68e1d15edfdca256b 8bbd81c53744e92bff232e28df6f71261d51803003124f84bb3c3e37747478ec 00000000000000027c044e3b92f3eb43ddc8916826afca5d5eee88983d0468d2 +279300 00000000000000022ebd4050d634fc414082746bd58bda3a2eea079790761e2f a9455fa33d733dd54848e9e7ae532f73bed03f12155834372d2bafc09a2e4d23 0000000000000000e10e11111afdc8730630beb5d72ec49f2d57afbd2c602d40 +279400 0000000000000002adeaeee638ced2c0191a895fbccd47456ae1ad64a0f91146 f50f2f746ca65f3376ad98a7c33650b93cd623ad77728a071a56b09009ccb57c 000000000000000234b9d53eeb1f2efb757781015db5c1dec6f9c9523594bc5a +279500 0000000000000000edf1a6ff589f58e509fbe4237fb162b78c5a27b631dbb1d2 655e91c43dafc7a4325c5c87e19c771c051d7e1f9760858e2496366c537672d4 0000000000000000c4b84b7742f6a272dcbaf12f275830e52ea005155d074cf9 +279600 0000000000000001de1c7f4aed6ea22ceeee328579ed67b002c87d4e76d76724 6ab547e6acf4e656df7588b10d7af1b7d3bde922a61adde0982c1f56095382e4 0000000000000000a7dd9b277a34da2628c25eeab6753837c11c5de96926077a +279700 00000000000000009799441fd48b8d2e1a485cd3227ae3ff1d58743d44823cf7 ccafbbc8cf364311da996e2d8cad902e3e5ced21df8e5618841e567566070892 0000000000000001df451ad2a440a5d5036377db842da0b352cc6a3b6f8cbce3 +279800 0000000000000001f7ac786c18ce228027fdf98760eca20a5aba4353a347c066 274f44de7b66f8531b9455c24ce34c5368658bea552c75183bfc9aab23aaf35e 00000000000000024e063b7c1d3d9f14f12bdfaa13dc5d74d0ece8b8f99a2a88 +279900 000000000000000251e9fedee6dd5226b81e9f48e91133f19a1a41a7fe68b98a b7a31bf5108c0d29d7b7ff32fea9c638724b66f51c5790dac15fb54d0d5274b5 000000000000000216ee7c60deaa4e9317111b414f4e18de7e8521c5379c0b8f +280000 0000000000000001c091ada69f444dc0282ecaabe4808ddbb2532e5555db0c03 21061e069b9a24e70f175619d80161178fa197efb1ffacf8c1ad9b70b9da0040 0000000000000000bc7b8f8b4a60aeb73c05de005797af3b78e84d61c93f3d15 +280100 0000000000000000f6d1fa6836afec729f664441d546562ff75d0eaaecfc236f 6f803ba97ceeefe21e2fce5f6029def90060fa0b7e5bc370a6db94dfa064186a 000000000000000305ed4475d1b4a2120dea743781709b670b354b7f4f296577 +280200 0000000000000000d4afedd557cb8134503dd453ca5f693b490399f6a9bf38f4 6ca630a5485da5df3dd854fe412501f23779f1fb5aded7f77818c43eb4fb749b 000000000000000155a1d82429d2896e936e5bcd0a6c8cda7e81669f35f00a88 +280300 000000000000000129b470bf861edbf1c45de234285b9226a15eaa792ffef57e b2e42a26d0bcfa96517adff6125ac7a4b533a4605db6ce47ad3038768640121a 0000000000000000271556788641758d5b89ec34bdf8a804fb084ac1b865fde5 +280400 0000000000000002551115059ee9be2e9d3888dc9284cfddeaaa1b825b5cb55c 61233d9a0f98137757e1e3c473ebfa8ae758b36bbf0115d4e6276e550a1741a5 00000000000000005e5fe70d00016adfeaca2442d6c4f9126c5a843204d5abdd +280500 00000000000000010c474cd4e25913535ec1c166b6d43fbdd9a5f2726711ced7 9961030a2ced1ba858d6e9045f696b3a2c00807424169cf2a1186514f21afe1f 0000000000000001ba3574f495fdf37334eb7f0794302abdad256256392d61b2 +280600 0000000000000001dbec7d46f262d1c8d834e98f3f216558309ff3a7077dfa79 3ce0571c246b26b463b552f89c230183466d33bae7f3f69942bbca893d2e2ffe 0000000000000000f2614a837ef46ca1f17d889411711e738877a1f3e0c82e58 +280700 00000000000000016262a87b76162256559b03d6b2b129711b950453e430ca17 5a083b7db71aa3a2a272996f63b1b3a07e85359733da42fae941306ce7d06f35 0000000000000002549f9deb16bf7cdd7e1a1caff8e80ba00c5b9d554bbbe6d8 +280800 0000000000000002126e593f4148adb0aae66bb32c9fbe65e77e560196495ede dee0049654cbf70d836617e034671aec82e03141633ff6c34a027fbd462bd57d 0000000000000000a94cffb8d128412c90168bea85c545d854cbe869eac63e40 +280900 0000000000000000a63e1cdd7bd7b671b6f5acaf26aadc62d2e51cb0e81d2c94 20afa8640364e3be7fb0a1213829570ebf4644a9d1c9883eaef9fea91ee10099 000000000000000262da7f9269a6561e582578b4e99107e0b09e66cb94b91e03 +281000 0000000000000001c1b32d5f6ff09437b1cfdea80c0f316ff4f688fd6db2c2a7 d50eafe49ae811dc7fecd941e7c0e662f9ba9d32edb2526ec8a47f9627a612e1 0000000000000001feda2756c7876c916e3aed3168d5423c7c89aa5ec7f8232f +281100 00000000000000010453847e3677e6255a56efe244256faa94a9583a9fb4ef32 8015b958c6ea2d049c2aa17e50bbe361746996759bc2e710e89f83498b18ed88 000000000000000148499811ea02cbb6e706f9a8a583e908317313c9244fd967 +281200 0000000000000001fb7a1722b68353f0ea3356718b2e4e86381042c3407acb2e 61c70179d19aeb4b38c1b005b8ade7e0c131c1839923d3dc28a6021d16265313 000000000000000184d5168dd5bfc6dfa9b7f662d3210f82ddef1b3676020e0f +281300 000000000000000068d15df7460d64e8259179a2befd32cadbfe4b7823fc76c5 5e291f719815abb1a67f025a25c5c24996afcaff5405e9231ef4453dfcc92a48 0000000000000001d29ae96f075a2248abaf67f877dc384ee57f7a5d0f57781c +281400 00000000000000022dda9b1242fc8c33eebc17d79df4c955e689c7f7a4f32240 780679c57fdf00ec94399eb2cd1a059c7e11c392bd870e8f6dc9ac653654acd8 00000000000000021bc48de0b83d855d9ee511a7b6d686f100422278e661d9fc +281500 0000000000000001f3fa12942dd204b2b8a5e1fe9eeeca4444e3842674c84ab8 0a7d19e325db08cd8a72c612af229931a389abde15bfe6b59f9d265cc1b2e146 0000000000000000431926ce3aae7a4dac6954aabe99ae163184f76962814be8 +281600 000000000000000137f62133110c996c18ef998c1d5e4ddbef8203741c8f5a64 da0d06a4d28a9fc83f2bda93cb42e445874df82ae4143ef90f2f0f400031b2ce 0000000000000000912911eb108c2891bea72ca8e0c1520541a3655cf6bfec7f +281700 00000000000000012d71aef3d9bf1a25099dfd95a0a7e0720279554ef1a57bd9 9f63ad5448dd1848ae73397e9097f7d7fd0e239af7f0ebd55752173415995bc3 0000000000000000db320ea6a3ea512791d0b903a913a3ac4d0c3c5cd69469c9 +281800 0000000000000001eb7b543dddfc8789479d73d664f542fbd520cf8c1d4f7379 cf46f4c7327a94dec189fcba90787abe06d47f6c457e365095a0d6336d337c4a 000000000000000103c9d811609353d22d5f4e78dc57ae1e85fe34b98004bf6d +281900 0000000000000001a71fb7b916dd22b7142399e775953fcb9bbc6e120b484d61 e24362489965237a9450f1e848d1d00b876ea2e38033ee2d8fbdfc29b84a8a19 00000000000000000934cd5583db858edfda6d9398e36f327438bab0e4d48687 +282000 0000000000000002337ad25e6a9767420766309cfea79f13dd9c910bcf5ca063 00db14c7010fc37eefef04ca46561a3dc63613193ffac8ec9c7b61f565cf35ee 00000000000000012781d061268f7e1fd21424013a0b48fb5b2e4b47ad44f353 +282100 000000000000000057731a509f5ecaec68d4b21f43217b8e3d19bc11095001d5 bd57327ecf186a456a94e0c577a8ea33f8abb14280a1dc026e0714b530d3cfc8 0000000000000000f1bc4b5d0842704faeb140186fa44d8c35ed7017a34a3a97 +282200 0000000000000001315c71472fdce344f85f794a7135e25554f2b51dfa6b83c4 09aba31a5249923535e1cbd36d315f3a8a562f98f5d56d71e4c55913a9b9a545 00000000000000008b320d1d9132e6be3871f30c926844c11738012a33406435 +282300 0000000000000001ad35b715e37abf07f71df68b28bd9106ab6f6ee530f8eb6d 42b9efcda0253ef4255199ae7cbe5833e54faae34bc8dc9dc137e7b68537bcfe 00000000000000009c9037f4fc18b449196a1b5bd60833695ace26374c978744 +282400 0000000000000001de61ebe0f20ac77ce111f405d16f23398b11595478148c2c 821d902103324b6a618137e1ec16ba7cf62725312b0d60726ccbb749628566c1 0000000000000001c642c5ade3a11399132e9ea5e3ad88e06a2362d6daaeac3d +282500 00000000000000016295074d36797fd9ebd62fafae195173a04591b140f40d5d 8a0126b99f14b0fd1014e400b07be05c7b40448bc88b7e9b6a8760983e7badce 0000000000000000d0bcafed6ec7ef9d1f3df830af36550cbb57c8a51ff3a13a +282600 0000000000000000db54fcd24ad74bb45a565d3af1c97a417a2e29e0494b693e fb300a2d8c97cbcafa37cf038d045ae919d7fc3d4b4efc649d58f6e7254b6cd8 000000000000000162a1e43c832172ea9033b15eaff406512510655a71deb132 +282700 00000000000000009dc6e099199d316e8b657e40ef1f84c18fedf79b0e4b431a 29160e0878f63a29e5fc02d0855db7ca5ae51483b735ee918f33a1d45a4d0b51 0000000000000000217767375780402645c707bb29a346205f27b08ad7815f25 +282800 000000000000000087b15e077fd569625cd9c477ef9afc539c45c01ead1e55c8 44404880f76e0500d62aa9a8213a62c6c50c4f64868e35586cae7cbbb06ed87b 000000000000000031e659c07157eeb0d0325821efd27e42a6ccc338083291c2 +282900 0000000000000000d68ca32d69b71e65f7bac6c2d0a53d310d3cfac74f1a7d8d 5b091fa30de384c3e75f1f48567f43d5d220f6e245a33de18a64300b4860efb3 00000000000000017b1f694c54f2429f04729fb2c35c9db506acbf5a1e32665d +283000 0000000000000001acd1753cf7079121700058279b6a835023fc31ad688784f5 965d85e105681e1fab0f7ed7f16e9fdfcadf0fde5ab711134a7cb8ec323571cf 0000000000000000efb0997c64af406f675cd1edecb744b42b518da1c30dbf49 +283100 00000000000000012ddb0e21076aa60281a3b93a4336f8c3884dbb5f85fce4d7 435cfe2ce9b6496d98baf6600b7391be8bb4caf2d2af297035e676eb3abfeec5 0000000000000001adbfb306170ef3e66f54cec4a7016f361f3a2e6db492018b +283200 0000000000000001ec6a02cf8d992923dc64dadc83ceddb5cf42360c6e047d1c 87cace44a8c3ecfc3226ee4dc1f600dbcba51a73aeb87b71979d77724fced074 000000000000000027421a529b38af11ff3e1c295a0bef6dd78b616f8f8e0ba4 +283300 00000000000000010a202e93c0da60fc605c2fed845f304e980e090cbb4359da 4c06160ae64da8a24505d6bf315356708311deced3ac7ab6cdb4c272acad35b6 0000000000000001c39cd832b500feb3e7c14049fb3d24e98eb370f85016a131 +283400 0000000000000000f1c506121d0ef0dc2ab828ec4d57211f6e509b9a54a2f340 668041427608f79ddc1a878356f1a9980a1f80822bc3d8846fd8bf89afe6ac9a 0000000000000001d29465da74fd94b5426c69ecd8c08b9ec743e2bf7b4768dd +283500 000000000000000195dcfd99f34ecfb10437e3cecabe5e16c7f9b3bcb7fb3950 79d9bebaa1ff7e30e74e91e6938bbe23d694daabd9c329475b164126087e8b1f 0000000000000001b2ae495169297256a40f390ef533882f139f087fa8fc7493 +283600 00000000000000004afffe700c0239edb3afdc4cbdb22c236689c1ca0430780f 3400651bc046aa39057efe433a759a76bd1226b38230ffd5aa96aa70fe8ebdfc 0000000000000000da0b8b82b4d9e12ae452565e90a2faa690187005f128d7d4 +283700 0000000000000001e33a288f2803b9a8401e866f01593605a6e51ea1960645cb b3b6b514d931628e83954a8dbabba3f752081a20c1aae99f7c79eb3dc55c6639 000000000000000090422cc4f3628877a259659350c5190d701514bb68f73145 +283800 00000000000000006f3d68b1a16e6a5b2b981d9edb2bc13a6dd98cf7088d1c17 0f3bf3cec489888f1da49ace91731f91f5768f1c4c53d971257d4c76adf9f267 0000000000000000829a10d1c9a8f15844ab50f6aa0342d557f6584a3e2c954c +283900 0000000000000001e5742c1671ff8adfc095f521b9769eb188207cb40123f8fd 40bdf07f3486fbb906b4aaf45246b44dd3fedc6afb50fce95ecc6c0c13e360a8 0000000000000001987b5c3010ed4151264bfc0e199bc88e986a6529eaf4eeca +284000 0000000000000000eac86582f121e5431734e2ea36bf73347022c99c1adae37f 64bb13a0abc3de302d565418e1cb05e43ac94f372875ae153a344ce86ddfb256 0000000000000001d6b73ce478f8801d837f94d3a8462e67e9c5d7898b5cfce7 +284100 000000000000000114df35db8a38b29725d688cda959372d96914ad9a8246aeb bd74e5043a4d8a2fd7fee2394b7a3c3faaeb0acfe98c4606c3d15e4ed4aea62a 00000000000000011b78e49e37890f50ee8a4099bf0f95c3ffb4d14e7b37e556 +284200 0000000000000000ac3c525ea98f50756561267db55982e7110a8656860c352c 65c8a91549f4a571fd8ef19d5273a113d0efc6d5e458994ec2db1d065151856d 00000000000000004e3a718623fb039c80c6a55d6365d992e566ba5bb6ec12de +284300 00000000000000012bbdde4be601b0e2f38f6b95ed723865d4159981d184363d 8d24271bf9e6c7b199c3f0b8ccc4b78901f7b11205d96414571b324512ded4b4 00000000000000005a4b46d9d161409f989a282468901942a66b337ff811d216 +284400 0000000000000000dac93e41b02cb856e1cb56ebecdf0840301381be1f80a414 ca76541305227e0d567316dbb136517c6101189a603d942bfd357d599f4e0409 00000000000000019bbe556f2c6f6734656234e00ca5d718bca8177d4da9242e +284500 0000000000000000287262621616107a2395a3a53be6906312b98ec1a90e2044 f52d55fa6da86a8227f80b9438585201d3ff925885811456a6ea947c8f81a4fd 00000000000000015e1310c14462c1aa1c0484e94c676f258ff10b968ef18cf6 +284600 0000000000000000ed67cb54c0041a13eee7256a0b7506bb81f95b286ed9e459 dc831fbbde68864c8e27f255130f0c8aa453b6db6ac5635298315d445a95ae41 00000000000000012482cf1672d81b8bc2107959f69fcfed8771e6b30640c558 +284700 000000000000000149647f4906f4dcbb16868de8c9e28fd635fec8341a72061d 8efc7f7767547fd1968b9961c08fb8cd12d699a2d68adfd12696d65495b54998 0000000000000001a210436ba7474883b24d5538bad5791f0dc4e83f22dc6c9f +284800 000000000000000132407dcf9d284c8c83812dae17e80f2af04c42aeafed4414 da41f9132a4ff5e65cc4e6642faab0eb3b6f9e52c5c635ea0e0de24065ce42c1 00000000000000010cfdc95007c2e354eea43dc93b0ada976829d0deb271c040 +284900 0000000000000000c1caaadf429196b12152fc7bb381d99fb974235ab248c33c 7f865d036a1f12d5185cf755deb4c528bd033eccc0096fa2481ca19c36ca5b32 000000000000000055ba357c1cd883510ed9ffb285cd2f9192c1fdb2df6fc811 +285000 0000000000000000d025f124aa161818f131b56f67d26ea96646ca2ccf671a61 69deff68fd7e2f9abc1d469e0912c92c2ae05afc7668793ce48d84d1705f0665 0000000000000000ebe6e22b223ff351c37da2d36c663e0d20be6f25ad1bb983 +285100 0000000000000001156258d00b6cb2a3201a9fc795f806f3f9ec7ca2e27b5b31 1da7a78f82d508ab97a8c027c8ab2af1dd8164df43d99e643b79c6cef27c31f4 00000000000000003c714905167b49710e26d3764a17539d8e473ae9edda9a4c +285200 000000000000000124b252a898d513b71a5fd7b3a2eb3cd5fadf5042e378b9ab 89ac976b35ae2f42bf04102b28430280c5d1e520b2263961122ac6eb8d39210f 00000000000000016b56f2579c2decce27d4ba0ce85a057cf16616c6fccbde61 +285300 0000000000000000c3e3baf02cd43f93a4be1775974856bf3116d35559705859 c31950d94cf3523264cab1dcd91ce89946c3b8460e43331def16afde00865e87 000000000000000033ddafe6d31fb236efaa398534c08455590a2d8d5de1e6ac +285400 0000000000000000c01db62156f56e61df0d4039f8a8a6610893e15606da2c8f e26af1bf46a03c85f2f0072547244acacb970caf3aa30440fba7f1e995fdd671 0000000000000000a0c32ba07f65333ad3152ac20d4962555cc2d7cce1922036 +285500 00000000000000004260cc16003d2afab1d55d46f0238b2cafae648a9cc5b2e7 fa24fd5f8744af0fcc1a665e3e3c70ee25a3d9e0484f060c557b031eb118b4aa 00000000000000014e4c9202524f0ba58a76e81c7dc4870a7e4cca6008a2b36d +285600 00000000000000016bcec5831cb6e48edcf7d9becf53a6912405c44cfa8863fe c3006d0b38023a8cba268de97cb66ac3c59101f594016b69a0d305d861a2443c 00000000000000011f71027b076b028440e9f00e24927d2baeced27a6e570915 +285700 000000000000000048a5ab521658492bb040557c7c62c7b5dd4881aa082c2c95 4803c49e637420ff8f16fe6179296099276f1d52ea135769de2060ea8c5def49 00000000000000007470d3d84a48aa2a230c46d6bdd2b7fb5d53d2b19212b5c9 +285800 00000000000000003a10a3e64dd998c50abf51e4c5e2bae180e49f354bf09a92 319d53b4146919eef35f593a264aa82a8ae6bad7f592b5e75eacdf194489e30b 00000000000000000979fe3cb46ba5025f00e2ecf2f7063a7820bae8804842b7 +285900 000000000000000070777247d6ab4cd19406b593ba55aabb3a3e107f6793e7b1 c6fa3a4b7a98193b340fb33da7e86849aeef336bb530e0787d6f78c713043398 000000000000000011db3b350e9aa728e800de663051a4bb8e8fc5215db7e32e +286000 00000000000000004388ae444347bde423f2f3aa6ef335b50909f5bc27d31ea3 0a92bfea83bf605458102edb8cd2d68782a44876df432fa76f107e3efd2fa85a 00000000000000012f5d301e9e40642ff62d5ac36be969aa7ac5f3f4fec8087d +286100 00000000000000000e9864ab962bd98556d4e3651b9cc61aae03f5fa6a94710c e9e82e304207896ee2669484506b42020e17d094c829ada0257f091f55c2bbed 000000000000000110b984c329459cf965809dc46d586ce597eb6e8552c98387 +286200 00000000000000001c74f260ea15482a66268b776ad76ba034b34f3a3108043b 2e9cd105e3d1d3682aae0e4e79658c6a2ae348a846b94ea90378b18e5adcfb69 0000000000000000d1917940265de5b39607416df92988931156038f307f540c +286300 0000000000000000d6e0f08bbf66367e4b5c06a51b0551b99d170d817f3af317 9ad92fca077f7153b91c9f2f8b75f94a612b3db959494642a0dcd37227c02b13 00000000000000011a3e87f096d1c869a0a2f7bb379168fafdfbc9797ca7d86c +286400 00000000000000007be8701cde6f30c19adc6d530a56a9f63d17941fb0ed184d ad5d387f46d2004c79033e5606f20d41ec6a988fe5a538faa01babcf84e815f1 0000000000000000a1a0b682589994aa74307f1c4c800518fb4ad3e0f740b7ca +286500 000000000000000142cb716e0a4d61f3f67ab2a2c484d53fb88b5398826cfde0 7aa2d5108144aab9d27b2268ff3304f2de88152e5331245e3f3d2454c7269c8a 00000000000000002fb6246d5c64db709795a29300b209425224eb2bce75647f +286600 000000000000000099c2cc4919800b904f55ab01022c2e64d5152eb3c5bad64e 34d568cde6125c7d70c4a02df9acc3c70eb16e34a25da80755fb3d7292294d4f 00000000000000000d64d1510d89fca9a2ac9a248630cb06a9a5237faa48686a +286700 000000000000000001c896b7944645b1b95ed65ef47e934bc59ca0aa7d0d4ef7 f8f5f2892be593db8d3a5f623ad028fdccbd23f6237b3f760280119d2b5e0a8e 0000000000000000e876078ed61b13cc88ae370c4f5695dd87cc4ccc054b3cad +286800 00000000000000000f744d59b18215051ee7de538c0acc4903938d1845e3e383 7a4276a9947c2bc62e7b1ea1716953e8354bffc1d73b7f586b46151b131c44c7 00000000000000008d0582522856f8d77a836cee246eb9432a06ff2cbd84f101 +286900 00000000000000010ab3dd8d388ed447331adf94ac301b2cf4407d644c172ee2 97f5dea6e31d59657655e52121b0335fbc93f829ca3290ccad295fb8e52ef082 00000000000000014d060beecee34860a3fc4c8f99ff011fea2cabf89a5ec2fe +287000 0000000000000000cc22cc938f92ecc3a3844f23775c4ad4e66404563c8594c8 c691094ac42e9e6132494d9b8892cd2f27e4cb3d0f63158a50cfb0b2294735c3 00000000000000001f98a9814d29da5d07036e07843d3e0cff9981e90454e1b2 +287100 00000000000000003ad8020fe115c2c6dba884d18cdf83c8fcd9e044aede1a84 d2bf77290ac9b3d72d2e8d3a8352bf67d17bfa28b726a899346e23065a8c9854 00000000000000013eabe1750e3519b9257845adde021191ec7852dc5a3b9fa1 +287200 000000000000000083087d4c7c5eaabe73f0512341ff368f96fdad48e6012ce4 4ecb472e612076494195e87b88747f0787c68f670bfb8bddc80b75edb3ece899 0000000000000000565e1a9248c92b2c2bff254e44b74a828e13af67b582a160 +287300 00000000000000014eb8946d79bf47aa7f64dff47900eef5310dc738a02646e7 eec8096c7f91291835b8315e19f7e20709eac7301e30c765b6b8591b63834745 000000000000000099b760126596fb8b1a66b58aad3247c12989b51b1be2adc1 +287400 00000000000000001cafb61b113750efd941178518d26d438f67e242bc9455fd 7df38a4c20037117ef4bcfbbcc55a469eeed9b76bef9d4e415798a6ac434f3de 000000000000000048242aefd17f8571ff7d70eb1a943e8e89aa72050d350367 +287500 00000000000000010e4bc33648dd91878a3b583b0a56eb9c31cbcf3d53aada4d b2402c4c0f2238094ba89d4c2355114f2d31092cf48c09043b05ce4d6468c949 000000000000000069b849b423030e063b7beec0d493c30426e2f18ee94ca8e7 +287600 00000000000000002e2775bfc466c898c3a73f106096058c51174dd51a79ba59 1a59ef369697770b699bddb2f92d083516f66a98c3e7f6436b9c33383b6508b2 00000000000000008c246a55a614dcc13b33959ead2191906952fdc35d3df3ef +287700 000000000000000107e6957ab937867e1ca49511fc91a0bd17da2dbeb864c32c 9ab630d4b950c92219f41876e756cb8701732f326b0908b2d39718825ba4598e 0000000000000001146c58bec4c7f2e5fbe566b7cdd6bf707791dec9b7bc9a49 +287800 000000000000000144db7ed017e1345289641fdada1fa72f1ed922da511f0e78 32d40470ae9c26459da759995169546f46b9bc14c63f64c5ed18ee62ec7e5443 000000000000000043348304d2ace14ffc08a9ef0510baecc59c14c87fdb3dd8 +287900 0000000000000000e057e874b1adec1d984cb42c1a6a6021b107ffe3b14663b9 f79e01160f3da5c4cb8cef99dccc84b866cbed2caaca3a4c2109e332ddf94701 00000000000000011b92e8e3817a6870fa55a9405117e0ad3b6ccc90b3a1bb3e +288000 00000000000000003c395f08779c3ac1301488b8a18c0999c008129a55610785 3574587d4addf6a65d41d31ef00e70e9c7546221b989a4ae55473dc0aac64d85 000000000000000125929e53afa23bbd42082294ea2035244570f993f4fc93d8 +288100 00000000000000001292e926c8803a0e2f6f77a10c010ca42dea125249eedfaa 40767880192f7fce1f1cca37891cfe4a04d104d1a1fbe858ff474bd1f2aed7cf 0000000000000000601959a5288b58d294925be29cbf74b5c8b32b90e6fa2cd0 +288200 000000000000000119737a9defa712e19b846238bec8cd49ee4282ba9145ea52 81cde565053ecb24a9df605ca52446c0674d69dc0ded32647e5e8caedbab1d90 0000000000000000975cfd383864193331f7e79861786fc87c6726ee881eb999 +288300 0000000000000000a1e5b8db167405a96b55ba351e14015c7512fcc0363f051a 9df5ea97a0fd484659e9754f22e0d673dc1635fc3a4ef54f9ee01cbc944acfa1 0000000000000000f5f123fdd152ae9ab2380053b7b0d3e0c303d0aca0c70afe +288400 0000000000000000fb4a82b667cd4af4dafd995da2f587d8fe7e716c69c08bbd c056f23bbc1ab215d4ac3b1954c74241543545cc2bdb513bbc0ebf67b13c3ce9 0000000000000000d8794082ac5df3a5de7570809b2465064ec151a58fdce149 +288500 0000000000000000b68fae61a0e53c5268c0c105ffb73f2b2b69cbccd9728262 1264d1d3e951670056008db5bfd955e474c2ae2fb32cf8ac009f7844b06014ad 000000000000000050416b5644d54573704e881bd9e701077e7ae625b3261bcb +288600 0000000000000000655f65f45e4dd6e23dbb7d8a2adfa32fde1952afdf473f31 30f0eff6694046e2f062900053db73da3770d979c68478c3e5e94563620194d8 0000000000000000ca09971febee4e777af43c63199e88dcc73bc170114d6f94 +288700 000000000000000047f9f2eddbd328d9faf4970d37bbb8c70f3e8faaaf1f05f1 c1c5cc5342c4bd69a316710708492792b5e64a8523bea79b267ecf6f3c51dd08 0000000000000000adec48f5a6472f47f52790d9c6133d541b52541b30c32e12 +288800 00000000000000001d8741a48769a10c363a281d9270546a7064fad6bac61f9c 85a0aefbfeeb202f234be73d1d08e7185d408553bc71b15a2a2492bfa4df4566 00000000000000005bf594bc7897e567913189ae700c28ece1f23a1691fa3623 +288900 0000000000000000eb4f10803b07945ba83dabf3d9d2dc182f36cedbdc4b24ae 59ea49f4a598032b067d68edbecbfd665061aa7e0224a79585b49094033d248b 000000000000000064e4e3c9a766d46430a9d2123220368a68dec03dafc64e42 +289000 00000000000000011a75b1aa12c0a928d350c7ddfc6566ebd02c4a60dbacbecd cb2beed1bcc3800c93b42a0d1ba1f215d00d4d79ee93098ca3ff714caea2fd81 00000000000000009001dc83291eb913c786cf0f0740a95f0897561054f71b6c +289100 000000000000000049cc5d6ab637b8e0ec8bf07cfe1be201f1b6660547d1237f 4123ea7bbe222a306204c4570f831f61aa36993973aa2f21394cc32763ff154e 0000000000000000fcb76151d00ca0871f3a25439657b56aa05e65d6931248c5 +289200 00000000000000010c9905f049f38ed9d419a50456f4f6f804d37405a6c778a5 746163121b1170b2040f97475112ae07ce0a0616f273598b29aa1af26bb5907f 00000000000000006895227ec37b1a65cd6c7fe118beb9ea92dc4b230a181d1c +289300 000000000000000080cbef0c18a5923ee4efd47e33d81c91a59c1131e0ecfdfc 2c0f6e126be6a44296d6b3e84a0299303bf1e2725933cba9e7552aba0b4e10fa 000000000000000035f3aa2275152ebda01a86a42f8ac5a8dffdcbf3fba46fee +289400 00000000000000009058a220dad9179cf68fbe3e80ef8499a618ff4f278aa8bc d2a3a3d9902667ac020c19f5198425900297d89b52d4eb77b494465a486000d6 00000000000000008dbd8a084f2f4a8b9f24440a85a6356861800e5cb6ca3728 +289500 000000000000000007d1b99aba4ec0b0d4fd88438c80cd44d43f46643b7f0bba 4a9f1506355b0a1a8c16ed21a1f7b1bb5debdb4b854afaffe756fa9bb4685dea 00000000000000001708b3a7debd9b0547bf98d4e7fc1dbdfafb4936e506ec4a +289600 00000000000000010bdf444a883554cc24afb93b5ddb3fc204a023cd6a217ffc 6af3ba6a89027fa0d153a530eab383b32614fd298a75d94150e5bc61640c75d4 00000000000000005a7fd768fc47d1cb42808c0d35c3846e64f6540a7a5612d8 +289700 0000000000000000df8ceef47bd89ae84b0a59315a3ce7c39eb1fa91d8a73c18 657ff13885dfdd917109167e8f0e2c596bb72504a1fd85c626a7aaeee952f952 00000000000000001bbbe3c6edf90cf5880ef7d2ec84c3fb644108bedb196f91 +289800 0000000000000000ca676c64852df8324db0be8c83de1eab3cf43fdfe5ee0f32 bc67ce01c6758ac63d9e180b0f55661ef5789e4704b49e1e498695d62860214a 00000000000000003308fd38d238e2caa4c8606a9e26e7d4e8315a93492f37b4 +289900 0000000000000000ad930dca0bb216e07d9fefb4f1403108eb16d36fb943023e 895ede3bff3e7f48957114fcd2f64e44f7503348abc571600d657ee77d117aa3 0000000000000000b69de5a6572b1096079fdf7cf8d20700b983efb82e35bbeb +290000 0000000000000000fa0b2badd05db0178623ebf8dd081fe7eb874c26e27d0b3b fdff0769af6d06acd79246fde9ccdfcddc8f9d796c1160c7cfc830548cea6f7d 00000000000000006fa3f3b92c95c83ddd9026af8e00227c2acd34b35a7bb290 +290100 00000000000000010f7162ad6f2925efe2c03c57d231a5513ede658cd6e2fad4 8779d446cf82c8a089a94399e5f7bf4b0919dd2ed35f7ad5722c388899630f75 00000000000000002b5e3edd24911f9d0cf0cb23efcbc0c80d5c75ca34344d77 +290200 0000000000000000fe86c26d33efd45350058cf89e6c044ae5dd4a1120e0a3b1 22aef709d0a6891e1f527a73e5afddc6626dc1515025611e3d46ab2adebbb216 000000000000000115f6cc6ca4948fdcd1c8ff4e1022a6dcba6593e88f160404 +290300 0000000000000000fa4e98bc541f1d62bb67fe81f3a35d0cc7f65979819be22c 0c3eab2917cf5531a768253662d40e02252a1841d0127d0914b842310bb1c79b 00000000000000001d4cba7e14340fb91bc2dc54967a6cbe4b92bc625b750a39 +290400 00000000000000007d2257505a400a13c1ce73398813882bbe9d804dde7e3be1 8dd8c1e2e68ad8e181855a1122d259b5f48a90ade332bec27b2128e14a996093 0000000000000000eeb318d112cc07af21feeb54924905f596a6c9a06e9763a1 +290500 0000000000000000cddfdf9d6d4f505253875f91a9cadfcff5dcdc4354afaebf f44fdeb33065eb33c77963daede542e34a2162e86244ee2619ea206ca13bca19 0000000000000000ea472d1a47e9acf339f1219516d1921f5f7df02187f6392c +290600 0000000000000000b642b496e742a6ceecac7f354c3554581418fb80b5f15551 1f252fa7937b13a0b499a37c93d576a76f19b3e3ce7089570e0dc89ede894d65 000000000000000078d7dc06074c522c4ad3f012cd6371de6c6500042d5cfc7a +290700 0000000000000000d96391b4059abc27a68fc8a41bbd4f92c5eb8e3b3390f83e 83197fd29db1da26880d1193771f2023d3b1c58a9cf667093665bde6950323ab 00000000000000007432c280f97ae31847eaf23601de29b54abf85ae46fe90bc +290800 0000000000000000eead43444d176cb781037af2856f549c8a4347aa27314524 5917f985daeabb775eb753fce204641460a8dcc8256719a33618a6366e7856d4 0000000000000000e01b06fb9f3f038b8bc3a95d16c8849d1e9fd0cd77e929ec +290900 0000000000000000dc2f06ce83f138e65156b6feb12de559c8956a5b0a682408 dcf7f1da2c28e0225d85e26f204d137ea9a25021b2236e4e4ee8cd327d1d712d 00000000000000009cfd996a370cf34a618d8bfb80c360d132e393d2019cb9c6 +291000 00000000000000010222dcffaebb28d85c1e594c65fc5f5aeabff69ee40295bb 0651288ca80a48887f8e1a56236bfaebdd3024490b23f6f5a19734d8ebb13da4 0000000000000000c19865f61eb99fa0cbc4a6f8e01dff825a7e828bd1daa869 +291100 000000000000000045ce9a402bfc7c20e9d590b11110940b1bc4d36020a71fb9 2d925796ea925e4e39b53b3be5b75421b90c6abcbbf83680ff951625ebe87390 0000000000000000a5e89b3cdd2b8aaa5e39998b5e08903ce78ecdd1a466ab26 +291200 0000000000000000f1f38d91fb6b655085e0be1bc2dd04f13c95dac9b1f7e873 45b8c8746e185788ed6813c19418691a3e967c9f25c6c7c0de231af3654d1e42 0000000000000000bf331e1c55c1be541fb94380710290eb27164f607e17456a +291300 000000000000000027cc9b90db014baab56dd9534772f9f428a11b0499b67ebd 37e6b2fed5afdb33ac332731dfcc21f3688de242cc101291807893ab24aa96ae 000000000000000023b8e772f76df54f36e6f72355a2411490fbdcf4d2c61c67 +291400 000000000000000050aaeccfd449aa6f9028cc5f0e24a819bcd20ddbd63d8153 a308882a1cb6a8ff81f3a446c156ee4c08c3da76ede03ee843014dfe946d52ed 00000000000000003cdf2a6f73c6bd90c0bead3e2423395b06f874cb51519659 +291500 000000000000000031ca93a2908ff3a668370a36b56f30610b43e63d3e1dfbb1 417c140923f41587a33787df11c0093922cc916e766b65eacd9057d35410c0db 0000000000000000ef8012afc83c782e378448ec5cf77350cc43dda006bc6d89 +291600 0000000000000000d73d6b4a44f306c58365eaf63caeaf648e318553262d2038 e846f7c5b505ac591957d5bc687e6c33988aa5d1e5b87a859268e3ae9c54d595 0000000000000000e0d04109a83c757985daec48b943251fd5122c60d13ca367 +291700 0000000000000000c6e1c37e399e6e604cc4946a8a1fa2161b3850052ea139dd ece5cfe8fe965f57656e205e54ecef45e0639c253c70c21fcf19c0dc9aef2712 000000000000000001729541c5acece7cca7b6938489543efc27dd63cb51b154 +291800 0000000000000000e16f7c079c40785d1ae23db767e7b9d76979357202c821c3 aac4fcdc6742b71cd61da74cab3ca7a3c3368ab46c2f4dfb3bbb865a9f8ded93 000000000000000065139be6b58c4f6173fd8adc49b1b561bc018cf8c9d4c9dd +291900 000000000000000006849f869b1cf79d3a6c0c0b4f39171133f1bcc8f85fbfba 474b962ff6e0cff38909f6912c72ee8ed19af25661783ad2f6fe2017b2493e9f 0000000000000000cc813bd26384ce09a2a699c3cf1de74cef7ce47c6defd376 +292000 0000000000000000620671231acb6a68134a0396235dcb0e53f4fc82bbaa1184 8bb33007a3b5798eb501df456476540d017923f35795e0855ccca36d6a5c9f89 0000000000000000b55300241bf11d4e59066bdf0af3baa1d5e61fef4a897305 +292100 0000000000000000c5436d1f651915bedd176ef0c0921969327856ceeb462f45 a97cbd3da7dd24cc0fa6d5e7b164c7792205f53ac7d52e992889a33bc8eb788a 000000000000000009ca3a7816de0b37a86393d1c06b0dd139175cea5fa9c73e +292200 00000000000000004c705e49acf467fc0b67c6eee8b03bf3ab7c327e89664594 cfbe0ab037728b49ecadaadc3d99e029ae5400fac11a0cd4e3ac9fbf75ea603c 0000000000000000de8dd5c7ac1962f6246e93cbd03e19e074e68f56e98138b8 +292300 000000000000000012c096882cba1c4f1d4b57bdf7f2f6f174486d83619d3db5 4167814cee8ebf3a9586b3eb7cbca6c9146eccfe69134f16e4a55fad8605c57c 00000000000000001f9fd24524ff21ad36100b81ce29fe580542327fe65d4520 +292400 00000000000000006ea2741c9ab1e9fff07ea06959057f93ee476685b74a19a1 bca4385d7e02a8ab6e8dad6b65a0564466fc86617bf78eebd10eead2cd4dfc6d 00000000000000005f3189269d2c39711d6a340a617267d72f95848a9ab8e7ba +292500 00000000000000001f81c01efa8b9f4a5432e4a41f1a3c76d647441f70f57b1c 21ee8a03441730258fec24b1142da8f7b01b33a344c15e681cf543a11f79c4e6 00000000000000007868fcc7057217ece9328c89a834f25d0ba122cd45faee0c +292600 00000000000000008a3f59e98246329a64f73661d6d7d219da8e11492682faf3 abd7aa509c83147006cd4f3fb1342428e2307453973c2d9b5f8a8ceb6ed63283 0000000000000000249ae58fbd0beb62df1572ab4c97187e4ade467ab4d041f3 +292700 000000000000000007570f99ecc4e71c97dbbb24eb8d2e8b436e92baa5955872 fa233237da8b365ed9133c192f4564a4519ddb34f07b839b0a402a7df31ad771 0000000000000000a07fad23fe18ac0e9cfe9759071f1d65416bfc6a21514aa1 +292800 000000000000000066c40be228b940924a3b6e2f6fd0baa393938f1cd93f0cad 77d74e4ddc004f3c23c0883946fbc775b3c4121a071ccd4f5ecc68e76036600d 0000000000000000254494524806089e1b92eb36e810ba02dad81d2d3d1f271b +292900 00000000000000001544a7fce213d98be118f550c792624758d2015165d003ab 8c260198830b0bfec22321e99cb643b3bc8d3fffeeb1fb82c2c32e8c5e4da4e2 0000000000000000475115027af8b17991c8c5ed424f08472c7518cbd524a9fa +293000 0000000000000000c504bdea36e531d8089d324f2d936c86e3274f97f8a44328 d5866550b2082fe0373f808d287c36b2b0468fc151a1f3e1251bc6c1552f58a9 0000000000000000a1e689745cf34cbca48fb2d75fa6b37a5d8fe95dd022fd38 +293100 000000000000000054896dca83117f36425bd3fe70f074ff0aa7a08ff18bbcd8 399da97bc095bcec34db22db2395820e37e9da234cdf36dca0fa2e77b88eb619 00000000000000003d137dc7379fa5281448168cc091fbe1e37d8ad6d4e00a05 +293200 00000000000000005eadb43dfece16412b34d3f2254fcdce4616ee2dbb552af5 c28f468e0e663a2ea0302a4a15744a66109b65a800139dc542301ed0f9373f08 0000000000000000812e8144a4015599baa128f26d93b66efa5321f5a0a10314 +293300 000000000000000027cf100b0d94ded2cb3e016f58d65fe34a9764720720522e 388d37cdabade0db913dae178825f582ddccfd6bf0e732b7747ed32d198b1bd8 000000000000000022995d27723671fb604126b9331ebbdabfa966d7534f6c36 +293400 0000000000000000af26d2a66747a1f884f7414c9ffc49cbe1a5baed35ac8c24 07dbc52f3b927e276b67bfb3f815dc6cebfc37603ff2c3489b56314f2b5216c5 0000000000000000382b3b455bc977cdb682297af44a65f3d8a3958c287faee2 +293500 00000000000000004e3d424ec2a0c9c1f09daca6d420918161ffb54ef5304435 277ffc871d33543689ac1635f704c1fa6355dbfb876344620e2ac25e7190ac39 000000000000000037cc63a18ce75743a430f1869572a834ced91f88ce27983f +293600 00000000000000007e95b544a9a2b9b6af348322045bc8c17768229aceeb11fc e57503aa75a1c84f344ecdbb057a86dfc08804c835f69b287cd70475e9d986ef 0000000000000000702d5e943f88573f6f310851e7a43eaabffdfa64f827c5e4 +293700 0000000000000000462902b4c3c032075bfba51e88b1ba02ae0e091ecbb8d7a1 6e97e889cbfcaf54e64e4796e64ffdab3560addabcc48c7492f33d3d245e5b44 000000000000000058f27391b0782b4998cbdbc520e6aa9f3b88b6e1940a3e5b +293800 00000000000000007d6d2b65791e36f18a72a6be094523dca279a57cf0a2a2b7 155ac294493ec8db005f649310f1d2c7be774551b915586624e48a8bfafbed30 000000000000000030edb38d9e91862473d8cd0b8443c0720926f2228a493490 +293900 0000000000000000d6b91012710ed1264eb050a08268890c3b85fd1c0e12c98f e5b2c688e9281c62ef7ab987268e6674feb03e15de208ac161a3197c460b9d35 00000000000000004a1acac921d3f40fb8bd21ef24d6e8243e0a33fedb48b4ce +294000 0000000000000000cb2540b3f00ce422887904c75b24bf75b8a73817302a4138 7f4b4c401a7ef83efba4f8e8d1173bd94033ca4c62bb708149d5138437d1b058 0000000000000000b2b41965d8307c588f5fcb4833ad51a7bb98009a4932d222 +294100 0000000000000000b5cd443a89e70b2afee57cbfcec24897dfb1f7891a0829c6 c5f8ff869b8f7e577e991f8b19bb04720a41a715e9f17f3354e465b46acdc073 00000000000000009277af310f51dbbf1257c9153ebaf561e5afa2765bb622d0 +294200 0000000000000000d869d4cff0dad03d98533fa16dbfeaf47e52db03be65c6e5 9c78ace3b3565d3d995bb14d19d56c780bd470d3d7a49e2cecc9d9768fe1ef73 000000000000000093b7699b9ebda415780243e0382209303f667b9ce6d03522 +294300 00000000000000008f06cc0e9ac75d7474a65756c1e94ac0fc68da20f68b74f7 08cc055a6beb96664e4d4e58b7d1e27aea735e265918ecbb66e30994d3545eb9 000000000000000037f5cdcb7c3e105d993865fb9a966fd86da1ab9a9a77837c +294400 00000000000000003be6fa731f5754ee4e521ded68ec317f35dabbfab0708585 a3a680f32c78928f6107dc957f8f622cc50c07313f1a17e6d5519985c066f7a0 0000000000000000a335fdcc5e342f063d20188f925d484786a58e54e18c1ddf +294500 00000000000000003dbf9c6765f0afbbbfef153e01e5633605ed0c6adc8c637d 9dbe61f51347e4fd3839b75935a1a003f8e13100fd1df2d18b9bf068277f3a32 00000000000000008b00c6aef067d78f7caf65a93143ebaabb14b0a939a8ab4b +294600 00000000000000003068d278567fa562461ca7918541b0e6d7cfebe833710138 e22d1ae0d4118ebcf1f95386cd133b8be36dc7693078a01263aa60b937dd4779 0000000000000000023936b74a0ff311e690ec84b56c79bde223dff4e6efd704 +294700 0000000000000000af2f965646e99b10fba6d73e5ac1c43978d79ca03a3d7ec7 43c6866852976e044b0c97bf59d58427283c8c2634a52982f3d14fbfde3cac70 000000000000000025a271d65fc418b4c83d27d30d2e1a8ee17e3e9597a417f7 +294800 00000000000000001e36c00dbef8374188596ef10c32cb97b8cf359d95895ec4 ae399528a1114c114a85685665823758b0c543ccec7961d7e0c8810f35ec83dd 000000000000000037df4c756c105e9f17fec0e8badb17c1e76663251da941b8 +294900 00000000000000002bb463509058358b5671af41e3b5314bb6e8046852d9106f 34c2c1dab3350c28ed5f6db77774297cc99672284989b2b632fcca128c20a34f 000000000000000010a941b6fa0ac4eb7ae98510e7ee0ac94a7858d2821c2005 +295000 00000000000000004d9b4ef50f0f9d686fd69db2e03af35a100370c64632a983 a75824921b704cd7f5bbe7c5d28e6245543351b7fbaa17e68dbc3e0def1f9614 0000000000000000242af5e3a276d9c1546dffa6ba59de791c7e89afe929f22c +295100 000000000000000089080c53e9e367b29330ec7d1d2a415935619c2eb413272d 9123dc862d68c4de89f888f8e846d5a334671f066b98ccab11cdaa4e9cac2c8f 000000000000000036c13e964efbfa71adbfb5ea080cc72d77456de46d502a79 +295200 00000000000000005a52e8c0b5ac34c23e75fa672f25c2fb2381927f97717da0 e523bec6fe14bec0abe5bbb601e21f8da84928529671753b9a382243a4861e4b 00000000000000007e31545bc4c2c59aec18070babddffa57c0f37c2e5254650 +295300 0000000000000000a204daffb6763902a65d56e2fab0bfab3bab4448a71e0001 0630a9911b6a94096e672126f21a9b0aba2082bc289ffb7aeafbc51a1d9a806f 0000000000000000774ce19b8daa949bdfeb80cd53c66ced9d5e03271bdb2eff +295400 00000000000000008249e4879dfe99e470abc4176578cd1e6ac0e133772843c4 1143575043d33b35950b8250adb73ba999048db1dcd337c16df05c15a1aa8cff 000000000000000053d4b2be27b40f8be10367e342d7ac69b39cddf6281d7003 +295500 00000000000000002bde4e47b9919fa17665f5413f317bf8fc1ae22ce08aa589 9ecf554b56cf6226efe386c208f150e1c0628d18255fee9663113f6fb16712b6 00000000000000003e5f4908edd56289aad4b0bd30ee16a43342d7fe5847c033 +295600 0000000000000000617353ca67e8111089baa4684a021e8bc6ddfe38e2376a93 7b7290d4b28a391503d645dc6fe0a8e477a5fbcc26865816ac3536740fa8834e 0000000000000000b2d2ab925d9755f2365cf7c73df8d2862e492d5fcbcb83b3 +295700 00000000000000008529ee5a0e9c24ae57110ca2268248ff7d2d010000edee30 a5432b1b036e9c887e8e1c202b4e0e1ac7e379b30097e13b4d73f2d62eab5617 000000000000000062b1e31d624f4de9142187b9315d7aa44b0552dff9d938eb +295800 00000000000000003ac384d880cf8907594491d96b487c6025ac6958d0b4b7a2 647b3b9ae5c4e14e3bd5d8b0141e2f8f2cd9fd177e076bea51b6a83c73f55ef4 000000000000000096c7317aa347bb8224df42d3614136ed5ebb760dcbbe1cba +295900 000000000000000048cbf1720f8e888247d3cfc0fd407785d6aa778daf6defe7 6dca8e7b8f12e9ffc33e5baa36d9b97f6e2e4e948cb76e66a0d010f937a59bb6 0000000000000000184cbf85f7b95f08198417a2fbe511014830fb27d67c2aaf +296000 00000000000000009570102278e59ecf045c16ec8c8a5ea85bf823d0ec72e3d0 8d8b028868ab92bc5c1b76f77c0ce00e6885f9786f04cbdc370f3b3adaa9383a 0000000000000000a330622827ca24512b9be55a9be6a489e5c5c22fdb735d9d +296100 0000000000000000498eaa0e5dcab78ec30e6ff7a344038472cd321fba4db6dc 01ea27943c029d3aa4a0b37cb3cffa4f62845f4797e26f20b316300ab89daedc 000000000000000006534f2e453aeac3705bcd1b3dc1794a60d3fdd3460a0ca7 +296200 000000000000000031e30ea7301a0656c506fed415e972f6935c841e99f63e2a cce4304175d5417aef786e0af09c2ae33ae0000c93429b2c0031c347b82f57a6 00000000000000008e108f7a3c6376ac6e73e4cb3b4609ed8958ca616e43ee8b +296300 0000000000000000b0eca6ade9dff8c71dff0aea9f072fa346c9356768f327cd ee2ee064d3630a84494660db664f5fd550632a9a93137804323d5fac4aedbfcf 00000000000000003612f4a909f11261ce38f58afa236d546cc11e86a8abe26c +296400 00000000000000000ccd420c52e3396a1d8da557e755a23b3fccf857e34ccfaf 4665210ce32c321b1b6aea7c5f59ad2977c47708d192d6d9ee7a79562455113d 00000000000000009211c376c5058cae7ac5ccce48e35598c9009d78c4b3f39c +296500 00000000000000004e1ae2e54a9090c1dcd9a4d0d1bf2ea4e36efa40c6fcd49e 7fa8fc3a288290cff9e95ca5045d4ad49379a5b2947efbc5287e8b5171b1cc1a 00000000000000009be8bf743ff7e2947c282cef89f5b054f3fbdc027563df94 +296600 0000000000000000035910c23968d95c52501169c012ca4fe298dab94dd4e420 e968c5bb6ef4d6366549e5ea2892bd282f51104dc9a060868fd1914394665d7a 0000000000000000389e5c7c64425ebe31b678105c62d515a692630f1cde2149 +296700 0000000000000000501148ae551574ff247a761c59ac0baade1457098a8907f1 c5731ceb52adf8894ee9b7b35aec05e9023b6f0d396eee3e6bd936c6f63e34b9 0000000000000000719b92a242af8011c9cda95ac8a7d8e749446d5e00b6a7f1 +296800 000000000000000010bf6f2edeca3e31443934554d9de5e2e927b00260100a68 ec24600f6b12167530694c02d191d624a77b9112f6f3782ec98c33a92e69bd91 00000000000000002a39de0b432023171236b563aa213f0b5438da3ca26d9dc4 +296900 000000000000000039784aeb849908e93db9969d514915d41a73d8f15eec9c12 7c9f590bf5c21a35f5cf9427d444839d0d7e7c9e24e483fd40862d072ddf5a54 00000000000000000a32c48c875df9ac75cacf833abd7b0a095354312f430289 +297000 00000000000000005b7d48c27a70502f45c09c14a55e249802d723ba4370b67b f879feb859d3ca44c2a5eeafc16f93726d6a4a99051e775012240e473d936adf 000000000000000079fd7d472ae544cd46aee44846318bac2951562f14b7bdb8 +297100 00000000000000008b24140b8b36c79f3369e2f738715b4ba78be8529900b677 5fc508354ceb5507d577109deb023d0f8c34076df9feccaf7e256a018c39e0a9 00000000000000009ba0fd3aa1ad71a59e939b82af1a0aec5865f34bc1140c5d +297200 00000000000000007c6437f6abe271cf759600dd18df71ee909ff762fc80be7f b8125d708dd3abdcd1af0fa9ce1e0882c6295be05199a9b9a1d62f22038833f1 00000000000000004dc91fcf6a5698895e36517117fb45b8e292e144cc23b29e +297300 0000000000000000818733897f97b7561a7bbabf86ce14fed23392a5e378706c 1ad900cf747f8c53417436e86c8895f7de8da0d2956ee3c4c78a5c52703a892b 000000000000000015e4d40665db21b08470689af42b9bede9b94e960c3dda32 +297400 00000000000000006fc391d3f460bb75d3874c3abe04322088957685129b374f d6727e4a5b16845658fd1dfb771e6c83911c3b59419be608a8f6da16d78e9cbb 0000000000000000598627f63dd326899b75b751b30e336506f27ad6f940db19 +297500 000000000000000068e783f99e9338be3af1314e746fe9bd84f981809d8ca45d 49cce290eb73cd54056ef74c659f4eeda9035adf32dea6e97dad9d4ded5f703a 00000000000000007a5afa86ed026788599a96cfa6417cfa0ed627461abd0068 +297600 00000000000000004fb3b9aec53be2987714587d4f72c55a59d42d827477b382 0683a25283493ff4dc919f7533d0775cb961a97a8797b455c7afd31c5e6266a6 0000000000000000257a21b8f21f2b084dc7149ecc556ad2f3563e5a5b770575 +297700 000000000000000068658674846d18901aa165300e4a67cfcc5b9f08826de843 a7403c4f211b8ba8a2ed84c3e428f7d791e7f4f2ffebdea55d9547cbcff3991d 00000000000000009c143a1773a5dc24477ec151689bc78ffdd00a232bd533c8 +297800 00000000000000006a7479b39df015ea415a36f9dc6300626712375eac9ac499 ac2cb2f2793ae07b3165f6880c8e5361905e5451a33b943bf5a76367c971a715 00000000000000000356d7ed6a99213fbb1bd93048874b418fc6d03b2ce44ec1 +297900 0000000000000000388fba264cf24a50c98e6f123d2136819b5a48cbe01dc1e8 64def59fd74754942ad2d92a6535f5ca38b9ceb8891cfeb72bed57b61ad358e1 00000000000000007df81ae00c98fdb7b20b6439576dc98d8b8cc0569f3a049c +298000 000000000000000047d2f2eb7278e3f4aded9acaf502f5ec27bab5018b5871f2 c7d0e172a7bc0c6a1814bdabd295cc43ac2cc06664ce9010ac8dec172691483c 0000000000000000889350c2e7875fd9d66961571d80f4d8a1b09cb24c27f3fb +298100 00000000000000008bb2cd4c9680c1c38e21f0f77f4fcca452a8d534038fa3f0 133569d6ca2dbf81c32be0c60eeb0b876b33d4837e8fd3c2dd839a538109ea47 000000000000000029b798afe4f98adcd05e57306511540a5b86809aff8e3ac5 +298200 000000000000000003989769d342b005832d72b2dbfd0c3ecdf9ac3d56b05907 2f775b7463636024e93de137238ab9b353ca9edc38794aa7a0af82c9a06c4e15 0000000000000000843d75471f7ff4de3037dc79fb8cccc4732c8754ed150734 +298300 000000000000000045650a49c73c31abbb8f3b12680ad84311f351ccdda8d7bf 83639ca81150afc83125152cfdb133e71e69bbaebd8c4077ca3df30dbab3b227 000000000000000023ef0c2b68efd04b64074b20cc135ffb562e22099062e6a4 +298400 000000000000000019421c02df6f19274abd7e28bffef3acee3d7929d05e964b dcbb1a7a9eb747d99162edf292219d264042284f13f17fb33ae028fe7a134c18 000000000000000078056e082b11855987e1247f7d9e4a813e3381bad7ed417f +298500 000000000000000069d587f78b63ad24a7d0a099e4a56fb53e292e5691b297cd 641c873d69f83f57377aad0e967d1b20a81f2be3943f2d56d4eef3f9afe7529b 00000000000000000113221b896f40f04121549424a4bbcaeec232e1bf3aa69f +298600 0000000000000000212cda68381a8addad1f050ccccc6ece1c0532f0bd433299 d6e95524aaf396aec0c8e39c934f2edd64ee90ffab45233d0c4f37319ec18504 00000000000000001a9d1bee437f5a661de02e79b678a9e6061cf2ce1711f418 +298700 000000000000000062ac09336a907534b0e7f66a1db2b5800986b64f8f7a5ed5 b9774d934c58de5c5908ae04f3675bde01f0811b10d05cef2b821868d3cede31 00000000000000000d40e24d52a79e2b80060d9bb079791c1526bc46353b68f4 +298800 000000000000000027b15030305ce452841048f1363d594c3e1c547dff3a6ca1 033cd3a5e0fad8f01dc89eac4d5a3fe266e8b6580513b90c968e87d51c6023e2 0000000000000000469132543f5e128530833c279619200c8a224c6c17ddca74 +298900 000000000000000086a120963b2962120bb7d0e8550a0bb854397c2c01ffe374 322c43767d0e23b15d23885cb90850991adefe4c316977ac9524498059972139 00000000000000004d091d124c94605699ec78aa55785b60627f36f14d83937f +299000 0000000000000000720d383669cca3015c56200b48f14de68bfe30d5698d04b9 c6ae04a35e2bfc14afde2e8cbcedb9212857f746d71dbbfeb82b90fdb5f94985 000000000000000007691eb44be47d010cb2d9a73593734da0ac64ed5824423a +299100 00000000000000003211c932eceb1e11c781ebde68794f6abcbd457b5e47b943 52f4abfaa8160fd2dbb98c649fda1d814988be507e24b1976107da7e97f752ca 00000000000000003d3e0b908d6ae9be6a1b526dd7b4b16a5839b58604416927 +299200 000000000000000057cf6671e1b4b9f6e8e77072aaf4ae89142079fd66e78af1 baae22b87e3422466940fd836dbba240051c36c994bcf308398c50ff57b320b8 000000000000000022c3c37c3e0ab0e8916b099c89b895d566f8ebd5f0646ebb +299300 00000000000000005f15bd691e773e75ad809131b01d011839eaa559b3c25bf5 3b1ac1461556930e052d7549ea7afaf929f1882eeb69af58087e8486da66a255 00000000000000005afb3305c2454b681bdd51158c63e5c3fda4a882803e300a +299400 00000000000000004228b624a8eb69ee36a4cccab7f607acce73c1d86fc12491 f43e161c42afef5b0deff0938f1e011269a6dc44aa72da8462c5b729c563ae3c 000000000000000045e0ffaea91bd2c4b5c65bddf1ace28179553888bf895389 +299500 00000000000000006a163c180d7c1eab3b59bd634366589d78f3d42291569e0a 156cadd7c4d2307a6aaeec6aba0833ea8539e00021faf6615e8b11c67df023ce 000000000000000006ba2e55740cc3dae19901843bff8ebc8940d64c12738d1c +299600 000000000000000021fcde24d4c3bad9399d253a5fd65329fffbf7570a068c42 8fc6d41b822284e96461453cae33c46ed54d2bf1d8b134b5e9b1a9c432222882 00000000000000005abc3beb56c8035637acce853b126684e7f8fbe3d9219e36 +299700 00000000000000003365fb16bf3404b2ea32a89985e121ada43bd52c312ea1a4 4e47597da2c89d3be9db213c7f9f1fed30ea8dc6a1a327bf7e6be3333abd4dc5 000000000000000023558610e3cf7fd08afc02b30133dc40e9868bbb7dfec33d +299800 00000000000000000bb95d67fc11a244d140634f020e56dd822efdf7c6108797 e9328962fa1f9129f052c2cb6d33e6233b34fc2787bd872119b7ec68e999f7d7 000000000000000082ab78c5e4799d959df0c6f8d31fa35be4800684f1aca82d +299900 00000000000000001b08dd1c8a7a8e27555d5f0b2d1f322ff9e60ea99fbe06f4 ec86e5a31ecc400df2444acaa65047a8443d6fb324e2ec29b7a6bcf56fdaa514 00000000000000001bdd42d90e927d6840508ca227fe3636b084297190faa80f +300000 000000000000000082ccf8f1557c5d40b21edabb18d2d691cfbf87118bac7254 50afb889eda5598297d2638e4dc8924bd9eba142f6b5ad6885bc97bdb1641ab2 000000000000000049a0914d83df36982c77ac1f65ade6a52bdced2ce312aba9 +300100 00000000000000006679cad9366e85af47d9f78e7ad99cf8516758e38ab76187 5ffb286ca6e17b3cc9c311bab0e7af18e0529d2dd41b60ec540dc40c0c74ae7e 00000000000000002f02a07380086c2bed1681597860694af63ff8019fd756e0 +300200 00000000000000006a6bfcadec4a129c1c07efb4b6d94bb0ded7d3be0f328271 33d4094b83cd762ac80d205369627dcb8a2b6c12d29a33604f7e675ca623c990 00000000000000002a148d14cf6403481c464682d6467bd93aa0815ce994bfc3 +300300 00000000000000001df8b6491d19b129197853fe98c463b817bc43c7343e0736 42e0750a0f0aa2e75a972810fcfbe241634346a053cee645537ab005ef03a44f 00000000000000002887537d323675f79cc5eddce91b3c0dd433739cbfe9c823 +300400 000000000000000067cc249fe1be9051073e931b2b63bdd8245e21f600932269 ed7c68a6de606be420617517b84421a15c956e4f5bb38713753faea5c3a4f4a4 00000000000000000562a9a6e125ac137c57258dd9c812b62e4b2807da214df7 +300500 000000000000000038d7cdcbd44b407f757f30f76f6dbe3d96bd050db3c230df 102cd5850427671cb3387be058e1bd94de11c6ebecd56a29715e015e42a8b547 000000000000000016d9fe34702a3f43b4415ded841eb7450d26025ceb7b3e3d +300600 000000000000000004c7e013d3f07843c6862111256e6276710fe701eea63101 8afc0c1fc54c33f7085d7f598f14bb4f34c0a8a74c41a9481d10a5d7c0d4f99d 00000000000000000fb9707a7897956ed3342938f687ad1d9f538fa989d05801 +300700 00000000000000002e1f08ac61d3ceb85da87ec438a88653c1260312bdb92dc8 59bb354d2bec0cb458fad107a05b1cc61dfcd100e7fe62b6717233f06d081fca 000000000000000037925f78ef4b1f043cae20b217bbf6f40ba4284ce0e5bd83 +300800 0000000000000000547f4cb3dd0cb0aae96a02dbd75048cbc46cfc7062109cb1 3b0bc6609d4a6ffdcac12ccab0c22e202c80e90e8887f00f841fbdbc77a34098 000000000000000057d8bb3d5910b1b3251c4dc6b10015925af1de7f00c8514e +300900 0000000000000000228a5e72176993a645658dbf4eb14c1841d8e3391b314459 a1e24042b37d71a7ccc482502745424b2bb11875899dc54d761da7950f743a91 00000000000000006aff43ee3f0b7636824fd0b3b153e424b8212a23befd9ace +301000 000000000000000041e339634d94f4d0f00748732b43168e777873e494a8cf10 7c2a49406cac54a5a2a668e7630ae5bde08f4863f276bc587fb779f4495a89b7 00000000000000003a8de2c7104fa05ccfd92dc1fcea03d071bc639b070fe7d7 +301100 0000000000000000082f0eaae74bb1a911ae4adce0ac22e4a7ae71046ebb87a7 fdaf25645dbc2b57d1bd30ef934f84270886f86f314f340817ca4412503d1212 0000000000000000688e8a576ed16e1d80f8c16767b728dbea8d25e2fef852bf +301200 000000000000000026acb172f7326c703243d057c2032b88a897f227f1304502 19f61831145613285e222bf4c288720408d6ac668fe49fbd9967db223745feb4 00000000000000003d2effc554b4a2b5c14f6f47aba5a7d9ef5185a21b7767d5 +301300 000000000000000043a8c8f8465804e52f2c61055c3521c8a7fe5bc27f3ebb7d a4592b2cbe066bab8927c20ff19048b97ef82708c24d21a8d425d929d337e9af 000000000000000071075ab3a8b4b30b7c2a14aadc0da7b738fbd54d49efb952 +301400 00000000000000002437c1aafbc43c7e208467f04c7ef58810c29943ea22cd04 8815c9f96051f6ab0611d6c5649d15b09c158f7a566a8fe38dcbe47cd9b464b4 00000000000000002aa48351cd085865eb0a0a865b7dc1243b97742d7444ba23 +301500 000000000000000014288d18f6334634e7d936dd9fc9c896c48a078945d6ba9d 07a50c2032eba19fd8c4c7071b67a8c8b9f4bd56a0922a264bd566d4829f419e 000000000000000018676072817c0ac311fb1a71c5139307dbb89fa74a9ec18a +301600 000000000000000031194707ced2a733deef9fc6839c501f30e8881b78fd9d5f 3615c6a8094585aed6bfe886387a3b5b730ada2533ba80e7e25321f5304d22cb 00000000000000000ead697c48946b6f39745a32cc21ee6965f41ea389395ae2 +301700 000000000000000032c5a7f505dec5f805258c7a958bc7444eccb967f1a4cec6 f0e0c7baa1ccb4136e192987225980b5a4e3fdaf494dc4a7e89cee0c49e70057 0000000000000000232dc161e89ea36ebfddaaf3c34dd7df18cead5958928e87 +301800 000000000000000074e985a44c4812af3a02312c1b04d03b2524a328dbc78ed0 48b19adfe4f60ee189e8dd13bc9619934f7a99e4208bc6c98bf3910f100737ef 0000000000000000199cf338784f2be7414da39805b691f3fea8167ea6bd1ee7 +301900 0000000000000000593193aa4baa2d2502a8ee3df81144880ffa2411f131fdf2 109266e07e1b465d6c2ed0ebd6ac69e7a9f32a09967f014fb0775ec95a5185ad 00000000000000006413f3bdbd8dade56601d583c3d1bd60e184616ff5878ed0 +302000 0000000000000000072268c9bb18603566ed5012378c29bb4d37e34cead7448d b822fdc5e4a32463010130baa60aa2441bc985e476fcf10c5d1a4fe704c8f726 000000000000000073fae68fe1d836d0267e1223de5d84f95adf177f5e16a337 +302100 00000000000000000dd020ac75e588afe79fb17157bdecfecdcc6fd5ba44ae9d e7f104b0dbc08b8f269d48a0a8eaa54ac50b81c5762b06b3b4f61a74caf9dd8c 00000000000000005f74a9790e7c493bf003312c0ca3db1c9c7571cda675b929 +302200 00000000000000006e602194ec61accc3a0227c5e38095dbd687e3aff5662a2c 83d8cecd5d8220f0d0e35aa64053872d50cf7eabff79b45e4db85ffa59425697 000000000000000068c196d8e6c9d1a0e930479c8db795b265f700305100fc13 +302300 00000000000000004cc7991514d5dac65a657de3cd8539933b914c8324f6c728 e833f4d361e0565303bb34744ece16ab2c5251bed905b6fed0ea942d3ca56236 000000000000000008e9c848038d9970ee3087bfcfdcb20f6e46a33748d58d39 +302400 0000000000000000472132c4daaf358acaf461ff1c3e96577a74e5ebf91bb170 76891c495380e86c73c6f1a2dbc9290914dcc1463dae6289e7077430cd41f04a 00000000000000004402788afbb094e2d5461babe2e208fd3b707dda468971ab +302500 000000000000000061e8a43e26ef10df0378a2682f8bd28e4c58c8fc56499d1d b3b178a854987085a0aa131d7b78cd2e3a189b0d6b64308f1b051f2717a04296 0000000000000000294923eda9f1083d8fadcadb8b6a35341b6bd91d989730a4 +302600 00000000000000001bdc0e53ef4f04fac11fa8e7f4b18bb70fee5e0156a9e57a cc851e9a6dbd9aa7a6da5c327a0bfd85c6cc22e6c711036c66d5117a4b1a7cbc 00000000000000006584871a819f19d4fb9203526ce1dbb112e00e764166e238 +302700 0000000000000000554f80fb9d618d2db3277c4bb7e7905f105d5f78f2146416 b1c5fe39b3806c9d1462f3ef0be0ac79fdd48ba59bc693b9e3c1fedeea380668 00000000000000001fc32cb12dab0e8361d6d7ae5d2bc95b72185aec28be7523 +302800 000000000000000063cb25ed2dd253106847b83e681f54bac5eed6787c2ea3db 84e9057925cea8c89cf05fbb26b0b5b0cc4e32b4772ed8dca4486bed5ee2a191 00000000000000005f674d1b618d3ce71469e8347403aa81225c07e5a74d0f84 +302900 00000000000000005178df48e6646e04f03ddd7039d5383c2249a2f9208a552d cabd81ce74bee58dfc94fe44403a409605d9c2b848c57414e377160a657b54d0 00000000000000002b25079f5eef7b74080a9abe82fb4b981c6bcaa47e330bc0 +303000 0000000000000000599c62eb9b63a08e8a0a95418caff5ec6af56004f903294e edca7d5e6cf4f610d5bb468d03df4a9a8bd38b80dc078f0638f9f659ec730b09 00000000000000000bb02c740323d2a5a22d286e5d5e441374c6812b2111ef42 +303100 00000000000000005a3abf87dd5a202515fdd6a6b3d1723a60b76d21a6565d65 0fae3c97ee7b0b63581e1f591ba1f128a18989f60f64bca9f57809b8a3fda65e 000000000000000007923c30500dc7c0db4c2b6e902bc9b6b41468791078f5e4 +303200 00000000000000001c659677a9bddc6c4f9b5efd3a9bfab1e9e68ac9df71f5fd 9c77d3d64e9263aee6a17ca338f65b4d2cd61bc4c2b026a2c0b00523383b442c 0000000000000000331b583db82d0a219c69f9dac6498ccf1f89b350cf3234e1 +303300 000000000000000028d7674f9f075d1efc6570210dd7d5e52b07b472a1c83c59 b9e13facfd34ee8344571175770a665d7853a9d02834819b54fb34fad96ee3b3 00000000000000004e820173480af71fa1a16247c55f1b77bed3103219d0c148 +303400 00000000000000004f4a1e4174d8c9d12f548cb8d6f2619835cdc958a660b5d6 83b3f878a8bbf78905832fd3b25286b0dbb71226b3c368e672c7fd38912d1ba0 00000000000000005b0674446650b7e5882db6fa2027ff34d931c9bc48ef3701 +303500 00000000000000001073580ef4667dcce4725cb6250f91294a2825eb38bb1d6f cbf746b1c4f505e24740e1feae14b9a48c166c73dd06225f627851b3a5901c2d 000000000000000055fafafdfbd0953d9bdd0e4a5a506652f9a758d22de618e9 +303600 00000000000000004639436eef09ab6e1b77fb34df7c3afd6d1309f99b055ac0 4747d4e545ca3113c7028170531c93543c8fc1bbf7bc1761069789a220ff841a 00000000000000002dc37eee1de50fb7f7af73f6a3b3c6056e690f9b0ba165fd +303700 00000000000000003b32328532e7cf25cdc85cbddca0ce059437183b78932b7d f3272dbe8ca0a7b82175496aadc33454eb5b905a221799c40b0ceab0aaa79d9e 0000000000000000349c044fcbd656ca01f30e55a143c2fec3a767c6a0e6615c +303800 00000000000000004adfaf0f62677d737635d14fc44a767c66a72c0955725b11 9bc33e447406a26b40f30292f45b07c5226e9b6f52c8da4590b1aa5f2e173df1 00000000000000003dd9024c91b5cb49b93776716e8c3755879ef0c3f3844865 +303900 0000000000000000300787fab271dbb8ac3213a5ca29d0d205161a2ed560126e ca089591973a97cf472190d60e9e63e47f9ecc98789010b9fd5249312b67f620 0000000000000000085b41fda8a7f87c1588bdbd4e266322689d0ee70ed17df7 +304000 00000000000000003558a1ceec3f5338c0e887b4171410195a7fa0a81bcaa628 76301fe0e4381f4ac38e0cccc824063509e3c31c492ba6ea75a79fbd59802b57 000000000000000035b5ce4b07d7e44c04d197aa38db69d34707e6887b319f47 +304100 000000000000000030068f158dc9fa1635d6ac4a48804c46c73deebfc5aafa2a fedf55c15069b505fa35a0dfe40261422f03a6e3c35dbf8ce8b7f0133936d118 00000000000000002a478176d531e5e4cc5d597dc5bbe567fb4c692598d56910 +304200 000000000000000047fb15da0f0cfa3674d9084f206fe5bd65e3431da4389033 87790b939f859b8e3255c29145825161c352f718b05b83e8f24c2fee48228cfa 00000000000000005299a43a486b46fd81600a0dbffe2be744172abaea96c8c7 +304300 0000000000000000447956d7d6c78a470b4753333e0add2a866bfbae9f200e7e 6c33d7e19454da701b6c8460d78cd46a9743fc558f3692264cab5cb4af58c085 00000000000000006147875f3dff28d2083e46cab83797db68d36964146ffef9 +304400 000000000000000065f1f8e79ea2418bb497d5b70b710102f45740b0272c995b 1b2532e5bf3f6eb895fce80872222de938962544321ef4939472472f174e9021 0000000000000000282f550ce6cf73f68e906ece4c17545f6c250fc0f8ea215e +304500 00000000000000004328c3a85562f423020bda113677fe5e318c050ab90238dd 3df9bbb9be597e1b4235c576e0db8a0b771d7524e663df142a5689526d7eb912 00000000000000004e60bf195fac18bf6b2d20ceaabf083faf5b46a1ccf5be57 +304600 000000000000000056d280a5d33e36cca6245c61449f8215b21e07b68bfbbd6b 3108f7cba45fa4c5cb0fe4666916f2b7d2bb6d7d171355a23891e41209268103 000000000000000016a4af2ca70ffdb26f4a8eae5b252ab05940580d154d625a +304700 00000000000000004bb9549cc61514446f1d94a539d9f0349e313bb10603692c 89a1f86d368b5e553f3fe131e99c9d7368f4a145e65a81bd27622fa2e27057ed 0000000000000000088d5ec17960906969f8ba9818daa5547d64333b90e2606b +304800 000000000000000043e530e0b5fc6d13aebe1d260c19f784e4cabd1b290c39d8 4357213ae9f8c48fcbdcdeb467e53f3387ad3f1fbb054ff8428c82486045dded 00000000000000000cc33a97f198280963259dc8b4a609b282c373b7ce4157d3 +304900 000000000000000008cee4cbc7fa26fe5ba1b4e09bbdff1af58a19bc7bb62b9a 11c852980e3ce2171fb87f02d3aafaeba68427504643d150dda79cb668742524 000000000000000038ed54ad1a34e137e2536af744bc5b7f8e2f688788d4f81e +305000 0000000000000000142bb90561e1a907d500bf534a6727a63a92af5b6abc6160 241082afd1113802fab9e8fdba80e70675674311168cfa4ba3d80e45298588ce 000000000000000050ad924af73fd35698f68841e1658536e4fce99ec9262423 +305100 00000000000000003643e0a2fb516c6c3ec8258fa268351fddd06a4cd0db0041 e6ce65fc87edbbbcc9a63cf29e9b464b3d802abe15ddc4236bb3c8173790c2e9 00000000000000004536cd23d89798363520419e4ab050a7c6f5785ca0e2aadd +305200 000000000000000012caf02ef177f064090d3046292dba57f1903f020eccddab f6e8bfe35c507d37ba58dc29a380bb8f2b43622f2fb70d76604aa48ed7c8fec5 00000000000000004b89ef174afb1f7a223fc3c29447c9a5a414360bf2879551 +305300 0000000000000000045fca3fc5fa75b509118e1b5ae91b23dd5e36c4983f0776 5b1551ab598e0c0c5ca51d42b9346e492af7f88e0742ba338cf6f9cb96445eeb 000000000000000033b1531dc55800a5670a685b4d9c5e7f05877c6234485a8b +305400 0000000000000000047558f4d2c0897f52765b5f9a724613ff7c67a929c1412c fb40b7437a2ef673a4682671f246e00e7538c93c7689489c351caff2c76d9863 0000000000000000497ec07f02f4a0b8451fd3f7f6d13361ba3bb171208a430a +305500 000000000000000053d32b888c3c9c80581dc9d2f77314dd20f56aba705e32af 886c2cf19dd31386935fde54b68f1592162430b618dcd243c8cec4f188bee89c 0000000000000000376e3d30ab87d9d6dc6f116d25702ea01097541fd6a597d2 +305600 00000000000000002b1055ee8901fc91e37481f395e490285b4a20bb475ec6fd 297a6633f685d65bb5b2f4c5f4bb2da0b3e0ed7bff23e43809d12a868ff72f01 000000000000000008aafa296bb830992da0446ae9df523647d7c6270e90bf57 +305700 0000000000000000532415fb6ac8291bf01e10eda836f838a0327d606d6fde2c d10854f482e19908e00d36af51cbe17532e35a09a42929fcee01bfc6b4975b11 0000000000000000370065b9940776ec6d7144cf1f2f9ddab58bff5622f8989b +305800 0000000000000000096050317d4595599a3dea55a3fbbdcbc96d5daec1abf1c7 c35a43662b54c7a6292dd4fe65b8e75e7cd3c54dc8a3932ad4614c1a3a689084 00000000000000003601d2cb91623c18cc43e35e54beb611a66ba423469a7380 +305900 00000000000000004bfeb30879a5d60820996843e52c1ebd60008769eeaac0a0 3a77f9febb578f44cdaa36da847b746386769f8009294a15656e592d05331ccb 00000000000000005144b159acea830f5d9a5fd0ef1abc2ff5a4ae16e3c51309 +306000 00000000000000002bb3265a8bf67ec2aa436c297ac7e56fcedd4dbaecccacc0 cad05693e31802e84966b4215983d23bf10a409b5773d2efd8d62dbbe3276be6 00000000000000005c3cad291bfb86105e4b7c480f630a2a4752d3277d9624b7 +306100 0000000000000000373553324c67a7af634f721800d537fc98dd9cac6b8cd4e4 4425416c428c9e0e64e916f280122cf195e1ec9bc7edf44aff0c9f79f5ba981d 0000000000000000146b7b08eec7d3f1d1d08f85108a7a4f8e7e4bbbd3546142 +306200 000000000000000010c01758e3f0a1fd25a76a97dd52a40d062c0ce7318acd71 89f2904e22607fb12a4dad39b48b0c63db51cc3bad46b93a34cd79794c90ced0 000000000000000047a3da6e086c98c3c771f535f2f708d9695dcf73cbb67781 +306300 0000000000000000386cdde96e8df20f0297a936b65284067f622e99612a59b7 69862f79a468678848daa840364dd3cc156acba64c811ef55b9b4dbc7388bb7f 000000000000000041cd2630b59464cbb6af101acab056c5d939fbef40e38d94 +306400 0000000000000000589557007d349d8f4407a7bc492848c3d967b1424aae30b5 9d7b27dc3289aac10bdb3e5779a5685f50821256d81ae86916dbb5c07202d9a4 00000000000000005d6630aa3cb942e624482c35713f06e60f855d5a4af27837 +306500 00000000000000000bc3b64e3c417f97819b6194b2f7dc98e862134271502865 379a7812f32bb1880db7fa096db60ed532fe2bbaf7b78ad5960d4ae1beaf3674 0000000000000000251e463ac169e88680b8a93e45d5dcd0ca5b22050e80b02d +306600 00000000000000002b52c65572066a620aadd81a54b93725e56b8a997711edc4 3f766b5a7d90863f77e12c4219d5e46195f69e75ef9b6ac700086cec19c0746d 00000000000000000289d2dae4bc9f631256ce8b2e48cdeabbd35642d84f9dd9 +306700 00000000000000004c626c6e2ce9889656a2dc61d55a215280e42342f45eaf40 ce153cfad4fd0845f80c9e0da4915667d0731c5417118304f301b1b5bb8d51de 000000000000000018ae2d78388e389dc66b3e3b66935156aec331db39c98837 +306800 0000000000000000184755de8a87e6df5380d80b9c6f039ca29c858229f8e612 ff8072eabbf55bdfbe1098009a9cbc37268b536a12f59b149fab600f6d64ac97 000000000000000001fe92bbb4a1f31ec467cf1437fe4b4a547ce1d356db5be1 +306900 00000000000000000ddab4a16068e01eb0d5014f1fc0bef3c4e2d230200177c5 dc29498a0e9b58dd8589fba7c25fb84d8785506ef70ea5bb500f0fd9e6d8311d 000000000000000002dbca6a196a635f36e0108e52be641d258927748f65c47b +307000 00000000000000001b2993a38435de2e7831ee519bfe0f91fa7486b66d4d4651 4f52a960fa57b65a1c991b1110e230a11f36ce59caa78e8ac1ec8b0e40c80ff3 00000000000000001ab84d7fa7c1735d70c1d6f9e77693d2d0b21ed94f8753b8 +307100 0000000000000000097e8ff7a04c1901454dc417a79b8f403e2b39ec3cb5b37c acbde53f5d4434a3d272ec08bcf99003e9d5be1863c92357aa43640a3167a6f5 000000000000000049a41e6abb510e8c38aa66e6bd4af7ce2514a3c7ee2e8677 +307200 0000000000000000391313d3b235b620eb6e02e680161c6d2bffbbf1c67c83d4 b84b4944c32412a21f445c2aaca468ede5560496acc2ab01747fbca99b6abd48 000000000000000030e428375125ba760e971129f90ed0ac069adf3dff458739 +307300 000000000000000000e53fe05a39ef4fa894ef1851295165b2c84996c00dfa1a cfdcc87d3363217995311609fc4a159e5b98d18fc2495b9a93b2b8c0bfe55bd6 0000000000000000500dd2fd2a9fd9e07c5e94cb67f0b5cf5475b1ca388d4ac6 +307400 00000000000000002146abbcb635d8dc526dd12e8ac50ed5af81d8391647edbb 671977f1f56c00fb00f0c2766fca22268c2148374945672acf9587f3353f5766 00000000000000001678d89536f5338b2c7afa987a280940b407d89e195881e6 +307500 00000000000000004375fd207a3dbbc9debf22d9f4d20a6588f49788f645d569 ee07686e2fb3ae935b5ce42d00c07d1d4a2b35084d25652cba8edd2769203af9 000000000000000050952609e0d97ecc277ac5669972238336d19f1cb43e0ea0 +307600 000000000000000024c4fec09b165477be43d3f49c8499ef5a90e519de13b7ec f0e65ef87b07ef38db2099c486bf39222a15b92294f8437ed65e5fbaf45fc62c 00000000000000002cc9ab1a2a6c8526512b24ddba7437d2c6e2be014d33482e +307700 0000000000000000104a202ceba7db40438ec904262b78abaef0553d122c0769 ab948bd1170afaa7413f209253bb45b02cd1c7dc064191b14ed52269d0d93bda 000000000000000014a7bbe57df6b126f10c3c376d001663b5bad16ec8a7087f +307800 00000000000000001382c0e68f8f26c4a0f1016fa002b4518c7b53c66003a517 8e04da313dc6c1970ecf17bb58e0d19f104f2cba159536ba91e875444f4452be 00000000000000000de7bd6c037cfb5a004df64d1fe946226855cf3690f32cf8 +307900 00000000000000003363fb7cea370222e3378096bb7f8b860befb383fb7b5d8a a264d2945ece3ee20d793e3fdf4dec468d7b643e0ac99a42d34766076d27aff2 0000000000000000103e8ac9e08d52b3c90ce4590a47ac1956f532da7728630a +308000 00000000000000001d55aa114bddd81938d09e2dccd432dec59a4078ca0bc0f4 37af0142c4b3893ba68785dfabb789c2cf097581d37fdf56134403c926c6ccdf 00000000000000002584ecfe801597c83fc011536fbcbfba8dd4375eef09e4c6 +308100 000000000000000011d978ebb95821bc8cc4d2b129e6e8d5d35f804178b5600c ca7262fdebca2a2a6868ee7b830a41b2832a424c860b7bd18d2e7f8c1974d6df 0000000000000000025a7bd9044ac02cefce44517537f0c490d458fa720460be +308200 00000000000000004e121b12c8cbe798131a4085854e4262259e87e8cd214069 4b10836dbb27ed6991d8d3df9e4039e6a66f276c46548fcb903da6871175bdab 00000000000000004386572ca6fe762a4fd81b89a34fc6abc46e018e5e9db4b6 +308300 00000000000000004c5f6a337c51207aa775b1c9f158a051dde13bc86286dd64 592d4e1ff4f4191b5d27e163541dae4c193683f6b2668c8e2acf1ed4d5d7dfca 0000000000000000115d8fbdd670b019571335f1a78d47983699a0073ea1afd0 +308400 000000000000000024e71fe782de10db574a5e3880094e5415f08572a9baa698 1ee7b1fb7c1d134ba9ce1c207faf328bd5a296e6e8760d6be973ce5a2e20b831 00000000000000001227e9ddc5bfb14fc7404007ab3d8300085b878221a8ee33 +308500 000000000000000035ab6897acd661e3d3769bfb7f574b4560a8bd9edfd53e01 3ee375ec217dd6d0c4fc1aa3fb883875e2d07d10f46e3b601fd0461a03793e6d 00000000000000003d25fa8be3ce5c45d7f5227d6649e6d5a467d22660220c3b +308600 00000000000000003b6a8b1204475bc916c086ffff8581d1c4f29a4983acba34 ba4eb8c5e87abc3d51dcb7c1c59c06acaca4c7e89074627cbbef55f2a4529496 00000000000000002806fb7baab4332f43491929392b27d22af2ac2b5a6a8607 +308700 000000000000000000337c3d4b54266ed14ee7e9e0cae5e287d1213fb039f705 96a1f4ce98c85e3a631a6873746c1aef26ce1571bc0a6460bdfc14b49770ce53 00000000000000002af6d16a3bbaf4bbfc8cd328a90c97537595d3941960975f +308800 0000000000000000136d76b525bdd88db3e658233d4b79ef887266a374a6c0b8 38b369513d4b05245a1bd8dcccb3598b1e7ddf32b9ac0f78fca50d05913c4631 00000000000000003e74329e61f8e9237868391e4aa9c843468e3355c87c2915 +308900 0000000000000000187b91020b29b9ffd6837ad5506fd92cabdc2bad57e93022 d9b89f0ec33b579f3fc0b1f8326736d7472616fd5d0abc7698e3e60f24ba99cc 0000000000000000046cca966885e7d98da570d7b98177926da2a24de672de4a +309000 0000000000000000228ffe0a981f4e33225eec2d303a8794585bde3d5a6805b0 f67fafa01cffa64a8199d8d731cf0dd5c3481a97764c2b02feaaa4a202befcd4 00000000000000004033b452b31f115c1943be67eb04e32d844a985a8b74331d +309100 00000000000000002aa928ff4115018610d6931fa124215b8010ad8c1b03ab70 4098651f87805e2808025e68185758bfa0eb2d7d54b796c63025d6aa6b6e784c 00000000000000002f9fead56b638d06f876045d230a817a6327955a9aab012d +309200 00000000000000003cde6b9da06361c1cf6b3a2cf5c882999c4fca93dd7abba0 cdac36d01402cf00753677315a36747bf3607c13fa7e8e440590e948fe009caf 00000000000000003da51af684719457e2c6667a51d5fc783707e1db02e14d6f +309300 000000000000000040cda9e9408bcaa5640f227a94955522748da18f80b14535 266fa711bfbc35efd571715313af4e015ba1300b55911c90c4d1dc58ad3de946 00000000000000001a3919bcd0f118e6d7a107b634588e1eccc233c35bb0bbf3 +309400 000000000000000033a1191fb5cc86814ef3c6135cfb42d7e9daa271f064d095 a76d3fae1a253721a3a6a078b14b2dc4d543293408f2a5b24ba971cbe8623579 00000000000000001559d6fc07cc138807b07202de2399d4fa50ab9b5ed18c59 +309500 0000000000000000143baee0e18b4c04ae79a47ede46862aea68e31a9cb41fb9 9b67a1fe3c7b272e13ce5d4486a0ea81c4d0849188c1ef338f46d579038e5be9 000000000000000029d777920429f29ccd3e431ed51bba7c68d12c4ebfdb3876 +309600 00000000000000001da760c78489460a151275376af624a96c1c8007b4eb226c 0667171252f0edbe91797cd3c7f0b90d9c11b6cd0c57833e681a961c54caf696 00000000000000001eb5e8bb0499c2fc80dd1139a9226d92858543d01cf84a48 +309700 0000000000000000221ea93075df0d1ad975767c3dbffd5cf02492e41f9f8b17 e24d2267288806223e71c64226e1318c13a9c2cee353409b102439005acd691b 000000000000000021dc344e3b8061e7ebbc265deba073e2144682e38e9ac77e +309800 0000000000000000307930087de9ef6e2350e2ae6ef1622e719e97e4fb9267a0 6dbb447fe62ec221a1606af3dda0c707b83211d7396c658dab7283ca8e972a8e 0000000000000000056cf4ead7e0be65da08656d410a5efc2dd1afefb1188496 +309900 00000000000000001d92207534963b3d79dc459a45fcd762b130d13bf459645c 76e6f16704573f234bd2f857de5da3a01b5829be7968a412624c09e1bf41ee25 000000000000000017a33fd820671de45cadb0d4492bd8d63170cb7f7318a835 +310000 0000000000000000125a28cc9e9209ddb75718f599a8039f6c9e7d9f1fb021e0 69204701fe16be8155a7f5f08b72ce35eb4d0aa7bbae83f7e1c0cdc0a0424100 00000000000000000e50e42984c1baafc6cf4d3e4d74d37e056dfa79fc63b5c6 +310100 000000000000000025a7cc0bfcc6cf433d8557a8785ff93b660be3cd56db5ebf 65a554d36913041685a85f8b8574665ce73ea1a8515a716a359c9a2a5db4294f 000000000000000029558930fb39b662de0a8ce92fe9a6ffb240f07a76bf0edd +310200 00000000000000003dd638bb4ef10499f172d613ee0cb342067312445b5257da 80244e7f29c4ae145d6c6562697367d3dda03f3f7eae1c9134833e217604aae9 00000000000000002c2086e7d985727fdd26c96bf74b0be5c35ac2a9a2bb3121 +310300 0000000000000000347f0a213c8d4b7bfc48edb91e21927caf053aba4b455242 97501d162c32cc5802e632730fc089cad161a5be80360095c2733ae5efd7dc80 000000000000000000f1f27803bf3ed52894806f79c0762564ad60e2c2df6ae5 +310400 00000000000000003a650576cf11d0293f8489fb0166380db10033440a98252c 6e8b8c96ecfdfc3f660bbfe1a3152b0dfc1fd2dc4542093ed0c761e79cafa784 00000000000000000899980e7817ece5b8f7f3b0213f637bfb546de949f6be00 +310500 00000000000000001cf7e87e748401ddee3feb67dfcb275c8ee328cf7d5914fd 38ca471314129e21f294696df7ae529a4635ff0628edc684e23a45f9189c9f55 000000000000000025ad37914cdd359c4a2bc1fb39b25bd70d97e89b16da1e86 +310600 00000000000000001a8ecb6255fea2d9ffb86c0cfca2857096ace0c3b55a94ff b44b7bcf91ad91493c6d4a92a9234cda6a615103f5e043486fe25c1adf269a58 000000000000000027a1200c0b09c1d0c8ce63252edf3cbd974d8602450b3e25 +310700 0000000000000000302e350523fbcc6ec955ddba229b03ca6b80a3ea3cbf4266 6b393eedf87058444fe25ac073c8d2e538b140fab4eac766ec027da493e7c6dc 00000000000000001f0ce5cc74761eec8f04db94a5991cb4092ec30d38d01972 +310800 00000000000000000608e38cedec8bb028a3e3e8550a96753344115e09c6eb6b 08cbc672bce5b0d92431854c78518e9939fa09e46c5ea55c18fb9cf3624f0858 000000000000000021a5ae173591076ffb30e32b36d255e55fe61502783523d9 +310900 00000000000000000ea87d6c72a702867239260cc4347ae109d5a0812b65c16a 98ca1bd95a04fc9ca0f35261d4547f9e607e2561335665702a882b266b297396 00000000000000000899596d7c730afe553fdd1b838085b3852df8fa7df4669f +311000 00000000000000002ebea165acbaf9438fac8f8a109b3fe331ac34cb2a50a970 208890a5352e71b928ff919db8b357d91b446e156af2fcb0680bbd8d1d9f88de 00000000000000003cc75eebccad2cde872d5b7ebe46fc37806b3ed6e82dad53 +311100 000000000000000003c89a94577e6411fb68c4904b624bb7102ef445398f93bb 357a57d9484861836738eea3e2f7f6c531b5262859321a63b5b4a9689118558d 000000000000000020680013e175bc4298fbc5b2978db5b1c693ca45f42d2d9a +311200 00000000000000003d26221c4effb7484a34a3e1545893f1dff86d9f1fb475a8 8b543336037687daeb883806a7af104b63fbb27c8afa918d173b9e343f3ef968 00000000000000002a73c86398a2c16bee5f9512e86132b1668d550906edfd5b +311300 00000000000000001e2582b8dced2d93a17fb79b989eb02d1cab22f9f2d7c351 3bbe30f61d9057f19dd4997a42f699d44f86d4c65446d7ae998e08e2660fad84 0000000000000000152e3736127a931af466fd079ab56a47545f2d2e40960864 +311400 00000000000000002fb2cbbc9797f9f97b9f0c12710d9a42064eec60763698f1 72d8590291a0c2ac505e2d6c043d013ca1ea38edc8d1d92be27bf580e88bd61e 000000000000000015043008c24e5d82e95eab1885867edcc7155256f518d636 +311500 0000000000000000399eb1f356681b1701a1b3e605250e92374359f7670fb040 99a1fdfcd7bd8fd19639431d1217ec7416c90d4d1ba2e01d22d696414b77907b 000000000000000031360fda6102131bb8662718c1e1273f1106df3465030617 +311600 00000000000000000d192cdcd005334425c726573d88cfa258ef72b53ac99b6e 45136017654583c02b8f140b8fe7f37c7cc8c3de1e963a596f989dff7f6ec98d 00000000000000000c36a854afcd9d6b8c2c5c0c28dd3ce5fd9107557d583683 +311700 000000000000000038730cd937f594452e96b97a496afc03a84fc90a18119113 af6fabc5efd303d5b386833f39621f39b93dbb4d1b78052a037ed2cd2cfdebac 000000000000000023e5de5ab2e6a627b35ec76bff1bd41a44b85c85b67e4d12 +311800 00000000000000000597ec9e240be05c90b94506588bcd8a1da21e7abe1190cc 239f389919d5eb95950ecafada66f5cf39047ebd78e993ffc719e508799399a7 000000000000000003991eb422c6a2f7d7f15ac431293939eecca9863ad3c752 +311900 00000000000000003716894626ddc8ba4ff8df1c29a25a3956e7788812aa5f58 16144bb53cc51fad21651e9d9e87333d6233eb06d1b5b5b4076d02477404f938 00000000000000003b446cbb225a7a2a5e7a5bf3e1cbbf3bfc1454d655089021 +312000 00000000000000002bd1fa27964e31fe9861b40940e7ece2cfa359765b219a49 c7410fb75b20c2ba5ec3935f4f98c1fb81731c44d2b18e5d70ec264e81da68bc 00000000000000002f3e589b149d8143eac0e65221f46ebc81413bea2ea696cf +312100 00000000000000003d848f7c945fb990dce7bb4ad47ca877ff32c8d4a42eec36 35804001350b76d06b0fa65c34442152df5ebb4a773cf80278c6a7f71db5ab95 00000000000000001d2160ab9ac87ddc46be8b6faac58537d92a8260d96ea0f4 +312200 0000000000000000272f4e67afe69aaed25dd2b9e5aabd6d950deb512bf8c351 9a1782449505058cda96ce8e8935824c73dc0e46809744254931a15086e66ae6 00000000000000001eb227129399a1969a721ed584d50720eaf8ffdadcb0bd9f +312300 00000000000000001b2e2f10e40abaf7f091bd0b5183b053a32584e822142397 7862e109633120a1368b28f9bba7b0a69def1f2f90c441696396eeeca13a564e 00000000000000002ca642d18e60e05318c56a3d2fbdfe2eab2593c34c889402 +312400 000000000000000025414ee65f5c5fc6d6c7735530a533769992f3e78457c95a 4d67c63a45bcda092ee05467c50deae81770cb285dec8126955ade2aaa4cf9d7 00000000000000002ab5b7f3ee3a5fda9aa0f312bceff694940ab8414f78477c +312500 0000000000000000307a31b5a588a7e028565a69b5ff1ff2cb572ad2ee318250 d4b8ae40e60f59b92a87fec2bb7b2dea1b4c870b1b84021500478edf5b7e5d11 00000000000000001c2f616a7091e5943723509965a68e9e66651ca5173b1c9b +312600 00000000000000001af96dce9fb5d8e095257955c79d0b41ca64a2d69e664858 539d7e7a2a5fdbf905100b759f4135e4d3dd7b8b1fa97e1d82048eba6680c1e7 000000000000000015727c18c071974c52a8b700bc9e02170e3712f87a16697d +312700 00000000000000002fdbaa7fb514951330f0f613c4eb25fc5cee6e3b814e6cb3 479f3d9fcd65436d06258b80cbaf5df93f55b8598b886f0fd1b6b44b37823d3f 0000000000000000078993425f3a0c365100845b4f52d14d7d083b1d55a45cac +312800 000000000000000024e3f6afb76d3cf2b2623ed6e0760927444a6e2914cf2f61 aa81f99193e0dc2eb456de0bf972dd8ee13b3135e630205483d39d66af517bca 0000000000000000107c6293045fc24b9179aee93578bc80193452a295a6950a +312900 000000000000000023489f7a26add504171430c1e973f732babb2034fdd04d76 09592e7934ca374ef168a396e0736222648c9b388b0afbc989f3f6a6df294dde 00000000000000001acda47d745b84dfb5acc366e8ac39cd09eec5911fd21ff9 +313000 000000000000000018f6d53196c6f51b402a82e3e5c04164b46efe1f33a1fca8 2331db07af284161ab3c4d076f0397632914c9e293500f5af911a428eb7a21de 000000000000000038ecbcf41608d7f6815094700b3236f2f93ead67ac2757d8 +313100 000000000000000027980e6329594ab682f5971a834c4b443ab6c4b23845423e 1937833f5cb220598b7a87a14afcb672efe6dc71e96271ccb944d77f7a76922d 00000000000000001e6c67a69cd10eac07e8ec881c33bdec971e28a88e08cac7 +313200 000000000000000000b4c14c50ff7840b46d5eceb739d15d3f116a0b45232413 e48a86568c467aa3b23f63645d73a24fad92b23dc168aa21b733911030f8aaf3 00000000000000001e37d09ced96da86cddf7f2cbd39cabe87134145195c94b3 +313300 000000000000000008fc7d945b624eebe76c72e9dabb50470b2ec334b4cca219 1b76296b42028e454adf9ab3a8b43baad19c4eac01b9d5e29db5eb40cd4409b3 00000000000000000de9a3e46b06b2d10cada8bfe4d77062a32765da7629dd75 +313400 000000000000000037a1faa0c3569e6427a7bcce8a5eb9f2035787b112fee830 ca6b341efda003a94c231da308a2e12005579a1a25dad40e84ffcf1e2b72b264 0000000000000000110d2033cf0ed670eca3e9776e8301d3602ec9e77e8ccc38 +313500 000000000000000038f15c0bd9ae575530c6f0c397371cde4b2b2600d70860aa 8df3f0eb6f50e9f4331c984a4df831bc520a70a491b5bebea1eabb93b93bf7f0 000000000000000011ee951380af11f111a469040122b77135f1b68bed6608ab +313600 00000000000000000a2f02f055d99014e3290cd78f92fe8beb10a03dd29d40f9 ba237d5530625311c98d1079ebbd1ef80e3adf3cee15ed308eacc3e95087b7a9 00000000000000001c186982a497e9581d0a19d3d024ca95ca9180dc3f31a753 +313700 00000000000000002e49bc3201670d07d7954797f9f4e2e9db655dc86767bf0b c014569c0b3b064e59c13f7a143844ccc4c54127a88e41f060e140935acf810f 0000000000000000244c7879522a659992e59e4a731cd44de0ade460ce945de2 +313800 000000000000000022cda66beadbd96ab428354413a40c9cb72b040017e23baf 34f3568f4479a031300d983ec33261e4e3be5d9fe2445c77ec8fb69633157c0a 0000000000000000061655000f21a220f8c8c6164c712bd4904b273b17480835 +313900 000000000000000006afc5a9bdd4fde0356cfe61ffda33af653ad5bfd74f344d f392213275f4268bd55870073017cf935741167f6b2dabca41b81a1d69a64e18 0000000000000000167e51ba0da2a26a419bf1c265874d614d03474fd2bd6932 +314000 000000000000000008ae6cb20997f3c4aacc50ee2f0d08a0c3691907fe7357a3 2ee84a61a0b196dfe0f683df002668e8ef7a6432787f6794f78a80c17311f927 0000000000000000291b836b50bb1ed8c086095ea8161635655685e42a45c9cb +314100 00000000000000000144bcc4a22dd94d607b972c5f01d89503fb4ef51e26d786 4a15414fb1a75e05fe0d5d5617662abc9378919911f276fb9e6caf74bc35b14a 0000000000000000097b1cc506169dce95026c8c65a9aa41ca51bb5b4a28f67a +314200 000000000000000024f02f2b36461e77c77dd73fdea7c7148f40553fb20cfd3b 797eb69fad154e9a0cbd6aa8f683f15c50116af49ecbe6739bdd9d2f9d32972e 00000000000000001c70bcce58a8e9478ee14b35b13f9570829f4e77744f364e +314300 0000000000000000031c046b0b41004e28aa78ba785cf4aca4a01292888f5556 9175434d414f52e75fc993d4c24429cbd54f63a6132f554206ca657d6bee4771 0000000000000000286e6f47f21ab68fe41df8e509bc7d1e4e3f5e8f88f65d78 +314400 000000000000000020593493b2f6c073f91a6e09733f305cd475a97cafe33fca 01565d7cab3ccdeb8ba2543b7565599e25627d94e603d088842be414a8bece88 00000000000000000829a7d896988d2d3d15f7fbf7770987d5347d5a204786ed +314500 0000000000000000322ede1ba44f9e6285a6565ae15233843e0bc0794a80be02 4b2e5791f3e124f13e3c4163ee4a03ee8d54d9aaff0594ac15acba22d9486e57 0000000000000000197a77e9b17babc4fbb6b7b0d50b29ebfb62b130fc9c987a +314600 0000000000000000002440723e563f61dcc4d909936b0d27034502a89aef8273 e829f8df3903600ddfbd66706bf86919498cf249f7cd6e6e8afd700b7392d18b 000000000000000017dd6a48fbcb1f72f0ca55c2e2d11218ae2d16ba27b7b444 +314700 00000000000000002e1a859b4c1eebcc41a8cb58bc2484c8018869c812a172d0 b73746359a606db1de345c3620c9f9edcb239d8a49be724630426f66c70c85d1 00000000000000001dcd6a22e2db723b60fd7380df16f78ccc30c9ce4d039da9 +314800 00000000000000002320e83fe1bc95895ba8e0a0d9e56e94532262c0f770abe9 ad517c7dbbb606ae0436ddc3600c2565d3e177d312e54d9890dd3b6f3dd5d4df 0000000000000000238a2f7aee05cadbca9e63ba403881b0fb2f777e0c83482c +314900 00000000000000003605f4a03bb805fa535de153c4072ac586d0aea70213ca1e 9f3d3eef79df697a3e6e0b5bf83e3e94a2ad333827c8860c2105e802fe9d4a79 00000000000000001c58b130c164ab1e0800e6f7cc8828ed236f4802760f1f2e +315000 0000000000000000062ff7f089671d68b37fec1c8a8dca03ba466e39ed95c1be e24d8655aeb3e341f39661370602d09aa1a9d214f934ff0c3d42a7b2f266bef2 0000000000000000200edaeaeea351a2d692c3abe671578eeb83fc3dbd4861ad +315100 00000000000000002144ea796b242d064de34deb773a7d86e30e442f44705b41 aaf5fd59cc8a16cd90f9a5a8d5405b1bde7b8f898506b640b3a9819cd5cf1d28 0000000000000000366d6e030f504399f4319796a4d80e9d86e3c33c2976a269 +315200 000000000000000005391ada114d0f23ab02b23b29795fb32e23a731d86e78e2 610ff6697ece0d94a77b92290150767fd5adffc348a795b75aef8f15e7f026c4 0000000000000000320ac10aaa3afcf773cd947246f84e85dfae14aa1527fd20 +315300 000000000000000000ee5ec0b0220ecc9f2306617ec6056548580d8579d03d42 a8ca4c28e89e27e90ef9961cb82096690a936b7e1d2886a841a8d12b2a7eda55 00000000000000001a36a25dcb5ba7b0aed4f6e112f390c19b86b9c2e10201f0 +315400 00000000000000001c5b6828c26949399e8303b0a3cf1686742390c764074909 a18c1f4197ae195dfc1405ae26cc07bf790eceaa4c6a256e43c33e3949cacb70 00000000000000001d48fc0d84ba90e810cce1e2163befbd4f62d65aff528298 +315500 00000000000000002edec750567255cead2efa37de297147a1e19bed6113da13 e7a6f2bfc1e175d19cd6dd9638ba2f9e84d1a9b343c80a62bf1461cdb35b53bd 00000000000000000b27053dfb86f02cc79f6cb81b3721a523af377c0cac2592 +315600 00000000000000002baa13979f10be9a6a7514cf839f4ac03be62ebc69d6ed53 451da049299f8341c9aacb1dc6fb9728ef2b51401444f8c4516fe33cd79c3e54 00000000000000002eabadee6287d692520de24333b28f0563ce6010255656ff +315700 00000000000000001345e4a2d5c083a699329caac457562eba277b654caf3fad ea19860b937357f42b44e97978e4c9696b63f604d8aae553e33e3c39db9b6c42 0000000000000000135765346470390a19870a94faf5d16ec3f2301e4df2aecd +315800 00000000000000002de6f8753e8600e399e8cfc13a484855350422b6d3448a89 8e80991f3bf9c1c5021b920e90672feb2281bb9090b28771a963c6a40bd2d2ac 000000000000000026d2dbc58437901b5e5c540b0b7a26e37ac1a14347968db0 +315900 0000000000000000318c077efd911e444bef4b00b3f500613e5116ecc4b8c276 8d0ebe039dedbb6cd16a5c30ffaf1a413c500dc22dbccbc1951c6ab43c8652e9 000000000000000016de6417884e8dcdea8756ec207094f70008d6740aee23dc +316000 00000000000000000d77a89ab1069e47d1213ae509de95ee0d9ab095a725f7d7 19aa96b4fa1a9a90d0ef745cf0cf297b1b168fbdfdadea7c963db1d6473c882e 00000000000000001c08ce6cb65c5e41420500579753d2249d22e8fa31aa03f7 +316100 000000000000000000a2364b360ea852632697eef72d702443b8a9c5a8c0ca9f 7184398160d2bb57d8cc1bf299eb816a81de77b2a420ebeddca0482936b31548 00000000000000001c73c97d4da5d2bb6213da4fab5dce9fdff71d7eac7bbe65 +316200 00000000000000000841f7b5a01840487a6382eae2cc7de29bd6bd3146403510 bd0f81dac758665c4f546803f3c200a883c141a9225323a91e73cb7b4153cb7e 000000000000000010ae1e430a1855bd2f89a978adbe61b8d55c5f9a74b37056 +316300 00000000000000000a582fa6b72acf4d3439590e68279079db9206b1138add5c 64934bd0dca5c9c77e7dca6c8de3f4c84bf1177995dd3486daa65892c231ee3f 00000000000000003105eaa648125e8ab44b6492b3c3806d2e28b90e96ef72d0 +316400 000000000000000027c8fc4d8555e513832be6f46599ffd8bf3bc00bc9ec2b72 4ada2bfbe392c03cfcab2be61375d7be68445320d09e38eef59c78047e64e482 00000000000000000ed19394728aebe4ac49fc6605ec080ced485a1e96804e6d +316500 000000000000000000488c87e3e88dad4688b5a3bd5281f592a3fdde9874d96a aba54fbcf92d876e25dbd322430fd2c2805351fa93cef9fe7a836431b3f09b48 0000000000000000002d76090ebb4d8ec0bd7be9b9e1e7b99d865638fc0b18f9 +316600 00000000000000000e90dba66b9162bb053df4cc03375d7a0642cef55620f8af b18d37851966991545682a1af031f8d1c8a16273816b6c8631a807590f5aa25b 000000000000000028e708391961e059ed2ceb126df78d7713f1e4d4e7c17a99 +316700 000000000000000014a9f634b5b8c78e92cea2f190ab70ea9f00279befb87dad a0661a11d97b73f1e3a65f0393b782d0f8038fe3477ca29b4ef22b2a6ba03875 000000000000000026eb784e83b2816c3356b10088decfc53d6c227610949961 +316800 000000000000000024b781356cbb9d20ae36a6c084c82c8fb55f1c4947015c4d 309bbc949dc271a8e2c51cff674ad52813665381322c1e2a2032c8008cff57ff 00000000000000000bf26033dce58b4205ef34372417c6d96b333079064ccd52 +316900 00000000000000001a0f14fb5fcd45d907b196c726e65684cc0c6f69f6d3e466 3272c76f8e64f4e24ca2fccce43e3b39a3f23cc12c5af0ec885b8b9122428ccb 00000000000000000cbc069bc47c87db4264bc9d7edd598c39b33ee75858f293 +317000 000000000000000022e338ae2ebd5e3441116350e8ec7f67929973f69038e292 88aafaf3ca0094e5c3f1e012dd45d6f7c92d60d72a0acb629102ef1f746bb2fb 00000000000000000cc5a50dee736f395ddebf9c2775367868c2f3599fe4ced6 +317100 00000000000000001ccbc99f9b1e9b44666735abbb6357a112583f5be1e9b0d8 6573954bb39d2b910b27559bc15eaa71c30f86ceb2b83d6e3d6e8e1c80a12b62 0000000000000000114295618731b2472003cfad73f38b2442b723763523ed33 +317200 000000000000000001f3de7495b76066b12e2f5ed230de371db623b9c39527ad 6cc742743d71801058c33f824d1dcbf880e1a4ae43eb8e52c7c779fa66dc6934 000000000000000026897c900128d176f5468145a014537fabde8e75cd2ff0a7 +317300 000000000000000025d62ebd7cef7609c371a6cf0e54dae3980ecc7105ec847c c49bf29a75dcf81700f5f8087598fb55de07572f141e78433bc64de540982d0a 000000000000000027c3f72e885cdee0a70172ba457f7c475dbadea936536dcc +317400 000000000000000009e775ab03df88916ec6ba568436101ea684d24831311813 fd72cdc6b0ebbc14bd5f14f10556582d2994468d861883647c9e81a022a7c110 000000000000000002ca733a3eaaec2a469c63ef1489fd3a984f895ea59f4305 +317500 000000000000000024ec8693443b0e07026dd02ee3d8790c644c7d25560ed6c7 b2972ef3e1f5ffc67d3258547d008b92ca2c6427b6d1501155d686d4da58e8fe 000000000000000029e172ae9583571cf7e0e6c2ce6ac04c9fad244d9766e915 +317600 00000000000000002c57fd47ef16d3d6b9bf4f8002485c1726a0a9a996cb6260 7216f129a7f71d486e557d68c16b4f01ffa8141f0fb1fba3a9163eccdb62d8e4 0000000000000000041d9ee6d411f77c436d39123b9f989afe781f1e507bd389 +317700 0000000000000000145361a0f12c04a3410500852647da81f2d78910fbfe44c1 5a76aea5aab2b322e356ad758f3133613ea97a8e8b7d22cb737da857f7fa60b8 00000000000000001cc40c79da9326587a4a9db35cbcb5f9020d1aafaf23a60d +317800 000000000000000023ed8e1770d9626583ee0923dc995024d5316fc8da102fe9 b1ba51198f55ee22ee0723bb8ba5646b4457df3776fb3de1cc340d508236c30f 00000000000000002739fcf0def76a7a4e3b4d43ac8960971732282f47e9adcc +317900 0000000000000000046e106a277662e8c99931993103cb9e459a231f36e018c7 a5a9635404c7ea028c93d1a86ab95b2d623bf6faa97c842bce29c1b322265b4d 00000000000000001780d33da7d1a80a9e126eb1f25e2068b09f68f8b67ac826 +318000 00000000000000002583a647dc5f084a312e12bb90a70c3fe1eb1e4d419f35b6 05d69cd55b49d8248b216851ae8a3f495404f034b42da4c629b887f1480cbb6a 000000000000000025cf9c14a1e976f0e2c827ee18eb7273c24a5a4b53d10e83 +318100 00000000000000002a18738c6594b89983e3e549c2fbd1634a461576ca65b66b 04079b07a61d262c0ca6f65f25bfd377c9dcc1d4ea1a326ebdd9e688d662ada4 00000000000000001f7c098eb7b0031a28261892361ff2adc582b368e1c1adf2 +318200 00000000000000001bf6ee8f701054dc35e68fd08afd19ed03cdc22c219c1744 ebe970c3e39fbfbbbf9afb63c663689416a9c6c1ccce64dad4be65f2ad8dd1a1 000000000000000022c7d67b95f914d7f755b2470b0e44626bd944038ca22156 +318300 000000000000000013d3111c3b949925de0006a3c7cf8b1934b7770f943bad21 dd18a0a659c9b448cc73449306f404671c96c9134e5d7ba86901a65888d6998e 00000000000000000d7ca5fae5f0eeff3d8acea11afe6f0d089bc1aac346efd2 +318400 00000000000000002341315d1b4cf8085d871e6bfa956505b26adc187de6f3ef ec5282453f5b17553aa8999b286daeb9e3a990f07e284fc65d8d21e63eb82b15 000000000000000004945fdf3fdba22a44bd3ec324793c5b400b594ec2715fe6 +318500 000000000000000019b9f21c64b7136717e2f5b829187df99193c5bad107b2a9 d27558aec7b058a724fe2375928d1d4e94c1677e567e30a30a70cffcff368be8 000000000000000000c35208f3f0d7da85a82c07dea2630bcbf6c3557dc24224 +318600 00000000000000000dc6afd709f6b7db71c5e7f4392cb3173e115faebbac8799 3fb584f2f50681b513b485db9e81983a8f90ddca5dceec717ac48b7898f419c8 000000000000000013c75859d77d9d9dfab5b57ca25c912cce47670bf9ec7c28 +318700 000000000000000009475cfa73f33c3659b6a02a29edc30a0c5f6ab22e3ad592 8ee12dd8be64fe0d2e1565a7e42c1d9c1d54c8e76ecdd276c6b537962ecd0f1a 00000000000000000aac417ff916a0cf64369d6bc52cb16f39653ce2b6ec3ad0 +318800 00000000000000001b6e25026bc9c2c940f3bd01edc53d3f161019b1036f1ef5 66bb506276d65cd4a9097e8d640a60ca1d6b4ec00e22eb851632da90566414ae 0000000000000000064c458d6a57aebafdf8e2ec1de1f8d9f6f2cb2cc894bba0 +318900 0000000000000000217a5ffb8bcb8c4ca5f2f2c923c4f26b17b862bf4c81f7f0 4898274657141433f147d81388df2cfe066097e3ebb324498de65a37d0c4a612 0000000000000000040b10fad0a47136a3246bea60ba2bbf6bce05d55c8a5eba +319000 00000000000000001a198b049170a5c78e56bbb8f876cec0c903d56aa7dd164f 00111570ee00d3fc1e79d60d48e442c42cfc639885fa8812b8302da768941db4 00000000000000002710592f531c9330fd0c0dcd7c3215b42eb76fa6d7516843 +319100 000000000000000008259704a94280601703af56b45c52f2ae4ee6aa2ce89add 35a33279e8345259127b7165ccf795178ff4a8e39322c15477e5f9a7f0b34043 000000000000000012f4693ef65c38b2be8d5edf0c49449ae2be506f22a8bf9d +319200 00000000000000002323cd51cfc01084d0dcf088422ab661bf5194e4368b887c 5d07d4203c464d8221e67d4d7b79c7092df1466f255a5832cb20500c3c4989ab 00000000000000001302530b40452a9b7966f394e08b607e4bd0956753da5c1a +319300 000000000000000026e5d46b61c29dc446b1054b0fb9727fc71863a7413222a8 745292cfdcce975e1dc8854aae3c8811aa70e32af6dad929b8f001a9ca06b5af 00000000000000000a626fa7eaaaae46d3380a2efbd8101ddcca5f168591cb64 +319400 000000000000000021c6052e9becade189495d1c539aa37c58917305fd15f13b 497e36ad8d3267c9e8b1d6226e8500f63551c97dd704996522db19726701e9b5 00000000000000000e76ad9ec205b8f09b76fcb891ebd8cdebd4386c9caef6e7 +319500 000000000000000000bfee2b5570610a0c459a0ca2ef1cf624492a256f85bb15 08661967f76d57bce443a56ff3a90f09458eae4d8c26492a12af099e7ed7f843 0000000000000000123339b301a43865f9df720269a2f13925bf3a2df59ebfa0 +319600 00000000000000002632d90735943a54657bd6f209466802b203ad8495d655cf 7b5505f4c1b956fb80ce84248f5f2812ba8b9c8ef573b36cecda4c57a401fee4 0000000000000000119053cb42e0fadfd22ca9c62f8984cb6755fe888225bdc9 +319700 000000000000000009939ae830088660a8c11c5f0d358d0f479bdc2a275f1043 52b5c5a71309adf4ff59b0d3cb8d36029c28b0ce28ad2274fccd50d11528c0b1 00000000000000000c2937881ce1560ee047ff195d40dfe07722e646956ddde6 +319800 000000000000000008f342937895e083f11ca3cec0254e865e12711609c59b21 4937a96c1ecf306973c5ecbfea7804f4f1034fa72cdba8e3e3234136bf211671 000000000000000008386dafa7272e04166a8537abfef77a571190ef1b0c6264 +319900 000000000000000005b412182cacbf6d3eb2dba6ef3ae3d859dbb353ee34601a 1f9b4256b23b0978b46fdefeb5803a1beabce6786c931a1382e9f4df0f10890f 000000000000000025c7b4817b79ff0257bf15c4f0006ed981dffdd0c2f5daef +320000 000000000000000015aab005b28a326ade60f07515c33517ea5cb598f28fb7ea bb17eb17ea36d18e4016cbb1793c6c1b04ac32fd57ce6fd2cb2d05a29a473a41 00000000000000001bbfee4521419de4f79c19580027b00f9739ee7b2f0b5c57 +320100 000000000000000020b06f3851e15864a36ad8fef166dd8d27eec706832037f2 efffa9d74000182dbeeff868b54ffd589fe59a169cd60ca2ec494103f750e5f3 0000000000000000097d92797116f8e8f6660ef911fb6b25dd6af7f61f802e57 +320200 0000000000000000213dd5b51829f08b08b215844623785a9b7816011fcdf71a a9bfe512b925361abb9433a1b0cdd089f293b64aacc79758e54b888e9130335e 00000000000000001112609d4da6d7b188d2bf4af13a0f8a217ab759e8d3127d +320300 00000000000000001fc8e2c55ff150ef14839a3688619a5c36206fd58257912e 6075bfb06a35b3625c0af687de84be08e087c5327013eac2b00513743915c56c 000000000000000003047d46847876331bb5fd21cf65e000be7ed3eacf8ca602 +320400 000000000000000013cd08cb3b28e20e75e4065373ca0bcf97d76d0ae9af78f7 839f46091d01004e60fd995dcbcf948fa6d596c8ecc39456a6cccee2e307609e 00000000000000000678e49e8f90ac8e729e34ab2c6855ff2acf43814b4e210d +320500 000000000000000006570f74c4b85cb71129b3e295cea64a5c941a4afd9b6a85 7b9370313c135dc8508b23c0af066cef636d178061acba8f4b8ff7ed44a7c60a 000000000000000019b3ac42f51a619d55265dd05cba0eca0e5b3ba2cd89f4b6 +320600 00000000000000000b9d184595461ea832ca5b579469a7f727fc41876c782981 6d6b500193051b9788d52af302b24eb21bb764b061cb7854aa31d1c23400dbb0 00000000000000001ac6e62623768b4830b811ecbc93087abc28ca5d36644f88 +320700 00000000000000001c62a8e86faf8f65239ca8b81b923b518bd804b07602be6e d172673e38a9063b5b2dd72e05fad7d8c07e2f480241e9dd96673d8faea8d29b 000000000000000002ae2141ae410092bfdb2a967da9523eca8dff0abacf08e8 +320800 00000000000000001d37121534ae0d31f2e26fed4ff5968e1ec208868dd2bd65 5873c5eb59c862b2769bfc2e84fb8e1cef393b553e6238ff62eacd0d0f7b361a 00000000000000001d010059e8bcc5fe58df43e271855c05bf7099be2910076f +320900 00000000000000000bc183d9b58cc83ec278777fd9c0398c10c3a6cbe67bdbe5 3370f81854e65e5fa56c172558861f18cbe913ee302f3df4c8ff3f757f9e1c3f 000000000000000001925ad284e5acc5f76616320eb962a53ec6b804739746cc +321000 000000000000000000a99320bfb427390b074ae144a86335809731e91d4a2280 9ebe3b94aebf32e67965b32411eb85c056800aaceb8918d7d228e8929a7ca740 000000000000000008fdd3f5ca2aa6b35a4ccb653964a676892b0afaa4267928 +321100 000000000000000000e5a4c32d18e3bea0525bbc6ec8590f8841a13586d35c11 62a0c8164c9d088d8c0e6652011b2db2e4a9b81c02c93e6fec92e734de222c46 0000000000000000241d17511cb9417e75db8ddf3b0647e110ec77378d3729bd +321200 00000000000000000eca12a410053dae10c5228bf28b9df298235f90a7a14afb c9acbece946abe0a440627ef62c73806231182a9bd05fad85a3c836da9648b04 000000000000000013366f3b6cb892692cd0704fbfa42a95d3a9ec5ff5db1641 +321300 000000000000000005277944dfc10f5961839cd1595126bfd996071e8322ad37 56a4bf4879f6bf5c51f36c27b9958c2cc98963b9d99826ab747cc235047c8ade 00000000000000001ea62e196c948b22d44448b5204acc1eef8448940b6c25fa +321400 000000000000000005610ad32e241fcd8fa1ab3c78143b8496f8e015befddee9 f89f88c0ee0afe4b4538d05caaff6318308b1fc642b2b3d8001462b9248ac174 00000000000000001588d80f3cb1d593cb198f485aef33ca926b58a62bcceda8 +321500 00000000000000000bbb180d43ac8033d5b1fcac72e4c4c2ba9c3294fc9eaffc f161d56b0f8248eb2ed0499096648139f6c16bf8457c65b28ef2eec6f356e710 0000000000000000242667fccece4f1abd1ece06ed558d69b891b5b28bb144d3 +321600 0000000000000000188e6f4362ce1a2abb5fbff87b8b76fa2ff2ddeddac8831d ae773527c9a66d30a49bea26d6248da909782d65d3ce200b7feb65049d8c3d10 0000000000000000240b7d9d734098b9758327adaf6c42870b902fd5615dfc65 +321700 00000000000000001e670e5aa08abd7283369109cce1d54adb0787fb7b69a403 249ae93cc2a9c6821156e2add8bd4387dcd8ebdc1e306a86136b1ec613fb8e47 0000000000000000045c38374a66ee723e4151f3cd1b1927297b9288ebcfca0a +321800 00000000000000001815931bdfd7e4c300b1e7d93f0ebf74f84119b9f0a44367 49cf909895fd5f8267fc3425de6c4e62f62cd40313dca222a7a9937a67570f57 00000000000000001b6ae401ed50b19a1fcb358e6e578511a5544540cb45873f +321900 0000000000000000003b82d3f5be8c7f98c749f0179dbc8099c8957661956d27 eeb81fc44e653ecef06e9a10cfe81a6b8b8aff189c74ea0ad9fcbe1222b51c3d 0000000000000000187bc8186d790f6b060d4bb0b2eef766fa89597df24ee256 +322000 0000000000000000177da809382f93ca1c4336811e4a910050689d317d62264e fe296a3681559019f0f427d2b56fba4950e65c33917b7d807700075f36e67407 000000000000000009e46e2aa51bfa1fa0e6961ad8ee28b03716fc0616937cb3 +322100 0000000000000000225a9d8d4408981cca28e583614742465c20741628d6ac99 a65fce8eb9fd75105254c33cb3c1760439f627f7ea321daa66f766b6e7119bce 000000000000000007021e69a1a7ac82019dc689206b40d6743ce2740ce7e5dc +322200 000000000000000004f1c7692ea84aafd74afbaf7308f242344f0d1e1af007b6 468dc9c833610cf37888422f9f05f1ead0c4c4afe0a0507295233067ce5c4e0d 0000000000000000104ca4c94c6771f316da2951de9b92d896e042312d9e301b +322300 000000000000000020af8a3d5468dd19d7bee4dc34caf7f8bd65486eeb66a94b 378d8bc71e758b8ebf12952a48f61b7aeaba270d848d62c8866137625acba341 00000000000000001cd799dd007ffacfb455432c9ada3dde7a653f2cc40d409a +322400 000000000000000005fc40015f450092a5cd4ac5077c7bdc59d5ac2a547c31d9 4769cc2c746cba1cbd6ec5171bc55586cad199283e9e889783bb7fd4b7912966 00000000000000000561725cf4f207b38c0dde93414d52bdc5cdbba665728b5d +322500 00000000000000000eefdc7afb05af751319363dfb5d204d2b05a65b6685f51d 1424538ac03e0c5c952056dd08a82721527e582d9973233dd1d2adaf1af5a638 0000000000000000064d1ab77a61da77610c96a7d7aac0484fb43f1593d9d4ab +322600 00000000000000001466e36c4100fe9c1cd934b559d27606c504821254eab73d 0e9358dae85265fa4c636b3e6ec42e432825fc07303b4616309e5972af0058d3 00000000000000000b12e148d457d7557922f9d2218cdaf4ad809b6723fe7452 +322700 000000000000000006294e7447748f138f56e958e8b235b48bcce3cb6bdb1094 bdc742ff4747dbf70763d9060ba5629f7eb55d3714499ae2d61a73c2deda808d 00000000000000001bd81b95dcacae958e2db8db810515692b776ddfdb79fa76 +322800 000000000000000010b2aeff300ab4df14681cc1b5af25551434cc1b909291db e879c0e0f8d48fe06810b76bd1c6274450ccde65408805b8f0325f16ad7c7e2c 00000000000000001d34f09989becf8d4464948af4bdee2c5304714a6dbfa4bb +322900 00000000000000001e397439bf3d592b88ebf8512ae44799b8b0afd081bce976 477293afec4f7651de848a9e31c79c5d12ef12e74c2dced5b53d6d5bc2506ce1 00000000000000000d74144bdf6c662a3df0e637b22d7efe0c9db054e4cc873f +323000 00000000000000000d6b297e72fbee8450f2211698eb440ff622b2b445641e8f cdfb88ca4a4f574d50987dc34e19d91975b5dc3e62a6d66a363c06f1c63fb11b 00000000000000000b57dce0cee03d6d91154e5dea59b046799d0cda53f90201 +323100 000000000000000007cec5daba6c4cdc242c74b71694beb83cadc14d02da3d3a 78c403e5cc8b86c9d80f00f81aa4738f35305ec0ef36234e56c00a4c7dd1ff1a 00000000000000000af232a8e9c8e3a8ab20adfa27253899f863dd9d9b33e3cc +323200 00000000000000001e5d3536b6c5ff0fb20a77091536e5097c44af28163f84e2 49d48fcb35b83b0af762485950909b615e11057036ff1daec6facbea3813f68d 00000000000000000fd9f6d3cdebc6996ca4b6f6492be3b87bee1442cc257a96 +323300 000000000000000001353a516cc4918637ff9bd15547a43dabef75b1143d5f5a a5f89da84f40b0a2d8d3184fd994c74b988732100805155089a532e5d586395f 0000000000000000131f0d15062476e30a4e9cb6ac54314c0ad2af83e09cab8a +323400 00000000000000001b9a86d42d78856f6efa61ab5a93a6419b3702f801729b78 b0f071df4e4c1b39fb141b4c67ad27436c73738eb026220c001bf000fd5c53d6 000000000000000015886424add159a97da7638284fb3cebf28d778cf43d5879 +323500 000000000000000012b3d6bfefc25ad6c0b7a8cee82164b3f3a87cc5d24cf4e5 c832b66d4ecdd98c4991c481de23a4674ba8d74cda8f014d2e5cdb55e319b71e 0000000000000000134321443afca28853a274fa65acabdec95320b533e07234 +323600 00000000000000001cdb2fa16362636be6f99925a7e5f7eead0b0b4962acf0ca 8b4e4d80531b28dbeb190c9434ee7481cec87cdc787bd9871549cdcee922e87c 00000000000000000795019c90be5db755573a33e34d71b1ce2e0e19cc0825ca +323700 000000000000000009af97c7a738e52192548a9c0f17908bc95f6e6722a46c28 a0e5decd10351219b1910125dbd02ee5469dd7cd3d6bec8316f956fd36b6f938 000000000000000008958bccf3b5be90436d55b8f41c1b38fdb7dffcce311de7 +323800 0000000000000000084b0c04a20a38af8d838b46a67e98b75a6e83076aa57d11 77fc4b0294243f4f56ee9a5151722dd1bda3c32e2b4b4cc4ca77ef32154aa2b2 00000000000000001198bdc4bf91f8611312bd1372d6b1f095c42839b61c4cc8 +323900 000000000000000008126700d6300887cf2c0c2254b37116525919109db85b0c 9cc25f7c53297526159b7b8c7a5e9054f1712c4f933f9ed451f659990fc17361 00000000000000000756c7f154baa21d1e9513d06b2226eb6d5752366ea2d1a5 +324000 00000000000000000b9880c40075d763b2a5f04fc01444a6278c5d2d442cda0b ad32f45e27b12ae1861ae24518cf9a6062467d2d18841092489c81933935926a 00000000000000001377803fa65444713dab6cae2c10172727775bb425c6a160 +324100 0000000000000000187ec1bbf79d9c939a1d45542bf6d616a870f67eecfa02fc 528587194d869d3c3e092edcba62f5583a0acd87804b45962acd1a5ce43433c9 0000000000000000107c51d42a607e99c88fca044624d23c76913678759875b2 +324200 00000000000000000c846893ef60552198fdf07a38cfa49707c732402ab83937 22bdcc7ff1e1057ac5c93e23df3346e2fe3c3819beaf013fff5b60cdf4dd1c82 00000000000000001daeee55bbb6c49927905b9e18096b071c67f355e69c9abe +324300 00000000000000000bf013239a264de477188375f3e4deeee00ac6e572efda66 99c51e762f996e42a75bdd576d87cf630b1c3294b4b528388727097cece24863 000000000000000009cbf3dfad4b64b3d5ed27be114e213e9f6f92d2f65f3a5e +324400 0000000000000000036085be752266a3bf2d47ef2d91a0763b3506732b8d7647 c18fdede761471bbe873629b37586e2f6460eccb6a700950b1636f005e3ba82b 00000000000000001380f85fb7690196ae1dffaae738f93a379c2e3982ff1009 +324500 000000000000000006e1f5735634ada4692c816f18ad2b20fbaad60499d03160 e5797be37845983d8a0e1d82ea159403d5008babcbdc0097e30d6a54a4715290 000000000000000016b0ce28c8041730601329d169838ff7f298835a848b5afc +324600 00000000000000000fd58cdcb74cfcdb3dc036cdc9f132483711ea4f78588f06 3e3c8db773ca2927cb6b0186fc6d6fe1a4cdb4fd1b8730415a0e24ee2b56314e 00000000000000001805876f2bd4eb917556e0815c3a03cc9321899d7b1620f5 +324700 0000000000000000023121bb3b4b0a003c4f8c04d9306bcdef5a69a2c110dae4 61e57c096ef168ca34cc2b0f0d7d14582f69d2981308dc8ace53d19f06b556eb 00000000000000001750b265ab60e68ec5503ffad89c91650275fe7938811446 +324800 000000000000000010392b73297a529842eb85491b27e4f82adbc06ea1ae75c4 6fc54ffdcb38b136fec23fa617cc820e48635ec5781c933097ff9361748f1942 0000000000000000051ecfb01ec844584a834c4ef5af13b827d85d07063f7602 +324900 000000000000000019c524da38029188c618c6cba3415fc7eeba3f25f475d2c1 f6b50719446e894bcf6cf9dee7660476c8746b75005663cacedff3d0851262a9 0000000000000000019ccf2f9b9f50e65383975921166a324e11ec53170ca888 +325000 00000000000000000409695bce21828b31a7143fa35fcab64670dd337a71425d 32bbeca2b67533392dad7cddcea9eeb54fdefd6b55c7454250dcb6729442aef0 0000000000000000006a446097f7b1eb970ac12dee4e5ced95ad1a3f38a67a46 +325100 000000000000000007ba4846462d98744cf5409f3e9e80205265b408f40b18df 6a5596e25502c4c3d5f5929af4ce8b51b489abf67eeb51b52f6c455b0d307792 000000000000000008b02b3778619a30336603ecce86396fbee0643950816e9f +325200 000000000000000011964d8493d56e67082587d19e1231cb0088a70797b00616 1eaed9b50bb1a1c778048586d73cc83476d25c44416409ea996f981923f520a4 00000000000000001ad5f971472868eee7fae7a31a7412d386da18abed80c972 +325300 000000000000000001d13dbc2dc3ff8b385b159da3a1969e911c8a924409e24e 75c25e3d5bd754d2d6fc34cd2d842dc9fc9faf096219da31e896521f44e49fe9 00000000000000000ec2833983bd87a333bebbf4576da4720be787796e5052b8 +325400 000000000000000002c336bb4d82470d0a34600d548877a99f935cbe40c9ccf9 3fef6d8983b858fea1f6fa3a7dca95c65da38c0f7c67b693c679ec8bd84ab920 0000000000000000171317e1ba5dee0440c742a96c3c48f1cda4e9733a565bcd +325500 0000000000000000092c757ed018ef84f55271dfcdc5a2435a260cf5e7a07a61 c5ea7a324c9bbca648075a3e232f2a8e4a6b975cbc0c03566519c54c88b90fe4 00000000000000001cb25ac4f1959142633c6e33214fe0efcd797fbb9de32f6a +325600 00000000000000001023b986f7c628ff64933ade4c588d318e0bd304b66f2ee3 c3ac32763debad61f174969f129ea265c8576d30d99ba1377fb6c1066fe62c4f 000000000000000009c0e9a006674860a466254d1128cc685d9dad7efbbdf9c0 +325700 000000000000000011a477cc3d3b74e66e3ff6012e57f03a21d509e1c4b2861c de2d5a33fd4a9ea9267b33eea24bda191cef9ef456f8f5da67cd38e6f74edc98 000000000000000019da5e1ff3235a769b93281ade74108511636d51ce6551df +325800 000000000000000016cab36d6781afcc8c8bf46346b8551a18cc53380533899c a8fc95fbd5f8ddb1bc442ff897073b762d45645a26ee2d9b23d549050ee0e786 000000000000000011745d8c831a2faad58eb9c41dff2a592583f65834d0e4ec +325900 000000000000000003d83fde875c78b5398bdcd94e25a0444632cf64d6b2cd0c 9a06ab119d622ba3013cd67f4779814f4c08be22f0d3a31add8764eda661be52 00000000000000000f3e0247a719d413b93b7a641b15c439274ab7a1cd33b4a0 +326000 00000000000000001e95e7216072cd53353b964054b592f7ce84d3743aab125a 446c8609d1aecd5285f15f74c03714b6df9b51b39e3ddfe9f81c5e526f57d683 000000000000000002ca091c068e0adfa158fadaa03ccf70af7d06ef2a563e98 +326100 000000000000000005cbc66e0a9caa21ecdf4a3ddf68b6cdf973d7c60f5ee866 419c47df19b7709ab6fa0ff9f10813bec79c6054456dc9af75061bb9c32d69ae 00000000000000001a6bb1bf7681a4c2281276f4d6589bceafa23455bf213613 +326200 00000000000000001f0f96013aeb9278d2e6cc42e1adf7601ea40ce713e8b32b 55c2af10cf017b3ae5cabbe1b37a5ab361947ec8b89ffb2f963b489c1cb7befc 00000000000000000b08bd12db3e9c420ef0e3f0b8ab7773353963b00b4dd924 +326300 000000000000000000ddb6a84df0d601dbe4e4ed843e05a16f7f653861227bc4 1e438b8852b27657c0087e2cc65728af93dfd881066569280ccec694dd01ed64 0000000000000000099d44d501a5a68196d4f86d85eb1e504cd0141579a54d50 +326400 00000000000000001a3193b2416a9b04a311a0c39e2a34259f593e9be8f3f814 e57f072aedbcd6559dfa19c168e5d77da4b919d712a60b63270ceb44ff057ab1 000000000000000019c97309bf65f8cf04e95d2b7bb7081863265c7499025c0e +326500 00000000000000001e78e2346e6fb88dc0c028ba785ebee481063bbfcdcc464c d555c2cc2096cd1d844f6f44f2c9c3b7615bef92db01121420c5672d25c98a8c 00000000000000001d084052bfd9b5fae1da9e3fb6bbb4d5788ccbcb339cd398 +326600 000000000000000007daad9bd59a185c048a21d33e66602ef0190d7a046a55fe 1dea3d6125dabe6bf1df6cff98e3aac5f594295ea6d938f3a4a5e0de11b8c6fb 000000000000000013b9cc838fc223e2afc907122eff6501a463008209e959a2 +326700 00000000000000001d01114a5082ec0ecf0cab8e419b855063d19055e6465ee4 2e36717a036158fd7cf965a312d682cd9347a2647555ab99cc751b1f86c4ce5e 00000000000000001954f3813605bf4b7558bc299c4922a6f080cb75f52873cc +326800 00000000000000000a0aa99b870e2f0977cf3ad343b205ea3ec851755937ac06 8998b7ca37da678ae2d32a5ff75f2b9a78686de4fba8f36b8a68aa513bd6940e 00000000000000001ab99837caee498d6d84e94f91e32b0ae0ca51dc46fa2d92 +326900 00000000000000000fad57b2be15ca765033ff9a24254c2f67453f29028414ba c67d07f94b2ae5b929c8943d39e77dfbf383c5c612e481ee12469cff1b7be07e 00000000000000001ad07221b53554b5960f95918bae372c5ca27edc6b0d899a +327000 0000000000000000051919e9e16378559223362ebf0ce122f7adea509171171f 1684d66cbf8de2f33eccaab912a3da131b50e27ee9b19b53ce03f0c54f064901 00000000000000001c273fafdbff1381c32b60a836c026bcc58cb93d2e0de295 +327100 00000000000000000b2ea993ca333c4e85e89bb9df78dabfde95987c3c2fcccd 50dac5fc5fa48599758245f0832833325363089762a31b26ab568b4a2d07a236 00000000000000000493d65be5c5b2fabdfde93f68a32f698446cf2f85f7824b +327200 000000000000000000b9410de7e26844536dde1a410cf21f82b3762acc2fdca6 6a9e1a305b0f84f523a3581c712f4633ee9bcf09cc83f75a3de590ecd7b03114 000000000000000000d533b162c6254a83670f491b93e9a41b3cfb2cd803012f +327300 000000000000000012386f32468f915dbf60d5798fd5c302947db8ca90066907 982b80fbb12a651281bd956860bdc5186d17274d242abe6f220a50b82f7564f1 0000000000000000057fd244d58293b35836bd1ce499dc9a99ed7633e67ddaa6 +327400 00000000000000001325e8a773f05ddc0ad3e96f97434e0196e1003917f9982d 0a971c6a2bc5c1f453ef0d42dcb2bc89fa1cdc67d74beed4e4e3386ba68b9353 000000000000000006342be670906cd9f835a0fb6fea42b967d535c68ebb085e +327500 00000000000000001aab330c2a92061d0e3591f580e1e76bf7ff8fde1bbf0f60 088cf8d5aadcf5e6b3ff094c9eaab184374cc7254e88caa02f990c3f761806a1 00000000000000001957edaf3db4c47b4919f8f10a938ac2e36c3cd285ee3daf +327600 00000000000000001a0229d6a88ab0f93856f18f50b84bcd0e9445f0f7db0890 05a6bdb51d587ff5b4800bbadcb9996509572b7e344883e57f9fdbc96a863540 00000000000000000ebb10e5d24ede583d7b09e87b7d575f0bc5023b4bfa05dd +327700 000000000000000018520297bbc07b146ec423f43e79a370442f1a6826b79ba3 d0e8ce1351f8bc29f70b7889a069c36596158be8e5ede384b503b1e66b5aca5d 000000000000000001a066e97ecad67bc8213bf3aa40896f04670a9deb53b7b8 +327800 000000000000000016c1af15643ccbc89001a5fdb6f74eb5df09851f982d1a1b 68e511df80c160ab1789264590ad560bbe0148a115f81dc7b8865430de2dbef6 00000000000000000ef7987e22204c5ecc5e0071ab4f4ebc5762acb7cf17f025 +327900 000000000000000016fd3d3478ca0663fff1e13bce02b1b69ef015830568e713 a3a2ad6269c8d985639235dfffabe15a0268aaf546f786e5599c1717adeb4dce 0000000000000000146813714448e97236698f3498da1be477c57b10b2f37eb2 +328000 000000000000000009cb9a303d105e7b96b36546a3196f6f79ece4b43712cbb2 1093abf16996661b18febcb9e38edf603a29da32969cdb5dcfee249976a669f7 000000000000000010139d8c1bfa1933154b6ab111d827736f704cf91fa0e322 +328100 00000000000000001b2a69ce83483bbb1c7020d7ec303dc154fe31651c031193 985f016643293c5db2ae33924a7c7e2d7748e413f9406876155f878317378b7a 00000000000000000a5621b453b2b455cd54399255d859a9db56d5953f688000 +328200 00000000000000000e8c5bfec3a6b5903aed55a36cbca680ed8580ab05360e94 889419031c383672b801518187c0ef4fe7a047c1c1a5ec4f678d9a9a695ad03f 00000000000000000e1f5d6fa4a10b99292ff0139881747528de3181bd4e22fc +328300 000000000000000002a34f2ce1a2e1e5bdb748a7eef2316d7e7d7d0fd0365897 1d2fe02a3d5cd7519484403f91a74541c3d1fa1c8798dcdc8bc9803cf0c71285 0000000000000000101f78e2755ec6e3b767c0c27bc074931a6b59e8cdc12008 +328400 000000000000000010d0295487f0b5a4e0090eef7d45522ae1c9775c97457466 85163728de74aa6f716106f1e340a62bf4f732f5319d3769748e809e625b8e38 00000000000000001c5742a912f23a40808a828a455e2312e7b4d51348b4e04d +328500 00000000000000001934151558b1717d8052caddc65d5e34d5e86401bb3ce096 7eb612f28527e138814377d1865c327a9f116d6ec372ed96f8b684d630df2448 0000000000000000134aed3c5f89a7aa5d3a6e1fedaa895486f57fd7ffced47c +328600 00000000000000001933eb4068e920765dcf0b96c4993491b60970c539392d08 26b1e7adce6b63d9e5203b315c4635a57cb93d8576d8dd221acdf1c7a9ea75d3 000000000000000014d1b1d4422081a8889fb6a3f4f395858285775ccdeeccea +328700 00000000000000000ddf21446d44c3738b36d79eba3657b3f6337900961a9fcf 3e4560f666d7c826b5f90f230f59fb5c0457ce25ca350f8dd5c43ac102c9af30 000000000000000011bb61bc7e9778ad9dce9ce2b7105df0796bff78ce8b8518 +328800 00000000000000001997e3aaf4b9afd5e6beac1175b727a106e3b75a1cba8df4 f920916cccaff061f902bd0a5c96b65231d2c773361cf4881608a835851e50e3 0000000000000000152dc55f27338b58325f0432d2dc6edb90c8d449d9959583 +328900 00000000000000001881feb2d9e9cc3fbb2206b5254ae9b76041ea9624197976 e3a7cc306d3d4bf18e302f3fc78089ecac270e839759e0dab2a7a277ff32a9c5 00000000000000000e9355d21144057602096c91078634aa3aeec0ec6260e964 +329000 000000000000000002f56605f982bb5fbf0dbb6efcdc155abab0af7120768446 c8eb0f37f71c04e0ce041409efb0375c1aa51a2ae8f9ef175495d015ef4ec276 00000000000000000b5faeaeac8cd0c785fe347d5453ee71cbe1e1c5ddbd4699 +329100 00000000000000001836424e8024ae409feb5254ea0178a981039bed3c604ba8 2b715e58bfecbfdeb2f539d05d092a384d0c589de9f301dd26906d2130113f08 000000000000000004b95a517e8601dbe83d9d8c39908fbf535718d1cf73cae1 +329200 0000000000000000184747d1735aeccb56d455a0c0300bf379621e1318243157 dafd1513188723cbf4e1ba37f026565144b794b99b9157689abd56b4bc9e171a 00000000000000001b7c66b173392d1f4c39cc2facd882992de279dc39c0884a +329300 000000000000000008dd51e505d5f459ebd5795aaf2db2fb5ab22bfa57c88984 cc36b62009ac19949642ca8062971a147dc406afe3d1a7363ed9487bb673c0d6 000000000000000000e0051a82878d9b7537e4f4bc7e45c347a10ccb0953e231 +329400 0000000000000000079dda7dbd5e7bd8c6ee2583b3d74331c5990164b29a0573 f31852f16934dadfa5f1a7add019ddfc821a2d0271f68c3a686dc167283fb9a2 00000000000000000c2dca25d058f0234fcf27930b0b57ed7c61d6d482256c9d +329500 000000000000000007f746a912ce0ccebf61e21011e5bdedcf1ce528c9df60a1 e3781b754693b0a9a7984e65d46637871bd13fa66c777cea5e4be1078c0916ba 000000000000000019963aa4bbae1013171a01c2aceae6b7e537a2f3d906797c +329600 0000000000000000142eb0886ecd6914b7d4a62a16db938105e0f107d4bd7cf1 f63cde10debcde651ddc5d97e449157dff398ef94c54651690cc499f295893c7 000000000000000012e39bdc051691a5d925958f49b805154e58107891da8066 +329700 00000000000000001a20824147e7c19f4c8984ab714b00cd43d3fbb535274397 f771403151b28b910e04aeb70cbc0494f8aae9ffb7125d5afa4d1591d1e6949c 0000000000000000192327876fa826ac2156740111a34e614a467b0ef0a2f20b +329800 00000000000000000fda93caf96e424667a4fc20f734bfb134fb83c816fc9f0a 915c352a4fb2cd0d09bd83055072487dbb132c07e3d076fcf0d8c91bef86b8f0 00000000000000000a3b20df2d03dcf855e8df3dab2dc65de87d6f5ba8d29f0b +329900 0000000000000000052c5828c18590c0411926236e1a6f59538f821e673992e2 69e5834dd0d2b42abc756e50ae8cf93eb5d4c2b4896e10539e7fc58d67474b5b 0000000000000000065aa64226011d93e0e865b81278e47a96172a610f5f8f99 +330000 00000000000000000faabab19f17c0178c754dbed023e6c871dcaf74159c5f02 c7a7bff270c772862a8c2e13c30c27d3c7dd462d8825d93a7edc0a9f14e1c826 00000000000000000271d56cb074731c2ffe250c9f9482ba47ab1a898122199a +330100 000000000000000001dd7598187ef9308c88093faf921416462df9ce03ccf417 18ece064b1802620893ae4aa4a945782e7e0a48ba980e115fbc54993eaeb7625 000000000000000002678aea566b79c5bf5d04264f17195efd95651358f291a4 +330200 00000000000000000b910ccbf1b699667249202fd2155f83b541b96c0e141ad9 1505c590cc9e95fe16fecc1b3d415ff79fb02f55240d592aaf3382093015d58d 0000000000000000196f9003b27f30220825ca5a00d94652f098db8e7311fc3e +330300 0000000000000000102300d5349d22ea99c80717d17c1200be01e7f9afddc39d e18d7708bde2ac93357cf7ef0bd59d9c95cd1a0202651dd23f09f46ea1a691bd 000000000000000018ea97b317b5fb86dd4694a2dbcc96418f60a77ac7167bd1 +330400 0000000000000000098489f89ce82579ecdec919f9a4f5839d6cb6ab8066c4f7 03fba165b2d63b38aba44416582600eb5235e7b76c5ddd8f76604c7b81c037ac 000000000000000018c41597156e39ecac7065bf5057905895bcd151d0b5ea4d +330500 000000000000000012b4fe35435d99a1d6792316a1ece45cc9d0cd03b1059576 047c843d266d44be243cd5f8114c12fd170c595956f32652511d62ef80770ec3 00000000000000000616a22b898cf2af90930a900076b9deb1657f31f9bb20e1 +330600 00000000000000000f53b6e393e48407e8b9af95156aed00fd68796098832312 c6c01f13622363a1353eebee5c1fdd3177e37e0379744aea1ae0d9cd434b814f 000000000000000016a176df3a6aff16b2484265676c66f1cb77ca77ae728357 +330700 000000000000000011120a5eec88e0f00e2869afa319e2a5805fcf466b0089a1 57798c4bf93101e1ea328d0f04a4a981bc33308b23714d84a6c2304d7f7be9ca 000000000000000002f25a17ddec9e55a4f07fb7e5a4ab58a61594f5847327a5 +330800 00000000000000001a6cb4061892a2c32fff4f0fb7df52ea12fdf2006c12ad99 fba901345081e3fc29541f129ce0d1220e22fe423c79c6db6f93296db9b7e781 00000000000000001355a094b89bcd1088f69785feed09a734c845b3146ce0fc +330900 000000000000000004b1fc128a5c762ff3c9fef17eea1cfba6d1d088ca570940 4a06714ad3910735cb44f01085d296339ccbd96e5707d4c249c0abd8c191249b 0000000000000000102d16edc7a4dd2969798f9d063cc39b47ce95b7fdfc340f +331000 000000000000000011d4e851863618a3e0144b0c0ddac35dd3a9f19498435ef5 83bdde73c956fc4b190a7b2506c201b3278bca3acf7165c4324ae550943f3ac1 000000000000000017df527b102f23a3d87bbc038d3a1990a4217f4e5711c7f2 +331100 000000000000000011357973029e3996c85c271f6be3d2c383b7a3616858ea34 f9d9c6379326750cb758a1b5cdcfe4a52d76ebf8c7b71c8e62d3efaa5831ee48 000000000000000018689b94a9708833e57902b41730efc437b6d97e8b75bf51 +331200 000000000000000016fff4bf3462e320065497851dbd485398a4713f3213f191 39fb1d5fb34a7c6e9e98d8d28df82a0b6089699d3fb0c4b0798c67c4f9231415 0000000000000000158d813b21ee716dcf569aa5a958fc26479a84916637faa8 +331300 00000000000000000fc97874a170052de4ce39db1edfc03803e673fd2e9ddabc 38f67e1519b85f61f6edb342a95f6a0a54010e33bd342a49e364c98d19c7be36 000000000000000005496eacf77858ee0cb5b973d75c26a37bd095f725265700 +331400 000000000000000011bcac76476269901070be0077d6c59ad2e35ca7a2e176bf 66e1ccc7637aa00b8dbf8fa3f76e378816f965e9af57f76483077c716f81f328 00000000000000001088c5e8ebe8daf577fdb80c233ba0f184ba08c0bd9549e3 +331500 000000000000000001aa46d2e0585531209c62e39ede8c021a1b11527ac5c95c a389eef7dea5c5d85ffd5558de894456d6d724821715798ca67c578593781cd6 000000000000000006c0a8245705707b45312e900b6820f20dd21c48ed6983f9 +331600 00000000000000000544b43519b3368d5639e7a665c8501e6a5bb2e93b084b0f c54aca1cec393159a002969d6382eaac64a9c6e0cf5a1eddf0e987af1ff0254a 0000000000000000171aa0004add683538d68b91b6706c1ad9fef6d927336aa7 +331700 00000000000000000f5d59fd77007e7d553472996fd08d41c04639c300214335 9175369709f5cb04dff3a4fe77b894174ff5bf0f90cb68d2fffefb03ceae7539 000000000000000017c3b1147641f4da4bd5199919eaef4e958a868c19940da0 +331800 000000000000000019bc57e35368a54522244300be19dad09a01c930e446ea61 ebe983d425f667e022f3f406906d27e933bb049741d0c23d345d3df776af0b0e 00000000000000000dc50a593582b1da4ca0278c81dd4c21d720301fd7342218 +331900 0000000000000000084a103a906b8bab87dac0e1249368569bb5ee714a1e52a3 e2fad2b77811eec299c222f951d0004c96682539d0ebf1c1f712e8a1b227c5de 0000000000000000077c500e69c15426d512f2cb6bce3ab94660ee0010a89460 +332000 00000000000000001799255bc0c35f91f7d4fddfbf7e84dedf94fc59cde9b7f2 a73a92cb4a8516e7fe014cb41fcb4063351fdf702db82d6a79ca6cf10042569d 0000000000000000084f645a8b53cfa7ec7faee3fabf3d1a853152584aa9c2c7 +332100 0000000000000000198ad3e118fbb6005edd34d1803dd580fb13b4983fc0760e 7f8bfef6c46aa024de2a21dbdd41752ca52820200625320a317a6414b258437e 00000000000000001a6f7f62f91ce89b9ae5dbad7644ae7b848b740a3a22cecf +332200 00000000000000000ce91a48df64a591ae9870f06e84a7e96ea2f9694e2f58c2 c5fc95d4e01329ddd4b82a39704d06633b70afa8d4d7f337ab9147f038aef6a1 00000000000000001856a18b4d56f1af4f5d04212788922008ae078fe2d7d13d +332300 00000000000000000f1a8dd53bf2ea48426072f674e8dc0c213dc1effe765b11 7fe3a7201280c0d88ee13492d0dbe80fb0fd426393be15c409f84815d80497d3 00000000000000000739e8f902c0aa50ce9603eb7898e5ab2ff44051a55ef189 +332400 00000000000000001328cef2bcc50d7f5f74a8154341f445e14a4ce9865fa108 a78bcc6fc3bb5eed206e12c544b6390258b654c8e5d13f20514553057a5f879e 00000000000000000ee78f9305de73c5f505ff6342234553f44503cbef36eec4 +332500 00000000000000000a86b821cb0bdff44f41de617f0e3a0883479d632b752e13 c4a4ac3edf9540fe841bf8013627fa73938172f820c12178106bad8ffa81c4e4 000000000000000011916c7de143652cf6578fe05574c35b01218c63d1858f97 +332600 0000000000000000157e517918cff3eb1d3758485a5d2c1eaf77803d08c0eb9e 46f8cb8c428ee618d33e47acfc776ceca6617c66021349f75fa67582c269d8ae 00000000000000000c79577ec55b1a597b388cfbfce4b225a2f3d348b4f06a54 +332700 00000000000000000b822266b1482cd7066f6e3b1b25efca74ba978c834ebb3a 170e50843d7cdb6f0a92f37d76f912df999e38a9c370eb9f0c469c84bcd93220 0000000000000000081ac26cb5200ca59a684970b0416a1839295f2a14108df3 +332800 00000000000000000a59590277f8491f1b62db53388874a25b8210f31c1ae28d 503ce0341d115f355fbe3dbfd337b171d2b66fe244f5a71c4a4525874644aae3 00000000000000000792a44ad057029301f3eb593a8e50c3805ffae1319275fb +332900 00000000000000000c8ea7302dc7b7abec1e2f24dbc06137d5af1c53a65439d7 5111609e7ef63bb7b47a4e508dbea6f1b92ed3594ab2eb047091dd8888366fb5 0000000000000000042568aae3c297f687caa1b7737d8dab8e7d7b5087fb87f5 +333000 000000000000000008360c20a2ceff91cc8c4f357932377f48659b37bb86c759 3c63f32ad7127a22ce7c6813d58007e61060cf26c7a6af5cd3f2da9ceba95543 000000000000000010e318d0c61da0b84246481d9cc097fda9327fe90b1538c1 +333100 000000000000000017f22258a72671c378a0c7bf7634a15ddcd053b0f1d6abc8 57e9dafc966a4ae1224afd38b2f740d247395338ff098367302d272669972523 00000000000000001140229c8172692bd34a62ca489a74c29a9d34d98f38efed +333200 000000000000000012be27a3e92890e33d56ebfd71e5b6d49eb1371464776123 63dc89d48f8b65ea98a47f931e43a4f6a824acbbaa5c57a74e6234323439af4e 000000000000000019119fa69de84163036927b493e9992d46623763249d51e1 +333300 000000000000000010c54e7041191bba1d31c9554f64bd10a844a0ce4303f3f2 f689d5c6a0199d7f75fce2a61c2178ecd6aea5b554bc66d0439610d9db7c469f 00000000000000001a7a3bc7dbfba0adf639fdb6ed430c925d381c6b81f703df +333400 00000000000000000f51a670a8b567d9e596c8accfaa5d3c2af910d44ca2dee0 0e3f7954a4f795ec97c5b6f7e28aeec2cf6f4ef05fc0f86117f237f50d56e27b 000000000000000003436e7083d70c53d83bf8af14788a5b93fac10e53e67824 +333500 0000000000000000109386c0814b6d1341253b62a05f839f76f918b5ecf9ac44 5e73008a6edcced8e9753f0bbf73e59607c3cef135a3b95bd1e70cd7ffe20230 00000000000000000eeb84f535b3b86f1315c510dbde3704bca75b78bcf04eba +333600 000000000000000005eed58f4ff959d183d087dc9f9afc64bd31970c1fb9d9eb 6ad33241ee38f969e615521e9e805f46d66acfc1172d8379f077fe9dbcf0c8ed 0000000000000000030ed770eb64c39f4d4e12499bde167f9dc38e05cf6c90f1 +333700 00000000000000000b102601d4f83b876f28e492f98bc2da889b389bcaf2a1af 1479eea49070c4c03541632132fba2b7b047508815f08f081370e183bed28583 0000000000000000002f6f33685ca1236f41303f808d0c2769a3528291640bf6 +333800 00000000000000000b6f747c3508d0e2eac0127b00cc9a8bf8745c103468c2cb 96069fb57f2826cfc0ca457e9c468110fa60bfa90963705b0d0f441f0bae050a 000000000000000012b215a151ba0070e96a058442890fc627aac0dd595b2f38 +333900 000000000000000014d77722230f85beffbb547bcd2c4f03e1d2e85516680b4f a01ccba2e71dd10775c1e60cb75613478239b499cfde89bb91197997689bc97b 0000000000000000186a65031acf74f0a28805b198330927fb770ee3d885dfb2 +334000 000000000000000008d1ff7b7673837e9d7e1324dc7ab8498405ea583f43f53d 2fe7af8d17200896f16356ced22e780b72a73c7e90aaddf46360fca3ae6b5b09 0000000000000000199cd3ccb5feefff667d6ade51eb5e92531018d5b9cf197f +334100 000000000000000011d127820312ad1fc2e7a256200349b7ffd29da5544ddba6 be07bc967f2d19b4daf45b01eff366b62d99ed09fa4ce6e93bd67d6a4398630c 000000000000000007d1b0e68012a912a91602e932deba53b6098284d76ae026 +334200 0000000000000000013c0901a261493cbcbd6e4417c5561abf5f7afeb9668911 d1c77052af7f8dfc598f93c4feb34e354f5e2cb751b06852bbe8342392719569 00000000000000000a4bd85ad299c3bf00ee1e4edb51bd1755e908a469669109 +334300 0000000000000000164463cb40eb751e45df6b2cb9be314e9c216a50ac8a6685 38e6688ffbdc385d2bbe9191cefcb20b1e08b3746e7f024c706180d20b34e381 000000000000000016ef188cfbe1ab818541c2cd55d16f31cb2b023fd5f47ffd +334400 00000000000000000f61cc5301750050e6d51d15626ac0ea78a8b5c89ed9d922 0b802dedcd4c3373bde74838ecec0e698108302c817b6437fb211b09b502b803 0000000000000000094b18507ba72c050b4106146234fdbe3c8cc702e702ac9f +334500 00000000000000001807b48379679d4d2c91053dbbdfe0a72572e7afe80dba2e 4593da044f0e240f453b67fb3fd9c69ee0c294de03f792047484febeec1600ec 000000000000000007e7ae790a49cb4b62c7c984b63cdc5adb4f20f362657297 +334600 0000000000000000195f2f725da5e5448d6840baad9762e19723d5ededd34b22 7dbb32d6f383deaabf6476319c4054b44f40f65c954f003576e0e53f0552ada0 000000000000000013fb20f74032fc9ab75d2714e2ffa552aeb41387e2dc3da2 +334700 000000000000000003c3e45a6d16aa654d86db6d975c6ef19521be414e59abe9 99cf431eb24b5d97c408f632e62627da6a214d53214d7dbd92bb7e32eb36777d 000000000000000002e449f776e9b39be077b90644e52ccdee9642b84050a1b4 +334800 00000000000000000ae21f19d6c8dca6c78efabf2bc27397aaf595bf89fe7654 382bb424efb140e0c287f01d69c35676cb504feeac8482c868176896713fc694 00000000000000000cad6efdfe74524f110ba99628b22d7534a4ba5e84eb0dc2 +334900 000000000000000001c3d12a3d695800b880f269e3331d196e1f2a6180eed13a a0c75bad804a552e0f569766550c11d517aa18a7327e63d2e37b5ec01d556cfa 00000000000000001664c0befb3efd744b98ecf9a529ec6c242024f849ff6de3 +335000 00000000000000000f774c42a2622807ec8beae7f47f4043d93d798b9e7740e6 fff58b4a488690efabb8ac3ab8945869111769d4ab8ceab267dd13bc808ec0da 000000000000000018517a37b2dad7aa9f087cddda6fd2acf63d939c9c59a9a6 +335100 0000000000000000120198a0b845d223877bafa954c964bf971815588a8dbd08 d6c5ef105b204088c04b88316f9b5e419038a956b1e2b29645329cd9f6145ba4 000000000000000011399d908848f9a7ff124195ffea51eab19c37c08aa63f65 +335200 000000000000000000c879729eae178096b092248706a407ec1b18eb62a792e9 f9b73a289ff342d5cf29918ce7d3d06343e3bd0225b0c6e2ab52d5a251a5346e 000000000000000012c15ea1dd0779621ab119f41692f5c6a1364d6adf9554c8 +335300 00000000000000001a9b78c923bf8ca40d3039bd16e4fb04e29cdfa241150b49 488daa8399d39d90956f4538522df3b0f2a9063fd713a8411d5ef3e96991bce7 00000000000000000684a1abd41d4ad0ad859e9f5f327438b16a3088b030365d +335400 00000000000000001b2060125722a35ae2652e6c4633ead9a1a479951b65d401 5569868e1c9b78030f91d01d0e93938a5f8cac67cda0e9df105b743a3ef1d3a7 000000000000000006138c3f0f8b5aa7455bd9983b719aae05fe4397c3e600b2 +335500 0000000000000000188c0a8adfe8fbe72fc9155faf67a6b9587eedd8caaff7d1 334ba67ec1f4d5fec178ea0f73b7d16e4120583e893882497da6838f751a48a6 000000000000000009bcf2b9c77798e7b5b759e796d750718a7d968527830768 +335600 00000000000000001409d0e9fda7dac28d7b417b29558e31b813ef4d1e9f3a08 4d4fede0876c1eb803867da55020ce56fb65255e276ce35210f800e30315a013 0000000000000000168d81c2d812b65670db6d30f028f81002e0fe8d1f855f63 +335700 00000000000000000ff15fb7af45d5d216eca5d3b4ce45d0ab3fc253f0682813 d521fef6e8b887a318254ceefa36cb3b2ce998531db94ca894c061af0dc8f015 0000000000000000032abe2fa09e8799f42c9424463561e77918ec4d797e4957 +335800 00000000000000000e77e42753de49d95e8e86bb45e4cab703d713f4639e3aea 28dcdcd31d602ab690b0dd2ea29505c2ac9242532254e2932e35571abea36d58 0000000000000000089f2db5f701769abcbad3ee4e2a4a61a056969b86788d1b +335900 00000000000000000daf17bbadcebdc005560a9155252f2a08d2b929637c68e7 a365f9ac93e39cd13da5e137615250edf193ff5c347307086de4a38f915d0206 0000000000000000143ee1f68d064870820590f875e429e8add23c6f0ac5f919 +336000 0000000000000000125e3e6f327edcd7163b486efc16e79b8a996270127b54df 41a7699c59b8c599ebc85e119e4694033b42f5b7d6bd8b09c69e6a2d95d1a89e 000000000000000011bbfbfe73d56175a1906ca1eec461876887123e3f69a42e +336100 000000000000000012c53e9b5a0cb468c11d6b5768ab22cc6cc8a36960f8c51c 1458f7bee58294289283a0cc73e82607766ac435addb88f07582984288127dfb 000000000000000006d05f166f1b28f1e2ddb18d49ebd39e26a028894a62f581 +336200 000000000000000016baf984c86fa4688a5d121d966e229038a04c13fef1ee4e 13c053a4b83aff02973bf1b3ee4c935de49eb89e165d4e8036059f819ddc64e0 00000000000000000f8bccd917616f2645472ae5919ac4a95b87ffac4b4e2f25 +336300 00000000000000000af65b2a3fdeeab3ef2835c60033d748b5f1908fffd5d084 3f9069cdafe78207add6d05fb576fd98e55e066a6ed2609954e865ddd8dad98b 00000000000000000ff0449b299536b3822782de24c59c4309e4e602137a1a72 +336400 0000000000000000140a6bb6025ff9a64d05b5def0d95b564a5557b9995adc0e 856947da2d25f2f3a0f98bd04bf7923e6a5cd0095efe24b458a9f0fd5193fa51 00000000000000001ae08eb7e51b7db8ab7c5ced45f4d2d6cc339751d9f6f391 +336500 000000000000000003076ac0bfe39d53c9da3b0bdc92723012adc5ec39701832 6f822735027cf02f4e1d2331d0c3b5d036d3b81b7923e648f27ba6fd42ff0d0e 00000000000000000264b4581397f243576029e7f8531465e2a73ff82de65723 +336600 000000000000000003e236f017ef0add8e3c53eadeb47a8cd56fa35f4d90189f 04db5ce5be95be326926536d83d4c79d482ed23377b4a6a1b8bb2ccd3a2ff7ef 00000000000000000d1c0569a8474aa3309359f6f83598bc0703d26fb7192c8f +336700 000000000000000005fb602d166a78042c8f100781abd1597ec5665a329a3dc8 2e86bef835fc0322926c9b83aa67757ab2c3315937daeaf25406614d999788d8 0000000000000000071164c2cc3cfeb04b3de6c4f8aae45a3ebbfe9207069b27 +336800 000000000000000004ab103bdd109045988a022cff3b9ed2ff288234e3f218d1 786121c8266122b78ebe4e6cb80bc42386e197e870a947abf28f1d3c1bcd910d 0000000000000000028dc2d21b8efef8c4e09b85c821898394dce90880a6f65e +336900 00000000000000000fd5758305ffe712eefb46cc13dca5ae47b075ecee56c0e2 4598bf95f3c615611bc877ea0e75fd8e869bbd97b2489bf5a3e2275cc0f13a39 00000000000000001683a87b36a38575270f4f26dbf4758cb8507badf601c7c7 +337000 0000000000000000119f8928b15ce263b4ab7786631edb0a19faba19f9546da9 ff03974f7ec1681f0dee0c40aff718c8526c0d7721a539bebd30d68b0fd5620f 0000000000000000082ff29f5ef20e34b98bf57ffa1114bb3cdd0145b0def4aa +337100 000000000000000014681f7e402e0bc1999cc8b420e66ce26592048160ef48bc b3cc41561dc6fcfc57772a93748ee8bd579cfda9c4f821f0882f9c273a1abd42 00000000000000000ad9a6bed9ad56592aac7a8f2b1211ace447687f90f4f461 +337200 0000000000000000027c3d0d22cb789427f5beea0e38eea29f7ae63fbd135c1f 8284324b6db12e861b6d35038eefd177dd9b955bdd2ad715512451b36b7a520e 00000000000000001756097637129cd30ba645b5037e3a968f9d961db805dd97 +337300 000000000000000009b4da5c938749ef0e1b56d158c19ace4a6a77de639f771a 590df57dede3089744c03121be9610e1f12f67b1346df0a6f58adb77c3242fb1 000000000000000002083060065e4ccbfddadec356e5776566dfb472d351a5f4 +337400 000000000000000010b26e558a9cd1efd14d4093ddb18437ca0ced7a864b951a 433a55227c131cf9989795d2330301b5b62c871e3ce1411a697a1e3441f4fc6f 00000000000000000efc416deea7667aaf22484c509d17fc998e5e866f36f17a +337500 00000000000000001af039232e90a88e6750556525ccedf80d0cc5c42402b82a 700da795e401d1eb0a40db575bffab8ae14918da5250cfc6e60e94ab4ad9ff79 0000000000000000005b94c5c2daefe77b5053e87a31ca585804386cec4042ef +337600 000000000000000004574af25b9a863d38044ff8da0fce8f6b55ab15e90afdbd ce4c9d25dbb0a448cf2f855407e4eb1598c249a3c49835b103fde01b4d5d4867 0000000000000000085de4f8e20d6e135af44d5319fe42df5e54e18f0f0eb01c +337700 0000000000000000085d513681f6c38944147e5ae5070d02227ef7ec1e9e07fd ae77ad34abc96273a28ef55fc8ededb5e56b41dd92b275059db76a17254639aa 00000000000000000819007f8fbe14710bbbd4df25686a0925eeaa1314e50a87 +337800 000000000000000009fd487b5f1872c1541aa7663948bfd2750dcaee7ded0be3 d87ed518903f079d5f354fb9288258dbc03061236ba4afc96047c2ab269b4216 00000000000000001a034adb438d5bda115d5ab232b7684c12a531fd76d2feb3 +337900 0000000000000000121bd2780af13fef26f26bd8c40d3e37b67e46f4740623ee 8279503ddd921305e8d1edf2c076025f3891d7d438da12cbf4b5a4b569e84798 000000000000000006f363e88b643cbfb988e356271a5d6f682c4480fd34d689 +338000 00000000000000001983dc4a87df627b63cdce28e5321cb867fbbb74c0e87e8e c77b24699a421b183b9bebb76f906ac313ec0cbaac40b033e7b6e72d74067822 0000000000000000030d9281927559e9ac954e63032101239f91108375eb4e61 +338100 0000000000000000081d26814456e96ea02a0a2cc70c23b6cf5f8c342499a1ac 4bf92cab9fb6bcc8957b2b76b474d656d1288241aac42beda86c5a6194457144 00000000000000000e9ff888119e1a6211e6858448fd6866099be8c1a3a4dd2e +338200 000000000000000011dd819644593ba8a4e3afc2d0756c219b1c4a39ffb7b61d 38988e7a6f5d4786cba2cf6548d2256d6dc69058252dda629ed883e0870d5e22 0000000000000000070e740307e35ad77a3dd9cd716430e74a5f6995aec7af92 +338300 000000000000000018e8eff4b890798d8e4eede705a1bacd17f52617f57f58eb d6ce28dc079f58537186729972700968cd3b308dc11adf4f4e9fdc6dae07cab4 00000000000000000790ca49d36e8ddfe4a6143970dddcf8f242aa2ad686ae26 +338400 000000000000000010bd41948b14e2b803b020670f100ef38e0714cde005ef1b 83053cfcbf15d8c08f8f4dc1c5070d339df0be78076baf9bce3095d0a430c4f4 0000000000000000043a44a1ad030f76bfcf3553f86891b33638cf08af7e0508 +338500 00000000000000000127206acda4f4d818047df5c7382988cc05b867eccd1d4c 957836cbca995d819ee9501388c90d4ec7284c38005d472b4f42032620bbf2a6 00000000000000001a0909c23e5152f51026f64ebceba4ff3df7b7f28bd42fac +338600 00000000000000000f8c3b656930144c00278f4a3067857335f971b2de5279b0 698a84909840804e1998525ea67ab5245df567315098f0cff7c18b32477b1c2e 0000000000000000178cce4402bfeb7dc6e54ee09790bcd68a5330549e48a41b +338700 000000000000000012e8c0efdff2b8f67282e211749cc5530bd6e709f70279e1 58b5d734db28ad0338820765d0ecb0d10b0b5e087a6d5b6c993fcdd740d061d5 0000000000000000127c2750f9b2e29bd9153aa72c532e52c8c0eedc5ab9d5ef +338800 000000000000000007e2f6e32e214d2e918b97becc7d87eba27edd876ae325cb d1ed3bc28417de0744b216cdae9907cf89e3e0304a8bd0e611b0d034ad56aa60 000000000000000000ab967dad6b04416cbcbd425cd0cc0d0c8f989f3b7b8555 +338900 000000000000000009ae58ccb23a372510e5f22b329881e7ee0b1333dc4c63f0 4337ea366fff80f779a891022a12eb6c9e8be22dd65ee91652e53c90d1c7ab4f 000000000000000006437b7086ca85fc79f644cd544e731e9a370bcbe727b047 +339000 0000000000000000146a5926d9dadeb41267c62fca35884519e035bee5b52e93 8cb3c2eda2b408e9732cee8ca706453e008fefb45ec003a1ba666bc85750cc14 0000000000000000001d93a402d4bf7f8991cc5b849832c948a2e20c680a7837 +339100 0000000000000000059876e96f7a08c4b90976cea15664ad900cebab04f8274f 8e46516c580cf912885c4681038f4243bd40ce7c3d818f2ffc8c6ff74ef4e81f 000000000000000002a5d05246395eb0ab6a7a57d9ded75369b865795faf75a1 +339200 0000000000000000067ba3fff6c0fc406d15dcbb539612c96ba0c51ff3649f05 3f6a27ac596a45c425c2a8ba362cff2952b4fc8cde802d51df58a49c0d944304 00000000000000000f7f7d03954b4f7e621ee01f74a6d6c958a210505033bf96 +339300 000000000000000007a9a31ff7f07463d91af6b5454241d5faf282e5e0fe1b3a f5639a1524e7b9d241c9e1b6cced5dc28cb24c62d75907a8a45e76ecca4b46ca 000000000000000000f67c2320fba031c06e355acf730ac75285e01864c81e69 +339400 000000000000000016d6d4eb5a5a41d0191e2a1a819128a00840da07cce9a4ea eb9a0e5790077bf4796e085c08de9d3b8386f4ecfaf11a89cff81f51c3b86186 00000000000000000930250b6fd7f48a38a1800f66856bbc6e93dc383bdfdae6 +339500 00000000000000001500345210594f6e147819cafd471bc1e2eaf5181569fcb9 ac74990bb83b604dedb76a51f2b66b83d1c98aad1e73e011e612ac9c9e997295 00000000000000001044e8ff7830a5af169d75f1d41e7cf1ba247af4955c03c3 +339600 000000000000000015ef252b0294f399356b56a2bcf7ec28415fc2b9ad3aa270 58863108deb71a766bb5c4b73bac893598d3a8f0adf2cf4e5ed1d87d056bb0e5 00000000000000000db7f6d65f11146ce875f9a93ed83c6bb653f38f3d3ca11f +339700 00000000000000000aa5a4c2bbefdd58d0800718898d22e7de0715b8732a96f0 7ccba672f10a34c98ee6f07ac537807ca3c52d9bed8caed8413192cfa990637e 000000000000000003cdc7ccdfb84a848e5ed711f04a1521b7e3ee1729cae401 +339800 000000000000000017f84a6e30e8df6d80692ddbf94ff3e25f1b24283701335e 5200808c0c90d9a75db19171b70967ee6d2387578fc18f0e48eeea09e4e8e782 000000000000000001dc9b6e1170d3444a9ce87fe0ef6d9c0de1b1b883937f30 +339900 000000000000000008126c264131e680962a23c505ec47f3f32d09eb29513a41 bd2689249f3710ed359f224f50929608563b2effe5a04355a7d8fbe57606f638 00000000000000000cf52d522e42fb8a4c4ac572f6896cdd83b28965c2cc4683 +340000 00000000000000000d9b2508615d569e18f00c034d71474fc44a43af8d4a5003 d34705a5bffd0ce24402d9210f034e592e66b6d697dee1a9a43f8f479c003a4d 000000000000000017e6362910c6efd4dafe37d551a17db50608f19f52fb7bca +340100 000000000000000004da7726bfce8381d7df8fdf2b544f209cb954689af56985 13c5f4fbeac1142401deaf003adeed4caae88c0df00135e9b36c7f11ab06e2fe 000000000000000003f7baa99e0429cbc1c2b599ffcf9144cca7540e8c746a9c +340200 000000000000000010a3d127eae74116929df71fda492939b882ceeabfb63703 4399e3b0afece9d85347da75ce545029d42678bd18d84e3ac1a98bc2a401bf36 000000000000000010a0002bcadbdcfed2c20954d296aa09e7abda9cbdf5aad3 +340300 000000000000000001009e2f84d2e6319871f99b8fc8c3286a8b574557f5aa6a fb7f6b9bfaaac7db08fe693e4c4c2ef54659e48a4e1706889942259ba0c91fcf 000000000000000010eddc6572ec6419f83b4a17da1caa55657850de0c1eee03 +340400 00000000000000000da3e6f59708330987a62810d947737318cf5a691ea773f2 cf50a5ec288560e354b725f8803c2ca72829c1f2b13104fa54e8784f234b570e 000000000000000008d151bf4b0d112c3d433e19e530d86dd079b794dc393d6e +340500 000000000000000001c310679014f95b64d0045195346a70b71d2e8072bbcbf4 c503201ebcdc3bb4c9d4909ccc12c6f50213bc870eba7f40fb7d1cc9aac8182c 0000000000000000005bf408fe502addcc4e6b58877ed294b320854c8b57e7a7 +340600 00000000000000000001a092bb0f2311bf00987a8f7d92e2ed6b36a522054741 75185fb384f6dbc4710a4922aaa08cfa17d182173f0ea338781fab9899be8db3 0000000000000000075655e4ccb3f3939486b4a8ea8a848ce65372aa34de8f41 +340700 00000000000000000948c904d781d5d097d8bc1fcaa514af61cc50e476d4a911 5f6b559b57c36226fb41e7fdbadb7862cc8440e406a52a3cd4181ac03e365ce2 00000000000000000ab60e07162af8916e1ea22f309422ee54ea3be18c862111 +340800 00000000000000000b15728bd5bb7d83801b113fc749d1740c2b2fa28646359d 76def5b2ea5e8ff35bee7ad9f92e68f7aabc781c5580f052dbeedec02a308bf8 00000000000000000cb738669f1c2d0125603cb3fc8c2c97875078eea9acf3d9 +340900 000000000000000000fda17295b0efe96dc7b71ec7983fdc8de4edfcc3f0da3a ad4ed139e425dc7b19219c830a6c6b602036699c4f2099731419a05e39a78fdc 00000000000000000594c312f3d73bf50b7580b772e0eccf202fbcead67b01f9 +341000 00000000000000001a0705eda753c4bdb107716ba6905e065e4ae76f0f92e6fe 609782691852af09759798872e8c3752c76c6003745bc56bf467c5cb54ab5657 00000000000000001141af6091101ca6e4a46c937173ab9aeaed819d198baca2 +341100 000000000000000007dac77f9c934668cd6435861255d7b48398b6fb4cd7adb7 7f394fedcc486f3c003c284fc54d55eb117a3156e51422f88f64be386d3a186b 00000000000000001558cdf8a64bf7b3a6f393056de8f9a5362821ac04a3039f +341200 0000000000000000075582523571c113804c88703d282c33b6e22482b8880e4d 49b847100b9593db7554f28244bc50d833a0039496f1c5d0830c32df9e63d779 00000000000000000ce43f99acd2080a08fee78b919e474c12932253b7dcc6fe +341300 00000000000000000829c47ba828cc67fa55cc84518ce5c48bf0b2f04fe15a42 8f03b298d0d58f493d83a92c06b4f63647c756eda478cdcb49362c18e69a3b15 000000000000000009eee60b863a902da4f2e79066896387d4e017fcb3b3340a +341400 0000000000000000122bc60cae83932c8a461960bc6258e124339de69664b424 8b1b055a2945a1db7fc8f2568c885528284bc25efebcb7539ebee5acb2d3c9e9 0000000000000000171137287df7fca749dde778ae6168e6e22254edd7582847 +341500 00000000000000000ba48080da8c7b8f3bab64ad2f6460ca8cd56f7d1f83acee 62511923e9ad1ded8f628c60e4fec97c4c8d5b04562cf2e9102fb7cb079842ee 000000000000000008c203b3594f003e8ea599a4fc37903cc627b66cbb1afd97 +341600 000000000000000006728198c0b61dc963d3b4c0ee57690fa954bc21c8edbaaa 1431b83d75eecbfa40af7650190a67bf1993616c123d6a49141b62cc0c7f0b18 00000000000000001826362840957c13af48ce84a3166d320f4b4d756c8cc23d +341700 0000000000000000031f795b473953f35ab83dc13af46b8e8cb44407becb6d96 44259293dc6d32e01585c419c35aa479dd54248ffa0ef753a46c7b48283c1628 00000000000000000fe7d5341063c4b8e33ff980bc2bc3fa72eb1621dcb32dd5 +341800 00000000000000000f870a3a966c3444e2883559e7ab0127a3aab697a9977eb0 46a9172048f8009f80d8d9c835318cba6c908e3b39e21670337d763c698d16f1 00000000000000000215ed6347abbec0b293b7dad6264cf1294313d73821dea5 +341900 0000000000000000087457de8a450676419c02dc5569e46fe532286f1244b45e 10291ea0ef0d528ec433d2809bc32bd3e8487afb9baa7dd22d602ce3c85e1ca8 000000000000000012800085b78d1b33a5af61909bcdb36b7addff7074274fa2 +342000 0000000000000000007220892af98a563a1c891c756e94be3f14edddcf637c3e 8963afda38ad21dbd1a738e22809f761b8c5ea41334fb773378efff41ef94298 000000000000000007a0870fbf18c6b9f23c623f7f332c1a06bcc1a260399940 +342100 00000000000000000d0fe0023a8dcfcde1d01ad32750986c6c71f3d9a67672b9 a96569522e82448511448a9a871e7d75374c10fa222d3d1621f9ff90702c9ae7 0000000000000000190b00c1a3b25f18d6e7b834a5c3f92e49abad4a0b901154 +342200 000000000000000002e32542a3baa48d23a5c17ca3f0dfc3e63115b468f012a6 8dc07b2ac6f8e76857bdfcf67eca01a0bba80f5eb1808478c221862e049ba936 000000000000000001e5e6e26edea239ce073f2e101676f1e3aa3b1debf3b12c +342300 000000000000000012ef4a609f4db82164e8c939bcbdab998c59efed5f160b85 bad8da415f3b050133ffcfdb2d1aeca1d3b98db718d3927514fa18c15c1673f8 000000000000000002164b736e2982dfba18109e2f4b4b47503e64888e9c273f +342400 00000000000000000bf0d2d36a791f64d8f8629975e6f834fd04636bb96547c4 63a095c47d308442f249365aa3f50c7ec76101b26869cdb2758e5caa54c2f924 0000000000000000024d6b1c886246eb502a7f27460ca502f0452003c3d813f1 +342500 000000000000000012883e6414983b2c1720b961cbfe5acb297707e4d2e615b3 f88b3cd27a569a088f8bef8e01c4e74335b3ff4f85972efcf1897e779273b7ed 00000000000000000b28f49bdfef055cc24c68fdb93c5769fb98f8ebd74dec7b +342600 000000000000000004f65cec864bd401516b10c269ca9432ac949aa3c08542a6 a284161fc84c13e699bcc3bce91f5bb4a9bc956eff63e739033900b7b5228c35 000000000000000007e73144a57ba8fe87a898d55066afafa133189d732227c6 +342700 000000000000000012ac2697cffeed8c067ff1ee9175327716ff0fe60830da0b 40ce4f4b668e2d4cdea4c6f8c37b90b6618efc2ff40de7fb1f3b65ee0b218d0b 0000000000000000151b5fed58bd3bc40b5da4f9d5a4ade192a1a3c7c5dcdea1 +342800 00000000000000000530a695d6a35838c37a931a1e515aedd1acd0f4429bd11a 5bb6ec010fd7f492f852a6e50ad71c3e032f798e935137fd152cd1575339e201 000000000000000010ff5502b6d6c4e0e8be0191823ecc1e7ace8e282f9a8e52 +342900 00000000000000000650381dd1f73e036c6a61516b32d1a938782171b3f7a3c9 aa516691c30a1e3a712e2af0a64b7c2ccc99612c5ea91df770daaca0b8b307a8 00000000000000000ade09799867671b97600181127ce987145192c79fb99109 +343000 000000000000000014ec9821dc38ec06b512cdc3b73bc51812a842af6fb6c35b d32c3cb9c504081d970d475c53da65344a2f19e8c92f700b0e8c6260759aec60 000000000000000001ab0ad78d3fb8eec7a44085d4ac0b2c74d914a2d70392a5 +343100 000000000000000008799a5677af9f6c1c30178a40340e68f0b8049d90565d5d 1eefac82022c2cd2adb88e13484478a39e90c4ab6af3caff45e3b85d2d1024e2 00000000000000000892f1c66718e98439b3104331b2d1038667c75417cfa9c1 +343200 00000000000000000f6bccca401ee586b854a899d1b070a123c4565dff190ca4 095d5c280f4efdc1c1073a12a6bd5d88b3f5611f0cf7ca482d216ca12a9dd954 00000000000000000fdee77af7cfb73f2cfbdbf5237a9c0d4f85c3274b5477ea +343300 00000000000000000f941ee1221c839b0101ada9424791b8ded6739fd391ca85 e6514f99366baf9676b48fc631382d6ac4ef604af3fd885e617ed276f709bc51 00000000000000000acc7e060be46e2ac39acea17415c9b7d0a50ce716d8e4e6 +343400 0000000000000000056cf9bc07f119e89a78c828d060caa769c10985d872297f 18d0a4465cb4a5b75a3e36e8772b78808d0e450d00fdb1b1b9a8dde0d1b05e22 000000000000000002491bc2f1d45d6af1ad1f4b1165f1fc4f1286773f09ead6 +343500 000000000000000009cd59e644f221c7f6c0bc9117ceb0e569a64e0636dee610 4bcac7518bd50ffc0f44bfc18f0f49fcb6ecad0cf2941c9af25e8ef8a002c416 000000000000000015c7c3827552a035f925678e3d9997945fcab49f29aa5a1f +343600 00000000000000000b2b0f68fe63e0b7f23c5c20dba60b11a5f237f67d5e24d1 d911db27cc23d35cf298c557365b08b9eecb538566a8c05a7df69414bbdb5c46 00000000000000000fe958a4fb8cec0fc3637c66a633fabda553c416ae76ba10 +343700 0000000000000000138c6c076b93c4128aa6975e39a7524740c709668cc0f228 16a2918d495edfd16b80d87def411180d85e3ff8803b9d9bbf32b962f793022f 000000000000000005c6f83da4504ccb4559cf2a5d6aa48344f05db1a0f60047 +343800 00000000000000000cee3032ed1a3b93d833ccde51ec323757ae5b1ffad0e4de 1cbe83ffcf073e423b9d70453caf9ab3c7c009d6495fbf455515b0200a7978e2 0000000000000000069dc85136d988307ec5e497a37c6d764cb19a9d761eb9bb +343900 00000000000000000b73b2227bd44c22931d8b9d99a49067f50addcb47da4a35 a4e64b019616687fffb55d7ccc293effff7af335b306fa91a0cdfeafe815ccb2 00000000000000000e652ae3f688a91e342b5b88577b4399166d9ed55eb6a775 +344000 000000000000000005f0a16f5a9f95eeb95c5eed0eb221e8f5dc5a9943a03aee 3c5123be92b76a69e16316c0d01e7a372eaa13161cdcc9531700e27b0f2467c2 00000000000000000b7c96af32f1e4317e3069ea4bfb02697caa6dbde7216f9a +344100 00000000000000000d10bdcb4e8b3e33960bd16989f1bbf6bd4257cf617ad929 2ca433779dc91c4ec2aeb8413eef732ff766b2fd638db2c942171cdcd0ff6b96 00000000000000000b8de2e4dca0b88bd7e96aaec4de210838061e2d403b0546 +344200 0000000000000000024497df68e3d8d38557a5af53b737ce509257d59fbdace3 01e9d5871003896c0bab2160f59b83c85ffb2fe45b4f49bb601b6b8c35b5250b 0000000000000000043fde47bc57a0446dc2b8d498c219e1a7f0f02300b24bf9 +344300 000000000000000015d89c168fb9fd7ba8204528023ab9e986b877dc6d980e89 164d1f66ba45a5ae88cf43de4f8ce2a901041e948673ac62087bf1c05b505b62 000000000000000007e47ade54693cd9f524cb52d6a0ab69a3b13db72333b785 +344400 000000000000000013cac7ca6243560aeeb66c4a6909177ac13407308500598b 698aadea8471260b0575a568ef9b1898a33a77de69f8468dd43fac43657300c8 00000000000000000fd034712952116f454b837f44f762cb45c30778dffa4c13 +344500 00000000000000000bef31e2b2f0f76576043f11bfa8f320395dcd6a38ff7cb0 d37afd4b2dc330f5786a695f7576492b6f459087677dcabfef3d4b45c9a2452a 000000000000000012c0cba839ff85a5620665209ee5d6d0d9402efdcbb7804d +344600 00000000000000001346fff3e19b529e7edcb5276d0c90323fc194aa3eddbabf dfa90d2ff4a0a250d611ccb4e8d56e776d741eb5a72d93b2a9577385f38955d7 000000000000000018b3295f70b32583fe3c16b92397c0aa12f581cd92b7b1b9 +344700 00000000000000000dd482a6e7ca9eb90260f65b4ece217095a990cea85f37be b6703d330cc2b8a55ad1b1def9194eadc579d7db49f18126d5bda9f9174a5855 00000000000000000083c3ffa62e903f2e2716188d22c596a61a6cff633e9088 +344800 000000000000000011df3c0c41228de9f4c0d181fa4f7e6c1159a913bd91dfb6 385cc48bbe51ecda501ed84242c4489cb3dfd1b324e6123a4300032b60a4e670 000000000000000010815b35aa89eda58182ea645acee70b22e8a213ab979773 +344900 000000000000000004d994cfdc7c49e6383538aa498a234bab12ce8a881f2e72 c129782cea977ee822744a3bc59ec89206101b15ceee153940db58f10646df3b 0000000000000000163dc45100c993e7533724c41de7cd868972791d6ed9b4d2 +345000 0000000000000000172bde54cad0b002c35c89a2a67d82c02bb86ea08c6b54cc 4fdbac10a73079fa15d06b88cf747273c75c5c09b120b568ab4159d08e01345a 000000000000000014898f63487f5bfdd9d0d38fc4fb164e45e4096ab6375cab +345100 000000000000000009595ac80a8dcff41d875e07e827f71a1c918dd0f077af97 5b1165d4df6e09551c135a2f2fd3ed7a50da2a986671d9aa79092260b267cc64 00000000000000000fb70270b19eb5b3064397329e63a8b6c54a12f159525453 +345200 000000000000000009c9630718cd76942a3ffba39e816ee6284324f8be25edff fe181dbf0105489bc999a0362cfc978936d9de38f22605f2a9038e78fdd9d66a 0000000000000000061e004601132eae75b61e6470ffef2e671ae78c75c86f42 +345300 0000000000000000028579e64f61ee63c6dec7e0e300998b6c309bc0d692ce8f ae4675e03072911446422bdc8863a0b089d57005ca17ee3a2c772c85f4abb3bf 00000000000000000bd7b0856331c0e2985285eadbc0c03a325eccbfd79c2725 +345400 0000000000000000066e33cbe32b2ee2b52500d66fcbe609f813b659c978c790 042c49bf19870f83cb58926facd31a44ef1f8e2cb230a05fc6fa34d91ba9c4df 00000000000000000924d9eefcd031876d0a721b62f783e636767cba4cc2fca6 +345500 00000000000000000f8b81c56f8bf7bd32181e24b043cb241dc6e649370e76ed 2983320b43127845b9679f99cdeead144c91ab40d283413b6ffb8c2b14e7a441 000000000000000011288b196546c115542abb9a66f691ae8da456abed6c86f4 +345600 000000000000000006ad4143e4c498296ae8685b0439659c0ed68a733fb5ba46 ad7a226942473b5ed3c81789adb3cd35be56c4aff62ac986ca0c7059a566299e 00000000000000000c9e74674b68a3673e9daeb91c9749e201e8e38f6ba61672 +345700 00000000000000000d5eaaffe7a52c586c66c24e0b5c758cd0a290d6c3d774cf f59daed037104900b1853d82be59353efb441e3ec5451fb16b70f226d95d5057 00000000000000000a959c8e934c70beb743537ac55c0d10c2b07f7ff6a38b9f +345800 000000000000000006cdcfea43c7fb7c3de75367a0133393acee5407f1a127f9 bb5245fd66477eb0b60cf2992e166c939f99f7adc56bcbc15aa8b329a061486b 0000000000000000056a1ce74455be04f1e0ab825237ca74b0c215c305a6826d +345900 000000000000000001e6067855040e8a05a9d66e33c72b9c73ba017aef0de57a b299d38e9132f8fc40cc824ab0b6ed413f203758d1fbc24ac1b2f48904d269ed 0000000000000000175d08c2f3c349ee4edbb7e167c208a4f7ad76684f5f764f +346000 0000000000000000068d33fd865621cb7eedbf05c6b235191fa1cb8ee2c797d7 8d121648400bb1ad6c684f370d8906fdb0c0a876ca875636ef82c1eb52ab0401 00000000000000000f0b165c17e8dffc545815d7ea4be64efabf3a0d23014350 +346100 0000000000000000027a781a7cd4212cf72e8aadcd2141aa4d9f58dd304a4693 6aad3236c5cc9ef3a64fa7ded2e15081b028c8adcfd342f906419805d7adae9f 00000000000000000219e35254c2965f2ff16d53dcd10d20ae8182ebc78ee81e +346200 0000000000000000027a565276deb7d243ced01d4c16678fda0de1fd407c7168 d098f2b5997d83ff1e4707e81039ca885bb5fe3bca5d82d33c5a3bb6ecdd7717 00000000000000000435010856353045ce171d6d6b69ba5910bf24a8fa7f588e +346300 000000000000000009d72c738ab00981bf1660ac469f9681e7e3f2044c4f3e36 d3ed7ff9b40a788182e46c9d9dc7f5b0adc2c2af609b0687ba5a56b3325cb64c 000000000000000015bb7b66e1d350b6766b9047673f5b282e88e116f571022d +346400 000000000000000003880a75ca8a9730335720c7c121d4fa863f2bae4efedacb 3c04650b32e5917a4e13dfbb8bf43632debce35d1b62ec4e1af2595d920fee36 0000000000000000128ac6d567b10d3949a7e13cf44a9c29e0f3af7534187a1e +346500 00000000000000001513c28a2b001f57fe2790af7a0ff52a4b246f8c245c535c 76f4afb29758bfc2f4590ae5bc78e190ae76cb42e5beeb8f1176af43b80e7f9f 000000000000000015022b5a149efed2eea7c21e7d6192354e02cfeb9adcb956 +346600 00000000000000000e63ccb5cfa90b0410220f1ba5b464beec911353734546a5 de96b56b11b0e4cdd2493468208da9ad7bc0f9142cc2e1b8e8e797cc659d8203 00000000000000000ca71ce05637c6ade417f28a2056bfef9c5b4451b94a2841 +346700 00000000000000001063848ccb5d843812f08fec8a0d5cc6bbab051c1a0a0d33 7d51dc58435a3ae221f05053c541d6036e5ac37cf9d42b6683e6b124cd2f7256 000000000000000015a3ec433e2f72036ade1f58aca68cab605afefc64559ea7 +346800 00000000000000000fe4fe4a3e4dada85e3c85d46ba24187f208313a7bde5825 f1cfbd7be897a2b8dbff6527e3e09793778a6811a349918c3ba0bbf61dddf1a3 00000000000000000900944a54a15f544ef7e7cfe593776747b0ca090596564b +346900 00000000000000001301de15ae2dda05c3c24f4300723a5d19d2084bb4655d06 8abe7dfe25090593914655a5678c29b52e644395ef3a699e651839ed73937aed 00000000000000000f2bd68665fce36925549e13790d447ce7c6a498a147abfd +347000 00000000000000001712656555b08bf16f6785c7d77875df2f1eb8428a77d8bd b3175ab7a4f64903990500608cd374015aafbb27569f799134c2aefa8b2d8fa9 000000000000000006ba14711606408320d49253d1c93e43c009b82d10976fea +347100 00000000000000000f4806f60ec8f830dde4c134c50ae436d56a190b58bb363b 721dd6689bb1d4362303591293c80656819670a4c83bdbd9d6f1929709f08d40 0000000000000000041a4e67fbc3084c31b3a870fe1ae827a0385ad4b571701a +347200 000000000000000004460ede234fee58be53ca9e28b0c35d74943193acfcbef1 40b0ca3596f8581bcf105f1b6569a894b9eaf86d8520ec94f93064f3d73e1c06 00000000000000000411bf4748e15a8d2ee3c1b21145e1d631f372850887712e +347300 000000000000000013392301d28812f5ce2b3a50fe3cd4bf25d9611abd93eccb 38eb111d0a7bde017955998135bdc8479f654d1972dcf5fe24ee1eeac6feeb37 0000000000000000104407c693decc0f4d0b67d63669cba341bb45fc10f0992e +347400 000000000000000012cb55106386542ed0328159172055002d68399f042e1530 98e5b0876e529a9141d667869f3161c7b33601779be6f84740cfebcb9143d0d8 0000000000000000024b474acfc84225b86ec9c391bb6b5e52933c4379afdcab +347500 000000000000000003d3da75deced5b1ceaca5b3d72d6eee5295b8fac26b9052 af0c0745556225c4c2b8c336d5c53592bb5a409ae22213d66d1b7deaefbc8712 00000000000000000117b90d641f877059163777e7b6cd8cb15cfe6b84978271 +347600 0000000000000000117fa61a6bf98f6d79cd193001e61b3f1e74e5a1b227a88e fc91818c0361979d5055428b6023919fb7e4081325fd04079225deb1a3094e5f 00000000000000000d09f93afadd49885b530acd16c6cf8cdd13025949b375a2 +347700 000000000000000007fdbf1d71d96199a26e1ee008f68dfe8878e91b165492f9 9a13b6e9f2f795675a9fb1de65dcfb25ff3aa15ad4e70c5de7af8ca368f9eabd 00000000000000000835eb85b252712aeee68930d76bc490d5e9d506692063e0 +347800 00000000000000000ef87a8b0ab8351e794c546defb0892976d582cc14589a2f 3b63827383cc129acf2085bfff2ed6880dfce29d58fbf04470bd5e5ae9fbd119 00000000000000000d4b7cab74afcc2137b8dc56be6ab2730e4d409f11993518 +347900 0000000000000000066a96db85128ff6ec87b7f7944435a828815ab1574a69d7 dc947ff9bfc7c00cae7bbd59b62b65dbdf8160502ba18075349f5d9f6b4cc71d 00000000000000000070038bf196e2c50479e7e6db36ab74f56935153d4b649e +348000 00000000000000001598a651988bb3a45237c4f801cf8049be20f74aed8e827a 3fe888ece74f2f835d3497d2841a3dcca1095df517d030aa4d43b457c3184a0c 00000000000000001462b7aeedcf2b5aac482d416c707d651d5465ac090002c0 +348100 000000000000000011f5e91ca2b35ec1a0be143d688eb6bc75750e97f8c063cc 74ef44656171348d688a47fdd374d30678c62af04695191ce8e5684dc5dfe08d 000000000000000013edb649dd69d04a5b9cb0af9800ec2f1ac526a30ec93a65 +348200 000000000000000004ddb42f0c95b99f661c29ba995caf0e11ea653755e03ebe 7c7d5db5125a0412f6cc3e7aefeae22965ef20219ff7900d4d7eea59d6f38814 000000000000000011bf8632f93473f906aae18e96ad2dc837cf1ff442519a1b +348300 0000000000000000138f643b9a26c00b01cdb4f6357503ed201900980c08d143 738a92ecc34926ce5670551b72d1e482039cc26726e0a20095917281550c53cb 000000000000000011fec41be885e4d03f3db99d11cd8e3b7721c569382177e8 +348400 000000000000000004a18249dd1b16850b52a2aad996ca1bc1a4d30936601dc7 8bfaa2598efea4b2e3c246167d2de911613d5d617e06c71f1645616ae7177022 000000000000000001113c292a5c9cbb351d1c5d3e88ad3e753a845054f23e49 +348500 000000000000000011c2aef69ea06424f805af3cbc919dbe89355ec90c37922c e6d7d275b87ebc093670ca88fe0eddbdcbdd9164f2a6dccee86c9fdbd65d8937 000000000000000000f44e92e6bbd009b714c7ced726578b9e1218b750640963 +348600 00000000000000000a6596fc7962456ce3b7322bc54efd77b31f429fe13f0502 f1a19fa35ce848dbbb51dc48cf9bff8e0c7fa5cef5e1debf872fff2d02119779 0000000000000000000e8b598a1155fbe59d750a2e0771b90d0fe81baaad452c +348700 0000000000000000096a13fe34c98de36e02a4ecf510e3dbfd520941e2756ce1 05a6c3997001715e385d774ed595c485a2a9e005fa557a9ee82623d69c385e11 00000000000000000ca1f813c695fbf328794aacedbb7bdbe769d3d16b64c5d9 +348800 00000000000000000818e08bfea38408539fad888bb41a91d25c99e46dcffb9c ee9dd200898615343aaf07086c6a000d60932a5b549508d88d9631714ebff700 000000000000000007566007285dc6573e6eaef857df18b4f9a87bd7e59d700c +348900 000000000000000001950e12a29af2625ac6cdb744d03929918c3d93c33b559f 59e952c569f9b03955de952bd4eff67419f82522ed82a9140d8eaf5db540ffb8 0000000000000000173c6c6c09d98410a6971d513bb90e145ede0ee10fc3f5c0 +349000 0000000000000000088ab566bf655994f7be79b6abc23a174285ad067f152526 7f457e8938c6d70ee45577e2fb673d2038618bc105859edfcce3b1d5ea5143ef 00000000000000000a0d82184e456e93c332fa9c470cc7d75f5e4d73b26adf54 +349100 00000000000000000e2746613193ea27b54fd300a3c88c51d8b2906a355bb68a 370e3daf07dc6c70f5776ffbfe216aeb86eff59b5506b9076a0603b2df7c56ec 0000000000000000059798e31d0683152b6cb3d1f4213b996af1c0fd0a6e3ef3 +349200 00000000000000000b93e56d8185418a49ce1b3d36edf32d504d62ed0e3f6ca9 455d61f8a3027479f1a97fe97c76cb6af421b21b5e0c5e00e615c5cc973f116f 00000000000000000901407a27ac6fe22fb902598cbf8d5bf06455c14dca7ce4 +349300 00000000000000001489c073e5f157245a087919f0c68e5fa6950553be8c8e8f 55578588bdf7402443ed302a7c12ea2782078632ad11299143908c589ccf09bc 00000000000000001006f6233da9ad8ec116cddf9421b66d7239252790b7bd23 +349400 000000000000000005e0adc32d076310a1550e19b7157bc86dff903869ea719f f593cc68761119051e907e72b734747e55bb90a9ce1f2dcb24702965c40d4c2c 00000000000000000b15e75d932d9fe1015c4f07ed093a0c5dfb506f0af348c9 +349500 0000000000000000104977aca25ee4c2a0bbefda688022bc8a38717db8ef2561 bfe86c340460b3014bc9797313f9a913331ed5d6c544fe20c602c6452484ac1e 0000000000000000086fc514d9af17c9e879f975c9005601eaceadacaf34a6c2 +349600 000000000000000010879e092119599612b57c6508b15b9b97a4862ab998c8cb 77aee4a792fadfa20296c2f78ab0af311f5768a315ff37f0bea274867f58768e 00000000000000000fe55264afa0eb6710a604bd91761691e8e3b07ace2bbc65 +349700 0000000000000000165f28a435379e82787c91864d2eefacf6b4e5ecd7db0d1f e7e3ad3e0afa14a5539890f082ba8e91a54e9a244e2e28a049915d447d4978aa 0000000000000000165d51c3850e8bf341b96649193a98d0a11e682a681b4523 +349800 00000000000000000aafb4ea7f573f9684e8eba6b429b8cfebecb26546a7f7f0 9ac40a7e2756c6f4595538671e4af70790edcb8c21bcfe98185b1b237ecd4216 00000000000000000c3291b74c607abf3e09b480cd2b0699b818197053f69308 +349900 00000000000000001694fa3f91fb49a5940396088a957063dc028b943f9acb6b c1a55453376e859e67bc8c9d519866025c6670f3f2dc1798643e2313849831ee 00000000000000000be576efee6dec3a1b1720c8f31cdc941c2b46ff36221589 +350000 0000000000000000053cf64f0400bb38e0c4b3872c38795ddde27acb40a112bb 1f3ca02caa9831d70a0eb3f637080c00c9f7601616fefe98b2abf6a58e2c50b7 0000000000000000075f18b37aa8c6fe753d6804bb03ae91ba0d86c9cac3fd67 +350100 000000000000000016bc0f114e134dc32983032826f8888dd603ce77decde5b8 dfde0364ef4cf50df5d4610e5d54fab8b8fe04a5fa9871c82073036ad7a2c911 000000000000000012579da70ecae513cdc2ec9c2e844930ade89f6140ed45f5 +350200 000000000000000008ebf26f102ad01a92b9dfe44e1b41dfffd9a4ed2c65a309 541a1dddbb73d55eec8e7c96a193e1eb54cc24ecbf52eb4bd9b52c82d2931714 00000000000000000f9e77c173af168f04b1f883ada315fb980a03667d22bf27 +350300 00000000000000000ba6d629ea48bdd2d23b277d0654423eded7cf80cb57ffff 467f2abdc45d12253aee88dca3cf0df67f90ee04315164ef7f8df6a0d1b37e96 000000000000000016eea235606220701ee9f7a5663f08b9c990966ab7fa142a +350400 00000000000000001010590425ecbdde1cd51059a77e5507936a1f7bf069d632 eb2a44cd7a8a49fe883d524696a8fda426ae433797a00e353f1a7306f81f613c 0000000000000000092b5afa63b1a2e55f9cd9a4f8085789796545950298267b +350500 00000000000000000483f774073f7bab2d7d71a424b81684d82feb623f35dd17 dc432aa064cf5bd222d92e147010718806e092870d5bca628ddb0a81f50a032e 00000000000000000bac2cc9b8b38658e3272926a5a0ed43658066df0a2170bf +350600 000000000000000013a8799e6e1871533e9a3d08034f0fb4ceb21301973436b5 1a82b3c1b6fac1fb7577434b216e303241c1ed83aff560d95cfc061e38f42261 000000000000000010cae4be2a9b5760449788c0262947f068c90836bfb15d7c +350700 000000000000000011c792257b5d813f0c483ba023f72502fb6e562ac0382b30 5c0db329589dc06ef0a433ba0083086f2fbcdd088194ccf6366e5c02aac46e10 0000000000000000004505ec3a140455e5004fa9313e430a95c8a22561c299a6 +350800 00000000000000000ea1ac00d6b5e0462ef76dc505f78070b8999bbfea6c2fa1 357e103ecdb94a2c841c751474ed2d1016ea67e74e5887cf0b3b80e36f1319f7 000000000000000001c6f8be26e81385d7f3935f34a128d5108546b3c6c6681f +350900 0000000000000000072bbe3ca8b78c637780ae9a0e2fe548c1737625ed21b936 5d4d8f94254a9e0caae71a737018a52656ef3c465a1400ecf0869be9f1b0ae4f 00000000000000000da01f40a51f05bb882d0ad53149fe869ba23a102ff1ccc5 +351000 00000000000000000584cdd8ec00b13ea91e79d3fb34095278cc718f4fff37c9 36da2df151277529e9d95dd445a32d8dda3d3974d8cf77e25183e4a1d4bc868a 00000000000000001467a6c26f2e6b867c33c0efab1a2ce313a232048c6a130c +351100 00000000000000000ed1747398350ed90476d30685de73af5572a1f72cc32c49 61f408f54a104b5734e71926f6f36d973fba9ceb293b998ec0e97d8e24726eb9 00000000000000000f842becc1e53e9cacbbdfac8fe2041fc6e88fec9a6b1951 +351200 00000000000000000877edbd83c111744fb8069b34bf5522234acc0e3dfbc9c5 4f9c2c3dbe1b5a73694dfe3087f455d879729775e1a34c5342adca24868aacf8 0000000000000000053174d92cca33fa9046cbe0b59726c16d66a917e6292aa7 +351300 0000000000000000038aacd6fa10f0ee47956337238a5920b637b6096a29a846 9320223ddf2ee0049eea947649803c2d7d995ead6a2d83672f3f69af94e9c06b 000000000000000001a16935045d486aafb67add2e914b5a115f3f2fe6d92a40 +351400 000000000000000006c6502bbbe65c8d07bfb9a5ddd0799e63e24cf11c77b58c e021a29b0e624f3bbaa9729bcff17afdc000432f5d0a8bc405722111eafa25b6 000000000000000007d6edbecfb182503623ad3086713815dcd47c32a2306646 +351500 00000000000000000a47f4d52ce52769cae80c40cb172ad12ebf9aeef46b5f59 89657735ba58880648eba8a4db861707f10ca0d5a17d0e38f66be412ef0634b8 000000000000000007a253dc8ece83c0f10a0407efd88c52056036f2e2472f6c +351600 00000000000000000ca3ee08feb8441de108ffa3b3d5ba75976b29973f967e47 db16bf686eab2b73adefcbd1626f5af78177ab4f28c6405a7d35aeb7d822b19a 0000000000000000054b0d24e38073dc9610f50e93e79929caac7dc6f15bbb68 +351700 000000000000000006ccfab6a5e6aca39a85cdfdf44e1d158899a5bf040a4eac 247468b2bcde1a46bc8f1aeda2ecd51821119b0c22edf3a42d9829f8eaead1eb 0000000000000000163a1a6cccd5a2eb813a96c2d069dae583292656cd56970d +351800 000000000000000014a981dde606376678409a62aa29cf30ca6ffb4d5e006375 a90a68343f17b8f169062945ac3a8813b94855becb11acd6c5dd878f8770d154 000000000000000005ce6a482a7dc969912bd0071af86e4c0edd9c2bcf169d9e +351900 0000000000000000015533b6218a79a8a30c3eaaf053e2122af36abe473de2f0 4db124c5a611966066dbfd99eab2b65dffa25198943030f6ae60f3dd1fd7d10c 00000000000000000824ca767bb347b8eac88b0c6ce4623cbad26106dab7ab13 +352000 00000000000000001635a4b5f27d2ec458f7bca550d71f490b93e98e7a07cbca 047c1b9267a0f72bfc18ec8991897434d032f1f9f23727590d5718efa2f7a7fc 000000000000000008d042a9fb824233bc40aa214bace9c05534d741580da39d +352100 000000000000000005348ac5d0246d0fa0b83b9147aecc404c9c49fdeeb4c7dc 87395c1dada75bf6f254d4ce05019081ecb0658135c3052e0403ab66592da0c8 00000000000000000d4848dd54e52f1999eddd0cf8fb94b0f953c80692ba014f +352200 0000000000000000128179cd2202d75eebed9f5e40b2949e4d35df4069a63415 7fe81de878d36510260ce82e3b2e9bb4702274c140da31b264a432e6f841c548 000000000000000002035023219044a6281e0ea8992b99e15a89335bd7ddeed2 +352300 000000000000000000160e71bea14f0aec589202e5ee45e680af27108d2624d1 5c0235ea3d70c2578e052f384f5704a6cf33aee1cdf08b8c60ad7a70294171d2 00000000000000001394d90e602cbb17766975c701bd987fb95c554b18b53d48 +352400 0000000000000000004fc54209192fed68ad012237ac4f8e7e814cd5ad73a870 b3456c175de0106043ecdf739596c04a4a00e056d50f58f291fae1066a96335c 0000000000000000039dc7fc982749ed8c81a49d64b5458e00738e5ed24a0062 +352500 00000000000000000d495be22d6c2691375ec3df2a319740c99e8d95da26d0b9 7a0fc93ddae347a7cfa72d6c6ea85b69e9a93383be262f377285d459e4a6d7fa 000000000000000005d92fd9e46cfddf48a935469bec9e24c383bca1264b20ac +352600 000000000000000011db3fd0e918f6d5ccd38c6788dfe51845a04e44fc3709fa 1014d58c3b952cca3d0a9767c6c1c1004fb4db9a9b32a38619070bde0c5a583d 000000000000000001dd7d659dd7b7f2a82668d4b31fa4d58a4e9c39fff713db +352700 0000000000000000035503ef31a34f821ee80474e5b9836a580fc1fafa6faa75 46451ae60eb529bd20031a2b23496b181dc9a0c64d40c4e37a2c948fd69251cb 0000000000000000000b0f82373b32adac1c13dd5242e52ef1111b58a57b1d19 +352800 00000000000000000b28d69f3103a15e246dc0c72e4eec99b40f351856eccfd2 a4a4853823380af61b704fdc1ccfa7ad28c8bdbadaa37c57a5c5f63ab6340319 00000000000000000237e36563270937d012404a82d1c9a9c374bf33401d1486 +352900 00000000000000000694bff224d3b44686cb64873c5696195bae4767fc96c793 bcb6125fa131792ea6a27741a888003dba3856b189de6083c5cca7a271d0e57a 0000000000000000085367b53f137eefd3426ebf34e4b998545b40932484f8ad +353000 00000000000000000054ba1150cba12f19a604351ec95cdcf3c642b6db4c33a2 e18cc1242d8da0cf0bb138f1027559c2d773a3805cd7f4becfe50b597554cd30 0000000000000000112dc63cff9174a5d0258871330a416e7588ed962b0319bb +353100 00000000000000000cb56fa1e5a75e7a1b7510b5c80e7479d5b4e4e6c099bc25 ca4d1e5be6e2c16b650d3f632db2c28bb5d4c9b5e81852ac331b5a46ceda8f1e 000000000000000005838d258b11f51d90b130dbf5c41edbb0a7997de0c7e359 +353200 000000000000000008dd16fc62e78804493c4c67849697fdcb3a34df6b981ea2 c7624c684203b089cf305ca5ee158036672a4cd6ba251ac7bd631373551d7534 0000000000000000134db4b68921393f37923b0a3a8a1d6d5241335e04d2609b +353300 00000000000000001064eb5afa6d3e0c32ae918b62479acd4e72f0fc7e1d1848 5c51b2a7f427015a4be8424f9104eca0f8c94472c55e6eab4bed126cdf1a8c04 000000000000000016279a15a20899990dd4a1c76dbfc902c6602ef8d8b2846a +353400 00000000000000000cd4d97c6f29f5873b544250dbd3d827540fa49c7a8a91e7 da11b0c1353c36c7e68135b7b40223d3e0971011af6efc67ae1ba26dc2216c4f 0000000000000000066560b7e298316631c275484893df8fe05788b7c9d5d003 +353500 0000000000000000159db60b17bf31fedf79fdca7843480e668e94db6048ff2c badb2063f56ab053e5659634382461eb0c8bcb232816a602057807d90b37167e 000000000000000010895e324df14297b92f985f6160acbbbc8abdca6c692662 +353600 000000000000000010b8b6b8c7f81d410e83c7248439931c7341381be404c012 cdcb4c978d0ab51ba005ffa4c80fc3eae8f44cfc291f8774c9dc6fd90789a0d5 0000000000000000077c76ec3b5e4fa92ed17eae4aff832782bcf7c87818b9be +353700 000000000000000014f8d394929b41a0415d9593db0e71dc82d9bf421d7b7ca7 c09b253f8300700a86299ca6b233ffc104ded26ab543c3a2032583de70d6e6ee 000000000000000011945337179e5eac5ecc530c9b064a6ec9e2ea14ceaa9b93 +353800 00000000000000000368f4fa1757fae744a02ebd4db6ce25f76e5b9edc3676db 57d61ab9d5637adf378892ccde80977b04be3ef7db0e4f75c864b22ba534d9c3 00000000000000000825b0b6b2c3c9dded19123d7f0fa5f535ba1401d89edb0f +353900 000000000000000004c6d49f2f147022933c3cb3b7fc29c7b57296fbefb9d422 2536574e50669e772a6a6f0eacf326342810cc47731220b38788d52fd7b160de 0000000000000000013bced982aa38c9a1e4eeabfd038aad95821cbaafc6c2ec +354000 00000000000000000cf8af9be2709e9d7adf2c33b3789aeeff517987f4be22e8 010ec89b442e1b6599f95672974c407ad002d68060933c87688f8e5d36033bcb 000000000000000005ce357b2bb22f3e2e770a89d9f81af07e65aa28b11034bf +354100 000000000000000013cb02e7fbd216d3253d299ced3a7561df4eeeeae3f63aa3 fd14dfea35e4e237456bec9501e79a80154513b6910f084ffeface1551efe09d 0000000000000000029ea0c2c8783cb4df9d69007b7def61cc202d85e570d800 +354200 000000000000000009510b9c6a6f862561b98f8291f27f0da9b953632d221b5a 1b8db324e406c4f1f58695381a0dea6308a36d26c55da04c874ffdc45840fa56 000000000000000000bbaa23409492ee804346880b3f90ea3c3f025e62783444 +354300 000000000000000002f102d9352e5319058e24c2ce66e6d112ec7143cc5f90da 65ea28a19d08ba0517f89a075fbf225819718f873aa513956ae38d469e87eb99 000000000000000006dbba1f4cdbfa878db108d09ae87b114061914feaa22674 +354400 000000000000000006e123b68f1a8677a564fb8bd32ebd2fb9708073b99c2204 d6d9e92ec37afa48cc4322002d6b80f2518074a07a257cf309d8af8da04f9ffd 0000000000000000160e11f2b2f675d7e1a93ef7a0c5ee8cb8e37edf0ac39104 +354500 0000000000000000155935cfa788ed8a9c7fd8bccc80f793028a3ffbe0810260 64dc48249390b6b07383a5e7cd5b181a2fe88a4447b6e5f898579905cd423d1f 000000000000000011324f9fea719ea6cab931e4260dca51fcbe4f8d74b944f6 +354600 000000000000000001e3b9236b6bd185f47f1b110d4cf2abe82577e1cd8d6668 d3b2510eba2e3cffce3dfa18917944953b4c361e3904130729b55637c93f81f4 000000000000000016de83adfa4281b1e826ece49a6a066ea0de3dd273e59b50 +354700 000000000000000011dfb97b913a32c93ff6f23fe7d90d09154effe3a149577f c4ba40dd3cbac474d0907768ab1f361ba532df4cb2d45e63f33be26683306204 0000000000000000156826165aec217b60477045be1fc55e59e417d1b91b6e3c +354800 000000000000000010a413706af68f34190bb958b7cda7e205f001def86b6430 d18592878981ce588285e34e1056b73eacde29e60beb0f705a08a0fefa6a82c3 00000000000000000eea7920786a716487917011d9b97f967d952cb7b5eff237 +354900 00000000000000001229f6e4f291989c8bfab9757636efda7c08c3b73fd3ae83 28e2286dea028bac3b8c59e8300554fce27e522898e817d7064d5eb81408eeb8 0000000000000000009be7759c142ee4f6c9d4f67aee7ddea7ddd6c8de2e3888 +355000 00000000000000000b36c1f926e9f4afeac50a580d220c38aacd0185ffc77126 67cf758acb6f8137db8960c9c3b01681b11452086a628eea09abee1348bf3dba 0000000000000000149fb3ca841309360d5f648ba1e36d0a891c165dd5f89804 +355100 00000000000000000a15b3da3a959a9c5be9e635baa76e11a582fbade406f042 f1b30ddd73a6ba1c5ba03bf2702d2603b93f6354ccfed9d04c949678632e8c18 0000000000000000075335f99e7f20efb02dc334afa26458477628cc589e6317 +355200 00000000000000000692aecb6e09dc8f71a1380a3f49aa954dcec9b166f3111d 46d12723aa4064c85ab541e7644098ec96b547bd4f84ecfa6dab6d4638b7158e 000000000000000016a56d856caff79560a4cf8ae0523c2a59e0b379d8f191ac +355300 00000000000000000e9fd980303cd9ea298893caecd6f2e34af241bf63f7b2ef 7210450aa2b2fac8f5fc33cea02ff7f43674db7dd54874458117977588003650 00000000000000000a5efbe463a4baa60ec1933e238220f7a32ad760bc1b2689 +355400 00000000000000000b7c5fa8cf8e7eb7c8fc191da7d798753d01b8deadbe53e8 a611dbaaeb72618014b3d4df736688b9cbd74e8ff0c2cfde0307a2a392b3f06e 00000000000000000e9aac0f7321a32aa3374befbd7222565630d863221a4c98 +355500 000000000000000012b2011e6cd633d20b967e5e8d30cc62d546a67f52a69ce5 65ff00528dfcbd7a0e28abc31cf42fa361d0c57c64f5a4c707cce9e4a45c6bc3 000000000000000010060501463ba6daa04ea41fcfd26cd8aca4b04894829206 +355600 000000000000000004bd67400df7577a30e6f509b6bd82633efeabe6395eb65a 3616e0150f7e40f24008d11cfd138546692ca6c2fb39fca805429fafd11a7727 000000000000000004e712f487b7da3059b707d86c0b5100ac7ac49111108007 +355700 0000000000000000012014b28848c735a362a5c78c2e8d41c38807e674e06c5d 12422da4b49eee62dfc234a78fdbfae70c68158f5b497e0e892c9516a2256022 000000000000000008f0c2ac23006377644641b8b784a67f0d522b04c91db8cd +355800 000000000000000007f18bb9bddf0e0aa1c17e07aff0afa6795f7239f37595df d20c7d9e4865dfd38b7e44d959bc48446a25e6ced983257b6fc48e16e076a9db 00000000000000000831c281e0db589b518e22e544f97a8482d2f4be989ad9c5 +355900 00000000000000000427feb74d5784ec55a9e0f060e0328f7220433477d719bb b5a53aca7050ad85ec80439d5ad84237d63edd5770b72b2b12565061cef78e3b 00000000000000001147e05b51ccd69a17b8ceb8837c97ba7fc48dd09bfbd692 +356000 0000000000000000138ce5493b612b0e90b66e2a76714088d6b3e6a4770215af 3671d2ff06a9ecde8b3594969141475ff2f44c2576a11c3b77b58449ab030ed6 0000000000000000153c94e6c7510bf67944d7b11e56de38c4c06850ee19c047 +356100 000000000000000005e9445fb3604373e39085f5c695e5db0c7b013b520414a4 e8c2d93ddeb318e138d42f15011e988d79e90d124d199f0038bf486c8454f5fa 00000000000000000b63d60592654de05fe2af42d17fb851c302d172d3afa49d +356200 00000000000000000ab4e915a84f0171b8105304325b6d0a25427a6a20d55774 00167a1ac15765450a2ce7dd1671bb68fb4d6d11ae6f1f9c0a85f522733bad90 00000000000000000894b3c4a932b3255a08ec07743fc1d720ec28fbf7e57c26 +356300 000000000000000000b8a1b5f2e82280c61210ab8562c2d3b7cf328a40ce247d 5e7029803c55dc4faff85fdea8c3378bf8473a214361ecf3a77aa1002a62ede3 00000000000000000103ff98e91fa5d9f39fb4b032fecc0d69f9f89f5f1c2ce5 +356400 000000000000000014901c826848b6e944fa832c1fc532f02b983f5837387464 c98895ac101e80638f81bfbe0926db67097a5d0e96fde1ba3544e27538327466 00000000000000000e8fbcfe2f0933f9b7b578eb9fe715ed4172cbed63ed9fc5 +356500 000000000000000012ae289abe9f33b266bb08d65645b40ee5b0e3d4dbd329f5 1869da2ae94f42adcbe31fdd11b6fa99d0f2db4bc0fa88cdc7f46e69e4a1bf09 0000000000000000113ce10bb413e48bf3d1823de912e461f8a555fe6a353e9f +356600 000000000000000015ffda7d373baf6c07922ef8e831bb4c7a448111ecbf89c7 63b6420d2ff45ba2dc903d95dcb8ada510ea53418f984579c759a933eb79c9a5 000000000000000014e5d1c16bdf02dfb3f9cd6c3ed481d469c7bab91996be91 +356700 000000000000000004d0bbb9462d7c784d9b7e0555b89dc57513b18d7d3ee413 785618287f04c2bb3e4b3f657fa7e616f0df397413951c3c62db228c645ed631 000000000000000013d22ac7f29342ebaa7ea6dd6d0a0db8f511972b2666377a +356800 00000000000000001674c677311958fd61fa4676c969b80e3c2960023bc1cf64 33b4ec2ff378b962405341a1cb4d5ca1b16be7b3ccd7dad65f6cfb3510e3beca 0000000000000000124a96d4fd86eceaeb186e19d659363eb6bd6ba0dfd8a49a +356900 00000000000000000830ca542c39ac262ca2ae51b0a9a4d32450e81ab69c5e82 7edfce5bff1d68d98dfc85f27fcef2f4a8b48240de55ab39118460ee051f117f 00000000000000000f680c1470e84d1158e0cc4bb9b0a41b8a0792b5322110c3 +357000 00000000000000000982a6bf626dfae76e953f580784c7956ce62860eccae4cc 23a8567065919ead3c1bfdb47a6bbfa140545d4d0b177f6a3a1486535d6b873d 0000000000000000052ab08d226c5683653666f4e03f64c360a579ab15322d6a +357100 000000000000000010d16e35c90c94abcd5f9029f324f69a2636892bf3a9f7e9 5a6e32beebe8e9dfafd1f5d337b79986c0a0b58e2633174f63c078a801fbb3dd 0000000000000000002b70a344b2975003aaeaf943e48a8c3c54c5d96acc8752 +357200 00000000000000000921399e10ab27ac7901b579b645abc845a466e014d0234e 2711359de15b08320eb7bd8f01858fa211bde9cc3c938980084aa37f72daf680 0000000000000000003df816ed67d564a9da6bc9968c13101a3e7369fb3c47f3 +357300 000000000000000006e8931b147f76026713a519b55bd68ce232ab2d0ec53baf 00b3d9cf1fe8c4af5997234a548fd2123a9cf5258be58c158facf99e485d5106 000000000000000003189159a4a486fc1190c1106c725a437fbb3629ec224cf8 +357400 00000000000000000bde0904850213a1915a725dd38523b1b33b3f1a65e6a047 86e0b1db3ed6eea2ad632c4deb6c1db9b9888ae67ba023eef6ff8f659f5bce93 00000000000000000b215ef4fd763bb2fd485e5364d37b707786c49d15e1c6c2 +357500 000000000000000015e8551f12d2e4b8bc262e0415ff09e65691aa1a87416db8 3ecce3529288363144052fa1f344f1f6657da4716a33eaa4dfa9e09d17a6e430 0000000000000000104e4b5bf9abfe77696e0433bff7034d528775d14de3e462 +357600 000000000000000004abbdcee52c22106b1d18c945e9176681def1e93ef8e76a 1e994840527e424b418e772768106a5b8708c63c619cb23091ee7fb10410c31a 0000000000000000062735ad9aecb2ca32b4429f68afd371f8786917d4d0d7a2 +357700 0000000000000000166f4e04992975306fdf3efc8a658fd27e6f93bcc2ace885 ac199a47fcd6d3cc0978766e3d0e56cd35dbb73b07811820f7937b8f840063ea 0000000000000000076a82d268d098a555e7797ea78e5315a78819adbd576e14 +357800 000000000000000000131b590566124ef4551706a80a3e6251894e5cbaf3bcff ab0cf3b8bd61602bc60e083b2c6205c45e8971e74a8ff8efa1cdaa30abd3c2de 00000000000000000ad0f2b0661047746d0aed4cc60ec903299b633a09ffb276 +357900 00000000000000001173e320aeb17bbac52039bef4e2cdef5d1c66fb12003317 ad97c0be459a5427e4d2e7c900f83a004377c86acf58ffd3b355ea0b4fb68c4d 00000000000000000f552861d8b9c2edcd6684789de50d6863c32b8800848b77 +358000 0000000000000000073aceefab8c381c3c4edb4f87a6d5d2ae32184278218429 0be524d456b9cce62262206bdbb7f0bc9be9a66b508080e4fcc0e3a30b73f9dd 00000000000000000c203f910ac1def0be1d848535518369e159a73002574a2c +358100 00000000000000000aa5d042182ecbd6ecb322c9e35af8a51679d15b3f27acef 226264e18cdd018536edb1ea30ae033f729eb52c1cb80a3d6e25a4cac31e07ca 00000000000000000faba00bd273028bc189e6d9594133aaf0246b1acec19495 +358200 00000000000000000bd32a877e4ccf315de3056ee659cf538e0b39121445bcf6 4ab83be7aa5179f658e69bd31e5b67d325b7b78ce69b5cc988f1106809bbc32c 00000000000000000020183ddadb62903ecd0148d9cb7e58400acd5e26c80e6d +358300 0000000000000000146ea3aea202c05df468b143cbc966c38f003adb9778f5ed be9b56a5d19526625d81c01f586facafbbc4d878f27777d7790e91292497c96c 00000000000000001389e5b6c315202d506383445579c410df137a5e997f29c9 +358400 000000000000000005fb51818f3dbe377287440895b31af0c01f7dadcc4ac412 faa0b8629d491a35ecc2c58930981ec708ea6fe150911f24767fa446e57a362a 00000000000000000829e286c712448f6a45edbf5899b34e5f2c712523c470fb +358500 000000000000000009d5c5a4461fd1ffb6b4c7c0006a78734bded13e1f349503 ae3aa391f355ddec1b3cd9d6019588d62fbad9ce9b1097bec7f8f90cf59cef5c 00000000000000000f207fca2170921e252aefa7033986f91889e37a5287725c +358600 00000000000000000ea14000a1ccd304854e279408608a0ca1b8de685e1ae06e e98724255f034dd2378ad2d2173c6f84f75c78648232be60effb1e6eee690c63 00000000000000000f31829d447ef1b6c9a7deedebc60f13c4d2586db663aaec +358700 00000000000000000228637be2ea72543391edc9cdb3774b166516447f5a26a0 1e9037fd870347bc2f44ff4b56c30d03f66954edfd4f3c56cf7bfcc5e57685c3 00000000000000000c499e423dd9a0b5d74a80ae7bb9f2011109bfa862601100 +358800 00000000000000000913934b55ee19166e0094eda9cf94b7f1e94a8210ce6f13 dcd4fba880858baa9953ee5db81e9092db80580900021adf4b055a7c848832b0 000000000000000009548a3bbab68f488f51a11d9086dd71f34471112c3d9be2 +358900 000000000000000007237a1ecba5269adca47e00747239800d1167e31e0013cb 57999cf5d2405201c20ec41366275c6c41e3d4bccfe8ac595ab7ab8c7e47d0fa 0000000000000000081cfc3b87e2822fae31f2914783734b02232495558d7d10 +359000 000000000000000003cd67bf7e67dee8ee0b17c957199b4f16a7e44ba738be68 ee3a41c993e68f85853571cc16b004aaea5220004524b6b9445db7b575466666 000000000000000003708a104f7d4381d89ae501c76ce1bd376fe7eae7af69ba +359100 000000000000000008b728914814d4fefbbdfc29ed3f0862d418574940ae831e 5fb24ff7945ab73f7f4d782c20cbc256c02e3a7123145ac73c77a3d595ddcd10 00000000000000000c9a10da91cb897fe2b5c6ff7afb156b680af0728aa0019b +359200 00000000000000000f27cf41eef27965330f9e681f1a1d6786056946dc3c6288 f03b1c0a868ccec73c4b3fc6263ca4b0518e2297fb69aa6fce0eae153c5b1b72 00000000000000000b5962d7c664db8e22db4061eeceea501cf7eee001005e71 +359300 00000000000000000905f0ed203b08a8e39afba1e17c60dce01eac7df3dbc562 9220542dc83897229f06f6fc111c1e653597edb52dd344d468b20a13ec01c874 0000000000000000091620833943b0b9067edd2a090a234a84c36a7f9eb379e0 +359400 00000000000000001110d2129146b3ed37ff3835c81549bf7cdc009f5676fb0d bc7567ca2a2f265431d89956cb2e603a8b17c1bd530a062733810d9fb7ee234b 00000000000000000606484e54b5496c13b1466d3a10e57d3b00b93fd74fa35c +359500 000000000000000003d91eb789b648265dc66235afcb1e68442de26313b12cc8 683e2beb620d67203cafe3dc8272dac3ab0b6205935d0cd865a10bf1eeed1e56 000000000000000014b58080d4aef8e15d035fd2797e9fbabd1cbfadb83ba226 +359600 000000000000000005fd21b24ab323ffa9c431989d86712f51db91c91c0287af e1c74d1945788bd7314873aedf9730185ce3cecfdc4d3a316d93feee5bca2c93 0000000000000000146194d1ed3ecd067b0673a5a864d5f547e3d363b170ebf7 +359700 000000000000000005b888f9e266ab5d54a4635e0b121f37db831c605f30acbd 374f165ea85a83573a2bf6ed9747bdc5ed9caf3c63e707329bd0d9cf0c2c5fdf 0000000000000000097cd8c59feb3a5e1b0b1e077952bbce74a54d74f3890fbe +359800 000000000000000009575113b886e91f8b173e4b243d83429f939dc11d25109e 03d7ff00f4765da324b694de5d09172e56605847f362db6406478dc624ff55de 0000000000000000068f3e46f9593f164f65f49348b2dbd5286d73d97e0a3190 +359900 000000000000000016386d4b58b3bbfd18c2552d65ae76d28aa4d1ae4a6d4757 9a0d060849920bef300156a6467a241d0ee0fb558be1f43f923a758679b2b604 00000000000000000d6e499fe7737df5d02cf7657d129b50fffb003231fc60df +360000 00000000000000000ca6e07cf681390ff888b7f96790286a440da0f2b87c8ea6 02f48e81c0a8b65e8bffc42c6f9fcc7e51aae04b9ead99d767a23bf5c57ab40b 0000000000000000144eda4e110a9389cb8e6a301366445ffee980862faff5bc +360100 00000000000000000f299aceb4a42499b140da4fa352ef234c8842e4fd58cfed b73861010973abea2a1f97eb253840e7f7e859acbcd7a76f8a77162a03708d72 0000000000000000078273f4ec4823cade008fb1f46494d1d81267e754ee220e +360200 00000000000000000599d99aa420e018bd245b6e7fd48e490041ab2f9a0aac38 5163761e172d5524bff23079a06bf8aef0f3eb9212b3758ebef54dc2b9abad32 0000000000000000137757fc37a57f597a844814ad29c898be4dce19a925481b +360300 00000000000000000a319eb6e855726d67d35e5091725f67cb086abbd80aeb2d 3b34c67e5a4eca6231f815f950cefd89ad5a0eac0b81bada6412787107e00028 00000000000000000486880ccfc0703e3e2f5641389c078c51324137c1fff15e +360400 0000000000000000033487aea3d0a4fe4028acfa6675be1fd3e0f5d31378c11e 18504ac12baacd0fe4ef5f174a975358f066a285c005992a4b1afaf2e0ec7df0 000000000000000002cf528671564eca9636d6bd328c55e0ab8f93e1157854de +360500 000000000000000008c046a2f5189c5081e76184a31609fab9d2383161d14f7e f39113003bd596faf25a50fe3ad684837af002e517f5d68f96e3f55763bc8372 0000000000000000022ac4e015c2b9672a23fbc70c294b1b5bb397df3469b656 +360600 00000000000000000527e6ed1016756851ea3cdb88436d780a69bab0268827f2 9845784e4bf7ddb02ab181c12a13f7147d7f8b1b389c943857bf85e1cacb06a5 00000000000000000cea706491da61bc755a1250d7260becff5aafc9d26613f2 +360700 000000000000000011b76502e54218d2aca740e165ce3b5e92a1cc99387b2a69 5303829671189edaaca535f6008de9aee05521bc79472051dd94a65975233093 0000000000000000047ffa0b67408faf59375a23566bd2c6b183e5aaa49005fb +360800 0000000000000000151b2741b37b9c1a9826947c49cb8afba5bb812d36ead66e a5e1a375074043596efce847cef5de5213b15badc71f6f625c46bd73d2cc1a88 000000000000000012d5693b35a17634034a095947d8c5b64eb9fdfed584e2b6 +360900 00000000000000000a355d5ab6e152fa020e022b5db3d33daa08ceca479e5182 6a28aa12569127851e2d8ba38922e981d3ef8524bce7baef21af23864b97f0bd 00000000000000000d11107d56699c64a4e75b9c78bf91ccf15cef02aca24c1a +361000 00000000000000000ceb6d36fa5aea8ffee6919f7e8194aaf0e67f880feb4462 9a357451dea6c8bddf2128cf33b2ebf6ed40c69383b905556240b6b5fe47d6e6 00000000000000000c5ca05602ff6633767c6305937ee1a3ebf7cf1879614519 +361100 000000000000000012b5c7215c5f655b60969167cc11ac1e2ae84694510abfcd b5f307871ba0511e76b7cbd62d1bed055e1ad0a0fd1e212c9aaf22aba52b074c 00000000000000000ab096f26f33a2923fad164e30b1074413ceaf2eb7d22343 +361200 0000000000000000018e10327f68297af7757a8df5e8f25aae2c1e6211c19b0d 4f15a6bd02619a14ac74ba5070807f2754e2e3ec59547bacfc546ca99495d4c6 0000000000000000130df40a025b12e2f33e88deb4545201e0b31c263da0776a +361300 000000000000000012ad7c5ad909dda1bc5e918c1f6003d7baae8705626759f1 cf11ac68731a599ce44edd5ae1044ddc862a1532e803db1d3708362227957d41 0000000000000000062c8db20ec229231ffa6ea33ccce2335967b581d909e885 +361400 00000000000000000ebec6a5ed6b70107a736b0c70d05dee1011751c1ef5c90e f43b10d2f91bf948d21c60503341a2304a6f7ffee4265b1997ffee843a2c7e3b 00000000000000001475a040b690f0cbc904b201513fb633ef904e29a3fd1bcd +361500 000000000000000014819524cd66a60d72943125efcb06eda7e810faf72d2492 d4d79620eb3a46c5c358cc7fe576b022af5aed75d4ce7c1965f4fd40e0e4e098 0000000000000000045d4da3b39943a235361b74ac05d4982ffcdbe782b5aad6 +361600 000000000000000011b72809e57b2a678322fdf6ec0123f7b4a72843a32c3c1e 2b7657c3a9b1dd08df10487ec2d53391918280aaa170ed460e851361b72e3e00 00000000000000001465d4483e6890396f6b1212f4d0001d87f3b3ba6bf45334 +361700 000000000000000009713a0cc8c976d25aa13f805375f02b701987be18774f2b 71ee71efdd442eae4bc4a768fa690256883144d1070e26280f861dae5c7837c6 00000000000000000b6fac32a0b9283b744fe0040d87d4f60cf529d32156e533 +361800 00000000000000001208faf61f905d2b55d220b7dcb17dc4f8b755fa94396855 0a0d84faccf891de4e84cb43ad234cd9c716b45a67338d5b960e864b645ec762 00000000000000000a1e93a6d37441918ba0f3b1992daadb14f33e3f5d4a930c +361900 00000000000000000807328e756d102b54fdab6ccf3995b0187353974cca12b7 7dc7a158be5a98900e50e08f1c8971ee4b1c64af6c92aff3d1061d003bbec5a4 0000000000000000047a00cf370ad3176877f58a400d391cc9ec0ba0ace4f41c +362000 00000000000000000bfcad6c331dd152cfc713e9e0790978a10e0bfda3e030d5 2aba8461dd7cd40d4511c511ef44f54969051380e948506b82a61d9e397057fe 000000000000000002f032a6c1d8fcc634946d36c10e1e1501d5b954eb82f726 +362100 000000000000000000ad20946adce6d8caf603cde195848d885cc89d8092d8c1 2777b37b168dac2f6add965692cf74f55de1dea1ec1f7470ab9cfacb70f1f4d4 0000000000000000076b4e2e528fc121f06db4099551316242587437ed80aa62 +362200 000000000000000007af2ea880abbdfe94aa3e0b36472c27db54423178898c98 94c28ce3e7d1582bfc6c4e03d0cdd3469a692f2fb396b9152f22f2c9aae61b5f 0000000000000000063a2828f2620590cd6b40e6af35badc547aa9a2a05a5836 +362300 0000000000000000150a96b5bd472a72bf4d16282c1a9df3f8db7437df1e302a d1b5b8b63bb30cef98f9e9096f3c8decb79296c5303d4ce5bc06bb6b893c6339 0000000000000000147847961cf959eac1f3fd205f4eab250526b0ede4ad36b5 +362400 000000000000000001730731ef25b7bb62482a213172e122cbb149bf8b0e120e cdf3ff99f2d0ca6f69c99a0436a50e8d627fb4d16c1bab15f2d969837395bff4 000000000000000000104cf588bff57ce919809184277e2cb629bb5f86c0096c +362500 000000000000000009f7f778f7de23db06f7435813eae679999f544e5e9d3534 811762a487ab869fb419cf311aae8495999a7353c109e5535e587c5d06b876e3 000000000000000002c5d5b9f880b4b4c00ecf0b0aebfd750f73d610b6db3773 +362600 00000000000000000b4a83cdda6c369a82b03808aecb941e736e730da3a9b532 9f3b0cd9b0f5c971addf1c667dc1e6dfa51ed2560d7f75ddf228732f30761d78 000000000000000014a43d4a3b5b5fc338d7057ffd6f3706c2a000b4c09cee5a +362700 00000000000000001618c67acb9e26c946a10bcae553a5160699445595f7d035 d10c6fc66f40d4c82022899666882102e761373f7b1bf7e1ea7952a5eeb154ff 000000000000000003d5e22eb3132397c3b9e02a3bd3cc2d1612d582eb5d50b6 +362800 00000000000000001583481b7b7857ce2824a05c8f304ad52540d3af9bcb4753 713b62b11fa72f35d7cf8066b659d529e13258d3c7c69bfd3dd9211024b034b7 00000000000000000c7d05e1e9ca46d56cd85d59f037fca5479277bab9bff8ed +362900 00000000000000001147790272f4d5bb082c410f539ad4264424369b1b9e9cbd 25ced4086a0125b13db68fd33dbfee73247bed01dd0ecfc9b6935b584e2d7859 00000000000000001060bbc060344a257662a4a279776173368cf754f7636ef6 +363000 000000000000000002397b76ee25bfa86d6d48d16a9fee770054466a0e75dddc 3ab8f5b71b42d3ceee5c9eec71393111c43b70c0bebeeb6e3c7a8a2663f743ed 0000000000000000157cc432fceff48e50fab73048c379ad7e0c2bd0e05fdedf +363100 00000000000000000d24db0d452c7839070a8d2f35bfabda85d8a598ac32c546 7309993b590f10871007ffb0725c0b32847dbccb1616cc3d86f51e602c1b11a5 000000000000000001769c7f90eb8186cf019b32119da1b213e6417cf7abce32 +363200 00000000000000000eee619db9d6395995bc6ff1469bf7dea251eb72ee46e23c d78fd3a08e0df0a292dcd5b361ab4fedc37ede261c658a6f5a5d328738d08084 000000000000000010d171a21cab5a36167ad25437461463ba2392bd4b156bc3 +363300 000000000000000006a5d8b3b2ac85007e57148b5c205f62d3e84fb3dda36235 cb197fe6514a2404540e88d95465986c7d287244ac6e6996fffbffd09c3b65ad 000000000000000009143ab9ac9ce338502ac37f0c7a6384c1e4e04d6927e7f3 +363400 0000000000000000005cc6e7670c89f63676a69125c6317229984fc23ab8fc66 8d09f8c18f10e1d52087634711d816158f880fa904bd52d8b7d958e3497a037f 00000000000000000e460f367754ab02aba2b27e434c457c9c7febb2f307121d +363500 000000000000000015f87905a667ce1a93f365d05e81fe0eef7d9f08f5b0dffb 5df05523c69118d7203af3b7ef5c3ffafd0f6562eefe798025f231360fc5bc7d 00000000000000000a7a9c4587ffc45b45aa2bed5a2ae06b9234ab2bc216c928 +363600 00000000000000000816947908ac7b9615cf448300d53a1be6423dd6adfd2b4c 4d203195d4872113619281eecde334169c36ec6e270ff39d9dc227d793667b71 00000000000000000542d3fcf26029cb66d4f1f9f38f70923a0e440f3e4d0d47 +363700 000000000000000005efc7a5559ad30d06f059cf9675f2367549fef0d5696c46 a67b5620de911d56fc81d5d7a615d64ef06bd5eedc61db79f8a5d1c6c7c85b4e 00000000000000000d05053f98fc62e2a72589a08717f56d0f88f227a36fcfe2 +363800 00000000000000001374fc855cd16ca38e470022980934113e205261a79d1afc 6c451a81632287199a49546e67bb6155f42e4bff9444e5b638b0be82bf575de6 00000000000000000f3526798f3671603ced92cf35c07e9ae13963d214cea4d5 +363900 0000000000000000046fac968dea0fb6cd1d9bcd5dd30e794826ea152aa56058 2e61c674f6facb049a871f6d74a651f3630f8257ad229d14a9296d90ab701d46 0000000000000000117992a9c5c560eff6e0c8256b7585049daa1ac84ef14f1a +364000 00000000000000000e20bcf213a0bbd6be88d5fede6b060c737f7f8b7f1df504 05946238d3da9371e6fa3f6c049b369c2c10fe65f2caad172283092d213f5e49 000000000000000004cb2acf1a28acd9d1e06d71357ed177ad61b9e6b8562ea4 +364100 000000000000000012539f9cc04158fd7b52545640c4f74534223ec3812afb0e 0fc8aa0c20cf40a48f2cbd2ecd1a84c7ceeaf200ffb823109205d653c5ae7466 00000000000000000db23697071d3e7bb404395ebd46db4df13f15f1ab8dcb45 +364200 000000000000000003f4af196303e713e5872782460e99161cca7fbb5557bcf0 a5259d30b2fecdf072e208cf6c22a24f2e53c263eade18dea0f82bd590e01ad2 0000000000000000003bfe6b2496742f6c187f7dfe9b7fe8ed9a97263829a7a0 +364300 0000000000000000132d3c014c8f5a99a4eaf862c289d1db0a9f67a6c0a899b6 0ba16ebd7c67a3e9a3a7f84e455aef3f6e5de8fbbc56e520ffd871d3d6f38090 00000000000000000a1bf46bd3ffde11aa9754a90e8b4e2cea00618670260f05 +364400 00000000000000000b26638ad830025fbb9f7246eae7a6cbaeb00dc3a6786238 d8a06f7797cd87ac5df9adb556f1c2a20f959ed87d2e0891277d9066a95723fe 00000000000000000844b44257f6af97a8d0ee566e445c6fafb3c0de209f2c08 +364500 000000000000000009b23af2cdd1e1e51f0bbf858e1a407f90e9f020cbfa417e eb7335d45063ce0fac0f75a857924f797c6b03b7614fff3ee21d84d3162f0b89 000000000000000000a9b9953a5fc41eff5de2a0248b83f5a11731431800dce1 +364600 00000000000000000d04cf3a542374b72badaf78809c11717721816b54a7b453 162d7d6defe2bc0af2eeec564a11c0aba8fc0086edb7383c5df073250d561625 0000000000000000013d8123f3e911f61c22170dbd91dd87db01cc8bb6edbb2c +364700 00000000000000000ac626111f23cc0ba3e187bd2c00d46be4724d98d0fb90cd f9c00e2bbb82b965b529c6e276de2b6f4f35a3081822266cbd88e3816059dbe0 0000000000000000125f86622aaed6ed53470c62e5f2a25baed9140e24c625a6 +364800 000000000000000004da1a22d33d400a105b0859da717b6aeb4f459afe6fa812 6157893cdf6ad526e21b280361e6fdb71b75d89320878fc28af2a11923d8a44d 000000000000000003357b1a7d1b1cf90be1255b30ce53751c8c48695042316f +364900 00000000000000000da2a64a9a8e32623575ba19c3125077d1715c1ba2d3b90c 98fecc66072d2e3d66b6938083839e24582c217c4fb2d33e7c39dde0909e5770 000000000000000014c73ed90536ac7ffa9184fda72a87f212d8ade2215cdd08 +365000 00000000000000000d2e776c8e4df168e4e78d935197f4b639667c17f84b66da 5a1745b8e675d77b03387cdede872060581e32666a51c87cf78a53b24cc19449 000000000000000001828f9ed96a6cae4f0dbf8cd48b1683cde27692ef530991 +365100 00000000000000000dc481169d1006c6f7e738e3dcf56f0bd97502342c44f164 921bdc89b643bb3e3512c9adc6836239eb31e247d93a9be5239f57263ecd0816 00000000000000000a1fdbd1a5f78ed3e0d25b37b781e625bbfa5d518f43051d +365200 0000000000000000073672eb48dcea46025f7cd357806236d5e5c440f6cfd21f 6751fce30a59bfc946f58fd920eae190d8a740b3eb32dbd4306ca3af30b5817a 000000000000000012b29d2eaa3c7580961bffcdd86d8d7cc22c1d7ecc4ea0fc +365300 000000000000000014a71e369217a5d232e7f07073f0c29486610ef63bcb546a 822797f142375c579c12b2aec5542709d9e1e7f73a3e0f263a92a2016a5051ff 0000000000000000083ab8d4277a60109cb0f9437a3e79f08a3a2bc983356b17 +365400 00000000000000001368f0297d626aa9f0e68000590bed91d5d814061c264bea c7c227162a17db9e9d54e06e5958f23d10969ff0002155ccc5860f87ac0eaddf 00000000000000000edbcddba0a5f06580bae32f35ac964b29e9c92bccfc2499 +365500 00000000000000000b29502ea6dd8300fbcbc9feb7e07969f9d87620993f2b5f 5d138f76c7a3fce6155fd4a429ef5384ed156256c9de3b64c0cfe01e66f6e76b 00000000000000000681fc4e8ed41ffedc44bec24958af87d562fe2406e11ebc +365600 0000000000000000108c432f58290b88acf9db07c2aa4941decaa2a1bb236f96 a918f2a864eb76a3c5682286d6741785ffb8f8ccab1fa218f04fabe6b9aaebe4 000000000000000003e2eea4d9a21ed2410f570283190e33c3957249a4b49165 +365700 00000000000000000f89316b91e089eb4c48c32ab15c72cc1ed933593aea0afb 5f567c8d3acbeb3130d368ed8999fe908c5233764247820cc52288252f8f62a8 0000000000000000138147be90db48b8338de6d58cc6b60e6ad360f6ef486d8c +365800 0000000000000000129dc2f8d9615e461865529818d94b0263876435a55a3e65 46f553d9e9f10b30cd4e9fbd993f9c3ab6ad2ecf8d9e04ccef274144acc5dbec 000000000000000008d881b556a1950f9fa7932b07c982683554bae10db1d759 +365900 0000000000000000103e5e44d221599032ba9ad67b604ae06de096da518f61e2 aa91c2681663980c567e00ef02e5518f70d89dc0c8e4c7c652276366f9db0bde 000000000000000014be1a3722bb662a629d3fd2164837f99a9840c5a2e6af1e +366000 0000000000000000138e108e780fdb71eb4cad533b46445ab6befbf9687f561f fe0101bcb3e03c782724f14836e1d093bd000ab08ed5e47aefd7df1a7732b85c 00000000000000000affaf111f8dc332f8b2c3390c9a073d938dd1bdc5aec5ec +366100 00000000000000000ca354fcd06a5adebefd0b28e719cb4dbb3bd1593b18ea49 ea9d1efc5038193bb9ad3c0798409707627d125d4e225c3d96938a2defc9165d 0000000000000000008aed1a0f8706f1d422daee3b39528cc327d7131f906756 +366200 000000000000000012d24928fc20db3e8c45620e3450aaf664285a6decaf0da9 6f7d1813c27ca2d15ad40086db5070bab16dafcb2607e8544399f76137060900 00000000000000000e5bf9ccfd0f0db72bf32d591040a8e26024c9c23775dcdf +366300 000000000000000006e61b362569b9585e330d7ecca508d5d6059a42a2eedf2f 48c38b19d937174f2d91f2134acdf74ab91f1e0940618cdf524b769f1dd7004a 0000000000000000031c12b6af038524fd5dd28115b7f5591e046423cebaf6d1 +366400 000000000000000002fd3d27de82cc37b3bbd23d2439248d486b14a652c3b566 e6dc1801a815ed5bcd951e39489372dbc4e05cfd33cf94599567f2887d2e10db 000000000000000007f6f3ab844d53f172ea8915d83fa60eaf677aaac28fe2e9 +366500 000000000000000003ea86da5e16e7cd56984432fdf78b9d17c414d32845e059 9d3a3daa82f14d91fd8ad7da798ad229b75615a44f057344aa0cc591be9d7660 00000000000000001001b16e6af282a47f70a5b2072f72e9809408197fba9a6b +366600 0000000000000000031cd6fed37cac2e3db1d039af68aa59e8200e4dfbb9d7a8 e18b6d32d7d7cda66c59aeeb6b9b1726ea94eaf196008245e0149f3f038640fd 00000000000000000eddcc0109cdbd85185ee176cfcc7f72b3485d8f97c9c51b +366700 00000000000000000720cbecd72983ddf4645acf872465a0fae75071bac86f93 05b38f0f4adb5b99a1345108f891bb753e45b06086b0a0c20638fabddb1a21f2 0000000000000000112bb90d59afd139eaa2afb357f37fb1b8abe8e72cbf5a77 +366800 0000000000000000099236b49958f9339932beafeef59c3c4850962e6b7dacc2 ae45dd5b0dc24dae23585aec71448349d0ebea3f66e0b717f15d437818da20b2 0000000000000000138589283efe85c11b925acac89936d159c19bd90eea9240 +366900 00000000000000000efc31bdb2159f1818f232675304f7018624fc7f29694161 eb54b1a2ebf43ba0c28cedf00ca88cb92a28b9f3c561881f1949f73fb37d7053 000000000000000005a9242da6a6b41cf37e27a7d356168cac414b91861c56db +367000 00000000000000000648f44c702f12e748687a7dd71b4b58dfed0a5d626345e4 092ae33ae31a5444a5788a586f66e984bc04402f81bd3c2dc88ac37f540afd47 000000000000000009d69ee6e3a2bee2cd6c5d3f603f96aa0d9c515bb8acb5bb +367100 00000000000000000aa14ddcc3bcc8311df95f065bd7dcc581b0c4ec77200226 37974b983ca996720b49bd79cc995cd397c479022e18ee732eadd96a3d429417 00000000000000000329dc73821984891d039c5a8087522510784619c1468e71 +367200 0000000000000000149aa2d623543a30619d4a10c88cd0952eb0ca2faf960e41 2b94fdee47ee469525f915842873e3e90d5e9a8625b8eff90f261db4c95c9457 00000000000000001067f06794520331a42e9350b60d565b28b8a85ae937ba10 +367300 0000000000000000132e02bcf27489633f36b566ab0cf4746dea2931fc359e8e 89e0b759965520cc17e25d052a33ff240b1c535d1440a64a3be62e56bd0d95b1 000000000000000012e37b85df21b29efb7bdd6e0ad55b7d79ea20a9f2df0427 +367400 0000000000000000120e8af76a6b6ffb168a2afd14e5f46adcedb9d5828d978d 9ef075749f704a768eb5fd4f14e11d6639c12804d95d586a61f3e0099bb7a2bd 0000000000000000098aaae69ff97d953e6703bb63fbd6274f8747080a2a41a5 +367500 000000000000000010863b6f9ffa9b13f862aa0795b18f43d72a6fd57abb4528 1d78848982592a9b7dc8aadfbdada0728bcb69fa0e4822349d848e9a4df5e87d 00000000000000001193e357ead4c31474d3d7109a8c6d77bd7fa5560a5a6456 +367600 000000000000000014c8d93d4e3ee5065d49eeed1eff83c226b450f7b20492be cb2d53bcde4ec111828592e06a1a9182860a6af2e0531c5f410169922a0364de 000000000000000007f3ec658327af8d92ef4679b7d38df107fb68767a255ec1 +367700 00000000000000000e36a5cceb010448515263daa0f69a027971f5863fd53fbd 53acb8fbbf1f199e25d770238b30d7707e42de3fee370136075aade634fd9b2b 0000000000000000096416f49c7d81e460c080e6b00e7690a78c1edea2fbf9a5 +367800 00000000000000000c57625240a2f7f2ee6ebebc60de2e6670788610be01bca7 f62f913be0500602fde016bfb70cf884ccb2ccd0f53cb1fd3d3bf988d7b27032 00000000000000001055f05cf2f8fa405fd3451a704bc89fbfa495e7a6188e74 +367900 00000000000000000f1d4c26f1935e38818fb27f9b301debf3c7e59f42e1b983 ab018aeb8d5d1acb1ccf44cd5042b20d8980a790dfdc79a751ff5ee6c40d4db6 000000000000000007dcfbdd11264eb4cc584e7c3d1d5faf9e17cc357e3969c3 +368000 00000000000000000d39970aac12754eb89c2dcfda539b65562e5c3fec102c24 08c464bf92dbd17ee136430a5cb4aa3986dc812a6b5692cfaf581a5183f28a25 0000000000000000125427dedb152b12f85f1158054c6239b68169177e2155b9 +368100 000000000000000001ab6476ea4550dae3ad89f170d43d4184591332e976c93e 931aff98aa37578d5b83f8868a2e0b72bc3726fb0c22650e05e2a8f4f6010e84 0000000000000000019c2fd95e21f5ad2d1dcdd3256c49c1bc6ae4631e645eca +368200 000000000000000012e5e8654161e857c9443edb165bf7cbb8ca4274b38af6a0 56aa7fded702344652e05de013412bc05cbb0be8cb9866f1427af29e9fec70f6 000000000000000003bcc265cc8188a5da158f77407e039653f144caf093757a +368300 000000000000000004637a4d166d39509ddd880c6c32284b7aa3cc21fd781fa4 e9d7d8ff9c9eb1ff666ab03b553b0f0a24ecb76b56b9176bbefc25d772528ad1 0000000000000000115416525f68e2177c3fc3040b27d83ca51af33b8ac4896c +368400 0000000000000000112f3ce8cedea4045854b9bc60b011a5e7fa5908a6b487ca 0938dc84214d3d2b403d46c6eb82862ca005dc42097fdde2bc624e8e5b3e1359 00000000000000000642b62cc8d586643a9b05959bb61b3b6730a1dfe043508c +368500 00000000000000001085c2bcf4cf0573b364e65a3990201edeb9150f074e9e45 3a394f622ccc9fba7149a39ffdf0baa8a7b65240dcfd5a5b360f86dd07ac0fca 0000000000000000119f342c71f4c402f729fea01427a873369bec65267395cd +368600 00000000000000000c93572c7fcf0ccc927b5fb00039e90d1550327d6d83552f 87edfbb157988b9eff093111dfc173544492af8a4e86ce7694438f8fec645d36 00000000000000000be13a49f9c0852b6c2c773efc816afadf4b2328bebc1b0f +368700 0000000000000000094e2672862ebfae3fcc36487fd340d488bb2eb0b4d0fa76 21372102244cc8c751cafd5ec537629a5b89b9f0ca8655e64c1d476508f9fb75 00000000000000000bd7af74391af82fc2c8fdad9ba837de54c0dd731bd39e94 +368800 000000000000000008ed34600c4c74c3a7dab32226ce313b425802f457e832a4 9ac6c168217eac051c82eb2c0bc63d2eee71d3952fe7c33380e59669c32e60f9 00000000000000000281ee4f2341621bd3571e39610d26554b8c767e6377a8d0 +368900 0000000000000000043ab9d01e2e88ff460b6205b43cf3508ddeb8461bddc2fd fa1fb67947a7a15c2aa64bba3f2ebf118c2db4eb60285e642b4d0c3a16b8649d 0000000000000000033d0855fdb77dbe3ca416ede726e2dfde22b7cb1bf65ce3 +369000 000000000000000013f162f70aef6b1815570c03c232320d9d625b248a883e5e 12b9824be65c5d8d5287e90c9f94c500de2ccb0b73ac730059a6d505a0e1fd73 000000000000000002e75e5f902a062ef57c730912c76be3516b5b8da058df19 +369100 0000000000000000112f890cd2621e2335beca8cb75a8069d099ee20323986a0 f6f93f26c0e35ce0540eebd195bd10743c9d300b33299a1032a91b5ceb56a84a 000000000000000001ad74daff2ab1f1e1c20dc2ddfb524becac00d3216deac0 +369200 000000000000000013d41a88a0ef975962b623977befc5e929d639c2b283325d e852dba69a120278a004a8e4b128c771a78d4ad4fbbed5b300c34a8a3ef386d8 0000000000000000066f4b312003407028e61df6f6b272def7a97ee99e82052c +369300 00000000000000001101faadddd252fe834ebbb6244d83f7e41ceeb3fa5eb6e4 5cf8c319969c19c9fe3b1e76fa9f706729665c549c6a4fedef8c5ae416c539ee 00000000000000000169286fd25ddbb9fe2cb9d095f911bd017e1fa2927bacd6 +369400 000000000000000002489588a23cf5eb3fb9acc55709a28a15355ab82f2089fd fc5ca31861c4c33b732c6c20cac79f2a4aa537026e33911ea13c3e20bc96da5a 00000000000000000e6d6a1237d0236ddd3b18cb87fa954bdbe5ce34bf7d6d81 +369500 000000000000000003d7cd0e3701d122797326e04c09e79aae5cbb76ef3225a7 ae9cadf2d50f348d4a554e2ef3b33384a1016c69a17249278ce3a0e23ca62bbc 000000000000000006ad86568864b66e8d4f0d6e38a21c2f1ee701cf2ef567dc +369600 000000000000000007f9a7c1680fb09b7a46f989e5598757669eba92b23e8940 e4eb79f18faab7e018941e51efb37522c766cfb5869dad6a28ed139c037e593e 000000000000000007c2b603bbe66604637f76dffc35f4e707ef8dfa61c203ba +369700 000000000000000012cb9e5fd9f75df3c1304c2842aad1c269601d10c46db3ac bc45192208aa042e84e209e267a25c51af6bc8c7c6025ecb65945fd86bdc84ed 000000000000000002dc79d23d4f2916eaf873a05a84edd0a966ee65f98e8ca8 +369800 0000000000000000086bff8e03884ca9b250e5a2bb94fd74b335e993e5a0a258 3c39ef774b29e460611176670237b84b8e74120fa7a2f34bd6555d192bb016d5 00000000000000000669caa15981b627cc55bbe944b3457c6ed39715d453d433 +369900 000000000000000014bd3fc1f1d5e0eed8e28e055185489a8b6e3c87dd7a8114 802eaba7f6797d20d04a06bfc3327d9491a65997a4c42225f9270c1844d0bee3 000000000000000014682254f8c81db21c87903977e3e9045ae1769429cbf10d +370000 000000000000000002cad3026f68357229dd6eaa6bcef6fe5166e1e53b039b8c bdeab3c18a3484c51bd71781c4c18bf7904e748177124b1cdd4d91ea71b0bd6b 000000000000000001ba6a172df04cb3a90e8badc70b7fdbd4a7b903695bf47e +370100 0000000000000000011e2253a1893138e512478f4897f372336c823a4be8238a f16f9bf3b6df465b12b56cfe01c16b4aada0967356008c0adb647246c9579fab 000000000000000011f1927130fc6242e51ef2214ce6777e62db6ea7754a8339 +370200 0000000000000000133f84a6e2ce3e327f95af80e2a5ec79b09fa3e01aa070d4 e6a824dc24a264a7395588cc2d543234409d7d4a6d6a3afa3b454240c9c4f6aa 00000000000000000d08f53f44fac3e2bfd55f0f1d874ff3d88bc5c3d9570ff5 +370300 00000000000000000802d5c518c931bf013f560c4907625abe64c3c41542028c e45299e8348c00c116c73042fa1d4fa15f82b8f9e6a554eb17fe3d4d4e8206ad 000000000000000013dd480cfb2a7603d59ded673f4fde7db68c74043763b9c0 +370400 0000000000000000042a040dc93bbdf3fd9bd08374c32ff3ff34030507594362 7f522e9681b402ec8b48cb154d1b18e6de80fcd3c3bd332c47e8773eac63a50c 000000000000000004103ca5a90aac25f5fb64ec3ac5f50411a751b7c199a4dd +370500 0000000000000000133c8e4e1dd3960eb54040aa5d6cd2f1a02a718ff0b34a39 ba030a0a4cf9d9440b73654a843129b5b190ff2ccfe3ce5f50f3d6983e6afc5d 0000000000000000140e84bf183d8d5207d65fbfae596bdf48f684d13d951847 +370600 00000000000000000cfa28965007e2cce59346742a72707f739bfea7537b090c 3737dad91c1ef9ad8cbb993024679ee2782ca021af534adff5e5ddbdf21ff39b 00000000000000000f689a158725349cd02eb1f5304ba4bb99adb5c37b6a0537 +370700 000000000000000013d52e758e4bda10fe102f5d903aa6fa20246e85c1af8747 9e91669c08159f2e6c4ebfda8feecbd11beec0ea7dc9e1cafc541e9d3049c3e3 000000000000000000d7350652e35ba6fbff466cfed10645a1aea6382975dc54 +370800 00000000000000000e4132e782511b7f2e92345f0fff38bd7ad11bea47886569 6954e9ff3bd3264e30ffb539c0b4621cadf2416cfdd82c7c7193955adde8fcdc 000000000000000001a22040e620d49cef59cf48b669d5a37f8acda84b808c75 +370900 000000000000000012d5a1c3102ec3d39b3bc24da5fce9b29730f85973de3f44 dcd4f17d625e63742da72ecd527b9bf35c8e4d71d07484b4394386d06d6ca8af 00000000000000000e1748b16966e70c917373c8fc2a9d0a5da9b3fdf92b4058 +371000 00000000000000001289ebc023290783212a5aac60784c9d5949ec47364d8b3c c9a996a011657fe8f1ec12d981cd701a535aa29b262c835403286cc6f3a92faf 0000000000000000088677991b50da5fa25a60a4ecc9695107e7ce17c807c1e7 +371100 0000000000000000105b667ae09aba5ac7104810991495a402b7da92e7e61789 19aefc5b5ad6ff069e13686a0ab65fab6e3937c44f8b90962ba237f42509aabf 0000000000000000115b4c92823172a557b38f3c028c9257508da0414be67dbe +371200 0000000000000000015755f146c6fa82a9612a5902222168be505fe6fe041a89 905437d7027fb58a28a66008917684a5b370e50e1a037c3076bd81903af8cf7d 0000000000000000091825d9bdd0c8bc4b1f91f6a516df2ae7e0e69e6248ce73 +371300 000000000000000012be36d22d11e7d886c25179dccfbee6d02a045d1021e0bb 4e63f2eaf3906efb02d27100f547409bcaac927ba5384ad615ea5755cc6d93ed 0000000000000000124115870b8b9e45745a70d041c9ecefcf89363e153d012d +371400 000000000000000002c6b1e80a6aeaaf64761fef3b77225818acd01033bf8e68 f0ae5a770ba66267af0c1af2a1303b423c265dc527ceca86ed5b31784de04d6c 0000000000000000085312e0b8e85d58d92b747457b8db8a8e9763e318a9037f +371500 00000000000000000a261728b4f62b08dd8260fe067b01e5fdf51b9fdf1ad9d6 dc3cb129bd6ea27724b1e3132868df21c20344aca751b6ba979538ea3b96d582 00000000000000001342737b52ee087717af7f334c3333c363991a4e27e87176 +371600 0000000000000000128349543a110660428dfa697ccb54dcf2555adfc06f4a12 bb61a11555fad4ac52baf0e99ca85389945c9e9e853c298b762210f537acc85e 000000000000000009b8a8af0f5fda4961ec25b3359a56655c1bbae21dcf7317 +371700 000000000000000006441a6b5111eebecd86b1a64699fceac7f2d10fd5ba7db2 70a5ca25437448c1b0ddbee5365bbb853fda3d96e0581993d37f8539bd07d4e5 000000000000000012191ea33b1992571eff41685de58610027c58714aab4719 +371800 00000000000000000f3741400c91dda42336c8bb4b68e519f1b2b148f82e3cbf fa62c314a52aebb6de427695dd547c6317b4d2ef972fe557b623c66d887d208d 000000000000000009bc3ca4ebfded41375a8aa538a36f3f5d01212c6feb3cf5 +371900 000000000000000009fa3aeb7a7751c64ae7958e0357554bcec831296d376c8b 870211fd54b70baf709d2a5d8e07a4643728258fc8bfe9cafc3d5dd72317f4c3 000000000000000005893eb2ccf7535c742f86bf47a689e576fc4345c2728afb +372000 0000000000000000028093cc8035a6bc4e0d1b40932c2f8b50312a3fc86bf3da afd7e839731e452ccc8b0b54d9332fbecbc38d07b530d1133df0696a925dfc9f 00000000000000000f2e596350c35a8a69c1f74416c19352cbacf7ef6f5baebe +372100 000000000000000005ad5420832d7e7743e2fb80a6e97fc2d6162e76a6afbffe f7c065f0bba558996c6e1c59e1e63d8227cdc1a9909a9e115a420407be0f3936 0000000000000000005da708b4977b5ac57c2701e80ccc41fccce088e63324d0 +372200 000000000000000009b933c5daf4ab696563a29c9f687947b769484af14079ec 323c22ec058b9c5b2fdecc88891a5fbcc62760d7fc118320d58d4e7d6ee08356 000000000000000003996de32ad0d236c9bdf20f5ed9dde494e8900b01ebc6be +372300 000000000000000013b9b246072342a353bba041aee5186d5f5bc0df8420c545 ddcc06f820581512dfe1cd727bac15f71b59f0fb8cdb5813f3185c122860ee33 00000000000000000bf459dc39ce8126d42338608693e846dffb341ea8d3b2ab +372400 00000000000000000d95c8759d992982e8d3d00cf39191a8e2d4789f64c46a9e 0b72b99213e84c8432ada4f658888447664f3f2135ab2a8bee6f7818d362c203 000000000000000007774dede5f1ddd0392a77fd38e09249571e7b2804ae1524 +372500 000000000000000000cf4e3996f80a40da1942dfe0a7e35463ae909ec3624590 92dc44e51228c56d539bd170518db893f71b37f037058800c616b644bcfdabee 000000000000000001c8843febd9694ef46f1d77a688c715e38d7b81a1e0cab8 +372600 00000000000000000382ef35f41f609fe22fe0b9f3e95111c93ff42c2f6877ae f4ead04724baa0654792605cf2f9d15c0ce3ad7b94666dd3964bee378661029b 0000000000000000040d2dbd7c3e40e0bc0546e6ef744c5e4f2da383226ed1ce +372700 00000000000000000967c2f40feb1bb93a2b15826b697d038dfcaff700171c08 840b54eafa760bc4a0df754709187596a13cdebaf182d0c367ff0f4f9305c557 00000000000000001200413eaad728bacffc62cf0a0a3bcc3d9b3518ca3a431a +372800 00000000000000000325a61a14b941967db34a1015079dd171ed33e58f86a602 bf444b4dfeab7d54d924e46030c8c01035620ae3485f794989b1d312684196ed 000000000000000002884162e569f114a72b53d94dcd81e0025aeedb955c304d +372900 00000000000000000d66b4e72cff76b73e7b78a2b2183ffc03028b6ab38ebb41 074c6586921689e71888a41ac0bc639fd8bc81b7ae6f10b374f4dd62d911eb02 000000000000000012f85ef42d494e6191c366b5cde1750c9105da189dc16d8c +373000 0000000000000000121749666a9e1ffb5b0988a62cbfdb1a3282ab9510ef036a d36ad1c8f3dc37f4c7225ada9d124277999937ee0aab8e871880a1f485624a8d 00000000000000000b54ec5db665ad5438f02c55001034b0c3ba744e7d2ed02c +373100 000000000000000010b8b43b42eafc6fbd52621027c07f50dbffd96ba4339636 2396fee7f65b435be04a5e16c78c1502fefae71d4de6a5d9ad5a2fb0753eb35a 000000000000000004d93e90b6a7621323996b20958e9738e1b83547e572bd5e +373200 00000000000000000fe66acd46469a60672de817ee2ac31d8c31ce6cb8d573d7 114ff5ef9b9cc23ebe1efeb205b024b1a5006673359cab300b0fb5590e069dd2 0000000000000000078ef450a162dd5d76e85da82573eabbfdf45c5c397bf03e +373300 00000000000000000afcff1a26f73c5f715a96d9e6c5f6ad8a6480ceb4b982c4 8568882ca51a030d0f1020e96013909570b9bc56dfa67d4d39a8bda1df83f01c 00000000000000000644ef1690c66499ca891db7f1ec2d27e5fc0878fa0cf8d2 +373400 00000000000000000644c4ca9d2b57f22cbc17d2d2191b25bcf0ccb8ee99b4a4 3c49e38cf472c00e910675e96b901490ea80f1d8d6ab1003794d2fd644af5dee 0000000000000000121e6294aad243083b0d5e5e3066410c0afbfb7050a1963d +373500 00000000000000001049d0e5b5af118fdd9f8280c77ddce9a3cf39f6cef0adb4 254873a2caf1bb3142454a3acf7d95a8ddf9e1979cc824cbe9050d73f654d550 00000000000000000510f37098d77faa90d307b09b78c0410d840d6c9accf373 +373600 00000000000000000f66455246e8055a4d528d0ffab6a96cd837ed6debaf4b59 883918c2b93977d2fef6b68cb95b038a557e59232fd9e52addd46438ee024014 00000000000000000810c0285c417493c74769fe0c7c5aee84f6367e486acb5a +373700 00000000000000000d6f245eca2a5c16b0d5841656d514d068d11c3697d5c43d 314783592b0beff62c8ebdde41722a5425a19cc65a479b48c7fb245f4def890c 0000000000000000118c7cbbb63495aded6d90018e3111260a95f04494afdf1f +373800 00000000000000001003278a3d7e6862f1714ac043558d176bdfda987bb212d7 a130ca39e0c9a140d61a0457794c735517cf06a9eb5e5d2ad37cc224e6dd8bc5 000000000000000006bf86f06ea67a3e624122a4ad2f65d126f1223957360dcf +373900 0000000000000000002930be5b1cab0c42d0a57e8dd31f986fd77120eac700f5 61936ec72d4ee290a81351148ac861730aea9a5f676f59341d89a4c56a7a14eb 000000000000000008ecb3e94db6f990a6279a77225e11c053199af79f25996b +374000 00000000000000001016aa3783721673bebbcd1efa49946b52cceb09a81465a6 dce6e31bde31c2f6f7085be31a779df0afa218be49a6b4c0a193f802022cf844 0000000000000000029c559f066604a8e5ed21932434eefa57c8c9e6d6cb9e30 +374100 0000000000000000130008ab92a2eff984a1e6b2e619736098c9208987ec5232 cf6111b5cc302b3a7be81e9d6e3d0c2bf4d6604e2e93c36c186774a9cdaba012 0000000000000000100789a44bb251ec52fbc148e7c7ee923605b753b2d072a8 +374200 0000000000000000092e1267bf269fa79354fccf311c0dd86b1288d3b8d5e076 0bdfb19a5680ec70be951dad0716c74e65242e07303b73b2a966bad3ad53e257 000000000000000007c860167017880bee21a6b957b25d9f6567e94520c7af18 +374300 00000000000000000a565cd3f6a21fceb2a76a1406ee517a59c7a165a13f3c3a 1e36b6429ecfcba901a144c81de886862e6c7db5127c090e2bf89ee7c2365fe5 00000000000000000444ee90adf012777af951571416453e4640c568cd866983 +374400 000000000000000009c3589882292186d6c41542a9ecc1b911e3c108b7ae1a1f ca18d5d04b94688391c4efc83f257019146ae5157e94e279a488b3652eac0977 000000000000000000c1d1e79e0666f9018a50c4436a088d632c92d65da35ffe +374500 0000000000000000122dabf23f78e231668a8e2816aa798731581ed2fc83a030 f7c0cd049848c82978c67f7d60edc5e4d969d24710e7fd6ed2113b25b0038533 000000000000000012c28648600c5e6fa0ab69749d93dda943df9b0eaa17271c +374600 0000000000000000046eca58ec57f6e0da26e41c925755f88d587f5203bf9a37 0e9ccc57cc7a957894cf56aabdf95f0adf1671f46a4e87411d5d0ec2101ad625 00000000000000000dbfc1bb261c5544b7b5053b7d888a42143a205d64bc04fe +374700 00000000000000000d806c6e2c6ee7c445991fb627599ea28f097cda9518b448 fd8a950cfa0776deeec388ffa0396a7390842ecebdfc528f4622718180a8b930 00000000000000000993e751ee89824c66795b64836f68a9e427b2f3da5733ed +374800 0000000000000000001762e453ccd8cf21f4168330d5274ab87ef210170fb48f 305477c504fe6c5c81d7389501a0523abe0b9e655d7532497b8f679bdb2ff895 000000000000000011bdb460191e63cbbb417b1b0e43319ea90794221e70915f +374900 00000000000000000c7e88fb14ffb8c7c91caffe92acc9435f1d6f2d053bb89a 1bb06e1ffd3cd69c56e6d4b9649feb66510211f2426bf1cb9f78e9dc18b70222 0000000000000000061ededb963c2d27cbde01fbd5ce1b2e1595aa32517cbb4c +375000 000000000000000009733ff8f11fbb9575af7412df3fae97f382376709c965dc ba13a4590d61ee5340b86b6238e91b4c72afc82ba2ae35abfa72f1e3d09baf36 0000000000000000087ce3ed05c7700d783d33860560d828c0bd337c1ff50b33 +375100 00000000000000000a845e4a87ffed101c8dcb92c48b1160792372554cbd83e4 9a3f3826ec205c2cd191c7472dbc618b8dad454bd44ddd7eb733f49a9764cc26 000000000000000004f231dbb9c6c681c159fe9d060428187e6c4870e0337c8a +375200 000000000000000002ac7d0601287f4beb3a2bf251333c8a7eefac6c3d65629b 98cf4f427cb8ce4c300f70497bb97e7f37f27ce49262ce599384ae568d25a5a4 000000000000000002871563f8e54cc1950a64b984c31b46901703aad635ede0 +375300 0000000000000000030faddb947bdd1e7b92665f5974f981121d3e0a79b2144d 296df123f0d836112a93da9ed364395859c1acb27e3aa53945ccfa2a69487f8f 000000000000000011418d2e575784196aff9cdce7372ea1d6094e8bbae5d194 +375400 00000000000000000a53f1c4a46f75fd3f5e9cdbe1e4a8e56acf8f5c9c273cec 0b09aad96a416791600b2f1dc103840175ce772ef8c70b7734c36864edd23b9c 0000000000000000090d35a3e2c63a4e1c2b818041eb516bad84ffae166b8d9e +375500 000000000000000001b5a72ad0e3910d9b7127b81f3d2104ffdc506cc3abdd0b ca7ca1e86b6dd5246526dbb3a2af8b53b55defdfbdbbb8441f121cc2f6245bee 00000000000000000de5f4aa167af763a588688079616235f76f4e15e6bcc8da +375600 000000000000000003bcc715ac940fc0607bd324d11fc232f3c20a4c5d426e66 1218f6f0c02080fcae7ab74aeeed99398d9a71eb15f59dc2f860cd292a7434de 000000000000000003cfaca52b6224475daa0946fd6163b293d8e8ec1aac27d8 +375700 00000000000000000e42ad493d2b11a16203b0f70ba94153f6b8fd1c565fdfc2 101343b53811c2daf6e434066e92cab76f5e616ffa3f0a05cee2504d3d401b9e 000000000000000003050fc52941eb499a4951b1841449512614e367dbe30ab5 +375800 00000000000000000de3ccddc90b1dad2869466de4ae38a1120f02a30c539e9e e26820bdd1c50b05a9da15c43e9a13ef82a80a7fb4b2419949d5003a975978ae 00000000000000000e69d6b5fc564790240728e03984a8293820cb3cc61082e8 +375900 000000000000000010e8b9db2aed925137896b38b4b32cf36ea57b3ad55f080e 8c732a476b37578dc46665a946c131534d950cf8ca0d14eb5e57112ff0e81b2f 0000000000000000062a66809f2d933c007cfc349b0db92c636b617eaa4edf7b +376000 0000000000000000106e9e99cf4fce4e8a4abc97f3e883956e26d76b3a1133ce cc160b4259a35700a566819c3978fc5ddc00dd0ccb824eaca9a28e61137e75a1 00000000000000000600fd599dddf15b50f48b66ccdea01ea56d2c093192062e +376100 000000000000000002b3af2d26c55a95cb04841e1df9180fc76a26741c31fe60 76b5f2a29f8df68c6bc6c9566384779dface5f8a55ff6fe0b1b4690bd7d75cef 00000000000000000c0eb426a420e1b68c01220781b594f968ee0ea5e30a6a57 +376200 0000000000000000082a6c045e3423dee1f905fde468a08ebc507bc65513a767 db8bd9074739f7a6dab09a7ee4f0bfa74fd77577105994a1a2f6f8b26eaadab6 000000000000000005be1832ed70ef65dc504e8b7bb51a3b668e96a1ca9d241e +376300 0000000000000000084744eb18999a5d1047f9a3ec941ece5f1638d5d3436ed9 9a8be55282751092c1808acd91153bfe100f2f7082bc1e06925a5e619d90a23e 000000000000000006f30b8c726d5a0bdb0604faa8bf9c67244018a8f26eeb46 +376400 00000000000000000e96f7af493af0cb164e2989f5907b9e9f2c15f79e330afd 9eb73f2e74d0cba164715534a44b474a4d3f14a4176eb58c06123add0f4ead27 00000000000000000e82cf0515278b952a448ed27b897c527c9cad6c8e8745d4 +376500 000000000000000005ee770e9972c41c50a2ecf62cfa86c46b06efdf926fea48 84af01ad9958209f4e45a9cf7fc7c77d2db6db7d603e769078df6f50c4caf2f5 0000000000000000082ac60673dba1842cf279497759b5d156f320e939cfc669 +376600 000000000000000010b97f191340e74c7c31b42f7e3af29b85381d155d90bde4 61beb9e56cb2a6eae0ef4e9600f4f5c67276a5f63f408d26fdd17a17baf511be 0000000000000000077827b14ef7266a2eec3d71cb524fc8a2c7d9a94ab68b6d +376700 00000000000000000fe7ce819f2fb3b8f133aa32b6c768586e002e86864cd38d 749094a0b968445c4373c5ab5fee08495d48970aefef135db2fd4fd4733d9019 00000000000000000b48cfd72f4d06fc73697dfa7455b50859a2130727792359 +376800 0000000000000000113dcd9640ba790af74ecb4f636fa0fa43d05f57d874ffb3 6508a831da85c19134e1da74076d5f316d77eb2214d907b79828321c71a595ce 000000000000000012220f651f24743364753c9d2bbc6c9fdf7f6e98b3670067 +376900 00000000000000000fdf3f36e465dedf79c537a2724ad4b77fe34bd06e411ebd 17ec2de2e739482de263aca5e5c493efbb306d2d998488df3264538eb2b0da07 00000000000000000900b6bc02d1fb196b766b8c4bd40c01f76e983a76da16bd +377000 0000000000000000095369d6ab2fe319886515837f618ee6f0353ea49322cae5 e7511b7b31a7f69ec391f9b6b2eea7d90bd5414c97137abf1830926aba296a6f 00000000000000000240064b3d53fb8ed3284d172376ceee0de15b2ecaf303fc +377100 00000000000000000d4c663f6b90649b064058ff0bfe9e1dc452f4a160748256 57d38154f3d02adf8d33737c0fe301f6b0faabd59fde3c51b1d4dcf8415db5b1 00000000000000000ea78f3539320ce695d6fa5f9f2c3f963e7b2fd2e43cd18e +377200 00000000000000000542adb520a30bc0f0f80231030bea3dcc0634d99f73c024 e27e04a5dd07b9f5a6f34ebce1f094490db108418b6e506bd9972994b208da7c 0000000000000000096c5675b31a3a93118647791288aedc4abcbb5c455228f0 +377300 00000000000000000267dd69fda9adc4c0e9310bb380c0f9c20a2f6d60fad741 483dc553eac69d78606936c8e6744532f6ea833490b55d40dc19d71c0bce336d 00000000000000000eaa00e4989b654759665c2a8af251bf59baf35c34446c98 +377400 0000000000000000058703ce6025b96282e460d40a546fc3aa40279b505fd343 c3a12165b0703e141709db58600966e1085c8eaee520cb6fc74c49b3ee822a53 00000000000000000ea204eac73a1b1773d4ee3b81c859ca729335da2f6944ec +377500 0000000000000000002cb5fe40d7f11461f61d48793e9340e27de8aedcd6f092 0fa45f31ec53ef376ec35728cb1c90616b70c598bca5f65697bb0a0c4e68abe2 00000000000000000b6d554f66bc406de4190b166d207d3989e7dc2f01fae4ac +377600 00000000000000000bef65fd5b45e17869ad73ca47018e3465526007b71aff83 80886ab184d0d5fff232ff5a1e5746fbddb0c662b788e088d0153f9acd561f54 00000000000000000bcfdb699d2c5635e9784a46b3654d0d544cddf11daf5fcc +377700 0000000000000000062edc16635b9b7c5a62d99cbeb80ca6b8a6ac9a413cb87c d440d5e2203d33abe31ee316c2f9100fdc6d88319efd7ba7aa3bb745fb67025c 00000000000000000dc88fec3271af0370fc6fab52e01f332a28f7c9891b03f9 +377800 000000000000000002f6fcaedb0f23287de10465ea91dda5f0aeeaa35c026194 fe9daea1aa5047cac4c07e2d4742d83ee9d3ebf2507fba1fa4a5f093817b7970 000000000000000003701e79082b9972ae570c65407fc7667246d40e1572e33c +377900 00000000000000000280f0049e4bba812a0b7691493fced28156f6eacee7c732 5f9600e7a19c6baf68e5fd74a343d3484e53f8e822184d391bfee66b9774a1d2 00000000000000001143e2aeec8e9cb82334e37acd9f653443abc16b4241d79b +378000 00000000000000000516cd5b5f4b7e528d6e61c643595cc818f1d02f53da4281 fa22d3b163d9c6a899e8f58f81e26101f261293f537b2592a6d43d8dee968718 00000000000000000aa09631f3e8649893da2525f739b6b088c76dc8e898e4e2 +378100 000000000000000005b8108453c0c4bf255a2af09e51b1d6ab6a1e0d70d7eb0b 7fa52e8cddcd8db8a67929d9726e53c98ee1e2317da752303a89a9c1094e288d 00000000000000000143bfc4f31c6cb09584e69429f5777cc5b35d5ea574835c +378200 00000000000000000eccbaf5a43c7df9197410217ccb824c6934697c7c0dcb56 25e0d9acb9429bb190d3836a175680b81d8895bef32db82904536eaee75dfff8 000000000000000003aa6a79dbb2026adb3f240ae5402699b6e0d4d5b1b59710 +378300 00000000000000000d1a786d2b67b87680e602badb88be9e315ca2f21e39c8b9 9618d965e6dc482e8dda38977e5c36398f6ff1ffcfa40b4e739b31649c437c11 00000000000000000d491eb2f97dc2469aea85c58e2fa9ff4013ea321c3d3465 +378400 0000000000000000118e6211b60940f00f35153001f9a27f481da7d963bac1fa 87255b0732a60db5b09f5f3300b631b6e47959bf41986cdd7d10bbc1109b5071 00000000000000000eb96a6da2989bc2424534320878ae6fee5a1c756aff4c31 +378500 00000000000000000a52239fbf1aac71533d3d27a1641cf691f36ed86c460602 403ed120affd2b691cd2e8fbcb4a4fdea32a6ffb896d5cbfb8cc89fb47d415d2 0000000000000000102f3084b68863b689ae2aa989569d68b35c7d9462b7aa76 +378600 00000000000000000c0ee3e73fa22d60dc1f16c0bb9539b4968040f7a033dd79 e7d6b3f136f55cf1bf0d52ef05e50190fc7bee8338705e1d0e750647a9c00aef 000000000000000006a36402db39d5e9f454c893e4606d984389e97accfb61b2 +378700 000000000000000008c9a768422e609c46bbc02a076b86cdca43caadd856dd28 5f5a9da8a924e7a8269f32766aa5166d84980aa830a053b0ff3f94ccaae5a537 000000000000000001d1a2d68b6cf2227af81ce7bbb7e2287681c62b5f994a15 +378800 00000000000000000e5c87d568324ba252550a4cb02b7279cf398b9994c0c39f d6a9356a025ce483b0b6a5350e316844ee9673090d3f332ee82efdf7a6c3610f 00000000000000000b911a460090cd60fa9aa4d6029198448f3781a7d02a7b4c +378900 0000000000000000075d510763551d5b2e9f4f5596581d2a96e7f836ae2c739c 194c3d514b2f1e793ba299286954c56714ed797b172c0ecd47e5dd01b9b98855 00000000000000000c2dfbcb19dd3b74ac02ad10b5429b43afb96145b340cdd6 +379000 00000000000000000ed7641a3a0906d68978e047208edee1438caa299a0146ad 0fa2cce138903f69812c186510a0d65169ab5768d49e57624db6e9f747892018 0000000000000000118e37a8424c056f90b95686f959939c6e0a7ef460d60175 +379100 00000000000000000829ac39ef8763001a0cab086329013141f3262de8630082 86ee161e3b05c7739a850ce7e1b523bd377f0aebf51fed7df325acb56613ddbc 0000000000000000003814c8e95e9c8e96daad1856cdea89f9e8003fcbd88e77 +379200 0000000000000000004441ee5fdea18557a0628b836728f3cce258682575031b 341b2549d26760f24c0678d129d1ac6de33d95aec7553a6c0d54d9b50ba0ca5a 00000000000000000e811fac7d77f93bf6815dcc529d14d61bfa622e7e64711f +379300 0000000000000000083968d68f9444a1c1194552a5f24f0693af4fad75af8b09 6ef8614f1c66606fe93f5b7068c9c314cedbbd46c7b799a6a33692f922c08ff1 000000000000000009a7cef0a1434b7f8bda284ba9df9b2be37b1bd029d02aa3 +379400 000000000000000010bbc7f20a77910980ee54ece1d91f06c7219db89b6fdbcd 741adc7ecafb551b60ca56946d875e228efbd1987625df455f4c8108104c4e11 000000000000000009a1081079bcff44b07d6248981cdccaf0fb909a9c0ec148 +379500 000000000000000000f56dfb7bf8c208aff71e32432d9dea60af4bc76d81d6ef 0cc6f3b1a3ae5f6976588dba369d8cfc3c60fd7a80d8784eb4d5996723713ea5 000000000000000000157a55efea38cf3e3665d1e19266d9e7ecee75b30415dc +379600 00000000000000000fd6e9062864aa85fa5d3d6a1abad30a30a96a5cd307ba88 296bffd3faeb3455e7ca4a530078b63209369fe0244280a6ff9432572d931cf4 0000000000000000057f764151932ba5d40e8f8b2686b5d3274b59b5da3b1a26 +379700 00000000000000000fd06b9779a99e251474f791abb1956c2cbb576383c1f6bc 1aad7a1ac810f18d30980121a42cbe143060b31de41c05703ac972dcf6af8013 000000000000000009b96c956f9719f0450d76f3d1921ca6554b32aebb765d0b +379800 00000000000000000348a887c34c131dc89c33c229a2123ab093457d25e58b67 4767f1182e254e837719f273a9307f551b1f908d19586364b3b5ba066a33dec8 00000000000000000e8cc98365a8a5d0168e161ee90db42a98e009332f4e7671 +379900 000000000000000002632ef9aae3e926a4a0b9e69a9deb730c35a306bece3bb1 625700d8832a2100d656a88ab980888823eaf9f772bf55d70c5401ae8ca6b04f 0000000000000000105253a8748f461341a7e5bb70b2e43e1dab6cfcef0a4880 +380000 00000000000000000b06cee3cee10d2617e2024a996f5c613f7d786b15a571ff 260b19ae2964e6221e79e9d749dcc067c1e7d3991a0ce06b6cdfbd67175d7184 00000000000000000bf2da5c23edccaa70ee183262cae2354f18f8a3201afa53 +380100 0000000000000000094fea77477e3d38f34219f05f1408217eb217a460321e4c 80698b5bf77b5c69c397b26da053dd99f4012525d6d1f7bf05f7ed783cb57374 0000000000000000082b354db92da498875ac16333dcd91a0f02f8b02cbe6951 +380200 00000000000000000593490192240fc9a2125cca737f3cee70869fe942acc7fb 633b8d8b35e3f419717d0b6d9e8364706bcc21edffcf2c97ee39e4816d173d3c 00000000000000000896629f19804eda84e685c79e572ea53f059b725114c730 +380300 00000000000000000acd15471adfedbc84d5733f872d752583679d45952b2225 1852f0c324a41dd8eba793d8c3ef69da8242a3b2d442fac8cbf0b7d6c19fd321 00000000000000000b80f0da5714df3c1f380fa355d4d74e73f8d5f9f910471e +380400 00000000000000000e83d2a3a5583ea444f1f01c60d274f88330fdc219c42ba5 2de16f7cceb4a999a26161d7931bd2f471b05e305396eaf21c9bebdc33616ed0 0000000000000000092153a36e2339db5d34099e77736565dd8b590ab3e290fa +380500 0000000000000000063f31505b4429b66613dcf37afb46ba8eece74993c4fb23 af053c867bf16e811d43d80b9b2abf88096155485b8ae2aa329bc78f88f6204e 0000000000000000070dd0849284d702e1505bc1135b20237dd5bdfb6f37d4bd +380600 0000000000000000072c3f7488ca8c6f571ef20e08012233bbf28056795645d8 f4c95c632d0a932db91c2af73a55f109cda4284e39b3f09a50cbe32b47c22664 00000000000000000f9d83f263cacfaa07d3e81dcac4ddf108bfbc977aaa3d7a +380700 000000000000000008c144be367536c1745abca24f72d4c439afd99cd35b8f54 9fd4a26920ef5c6099ece54eb0ef889f8cc0e0a33c809066176b87b415a110de 00000000000000000c84de966c7ad71fc24ddaedd96159ca8dd5908171b586b0 +380800 00000000000000000e51412d273d4132da951a0cbe748cd80f4ee840444d21d2 6a2792b59cb2819ce79eb609ef80082ffa4dce5f6a038aa5687c3d3b29ab4692 0000000000000000118b87969a73e09f1ccea2b52a413eb181e9879bb98cbad1 +380900 00000000000000000dae71958773a90a277f3e2dd34262f14465fdeff40d1b92 6be7ba999523494c96834299a7b03249c6430052c3797c933351e9c30710f6ad 00000000000000000a184967b05d63db4079f6e2d1c637befae2003b223d6bac +381000 00000000000000000a965dede3678fca0af6cb9d4ffd97b3b2915c02488d25a3 9b46659897a31251f5a17f6e895175a19de542f3b8bcc34a5c0c8c8bd434ae35 000000000000000001667397ce30e128af86b7755760ec918db5c669fb686eba +381100 0000000000000000110af88c5fa83630714c52c5b0992435e2059ec936a68468 d0e6e3dda159a4f83043a6697819dc63b30f1e9315b74fa5173bb8da4a13b3c0 000000000000000005d04f6ab4b7c6ab328cfcf24d077f7346421afd18b0ff2c +381200 000000000000000003c51f1c2e6e6abd953f52c013253977c899a8b6fea929a8 5f056171dc13c76b5da25f57314f16b5bbf20ed617634b767d727a984dd5a565 0000000000000000003f7d375a733833c232c989ef04ec287b599a80f6be520a +381300 00000000000000000e882777a5886371ae00a4236385aa55a49c9983f334c6d1 2a674882623331ff44f5975e3bb3dcbab38895e3ee3a96264c68314008b35334 0000000000000000100919507908c617337df254583d26122b82fa5ccce5ecaa +381400 00000000000000000c08b4c0324913fdf3b74f1a1a8df51bef08401fc34d8821 3824d4d37c9a2da12b8737b66509fce98fa18bdb36a54065172f5ace0fc13687 0000000000000000010f5e20f8d2e4b1ec9c9fa9da66394b5a05ccab60f88e1b +381500 0000000000000000085dbb3e5cce98645d56e6b0f94e2c374aff130035ec3319 66d892b4212183a0079f86d322db099a5bc196ab01bac03eaf0914e927b9b37f 00000000000000000ac8eebef6fc68f021bf57d154c1723108d5e652e349dc19 +381600 00000000000000000b0248057282b9ca75c915447a2c9a4d50a80b5ebde45829 82e1da4ac614a0fbb1443caabc9822fb039c69e33f355a26d8e3f916cdcacad4 0000000000000000084ab6790b31dcf61a8642788d8b0a0cd2639f40ba814cf9 +381700 000000000000000002129470278cb2b00da9dee3186e3a91dbb3da19647f13ef 725e89bc038864183b4f828d7a2c9055ddcd885774714dc99033b2c964081a1e 0000000000000000052566447d42090b467dc7f5b37e0b31a10d3a1462efe57e +381800 000000000000000004ebb6a44ecfb761d8a9930f520d95310e4414e9790812cf b77568d3c630d9091798c326fdf0623b5740a7d4bb9a32137cb41c8db8d54123 000000000000000001362ad4429266f85616db198164d7e8145146779896ec88 +381900 00000000000000000dfd99892e30622fe18fb165ec129109aac78a83afa108c0 581006bd6c3a0e3a05c96868ffa0b51d2537f4843a0bae3a7e70ad0b02f18507 00000000000000000581a81856ad89dac2d72f1263fb66ba2c43d22088896e99 +382000 000000000000000003cf98590769bde40ffcd6800733ab47dd406d8203e65a89 f8c75860ff29442a4baaa6050a7a519ba13eca8f7e4f53759bbbf8653ae61317 00000000000000000c43df306ac280360bb0592d2a56f2b1a9e4c8e870907bf9 +382100 0000000000000000107b765d92057cee5bd342ff4b4dcbc652b51546a170770c d60ce9c75337c1f9a6baf4057c1f2cf8d4595820fc42784d269184ed95b1e2ac 00000000000000000ab55f5777acdb9a9a00c5b29513c47411a4464ff69aca0c +382200 000000000000000004d72e17c646b5326e2f246a34d224a2f2f11475c6361259 9ea37aaa590e5a9773c2ee0ba1b78ef61d8c202c6e39b16ce8a4d8cf7a713b44 00000000000000000e45ca0f2246ced532eccfe0cd5df8741ad83135bcc248df +382300 00000000000000001164e2256447d19d8d3a4d79befd6f4719b102b8cc541c55 5a3ee09ff0db433e3316a091591a9edcaa3889278d59833212ada525bd65880c 000000000000000008e1e5253933ab3271476fd867370e8a8bd4f888b7bf834b +382400 00000000000000000426f4a964eec7548db803d06c4cb5b6009d603b94483074 31b127dbf1516ca9305f27e4b92de05bd69bd5d8e2cb2a6daea62846d7900036 000000000000000007ae55fa1b8581caf14dc7c9ec3669c3d359747399d67796 +382500 000000000000000001ec54eb2775e4e380c7e04ec1fa41bafc381a8a67509eab 4fdc12dd4ae8664797fab65543a371331f4f9afc3c8efd9fd67743e36bde37a3 00000000000000000f700e1f8d62138442934db793e08f25cb700e4b5479164c +382600 00000000000000000d0ec44a498ecdd7fe5c065cd383bf5348c4a3a15023d58f e9de5fdfcce616a49763afdd4ee58f9e1d14dfd988281c0cf74cdc1032be6506 000000000000000007bc61efaca7ea6a6a1686cd293b79733c1552858523fd96 +382700 0000000000000000083e8b38479d62c156a77dae44ebeae976d1a5e153e44bad 1b203acd885c9ed590d8a391ed34155722b86ca8f3c074d1af6ce7dbab4f3e38 00000000000000000f88e6b2983a4cdea595ac6e738c3de30b1317a2e6e3ac52 +382800 00000000000000000183f0c2cd8ab1f7ce9e2d8d43eda732460328397c1d857b 766782dfddacb389407a4bcf5eeb654bf575cba854bb587ef9396a791528450e 000000000000000007530ec600bf178553010b707efae1c83e77ab9fdabad896 +382900 00000000000000000cb0a01b9af4f3371b25c63b81f18a2b0b582d43aced41bf 879a096938655f0aa8bd4c7d852c5219b224fb7861253cb74625afb4b1b3ca79 0000000000000000004645ad9f89944fce18df20dc01305b5656d5a3909a85b9 +383000 000000000000000008d31d0698ad99897c21cfeeb52157f3ee66ab0b5a9614e5 c0f4597488302d74ee7b288df31f5f8e478cf316835c3d736444a7222b67c107 00000000000000000195fffbb2f518d27c791866bd679e7995c21b6971737755 +383100 000000000000000000edad83e2d593bf338aee541f2755c824acc08e7761541d 3cb8ae25ed307e34720cf1280e95b7ee18fd0dc1b9a5c1cc6883995346685cda 00000000000000000692bf96bf6a41190e73ec5c0e14d16cda095dd1e6c2d886 +383200 00000000000000000bf438f994d027cb6ba2062e33c34c2eea196495c7b9f08c 4720f58ee22be0e979230277c87193b2825ab073e5b8f5fb3b3d32df91052bec 0000000000000000107cc538e8667a89ad70f0e1c5965f25f2f6d633c3018436 +383300 000000000000000004afb2f47d289731542197ff52972acbea4176e8c5eb1381 beab21fb9e9cadbb21e4610b90900c545319b237934717b2e36b66d28b00f707 000000000000000005846fae2e464cc52af24a7330887aaf9d7d101c8325419a +383400 00000000000000000f5201d66b52b41814c38f87a24b9e2594ee2b9f9b7897aa 7c8a953d63dde9482e892fcf4d270701aa22e537082077bb2604088f53a155c1 00000000000000000be5de4ad6e794e964e1f349fef9325c02be9512475ada7b +383500 00000000000000000133085e2d45c060641229bf56c14039f801d18e096ff0bb 9e1651a0b685e20934e5d2ff31bd773ae52381e2be0c0a2651a282bc266109c5 000000000000000008382f70c9433f8109366f968ba27ba1f42015ed422b13ca +383600 000000000000000006d0db37f78e320891995d348ea0b971bef443438d1ce2fc ed623a8b4d8c95cd7b31e17d95470da0d2f485404b056a834436426edd38b4d2 00000000000000000d41b17307865b23e76c7c9c4f12196722f22c6ed5a9fe29 +383700 000000000000000009f27bca02b2679655e251aa6f4a2dc68741a414de90e731 cded26efc14bbef4ceb32af24d36337aa1f6fa5d7870abf7adbc2ed0a0379063 00000000000000000da2d92f08d26239a863cdc5a9ec47ceb1ab5849d818392a +383800 000000000000000003cafbbe523eff065b688f1ea9d72f3b4efda702a38f837b feb8d672e61b2068df05c14d106ab471011ddf61214132dd8a5a4d46dae89fc1 00000000000000000cb624e71d3e24f523c36246526eff69057be649b39b25e6 +383900 0000000000000000019ec7f6052a91f75583bcef4678a19a7cc038db51951238 1edc022a41af63757cb18030b86bc2871370e2aeef1c7f320c3fa6f3cd692a4f 00000000000000000c6865df0895b8a6e4cc9350792a8b20ef86a0e7906ad89a +384000 000000000000000005dc7ea53e2f6eeb09798cc9d2214f09d249661c36c288b3 8b23e691d5dd25cd396f5ac14dcb3954a4f57e9ad34d209ff8f3dd0b6f0ce6bb 0000000000000000033898c26a795ca3d35096d2d3e025823776277db16d977b +384100 00000000000000000a0db64c03586488a4420f8fd0807a9db2940cac28730e86 66b8bc4a9650cac8956a69b235f58d550a6764e4e83c13b3922d5844096f36d7 000000000000000008f9ca5adfd5f9edfde56b4cdff06a4879b9a864a169f58a +384200 00000000000000000a4509d6c5711f33027352bf975934eed14c3bb33cdb6345 899c76af5dd193330ebcb3f7f5a201518be6e8e6f376e1621065758cc187f5cb 0000000000000000047532582460c98c423bf0273115e08ea957d952ea5ef074 +384300 0000000000000000022fb1ccaaf9352c8adc32b6a6a1adcd84a79353c87ac2ed 61743f70c6626938ddf93fa93cc61012c8db1d5d128821077cb5f06a66ebaf63 00000000000000000729508a5f2f7a022b056c80580ef21a3cf529b7aa634e2e +384400 000000000000000000985b548d5b4e08bfe46ffc1dcec325e0551dac0d35d5ef dbefd2e36f55ca99debb81535a37cb0d60948862453ba97bc99130cc1e01b64f 000000000000000002a9de828681400f8c4f08621cd682282efc925aeba61dd4 +384500 000000000000000002092ad541377db3e5df7848288fa5500a8dabced5cb40ea e903c668b2fdd52ed50f533799b5f76714a70d6e70e4053c45831f18c578ebd7 00000000000000000844db6ead93f351c01f578efe7577e7e3ee25bd604aaca2 +384600 0000000000000000075234696e79fc357bda911742f19567356ffc538a0d8479 db2364fdd96c0170f52df30a291dc8520eeb6d41e80e6dffb3486c6f4e5f77d2 00000000000000000b299258f27b9060b58b31645988d5e15f5c894496a88c84 +384700 0000000000000000105b3d16f72df95f6cf54fad6992c50ee0b3aa32384f3bc8 52c35b0b8388f9c076693dfe31c42e606ec0a0ff00abe5fcf0e452045af0de3d 0000000000000000100a497a2cbd148798428e87e017f6ebfa15e87aa1f4d75d +384800 000000000000000001a06d85a46abce495fd793f89fe342e6da18b235ade373f f1e2a63882feb0b9f9d3382a79e52855674adc838d5e629466ed6ea919634c2d 000000000000000009115b47eba49caa8eae070d2a29ff4f12cb96a1123e0f5b +384900 00000000000000000ea0630e781e2ff9dd43e000996e574504668c088ccb1992 fa2927972adb525bcca15b79c24f67bfb9b97d002e772fc615b8b4b0bd61f0d7 0000000000000000040908bbda516c286f77b4071b846b2fa792aa2876882473 +385000 00000000000000000b7f6e859cbd68dbc8b309018b0ced9b56b37ac75110f998 10ddb0f1fd0cbf3c6bffed5bc6aede10d19c12060e668e3aaf7cf7d92ba964b5 00000000000000000bf8032a663982190607d5e22db200adc57e15f740e6eee9 +385100 000000000000000009ff66a7a8199f266bddab1e667a3211a3484e62a92807d8 7c1ec78544446be375279e60c0b4c88538ef908589985a9e3e585e8632f45e5d 00000000000000000d2c62e53d816b8e1967322ff4d8077b16d88591b1437134 +385200 000000000000000003f1f49f9832fef012e8a4f3b122f9b74296802ebf61e4e8 caf3df5b04cbad5dbd7f56063662f66530f0d324c512b44d28cd377946135755 00000000000000000258e61b05fc222f2ab4820a987f8ba957f500c42511a86b +385300 00000000000000000c77a250066d06689fa2f020521df7c057ad7516071a19b5 c0f6b8e25dab6174cfda0d671453ca7f27b60f5b03063bdf7d4b39e578ed86d4 00000000000000000dd429bc850108ee0d24d09d2ba6d0b16a33d40c6d2e04d9 +385400 000000000000000004e1b09dc1d68d78fdee7f87c54bacf50458c276da72d167 c22ac60622e958472ddb39ae9ce9fb1d7f949f5694ce81d2ed4ae31a2ff767b4 00000000000000000171eea501a62c432578c825139514b4cde1550a3b9f4cc1 +385500 0000000000000000087ed6a37a09a4d80224d942c3652d199d09ff1ea07a7ed9 60084dd0055b2953267497d8d26f1dde43d99020de918ebfd55c4307f3d48ca7 0000000000000000011ca3422d97438f14d5172d84e8ff9aaee824b8b051409b +385600 000000000000000009cf50e838f3523b153471be8eba490fd1b9f438141db456 3bd3d619d75adec4c5ed16c03be2e06d59cf4f0ccfe467bb53399b1aa48ee19f 00000000000000000c549bc477f02ab49d25b50f3ec8d099ba238ae5380ef9c8 +385700 00000000000000000496176d2f5d5be46b379683285a8f90bfa956a85ae5bc01 3db52de205114252b2ec15537401931c115ee8f0be3190f545132e12b7fff47c 000000000000000000bc2d765933df0ddc5c86ab48d9dcf9cf4f6baf2a9816d9 +385800 0000000000000000082eb254bcf5e508327a44f9135fa0f8427a95ccc555a640 8ea4cff598cb3d95ee83051e4503ae85e4d9823cc2b433a185bc8f1338c52e14 00000000000000000ca81b697774010f222f9d87f53de3218f455313e7def444 +385900 00000000000000000cef6e0f5fe5206d132319c265ed4d23da2c78b6a6990a6c ef736190fefedf319c07be71202136e7484e60b2a32cf9aeadb81eb5843579bd 00000000000000000a59f5eaac561cd773f0f887ab0b834a92825c995b3cd622 +386000 00000000000000000d94c8c0b0ddec874d2a597e988154733d9ea614292c08bb e11d1fd4e81b220fee3330fe2519c0fcf77278d3e1dfc47f55d05f1d7b8dae91 000000000000000007a2bea4f81d4172715f7ebdad1ad4021e3cb1d1c7da7c21 +386100 0000000000000000018be32b9f799d0e6adecc78d88f22376f0616cc4ba1dabb abae284fb33747f5635a74fdf53603a8c4c03a1a64d92499cc3a15498a1d64c7 00000000000000000592832c12512a349f5ba80aa1520404a29c86b33beb416f +386200 00000000000000000f049602916159fdc773d6857fa0166d8a005dd83b1a1065 7800c07f789f9f7e3e60ab8a1ecde67db64c41b87274129e3c3fccee518db811 0000000000000000026b34454991512876600b6fad10d5f6df6b08bb621ddcb6 +386300 000000000000000007b292bd27b621c644dadd0846221f1636b5b9848e953141 32e7d51c6da7ceb305c508c5e862b95b9f0451d2b9697e4abaf0d6b36748044d 00000000000000000c939eb917896d83aeda7c8f78b98c6319940215a958dd1e +386400 00000000000000000485c21e106b4565c52632c4b629568516d529c5c7dcc3c0 183776bfee5637c7d4a1a75f317d590196534ec56e40bc71db3f0c66cec4ce70 0000000000000000068c014552ff37e8bb926a41ac1b0f6142d35c45b7ac56e2 +386500 00000000000000000ae1db07cbff5e06a45ce34a9772d8313dd9de0b650907d8 8a862349d1b7d05e72831504cc737cfde471d4637faaa9304b36780a549fb60a 00000000000000000d6a2fb175528b4888eeb6e543c7f2cf9cf7a0022c236fa4 +386600 00000000000000000365cd36f49dc7d1e9f04ce1a55d5e2d9f27d2a7b1008d4e aac83965c86c5bcf6276e5163db83147d0f8afc22a55655e33e1892dbdef0cab 000000000000000009c563ec1034094d71fe3e6453984544a8b98b0e9b68eac0 +386700 000000000000000005f7d773fbcc2a97bdd76277b0ad6eb831697df1573dfb6d f8d4be1ff9fe9c3bb83de841cef6970181d9d33390017cd3e6d4f00d12adebc0 00000000000000000475d3a5a903cd94a3470ac8373e6be788dd8f20fa1a6e2d +386800 0000000000000000015045c13c89ef81d1bb6f0fb04f754b4798810a65306885 82b45bbd4ba2b59dcb910bb55e4db40607549e3c4cc31cfa98ef3e49bbaa8cb9 00000000000000000b6b83b89c0493e8ef20413a1695c52395ebeaf8457c6719 +386900 0000000000000000062f8f9b0abd5766ed0791645753980f6eef1925800df95b 871bd9fed33ff9a8356f16434378b2c1744063f1cd927c10bc0ba4f61cc6d67a 00000000000000000e972bc43503cc566b351d46f8307eb84001c96e00b09fd7 +387000 000000000000000002367c3cfea3cc7a5d17553e978a77889eb37ce0fed57255 458c4926ef344a05e2a52e65ecf9ebc53d19e8b7014642db5ae00d46f5aca7d7 000000000000000006f3e8716471e6f05ec1177a0e49e29ee43a344f284d78b6 +387100 0000000000000000046b46aa8a27efcfca8ab9f28bd274fd1132ce04c5877fe2 b0860cc2d9fc163dc7becb3d3a2c387fbc19350ead2bf16e054d505fb5f03e8f 000000000000000009760b01e171427b2e9d7256829df557e92ed7b6799e7aa3 +387200 00000000000000000d0f5b1608f9c868582e81ecb76ae0d4966e601aa75a9038 b9c5ffe2e670a876a5c49ba2a29b5b0476c2ff10129cffd267a150f0e9923775 000000000000000005e7e38e167430a6ff022c8084dabb47d775ce454666353e +387300 0000000000000000075f2f2481dcb1b0289e57ab34fd33c2f0e9556ef70538ce 69b2aab5ad574b7ca560d37a45a5fca8cec5d432e6935cd9b2a3093499ad3d19 000000000000000004eb4caa26b9d51b0cf3062ecd7c8ce1f7d0a4a4cb293b37 +387400 000000000000000003229988eadd6a9dfa125de50435e1381ce26c90e8240014 1ed9a43850d14aca88330578c84bae67f243b6051c94b78d7839a8bc4a42a7f4 00000000000000000103f13e053c2b0e3bde9de3d895ed5a72ca4d8943685484 +387500 000000000000000005ad7fe6fad71564081cff095e4b9768fe27aa7f69f8ce5e ce16f193d8d85a8c4f1313e6f12a7e583357632380c5d3c80dbbab736e28d12b 000000000000000003b3dcd09f99e6104d1350a8cf494d5377aeada320cb3ab5 +387600 000000000000000003b0983a40b52363e32758b1dfb5277884541b75ba9c07dc e75939f8f8622e551cb760e55e702fe06d423e911467782737ee5291aa976473 000000000000000003954ce28669629f96a80a1aea8e759dab49ba1748a369e4 +387700 00000000000000000c7ae67e8fecc643a3e8024a2c8e8c35385c9ed011369fde 0e9acab5f800669b2cb9b54aed57ba2e9905503fc2a246219fc696591f3364cf 00000000000000000cc6b977937c48ea65d6807295bcb515b5c6a94e34387e5e +387800 000000000000000000e8e7d94fb4c80530ebfde66c038c16073034ea9a439cba f52b2afc40ccd341a8c415744e581c5b1be5a4ed20243cabfdde02469d57633d 00000000000000000c9bf7183a64c54bc6b1a8cc03b524f5d9a3daaf43f1b12a +387900 00000000000000000c00aa294361a17311b44c8d3c6280c73f0c4e5d39f07227 d27cce5e54403f8c0e5f2a1e7d87632fc449a9ba910e5aef27f526f0bae942a2 000000000000000008eab53e07733541a23ab7194d9a531a43b6226fa2d7d461 +388000 000000000000000003c5e9f4f84dc78b5ca96b7f2d89e9063b5f74543b42b9d5 626c3bda8786dfea5cc07be52e6f358e587ba9114e27d03c46c7e9ab27b6a1b3 0000000000000000040a0115208109fa1a4a80f351e7aa474cb26c80506740be +388100 000000000000000005c4eb073a40691f005a73e19b8bedcb56dd8762059d8f05 7a7f3fa695c26bc68bc679c29a0b260421f2bf48cf8d8e38f35b5a4432b843af 000000000000000007e54266c1d9cd1ceede8cba324485eac5143de25d00ace4 +388200 000000000000000006be14161683fc71ce1e79e57573340c706ec2c16f271890 f548664d56eecf73c402c646b6e74ef89a8e94f63b3be36bb108e3638ebe950f 000000000000000002b1d953219223f277a9863f816d25ccc695553ce32d08ae +388300 000000000000000005cb6f6e2f09e84a353ab91756a38aa50fbaf25059f76666 ca113d0c441b8b6d14886252cb9e26c008552d79916562ecf43cf12795bdf27b 00000000000000000d3439d025a966980fbb7c97e91c1ba2955604077661995d +388400 000000000000000004d247232940b10b69bc0190da00a49b86b395ca88792bd4 af00c6d5d471dd1eea1df701f605d3cee1eeb62e69e4472347b33e402cb9233c 00000000000000000db54dafc19eb790a99ec186f4f0eb66c49f4d50704fc107 +388500 000000000000000006cf66a6c7dce22f77d54774d66971e1f2dd44e84ab668c3 6055fa4e45143e2bab7d0155caa6c9b0c1ed3dabb77519eed2a0030e3cfb677d 000000000000000009f22694ec1eebb046098462c2348fe5e0484a75d7d1ed87 +388600 00000000000000000ad68749d3bd917b9d0e1e012eb94c78599f1a7febed7dbe e9017fbe18ba2846d458de5fca919c22fd85b4c00eb4676040340347ba1a301b 000000000000000007f57dd79611b8059a68aa064b4dbf0b312bafdf1328e3e6 +388700 000000000000000006d98d9eee8187783ebc20077e4f0b1cab1f9ab6ae8aa112 ecc9ea3eb89c5e45a2a1bed8848bf9ab20e0c9749f780dc467bd24ddd322dabd 0000000000000000014054e3814a835b014d33107357bceaa0e176a20e71498b +388800 00000000000000000b1b29a572af3a51a1088fb21004f7191af88af79d622c62 0749f655c596df663fbc07dccd70c1639e8c9ae1ebbffa0585e017ed8341f3bb 00000000000000000135a4a21fc0af1b2ef79ebe3d4a680fe9c365f5e1663a81 +388900 000000000000000000a6cb4e21d4e3fde734b61b205e6a68dfcf44632bec5b81 a587d9a95a95db3df35c756b59f30430bf4ee3be1072e50a4b43b27c7da612e7 00000000000000000cc50e1103d1151f5a73c4763bc68c543eda1fcb189149b4 +389000 000000000000000005294a6ff7db3369e70534c091ee81b331111a4e7916c3bd 2896b59d1e30b3341bbbe33f6ff46efca0d060779245f6c70b8dce761219059a 000000000000000007653868b4d018d2656edda8d9d9fab10fe66126de949249 +389100 000000000000000009ee31279b6601b0cdef7cecb971b7a015a7db2a35a3908a 0335ab0a6c01b6f2f879a2ec03bd06178c9e21f8f92bce84d1555fc13429129f 00000000000000000810ae694333b9c99c27a22457eee3f1372549aef73e63bc +389200 00000000000000000a5ff80919ba2758e740f40f375c3cc7bbe9a52d22f1bcc4 70cc4b81ed8b0f44867618391883b82fa8a0d5467fe3147593ec21bead86cffa 000000000000000008ddda396c1e5aa352e2f1adeeaaa5b7605b9aa2734b3f57 +389300 00000000000000000a60d942cc01288c0172b2e60af24741080eed4ef9714bcf b0689e867b113d534bc389b84eb89a9902b3a049e24b7729c8e385aa0ac679b8 0000000000000000077e6f6e618c5b431f634f17519463d8806d3fa6f45836a7 +389400 000000000000000003c1ea56e3499b55e00d803e3e0d4645ffdf12e96ca72d51 4a23a6f2023413090aeb299337117d423684d5d248f949439c3ce21078368385 00000000000000000b9fc7d0e2e8143511f2bfd20b6d0ccac172849881990fe9 +389500 0000000000000000006166e421051bd1ccc2bf3b80ebd2ed20c71a2eecc10633 5102167976c7729b2d599470f8697b09df555177f7c3cf56fd2dfa4a303ca12f 000000000000000006950c0d8fa2c0c1c1ad201345cb1483d27ae150585eb5fd +389600 000000000000000002eac9265532aba3fd5838f4b1aa2e3fc0a2935e4663234b 4b910f24d1c802ae6d544eb57b487f70673d02dc3a746d1c0c08f5b74ef0e5ce 000000000000000001b759ca23bd10287eec712e9c61db352ec1dca6acf36e42 +389700 00000000000000000b1e012f22bb8c85e804e1cfbcdf0c20efb2574ebcc21ca2 82ea87f91a408f3f6933f9207b39ce29b22a5c3dd92e21fa976b22bdeb58b5fc 00000000000000000b2cc51a3b3fd6e3b9d1ef5f9c6e743f41b760b47b63b03b +389800 0000000000000000042b2f87a79c549f50929545895d8ebc2a991dc5f2dedd90 afd2ef1fb5a928780e529dff925f51e8f277d118969afc347be3c1dfa4b51f39 000000000000000000be4152275ebd8b1d2bc219efd23e1f40ed8e791f9d7c26 +389900 0000000000000000006cfd261b46b7175fddb398b095fef37d8e059613728ee3 51426b74341c8da02feeb0eb795612cf97a9ccc3bf6784ac99e2711b84a5701e 0000000000000000074b757ff4e3f33728d854091c730302634c8afef1362c03 +390000 00000000000000000520000e60b56818523479ada2614806ba17ce0bbe6eaded c5eb2e5bc5a276e233037f1480f9f122b07bdbed88d987438b2d42ea0b5f9c79 0000000000000000055265fb53f189394aaa2c88ca37548c693c17965c9a45e2 +390100 000000000000000002027cb7cea9c504990b44fd43716b190ac674fca4dcd30e 57e84baf63c0ce6a211f546c712e9219b9404850220ee9157785687bc199b90f 000000000000000007783377eb206a9c63123377491b626db34f7c79c0d5c0c0 +390200 00000000000000000a3a25468b5cb89c89b7d5ecd0889894e03d58eae483c4c4 4595704240103d797dad9f49437f2ceef45fd5924984fa0132c52f422a5ab7d3 000000000000000002b651b19805caf8b476caf261ace4498410b77a3cc481e7 +390300 000000000000000006cd30fe0048ae2ba493ed93c62a0b7ff62d1c06578063d7 296003cb82522b70b2f7cca4d38e796b31cd02f5de2c6567e3ced40ba5078659 0000000000000000073d898a1c95364203d7c22a78246edcee3af4dbf639b166 +390400 00000000000000000ab231daf6e3ee74fdb4c5ec5eb374ffdd276efd3aa0b71e 71fe24f6924675df9881f49c746c7c3f57f13df4c5586d4dd751a6cd868e9b2b 00000000000000000a252db42b11c61df335b9e488b072c97148bf8e7b3ea28d +390500 000000000000000009b66fd652a41c4ee268b404e282b5f9c4fd1e40bb7eb4f3 1c8625f1fefc611dfcf4d2ccaf85d0e5bb9a5cfcca1d9f504e69ef1f6d07d0e6 000000000000000002e30a7328bf88145cc24cfe565365d89478a47d39d79edd +390600 0000000000000000068767af38259f44d7e9e48c52ee917e8db5aa02e95d829c 8666bfb8401b84d4d2b20f28bdfcbae2d9d54426ba6686a3dd8830b2f6f4f74f 000000000000000005a098b615e87a34f420d405955b39df283c2048ef8b0a16 +390700 000000000000000000dd29f2fff59da0172ebd6f1ec6ee1337c155ac6a64bd77 dbe945e65ea76e3c9276f8ecdd49a3e17c34f6e09571f55a9649bf0da9cd7ca1 00000000000000000b45f4a780d842459a0a16253b50976ab3022edacf90a27a +390800 0000000000000000058a7bf63d5a6311df3a2cf7fb722a56f020445564c58606 5282a4c96b71721d94d80c223be6fbe6c9ca6c233dbe1573a12f304af7078f58 000000000000000004fc1e35b99fdf4b4c020afeedda9ca8cf3cae6e7d634101 +390900 000000000000000008b4f3ad64f1c3486cee479f11fb1c76f9f7de2cf15d226b ecbe69605fe15a33cb33f628119548005ef724f66b3eb30d6bfb8075063708a9 00000000000000000b469345216da1ad7aeddf9814a8f8200289787530ed81d7 +391000 0000000000000000016936bae618c90dcada8720313b82f8e22ec95021de1b3b 0b16d0c86a5590ccd791955875ec3136aebd37435db13cdc03aad2e1c3ef81da 00000000000000000065a731ffe0f05ca3f46224c1213598628e49a820e07f0f +391100 0000000000000000071b1ee24994f22d59a55cc7b7b9497be15a3dd1739a3f6c a74b5a6587476a113c94e9f307122e0e3803b45eba1d78acd0703f43d658f947 000000000000000000f65cbc450d8e6cfdfd81c0ce924e215e4d8c958699dda4 +391200 000000000000000002e3354f741cf0a3b8976c660431980cacfc04bac26ea9f5 54a305b688f366c50f9bc3eeed7596a78757ff9f694a415dc8cda0a66e767e98 000000000000000006bff7edc682a18aa9a34a83752e44258f2f1ca768b0062c +391300 000000000000000001190dd33ddeb0263a56bd09dfc20708188868ac749b6e78 2f005c7e731d97603aa963224874e7db6809aed8325d9227e06b3bc90720d951 00000000000000000571005d4a513af6740105b13537f04c6637f9b1eb117700 +391400 000000000000000008575d73b0f277bffe95502f3d97a54cf1a1d87bd62766f9 bd186bb18a41f9d7bb1c7d79e5caf47349b097c3af4948fdb6d9681d6439e73e 00000000000000000900764ffc3fd523dd78c47cac7fc847080a3ba763aa4284 +391500 000000000000000005b3feb59f5d41a4c39c274958d98ca54e843612f8e0ec4f d77ce0cdc93f88f3eed8969ef65faa63feb79861dc2b5d5923ad0ef32a95b619 000000000000000000b64f5827d5541b81f86900bca4ea2b02be940aa864eef3 +391600 000000000000000000f2090c11915750b434d29c81a32f5b3494113961c0205c 401654541bb74cebd9441fd920ffe51a96e314db56e18f989e3d06d298334882 0000000000000000015e8a4965d0df125fbd60be19c7fec45ad908ad1631d9dc +391700 000000000000000002a1d1424df6414089c1a23e036e2b7815ea31be9f009956 0ae9fe78b14e4ba1462746be875b62d9d7fae65960ffac88951d85e3e78effed 00000000000000000290d06d0293350b6c50e96a36989190cb612eee50dd2cff +391800 000000000000000000eb34e754218e08d73b49b9c37478b46914f01747e18026 4cf0db26d3363a8fd1d0d38ea652d3832bddd8213b80843716272e769aed63dd 0000000000000000092a71d7566c4c956203d22cefe3f9ee4fa50fba15b4922e +391900 0000000000000000046cfebefd5b0291ba3df0df3e3f7f6b4a5d8433ec99a053 cca1738ef4dbf91f510e6a3e15451c6bf2c9fcbbdd3f6543556f51685a05b1e1 000000000000000004876e50b358a3eb54516071d8c6bc1c2cc419b7e564e2f6 +392000 00000000000000000850dc9d4a9a8d45d618d8f0dcbbdcc8a6fa88a6a90dfe1c f68d1b20f6bd6232f399f79699cf8e4204e3cefc08fe112d16f4376ce7fc1da8 000000000000000005b076c1bf4bb3c1bbf331c0d1a01461e9429a1b71f40821 +392100 0000000000000000072af43a15c64bf7bb113847d45ee5c57695d28566dda2d4 08f9806033601aa2b75928a7f019adcd2f6423ab24a64f4cad9e3b95bd55ea2c 0000000000000000004d6a7f1f516937e30c2063c9904239e88fe4c8aa39fed9 +392200 00000000000000000201ae1ee57020efe87a0616577d40670c79306160ff9782 3908cde82822d7c676808c5655357d8c89a0282f545e84d1bf14a8f57095b764 0000000000000000080bda161e12d3d56a363264c5d9e42b1d3b74f13fc99d1b +392300 000000000000000004b84f465e1494e2cef793d4340b2d6acc15a126d14c9eb1 5f536da86905c2dcef9be80fac3aace1e31d50b68afdc9739a005a61d576f07f 0000000000000000006c96fc95c8c9e0477bfcb13ffce475bccb40d97f2ce6ac +392400 0000000000000000017842f766d210c08c8bfd0eb455cfc0c4c209d9078ee161 38208fc8e049ab2a74de457d3fbb61094ca7e6152bb61c99bf16f3d1eba569b8 00000000000000000332227d8fa96311de28be63b83d433530e6aacc8f10c9d0 +392500 00000000000000000357dc3d36f15eebf90ad967f2305493ac6a5423eedeb788 0c7a25263450c77e9dc088710825b10ba7866992de24554661c1eb79ff0e49b1 00000000000000000564dc6bd3b8e48fb6139935659f584a42b1dc7608993118 +392600 0000000000000000000434f160d6c4bdfdab602b53cfc6f1547ca63ce2518011 a215b8166a6e72ec5ebd9537c563c69ae1e7c6e451572ead2dc2cd236947ed42 000000000000000000927b05588f2ba23c98d7d634997b9eab048ec9064f72dc +392700 000000000000000002977492502a9a3aa4df767e42d9dad360aaaa011bc904f5 51d2d74146cf84f6388f290ed9543242dd8db63c78f801c5b67bb1332620ea92 00000000000000000079d9077c75cbe023665384e6e23d4b4bb027f233d31bd6 +392800 0000000000000000029145d869f48f6d061ac54749a4826356a3dd87776e00ff 309255d6d8a98a54aead7b3764665e411ebaff765615aad22fade46b4e0ed361 000000000000000003e5b7b6ea75efaef25da3b8e1e5747c3a28c2bb484d7933 +392900 00000000000000000043386f687422f6840b2b64ea32c673592c517400361722 ed0b4834ad3348c5394bdbcdfa1f604af7de8ede5cde58786d595f7decb2a574 000000000000000002f4316698b0b62d366828140e47fd0d4c635243dfddf934 +393000 000000000000000001fc0feec5560a84947a939f7fffe1702fdfb80f1df84343 fd31e00a0837c2374ead2644d4225feb792acf557e438ea0359b3d545a38c14c 0000000000000000048107c426c826407a5416878515be0f94cbf592484e8eab +393100 000000000000000000a0d9b87deff020298698d365bde9d40c3456bfb7c3187b bcc6d8eca40c865b49ca9bfabf02ce5ed4dcddf4c776ad73755da7f5014381a1 0000000000000000005e2e358fb0b02b457d40319bdff67e03747046b83e5767 +393200 000000000000000002a11e209a94cbbc6b09083aaf6bf323f27ee7f4e6b6d381 98bd280ee939510ec44d015fb64799cc54186063b48760241653977749078689 000000000000000002ae68b5de22007817467e3c664f7ec8b912a95f9122945d +393300 0000000000000000099725d2bf198061f273740babfbde63f29544bbdafb6bfc 830583a113ba31bd38e20a6bc58a37d19eb9533cac5f80ae9db09d02afcb0015 0000000000000000089381179b20c7a34dad67a7a9494fe2157cd96af0f1ac82 +393400 0000000000000000075530b8f6a2fab5b1901591353da7dfd2514cd624bd3389 fd7cb66e95eba92bddee43c51a2d7cc87602b4dc01e0925cb1fc7ba1ded85c1a 000000000000000008066669480607bb004218d9cfe83e88c027839cc14e8ab3 +393500 0000000000000000054fd9e46e3ca036c43a3c26f05da750c9a9fe50e67e79e3 2a7c640175a79a57158864acd42d3e76895856c49fd338da638b8f73f1aa78ab 000000000000000008cf9ecdf60cec4e70df82767e532d70cd32563a61cfbe7c +393600 000000000000000007e2f8af1c8caa3a43f06d127f932e2df26885296bb5e3f5 c347f4a2726cfff0a25345d6983ceee7034b9aa1e7499e5166046b926e8f8ffc 0000000000000000054454e9de7f6605d0d7a209adbedbffd0c8cf653bc9cf44 +393700 00000000000000000654a3652ad75bcec1acc6678138c334948859a74161d4ad 70e4cfd366758179dd799de93014a6bc2e147da3847eb683da3aa3fa05159e68 0000000000000000067316817ebe6ed7c49ab5613f7a1dc17fa9abfd2ed7166f +393800 000000000000000001de2dea3bedfaf942e6e0c0d9f20cb37f62eec9b9da3f69 5c182c8fe92a5e0a404e31243cdba2a8f55d2916acfbd351d0c5bc95790c4e6c 000000000000000005bb3aedb51c039eecc7fd2821f51aa78c0f6d1bdb06808f +393900 000000000000000004f041ac9bdfa57238cff54b20196d1dfe8d20a0c45dc18a d0ab1343bb35e8fcfa6e025e3f0e7d6d9493a713e5466033c4eb4f4a408f1d27 00000000000000000053ee54e5f3314758f7be1e618c27f595380c727dbf60b5 +394000 000000000000000009ae6157a480e351cdeb8be494362a3bf3cd1c4feedf8ad6 fe8a2616a9a3dff68c77fb150b9dad27255cc1ef9ddada6925f13b658932b332 000000000000000006d90033ca2d3e257db9853761609cf17b00cc6a6e705f48 +394100 0000000000000000075f10981bd5fb22a8f1cde8da43165032499bc4224c5f75 8c3b614b38e2d5c6074010643ff3b545d6816d23ebc561015f6ec7ad859ae67b 000000000000000005f0ccdec7eade818553892763d33e0bb1e6d70397d04bd2 +394200 000000000000000008f7e2a8fe580d89baf14731568f00bff396b8d07d6af269 7e77f8a681210d4e753e1cb8eec1e29156e9514851422229f9f0261b96144b9d 000000000000000008740c2a5971a7078b9831b1360bb5eb57e0bb2fa56e5276 +394300 000000000000000003c0dca25520fd50fabb2a47dbe1099a9ff0153c93ea2e1b ff01bcf6dff8338d3c6c218ba14418ceb8b4fb5196f2a3f31b9c1f2a344861e5 000000000000000000ebf0433da7ceca46550fa734c29e03dc2d289f59653825 +394400 00000000000000000319198d1de816638ecb97e5811f897e4703735598683fef fe54fee1ef5f47d4dfa9b46ed1edf640645424992b1438a09f24982c13c24e8a 0000000000000000055dbc1c680b19129b3a2f10095e6496e9bf90f5a645ff9c +394500 00000000000000000776bc3ef2db94d990b7f6e65a4e1dc14c268a8df583b2c4 c2e4e1df14b0b08c9ccf0f331bc254249bb7aab0f5326f9ebe8125ca22f04829 00000000000000000660fb1b240fe34b571906999ba7af816bb069a513b1563b +394600 000000000000000003a10d049b88eb6f694e9b50e7308bf79135a38e026cb4f1 de60f9f525a3d039ba96cb39c0bc645e970e45899c9a08495a96c31534983a86 0000000000000000062d85339d89898e9c64e456a5fa1a7292521f4000321659 +394700 00000000000000000693f585c31786087ed0cce9cdf363307a1e6845adc5c3a5 efdbc4771413f157dde15a3c300f122ab2e20e33833a5e2b6494afe2dd694818 00000000000000000371dacd34fc170d732da53b9b678387fe5be6334af2b867 +394800 00000000000000000100a61fd1bc68439086273a1c5b5a9c0bd76b474acc32e4 256cff44f748356c248c8eeb87d005c541e8398999c7eb54a6c47877702371ee 000000000000000008585ab176e955df62aba93cb60144f559b9a892dea64f24 +394900 0000000000000000099562a068d50b4998c3c2abdf9066169e1c2d73e865e9ea 7fbf0c186d4601dc1980dffa01043b2ab1c188a5b2966c433f86619ec04f9ea5 0000000000000000028ee603c0438109e5f793f2f6ca99ff24aacc5a1f7d89bc +395000 0000000000000000014b0f613fa97d3f512666a8aa4fd06132ff4fd330a0a664 794213c74de0b804c6ee774c25a837082c4c2ffd3ff1d8b1f8d4debebe728676 000000000000000006d2270dbb44539e09907cd65fff1163e623396791ff4cca +395100 00000000000000000374b494abcd93516af2756fa48258cb7a63612336a09ed1 4d07d3cb28f490593f795a54dfba6b502aa21fa949c04ac71257dab2db07b553 0000000000000000048aef35ac596956151a8b39b6a2cc9158ba5af51615fcaf +395200 0000000000000000086cac3335a2d28c4e00c5dac3ed8f9656e140df4de4fd07 5f8c40872126113acc1915ef5331c2ffb2283d89d0c876c017a0da8117c3dd51 000000000000000002aad7c30b03d600806ea13afd2cfac34e5ad1873c69a8ae +395300 000000000000000000ced71d5dd6a4048413e2128648f4b3b9bff439067512d6 8c11b20b0d7bd4f04aed9e433a3edbb64f97c59275a8642f1d0fbf0f758fabc6 000000000000000008fc5a3b2e264cc4b2b70711d4fcb982056176a801e44165 +395400 000000000000000008507dd449bcb2b13783d2187947fc7ce57dd77265a98743 2cdf0d2b127e08f36fc00b0e4e25cc1d38166b5a7b5106240668266b82437899 00000000000000000205d706d8420ff11aa8eff70eb6132c5cf601d846db2da3 +395500 0000000000000000007cd66606ceff31a69c1e3b49b5a4e3527f5f9f24a2248e 582d2dc06f3e3d450e9ddcf4b7fd2251d70569ab005831185bc80097c4c8c329 0000000000000000059bfb51974888c2f8f21f9fc7383f5dcd2774cccc5cc82f +395600 0000000000000000018bd2adf8a2a401e0251ad895f81cb6e0199876cdd40d4c 9b8769b65d1f953b8954ba49c0e1fc4b824e7a33ce035be36557e34c0ec9e3e0 000000000000000007bbdd8caffd7cad895478cf23ad364f5115244895ec0ce4 +395700 0000000000000000006f774482d6570d260612850f880b0f17478d990cebab2f 4b9edd1e16af9193b41cfa44547a8cadaecd27bb723224232250cd03862b0942 0000000000000000031b010df4c8791e8a9418f5c81caf6b35065cd6ab2e5ced +395800 0000000000000000009d85667f54989a5eecbe3fd9a4933d45aa3887397bbba6 17de4ba2356fce13af10915efb646bd91e4feb8623b0dd3a8324f6c3bae94349 0000000000000000063a1dc31a836524bd045729da8702717ec9d2f3a8281c42 +395900 000000000000000007acfcfbccf4ef2b3f8486133416add1578de5e6bfcc9713 a837df0c661587b7669bcc14a60062d8246a6fa77b9dccbbc88ff6344cc1dc7c 000000000000000004b132ef81f4073e92697c613104d86c90967750ce668aab +396000 0000000000000000079226c668cd1db713fb78ffc127b422e12b47baf205b478 b7cfd1cd1e5fb75128a47e6228562e3e38107f2e9a8231fb26cc863131e29692 000000000000000008e53dbc34ec365608efc9592fd982d616a9ef5258c72483 +396100 00000000000000000563cab5df4a98a9179936dc7519b7dde78fe95649220258 42cc0933417651ea1668bb041bf8dc438b470010c31058d2282facf9206f9b9b 000000000000000000ae94c088805e57c091635051333eba400abb7ce4f4d6ef +396200 000000000000000007d031d83d45a1e66e848b7ed4c25aba50dc4ce945d6e1d0 c710b49250dc70884bb676aab61505fe74441a05864b3c965438e67d6387f3f1 000000000000000004dc7b05c27d6d0b24e5d045c7595821d3b7c13623ce81d8 +396300 000000000000000001678c7f101174ed86a17ae6e6df0f64073b1e2122deba3d ece35c30906d4c364d342fa6df85f432263e446a750b469b58cd42dcfa45f52f 000000000000000007bad155feb0664916d971117027a05fc7b93d1b8ef26e8d +396400 00000000000000000818e993de849b5bf5f7b9d336f89f87c97821ec925498d3 d028ee0ce779062a645db8ee922feda53f81a380f81621c85b8b2542ca8725a4 000000000000000008c7763303e79f704ba588f5a3cad3a17099acc048234057 +396500 0000000000000000072b32721c1b7d16b834ea882ac856f1669479d69f4bfe8a c58cefc2fc0063050d38c3e6a17a12cc5baa007cab5a034207f29e0c76aff5d8 0000000000000000052b3e2ce3c30f8c41c562a96fd78a00e60b2151f08bf4ae +396600 000000000000000003374da31bd71501c21df461341815493058f4fe82f31cef d539728dae80deb46fa58b925b83b7c194e370961dd7a3bda5951aa916d7088f 00000000000000000342a5e221123da112f337f0aa3e2c02c578e90f88b60d3f +396700 000000000000000001d53e7cd272adfe2425a09fa47cd7f8d9f02324777bda8d b388f65410c4ca6ebc08a423471516d0eafb7c9b8ed25dd2e3e9e573cc38aa11 00000000000000000539ee34f10bf9f35d154897a1a995c2a5121d7adf20c752 +396800 000000000000000002df6ecf4ec0dec14ca24e303ac36c9bad4db12631b942bd c6a06ec74c8bdf5301d515306c33a0382bf309e2ecd9696ee449ce65b184c4ae 00000000000000000711a9829e87ba8ea548f1793950893043a5dc56893dc1dc +396900 000000000000000007426fe22dc7ef0e2b72f57aa1d1c6578b1b326603ab6350 0cb372711680bf97626a87f0a726cfdf82fb582c1c4d38b0eeb0cee99da5079c 000000000000000003c81a6272359e98adde6645ba6b0018353e317e0267f8ed +397000 000000000000000007f009e95a2d20f5d007bf79ea3a1ac24cbb7747dfe5f216 bf5ac722e82c61c190ae3255ee24454da3161ff009cee6b79994770ef7ea7ad4 000000000000000000960d82b8087044a1749c1aa248b006941df19eb02c5d90 +397100 000000000000000008783f885a1314f0ca5284e7761164347efc3a9287828455 32512bde06b0e1ac5e2b19eb1920ccca25d012dcea423e94f2458ab55af9321b 0000000000000000077f6e8a8e1a413a864040508c956b40d58b51e83778611e +397200 00000000000000000174f17a186cac07a363477e9ae795ad052e77a55e8d172d 45849f649d1c6a039d9290646976b348144105389b8e387e5b236edac5489ec1 0000000000000000032d4c0b1dae00735497564bddfbff5983d5f9782ec7e239 +397300 00000000000000000151b3c44541e949a2d8890b5b1e3333bb59489a5dedc507 ffebb3a6a40a3aebc981cf91ba018bbe935e27090dd89536867b772b37ba08ab 0000000000000000005e297980dcc1fead6ab43bc5d764b7b7327504d0cca8ac +397400 000000000000000005f50f0859e328e66e0da197c4adcb9a2c9bc4325eaf9169 bf835fd30258aa6a3b26923aaef4ac6148a4cf3ab5753e85c98eaff1d1759d95 00000000000000000660bd4e4b4a7ea497d485b2ef18b68bd40ac4682fb457df +397500 000000000000000000acafe1894685905465988539e835dc8b0c905d65efde3e 49de00c21d8bb4e50883a2288c54c700d22b2be1a99a25f6e16a924156507dea 000000000000000005fd9d7180ab515d3472e8ae454a1329ff5699c072312694 +397600 000000000000000000d7726d1fd57c78f47c19eaea8dff16f1b9ec1ddb641bad 5dcc4379e96e1d20cfe6ade7719a5eb2edfd60ab13bc384812de2a2da2550dab 00000000000000000702bed715b56fef6c77477fb8f30e84067ca79d1a509350 +397700 0000000000000000046710cdc74fb1746853676719cbe1f308f52d5b3a0e4888 01fe9d66cbd0a54a4fe0ef75a59f15260204c3c14ccf2b8d804552d5dd43b222 000000000000000003b2f71187fe3a9b0cf99febd5fa00f5690b8ebe93d7d1b2 +397800 000000000000000006042c48cb134a97f072394184b9b7bea9d79321b38262ce d526c719fe68bdd2c398f3286bd9a7aa45a8172df81313acc68aae8b705df59c 0000000000000000017c5335ba656e4d238cb30d4867b867b125c3a5b45c3895 +397900 00000000000000000235e1fa723f8a56f3e710b3fccf75a934f7083db54c19e0 ad84ac4b3bb7699ad93b40a46ec8bfcb7a243bd890df5785777d007bcbdfe236 0000000000000000077feb5dee2b2fe2486aa3e3651bc942be12d9e1b603805c +398000 000000000000000001c6bd9d2dbccc3f16ddb534119de0aeb7d0a8c87f78e001 c84788134e2e84b5a34e7cc92cf741284f9533748f06f8535e31c8eceff9b8ab 0000000000000000029b38bdf2fb2b7ab210931ef90b0886f09d7000f54ee23d +398100 0000000000000000004beea9a4300bb42e76b71fa2f46ab42fe9ecf77245af4a 7807511eb0092067bc856d24c588244e956c4ad61ae14b322a926b89b426994e 000000000000000006d7c67df3e906d12c1ab67385666db6838baae70a1c10d0 +398200 0000000000000000050e84e44f65b0cee858dae344577ccb296875a7d3673d0e 1a9e81a85802e8ad240123fc9552705ad4d1675098008420f413f8059b2b0eae 0000000000000000009e968b244ed9a899d7c429f7fa234816ad2ed2da525371 +398300 000000000000000004a0c6016b79a785a4068be962b4ee538af76614c4164c42 262b7dd99799a4c41792a46e945c359028d5aa25c086b03e23f8303a05a8a4ed 000000000000000004b3668a1d1e31f6da9e0083cde6e9d5bd5ce5fc9d1b2eff +398400 00000000000000000067c815c29d3abe54d91d8195038dc50b131343aa972eef 6e4aa889cebd08d50ce5090cd6f06bc21e22ec3ceae1a6e75c1ef9da771521b6 00000000000000000540e66b89b76f41d2dc8b0b7d462238937ea15b95e6b61f +398500 000000000000000003028f7d471cc67439cb50c9bfccc36cfed3d3d2bc2f0c53 efc81b159b486675818f11585bb864582146f0cb0838c1f29f156d8cd6cd7cf4 00000000000000000758ee4405c4951416a8aa94b764f9b39af4a5a7a8fa9f5d +398600 0000000000000000007c6f4b423e53345f75666bcc6a6dc14442659b7cc24a87 1f6e23862223b28fc115bf456e3ae3110b9ae4e4d838ffd78d974cac5752f7e8 0000000000000000009a26e6bbd2db4c9d98bbe4fdc593e10d877d403a4e55b3 +398700 000000000000000005063d3224786fb139d8ce2121d65faa748a3fd84d174552 229a2b315f4f4af6ebd3260737512ec8c2f2a0bdb2d4eb675432791e6b1d993b 00000000000000000180feaf10b6516ce517e14167f2e76675cac420433399f8 +398800 0000000000000000073bee35d130f215bf7f28fc894db7334afdda20b99b62be 9ceaf205010f1aefc4901ac4211085f464ec4c1e76087b1a1db4715331335f87 000000000000000001a64f4984ce43d1f7fc4767d1fb285cbbed02584cc1b0cb +398900 000000000000000004d46b16504e220bf3cfea83f3ca9ddcedd6345c9ab394f7 fd3303f08121e9bb0a64dd7f02cfb3fb655664ed03833a3b8a7ed40843d36b20 000000000000000000d2d9b9c475ed4f95edec8c0cb210f0fc932105c3507994 +399000 000000000000000003d2548d4c19a5e91a8762c764f3195a7cb4be189bb1da48 3a81ca907a32c3c03a009cc2eb1a5e60c18579e7bdb2dd040fa2fe9aa70268b8 0000000000000000013090d3331a82702b0caf537e7621f2b9190aca5572fa48 +399100 000000000000000007901ba96cd7acfe0aca2e655921a99d4db213c453dc37df 7e0cfae714cef15dd387cf66811fe31a28a657f82c48e30eb1fed7023c6460d9 000000000000000001eeb97ca833851d7e84ddf27a737949c70fcd32732de603 +399200 000000000000000002a16e42e82c833324c8e8cfd481269c3421a45ffa6a8f17 118551ef2edd3290620d436e807adc4c9500b739e95e81ed2a54477f4e9f8623 00000000000000000017e76e8bdb74098a20abbe4a98d3e547b882aa49e7d338 +399300 00000000000000000626e2ffea366836aeda077903d8a48c3b8ac69c5310fe6b ef1f65802bb0edbc772611b39f6be412fd4ea89484b8b8e364f5eafd2105cd5c 000000000000000003fa0d657f29f7281f376f3001ad1caaefb6505cdc44f4b4 +399400 000000000000000006ab0447ee4245c70c7a320a8fd3b0180fef636f64bb2d0f 13080e775a517a1ea09c6a98690ce456355f8cb77852957ae0305f0001d11d1a 0000000000000000069a13d07ab6d03b4db1b278d8ffcbd00b7d3f825e6a8d5d +399500 0000000000000000004f7776c3cc0e2f3c399f0b9bc3e53e9eab356c5317ef76 4cd61b2f0b85e1524369370bb07448bdce7e5864179d7c084b701fd224978e53 000000000000000006a4b66294ee0998fe673967c34de58f07516dd778cdc1f8 +399600 000000000000000003f3c17ae3d981bedef1a3e4c8ab9e6072cdea1797996d65 2e57d20528c1009203e8669c6ccabb1263ae45ce03d282abf7debda0f312a9f1 000000000000000005d1acafc19e0e29c969160c59f9f30dfb5fe8edf96c68fa +399700 00000000000000000144d4661488870e99ea4fffa243535a74d218a43d28f9dc df051ee0036be8fb34f6d0800a6af022f98d047108f309fa9ef2192922f3f619 000000000000000003e5d813f9f6668d1ffdced087a70b96d0e8bc9181420a3a +399800 000000000000000001e44729e8855117d069601b328e73c9629a6780366abe77 4d45220c3df557758e8266b6c40e14d82af93c93422c5e499d7b61a190468d66 0000000000000000007f2feaffab12b86dcb02c43afd95a8f9f344533bd02283 +399900 000000000000000003863fc0e1f681ee116bc1969d83c6fd79b7236f461b3dc8 ad52fe4a24df642bc1c28b86ac25b20b32c219426747ecac3efdb810083855f6 000000000000000002327e752e9ebb2e25936753bb8e1a9beb6424d7f6d2ba56 +400000 000000000000000004ec466ce4732fe6f1ed1cddc2ed4b328fff5224276e3f6f a5592bd73149395e4a5b9703798757c1e3d82c2ced60b7bf1757b8fbf4bb495c 000000000000000005421b1b2ee6d06d037557d7f5ec96852542413cfed40c22 +400100 0000000000000000025f17300a817ecfa9f6fd8849f63ff9faf97038d8ebe086 a5eb72b606ec45177ffe12430f9c177d3b13136e4d9b9df4680826ff97fc272e 000000000000000001c69febd1d7abf444a30b3a6fa240a7a9aae67a096556d5 +400200 000000000000000004e9b3d83a087b7f97c0b9b3c3456b03ac6b6745853440d0 6bc78a44541f7815ac57a35b172c09048d98c677bc283df2e9c5661793223fec 0000000000000000016cb64a43278f2df9361c8fbc1285fed1dfbfc52df6e155 +400300 000000000000000003ce725c6b617db3efb6132cc3fb1776cad5dfddc6b16a27 d1f0b0b4fc74bd95d76a3cd14ed0b62dc9e008d9f9f158dd99191fbef6437610 000000000000000004e137194dc4369e4e963b53a091cc6d51f417ce3bc7c04d +400400 0000000000000000060ab6bf830feb63ffbdffcd9d860e720652ea490aefcfa4 9ba91f831bceceb93f5551a5e42b0f88f7bb1339d98ed4f69e85a5cdc25a0ab1 000000000000000004975abefb2faeec98fbf08bffcf7fd3a673f7ca0be35c22 +400500 000000000000000002c0ec50cc0c04c95f26bbc0e1dfaa0cb74e708d723fa4bc ed411dc4c6559fbaf3d06cd776d234a81dd04aa0f3be6dcd78d49bb8ee9c84b2 0000000000000000015c2ed3b3f434003ca37a557b757d4205c44fd45c3f84d1 +400600 00000000000000000571737c08fc16940e49b16ca837fdc7da3985f27bc12d05 d23fc2315d1637b611bdab3dce2de428c14cfc8cd477a20fbebb705b1bac8d9a 0000000000000000027d40b4b283dec051885a863b78c67e9b0c90ebb84479f0 +400700 0000000000000000044f8cbc7126b43bb1615f34d185f603b89d96bf782da7cf adf40830f2339b660617d9e384efdc39e9451b90fc84b02d2b5d206e5c28d5f8 000000000000000005a0a69eb0921be38759d12857bff954064f5582d7cdb06c +400800 0000000000000000060009ac0b82e6ed9bc42faae1c6ef8a4ebd4a3cf77643bc d090a618f00e7a8397a7f9da9f6b85de13ee2952c07d86a18ee9fcb49891bc9d 000000000000000004ed7c9576f04c112161f93bd6d88d2143e6dd505fb26c95 +400900 000000000000000000cb5f1189b765dbd1640002b32719e86309648b849cfc5e 49d6cada5008fb69047c16b0782ba652036350871fd97df3f0f59c9dd3170f31 000000000000000002d2673b362d9e84ca18c7bd9fc5d40752c4877c872c1cda +401000 000000000000000000af172b1ca0cdbcfb849e73167080a1379250d4c5904738 fdcc43180f2bbc324dbd513b275b6d3a7c29fa7f854c2a4955c56576cfdfe36b 000000000000000002be9f83df4f97ae4bb6206d0fa8a8a7ed48776786ffc1d8 +401100 0000000000000000057e5c7d461cd4ff563e8a4e8071df28122231da20c2e0ae c11391337e2e44356b1ce8bc12324dd1f088b0ad84a9d4d9281b795bdda5487d 000000000000000002c27eadc284b9d733e940a06973648d43fc6c3b2e7224df +401200 000000000000000000cbfe490bf50dd8130537e9b2af28ee12d112f4472a500b 67e79204b07187d20bdc43cbd4e94dec922d9ade6f6ececffc93ce8468fff377 000000000000000005a00650a8077baf35480cc8bb2d7b097f0a739b18949420 +401300 000000000000000003d0306658dfd02d7c78cdc54d076e4af282f1403887f19f 242200ea9e0f36998f6cf0a8eb3d28c0e8a115aba1cea3855533c96097c1f10a 0000000000000000052af6aa1ee11e3b610cc1cdce734d74d371f80fdd963492 +401400 0000000000000000035ecc92649b769e6fccdf935710abedfd80c6b0230bfedb 4a9d3fd646702c9f37027683bdc2d8753e14ecb0f05089e40f7d66cacaed3131 000000000000000006313f4ab2d63341e66b1dbf34db93985eb7887c5b4c531a +401500 000000000000000006319cddc3aa4fb6d54d38da793e77e3c8ea19ab415198b4 6da8ad098c447f1bfef2b27cfd669cd69af9ade4ea26a19c3ca31eac0cd66cdb 0000000000000000026302e705b3d31c7d310052459477ccd3c0f499758c6a7f +401600 000000000000000005f6b549feed836f8250c597712bbd51673894671d8f9455 9016b9a96981cb9094201c68cb7d595e17ec7a4a332c16a7c44318b317e85c5e 000000000000000000c817e55982d82a900cd563e5747f713e90cc2170240355 +401700 0000000000000000019c6f7f906702a7914cc675bcf3def740d95f7d7cac70b2 60a73ada5414ebbc9640e3591058f8b762925aceab0777da58631b1bb5b2610d 000000000000000001acf759293af9ade7b6b3934f8f1445296c59e92c138c3d +401800 000000000000000002ca40667178c3071526ebfdf0dc3ce543408432051759e2 8213cdd92597d7bf57b7475db4173f9a23eccc22e14daf52fe6a897b06230ef5 0000000000000000028195c0a80ee9af75aa73bc9d556db7c499c6c28bccfd47 +401900 000000000000000003980b375024e3f69c78643a9759d87420b9a0569ed81dc8 b645886c3d8ba52f7ce1e1bb1ec1f1f40e2948ff90f5b993d16d76b2401436c9 000000000000000001653a1ce236a5fcbe72ab167276086e83ce62e00acefe85 +402000 0000000000000000001b7da4ed218caf465ca9bb08a33712e8fc3fa508e6264c adfc41f3a460c6b29afc78775be8e81bda77a10bcc4e6617c269ee5d0b20877c 000000000000000006e4cba5d6971fe5dd734dc68e158bf0a6f4d78c11d0e91f +402100 00000000000000000232fda0c0818e975b27b9c1c42668b148eec084b337d715 93089756833fbd92bb0c99c37c92e8c4f3df00781062af4f5607573a3874ba69 000000000000000001cf6f7a9054154a1e4ab88027f449b830181a475f4c7aa4 +402200 00000000000000000563cb0f114b8eaeb68c6e211458eb3138b3e2724b5312b6 f6730a6609d15bc8040457ff5760092c51262ebdf539cf8ec684e87f7a29c088 0000000000000000054b247eeb06a169f9bf6d80fc0e1675e434f6fd3dc748fd +402300 00000000000000000498dc85afcd853717920c7462f7218715e7a62e3502f1b2 d1b6681a95949f063e13e417eddf45946bad14fd1bfa50c984994ae4495dc830 000000000000000000ae2c80adeafa7d684c98577bb644b03be595a45c18efc0 +402400 00000000000000000619fa401c577afe0ef4894d144eb5dfffdd890e718cb2f5 abfe195bd59c8f22f3ee9e9951819f077fb9d22ac77600974fce3ee9db27569c 000000000000000002ca5a4528118f0ee8b9e11c08fac99998749f9cfa39f9ec +402500 000000000000000004d94e2c240da10951be8641c2fdc4402007ca3beaf073b0 acd8ad50e13d189bdd59e85b0b97c5e95a08308efee9304d1b4e30730571370e 000000000000000004b3785d948ee5d3d058817d9ae120a3474c1d0b3fbf251c +402600 000000000000000000a3c19e33138d3c6af905b22595b9f4e6a3f2fa26a35b05 cbbc3f0636f441b63e1cc9ff906602b18fd21b6c8964eb856a881409982d2122 0000000000000000029ad50e63681687fc310b1e9749b7ea8fc5515fabee41de +402700 000000000000000005319e41d2fa12e53a7b17b4a778bd632bf7f8ce28f7f2b0 9248fbd475f650d0fd4c7276fed875debe223e68090b10c1ea284f3e4fd5bb12 000000000000000002be4cec9571d9aee1694bd2005b6f99dcac8c8f94c38efc +402800 000000000000000000125cb5c4948ed7430ef94b05533cb64b316fe969467139 900921b74f4a9229bb3fd519a538be1c8de161c110cf6790c0c104e62c5d38fe 000000000000000003d587a104e2c9557d4166e499a6aee3a3852a220d2d4e13 +402900 0000000000000000019e332601b716d5a84496336eb3429f3124dab9e04bed6c a093ef3aaeb5899da882741132d65ef558dc1c95c9e26d766aff725eb9e0ba23 0000000000000000039166d5ae0ebd0371cf5d8779ec01fae3a7f2ed3f349878 +403000 000000000000000002b3b820d8d9af0a81a22fce882f5e055448f18dcc4975fd 722302f332e3402be60e91bde85a774db85b08ff3ca24232d7e0e2c374b02dd6 00000000000000000005ba8ee291ee724d1fe9065924bd981eb0d5ea31a9367e +403100 000000000000000004d0c10fa0479e1f94890aa9967cccfeee1cd45e26baeab3 4dc04ba2a815d79add886e9ede05e31fe0f15527e152c603883e5f5ea5edede1 000000000000000003e66d02174e14d8a9676a5bfdcb2b52136063e7d7de111b +403200 000000000000000000c4272a5c68b4f55e5af734e88ceab09abf73e9ac3b6d01 1d221f506977ca7f9fe5f83136a96b641c34df0fe91dffb478939a5ea3b12e78 00000000000000000595f9c1161a9e66bb8bb43dc3ca30c61c9fb965fb39e3f4 +403300 0000000000000000042eef1dbf4f5cc4f75daf8103333fae7e80bc440848ac48 f5c78fc3578729369002b1d41fb5e41839e4953e838523154edf92e22c5f1926 0000000000000000052033be3a79adeb4fb6eaa05aee3855c2b9af40e79fc991 +403400 000000000000000002b6d17601e3b5e54f729e1763fee1f878e61389fdfc3aae 15553749402f24e00c776f482cf3b26ea4395e9b6040fa63579a2de4c390e6da 0000000000000000030397136c15c2edea0aaec57a9021bec7ddad67e5137e64 +403500 0000000000000000069ef9c66078b93cb3435ef702a83cfc51231a108dde6d9f b4beb0bfcaa7f3435fd2cdd02ce48e70ad99b0f29c6e1132a2d13ca074ebf538 0000000000000000019ac888846b43aba7b406261fc0625209e85a53c2ea5301 +403600 0000000000000000036f35db66595fc8f35d96bb1bbe83f143c8975638607e45 60cbab2eca14bbef255ef8e7e260e92e6e42574c5660c61c520b1a006d68258f 0000000000000000007464248eab73226f9fbde00db8f49990fbac4597b198a0 +403700 000000000000000005dfca48a26c8ddcb5606c9f21d741f3abb6310df5db975f 6789260cb68e61695d15bb8870cbd18e2de4bffc36e201c457ad5e7da7a40b53 000000000000000005e45e2c4799d3097352b5b68ef0051b0da8d8f633955296 +403800 000000000000000003bf38cb78eb5b624f51d826eac4b9df581866da91e63ce6 87161409fe1ddd567926cf4506911439a7ceb66a57e10a94ef9a69a9a2515db4 000000000000000006649229a42dbc0c74ee75d92ab2be30b6c19115dfaacd7e +403900 000000000000000001e5e0c849184c832968f220456731820107acde3c91ed6a f66efa2f5b0766609153a301c781bfd6ff13eda6a6ae7e8e61991bde8545cbbf 000000000000000002f5b6d90cff1f4083271f5dfc607c72cc99b80355de01d3 +404000 000000000000000004f9f0d6320d54c1f108130998e5bfb911f521ddf34da82c e67ae0c8b0549a2ba4b88e5dd4d6708214b7e384992a50136e10d5799378abf4 000000000000000001da1eeb6fa89a81b7534309e3dafa425db27e4e4e3bb972 +404100 000000000000000001f2d6471dfc25ad93f68c677f7a22bdae73899e0258236a 91262074adc881bebef31662b6da000a96ada1f2c9543022c95a9f604faf7c1a 00000000000000000683889b59994864c7805fc20588ca9abb3b9429967062a8 +404200 000000000000000000c83bf7180facd085432b04d648993bece6531e231d0b84 117e574b4d29447dd943e92d4189f2de1af8af1d1899bd00940e0295189fef78 000000000000000000a1a423da10ec7d26fcd615caf7ee9c4c444188958b44e6 +404300 0000000000000000039212b8f7a4c40a8ff3e7db990cb24ab7d324562383d527 bfe15506547136143c5e3413c1c698161e6d07183f2598e0d952fc4749ac0f66 0000000000000000041b75baa469b7df94e85ae7d058bccc269c6ea249385fdc +404400 00000000000000000645d9afbb8794e896998057aee3e743e516d50f2aa95ffb 4cc1401e0ed9b28996eadb2794c1dd2c8fbdcf06425806a6c17077845e5a1f4d 0000000000000000060bd1cce09f3e6f7af260621a5aa5384e7871c30f6acf36 +404500 000000000000000004e0e47c250d5b2e3d5b317db4813f26e4e866e55fef1539 21330437acefe4c636355a638aca30bf2239982d902005809853cd9900abfb25 0000000000000000012d9b96babc3338d449eddfc65f54faf20278453ee46eab +404600 0000000000000000063cf4781d5848ae24c5a04c6c922288ead592b4a7196c6c 421735c660ddf8ab5e9a58c6964d76671035fa6130c4d93b1d655cf33754ac3d 000000000000000000b5ca3b88d1d1ef4b1d8e30e039bdaaaa49f23786836d15 +404700 0000000000000000009fc7ee2a305d85f6653e5fee2aed2ae44cd6c63608a036 6e64ffe2a6284b6b15aa49ae09ec504b8eb3396744bf3b4db4da374ad536e7c7 0000000000000000005f9d7d6842b5649572a9fa788c68ec2822ff5273b8fc62 +404800 000000000000000006682e1c70e9ab9c17ab743dfdfa95cbc45bb17972128409 b85956ca746feeeb9f5c7e6d5629d3295aef081f475c1ae568d17343d864ec73 000000000000000002ffee8628fc657435238042d5e4faeaf514775df4511082 +404900 0000000000000000009bea5c4ce0856a8da0cc30bd450bd3f2c2a1bc630f4637 a3c4df6b6ac1b1672f2ba50317fcf5a49159088aea8e3a87c51bf390b18a0cac 00000000000000000344c9b3f6bb77300fa36a186ad5a7431ed13ac3cd5478b0 +405000 0000000000000000064964d6c6fc399a7829a6d78fbdc2188686ed221f130c37 0b3d55b6daac822622fed912598611c95bf7f4d9da8dee477d927412de958c8c 0000000000000000005d360415c32b1fd6512b536848e68e04f47321d480a9f4 +405100 000000000000000001d85ebf98ba6d2b963125881e1cd2d5ffba85551f678292 d055d9a05080455bf40589f995647aae26fa41779a56bf68ad6a6dd837aaba9a 000000000000000001224cd547cfcc5074cc457454660fcf5d580b60133b7041 +405200 000000000000000004d92f38374c8a64daa0a6b5b268746bc91a92a423c4b799 8040e21bf957bfc69d7977a4d228b8ae076463e78e6d862bf5283137a41e028e 00000000000000000029667de92249c7863813e6f159f67082c8e8ea92f9bb38 +405300 0000000000000000053c702c195cf72fb1ce6c32544c8cfdb2a98d341b0f1b7d bd2db7ddf4a672854ff4b6a047b78fe17c25c7ef230bc144919bc9b029661443 000000000000000004139a31a07bfca389b2589797f59d2d781a9991c1e145e0 +405400 0000000000000000013374642ca3f0c834e57104e7e05eced84e76573a08656a f134dd52e3083f39fe911c9c80c39b3de602808dc13bd9fae9e0bdb5cb75402e 000000000000000003b77a24efda527924d989a71cb220edcd9c173ce78f43b0 +405500 00000000000000000342fa93777ee34bf317948046e90592d7104196d4896b84 f34cf6994e35744a629ca3620053ab37d2edf4d27aa737f8975070237c3b8dd5 000000000000000004c2b0202c47e0e975ec5cc0efd96a3a4f2b655e75dd7f5f +405600 00000000000000000591da86d76cc6d57deff7bdd6c6b9461329ac5127cb552a d6f0f7903112df91fe52175ca0130ab6920616e76e88f7e892e2d695d6d86be3 0000000000000000043de566a870e021aa533a67a3b116a6487041e429d3d424 +405700 0000000000000000031473349cbd4dce9b67558613887fbd3e1c76f3ffd1638b e73b760563dc17ac27f9fa81aa864b9c2b3c900dab24449b6fffd9e9ab9fe481 0000000000000000054b6074dcb66c4a7619c2bbff7d086c100db068576b5d0d +405800 00000000000000000440146ccc82547c192f667f5ecbf552053c18d74e8dd290 87f0153e003c97fb375d5055a7cb9cd9adba4a55db315349778fd3c4df72ad4b 00000000000000000028888e6d107f7afd8f091bd6ea3acbac77e7948528013e +405900 000000000000000003532ea091a23bd968975e2ad58b5e057ce5216d1e0c3acb 45ec8ef807aae2f289bef7d25e3e2e2d3154f76d2cda23195bdc661e68d58483 000000000000000000ee04650c0ea9731ebe6646ee58ad027a315fa470028142 +406000 000000000000000003b3efcefc5eaaef3b21671228233be52db1a080022462c1 1bd45fb402edd58fab2b37a350634138fb4249ce07508e2b257f022ed509ff21 0000000000000000031c610eb5a810af32b531569c5fe681d0c2ddb7ae56be80 +406100 000000000000000002762fd3c2d76e74973ad5a50fdfd9d38057c7edf6d56f35 ddeb2348de4b7b9545c7a00b61fe5d005dd3d450d5c7611dfb7ca6715b907b37 000000000000000005f66bd1187afb2693f319c231242e7b2f81a15282933715 +406200 0000000000000000055b1f46e52d24ae23fd855c09643965462c12a1f2f148f4 159d25abfe9ca9b1cc045cacb9735963627fbc69208ed2d55d9ce6fe841c85d8 0000000000000000031392788a63d7bf32e9218dc50db43344da4dfd6cbebfba +406300 000000000000000001f3b9abbf0000ae26af26315dc072e8b70f25ba69ba76c0 8a5a85f955b46c7537ce3acb809f9d597c9795157003a8b0eb9b2b131a25e4b8 000000000000000004dc16eafc2cc5769cc1e0ffb9d807b8885fec2f61774be6 +406400 000000000000000005f781d7166a4d5d512ec49fc76ac68ca78f57da47d8757c 0c1e4c5213ef8ca7317d841ba9d35877a1b91ff3f08a7244d24bd0094b1a6770 0000000000000000066fc5b5bd85699c380f727b69b07f63810a8b709f0c2eda +406500 000000000000000001fafe564519a47fbd4e6265801652ad2f85b02c10c62320 ed10f6602b674e3b1f70a38ee17d9dd2e0d4e3b549266404dc8d2719ad27bee5 000000000000000000592747f966ae1f5b6fe07be3bf2fa70bc8558313c096e6 +406600 00000000000000000112fc74b4b2289ef89274cd1aab590ad795f4c1871ef8be 887eb1ec82e99eece2103f6bebc36a18b57d95d5bad4d3632d8ab79f5e64ccd2 00000000000000000299b3c9cd20b3815cd3b6d20e954b4e48fb62d940456018 +406700 000000000000000005b8d24675e101734db88c838a2383bf97e1dfdbe61e3bd3 02e4e1d5c7726151bc7e38001e778702d69dd73db8ed728e93ad0fa596ae4007 000000000000000002f39ede9c8eed91a98bacc746f7ccd7dd280b3d28d58b0a +406800 000000000000000001c31935b6b49fbfe1c44cbaa31a7875d59a22b09b99d380 a4192c2fa010c082c88e7c3e4c0542d2382a7595f9ab34064ccd0350185b01ab 0000000000000000049eb7c3fbd56b07f4b4b7d0e5178eae578f7448cd65fb6a +406900 0000000000000000063dfc7311f4d65bd87f80751a89db494258f789f4efc7f7 f2192d546268d1bc6170d2e3556386919531c2ee7489a6ce431ae45c3a3f3c6d 0000000000000000002018e23dfb11f919da962fb4b2a4d6ed1731a2e983a7c8 +407000 000000000000000001e2e3256cc81bf2c1c3e1d9230b1124c5cfd411adf03be2 927afbc043404b46b8c1da090b558b34f8ad449d5681c3780a4095e0d641a1a2 00000000000000000073ccf03e21aa872e8d76ab9fcc6f46b2386ab1ebf8adc4 +407100 000000000000000005d55d3e2d8c44b8f14bf60c65886d0ffbc189c1a0c55332 b7f0c12cdb2edbf06f5eaa1b12d5dda3ab7a9c783502ec9ced6533a51bad16d2 0000000000000000043cfc9dffd1922aae42cbea67d160ece6639323185fcd3d +407200 00000000000000000652e9a226770c663b0870997758cffd6e2a778671cacb1d 4325b7d37bdddc13e0f0fc316c0330d3b29aa368960bc796e8a73bfc322fc9bd 000000000000000004dc5d69fa9d2e6ed83db0b5a195f0917db6441dfdf36066 +407300 00000000000000000274792bd3ecb0f646893b05e00320301a8013880139cf27 5f0bccc99bdf7b43d3a15c440bb00599870325470c82dcb587f4988b59a1383c 00000000000000000204a39a801a2642640ad58c6c82f69360e265bc8380ba83 +407400 000000000000000003f5d63b56d616b41dc526a354f28a6b689e149868616e95 b34c1bda8bb951fdd7b85101be1bf1cc0700d174315c9c9768b6c444dcf8c862 000000000000000001fe96519739699f3df6d9a841c8b4e15ee9688bba23e9fc +407500 0000000000000000055b3d044ece632235dd9d975be4133a6f2e194d3f572f00 09c23595a1ccbe4400e1e94bc3e63c9bbabf001fcec45aba0f4e7515d951d96d 0000000000000000003ebedbd09854c1be1199579002af35a6b76b4366c8d0c0 +407600 000000000000000005596414948cd80f262c0456573ca7633c89322061bfd50d 6ebcf25fc6431401c30c076185609028e9a122ac5c72fa2f3629609a3883ad8b 000000000000000001366ae059b1f7de11e24bc5404b1aaec2da24b6cda82764 +407700 000000000000000002825fab61bca52aab5a02513b265d7a738d950ce2d74394 f4e8ea4d1ffc1d5600dcff08d9bac3a46c83c73684c19f4535497b6c3e27886b 00000000000000000208980f05cd6228164ad03db986fc165d016d56b2ca33d2 +407800 000000000000000003768354e0ddd921ffee3b69de0dca60eed5594856f4fe96 6991a16a64366b87f14a1a7590eb6885b346317802a09478f1e443756453a054 000000000000000004297a61fc1814e557896b19319e2b8433bf0c26b977fd76 +407900 00000000000000000391868de3381e4bf13590b46d18bf9d9d1dbc6dca8a295c 60726d2c82b7c105abedf25b19ab0337d165a006f6cc4353203f60b28af77d0e 0000000000000000029abed9bee058b014c1a95c0cf8342e70f5f93397d97a6b +408000 000000000000000003cc3d3e5b5d9b577b83c2b8d6f4257398c8f4aa8b2be649 a28d08ef886481ca3d6c26cf7ce06a6db3fba2f31b9f90722eaa7e95ca359599 000000000000000004f62eeb625ddf5604eb9c3d9e5f214b643d23be2b83a99c +408100 0000000000000000000376f43c3c0517a01ca81d93dab6a853da88677023c4eb 6742f3b6684a5f827991610c6be8a8b283ff27f5ed9472c0eee536eadb36552d 000000000000000005a675d704791500bd024e9c0731d2379189524d396a0b13 +408200 0000000000000000045c3bd005dbe9a1054e5e27b2384e57b260cd51bc2fdba9 7014ae8c61120ac0415e5d05d392c6a171ec0e79d420f19c7569fc8fdebc6449 00000000000000000261ff0bd2b81876edf0c9502d1b7a1490b527ab92ba4c98 +408300 0000000000000000059aeff71176edfcbf1f5663bdd31688f88f3b7309d01e2b 18ddefc50588759a372af4070e34227ce821550e117cde9bad533ec331195dfd 0000000000000000017a131128a73f65bb13e78b8927ba2d35e0302a1d1dd6d7 +408400 000000000000000005373782c6ba9f00ee8f4da1377f8bcf6be0d56bffcad252 94a93a23c401884cfd5b55f4d347ea9031c82ebd09857a54b547e8dcf07cd1c6 000000000000000000565145d69653f74c5b7033e13bd83e768eea59b764c5b7 +408500 000000000000000001abf6c7ec077c3a5123b2251d40afec01a7df9877367ff2 760e8c0b1c28a700eae2cb650ecf2083a0dbedee215ea36c6bfeb751846df8b0 00000000000000000179b25739ccaad22535a109f510143b14c59dd9d18e2758 +408600 000000000000000000511f446d35aff3b94b65fbf826ac98ef66bfd96ba3c249 04e78ba4744c771b7a3d76ec05a6f19ebb795806fe4ee7a2f4d928286b630cac 00000000000000000356cdb9474e83d72dcfe187c9195fcf04a99c1a17cadafb +408700 0000000000000000043c6ef372924d1420b3fab4edb86b029a91bb39818e0d94 a61b0ca1676f06f1f1aa45904a34e9eac73dcc794c1f5efc1674950005cc8db2 0000000000000000046dc7be8de5731855763830259026ec6f70a429b2549800 +408800 000000000000000000905d2b3c21394dbedbd4b3f96b9e065c5387c6272c72c0 350aad509452a0ce2a7b2382625aea15b11d126f0659e2935ef6d49ed90a6f7a 0000000000000000027e908f075d8673cd6d12f1ad249600cb61a0ca3e2451f1 +408900 000000000000000003d90ca4ff568b899aefc6401c310b00d17175323a2779a7 29ec6328596a428e63cf70bb7c3b8241fc4ed79a81f911a52566fc4093cc9096 00000000000000000064be94fdbc7b24469f884d6e4ef37dc15d2dcc1d5433e5 +409000 000000000000000001a99ad75d398311754aba654bff3111f3d3f2701ec8e6d8 05c705717b5492ae9dfd78eb7de302ecf58746442e39f875f203c417a0430361 000000000000000000bdb0bda5a935c13450ae7727770b8d8e6ef77f86744fca +409100 000000000000000002f25e59c6c7bcf64e46277d175cb4ca19486e62c7abc756 2e27bbaa8703776c626140cea30060108e7df37878162275954f46bd44e91cdb 0000000000000000016cab109a6424d6faf503e8f48302672b9176e60c28ad51 +409200 0000000000000000017997abbe8563a3ecb54c776d1e27189103c4c7f14f1b56 4317931858d0cc6fb262703c6483f091b788e17516dfe57aa1ca7c1d4010664e 0000000000000000050414dcf78d468e22ffa8167fdd9d467dc6c123365ce883 +409300 0000000000000000008b33dc9621301b8dff595dc145a6aa67c922e2aeea657e adce2a4e85135ac69cbe3c82ecbbba35850a998927826ed37f73379daa67d45f 000000000000000005f5b014a251bb11c630608e774828c7d9ea7bcb9cba2d26 +409400 000000000000000001accba77464aa1b6aa8b347d6a92e9de2cb863f1da3e7c3 9c1420dbf531c1c850750913d1b54fbb8e3f0e98182473a3d0fde5c84fa11104 0000000000000000062227fa72600cece8d3c30be2c75227ad4a469c1e98da0c +409500 000000000000000003da4c6b0a1d089b66a8ca5d1b75381bb7b9a13ae8f144cd 504217e4fb251a97a751f02990eaf30b2b2219e3c485caf6d27bca745b30dd3e 0000000000000000028be0eb3b177a95a40b8232b7edf066739eb90bb88f228c +409600 0000000000000000019c74c90f12b0e7ba203004bbc8e6ba1c49de9393f9b0df e4831ae3d166369dec60d4e5c07ceea02db0bbac5a55c3141f781bd202d511db 0000000000000000031c9207be2a5da4841e97babf1a1ff3b43cd070bd2ae142 +409700 000000000000000000f77a89fb68e5aa22a9119abe11d4d3c44e36f11d03a9aa 4b3fe0e716106be4e55510d8a1ed8d6133160176b43130a4fd91ef4d88de16d4 0000000000000000007ddb71f71965cd0e4c0dbbde8d2eb2a8a8f7cf04095c0e +409800 0000000000000000048f984d2fe73dcbd06833cbb6f34c85e69ba13f6a209dfa b6016e1eb9ab27289cb505279d2c3a394c13091ffdfa2ad6455250b6c90c74a3 000000000000000000dd40decd1ec6a3d79b5336715c1f5a69bf560c0f6c9c26 +409900 000000000000000002c827fe2456fcf7c4df445cfb380827510f64d0ea50c131 4505576463ed6c4b6cd0a15f2b8200ec50a70e5ac23b40f5929e9d99487268c6 0000000000000000042537104301204599b4859020b8ccbe30ff864afdf64dc3 +410000 0000000000000000060d7ea100ecb75c0a4dc482d05ff19ddaa8046b4b80a458 b2e513b94c5fa06e9ca457ea34cd22a9f8ac7407a17660d5508089d423c34ad1 0000000000000000031a8a4a11a1680a6c78193bd0e6af2d5ca006d6f2b07757 +410100 000000000000000002c3229ee95a88f16641bac84d8d2cd73ab42af436fce36b 6a7eccd5a7a5fbc7766c9bf79795234e815f844bc92d1c69e2d2c60687ee6215 000000000000000001f55939e31a286ba84aa68f5e3836845a0f69c749711050 +410200 000000000000000005ed69e59bd7ab2a870842e9f27f80019d21530ce74f411e e093ce0db0019b3e4c9bd9d4346e9332bf8b74885697b6ac70de4024e26418aa 000000000000000005ad3be003999a60b6aca2896753d6d4fdd6d63878030d8e +410300 000000000000000002df9b832fc8d5e0ba9df2859d704f7a442f564105334dba b23ecba2c1f4f6ffa488bd467dba7f295c753fd29717ac8e784398518e7ce7d5 000000000000000001030f2624ff2cb68fe8cca53b09f790a64e260e44b6dba5 +410400 00000000000000000470a32d40180041de9242174fde63e5cc1e011f10c650d1 05eb43c3d0db295819d7fc667921ec676a8fc1f9a68b365bcccca5a97f81ba4a 000000000000000003e90f884bfbbd7527127ca6e1924773dae8cf8a11007783 +410500 00000000000000000208f17bcea7376dedafb5a8e7a92a17bdb423b9f9005f22 cdacfe6ca9ae1b680ca8958552fa66b5ddffee0abdff5ef8afba9a4104902226 0000000000000000019744a0b16352dca8181605431af6f25dbe95f38403dca6 +410600 000000000000000000daae1c2661d3e7feff651a787b671775e80b5bd10b7c84 4b0bc92142dd8b5e125fc9487254faa5121045dc6da331d51b0ff6eb432f9849 000000000000000002ed8596f321cfe488a8c63e18501b44507001e74377957e +410700 000000000000000004fb23d2bc95e247aafa36b77a2f636c9d30b6074c03b6bb e1b8d56c7e76ebbbf7d2a2dbeb9e927ef54d8601f29a45ce98a0ff2a71cd8b57 000000000000000002c068237564302db0ee8fd20f80e083a91916daf6b44776 +410800 0000000000000000040b3dd4a75557b6c46a864e4e1be7af2bb361787e2166e5 22aa8ab6bb372cf6bcf757fda8d12c50f326611ce5a1f59c919aa32765cfd28a 000000000000000005b3bd057d127218ceb0f6c2c8ac10324d04772d48eb1e2d +410900 000000000000000003f00b2ff11e9ad31f0e5cc3ae83e07ef3d380b7407c7425 f4762b8fc60cbb39f5404a977b3fe0014873c626d5ee658c662d977e2711b61e 000000000000000003b70ceb2237318196debc4a3efa6974d7800cb931219c1e +411000 000000000000000002bcca81431f7d50f719830d1e04544cf89012ef4ba9e2af cb6ea5d77f180058cc183f5f239a0dbad997038376657d98794baf25166c02bb 000000000000000000c2557733259f2689e5ff6c64495d85949bd7ddb055037f +411100 0000000000000000047d18bc4162476f6d05d3381c6e3c8dc96de063ca45a6a6 62958c02e7b9ab704f5340882cf4d50bcdf98ae01416a910ea9f2ebfaa0ffe7c 00000000000000000492033b975020020a9faa849f74ca154d827c40fed941fb +411200 000000000000000005efcd953eca0f2b24ff9cfb9d26c651efab5dce7da94ce9 5f29ddefa55918bf3868eed19046da3d8bbe64ed8a435ef7fe97462d84a682de 0000000000000000002b27d70f5b0b8f033f4f7af95878779e62b8d387e46db9 +411300 000000000000000001a3079487a9b24c8169193c357b18bf5d5021f14cc3fa29 fa5950d75c2a26685101d59714474fad8e54424f6f613c0f9e5d6a093bda5fe1 000000000000000000b9d8d41163087d3300a013dcfaffe3347c87bedfe81aab +411400 000000000000000002303d4d13753dccabcdcd33ec4a2adb1fcd5bae29593e30 b2aa66929e50b0a9ac19e189616ebc5a93d617f6b12ea11997146a4d20e34fcb 000000000000000001d564bced3b955bd05f16ab3f3e453e8d1aabf00390546e +411500 00000000000000000258adbacc58c8acd91d492943ad64ab740ca5fa74b7f2a6 92508f924ac08decacdb806bdaaf2ac9fdbc46c349a81182d62970b7e60dab2f 000000000000000000410544d7cfe8f90b81daa1f02469a40be99e455c671be7 +411600 0000000000000000000f3fbd85e0006306861e9ff174d5f4f4a7758d0889ed88 2c971a1a5e1800f24fc07693844aae9c5788d3f29f193abf47f8d02bf5d22c2b 000000000000000004376eb2c82df71b423146fb115a1517d8e6c6d95664b0d8 +411700 00000000000000000380fea2e3aee359569fe8d46ce18c05faf0a6dd71c6474a d9060e0399d1692670a09ae789f20bb0588f18a00c2afac05e5c31cdf4262b09 0000000000000000048f9f0851b6c9a1f5627ab1b4bccb136d278f5dedab5844 +411800 000000000000000003a62e908495eec18c1a2c3733ce9f1e55b7bbbecb37320a 99bdad4d24f2e560c1edcfc066c511d4293dc698d51ac28ea98144445471b66d 00000000000000000044d9bfc94f9e8ef6b61d564d16d140cdba41b7fe4292dd +411900 000000000000000001d6361a20498ffe1eb7f2e28bb863b9ba58c6647494dfd2 ed2c439fbe662f7f24a4ee80d0cc64408dd0c0ab6fbfdad305385d8f75cb0719 000000000000000003af43b0e057cf4f5e9510ca9014c697e25aad5d42e92199 +412000 0000000000000000014dcd1377afd27d3cf2320d32e4dcdaf21c39d293b9bf23 0a1fdbd1ee2eda58ee4431643814d8d188547622362d67009dcdb801f80b9454 00000000000000000323da2be6bfa14499c93b99aa5e8edd1a4f7b6b32921aae +412100 0000000000000000021943947bada10f9bab0ab766876389b2b214870cf5c0e1 c66370d6f2a11f076e46b4efd66300e00b571618941631ab23b0153e7cc1e984 00000000000000000451d5fe5b0abc97aaa0fa5438125b985c85a4cd19293f24 +412200 0000000000000000049f9d53f901ca0ae80155c2c55f2cabfc5b0f39a1124307 d641b89cd7c0837271acd6064bcb71457b3ed5c6ad6380635cd65436d9fc7a9e 0000000000000000045532c6c60d7dc302b1608468600a88642d0b22d20e1fa8 +412300 00000000000000000521de356ec334d3cdf26f6c2fc633c78788b4fc8126d682 cb9e334371b8ab6355106c03d179c6f0cba0303a39bf7d24bf84174434ef23c7 000000000000000000bbc5f813f99a5e8fa1de1a452779835d0ec383a99d1818 +412400 000000000000000000e265530c67d2d9ab3ce948fa11ee4837c6fa001ab044f3 d0c533b325270cce51ee090233d8b624cee0402f87df085fce26c61eadaa59cf 00000000000000000202bf16b609501e7dbb7e067053af4c538fde93052a4f7e +412500 0000000000000000023abfa79582fc38d23bb7dcc7d1f01200aaef31df8792eb 506e73f106e30f3a87640e0a6952227e679e30b2a7c331e71f575ee72792bbea 0000000000000000056af5b61d1d580be78fb847fe540e78f50f78305bb09a77 +412600 0000000000000000021fc383d678f66e23a14ae03ef25416a64376d8429cd47b c1eceff157eaef791754895df2e59ae971b71e175f1dbfc39bfe08d2afca9cb4 000000000000000000a92d1c92050ac9e59d71b2dc6e3e520a8649afcd5309b1 +412700 00000000000000000180eec6b0228daff198e33e0f2eb210aceac39f43fa6eaa c4fd2e635afa29635acf7055017e4b0896e962fc01a614b86f37a9cda4f7db76 000000000000000002125201a5b4c7e1bcad761818c453f8bf1012bf3cd79b94 +412800 0000000000000000031319fd379b7390412748353daf04af1e77e26f0682e4bd 6056bc4a5811f8901dde7673028bd5cbc52331021f4c9aae95ab43a15c85e6b4 00000000000000000357a4f8e165bd0b1c37fa6941e9be18f551763a5ac19f61 +412900 000000000000000003148a25393495ba964c848aa6310a94d7e9502f76d82f57 90e52c1acb47e242462af98f65f53df6ae45b96dd3a238354ad41aa0234024f1 0000000000000000057d137d4e57ba70dfbe5d3ce4439fec5b5b77a8b4f4bc70 +413000 0000000000000000005bd52259cbd862805e7fc736c52e46e10557feeed2b02a ad77f79ade7e84ade139b0321132bff7ee9567579c14a724a4dea6379859c363 000000000000000001068cf7f5b174e768261b5d57ccc7aea8018eb23f08e42d +413100 000000000000000004f0b42e85d000834551e759674333d5fd5d68051d294fdc c7395fff07680195b2ed9abf98d3e3e5adbfa571e352ffe7cebe9c3681520a8a 0000000000000000002bab599d834ff5806b6966606b739f70c397264a74eeeb +413200 000000000000000000ceeeb53d4cdb85c822f1d08285307cd0198adcc2221a6e 603bdce9b84644e180eb4e3501eb09df7a00fb9c0cfb1f01bdb232560507563e 00000000000000000278fc6dae4f6d14ba7b4f71130d27f34211490f12c8518d +413300 00000000000000000507d44120be30b091a1592d2a07024e4438241296bd9ccc 8a0a885abc60d7c626d9d942323840e3779ce01d6e0ec4a4dfff3d5ac277b545 0000000000000000002330b84110f117f5e0d1a27066f69d17483f5cbeefbc4b +413400 000000000000000002d8f8c15ac643bfdd49b2e4fc418106eaf784b72de0dd7f 420b9ea0c81b80f6b0005038293181d1f93c4e9bd7e7a1409d894e81ddacdbf3 000000000000000004475423ca0a206308a6079a788ab51a3cc73102742fb7ec +413500 00000000000000000334d3dc8cff93484374701afe3a766f79f2b4e290b6475b e86380139558c7f82e5762f6cc265d344c7628f891b1e992d5c4f21488206222 00000000000000000560e84525d625f1fbf813683d1ada037d25eae405810fb0 +413600 000000000000000003bfc5b5f6d85bab153fc8a1cb46655941d6ec69620a8735 cfc0c105eaaa3700f97350fa13e90d74ea0576a6bd535413ff386236a498d781 0000000000000000050ebb0a5b493d557f0ddb24a880c87935fe94817afbb3c4 +413700 00000000000000000448ee09360b6363d9a32fd623ca2fa299b6bd9236df3461 e4548e257f7f4a9db18acbbe332d5696922830476780119aea7dcd15983c4639 0000000000000000008b19623a03e1156235699b7e2611b853ef368996331e63 +413800 00000000000000000472fe8373424d5d2eb4329d3b21eb24c2e1f2d3c23db59e 6585b35e93d0778431b147d368e90dd1ff2652758cca08c71a7fdba2727a375d 000000000000000001257ed32428c2b30e44ed3e2033b89c898de453848d961c +413900 000000000000000002ac910ea9a7971701ee2b93f10a127fcacb60dff104aec6 5e5a60dcfaab1dc00ffe9269becad19d30db7e2d50ff1cf2e37e40f775dc5d1c 0000000000000000013bcc77727f99e291bdc43b1c6b4cffa3bb179fd947da0b +414000 000000000000000003727e589ce68495058c0bffb20d98656a7d875ea1ae7796 0cfb2d8e4ccafdd75b75a1a6d6f53b40d16f5dd5fe37209bbe01ceadc6178222 000000000000000005814969a2106f7c16c37f82bfaab565c9493529df162a62 +414100 000000000000000001ee4a8c57d8345334fdeead77b1a5426e921b3f18b13303 1a80e2ce7d2290e5ae7adacfc350ede639a2b0282dd0c58a9c301f23a14c1de4 00000000000000000180fb39e9d7555de9b19fab6f8872bbc586e1cd2fc11e06 +414200 0000000000000000032362a792570c0faf85db2fe78595131c21b2a69a261472 05b45a80ec8e6bfd997a4c787efa2b2ec55ae9bab485b74b4671d5833b45d2ef 000000000000000000ea37c4110c75261f819af8d6f2592303c177279e508f5c +414300 000000000000000000256e7041bd22551528b760d5c07c71b32d793ef51ed497 a8819e00ee426226bd5aa25488f6e94e73a2f7028bc67d5fda49099970ec33dc 0000000000000000011095b8305b0c587d4c41e3fe826e0a19b7209da13b0a66 +414400 000000000000000000f5c00d08aa7d5d4807f22476d7fcec77a35bac7dd1218f 19ce2e9735a962b12f6be0796126f82542fd3d8397f4ae8b316cf4b1fae5452a 0000000000000000000527796144f3bba462c33298de391cbaa0e30afd601342 +414500 00000000000000000407dbf3f10f99a6d3362a1784ebfbb2bcd798970d6db0a3 c4cf1533ac91d1e92257dc9de98bd4c0ba95045a0d6da3b15d3e7632cd4dbc77 00000000000000000544b9433ed5e1f8c5cfc079a8d9e859a6c7bb7b2d3d6e69 +414600 000000000000000000620f97b5224e37b39eec7f50c11d3c8d9d878225c8974b ebf07743d5edd23bce3fd2651571244003c43380948fa14ef7ccb0c30c881e31 000000000000000000b0a7ad3ff294d061e63cb0ee737c625ad8667e96d02eaa +414700 00000000000000000312c230a431c78aa612dfda347267d44675e38dee357494 a87158f6c5d8c6675ab57369a3de3bc5e2121cbc52e9691e9ebf1afc50f6fd3a 00000000000000000299a44b7bc11e364a229f71371dd582844b312bc7a68553 +414800 0000000000000000039755d052be59a6179eedd341667251d3cc22c20fcd93b4 3c29c0e85e28e3ef33812eb6bf310d24413407cd009c84c2e1b017357788f3ad 00000000000000000358cc7687b9e1831b73c19d08ad135b8ba13994763deee4 +414900 000000000000000000811962649e07b28cc57c1fded6e25abeaae71b3885e144 d7c972ed3d63c3fa7630267799fe2dc3a8ae86b738ce97934225da67b6a9c4f8 0000000000000000010276e6cea32c47d03e5f371fc4b0ab4926b66a632aa73d +415000 000000000000000004379beb807b12d1aab03c02ece6a6d19034cfd19432d444 af77512800372f4b17737e8d3aaafcfdb7129a1c6166e91b082e23e57caac5c4 000000000000000000c85c86135e5764f8aa94f143ac981f86aba0e68e75c378 +415100 000000000000000003199c70ed4980536a53ee946bcbf0bfb2ff56562dbcfa9a 04177c6008d9b926cc2979929d243cfac2f19d2a9d71aec95453f7443cca7058 0000000000000000040032f307f8ecb5b1581e6d4f0ea3a9a4b6ca6057940ae5 +415200 000000000000000002e786003b68183b14964916e7ab0392a3b367542d6f0514 a47e9a63295f5c3d8b41733679caf607365028389ef5b32e562b124a7922b85f 00000000000000000400372b8bdf88e78dbc95e0b3b21b10f4d61dc8f3b11837 +415300 000000000000000003dbbba422d67eed9a452ddf3c82133634d965e800c274ed d1c847db10b8cdeb08c4a751a029a1cca06c1fd0bc6d43bfc871f44526d49e51 00000000000000000574c5157a61b7b90b6607c37eed2588ec8e06ba251be092 +415400 0000000000000000050525e49d0241e6d7d11181f882c2cbb6dd4fcc5303fa74 7362254544006ecf4cdd95770666e139359fb3b90d8f6493810b5ebeecd5b564 0000000000000000001856e119c0b08cf3f570eea01c761bfebad81679a28fee +415500 00000000000000000082755a016ef227bfa6b116b4f306305d414cd976363656 06529f5d181922ecc74ef4df224f0e762a3c1ce586eff094e86b517b02596f5e 000000000000000004acc9df30189cb5e1ccc892e097b3dab2f589ebb8d39a80 +415600 000000000000000000ab33f0a763efa518296b082ee2f775d0d5a1be0a4befd2 4ca4bee94b228d701b52f9a9f57200e2051e46fe47e0b8eb29c5773b9c9cd09e 00000000000000000073ceb18f83251a90ea7de27623e2c91fc2e21bdcbb78df +415700 0000000000000000049ea8ebd42b46a20301e09c9104174054ecbd727cc3aeee abee48a36ebafa96fb9849206d85e1899f6b644e041f1c60690294cc5a915ab7 0000000000000000012689b939268fd256b71781b9cfd5e1b9a588de8f5ec8d2 +415800 000000000000000004739f22679db276b101dcd70540a548efef16d280874b32 8f9bbc6feff5e7860f03392648584c848d73ca248e56e49bf94dbc999d77e340 000000000000000001a696095e9d283d6f1053e48d21ce2fe67f57515e1f0fa2 +415900 0000000000000000021fb622f298cf187aa1f108fbde93597b5047cbf9045362 771cd67016800b597d6bd5ac19e03fda8570e217be6967af8d73e6415e48f691 0000000000000000017e8a79deb59ce62f599b724c61a3668a2b429ab1d992bf +416000 0000000000000000057799a23ee01dab5d6124c3bf89bbe8751cf792e88f0102 774d1b1b30d48b2f737a9d13587618f63774b2c5a099f59c1c6e887d1f464f35 000000000000000003c46614727cc27b46b6175e1a1cf8569a031a3350e47cbc +416100 000000000000000000e67598529210400615fa143411dab7a72eb04fc5a4485c 210dace8a997c0564a2f62a86e31758611d71b88e5895246a4337765be52a9cc 000000000000000002972b6e20cde65cf0ba6f438a9931e2a0dbfbe13e3f515f +416200 00000000000000000390bee92127564bd0c7ba8319d765c42c2d455ed37e13b2 2536c9c6d36cdcf965cc5207d67183c50471f9667475c9472ab0ed0ccc450f47 000000000000000003f9f781e47922be08a3e3e743d8b1218188e8146b3b726b +416300 000000000000000002d80fd780e51543302c96ada89840467a06d1a46ee36fac b8c9ab831faaeebfd18f5f54a128867105f2c5d313544437a00e6b2bc0fe839b 000000000000000003950276def30c575cd9d693c5ec97772995dd2443ebb0bf +416400 000000000000000005244040a41793b9c7abc22a315bd586639fbe2ada881d4c 86246a3ef5486268c67e53e863b0e23374e8f800c306c2853e17ffdb2cb7ce7f 0000000000000000010ab64551f053b9af4909773323be822a36eb2b652a9d6c +416500 00000000000000000330dc686da032f93d7e1d8d46edc65968189cf3c640d7e6 689cbc8c3d7739ab8d48f98dee1fc058fdfcaf3b84d65478fd1239f283c9982a 00000000000000000542577706fd75dd820cb12f6a92e3fc8c0526758b143f8a +416600 000000000000000003898e25f508017e1ea0b6ec51df3e2bd1f48b85a6e91ad2 6978697891224937bdcb16a6130fe23eeb2ee3639b90324c7f72f3aec81a8091 0000000000000000005fd7920df8c4666a13c9614f6f9c85c354ccd7311cf490 +416700 00000000000000000249504fa70a995c6b841e48f1f7a53dd2bc6aa7a1d023af 9dce3c4d6d3c3e0e486281726107aed12dbaac2760aba277612856e7f04ec0ac 00000000000000000392a51511e801f06f95bfe837a1531f41dca2431eb23c76 +416800 000000000000000000a5266f4b458fc34a66007f899717072cc0e88bb90e4a4f bcbb0703fc5e1457b51fd2413bbe29031e6eb7fd53c58c5fa41e475232650760 0000000000000000040c60bda451f254ac1aa1bd6a311a3b71337083c468d030 +416900 000000000000000001758d13f0c946c4094ce2d71a950ba390c510c6fb1dbaf0 872a19ae160019672b0893b27e5a290bf16b11c316f79f380f64c14b91c2d6d6 000000000000000004a72d142498d7d383f64d0d401308533d679287a26d0eeb +417000 0000000000000000050de1737c517d9b43209fed81df6bce7cbf41d20e915d6c 71a949ae6a04cd0dc47e2d773c450f6ec82822604266f45c2c06eb7e6410dff3 0000000000000000042f293d4617d0eca07fcadaf9d763a24edc7ec562671f34 +417100 0000000000000000054ad785e6368be2f11f6d5a8532be8323130b81168e0230 95287c09251f2bcbf6f54ba184b2c2d9c6861867937ef4e66663bb560344cbb6 000000000000000000c26bc09eef8946eb0ff1bec74e7cacc5cdf746006cafe7 +417200 0000000000000000021ad928d00760aba9571f93ce8cee7ab70e1ee1b7a28bab c9e233dd79c95e0f197efc86c2804fed5c2a96aaf12ae07277cbe12f5381d44c 0000000000000000032cfd19c15949fe88a3ff87eb560896f68f6e017e033990 +417300 000000000000000000d00911c00d26abb641d6366082522f5562f715cde92d53 50cd1b1e709ae557b1c8460f7008dff13f8566e1b403c1924784c5c4db23a3e4 000000000000000002eb771ceb22b79af16b812e9f3827fb645023282d49d4a3 +417400 000000000000000002afe70fc0fc0672fd1f1c75176099ac348f809ed7d935d7 f190fd5d7985b412e414c2009aef07e44a8fd30359f8813dffb32f9318b92457 000000000000000000c5ab789f6209ed066ecc3e642dfd3b8f2b57a52703eff7 +417500 00000000000000000071004f51b97d1e4a94f4f92a083f4e0e68ad6094e81d26 b44d6c8f08350ce23ce974c400946db455998180d863503cc126abb14230a9e1 00000000000000000113590532b9716f043c684f923cbb1d77d3ea12e7371c76 +417600 000000000000000002a611857e23461c69b6d0dfc6136769e3f2146ed6bf1520 689d9ef26bb79c98bffd8eb59e3e977dc797ea994677de3edb9917578a8d8827 000000000000000004ed1c4c0a0ed42eda70ca225479b605bf62b40bb9da7e67 +417700 000000000000000000d0646151017bd1a1b63f4e789e4e010cdd7c0460ac1d34 02dcc647dcf665839db59ba33d3e987ec6d9f06e3c1b825abb716883c8763aa1 00000000000000000344d098cb62d9ff3951e6bee0d6898e04a8cd7ee67da371 +417800 000000000000000004a5eb87aae0a0fb62521fd1065911a3e6a44b65eadcc467 7158abe90e6e33e35c1b442ae94a3d435196bf905d36b097ee8e2964ad04ae19 00000000000000000094cbd08dac259039ce1c055a15e147307e92de995bc397 +417900 0000000000000000007f5183c71636445a510a435b9e00dd741b0a68247bb6c4 1594f5521a4ad098be213685a8ddc81fd921b69be81f139100c9d666701ac662 00000000000000000428a4cfbc516f49bbcb845380adf62563d5bc36dad48ad3 +418000 00000000000000000013592fb504656c5edbe56a8fcbb79801ba561acb07419c 88c51d3c2650f84e54179ab6eadebb337ca7179f8b76122f466dfb70d15a2008 00000000000000000145d4625d38d58a32afdd3aa3467bb610d1e1209b5a9b1e +418100 0000000000000000053ebc3205f11bae37de7db171e23dd57eb1af38d37286e3 a6209463122dfee05332292369aa069da450be00a16d4d1306cf6bf57d978684 00000000000000000076313aebf0d364b48748034f14824d43d70d8bcddeb6e7 +418200 0000000000000000042bb2667ebaeb8f7e14664b5c1dad34ff0772bce75739e9 99e675a7bb319792b19ba98ae4e3d09b92ec98342ced3f0b539ffceda72fa681 0000000000000000032250056fb534d44fa5734c49b212f6094c075d75d65a69 +418300 0000000000000000035f17017196f2cc2bc7fe0e0bd255d949ee757a97dcb2ff de3104ddd64a97bf7516907fb0a4e97a84b2efd62134ea75e220593880a6006f 0000000000000000018cd472e8e5a22cc432c97063ecd9f3b92cf479a25cdb6e +418400 000000000000000004a5301d2ceaecc5104bf8b43e2226f9a43dc8223a15de73 73b197edd8bd5238317b319e57f7e8711e5d1cd81bba570e79d4070ded1c26e5 00000000000000000269d324807db347ddb1af178b15756d7c731d6ce30836b2 +418500 000000000000000000ceb02b432363a5c405109bc8e28237581b6f515d96e400 015b7224b281131f19910ae5e77d5df4f9b7df381dacfaefa02cf3decaa554d8 0000000000000000053ae59286e79df1b856cf2f5279f0353080763c0547f42c +418600 000000000000000004c38ef82e342a7b41b09e263e7c20c232075aeefd272af1 5cc7ef1ff1e7d654fcf7a90e33b4afa3718560b2616120b7156014e8dea61dc1 000000000000000003f44296211f5d66cae4d5163e65ab8b5a8ed3dc639b4004 +418700 00000000000000000199355f9c1a98a3b40582d08893da553ee5be1cda4054f3 cb56d6e7922fea9b04f4cefa169f59c2a77bfb7ec6f5f65c906fcc098359194a 000000000000000001ece9662372947b81cf8f6a545e4a0f82686d5d3810770c +418800 00000000000000000205c8b5d799bbcd36a2e2868d802ae62f23e4496ddc0776 c8dea2a0c7d5479eefd2d9f5602b58257fc730c9c2b6a49739c7ebff8b2e17ed 000000000000000002c72ff94c58fec20dde18f3c90902f19e895f3db8a95f24 +418900 0000000000000000014fa804fd4df9a6d56043c649464b62d6162ac4d819a650 d0067a1fbeb3d3ca3738da3ae8bb1c340da3cc3a43e605908fffb5431c43430a 000000000000000000428a0bb02fce0cb5aa7ac9b8891781e7a71bfd87508e33 +419000 00000000000000000051a164213bc4f1fb1f9ac014f92a6993bfc9fd4206d2ae 8a933419c90c824f701cad615e11515e16fe7be8cba43ed8874868c44f7bd357 0000000000000000018c391378d1c2f99243f33f02d2db23c8a1733229ef377c +419100 0000000000000000015c26cc28f64ccc723de922a2e17c6d2a340d78f4e3a628 5eca5c494f8f4ae91ade4e49c0b17da4b00964f79b055247c06d7ef1a7edb498 0000000000000000033de2ad475ad155d7d2a2ee2714fe81641891a523e568f5 +419200 0000000000000000026ff5c675b958e22938849781f1305092ce2c34ebe9e1e2 5e0651dfa4210de64e18db27431ef63be32f95573fa5b54e255fc03a4cad8727 00000000000000000413c1533cb3270e862a5adfd675e0997556069a19e0aeed +419300 00000000000000000270345ff7ee7828e60b120a8ee8ed1a61b36cf6694cf63f fb44b1abfc5ea3609289e4b0bf3322be105179f8d4a55a28ff8066fe6e548436 00000000000000000439f1be6728e05d6c4d41dc803f6ab9ce8cab8ed161545d +419400 0000000000000000034654cdb37df7b7c1dd1854a0ded6b4b9390c688d17e1fa 836991d5b249a8b7edee5d474b105409fe4f607132fc22cee9fc6c2ee27ed984 000000000000000003285042847d5df7bb7c93fed9975d09dd308665cc83f2af +419500 000000000000000001a6eece4ac7b37782fff7a68f5b94dd8e0be25d9bf45b21 2240873b22672ce4aa954bdf565363bf9090ba26b59b60d2e291c9042b5f3bac 0000000000000000006f21272abb9bd6a93bc82a8546cc6adb0d57094ef743df +419600 00000000000000000092c239f98364700bdb273c24040cbad4733c930eb1c075 ce609c7c0c2d11fefb4b500ad23dd687fd753f7322344d60323ca503b8fd433d 0000000000000000021f14da1a3a1cf7d8af7d20ccb45776060c8f308fd7a814 +419700 000000000000000003e290ccdd3ab5b7508838eef207ff5e127985217a4d8928 567e458e0c84ce93f06dca25c69ecb3db6265299e2a1bd145f4032e266c16429 00000000000000000334084cb30f2cf81cf4d57088c3e23a24321fe43ff8b747 +419800 000000000000000003fa501b597e57768e33b34fabc1db4e7504883e8c4eddcb 04ceb6bbede20986848f1124ef146e7343ac4e378438cfd0c922da424efc5f30 000000000000000004e8aa8cf1a93b3f36e7aac9f207c04b090f87fcc7b4870e +419900 0000000000000000032eb0bc59fcdb343c42499f584bcc896057ce2f7507dd1c eb78b944254add6ebee8b8a6759adf0a99d45581f42cfc50fbc6a9afa75848ff 000000000000000001d8e3e0733f9eb8029da2bf0cdcf77dca7a1e716c2959c6 +420000 000000000000000002cce816c0ab2c5c269cb081896b7dcb34b8422d6b74ffa1 c7c8adae5d921d6ae2988dfa343da99765ee18676b3082fe7d9d336d5234ff7d 000000000000000004db7eebf333b81f2529835102f7f7e86eca889287148885 +420100 00000000000000000040c02a19842be188293555304561ffcbbe021244e6e0ee 2380601f4eb34682f241437347d86d1e9742e2aa8c759eabace5730c71afd5a2 000000000000000002949807a01d81cb46a88989ca9b8379f30ca9dc64cb4122 +420200 0000000000000000011bbaf9241596fa8de094b12c344d7b756cece7f490a509 09e8413a8d62d260d1a2be206f7d9bfe53e8f715f7df3b8084d9de2332765ac9 000000000000000004e4839555c9cd6c3782ba153447bae1ef74d34136644300 +420300 0000000000000000017a859238351b59b11f2d79bb1f66613c5fb460fc0cb595 d81c27bc80b9294f6878acf9aeb5fe0cd913ab24e2ad32b682c2a181516c62a4 000000000000000000d70363ee4b215ef3ff6c2717097baf3713a64c9481976d +420400 00000000000000000358d463cadbef09967de2a379eb36a9988c31b664b6a4ac 2d0541d99916fcadf76b9f69c7616a9a6d6840e4dbeff3f59d41a966791bb12b 0000000000000000035cca49469652bbc11a6f8acdf9beb1fd3d6a83d9569482 +420500 000000000000000000737829e57c644de31353c1e11a5e30454fb5c56deb00b3 94db1437d31ba1ab5324857b53ac5c0f753060410ce39748321b6b9f76c26698 0000000000000000046fd08b40e43d3bd30dbd3c966d85419ff71dafa7efe1c1 +420600 0000000000000000020caa56d6f5294a13ee6ab47bd1b49b50f4215894eaa07b c74cff7c9bb4fa5320334f5470ce1e1bd7170a2dc9a33b9480d147c941c70226 000000000000000002a77e57cddc1abd681f06e86f0d0dfa6d13fab6886dba49 +420700 00000000000000000244c014bca137e1b130b3d21d7f68f7818ad0dba8fd2d5d 3a69502172eb2511a5afdeb72add86db46107c94f4f42adc4a1c7e63267aa36b 000000000000000000e356c5290c42eef84ad2b7c203165a4837e8d2abd266cb +420800 000000000000000002dceba06e4a97286ed44857e346f2956086eca11c4d1485 bccc8c3108aa75fe56260684f1a23406542964cb1e9107363b488cfe8e0912db 000000000000000004918e9cfc0b3330f84546ff7cbf0a7f339f4cd6f2d6c243 +420900 000000000000000004eb30bf95bb9b68d052bd65fdf2a2e3808196a3d8055d27 16a9e8450a2537a7b3e3838d84b23222ce459d9657a42cbdd348837654ee1a57 0000000000000000019e2ca75779964d3aa7c7545c9da91c8833fc390adf13f2 +421000 0000000000000000037b70df8775c69e78190b891309f97cf07df7d590608d9a d9a4b89807c01d3fb9bb16f3dc10322ff12d14d6783ed592ef81795b7170cbda 0000000000000000004ba59ac4494a01c804b635cf8fe78b13ed593993faabfd +421100 000000000000000000a4341ad6d18d5903b0e9b53c335e9110b7f4090ca85ff5 3df0cfe09cdeb7c21e028796204e55a921474f6450334155ade91b2b6f23fa9b 0000000000000000020d90196390d89325bee1454f64fe0fbb4f9408f67ba214 +421200 0000000000000000043b5259c347ca074292a2120bbc4d9682674abf976c8203 2418cf53e6ffa060eb2e16ab65cd985b2d72c91cb87c5ba98bb8d769c4ad9afc 0000000000000000021419ca1d3359ff1cc422b09fbc46996ca176f15ab87505 +421300 000000000000000004d535660e83b68028c91e32c55e29df94e2ddda84f0b22f acb7f6f5e61d9a4c78539028d7b2afaa6b5be04a90faffcf079673a6e67f1143 000000000000000000200d429044e8e78cfe9b05e26ad56063e12a310a266cc1 +421400 000000000000000004f6215d7d39c7bd655d97ea81943f7f2b0a1f20891e86fb 17f62dce8c722ec1eb9237b4940931f63774d78e4eb8c7aa900392f156fb2a92 000000000000000004688059c73d80f18acb817c64c7cf1b6b798a5293dbf5e4 +421500 00000000000000000477f0a315d7402e0dc9829d9f43f916065426d1e9c155f9 ce34e7a7692a48aaa3cd428e3c6b1439af6e113dc5e1369d4f623e0d22ebb961 0000000000000000006ae5dcfa7057d0e2ea1d82a8886394cfa83369c1cef944 +421600 00000000000000000153146998669cf0b0c8f7044481b4ef4e269bb7ba64b880 a8e47ed5c45682a9fea89d2279fd13d4f3471ec3ec3ca5829077fc7e7f6b9871 000000000000000001fc2eb19e4a96589a6f52059b16d6e8bcc89dff5d2a31ef +421700 000000000000000001da886fa120ea9d292ccd261ddf1f583773ac98c18377de ff3976b2e61ba43b4c9433c730846b346f8d51475664d91e0cd417f6a84b53e5 000000000000000001ba790934ec1fce52d8d70067eb5f620728f370c6cc1692 +421800 00000000000000000021ef307dbcf6ad631ec4fc906ed8c1de56ea7e702a44fd 3a8fb5e9ae8c814d02226f1902f4aa411cae5e3af7081f568a8bb5d172d84a10 0000000000000000013323ccfaf80ad290721a076c3bf3a6cbefe245f4fe5191 +421900 000000000000000001c700afa4059eba91353a2545c7ef88f39cd31e5aa1a75a bd55344f0c1e82769f9a45a9c1138bb11ba4f4393eac23fdab1468ab32184eb1 0000000000000000036ce052faf34ecbd747cb6b847a09d8a56191796e0e6abe +422000 000000000000000000bc63425c27548213256efed6f40685ebf4d3da10562794 ccbc36575bcfdc62821b71ada8e71e2cf58b53ccbaed99a44d8f55ce0702e8f4 000000000000000001db165a3ac56a2188b8bbb8e0574de42aae0256d7f06b44 +422100 00000000000000000404010b42e8afa5b9d3f940fc09877d218858aaaf11590c 843bf243d633150864b2460adebaa77f27921032e60bbc528d6a146cebe7c8a8 00000000000000000152dc37f8d427abda33558e6583b922741e18c3b4686c71 +422200 00000000000000000106e3d57b1bf9c09c413a1091030bdc9b3315c68f6f7cff 03cf2597917602afdf8ed2d4c70e649a686b069dfdeb4200e8e565b43e6dbc61 00000000000000000450d2a7e88bf81af8709510beb08321aeed0749faa43f32 +422300 000000000000000001522938d673ef988dd34adff58f5c3b0f85e26b6a1e88ca 0a389ce19acbcb3ef51dec4c5b203dee556c029376dcd6c2b1b33149b5f8715a 000000000000000003b7de8e20e7bcd825f8d3eefd4a1e7b1e772cd8839ac90e +422400 00000000000000000089b5a3ccb4cf8a19c9ccba5a7ac2634b9eff5e9ae17eae e11ed356ad36954b2987f756db0e100e3186e6b478d24dd83c2ed72ebe777ef4 0000000000000000022940471a6a38caacac45d3af0222b625202cbe742c1c93 +422500 000000000000000001009b3c62bde49c1740ef7347ff221935c9553c44411c97 82a6f777c7c6e0242f065dcbcfe43b6597bdf40d72912cd57af86f1db32933cc 00000000000000000415e908b1eaf8c9f74633d98dc80dea56026e5e7a92b2e9 +422600 000000000000000003d3f2a4ade56a316cbf63d10bc4776dbd81119fb8959495 a8e9f656ba01fa125c233f1d0937b1de81201aaa70c8ae7feeb8179ff57d891b 00000000000000000493cc9bce248199006bed00edc87539fcf12f0e5479cbb8 +422700 000000000000000001dc3153e274cc8910e376c7875c9414738e15d6c5a52606 e6bfbb286784a3c3869707d089970451d619a2b5a4bbdbb31848a7abf09811e5 0000000000000000015f89701e53851df9bb6d37c699a0c63fae9055b5429b7f +422800 000000000000000004eb3b87e026101ad1d75b7b19ed465320e42584152df284 5a7f441d98e254f922ff2148994ec6fe37e58633d82de1d6029856bec13bb458 000000000000000000f3a92975a93c631b3958aa679c5c2327f845472901844c +422900 000000000000000001d309b94f5c95c87e6e6292cbd281ff34addb4ac52fc5bd e55d55b7344f7967b05aad3a19946f55147508bb518eb857b4fa9ab177526cce 000000000000000000d66426fc65ab07f1a1be9b62665c49182fc5896c1970da +423000 000000000000000001910d9f594aea0950d580d08c07ec324d0573bd3272ae86 49b607142e9d73d953241cd05b1afaa84ece371206e087da38be811c0647177c 000000000000000000fc12b276417eaee5a766ddae5bc9cda40ac1ef17d2f4f2 +423100 0000000000000000000ce03f88c38fea2e2e2762cac88748d607912eff518611 bf4eedd95e23ebe9ab829a384930227049b237147c4ce95ae3cebaf2d328bd58 0000000000000000045bdd2d63a4f82f5a02d4e379ad7280d816a385c5888aa6 +423200 000000000000000001246390bd97920fb972115d844b8c9db8bc142b5b225342 e191c34f0d033a23b1c1dae4e1de04b23c5e9846b42943aca718ed33d12e49bb 000000000000000002348d00fa26fd411cd85c5a10f97b52a779d835a4a7c09c +423300 000000000000000000ae11ed8062082316d588cb497377a093ed1416afbb9980 15de21c364991e7becefcc234fed7b25018fc2dd57bc115ef42733e4738a70d9 0000000000000000016e1fce940ce4343af73f43c1845e0cc8d158806a04d755 +423400 0000000000000000010dbed37ce4d056b808e9180b26ed9bbff2f873cba81181 dbdc0be2463a7cfea1c30dd23d1d225facce2cfac5788ae64114b6630046d1c1 00000000000000000372463b428e76c2fd173c9134769d933044df2f021a405c +423500 0000000000000000030212569e9f3c52d64621b357affee36458d97ff5ceae67 5fd4849d89ad94ba4a37bf6055f2887eedbbe87f26cdf3cd62307b963ee39504 00000000000000000256981427151dbebb07f6c146343115f691c5e6d223b9f1 +423600 000000000000000001ca9967e5a92e40ff7097eb615f7d9b4fb78a3e074d8fd3 4875c51973c0622e7611256187c07cec953e2e456a4c5d9e8c6543df4f5bfd14 00000000000000000206f3738f99d5c67c18912b5d28de2c484cba720e4b7bee +423700 000000000000000000e8e680fc102dede994c57d25fdf3c52741431b4f3b3067 448126b90382417954b37a0d3faa36fd3c1728e81921eac6c9412e23dd553ff3 000000000000000004bb1e39761bab8fbc2f961cb80948a9ce6042ac067f5fa7 +423800 000000000000000001497341ac0759741bba9265210ba191af85ac93a4903d0b 9c76da7137555a86e8fb89f1b8bba38f610fad66e2b94a76b4c51b55f972455a 0000000000000000042e4bb3edefafacae9dceb64bc8192d47deb9fb6e6aa32d +423900 000000000000000002cf04729533553ed1e2f47ccc9e7cd69722b3166ade0235 ab65b823c9908eb00b087ab58a8c206669d0a5d18cc1997e77ccea83a558700e 000000000000000001994b0f4cc318dda71b25f9722ef6919c48a734d96abd4c +424000 0000000000000000014f564a76d9e3efa7940f0584c24084e8c5dc15a8836d27 a3ee25361bb0b0ab8936015bc6911407677c861096432f84aaec8ff4fdeddc09 00000000000000000077fc50c11864ed0c2ca697465e35c7a07f4fe089916980 +424100 0000000000000000003acc23562e1c84e2473a7cd115d40980a0cf80da3cb9ef 5b14532bfadc2f6ae93fd978c476e76c2b08806c849fe0df75dfaf0d421bcece 000000000000000000b9f6cbce5176f9649a57d5491c1e0e63bb0630a38dcbb9 +424200 00000000000000000485f1a039fcd44c5efd358f588632f6d5f026d75eefeb63 643d069a3bdd76a5df6484e2c3294891ee31127a117bd325c0e764927a5411b2 00000000000000000327689945ac5e06ce159d8ada440f8281cee6b0fe455dde +424300 00000000000000000172acf8d0d06f2a5005613ef825527230e7c8840804e65b cfcadb83eed7dccf4d1ff58cf98313ce250cca633e69ea18d3f28edcffc03d55 0000000000000000009448e797e42e0c32976270314d472d2d63c3bd9850a71a +424400 000000000000000001d47f2a4d3db94b461f7f2a7abaf53617d829f7c678a82d 5b82d844a4f9b7b5d67e164a19762fe9ce8f9e94a12d045c985649288e46d22a 000000000000000001061509cbf37ec36715ae58a5a2d54359583890e610c6db +424500 000000000000000004eb0e562d9bd5d1f047d4832298749853299430c84d80e8 9a311b780547819e01f005439e92eab63f5fac2a09a347d6f1be539e386140fa 000000000000000004ffe9abb9400f1c892d91bee824a3500f245bd6c94ca4ee +424600 00000000000000000187a165338f220262346e5fe53533d6e611dc9716b71c11 4a4a62fbe9b8abbb4d0dc20a067a1da02cb4838a114d20517cf21a6b150aa2ef 00000000000000000224669ae6745ffe02070aa04df696de794434d43de7f792 +424700 000000000000000000f0f2a3de276098e43f158796acd79ab1017908ebcf49c4 168a0e22ffb283339f5d88713ffeec9a9eb8f1eae2a7525e41dfff437e598b62 00000000000000000211d89740ff9efe442f553fc98c8527985c33f684b46752 +424800 000000000000000000d73778af038a782cd9ae679421007da3ed2a432424aa7e 633d585bfbf0c93439dbdb6ef536da250757a353528e30e9971bfc57c74505a2 000000000000000002ccf65456a4938474580227b9267d2680b2be3f090ab4fb +424900 0000000000000000043dbe99aef4aabf15491c9af818fa8fd5694e4bbc2f3b24 78fbe1b9604694e811e175f60d1b279ccfd27bb90f215115a1d4e8a4e810577b 000000000000000003985fc4ef5815b8b6e6d66c4326deca28c75ebad186246c +425000 00000000000000000142adfebcb9a0aa75f0c4980dd5c7dd17062bf7de77c16d 5476d9c3801a060f9dfb07a9b36ad73290763e73456203134849e4d189068902 000000000000000004da9e5abd0b2450a9915c60e6bb1d25e68e446c4129818a +425100 000000000000000003e4d29495714a4678dfad12cfb04cb6919899b519093072 65fbdf32c7f2351aef29384bd92470341dbde9f2500057f563766b0553ef0161 00000000000000000419234a371b54ac9955bcc0a71757cc7410e3554d181742 +425200 0000000000000000002ba77e478f5d51284b62dcd7181a7a13a3c9c9c33ac079 d7729eb44a1d16dbbf0aa767c454f0bb5ba0a90b633925a482b3d7afdf2fc481 000000000000000004a63cd32b20040478773f6216fb56fe841e217aa614b43f +425300 00000000000000000151288fb033e6bc4a3878c2538712e8e36858a992fc5d0e 9554e11acec4bea8e655aff896e7d346c79a1bebe623138027f5ee4294f86c9a 00000000000000000032a70793d63bd89a348a669b36cd35c91ee64ec3a4400a +425400 00000000000000000299a6a84490eae8493ec8ac5650c915406c083902f5a4ee 3b9a846620092703d24e6495abc49b7df1d42ae21a25727d31635098d4f22a83 0000000000000000023afb17509f3cc6a388e0a8c22ba87f9bba6ccae220b68e +425500 0000000000000000044c9a2b2302a5a8954237bb5c0273c72d40ba21d040fb8f f54a8acfe0448df22e6302ec4ff7f19160b698614ca8335e4227e27c1091c647 00000000000000000282e498296de621fb99ebc1cbaae94643191f5e446ffe90 +425600 000000000000000000c7ebacb3c3560494991b440f6963857978b9d38358137b ad8ac398d6b05be8dae9667b3afb624d172048234799203659a8d91fe3ff4aea 000000000000000000638d37cf0d3c9fe4d383758cbcb65ebb462bd81c8c173a +425700 0000000000000000038c68419e26715572c31f0febada863da1220d930894cbf 05026379ef59ef4cff471102df57a7dc26a69e31b9f5b33d857caa658eddd4e8 000000000000000000919dd1654840a8ff0cdd90651124357cb39166f67e5975 +425800 000000000000000001d0bd74d555bba6a22675bbcd90c42b7c32a7c78224a6d8 4dc9480d1be719d8f703937639d6cb515c45ff73a11069c4ecde8dc86cb7cdf1 0000000000000000037515b08ba7134fdbfb9870ede2b395c44be0b731830b16 +425900 0000000000000000007ab68c5a054f3df9c4e0a534a5cd7ff4fd684d864419c4 f0b8000bfb2707ee9cc168cc3fe202276f2bcb44d54ed30a9f11b26c6774de22 000000000000000000e12304e24e2f0bbe73eb8e91a03546f775270ef85cc24c +426000 000000000000000000122ad62f412001fb9b74181263e1ee0ab13d6b0f2e0d02 e234d0c5eb6c4412dc1fbafd97c82926cc92efdc2b902dd8ff60efc8948daf17 000000000000000000eda3d9a4ba5507c662f8f261bffc950a0f85439bfb070c +426100 000000000000000000ee3d905562a9a429f883568d40dcf467464ac4cfc7a1ee 295e28f4753065e1b9ccb6b929bddf457d28783796e7b4df4a6a8feb3a0081b3 000000000000000001e169610a3c0666f542067256792366125237f03d7b616b +426200 00000000000000000200da5b6ae0ac10fbc019df0e2060e003b62553dd90ca73 9c0586822fd823ee28c270c1a54744e11a257311cb0f9254f96b74016ae1564f 0000000000000000029661340818641cbf7003f37d9329017da82099831971be +426300 000000000000000002af7877a928b1a4b33010f0834d994ce2d6a39384c959d1 57c464e5254a3f6f93330a2866879195e85e7eac987a839267dbe67d63a500aa 00000000000000000348abcaffa2f1230428be9786796367d2dd6d278b5d6ddb +426400 00000000000000000130f79611451cc9e3a812e84ed50d9358a5f4ecf6232a10 0365d6020a98f753f49d5b2e7d1e6a31eddb838908d95e2ce845873eb5f02ca4 000000000000000001f9514d5ecca9e50ff789a620cc2a7a64f301498e5fc931 +426500 000000000000000002de2416b54c724f0a44a606adc2c591863d89a4aadf69ff 9ed583b47abb650e1720272002eec7436d848220e5fbc3445c2b42d44e53de8f 0000000000000000033a03a6d9c1dcd5bdfc9ba79d6e4c379e2c7d5601a28ff3 +426600 0000000000000000045e8f98c6e9081430bbdbbad0f9ebea1e4c2a1e7726f2a2 fa5d919ca1a4f41fa78dea61c0135118372bb5517918e92f57d64ec9dc576d31 000000000000000002183f2b654fce37ac73c7d31edbe8a1f996484c8ff2682d +426700 0000000000000000015293ef02d391ea00598f7beb464c9b170d42d26ebb2fe4 9048da87e59636946d49312ca81dce4197bc46008ca93f41a0924e9b5229fd52 0000000000000000012ae565d34488804d6dbe905f828daacb637ee3ec8fabb0 +426800 00000000000000000130e27dbfda1b50d292b081e0c521753d20d2971521c42b 2e78a166fb83a8274eeb3cccb4374d1177c0255c0e351f8030ca8b8a68bcbecb 000000000000000000c10dd98d1ff20feed4b725de8ec456517f958595ca575f +426900 000000000000000001f9681b0c7a3029d329139d0dcb5ccdce2f377ae23fad31 dfba5c89e905d7300be16862d852273be3e4a9214f82ab9e68d9a9ddf6eb72db 00000000000000000229ba84cdf960a5c6226a6b1625f399234b396e34e258f7 +427000 000000000000000004a4fb7fc341124a27b023d9f1e8f1f8e026c83001676152 93035618331787bf3ed5614e9b954d2ac815f3c3c9d974afd3bfff122c2ea454 000000000000000001447d80cc8ae5c1ef956e822e5977aa6fe1986e024fb199 +427100 000000000000000004c5b3e14ff27e46fbdbd787ea6e5fd0f502ea5c6de9b346 a6be2dfb7b96dffb96e546979e558ae7aea37994472838b569b0df992f7e4a39 00000000000000000477b59fcc9a64d07ae3978585aee3d2b708d48e7131ea99 +427200 00000000000000000291637ca0b8e696de19ab6db9416cfc7ba0af605cbef9d2 8cce0d794d379158ffcd875ca7926f7a5404c28e6544772ed5e56e159293f857 0000000000000000027ef75fccf273ae9c63451ef72dec6fb45068cb60242f82 +427300 00000000000000000363ee0c0223d37b35309f48544dbf92c2555425b83af98c 19ba566cb0cb669833a6d7b5aaab97835aab8269846f853b752cf85080a9a523 000000000000000004a62cf1fb834bcf67aac1aed29fa77c2505d93ed8b0fc5f +427400 0000000000000000049709c5eb273d437fd1ecf1732dc05e5be0ba7684e3f458 c403f7d64fa0934823612eeaadd421ddf4cc41d4606253a6f4e004bf96b0576c 000000000000000004d053b11d030c71128f6e737a635489e983fb4febbe0931 +427500 0000000000000000000f05ecf77c205157c7e13415e395c1286a552678e9925e a7207cd2f57769d66c248647593e10000f21f9b63be53e32bb66b102236187b7 0000000000000000009e2b54a344c1a11216d0743ae715b9975e2640fd636288 +427600 00000000000000000050e60781f4ee25c3d576eb7d62637a45efcdcdb9a06715 cf8a12f22625bafb12201d7501e0adede5ccef59c0beab1069b8b6594272be84 000000000000000003b0c996acafbff042de93f355a6e45c7870f752460001c8 +427700 000000000000000000d2a58ecc65659f1887754c97e7582784a8d90a9e72f7b7 3d657a85e302d037edfbdb67bb8ee8ac3ec6b4f36461bdaa674e4e515b3a7000 0000000000000000023d676fc16f52026eff61aa218bb399d88c596ea2f6a0a0 +427800 0000000000000000005ee4e2c5a0df2769fd792f571c9bd6278581d669daa1b9 c2d86cadb79b9d1dad9ad421f06865c855442fc0b459782aaad8629884697be2 000000000000000000b5831fc38b6e65700310b0d0b64369770f3f3e091d4901 +427900 00000000000000000306adfa09f2b6d863257e9641e0f260d67bb73b336c7638 03a6071b04e0764a97e7d636b11918034d93a0eb7fab1e2459c8cb0e969a76b5 0000000000000000023fb4d0a745912a5d3fe31dfdd8f44453900421cf6bb290 +428000 00000000000000000430eb68727244caf2a95c75b1ccfafcd6e65d92c65dce3c 02c07eab3ae0956da749803c5c439525fc7df92b5fd396dc8a06bb35adfb6491 000000000000000003aa95c3d54cc1cdf76bff3b7c7f3accac68025261d95b53 +428100 0000000000000000033987fb36873b88b55f486379f69fadcaf75b9aaa3af305 ff4c48853df3461b739cd75aaaef630f130576e438faf8210db4ae7bc15bca60 000000000000000002e37eb2991f40b37be13c387f3fe7c8ba757c5914b731f8 +428200 000000000000000002d0b5992fc5e755652acd2cdaa22cb58eab792455417f9a 1135b76aec90a33dfdc7831c4d69af7d08efdae6669182c5b5836a8e9e2916b3 000000000000000001382901448ad6ac869ac46f6a74769fc6f40ed994d4c327 +428300 0000000000000000029ecf3456571b4dd6d46051268c4e350ce03b53294b2334 c15de5620757944bedcff2fe389b2bf03e2f379cdd4e486299d68af7e436864c 00000000000000000484d459ba2e166ddd356b2644d7bf88e46ec9625e45a970 +428400 00000000000000000124c45f8a00cc92212e61972c8a487b4c73789a515137fb 27fea9f04748c4b33108a434b58e7e5e6b0ed55f7bdf0800a2071e95f41f66f1 00000000000000000214aee275bf2e5b3fd88c19bbc53237d80ceb6e2c1f9777 +428500 00000000000000000268c76c989f86f77029319b69f801d35c2e5f7942f08f7a 2a9e37041adecacf1263af7b253175ea2b1ae0002e27f7a0f49c9bdf6c61440e 000000000000000002c928cd964fc72ef05b095edc2235c7e897e33b681a271f +428600 0000000000000000035d3dc2937f2a8dbab15faed210c1c5240c4039344d8245 2353f0679bd09a6f09f649716e0a9b10b29ee93b8950adca5f75119411ef2c20 00000000000000000348a9973c31b009c2529cdb54cef2b5670a2a25cc679df3 +428700 0000000000000000032e3fe0a77f691e16539a15d36bd250cc95b705261de36f 6a6ffa0d6620d32e11e4b42232429a578fee9fc3ed6eda981978a11645d07508 00000000000000000040b5d4e0b5069ff75b81253172f186b7642c0934f4942c +428800 000000000000000004aa9e38401491b443f0d8de149a2bc4a0a2621880e41e88 2336ce863f68b4c382cb450a658249ecb7f318c7a7c6fbe8f965d0018deac76d 0000000000000000015d608750cf5028a0f0cff0caa5e949a9c8238fa14659e1 +428900 0000000000000000014e14be9abad411da467492db56b96da2082b8c1156c889 5476dfbd48111bb5f5f40452e85ba64f30407c8e9824545a13e9ed0f77e2730f 000000000000000002d1be816c221bae177c22f25f79d607c0279cfd8e8a0ed0 +429000 000000000000000002a455bcab421d44d1c85bdac8a6e196aa0c0968aa5ab5d1 bc53b741739d79cbf671c59576d25a1af8e9580f53942d6ee57c9b5cda49356e 0000000000000000049904c0026d4e4dc770681edfb80ee95acb81fd212d1c5f +429100 000000000000000001e3a59330494e24a2eff490d199c32046c16000f3738c14 \ No newline at end of file diff --git a/iguana/confs/DGB_peers.txt b/iguana/confs/DGB_peers.txt index 28bb69e30..60bf413ec 100644 --- a/iguana/confs/DGB_peers.txt +++ b/iguana/confs/DGB_peers.txt @@ -1,17306 +1,7 @@ 212.129.1.77 -178.33.228.14 157.161.128.58 +178.33.228.14 108.61.10.90 -66.228.56.115 -167.160.36.126 104.236.32.184 -39.34.235.71 -95.28.7.71 -36.149.70.139 -71.95.131.105 -25.125.144.215 -98.196.52.135 -93.127.20.199 -94.112.7.134 -78.73.169.30 -82.78.191.165 -151.29.224.128 -203.212.61.135 -73.170.147.244 -121.218.175.57 -219.128.62.223 -90.23.224.50 -151.74.251.28 -94.6.185.11 -201.22.220.238 -85.175.16.31 -108.1.94.151 -188.68.194.121 -80.201.154.170 -62.52.137.121 -25.156.165.226 -72.49.64.176 -81.183.119.94 -118.92.78.114 -104.156.228.176 -86.135.5.121 -46.159.10.54 -151.46.68.152 -114.55.117.237 -88.200.136.135 -174.26.164.250 -178.158.142.82 -109.30.168.16 -185.160.251.220 -82.17.141.219 -219.92.249.24 -71.210.255.55 -76.72.154.26 -69.119.106.227 -209.6.217.75 -206.59.251.202 -60.246.252.214 -70.71.37.150 -176.77.80.188 -201.158.29.115 -98.206.146.90 -217.70.251.174 -84.62.72.67 -83.85.145.11 -254.150.134.215 -85.26.165.246 -85.181.160.208 -208.91.66.8 -114.125.178.36 -71.119.30.24 -86.83.46.210 -87.102.158.155 -94.193.249.41 -181.103.128.173 -101.14.87.154 -69.46.195.176 -216.171.18.141 -70.27.45.70 -209.197.138.184 -29.73.204.5 -63.87.254.247 -69.43.42.16 -120.38.107.41 -97.104.141.214 -213.87.134.192 -179.188.245.56 -176.194.243.107 -113.90.83.115 -175.120.159.224 -37.59.20.223 -42.81.72.54 -36.234.60.175 -98.84.229.115 -77.20.66.68 -91.114.220.13 -162.221.207.229 -118.100.94.179 -217.29.24.36 -75.183.49.103 -95.30.237.147 -186.88.171.141 -208.91.67.1 -160.179.46.174 -82.226.172.82 -101.12.0.165 -171.96.172.46 -148.251.88.245 -175.42.86.217 -121.225.191.68 -85.178.131.115 -224.215.146.36 -142.196.255.91 -109.229.72.21 -95.221.238.70 -93.80.186.163 -5.189.145.112 -174.117.39.176 -91.188.124.194 -24.230.59.100 -5.101.96.124 -69.112.104.39 -186.95.200.178 -81.10.135.207 -82.75.179.105 -93.221.209.88 -67.244.140.202 -159.227.211.229 -207.118.11.238 -14.203.74.176 -77.72.144.197 -109.193.167.249 -81.95.181.41 -108.234.78.195 -118.209.134.72 -183.204.177.21 -90.176.255.111 -108.14.8.80 -188.187.20.44 -93.51.57.207 -190.141.68.49 -91.7.79.1 -123.3.199.96 -91.102.81.135 -111.95.117.189 -93.229.186.252 -78.52.250.37 -109.201.105.45 -178.47.116.39 -24.56.9.196 -77.222.97.198 -216.172.142.243 -77.40.46.73 -97.80.88.5 -1.9.103.47 -199.168.250.82 -190.13.230.114 -90.197.179.150 -254.200.66.128 -212.156.47.210 -109.72.237.88 -36.69.126.209 -128.71.158.207 -123.224.4.45 -24.70.0.188 -67.190.29.0 -46.28.204.53 -192.0.144.249 -93.62.254.162 -254.236.148.14 -217.42.138.114 -213.87.159.145 -83.39.76.116 -81.7.3.24 -79.42.51.42 -86.217.123.203 -79.115.105.194 -65.25.61.152 -91.205.236.225 -184.96.29.22 -134.249.71.117 -78.223.238.225 -189.122.101.45 -72.13.87.195 -92.242.132.15 -72.168.160.181 -50.159.81.235 -213.60.37.174 -108.80.238.183 -85.253.130.73 -46.39.55.0 -107.191.33.13 -161.63.219.19 -45.48.146.148 -144.168.55.204 -81.146.8.7 -84.160.180.185 -87.0.155.240 -93.79.12.166 -64.231.253.204 -50.165.91.254 -74.103.247.9 -122.194.230.147 -209.177.106.77 -77.105.219.75 -217.126.56.184 -46.22.172.190 -1.115.6.59 -179.210.13.19 -81.153.248.197 -76.102.131.234 -92.19.38.229 -24.151.52.157 -173.2.191.21 -223.4.79.136 -176.104.122.62 -36.69.116.166 -0.0.0.7 -98.126.61.242 -180.110.83.212 -168.70.79.201 -85.181.163.180 -85.226.244.4 -82.24.112.2 -121.218.79.89 -2.92.114.186 -188.68.151.16 -73.114.35.193 -188.22.213.42 -47.58.60.22 -83.8.113.179 -244.8.207.50 -124.204.226.226 -5.164.222.60 -80.219.44.41 -68.99.189.60 -5.248.199.235 -46.133.246.241 -137.124.118.72 -27.47.78.239 -100.13.189.170 -78.84.154.105 -78.48.110.171 -45.27.160.94 -76.95.178.145 -89.212.122.128 -37.55.8.14 -119.74.73.116 -166.230.66.50 -91.7.215.56 -77.47.96.164 -46.186.85.226 -104.223.185.184 -254.226.198.25 -37.146.116.43 -93.49.156.51 -220.249.249.8 -67.171.202.153 -85.66.172.138 -101.128.83.1 -80.88.26.131 -60.52.77.27 -160.176.20.248 -84.178.247.84 -179.124.176.144 -77.36.209.216 -119.253.64.37 -124.228.209.34 -14.200.37.7 -84.2.168.150 -173.57.207.71 -5.34.113.78 -85.76.72.110 -68.111.155.53 -157.128.172.169 -80.188.113.28 -82.79.234.31 -173.229.169.3 -212.164.146.33 -72.127.76.27 -175.161.227.110 -109.188.125.111 -37.214.28.182 -47.18.204.217 -95.188.88.59 -96.252.12.181 -46.146.184.148 -178.137.58.35 -125.82.163.206 -95.17.254.131 -24.35.105.160 -105.25.20.167 -109.190.154.241 -46.61.65.167 -176.214.154.115 -37.44.108.205 -71.80.233.61 -210.146.249.98 -50.191.140.20 -172.0.0.3 -188.134.21.71 -178.34.161.187 -176.97.103.226 -69.151.26.205 -36.69.112.47 -231.115.82.205 -128.70.5.196 -178.148.242.143 -77.152.251.48 -217.93.233.117 -128.70.154.103 -24.6.180.172 -52.178.27.143 -79.41.111.72 -50.65.6.66 -213.24.127.152 -105.156.12.107 -24.212.250.140 -91.65.124.228 -176.111.85.2 -75.67.50.181 -107.179.158.105 -97.121.39.172 -211.110.17.146 -110.244.163.66 -83.41.237.2 -177.42.212.90 -42.25.182.101 -41.176.238.223 -83.6.60.199 -192.254.1.3 -63.87.253.252 -105.154.181.129 -42.116.159.209 -173.175.165.35 -191.33.106.75 -66.31.203.99 -47.90.12.41 -254.139.181.166 -123.243.176.125 -98.195.248.66 -114.125.184.21 -131.77.218.144 -99.35.1.162 -2.94.63.28 -142.4.219.166 -37.214.45.81 -91.148.83.250 -108.59.82.117 -66.18.203.165 -184.58.153.145 -90.22.182.176 -129.132.179.10 -77.51.3.171 -93.178.236.186 -104.172.24.79 -117.69.37.113 -89.177.235.232 -46.98.124.46 -101.200.156.61 -54.78.124.50 -49.183.195.52 -94.233.108.155 -178.76.217.3 -88.236.139.51 -182.9.251.22 -108.217.41.51 -78.15.69.11 -1.9.102.15 -83.5.183.131 -146.65.212.78 -72.90.164.245 -37.201.226.29 -76.175.160.124 -2.139.38.182 -75.156.92.90 -162.245.17.64 -46.109.116.120 -31.90.138.142 -70.113.42.136 -87.206.96.153 -187.107.67.31 -151.64.5.115 -81.100.89.197 -254.213.224.159 -95.90.192.148 -213.87.127.244 -188.187.179.150 -153.100.225.76 -119.248.127.237 -104.212.233.142 -95.191.200.245 -218.183.61.75 -69.81.135.130 -86.111.136.191 -96.242.53.68 -0.0.0.0 -79.111.210.168 -50.159.128.226 -76.92.249.209 -73.197.103.142 -73.231.122.49 -237.51.250.49 -71.234.232.130 -50.135.221.200 -88.77.218.18 -81.108.63.108 -223.156.208.226 -83.21.45.217 -94.41.181.212 -69.124.186.230 -217.27.149.140 -104.175.162.231 -77.40.24.110 -124.168.234.94 -24.76.220.10 -254.69.93.71 -203.212.154.201 -37.151.186.123 -130.255.247.36 -84.77.151.215 -68.13.175.20 -179.188.245.56 -87.245.7.194 -80.180.210.65 -87.6.53.235 -208.167.254.202 -91.48.57.13 -50.66.78.155 -86.132.124.18 -159.148.142.59 -46.105.39.103 -188.82.44.231 -93.222.141.130 -198.27.81.25 -5.198.236.43 -101.163.24.233 -77.163.189.107 -77.40.116.92 -76.10.162.169 -87.146.5.203 -84.105.26.71 -106.68.56.66 -103.245.95.63 -180.107.230.128 -183.50.115.22 -189.79.14.213 -188.163.97.22 -75.87.190.13 -46.159.38.161 -27.47.113.178 -220.253.206.246 -84.188.187.66 -191.254.115.148 -94.36.175.249 -191.54.11.197 -190.79.130.213 -31.6.50.60 -81.17.174.82 -76.113.21.208 -180.165.53.252 -77.22.148.6 -14.2.72.165 -205.183.219.247 -69.23.249.169 -185.65.132.100 -37.214.51.246 -185.157.16.38 -0.0.120.138 -205.189.79.111 -194.249.178.189 -24.140.173.50 -79.245.43.123 -93.47.96.158 -92.255.126.227 -83.31.169.166 -183.61.146.133 -31.109.67.191 -0.0.0.0 -90.2.2.115 -219.79.134.55 -94.251.44.201 -87.50.82.48 -83.23.239.91 -90.104.163.221 -77.249.144.34 -180.101.15.205 -39.70.151.104 -225.174.220.177 -70.95.48.109 -62.107.128.88 -94.34.215.116 -70.69.36.146 -36.149.198.139 -93.84.211.255 -217.244.81.231 -171.128.133.206 -37.146.227.226 -79.234.14.227 -177.158.39.231 -114.40.139.95 -107.3.236.173 -78.121.10.157 -70.113.61.111 -161.31.224.170 -83.45.251.218 -192.241.195.57 -176.222.168.20 -173.177.115.102 -50.49.139.30 -24.175.64.146 -73.249.63.180 -92.243.166.74 -213.138.86.15 -198.72.192.74 -146.82.107.4 -79.111.28.247 -37.190.124.110 -86.41.83.192 -11.47.244.249 -82.130.22.224 -90.150.252.207 -92.127.190.145 -217.86.143.234 -14.200.246.174 -197.86.181.90 -91.150.7.204 -178.239.58.248 -112.198.98.69 -217.241.4.70 -78.20.252.64 -46.233.232.251 -178.32.53.131 -200.92.103.84 -179.98.39.154 -82.193.127.191 -23.233.105.183 -42.79.5.88 -109.43.2.219 -73.160.106.98 -91.57.200.156 -94.166.91.220 -89.24.238.25 -104.138.147.122 -62.235.252.43 -62.61.130.225 -156.207.75.152 -79.56.59.204 -81.91.29.19 -180.200.182.59 -78.106.0.191 -76.145.250.114 -73.93.143.14 -194.42.113.83 -190.219.169.143 -129.132.208.154 -188.77.115.58 -159.227.211.229 -178.12.222.20 -89.73.112.158 -90.77.201.224 -79.239.3.2 -128.73.84.157 -172.251.163.17 -76.68.180.62 -188.104.121.98 -217.96.181.144 -81.245.209.201 -91.54.70.154 -170.179.182.45 -72.198.163.2 -81.149.9.87 -115.152.10.90 -176.2.33.156 -107.217.207.67 -189.196.173.117 -58.240.252.231 -178.34.158.126 -129.208.61.192 -109.106.1.98 -209.71.187.112 -176.209.76.142 -89.193.28.216 -46.207.139.233 -81.110.173.243 -5.189.30.177 -85.76.64.24 -180.85.143.49 -109.200.238.156 -86.197.193.139 -171.151.82.30 -160.64.4.181 -68.173.147.35 -62.1.200.15 -213.8.129.147 -14.218.48.242 -125.192.151.221 -178.158.102.90 -83.142.111.198 -201.22.222.19 -63.87.255.253 -86.245.121.184 -80.180.218.21 -51.9.252.248 -168.205.173.177 -173.254.208.98 -87.199.167.171 -31.206.63.127 -22.51.95.184 -178.93.148.210 -78.52.193.124 -104.168.164.240 -93.33.170.142 -24.74.13.140 -148.0.39.7 -190.42.187.9 -27.105.233.173 -213.162.68.4 -79.227.31.39 -112.97.61.240 -80.135.106.20 -62.235.148.101 -99.230.194.187 -98.221.123.38 -58.56.133.98 -247.19.172.79 -108.28.225.229 -81.184.25.104 -181.104.112.211 -188.162.166.158 -79.184.135.236 -188.238.17.69 -190.134.134.46 -95.189.150.132 -194.126.168.60 -76.19.242.156 -130.180.218.219 -104.220.27.24 -142.163.92.14 -182.125.129.10 -73.192.202.185 -60.123.50.87 -118.116.108.3 -184.101.248.5 -50.140.161.83 -101.165.212.53 -87.165.67.175 -209.197.156.241 -85.27.125.82 -93.181.216.82 -71.72.141.237 -70.24.228.204 -91.182.12.54 -136.169.204.151 -177.206.49.168 -113.83.228.172 -88.147.30.116 -71.56.202.226 -68.146.169.173 -89.235.211.85 -41.176.39.196 -147.19.12.189 -104.207.136.103 -60.50.206.232 -178.158.80.11 -71.199.119.181 -191.179.157.158 -242.170.177.252 -141.215.80.194 -82.161.145.68 -89.142.182.169 -82.18.195.64 -70.123.112.130 -179.188.245.56 -176.102.195.216 -188.69.243.161 -83.84.40.12 -220.236.128.177 -109.129.224.18 -100.34.93.150 -149.138.22.140 -82.192.64.136 -186.214.98.40 -108.26.44.16 -108.67.80.117 -37.214.5.252 -209.232.227.231 -196.210.50.104 -183.135.255.184 -177.131.120.30 -62.165.242.162 -41.138.102.202 -104.238.169.89 -104.157.137.70 -89.202.166.242 -131.77.218.144 -207.118.93.73 -87.162.44.24 -0.0.0.0 -110.0.234.132 -62.80.176.70 -80.88.28.137 -178.120.17.194 -146.3.226.203 -67.187.18.63 -76.243.35.92 -70.71.225.144 -37.49.112.191 -98.228.255.10 -14.203.211.216 -70.29.0.34 -109.229.64.106 -180.251.132.210 -90.69.147.20 -60.205.58.32 -96.54.5.209 -80.12.38.22 -92.14.21.218 -80.77.39.181 -88.177.109.119 -196.210.55.253 -66.175.220.212 -119.63.44.133 -77.173.116.163 -121.222.251.158 -88.147.16.221 -105.104.0.66 -77.177.201.1 -201.152.203.38 -31.181.104.136 -130.35.207.72 -50.149.22.101 -128.71.205.191 -192.180.188.36 -177.138.128.83 -72.160.90.78 -98.127.83.86 -77.40.116.144 -146.52.75.143 -93.85.10.226 -86.4.137.92 -213.66.200.33 -27.32.134.220 -73.192.216.82 -46.186.83.147 -93.178.70.203 -75.118.205.52 -91.222.69.111 -97.94.164.127 -85.212.56.36 -24.255.33.97 -120.88.154.161 -5.54.174.76 -37.214.155.189 -69.223.42.70 -179.188.245.56 -151.249.103.245 -160.158.116.120 -52.19.194.56 -86.140.103.156 -89.13.93.55 -83.237.181.184 -95.222.48.175 -77.122.83.9 -67.1.149.121 -50.189.198.168 -75.165.59.73 -187.114.151.195 -104.156.240.174 -95.24.204.250 -189.115.186.244 -95.73.215.207 -66.55.141.100 -77.3.26.206 -89.205.58.251 -92.101.208.231 -180.242.208.9 -167.148.76.2 -109.215.152.195 -77.40.116.6 -71.19.252.27 -188.223.186.210 -254.194.199.151 -83.5.57.232 -100.14.95.93 -71.222.214.25 -50.143.146.148 -46.254.161.146 -81.183.115.115 -82.245.39.252 -193.95.228.71 -99.247.211.202 -46.105.124.86 -82.239.243.10 -117.140.167.99 -86.174.182.223 -81.151.103.4 -188.16.56.69 -37.78.40.173 -99.198.248.234 -46.39.230.195 -191.54.11.197 -208.74.176.52 -149.210.164.198 -131.177.217.139 -143.241.180.26 -183.62.31.188 -209.95.50.98 -46.99.72.69 -87.15.12.87 -155.246.209.18 -63.87.253.154 -188.105.132.220 -46.59.178.196 -146.123.253.27 -46.35.77.137 -37.161.40.225 -88.147.122.169 -114.125.178.177 -190.237.124.123 -174.24.176.235 -221.193.4.156 -217.117.187.211 -79.133.14.100 -188.68.194.123 -85.76.73.104 -173.79.110.56 -174.7.103.195 -68.187.116.205 -175.140.222.112 -37.163.202.87 -78.25.123.38 -31.162.188.97 -120.25.65.234 -213.59.117.212 -181.65.78.183 -172.79.95.120 -109.226.119.128 -111.174.146.100 -179.188.245.56 -119.205.162.20 -31.6.24.148 -188.68.14.26 -37.8.242.35 -118.209.15.214 -80.99.198.172 -100.122.132.37 -223.68.189.53 -5.71.101.213 -195.142.179.119 -90.202.206.208 -167.249.235.53 -114.77.188.214 -93.77.45.35 -135.143.95.62 -79.53.186.83 -63.87.77.227 -188.187.174.168 -120.239.8.85 -97.85.42.177 -89.0.8.108 -74.195.227.225 -198.143.2.132 -177.158.97.204 -92.46.173.216 -90.21.84.137 -72.83.36.246 -83.81.103.227 -5.137.221.215 -182.96.242.53 -96.55.55.197 -109.91.34.232 -31.2.58.76 -37.214.155.169 -60.123.50.87 -173.196.158.132 -87.198.114.90 -191.248.19.34 -105.157.204.237 -206.45.228.163 -213.4.115.211 -156.14.173.215 -192.195.67.2 -83.43.242.84 -87.252.238.253 -185.10.190.231 -95.29.76.137 -87.112.0.134 -92.51.9.54 -61.131.83.133 -180.165.69.238 -90.149.137.180 -24.46.254.139 -74.141.57.154 -95.70.120.151 -104.238.169.72 -87.217.196.11 -76.102.131.234 -87.97.0.228 -94.199.198.134 -73.80.36.106 -91.250.56.101 -1.115.1.3 -137.103.221.168 -149.202.193.188 -71.170.84.181 -198.8.80.45 -178.93.148.133 -93.178.65.9 -68.40.25.124 -24.117.22.32 -25.27.146.66 -212.89.225.138 -49.193.216.83 -86.9.168.196 -37.55.84.196 -193.95.253.142 -104.34.224.200 -174.45.91.255 -93.133.153.104 -53.74.14.208 -80.88.23.87 -37.187.131.169 -179.188.245.56 -184.53.32.170 -104.200.154.54 -104.223.53.135 -195.15.4.67 -180.229.32.135 -31.3.156.112 -178.165.130.31 -107.4.39.143 -67.85.217.100 -178.46.163.75 -213.231.55.145 -203.92.39.35 -104.238.58.22 -74.197.90.100 -75.70.171.6 -77.120.160.249 -65.96.131.178 -40.130.201.131 -130.194.72.84 -75.82.210.101 -149.56.87.165 -173.254.208.194 -58.250.131.92 -166.123.188.107 -183.5.123.230 -46.39.171.197 -5.13.13.198 -84.0.5.105 -7.211.73.100 -77.40.116.212 -76.127.11.146 -176.213.16.21 -64.231.232.206 -23.16.180.239 -172.227.36.209 -5.141.90.117 -66.115.115.71 -151.133.201.86 -70.79.24.232 -82.15.5.193 -199.58.178.132 -116.226.26.241 -107.153.20.121 -84.18.118.84 -88.150.185.82 -174.56.149.251 -212.230.68.200 -142.137.9.120 -178.94.172.125 -69.36.206.73 -90.174.4.95 -63.87.255.249 -177.235.119.100 -184.101.149.91 -117.140.45.148 -79.196.225.142 -32.169.11.9 -78.232.226.226 -177.5.71.225 -178.34.158.160 -176.3.38.9 -77.181.221.137 -93.231.187.186 -114.125.151.18 -70.112.23.16 -128.74.242.207 -37.79.153.6 -179.188.245.56 -95.79.255.196 -189.197.30.89 -113.88.22.241 -69.23.131.145 -24.230.253.14 -178.34.162.233 -231.119.4.225 -46.186.89.232 -78.129.157.196 -125.164.96.193 -213.5.65.29 -187.59.234.92 -112.97.54.124 -178.123.176.79 -109.227.118.161 -90.255.120.101 -95.26.178.188 -46.175.175.206 -65.190.129.84 -37.192.148.86 -198.8.80.171 -174.51.159.181 -196.52.23.228 -110.125.47.10 -177.80.226.192 -92.49.238.145 -81.203.232.36 -213.220.249.220 -73.109.59.103 -85.114.174.176 -109.120.242.35 -188.115.39.45 -112.74.214.212 -99.250.234.200 -37.115.220.137 -73.231.114.124 -46.53.209.146 -77.13.64.136 -85.29.114.126 -90.202.174.218 -180.185.84.249 -76.75.89.197 -33.46.244.82 -63.87.77.189 -218.38.19.7 -175.43.242.156 -95.52.140.49 -77.235.102.218 -186.92.196.71 -178.93.148.183 -83.134.210.164 -97.121.78.125 -217.41.63.179 -41.241.90.148 -86.61.67.64 -37.214.129.10 -117.87.47.179 -2.24.233.99 -162.243.216.227 -93.26.186.20 -109.236.90.144 -171.96.170.132 -84.120.106.33 -94.13.119.10 -72.13.188.130 -82.206.16.181 -74.116.186.220 -67.169.203.50 -46.42.58.166 -178.43.229.84 -37.14.204.55 -177.142.52.235 -181.64.192.105 -37.24.149.231 -215.119.81.157 -24.225.14.35 -219.21.195.80 -87.115.193.174 -189.73.224.143 -93.45.49.68 -79.143.182.116 -89.0.39.201 -202.159.128.66 -24.125.27.47 -115.192.246.185 -161.97.160.204 -179.99.141.139 -50.224.63.50 -37.214.31.133 -88.206.186.58 -108.169.236.27 -84.237.86.24 -162.19.122.33 -47.90.2.35 -31.129.195.13 -107.222.97.179 -134.90.156.49 -108.244.47.41 -63.87.254.148 -171.213.99.156 -171.124.174.139 -92.246.196.101 -192.162.143.75 -75.141.226.201 -100.70.154.135 -1.9.103.7 -69.255.27.161 -217.96.146.146 -0.0.0.2 -197.246.2.143 -65.13.189.227 -194.77.215.7 -89.31.117.250 -0.0.0.5 -5.115.203.35 -146.115.157.45 -162.243.227.180 -79.102.44.42 -49.64.193.14 -89.144.239.171 -166.70.8.20 -131.77.218.144 -81.158.175.156 -70.68.114.212 -93.88.53.63 -81.174.41.68 -82.57.179.8 -151.224.142.140 -82.230.144.202 -86.132.254.124 -165.72.27.149 -5.139.145.97 -201.242.188.234 -46.149.87.97 -23.234.22.142 -178.7.171.40 -90.150.241.152 -67.173.173.74 -91.232.169.187 -177.200.114.97 -142.4.208.32 -203.144.16.52 -79.165.103.230 -147.194.41.211 -77.65.19.242 -121.15.122.220 -67.219.95.103 -91.126.89.184 -186.33.38.5 -84.119.188.172 -114.125.179.112 -63.87.77.189 -72.50.251.132 -78.225.114.147 -83.215.142.159 -88.70.150.29 -121.12.208.45 -122.191.104.50 -198.8.80.92 -81.170.155.133 -74.152.123.100 -31.206.70.27 -84.183.99.23 -178.214.180.24 -177.40.178.34 -91.180.154.226 -187.111.234.136 -5.76.75.218 -70.227.145.252 -77.20.143.147 -203.106.219.211 -100.13.87.171 -188.60.84.92 -203.122.115.166 -188.193.95.80 -65.94.24.50 -37.167.231.160 -109.169.250.98 -109.229.64.141 -2.132.168.188 -31.128.8.221 -37.221.237.72 -31.180.227.66 -95.78.53.221 -128.54.174.31 -93.73.22.239 -75.148.217.67 -222.220.99.98 -50.158.161.48 -172.79.179.32 -89.0.253.11 -93.103.53.134 -78.223.238.225 -94.50.0.22 -190.204.206.81 -83.134.57.48 -63.87.253.154 -185.57.82.82 -91.233.19.241 -34.57.82.147 -172.214.18.253 -216.172.142.11 -0.110.200.142 -2.245.91.207 -1.9.103.155 -205.112.109.107 -188.125.246.149 -104.35.7.243 -67.174.74.165 -24.166.50.124 -2.245.160.249 -54.70.85.2 -70.190.111.248 -179.181.252.174 -41.251.149.122 -27.47.118.14 -14.201.137.152 -83.41.194.149 -50.133.248.247 -89.12.214.245 -175.43.242.132 -80.88.25.191 -71.231.33.235 -78.227.111.78 -94.197.120.218 -231.137.251.73 -70.65.206.59 -202.49.89.68 -186.15.42.168 -188.69.194.108 -95.208.248.130 -79.76.201.195 -113.8.121.236 -86.15.3.52 -5.80.179.121 -88.195.122.166 -110.159.96.102 -79.227.10.114 -82.84.229.234 -36.76.98.20 -114.125.176.195 -78.51.119.166 -125.174.218.86 -84.77.146.155 -35.58.24.31 -115.74.185.212 -46.135.61.3 -76.25.194.124 -80.82.202.248 -184.78.118.109 -151.231.233.43 -46.159.90.238 -178.137.239.114 -37.235.146.166 -67.11.239.1 -103.255.4.248 -173.25.111.238 -63.87.255.155 -185.160.93.175 -37.214.100.137 -75.164.233.17 -178.95.110.28 -73.11.194.236 -36.69.119.70 -78.220.216.75 -78.111.185.210 -63.155.143.241 -178.94.172.173 -68.234.91.117 -86.135.158.126 -95.73.52.198 -90.48.160.48 -213.195.188.133 -68.228.16.214 -164.244.159.137 -41.105.191.46 -108.61.226.28 -77.207.92.112 -178.151.6.20 -36.76.98.142 -69.165.222.140 -97.58.136.16 -75.118.116.50 -191.182.136.128 -31.163.55.26 -31.178.237.110 -99.244.177.73 -178.0.89.10 -91.121.155.93 -194.127.77.96 -206.248.172.82 -217.99.82.246 -151.68.66.143 -89.153.139.149 -37.201.230.118 -201.95.5.52 -201.79.214.0 -218.206.143.64 -80.162.16.80 -201.14.50.216 -98.192.4.26 -32.51.8.120 -77.29.108.142 -151.52.77.30 -93.84.216.92 -82.44.146.33 -78.53.78.152 -197.119.213.42 -147.183.210.66 -185.3.173.229 -191.183.169.197 -2.245.137.183 -91.65.126.15 -182.148.67.82 -217.114.229.49 -98.165.223.15 -68.113.233.62 -109.87.98.126 -67.194.158.32 -70.24.17.143 -73.202.135.79 -79.201.133.169 -69.17.254.58 -65.25.180.22 -114.125.179.68 -254.3.81.156 -79.160.55.30 -173.31.201.187 -176.58.121.112 -87.68.55.213 -173.161.71.38 -107.180.68.196 -94.25.228.15 -124.122.129.211 -31.131.53.15 -169.195.113.223 -72.220.38.235 -84.231.4.13 -188.199.223.30 -182.186.160.34 -25.1.7.162 -93.117.189.198 -183.74.38.165 -5.18.64.210 -77.123.120.121 -177.229.245.106 -36.234.59.20 -100.70.99.29 -84.85.234.220 -115.132.88.210 -92.237.30.106 -122.52.84.80 -74.101.32.172 -122.194.223.212 -0.0.0.1 -83.250.32.201 -188.239.89.43 -86.110.35.134 -186.83.21.221 -67.249.244.99 -171.253.71.129 -176.114.41.138 -24.249.152.169 -46.118.79.153 -98.225.56.230 -77.163.92.80 -75.173.110.74 -115.35.216.91 -138.151.74.156 -1.42.9.21 -24.135.179.191 -68.173.73.213 -193.38.164.231 -211.149.234.109 -53.186.124.223 -71.8.170.163 -158.69.196.61 -184.75.221.179 -37.214.17.200 -31.178.188.94 -109.222.126.128 -37.97.159.116 -98.192.178.2 -89.14.10.230 -77.178.145.18 -50.131.105.103 -174.1.20.102 -31.163.45.85 -142.4.209.20 -213.44.220.12 -178.115.128.70 -190.237.180.151 -71.86.63.12 -107.191.36.26 -171.4.191.111 -77.180.226.208 -126.47.194.63 -132.177.166.224 -209.6.13.94 -209.71.187.95 -98.127.94.104 -176.194.54.26 -95.38.165.156 -211.149.203.133 -125.34.99.26 -212.80.35.204 -181.64.192.144 -128.69.5.201 -77.253.178.185 -66.66.96.55 -37.187.62.197 -5.79.68.179 -162.214.144.232 -75.118.140.166 -46.184.68.149 -118.209.228.40 -25.167.181.129 -101.232.199.107 -183.60.175.245 -83.134.97.92 -213.59.116.93 -108.35.113.160 -0.0.0.3 -204.48.58.5 -82.34.83.145 -75.164.251.34 -93.221.234.206 -191.54.11.197 -77.110.148.100 -71.204.12.71 -71.212.2.36 -112.201.133.20 -115.203.241.14 -80.12.35.100 -213.179.252.227 -171.4.191.111 -81.94.192.39 -186.28.1.249 -27.10.78.74 -14.218.50.43 -157.75.45.18 -188.252.49.231 -100.15.53.74 -84.73.232.94 -73.246.4.233 -78.85.238.101 -37.78.152.207 -144.153.206.165 -71.47.205.43 -118.199.43.9 -61.209.250.108 -89.193.28.216 -172.56.15.180 -173.180.35.59 -60.6.152.90 -87.71.32.150 -178.7.1.50 -152.29.211.220 -181.1.187.241 -107.151.146.18 -50.38.90.86 -78.53.76.85 -91.65.233.81 -24.111.248.238 -43.230.115.113 -46.254.162.62 -81.4.193.138 -65.122.82.65 -215.119.81.157 -108.35.177.168 -92.101.204.137 -212.77.214.235 -216.232.189.109 -86.169.39.198 -58.8.155.168 -68.112.157.91 -149.154.82.143 -121.98.137.146 -2.31.19.169 -80.135.72.241 -178.34.158.177 -83.220.236.163 -85.222.174.131 -94.192.120.77 -160.171.125.185 -209.200.61.232 -69.167.20.21 -94.196.65.242 -176.95.200.225 -72.133.224.210 -81.165.223.134 -79.30.43.137 -11.64.77.213 -117.69.37.124 -81.4.229.54 -179.98.225.18 -176.101.159.159 -37.120.174.32 -172.90.161.27 -31.135.162.117 -217.118.93.148 -43.68.222.229 -142.177.86.19 -95.252.144.144 -71.180.49.190 -31.173.84.149 -84.178.235.239 -119.133.211.12 -173.79.115.216 -60.177.162.207 -185.142.213.119 -136.122.46.135 -254.219.128.7 -167.56.247.38 -136.243.217.171 -47.90.41.107 -69.138.72.168 -73.93.104.132 -108.244.47.45 -110.0.234.132 -85.76.73.228 -83.250.48.215 -66.73.115.64 -37.140.78.86 -69.165.242.216 -73.240.78.63 -95.154.144.76 -212.115.253.181 -2.22.50.177 -161.63.219.19 -160.101.111.179 -83.82.140.109 -112.114.250.79 -31.173.80.23 -204.185.72.3 -104.207.136.100 -107.147.67.163 -84.251.123.206 -5.135.176.160 -112.86.236.240 -68.61.181.236 -181.139.69.35 -81.97.200.135 -85.241.89.210 -181.67.37.52 -164.114.255.173 -188.239.82.36 -62.141.214.30 -95.26.16.140 -42.209.200.80 -218.8.223.179 -217.42.8.13 -73.162.213.147 -122.138.21.239 -185.54.176.242 -98.167.116.215 -36.77.228.67 -223.90.2.226 -82.215.191.78 -218.206.143.64 -27.26.237.178 -27.225.155.151 -179.49.102.185 -101.14.87.53 -93.196.160.48 -143.176.60.186 -50.89.252.64 -1.202.68.46 -71.126.138.139 -188.158.133.253 -166.123.188.107 -51.174.239.234 -67.215.234.242 -76.1.134.36 -52.192.155.175 -84.18.119.234 -79.18.202.147 -121.222.73.221 -158.222.239.15 -179.177.43.162 -245.244.203.252 -146.95.242.153 -188.138.94.6 -86.156.226.66 -90.60.78.18 -151.228.203.83 -189.149.246.159 -183.204.177.60 -134.17.164.102 -67.185.236.237 -186.28.41.137 -96.245.102.206 -77.40.117.225 -86.134.143.53 -189.26.178.186 -0.0.0.64 -93.38.185.182 -180.214.232.78 -177.114.233.126 -92.109.225.38 -151.20.68.225 -49.255.228.150 -191.17.29.196 -114.125.149.172 -74.10.198.250 -87.117.14.188 -167.157.167.178 -69.4.130.106 -1.9.103.84 -254.155.170.131 -94.122.254.101 -212.140.117.196 -91.218.192.254 -1.181.176.1 -37.147.40.195 -85.212.12.143 -114.125.150.132 -67.193.70.129 -50.137.110.171 -118.98.74.149 -36.236.99.199 -222.82.139.110 -189.52.85.213 -121.112.208.42 -80.12.42.213 -73.131.151.71 -86.221.246.54 -73.154.137.10 -168.161.213.249 -142.197.30.169 -84.2.177.43 -208.91.65.91 -112.112.190.4 -187.16.54.162 -95.211.138.15 -101.184.251.38 -182.142.43.177 -85.25.217.233 -68.50.166.6 -89.201.6.46 -184.170.76.217 -68.97.157.47 -29.148.176.21 -253.34.102.37 -188.122.17.106 -100.64.0.89 -84.228.187.106 -125.253.98.143 -5.139.55.127 -194.77.215.7 -172.98.67.19 -188.194.187.126 -95.71.0.181 -187.56.142.137 -82.77.94.120 -139.241.166.128 -52.69.137.234 -78.36.35.83 -58.111.133.220 -171.4.220.133 -95.189.190.104 -87.216.73.94 -97.83.186.179 -120.25.82.229 -0.0.0.1 -109.67.222.205 -91.180.146.248 -37.49.216.254 -182.45.125.86 -85.73.201.73 -132.92.239.41 -37.164.187.157 -88.18.22.169 -193.182.144.63 -88.135.94.147 -81.110.75.241 -80.1.123.53 -192.95.29.153 -95.220.88.244 -112.112.188.194 -31.6.51.49 -100.4.173.207 -185.25.45.46 -101.105.32.19 -37.47.155.236 -24.241.116.254 -179.188.245.56 -71.82.140.179 -115.215.51.18 -71.80.195.179 -178.191.252.18 -61.231.60.197 -46.59.171.28 -0.0.0.142 -82.249.246.200 -87.97.47.27 -188.62.172.124 -91.6.98.40 -188.0.188.74 -79.195.183.127 -31.180.245.158 -23.25.16.149 -108.49.208.179 -97.117.190.119 -52.69.7.50 -253.87.194.56 -77.13.71.77 -99.34.125.115 -166.43.133.127 -147.229.131.89 -177.101.241.42 -201.252.151.49 -31.163.39.220 -86.84.255.120 -82.14.188.95 -73.132.50.37 -91.157.152.223 -70.29.41.215 -83.8.185.20 -180.110.220.196 -70.209.27.44 -157.75.45.18 -58.183.4.214 -79.234.0.139 -87.225.75.214 -253.116.217.73 -235.128.20.67 -68.35.218.223 -66.8.215.80 -212.18.53.63 -115.215.48.197 -37.17.110.193 -79.203.85.172 -84.251.35.122 -61.73.72.210 -79.210.110.126 -171.77.20.16 -184.53.32.11 -217.189.252.124 -117.140.238.53 -24.183.33.107 -80.135.97.247 -72.131.30.33 -87.134.114.216 -185.160.115.32 -91.121.77.74 -201.43.115.207 -177.103.62.111 -92.39.199.238 -151.228.200.248 -85.107.113.247 -170.158.145.240 -165.120.172.217 -92.112.224.28 -113.200.249.59 -73.138.193.253 -60.93.169.83 -97.121.110.16 -86.202.218.31 -83.239.255.137 -200.158.31.29 -112.97.50.124 -69.242.153.187 -114.232.38.157 -178.214.174.216 -104.40.212.43 -182.216.164.245 -87.171.219.248 -124.120.207.153 -217.103.73.143 -106.51.142.231 -211.25.18.221 -89.70.164.231 -92.124.68.237 -109.130.152.173 -83.209.191.200 -15.6.191.43 -78.250.28.168 -82.251.8.238 -178.84.101.85 -14.201.207.233 -217.114.218.24 -77.179.142.212 -41.250.177.207 -62.235.239.245 -63.87.77.227 -91.115.185.67 -79.23.58.90 -105.155.235.244 -211.149.148.151 -178.57.215.184 -80.234.101.152 -72.181.217.90 -86.199.138.253 -188.168.148.238 -254.174.0.233 -50.107.155.144 -5.141.122.230 -109.239.49.207 -74.208.133.18 -2.83.86.10 -97.127.111.116 -68.104.3.247 -63.87.254.89 -49.50.194.74 -60.236.198.201 -183.161.195.249 -71.91.2.177 -92.226.122.184 -138.255.221.36 -63.87.253.154 -94.253.50.178 -212.159.19.195 -92.38.96.94 -151.41.189.140 -25.121.150.189 -185.111.211.234 -49.113.3.148 -72.160.90.147 -68.133.5.18 -73.15.181.118 -171.4.191.111 -92.239.95.120 -66.220.241.138 -109.184.12.218 -95.57.157.86 -69.165.159.4 -1.114.12.3 -79.151.138.210 -31.173.84.242 -59.182.173.53 -78.51.249.222 -5.153.233.50 -63.87.77.227 -12.13.193.226 -106.121.37.171 -82.35.28.15 -109.165.15.183 -114.125.186.117 -42.81.69.211 -82.95.80.121 -68.109.194.64 -113.76.171.156 -117.151.143.244 -165.176.66.238 -178.234.24.73 -2.133.83.42 -31.6.45.42 -188.62.172.124 -92.101.205.105 -187.199.118.69 -46.28.207.25 -5.141.88.128 -87.72.36.124 -86.5.219.17 -123.136.107.70 -174.21.240.69 -83.78.179.150 -178.161.195.243 -188.28.158.229 -151.60.151.172 -190.182.248.6 -85.59.160.162 -187.122.220.36 -67.43.103.242 -0.0.0.110 -118.136.221.0 -49.216.103.31 -115.153.8.95 -89.12.99.213 -84.222.251.243 -75.134.29.103 -92.101.208.247 -173.62.188.225 -109.200.248.23 -92.226.124.165 -193.0.150.215 -173.94.93.166 -5.157.127.25 -201.152.195.28 -95.105.232.42 -109.120.8.198 -85.140.2.237 -79.234.14.192 -87.76.48.72 -162.216.113.202 -174.117.17.165 -217.70.251.133 -186.226.4.238 -116.216.30.43 -174.68.93.191 -87.110.59.78 -75.97.243.43 -184.164.147.82 -50.166.108.126 -91.79.95.254 -93.152.140.29 -87.153.10.251 -83.11.241.98 -124.178.37.111 -94.137.105.252 -2.234.231.42 -122.102.120.14 -110.22.138.153 -80.229.146.133 -0.0.0.5 -77.101.242.198 -77.176.215.31 -67.147.220.161 -87.68.47.27 -174.119.217.129 -31.163.72.108 -254.56.34.109 -104.246.50.10 -169.0.180.167 -37.214.159.121 -85.140.32.148 -213.157.232.237 -5.228.254.16 -169.68.87.71 -193.251.199.74 -93.134.233.56 -79.114.201.200 -95.25.11.132 -122.3.232.6 -37.35.202.126 -108.180.220.182 -94.113.110.166 -162.244.194.217 -72.193.217.148 -0.0.1.14 -62.235.113.235 -67.215.228.42 -67.87.55.27 -125.175.99.248 -75.93.169.201 -93.56.174.191 -67.191.50.73 -209.216.234.233 -91.41.177.107 -60.54.39.103 -149.210.169.35 -177.233.154.114 -191.125.178.7 -60.228.34.85 -14.200.115.30 -94.51.155.118 -109.106.141.54 -217.207.221.148 -0.0.192.18 -59.173.119.99 -104.34.16.248 -31.6.51.209 -78.223.238.225 -82.228.210.199 -78.140.145.204 -172.0.20.56 -77.40.101.158 -150.116.38.121 -176.194.128.57 -217.63.66.209 -176.100.185.142 -81.214.183.78 -77.51.129.215 -134.17.142.28 -191.183.185.38 -178.212.129.67 -186.136.90.152 -98.109.109.18 -169.1.156.117 -95.233.11.213 -74.114.131.34 -31.201.224.201 -67.215.14.106 -73.154.233.125 -151.80.206.105 -151.28.169.241 -78.34.149.97 -68.47.96.9 -186.212.204.252 -254.203.115.98 -217.118.81.232 -95.17.55.225 -84.50.21.116 -91.64.49.12 -46.99.51.224 -89.0.25.155 -98.207.89.152 -131.77.218.144 -24.160.54.59 -183.135.255.214 -2.245.77.239 -176.112.17.175 -188.232.105.1 -221.225.215.118 -218.132.39.89 -187.37.246.193 -201.235.130.141 -188.138.103.170 -162.216.46.89 -180.179.159.84 -124.230.230.109 -101.98.48.226 -177.153.51.198 -85.10.105.215 -85.195.52.90 -190.43.242.28 -85.165.175.23 -80.220.233.195 -37.247.74.122 -74.216.53.45 -63.87.255.249 -86.107.200.45 -41.250.124.244 -160.176.0.59 -37.59.43.20 -172.213.53.116 -213.176.250.157 -0.0.0.0 -221.213.53.114 -151.66.57.27 -83.134.98.230 -195.252.66.164 -84.122.243.22 -76.99.191.1 -188.221.219.218 -93.163.238.185 -83.30.56.1 -89.235.193.205 -120.55.80.212 -180.160.208.238 -86.223.152.65 -208.91.67.210 -5.9.85.14 -11.103.108.217 -176.193.89.71 -72.2.173.59 -111.19.89.24 -89.139.127.139 -69.62.191.21 -180.113.16.75 -70.65.184.2 -85.155.21.252 -205.251.171.136 -86.163.87.41 -73.249.211.100 -173.78.137.215 -83.32.189.210 -125.193.127.160 -213.141.130.188 -109.90.233.211 -178.150.46.178 -96.126.123.143 -185.160.93.175 -223.155.189.229 -42.60.202.210 -86.172.142.87 -139.129.6.134 -184.53.32.91 -63.247.147.166 -81.227.127.72 -68.187.104.58 -77.250.240.247 -93.84.218.136 -79.20.177.132 -25.91.113.253 -166.43.133.127 -68.145.236.222 -95.153.133.128 -81.11.221.15 -177.222.55.54 -109.188.121.5 -82.206.16.181 -200.169.190.69 -52.17.153.30 -145.61.201.188 -86.151.253.117 -123.160.91.203 -70.161.125.201 -88.122.97.63 -45.58.235.215 -85.25.133.20 -92.52.46.192 -37.79.147.28 -176.49.58.12 -95.79.92.81 -93.213.114.163 -98.248.223.158 -155.143.84.52 -2.245.71.45 -94.212.25.44 -91.210.217.236 -92.0.247.245 -200.180.105.149 -14.103.87.110 -104.60.128.188 -219.81.88.121 -114.125.191.35 -154.41.2.78 -89.0.227.251 -73.162.147.161 -77.178.71.82 -175.161.227.110 -213.79.43.89 -77.180.230.9 -188.162.166.129 -83.83.215.161 -182.251.115.159 -5.157.127.9 -178.2.77.70 -177.32.17.30 -5.9.106.132 -69.125.220.19 -137.139.150.40 -91.66.164.90 -125.42.214.46 -100.34.196.211 -65.133.53.103 -60.183.26.161 -186.107.171.14 -178.70.2.31 -91.64.157.58 -83.5.84.249 -101.177.228.206 -217.28.8.217 -94.137.39.21 -186.209.60.113 -79.112.135.7 -58.108.204.196 -69.46.195.222 -98.109.85.249 -178.93.148.1 -143.158.205.99 -58.104.63.171 -77.248.189.104 -72.173.205.206 -82.114.48.17 -31.179.120.196 -79.167.253.182 -108.230.191.120 -173.75.216.132 -2.95.174.223 -91.105.238.172 -68.196.122.205 -92.245.163.204 -241.39.170.118 -83.99.132.252 -172.10.132.218 -31.6.50.196 -58.249.97.239 -50.187.203.251 -59.182.158.38 -89.34.237.101 -101.19.154.97 -87.15.141.177 -96.248.122.64 -109.106.142.132 -50.58.53.206 -91.54.71.195 -25.114.17.18 -59.174.146.0 -78.63.158.220 -71.9.184.136 -5.157.127.33 -213.57.47.20 -189.168.126.45 -46.224.228.235 -229.47.32.222 -88.248.100.82 -85.197.19.38 -115.188.241.78 -31.6.50.95 -78.134.123.108 -109.152.181.20 -86.3.186.97 -68.104.62.36 -78.46.189.202 -119.253.64.38 -194.24.182.27 -254.150.54.5 -31.128.48.7 -176.109.185.70 -184.177.84.234 -71.126.175.159 -169.210.77.243 -94.192.36.236 -79.187.125.210 -74.75.117.59 -50.171.157.120 -112.112.191.165 -213.227.218.12 -78.223.238.225 -200.97.160.153 -136.199.215.163 -69.50.180.171 -94.181.237.248 -128.72.211.244 -78.29.71.253 -73.17.56.135 -187.137.141.92 -107.170.218.161 -24.122.34.75 -67.92.231.9 -164.215.245.107 -84.113.163.33 -87.76.60.133 -178.16.84.239 -146.255.183.137 -185.107.165.72 -207.244.76.221 -72.207.105.140 -95.38.170.40 -93.178.75.250 -77.255.46.168 -162.244.195.40 -151.16.163.106 -98.164.3.225 -93.80.180.153 -72.64.153.101 -178.45.141.202 -183.193.134.145 -217.196.194.186 -131.179.31.62 -88.66.9.87 -87.17.142.17 -81.145.148.2 -65.92.15.105 -90.255.126.133 -151.41.139.205 -71.100.179.172 -77.40.116.208 -77.177.222.210 -178.94.172.138 -123.201.5.103 -143.208.176.2 -5.144.98.76 -95.82.177.105 -199.176.38.93 -206.248.184.220 -37.187.115.45 -13.79.168.143 -109.161.99.181 -24.72.54.78 -119.145.7.57 -93.113.192.203 -178.155.116.99 -33.46.246.221 -128.90.61.238 -50.149.51.96 -74.72.225.204 -77.119.128.8 -77.178.111.213 -185.17.204.218 -192.71.151.83 -169.0.124.8 -71.183.46.106 -115.215.51.5 -77.241.47.222 -186.214.130.111 -0.0.0.0 -24.19.7.146 -201.213.47.94 -118.240.102.196 -195.248.186.129 -74.74.64.161 -71.227.98.164 -85.178.113.164 -183.99.42.210 -109.252.14.160 -127.181.247.52 -212.106.58.65 -170.105.173.75 -83.144.81.18 -184.1.3.151 -31.154.81.26 -68.96.174.79 -23.242.177.47 -90.202.85.19 -84.237.86.19 -76.94.17.92 -95.90.230.89 -220.244.238.129 -230.24.45.148 -81.245.247.106 -78.156.165.8 -78.216.88.12 -80.110.82.25 -123.211.43.41 -26.191.188.74 -37.214.7.200 -37.219.153.191 -216.172.142.97 -24.184.243.173 -178.79.164.165 -99.245.240.217 -iguana_bundle_set: no bundle at [2] -DOGE AUTOCREATE.4000 -new 1st.2 -BTCD.RT1253730 u.2507+c.2507 b.2507 v.2507 (0+230/230 1st.2507).s230 to 2507 N[2508] h.1253730 r.1253730 c.1253500 s.1253730 d.0 E.2507 maxB.64 peers.27/64 Q.(0 0) (L.1253730 2507:230) M.1253729 fa9dcf690dc038ec898789aa123350628f29ec4c2be538f725b2df766b00013e ledger.a80cd39714953dca bQ.61 0:03:39 stuck.0 max.0 -ramchaindata have 2:0 at 0 | 1082 blocks 564.678kb redundant xfers total 2978.180kb 18.96% wasted -new hdrs.txt 472 vs (confs/DOGE_hdrs.txt) 402 -iguana_bundle_set: no bundle at [3] -DOGE AUTOCREATE.6000 -DOGE.RT0 u.1+c.1 b.0 v.0 (0+4/2000 1st.2).s0 to 3 N[4] h.6001 r.4005 c.4000 s.4005 d.0 E.2 maxB.770 peers.1/256 Q.(1995 0) (L.673274 336:1274) M.6000 abdde162c2e54c80948c5395a39f6ca239ae3a0763bf9efbc85a85d01477b1fc ledger.00000000 bQ.62 0:00:36 stuck.0 max.0 - parse error block txn_count.2, n.451 len.-100 vs recvlen.452 from.(146.0.32.101) -EAC 146.0.32.101.block len mismatch -100 != 452 - parse error block txn_count.2, n.451 len.-100 vs recvlen.452 from.(146.0.32.101) -EAC 146.0.32.101.block len mismatch -100 != 452 -DOGE.RT0 u.1+c.1 b.0 v.0 (0+337/2000 1st.2).s0 to 3 N[4] h.6001 r.4338 c.4000 s.4338 d.0 E.2 maxB.770 peers.1/256 Q.(3315 0) (L.673274 336:1274) M.6000 abdde162c2e54c80948c5395a39f6ca239ae3a0763bf9efbc85a85d01477b1fc ledger.00000000 bQ.62 0:01:12 stuck.0 max.0 -DOGE BLOCKS.6250 RECV 3707.250kb ave 607.4 | dup.1057 553.301kb after.3 0.594kb 13.529kb/sec 100.00% ->> addcoin.DGB -launchcoin.DGB name.Digibyte -NETMAGIC dab6c3fa unitval.1e nBits.1e0ffff0 -COIN. serverport.(127.0.0.1:14022) userpass.() RPCport.14022 P2P.12024 magic.dab6c3fa -start.1471732214 -ADD ALLCOINS.(DGB) name.(Digibyte) size 4044312 numvirts.0 -BTCD EAC DOGE DGB allcoins -pend.(4096 -> 256) MAXMEM.4.00GB enablecache.0 VALIDATEDIR.(DB/purgeable) VALIDATE.1 RELAY.1 -launch.0x1ce400008 coinloop for.DGB services.0 started.0x0 peers.0x1ce9de000 -begin coinloop[1] DGB -i.8 m.8 numiAddrs.8 - netmagic.dab6c3fa init.(DGB) maxpeers.256 maxrecvcache.4.00GB services.0 MAXMEM.4.00GB polltimeout.10 cache.0 pend.(4096 -> 256) -clear hwmchain -DGB MYSERVICES.0 -genesis.(010000000000000000000000000000000000000000000000000000000000000000000000ad0f7d7518fc1e90ed28bd0e444ccd8e24d94688355705ed2142006b49d9dd726a62d052f0ff0f1e2459250000) zcash.0 len.80 hash.7497ea1b465eb39f1c8f507bc877078fe016d6fcb6dfad3a64c98dcc6e1e8496 ->>>>>>>>>> iguana_rpcloop 127.0.0.1:14022 bind sock.37 iguana API enabled <<<<<<<<< -size.248 genesis block PoW 0.000000 ptr 0.000000 -parsefile.0 confs/DGB_peers.txt -done parsefile.0 (confs/DGB_peers.txt) size.0 -parsefile.1 confs/DGB_hdrs.txt -DGB.PEER CONNECTED.1:1 of max.256! 212.129.1.77:12024 usock.40 -DGB.PEER CONNECTED.2:2 of max.256! 178.33.228.14:12024 usock.46 -DGB.PEER CONNECTED.3:3 of max.256! 157.161.128.58:12024 usock.47 -DGB.PEER CONNECTED.4:4 of max.256! 104.236.32.184:12024 usock.54 -DGB.PEER CONNECTED.5:5 of max.256! 108.61.10.90:12024 usock.48 -DGB.PEER CONNECTED.6:6 of max.256! 66.228.56.115:12024 usock.51 -DGB.PEER CONNECTED.7:7 of max.256! 167.160.36.126:12024 usock.52 -188.67.20.239 -92.110.103.112 -50.181.25.214 -50.76.102.9 -95.71.78.78 -109.228.4.100 -46.244.202.244 -88.3.193.105 -66.87.99.109 -24.224.18.93 -31.50.204.103 -105.158.127.63 -95.208.248.55 -72.171.192.188 -78.55.208.177 -78.8.2.228 -41.251.218.111 -173.28.178.229 -173.230.171.42 -95.211.134.28 -112.215.66.73 -77.173.130.232 -84.82.58.78 -109.145.153.156 -218.250.211.68 -141.211.155.93 -184.147.141.21 -72.191.195.23 -89.14.21.102 -1.0.0.0 -77.231.219.235 -13.92.243.94 -148.244.110.9 -93.104.119.79 -248.245.199.94 -188.4.40.193 -24.76.184.164 -89.75.71.107 -186.146.153.110 -87.217.126.168 -201.37.161.46 -188.162.39.231 -82.196.1.102 -189.140.140.184 -2.85.58.108 -59.49.159.208 -181.57.49.203 -171.149.2.249 -109.158.202.20 -85.165.205.22 -89.245.125.162 -46.70.170.189 -82.131.95.26 -83.38.181.78 -89.216.157.182 -173.210.233.18 -84.135.85.92 -93.128.165.45 -95.103.137.123 -83.243.219.3 -188.131.93.196 -83.22.231.158 -106.216.179.12 -14.192.213.52 -178.120.203.65 -92.249.249.175 -201.242.41.172 -151.228.122.105 -89.240.155.8 -78.8.98.33 -77.85.118.243 -151.15.31.42 -46.0.139.87 -125.160.197.79 -177.9.68.134 -86.31.36.91 -177.39.37.17 -217.235.244.72 -numtx.2 len.445 tmp/BTCD/RT/9db5e1adb2273c47f5d9d87cb33027cb3977688bc21992c5a353a713cae54422.raw hwm.1253729 L.1253730 -37.204.72.127 -92.37.46.31 -42.61.166.126 -BTCD Q.(9db5e1adb2273c47f5d9d87cb33027cb3977688bc21992c5a353a713cae54422) -42.112.237.73 -87.113.49.184 -93.33.1.88 -115.72.193.11 -86.135.20.143 -95.54.189.185 -82.74.43.190 -109.108.198.27 -50.153.151.32 -94.41.189.160 -50.126.114.236 -86.134.157.123 -92.145.13.111 -189.151.142.230 -108.61.228.25 -201.191.195.235 -113.254.168.141 -193.77.243.16 -220.179.36.72 -62.92.112.6 -78.28.250.81 -94.1.9.162 -197.119.104.39 -181.73.86.156 -188.220.132.161 -81.154.37.205 -114.243.109.38 -80.234.237.54 -124.40.244.90 -200.75.102.219 -190.67.216.182 -117.194.33.218 -85.178.73.121 -94.189.195.54 -42.119.218.128 -178.8.217.246 -79.129.191.41 -76.179.165.105 -217.235.246.193 -62.87.191.169 -105.225.82.183 -197.117.160.173 -31.57.195.195 -112.215.123.103 -188.221.167.127 -50.153.150.252 -96.240.84.92 -24.216.240.158 -159.8.124.180 -88.134.116.127 -176.14.105.238 -186.91.238.219 -119.59.148.45 -91.152.30.22 -223.204.251.231 -217.217.206.202 -178.33.209.212 -14.192.213.244 -190.77.92.178 -190.79.114.204 -41.244.240.53 -72.137.216.110 -95.71.122.120 -92.157.156.178 -90.26.144.244 -84.135.85.92 -188.129.107.92 -91.115.55.194 -101.98.215.166 -78.84.119.222 -81.234.218.87 -77.253.20.26 -49.81.161.1 -95.79.204.23 -189.217.250.0 -108.117.162.252 -24.217.39.5 -88.30.205.112 -174.88.126.8 -68.195.171.102 -211.205.165.22 -184.5.10.222 -79.44.22.115 -2.96.253.212 -180.252.99.168 -86.166.50.110 -84.79.112.88 -190.70.89.83 -118.213.127.232 -90.255.102.242 -63.87.255.251 -250.31.16.246 -115.70.4.78 -42.118.109.18 -71.254.160.56 -84.147.117.226 -72.220.145.211 -27.55.211.239 -189.162.41.151 -46.190.34.42 -151.61.105.117 -145.52.163.202 -88.88.17.50 -159.206.179.155 -24.20.198.24 -116.228.220.90 -128.72.185.199 -120.144.72.51 -78.69.230.184 -114.121.154.67 -188.196.160.204 -178.184.15.205 -87.242.49.243 -156.17.80.242 -69.114.82.72 -89.37.62.17 -180.241.51.70 -2.96.250.196 -50.191.20.165 -86.135.21.114 -83.26.96.53 -83.11.171.209 -109.90.216.94 -95.30.175.90 -173.28.197.230 -83.185.91.165 -125.160.199.117 -99.242.169.14 -93.81.240.99 -200.116.33.70 -5.254.97.76 -74.93.202.189 -111.240.212.81 -85.99.37.229 -197.37.149.32 -25.215.93.124 -177.249.207.13 -83.230.167.102 -151.225.69.1 -46.244.218.156 -87.14.218.26 -45.56.151.21 -86.181.101.168 -87.5.22.81 -37.146.68.48 -192.150.150.4 -178.162.217.145 -95.24.41.110 -213.198.237.54 -78.6.102.70 -50.153.149.36 -45.56.151.111 -83.37.188.164 -201.243.6.169 -146.60.60.174 -46.109.129.53 -5.56.29.168 -87.174.21.43 -88.183.207.177 -95.8.63.0 -190.79.6.198 -50.169.246.145 -73.18.105.88 -46.165.228.119 -189.202.88.14 -178.73.196.42 -93.33.10.136 -76.164.228.226 -186.90.2.208 -188.9.165.185 -54.84.26.112 -109.43.3.224 -75.111.51.213 -75.156.118.46 -91.158.215.5 -50.92.17.249 -46.254.11.158 -119.104.153.35 -79.117.65.63 -134.3.52.202 -58.9.84.79 -71.236.205.20 -36.77.53.226 -189.162.241.66 -173.192.176.155 -186.31.38.190 -68.38.91.132 -186.146.136.133 -104.193.10.252 -81.100.220.75 -190.74.29.208 -148.251.19.213 -171.39.27.99 -113.167.204.14 -5.44.173.27 -128.90.43.127 -86.160.91.44 -74.51.57.173 -5.141.169.226 -187.101.142.19 -89.176.160.79 -188.73.192.57 -151.25.116.38 -69.164.195.142 -83.79.83.89 -148.67.110.53 -83.36.252.241 -119.94.224.223 -183.198.204.209 -75.18.41.253 -68.45.101.13 -201.248.21.151 -79.112.46.242 -209.240.42.164 -202.62.16.184 -37.46.120.8 -197.202.245.82 -86.178.41.209 -90.104.92.241 -36.77.54.235 -186.88.137.96 -73.171.102.18 -174.61.149.195 -90.0.104.178 -190.88.244.75 -193.92.113.47 -5.238.230.209 -179.55.42.75 -85.75.31.235 -219.79.191.98 -63.131.190.227 -93.170.111.72 -83.27.106.105 -94.74.124.50 -95.219.101.18 -178.157.238.33 -85.76.55.161 -173.74.170.43 -79.236.241.93 -73.246.93.168 -81.44.223.141 -214.104.252.143 -120.59.90.181 -187.136.8.147 -79.206.165.26 -90.163.244.24 -188.69.199.38 -108.19.160.97 -88.113.24.32 -79.245.223.4 -76.189.155.179 -198.8.80.42 -178.115.130.209 -31.23.254.160 -46.244.201.131 -93.138.0.190 -37.146.126.21 -177.225.193.106 -86.189.14.29 -190.204.45.31 -92.43.188.19 -118.68.183.197 -31.14.92.129 -37.235.136.34 -201.240.218.44 -187.255.236.182 -186.155.16.238 -158.69.31.37 -2.102.255.77 -188.191.23.100 -90.244.39.181 -66.228.50.86 -79.45.210.96 -178.217.28.60 -188.4.143.63 -95.73.247.153 -23.233.28.199 -178.120.157.94 -87.169.172.89 -178.122.64.75 -1.52.142.34 -23.92.210.2 -41.96.46.230 -212.228.253.143 -176.222.254.161 -185.9.113.48 -141.211.155.93 -195.225.189.201 -130.25.88.216 -24.122.34.75 -72.241.236.178 -5.69.126.45 -116.12.60.74 -200.75.100.33 -36.78.197.169 -213.186.43.35 -80.110.112.148 -31.208.121.209 -190.36.221.26 -125.69.36.198 -218.166.40.153 -90.1.218.225 -0.0.0.0 -109.81.214.244 -0.0.0.0 -145.133.165.175 -187.75.18.65 -79.16.101.103 -186.79.30.184 -2.100.80.66 -81.245.103.159 -49.49.140.58 -213.125.176.82 -88.141.107.40 -115.184.229.102 -188.108.111.118 -177.205.72.70 -41.95.222.186 -193.191.182.129 -105.100.15.198 -189.217.124.237 -5.104.119.177 -95.114.91.93 -39.255.148.136 -187.224.3.46 -2.85.50.94 -67.60.37.68 -217.28.15.120 -92.127.115.141 -222.243.244.245 -99.224.255.173 -100.32.32.157 -63.245.12.218 -190.37.210.73 -90.31.193.71 -189.219.123.4 -71.197.2.127 -1.56.139.42 -178.13.156.31 -27.9.99.29 -67.179.30.187 -2.85.51.146 -114.244.50.22 -84.147.127.16 -83.223.168.28 -118.211.231.131 -151.227.55.136 -188.143.73.66 -79.133.135.189 -109.74.162.141 -94.189.210.210 -104.45.151.45 -176.9.65.41 -1.204.248.148 -88.231.216.214 -95.26.169.115 -73.182.210.38 -176.85.59.61 -0.0.0.0 -46.127.223.159 -5.140.203.56 -213.74.111.185 -202.62.16.44 -94.208.224.23 -5.55.219.24 -202.62.16.185 -87.202.20.199 -188.193.66.115 -2.103.201.46 -113.254.170.53 -66.55.134.215 -79.255.228.15 -190.207.219.55 -82.34.182.46 -86.2.137.161 -85.26.186.57 -185.48.37.18 -163.157.186.231 -144.76.107.81 -85.76.79.28 -92.124.35.133 -195.154.223.134 -214.20.111.167 -81.167.129.247 -103.238.131.9 -116.1.79.170 -213.111.129.137 -80.130.219.93 -41.96.44.147 -142.217.6.115 -125.160.197.79 -BTCD Q.(9db5e1adb2273c47f5d9d87cb33027cb3977688bc21992c5a353a713cae54422) -46.0.123.80 -42.115.112.202 -45.74.37.191 -50.247.211.162 -86.31.128.135 -88.152.187.216 -109.81.208.9 -151.246.175.245 -96.19.205.233 -206.255.73.147 -0.0.0.2 -5.45.62.132 -86.172.87.26 -46.127.3.79 -41.13.28.225 -85.23.47.0 -94.214.154.144 -84.147.115.39 -39.48.117.118 -85.253.131.68 -90.171.247.95 -20.221.160.10 -177.204.181.73 -52.160.104.172 -109.202.103.170 -176.101.222.25 -193.140.108.200 -93.34.38.192 -87.188.231.31 -79.88.68.160 -202.62.16.250 -91.156.99.163 -105.226.24.161 -80.106.197.143 -184.58.176.59 -79.203.74.2 -47.72.75.30 -60.50.198.153 -83.78.39.182 -190.202.240.41 -179.182.173.68 -91.141.3.205 -115.234.72.83 -105.229.17.151 -104.200.154.4 -112.198.90.66 -91.241.96.80 -91.213.143.252 -79.46.237.32 -68.7.221.120 -124.237.96.40 -94.237.69.213 -37.49.195.93 -41.150.92.101 -152.7.224.4 -117.93.41.45 -186.93.147.31 -46.208.8.139 -101.175.148.10 -66.87.97.220 -190.177.79.90 -109.149.125.213 -191.182.113.42 -92.124.24.164 -94.66.57.14 -167.114.210.50 -68.186.235.174 -5.80.233.62 -187.200.216.7 -88.3.62.153 -178.65.220.234 -161.10.149.45 -79.203.64.189 -53.193.238.189 -190.37.33.237 -113.64.8.2 -119.250.170.96 -84.57.37.17 -74.12.132.227 -151.15.140.162 -87.123.84.175 -178.21.53.32 -79.245.200.245 -80.106.197.231 -95.145.103.100 -213.87.135.19 -68.247.63.230 -77.243.183.6 -79.41.177.89 -160.76.210.181 -92.236.185.152 -84.138.79.116 -89.67.104.161 -109.126.239.154 -201.29.103.139 -141.169.131.222 -188.196.185.78 -37.193.83.134 -151.33.30.14 -185.46.249.145 -94.66.222.49 -93.137.184.82 -187.143.212.81 -188.246.88.206 -83.22.216.151 -100.68.32.93 -2.134.151.183 -171.96.167.239 -105.107.10.11 -177.11.141.37 -173.75.34.129 -95.252.103.149 -179.55.38.106 -85.62.66.80 -176.94.190.132 -99.115.55.175 -124.179.114.122 -46.229.142.239 -5.164.175.33 -87.105.139.236 -190.77.15.100 -109.169.249.4 -87.64.198.235 -213.151.10.46 -109.130.11.141 -176.108.251.252 -98.90.66.93 -23.102.39.37 -95.91.216.136 -187.74.67.39 -24.65.239.116 -201.243.120.205 -177.39.36.198 -71.31.222.58 -167.58.82.108 -95.211.188.20 -79.245.211.20 -62.158.140.92 -120.56.210.60 -41.96.87.98 -152.234.187.32 -83.18.161.60 -223.207.223.48 -222.222.0.100 -191.111.154.157 -0.0.0.2 -72.186.22.189 -99.199.0.43 -91.141.0.23 -187.170.111.199 -31.201.226.136 -75.192.154.137 -94.109.73.107 -76.26.221.186 -192.252.163.166 -115.87.132.101 -177.39.38.229 -58.109.155.212 -85.114.184.188 -71.91.68.75 -2.222.243.0 -108.24.75.98 -125.37.77.218 -190.207.174.146 -177.148.198.206 -92.37.37.214 -94.23.213.47 -186.89.117.109 -151.66.226.64 -178.162.217.141 -190.203.216.244 -93.117.170.201 -37.187.27.4 -152.251.182.108 -65.19.193.61 -83.29.138.193 -116.86.244.49 -93.136.96.112 -84.35.252.67 -90.110.135.137 -69.36.215.49 -198.8.80.74 -202.29.213.22 -67.188.197.9 -90.202.161.107 -95.211.184.238 -95.99.201.198 -82.22.16.148 -77.243.181.197 -37.113.210.202 -24.224.208.222 -27.0.87.66 -49.224.208.189 -195.240.97.58 -114.250.97.42 -173.245.195.146 -213.137.36.3 -113.135.133.32 -105.233.77.238 -83.7.184.139 -79.112.77.62 -116.49.162.24 -91.105.23.69 -24.196.86.99 -68.7.186.217 -79.16.22.134 -73.24.73.220 -49.102.165.36 -85.192.189.44 -201.209.204.52 -82.57.120.206 -82.249.167.111 -190.252.108.184 -37.113.160.17 -85.115.248.16 -89.12.212.63 -184.180.177.220 -84.43.156.72 -5.238.193.243 -79.133.153.174 -94.209.4.28 -71.15.250.17 -93.129.131.196 -5.71.235.230 -89.182.253.209 -189.62.64.38 -213.152.161.40 -41.105.232.168 -117.64.78.83 -78.47.193.211 -92.110.103.112 -219.108.240.211 -100.119.4.182 -194.44.30.2 -100.87.134.150 -78.0.38.171 -115.178.197.85 -71.194.69.143 -109.173.7.165 -2.85.50.0 -101.98.215.166 -88.3.182.224 -104.238.174.163 -92.146.35.80 -130.125.76.216 -67.204.18.28 -109.43.3.68 -95.73.31.110 -81.4.217.106 -70.29.238.151 -192.153.117.80 -115.230.151.184 -186.116.109.197 -85.214.106.35 -178.44.18.77 -104.207.136.88 -90.58.15.188 -112.208.104.65 -109.93.163.111 -67.32.161.202 -79.184.170.208 -125.162.110.180 -171.250.154.38 -85.76.13.139 -176.69.119.54 -68.188.86.244 -1.0.0.0 -162.199.254.242 -115.87.132.196 -127.208.79.146 -105.225.199.114 -175.137.181.138 -109.121.5.170 -89.16.155.243 -77.106.143.102 -190.51.144.246 -186.36.144.204 -36.77.7.80 -192.226.172.95 -106.51.72.108 -65.78.170.163 -181.49.78.74 -108.216.28.224 -91.48.62.129 -128.71.66.238 -94.70.30.51 -37.214.177.82 -5.220.233.170 -77.46.212.194 -71.47.188.11 -79.208.99.94 -131.94.186.32 -212.112.150.250 -117.79.232.179 -36.85.114.168 -83.9.53.181 -171.149.2.249 -46.98.111.246 -31.135.217.98 -36.78.199.223 -177.135.31.118 -64.214.214.26 -187.252.248.11 -174.52.86.133 -232.139.5.49 -79.24.221.192 -31.173.121.85 -2.218.14.123 -93.151.50.62 -113.254.165.23 -84.26.74.79 -46.196.248.137 -92.177.39.117 -213.137.36.3 -201.185.2.118 -185.45.13.150 -67.86.22.30 -98.225.134.65 -190.201.194.107 -71.1.243.123 -2.30.202.79 -178.221.143.49 -62.68.98.105 -79.204.129.29 -24.126.75.249 -46.164.162.209 -191.36.205.39 -186.14.170.191 -100.68.67.248 -31.132.225.141 -49.196.10.208 -120.144.147.163 -217.235.247.159 -5.141.220.57 -104.156.228.78 -72.220.67.181 -94.190.41.3 -201.51.32.43 -37.112.82.224 -171.96.167.13 -185.3.151.76 -109.167.253.97 -104.200.151.45 -217.95.237.148 -79.30.78.159 -212.228.253.143 -162.156.12.78 -77.79.183.87 -188.36.91.25 -184.97.246.75 -24.114.65.30 -98.167.190.207 -93.47.132.54 -46.28.102.197 -89.38.35.81 -85.150.137.211 -76.18.138.1 -95.153.135.215 -115.64.230.105 -86.133.95.54 -109.43.2.201 -104.200.151.28 -95.237.83.104 -80.236.18.96 -100.69.171.221 -178.223.4.97 -112.215.124.145 -190.192.23.70 -31.53.114.101 -2.125.75.60 -185.132.31.250 -179.55.73.194 -209.128.32.96 -189.81.73.33 -81.141.1.94 -96.245.155.8 -187.71.53.134 -31.210.181.216 -58.179.179.121 -198.27.81.25 -202.62.17.29 -217.235.247.159 -109.200.105.116 -37.212.78.20 -94.230.147.32 -74.129.51.67 -86.95.134.254 -71.79.59.180 -179.232.147.95 -154.98.227.46 -42.116.94.38 -59.172.134.35 -81.155.43.125 -120.25.220.239 -43.249.128.178 -153.163.198.9 -76.27.82.111 -84.161.245.57 -70.197.9.56 -177.205.76.64 -86.178.41.209 -2.217.129.142 -86.115.124.76 -85.192.155.40 -50.23.65.53 -185.65.132.120 -186.88.105.155 -74.110.18.17 -83.131.227.230 -2.122.179.220 -188.69.193.229 -90.1.201.108 -36.228.0.209 -79.116.46.102 -113.173.78.173 -79.235.240.183 -69.55.253.225 -87.185.5.10 -109.222.133.209 -71.97.31.194 -94.205.1.88 -192.0.246.12 -95.153.132.252 -78.225.114.147 -46.65.47.27 -191.242.108.6 -2.25.83.199 -67.219.165.208 -107.153.110.3 -46.166.188.201 -62.210.142.205 -186.93.227.223 -96.31.213.190 -117.81.188.30 -68.42.43.10 -5.14.59.177 -151.238.38.228 -128.70.67.115 -79.50.98.29 -204.210.192.216 -49.237.141.56 -157.161.128.58 -91.48.43.147 -163.172.5.218 -97.107.170.148 -5.71.235.230 -87.112.213.139 -84.6.14.89 -158.181.103.107 -217.253.250.52 -186.14.225.8 -151.227.90.42 -187.189.89.65 -46.217.87.64 -187.147.162.219 -110.115.32.92 -0.0.0.0 -109.43.2.172 -62.84.92.133 -217.235.253.237 -46.98.12.7 -64.238.142.34 -81.153.30.185 -84.135.89.49 -109.208.162.161 -171.96.168.43 -189.208.224.10 -87.146.1.30 -131.170.5.3 -184.147.110.200 -95.24.125.242 -83.87.59.199 -73.148.83.188 -95.141.27.42 -189.187.23.217 -100.3.40.210 -189.144.214.86 -202.62.16.6 -80.30.27.202 -178.40.244.207 -217.235.251.141 -37.14.206.225 -177.32.113.77 -31.10.148.216 -76.97.73.147 -138.186.31.224 -50.82.8.135 -195.208.169.199 -31.215.252.166 -87.102.171.10 -71.220.184.56 -191.34.104.210 -106.51.68.190 -188.27.207.162 -88.217.180.79 -145.249.122.58 -85.241.84.162 -114.125.189.65 -68.118.145.246 -31.5.84.134 -78.8.79.103 -79.245.211.138 -189.27.245.23 -62.210.129.149 -95.153.130.87 -50.203.141.242 -115.87.121.70 -120.24.185.169 -122.169.144.108 -79.203.109.201 -39.36.126.201 -50.115.175.125 -42.115.32.180 -147.102.7.140 -5.141.222.22 -121.219.34.189 -189.250.43.81 -91.48.62.22 -178.64.4.120 -5.42.93.15 -113.254.170.32 -218.10.254.174 -90.26.107.13 -182.87.167.75 -42.3.196.180 -93.205.27.117 -124.122.40.135 -93.3.222.243 -110.137.164.148 -80.233.175.26 -201.248.29.162 -151.250.29.8 -27.55.88.115 -90.191.107.13 -124.171.65.134 -136.19.111.83 -201.4.93.39 -100.96.96.80 -59.60.142.66 -128.75.207.123 -101.40.2.34 -200.82.195.152 -60.36.104.63 -94.68.239.19 -186.241.88.87 -213.10.208.153 -190.201.211.71 -49.15.134.85 -93.208.97.238 -125.164.131.170 -174.136.99.162 -70.21.184.26 -79.19.139.179 -108.24.81.3 -192.169.99.5 -189.203.252.6 -190.71.185.20 -195.209.48.241 -73.194.194.246 -86.128.193.18 -24.246.1.124 -139.192.136.198 -0.0.0.0 -5.142.17.20 -79.250.34.211 -125.253.100.212 -98.226.165.234 -2.85.63.4 -156.35.41.121 -24.157.203.140 -184.65.51.56 -208.167.254.83 -86.145.48.164 -95.53.33.237 -95.25.224.237 -66.115.115.71 -37.110.42.40 -179.43.169.226 -36.77.56.163 -213.151.0.157 -83.110.15.125 -92.24.138.189 -121.97.142.141 -219.73.15.219 -199.48.245.136 -197.37.109.104 -41.96.181.99 -24.207.31.254 -88.217.181.55 -BTCD received.(9db5e1adb2273c47f5d9d87cb33027cb3977688bc21992c5a353a713cae54422) 62.75.145.171 -112.215.124.101 -87.185.17.73 -83.81.128.127 -174.116.154.161 -112.198.90.66 -24.6.230.63 -217.30.64.174 -79.107.70.67 -88.232.120.46 -80.135.27.68 -70.51.113.56 -95.17.245.173 -190.53.24.149 -99.121.207.38 -187.10.148.221 -187.113.141.19 -81.141.9.113 -197.202.207.40 -64.237.37.121 -186.89.165.251 -142.217.0.115 -92.54.117.105 -24.36.232.237 -104.156.237.45 -83.61.204.226 -104.245.235.99 -197.229.24.58 -BTCD RTiterate.1 offset.230 numtx.2 len.445 -95.26.99.197 -83.185.84.90 -25.30.29.187 -82.150.59.202 -217.44.16.68 -BTCD txid.(bea6e13bf3e2a8fd110d7dbdbebc381b2e3d41e937e6ec969fb2db3b6659e86d) vouts.1 vins.1 version.1 lock.0 t.1471732213 1 -107.153.110.4 -5.83.18.254 -42.2.89.228 -41.105.224.24 - script type.0 scriptlen.0 -42.203.128.15 -128.71.66.238 -171.5.189.218 -117.52.89.217 -unspent[460] <- 0x1de9653f0 -84.161.57.134 -149.154.194.207 -1 RRjK2yufHUbEBDSBGny9Xgwz8bxiWBC3m7 0.00000000 h 0.00000000, cr 0.00000000 deb 0.00000000 [0.00000000] numunspents.461 0x1de9653f0 -94.68.53.253 -83.238.218.135 -88.232.141.237 -BTCD txid.(5859a4f02452c290a319caa7787bf56df27736ea801bc2d3d8aae852cc2ff23d) vouts.3 vins.1 version.1 lock.0 t.1471732213 1 -37.79.166.32 -111.69.249.244 -79.245.200.98 - script type.0 scriptlen.0 -219.79.24.40 -114.221.101.214 -unspent[461] <- 0x1df020700 -46.172.223.168 -189.214.6.82 -86.216.248.101 -1 RRjK2yufHUbEBDSBGny9Xgwz8bxiWBC3m7 0.00000000 h 0.00000000, cr 0.00000000 deb 0.00000000 [0.00000000] numunspents.462 0x1df020700 -190.236.62.194 -114.215.108.16 -78.12.45.89 -188.29.165.91 -21201.209.186.95 -104.129.28.138 -0290.26.80.8 -88.207.15.213 -cf189.33.207.221 -90.231.249.237 -128.68.191.167 -b380.107.67.242 -125.205.241.137 -3e79.245.220.195 -53.193.239.40 -e4202.62.16.79 -aa181.62.175.109 -85.212.88.66 -5080.215.234.95 -83.5.157.96 -213.24.135.217 -c237.24.152.116 -96.51.33.189 -93.116.236.201 -ad254.159.87.143 -119.247.152.218 -51201.210.134.209 -190.205.77.192 -0f5.254.97.91 -101.191.38.98 -193.92.193.216 -ee189.157.62.249 -24.112.51.69 -8378.194.124.49 -79.44.244.208 -cd91.61.91.168 -190.206.173.34 -7782.176.210.145 -116.14.165.116 -58190.219.122.15 -143.48.117.192 -6a178.234.120.45 -0.0.0.0 -1788.254.73.55 -128.72.218.191 -6278.226.118.202 -83.254.56.120 -fa254.107.115.127 -94.132.250.81 -24177.134.15.73 -88.75.246.64 -69190.72.183.146 -1a78.43.75.120 -185.19.23.255 -188.67.232.196 -9f177.158.244.187 -167.114.210.50 -2d109.221.4.90 -50.100.47.236 -e3178.254.189.80 -218.18.250.73 -104.200.151.35 -5e219.73.12.245 -99.231.166.10 -7b5.141.203.4 -79.101.223.117 -1579.245.200.242 -93.104.125.110 -1781.182.88.122 -83.36.209.130 -2846.59.37.170 -90.191.107.13 -c9180.242.27.12 -187.212.0.46 -8c78.8.11.132 -92.80.241.212 -ac148.240.4.249 - script type.12 scriptlen.35 -77.218.228.54 -93.170.111.46 -45.18.172.187 -217.253.224.100 -179.34.61.194 -95.211.188.21 -24.114.54.208 -91.48.40.244 -50.141.78.149 -2.24.124.97 -88.254.126.246 -36.83.169.217 -93.220.95.29 -46.198.202.96 -81.141.23.236 -1.190.67.181 -182.165.46.188 -188.246.79.155 -79.183.22.252 -122.105.192.219 -190.201.165.99 -199.48.243.62 -115.66.217.157 -178.234.10.109 -5.165.99.135 -95.159.217.77 -148.198.187.153 -89.142.190.82 -178.168.98.175 -68.197.64.6 -113.254.165.210 -77.54.234.91 -107.182.228.5 -14.192.208.7 -84.105.251.196 -59.58.245.158 -110.168.231.209 -86.176.46.245 -186.90.170.255 -121.214.138.124 -79.245.207.48 -91.221.191.67 -31.132.225.141 -185.38.0.66 -179.55.38.56 -82.176.12.130 -82.240.26.30 -114.244.63.142 -201.242.169.121 -201.242.65.143 -24.224.18.228 -178.59.210.188 -151.80.206.110 -178.0.4.123 -200.84.239.151 -193.191.182.129 -120.144.12.147 -5.89.197.88 -113.254.165.199 -140.168.246.252 -188.134.46.175 -202.62.17.29 -80.215.178.164 -178.234.138.208 -109.43.0.79 -112.198.77.150 -79.40.96.252 -81.141.8.117 -217.235.251.238 -78.137.13.183 -79.204.185.44 -181.208.17.17 -188.73.193.11 -172.206.235.188 -45.18.172.187 -95.137.245.107 -113.187.0.202 -95.113.55.151 -92.102.77.39 -54.84.114.124 -92.127.0.85 -87.185.27.131 -115.87.57.186 -81.141.9.194 -27.130.69.137 -69.167.27.161 -79.19.139.179 -unspent[0] <- 0x1de965ab0 -186.104.194.203 -79.245.219.154 -1 RV6H9qZuGy1wPeNeLisvdAeo44ZhgNdWZF 25.18000000 h 322.37935027, cr 25.18000000 deb 0.00000000 [347.55935027] numunspents.1 0x1de965ab0 -95.153.134.7 -46.246.53.6 -2.85.61.30 -87.20.19.191 -109.74.173.65 -2189.237.21.10 -1.0.0.0 -0285.178.67.47 -87.245.50.14 -cf109.172.15.13 -110.184.11.142 -94.242.253.47 -b3148.101.58.204 -179.148.153.247 -3e86.184.140.225 -69.164.198.161 -95.89.172.77 -e4131.246.225.154 -185.54.176.240 -70.52.148.148 -aa213.55.176.159 -177.133.204.246 -217.71.45.241 -50186.214.224.142 -158.255.208.153 -116.252.202.50 -c2198.98.118.241 -189.230.248.129 -5.138.217.118 -ad178.223.29.34 -76.214.117.231 -142.217.13.41 -5124.86.110.55 -104.156.240.159 -89.182.54.95 -0f223.204.249.139 -46.147.5.238 -ee91.48.57.111 -88.241.49.194 -83190.207.231.49 -178.121.115.104 -190.80.140.20 -cd53.193.239.184 -98.124.243.45 -7766.25.183.201 -85.175.20.156 -89.178.7.220 -5841.105.238.117 -46.5.17.18 -120.164.44.57 -6a23.19.99.99 -186.92.215.94 -17178.234.212.119 -109.76.80.59 -6277.168.118.113 -84.55.21.83 -155.138.228.234 -fa37.235.146.166 -87.1.100.199 -219.73.15.54 -24184.166.27.254 -79.245.215.231 -0.0.0.0 -6989.243.57.163 -188.67.255.22 -79.204.180.184 -1a95.141.28.122 -83.152.218.44 -9f201.29.97.210 -2d79.102.35.55 -114.23.246.230 -e381.162.122.102 -46.167.64.6 -5e77.172.117.134 -66.188.53.149 -118.208.67.20 -7b49.248.141.218 -62.113.202.175 -89.88.92.232 -1599.230.140.54 -124.200.255.10 -217.118.83.145 -17180.213.84.12 -79.245.218.167 -79.245.216.198 -28190.37.151.167 -74.87.88.186 -103.11.51.223 -c995.78.56.67 -121.141.52.83 -8c190.204.33.20 -178.120.96.199 -89.70.125.85 -ac91.150.150.10 -95.153.135.34 -46.159.211.91 - script type.12 scriptlen.35 -82.208.124.9 -187.79.201.156 -189.223.24.154 -unspent[1] <- 0x1df021380 -216.144.236.178 -183.44.24.92 -109.88.174.139 -1 RV6H9qZuGy1wPeNeLisvdAeo44ZhgNdWZF 25.19561271 h 322.37935027, cr 50.37561271 deb 0.00000000 [372.75496298] numunspents.2 0x1df021380 -217.71.46.52 -71.234.30.181 -45.56.148.19 -96.126.114.208 -219.90.169.227 -91.127.155.195 -152.236.18.53 -196.210.126.224 -78.173.51.220 -89.179.246.179 -1.0.0.0 -78.12.56.55 -186.93.42.117 -188.0.47.153 -213.103.202.73 -181.39.238.154 -189.13.228.11 -104.228.212.114 -216.144.236.234 -95.174.118.136 -5.254.97.75 -189.205.155.95 -162.219.176.251 -117.207.3.59 -79.206.172.204 -14.28.137.110 -91.158.214.192 -36.74.241.234 -151.238.70.86 -83.132.173.152 -62.4.196.157 -93.143.130.111 -193.186.75.63 -178.128.103.21 -188.67.35.161 -83.32.1.155 -109.74.155.246 -178.33.209.212 -88.71.238.22 -70.75.235.215 -104.200.154.25 -78.35.142.98 -89.212.229.112 -50.71.224.43 -119.76.74.173 -86.174.218.202 -216.231.140.113 -130.120.193.9 -95.106.184.230 -190.74.248.142 -37.113.132.32 -223.207.201.112 -36.78.195.142 -72.131.109.127 -50.46.209.204 -120.180.45.219 -118.232.25.14 -183.18.203.23 -104.156.240.206 -223.255.231.154 -182.249.242.1 -173.230.40.101 -213.176.245.198 -202.62.16.164 -104.207.149.1 -79.184.49.72 -78.238.254.189 -177.39.36.198 -187.149.224.11 -78.137.13.162 -5.141.220.191 -37.213.209.241 -188.105.65.2 -24.76.205.4 -84.19.166.59 -68.9.115.43 -36.83.38.210 -78.85.255.60 -186.36.78.101 -111.106.184.29 -69.172.159.46 -1 RV6H9qZuGy1wPeNeLisvdAeo44ZhgNdWZF 50.37000000 h 322.37935027, cr 50.37561271 deb 50.37000000 [322.38496298] numunspents.2 0x1db5c0830 -174.53.83.127 -89.164.158.156 -186.116.109.197 ->= RTnewblock RTheight 1253731 prev 1253730 -59.45.80.70 -186.151.63.70 -BTCD received.(9db5e1adb2273c47f5d9d87cb33027cb3977688bc21992c5a353a713cae54422) 62.75.145.171 -67.141.24.177 -186.212.213.173 -201.208.230.192 -87.158.141.2 -84.236.0.48 -223.204.241.22 -67.0.16.80 -104.230.82.88 -178.12.104.141 -64.219.84.21 -41.105.241.176 -54.165.27.102 -186.90.4.216 -173.199.65.48 -37.23.144.85 -82.232.14.27 -46.146.133.151 -176.65.127.64 -2.87.62.80 -173.189.166.149 -186.94.18.103 -95.81.195.38 -99.224.242.213 -223.204.242.4 -178.128.79.128 -31.181.197.19 -60.26.198.94 -79.167.251.27 -222.230.78.84 -190.255.14.124 -150.254.137.21 -180.252.107.21 -93.168.54.86 -254.198.167.212 -36.76.40.152 -121.45.12.104 -87.189.108.93 -39.48.56.63 -202.62.17.244 -78.10.239.51 -66.57.162.154 -112.66.50.86 -88.13.185.135 -178.223.12.7 -49.199.160.43 -70.44.97.147 -191.223.60.22 -84.198.202.93 -201.229.73.182 -82.169.246.212 -177.114.215.199 -223.204.246.82 -27.34.30.7 -190.201.29.210 -184.146.154.164 -145.255.21.14 -162.255.117.106 -181.73.86.156 -76.65.62.190 -218.142.99.184 -211.186.254.91 -67.140.13.51 -167.56.119.30 -174.77.224.21 -189.82.147.136 -77.243.183.105 -75.61.109.29 -46.31.38.113 -213.114.131.16 -24.166.104.143 -219.79.25.40 -78.35.139.197 -83.4.180.229 -184.5.8.134 -91.77.226.227 -41.96.65.27 -80.213.211.183 -0.0.0.0 -100.68.7.223 -77.51.51.85 -79.185.197.97 -89.117.26.93 -113.254.169.206 -46.190.63.53 -190.38.26.230 -109.228.149.33 -189.114.232.39 -83.10.98.169 -86.46.62.112 -103.254.148.9 -84.86.163.70 -112.198.90.3 -189.223.10.118 -174.92.36.11 -98.195.116.168 -112.198.100.11 -178.79.159.234 -86.159.35.225 -79.107.73.84 -0.0.0.0 -114.220.77.71 -171.96.167.117 -88.230.39.45 -187.170.156.12 -176.9.61.40 -84.154.93.193 -62.176.13.153 -37.161.62.109 -171.96.167.157 -85.26.186.30 -37.189.25.190 -110.168.232.103 -138.186.31.199 -89.178.177.95 -98.204.235.141 -171.96.167.66 -5.70.192.218 -223.225.157.133 -1.65.140.21 -70.197.4.246 -43.165.193.4 -93.137.123.103 -96.240.92.38 -77.222.113.102 -73.243.21.197 -182.249.242.24 -31.53.121.172 -89.18.181.101 -149.254.49.93 -208.54.38.181 -85.222.168.41 -177.228.70.157 -25.87.60.111 -109.79.186.146 -33.212.156.47 -201.208.169.134 -24.135.35.202 -5.184.57.137 -219.73.26.172 -108.81.43.50 -67.136.44.155 -88.217.180.105 -198.8.80.85 -95.24.99.127 -188.198.90.231 -100.88.8.110 -212.224.76.87 -78.225.56.77 -223.73.100.116 -198.14.244.224 -82.12.235.3 -77.243.183.25 -79.102.32.183 -2.102.223.238 -164.127.106.144 -79.54.215.101 -178.119.76.144 -77.7.151.32 -186.95.54.108 -109.209.255.250 -90.153.118.51 -181.113.99.121 -83.83.156.158 -2.30.40.79 -187.147.58.142 -193.168.1.102 -114.92.103.127 -81.44.47.135 -84.103.165.167 -179.54.78.187 -211.162.34.197 -0.66.235.206 -213.119.47.44 -152.250.88.148 -92.140.7.202 -2.85.218.25 -59.167.185.184 -71.84.43.181 -178.27.122.63 -116.109.234.74 -201.29.110.137 -50.81.122.236 -46.139.162.104 -190.38.76.64 -108.73.25.52 -5.2.66.120 -109.88.174.139 -185.45.13.149 -84.19.166.58 -172.15.0.107 -200.109.173.48 -82.3.89.105 -106.187.93.132 -71.127.232.3 -108.61.199.17 -92.157.132.151 -93.135.177.166 -118.68.183.197 -79.245.204.58 -70.59.17.67 -176.27.24.255 -174.0.80.58 -86.105.208.208 -69.130.145.90 -94.21.136.99 -93.70.165.126 -186.244.214.184 -70.208.6.72 -110.115.39.1 -177.134.11.43 -201.242.105.167 -66.87.97.216 -13.82.55.134 -24.204.194.99 -80.215.204.11 -81.37.70.35 -152.78.159.104 -210.117.92.53 -95.160.151.93 -2.221.77.195 -78.190.40.174 -114.125.189.252 -186.101.219.243 -79.114.2.189 -95.131.177.10 -174.126.221.216 -91.7.46.221 -187.234.38.167 -25.60.76.161 -91.139.221.236 -82.140.203.198 -201.208.217.173 -94.253.158.247 -205.220.163.91 -88.137.69.182 -216.186.236.171 -187.255.243.31 -190.75.169.137 -101.116.48.219 -217.71.45.38 -181.49.78.74 -155.138.230.198 -41.105.239.184 -92.156.199.252 -192.214.119.58 -162.216.46.105 -95.73.119.160 -181.51.139.104 -109.88.139.108 -174.58.201.144 -85.139.251.113 -173.65.180.70 -173.74.166.180 -68.252.8.213 -25.45.28.229 -175.155.181.198 -209.188.41.47 -13.92.176.214 -128.69.235.138 -100.74.170.249 -79.40.147.80 -180.248.225.211 -46.188.125.237 -141.134.92.64 -190.38.128.4 -1.204.13.122 -124.122.58.68 -172.77.23.103 -177.96.173.98 -181.167.138.145 -5.101.96.124 -210.146.160.42 -94.109.99.175 -93.232.125.163 -84.74.174.199 -88.217.181.126 -42.112.94.187 -69.231.32.212 -37.187.27.4 -95.94.90.176 -175.39.47.204 -41.244.243.113 -217.253.210.45 -87.112.147.66 -78.137.11.16 -178.205.63.24 -86.20.7.201 -203.98.92.90 -90.198.172.54 -88.184.162.93 -41.251.127.5 -5.140.151.235 -83.55.112.89 -114.88.20.31 -80.107.28.73 -209.222.18.59 -210.55.212.21 -189.26.142.10 -164.132.114.152 -85.2.192.58 -37.29.88.98 -188.0.41.32 -180.140.28.245 -212.54.195.10 -197.5.8.74 -180.183.82.151 -178.234.227.61 -95.26.126.37 -1.162.58.141 -175.38.196.103 -85.178.86.218 -165.255.209.173 -94.96.72.32 -5.107.185.176 -83.254.46.122 -184.75.212.106 -74.37.253.136 -2.85.189.49 -37.191.165.193 -79.30.200.54 -197.246.171.176 -82.170.44.250 -46.153.181.49 -78.150.5.84 -90.191.99.12 -23.253.50.163 -109.43.2.51 -83.52.88.212 -81.153.142.238 -37.140.122.89 -110.168.232.154 -185.132.31.70 -81.230.143.200 -201.199.205.220 -198.144.157.113 -219.141.185.129 -171.4.193.144 -87.178.160.210 -121.206.126.21 -177.205.17.74 -79.24.64.63 -49.145.241.19 -83.61.88.205 -189.251.27.103 -190.204.35.44 -178.79.41.195 -185.3.135.82 -109.93.171.166 -91.14.34.70 -173.189.165.44 -82.176.217.214 -83.58.96.125 -201.22.42.227 -186.31.38.190 -178.234.117.58 -186.90.84.129 -41.13.94.190 -188.19.174.10 -87.105.113.85 -212.255.255.216 -193.51.6.5 -188.252.211.72 -191.33.44.16 -84.77.116.152 -84.195.192.97 -199.48.245.187 -148.31.163.57 -109.74.170.77 -176.65.127.95 -176.86.236.251 -2.81.35.223 -91.64.101.150 -56.26.14.187 -147.30.158.158 -189.70.85.114 -79.145.57.93 -8.144.96.247 -171.96.167.30 -198.14.250.141 -213.111.179.40 -37.146.238.207 -1.54.59.157 -177.33.80.128 -75.76.66.211 -107.170.138.159 -91.48.50.43 -46.121.67.177 -84.147.119.76 -121.214.119.39 -81.202.115.42 -36.77.37.99 -142.176.53.89 -68.68.99.197 -171.149.2.249 -78.0.2.28 -75.152.212.205 -87.112.49.81 -190.204.138.145 -186.91.34.215 -79.245.206.218 -87.117.38.224 -100.67.2.192 -212.54.218.233 -171.149.2.249 -86.177.241.129 -68.229.235.123 -70.98.142.254 -2.62.48.147 -117.151.174.71 -85.25.200.102 -37.6.118.149 -176.217.230.27 -189.159.80.196 -95.28.56.184 -99.244.51.28 -90.136.151.55 -5.167.170.167 -98.28.128.199 -178.234.73.55 -176.69.119.54 -104.42.224.48 -39.35.109.251 -217.95.238.41 -85.115.248.49 -202.161.24.232 -173.219.77.171 -95.133.238.251 -105.156.36.240 -160.81.171.46 -96.83.29.78 -64.62.201.6 -201.210.253.39 -187.253.36.222 -107.197.166.48 -91.182.134.93 -154.122.77.205 -95.94.22.12 -213.87.126.149 -171.97.201.79 -201.205.37.36 -108.6.244.111 -165.91.74.108 -89.12.186.187 -95.105.179.120 -79.245.194.135 -53.193.239.158 -91.150.105.103 -1.178.246.229 -146.60.52.80 -93.134.122.186 -76.73.3.178 -2.187.202.96 -213.87.120.151 -171.149.2.249 -24.115.186.59 -67.248.113.187 -162.243.72.148 -188.162.238.144 -77.46.104.150 -151.236.243.19 -1.162.98.165 -84.236.82.109 -177.112.244.104 -46.59.178.254 -75.97.59.130 -187.143.152.243 -88.198.34.136 -119.224.16.252 -194.126.91.135 -105.236.200.24 -150.101.96.8 -109.133.158.114 -188.38.20.253 -2.96.162.96 -193.92.20.199 -178.234.232.56 -208.107.40.102 -45.56.39.12 -109.72.232.52 -104.156.228.86 -74.242.207.146 -203.87.201.150 -31.163.171.61 -82.211.60.143 -49.144.46.25 -95.134.62.105 -110.168.232.253 -89.164.200.11 -213.179.252.75 -77.28.221.221 -53.193.238.2 -178.115.130.126 -36.83.63.4 -130.25.45.30 -122.62.209.126 -91.125.251.114 -94.25.171.140 -223.73.103.224 -95.109.87.61 -93.81.56.225 -188.162.15.1 -193.253.37.245 -2.61.133.195 -87.143.227.193 -74.69.195.164 -78.148.161.220 -188.158.169.194 -78.36.111.52 -98.238.145.154 -178.216.252.11 -37.229.96.2 -62.74.26.240 -209.54.7.184 -96.126.114.208 -173.183.76.104 -36.76.4.71 -172.98.67.40 -213.5.163.102 -63.142.161.25 -62.31.208.119 -192.0.194.24 -179.212.185.123 -179.156.221.228 -162.17.238.97 -25.212.159.235 -71.190.69.95 -94.13.182.188 -151.224.181.140 -104.156.228.79 -86.81.111.103 -180.159.137.110 -75.189.135.43 -12.133.228.183 -89.164.225.231 -217.95.250.194 -108.6.204.184 -5.220.228.6 -2.134.174.247 -74.111.201.30 -85.23.36.108 -46.229.173.230 -50.159.60.56 -0.0.0.0 -120.209.131.70 -94.214.154.144 -24.19.34.151 -2.240.75.231 -190.211.210.173 -110.168.232.46 -100.36.231.56 -52.169.229.251 -84.27.153.252 -79.208.127.61 -88.19.208.245 -104.207.148.231 -113.254.169.78 -106.201.17.46 -104.156.228.115 -81.96.92.136 -24.135.13.180 -190.79.128.30 -87.6.44.211 -92.124.56.6 -121.98.132.121 -79.235.240.183 -37.113.168.57 -68.12.3.89 -0.0.0.0 -94.22.75.142 -209.188.57.202 -76.169.236.235 -190.203.14.155 -186.188.89.194 -178.198.214.231 -113.173.78.173 -189.105.227.187 -37.113.168.76 -31.54.226.182 -5.232.19.45 -79.233.162.230 -83.162.243.231 -86.151.81.47 -184.2.186.230 -79.16.139.147 -173.21.141.204 -39.48.143.86 -37.1.128.188 -128.90.88.154 -46.166.165.39 -71.177.2.102 -173.80.52.199 -69.253.5.33 -178.216.190.113 -201.248.244.231 -79.173.62.191 -5.151.152.144 -186.95.154.86 -118.68.183.197 -104.237.143.215 -79.51.92.72 -71.52.48.4 -188.29.164.13 -174.71.59.223 -219.73.93.18 -79.245.222.47 -124.122.52.91 -36.237.28.108 -130.180.219.150 -94.139.17.207 -250.31.16.246 -79.245.217.68 -79.204.141.9 -200.84.64.62 -124.168.172.177 -177.228.7.57 -84.198.17.157 -178.122.204.244 -78.147.75.63 -104.250.122.42 -46.253.253.126 -100.64.10.106 -95.81.213.232 -78.132.70.52 -151.228.27.238 -95.103.235.87 -37.214.14.94 -209.95.50.25 -97.121.165.49 -201.192.161.241 -95.24.214.142 -50.102.186.96 -124.197.6.10 -50.151.76.89 -77.173.22.8 -162.255.127.179 -222.65.218.221 -74.141.80.174 -151.227.55.136 -90.207.63.129 -190.204.34.118 -78.88.29.120 -31.51.151.170 -31.170.106.199 -188.32.207.210 -172.56.7.118 -184.171.212.55 -178.92.103.221 -92.40.183.177 -179.156.218.183 -93.190.139.37 -125.185.242.142 -91.67.130.158 -81.146.57.180 -60.205.112.102 -205.220.163.91 -88.254.110.55 -212.14.208.27 -1.39.60.213 -12.37.199.41 -108.61.221.226 -112.80.127.215 -96.46.195.24 -37.146.122.20 -41.224.164.213 -80.107.16.189 -79.147.214.108 -67.53.205.187 -115.28.42.60 -67.136.44.155 -84.3.93.11 -79.52.3.121 -62.46.200.51 -87.178.184.126 -188.245.241.79 -95.39.196.110 -73.43.102.217 -83.61.94.153 -111.88.32.19 -220.246.221.8 -186.91.83.87 -120.155.176.207 -183.149.49.252 -123.63.144.247 -93.34.34.141 -189.69.214.201 -31.11.78.216 -67.231.54.138 -213.140.237.233 -37.140.99.18 -109.226.90.179 -5.15.206.164 -172.248.91.252 -167.114.42.94 -213.16.190.75 -87.244.147.84 -106.187.36.44 -171.97.223.159 -24.121.46.171 -85.93.207.253 -216.58.118.36 -89.242.139.28 -178.0.4.123 -95.89.214.31 -85.76.102.200 -82.169.206.126 -78.150.3.98 -217.113.237.234 -71.208.235.223 -188.196.95.176 -80.249.81.117 -5.164.188.41 -31.185.4.33 -96.240.81.144 -181.44.114.97 -78.132.24.222 -178.216.120.222 -78.98.71.27 -78.43.68.161 -108.61.169.107 -186.147.161.15 -90.218.109.93 -0.0.0.0 -217.129.236.80 -77.105.50.192 -62.101.183.24 -188.76.15.37 -180.172.140.92 -115.198.14.122 -81.100.220.75 -190.77.15.100 -37.47.18.5 -213.122.124.131 -77.54.234.91 -93.143.214.74 -171.5.182.161 -198.254.204.153 -81.250.103.220 -179.43.151.66 -105.226.137.23 -95.43.216.3 -23.92.218.130 -79.166.4.165 -96.252.50.154 -205.220.163.91 -115.25.138.225 -43.249.129.196 -176.214.137.187 -101.98.185.172 -178.18.110.174 -94.20.241.217 -200.117.136.218 -201.4.93.39 -63.142.161.9 -77.243.183.20 -49.177.161.18 -196.217.160.51 -186.146.153.20 -23.241.17.48 -85.7.164.87 -37.151.42.182 -37.29.88.7 -84.35.203.85 -68.172.226.49 -96.240.236.32 -72.39.10.246 -92.76.239.3 -98.160.114.23 -77.254.100.185 -109.209.194.113 -130.211.249.48 -189.202.71.152 -82.103.141.140 -178.234.237.26 -14.192.209.247 -37.146.127.155 -134.249.158.190 -81.141.17.139 -79.146.10.254 -188.158.185.100 -171.4.186.77 -188.104.80.117 -151.55.15.80 -77.105.16.104 -217.189.224.20 -75.110.29.6 -99.120.77.119 -213.10.246.244 -81.10.149.108 -122.168.251.156 -188.208.112.70 -92.76.72.105 -79.184.14.112 -83.57.76.197 -91.48.48.77 -92.80.28.97 -179.4.168.182 -81.196.245.79 -217.235.255.172 -85.75.102.179 -173.74.166.180 -78.3.55.85 -116.89.62.24 -25.7.70.98 -188.129.87.191 -108.127.162.82 -174.5.185.35 -178.234.216.61 -201.143.101.125 -88.229.80.202 -85.26.186.204 -188.0.41.208 -115.87.211.67 -101.160.57.60 -79.114.108.172 -67.140.66.136 -176.50.134.28 -182.89.227.143 -128.90.88.111 -188.208.112.70 -217.235.255.224 -79.204.163.11 -160.176.69.211 -189.187.115.138 -197.203.78.235 -95.141.28.169 -172.89.205.21 -159.118.242.230 -95.179.62.63 -186.93.214.168 -178.234.63.213 -188.162.36.173 -217.118.79.25 -87.198.180.6 -66.55.134.213 -24.122.34.75 -87.103.52.73 -208.167.254.37 -109.88.146.44 -105.184.225.62 -73.90.204.141 -212.255.228.189 -202.80.215.115 -119.224.48.233 -176.114.191.253 -197.27.8.202 -42.115.18.149 -93.84.8.44 -1.162.86.234 -103.25.46.9 -152.23.21.142 -76.179.165.105 -62.133.162.222 -98.77.43.229 -78.80.76.82 -68.61.121.174 -186.95.86.120 -222.76.117.248 -88.91.76.98 -201.208.13.107 -109.43.2.115 -80.215.210.194 -81.30.71.45 -89.151.161.58 -171.39.68.224 -111.227.127.190 -179.232.244.239 -100.64.97.198 -66.32.255.192 -83.4.148.220 -110.174.123.194 -141.58.46.18 -201.253.41.90 -50.254.73.145 -71.7.113.19 -104.159.144.57 -121.208.106.107 -86.56.60.16 -46.142.40.17 -91.148.91.236 -95.90.53.237 -94.66.57.107 -223.207.122.199 -70.169.28.217 -202.62.16.168 -177.231.121.64 -95.147.181.131 -213.162.103.191 -190.202.250.145 -213.151.0.82 -84.63.33.137 -178.98.128.31 -219.73.15.219 -212.71.239.55 -204.11.237.73 -212.251.28.139 -109.151.26.71 -93.81.218.153 -0.0.0.0 -108.49.147.47 -79.152.183.84 -162.216.46.43 -182.239.166.75 -73.187.107.193 -93.127.76.65 -194.219.60.132 -89.38.35.81 -178.234.246.180 -83.249.178.255 -178.120.203.65 -172.58.139.124 -184.64.170.246 -46.19.139.182 -174.109.105.111 -231.255.154.44 -178.41.95.247 -68.7.186.217 -118.216.79.55 -175.208.141.224 -178.121.168.9 -197.27.90.215 -94.51.32.217 -81.240.52.24 -174.76.158.194 -114.125.191.209 -93.169.165.183 -70.79.67.146 -62.198.196.56 -122.82.162.156 -195.147.224.24 -186.77.195.134 -188.81.148.12 -188.73.254.84 -90.190.117.187 -37.213.170.13 -79.245.216.86 -213.7.35.207 -123.201.113.207 -91.241.96.80 -91.229.61.46 -92.17.118.188 -100.16.34.113 -90.199.36.236 -71.251.78.65 -179.197.169.12 -24.188.239.178 -99.183.185.69 -197.117.90.127 -178.222.68.33 -171.97.184.18 -197.202.234.106 -180.246.168.146 -188.19.161.137 -71.19.249.4 -68.235.182.101 -114.79.37.118 -106.192.7.54 -36.69.19.2 -78.250.126.154 -203.145.92.95 -62.102.148.183 -128.71.91.85 -78.28.250.66 -68.52.132.102 -73.214.142.184 -69.18.28.136 -185.128.41.158 -94.74.66.101 -182.187.123.236 -37.24.156.235 -46.143.69.22 -189.183.55.56 -36.78.196.123 -46.31.38.113 -90.217.93.166 -79.133.157.203 -180.129.159.1 -41.251.208.103 -24.186.232.5 -95.221.21.83 -15.107.231.112 -79.16.214.237 -151.249.96.73 -46.195.49.136 -89.210.24.145 -198.205.1.101 -188.73.252.224 -192.99.160.163 -83.165.85.219 -92.100.44.40 -53.193.239.251 -104.244.157.16 -177.188.17.204 -197.203.60.143 -114.88.20.31 -217.235.240.122 -149.88.75.65 -184.90.64.40 -186.90.98.38 -187.15.73.13 -174.77.224.21 -37.113.168.28 -209.107.214.62 -81.184.126.146 -115.70.149.131 -87.140.192.50 -81.109.222.243 -188.134.13.5 -78.250.241.41 -92.232.213.133 -91.115.55.194 -174.58.228.93 -202.62.17.10 -0.0.0.0 -95.52.190.92 -178.223.0.82 -84.55.16.81 -217.23.187.1 -100.10.59.5 -67.44.192.24 -79.245.200.52 -217.87.92.166 -69.108.3.158 -190.204.40.157 -81.154.204.185 -37.47.211.56 -70.181.47.97 -78.21.195.37 -95.91.241.81 -27.145.177.83 -83.27.161.92 -178.234.90.237 -201.6.172.44 -223.205.74.62 -81.229.37.193 -150.117.170.89 -80.47.94.236 -118.209.134.35 -43.249.129.196 -195.214.190.171 -186.119.252.108 -27.34.28.186 -83.248.25.82 -119.236.248.38 -156.241.140.131 -65.30.11.62 -87.64.212.160 -69.167.26.56 -91.156.41.30 -78.230.39.234 -99.121.49.140 -94.96.41.4 -99.187.33.246 -66.41.56.235 -36.255.113.156 -66.69.124.164 -82.21.95.51 -85.76.86.40 -5.13.171.55 -37.115.172.148 -224.245.98.190 -178.16.215.164 -178.243.204.40 -104.200.154.25 -173.74.177.35 -76.178.149.21 -95.72.3.129 -229.163.111.67 -82.20.144.232 -128.75.237.122 -86.57.197.105 -151.227.121.20 -190.156.192.88 -171.96.168.116 -41.150.141.127 -91.40.70.81 -82.54.32.17 -174.93.226.111 -61.195.99.101 -187.152.220.146 -190.38.6.28 -104.156.240.153 -186.93.165.61 -180.213.84.12 -68.145.81.59 -212.90.62.251 -191.43.19.200 -124.122.213.230 -79.235.241.133 -47.67.40.201 -82.168.170.109 -78.111.190.48 -87.185.26.148 -177.34.78.53 -83.61.94.153 -141.130.226.62 -80.121.28.99 -50.66.152.76 -131.173.60.240 -112.215.123.68 -190.38.48.14 -93.107.13.106 -173.221.226.116 -96.26.11.23 -142.166.71.215 -177.134.174.140 -86.168.201.42 -87.105.66.67 -178.131.84.160 -37.45.3.23 -37.229.121.72 -209.160.123.88 -84.31.242.4 -37.5.141.129 -179.209.225.212 -78.150.6.212 -151.66.229.34 -84.184.209.7 -5.80.54.19 -223.225.182.127 -65.26.54.236 -98.227.60.68 -173.185.69.84 -89.142.37.216 -5.42.17.207 -112.184.28.67 -190.198.36.172 -83.59.146.4 -188.183.117.146 -62.197.218.214 -46.244.218.156 -201.79.56.33 -186.88.71.213 -71.52.82.247 -109.240.39.103 -73.90.208.150 -165.255.122.178 -108.117.169.213 -191.223.196.53 -93.124.12.6 -60.211.181.34 -149.210.40.55 -32.117.64.178 -71.15.250.17 -197.229.28.177 -49.32.36.161 -178.184.63.128 -229.244.37.192 -24.171.125.63 -197.203.21.66 -189.97.76.94 -91.48.62.50 -217.228.64.245 -65.93.5.186 -200.84.68.224 -189.165.50.103 -76.202.180.86 -73.198.40.189 -79.41.177.10 -91.213.143.252 -46.10.100.20 -155.138.236.210 -217.89.0.213 -84.117.17.168 -81.153.147.190 -106.187.37.124 -79.116.46.102 -41.244.243.202 -193.107.94.5 -50.83.133.238 -176.58.22.253 -81.132.37.244 -92.43.188.173 -83.149.35.11 -79.32.103.236 -150.40.223.126 -84.135.83.89 -99.246.216.151 -5.80.240.84 -128.71.187.172 -84.81.98.206 -2.94.196.192 -109.221.51.167 -178.122.238.20 -202.62.16.108 -82.19.207.84 -178.120.180.77 -109.173.87.23 -188.146.72.127 -93.175.72.187 -201.130.5.2 -178.44.12.28 -40.87.147.250 -188.69.195.72 -84.159.232.37 -82.141.118.195 -223.25.25.103 -143.48.117.132 -197.6.149.103 -75.73.58.145 66.228.56.115 -109.93.83.59 -93.104.105.193 -79.146.50.229 -79.245.195.18 -87.5.71.70 -86.81.209.28 -41.141.46.16 -217.89.2.42 -78.239.107.25 -184.134.70.35 -96.83.29.78 -145.97.231.240 -195.37.12.20 -76.68.162.94 -46.167.124.185 -89.210.204.47 -151.238.37.180 -27.159.20.249 -78.12.60.47 -99.250.53.196 -101.171.127.242 -212.228.253.143 -87.92.83.95 -2.5.78.51 -87.158.138.61 -163.158.223.125 -149.254.219.192 -79.112.46.242 -178.234.15.238 -88.254.73.55 -62.1.29.53 -212.228.253.143 -5.254.97.86 -188.162.132.110 -178.43.55.232 -83.60.248.55 -24.135.244.72 -115.135.47.10 -92.162.158.94 -112.186.124.56 -95.108.54.55 -213.24.126.141 -82.141.118.195 -223.204.248.206 -176.58.133.196 -104.156.228.71 -81.131.226.196 -151.72.136.1 -86.184.140.225 -46.98.12.7 -207.192.254.156 -124.170.23.36 -95.71.68.207 -219.237.242.60 -188.73.252.67 -128.75.237.180 -95.73.250.51 -46.5.195.24 -70.139.70.171 -87.95.233.26 -85.245.55.58 -91.67.99.12 -92.100.121.16 -91.182.0.44 -176.27.24.255 -200.146.57.130 -115.207.68.8 -91.63.1.128 -79.54.215.248 -83.143.240.35 -84.152.149.102 -191.32.0.88 -82.229.26.235 -84.154.93.193 -217.83.12.218 -91.154.8.178 -73.62.248.49 -24.217.99.228 -208.54.83.214 -188.103.157.164 -120.164.44.57 -31.3.26.210 -199.119.232.215 -89.245.109.97 -36.78.250.164 -198.23.103.69 -80.147.25.206 -209.160.123.53 -122.73.59.85 -201.141.39.232 -86.129.252.132 -52.169.229.251 -186.90.122.140 -189.82.147.136 -39.48.73.31 -152.234.187.32 -87.204.222.96 -67.60.16.219 -37.45.82.110 -115.28.138.90 -62.165.226.97 -138.201.65.88 -84.187.91.201 -83.78.9.216 -86.210.212.108 -176.104.184.50 -37.23.114.113 -109.204.154.88 -188.4.237.14 -84.152.140.60 -127.180.48.132 -181.29.63.54 -83.36.226.52 -122.62.12.87 -72.160.29.62 -79.70.51.138 -220.253.4.142 -62.63.82.172 -171.96.167.213 -93.43.160.238 -105.156.245.177 -216.172.138.189 -105.224.204.200 -80.215.170.87 -108.177.128.150 -196.215.25.200 -187.243.164.218 -77.73.137.37 -177.99.84.95 -202.62.16.58 -129.10.29.163 -171.96.168.32 -46.130.27.222 -14.186.213.191 -95.67.188.205 -79.107.58.23 -128.71.13.113 -99.186.49.28 -91.63.31.207 -80.213.230.192 -218.142.95.189 -75.126.73.56 -72.171.192.248 -91.44.228.200 -77.163.189.107 -41.251.48.199 -188.69.211.24 -177.229.231.37 -105.186.106.4 -94.21.126.37 -93.129.11.176 -190.207.68.49 -179.215.223.24 -198.84.201.135 -115.50.117.30 -83.160.90.35 -84.26.33.226 -171.149.2.249 -190.75.207.59 -14.209.137.220 -151.32.117.143 -37.112.87.206 -201.22.23.138 -83.57.228.86 -174.77.224.21 -0.0.0.0 -142.162.40.54 -31.181.188.236 -194.166.190.1 -64.237.51.168 -80.43.133.125 -109.227.43.129 -190.96.153.233 -201.210.140.73 -95.109.87.61 -77.254.148.133 -95.211.134.28 -80.213.122.68 -81.156.145.142 -86.151.81.47 -24.212.88.112 -50.162.194.86 -88.136.64.229 -190.73.75.228 -80.61.66.72 -37.78.168.147 -213.230.75.175 -98.21.141.197 -144.138.64.50 -81.184.126.146 -82.234.175.33 -71.31.111.170 -36.76.44.84 -189.219.201.55 -87.146.24.200 -90.227.32.48 -81.182.25.190 -100.68.1.55 -162.216.46.112 -24.119.48.249 -75.111.51.213 -87.205.196.58 -101.184.94.136 -83.161.137.46 -91.78.177.167 -189.150.138.34 -68.226.144.118 -178.234.49.0 -50.107.118.90 -78.34.4.22 -83.84.22.227 -80.189.22.170 -184.99.69.164 -199.7.156.142 -212.251.18.150 -118.209.75.208 -86.210.89.109 -43.165.193.4 -49.145.123.121 -24.18.171.156 -24.152.231.246 -190.204.5.222 -90.113.251.171 -95.24.56.149 -109.187.90.176 -89.182.24.153 -109.43.3.12 -222.243.244.245 -187.0.235.105 -32.149.215.132 -0.0.0.0 -217.44.160.84 -70.173.107.212 -109.74.162.200 -219.79.189.186 -193.106.215.193 -178.57.98.67 -187.152.220.146 -217.105.20.145 -1.0.0.0 -94.178.6.233 -95.49.168.186 -2.28.195.45 -88.75.32.126 -150.27.127.98 -189.202.64.210 -84.215.98.187 -1.64.26.102 -93.103.144.91 -5.135.36.128 -184.75.213.133 -185.29.164.212 -39.35.182.28 -76.107.228.95 -173.163.0.213 -69.162.195.208 -78.55.250.20 -118.211.234.7 -189.149.43.148 -190.77.242.77 -67.141.24.177 -23.99.59.71 -84.0.103.181 -37.213.220.12 -186.228.165.88 -88.71.176.152 -180.254.111.93 -24.246.95.6 -114.252.227.89 -182.111.195.163 -223.205.29.44 -181.112.107.95 -181.65.62.148 -177.170.155.183 -80.244.146.31 -85.72.83.210 -89.13.106.135 -1.162.89.72 -186.91.204.203 -186.170.85.58 -158.222.194.45 -190.198.36.172 -31.2.118.96 -112.205.152.222 -109.169.168.151 -70.196.196.25 -162.216.46.41 -108.212.84.178 -187.4.110.82 -2.96.253.212 -184.17.153.7 -178.55.248.191 -46.105.158.205 -121.224.229.225 -95.79.62.224 -95.221.211.55 -81.89.56.170 -37.78.59.60 -32.149.215.132 -45.52.184.11 -93.81.9.35 -25.128.23.157 -198.18.1.58 -120.141.142.237 -31.53.121.172 -73.180.62.121 -75.162.140.28 -192.77.248.3 -105.109.155.75 -190.99.218.59 -217.89.8.225 -178.115.131.56 -115.239.127.175 -190.198.5.210 -78.55.239.95 -83.20.69.109 -184.75.213.117 -209.195.113.177 -78.156.104.205 -87.100.158.128 -59.167.196.135 -193.33.91.218 -98.191.243.50 -92.112.239.165 -179.34.94.5 -223.25.25.220 -91.232.105.11 -94.51.110.100 -65.78.152.16 -81.240.52.24 -217.121.192.4 -178.42.208.214 -217.73.143.165 -54.210.100.216 -212.73.174.166 -86.175.85.205 -0.0.0.72 -197.228.134.60 -31.162.230.3 -84.19.166.55 -110.168.231.201 -62.167.128.54 -202.67.37.22 -93.139.171.57 -31.18.159.118 -50.53.104.249 -68.168.178.12 -209.197.162.172 -90.191.163.182 -83.4.80.106 -94.20.241.217 -173.74.172.37 -190.82.204.230 -85.155.6.145 -2.122.176.75 -186.185.169.209 -76.113.42.159 -219.77.166.186 -219.79.189.241 -79.245.209.254 -109.218.83.221 -88.23.123.143 -37.115.192.181 -95.174.98.218 -75.134.13.245 -94.209.121.137 -95.113.48.14 -189.157.46.152 -100.68.86.132 -89.245.126.176 -178.45.76.81 -174.25.200.26 -62.163.9.155 -85.49.23.66 -198.98.118.241 -77.234.44.156 -179.43.169.226 -85.217.41.209 -109.124.211.182 -83.153.29.186 -89.154.49.154 -165.255.211.181 -78.0.3.149 -173.245.195.98 -190.231.63.41 -86.147.60.147 -89.22.243.128 -213.152.162.170 -80.108.46.24 -128.90.88.11 -224.200.154.18 -91.67.34.202 -254.42.196.227 -79.245.223.174 -80.133.45.20 -208.58.41.133 -105.237.9.149 -79.200.67.185 -223.204.248.96 -89.39.78.192 -154.157.161.160 -178.215.168.129 -114.76.137.117 -173.75.18.157 -83.134.86.173 -62.158.150.131 -184.64.19.148 -60.17.235.231 -42.112.80.24 -93.170.111.115 -194.28.39.72 -141.237.27.57 -109.93.85.149 -216.180.181.48 -172.56.20.93 -76.242.145.138 -95.24.100.172 -85.26.186.204 -176.58.130.226 -85.222.42.211 -151.95.16.217 -36.74.94.208 -178.128.244.47 167.160.36.126 -176.10.42.45 -178.234.51.251 -67.193.56.206 -188.95.206.133 -83.134.225.71 -186.14.240.71 -46.28.53.172 -95.67.173.63 -188.69.195.143 -196.210.126.198 -190.206.197.37 -79.67.123.101 -46.238.214.54 -47.64.20.211 -31.41.247.133 -125.142.30.68 -37.142.185.136 -189.138.63.24 -77.110.147.13 -82.119.13.10 -212.183.61.11 -94.214.163.25 -254.185.71.201 -26.162.173.209 -188.193.79.183 -190.39.38.49 -24.22.111.227 -71.175.81.45 -181.95.121.26 -178.93.129.60 -68.45.101.13 -81.154.58.116 -78.153.4.77 -206.248.172.100 -208.82.41.47 -50.172.89.183 -181.24.43.245 -98.223.62.66 -24.252.75.158 -2.121.201.171 -89.172.238.180 -192.214.119.58 -1.129.96.141 -107.11.145.246 -73.224.21.143 -184.155.200.186 -36.69.20.159 -62.101.183.24 -89.245.125.162 -202.62.17.54 -188.0.42.195 -188.29.164.228 -99.253.132.72 -130.180.220.8 -100.69.227.171 -54.86.84.160 -100.68.65.92 -121.220.62.161 -96.238.148.171 -188.77.49.237 -78.46.23.222 -109.121.29.102 -197.228.235.128 -2.12.99.12 -176.249.222.22 -82.176.89.129 -46.55.165.57 -79.200.222.225 -193.92.252.13 -118.209.158.228 -124.122.0.238 -178.128.243.39 -109.212.175.142 -183.50.224.62 -219.79.191.143 -201.209.130.164 -201.231.215.30 -164.67.192.103 -180.129.159.1 -192.99.217.31 -73.90.210.204 -79.45.210.96 -185.107.252.224 -105.97.224.170 -100.113.28.102 -66.96.100.24 -60.218.122.249 -189.144.45.28 -37.188.130.172 -100.65.150.99 -171.4.185.126 -81.141.8.117 -98.223.11.108 -2.92.58.180 -108.110.155.247 -14.98.83.166 -164.77.40.254 -50.153.150.172 -89.153.45.155 -203.222.146.55 -99.37.3.74 -139.228.0.80 -53.193.238.57 -193.107.92.232 -81.247.79.74 -81.214.98.49 -5.200.52.133 -212.251.27.178 -85.53.81.54 -217.123.121.141 -125.160.197.79 -104.200.154.26 -83.37.72.115 -181.1.68.23 -59.172.132.204 -108.75.178.165 -5.66.253.16 -185.37.192.112 -94.41.128.125 -136.243.217.171 -87.81.138.30 -107.220.18.70 -71.236.243.108 -93.164.7.181 -88.141.114.61 -79.134.38.179 -151.231.96.75 -188.29.165.196 -80.92.31.43 -186.213.104.163 -213.96.202.231 -45.56.151.17 -94.99.209.193 -112.215.124.182 -79.131.163.147 -66.26.153.172 -90.7.252.111 -178.222.27.190 -201.243.34.211 -83.55.65.150 -64.17.79.28 -186.93.30.93 -80.116.34.167 -93.169.135.5 -41.251.212.137 -87.144.11.117 -173.20.72.21 -69.243.228.52 -128.75.199.166 -96.45.237.72 -75.189.230.76 -231.157.187.212 -188.143.13.98 -68.34.214.8 -91.134.233.254 -176.248.175.132 -81.203.228.217 -171.96.171.118 -65.27.83.146 -95.26.230.15 -64.53.210.14 -188.114.23.6 -125.127.86.95 -71.53.155.242 -178.217.115.50 -89.237.38.235 -163.157.186.231 -79.184.121.102 -58.7.79.182 -186.116.227.215 -87.185.4.187 -217.253.209.157 -171.96.168.28 -36.83.43.11 -91.122.166.250 -112.215.124.84 -66.168.28.90 -1.0.0.0 -171.149.2.249 -46.176.102.2 -88.75.132.88 -217.116.211.114 -43.255.83.123 -80.135.14.197 -187.200.126.254 -84.2.110.235 -79.245.194.74 -179.55.77.60 -177.247.47.140 -50.153.149.124 -193.161.15.69 -82.236.72.55 -93.125.63.252 -178.65.14.106 -213.113.185.135 -155.133.16.26 -46.29.144.17 -149.202.44.159 -124.122.6.109 -68.186.198.147 -62.36.238.183 -81.154.204.185 -79.234.100.103 -1.0.0.0 -70.78.222.93 -84.19.165.213 -82.238.200.36 -37.6.242.90 -97.117.164.169 -83.4.104.110 -95.236.131.168 -72.211.166.102 -0.0.0.2 -46.253.252.140 -187.34.142.244 -169.0.73.53 -109.43.3.230 -91.179.123.166 -189.140.140.184 -178.164.143.158 -85.201.209.80 -63.87.254.188 -5.13.50.74 -92.144.200.122 -0.0.0.0 -78.87.102.229 -175.137.91.173 -117.207.10.37 -92.9.51.240 -192.99.47.172 -171.96.167.85 -96.48.106.63 -5.142.41.37 -46.217.84.125 -90.4.183.69 -145.120.12.175 -71.222.115.159 -174.126.221.216 -196.206.78.112 -213.87.123.163 -219.73.26.166 -217.120.200.182 -41.138.182.233 -2.62.31.79 -14.148.92.236 -191.33.57.182 -188.195.221.38 -178.35.140.252 -83.254.175.251 -88.217.180.135 -46.2.49.102 -89.22.172.159 -2.85.48.166 -197.211.52.27 -31.10.151.160 -81.183.132.39 -146.215.226.94 -50.183.63.188 -174.61.234.134 -108.252.201.93 -90.194.75.240 -188.26.139.49 -77.163.189.107 -208.107.130.112 -121.72.232.206 -24.0.101.211 -31.23.125.144 -78.108.105.3 -207.154.20.231 -79.152.140.12 -71.251.60.74 -92.110.79.41 -2.54.231.38 -173.219.7.133 -200.181.174.247 -174.55.206.7 -46.246.160.217 -122.105.192.219 -180.171.232.19 -80.234.141.228 -184.166.55.59 -80.135.30.123 -58.11.119.219 -201.19.190.183 -98.247.93.2 -98.21.117.65 -159.203.31.42 -46.72.147.197 -191.241.136.54 -188.190.2.136 -213.105.38.228 -181.41.210.93 -1.162.60.24 -177.249.151.161 -1.0.0.0 -109.232.51.32 -82.34.182.46 -80.131.62.65 -124.237.96.40 -181.164.39.82 -138.186.31.43 -187.63.6.45 -77.131.8.180 -190.36.51.51 -50.23.131.235 -77.105.24.110 -243.8.113.116 -172.56.22.46 -128.71.31.119 -67.245.82.244 -99.53.229.135 -182.178.100.105 -89.185.12.216 -83.83.161.46 -86.20.3.141 -91.52.13.182 -61.140.238.47 -201.22.42.227 -91.48.63.23 -32.230.230.72 -66.55.134.215 -5.80.54.19 -222.152.161.106 -185.29.164.237 -80.130.206.9 -207.204.233.23 -184.171.212.55 -87.112.147.66 -185.42.39.117 -2.62.52.96 -85.232.217.179 -84.103.72.150 -5.141.203.74 -253.167.138.14 -177.98.29.222 -178.120.162.160 -37.214.62.162 -24.144.61.126 -82.19.44.100 -192.241.254.114 -36.77.175.202 -108.26.55.253 -79.245.195.228 -119.86.47.160 -179.7.160.222 -112.65.211.229 -70.173.239.125 -98.199.85.134 -80.213.211.183 -176.97.36.140 -91.19.121.248 -24.217.245.101 -98.238.145.154 -79.125.205.26 -108.161.118.177 -89.168.217.136 -79.114.109.234 -188.27.207.162 -122.57.235.244 -159.172.226.177 -107.203.104.144 -254.92.232.178 -83.117.200.125 -70.53.183.31 -189.223.40.145 -37.76.68.108 -78.147.114.195 -2.176.151.20 -181.44.114.97 -78.8.109.43 -31.214.240.56 -53.193.239.36 -176.127.67.214 -88.167.140.73 -188.220.132.161 -167.60.146.106 -92.209.191.40 -100.68.88.0 -177.19.119.96 -217.195.246.98 -0.0.0.0 -36.78.249.30 -124.170.124.221 -222.252.59.19 -69.112.244.114 -79.30.99.74 -181.10.83.104 -79.245.207.112 -115.178.215.30 -171.39.66.125 -79.245.197.208 -171.97.145.198 -190.98.11.234 -91.67.99.12 -79.204.162.138 -150.27.228.7 -46.233.200.165 -77.58.253.73 -187.132.1.39 -79.245.212.85 -113.254.169.222 -5.52.11.13 -190.205.194.65 -69.165.128.9 -109.221.179.32 -128.227.44.156 -173.98.236.230 -217.216.123.34 -24.114.70.184 -112.65.0.74 -77.243.183.116 -95.113.213.5 -31.129.70.174 -90.69.147.20 -202.80.215.19 -50.168.101.34 -217.121.210.13 -72.202.129.75 -97.127.120.204 -36.78.191.143 -27.34.38.27 -80.106.197.231 -189.203.252.6 -188.196.1.166 -104.156.240.142 -31.149.73.49 -187.0.235.105 -52.11.78.65 -181.49.64.55 -128.70.44.218 -173.252.255.34 -100.91.29.206 -186.170.116.234 -186.203.2.32 -109.88.65.154 -93.104.127.247 -171.39.64.12 -83.168.150.119 -92.20.145.13 -2.146.174.242 -85.15.5.3 -212.58.237.100 -178.219.90.233 -109.88.155.108 -115.228.246.237 -78.129.153.58 -109.88.132.44 -181.64.88.109 -1.126.127.226 -125.237.122.51 -187.59.190.103 -82.56.22.225 -172.137.1.106 -152.23.21.142 -87.69.111.245 -99.112.7.5 -83.222.45.113 -178.254.190.206 -62.16.243.132 -201.83.108.195 -181.232.25.197 -114.96.153.143 -213.138.93.0 -151.72.136.1 -41.142.41.167 -177.249.194.77 -179.198.46.74 -95.111.236.135 -91.14.34.70 -182.249.242.10 -71.45.32.188 -88.196.236.26 -28.36.255.86 -189.114.235.27 -107.179.248.207 -209.245.155.235 -178.132.47.176 -84.188.65.226 -108.111.67.194 -95.85.55.153 -108.117.169.213 -104.238.187.114 -5.198.44.176 -124.198.205.11 -98.213.71.84 -41.143.233.44 -223.204.248.171 -93.156.82.36 -201.211.29.167 -41.239.156.148 -81.245.251.1 -24.230.59.100 -125.37.79.46 -5.88.72.90 -100.64.12.2 -201.201.215.83 -188.165.205.135 -60.228.7.131 -200.121.41.216 -193.92.31.61 -88.117.78.255 -90.154.75.175 -89.104.6.79 -190.62.160.125 -112.198.64.48 -90.190.69.165 -200.8.53.77 -216.158.224.240 -208.54.5.254 -73.197.227.38 -25.52.41.130 -201.167.47.254 -220.246.220.125 -85.242.25.243 -31.201.179.254 -42.136.208.211 -37.113.15.208 -84.138.78.96 -88.141.113.130 -31.10.159.200 -217.128.25.131 -2.147.213.24 -177.247.125.211 -99.225.14.89 -71.195.120.65 -62.2.218.10 -111.69.162.148 -109.43.0.79 -216.171.18.187 -62.98.223.129 -197.117.250.77 -0.0.0.0 -85.218.134.32 -173.45.173.72 -176.11.151.238 -109.43.0.198 -190.28.189.103 -85.26.42.127 -46.175.68.4 -77.71.24.63 -37.233.31.253 -213.118.105.27 -55.211.59.42 -178.65.202.255 -62.183.127.182 -172.65.249.192 -189.158.82.6 -46.98.124.49 -37.27.50.204 -190.204.175.75 -79.245.223.80 -82.47.20.169 -41.105.228.16 -212.251.28.229 -25.51.249.200 -188.61.142.25 -185.53.178.9 -87.78.23.245 -95.24.52.94 -181.27.150.162 -58.44.186.69 -187.246.242.110 -37.48.74.42 -223.204.246.232 -153.120.242.171 -93.81.24.169 -151.227.114.46 -74.84.26.219 -93.138.126.48 -81.130.224.89 -23.92.218.130 -64.191.29.26 -5.94.119.65 -189.165.16.244 -50.168.210.180 -91.48.34.56 -91.63.19.156 -0.0.0.0 -123.79.153.212 -108.40.13.187 -110.171.204.110 -217.89.7.46 -223.204.240.178 -73.27.251.141 -128.90.43.153 -169.0.170.28 -110.168.232.50 -24.79.43.15 -79.194.202.151 -90.154.75.175 -188.7.6.154 -217.235.227.209 -186.147.108.177 -92.80.10.182 -113.87.241.181 -195.169.155.126 -184.155.218.183 -188.89.24.254 -83.143.240.44 -62.47.227.63 -188.168.145.223 -99.122.104.173 -187.143.157.80 -173.178.61.115 -180.251.217.73 -117.194.52.63 -24.28.92.13 -25.15.9.35 -165.120.45.108 -83.11.178.19 -92.97.161.7 -82.249.77.22 -181.65.62.148 -186.213.102.132 -72.194.212.147 -25.152.243.103 -79.245.210.38 -99.95.217.55 -91.7.43.15 -199.202.216.171 -109.43.3.149 -84.111.148.18 -190.189.29.32 -100.64.30.28 -24.225.138.67 -165.51.103.243 -92.73.203.118 -82.225.55.132 -45.79.10.59 -106.192.22.127 -77.29.141.165 -41.250.109.214 -95.19.21.165 -85.75.79.133 -78.215.210.112 -22.29.73.140 -217.131.108.228 -199.16.96.145 -190.201.194.107 -190.39.10.186 -178.157.251.246 -93.38.167.117 -220.233.131.66 -100.78.98.103 -41.190.3.124 -62.28.52.105 -1.64.29.50 -41.48.21.132 -181.24.59.235 -79.245.210.198 -108.61.76.8 -77.243.183.93 -158.196.212.164 -82.236.72.55 -187.255.237.97 -219.73.15.192 -151.20.32.245 -95.90.255.153 -118.209.232.218 -124.171.101.99 -87.185.13.113 -5.15.206.164 -25.87.60.111 -68.53.27.112 -83.250.224.227 -130.180.220.126 -83.27.114.96 -1.204.13.122 -111.242.76.47 -202.62.16.62 -101.109.199.119 -159.205.212.242 -213.60.67.126 -85.144.100.5 -201.37.162.92 -194.126.89.193 -201.233.213.167 -93.119.110.247 -190.78.7.231 -75.75.125.55 -185.46.249.145 -160.178.158.54 -95.153.134.144 -81.167.129.247 -172.89.123.176 -152.249.19.96 -87.178.130.45 -93.123.247.211 -46.11.86.170 -186.88.157.110 -77.65.10.166 -189.202.67.14 -223.206.149.29 -123.24.208.165 -46.118.177.40 -25.69.38.113 -70.168.189.146 -99.228.186.52 -70.15.174.156 -142.136.106.108 -193.92.228.153 -85.156.13.86 -189.188.237.104 -95.19.22.94 -217.88.13.199 -1.144.96.140 -81.198.10.79 -178.254.190.132 -94.75.136.231 -38.211.54.78 -71.53.157.49 -192.95.29.176 -73.82.153.96 -62.232.5.242 -100.40.69.188 -162.210.196.176 -180.156.150.143 -110.168.231.245 -79.70.9.80 -137.117.213.153 -178.234.77.146 -84.133.115.69 -84.19.165.213 -62.1.215.212 -94.244.17.63 -50.153.150.216 -88.15.230.239 -165.91.74.108 -2.122.179.220 -79.112.231.20 -162.156.199.110 -14.198.159.194 -187.74.82.136 -72.24.168.79 -117.194.42.216 -100.66.17.228 -47.54.76.217 -201.208.21.151 -79.25.166.110 -84.236.18.119 -39.48.44.134 -222.170.18.151 -76.17.122.180 -97.83.54.77 -190.22.140.51 -221.216.240.245 -187.161.83.96 -85.135.243.220 -90.211.152.125 -92.196.42.65 -31.57.74.31 -187.147.251.197 -188.207.95.41 -95.222.188.217 -190.159.95.190 -71.36.220.248 -36.76.18.26 -80.11.226.53 -78.163.123.228 -189.204.164.169 -58.182.120.211 -93.86.251.111 -84.216.199.63 -83.20.48.4 -81.175.210.63 -119.237.90.152 -79.147.235.72 -137.135.48.99 -160.171.125.185 -130.215.124.85 -198.18.1.10 -77.29.108.119 -189.242.129.27 -188.162.132.133 -77.243.183.94 -78.125.179.134 -24.214.182.28 -81.234.23.242 -124.122.253.86 -95.252.203.179 -189.25.60.50 -190.142.81.36 -201.208.98.13 -106.187.36.44 -171.39.41.252 -188.83.111.148 -190.37.177.83 -94.190.41.3 -96.21.54.26 -155.4.130.140 -188.251.165.89 -71.244.110.93 -113.254.169.55 -69.123.225.156 -56.99.107.117 -66.60.133.42 -91.225.98.162 -94.41.64.71 -92.138.109.194 -142.161.114.127 -5.151.152.147 -151.24.152.4 -209.222.18.51 -144.64.86.12 -49.195.176.237 -92.131.11.116 -108.161.125.223 -98.209.226.86 -95.81.250.253 -70.208.6.53 -84.231.84.105 -110.168.232.221 -181.51.166.159 -151.74.10.81 -213.233.96.10 -5.63.144.156 -171.96.168.126 -128.69.7.182 -70.70.34.86 -68.184.83.28 -84.236.38.116 -87.1.245.196 -181.208.47.253 -109.245.151.167 -184.75.213.134 -186.95.46.68 -165.255.172.58 -219.73.27.5 -100.68.93.19 -202.62.17.115 -83.22.172.58 -179.234.194.69 -118.211.230.64 -178.9.240.143 -95.28.183.3 -46.254.11.158 -74.193.208.180 -193.51.6.5 -92.148.135.217 -78.15.174.21 -41.174.160.149 -93.51.148.228 -24.179.14.89 -91.48.61.225 -139.162.24.133 -24.84.188.5 -108.244.47.41 -88.3.38.194 -37.45.160.140 -189.153.60.95 -37.27.50.204 -96.233.67.164 -156.211.215.134 -108.80.58.111 -108.69.112.21 -186.90.98.44 -173.89.84.54 -85.25.194.85 -205.170.14.244 -213.87.126.214 -112.198.82.157 -86.138.53.33 -82.176.127.213 -94.10.73.206 -162.216.46.135 -86.130.140.227 -86.152.54.251 -198.204.210.68 -108.251.123.134 -186.214.224.142 -84.119.98.171 -186.88.157.110 -189.178.148.244 -130.15.199.115 -190.207.190.244 -95.28.185.134 -88.206.187.1 -80.47.247.96 -85.206.100.75 -190.77.79.214 -81.200.14.126 -187.78.67.179 -177.228.65.109 -109.202.10.42 -85.76.167.169 -46.166.188.224 -109.75.178.93 -213.67.148.249 -92.157.168.181 -201.157.91.73 -174.58.249.186 -198.18.1.95 -91.148.77.205 -79.133.142.93 -109.153.188.99 -208.167.254.37 -77.181.3.3 -83.7.170.93 -178.164.195.234 -72.136.101.25 -213.24.132.13 -181.162.51.72 -188.17.9.40 -182.149.130.239 -75.114.240.23 -187.143.212.81 -109.81.208.158 -87.0.202.64 -21.106.179.117 -148.31.163.57 -183.171.177.23 -84.125.169.134 -178.198.242.133 -119.9.105.164 -0.0.0.0 -95.91.207.113 -125.72.123.245 -175.38.196.103 -83.86.42.44 -223.225.151.71 -94.68.134.137 -77.49.187.76 -105.233.77.216 -177.228.88.39 -94.71.54.26 -178.64.122.121 -86.216.64.167 -49.64.105.88 -205.197.242.183 -69.254.108.4 -91.152.158.166 -120.165.82.23 -95.27.226.29 -76.124.76.145 -84.159.232.37 -178.84.100.142 -173.72.136.151 -105.228.185.243 -223.225.154.206 -85.135.171.158 -85.26.165.33 -92.110.103.112 -87.14.218.112 -109.221.221.97 -175.33.226.219 -142.4.218.175 -91.77.226.181 -79.204.185.44 -186.188.64.207 -26.162.173.209 -69.231.35.237 -81.158.203.27 -77.20.80.189 -178.167.129.161 -42.2.227.111 -186.94.110.227 -152.23.150.97 -189.27.18.212 -79.245.209.128 -190.29.231.15 -96.22.101.105 -85.173.115.239 -89.72.250.80 -202.62.16.4 -0.0.0.0 -186.91.170.42 -112.208.190.3 -37.235.146.166 -216.40.70.98 -64.191.29.34 -86.85.125.240 -78.164.97.108 -91.158.232.111 -218.142.99.184 -24.184.24.162 -73.19.76.93 -104.172.24.79 -101.136.198.7 -91.105.176.20 -98.67.92.79 -176.46.93.116 -96.21.254.147 -46.244.192.30 -139.195.25.65 -173.75.249.15 -85.25.210.25 -25.69.38.113 -190.201.12.159 -77.119.128.157 -5.237.19.68 -79.130.163.117 -75.161.240.113 -89.0.7.35 -190.203.160.220 -190.93.250.41 -128.90.23.4 -165.47.80.207 -83.202.33.220 -75.82.46.205 -174.139.74.218 -186.91.238.219 -92.144.200.122 -178.0.63.141 -76.178.149.21 -84.159.235.173 -84.104.81.56 -77.88.251.253 -62.109.37.226 -75.159.1.100 -70.196.196.25 -91.61.74.165 -94.112.241.242 -104.45.135.147 -113.254.168.101 -94.21.126.27 -188.113.91.140 -0.0.0.2 -29.108.45.223 -50.153.149.88 -92.37.51.148 -95.81.233.129 -124.217.188.204 -50.245.144.205 -88.8.65.219 -88.128.80.4 -111.95.163.140 -45.56.39.12 -176.9.61.40 -93.82.94.46 -201.191.195.235 -77.29.197.123 -40.76.47.144 -2.136.28.141 -67.53.205.187 -136.243.62.98 -217.208.179.41 -79.245.196.100 -140.247.0.75 -90.203.117.109 -151.15.98.15 -85.76.42.248 -65.27.65.178 -213.166.200.124 -71.82.169.191 -151.237.43.222 -201.211.22.44 -67.5.176.5 -111.91.74.57 -160.176.173.124 -87.15.222.204 -2.85.58.108 -50.247.211.162 -79.245.217.213 -124.122.237.67 -89.153.235.154 -46.167.109.219 -79.203.79.28 -72.58.199.221 -93.190.181.183 -217.174.155.155 -5.141.221.243 -78.92.198.142 -189.123.189.192 -205.100.213.40 -77.231.221.177 -37.188.232.39 -112.198.102.141 -84.147.122.57 -2.135.127.246 -206.75.168.223 -206.130.91.237 -116.16.95.251 -37.72.10.137 -31.181.184.129 -92.222.28.13 -69.42.234.159 -128.127.210.88 -37.5.43.90 -178.162.193.97 -108.45.158.161 -77.162.138.28 -77.89.248.90 -5.18.63.57 -24.62.53.127 -85.156.13.237 -151.15.85.80 -176.33.109.91 -1.4.206.140 -104.157.189.4 -121.225.226.92 -217.235.245.112 -190.36.148.66 -46.253.253.84 -201.209.130.118 -162.216.46.141 -209.126.76.117 -104.200.151.54 -93.80.197.95 -87.5.5.78 -92.124.31.153 -176.212.178.160 -90.4.173.86 -222.64.139.107 -84.99.129.241 -38.211.239.187 -119.250.149.37 -88.105.204.1 -186.179.106.1 -113.173.78.173 -105.208.244.120 -104.210.0.71 -178.194.65.149 -222.132.2.70 -186.79.224.179 -92.237.244.8 -190.157.73.195 -62.231.188.129 -86.191.215.1 -70.59.17.67 -62.92.112.6 -83.5.143.28 -188.25.160.13 -0.0.0.0 -187.240.198.232 -79.140.167.244 -174.97.26.213 -181.90.26.16 -79.184.207.243 -2.62.44.154 -46.0.51.72 -98.238.231.31 -120.144.26.14 -72.241.236.178 -37.134.72.93 -188.143.32.39 -69.171.107.214 -171.97.224.32 -108.54.103.176 -107.194.30.116 -171.149.2.249 -178.234.66.23 -158.42.125.14 -69.36.215.49 -94.50.196.101 -217.151.54.26 -31.61.140.244 -193.161.15.76 -73.55.215.101 -124.104.112.150 -217.95.239.51 -76.104.64.62 -83.78.9.216 -85.71.44.226 -223.204.250.206 -169.1.121.116 -177.134.229.189 -89.241.140.97 -188.196.134.227 -71.62.232.70 -46.44.37.124 -142.217.187.68 -178.94.172.164 -176.58.231.221 -193.238.38.144 -24.48.212.145 -100.116.210.117 -50.106.174.52 -134.255.109.40 -86.45.106.149 -92.249.92.85 -81.154.37.13 -66.87.97.55 -41.165.4.106 -109.182.51.122 -95.26.169.115 -198.8.80.155 -64.61.51.178 -110.168.231.226 -58.33.130.50 -124.229.133.168 -83.149.46.90 -202.62.16.20 -195.174.63.110 -150.27.127.98 -84.244.18.20 -65.27.245.94 -199.16.96.145 -78.173.68.47 -186.115.229.57 -85.51.153.198 -99.178.135.101 -41.249.165.237 -190.201.165.99 -190.177.98.177 -99.187.33.246 -73.35.112.73 -95.237.97.7 -79.235.248.242 -81.108.157.78 -193.34.145.124 -80.223.135.107 -188.18.28.45 -177.228.66.13 -24.44.203.215 -58.11.70.243 -113.240.247.242 -80.235.62.161 -146.185.150.70 -108.61.19.5 -65.27.89.177 -181.130.118.110 -79.245.209.9 -71.95.186.175 -217.71.47.220 -93.143.248.105 -95.223.121.159 -186.93.167.188 -24.192.24.115 -101.114.75.142 -82.19.92.224 -217.226.243.86 -186.87.6.195 -78.209.19.92 -91.148.114.172 -50.142.234.175 -91.134.233.254 -39.250.103.108 -202.62.17.179 -128.78.135.164 -179.212.185.123 -25.193.218.1 -197.211.52.26 -190.78.147.223 -112.156.51.76 -178.57.99.40 -58.182.120.211 -41.244.241.221 -90.151.144.22 -121.35.17.81 -50.23.115.93 -81.153.146.33 -77.249.199.235 -200.162.249.24 -124.197.16.81 -79.141.246.80 -118.233.230.47 -105.233.77.88 -216.114.224.73 -52.71.215.53 -212.54.196.101 -91.232.124.59 -72.42.106.23 -86.94.147.16 -178.184.63.128 -103.199.41.194 -2.222.34.104 -85.175.20.156 -124.122.29.190 -117.151.176.6 -87.0.208.206 -71.250.245.33 -210.55.212.46 -5.139.75.217 -95.91.206.164 -2.93.226.176 -176.193.188.215 -86.38.41.1 -59.58.238.21 -187.188.19.71 -50.153.150.134 -177.249.153.191 -95.90.53.237 -190.73.47.192 -186.90.15.65 -192.99.13.67 -104.129.24.155 -91.127.56.126 -217.71.45.211 -71.127.224.135 -79.67.194.168 -13.93.150.42 -109.43.2.98 -207.172.224.81 -78.147.75.63 -208.84.132.253 -190.198.3.63 -118.90.23.40 -178.13.79.48 -176.58.103.240 -216.14.119.122 -204.112.179.114 -93.143.252.213 -49.15.136.120 -110.167.219.173 -217.253.222.163 -100.73.22.72 -216.209.119.6 -31.42.237.209 -185.46.249.145 -83.143.240.45 -79.30.246.76 -150.69.145.157 -118.98.96.151 -76.11.216.201 -91.44.228.200 -80.11.226.53 -208.44.136.67 -198.211.38.157 -67.170.218.234 -190.38.178.182 -186.87.208.254 -67.181.167.196 -147.62.114.140 -209.107.214.55 -1.0.0.0 -119.236.139.193 -222.152.161.106 -97.101.86.80 -50.153.148.140 -88.132.143.170 -168.1.6.18 -79.41.223.165 -78.8.13.6 -94.66.57.24 -86.140.40.180 -94.96.41.4 -220.220.88.5 -89.71.115.25 -77.38.95.104 -188.162.39.231 -37.112.7.17 -62.63.91.96 -187.143.59.112 -68.246.2.180 -24.152.231.246 -2.187.200.134 -153.183.217.213 -70.168.69.126 -79.208.167.161 -88.217.180.9 -93.143.136.165 -86.115.102.42 -80.131.61.109 -162.239.34.236 -91.48.57.111 -158.69.31.40 -188.226.144.233 -67.149.247.90 -182.165.44.216 -81.159.65.131 -79.47.233.208 -88.241.49.194 -186.93.225.184 -86.19.224.63 -76.19.17.188 -37.24.158.219 -85.76.176.126 -5.248.84.56 -68.4.194.25 -231.255.154.44 -80.57.219.95 -201.210.86.19 -109.43.3.23 -98.207.163.188 -93.202.162.111 -99.228.18.37 -197.116.68.113 -69.138.11.33 -109.98.63.224 -112.210.102.141 -213.211.143.17 -95.17.252.70 -174.60.14.63 -178.66.204.156 -72.200.198.145 -92.80.196.123 -146.90.135.129 -213.220.206.204 -46.246.150.244 -140.168.134.185 -172.245.17.12 -5.233.6.23 -80.113.129.139 -79.206.171.53 -83.4.148.240 -101.99.203.102 -171.7.219.199 -104.200.151.3 -158.69.8.194 -80.103.188.87 -91.48.32.205 -85.178.71.102 -93.113.93.207 -209.91.43.78 -24.204.194.99 -80.174.238.232 -50.148.74.47 -62.197.218.214 -65.129.14.9 -186.89.90.196 -46.246.204.126 -5.200.52.133 -37.78.189.109 -189.194.112.230 -178.93.150.194 -53.193.238.248 -77.2.189.231 -154.119.57.252 -184.171.221.233 -66.87.68.1 -79.50.152.125 -182.86.80.146 -201.29.101.113 -53.193.239.189 -213.47.88.249 -98.160.239.93 -89.131.174.242 -200.92.5.63 -171.96.167.66 -86.129.69.231 -92.40.183.177 -186.94.97.240 -97.117.164.169 -50.169.246.145 -101.80.128.236 -220.246.220.111 -159.172.226.177 -86.31.128.135 -74.218.235.108 -164.78.139.233 -193.34.160.72 -93.210.122.68 -193.168.1.100 -46.193.132.28 -65.118.121.91 -31.61.141.53 -104.200.151.75 -88.152.185.158 -201.4.90.63 -198.105.244.119 -88.254.164.183 -83.44.122.82 -79.19.6.37 -188.76.105.164 -80.110.47.213 -181.137.36.56 -80.4.97.103 -217.95.253.103 -93.104.103.129 -37.48.86.181 -179.5.8.19 -212.23.185.22 -81.196.32.176 -172.89.205.21 -73.90.211.0 -62.74.23.11 -231.210.83.146 -46.101.128.131 -186.15.8.16 -24.246.57.236 -66.63.176.223 -180.252.90.132 -223.204.247.173 -91.181.167.61 -209.188.18.43 -190.252.136.95 -81.7.79.148 -117.208.209.181 -186.92.34.75 -128.71.78.96 -79.245.196.125 -219.132.169.77 -200.56.38.193 -180.251.253.5 -186.93.59.201 -100.92.135.255 -37.188.236.106 -178.93.35.14 -79.204.180.184 -50.153.149.45 -202.62.17.210 -68.196.158.116 -162.210.196.175 -24.138.129.215 -93.79.197.70 -46.98.111.95 -83.132.22.255 -180.242.27.12 -217.24.135.250 -79.16.92.158 -90.204.155.154 -190.45.238.103 -37.215.59.175 -185.3.151.60 -94.141.162.11 -41.174.166.66 -80.107.68.218 -212.74.198.2 -41.96.38.253 -0.0.0.0 -67.85.63.112 -36.88.141.249 -145.133.165.175 -81.32.245.39 -46.246.219.114 -5.141.222.49 -177.133.210.69 -197.49.157.92 -178.79.79.120 -83.29.92.182 -31.44.253.224 -185.3.151.123 -176.193.197.136 -87.152.129.52 -115.87.121.205 -77.49.159.77 -105.108.27.121 -92.144.213.82 -46.109.74.73 -100.42.160.78 -95.24.99.127 -186.54.141.61 -223.207.119.134 -188.73.192.57 -70.51.25.253 -183.16.3.173 -37.24.146.248 -94.242.222.251 -49.32.36.161 -41.251.33.220 -79.141.170.4 -124.122.237.67 -79.16.172.241 -79.186.217.121 -178.128.177.165 -114.79.12.121 -95.19.21.165 -93.156.81.50 -178.165.128.117 -68.39.187.73 -151.235.136.86 -186.207.213.206 -85.229.184.205 -111.240.211.83 -188.221.40.209 -191.112.243.63 -178.234.12.95 -190.238.98.73 -93.150.78.97 -179.8.129.14 -77.165.247.110 -190.239.38.166 -189.174.114.178 -93.205.17.169 -95.72.134.13 -84.154.167.152 -62.2.218.10 -95.220.229.126 -5.164.173.159 -94.134.4.178 -117.200.204.157 -178.221.184.6 -77.20.176.135 -0.0.0.2 -91.39.197.227 -171.149.2.249 -67.165.120.50 -97.90.203.136 -47.217.159.177 -105.226.137.23 -67.83.72.171 -41.144.196.62 -189.223.40.145 -220.173.185.231 -109.161.89.199 -176.41.228.17 -77.70.68.47 -91.202.135.145 -83.185.91.165 -31.150.218.95 -171.39.43.113 -95.91.240.232 -171.96.172.138 -91.44.237.157 -203.217.68.236 -174.58.253.59 -202.62.16.108 -142.160.113.197 -5.42.105.143 -180.252.93.87 -206.183.119.36 -176.51.208.129 -159.29.194.242 -0.0.0.0 -5.100.81.158 -217.197.250.33 -82.72.102.219 -124.150.29.101 -77.164.58.243 -188.37.186.128 -5.140.139.49 -67.85.63.112 -95.179.62.63 -23.240.234.72 -213.108.208.79 -187.170.158.202 -201.41.173.2 -68.195.171.102 -92.251.154.55 -2.182.202.55 -178.65.132.42 -46.159.49.34 -1.189.194.115 -36.78.249.200 -151.18.52.171 -99.246.216.151 -67.5.248.216 -2.110.116.27 -14.97.145.32 -37.201.6.202 -71.181.32.76 -97.127.124.25 -108.80.58.111 -84.24.170.40 -37.6.110.7 -176.212.176.146 -86.212.45.38 -191.234.38.103 -117.198.131.128 -87.81.133.34 -93.126.80.151 -152.59.57.53 -198.23.200.184 -84.251.165.229 -79.192.207.150 -173.79.131.221 -123.201.196.249 -112.226.70.121 -88.232.236.61 -79.117.59.4 -203.166.254.250 -83.83.205.251 -171.4.15.49 -80.106.197.8 -92.93.148.140 -31.54.226.230 -93.81.75.134 -41.96.150.179 -108.61.226.7 -86.159.138.213 -95.160.150.34 -95.189.3.132 -87.116.161.14 -94.7.141.205 -78.47.149.84 -202.62.17.10 -61.227.229.211 -31.132.225.143 -187.14.108.85 -84.41.36.30 -189.238.214.70 -173.192.176.136 -113.172.95.150 -155.46.1.20 -5.28.189.174 -108.54.168.63 -109.236.137.250 -31.174.206.35 -68.231.74.249 -87.113.49.184 -36.71.162.49 -1.0.0.0 -124.148.165.65 -84.81.98.206 -85.174.61.34 -14.177.108.83 -62.47.227.187 -124.122.2.78 -179.55.38.106 -0.0.0.0 -49.85.204.30 -103.199.34.164 -2.222.34.104 -37.122.196.148 -69.124.57.26 -217.23.186.199 -68.204.242.231 -180.71.101.17 -84.154.93.193 -190.73.126.123 -24.119.202.175 -104.156.228.183 -77.231.219.235 -81.104.96.169 -25.123.50.89 -81.243.118.53 -201.22.154.139 -72.143.235.149 -110.168.231.205 -95.85.45.116 -217.235.247.220 -212.237.86.137 -200.52.22.83 -217.164.143.91 -124.122.109.4 -37.24.159.36 -212.251.121.125 -81.141.22.113 -187.233.168.97 -95.146.118.86 -81.141.16.237 -77.131.2.240 -78.150.15.78 -74.75.46.110 -213.46.74.143 -103.219.4.203 -78.105.113.132 -100.68.210.170 -171.101.162.62 -65.185.44.222 -23.94.218.151 -187.170.125.234 -83.26.161.110 -201.114.25.237 -84.147.126.42 -190.75.97.64 -122.100.181.33 -90.1.218.225 -125.72.123.245 -83.139.146.2 -253.134.93.88 -201.230.90.141 -190.67.190.71 -189.24.200.232 -107.221.196.68 -202.80.215.19 -190.73.253.30 -105.236.34.70 -106.68.25.233 -181.194.27.123 -79.224.70.165 -186.90.50.97 -173.210.142.135 -94.68.173.226 -69.165.242.28 -172.110.5.36 -79.180.7.46 -178.19.96.59 -45.79.195.172 -128.199.217.67 -84.147.122.196 -186.104.156.37 -95.221.121.107 -88.206.187.54 -167.61.27.101 -79.101.223.127 -36.86.63.180 -67.118.170.102 -79.245.194.74 -92.127.108.147 -113.22.90.62 -177.221.251.80 -54.195.241.227 -69.35.163.246 -113.241.227.205 -100.68.108.228 -201.240.63.115 -200.8.206.85 -92.134.68.137 -77.166.187.108 -95.160.73.67 -213.168.24.2 -86.153.95.169 -24.38.155.231 -190.36.148.66 -58.70.1.212 -95.17.245.168 -114.88.165.216 -190.199.48.6 -5.254.97.91 -71.35.70.44 -86.208.73.16 -212.255.255.216 -77.239.67.88 -79.147.194.118 -90.4.251.196 -151.227.86.5 -70.80.71.149 -72.69.190.182 -68.52.132.102 -113.52.90.168 -68.4.208.136 -2.96.241.150 -71.52.84.91 -88.17.165.46 -100.82.113.161 -174.21.77.135 -181.28.55.24 -84.147.117.137 -104.207.136.13 -88.226.55.195 -68.164.80.49 -69.179.143.48 -82.74.131.244 -90.208.124.138 -81.242.194.187 -87.115.29.13 -213.139.53.11 -99.224.242.213 -77.7.149.194 -78.94.32.194 -216.172.138.189 -109.169.168.151 -46.190.34.51 -193.173.216.141 -86.211.114.37 -128.71.63.187 -181.167.138.145 -176.37.244.102 -88.113.195.162 -180.108.78.32 -89.3.175.167 -37.45.105.227 -66.69.125.175 -80.213.211.183 -171.97.215.109 -85.222.174.131 -46.188.33.88 -31.3.159.108 -25.178.132.137 -92.52.34.44 -190.73.156.224 -62.199.144.11 -71.35.66.229 -5.239.187.160 -77.171.31.33 -86.142.225.26 -91.226.79.70 -95.90.203.249 -42.168.94.253 -75.174.90.85 -93.220.95.29 -37.110.210.152 -93.81.87.179 -41.144.196.62 -68.61.208.100 -213.151.213.120 -198.27.97.180 -81.141.5.247 -62.4.196.155 -82.60.153.56 -130.215.124.85 -79.119.13.49 -201.209.12.17 -213.23.160.162 -50.153.151.12 -181.111.47.128 -176.41.230.232 -72.78.180.127 -139.192.136.198 -188.251.165.89 -96.2.40.126 -190.38.141.44 -100.68.200.239 -183.16.196.195 -68.246.191.100 -213.5.52.72 -119.76.74.173 -190.203.238.156 -88.25.138.178 -90.203.111.252 -109.88.137.172 -89.151.173.175 -94.66.57.206 -186.95.58.130 -14.153.1.180 -213.108.149.97 -37.145.47.214 -32.51.15.77 -158.181.103.107 -92.62.226.213 -213.168.24.2 -86.61.35.42 -87.244.68.187 -82.221.105.49 -177.39.37.65 -93.190.137.119 -24.107.14.224 -202.62.17.103 -112.198.64.20 -95.97.189.200 -187.233.175.136 -162.220.221.43 -89.142.34.204 -45.78.195.224 -94.157.236.220 -97.121.188.193 -24.93.199.96 -89.201.4.91 -83.50.179.222 -36.77.19.150 -178.217.27.193 -2.95.4.185 -81.17.27.234 -167.58.64.174 -104.200.151.76 -120.197.109.127 -41.250.70.94 -82.45.94.36 -191.17.69.226 -87.0.217.236 -190.73.156.224 -185.63.217.216 -100.68.42.202 -50.163.28.210 -71.19.252.27 -91.67.95.126 -190.62.100.198 -83.55.84.121 -201.11.58.115 -114.83.91.209 -209.213.169.101 -122.195.51.125 -77.105.51.215 -189.97.76.94 -186.62.199.48 -154.161.77.185 -109.188.125.42 -67.5.174.176 -192.151.148.186 -92.226.50.36 -99.112.205.199 -89.65.239.145 -112.210.26.78 -85.222.169.120 -114.79.37.51 -60.168.166.4 -68.2.69.203 -89.173.7.7 -151.238.64.226 -187.143.130.145 -177.223.6.146 -94.59.19.227 -92.246.211.241 -80.131.211.219 -92.208.67.183 -101.23.211.146 -201.141.173.60 -36.68.171.218 -87.117.198.189 -83.255.120.18 -50.23.115.115 -82.56.150.176 -86.6.159.7 -1.0.0.0 -87.103.104.253 -36.68.50.157 -173.160.188.78 -190.37.53.226 -109.236.90.135 -180.251.194.182 -94.11.72.96 -190.142.46.110 -162.72.168.31 -198.8.80.172 -98.211.161.99 -181.54.174.26 -111.95.163.59 -86.157.212.54 -85.28.95.185 -201.233.142.118 -223.243.44.185 -213.87.224.181 -95.88.49.98 -201.191.254.230 -95.19.16.26 -62.113.206.152 -97.123.149.144 -95.49.170.59 -94.68.201.168 -71.176.111.234 -2.62.1.52 -196.210.182.77 -86.166.166.183 -149.254.218.236 -111.95.114.153 -85.21.246.137 -78.151.93.233 -14.201.56.59 -105.233.77.29 -95.174.112.248 -5.141.188.165 -172.98.87.34 -152.115.56.228 -84.198.202.93 -75.132.213.248 -77.254.137.179 -89.67.104.161 -177.228.85.75 -151.224.96.67 -190.198.19.209 -62.227.200.68 -178.43.55.236 -2.62.23.162 -201.141.197.113 -128.39.168.83 -110.77.246.47 -82.36.186.247 -64.145.94.121 -182.249.242.9 -204.83.97.27 -81.131.148.40 -71.198.11.116 -81.184.126.146 -190.99.132.11 -189.70.85.120 -92.232.213.133 -187.190.149.24 -213.104.98.3 -91.59.157.5 -87.203.127.183 -14.1.200.73 -74.46.175.215 -128.90.92.90 -187.233.168.97 -90.46.77.211 -217.34.229.35 -77.51.168.226 -217.235.240.122 -81.155.44.48 -24.66.164.123 -67.61.226.128 -88.81.90.161 -201.18.124.164 -76.88.140.57 -101.99.147.59 -80.202.240.76 -73.42.123.157 -78.148.248.150 -81.141.4.217 -178.157.238.33 -77.172.223.31 -79.245.223.4 -81.141.16.237 -83.170.104.253 -93.230.48.203 -192.167.1.4 -201.143.101.125 -117.82.95.109 -173.230.171.42 -202.80.215.47 -171.97.185.187 -75.172.14.95 -88.232.5.214 -190.231.55.159 -50.40.217.241 -87.110.50.162 -71.86.177.48 -5.238.238.134 -176.10.63.196 -78.0.6.52 -108.81.43.50 -115.79.200.157 -188.23.146.68 -87.226.22.203 -143.177.130.57 -186.205.38.15 -131.94.186.34 -213.22.179.152 -171.97.220.88 -62.212.103.39 -178.221.145.105 -78.132.85.156 -221.163.72.245 -71.54.170.137 -88.217.180.120 -1.0.0.0 -46.39.230.225 -190.199.35.111 -18.111.20.175 -187.170.145.98 -46.44.32.20 -107.138.93.38 -93.47.133.195 -171.4.193.144 -190.36.128.114 -103.27.223.89 -99.228.186.52 -85.140.0.78 -24.17.41.205 -80.117.234.46 -188.18.15.9 -193.92.162.244 -66.177.82.24 -188.25.174.94 -75.166.214.12 -58.10.204.156 -198.8.80.33 -97.121.143.100 -188.18.14.133 -5.68.180.88 -197.134.127.130 -96.240.86.151 -174.91.141.219 -77.117.102.55 -111.75.99.167 -174.62.75.38 -77.9.170.119 -14.203.72.239 -70.30.52.78 -189.26.209.43 -179.94.175.165 -73.90.205.121 -186.79.30.184 -75.156.118.46 -79.204.151.112 -81.5.98.104 -0.0.0.0 -104.156.228.101 -174.52.86.133 -121.214.11.69 -46.159.144.158 -70.194.133.202 -93.181.13.101 -96.254.64.47 -178.36.6.207 -27.159.20.249 -99.229.142.108 -93.156.85.152 -250.31.16.246 -87.21.89.166 -146.199.167.59 -176.248.174.118 -83.209.227.175 -176.14.152.87 -97.114.122.123 -195.38.124.224 -151.238.70.86 -76.23.11.16 -84.192.131.77 -216.150.98.41 -213.79.35.221 -81.83.11.251 -188.198.161.33 -41.150.126.77 -197.116.88.51 -84.188.79.10 -31.207.111.218 -201.210.191.90 -95.189.22.182 -80.236.18.96 -188.159.173.48 -2.62.19.20 -192.0.0.2 -62.178.107.69 -96.49.76.100 -187.244.193.17 -99.43.85.101 -140.168.123.154 -83.45.160.174 -95.19.21.165 -82.194.196.253 -91.48.62.202 -85.212.65.71 -205.220.163.91 -115.117.126.224 -46.159.168.3 -179.7.174.165 -104.228.3.233 -79.191.27.114 -222.228.145.118 -79.112.56.241 -94.25.133.48 -187.254.153.218 -46.236.145.3 -37.14.5.90 -95.17.250.151 -86.17.238.232 -62.165.44.46 -203.87.201.150 -110.168.232.186 -87.103.52.73 -92.106.138.114 -177.188.209.220 -92.224.245.246 -200.82.209.75 -176.219.147.221 -182.15.219.243 -36.84.13.160 -87.14.218.112 -85.75.133.89 -73.214.19.5 -47.89.29.74 -178.222.73.219 -199.7.156.128 -109.111.243.164 -91.48.40.154 -92.4.80.144 -188.130.136.160 -190.74.50.60 -109.98.165.225 -40.127.96.154 -179.236.252.159 -110.167.196.251 -53.150.186.201 -94.180.149.108 -75.114.240.23 -60.93.52.103 -91.14.44.208 -117.212.122.217 -78.8.148.124 -178.254.191.97 -188.103.130.30 -79.94.135.249 -2.187.202.229 -92.4.80.144 -98.247.82.17 -2.223.240.102 -97.95.202.36 -80.233.175.48 -84.159.253.190 -179.7.160.222 -5.143.133.236 -223.92.12.38 -178.120.146.6 -79.245.210.198 -218.86.161.254 -187.190.9.31 -93.123.163.96 -5.28.165.169 -188.73.192.30 -1.172.122.137 -93.100.39.93 -71.9.253.183 -109.203.146.219 -109.236.87.249 -109.194.99.77 -93.137.178.190 -177.17.121.175 -213.49.118.166 -67.70.137.170 -151.75.247.137 -94.216.219.178 -184.20.11.173 -71.202.52.116 -77.231.221.177 -77.248.238.60 -125.238.117.232 -14.192.209.4 -5.18.59.69 -219.90.240.193 -186.95.68.180 -217.235.247.159 -198.8.80.135 -24.114.70.175 -124.168.147.253 -31.10.151.160 -199.48.242.40 -83.26.30.141 -92.20.147.219 -77.105.60.148 -77.183.59.192 -92.144.80.67 -77.52.137.36 -79.204.148.117 -174.53.149.224 -124.171.175.152 -196.217.77.156 -77.9.114.209 -87.145.6.215 -128.71.195.108 -113.254.169.53 -49.143.138.98 -115.188.90.227 -115.70.4.78 -151.18.52.171 -167.220.196.200 -183.26.225.165 -171.39.67.3 -78.23.220.227 -13.91.97.67 -23.29.221.59 -112.87.150.52 -114.218.143.23 -202.62.16.128 -87.206.73.74 -156.241.140.131 -73.90.205.121 -31.179.120.196 -93.138.0.219 -92.106.200.119 -91.177.116.22 -91.115.63.103 -186.91.40.63 -95.114.26.116 -1.0.0.0 -98.193.70.55 -24.155.223.251 -52.41.9.64 -37.78.218.36 -67.184.154.245 -105.157.71.59 -57.40.230.77 -66.63.177.52 -178.35.140.252 -137.135.57.205 -89.242.113.52 -171.96.167.131 -88.200.136.162 -41.96.128.249 -212.228.253.143 -190.237.183.46 -82.197.214.31 -99.197.201.17 -193.92.162.214 -110.168.232.10 -187.79.220.69 -14.154.130.95 -191.32.70.254 -196.210.206.2 -171.96.172.161 -36.228.0.15 -186.53.5.218 -106.192.52.162 -76.4.181.219 -181.223.157.1 -93.33.181.113 -181.56.231.230 -79.147.194.118 -70.21.184.26 -72.181.176.144 -190.22.132.88 -87.185.5.211 -58.96.38.219 -76.188.205.173 -70.75.192.84 -171.96.172.138 -198.8.80.159 -77.7.205.190 -180.154.153.136 -14.20.208.82 -5.65.70.202 -94.241.244.103 -108.53.251.199 -87.114.4.176 -123.201.196.249 -182.239.83.217 -220.246.220.129 -99.162.89.78 -89.247.168.201 -60.50.60.169 -137.175.202.108 -199.102.52.141 -176.184.17.43 -90.191.99.12 -52.43.103.26 -212.89.231.162 -23.99.90.8 -141.134.88.149 -91.203.224.238 -101.164.115.94 -76.124.76.145 -112.215.124.102 -41.251.10.68 -62.158.230.71 -71.233.46.161 -93.142.241.147 -115.184.241.47 -31.165.68.177 -87.226.22.203 -174.35.172.33 -0.0.0.0 -96.42.233.155 -93.130.157.247 -77.71.174.94 -190.255.15.213 -144.76.80.131 -79.101.135.191 -92.37.143.70 -164.183.100.67 -213.229.68.54 -188.82.171.37 -87.5.5.150 -113.91.239.36 -189.24.147.194 -115.87.206.178 -91.113.63.204 -94.242.246.23 -122.109.70.166 -173.31.28.160 -112.215.123.199 -188.69.199.38 -1.52.142.82 -87.249.198.29 -115.87.121.70 -186.28.160.243 -86.95.37.125 -75.114.240.23 -146.3.183.92 -186.92.79.138 -75.114.188.94 -187.149.94.117 -176.104.23.247 -93.136.52.207 -101.160.157.100 -188.40.132.58 -216.14.113.63 -37.79.250.153 -223.204.249.191 -146.90.128.2 -112.215.123.68 -108.223.93.209 -68.9.115.43 -123.3.242.122 -178.222.13.145 -203.109.100.180 -94.23.213.47 -79.66.123.46 -200.8.245.5 -213.155.201.176 -189.203.175.93 -84.22.108.241 -24.66.37.121 -217.235.248.39 -188.30.191.234 -220.173.178.6 -186.117.166.66 -219.79.25.187 -59.172.140.165 -79.198.45.189 -77.221.3.223 -178.234.10.109 -189.133.15.40 -83.22.64.57 -92.20.147.219 -24.184.24.90 -91.7.25.178 -171.5.190.70 -107.170.103.218 -212.71.251.82 -186.90.61.39 -31.162.226.180 -97.83.176.11 -109.145.155.47 -176.214.237.6 -192.169.99.9 -2.34.229.181 -78.132.70.52 -82.168.244.104 -202.62.16.48 -122.121.187.21 -90.105.199.214 -178.234.112.98 -83.7.184.139 -188.167.239.0 -87.158.147.150 -79.191.66.221 -106.69.243.28 -81.158.21.236 -159.205.255.59 -46.103.220.87 -24.91.145.46 -79.22.220.247 -213.152.162.149 -0.0.0.0 -216.82.207.195 -82.55.110.9 -92.229.102.229 -37.190.51.43 -46.39.231.0 -5.138.59.135 -92.127.61.67 -77.243.183.19 -128.204.198.23 -86.7.187.242 -87.0.202.64 -176.33.107.67 -81.171.71.41 -81.141.4.205 -101.99.43.251 -44.50.90.233 -184.147.141.21 -89.37.46.253 -161.41.101.111 -197.119.49.155 -93.215.69.236 -88.206.187.54 -82.213.132.233 -213.96.29.221 -178.83.191.233 -80.39.236.96 -78.22.130.71 -93.205.28.195 -197.117.250.77 -190.36.192.92 -5.140.202.59 -178.215.114.169 -65.31.4.167 -78.169.107.179 -46.142.129.19 -2.29.149.62 -94.66.57.130 -1.144.96.234 -202.62.17.197 -14.2.14.23 -94.3.94.90 -188.107.62.61 -78.145.233.123 -104.174.85.252 -128.75.237.122 -194.33.80.12 -64.134.224.47 -198.27.97.180 -213.227.255.94 -181.67.78.116 -80.71.250.255 -181.62.238.228 -140.168.123.59 -178.127.18.12 -91.158.213.84 -192.30.89.167 -208.167.254.71 -181.45.165.48 -2.125.75.3 -185.18.140.49 -178.121.168.9 -BTCD.RT1253731 u.2507+c.2507 b.2507 v.2507 (0+230/231 1st.2507).s231 to 2507 N[2508] h.1253731 r.1253730 c.1253500 s.1253730 d.0 E.2507 maxB.64 peers.27/64 Q.(0 0) (L.1253731 2507:231) M.1253730 9db5e1adb2273c47f5d9d87cb33027cb3977688bc21992c5a353a713cae54422 ledger.a80cd39714953dca bQ.62 0:04:45 stuck.0 max.0 -151.66.241.195 -89.230.50.96 -186.79.224.179 -120.59.90.181 -5.167.37.199 -93.212.228.76 -74.119.170.51 -83.162.226.231 -50.44.184.78 -31.6.45.119 -90.0.19.234 -87.242.49.243 -46.98.119.33 -2.235.105.143 -81.231.244.196 -46.29.155.69 -150.101.230.179 -37.14.20.75 -76.75.71.45 -12.247.29.158 -95.27.77.137 -189.41.50.168 -79.200.222.225 -190.177.79.90 -71.193.134.45 -2.146.128.134 -77.168.163.194 -178.234.146.7 -125.238.118.21 -121.135.125.6 -109.10.42.135 -99.248.251.175 -201.67.2.161 -95.69.221.181 -218.142.75.243 -73.90.211.41 -80.103.93.63 -222.230.78.190 -85.230.77.92 -201.210.169.170 -50.106.33.87 -79.206.175.208 -118.98.97.185 -216.84.157.50 -86.5.124.225 -202.62.17.95 -202.62.16.98 -212.178.255.116 -78.132.33.246 -61.0.80.138 -104.34.13.253 -193.107.92.137 -36.83.30.100 -151.224.62.223 -85.49.128.43 -95.17.252.153 -93.169.65.197 -77.247.181.164 -159.206.179.155 -62.28.52.105 -79.21.114.72 -79.109.68.82 -189.238.214.70 -5.175.208.105 -94.205.1.88 -77.46.166.42 -107.77.72.19 -117.79.232.152 -71.41.55.254 -46.146.200.184 -78.132.134.30 -37.140.34.39 -178.120.23.138 -151.246.175.245 -5.156.4.175 -90.57.154.134 -78.225.68.197 -79.200.205.172 -109.230.44.230 -88.112.142.101 -189.35.206.229 -109.98.7.137 -117.192.218.30 -202.62.17.226 -70.74.244.109 -24.237.33.141 -66.228.50.86 -176.94.190.132 -72.38.223.95 -14.177.105.14 -24.184.21.63 -95.42.118.20 -190.207.77.25 -97.127.95.119 -63.87.254.155 -158.69.31.37 -0.0.0.0 -93.190.138.125 -46.166.188.208 -91.153.132.148 -217.228.57.165 -104.131.230.130 -91.125.175.196 -109.188.127.98 -96.42.237.66 -18.111.120.219 -166.137.246.122 -192.0.220.162 -46.98.12.7 -205.185.223.46 -43.226.7.45 -77.51.66.64 -216.144.236.34 -87.15.42.16 -82.242.146.58 -78.83.62.131 -143.168.37.247 -95.73.121.11 -24.19.34.247 -78.132.93.236 -157.234.138.190 -31.10.149.202 -87.98.178.140 -213.87.120.151 -179.186.154.239 -94.223.109.110 -79.24.169.19 -94.23.47.197 -79.167.166.155 -223.204.251.54 -222.247.234.104 -201.211.225.122 -84.253.206.43 -207.204.233.40 -181.208.31.78 -79.204.158.178 -94.234.170.181 -62.113.206.249 -112.215.123.124 -71.204.55.160 -140.168.123.59 -24.186.214.154 -24.87.77.185 -5.65.69.184 -190.202.250.145 -62.178.142.138 -0.0.0.0 -198.18.1.95 -79.224.0.44 -108.61.177.98 -121.35.194.150 -71.195.208.134 -86.30.167.243 -94.66.222.49 -201.40.215.107 -193.238.38.144 -206.190.151.241 -46.65.39.5 -121.224.229.225 -160.177.60.179 -124.189.116.101 -188.18.14.112 -60.19.29.21 -41.144.65.47 -124.122.211.138 -78.122.253.28 -62.98.108.210 -108.97.6.214 -189.160.3.51 -151.229.236.167 -93.104.96.127 -93.141.228.45 -54.201.183.106 -199.119.232.215 -179.179.48.73 -1.0.0.0 -98.110.177.46 -106.68.169.229 -78.235.150.223 -66.190.169.246 -73.140.155.40 -89.179.245.29 -67.169.239.87 -85.117.108.204 -67.87.55.27 -94.21.205.204 -75.82.46.205 -180.181.123.211 -46.40.58.96 -37.27.137.252 -141.134.88.149 -195.208.169.199 -113.22.95.194 -23.97.232.97 -109.166.137.102 -91.59.157.5 -79.245.219.183 -67.236.80.43 -121.45.82.86 -109.209.161.4 -2.85.179.46 -120.164.44.57 -95.86.230.196 -189.103.250.193 -33.212.156.47 -202.62.17.132 -5.165.186.57 -95.71.8.110 -48.121.64.127 -176.252.21.38 -41.105.28.186 -77.95.54.152 -146.52.16.145 -13.92.176.214 -62.74.26.165 -202.62.17.22 -109.43.0.171 -31.34.176.124 -98.173.193.245 -168.70.60.110 -84.228.22.159 -190.37.128.143 -109.177.205.222 -89.223.38.46 -178.253.141.119 -91.182.2.84 -90.209.150.21 -168.63.185.23 -179.232.197.231 -179.7.166.165 -93.195.217.161 -79.107.175.200 -178.195.18.254 -37.188.229.37 -190.39.10.186 -213.211.39.184 -148.255.183.235 -42.98.152.105 -156.210.18.207 -103.254.154.250 -79.255.228.165 -178.254.173.143 -187.78.56.13 -112.198.77.34 -78.253.251.14 -77.168.116.193 -92.133.138.44 -2.38.64.231 -0.0.0.0 -94.25.171.140 -173.245.211.34 -95.71.9.39 -31.185.4.33 -96.240.92.118 -91.185.53.129 -189.59.173.141 -79.235.241.29 -95.134.62.105 -116.25.162.131 -122.219.223.82 -36.76.56.110 -46.98.122.128 -109.30.252.146 -0.0.0.0 -94.5.235.45 -62.84.249.76 -36.76.110.20 -78.122.253.28 -220.246.221.16 -188.89.24.254 -81.61.62.168 -91.67.247.232 -104.236.120.54 -124.122.27.16 -216.246.242.233 -205.183.5.208 -179.35.93.70 -93.81.135.76 -179.55.35.82 -60.166.235.168 -37.205.56.35 -0.0.0.0 -211.24.19.36 -87.2.84.39 -69.123.225.156 -113.254.169.220 -113.159.116.23 -91.181.197.181 -173.197.103.2 -42.61.246.207 -93.87.214.15 -77.53.37.165 -201.209.91.12 -62.163.89.142 -162.255.117.106 -188.226.171.134 -27.34.30.7 -94.3.48.179 -37.47.195.86 -159.172.226.177 -190.94.79.132 -71.9.247.75 -36.230.23.41 -184.88.116.74 -86.202.71.200 -145.255.21.173 -123.138.32.162 -82.131.40.121 -177.244.254.125 -77.3.125.36 -90.26.85.134 -5.141.202.140 -79.30.205.60 -82.56.79.206 -162.213.158.169 -81.47.68.213 -27.110.174.2 -62.233.161.171 -181.223.156.207 -100.71.25.195 -98.215.49.232 -41.96.245.97 -79.117.118.39 -94.8.255.224 -94.220.38.10 -70.214.105.111 -124.122.211.138 -197.202.249.150 -87.244.147.84 -128.90.92.104 -71.17.170.92 -94.209.4.28 -170.105.118.44 -46.61.46.86 -109.190.196.220 -109.201.219.106 -90.58.17.41 -8.8.8.100 -2.85.184.196 -103.47.132.46 -79.133.129.102 -190.203.199.46 -93.39.98.104 -84.92.49.138 -36.69.117.25 -95.221.121.107 -211.223.75.41 -58.7.217.226 -46.40.58.96 -190.139.245.143 -85.178.70.123 -109.90.216.220 -101.86.158.232 -5.254.97.83 -69.165.156.162 -66.244.243.71 -197.228.244.171 -89.201.143.8 -124.168.83.112 -109.221.74.155 -187.79.121.208 -147.174.212.205 -159.253.108.76 -105.107.107.89 -108.176.233.203 -95.127.186.240 -216.137.247.150 -144.76.80.131 -5.39.155.176 -95.30.80.59 -70.197.136.190 -92.47.117.145 -83.172.105.46 -46.45.177.105 -198.23.71.77 -178.223.4.97 -206.188.68.250 -73.173.136.64 -130.185.25.195 -37.79.249.241 -62.93.77.25 -151.230.112.174 -70.176.212.107 -140.186.42.40 -78.238.86.112 -89.210.204.47 -79.225.96.36 -79.151.214.170 -108.216.30.86 -254.10.154.56 -209.169.116.201 -182.182.49.168 -182.85.66.175 -189.204.176.165 -89.254.228.135 -172.98.86.180 -136.169.137.19 -96.26.11.23 -76.84.44.204 -90.33.0.92 -85.23.221.237 -94.51.47.247 -190.71.165.230 -93.86.251.111 -78.1.239.22 -201.233.213.167 -5.22.154.41 -90.191.101.40 -94.20.193.47 -177.39.36.136 -228.255.168.189 -77.189.0.87 -188.158.250.232 -79.245.222.98 -91.63.29.70 -24.16.227.151 -5.140.103.127 -2.97.122.142 -24.93.20.50 -162.105.147.153 -77.131.13.180 -81.137.228.44 -80.131.61.32 -114.124.32.33 -217.131.104.197 -114.146.9.91 -58.186.101.71 -79.225.117.161 -50.100.64.201 -113.159.116.23 -187.78.56.13 -79.101.163.235 -76.99.37.97 -177.43.27.207 -88.217.180.158 -190.62.160.100 -89.240.128.124 -80.174.238.232 -91.180.156.211 -92.111.224.150 -37.33.16.164 -186.93.233.2 -201.75.45.103 -176.253.92.248 -181.113.152.188 -151.235.168.3 -66.87.105.231 -93.123.163.96 -37.6.241.197 -171.96.167.221 -88.217.181.124 -147.229.5.69 -78.172.234.18 -83.59.145.113 -79.235.248.242 -91.97.49.211 -173.171.103.93 -85.59.71.189 -123.23.72.83 -203.180.120.138 -121.214.190.242 -112.81.14.147 -77.174.148.62 -25.3.101.63 -106.186.117.73 -31.186.114.70 -94.194.29.231 -194.25.88.251 -67.163.60.129 -97.122.182.147 -114.244.33.102 -95.232.214.73 -100.107.21.121 -213.198.237.54 -27.97.24.174 -37.6.124.54 -84.43.200.43 -92.11.32.51 -182.239.98.182 -201.32.61.11 -193.151.12.139 -18.111.60.56 -88.156.16.254 -128.72.238.171 -37.244.213.39 -79.31.221.169 -201.20.78.54 -0.0.0.0 -37.193.83.134 -78.100.87.147 -187.78.67.179 -108.221.194.216 -190.37.54.100 -179.43.128.34 -87.19.2.177 -37.47.8.4 -107.182.231.92 -89.142.139.140 -188.26.45.216 -0.0.0.0 -2.135.127.246 -103.16.26.207 -86.153.159.91 -109.43.2.126 -187.244.78.152 -71.97.33.233 -151.75.250.108 -88.170.196.80 -100.124.150.226 -78.137.0.103 -89.239.99.253 -162.216.46.78 -76.24.147.109 -77.254.205.10 -82.50.151.8 -2.85.50.0 -94.193.47.208 -185.124.230.193 -69.20.161.227 -81.246.133.24 -181.39.238.154 -46.147.184.84 -18.111.96.248 -63.155.2.193 -96.60.248.198 -78.207.218.25 -81.250.80.26 -153.172.192.46 -245.245.190.57 -67.0.18.218 -62.84.81.3 -103.28.115.235 -5.55.208.191 -217.123.88.45 -202.62.17.119 -94.177.81.33 -95.181.3.196 -99.172.17.234 -162.216.46.27 -98.90.67.180 -187.14.227.234 -218.250.11.174 -88.217.181.124 -78.69.188.169 -201.191.103.189 -141.223.152.249 -79.245.201.136 -67.177.206.230 -66.241.75.28 -95.84.178.168 -213.105.38.228 -94.181.233.37 -91.124.21.30 -79.141.166.17 -66.55.135.221 -108.61.228.169 -190.39.194.218 -119.39.236.134 -95.145.103.125 -2.229.136.11 -178.44.27.186 -218.255.254.190 -79.234.100.79 -46.158.242.81 -5.165.135.68 -186.91.130.118 -151.238.69.129 -122.175.144.74 -190.36.221.26 -89.146.60.241 -78.42.188.215 -72.14.177.91 -146.52.3.167 -146.52.16.145 -179.215.223.24 -88.207.0.181 -148.177.129.213 -87.168.167.96 -113.91.239.76 -78.88.29.163 -197.202.240.7 -187.161.83.225 -146.115.178.8 -83.11.145.235 -81.170.151.88 -88.6.13.88 -187.3.247.42 -220.137.43.135 -109.43.0.64 -213.151.1.230 -213.183.56.124 -87.109.45.12 -90.76.58.10 -14.198.159.95 -171.108.129.71 -189.129.182.159 -75.106.106.17 -88.14.212.76 -196.38.233.200 -24.96.26.254 -196.224.64.129 -84.147.123.215 -178.234.197.80 -91.224.96.243 -46.163.71.123 -171.4.232.251 -65.130.211.240 -190.207.4.72 -83.185.91.165 -86.19.142.124 -50.99.242.140 -208.66.28.37 -5.167.77.185 -112.215.124.182 -186.87.36.127 -190.88.244.75 -85.2.91.156 -93.131.97.28 -93.87.184.75 -72.80.67.77 -67.168.77.63 -24.212.88.112 -95.221.214.198 -175.136.176.196 -45.49.180.110 -109.43.3.23 -31.6.57.61 -77.11.217.57 -190.8.243.40 -187.78.53.57 -202.62.16.219 -80.237.22.69 -188.0.42.111 -209.188.18.43 -37.187.155.143 -118.209.232.218 -0.0.0.0 -159.253.104.154 -79.32.146.219 -87.185.12.225 -94.21.136.99 -198.199.111.146 -89.230.159.154 -67.204.56.10 -151.31.139.77 -62.158.154.188 -250.31.16.246 -104.200.151.80 -24.122.34.75 -82.181.13.55 -213.220.249.220 -71.176.46.169 -93.138.18.133 -184.88.116.74 -41.200.200.28 -94.113.72.197 -187.233.132.132 -46.5.0.161 -171.39.41.252 -187.155.97.233 -142.129.40.169 -54.200.198.82 -121.219.36.217 -189.174.170.55 -202.67.40.25 -194.47.109.200 -121.236.66.181 -171.39.26.245 -105.208.129.73 -79.24.119.90 -171.92.213.16 -151.224.152.231 -124.123.86.38 -81.71.91.126 -178.43.29.179 -223.207.122.199 -41.96.46.215 -189.239.115.156 -37.214.145.68 -121.211.89.111 -185.128.41.158 -41.246.123.128 -91.125.251.114 -104.158.176.65 -142.217.187.68 -173.189.166.182 -194.105.229.67 -174.16.185.42 -117.207.3.59 -69.165.254.195 -82.76.49.200 -0.0.0.0 -81.4.227.11 -2.99.222.116 -37.59.7.79 -89.65.234.136 -41.105.236.122 -79.245.205.193 -99.243.37.210 -188.73.192.30 -117.202.139.192 -76.99.37.97 -108.61.228.160 -183.15.242.154 -46.208.8.139 -62.240.181.147 -184.75.221.106 -69.40.145.76 -95.90.54.249 -52.53.236.222 -84.189.218.207 -161.167.37.106 -61.153.226.82 -79.224.0.44 -68.202.102.68 -188.207.95.41 -82.73.127.246 -31.54.226.230 -86.137.159.144 -85.174.34.176 -188.143.107.34 -190.37.97.133 -95.137.245.107 -109.197.66.62 -0.0.0.0 -203.87.129.142 -186.90.170.182 -78.145.238.131 -81.35.192.157 -190.26.40.17 -107.191.33.13 -74.51.57.173 -110.184.11.142 -0.0.0.0 -94.216.201.100 -83.220.237.57 -101.39.6.57 -109.175.113.175 -190.79.237.7 -124.122.41.109 -95.153.131.236 -69.197.181.114 -82.242.146.58 -74.111.229.219 -79.206.165.124 -192.151.148.186 -125.113.225.243 -189.177.91.251 -188.159.148.104 -177.39.37.153 -191.6.118.35 -173.198.238.83 -73.134.127.76 -104.172.170.74 -90.212.244.231 -BTCD Q.(9db5e1adb2273c47f5d9d87cb33027cb3977688bc21992c5a353a713cae54422) -189.59.195.43 -186.66.4.154 -174.28.153.216 -178.16.215.164 -122.149.208.35 -92.22.215.63 -83.138.249.88 -79.117.87.152 -188.17.112.90 -128.82.31.114 -109.209.194.113 -85.114.175.186 -83.11.67.88 -91.127.82.222 -62.68.106.115 -81.171.98.35 -184.64.19.148 -202.67.40.27 -91.141.3.205 -213.19.46.138 -67.43.116.233 -186.90.170.255 -109.0.0.31 -94.242.246.24 -108.23.17.119 -95.68.68.208 -46.139.162.104 -91.105.23.69 -24.65.232.255 -174.33.168.74 -95.28.186.141 -209.188.48.220 -109.43.1.168 -172.243.168.80 -89.172.205.251 -85.177.101.54 -115.88.119.132 -92.144.81.208 -80.229.146.133 -187.74.82.136 -71.218.165.31 -107.203.48.251 -84.154.166.32 -96.231.58.246 -191.23.3.239 -163.125.49.31 -84.154.93.193 -83.149.45.46 -78.15.204.86 -64.145.76.227 -90.164.181.147 -188.143.66.100 -91.63.7.2 -212.54.195.80 -130.180.220.46 -37.212.159.101 -68.224.6.180 -117.44.175.180 -211.91.223.39 -213.87.225.204 -188.168.145.223 -64.145.76.166 -180.94.82.42 -194.33.80.12 -79.130.190.240 -88.251.131.252 -52.78.24.7 -177.237.153.199 -24.170.254.35 -93.81.215.149 -37.147.67.237 -205.221.255.10 -36.78.194.162 -212.110.12.247 -201.248.244.231 -203.217.68.236 -104.237.143.215 -184.20.11.173 -80.229.146.133 -190.37.53.226 -70.215.7.228 -86.173.82.203 -203.111.224.35 -86.213.175.91 -94.23.29.195 -171.97.179.130 -181.24.41.5 -218.85.98.82 -93.143.246.250 -69.167.30.89 -46.46.208.61 -188.162.39.235 -78.80.54.23 -188.36.48.170 -179.198.46.19 -95.25.80.102 -77.162.138.28 -95.81.196.114 -5.42.92.88 -86.31.255.144 -105.2.95.87 -91.182.27.151 -80.31.158.250 -83.30.209.69 -2.86.47.118 -190.219.162.2 -79.245.208.136 -5.141.222.85 -178.62.10.67 -49.147.99.6 -90.60.115.247 -159.20.211.202 -49.181.182.80 -151.62.24.33 -37.47.38.27 -197.202.231.20 -186.212.36.105 -71.52.51.171 -86.135.18.75 -178.59.121.172 -91.148.114.205 -90.208.175.48 -88.123.48.123 -71.127.224.26 -101.184.137.186 -186.91.139.45 -101.184.130.85 -24.76.192.85 -197.37.149.32 -183.102.244.241 -151.228.170.206 -114.125.188.231 -61.90.25.159 -86.128.192.204 -41.244.240.73 -92.19.38.229 -94.216.207.28 -37.146.123.6 -188.69.210.86 -172.94.99.73 -125.165.31.1 -202.62.16.28 -37.146.127.175 -174.6.78.67 -64.71.77.50 -223.204.246.6 -76.25.23.251 -109.79.58.72 -188.31.153.62 -79.222.119.160 -146.52.50.232 -189.250.37.47 -87.7.63.165 -83.13.133.86 -35.62.33.205 -179.55.88.37 -172.56.23.96 -2.162.177.123 -190.39.45.189 -24.99.180.167 -104.34.30.248 -79.245.212.122 -80.101.191.202 -76.10.150.110 -181.24.43.245 -79.47.224.126 -86.211.114.37 -188.4.215.51 -89.104.6.79 -104.243.34.106 -95.26.34.131 -31.57.94.128 -112.215.124.102 -125.69.38.128 -186.95.6.151 -181.208.95.168 -75.108.167.179 -190.38.198.253 -209.188.32.147 -179.186.112.94 -54.165.27.102 -109.43.0.18 -152.234.132.59 -35.9.171.155 -50.51.197.8 -213.197.38.170 -86.152.54.251 -82.57.5.189 -80.131.60.202 -93.129.140.155 -69.7.91.24 -134.36.208.166 -84.251.165.229 -77.234.40.151 -61.90.27.245 -190.28.189.103 -113.254.169.130 -87.168.108.59 -78.235.150.223 -5.238.246.218 -5.167.32.244 -94.222.242.178 -50.114.6.16 -193.92.193.140 -128.75.218.21 -1.144.96.140 -179.177.124.224 -112.198.77.130 -219.73.14.96 -88.152.186.122 -88.196.236.26 -184.75.213.132 -78.25.120.68 -177.201.61.252 -201.41.173.2 -113.64.8.2 -176.104.36.109 -25.13.191.166 -2.97.162.47 -80.229.35.19 -40.115.45.107 -121.211.218.102 -58.168.26.66 -80.106.197.192 -84.236.59.214 -116.114.142.67 -124.171.136.150 -95.19.24.198 -93.156.81.50 -45.63.61.127 -198.23.103.87 -189.114.232.39 -189.229.167.181 -159.118.61.183 -45.55.151.50 -31.181.236.89 -163.158.250.139 -79.41.170.156 -108.61.229.10 -88.25.236.29 -190.3.209.72 -108.223.6.145 -95.175.104.22 -83.26.180.72 -202.130.109.150 -78.139.196.85 -189.114.199.175 -186.90.89.83 -68.229.135.60 -82.131.218.204 -203.145.92.88 -200.109.43.18 -41.241.224.53 -71.53.159.168 -192.121.166.87 -101.183.63.236 -104.157.219.89 -202.62.17.78 -203.206.37.169 -186.90.208.129 -81.153.89.132 -47.67.70.34 -85.166.223.81 -181.65.33.95 -95.174.113.172 -186.42.104.138 -190.87.69.166 -76.10.161.23 -176.58.128.13 -188.108.36.227 -71.177.147.37 -37.220.84.192 -89.178.178.93 -76.68.254.64 -171.78.136.68 -25.67.145.206 -156.17.119.7 -210.195.195.68 -160.76.210.181 -84.165.3.177 -187.230.36.79 -79.45.99.172 -68.129.158.12 -71.219.139.245 -201.240.242.139 -186.119.174.41 -113.97.132.45 -92.225.37.221 -95.175.104.22 -171.149.2.249 -100.105.53.177 -93.195.208.18 -108.61.48.17 -105.228.147.187 -59.101.186.240 -176.38.117.15 -198.252.123.121 -70.193.167.238 -173.65.129.85 -92.75.124.244 -46.167.28.138 -158.181.103.107 -53.193.238.83 -5.42.102.21 -81.108.157.78 -109.90.101.71 -66.55.144.245 -5.254.97.90 -181.167.112.208 -216.155.131.195 -113.254.168.141 -217.88.3.79 -172.56.9.204 -94.66.57.80 -171.250.154.38 -93.171.161.108 -92.69.227.130 -109.93.84.203 -92.93.148.140 -125.208.174.71 -97.82.95.148 -71.9.248.87 -120.22.205.53 -41.174.167.165 -201.211.181.115 -86.131.238.37 -123.118.140.58 -2.88.117.241 -18.111.106.205 -46.103.168.112 -178.184.11.84 -130.180.218.205 -85.186.135.106 -100.80.184.135 -104.200.151.35 -95.132.133.114 -106.192.7.54 -88.217.181.157 -195.209.48.241 -178.41.95.247 -77.218.226.1 -124.122.19.135 -188.162.37.144 -185.45.13.150 -92.108.233.53 -61.93.52.22 -177.17.190.131 -93.81.182.89 -93.139.171.57 -151.72.136.1 -2.85.62.106 -177.242.208.166 -69.167.32.159 -70.174.26.142 -178.93.129.60 -186.59.92.166 -193.92.113.59 -47.55.212.189 -86.81.26.232 -199.48.245.116 -163.172.137.241 -202.62.17.60 -186.88.199.92 -27.55.91.64 -88.17.166.160 -71.31.223.116 -178.164.155.102 -79.100.168.58 -137.189.91.71 -79.185.83.6 -60.218.122.249 -62.176.13.182 -162.156.115.215 -85.24.169.215 -74.108.73.130 -94.193.136.252 -100.101.141.18 -87.118.25.232 -79.204.167.160 -79.250.37.162 -190.79.151.17 -105.224.161.218 -104.200.151.30 -95.25.143.95 -37.188.230.20 -46.188.125.237 -86.213.221.91 -187.204.32.239 -118.209.183.77 -84.176.248.102 -93.141.164.210 -93.120.33.100 -109.43.0.139 -190.78.24.228 -118.186.151.51 -176.154.77.92 -112.81.12.8 -87.79.171.84 -188.69.208.134 -109.124.202.134 -78.125.183.215 -85.178.86.218 -171.96.167.179 -188.163.65.21 -91.140.100.221 -95.19.29.26 -109.190.9.138 -190.39.175.89 -91.232.105.11 -5.141.169.226 -209.95.50.146 -98.203.0.178 -64.145.94.121 -213.87.123.136 -2.122.165.251 -109.201.133.140 -198.84.201.135 -86.210.89.109 -97.99.207.76 -201.216.15.82 -197.211.52.27 -95.246.254.103 -95.252.134.151 -79.45.100.128 -94.11.149.91 -88.137.73.82 -104.131.170.147 -88.167.140.73 -108.202.111.84 -82.181.13.55 -190.56.114.113 -2.99.221.25 -46.216.100.240 -71.30.197.75 -190.201.120.214 -5.138.18.24 -2.61.184.34 -68.148.177.25 -188.26.139.30 -140.168.123.167 -94.50.196.84 -50.137.141.201 -85.228.201.142 -104.175.162.231 -95.19.18.117 -83.82.131.238 -78.157.215.233 -31.23.47.67 -94.68.230.137 -53.193.238.248 -94.54.72.158 -213.87.121.70 -190.36.247.207 -123.148.105.78 -24.27.53.213 -143.48.117.186 -86.128.158.98 -212.190.177.186 -109.194.110.54 -189.174.176.240 -81.202.82.179 -88.141.117.52 -109.81.211.44 -88.69.90.177 -87.0.208.25 -83.85.203.206 -114.125.184.144 -78.137.14.11 -188.158.167.162 -190.38.157.244 -121.121.121.224 -100.9.27.223 -79.70.37.23 -177.9.79.75 -197.225.230.167 -24.253.97.161 -65.28.240.121 -76.21.107.113 -166.170.14.126 -86.81.111.103 -81.141.6.218 -108.71.232.32 -121.175.188.133 -179.5.11.54 -186.91.87.81 -78.148.248.150 -189.41.69.166 -188.208.105.198 -24.17.172.33 -173.74.190.170 -128.72.218.191 -25.4.3.201 -24.175.65.6 -66.87.66.220 -178.141.162.104 -81.158.189.210 -96.30.159.45 -69.167.31.166 -93.147.216.154 -177.42.121.198 -202.62.16.152 -79.157.252.14 -76.21.107.113 -128.71.102.82 -93.34.48.75 -69.7.86.218 -70.30.19.40 -2.219.68.243 -190.205.166.112 -203.164.148.154 -151.15.56.129 -193.253.170.86 -190.73.40.185 -24.231.137.146 -41.174.139.14 -200.75.102.219 -190.200.107.145 -171.96.170.169 -150.29.142.101 -14.98.83.166 -109.43.3.24 -201.211.225.122 -50.81.149.145 -53.193.239.251 -115.239.120.141 -188.114.163.176 -79.245.216.10 -71.19.249.4 -84.99.198.192 -91.228.204.51 -171.149.2.249 -50.51.65.134 -50.48.150.80 -74.12.45.62 -76.99.37.97 -75.189.132.144 -182.87.167.175 -70.44.128.63 -88.196.10.83 -62.232.5.242 -189.214.6.82 -78.138.106.240 -77.28.14.8 -73.90.209.112 -81.162.122.102 -79.255.224.173 -108.252.164.33 -190.203.14.155 -197.207.33.170 -92.133.75.32 -212.174.163.152 -209.107.214.80 -60.211.184.242 -24.40.146.45 -186.46.206.91 -91.148.94.105 -94.233.97.100 -204.186.68.213 -197.88.129.16 -108.185.135.18 -95.25.10.41 -112.208.185.255 -5.61.93.226 -81.158.203.27 -62.149.25.99 -66.237.51.224 -2.228.69.84 -47.88.79.118 -188.129.113.90 -46.59.172.34 -217.95.236.212 -24.137.85.148 -91.185.117.103 -24.17.139.255 -186.88.33.5 -1.0.0.0 -84.92.106.61 -110.168.232.136 -218.30.116.8 -188.174.91.59 -84.215.211.115 -50.0.0.56 -128.90.92.104 -190.171.121.223 -188.239.15.25 -71.90.53.87 -174.148.152.154 -145.28.186.232 -212.198.177.53 -69.172.72.115 -105.229.140.158 -90.54.252.148 -89.204.135.163 -200.8.52.205 -81.101.62.218 -104.157.135.129 -95.113.53.138 -175.138.204.119 -186.92.251.74 -171.96.167.209 -188.69.198.224 -190.203.32.110 -82.60.153.56 -151.53.183.73 -104.156.228.71 -171.97.224.32 -5.237.52.187 -51.175.41.140 -146.156.249.160 -5.239.187.61 -162.216.46.79 -24.22.111.175 -172.58.16.128 -70.173.209.163 -188.16.122.219 -1.0.0.0 -173.199.65.38 -2.6.43.143 -100.68.139.112 -92.241.152.185 -2.97.165.140 -171.97.198.46 -95.141.28.120 -95.18.39.118 -94.191.186.178 -46.44.3.174 -202.62.17.7 -109.228.92.211 -98.206.56.123 -90.205.138.179 -85.220.18.205 -188.54.228.4 -87.7.152.225 -74.216.83.159 -178.221.180.123 -94.41.57.154 -91.180.129.192 -92.157.155.123 -31.15.157.135 -223.227.19.176 -250.31.16.246 -176.92.4.24 -176.49.127.211 -72.191.228.161 -108.24.82.4 -186.92.222.216 -36.71.162.55 -213.151.2.192 -70.67.20.129 -114.79.37.125 -79.167.174.105 -24.114.70.184 -111.241.89.140 -37.45.176.243 -85.222.168.41 -21.106.179.117 -78.90.74.65 -77.43.228.161 -81.245.102.36 -80.235.60.48 -84.104.85.140 -79.246.240.229 -89.204.153.239 -112.215.123.37 -74.207.189.1 -189.217.117.45 -93.123.247.211 -0.0.0.0 -159.255.11.52 -173.244.16.243 -91.134.120.210 -81.141.8.254 -95.52.155.233 -24.246.57.236 -109.201.152.243 -86.95.134.254 -212.83.191.197 -180.172.140.92 -181.42.16.241 -223.227.246.32 -58.44.187.100 -67.248.195.131 -213.152.161.40 -82.75.141.118 -216.4.56.185 -120.22.163.204 -188.162.39.180 -71.208.224.19 -95.252.27.29 -188.221.189.125 -217.88.13.199 -165.255.85.246 -82.151.45.31 -37.78.112.147 -213.102.150.212 -178.234.235.67 -84.44.131.103 -105.228.79.241 -178.206.88.22 -85.23.16.56 -179.229.178.122 -151.24.155.96 -201.242.164.67 -193.92.127.190 -81.136.219.237 -46.129.112.120 -37.201.195.214 -177.206.0.121 -36.224.107.193 -72.67.20.72 -46.147.229.101 -61.136.176.26 -37.212.159.101 -113.195.251.160 -177.16.121.49 -201.198.42.134 -173.182.128.9 -91.214.131.89 -188.0.47.15 -186.89.49.29 -64.247.87.184 -198.96.94.12 -5.153.133.34 -46.146.115.38 -202.62.17.253 -62.202.41.207 -1.0.0.0 -176.84.8.114 -2.61.133.195 -213.24.135.217 -2.85.57.6 -91.127.18.187 -178.217.61.229 -79.245.222.54 -37.190.51.38 -87.197.162.200 -92.209.186.41 -190.177.79.50 -85.56.6.223 -94.66.57.164 -41.96.150.179 -5.2.64.14 -204.63.214.118 -5.156.106.61 -1.162.23.172 -116.231.133.47 -77.49.129.46 -24.114.81.205 -75.144.36.41 -94.50.196.84 -94.196.198.83 -107.222.140.101 -41.105.236.122 -75.168.7.211 -100.75.135.9 -103.28.115.236 -87.171.199.84 -2.84.13.138 -154.20.188.72 -186.91.130.118 -31.57.93.197 -195.29.192.134 -223.227.9.239 -213.227.252.124 -111.69.136.191 -187.170.154.194 -217.44.16.102 -85.222.168.41 -112.10.225.195 -189.156.67.120 -190.205.166.112 -186.90.15.65 -200.108.51.202 -67.44.192.24 -92.237.52.138 -120.209.131.70 -202.5.158.177 -85.192.189.112 -46.246.27.154 -95.25.49.95 -87.185.8.189 -109.90.101.71 -79.13.106.74 -125.160.196.119 -173.72.136.151 -93.178.76.184 -113.254.169.130 -93.233.152.57 -78.144.191.65 -104.200.151.45 -49.146.10.81 -186.46.224.196 -88.206.141.108 -190.200.61.206 -94.197.121.40 -79.245.217.6 -2.240.130.103 -2.95.20.67 -104.238.169.9 -93.208.127.67 -98.119.235.95 -2.85.183.249 -81.44.162.170 -73.90.209.45 -80.106.197.69 -93.143.218.109 -185.93.180.126 -202.62.16.49 -112.65.211.240 -95.142.108.188 -85.211.8.234 -37.47.217.13 -109.221.221.236 -95.236.175.233 -84.0.102.77 -190.37.161.225 -188.233.169.18 -5.140.218.85 -69.131.31.129 -164.183.100.69 -91.205.64.202 -188.76.15.37 -192.155.95.192 -86.26.86.157 -91.7.16.25 -187.143.212.81 -77.173.188.205 -65.93.21.22 -100.91.109.186 -210.129.18.130 -84.147.114.223 -24.164.76.73 -62.183.124.221 -88.208.1.194 -82.28.121.36 -190.236.62.194 -178.43.81.171 -190.62.152.218 -89.212.241.225 -68.229.235.123 -178.122.64.75 -197.110.210.233 -104.28.201.93 -109.43.1.114 -190.70.91.241 -187.240.118.122 -41.150.125.109 -203.184.41.205 -188.129.213.220 -95.151.54.119 -68.172.251.98 -196.217.160.51 -37.6.225.42 -113.254.170.50 -1.0.0.0 -71.231.218.6 -188.226.195.109 -83.131.227.230 -68.5.130.116 -18.111.35.103 -109.208.182.118 -81.247.76.128 -231.112.130.210 -98.248.40.222 -177.7.102.99 -92.113.189.236 -95.26.205.91 -176.104.35.147 -93.79.71.20 -72.79.77.139 -190.213.142.25 -73.252.3.47 -162.216.46.125 -162.213.195.228 -162.213.158.169 -112.67.211.172 -41.48.191.235 -24.114.73.133 -116.205.23.233 -0.0.0.2 -110.115.32.92 -179.197.172.50 -138.91.165.233 -80.131.211.219 -88.14.20.177 -50.84.116.21 -164.40.228.53 -190.77.79.217 -186.144.112.38 -2.25.69.36 -24.114.76.239 -82.163.165.25 -186.90.184.149 -58.8.219.112 -5.14.222.215 -5.132.7.24 -68.87.76.243 -80.107.31.185 -114.98.87.245 -119.73.122.163 -79.245.219.88 -1.54.140.99 -109.74.162.200 -60.17.17.253 -141.255.56.249 -65.185.68.233 -185.65.132.120 -195.211.206.164 -201.210.136.83 -83.9.96.10 -189.188.174.83 -90.191.107.13 -176.10.63.196 -77.53.37.165 -171.96.167.227 -203.217.27.155 -71.239.236.145 -88.24.199.135 -2.181.155.234 -68.180.0.197 -99.247.170.15 -25.31.60.102 -202.67.44.10 -142.162.162.174 -179.192.193.202 -187.243.164.218 -175.138.150.222 -212.107.130.19 -24.79.178.91 -90.66.29.221 -203.98.92.130 -209.54.7.184 -86.177.72.232 -107.140.146.255 -202.62.17.78 -174.117.209.16 -172.94.99.73 -80.204.143.24 -188.221.74.104 -87.185.22.183 -189.226.123.32 -84.200.17.236 -186.91.50.237 -212.106.255.119 -224.40.3.89 -84.147.124.207 -85.229.198.73 -76.90.104.41 -190.212.244.19 -41.105.238.99 -189.47.90.126 -181.162.51.72 -128.90.88.120 -49.76.15.28 -84.142.125.8 -73.198.40.189 -76.99.37.97 -37.112.79.133 -99.238.196.59 -80.174.72.157 -114.244.45.88 -201.208.197.14 -193.92.127.190 -193.173.216.162 -139.193.221.33 -109.158.12.15 -64.145.94.48 -95.28.160.27 -185.7.46.146 -78.250.186.8 -69.159.104.146 -78.38.63.156 -179.126.249.236 -81.240.48.1 -244.209.195.105 -110.168.232.79 -5.14.221.9 -151.250.240.128 -2.217.210.28 -93.222.175.111 -49.145.140.122 -171.149.2.249 -123.53.89.184 -187.61.214.202 -92.224.245.246 -88.217.180.105 -108.62.225.240 -92.44.150.250 -71.201.35.156 -139.216.147.57 -187.233.182.174 -93.143.233.193 -86.197.141.131 -217.233.83.164 -84.135.91.85 -217.120.206.46 -151.20.124.54 -199.111.185.207 -52.78.91.225 -31.150.160.86 -206.123.150.137 -186.95.106.66 -110.167.196.251 -24.165.181.252 -62.98.9.235 -85.222.175.183 -176.84.165.12 -190.22.129.121 -0.0.0.0 -24.115.240.34 -2.100.165.102 -178.221.162.236 -179.110.98.186 -190.181.64.234 -1.204.8.21 -217.64.16.147 -93.137.203.121 -89.245.125.162 -62.74.23.192 -31.28.57.234 -82.123.62.119 -0.0.0.2 -209.188.5.234 -72.50.144.23 -58.11.110.34 -92.37.172.246 -205.148.137.165 -80.235.62.90 -37.115.172.148 -222.243.67.252 -92.24.149.39 -187.143.158.32 -108.12.25.189 -50.137.239.137 -108.19.160.97 -112.215.123.103 -186.93.225.184 -2.83.192.141 -201.242.121.142 -200.82.219.161 -90.191.168.246 -190.103.63.253 -2.103.0.246 -109.111.243.164 -77.168.116.193 -171.96.171.107 -176.210.249.150 -41.128.142.187 -166.8.189.210 -166.188.190.201 -125.24.154.62 -188.84.48.223 -104.229.193.72 -68.226.30.59 -219.73.101.145 -113.190.33.241 -231.190.16.139 -79.43.216.64 -209.197.6.177 -187.26.79.39 -24.114.74.3 -182.99.255.85 -82.235.133.55 -85.178.128.44 -94.41.64.71 -209.205.208.34 -159.29.194.242 -90.7.193.85 -190.73.66.101 -151.20.124.54 -88.9.101.254 -106.185.55.134 -78.225.68.197 -94.34.208.109 -46.98.111.40 -2.137.111.25 -109.92.122.58 -95.30.170.195 -79.159.102.102 -2.134.151.188 -181.92.15.216 -68.247.75.133 -150.117.170.89 -104.58.140.37 -79.245.207.167 -70.81.224.17 -84.19.165.218 -84.236.120.253 -86.156.8.126 -89.164.147.115 -189.59.116.231 -67.3.70.193 -23.94.218.151 -90.0.44.245 -79.143.165.131 -173.165.129.125 -176.93.171.12 -97.90.202.210 -94.10.79.126 -50.17.187.172 -86.85.128.100 -91.179.13.23 -86.173.80.107 -62.45.107.249 -109.204.151.99 -200.86.31.106 -0.0.0.0 -104.207.152.123 -109.76.221.45 -84.152.134.167 -186.91.142.193 -125.165.31.1 -188.162.132.82 -58.11.101.70 -79.204.182.114 -190.38.45.209 -86.80.230.190 -84.198.138.27 -85.242.84.158 -77.254.199.139 -94.67.207.249 -216.218.29.243 -78.35.153.26 -89.182.23.25 -79.165.175.137 -72.213.129.244 -0.0.0.0 -78.144.145.162 -172.15.208.80 -86.20.157.128 -64.188.205.179 -88.71.238.22 -85.140.1.122 -0.0.0.0 -109.88.184.11 -5.141.201.95 -94.181.94.128 -97.121.11.235 -93.55.192.12 -193.92.193.104 -179.7.171.165 -187.149.83.67 -0.0.0.0 -62.113.202.198 -189.202.73.82 -212.228.253.143 -181.128.111.78 -85.23.16.56 -31.132.225.205 -200.93.115.124 -42.130.174.45 -41.109.219.175 -138.99.148.20 -128.71.175.210 -178.92.103.221 -46.72.208.82 -170.152.244.231 -90.201.158.28 -217.23.187.7 -188.238.63.233 -81.171.71.145 -37.79.250.236 -105.155.44.171 -187.10.148.221 -79.152.183.84 -186.14.2.70 -87.202.44.226 -92.37.46.31 -82.60.11.203 -41.239.159.32 -212.71.239.55 -209.95.50.146 -113.254.161.101 -1.0.0.0 -109.221.205.158 -169.0.169.119 -187.59.221.156 -113.185.5.149 -95.141.28.120 -220.141.132.225 -50.158.229.59 -86.179.6.141 -85.51.145.189 -5.139.143.43 -217.89.4.240 -178.41.66.119 -170.0.21.4 -99.242.164.212 -117.193.62.6 -95.189.25.41 -37.45.88.138 -78.183.9.101 -209.112.242.83 -5.28.25.30 -71.52.54.197 -37.0.37.37 -67.177.203.222 -76.187.186.183 -114.96.99.19 -200.69.176.198 -31.132.225.187 -74.72.30.82 -50.153.148.174 -0.0.0.0 -91.103.38.0 -218.142.99.184 -67.136.44.155 -41.161.91.217 -83.26.249.88 -90.192.241.230 -31.61.140.252 -93.134.99.101 -95.215.60.22 -95.221.21.83 -39.35.33.24 -182.16.25.196 -66.55.144.246 -25.5.5.161 -91.182.48.19 -193.51.6.5 -91.115.63.103 -76.169.199.180 -99.253.26.181 -120.56.106.3 -180.251.194.182 -105.228.120.31 -90.9.145.61 -86.172.239.91 -85.179.131.77 -79.224.86.119 -24.65.229.207 -67.141.21.99 -213.87.225.204 -85.26.108.232 -110.96.188.37 -190.219.127.173 -86.202.71.200 -181.31.207.140 -50.5.127.178 -37.24.152.178 -178.92.91.59 -181.54.60.125 -5.141.231.188 -220.233.77.65 -91.158.212.23 -178.234.233.200 -96.127.136.18 -179.212.185.123 -101.108.114.192 -78.234.188.9 -178.120.131.163 -217.122.124.200 -45.63.1.236 -84.26.74.79 -88.15.230.239 -205.197.242.145 -187.254.159.150 -75.69.160.21 -36.77.19.191 -83.198.46.116 -90.104.92.241 -81.158.189.210 -186.91.198.52 -213.226.219.55 -74.109.190.39 -122.17.0.22 -69.128.222.166 -109.148.240.225 -217.235.255.224 -1.162.96.155 -194.65.46.7 -217.99.240.219 -222.254.29.181 -1.162.89.118 -113.162.145.181 -188.69.194.196 -114.217.17.35 -89.151.173.175 -89.230.65.93 -172.5.141.163 -173.120.226.13 -37.190.39.194 -41.96.104.28 -216.58.117.236 -222.47.197.29 -94.191.185.112 -201.208.13.107 -78.232.43.89 -186.90.67.226 -198.100.148.190 -109.77.111.172 -164.40.231.252 -109.88.154.44 -92.100.128.83 -176.31.126.191 -79.245.194.135 -119.224.42.248 -54.189.37.6 -178.126.244.130 -5.135.36.128 -1.162.95.90 -213.151.2.186 -98.108.240.147 -80.81.242.72 -134.249.208.212 -87.15.222.204 -68.233.247.206 -189.202.95.142 -75.82.43.75 -59.40.135.128 -84.127.218.248 -78.55.250.20 -136.159.160.254 -76.18.138.1 -213.87.224.108 -79.175.68.95 -24.111.193.89 -62.152.54.44 -188.165.82.238 -86.115.102.42 -77.182.14.34 -84.177.180.24 -68.48.26.79 -91.148.113.76 -67.169.167.174 -104.131.142.198 -85.178.129.138 -67.80.146.83 -79.16.92.158 -113.92.2.25 -201.229.84.90 -89.26.78.16 -176.210.249.150 -213.127.93.143 -197.225.239.193 -2.137.15.53 -2.62.10.239 -109.153.188.99 -122.231.161.40 -88.236.9.175 -86.194.143.131 -212.251.18.47 -2.85.61.239 -213.67.134.6 -46.40.3.22 -77.28.5.136 -85.244.119.66 -212.54.207.204 -91.152.158.166 -162.216.46.83 -89.178.173.167 -76.123.100.141 -94.50.225.189 -189.202.84.78 -83.209.227.97 -81.11.221.213 -84.154.93.193 -50.155.70.199 -89.38.35.81 -188.0.47.35 -5.239.189.169 -217.131.240.122 -125.125.36.49 -77.251.14.224 -213.87.127.200 -179.179.63.226 -88.0.193.105 -90.191.107.104 -217.249.8.127 -113.13.96.143 -60.228.7.131 -177.225.193.106 -87.228.87.106 -89.148.221.72 -223.205.250.2 -88.246.172.162 -175.33.51.90 -105.156.160.16 -18.111.35.103 -71.30.197.75 -128.227.44.156 -204.186.126.127 -171.97.232.160 -190.96.207.71 -173.54.222.61 -2.104.151.66 -188.2.75.7 -222.183.51.191 -254.85.113.235 -109.214.70.45 -93.80.192.247 -85.179.169.40 -83.134.9.165 -209.54.15.175 -114.124.6.53 -121.208.89.35 -74.195.24.126 -77.181.48.236 -194.105.229.79 -178.198.214.231 -79.198.45.189 -186.93.214.168 -181.10.83.45 -201.6.131.6 -71.192.103.83 -109.201.152.244 -213.139.53.26 -179.55.87.12 -147.171.166.52 -190.22.130.27 -95.18.37.144 -123.16.221.44 -174.148.11.181 -197.246.171.176 -37.150.246.127 -172.15.0.102 -89.36.109.189 -182.89.227.143 -71.220.184.56 -100.68.89.183 -209.73.136.231 -98.215.49.232 -62.227.194.150 -138.91.165.233 -172.88.252.206 -87.5.0.248 -91.67.236.178 -77.120.70.123 -45.56.39.12 -79.16.234.212 -0.0.0.0 -2.121.201.171 -77.49.210.153 -190.22.244.92 -75.174.90.85 -92.144.209.103 -79.245.218.167 -41.132.252.67 -176.52.8.50 -78.150.15.78 -24.12.49.237 -24.189.15.109 -201.248.248.9 -201.119.148.239 -171.96.181.31 -174.66.3.25 -174.119.243.201 -223.206.69.173 -45.56.46.176 -79.206.172.204 -67.44.192.186 -188.158.169.194 -67.44.193.22 -110.149.118.131 -70.193.167.238 -67.245.82.244 -99.4.121.145 -25.191.20.230 -115.68.116.26 -37.229.90.67 -186.83.12.194 -70.189.229.36 -123.16.210.191 -219.73.101.145 -189.153.44.62 -84.20.242.6 -179.55.35.82 -141.134.124.89 -84.24.63.74 -213.16.224.169 -85.76.98.73 -82.73.127.246 -117.0.121.2 -37.229.90.67 -112.210.36.207 -177.156.187.106 -113.254.169.237 -94.4.193.51 -78.100.87.147 -109.226.126.1 -84.159.253.190 -151.20.54.200 -74.109.186.240 -88.231.216.214 -101.116.36.225 -84.147.113.190 -91.48.37.59 -72.191.14.137 -94.69.53.225 -94.50.197.11 -180.137.141.239 -100.65.40.61 -37.188.233.210 -195.37.133.6 -100.4.151.242 -118.140.106.58 -BTCD received.(9db5e1adb2273c47f5d9d87cb33027cb3977688bc21992c5a353a713cae54422) 62.75.145.171 -83.5.143.28 -ramchaindata have 2507:230 at 0 | 1083 blocks 565.112kb redundant xfers total 4225.637kb 13.37% wasted -194.105.229.207 -78.32.154.221 -85.102.206.164 -78.111.190.48 -186.118.34.106 -BTCD Q.(9db5e1adb2273c47f5d9d87cb33027cb3977688bc21992c5a353a713cae54422) -BTCD received.(9db5e1adb2273c47f5d9d87cb33027cb3977688bc21992c5a353a713cae54422) 62.75.145.171 -165.255.211.19 -100.68.47.205 -188.18.203.231 -94.177.81.30 -90.151.184.124 -184.160.95.44 -79.66.126.192 -83.59.144.92 -84.154.93.193 -153.34.162.179 -190.38.148.249 -190.99.132.240 -212.215.224.17 -189.110.171.228 -188.239.15.25 -5.254.97.91 -124.234.84.44 -101.39.53.222 -189.204.177.58 -93.136.52.207 -41.13.228.209 -217.95.244.224 -98.251.223.23 -92.251.101.228 -37.188.238.115 -115.87.132.88 -37.252.127.221 -93.107.67.54 -202.99.16.22 -95.19.31.118 -84.106.253.6 -200.44.196.213 -200.106.89.56 -62.94.37.53 -86.212.5.83 -37.214.147.64 -41.141.65.94 -231.255.154.44 -67.181.59.52 -122.56.33.171 -12.170.41.202 -69.123.132.73 -101.73.92.57 -178.148.11.106 -108.161.125.223 -7.99.150.241 -42.115.112.202 -41.138.68.56 -89.254.236.121 -181.55.116.136 -83.163.213.240 -201.152.251.21 -213.45.49.161 -173.245.221.74 -78.151.193.140 -83.85.139.25 -78.223.119.211 -105.228.120.31 -178.37.195.27 -24.52.202.171 -69.34.135.229 -62.158.135.252 -77.243.183.25 -193.51.6.5 -46.8.157.22 -186.183.160.125 -130.234.206.24 -90.171.247.95 -90.216.200.56 -181.90.109.168 -94.208.224.23 -202.62.16.235 -94.174.9.29 -105.184.186.83 -180.252.156.92 -176.14.105.238 -79.204.138.25 -178.162.217.137 -50.124.7.101 -105.237.92.26 -217.235.248.71 -77.181.67.202 -81.244.67.231 -2.106.197.126 -198.60.192.203 -172.56.16.140 -109.93.83.59 -164.8.204.206 -80.131.61.143 -68.7.182.201 -187.37.140.36 -2.85.190.33 -31.61.140.246 -192.126.96.23 -190.42.58.145 -177.133.104.179 -93.125.88.66 -66.27.145.33 -109.43.0.90 -46.117.146.30 -68.101.51.124 -70.173.132.2 -95.103.163.175 -213.103.202.73 -193.77.222.200 -5.144.152.186 -190.77.248.84 -136.243.151.210 -31.163.191.135 -53.193.238.189 -176.51.149.113 -178.43.55.236 -31.23.114.101 -87.185.20.94 -109.190.65.26 -77.180.215.167 -85.54.220.250 -187.76.101.115 -104.200.151.21 -186.90.2.208 -179.43.134.2 -85.216.83.42 -83.44.53.138 -178.213.170.179 -149.202.44.159 -181.53.51.250 -85.4.99.184 -91.210.228.154 -100.87.134.150 -105.2.95.87 -104.156.228.106 -113.254.170.25 -109.74.170.77 -91.63.1.128 -184.196.189.176 -0.0.0.0 -98.23.36.117 -5.30.69.217 -81.156.49.21 -186.92.42.206 -24.155.201.9 -217.95.247.139 -78.1.135.191 -231.25.196.155 -92.40.250.89 -89.182.204.27 -222.65.60.115 -189.188.200.85 -109.184.107.220 -80.41.226.120 -68.247.175.72 -172.56.35.48 -93.109.240.14 -62.195.196.17 -109.81.210.29 -193.92.113.59 -217.95.244.246 -24.43.219.20 -118.90.32.199 -50.163.71.222 -50.204.92.20 -212.54.195.80 -73.11.157.169 -1.52.142.82 -77.4.123.65 -114.124.0.126 -80.131.61.147 -180.183.78.160 -200.109.173.48 -186.147.138.125 -189.218.127.228 -83.26.30.141 -87.178.158.126 -5.12.117.226 -117.195.26.85 -90.45.1.225 -46.159.55.58 -74.67.4.49 -168.70.86.30 -40.45.199.182 -120.156.17.55 -92.144.208.211 -176.65.127.119 -37.227.63.102 -1.53.140.105 -74.59.25.31 -209.107.214.70 -94.41.64.71 -71.61.74.28 -182.203.112.237 -194.105.229.51 -84.248.15.13 -88.91.89.94 -190.36.142.185 -177.133.210.69 -128.199.90.150 -79.17.250.93 -190.204.35.44 -95.93.101.100 -85.247.50.96 -83.36.224.90 -188.187.163.21 -37.201.6.202 -2.138.143.40 -212.5.52.32 -41.174.167.165 -108.176.233.203 -82.77.161.202 -173.86.39.226 -178.117.89.113 -81.250.82.21 -94.70.5.65 -86.218.197.161 -85.237.174.4 -62.249.146.6 -109.251.79.19 -165.255.212.151 -73.241.142.127 -202.62.17.51 -191.184.111.49 -90.33.25.232 -108.61.177.98 -111.69.86.174 -177.72.51.158 -46.28.102.197 -67.86.22.30 -117.184.152.115 -94.65.84.87 -158.69.126.193 -83.185.82.143 -60.51.44.27 -158.165.52.119 -78.43.68.161 -82.142.112.229 -109.169.229.160 -187.200.176.71 -192.153.117.70 -190.198.36.172 -174.49.110.107 -177.205.65.140 -162.124.179.124 -184.97.238.93 -212.251.28.147 -107.204.205.115 -118.233.235.7 -92.141.13.211 -94.194.29.231 -0.0.255.72 -217.174.155.155 -198.27.97.180 -101.183.39.28 -83.185.95.8 -31.174.69.205 -197.246.171.176 -46.158.93.79 -109.43.1.169 -37.122.124.42 -68.232.186.171 -79.245.219.75 -82.235.133.55 -188.162.14.104 -128.90.88.111 -80.60.124.251 -199.255.211.45 -187.161.82.160 -94.50.196.84 -190.31.72.99 -70.89.142.142 -108.24.86.234 -124.73.67.105 -177.157.52.241 -92.76.239.3 -189.144.45.28 -105.229.179.226 -92.100.195.14 -31.216.4.218 -99.197.201.17 -217.249.134.16 -188.73.253.71 -2.102.152.141 -24.0.207.196 -88.217.181.105 -95.221.16.31 -79.41.170.156 -162.255.127.179 -98.223.11.108 -87.11.82.157 -120.56.209.210 -70.215.195.68 -177.96.90.235 -71.31.219.197 -83.149.19.188 -139.0.138.197 -2.140.8.160 -110.174.123.194 -202.62.16.2 -113.254.169.102 -163.211.239.49 -25.150.39.43 -188.67.72.26 -24.212.112.98 -68.180.0.247 -0.0.0.0 -190.77.157.248 -95.141.29.55 -218.11.179.53 -123.57.15.153 -50.97.94.13 -46.164.146.229 -191.255.75.75 -171.97.198.217 -179.206.137.230 -2.27.252.8 -113.185.5.219 -117.44.175.180 -87.185.6.49 -220.246.220.129 -67.212.175.124 -104.238.180.11 -83.22.116.40 -91.179.53.23 -184.75.213.134 -95.137.245.107 -71.55.98.29 -88.232.3.134 -78.52.77.247 -86.89.192.38 -189.144.13.93 -2.62.46.234 -32.51.14.233 -190.39.44.61 -41.96.91.221 -84.42.44.243 -195.149.108.47 -42.112.88.62 -219.79.191.98 -145.120.12.175 -173.89.14.220 -178.222.183.202 -202.62.16.223 -95.24.97.176 -99.248.251.175 -124.171.172.128 -79.102.32.183 -32.51.14.233 -173.192.81.187 -93.137.217.239 -69.65.254.34 -75.76.66.211 -112.211.71.79 -173.247.188.146 -91.52.238.180 -31.162.134.45 -100.68.38.19 -91.33.207.56 -37.6.242.30 -93.73.243.27 -198.27.81.25 -79.102.32.183 -31.21.146.153 -207.179.164.139 -151.229.236.167 -223.204.240.178 -188.163.73.109 -223.204.240.178 -31.207.187.18 -95.25.39.141 -188.162.36.185 -66.87.145.79 -86.18.76.197 -178.65.247.160 -188.163.24.68 -151.72.136.1 -85.217.41.121 -178.65.14.106 -92.225.63.145 -2.83.157.97 -186.241.93.247 -85.229.185.207 -186.46.206.91 -39.48.13.64 -85.151.220.225 -85.127.120.155 -78.149.251.8 -104.180.224.241 -85.6.207.160 -178.219.94.51 -179.55.32.49 -93.205.27.117 -52.37.109.241 -185.81.229.113 -50.106.172.180 -219.73.15.59 -76.30.179.116 -112.10.225.195 -171.96.170.153 -89.42.107.153 -130.25.88.216 -81.153.89.132 -188.158.189.191 -46.244.217.69 -201.22.187.49 -139.193.221.33 -191.43.11.225 -191.102.196.35 -64.237.51.174 -87.98.178.140 -2.122.165.251 -64.145.76.140 -193.92.63.7 -178.234.208.247 -186.117.166.66 -187.95.127.151 -172.56.15.18 -24.184.24.162 -2.125.57.174 -92.55.105.130 -90.191.99.12 -25.16.26.157 -84.152.140.60 -109.182.104.245 -5.233.35.110 -173.86.39.226 -176.33.105.89 -64.121.250.235 -186.62.25.143 -109.43.2.140 -171.97.196.82 -94.96.41.4 -178.158.184.222 -188.131.34.151 -50.101.183.116 -208.74.1.9 -5.138.55.122 -94.208.224.23 -79.46.67.10 -39.35.109.251 -91.39.32.112 -114.124.0.126 -189.241.106.61 -192.0.203.126 -24.216.240.156 -90.39.140.211 -254.142.100.172 -91.140.52.140 -109.237.103.127 -154.69.72.35 -98.19.169.52 -24.92.213.63 -209.202.73.79 -78.1.168.144 -80.103.188.87 -83.26.28.36 -95.153.131.35 -139.193.58.22 -195.64.75.134 -123.190.61.215 -92.84.12.209 -115.152.154.77 -176.195.241.216 -45.50.43.165 -94.137.0.24 -93.137.137.136 -83.10.88.80 -104.173.205.55 -93.77.17.218 -213.67.95.128 -70.196.132.76 -151.28.181.143 -63.104.240.81 -188.18.15.139 -181.208.22.54 -70.81.20.54 -110.168.232.83 -62.165.226.97 -171.5.33.189 -86.197.147.26 -92.157.155.123 -92.24.120.135 -180.140.17.174 -176.194.17.251 -78.0.35.159 -83.89.104.40 -89.217.239.176 -75.161.2.197 -185.3.32.186 -95.175.104.52 -67.208.79.69 -70.209.72.10 -101.116.78.128 -95.81.253.151 -72.105.145.66 -108.250.162.103 -31.96.46.73 -84.147.119.180 -176.8.52.211 -95.153.130.235 -184.148.241.101 -128.68.161.107 -118.136.159.10 -2.100.80.66 -105.186.110.98 -121.208.142.172 -77.51.121.67 -109.241.213.159 -83.134.97.101 -31.132.225.141 -90.11.159.241 -109.241.147.183 -186.188.107.216 -42.96.176.198 -80.100.1.187 -24.59.157.255 -190.77.73.12 -178.43.50.5 -184.75.213.117 -50.173.38.87 -86.26.86.157 -98.126.5.146 -178.55.136.130 -89.102.26.229 -100.38.18.167 -177.249.155.35 -41.244.241.253 -37.45.103.181 -85.173.134.61 -42.96.165.239 -85.241.198.54 -151.224.62.223 -5.141.221.53 -213.137.36.3 -92.73.203.118 -193.161.15.72 -60.213.89.243 -41.13.28.225 -79.245.218.167 -94.179.125.146 -62.241.245.182 -49.144.46.25 -86.9.138.104 -90.6.231.45 -190.56.72.120 -84.175.233.214 -91.48.40.244 -46.175.68.4 -103.255.4.53 -78.15.181.215 -122.73.59.85 -91.14.44.208 -188.18.15.219 -218.27.203.199 -178.210.51.98 -188.123.253.74 -119.104.153.35 -95.72.134.199 -217.27.54.42 -122.82.89.79 -77.105.24.110 -128.75.210.244 -75.148.179.209 -191.32.34.245 -97.81.31.177 -189.24.148.123 -181.162.19.254 -41.250.166.187 -41.251.221.21 -93.79.71.20 -80.1.185.61 -91.150.245.34 -23.92.137.33 -5.54.7.186 -188.17.193.48 -193.0.167.145 -209.95.50.97 -186.92.234.251 -25.176.174.243 -212.253.65.223 -178.205.63.52 -78.164.118.0 -64.153.59.199 -142.4.210.129 -109.91.206.6 -159.206.179.155 -200.106.89.30 -186.82.153.43 -101.98.215.166 -89.151.168.174 -14.125.239.220 -190.203.65.246 -87.146.22.186 -187.255.236.182 -173.244.16.2 -41.96.89.43 -113.161.76.161 -88.65.91.147 -122.62.210.108 -62.113.206.152 -189.217.204.123 -213.151.1.230 -77.164.58.243 -213.160.169.153 -115.152.146.107 -58.106.6.32 -39.250.103.108 -74.213.119.35 -158.222.241.196 -78.0.12.66 -84.22.108.241 -79.9.224.238 -82.57.16.52 -82.58.170.32 -36.74.94.208 -95.141.29.54 -115.184.225.144 -108.61.152.244 -25.42.99.19 -93.80.142.128 -186.83.197.213 -41.174.131.117 -222.65.44.73 -139.162.20.227 -190.199.129.169 -141.135.41.37 -199.202.216.171 -94.128.255.47 -42.61.205.227 -90.29.84.185 -158.42.126.69 -89.239.99.253 -105.184.10.27 -79.130.27.17 -199.193.119.32 -82.50.184.207 -178.19.158.26 -178.222.8.65 -174.58.179.241 -86.204.82.192 -206.169.102.22 -219.79.190.85 -128.177.161.144 -212.54.196.101 -79.172.215.68 -202.62.16.144 -64.145.76.134 -109.155.227.178 -162.245.22.23 -110.168.232.246 -179.222.248.68 -68.193.116.242 -81.211.118.130 -86.14.132.229 -86.111.120.129 -202.62.17.5 -151.49.108.86 -91.177.116.22 -39.48.50.240 -173.199.65.38 -37.190.36.10 -171.97.196.203 -75.129.6.150 -231.210.83.146 -141.255.15.154 -73.132.239.109 -213.87.133.82 -2.85.56.108 -92.247.60.137 -217.39.183.41 -128.71.78.96 -83.240.41.109 -5.145.95.45 -86.171.220.93 -217.70.249.76 -151.226.64.200 -151.230.117.91 -90.207.95.206 -2.62.35.78 -178.4.211.187 -71.204.33.161 -85.51.138.99 -37.78.101.92 -95.139.68.24 -190.39.14.8 -197.202.255.216 -86.186.191.244 -150.117.170.89 -186.95.6.151 -182.249.242.12 -94.21.159.104 -190.71.180.90 -92.131.148.36 -179.232.147.95 -12.151.91.2 -176.127.237.83 -86.25.209.25 -201.209.45.23 -46.236.145.3 -99.110.210.240 -79.40.102.202 -206.226.72.88 -110.159.31.31 -88.200.247.127 -81.153.202.81 -217.71.45.101 -145.53.197.222 -162.156.115.215 -193.161.15.73 -73.47.89.19 -42.115.18.149 -58.34.146.122 -0.0.0.0 -177.249.135.65 -5.39.99.50 -142.176.53.89 -110.168.232.48 -188.162.36.224 -92.113.4.7 -92.163.94.164 -90.209.234.107 -108.96.66.88 -172.56.17.27 -80.188.117.115 -198.23.200.184 -185.19.27.157 -87.185.21.124 -24.189.162.153 -95.71.0.160 -223.225.156.95 -191.223.196.53 -83.199.217.112 -187.23.218.40 -58.39.109.101 -80.11.226.53 -114.97.131.146 -91.48.35.145 -84.107.232.152 -155.138.235.36 -105.156.245.30 -68.96.191.5 -25.171.12.62 -191.182.113.42 -119.86.155.192 -186.121.1.255 -2.62.19.20 -212.255.118.19 -82.54.210.233 -187.250.136.52 -197.202.240.7 -218.212.97.65 -25.220.76.115 -5.140.21.35 -70.197.85.37 -79.107.58.23 -180.252.90.132 -190.142.121.228 -84.52.183.80 -212.233.149.86 -82.158.241.150 -150.214.205.42 -87.15.42.16 -213.230.74.187 -2.62.62.72 -37.145.180.158 -191.17.69.226 -104.200.151.91 -190.73.40.185 -213.55.176.247 -212.21.9.197 -190.158.119.242 -178.205.63.52 -80.47.245.93 -91.224.81.52 -99.115.174.219 -245.245.190.57 -190.131.116.79 -89.232.118.141 -37.146.127.175 -174.4.8.138 -24.49.105.139 -41.224.164.213 -151.80.206.101 -85.178.85.135 -5.141.202.203 -85.115.248.36 -181.75.40.195 -95.174.116.99 -188.73.253.198 -190.77.226.235 -52.71.215.53 -188.29.12.44 -151.24.155.96 -50.53.104.166 -37.146.224.252 -79.107.93.229 -187.126.97.243 -92.124.2.226 -190.74.29.208 -83.30.77.252 -86.202.71.200 -1.162.58.141 -98.214.40.119 -14.207.37.172 -82.238.183.62 -83.78.97.93 -190.77.229.35 -167.61.25.72 -50.154.169.160 -90.184.89.145 -95.81.227.84 -79.117.18.180 -95.57.148.143 -171.96.168.12 -65.15.37.139 -117.25.7.196 -95.37.105.91 -87.92.76.128 -50.164.63.3 -5.220.228.6 -138.97.160.250 -174.88.244.168 -86.26.5.243 -95.55.22.224 -1.36.146.93 -25.13.191.166 -47.54.76.217 -91.140.10.159 -37.213.68.9 -171.97.188.17 -46.0.19.2 -109.43.0.212 -134.249.158.190 -86.124.151.161 -91.113.72.233 -186.91.92.251 -118.140.106.58 -212.200.65.246 -78.8.143.184 -197.104.12.43 -86.131.100.88 -108.61.191.195 -70.59.17.67 -205.197.242.148 -70.189.69.77 -100.64.161.107 -79.107.69.247 -86.10.20.12 -37.146.127.100 -79.245.206.51 -5.135.36.129 -173.189.163.125 -79.107.114.31 -178.117.43.95 -186.146.136.133 -87.144.206.76 -217.71.45.14 -108.215.118.91 -180.241.158.5 -90.212.241.153 -88.3.38.194 -187.143.90.134 -89.250.14.157 -209.160.124.170 -220.246.220.215 -95.19.18.83 -107.211.177.179 -179.126.245.239 -71.3.13.165 -182.165.45.89 -52.24.196.169 -217.77.220.249 -97.127.118.149 -151.33.74.174 -14.1.200.132 -181.167.109.212 -83.22.120.238 -68.220.69.84 -83.11.81.25 -146.90.79.77 -69.165.210.94 -94.41.202.79 -189.202.44.164 -74.116.190.9 -93.109.240.14 -91.95.18.13 -82.34.93.93 -91.67.247.232 -5.149.16.157 -193.158.162.212 -106.38.255.120 -181.64.0.89 -120.172.28.196 -46.109.37.80 -90.11.159.241 -91.140.16.52 -79.44.93.198 -63.87.252.153 -84.154.93.193 -78.106.75.71 -37.29.88.7 -79.234.106.204 -117.151.175.8 -194.50.159.203 -104.139.226.97 -114.109.116.141 -92.144.213.82 -62.21.26.111 -217.118.93.88 -171.149.2.249 -190.78.110.138 -176.249.157.191 -41.96.46.230 -1.207.128.245 -46.166.188.202 -49.144.116.253 -93.129.140.155 -73.211.90.130 -119.252.188.52 -2.85.56.108 -106.51.72.108 -178.234.227.146 -178.128.36.69 -76.75.71.45 -178.203.232.239 -5.42.105.143 -98.223.189.214 -142.217.63.42 -78.132.88.146 -165.255.172.58 -250.31.16.246 -5.149.16.157 -197.34.211.134 -115.117.126.170 -124.12.49.8 -5.139.75.217 -89.233.112.8 -171.6.27.97 -29.220.17.208 -87.69.111.245 -86.217.8.243 -95.151.182.164 -116.14.165.116 -91.84.113.0 -95.189.13.190 -189.202.31.148 -94.13.34.142 -1.0.0.0 -178.57.99.198 -95.232.214.148 -60.240.236.55 -45.56.151.111 -201.211.56.186 -86.181.102.49 -91.134.120.210 -93.135.74.141 -24.0.103.120 -92.255.230.162 -75.3.153.154 -73.9.4.206 -173.74.178.184 -187.74.68.143 -84.250.39.13 -190.47.110.47 -222.228.4.35 -46.5.0.73 -24.126.75.249 -89.16.154.73 -171.96.168.254 -220.246.221.8 -95.138.194.14 -220.141.117.75 -171.96.171.107 -86.181.29.135 -37.235.35.100 -117.208.209.181 -168.156.67.100 -77.171.59.152 -42.115.18.149 -96.31.215.232 -24.115.186.59 -78.244.37.129 -90.46.58.166 -37.24.156.83 -99.111.18.127 -209.197.163.222 -80.107.22.91 -180.136.190.98 -101.160.40.41 -178.234.245.216 -82.243.166.92 -114.133.4.189 -68.172.251.98 -95.24.212.203 -108.177.128.150 -79.245.219.111 -100.68.125.96 -151.238.37.180 -83.149.34.184 -77.51.120.101 -87.229.54.82 -2.61.181.130 -71.89.20.64 -79.245.216.210 -94.193.47.208 -91.141.1.188 -31.10.151.179 -117.206.174.179 -108.61.228.5 -93.143.136.165 -5.138.127.54 -79.218.31.115 -99.247.185.16 -98.17.225.200 -5.141.217.158 -71.209.53.226 -72.198.42.61 -95.24.235.213 -101.100.169.84 -163.211.239.49 -162.243.227.221 -185.45.13.149 -79.245.214.82 -37.134.219.49 -190.37.64.129 -5.42.93.22 -37.188.130.172 -74.84.27.148 -110.137.17.217 -72.47.175.158 -208.82.42.226 -188.103.183.100 -37.146.127.230 -50.197.49.153 -2.1.33.177 -176.33.104.186 -190.21.51.211 -178.223.12.104 -177.17.138.227 -162.216.46.174 -181.50.132.106 -178.149.203.187 -181.24.69.91 -37.47.252.233 -108.4.60.70 -178.47.254.52 -217.44.16.102 -125.163.145.229 -82.38.241.21 -79.245.192.78 -87.168.179.186 -62.21.48.27 -75.142.234.5 -46.0.45.154 -188.165.197.47 -90.154.75.175 -105.226.27.52 -79.245.192.12 -177.229.23.223 -178.128.243.39 -77.239.40.91 -66.55.134.194 -109.62.143.55 -91.90.15.94 -217.241.78.52 -95.89.215.8 -89.36.104.213 -108.61.196.252 -79.245.199.92 -94.133.86.200 -62.113.206.152 -83.49.92.182 -184.97.254.204 -202.62.16.234 -217.131.104.197 -46.0.198.198 -186.83.248.18 -37.187.242.213 -113.28.12.51 -190.227.30.241 -31.168.172.136 -78.70.59.132 -77.49.142.238 -203.164.148.154 -86.172.4.51 -213.113.185.135 -104.238.187.114 -104.45.143.132 -202.62.16.164 -85.25.223.7 -46.244.192.30 -185.81.229.113 -118.208.67.84 -174.58.249.186 -0.0.0.0 -122.189.64.32 -24.201.122.219 -174.24.61.63 -93.139.175.187 -91.48.61.15 -5.88.72.90 -83.192.113.203 -85.114.60.215 -83.5.143.28 -200.109.180.49 -120.196.98.141 -42.115.236.60 -81.10.142.169 -41.96.4.94 -114.244.35.53 -179.156.218.183 -190.137.24.255 -164.67.231.133 -80.249.81.117 -5.141.221.248 -136.152.10.116 -95.88.141.238 -86.208.11.209 -1.0.0.0 -220.160.191.91 -83.185.91.165 -197.202.255.216 -190.119.56.148 -97.127.49.14 -177.17.121.175 -58.11.101.190 -217.95.230.231 -2.85.187.74 -178.191.229.72 -88.180.208.180 -146.52.22.64 -58.11.110.34 -75.192.234.101 -202.62.17.151 -75.83.158.235 -84.154.93.193 -68.39.187.73 -201.242.109.86 -77.51.139.220 -71.67.165.191 -93.219.151.251 -80.143.81.125 -2.62.62.72 -93.129.11.176 -65.190.50.239 -84.236.15.97 -115.228.246.237 -151.238.254.12 -81.153.155.14 -179.55.32.8 -0.0.0.0 -24.255.122.199 -178.221.180.123 -90.186.174.74 -86.212.6.18 -5.70.148.6 -86.194.143.131 -5.139.58.56 -176.99.71.5 -80.213.11.23 -181.110.113.118 -69.7.86.218 -89.178.177.95 -37.112.78.248 -31.179.120.196 -118.68.195.222 -42.98.191.221 -173.246.8.253 -139.193.221.33 -46.166.190.194 -98.219.56.84 -209.144.254.123 -87.81.138.30 -93.104.105.193 -31.52.126.202 -68.69.230.94 -62.49.252.145 -101.164.234.148 -101.160.47.83 -79.246.232.132 -179.156.221.228 -188.18.15.139 -91.53.106.221 -199.16.96.145 -2.61.133.195 -96.81.223.233 -178.164.203.161 -50.153.149.16 -46.246.27.154 -190.140.130.125 -37.6.237.251 -0.0.3.6 -18.111.60.56 -87.95.107.189 -108.61.152.245 -2.85.178.120 -111.241.99.206 -24.155.200.227 -104.238.180.11 -84.31.33.151 -176.9.140.183 -91.179.215.94 -86.158.209.42 -178.0.63.141 -88.254.69.172 -181.46.165.102 -202.62.16.12 -5.167.102.27 -85.247.35.163 -78.9.102.168 -151.61.102.189 -71.197.170.183 -38.121.251.20 -117.207.10.37 -109.88.135.108 -73.179.71.188 -172.58.39.120 -50.101.137.64 -213.176.245.198 -159.11.201.195 -178.234.77.7 -195.240.131.215 -173.230.41.42 -95.81.194.234 -85.140.176.143 -67.173.24.183 -100.78.98.103 -5.64.173.211 -190.237.183.46 -42.112.80.24 -98.87.136.159 -110.138.34.135 -79.245.195.253 -50.247.211.162 -76.6.147.56 -92.249.134.115 -181.136.157.228 -77.7.205.190 -186.94.19.198 -212.251.118.230 -89.235.56.141 -68.96.191.5 -177.133.78.208 -74.111.105.96 -92.37.62.98 -24.114.51.29 -176.10.60.94 -88.19.18.181 -106.192.5.0 -107.181.128.29 -79.45.29.32 -75.101.100.249 -177.68.173.236 -217.131.108.228 -189.219.201.55 -188.129.122.191 -151.80.206.110 -190.229.108.36 -46.63.216.18 -173.75.34.129 -100.68.131.66 -145.131.208.97 -105.158.120.123 -89.151.169.61 -200.8.52.205 -190.79.228.216 -104.200.151.7 -122.62.12.87 -179.34.29.109 -69.165.156.162 -85.220.18.205 -85.25.200.102 -84.11.144.166 -67.83.2.182 -98.28.46.106 -179.210.103.88 -217.123.121.141 -216.209.125.125 -84.147.114.207 -203.176.181.33 -2.85.57.6 -178.54.197.81 -125.37.79.46 -95.141.28.169 -80.107.67.4 -125.24.126.173 -201.6.129.43 -58.187.57.52 -186.4.128.144 -73.48.135.29 -223.204.250.101 -188.108.130.194 -99.57.26.137 -109.154.152.180 -0.0.0.0 -112.215.123.124 -79.25.20.55 -98.164.86.165 -190.198.126.70 -94.153.88.241 -92.209.191.40 -174.2.194.186 -67.71.133.140 -100.66.51.177 -68.42.212.98 -109.121.7.134 -83.82.131.238 -200.8.99.39 -91.215.78.147 -1.0.0.0 -178.148.203.30 -174.50.99.85 -31.17.30.35 -188.226.204.112 -171.92.217.252 -189.202.91.14 -68.87.73.163 -94.113.7.202 -178.47.254.52 -50.153.151.123 -96.44.187.26 -62.176.13.182 -71.30.196.94 -213.16.230.227 -141.255.21.94 -36.78.198.100 -92.76.228.68 -86.104.196.53 -220.253.89.142 -79.114.76.22 -178.150.3.240 -180.242.117.178 -213.152.162.149 -219.90.234.171 -117.203.81.114 -188.174.119.70 -37.112.218.15 -50.153.150.1 -78.38.63.156 -187.79.200.234 -104.207.136.88 -177.137.167.60 -208.167.254.37 -86.135.19.3 -50.88.91.130 -208.53.180.26 -78.62.146.147 -86.181.1.146 -202.62.16.121 -73.90.210.164 -191.32.70.254 -248.245.199.94 -201.236.113.219 -52.248.212.93 -198.1.153.15 -95.24.33.153 -78.88.29.216 -159.118.77.129 -73.7.239.158 -79.216.199.109 -2.96.25.54 -94.205.1.88 -217.197.250.154 -175.40.21.20 -183.30.111.123 -86.151.81.47 -113.14.73.198 -81.21.249.40 -77.164.60.140 -2.229.75.216 -109.79.58.72 -109.92.81.247 -202.62.16.140 -186.146.153.110 -151.66.140.155 -71.185.172.244 -31.10.150.247 -178.173.7.237 -121.214.119.39 -184.98.199.232 -173.75.18.157 -89.204.153.44 -202.62.17.197 -125.112.171.217 -23.27.13.13 -187.87.77.243 -91.67.99.12 -91.197.146.250 -190.62.157.176 -190.207.190.61 -109.111.140.19 -75.152.212.205 -155.143.147.21 -84.11.144.164 -0.0.0.32 -85.132.87.161 -52.90.103.92 -125.69.8.237 -171.97.215.118 -84.189.192.218 -100.100.100.87 -118.209.123.136 -24.209.137.120 -98.15.141.103 -199.19.95.181 -193.92.113.47 -98.163.251.27 -118.211.231.131 -80.215.178.138 -32.138.112.115 -59.88.129.78 -111.95.163.140 -78.111.190.80 -47.217.159.177 -217.235.248.71 -67.160.195.220 -178.223.171.189 -29.108.45.223 -146.156.249.160 -50.53.36.50 -181.162.51.72 -176.199.122.249 -151.72.136.1 -222.222.0.100 -195.174.95.103 -190.36.190.28 -50.135.244.2 -178.222.2.10 -178.164.190.218 -79.56.106.208 -188.168.147.218 -202.62.16.64 -78.87.95.95 -90.222.86.81 -64.134.138.159 -218.205.35.53 -5.133.176.37 -203.222.146.55 -202.62.16.218 -86.130.245.53 -78.165.227.42 -100.69.17.214 -94.54.72.158 -195.29.192.145 -185.18.140.49 -113.254.166.97 -21.106.179.117 -112.198.100.11 -92.97.90.207 -178.24.63.237 -77.248.238.60 -89.37.62.17 -104.156.228.80 -151.55.147.127 -210.55.212.139 -83.27.163.130 -195.209.48.241 -46.159.1.127 -145.129.149.65 -85.217.41.209 -24.135.73.174 -109.92.64.31 -60.90.120.130 -77.49.136.244 -178.137.185.208 -41.105.28.186 -42.61.166.126 -85.99.40.135 -128.69.235.138 -185.29.164.61 -187.56.144.147 -52.169.238.25 -173.245.195.111 -185.48.37.18 -181.120.107.216 -72.216.45.166 -200.8.53.77 -46.159.36.10 -85.144.64.171 -91.77.226.181 -62.158.154.188 -122.187.103.15 -76.18.138.1 -109.97.162.239 -31.63.155.188 -162.68.190.223 -187.161.229.36 -210.136.5.67 -5.143.167.245 -89.121.179.113 -37.201.193.149 -25.22.203.199 -76.250.56.155 -178.188.9.202 -120.20.202.77 -50.48.231.111 -223.205.29.44 -153.136.25.157 -186.207.222.41 -1.162.60.24 -84.161.252.57 -42.3.135.246 -92.37.201.10 -186.222.41.103 -93.208.108.138 -186.95.48.195 -197.37.109.104 -36.239.41.91 -109.188.124.237 -14.146.39.92 -193.158.174.91 -100.68.136.230 -5.138.55.122 -0.0.0.0 -91.21.203.222 -85.168.205.103 -67.140.124.139 -190.36.194.224 -109.43.1.135 -87.15.222.204 -83.201.51.38 -36.76.35.216 -69.223.42.70 -182.187.34.145 -104.200.154.27 -128.0.0.54 -113.104.188.225 -85.76.128.44 -108.182.95.189 -202.62.16.167 -97.88.162.194 -87.79.212.65 -88.8.65.219 -86.139.7.170 -42.116.94.38 -71.212.63.169 -195.149.108.51 -71.164.199.248 -187.189.89.65 -178.252.57.123 -85.23.216.110 -70.79.134.194 -25.172.59.240 -78.137.174.34 -79.222.101.47 -79.131.102.117 -123.202.107.106 -92.49.133.75 -82.126.49.125 -201.119.239.242 -70.197.129.122 -71.80.65.254 -46.0.44.159 -37.192.171.50 -177.233.177.253 -82.43.78.46 -91.220.173.26 -223.204.68.138 -116.193.158.122 -187.155.99.230 -87.185.27.131 -37.146.123.212 -129.110.242.89 -173.219.77.171 -172.56.22.249 -87.185.7.106 -123.129.254.11 -189.79.209.234 -82.181.13.55 -178.45.113.144 -83.176.148.252 -190.82.245.27 -91.182.0.44 -76.170.53.72 -104.156.240.155 -176.33.109.138 -130.180.220.122 -93.125.88.66 -201.170.156.229 -177.124.173.245 -69.231.32.212 -189.147.232.220 -79.117.48.111 -69.179.143.48 -101.40.2.34 -81.242.98.251 -94.72.62.224 -75.112.236.68 -119.236.139.193 -188.232.58.11 -71.195.208.134 -213.5.52.72 -92.133.138.15 -172.248.91.252 -104.197.72.254 -179.198.46.19 -93.194.84.118 -138.186.31.199 -121.215.17.3 -190.75.92.230 -99.172.17.234 -91.219.137.216 -186.91.43.38 -153.161.150.230 -217.235.237.26 -25.127.30.249 -79.141.166.21 -79.113.137.142 -173.172.151.247 -196.210.56.104 -41.246.41.68 -119.130.27.80 -169.0.117.131 -62.4.196.154 -177.97.187.165 -217.107.194.54 -88.206.79.214 -94.66.57.202 -187.180.169.226 -68.186.235.174 -185.18.148.4 -5.149.252.26 -152.23.67.227 -36.74.239.195 -24.53.67.105 -192.241.252.210 -77.78.23.237 -90.55.57.179 -189.232.134.204 -37.215.159.106 -31.50.204.103 -95.89.215.64 -79.245.194.81 -189.197.67.115 -80.174.72.227 -191.19.88.251 -76.68.232.114 -79.119.47.8 -87.95.11.242 -202.62.16.73 -167.61.98.176 -190.62.152.218 -130.180.220.46 -120.210.184.66 -79.113.137.142 -88.152.186.167 -178.56.209.2 -80.86.87.204 -79.36.127.8 -80.107.29.138 -69.20.179.75 -5.140.13.16 -109.43.2.243 -107.179.248.207 -188.197.14.187 -107.182.231.95 -109.93.210.107 -94.37.247.70 -128.71.63.67 -75.150.28.89 -172.248.91.252 -151.64.48.160 -104.131.170.147 -109.202.10.42 -78.146.143.123 -182.108.229.218 -80.128.88.254 -2.85.61.239 -86.169.67.213 -201.47.219.161 -178.43.53.246 -80.107.30.197 -93.94.148.199 -99.238.196.59 -83.254.163.207 -192.95.35.246 -97.127.39.120 -180.210.200.226 -195.9.250.147 -64.188.205.179 -171.39.69.171 -131.255.112.176 -93.156.85.122 -183.81.13.190 -95.189.9.85 -209.93.108.242 -62.98.178.127 -217.99.188.138 -37.135.16.141 -77.163.109.238 -42.113.20.70 -187.155.73.125 -94.68.139.93 -124.227.106.124 -50.203.141.242 -83.39.202.42 -191.112.47.59 -68.65.103.71 -219.79.188.205 -198.53.141.197 -71.34.142.200 -46.0.22.79 -31.201.253.64 -94.174.159.109 -188.226.153.233 -80.215.200.241 -92.145.155.223 -84.154.93.193 -91.39.197.227 -41.71.184.18 -46.63.199.81 -84.193.177.2 -117.6.131.125 -92.222.28.13 -93.72.183.16 -37.213.100.21 -94.223.152.62 -37.213.71.140 -117.200.201.23 -84.147.118.100 -94.21.59.198 -185.45.13.148 -178.234.251.139 -76.181.115.35 -49.228.198.59 -76.68.254.64 -179.155.216.113 -72.63.101.200 -67.231.54.138 -68.3.159.220 -5.167.37.158 -190.73.10.170 -68.9.115.43 -171.96.171.156 -130.43.80.74 -93.104.169.149 -99.229.64.113 -69.43.208.70 -201.248.11.43 -110.168.231.241 -72.186.22.189 -76.21.96.22 -95.24.99.127 -89.212.101.38 -92.225.34.190 -1.0.0.0 -117.93.209.83 -101.136.198.7 -188.222.42.178 -91.158.109.188 -76.187.186.183 -95.142.108.55 -213.125.106.138 -200.8.245.15 -216.46.41.138 -212.251.28.139 -108.244.47.41 -94.191.185.32 -91.17.26.155 -100.66.131.190 -93.33.130.151 -77.51.245.192 -86.129.68.208 -173.21.63.162 -217.235.247.119 -60.250.10.233 -46.142.47.195 -179.147.86.195 -59.49.159.208 -182.132.220.206 -23.251.65.46 -213.64.27.201 -81.38.22.105 -99.121.207.38 -84.147.126.143 -93.129.140.155 -74.100.84.157 -37.201.170.227 -176.154.215.97 -77.234.40.151 -93.185.56.179 -176.219.146.177 -151.235.181.110 -88.65.88.121 -92.47.26.152 -116.114.146.23 -109.205.253.91 -113.254.169.130 -50.163.171.86 -24.114.75.45 -2.134.174.62 -88.152.186.90 -31.132.225.190 -231.210.83.146 -188.104.80.117 -101.39.6.49 -93.39.97.59 -84.76.206.154 -171.4.198.206 -202.62.16.75 -91.7.43.128 -151.25.8.74 -68.8.249.60 -52.71.215.53 -186.118.100.170 -183.171.177.80 -83.134.98.48 -40.76.82.173 -86.88.39.133 -108.117.62.253 -42.115.112.202 -124.122.237.162 -79.245.207.164 -24.121.116.253 -91.148.87.53 -85.75.133.89 -76.89.170.251 -111.242.52.251 -95.30.53.63 -84.82.225.145 -77.95.54.152 -176.58.231.221 -216.14.113.63 -86.184.140.225 -185.108.128.3 -49.83.47.173 -76.68.163.250 -82.229.244.14 -111.242.54.89 -201.209.255.211 -91.148.97.130 -219.73.101.145 -108.46.182.48 -90.197.186.161 -92.192.83.55 -93.201.239.193 -178.120.203.65 -91.9.209.17 -95.111.236.135 -50.66.152.76 -188.103.141.76 -86.164.95.63 -91.7.39.143 -79.40.96.252 -217.197.250.146 -79.32.103.236 -111.95.108.231 -79.245.199.212 -95.145.144.147 -188.79.3.188 -94.253.254.7 -83.7.113.197 -208.167.254.100 -2.125.75.60 -179.197.172.50 -95.153.130.87 -101.184.112.62 -202.62.17.48 -180.191.224.162 -190.62.159.200 -79.195.168.14 -24.114.70.50 -82.73.120.15 -201.208.212.33 -179.232.197.231 -46.166.188.201 -200.84.131.93 -213.125.81.210 -79.117.106.84 -104.156.240.172 -109.165.138.145 -91.21.200.178 -95.71.111.52 -68.204.29.211 -190.75.76.205 -201.243.217.28 -97.94.64.252 -37.29.88.140 -88.254.110.55 -191.19.120.6 -178.158.184.222 -85.144.12.110 -90.113.251.171 -2.146.143.174 -36.83.51.219 -186.94.188.207 -70.173.209.163 -78.49.253.175 -177.134.11.43 -37.187.155.143 -101.184.130.85 -213.87.123.8 -98.209.182.231 -189.105.158.187 -98.121.75.244 -67.68.123.177 -14.202.196.211 -84.73.147.5 -76.21.107.113 -92.124.52.219 -201.173.65.201 -109.121.39.75 -195.140.222.81 -171.97.183.72 -20.157.183.255 -113.76.115.9 -94.180.161.197 -205.220.163.91 -188.69.192.118 -92.249.221.0 -192.95.29.176 -2.139.192.228 -216.58.117.236 -71.176.43.77 -151.49.91.178 -216.5.152.147 -79.245.193.107 -141.237.253.19 -41.174.128.82 -123.138.114.2 -99.170.114.28 -95.94.96.15 -31.61.140.126 -184.171.212.128 -156.57.43.228 -79.225.117.161 -36.78.199.70 -129.10.9.128 -113.91.239.36 -83.10.159.120 -31.10.149.114 -77.180.215.167 -188.18.15.206 -37.146.201.20 -84.114.151.72 -194.50.159.203 -83.42.119.149 -58.7.79.182 -33.212.156.47 -5.254.97.76 -67.0.250.94 -222.65.39.59 -93.34.48.75 -86.148.216.229 -74.12.222.217 -71.47.114.174 -89.45.43.211 -78.51.17.255 -188.18.15.170 -217.25.228.30 -71.53.155.217 -71.33.9.140 -212.251.28.139 -83.149.47.250 -125.160.194.46 -37.48.32.73 -172.56.6.185 -50.169.226.165 -1.207.146.4 -114.77.174.108 -186.90.86.42 -219.73.26.172 -193.51.6.5 -36.77.18.75 -92.20.112.174 -53.193.239.79 -79.20.18.148 -212.71.232.87 -151.15.56.223 -71.33.11.9 -190.37.61.70 -157.201.127.254 -5.141.220.138 -96.42.38.90 -83.149.46.90 -86.208.73.16 -88.251.166.250 -217.253.212.162 -46.188.125.237 -90.217.183.159 -46.253.252.140 -50.106.33.243 -188.18.15.65 -87.152.212.58 -189.5.55.39 -109.93.33.170 -37.78.168.165 -190.79.40.206 -200.8.53.167 -77.243.183.13 -117.67.3.217 -208.167.254.90 -84.231.84.105 -77.96.246.116 -77.67.46.89 -100.88.3.214 -93.120.226.6 -86.130.246.211 -101.217.255.185 -41.249.160.19 -166.137.246.108 -176.104.38.33 -190.37.91.49 -68.146.221.41 -92.109.24.225 -105.98.10.91 -89.72.186.220 -176.10.232.140 -211.30.183.68 -171.96.171.107 -91.32.199.61 -82.126.49.125 -31.61.140.177 -37.188.238.115 -86.173.54.42 -60.25.175.39 -5.254.97.86 -37.213.131.56 -178.44.22.162 -45.79.149.192 -78.224.129.115 -79.133.129.102 -178.172.215.92 -186.88.229.47 -79.203.64.189 -201.83.109.150 -95.39.196.210 -62.116.254.204 -93.228.87.241 -213.87.122.16 -193.92.252.13 -178.173.7.237 -67.230.39.93 -23.239.25.147 -14.2.14.23 -105.100.85.26 -81.141.21.164 -185.42.38.225 -87.202.135.151 -195.154.223.134 -112.210.45.190 -89.25.167.65 -37.21.227.11 -187.254.159.150 -47.32.96.52 -46.167.107.113 -171.97.194.250 -76.216.184.8 -64.191.29.34 -208.82.42.226 -116.1.232.151 -176.85.59.61 -80.200.131.25 -95.153.134.146 -62.4.196.200 -84.176.235.19 -109.110.94.220 -138.94.57.95 -2.218.14.123 -188.108.36.227 -72.225.20.7 -79.114.108.172 -79.225.117.161 -80.212.50.182 -180.183.160.228 -96.39.207.56 -68.198.99.74 -82.112.137.120 -90.110.135.137 -79.130.203.130 -118.90.23.40 -189.140.180.53 -90.204.152.12 -105.236.127.85 -111.240.227.9 -219.79.255.20 -32.230.230.91 -1.175.232.51 -64.153.59.199 -120.24.185.169 -188.18.14.125 -38.20.8.96 -90.216.182.26 -181.54.77.177 -105.5.197.77 -124.122.61.248 -221.38.63.169 -79.70.26.227 -178.234.88.157 -216.110.120.168 -0.0.0.0 -5.49.28.53 -188.18.14.178 -82.9.15.148 -37.134.158.32 -87.0.208.206 -179.7.160.80 -84.236.82.50 -213.176.234.14 -213.183.56.124 -104.254.104.5 -188.103.183.100 -163.211.239.49 -71.176.42.18 -74.134.153.46 -177.184.139.118 -213.87.123.56 -190.38.26.230 -188.19.127.76 -77.29.197.123 -109.43.0.198 -194.255.110.178 -202.62.16.66 -122.49.148.197 -189.92.62.67 -203.219.62.171 -37.190.51.5 -14.192.209.137 -1.0.179.142 -90.203.117.80 -104.156.228.84 -79.102.202.104 -201.124.161.204 -138.91.64.57 -176.150.128.73 -115.87.56.117 -218.30.116.8 -183.47.125.144 -142.161.91.61 -200.75.100.36 -121.224.229.225 -94.230.128.122 -88.15.2.57 -105.107.52.205 -173.216.142.39 -207.32.206.67 -173.189.164.156 -94.207.129.207 -93.195.137.34 -75.98.126.115 -118.90.85.93 -62.195.196.17 -62.36.238.183 -108.24.76.250 -70.208.32.36 -128.75.1.128 -178.120.49.152 -37.146.123.192 -76.119.32.70 -170.0.21.4 -186.92.254.134 -178.36.6.207 -217.71.44.53 -37.76.19.42 -24.224.18.228 -92.144.200.122 -24.170.254.35 -95.110.236.41 -190.36.138.46 -24.15.87.243 -176.193.160.41 -69.231.38.87 -171.96.167.130 -173.185.69.84 -1.34.103.14 -89.69.126.16 -79.245.220.35 -92.127.108.147 -181.208.31.78 -78.13.64.28 -92.110.103.112 -78.157.65.184 -50.23.115.93 -92.100.204.158 -123.190.61.215 -92.157.42.221 -186.93.166.253 -189.130.4.227 -2.132.232.228 -91.179.119.190 -121.15.56.23 -218.142.99.184 -81.141.6.224 -178.234.67.104 -188.29.164.216 -59.177.175.205 -94.21.126.82 -57.131.89.131 -111.94.244.38 -46.166.165.39 -110.17.0.209 -87.79.199.100 -98.199.20.91 -92.148.36.246 -178.204.1.82 -66.87.96.217 -78.129.153.58 -200.75.126.234 -71.251.48.92 -108.61.228.21 -93.41.14.10 -197.117.114.68 -31.96.46.73 -184.170.255.187 -79.245.208.136 -78.66.84.178 -88.91.76.98 -109.145.153.74 -73.132.241.101 -1.0.0.0 -181.59.21.30 -183.12.166.251 -92.102.120.195 -128.90.73.134 -83.37.72.115 -187.143.157.80 -151.55.7.75 -220.246.220.125 -151.227.114.150 -78.137.174.34 -91.7.44.125 -79.245.217.24 -68.134.210.96 -78.220.216.208 -190.156.180.182 -94.21.86.206 -79.204.180.184 -185.2.179.240 -88.107.54.205 -78.156.104.205 -105.227.165.81 -111.241.97.118 -128.75.205.8 -103.253.43.162 -37.200.92.183 -50.80.243.103 -79.141.166.15 -69.130.145.90 -93.230.205.141 -91.158.232.111 -94.66.57.224 -164.74.58.74 -85.88.202.114 -95.153.134.146 -172.98.67.20 -77.179.231.56 -124.122.2.78 -190.186.112.3 -45.32.129.168 -213.74.111.185 -96.60.246.99 -185.29.164.61 -217.71.45.22 -86.212.65.214 -176.24.60.151 -207.119.225.105 -81.11.251.22 -108.23.17.119 -86.9.138.104 -79.146.128.43 -178.234.30.31 -98.122.56.215 -187.200.123.61 -82.226.240.57 -67.170.57.32 -46.2.49.102 -186.91.62.227 -138.130.241.44 -87.4.217.139 -187.202.15.172 -37.79.249.105 -85.178.93.221 -84.55.14.160 -190.142.152.122 -14.201.56.59 -98.160.239.93 -187.190.186.18 -182.108.22.88 -2.61.133.195 -187.187.56.36 -24.207.64.162 -202.62.17.245 -188.67.230.211 -77.203.119.51 -93.204.66.246 -71.195.120.65 -141.131.252.254 -79.245.192.59 -58.8.242.163 -67.193.83.131 -5.141.196.246 -78.85.72.68 -201.173.65.201 -108.24.83.254 -128.72.47.100 -207.192.252.5 -78.151.57.134 -200.116.36.76 -174.116.154.161 -90.153.118.51 -92.27.248.94 -84.216.198.17 -12.247.29.158 -85.72.168.211 -31.48.118.22 -36.80.103.175 -171.213.113.252 -151.225.66.52 -182.249.242.17 -144.172.235.179 -190.39.10.186 -130.89.77.168 -209.160.123.53 -186.90.132.31 -95.106.184.230 -67.140.4.30 -77.85.116.203 -109.43.1.89 -128.73.184.221 -114.97.58.74 -98.207.163.188 -217.235.238.188 -89.240.128.124 -115.99.106.249 -171.97.145.198 -66.115.130.122 -190.28.183.251 -84.19.166.50 -119.224.87.37 -91.231.21.78 -190.24.59.161 -190.235.139.236 -15.186.104.145 -190.77.75.9 -213.127.176.114 -73.191.186.27 -193.92.228.153 -69.253.5.33 -2.134.174.247 -190.79.132.37 -81.107.240.220 -78.111.187.63 -67.169.167.174 -177.32.101.231 -177.36.168.50 -201.37.161.46 -58.44.186.69 -5.43.176.207 -86.42.140.17 -117.83.20.249 -68.58.47.220 -139.194.44.166 -73.70.117.18 -31.207.199.172 -185.129.62.63 -177.206.252.93 -212.187.90.178 -177.106.0.107 -149.3.24.191 -173.192.170.116 -190.206.197.37 -79.133.153.174 -204.186.129.48 -80.95.64.68 -96.46.202.110 -84.19.165.218 -95.19.22.94 -71.15.250.17 -201.32.5.18 -87.185.22.184 -91.32.198.55 -69.23.98.139 -78.26.93.122 -189.217.249.33 -99.247.170.15 -151.227.54.162 -200.84.206.45 -90.4.251.196 -80.219.197.66 -178.131.184.75 -139.194.44.236 -189.217.160.57 -93.135.90.2 -92.12.164.32 -77.46.228.58 -176.194.27.221 -177.228.70.157 -109.158.202.20 -254.190.88.199 -190.229.108.36 -197.18.147.169 -92.237.146.213 -28.223.140.98 -46.63.156.159 -168.63.184.39 -31.44.253.224 -174.34.178.131 -94.226.215.40 -87.217.126.168 -96.23.253.67 -111.241.97.99 -1.54.59.157 -178.55.149.199 -89.142.78.84 -141.31.147.116 -79.33.213.41 -108.213.238.112 -31.57.84.147 -80.234.103.93 -209.95.50.66 -113.52.90.168 -81.145.244.98 -151.26.120.138 -128.70.235.3 -79.30.205.97 -138.159.171.254 -174.55.113.100 -110.149.118.131 -37.45.82.110 -206.74.9.110 -128.61.86.50 -187.14.108.85 -114.198.13.191 -213.22.179.152 -194.105.229.70 -181.223.24.193 -109.135.1.235 -89.142.141.19 -23.227.197.61 -185.52.76.43 -76.169.199.180 -73.3.210.99 -99.231.130.235 -219.79.25.31 -234.7.160.60 -167.114.42.94 -98.124.243.45 -94.244.17.63 -186.91.87.178 -87.158.138.61 -37.47.38.27 -174.90.222.192 -190.37.95.70 -190.38.134.241 -94.3.75.74 -50.148.74.47 -93.125.88.66 -190.156.180.182 -1.0.0.0 -87.92.110.226 -188.163.24.68 -178.234.165.128 -2.85.188.243 -24.209.235.10 -92.147.30.188 -68.38.91.132 -64.145.94.112 -70.209.70.192 -50.153.220.5 -146.215.226.94 -178.124.167.131 -189.220.73.190 -201.210.182.250 -71.30.9.185 -0.0.0.3 -31.54.153.0 -113.254.169.222 -188.36.178.82 -187.143.114.225 -98.246.183.126 -87.118.142.138 -93.41.14.10 -94.66.57.206 -1.64.26.102 -184.100.167.142 -219.79.190.100 -95.84.178.168 -79.142.77.138 -68.186.209.40 -113.254.169.156 -183.30.16.244 -41.251.78.214 -188.0.42.195 -68.65.103.71 -71.9.125.166 -213.168.88.39 -151.25.5.74 -114.217.0.193 -91.158.200.74 -217.122.4.85 -173.189.163.204 -116.106.235.35 -86.174.22.100 -94.255.70.244 -37.146.127.228 -193.92.113.58 -37.145.102.208 -88.173.83.141 -174.138.218.39 -87.168.167.96 -202.62.17.3 -77.203.111.184 -91.67.40.6 -24.189.162.153 -70.176.41.65 -79.245.215.246 -185.48.37.101 -36.76.56.110 -104.156.240.173 -201.152.251.21 -92.193.80.218 -95.91.240.232 -100.64.50.195 -171.5.32.218 -78.88.29.160 -162.216.46.35 -219.77.163.135 -79.151.51.157 -184.175.15.101 -77.49.238.199 -77.248.226.28 -36.69.71.187 -91.63.17.1 -101.172.213.77 -87.64.238.245 -92.8.171.136 -98.209.198.101 -188.18.30.133 -104.156.228.88 -46.130.28.226 -184.134.70.35 -181.59.224.240 -194.105.229.51 -94.209.48.166 -191.112.222.240 -89.191.161.146 -82.181.48.178 -172.56.30.174 -81.102.142.185 -209.21.206.225 -88.11.161.104 -5.164.152.212 -107.153.110.4 -78.238.22.5 -89.137.112.181 -50.148.235.241 -201.243.34.125 -217.73.143.165 -179.55.38.56 -171.97.216.85 -89.164.233.118 -78.234.188.9 -5.233.32.47 -93.108.204.241 -190.75.200.139 -90.197.186.161 -181.44.158.219 -79.31.221.169 -86.145.165.213 -77.166.82.225 -46.177.87.147 -75.111.215.8 -27.55.216.169 -219.73.14.96 -190.207.219.55 -46.159.30.181 -122.49.186.209 -88.232.10.222 -80.135.30.123 -91.48.61.225 -186.147.119.217 -114.244.63.56 -184.171.221.174 -122.195.1.17 -216.82.207.195 -91.145.155.116 -46.175.29.24 -2.176.151.20 -89.182.174.121 -68.9.115.43 -95.109.87.61 -87.252.255.14 -218.85.97.34 -195.154.52.96 -70.75.235.215 -184.166.237.78 -112.215.124.145 -68.246.169.224 -79.133.135.23 -74.58.134.134 -82.142.112.229 -200.164.98.231 -176.110.250.220 -91.67.247.232 -82.67.66.5 -123.108.230.29 -188.143.19.122 -86.145.165.213 -84.232.195.44 -86.138.235.114 -25.31.60.102 -36.76.249.192 -92.20.132.221 -78.225.238.46 -91.243.25.4 -202.67.40.25 -85.17.24.3 -121.220.62.161 -178.236.62.13 -194.44.26.217 -50.153.148.144 -77.57.13.122 -31.52.169.179 -178.162.63.137 -86.145.238.190 -77.49.127.161 -111.95.163.156 -82.73.214.43 -101.160.170.84 -37.110.17.100 -37.78.114.15 -109.173.7.165 -88.9.101.254 -94.51.32.217 -63.87.254.207 -217.73.139.66 -67.171.191.122 -178.173.7.237 -190.252.136.95 -217.235.230.186 -92.124.37.166 -188.109.30.153 -83.128.24.180 -91.40.70.81 -25.5.110.117 -186.95.20.215 -143.160.105.28 -140.168.123.154 -125.211.213.132 -87.93.111.108 -86.166.84.223 -62.195.143.219 -177.97.221.235 -160.255.48.163 -115.152.152.76 -2.25.181.198 -198.147.29.138 -178.234.195.60 -63.142.161.7 -71.35.59.89 -91.69.121.77 -86.161.148.170 -84.73.147.5 -201.212.212.92 -88.217.181.2 -188.67.32.137 -95.237.83.104 -84.22.5.78 -75.139.130.110 -81.141.17.230 -93.107.127.131 -81.249.78.103 -89.254.228.135 -42.61.112.245 -79.35.129.75 -5.254.97.75 -87.99.37.114 -88.136.23.202 -216.144.236.42 -84.236.19.157 -84.220.209.247 -46.254.132.34 -89.37.62.17 -178.121.32.78 -190.201.14.18 -178.204.62.112 -186.116.227.215 -84.154.93.193 -2.85.179.46 -217.131.165.253 -162.104.104.66 -192.77.248.6 -83.220.237.121 -85.178.84.212 -2.84.13.138 -82.50.151.8 -188.143.7.32 -189.250.79.133 -120.140.50.159 -128.90.23.4 -72.64.93.117 -107.4.96.165 -174.71.129.109 -203.98.92.130 -86.181.92.47 -85.60.236.130 -79.141.246.80 -124.168.137.32 -185.54.176.156 -186.119.252.108 -95.24.121.58 -198.18.1.15 -90.46.58.23 -63.142.161.20 -171.4.72.224 -88.180.60.218 -80.212.50.182 -0.0.0.0 -32.97.110.61 -90.29.148.68 -31.181.197.19 -93.87.184.75 -90.176.52.35 -14.192.209.247 -76.242.145.138 -129.10.9.64 -78.15.202.45 -77.97.142.87 -207.81.63.135 -81.171.98.35 -202.62.17.69 -42.104.32.32 -95.26.202.211 -159.118.77.129 -100.76.86.176 -173.254.218.226 -92.19.38.47 -188.76.162.80 -81.154.37.205 -202.62.18.90 -92.148.231.170 -112.198.100.11 -94.67.213.230 -81.47.166.253 -111.241.99.206 -206.45.157.108 -223.204.247.173 -188.232.3.241 -109.121.36.180 -176.8.52.211 -165.255.211.31 -201.209.4.88 -122.169.144.108 -115.77.131.85 -119.162.11.240 -202.67.43.8 -58.7.43.189 -113.254.169.97 -65.93.22.223 -2.24.137.179 -37.205.63.243 -188.153.14.179 -173.27.142.32 -186.90.26.100 -75.137.110.60 -94.70.17.152 -188.73.192.6 -50.38.90.90 -186.104.168.59 -99.58.56.103 -78.111.186.34 -162.156.199.110 -189.69.228.213 -188.162.132.92 -188.250.46.17 -46.254.11.158 -216.84.157.50 -41.105.238.117 -178.164.143.158 -110.17.46.185 -109.145.153.74 -91.201.118.181 -111.242.50.157 -209.95.50.21 -2.85.48.9 -86.147.113.242 -201.32.5.18 -70.89.67.173 -188.6.144.132 -219.90.169.227 -118.209.107.196 -72.209.204.141 -145.255.9.104 -83.248.48.163 -146.0.32.101 -69.227.211.207 -83.250.224.227 -209.195.122.166 -5.175.208.105 -23.243.180.110 -84.147.123.11 -24.117.149.151 -190.205.77.192 -80.203.58.200 -212.89.231.162 -139.162.20.227 -104.200.151.4 -177.228.70.157 -79.175.64.115 -230.88.48.35 -84.167.70.224 -92.76.239.3 -86.130.241.50 -186.115.66.232 -37.188.229.58 -198.18.1.10 -186.212.36.105 -5.2.66.120 -108.170.186.184 -188.77.219.159 -190.198.3.63 -36.68.180.135 -95.137.245.107 -92.127.114.4 -138.97.160.250 -67.253.255.191 -81.26.143.178 -92.44.18.79 -46.118.76.11 -163.21.61.34 -23.29.222.45 -100.71.25.195 -87.79.212.65 -95.181.3.196 -119.252.188.74 -95.71.9.39 -189.243.241.227 -179.24.39.24 -79.70.37.23 -84.99.129.92 -189.35.206.190 -178.213.168.44 -108.184.133.213 -105.224.102.135 -2.85.178.120 -91.158.215.5 -188.238.162.173 -120.164.44.57 -87.92.110.226 -37.244.225.68 -92.37.108.18 -174.0.80.58 -83.252.144.230 -89.146.60.241 -209.107.214.46 -193.92.127.190 -25.120.64.106 -193.173.216.141 -187.15.127.73 -162.216.46.187 -190.66.129.132 -96.46.197.79 -87.205.196.58 -107.10.92.11 -79.52.3.121 -109.227.46.236 -179.55.87.128 -60.229.177.248 -79.101.135.191 -110.139.78.73 -95.55.43.88 -79.203.115.225 -14.20.214.162 -108.238.96.103 -209.95.50.90 -92.127.18.55 -189.15.77.212 -67.168.77.63 -179.235.245.192 -92.17.4.80 -187.161.80.227 -101.160.38.192 -79.161.65.123 -54.223.76.165 -84.19.169.166 -71.166.60.163 -176.255.5.71 -77.250.199.106 -5.83.88.145 -60.213.89.243 -31.220.4.3 -216.121.249.83 -93.108.204.241 -188.49.9.231 -140.140.20.200 -186.1.246.2 -91.44.228.3 -1.0.0.0 -95.253.13.97 -76.68.207.219 -213.152.161.138 -151.227.55.136 -173.65.180.70 -193.161.15.94 -172.111.156.67 -162.243.72.148 -71.218.180.93 -79.206.173.126 -77.78.23.237 -220.179.36.72 -199.7.156.133 -41.96.129.229 -172.78.213.101 -213.74.106.1 -191.32.70.254 -190.211.210.173 -36.84.63.92 -91.229.149.244 -178.254.187.40 -186.94.39.37 -46.142.129.19 -18.111.41.60 -77.166.187.108 -172.218.139.35 -186.60.146.216 -180.110.159.141 -93.82.90.128 -174.97.17.97 -104.207.136.5 -120.144.4.208 -186.91.34.215 -36.83.149.142 -67.140.84.221 -75.172.213.12 -190.36.82.218 -151.66.225.227 -92.127.116.213 -81.229.125.221 -185.93.68.25 -93.137.254.149 -136.169.147.161 -77.243.183.9 -177.249.147.137 -5.42.80.220 -94.21.170.123 -94.75.136.231 -171.96.171.156 -201.210.116.14 -100.91.33.157 -201.229.57.249 -46.226.185.175 -181.24.19.226 -70.20.39.39 -76.73.3.178 -183.44.24.92 -37.30.58.138 -201.208.216.108 -181.59.197.112 -64.145.76.134 -87.112.242.103 -85.23.5.167 -212.54.195.80 -197.203.22.242 -113.7.121.63 -100.3.201.60 -49.49.249.174 -142.217.187.68 -223.204.248.114 -162.200.76.207 -2.4.131.202 -186.94.182.133 -94.11.104.13 -68.226.111.155 -14.148.92.236 -178.210.209.60 -190.36.211.35 -36.75.1.100 -79.245.210.43 -112.208.64.95 -81.111.5.210 -196.199.187.123 -83.128.11.52 -190.161.42.141 -219.79.188.196 -84.244.33.51 -152.78.66.223 -184.172.109.21 -174.25.126.49 -191.109.61.205 -209.188.7.224 -171.149.2.249 -123.243.36.179 -223.204.250.124 -187.78.66.45 -178.58.101.109 -117.207.4.174 -192.183.236.233 -78.190.78.63 -62.205.137.36 -46.244.202.244 -181.92.35.237 -78.226.118.202 -162.216.46.120 -106.66.184.84 -2.85.183.89 -182.182.97.227 -151.228.122.105 -186.46.200.125 -77.2.6.244 -88.217.180.135 -41.105.227.179 -117.217.169.19 -59.58.211.249 -187.59.190.124 -205.197.242.148 -66.193.240.253 -197.202.252.228 -189.157.253.81 -162.156.199.110 -79.206.173.197 -180.241.155.216 -109.74.169.196 -131.203.121.56 -217.120.80.97 -195.74.244.138 -95.25.148.21 -71.250.245.33 -186.91.50.84 -164.68.192.164 -81.132.3.126 -65.32.59.185 -77.243.183.20 -121.121.101.115 -94.229.74.91 -85.101.4.148 -25.212.159.235 -79.130.179.236 -194.105.229.242 -125.24.114.91 -37.209.150.125 -82.176.210.145 -5.254.97.85 -85.23.98.164 -24.208.133.42 -67.68.98.253 -181.137.36.56 -87.72.126.139 -178.234.70.85 -189.153.4.109 -93.35.112.145 -41.235.159.49 -82.34.217.209 -82.27.214.236 -62.158.153.239 -46.98.112.92 -95.236.131.168 -87.19.217.177 -24.16.13.108 -31.173.83.71 -80.110.47.213 -79.183.6.26 -110.114.190.209 -187.3.226.181 -24.184.225.173 -202.62.16.28 -178.66.204.156 -118.240.102.196 -78.9.100.214 -174.62.75.38 -212.129.1.77 -85.117.102.70 -105.225.124.150 -68.189.20.50 -53.193.239.1 -5.143.135.222 -110.168.232.115 -63.87.224.147 -72.10.210.38 -77.130.254.107 -117.79.232.195 -104.131.114.226 -1.47.75.216 -75.162.150.228 -114.76.65.209 -50.131.213.69 -105.237.240.41 -46.189.28.54 -200.195.171.66 -177.183.118.253 -107.182.228.8 -84.246.161.125 -92.194.211.133 -72.220.124.246 -95.18.51.131 -51.9.32.185 -193.92.105.49 -62.74.26.187 -67.228.177.213 -87.10.184.130 -90.215.81.198 -213.87.160.236 -95.168.128.13 -92.231.191.53 -5.12.141.158 -91.140.42.47 -175.136.48.78 -154.157.161.160 -182.50.248.181 -78.58.144.203 -192.99.47.172 -213.162.103.191 -36.78.190.197 -74.100.204.172 -186.204.128.46 -71.190.175.162 -217.66.101.17 -120.59.93.93 -222.47.203.227 -197.211.52.26 -212.112.119.23 -92.214.205.46 -24.91.145.46 -202.62.16.229 -124.170.29.11 -216.171.19.177 -190.201.27.160 -174.49.21.212 -71.31.210.43 -178.254.173.143 -217.235.245.98 -212.129.1.77 -24.159.124.124 -85.212.65.71 -78.132.75.22 -202.62.17.140 -76.99.37.97 -176.65.127.34 -72.191.195.23 -101.136.198.7 -184.148.244.248 -188.129.71.159 -60.166.229.77 -45.74.37.191 -181.124.105.133 -125.79.40.69 -99.184.34.61 -64.237.35.84 -31.151.218.186 -176.10.104.243 -109.93.1.102 -41.223.162.5 -60.26.198.94 -182.239.166.75 -190.51.144.246 -98.127.234.215 -176.93.163.131 -110.55.1.112 -90.191.168.246 -126.153.74.146 -73.39.122.227 -83.198.46.116 -185.34.240.121 -78.150.104.86 -212.123.186.174 -49.4.191.16 -120.195.96.242 -178.25.213.158 -98.121.109.252 -1.39.60.213 -62.216.195.237 -82.16.205.72 -80.213.122.68 -95.19.40.148 -78.8.245.213 -94.226.55.18 -31.61.141.136 -1.58.98.107 -74.108.124.159 -31.6.21.180 -181.90.74.240 -77.243.183.25 -24.230.59.100 -217.95.239.51 -108.61.228.160 -187.170.125.234 -109.188.124.7 -92.37.212.138 -73.226.22.158 -75.192.234.101 -94.181.229.228 -181.134.89.52 -112.215.124.80 -109.121.20.56 -178.234.178.80 -50.153.150.234 -83.46.249.179 -79.245.220.155 -91.180.129.209 -90.1.218.225 -186.90.83.237 -2.82.39.168 -186.95.52.224 -190.39.175.89 -93.106.134.14 -84.152.140.60 -79.245.219.88 -186.116.109.197 -197.117.67.167 -173.176.114.28 -79.183.15.169 -98.90.66.195 -213.111.129.137 -79.204.129.29 -172.58.139.124 -206.47.31.95 -121.15.76.179 -89.241.192.31 -37.187.56.220 -49.228.198.59 -2.62.2.103 -36.85.145.19 -91.181.179.196 -178.223.12.7 -186.129.158.136 -108.57.197.21 -216.14.113.63 -88.141.107.40 -46.73.248.237 -94.242.222.251 -95.232.234.3 -74.96.106.156 -1.56.204.181 -82.217.79.241 -190.78.61.241 -154.157.161.160 -88.217.181.49 -178.198.214.231 -171.149.2.249 -77.243.183.87 -188.162.14.48 -202.62.16.163 -37.73.252.213 -159.206.179.155 -125.60.156.151 -2.135.235.29 -136.169.141.42 -5.238.159.124 -31.57.94.41 -36.76.55.203 -108.61.228.113 -219.73.15.59 -67.181.167.196 -68.39.255.10 -86.10.225.82 -86.104.196.53 -188.0.47.26 -70.123.115.240 -58.212.134.44 -190.203.161.165 -217.131.108.228 -0.0.196.15 -190.205.162.178 -95.25.56.22 -86.136.204.35 -93.175.72.187 -191.112.243.63 -95.55.22.224 -188.83.111.148 -90.48.44.131 -60.240.1.229 -58.47.179.3 -71.251.58.161 -96.225.138.18 -186.95.46.68 -77.96.242.128 -172.98.87.38 -100.42.160.78 -25.90.67.202 -181.24.9.202 -208.167.254.12 -75.111.65.232 -167.61.86.118 -115.87.121.70 -46.149.182.128 -171.101.162.62 -119.77.150.187 -1.0.0.0 -2.134.144.106 -178.234.224.118 -2.240.48.24 -23.241.17.48 -83.61.236.237 -109.81.211.169 -104.156.228.174 -59.58.244.43 -58.100.64.156 -118.71.187.220 -167.113.103.254 -186.49.111.128 -95.90.203.206 -24.230.59.100 -83.30.0.203 -201.211.94.247 -150.243.99.3 -178.195.242.251 -5.80.54.19 -114.125.175.120 -201.209.135.23 -140.168.123.167 -86.168.89.159 -36.74.245.236 -112.210.106.111 -79.204.159.71 -176.9.4.50 -85.72.180.72 -188.196.185.78 -94.133.144.52 -90.1.53.178 -105.236.46.30 -70.173.7.42 -154.122.15.92 -192.100.100.137 -90.203.150.53 -109.201.154.148 -78.88.29.222 -219.79.188.102 -98.201.118.51 -46.101.128.131 -71.29.26.245 -46.172.222.26 -79.185.197.97 -194.105.229.89 -79.100.113.22 -37.190.37.125 -79.30.205.60 -186.116.109.197 -85.52.212.70 -219.73.15.193 -63.142.253.225 -86.197.146.225 -71.90.53.87 -178.234.94.211 -83.153.141.90 -78.178.112.5 -150.27.228.7 -122.155.168.126 -79.245.220.11 -113.28.135.125 -85.155.3.94 -177.131.171.131 -50.53.104.249 -86.31.102.68 -36.76.121.6 -77.222.109.76 -82.238.165.65 -24.65.226.161 -93.39.222.60 -213.87.123.163 -88.141.114.61 -79.204.141.76 -146.90.79.77 -66.55.144.245 -128.71.78.96 -115.127.32.42 -189.198.24.238 -192.77.248.6 -92.25.36.254 -213.227.202.119 -211.27.219.141 -89.154.49.154 -184.155.115.18 -80.192.72.225 -88.107.68.132 -71.89.196.163 -168.103.40.150 -87.147.153.162 -121.16.192.128 -2.103.209.142 -190.22.167.193 -178.223.71.185 -112.65.211.237 -94.189.190.29 -83.134.186.185 -31.132.225.141 -105.227.137.4 -79.255.239.227 -100.65.79.232 -125.90.135.86 -82.26.126.122 -95.168.129.156 -5.141.201.40 -88.137.219.174 -177.138.187.162 -151.74.96.104 -31.220.4.3 -5.170.114.84 -85.228.248.154 -100.80.155.184 -181.137.36.56 -112.198.100.11 -178.22.65.158 -91.84.78.147 -77.222.113.102 -46.0.39.78 -109.81.210.230 -5.138.162.117 -36.68.171.218 -250.31.16.246 -2.28.86.111 -85.155.212.110 -188.95.28.3 -176.14.89.216 -184.20.199.30 -95.215.158.237 -84.238.21.219 -71.53.153.7 -101.98.215.166 -152.78.157.141 -94.205.1.108 -83.220.238.207 -80.107.65.129 -84.41.36.30 -183.247.75.124 -101.116.78.128 -0.0.0.0 -5.171.61.131 -82.233.229.5 -177.137.238.202 -223.204.250.14 -31.50.240.201 -2.62.27.9 -113.23.124.101 -95.153.135.34 -95.245.11.217 -180.252.98.87 -139.192.151.240 -97.121.143.100 -188.51.43.179 -89.99.255.240 -62.21.3.96 -2.102.255.77 -192.81.14.1 -181.194.63.67 -201.216.194.193 -178.210.212.151 -66.29.187.52 -94.66.57.24 -109.43.0.198 -46.190.119.252 -196.32.3.15 -187.161.80.227 -24.8.142.47 -87.98.254.192 -192.241.215.76 -188.17.9.40 -116.12.61.150 -86.31.57.106 -89.178.173.167 -79.204.159.140 -70.173.239.125 -140.246.4.3 -86.208.11.209 -24.30.124.52 -94.208.224.23 -145.53.197.222 -96.46.196.49 -37.190.51.5 -45.58.202.38 -178.234.241.194 -94.157.236.220 -91.48.59.38 -151.238.56.177 -117.193.61.200 -209.91.43.78 -29.108.45.223 -95.72.228.21 -94.112.35.42 -95.71.9.142 -53.193.239.53 -70.169.101.156 -188.247.74.196 -86.132.88.171 -114.244.50.62 -67.173.146.85 -76.27.67.221 -190.62.100.198 -40.118.96.99 -0.0.0.0 -187.143.152.243 -85.76.73.210 -180.252.81.57 -188.25.7.9 -78.148.189.100 -191.33.44.16 -187.250.177.62 -37.6.243.64 -77.243.183.15 -162.216.46.27 -217.235.229.86 -205.185.218.227 -8.34.97.15 -113.254.169.130 -92.17.214.10 -46.238.214.52 -109.92.125.37 -88.217.180.206 -186.123.250.58 -189.166.241.69 -122.149.136.199 -254.192.10.101 -62.113.206.152 -100.69.120.173 -36.76.40.117 -176.199.122.249 -79.20.244.62 -162.104.104.66 -24.189.254.177 -93.120.154.125 -112.198.103.94 -190.77.226.235 -190.198.230.55 -86.181.101.168 -87.244.106.224 -69.254.108.4 -99.234.111.172 -220.253.89.87 -91.181.197.181 -46.0.90.17 -24.212.112.98 -71.238.102.227 -88.148.186.23 -89.36.99.226 -50.204.181.213 -105.236.200.45 -71.28.128.9 -70.49.81.155 -125.105.197.168 -69.18.28.136 -24.65.236.69 -188.73.252.150 -108.61.10.90 -113.13.96.143 -103.50.157.207 -104.45.135.147 -201.248.109.236 -176.10.35.244 -36.83.55.99 -152.249.19.96 -89.254.228.135 -220.85.248.156 -100.78.243.198 -195.174.63.110 -197.116.38.201 -109.182.97.110 -61.94.63.89 -169.41.33.208 -179.55.32.8 -99.121.48.135 -184.56.117.246 -94.11.119.138 -82.147.165.14 -131.91.7.2 -83.217.12.1 -111.240.210.236 -182.108.201.32 -83.8.244.143 -118.209.66.153 -86.97.88.173 -84.147.123.11 -105.184.225.62 -74.141.80.174 -70.54.86.241 -86.23.123.254 -216.166.10.199 -160.19.5.157 -106.192.29.85 -86.161.148.170 -68.125.54.178 -86.179.6.141 -92.127.1.148 -94.254.224.32 -190.91.55.65 -95.232.37.242 -178.128.243.39 -81.200.14.126 -2.124.60.67 -190.71.165.230 -188.0.47.151 -171.4.233.46 -179.114.28.83 -165.255.35.68 -100.104.254.252 -76.4.176.37 -95.236.166.58 -85.127.29.220 -77.220.33.116 -198.18.1.16 -178.120.36.242 -14.192.209.230 -79.202.59.93 -177.0.180.207 -151.28.169.207 -168.14.206.117 -148.31.163.57 -91.124.181.151 -14.192.214.217 -176.149.188.145 -178.172.215.92 -190.207.68.49 -195.113.196.64 -185.42.36.99 -92.40.183.177 -88.207.15.213 -174.69.98.70 -151.238.38.228 -117.222.10.207 -73.175.164.127 -178.85.54.148 -62.238.179.251 -95.37.9.26 -0.0.0.0 -79.204.182.127 -68.40.175.1 -185.65.132.100 -100.71.157.158 -186.188.74.85 -124.236.25.166 -81.184.33.26 -171.97.145.198 -108.61.68.149 -137.15.153.59 -37.213.220.12 -61.227.229.211 -0.0.0.0 -84.154.93.193 -91.158.150.69 -156.121.28.112 -181.132.90.89 -87.112.147.66 -187.147.251.197 -189.159.210.19 -91.150.92.1 -97.123.237.123 -79.116.200.114 -90.212.241.153 -24.163.68.6 -178.184.15.205 -80.116.90.228 -37.24.154.229 -14.148.96.47 -2.6.145.158 -202.62.17.198 -213.147.116.34 -47.17.155.157 -178.234.72.31 -82.151.220.178 -2.95.199.107 -113.161.76.161 -176.61.119.227 -178.42.41.138 -52.37.109.241 -78.94.32.194 -93.82.89.56 -54.84.114.124 -198.48.210.172 -173.9.191.245 -100.69.128.142 -176.51.149.113 -94.254.199.75 -201.165.192.20 -67.174.42.236 -108.177.128.150 -107.161.192.3 -190.22.128.210 -176.10.61.174 -183.38.36.58 -171.149.2.249 -125.238.117.232 -199.255.209.211 -141.136.220.171 -176.82.173.185 -68.45.101.13 -109.43.3.12 -187.233.182.174 -201.244.175.90 -201.229.84.230 -87.218.108.163 -85.102.97.66 -175.138.150.222 -64.134.147.95 -135.0.22.158 -213.176.245.198 -91.48.62.226 -107.222.190.99 -68.232.186.211 -186.62.36.185 -103.43.148.10 -86.141.164.169 -190.39.14.8 -159.203.56.201 -37.6.99.125 -108.233.142.124 -79.245.207.48 -187.143.90.5 -171.96.171.253 -84.20.242.6 -84.99.129.92 -91.44.239.110 -84.154.93.193 -94.189.210.210 -2.249.76.108 -86.181.101.168 -174.28.36.46 -36.78.203.186 -204.152.208.30 -95.24.97.176 -189.140.140.184 -191.248.94.241 -87.158.130.183 -172.98.85.45 -183.60.253.194 -91.48.36.208 -110.168.231.209 -101.80.128.236 -188.4.235.122 -139.218.216.7 -86.164.180.209 -64.231.241.210 -223.204.248.127 -109.93.59.176 -83.44.52.2 -183.97.21.147 -218.10.254.174 -93.210.112.103 -151.227.121.20 -78.132.91.153 -178.55.248.191 -41.95.222.186 -100.68.176.85 -79.194.236.237 -186.28.160.243 -46.98.124.128 -2.87.138.159 -93.113.244.166 -217.234.15.117 -189.130.86.228 -186.88.109.110 -186.92.11.234 -69.62.229.169 -124.248.207.76 -79.204.170.104 -109.131.72.221 -77.2.6.244 -86.131.97.253 -62.238.98.194 -184.0.10.44 -1.162.19.7 -178.234.145.196 -69.167.25.171 -183.188.194.186 -100.81.249.115 -37.146.123.203 -88.223.67.197 -82.24.182.116 -217.83.63.88 -178.206.94.207 -46.19.139.174 -212.43.117.91 -109.221.52.26 -95.180.74.125 -108.125.214.137 -71.231.4.16 -190.200.107.145 -92.127.115.8 -68.197.126.71 -37.219.113.144 -119.94.224.223 -88.75.39.23 -71.52.80.53 -93.27.43.182 -178.33.209.212 -186.92.228.115 -85.178.89.74 -84.133.115.69 -59.177.171.125 -84.147.117.137 -93.201.233.37 -45.72.146.82 -1.0.0.0 -201.243.110.123 -104.156.228.158 -85.15.5.3 -188.27.70.20 -95.232.214.103 -109.62.143.55 -62.4.196.178 -96.46.206.30 -217.235.240.26 -82.39.170.75 -186.85.81.206 -176.188.61.87 -46.238.37.253 -109.189.198.251 -217.65.48.86 -213.67.148.249 -46.70.136.199 -86.213.185.31 -37.190.115.240 -88.199.98.126 -198.23.71.72 -89.98.91.183 -190.207.56.101 -66.159.126.13 -45.217.148.157 -66.220.156.78 -114.79.51.163 -84.28.195.200 -79.175.93.227 -118.209.218.191 -172.111.156.67 -95.52.178.191 -189.159.94.1 -85.76.6.141 -79.141.170.4 -171.149.2.249 -54.84.21.157 -90.204.87.69 -50.83.9.153 -175.100.138.174 -178.128.248.1 -71.53.157.49 -173.189.166.246 -90.217.248.209 -181.176.46.99 -190.12.191.87 -75.54.50.55 -25.15.9.35 -190.142.31.90 -46.233.224.228 -37.238.140.55 -186.94.241.77 -121.141.52.83 -151.238.38.228 -151.66.226.64 -81.141.4.205 -194.61.68.124 -181.162.55.198 -208.82.41.47 -64.130.98.213 -61.253.83.10 -72.78.180.127 -17.234.139.146 -83.192.241.120 -79.204.149.175 -79.206.173.127 -95.141.28.168 -77.88.251.253 -94.70.5.65 -89.233.112.233 -79.245.193.41 -50.161.176.139 -112.210.26.23 -80.213.212.251 -67.193.83.131 -188.52.73.139 -177.228.66.13 -87.218.108.163 -198.48.210.172 -70.197.79.205 -105.225.199.114 -109.232.51.32 -145.249.205.251 -75.89.23.142 -176.84.46.160 -187.121.135.227 -178.140.25.85 -86.241.192.71 -220.75.218.153 -179.179.151.186 -151.72.136.1 -177.96.99.229 -93.100.39.93 -54.89.21.44 -83.56.202.88 -5.100.81.158 -2.29.149.62 -113.176.61.195 -193.173.216.202 -62.106.112.213 -1.25.124.164 -97.101.86.80 -173.245.219.43 -105.224.251.219 -201.75.99.9 -212.14.20.148 -62.74.23.49 -79.255.234.97 -49.199.160.43 -66.55.134.205 -37.213.130.13 -81.167.129.247 -92.226.44.87 -94.51.21.12 -84.83.129.43 -88.243.13.85 -140.247.0.16 -85.192.189.179 -91.179.166.223 -187.180.169.226 -82.126.49.125 -92.113.175.86 -87.50.118.59 -125.24.126.173 -88.198.76.188 -50.179.9.127 -37.47.209.113 -59.35.255.161 -94.124.5.10 -178.24.36.208 -188.4.40.193 -79.245.221.139 -46.227.12.142 -141.101.181.28 -217.235.237.34 -181.137.36.56 -202.62.16.202 -80.107.29.151 -165.84.8.160 -138.68.17.92 -200.44.213.166 -77.11.24.112 -85.150.137.211 -45.56.151.17 -81.219.27.176 -66.87.99.109 -217.89.14.239 -101.165.182.99 -85.132.87.161 -187.184.200.144 -178.150.52.182 -63.29.83.160 -79.185.83.6 -94.66.57.230 -24.201.80.101 -45.49.180.110 -223.204.251.231 -190.199.212.56 -109.43.2.207 -23.116.250.206 -128.78.219.231 -67.190.233.238 -64.24.149.69 -25.52.41.246 -117.194.61.67 -78.87.91.243 -37.55.224.162 -50.84.151.156 -112.213.118.25 -24.48.42.178 -190.255.10.225 -78.111.196.163 -212.85.133.161 -178.120.34.128 -73.224.21.143 -72.61.215.230 -186.91.255.210 -104.45.151.45 -62.4.196.157 -79.143.165.65 -82.209.148.120 -77.85.130.228 -37.47.211.243 -95.26.230.154 -178.43.32.146 -85.140.2.62 -96.240.86.151 -5.249.110.239 -73.203.113.197 -219.73.12.46 -108.233.142.124 -89.77.214.93 -46.129.112.120 -50.46.209.169 -80.72.69.226 -113.244.80.141 -79.177.240.158 -155.138.231.104 -108.234.78.87 -104.238.187.114 -81.231.244.196 -90.79.109.176 -71.219.139.245 -84.251.240.206 -70.75.192.84 -128.70.25.12 -151.15.31.42 -128.75.244.118 -100.68.31.17 -84.237.53.11 -31.207.228.214 -69.55.253.225 -223.204.240.178 -46.59.37.170 -118.209.134.35 -178.116.237.19 -67.253.130.12 -186.14.169.249 -254.228.44.227 -99.244.163.204 -90.186.174.74 -72.136.101.25 -110.168.232.207 -91.21.209.178 -71.57.102.33 -197.20.81.222 -171.97.202.78 -189.58.16.26 -176.15.167.33 -178.242.208.101 -69.164.195.142 -207.192.254.156 -97.81.48.175 -0.0.0.0 -95.250.249.192 -94.74.124.50 -71.189.58.203 -188.244.193.15 -96.49.76.100 -178.234.164.253 -93.156.82.36 -201.213.75.106 -212.74.202.184 -79.198.46.110 -37.4.169.70 -112.198.90.4 -193.92.193.216 -90.110.135.137 -231.190.29.94 -93.47.133.195 -100.105.40.106 -80.42.27.32 -97.82.95.148 -91.48.43.50 -106.66.131.0 -25.7.70.98 -89.109.26.16 -86.58.6.204 -42.2.89.74 -121.214.35.106 -23.92.215.194 -67.249.179.67 -186.91.225.145 -70.194.133.202 -73.191.209.26 -31.57.93.197 -187.143.152.243 -104.34.201.105 -109.156.59.69 -168.203.172.119 -188.69.213.71 -37.201.224.198 -63.87.254.166 -46.147.175.80 -176.31.53.252 -190.181.186.26 -108.236.229.199 -178.120.223.129 -93.196.163.245 -53.193.238.248 -37.78.82.173 -85.222.169.120 -190.238.254.2 -186.22.84.72 -67.248.117.76 -80.236.18.96 -95.237.150.252 -31.162.201.168 -98.240.120.30 -62.143.41.223 -186.118.101.80 -88.14.181.193 -108.244.47.41 -180.126.103.255 -92.76.227.125 -78.35.153.26 -42.117.24.196 -79.42.95.37 -2.85.49.89 -124.73.75.194 -208.118.217.31 -5.68.34.214 -68.69.138.30 -141.130.202.40 -14.125.241.61 -78.150.104.86 -95.179.16.46 -46.254.11.158 -81.243.96.100 -190.38.174.14 -91.115.16.137 -77.46.104.150 -187.14.222.253 -75.142.133.235 -5.164.174.111 -90.227.39.82 -80.61.97.239 -2.147.177.10 -87.3.231.182 -193.253.170.95 -50.124.52.72 -81.141.18.79 -180.117.230.141 -119.181.14.100 -46.61.20.84 -68.4.194.25 -63.87.254.129 -85.105.19.41 -145.132.7.244 -73.15.33.81 -83.32.181.154 -171.6.27.97 -202.62.17.108 -185.9.113.48 -113.111.207.228 -177.45.14.116 -115.87.235.103 -91.189.87.130 -78.12.50.49 -113.254.166.97 -107.5.121.128 -217.83.52.206 -92.147.147.139 -217.73.143.165 -101.136.198.7 -46.238.214.44 -195.128.182.25 -81.4.219.185 -121.208.106.138 -31.6.57.69 -37.229.91.22 -188.143.66.100 -109.109.158.248 -200.121.17.156 -24.65.239.116 -203.198.80.62 -113.240.247.242 -199.19.95.181 -182.149.179.75 -86.133.95.54 -196.217.77.156 -53.193.238.76 -90.46.77.211 -210.55.212.77 -86.156.30.44 -46.219.75.126 -88.206.186.25 -201.139.64.199 -83.220.237.203 -90.57.159.167 -37.131.65.81 -81.105.205.39 -88.114.111.212 -70.126.98.88 -131.204.137.14 -139.192.129.27 -142.196.226.85 -25.123.50.89 -66.90.147.7 -207.98.91.108 -140.186.20.196 -168.63.186.126 -94.216.85.214 -78.88.29.88 -200.84.105.129 -89.164.183.243 -27.77.240.91 -66.41.56.235 -176.9.113.75 -172.56.38.36 -21.209.82.239 -178.43.50.78 -186.35.26.47 -128.71.79.146 -67.44.193.89 -178.254.189.106 -50.131.48.25 -193.173.216.141 -46.166.186.237 -60.242.111.104 -114.96.144.162 -179.35.67.146 -46.166.190.221 -153.136.35.20 -37.190.51.38 -2.206.2.53 -95.72.230.232 -173.199.65.38 -96.229.213.18 -150.29.134.59 -115.28.162.137 -84.187.93.208 -78.148.79.165 -202.62.16.0 -200.78.5.105 -121.211.218.102 -85.7.159.117 -83.202.206.217 -186.237.60.190 -37.248.255.139 -78.164.114.243 -108.24.81.3 -162.216.46.184 -200.229.216.6 -188.162.36.53 -89.164.233.118 -186.93.181.105 -89.100.186.76 -109.194.110.54 -108.27.213.19 -201.208.197.20 -201.66.83.187 -190.37.117.153 -223.73.103.139 -120.22.163.204 -5.152.218.204 -186.207.213.206 -80.215.166.84 -95.96.146.121 -109.226.84.229 -100.68.53.91 -31.3.26.210 -166.156.10.96 -85.23.98.164 -115.188.71.106 -188.67.19.102 -212.84.112.95 -208.167.254.71 -58.70.1.212 -181.1.157.126 -50.46.209.169 -95.27.239.163 -169.237.99.175 -46.176.81.91 -88.141.107.40 -95.91.255.151 -2.85.55.69 -231.190.16.139 -95.186.235.168 -159.206.179.155 -187.170.111.199 -23.239.109.42 -77.104.194.95 -100.116.146.73 -76.99.37.97 -181.24.69.91 -94.21.59.198 -68.100.121.75 -104.35.225.25 -108.19.160.97 -87.9.217.120 -86.197.147.26 -190.200.116.19 -78.235.24.172 -99.137.226.94 -154.157.161.160 -79.70.38.26 -69.246.109.194 -108.202.176.163 -219.73.93.18 -176.10.33.23 -94.96.79.172 -139.192.181.8 -79.203.93.193 -189.202.85.78 -31.132.225.212 -94.26.100.34 -197.211.52.17 -60.168.253.88 -50.153.150.172 -98.193.70.55 -192.101.101.104 -188.108.35.232 -41.174.144.142 -79.130.27.17 -74.61.120.185 -63.87.254.188 -193.161.15.72 -149.154.199.79 -5.151.75.13 -178.223.62.69 -94.179.125.146 -90.26.80.8 -74.108.73.130 -64.121.9.200 -193.190.253.144 -89.104.6.79 -79.204.158.156 -190.204.3.155 -50.137.46.45 -31.11.78.216 -84.19.169.166 -62.16.243.132 -78.90.92.70 -101.80.128.236 -94.65.51.187 -84.106.163.174 -169.0.31.3 -212.219.189.18 -118.211.237.33 -174.52.24.82 -82.75.39.122 -186.92.246.108 -84.240.28.167 -82.72.102.219 -250.31.16.246 -81.182.88.122 -110.168.232.151 -85.244.49.62 -88.74.61.114 -162.227.231.91 -96.41.140.116 -72.191.48.158 -201.9.197.249 -88.184.162.93 -77.222.109.76 -90.39.140.211 -46.246.160.154 -201.243.217.28 -70.29.108.165 -105.229.179.124 -24.8.153.132 -118.208.25.245 -143.48.117.52 -50.254.73.145 -90.26.208.13 -181.56.181.162 -71.196.66.185 -82.26.154.43 -81.141.17.126 -83.29.7.121 -190.36.215.59 -68.104.181.13 -188.210.249.204 -83.220.237.57 -24.179.14.89 -24.119.48.249 -41.13.80.201 -93.169.65.197 -73.184.42.174 -209.188.48.220 -104.219.250.54 -83.10.234.176 -128.71.102.82 -0.0.0.0 -77.171.22.122 -187.35.183.226 -95.24.43.219 -78.161.227.14 -186.91.238.219 -174.93.28.202 -5.135.108.204 -93.115.95.201 -190.77.92.178 -5.167.151.214 -31.163.148.219 -5.47.144.159 -212.85.68.147 -125.238.118.21 -199.115.160.26 -50.66.152.76 -188.129.66.152 -186.93.181.105 -84.6.63.86 -89.204.135.212 -97.127.89.147 -79.173.209.150 -180.190.8.178 -177.182.78.243 -81.153.146.33 -195.50.30.202 -93.156.80.127 -190.251.201.110 -91.43.38.212 -77.46.228.58 -109.196.91.128 -165.255.85.43 -89.182.207.98 -5.19.254.181 -36.76.104.175 -163.158.245.3 -212.54.195.80 -91.182.2.84 -91.61.80.32 -82.141.118.195 -36.77.10.132 -176.24.60.151 -92.148.98.65 -46.248.87.63 -188.129.70.67 -162.216.46.43 -84.104.85.140 -87.198.43.146 -41.105.239.184 -178.222.8.65 -178.197.226.73 -75.130.163.51 -218.138.216.16 -110.168.232.29 -197.129.165.52 -110.114.225.201 -171.96.168.53 -100.94.186.216 -113.193.28.141 -62.47.184.52 -121.135.125.6 -113.241.227.205 -79.194.202.151 -93.138.19.90 -38.117.92.242 -90.255.102.242 -217.235.245.98 -178.254.191.36 -145.255.2.249 -92.52.46.10 -176.33.105.89 -180.159.137.110 -212.110.12.247 -178.223.29.34 -78.132.41.173 -209.107.214.55 -184.157.211.92 -201.210.136.34 -104.156.228.166 -2.110.116.27 -78.146.2.3 -189.223.40.145 -31.10.151.14 -115.73.156.101 -62.98.172.194 -12.51.221.142 -199.48.245.187 -40.45.199.182 -37.145.251.42 -191.254.234.6 -133.42.108.166 -171.97.186.106 -87.100.189.136 -85.254.74.162 -178.16.1.124 -186.146.156.243 -94.8.234.216 -113.187.0.211 -79.41.6.65 -89.68.115.216 -46.255.233.35 -91.33.212.176 -190.103.63.253 -68.229.239.219 -83.7.130.162 -155.138.228.234 -99.121.207.38 -202.80.215.19 -87.158.147.150 -162.216.46.113 -223.207.234.13 -140.168.134.185 -93.208.104.246 -210.55.212.7 -173.192.115.17 -94.197.120.199 -122.61.96.54 -74.216.74.20 -197.202.252.228 -213.89.44.226 -189.232.134.204 -2.102.154.95 -78.220.216.208 -200.93.69.211 -160.255.48.163 -130.25.88.216 -92.145.152.61 -124.217.188.204 -69.108.3.158 -88.17.163.232 -186.92.49.124 -109.159.67.244 -94.41.57.154 -200.8.39.149 -141.170.129.22 -181.55.226.126 -92.84.1.150 -217.25.157.66 -95.81.234.123 -99.118.169.71 -172.77.23.103 -120.156.32.20 -151.61.206.195 -201.34.228.37 -79.30.99.74 -96.23.182.66 -92.126.225.41 -65.25.112.109 -121.86.227.139 -87.119.241.58 -62.210.139.248 -72.187.115.150 -189.97.76.94 -92.242.84.158 -83.26.142.240 -101.184.130.85 -104.131.89.9 -109.43.3.23 -223.206.149.29 -37.78.29.254 -188.158.167.162 -220.246.221.177 -201.248.98.151 -187.56.144.147 -92.100.204.158 -89.14.37.84 -95.91.253.107 -85.240.98.217 -62.249.190.35 -84.147.122.52 -68.189.20.50 -46.166.165.39 -171.149.2.249 -37.212.78.20 -75.108.234.202 -186.94.24.202 -195.135.248.102 -91.117.36.36 -50.137.239.137 -2.81.19.210 -86.172.4.51 -176.109.8.20 -190.140.129.211 -178.222.27.95 -95.26.17.187 -24.16.13.108 -151.61.110.190 -204.84.244.11 -89.104.6.79 -151.95.2.248 -142.4.218.174 -178.226.92.114 -213.215.125.154 -86.178.41.177 -89.106.38.103 -189.40.27.87 -186.104.156.37 -82.5.155.195 -178.223.114.47 -78.6.102.70 -68.229.239.219 -202.62.17.243 -46.55.193.116 -64.145.76.166 -95.19.24.198 -187.143.131.15 -151.238.39.63 -223.204.250.123 -100.109.114.160 -2.87.138.159 -86.95.134.254 -85.176.131.41 -209.95.35.100 -120.144.147.163 -217.235.236.36 -77.163.109.238 -183.96.38.106 -31.181.197.19 -177.4.68.247 -190.203.222.36 -2.31.98.84 -113.254.165.199 -190.37.54.100 -120.156.80.113 -186.92.64.175 -68.61.104.159 -216.240.61.162 -90.255.102.242 -176.248.160.233 -186.36.78.101 -187.11.111.61 -62.83.250.234 -2.218.14.123 -184.100.197.229 -83.192.225.244 -83.134.97.101 -183.54.47.126 -88.152.186.240 -37.191.165.193 -220.253.92.215 -85.181.25.208 -50.107.118.90 -202.156.248.94 -90.208.127.105 -81.184.33.26 -62.238.41.246 -178.248.251.129 -201.248.97.184 -186.90.183.61 -65.128.50.200 -23.125.138.238 -66.186.168.251 -184.75.213.116 -201.246.92.20 -194.219.122.5 -173.28.195.191 -178.120.104.120 -176.187.33.65 -180.107.236.181 -217.25.228.30 -5.28.165.169 -189.238.253.154 -217.118.93.107 -187.37.140.36 -77.253.40.105 -219.137.245.93 -95.220.11.10 -174.69.37.131 -90.18.99.84 -93.156.84.193 -14.162.138.171 -2.95.134.41 -200.8.87.43 -178.234.175.101 -31.6.127.45 -0.0.0.0 -84.240.28.167 -78.37.212.27 -213.155.255.181 -81.97.211.72 -87.110.128.96 -93.156.85.152 -108.61.221.158 -213.114.133.63 -37.27.50.204 -217.235.254.55 -108.125.221.233 -152.238.212.218 -88.75.153.134 -177.124.186.20 -89.66.61.243 -97.127.95.119 -79.245.222.98 -125.238.116.198 -212.42.202.126 -37.188.142.133 -23.91.239.26 -18.111.100.175 -86.46.47.134 -91.158.212.23 -67.160.193.96 -94.174.159.109 -86.56.18.204 -190.97.143.230 -66.87.99.95 -72.160.42.110 -186.62.36.185 -84.19.166.58 -74.67.101.115 -37.190.51.16 -89.14.70.25 -77.231.219.235 -174.108.114.15 -91.59.143.68 -79.16.139.147 -53.193.238.159 -181.24.4.134 -93.205.23.150 -95.174.113.68 -72.130.92.25 -88.81.128.158 -187.79.198.101 -190.199.47.211 -79.245.205.64 -193.92.252.13 -193.92.57.219 -46.63.206.177 -117.147.4.250 -5.71.5.180 -78.37.209.224 -107.191.33.13 -109.131.108.79 -31.183.159.36 -109.241.213.159 -110.168.232.79 -82.19.207.84 -77.43.17.201 -94.155.117.58 -80.43.133.125 -5.42.93.15 -64.237.51.165 -108.24.76.250 -66.169.237.102 -85.238.199.16 -86.132.88.171 -188.0.40.33 -2.95.142.104 -179.34.61.194 -162.242.173.250 -37.26.143.177 -37.79.250.117 -99.61.58.22 -97.90.203.136 -113.185.7.51 -71.240.162.10 -188.73.192.30 -223.204.247.93 -36.71.166.125 -108.193.141.115 -176.253.217.115 -20.246.56.181 -83.40.223.27 -82.73.127.246 -82.251.136.117 -178.234.114.206 -92.76.244.169 -86.129.252.132 -121.98.152.41 -187.161.81.97 -202.62.16.0 -50.168.210.180 -176.205.157.226 -86.77.231.45 -191.43.19.200 -188.207.95.41 -37.14.15.170 -110.227.17.198 -79.204.180.51 -86.132.237.173 -14.1.200.115 -186.92.215.94 -85.176.46.211 -90.197.6.250 -87.100.131.44 -176.102.193.48 -186.32.213.185 -104.183.119.254 -173.244.16.168 -190.94.88.199 -89.168.217.136 -209.59.38.102 -75.64.200.17 -202.62.16.87 -188.129.57.138 -5.14.200.53 -24.222.58.144 -137.166.125.55 -149.172.246.169 -154.157.161.160 -24.220.96.106 -173.63.168.11 -178.234.168.79 -83.143.240.37 -167.174.165.94 -37.215.7.171 -122.219.223.82 -92.124.24.80 -37.190.39.95 -75.129.6.150 -197.228.88.93 -78.151.58.22 -108.180.22.192 -42.119.127.122 -78.147.114.195 -88.150.198.102 -192.99.151.16 -24.226.165.139 -75.108.234.202 -81.211.118.130 -213.49.96.80 -50.97.94.36 -201.207.87.223 -94.207.183.36 -181.50.213.128 -101.183.63.236 -108.35.213.112 -71.53.153.55 -72.51.88.209 -172.15.0.91 -77.203.122.218 -190.75.117.251 -202.62.16.1 -83.139.147.91 -86.56.9.1 -50.158.63.41 -220.253.2.201 -71.70.211.48 -190.78.218.159 -193.92.113.33 -84.79.112.88 -71.176.44.139 -151.25.116.38 -93.80.83.210 -183.26.251.60 -187.154.152.133 -51.9.232.233 -68.87.73.163 -2.222.243.0 -88.65.95.26 -86.216.248.101 -99.250.53.196 -94.214.163.25 -86.172.239.91 -58.166.126.122 -67.233.200.130 -167.113.103.254 -187.250.9.145 -87.79.205.210 -122.168.206.143 -35.2.251.113 -79.206.175.208 -80.81.242.72 -178.32.26.198 -92.157.198.24 -109.165.84.236 -41.246.123.128 -190.79.44.71 -80.71.250.255 -179.105.217.189 -78.148.189.100 -24.114.57.4 -97.82.226.119 -93.190.177.85 -94.179.52.195 -93.87.184.213 -69.164.195.142 -190.78.104.60 -37.229.88.114 -87.168.106.206 -109.201.152.246 -41.142.197.132 -76.228.232.120 -85.242.169.49 -79.134.38.179 -191.6.120.88 -45.78.219.84 -220.253.0.216 -82.208.124.9 -80.77.162.65 -60.25.173.119 -222.228.130.115 -101.184.48.161 -188.171.57.57 -188.143.12.35 -47.67.70.34 -104.156.228.84 -190.38.44.218 -186.129.155.222 -153.136.35.20 -80.229.146.133 -93.79.187.183 -89.247.168.201 -50.254.73.145 -89.250.167.173 -98.213.71.104 -192.253.243.51 -62.47.227.63 -5.42.102.21 -179.126.53.8 -176.101.222.25 -213.114.129.89 -110.90.60.204 -109.88.79.228 -81.200.14.126 -91.148.114.205 -202.62.16.58 -217.118.79.25 -67.70.149.240 -187.170.154.127 -212.139.246.181 -83.143.245.4 -18.111.35.103 -75.156.96.161 -46.18.123.126 -184.99.115.161 -46.28.51.116 -83.144.94.122 -71.200.192.224 -195.241.134.120 -77.243.183.92 -53.193.238.160 -83.4.229.104 -91.52.13.182 -59.88.79.99 -177.138.231.246 -84.244.18.20 -81.36.182.81 -60.10.247.252 -75.168.7.211 -89.155.203.172 -50.251.4.31 -222.0.0.102 -79.168.193.22 -95.86.230.196 -217.235.251.6 -187.255.237.97 -89.142.141.170 -177.95.14.136 -95.152.37.74 -201.211.225.122 -92.97.90.110 -96.240.84.172 -107.170.138.159 -152.238.65.16 -124.229.130.174 -201.208.21.151 -200.84.137.217 -89.182.123.180 -37.113.199.194 -198.91.147.54 -125.27.55.204 -81.155.43.125 -27.43.252.75 -181.29.63.54 -1.0.0.0 -193.161.15.78 -41.96.104.28 -100.65.121.11 -193.107.92.153 -209.160.123.53 -186.121.7.132 -87.8.219.205 -207.47.241.87 -213.179.208.77 -110.88.108.160 -69.65.254.34 -223.204.248.206 -112.81.12.8 -50.35.92.164 -209.165.141.252 -31.61.140.245 -200.75.116.199 -183.30.15.163 -80.106.197.192 -73.146.130.93 -121.223.199.60 -121.208.89.35 -186.95.154.86 -114.96.96.201 -190.77.76.253 -178.44.12.28 -176.195.241.216 -79.204.150.29 -186.147.61.75 -104.28.201.93 -155.138.233.252 -61.90.51.135 -179.43.169.226 -172.98.67.121 -109.43.2.138 -78.137.13.162 -84.135.89.49 -167.61.106.37 -115.135.47.10 -192.166.112.137 -52.169.229.251 -178.164.253.11 -139.194.44.166 -177.134.15.73 -66.235.1.218 -85.75.79.133 -27.34.28.186 -179.43.155.162 -58.160.139.253 -31.6.57.80 -177.17.121.175 -85.247.35.163 -94.34.176.169 -202.62.17.22 -84.13.116.48 -80.187.103.129 -50.54.85.174 -202.62.17.127 -47.88.79.118 -50.46.211.57 -79.53.221.91 -60.251.32.152 -1.189.117.58 -71.167.108.24 -88.3.193.105 -151.228.27.238 -88.217.180.11 -201.67.210.116 -201.210.86.95 -91.48.54.39 -86.177.158.37 -25.22.203.199 -125.66.41.200 -2.30.40.74 -114.79.52.218 -92.16.184.187 -60.50.198.153 -212.54.223.95 -90.56.25.32 -90.218.208.79 -2.146.174.242 -90.205.98.105 -181.28.27.4 -217.253.210.218 -190.146.5.134 -2.187.203.89 -80.215.178.13 -67.190.233.238 -125.60.156.168 -79.50.152.125 -187.142.223.82 -177.249.135.137 -5.137.233.47 -46.121.67.177 -46.19.137.78 -77.243.183.8 -186.95.47.222 -178.33.209.212 -66.87.96.76 -79.245.222.88 -2.85.61.39 -62.152.54.44 -209.121.232.187 -145.133.165.175 -118.209.235.194 -62.47.227.187 -84.251.64.249 -80.219.197.66 -180.140.31.185 -37.46.230.100 -181.113.211.83 -86.133.178.92 -98.253.214.36 -70.78.40.232 -77.117.100.177 -94.189.195.238 -37.215.59.175 -84.236.18.119 -66.55.152.52 -99.122.104.173 -37.6.243.83 -78.145.233.123 -167.61.77.246 -84.195.0.111 -151.238.89.113 -164.67.192.103 -173.28.195.191 -5.15.206.164 -191.33.243.231 -46.191.185.225 -128.71.196.136 -70.194.70.48 -128.71.134.54 -81.141.9.239 -186.244.85.121 -81.61.16.6 -186.183.166.200 -46.39.244.44 -197.202.208.42 -187.34.158.87 -178.222.148.59 -93.36.81.178 -80.236.18.96 -198.8.80.164 -67.198.179.36 -186.188.64.207 -67.238.252.38 -109.65.9.237 -146.160.55.12 -193.191.182.129 -201.229.79.158 -189.202.76.142 -198.8.80.218 -83.37.92.22 -66.87.98.165 -108.111.102.250 -192.3.141.136 -36.77.37.99 -5.133.254.230 -171.97.178.84 -67.236.80.43 -124.169.21.253 -77.49.129.46 -213.55.176.201 -72.105.146.83 -54.86.65.139 -217.249.21.32 -82.192.198.114 -213.87.225.27 -98.238.145.154 -50.49.0.1 -93.47.2.62 -101.100.174.138 -73.90.211.41 -112.162.109.20 -202.62.16.255 -101.98.191.129 -58.8.154.202 -92.142.11.171 -178.234.176.195 -116.89.60.24 -146.255.159.37 -186.90.184.149 -84.161.246.83 -95.30.48.155 -201.231.176.74 -197.202.236.30 -133.89.163.229 -62.183.126.179 -100.73.71.245 -80.200.250.228 -81.182.26.155 -186.228.140.191 -59.56.8.45 -91.67.130.158 -13.92.236.203 -91.221.65.6 -189.252.164.142 -159.29.194.242 -103.48.97.248 -91.121.70.66 -14.192.209.173 -195.154.65.167 -111.69.81.202 -68.168.178.12 -31.57.94.41 -118.209.110.212 -98.126.0.139 -148.198.187.153 -171.97.222.55 -109.8.200.248 -41.244.240.69 -164.40.228.250 -95.179.35.205 -74.240.79.103 -95.138.194.14 -31.44.183.14 -162.213.36.102 -178.44.236.21 -194.187.251.43 -70.112.32.101 -93.138.35.172 -185.19.27.157 -108.216.28.224 -171.221.163.237 -5.135.139.202 -73.52.143.18 -68.5.217.46 -86.42.137.31 -109.204.151.99 -212.183.108.70 -191.19.117.188 -220.136.53.97 -124.122.2.12 -81.134.82.110 -83.7.20.194 -177.98.228.211 -96.245.4.9 -100.71.157.158 -79.245.217.242 -37.136.53.104 -124.122.211.138 -95.89.176.134 -37.146.123.156 -79.21.245.28 -152.78.66.223 -203.66.126.1 -79.141.166.16 -87.185.17.73 -0.0.0.0 -92.127.3.155 -93.143.187.180 -141.30.247.183 -109.193.145.224 -176.31.180.203 -173.192.170.77 -2.97.122.142 -112.198.79.88 -82.60.11.203 -200.77.107.132 -46.44.41.97 -85.15.5.3 -126.12.1.77 -201.219.191.75 -203.212.152.229 -62.1.164.209 -71.68.5.90 -177.16.140.114 -187.112.20.93 -79.234.127.67 -95.239.99.126 -82.79.88.31 -37.146.190.113 -188.119.211.100 -104.129.28.242 -165.91.74.108 -213.219.104.114 -195.82.178.218 -76.97.197.140 -46.166.190.194 -84.86.23.22 -104.34.125.117 -77.105.50.252 -185.42.36.99 -178.217.115.50 -187.131.95.225 -87.242.14.89 -223.25.25.183 -175.100.142.47 -176.103.211.236 -93.138.71.210 -216.110.226.63 -79.131.176.130 -193.227.251.74 -83.185.84.90 -100.113.28.102 -108.65.141.214 -78.150.104.86 -186.144.225.108 -37.188.232.39 -57.131.89.131 -50.143.117.165 -124.170.19.167 -93.39.149.83 -37.201.227.156 -178.234.146.7 -79.200.222.225 -177.96.85.194 -36.86.63.180 -114.125.46.34 -178.32.26.185 -69.166.161.250 -188.213.169.227 -62.178.7.135 -5.141.221.183 -173.75.252.241 -70.196.129.23 -115.87.247.225 -113.254.169.220 -41.150.248.217 -95.30.80.59 -178.120.131.163 -192.77.248.5 -217.197.240.194 -91.185.53.129 -80.131.61.147 -75.168.58.165 -192.99.0.112 -83.43.246.222 -188.29.164.101 -95.17.247.131 -181.119.64.254 -178.222.24.255 -114.79.37.72 -95.236.166.88 -173.9.121.186 -46.246.19.242 -219.88.65.49 -79.67.123.101 -191.34.215.26 -79.197.191.41 -164.132.209.199 -92.110.52.208 -209.6.192.104 -101.185.87.56 -186.107.73.130 -74.100.47.75 -67.44.193.168 -96.225.148.137 -88.208.1.194 -109.10.42.135 -46.159.239.247 -109.208.182.118 -112.208.225.223 -37.113.160.11 -217.113.63.81 -77.56.46.95 -77.234.82.79 -184.20.11.173 -179.177.177.13 -93.204.227.82 -83.135.241.11 -115.188.71.106 -188.143.60.184 -219.79.190.210 -84.236.36.52 -109.43.2.109 -84.106.163.174 -85.26.186.30 -180.242.130.210 -95.211.155.225 -84.106.246.14 -24.156.31.73 -73.179.71.188 -176.58.136.154 -84.24.102.45 -1.0.0.0 -41.96.52.112 -167.160.164.214 -114.218.143.23 -210.22.178.170 -189.100.45.65 -82.12.235.3 -217.235.251.238 -92.80.28.97 -89.117.26.93 -181.194.27.123 -135.0.20.85 -177.45.131.88 -108.61.199.67 -219.79.24.240 -85.178.51.221 -86.212.5.83 -85.247.160.74 -5.94.119.65 -88.6.13.88 -186.108.112.216 -79.119.17.84 -78.61.48.176 -24.114.26.172 -88.231.29.243 -190.202.250.145 -80.106.197.207 -219.79.188.14 -50.153.150.172 -87.113.49.184 -188.186.39.140 -80.131.63.94 -174.36.220.106 -5.158.97.8 -83.5.160.224 -101.200.151.162 -213.104.46.32 -138.36.34.163 -62.4.196.196 -36.74.244.33 -97.127.52.128 -200.138.71.22 -71.167.191.109 -37.150.165.82 -173.192.170.67 -5.79.72.105 -109.43.2.140 -109.73.43.230 -112.215.123.148 -109.43.3.39 -79.208.122.196 -95.73.28.217 -46.142.16.204 -227.210.163.145 -145.28.145.152 -76.181.115.35 -96.226.61.13 -212.115.253.154 -78.8.125.79 -187.140.217.21 -176.209.217.252 -109.90.217.195 -67.182.144.108 -37.79.249.58 -68.193.116.242 -191.254.234.6 -209.95.50.25 -90.56.59.43 -177.132.187.142 -212.200.65.246 -84.154.93.193 -78.253.251.14 -2.218.67.174 -31.174.69.205 -77.77.50.63 -188.122.246.208 -128.78.135.164 -85.222.169.120 -79.245.193.198 -46.193.142.190 -83.39.92.86 -112.87.159.115 -186.82.72.175 -79.222.103.245 -46.166.190.194 -98.142.66.58 -179.156.218.183 -83.11.145.235 -79.245.220.195 -69.167.27.161 -93.137.124.147 -62.74.23.12 -69.141.154.86 -24.212.93.93 -98.101.237.46 -110.33.102.160 -139.0.138.197 -68.193.116.202 -189.211.246.193 -178.184.15.205 -219.59.135.164 -95.244.96.56 -105.225.199.114 -79.50.98.29 -190.200.240.27 -113.139.79.149 -117.0.49.88 -25.116.244.128 -110.168.232.220 -83.39.115.25 -93.57.249.216 -128.177.161.144 -83.60.172.49 -179.222.224.108 -71.29.26.245 -186.88.241.210 -79.204.180.184 -81.250.220.127 -120.140.240.116 -177.229.231.37 -190.207.94.113 -93.126.80.151 -190.142.31.90 -125.37.77.218 -99.247.170.15 -77.49.79.137 -70.215.7.228 -106.142.47.247 -178.127.253.18 -62.1.143.44 -190.203.65.246 -84.19.169.226 -83.7.114.111 -77.247.26.208 -188.129.213.220 -82.26.34.42 -79.133.142.93 -27.55.88.115 -176.253.217.115 -222.162.108.144 -203.184.40.202 -113.254.170.32 -40.76.82.173 -182.187.37.119 -178.93.48.46 -178.43.52.150 -184.162.58.31 -108.113.101.175 -112.210.6.172 -188.26.139.30 -191.33.33.18 -176.9.61.40 -199.19.95.129 -109.212.168.135 -88.187.138.71 -109.161.79.178 -68.246.194.124 -52.78.91.225 -88.106.253.43 -112.67.211.172 -113.254.168.101 -75.82.44.230 -46.147.91.137 -125.24.120.47 -87.164.217.139 -86.85.128.100 -188.233.89.176 -92.11.183.52 -118.210.113.6 -110.32.157.40 -178.149.46.197 -71.53.159.168 -82.66.165.132 -2.176.144.177 -54.81.224.18 -217.235.230.186 -223.204.248.96 -100.68.117.31 -66.169.148.98 -217.253.220.162 -79.236.253.201 -92.101.105.71 -96.49.76.100 -46.159.209.64 -77.52.137.36 -95.174.112.11 -92.0.231.128 -87.146.4.127 -65.35.47.185 -82.66.165.132 -109.169.168.151 -63.121.62.186 -93.140.224.115 -194.169.217.249 -83.13.133.86 -139.192.129.75 -200.84.68.224 -91.148.97.130 -77.171.22.122 -83.220.237.57 -95.81.205.65 -216.151.183.78 -93.38.167.117 -36.86.162.114 -87.178.175.168 -188.250.136.112 -77.119.128.97 -94.185.135.34 -36.74.239.195 -79.184.207.254 -200.109.59.231 -190.62.157.176 -41.96.104.28 -219.91.159.9 -5.138.127.54 -151.236.242.23 -188.98.192.159 -173.189.163.1 -100.78.98.103 -70.197.7.158 -82.197.214.31 -210.129.18.130 -24.79.178.91 -121.99.160.130 -24.231.17.254 -109.111.140.19 -93.104.169.149 -178.120.23.138 -31.132.225.205 -190.205.222.49 -186.89.165.251 -92.80.200.73 -71.70.226.95 -174.71.32.244 -93.168.213.17 -69.167.31.117 -50.120.8.21 -79.192.251.34 -85.76.79.28 -125.37.83.89 -5.147.125.65 -76.97.173.104 -184.5.8.134 -79.245.206.72 -41.174.166.196 -86.147.224.64 -88.77.1.157 -89.242.139.28 -111.88.27.168 -171.25.193.78 -91.48.63.226 -84.55.21.255 -177.133.223.80 -188.162.36.4 -32.150.40.90 -36.70.48.210 -200.68.240.42 -191.33.43.183 -192.170.1.4 -79.203.87.39 -186.88.186.16 -5.14.194.114 -198.18.1.51 -186.85.1.164 -67.140.213.8 -171.4.81.119 -163.157.186.231 -93.196.163.77 -14.192.209.137 -190.205.167.52 -62.98.108.210 -61.213.121.42 -87.112.242.103 -108.61.228.25 -198.27.82.134 -50.156.104.49 -54.89.21.44 -217.89.11.177 -66.188.53.149 -181.75.40.195 -151.28.180.184 -178.207.224.252 -199.30.185.2 -79.245.212.85 -213.151.0.82 -178.85.54.148 -46.176.112.27 -70.209.74.11 -83.60.174.72 -190.68.183.200 -70.79.24.157 -73.143.120.108 -171.4.184.140 -70.34.11.21 -178.216.252.11 -100.66.131.190 -218.145.173.108 -67.182.199.251 -85.139.217.55 -89.70.28.135 -171.96.168.30 -82.5.92.215 -5.156.4.175 -83.26.89.42 -41.142.153.188 -179.186.112.199 -78.98.214.170 -1.204.253.80 -5.156.124.215 -212.123.185.93 -90.194.75.240 -187.34.136.203 -81.111.228.164 -81.11.206.102 -188.18.15.180 -193.92.20.93 -109.188.124.7 -79.198.114.37 -196.211.119.214 -104.157.242.132 -94.0.38.32 -0.0.0.0 -184.75.213.134 -31.162.81.207 -100.81.35.197 -205.237.183.36 -50.153.151.49 -190.9.240.216 -189.132.24.237 -86.146.123.80 -46.165.246.200 -83.31.57.52 -97.126.38.56 -186.79.241.103 -223.227.246.32 -77.248.84.5 -181.24.35.51 -188.246.40.2 -62.43.212.93 -82.230.65.12 -171.97.198.46 -96.44.122.48 -109.77.182.203 -188.69.199.38 -105.5.197.77 -86.16.176.137 -121.211.101.176 -41.251.220.194 -124.148.118.48 -82.25.176.33 -174.136.99.162 -213.118.105.27 -62.176.8.215 -176.87.121.247 -188.18.15.64 -86.178.211.193 -155.254.235.24 -151.238.52.50 -83.22.61.216 -46.59.37.170 -82.52.158.131 -80.236.209.219 -199.127.55.171 -125.72.37.70 -118.208.109.196 -68.231.74.249 -78.35.157.127 -36.76.55.94 -189.107.206.81 -113.96.32.121 -64.145.76.167 -62.98.25.89 -109.88.137.172 -114.215.108.16 -109.93.2.133 -128.204.198.23 -211.136.222.57 -172.90.124.116 -96.244.12.80 -0.0.0.0 -199.202.216.171 -104.200.154.26 -24.38.155.231 -31.183.14.233 -190.239.149.101 -179.198.47.220 -190.203.238.156 -41.246.51.68 -91.93.11.153 -179.32.69.248 -2.96.241.150 -110.168.232.50 -67.177.15.50 -67.163.146.87 -213.139.53.46 -190.201.109.99 -93.210.125.203 -74.4.219.215 -80.215.178.74 -197.202.209.134 -190.140.129.211 -93.86.136.126 -68.206.138.97 -112.198.77.135 -121.208.89.35 -95.73.190.107 -181.162.55.198 -82.158.241.150 -77.51.66.64 -188.29.164.228 -71.175.110.253 -85.135.211.80 -189.232.134.204 -179.187.89.14 -95.99.238.195 -77.203.119.51 -80.106.197.69 -91.8.193.111 -93.73.125.152 -79.198.45.189 -62.68.98.92 -50.72.250.47 -171.97.189.86 -99.197.33.146 -188.4.50.14 -78.9.156.172 -177.39.37.65 -207.119.76.66 -76.173.208.181 -85.179.173.80 -109.43.3.230 -91.115.187.17 -79.151.244.92 -173.189.160.37 -62.176.8.215 -84.147.126.42 -79.245.195.228 -91.178.224.89 -151.49.75.194 -188.162.37.26 -190.68.183.200 -209.107.204.89 -73.7.122.117 -94.216.217.158 -187.200.123.61 -91.124.21.30 -81.110.133.126 -95.86.239.138 -189.202.78.78 -83.220.237.57 -177.207.114.240 -186.14.129.137 -49.66.57.41 -178.95.214.246 -88.198.76.188 -213.152.162.181 -173.74.166.197 -5.42.95.250 -23.19.79.130 -5.167.79.226 -86.81.69.156 -105.227.167.3 -179.199.129.201 -95.71.22.141 -81.35.54.190 -87.169.122.230 -104.200.151.23 -178.58.206.162 -178.234.8.212 -213.7.17.74 -95.183.85.115 -109.79.107.129 -82.74.167.14 -37.113.168.28 -128.71.79.146 -24.246.57.236 -122.151.50.134 -188.234.26.113 -202.29.213.22 -212.251.28.139 -80.183.101.157 -120.156.32.20 -80.237.22.69 -1.204.248.148 -151.64.1.25 -204.178.113.252 -86.17.238.232 -172.68.96.165 -193.92.113.47 -5.238.230.34 -84.147.120.84 -24.151.99.148 -41.33.235.119 -181.118.72.21 -31.208.121.209 -5.79.74.140 -96.44.187.26 -173.238.86.61 -37.113.168.57 -109.121.19.193 -0.0.0.0 -119.251.82.139 -188.87.142.99 -180.183.183.229 -186.89.49.29 -93.194.71.58 -36.75.130.218 -193.254.34.162 -85.1.132.170 -175.137.91.173 -156.211.222.209 -70.196.132.183 -105.237.83.32 -2.97.164.235 -41.250.166.187 -84.99.129.92 -86.185.14.75 -178.212.100.247 -94.66.57.27 -212.228.253.143 -78.245.193.210 -79.67.123.101 -52.78.24.7 -188.77.55.46 -109.43.0.75 -151.226.78.106 -189.24.151.35 -86.166.52.98 -81.43.191.176 -178.137.216.239 -103.43.148.10 -177.96.213.99 -171.96.167.73 -84.226.234.132 -190.199.197.254 -78.21.226.145 -167.60.134.211 -37.45.88.70 -37.145.232.126 -71.93.59.159 -84.236.82.138 -70.200.190.164 -79.169.141.40 -84.251.165.229 -95.24.91.53 -86.212.111.166 -81.132.37.244 -73.180.109.228 -193.92.20.93 -79.245.214.184 -108.232.181.15 -109.165.42.43 -113.254.169.19 -110.202.66.220 -190.186.112.3 -97.90.183.17 -71.91.70.113 -130.180.216.24 -201.242.162.244 -172.56.4.34 -41.138.68.56 -60.231.48.88 -179.232.147.95 -109.77.153.128 -198.50.221.149 -2.85.51.232 -79.117.71.64 -103.199.41.194 -123.3.163.71 -197.202.107.125 -95.239.99.126 -71.63.37.224 -151.225.135.113 -64.62.201.17 -188.168.190.74 -109.149.126.247 -70.190.28.26 -93.143.248.105 -82.131.68.200 -108.204.67.22 -93.127.48.67 -36.228.6.80 -24.218.234.20 -2.12.244.159 -223.207.119.134 -112.202.50.229 -203.206.89.35 -188.78.186.212 -178.234.246.44 -74.90.209.198 -201.208.98.13 -176.113.149.173 -176.84.26.59 -92.40.250.84 -217.249.1.121 -130.43.60.40 -104.157.135.129 -79.45.233.9 -151.236.241.194 -124.171.173.162 -5.139.222.77 -107.11.145.246 -109.43.1.135 -110.168.232.79 -85.178.193.205 -178.54.197.81 -122.104.159.157 -201.173.65.201 -76.64.18.82 -66.87.99.2 -125.24.120.37 -184.171.222.88 -5.135.108.204 -37.212.160.109 -67.80.146.83 -37.136.202.241 -31.10.148.162 -91.158.213.79 -206.222.164.91 -110.168.231.168 -104.207.136.107 -223.92.214.153 -199.241.147.35 -46.146.115.38 -250.31.16.246 -74.90.154.237 -177.240.12.199 -31.54.71.64 -42.61.252.62 -186.88.92.44 -50.124.59.224 -186.95.36.43 -199.48.242.61 -2.28.195.45 -109.227.38.172 -152.7.72.48 -186.92.248.179 -118.223.43.61 -89.78.254.207 -165.84.8.160 -178.64.4.120 -180.183.183.229 -190.66.153.127 -89.254.209.164 -212.21.25.27 -103.27.223.89 -206.248.163.100 -179.55.32.8 -83.30.209.69 -220.246.221.83 -188.108.111.118 -5.165.135.90 -91.63.19.8 -202.62.17.207 -91.7.22.201 -37.213.70.95 -42.2.227.111 -105.107.80.212 -67.162.167.86 -73.38.48.239 -220.85.248.156 -2.121.34.225 -50.120.10.162 -125.24.101.151 -201.209.130.155 -70.89.34.105 -142.161.114.127 -118.137.28.43 -110.184.11.142 -95.145.103.125 -73.211.90.130 -24.208.186.109 -197.203.5.205 -171.97.145.198 -14.186.213.191 -81.48.238.194 -70.174.30.142 -178.0.63.141 -120.180.45.219 -193.92.100.197 -2.99.34.210 -223.203.188.130 -178.157.238.33 -75.111.215.8 -84.236.59.214 -197.5.13.228 -188.245.241.79 -50.180.178.143 -78.169.234.167 -37.229.91.183 -91.237.77.7 -93.39.91.238 -88.25.138.131 -205.251.171.136 -1.0.0.0 -199.48.242.8 -178.43.58.190 -188.0.43.233 -5.140.202.3 -103.255.4.64 -46.46.208.61 -83.112.210.21 -0.0.0.0 -108.252.149.152 -46.185.48.82 -79.245.214.13 -123.63.112.110 -188.163.24.131 -178.45.76.81 -79.245.215.231 -95.236.129.178 -98.194.215.103 -37.78.85.207 -92.208.67.183 -72.60.12.140 -14.148.46.127 -201.29.97.210 -190.74.248.142 -120.59.90.202 -24.96.26.254 -85.244.118.150 -120.56.109.97 -201.210.10.223 -86.197.21.97 -195.37.133.6 -142.217.6.115 -75.142.1.84 -84.236.15.97 -41.96.38.253 -74.76.194.100 -107.191.46.128 -39.48.27.86 -86.70.223.212 -109.188.124.120 -171.96.167.186 -186.89.53.167 -95.24.235.213 -41.249.53.17 -14.213.195.165 -187.247.107.215 -188.223.250.197 -70.169.113.9 -77.231.219.47 -187.56.144.147 -166.137.246.16 -131.255.112.182 -97.127.74.43 -124.150.98.24 -110.168.231.182 -5.70.77.193 -2.85.58.108 -192.100.100.115 -212.90.62.251 -104.156.228.108 -222.228.188.6 -174.71.57.33 -117.200.205.85 -100.2.255.15 -91.61.93.48 -79.64.148.127 -141.237.243.236 -166.189.91.121 -91.44.232.13 -0.0.126.218 -217.235.240.122 -81.156.118.97 -91.127.16.235 -208.107.146.195 -188.159.173.160 -76.99.37.97 -190.38.186.76 -108.65.186.145 -42.112.94.187 -66.85.174.122 -178.120.157.184 -176.65.127.87 -182.182.109.245 -93.152.158.179 -188.69.196.255 -179.232.244.239 -78.51.17.255 -69.167.51.243 -172.79.72.216 -77.243.189.253 -83.149.45.42 -183.18.201.7 -54.172.149.177 -37.188.132.154 -79.245.220.203 -76.181.177.144 -198.8.80.218 -92.20.112.174 -90.181.200.180 -84.179.243.107 -36.77.18.75 -88.137.75.34 -5.141.203.27 -130.25.45.30 -109.147.94.141 -89.142.2.248 -80.39.236.96 -92.127.119.0 -82.18.233.59 -87.244.147.84 -202.62.17.151 -78.13.82.80 -91.182.134.93 -128.72.123.20 -89.245.109.97 -82.56.79.206 -178.162.217.130 -68.207.37.135 -77.48.31.3 -231.210.83.146 -79.204.139.188 -83.44.53.138 -60.205.112.102 -95.127.152.2 -85.113.39.64 -2.24.125.125 -88.206.141.108 -94.181.67.148 -62.113.206.249 -79.146.106.66 -195.238.101.211 -108.21.116.66 -79.70.51.138 -69.231.35.237 -217.235.237.26 -94.191.185.252 -85.51.145.189 -109.144.227.143 -71.238.202.231 -202.62.17.66 -87.189.140.13 -110.149.119.241 -99.241.126.136 -79.170.89.58 -190.36.92.202 -81.35.251.152 -186.183.180.97 -124.162.30.45 -94.64.205.245 -89.153.1.213 -77.67.46.89 -68.96.181.142 -68.101.63.60 -24.114.69.36 -171.96.171.253 -171.39.69.171 -216.244.74.178 -194.105.229.207 -83.245.240.17 -5.138.144.189 -216.151.184.103 -86.147.74.55 -46.254.11.158 -178.128.206.129 -59.57.222.232 -86.138.235.114 -84.161.253.213 -5.80.234.3 -45.32.232.66 -81.17.19.34 -2.187.200.29 -104.200.151.43 -188.18.15.195 -93.170.97.98 -171.7.219.199 -46.254.132.34 -31.10.148.162 -109.121.47.80 -192.99.62.23 -88.12.142.229 -5.42.77.196 -79.204.167.160 -184.151.61.218 -46.130.27.222 -5.12.220.50 -80.121.61.68 -184.97.246.75 -142.217.180.205 -117.84.187.192 -77.89.225.54 -188.113.168.4 -213.57.182.69 -179.26.100.83 -95.153.135.34 -93.169.30.86 -62.183.125.159 -196.224.51.163 -197.202.232.7 -2.121.188.157 -124.168.83.112 -84.154.93.193 -190.22.162.98 -188.77.145.114 -97.127.2.214 -151.16.21.252 -218.205.21.202 -82.19.92.224 -113.165.165.184 -188.82.75.227 -111.69.240.177 -2.62.37.83 -217.118.81.30 -96.46.203.225 -79.245.217.227 -223.204.241.22 -213.152.161.40 -62.68.119.27 -128.90.88.220 -93.208.114.181 -173.210.233.18 -90.214.193.0 -92.98.76.210 -59.172.143.195 -108.61.229.10 -92.147.156.172 -25.16.26.157 -95.46.98.50 -182.111.195.163 -92.246.191.31 -5.63.147.132 -189.179.175.181 -79.245.200.104 -31.6.57.80 -89.217.242.69 -188.73.192.62 -77.51.144.205 -201.209.91.12 -50.38.84.70 -68.252.8.213 -178.213.170.179 -88.169.104.241 -217.112.161.55 -190.21.155.130 -83.52.87.240 -186.116.227.215 -60.225.188.206 -183.39.64.25 -91.69.121.77 -112.111.128.3 -120.209.131.70 -65.129.56.69 -178.189.173.49 -24.0.101.211 -177.16.116.101 -92.134.34.180 -91.154.8.178 -186.82.153.43 -115.79.48.153 -197.229.46.7 -179.156.218.183 -90.29.101.248 -67.193.56.206 -77.57.13.122 -24.116.122.179 -50.46.213.211 -85.0.236.97 -5.28.20.179 -178.162.217.147 -100.71.65.247 -113.254.170.11 -95.17.250.151 -87.15.170.241 -179.222.224.235 -50.101.183.116 -190.77.90.242 -91.127.16.235 -89.143.141.4 -109.251.79.19 -77.168.163.194 -234.143.150.203 -212.183.107.208 -95.114.37.41 -171.149.79.56 -187.202.8.56 -118.90.37.15 -93.130.56.37 -222.164.214.15 -89.151.173.209 -108.20.213.143 -2.221.74.97 -117.207.5.212 -158.69.31.40 -95.21.79.107 -117.7.167.41 -58.182.120.211 -98.160.114.23 -85.76.68.236 -219.79.254.117 -84.52.183.80 -2.85.65.201 -188.82.231.177 -67.234.49.71 -81.157.210.221 -166.170.14.79 -95.236.128.89 -180.140.28.245 -188.36.48.170 -37.146.123.170 -79.245.204.42 -67.136.44.155 -2.31.43.78 -174.65.11.157 -50.203.141.242 -213.22.179.152 -109.205.253.56 -64.237.37.123 -75.140.152.181 -93.138.85.114 -188.107.62.61 -217.71.45.215 -61.195.99.101 -71.212.232.185 -152.234.187.32 -60.225.156.149 -72.38.6.170 -41.142.207.223 -82.27.233.79 -104.207.136.113 -184.151.61.186 -1.0.0.0 -86.31.57.106 -212.67.170.226 -99.229.64.113 -82.34.93.93 -88.78.18.175 -25.91.19.207 -184.75.213.133 -86.73.39.118 -78.207.218.25 -197.210.173.38 -24.45.172.109 -115.70.4.78 -37.24.154.229 -97.86.255.96 -188.166.147.168 -104.238.169.131 -84.133.115.69 -83.213.55.195 -73.52.242.44 -85.23.98.164 -167.133.202.239 -86.19.150.145 -124.122.109.4 -87.204.157.2 -49.145.71.12 -31.10.149.218 -88.254.126.246 -178.62.145.250 -73.203.113.197 -25.152.243.103 -50.46.245.151 -78.53.136.141 -178.195.56.130 -188.101.231.41 -81.157.210.186 -73.40.221.24 -105.184.10.230 -125.69.38.6 -109.157.141.252 -41.150.128.219 -79.117.53.240 -183.165.136.45 -66.76.255.133 -177.99.84.95 -88.22.86.253 -107.152.98.157 -186.79.38.60 -68.198.99.74 -67.71.36.206 -50.153.149.36 -78.26.188.205 -192.0.144.103 -213.7.32.192 -87.158.143.162 -2.62.52.177 -186.92.255.117 -151.249.96.73 -190.38.23.220 -107.170.172.93 -151.238.198.76 -72.174.209.234 -105.228.121.62 -86.31.128.135 -2.85.59.104 -187.170.157.129 -189.149.6.216 -94.66.57.230 -201.243.226.15 -112.215.123.37 -177.5.76.109 -37.24.158.191 -197.87.208.47 -117.194.54.107 -171.39.68.129 -186.89.83.70 -50.88.40.168 -92.124.8.63 -190.207.194.163 -120.195.96.242 -188.222.36.28 -135.23.90.208 -121.35.17.81 -253.167.138.14 -179.212.185.123 -176.8.179.202 -179.55.36.161 -181.208.26.200 -177.148.198.206 -151.95.16.217 -75.197.252.114 -37.188.229.58 -78.111.190.161 -190.36.128.114 -70.54.86.241 -189.157.4.253 -85.114.175.186 -84.104.98.246 -194.19.240.109 -84.196.100.202 -46.246.150.244 -123.138.32.232 -201.141.33.181 -88.207.220.253 -93.138.19.90 -113.225.18.114 -46.142.50.74 -120.173.14.19 -93.107.13.106 -176.84.165.12 -2.103.0.246 -62.205.123.238 -100.100.113.173 -79.251.9.3 -84.177.180.24 -18.111.126.201 -81.51.251.96 -112.198.77.197 -78.21.38.182 -217.105.20.145 -107.191.56.184 -36.236.88.233 -105.226.169.107 -89.168.6.239 -250.31.16.246 -125.125.36.49 -104.156.228.152 -94.254.224.32 -109.221.204.226 -84.216.199.63 -94.137.218.19 -84.181.239.37 -84.25.136.77 -109.43.2.140 -79.245.208.163 -75.159.1.100 -181.121.80.135 -85.102.227.198 -79.245.194.135 -178.1.153.222 -113.243.203.175 -188.146.70.112 -98.167.22.186 -178.42.44.41 -75.159.1.100 -178.1.24.241 -110.168.231.134 -89.99.193.144 -49.181.182.80 -91.179.166.223 -110.168.232.249 -98.117.192.12 -123.67.81.131 -0.0.0.2 -37.54.21.113 -162.216.46.35 -95.139.206.250 -160.76.210.181 -80.107.16.52 -92.148.52.184 -109.201.154.189 -65.158.198.6 -92.144.208.168 -223.204.250.55 -2.85.179.46 -87.123.106.67 -108.252.164.33 -109.182.189.41 -207.164.79.45 -173.29.144.124 -185.3.135.178 -94.145.151.183 -49.195.99.89 -87.185.13.113 -47.17.155.157 -118.136.158.190 -68.118.145.246 -86.194.143.131 -37.48.86.160 -83.100.202.42 -95.153.130.116 -24.189.254.177 -107.191.32.198 -219.88.65.49 -182.165.47.108 -103.238.131.9 -176.65.127.10 -71.179.109.158 -84.198.176.240 -71.34.71.125 -81.18.49.210 -185.104.214.53 -46.59.177.107 -177.96.135.126 -68.4.154.250 -212.115.253.74 -78.96.117.209 -200.164.98.231 -81.37.241.98 -60.240.54.44 -31.10.151.14 -65.112.8.201 -36.77.59.253 -200.77.107.132 -188.73.192.47 -216.177.129.122 -70.213.5.94 -94.205.1.88 -189.165.50.103 -84.19.166.58 -178.43.50.78 -92.37.17.206 -31.17.255.251 -212.72.144.126 -212.251.18.47 -105.156.14.51 -174.98.201.21 -112.102.44.158 -114.96.28.171 -174.50.176.242 -193.161.15.76 -128.75.199.166 -87.111.6.35 -86.148.36.53 -66.115.130.122 -177.134.174.140 -37.190.51.8 -109.43.1.168 -108.61.50.107 -37.24.158.147 -171.149.2.249 -141.237.253.19 -79.208.102.36 -213.122.124.131 -87.109.16.70 -177.81.235.242 -95.183.85.115 -5.156.133.110 -37.75.166.253 -189.83.228.101 -82.249.77.22 -92.26.77.28 -92.110.97.56 -36.255.113.156 -93.141.39.214 -200.82.195.152 -130.43.53.14 -186.167.32.27 -46.0.46.61 -177.11.141.37 -71.209.2.107 -177.9.79.75 -83.11.239.209 -114.244.45.88 -75.117.39.181 -186.79.30.137 -46.158.242.81 -2.127.225.136 -202.62.16.49 -85.26.241.7 -151.15.56.129 -24.98.68.43 -190.73.253.30 -208.54.64.211 -23.99.90.8 -84.6.62.25 -177.229.41.202 -80.202.76.7 -201.19.191.32 -5.79.74.235 -37.140.14.92 -121.45.198.248 -202.62.16.168 -87.152.195.142 -183.12.166.251 -95.18.60.88 -60.50.60.169 -138.201.65.88 -72.173.141.238 -83.4.184.111 -98.225.134.65 -191.33.23.113 -200.8.77.51 -170.215.41.19 -83.60.174.72 -176.11.151.238 -98.100.240.64 -213.151.0.38 -156.57.77.35 -83.30.246.219 -199.193.119.32 -176.82.69.50 -95.135.90.160 -155.138.230.18 -70.106.182.230 -79.67.199.149 -95.84.130.70 -181.16.74.62 -71.175.110.253 -87.113.166.62 -86.127.154.130 -108.26.55.253 -36.83.55.86 -189.156.67.120 -72.39.10.246 -87.117.9.241 -69.80.100.38 -100.100.0.49 -174.19.164.170 -213.49.92.12 -80.83.238.50 -100.68.67.248 -207.191.212.133 -79.245.218.167 -195.154.168.236 -122.49.137.82 -186.118.34.106 -46.19.97.206 -190.204.35.44 -116.210.115.55 -70.196.193.231 -86.61.8.196 -139.192.136.198 -89.180.26.30 -178.42.43.193 -177.107.242.133 -68.119.227.133 -91.48.37.22 -81.24.212.14 -190.200.114.238 -70.173.239.125 -186.46.226.17 -95.17.250.32 -77.248.0.110 -101.114.75.142 -91.61.71.110 -62.87.146.101 -78.88.29.1 -119.224.86.171 -37.54.65.152 -193.92.188.195 -98.157.39.248 -83.87.161.55 -92.19.38.229 -115.188.90.227 -178.184.16.210 -2.62.56.197 -91.226.57.133 -188.29.164.13 -70.208.137.58 -109.227.1.38 -117.192.218.30 -70.30.52.78 -88.19.208.245 -151.25.236.22 -37.113.168.102 -178.115.131.56 -96.225.143.105 -110.159.31.31 -185.50.48.82 -197.5.8.74 -84.222.70.181 -201.83.108.195 -41.130.120.57 -122.195.1.91 -146.160.55.12 -172.78.212.255 -64.145.94.121 -50.48.190.138 -78.129.221.48 -88.200.137.188 -111.241.99.206 -81.158.30.57 -190.183.117.23 -92.238.165.41 -178.62.243.138 -50.46.208.60 -1.144.96.234 -1.129.96.155 -78.90.220.111 -91.48.48.168 -24.253.205.115 -187.143.59.112 -186.14.128.205 -187.56.154.88 -171.97.201.79 -178.254.185.195 -92.246.211.241 -128.72.238.171 -96.240.81.144 -89.212.48.17 -185.9.62.204 -110.77.225.169 -24.119.39.222 -85.76.115.206 -172.56.15.181 -88.83.169.175 -36.77.55.167 -84.19.165.213 -37.146.191.103 -37.146.77.45 -188.77.156.44 -173.74.166.197 -86.212.4.36 -189.114.205.176 -79.204.147.215 -79.192.207.150 -193.167.1.101 -202.62.17.0 -179.7.219.137 -1.0.0.0 -2.182.206.105 -62.74.23.241 -176.14.89.40 -99.228.124.143 -142.0.134.7 -176.31.53.252 -24.57.236.248 -79.218.14.76 -70.75.192.84 -87.143.228.125 -85.178.89.74 -82.129.188.193 -68.99.85.75 -47.55.212.189 -111.240.207.209 -24.114.64.51 -37.78.112.147 -98.167.118.75 -79.206.175.208 -197.202.255.157 -189.5.55.70 -218.59.140.116 -58.178.1.156 -81.82.161.242 -186.87.101.123 -217.122.16.169 -125.253.100.213 -87.113.152.249 -104.156.228.100 -31.54.228.197 -212.54.196.165 -101.160.17.69 -80.213.10.20 -66.102.133.150 -188.146.72.127 -64.233.245.39 -154.5.159.216 -210.55.212.38 -176.193.156.136 -94.23.213.47 -213.229.235.159 -113.91.239.76 -88.237.179.137 -25.161.124.26 -83.23.227.159 -5.63.147.100 -220.76.226.249 -147.86.207.1 -50.168.103.161 -176.65.127.119 -95.30.21.96 -193.92.113.47 -25.20.113.106 -112.37.27.20 -176.209.243.162 -95.211.212.195 -58.8.154.35 -94.181.34.121 -174.70.46.51 -172.56.32.22 -178.255.69.59 -92.48.112.74 -36.69.21.247 -187.189.254.189 -212.26.187.40 -183.12.164.74 -95.145.103.119 -93.113.244.166 -143.176.138.223 -109.192.225.106 -46.249.59.220 -95.211.188.25 -18.111.102.54 -178.184.26.58 -187.188.14.229 -46.130.12.191 -91.105.92.239 -95.215.156.54 -2.240.16.118 -46.217.85.84 -46.10.123.227 -108.84.14.1 -178.198.242.133 -2.223.51.94 -18.111.109.172 -71.100.135.84 -85.75.79.133 -217.118.79.46 -202.62.16.34 -2.248.159.250 -13.93.150.42 -77.98.223.82 -75.117.202.183 -151.72.136.1 -50.153.150.144 -109.93.159.179 -58.8.154.35 -192.95.32.112 -37.140.17.102 -62.87.191.182 -80.135.239.44 -112.198.103.161 -199.48.243.62 -5.248.192.239 -186.94.109.177 -118.140.106.58 -93.138.115.72 -172.111.156.67 -109.210.209.73 -213.21.47.192 -85.99.37.229 -37.229.184.145 -64.150.245.177 -95.89.215.8 -209.93.154.77 -45.56.108.177 -78.37.253.157 -116.252.202.50 -82.237.87.66 -79.208.99.94 -109.93.237.13 -95.84.130.70 -50.153.150.252 -109.93.229.2 -74.110.18.17 -223.73.103.231 -1.151.121.137 -188.17.192.99 -216.231.140.113 -83.153.141.90 -49.49.35.156 -105.227.35.18 -176.152.32.37 -95.114.2.51 -79.136.64.123 -173.34.203.76 -109.43.2.115 -50.132.197.203 -105.225.29.41 -188.222.188.84 -178.120.161.243 -78.21.195.37 -43.165.193.4 -79.245.209.189 -182.39.244.18 -117.231.147.111 -188.69.196.84 -68.195.171.102 -95.232.80.9 -46.55.162.158 -125.162.110.180 -46.189.28.35 -83.5.182.110 -5.138.219.104 -31.44.183.14 -92.37.143.70 -83.149.45.208 -37.146.123.156 -107.170.90.53 -69.178.106.243 -77.105.61.201 -98.227.60.68 -100.90.0.219 -69.80.98.175 -181.95.86.188 -94.209.34.7 -168.1.6.18 -5.141.221.248 -79.50.98.29 -2.101.114.120 -67.63.55.34 -79.245.208.90 -31.132.225.153 -109.88.143.236 -186.83.12.194 -87.96.161.171 -81.162.122.102 -148.198.187.141 -70.89.142.142 -82.227.229.180 -94.180.197.48 -76.170.53.72 -198.252.123.121 -82.139.112.23 -178.65.220.234 -112.111.83.41 -79.208.119.139 -84.196.55.99 -169.1.121.116 -212.112.150.250 -55.134.238.99 -112.67.211.172 -5.141.221.96 -69.7.90.64 -108.61.196.218 -109.121.21.84 -95.103.165.22 -75.151.200.156 -163.172.137.241 -178.49.192.105 -83.16.104.70 -104.238.134.31 -184.43.40.204 -152.78.156.223 -62.158.145.34 -81.11.198.166 -107.191.32.195 -5.14.202.22 -77.253.40.105 -37.205.63.243 -178.234.31.36 -81.240.219.181 -91.214.131.89 -79.200.67.185 -5.175.208.124 -2.139.127.149 -2.62.14.71 -79.204.144.230 -98.207.141.82 -197.37.183.200 -25.69.38.113 -5.82.242.101 -82.141.118.195 -203.206.37.169 -108.53.251.199 -186.35.252.4 -141.255.15.154 -72.202.146.227 -186.188.89.194 -68.111.91.91 -188.67.72.26 -90.131.191.120 -94.21.162.25 -187.230.36.79 -5.81.250.60 -89.212.99.205 -87.245.50.14 -194.44.207.38 -109.111.243.109 -202.62.17.19 -198.8.80.164 -190.139.245.143 -209.202.7.202 -68.204.242.231 -92.28.233.187 -201.29.108.171 -36.77.19.108 -99.4.120.232 -78.85.5.166 -217.88.3.79 -180.252.111.99 -2.99.213.60 -68.118.69.220 -80.41.226.120 -5.143.190.221 -0.0.0.0 -89.254.225.194 -191.184.26.86 -122.82.164.84 -69.143.54.161 -78.43.172.91 -89.240.86.71 -110.166.247.71 -213.151.0.135 -71.229.244.243 -188.16.237.62 -93.204.234.163 -173.230.77.55 -68.169.143.146 -217.14.178.36 -95.211.184.197 -81.157.210.221 -37.14.20.75 -86.135.18.75 -100.88.8.110 -152.115.56.228 -79.133.144.79 -93.143.193.80 -77.49.142.238 -188.18.14.171 -151.250.50.227 -24.54.240.178 -201.29.103.139 -71.7.113.19 -122.82.1.124 -106.69.14.251 -202.159.132.94 -50.35.92.164 -115.229.86.166 -176.115.8.183 -109.165.42.43 -24.122.223.250 -201.243.107.40 -41.224.171.232 -88.27.211.144 -173.182.128.9 -95.46.98.50 -85.155.6.145 -77.243.183.116 -151.238.36.143 -58.174.48.97 -216.186.236.171 -79.245.215.220 -192.198.202.218 -101.39.46.97 -181.25.4.150 -94.197.120.56 -173.221.226.116 -188.54.228.4 -176.109.8.50 -92.133.138.44 -31.162.230.126 -37.190.51.1 -71.83.111.138 -97.88.161.169 -178.47.182.195 -85.59.90.160 -95.55.43.88 -121.219.36.217 -72.213.26.102 -201.248.113.36 -25.80.14.76 -91.48.44.193 -212.251.18.47 -177.39.36.104 -174.35.172.33 -82.39.255.68 -190.22.239.126 -65.94.153.250 -107.170.198.224 -2.234.147.237 -5.151.152.147 -179.55.35.142 -67.174.42.236 -46.229.173.231 -14.192.212.169 -94.69.53.0 -31.23.81.184 -105.1.203.194 -79.20.35.156 -188.78.64.145 -92.241.152.111 -90.255.187.231 -190.38.39.114 -187.223.48.111 -201.29.103.127 -46.142.44.83 -5.43.176.207 -84.18.235.14 -87.185.2.181 -186.66.52.24 -89.153.94.121 -202.67.37.42 -213.151.3.243 -110.17.0.246 -45.32.129.168 -108.204.225.33 -31.11.93.241 -197.7.35.83 -86.173.80.107 -100.68.86.132 -200.75.242.225 -151.95.16.217 diff --git a/iguana/confs/GMC_peers.txt b/iguana/confs/GMC_peers.txt index 88c00ba9c..db385322c 100644 --- a/iguana/confs/GMC_peers.txt +++ b/iguana/confs/GMC_peers.txt @@ -1,26 +1,8 @@ -5.196.20.189 -45.32.1.137 -104.255.67.131 -104.236.84.230 -142.4.218.175 -58.168.10.110 -101.173.217.38 -194.135.81.138 -80.229.155.158 -85.214.23.49 -104.168.148.143 46.105.118.15 -198.27.97.172 -101.173.200.202 89.36.212.56 -45.48.9.204 -104.172.24.79 -85.25.200.157 -216.146.143.177 -203.7.43.162 -101.173.197.85 +85.214.23.49 +194.135.81.138 111.99.55.252 -192.52.166.35 -193.192.37.135 -209.126.119.209 -155.254.49.27 +104.172.24.79 +104.236.84.230 +104.255.67.131 diff --git a/iguana/confs/KMD_peers.txt b/iguana/confs/KMD_peers.txt new file mode 100644 index 000000000..816f4ffa1 --- /dev/null +++ b/iguana/confs/KMD_peers.txt @@ -0,0 +1,3 @@ +176.9.26.39 +5.9.102.210 +78.47.196.146 diff --git a/iguana/confs/SXC_peers.txt b/iguana/confs/SXC_peers.txt new file mode 100644 index 000000000..30a2a2bc4 --- /dev/null +++ b/iguana/confs/SXC_peers.txt @@ -0,0 +1,11 @@ +104.238.221.17:16814 +148.163.102.28:16814 +167.160.36.152:16814 +192.227.158.136:16814 +213.46.197.237:16814 +87.204.149.94:16814 +45.43.26.103:16814 +172.110.18.177:16814 +172.110.18.178:16814 +185.116.238.204:16814 +84.242.207.225:16814 diff --git a/iguana/confs/TAZ_peers.txt b/iguana/confs/TAZ_peers.txt new file mode 100644 index 000000000..816f4ffa1 --- /dev/null +++ b/iguana/confs/TAZ_peers.txt @@ -0,0 +1,3 @@ +176.9.26.39 +5.9.102.210 +78.47.196.146 diff --git a/iguana/confs/UNO_peers.txt b/iguana/confs/UNO_peers.txt index 1be6bbfac..67210bb1d 100644 --- a/iguana/confs/UNO_peers.txt +++ b/iguana/confs/UNO_peers.txt @@ -1,8 +1,8 @@ 195.154.223.134 -216.146.143.177 -173.183.179.144 -144.76.176.12 -87.189.45.29 -188.138.94.6 -144.76.239.66 -144.76.64.123 +85.25.217.233 +104.172.24.79 +188.165.42.51 +45.32.244.201 +52.23.179.46 +192.95.29.72 +185.50.213.123 diff --git a/iguana/exchanges/bitcoin.c b/iguana/exchanges/bitcoin.c index 89b6ce232..8370f9523 100755 --- a/iguana/exchanges/bitcoin.c +++ b/iguana/exchanges/bitcoin.c @@ -144,14 +144,6 @@ int32_t bitcoin_priv2wif(char *wifstr,bits256 privkey,uint8_t addrtype) return((int32_t)strlen(wifstr)); } -int32_t iguana_validatesigs(struct iguana_info *coin,struct iguana_msgvin *vin) -{ - // multiple coins - // ro -> vouts collision, purgeable - // - return(0); -} - #ifdef bitcoincancalulatebalances uint64_t bitcoin_parseunspent(struct iguana_info *coin,struct bitcoin_unspent *unspent,double minconfirms,char *account,cJSON *item) { diff --git a/iguana/exchanges777.h b/iguana/exchanges777.h index 1b713c8df..3475c72a6 100755 --- a/iguana/exchanges777.h +++ b/iguana/exchanges777.h @@ -83,10 +83,10 @@ struct exchange_info struct instantdex_msghdr { - struct acct777_sig sig __attribute__((packed)); + struct acct777_sig sig; // __attribute__((packed)) char cmd[8]; uint8_t serialized[]; -} __attribute__((packed)); +}; // __attribute__((packed)) #define NXT_ASSETID ('N' + ((uint64_t)'X'<<8) + ((uint64_t)'T'<<16)) // 5527630 #define INSTANTDEX_ACCT "4383817337783094122" diff --git a/iguana/genbtcloop8 b/iguana/genbtcloop8 new file mode 100755 index 000000000..3fccf5b5c --- /dev/null +++ b/iguana/genbtcloop8 @@ -0,0 +1,6 @@ +while true +do +../agents/iguana coins/genbtc8.json +sleep 3 +done + diff --git a/iguana/iguana777.c b/iguana/iguana777.c index 05902a5e2..36ab9a16e 100755 --- a/iguana/iguana777.c +++ b/iguana/iguana777.c @@ -27,8 +27,10 @@ struct iguana_info *iguana_coinfind(char *symbol) struct iguana_info *coin=0; uint32_t symbolcrc; struct supernet_info *myinfo = SuperNET_MYINFO(0); while ( myinfo->allcoins_being_added != 0 ) { - printf("wait for coinadd to complete, OK if rare\n"); - sleep(1); + sleep(3); + if ( myinfo->allcoins_being_added != 0 ) + printf("wait for coinadd to complete, OK if rare\n"); + sleep(3); } symbolcrc = calc_crc32(0,symbol,(int32_t)strlen(symbol)); //portable_mutex_lock(&myinfo->allcoins_mutex); @@ -55,7 +57,7 @@ struct iguana_info *iguana_coinadd(char *symbol,char *name,cJSON *argjson,int32_ } else { - coin->chain = iguana_chainfind((char *)symbol,argjson,1); + coin->chain = iguana_chainfind(myinfo,(char *)symbol,argjson,1); coin->peers = calloc(1,sizeof(*coin->peers)); for (j=0; jpeers->topmetrics[i] = sortbuf[i*2]; ind = (int32_t)sortbuf[i*2 +1]; - coin->peers->ranked[i] = &coin->peers->active[ind]; + coin->peers->ranked[i] = addr = &coin->peers->active[ind]; if ( sortbuf[i*2] > SMALLVAL && (double)i/n > .8 && (time(NULL) - addr->ready) > 77 ) slowest = coin->peers->ranked[i]; //printf("(%.5f %s) ",sortbuf[i*2],coin->peers->ranked[i]->ipaddr); @@ -241,7 +243,8 @@ uint32_t iguana_updatemetrics(struct supernet_info *myinfo,struct iguana_info *c printf("new peers.txt %ld vs (%s) %ld (%s)\n",ftell(fp),fname,(long)OS_filesize(fname),GLOBAL_CONFSDIR); fclose(fp); OS_renamefile(fname,oldfname); - OS_copyfile(tmpfname,fname,1); + OS_renamefile(tmpfname,fname); + //OS_copyfile(tmpfname,fname,1); } else fclose(fp); } else @@ -265,23 +268,37 @@ void iguana_emitQ(struct iguana_info *coin,struct iguana_bundle *bp) queue_enqueue("emitQ",&emitQ,&ptr->DL,0); } -void iguana_bundleQ(struct iguana_info *coin,struct iguana_bundle *bp,int32_t timelimit) +void iguana_bundleQ(struct supernet_info *myinfo,struct iguana_info *coin,struct iguana_bundle *bp,int32_t timelimit) { - struct iguana_helper *ptr; - if ( 0 && bp->queued == 0 && bp->emitfinish <= 1 && iguana_bundleready(coin,bp,0) == bp->n ) + struct iguana_helper *ptr; struct iguana_bundle *tmp; int32_t i,n = 0; + if ( 0 && bp->queued == 0 && bp->emitfinish <= 1 && iguana_bundleready(myinfo,coin,bp,0) == bp->n ) printf("bundle.[%d] is ready\n",bp->hdrsi); - bp->queued = (uint32_t)time(NULL); - ptr = mycalloc('q',1,sizeof(*ptr)); - ptr->allocsize = sizeof(*ptr); - ptr->coin = coin; - ptr->bp = bp, ptr->hdrsi = bp->hdrsi; - ptr->type = 'B'; - ptr->starttime = (uint32_t)time(NULL); - ptr->timelimit = timelimit; - coin->numbundlesQ++; - if ( 0 && bp->hdrsi > 170 ) - printf("%s %p bundle.%d[%d] ht.%d emitfinish.%u\n",coin->symbol,bp,ptr->hdrsi,bp->n,bp->bundleheight,bp->emitfinish); - queue_enqueue("bundlesQ",&bundlesQ,&ptr->DL,0); + if ( bp->queued != 0 ) + return; + for (i=n=0; ibundlescount; i++) + { + if ( (tmp= coin->bundles[i]) != 0 && tmp->queued != 0 ) + n++; + } + if ( n < coin->MAXBUNDLES ) + { + bp->queued = (uint32_t)time(NULL); + ptr = mycalloc('q',1,sizeof(*ptr)); + ptr->allocsize = sizeof(*ptr); + ptr->coin = coin; + ptr->bp = bp, ptr->hdrsi = bp->hdrsi; + ptr->type = 'B'; + ptr->starttime = (uint32_t)time(NULL); + ptr->timelimit = timelimit; + coin->numbundlesQ++; + // printf("%s.%d %p bundle.%d[%d] ht.%d emitfinish.%u\n",coin->symbol,n,bp,ptr->hdrsi,bp->n,bp->bundleheight,bp->emitfinish); + queue_enqueue("bundlesQ",&bundlesQ,&ptr->DL,0); + } + else + { + bp->queued = 0; + //printf("MAXBUNDLES.%d reached.%d\n",coin->MAXBUNDLES,n); + } } void iguana_validateQ(struct iguana_info *coin,struct iguana_bundle *bp) @@ -302,7 +319,7 @@ void iguana_validateQ(struct iguana_info *coin,struct iguana_bundle *bp) }*/ } -int32_t iguana_emitfinished(struct iguana_info *coin,int32_t queueincomplete) +int32_t iguana_emitfinished(struct supernet_info *myinfo,struct iguana_info *coin,int32_t queueincomplete) { struct iguana_bundle *bp; int32_t i,n = 0; for (i=0; ibundlescount-1; i++) @@ -312,7 +329,7 @@ int32_t iguana_emitfinished(struct iguana_info *coin,int32_t queueincomplete) if ( bp->emitfinish > 1 ) n++; else if ( bp->emitfinish == 0 && bp->queued == 0 ) - iguana_bundleQ(coin,bp,1000); + iguana_bundleQ(myinfo,coin,bp,1000); } } return(n); @@ -371,7 +388,7 @@ int32_t iguana_helperA(struct supernet_info *myinfo,struct iguana_info *coin,int return(-1); } //printf("helperid.%d validate gen utxo.[%d] utxofinish.%u\n",helperid,bp->hdrsi,bp->utxofinish); - if ( strcmp("BTC",coin->symbol) == 0 || iguana_bundlevalidate(coin,bp,0) == bp->n ) // + if ( iguana_bundlevalidate(myinfo,coin,bp,0) == bp->n ) // { retval = 0; if ( bp->utxofinish > 1 || (retval= iguana_spendvectors(myinfo,coin,bp,&bp->ramchain,0,bp->n,convertflag,0)) >= 0 ) @@ -387,7 +404,7 @@ int32_t iguana_helperA(struct supernet_info *myinfo,struct iguana_info *coin,int else { printf("error validating.[%d], restart iguana\n",bp->hdrsi); - exit(-1); + iguana_exit(myinfo,bp); } return(num); } @@ -436,9 +453,9 @@ void iguana_update_balances(struct iguana_info *coin) { iguana_volatilespurge(coin,&bp->ramchain); sprintf(fname,"%s/%s/accounts/debits.%d",GLOBAL_DBDIR,coin->symbol,bp->bundleheight); - OS_removefile(fname,0); + OS_removefile(fname,0); sprintf(fname,"%s/%s/accounts/lastspends.%d",GLOBAL_DBDIR,coin->symbol,bp->bundleheight); - OS_removefile(fname,0); + OS_removefile(fname,0); iguana_volatilesalloc(coin,&bp->ramchain,0);//i < hdrsi); } printf("accounts files purged\n"); @@ -466,6 +483,15 @@ void iguana_update_balances(struct iguana_info *coin) sleep(3); }// else printf("skip flush when max.%d and orig.%d\n",max,coin->origbalanceswritten); } + else + { + for (i=0; ibundles[i]) != 0 && bp != coin->current ) + { + iguana_volatilespurge(coin,&bp->ramchain); + iguana_volatilesmap(coin,&bp->ramchain); + } + } } int32_t iguana_utxogen(struct supernet_info *myinfo,struct iguana_info *coin,int32_t helperid,int32_t convertflag) @@ -476,8 +502,6 @@ int32_t iguana_utxogen(struct supernet_info *myinfo,struct iguana_info *coin,int printf("skip utxogen as spendvectorsaved.%u\n",coin->spendvectorsaved); return(0); } - //if ( (incr= IGUANA_NUMHELPERS) > 8 ) - // incr = 8; incr = IGUANA_NUMHELPERS; max = coin->bundlescount; if ( coin->bundles[max-1] == coin->current || coin->bundles[max-1] == 0 || (coin->bundles[max-1] != 0 && coin->bundles[max-1]->emitfinish <= 1) ) @@ -490,9 +514,30 @@ int32_t iguana_utxogen(struct supernet_info *myinfo,struct iguana_info *coin,int } while ( (n= iguana_utxofinished(coin)) < max ) { - printf("helperid.%d utxofinished.%d vs %d\n",helperid,n,max); + printf("helperid.%d %s utxofinished.%d vs %d\n",helperid,coin->symbol,n,max); sleep(IGUANA_NUMHELPERS+3); } + /*if ( helperid < incr ) + { + for (hdrsi=helperid; hdrsibundles[hdrsi]) == 0 ) + { + printf("unexpected null bp for [%d]\n",hdrsi); + continue; + } + if ( iguana_bundlevalidate(myinfo,coin,bp,0) != bp->n ) + { + printf("validate.[%d] error. refresh page or restart iguana and it should regenerate\n",bp->hdrsi); + iguana_exit(myinfo); + } // else printf("%s helperid.%d validated.[%d]\n",coin->symbol,helperid,hdrsi); + } + } + while ( iguana_validated(coin) < max || iguana_utxofinished(coin) < max ) + { + printf("%s helperid.%d waiting for spendvectorsaved.%u v.%d u.%d b.%d vs max.%d\n",coin->symbol,helperid,coin->spendvectorsaved,iguana_validated(coin),iguana_utxofinished(coin),iguana_balancefinished(coin),max); + sleep(2*IGUANA_NUMHELPERS+3); + }*/ if ( helperid < incr ) { for (hdrsi=helperid; hdrsisymbol); iguana_update_balances(coin); - printf("iguana_update_balances completed\n"); + printf("%s iguana_update_balances completed\n",coin->symbol); if ( 1 ) { for (i=0; ibalanceflush != 0 ) sleep(3); - if ( helperid < incr ) - { - for (hdrsi=helperid; hdrsibundles[hdrsi]) == 0 ) - { - printf("unexpected null bp for [%d]\n",hdrsi); - continue; - } - if ( iguana_bundlevalidate(coin,bp,0) != bp->n ) - { - printf("validate.[%d] error. refresh page or restart iguana and it should regenerate\n",bp->hdrsi); - exit(-1); - } // else printf("%s helperid.%d validated.[%d]\n",coin->symbol,helperid,hdrsi); - } - } - while ( iguana_validated(coin) < max || iguana_utxofinished(coin) < max ) - { - printf("%s helperid.%d waiting for spendvectorsaved.%u v.%d u.%d b.%d vs max.%d\n",coin->symbol,helperid,coin->spendvectorsaved,iguana_validated(coin),iguana_utxofinished(coin),iguana_balancefinished(coin),max); - sleep(2*IGUANA_NUMHELPERS+3); - } //printf("helper.%d check validates\n",helperid); //incr = IGUANA_NUMHELPERS; //incr = 1; @@ -555,7 +579,7 @@ int32_t iguana_utxogen(struct supernet_info *myinfo,struct iguana_info *coin,int if ( iguana_utxoaddr_gen(myinfo,coin,(coin->bundlescount - 1) * coin->chain->bundlesize) == 0 ) { printf("restart iguana: fatal error generating ledger file for %s\n",coin->symbol); - exit(1); + iguana_exit(myinfo,0); } } } @@ -568,7 +592,7 @@ int32_t iguana_utxogen(struct supernet_info *myinfo,struct iguana_info *coin,int return(num); } -int32_t iguana_coin_mainiter(struct iguana_info *coin,int32_t *numpeersp) +int32_t iguana_coin_mainiter(struct supernet_info *myinfo,struct iguana_info *coin,int32_t *numpeersp,struct OS_memspace *mem,struct OS_memspace *memB) { int32_t n,j,isRT = 0; struct iguana_bundle *bp; if ( coin->RTheight == 0 && coin->firstRTheight == 0 && coin->current != 0 && coin->active != 0 && coin->started != 0 ) @@ -578,30 +602,36 @@ int32_t iguana_coin_mainiter(struct iguana_info *coin,int32_t *numpeersp) *numpeersp += coin->peers->numranked; if ( 0 && (rand() % 10) == 0 ) printf("%s main.%u vs %u, svs %u %d vs %d\n",coin->symbol,(uint32_t)time(NULL),coin->startutc+10,coin->spendvectorsaved ,coin->blocks.hwmchain.height/coin->chain->bundlesize,(coin->longestchain-coin->minconfirms)/coin->chain->bundlesize); - if ( time(NULL) > coin->startutc+60 && coin->blocks.hwmchain.height/coin->chain->bundlesize >= (coin->longestchain-coin->chain->bundlesize)/coin->chain->bundlesize ) + if ( time(NULL) > coin->startutc+60 ) { + //if ( (bp= coin->current) != 0 && bp->numsaved >= coin->chain->bundlesize && bp->startutxo == 0 ) + // iguana_bundlefinalize(myinfo,coin,bp,mem,memB); n = coin->bundlescount-1; - //printf("%s n.%d emitfinished.%d coin->spendvectorsaved %d\n",coin->symbol,n,iguana_emitfinished(coin,1),coin->spendvectorsaved); - if ( iguana_emitfinished(coin,1) >= n ) + if ( coin->spendvectorsaved == 0 && coin->blocks.hwmchain.height/coin->chain->bundlesize >= (coin->longestchain-coin->chain->bundlesize)/coin->chain->bundlesize ) { - if ( coin->PREFETCHLAG >= 0 && coin->fastfind == 0 ) - { - for (j=0; jbundles[j] != 0 ) - iguana_alloctxbits(coin,&coin->bundles[j]->ramchain); - sleep(3); - } - if ( iguana_validated(coin) < n || iguana_utxofinished(coin) < n || iguana_balancefinished(coin) < n ) - { - coin->spendvectorsaved = 1; - //printf("update volatile data, need.%d vs utxo.%d balances.%d validated.%d\n",n,iguana_utxofinished(coin),iguana_balancefinished(coin),iguana_validated(coin)); - } - else + //printf("%s n.%d emitfinished.%d coin->spendvectorsaved %d\n",coin->symbol,n,iguana_emitfinished(myinfo,coin,1),coin->spendvectorsaved); + if ( iguana_emitfinished(myinfo,coin,1) >= n ) { - coin->spendvectorsaved = (uint32_t)time(NULL); - //printf("already done UTXOGEN (%d %d) (%d %d)\n",iguana_utxofinished(coin),n,iguana_balancefinished(coin),n); + if ( coin->PREFETCHLAG >= 0 && coin->fastfind == 0 ) + { + for (j=0; jbundles[j] != 0 ) + iguana_alloctxbits(coin,&coin->bundles[j]->ramchain); + sleep(3); + } + if ( iguana_validated(coin) < n || iguana_utxofinished(coin) < n || iguana_balancefinished(coin) < n ) + { + coin->spendvectorsaved = 1; + printf("update volatile data, need.%d vs utxo.%d balances.%d validated.%d\n",n,iguana_utxofinished(coin),iguana_balancefinished(coin),iguana_validated(coin)); + } + else + { + iguana_update_balances(coin); + coin->spendvectorsaved = (uint32_t)time(NULL); + printf("already done UTXOGEN (%d %d %d) n.%d\n",iguana_utxofinished(coin),iguana_validated(coin),iguana_balancefinished(coin),n); + } } - } //else printf("only emit.%d vs %d\n",iguana_emitfinished(coin),n); + } } if ( (bp= coin->current) != 0 && coin->stucktime != 0 && coin->isRT == 0 && coin->RTheight == 0 && (time(NULL) - coin->stucktime) > coin->MAXSTUCKTIME ) { @@ -667,13 +697,23 @@ void iguana_helper(void *arg) //printf("%s spendvectorsaved.%u helperid.%d validate\n",coin->symbol,coin->spendvectorsaved,helperid); for (j=helperid; jbundlescount-1; j+=IGUANA_NUMHELPERS) if ( (bp= coin->bundles[j]) != 0 ) - iguana_bundlevalidate(coin,bp,0); + iguana_bundlevalidate(myinfo,coin,bp,0); coin->spendvalidated |= (1 << helperid); //printf("DONE %s spendvectorsaved.%u helperid.%d validate\n",coin->symbol,coin->spendvectorsaved,helperid); } + else + { + for (j=helperid; jbundlescount; j+=IGUANA_NUMHELPERS) + if ( (bp= coin->bundles[j]) != 0 && bp->startutxo == 0 && bp->numsaved >= coin->chain->bundlesize && iguana_bundleready(myinfo,coin,bp,0) == bp->n ) + { + //printf("finalize.[%d]\n",bp->hdrsi); + if ( iguana_bundlefinalize(myinfo,coin,bp,&MEM,MEMB) > 0 ) + continue; + } + } } if ( helperid == 0 ) - iguana_coin_mainiter(coin,&numpeers); + iguana_coin_mainiter(myinfo,coin,&numpeers,&MEM,MEMB); } //portable_mutex_unlock(&myinfo->allcoins_mutex); n = queue_size(&bundlesQ); @@ -691,7 +731,7 @@ void iguana_helper(void *arg) allcurrent = 0; //printf("h.%d [%d] bundleQ size.%d lag.%ld\n",helperid,bp->hdrsi,queue_size(&bundlesQ),time(NULL) - bp->nexttime); coin->numbundlesQ--; - if ( coin->started != 0 && (bp->nexttime == 0 || time(NULL) >= bp->nexttime) && coin->active != 0 ) + if ( bp->startutxo == 0 && coin->started != 0 && time(NULL) > bp->nexttime && coin->active != 0 ) { flag += iguana_bundleiters(myinfo,ptr->coin,&MEM,MEMB,bp,ptr->timelimit,IGUANA_DEFAULTLAG); } @@ -699,7 +739,7 @@ void iguana_helper(void *arg) { //printf("skip.[%d] nexttime.%u lag.%ld coin->active.%d\n",bp->hdrsi,bp->nexttime,time(NULL)-bp->nexttime,coin->active); allcurrent--; - iguana_bundleQ(coin,bp,1000); + iguana_bundleQ(myinfo,coin,bp,1000); } } else //if ( coin->active != 0 ) @@ -753,7 +793,7 @@ void iguana_callcoinstart(struct supernet_info *myinfo,struct iguana_info *coin) void iguana_coinloop(void *arg) { - struct supernet_info *myinfo; int32_t flag,i,n; bits256 zero; uint32_t now; struct iguana_info *coin,**coins = arg; + struct supernet_info *myinfo; int32_t flag,i,j,n; struct iguana_peer *addr; bits256 zero; uint32_t now; struct iguana_info *coin,**coins = arg; myinfo = SuperNET_MYINFO(0); n = (int32_t)(long)coins[0]; coins++; @@ -772,8 +812,7 @@ void iguana_coinloop(void *arg) if ( coin->peers == 0 ) { printf("FATAL lack of peers struct\n"); - exit(-1); - iguana_launchpeer(coin,"127.0.0.1",1); + iguana_exit(myinfo,0); } if ( coin->virtualchain == 0 ) { @@ -804,13 +843,7 @@ void iguana_coinloop(void *arg) if ( coin->MAXPEERS > IGUANA_MINPEERS ) coin->MAXPEERS = IGUANA_MINPEERS; } - /*if ( coin->isRT != 0 && coin->current != 0 && coin->numverified >= coin->current->hdrsi ) - { - //static int32_t saved; - //if ( saved++ == 0 ) - // iguana_coinflush(coin,1); - }*/ - if ( RELAYID >= 0 ) + if ( RELAYID < 0 ) { if ( coin->bindsock >= 0 ) { @@ -826,8 +859,25 @@ void iguana_coinloop(void *arg) { if ( coin->MAXPEERS > 1 && coin->peers->numranked < ((7*coin->MAXPEERS)>>3) && now > coin->lastpossible+10 ) { - if ( coin->peers->numranked > 0 && (now % 60) == 0 ) - iguana_send_ping(myinfo,coin,coin->peers->ranked[rand() % coin->peers->numranked]); + if ( coin->peers != 0 ) + { + for (j=0; jpeers->active[(i+j) % IGUANA_MAXPEERS]; + if ( addr->usock >= 0 && addr->msgcounts.verack == 0 ) + { + //printf("i.%d j.%d mainloop %s\n",i,j,addr->ipaddr); + iguana_send_version(coin,addr,coin->myservices); + break; + } + } + } + if ( coin->FULLNODE != 0 || coin->VALIDATENODE != 0 ) + { + if ( coin->peers->numranked > 0 ) + iguana_send_ping(myinfo,coin,coin->peers->ranked[rand() % coin->peers->numranked]); + } coin->lastpossible = iguana_possible_peer(coin,0); // tries to connect to new peers } } @@ -912,7 +962,7 @@ struct iguana_info *iguana_setcoin(char *symbol,void *launched,int32_t maxpeers, if ( (coin->MAXRECVCACHE= maxrecvcache) == 0 ) coin->MAXRECVCACHE = IGUANA_MAXRECVCACHE; if ( (coin->MAXPENDINGREQUESTS= maxrequests) <= 0 ) - coin->MAXPENDINGREQUESTS = (strcmp(symbol,"BTC") == 0) ? IGUANA_MAXPENDINGREQUESTS : IGUANA_PENDINGREQUESTS; + coin->MAXPENDINGREQUESTS = (strcmp(symbol,"BTC") == 0) ? IGUANA_BTCPENDINGREQUESTS : IGUANA_PENDINGREQUESTS; if ( jobj(json,"prefetchlag") != 0 ) coin->PREFETCHLAG = jint(json,"prefetchlag"); else if ( strcmp("BTC",coin->symbol) == 0 ) @@ -1100,3 +1150,8 @@ char *busdata_sync(uint32_t *noncep,char *jsonstr,char *broadcastmode,char *dest printf("busdata_sync.(%s)\n",jsonstr); return(0); } + +// getnewaddress, setaccount, validate address, restart, validate address + +// importprivkey, setaccount, validate, restart, validate + diff --git a/iguana/iguana777.h b/iguana/iguana777.h index 37f45c013..5c2a324c4 100755 --- a/iguana/iguana777.h +++ b/iguana/iguana777.h @@ -16,9 +16,19 @@ #ifndef iguana777_net_h #define iguana777_net_h +#if defined(_WIN32) || defined(_WIN64) +#define WIN32 +#endif + #if (defined(_WIN32) || defined(__WIN32__)) && \ !defined(WIN32) && !defined(__SYMBIAN32__) #define WIN32 +#endif + +#ifdef WIN32 +#define __MINGW + + #else #ifndef __MINGW #include @@ -41,11 +51,7 @@ struct exchange_info; #include "../includes/iguana_defines.h" #include "../includes/iguana_types.h" #include "../includes/iguana_structs.h" -#include "../includes/iguana_funcs.h" -#include "../includes/iguana_globals.h" #include "../basilisk/basilisk.h" -#include "../gecko/gecko.h" - struct supernet_address { @@ -72,7 +78,7 @@ struct supernet_info struct iguana_waccount *wallet; struct iguana_info *allcoins; int32_t allcoins_being_added,allcoins_numvirts; portable_mutex_t bu_mutex,allcoins_mutex,gecko_mutex,basilisk_mutex,DEX_mutex,DEX_reqmutex,DEX_swapmutex; - struct queueitem *DEX_quotes; + struct queueitem *DEX_quotes; cJSON *Cunspents,*Cspends; struct basilisk_swap *swaps[256]; int32_t numswaps; struct basilisk_message *messagetable; portable_mutex_t messagemutex; queue_t msgQ; void *ctx; @@ -87,4 +93,15 @@ struct supernet_info struct message_info msgids[8192]; }; +#include "../includes/iguana_funcs.h" +#include "../includes/iguana_globals.h" +#include "../gecko/gecko.h" + +#ifndef MAX +#define MAX(a,b) ((a) >= (b) ? (a) : (b)) +#endif +#ifndef MIN +#define MIN(a,b) ((a) < (b) ? (a) : (b)) +#endif + #endif diff --git a/iguana/iguana_accept.c b/iguana/iguana_accept.c index 6e2895a33..343f12b0c 100755 --- a/iguana/iguana_accept.c +++ b/iguana/iguana_accept.c @@ -98,18 +98,21 @@ void iguana_acceptloop(void *args) } memcpy(&ipbits,&cli_addr.sin_addr.s_addr,sizeof(ipbits)); expand_ipbits(ipaddr,ipbits); - printf("incoming (%s:%u)\n",ipaddr,cli_addr.sin_port); + printf("incoming %s (%s:%u)\n",coin->symbol,ipaddr,cli_addr.sin_port); for (i=flag=0; ipeers->active[i].ipbits == (uint32_t)ipbits && coin->peers->active[i].usock >= 0 ) + addr = &coin->peers->active[i]; + if ( addr->ipbits == (uint32_t)ipbits && addr->usock >= 0 ) { - printf("found existing peer.(%s) in slot[%d]\n",ipaddr,i); - close(coin->peers->active[i].usock); - coin->peers->active[i].dead = 0; - coin->peers->active[i].usock = sock; - coin->peers->active[i].A.port = cli_addr.sin_port; - coin->peers->active[i].ready = (uint32_t)time(NULL); + //printf("found existing %s peer.(%s) in slot[%d]\n",coin->symbol,ipaddr,i); + close(addr->usock); + addr->dead = 0; + addr->usock = sock; + addr->A.port = cli_addr.sin_port; + addr->ready = (uint32_t)time(NULL); flag = 1; + iguana_send_version(coin,addr,coin->myservices); + //instantdex_peerhas_clear(coin,&coin->peers->active[i]); //iguana_iAkill(coin,&coin->peers->active[i],0); //sleep(1); @@ -118,7 +121,7 @@ void iguana_acceptloop(void *args) } if ( flag != 0 ) continue; - printf("NEWSOCK.%d for %x (%s)\n",sock,ipbits,ipaddr); + printf("%s NEWSOCK.%d for %x (%s)\n",coin->symbol,sock,ipbits,ipaddr); /*if ( (uint32_t)ipbits == myinfo->myaddr.myipbits ) { @@ -135,7 +138,7 @@ void iguana_acceptloop(void *args) } else { - printf("LAUNCH DEDICATED THREAD for %s:%u\n",ipaddr,cli_addr.sin_port); + printf("LAUNCH %s DEDICATED THREAD for %s:%u\n",coin->symbol,ipaddr,cli_addr.sin_port); addr->usock = sock; addr->dead = 0; addr->A.port = cli_addr.sin_port; @@ -154,7 +157,7 @@ int32_t iguana_pendingaccept(struct iguana_info *coin) if ( (addr= iguana_peerslot(coin,ptr->ipbits,0)) != 0 ) { expand_ipbits(ipaddr,ptr->ipbits); - printf("iguana_pendingaccept LAUNCH DEDICATED THREAD for %s\n",ipaddr); + printf("iguana_pendingaccept %s LAUNCH DEDICATED THREAD for %s\n",coin->symbol,ipaddr); addr->usock = ptr->sock; strcpy(addr->symbol,coin->symbol); iguana_launch(coin,"accept",iguana_dedicatedglue,addr,IGUANA_CONNTHREAD); @@ -198,7 +201,7 @@ int32_t iguana_process_msgrequestQ(struct supernet_info *myinfo,struct iguana_in { if ( coin->FULLNODE != 0 || coin->VALIDATENODE != 0 ) { - if ( (addr= msg->addr) != 0 && (len= iguana_peerblockrequest(coin,coin->blockspace,(int32_t)(coin->blockspacesize - sizeof(struct iguana_msghdr)),0,msg->hash2,0)) > 0 ) + if ( (addr= msg->addr) != 0 && (len= iguana_peerblockrequest(myinfo,coin,coin->blockspace,(int32_t)(coin->blockspacesize - sizeof(struct iguana_msghdr)),0,msg->hash2,0)) > 0 ) { //char str[65]; printf("msg Sendlen.%d block %s to %s\n",len,bits256_str(str,msg->hash2),addr->ipaddr); iguana_queue_send(addr,0,coin->blockspace,"block",len); @@ -288,11 +291,11 @@ int32_t iguana_inv2packet(uint8_t *serialized,int32_t maxsize,int32_t type,bits2 return(len - sizeof(struct iguana_msghdr)); } -int32_t iguana_headerget(struct iguana_info *coin,uint8_t *serialized,int32_t maxsize,struct iguana_block *block) +int32_t iguana_headerget(struct supernet_info *myinfo,struct iguana_info *coin,uint8_t *serialized,int32_t maxsize,struct iguana_block *block) { - bits256 checkhash2; struct iguana_msgblock msgB; int32_t len = 0; - iguana_blockunconv(coin->chain->zcash,coin->chain->auxpow,&msgB,block,1); - if ( (len= iguana_rwblock(coin->symbol,coin->chain->zcash,coin->chain->auxpow,coin->chain->hashalgo,1,&checkhash2,&serialized[sizeof(struct iguana_msghdr)],&msgB,(int32_t)(maxsize-sizeof(struct iguana_msghdr)))) < 0 ) + bits256 checkhash2; struct iguana_msgzblock zmsgB; int32_t len = 0; + iguana_blockunconv(coin->chain->zcash,coin->chain->auxpow,&zmsgB,(void *)block,1); + if ( (len= iguana_rwblock(myinfo,coin->symbol,coin->chain->zcash,coin->chain->auxpow,coin->chain->hashalgo,1,&checkhash2,&serialized[sizeof(struct iguana_msghdr)],&zmsgB,(int32_t)(maxsize-sizeof(struct iguana_msghdr)))) < 0 ) return(-1); if ( bits256_cmp(checkhash2,block->RO.hash2) != 0 ) { @@ -305,8 +308,8 @@ int32_t iguana_headerget(struct iguana_info *coin,uint8_t *serialized,int32_t ma int32_t iguana_peerhdrrequest(struct supernet_info *myinfo,struct iguana_info *coin,uint8_t *serialized,int32_t maxsize,struct iguana_peer *addr,bits256 hash2) { - int32_t len=0,i,flag=0,height,n,hdrsi,bundlei,bundlesize,firstvout,retval=-1; struct iguana_block *block; struct iguana_bundle *bp; - if ( coin->RTheight > 0 && (firstvout= iguana_RTunspentindfind(myinfo,coin,0,0,0,0,&height,hash2,0,coin->bundlescount-1,0)) != 0 ) + int32_t len=0,i,flag=0,height,n,hdrsi,bundlei,bundlesize,retval=-1; struct iguana_block *block; struct iguana_bundle *bp; struct iguana_outpoint outpt; + if ( coin->RTheight > 0 && iguana_RTunspentindfind(myinfo,coin,&outpt,0,0,0,0,&height,hash2,0,coin->bundlescount-1,0) == 0 ) { bundlesize = coin->chain->bundlesize; hdrsi = (height / bundlesize); @@ -317,7 +320,7 @@ int32_t iguana_peerhdrrequest(struct supernet_info *myinfo,struct iguana_info *c { if ( (block= bp->blocks[i]) != 0 ) { - if ( (n= iguana_headerget(coin,&serialized[len],maxsize-len,block)) < 0 ) + if ( (n= iguana_headerget(myinfo,coin,&serialized[len],maxsize-len,block)) < 0 ) { printf("%s error getting header ht.%d\n",coin->symbol,block->height); continue; @@ -350,7 +353,7 @@ int32_t iguana_peergetrequest(struct supernet_info *myinfo,struct iguana_info *c break; if ( flag == 0 ) { - if ( getblock != 0 && iguana_peerblockrequest(coin,addr->blockspace,IGUANA_MAXPACKETSIZE,addr,hash2,0) > 0 ) + if ( getblock != 0 && iguana_peerblockrequest(myinfo,coin,addr->blockspace,IGUANA_MAXPACKETSIZE,addr,hash2,0) > 0 ) flag = 1; else if ( getblock == 0 && iguana_peerhdrrequest(myinfo,coin,addr->blockspace,IGUANA_MAXPACKETSIZE,addr,hash2) > 0 ) flag = 1; diff --git a/iguana/iguana_bitmap.c b/iguana/iguana_bitmap.c index 51f97f3e9..25413848f 100755 --- a/iguana/iguana_bitmap.c +++ b/iguana/iguana_bitmap.c @@ -126,7 +126,7 @@ void gen_jpegfile(char *fname,int32_t quality,uint8_t *bitmap,int32_t width,int3 if ( (outfile= fopen(fname,"wb")) == NULL) { fprintf(stderr, "can't open %s\n", fname); - exit(1); + iguana_exit(0,0); } jpeg_stdio_dest(&cinfo, outfile); cinfo.image_width = width; /* image width and height, in pixels */ diff --git a/iguana/iguana_blocks.c b/iguana/iguana_blocks.c index 511303f6f..6da36f98e 100755 --- a/iguana/iguana_blocks.c +++ b/iguana/iguana_blocks.c @@ -17,49 +17,74 @@ #define iguana_blockfind(str,coin,hash2) iguana_blockhashset(str,coin,-1,hash2,0) -void iguana_blockconv(uint8_t zcash,uint8_t auxpow,struct iguana_block *dest,struct iguana_msgblock *msg,bits256 hash2,int32_t height) //uint32_t numtxids,uint32_t numunspents,uint32_t numspends,double PoW) +int32_t iguana_blockconv(uint8_t zcash,uint8_t auxpow,struct iguana_zblock *zdest,struct iguana_msgzblock *zmsg,bits256 hash2,int32_t height) //uint32_t numtxids,uint32_t numunspents,uint32_t numspends,double PoW) { - int32_t i; - memset(dest,0,sizeof(*dest)); - dest->RO.version = msg->H.version; - dest->RO.prev_block = msg->H.prev_block; - dest->RO.merkle_root = msg->H.merkle_root; - dest->RO.timestamp = msg->H.timestamp; - dest->RO.bits = msg->H.bits; - dest->RO.txn_count = msg->txn_count; - dest->height = height; - dest->RO.hash2 = hash2; + int32_t i; struct iguana_block *dest = (void *)zdest; struct iguana_msgblock *msg = (void *)zmsg; if ( zcash == 0 ) + { + memset(dest,0,sizeof(*dest)); + dest->RO.version = msg->H.version; + dest->RO.prev_block = msg->H.prev_block; + dest->RO.merkle_root = msg->H.merkle_root; + dest->RO.timestamp = msg->H.timestamp; + dest->RO.bits = msg->H.bits; + dest->RO.txn_count = msg->txn_count; + dest->height = height; + dest->RO.hash2 = hash2; dest->RO.nonce = msg->H.nonce; + return(msg->txn_count); + } else { - dest->RO.allocsize = (int32_t)(sizeof(*dest) + sizeof(*dest->zRO)); - dest->zRO[0].bignonce = msg->zH.bignonce; + zdest->RO.allocsize = (int32_t)sizeof(struct iguana_zblock); + zdest->RO.txn_count = zmsg->txn_count; + zdest->RO.hash2 = hash2; + zdest->height = height; + zdest->RO.version = zmsg->zH.version; + zdest->RO.prev_block = zmsg->zH.prev_block; + zdest->RO.merkle_root = zmsg->zH.merkle_root; + zdest->RO.timestamp = zmsg->zH.timestamp; + zdest->RO.bits = zmsg->zH.bits; + zdest->zRO.bignonce = zmsg->zH.bignonce; + if ( iguana_rwvarint32(0,zmsg->zH.var_numelements,&zdest->zRO.numelements) != sizeof(zmsg->zH.var_numelements) ) + printf("unexpected varint size for zmsg.zH.numelements <- %d\n",zdest->zRO.numelements); for (i=0; izRO[0].solution[i] = msg->zH.solution[i]; + zdest->zRO.solution[i] = zmsg->zH.solution[i]; + return(zmsg->txn_count); } } -void iguana_blockunconv(uint8_t zcash,uint8_t auxpow,struct iguana_msgblock *msg,struct iguana_block *src,int32_t cleartxn_count) +void iguana_blockunconv(uint8_t zcash,uint8_t auxpow,struct iguana_msgzblock *zmsg,struct iguana_zblock *zsrc,int32_t cleartxn_count) { - int32_t i; - memset(msg,0,sizeof(*msg)); - msg->H.version = src->RO.version; - msg->H.prev_block = src->RO.prev_block; - msg->H.merkle_root = src->RO.merkle_root; - msg->H.timestamp = src->RO.timestamp; - msg->H.bits = src->RO.bits; - if ( zcash == 0 ) - msg->H.nonce = src->RO.nonce; + int32_t i; struct iguana_msgblock *msg = (void *)zmsg; struct iguana_block *src = (void *)zsrc; + if ( zcash != 0 ) + { + memset(zmsg,0,sizeof(*zmsg)); + zmsg->zH.version = zsrc->RO.version; + zmsg->zH.prev_block = zsrc->RO.prev_block; + zmsg->zH.merkle_root = zsrc->RO.merkle_root; + zmsg->zH.timestamp = zsrc->RO.timestamp; + zmsg->zH.bits = zsrc->RO.bits; + zmsg->zH.bignonce = zsrc->zRO.bignonce; + if ( iguana_rwvarint32(1,zmsg->zH.var_numelements,&zsrc->zRO.numelements) != sizeof(zmsg->zH.var_numelements) ) + printf("unexpected varint size for zmsg.zH.numelements <- %d\n",zsrc->zRO.numelements); + for (i=0; izRO.numelements; i++) + zmsg->zH.solution[i] = zsrc->zRO.solution[i]; + if ( cleartxn_count == 0 ) + zmsg->txn_count = zsrc->RO.txn_count; + } else { - msg->zH.bignonce = src->zRO[0].bignonce; - msg->zH.numelements = ZCASH_SOLUTION_ELEMENTS; - for (i=0; izH.solution[i] = src->zRO[0].solution[i]; + memset(msg,0,sizeof(*msg)); + msg->H.version = src->RO.version; + msg->H.prev_block = src->RO.prev_block; + msg->H.merkle_root = src->RO.merkle_root; + msg->H.timestamp = src->RO.timestamp; + msg->H.bits = src->RO.bits; + msg->H.nonce = src->RO.nonce; + if ( cleartxn_count == 0 ) + msg->txn_count = src->RO.txn_count; } - if ( cleartxn_count == 0 ) - msg->txn_count = src->RO.txn_count; } void iguana_blockcopy(uint8_t zcash,uint8_t auxpow,struct iguana_info *coin,struct iguana_block *block,struct iguana_block *origblock) @@ -102,9 +127,12 @@ void iguana_blockcopy(uint8_t zcash,uint8_t auxpow,struct iguana_info *coin,stru printf("missing space for zcash block.%d origblock.%d\n",block->RO.allocsize,origblock->RO.allocsize); else { - block->zRO[0].bignonce = origblock->zRO[0].bignonce; + struct iguana_zblock *zblock = (void *)block; + struct iguana_zblock *origzblock = (void *)origblock; + zblock->zRO.bignonce = origzblock->zRO.bignonce; + zblock->zRO.numelements = origzblock->zRO.numelements; for (i=0; izRO[0].solution[i] = origblock->zRO[0].solution[i]; + zblock->zRO.solution[i] = origzblock->zRO.solution[i]; } } } @@ -150,7 +178,7 @@ void _iguana_blocklink(struct iguana_info *coin,struct iguana_block *prev,struct if ( memcmp(block->RO.prev_block.bytes,prev->RO.hash2.bytes,sizeof(bits256)) != 0 ) { printf("illegal blocklink mismatched hashes\n"); - exit(-1); + iguana_exit(0,0); return; } block->hh.prev = prev; @@ -298,7 +326,7 @@ int32_t iguana_blocksizecheck(char *debugstr,uint8_t zcash,struct iguana_block * int32_t iguana_blockROsize(uint8_t zcash) { - return((int32_t)(sizeof(struct iguana_blockRO) + zcash*sizeof(struct iguana_msgblockhdr_zcash))); + return((int32_t)(sizeof(struct iguana_blockRO) + zcash*sizeof(struct iguana_msgzblockhdr))); } void *iguana_blockzcopyRO(uint8_t zcash,struct iguana_blockRO *dest,int32_t desti,struct iguana_blockRO *src,int32_t srci) @@ -325,11 +353,17 @@ void iguana_blockzcopy(uint8_t zcash,struct iguana_block *dest,struct iguana_blo } } -int32_t iguana_blockvalidate(struct iguana_info *coin,int32_t *validp,struct iguana_block *block,int32_t dispflag) +int32_t iguana_blockvalidate(struct supernet_info *myinfo,struct iguana_info *coin,int32_t *validp,struct iguana_block *block,int32_t dispflag) { bits256 hash2; uint8_t serialized[sizeof(struct iguana_msgblock) + 4096]; + if ( coin->chain->debug != 0 ) + { + *validp = 1; + return(0); + } *validp = 0; - iguana_serialize_block(coin->chain,&hash2,serialized,block); + if ( iguana_serialize_block(myinfo,coin->chain,&hash2,serialized,block) < 0 ) + return(-1); *validp = (memcmp(hash2.bytes,block->RO.hash2.bytes,sizeof(hash2)) == 0); block->valid = *validp; iguana_blocksizecheck("blockvalidate",coin->chain->zcash,block); @@ -377,7 +411,7 @@ void iguana_blockmerge(struct iguana_block *dest,struct iguana_prevdep *destlp,s double PoW_from_compact(uint32_t nBits,uint8_t unitval) // NOT consensus safe, but most of the time will be correct { - uint32_t nbytes,nbits,i,n; double PoW; uint64_t mult; + uint32_t nbytes,nbits; int32_t i,n; double PoW; uint64_t mult; nbytes = (nBits >> 24) & 0xFF; nbits = (8 * (nbytes - 3)); PoW = (nBits & 0xFFFFFF); @@ -386,7 +420,7 @@ double PoW_from_compact(uint32_t nBits,uint8_t unitval) // NOT consensus safe, b printf("illegal nBits.%x unitval.%02x\n",nBits,unitval); return(0.); } - if ( (n= ((8 * (unitval-3)) - nbits)) != 0 ) // 0x1d00ffff is genesis nBits so we map that to 1. + if ( (n= ((8 * (unitval-3)) - nbits)) > 0 ) // 0x1d00ffff is genesis nBits so we map that to 1. { //printf("nbits.%d -> n.%d\n",nbits,n); if ( n < 64 ) @@ -396,7 +430,7 @@ double PoW_from_compact(uint32_t nBits,uint8_t unitval) // NOT consensus safe, b for (i=0; iblocks.hwmchain.height; while ( 1 ) //(block= iguana_blockfind("main",coin,iguana_blockhash(coin,height))) != 0 ) { @@ -431,25 +465,25 @@ int32_t iguana_walkchain(struct iguana_info *coin,int32_t skipflag) bundlei = (height % coin->chain->bundlesize); if ( (bp= coin->bundles[hdrsi]) == 0 || (block= bp->blocks[bundlei]) == 0 ) { - printf("walk error [%d:%d] %p vs %p\n",hdrsi,bundlei,block,bp->blocks[bundlei]); + printf("%s walk error [%d:%d] %p vs %p\n",coin->symbol,hdrsi,bundlei,block,bp->blocks[bundlei]); break; } else if ( block->height >= 0 && block->height != height ) - printf("walkchain height mismatch %d vs %d\n",block->height,height); + printf("%s walkchain height mismatch %d vs %d\n",coin->symbol,block->height,height); iguana_blocksizecheck("walkchain",coin->chain->zcash,block); if ( bits256_nonz(iguana_blockhash(coin,height)) != 0 && bits256_cmp(iguana_blockhash(coin,height),block->RO.hash2) != 0 ) { - printf("walk error blockhash error at %d %s\n",height,bits256_str(str,iguana_blockhash(coin,height))); + printf("%s walk error blockhash error at %d %s\n",coin->symbol,height,bits256_str(str,iguana_blockhash(coin,height))); break; } else if ( bits256_cmp(bp->hashes[bundlei],block->RO.hash2) != 0 ) { - printf("walk error [%d:%d] %s vs %s\n",hdrsi,bundlei,bits256_str(str,bp->hashes[bundlei]),bits256_str(str,block->RO.hash2)); + printf("%s walk error [%d:%d] %s vs %s\n",coin->symbol,hdrsi,bundlei,bits256_str(str,bp->hashes[bundlei]),bits256_str(str,block->RO.hash2)); break; } else if ( block->hdrsi != hdrsi || block->bundlei != bundlei ) { - printf("walk error [%d:%d] vs [%d:%d]\n",hdrsi,bundlei,block->hdrsi,block->bundlei); + printf("%s walk error [%d:%d] vs [%d:%d]\n",coin->symbol,hdrsi,bundlei,block->hdrsi,block->bundlei); break; } if ( height == 0 ) @@ -494,7 +528,7 @@ struct iguana_block *iguana_fastlink(struct iguana_info *coin,int32_t hwmheight) if ( prev != 0 && bits256_nonz(block->RO.prev_block) == 0 ) { block->RO.prev_block = prev->RO.hash2; - printf("PATCH.[%d:%d] prev is null\n",bp->hdrsi,bundlei); + printf("%s PATCH.[%d:%d] prev is null\n",coin->symbol,bp->hdrsi,bundlei); break; } bp->blocks[bundlei] = block; @@ -555,7 +589,7 @@ struct iguana_block *_iguana_chainlink(struct supernet_info *myinfo,struct iguan { //if ( memcmp(prev->RO.hash2.bytes,coin->blocks.hwmchain.RO.hash2.bytes,sizeof(bits256)) == 0 ) // prev->mainchain = 1; - if ( bits256_nonz(prev->RO.hash2) == 0 || (prev->valid == 0 && iguana_blockvalidate(coin,&valid,prev,0) < 0) ) + if ( bits256_nonz(prev->RO.hash2) == 0 || (prev->valid == 0 && iguana_blockvalidate(myinfo,coin,&valid,prev,0) < 0) ) { char str[65]; if ( 0 && bits256_nonz(prev->RO.hash2) != 0 ) @@ -588,7 +622,7 @@ struct iguana_block *_iguana_chainlink(struct supernet_info *myinfo,struct iguan return(0); } //char str[65]; printf("extend? %s.h%d: %.15f vs %.15f ht.%d vs %d\n",bits256_str(str,block->RO.hash2),height,block->PoW,coin->blocks.hwmchain.PoW,height,coin->blocks.hwmchain.height); - if ( iguana_blockvalidate(coin,&valid,newblock,0) < 0 || valid == 0 ) + if ( iguana_blockvalidate(myinfo,coin,&valid,newblock,0) < 0 || valid == 0 ) return(0); block->height = height; block->valid = 1; @@ -619,7 +653,8 @@ struct iguana_block *_iguana_chainlink(struct supernet_info *myinfo,struct iguan //iguana_walkchain(coin); } struct iguana_bundle *bp; int32_t hdrsi; - if ( (block->height % coin->chain->bundlesize) == 0 ) + bundlei = (block->height % coin->chain->bundlesize); + if ( bundlei == 0 ) { if ( (hdrsi= block->height/coin->chain->bundlesize) < coin->bundlescount ) { @@ -640,16 +675,19 @@ struct iguana_block *_iguana_chainlink(struct supernet_info *myinfo,struct iguan { if ( (bp= coin->bundles[block->height / coin->chain->bundlesize]) != 0 ) { - if ( memcmp(bp->hashes[block->height % coin->chain->bundlesize].bytes,block->RO.hash2.bytes,sizeof(bits256)) != 0 || block != bp->blocks[block->height % coin->chain->bundlesize] ) + if ( memcmp(bp->hashes[bundlei].bytes,block->RO.hash2.bytes,sizeof(bits256)) != 0 || block != bp->blocks[bundlei] ) { - if ( bits256_nonz(bp->hashes[block->height % coin->chain->bundlesize]) != 0 ) + if ( bits256_nonz(bp->hashes[bundlei]) != 0 ) { - if ( bp->blocks[block->height % coin->chain->bundlesize] == 0 && block != 0 ) - bp->blocks[block->height % coin->chain->bundlesize] = block; + if ( bp->blocks[bundlei] == 0 && block != 0 ) + bp->blocks[bundlei] = block; else { - char str[65],str2[65]; - printf("ERROR: need to fix up bundle for height.%d (%p %p) (%s %s)\n",block->height,block,bp->blocks[block->height % coin->chain->bundlesize],bits256_str(str,block->RO.hash2),bits256_str(str2,bp->hashes[block->height % coin->chain->bundlesize])); + //char str[65],str2[65]; + //printf("ERROR: need to fix up bundle for height.%d (%p %p) (%s %s)\n",block->height,block,bp->blocks[bundlei],bits256_str(str,block->RO.hash2),bits256_str(str2,bp->hashes[bundlei])); + bp->blocks[bundlei] = block; + bp->hashes[bundlei] = block->RO.hash2; + //if ( bp == coin->current && coin->RTheight > 0 ) // coin->RTdatabad = 1; //iguana_bundleremove(coin,bp->hdrsi,0); @@ -657,10 +695,10 @@ struct iguana_block *_iguana_chainlink(struct supernet_info *myinfo,struct iguan //getchar(); } } - iguana_blockunmark(coin,block,bp,block->height % coin->chain->bundlesize,0); - iguana_bundlehash2add(coin,0,bp,block->height % coin->chain->bundlesize,block->RO.hash2); + iguana_blockunmark(coin,block,bp,bundlei,0); + iguana_bundlehash2add(coin,0,bp,bundlei,block->RO.hash2); } - if ( coin->started != 0 && (block->height % coin->chain->bundlesize) == coin->minconfirms && (block->height > coin->longestchain-coin->chain->bundlesize*2 || ((block->height / coin->chain->bundlesize) % 100) == 9) ) + if ( coin->started != 0 && bundlei == coin->minconfirms && (block->height > coin->longestchain-coin->chain->bundlesize*2 || ((block->height / coin->chain->bundlesize) % 100) == 9) ) { //printf("savehdrs.[%d] ht.%d\n",bp->hdrsi,block->height); iguana_savehdrs(coin); @@ -706,7 +744,7 @@ struct iguana_block *_iguana_chainlink(struct supernet_info *myinfo,struct iguan int32_t iguana_chainextend(struct supernet_info *myinfo,struct iguana_info *coin,struct iguana_block *newblock) { struct iguana_block *block,*prev; int32_t valid,oldhwm; char str[65]; - if ( iguana_blockvalidate(coin,&valid,newblock,0) < 0 || valid == 0 ) + if ( iguana_blockvalidate(myinfo,coin,&valid,newblock,0) < 0 || valid == 0 ) { printf("chainextend: newblock.%s didnt validate\n",bits256_str(str,newblock->RO.hash2)); return(-1); diff --git a/iguana/iguana_bundles.c b/iguana/iguana_bundles.c index 541c343fb..519c789c0 100755 --- a/iguana/iguana_bundles.c +++ b/iguana/iguana_bundles.c @@ -141,13 +141,15 @@ int32_t iguana_hash2set(struct iguana_info *coin,char *debugstr,struct iguana_bu } if ( bits256_nonz(*orighash2p) > 0 && memcmp(newhash2.bytes,orighash2p,sizeof(bits256)) != 0 ) { - char str2[65],str3[65]; - bits256_str(str2,*orighash2p), bits256_str(str3,newhash2); - printf("WARNING iguana_hash2set overwrite avoided [%s] %s with %s [%d:%d]\n",debugstr,str2,str3,bp->hdrsi,bundlei); - return(-1); + static uint32_t counter; + if ( counter++ < 3 ) + { + char str2[65],str3[65]; + bits256_str(str2,*orighash2p), bits256_str(str3,newhash2); + printf("WARNING iguana_hash2set overwrite %s [%s] %s with %s [%d:%d]\n",coin->symbol,debugstr,str2,str3,bp->hdrsi,bundlei); + } //*orighash2p = newhash2; - // getchar(); - // return(-1); + return(-1); } if ( isinside != 0 ) { @@ -323,7 +325,7 @@ int32_t iguana_bundlehash2add(struct iguana_info *coin,struct iguana_block **blo if ( err != 0 ) { static uint32_t counter; - if ( counter++ < 100 ) + if ( counter++ < 10 ) printf("bundlehash2add err.%d\n",err); //return(0); } @@ -379,7 +381,7 @@ struct iguana_bundle *iguana_bundlecreate(struct iguana_info *coin,int32_t *bund if ( issueflag != 0 ) { iguana_blockQ("bundlecreate",coin,bp,0,bundlehash2,1); - queue_enqueue("hdrsQ",&coin->hdrsQ,queueitem(str),1); + //queue_enqueue("hdrsQ",&coin->hdrsQ,queueitem(str),1); } if ( bp->hdrsi >= coin->bundlescount ) coin->bundlescount = (bp->hdrsi + 1); @@ -587,7 +589,7 @@ struct iguana_block *iguana_bundleblock(struct iguana_info *coin,bits256 *hash2p if ( len > (sizeof(int32_t) + sizeof(*hashes))*n + 1024 ) { printf("FATAL ERROR iguana_sendhashes: len.%d size.%ld\n",len,(sizeof(int32_t) + sizeof(*hashes))*n + 1024); - exit(-1); + iguana_exit(myinfo); } iguana_send(coin,addr,serialized,len); coin->numreqsent += n; @@ -638,6 +640,8 @@ int32_t iguana_bundleissuemissing(struct supernet_info *myinfo,struct iguana_inf lag = 60; else if ( lag < 30 ) lag = 30; + if ( strcmp(coin->symbol,"BTC") != 0 ) + lag /= 10; if ( (num= coin->peers->numranked) == 0 ) iguana_updatemetrics(myinfo,coin); if ( (num= coin->peers->numranked) != 0 ) @@ -653,7 +657,7 @@ int32_t iguana_bundleissuemissing(struct supernet_info *myinfo,struct iguana_inf lasti = firsti = -1; for (i=nonz=0; in; i++) { - if ( (block= bp->blocks[i]) != 0 && block->txvalid != 0 ) + if ( (block= bp->blocks[i]) != 0 && block->txvalid != 0 && block->mainchain != 0 ) continue; //if ( GETBIT(bp->haveblock,i) != 0 ) // continue; @@ -661,12 +665,12 @@ int32_t iguana_bundleissuemissing(struct supernet_info *myinfo,struct iguana_inf if ( firsti < 0 ) firsti = i; lasti = i; - if ( bp->issued[i] > 1 && now > bp->issued[i]+lag ) + if ( 1 ) { iguana_bundleblock(coin,&hash2,bp,i); if ( bits256_nonz(hash2) != 0 ) { - if ( 0 && (addr= coin->peers->ranked[rand() % max]) != 0 && addr->usock >= 0 && addr->dead == 0 ) + if ( (addr= coin->peers->ranked[rand() % max]) != 0 && addr->usock >= 0 && addr->dead == 0 ) //strcmp("BTC",coin->symbol) != 0 || (bp->issued[i] > 1 && now > bp->issued[i]+lag && { if ( 0 && bp == coin->current ) printf("iguana_bundleissuemissing.[%d:%d]\n",bp->hdrsi,i); @@ -684,7 +688,7 @@ int32_t iguana_bundleissuemissing(struct supernet_info *myinfo,struct iguana_inf } //else printf("[z%d] ",i); } //else printf("%d ",now - (bp->issued[i]+lag)); } - if ( firsti >= 0 && bp == coin->current ) + if ( firsti >= 0 )//&& bp == coin->current ) { //printf("[%d] first missing.%d of %d\n",bp->hdrsi,firsti,nonz); iguana_bundleblock(coin,&hash2,bp,firsti); @@ -752,7 +756,7 @@ int32_t iguana_blast(struct iguana_info *coin,struct iguana_peer *addr) return(n); } -int32_t iguana_bundleready(struct iguana_info *coin,struct iguana_bundle *bp,int32_t requiredflag) +int32_t iguana_bundleready(struct supernet_info *myinfo,struct iguana_info *coin,struct iguana_bundle *bp,int32_t requiredflag) { static bits256 zero; int32_t i,ready,valid; char fname[1024]; struct iguana_block *block; int32_t sum[0x100],counts[0x100]; struct iguana_blockRO *B; struct iguana_bundle *nextbp; void *ptr; long filesize; struct iguana_ramchain R; bits256 prevhash2; @@ -805,7 +809,7 @@ int32_t iguana_bundleready(struct iguana_info *coin,struct iguana_bundle *bp,int counts[block->peerid]++; } //printf("(%x:%x) ",(uint32_t)block->RO.hash2.ulongs[3],(uint32_t)bp->hashes[i].ulongs[3]); - if ( block->txvalid == 0 || block->fpipbits == 0 || block->fpos < 0 || (bp->bundleheight+i > 0 && bits256_nonz(block->RO.prev_block) == 0) || iguana_blockvalidate(coin,&valid,block,1) < 0 ) + if ( block->txvalid == 0 || block->fpipbits == 0 || block->fpos < 0 || (bp->bundleheight+i > 0 && bits256_nonz(block->RO.prev_block) == 0) || iguana_blockvalidate(myinfo,coin,&valid,block,1) < 0 ) { char str[65]; if ( requiredflag != 0 ) @@ -835,11 +839,11 @@ int32_t iguana_bundleready(struct iguana_info *coin,struct iguana_bundle *bp,int { iguana_blockunmark(coin,block,bp,i,1); if ( 0 && requiredflag != 0 ) - printf("not ready altpath.(%d %d %d %d %d) [%d:%d]\n",block->txvalid == 0,block->fpipbits == 0 ,block->fpos < 0,(bp->bundleheight+i > 0 && bits256_nonz(block->RO.prev_block) == 0),iguana_blockvalidate(coin,&valid,block,1) < 0,bp->hdrsi,i); + printf("not ready altpath.(%d %d %d %d %d) [%d:%d]\n",block->txvalid == 0,block->fpipbits == 0 ,block->fpos < 0,(bp->bundleheight+i > 0 && bits256_nonz(block->RO.prev_block) == 0),iguana_blockvalidate(myinfo,coin,&valid,block,1) < 0,bp->hdrsi,i); } else { - iguana_blockunmark(coin,block,bp,i,0); + //iguana_blockunmark(coin,block,bp,i,0); //printf("cant find (%s)\n",fname); } } @@ -861,7 +865,7 @@ int32_t iguana_bundleready(struct iguana_info *coin,struct iguana_bundle *bp,int int32_t iguana_bundlehdr(struct supernet_info *myinfo,struct iguana_info *coin,struct iguana_bundle *bp,int32_t starti) { - int32_t i,dist,counter=0; char str[64]; + int32_t i,dist,counter=0; char str[65]; if ( 0 && bp->isRT == 0 && (bp->hdrsi == coin->bundlescount-1 || bp == coin->current) ) printf("hdr ITERATE.%d bundle.%d vs %d: h.%d n.%d r.%d s.%d c.%d finished.%d spec.%p[%d]\n",bp->hdrsi,bp->bundleheight,coin->longestchain-coin->chain->bundlesize,bp->numhashes,bp->n,bp->numrecv,bp->numsaved,bp->numcached,bp->emitfinish,bp->speculative,bp->numspec); dist = 30 + (coin->current != 0 ? bp->hdrsi - coin->current->hdrsi : 0); @@ -925,10 +929,10 @@ int32_t iguana_bundletweak(struct iguana_info *coin,struct iguana_bundle *bp) return(coin->MAXBUNDLES); } -int64_t iguana_bundlecalcs(struct iguana_info *coin,struct iguana_bundle *bp,int32_t lag) +int64_t iguana_bundlecalcs(struct supernet_info *myinfo,struct iguana_info *coin,struct iguana_bundle *bp,int32_t lag) { int32_t bundlei,numhashes,numsaved,numrecv,numcached,minrequests; int64_t datasize; struct iguana_block *block; - if ( bp->emitfinish > 0 && (bp->ramchain.H.data != 0 || iguana_bundleready(coin,bp,0) == bp->n) ) + if ( bp->emitfinish > 0 && (bp->ramchain.H.data != 0 || iguana_bundleready(myinfo,coin,bp,0) == bp->n) ) { memset(bp->haveblock,0xff,sizeof(bp->haveblock)); bp->numhashes = bp->numsaved = bp->numcached = bp->numrecv = bp->n; @@ -1023,10 +1027,16 @@ int64_t iguana_bundlecalcs(struct iguana_info *coin,struct iguana_bundle *bp,int int32_t iguana_bundlefinalize(struct supernet_info *myinfo,struct iguana_info *coin,struct iguana_bundle *bp,struct OS_memspace *mem,struct OS_memspace *memB) { - int32_t i; struct iguana_bundle *tmpbp; - if ( coin->firstRTheight == 0 && iguana_bundleready(coin,bp,0) == bp->n ) + int32_t i; struct iguana_bundle *tmpbp; struct iguana_blockreq *breq; + if ( coin->firstRTheight == 0 && iguana_bundleready(myinfo,coin,bp,0) == bp->n ) { - printf(">>>>>>>>>>>>>> EMIT.[%3d] %s | 1st.%-3d h.%-3d c.%-3d s.[%3d] maxB.%d NET.(h%d b%d) %ld:%02ld\n",bp->hdrsi,coin->symbol,coin->current!=0?coin->current->hdrsi:-1,coin->current!=0?coin->current->numhashes:-1,coin->current!=0?coin->current->numcached:-1,coin->current!=0?coin->current->numsaved:-1,coin->MAXBUNDLES,HDRnet,netBLOCKS,(time(NULL)-coin->startutc)/60,(time(NULL)-coin->startutc)%60); + printf(">>>>>>>>>>>>>> EMIT.[%3d] %s | 1st.%-3d h.%-3d c.%-3d s.[%3d] maxB.%d NET.(h%d b%d) %u:%02u\n",bp->hdrsi,coin->symbol,coin->current!=0?coin->current->hdrsi:-1,coin->current!=0?coin->current->numhashes:-1,coin->current!=0?coin->current->numcached:-1,coin->current!=0?coin->current->numsaved:-1,coin->MAXBUNDLES,HDRnet,queue_size(&coin->priorityQ),(uint32_t)(time(NULL)-coin->startutc)/60,(uint32_t)(time(NULL)-coin->startutc)%60); + if ( queue_size(&coin->priorityQ) > 10000 ) + { + while ( (breq= queue_dequeue(&coin->priorityQ,0)) != 0 ) + myfree(breq,sizeof(*breq)); + //printf("cleared priorityQ\n"); + } if ( bp->emitfinish != 0 ) { printf("already EMIT for bundle.%d\n",bp->hdrsi); @@ -1034,7 +1044,7 @@ int32_t iguana_bundlefinalize(struct supernet_info *myinfo,struct iguana_info *c } bp->emitfinish = 1; usleep(100000); // make sure new incoming packet didnt overwrite - if ( iguana_bundleready(coin,bp,1) == bp->n ) + if ( iguana_bundleready(myinfo,coin,bp,1) == bp->n ) { usleep(100000); // make sure new incoming packet didnt overwrite coin->emitbusy++; @@ -1050,13 +1060,14 @@ int32_t iguana_bundlefinalize(struct supernet_info *myinfo,struct iguana_info *c printf("GENESIS block validated\n"); else printf("GENESIS didnt validate bp.%p\n",bp);*/ //if ( strcmp("BTC",coin->symbol) != 0 ) - coin->spendvectorsaved = 0; - for (i=bp->hdrsi; ibundlescount; i++) + coin->RTheight = coin->firstRTheight = 0; + //coin->spendvectorsaved = 0; + for (i=0; ibundlescount; i++) if ( (tmpbp= coin->bundles[i]) != 0 ) tmpbp->converted = tmpbp->balancefinish = tmpbp->validated = 0; -#ifdef __PNACL__ - iguana_bundlevalidate(coin,bp,1); -#endif +//#ifdef __PNACL__ + iguana_bundlevalidate(myinfo,coin,bp,1); +//#endif } else { @@ -1089,7 +1100,7 @@ int32_t iguana_bundleiters(struct supernet_info *myinfo,struct iguana_info *coin { printf("%s not ready yet\n",coin->symbol); bp->nexttime = (uint32_t)time(NULL) + 1; - iguana_bundleQ(coin,bp,1000); + iguana_bundleQ(myinfo,coin,bp,1000); return(retval); } if ( coin->current == 0 ) @@ -1100,9 +1111,9 @@ int32_t iguana_bundleiters(struct supernet_info *myinfo,struct iguana_info *coin starti = currentbp == 0 ? 0 : currentbp->hdrsi; lasti = lastbp == 0 ? coin->bundlescount-1 : lastbp->hdrsi; range = lasti - starti + 1; - iguana_bundlecalcs(coin,bp,lag); + iguana_bundlecalcs(myinfo,coin,bp,lag); if ( coin->blockdepth == 0 && coin->blockdepth == 0 && bp->hdrsi == coin->bundlescount-1 ) - iguana_autoextend(coin,bp); + iguana_autoextend(myinfo,coin,bp); if ( 0 && bp->hdrsi == 0 ) printf("ITER utxo.%u now.%u spec.%-4d bundle.%-4d h.%-4d r.%-4d s.%-4d F.%d T.%d issued.%d mb.%d/%d\n",bp->utxofinish,(uint32_t)time(NULL),bp->numspec,bp->bundleheight/coin->chain->bundlesize,bp->numhashes,bp->numrecv,bp->numsaved,bp->emitfinish,timelimit,counter,coin->MAXBUNDLES,coin->bundlescount); bp->nexttime = (uint32_t)time(NULL) + ((bp->hdrsi > starti) ? 0 : -2); @@ -1110,7 +1121,7 @@ int32_t iguana_bundleiters(struct supernet_info *myinfo,struct iguana_info *coin iguana_bundlehdr(myinfo,coin,bp,starti); else if ( bp->emitfinish == 0 && bp->numsaved >= bp->n ) { - if ( coin->virtualchain != 0 || iguana_bundlefinalize(myinfo,coin,bp,mem,memB) > 0 ) + if ( coin->virtualchain != 0 )//|| iguana_bundlefinalize(myinfo,coin,bp,mem,memB) > 0 ) { //printf("bundlefinalized done.[%d]\n",bp->hdrsi); return(0); @@ -1120,12 +1131,12 @@ int32_t iguana_bundleiters(struct supernet_info *myinfo,struct iguana_info *coin else if ( bp->hdrsi == starti || (bp->hdrsi >= starti && bp->hdrsi <= starti+range) ) { max = bp->n; - counter = iguana_bundleissuemissing(myinfo,coin,bp,1,1.); + counter = iguana_bundleissuemissing(myinfo,coin,bp,1,3.); if ( 0 && counter > 0 ) printf("starti.%d range.%d now.%u spec.%-4d bundle.%-4d h.%-4d r.%-4d s.%-4d F.%d T.%d issued.%d mb.%d/%d\n",starti,range,(uint32_t)time(NULL),bp->numspec,bp->bundleheight/coin->chain->bundlesize,bp->numhashes,bp->numrecv,bp->numsaved,bp->emitfinish,timelimit,counter,coin->MAXBUNDLES,coin->bundlescount); } else bp->nexttime++; - if ( bp->emitfinish <= 1 ) - iguana_bundleQ(coin,bp,1000); + if ( 0 && bp->emitfinish <= 1 ) + iguana_bundleQ(myinfo,coin,bp,1000); else { //printf("[%d] not queued\n",bp->hdrsi); @@ -1153,7 +1164,7 @@ static int32_t revsortds(double *buf,uint32_t num,int32_t size) return(0); }*/ -int32_t iguana_cacheprocess(struct iguana_info *coin,struct iguana_bundle *bp,int32_t bundlei) +int32_t iguana_cacheprocess(struct supernet_info *myinfo,struct iguana_info *coin,struct iguana_bundle *bp,int32_t bundlei) { int32_t recvlen; struct iguana_msghdr H; uint8_t *data; struct iguana_block *block; if ( (data= bp->speculativecache[bundlei]) != 0 && bp->speculative != 0 && (block= iguana_blockfind("cacheprocess",coin,bp->speculative[bundlei])) != 0 && block->processed == 0 ) @@ -1166,13 +1177,8 @@ int32_t iguana_cacheprocess(struct iguana_info *coin,struct iguana_bundle *bp,in memset(&H,0,sizeof(H)); if ( iguana_sethdr(&H,coin->chain->netmagic,"block",&data[sizeof(recvlen)],recvlen) > 0 ) { - if ( coin->internaladdr.RAWMEM.ptr == 0 ) - iguana_meminit(&coin->internaladdr.RAWMEM,"cache",0,IGUANA_MAXPACKETSIZE + 65536*3,0); - if ( coin->TXMEM.ptr == 0 ) - iguana_meminit(&coin->internaladdr.TXDATA,"txdata",0,IGUANA_MAXPACKETSIZE*1.5,0); - if ( coin->internaladdr.HASHMEM.ptr == 0 ) - iguana_meminit(&coin->internaladdr.HASHMEM,"HASHPTRS",0,256,0); - if ( iguana_msgparser(coin,&coin->internaladdr,&coin->internaladdr.RAWMEM,&coin->internaladdr.TXDATA,&coin->internaladdr.HASHMEM,&H,&data[sizeof(recvlen)],recvlen,1) < 0 ) + iguana_peer_meminit(coin,&coin->internaladdr); + if ( iguana_msgparser(myinfo,coin,&coin->internaladdr,&coin->internaladdr.RAWMEM,&coin->internaladdr.TXDATA,&coin->internaladdr.HASHMEM,&H,&data[sizeof(recvlen)],recvlen,1) < 0 ) printf("error parsing speculativecache.[%d:%d]\n",bp->hdrsi,bundlei); } free(data); @@ -1203,7 +1209,7 @@ void iguana_unstickhdr(struct iguana_info *coin,struct iguana_bundle *bp,int32_t void iguana_bundlemissings(struct supernet_info *myinfo,struct iguana_info *coin,struct iguana_bundle *bp,uint32_t now) { int32_t mult = 7,n=0,priority = 1; - if ( now > bp->missingstime+30 ) + if ( now > bp->missingstime+13 ) { if ( coin->current != 0 ) { @@ -1288,7 +1294,7 @@ int32_t iguana_bundlehash2_check(struct iguana_info *coin,bits256 hash2) void iguana_bundlestats(struct supernet_info *myinfo,struct iguana_info *coin,char *str,int32_t lag) { - int32_t i,n,m,j,numv,numconverted,count,starti,lasti,pending,capacity,displag,numutxo,numbalances,numrecv,done,numhashes,numcached,numsaved,numemit; struct iguana_block *block; bits256 hash2; + int32_t i,n,m,j,numv,numconverted,count,starti,lasti,pending,capacity,displag,numutxo,numbalances,numrecv,done,numhashes,numcached,numsaved,numemit,numbQ=0; struct iguana_block *block; bits256 hash2; struct iguana_blockreq *breq; int64_t spaceused=0,estsize = 0; struct iguana_bundle *currentbp,*lastbp,*bp,*lastpending = 0,*firstgap = 0; uint32_t now; if ( coin->bundlescount <= 0 ) return; @@ -1308,6 +1314,8 @@ void iguana_bundlestats(struct supernet_info *myinfo,struct iguana_info *coin,ch { if ( bp->converted != 0 ) numconverted++; + if ( bp->queued != 0 ) + numbQ++; if ( bp == coin->current && coin->blocks.hwmchain.height >= bp->bundleheight && coin->blocks.hwmchain.height < bp->bundleheight+bp->n ) { for (j=coin->blocks.hwmchain.height-bp->bundleheight+1; j<=bp->n; j++) @@ -1335,7 +1343,7 @@ void iguana_bundlestats(struct supernet_info *myinfo,struct iguana_info *coin,ch if ( ((block= bp->blocks[j]) == 0 || bp == coin->current) && bp->speculativecache[j] != 0 ) { if ( (block != 0 || (block= iguana_blockhashset("bundlestats3",coin,-1,bp->speculative[j],1)) != 0) && block->processed == 0 ) - iguana_cacheprocess(coin,bp,j); + iguana_cacheprocess(myinfo,coin,bp,j); numcached++; } if ( block != 0 && block->issued > 1 ) @@ -1348,7 +1356,7 @@ void iguana_bundlestats(struct supernet_info *myinfo,struct iguana_info *coin,ch bp->metric = coin->bundlescount - bp->hdrsi; if ( done > coin->bundlescount*IGUANA_HEADPERCENTAGE && bp->hdrsi > coin->bundlescount*IGUANA_TAILPERCENTAGE ) bp->metric *= 1000; - iguana_bundlecalcs(coin,bp,lag); + iguana_bundlecalcs(myinfo,coin,bp,lag); estsize += bp->estsize; numhashes += bp->numhashes; numcached += bp->numcached; @@ -1373,19 +1381,19 @@ void iguana_bundlestats(struct supernet_info *myinfo,struct iguana_info *coin,ch } else { - if ( firstgap == 0 && bp->numsaved < bp->n && bp->numcached < bp->n && (bp->ramchain.H.data == 0 || bp->hdrsi == coin->longestchain/coin->chain->bundlesize || iguana_bundleready(coin,bp,bp->numsaved == bp->n) != bp->n) ) + if ( firstgap == 0 && bp->queued == 0 && bp->numsaved < bp->n ) + iguana_bundleQ(myinfo,coin,bp,1000); + if ( firstgap == 0 && bp->numsaved < bp->n && bp->numcached < bp->n && (bp->ramchain.H.data == 0 || bp->hdrsi == coin->longestchain/coin->chain->bundlesize || iguana_bundleready(myinfo,coin,bp,bp->numsaved == bp->n) != bp->n) ) { //printf("firstgap <- [%d] emit.%u bp->n.%d numsaved.%d numcached.%d numhashes.%d\n",bp->hdrsi,bp->emitfinish,bp->n,bp->numsaved,bp->numcached,bp->numhashes); firstgap = bp; - if ( bp->queued == 0 ) - iguana_bundleQ(coin,bp,1000); } //else printf("[%d] emit.%u bp->n.%d numsaved.%d numcached.%d numhashes.%d\n",bp->hdrsi,bp->emitfinish,bp->n,bp->numsaved,bp->numcached,bp->numhashes); if ( bp->emitfinish == 0 ) { if ( lastpending == 0 && bp->queued == 0 ) - iguana_bundleQ(coin,bp,1000); + iguana_bundleQ(myinfo,coin,bp,1000); if ( firstgap != 0 && bp->numsaved < bp->n && ++pending == coin->MAXBUNDLES ) { lastpending = bp; @@ -1433,12 +1441,17 @@ void iguana_bundlestats(struct supernet_info *myinfo,struct iguana_info *coin,ch if ( (bp= firstgap) != 0 )//&& coin->PREFETCHLAG < 0 ) { if ( bp != coin->current ) - printf("new 1st.%d\n",bp->hdrsi); + { + printf("%s new 1st.%d\n",coin->symbol,bp->hdrsi); + iguana_bundleissuemissing(myinfo,coin,bp,1 + (rand() % 3),1.); + if ( bp->queued == 0 ) + iguana_bundleQ(myinfo,coin,bp,0); + } //else printf("issue 1st.%d\n",bp->hdrsi); - for (i=0; in; i++) - if ( GETBIT(bp->haveblock,i) == 0 ) - bp->issued[i] = 0; - iguana_bundleissuemissing(myinfo,coin,bp,1 + (rand() % 3),1.); + //for (i=0; in; i++) + // if ( GETBIT(bp->haveblock,i) == 0 ) + // bp->issued[i] = 0; + //iguana_bundleissuemissing(myinfo,coin,bp,1 + (rand() % 3),1.); } if ( (coin->current= firstgap) == 0 ) { @@ -1468,7 +1481,7 @@ void iguana_bundlestats(struct supernet_info *myinfo,struct iguana_info *coin,ch } else if ( coin->stucktime != 0 ) { - struct iguana_blockreq *breq; int32_t n,lag; //priority=3, + int32_t n,lag; //priority=3, lag = (int32_t)time(NULL) - coin->stucktime; //printf("NONZ stucktime.%u lag.%d iters.%d vs %d metric.%d\n",coin->stucktime,lag,coin->stuckiters,lag/coin->MAXSTUCKTIME,smetric); if ( (lag/coin->MAXSTUCKTIME) > coin->stuckiters ) @@ -1492,7 +1505,7 @@ void iguana_bundlestats(struct supernet_info *myinfo,struct iguana_info *coin,ch if ( GETBIT(bp->haveblock,i) == 0 ) bp->issued[i] = 0; if ( (n= iguana_bundleissuemissing(myinfo,coin,bp,3,1.)) > 0 ) - printf("issued %d priority requests [%d] to unstick stuckiters.%d lag.%d\n",n,bp->hdrsi,coin->stuckiters,lag); + printf("%s issued %d priority requests [%d] to unstick stuckiters.%d lag.%d\n",coin->symbol,n,bp->hdrsi,coin->stuckiters,lag); //else printf("no bundlerequests issued\n"); } } //else printf("stuck metric.%d\n",smetric); @@ -1501,7 +1514,7 @@ void iguana_bundlestats(struct supernet_info *myinfo,struct iguana_info *coin,ch coin->stucktime = coin->stuckiters = 0; if ( coin->stucktime != 0 && time(NULL)-coin->stucktime > coin->maxstuck ) coin->maxstuck = (uint32_t)time(NULL) - coin->stucktime; - sprintf(str,"%s.RT%d u.%d+c.%d b.%d v.%d (%d+%d/%d 1st.%d).s%d to %d N[%d] h.%d r.%d c.%d s.%d d.%d E.%d maxB.%d peers.%d/%d Q.(%d %d) (L.%d %d:%d) M.%d %s ledger.%08llx supply %.8f",coin->symbol,coin->RTheight,numutxo,numconverted,numbalances,iguana_validated(coin),firstgap!=0?firstgap->numcached:-1,firstgap!=0?firstgap->numsaved:-1,firstgap!=0?firstgap->numhashes:-1,firstgap!=0?firstgap->hdrsi:-1,firstgap!=0?firstgap->numspec:-1,coin->lastpending!=0?coin->lastpending->hdrsi:0,count,numhashes,coin->blocksrecv,numcached,numsaved,done,numemit,coin->MAXBUNDLES,p,coin->MAXPEERS,queue_size(&coin->priorityQ),queue_size(&coin->blocksQ),coin->longestchain,coin->longestchain/coin->chain->bundlesize,coin->longestchain%coin->chain->bundlesize,coin->blocks.hwmchain.height,bits256_str(str5,coin->blocks.hwmchain.RO.hash2),(long long)coin->utxoaddrhash.txid,dstr(coin->histbalance)+dstr(coin->RTcredits)-dstr(coin->RTdebits)); + sprintf(str,"%s.RT%d u.%d+c.%d b.%d v.%d (%d+%d/%d 1st.%d).s%d to %d N[%d] h.%d r.%d c.%d s.%d d.%d E.%d maxB.%d peers.%d/%d Q.(%d %d) (L.%d %d:%d) M.%d %s ledger.%08llx supply %.8f sigs %u:%u",coin->symbol,coin->RTheight,numutxo,numconverted,numbalances,iguana_validated(coin),firstgap!=0?firstgap->numcached:-1,firstgap!=0?firstgap->numsaved:-1,firstgap!=0?firstgap->numhashes:-1,firstgap!=0?firstgap->hdrsi:-1,firstgap!=0?firstgap->numspec:-1,coin->lastpending!=0?coin->lastpending->hdrsi:0,count,numhashes,coin->blocksrecv,numcached,numsaved,done,numemit,coin->MAXBUNDLES,p,coin->MAXPEERS,queue_size(&coin->priorityQ),queue_size(&coin->blocksQ),coin->longestchain,coin->longestchain/coin->chain->bundlesize,coin->longestchain%coin->chain->bundlesize,coin->blocks.hwmchain.height,bits256_str(str5,coin->blocks.hwmchain.RO.hash2),(long long)coin->utxoaddrhash.txid,dstr(coin->histbalance)+dstr(coin->RTcredits)-dstr(coin->RTdebits),coin->sigserrs,coin->sigsvalidated); //if( strcmp("BTC",coin->symbol) == 0 ) // printf("%s\n",str); if ( coin->current != 0 && coin->current->hdrsi == coin->longestchain/coin->chain->bundlesize && numemit == coin->current->hdrsi && numutxo == coin->bundlescount-1 ) @@ -1518,7 +1531,7 @@ void iguana_bundlestats(struct supernet_info *myinfo,struct iguana_info *coin,ch //printf("bundleQ.[%d]\n",j); bp->balancefinish = bp->startutxo = 0; bp->utxofinish = 1; - iguana_bundleQ(coin,bp,1000); + iguana_bundleQ(myinfo,coin,bp,1000); } } } @@ -1530,10 +1543,10 @@ void iguana_bundlestats(struct supernet_info *myinfo,struct iguana_info *coin,ch logfp = fopen("debug.log","wb"); if ( logfp != 0 ) { - fprintf(logfp,"%s bQ.%d %d:%02d:%02d stuck.%d max.%d\n",str,queue_size(&bundlesQ),(int32_t)difft.x/3600,(int32_t)(difft.x/60)%60,(int32_t)difft.x%60,coin->stucktime!=0?(uint32_t)time(NULL) - coin->stucktime:0,coin->maxstuck); + fprintf(logfp,"%s bQ.%d %d:%02d:%02d stuck.%d max.%d\n",str,numbQ,(int32_t)difft.x/3600,(int32_t)(difft.x/60)%60,(int32_t)difft.x%60,coin->stucktime!=0?(uint32_t)time(NULL) - coin->stucktime:0,coin->maxstuck); fflush(logfp); } - //printf("%s bQ.%d %d:%02d:%02d stuck.%d max.%d\n",str,queue_size(&bundlesQ),(int32_t)difft.x/3600,(int32_t)(difft.x/60)%60,(int32_t)difft.x%60,coin->stucktime!=0?(uint32_t)time(NULL) - coin->stucktime:0,coin->maxstuck); + //printf("%s bQ.%d %d:%02d:%02d stuck.%d max.%d\n",str,numbQ,(int32_t)difft.x/3600,(int32_t)(difft.x/60)%60,(int32_t)difft.x%60,coin->stucktime!=0?(uint32_t)time(NULL) - coin->stucktime:0,coin->maxstuck); strcpy(coin->lastdispstr,str); if ( (rand() % 100) == 0 ) myallocated(0,0); @@ -1551,5 +1564,11 @@ void iguana_bundlestats(struct supernet_info *myinfo,struct iguana_info *coin,ch iguana_setmaxbundles(coin); strcpy(coin->statusstr,str); coin->estsize = estsize; + if ( queue_size(&coin->priorityQ) > 10000 ) + { + while ( (breq= queue_dequeue(&coin->priorityQ,0)) != 0 ) + myfree(breq,sizeof(*breq)); + //printf("cleared priorityQ\n"); + } } diff --git a/iguana/iguana_chains.c b/iguana/iguana_chains.c index d2c05b78f..eb073d680 100755 --- a/iguana/iguana_chains.c +++ b/iguana/iguana_chains.c @@ -161,21 +161,21 @@ bits256 iguana_calcblockhash(char *symbol,int32_t (*hashalgo)(uint8_t *blockhash return(hash2); } -bits256 iguana_chaingenesis(char *symbol,uint8_t zcash,uint8_t auxpow,int32_t (*hashalgo)(uint8_t *blockhashp,uint8_t *serialized,int32_t len),bits256 genesishash,char *genesisblock,char *hashalgostr,int32_t version,uint32_t timestamp,uint32_t nBits,uint32_t nonce,bits256 merkle_root) +bits256 iguana_chaingenesis(struct supernet_info *myinfo,char *symbol,uint8_t zcash,uint8_t auxpow,int32_t (*hashalgo)(uint8_t *blockhashp,uint8_t *serialized,int32_t len),bits256 genesishash,char *genesisblock,char *hashalgostr,int32_t version,uint32_t timestamp,uint32_t nBits,uint32_t nonce,bits256 merkle_root) { - struct iguana_msgblock msg; int32_t len; bits256 hash2; char blockhashstr[256]; uint8_t serialized[8192]; - memset(&msg,0,sizeof(msg)); - msg.H.version = version; - msg.H.merkle_root = merkle_root; - msg.H.timestamp = timestamp; - msg.H.bits = nBits; - msg.H.nonce = nonce; + struct iguana_msgzblock zmsg; struct iguana_msgblock *msg = (void *)&zmsg; int32_t len; bits256 hash2; char blockhashstr[256]; uint8_t serialized[8192]; + memset(&zmsg,0,sizeof(zmsg)); + msg->H.version = version; + msg->H.merkle_root = merkle_root; + msg->H.timestamp = timestamp; + msg->H.bits = nBits; + msg->H.nonce = nonce; if ( zcash != 0 ) printf("need to handle zcash genesis\n"); if ( hashalgostr != 0 && strcmp(hashalgostr,"sha256") != 0 ) hashalgo = iguana_hashalgo(hashalgostr); else hashalgo = blockhash_sha256; - len = iguana_rwblock(symbol,zcash,auxpow,hashalgo,1,&hash2,serialized,&msg,sizeof(1024)); + len = iguana_rwblock(myinfo,symbol,zcash,auxpow,hashalgo,1,&hash2,serialized,&zmsg,sizeof(1024)); blockhashstr[0] = 0; init_hexbytes_noT(blockhashstr,hash2.bytes,sizeof(hash2)); char str[65],str2[65]; @@ -284,7 +284,7 @@ uint16_t extract_userpass(char *serverport,char *userpass,char *coinstr,char *us return(port); } -void iguana_chainparms(struct iguana_chain *chain,cJSON *argjson) +void iguana_chainparms(struct supernet_info *myinfo,struct iguana_chain *chain,cJSON *argjson) { extern char Userhome[]; char *path,conf[512],*hexstr,genesisblock[1024]; uint16_t port; cJSON *rpair,*genesis,*rewards,*item; int32_t i,n,m; uint32_t nBits; uint8_t tmp[4]; @@ -341,6 +341,8 @@ void iguana_chainparms(struct iguana_chain *chain,cJSON *argjson) chain->rpcport = 14632; } chain->zcash = juint(argjson,"zcash"); + chain->debug = juint(argjson,"debug"); + chain->fixit = juint(argjson,"fixit"); if ( (chain->normal_txversion= juint(argjson,"normal_txversion")) == 0 ) chain->normal_txversion = IGUANA_NORMAL_TXVERSION; if ( (chain->locktime_txversion= juint(argjson,"locktime_txversion")) == 0 ) @@ -384,7 +386,7 @@ void iguana_chainparms(struct iguana_chain *chain,cJSON *argjson) decode_hex((uint8_t *)&chain->wiftype,1,hexstr); } } - printf("addrtypes.(%02x %02x %02x) (%d %d %d)\n",chain->pubtype,chain->p2shtype,chain->wiftype,chain->pubtype,chain->p2shtype,chain->wiftype); + printf("MINCONFIRMS.%d addrtypes.(%02x %02x %02x) (%d %d %d)\n",chain->minconfirms,chain->pubtype,chain->p2shtype,chain->wiftype,chain->pubtype,chain->p2shtype,chain->wiftype); if ( (hexstr= jstr(argjson,"netmagic")) != 0 && strlen(hexstr) == 8 ) decode_hex((uint8_t *)chain->netmagic,4,hexstr); if ( (hexstr= jstr(argjson,"unitval")) != 0 && strlen(hexstr) == 2 ) @@ -411,7 +413,7 @@ void iguana_chainparms(struct iguana_chain *chain,cJSON *argjson) chain->nBits = nBits; chain->unitval = (nBits >> 24); printf("NETMAGIC %08x unitval.%02x nBits.%08x\n",*(uint32_t *)chain->netmagic,chain->unitval,chain->nBits); - chain->genesishash2 = iguana_chaingenesis(chain->symbol,chain->zcash,chain->auxpow,chain->hashalgo,chain->genesishash2,genesisblock,jstr(genesis,"hashalgo"),juint(genesis,"version"),juint(genesis,"timestamp"),nBits,juint(genesis,"nonce"),jbits256(genesis,"merkle_root")); + chain->genesishash2 = iguana_chaingenesis(myinfo,chain->symbol,chain->zcash,chain->auxpow,chain->hashalgo,chain->genesishash2,genesisblock,jstr(genesis,"hashalgo"),juint(genesis,"version"),juint(genesis,"timestamp"),nBits,juint(genesis,"nonce"),jbits256(genesis,"merkle_root")); memcpy(chain->genesis_hashdata,chain->genesishash2.bytes,32); char str[65]; init_hexbytes_noT(str,chain->genesis_hashdata,32); chain->genesis_hash = clonestr(str); @@ -433,7 +435,7 @@ void iguana_chainparms(struct iguana_chain *chain,cJSON *argjson) if ( (hexstr= jstr(argjson,"genesisblock")) != 0 ) { uint8_t hexbuf[1024],*ptr,*data; int32_t datalen,hdrsize; - hdrsize = chain->zcash != 0 ? sizeof(struct iguana_msgblockhdr_zcash) : sizeof(struct iguana_msgblockhdr); + hdrsize = chain->zcash != 0 ? sizeof(struct iguana_msgzblockhdr) : sizeof(struct iguana_msgblockhdr); chain->genesis_hex = clonestr(hexstr); data = get_dataptr(BASILISK_HDROFFSET,&ptr,&datalen,hexbuf,sizeof(hexbuf),hexstr); chain->genesishash2 = iguana_calcblockhash(chain->symbol,chain->hashalgo,data,hdrsize); @@ -460,7 +462,7 @@ void iguana_chainparms(struct iguana_chain *chain,cJSON *argjson) } } -void iguana_chaininit(struct iguana_chain *chain,int32_t hasheaders,cJSON *argjson) +void iguana_chaininit(struct supernet_info *myinfo,struct iguana_chain *chain,int32_t hasheaders,cJSON *argjson) { int32_t i; if ( chain->hashalgo != 0 ) @@ -482,11 +484,11 @@ void iguana_chaininit(struct iguana_chain *chain,int32_t hasheaders,cJSON *argjs chain->txfee = 10000; chain->havecltv = 1; } - else chain->txfee = 1000000; + else chain->txfee = 10000; if ( chain->unitval == 0 ) chain->unitval = 0x1e; if ( argjson != 0 ) - iguana_chainparms(chain,argjson); + iguana_chainparms(myinfo,chain,argjson); if ( hasheaders != 0 ) { strcpy(chain->gethdrsmsg,"getheaders"); @@ -497,6 +499,8 @@ void iguana_chaininit(struct iguana_chain *chain,int32_t hasheaders,cJSON *argjs strcpy(chain->gethdrsmsg,"getblocks"); chain->bundlesize = _IGUANA_BLOCKHASHES; } + if ( chain->zcash != 0 ) + chain->bundlesize = 500; if ( strcmp(chain->symbol,"BTC") == 0 ) chain->bundlesize = 100; decode_hex((uint8_t *)chain->genesis_hashdata,32,(char *)chain->genesis_hash); @@ -504,7 +508,7 @@ void iguana_chaininit(struct iguana_chain *chain,int32_t hasheaders,cJSON *argjs chain->rpcport = chain->portp2p + 1; } -struct iguana_chain *iguana_chainfind(char *name,cJSON *argjson,int32_t createflag) +struct iguana_chain *iguana_chainfind(struct supernet_info *myinfo,char *name,cJSON *argjson,int32_t createflag) { struct iguana_chain *chain; uint32_t i; for (i=0; isymbol,"BTCD") != 0,argjson); + iguana_chaininit(myinfo,chain,strcmp(chain->symbol,"BTCD") != 0,argjson); return(chain); } continue; } if ( strcmp(name,chain->symbol) == 0 ) { - iguana_chaininit(chain,strcmp(chain->symbol,"BTCD") != 0,argjson); + iguana_chaininit(myinfo,chain,strcmp(chain->symbol,"BTCD") != 0,argjson); return(chain); } } chain = calloc(1,sizeof(*chain)); - iguana_chaininit(chain,1,argjson); + iguana_chaininit(myinfo,chain,1,argjson); return(chain); } -struct iguana_chain *iguana_findmagic(uint8_t netmagic[4]) +struct iguana_chain *iguana_findmagic(struct supernet_info *myinfo,uint8_t netmagic[4]) { struct iguana_chain *chain; uint8_t i; for (i=0; iname[0] == 0 || chain->genesis_hash == 0 ) continue; if ( memcmp(netmagic,chain->netmagic,4) == 0 ) - return(iguana_chainfind((char *)chain->symbol,0,0)); + return(iguana_chainfind(myinfo,(char *)chain->symbol,0,0)); } return NULL; } @@ -558,7 +562,7 @@ uint64_t iguana_miningreward(struct iguana_info *coin,uint32_t blocknum) return(reward); } -struct iguana_chain *iguana_createchain(cJSON *json) +struct iguana_chain *iguana_createchain(struct supernet_info *myinfo,cJSON *json) { char *symbol,*name; struct iguana_chain *chain = 0; if ( ((symbol= jstr(json,"newcoin")) != 0 || (symbol= jstr(json,"name")) != 0) && strlen(symbol) < 8 ) @@ -567,7 +571,7 @@ struct iguana_chain *iguana_createchain(cJSON *json) strcpy(chain->symbol,symbol); if ( (name= jstr(json,"description")) != 0 && strlen(name) < 32 ) strcpy(chain->name,name); - iguana_chaininit(chain,juint(json,"hasheaders"),json); + iguana_chaininit(myinfo,chain,juint(json,"hasheaders"),json); } return(chain); } diff --git a/iguana/iguana_exchanges.c b/iguana/iguana_exchanges.c index c7839bebb..8ff60232a 100755 --- a/iguana/iguana_exchanges.c +++ b/iguana/iguana_exchanges.c @@ -1035,7 +1035,7 @@ struct exchange_info *exchange_create(char *exchangestr,cJSON *argjson) if ( stringbits((char *)Exchange_funcs[i]->name) == stringbits((char *)Exchange_funcs[j]->name) ) { printf("FIRST 8 chars of Exchange_func[].name must be unique: %d.(%s) vs %d.(%s)\n",i,Exchange_funcs[i]->name,j,Exchange_funcs[j]->name); - exit(-1); + iguana_exit(0,0); } } didinit = 1; @@ -1072,18 +1072,21 @@ struct exchange_info *exchange_create(char *exchangestr,cJSON *argjson) exchange->exchangeid = exchangeid; safecopy(exchange->name,exchangestr,sizeof(exchange->name)); exchange->exchangebits = stringbits(exchange->name); - if ( (exchange->pollgap= juint(argjson,"pollgap")) < EXCHANGES777_MINPOLLGAP ) - exchange->pollgap = EXCHANGES777_MINPOLLGAP; - if ( (key= jstr(argjson,"apikey")) != 0 || (key= jstr(argjson,"key")) != 0 ) - safecopy(exchange->apikey,key,sizeof(exchange->apikey)); - if ( (secret= jstr(argjson,"apisecret")) != 0 || (secret= jstr(argjson,"secret")) != 0 ) - safecopy(exchange->apisecret,secret,sizeof(exchange->apisecret)); - if ( (userid= jstr(argjson,"userid")) != 0 ) - safecopy(exchange->userid,userid,sizeof(exchange->userid)); - if ( (tradepassword= jstr(argjson,"tradepassword")) != 0 ) - safecopy(exchange->tradepassword,tradepassword,sizeof(exchange->tradepassword)); - if ( (exchange->commission= jdouble(argjson,"commission")) > 0. ) - exchange->commission *= .01; + if ( argjson != 0 ) + { + if ( (exchange->pollgap= juint(argjson,"pollgap")) < EXCHANGES777_MINPOLLGAP ) + exchange->pollgap = EXCHANGES777_MINPOLLGAP; + if ( (key= jstr(argjson,"apikey")) != 0 || (key= jstr(argjson,"key")) != 0 ) + safecopy(exchange->apikey,key,sizeof(exchange->apikey)); + if ( (secret= jstr(argjson,"apisecret")) != 0 || (secret= jstr(argjson,"secret")) != 0 ) + safecopy(exchange->apisecret,secret,sizeof(exchange->apisecret)); + if ( (userid= jstr(argjson,"userid")) != 0 ) + safecopy(exchange->userid,userid,sizeof(exchange->userid)); + if ( (tradepassword= jstr(argjson,"tradepassword")) != 0 ) + safecopy(exchange->tradepassword,tradepassword,sizeof(exchange->tradepassword)); + if ( (exchange->commission= jdouble(argjson,"commission")) > 0. ) + exchange->commission *= .01; + } printf("ADDEXCHANGE.(%s) [%s, %s, %s] commission %.3f%% -> exchangeid.%d\n",exchangestr,exchange->apikey,exchange->userid,exchange->apisecret,exchange->commission * 100.,exchangeid); Exchanges[exchangeid] = exchange; //instantdex_FSMinit(); @@ -1132,7 +1135,7 @@ void exchanges777_init(struct supernet_info *myinfo,cJSON *exchanges,int32_t sle { if ( strcmp(Exchange_funcs[i]->name,"PAX") == 0 || strcmp(Exchange_funcs[i]->name,"truefx") == 0 || strcmp(Exchange_funcs[i]->name,"fxcm") == 0 || strcmp(Exchange_funcs[i]->name,"instaforx") == 0 ) continue; - if ( ((exchange= exchanges777_find(Exchange_funcs[i]->name)) == 0 && (exchange= exchange_create(Exchange_funcs[i]->name,item)) != 0) || (exchange= exchanges777_info(Exchange_funcs[i]->name,sleepflag,argjson,0)) != 0 ) + if ( ((exchange= exchanges777_find(Exchange_funcs[i]->name)) == 0 && (exchange= exchange_create(Exchange_funcs[i]->name,0)) != 0) || (exchange= exchanges777_info(Exchange_funcs[i]->name,sleepflag,argjson,0)) != 0 ) myinfo->tradingexchanges[myinfo->numexchanges++] = exchange; } free_json(argjson); diff --git a/iguana/iguana_init.c b/iguana/iguana_init.c index 62de02e5b..b0b341207 100755 --- a/iguana/iguana_init.c +++ b/iguana/iguana_init.c @@ -92,7 +92,7 @@ void iguana_initcoin(struct iguana_info *coin,cJSON *argjson) bits256 iguana_genesis(struct supernet_info *myinfo,struct iguana_info *coin,struct iguana_chain *chain) { - struct iguana_block *block,*ptr; struct iguana_msgblock msg; bits256 hash2; char str[65],str2[65]; uint8_t buf[8192],blockspace[sizeof(*block)+sizeof(*block->zRO)]; int32_t height,auxback; + struct iguana_block *block,*ptr; struct iguana_msgzblock zmsg; bits256 hash2; char str[65],str2[65]; uint8_t buf[8192],blockspace[sizeof(*block)+sizeof(struct iguana_zblock)]; int32_t height,auxback; if ( coin == 0 || chain == 0 ) return(GENESIS_PUBKEY); block = (void *)blockspace; @@ -106,37 +106,42 @@ bits256 iguana_genesis(struct supernet_info *myinfo,struct iguana_info *coin,str return(hash2); } decode_hex(buf,(int32_t)strlen(chain->genesis_hex)/2,(char *)chain->genesis_hex); - hash2 = iguana_calcblockhash(coin->symbol,coin->chain->hashalgo,buf,sizeof(struct iguana_msgblockhdr)); - auxback = coin->chain->auxpow, coin->chain->auxpow = 0; - iguana_rwblock(coin->symbol,coin->chain->zcash,coin->chain->auxpow,coin->chain->hashalgo,0,&hash2,buf,&msg,sizeof(buf)); - coin->chain->auxpow = auxback; + hash2 = iguana_calcblockhash(coin->symbol,coin->chain->hashalgo,buf,chain->zcash == 0 ? sizeof(struct iguana_msgblockhdr) : sizeof(struct iguana_msgzblockhdr)); + auxback = chain->auxpow, chain->auxpow = 0; + iguana_rwblock(myinfo,coin->symbol,coin->chain->zcash,chain->auxpow,chain->hashalgo,0,&hash2,buf,(void *)&zmsg,sizeof(buf)); + chain->auxpow = auxback; if ( coin->virtualchain == 0 && coin->MAXPEERS > 1 ) { - if ( memcmp(hash2.bytes,chain->genesis_hashdata,sizeof(hash2)) != 0 ) + if ( chain->debug == 0 && memcmp(hash2.bytes,chain->genesis_hashdata,sizeof(hash2)) != 0 ) { bits256_str(str,hash2); - printf("genesis mismatch? zcash.%d calculated %s vs %s\n",coin->chain->zcash,str,bits256_str(str2,*(bits256 *)chain->genesis_hashdata)); + printf("genesis mismatch? zcash.%d calculated %s vs %s\n",chain->zcash,str,bits256_str(str2,*(bits256 *)chain->genesis_hashdata)); memcpy(hash2.bytes,chain->genesis_hashdata,sizeof(hash2)); } + if ( coin->chain->debug != 0 ) + memcpy(hash2.bytes,chain->genesis_hashdata,sizeof(hash2)); } else memcpy(hash2.bytes,chain->genesis_hashdata,sizeof(hash2)); bits256_str(str,hash2); - printf("genesis.(%s) zcash.%d len.%d hash.%s\n",chain->genesis_hex,coin->chain->zcash,(int32_t)sizeof(msg.H),str); - iguana_blockconv(coin->chain->zcash,coin->chain->auxpow,block,&msg,hash2,0); + if ( chain->debug != 0 ) + printf("genesis.(%s) zcash.%d len.%d hash.%s\n",chain->genesis_hex,chain->zcash,(int32_t)sizeof(zmsg.zH),str); + iguana_blockconv(chain->zcash,chain->auxpow,(void *)block,&zmsg,hash2,0); block->RO.txn_count = 1; block->RO.numvouts = 1; - block->RO.allocsize = (int32_t)(sizeof(*block) + coin->chain->zcash*sizeof(*block->zRO)); + if ( chain->zcash != 0 ) + block->RO.allocsize = sizeof(struct iguana_zblock); + else block->RO.allocsize = (int32_t)sizeof(*block); iguana_gotdata(coin,0,0); if ( (ptr= iguana_blockhashset("genesis0",coin,0,hash2,1)) != 0 ) { - iguana_blockcopy(coin->chain->zcash,coin->chain->auxpow,coin,ptr,block); - iguana_blocksizecheck("genesis ptr",coin->chain->zcash,ptr); + iguana_blockcopy(chain->zcash,chain->auxpow,coin,ptr,block); + iguana_blocksizecheck("genesis ptr",chain->zcash,ptr); ptr->mainchain = 1; ptr->height = 0; //coin->blocks.RO[0] = block.RO; if ( coin->virtualchain != 0 || (height= iguana_chainextend(myinfo,coin,ptr)) == 0 ) { - iguana_blockzcopy(coin->chain->zcash,block,ptr); - iguana_blockzcopy(coin->chain->zcash,(void *)&coin->blocks.hwmchain,ptr); + iguana_blockzcopy(chain->zcash,block,ptr); + iguana_blockzcopy(chain->zcash,(void *)&coin->blocks.hwmchain,ptr); printf("size.%d genesis block PoW %f ptr %f\n",block->RO.allocsize,block->PoW,ptr->PoW); coin->blocks.recvblocks = coin->blocks.issuedblocks = 1; } else printf("genesis block doesnt validate for %s ht.%d\n",coin->symbol,height); @@ -194,7 +199,8 @@ int32_t iguana_savehdrs(struct iguana_info *coin) printf("new hdrs.txt %ld vs (%s) %ld\n",ftell(fp),fname,(long)OS_filesize(fname)); fclose(fp); OS_renamefile(fname,oldfname); - OS_copyfile(tmpfname,fname,1); + OS_renamefile(tmpfname,fname); + //OS_copyfile(tmpfname,fname,1); } else fclose(fp); if ( fp2 != 0 ) { @@ -210,7 +216,7 @@ int32_t iguana_savehdrs(struct iguana_info *coin) return(retval); } -int32_t iguana_bundleinitmap(struct iguana_info *coin,struct iguana_bundle *bp,int32_t height,bits256 hash2,bits256 hash1) +int32_t iguana_bundleinitmap(struct supernet_info *myinfo,struct iguana_info *coin,struct iguana_bundle *bp,int32_t height,bits256 hash2,bits256 hash1) { char str[65]; struct iguana_block *block; bp->bundleheight = height; @@ -226,7 +232,7 @@ int32_t iguana_bundleinitmap(struct iguana_info *coin,struct iguana_bundle *bp,i coin->current = coin->bundles[0] = bp; if ( (block= iguana_blockfind("parse",coin,hash2)) != 0 ) block->mainchain = 1, block->height = height; - if ( iguana_bundleload(coin,&bp->ramchain,bp,2) != 0 ) + if ( iguana_bundleload(myinfo,coin,&bp->ramchain,bp,2) != 0 ) { if ( coin->current != 0 && coin->current->hdrsi+1 == bp->hdrsi ) coin->current = bp; @@ -240,7 +246,7 @@ int32_t iguana_bundleinitmap(struct iguana_info *coin,struct iguana_bundle *bp,i bp->emitfinish = 0; iguana_blockQ("init",coin,bp,0,hash2,1); //printf("init reqhdrs.%d\n",bp->bundleheight); - queue_enqueue("hdrsQ",&coin->hdrsQ,queueitem(str),1); + //queue_enqueue("hdrsQ",&coin->hdrsQ,queueitem(str),1); memset(&hash2,0,sizeof(hash2)); bp->emitfinish = 0; return(-1); @@ -253,6 +259,10 @@ void iguana_parseline(struct supernet_info *myinfo,struct iguana_info *coin,int3 struct iguana_peer *addr; struct iguana_bundle *bp; bits256 allhash,hash2,hash1,zero,lastbundle; if ( coin->FULLNODE == 0 && coin->VALIDATENODE == 0 && iter > 0 ) return; + OS_randombytes((uint8_t *)&j,sizeof(j)); + if ( j < 0 ) + j = -j; + srand(j); memset(&zero,0,sizeof(zero)); lastbundle = zero; if ( coin->MAXPEERS > IGUANA_MAXPEERS ) @@ -292,7 +302,7 @@ void iguana_parseline(struct supernet_info *myinfo,struct iguana_info *coin,int3 //printf("parse line.(%s) maxpeers.%d\n",line,coin->MAXPEERS); if ( iter == 0 ) { - if ( m < 32 || (m < coin->MAXPEERS/2 && strcmp("BTCD",coin->symbol) != 0) )//&& m < 77.7 ) + if ( (m < 8 || (rand() % 2) == 0) && (m < 32 || m < coin->MAXPEERS/2) )//&& m < 77.7 ) { if ( 0 && m == 0 ) { @@ -333,7 +343,7 @@ void iguana_parseline(struct supernet_info *myinfo,struct iguana_info *coin,int3 { //printf("created bundle.%d\n",bp->hdrsi); memset(hash1.bytes,0,sizeof(hash1)); - iguana_bundleinitmap(coin,bp,height,hash2,hash1); + iguana_bundleinitmap(myinfo,coin,bp,height,hash2,hash1); lastbundle = hash2; } } @@ -362,7 +372,7 @@ void iguana_parseline(struct supernet_info *myinfo,struct iguana_info *coin,int3 } if ( height >= lastheight ) { - if ( iguana_bundleinitmap(coin,bp,height,hash2,hash1) == 0 ) + if ( iguana_bundleinitmap(myinfo,coin,bp,height,hash2,hash1) == 0 ) lastbundle = hash2, lastheight = height; } } @@ -459,7 +469,7 @@ void iguana_coinpurge(struct iguana_info *coin) coin->started = 0; while ( coin->idletime == 0 && coin->emitbusy > 0 ) { - printf("coinpurge.%s waiting for idle %lu emitbusy.%d\n",coin->symbol,time(NULL),coin->emitbusy); + printf("coinpurge.%s waiting for idle %u emitbusy.%d\n",coin->symbol,(uint32_t)time(NULL),coin->emitbusy); sleep(1); } coin->RTgenesis = 0; @@ -534,7 +544,7 @@ struct iguana_info *iguana_coinstart(struct iguana_info *coin,int32_t initialhei } } } - if ( coin->FULLNODE != 0 && coin->rpcloop == 0 ) + if ( coin->rpcloop == 0 ) { myinfo->argport = coin->chain->rpcport; coin->rpcloop = malloc(sizeof(pthread_t)); diff --git a/iguana/iguana_interpreter.c b/iguana/iguana_interpreter.c index 0ad66ed15..783f3896b 100755 --- a/iguana/iguana_interpreter.c +++ b/iguana/iguana_interpreter.c @@ -498,7 +498,7 @@ static int32_t iguana_pushdata(struct iguana_interpreter *stacks,int64_t num64,u struct iguana_stackdata Snum; cJSON *item = 0; char tmpstr[2048]; int32_t num = (int32_t)num64; if ( stacks->lastpath[stacks->ifdepth] < 0 ) return(0); - printf("PUSH.(%lld %p %d)\n",(long long)num64,numbuf,numlen); + //printf("PUSH.(%lld %p %d)\n",(long long)num64,numbuf,numlen); if ( stacks->maxstackdepth > 0 ) { /*if ( numbuf != 0 ) @@ -726,17 +726,26 @@ void iguana_stack(struct iguana_interpreter *stacks,struct iguana_stackdata *arg int32_t iguana_checksig(struct iguana_info *coin,struct iguana_stackdata pubkeyarg,struct iguana_stackdata sigarg,bits256 sigtxid) { - uint8_t pubkey[MAX_SCRIPT_ELEMENT_SIZE],sig[MAX_SCRIPT_ELEMENT_SIZE]; int32_t plen,siglen; + uint8_t pubkey[MAX_SCRIPT_ELEMENT_SIZE],sig[MAX_SCRIPT_ELEMENT_SIZE]; int32_t retval,plen,siglen; plen = iguana_databuf(pubkey,pubkeyarg); siglen = iguana_databuf(sig,sigarg); - int32_t i; for (i=0; i 0 && siglen > 0 && siglen < 74 ) - return(bitcoin_verify(coin->ctx,sig,siglen-1,sigtxid,pubkey,plen) == 0); + { + if ( (retval= (bitcoin_verify(coin->ctx,sig,siglen-1,sigtxid,pubkey,plen) == 0)) == 0 ) + { + if ( 1 ) + { + int32_t i; char str[65]; + for (i=0; i 0 ) { if ( (array= jarray(&n,interpreter,"args")) == 0 || (interpret != 0 && n != numvars) ) @@ -1017,8 +1029,8 @@ int32_t bitcoin_assembler(struct iguana_info *coin,cJSON *logarray,uint8_t scrip if ( V->suppress_pubkeys == 0 && (V->spendscript[0] != plen || V->spendscript[V->spendlen - 1] != IGUANA_OP_CHECKSIG || bitcoin_pubkeylen(&V->spendscript[1]) <= 0) ) { iguana_pushdata(stacks,0,V->signers[i].pubkey,plen); - printf(">>>>>>>>> suppress.%d pushdata plen.%d depth.%d\n",V->suppress_pubkeys,plen,stacks->stackdepth); - } else printf("<<<<<<<<<< skip pubkey push %d script[0].%d spendlen.%d depth.%d\n",plen,V->spendscript[0],V->spendlen,stacks->stackdepth); + //printf(">>>>>>>>> suppress.%d pushdata plen.%d depth.%d\n",V->suppress_pubkeys,plen,stacks->stackdepth); + } // else printf("<<<<<<<<<< skip pubkey push %d script[0].%d spendlen.%d depth.%d\n",plen,V->spendscript[0],V->spendlen,stacks->stackdepth); } } if ( V->userdatalen != 0 ) @@ -1143,7 +1155,7 @@ int32_t bitcoin_assembler(struct iguana_info *coin,cJSON *logarray,uint8_t scrip break; } HASH_FIND(hh,OPTABLE,str,j,op); - printf("{%s}\n",str); + //printf("{%s}\n",str); str += j; if ( op != 0 ) { @@ -1545,7 +1557,7 @@ int32_t bitcoin_assembler(struct iguana_info *coin,cJSON *logarray,uint8_t scrip } else if ( iguana_isnonz(stacks->stack[--stacks->stackdepth]) != 0 ) { - printf("Evaluate true, depth.%d errs.%d k.%d\n",stacks->stackdepth,errs,k); + //printf("Evaluate true, depth.%d errs.%d k.%d\n",stacks->stackdepth,errs,k); if ( errs == 0 ) jadd(interpreter,"result",jtrue()); else jadd(interpreter,"result",jfalse()); @@ -1554,9 +1566,9 @@ int32_t bitcoin_assembler(struct iguana_info *coin,cJSON *logarray,uint8_t scrip { jadd(interpreter,"result",jfalse()); printf("Evaluate FALSE, depth.%d errs.%d [0] size.%d num.%d\n",stacks->stackdepth,errs,stacks->stack[0].size,stacks->stack[0].U.val); + if ( stacks->logarray != 0 ) + printf("LOG.(%s)\n\n",jprint(stacks->logarray,0)); } - //if ( stacks->logarray != 0 ) - // printf("LOG.(%s)\n",jprint(stacks->logarray,0)); if ( numargs > 0 ) { for (i=0; iH.version),&msg->H.version); - len += iguana_rwbignum(rwflag,&serialized[len],sizeof(msg->H.prev_block),msg->H.prev_block.bytes); - len += iguana_rwbignum(rwflag,&serialized[len],sizeof(msg->H.merkle_root),msg->H.merkle_root.bytes); - len += iguana_rwnum(rwflag,&serialized[len],sizeof(msg->H.timestamp),&msg->H.timestamp); - len += iguana_rwnum(rwflag,&serialized[len],sizeof(msg->H.bits),&msg->H.bits); + uint32_t tmp; struct iguana_msgblock *msg = (void *)zmsg; int32_t len = 0; if ( zcash == 0 ) + { + len += iguana_rwnum(rwflag,&serialized[len],sizeof(msg->H.version),&msg->H.version); + len += iguana_rwbignum(rwflag,&serialized[len],sizeof(msg->H.prev_block),msg->H.prev_block.bytes); + len += iguana_rwbignum(rwflag,&serialized[len],sizeof(msg->H.merkle_root),msg->H.merkle_root.bytes); + len += iguana_rwnum(rwflag,&serialized[len],sizeof(msg->H.timestamp),&msg->H.timestamp); + len += iguana_rwnum(rwflag,&serialized[len],sizeof(msg->H.bits),&msg->H.bits); len += iguana_rwnum(rwflag,&serialized[len],sizeof(msg->H.nonce),&msg->H.nonce); + } else { - len += iguana_rwbignum(rwflag,&serialized[len],sizeof(msg->zH.bignonce),msg->zH.bignonce.bytes); + len += iguana_rwnum(rwflag,&serialized[len],sizeof(zmsg->zH.version),&zmsg->zH.version); + len += iguana_rwbignum(rwflag,&serialized[len],sizeof(zmsg->zH.prev_block),zmsg->zH.prev_block.bytes); + len += iguana_rwbignum(rwflag,&serialized[len],sizeof(zmsg->zH.merkle_root),zmsg->zH.merkle_root.bytes); + len += iguana_rwbignum(rwflag,&serialized[len],sizeof(zmsg->zH.reserved),zmsg->zH.reserved.bytes); + len += iguana_rwnum(rwflag,&serialized[len],sizeof(zmsg->zH.timestamp),&zmsg->zH.timestamp); + len += iguana_rwnum(rwflag,&serialized[len],sizeof(zmsg->zH.bits),&zmsg->zH.bits); + len += iguana_rwbignum(rwflag,&serialized[len],sizeof(zmsg->zH.bignonce),zmsg->zH.bignonce.bytes); //char str[65]; printf("prev.(%s) len.%d [%d %d %d]\n",bits256_str(str,msg->H.prev_block),len,serialized[len],serialized[len+1],serialized[len+2]); if ( rwflag != 0 ) - tmp = msg->zH.numelements; - len += iguana_rwvarint32(rwflag,&serialized[len],(uint32_t *)&tmp); - if ( rwflag == 0 ) - msg->zH.numelements = tmp; - if ( msg->zH.numelements != ZCASH_SOLUTION_ELEMENTS ) + memcpy(&serialized[len],zmsg->zH.var_numelements,sizeof(zmsg->zH.var_numelements)); + else memcpy(zmsg->zH.var_numelements,&serialized[len],sizeof(zmsg->zH.var_numelements)); + //printf("numelements: (%02x %02x %02x)\n",serialized[len],serialized[len+1],serialized[len+2]); + len += sizeof(zmsg->zH.var_numelements); + if ( iguana_rwvarint32(0,zmsg->zH.var_numelements,(uint32_t *)&tmp) != sizeof(zmsg->zH.var_numelements) ) + printf("rw.%d unexpected varint size for zmsg.zH.numelements <- %d %d %d\n",rwflag,zmsg->zH.var_numelements[0],zmsg->zH.var_numelements[1],zmsg->zH.var_numelements[2]); + if ( tmp != ZCASH_SOLUTION_ELEMENTS ) { int32_t i; for (i=0; i<157; i++) printf("%02x",serialized[i]); - printf(" unexpected ZCASH_SOLUTION_ELEMENTS, got %d vs %d len.%d\n",msg->zH.numelements,ZCASH_SOLUTION_ELEMENTS,len); + printf(" rw.%d unexpected ZCASH_SOLUTION_ELEMENTS, (%02x %02x %02x) expected %d tmp.%d len.%d\n",rwflag,zmsg->zH.var_numelements[0],zmsg->zH.var_numelements[1],zmsg->zH.var_numelements[2],ZCASH_SOLUTION_ELEMENTS,tmp,len); return(-1); } - len += iguana_rwzsolution(rwflag,&serialized[len],msg->zH.solution,ZCASH_SOLUTION_ELEMENTS); + len += iguana_rwzsolution(rwflag,&serialized[len],zmsg->zH.solution,tmp); } return(len); } -int32_t iguana_eatauxpow(int32_t rwflag,char *symbol,uint8_t zcash,uint8_t *serialized,int32_t maxlen) +int32_t iguana_eatauxpow(struct supernet_info *myinfo,int32_t rwflag,char *symbol,uint8_t zcash,uint8_t *serialized,int32_t maxlen) { int32_t len = 0; void *ptr; struct iguana_msgtx msg; struct OS_memspace MEM; bits256 auxhash2,coinbasetxid; struct iguana_msgmerkle *coinbase_branch,*blockchain_branch; struct iguana_msgblock parentblock; struct iguana_info *coin; if ( rwflag == 0 && (coin= iguana_coinfind(symbol)) != 0 && coin->chain->auxpow != 0 ) @@ -142,7 +152,7 @@ int32_t iguana_eatauxpow(int32_t rwflag,char *symbol,uint8_t zcash,uint8_t *seri memset(&MEM,0,sizeof(MEM)); ptr = calloc(1,1000000); iguana_meminit(&MEM,"auxpow",ptr,1000000,0); - len += iguana_rwtx(coin->chain->zcash,rwflag,&MEM,&serialized[len],&msg,(int32_t)MEM.totalsize,&coinbasetxid,coin->chain->isPoS,0); + len += iguana_rwtx(myinfo,coin->chain->zcash,rwflag,coin,&MEM,&serialized[len],&msg,(int32_t)MEM.totalsize,&coinbasetxid,coin->chain->isPoS,0); if ( len > maxlen ) return(-1); len += iguana_rwbignum(rwflag,&serialized[len],sizeof(auxhash2),auxhash2.bytes); @@ -154,7 +164,7 @@ int32_t iguana_eatauxpow(int32_t rwflag,char *symbol,uint8_t zcash,uint8_t *seri len += iguana_rwmerklebranch(rwflag,&serialized[len],blockchain_branch); if ( len > maxlen ) return(-1); - len += iguana_rwblockhdr(rwflag,zcash,&serialized[len],&parentblock); + len += iguana_rwblockhdr(rwflag,zcash,&serialized[len],(void *)&parentblock); if ( len > maxlen ) return(-1); free(ptr); @@ -164,7 +174,7 @@ int32_t iguana_eatauxpow(int32_t rwflag,char *symbol,uint8_t zcash,uint8_t *seri return(len); } -int32_t iguana_blockhdrsize(char *symbol,uint8_t zcash,uint8_t auxpow)//,uint8_t *serialized,int32_t maxlen) +int32_t iguana_blockhdrsize(char *symbol,uint8_t zcash,uint8_t auxpow) { int32_t len = 0; if ( zcash == 0 ) @@ -175,59 +185,83 @@ int32_t iguana_blockhdrsize(char *symbol,uint8_t zcash,uint8_t auxpow)//,uint8_t return(sizeof(struct iguana_msgblockhdr) + len); //else return(-1); - } else return((int32_t)(sizeof(struct iguana_msgblockhdr) - sizeof(uint32_t) + sizeof(struct iguana_msgblockhdr_zcash) + auxpow*sizeof(bits256))); + } else return((int32_t)(sizeof(struct iguana_msgzblockhdr) + auxpow*sizeof(bits256))); } -int32_t iguana_rwblock(char *symbol,uint8_t zcash,uint8_t auxpow,int32_t (*hashalgo)(uint8_t *blockhashp,uint8_t *serialized,int32_t len),int32_t rwflag,bits256 *hash2p,uint8_t *serialized,struct iguana_msgblock *msg,int32_t maxlen) +int32_t iguana_rwblock(struct supernet_info *myinfo,char *symbol,uint8_t zcash,uint8_t auxpow,int32_t (*hashalgo)(uint8_t *blockhashp,uint8_t *serialized,int32_t len),int32_t rwflag,bits256 *hash2p,uint8_t *serialized,struct iguana_msgzblock *zmsg,int32_t maxlen) { - int32_t len = 0; uint64_t x; - if ( (len= iguana_rwblockhdr(rwflag,zcash,serialized,msg)) < 0 ) + int32_t len = 0; uint64_t x; struct iguana_msgblock *msg = (void *)zmsg; + if ( (len= iguana_rwblockhdr(rwflag,zcash,serialized,zmsg)) < 0 ) { - printf("error rw.%d blockhdr zcash.%d\n",rwflag,zcash); + int32_t i; + for (i=0; iH.version,msg->H.timestamp,msg->H.bits,msg->H.nonce,bits256_str(str,msg->H.prev_block),(long long)msg->H.merkle_root.txid,bits256_str(str2,*hash2p)); if ( auxpow != 0 && (msg->H.version & 0x100) != 0 ) - len += iguana_eatauxpow(rwflag,symbol,zcash,&serialized[len],maxlen-len); + len += iguana_eatauxpow(myinfo,rwflag,symbol,zcash,&serialized[len],maxlen-len); if ( rwflag == 1 ) - x = msg->txn_count; + { + if ( zcash == 0 ) + x = zmsg->txn_count; + else x = msg->txn_count; + } + //char str[65],str2[65]; printf("zcash.%d len.%d: block version.%d timestamp.%u bits.%x nonce.%u prev.(%s) %llx hash2.%s zlen.%d\n",zcash,len,msg->H.version,msg->H.timestamp,msg->H.bits,msg->H.nonce,bits256_str(str,msg->H.prev_block),(long long)msg->H.merkle_root.txid,bits256_str(str2,*hash2p),(int32_t)sizeof(struct iguana_msgzblockhdr)); len += iguana_rwvarint(rwflag,&serialized[len],&x); if ( rwflag == 0 ) { char str[65]; bits256_str(str,*hash2p); if ( x < 65536 ) - msg->txn_count = (uint16_t)x; - else printf("txn_count overflow.%lld for %s\n",(long long)x,str); + { + if ( zcash != 0 ) + zmsg->txn_count = (uint16_t)x; + else msg->txn_count = (uint16_t)x; + } else printf("txn_count overflow.%lld for %s\n",(long long)x,str); } // ? txns tx[] Block transactions, in format of "tx" command return(len); } -int32_t iguana_serialize_block(struct iguana_chain *chain,bits256 *hash2p,uint8_t serialized[sizeof(struct iguana_msgblock)],struct iguana_block *block) +int32_t iguana_serialize_block(struct supernet_info *myinfo,struct iguana_chain *chain,bits256 *hash2p,uint8_t serialized[sizeof(struct iguana_msgzblock)],struct iguana_block *block) { - struct iguana_msgblock msg; int32_t i,len; - memset(&msg,0,sizeof(msg)); - msg.H.version = block->RO.version; - msg.H.prev_block = block->RO.prev_block; - msg.H.merkle_root = block->RO.merkle_root; - msg.H.timestamp = block->RO.timestamp; - msg.H.bits = block->RO.bits; + struct iguana_msgzblock zmsg; struct iguana_msgblock *msg = (void *)&zmsg; struct iguana_zblock *zblock; int32_t i,len; if ( chain->zcash == 0 ) - msg.H.nonce = block->RO.nonce; + { + memset(msg,0,sizeof(*msg)); + msg->H.version = block->RO.version; + msg->H.prev_block = block->RO.prev_block; + msg->H.merkle_root = block->RO.merkle_root; + msg->H.timestamp = block->RO.timestamp; + msg->H.bits = block->RO.bits; + msg->H.nonce = block->RO.nonce; + msg->txn_count = block->RO.txn_count; + len = iguana_rwblock(myinfo,chain->symbol,chain->zcash,chain->auxpow,chain->hashalgo,1,hash2p,serialized,&zmsg,IGUANA_MAXPACKETSIZE); + } else { - if ( block->RO.allocsize == sizeof(struct iguana_zblock) ) + memset(&zmsg,0,sizeof(zmsg)); + zblock = (void *)block; + zmsg.zH.version = zblock->RO.version; + zmsg.zH.prev_block = zblock->RO.prev_block; + zmsg.zH.merkle_root = zblock->RO.merkle_root; + zmsg.zH.timestamp = zblock->RO.timestamp; + zmsg.zH.bits = zblock->RO.bits; + zmsg.zH.bignonce = zblock->zRO.bignonce; + if ( iguana_rwvarint32(1,zmsg.zH.var_numelements,(uint32_t *)&zblock->zRO.numelements) != sizeof(zmsg.zH.var_numelements) ) + { + // printf("unexpected varint size for zmsg.zH.numelements <- %d %d %d\n",zmsg.zH.var_numelements[0],zmsg.zH.var_numelements[1],zmsg.zH.var_numelements[2]); + } + if ( zblock->zRO.numelements == ZCASH_SOLUTION_ELEMENTS ) { - msg.zH.bignonce = block->zRO[0].bignonce; - msg.zH.numelements = ZCASH_SOLUTION_ELEMENTS; for (i=0; izRO[0].solution[i]; - } else printf("iguana_serialize_block has missing zRO\n"); + zmsg.zH.solution[i] = zblock->zRO.solution[i]; + zmsg.txn_count = block->RO.txn_count; + len = iguana_rwblock(myinfo,chain->symbol,chain->zcash,chain->auxpow,chain->hashalgo,1,hash2p,serialized,(void *)&zmsg,IGUANA_MAXPACKETSIZE); + } else return(-1); } - msg.txn_count = block->RO.txn_count; - len = iguana_rwblock(chain->symbol,chain->zcash,chain->auxpow,chain->hashalgo,1,hash2p,serialized,&msg,IGUANA_MAXPACKETSIZE); return(len); } @@ -310,17 +344,15 @@ int32_t iguana_rwmsgalert(struct iguana_info *coin,int32_t rwflag,uint8_t *seria void iguana_gotversion(struct supernet_info *myinfo,struct iguana_info *coin,struct iguana_peer *addr,struct iguana_msgversion *vers) { - uint8_t serialized[sizeof(struct iguana_msghdr)]; char *retstr; + uint8_t serialized[sizeof(struct iguana_msghdr)]; //printf("gotversion from %s: starting height.%d services.%llx proto.%d (%s)\n",addr->ipaddr,vers->nStartingHeight,(long long)vers->nServices,vers->nVersion,vers->strSubVer); - if ( 0 && strncmp(vers->strSubVer,"/iguana",strlen("/iguana")) == 0 ) - { + if ( strncmp(vers->strSubVer,"/iguana",strlen("/iguana")) == 0 ) addr->supernet = 1, addr->basilisk = 0; - if ( (retstr= basilisk_addrelay_info(myinfo,0,(uint32_t)addr->ipbits,GENESIS_PUBKEY)) != 0 ) - free(retstr); - } else if ( strncmp(vers->strSubVer,"/basilisk",strlen("/basilisk")) == 0 ) + { addr->basilisk = 1, addr->supernet = 0; - if ( (vers->nServices & NODE_NETWORK) != 0 ) + } + //if ( (vers->nServices & NODE_NETWORK) != 0 ) { addr->protover = (vers->nVersion < PROTOCOL_VERSION) ? vers->nVersion : PROTOCOL_VERSION; //printf("(%s) proto.%d -> %d\n",addr->ipaddr,vers->nVersion,addr->protover); @@ -328,11 +360,8 @@ void iguana_gotversion(struct supernet_info *myinfo,struct iguana_info *coin,str addr->height = vers->nStartingHeight; addr->relayflag = 1; iguana_gotdata(coin,addr,addr->height); - iguana_queue_send(addr,0,serialized,"verack",0); - //iguana_send_ping(coin,addr); } - else if ( 0 && addr->supernet == 0 && addr->basilisk == 0 )//|| (addr->basilisk != 0 && myinfo->IAMRELAY == 0) ) - addr->dead = (uint32_t)time(NULL); + iguana_queue_send(addr,0,serialized,"verack",0); if ( addr->supernet != 0 || addr->basilisk != 0 ) printf("height.%d nServices.%lld nonce.%llu %srelay node.(%s) supernet.%d basilisk.%d longest.%u\n",vers->nStartingHeight,(long long)vers->nServices,(long long)vers->nonce,addr->relayflag==0?"non-":"",addr->ipaddr,addr->supernet,addr->basilisk,vers->nStartingHeight); if ( (int32_t)vers->nStartingHeight > coin->longestchain ) @@ -343,6 +372,8 @@ void iguana_gotversion(struct supernet_info *myinfo,struct iguana_info *coin,str addr->dead = 1; } //else coin->longestchain = vers->nStartingHeight; } + if ( addr->msgcounts.verack == 0 && time(NULL) > addr->ready+600 ) + iguana_send_version(coin,addr,coin->myservices); iguana_queue_send(addr,0,serialized,"getaddr",0); } @@ -398,7 +429,8 @@ void iguana_gotverack(struct supernet_info *myinfo,struct iguana_info *coin,stru uint8_t serialized[sizeof(struct iguana_msghdr)]; if ( addr != 0 ) { - //printf("gotverack from %s\n",addr->ipaddr); + if ( addr->supernet != 0 || addr->basilisk != 0 ) + printf(">>>>>>>>>> supernet.%d basilisk.%d gotverack from %s\n",addr->supernet,addr->basilisk,addr->ipaddr); addr->A.nTime = (uint32_t)time(NULL); iguana_queue_send(addr,0,serialized,"getaddr",0); iguana_supernet_ping(myinfo,coin,addr); @@ -423,8 +455,8 @@ void iguana_gotaddr(struct iguana_info *coin,struct iguana_peer *addr,struct igu } if ( strcmp(coin->symbol,"BTC") != 0 || (rand() % 10) == 0 ) iguana_possible_peer(coin,ipport); - if ( 0 && strncmp("BTC",coin->symbol,3) != 0 ) - printf("%s\n",ipaddr); + if ( 0 && strcmp("TAZ",coin->symbol) == 0 ) + printf("iguana_gotaddr: %s from %s\n",ipaddr,addr->ipaddr); } void iguana_gotping(struct supernet_info *myinfo,struct iguana_info *coin,struct iguana_peer *addr,uint64_t nonce,uint8_t *data) @@ -440,6 +472,11 @@ void iguana_gotping(struct supernet_info *myinfo,struct iguana_info *coin,struct int32_t iguana_send_ping(struct supernet_info *myinfo,struct iguana_info *coin,struct iguana_peer *addr) { int32_t len; uint64_t nonce; uint8_t serialized[sizeof(struct iguana_msghdr) + sizeof(nonce)]; + if ( addr->msgcounts.verack == 0 ) + { + printf("%s send version instead of ping to %s\n",coin->symbol,addr->ipaddr); + return(iguana_send_version(coin,addr,coin->myservices)); + } if ( (nonce= addr->pingnonce) == 0 ) { OS_randombytes((uint8_t *)&nonce,sizeof(nonce)); @@ -507,7 +544,7 @@ int32_t iguana_getdata(struct iguana_info *coin,uint8_t *serialized,int32_t type } int32_t debugtest; -int32_t iguana_rwvin(int32_t rwflag,struct OS_memspace *mem,uint8_t *serialized,struct iguana_msgvin *msg) +int32_t iguana_rwvin(int32_t rwflag,struct iguana_info *coin,struct OS_memspace *mem,uint8_t *serialized,struct iguana_msgvin *msg,int32_t vini) { int32_t len = 0; uint32_t tmp; len += iguana_rwbignum(rwflag,&serialized[len],sizeof(msg->prev_hash),msg->prev_hash.bytes); @@ -518,7 +555,9 @@ int32_t iguana_rwvin(int32_t rwflag,struct OS_memspace *mem,uint8_t *serialized, if ( rwflag == 0 ) { msg->scriptlen = tmp; - msg->vinscript = iguana_memalloc(mem,msg->scriptlen,1); + if ( msg->scriptlen < IGUANA_MAXSCRIPTSIZE ) + msg->vinscript = iguana_memalloc(mem,msg->scriptlen,1); + else return(0); } len += iguana_rwmem(rwflag,&serialized[len],msg->scriptlen,msg->vinscript); len += iguana_rwnum(rwflag,&serialized[len],sizeof(msg->sequence),&msg->sequence); @@ -538,7 +577,7 @@ int32_t iguana_rwvout(int32_t rwflag,struct OS_memspace *mem,uint8_t *serialized len += iguana_rwnum(rwflag,&serialized[len],sizeof(msg->value),&msg->value); len += iguana_rwvarint32(rwflag,&serialized[len],&msg->pk_scriptlen); if ( msg->pk_scriptlen > IGUANA_MAXSCRIPTSIZE ) - return(-1); + return(0); if ( rwflag == 0 ) msg->pk_script = iguana_memalloc(mem,msg->pk_scriptlen,1); len += iguana_rwmem(rwflag,&serialized[len],msg->pk_scriptlen,msg->pk_script); @@ -577,7 +616,7 @@ int32_t iguana_rwjoinsplit(int32_t rwflag,uint8_t *serialized,struct iguana_msgj return(len); } -int32_t iguana_rwtx(uint8_t zcash,int32_t rwflag,struct OS_memspace *mem,uint8_t *serialized,struct iguana_msgtx *msg,int32_t maxsize,bits256 *txidp,int32_t hastimestamp,int32_t isvpncoin) +int32_t iguana_rwtx(struct supernet_info *myinfo,uint8_t zcash,int32_t rwflag,struct iguana_info *coin,struct OS_memspace *mem,uint8_t *serialized,struct iguana_msgtx *msg,int32_t maxsize,bits256 *txidp,int32_t hastimestamp,int32_t isvpncoin) { int32_t i,n,len = 0; uint8_t *txstart = serialized; char txidstr[65]; if ( maxsize < sizeof(msg->version) ) @@ -604,7 +643,7 @@ int32_t iguana_rwtx(uint8_t zcash,int32_t rwflag,struct OS_memspace *mem,uint8_t return(-1); } } - if ( (n= iguana_rwvin(rwflag,mem,&serialized[len],&msg->vins[i])) >= 0 ) + if ( (n= iguana_rwvin(rwflag,coin,mem,&serialized[len],&msg->vins[i],i)) >= 0 ) len += n; if ( n < 0 || len+sizeof(int32_t) > maxsize ) { @@ -623,9 +662,9 @@ int32_t iguana_rwtx(uint8_t zcash,int32_t rwflag,struct OS_memspace *mem,uint8_t msg->vouts = iguana_memalloc(mem,msg->tx_out * sizeof(*msg->vouts),1); for (i=0; itx_out; i++) { - if ( (n= iguana_rwvout(rwflag,mem,&serialized[len],&msg->vouts[i])) >= 0 ) + if ( (n= iguana_rwvout(rwflag,mem,&serialized[len],&msg->vouts[i])) > 0 ) len += n; - if ( n < 0 || len > maxsize ) + if ( n <= 0 || len > maxsize ) { printf("invalid tx_out.%d len.%d vs maxsize.%d\n",msg->tx_out,len,maxsize); return(-1); @@ -639,48 +678,96 @@ int32_t iguana_rwtx(uint8_t zcash,int32_t rwflag,struct OS_memspace *mem,uint8_t for (; serialized[len]!=0&&lenversion == 2 ) + if ( zcash != 0 && msg->version > 1 ) { uint32_t numjoinsplits; struct iguana_msgjoinsplit joinsplit; uint8_t joinsplitpubkey[33],joinsplitsig[64]; len += iguana_rwvarint32(rwflag,&serialized[len],&numjoinsplits); - char str[65]; - printf("numjoinsplits.%d version.%d numvins.%d numvouts.%d locktime.%u %s\n",numjoinsplits,msg->version,msg->tx_in,msg->tx_out,msg->lock_time,bits256_str(str,*txidp)); if ( numjoinsplits > 0 ) { for (i=0; iversion,msg->tx_in,msg->tx_out,msg->lock_time,bits256_str(str,*txidp)); } + } + *txidp = bits256_doublesha256(txidstr,txstart,len); + msg->allocsize = len; + if ( coin->VALIDATENODE > 1 && rwflag == 0 && coin->RTheight > 0 ) + { + int32_t sigsvalid; struct iguana_block *block; + if ( (block= iguana_blockfind("sig",coin,msg->txid)) != 0 && block->sigsvalid != 0 ) + sigsvalid = 1; + else if ( iguana_validatesigs(myinfo,coin,txstart,len) == 0 ) + sigsvalid = 1; else { - memcpy(joinsplitpubkey,&serialized[len],33), len += 33; - memcpy(joinsplitsig,&serialized[len],64), len += 64; + static FILE *fp; + if ( block != 0 ) + block->sigsvalid = 1; + if ( fp == 0 ) + fp = fopen("validates","wb"); + if ( fp != 0 ) + { + char str[65]; + printf("error %s validating\n",bits256_str(str,*txidp)); + for (i=0; iallocsize = len; return(len); } -char *iguana_txscan(struct iguana_info *coin,cJSON *json,uint8_t *data,int32_t recvlen,bits256 txid) +char *iguana_txscan(struct supernet_info *myinfo,struct iguana_info *coin,cJSON *json,uint8_t *data,int32_t recvlen,bits256 txid) { - struct iguana_msgtx tx; bits256 hash2; struct iguana_block *block; struct iguana_msgblock msg; - int32_t i,n,len,extralen = 65356; char *txbytes,vpnstr[64]; uint8_t *extraspace,blockspace[sizeof(*block)+sizeof(*block->zRO)]; + struct iguana_msgtx tx; bits256 hash2; struct iguana_zblock *zblock; struct iguana_block *block; struct iguana_msgzblock zmsg; struct iguana_msgblock *msg = (void *)&zmsg; + int32_t i,n,len,txn_count,extralen = 65356; char *txbytes,vpnstr[64]; uint8_t *extraspace,blockspace[sizeof(*block)+sizeof(struct iguana_zblock)]; + zblock = (void *)blockspace; block = (void *)blockspace; - memset(&msg,0,sizeof(msg)); + memset(&zmsg,0,sizeof(zmsg)); vpnstr[0] = 0; extraspace = calloc(1,extralen); - len = iguana_rwblock(coin->symbol,coin->chain->zcash,coin->chain->auxpow,coin->chain->hashalgo,0,&hash2,data,&msg,recvlen); - iguana_blockconv(coin->chain->zcash,coin->chain->auxpow,block,&msg,hash2,-1); - for (i=0; ichain->zcash == 0 ) + { + len = iguana_rwblock(myinfo,coin->symbol,coin->chain->zcash,coin->chain->auxpow,coin->chain->hashalgo,0,&hash2,data,(void *)msg,recvlen); + iguana_blockconv(coin->chain->zcash,coin->chain->auxpow,(void *)block,(void *)msg,hash2,-1); + txn_count = msg->txn_count; + } + else + { + len = iguana_rwblock(myinfo,coin->symbol,coin->chain->zcash,coin->chain->auxpow,coin->chain->hashalgo,0,&hash2,data,(void *)&zmsg,recvlen); + iguana_blockconv(coin->chain->zcash,coin->chain->auxpow,zblock,&zmsg,hash2,-1); + txn_count = zmsg.txn_count; + } + for (i=0; iblocks.hwmchain.height,0,0,&data[len],recvlen - len,&tx,&tx.txid,vpnstr,extraspace,extralen,0,0)) < 0 ) break; - char str[65]; printf("%d of %d: %s len.%d\n",i,msg.txn_count,bits256_str(str,tx.txid),len); + char str[65]; printf("%d of %d: %s len.%d\n",i,txn_count,bits256_str(str,tx.txid),len); if ( bits256_cmp(txid,tx.txid) == 0 ) { if ( (n= iguana_rwmsgtx(coin,coin->blocks.hwmchain.height,0,json,&data[len],recvlen - len,&tx,&tx.txid,vpnstr,extraspace,extralen,0,0)) > 0 ) @@ -696,30 +783,30 @@ char *iguana_txscan(struct iguana_info *coin,cJSON *json,uint8_t *data,int32_t r return(0); } -int32_t iguana_gentxarray(struct iguana_info *coin,struct OS_memspace *mem,struct iguana_txblock *txdata,int32_t *lenp,uint8_t *data,int32_t recvlen) +int32_t iguana_gentxarray(struct supernet_info *myinfo,struct iguana_info *coin,struct OS_memspace *mem,struct iguana_txblock *txdata,int32_t *lenp,uint8_t *data,int32_t recvlen) { - struct iguana_msgtx *tx; bits256 hash2; struct iguana_msgblock msg; int32_t i,n,hdrlen,len,numvouts,numvins; char str[65]; - memset(&msg,0,sizeof(msg)); - len = iguana_rwblock(coin->symbol,coin->chain->zcash,coin->chain->auxpow,coin->chain->hashalgo,0,&hash2,data,&msg,recvlen); + struct iguana_msgtx *tx; bits256 hash2; struct iguana_msgzblock zmsg; int32_t txn_count,i,n,hdrlen,len,numvouts,numvins; char str[65]; + memset(&zmsg,0,sizeof(zmsg)); + len = iguana_rwblock(myinfo,coin->symbol,coin->chain->zcash,coin->chain->auxpow,coin->chain->hashalgo,0,&hash2,data,(void *)&zmsg,recvlen); hdrlen = len; if ( len > recvlen ) { printf("gentxarray error len.%d > recvlen.%d\n",len,recvlen); return(-1); } - iguana_blockconv(coin->chain->zcash,coin->chain->auxpow,(struct iguana_block *)&txdata->zblock,&msg,hash2,-1); + txn_count = iguana_blockconv(coin->chain->zcash,coin->chain->auxpow,(void *)&txdata->zblock,&zmsg,hash2,-1); numvins = numvouts = 0; - if ( msg.txn_count > 0 ) + if ( txn_count > 0 ) { - tx = iguana_memalloc(mem,msg.txn_count*sizeof(*tx),1); - for (i=0; i recvlen ) { printf("gentxarrayB error len.%d > recvlen.%d\n",len,recvlen); return(-1); } - if ( (n= iguana_rwtx(coin->chain->zcash,0,mem,&data[len],&tx[i],recvlen - len,&tx[i].txid,coin->chain->isPoS,strcmp(coin->symbol,"VPN")==0)) < 0 ) + if ( (n= iguana_rwtx(myinfo,coin->chain->zcash,0,coin,mem,&data[len],&tx[i],recvlen - len,&tx[i].txid,coin->chain->isPoS,strcmp(coin->symbol,"VPN")==0)) < 0 ) { //for (i=0; iextralen = 0; } if ( coin->chain->auxpow != 0 && len != recvlen ) - printf("numtx.%d %s hdrlen.%d len.%d vs recvlen.%d v.%08x\n",msg.txn_count,bits256_str(str,hash2),hdrlen,len,recvlen,txdata->zblock.RO.version); + printf("numtx.%d %s hdrlen.%d len.%d vs recvlen.%d v.%08x\n",txn_count,bits256_str(str,hash2),hdrlen,len,recvlen,txdata->zblock.RO.version); txdata->recvlen = len; - txdata->numtxids = msg.txn_count; + txdata->numtxids = txn_count; txdata->numunspents = numvouts; txdata->numspends = numvins; return(len); @@ -834,10 +921,9 @@ int32_t iguana_intvectors(struct iguana_info *coin,struct iguana_peer *addr,int3 //printf("intvectors.%c recvlen.%d\n",intvectors,recvlen); } -int32_t iguana_msgparser(struct iguana_info *coin,struct iguana_peer *addr,struct OS_memspace *rawmem,struct OS_memspace *txmem,struct OS_memspace *hashmem,struct iguana_msghdr *H,uint8_t *data,int32_t recvlen,int32_t fromcache) +int32_t iguana_msgparser(struct supernet_info *myinfo,struct iguana_info *coin,struct iguana_peer *addr,struct OS_memspace *rawmem,struct OS_memspace *txmem,struct OS_memspace *hashmem,struct iguana_msghdr *H,uint8_t *data,int32_t recvlen,int32_t fromcache) { - uint8_t serialized[16384]; char *ipaddr; struct supernet_info *myinfo = SuperNET_MYINFO(0); - int32_t i,n=0,retval=-1,ishost,srvmsg,bloom,sendlen=0,intvectors,len= -100; uint64_t nonce,x; bits256 hash2; + uint8_t serialized[16384]; char *ipaddr; int32_t i,n=0,retval=-1,ishost,srvmsg,bloom,sendlen=0,intvectors,len= -100; uint64_t nonce,x; bits256 hash2; bloom = intvectors = srvmsg = -1; if ( strncmp(H->command+1,"uperNET",strlen("uperNET")) == 0 || strncmp(H->command,"uperNet",strlen("uperNet")) == 0 ) { @@ -856,8 +942,8 @@ int32_t iguana_msgparser(struct iguana_info *coin,struct iguana_peer *addr,struc } if ( addr != 0 ) { - if ( 0 && strcmp("DOGE",coin->symbol) == 0 ) - printf("iguana_msgparser from (%s) parse.(%s) len.%d\n",addr->ipaddr,H->command,recvlen); + if ( 0 && addr->msgcounts.verack == 0 ) + printf("iguana_msgparser verack.%d from (%s) parse.(%s) len.%d\n",addr->msgcounts.verack,addr->ipaddr,H->command,recvlen); //iguana_peerblockrequest(coin,addr->blockspace,IGUANA_MAXPACKETSIZE,addr,iguana_blockhash(coin,100),0); addr->lastcontact = (uint32_t)time(NULL); strcpy(addr->lastcommand,H->command); @@ -871,17 +957,19 @@ int32_t iguana_msgparser(struct iguana_info *coin,struct iguana_peer *addr,struc memset(&txdata,0,sizeof(txdata)); if ( ishost == 0 ) { - if ( 0 && coin->chain->auxpow != 0 ) + if ( coin->chain->debug != 0 ) { - int32_t i; for (i=0; ichain->zcash == 0 ? 80 : sizeof(struct iguana_msgzblockhdr); + for (i=0; imsgcounts.block++; - if ( (n= iguana_gentxarray(coin,rawmem,&txdata,&len,data,recvlen)) == recvlen || n == recvlen-1 ) + if ( (n= iguana_gentxarray(myinfo,coin,rawmem,&txdata,&len,data,recvlen)) == recvlen || n == recvlen-1 ) { len = n; - iguana_gotblockM(coin,addr,&txdata,rawmem->ptr,H,data,recvlen,fromcache); + iguana_gotblockM(myinfo,coin,addr,&txdata,rawmem->ptr,H,data,recvlen,fromcache); } else { @@ -917,7 +1005,7 @@ int32_t iguana_msgparser(struct iguana_info *coin,struct iguana_peer *addr,struc } else if ( (ishost= (strcmp(H->command,"getheaders") == 0)) || strcmp(H->command,"headers") == 0 ) { - struct iguana_msgblock msg; struct iguana_zblock *zblocks; uint32_t tmp,n=0; + struct iguana_msgzblock zmsg; struct iguana_msgblock *msg = (void *)&zmsg; struct iguana_zblock *zblocks; uint32_t tmp,n=0; len = 0; if ( addr != 0 && recvlen >= sizeof(bits256) && strcmp("BTCD",coin->symbol) != 0 ) { @@ -926,9 +1014,7 @@ int32_t iguana_msgparser(struct iguana_info *coin,struct iguana_peer *addr,struc len = iguana_rwvarint32(0,data,&n); if ( n <= IGUANA_MAXINV ) { - bits256 auxhash2,prevhash2; struct iguana_msgtx *tx; struct iguana_msgmerkle *coinbase_branch,*blockchain_branch; struct iguana_msgblock parentblock; - coinbase_branch = calloc(1,sizeof(*coinbase_branch)); - blockchain_branch = calloc(1,sizeof(*blockchain_branch)); + bits256 auxhash2,prevhash2; struct iguana_msgtx *tx; struct iguana_msgmerkle *coinbase_branch=0,*blockchain_branch=0; struct iguana_msgblock parentblock; if ( rawmem->totalsize == 0 ) iguana_meminit(rawmem,"bighdrs",0,IGUANA_MAXPACKETSIZE * 2,0); memset(prevhash2.bytes,0,sizeof(prevhash2)); @@ -938,29 +1024,36 @@ int32_t iguana_msgparser(struct iguana_info *coin,struct iguana_peer *addr,struc { if ( coin->chain->auxpow != 0 ) { - tmp = iguana_rwblockhdr(0,coin->chain->zcash,&data[len],&msg); + if ( coinbase_branch == 0 ) + coinbase_branch = calloc(1,sizeof(*coinbase_branch)); + if ( blockchain_branch == 0 ) + blockchain_branch = calloc(1,sizeof(*blockchain_branch)); + tmp = iguana_rwblockhdr(0,coin->chain->zcash,&data[len],(void *)msg); hash2 = iguana_calcblockhash(coin->symbol,coin->chain->hashalgo,&data[len],tmp); len += tmp; - if ( (msg.H.version & 0x100) != 0 ) + if ( (msg->H.version & 0x100) != 0 ) { iguana_memreset(rawmem); tx = iguana_memalloc(rawmem,sizeof(*tx),1); - len += iguana_rwtx(coin->chain->zcash,0,rawmem,&data[len],tx,recvlen-len,&tx->txid,coin->chain->isPoS,strcmp(coin->symbol,"VPN")==0); + len += iguana_rwtx(myinfo,coin->chain->zcash,0,coin,rawmem,&data[len],tx,recvlen-len,&tx->txid,coin->chain->isPoS,strcmp(coin->symbol,"VPN")==0); len += iguana_rwbignum(0,&data[len],sizeof(auxhash2),auxhash2.bytes); len += iguana_rwmerklebranch(0,&data[len],coinbase_branch); len += iguana_rwmerklebranch(0,&data[len],blockchain_branch); - len += iguana_rwblockhdr(0,coin->chain->zcash,&data[len],&parentblock); + len += iguana_rwblockhdr(0,coin->chain->zcash,&data[len],(void *)&parentblock); } len += iguana_rwvarint32(0,&data[len],&tmp); char str[65],str2[65]; if ( 0 && coin->chain->auxpow != 0 ) - printf("%d %d of %d: %s %s v.%08x numtx.%d cmp.%d\n",len,i,n,bits256_str(str,hash2),bits256_str(str2,msg.H.prev_block),msg.H.version,tmp,bits256_cmp(prevhash2,msg.H.prev_block)); - } else len += iguana_rwblock(coin->chain->symbol,coin->chain->zcash,coin->chain->auxpow,coin->chain->hashalgo,0,&hash2,&data[len],&msg,recvlen); - iguana_blockconv(coin->chain->zcash,coin->chain->auxpow,(struct iguana_block *)&zblocks[i],&msg,hash2,-1); + printf("%d %d of %d: %s %s v.%08x numtx.%d cmp.%d\n",len,i,n,bits256_str(str,hash2),bits256_str(str2,zmsg.zH.prev_block),zmsg.zH.version,tmp,bits256_cmp(prevhash2,zmsg.zH.prev_block)); + } + else len += iguana_rwblock(myinfo,coin->chain->symbol,coin->chain->zcash,coin->chain->auxpow,coin->chain->hashalgo,0,&hash2,&data[len],(void *)&zmsg,recvlen); + iguana_blockconv(coin->chain->zcash,coin->chain->auxpow,(void *)&zblocks[i],&zmsg,hash2,-1); prevhash2 = hash2; } - free(coinbase_branch); - free(blockchain_branch); + if ( coinbase_branch != 0 ) + free(coinbase_branch); + if ( blockchain_branch != 0 ) + free(blockchain_branch); if ( iguana_gotheadersM(coin,addr,zblocks,n) < 0 ) myfree(zblocks,(int32_t)(sizeof(struct iguana_zblock) * n)); //myfree(blocks,sizeof(*blocks) * n); @@ -1093,7 +1186,7 @@ int32_t iguana_msgparser(struct iguana_info *coin,struct iguana_peer *addr,struc struct iguana_msgtx *tx; iguana_memreset(rawmem); tx = iguana_memalloc(rawmem,sizeof(*tx),1);//mycalloc('u',1,sizeof(*tx)); - len = iguana_rwtx(coin->chain->zcash,0,rawmem,data,tx,recvlen,&tx->txid,coin->chain->isPoS,strcmp(coin->symbol,"VPN")==0); + len = iguana_rwtx(myinfo,coin->chain->zcash,0,coin,rawmem,data,tx,recvlen,&tx->txid,coin->chain->isPoS,strcmp(coin->symbol,"VPN")==0); if ( addr != 0 ) { iguana_gotunconfirmedM(coin,addr,tx,data,recvlen); @@ -1114,9 +1207,9 @@ int32_t iguana_msgparser(struct iguana_info *coin,struct iguana_peer *addr,struc addr->headerserror++; else { - for (i=0; iipaddr,addr->protover); + printf("%s reject.(%s) recvlen.%d %s proto.%d\n",coin->symbol,data+1,recvlen,addr->ipaddr,addr->protover); addr->msgcounts.reject++; } } diff --git a/iguana/iguana_payments.c b/iguana/iguana_payments.c index d811bfdf8..5fdbf9143 100755 --- a/iguana/iguana_payments.c +++ b/iguana/iguana_payments.c @@ -218,7 +218,7 @@ cJSON *iguana_inputjson(bits256 txid,int32_t vout,uint8_t *spendscript,int32_t s cJSON *iguana_RTinputsjson(struct supernet_info *myinfo,struct iguana_info *coin,uint64_t *totalp,uint64_t amount,struct iguana_outpoint *unspents,int32_t num) { - cJSON *vins; uint8_t spendscript[IGUANA_MAXSCRIPTSIZE]; struct iguana_txid *T; struct iguana_unspent *U,*u; struct iguana_bundle *bp; struct iguana_ramchain *ramchain; char coinaddr[64]; int32_t vout,height,abovei,belowi,i,spendlen,ind; uint32_t txidind; struct iguana_ramchaindata *rdata; bits256 txid; int64_t above,below,total = 0; struct iguana_outpoint outpt; int64_t remains = amount; + struct iguana_outpoint outpt; cJSON *vins; int32_t abovei,belowi,i,ind; int64_t above,below,total = 0,remains = amount; *totalp = 0; vins = cJSON_CreateArray(); for (i=0; i remains %.8f\n",coinaddr,dstr(value),dstr(remains)); + if ( remains <= 0 ) + break; + /*continue; if ( coin->FULLNODE == 0 && coin->VALIDATENODE == 0 ) { if ( (spendlen= basilisk_unspentfind(myinfo,coin,&txid,&vout,spendscript,outpt,outpt.value)) > 0 ) @@ -274,7 +281,7 @@ cJSON *iguana_RTinputsjson(struct supernet_info *myinfo,struct iguana_info *coin u = &U[outpt.unspentind]; if ( (txidind= u->txidind) > 0 && txidind < rdata->numtxids ) { - if ( iguana_unspentindfind(myinfo,coin,coinaddr,spendscript,&spendlen,&amount,&height,T[txidind].txid,u->vout,coin->bundlescount-1,0) == outpt.unspentind && spendlen > 0 ) + if ( iguana_RTunspentindfind(myinfo,coin,&outpt2,coinaddr,spendscript,&spendlen,&amount,&height,T[txidind].txid,u->vout,coin->bundlescount-1,0) == 0 && spendlen > 0 ) { jaddi(vins,iguana_inputjson(T[txidind].txid,u->vout,spendscript,spendlen)); total += outpt.value; @@ -302,7 +309,7 @@ cJSON *iguana_RTinputsjson(struct supernet_info *myinfo,struct iguana_info *coin printf("%s illegal unspentind.u%d [%d]\n",coin->symbol,outpt.unspentind,outpt.hdrsi); free_json(vins); return(0); - } + }*/ } *totalp = total; return(vins); @@ -374,6 +381,7 @@ char *iguana_calcrawtx(struct supernet_info *myinfo,struct iguana_info *coin,cJS free(unspents); return(0); } + printf("avail %.8f satoshis %.8f, txfee %.8f burnamount %.8f\n",dstr(avail),dstr(satoshis),dstr(txfee),dstr(burnamount)); if ( txobj != 0 && avail >= satoshis+txfee ) { if ( (vins= iguana_RTinputsjson(myinfo,coin,&total,satoshis + txfee,unspents,num)) != 0 ) @@ -442,25 +450,25 @@ void iguana_RTunspentslock(struct supernet_info *myinfo,struct iguana_info *coin } } -char *sendtoaddress(struct supernet_info *myinfo,struct iguana_info *coin,char *remoteaddr,char *coinaddr,uint64_t satoshis,uint64_t txfee,char *comment,char *comment2,int32_t minconf,char *account) +char *sendtoaddress(struct supernet_info *myinfo,struct iguana_info *coin,char *remoteaddr,char *destaddr,uint64_t satoshis,uint64_t txfee,char *comment,char *comment2,int32_t minconf,char *account) { uint8_t addrtype,spendscript[1024],rmd160[20]; int32_t completed; char *retstr,spendscriptstr[4096],*rawtx=0,*signedtx = 0; bits256 signedtxid,senttxid; cJSON *retjson,*vins,*addresses,*valsobj; uint32_t spendlen,locktime = 0; uint32_t basilisktag; //sendtoaddress [comment] [comment-to] is a real and is rounded to 8 decimal places. Returns the transaction ID if successful. Y + if ( coin->RTheight == 0 ) + return(clonestr("{\"error\":\"need to get to realtime blocks to send transaction\"}")); if ( account == 0 || account[0] == 0 ) account = "*"; addresses = iguana_getaddressesbyaccount(myinfo,coin,account); if ( coin->changeaddr[0] == 0 ) { - //if ( (waddr= iguana_getaccountaddress(myinfo,coin,0,0,coin->changeaddr,"change")) == 0 ) - // return(clonestr("{\"error\":\"no change address specified\"}")); bitcoin_address(coin->changeaddr,coin->chain->pubtype,myinfo->persistent_pubkey33,33); printf("%s change %s\n",coin->symbol,coin->changeaddr); } - if ( coinaddr != 0 && coinaddr[0] != 0 && satoshis != 0 ) + if ( destaddr != 0 && destaddr[0] != 0 && satoshis != 0 ) { - if ( iguana_addressvalidate(coin,&addrtype,coinaddr) < 0 ) + if ( iguana_addressvalidate(coin,&addrtype,destaddr) < 0 ) return(clonestr("{\"error\":\"invalid coin address\"}")); - bitcoin_addr2rmd160(&addrtype,rmd160,coinaddr); + bitcoin_addr2rmd160(&addrtype,rmd160,destaddr); spendlen = bitcoin_standardspend(spendscript,0,rmd160); init_hexbytes_noT(spendscriptstr,spendscript,spendlen); basilisktag = (uint32_t)rand(); @@ -678,12 +686,12 @@ INT_ARRAY_STRING(bitcoinrpc,addmultisigaddress,M,pubkeys,account) // HASH_AND_TWOINTS(bitcoinrpc,gettxout,txid,vout,mempool) { - uint8_t script[IGUANA_MAXSCRIPTSIZE],rmd160[20],pubkey33[33]; char coinaddr[128],asmstr[IGUANA_MAXSCRIPTSIZE*2+1]; struct iguana_bundle *bp; int32_t minconf,scriptlen,unspentind,height,spentheight; int64_t RTspend; int64_t value; struct iguana_ramchaindata *rdata; struct iguana_pkhash *P; struct iguana_txid *T; struct iguana_unspent *U; struct iguana_outpoint outpt; struct iguana_ramchain *ramchain; cJSON *scriptobj,*retjson = cJSON_CreateObject(); + uint8_t script[IGUANA_MAXSCRIPTSIZE],rmd160[20],pubkey33[33]; char coinaddr[128],asmstr[IGUANA_MAXSCRIPTSIZE*2+1]; struct iguana_bundle *bp; int32_t minconf,scriptlen,unspentind,height,spentheight; struct iguana_RTtxid *ptr; int64_t RTspend; int64_t value; struct iguana_ramchaindata *rdata; struct iguana_pkhash *P; struct iguana_txid *T; struct iguana_unspent *U; struct iguana_outpoint outpt; struct iguana_ramchain *ramchain; cJSON *scriptobj,*retjson = cJSON_CreateObject(); if ( remoteaddr != 0 ) return(clonestr("{\"error\":\"no remote\"}")); if ( coin != 0 ) { - if ( (value= _RTgettxout(coin,&height,&scriptlen,script,rmd160,coinaddr,txid,vout,mempool)) > 0 ) + if ( (value= _RTgettxout(coin,&ptr,&height,&scriptlen,script,rmd160,coinaddr,txid,vout,mempool)) > 0 ) { jaddbits256(retjson,"bestblock",coin->blocks.hwmchain.RO.hash2); jaddnum(retjson,"bestheight",coin->blocks.hwmchain.height); @@ -699,8 +707,9 @@ HASH_AND_TWOINTS(bitcoinrpc,gettxout,txid,vout,mempool) return(jprint(retjson,1)); } minconf = (mempool != 0) ? 0 : 1; - if ( (unspentind= iguana_RTunspentindfind(myinfo,coin,0,0,0,0,&height,txid,vout,coin->bundlescount-1,0)) != 0 ) + if ( iguana_RTunspentindfind(myinfo,coin,&outpt,0,0,0,0,&height,txid,vout,coin->bundlescount-1,0) == 0 && outpt.isptr == 0 ) { + unspentind = outpt.unspentind; if ( height >= 0 && height < coin->longestchain && (bp= coin->bundles[height / coin->chain->bundlesize]) != 0 ) { ramchain = &bp->ramchain; @@ -847,12 +856,16 @@ int64_t iguana_txdetails(struct supernet_info *myinfo,struct iguana_info *coin,c if ( vout >= 0 ) { jaddnum(item,"vout",vout); - if ( (amount= iguana_txidamount(myinfo,coin,txid,vout)) != 0 ) + if ( (amount= iguana_txidamount(myinfo,coin,coinaddr,txid,vout)) != 0 ) jaddnum(item,"amount",dstr(amount)); + jaddstr(item,"category",iguana_txidcategory(myinfo,coin,account,coinaddr,txid,vout)); + } + else + { + if ( vout == -1 ) + jadd(item,"coinbase",jtrue()); + vout = 0; } - else if ( vout == -1 ) - jadd(item,"coinbase",jtrue()); - jaddstr(item,"category",iguana_txidcategory(myinfo,coin,account,coinaddr,txid,vout)); if ( account[0] != 0 && jobj(item,"account") == 0 ) jaddstr(item,"account",account); if ( coinaddr[0] != 0 ) @@ -896,7 +909,7 @@ HASH_AND_INT(bitcoinrpc,getrawtransaction,txid,verbose) free(txbytes); if ( txobj != 0 ) { - iguana_txdetails(myinfo,coin,txobj,tx->txid,-2,height); + iguana_txdetails(myinfo,coin,txobj,checktxid,-2,height); return(jprint(txobj,1)); } } @@ -918,7 +931,7 @@ HASH_AND_INT(bitcoinrpc,getrawtransaction,txid,verbose) datalen = (int32_t)(strlen(blockstr) >> 1); data = malloc(datalen); decode_hex(data,datalen,blockstr); - if ( (txbytes= iguana_txscan(coin,verbose != 0 ? retjson : 0,data,datalen,txid)) != 0 ) + if ( (txbytes= iguana_txscan(myinfo,coin,verbose != 0 ? retjson : 0,data,datalen,txid)) != 0 ) { jaddstr(retjson,"result",txbytes); jaddbits256(retjson,"blockhash",blockhash); @@ -949,7 +962,7 @@ int64_t iguana_lockval(int32_t finalized,int64_t locktime) char *iguana_validaterawtx(struct supernet_info *myinfo,struct iguana_info *coin,int32_t height,struct iguana_msgtx *msgtx,uint8_t *extraspace,int32_t extralen,char *rawtx,int32_t mempool,int32_t suppress_pubkeys) { - bits256 signedtxid,txid; struct iguana_msgvin vin; cJSON *log,*vins,*vouts,*txobj,*retjson; char *checkstr,*signedtx; int32_t finalized = 1,i,len,maxsize,numinputs,numoutputs,complete; struct vin_info *V; uint8_t *serialized,*serialized2; uint32_t sigsize,pubkeysize,p2shsize,suffixlen; int64_t inputsum,outputsum,lockval; + bits256 signedtxid,txid; struct iguana_outpoint outpt; struct iguana_msgvin vin; cJSON *log,*vins,*vouts,*txobj,*retjson; char *checkstr,*signedtx; int32_t plen,finalized = 1,i,len,maxsize,numinputs,numoutputs,complete; struct vin_info *V; uint8_t *serialized,*serialized2; uint32_t sigsize,pubkeysize,p2shsize,suffixlen; int64_t inputsum,outputsum,lockval; retjson = cJSON_CreateObject(); inputsum = outputsum = numinputs = numoutputs = 0; if ( rawtx != 0 && rawtx[0] != 0 && coin != 0 ) @@ -960,8 +973,9 @@ char *iguana_validaterawtx(struct supernet_info *myinfo,struct iguana_info *coin if ( (txobj= bitcoin_hex2json(coin,coin->blocks.hwmchain.height,&msgtx->txid,msgtx,rawtx,extraspace,extralen,0,0,suppress_pubkeys)) != 0 ) { //printf("txobj.(%s)\n",jprint(txobj,0)); - if ( (checkstr= bitcoin_json2hex(myinfo,coin,&txid,txobj,0)) != 0 ) + if ( 0 && (checkstr= bitcoin_json2hex(myinfo,coin,&txid,txobj,0)) != 0 ) { + // no guarantee byte for byte identical tx is recreated if ( strcmp(rawtx,checkstr) != 0 ) { jaddstr(retjson,"error","converting from hex2json and json2hex mismatch"); @@ -972,7 +986,7 @@ char *iguana_validaterawtx(struct supernet_info *myinfo,struct iguana_info *coin break; jaddnum(retjson,"mismatch position",i); jadd(retjson,"origtx",txobj); - if ( (txobj= bitcoin_hex2json(coin,coin->blocks.hwmchain.height,&txid,msgtx,checkstr,extraspace,extralen,0,0,suppress_pubkeys)) != 0 ) + if ( 0 && (txobj= bitcoin_hex2json(coin,coin->blocks.hwmchain.height,&txid,msgtx,checkstr,extraspace,extralen,0,0,suppress_pubkeys)) != 0 ) jadd(retjson,"checktx",txobj); free(checkstr); return(jprint(retjson,1)); @@ -998,34 +1012,48 @@ char *iguana_validaterawtx(struct supernet_info *myinfo,struct iguana_info *coin for (i=0; ivins[i].prev_hash,msgtx->vins[i].prev_vout,coin->bundlescount-1,mempool)) > 0 ) + if ( iguana_RTunspentindfind(myinfo,coin,&outpt,V[i].coinaddr,V[i].spendscript,&V[i].spendlen,&V[i].amount,&V[i].height,msgtx->vins[i].prev_hash,msgtx->vins[i].prev_vout,coin->bundlescount-1,mempool) == 0 ) { + V[i].suppress_pubkeys = suppress_pubkeys; + V[i].unspentind = outpt.unspentind; inputsum += V[i].amount; msgtx->vins[i].spendscript = V[i].spendscript; - msgtx->vins[i].spendlen = V[i].spendlen; + if ( (msgtx->vins[i].spendlen= V[i].spendlen) == 35 ) + { + if ( (plen= bitcoin_pubkeylen(msgtx->vins[i].spendscript+1)) > 0 ) + { + memcpy(V[i].signers[0].pubkey,msgtx->vins[i].spendscript+1,plen); + V[i].suppress_pubkeys = 1; + } + } V[i].hashtype = iguana_vinscriptparse(coin,&V[i],&sigsize,&pubkeysize,&p2shsize,&suffixlen,msgtx->vins[i].vinscript,msgtx->vins[i].scriptlen); + //if ( (V[i].signers[0].siglen= sigsize) > 0 ) + // memcpy(V[i].signers[0].sig,msgtx->vins[i].vinscript+1,sigsize); V[i].userdatalen = suffixlen; memcpy(V[i].spendscript,msgtx->vins[i].spendscript,msgtx->vins[i].spendlen); V[i].spendlen = msgtx->vins[i].spendlen; if ( msgtx->vins[i].sequence < IGUANA_SEQUENCEID_FINAL ) finalized = 0; - //printf("V %.8f (%s) spendscript.[%d] scriptlen.%d\n",dstr(V[i].amount),V[i].coinaddr,V[i].spendlen,V[i].spendlen); - } - } - V[0].suppress_pubkeys = suppress_pubkeys; - if ( (complete= bitcoin_verifyvins(coin,height,&signedtxid,&signedtx,msgtx,serialized2,maxsize,V,1,0,suppress_pubkeys)) > 0 && signedtx != 0 ) - { - msgtx->txid = signedtxid; - log = cJSON_CreateArray(); - lockval = iguana_lockval(finalized,jint(txobj,"locktime")); - if ( iguana_interpreter(coin,log,lockval,V,numinputs) < 0 ) - { - jaddstr(retjson,"error","interpreter rejects tx"); - } - jadd(retjson,"interpreter",log); + if ( V[i].M == 0 ) + V[i].M = 1; + if ( V[i].N < V[i].M ) + V[i].N = V[i].M; + //printf("V %dof%d %.8f (%s) spendscript.[%d] scriptlen.%d\n",V[i].M,V[i].N,dstr(V[i].amount),V[i].coinaddr,V[i].spendlen,V[i].spendlen); + } else printf("couldnt find spendscript\n"); } + complete = 0; + bitcoin_verifyvins(coin,height,&signedtxid,&signedtx,msgtx,serialized2,maxsize,V,1,0,suppress_pubkeys); + msgtx->txid = signedtxid; + log = cJSON_CreateArray(); + lockval = iguana_lockval(finalized,jint(txobj,"locktime")); + if ( iguana_interpreter(coin,log,lockval,V,numinputs) < 0 ) + jaddstr(retjson,"error","interpreter rejects tx"); + else complete = 1; + jadd(retjson,"interpreter",log); jaddnum(retjson,"complete",complete); free(serialized), free(serialized2); + if ( signedtx != 0 ) + free(signedtx); } } //char str[65]; printf("got txid.(%s)\n",bits256_str(str,txid)); @@ -1043,26 +1071,46 @@ STRING_AND_INT(bitcoinrpc,validaterawtransaction,rawtx,suppress) uint8_t *extraspace; int32_t extralen=65536; char *retstr; struct iguana_msgtx msgtx; if ( remoteaddr != 0 ) return(clonestr("{\"error\":\"no remote\"}")); - - //cJSON *txobj; char *teststr= "{\"version\":1,\"locktime\":0,\"vin\":[{\"userdata\":\"20fe936da3707c8c4cc7eb0352160ec3f50b9454d46425df6347b2fbc5b2ec87ea00\",\"txid\":\"ee12e50b629d5d45438570fff841d1a2ba7d27f356de4aa06900c9a5e38cf141\",\"vout\":0,\"scriptPubKey\":{\"hex\":\"a9145cc47cc123e3f9b7dce0230009b9d3013a9e0c9687\"},\"suppress\":1,\"redeemScript\":\"6304165daa57b1752102a9669e63ef1ab04913615c2f3887ea3584f81e5f08feee9535b19ab3739d8afdac67a9143805600256ed8498ca1ec426759212e5835e8dc2882103a7b696908f77d69ec89887f8c4a0423b9e80b5974dc43301bd7d8abad07e1211ac68\"}],\"vout\":[{\"satoshis\":\"21821\",\"scriptPubkey\":{\"hex\":\"76a9143ef4734c1141725c095342095f6e0e7748b6c16588ac\"}}]}"; - - //cJSON *txobj; char *teststr= "{\"version\":1,\"locktime\":0,\"vin\":[{\"userdata\":\"206efad760ee54b9b2e2a038a821ef9f950eb0e248545ac202c3e2074cd14f92cb00\",\"txid\":\"3f4759381a62154f2f0eefed1e4433342548ad7b269f912820383b715a39273c\",\"vout\":0,\"scriptPubKey\":{\"hex\":\"a91446dcccef39c1d8c6da2ccc35dce2bfa7ec0d168887\"},\"suppress\":1,\"redeemScript\":\"63041c60aa57b1752103175cf93574c31637b8c2d8acd5319e3cd23761b5e418d32c6bcb194972ba9273ac67a9142d75daf71325feaa593b8f30989e462892189914882102a9669e63ef1ab04913615c2f3887ea3584f81e5f08feee9535b19ab3739d8afdac68\"}],\"vout\":[{\"satoshis\":\"18625\",\"scriptPubkey\":{\"hex\":\"76a914b7128d2ee837cf03e30a2c0e3e0181f7b9669bb688ac\"}}]}"; - // 01000000013c27395a713b382028919f267bad48253433441eedef0e2f4f15621a3859473f00000000d147304402207ecd423b55c1aa45a994c4eb4337ff0891692fbb69954a9ba024745a99c5272d02207cea696425feb5388153ab7f2608d66a66e4c95cfda2d44e98bc56e25994d3f701206efad760ee54b9b2e2a038a821ef9f950eb0e248545ac202c3e2074cd14f92cb004c6763041c60aa57b1752103175cf93574c31637b8c2d8acd5319e3cd23761b5e418d32c6bcb194972ba9273ac67a9142d75daf71325feaa593b8f30989e462892189914882102a9669e63ef1ab04913615c2f3887ea3584f81e5f08feee9535b19ab3739d8afdac68ffffffff01c1480000000000001976a914b7128d2ee837cf03e30a2c0e3e0181f7b9669bb688ac00000000 - // 01000000013c27395a713b382028919f267bad48253433441eedef0e2f4f15621a3859473f00000000fd8b00206efad760ee54b9b2e2a038a821ef9f950eb0e248545ac202c3e2074cd14f92cb004c6763041c60aa57b1752103175cf93574c31637b8c2d8acd5319e3cd23761b5e418d32c6bcb194972ba9273ac67a9142d75daf71325feaa593b8f30989e462892189914882102a9669e63ef1ab04913615c2f3887ea3584f81e5f08feee9535b19ab3739d8afdac68ffffffff01c1480000000000001976a914b7128d2ee837cf03e30a2c0e3e0181f7b9669bb688ac00000000 - //cJSON *txobj; char *teststr= "{\"version\":1,\"locktime\":0,\"vin\":[{\"userdata\":\"20ae439d344513eab8e718d8214fe6ae8133b8b5b594afd64da21d0e40b9c37cdd00\",\"txid\":\"2c1320315f4fb519cbf2b4d7b67855013b9a09a85e515df43b41d407a0083b09\",\"vout\":0,\"scriptPubKey\":{\"hex\":\"a9142e7674400d04217f770f2222126dc7fee44b06b487\"},\"suppress\":1,\"redeemScript\":\"63041686a657b1752102a9669e63ef1ab04913615c2f3887ea3584f81e5f08feee9535b19ab3739d8afdac67a914ed74c61c27656abc6c20687c3a9212ffdc6f34cd88210398a4cb9f6ea7c52a4e27455028a95e2e4e397a110fb75f072c2c58a8bdcbf4baac68\"}],\"vout\":[{\"satoshis\":\"16733\",\"scriptPubkey\":{\"hex\":\"76a91454a752f0d71b89d7c014ed0be29ca231c9546f9f88ac\"}}]}"; extraspace = calloc(1,extralen); - /*if ( (txobj= cJSON_Parse(teststr)) != 0 ) - { - bits256 txid; - rawtx = bitcoin_json2hex(myinfo,coin,&txid,txobj,0); - txobj = bitcoin_hex2json(coin,coin->blocks.hwmchain.height,&txid,0,rawtx,extraspace,extralen,0,0,suppress); - printf("RAWTX.(%s) -> (%s)\n",rawtx,jprint(txobj,0)); - }*/ retstr = iguana_validaterawtx(myinfo,coin,coin->blocks.hwmchain.height,&msgtx,extraspace,extralen,rawtx,0,suppress); free(extraspace); return(rawtx); } +int32_t iguana_validatesigs(struct supernet_info *myinfo,struct iguana_info *coin,uint8_t *serialized,int32_t datalen) +{ + uint8_t *extraspace; cJSON *retjson; int32_t extralen=65536; char *retstr,*rawtx; struct iguana_msgtx msgtx; int32_t suppress=0,retval = -1; + rawtx = calloc(1,datalen*2 + 1); + init_hexbytes_noT(rawtx,serialized,datalen); + extraspace = calloc(1,extralen); + for (suppress=0; suppress<1; suppress++) + { + if ( (retstr= iguana_validaterawtx(myinfo,coin,coin->blocks.hwmchain.height,&msgtx,extraspace,extralen,rawtx,0,suppress)) != 0 ) + { + if ( (retjson= cJSON_Parse(retstr)) != 0 ) + { + if ( jobj(retjson,"error") == 0 ) + { + retval = 0; + //char str[65]; printf("%s %s sigs validated\n",coin->symbol,bits256_str(str,msgtx.txid)); + coin->sigsvalidated++; + break; + } + else + { + printf("ERROR.(%s)\n",retstr); + coin->sigserrs++; + } + free_json(retjson); + } + free(retstr); + } + } + free(rawtx); + free(extraspace); + return(retval); +} + STRING_AND_INT(bitcoinrpc,decoderawtransaction,rawtx,suppress) { cJSON *txobj = 0; bits256 txid; uint8_t *extraspace; int32_t extralen = 65536; @@ -1091,7 +1139,7 @@ HASH_ARG(bitcoinrpc,gettransaction,txid) cJSON *iguana_createvins(struct supernet_info *myinfo,struct iguana_info *coin,cJSON *txobj,cJSON *vins) { - int32_t i,n,vout,p2shlen=0,spendlen=0,unspentind,height; uint64_t satoshis; char coinaddr[128],pubkeystr[256],scriptstr[IGUANA_MAXSCRIPTSIZE*2],*str,*hexstr; cJSON *pubkeys,*item,*obj,*newvin,*newvins; uint32_t sequenceid; bits256 txid; uint8_t spendscript[IGUANA_MAXSCRIPTSIZE],redeemscript[IGUANA_MAXSCRIPTSIZE]; struct iguana_waccount *wacct; struct iguana_waddress *waddr; + int32_t i,n,vout,p2shlen=0,spendlen=0,height; uint64_t satoshis; char coinaddr[128],pubkeystr[256],scriptstr[IGUANA_MAXSCRIPTSIZE*2],*str,*hexstr; cJSON *pubkeys,*item,*obj,*newvin,*newvins; uint32_t sequenceid; bits256 txid; uint8_t spendscript[IGUANA_MAXSCRIPTSIZE],redeemscript[IGUANA_MAXSCRIPTSIZE]; struct iguana_waccount *wacct; struct iguana_waddress *waddr; struct iguana_outpoint outpt; newvins = cJSON_CreateArray(); if ( (n= cJSON_GetArraySize(vins)) > 0 ) { @@ -1115,7 +1163,7 @@ cJSON *iguana_createvins(struct supernet_info *myinfo,struct iguana_info *coin,c spendlen = (int32_t)strlen(hexstr) >> 1; decode_hex(spendscript,spendlen,hexstr); } - if ( (unspentind= iguana_RTunspentindfind(myinfo,coin,coinaddr,spendscript,&spendlen,&satoshis,&height,txid,vout,coin->bundlescount-1,0)) > 0 ) + if ( iguana_RTunspentindfind(myinfo,coin,&outpt,coinaddr,spendscript,&spendlen,&satoshis,&height,txid,vout,coin->bundlescount-1,0) == 0 ) { //printf("[%d] unspentind.%d (%s) spendlen.%d %.8f\n",height/coin->chain->bundlesize,unspentind,coinaddr,spendlen,dstr(satoshis)); if ( coinaddr[0] != 0 && (waddr= iguana_waddresssearch(myinfo,&wacct,coinaddr)) != 0 ) @@ -1248,7 +1296,7 @@ TWOINTS_AND_ARRAY(bitcoinrpc,listunspent,minconf,maxconf,array) maxconf = (1 << 30); if ( (argarray= array) == 0 || cJSON_GetArraySize(array) == 0 ) argarray = iguana_getaddressesbyaccount(myinfo,coin,"*"); - retjson = iguana_RTlistunspent(myinfo,coin,argarray,minconf,maxconf,remoteaddr); + retjson = iguana_RTlistunspent(myinfo,coin,argarray,minconf,maxconf,remoteaddr,0); if ( argarray != array ) free_json(argarray); return(jprint(retjson,1)); @@ -1265,7 +1313,7 @@ ZERO_ARGS(bitcoinrpc,getrawchangeaddress) INT_AND_ARRAY(bitcoinrpc,lockunspent,flag,array) { - struct iguana_outpoint outpt; int32_t RTspendflag,vout,i,n,height,spentheight,lockedflag; cJSON *item,*retjson; bits256 txid; uint32_t unspentind; + struct iguana_outpoint outpt; int32_t RTspendflag,vout,i,n,height,spentheight,lockedflag; cJSON *item,*retjson; bits256 txid; if ( remoteaddr != 0 ) return(clonestr("{\"error\":\"no remote\"}")); retjson = cJSON_CreateObject(); @@ -1278,11 +1326,10 @@ INT_AND_ARRAY(bitcoinrpc,lockunspent,flag,array) { txid = jbits256(item,"txid"); vout = jint(item,"vout"); - if ( (unspentind= iguana_RTunspentindfind(myinfo,coin,0,0,0,0,&height,txid,vout,coin->bundlescount-1,0)) != 0 ) + if ( iguana_RTunspentindfind(myinfo,coin,&outpt,0,0,0,0,&height,txid,vout,coin->bundlescount-1,0) == 0 ) { - memset(&outpt,0,sizeof(outpt)); - outpt.hdrsi = height / coin->chain->bundlesize; - outpt.unspentind = unspentind; + //outpt.hdrsi = height / coin->chain->bundlesize; + //outpt.unspentind = unspentind; iguana_RTutxofunc(coin,&spentheight,&lockedflag,outpt,&RTspendflag,!flag,0); } } @@ -1333,13 +1380,16 @@ DOUBLE_ARG(bitcoinrpc,settxfee,amount) S_D_SS(bitcoinrpc,sendtoaddress,address,amount,comment,comment2) { + char *retstr; if ( remoteaddr != 0 ) return(clonestr("{\"error\":\"no remote\"}")); if ( myinfo->expiration == 0 ) return(clonestr("{\"error\":\"need to unlock wallet\"}")); myinfo->expiration++; //iguana_unspentset(myinfo,coin); - return(sendtoaddress(myinfo,coin,remoteaddr,address,amount * SATOSHIDEN,coin->txfee,comment,comment2,coin->minconfirms,0)); + if ( (retstr= sendtoaddress(myinfo,coin,remoteaddr,address,amount * SATOSHIDEN,coin->txfee,comment,comment2,coin->minconfirms,0)) != 0 ) + printf("SEND.(%s)\n",retstr); + return(retstr); } SS_D_I_SS(bitcoinrpc,sendfrom,fromaccount,toaddress,amount,minconf,comment,comment2) diff --git a/iguana/iguana_peers.c b/iguana/iguana_peers.c index 068dd8c49..b245392b0 100755 --- a/iguana/iguana_peers.c +++ b/iguana/iguana_peers.c @@ -88,7 +88,10 @@ struct iguana_iAddr *_iguana_hashset(struct iguana_info *coin,uint32_t ipbits,in ptr = iguana_memalloc(mem,allocsize,1); else ptr = mycalloc('t',1,allocsize); if ( ptr == 0 ) - printf("fatal alloc errorA in hashset\n"), exit(-1); + { + printf("fatal alloc errorA in hashset\n"); + iguana_exit(0,0); + } //printf("ptr.%p allocsize.%d key.%p keylen.%d itemind.%d\n",ptr,allocsize,key,keylen,itemind); ptr->hh.itemind = itemind; ptr->ipbits = ipbits; @@ -114,7 +117,7 @@ struct iguana_iAddr *iguana_iAddrhashset(struct iguana_info *coin,struct iguana_ if ( iA == 0 || iA->ipbits == 0 ) { printf("null iA.%p or ipbits.%llx ind.%d status.%d\n",iA,iA!=0?(long long)iA->ipbits:0,iA!=0?iA->hh.itemind:0,iA!=0?iA->status:0); - exit(-1); + iguana_exit(0,0); return(0); } portable_mutex_lock(&coin->peers_mutex); @@ -189,7 +192,10 @@ uint32_t iguana_rwiAddrind(struct iguana_info *coin,int32_t rwflag,struct iguana { ptr = mycalloc('t',1,sizeof(*ptr)); if ( ptr == 0 ) - printf("fatal alloc errorB in hashset\n"), exit(-1); + { + printf("fatal alloc errorB in hashset\n"); + iguana_exit(0,0); + } ptr->hh.itemind = m; ptr->ipbits = tmp.ipbits; HASH_ADD(hh,coin->iAddrs,ipbits,sizeof(ipbits),ptr); @@ -361,10 +367,14 @@ int32_t iguana_socket(int32_t bindflag,char *hostname,uint16_t port) } saddr.sin_family = AF_INET; saddr.sin_port = htons(port); +//#ifdef WIN32 +// saddr.sin_addr.s_addr = (uint32_t)calc_ipbits("127.0.0.1"); +//#else memcpy(&saddr.sin_addr.s_addr,hostent->h_addr_list[0],hostent->h_length); expand_ipbits(checkipaddr,saddr.sin_addr.s_addr); if ( strcmp(ipaddr,checkipaddr) != 0 ) printf("bindflag.%d iguana_socket mismatch (%s) -> (%s)?\n",bindflag,checkipaddr,ipaddr); +//#endif if ( (sock= socket(AF_INET,SOCK_STREAM,0)) < 0 ) { if ( errno != ETIMEDOUT ) @@ -374,6 +384,7 @@ int32_t iguana_socket(int32_t bindflag,char *hostname,uint16_t port) opt = 1; slen = sizeof(opt); //printf("set keepalive.%d\n",setsockopt(sock,SOL_SOCKET,SO_KEEPALIVE,(void *)&opt,slen)); +#ifndef WIN32 if ( 1 )//&& bindflag != 0 ) { if ( 1 ) @@ -389,6 +400,7 @@ int32_t iguana_socket(int32_t bindflag,char *hostname,uint16_t port) } else setsockopt(sock,SOL_SOCKET,SO_REUSEADDR,(void *)&opt,sizeof(opt)); #ifdef __APPLE__ setsockopt(sock,SOL_SOCKET,SO_NOSIGPIPE,&opt,sizeof(opt)); +#endif #endif if ( bindflag == 0 ) { @@ -472,6 +484,7 @@ int32_t iguana_send(struct iguana_info *coin,struct iguana_peer *addr,uint8_t *s //printf("skip.(%s) since no verack yet\n",cmdstr); return(-1); } + //printf("%s -> %s\n",cmdstr,addr->ipaddr); if ( strcmp(cmdstr,"ping") == 0 ) addr->sendmillis = OS_milliseconds(); if ( len > IGUANA_MAXPACKETSIZE ) @@ -504,7 +517,8 @@ int32_t iguana_send(struct iguana_info *coin,struct iguana_peer *addr,uint8_t *s } } addr->totalsent += len; - //printf(" (%s) sent.%d bytes to %s\n",cmdstr,len,addr->ipaddr);// getchar(); + if ( 0 && addr->basilisk != 0 ) + printf("verack.%d (%s) sent.%d bytes to %s\n",addr->msgcounts.verack,cmdstr,len,addr->ipaddr); return(len); } @@ -514,7 +528,7 @@ int32_t iguana_queue_send(struct iguana_peer *addr,int32_t delay,uint8_t *serial if ( addr == 0 ) { printf("iguana_queue_send null addr\n"); - exit(-1); + iguana_exit(0,0); return(-1); } if ( (datalen= iguana_sethdr((void *)serialized,addr->netmagic,cmd,&serialized[sizeof(struct iguana_msghdr)],len)) < 0 ) @@ -532,7 +546,8 @@ int32_t iguana_queue_send(struct iguana_peer *addr,int32_t delay,uint8_t *serial packet->embargo.millis += delay; } memcpy(packet->serialized,serialized,datalen); - //printf("%p queue send.(%s) %d to (%s)\n",packet,serialized+4,datalen,addr->ipaddr); + if ( 0 && addr->basilisk != 0 ) + printf("%p queue send.(%s) %d to (%s)\n",packet,serialized+4,datalen,addr->ipaddr); queue_enqueue("sendQ",&addr->sendQ,&packet->DL,0); return(datalen); } @@ -566,23 +581,29 @@ int32_t iguana_recv(char *ipaddr,int32_t usock,uint8_t *recvbuf,int32_t len) return(len); } -void iguana_parsebuf(struct iguana_info *coin,struct iguana_peer *addr,struct iguana_msghdr *H,uint8_t *buf,int32_t len,int32_t fromcache) +void iguana_peer_meminit(struct iguana_info *coin,struct iguana_peer *addr) +{ + if ( addr->RAWMEM.ptr == 0 ) + iguana_meminit(&addr->RAWMEM,addr->ipaddr,0,IGUANA_MAXPACKETSIZE * 2,0); + if ( addr->TXDATA.ptr == 0 ) + iguana_meminit(&addr->TXDATA,"txdata",0,IGUANA_MAXPACKETSIZE * 2,0); + if ( addr->HASHMEM.ptr == 0 ) + iguana_meminit(&addr->HASHMEM,"HASHPTRS",0,256,0);//IGUANA_MAXPACKETSIZE*16,0); + //printf("Init %s memory %p %p %p\n",addr->ipaddr,addr->RAWMEM.ptr,addr->TXDATA.ptr,addr->HASHMEM.ptr); + iguana_memreset(&addr->RAWMEM); + iguana_memreset(&addr->TXDATA); + iguana_memreset(&addr->HASHMEM); +} + +void iguana_parsebuf(struct supernet_info *myinfo,struct iguana_info *coin,struct iguana_peer *addr,struct iguana_msghdr *H,uint8_t *buf,int32_t len,int32_t fromcache) { struct iguana_msghdr checkH; memset(&checkH,0,sizeof(checkH)); if ( iguana_sethdr(&checkH,coin->chain->netmagic,H->command,buf,len) > 0 && memcmp(&checkH,H,sizeof(checkH)) == 0 ) { if ( strcmp(H->command,"block") == 0 || strcmp(H->command,"getblocks") == 0 || strcmp(H->command,"tx") == 0 ) - { - if ( addr->RAWMEM.ptr == 0 ) - iguana_meminit(&addr->RAWMEM,addr->ipaddr,0,IGUANA_MAXPACKETSIZE * 2,0); - if ( addr->TXDATA.ptr == 0 ) - iguana_meminit(&addr->TXDATA,"txdata",0,IGUANA_MAXPACKETSIZE * 2,0); - if ( addr->HASHMEM.ptr == 0 ) - iguana_meminit(&addr->HASHMEM,"HASHPTRS",0,256,0);//IGUANA_MAXPACKETSIZE*16,0); - //printf("Init %s memory %p %p %p\n",addr->ipaddr,addr->RAWMEM.ptr,addr->TXDATA.ptr,addr->HASHMEM.ptr); - } - if ( iguana_msgparser(coin,addr,&addr->RAWMEM,&addr->TXDATA,&addr->HASHMEM,H,buf,len,fromcache) < 0 || addr->dead != 0 ) + iguana_peer_meminit(coin,addr); + if ( iguana_msgparser(myinfo,coin,addr,&addr->RAWMEM,&addr->TXDATA,&addr->HASHMEM,H,buf,len,fromcache) < 0 || addr->dead != 0 ) { printf("%p addr->dead.%d or parser break at %u\n",&addr->dead,addr->dead,(uint32_t)time(NULL)); addr->dead = (uint32_t)time(NULL); @@ -604,7 +625,7 @@ void iguana_parsebuf(struct iguana_info *coin,struct iguana_peer *addr,struct ig } } -void _iguana_processmsg(struct iguana_info *coin,int32_t usock,struct iguana_peer *addr,uint8_t *_buf,int32_t maxlen) +void _iguana_processmsg(struct supernet_info *myinfo,struct iguana_info *coin,int32_t usock,struct iguana_peer *addr,uint8_t *_buf,int32_t maxlen) { int32_t len,recvlen; void *buf = _buf; struct iguana_msghdr H; if ( (coin->peers != 0 && coin->peers->shuttingdown != 0) || addr->dead != 0 ) @@ -638,7 +659,7 @@ void _iguana_processmsg(struct iguana_info *coin,int32_t usock,struct iguana_pee return; } } - iguana_parsebuf(coin,addr,&H,buf,len,0); + iguana_parsebuf(myinfo,coin,addr,&H,buf,len,0); if ( buf != _buf ) myfree(buf,len); return; @@ -695,7 +716,7 @@ void iguana_startconnection(void *arg) addr->addrind = (int32_t)(((long)addr - (long)&coin->peers->active[0]) / sizeof(*addr)); if ( addr->usock >= 0 ) { - printf("%s usock.%d skip connection\n",addr->ipaddr,addr->usock); + //printf("%s usock.%d skip connection\n",addr->ipaddr,addr->usock); return; } if ( strcmp(coin->name,addr->coinname) != 0 ) @@ -703,12 +724,6 @@ void iguana_startconnection(void *arg) printf("iguana_startconnection.%s:%04x mismatched coin.%p (%s) vs (%s)\n",addr->ipaddr,coin->chain->portp2p,coin,coin->symbol,addr->coinname); return; } - if ( strcmp("85.25.217.233",addr->ipaddr) == 0 ) - { - printf("temp blacklist %s\n",addr->ipaddr); - iguana_iAkill(coin,addr,1); - return; - } //printf("%s iguana_startconnection.%s:%04x\n",coin->symbol,addr->ipaddr,coin->chain->portp2p); if ( strcmp("127.0.0.1",addr->ipaddr) == 0 )//&& (coin->myservices & NODE_NETWORK) != 0 ) { @@ -716,7 +731,7 @@ void iguana_startconnection(void *arg) printf("avoid self-loopback\n"); return; } - //printf("startconnection.(%s) pending.%u usock.%d addrind.%d\n",addr->ipaddr,addr->pending,addr->usock,addr->addrind); + //printf(">>>>>>>> %s startconnection.(%s) pending.%u usock.%d addrind.%d\n",coin->symbol,addr->ipaddr,addr->pending,addr->usock,addr->addrind); addr->pending = (uint32_t)time(NULL); if ( (port= (uint16_t)(addr->ipbits >> 32)) == 0 ) port = coin->chain->portp2p; @@ -824,16 +839,15 @@ void iguana_launchpeer(struct iguana_info *coin,char *ipaddr,int32_t forceflag) else printf("iguana_launchpeer skip %s\n",ipaddr); } -void *iguana_iAddriterator(struct iguana_info *coin,struct iguana_iAddr *iA) +void *iguana_iAddriterator(struct iguana_info *coin,struct iguana_iAddr *iA,struct iguana_peer *addr) { - struct iguana_peer *addr = 0; if ( coin->virtualchain != 0 ) return(0); if ( iA != 0 && iA->ipbits != 0 && iguana_numthreads(coin,1 << IGUANA_CONNTHREAD) < IGUANA_MAXCONNTHREADS && iA->status == IGUANA_PEER_ELIGIBLE ) { //printf("%x\n",iA->ipbits); //portable_mutex_unlock(&coin->peers_mutex); - if ( (addr= iguana_peerslot(coin,iA->ipbits,0)) != 0 ) + if ( addr != 0 || (addr= iguana_peerslot(coin,iA->ipbits,0)) != 0 ) { addr->ipbits = iA->ipbits; //printf("pend.%d status.%d possible peer.(%s).%x threads %d %d %d %d\n",addr->pending,iA->status,addr->ipaddr,(uint32_t)addr->ipbits,iguana_numthreads(coin,0),iguana_numthreads(coin,1),iguana_numthreads(coin,2),iguana_numthreads(coin,3)); @@ -863,7 +877,7 @@ void *iguana_iAddriterator(struct iguana_info *coin,struct iguana_iAddr *iA) uint32_t iguana_possible_peer(struct iguana_info *coin,char *ipaddr) { - char checkaddr[64]; uint64_t ipbits; uint32_t now = (uint32_t)time(NULL); int32_t i,n; struct iguana_iAddr *iA; + char checkaddr[64],_ipaddr[64]; uint64_t ipbits; uint32_t now = (uint32_t)time(NULL); int32_t i,n; struct iguana_iAddr *iA; struct iguana_peer *addr; if ( coin->virtualchain != 0 || coin->peers == 0 ) return(0); if ( ipaddr != 0 && ipaddr[0] != 0 && coin->peers != 0 ) @@ -884,28 +898,24 @@ uint32_t iguana_possible_peer(struct iguana_info *coin,char *ipaddr) return((uint32_t)time(NULL)); else if ( (ipaddr= queue_dequeue(&coin->possibleQ,1)) == 0 ) return((uint32_t)time(NULL)); + safecopy(_ipaddr,ipaddr,sizeof(_ipaddr)); + free_queueitem(ipaddr); + ipaddr = _ipaddr; #ifdef IGUANA_DISABLEPEERS if ( strcmp(ipaddr,"127.0.0.1") != 0 ) - { - free_queueitem(ipaddr); return((uint32_t)time(NULL)); - } #endif ipbits = (uint32_t)calc_ipbits(ipaddr); - //printf("%s check possible peer.(%s)\n",coin->symbol,ipaddr); - if ( iguana_peerslot(coin,(uint32_t)ipbits,0) != 0 ) + if ( (addr= iguana_peerslot(coin,(uint32_t)ipbits,0)) == 0 ) return((uint32_t)time(NULL)); - for (i=n=0; ipeers->active[i].ipaddr) == 0 ) - { - //printf("(%s) already active\n",ipaddr); - free_queueitem(ipaddr); return((uint32_t)time(NULL)); - } else if ( coin->peers->active[i].ipaddr[0] != 0 ) n++; - } + }*/ + n = coin->peers->numranked; if ( n >= coin->MAXPEERS-(coin->MAXPEERS>>3)-1 || coin->peers->numranked >= coin->MAXPEERS ) return((uint32_t)time(NULL)); if ( strncmp("0.0.0",ipaddr,5) != 0 && strcmp("0.0.255.255",ipaddr) != 0 && strcmp("1.0.0.0",ipaddr) != 0 ) @@ -916,6 +926,7 @@ uint32_t iguana_possible_peer(struct iguana_info *coin,char *ipaddr) ipaddr[i] = 0; break; } + //printf("%s check possible peer.(%s)\n",coin->symbol,ipaddr); if ( (ipbits= calc_ipbits(ipaddr)) != 0 ) { expand_ipbits(checkaddr,ipbits); @@ -931,14 +942,13 @@ uint32_t iguana_possible_peer(struct iguana_info *coin,char *ipaddr) iA->status = IGUANA_PEER_ELIGIBLE; if ( iguana_rwiAddrind(coin,1,iA,iA->hh.itemind) == 0 ) printf("error updating status for (%s) ind.%d\n",ipaddr,iA->hh.itemind); - iguana_iAddriterator(coin,iA); + iguana_iAddriterator(coin,iA,addr); } else printf("ignore.(%s) lastconnect.%u lastkilled.%u numconnects.%d\n",ipaddr,iA->lastconnect,iA->lastkilled,iA->numconnects); } else printf("skip.(%s) ind.%d status.%d\n",ipaddr,iA->hh.itemind,iA->status); } else printf("cant find (%s) which should have been created\n",ipaddr); } else printf("%s reject ipaddr.(%s) vs checkaddr.(%s)\n",coin->symbol,ipaddr,checkaddr); } } - free_queueitem(ipaddr); return((uint32_t)time(NULL)); } @@ -950,7 +960,7 @@ void iguana_processmsg(void *ptr) printf("iguana_processmsg cant find addr.%p symbol.%s\n",addr,addr!=0?addr->symbol:0); return; } - _iguana_processmsg(coin,addr->usock,addr,buf,sizeof(buf)); + _iguana_processmsg(SuperNET_MYINFO(0),coin,addr->usock,addr,buf,sizeof(buf)); addr->startrecv = 0; } @@ -981,7 +991,7 @@ int32_t iguana_pollsendQ(struct iguana_info *coin,struct iguana_peer *addr) return(0); } -int32_t iguana_pollrecv(struct iguana_info *coin,struct iguana_peer *addr,uint8_t *buf,int32_t bufsize) +int32_t iguana_pollrecv(struct supernet_info *myinfo,struct iguana_info *coin,struct iguana_peer *addr,uint8_t *buf,int32_t bufsize) { #ifndef IGUANA_DEDICATED_THREADS strcpy(addr->symbol,coin->symbol); @@ -992,7 +1002,7 @@ int32_t iguana_pollrecv(struct iguana_info *coin,struct iguana_peer *addr,uint8_ } else #endif - _iguana_processmsg(coin,addr->usock,addr,buf,bufsize); + _iguana_processmsg(myinfo,coin,addr->usock,addr,buf,bufsize); return(1); } @@ -1076,7 +1086,7 @@ int64_t iguana_peerfree(struct iguana_info *coin,struct iguana_peer *addr,void * if ( iguana_memfree(mem,ptr,datalen) < 0 || (avail= iguana_peerallocated(coin,addr)) < 0 ) { printf("iguana_peerfree: corrupted mem avail.%lld ptr.%p %d\n",(long long)avail,ptr,datalen); - exit(-1); + iguana_exit(myinfo); } return(avail); } @@ -1190,8 +1200,9 @@ void iguana_dedicatedloop(struct supernet_info *myinfo,struct iguana_info *coin, } else { + sleep(1 + (rand() % 3)); + //printf("greeting send version myservices.%llu to (%s)\n",(long long)coin->myservices,addr->ipaddr); iguana_send_version(coin,addr,coin->myservices); - //printf("send version myservices.%llu to (%s)\n",(long long)coin->myservices,addr->ipaddr); } //sleep(1+(rand()%5)); run = 0; @@ -1202,7 +1213,7 @@ void iguana_dedicatedloop(struct supernet_info *myinfo,struct iguana_info *coin, if ( req->datalen != 0 ) { //char str[65]; printf("CACHE.%p parse[%d] %s %s\n",req,req->recvlen,req->H.command,bits256_str(str,req->zblock.RO.hash2)); - iguana_parsebuf(coin,addr,&req->H,req->serializeddata,req->recvlen,1); + iguana_parsebuf(myinfo,coin,addr,&req->H,req->serializeddata,req->recvlen,1); } else printf("CACHE error no datalen\n"); coin->cachefreed++; myfree(req,req->allocsize); @@ -1225,7 +1236,7 @@ void iguana_dedicatedloop(struct supernet_info *myinfo,struct iguana_info *coin, { if ( (fds.revents & POLLIN) != 0 ) { - flag += iguana_pollrecv(coin,addr,buf,bufsize); + flag += iguana_pollrecv(myinfo,coin,addr,buf,bufsize); if ( addr->dead != 0 ) { printf("%s is dead\n",addr->ipaddr); diff --git a/iguana/iguana_ramchain.c b/iguana/iguana_ramchain.c index 4b3322e88..9fa19d8e3 100755 --- a/iguana/iguana_ramchain.c +++ b/iguana/iguana_ramchain.c @@ -52,7 +52,10 @@ struct iguana_kvitem *iguana_hashsetPT(struct iguana_ramchain *ramchain,int32_t printf("alloc.%d\n",allocsize); } if ( ptr == 0 ) - printf("fatal alloc errorC in hashset\n"), exit(-1); + { + printf("fatal alloc errorC in hashset\n"); + iguana_exit(0,0); + } if ( 0 && ramchain->expanded && selector == 'T' ) printf("hashmem.%p selector.%c added.(%s) itemind.%x ptr.%p\n",ramchain->hashmem,selector,str,itemind,ptr); if ( selector == 'T' ) @@ -64,7 +67,10 @@ struct iguana_kvitem *iguana_hashsetPT(struct iguana_ramchain *ramchain,int32_t if ( 0 && ramchain->expanded && selector == 'T' ) printf("selector.%c added.(%s) itemind.%x ptr.%p tmp.%p\n",selector,str,itemind,ptr,tmp); if ( itemind == 0 ) - printf("negative itemind\n"), exit(-1); + { + printf("negative itemind\n"); + iguana_exit(0,0); + } if ( 0 ) { if ( selector == 'T' ) @@ -72,7 +78,8 @@ struct iguana_kvitem *iguana_hashsetPT(struct iguana_ramchain *ramchain,int32_t else HASH_FIND(hh,ramchain->pkhashes,key,keylen,tmp); if ( tmp != ptr ) { - printf("(%s) hashmem.%p selector.%c %s search error %p != %p itemind.%x\n",str,ramchain->hashmem,selector,str,ptr,tmp,itemind), exit(-1); + printf("(%s) hashmem.%p selector.%c %s search error %p != %p itemind.%x\n",str,ramchain->hashmem,selector,str,ptr,tmp,itemind); + iguana_exit(0,0); } } } @@ -106,8 +113,7 @@ int32_t iguana_peerfname(struct iguana_info *coin,int32_t *hdrsip,char *dirname, if ( 0 && dispflag != 0 ) printf("iguana_peerfname %s error finding.(%s) spec.%p bp.%p\n",coin->symbol,bits256_str(str,hash2),bp!=0?bp->speculative:0,bp); return(-2); - } - else bundlei++; + } else bundlei++; } hash2 = bp->hashes[0], *hdrsip = bp->hdrsi; subdir = bp->bundleheight / IGUANA_SUBDIRDIVISOR; @@ -163,6 +169,7 @@ int32_t iguana_peerfile_exists(struct iguana_info *coin,struct iguana_peer *addr #define RAMCHAIN_DESTARG dest,destB,destT,destU,destS,destP,destA,destX,destUx,destSx,destTXbits,destPKbits,destKspace #define RAMCHAIN_DESTPTRS dest,&destB,&destT,&destU,&destS,&destP,&destA,&destX,&destUx,&destSx,&destTXbits,&destPKbits,&destKspace #define RAMCHAIN_DESTDECLARE struct iguana_blockRO *destB; struct iguana_txid *destT; struct iguana_unspent20 *destU; struct iguana_spend256 *destS; struct iguana_pkhash *destP; struct iguana_account *destA; bits256 *destX; struct iguana_unspent *destUx; struct iguana_spend *destSx; uint8_t *destTXbits,*destPKbits,*destKspace; +#define RAMCHAIN_DESTZEROES destB = 0, destUx = 0, destSx = 0, destP = 0, destA = 0, destX = 0, destKspace = destTXbits = destPKbits = 0, destU = 0, destS = 0, destT = 0 uint32_t iguana_ramchain_addtxid(struct iguana_info *coin,RAMCHAIN_FUNC,bits256 txid,int32_t numvouts,int32_t numvins,uint32_t locktime,uint32_t version,uint32_t timestamp,int16_t bundlei) { @@ -177,7 +184,7 @@ uint32_t iguana_ramchain_addtxid(struct iguana_info *coin,RAMCHAIN_FUNC,bits256 { if ( t->txidind != txidind || memcmp(t->txid.bytes,txid.bytes,sizeof(bits256)) != 0 || t->numvouts != numvouts || t->numvins != numvins || t->firstvout != ramchain->H.unspentind || t->firstvin != ramchain->H.spendind || t->locktime != locktime || t->version != version || t->timestamp != timestamp ) { - printf("iguana_ramchain_addtxid.RO: addtxid mismatch (%d %d %d %d %d) vs. (%d %d %d %d %d)\n",t->txidind,t->numvouts,t->numvins,t->firstvout,t->firstvin,txidind,numvouts,numvins,ramchain->H.unspentind,ramchain->H.spendind); + printf("iguana_ramchain_addtxid.RO: addtxid mismatch (%u %d %d %u %u) vs. (%d %d %d %d %d)\n",(uint32_t)t->txidind,t->numvouts,t->numvins,(uint32_t)t->firstvout,(uint32_t)t->firstvin,txidind,numvouts,numvins,ramchain->H.unspentind,ramchain->H.spendind); //getchar(); return(0); } @@ -192,7 +199,7 @@ uint32_t iguana_ramchain_addtxid(struct iguana_info *coin,RAMCHAIN_FUNC,bits256 t->locktime = locktime, t->version = version, t->timestamp = timestamp; if ( t->txidind != txidind || t->firstvout != ramchain->H.unspentind || t->firstvin != ramchain->H.spendind || t->bundlei != bundlei ) { - printf("addtxid error: t->txidind %u != %u txidind || t->firstvout %u != %u ramchain->H.unspentind || t->firstvin %u != %u ramchain->H.spendind || t->bundlei %u != %u bundlei\n",t->txidind,txidind,t->firstvout,ramchain->H.unspentind,t->firstvin,ramchain->H.spendind,t->bundlei,bundlei); + printf("addtxid error: t->txidind %u != %u txidind || t->firstvout %u != %u ramchain->H.unspentind || t->firstvin %u != %u ramchain->H.spendind || t->bundlei %u != %u bundlei\n",(uint32_t)t->txidind,txidind,(uint32_t)t->firstvout,ramchain->H.unspentind,(uint32_t)t->firstvin,ramchain->H.spendind,(uint32_t)t->bundlei,bundlei); return(0); } if ( ramchain->expanded != 0 && (rdata= ramchain->H.data) != 0 ) @@ -225,7 +232,7 @@ uint32_t iguana_ramchain_addpkhash(struct iguana_info *coin,RAMCHAIN_FUNC,uint8_ if ( P[pkind].pkind != pkind ) //unspentind != 0 && (P[pkind].firstunspentind != unspentind || { printf("iguana_ramchain_addpkhash error mismatched pkind.(%x %x) unspentind.%d\n",pkind,P[pkind].pkind,unspentind); - exit(-1); + iguana_exit(0,0); return(0); } if ( memcmp(P[pkind].rmd160,rmd160,sizeof(P[pkind].rmd160)) != 0 ) @@ -332,7 +339,15 @@ uint32_t iguana_ramchain_addunspent20(struct iguana_info *coin,struct iguana_pee fputc(0,addr->voutsfp), u->scriptpos++, scriptpos++; if ( u->scriptpos != scriptpos || fwrite(script,1,scriptlen,addr->voutsfp) != scriptlen ) printf("error writing vout scriptlen.%d errno.%d or scriptpos.%lld != %u\n",scriptlen,errno,(long long)scriptpos,u->scriptpos); - else addr->dirty[0]++; + else + { + if ( coin->chain->fixit != 0 ) + { + fflush(addr->voutsfp); + usleep(1000); + } + addr->dirty[0]++; + } #ifdef __PNACL__ //portable_mutex_unlock(&mutex); #endif @@ -341,14 +356,14 @@ uint32_t iguana_ramchain_addunspent20(struct iguana_info *coin,struct iguana_pee } } u->txidind = ramchain->H.txidind; - if ( 0 && vout > 0 ) + if ( coin->chain->fixit != 0 && vout > 0 ) { int32_t i; for (i=0; i<20; i++) printf("%02x",rmd160[i]); printf(" rmd160 "); for (i=0; i<20; i++) printf("%02x",u->rmd160[i]); - char str[65]; printf(" u->rmd160 type.%d scriptlen.%d:%d (%s).v%d ht.%d\n",u->type,scriptlen,u->scriptlen,bits256_str(str,txid),vout,bp->bundleheight); + char str[65]; printf(" u->rmd160 type.%d scriptpos.%d scriptlen.%d:%d (%s).v%d ht.%d\n",u->type,u->scriptpos,scriptlen,u->scriptlen,bits256_str(str,txid),vout,bp->bundleheight); } } return(unspentind); @@ -388,7 +403,7 @@ uint32_t iguana_ramchain_addunspent(struct iguana_info *coin,RAMCHAIN_FUNC,uint6 if ( u->fileid != fileid || u->scriptpos != fpos || u->scriptlen != scriptlen || u->value != value || u->pkind != pkind || u->value != value || u->txidind != ramchain->H.txidind || (pkind != 0 && u->prevunspentind != A[pkind].lastunspentind) || u->vout != vout || u->hdrsi != hdrsi ) { printf("iguana_ramchain_addunspent: (%d %d %d) vs (%d %d %d) mismatched values.(%d %.8f %d %d %d %d) vs (%d %.8f %d %d %d %d)\n",u->fileid,u->scriptpos,u->scriptlen,fileid,fpos,scriptlen,u->pkind,dstr(u->value),u->txidind,u->prevunspentind,u->vout,u->hdrsi,pkind,dstr(value),ramchain->H.txidind,A[pkind].lastunspentind,vout,hdrsi); - exit(-1); + iguana_exit(0,0); return(0); } } @@ -483,7 +498,12 @@ uint32_t iguana_ramchain_addspend(struct iguana_info *coin,RAMCHAIN_FUNC,bits256 return(0); } } else printf("addspend illegal unspentind.%d vs %d\n",unspentind,rdata->numunspents); - } else printf("addspend illegal txidind.%d vs %d\n",txidind,rdata->numtxids), exit(-1); + } + else + { + printf("addspend illegal txidind.%d vs %d\n",txidind,rdata->numtxids); + iguana_exit(0,0); + } } if ( ramchain->H.ROflag != 0 ) { @@ -493,21 +513,6 @@ uint32_t iguana_ramchain_addspend(struct iguana_info *coin,RAMCHAIN_FUNC,bits256 char str[65],str2[65]; printf("ramchain_addspend RO value mismatch diffseq.%x v %x (%d) vs (%d) %s vs %s\n",s->sequenceid,sequence,s->prevout,prev_vout,bits256_str(str,txid),bits256_str(str2,prev_hash)); return(0); } - /*if ( (checklen= iguana_vinscriptdecode(coin,ramchain,&metalen,_script,&Kspace[rdata->scriptspace],Kspace,s)) != vinscriptlen || (vinscript != 0 && memcmp(_script,vinscript,vinscriptlen) != 0) ) - { - static uint64_t counter; - if ( counter++ < 100 ) - { - for (i=0; iH.scriptoffset += metalen; } else { @@ -517,36 +522,6 @@ uint32_t iguana_ramchain_addspend(struct iguana_info *coin,RAMCHAIN_FUNC,bits256 s->fileid = fileid; s->scriptpos = scriptpos; s->scriptlen = vinscriptlen; - /*static uint64_t good,bad; - if ( 0 && iguana_metascript(coin,RAMCHAIN_ARG,s,vinscript,vinscriptlen,0) < 0 ) - { - static long errlen,err2len; char errbuf[1024]; - errlen += vinscriptlen; - if ( iguana_metascript(coin,RAMCHAIN_ARG,s,vinscript,vinscriptlen,1) < 0 ) - { - err2len += vinscriptlen; - errbuf[0] = 0; - for (i=0; i 138 ) - { - errbuf[0] = 0; - for (i=0; ihdrsi = hdrsi; - //s->bundlei = bundlei; - //char str[65]; printf("%s set prevout.%d -> %d\n",bits256_str(str,prev_hash),prev_vout,s->prevout); - //if ( pkind != 0 ) - // s->prevspendind = A[pkind].lastspendind; } if ( pkind != 0 ) { @@ -567,7 +542,7 @@ uint32_t iguana_ramchain_addspend256(struct iguana_info *coin,struct iguana_peer { if ( vinscriptlen != s->vinscriptlen || s->sequenceid != sequence || memcmp(s->prevhash2.bytes,prev_hash.bytes,sizeof(bits256)) != 0 || s->prevout != prev_vout ) //|| s->hdrsi != hdrsi { - char str[65],str2[65]; printf("check offset %llu (%d %d) addspend.%d v %d RO value mismatch sequenceid.%x seq.%x prev_vout(%d vs %d) %s vs %s\n",(long long)s->scriptpos,vinscriptlen,s->vinscriptlen,spendind,s->spendind,s->sequenceid,sequence,s->prevout,prev_vout,bits256_str(str,s->prevhash2),bits256_str(str2,prev_hash)); + char str[65],str2[65]; printf("check offset %llu (%d %d) addspend.%d v %d RO value mismatch sequenceid.%x seq.%x prev_vout(%d vs %d) %s vs %s\n",(long long)s->scriptpos,vinscriptlen,(int32_t)s->vinscriptlen,spendind,s->spendind,s->sequenceid,sequence,s->prevout,prev_vout,bits256_str(str,s->prevhash2),bits256_str(str2,prev_hash)); //printf("check addspend.%d vs %d RO value mismatch (%d %d:%d) vs (%d %d:%d)\n",spendind,s->spendind,s->prevout,s->hdrsi,s->bundlei,prev_vout,hdrsi,bundlei); //exit(-1); return(0); @@ -590,7 +565,15 @@ uint32_t iguana_ramchain_addspend256(struct iguana_info *coin,struct iguana_peer fputc(0,addr->vinsfp), s->scriptpos++; if ( (err= (int32_t)fwrite(vinscript,1,vinscriptlen,addr->vinsfp)) != vinscriptlen ) printf("error.%d writing vinscriptlen.%d errno.%d addrind.%d\n",err,vinscriptlen,errno,addr->addrind); - else addr->dirty[1]++; + else + { + addr->dirty[1]++; + if ( coin->chain->fixit != 0 ) + { + fflush(addr->vinsfp); + usleep(1000); + } + } #ifdef __PNACL__ //portable_mutex_unlock(&mutex); #endif @@ -598,7 +581,7 @@ uint32_t iguana_ramchain_addspend256(struct iguana_info *coin,struct iguana_peer //else printf("spend256 scriptfpos.%d\n",s->scriptfpos); char str[65]; if ( 0 && coin->virtualchain != 0 ) - printf("W.%p s.%d vout.%d/%d [%d] %s fpos.%u slen.%d\n",s,spendind,s->prevout,prev_vout,bp->hdrsi,bits256_str(str,prev_hash),(uint32_t)s->scriptpos,s->vinscriptlen); + printf("W.%p s.%d vout.%d/%d [%d] %s fpos.%u slen.%d\n",s,spendind,s->prevout,prev_vout,bp->hdrsi,bits256_str(str,prev_hash),(uint32_t)s->scriptpos,(int32_t)s->vinscriptlen); } return(spendind); } @@ -689,6 +672,7 @@ void *iguana_ramchain_offset(char *fname,void *dest,uint8_t *lhash,FILE *fp,uint #endif startfpos = ftell(fp); err = fwrite(srcptr,1,len,fp); + fflush(fp); #ifdef __PNACL__ //portable_mutex_unlock(&mutex); #endif @@ -985,7 +969,7 @@ int64_t iguana_ramchain_init(char *fname,struct iguana_ramchain *ramchain,struct if ( rdata->allocsize != iguana_ramchain_size(fname,RAMCHAIN_ARG,numblocks,scriptspace,zcash) ) { printf("offset.%ld scriptspace.%d allocsize.%ld vs memsize.%ld\n",(long)offset,scriptspace,(long)rdata->allocsize,(long)iguana_ramchain_size(fname,RAMCHAIN_ARG,numblocks,scriptspace,zcash)); - exit(-1); + iguana_exit(0,0); } if ( offset <= mem->totalsize ) iguana_memreset(mem); @@ -1001,7 +985,7 @@ int64_t iguana_ramchain_init(char *fname,struct iguana_ramchain *ramchain,struct if ( rdata->allocsize > mem->totalsize ) { printf("init.(%d %d %d %d %d) rdata->allocsize.%ld mem->totalsize.%ld hashmemsize.%ld\n",numtxids,numunspents,numspends,numpkinds,numexternaltxids,(long)rdata->allocsize,mem->totalsize,hashmem!=0?hashmem->totalsize:0); - exit(-1); + iguana_exit(0,0); } return(offset); } @@ -1023,7 +1007,7 @@ int32_t iguana_ramchain_alloc(char *fname,struct iguana_info *coin,struct iguana char str[65],str2[65]; fprintf(stderr,"ht.%d wait for allocated %s < MAXMEM %s | elapsed %.2f minutes hashsize.%ld allocsize.%ld\n",height,mbstr(str,myallocated(0,-1)+hashsize+allocsize),mbstr(str2,coin->MAXMEM),(double)(time(NULL)-coin->startutc)/60.,(long)hashsize,(long)allocsize); sleep(13); } - iguana_meminit(hashmem,"ramhashmem",0,hashsize + 65536,0); + iguana_meminit(hashmem,"ramhashmem",0,2*hashsize + 65536,0); iguana_meminit(mem,"ramchain",0,allocsize + 65536,0); mem->alignflag = sizeof(uint32_t); hashmem->alignflag = sizeof(uint32_t); @@ -1069,7 +1053,9 @@ long iguana_ramchain_save(struct iguana_info *coin,RAMCHAIN_FUNC,uint32_t ipbits fpos = -1; } else iguana_ramchain_saveaction(fname,RAMCHAIN_ARG,fp,rdata,bp!=0?bp->n:1,ramchain->H.scriptoffset,zcash); *rdata = tmp; + fflush(fp); fclose(fp); + //sleep(3); } #ifdef __PNACL__ //portable_mutex_unlock(&mutex); @@ -1092,18 +1078,18 @@ int32_t iguana_ramchain_verify(struct iguana_info *coin,struct iguana_ramchain * t = &T[ramchain->H.txidind]; if ( t->txidind != ramchain->H.txidind ) { - printf("firsti.%d t->txidind.%d != txidind.%d\n",rdata->firsti,t->txidind,ramchain->H.txidind); + printf("firsti.%d t->txidind.%u != txidind.%u\n",rdata->firsti,(uint32_t)t->txidind,(uint32_t)ramchain->H.txidind); return(-1); } if ( t->firstvout != ramchain->H.unspentind ) { - printf("%p txidind.%d firstvout.%d != unspentind.%d\n",t,ramchain->H.txidind,t->firstvout,ramchain->H.unspentind); + printf("%p txidind.%u firstvout.%u != unspentind.%u\n",t,(uint32_t)ramchain->H.txidind,(uint32_t)t->firstvout,(uint32_t)ramchain->H.unspentind); //exit(-1); return(-4); } if ( t->firstvin != ramchain->H.spendind ) { - printf("t[%d] firstvin.%d vs spendind.%d\n",t->txidind,t->firstvin,ramchain->H.spendind); + printf("t[%u] firstvin.%u vs spendind.%d\n",(uint32_t)t->txidind,(uint32_t)t->firstvin,ramchain->H.spendind); return(-5); } if ( ramchain->expanded != 0 ) @@ -1227,7 +1213,7 @@ int32_t iguana_ramchain_free(struct iguana_info *coin,struct iguana_ramchain *ra if ( ramchain->A != ramchain->creditsA ) { //printf("hashmem.%p Free A %p %p, numpkinds.%d %ld\n",ramchain->hashmem,ramchain->A,ramchain->creditsA,rdata->numpkinds,sizeof(*ramchain->A) * rdata->numpkinds); - if ( deleteflag != 0 ) + if ( deleteflag != 0 && ramchain->A != 0 ) myfree(ramchain->A,sizeof(*ramchain->A) * rdata->numpkinds), ramchain->A = 0; } //if ( ramchain->U2 != ramchain->roU2 ) @@ -1294,7 +1280,7 @@ int32_t iguana_bundleremove(struct iguana_info *coin,int32_t hdrsi,int32_t tmpfi struct iguana_bundle *bp; int32_t i; char fname[1024],str[65]; if ( hdrsi >= 0 && hdrsi < coin->bundlescount && (bp= coin->bundles[hdrsi]) != 0 ) { - printf("delete bundle.[%d]\n",hdrsi); + printf("%s delete bundle.[%d]\n",coin->symbol,hdrsi); if ( tmpfiles != 0 ) { for (i=0; in; i++) @@ -1374,7 +1360,7 @@ int32_t iguana_Xspendmap(struct iguana_info *coin,struct iguana_ramchain *ramcha struct iguana_ramchain *_iguana_ramchain_map(struct iguana_info *coin,char *fname,struct iguana_bundle *bp,int32_t numblocks,struct iguana_ramchain *ramchain,struct OS_memspace *hashmem,uint32_t ipbits,bits256 hash2,bits256 prevhash2,int32_t bundlei,long fpos,int32_t allocextras,int32_t expanded,uint8_t zcash) { - RAMCHAIN_DECLARE; int32_t valid,iter,i,checki,hdrsi; long filesize; void *ptr; char str[65],str2[65],dirstr[64]; struct iguana_block *block; struct iguana_zblockRO zRO; struct iguana_ramchaindata *rdata; + RAMCHAIN_DECLARE; int32_t valid,iter,i,checki,hdrsi; long filesize; void *ptr; char str[65],str2[65],dirstr[65]; struct iguana_block *block; struct iguana_zblockRO zRO; struct iguana_ramchaindata *rdata; /*if ( ramchain->expanded != 0 && (ramchain->sigsfileptr == 0 || ramchain->sigsfilesize == 0) ) { sprintf(sigsfname,"sigs/%s/%s",coin->symbol,bits256_str(str,hash2)); @@ -1630,7 +1616,7 @@ int32_t iguana_ramchain_cmp(struct iguana_ramchain *A,struct iguana_ramchain *B, int32_t iguana_ramchain_iterate(struct supernet_info *myinfo,struct iguana_info *coin,struct iguana_ramchain *dest,struct iguana_ramchain *ramchain,struct iguana_bundle *bp,int16_t bundlei) { - RAMCHAIN_DECLARE; RAMCHAIN_DESTDECLARE; + RAMCHAIN_DECLARE; RAMCHAIN_DESTDECLARE; RAMCHAIN_DESTZEROES; int32_t j,hdrsi,prevout,scriptlen; uint32_t timestamp=0,unspentind,sequenceid,destspendind=0,desttxidind=0; uint16_t fileid; uint64_t scriptpos; int64_t crypto777_payment = 0; bits256 prevhash; uint64_t value; uint8_t type; struct iguana_unspent *u; struct iguana_txid *tx; struct iguana_ramchaindata *rdata; uint8_t rmd160[20]; @@ -1830,88 +1816,22 @@ int32_t iguana_ramchain_iterate(struct supernet_info *myinfo,struct iguana_info return(0); } -long iguana_ramchain_data(struct iguana_info *coin,struct iguana_peer *addr,struct iguana_txblock *origtxdata,struct iguana_msgtx *txarray,int32_t txn_count,uint8_t *data,int32_t recvlen) +long iguana_ramchain_data(struct iguana_info *coin,struct iguana_peer *addr,struct iguana_txblock *origtxdata,struct iguana_msgtx *txarray,int32_t txn_count,uint8_t *data,int32_t recvlen,struct iguana_bundle *bp,struct iguana_block *block) { - static uint64_t totalrecv; int32_t verifyflag = 0; - RAMCHAIN_DECLARE; uint32_t addr_ipbits; struct iguana_ramchain R,*mapchain,*ramchain = &addr->ramchain; struct iguana_msgtx *tx; char fname[1024]; uint8_t rmd160[20]; struct iguana_ramchaindata *rdata; int32_t i,j,fpos,pubkeysize,msize,sigsize,subdir,firsti=1,err,flag,bundlei = -2; bits256 merkle_root; struct iguana_bundle *bp = 0; struct iguana_block *block; uint32_t scriptspace,stackspace; - totalrecv += recvlen; -#ifdef __PNACL__ - //verifyflag = 1; -#endif - if ( addr == 0 || (addr_ipbits= (uint32_t)addr->ipbits) == 0 ) - addr_ipbits = 1; - if ( bits256_nonz(origtxdata->zblock.RO.merkle_root) == 0 ) + RAMCHAIN_DECLARE; struct iguana_ramchain R,*mapchain,*ramchain = &addr->ramchain; struct iguana_msgtx *tx; char fname[1024]; uint8_t rmd160[20]; struct iguana_ramchaindata *rdata; int32_t i,j,fpos,pubkeysize,sigsize,subdir,firsti=1,err,flag,bundlei; uint32_t scriptspace,stackspace; + if ( block == 0 || bp == 0 || addr == 0 || (bundlei= block->bundlei) < 0 ) { - memset(&origtxdata->zblock.RO.prev_block,0,sizeof(bits256)); - origtxdata->zblock.RO.recvlen = 0; - origtxdata->zblock.issued = 0; + printf("iguana_ramchain_data: null ptr %p %p %p\n",block,bp,addr); return(-1); } - if ( addr != 0 ) - { - for (i=0; idirty)/sizeof(*addr->dirty); i++) - addr->dirty[i] = 0; - } - msize = (int32_t)sizeof(bits256) * (txn_count+1) * 2; - if ( msize <= addr->TXDATA.totalsize ) - { - bits256 *tree = addr->TXDATA.ptr; - iguana_memreset(&addr->TXDATA); - for (i=0; izblock.RO.merkle_root) != 0 ) - { - char str[65],str2[65]; - printf(">>>>>>>>>> %s %s merkle mismatch.[%d] calc.(%s) vs (%s)\n",addr->ipaddr,coin->symbol,txn_count,bits256_str(str,merkle_root),bits256_str(str2,origtxdata->zblock.RO.merkle_root)); - origtxdata->zblock.RO.recvlen = 0; - origtxdata->zblock.issued = 0; - return(-1); - } //else printf("matched merkle.%d\n",txn_count); - } else printf("not enough memory for merkle verify %d vs %lu\n",(int32_t)(sizeof(bits256)*(txn_count+1)),(long)addr->TXDATA.totalsize); - bp = 0, bundlei = -2; - if ( iguana_bundlefind(coin,&bp,&bundlei,origtxdata->zblock.RO.hash2) == 0 ) - { - bp = 0, bundlei = -2; - if ( iguana_bundlefind(coin,&bp,&bundlei,origtxdata->zblock.RO.prev_block) == 0 ) - { - origtxdata->zblock.RO.recvlen = 0; - origtxdata->zblock.issued = 0; - return(-1); - } - else if ( bundlei < coin->chain->bundlesize-1 ) - bundlei++; - else - { - origtxdata->zblock.issued = 0; - origtxdata->zblock.RO.recvlen = 0; - char str[65]; printf("ramchain data: error finding block %s\n",bits256_str(str,origtxdata->zblock.RO.hash2)); - return(-1); - } - } - if ( (block= bp->blocks[bundlei]) == 0 || bits256_cmp(block->RO.hash2,origtxdata->zblock.RO.hash2) != 0 || bits256_cmp(bp->hashes[bundlei],origtxdata->zblock.RO.hash2) != 0 ) - { - char str[65]; - if ( 0 && block != 0 ) - printf("%d:%d has no block ptr.%p %s or wrong hash\n",bp->hdrsi,bundlei,block,bits256_str(str,origtxdata->zblock.RO.hash2)); - return(-1); - } - block->txvalid = 1; - if ( block->fpipbits != 0 && block->fpos >= 0 ) - { - static int32_t numredundant; static double redundantsize; static uint32_t lastdisp; - char str[65],str2[65]; - numredundant++, redundantsize += recvlen; - if ( time(NULL) > lastdisp+30 ) - { - lastdisp = (uint32_t)time(NULL); - printf("ramchaindata have %d:%d at %d | %d blocks %s redundant xfers total %s %.2f%% wasted\n",bp->hdrsi,bundlei,block->fpos,numredundant,mbstr(str,redundantsize),mbstr(str2,totalrecv),100.*redundantsize/totalrecv); - } - return(block->fpos); - } +#ifdef __PNACL__ + //verifyflag = 1; +#endif sigsize = pubkeysize = 0; scriptspace = 1;//iguana_scriptspaceraw(coin,&scriptsize,&sigsize,&pubkeysize,txarray,txn_count); + for (i=0; idirty)/sizeof(*addr->dirty); i++) + addr->dirty[i] = 0; if ( iguana_ramchain_init(fname,ramchain,&addr->TXDATA,&addr->HASHMEM,1,txn_count,origtxdata->numunspents,origtxdata->numspends,0,0,(scriptspace+sigsize+pubkeysize)*1.1,0,1,coin->chain->zcash) == 0 ) { if ( block->fpipbits == 0 ) @@ -1976,18 +1896,18 @@ long iguana_ramchain_data(struct iguana_info *coin,struct iguana_peer *addr,stru iguana_blockzcopyRO(coin->chain->zcash,B,0,&block->RO,0); rdata->scriptspace = ramchain->H.scriptoffset = scriptspace; rdata->stackspace = ramchain->H.stacksize = stackspace; - if ( (fpos= (int32_t)iguana_ramchain_save(coin,RAMCHAIN_ARG,addr_ipbits,block->RO.hash2,block->RO.prev_block,bundlei,0,coin->chain->zcash)) >= 0 ) + if ( (fpos= (int32_t)iguana_ramchain_save(coin,RAMCHAIN_ARG,(uint32_t)addr->ipbits,block->RO.hash2,block->RO.prev_block,bundlei,0,coin->chain->zcash)) >= 0 ) { origtxdata->datalen = (int32_t)rdata->allocsize; //char str[65]; printf("saved.%s [%d:%d] fpos.%d datalen.%d\n",bits256_str(str,block->RO.hash2),bp->hdrsi,bundlei,fpos,origtxdata->datalen); ramchain->H.ROflag = 0; flag = 1; - if ( addr->dirty[0] != 0 && addr->voutsfp != 0 ) + if ( addr->dirty[0] != 0 && addr->voutsfp != 0 ) // fflush(addr->voutsfp); - if ( addr->dirty[1] != 0 && addr->vinsfp != 0 ) + if ( addr->dirty[1] != 0 && addr->vinsfp != 0 ) //addr->dirty[1] != 0 && fflush(addr->vinsfp); memset(&R,0,sizeof(R)); - if ( verifyflag != 0 && (mapchain= iguana_ramchain_map(coin,fname,0,1,&R,0,addr_ipbits,block->RO.hash2,block->RO.prev_block,bundlei,fpos,1,0)) == 0 ) + if ( verifyflag != 0 && (mapchain= iguana_ramchain_map(coin,fname,0,1,&R,0,(uint32_t)addr->ipbits,block->RO.hash2,block->RO.prev_block,bundlei,fpos,1,0)) == 0 ) { printf("delete unverified [%d:%d]\n",bp->hdrsi,bundlei); iguana_ramchain_free(coin,&R,1); @@ -2001,7 +1921,7 @@ long iguana_ramchain_data(struct iguana_info *coin,struct iguana_peer *addr,stru //bp->rawscriptspace += rdata->scriptspace; } if ( fpos >= 0 ) - block->fpos = fpos, block->fpipbits = addr_ipbits; + block->fpos = fpos, block->fpipbits = (uint32_t)addr->ipbits; } else printf("save error\n"); } else @@ -2038,7 +1958,7 @@ void iguana_ramchain_disp(struct iguana_ramchain *ramchain) init_hexbytes_noT(str,U[unspentind].rmd160,20); printf("(%.8f %s) ",dstr(U[unspentind].value),str); } - printf("txid.[%d] %s (%d:%d %d:%d)\n",txidind,bits256_str(str,tx->txid),tx->firstvout,tx->numvouts,tx->firstvin,tx->numvins); + printf("txid.[%d] %s (%u:%d %u:%d)\n",txidind,bits256_str(str,tx->txid),(uint32_t)tx->firstvout,tx->numvouts,(uint32_t)tx->firstvin,tx->numvins); } } } @@ -2055,8 +1975,10 @@ void iguana_blockdelete(struct iguana_info *coin,bits256 hash2,int32_t i) if ( fname[0] != 0 ) { OS_removefile(fname,0); +#ifndef WIN32 strcat(fname,".tmp"); OS_removefile(fname,0); +#endif } } @@ -2083,7 +2005,7 @@ void iguana_blockunmark(struct iguana_info *coin,struct iguana_block *block,stru bp->speculativecache[i] = 0; } } - if ( deletefile != 0 ) + if ( deletefile != 0 && block != 0 ) iguana_blockdelete(coin,block->RO.hash2,i); } @@ -2142,12 +2064,14 @@ void *iguana_bundlefile(struct iguana_info *coin,char *fname,long *filesizep,str else { fclose(fp); +#ifndef WIN32 if ( renameflag != 0 ) { sprintf(renamed,"%s.tmp",fname); OS_renamefile(fname,renamed); strcpy(fname,renamed); } +#endif if ( (ptr= OS_mapfile(fname,filesizep,0)) == 0 ) { printf("error mapping.(%s) bundlei.%d\n",fname,bundlei); @@ -2296,11 +2220,13 @@ int32_t iguana_ramchain_expandedsave(struct supernet_info *myinfo,struct iguana_ return(retval); } -struct iguana_ramchain *iguana_bundleload(struct iguana_info *coin,struct iguana_ramchain *ramchain,struct iguana_bundle *bp,int32_t extraflag) +struct iguana_ramchain *iguana_bundleload(struct supernet_info *myinfo,struct iguana_info *coin,struct iguana_ramchain *ramchain,struct iguana_bundle *bp,int32_t extraflag) { static const bits256 zero; struct iguana_blockRO *B; struct iguana_txid *T; int32_t i,firsti = 1; char fname[512]; struct iguana_block *block,*prev,*prev2; struct iguana_ramchain *mapchain; struct iguana_ramchaindata *rdata; + if ( bp->emitfinish > 1 ) + return(ramchain); memset(ramchain,0,sizeof(*ramchain)); if ( (mapchain= iguana_ramchain_map(coin,fname,bp,bp->n,ramchain,0,0,bp->hashes[0],zero,0,0,extraflag,1)) != 0 ) { @@ -2350,9 +2276,9 @@ struct iguana_ramchain *iguana_bundleload(struct iguana_info *coin,struct iguana } } } - //printf("mapped bundle.%d\n",bp->bundleheight); + //printf("mapped bundle.[%d]\n",bp->hdrsi); bp->emitfinish = (uint32_t)time(NULL) + 1; - iguana_bundlecalcs(coin,bp,60); + iguana_bundlecalcs(myinfo,coin,bp,60); } else { @@ -2369,7 +2295,7 @@ struct iguana_ramchain *iguana_bundleload(struct iguana_info *coin,struct iguana int64_t iguana_ramchainopen(char *fname,struct iguana_info *coin,struct iguana_ramchain *ramchain,struct OS_memspace *mem,struct OS_memspace *hashmem,int32_t bundleheight,bits256 hash2) { - RAMCHAIN_DECLARE; RAMCHAIN_ZEROES; int32_t i,numblocks = coin->chain->bundlesize; uint32_t numtxids,numunspents,numspends,numpkinds,numexternaltxids,scriptspace; struct iguana_bundle *bp; struct iguana_ramchaindata *rdata; int64_t hashsize,allocsize; + RAMCHAIN_DECLARE; RAMCHAIN_ZEROES; int32_t i,numblocks = coin->chain->bundlesize; uint32_t numtxids,numunspents,numspends,numpkinds,numexternaltxids,scriptspace; struct iguana_bundle *bp; struct iguana_ramchaindata *rdata=0; int64_t hashsize,allocsize; //B = 0, Ux = 0, Sx = 0, P = 0, A = 0, X = 0, Kspace = TXbits = PKbits = 0, U = 0, S = 0, T = 0; mem->alignflag = sizeof(uint32_t); hashmem->alignflag = sizeof(uint32_t); @@ -2567,7 +2493,7 @@ int32_t iguana_bundlesaveHT(struct supernet_info *myinfo,struct iguana_info *coi { if ( bits256_nonz(block->RO.prev_block) == 0 && i > 0 ) block->RO.prev_block = bp->hashes[i-1]; - if ( (bp->bundleheight+i > 0 && bits256_nonz(block->RO.prev_block) == 0) || iguana_blockvalidate(coin,&valid,block,1) < 0 ) + if ( (bp->bundleheight+i > 0 && bits256_nonz(block->RO.prev_block) == 0) || iguana_blockvalidate(myinfo,coin,&valid,block,1) < 0 ) { char str[65]; printf("null prevblock error at ht.%d patch.(%s)\n",bp->bundleheight+i,bits256_str(str,bp->hashes[i-1])); iguana_bundlemapfree(coin,mem,&HASHMEM,ipbits,ptrs,filesizes,num,R,starti,endi); @@ -2629,7 +2555,7 @@ int32_t iguana_bundlesaveHT(struct supernet_info *myinfo,struct iguana_info *coi { //char dirname[1024]; //printf("delete %d files hdrs.[%d] retval.%d bp_n.%d\n",num,bp->hdrsi,retval,bp_n); - if ( iguana_bundleload(coin,&newchain,bp,0) == 0 ) + if ( iguana_bundleload(myinfo,coin,&newchain,bp,0) == 0 ) retval = -1; else //if ( bp_n == bp->n && bp->n == coin->chain->bundlesize && bp->hdrsi < coin->bundlescount-3 ) { @@ -2699,7 +2625,7 @@ int32_t iguana_bundlemergeHT(struct supernet_info *myinfo,char *fname,struct igu { if ( iguana_ramchain_alloc(fname,coin,dest,mem,&HASHMEM,(A->H.data->numtxids+B->H.data->numtxids),(A->H.data->numunspents+B->H.data->numunspents),(A->H.data->numspends+B->H.data->numspends),(A->H.data->numpkinds+B->H.data->numpkinds),(A->H.data->numexternaltxids+B->H.data->numexternaltxids),A->H.data->scriptspace,A->height,A->numblocks + B->numblocks,coin->chain->zcash) < 0 ) { - printf("depth.%d ht.%d fsize.%s ERROR alloc lag.%d elapsed.%ld\n",depth,dest->height,mbstr(str,dest->H.data->allocsize),now-starttime,time(NULL)-now); + printf("depth.%d ht.%d fsize.%s ERROR alloc lag.%d elapsed.%d\n",depth,dest->height,mbstr(str,dest->H.data->allocsize),now-starttime,(int32_t)(time(NULL)-now)); iguana_mergefree(coin,mem,A,B,&HASHMEM,&HASHMEMA,&HASHMEMB); return(-1); } @@ -2716,7 +2642,7 @@ int32_t iguana_bundlemergeHT(struct supernet_info *myinfo,char *fname,struct igu else if ( iguana_ramchain_expandedsave(myinfo,coin,RAMCHAIN_DESTARG,&newchain,&HASHMEM,0,0) == 0 ) { printf("merging isnt setup to save the blockROs\n"); - printf("depth.%d ht.%d fsize.%s MERGED %d[%d] and %d[%d] lag.%d elapsed.%ld bp.%d -> %d\n",depth,dest->height,mbstr(str,dest->H.data->allocsize),A->height,A->numblocks,B->height,B->numblocks,now-starttime,time(NULL)-now,bp->bundleheight,nextbp->bundleheight); + printf("depth.%d ht.%d fsize.%s MERGED %d[%d] and %d[%d] lag.%d elapsed.%d bp.%d -> %d\n",depth,dest->height,mbstr(str,dest->H.data->allocsize),A->height,A->numblocks,B->height,B->numblocks,now-starttime,(int32_t)(time(NULL)-now),bp->bundleheight,nextbp->bundleheight); iguana_mergefree(coin,mem,A,B,&HASHMEM,&HASHMEMA,&HASHMEMB); bp->mergefinish = 0; nextbp->mergefinish = (uint32_t)time(NULL); @@ -2783,93 +2709,4 @@ void iguana_ramchainmerge(struct iguana_info *coin) // jl777: verify prev/next h } #endif -void iguana_RTvout(struct iguana_info *coin,int64_t polarity,struct iguana_RTtxid *RTptr,struct iguana_block *block,bits256 txid,int32_t j,struct iguana_msgvout *vout) -{ - int32_t scriptlen,type,k; uint8_t *script; struct vin_info V; char coinaddr[64]; - script = vout->pk_script; - scriptlen = vout->pk_scriptlen; - type = iguana_calcrmd160(coin,0,&V,script,scriptlen,txid,j,0xffffffff); - if ( (type == 12 && scriptlen == 0) || (type == 1 && bitcoin_pubkeylen(script+1) <= 0) ) - { - for (k=0; kchain->pubtype,V.rmd160,sizeof(V.rmd160)); - iguana_RTunspent(coin,RTptr,block,polarity,coinaddr,V.rmd160,type,script,scriptlen,txid,j,vout->value); -} -int32_t iguana_RTramchaindata(struct supernet_info *myinfo,struct iguana_info *coin,struct OS_memspace *TXDATA,struct OS_memspace *HASHMEM,int64_t polarity,struct iguana_block *block,struct iguana_msgtx *txarray,int32_t txn_count) -{ - RAMCHAIN_DECLARE; struct iguana_ramchain R,*ramchain = &R; struct iguana_msgtx *tx; char fname[1024]; struct iguana_ramchaindata *rdata; struct iguana_RTtxid *RTptr; int32_t iter,hdrsi,bundlei,i,j,firsti = 1; - if ( block->RO.txn_count != txn_count ) - { - printf("txn_count mismatch ht.%d %d != %d\n",block->height,block->RO.txn_count,txn_count); - return(-1); - } - hdrsi = (block->height / coin->chain->bundlesize); - bundlei = (block->height % coin->chain->bundlesize); - if ( iguana_ramchain_init(fname,ramchain,TXDATA,HASHMEM,1,block->RO.txn_count,block->RO.numvouts,block->RO.numvins,0,0,1,0,1,coin->chain->zcash) == 0 ) - { - printf("error iguana_ramchain_init\n"); - return(-1); - } - iguana_ramchain_link(ramchain,block->RO.hash2,hdrsi,block->height,bundlei,1,firsti,0); - if ( (rdata= ramchain->H.data) != 0 ) - { - _iguana_ramchain_setptrs(RAMCHAIN_PTRS,rdata); - if ( T == 0 || U == 0 || S == 0 || B == 0 ) - { - printf("fatal error getting txdataptrs %p %p %p %p\n",T,U,S,B); - return(-1); - } - for (iter=0; iter<2; iter++) - { - ramchain->H.txidind = ramchain->H.spendind = ramchain->H.unspentind = rdata->firsti; - for (i=0; iH.txidind++) - { - tx = &txarray[i]; - RTptr = iguana_RTtxid_create(coin,block,polarity,i,txn_count,tx->txid,tx->tx_out,tx->tx_in,tx->lock_time,tx->version,tx->timestamp,tx->serialized,tx->allocsize); - if ( polarity > 0 ) - { - if ( iter == 0 ) - { - for (j=0; jtx_out; j++) - iguana_RTvout(coin,polarity,RTptr,block,tx->txid,j,&tx->vouts[j]); - ramchain->H.spendind += tx->tx_in; - } - else - { - for (j=0; jtx_in; j++) - { - iguana_RTspend(myinfo,coin,RTptr,block,polarity,tx->vins[j].vinscript,tx->vins[j].scriptlen,tx->txid,j,tx->vins[j].prev_hash,tx->vins[j].prev_vout); - } - ramchain->H.unspentind += tx->tx_out; - } - } - else - { - if ( iter == 0 ) - { - for (j=tx->tx_in-1; j>=0; j--) - { - iguana_RTspend(myinfo,coin,RTptr,block,polarity,tx->vins[j].vinscript,tx->vins[j].scriptlen,tx->txid,j,tx->vins[j].prev_hash,tx->vins[j].prev_vout); - } - ramchain->H.unspentind += tx->tx_out; - } - else - { - for (j=tx->tx_out-1; j>=0; j--) - iguana_RTvout(coin,polarity,RTptr,block,tx->txid,j,&tx->vouts[j]); - ramchain->H.spendind += tx->tx_in; - } - } - } - } - //printf("scriptoffset.%d after %d txids\n",ramchain->H.scriptoffset,txn_count); - iguana_ramchain_free(coin,ramchain,0); - return(0); - } - iguana_ramchain_free(coin,ramchain,0); - return(-1); -} diff --git a/iguana/iguana_realtime.c b/iguana/iguana_realtime.c index 3c6974354..e06dc8a2f 100755 --- a/iguana/iguana_realtime.c +++ b/iguana/iguana_realtime.c @@ -16,457 +16,6 @@ // verify undo cases for hhutxo, and all 4 permutations of setting #include "iguana777.h" -//#define ENABLE_RAMCHAIN - -#ifdef oldway -void iguana_RTramchainfree(struct iguana_info *coin,struct iguana_bundle *bp) -{ - //return; -#ifdef ENABLE_RAMCHAIN - int32_t hdrsi; - //portable_mutex_lock(&coin->RTmutex); - if ( coin->utxotable != 0 ) - { - printf("free RTramchain\n"); - //iguana_utxoupdate(coin,-1,0,0,0,0,-1,0); // free hashtables - coin->lastRTheight = coin->RTheight = 0;//(coin->bundlescount-1) * coin->chain->bundlesize; - coin->RTgenesis = 0; - iguana_utxoaddrs_purge(coin); - iguana_ramchain_free(coin,&coin->RTramchain,1); - if ( bp != 0 ) - bp->ramchain = coin->RTramchain; - iguana_mempurge(&coin->RTmem); - iguana_mempurge(&coin->RThashmem); - for (hdrsi=coin->bundlescount-1; hdrsi>0; hdrsi--) - if ( (bp= coin->bundles[hdrsi]) == 0 && bp != coin->current ) - { - iguana_volatilespurge(coin,&bp->ramchain); - if ( iguana_volatilesmap(coin,&bp->ramchain) != 0 ) - printf("error mapping bundle.[%d]\n",hdrsi); - } - coin->RTdatabad = 0; - printf("done RTramchain\n"); - } - //portable_mutex_unlock(&coin->RTmutex); -#endif -} - -void *iguana_ramchainfile(struct supernet_info *myinfo,struct iguana_info *coin,struct iguana_ramchain *dest,struct iguana_ramchain *R,struct iguana_bundle *bp,int32_t bundlei,struct iguana_block *block) -{ - //return(0); -#ifdef ENABLE_RAMCHAIN - char fname[1024]; long filesize; int32_t err; void *ptr=0; - if ( block == bp->blocks[bundlei] && (ptr= iguana_bundlefile(coin,fname,&filesize,bp,bundlei)) != 0 ) - { - if ( iguana_mapchaininit(fname,coin,R,bp,bundlei,block,ptr,filesize) >= 0 ) - { - if ( dest != 0 && dest->H.data != 0 ) - err = iguana_ramchain_iterate(myinfo,coin,dest,R,bp,bundlei); - else err = 0; - if ( err != 0 || dest->H.data == 0 || bits256_cmp(R->H.data->firsthash2,block->RO.hash2) != 0 ) - { - char str[65]; - printf("ERROR [%d:%d] %s vs ",bp->hdrsi,bundlei,bits256_str(str,block->RO.hash2)); - printf("mapped.%s\n",bits256_str(str,R->H.data->firsthash2)); - } else return(ptr); - } - iguana_blockunmark(coin,block,bp,bundlei,1); - iguana_ramchain_free(coin,R,1); - } //else printf("ramchainfile ptr.%p block.%p\n",ptr,block); -#endif - return(0); -} - -void iguana_RTramchainalloc(char *fname,struct iguana_info *coin,struct iguana_bundle *bp) -{ - //return; -#ifdef ENABLE_RAMCHAIN - uint32_t i,changed = 0; struct iguana_ramchaindata *rdata; struct iguana_ramchain *dest = &coin->RTramchain; struct iguana_blockRO *B; struct iguana_bundle *tmpbp; - //portable_mutex_lock(&coin->RTmutex); - if ( (rdata= dest->H.data) != 0 ) - { - i = 0; - if ( coin->RTheight != coin->lastRTheight ) - changed++; - else - { - B = RAMCHAIN_PTR(rdata,Boffset); - for (i=0; inumblocks; i++) - if ( bits256_cmp(B[i].hash2,bp->hashes[i]) != 0 ) - { - char str[65],str2[65]; printf("mismatched hash2 at %d %s vs %s\n",bp->bundleheight+i,bits256_str(str,B[i].hash2),bits256_str(str2,bp->hashes[i])); - changed++; - iguana_blockunmark(coin,bp->blocks[i],bp,i,1); - break; - } - } - if ( changed != 0 ) - { - printf("RTramchain changed %d bundlei.%d | coin->RTheight %d != %d bp->bundleheight + %d coin->RTramchain.H.data->numblocks\n",coin->RTheight,i,coin->RTheight,bp->bundleheight,rdata->numblocks); - iguana_RTramchainfree(coin,bp); - } - } - if ( coin->RTramchain.H.data == 0 ) - { - iguana_ramchainopen(fname,coin,dest,&coin->RTmem,&coin->RThashmem,bp->bundleheight,bp->hashes[0]); - printf("ALLOC RTramchain.(%s) RTrdata %p rdata.%p\n",fname,coin->RTramchain.H.data,bp->ramchain.H.data); - dest->H.txidind = dest->H.unspentind = dest->H.spendind = dest->pkind = dest->H.data->firsti; - dest->externalind = dest->H.stacksize = 0; - dest->H.scriptoffset = 1; - if ( 1 ) - { - for (i=0; ihdrsi; i++) - if ( (tmpbp= coin->bundles[i]) != 0 ) - { - iguana_volatilespurge(coin,&tmpbp->ramchain); - iguana_volatilesmap(coin,&tmpbp->ramchain); - } - sleep(1); - } - } - //portable_mutex_unlock(&coin->RTmutex); -#endif -} - -void iguana_rdataset(struct iguana_ramchain *dest,struct iguana_ramchaindata *rdest,struct iguana_ramchain *src) -{ - //return; -#ifdef ENABLE_RAMCHAIN - *dest = *src; - dest->H.data = rdest; - *rdest = *src->H.data; - rdest->numpkinds = src->pkind; - rdest->numexternaltxids = src->externalind; - rdest->numtxids = src->H.txidind; - rdest->numunspents = src->H.unspentind; - rdest->numspends = src->H.spendind; - //printf("RT set numtxids.%u numspends.%u\n",rdest->numtxids,rdest->numspends); -#endif -} - -void iguana_rdatarestore(struct iguana_ramchain *dest,struct iguana_ramchaindata *rdest,struct iguana_ramchain *src) -{ - //return; -#ifdef ENABLE_RAMCHAIN - *src = *dest; - *src->H.data = *rdest; - src->pkind = rdest->numpkinds; - src->externalind = rdest->numexternaltxids; - src->H.txidind = rdest->numtxids; - src->H.unspentind = rdest->numunspents; - src->H.spendind = rdest->numspends; - printf("RT restore numtxids.%u numspends.%u\n",rdest->numtxids,rdest->numspends); -#endif -} - -void iguana_RThdrs(struct iguana_info *coin,struct iguana_bundle *bp,int32_t numaddrs) -{ - //return; -#ifdef ENABLE_RAMCHAIN - int32_t datalen,i; uint8_t serialized[512]; char str[65]; struct iguana_peer *addr; - if ( coin->peers == 0 ) - return; - datalen = iguana_gethdrs(coin,serialized,coin->chain->gethdrsmsg,bits256_str(str,bp->hashes[0])); - for (i=0; ipeers->numranked; i++) - { - queue_enqueue("hdrsQ",&coin->hdrsQ,queueitem(bits256_str(str,bp->hashes[0])),1); - if ( coin->chain->hasheaders == 0 ) - queue_enqueue("hdrsQ",&coin->hdrsQ,queueitem(bits256_str(str,coin->blocks.hwmchain.RO.hash2)),1); - if ( (addr= coin->peers->ranked[i]) != 0 && addr->usock >= 0 && addr->dead == 0 && datalen > 0 ) - { - iguana_send(coin,addr,serialized,datalen); - //addr->pendhdrs++; - } - } -#endif -} - -void iguana_RTspendvectors(struct supernet_info *myinfo,struct iguana_info *coin,struct iguana_bundle *bp) -{ - //return; -#ifdef ENABLE_RAMCHAIN - int32_t iterate,lasti,num,hdrsi,orignumemit; struct iguana_ramchain R; struct iguana_ramchaindata RDATA; - if ( bp->hdrsi <= 0 ) - return; - printf("RTspendvectors [%d]\n",bp->hdrsi); - bp->ramchain = coin->RTramchain; - iguana_rdataset(&R,&RDATA,&coin->RTramchain); - if ( (lasti= (coin->RTheight - ((coin->RTheight/bp->n)*bp->n))) >= bp->n-1 ) - lasti = bp->n - 1; - orignumemit = bp->numtmpspends; - iterate = 0; - if ( iguana_spendvectors(myinfo,coin,bp,&coin->RTramchain,coin->RTstarti%coin->chain->bundlesize,lasti,0,iterate) < 0 ) - { - printf("RTutxo error -> RTramchainfree\n"); - coin->RTdatabad = 1; - return; - } - else - { - //printf("RTspendvectors calculated to %d [%d]\n",coin->RTheight,bp->hdrsi); - bp->converted = 1; - for (hdrsi=num=0; hdrsihdrsi; hdrsi++) - { -#ifdef __APPLE__ - if ( coin->bundles[hdrsi]->lastprefetch == 0 ) - { - iguana_ramchain_prefetch(coin,&coin->bundles[hdrsi]->ramchain,2); - coin->bundles[hdrsi]->lastprefetch = (uint32_t)time(NULL); - } -#endif - num += iguana_convert(coin,IGUANA_NUMHELPERS,coin->bundles[hdrsi],1,orignumemit); - } - //printf("RTspendvectors converted.%d to %d\n",num,coin->RTheight); - //iguana_rdatarestore(&R,&RDATA,&bp->ramchain); - bp->converted = (uint32_t)time(NULL); - if ( iguana_balancegen(coin,1,bp,coin->RTstarti,coin->RTheight > 0 ? coin->RTheight-1 : bp->bundleheight+bp->n-1,orignumemit) < 0 ) - { - printf("balancegen error\n"); - coin->RTdatabad = 1; - } - else if ( coin->RTgenesis == 0 && coin->firstRTgenesis == 0 ) - coin->firstRTgenesis++, printf(">>>>>> IGUANA %s READY FOR REALTIME RPC <<<<<<\n",coin->symbol); - //printf("iguana_balancegen [%d] (%d to %d)\n",bp->hdrsi,coin->RTstarti,(coin->RTheight-1)%bp->n); - coin->RTstarti = coin->RTheight; - } -#endif -} - -int32_t iguana_realtime_update(struct supernet_info *myinfo,struct iguana_info *coin) -{ - int32_t flag = 0; - //return(0); -#ifdef ENABLE_RAMCHAIN - double startmillis0; static double totalmillis0; static int32_t num0; - struct iguana_bundle *bp; struct iguana_ramchaindata *rdata; int32_t offset,bundlei,i,n; bits256 hash2,*ptr; struct iguana_peer *addr; - struct iguana_block *block=0; struct iguana_blockRO *B; struct iguana_ramchain *dest=0,blockR; - if ( coin->peers == 0 && coin->virtualchain == 0 ) - return(0); - offset = 0;//(strcmp("BTC",coin->symbol) != 0); - if ( coin->RTheight >= (coin->current->hdrsi+1)*coin->chain->bundlesize ) - { - printf("inversion RT %d >= %d\n",coin->RTheight,(coin->current->hdrsi+1)*coin->chain->bundlesize); - coin->lastRTheight = coin->RTheight = coin->current->hdrsi*coin->chain->bundlesize; - iguana_utxoaddrs_purge(coin); - } - if ( coin->current != 0 && (coin->blocks.hwmchain.height % coin->chain->bundlesize) == coin->chain->bundlesize-1 && coin->blocks.hwmchain.height/coin->chain->bundlesize == coin->longestchain/coin->chain->bundlesize ) - { - block = coin->current->blocks[coin->current->n - 1]; - if ( _iguana_chainlink(coin,block) <= 0 ) - { - printf("RT edge case couldnt link\n"); - } - else - { - printf("RT edge case.%d\n",block->height); - if ( (bp= coin->bundles[coin->RTheight / coin->chain->bundlesize]) != 0 ) - iguana_spendvectors(myinfo,coin,bp,&bp->ramchain,0,bp->n,0,0); - iguana_update_balances(coin); - } - } - if ( coin->spendvectorsaved <= 1 ) - { - //printf("%s spendvectorsaved not yet\n",coin->symbol); - usleep(100000); - return(0); - } - //portable_mutex_lock(&coin->RTmutex); - for (i=0; ibundlescount-1; i++) - { - if ( (bp= coin->bundles[i]) != 0 && (i > 0 && bp->utxofinish == 0) && bp != coin->current ) - { - if ( iguana_spendvectors(myinfo,coin,bp,&bp->ramchain,0,bp->n,0,0) < 0 ) - { - //portable_mutex_unlock(&coin->RTmutex); - printf("error generating spendvectors.[%d], skipping\n",i); - return(0); - } // else printf("generated UTXO.[%d]\n",i); - coin->spendvectorsaved = 1; - } - } - //portable_mutex_unlock(&coin->RTmutex); - bp = coin->current; - if ( bp == 0 )//|| iguana_validated(coin) < bp->hdrsi ) - { - //printf("bp.%p validated.%d vs hdrsi.%d\n",bp,iguana_validated(coin),bp->hdrsi); - return(0); - } - if ( 0 && coin->RTheight > 0 && coin->spendvectorsaved != 1 && coin->bundlescount-1 != coin->balanceswritten ) - { - printf("RT mismatch %d != %d\n",coin->bundlescount-1,coin->balanceswritten); - iguana_RTramchainfree(coin,coin->current); - coin->spendvectorsaved = 0; - coin->lastRTheight = coin->RTheight = 0; - iguana_utxoaddrs_purge(coin); - /*while ( coin->spendvectorsaved <= 1 ) - { - fprintf(stderr,"wait for spendvectorsaved\n"); - sleep(3); - }*/ - return(0); - } - if ( coin->RTdatabad == 0 && bp->hdrsi >= (coin->longestchain/coin->chain->bundlesize)-1 && bp->hdrsi >= coin->balanceswritten-2 && ((coin->RTheight < coin->blocks.hwmchain.height-offset && time(NULL) > bp->lastRT) || time(NULL) > bp->lastRT+1) ) //coin->RTheight >= bp->bundleheight && coin->RTheight < bp->bundleheight+bp->n && - { - if ( coin->RTheight < bp->hdrsi*coin->chain->bundlesize ) - { - coin->lastRTheight = coin->RTheight = bp->hdrsi*coin->chain->bundlesize; - iguana_utxoaddrs_purge(coin); - } - if ( (block= bp->blocks[0]) == 0 || block->txvalid == 0 || block->mainchain == 0 ) - { - if ( block != 0 ) - { - if ( _iguana_chainlink(coin,block) <= 0 ) - { - iguana_blockunmark(coin,block,bp,0,0); - bp->issued[0] = 0; - hash2 = bp->hashes[0]; - //char str[65]; printf("RT[0] [%d:%d] %s %p\n",bp->hdrsi,0,bits256_str(str,hash2),block); - if ( coin->peers != 0 ) - { - addr = coin->peers->ranked[rand() % 8]; - if ( addr != 0 && addr->usock >= 0 && addr->dead == 0 ) - iguana_sendblockreqPT(coin,addr,bp,0,hash2,0); - } - } - } - } - //char str[65]; printf("check longest.%d RTheight.%d hwm.%d %s %p\n",coin->longestchain,coin->RTheight,coin->blocks.hwmchain.height,bits256_str(str,bp->hashes[0]),block); - if ( bits256_cmp(coin->RThash1,bp->hashes[1]) != 0 ) - coin->RThash1 = bp->hashes[1]; - //bp->lastRT = (uint32_t)time(NULL); - if ( coin->peers != 0 && coin->RTheight <= coin->longestchain-offset && coin->peers->numranked > 0 && time(NULL) > coin->RThdrstime+16 ) - { - iguana_RThdrs(coin,bp,coin->peers->numranked); - coin->RThdrstime = (uint32_t)time(NULL); - } - bp->lastRT = (uint32_t)time(NULL); - iguana_RTramchainalloc("RTbundle",coin,bp); - bp->isRT = 1; - //printf("%s rdata.%p RTheight.%d hwm.%d RTdatabad.%d\n",coin->symbol,coin->RTramchain.H.data,coin->RTheight,coin->blocks.hwmchain.height,coin->RTdatabad); - while ( (rdata= coin->RTramchain.H.data) != 0 && coin->RTheight <= coin->blocks.hwmchain.height-offset && coin->RTdatabad == 0 ) - { - dest = &coin->RTramchain; - B = RAMCHAIN_PTR(rdata,Boffset); - bundlei = (coin->RTheight % coin->chain->bundlesize); - if ( (block= iguana_bundleblock(coin,&hash2,bp,bundlei)) != 0 ) - { - iguana_bundlehashadd(coin,bp,bundlei,block); - //printf("RT.%d vs hwm.%d starti.%d bp->n %d block.%p/%p ramchain.%p databad.%d prevnonz.%d\n",coin->RTheight,coin->blocks.hwmchain.height,coin->RTstarti,bp->n,block,bp->blocks[bundlei],dest->H.data,coin->RTdatabad,bits256_nonz(block->RO.prev_block)); - } - else - { - //printf("cant find bundleblock [%d:%d]\n",bp->hdrsi,bundlei); - iguana_blockQ("RTmissing",coin,bp,bundlei,hash2,1); - break; - } - if ( coin->RTdatabad == 0 && block != 0 && (block->height == 0 || bits256_nonz(block->RO.prev_block) != 0) ) - { - //printf("bundlei.%d blockht.%d RTheight.%d\n",bundlei,block->height,coin->RTheight); - iguana_blocksetcounters(coin,block,dest); - startmillis0 = OS_milliseconds(); - if ( iguana_ramchainfile(myinfo,coin,dest,&blockR,bp,bundlei,block) == 0 ) - { - for (i=0; in; i++) - if ( GETBIT(bp->haveblock,i) == 0 ) - bp->issued[i] = 0; - if ( (n= iguana_bundleissuemissing(coin,bp,3,1.)) > 0 ) - printf("RT issued %d priority requests [%d] to unstick stuckiters.%d\n",n,bp->hdrsi,coin->stuckiters); - for (i=bundlei; in; i++) - { - block = iguana_bundleblock(coin,&hash2,bp,i); - if ( bits256_nonz(hash2) != 0 && (block == 0 || block->txvalid == 0) ) - { - uint8_t serialized[512]; int32_t len; struct iguana_peer *addr; - //char str[65]; printf("RT error [%d:%d] %s %p\n",bp->hdrsi,i,bits256_str(str,hash2),block); - if ( coin->peers != 0 ) - { - addr = coin->peers->ranked[rand() % 8]; - if ( addr != 0 && addr->usock >= 0 && addr->dead == 0 && (len= iguana_getdata(coin,serialized,MSG_BLOCK,&hash2,1)) > 0 ) - iguana_send(coin,addr,serialized,len); - } - coin->RTgenesis = 0; - } - if ( bits256_nonz(hash2) != 0 ) - iguana_blockQ("RTerr",coin,bp,i,hash2,1); - //break; - } - return(-1); - } else iguana_ramchain_free(coin,&blockR,1); - B[bundlei] = block->RO; - totalmillis0 += (OS_milliseconds() - startmillis0); - num0++; - flag++; - //coin->blocks.RO[bp->bundleheight+bundlei] = block->RO; - coin->RTheight++; - coin->lastRTheight = coin->RTheight; - //printf(">>>> RT.%d hwm.%d L.%d T.%d U.%d S.%d P.%d X.%d -> size.%ld\n",coin->RTheight,coin->blocks.hwmchain.height,coin->longestchain,dest->H.txidind,dest->H.unspentind,dest->H.spendind,dest->pkind,dest->externalind,(long)dest->H.data->allocsize); - if ( coin->RTramchain.H.data != 0 ) - coin->RTramchain.H.data->numblocks = bundlei + 1; - else break; - } else break; - } - } - else - { - if ( coin->virtualchain == 0 ) - { - //printf("%s skip RT.(%d %d %d %d %d %d %d %u)\n",coin->symbol,coin->RTdatabad,bp->hdrsi,coin->longestchain/coin->chain->bundlesize,coin->balanceswritten,coin->RTheight,bp->bundleheight,coin->blocks.hwmchain.height,bp->lastRT); - //sleep(1); - } - } - n = 0; - if ( coin->RTdatabad == 0 && dest != 0 && flag != 0 && coin->RTheight >= coin->blocks.hwmchain.height-offset ) - { - printf("ramchainiterate.[%d] ave %.2f micros, total %.2f seconds starti.%d num.%d\n",num0,(totalmillis0*1000.)/num0,totalmillis0/1000.,coin->RTstarti,coin->RTheight%bp->n); - if ( (n= iguana_walkchain(coin,1)) == coin->RTheight-1+offset ) - { - //printf("RTgenesis verified\n"); - if ( (coin->RTheight % coin->chain->bundlesize) > 3 ) - { - //portable_mutex_lock(&coin->RTmutex); - iguana_RTspendvectors(myinfo,coin,bp); - //portable_mutex_unlock(&coin->RTmutex); - coin->RTgenesis = (uint32_t)time(NULL); - } - } - else - { - printf("walkchain error n.%d != %d\n",n,coin->RTheight-1+offset); - coin->RTdatabad = 1; - } - } - if ( dest != 0 && flag != 0 ) - printf("<<<< flag.%d RT.%d:%d hwm.%d L.%d T.%d U.%d S.%d P.%d X.%d -> size.%ld balance %.8f + %.8f - %.8f = supply %.8f\n",flag,coin->RTheight,n,coin->blocks.hwmchain.height,coin->longestchain,dest->H.txidind,dest->H.unspentind,dest->H.spendind,dest->pkind,dest->externalind,dest->H.data!=0?(long)dest->H.data->allocsize:-1,dstr(coin->histbalance),dstr(coin->RTcredits),dstr(coin->RTdebits),dstr(coin->histbalance + coin->RTcredits - coin->RTdebits)); - if ( coin->RTdatabad != 0 ) - { - bits256 lastbundle; - //portable_mutex_lock(&coin->RTmutex); - printf("START DATABAD fixing\n"); - iguana_RTramchainfree(coin,bp); - if ( coin->RTdatabad < 0 ) - { - memset(lastbundle.bytes,0,sizeof(lastbundle)); - iguana_initfinal(myinfo,coin,lastbundle); - } - coin->RTdatabad = 0; - //memset(bp->hashes,0,sizeof(bp->hashes)); - memset(bp->blocks,0,sizeof(bp->blocks)); - if ( 0 && bp->speculative != 0 ) - { - ptr = bp->speculative; - bp->speculative = 0; - memset(ptr,0,sizeof(*bp->speculative)*bp->n); - myfree(ptr,(bp->n+1)*sizeof(*bp->speculative)); - } - iguana_RTramchainalloc("RTbundle",coin,bp); - printf("DONE DATABAD fixing\n"); - //portable_mutex_unlock(&coin->RTmutex); - } -#endif - return(flag); -} -#endif //#define FAST_UTHASH #ifdef FAST_UTHASH @@ -478,13 +27,19 @@ int32_t iguana_realtime_update(struct supernet_info *myinfo,struct iguana_info * void iguana_RTtxid_free(struct iguana_RTtxid *RTptr) { - int32_t i; + int32_t i; struct iguana_RTspend *spend; for (i=0; inumvouts; i++) if ( RTptr->unspents[i] != 0 ) free(RTptr->unspents[i]); for (i=0; inumvins; i++) - if ( RTptr->spends[i] != 0 ) - free(RTptr->spends[i]); + { + if ( (spend= RTptr->spends[i]) != 0 ) + { + if ( spend->bundle_unspent != 0 ) + free(spend->bundle_unspent); + free(spend); + } + } if ( RTptr->rawtxbytes != 0 ) free(RTptr->rawtxbytes); free(RTptr); @@ -520,6 +75,7 @@ void iguana_RTreset(struct iguana_info *coin) #endif printf("%s RTreset %d\n",coin->symbol,coin->RTheight); coin->RTheight = coin->firstRTheight; + coin->RTcredits = coin->RTdebits = 0; } struct iguana_RTaddr *iguana_RTaddrfind(struct iguana_info *coin,uint8_t *rmd160,char *coinaddr) @@ -549,6 +105,32 @@ int64_t iguana_RTbalance(struct iguana_info *coin,char *coinaddr) } } +int64_t iguana_RTnetbalance(struct iguana_info *coin) +{ + struct iguana_RTaddr *RTaddr,*tmp; int64_t RTdebits,RTcredits; + RTdebits = RTcredits = 0; + HASH_ITER(hh,coin->RTaddrs,RTaddr,tmp) + { + RTcredits += RTaddr->credits; + RTdebits += RTaddr->debits; + } + if ( RTcredits != coin->RTcredits || RTdebits != coin->RTdebits ) + printf("RTnetbalance mismatch (%.8f %.8f) != (%.8f %.8f)\n",dstr(RTcredits),dstr(RTdebits),dstr(coin->RTcredits),dstr(coin->RTdebits)); + return(RTcredits - RTdebits); +} + +int32_t iguana_RTbalance_verify(char *str,struct iguana_info *coin) +{ + int64_t balance; + balance = iguana_RTnetbalance(coin); + if ( balance != (coin->RTcredits - coin->RTdebits) ) + { + printf("%s RTbalance %.8f != %.8f (%.8f - %.8f)\n",str,dstr(balance),dstr(coin->RTcredits - coin->RTdebits),dstr(coin->RTcredits),dstr(coin->RTdebits)); + return(-1); + } + return(0); +} + void iguana_RTcoinaddr(struct iguana_info *coin,struct iguana_RTtxid *RTptr,struct iguana_block *block,int64_t polarity,char *coinaddr,uint8_t *rmd160,int32_t spendflag,int64_t value,struct iguana_RTunspent *unspent) { struct iguana_RTaddr *RTaddr; int32_t len = (int32_t)strlen(coinaddr); @@ -571,13 +153,14 @@ void iguana_RTcoinaddr(struct iguana_info *coin,struct iguana_RTtxid *RTptr,stru coin->RTcredits += polarity * value; if ( polarity > 0 ) { - //printf("unspent[%d] <- %p\n",RTaddr->numunspents,unspent); + //printf("%s lastunspent[%d] <- %p\n",coinaddr,RTaddr->numunspents,unspent); RTaddr->numunspents++; unspent->prevunspent = RTaddr->lastunspent; RTaddr->lastunspent = unspent; } else if ( polarity < 0 ) { + //printf("%s lastunspent[%d] -> last.%p %p\n",coinaddr,RTaddr->numunspents,RTaddr->lastunspent,unspent); if ( RTaddr->lastunspent == unspent ) { RTaddr->lastunspent = unspent->prevunspent; @@ -586,6 +169,7 @@ void iguana_RTcoinaddr(struct iguana_info *coin,struct iguana_RTtxid *RTptr,stru //RTaddr->unspents[i] = RTaddr->unspents[--RTaddr->numunspents]; } } + //printf("%s %.8f [%.8f - %.8f] -> %.8f\n",coinaddr,dstr(value),dstr(coin->RTcredits),dstr(coin->RTdebits),dstr(coin->histbalance)+dstr(coin->RTcredits)-dstr(coin->RTdebits)); if ( 0 && strcmp("BTC",coin->symbol) != 0 && strcmp("LTC",coin->symbol) != 0 && strcmp("DOGE",coin->symbol) != 0 ) printf("%lld %s %.8f h %.8f, cr %.8f deb %.8f [%.8f] numunspents.%d %p\n",(long long)polarity,coinaddr,dstr(value),dstr(RTaddr->histbalance),dstr(RTaddr->credits),dstr(RTaddr->debits),dstr(RTaddr->credits)-dstr(RTaddr->debits)+dstr(RTaddr->histbalance),RTaddr->numunspents,unspent); } @@ -630,8 +214,6 @@ void iguana_RTunspent(struct iguana_info *coin,struct iguana_RTtxid *RTptr,struc return; } } - if ( (unspent->spend == 0 && polarity < 0) || (unspent->spend != 0 && polarity > 0) ) - printf("unspent spend.%p opposite when polarity.%lld\n",unspent->spend,(long long)polarity); iguana_RTcoinaddr(coin,RTptr,block,polarity,coinaddr,unspent->rmd160,0,value,unspent); if ( polarity < 0 ) RTptr->unspents[vout] = 0; @@ -646,9 +228,25 @@ void iguana_RTunspent(struct iguana_info *coin,struct iguana_RTtxid *RTptr,struc //fprintf(stderr,","); } -void iguana_RTspend(struct supernet_info *myinfo,struct iguana_info *coin,struct iguana_RTtxid *RTptr,struct iguana_block *block,int64_t polarity,uint8_t *script,int32_t scriptlen,bits256 txid,int32_t vini,bits256 prev_hash,int32_t prev_vout) +void iguana_RTvout_create(struct iguana_info *coin,int64_t polarity,struct iguana_RTtxid *RTptr,struct iguana_block *block,bits256 txid,int32_t j,struct iguana_msgvout *vout) +{ + int32_t scriptlen,type,k; uint8_t *script; struct vin_info V; char coinaddr[64]; + script = vout->pk_script; + scriptlen = vout->pk_scriptlen; + type = iguana_calcrmd160(coin,0,&V,script,scriptlen,txid,j,0xffffffff); + if ( (type == 12 && scriptlen == 0) || (type == 1 && bitcoin_pubkeylen(script+1) <= 0) ) + { + for (k=0; kchain->pubtype,V.rmd160,sizeof(V.rmd160)); + iguana_RTunspent(coin,RTptr,block,polarity,coinaddr,V.rmd160,type,script,scriptlen,txid,j,vout->value); +} + +void iguana_RTspend_create(struct supernet_info *myinfo,struct iguana_info *coin,struct iguana_RTtxid *RTptr,struct iguana_block *block,int64_t polarity,uint8_t *script,int32_t scriptlen,bits256 txid,int32_t vini,bits256 prev_hash,int32_t prev_vout) { - struct iguana_RTspend *spend; struct iguana_RTtxid *spentRTptr; struct iguana_RTunspent *unspent=0; char str[65],str2[65],coinaddr[64]; uint8_t addrtype,rmd160[20],spendscript[IGUANA_MAXSCRIPTSIZE]; uint32_t unspentind; int32_t spendlen,height; uint64_t value; struct iguana_outpoint spentpt; + struct iguana_RTspend *spend; struct iguana_RTtxid *spentRTptr; struct iguana_RTunspent *unspent=0; char str[65],str2[65],coinaddr[64]; uint8_t addrtype,rmd160[20],spendscript[IGUANA_MAXSCRIPTSIZE]; uint32_t unspentind; int32_t spendlen,height; uint64_t RTspent,value; struct iguana_outpoint spentpt; //printf("RTspend %s vini.%d spend.(%s/v%d) %lld\n",bits256_str(str,txid),vini,bits256_str(str2,prev_hash),prev_vout,(long long)polarity); if ( vini == 0 && bits256_nonz(prev_hash) == 0 && prev_vout < 0 ) return; @@ -689,27 +287,29 @@ void iguana_RTspend(struct supernet_info *myinfo,struct iguana_info *coin,struct } else { - if ( (unspentind= iguana_unspentindfind(myinfo,coin,coinaddr,spendscript,&spendlen,&value,&height,prev_hash,prev_vout,coin->bundlescount,0)) == 0 ) + if ( (unspentind= iguana_unspentindfind(myinfo,coin,&RTspent,coinaddr,spendscript,&spendlen,&value,&height,prev_hash,prev_vout,coin->bundlescount,0)) == 0 ) printf("iguana_RTspend cant find spentRTptr.(%s) search history\n",bits256_str(str,prev_hash)); else { int32_t spentheight,lockedflag,RTspentflag; bitcoin_addr2rmd160(&addrtype,rmd160,coinaddr); - //printf("found unspentind (%s %.8f).%d spendlen.%d\n",coinaddr,dstr(value),addrtype,spendlen); unspent = iguana_RTunspent_create(rmd160,value,spendscript,spendlen>0?spendlen:0,0,prev_vout); memset(&spentpt,0,sizeof(spentpt)); spentpt.unspentind = unspentind; spentpt.hdrsi = height / coin->chain->bundlesize; + spentpt.value = value; iguana_RTutxofunc(coin,&spentheight,&lockedflag,spentpt,&RTspentflag,0,RTptr->height); + spend->bundle_unspent = unspent; } } if ( unspent != 0 ) { - bitcoin_address(coinaddr,coin->chain->pubtype,unspent->rmd160,sizeof(unspent->rmd160)); - iguana_RTcoinaddr(coin,RTptr,block,polarity,coinaddr,unspent->rmd160,1,unspent->value,unspent); if ( polarity < 0 ) unspent->spend = 0; - else unspent->spend = spend; + bitcoin_address(coinaddr,coin->chain->pubtype,unspent->rmd160,sizeof(unspent->rmd160)); + iguana_RTcoinaddr(coin,RTptr,block,polarity,coinaddr,unspent->rmd160,1,unspent->value,unspent); + if ( polarity > 0 ) + unspent->spend = spend; } } } else printf("iguana_RTspend txid mismatch %llx != %llx\n",(long long)RTptr->txid.txid,(long long)txid.txid); @@ -763,10 +363,50 @@ struct iguana_RTtxid *iguana_RTtxid_create(struct iguana_info *coin,struct iguan return(RTptr); } -int64_t _RTgettxout(struct iguana_info *coin,int32_t *heightp,int32_t *scriptlenp,uint8_t *script,uint8_t *rmd160,char *coinaddr,bits256 txid,int32_t vout,int32_t mempool) +int32_t iguana_RTramchaindata(struct supernet_info *myinfo,struct iguana_info *coin,int64_t polarity,struct iguana_block *block,struct iguana_msgtx *txarray,int32_t txn_count) +{ + struct iguana_msgtx *tx; struct iguana_RTtxid *RTptr; int32_t i,j; + if ( block->RO.txn_count != txn_count ) + { + printf("txn_count mismatch ht.%d %d != %d\n",block->height,block->RO.txn_count,txn_count); + return(-1); + } + if ( polarity > 0 ) + { + for (i=0; itxid,tx->tx_out,tx->tx_in,tx->lock_time,tx->version,tx->timestamp,tx->serialized,tx->allocsize); + for (j=0; jtx_out; j++) + iguana_RTvout_create(coin,polarity,RTptr,block,tx->txid,j,&tx->vouts[j]); + for (j=0; jtx_in; j++) + { + iguana_RTspend_create(myinfo,coin,RTptr,block,polarity,tx->vins[j].vinscript,tx->vins[j].scriptlen,tx->txid,j,tx->vins[j].prev_hash,tx->vins[j].prev_vout); + } + } + } + else + { + for (i=txn_count-1; i>=0; i--) + { + tx = &txarray[i]; + RTptr = iguana_RTtxid_create(coin,block,polarity,i,txn_count,tx->txid,tx->tx_out,tx->tx_in,tx->lock_time,tx->version,tx->timestamp,tx->serialized,tx->allocsize); + for (j=tx->tx_in-1; j>=0; j--) + { + iguana_RTspend_create(myinfo,coin,RTptr,block,polarity,tx->vins[j].vinscript,tx->vins[j].scriptlen,tx->txid,j,tx->vins[j].prev_hash,tx->vins[j].prev_vout); + } + for (j=tx->tx_out-1; j>=0; j--) + iguana_RTvout_create(coin,polarity,RTptr,block,tx->txid,j,&tx->vouts[j]); + } + } + return(0); +} + +int64_t _RTgettxout(struct iguana_info *coin,struct iguana_RTtxid **ptrp,int32_t *heightp,int32_t *scriptlenp,uint8_t *script,uint8_t *rmd160,char *coinaddr,bits256 txid,int32_t vout,int32_t mempool) { int32_t scriptlen; int64_t value = 0; struct iguana_RTtxid *RTptr; struct iguana_RTunspent *unspent = 0; HASH_FIND(hh,coin->RTdataset,txid.bytes,sizeof(txid),RTptr); + *ptrp = RTptr; *heightp = -1; if ( scriptlenp == 0 ) scriptlenp = &scriptlen; @@ -778,7 +418,7 @@ int64_t _RTgettxout(struct iguana_info *coin,int32_t *heightp,int32_t *scriptlen if ( vout >= 0 && vout < RTptr->txn_count && (unspent= RTptr->unspents[vout]) != 0 ) { *heightp = RTptr->height; - if ( unspent->spend == 0 && (*scriptlenp= unspent->scriptlen) > 0 ) + if ( script != 0 && unspent->spend == 0 && (*scriptlenp= unspent->scriptlen) > 0 ) memcpy(script,unspent->script,*scriptlenp); memcpy(rmd160,unspent->rmd160,sizeof(unspent->rmd160)); bitcoin_address(coinaddr,coin->chain->pubtype,rmd160,sizeof(unspent->rmd160)); @@ -803,38 +443,71 @@ int32_t _iguana_RTunspentfind(struct supernet_info *myinfo,struct iguana_info *c return(spendlen); } -int32_t iguana_RTunspentindfind(struct supernet_info *myinfo,struct iguana_info *coin,char *coinaddr,uint8_t *spendscript,int32_t *spendlenp,uint64_t *valuep,int32_t *heightp,bits256 txid,int32_t vout,int32_t lasthdrsi,int32_t mempool) +int32_t iguana_RTunspentindfind(struct supernet_info *myinfo,struct iguana_info *coin,struct iguana_outpoint *outpt,char *coinaddr,uint8_t *spendscript,int32_t *spendlenp,uint64_t *valuep,int32_t *heightp,bits256 txid,int32_t vout,int32_t lasthdrsi,int32_t mempool) { - char _coinaddr[64]; uint8_t rmd160[20]; int64_t value; + char _coinaddr[64]; struct iguana_RTtxid *ptr; uint8_t rmd160[20]; uint64_t value,RTspend; uint32_t unspentind; if ( coinaddr == 0 ) coinaddr = _coinaddr; - if ( (value= _RTgettxout(coin,heightp,spendlenp,spendscript,rmd160,coinaddr,txid,vout,mempool)) > 0 ) + memset(outpt,0,sizeof(*outpt)); + if ( (value= _RTgettxout(coin,&ptr,heightp,spendlenp,spendscript,rmd160,coinaddr,txid,vout,mempool)) > 0 ) { + outpt->ptr = ptr; if ( valuep != 0 ) + { *valuep = value; + outpt->value = *valuep; + } return(0); } - else return(iguana_unspentindfind(myinfo,coin,coinaddr,spendscript,spendlenp,valuep,heightp,txid,vout,lasthdrsi,mempool)); + else + { + if ( (unspentind= iguana_unspentindfind(myinfo,coin,&RTspend,coinaddr,spendscript,spendlenp,valuep,heightp,txid,vout,lasthdrsi,mempool)) != 0 ) + { + if ( valuep != 0 && *valuep == 0 ) + *valuep = RTspend; + outpt->hdrsi = *heightp / coin->chain->bundlesize; + outpt->unspentind = unspentind; + if ( valuep != 0 ) + outpt->value = *valuep; + return(0); + } + return(-1); + } +} + +int32_t iguana_outptset(struct supernet_info *myinfo,struct iguana_info *coin,struct iguana_outpoint *outpt,bits256 txid,int32_t vout,int64_t value,char *spendscriptstr) +{ + int32_t spendlen; + memset(outpt,0,sizeof(*outpt)); + spendlen = (int32_t)strlen(spendscriptstr) >> 1; + if ( spendlen > sizeof(outpt->spendscript) ) + return(-1); + outpt->spendlen = spendlen; + decode_hex(outpt->spendscript,spendlen,spendscriptstr); + outpt->txid = txid; + outpt->vout = vout; + outpt->value = value; + return(0); } int32_t iguana_txidheight(struct supernet_info *myinfo,struct iguana_info *coin,bits256 txid) { - int32_t spendlen,height = 0; uint64_t value; char coinaddr[64]; uint8_t spendscript[IGUANA_MAXSCRIPTSIZE]; - iguana_RTunspentindfind(myinfo,coin,coinaddr,spendscript,&spendlen,&value,&height,txid,0,(coin->firstRTheight/coin->chain->bundlesize) - 1,0); + struct iguana_outpoint outpt; int32_t spendlen,height = 0; uint64_t value; char coinaddr[64]; uint8_t spendscript[IGUANA_MAXSCRIPTSIZE]; + iguana_RTunspentindfind(myinfo,coin,&outpt,coinaddr,spendscript,&spendlen,&value,&height,txid,0,(coin->firstRTheight/coin->chain->bundlesize) - 1,0); return(height); } -int64_t iguana_txidamount(struct supernet_info *myinfo,struct iguana_info *coin,bits256 txid,int32_t vout) +int64_t iguana_txidamount(struct supernet_info *myinfo,struct iguana_info *coin,char *coinaddr,bits256 txid,int32_t vout) { - int32_t spendlen,height = 0; uint64_t value; char coinaddr[64]; uint8_t spendscript[IGUANA_MAXSCRIPTSIZE]; - iguana_RTunspentindfind(myinfo,coin,coinaddr,spendscript,&spendlen,&value,&height,txid,vout,(coin->firstRTheight/coin->chain->bundlesize) - 1,0); + struct iguana_outpoint outpt; int32_t spendlen,height = 0; uint64_t value; uint8_t spendscript[IGUANA_MAXSCRIPTSIZE]; + iguana_RTunspentindfind(myinfo,coin,&outpt,coinaddr,spendscript,&spendlen,&value,&height,txid,vout,(coin->firstRTheight/coin->chain->bundlesize) - 1,0); return(value); } char *iguana_txidcategory(struct supernet_info *myinfo,struct iguana_info *coin,char *account,char *coinaddr,bits256 txid,int32_t vout) { - struct iguana_waccount *wacct; struct iguana_waddress *waddr; int32_t ismine=0,spendlen,height = 0; uint64_t value; uint8_t spendscript[IGUANA_MAXSCRIPTSIZE]; - iguana_RTunspentindfind(myinfo,coin,coinaddr,spendscript,&spendlen,&value,&height,txid,vout,(coin->firstRTheight/coin->chain->bundlesize) - 1,0); + struct iguana_outpoint outpt; struct iguana_waccount *wacct; struct iguana_waddress *waddr; int32_t ismine=0,spendlen,height = 0; uint64_t value; uint8_t spendscript[IGUANA_MAXSCRIPTSIZE]; + iguana_RTunspentindfind(myinfo,coin,&outpt,coinaddr,spendscript,&spendlen,&value,&height,txid,vout,(coin->firstRTheight/coin->chain->bundlesize) - 1,0); account[0] = 0; if ( coinaddr[0] != 0 ) { @@ -893,7 +566,7 @@ void *iguana_RTrawdata(struct iguana_info *coin,bits256 hash2,uint8_t *data,int3 return((void *)"already have rawdata"); return(0); } - //printf("len.%d filesize.%ld\n",len,filesize); + printf("malformed delete.(%s) len.%d filesize.%ld\n",fname,len,filesize); fclose(fp); OS_removefile(fname,0); } @@ -928,7 +601,7 @@ void *iguana_RTrawdata(struct iguana_info *coin,bits256 hash2,uint8_t *data,int3 return(&ptr[sizeof(*recvlenp) + sizeof(checknumtx)]); } else printf("checklen.%d vs %d, checknumtx %d vs %d\n",checklen,(int32_t)(filesize - sizeof(checklen) - sizeof(checknumtx)),checknumtx,*numtxp); } - else + else if ( 0 ) { OS_removefile(fname,0); printf("(%s) removed to suppress errors\n",fname); @@ -956,27 +629,37 @@ void iguana_RTpurge(struct iguana_info *coin,int32_t lastheight) int32_t iguana_RTiterate(struct supernet_info *myinfo,struct iguana_info *coin,int32_t offset,struct iguana_block *block,int64_t polarity) { - struct iguana_txblock txdata; uint8_t *serialized; struct iguana_bundle *bp; int32_t hdrsi,bundlei,height,i,n,errs=0,numtx,num,len; int32_t recvlen = 0; + struct iguana_txblock txdata; uint8_t *serialized; struct iguana_bundle *bp; int32_t hdrsi,bundlei,height,i,n,numtx,num,len; int32_t recvlen = 0; if ( (numtx= coin->RTnumtx[offset]) == 0 || (serialized= coin->RTrawdata[offset]) == 0 || (recvlen= coin->RTrecvlens[offset]) == 0 ) { - char str[65]; + //char str[65]; //printf("errs.%d cant load %s ht.%d polarity.%lld numtx.%d %p recvlen.%d\n",errs,bits256_str(str,block->RO.hash2),block->height,(long long)polarity,coin->RTnumtx[offset],coin->RTrawdata[offset],coin->RTrecvlens[offset]); coin->RTrecvlens[offset] = 0; coin->RTrawdata[offset] = iguana_RTrawdata(coin,block->RO.hash2,0,&coin->RTrecvlens[offset],&coin->RTnumtx[offset],0); if ( (numtx= coin->RTnumtx[offset]) == 0 || (serialized= coin->RTrawdata[offset]) == 0 || (recvlen= coin->RTrecvlens[offset]) == 0 ) { - printf("%s errs.%d cant load %s ht.%d polarity.%lld numtx.%d %p recvlen.%d\n",coin->symbol,errs,bits256_str(str,block->RO.hash2),block->height,(long long)polarity,coin->RTnumtx[offset],coin->RTrawdata[offset],coin->RTrecvlens[offset]); - struct iguana_peer *addr; - iguana_blockQ("RTiterate",coin,coin->bundles[block->hdrsi],block->bundlei,block->RO.hash2,1); - if ( coin->peers != 0 ) + //char str[65]; printf("%s cant load %s ht.%d polarity.%lld numtx.%d %p recvlen.%d\n",coin->symbol,bits256_str(str,block->RO.hash2),block->height,(long long)polarity,coin->RTnumtx[offset],coin->RTrawdata[offset],coin->RTrecvlens[offset]); + struct iguana_peer *addr; // int32_t errs = 0; + iguana_blockhashset("RTblock",coin,coin->firstRTheight+offset,block->RO.hash2,1); + if ( (bp= coin->bundles[block->hdrsi]) != 0 ) { - if ( coin->peers->numranked > 0 ) + bp->issued[block->bundlei] = 0; + bp->blocks[block->bundlei] = block; + bp->hashes[block->bundlei] = block->RO.hash2; + block->height = coin->firstRTheight+offset; + if ( coin->peers != 0 ) { - for (i=0; ipeers->numranked&&i<8; i++) - if ( (addr= coin->peers->ranked[i]) != 0 ) - iguana_sendblockreqPT(coin,addr,coin->bundles[block->hdrsi],block->bundlei,block->RO.hash2,1); - } else iguana_updatemetrics(myinfo,coin); + if ( coin->peers->numranked > 0 ) + { + for (i=0; ipeers->numranked&&i<8; i++) + if ( (addr= coin->peers->ranked[i]) != 0 ) + { + iguana_sendblockreqPT(coin,addr,coin->bundles[block->hdrsi],block->bundlei,block->RO.hash2,1); + } + } else iguana_updatemetrics(myinfo,coin); + } } + iguana_blockQ("RTiterate",coin,bp,block->bundlei,block->RO.hash2,1); num = 0; for (height=block->height+1; height<=coin->blocks.hwmchain.height; height++) { @@ -989,7 +672,7 @@ int32_t iguana_RTiterate(struct supernet_info *myinfo,struct iguana_info *coin,i { num++; iguana_blockQ("RTiterate",coin,0,-1,block->RO.hash2,1); - if ( coin->peers != 0 && (n= coin->peers->numranked) > 0 ) + if ( 0 && coin->peers != 0 && (n= coin->peers->numranked) > 0 ) { if ( (addr= coin->peers->ranked[rand() % n]) != 0 ) iguana_sendblockreqPT(coin,addr,0,-1,block->RO.hash2,1); @@ -997,29 +680,20 @@ int32_t iguana_RTiterate(struct supernet_info *myinfo,struct iguana_info *coin,i } } } - printf("issue missing %d to ht.%d\n",num,height); + //printf("issue missing %d to ht.%d\n",num,height); return(-1); } } - printf("%s RTiterate.%lld offset.%d numtx.%d len.%d\n",coin->symbol,(long long)polarity,offset,coin->RTnumtx[offset],coin->RTrecvlens[offset]); + char str[65]; printf("%s %.8f [%.8f %.8f] RTiterate.%lld %d tx.%d len.%d %s\n",coin->symbol,dstr(coin->histbalance)+dstr(coin->RTcredits)-dstr(coin->RTdebits),dstr(coin->RTcredits),dstr(coin->RTdebits),(long long)polarity,offset,coin->RTnumtx[offset],coin->RTrecvlens[offset],bits256_str(str,block->RO.hash2)); if ( coin->RTrawmem.ptr == 0 ) iguana_meminit(&coin->RTrawmem,"RTrawmem",0,IGUANA_MAXPACKETSIZE * 2,0); - if ( coin->RTmem.ptr == 0 ) - iguana_meminit(&coin->RTmem,"RTmem",0,IGUANA_MAXPACKETSIZE * 2,0); - if ( coin->RThashmem.ptr == 0 ) - iguana_meminit(&coin->RThashmem,"RThashmem",0,IGUANA_MAXPACKETSIZE * 2,0); - iguana_memreset(&coin->RTrawmem), iguana_memreset(&coin->RTmem), iguana_memreset(&coin->RThashmem); memset(&txdata,0,sizeof(txdata)); - //extern int32_t debugtest; - //debugtest = 1; - //fprintf(stderr,"T"); - if ( (n= iguana_gentxarray(coin,&coin->RTrawmem,&txdata,&len,serialized,recvlen)) > 0 ) + iguana_memreset(&coin->RTrawmem); + if ( (n= iguana_gentxarray(myinfo,coin,&coin->RTrawmem,&txdata,&len,serialized,recvlen)) > 0 ) { - //fprintf(stderr,"R"); - iguana_RTramchaindata(myinfo,coin,&coin->RTmem,&coin->RThashmem,polarity,block,coin->RTrawmem.ptr,numtx); + iguana_RTramchaindata(myinfo,coin,polarity,block,coin->RTrawmem.ptr,numtx); return(0); } else printf("gentxarray n.%d RO.txn_count.%d recvlen.%d\n",n,numtx,recvlen); - //debugtest = 0; iguana_RTreset(coin); return(-1); } @@ -1084,15 +758,34 @@ int32_t iguana_RTblocksub(struct supernet_info *myinfo,struct iguana_info *coin, void iguana_RTnewblock(struct supernet_info *myinfo,struct iguana_info *coin,struct iguana_block *block) { - int32_t i,n,height,hdrsi,bundlei; struct iguana_block *addblock,*subblock; struct iguana_bundle *bp; + int32_t i,n,height,hdrsi,bundlei; struct iguana_block *addblock=0,*subblock=0; struct iguana_bundle *bp; + if ( coin->RTreset_needed != 0 ) + { + printf("RTreset_needed -> RTreset\n"); + iguana_RTreset(coin); + coin->RTreset_needed = 0; + } + iguana_RTbalance_verify("start iterate",coin); + /*if ( strcmp(coin->symbol,"BTC") != 0 && strcmp(coin->symbol,"LTC") != 0 ) + { + if ( block->height < coin->firstRTheight+coin->minconfirms ) + return; + if ( (block= iguana_blockfind("RTnew",coin,iguana_blockhash(coin,block->height-coin->minconfirms))) == 0 ) + return; + }*/ if ( block->height < coin->firstRTheight || block->height >= coin->firstRTheight+sizeof(coin->RTblocks)/sizeof(*coin->RTblocks) ) { - if ( coin->firstRTheight > 0 ) + if ( 0 && coin->firstRTheight > 0 ) printf("iguana_RTnewblock illegal blockheight.%d\n",block->height); return; } - if ( block != 0 && coin->RTheight > 0 && coin->RTheight <= coin->blocks.hwmchain.height ) + if ( block != 0 && coin->RTheight > 0 && coin->utxoaddrtable != 0 )//&& coin->RTheight <= coin->blocks.hwmchain.height ) { + if ( block->height <= coin->lastRTheight+coin->minconfirms ) + return; + if ( (block= iguana_blockfind("RTnew",coin,iguana_blockhash(coin,block->height-coin->minconfirms))) == 0 ) + return; + // error check to bundle boundary portable_mutex_lock(&coin->RTmutex); if ( block->height > coin->lastRTheight ) { @@ -1106,6 +799,10 @@ void iguana_RTnewblock(struct supernet_info *myinfo,struct iguana_info *coin,str { if ( iguana_RTblockadd(myinfo,coin,addblock) < 0 ) break; + //if ( iguana_RTblocksub(myinfo,coin,addblock) < 0 ) + // break; + //if ( iguana_RTblockadd(myinfo,coin,addblock) < 0 ) + // break; coin->lastRTheight = addblock->height; } else @@ -1115,6 +812,8 @@ void iguana_RTnewblock(struct supernet_info *myinfo,struct iguana_info *coin,str } } coin->RTheight += i; + if ( coin->RTheight != coin->lastRTheight+1 ) + printf("ERROR: "); //printf("%s >= RTnewblock RTheight %d prev %d\n",coin->symbol,coin->RTheight,coin->lastRTheight); } else if ( block->height == coin->lastRTheight ) @@ -1123,6 +822,7 @@ void iguana_RTnewblock(struct supernet_info *myinfo,struct iguana_info *coin,str { if ( iguana_RTblocksub(myinfo,coin,subblock) < 0 || iguana_RTblockadd(myinfo,coin,block) < 0 ) { + printf("error unwinding to current %d\n",coin->RTheight); portable_mutex_unlock(&coin->RTmutex); return; } @@ -1131,38 +831,29 @@ void iguana_RTnewblock(struct supernet_info *myinfo,struct iguana_info *coin,str } else { - if ( block->height < coin->firstRTheight ) - { - if ( coin->lastRTheight > 0 ) - printf("%s ht.%d reorg past firstRTheight.%d\n",coin->symbol,block->height,coin->firstRTheight); - iguana_RTreset(coin); - } - else + char str[65]; printf("reorg RTheight.%d vs block.%d %s\n",coin->RTheight,block->height,bits256_str(str,block->RO.hash2)); + iguana_RTreset(coin); + /*while ( coin->RTheight > block->height ) { - while ( coin->lastRTheight >= block->height ) - { - if ( iguana_RTblocksub(myinfo,coin,iguana_RTblock(coin,coin->lastRTheight--)) < 0 ) - { - coin->RTheight = coin->lastRTheight+1; - portable_mutex_unlock(&coin->RTmutex); - return; - } - } - coin->RTheight = coin->lastRTheight+1; - if ( iguana_RTblockadd(myinfo,coin,block) < 0 ) + if ( iguana_RTblocksub(myinfo,coin,iguana_RTblock(coin,coin->RTheight-1)) < 0 ) { + printf("error subtracting %d\n",coin->RTheight-1); + coin->lastRTheight = coin->RTheight-1; portable_mutex_unlock(&coin->RTmutex); return; } - coin->lastRTheight = block->height; - coin->RTheight = coin->lastRTheight+1; + coin->RTheight--; } + if ( iguana_RTblockadd(myinfo,coin,block) < 0 ) + { + printf("error adding %d\n",block->height); + portable_mutex_unlock(&coin->RTmutex); + return; + } + coin->lastRTheight = block->height; + coin->RTheight = coin->lastRTheight+1;*/ } portable_mutex_unlock(&coin->RTmutex); - //block = iguana_blockfind("next",coin,iguana_blockhash(coin,block->height+1)); } + iguana_RTbalance_verify("end iterate",coin); } - -// infinite loops at bundle boundary? -// >= RTnewblock RTheight 1254001 prev 1254000 -// B errs.0 cant load 15102564820405cd16506d2731567453c437af07cdd5954bc21b32304e39b1d4 ht.1254001 polarity.1 numtx.0 (nil) recvlen.0 diff --git a/iguana/iguana_recv.c b/iguana/iguana_recv.c index a6c931c77..29555f468 100755 --- a/iguana/iguana_recv.c +++ b/iguana/iguana_recv.c @@ -63,7 +63,7 @@ int32_t iguana_speculativesearch(struct iguana_info *coin,struct iguana_block ** int32_t iguana_sendblockreqPT(struct iguana_info *coin,struct iguana_peer *addr,struct iguana_bundle *bp,int32_t bundlei,bits256 hash2,int32_t iamthreadsafe) { static bits256 lastreq,lastreq2; - int32_t len,j,n,recvlen,numtx; struct iguana_bundle *checkbp; uint8_t serialized[sizeof(struct iguana_msghdr) + sizeof(uint32_t)*32 + sizeof(bits256)]; struct iguana_block *block=0; + int32_t len,j,n; struct iguana_bundle *checkbp; uint8_t serialized[sizeof(struct iguana_msghdr) + sizeof(uint32_t)*32 + sizeof(bits256)]; struct iguana_block *block=0; char hexstr[65]; init_hexbytes_noT(hexstr,hash2.bytes,sizeof(hash2)); if ( addr == 0 && coin->peers != 0 && (n= coin->peers->numranked) > 0 ) addr = coin->peers->ranked[rand() % n]; @@ -80,17 +80,11 @@ int32_t iguana_sendblockreqPT(struct iguana_info *coin,struct iguana_peer *addr, checkbp = 0, j = -2; if ( (checkbp= iguana_bundlefind(coin,&checkbp,&j,hash2)) != 0 && j >= 0 && j < checkbp->n ) { - if ( checkbp->emitfinish != 0 || ((block= checkbp->blocks[j]) != 0 && block->txvalid != 0 && block->mainchain != 0 && block->valid != 0 && block->bundlei != 0) ) - { - //char str[65]; - recvlen = numtx = 0; - if ( coin->RTheight > 0 && iguana_RTrawdata(coin,hash2,0,&recvlen,&numtx,1) != 0 ) - { - printf("found valid [%d:%d] in blockreqPT\n",checkbp->hdrsi,j); - return(0); - } //else printf("no RTrawdata for %s\n",bits256_str(str,hash2)); - } + if ( checkbp->emitfinish != 0 || ((block= checkbp->blocks[j]) != 0 && block->txvalid != 0 && block->mainchain != 0 && block->valid != 0 && block->bundlei != 0 && coin->RTheight == 0) ) + return(0); } + if ( checkbp != bp || j != bundlei ) + bp = 0, bundlei = -1; if ( 0 && coin->enableCACHE != 0 && iguana_speculativesearch(coin,&block,hash2) != 0 ) { if ( block != 0 && block->hdrsi != 0 && block->bundlei != 0 ) @@ -109,7 +103,7 @@ int32_t iguana_sendblockreqPT(struct iguana_info *coin,struct iguana_peer *addr, } if ( addr->msgcounts.verack == 0 ) { - if ( (rand() % 100) == 0 ) + if ( (rand() % 10000) == 0 ) printf("iguana_sendblockreq (%s) addrind.%d hasn't verack'ed yet\n",addr->ipaddr,addr->addrind); //iguana_send_version(coin,addr,coin->myservices); return(-1); @@ -123,10 +117,14 @@ int32_t iguana_sendblockreqPT(struct iguana_info *coin,struct iguana_peer *addr, addr->pendblocks++; addr->pendtime = (uint32_t)time(NULL); if ( bp != 0 && bundlei >= 0 && bundlei < bp->n ) + { + if ( coin->RTheight == 0 && bp != coin->current && bp->issued[bundlei] > 1 && addr->pendtime < bp->issued[bundlei]+30 ) + return(0); bp->issued[bundlei] = addr->pendtime; + } if ( block != 0 ) block->issued = addr->pendtime; - if ( 0 && coin->current == bp ) + if ( 0 && coin->RTheight > 0 )//&& coin->current == bp ) printf("REQ.(%s) [%d:%d] %s n.%d\n",bits256_str(hexstr,hash2),bundlei,bp!=0?bp->hdrsi:-1,addr->ipaddr,addr->pendblocks); } else printf("MSG_BLOCK null datalen.%d\n",len); return(len); @@ -298,7 +296,6 @@ void iguana_bundletime(struct iguana_info *coin,struct iguana_bundle *bp,int32_t starttime = block->issued; if ( starttime == 0 || bp->issued[bundlei] > block->issued ) starttime = bp->issued[bundlei]; - bp->issued[bundlei] = 1; if ( starttime != 0 ) { duration = (uint32_t)time(NULL) - starttime; @@ -312,13 +309,13 @@ void iguana_bundletime(struct iguana_info *coin,struct iguana_bundle *bp,int32_t bp->totaldurations += duration; bp->durationscount++; } - if ( (block= bp->blocks[bundlei]) != 0 && block->lag == 0 ) + if ( (block != 0 || (block= bp->blocks[bundlei]) != 0) && block->lag == 0 ) block->lag = duration; } } } -void iguana_gotblockM(struct iguana_info *coin,struct iguana_peer *addr,struct iguana_txblock *origtxdata,struct iguana_msgtx *txarray,struct iguana_msghdr *H,uint8_t *data,int32_t recvlen,int32_t fromcache) +void iguana_oldgotblockM(struct supernet_info *myinfo,struct iguana_info *coin,struct iguana_peer *addr,struct iguana_txblock *origtxdata,struct iguana_msgtx *txarray,struct iguana_msghdr *H,uint8_t *data,int32_t recvlen,int32_t fromcache) { struct iguana_bundlereq *req; struct iguana_txblock *txdata = 0; int32_t valid,speculative=0,i,j,bundlei,copyflag,numtx; struct iguana_block *block; struct iguana_bundle *bp; uint32_t now; char str[65]; if ( recvlen < 0 || recvlen > IGUANA_MAXPACKETSIZE ) @@ -352,7 +349,7 @@ void iguana_gotblockM(struct iguana_info *coin,struct iguana_peer *addr,struct i } } origtxdata->zblock.RO.allocsize = sizeof(origtxdata->zblock); - if ( iguana_blockvalidate(coin,&valid,(struct iguana_block *)&origtxdata->zblock,1) < 0 ) + if ( iguana_blockvalidate(myinfo,coin,&valid,(struct iguana_block *)&origtxdata->zblock,1) < 0 ) { printf("got block that doesnt validate? %s\n",bits256_str(str,origtxdata->zblock.RO.hash2)); return; @@ -392,6 +389,7 @@ void iguana_gotblockM(struct iguana_info *coin,struct iguana_peer *addr,struct i copyflag = (coin->enableCACHE != 0) && (strcmp(coin->symbol,"BTC") != 0); bp = 0, bundlei = -2; bp = iguana_bundlefind(coin,&bp,&bundlei,origtxdata->zblock.RO.hash2); + printf("[%d:%d].(%s) %s n%d\n",bp!=0?bp->hdrsi:-1,bundlei,bits256_str(str,origtxdata->zblock.RO.hash2),addr->ipaddr,addr->pendblocks); if ( bp != 0 && bundlei >= 0 && bundlei < bp->n ) { block = bp->blocks[bundlei]; @@ -492,25 +490,14 @@ void iguana_gotblockM(struct iguana_info *coin,struct iguana_peer *addr,struct i addr->recvblocks += 1.; addr->recvtotal += recvlen; } - if ( speculative == 0 && iguana_ramchain_data(coin,addr,origtxdata,txarray,origtxdata->zblock.RO.txn_count,data,recvlen) >= 0 ) + if ( speculative == 0 && iguana_ramchain_data(coin,addr,origtxdata,txarray,origtxdata->zblock.RO.txn_count,data,recvlen,bp,block) >= 0 ) { txdata->zblock.fpipbits = (uint32_t)addr->ipbits; txdata->zblock.RO.recvlen = recvlen; txdata->zblock.fpos = 0; req->datalen = txdata->datalen; req->ipbits = txdata->zblock.fpipbits; - /*if ( 0 ) - { - struct iguana_txblock *checktxdata; struct OS_memspace checkmem; int32_t checkbundlei; - memset(&checkmem,0,sizeof(checkmem)); - iguana_meminit(&checkmem,"checkmem",0,txdata->datalen + 4096,0); - if ( (checktxdata= iguana_peertxdata(coin,&checkbundlei,fname,&checkmem,(uint32_t)addr->ipbits,txdata->block.RO.hash2)) != 0 ) - { - printf("check datalen.%d bundlei.%d T.%d U.%d S.%d P.%d X.%d\n",checktxdata->datalen,checkbundlei,checktxdata->numtxids,checktxdata->numunspents,checktxdata->numspends,checktxdata->numpkinds,checktxdata->numexternaltxids); - } - iguana_mempurge(&checkmem); - }*/ - } //else printf("cant save block\n"); + } //else printf("cant save block\n"); } if ( txdata->zblock.fpos == 0 ) { @@ -542,6 +529,348 @@ void iguana_gotblockM(struct iguana_info *coin,struct iguana_peer *addr,struct i } else printf("nonz fpos.%d %s\n",txdata->zblock.fpos,bits256_str(str,origtxdata->zblock.RO.hash2)); } +void iguana_recvstats_update(struct iguana_info *coin,struct iguana_peer *addr,int32_t recvlen) +{ + static uint64_t received[IGUANA_MAXPEERS],count[IGUANA_MAXPEERS],lastcount,lastreceived,last; + char str[65],str2[65],str3[65],str4[65]; uint32_t now; int32_t i; int64_t sum2= 0,sum = 0,diffr,diff; double bw = 0.; + coin->recvcount++; + coin->recvtime = (uint32_t)time(NULL); + netBLOCKS++; + if ( addr->pendblocks > 0 ) + addr->pendblocks--; + addr->lastblockrecv = (uint32_t)time(NULL); + addr->recvblocks += 1.; + addr->recvtotal += recvlen; + received[addr->addrind] += recvlen; + count[addr->addrind]++; + now = (uint32_t)time(NULL); + if ( ((rand() % 10000) == 0 && now > last+60) || now > last+600 ) + { + for (i=0; i coin->maxbandwidth ) + coin->maxbandwidth = bw; + } + dxblend(&coin->bandwidth,bw,.9); + printf("%s BLOCKS.%llu RECV %s ave %.1f | dup.%d %s after.%d %s %s/sec %.2f%% %s\n",coin->symbol,(long long)sum2,mbstr(str,sum),(double)sum/(sum2!=0?sum2:1),numDuplicates,mbstr(str2,sizeDuplicates),numAfteremit,mbstr(str3,sizeAfteremit),mbstr(str4,bw),coin->maxbandwidth!=0.?100.*coin->bandwidth/coin->maxbandwidth:0.,coin->maxbandwidth>4*coin->bandwidth?"SLOW":""); + last = now; + } + if ( coin->bandwidth < 0.25*coin->maxbandwidth ) + { + //printf(">>SLOW.%d<< ",addr->addrind); + //iguana_blast(coin,addr); + } +} + +int32_t iguana_bundlestats_update(struct iguana_info *coin,struct iguana_block **blockp,struct iguana_bundle *bp,int32_t bundlei,struct iguana_txblock *origtxdata,uint8_t *data,int32_t recvlen) +{ + char str[65]; struct iguana_block *block; int32_t i,j; + *blockp = 0; + if ( bp != 0 && bundlei >= 0 && bundlei < bp->n ) + { + *blockp = block = bp->blocks[bundlei]; + if ( bp->emitfinish != 0 ) + { + numAfteremit++; + sizeAfteremit += recvlen; + if ( block != 0 ) + iguana_bundletime(coin,bp,bundlei,block,1); + //printf("got [%d:%d] with emitfinish.%u\n",bp->hdrsi,bundlei,bp->emitfinish); + return(-1); + } + bp->dirty++; + if ( bundlei >= 0 && block != 0 ) + { + if ( block->fpipbits != 0 && block->txvalid != 0 ) + { + numDuplicates++; + sizeDuplicates += recvlen; + //printf("duplicate [%d:%d] %s\n",bp->hdrsi,bundlei,bits256_str(str,block->RO.hash2)); + if ( bits256_cmp(origtxdata->zblock.RO.hash2,block->RO.hash2) != 0 ) + { + //printf("mismatched tx %s received? mainchain.%d\n",bits256_str(str,block->RO.hash2),block->mainchain); + return(-1); + } + else + { + iguana_bundletime(coin,bp,bundlei,block,1); + iguana_blockzcopyRO(coin->chain->zcash,&block->RO,0,&origtxdata->zblock.RO,0); + return(0); + } + } + else + { + iguana_bundletime(coin,bp,bundlei,block,0); + if ( 0 && bp == coin->current ) + printf("recv [%d:%d] %s\n",bp->hdrsi,bundlei,bits256_str(str,block->RO.hash2)); + return(0); + } + } + } + else + { + if ( (bp= coin->current) != 0 ) + { + for (i=0; ibundlescount; i++) + { + if ( (bp= coin->bundles[i]) != 0 && bp->emitfinish == 0 && bp->speculative != 0 && bp->numhashes < bp->n ) + { + if ( (j= iguana_speculativefind(coin,bp,(struct iguana_block *)&origtxdata->zblock,data,recvlen)) >= 0 ) + { + printf("speculative found\n"); + //copyflag = 0; + //speculative = 1; + if ( (*blockp= bp->blocks[j]) != 0 ) + iguana_bundletime(coin,bp,j,*blockp,0); + return(1); + } + } + } + } + } + return(0); +} + +struct iguana_bundlereq *iguana_recv_bundlereq(struct iguana_info *coin,struct iguana_peer *addr,int32_t copyflag,struct iguana_msghdr *H,uint8_t *data,int32_t recvlen,struct iguana_bundle *bp,int32_t bundlei,struct iguana_txblock *txdata) +{ + struct iguana_bundlereq *req; struct iguana_block *block = 0; + if ( copyflag != 0 && recvlen != 0 && (bp == 0 || bundlei < 0 || ((block= bp->blocks[bundlei]) != 0 && block->fpipbits == 0 && block->req == 0)) ) + { + struct iguana_msghdr checkH; + req = iguana_bundlereq(coin,addr,'B',data,copyflag * recvlen); + req->copyflag = 1; + req->H = *H; + if ( 0 && iguana_sethdr(&checkH,coin->chain->netmagic,H->command,req->serializeddata,recvlen) > 0 && memcmp(&checkH,H,sizeof(checkH)) != 0 ) + { + int z; + for (z=0; zH datalen.%d crc.%08x error\n",recvlen,calc_crc32(0,data,recvlen)); + } + } + else + { + copyflag = 0; + req = iguana_bundlereq(coin,addr,'B',0,0); + } + req->recvlen = recvlen; + req->datalen = txdata->datalen; + req->ipbits = txdata->zblock.fpipbits; + req->zblock = txdata->zblock; + req->zblock.RO.txn_count = req->numtx = txdata->zblock.RO.txn_count; + req->addr = addr; + return(req); +} + +void iguana_RTgotblock(struct iguana_info *coin,bits256 hash2,uint8_t *data,int32_t *recvlenp,int32_t *numtxp) +{ + int32_t i; struct iguana_bundle *bp; + if ( coin->almostRT == 0 ) + { + for (i=0; ibundlescount; i++) + if ( (bp= coin->bundles[i]) != 0 && bp->utxofinish <= 1 ) + break; + if ( (i > coin->bundlescount-2 && coin->blocks.hwmchain.height > coin->longestchain-coin->chain->bundlesize*2) || coin->RTheight > 0 ) + coin->almostRT = 1; + } + if ( coin->almostRT != 0 ) + { + portable_mutex_lock(&coin->RTmutex); + iguana_RTrawdata(coin,hash2,data,recvlenp,numtxp,0); + portable_mutex_unlock(&coin->RTmutex); + } +} + +int32_t iguana_txmerkle(struct iguana_info *coin,bits256 *tree,int32_t treesize,struct iguana_txblock *origtxdata,struct iguana_msgtx *txarray) +{ + int32_t i,msize; bits256 merkle_root; + if ( bits256_nonz(origtxdata->zblock.RO.merkle_root) == 0 ) + { + memset(&origtxdata->zblock.RO.prev_block,0,sizeof(bits256)); + origtxdata->zblock.RO.recvlen = 0; + origtxdata->zblock.issued = 0; + return(-1); + } + msize = (int32_t)sizeof(bits256) * (origtxdata->zblock.RO.txn_count+1) * 2; + if ( msize <= treesize ) + { + for (i=0; izblock.RO.txn_count; i++) + tree[i] = txarray[i].txid; + merkle_root = iguana_merkle(tree,origtxdata->zblock.RO.txn_count); + if ( bits256_cmp(merkle_root,origtxdata->zblock.RO.merkle_root) != 0 ) + { + char str[65],str2[65]; + printf(">>>>>>>>>> %s merkle mismatch.[%d] calc.(%s) vs (%s)\n",coin->symbol,origtxdata->zblock.RO.txn_count,bits256_str(str,merkle_root),bits256_str(str2,origtxdata->zblock.RO.merkle_root)); + origtxdata->zblock.RO.recvlen = 0; + origtxdata->zblock.issued = 0; + return(-1); + } //else printf("matched merkle.%d\n",txn_count); + return(0); + } else printf("not enough memory for merkle verify %d vs %u\n",(int32_t)(sizeof(bits256)*(origtxdata->zblock.RO.txn_count+1)),treesize); + return(-1); +} + +void iguana_gotblockM(struct supernet_info *myinfo,struct iguana_info *coin,struct iguana_peer *addr,struct iguana_txblock *origtxdata,struct iguana_msgtx *txarray,struct iguana_msghdr *H,uint8_t *data,int32_t recvlen,int32_t fromcache) +{ + static uint64_t totalrecv; + struct iguana_bundlereq *req; struct iguana_txblock *txdata = 0; int32_t incr,i,numsaved,valid,speculative=0,bundlei,copyflag,numtx; struct iguana_bundle *bp; struct iguana_block *block; char str[65]; + if ( addr == 0 ) + addr = &coin->internaladdr; + if ( recvlen < 0 || recvlen > IGUANA_MAXPACKETSIZE ) + { + printf("iguana_getblockM: illegal recvlen.%d\n",recvlen); + return; + } + if ( fromcache == 0 && coin->virtualchain == 0 && addr != 0 && addr != &coin->internaladdr ) + { + iguana_recvstats_update(coin,addr,recvlen); + totalrecv += recvlen; + } + origtxdata->zblock.RO.allocsize = sizeof(origtxdata->zblock); + if ( iguana_blockvalidate(myinfo,coin,&valid,(struct iguana_block *)&origtxdata->zblock,1) < 0 ) + { + printf("got block that doesnt validate? %s\n",bits256_str(str,origtxdata->zblock.RO.hash2)); + return; + } + iguana_peer_meminit(coin,addr); + if ( iguana_txmerkle(coin,addr->TXDATA.ptr,(int32_t)addr->TXDATA.totalsize,origtxdata,txarray) < 0 ) + return; + origtxdata->zblock.txvalid = 1; + bp = 0, bundlei = -2; + if ( iguana_bundlefind(coin,&bp,&bundlei,origtxdata->zblock.RO.hash2) == 0 ) + { + bp = 0, bundlei = -2; + if ( iguana_bundlefind(coin,&bp,&bundlei,origtxdata->zblock.RO.prev_block) == 0 ) + { + //printf("gotblockM: RTblock? %s\n",bits256_str(str,origtxdata->zblock.RO.hash2)); + numtx = origtxdata->zblock.RO.txn_count; + iguana_RTgotblock(coin,origtxdata->zblock.RO.hash2,data,&recvlen,&numtx); + req = iguana_recv_bundlereq(coin,addr,0,H,data,recvlen,0,-1,origtxdata); + queue_enqueue("recvQ",&coin->recvQ,&req->DL,0); + return; + } + else if ( bundlei < coin->chain->bundlesize-1 ) + { + bundlei++; + iguana_hash2set(coin,"gotblockM",bp,bundlei,origtxdata->zblock.RO.hash2); + } + else // new bundle case, but bad context to extend + { + bits256 zero; + memset(zero.bytes,0,sizeof(zero)); + if ( (bp= iguana_bundlecreate(coin,&bundlei,bp->bundleheight + coin->chain->bundlesize,origtxdata->zblock.RO.hash2,zero,0)) == 0 ) + { + origtxdata->zblock.issued = 0; + origtxdata->zblock.RO.recvlen = 0; + printf("gotblockM2: error finding block %s\n",bits256_str(str,origtxdata->zblock.RO.hash2)); + return; + } else printf("getblockM autoextended.[%d]\n",bp->hdrsi); + } + } + if ( bp == 0 ) + { + req = iguana_recv_bundlereq(coin,addr,0,H,data,recvlen,0,-1,origtxdata); + queue_enqueue("recvQ",&coin->recvQ,&req->DL,0); + return; + } + for (i=numsaved=0; ichain->bundlesize; i++) + { + if ( (block= bp->blocks[i]) != 0 && block->fpipbits != 0 && block->fpos >= 0 && block->txvalid != 0 ) + numsaved++; + } + if ( (speculative= iguana_bundlestats_update(coin,&block,bp,bundlei,origtxdata,data,recvlen)) < 0 ) + { + req = iguana_recv_bundlereq(coin,addr,0,H,data,recvlen,0,-1,origtxdata); + queue_enqueue("recvQ",&coin->recvQ,&req->DL,0); + return; + } + if ( block == 0 ) + block = iguana_blockhashset("noblock",coin,bp->bundleheight+bundlei,origtxdata->zblock.RO.hash2,1); + if ( block->hdrsi != bp->hdrsi || block->bundlei != bundlei ) + { + block->hdrsi = bp->hdrsi; + block->bundlei = bundlei; + } + if ( bp->blocks[bundlei] == 0 || bits256_nonz(bp->hashes[bundlei]) == 0 ) + { + //printf("SET [%d:%d]\n",bp->hdrsi,bundlei); + //iguana_hash2set(coin,"noblock",bp,bundlei,origtxdata->zblock.RO.hash2); + bp->hashes[bundlei] = origtxdata->zblock.RO.hash2; + if ( bp->speculative != 0 ) + bp->speculative[bundlei] = bp->hashes[bundlei]; + bp->blocks[bundlei] = block; + } + numtx = origtxdata->zblock.RO.txn_count; + iguana_RTgotblock(coin,origtxdata->zblock.RO.hash2,data,&recvlen,&numtx); + //printf("getblockM update [%d:%d] %s\n",bp->hdrsi,bundlei,bits256_str(str,origtxdata->zblock.RO.hash2)); + block->txvalid = 1; + if ( block->fpipbits != 0 && block->fpos >= 0 ) + { + static int32_t numredundant; static double redundantsize; static uint32_t lastdisp; + char str[65],str2[65]; + numredundant++, redundantsize += recvlen; + if ( time(NULL) > lastdisp+30 ) + { + lastdisp = (uint32_t)time(NULL); + printf("%s have %d:%d at %d | %d blocks %s redundant xfers total %s %.2f%% wasted\n",coin->symbol,bp->hdrsi,bundlei,block->fpos,numredundant,mbstr(str,redundantsize),mbstr(str2,totalrecv),100.*redundantsize/totalrecv); + } + if ( bundlei > 1 ) + { + // printf("DUP s.%d [%d:%d].(%s) %s n%d\n",numsaved,bp!=0?bp->hdrsi:-1,bundlei,bits256_str(str,origtxdata->zblock.RO.hash2),addr->ipaddr,addr->pendblocks); + } + req = iguana_recv_bundlereq(coin,addr,0,H,data,recvlen,0,-1,origtxdata); + queue_enqueue("recvQ",&coin->recvQ,&req->DL,0); + return; + } + txdata = origtxdata; + if ( iguana_ramchain_data(coin,addr,origtxdata,txarray,origtxdata->zblock.RO.txn_count,data,recvlen,bp,block) >= 0 ) + { + txdata->zblock.fpipbits = (uint32_t)addr->ipbits; + txdata->zblock.RO.recvlen = recvlen; + txdata->zblock.fpos = 0; + copyflag = (coin->enableCACHE != 0) && (strcmp(coin->symbol,"BTC") != 0); + req = iguana_recv_bundlereq(coin,addr,copyflag,H,data,recvlen,bp,bundlei,txdata); + queue_enqueue("recvQ",&coin->recvQ,&req->DL,0); + if ( 0 && strcmp("BTCD",coin->symbol) == 0 ) + printf("[%d:%d].s%d %s Q.(%s) %s\n",bp->hdrsi,bundlei,numsaved,coin->symbol,bits256_str(str,origtxdata->zblock.RO.hash2),addr->ipaddr); + //if ( (bp == coin->current || (coin->peers != 0 && ) && (rand() % coin->chain->bundlesize) < numsaved ) + if ( numsaved < coin->chain->bundlesize ) + { + for (i=numsaved=0; ichain->bundlesize; i++) + { + if ( (block= bp->blocks[i]) != 0 && block->fpipbits != 0 && block->fpos >= 0 && block->txvalid != 0 ) + numsaved++; + } + if ( numsaved < coin->chain->bundlesize && bp->startutxo == 0 ) + { + if ( (incr= coin->peers->numranked) == 0 ) + incr = 1; + i = addr->addrind % incr; + for (; ichain->bundlesize; i+=incr) + { + if ( (bp->issued[i] == 0 && bits256_nonz(bp->hashes[i]) != 0) && ((block= bp->blocks[i]) == 0 || bits256_cmp(bp->hashes[i],block->RO.hash2) != 0 || block->fpipbits == 0 || block->fpos < 0 || block->txvalid == 0) ) + { + bp->issued[i] = 1; + iguana_sendblockreqPT(coin,addr,0,-1,bp->hashes[i],0); + //printf("numsaved.%d auto issue.[%d:%d] %s\n",numsaved,bp->hdrsi,i,addr->ipaddr); + break; + } //else printf("numsaved.%d SKIP auto issue.[%d:%d] %s\n",numsaved,bp->hdrsi,i,addr->ipaddr); + } + } + else if ( bp->queued == 0 && bp->startutxo == 0 ) + { + iguana_bundleQ(myinfo,coin,bp,0); + //printf("numsaved.%d [%d] %s\n",numsaved,bp->hdrsi,addr->ipaddr); + } + } + } else printf("nonz fpos.%d %s\n",txdata->zblock.fpos,bits256_str(str,origtxdata->zblock.RO.hash2)); +} + void iguana_gottxidsM(struct iguana_info *coin,struct iguana_peer *addr,bits256 *txids,int32_t n) { struct iguana_bundlereq *req; @@ -553,7 +882,9 @@ void iguana_gottxidsM(struct iguana_info *coin,struct iguana_peer *addr,bits256 int32_t iguana_gotheadersM(struct iguana_info *coin,struct iguana_peer *addr,struct iguana_zblock *zblocks,int32_t n) { - struct iguana_bundlereq *req; int32_t i,num; + struct iguana_bundlereq *req; int32_t i,num; struct iguana_bundle *bp; + if ( n <= 1 ) + return(-1); if ( addr != 0 ) { static uint32_t hdrsreceived[IGUANA_MAXPEERS]; @@ -564,7 +895,7 @@ int32_t iguana_gotheadersM(struct iguana_info *coin,struct iguana_peer *addr,str uint32_t i,sum = 0; for (i=0; i %s\n",sum,mbstr(str,sum*80)); + printf("%s TOTAL HDRS RECEIVED %u -> %s\n",coin->symbol,sum,mbstr(str,sum*80)); } addr->recvhdrs++; if ( addr->pendhdrs > 0 ) @@ -578,6 +909,13 @@ int32_t iguana_gotheadersM(struct iguana_info *coin,struct iguana_peer *addr,str addr->numRThashes = num; } } + if ( strcmp("BTC",coin->symbol) != 0 && n == 2 ) + iguana_sendblockreqPT(coin,addr,0,-1,zblocks[1].RO.hash2,0); + for (i=0; ibundlescount; i++) + { + if ( (bp= coin->bundles[i]) != 0 && bits256_cmp(zblocks[1].RO.hash2,bp->hashes[1]) == 0 && bp->numhashes >= coin->chain->bundlesize ) + return(-1); + } req = iguana_bundlereq(coin,addr,'H',0,0); req->blocks = zblocks, req->n = n; HDRnet++; @@ -649,19 +987,23 @@ uint32_t iguana_allhashcmp(struct supernet_info *myinfo,struct iguana_info *coin prev->hh.next = block; block->hh.prev = prev; } - //if ( bp->hdrsi < coin->MAXBUNDLES ) - // iguana_blockQ(coin,bp,i,blockhashes[i],0); + if ( bp->startutxo == 0 && bp->issued[i] == 0 ) + { + iguana_blockQ("allhashes",coin,bp,i,blockhashes[i],1); + iguana_blockQ("allhashes",coin,bp,i,blockhashes[i],0); + n++; + } } else printf("no allhashes block.%p or mismatch.%p\n",block,bp->blocks[i]); prev = block; } coin->allhashes++; - n = 0; - if ( bp->hdrsi < coin->MAXBUNDLES || (coin->current != 0 && coin->lastpending != 0 && bp->hdrsi >= coin->current->hdrsi && bp->hdrsi <= coin->lastpending->hdrsi) ) - n = iguana_bundleissuemissing(myinfo,coin,bp,1,3.); - if ( 0 && n > 0 ) + //n = 0; + //if ( bp->hdrsi < coin->MAXBUNDLES || (coin->current != 0 && coin->lastpending != 0 && bp->hdrsi >= coin->current->hdrsi && bp->hdrsi <= coin->lastpending->hdrsi) ) + // n = iguana_bundleissuemissing(myinfo,coin,bp,1,3.); + if ( 0 && n > 2 ) printf("ALLHASHES FOUND! %d allhashes.%d issued %d\n",bp->bundleheight,coin->allhashes,n); - if ( bp->queued == 0 ) - iguana_bundleQ(coin,bp,bp->n*5 + (rand() % 500)); + //if ( bp->queued == 0 ) + // iguana_bundleQ(myinfo,coin,bp,bp->n*5 + (rand() % 500)); return(bp->queued); } } @@ -678,16 +1020,6 @@ void iguana_bundlespeculate(struct iguana_info *coin,struct iguana_bundle *bp,in //fprintf(stderr,"Afound block -> %d %d hdr.%s\n",bp->bundleheight,coin->longestchain-coin->chain->bundlesize,str); queue_enqueue("hdrsQ",&coin->hdrsQ,queueitem(str),1); } - /*else if ( bp->speculative != 0 && bundlei < bp->numspec && memcmp(hash2.bytes,bp->speculative[bundlei].bytes,sizeof(hash2)) == 0 ) - { - bundlei += offset; - if ( bundlei < bp->n && bundlei < bp->numspec && time(NULL) > bp->issued[bundlei]+30 ) - { - char str[65]; printf("speculative req[%d] %s\n",bundlei,bits256_str(str,bp->speculative[bundlei])); - iguana_blockQ("speculate",coin,0,-1,bp->speculative[bundlei],0); - bp->issued[bundlei] = (uint32_t)time(NULL); - } - } */ //else printf("speculative.%p %d vs %d cmp.%d\n",bp->speculative,bundlei,bp->numspec,bp->speculative!=0?memcmp(hash2.bytes,bp->speculative[bundlei].bytes,sizeof(hash2)):-1);*/ } int32_t iguana_bundlehashadd(struct iguana_info *coin,struct iguana_bundle *bp,int32_t bundlei,struct iguana_block *block) @@ -751,7 +1083,7 @@ int32_t iguana_bundlehashadd(struct iguana_info *coin,struct iguana_bundle *bp,i void iguana_bundle_set(struct iguana_info *coin,struct iguana_block *block,int32_t height) { - int32_t hdrsi,bundlei; struct iguana_bundle *bp; + int32_t hdrsi,bundlei; struct iguana_bundle *bp; char str[65]; if ( block->height < 0 || block->height == height ) { hdrsi = (height / coin->chain->bundlesize); @@ -764,7 +1096,7 @@ void iguana_bundle_set(struct iguana_info *coin,struct iguana_block *block,int32 bp->speculative[bundlei] = block->RO.hash2; //char str[65]; printf("SET %s ht.%d in [%d:%d]\n",bits256_str(str,block->RO.hash2),height,hdrsi,bundlei); } //else printf("iguana_bundle_set: no bundle at [%d]\n",hdrsi); - } else printf("iguana_bundle_set: mismatch ht.%d vs %d\n",block->height,height); + } else printf("iguana_bundle_set: %s mismatch ht.%d vs %d\n",bits256_str(str,block->RO.hash2),block->height,height); } void iguana_hwmchain_set(struct iguana_info *coin,struct iguana_block *block,int32_t height) @@ -774,12 +1106,12 @@ void iguana_hwmchain_set(struct iguana_info *coin,struct iguana_block *block,int if ( block->height == height ) { iguana_blockcopy(coin->chain->zcash,coin->chain->auxpow,coin,(struct iguana_block *)&coin->blocks.hwmchain,block); - char str[65]; printf("SET HWM.%s ht.%d\n",bits256_str(str,block->RO.hash2),height); + char str[65]; printf("SET %s HWM.%s ht.%d\n",coin->symbol,bits256_str(str,block->RO.hash2),height); } else printf("iguana_hwmchain_set: mismatched ht.%d vs %d\n",block->height,height); } } -void iguana_mainchain_clear(struct iguana_info *coin,struct iguana_block *mainchain,struct iguana_block *oldhwm,int32_t n) +void iguana_mainchain_clear(struct supernet_info *myinfo,struct iguana_info *coin,struct iguana_block *mainchain,struct iguana_block *oldhwm,int32_t n) { int32_t i,height; char str[65]; struct iguana_block *tmp = oldhwm; if ( mainchain != oldhwm ) @@ -787,15 +1119,16 @@ void iguana_mainchain_clear(struct iguana_info *coin,struct iguana_block *mainch height = oldhwm->height; for (i=0; iRO.hash2); if ( tmp->mainchain == 0 ) - printf("%s iguana_mainchain_clear: unexpected non-main ht.%d %s\n",coin->symbol,tmp->height,str); + printf("%s iguana_mainchain_clear: ORPHANED ht.%d %s\n",coin->symbol,tmp->height,str); else if ( tmp->height != height ) printf("iguana_mainchain_clear: unexpected ht.%d vs %d %s\n",tmp->height,height,str); else { tmp->mainchain = 0; - printf("CLEAR mainchain.%d %s\n",height,str); + //printf("CLEAR %s mainchain.%d %s\n",coin->symbol,height,str); } if ( (tmp= iguana_blockfind("clear",coin,tmp->RO.prev_block)) == 0 ) { @@ -803,7 +1136,7 @@ void iguana_mainchain_clear(struct iguana_info *coin,struct iguana_block *mainch return; } } - if ( tmp != mainchain && coin->RTheight > 0 ) + if ( 0 && tmp != mainchain && coin->RTheight > 0 ) printf("iguana_mainchain_clear: unexpected mismatch ht.%d vs %d %s\n",tmp->height,mainchain->height,bits256_str(str,tmp->RO.hash2)); } } @@ -834,7 +1167,7 @@ int32_t iguana_height_estimate(struct iguana_info *coin,struct iguana_block **ma // main context, ie single threaded struct iguana_bundle *iguana_bundleset(struct supernet_info *myinfo,struct iguana_info *coin,struct iguana_block **blockp,int32_t *bundleip,struct iguana_block *origblock) { - struct iguana_block *block,*prevblock,*tmp,*mainchain,*hwmblock; bits256 zero,hash2,prevhash2; struct iguana_bundle *prevbp,*bp = 0; int32_t i,newheight,prevbundlei,bundlei = -2; // struct iguana_ramchain blockR; + struct iguana_block *block,*prevblock,*tmp,*mainchain,*hwmblock; bits256 zero,hash2,prevhash2; struct iguana_bundle *prevbp,*bp = 0; int32_t i,n,hdrsi,newheight,prevbundlei,bundlei = -2; // struct iguana_ramchain blockR; *bundleip = -2; *blockp = 0; if ( origblock == 0 ) return(0); @@ -853,17 +1186,26 @@ struct iguana_bundle *iguana_bundleset(struct supernet_info *myinfo,struct iguan { if ( (newheight= iguana_height_estimate(coin,&mainchain,block)) >= coin->blocks.hwmchain.height ) { - iguana_mainchain_clear(coin,mainchain,hwmblock,coin->blocks.hwmchain.height-mainchain->height); - tmp = block; - for (i=0; iheight; i++) + iguana_mainchain_clear(myinfo,coin,mainchain,hwmblock,coin->blocks.hwmchain.height-mainchain->height); + n = (newheight - mainchain->height); + for (i=1; iRO.prev_block)) == 0 ) - break; - iguana_RTnewblock(myinfo,coin,tmp); + hdrsi = ((mainchain->height+i) / coin->chain->bundlesize); + bundlei = ((mainchain->height+i) % coin->chain->bundlesize); + if ( hdrsi < coin->bundlescount && (bp= coin->bundles[hdrsi]) != 0 ) + { + if ( (tmp= bp->blocks[hdrsi]) != 0 && tmp->height == mainchain->height+i ) + { + iguana_bundle_set(coin,tmp,mainchain->height+i); + iguana_RTnewblock(myinfo,coin,tmp); + } else break; + } } - if ( mainchain != hwmblock ) + if ( i == n && mainchain != hwmblock ) + { iguana_hwmchain_set(coin,mainchain,mainchain->height); // trigger reprocess + iguana_RTnewblock(myinfo,coin,mainchain); + } } else if ( coin->RTheight > 0 && newheight == coin->RTheight ) { @@ -877,7 +1219,7 @@ struct iguana_bundle *iguana_bundleset(struct supernet_info *myinfo,struct iguan { if ( iguana_bundlehashadd(coin,bp,bundlei,block) < 0 ) { - if ( bp->emitfinish == 0 && block->issued == 0 && strcmp("BTC",coin->symbol) != 0 )//|| coin->PREFETCHLAG < 0) ) + if ( bp->emitfinish == 0 && bp->issued[bundlei] == 0 && block->issued == 0 && strcmp("BTC",coin->symbol) != 0 )//|| coin->PREFETCHLAG < 0) ) iguana_blockQ("bundleset",coin,bp,bundlei,block->RO.hash2,1);//coin->current == 0 || bp->hdrsi <= coin->current->hdrsi+coin->MAXBUNDLES); } //fprintf(stderr,"bundle found %d:%d\n",bp->hdrsi,bundlei); @@ -907,7 +1249,7 @@ struct iguana_bundle *iguana_bundleset(struct supernet_info *myinfo,struct iguan if ( (bp= iguana_bundlecreate(coin,bundleip,prevbp->bundleheight + coin->chain->bundlesize,hash2,zero,0)) != 0 ) { if ( bp->queued == 0 ) - iguana_bundleQ(coin,bp,1000); + iguana_bundleQ(myinfo,coin,bp,1000); } } if ( prevbundlei < coin->chain->bundlesize-1 ) @@ -959,7 +1301,7 @@ void iguana_checklongestchain(struct iguana_info *coin,struct iguana_bundle *bp, struct iguana_bundlereq *iguana_recvblockhdrs(struct supernet_info *myinfo,struct iguana_info *coin,struct iguana_bundlereq *req,struct iguana_zblock *zblocks,int32_t n,int32_t *newhwmp) { - int32_t i,bundlei,match; struct iguana_block *block; bits256 prevhash2; uint8_t serialized[sizeof(struct iguana_msgblock) + sizeof(struct iguana_msgblockhdr_zcash)]; struct iguana_peer *addr; struct iguana_bundle *bp,*firstbp = 0; + int32_t i,bundlei,match; struct iguana_block *block; bits256 prevhash2; uint8_t serialized[sizeof(struct iguana_msgblock) + sizeof(struct iguana_msgzblockhdr)]; struct iguana_peer *addr; struct iguana_bundle *bp,*firstbp = 0; if ( zblocks == 0 ) { printf("iguana_recvblockhdrs null blocks?\n"); @@ -988,8 +1330,11 @@ struct iguana_bundlereq *iguana_recvblockhdrs(struct supernet_info *myinfo,struc if ( (bp= iguana_bundleset(myinfo,coin,&block,&bundlei,(struct iguana_block *)&zblocks[i])) != 0 ) { bp->dirty++; - if ( 0 && bp->issued[bundlei] == 0 && bp->hdrsi < coin->MAXBUNDLES ) - iguana_blockQ("recvhdr",coin,bp,bundlei,block->RO.hash2,1); + if ( bp->issued[bundlei] == 0 && coin->RTheight > 0 ) + { + bp->issued[bundlei] = 0; + iguana_blockQ("recvhdr",coin,bp,bundlei,block->RO.hash2,0); + } //printf("{%d:%d} ",bp->hdrsi,bundlei); if ( i == 0 ) { @@ -1018,7 +1363,7 @@ struct iguana_bundlereq *iguana_recvblockhdrs(struct supernet_info *myinfo,struc if ( firstbp->queued == 0 ) { //fprintf(stderr,"firstbp blockQ %d\n",firstbp->bundleheight); - iguana_bundleQ(coin,firstbp,1000); + iguana_bundleQ(myinfo,coin,firstbp,1000); } } if ( i == n && i == match && firstbp == coin->current && (addr= req->addr) != 0 ) @@ -1026,7 +1371,7 @@ struct iguana_bundlereq *iguana_recvblockhdrs(struct supernet_info *myinfo,struc addr->RThashes[i] = firstbp->hashes[0]; for (i=1; ichain,&addr->RThashes[i],serialized,(struct iguana_block *)&zblocks[i]); + iguana_serialize_block(myinfo,coin->chain,&addr->RThashes[i],serialized,(struct iguana_block *)&zblocks[i]); } //memcpy(addr->RThashes,blockhashes,bp->numspec * sizeof(*addr->RThashes)); addr->numRThashes = n; @@ -1035,7 +1380,7 @@ struct iguana_bundlereq *iguana_recvblockhdrs(struct supernet_info *myinfo,struc return(req); } -void iguana_autoextend(struct iguana_info *coin,struct iguana_bundle *bp) +void iguana_autoextend(struct supernet_info *myinfo,struct iguana_info *coin,struct iguana_bundle *bp) { char hashstr[65]; struct iguana_bundle *newbp; int32_t bundlei; static const bits256 zero; if ( bp->hdrsi == coin->bundlescount-1 && bits256_nonz(bp->nextbundlehash2) != 0 ) @@ -1058,7 +1403,7 @@ void iguana_autoextend(struct iguana_info *coin,struct iguana_bundle *bp) queue_enqueue("hdrsQ",&coin->hdrsQ,queueitem(hashstr),1); //char str[65],str2[65]; printf("EXTEND last bundle %s/%s ht.%d\n",bits256_str(str,newbp->hashes[0]),bits256_str(str2,bp->nextbundlehash2),newbp->bundleheight); if ( newbp->queued == 0 ) - iguana_bundleQ(coin,newbp,1000); + iguana_bundleQ(myinfo,coin,newbp,1000); } } } @@ -1101,7 +1446,7 @@ struct iguana_bundlereq *iguana_recvblockhashes(struct supernet_info *myinfo,str } //printf("call allhashes\n"); if ( 0 && bp->hdrsi == coin->bundlescount-1 ) - iguana_autoextend(coin,bp); + iguana_autoextend(myinfo,coin,bp); if ( iguana_allhashcmp(myinfo,coin,bp,blockhashes,num) > 0 ) return(req); //printf("done allhashes\n"); @@ -1118,22 +1463,22 @@ struct iguana_bundlereq *iguana_recvblockhashes(struct supernet_info *myinfo,str } } } - if ( strcmp("BTC",coin->symbol) != 0 && (bp->speculative == 0 || num > bp->numspec) && bp->emitfinish == 0 ) + if ( strcmp("BTCD",coin->symbol) == 0 && (bp->speculative == 0 || num > bp->numspec) && bp->emitfinish == 0 ) { //printf("FOUND speculative.%s BLOCKHASHES[%d] ht.%d\n",bits256_str(str,blockhashes[1]),num,bp->bundleheight); if ( bp->speculative == 0 ) { bp->speculative = mycalloc('s',bp->n+1,sizeof(*bp->speculative)); - for (i=0; in; i++) - if ( GETBIT(bp->haveblock,i) == 0 ) - bp->issued[i] = 0; - iguana_bundleissuemissing(myinfo,coin,bp,3,1.); + //for (i=0; in; i++) + // if ( GETBIT(bp->haveblock,i) == 0 ) + // bp->issued[i] = 0; + //iguana_bundleissuemissing(myinfo,coin,bp,3,1.); } for (i=1; in; i++) { bp->speculative[i] = blockhashes[i]; - //if ( bp->blocks[i] == 0 || bp->blocks[i]->issued == 0 ) - // iguana_blockQ("speculate",coin,bp,-i,blockhashes[i],0); + if ( bp->blocks[i] == 0 || bp->blocks[i]->issued == 0 ) + iguana_blockQ("speculate",coin,bp,-i,blockhashes[i],0); if ( bp->blocks[i] == 0 ) bp->blocks[i] = iguana_blockhashset("recvhashes3",coin,bp->bundleheight+i,blockhashes[i],1); //printf("speculate new issue [%d:%d]\n",bp->hdrsi,i); @@ -1198,7 +1543,7 @@ struct iguana_bundlereq *iguana_recvblockhashes(struct supernet_info *myinfo,str { if ( (block= iguana_blockfind("recvhashes2",coin,blockhashes[1])) == 0 ) { - iguana_blockhashset("recvhashes3",coin,-1,blockhashes[1],1); + //iguana_blockhashset("recvhashes3",coin,-1,blockhashes[1],1); if ( (block= iguana_blockfind("recvhashes4",coin,blockhashes[1])) != 0 ) iguana_blockQ("recvhash6",coin,0,-6,blockhashes[1],1); // should be RT block } @@ -1208,9 +1553,9 @@ struct iguana_bundlereq *iguana_recvblockhashes(struct supernet_info *myinfo,str } if ( strcmp("BTC",coin->symbol) != 0 ) { - iguana_blockQ("recvhash7",coin,0,-7,blockhashes[1],1); + //iguana_blockQ("recvhash7",coin,0,-7,blockhashes[1],1); iguana_blockQ("recvhash7",coin,0,-7,blockhashes[num-1],1); - //if ( 1 && coin->RTheight > 0 ) + if ( 1 && coin->RTheight > 0 ) { for (i=1; isymbol) == 0 ) - printf("%s received.(%s) %s\n",coin->symbol,bits256_str(str,origblock->RO.hash2),addr->ipaddr); if ( (block= iguana_blockfind("recv",coin,origblock->RO.hash2)) != 0 ) iguana_blockcopy(coin->chain->zcash,coin->chain->auxpow,coin,block,(struct iguana_block *)origblock); else if ( (block= iguana_blockhashset("recvblock",coin,-1,origblock->RO.hash2,1)) == 0 ) @@ -1240,12 +1583,17 @@ struct iguana_bundlereq *iguana_recvblock(struct supernet_info *myinfo,struct ig } if ( bits256_nonz(origblock->RO.prev_block) != 0 ) { - if ( (prevblock= iguana_blockfind("prev",coin,origblock->RO.prev_block)) != 0 && prevblock->height+1 > coin->longestchain ) - coin->longestchain = prevblock->height+1; - else iguana_blockQ("prev",coin,0,-1,origblock->RO.prev_block,1); + if ( (prevblock= iguana_blockfind("prev",coin,origblock->RO.prev_block)) != 0 ) + { + if ( prevblock->height+1 > coin->longestchain ) + coin->longestchain = prevblock->height+1; + } else iguana_blockQ("prev",coin,0,-1,origblock->RO.prev_block,1); } + //printf("%s received.(%s) %s\n",coin->symbol,bits256_str(str,origblock->RO.hash2),addr->ipaddr); if ( (bp= iguana_bundleset(myinfo,coin,&block,&bundlei,(struct iguana_block *)origblock)) != 0 && bp == coin->current && block != 0 && bp->speculative != 0 && bundlei >= 0 ) { + if ( 0 && strcmp("BTCD",coin->symbol) == 0 ) + printf("%s received.(%s) %s\n",coin->symbol,bits256_str(str,origblock->RO.hash2),addr->ipaddr); if ( bp->speculative != 0 && bp->numspec <= bundlei ) { bp->speculative[bundlei] = block->RO.hash2; @@ -1258,7 +1606,7 @@ struct iguana_bundlereq *iguana_recvblock(struct supernet_info *myinfo,struct ig block = iguana_bundleblock(coin,&hash2,bp,bundlei); } //printf("autoadd [%d:%d]\n",bp->hdrsi,bundlei); - } // else printf("couldnt find.(%s)\n",bits256_str(str,block->RO.hash2)); + } //else printf("couldnt find.(%s)\n",bits256_str(str,block->RO.hash2)); if ( bp != 0 ) { bp->dirty++; @@ -1374,12 +1722,11 @@ int32_t iguana_reqblocks(struct supernet_info *myinfo,struct iguana_info *coin) int32_t hdrsi,lflag,bundlei,iters=0,flag = 0; bits256 hash2; struct iguana_block *next,*block; struct iguana_bundle *bp; if ( (block= iguana_blockfind("hwmcheck",coin,coin->blocks.hwmchain.RO.hash2)) == 0 || block->mainchain == 0 || block->height != coin->blocks.hwmchain.height ) { - printf("HWM mismatch ht.%d vs %d or not mainchain.%d\n",block->height,coin->blocks.hwmchain.height,block->mainchain); + //printf("HWM %s mismatch ht.%d vs %d or not mainchain.%d\n",coin->symbol,block->height,coin->blocks.hwmchain.height,block->mainchain); if ( coin->blocks.hwmchain.height > 0 ) { if ( (block= iguana_blockfind("hwmcheckb",coin,coin->blocks.hwmchain.RO.prev_block)) != 0 ) { - printf("decrement HWM\n"); iguana_blockzcopy(coin->chain->zcash,(struct iguana_block *)&coin->blocks.hwmchain,block); return(0); } @@ -1531,7 +1878,8 @@ int32_t iguana_processrecvQ(struct supernet_info *myinfo,struct iguana_info *coi *newhwmp = 0; while ( flag < IGUANA_MAXITERATIONS && coin->active != 0 && (req= queue_dequeue(&coin->recvQ,0)) != 0 ) { - flag++; + if ( req->type != 'H' ) + flag++; //fprintf(stderr,"%s flag.%d %s recvQ.%p type.%c n.%d\n",coin->symbol,flag,req->addr != 0 ? req->addr->ipaddr : "0",req,req->type,req->n); if ( req->type == 'B' ) // one block with all txdata { @@ -1574,9 +1922,9 @@ int32_t iguana_processrecvQ(struct supernet_info *myinfo,struct iguana_info *coi int32_t iguana_needhdrs(struct iguana_info *coin) { - if ( coin->longestchain == 0 || coin->blocks.hashblocks < coin->longestchain-coin->chain->bundlesize ) + //if ( coin->longestchain == 0 || coin->blocks.hashblocks < coin->longestchain-coin->chain->bundlesize ) return(1); - else return(0); + //else return(0); } int32_t iguana_reqhdrs(struct iguana_info *coin) @@ -1591,25 +1939,30 @@ int32_t iguana_reqhdrs(struct iguana_info *coin) if ( (bp= coin->bundles[i]) != 0 && (bp == coin->current || bp->hdrsi == coin->blocks.hwmchain.height/coin->chain->bundlesize || i == coin->bundlescount-1 || bp->numhashes < bp->n) ) { if ( bp == coin->current ) - lag = 13; + lag = 7; + else if ( coin->current == 0 || bp->hdrsi > coin->current->hdrsi+coin->MAXBUNDLES ) + continue; else lag = 17; if ( time(NULL) > bp->issuetime+lag ) { if ( 0 && bp == coin->current ) - printf("LAG.%ld hdrsi.%d numhashes.%d:%d needhdrs.%d qsize.%d zcount.%d\n",time(NULL)-bp->hdrtime,i,bp->numhashes,bp->n,iguana_needhdrs(coin),queue_size(&coin->hdrsQ),coin->zcount); + printf("LAG.%d hdrsi.%d numhashes.%d:%d needhdrs.%d qsize.%d zcount.%d\n",(uint32_t)(time(NULL)-bp->hdrtime),i,bp->numhashes,bp->n,iguana_needhdrs(coin),queue_size(&coin->hdrsQ),coin->zcount); if ( bp->issuetime == 0 ) coin->numpendings++; init_hexbytes_noT(hashstr,bp->hashes[0].bytes,sizeof(bits256)); queue_enqueue("hdrsQ",&coin->hdrsQ,queueitem(hashstr),1); - if ( bp == coin->current && coin->blocks.hwmchain.height > 100 ) + if ( bp == coin->current ) { init_hexbytes_noT(hashstr,bp->hashes[0].bytes,sizeof(bits256)); queue_enqueue("hdrsQ",&coin->hdrsQ,queueitem(hashstr),1); //printf("%s issue HWM HDRS [%d] %s\n",coin->symbol,bp->hdrsi,hashstr); - bits256 hash2 = iguana_blockhash(coin,coin->blocks.hwmchain.height-10); - init_hexbytes_noT(hashstr,hash2.bytes,sizeof(bits256)); - //printf("%s issue HWM HDRS %d-10 %s\n",coin->symbol,coin->blocks.hwmchain.height,hashstr); - queue_enqueue("hdrsQ",&coin->hdrsQ,queueitem(hashstr),1); + if ( coin->blocks.hwmchain.height > 10 ) + { + bits256 hash2 = iguana_blockhash(coin,coin->blocks.hwmchain.height-10); + init_hexbytes_noT(hashstr,hash2.bytes,sizeof(bits256)); + //printf("%s issue HWM HDRS %d-10 %s\n",coin->symbol,coin->blocks.hwmchain.height,hashstr); + queue_enqueue("hdrsQ",&coin->hdrsQ,queueitem(hashstr),1); + } } //printf("hdrsi.%d reqHDR.(%s) numhashes.%d\n",bp->hdrsi,hashstr,bp->numhashes); if ( 1 ) @@ -1690,8 +2043,13 @@ int32_t iguana_blockQ(char *argstr,struct iguana_info *coin,struct iguana_bundle return(0); height = block->height; } - if ( bp != 0 && bp->emitfinish != 0 ) - return(0); + if ( bp != 0 ) + { + if ( bp->emitfinish != 0 ) + return(0); + if ( coin->RTheight == 0 && bp->issued[bundlei] > 0 ) + return(0); + } if ( priority != 0 ) str = "priorityQ", Q = &coin->priorityQ; else str = "blocksQ", Q = &coin->blocksQ; @@ -1842,7 +2200,7 @@ int32_t iguana_processrecv(struct supernet_info *myinfo,struct iguana_info *coin int32_t newhwm = 0,hwmheight,flag = 0; char str[2000]; hwmheight = coin->blocks.hwmchain.height; coin->RTramchain_busy = 1; - if ( coin->balanceflush != 0 ) + if ( coin->balanceflush != 0 && coin->longestchain > coin->chain->bundlesize ) { fprintf(stderr,"%s call balanceflush\n",coin->symbol); //portable_mutex_lock(&coin->RTmutex); @@ -1866,10 +2224,10 @@ int32_t iguana_processrecv(struct supernet_info *myinfo,struct iguana_info *coin } } flag += iguana_processrecvQ(myinfo,coin,&newhwm); - if ( coin->RTheight == 0 || (rand() % 30) == 0 ) + if ( coin->RTheight == 0 || (rand() % 7) == 0 ) flag += iguana_reqblocks(myinfo,coin); iguana_jsonQ(myinfo,coin); - if ( time(NULL) > coin->laststats+30 ) + if ( time(NULL) > coin->laststats+3 ) { flag += iguana_reqhdrs(coin); iguana_bundlestats(myinfo,coin,str,IGUANA_DEFAULTLAG); diff --git a/iguana/iguana_rpc.c b/iguana/iguana_rpc.c index 2d30cf1c9..871fe8cc2 100755 --- a/iguana/iguana_rpc.c +++ b/iguana/iguana_rpc.c @@ -23,7 +23,7 @@ char *sglue(GLUEARGS,char *agent,char *method) { - char *retstr,*rpcretstr,*walletstr,checkstr[64],dcheckstr[64]; cJSON *retjson,*tmpjson,*result,*error,*wallet; int32_t i,j,len; int64_t val; double dval; + char *retstr,*rpcretstr,*walletstr,checkstr[65],dcheckstr[65]; cJSON *retjson,*tmpjson,*result,*error,*wallet; int32_t i,j,len; int64_t val; double dval; if ( json == 0 ) json = cJSON_CreateObject(); //printf("sglue.(%s)\n",jprint(json,0)); @@ -1107,7 +1107,7 @@ void iguana_rpcloop(void *args) sock = accept(bindsock,(struct sockaddr *)&cli_addr,&clilen); if ( sock < 0 ) { - //printf("iguana_rpcloop ERROR on accept usock.%d\n",sock); + //printf("iguana_rpcloop ERROR on accept usock.%d errno %d %s\n",sock,errno,strerror(errno)); continue; } memcpy(&ipbits,&cli_addr.sin_addr.s_addr,sizeof(ipbits)); diff --git a/iguana/iguana_scripts.c b/iguana/iguana_scripts.c index 1e6ad9a67..6e9220a43 100755 --- a/iguana/iguana_scripts.c +++ b/iguana/iguana_scripts.c @@ -91,11 +91,11 @@ int32_t bitcoin_p2shscript(uint8_t *script,int32_t n,const uint8_t *p2shscript,c script[n++] = (p2shlen & 0xff); script[n++] = ((p2shlen >> 8) & 0xff); } - else + else if ( p2shlen > 76 ) { script[n++] = 0x4c; script[n++] = p2shlen; - } + } else script[n++] = p2shlen; memcpy(&script[n],p2shscript,p2shlen), n += p2shlen; return(n); } @@ -287,7 +287,7 @@ int32_t iguana_scriptgen(struct iguana_info *coin,int32_t *Mp,int32_t *nump,char int32_t _iguana_calcrmd160(struct iguana_info *coin,struct vin_info *vp) { static uint8_t zero_rmd160[20]; - char hexstr[8192]; uint8_t sha256[32],*script,type; int32_t i,n,m,plen; + char hexstr[8192]; uint8_t *script,type; int32_t i,n,m,plen; vp->N = 1; vp->M = 1; type = IGUANA_SCRIPT_STRANGE; @@ -301,7 +301,6 @@ int32_t _iguana_calcrmd160(struct iguana_info *coin,struct vin_info *vp) //vcalc_sha256(0,sha256,vp->spendscript,vp->spendlen); // e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 //calc_rmd160(0,zero_rmd160,sha256,sizeof(sha256)); // b472a266d0bd89c13706a4132ccfb16f7c3b9fcb init_hexbytes_noT(hexstr,zero_rmd160,20); - char str[65]; printf("iguana_calcrmd160 zero len %s -> %s\n",bits256_str(str,*(bits256 *)sha256),hexstr); } memcpy(vp->rmd160,zero_rmd160,sizeof(zero_rmd160)); return(IGUANA_SCRIPT_NULL); @@ -447,6 +446,18 @@ int32_t iguana_calcrmd160(struct iguana_info *coin,char *asmstr,struct vin_info return(vp->type); } +char *iguana_scriptaddress(struct iguana_info *coin,char *coinaddr,uint8_t *script,int32_t scriptlen) +{ + struct vin_info V; + iguana_calcrmd160(coin,0,&V,script,scriptlen,GENESIS_PUBKEY,0,0xffffffff); + if ( V.coinaddr[0] != 0 ) + { + strcpy(coinaddr,V.coinaddr); + return(coinaddr); + } + return(0); +} + //error memalloc mem.0x7f6fc6e4a2a8 94.242.229.158 alloc 1 used 2162688 totalsize.2162688 -> 94.242.229.158 (nil) int32_t bitcoin_scriptget(struct iguana_info *coin,int32_t *hashtypep,uint32_t *sigsizep,uint32_t *pubkeysizep,uint8_t **userdatap,uint32_t *userdatalenp,struct vin_info *vp,uint8_t *scriptsig,int32_t len,int32_t spendtype) @@ -495,7 +506,8 @@ int32_t bitcoin_scriptget(struct iguana_info *coin,int32_t *hashtypep,uint32_t * } vp->numpubkeys = j; *userdatap = &scriptsig[n]; - *userdatalenp = (len - n); + if ( len > n ) + *userdatalenp = (len - n); p2shscript = 0; while ( n < len ) { @@ -681,6 +693,8 @@ int32_t iguana_vinscriptdecode(struct iguana_info *coin,struct iguana_ramchain * if ( p2shlen > 0 && p2shlen < IGUANA_MAXSCRIPTSIZE ) { if ( p2shlen <= 75 ) + _script[scriptlen++] = p2shlen; + else if ( p2shlen <= 0xff ) _script[scriptlen++] = 0x4c, _script[scriptlen++] = p2shlen; else _script[scriptlen++] = 0x4d, _script[scriptlen++] = p2shlen & 0xff, _script[scriptlen++] = (p2shlen>>8) & 0xff; //printf("p2shlen.%d\n",p2shlen); diff --git a/iguana/iguana_secp.c b/iguana/iguana_secp.c index 2e25b0ecc..7b98ec25c 100755 --- a/iguana/iguana_secp.c +++ b/iguana/iguana_secp.c @@ -68,7 +68,7 @@ bits256 bitcoin_pubkey33(secp256k1_context *ctx,uint8_t *data,bits256 privkey) { if ( secp256k1_ec_seckey_verify(ctx,privkey.bytes) == 0 ) { - printf("bitcoin_sign illegal privkey\n"); + //printf("bitcoin_sign illegal privkey\n"); return(pubkey); } if ( secp256k1_ec_pubkey_create(ctx,&secppub,privkey.bytes) != 0 ) @@ -108,7 +108,7 @@ int32_t bitcoin_sign(void *ctx,char *symbol,uint8_t *sig,bits256 txhash2,bits256 { if ( secp256k1_ec_seckey_verify(ctx,privkey.bytes) == 0 ) { - printf("bitcoin_sign illegal privkey\n"); + //printf("bitcoin_sign illegal privkey\n"); return(-1); } if ( secp256k1_context_randomize(ctx,seed.bytes) != 0 ) diff --git a/iguana/iguana_sign.c b/iguana/iguana_sign.c index 5578e76ea..8204993c3 100755 --- a/iguana/iguana_sign.c +++ b/iguana/iguana_sign.c @@ -62,7 +62,7 @@ int32_t iguana_vinparse(struct iguana_info *coin,int32_t rwflag,uint8_t *seriali else { if ( msg->vinscript != 0 && msg->scriptlen > 0 ) - memcpy(&serialized[len],msg->vinscript,msg->scriptlen), len += msg->scriptlen; // pubkeys here + memcpy(&serialized[len],msg->vinscript,msg->scriptlen), len += msg->scriptlen; // pubkeys here if ( msg->userdatalen > 0 && msg->userdata != 0 ) { //printf("userdata.%d scriptlen.%d\n",msg->userdatalen,msg->scriptlen); @@ -111,14 +111,17 @@ int32_t iguana_voutparse(int32_t rwflag,uint8_t *serialized,struct iguana_msgvou } if ( rwflag == 0 ) msg->pk_script = &serialized[len]; - else memcpy(&serialized[len],msg->pk_script,msg->pk_scriptlen); - if ( 0 ) + else if ( msg->pk_scriptlen > 0 ) { - int32_t i; - for (i=0; ipk_scriptlen; i++) - printf("%02x",msg->pk_script[i]); - printf(" [%p] scriptlen.%d rwflag.%d %.8f\n",msg->pk_script,msg->pk_scriptlen,rwflag,dstr(msg->value)); - } + memcpy(&serialized[len],msg->pk_script,msg->pk_scriptlen); + if ( 0 ) + { + int32_t i; + for (i=0; ipk_scriptlen; i++) + printf("%02x",msg->pk_script[i]); + printf(" [%p] scriptlen.%d rwflag.%d %.8f\n",msg->pk_script,msg->pk_scriptlen,rwflag,dstr(msg->value)); + } + } // else serialized[len++] = 0; len += msg->pk_scriptlen; return(len); } @@ -154,7 +157,10 @@ int32_t iguana_parsehexstr(uint8_t **destp,uint16_t *lenp,uint8_t *dest2,int32_t n = (int32_t)strlen(hexstr) >> 1; //printf("addhex.(%s) %d\n",hexstr,n); if ( serialized == 0 ) - serialized = *destp; + { + if ( (serialized= *destp) == 0 ) + printf("iguana_parsehexstr null serialized and destp\n"); + } if ( serialized != 0 ) { decode_hex(serialized,n,hexstr); @@ -171,7 +177,7 @@ int32_t iguana_parsehexstr(uint8_t **destp,uint16_t *lenp,uint8_t *dest2,int32_t int32_t iguana_parsevinobj(struct supernet_info *myinfo,struct iguana_info *coin,uint8_t *serialized,int32_t maxsize,struct iguana_msgvin *vin,cJSON *vinobj,struct vin_info *V) { - struct iguana_waddress *waddr; struct iguana_waccount *wacct; uint8_t lastbyte; uint32_t tmp=0; int32_t i,n,starti,suppress_pubkeys,siglen,plen,m,rwflag=1,need_op0=0,len = 0; char *userdata,*pubkeystr,*hexstr = 0,*redeemstr = 0,*spendstr = 0; cJSON *scriptjson = 0,*obj,*pubkeysjson = 0; + struct iguana_outpoint outpt; struct iguana_waddress *waddr; struct iguana_waccount *wacct; uint8_t lastbyte; uint32_t tmp=0; int32_t i,n,starti,suppress_pubkeys,siglen,plen,m,rwflag=1,need_op0=0,len = 0; char *userdata=0,*pubkeystr,*hexstr = 0,*redeemstr = 0,*spendstr = 0; cJSON *scriptjson = 0,*obj,*pubkeysjson = 0; //printf("PARSEVIN.(%s) vin.%p\n",jprint(vinobj,0),vin); if ( V == 0 ) memset(vin,0,sizeof(*vin)); @@ -218,8 +224,9 @@ int32_t iguana_parsevinobj(struct supernet_info *myinfo,struct iguana_info *coin { if ( vin->vinscript == 0 ) { - if ( (V->unspentind= iguana_RTunspentindfind(myinfo,coin,V->coinaddr,V->spendscript,&V->spendlen,&V->amount,&V->height,vin->prev_hash,vin->prev_vout,coin->bundlescount-1,0)) > 0 ) + if ( iguana_RTunspentindfind(myinfo,coin,&outpt,V->coinaddr,V->spendscript,&V->spendlen,&V->amount,&V->height,vin->prev_hash,vin->prev_vout,coin->bundlescount-1,0) == 0 ) { + V->unspentind = outpt.unspentind; if ( V->coinaddr[0] != 0 && (waddr= iguana_waddresssearch(myinfo,&wacct,V->coinaddr)) != 0 ) { memcpy(V->signers[0].pubkey,waddr->pubkey,bitcoin_pubkeylen(waddr->pubkey)); @@ -236,7 +243,7 @@ int32_t iguana_parsevinobj(struct supernet_info *myinfo,struct iguana_info *coin if ( hexstr != 0 ) { n = (int32_t)strlen(hexstr) >> 1; - printf("add.(%s) offset.%d\n",hexstr,len); + //printf("add.(%s) offset.%d\n",hexstr,len); vin->vinscript = &serialized[len]; decode_hex(&serialized[len],n,hexstr); vin->scriptlen = n + need_op0; @@ -253,8 +260,7 @@ int32_t iguana_parsevinobj(struct supernet_info *myinfo,struct iguana_info *coin i++; } if ( m != n ) - printf("ERROR: "); - printf("len.%d n.%d i.%d\n",m,n,i); + printf("ERROR: len.%d n.%d i.%d\n",m,n,i); } len += n; } //else printf("iguana_parsevinobj: hex script missing (%s)\n",jprint(vinobj,0)); @@ -289,7 +295,7 @@ int32_t iguana_parsevinobj(struct supernet_info *myinfo,struct iguana_info *coin if ( userdata != 0 ) { n = iguana_parsehexstr(&vin->userdata,&vin->userdatalen,V!=0?V->userdata:0,V!=0?&V->userdatalen:0,&serialized[len],userdata); - printf("parsed userdata.%d\n",n); + //printf("parsed userdata.%d\n",n); len += n; } //printf("len.%d: ",len); @@ -313,16 +319,36 @@ int32_t iguana_parsevinobj(struct supernet_info *myinfo,struct iguana_info *coin len += n; } tmp = (len - starti); - for (i=0; i> 8) & 0xff); + if ( tmp < 76 ) + { + serialized[starti-3] = tmp; + for (i=starti-2; i> 8) & 0xff); + } //printf("output sequence.[%d] <- %x\n",len,vin->sequence); len += iguana_rwnum(rwflag,&serialized[len],sizeof(vin->sequence),&vin->sequence); if ( spendstr != 0 ) { - n = iguana_parsehexstr(&vin->spendscript,&vin->spendlen,V!=0?V->spendscript:0,V!=0?&V->spendlen:0,0,spendstr); + //printf("serialized.%p len.%d\n",serialized,len); + n = iguana_parsehexstr(&vin->spendscript,&vin->spendlen,V!=0?V->spendscript:0,V!=0?&V->spendlen:0,&serialized[len],spendstr); + len += n; } return(len); } @@ -345,8 +371,8 @@ int32_t iguana_parsevoutobj(struct iguana_info *coin,uint8_t *serialized,int32_t decode_hex(&serialized[len],n,hexstr); vout->pk_script = &serialized[len]; len += n; - } - } + } // else serialized[len++] = 0; + } //else serialized[len++] = 0; return(len); } @@ -425,7 +451,7 @@ bits256 bitcoin_sigtxid(struct iguana_info *coin,int32_t height,uint8_t *seriali dest.vins[i].redeemscript = 0; } len = iguana_rwmsgtx(coin,height,1,0,serialized,maxlen,&dest,&txid,vpnstr,0,0,0,suppress_pubkeys); - if ( len > 0 ) + if ( len > 0 ) // (dest.tx_in != 1 || bits256_nonz(dest.vins[0].prev_hash) != 0) && dest.vins[0].scriptlen > 0 && { #ifdef BTC2_VERSION if ( height >= BTC2_HARDFORK_HEIGHT ) @@ -525,7 +551,7 @@ int32_t iguana_rwmsgtx(struct iguana_info *coin,int32_t height,int32_t rwflag,cJ } for (i=0; itx_out; i++) { - //printf("vout.%d starts %d\n",i,len); + //printf("rwflag.%d vout.%d starts %d\n",rwflag,i,len); if ( (n= iguana_voutparse(rwflag,&serialized[len],&msg->vouts[i])) < 0 ) return(-1); len += n; @@ -543,7 +569,7 @@ int32_t iguana_rwmsgtx(struct iguana_info *coin,int32_t height,int32_t rwflag,cJ jaddnum(json,"numvouts",msg->tx_out); } len += iguana_rwnum(rwflag,&serialized[len],sizeof(msg->lock_time),&msg->lock_time); - //printf("lock_time.%08x\n",msg->lock_time); + //printf("lock_time.%08x len.%d\n",msg->lock_time,len); if ( strcmp(coin->symbol,"VPN") == 0 ) { uint16_t ddosflag = 0; @@ -602,11 +628,12 @@ bits256 iguana_parsetxobj(struct supernet_info *myinfo,struct iguana_info *coin, return(txid); maxsize -= (sizeof(struct iguana_msgvin) * msg->tx_in); msg->vins = (struct iguana_msgvin *)&serialized[maxsize]; + memset(msg->vins,0,sizeof(struct iguana_msgvin) * msg->tx_in); if ( msg->tx_in > 0 && msg->tx_in*sizeof(struct iguana_msgvin) < maxsize ) { for (i=0; itx_in; i++) { - //printf("vinobj.%d starts offset.%d\n",i,len); + //printf("parsetxobj vinobj.%d starts offset.%d\n",i,len); len += iguana_parsevinobj(myinfo,coin,&serialized[len],maxsize,&msg->vins[i],jitem(array,i),V!=0?&V[i]:0); } } @@ -619,11 +646,12 @@ bits256 iguana_parsetxobj(struct supernet_info *myinfo,struct iguana_info *coin, return(txid); maxsize -= (sizeof(struct iguana_msgvout) * msg->tx_out); msg->vouts = (struct iguana_msgvout *)&serialized[maxsize]; + memset(msg->vouts,0,sizeof(struct iguana_msgvout) * msg->tx_out); if ( msg->tx_out > 0 && msg->tx_out*sizeof(struct iguana_msgvout) < maxsize ) { for (i=0; itx_out; i++) { - //printf("parsevout.%d starts %d\n",i,len); + //printf("parsetxobj parsevout.%d starts %d\n",i,len); len += iguana_parsevoutobj(coin,&serialized[len],maxsize,&msg->vouts[i],jitem(array,i)); } } @@ -634,17 +662,6 @@ bits256 iguana_parsetxobj(struct supernet_info *myinfo,struct iguana_info *coin, *txstartp = 0; msg->allocsize = len; msg->txid = txid = bits256_doublesha256(0,serialized,len); - //for (i=0; isuppress_pubkeys:0)) != msg->allocsize ) - { - //memset(txid.bytes,0,sizeof(txid)); - printf("error parsing txobj: expected %d got %d\n",msg->allocsize,len); - //msg->allocsize = 0; - } - msg->txid = txid;*/ - //char str[65]; printf("json -> %s\n",bits256_str(str,txid)); return(txid); } @@ -701,6 +718,8 @@ cJSON *bitcoin_data2json(struct iguana_info *coin,int32_t height,bits256 *txidp, jaddstr(txobj,"error","couldnt decode transaction"); jaddstr(txobj,"coin",coin->symbol); } + if ( n != len ) + printf("data2json n.%d vs len.%d\n",n,len); return(txobj); } @@ -711,7 +730,7 @@ cJSON *bitcoin_hex2json(struct iguana_info *coin,int32_t height,bits256 *txidp,s return(0); len = (int32_t)strlen(txbytes) >> 1; if ( (serialized= origserialized) == 0 ) - serialized = calloc(1,len); + serialized = calloc(1,len+4096); decode_hex(serialized,len,txbytes); txobj = bitcoin_data2json(coin,height,txidp,msgtx,extraspace,extralen,serialized,len,vins,suppress_pubkeys); if ( serialized != origserialized ) @@ -783,7 +802,7 @@ int32_t iguana_msgtx_Vset(struct iguana_info *coin,uint8_t *serialized,int32_t m msgtx->vins[vini].userdatalen = userdatalen; scriptlen += userdatalen; } - printf("USERDATALEN.%d scriptlen.%d redeemlen.%d\n",userdatalen,scriptlen,p2shlen); + //printf("USERDATALEN.%d scriptlen.%d redeemlen.%d\n",userdatalen,scriptlen,p2shlen); if ( p2shlen != 0 ) { if ( p2shlen < 76 ) @@ -814,7 +833,7 @@ int32_t iguana_msgtx_Vset(struct iguana_info *coin,uint8_t *serialized,int32_t m return(len); } -int32_t bitcoin_verifyvins(struct iguana_info *coin,int32_t height,bits256 *signedtxidp,char **signedtx,struct iguana_msgtx *msgtx,uint8_t *serialized,int32_t maxlen,struct vin_info *V,int32_t sighash,int32_t signtx,int32_t suppress_pubkeys) +int32_t bitcoin_verifyvins(struct iguana_info *coin,int32_t height,bits256 *signedtxidp,char **signedtx,struct iguana_msgtx *msgtx,uint8_t *serialized,int32_t maxlen,struct vin_info *V,uint32_t sighash,int32_t signtx,int32_t suppress_pubkeys) { bits256 sigtxid; uint8_t *sig; struct vin_info *vp; char vpnstr[64]; int32_t complete=0,plen,j,vini=0,flag=0,siglen,numvouts,numsigs; numvouts = msgtx->tx_out; @@ -855,7 +874,7 @@ int32_t bitcoin_verifyvins(struct iguana_info *coin,int32_t height,bits256 *sign if ( bitcoin_verify(coin->ctx,sig,siglen-1,sigtxid,vp->signers[j].pubkey,bitcoin_pubkeylen(vp->signers[j].pubkey)) < 0 ) { - printf("SIG.%d.%d ERROR\n",vini,j); + //printf("SIG.%d.%d ERROR siglen.%d\n",vini,j,siglen); } else { @@ -866,8 +885,8 @@ int32_t bitcoin_verifyvins(struct iguana_info *coin,int32_t height,bits256 *sign printf("%02x",sig[z]); printf(" <- sig[%d]n\n",j); for (z=0; z<33; z++) - printf("%02x",vp->signers[j].pubkey[z]); - printf(" <- pub, SIG.%d.%d VERIFIED numsigs.%d vs M.%d\n",vini,j,numsigs,vp->M);*/ + printf("%02x",vp->signers[j].pubkey[z]);*/ + //printf(" <- pub, SIG.%d.%d VERIFIED numsigs.%d vs M.%d\n",vini,j,numsigs,vp->M); } } if ( numsigs >= vp->M ) @@ -877,14 +896,14 @@ int32_t bitcoin_verifyvins(struct iguana_info *coin,int32_t height,bits256 *sign iguana_msgtx_Vset(coin,serialized,maxlen,msgtx,V); cJSON *txobj = cJSON_CreateObject(); *signedtx = iguana_rawtxbytes(coin,height,txobj,msgtx,suppress_pubkeys); - printf("SIGNEDTX.(%s)\n",jprint(txobj,1)); + //printf("SIGNEDTX.(%s)\n",jprint(txobj,1)); *signedtxidp = msgtx->txid; return(complete); } int32_t iguana_vininfo_create(struct supernet_info *myinfo,struct iguana_info *coin,uint8_t *serialized,int32_t maxsize,struct iguana_msgtx *msgtx,cJSON *vins,int32_t numinputs,struct vin_info *V) { - int32_t i,plen,finalized = 1,len = 0; struct vin_info *vp; struct iguana_waccount *wacct; struct iguana_waddress *waddr; uint32_t sigsize,pubkeysize,p2shsize,userdatalen; + struct iguana_outpoint outpt; int32_t i,plen,finalized = 1,len = 0; struct vin_info *vp; struct iguana_waccount *wacct; struct iguana_waddress *waddr; uint32_t sigsize,pubkeysize,p2shsize,userdatalen; msgtx->tx_in = numinputs; maxsize -= (sizeof(struct iguana_msgvin) * msgtx->tx_in); msgtx->vins = (struct iguana_msgvin *)&serialized[maxsize]; @@ -899,8 +918,9 @@ int32_t iguana_vininfo_create(struct supernet_info *myinfo,struct iguana_info *c finalized = 0; if ( msgtx->vins[i].spendscript == 0 ) { - if ( (vp->unspentind= iguana_RTunspentindfind(myinfo,coin,vp->coinaddr,vp->spendscript,&vp->spendlen,&vp->amount,&vp->height,msgtx->vins[i].prev_hash,msgtx->vins[i].prev_vout,coin->bundlescount-1,0)) > 0 ) + if ( iguana_RTunspentindfind(myinfo,coin,&outpt,vp->coinaddr,vp->spendscript,&vp->spendlen,&vp->amount,&vp->height,msgtx->vins[i].prev_hash,msgtx->vins[i].prev_vout,coin->bundlescount-1,0) == 0 ) { + vp->unspentind = outpt.unspentind; msgtx->vins[i].spendscript = vp->spendscript; msgtx->vins[i].spendlen = vp->spendlen; vp->hashtype = iguana_vinscriptparse(coin,vp,&sigsize,&pubkeysize,&p2shsize,&userdatalen,vp->spendscript,vp->spendlen); @@ -1140,6 +1160,8 @@ int32_t iguana_interpreter(struct iguana_info *coin,cJSON *logarray,int64_t nLoc activescriptlen = V[vini].spendlen; } spendscript = iguana_spendasm(coin,activescript,activescriptlen); + if ( activescriptlen < 16 ) + continue; //printf("interpreter.(%s)\n",jprint(spendscript,0)); if ( (scriptlen= bitcoin_assembler(coin,logarray,script,spendscript,1,nLockTime,&V[vini])) < 0 ) { @@ -1254,7 +1276,7 @@ int32_t iguana_signrawtransaction(struct supernet_info *myinfo,struct iguana_inf { printf("txobj.(%s)\n",jprint(txobj,0)); } - if ( 0 && (checkstr= bitcoin_json2hex(myinfo,coin,&txid,txobj,V)) != 0 ) + if ( 0 && (checkstr= bitcoin_json2hex(myinfo,coin,&txid,txobj,V)) != 0 ) // no guarantee of identical regen { if ( strcmp(rawtx,checkstr) != 0 ) { diff --git a/iguana/iguana_spendvectors.c b/iguana/iguana_spendvectors.c index 2da4323c8..2a6b4c9c6 100755 --- a/iguana/iguana_spendvectors.c +++ b/iguana/iguana_spendvectors.c @@ -97,7 +97,7 @@ int32_t iguana_spendvectorsave(struct iguana_info *coin,struct iguana_bundle *bp return(retval); } -struct iguana_bundle *iguana_externalspent(struct iguana_info *coin,bits256 *prevhashp,uint32_t *unspentindp,struct iguana_ramchain *ramchain,int32_t spent_hdrsi,struct iguana_spend *s,int32_t prefetchflag) +struct iguana_bundle *iguana_externalspent(struct supernet_info *myinfo,struct iguana_info *coin,bits256 *prevhashp,uint32_t *unspentindp,struct iguana_ramchain *ramchain,int32_t spent_hdrsi,struct iguana_spend *s,int32_t prefetchflag) { int32_t prev_vout,height,hdrsi; uint32_t sequenceid,unspentind; char str[65]; struct iguana_bundle *spentbp=0; struct iguana_txid *T,TX,*tp; bits256 *X; bits256 prev_hash; struct iguana_ramchaindata *rdata; if ( (rdata= ramchain->H.data) != 0 ) @@ -155,7 +155,8 @@ struct iguana_bundle *iguana_externalspent(struct iguana_info *coin,bits256 *pre else { printf("illegal hdrsi.%d prev_hash.(%s) for bp.[%d]\n",hdrsi,bits256_str(str,prev_hash),spent_hdrsi); - exit(-1); + iguana_exit(myinfo,0); + return(0); } } else @@ -163,8 +164,8 @@ struct iguana_bundle *iguana_externalspent(struct iguana_info *coin,bits256 *pre printf("cant find prev_hash.(%s) for bp.[%d]\n",bits256_str(str,prev_hash),spent_hdrsi); if ( spent_hdrsi < coin->current->hdrsi ) { - iguana_bundleremove(coin,spent_hdrsi,1); - exit(-1); + //iguana_bundleremove(coin,spent_hdrsi,1); + iguana_exit(myinfo,coin->bundles[spent_hdrsi]); } coin->RTdatabad = 1; return(0); @@ -176,7 +177,8 @@ struct iguana_bundle *iguana_externalspent(struct iguana_info *coin,bits256 *pre else if ( unspentind == 0 || unspentind >= spentbp->ramchain.H.data->numunspents ) printf("%s illegal unspentind.%d vs max.%d spentbp.%p[%d]\n",coin->symbol,unspentind,spentbp->ramchain.H.data->numunspents,spentbp,hdrsi); else return(spentbp); - iguana_bundleremove(coin,spent_hdrsi,1); + //iguana_bundleremove(coin,spent_hdrsi,1); + iguana_exit(myinfo,coin->bundles[spent_hdrsi]); } //exit(-1); return(0); @@ -184,7 +186,7 @@ struct iguana_bundle *iguana_externalspent(struct iguana_info *coin,bits256 *pre struct iguana_bundle *iguana_fastexternalspent(struct supernet_info *myinfo,struct iguana_info *coin,bits256 *prevhashp,uint32_t *unspentindp,struct iguana_ramchain *ramchain,int32_t spent_hdrsi,struct iguana_spend *s) { - int32_t prev_vout,height,hdrsi,unspentind; uint32_t ind; + int32_t prev_vout,height,hdrsi,unspentind; uint32_t ind; uint64_t RTspent; struct iguana_txid *T; bits256 *X; bits256 prev_hash; struct iguana_ramchaindata *rdata; if ( (rdata= ramchain->H.data) == 0 ) return(0); @@ -202,7 +204,7 @@ struct iguana_bundle *iguana_fastexternalspent(struct supernet_info *myinfo,stru X = RAMCHAIN_PTR(rdata,Xoffset); //X = (void *)(long)((long)rdata + rdata->Xoffset); *prevhashp = prev_hash = X[ind]; - if ( (unspentind= iguana_unspentindfind(myinfo,coin,0,0,0,0,&height,prev_hash,prev_vout,spent_hdrsi-1,0)) != 0 ) + if ( (unspentind= iguana_unspentindfind(myinfo,coin,&RTspent,0,0,0,0,&height,prev_hash,prev_vout,spent_hdrsi-1,0)) != 0 ) //if ( (firstvout= iguana_txidfastfind(coin,&height,prev_hash,spent_hdrsi-1)) >= 0 ) { /*duration = (OS_milliseconds() - startmillis); @@ -279,6 +281,7 @@ int32_t iguana_spendvectors(struct supernet_info *myinfo,struct iguana_info *coi //coin->fast[iter] = calloc(1,coin->fastsizes[iter]); //memcpy(coin->fast[iter],fastfind,coin->fastsizes[iter]); } + //need zB[]? txidind = B[starti].firsttxidind; spendind = B[starti].firstvin; for (i=starti; ihdrsi,s,2)) != 0 ) + if ( (spentbp= iguana_externalspent(myinfo,coin,&prevhash,&spent_unspentind,ramchain,bp->hdrsi,s,2)) != 0 ) { if ( coin->fastfind != 0 ) printf("found prevhash using slow, not fast\n"); @@ -439,7 +442,7 @@ int32_t iguana_spendvectors(struct supernet_info *myinfo,struct iguana_info *coi if ( ptr != 0 ) myfree(ptr,sizeof(*ptr) * n); //if ( bp != coin->current ) - printf("UTXO [%4d].%-6d dur.%-2d [milli %8.3f] vectors %-6d err.%d [%5.2f%%] %7d %9s of %d\n",bp->hdrsi,bp->numtmpspends,(uint32_t)time(NULL)-starttime,OS_milliseconds()-startmillis,spendind,errs,100.*(double)emitted/(total+1),emit,mbstr(str,sizeof(*ptr) * emit),n); + printf("%s UTXO [%4d].%-6d dur.%-2d [%8.3f] vec %-6d err.%d [%5.2f%%] %7d %9s of %d\n",coin->symbol,bp->hdrsi,bp->numtmpspends,(uint32_t)time(NULL)-starttime,OS_milliseconds()-startmillis,spendind,errs,100.*(double)emitted/(total+1),emit,mbstr(str,sizeof(*ptr) * emit),n); return(-errs); } @@ -496,7 +499,7 @@ int32_t iguana_balancegen(struct iguana_info *coin,int32_t incremental,struct ig now = (uint32_t)time(NULL); if ( txidind != T[txidind].txidind || spendind != T[txidind].firstvin || unspentind != T[txidind].firstvout ) { - printf("balancegen: txidind %u != %u T[txidind].firsttxidind || spendind %u != %u T[txidind].firstvin errs.%d (%d %d)\n",txidind,T[txidind].txidind,spendind,T[txidind].firstvin,errs,unspentind,B[i].firstvout); + printf("balancegen: txidind %u != %u T[txidind].firsttxidind || spendind %u != %u T[txidind].firstvin errs.%d (%d %d)\n",txidind,(uint32_t)T[txidind].txidind,spendind,(uint32_t)T[txidind].firstvin,errs,unspentind,B[i].firstvout); return(-1); } if ( 0 && bp == coin->current ) @@ -659,7 +662,7 @@ int32_t iguana_volatilesinit(struct supernet_info *myinfo,struct iguana_info *co fclose(fp); } if ( filecrc != 0 ) - printf("have filecrc.%08x for %s milli.%.0f from_ro.%d\n",filecrc,bits256_str(str,balancehash),OS_milliseconds(),from_ro); + printf("%s have filecrc.%08x for %s milli.%.0f from_ro.%d\n",coin->symbol,filecrc,bits256_str(str,balancehash),OS_milliseconds(),from_ro); if ( from_ro == 0 || filecrc == 0 ) { if ( filecrc == 0 ) @@ -677,6 +680,7 @@ int32_t iguana_volatilesinit(struct supernet_info *myinfo,struct iguana_info *co fprintf(stderr,"."); if ( filecrc == 0 ) { + //fprintf(stderr,"balancehash add [%d]\n",bp->hdrsi); vupdate_sha256(balancehash.bytes,&vstate,(void *)Aptr,sizeof(*Aptr) * numpkinds); vupdate_sha256(balancehash.bytes,&vstate,(void *)Uptr,sizeof(*Uptr) * numunspents); vupdate_sha256(allbundles.bytes,&bstate,(void *)bp->hashes,sizeof(bp->hashes[0]) * bp->n); @@ -687,16 +691,16 @@ int32_t iguana_volatilesinit(struct supernet_info *myinfo,struct iguana_info *co } //else printf("missing hdrs.[%d] data.%p num.(%u %d) %p %p\n",i,bp->ramchain.H.data,numpkinds,numunspents,Aptr,Uptr); } } else crc = filecrc; - printf("millis %.0f from_ro.%d written.%d crc.%08x/%08x balancehash.(%s) vs (%s)\n",OS_milliseconds(),from_ro,coin->balanceswritten,crc,filecrc,bits256_str(str,balancehash),bits256_str(str2,coin->balancehash)); + printf("%s millis %.0f from_ro.%d written.%d crc.%08x/%08x balancehash.(%s) vs (%s)\n",coin->symbol,OS_milliseconds(),from_ro,coin->balanceswritten,crc,filecrc,bits256_str(str,balancehash),bits256_str(str2,coin->balancehash)); if ( (filecrc != 0 && filecrc != crc) || memcmp(balancehash.bytes,coin->balancehash.bytes,sizeof(balancehash)) != 0 || memcmp(allbundles.bytes,coin->allbundles.bytes,sizeof(allbundles)) != 0 ) { - printf("balancehash or crc.(%x %x) mismatch or allbundles.(%llx %llx) mismatch\n",crc,filecrc,(long long)allbundles.txid,(long long)coin->allbundles.txid); + printf("%s balancehash or crc.(%x %x) mismatch or allbundles.(%llx %llx) mismatch\n",coin->symbol,crc,filecrc,(long long)allbundles.txid,(long long)coin->allbundles.txid); iguana_truncatebalances(coin); OS_removefile(crcfname,0); } else { - printf("MATCHED balancehash numhdrsi.%d crc.%08x\n",coin->balanceswritten,crc); + printf("%s MATCHED balancehash numhdrsi.%d crc.%08x\n",coin->symbol,coin->balanceswritten,crc); if ( (fp= fopen(crcfname,"wb")) != 0 ) { if ( fwrite(&crc,1,sizeof(crc),fp) != sizeof(crc) || fwrite(&balancehash,1,sizeof(balancehash),fp) != sizeof(balancehash) || fwrite(&allbundles,1,sizeof(allbundles),fp) != sizeof(allbundles) ) @@ -722,7 +726,6 @@ int32_t iguana_volatilesinit(struct supernet_info *myinfo,struct iguana_info *co iguana_blockzcopy(coin->chain->zcash,(void *)&coin->blocks.hwmchain,block); } } - //printf("end volatilesinit\n"); if ( iguana_fastfindinit(coin) == 0 )//&& coin->PREFETCHLAG >= 0 ) iguana_fastfindcreate(coin); /*for (j=0; jbundlescount; j++) @@ -734,6 +737,7 @@ int32_t iguana_volatilesinit(struct supernet_info *myinfo,struct iguana_info *co iguana_update_balances(coin);*/ iguana_datachain_scan(myinfo,coin,CRYPTO777_RMD160); //iguana_utxoaddr_gen(myinfo,coin,(coin->bundlescount - 1) * coin->chain->bundlesize);*/ + printf("end %s volatilesinit\n",coin->symbol); return(coin->bundlescount); } @@ -743,14 +747,13 @@ void iguana_initfinal(struct supernet_info *myinfo,struct iguana_info *coin,bits if ( bits256_nonz(lastbundle) > 0 ) { init_hexbytes_noT(hashstr,lastbundle.bytes,sizeof(bits256)); - printf("req lastbundle.(%s)\n",hashstr); queue_enqueue("hdrsQ",&coin->hdrsQ,queueitem(hashstr),1); } for (i=0; ibundlescount-1; i++) { if ( (bp= coin->bundles[i]) == 0 || bp->emitfinish <= 1 ) { - printf("initfinal break.[%d]: bp.%p or emit.%u utxofinish.%u\n",i,bp,bp!=0?bp->emitfinish:-1,bp!=0?bp->utxofinish:-1); + printf("%s initfinal break.[%d]: bp.%p or emit.%u utxofinish.%u\n",coin->symbol,i,bp,bp!=0?bp->emitfinish:-1,bp!=0?bp->utxofinish:-1); break; } if ( i == 0 ) @@ -758,11 +761,11 @@ void iguana_initfinal(struct supernet_info *myinfo,struct iguana_info *coin,bits } if ( i < coin->bundlescount-1 ) { - printf("spendvectors.[%d] max.%d missing, will regen all of them\n",i,coin->bundlescount-1); + printf("%s spendvectors.[%d] max.%d missing, will regen all of them\n",coin->symbol,i,coin->bundlescount-1); for (i=0; ibundlescount-1; i++) { if ( (bp= coin->bundles[i]) != 0 ) - bp->startutxo = bp->utxofinish = 0; + bp->startutxo = bp->utxofinish = bp->converted = bp->balancefinish = bp->validated = 0; } } else @@ -773,19 +776,21 @@ void iguana_initfinal(struct supernet_info *myinfo,struct iguana_info *coin,bits bp->converted = (uint32_t)time(NULL); } } - printf("i.%d bundlescount.%d\n",i,coin->bundlescount); + printf("%s i.%d bundlescount.%d\n",coin->symbol,i,coin->bundlescount); if ( coin->balanceswritten > 1 ) coin->balanceswritten = iguana_volatilesinit(myinfo,coin); - if ( coin->balanceswritten > 1 ) + /*if ( coin->balanceswritten > 1 ) { //for (i=0; ibalanceswritten; i++) for (i=0; ibundlescount; i++) { + if ( (bp= coin->bundles[i]) != 0 ) + iguana_bundlevalidate(myinfo,coin,bp,0); //printf("%d ",i); - iguana_validateQ(coin,coin->bundles[i]); + //iguana_validateQ(coin,coin->bundles[i]); } - } - printf("i.%d balanceswritten.%d\n",i,coin->balanceswritten); + }*/ + printf("%s i.%d balanceswritten.%d\n",coin->symbol,i,coin->balanceswritten); if ( coin->balanceswritten < coin->bundlescount ) { for (i=0*coin->balanceswritten; ibundlescount; i++) @@ -793,7 +798,7 @@ void iguana_initfinal(struct supernet_info *myinfo,struct iguana_info *coin,bits if ( (bp= coin->bundles[i]) != 0 && bp->queued == 0 ) { //printf("%d ",i); - iguana_bundleQ(coin,bp,1000); + iguana_bundleQ(myinfo,coin,bp,1000); } } printf("iguana_bundlesQ %d to %d\n",coin->balanceswritten,coin->bundlescount); @@ -802,7 +807,6 @@ void iguana_initfinal(struct supernet_info *myinfo,struct iguana_info *coin,bits iguana_volatilesinit(myinfo,coin); iguana_savehdrs(coin); iguana_fastlink(coin,coin->balanceswritten * coin->chain->bundlesize - 1); - printf("walkchain\n"); iguana_walkchain(coin,0); hash2 = iguana_blockhash(coin,coin->balanceswritten * coin->chain->bundlesize); if ( bits256_nonz(hash2) != 0 && (block= iguana_blockfind("initfinal",coin,hash2)) != 0 ) @@ -838,7 +842,9 @@ int32_t iguana_balanceflush(struct supernet_info *myinfo,struct iguana_info *coi Aptr = 0; Uptr = 0; numunspents = numpkinds = 0; - if ( (bp= coin->bundles[hdrsi]) != 0 && bp->ramchain.H.data != 0 && (numpkinds= bp->ramchain.H.data->numpkinds) > 0 && (numunspents= bp->ramchain.H.data->numunspents) > 0 && (Aptr= bp->ramchain.A2) != 0 && (Uptr= bp->ramchain.Uextras) != 0 ) + if ( (bp= coin->bundles[hdrsi]) == 0 ) + continue; + if ( bp != 0 && bp->ramchain.H.data != 0 && (numpkinds= bp->ramchain.H.data->numpkinds) > 0 && (numunspents= bp->ramchain.H.data->numunspents) > 0 && (Aptr= bp->ramchain.A2) != 0 && (Uptr= bp->ramchain.Uextras) != 0 ) { sprintf(fname,"%s/%s/debits.%d_N%d",GLOBAL_TMPDIR,coin->symbol,bp->hdrsi,numhdrsi); sprintf(fname2,"%s/%s/lastspends.%d_N%d",GLOBAL_TMPDIR,coin->symbol,bp->hdrsi,numhdrsi); @@ -855,9 +861,9 @@ int32_t iguana_balanceflush(struct supernet_info *myinfo,struct iguana_info *coi err = -1; if ( fwrite(&numhdrsi,1,sizeof(numhdrsi),fp) == sizeof(numhdrsi) && fwrite(&numhdrsi,1,sizeof(numhdrsi),fp2) == sizeof(numhdrsi) && fwrite(balancehash.bytes,1,sizeof(balancehash),fp) == sizeof(balancehash) && fwrite(balancehash.bytes,1,sizeof(balancehash),fp2) == sizeof(balancehash) && fwrite(allbundles.bytes,1,sizeof(allbundles),fp) == sizeof(allbundles) && fwrite(allbundles.bytes,1,sizeof(allbundles),fp2) == sizeof(allbundles) ) { - if ( fwrite(Aptr,sizeof(*Aptr),numpkinds,fp) == numpkinds ) + if ( numpkinds == 0 || fwrite(Aptr,sizeof(*Aptr),numpkinds,fp) == numpkinds ) { - if ( fwrite(Uptr,sizeof(*Uptr),numunspents,fp2) == numunspents ) + if ( numunspents == 0 || fwrite(Uptr,sizeof(*Uptr),numunspents,fp2) == numunspents ) { err = 0; if ( (hdrsi % 100) == 0 ) @@ -884,26 +890,30 @@ int32_t iguana_balanceflush(struct supernet_info *myinfo,struct iguana_info *coi else if ( iter == 2 ) { sprintf(destfname,"%s/%s/accounts/debits.%d",GLOBAL_DBDIR,coin->symbol,bp->bundleheight); - if ( OS_copyfile(fname,destfname,1) < 0 ) + OS_removefile(destfname,0); + OS_renamefile(fname,destfname); + /*if ( OS_copyfile(fname,destfname,1) < 0 ) { printf("balances error copying (%s) -> (%s)\n",fname,destfname); return(-1); - } + }*/ sprintf(destfname,"%s/%s/accounts/lastspends.%d",GLOBAL_DBDIR,coin->symbol,bp->bundleheight); - if ( OS_copyfile(fname2,destfname,1) < 0 ) + OS_removefile(destfname,0); + OS_renamefile(fname2,destfname); + /*if ( OS_copyfile(fname2,destfname,1) < 0 ) { printf("balances error copying (%s) -> (%s)\n",fname2,destfname); return(-1); - } + }*/ if ( (hdrsi % 100) == 0 ) printf("%s -> %s\n",fname,destfname); - OS_removefile(fname,0); - OS_removefile(fname2,0); + //OS_removefile(fname,0); + //OS_removefile(fname2,0); } if ( bp->ramchain.allocatedA2 == 0 || bp->ramchain.allocatedU2 == 0 ) { - printf("skip saving.[%d] files as not allocated\n",bp->hdrsi); - break; + printf("account.[%d] files not allocated %u %u\n",bp->hdrsi,(uint32_t)bp->ramchain.allocatedA2,(uint32_t)bp->ramchain.allocatedU2); + //break; } } else if ( hdrsi > 0 && hdrsi != coin->bundlescount && (coin->current == 0 || hdrsi != coin->current->hdrsi ) ) @@ -953,12 +963,7 @@ int32_t iguana_balanceflush(struct supernet_info *myinfo,struct iguana_info *coi } } #endif - for (i=0; i<30; i++) - { - printf("need to exit, please restart after shutdown in %d seconds, or just ctrl-C\n",30-i); - sleep(1); - } - exit(-1); + iguana_exit(myinfo,0); } coin->balanceswritten = iguana_volatilesinit(myinfo,coin); //printf("flush free\n"); @@ -988,7 +993,7 @@ int32_t iguana_spendvectorsaves(struct iguana_info *coin) for (j=0; jnumtmpspends; j++) if ( bp->tmpspends[j].tmpflag != 0 ) { - printf("vectorsave.[%d] vec.%d still has tmpflag\n",i,j); + printf("%s vectorsave.[%d] vec.%d still has tmpflag\n",coin->symbol,i,j); return(-1); } } @@ -1092,11 +1097,16 @@ int32_t iguana_convert(struct iguana_info *coin,int32_t helperid,struct iguana_b return(converted); } -int32_t iguana_bundlevalidate(struct iguana_info *coin,struct iguana_bundle *bp,int32_t forceflag) +int32_t iguana_bundlevalidate(struct supernet_info *myinfo,struct iguana_info *coin,struct iguana_bundle *bp,int32_t forceflag) { static int32_t totalerrs,totalvalidated; - FILE *fp; char fname[1024]; uint8_t *blockspace; //uint32_t now = (uint32_t)time(NULL); + FILE *fp; char fname[1024]; uint8_t *blockspace; uint32_t now = (uint32_t)time(NULL); int32_t i,max,len,errs = 0; struct sha256_vstate vstate; bits256 validatehash; int64_t total = 0; + if ( coin->chain->zcash != 0 ) + { + printf("need to process joinsplits before can validate.%s\n",coin->symbol); + return(bp->n); + } if ( (coin->MAXPEERS > 1 && coin->VALIDATENODE == 0 && coin->FULLNODE == 0) || bp->ramchain.from_ro != 0 || bp == coin->current ) { bp->validated = (uint32_t)time(NULL); @@ -1124,12 +1134,18 @@ int32_t iguana_bundlevalidate(struct iguana_info *coin,struct iguana_bundle *bp, { max = coin->blockspacesize; blockspace = calloc(1,max); + iguana_volatilespurge(coin,&bp->ramchain); iguana_volatilesmap(coin,&bp->ramchain); for (i=0; in; i++) { - if ( (len= iguana_peerblockrequest(coin,blockspace,max,0,bp->hashes[i],1)) < 0 ) + char str[65]; + if ( coin->chain->fixit != 0 ) + printf("validate %s.[%d:%d] %s\n",coin->symbol,bp->hdrsi,i,bits256_str(str,bp->hashes[i])); + if ( (len= iguana_peerblockrequest(myinfo,coin,blockspace,max,0,bp->hashes[i],1)) < 0 ) { errs++; + //fprintf(stderr,"-%s.[%d:%d] ",coin->symbol,bp->hdrsi,i); + //printf("bundlevalidate: %s delete [%d:%d]\n",coin->symbol,bp->hdrsi,i); iguana_blockunmark(coin,bp->blocks[i],bp,i,1); totalerrs++; } @@ -1140,8 +1156,10 @@ int32_t iguana_bundlevalidate(struct iguana_info *coin,struct iguana_bundle *bp, } } free(blockspace); - bp->validated = (uint32_t)time(NULL); - // printf("VALIDATED.[%d] ht.%d duration.%d errs.%d total.%lld %u | total errs.%d validated.%d %llx\n",bp->hdrsi,bp->bundleheight,bp->validated - now,errs,(long long)total,bp->validated,totalerrs,totalvalidated,(long long)validatehash.txid); + printf("%s %s VALIDATED.[%d] ht.%d duration.%d errs.%d total.%lld %u | total errs.%d validated.%d %llx\n",coin->symbol,errs!=0?"NOT":"",bp->hdrsi,bp->bundleheight,(uint32_t)time(NULL) - now,errs,(long long)total,bp->validated,totalerrs,totalvalidated,(long long)validatehash.txid); + if ( errs == 0 ) + bp->validated = (uint32_t)time(NULL); + else bp->startutxo = bp->utxofinish = 0; //iguana_volatilesmap(coin,&bp->ramchain); //if ( bp == coin->current ) // coin->RTdatabad = -1; @@ -1159,8 +1177,9 @@ int32_t iguana_bundlevalidate(struct iguana_info *coin,struct iguana_bundle *bp, } // else printf("skip validate.[%d] validated.%u force.%d\n",bp->hdrsi,bp->validated,forceflag); if ( errs != 0 ) { - printf("remove.[%d]\n",bp->hdrsi); - iguana_bundleremove(coin,bp->hdrsi,0); + printf("%s remove.[%d]\n",coin->symbol,bp->hdrsi); + //iguana_bundleremove(coin,bp->hdrsi,0); + return(-errs); } return(bp->n - errs); } diff --git a/iguana/iguana_tradebots.c b/iguana/iguana_tradebots.c index 275592554..f6755e71d 100755 --- a/iguana/iguana_tradebots.c +++ b/iguana/iguana_tradebots.c @@ -38,7 +38,7 @@ struct tradebot_info cJSON *tradebot_json(struct supernet_info *myinfo,struct exchange_info *exchange,struct tradebot_info *bot) { - char str[64]; int32_t i,numpending; double pendsum,pendvolume,vol; cJSON *json,*array,*item; + char str[65]; int32_t i,numpending; double pendsum,pendvolume,vol; cJSON *json,*array,*item; json = cJSON_CreateObject(); jaddstr(json,"exchange",exchange->name); jaddstr(json,"started",utc_str(str,bot->started)); diff --git a/iguana/iguana_tx.c b/iguana/iguana_tx.c index 36df86655..c19064a67 100755 --- a/iguana/iguana_tx.c +++ b/iguana/iguana_tx.c @@ -14,13 +14,6 @@ ******************************************************************************/ #include "iguana777.h" -//#include "SuperNET.h" - -//struct iguana_txid { bits256 txid; uint32_t txidind,firstvout,firstvin,locktime,version,timestamp; uint16_t numvouts,numvins; } __attribute__((packed)); - -//struct iguana_msgvin { bits256 prev_hash; uint8_t *script; uint32_t prev_vout,scriptlen,sequence; } __attribute__((packed)); - -//struct iguana_spend { uint32_t spendtxidind; int16_t prevout; uint16_t tbd:14,external:1,diffsequence:1; } __attribute__((packed)); int32_t iguana_scriptdata(struct iguana_info *coin,uint8_t *scriptspace,long fileptr[2],char *fname,uint64_t scriptpos,int32_t scriptlen) { @@ -89,7 +82,7 @@ int32_t iguana_vinset(struct iguana_info *coin,uint8_t *scriptspace,int32_t heig { iguana_vinsfname(coin,bp->ramchain.from_ro,fname,s->fileid); if ( (scriptlen= iguana_scriptdata(coin,scriptspace,coin->vinptrs[s->fileid],fname,s->scriptpos,s->scriptlen)) != s->scriptlen ) - printf("err.%d getting %d bytes from fileid.%llu[%d] %s for s%d\n",err,s->scriptlen,(long long)s->scriptpos,s->fileid,fname,spendind); + printf("err.%d getting %d bytes from fileid.%u[%u] %s for s%d\n",err,(int32_t)s->scriptlen,(uint32_t)s->scriptpos,(uint32_t)s->fileid,fname,spendind); } vin->scriptlen = s->scriptlen; vin->vinscript = scriptspace; @@ -107,8 +100,10 @@ int32_t iguana_voutscript(struct iguana_info *coin,struct iguana_bundle *bp,uint if ( u->scriptpos > 0 && u->scriptlen > 0 ) { iguana_voutsfname(coin,bp->ramchain.from_ro,fname,u->fileid); - if ( (scriptlen= iguana_scriptdata(coin,scriptspace,coin->voutptrs[u->fileid],fname,u->scriptpos,u->scriptlen)) != u->scriptlen ) - printf("%d bytes from fileid.%d[%d] %s for type.%d\n",u->scriptlen,u->fileid,u->scriptpos,fname,u->type); + if ( (int32_t)(scriptlen= iguana_scriptdata(coin,scriptspace,coin->voutptrs[u->fileid],fname,u->scriptpos,u->scriptlen)) != (int32_t)u->scriptlen ) + printf("scriptlen.%d != %d bytes from fileid.%d[%d] %s for type.%d\n",scriptlen,u->scriptlen,u->fileid,u->scriptpos,fname,u->type); + if ( scriptlen < 0 ) + scriptlen = 0; } else { @@ -134,8 +129,13 @@ int32_t iguana_voutset(struct iguana_info *coin,uint8_t *scriptspace,char *asmst //P = (void *)(long)((long)rdata + rdata->Poffset); unspentind = (tx->firstvout + i); u = &U[unspentind]; - if ( u->txidind != tx->txidind || u->vout != i || u->hdrsi != height / coin->chain->bundlesize ) - printf("iguana_voutset: txidind mismatch %d vs %d || %d vs %d || (%d vs %d)\n",u->txidind,u->txidind,u->vout,i,u->hdrsi,height / coin->chain->bundlesize); + if ( u->vout != i || u->hdrsi != height / coin->chain->bundlesize ) //u->txidind != tx->txidind || + { + static uint32_t counter; + if ( counter++ < 3 ) + printf("%s.[%d].%d iguana_voutset: vout mismatch t%d u%u || %d vs %d, type.%d scriptpos.%d scriptlen.%d\n",coin->symbol,height/coin->chain->bundlesize,u->hdrsi,u->txidind,unspentind,u->vout,i,u->type,u->scriptpos,u->scriptlen); + return(-1); + } vout->value = u->value; vout->pk_script = scriptspace; scriptlen = iguana_voutscript(coin,bp,scriptspace,asmstr,u,&P[u->pkind],i); @@ -164,7 +164,7 @@ struct iguana_txid *iguana_blocktx(struct iguana_info *coin,struct iguana_txid * return(0); } else printf("iguana_blocktx null txidind [%d:%d] i.%d\n",block->hdrsi,block->bundlei,i); } else printf("iguana_blocktx no bp.[%d]\n",block->hdrsi); - } else printf("blocktx illegal height.%d\n",block->height); + } else printf("%s blocktx illegal height.%d\n",coin->symbol,block->height); } else printf("i.%d vs txn_count.%d\n",i,block->RO.txn_count); return(0); } @@ -193,14 +193,16 @@ int32_t iguana_ramtxbytes(struct iguana_info *coin,uint8_t *serialized,int32_t m for (i=0; i maxlen ) + break; } if ( len > maxlen ) { @@ -211,9 +213,18 @@ int32_t iguana_ramtxbytes(struct iguana_info *coin,uint8_t *serialized,int32_t m for (i=0; i maxlen ) + break; } if ( len > maxlen ) { @@ -226,17 +237,17 @@ int32_t iguana_ramtxbytes(struct iguana_info *coin,uint8_t *serialized,int32_t m *txidp = bits256_doublesha256(txidstr,serialized,len); if ( memcmp(txidp,tx->txid.bytes,sizeof(*txidp)) != 0 ) { - for (i=0; itxid)); return(-1); } return(len); } -int32_t iguana_peerblockrequest(struct iguana_info *coin,uint8_t *blockspace,int32_t max,struct iguana_peer *addr,bits256 hash2,int32_t validatesigs) +int32_t iguana_peerblockrequest(struct supernet_info *myinfo,struct iguana_info *coin,uint8_t *blockspace,int32_t max,struct iguana_peer *addr,bits256 hash2,int32_t validatesigs) { - struct iguana_txid *tx,T; bits256 checktxid; int32_t i,len,total,bundlei=-2; struct iguana_block *block; struct iguana_msgblock msgB; bits256 *tree,checkhash2,merkle_root; struct iguana_bundle *bp=0; long tmp; char str[65]; struct iguana_ramchaindata *rdata; + struct iguana_txid *tx,T; bits256 checktxid; int32_t i,len,total,bundlei=-2; struct iguana_block *block; struct iguana_msgzblock zmsgB; bits256 *tree,checkhash2,merkle_root; struct iguana_bundle *bp=0; long tmp; char str[65]; struct iguana_ramchaindata *rdata; if ( (bp= iguana_bundlefind(coin,&bp,&bundlei,hash2)) != 0 && bundlei >= 0 && bundlei < bp->n ) { if ( (rdata= bp->ramchain.H.data) == 0 )//&& bp == coin->current ) @@ -247,9 +258,9 @@ int32_t iguana_peerblockrequest(struct iguana_info *coin,uint8_t *blockspace,int } if ( (block= bp->blocks[bundlei]) != 0 && rdata != 0 ) { - iguana_blockunconv(coin->chain->zcash,coin->chain->auxpow,&msgB,block,0); - msgB.txn_count = block->RO.txn_count; - total = iguana_rwblock(coin->symbol,coin->chain->zcash,coin->chain->auxpow,coin->chain->hashalgo,1,&checkhash2,&blockspace[sizeof(struct iguana_msghdr) + 0],&msgB,max); + iguana_blockunconv(coin->chain->zcash,coin->chain->auxpow,&zmsgB,(void *)block,0); + zmsgB.txn_count = block->RO.txn_count; + total = iguana_rwblock(myinfo,coin->symbol,coin->chain->zcash,coin->chain->auxpow,coin->chain->hashalgo,1,&checkhash2,&blockspace[sizeof(struct iguana_msghdr) + 0],&zmsgB,max); if ( bits256_cmp(checkhash2,block->RO.hash2) != 0 ) { //static int counter; @@ -261,24 +272,24 @@ int32_t iguana_peerblockrequest(struct iguana_info *coin,uint8_t *blockspace,int { if ( (tx= iguana_blocktx(coin,&T,block,i)) != 0 ) { - if ( (len= iguana_ramtxbytes(coin,&blockspace[sizeof(struct iguana_msghdr) + total],max - total,&checktxid,tx,block->height,0,0,validatesigs)) > 0 && bits256_cmp(checktxid,T.txid) == 0 ) + if ( (len= iguana_ramtxbytes(coin,&blockspace[sizeof(struct iguana_msghdr) + total],max - total,&checktxid,tx,block->height,0,0,validatesigs)) > 0 )//&& bits256_cmp(checktxid,T.txid) == 0 ) total += len; else { - //static int counter; + static uint32_t counter; char str[65],str2[65]; - //if ( counter++ < 100 ) + if ( counter++ < 100 ) { for (i=0; ihdrsi,bundlei,bits256_str(str,checktxid),bits256_str(str2,T.txid)); + printf(" len.%d error getting txi.%d [%d:%d] cmp.%s %s\n",len,i,bp->hdrsi,bundlei,bits256_str(str,checktxid),bits256_str(str2,T.txid)); } break; } } else { - printf("null tx error getting txi.%d [%d:%d]\n",i,bp->hdrsi,bundlei); + printf("%s null tx error getting txi.%d [%d:%d]\n",coin->symbol,i,bp->hdrsi,bundlei); break; } } @@ -320,7 +331,7 @@ int32_t iguana_peerblockrequest(struct iguana_info *coin,uint8_t *blockspace,int for (i=0; i<16; i++) printf("%02x",blockspace[i + sizeof(struct iguana_msghdr)+81]); printf(" txhdr\n"); - if ( (checklen= iguana_gentxarray(coin,&RAWMEM,&txdata,&checklen,&blockspace[sizeof(struct iguana_msghdr)],total)) != total && checklen != total-1 ) + if ( (checklen= iguana_gentxarray(myinfo,coin,&RAWMEM,&txdata,&checklen,&blockspace[sizeof(struct iguana_msghdr)],total)) != total && checklen != total-1 ) printf("Error reconstructing txarray checklen.%d total.%d\n",checklen,total); } return(iguana_queue_send(addr,0,blockspace,"block",total)); @@ -330,9 +341,15 @@ int32_t iguana_peerblockrequest(struct iguana_info *coin,uint8_t *blockspace,int //printf("validated.[%d:%d] len.%d\n",bp->hdrsi,bundlei,total); return(total); } - } else printf("iguana_peerblockrequest: error merkle cmp tx.[%d] for ht.%d\n",i,bp->bundleheight+bundlei); + } else printf("iguana_peerblockrequest: %s error merkle cmp tx.[%d] for ht.%d\n",coin->symbol,i,bp->bundleheight+bundlei); } else printf("iguana_peerblockrequest: error merkle verify tx.[%d] for ht.%d\n",i,bp->bundleheight+bundlei); - } else printf("iguana_peerblockrequest: error getting tx.[%d] for ht.%d block.%p main.%d ht.%d\n",i,bp->bundleheight+bundlei,block,block!=0?block->mainchain:-1,block!=0?block->height:-1); + } + else + { + static uint32_t counter; + if ( counter++ < 10 ) + printf("%s iguana_peerblockrequest: error getting tx.[%d] for ht.%d block.%p main.%d ht.%d\n",coin->symbol,i,bp->bundleheight+bundlei,block,block!=0?block->mainchain:-1,block!=0?block->height:-1); + } } else { @@ -346,9 +363,9 @@ int32_t iguana_peerblockrequest(struct iguana_info *coin,uint8_t *blockspace,int return(-1); } -cJSON *iguana_blockjson(struct iguana_info *coin,struct iguana_block *block,int32_t txidsflag) +cJSON *iguana_blockjson(struct supernet_info *myinfo,struct iguana_info *coin,struct iguana_block *block,int32_t txidsflag) { - char str[65],hexstr[1024]; int32_t i,len,size; struct iguana_txid *tx,T; struct iguana_msgblock msg; + char str[65],hexstr[1024]; int32_t i,len,size; struct iguana_txid *tx,T; struct iguana_msgzblock zmsg; struct iguana_msgblock *msg = (void *)&zmsg; struct iguana_zblock *zblock; bits256 hash2,nexthash2; uint8_t serialized[1024]; cJSON *array,*json = cJSON_CreateObject(); jaddstr(json,"result","success"); jaddstr(json,"hash",bits256_str(str,block->RO.hash2)); @@ -383,20 +400,34 @@ cJSON *iguana_blockjson(struct iguana_info *coin,struct iguana_block *block,int3 serialized[3] = ((uint8_t *)&block->RO.bits)[0]; init_hexbytes_noT(hexstr,serialized,sizeof(uint32_t)); jaddstr(json,"nBitshex",hexstr); - memset(&msg,0,sizeof(msg)); - msg.H.version = block->RO.version; - msg.H.merkle_root = block->RO.merkle_root; - msg.H.timestamp = block->RO.timestamp; - msg.H.bits = block->RO.bits; if ( block->RO.allocsize == sizeof(struct iguana_zblock) ) { - msg.zH.bignonce = block->zRO[0].bignonce; - msg.zH.numelements = ZCASH_SOLUTION_ELEMENTS; + zblock = (void *)block; + memset(&zmsg,0,sizeof(zmsg)); + zmsg.zH.version = zblock->RO.version; + zmsg.zH.merkle_root = zblock->RO.merkle_root; + zmsg.zH.timestamp = zblock->RO.timestamp; + zmsg.zH.bits = zblock->RO.bits; + zmsg.zH.bignonce = zblock->zRO.bignonce; + if ( iguana_rwvarint32(1,zmsg.zH.var_numelements,&zblock->zRO.numelements) != sizeof(zmsg.zH.var_numelements) ) + printf("unexpected varint size for zmsg.zH.numelements <- %d\n",zblock->zRO.numelements); for (i=0; izRO[0].solution[i]; - } else msg.H.nonce = block->RO.nonce; - msg.txn_count = 0;//block->RO.txn_count; - len = iguana_rwblock(coin->symbol,coin->chain->zcash,coin->chain->auxpow,coin->chain->hashalgo,1,&hash2,serialized,&msg,IGUANA_MAXPACKETSIZE*2); + zmsg.zH.solution[i] = zblock->zRO.solution[i]; + zmsg.txn_count = 0;//block->RO.txn_count; + len = iguana_rwblock(myinfo,coin->symbol,coin->chain->zcash,coin->chain->auxpow,coin->chain->hashalgo,1,&hash2,serialized,&zmsg,IGUANA_MAXPACKETSIZE*2); + } + else + { + memset(msg,0,sizeof(&msg)); + msg->H.version = block->RO.version; + msg->H.prev_block = block->RO.prev_block; + msg->H.merkle_root = block->RO.merkle_root; + msg->H.timestamp = block->RO.timestamp; + msg->H.bits = block->RO.bits; + msg->H.nonce = block->RO.nonce; + msg->txn_count = 0;//block->RO.txn_count; + len = iguana_rwblock(myinfo,coin->symbol,coin->chain->zcash,coin->chain->auxpow,coin->chain->hashalgo,1,&hash2,serialized,&zmsg,IGUANA_MAXPACKETSIZE*2); + } init_hexbytes_noT(hexstr,serialized,len); jaddstr(json,"blockheader",hexstr); if ( txidsflag != 0 ) @@ -410,7 +441,7 @@ cJSON *iguana_blockjson(struct iguana_info *coin,struct iguana_block *block,int3 jadd(json,"tx",array); //printf("add txids[%d]\n",block->txn_count); } - if ( (size= iguana_peerblockrequest(coin,coin->blockspace,coin->blockspacesize,0,block->RO.hash2,0)) < 0 ) + if ( (size= iguana_peerblockrequest(myinfo,coin,coin->blockspace,coin->blockspacesize,0,block->RO.hash2,0)) < 0 ) jaddstr(json,"error","couldnt generate raw bytes for block"); else jaddnum(json,"size",size); return(json); diff --git a/iguana/iguana_txidfind.c b/iguana/iguana_txidfind.c index 9805c2ba6..5104076ac 100755 --- a/iguana/iguana_txidfind.c +++ b/iguana/iguana_txidfind.c @@ -81,7 +81,7 @@ uint32_t iguana_sparseadd(uint8_t *bits,uint32_t ind,int32_t width,uint32_t tabl x |= (*ptr & masks[modval]) >> modval; } if ( x != 0 ) - printf("%s ",bits256_str(str,*(bits256 *)(refdata + x*refsize))), n++; + printf("%s ",bits256_str(str,*(bits256 *)((long)refdata + x*refsize))), n++; } printf("tableentries.%d\n",n); } @@ -316,7 +316,7 @@ struct iguana_txid *iguana_txidfind(struct iguana_info *coin,int32_t *heightp,st if ( j < bp->n ) { if ( j != T[txidind].bundlei ) - printf("bundlei mismatch j.%d != %d\n",j,T[txidind].bundlei); + printf("bundlei mismatch j.%d != %u\n",j,(uint32_t)T[txidind].bundlei); else { *heightp = bp->bundleheight + T[txidind].bundlei; @@ -335,7 +335,7 @@ struct iguana_txid *iguana_txidfind(struct iguana_info *coin,int32_t *heightp,st return(tx); } } - char str[65],str2[65]; printf("iguana_txidfind mismatch.[%d:%d] %d %s vs %s\n",bp->hdrsi,T[txidind].extraoffset,txidind,bits256_str(str,txid),bits256_str(str2,T[txidind].txid)); + char str[65],str2[65]; printf("iguana_txidfind mismatch.[%d:%u] %d %s vs %s\n",bp->hdrsi,(uint32_t)T[txidind].extraoffset,txidind,bits256_str(str,txid),bits256_str(str2,T[txidind].txid)); return(0); } } @@ -621,7 +621,7 @@ struct iguana_monitorinfo *iguana_monitorfind(struct iguana_info *coin,bits256 t struct iguana_monitorinfo *iguana_txidreport(struct iguana_info *coin,bits256 txid,struct iguana_peer *addr) { - struct iguana_monitorinfo *ptr; char str[65]; + struct iguana_monitorinfo *ptr; //char str[65]; if ( (ptr= iguana_monitorfind(coin,txid)) != 0 ) { if ( GETBIT(ptr->peerbits,addr->addrind) == 0 ) @@ -630,7 +630,7 @@ struct iguana_monitorinfo *iguana_txidreport(struct iguana_info *coin,bits256 tx SETBIT(ptr->peerbits,addr->addrind); ptr->numreported++; } - } else printf("txid.%s not being monitored\n",bits256_str(str,txid)); + } // else printf("%s txid.%s not being monitored\n",coin->symbol,bits256_str(str,txid)); return(0); } @@ -653,11 +653,12 @@ struct iguana_monitorinfo *iguana_txidmonitor(struct iguana_info *coin,bits256 t double iguana_txidstatus(struct supernet_info *myinfo,struct iguana_info *coin,bits256 txid) { - int32_t height,firstvout,numranked; struct iguana_monitorinfo *ptr; char str[65]; + struct iguana_outpoint outpt; int32_t height,firstvout,numranked; struct iguana_monitorinfo *ptr; char str[65]; if ( coin != 0 && coin->peers != 0 && (numranked= coin->peers->numranked) > 0 ) { - if ( (firstvout= iguana_RTunspentindfind(myinfo,coin,0,0,0,0,&height,txid,0,coin->bundlescount-1,0)) != 0 ) + if ( iguana_RTunspentindfind(myinfo,coin,&outpt,0,0,0,0,&height,txid,0,coin->bundlescount-1,0) == 0 ) { + firstvout = outpt.unspentind; if ( (ptr= iguana_monitorfind(coin,txid)) != 0 ) memset(ptr,0,sizeof(*ptr)); return((double)coin->longestchain - height); diff --git a/iguana/iguana_unspents.c b/iguana/iguana_unspents.c index 88d252043..4bd2a1fd9 100755 --- a/iguana/iguana_unspents.c +++ b/iguana/iguana_unspents.c @@ -64,12 +64,13 @@ int32_t iguana_RTunspentind2txid(struct supernet_info *myinfo,struct iguana_info return(-1); } -int32_t iguana_unspentindfind(struct supernet_info *myinfo,struct iguana_info *coin,char *coinaddr,uint8_t *spendscript,int32_t *spendlenp,uint64_t *valuep,int32_t *heightp,bits256 txid,int32_t vout,int32_t lasthdrsi,int32_t mempool) +int32_t iguana_unspentindfind(struct supernet_info *myinfo,struct iguana_info *coin,uint64_t *spentamountp,char *coinaddr,uint8_t *spendscript,int32_t *spendlenp,uint64_t *valuep,int32_t *heightp,bits256 txid,int32_t vout,int32_t lasthdrsi,int32_t mempool) { struct iguana_txid *tp,TX; struct gecko_memtx *memtx; struct iguana_pkhash *P; struct iguana_unspent *U; struct iguana_bundle *bp; struct iguana_ramchaindata *rdata; int64_t RTspend; int64_t value; struct iguana_outpoint spentpt; int32_t pkind,hdrsi,firstvout,spentheight,flag=0,unspentind = -1; //portable_mutex_lock(&coin->RTmutex); if ( valuep != 0 ) *valuep = 0; + *spentamountp = 0; if ( coinaddr != 0 ) coinaddr[0] = 0; if ( coin->fastfind != 0 && (firstvout= iguana_txidfastfind(coin,heightp,txid,lasthdrsi)) >= 0 ) @@ -94,14 +95,14 @@ int32_t iguana_unspentindfind(struct supernet_info *myinfo,struct iguana_info *c memset(&spentpt,0,sizeof(spentpt)); spentpt.hdrsi = bp->hdrsi; spentpt.unspentind = unspentind; + bitcoin_address(coinaddr,iguana_addrtype(coin,U[unspentind].type),P[pkind].rmd160,sizeof(P[pkind].rmd160)); if ( iguana_RTspentflag(myinfo,coin,&RTspend,&spentheight,&bp->ramchain,spentpt,0,1,coin->longestchain,U[unspentind].value) == 0 ) //bp == coin->current ? &coin->RTramchain : { if ( valuep != 0 ) *valuep = U[unspentind].value; - bitcoin_address(coinaddr,iguana_addrtype(coin,U[unspentind].type),P[pkind].rmd160,sizeof(P[pkind].rmd160)); if ( spendscript != 0 && spendlenp != 0 ) *spendlenp = iguana_voutscript(coin,bp,spendscript,0,&U[unspentind],&P[pkind],1); - } + } else *spentamountp = RTspend; } } if ( flag == 0 && mempool != 0 ) @@ -136,10 +137,8 @@ char *iguana_RTinputaddress(struct supernet_info *myinfo,struct iguana_info *coi vout = jint(vinobj,"vout"); height = jint(vinobj,"height"); checkind = jint(vinobj,"checkind"); - if ( (height != 0 && checkind != 0) || (checkind= iguana_RTunspentindfind(myinfo,coin,coinaddr,0,0,0,&height,txid,vout,coin->bundlescount-1,0)) > 0 ) + if ( (height != 0 && checkind != 0) || iguana_RTunspentindfind(myinfo,coin,spentp,coinaddr,0,0,0,&height,txid,vout,coin->bundlescount-1,0) == 0 ) { - spentp->hdrsi = (height / coin->chain->bundlesize); - spentp->unspentind = checkind; return(coinaddr); } else @@ -168,10 +167,9 @@ cJSON *ramchain_unspentjson(struct iguana_unspent *up,uint32_t unspentind) return(item); } -cJSON *ramchain_spentjson(struct iguana_info *coin,int32_t spentheight,bits256 txid,int32_t vout,int64_t uvalue) +cJSON *ramchain_spentjson(struct supernet_info *myinfo,struct iguana_info *coin,int32_t spentheight,bits256 txid,int32_t vout,int64_t uvalue) { - char coinaddr[64]; bits256 hash2,*X; struct iguana_txid T,*tx,*spentT,*spent_tx; struct iguana_bundle *bp; int32_t j,i,ind; struct iguana_block *block; int64_t total = 0; struct iguana_unspent *U,*u; struct iguana_pkhash *P; struct iguana_spend *S,*s; struct iguana_ramchaindata *rdata; cJSON *addrs,*item,*voutobj; -//RTpath! + char coinaddr[64]; bits256 hash2,*X; struct iguana_txid T,*tx,*spentT,*spent_tx; struct iguana_bundle *bp; int32_t j,i,ind; struct iguana_block *block; int64_t value,total = 0; struct iguana_unspent *U,*u; struct iguana_pkhash *P; struct iguana_spend *S,*s; struct iguana_ramchaindata *rdata; cJSON *addrs,*item,*voutobj; item = cJSON_CreateObject(); hash2 = iguana_blockhash(coin,spentheight); if ( (block= iguana_blockfind("spent",coin,hash2)) != 0 && (bp= coin->bundles[spentheight/coin->chain->bundlesize]) != 0 && (rdata= bp->ramchain.H.data) != 0 ) @@ -185,8 +183,6 @@ cJSON *ramchain_spentjson(struct iguana_info *coin,int32_t spentheight,bits256 t { if ( (tx= iguana_blocktx(coin,&T,block,i)) != 0 ) { - // struct iguana_txid { bits256 txid; uint32_t txidind:29,firstvout:28,firstvin:28,bundlei:11,locktime,version,timestamp,extraoffset; uint16_t numvouts,numvins; } __attribute__((packed)); - // struct iguana_spend { uint64_t scriptpos:48,scriptlen:16; uint32_t spendtxidind,sequenceid; int16_t prevout; uint16_t fileid:15,external:1; } __attribute__((packed)); // numsigs:4,numpubkeys:4,p2sh:1,sighash:4 s = &S[tx->firstvin]; for (j=0; jnumvins; j++,s++) { @@ -226,6 +222,34 @@ cJSON *ramchain_spentjson(struct iguana_info *coin,int32_t spentheight,bits256 t } } } + else + { + struct iguana_RTtxid *RTptr,*tmp; struct iguana_RTspend *spend; + HASH_ITER(hh,coin->RTdataset,RTptr,tmp) + { + for (i=0; inumvins; i++) + { + if ( (spend= RTptr->spends[i]) != 0 ) + { + if ( bits256_cmp(spend->prev_hash,txid) == 0 && spend->prev_vout == vout ) + { + value = iguana_txidamount(myinfo,coin,coinaddr,txid,vout); + jaddnum(item,"total",dstr(value)); + jaddbits256(item,"spentfrom",RTptr->txid); + jaddnum(item,"vin",i); + addrs = cJSON_CreateArray(); + voutobj = cJSON_CreateObject(); + jaddnum(voutobj,coinaddr,dstr(value)); + jaddi(addrs,voutobj); + jadd(item,"vouts",addrs); + jaddnum(item,"timestamp",RTptr->timestamp); + //printf("Found MATCH! (%s %.8f)\n",coinaddr,dstr(value)); + return(item); + } + } + } + } + } jaddstr(item,"error","couldnt find spent info"); return(item); } @@ -242,8 +266,7 @@ cJSON *iguana_RTunspentjson(struct supernet_info *myinfo,struct iguana_info *coi "confirmations" : 6210, "spendable" : true },*/ - //struct iguana_unspent { uint64_t value; uint32_t txidind,pkind,prevunspentind; uint16_t hdrsi:12,type:4,vout; } __attribute__((packed)); - struct iguana_waccount *wacct; struct iguana_waddress *waddr; int32_t height; char scriptstr[8192],asmstr[sizeof(scriptstr)+1024]; cJSON *item; uint32_t checkind; struct iguana_RTunspent *unspent; + struct iguana_waccount *wacct; struct iguana_waddress *waddr; int32_t height; char scriptstr[8192],asmstr[sizeof(scriptstr)+1024]; cJSON *item; uint32_t checkind; struct iguana_RTunspent *unspent; struct iguana_block *block; item = cJSON_CreateObject(); jaddbits256(item,"txid",txid); jaddnum(item,"vout",vout); @@ -263,8 +286,11 @@ cJSON *iguana_RTunspentjson(struct supernet_info *myinfo,struct iguana_info *coi } jaddnum(item,"amount",dstr(value)); //jaddnum(item,"timestamp",T[up->txidind].timestamp); - if ( (checkind= iguana_RTunspentindfind(myinfo,coin,0,0,0,0,&height,txid,vout,coin->bundlescount-1,0)) != 0 ) + if ( iguana_RTunspentindfind(myinfo,coin,&outpt,0,0,0,0,&height,txid,vout,coin->bundlescount-1,0) == 0 ) { + checkind = outpt.unspentind; + if ( (block= iguana_blockfind("unspentjson",coin,iguana_blockhash(coin,height))) != 0 && block->RO.timestamp != 0 ) + jaddnum(item,"timestamp",block->RO.timestamp); jaddnum(item,"height",height); jaddnum(item,"confirmations",coin->blocks.hwmchain.height - height + 1); jaddnum(item,"checkind",checkind); @@ -284,7 +310,7 @@ cJSON *iguana_RTunspentjson(struct supernet_info *myinfo,struct iguana_info *coi if ( up != 0 ) jadd(item,"spent",ramchain_unspentjson(up,outpt.unspentind)); jaddnum(item,"spentheight",spentheight); - jadd(item,"dest",ramchain_spentjson(coin,spentheight,txid,vout,value)); + jadd(item,"dest",ramchain_spentjson(myinfo,coin,spentheight,txid,vout,value)); } else if ( up != 0 ) jadd(item,"unspent",ramchain_unspentjson(up,outpt.unspentind)); @@ -400,7 +426,7 @@ int32_t iguana_RTscanunspents(struct supernet_info *myinfo,struct iguana_info *c { if ( unspent->spend == 0 ) { - spentheight = unspent->height; + spentheight = 0; memset(&outpt,0,sizeof(outpt)); memset(&txid,0,sizeof(txid)); if ( (parent= unspent->parent) != 0 ) @@ -408,6 +434,9 @@ int32_t iguana_RTscanunspents(struct supernet_info *myinfo,struct iguana_info *c else printf("unspent has no parent?\n"); outpt.isptr = 1; outpt.ptr = unspent; + outpt.txid = txid; + outpt.vout = unspent->vout; + outpt.value = unspent->value; outpt.hdrsi = unspent->height / coin->chain->bundlesize; if ( array != 0 ) jaddi(array,iguana_RTunspentjson(myinfo,coin,outpt,txid,unspent->vout,unspent->value,0,rmd160,coinaddr,pubkey33,spentheight,remoteaddr)); @@ -437,7 +466,12 @@ int64_t iguana_RTpkhashbalance(struct supernet_info *myinfo,struct iguana_info * if ( lastpt.isptr != 0 ) { *nump = iguana_RTscanunspents(myinfo,coin,remoteaddr,array,spentp,&deposits,unspents,max,rmd160,coinaddr,pubkey33,lastpt,lastheight); - } else printf("iguana_pkhashbalance: unexpected non-ptr lastpt\n"); + } + else + { + printf("iguana_pkhashbalance: unexpected RT non-ptr lastpt\n"); + coin->RTreset_needed = 1; + } return(deposits - *spentp); } if ( ramchain->Uextras == 0 || (rdata= ramchain->H.data) == 0 ) @@ -459,8 +493,11 @@ int64_t iguana_RTpkhashbalance(struct supernet_info *myinfo,struct iguana_info * uheight = iguana_uheight(coin,ramchain->height,T,rdata->numtxids,&U[unspentind]); if ( lastheight <= 0 || uheight < lastheight ) { + //printf("u%u ",unspentind); deposits += U[unspentind].value; memset(&outpt,0,sizeof(outpt)); + outpt.txid = T[U[unspentind].txidind].txid; + outpt.vout = unspentind - T[U[unspentind].txidind].firstvout; outpt.hdrsi = lastpt.hdrsi; outpt.isptr = 0; outpt.unspentind = unspentind; @@ -507,7 +544,7 @@ int64_t iguana_RTpkhashbalance(struct supernet_info *myinfo,struct iguana_info * printf("spend %s: [%d] deposits %.8f spent %.8f check %.8f (%.8f) vs A2[%u] %.8f\n",lastheight==IGUANA_MAXHEIGHT?"checkerr":"",lastpt.hdrsi,dstr(deposits),dstr(spent),dstr(checkval)+dstr(RTspend),dstr(*spentp),pkind,dstr(A2[pkind].total)); } (*spentp) = spent; - //printf("(%s) spent %.8f, RTspent %.8f deposits %.8f\n",coinaddr,dstr(spent),dstr(RTspend),dstr(deposits)); + //printf("[%d] (%s) spent %.8f, RTspent %.8f deposits %.8f\n",ramchain->height/coin->chain->bundlesize,coinaddr,dstr(spent),dstr(RTspend),dstr(deposits)); return(deposits - spent); } @@ -527,12 +564,12 @@ int32_t iguana_RTpkhasharray(struct supernet_info *myinfo,struct iguana_info *co if ( max > coin->bundlescount ) max = coin->bundlescount; //printf("minconf.%d maxconf.%d max.%d addr.%s last.%d maxunspents.%d\n",minconf,maxconf,max,coinaddr,lastheight,maxunspents); - for (total=n=i=0; i=coin->RTheight); i++) + for (total=n=i=0; i=coin->firstRTheight); i++) { + bp = 0; if ( i != max && (bp= coin->bundles[i]) == 0 ) continue; - else bp = 0; - if ( 0 && bp != 0 ) + if ( bp != 0 ) { if ( lastheight > 0 && bp->bundleheight > lastheight ) { @@ -583,7 +620,7 @@ int32_t iguana_RTpkhasharray(struct supernet_info *myinfo,struct iguana_info *co int64_t iguana_RTunspents(struct supernet_info *myinfo,struct iguana_info *coin,cJSON *array,int32_t minconf,int32_t maxconf,uint8_t *rmdarray,int32_t numrmds,int32_t lastheight,struct iguana_outpoint *unspents,int32_t *numunspentsp,char *remoteaddr,int32_t includespent) { - uint64_t total=0,sum=0; struct iguana_pkhash *P; uint8_t *addrtypes,*pubkeys; int32_t i,numunspents,maxunspents,flag = 0; char coinaddr[64]; + uint64_t total=0,sum=0; struct iguana_pkhash *P; uint8_t *addrtypes,*pubkeys; int32_t i,j,numunspents,maxunspents,flag = 0; char coinaddr[64]; //portable_mutex_lock(&coin->RTmutex); while ( 0 && coin->RTramchain_busy != 0 ) { @@ -600,9 +637,14 @@ int64_t iguana_RTunspents(struct supernet_info *myinfo,struct iguana_info *coin, P = calloc(coin->bundlescount,sizeof(*P)); for (i=0; ibundlescount,&rmdarray[i * 20],coinaddr,&pubkeys[33*i],lastheight,&unspents[numunspents],numunspentsp,maxunspents,remoteaddr,includespent); + iguana_RTpkhasharray(myinfo,coin,array,minconf,maxconf,&total,P,coin->bundlescount,&rmdarray[i * 20],coinaddr,&pubkeys[33*i],lastheight,unspents != 0 ? &unspents[numunspents] : 0,numunspentsp,maxunspents,remoteaddr,includespent); //printf("iguana_unspents: i.%d of %d: %s %.8f numunspents.%d\n",i,numrmds,coinaddr,dstr(total),*numunspentsp); maxunspents -= *numunspentsp; numunspents += *numunspentsp; @@ -620,7 +662,7 @@ int64_t iguana_RTunspents(struct supernet_info *myinfo,struct iguana_info *coin, uint8_t *iguana_rmdarray(struct supernet_info *myinfo,struct iguana_info *coin,int32_t *numrmdsp,cJSON *array,int32_t firsti) { - int32_t i,n,flag=0,j=0; char *coinaddr,rmdstr[41]; uint8_t *addrtypes,*rmdarray = 0; + int32_t i,n,flag=0,k,j=0; char *coinaddr,rmdstr[41]; uint8_t addrtype,*addrtypes,*rmdarray = 0; *numrmdsp = 0; if ( array == 0 || cJSON_GetArraySize(array) == 0 ) array = iguana_getaddressesbyaccount(myinfo,coin,"*"); @@ -633,9 +675,19 @@ uint8_t *iguana_rmdarray(struct supernet_info *myinfo,struct iguana_info *coin,i { if ( (coinaddr= jstr(jitem(array,i),0)) != 0 ) { + //printf("(%s %s) ",coinaddr,rmdstr); + if ( iguana_addressvalidate(coin,&addrtype,coinaddr) < 0 ) + { + printf("i.%d illegal coinaddr.(%s) longest.%d\n",i,coinaddr,coin->longestchain); + continue; + } bitcoin_addr2rmd160(&addrtypes[j],&rmdarray[20 * j],coinaddr); + for (k=0; k<20; k++) + if ( rmdarray[20 * j + k] != 0 ) + break; + if ( k == 20 ) + continue; init_hexbytes_noT(rmdstr,&rmdarray[20 * j],20); - //printf("(%s %s) ",coinaddr,rmdstr); j++; } } @@ -648,7 +700,7 @@ uint8_t *iguana_rmdarray(struct supernet_info *myinfo,struct iguana_info *coin,i int64_t *iguana_PoS_weights(struct supernet_info *myinfo,struct iguana_info *coin,struct iguana_pkhash **Ptrp,int64_t *supplyp,int32_t *numacctsp,int32_t *nonzp,int32_t *errsp,int32_t lastheight) { - int64_t balance,total,supply,*weights=0; uint32_t pkind; int32_t numrmds,minconf,neg,numunspents,nonz,num=0; struct iguana_bundle *bp; struct iguana_ramchaindata *rdata; struct iguana_pkhash *refP; uint8_t rmd160[20],*rmdarray; cJSON *array; char coinaddr[64]; //struct iguana_account *A2; struct iguana_utxo *U2; + int64_t balance,total,supply,*weights=0; uint32_t pkind; int32_t j,numrmds,minconf,neg,numunspents,nonz,num=0; struct iguana_bundle *bp; struct iguana_ramchaindata *rdata; struct iguana_pkhash *refP; uint8_t rmd160[20],*rmdarray; cJSON *array; char coinaddr[64]; //struct iguana_account *A2; struct iguana_utxo *U2; *supplyp = 0; *numacctsp = *nonzp = 0; *errsp = 1; @@ -666,6 +718,11 @@ int64_t *iguana_PoS_weights(struct supernet_info *myinfo,struct iguana_info *coi { total = 0; memcpy(rmd160,refP[pkind].rmd160,sizeof(rmd160)); + for (j=0; j<20; j++) + if ( rmd160[j] != 0 ) + break; + if ( j == 20 ) + continue; array = cJSON_CreateArray(); bitcoin_address(coinaddr,coin->chain->pubtype,rmd160,sizeof(rmd160)); jaddistr(array,coinaddr); @@ -754,11 +811,13 @@ int32_t iguana_RTunspent_check(struct supernet_info *myinfo,struct iguana_info * if ( iguana_RTunspentind2txid(myinfo,coin,&spentheight,&txid,&vout,outpt) == 0 ) { //char str[65]; printf("verify %s/v%d is not already used\n",bits256_str(str,txid),vout); - if ( basilisk_addspend(myinfo,coin->symbol,txid,vout,0) != 0 ) + //return(iguana_RTspentflag(myinfo,coin,&RTspend,&spentheight,ramchain,outpt,height,minconf,coin->longestchain,U[unspentind].value)); + /*if ( basilisk_addspend(myinfo,coin->symbol,txid,vout,0) != 0 ) { char str[65]; printf("iguana_unspent_check found unspentind (%u %d) %s\n",outpt.hdrsi,outpt.unspentind,bits256_str(str,txid)); return(1); - } else return(0); + } else return(0);*/ + return(0); } printf("iguana_unspent_check: couldnt find (%d %d)\n",outpt.hdrsi,outpt.unspentind); return(-1); @@ -766,10 +825,20 @@ int32_t iguana_RTunspent_check(struct supernet_info *myinfo,struct iguana_info * int32_t iguana_RTaddr_unspents(struct supernet_info *myinfo,struct iguana_info *coin,uint64_t *sump,struct iguana_outpoint *unspents,int32_t max,char *coinaddr,char *remoteaddr,int32_t lastheight,int32_t includespent) { - int32_t n,k,numunspents,minconf = 0; uint64_t total; uint8_t rmd160[20],pubkey[65],addrtype; + int32_t n,j,k,numunspents,minconf = 0; uint64_t total; uint8_t rmd160[20],pubkey[65],addrtype; total = 0; n = numunspents = 0; + if ( iguana_addressvalidate(coin,&addrtype,coinaddr) < 0 ) + { + printf("illegal coinaddr.(%s) minconf.%d longest.%d diff.%d\n",coinaddr,minconf,coin->longestchain,coin->blocks.hwmchain.height - minconf); + return(0); + } bitcoin_addr2rmd160(&addrtype,rmd160,coinaddr); + for (j=0; j<20; j++) + if ( rmd160[j] != 0 ) + break; + if ( j == 20 ) + return(0); iguana_RTpkhasharray(myinfo,coin,0,minconf,coin->longestchain,&total,0,coin->bundlescount,rmd160,coinaddr,pubkey,lastheight,unspents,&n,max-1000,remoteaddr,includespent); numunspents = n; for (k=0; ktxfee; - for (i=numunspents=0; ilongestchain,coin->blocks.hwmchain.height - minconf); - if ( coin->FULLNODE != 0 || coin->VALIDATENODE != 0 ) - { - numunspents += iguana_RTaddr_unspents(myinfo,coin,&sum,&unspents[numunspents],max-numunspents,coinaddr,remoteaddr,coin->blocks.hwmchain.height - minconf,0); - } - else - { - if ( (waddr= iguana_waddresssearch(myinfo,&wacct,coinaddr)) != 0 && waddr->numunspents > 0 ) - { - r = (rand() % waddr->numunspents); - for (j=0; jnumunspents; j++) - { - i = ((j + r) % waddr->numunspents); - bu = &waddr->unspents[i]; - if ( basilisk_addspend(myinfo,coin->symbol,bu->txid,bu->vout,0) == 0 ) - { - for (k=0; khdrsi; - outpt.isptr = 0; - outpt.unspentind = bu->unspentind; - outpt.value = bu->value; - *unspents = outpt; - sum += bu->value; - printf("ADD unspent, mark spent\n"); - basilisk_addspend(myinfo,coin->symbol,bu->txid,bu->vout,1); - unspents++; - numunspents++; - } else printf("skip pending txid.%s/v%d\n",bits256_str(str,bu->txid),bu->vout); - } - } - } - if ( numunspents > max || sum > required ) - break; - //printf("n.%d max.%d total %.8f\n",n,max,dstr(total)); - } - } - *totalp = sum; - return(numunspents); -} - int32_t iguana_RTuvaltxid(struct supernet_info *myinfo,bits256 *txidp,struct iguana_info *coin,struct iguana_outpoint outpt) { struct iguana_bundle *bp; struct iguana_unspent *U,*u; struct iguana_txid *T; struct iguana_ramchain *ramchain; struct iguana_ramchaindata *rdata; struct iguana_RTunspent *unspent; struct iguana_RTtxid *parent; @@ -894,13 +904,95 @@ uint64_t iguana_unspentavail(struct supernet_info *myinfo,struct iguana_info *co else return(0); } -cJSON *iguana_RTlistunspent(struct supernet_info *myinfo,struct iguana_info *coin,cJSON *argarray,int32_t minconf,int32_t maxconf,char *remoteaddr) +int32_t iguana_unspentfindjson(cJSON *destarray,cJSON *item) { - int32_t numrmds,numunspents=0; uint8_t *rmdarray; cJSON *retjson = cJSON_CreateArray(); - rmdarray = iguana_rmdarray(myinfo,coin,&numrmds,argarray,0); - iguana_RTunspents(myinfo,coin,retjson,minconf,maxconf,rmdarray,numrmds,(1 << 30),0,&numunspents,remoteaddr,0); - if ( rmdarray != 0 ) - free(rmdarray); + cJSON *destitem; int32_t i,n; + if ( (n= cJSON_GetArraySize(destarray)) > 0 ) + { + for (i=0; iFULLNODE != 0 || coin->VALIDATENODE != 0 ) + { + retjson = cJSON_CreateArray(); + rmdarray = iguana_rmdarray(myinfo,coin,&numrmds,argarray,0); + iguana_RTunspents(myinfo,coin,retjson,minconf,maxconf,rmdarray,numrmds,(1 << 30),0,&numunspents,remoteaddr,includespends); + if ( rmdarray != 0 ) + free(rmdarray); + } + else + { + portable_mutex_lock(&myinfo->bu_mutex); + if ( (unspents= myinfo->Cunspents) != 0 && (array= jobj(unspents,coin->symbol)) != 0 ) + unspents = jduplicate(array); + portable_mutex_unlock(&myinfo->bu_mutex); + retjson = cJSON_CreateArray(); + if ( unspents != 0 ) + { + if ( (n= cJSON_GetArraySize(unspents)) > 0 && (m= cJSON_GetArraySize(argarray)) > 0 ) + { + for (i=0; i 0 ) + { + memset(hash.bytes,0,sizeof(hash)); + vals = cJSON_CreateObject(); + jaddstr(vals,"coin",coin->symbol); + jaddnum(vals,"history",1); + jaddnum(vals,"firstheight",0); + jaddnum(vals,"fanout",MAX(5,(int32_t)sqrt(NUMRELAYS)+1)); + jaddnum(vals,"numrequired",MAX(5,(int32_t)sqrt(NUMRELAYS)+1)); + jadd(vals,"addresses",jduplicate(argarray)); + if ( (retstr= basilisk_standardservice("BAL",myinfo,0,hash,vals,"",1)) != 0 ) + { + if ( (retarray= cJSON_Parse(retstr)) != 0 ) + { + if ( (n= cJSON_GetArraySize(retarray)) > 0 ) + { + for (i=0; itxfee; + if ( coin->FULLNODE != 0 || coin->VALIDATENODE != 0 ) + { + for (i=numunspents=0; i 0 ) + { + for (i=0; i max || sum > required ) + break; + } + } + free_json(array); + } + } + *totalp = sum; + printf("numunspents.%d max.%d sum %.8f required %.8f\n",numunspents,max,dstr(sum),dstr(required)); + return(numunspents); +} + #define UTXOADDR_ITEMSIZE 32 #define iguana_utxotable_numinds(ind) (((ind) == 0xffff) ? coin->utxoaddrlastcount : (coin->utxoaddroffsets[(ind) + 1] - coin->utxoaddroffsets[ind])) @@ -1268,9 +1413,15 @@ uint64_t iguana_utxoaddr_gen(struct supernet_info *myinfo,struct iguana_info *co { if ( (bp= coin->bundles[hdrsi]) != 0 && bp->bundleheight < maxheight ) { - balance += iguana_bundle_unspents(coin,bp,&last); - fprintf(stderr,"(%d %.8f) ",hdrsi,dstr(balance)); - height = bp->bundleheight + bp->n; + iguana_volatilespurge(coin,&bp->ramchain); + if ( iguana_volatilesmap(coin,&bp->ramchain) != 0 ) + printf("error mapping bundle.[%d]\n",hdrsi); + else + { + balance += iguana_bundle_unspents(coin,bp,&last); + fprintf(stderr,"(%d %.8f) ",hdrsi,dstr(balance)); + height = bp->bundleheight + bp->n; + } } } sprintf(fname,"%s/%s/utxoaddrs",GLOBAL_DBDIR,coin->symbol), OS_portable_path(fname); diff --git a/iguana/iguana_volatiles.c b/iguana/iguana_volatiles.c index d03e592e6..934568915 100755 --- a/iguana/iguana_volatiles.c +++ b/iguana/iguana_volatiles.c @@ -162,14 +162,16 @@ int32_t iguana_RTutxofunc(struct iguana_info *coin,int32_t *fromheightp,int32_t if ( (rdata= ramchain->H.data) == 0 ) return(1); val = ((uint64_t)spentpt.hdrsi << 32) | spentpt.unspentind; - if ( (utxo.fromheight= fromheight) != 0 ) - utxo.spentflag = 1; + if ( fromheight != 0 ) + utxo.fromheight = fromheight, utxo.spentflag = 1; if ( spentpt.unspentind > 0 && spentpt.unspentind < rdata->numunspents ) { if ( ramchain->Uextras != 0 ) { utxo = ramchain->Uextras[spentpt.unspentind]; - if ( lockflag != 0 ) + if ( fromheight != 0 ) + utxo.fromheight = fromheight, utxo.spentflag = 1; + if ( lockflag != 0 || fromheight != 0 ) { if ( (hhutxo= iguana_hhutxofind(coin,val)) == 0 ) { @@ -178,13 +180,20 @@ int32_t iguana_RTutxofunc(struct iguana_info *coin,int32_t *fromheightp,int32_t hhutxo->u = utxo; HASH_ADD_KEYPTR(hh,coin->utxotable,&hhutxo->uval,sizeof(hhutxo->uval),hhutxo); } - printf("iguana_utxofind: need to change to new RT lock method\n"); + //printf("iguana_utxofind: need to change to new RT lock method\n"); } } if ( ramchain->Uextras == 0 || utxo.spentflag == 0 ) { if ( (hhutxo= iguana_hhutxofind(coin,val)) != 0 ) + { utxo = hhutxo->u; + if ( fromheight != 0 ) + { + utxo.fromheight = fromheight, utxo.spentflag = 1; + hhutxo->u = utxo; + } + } //printf("iguana_utxofind: need to change to new RT method\n"); } } @@ -207,7 +216,7 @@ int32_t iguana_RTutxofunc(struct iguana_info *coin,int32_t *fromheightp,int32_t int32_t iguana_RTspentflag(struct supernet_info *myinfo,struct iguana_info *coin,int64_t *RTspendp,int32_t *spentheightp,struct iguana_ramchain *ramchain,struct iguana_outpoint spentpt,int32_t height,int32_t minconf,int32_t maxconf,uint64_t amount) { - uint32_t numunspents; int32_t RTspentflag,spentflag,lockedflag,fromheight; uint64_t confs;//,RTspend = 0; + uint32_t numunspents; int32_t RTspentflag,spentflag,lockedflag,fromheight=0; uint64_t confs;//,RTspend = 0; struct iguana_ramchaindata *rdata; struct iguana_RTunspent *unspent; *spentheightp = -1; if ( coin->disableUTXO != 0 ) @@ -219,6 +228,7 @@ int32_t iguana_RTspentflag(struct supernet_info *myinfo,struct iguana_info *coin { if ( (unspent= spentpt.ptr) != 0 ) { + *spentheightp = unspent->fromheight; if ( unspent->spend != 0 ) { *RTspendp += (amount == 0) ? coin->txfee : amount; @@ -305,30 +315,10 @@ int32_t iguana_volatileupdate(struct iguana_info *coin,int32_t incremental,struc { //double startmillis = OS_milliseconds(); static double totalmillis; static int32_t utxon; printf("hhutxo deprecated\n"); - exit(-1); - /*spentP = RAMCHAIN_PTR(rdata,Poffset); - spentU = RAMCHAIN_PTR(rdata,Uoffset); - if ( iguana_utxoupdate(coin,spent_hdrsi,spent_unspentind,spent_pkind,spent_value,spendind,fromheight,spentP[spent_pkind].rmd160) == 0 ) - { - //totalmillis += (OS_milliseconds() - startmillis); - // if ( (++utxon % 100000) == 0 ) - // printf("ave utxo[%d] %.2f micros total %.2f seconds\n",utxon,(1000. * totalmillis)/utxon,totalmillis/1000.); - //portable_mutex_unlock(&coin->RTmutex); - return(0); - }*/ + iguana_exit(0,0); } //portable_mutex_unlock(&coin->RTmutex); printf("end iguana_volatileupdate.%d: [%d] spent.(u%u %.8f pkind.%d) double spend? at ht.%d [%d] spendind.%d (%p %p)\n",incremental,spent_hdrsi,spent_unspentind,dstr(spent_value),spent_pkind,fromheight,fromheight/coin->chain->bundlesize,spendind,spentchain->Uextras,spentchain->A2); - /*if ( coin->current != 0 && fromheight >= coin->current->bundleheight ) - coin->RTdatabad = 1; - else - { - printf("from.%d vs current.%d\n",fromheight,coin->current->bundleheight); - iguana_bundleremove(coin,fromheight/coin->chain->bundlesize,0); - } - coin->spendvectorsaved = 0; - coin->started = 0; - coin->active = 0;*/ coin->RTdatabad = 1; if ( coin->current != 0 && spent_hdrsi != coin->current->hdrsi && spent_hdrsi != fromheight/coin->chain->bundlesize ) { @@ -346,7 +336,7 @@ int32_t iguana_volatileupdate(struct iguana_info *coin,int32_t incremental,struc bp->ramchain.H.data = 0; } portable_mutex_unlock(&coin->special_mutex); - exit(-1); + iguana_exit(0,0); } } else if ( coin->spendvectorsaved > 1 ) @@ -406,9 +396,9 @@ void iguana_volatilespurge(struct iguana_info *coin,struct iguana_ramchain *ramc if ( ramchain != 0 ) { //printf("volatilespurge.[%d] (%p %p) %p %p\n",ramchain->height/coin->chain->bundlesize,ramchain->A2,ramchain->Uextras,ramchain->debitsfileptr,ramchain->lastspendsfileptr); - if ( ramchain->allocatedA2 != 0 && ramchain->A2 != 0 && ramchain->A2 != ramchain->debitsfileptr+sizeof(bits256)*2+sizeof(int32_t) ) + if ( ramchain->allocatedA2 != 0 && ramchain->A2 != 0 && (long)ramchain->A2 != (long)ramchain->debitsfileptr+sizeof(bits256)*2+sizeof(int32_t) ) free(ramchain->A2); - if ( ramchain->allocatedU2 != 0 && ramchain->Uextras != 0 && ramchain->Uextras != ramchain->lastspendsfileptr+sizeof(bits256)*2+sizeof(int32_t) ) + if ( ramchain->allocatedU2 != 0 && ramchain->Uextras != 0 && (long)ramchain->Uextras != (long)ramchain->lastspendsfileptr+sizeof(bits256)*2+sizeof(int32_t) ) free(ramchain->Uextras); ramchain->A2 = 0; ramchain->Uextras = 0; @@ -451,7 +441,7 @@ int32_t iguana_volatilesmap(struct iguana_info *coin,struct iguana_ramchain *ram numhdrsi = *(int32_t *)ramchain->debitsfileptr; memcpy(balancehash.bytes,(void *)((long)ramchain->debitsfileptr + sizeof(numhdrsi)),sizeof(balancehash)); memcpy(allbundles.bytes,(void *)((long)ramchain->debitsfileptr + sizeof(numhdrsi) + sizeof(balancehash)),sizeof(allbundles)); - if ( coin->balanceswritten == 0 ) + if ( coin->balanceswritten == 0 ) { coin->balanceswritten = numhdrsi; coin->balancehash = balancehash; @@ -492,7 +482,9 @@ int32_t iguana_volatilesmap(struct iguana_info *coin,struct iguana_ramchain *ram } else { - printf("ramchain.[%d] map error balanceswritten %d vs %d hashes %x %x\n",rdata->height,coin->balanceswritten,numhdrsi,coin->balancehash.uints[0],balancehash.uints[0]); + static uint32_t counter; + if ( counter++ < 3 ) + printf("ramchain.[%d] map error balanceswritten %d vs %d hashes %x %x\n",rdata->height,coin->balanceswritten,numhdrsi,coin->balancehash.uints[0],balancehash.uints[0]); err++; OS_removefile(fname,0); } diff --git a/iguana/iguana_wallet.c b/iguana/iguana_wallet.c index 34318df97..ff8bb7842 100755 --- a/iguana/iguana_wallet.c +++ b/iguana/iguana_wallet.c @@ -31,10 +31,18 @@ void scrubfree(char *sensitivestr) struct iguana_waddress *iguana_waddressfind(struct supernet_info *myinfo,struct iguana_waccount *wacct,char *coinaddr) { - struct iguana_waddress *waddr; uint8_t addrtype,rmd160[20]; + struct iguana_waddress *waddr,*tmp; uint8_t addrtype,rmd160[20]; bitcoin_addr2rmd160(&addrtype,rmd160,coinaddr); //calc_rmd160_sha256(rmd160,pubkey33,33); HASH_FIND(hh,wacct->waddr,rmd160,sizeof(rmd160),waddr); + if ( waddr == 0 ) + { + HASH_ITER(hh,wacct->waddr,waddr,tmp) + { + printf("%s ",waddr->coinaddr); + } + printf("not in %s\n",wacct->account); + } //if ( waddr != 0 && coin != 0 && strcmp(coin->symbol,waddr->symbol) != 0 ) // return(0); //printf("%s (%s).%d in (%s)\n",waddr==0?"couldnt find":"found",coinaddr,len,wacct->account); @@ -78,7 +86,7 @@ struct iguana_waccount *iguana_waccountcreate(struct supernet_info *myinfo,char wacct = mycalloc('w',1,sizeof(*wacct) + len); strcpy(wacct->account,account); HASH_ADD_KEYPTR(hh,myinfo->wallet,wacct->account,len,wacct); - printf("waccountcreate.(%s) -> wacct.%p\n",account,wacct); + //printf("waccountcreate.(%s) -> wacct.%p\n",account,wacct); if ( (ptr= iguana_waccountfind(myinfo,account)) != wacct ) { printf("ERROR: iguana_waccountcreate verify error %p vs %p\n",ptr,wacct); @@ -116,7 +124,7 @@ struct iguana_waddress *iguana_waddresscreate(struct supernet_info *myinfo,struc struct iguana_waddress *iguana_waddressadd(struct supernet_info *myinfo,struct iguana_info *coin,struct iguana_waccount *wacct,struct iguana_waddress *addwaddr,char *redeemScript) { struct iguana_waddress *waddr,*ptr; uint8_t rmd160[20],addrtype; - printf("search for (%s)\n",addwaddr->coinaddr); + //printf("search for (%s)\n",addwaddr->coinaddr); bitcoin_addr2rmd160(&addrtype,rmd160,addwaddr->coinaddr); HASH_FIND(hh,wacct->waddr,rmd160,sizeof(rmd160),waddr); if ( waddr == 0 ) @@ -151,9 +159,9 @@ struct iguana_waddress *iguana_waddressadd(struct supernet_info *myinfo,struct i { waddr->addrtype = addrtype;//coin->chain->pubtype; waddr->wiftype = addwaddr->wiftype; - if ( bits256_nonz(waddr->privkey) == 0 ) + //if ( bits256_nonz(waddr->privkey) == 0 ) waddr->privkey = addwaddr->privkey; - if ( addwaddr->wifstr[0] != 0 ) + //if ( addwaddr->wifstr[0] != 0 ) strcpy(waddr->wifstr,addwaddr->wifstr); memcpy(waddr->rmd160,rmd160,sizeof(waddr->rmd160)); calc_rmd160_sha256(rmd160,addwaddr->pubkey,bitcoin_pubkeylen(addwaddr->pubkey)); @@ -167,9 +175,9 @@ struct iguana_waddress *iguana_waddressadd(struct supernet_info *myinfo,struct i { HASH_ADD_KEYPTR(hh,wacct->waddr,waddr->rmd160,sizeof(waddr->rmd160),waddr); myinfo->dirty = (uint32_t)time(NULL); - int32_t i; for (i=0; i<20; i++) - printf("%02x",waddr->rmd160[i]); - printf(" add (%s) scriptlen.%d -> (%s) wif.(%s)\n",waddr->coinaddr,waddr->scriptlen,wacct->account,waddr->wifstr); + //int32_t i; for (i=0; i<20; i++) + // printf("%02x",waddr->rmd160[i]); + //printf(" add (%s) scriptlen.%d -> (%s) wif.(%s)\n",waddr->coinaddr,waddr->scriptlen,wacct->account,waddr->wifstr); } else { @@ -245,17 +253,21 @@ struct iguana_waddress *iguana_waccountswitch(struct supernet_info *myinfo,struc addr = *waddr; flag = 1; iguana_waddressdelete(myinfo,coin,wacct,coinaddr); + waddr = 0; } } if ( (wacct= iguana_waccountcreate(myinfo,account)) != 0 ) { - waddr = iguana_waddresscreate(myinfo,coin,wacct,coinaddr,redeemScript); + if ( waddr == 0 ) + waddr = iguana_waddresscreate(myinfo,coin,wacct,coinaddr,redeemScript); if ( waddr != 0 ) { if ( redeemScript == 0 ) iguana_waddresscalc(myinfo,coin->chain->pubtype,coin->chain->wiftype,waddr,addr.privkey); strcpy(waddr->coinaddr,coinaddr); waddr = iguana_waddressadd(myinfo,coin,wacct,waddr,redeemScript); + if ( flag != 0 ) + waddr->privkey = addr.privkey; } else waddr = 0; } myinfo->dirty = (uint32_t)time(NULL); @@ -264,7 +276,7 @@ struct iguana_waddress *iguana_waccountswitch(struct supernet_info *myinfo,struc uint8_t *iguana_walletrmds(struct supernet_info *myinfo,struct iguana_info *coin,int32_t *numrmdsp) { - int32_t iter,n,m; struct iguana_waccount *acct,*tmp; uint8_t *pubkeys,*addrtypes,*rmdarray = 0; struct iguana_waddress *waddr,*tmp2; + int32_t iter,n,m; struct iguana_waccount *acct,*tmp; uint8_t *pubkeys=0,*addrtypes=0,*rmdarray = 0; struct iguana_waddress *waddr,*tmp2; for (iter=n=m=0; iter<2; iter++) { HASH_ITER(hh,myinfo->wallet,acct,tmp) @@ -273,7 +285,7 @@ uint8_t *iguana_walletrmds(struct supernet_info *myinfo,struct iguana_info *coin { if ( iter == 0 ) n++; - else if ( m < n ) + else if ( addrtypes != 0 && pubkeys != 0 && m < n ) { addrtypes[m] = waddr->addrtype; memcpy(&rmdarray[m * 20],waddr->rmd160,20); @@ -295,6 +307,8 @@ uint8_t *iguana_walletrmds(struct supernet_info *myinfo,struct iguana_info *coin cJSON *iguana_getaddressesbyaccount(struct supernet_info *myinfo,struct iguana_info *coin,char *account) { struct iguana_waccount *subset,*tmp; char refaddr[64],coinaddr[64]; struct iguana_waddress *waddr,*tmp2; cJSON *retjson,*array; + if ( coin == 0 ) + return(0); retjson = cJSON_CreateObject(); array = cJSON_CreateArray(); if ( account == 0 || account[0] == 0 ) @@ -453,6 +467,7 @@ char *iguana_walletvalue(char *buf,struct iguana_waddress *waddr) if ( waddr->scriptlen > 0 ) init_hexbytes_noT(buf,waddr->redeemScript,waddr->scriptlen); else init_hexbytes_noT(buf,waddr->privkey.bytes,sizeof(waddr->privkey)); + //char str[65]; printf("%s -> walletvalue.(%s)\n",bits256_str(str,waddr->privkey),buf); return(buf); } @@ -464,6 +479,7 @@ int32_t iguana_payloadupdate(struct supernet_info *myinfo,struct iguana_info *co if ( account == 0 || account[0] == 0 ) account = "default"; payload = cJSON_DetachItemFromObject(retjson,"wallet"); + //printf("PAYLOAD.(%s)\n",jprint(payload,0)); if ( payload == 0 ) payload = cJSON_CreateObject(); if ( waddr != 0 && (valuestr= iguana_walletvalue(valuebuf,waddr)) != 0 ) @@ -479,13 +495,13 @@ int32_t iguana_payloadupdate(struct supernet_info *myinfo,struct iguana_info *co { accountobj = cJSON_CreateObject(); jadd(payload,account,accountobj); + //printf("ADDACCOUNT.(%s)\n",jprint(accountobj,0)); } jaddstr(accountobj,rmdstr,valuestr); } jadd(retjson,"wallet",payload); newstr = jprint(retjson,1); retval = iguana_loginsave(myinfo,coin,newstr); - //printf("newstr.(%s) retval.%d\n",newstr,retval); free(newstr); } else printf("iguana_payloadupdate: error parsing.(%s)\n",retstr); return(retval); @@ -518,7 +534,8 @@ cJSON *iguana_payloadmerge(cJSON *loginjson,cJSON *importjson) cJSON *iguana_walletadd(struct supernet_info *myinfo,struct iguana_waddress **waddrp,struct iguana_info *coin,char *retstr,char *account,struct iguana_waddress *refwaddr,int32_t setcurrent,char *redeemScript) { - cJSON *retjson=0; struct iguana_waccount *wacct; struct iguana_waddress *waddr; + cJSON *retjson=0; struct iguana_waccount *wacct; struct iguana_waddress *waddr=0; + printf("walletaddr.(%s)\n",retstr); if ( (wacct= iguana_waccountfind(myinfo,account)) == 0 ) wacct = iguana_waccountcreate(myinfo,account); if ( wacct != 0 ) @@ -599,7 +616,7 @@ char *iguana_walletfields(struct iguana_info *coin,int32_t *p2shflagp,char *wifs int32_t iguana_walletemit(struct supernet_info *myinfo,char *fname,struct iguana_info *coin,cJSON *array) { - cJSON *item,*child; char str[64],wifstr[128],*account,coinaddr[64],*privstr; int32_t i,n,p2shflag; FILE *fp; + cJSON *item,*child; char str[65],wifstr[128],*account,coinaddr[64],*privstr; int32_t i,n,p2shflag; FILE *fp; if ( (fp= fopen(fname,"wb")) == 0 ) return(-1); n = cJSON_GetArraySize(array); @@ -745,8 +762,11 @@ cJSON *iguana_walletiterate(struct supernet_info *myinfo,struct iguana_info *coi if ( flag < -1 ) { HASH_DELETE(hh,wacct->waddr,waddr); - if ( waddr->unspents != 0 ) - free(waddr->unspents); + /*if ( waddr->Cunspents != 0 ) + free_json(waddr->Cunspents), waddr->Cunspents = 0; + if ( waddr->Cspends != 0 ) + free_json(waddr->Cspends), waddr->Cspends = 0; + */ //printf("walletiterate: %p free %s\n",waddr,waddr->coinaddr); myfree(waddr,sizeof(*waddr) + waddr->scriptlen); } @@ -798,7 +818,7 @@ cJSON *iguana_walletiterate(struct supernet_info *myinfo,struct iguana_info *coi } printf("persistent address not found in wallet, autoadd.(%s)\n",coinaddr); } - else if ( persistent_flag != 0 ) + else if ( persistent_flag != 0 && 0 ) printf("found persistent address in wallet\n"); } portable_mutex_unlock(&myinfo->bu_mutex); @@ -808,9 +828,8 @@ cJSON *iguana_walletiterate(struct supernet_info *myinfo,struct iguana_info *coi *badp = bad; if ( iguana_waddresssearch(myinfo,&wacct,myinfo->myaddr.BTCD) != 0 ) { - printf("found persistent address.(%s)\n",myinfo->myaddr.BTCD); + //printf("found persistent address.(%s)\n",myinfo->myaddr.BTCD); } - return(array); } @@ -833,7 +852,6 @@ char *iguana_walletscan(struct supernet_info *myinfo,struct iguana_info *coin,in void iguana_walletinitcheck(struct supernet_info *myinfo,struct iguana_info *coin) { - // "wallet":{"test":{"R9S7zZzzvgb4CkiBH1i7gnFcwJuL1MYbxN":"18ab9c89ce83929db720cf26b663bf762532276146cd9d3e1f89086fcdf00053"}} cJSON *payload,*item,*array,*child; char *account,coinaddr[128],*privstr,wifstr[128]; int32_t i,p2shflag,n; struct iguana_waccount *wacct; struct iguana_waddress waddr; bits256 privkey; if ( myinfo->wallet == 0 && myinfo->decryptstr != 0 && (payload= cJSON_Parse(myinfo->decryptstr)) != 0 ) { @@ -862,14 +880,16 @@ void iguana_walletinitcheck(struct supernet_info *myinfo,struct iguana_info *coi { privkey = bits256_conv(child->valuestring); if ( iguana_waddresscalc(myinfo,coin->chain->pubtype,coin->chain->wiftype,&waddr,privkey) != 0 ) + { iguana_waddressadd(myinfo,coin,wacct,&waddr,0); - else printf("walletinitcheck: error waddresscalc\n"); + printf("(%s) ",waddr.coinaddr); + } else printf("walletinitcheck: error waddresscalc\n"); } } } child = child->next; } - //printf("account.(%s)\n",account); + printf("account.(%s)\n",account); } item = item->next; } @@ -879,7 +899,7 @@ void iguana_walletinitcheck(struct supernet_info *myinfo,struct iguana_info *coi myinfo->decryptstr = 0; myinfo->dirty = 0; } - printf("call walletiterate from initcheck.%p\n",myinfo->decryptstr); + //printf("call walletiterate from initcheck.%p\n",myinfo->decryptstr); iguana_walletiterate(myinfo,coin,1,0,0,0,0); } @@ -897,10 +917,6 @@ void iguana_walletlock(struct supernet_info *myinfo,struct iguana_info *coin) memset(myinfo->myaddr.NXTADDR,0,sizeof(myinfo->myaddr.NXTADDR)); myinfo->myaddr.nxt64bits = 0; myinfo->expiration = 0; - portable_mutex_lock(&myinfo->bu_mutex); - if ( myinfo->spends != 0 ) - free(myinfo->spends), myinfo->numspends = 0; - portable_mutex_unlock(&myinfo->bu_mutex); iguana_walletiterate(myinfo,coin,-2,0,0,0,0); } @@ -934,13 +950,31 @@ int64_t oldiguana_waccountbalance(struct supernet_info *myinfo,struct iguana_inf cJSON *iguana_privkeysjson(struct supernet_info *myinfo,struct iguana_info *coin,cJSON *vins) { - int32_t i,j,n,numinputs; struct iguana_waddress *waddr; struct iguana_outpoint spentpt; struct iguana_waccount *wacct; char *addresses,*address,coinaddr[64]; cJSON *privkeys = cJSON_CreateArray(); + int32_t i,j,n,numinputs,scriptlen; struct iguana_waddress *waddr; struct iguana_waccount *wacct; char *addresses,*address,*scripthexstr,coinaddr[64]; cJSON *scriptobj,*privkeys,*item; uint8_t spendscript[IGUANA_MAXSCRIPTSIZE]; + privkeys = cJSON_CreateArray(); if ( (numinputs= cJSON_GetArraySize(vins)) > 0 ) { addresses = calloc(numinputs,64); for (i=n=0; i> 1; + decode_hex(spendscript,scriptlen,scripthexstr); + address = iguana_scriptaddress(coin,coinaddr,spendscript,scriptlen); + } + } + //if ( (address= iguana_RTinputaddress(myinfo,coin,coinaddr,&spentpt,jitem(vins,i))) != 0 ) + if ( address != 0 ) { for (j=0; jsymbol,coinaddr,-1,minconf)) != 0 ) + if ( (balancestr= iguana_balance(IGUANA_CALLARGS,coin->symbol,coinaddr,1<<30,minconf)) != 0 ) { - //printf("balancestr.(%s) (%s)\n",balancestr,coinaddr); + //printf("balancestr.(%s) (%s) firstheight.%d\n",balancestr,coinaddr,firstheight); if ( (balancejson= cJSON_Parse(balancestr)) != 0 ) { balance = jdouble(balancejson,"balance") * SATOSHIDEN; @@ -984,9 +1018,9 @@ int64_t iguana_addressreceived(struct supernet_info *myinfo,struct iguana_info * jaddibits256(txids,jbits256(item,"txid")); if ( vouts != 0 ) jaddinum(vouts,jint(item,"vout")); - if ( unspents != 0 && jobj(item,"unspent") != 0 ) + if ( unspents != 0 && jobj(item,"spent") == 0 && jobj(item,"dest") == 0 ) jaddi(unspents,jduplicate(item)); - if ( spends != 0 && jobj(item,"spent") != 0 ) + if ( spends != 0 && (jobj(item,"spent") != 0 || jobj(item,"dest") != 0) ) jaddi(spends,jduplicate(item)); } } @@ -995,6 +1029,10 @@ int64_t iguana_addressreceived(struct supernet_info *myinfo,struct iguana_info * } free(balancestr); } + //if ( spends != 0 ) + // printf("SPENDS.(%s)\n",jprint(spends,0)); + //if ( unspents != 0 ) + // printf("UNSPENTS.(%s)\n",jprint(unspents,0)); return(balance); } @@ -1031,7 +1069,7 @@ STRING_ARG(bitcoinrpc,validateaddress,address) strcat(str,"88ac"); jaddstr(retjson,"scriptPubKey",str); jadd(retjson,"isscript",(addrtype == coin->chain->p2shtype) ? jtrue() : jfalse()); - if ( iguana_ismine(myinfo,coin,coinaddr,addrtype,pubkey,rmd160) > 0 ) + if ( iguana_ismine(myinfo,coin,coinaddr,addrtype,pubkey,rmd160) != 0 ) { init_hexbytes_noT(str,pubkey,bitcoin_pubkeylen(pubkey)); jaddstr(retjson,"pubkey",str); @@ -1051,12 +1089,18 @@ STRING_ARG(bitcoinrpc,validateaddress,address) return(jprint(retjson,1)); } -ZERO_ARGS(bitcoinrpc,getinfo) +double _max100(double val) { - cJSON *retjson; - if ( remoteaddr != 0 ) - return(clonestr("{\"error\":\"no remote\"}")); - retjson = cJSON_CreateObject(); + if ( val < 0. ) + return(0.); + else if ( val > 100. ) + return(100.); + else return(val); +} + +cJSON *iguana_getinfo(struct supernet_info *myinfo,struct iguana_info *coin) +{ + int32_t i; struct iguana_peer *addr; cJSON *array,*retjson = cJSON_CreateObject(); if ( coin != 0 ) { jaddstr(retjson,"result","success"); @@ -1065,10 +1109,10 @@ ZERO_ARGS(bitcoinrpc,getinfo) jaddnum(retjson,"txfee",dstr(coin->txfee)); if ( coin->bundlescount > 1 ) { - jaddnum(retjson,"bundles",100. * (double)(coin->chain->bundlesize *iguana_emitfinished(coin,0))/(coin->longestchain+1)); - jaddnum(retjson,"utxo",100. * (double)(coin->chain->bundlesize *iguana_utxofinished(coin))/(coin->longestchain+1)); - jaddnum(retjson,"balances",100. * (double)(coin->chain->bundlesize *iguana_balancefinished(coin))/(coin->longestchain+1)); - jaddnum(retjson,"validated",100. * (double)(coin->chain->bundlesize *iguana_validated(coin))/(coin->longestchain+1)); + jaddnum(retjson,"bundles",_max100(100. * (double)(iguana_emitfinished(myinfo,coin,0))/(coin->longestchain/coin->chain->bundlesize))); + jaddnum(retjson,"utxo",_max100(100. * (double)(iguana_utxofinished(coin))/(coin->longestchain/coin->chain->bundlesize))); + jaddnum(retjson,"balances",_max100(100. * (double)(iguana_balancefinished(coin))/(coin->longestchain/coin->chain->bundlesize))); + jaddnum(retjson,"validated",_max100(100. * (double)(iguana_validated(coin))/(coin->longestchain/coin->chain->bundlesize))); } jaddnum(retjson,"firstRTheight",coin->firstRTheight); jaddnum(retjson,"RTheight",coin->RTheight); @@ -1076,12 +1120,85 @@ ZERO_ARGS(bitcoinrpc,getinfo) jaddnum(retjson,"longestchain",coin->longestchain); jaddnum(retjson,"port",coin->chain->portp2p); if ( coin->peers != 0 ) + { + array = cJSON_CreateArray(); + for (i=0; ipeers->active[i]; + if ( addr->usock >= 0 && addr->supernet != 0 && addr->ipaddr[0] != 0 ) + jaddistr(array,addr->ipaddr); + } + jadd(retjson,"supernet",array); jaddnum(retjson,"connections",coin->peers->numranked); + } jaddnum(retjson,"difficulty",coin->blocks.hwmchain.PoW); jaddstr(retjson,"status",coin->statusstr); jaddstr(retjson,"coin",coin->symbol); } - return(jprint(retjson,1)); + return(retjson); +} + +ZERO_ARGS(bitcoinrpc,getinfo) +{ + struct basilisk_item Lptr,*ptr; int32_t i,j,m,n,longest; cJSON *valsobj,*getinfoobj=0,*array,*item,*fullnodes; + if ( remoteaddr != 0 ) + return(clonestr("{\"error\":\"no remote\"}")); + if ( coin->FULLNODE != 0 || coin->VALIDATENODE != 0 ) + return(jprint(iguana_getinfo(myinfo,coin),1)); + else + { + valsobj = cJSON_CreateObject(); + ptr = basilisk_getinfo(&Lptr,myinfo,coin,remoteaddr,0,1000,valsobj); + free_json(valsobj); + if ( ptr != 0 && ptr->retstr != 0 ) + { + if ( (array= cJSON_Parse(ptr->retstr)) != 0 ) + { + if ( is_cJSON_Array(array) != 0 ) + { + getinfoobj = jduplicate(jitem(array,0)); + longest = 0; + if ( coin->FULLNODE == 0 && coin->VALIDATENODE == 0 && (n= cJSON_GetArraySize(array)) > 0 ) + { + jdelete(getinfoobj,"longestchain"); + for (i=0; i longest ) + longest = juint(item,"longestchain"); + if ( juint(item,"RTheight") > coin->RTheight ) + { + coin->RTheight = juint(item,"RTheight"); + coin->firstRTheight = juint(item,"firstRTheight"); + printf("set RTheight.%d 1st %d\n",coin->RTheight,coin->firstRTheight); + } + if ( (fullnodes= jarray(&m,item,"supernet")) != 0 ) + { + for (j=0; jretstr); + return(jprint(array,1)); + } + free_json(array); + } + free(ptr->retstr); + if ( getinfoobj != 0 ) + return(jprint(getinfoobj,1)); + } + } + return(clonestr("{\"error\":\"null basilisk_getinfo\"}")); } TWO_STRINGS(bitcoinrpc,setaccount,address,account) @@ -1123,13 +1240,32 @@ STRING_ARG(bitcoinrpc,getnewaddress,account) struct iguana_waddress *iguana_getaccountaddress(struct supernet_info *myinfo,struct iguana_info *coin,cJSON *json,char *remoteaddr,char *coinaddr,char *account) { - char *newstr,*retstr; struct iguana_waccount *wacct; struct iguana_waddress *waddr=0; + char *newstr,*retstr; int32_t i,n,flag=0; struct iguana_waccount *wacct; struct iguana_waddress *waddr=0; cJSON *unspents,*item; coinaddr[0] = 0; if ( (wacct= iguana_waccountfind(myinfo,account)) == 0 ) wacct = iguana_waccountcreate(myinfo,account); if ( wacct != 0 ) { - if ( (waddr= wacct->current) == 0 || waddr->numunspents > 0 ) + portable_mutex_lock(&myinfo->bu_mutex); + if ( myinfo->Cunspents != 0 && (unspents= jobj(myinfo->Cunspents,coin->symbol)) != 0 ) + { + flag = 0; + if ( (n= cJSON_GetArraySize(unspents)) > 0 ) + { + for (i=0; ibu_mutex); + if ( flag != 0 || (waddr= wacct->current) == 0 ) { if ( (retstr= SuperNET_login(IGUANA_CALLARGS,myinfo->handle,myinfo->secret,myinfo->permanentfile,myinfo->password)) != 0 ) { @@ -1185,8 +1321,12 @@ TWOSTRINGS_AND_INT(bitcoinrpc,walletpassphrase,password,permanentfile,timeout) return(clonestr("{\"error\":\"no remote\"}")); if ( timeout <= 0 ) return(clonestr("{\"error\":\"timeout must be positive\"}")); + if ( password == 0 || password[0] == 0 ) + { + if ( (password= jstr(json,"passphrase")) == 0 || password[0] == 0 ) + return(clonestr("{\"error\":\"must have password field\"}")); + } iguana_walletlock(myinfo,coin); - printf("timeout.%d\n",timeout); myinfo->expiration = (uint32_t)time(NULL) + timeout; strcpy(myinfo->secret,password); strcpy(myinfo->password,password); @@ -1214,7 +1354,7 @@ THREE_STRINGS(bitcoinrpc,encryptwallet,passphrase,password,permanentfile) if ( permanentfile != 0 ) strcpy(myinfo->permanentfile,permanentfile); retstr = SuperNET_login(IGUANA_CALLARGS,myinfo->handle,myinfo->secret,myinfo->permanentfile,myinfo->password); - myinfo->expiration = (uint32_t)time(NULL) + 3600*24; + //myinfo->expiration = (uint32_t)time(NULL) + 3600*24; struct iguana_waddress waddr; struct iguana_waccount *wacct; if ( (wacct= iguana_waccountcreate(myinfo,"default")) != 0 ) { @@ -1222,8 +1362,9 @@ THREE_STRINGS(bitcoinrpc,encryptwallet,passphrase,password,permanentfile) iguana_waddressadd(myinfo,coin,wacct,&waddr,0); else printf("couldnt waddresscalc persistent\n"); } else printf("coildnt create default account\n"); - iguana_walletinitcheck(myinfo,coin); + //iguana_walletinitcheck(myinfo,coin); myinfo->dirty = (uint32_t)time(NULL); + myinfo->expiration = 0; return(retstr); } @@ -1288,28 +1429,32 @@ TWOSTRINGS_AND_INT(bitcoinrpc,importprivkey,wif,account,rescan) } } privkey = iguana_str2priv(myinfo,coin,wif); + //char str2[65]; printf("wif.%s -> %s\n",wif,bits256_str(str2,privkey)); if ( bits256_nonz(privkey) == 0 ) return(clonestr("{\"error\":\"illegal privkey\"}")); memset(&addr,0,sizeof(addr)); if ( iguana_waddresscalc(myinfo,coin->chain->pubtype,coin->chain->wiftype,&addr,privkey) != 0 ) { + if ( myinfo->expiration == 0 ) + return(clonestr("{\"error\":\"need to unlock wallet\"}")); if ( (waddr= iguana_waddresssearch(myinfo,&wacct,addr.coinaddr)) != 0 ) { - waddr = iguana_waccountswitch(myinfo,coin,account,addr.coinaddr,0); + //waddr = iguana_waccountswitch(myinfo,coin,account,addr.coinaddr,0); + waddr->privkey = privkey; + myinfo->dirty = 0; return(clonestr("{\"result\":\"privkey already in wallet\"}")); - } - if ( myinfo->expiration == 0 ) - return(clonestr("{\"error\":\"need to unlock wallet\"}")); + } else waddr = &addr; myinfo->expiration++; if ( (retstr= SuperNET_login(IGUANA_CALLARGS,myinfo->handle,myinfo->secret,myinfo->permanentfile,myinfo->password)) != 0 ) { free(retstr); retstr = myinfo->decryptstr, myinfo->decryptstr = 0; - if ( waddr == 0 ) - waddr = &addr; + //printf("DECRYPT.(%s)\n",retstr); iguana_waddresscalc(myinfo,coin->chain->pubtype,coin->chain->wiftype,waddr,privkey); iguana_waccountswitch(myinfo,coin,account,waddr->coinaddr,0); + waddr->privkey = privkey; retjson = iguana_walletadd(myinfo,0,coin,retstr,account,waddr,0,0); + //printf("AFTERADD.(%s)\n",jprint(retjson,0)); if ( retstr != 0 ) scrubfree(retstr); return(jprint(retjson,1)); diff --git a/iguana/main.c b/iguana/main.c index 569d51147..c92acbce8 100755 --- a/iguana/main.c +++ b/iguana/main.c @@ -134,11 +134,13 @@ void SuperNET_MYINFOadd(struct supernet_info *myinfo) } } -char *iguana_JSON(struct supernet_info *myinfo,struct iguana_info *coin,char *jsonstr,uint16_t port) +char *iguana_JSON(void *_myinfo,void *_coin,char *jsonstr,uint16_t port) { - char *retstr=0; cJSON *json; + char *retstr=0; cJSON *json; struct supernet_info *myinfo = _myinfo; struct iguana_info *coin = _coin; if ( (json= cJSON_Parse(jsonstr)) != 0 ) { + if ( myinfo == 0 ) + myinfo = SuperNET_MYINFO(0); retstr = SuperNET_JSON(myinfo,coin,json,"127.0.0.1",port); free_json(json); } @@ -217,7 +219,7 @@ int32_t iguana_jsonQ(struct supernet_info *myinfo,struct iguana_info *coin) char *iguana_blockingjsonstr(struct supernet_info *myinfo,struct iguana_info *coin,char *jsonstr,uint64_t tag,int32_t maxmillis,char *remoteaddr,uint16_t port) { - struct iguana_jsonitem *ptr; int32_t len,allocsize; double expiration; + queue_t *Q; struct iguana_jsonitem *ptr; int32_t len,allocsize; double expiration; expiration = OS_milliseconds() + maxmillis; //printf("blocking case.(%s) %.0f maxmillis.%d\n",jsonstr,OS_milliseconds(),maxmillis); len = (int32_t)strlen(jsonstr); @@ -229,7 +231,10 @@ char *iguana_blockingjsonstr(struct supernet_info *myinfo,struct iguana_info *co ptr->retjsonstr = 0; safecopy(ptr->remoteaddr,remoteaddr,sizeof(ptr->remoteaddr)); memcpy(ptr->jsonstr,jsonstr,len+1); - queue_enqueue("jsonQ",coin != 0 ? &coin->jsonQ : &JSON_Q,&ptr->DL,0); + if ( coin == 0 || (coin->FULLNODE == 0 && coin->VALIDATENODE == 0) ) + Q = &JSON_Q; + else Q = &coin->jsonQ; + queue_enqueue("jsonQ",Q,&ptr->DL,0); while ( OS_milliseconds() < expiration ) { usleep(100); @@ -332,18 +337,19 @@ char *SuperNET_JSON(struct supernet_info *myinfo,struct iguana_info *coin,cJSON return(retstr); } -void iguana_exit() +void iguana_exit(struct supernet_info *myinfo,struct iguana_bundle *bp) { - int32_t j,iter; struct iguana_info *coin,*tmp; + int32_t i,j,iter; struct iguana_info *coin,*tmp; + if ( myinfo == 0 ) + myinfo = SuperNET_MYINFO(0); printf("start EXIT\n"); for (iter=0; iter<3; iter++) { if ( iter == 0 ) - basilisk_request_goodbye(SuperNET_MYINFO(0)); + basilisk_request_goodbye(myinfo); else { - //portable_mutex_lock(&Allcoins_mutex); - HASH_ITER(hh,Allcoins,coin,tmp) + HASH_ITER(hh,myinfo->allcoins,coin,tmp) { if ( coin->peers != 0 ) { @@ -360,22 +366,28 @@ void iguana_exit() } } } - //portable_mutex_unlock(&Allcoins_mutex); } sleep(3); } - printf("sockets closed, now EXIT\n"); + printf("sockets closed\n"); + if ( bp != 0 ) + iguana_bundleremove(bp->coin,bp->hdrsi,1); + for (i=0; i<10; i++) + { + printf("need to exit, please restart after shutdown in %d seconds, or just ctrl-C\n",10-i); + sleep(1); + } exit(0); } #ifndef _WIN32 #include -void sigint_func() { printf("\nSIGINT\n"); iguana_exit(); } -void sigillegal_func() { printf("\nSIGILL\n"); iguana_exit(); } -void sighangup_func() { printf("\nSIGHUP\n"); iguana_exit(); } -void sigkill_func() { printf("\nSIGKILL\n"); iguana_exit(); } -void sigabort_func() { printf("\nSIGABRT\n"); iguana_exit(); } -void sigquit_func() { printf("\nSIGQUIT\n"); iguana_exit(); } +void sigint_func() { printf("\nSIGINT\n"); iguana_exit(0,0); } +void sigillegal_func() { printf("\nSIGILL\n"); iguana_exit(0,0); } +void sighangup_func() { printf("\nSIGHUP\n"); iguana_exit(0,0); } +void sigkill_func() { printf("\nSIGKILL\n"); iguana_exit(0,0); } +void sigabort_func() { printf("\nSIGABRT\n"); iguana_exit(0,0); } +void sigquit_func() { printf("\nSIGQUIT\n"); iguana_exit(0,0); } void sigchild_func() { printf("\nSIGCHLD\n"); signal(SIGCHLD,sigchild_func); } void sigalarm_func() { printf("\nSIGALRM\n"); signal(SIGALRM,sigalarm_func); } void sigcontinue_func() { printf("\nSIGCONT\n"); signal(SIGCONT,sigcontinue_func); } @@ -519,7 +531,7 @@ void iguana_appletests(struct supernet_info *myinfo) char genesisblock[1024]; //iguana_chaingenesis("VPN",0,bits256_conv("00000ac7d764e7119da60d3c832b1d4458da9bc9ef9d5dd0d91a15f690a46d99"),genesisblock,"scrypt",1,1409839200,0x1e0fffff,64881664,bits256_conv("698a93a1cacd495a7a4fb3864ad8d06ed4421dedbc57f9aaad733ea53b1b5828")); // VPN - iguana_chaingenesis("LTC",0,0,0,bits256_conv("12a765e31ffd4059bada1e25190f6e98c99d9714d334efa41a195a7e7e04bfe2"),genesisblock,"sha256",1,1317972665,0x1e0ffff0,2084524493,bits256_conv("97ddfbbae6be97fd6cdf3e7ca13232a3afff2353e29badfab7f73011edd4ced9")); // LTC + iguana_chaingenesis(myinfo,"LTC",0,0,0,bits256_conv("12a765e31ffd4059bada1e25190f6e98c99d9714d334efa41a195a7e7e04bfe2"),genesisblock,"sha256",1,1317972665,0x1e0ffff0,2084524493,bits256_conv("97ddfbbae6be97fd6cdf3e7ca13232a3afff2353e29badfab7f73011edd4ced9")); // LTC //char *Str = "01000000f615f7ce3b4fc6b8f61e8f89aedb1d0852507650533a9e3b10b9bbcc30639f279fcaa86746e1ef52d3edb3c4ad8259920d509bd073605c9bf1d59983752a6b06b817bb4ea78e011d012d59d4"; // https://litecoin.info/Scrypt 0000000110c8357966576df46f3b802ca897deb7ad18b12f1c24ecff6386ebd9 //uint8_t buf[1000]; bits256 shash,hash2; char str[65],str2[65]; @@ -542,7 +554,7 @@ void iguana_appletests(struct supernet_info *myinfo) bitcoin_sharedsecret(myinfo->ctx,hash2,pubkey,33); printf("secp256k1 elapsed %.3f for %d iterations\n",OS_milliseconds() - startmillis,i); getchar();**/ - if ( 1 && (str= SuperNET_JSON(myinfo,iguana_coinfind("BTCD"),cJSON_Parse("{\"protover\":70002,\"RELAY\":1,\"VALIDATE\":1,\"portp2p\":14631,\"rpc\":14632,\"agent\":\"iguana\",\"method\":\"addcoin\",\"startpend\":512,\"endpend\":512,\"services\":129,\"maxpeers\":8,\"newcoin\":\"BTCD\",\"active\":1,\"numhelpers\":1,\"poll\":100}"),0,myinfo->rpcport)) != 0 ) + if ( 0 && (str= SuperNET_JSON(myinfo,iguana_coinfind("BTCD"),cJSON_Parse("{\"protover\":70002,\"RELAY\":1,\"VALIDATE\":1,\"portp2p\":14631,\"rpc\":14632,\"agent\":\"iguana\",\"method\":\"addcoin\",\"startpend\":512,\"endpend\":512,\"services\":129,\"maxpeers\":8,\"newcoin\":\"BTCD\",\"active\":1,\"numhelpers\":1,\"poll\":100}"),0,myinfo->rpcport)) != 0 ) { free(str); if ( 1 && (str= SuperNET_JSON(myinfo,iguana_coinfind("BTC"),cJSON_Parse("{\"portp2p\":8333,\"RELAY\":0,\"VALIDATE\":0,\"agent\":\"iguana\",\"method\":\"addcoin\",\"startpend\":1,\"endpend\":1,\"services\":128,\"maxpeers\":8,\"newcoin\":\"BTC\",\"active\":0,\"numhelpers\":1,\"poll\":100}"),0,myinfo->rpcport)) != 0 ) @@ -1160,7 +1172,7 @@ ZERO_ARGS(SuperNET,stop) { if ( remoteaddr == 0 || strncmp(remoteaddr,"127.0.0.1",strlen("127.0.0.1")) == 0 ) { - iguana_exit(); + iguana_exit(myinfo,0); return(clonestr("{\"result\":\"exit started\"}")); } else return(clonestr("{\"error\":\"cant do a remote stop of this node\"}")); } @@ -1543,7 +1555,7 @@ void iguana_relays_init(struct supernet_info *myinfo) void iguana_main(void *arg) { - int32_t usessl = 0, ismainnet = 1; struct supernet_info *myinfo; //cJSON *argjson = 0; + int32_t usessl = 0, ismainnet = 1, do_OStests = 0; struct supernet_info *myinfo; if ( (IGUANA_BIGENDIAN= iguana_isbigendian()) > 0 ) printf("BIGENDIAN\n"); else if ( IGUANA_BIGENDIAN == 0 ) @@ -1556,13 +1568,17 @@ void iguana_main(void *arg) iguana_Qinit(); myinfo = SuperNET_MYINFO(0); libgfshare_init(myinfo,myinfo->logs,myinfo->exps); - //void test_mimblewimble(void *ctx); - //test_mimblewimble(myinfo->ctx); - if ( 0 ) + if ( arg != 0 && strcmp((char *)arg,"OStests") == 0 ) + do_OStests = 1; +#ifdef IGUANA_OSTESTS + do_OStests = 1; +#endif + if ( do_OStests != 0 ) { - int32_t i; for (i=0; i<10; i++) - iguana_schnorr(myinfo); - getchar(); + int32_t iguana_OStests(); + int32_t retval = iguana_OStests(); + printf("OStests retval %d\n",retval); + return; } myinfo->rpcport = IGUANA_RPCPORT; strcpy(myinfo->rpcsymbol,"BTCD"); @@ -1583,7 +1599,7 @@ void iguana_main(void *arg) if ( iguana_commandline(myinfo,arg) == 0 ) { iguana_helpinit(myinfo); - iguana_relays_init(myinfo); + //iguana_relays_init(myinfo); basilisks_init(myinfo); #ifdef __APPLE__ iguana_appletests(myinfo); diff --git a/iguana/mini-gmp.c b/iguana/mini-gmp.c index 4b330f255..720cf5fbc 100644 --- a/iguana/mini-gmp.c +++ b/iguana/mini-gmp.c @@ -64,7 +64,7 @@ see https://www.gnu.org/licenses/. */ #define GMP_ULONG_HIGHBIT ((uint64_t) 1 << (GMP_ULONG_BITS - 1)) #define GMP_ABS(x) ((x) >= 0 ? (x) : -(x)) -#define GMP_NEG_CAST(T,x) (-((T)((x) + 1) - 1)) +#define GMP_NEG_CAST(T,x) (-(int64_t)((T)((x) + 1) - 1)) #define GMP_MIN(a, b) ((a) < (b) ? (a) : (b)) #define GMP_MAX(a, b) ((a) > (b) ? (a) : (b)) @@ -90,8 +90,8 @@ see https://www.gnu.org/licenses/. */ #define gmp_ctz(count, x) do { \ mp_limb_t __ctz_x = (x); \ uint32_t __ctz_c = 0; \ - gmp_clz (__ctz_c, __ctz_x & - __ctz_x); \ - (count) = GMP_LIMB_BITS - 1 - __ctz_c; \ + gmp_clz (__ctz_c, __ctz_x & - (int64_t)__ctz_x); \ + (count) = GMP_LIMB_BITS - 1 - (int64_t)__ctz_c; \ } while (0) #define gmp_add_ssaaaa(sh, sl, ah, al, bh, bl) \ @@ -141,7 +141,7 @@ see https://www.gnu.org/licenses/. */ gmp_umul_ppmm (_qh, _ql, (nh), (di)); \ gmp_add_ssaaaa (_qh, _ql, _qh, _ql, (nh) + 1, (nl)); \ _r = (nl) - _qh * (d); \ - _mask = -(mp_limb_t) (_r > _ql); /* both > and >= are OK */ \ + _mask = -(_r > _ql); /* both > and >= are OK */ \ _qh += _mask; \ _r += _mask & (d); \ if (_r >= (d)) \ @@ -168,7 +168,7 @@ see https://www.gnu.org/licenses/. */ (q)++; \ \ /* Conditionally adjust q and the remainders */ \ - _mask = - (mp_limb_t) ((r1) >= _q0); \ + _mask = -((r1) >= _q0); \ (q) += _mask; \ gmp_add_ssaaaa ((r1), (r0), (r1), (r0), _mask & (d1), _mask & (d0)); \ if ((r1) >= (d1)) \ @@ -3517,7 +3517,7 @@ static void mpn_div_qr_2_preinv (mp_ptr qp, mp_ptr rp, mp_srcptr np, mp_size_t n uint32_t shift; mp_size_t i; mp_limb_t d1, d0, di, r1, r0; - mp_ptr tp; + mp_ptr tp=0; assert (nn >= 2); shift = inv->shift; @@ -3553,8 +3553,8 @@ static void mpn_div_qr_2_preinv (mp_ptr qp, mp_ptr rp, mp_srcptr np, mp_size_t n assert ((r0 << (GMP_LIMB_BITS - shift)) == 0); r0 = (r0 >> shift) | (r1 << (GMP_LIMB_BITS - shift)); r1 >>= shift; - - free (tp); + if ( tp != 0 ) + free (tp); } rp[1] = r1; @@ -4232,9 +4232,9 @@ static mp_limb_t mpn_div_qr_1 (mp_ptr qp, mp_srcptr np, mp_size_t nn, mp_limb_t mpn_copyi (qp, np, nn); else { - uint32_t shift; + uint64_t shift; gmp_ctz (shift, d); - mpn_rshift (qp, np, nn, shift); + mpn_rshift (qp, np, nn, (uint32_t)shift); } } return r; diff --git a/iguana/pangea777.h b/iguana/pangea777.h index 56a71e57b..731531f84 100755 --- a/iguana/pangea777.h +++ b/iguana/pangea777.h @@ -123,12 +123,12 @@ int32_t init_sharenrs(unsigned char sharenrs[255],unsigned char *orig,int32_t m, struct pangea_msghdr { // sig { bits256 sigbits,pubkey; uint64_t signer64bits; uint32_t timestamp,allocsize; }; - struct acct777_sig sig __attribute__((packed)); + struct acct777_sig sig PACKED; bits256 tablehash; char cmd[8]; int8_t turni,cardi,destplayer,myind; // ALL DATA MUST BE SERIALIZED!!! uint8_t serialized[]; -} __attribute__((packed)); +} PACKED; #define PANGEA_ARGS struct supernet_info *myinfo,struct table_info *tp,cJSON *json #define PANGEA_CALLARGS myinfo,tp,json diff --git a/iguana/peggy.c b/iguana/peggy.c index c56c0a98d..4d5b34d06 100755 --- a/iguana/peggy.c +++ b/iguana/peggy.c @@ -701,7 +701,7 @@ void peggy_indsinit() { peggy_geninds(); printf("need to update Peggy_inds with above\n"); - exit(-1); + iguana_exit(0,0); } peggy_dailyrates(); } diff --git a/iguana/peggy_accts.c b/iguana/peggy_accts.c index 7dbe1c2f6..574baa4b7 100755 --- a/iguana/peggy_accts.c +++ b/iguana/peggy_accts.c @@ -99,7 +99,7 @@ struct accts777_info *accts777_init(char *dirname,struct txinds777_info *txinds) if ( accts->numkvs > ACCTS777_MAXRAMKVS ) { printf("too many ramkvs for accts %d vs %d\n",accts->numkvs,ACCTS777_MAXRAMKVS); - exit(-1); + iguana_exit(0,0); } accts->addrkvs[PEGGY_ADDRFUNDING] = accts->addrkvs[PEGGY_ADDRBTCD] = accts->coinaddrs; accts->addrkvs[PEGGY_ADDR777] = accts->SaMaddrs; diff --git a/iguana/peggy_txind.c b/iguana/peggy_txind.c index b05d307a8..cf159bfb7 100755 --- a/iguana/peggy_txind.c +++ b/iguana/peggy_txind.c @@ -186,7 +186,7 @@ void opreturns_emitloop(char *protocols[],int32_t numprotocols,uint8_t opreturnd if ( (opreturnlen= opreturns_emit(protocols[i],opreturndata,payments,max,currentblocknum,blocknum,blocktimestamp)) < 0 ) { printf("opreturns_emitloop: error on protocol.(%s)\n",protocols[i]); - exit(-1); + iguana_exit(0,0); } if ( opreturnlen > 0 ) { diff --git a/iguana/pnacl/Release/iguana.nmf b/iguana/pnacl/Release/iguana.nmf deleted file mode 100644 index 9d37ed227..000000000 --- a/iguana/pnacl/Release/iguana.nmf +++ /dev/null @@ -1,12 +0,0 @@ -{ - "program": { - "portable": { - "pnacl-translate": { - "url": "iguana.pexe" - }, - "pnacl-debug": { - "url": "iguana_unstripped.bc" - } - } - } -} diff --git a/iguana/poker.c b/iguana/poker.c index 61980b11c..e99ee848e 100755 --- a/iguana/poker.c +++ b/iguana/poker.c @@ -6,7 +6,6 @@ #include #include #include -#include #define CLUB_SUIT (1) #define DIAMOND_SUIT (2) @@ -626,8 +625,8 @@ void poker_test() } starttime = (uint32_t)time(NULL); #ifndef _WIN32 - while ( (uint32_t)time(NULL) == starttime ) - usleep(100); + //while ( (uint32_t)time(NULL) == starttime ) + // usleep(100); total = counter = 0; while ( (uint32_t)time(NULL) < starttime+11 ) { diff --git a/iguana/ramchain_api.c b/iguana/ramchain_api.c index 5db58b16d..211ba69f2 100755 --- a/iguana/ramchain_api.c +++ b/iguana/ramchain_api.c @@ -27,7 +27,7 @@ STRING_ARG(iguana,initfastfind,activecoin) TWO_STRINGS_AND_TWO_DOUBLES(iguana,balance,activecoin,address,lastheightd,minconfd) { - int32_t lastheight,minconf,maxconf=SATOSHIDEN; uint64_t total=0; uint8_t rmd160[20],pubkey33[33],addrtype; struct iguana_pkhash *P; cJSON *array,*retjson = cJSON_CreateObject(); + int32_t lastheight,minconf,maxconf=1<<30; cJSON *array,*retjson = cJSON_CreateObject(); if ( activecoin != 0 && activecoin[0] != 0 ) coin = iguana_coinfind(activecoin); if ( coin != 0 ) @@ -42,21 +42,10 @@ TWO_STRINGS_AND_TWO_DOUBLES(iguana,balance,activecoin,address,lastheightd,mincon return(jprint(retjson,1)); } jadd64bits(retjson,"RTbalance",iguana_RTbalance(coin,address)); - if ( bitcoin_addr2rmd160(&addrtype,rmd160,address) < 0 ) - { - jaddstr(retjson,"error","cant convert address"); - return(jprint(retjson,1)); - } - memset(pubkey33,0,sizeof(pubkey33)); - P = calloc(coin->bundlescount,sizeof(*P)); array = cJSON_CreateArray(); - //printf("Start %s balance.(%s) height.%d\n",coin->symbol,address,lastheight); - if ( lastheight == 0 ) - lastheight = IGUANA_MAXHEIGHT; - iguana_RTpkhasharray(myinfo,coin,array,minconf,maxconf,&total,P,coin->bundlescount,rmd160,address,pubkey33,lastheight,0,0,0,remoteaddr,1); - free(P); - jadd(retjson,"unspents",array); - jaddnum(retjson,"balance",dstr(total)); + jaddistr(array,address); + jadd(retjson,"unspents",iguana_RTlistunspent(myinfo,coin,array,minconf,maxconf,remoteaddr,1)); + free_json(array); if ( lastheight > 0 ) jaddnum(retjson,"RTheight",coin->RTheight); } @@ -71,7 +60,7 @@ STRING_ARG(iguana,validate,activecoin) for (i=total=validated=0; ibundlescount; i++) if ( (bp= coin->bundles[i]) != 0 ) { - validated += iguana_bundlevalidate(coin,bp,1); + validated += iguana_bundlevalidate(myinfo,coin,bp,1); total += bp->n; } retjson = cJSON_CreateObject(); @@ -137,10 +126,10 @@ HASH_AND_TWOINTS(bitcoinrpc,getblock,blockhash,verbose,remoteonly) if ( remoteonly == 0 && (block= iguana_blockfind("getblockRPC",coin,blockhash)) != 0 ) { if ( verbose != 0 ) - return(jprint(iguana_blockjson(coin,block,1),1)); + return(jprint(iguana_blockjson(myinfo,coin,block,1),1)); else { - if ( (len= iguana_peerblockrequest(coin,coin->blockspace,coin->blockspacesize,0,blockhash,0)) > 0 ) + if ( (len= iguana_peerblockrequest(myinfo,coin,coin->blockspace,coin->blockspacesize,0,blockhash,0)) > 0 ) { datastr = malloc(len*2 + 1); init_hexbytes_noT(datastr,coin->blockspace,len); diff --git a/iguana/secp256k1/include/secp256k1.h b/iguana/secp256k1/include/secp256k1.h index 617493ae5..2c2042b7f 100644 --- a/iguana/secp256k1/include/secp256k1.h +++ b/iguana/secp256k1/include/secp256k1.h @@ -5,6 +5,9 @@ extern "C" { # endif +#undef HAVE_BUILTIN_EXPECT +#undef HAVE_BUILTIN_CLZLL + #include /* These rules specify the order of arguments in API calls: diff --git a/iguana/secp256k1/src/util.h b/iguana/secp256k1/src/util.h index de4c2381e..24fe5c617 100644 --- a/iguana/secp256k1/src/util.h +++ b/iguana/secp256k1/src/util.h @@ -36,11 +36,15 @@ static SECP256K1_INLINE void secp256k1_callback_call(const secp256k1_callback * } while(0) #endif +#ifndef WIN32 #ifdef HAVE_BUILTIN_EXPECT #define EXPECT(x,c) __builtin_expect((x),(c)) #else #define EXPECT(x,c) (x) #endif +#else +#define EXPECT(x,c) (x) +#endif #ifdef DETERMINISTIC #define CHECK(cond) do { \ @@ -90,12 +94,16 @@ SECP256K1_INLINE static int secp256k1_clz64_var(uint64_t x) { if (!x) { return 64; } +#ifndef WIN32 # if defined(HAVE_BUILTIN_CLZLL) ret = __builtin_clzll(x); # else /*FIXME: debruijn fallback. */ for (ret = 0; ((x & (1ULL << 63)) == 0); x <<= 1, ret++); # endif +#else + for (ret = 0; ((x & (1ULL << 63)) == 0); x <<= 1, ret++); +#endif return ret; } diff --git a/iguana/tests/backupwallet2 b/iguana/tests/backupwallet2 new file mode 100755 index 000000000..32645108d --- /dev/null +++ b/iguana/tests/backupwallet2 @@ -0,0 +1 @@ +curl --url "http://127.0.0.1:7778" --data "{\"coin\":\"BTCD\",\"method\":\"backupwallet\",\"params\":[\"testwallet\"]}" diff --git a/iguana/tests/balance b/iguana/tests/balance new file mode 100755 index 000000000..3e93f1434 --- /dev/null +++ b/iguana/tests/balance @@ -0,0 +1 @@ +curl --url "http://127.0.0.1:7778" --data "{\"activecoin\":\"BTCD\",\"timeout\":20000,\"agent\":\"iguana\",\"method\":\"balance\",\"address\":\"RDbGxL8QYdEp8sMULaVZS2E6XThcTKT9Jd\"}" diff --git a/iguana/tests/balance2 b/iguana/tests/balance2 new file mode 100755 index 000000000..53cd0bfd5 --- /dev/null +++ b/iguana/tests/balance2 @@ -0,0 +1 @@ +curl --url "http://127.0.0.1:7778" --data "{\"activecoin\":\"BTCD\",\"timeout\":20000,\"agent\":\"iguana\",\"method\":\"balance\",\"address\":\"RFMEYcxuBL8S7UPdUbzXunPtS4p82HRcKs\"}" diff --git a/iguana/tests/decoderawtransaction b/iguana/tests/decoderawtransaction index 8a4671500..628535553 100755 --- a/iguana/tests/decoderawtransaction +++ b/iguana/tests/decoderawtransaction @@ -1 +1 @@ -curl --url "http://127.0.0.1:7778" --data "{\"coin\":\"BTCD\",\"method\":\"decoderawtransaction\",\"params\":[\"010000000f0ea95701466304197095eeceb34a9b8cc57b34a9d069f37cb3c0aedcb71c5f3c0858afd50000000090004730440220626010de8205712edb16560410fb2e99c1c602aa25d77575471321c62c1b33e30220684ab1e4037e1b38c25fb1f175e07a54621ffca4e37659019dcfa1d7ac463b0e0147304402205f907d97d9b229ce660f4bf13382e04132e042d49d1ea043a3043ea76e4c6f710220177f69d1be52744c0f55b2be106575159efffd5c8d84ca85b2cb0741d022fbaa01ffffffff01706f9800000000001976a91454a752f0d71b89d7c014ed0be29ca231c9546f9f88ac00000000\", 1]}" +curl --url "http://127.0.0.1:7778" --data "{\"coin\":\"BTCD\",\"method\":\"decoderawtransaction\",\"params\":[\"01000000aeefda57019a2aba7f29b3b63732a547f199c7c89cb3b2a7bba23bdc1398772d971573d831010000006a4730440220192e93b9191af641070411ad1945144cf9a1193f9b4263f1b1bf51b558b0b8f202205df39d89e2aa4179d4771966ef38b34e1b570645036cd952c9e91e721b3d23f9012102743d2afdb88ede68fb5938e961b1f41c2b6267b3286516543eb4e4ab87ad0d0affffffff76a9142f4c0f91fc06ac228c120aee41741d0d3909683288ac02c0d40100000000001976a9145da2ae69885741a6946e01ad8aa8b5312eed856088acf0d6e10b000000001976a9142f4c0f91fc06ac228c120aee41741d0d3909683288ac\", 1]}" diff --git a/iguana/tests/getinfo b/iguana/tests/getinfo index 755bee524..6f8a1f590 100755 --- a/iguana/tests/getinfo +++ b/iguana/tests/getinfo @@ -1 +1 @@ -curl --url "http://127.0.0.1:7778" --data "{\"method\":\"getinfo\",\"params\":[]}" +curl --url "http://127.0.0.1:7778" --data "{\"coin\":\"BTCD\",\"method\":\"getinfo\",\"params\":[]}" diff --git a/iguana/tests/getinfo2 b/iguana/tests/getinfo2 new file mode 100755 index 000000000..3198b2220 --- /dev/null +++ b/iguana/tests/getinfo2 @@ -0,0 +1 @@ +curl --url "http://127.0.0.1:14632" --data "{\"coin\":\"BTCD\",\"method\":\"getinfo\",\"params\":[]}" diff --git a/iguana/tests/gettransaction b/iguana/tests/gettransaction index a03d7fd7a..071a20a97 100755 --- a/iguana/tests/gettransaction +++ b/iguana/tests/gettransaction @@ -1,2 +1,2 @@ -curl --url "http://127.0.0.1:7778" --data "{\"method\":\"gettransaction\",\"coin\":\"BTCD\",\"params\":[\"f19aa5e469be3864030f44f184638d55ddc6bf66c7eecf1697c22092421901e7\"]}" +curl --url "http://127.0.0.1:7778" --data "{\"method\":\"gettransaction\",\"coin\":\"BTCD\",\"params\":[\"8091ecac0b6796bac05fed2838c1951a25b86c4ced31f9f711b0711c839dbbea\"]}" diff --git a/iguana/tests/history2 b/iguana/tests/history2 new file mode 100755 index 000000000..0546e0f11 --- /dev/null +++ b/iguana/tests/history2 @@ -0,0 +1 @@ +curl --url "http://127.0.0.1:7778" --data "{\"timeout\":20000,\"agent\":\"basilisk\",\"method\":\"history\",\"vals\":{\"coin\":\"BTCD\"}}" diff --git a/iguana/tests/json_extract.c b/iguana/tests/json_extract.c old mode 100644 new mode 100755 diff --git a/iguana/tests/json_extracta.c b/iguana/tests/json_extracta.c old mode 100644 new mode 100755 diff --git a/iguana/tests/json_extractd.c b/iguana/tests/json_extractd.c old mode 100644 new mode 100755 diff --git a/iguana/tests/json_extracti.c b/iguana/tests/json_extracti.c old mode 100644 new mode 100755 diff --git a/iguana/tests/jsoncmp.c b/iguana/tests/jsoncmp.c old mode 100644 new mode 100755 diff --git a/iguana/tests/listunspent b/iguana/tests/listunspent index e5ce5c0d9..119eacd67 100755 --- a/iguana/tests/listunspent +++ b/iguana/tests/listunspent @@ -1 +1 @@ -curl --url "http://127.0.0.1:7778" --data "{\"coin\":\"BTCD\",\"method\":\"listunspent\",\"params\":[1, 9999999, [\"RThtXup6Zo7LZAi8kRWgjAyi1s4u6U9Cpf\"]]}" +curl --url "http://127.0.0.1:7778" --data "{\"coin\":\"BTCD\",\"method\":\"listunspent\",\"params\":[1, 9999999, [\"RD1rFucYCMhCGeEqdztivP3DFdJwVAzXn7\"]]}" diff --git a/iguana/tests/listunspent2 b/iguana/tests/listunspent2 new file mode 100755 index 000000000..58c40a3ae --- /dev/null +++ b/iguana/tests/listunspent2 @@ -0,0 +1 @@ +curl --url "http://127.0.0.1:7778" --data "{\"coin\":\"BTCD\",\"method\":\"listunspent\",\"params\":[1, 9999999, [\"RDbGxL8QYdEp8sMULaVZS2E6XThcTKT9Jd\"]]}" diff --git a/iguana/tests/peers.txt b/iguana/tests/peers.txt old mode 100644 new mode 100755 diff --git a/iguana/tests/rawtx2 b/iguana/tests/rawtx2 index e206fd012..ba62c9402 100755 --- a/iguana/tests/rawtx2 +++ b/iguana/tests/rawtx2 @@ -1,3 +1 @@ -curl --url "http://127.0.0.1:7778" --data "{\"coin\":\"BTCD\",\"agent\":\"basilisk\",\"method\":\"rawtx\",\"vals\":{\"changeaddr\":\"RSyKVKNxrSDc1Vwvh4guYb9ZDEpvMFz2rm\",\"addresses\":[\"RRyBxbrAPRUBCUpiJgJZYrkxqrh8x5ta9Z\", \"RPett64qbUvSefiPCyBzQ52Aer9dx32ngd\", \"RGxn8p5QWZXbs58mpRtVRD8aeATVkRq2Rh\", \"RD9HQdpu9Z7Xsvvbh9URdnwYi6RZVMTVAa\", \"RSZzYEEAVnYDnRvfj5oA3yL6vYtm1WmXHJ\", \"RC3k4XRZxrDDMyYFmvBunZCAsNEFepbpRQ\", \"RSyKVKNxrSDc1Vwvh4guYb9ZDEpvMFz2rm\"],\"timeout\":15000,\"satoshis\":\"128700\",\"spendscript\":\"76a914ca1e04745e8ca0c60d8c5881531d51bec470743f88ac\",\"txfee\":\"1000000\",\"burn\":0.00010000}}" - -#{"coin":"BTCD","spendscript":"76a914ca1e04745e8ca0c60d8c5881531d51bec470743f88ac","changeaddr":"RSyKVKNxrSDc1Vwvh4guYb9ZDEpvMFz2rm","satoshis":"128700","txfee":"1000000","minconf":1,"locktime":0,"timeout":30000,"burn":0.00010000,"addresses":["RRyBxbrAPRUBCUpiJgJZYrkxqrh8x5ta9Z", "RPett64qbUvSefiPCyBzQ52Aer9dx32ngd", "RGxn8p5QWZXbs58mpRtVRD8aeATVkRq2Rh", "RD9HQdpu9Z7Xsvvbh9URdnwYi6RZVMTVAa", "RSZzYEEAVnYDnRvfj5oA3yL6vYtm1WmXHJ", "RC3k4XRZxrDDMyYFmvBunZCAsNEFepbpRQ", "RSyKVKNxrSDc1Vwvh4guYb9ZDEpvMFz2rm"],"symbol":"BTCD"} +curl --url "http://127.0.0.1:7778" --data "{\"coin\":\"BTCD\",\"agent\":\"basilisk\",\"method\":\"rawtx\",\"vals\":{\"changeaddr\":\"RRyBxbrAPRUBCUpiJgJZYrkxqrh8x5ta9Z\",\"addresses\":[\"RFMEYcxuBL8S7UPdUbzXunPtS4p82HRcKs\", \"RRyBxbrAPRUBCUpiJgJZYrkxqrh8x5ta9Z\", \"RDBjpRUqV1AXzVJCBbbXNskgxGRj711qSc\", \"RL4aMgTBzkM1kX7d8QtE2oYXuAj2ZKabmW\", \"RDE9LBKqMaKgQgnsZM3hFCNeWfoXkHWMLs\", \"RDBjpRUqV1AXzVJCBbbXNskgxGRj711qSc\"],\"timeout\":15000,\"satoshis\":\"128700\",\"spendscript\":\"76a9142b4cf64627268ac24effd9aad5895e8ca862114288ac\",\"txfee\":\"10000\",\"burn\":0.00000000}}" diff --git a/iguana/tests/rawtx3 b/iguana/tests/rawtx3 index ffa90d8d2..2b9a967ee 100755 --- a/iguana/tests/rawtx3 +++ b/iguana/tests/rawtx3 @@ -1,3 +1,2 @@ -curl --url "http://127.0.0.1:7778" --data "{\"coin\":\"BTC\",\"agent\":\"basilisk\",\"method\":\"rawtx\",\"vals\":{\"changeaddr\":\"1GQHQ7vwVpGeir2kKrYATsLtrkUQSc7FGY\",\"addresses\":[\"16jsjc1YvzDXqKf7PorMhTyK8ym3ra3uxm\", \"1GQHQ7vwVpGeir2kKrYATsLtrkUQSc7FGY\"],\"timeout\":15000,\"satoshis\":\"20000\",\"spendscript\":\"76a914ca1e04745e8ca0c60d8c5881531d51bec470743f88ac\"}}" +curl --url "http://127.0.0.1:7778" --data "{\"coin\":\"BTCD\",\"agent\":\"basilisk\",\"method\":\"rawtx\",\"vals\":{\"changeaddr\":\"RD1rFucYCMhCGeEqdztivP3DFdJwVAzXn7\",\"addresses\":[\"RD1rFucYCMhCGeEqdztivP3DFdJwVAzXn7\"],\"timeout\":15000,\"satoshis\":\"130000\",\"spendscript\":\"76a9145da2ae69885741a6946e01ad8aa8b5312eed856088ac\"}}" -#{"coin":"BTC","spendscript":"76a914ca1e04745e8ca0c60d8c5881531d51bec470743f88ac","changeaddr":"1GQHQ7vwVpGeir2kKrYATsLtrkUQSc7FGY","satoshis":"331","txfee":"10000","minconf":1,"locktime":0,"timeout":30000,"burn":0.00010000,"addresses":["16jsjc1YvzDXqKf7PorMhTyK8ym3ra3uxm", "1GQHQ7vwVpGeir2kKrYATsLtrkUQSc7FGY"]} diff --git a/iguana/tests/rawtx4 b/iguana/tests/rawtx4 new file mode 100755 index 000000000..ce5f72611 --- /dev/null +++ b/iguana/tests/rawtx4 @@ -0,0 +1 @@ +curl --url "http://127.0.0.1:7778" --data "{\"coin\":\"BTCD\",\"agent\":\"basilisk\",\"method\":\"rawtx\",\"vals\":{\"changeaddr\":\"RD1rFucYCMhCGeEqdztivP3DFdJwVAzXn7\",\"addresses\":[\"RD1rFucYCMhCGeEqdztivP3DFdJwVAzXn7\"],\"timeout\":15000,\"satoshis\":\"130000\",\"spendscript\":\"76a9145da2ae69885741a6946e01ad8aa8b5312eed856088ac\"}}" diff --git a/iguana/tests/sendtoaddress b/iguana/tests/sendtoaddress index e9e059e50..2ba8f8710 100755 --- a/iguana/tests/sendtoaddress +++ b/iguana/tests/sendtoaddress @@ -1,2 +1,2 @@ -curl --url "http://127.0.0.1:7778" --data "{\"method\":\"sendtoaddress\",\"params\":[\"RKk3hmkHr3khf2aQRZW51oxnzFVHsQe4hf\", 0.001, \"testcomment\", \"sendcomment\"]}" +curl --url "http://127.0.0.1:7778" --data "{\"coin\":\"BTCD\",\"method\":\"sendtoaddress\",\"params\":[\"RKk3hmkHr3khf2aQRZW51oxnzFVHsQe4hf\", 0.001, \"testcomment\", \"sendcomment\"]}" diff --git a/iguana/tests/signrawtransaction b/iguana/tests/signrawtransaction index 1cc56768c..dabdc01b0 100755 --- a/iguana/tests/signrawtransaction +++ b/iguana/tests/signrawtransaction @@ -1,2 +1,2 @@ -curl --url "http://127.0.0.1:7778" --data "{\"method\":\"signrawtransaction\",\"params\":[\"0100000093b7325701f6d17d847b7096cdd9b79e4df4b74aabb9ac34b7abd4f9fce19d761e97cca0e80000000000ffffffff0240420f00000000001976a91410acba3a841fae68aba4b5ff162714c493bcc04e88acd0300e00000000001976a914d8b8c039206af6cec82bca950f592801e62808cb88ac00000000\", [{\"txid\":\"e8a0cc971e769de1fcf9d4abb734acb9ab4ab7f44d9eb7d9cd96707b847dd1f6\",\"vout\":0,\"scriptPubKey\":\"2102d14a195654f536df6dfe5a38278d1b470d00f17de78eeb5ce9e9eea9edb2c212ac\"}], [\"UqvuZXEAVXDXJkL4j4Xq6qoMdeJfPF1aNsCzmzfZaQ1ZgBTwfmWn\"], \"ALL\"] }" +curl --url "http://127.0.0.1:7778" --data "{\"method\":\"signrawtransaction\",\"params\":[\"0100000083bbd75701007b32687744a8ec1cadeda58b7db9bc8b089484820fe010aaaaae42784be24e0000000000ffffffff02bcf60100000000001976a9142b4cf64627268ac24effd9aad5895e8ca862114288ac43123b00000000001976a914b7128d2ee837cf03e30a2c0e3e0181f7b9669bb688ac00000000\", [{\"txid\":\"4ee24b7842aeaaaa10e00f828494088bbcb97d8ba5edad1ceca8447768327bc4\",\"vout\":0,\"scriptPubKey\":\"76a91442947a6941767b71f61fd9fec6514d96fef700e988ac\"}], [], \"ALL\"] }" diff --git a/iguana/tests/txdata b/iguana/tests/txdata old mode 100644 new mode 100755 diff --git a/includes/cJSON.h b/includes/cJSON.h index 2de29d8d7..b75e73bf1 100755 --- a/includes/cJSON.h +++ b/includes/cJSON.h @@ -26,12 +26,10 @@ #include #include #include -#include #include #include #include #include -#include #include "../crypto777/OS_portable.h" diff --git a/includes/curve25519.h b/includes/curve25519.h index cff0e0e02..9f8c9ba16 100755 --- a/includes/curve25519.h +++ b/includes/curve25519.h @@ -36,8 +36,8 @@ struct rmd160_vstate { uint64_t length; uint8_t buf[64]; uint32_t curlen, state[ struct acct777_sig { bits256 sigbits,pubkey; uint64_t signer64bits; uint32_t timestamp,allocsize; }; -#undef force_inline -#define force_inline __attribute__((always_inline)) +//#undef force_inline +//#define force_inline __attribute__((always_inline)) bits320 fmul(const bits320 in2,const bits320 in); diff --git a/includes/iguana_apideclares.h b/includes/iguana_apideclares.h index c600ac69e..43a31ce02 100755 --- a/includes/iguana_apideclares.h +++ b/includes/iguana_apideclares.h @@ -39,7 +39,7 @@ HASH_ARRAY_STRING(basilisk,history,hash,vals,hexstr); HASH_ARRAY_STRING(basilisk,balances,hash,vals,hexstr); HASH_ARRAY_STRING(basilisk,value,hash,vals,hexstr); -//HASH_ARRAY_STRING(basilisk,rawtx,hash,vals,hexstr); +HASH_ARRAY_STRING(basilisk,rawtx,hash,vals,hexstr); HASH_ARRAY_STRING(basilisk,getmessage,hash,vals,hexstr); HASH_ARRAY_STRING(basilisk,sendmessage,hash,vals,hexstr); @@ -195,6 +195,7 @@ TWO_STRINGS(tradebot,pause,exchange,botid); TWO_STRINGS(tradebot,stop,exchange,botid); TWO_STRINGS(tradebot,resume,exchange,botid); +#ifndef WIN32 HASH_ARG(pangea,call,tablehash); HASH_AND_INT(pangea,raise,tablehash,numchips); HASH_AND_INT(pangea,bet,tablehash,numchips); @@ -210,6 +211,7 @@ ZERO_ARGS(pangea,lobby); HASH_AND_STRING(pangea,join,tablehash,handle); HASH_AND_INT(pangea,buyin,tablehash,numchips); HASH_ARG(pangea,start,tablehash); +#endif ZERO_ARGS(SuperNET,help); STRING_ARG(SuperNET,utime2utc,utime); diff --git a/includes/iguana_defines.h b/includes/iguana_defines.h index db86a677e..bd7b3a7b9 100755 --- a/includes/iguana_defines.h +++ b/includes/iguana_defines.h @@ -25,9 +25,9 @@ #ifdef __PNACL__ #define IGUANA_MAXITERATIONS 77 #else -#define IGUANA_MAXITERATIONS 7777 +#define IGUANA_MAXITERATIONS 77 #endif -#define IGUANA_DEFAULTLAG 30 +#define IGUANA_DEFAULTLAG 7 #define IGUANA_MAXHEIGHT (1 << 30) #define IGUANA_MAXCOINS 64 @@ -44,8 +44,8 @@ #define IGUANA_HEADPERCENTAGE 0. #define IGUANA_TAILPERCENTAGE 1.0 #define IGUANA_MAXPENDHDRS 1 -#define IGUANA_MAXPENDINGREQUESTS 64 -#define IGUANA_PENDINGREQUESTS 500 +#define IGUANA_BTCPENDINGREQUESTS 3 +#define IGUANA_PENDINGREQUESTS 512 #define IGUANA_MINPENDBUNDLES 4 #define IGUANA_MAXPENDBUNDLES 64 #define IGUANA_RPCPORT 7778 @@ -112,11 +112,11 @@ extern int32_t IGUANA_NUMHELPERS; #define PNACL_message printf #endif +#ifndef WIN32 #ifndef MSG_NOSIGNAL #define MSG_NOSIGNAL 0x4000 // Do not generate SIGPIPE #endif - -#if defined(_WIN32) || defined(_WIN64) +#else #define MSG_NOSIGNAL 0 #endif diff --git a/includes/iguana_funcs.h b/includes/iguana_funcs.h index f1d5f066d..c737bac8d 100755 --- a/includes/iguana_funcs.h +++ b/includes/iguana_funcs.h @@ -41,22 +41,21 @@ int32_t iguana_rwmem(int32_t rwflag,uint8_t *serialized,int32_t len,void *endian int32_t iguana_rwnum(int32_t rwflag,uint8_t *serialized,int32_t len,void *endianedp); int32_t iguana_rwvarint32(int32_t rwflag,uint8_t *serialized,uint32_t *int32p); int32_t iguana_rwbignum(int32_t rwflag,uint8_t *serialized,int32_t len,uint8_t *endianedp); -int32_t iguana_rwblock(char *symbol,uint8_t zcash,uint8_t auxpow,int32_t (*hashalgo)(uint8_t *blockhashp,uint8_t *serialized,int32_t len),int32_t rwflag,bits256 *hash2p,uint8_t *serialized,struct iguana_msgblock *msg,int32_t maxlen); -int32_t iguana_serialize_block(struct iguana_chain *chain,bits256 *hash2p,uint8_t serialized[sizeof(struct iguana_msgblock)],struct iguana_block *block); -void iguana_blockconv(uint8_t zcash,uint8_t auxpow,struct iguana_block *dest,struct iguana_msgblock *msg,bits256 hash2,int32_t height); -//void iguana_freetx(struct iguana_msgtx *tx,int32_t n); -int32_t iguana_msgparser(struct iguana_info *coin,struct iguana_peer *addr,struct OS_memspace *rawmem,struct OS_memspace *txmem,struct OS_memspace *hashmem,struct iguana_msghdr *H,uint8_t *data,int32_t datalen,int32_t fromcache); +int32_t iguana_rwblock(struct supernet_info *myinfo,char *symbol,uint8_t zcash,uint8_t auxpow,int32_t (*hashalgo)(uint8_t *blockhashp,uint8_t *serialized,int32_t len),int32_t rwflag,bits256 *hash2p,uint8_t *serialized,struct iguana_msgzblock *zmsg,int32_t maxlen); +int32_t iguana_serialize_block(struct supernet_info *myinfo,struct iguana_chain *chain,bits256 *hash2p,uint8_t serialized[sizeof(struct iguana_msgblock)],struct iguana_block *block); +int32_t iguana_blockconv(uint8_t zcash,uint8_t auxpow,struct iguana_zblock *zdest,struct iguana_msgzblock *zmsg,bits256 hash2,int32_t height); +int32_t iguana_msgparser(struct supernet_info *myinfo,struct iguana_info *coin,struct iguana_peer *addr,struct OS_memspace *rawmem,struct OS_memspace *txmem,struct OS_memspace *hashmem,struct iguana_msghdr *H,uint8_t *data,int32_t datalen,int32_t fromcache); // send message int32_t iguana_validatehdr(char *symbol,struct iguana_msghdr *H); int32_t iguana_sethdr(struct iguana_msghdr *H,const uint8_t netmagic[4],char *command,uint8_t *data,int32_t datalen); int32_t iguana_send_version(struct iguana_info *coin,struct iguana_peer *addr,uint64_t myservices); -int32_t iguana_gentxarray(struct iguana_info *coin,struct OS_memspace *mem,struct iguana_txblock *txblock,int32_t *lenp,uint8_t *data,int32_t datalen); +int32_t iguana_gentxarray(struct supernet_info *myinfo,struct iguana_info *coin,struct OS_memspace *mem,struct iguana_txblock *txblock,int32_t *lenp,uint8_t *data,int32_t datalen); int32_t iguana_gethdrs(struct iguana_info *coin,uint8_t *serialized,char *cmd,char *hashstr); int32_t iguana_getdata(struct iguana_info *coin,uint8_t *serialized,int32_t type,bits256 *hashes,int32_t n); -void iguana_blockunconv(uint8_t zcash,uint8_t auxpow,struct iguana_msgblock *msg,struct iguana_block *src,int32_t cleartxn_count); -int32_t iguana_peerblockrequest(struct iguana_info *coin,uint8_t *blockspace,int32_t max,struct iguana_peer *addr,bits256 hash2,int32_t validatesigs); -int32_t iguana_validatesigs(struct iguana_info *coin,struct iguana_msgvin *vin); +void iguana_blockunconv(uint8_t zcash,uint8_t auxpow,struct iguana_msgzblock *zmsg,struct iguana_zblock *zsrc,int32_t cleartxn_count); +int32_t iguana_peerblockrequest(struct supernet_info *myinfo,struct iguana_info *coin,uint8_t *blockspace,int32_t max,struct iguana_peer *addr,bits256 hash2,int32_t validatesigs); +int32_t iguana_validatesigs(struct supernet_info *myinfo,struct iguana_info *coin,uint8_t *serialized,int32_t datalen); // ramchain int64_t iguana_verifyaccount(struct iguana_info *coin,struct iguana_account *acct,uint32_t pkind); @@ -65,7 +64,7 @@ void iguana_syncramchain(struct iguana_info *coin); //int32_t iguana_validateramchain(struct iguana_info *coin,int64_t *netp,uint64_t *creditsp,uint64_t *debitsp,int32_t height,struct iguana_block *block,int32_t hwmheight,struct iguana_prevdep *lp); int32_t iguana_calcrmd160(struct iguana_info *coin,char *asmstr,struct vin_info *vp,uint8_t *pk_script,int32_t pk_scriptlen,bits256 debugtxid,int32_t vout,uint32_t sequence); uint32_t iguana_updatescript(struct iguana_info *coin,uint32_t blocknum,uint32_t txidind,uint32_t spendind,uint32_t unspentind,uint64_t value,uint8_t *script,int32_t scriptlen,uint32_t sequence); -void iguana_gotblockM(struct iguana_info *coin,struct iguana_peer *addr,struct iguana_txblock *txdata,struct iguana_msgtx *txarray,struct iguana_msghdr *H,uint8_t *data,int32_t datalen,int32_t fromcache); +void iguana_gotblockM(struct supernet_info *myinfo,struct iguana_info *coin,struct iguana_peer *addr,struct iguana_txblock *txdata,struct iguana_msgtx *txarray,struct iguana_msghdr *H,uint8_t *data,int32_t datalen,int32_t fromcache); int32_t iguana_parseblock(struct iguana_info *coin,struct iguana_block *block,struct iguana_msgtx *tx,int32_t numtx); uint32_t iguana_txidind(struct iguana_info *coin,uint32_t *firstvoutp,uint32_t *firstvinp,bits256 txid); bits256 iguana_txidstr(struct iguana_info *coin,uint32_t *firstvoutp,uint32_t *firstvinp,char *txidstr,uint32_t txidind); @@ -74,12 +73,12 @@ int32_t iguana_updateramchain(struct iguana_info *coin); // blockchain int32_t iguana_needhdrs(struct iguana_info *coin); -struct iguana_chain *iguana_chainfind(char *name,cJSON *argjson,int32_t createflag); +struct iguana_chain *iguana_chainfind(struct supernet_info *myinfo,char *name,cJSON *argjson,int32_t createflag); int32_t iguana_chainextend(struct supernet_info *myinfo,struct iguana_info *coin,struct iguana_block *newblock); uint64_t iguana_miningreward(struct iguana_info *coin,uint32_t blocknum); // tx -int32_t iguana_rwtx(uint8_t zcash,int32_t rwflag,struct OS_memspace *mem,uint8_t *serialized,struct iguana_msgtx *msg,int32_t maxsize,bits256 *txidp,int32_t hastimestamp,int32_t isvpncoin); +int32_t iguana_rwtx(struct supernet_info *myinfo,uint8_t zcash,int32_t rwflag,struct iguana_info *coin,struct OS_memspace *mem,uint8_t *serialized,struct iguana_msgtx *msg,int32_t maxsize,bits256 *txidp,int32_t hastimestamp,int32_t isvpncoin); void iguana_gottxidsM(struct iguana_info *coin,struct iguana_peer *addr,bits256 *txids,int32_t n); void iguana_gotquotesM(struct iguana_info *coin,struct iguana_peer *addr,bits256 *quotes,int32_t n); void iguana_gotunconfirmedM(struct iguana_info *coin,struct iguana_peer *addr,struct iguana_msgtx *tx,uint8_t *data,int32_t datalen); @@ -120,7 +119,7 @@ int32_t iguana_avail(struct iguana_info *coin,int32_t height,int32_t n); int32_t iguana_updatebundles(struct iguana_info *coin); uint64_t iguana_utxoaddrtablefind(struct iguana_info *coin,int16_t search_hdrsi,uint32_t search_pkind,uint8_t rmd160[20]); void iguana_bundlestats(struct supernet_info *myinfo,struct iguana_info *coin,char *str,int32_t lag); -void iguana_chaininit(struct iguana_chain *chain,int32_t hasheaders,cJSON *argjson); +void iguana_chaininit(struct supernet_info *myinfo,struct iguana_chain *chain,int32_t hasheaders,cJSON *argjson); void iguana_coinargs(char *symbol,int64_t *maxrecvcachep,int32_t *minconfirmsp,int32_t *maxpeersp,int32_t *initialheightp,uint64_t *servicesp,int32_t *maxrequestsp,int32_t *maxbundlesp,cJSON *json); struct iguana_info *iguana_setcoin(char *symbol,void *launched,int32_t maxpeers,int64_t maxrecvcache,uint64_t services,int32_t initialheight,int32_t maphash,int32_t minconfirms,int32_t maxrequests,int32_t maxbundles,cJSON *json,int32_t virtcoin); @@ -138,7 +137,7 @@ double dxblend(double *destp,double val,double decay); // json int32_t iguana_processjsonQ(struct iguana_info *coin); // reentrant, can be called during any idletime -char *iguana_JSON(struct supernet_info *myinfo,struct iguana_info *coin,char *,uint16_t port); +char *iguana_JSON(void *_myinfo,void *_coin,char *jsonstr,uint16_t port); char *SuperNET_p2p(struct iguana_info *coin,struct iguana_peer *addr,int32_t *delaymillisp,char *ipaddr,uint8_t *data,int32_t datalen,int32_t compressed); char *mbstr(char *str,double); @@ -187,17 +186,18 @@ int32_t iguana_rpctest(struct iguana_info *coin); extern queue_t helperQ; extern const char *Hardcoded_coins[][3]; void iguana_main(void *arg); +void iguana_exit(struct supernet_info *myinfo,struct iguana_bundle *bp); int32_t iguana_peerfname(struct iguana_info *coin,int32_t *hdrsip,char *dirname,char *fname,uint32_t ipbits,bits256 hash2,bits256 prevhash2,int32_t numblocks,int32_t dispflag); struct iguana_txblock *iguana_peertxdata(struct iguana_info *coin,int32_t *bundleip,char *fname,struct OS_memspace *mem,uint32_t ipbits,bits256 hash2); int32_t iguana_peerfile_exists(struct iguana_info *coin,struct iguana_peer *addr,char *dirname,char *fname,bits256 hash2,bits256 prevhash2,int32_t numblocks); struct iguana_ramchain *iguana_ramchainset(struct iguana_info *coin,struct iguana_ramchain *ramchain,struct iguana_txblock *txdata); -void *iguana_iAddriterator(struct iguana_info *coin,struct iguana_iAddr *iA); -long iguana_ramchain_data(struct iguana_info *coin,struct iguana_peer *addr,struct iguana_txblock *origtxdata,struct iguana_msgtx *txarray,int32_t txn_count,uint8_t *data,int32_t recvlen); +void *iguana_iAddriterator(struct iguana_info *coin,struct iguana_iAddr *iA,struct iguana_peer *addr); +long iguana_ramchain_data(struct iguana_info *coin,struct iguana_peer *addr,struct iguana_txblock *origtxdata,struct iguana_msgtx *txarray,int32_t txn_count,uint8_t *data,int32_t recvlen,struct iguana_bundle *bp,struct iguana_block *block); int32_t iguana_bundlehash2add(struct iguana_info *coin,struct iguana_block **blockp,struct iguana_bundle *bp,int32_t bundlei,bits256 hash2); struct iguana_block *iguana_bundleblockadd(struct iguana_info *coin,struct iguana_bundle **bpp,int32_t *bundleip,struct iguana_block *origblock); int32_t iguana_chainextend(struct supernet_info *myinfo,struct iguana_info *coin,struct iguana_block *newblock); -int32_t iguana_blockvalidate(struct iguana_info *coin,int32_t *validp,struct iguana_block *block,int32_t dispflag); +int32_t iguana_blockvalidate(struct supernet_info *myinfo,struct iguana_info *coin,int32_t *validp,struct iguana_block *block,int32_t dispflag); char *iguana_bundledisp(struct iguana_info *coin,struct iguana_bundle *prevbp,struct iguana_bundle *bp,struct iguana_bundle *nextbp,int32_t m); struct iguana_bundle *iguana_bundlefind(struct iguana_info *coin,struct iguana_bundle **bpp,int32_t *bundleip,bits256 hash2); //int32_t iguana_chainheight(struct iguana_info *coin,struct iguana_block *origblock); @@ -237,17 +237,20 @@ void iguana_dedicatedloop(struct supernet_info *myinfo,struct iguana_info *coin, struct iguana_peer *iguana_peerslot(struct iguana_info *coin,uint64_t ipbits,int32_t forceflag); void iguana_dedicatedglue(void *arg); void SuperNET_remotepeer(struct supernet_info *myinfo,struct iguana_info *coin,char *symbol,char *ipaddr,int32_t supernetflag); +void iguana_peer_meminit(struct iguana_info *coin,struct iguana_peer *addr); void SuperNET_yourip(struct supernet_info *myinfo,char *yourip); void iguana_peerkill(struct iguana_info *coin); int32_t blockhash_sha256(uint8_t *blockhashp,uint8_t *serialized,int32_t len); void iguana_nameset(char name[64],char *symbol,cJSON *json); - +cJSON *iguana_getinfo(struct supernet_info *myinfo,struct iguana_info *coin); +void *basilisk_getinfo(struct basilisk_item *Lptr,struct supernet_info *myinfo,struct iguana_info *coin,char *remoteaddr,uint32_t basilisktag,int32_t timeoutmillis,cJSON *valsobj); +void basilisk_unspents_process(struct supernet_info *myinfo,struct iguana_info *coin,char *retstr); char *busdata_sync(uint32_t *noncep,char *jsonstr,char *broadcastmode,char *destNXTaddr); void peggy(); int32_t opreturns_init(uint32_t blocknum,uint32_t blocktimestamp,char *path); struct iguana_info *iguana_coinfind(char *symbol); struct iguana_info *iguana_coinadd(char *symbol,char *nane,cJSON *json,int32_t virtcoin); -struct iguana_ramchain *iguana_bundleload(struct iguana_info *coin,struct iguana_ramchain *ramchain,struct iguana_bundle *bp,int32_t extraflag); +struct iguana_ramchain *iguana_bundleload(struct supernet_info *myinfo,struct iguana_info *coin,struct iguana_ramchain *ramchain,struct iguana_bundle *bp,int32_t extraflag); int32_t iguana_sendblockreq(struct iguana_info *coin,struct iguana_peer *addr,struct iguana_bundle *bp,int32_t bundlei,bits256 hash2,int32_t iamthreadsafe); int32_t iguana_send_supernet(struct iguana_peer *addr,char *jsonstr,int32_t delay); @@ -261,15 +264,15 @@ cJSON *iguana_peersjson(struct iguana_info *coin,int32_t addronly); //int32_t btc_priv2wif(char *wifstr,uint8_t privkey[32],uint8_t addrtype); //int32_t btc_pub2rmd(uint8_t rmd160[20],uint8_t pubkey[33]); int32_t iguana_launchcoin(struct supernet_info *myinfo,char *symbol,cJSON *json,int32_t virtcoin); -int32_t iguana_bundleinitmap(struct iguana_info *coin,struct iguana_bundle *bp,int32_t height,bits256 hash2,bits256 hash1); +int32_t iguana_bundleinitmap(struct supernet_info *myinfo,struct iguana_info *coin,struct iguana_bundle *bp,int32_t height,bits256 hash2,bits256 hash1); int32_t iguana_jsonQ(struct supernet_info *myinfo,struct iguana_info *coin); int32_t is_bitcoinrpc(struct supernet_info *myinfo,char *method,char *remoteaddr); char *iguana_bitcoinRPC(struct supernet_info *myinfo,char *method,cJSON *json,char *remoteaddr,uint16_t port); cJSON *iguana_pubkeyjson(struct iguana_info *coin,char *pubkeystr); -void iguana_bundleQ(struct iguana_info *coin,struct iguana_bundle *bp,int32_t timelimit); +void iguana_bundleQ(struct supernet_info *myinfo,struct iguana_info *coin,struct iguana_bundle *bp,int32_t timelimit); int32_t iguana_bundleiters(struct supernet_info *myinfo,struct iguana_info *coin,struct OS_memspace *mem,struct OS_memspace *memB,struct iguana_bundle *bp,int32_t timelimit,int32_t lag); void ramcoder_test(void *data,int64_t len); -void iguana_exit(); +void iguana_exit(struct supernet_info *myinfo,struct iguana_bundle *bp); int32_t iguana_pendingaccept(struct iguana_info *coin); char *iguana_blockingjsonstr(struct supernet_info *myinfo,struct iguana_info *coin,char *jsonstr,uint64_t tag,int32_t maxmillis,char *remoteaddr,uint16_t port); void iguana_iAkill(struct iguana_info *coin,struct iguana_peer *addr,int32_t markflag); @@ -278,20 +281,20 @@ int32_t SuperNET_sendmsg(struct supernet_info *myinfo,struct iguana_info *coin,s int32_t category_peer(struct supernet_info *myinfo,struct iguana_peer *addr,bits256 category,bits256 subhash); int32_t bitcoin_wif2priv(uint8_t *addrtypep,bits256 *privkeyp,char *wifstr); int32_t bitcoin_priv2wif(char *wifstr,bits256 privkey,uint8_t addrtype); -bits256 iguana_chaingenesis(char *symbol,uint8_t zcash,uint8_t auxpow,int32_t (*hashalgo)(uint8_t *blockhashp,uint8_t *serialized,int32_t len),bits256 genesishash,char *genesisblock,char *hashalgostr,int32_t version,uint32_t timestamp,uint32_t bits,uint32_t nonce,bits256 merkle_root); +bits256 iguana_chaingenesis(struct supernet_info *myinfo,char *symbol,uint8_t zcash,uint8_t auxpow,int32_t (*hashalgo)(uint8_t *blockhashp,uint8_t *serialized,int32_t len),bits256 genesishash,char *genesisblock,char *hashalgostr,int32_t version,uint32_t timestamp,uint32_t bits,uint32_t nonce,bits256 merkle_root); int32_t iguana_send_ConnectTo(struct iguana_info *coin,struct iguana_peer *addr); cJSON *iguana_txjson(struct iguana_info *coin,struct iguana_txid *tx,int32_t height,struct vin_info *V); -char *iguana_txscan(struct iguana_info *coin,cJSON *json,uint8_t *data,int32_t recvlen,bits256 txid); +char *iguana_txscan(struct supernet_info *myinfo,struct iguana_info *coin,cJSON *json,uint8_t *data,int32_t recvlen,bits256 txid); char *iguana_rawtxbytes(struct iguana_info *coin,int32_t height,cJSON *json,struct iguana_msgtx *msgtx,int32_t suppress_pubkeys); int32_t iguana_send_VPNversion(struct iguana_info *coin,struct iguana_peer *addr,uint64_t myservices); void exchanges777_init(struct supernet_info *myinfo,cJSON *exchanges,int32_t sleepflag); int32_t iguana_rwvout(int32_t rwflag,struct OS_memspace *mem,uint8_t *serialized,struct iguana_msgvout *msg); -int32_t iguana_rwvin(int32_t rwflag,struct OS_memspace *mem,uint8_t *serialized,struct iguana_msgvin *msg); +int32_t iguana_rwvin(int32_t rwflag,struct iguana_info *coin,struct OS_memspace *mem,uint8_t *serialized,struct iguana_msgvin *msg,int32_t vini); int32_t iguana_rwmsgtx(struct iguana_info *coin,int32_t height,int32_t rwflag,cJSON *json,uint8_t *serialized,int32_t maxsize,struct iguana_msgtx *msg,bits256 *txidp,char *vpnstr,uint8_t *extraspace,int32_t extralen,cJSON *vins,int32_t suppress_pubkeys); int32_t iguana_ramtxbytes(struct iguana_info *coin,uint8_t *serialized,int32_t maxlen,bits256 *txidp,struct iguana_txid *tx,int32_t height,struct iguana_msgvin *vins,struct iguana_msgvout *vouts,int32_t validatesigs); cJSON *bitcoin_txtest(struct iguana_info *coin,char *rawtxstr,bits256 txid); -cJSON *iguana_blockjson(struct iguana_info *coin,struct iguana_block *block,int32_t txidsflag); -int32_t iguana_rwblockhdr(int32_t rwflag,uint8_t zcash,uint8_t *serialized,struct iguana_msgblock *msg); +cJSON *iguana_blockjson(struct supernet_info *myinfo,struct iguana_info *coin,struct iguana_block *block,int32_t txidsflag); +int32_t iguana_rwblockhdr(int32_t rwflag,uint8_t zcash,uint8_t *serialized,struct iguana_msgzblock *zmsg); //int32_t iguana_sig(uint8_t *sig,int32_t maxsize,uint8_t *data,int32_t datalen,bits256 privkey); //int32_t iguana_ver(uint8_t *sig,int32_t siglen,uint8_t *data,int32_t datalen,bits256 pubkey); //int32_t iguana_ver(uint8_t *sig,int32_t siglen,uint8_t *data,int32_t datalen,uint8_t *pubkey); @@ -315,7 +318,7 @@ char *bitcoin_json2hex(struct supernet_info *myinfo,struct iguana_info *coin,bit int32_t bitcoin_addr2rmd160(uint8_t *addrtypep,uint8_t rmd160[20],char *coinaddr); char *issue_startForging(struct supernet_info *myinfo,char *secret); struct bitcoin_unspent *iguana_unspentsget(struct supernet_info *myinfo,struct iguana_info *coin,char **retstrp,double *balancep,int32_t *numunspentsp,double minconfirms,char *address); -void iguana_chainparms(struct iguana_chain *chain,cJSON *argjson); +void iguana_chainparms(struct supernet_info *myinfo,struct iguana_chain *chain,cJSON *argjson); int32_t iguana_RTpkhasharray(struct supernet_info *myinfo,struct iguana_info *coin,cJSON *array,int32_t minconf,int32_t maxconf,uint64_t *totalp,struct iguana_pkhash *P,int32_t max,uint8_t rmd160[20],char *coinaddr,uint8_t *pubkey33,int32_t lastheight,struct iguana_outpoint *unspents,int32_t *numunspentsp,int32_t maxunspents,char *remoteaddr,int32_t includespent); long iguana_spentsfile(struct iguana_info *coin,int32_t n); uint8_t *iguana_rmdarray(struct supernet_info *myinfo,struct iguana_info *coin,int32_t *numrmdsp,cJSON *array,int32_t firsti); @@ -325,12 +328,12 @@ void iguana_hhutxo_purge(struct iguana_info *coin); char *iguana_bundleaddrs(struct iguana_info *coin,int32_t hdrsi); uint32_t iguana_sparseaddpk(uint8_t *bits,int32_t width,uint32_t tablesize,uint8_t rmd160[20],struct iguana_pkhash *P,uint32_t pkind,struct iguana_ramchain *ramchain); int32_t iguana_vinscriptparse(struct iguana_info *coin,struct vin_info *vp,uint32_t *sigsizep,uint32_t *pubkeysizep,uint32_t *p2shsizep,uint32_t *suffixp,uint8_t *vinscript,int32_t scriptlen); -void iguana_parsebuf(struct iguana_info *coin,struct iguana_peer *addr,struct iguana_msghdr *H,uint8_t *buf,int32_t len,int32_t fromcache); +void iguana_parsebuf(struct supernet_info *myinfo,struct iguana_info *coin,struct iguana_peer *addr,struct iguana_msghdr *H,uint8_t *buf,int32_t len,int32_t fromcache); int32_t _iguana_calcrmd160(struct iguana_info *coin,struct vin_info *vp); int32_t iguana_spendvectors(struct supernet_info *myinfo,struct iguana_info *coin,struct iguana_bundle *bp,struct iguana_ramchain *ramchain,int32_t starti,int32_t numblocks,int32_t convertflag,int32_t iterate); int32_t iguana_balancegen(struct iguana_info *coin,int32_t incremental,struct iguana_bundle *bp,int32_t startheight,int32_t endheight,int32_t startemit); struct iguana_utxoaddr *iguana_utxoaddrfind(int32_t createflag,struct iguana_info *coin,int16_t hdrsi,uint32_t pkind,uint8_t rmd160[20],struct iguana_utxoaddr **prevp); -int32_t iguana_bundlevalidate(struct iguana_info *coin,struct iguana_bundle *bp,int32_t forceflag); +int32_t iguana_bundlevalidate(struct supernet_info *myinfo,struct iguana_info *coin,struct iguana_bundle *bp,int32_t forceflag); void iguana_validateQ(struct iguana_info *coin,struct iguana_bundle *bp); struct iguana_bloominds iguana_calcbloom(bits256 hash2); int32_t iguana_bloomfind(struct iguana_info *coin,struct iguana_bloom16 *bloom,int32_t incr,struct iguana_bloominds bit); @@ -342,7 +345,7 @@ int32_t iguana_bundleissue(struct iguana_info *coin,struct iguana_bundle *bp,int int32_t iguana_balancecalc(struct iguana_info *coin,struct iguana_bundle *bp,int32_t startheight,int32_t endheight); int32_t iguana_sendblockreqPT(struct iguana_info *coin,struct iguana_peer *addr,struct iguana_bundle *bp,int32_t bundlei,bits256 hash2,int32_t iamthreadsafe); int32_t iguana_blockreq(struct iguana_info *coin,int32_t height,int32_t priority); -int64_t iguana_bundlecalcs(struct iguana_info *coin,struct iguana_bundle *bp,int32_t lag); +int64_t iguana_bundlecalcs(struct supernet_info *myinfo,struct iguana_info *coin,struct iguana_bundle *bp,int32_t lag); int32_t iguana_ramchain_prefetch(struct iguana_info *coin,struct iguana_ramchain *ramchain,int32_t txonly); int32_t iguana_realtime_update(struct supernet_info *myinfo,struct iguana_info *coin); int32_t iguana_volatilesmap(struct iguana_info *coin,struct iguana_ramchain *ramchain); @@ -356,7 +359,7 @@ int32_t iguana_ramchain_iterate(struct supernet_info *myinfo,struct iguana_info void *iguana_bundlefile(struct iguana_info *coin,char *fname,long *filesizep,struct iguana_bundle *bp,int32_t bundlei,int32_t renameflag); int32_t iguana_mapchaininit(char *fname,struct iguana_info *coin,struct iguana_ramchain *mapchain,struct iguana_bundle *bp,int32_t bundlei,struct iguana_block *block,void *ptr,long filesize); void iguana_RTdataset_free(struct iguana_info *coin); -void iguana_autoextend(struct iguana_info *coin,struct iguana_bundle *bp); +void iguana_autoextend(struct supernet_info *myinfo,struct iguana_info *coin,struct iguana_bundle *bp); //void iguana_RTramchainfree(struct iguana_info *coin,struct iguana_bundle *bp); void iguana_coinpurge(struct iguana_info *coin); void tradebot_liquidity_command(struct supernet_info *myinfo,char *targetcoin,bits256 hash,cJSON *vals); @@ -379,12 +382,13 @@ int32_t iguana_convert(struct iguana_info *coin,int32_t helperid,struct iguana_b int32_t iguana_bundleissuemissing(struct supernet_info *myinfo,struct iguana_info *coin,struct iguana_bundle *bp,int32_t priority,double mult); FILE *myfopen(char *fname,char *mode); int32_t myfclose(FILE *fp); +char *iguana_scriptaddress(struct iguana_info *coin,char *coinaddr,uint8_t *script,int32_t scriptlen); int32_t iguana_walkchain(struct iguana_info *coin,int32_t skipflag); struct iguana_block *iguana_fastlink(struct iguana_info *coin,int32_t hwmheight); int32_t iguana_balancenormal(struct iguana_info *coin,struct iguana_bundle *bp,int32_t startheight,int32_t endheight); int32_t iguana_spendvectorsaves(struct iguana_info *coin); int32_t iguana_convertfinished(struct iguana_info *coin); -int32_t iguana_emitfinished(struct iguana_info *coin,int32_t queueincomplete); +int32_t iguana_emitfinished(struct supernet_info *myinfo,struct iguana_info *coin,int32_t queueincomplete); int32_t iguana_utxofinished(struct iguana_info *coin); int32_t iguana_balancefinished(struct iguana_info *coin); int32_t iguana_alloctxbits(struct iguana_info *coin,struct iguana_ramchain *ramchain); @@ -402,15 +406,16 @@ int32_t iguana_bundleremove(struct iguana_info *coin,int32_t hdrsi,int32_t tmpfi int32_t iguana_voutsfname(struct iguana_info *coin,int32_t roflag,char *fname,int32_t slotid); int32_t iguana_vinsfname(struct iguana_info *coin,int32_t roflag,char *fname,int32_t slotid); bits256 iguana_merkle(bits256 *tree,int32_t txn_count); -int32_t iguana_bundleready(struct iguana_info *coin,struct iguana_bundle *bp,int32_t requiredflag); +int32_t iguana_bundleready(struct supernet_info *myinfo,struct iguana_info *coin,struct iguana_bundle *bp,int32_t requiredflag); int32_t iguana_blast(struct iguana_info *coin,struct iguana_peer *addr); int32_t iguana_validated(struct iguana_info *coin); void iguana_volatilesalloc(struct iguana_info *coin,struct iguana_ramchain *ramchain,int32_t copyflag); int32_t iguana_send_ping(struct supernet_info *myinfo,struct iguana_info *coin,struct iguana_peer *addr); int32_t iguana_process_msgrequestQ(struct supernet_info *myinfo,struct iguana_info *coin); uint32_t iguana_fastfindinit(struct iguana_info *coin); -int32_t iguana_unspentindfind(struct supernet_info *myinfo,struct iguana_info *coin,char *coinaddr,uint8_t *spendscript,int32_t *scriptlenp,uint64_t *valuep,int32_t *heightp,bits256 txid,int32_t vout,int32_t lasthdrsi,int32_t mempool); -int32_t iguana_RTunspentindfind(struct supernet_info *myinfo,struct iguana_info *coin,char *coinaddr,uint8_t *spendscript,int32_t *scriptlenp,uint64_t *valuep,int32_t *heightp,bits256 txid,int32_t vout,int32_t lasthdrsi,int32_t mempool); +int32_t iguana_outptset(struct supernet_info *myinfo,struct iguana_info *coin,struct iguana_outpoint *outpt,bits256 txid,int32_t vout,int64_t value,char *spendscriptstr); +int32_t iguana_unspentindfind(struct supernet_info *myinfo,struct iguana_info *coin,uint64_t *spentamountp,char *coinaddr,uint8_t *spendscript,int32_t *scriptlenp,uint64_t *valuep,int32_t *heightp,bits256 txid,int32_t vout,int32_t lasthdrsi,int32_t mempool); +int32_t iguana_RTunspentindfind(struct supernet_info *myinfo,struct iguana_info *coin,struct iguana_outpoint *outpt,char *coinaddr,uint8_t *spendscript,int32_t *scriptlenp,uint64_t *valuep,int32_t *heightp,bits256 txid,int32_t vout,int32_t lasthdrsi,int32_t mempool); int32_t iguana_addressvalidate(struct iguana_info *coin,uint8_t *addrtypep,char *address); int32_t bitcoin_sign(void *ctx,char *symbol,uint8_t *sig,bits256 txhash2,bits256 privkey,int32_t recoverflag); struct iguana_utxo iguana_utxofind(struct iguana_info *coin,struct iguana_outpoint spentpt,int32_t *RTspendflagp,int32_t lockflag); @@ -422,10 +427,11 @@ struct iguana_RTaddr *iguana_RTaddrfind(struct iguana_info *coin,uint8_t *rmd160 cJSON *iguana_RTunspentjson(struct supernet_info *myinfo,struct iguana_info *coin,struct iguana_outpoint outpt,bits256 txid,int32_t vout,int64_t value,struct iguana_unspent *up,uint8_t rmd160[20],char *coinaddr,uint8_t *pubkey33,int32_t spentheight,char *remoteaddr); int32_t bitcoin_standardspend(uint8_t *script,int32_t n,uint8_t rmd160[20]); struct iguana_waddress *iguana_waddresssearch(struct supernet_info *myinfo,struct iguana_waccount **wacctp,char *coinaddr); -cJSON *iguana_RTlistunspent(struct supernet_info *myinfo,struct iguana_info *coin,cJSON *argarray,int32_t minconf,int32_t maxconf,char *remoteaddr); +cJSON *iguana_RTlistunspent(struct supernet_info *myinfo,struct iguana_info *coin,cJSON *argarray,int32_t minconf,int32_t maxconf,char *remoteaddr,int32_t includespends); void calc_shares(struct supernet_info *myinfo,uint8_t *shares,uint8_t *secret,int32_t size,int32_t width,int32_t M,int32_t N,uint8_t *sharenrs,uint8_t *space,int32_t spacesize); -struct basilisk_spend *basilisk_addspend(struct supernet_info *myinfo,char *symbol,bits256 txid,uint16_t vout,int32_t addflag); -int64_t _RTgettxout(struct iguana_info *coin,int32_t *height,int32_t *scriptlen,uint8_t *script,uint8_t *rmd160,char *coinaddr,bits256 txid,int32_t vout,int32_t mempool); +//struct basilisk_spend *basilisk_addspend(struct supernet_info *myinfo,char *symbol,bits256 txid,uint16_t vout,int32_t addflag); +//void iguana_wallet_Cclear(struct supernet_info *myinfo,char *symbol); +int64_t _RTgettxout(struct iguana_info *coin,struct iguana_RTtxid **ptrp,int32_t *heightp,int32_t *scriptlenp,uint8_t *script,uint8_t *rmd160,char *coinaddr,bits256 txid,int32_t vout,int32_t mempool); int32_t _iguana_RTunspentfind(struct supernet_info *myinfo,struct iguana_info *coin,bits256 *txidp,int32_t *voutp,uint8_t *spendscript,struct iguana_outpoint outpt,int64_t value); int32_t basilisk_unspentfind(struct supernet_info *myinfo,struct iguana_info *coin,bits256 *txidp,int32_t *voutp,uint8_t *spendscript,struct iguana_outpoint outpt,int64_t value); int64_t iguana_addressreceived(struct supernet_info *myinfo,struct iguana_info *coin,cJSON *json,char *remoteaddr,cJSON *txids,cJSON *vouts,cJSON *unspents,cJSON *spends,char *coinaddr,int32_t minconf,int32_t firstheight); @@ -437,7 +443,7 @@ struct iguana_txid *iguana_blocktx(struct iguana_info *coin,struct iguana_txid * cJSON *iguana_p2shjson(struct supernet_info *myinfo,struct iguana_info *coin,cJSON *retjson,struct iguana_waddress *waddr); char *setaccount(struct supernet_info *myinfo,struct iguana_info *coin,struct iguana_waddress **waddrp,char *account,char *coinaddr,char *redeemScript); char *iguana_APIrequest(struct iguana_info *coin,bits256 blockhash,bits256 txid,int32_t seconds); -int32_t bitcoin_verifyvins(struct iguana_info *coin,int32_t height,bits256 *signedtxidp,char **signedtx,struct iguana_msgtx *msgtx,uint8_t *serialized,int32_t maxsize,struct vin_info *V,int32_t sighash,int32_t signtx,int32_t suppress_pubkeys); +int32_t bitcoin_verifyvins(struct iguana_info *coin,int32_t height,bits256 *signedtxidp,char **signedtx,struct iguana_msgtx *msgtx,uint8_t *serialized,int32_t maxsize,struct vin_info *V,uint32_t sighash,int32_t signtx,int32_t suppress_pubkeys); char *iguana_validaterawtx(struct supernet_info *myinfo,struct iguana_info *coin,int32_t height,struct iguana_msgtx *msgtx,uint8_t *extraspace,int32_t extralen,char *rawtx,int32_t mempool,int32_t suppress_pubkeys); int64_t iguana_fastfindcreate(struct iguana_info *coin); int32_t bitcoin_validaddress(struct iguana_info *coin,char *coinaddr); @@ -522,7 +528,7 @@ char *bitcoin_address(char *coinaddr,uint8_t addrtype,uint8_t *pubkey_or_rmd160, char *SuperNET_JSON(struct supernet_info *myinfo,struct iguana_info *coin,cJSON *json,char *remoteaddr,uint16_t port); int64_t iguana_txdetails(struct supernet_info *myinfo,struct iguana_info *coin,cJSON *item,bits256 txid,int32_t vout,int32_t height); int32_t iguana_txidheight(struct supernet_info *myinfo,struct iguana_info *coin,bits256 txid); -int64_t iguana_txidamount(struct supernet_info *myinfo,struct iguana_info *coin,bits256 txid,int32_t vout); +int64_t iguana_txidamount(struct supernet_info *myinfo,struct iguana_info *coin,char *coinaddr,bits256 txid,int32_t vout); char *iguana_txidcategory(struct supernet_info *myinfo,struct iguana_info *coin,char *account,char *coinaddr,bits256 txid,int32_t vout); struct supernet_info *SuperNET_accountfind(cJSON *json); cJSON *SuperNET_rosettajson(struct supernet_info *myinfo,bits256 privkey,int32_t showprivs); @@ -531,7 +537,7 @@ char *SuperNET_keysinit(struct supernet_info *myinfo,char *argjsonstr); char *SuperNET_parser(struct supernet_info *myinfo,char *agentstr,char *method,cJSON *json,char *remoteaddr); char *SuperNET_htmlstr(char *fname,char *htmlstr,int32_t maxsize,char *agentstr); void SuperNET_setkeys(struct supernet_info *myinfo,void *pass,int32_t passlen,int32_t dosha256); -int32_t iguana_headerget(struct iguana_info *coin,uint8_t *serialized,int32_t maxsize,struct iguana_block *block); +int32_t iguana_headerget(struct supernet_info *myinfo,struct iguana_info *coin,uint8_t *serialized,int32_t maxsize,struct iguana_block *block); int32_t iguana_bundlefinalize(struct supernet_info *myinfo,struct iguana_info *coin,struct iguana_bundle *bp,struct OS_memspace *mem,struct OS_memspace *memB); bits256 iguana_parsetxobj(struct supernet_info *myinfo,struct iguana_info *coin,int32_t *txstartp,uint8_t *serialized,int32_t maxsize,struct iguana_msgtx *msg,cJSON *txobj,struct vin_info *V); int32_t iguana_ROallocsize(struct iguana_info *virt); @@ -554,10 +560,6 @@ int32_t iguana_opreturn(struct supernet_info *myinfo,int32_t ordered,struct igua int32_t iguana_scriptdata(struct iguana_info *coin,uint8_t *scriptspace,long fileptr[2],char *fname,uint64_t scriptpos,int32_t scriptlen); struct iguana_peer *basilisk_ensurerelay(struct supernet_info *myinfo,struct iguana_info *btcd,uint32_t ipbits); int32_t iguana_datachain_scan(struct supernet_info *myinfo,struct iguana_info *coin,uint8_t rmd160[20]); -int32_t iguana_RTramchaindata(struct supernet_info *myinfo,struct iguana_info *coin,struct OS_memspace *TXDATA,struct OS_memspace *HASHMEM,int64_t polarity,struct iguana_block *block,struct iguana_msgtx *txarray,int32_t txn_count); -struct iguana_RTtxid *iguana_RTtxid_create(struct iguana_info *coin,struct iguana_block *block,int64_t polarity,int32_t txi,int32_t txn_count,bits256 txid,int32_t numvouts,int32_t numvins,uint32_t locktime,uint32_t version,uint32_t timestamp,uint8_t *serialized,int32_t txlen); -void iguana_RTspend(struct supernet_info *myinfo,struct iguana_info *coin,struct iguana_RTtxid *RTptr,struct iguana_block *block,int64_t polarity,uint8_t *script,int32_t scriptlen,bits256 txid,int32_t vini,bits256 prev_hash,int32_t prev_vout); -void iguana_RTunspent(struct iguana_info *coin,struct iguana_RTtxid *RTptr,struct iguana_block *block,int64_t polarity,char *coinaddr,uint8_t *rmd160,int32_t type,uint8_t *script,int32_t scriptlen,bits256 txid,int32_t vout,int64_t value); void iguana_RTreset(struct iguana_info *coin); void iguana_RTpurge(struct iguana_info *coin,int32_t lastheight); diff --git a/includes/iguana_globals.h b/includes/iguana_globals.h index d11069dc4..f00e640e5 100755 --- a/includes/iguana_globals.h +++ b/includes/iguana_globals.h @@ -62,7 +62,7 @@ CONDEXTERN char *Iguana_validcommands[]; CONDEXTERN int32_t Showmode,Autofold,PANGEA_MAXTHREADS,QUEUEITEMS; CONDEXTERN struct gecko_chain *Categories; -CONDEXTERN struct iguana_info *Allcoins; +//CONDEXTERN struct iguana_info *Allcoins; CONDEXTERN char Userhome[512]; CONDEXTERN int32_t USE_JAY,FIRST_EXTERNAL,IGUANA_disableNXT,Debuglevel,IGUANA_BIGENDIAN; CONDEXTERN uint32_t prices777_NXTBLOCK; diff --git a/includes/iguana_structs.h b/includes/iguana_structs.h index cc40c7666..c253b6580 100755 --- a/includes/iguana_structs.h +++ b/includes/iguana_structs.h @@ -16,6 +16,12 @@ #ifndef H_IGUANASTRUCTS_H #define H_IGUANASTRUCTS_H +#ifdef WIN32 +#define PACKEDSTRUCT +#else +#define PACKEDSTRUCT __attribute__((packed)) +#endif + struct iguana_thread { struct queueitem DL; @@ -49,11 +55,11 @@ struct iguana_chain char use_addmultisig,do_opreturn; int32_t estblocktime,protover; bits256 genesishash2,PoWtarget,PoStargets[16]; int32_t numPoStargets,PoSheights[16]; - uint8_t zcash,auxpow,havecltv,alertpubkey[65]; + uint8_t zcash,fixit,auxpow,debug,havecltv,alertpubkey[65]; uint16_t targetspacing,targettimespan; uint32_t nBits,normal_txversion,locktime_txversion; }; -struct iguana_msgaddress { uint32_t nTime; uint64_t nServices; uint8_t ip[16]; uint16_t port; } __attribute__((packed)); +struct iguana_msgaddress { uint32_t nTime; uint64_t nServices; uint8_t ip[16]; uint16_t port; }PACKEDSTRUCT; struct iguana_msgversion { @@ -65,7 +71,7 @@ struct iguana_msgversion char strSubVer[80]; uint32_t nStartingHeight; uint8_t relayflag; -} __attribute__((packed)); +}PACKEDSTRUCT; struct iguana_msgalert // warning, many varints/variable length fields, struct is 1:1 { @@ -91,43 +97,67 @@ struct iguana_VPNversion char strSubVer[80]; uint32_t nStartingHeight; uint32_t iVer,v_Network_id; uint16_t wPort; uint8_t bIsGui; uint16_t wCtPort,wPrPort; -} __attribute__((packed)); +} PACKEDSTRUCT; struct iguana_msgblockhdr { uint32_t version; bits256 prev_block,merkle_root; uint32_t timestamp,bits,nonce; -} __attribute__((packed)); +} PACKEDSTRUCT; + +#define ZKSNARK_PROOF_SIZE 296 +#define ZCASH_SOLUTION_ELEMENTS 1344 + +struct iguana_msgzblockhdr +{ + uint32_t version; + bits256 prev_block,merkle_root,reserved; + uint32_t timestamp,bits; + bits256 bignonce; + uint8_t var_numelements[3]; + uint8_t solution[ZCASH_SOLUTION_ELEMENTS]; +} PACKEDSTRUCT; -#define ZKSNARK_PROOF_SIZE 584 -#define ZCASH_SOLUTION_ELEMENTS 32 +/*int32_t nVersion; +uint256 hashPrevBlock; +uint256 hashMerkleRoot; +uint256 hashReserved; +uint32_t nTime; +uint32_t nBits; +uint256 nNonce; +std::vector nSolution;*/ -struct iguana_msgblockhdr_zcash +/*struct iguana_msgblockhdr_zcash { bits256 bignonce; uint8_t numelements; uint32_t solution[ZCASH_SOLUTION_ELEMENTS]; //bits256 reserved; // only here if auxpow is set -} __attribute__((packed)); +}PACKEDSTRUCT;*/ struct iguana_msgmerkle { uint32_t branch_length; bits256 branch_hash[4096]; uint32_t branch_side_mask; -} __attribute__((packed)); +}PACKEDSTRUCT; struct iguana_msgblock { struct iguana_msgblockhdr H; // double hashed for blockhash - struct iguana_msgblockhdr_zcash zH; uint32_t txn_count; -} __attribute__((packed)); +} PACKEDSTRUCT; + +struct iguana_msgzblock +{ + struct iguana_msgzblockhdr zH; // double hashed for blockhash + uint32_t txn_count; +} PACKEDSTRUCT; -struct iguana_msgvin { bits256 prev_hash; uint8_t *vinscript,*userdata,*spendscript,*redeemscript; uint32_t prev_vout,sequence; uint16_t scriptlen,p2shlen,userdatalen,spendlen; } __attribute__((packed)); +struct iguana_msgvin { bits256 prev_hash; uint8_t *vinscript,*userdata,*spendscript,*redeemscript; uint32_t prev_vout,sequence; uint16_t scriptlen,p2shlen,userdatalen,spendlen; }PACKEDSTRUCT; -struct iguana_msgvout { uint64_t value; uint32_t pk_scriptlen; uint8_t *pk_script; } __attribute__((packed)); +struct iguana_msgvout { uint64_t value; uint32_t pk_scriptlen; uint8_t *pk_script; }PACKEDSTRUCT; struct iguana_msgtx { @@ -138,16 +168,16 @@ struct iguana_msgtx int32_t allocsize,timestamp,numinputs,numoutputs; int64_t inputsum,outputsum,txfee; uint8_t *serialized; -} __attribute__((packed)); +}PACKEDSTRUCT; struct iguana_msgjoinsplit { uint64_t vpub_old,vpub_new; bits256 anchor,nullifiers[2],commitments[2],ephemeralkey; - uint8_t ciphertexts[2][217]; bits256 randomseed,vmacs[2]; - uint8_t zkproof[ZKSNARK_PROOF_SIZE-1]; -} __attribute__((packed)); + uint8_t zkproof[ZKSNARK_PROOF_SIZE]; + uint8_t ciphertexts[2][601]; +}PACKEDSTRUCT; struct iguana_packet { struct queueitem DL; struct iguana_peer *addr; struct tai embargo; int32_t datalen,getdatablock; uint8_t serialized[]; }; @@ -155,7 +185,7 @@ struct msgcounts { uint32_t version,verack,getaddr,addr,inv,getdata,notfound,get struct iguana_fileitem { bits256 hash2; struct iguana_txdatabits txdatabits; }; -struct iguana_kvitem { UT_hash_handle hh; uint8_t keyvalue[]; };// __attribute__((packed)); +struct iguana_kvitem { UT_hash_handle hh; uint8_t keyvalue[]; }PACKEDSTRUCT; struct iguana_iAddr { @@ -173,18 +203,18 @@ struct iguana_blockRO uint32_t timestamp,nonce,bits,version; uint32_t firsttxidind,firstvin,firstvout,firstpkind,firstexternalind,recvlen:24,tbd:8; uint16_t txn_count,numvouts,numvins,allocsize; -} __attribute__((packed)); +}PACKEDSTRUCT; -struct iguana_zcashRO { bits256 bignonce; uint32_t solution[ZCASH_SOLUTION_ELEMENTS]; } __attribute__((packed)); +struct iguana_zcashRO { bits256 bignonce; uint32_t numelements; uint8_t solution[ZCASH_SOLUTION_ELEMENTS]; } PACKEDSTRUCT; struct iguana_zblockRO { struct iguana_blockRO RO; struct iguana_zcashRO zRO; -} __attribute__((packed)); +} PACKEDSTRUCT; #define iguana_blockfields double PoW; \ -int32_t height,fpos; uint32_t fpipbits,issued,lag:19,protected:1,peerid:12; \ +int32_t height,fpos; uint32_t fpipbits,issued,lag:18,sigsvalid:1,protected:1,peerid:12; \ uint16_t hdrsi:15,mainchain:1,bundlei:11,valid:1,queued:1,txvalid:1,newtx:1,processed:1; \ UT_hash_handle hh; struct iguana_bundlereq *req; \ struct iguana_blockRO RO @@ -192,14 +222,14 @@ struct iguana_blockRO RO struct iguana_block { iguana_blockfields; - struct iguana_zcashRO zRO[]; -} __attribute__((packed)); + //struct iguana_zcashRO zRO[]; +} PACKEDSTRUCT; struct iguana_zblock // mu { - iguana_blockfields; - struct iguana_zcashRO zRO; -} __attribute__((packed)); + iguana_blockfields; // this is to minimize code needed to support both types + struct iguana_zcashRO zRO; // if zRO is changed, the RO part must also be updated +} PACKEDSTRUCT; #define IGUANA_LHASH_BLOCKS 0 #define IGUANA_LHASH_TXIDS 1 // @@ -218,7 +248,7 @@ struct iguana_counts uint32_t firsttxidind,firstunspentind,firstspendind,firstpkind; uint64_t credits,debits; struct iguana_block block; -} __attribute__((packed)); +}PACKEDSTRUCT; struct iguana_blocks { @@ -233,34 +263,34 @@ struct iguana_ledger { struct iguana_counts snapshot; //struct iguana_account accounts[]; -} __attribute__((packed)); +}PACKEDSTRUCT; // ramchain temp file structures -struct iguana_unspent20 { uint64_t value; uint32_t scriptpos,txidind:28,type:4; uint16_t scriptlen,fileid; uint8_t rmd160[20]; } __attribute__((packed)); -struct iguana_spend256 { bits256 prevhash2; uint64_t scriptpos:48,vinscriptlen:16; uint32_t sequenceid; int16_t prevout; uint16_t spendind,fileid; } __attribute__((packed)); +struct iguana_unspent20 { uint64_t value; uint32_t scriptpos,txidind:28,type:4; uint16_t scriptlen,fileid; uint8_t rmd160[20]; }PACKEDSTRUCT; +struct iguana_spend256 { bits256 prevhash2; uint64_t scriptpos:48,vinscriptlen:16; uint32_t sequenceid; int16_t prevout; uint16_t spendind,fileid; }PACKEDSTRUCT; // permanent readonly structs -struct iguana_txid { bits256 txid; uint64_t txidind:29,firstvout:28,firstvin:28,bundlei:11,locktime:32,version:32,timestamp:32,extraoffset:32; uint16_t numvouts,numvins; } __attribute__((packed)); +struct iguana_txid { bits256 txid; uint64_t txidind:29,firstvout:28,firstvin:28,bundlei:11,locktime:32,version:32,timestamp:32,extraoffset:32; uint16_t numvouts,numvins; }PACKEDSTRUCT; -struct iguana_unspent { uint64_t value; uint32_t txidind,pkind,prevunspentind,scriptpos; uint16_t scriptlen,hdrsi; uint16_t fileid:11,type:5; int16_t vout; } __attribute__((packed)); +struct iguana_unspent { uint64_t value; uint32_t txidind,pkind,prevunspentind,scriptpos; uint16_t scriptlen,hdrsi; uint16_t fileid:11,type:5; int16_t vout; }PACKEDSTRUCT; -struct iguana_spend { uint64_t scriptpos:48,scriptlen:16; uint32_t spendtxidind,sequenceid; int16_t prevout; uint16_t fileid:15,external:1; } __attribute__((packed)); // numsigs:4,numpubkeys:4,p2sh:1,sighash:4 +struct iguana_spend { uint64_t scriptpos:48,scriptlen:16; uint32_t spendtxidind,sequenceid; int16_t prevout; uint16_t fileid:15,external:1; }PACKEDSTRUCT; // numsigs:4,numpubkeys:4,p2sh:1,sighash:4 -struct iguana_pkhash { uint8_t rmd160[20]; uint32_t pkind; } __attribute__((packed)); //firstunspentind,pubkeyoffset +struct iguana_pkhash { uint8_t rmd160[20]; uint32_t pkind; }PACKEDSTRUCT; //firstunspentind,pubkeyoffset // dynamic -struct iguana_account { int64_t total; uint32_t lastunspentind; } __attribute__((packed)); -struct iguana_utxo { uint32_t fromheight:31,lockedflag:1,prevunspentind:31,spentflag:1,spendind; } __attribute__((packed)); +struct iguana_account { int64_t total; uint32_t lastunspentind; }PACKEDSTRUCT; +struct iguana_utxo { uint32_t fromheight:31,lockedflag:1,prevunspentind:31,spentflag:1,spendind; }PACKEDSTRUCT; #ifdef DEPRECATED_HHUTXO -struct iguana_hhaccount { UT_hash_handle hh; uint64_t pval; struct iguana_account a; } __attribute__((packed)); +struct iguana_hhaccount { UT_hash_handle hh; uint64_t pval; struct iguana_account a; }PACKEDSTRUCT; #endif -struct iguana_hhutxo { UT_hash_handle hh; uint64_t uval; struct iguana_utxo u; } __attribute__((packed)); -struct iguana_utxoaddr { UT_hash_handle hh; int64_t histbalance; uint32_t pkind:31,searchedhist:1; uint16_t hdrsi; uint8_t rmd160[20]; } __attribute__((packed)); +struct iguana_hhutxo { UT_hash_handle hh; uint64_t uval; struct iguana_utxo u; }PACKEDSTRUCT; +struct iguana_utxoaddr { UT_hash_handle hh; int64_t histbalance; uint32_t pkind:31,searchedhist:1; uint16_t hdrsi; uint8_t rmd160[20]; }PACKEDSTRUCT; // GLOBAL one zero to non-zero write (unless reorg) -struct iguana_spendvector { uint64_t value; uint32_t pkind,unspentind; int32_t fromheight; uint16_t hdrsi:15,tmpflag:1; } __attribute__((packed)); // unspentind -//struct iguana_pkextra { uint32_t firstspendind; } __attribute__((packed)); // pkind +struct iguana_spendvector { uint64_t value; uint32_t pkind,unspentind; int32_t fromheight; uint16_t hdrsi:15,tmpflag:1; }PACKEDSTRUCT; // unspentind +//struct iguana_pkextra { uint32_t firstspendind; } PACKEDSTRUCT; // pkind struct iguana_txblock { @@ -374,7 +404,7 @@ struct basilisk_spend { bits256 txid,spentfrom; uint64_t relaymask,value; uint32 struct basilisk_unspent { bits256 txid; uint64_t value,relaymask; uint32_t unspentind,timestamp; int32_t RTheight,height,spentheight; int16_t status,hdrsi,vout,spendlen; char symbol[16]; uint8_t script[256]; }; -struct iguana_waddress { UT_hash_handle hh; struct basilisk_unspent *unspents; uint64_t balance; uint32_t maxunspents,numunspents; uint16_t scriptlen; uint8_t rmd160[20],pubkey[33],wiftype,addrtype; bits256 privkey; char symbol[8],coinaddr[36],wifstr[54]; uint8_t redeemScript[]; }; +struct iguana_waddress { UT_hash_handle hh; uint64_t balance; uint16_t scriptlen; uint8_t rmd160[20],pubkey[33],wiftype,addrtype; bits256 privkey; char symbol[8],coinaddr[36],wifstr[54]; uint8_t redeemScript[]; }; struct iguana_waccount { UT_hash_handle hh; struct iguana_waddress *waddr,*current; char account[]; }; struct iguana_wallet { UT_hash_handle hh; struct iguana_waccount *wacct; }; @@ -383,12 +413,6 @@ struct hhbits256 { UT_hash_handle hh; bits256 txid; int32_t height; uint16_t fir struct iguana_monitorinfo { bits256 txid; int32_t numreported; uint8_t peerbits[IGUANA_MAXPEERS >> 3]; }; -struct iguana_RTspend -{ - bits256 prev_hash; int16_t prev_vout,scriptlen; - uint8_t vinscript[]; -}; - struct iguana_RTunspent { uint8_t rmd160[20]; @@ -402,6 +426,14 @@ struct iguana_RTunspent uint8_t script[]; }; +struct iguana_RTspend +{ + bits256 prev_hash; + struct iguana_RTunspent *bundle_unspent; + int16_t prev_vout,scriptlen; + uint8_t vinscript[]; +}; + struct iguana_RTaddr { UT_hash_handle hh; @@ -436,7 +468,7 @@ struct iguana_info int32_t MAXPEERS,MAXPENDINGREQUESTS,MAXBUNDLES,MAXSTUCKTIME,active,closestbundle,numemitted,lastsweep,numemit,startutc,newramchain,numcached,cachefreed,helperdepth,startPEND,endPEND,enableCACHE,FULLNODE,VALIDATENODE,origbalanceswritten,balanceswritten,lastRTheight,RTdatabad; bits256 balancehash,allbundles; uint32_t lastsync,parsetime,numiAddrs,lastpossible,bundlescount,savedblocks,backlog,spendvectorsaved,laststats,lastinv2,symbolcrc,spendvalidated; char VALIDATEDIR[512]; - int32_t longestchain,badlongestchain,longestchain_strange,RTramchain_busy,emitbusy,stuckiters,virtualchain,RTheight; + int32_t longestchain,badlongestchain,longestchain_strange,RTramchain_busy,emitbusy,stuckiters,virtualchain,RTheight,RTreset_needed; struct tai starttime; double startmillis; struct iguana_chain *chain; struct iguana_iAddr *iAddrs; @@ -451,9 +483,9 @@ struct iguana_info struct OS_memspace RTrawmem,RTmem,RThashmem; // struct iguana_ramchain RTramchain; bits256 RThash1; int32_t numremain,numpendings,zcount,recvcount,bcount,pcount,lastbundle,numsaved,pendbalances,numverified,blockdepth; - uint32_t recvtime,hdrstime,backstoptime,lastbundletime,numreqsent,numbundlesQ,lastbundleitime,lastdisp,RTgenesis,firstRTgenesis,RTstarti,idletime,stucktime,stuckmonitor,maxstuck,lastreqtime,RThdrstime,nextchecked,lastcheckpoint; + uint32_t recvtime,hdrstime,backstoptime,lastbundletime,numreqsent,numbundlesQ,lastbundleitime,lastdisp,RTgenesis,firstRTgenesis,RTstarti,idletime,stucktime,stuckmonitor,maxstuck,lastreqtime,RThdrstime,nextchecked,lastcheckpoint,sigserrs,sigsvalidated; double bandwidth,maxbandwidth,backstopmillis; bits256 backstophash2; int64_t spaceused; - int32_t disableUTXO,initialheight,mapflags,minconfirms,numrecv,bindsock,isRT,backstop,blocksrecv,merging,firstRTheight,polltimeout,numreqtxids,allhashes,balanceflush,basilisk_busy; bits256 reqtxids[64]; + int32_t disableUTXO,initialheight,mapflags,minconfirms,numrecv,bindsock,isRT,backstop,blocksrecv,merging,firstRTheight,polltimeout,numreqtxids,allhashes,balanceflush,basilisk_busy,almostRT; bits256 reqtxids[64]; void *launched,*started,*rpcloop; uint64_t bloomsearches,bloomhits,bloomfalse,collisions,txfee_perkb,txfee; uint8_t *blockspace; int32_t blockspacesize; struct OS_memspace blockMEM,RTHASHMEM; @@ -502,7 +534,7 @@ struct bitcoin_spend struct bitcoin_unspent inputs[]; }; -struct iguana_outpoint { void *ptr; int64_t value; uint32_t unspentind:31,isptr:1; int16_t hdrsi; }; +struct iguana_outpoint { void *ptr; bits256 txid; int64_t value; uint32_t unspentind; int16_t hdrsi,vout,spendlen:15,isptr:1; uint8_t spendscript[512]; }; struct exchange_quote { uint64_t satoshis,orderid,offerNXT,exchangebits; double price,volume; uint32_t timestamp,val; }; @@ -522,7 +554,8 @@ struct basilisk_request //char volatile_start,message[43]; uint64_t destamount; uint32_t relaybits; -} __attribute__((packed)); +}; // __attribute__((packed)) + struct basilisk_relaystatus { uint8_t pingdelay; diff --git a/m_onetime b/m_onetime index b41d17856..1bff9d8d4 100755 --- a/m_onetime +++ b/m_onetime @@ -20,5 +20,5 @@ cd crypto777 ./$1 cd .. cd iguana -./m_unix +./$1 ../agents/iguana diff --git a/pnacl_main.h b/pnacl_main.h index 9d3c0f4d7..d80349202 100755 --- a/pnacl_main.h +++ b/pnacl_main.h @@ -6,13 +6,13 @@ #include #include #include -#include #ifdef _WIN32 #include "OSlibs/win/pthread.h" #include //static inline void sleep(unsigned ms) { Sleep(ms*1000); } #else +#include #include #endif @@ -622,14 +622,14 @@ static int GetParamString(struct PP_Var params, int CHROMEAPP_HANDLER(struct PP_Var params,struct PP_Var *output,const char **out_error) { - char *CHROMEAPP_JSON(char *,uint16_t port); + char *CHROMEAPP_JSON(void *_myinfo,void *_coin,char *,uint16_t port); char *retstr; PNACL_message("inside Handle_%s\n",CHROMEAPP_STR); CHECK_PARAM_COUNT(CHROMEAPP_STR, 1); PARAM_STRING(0,jsonstr); if ( jsonstr == 0 ) retstr = clonestr("{\"error\":\"illegal null jsonstr received\"}"); - else if ( (retstr= CHROMEAPP_JSON(jsonstr,7778)) == 0 ) + else if ( (retstr= CHROMEAPP_JSON(0,0,jsonstr,7778)) == 0 ) retstr = clonestr("{\"error\":\"null return\"}"); CREATE_RESPONSE(CHROMEAPP_STR); RESPONSE_STRING(retstr); diff --git a/pthreadVC2.lib b/pthreadVC2.lib new file mode 100644 index 000000000..d793e7144 Binary files /dev/null and b/pthreadVC2.lib differ diff --git a/pthreadvc2.dll b/pthreadvc2.dll new file mode 100644 index 000000000..93f562baa Binary files /dev/null and b/pthreadvc2.dll differ