Bitcoin Forum
April 20, 2024, 12:44:17 AM *
News: Latest Bitcoin Core release: 26.0 [Torrent]
 
   Home   Help Search Login Register More  
Pages: « 1 ... 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 [342] 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 ... 814 »
  Print  
Author Topic: [1500 TH] p2pool: Decentralized, DoS-resistant, Hop-Proof pool  (Read 2591613 times)
gmaxwell
Moderator
Legendary
*
Offline Offline

Activity: 4158
Merit: 8382



View Profile WWW
October 27, 2013, 03:44:13 AM
 #6821

Is it also run 440GH/s on "normal" pools? Looks like flushwork takes like 1 sec
No.  480-510GH/s.
IIRC the graph number minus DOA, but you get some of the DOA back because everyone else has them too. Should check with forrestv, also note you are 110% efficiency in that p2pool output, meaning you're outperforming the pool on average latency wise and are expect to get 110% of what you would expect based on your hashrate.

Is the CGminer claimed hashrate lower with p2pool then elsewhere?  If so, something about the hardware design / firmware / or miner driver is brain damaged.
1713573857
Hero Member
*
Offline Offline

Posts: 1713573857

View Profile Personal Message (Offline)

Ignore
1713573857
Reply with quote  #2

1713573857
Report to moderator
1713573857
Hero Member
*
Offline Offline

Posts: 1713573857

View Profile Personal Message (Offline)

Ignore
1713573857
Reply with quote  #2

1713573857
Report to moderator
1713573857
Hero Member
*
Offline Offline

Posts: 1713573857

View Profile Personal Message (Offline)

Ignore
1713573857
Reply with quote  #2

1713573857
Report to moderator
There are several different types of Bitcoin clients. The most secure are full nodes like Bitcoin Core, but full nodes are more resource-heavy, and they must do a lengthy initial syncing process. As a result, lightweight clients with somewhat less security are commonly used.
Advertised sites are not endorsed by the Bitcoin Forum. They may be unsafe, untrustworthy, or illegal in your jurisdiction.
1713573857
Hero Member
*
Offline Offline

Posts: 1713573857

View Profile Personal Message (Offline)

Ignore
1713573857
Reply with quote  #2

1713573857
Report to moderator
1713573857
Hero Member
*
Offline Offline

Posts: 1713573857

View Profile Personal Message (Offline)

Ignore
1713573857
Reply with quote  #2

1713573857
Report to moderator
1713573857
Hero Member
*
Offline Offline

Posts: 1713573857

View Profile Personal Message (Offline)

Ignore
1713573857
Reply with quote  #2

1713573857
Report to moderator
gnar1ta$
Donator
Hero Member
*
Offline Offline

Activity: 798
Merit: 500


View Profile
October 27, 2013, 04:10:24 AM
 #6822

Is it also run 440GH/s on "normal" pools? Looks like flushwork takes like 1 sec
No.  480-510GH/s.
IIRC the graph number minus DOA, but you get some of the DOA back because everyone else has them too. Should check with forrestv, also note you are 110% efficiency in that p2pool output, meaning you're outperforming the pool on average latency wise and are expect to get 110% of what you would expect based on your hashrate.

Is the CGminer claimed hashrate lower with p2pool then elsewhere?  If so, something about the hardware design / firmware / or miner driver is brain damaged.


Considering that my efficiency is over 100% and I generally pay up to a 3% pool fee elsewhere, I've left the Jupiter on p2pool - it's averaging out to 450GH/s so I shouldn't be too far off...if my understanding of efficiency is correct  Huh

The CGminer hashrate actually behaves opposite on other pools.  It always reports lower than p2pool reports, but reports higher than other pools.  On BTCGuild and Ozcoin CGminer shows 530GH/s and the pools 480-510.

Losing hundreds of Bitcoins with the best scammers in the business - BFL, Avalon, KNC, HashFast.
SpAcEDeViL
Legendary
*
Offline Offline

Activity: 986
Merit: 1027


Miner-Control.de Pooler


View Profile WWW
October 27, 2013, 10:49:30 AM
 #6823

really good explanation

share diff is determined such that:
1) a p2pool share is found every 30 seconds
2) no single miner is expected to generate >5% of the shares (difficulty is adjusted up to keep the total number of shares lower, just for them)

One more thing, the share chain isn't always 8640 long. It's 3x the expected work needed to find a block, or 8640, whichever is less. So right now it's ~45 hours, so a little under two days. (I believe that's what the code says, please correct me if I'm wrong)


All the math aside, what matters is that the expected payout using p2pool is greater than that of any other pool -- even for small miners. The variance, however, is bigger.

Thats confuse me. I have mine for 2 Days (Friday and Saturday) with 14 GH on mine p2pool node smileandgo.de:9332
The Node makes no pool shares. My miner have make over 32k accepted shares to the node.
And i become no payouts to my address or to the node address

gnar1ta$
Donator
Hero Member
*
Offline Offline

Activity: 798
Merit: 500


View Profile
October 27, 2013, 02:34:58 PM
 #6824


Thats confuse me. I have mine for 2 Days (Friday and Saturday) with 14 GH on mine p2pool node smileandgo.de:9332
The Node makes no pool shares. My miner have make over 32k accepted shares to the node.
And i become no payouts to my address or to the node address

You need to find a pool share. Think of it as a p2pool block maybe. When you find one your payout should be higher than an equivalent PPS payout to make up for the time you didn't find a pool share. That's how variance work - and you will have a lot of variance at that hashrate. What's your expected time to share?

Losing hundreds of Bitcoins with the best scammers in the business - BFL, Avalon, KNC, HashFast.
maqifrnswa
Sr. Member
****
Offline Offline

Activity: 454
Merit: 250


View Profile
October 27, 2013, 04:31:25 PM
 #6825

really good explanation

share diff is determined such that:
1) a p2pool share is found every 30 seconds
2) no single miner is expected to generate >5% of the shares (difficulty is adjusted up to keep the total number of shares lower, just for them)

One more thing, the share chain isn't always 8640 long. It's 3x the expected work needed to find a block, or 8640, whichever is less. So right now it's ~45 hours, so a little under two days. (I believe that's what the code says, please correct me if I'm wrong)


All the math aside, what matters is that the expected payout using p2pool is greater than that of any other pool -- even for small miners. The variance, however, is bigger.

Thats confuse me. I have mine for 2 Days (Friday and Saturday) with 14 GH on mine p2pool node smileandgo.de:9332
The Node makes no pool shares. My miner have make over 32k accepted shares to the node.
And i become no payouts to my address or to the node address

You haven't found a p2pool share yet. The 32k shares you see are simply shares reporting back to the node for statistics. The current p2pool difficulty is 138k. So you are expected to find one p2pool share after ~138k difficulty 1 shares.

The entire network finds a share every 30 seconds, not just you.

When you find a p2pool share, it pays out a lot more than a difficulty 1 PPS share, but you find them less frequently. Larger and less frequent payouts means higher variance.

It's possible that you will get 0 payouts for each share you find if the whole pool doesn't find one in ~2 days after you found yours, but it's also possible that it finds 6 (and pays you 6 times). On average, you get paid more than a PPS scheme. But variance is larger, especially for smaller miners.

It's up to you to choose how much variance is worth to you.
Polyatomic
Sr. Member
****
Offline Offline

Activity: 257
Merit: 250


View Profile
October 30, 2013, 07:26:42 AM
 #6826

really good explanation


Thats confuse me. I have mine for 2 Days (Friday and Saturday) with 14 GH on mine p2pool node smileandgo.de:9332
The Node makes no pool shares. My miner have make over 32k accepted shares to the node.
And i become no payouts to my address or to the node address

You will eventually get a p2pool share. Im sending you positive vibes.
zvs
Legendary
*
Offline Offline

Activity: 1680
Merit: 1000


https://web.archive.org/web/*/nogleg.com


View Profile WWW
October 30, 2013, 01:34:38 PM
 #6827

is there some logical reason that (any) share found directly before a new block is orphaned?

i have my node set to ignore the 'punish', since otherwise it'd be penalized for being fast.

all i can think of is to prevent these nodes that have the huge getblocktemplate + network latency from spitting out invalid shares based on the old block?  what other reason would there be to punish a share that is made before the new block  (and thus valid) ?
SpAcEDeViL
Legendary
*
Offline Offline

Activity: 986
Merit: 1027


Miner-Control.de Pooler


View Profile WWW
October 30, 2013, 05:17:57 PM
 #6828

Hy,

thanks for the replays on my post.

Now i have mine for 5 days... no share. So i give up yesterday. "expected time to share was 11 - 14 hours)"

I see too many push "new work for the worker" and my miner become so many HW errors from this.
On a central pool the new work comes after minutes and not after seconds... less HW errors.

And when my miner diff is auto set to diff 3 or 2... so i cannot create a share over the pool diff... thats impossible or??...

Why not the node collect the miner shares and create a  big node share, and all on the node, thats make shares to it, become btc from ne node btc adress, when its higher then 0.01 btc on a week, or when its higher than 0.10 on a day? or the node owner can set this?

Can i set a node fee? so when a miner create a share from my node i become 0.05% fee? 

forrestv (OP)
Hero Member
*****
Offline Offline

Activity: 516
Merit: 643


View Profile
October 30, 2013, 05:28:00 PM
 #6829

is there some logical reason that (any) share found directly before a new block is orphaned?

i have my node set to ignore the 'punish', since otherwise it'd be penalized for being fast.

all i can think of is to prevent these nodes that have the huge getblocktemplate + network latency from spitting out invalid shares based on the old block?  what other reason would there be to punish a share that is made before the new block  (and thus valid) ?

Yes.

First, it's at least necessary for shares found after a new block is found to be orphaned, in order to not reward people for doing useless work. A preference for shares pointing to newer blocks that overrides the "first share received is the one to build on" rule was added to the P2Pool protocol.

There is no way for the P2Pool protocol rules to know whether a share came before or after the block - they can only see that there is a share pointing to a newer block at the same height of the (to be orphaned) share.

So, all the nodes could potentially only orphan shares that come after the block change, but there's nothing that prevents someone from orphaning all the shares they can, which would give them a slight advantage. So, I decided that nodes should be "maximally aggressive" and orphan others' shares whenever they can. This is at least fair, but it has the disadvantage of increasing the pool's orphaned share rate.

Future changes that make the P2Pool protocol rules more aware of how the Bitcoin blockchain works could potentially improve this, but for now, this is the way it has to be.

1J1zegkNSbwX4smvTdoHSanUfwvXFeuV23
maqifrnswa
Sr. Member
****
Offline Offline

Activity: 454
Merit: 250


View Profile
October 30, 2013, 06:39:18 PM
 #6830

Hy,

thanks for the replays on my post.

Now i have mine for 5 days... no share. So i give up yesterday. "expected time to share was 11 - 14 hours)"

I see too many push "new work for the worker" and my miner become so many HW errors from this.
On a central pool the new work comes after minutes and not after seconds... less HW errors.

And when my miner diff is auto set to diff 3 or 2... so i cannot create a share over the pool diff... thats impossible or??...

Why not the node collect the miner shares and create a  big node share, and all on the node, thats make shares to it, become btc from ne node btc adress, when its higher then 0.01 btc on a week, or when its higher than 0.10 on a day? or the node owner can set this?

Can i set a node fee? so when a miner create a share from my node i become 0.05% fee?  

new work for worker: p2pool sends new work to worker every time a p2pool network share is found, around every 30 seconds versus 10 minutes for the bitcoin block chain (although new work is generated more frequently than 10 mins as it adds transactions to it)

Errors with new work: some hardware manufacturers ignore standard miner commands and throw away all the work when there is a block change. This adds negligible wasted work when blocks are 10 minutes, but lots of wasted work when blocks aer 30 seconds. Many manufacturers released updated firmware that fixed their mistake, but not all have.

Difficulty: You can set your diff higher by using the user name "username+{difficulty}" so if you want difficulty 16 shares returned to your node, just use "-u username+16" command line argument.

Node collection: This can be done and bigger miners are encouraged to do this to help out the smaller ones. You can do this by using the username "username/{difficulty}". So if I want to return one HUGE share that is worth 10x a small share, I log in with "-u username/1400000" I find a share 10x less frequently, but when I do it pays out a lot. people who find 50+ shares a day can do this and see a negligible change in variance and payout while encouraging smaller miners to keep mining by reducing small miner variance.

Node fee: Yes you can set a node fee by starting p2pool with the "--fee" argument. Run p2pool with "--help" to get info on how to set it up. What it does is randomly assign that percentage of shares to your default address so when a share is found, you get credit for it - not the person that logged in and found it.
mdude77
Legendary
*
Offline Offline

Activity: 1540
Merit: 1001



View Profile
October 30, 2013, 11:30:42 PM
 #6831

Someone has a small bit of hash pointed at ZVS's server nogleg.com with the name "Mindlesss.worker1".  If I understand p2pool right, you'll never get paid for your work as your worker name has to be your payout address.

M

I mine at Kano's Pool because it pays the best and is completely transparent!  Come join me!
gnar1ta$
Donator
Hero Member
*
Offline Offline

Activity: 798
Merit: 500


View Profile
October 31, 2013, 01:55:38 AM
 #6832


Node collection: This can be done and bigger miners are encouraged to do this to help out the smaller ones. You can do this by using the username "username/{difficulty}". So if I want to return one HUGE share that is worth 10x a small share, I log in with "-u username/1400000" I find a share 10x less frequently, but when I do it pays out a lot. people who find 50+ shares a day can do this and see a negligible change in variance and payout while encouraging smaller miners to keep mining by reducing small miner variance.

Maybe this should be set automatically by p2pool like the difficulty to keep the share difficulty lower and keep smaller miners on the pool?


Losing hundreds of Bitcoins with the best scammers in the business - BFL, Avalon, KNC, HashFast.
lenny_
Legendary
*
Offline Offline

Activity: 1036
Merit: 1000


DARKNETMARKETS.COM


View Profile WWW
October 31, 2013, 06:28:21 AM
 #6833


Node collection: This can be done and bigger miners are encouraged to do this to help out the smaller ones. You can do this by using the username "username/{difficulty}". So if I want to return one HUGE share that is worth 10x a small share, I log in with "-u username/1400000" I find a share 10x less frequently, but when I do it pays out a lot. people who find 50+ shares a day can do this and see a negligible change in variance and payout while encouraging smaller miners to keep mining by reducing small miner variance.

Maybe this should be set automatically by p2pool like the difficulty to keep the share difficulty lower and keep smaller miners on the pool?



Yes, I really think this should be implemented. P2pool share should not be found by a miner more frequent than every 30 minutes. If it happens, p2pool node should automatically adjust real share difficulty to higher number, so share time is still estimated to be 30 minutes.
Right now having about 400 GH/s will give you p2pool share every 30 minutes. But we have miners here with 1000GH/s and more, they are finding share in less than 10 minutes. If they could increse their share time, small miners will have chance again to mine with p2pool.

DARKNET MARKETS >> https://DARKNETMARKETS.COM
zvs
Legendary
*
Offline Offline

Activity: 1680
Merit: 1000


https://web.archive.org/web/*/nogleg.com


View Profile WWW
October 31, 2013, 10:37:57 AM
Last edit: October 31, 2013, 12:33:39 PM by zvs
 #6834

Someone has a small bit of hash pointed at ZVS's server nogleg.com with the name "Mindlesss.worker1".  If I understand p2pool right, you'll never get paid for your work as your worker name has to be your payout address.

M
that's correct

it looks like I picked up someone else's share earlier (i'm at 0.0003 now)

maybe p2pool should come with some 'instructions' tab on the web interface?  i guess a lot of people have added something like this themself, but maybe should just be included as part of standard server

Quote
Yes.

First, it's at least necessary for shares found after a new block is found to be orphaned, in order to not reward people for doing useless work. A preference for shares pointing to newer blocks that overrides the "first share received is the one to build on" rule was added to the P2Pool protocol.

There is no way for the P2Pool protocol rules to know whether a share came before or after the block - they can only see that there is a share pointing to a newer block at the same height of the (to be orphaned) share.

So, all the nodes could potentially only orphan shares that come after the block change, but there's nothing that prevents someone from orphaning all the shares they can, which would give them a slight advantage. So, I decided that nodes should be "maximally aggressive" and orphan others' shares whenever they can. This is at least fair, but it has the disadvantage of increasing the pool's orphaned share rate.

Future changes that make the P2Pool protocol rules more aware of how the Bitcoin blockchain works could potentially improve this, but for now, this is the way it has to be.

OK, that makes sense...  but wouldn't it be more fair to delay this punishment until the share after?   Right now, probably 90% or more of the shares being penalized are being done so unjustly

ed; forgot to add, i'll send whatever that errant share makes (if anything) to 1J1zegkNSbwX4smvTdoHSanUfwvXFeuV23 (forrestv address)
maqifrnswa
Sr. Member
****
Offline Offline

Activity: 454
Merit: 250


View Profile
October 31, 2013, 04:32:26 PM
 #6835


Node collection: This can be done and bigger miners are encouraged to do this to help out the smaller ones. You can do this by using the username "username/{difficulty}". So if I want to return one HUGE share that is worth 10x a small share, I log in with "-u username/1400000" I find a share 10x less frequently, but when I do it pays out a lot. people who find 50+ shares a day can do this and see a negligible change in variance and payout while encouraging smaller miners to keep mining by reducing small miner variance.

Maybe this should be set automatically by p2pool like the difficulty to keep the share difficulty lower and keep smaller miners on the pool?



Yes, I really think this should be implemented. P2pool share should not be found by a miner more frequent than every 30 minutes. If it happens, p2pool node should automatically adjust real share difficulty to higher number, so share time is still estimated to be 30 minutes.
Right now having about 400 GH/s will give you p2pool share every 30 minutes. But we have miners here with 1000GH/s and more, they are finding share in less than 10 minutes. If they could increse their share time, small miners will have chance again to mine with p2pool.

p2pool does this by default, it readjusts share difficulty for miners to make sure no miner has > 5% of the shares in a given window:

https://github.com/forrestv/p2pool/blob/0460c6cf03b8da4a5accb5ac26606e596a5571ff/p2pool/work.py#L251
Code:
desired_share_target = min(desired_share_target, bitcoin_data.average_attempts_to_target(local_hash_rate * self.node.net.SHARE_PERIOD / 0.05)) # limit to 5% of pool shares by modulating share difficulty
gnar1ta$
Donator
Hero Member
*
Offline Offline

Activity: 798
Merit: 500


View Profile
October 31, 2013, 08:27:54 PM
 #6836


Node collection: This can be done and bigger miners are encouraged to do this to help out the smaller ones. You can do this by using the username "username/{difficulty}". So if I want to return one HUGE share that is worth 10x a small share, I log in with "-u username/1400000" I find a share 10x less frequently, but when I do it pays out a lot. people who find 50+ shares a day can do this and see a negligible change in variance and payout while encouraging smaller miners to keep mining by reducing small miner variance.

Maybe this should be set automatically by p2pool like the difficulty to keep the share difficulty lower and keep smaller miners on the pool?



Yes, I really think this should be implemented. P2pool share should not be found by a miner more frequent than every 30 minutes. If it happens, p2pool node should automatically adjust real share difficulty to higher number, so share time is still estimated to be 30 minutes.
Right now having about 400 GH/s will give you p2pool share every 30 minutes. But we have miners here with 1000GH/s and more, they are finding share in less than 10 minutes. If they could increse their share time, small miners will have chance again to mine with p2pool.

p2pool does this by default, it readjusts share difficulty for miners to make sure no miner has > 5% of the shares in a given window:

https://github.com/forrestv/p2pool/blob/0460c6cf03b8da4a5accb5ac26606e596a5571ff/p2pool/work.py#L251
Code:
desired_share_target = min(desired_share_target, bitcoin_data.average_attempts_to_target(local_hash_rate * self.node.net.SHARE_PERIOD / 0.05)) # limit to 5% of pool shares by modulating share difficulty

That will only limit >1.5TH/s miners at current pool rate? That's a bit high to be much help for smaller miners.

Losing hundreds of Bitcoins with the best scammers in the business - BFL, Avalon, KNC, HashFast.
lenny_
Legendary
*
Offline Offline

Activity: 1036
Merit: 1000


DARKNETMARKETS.COM


View Profile WWW
October 31, 2013, 09:40:20 PM
 #6837

So nice it has been implemented already. But I will agree with comments made earlier on, it should be applied to miners with 500 GH/s (1.7% of total p2pool hashrate). Please reduce it to at least 2% from 5%. It's a simple fix, and it will help a lot to small miners.

DARKNET MARKETS >> https://DARKNETMARKETS.COM
gyverlb
Hero Member
*****
Offline Offline

Activity: 896
Merit: 1000



View Profile
October 31, 2013, 09:53:51 PM
 #6838

So nice it has been implemented already. But I will agree with comments made earlier on, it should be applied to miners with 500 GH/s (1.7% of total p2pool hashrate). Please reduce it to at least 2% from 5%. It's a simple fix, and it will help a lot to small miners.

From experience, having "only" 2% of the p2pool hashrate doesn't mean there's too much variance (the rewards oscillate +/-~10% around).

With 5%, ~20 large miners can take most of the pie, leaving crumbs to others. With 2%, this is raised to 50 large miners.

I'd be OK with a 1% limit, but 2% should limit complains of high variance from large miners (the reward may even move as much from the hashrate fluctuations of the whole pool as from the share frequency variance, people with 5% or more may be able to confirm this if they have variance around 10% in their rewards too).

BTW: I've not looked into the code, what would happen if there were only 10 miners on p2pool? Is the current algorithm able to converge on sane values or would the current 5% target raise the individual share difficulty without bonds.
From the one-liner extract above it seems there's a missing parameter to achieve this protection (the number of distinct addresses with valid shares in the recent sharechain).

P2pool tuning guide
Trade BTC for €/$ at bitcoin.de (referral), it's cheaper and faster (acts as escrow and lets the buyers do bank transfers).
Tip: 17bdPfKXXvr7zETKRkPG14dEjfgBt5k2dd
forrestv (OP)
Hero Member
*****
Offline Offline

Activity: 516
Merit: 643


View Profile
October 31, 2013, 11:04:37 PM
 #6839

So nice it has been implemented already. But I will agree with comments made earlier on, it should be applied to miners with 500 GH/s (1.7% of total p2pool hashrate). Please reduce it to at least 2% from 5%. It's a simple fix, and it will help a lot to small miners.

From experience, having "only" 2% of the p2pool hashrate doesn't mean there's too much variance (the rewards oscillate +/-~10% around).

With 5%, ~20 large miners can take most of the pie, leaving crumbs to others. With 2%, this is raised to 50 large miners.

I'd be OK with a 1% limit, but 2% should limit complains of high variance from large miners (the reward may even move as much from the hashrate fluctuations of the whole pool as from the share frequency variance, people with 5% or more may be able to confirm this if they have variance around 10% in their rewards too).

BTW: I've not looked into the code, what would happen if there were only 10 miners on p2pool? Is the current algorithm able to converge on sane values or would the current 5% target raise the individual share difficulty without bonds.
From the one-liner extract above it seems there's a missing parameter to achieve this protection (the number of distinct addresses with valid shares in the recent sharechain).

I will decrease the percentage then. Maybe 1.67%? That's a share every half hour.

If there are very few miners, nothing insane happens. Smiley Each miner's share difficulty multiplier becomes the maximum, 30, and then the 30-second share period target decreases the minimum difficulty until there's a share every 30 seconds again.

1J1zegkNSbwX4smvTdoHSanUfwvXFeuV23
gyverlb
Hero Member
*****
Offline Offline

Activity: 896
Merit: 1000



View Profile
November 01, 2013, 01:31:31 AM
 #6840

I will decrease the percentage then. Maybe 1.67%? That's a share every half hour.

Seems great.

If there are very few miners, nothing insane happens. Smiley Each miner's share difficulty multiplier becomes the maximum, 30, and then the 30-second share period target decreases the minimum difficulty until there's a share every 30 seconds again.

Oh right! I forgot about the maximum multiplier, thanks.

P2pool tuning guide
Trade BTC for €/$ at bitcoin.de (referral), it's cheaper and faster (acts as escrow and lets the buyers do bank transfers).
Tip: 17bdPfKXXvr7zETKRkPG14dEjfgBt5k2dd
Pages: « 1 ... 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 [342] 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 ... 814 »
  Print  
 
Jump to:  

Powered by MySQL Powered by PHP Powered by SMF 1.1.19 | SMF © 2006-2009, Simple Machines Valid XHTML 1.0! Valid CSS!