Bitcoin Forum
April 27, 2024, 06:12:10 AM *
News: Latest Bitcoin Core release: 27.0 [Torrent]
 
   Home   Help Search Login Register More  
Pages: « 1 ... 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 [67] 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 ... 191 »
  Print  
Author Topic: Vanitygen: Vanity bitcoin address generator/miner [v0.22]  (Read 1152815 times)
Atruk
Hero Member
*****
Offline Offline

Activity: 700
Merit: 500



View Profile
June 28, 2013, 05:11:52 PM
 #1321

Well, I'm 99% sure no existing Bitcoin-mining ASIC can be repurposed for vanity mining.  FPGAs, maybe, but it requires more skill than GPU programming, so there just aren't that many capable of doing it, and even fewer that would do it for free.

I assumed vanity mining used the same computational process, only doing something different with the output.

Very different process.

"I'm sure that in 20 years there will either be very large transaction volume or no volume." -- Satoshi
Advertised sites are not endorsed by the Bitcoin Forum. They may be unsafe, untrustworthy, or illegal in your jurisdiction.
1714198330
Hero Member
*
Offline Offline

Posts: 1714198330

View Profile Personal Message (Offline)

Ignore
1714198330
Reply with quote  #2

1714198330
Report to moderator
adam3us
Sr. Member
****
expert
Offline Offline

Activity: 404
Merit: 359


in bitcoin we trust


View Profile WWW
June 28, 2013, 05:45:08 PM
 #1322

anyone know how I might go about disabling BFI_INT?

If you can change source and recompile, try commenting out these two lines.


Thats what I figured and already tried: doesnt work (on amd 7870, catalyst 13.4, fedora 18.)

It might be nice to "appoint" a new maintainer of vanitygen, or at least collect all the different patches and get some new builds.  For example, this fork appears to have some build/compatibility improvements, and salfter and I have added compressed address support.

I tried that one and it has the same CPU hash GPU hash not matching issue (with or without BFI_INT disabled).

This kind of sucks.  Must be some more bugs lurking or catalyst driver bugs?

btw I am finding vanity addresses aiming for with lower case are much harder to compute seemingly, 1 out of 58 I generated so far with vanitygen -i are lower first char.  I think there maybe a target range miscalculation in vanitygen that is discarding valid finds?  Clearly all start strings are possible because 1zzz finds lots and so does 1111.  The alphabet is [1-0][A-Z][a-z] and strings before 1QQQ are easier.  Except 1111 is harder.  I am not really understanding why this is.  OpenSSL doco says it uses big endian encoding.  And the base58 encoder seems to use the same convention, so you would expect restrictions on the most significant digit.  However that doesnt seem to be the case empirically.

The address is encoded as 0x1 || hash(160-bits) || checksum(32-bits) which is 193-bits.  Now log(58,2^193) = 32.9465 and 2^193/58^32 = 46.676 however the bignum is encoded big endian

Adam

hashcash, committed transactions, homomorphic values, blind kdf; researching decentralization, scalability and fungibility/anonymity
adam3us
Sr. Member
****
expert
Offline Offline

Activity: 404
Merit: 359


in bitcoin we trust


View Profile WWW
June 28, 2013, 07:44:38 PM
 #1323

btw I am finding vanity addresses aiming for with lower case are much harder to compute seemingly, 1 out of 58 I generated so far with vanitygen -i are lower first char.  I think there maybe a target range miscalculation in vanitygen that is discarding valid finds?  Clearly all start strings are possible because 1zzz finds lots and so does 1111.  The alphabet is [1-0][A-Z][a-z] and strings before 1QQQ are easier.  Except 1111 is harder.  I am not really understanding why this is.  OpenSSL doco says it uses big endian encoding.  And the base58 encoder seems to use the same convention, so you would expect restrictions on the most significant digit.  However that doesnt seem to be the case empirically.

Playing with this some more I think it is the case that 1 is special (it is the encoding for digit 0), and then values after first digit P (in the base58 alphabet) are possible; values after that are not directly possible however become possible when you get a short key (leading 0) as leading 0s are suppressed.  So all lowercase values and values starting Q only are at least one character short.

That means you're going to have a lot more fun if you start with upper case first char, below Q.

Adam

hashcash, committed transactions, homomorphic values, blind kdf; researching decentralization, scalability and fungibility/anonymity
deepceleron
Legendary
*
Offline Offline

Activity: 1512
Merit: 1025



View Profile WWW
June 28, 2013, 07:46:57 PM
Last edit: December 04, 2017, 02:27:02 PM by deepceleron
 #1324

btw I am finding vanity addresses aiming for with lower case are much harder to compute seemingly, 1 out of 58 I generated so far with vanitygen -i are lower first char.  I think there maybe a target range miscalculation in vanitygen that is discarding valid finds?  Clearly all start strings are possible because 1zzz finds lots and so does 1111.  The alphabet is [1-0][A-Z][a-z] and strings before 1QQQ are easier.  Except 1111 is harder.  I am not really understanding why this is.  OpenSSL doco says it uses big endian encoding.  And the base58 encoder seems to use the same convention, so you would expect restrictions on the most significant digit.  However that doesnt seem to be the case empirically.

The address is encoded as 0x1 || hash(160-bits) || checksum(32-bits) which is 193-bits.  Now log(58,2^193) = 32.9465 and 2^193/58^32 = 46.676 however the bignum is encoded big endian

Adam

The change happens at a particular address

This is a result of how the 25-byte (50 digit hexadecimal) underlying hashes are converted into Base58 (represented by numbers and letters) addresses, and the different maximum values that can be stored in 25 base256 digits vs 34 base58 digits.

The Bitcoin address in it's native binary form (that you never see) is 25 bytes, it's parts are:
byte 0: Network ID Byte (0x00 for main bitcoin network)
byte 1-20: ripemd160 hash (20 bytes) of sha256 hash (32 bytes) of 0x04+public key (65 bytes)
byte 21-24: checksum: first four bytes of sha256 hash of sha256 hash of bytes 0-20 above

This would be 50 hexadecimal characters long (base16), with a possible digit value between 0-F - 24 bytes or 48 hexadecimal digits of random hash output, plus the beginning "00" byte.

We will ignore byte 0, it is always 0x00, and Base58 conversion always preserves this leading 0 byte by directly encoding it as a "1".

That means the "vanity" part of the address is generated by the first several bytes of the underlying ripemd160 hash

The minimum this can be is 0000000000000000000000000000000000000000 00000000.
The maximum value that this can be is FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF ffff ffff
(the extra 0s and lower case "f"s are the checksum part.)

Here are some sample addresses before and after the "wraparound" of the maximum hash value.


See how the 1QLa addresses are full length, but the 1QLc addresses are one digit shorter? That is because the only way to have an address starting at 1QLc or greater is by having a binary address that is 59x smaller. There are 59x less possible hashes that will generate a 33 character 1aaaa address than will generate a 34 character 1AAAA address.
scintill
Sr. Member
****
Offline Offline

Activity: 448
Merit: 252


View Profile WWW
June 28, 2013, 08:04:55 PM
 #1325

I tried that one and it has the same CPU hash GPU hash not matching issue (with or without BFI_INT disabled).

Hmm.  I've just realized the -S flag, which you said you already tried, includes disabling BFI_INT.  Can you run the OpenCL code on your CPU (-d, -D, or -p flags, see --help)?  Feedback from that might help narrow down the problem to an OpenCL compiler issue or hardware difference.

I tried with the hex editor, and you guessed correctly, it threw an error.   I think this may be beyond me.

What was the error?  I've since tried this on both Windows and Linux and the resulting binary seemed to work (don't know that it disabled BFI_INT.)  Are you sure you overwrote (instead of inserting) and didn't change anything else?

1SCiN5kqkAbxxwesKMsH9GvyWnWP5YK2W | donations
laughingbear
Deflationary champion
Hero Member
*****
Offline Offline

Activity: 622
Merit: 500


www.cryptobetfair.com


View Profile WWW
June 28, 2013, 08:25:06 PM
 #1326

I tried that one and it has the same CPU hash GPU hash not matching issue (with or without BFI_INT disabled).

Hmm.  I've just realized the -S flag, which you said you already tried, includes disabling BFI_INT.  Can you run the OpenCL code on your CPU (-d, -D, or -p flags, see --help)?  Feedback from that might help narrow down the problem to an OpenCL compiler issue or hardware difference.

I tried with the hex editor, and you guessed correctly, it threw an error.   I think this may be beyond me.

What was the error?  I've since tried this on both Windows and Linux and the resulting binary seemed to work (don't know that it disabled BFI_INT.)  Are you sure you overwrote (instead of inserting) and didn't change anything else?

The -S flag crashes me every time. 

I re tried the hex edit, and it did not throw an error this time, I must have screwed it up at first.  But I get the same issue, cpu and gpu hash does not match.  If I run on my cpu, it works fine.
adam3us
Sr. Member
****
expert
Offline Offline

Activity: 404
Merit: 359


in bitcoin we trust


View Profile WWW
June 28, 2013, 08:30:02 PM
 #1327

I tried that one and it has the same CPU hash GPU hash not matching issue (with or without BFI_INT disabled).

Hmm.  I've just realized the -S flag, which you said you already tried, includes disabling BFI_INT.  Can you run the OpenCL code on your CPU (-d, -D, or -p flags, see --help)?  Feedback from that might help narrow down the problem to an OpenCL compiler issue or hardware difference.

-S on the GPU gives a segfault during kernel compile.  -S or just normal on the CPU with oclvanity produces valid normal results (though of course its slower than vanitygen when run on the CPU).

Adam

hashcash, committed transactions, homomorphic values, blind kdf; researching decentralization, scalability and fungibility/anonymity
laughingbear
Deflationary champion
Hero Member
*****
Offline Offline

Activity: 622
Merit: 500


www.cryptobetfair.com


View Profile WWW
June 29, 2013, 01:28:27 AM
 #1328

This is driving me nuts!  I have done everything I can think of with my meager skills.   Would a bounty inspire you geniuses to figure out the 7xxx problem with mismatching cpu/gpu hashes?  There are quite a few of us with this problem. 
Morblias
Hero Member
*****
Offline Offline

Activity: 576
Merit: 500


View Profile
June 29, 2013, 01:32:33 AM
 #1329

So I reformatted computer and am having a problem getting this running. I am using an ATI 7950 and I remember a while ago it would never work with

Code:
oclvanitygen -d 0 -o test.txt 1Morb1ias

and would spit out garbage so I had to use the safe command, but now it is just erroring out.

The error occurs when I run this one (blue in pic):
Code:
oclvanitygen -S -d 0 -o test.txt 1Morb1ias

I installed the latest driver for 7950, and am able to run cgminer on it fine so I am not sure what I am missing here?


Tips / Donations accepted: 1Morb18DsDHNEv6TeQXBdba872ZSpiK9fY
laughingbear
Deflationary champion
Hero Member
*****
Offline Offline

Activity: 622
Merit: 500


www.cryptobetfair.com


View Profile WWW
June 29, 2013, 01:39:05 AM
 #1330

you arent missing anything, this is the bug that I am hoping some of these smarties here can fix.
scintill
Sr. Member
****
Offline Offline

Activity: 448
Merit: 252


View Profile WWW
June 30, 2013, 06:04:51 AM
 #1331

The error occurs when I run this one (blue in pic):
Code:
oclvanitygen -S -d 0 -o test.txt 1Morb1ias

Can those of you with this crash post an error trace from the crash?  On Windows I think there is some information under an expanding area titled "View problem details."  Get as much as you can out of there.  If adam3us's segfault is the same crash, maybe he can get those details too.  I'm not sure I'll be able to do much with the details, but maybe somebody else can.

A bounty might help, too.  I'm willing to help, but don't really know enough to guess what the problem is, and don't have affected hardware.  Maybe if somebody wants to rig up remote access to your card, for me or someone else, we might be able to figure something out.

1SCiN5kqkAbxxwesKMsH9GvyWnWP5YK2W | donations
Morblias
Hero Member
*****
Offline Offline

Activity: 576
Merit: 500


View Profile
June 30, 2013, 05:51:27 PM
 #1332

The error occurs when I run this one (blue in pic):
Code:
oclvanitygen -S -d 0 -o test.txt 1Morb1ias

Can those of you with this crash post an error trace from the crash?  On Windows I think there is some information under an expanding area titled "View problem details."  Get as much as you can out of there.  If adam3us's segfault is the same crash, maybe he can get those details too.  I'm not sure I'll be able to do much with the details, but maybe somebody else can.

A bounty might help, too.  I'm willing to help, but don't really know enough to guess what the problem is, and don't have affected hardware.  Maybe if somebody wants to rig up remote access to your card, for me or someone else, we might be able to figure something out.

This is what I get from Dr. Mingw when running that command and it crashes:

Code:
oclvanitygen.exe caused an Access Violation at location 62BB379B in module amdocl.dll Reading from location 00000004.

Registers:
eax=00000000 ebx=003ce6fc ecx=05c840f4 edx=00000000 esi=04348390 edi=00000000
eip=772515de esp=003ce6e8 ebp=003cebc8 iopl=0         nv up ei pl zr na po nc
cs=0023  ss=002b  ds=002b  es=002b  fs=0053  gs=002b             efl=00200246

AddrPC   Params
772515DE 04348390 04DD2794 04F4E888 ntdll.dll!ZwRaiseException
62BB206B 04F4E888 0538BB40 003CEC10 amdocl.dll!_SCGetExportFunctions@4
62BB2690 04348390 00000000 04348390 amdocl.dll!_SCGetExportFunctions@4
62BAD1E8 01348390 00000001 0538BA74 amdocl.dll!_SCGetExportFunctions@4
62BB1C2E 00000000 0538BAE0 0538BA74 amdocl.dll!_SCGetExportFunctions@4
62BB20BA 0538BA74 01000001 0538BB00 amdocl.dll!_SCGetExportFunctions@4
62BB2F45 0538BB00 000000E4 04135494 amdocl.dll!_SCGetExportFunctions@4
62BB3583 041311C4 03B5CF30 038CC3F0 amdocl.dll!_SCGetExportFunctions@4
62BB19CF 0435E81C 038CC3F0 0435E024 amdocl.dll!_SCGetExportFunctions@4
62A16B16 03E28FA8 03B5CF30 00000000 amdocl.dll!_SCGetExportFunctions@4
62A097D5 042DAE0C 634229CC 03B82F08 amdocl.dll!_SCGetExportFunctions@4
62A09D0F 03E28FA8 03DDBD48 038505AC amdocl.dll!_SCGetExportFunctions@4
62A05C29 03850520 03E28FA8 003CEDA0 amdocl.dll!_SCGetExportFunctions@4
62A0559A 03E28FA8 038B8540 038470C0 amdocl.dll!_SCGetExportFunctions@4
62C4C35D 003CEF44 003CEE10 00000000 amdocl.dll!_SCGetExportFunctions@4
621E634A 003CEF44 003CEF6C 038B8540 amdocl.dll!clGetSamplerInfo
621E6261 05EA6008 6E69616D 038B8500 amdocl.dll!clGetSamplerInfo
621E5223 003CEFD8 6E69616D 03847000 amdocl.dll!clGetSamplerInfo
621D8660 003CEFB0 04105D08 0002A523 amdocl.dll!clGetSamplerInfo
621D8A89 038463B0 04105D08 0002A523 amdocl.dll!clGetSamplerInfo
621D9A47 00A397E8 038463B0 003CF8D8 amdocl.dll!clGetSamplerInfo
621CC217 00A397E8 038463B0 003CF8D8 amdocl.dll!clGetSamplerInfo
621C0BAE 003CF5AC 003CF680 00000000 amdocl.dll!clGetSamplerInfo
621C241C 003CF5AC 003CF680 00000000 amdocl.dll!clGetSamplerInfo
621A857F 038B8DB0 003CF654 003CF5AC amdocl.dll!clGetSamplerInfo
621AA787 003CF8D8 0393AD00 00000000 amdocl.dll!clGetSamplerInfo
6217DB05 0393AD14 003CFB5C 003CF8D8 amdocl.dll!clGetSamplerInfo
62186991 003CFA5C 003CFB5C 00000000 amdocl.dll!clGetSamplerInfo
62170F27 0393AD00 00000001 008915D0 amdocl.dll!clBuildProgram
6E8D195F 0393AD08 00000001 008915D0 OpenCL.dll!clBuildProgram

Tips / Donations accepted: 1Morb18DsDHNEv6TeQXBdba872ZSpiK9fY
Trillium
Hero Member
*****
Offline Offline

Activity: 546
Merit: 500



View Profile
July 04, 2013, 03:20:54 PM
 #1333

Running nice at 50 Mkeys/s now that I've installed AMD driver version 12.8, was getting errors with 13.1

BTC:1AaaAAAAaAAE2L1PXM1x9VDNqvcrfa9He6
madmax_ger
Sr. Member
****
Offline Offline

Activity: 448
Merit: 250



View Profile
July 06, 2013, 02:23:45 PM
 #1334

is there any solution up yet for using FPGAs / Ztex quads for vanitygen or similar?

I'd like to have 1madmax and some others but my workstation is just getting too hot.

http://btcinvest.net/bitcoin-mining-profit-calculator.php - check it out!next difficulty + time leftcustomizable monthly (diff + USD/BTC) increasements device lead timeupdate: auto-compares device costs to BTC-buy profit ♥ 1btciBCKb59TbzNj5QzC2EXWDARxtJL1f
Trillium
Hero Member
*****
Offline Offline

Activity: 546
Merit: 500



View Profile
July 07, 2013, 04:30:53 AM
Last edit: July 07, 2013, 04:46:24 AM by Trillium
 #1335

is there any solution up yet for using FPGAs / Ztex quads for vanitygen or similar?

I'd like to have 1madmax and some others but my workstation is just getting too hot.

If you want I could generate it for you. Submit an application to https://vanitypool.appspot.com/faq or see the OP and send me the necessary info.

BTC:1AaaAAAAaAAE2L1PXM1x9VDNqvcrfa9He6
TierNolan
Legendary
*
Offline Offline

Activity: 1232
Merit: 1083


View Profile
July 07, 2013, 08:41:29 AM
 #1336

How would you structure a proof of work? My only idea is to accept partial matches to the pattern as proof if work, and pay earn a share percentage for that proportional to how "close" it is to the desired pattern. This seems complicated, but probably possible. I need to spend some time thinking about how the math would work out.

Standard pool software just has a constant target for a "share".  I don't think you really need to change that. 

You want that to be sufficiently difficult so that miners aren't spamming the server, but not so difficult that they have very high variance.

You could specify a maximum distance from a valid target as your share difficulty.  That would give better resolution than number of letters matching (which would step in multiples of 58). 

The pool would work on 1 address at a time.  There would be a list on pool site sorted in terms of(bounty) / (complexity of target).

It would always pick the most profitable target.  If you want the pool to work on your address, you have to out bid the address that is currently active.  Otherwise, you get added to the queue.

You could also do it ebay style.  The buyer submits the max they will pay and the top slot is auctioned.  You pay what the 2nd highest person bids.

However, there could be a rule that it won't work on hashes that would have an expected duration of more than 1 hour, given the pool's current hash rate.

If using PPLNS, then you ideally want the range to normally cover at least a few wins.  The value of a share would be proportional to (share difficulty) * (bounty) / (complexity) for the target.  The share difficulty could be adjusted to keep it so that N shares = 2 hours on average.  Combined with a 1 hour limit of expected search time, that keeps variance low.

The buyer

- Generates key pair (A, a)
- sends target string to the pool
- sends public key (A) to the pool
- sends payment (in advance)

The buyer can cancel but there is a 1 hour delay if some miners were working on the target.  A miner might find the hash in that time, so they would still have to pay the bounty.  That is unlikely though, since the pool would automatically update to the new "best" target.  Miners could be updated by something like the "longpoll" system to move to the new hash.

Also, it would be a good idea to have software that handle's the buyer's side.  This would be open source and do the calculations required for the buyer.  That aren't that complex, but it would increase

The pool
- Adds address + bounty to the pending work page on the website
- Generates key pair (B, b)
- sends target string, public key (A + B) and bounty to miners

Miners runs this in a loop
- pick c (private key)
- compute C (public key)
- add (C + (A + B))
- compute base58-encode(C + (A + B))
- check if it meets the difficulty requirements for a share
-- send c to pool and receive 1 share

Note: Miners don't have A or B, they just have (A + B)

The pool
- receives c
- checks c is valid for a share
-- adds a share to miner's total
- checks if the address matches the full target
-- publishes (c + b) and the address on the pool's website
-- sends (c + b) to the customer
-- Adds payouts to the miner's accounts

The advantage of that is that it is all safe for each group.  There is a rule with keys that if a and b are private keys with public keys of A and B, then (a + b) will be a private key matching (A + B).

It prevents miners from sending the winning share directly to the customer.  You need to know three pieces of info to actually use the address; a (customer knows), b (pool knows) and c (miner knows).

The miner which actually hits the winning value for c should probably get an extra reward (say 1% of the bounty goes to that miner).

1LxbG5cKXzTwZg9mjL3gaRE835uNQEteWF
madmax_ger
Sr. Member
****
Offline Offline

Activity: 448
Merit: 250



View Profile
July 08, 2013, 10:13:19 PM
 #1337

is there any solution up yet for using FPGAs / Ztex quads for vanitygen or similar?

I'd like to have 1madmax and some others but my workstation is just getting too hot.

If you want I could generate it for you. Submit an application to https://vanitypool.appspot.com/faq or see the OP and send me the necessary info.

tyvm, but I'd like to get vanitygen making use of my ztex, and generate those on my own Smiley
well, that's part of the fun factor for me.

no idea?

http://btcinvest.net/bitcoin-mining-profit-calculator.php - check it out!next difficulty + time leftcustomizable monthly (diff + USD/BTC) increasements device lead timeupdate: auto-compares device costs to BTC-buy profit ♥ 1btciBCKb59TbzNj5QzC2EXWDARxtJL1f
deepceleron
Legendary
*
Offline Offline

Activity: 1512
Merit: 1025



View Profile WWW
July 09, 2013, 03:01:36 PM
 #1338

is there any solution up yet for using FPGAs / Ztex quads for vanitygen or similar?

I'd like to have 1madmax and some others but my workstation is just getting too hot.

If you want I could generate it for you. Submit an application to https://vanitypool.appspot.com/faq or see the OP and send me the necessary info.

tyvm, but I'd like to get vanitygen making use of my ztex, and generate those on my own Smiley
well, that's part of the fun factor for me.

no idea?
If you type FPGA into the search box while reading this thread, it will give you the answer, which is no. A bitcoin miner is computationally nothing like an address generator.
Financisto
Hero Member
*****
Offline Offline

Activity: 630
Merit: 767

BTC⇆⚡⇄BTC


View Profile WWW
July 20, 2013, 09:33:15 AM
 #1339

Very nice app.

Keep up the good work!

BitcoinTalk's ESCROW Providers: Ranking & BlacklistCompilation of (open-source) BRAINWALLET projectsBTC ⇆⚡⇄ BTCBTC aka BTC: 16MBvhaJoRBxW3Vk6apnvz3UYT9HAgraVS ⚡ PGP: 2680207AA9A1B69FE7A033D80DE0F221074384C4 ⚡ If you think freedom matters, please support the development of these privacy projects→DONATE some sats: TailsQubes OSWhonixVeraCryptPicocryptKryptorSimpleX Chat
cypherdoc
Legendary
*
Offline Offline

Activity: 1764
Merit: 1002



View Profile
July 24, 2013, 07:06:01 AM
 #1340

what am i doing wrong?  nothing happening with this:

Code:
C:\Users\xxx\Desktop\vanitygen-0.22-win>oclvanitygen.exe -vqrikNTS -d0 -d
1 -d2 -d3 -f cypher 1cypherdoc

using windows 7 64 bit with 3 Radeon 6970 gpu cards.
Pages: « 1 ... 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 [67] 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 ... 191 »
  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!