Pages:
Author

Topic: Pushpool - Tech Support (Read 135162 times)

full member
Activity: 190
Merit: 100
September 24, 2015, 08:02:49 AM
I keep getting :
server.json: JSON parse failed

When I do:
pushpoold -E -F

This is my server.json:
http://pastebin.com/v8TJQb9Z


What am I doing wrong?
legendary
Activity: 2072
Merit: 1001
February 12, 2014, 07:53:59 PM
I would like to start a small mining pool as well this seems very difficult and would take up all the free time I have in a day. I do have a lot of free time but don't know if I want to sit in front of a PC all day and night.

Your best bet is to start learning linux and if you already know it setup a pool for an alt coin where little hashing power can still find a block. It is not really necessary to have a web front end right away.
full member
Activity: 140
Merit: 100
Don't fear Crypto Exchanges go with honest well kn
February 12, 2014, 07:31:34 PM
I would like to start a small mining pool as well this seems very difficult and would take up all the free time I have in a day. I do have a lot of free time but don't know if I want to sit in front of a PC all day and night.
legendary
Activity: 2072
Merit: 1001
February 08, 2014, 10:36:49 PM
I have the same problem as others. No shares going into the database or into shares.log.

There is a pretty detailed post (https://bitcointalksearch.org/topic/m.2038129) a page or so back that has the exact same problem I do, so Im kinda hoping somebody will answer him..

Mysql setup right and running? Created user with passwd in mysql? Put in config file?

Shares.log placed in /tmp for debugging purposes since any user can write there?

Pushpool running and what does cgminer show?

What coin are you trying to mine? Coin daemon running and setup right in config file?
newbie
Activity: 5
Merit: 0
February 08, 2014, 06:59:09 PM
I have the same problem as others. No shares going into the database or into shares.log.

There is a pretty detailed post (https://bitcointalksearch.org/topic/m.2038129) a page or so back that has the exact same problem I do, so Im kinda hoping somebody will answer him..
newbie
Activity: 49
Merit: 0
November 23, 2013, 12:00:15 PM
hello , sorry this thread is old but i would like to know why this does not work

i have setup pushpool & litecoind , the litecoin deamon is well configured & the puspool too
(following some tutorial)  http://bitcoin.stackexchange.com/questions/4303/how-to-setup-pushpool

http://snag.gy/EtQrq.jpg

does someone know why i cannot connect to my pool ?

im on ubuntu-13.04-x86

thx you vey much
legendary
Activity: 1596
Merit: 1091
July 22, 2013, 03:50:03 PM
Does anyone know something about stratum support by pushpool?

I would be happy to merge litecoin and stratum support into the pushpool repo, if someone created a pull request.

newbie
Activity: 9
Merit: 0
July 22, 2013, 11:53:38 AM
Hi gateway
this fork of pushpool works with litecoin, but it does not support stratum.

Does anyone know something about stratum support by pushpool?
hero member
Activity: 552
Merit: 500
July 03, 2013, 03:24:59 PM
Anyone here have pushpool properly working with ltc? If so do you care to share what git depo you used and maybe a small walk though?  I have a lot of gpu miners and with diff on btc increasing i want to self mine with ltc..

legendary
Activity: 1862
Merit: 1011
Reverse engineer from time to time
June 02, 2013, 07:09:15 AM
*** Resolved this. It ended up being a missing underscore for the MySQL username. As always it always ends up being something simpler than you think.
Its ashame that pushpool doesn't throw out any useful errors to give you a pointer though :-)


Hi Folks

I have installed PushPool but when I run the process I see the following:


~/ppool/sbin$ ./pushpoold -E -F -D 2
[2013-06-02 08:59:42.951470] Debug output enabled
[2013-06-02 08:59:42.951880] Forcing local hostname to localhost.localdomain
[2013-06-02 08:59:42.955115] Listening on host :: port 8342
[2013-06-02 08:59:42.955226] Listening on host :: port 8341
[2013-06-02 08:59:42.955321] Listening on host :: port 8332
[2013-06-02 08:59:42.955398] Listening on host 127.0.0.1 port 8338

I then do a ps -ef|grep push and find the process isn't running.

Are there any log files I can look at to figure out why the process is dying. I was hoping that I would see an error output to the screen if the process is immediately crashing out.

Any assistance appreciated.
This is a known issue with pushpool not initializing OR warning if MySQL server isn't running or wrong credentials are supplied.
member
Activity: 112
Merit: 10
June 02, 2013, 06:05:20 AM
*** Resolved this. It ended up being a missing underscore for the MySQL username. As always it always ends up being something simpler than you think.
Its ashame that pushpool doesn't throw out any useful errors to give you a pointer though :-)


Hi Folks

I have installed PushPool but when I run the process I see the following:


~/ppool/sbin$ ./pushpoold -E -F -D 2
[2013-06-02 08:59:42.951470] Debug output enabled
[2013-06-02 08:59:42.951880] Forcing local hostname to localhost.localdomain
[2013-06-02 08:59:42.955115] Listening on host :: port 8342
[2013-06-02 08:59:42.955226] Listening on host :: port 8341
[2013-06-02 08:59:42.955321] Listening on host :: port 8332
[2013-06-02 08:59:42.955398] Listening on host 127.0.0.1 port 8338

I then do a ps -ef|grep push and find the process isn't running.

Are there any log files I can look at to figure out why the process is dying. I was hoping that I would see an error output to the screen if the process is immediately crashing out.

Any assistance appreciated.
member
Activity: 112
Merit: 10
June 02, 2013, 05:00:26 AM
Hi Folks

I have installed PushPool but when I run the process I see the following:


~/ppool/sbin$ ./pushpoold -E -F -D 2
[2013-06-02 08:59:42.951470] Debug output enabled
[2013-06-02 08:59:42.951880] Forcing local hostname to localhost.localdomain
[2013-06-02 08:59:42.955115] Listening on host :: port 8342
[2013-06-02 08:59:42.955226] Listening on host :: port 8341
[2013-06-02 08:59:42.955321] Listening on host :: port 8332
[2013-06-02 08:59:42.955398] Listening on host 127.0.0.1 port 8338

I then do a ps -ef|grep push and find the process isn't running.

Are there any log files I can look at to figure out why the process is dying. I was hoping that I would see an error output to the screen if the process is immediately crashing out.

Any assistance appreciated.
member
Activity: 445
Merit: 10
Worlds Simplest Cryptocurrency Wallet
June 01, 2013, 11:04:05 AM
Hello. I'm trying to run pushpoold with novacoind and getting error:

Code:
 ./pushpoold -E -F -D 2
[2013-06-01 11:30:17.789292] Debug output enabled
[2013-06-01 11:30:17.789534] Forcing local hostname to localhost.localdomain
[2013-06-01 11:30:17.791153] Listening on host :: port 8344
[2013-06-01 11:30:17.792940] initialized
DEBUG: fetch new work
JSON protocol request:
{"method": "getworkex", "params": [], "id":1}

* About to connect() to 127.0.0.1 port 8332 (#0)
*   Trying 127.0.0.1... * TCP_NODELAY set
* connected
* Connected to 127.0.0.1 (127.0.0.1) port 8332 (#0)
* Server auth using Basic with user 'Superuser'
> POST / HTTP/1.1
Authorization: Basic Verylongstrangepassword=
Host: 127.0.0.1:8332
Accept: */*
Accept-Encoding: deflate, gzip
Content-type: application/json
Content-Length: 47

< HTTP/1.1 200 OK
< Date: Sat, 01 Jun 2013 11:30:17 +0000
< Connection: keep-alive
< Content-Length: 623
< Content-Type: application/json
< Server: novacoin-json-rpc/v0.4.2-nvc-beta
<
* Connection #0 to host 127.0.0.1 left intact
JSON protocol response:
{
   "error": null,
   "result": {
      "data": "000000050a883c74769724cc00fb5b758394c35b0f3711357949ae8071cf73473f45ab0347ed72c798dabd472ea902256f5db99c4898faf68b2ee312ea662ee4b7c310ff51a9db491c01588200000000000000800000000000000000000000000000000000000000000000000000000000000000000000000000000080020000",
      "merkle": [],
      "target": "0000000000000000000000000000000000000000000000000082580100000000",
      "coinbase": "010000003adba951010000000000000000000000000000000000000000000000000000000000000000ffffffff0c02ee5e0103062f503253482fffffffff0120ff9e0000000000232103ec76df90d42358f5e1425805f8d927550233e8d9813435036171427f02623db6ac00000000"
   },
   "id": 1
}
[2013-06-01 11:30:17.793631] error: using aux chains but getworkex not available

I used this pushpool fork before: https://github.com/alexhz/pushpool Then I've desided to change it to https://github.com/CryptoManiac/pushpool for better NVC support. With CryptoManiac fork I see that pushpool and miner working but no one shares counted. Even in miner log I dont see that any share founded.
Then I tried roll back to alxhz for but now it get error about getworkex not available. Is there a way to show him that getworkex?

Thanks.
It appears you need a getworkex RPC command available on your novacoind, which you do not, then again it's something about merge mining, so It'd be best to disable that.

Novacoin have this command:
Quote
$ novacoind getworkex
{
    "data" : "000000057a635ad4b8565fb7108dccd389fe23bf7a169c3f7891672fd5686eaa74909d200960d35 3997f5e8d5bf869c0f9cd78a2f51fc9d343e3ef6794656fb90f726c4d51aa03e01c015830000000 0000000080000000000000000000000000000000000000000000000000000000000000000000000 0000000000080020000",
    "target" : "0000000000000000000000000000000000000000000000000030580100000000",
    "coinbase" : "01000000e003aa51010000000000000000000000000000000000000000000000000000000000000 000ffffffff0c02025f0105062f503253482fffffffff0120ff9e0000000000232103ec76df90d4 2358f5e1425805f8d927550233e8d9813435036171427f02623db6ac00000000",
    "merkle" : [
    ]
}
So anyway how can I disable this?
legendary
Activity: 1862
Merit: 1011
Reverse engineer from time to time
June 01, 2013, 09:10:35 AM
Hello. I'm trying to run pushpoold with novacoind and getting error:

Code:
 ./pushpoold -E -F -D 2
[2013-06-01 11:30:17.789292] Debug output enabled
[2013-06-01 11:30:17.789534] Forcing local hostname to localhost.localdomain
[2013-06-01 11:30:17.791153] Listening on host :: port 8344
[2013-06-01 11:30:17.792940] initialized
DEBUG: fetch new work
JSON protocol request:
{"method": "getworkex", "params": [], "id":1}

* About to connect() to 127.0.0.1 port 8332 (#0)
*   Trying 127.0.0.1... * TCP_NODELAY set
* connected
* Connected to 127.0.0.1 (127.0.0.1) port 8332 (#0)
* Server auth using Basic with user 'Superuser'
> POST / HTTP/1.1
Authorization: Basic Verylongstrangepassword=
Host: 127.0.0.1:8332
Accept: */*
Accept-Encoding: deflate, gzip
Content-type: application/json
Content-Length: 47

< HTTP/1.1 200 OK
< Date: Sat, 01 Jun 2013 11:30:17 +0000
< Connection: keep-alive
< Content-Length: 623
< Content-Type: application/json
< Server: novacoin-json-rpc/v0.4.2-nvc-beta
<
* Connection #0 to host 127.0.0.1 left intact
JSON protocol response:
{
   "error": null,
   "result": {
      "data": "000000050a883c74769724cc00fb5b758394c35b0f3711357949ae8071cf73473f45ab0347ed72c798dabd472ea902256f5db99c4898faf68b2ee312ea662ee4b7c310ff51a9db491c01588200000000000000800000000000000000000000000000000000000000000000000000000000000000000000000000000080020000",
      "merkle": [],
      "target": "0000000000000000000000000000000000000000000000000082580100000000",
      "coinbase": "010000003adba951010000000000000000000000000000000000000000000000000000000000000000ffffffff0c02ee5e0103062f503253482fffffffff0120ff9e0000000000232103ec76df90d42358f5e1425805f8d927550233e8d9813435036171427f02623db6ac00000000"
   },
   "id": 1
}
[2013-06-01 11:30:17.793631] error: using aux chains but getworkex not available

I used this pushpool fork before: https://github.com/alexhz/pushpool Then I've desided to change it to https://github.com/CryptoManiac/pushpool for better NVC support. With CryptoManiac fork I see that pushpool and miner working but no one shares counted. Even in miner log I dont see that any share founded.
Then I tried roll back to alxhz for but now it get error about getworkex not available. Is there a way to show him that getworkex?

Thanks.
It appears you need a getworkex RPC command available on your novacoind, which you do not, then again it's something about merge mining, so It'd be best to disable that.
member
Activity: 445
Merit: 10
Worlds Simplest Cryptocurrency Wallet
June 01, 2013, 07:48:06 AM
Hello. I'm trying to run pushpoold with novacoind and getting error:

Code:
 ./pushpoold -E -F -D 2
[2013-06-01 11:30:17.789292] Debug output enabled
[2013-06-01 11:30:17.789534] Forcing local hostname to localhost.localdomain
[2013-06-01 11:30:17.791153] Listening on host :: port 8344
[2013-06-01 11:30:17.792940] initialized
DEBUG: fetch new work
JSON protocol request:
{"method": "getworkex", "params": [], "id":1}

* About to connect() to 127.0.0.1 port 8332 (#0)
*   Trying 127.0.0.1... * TCP_NODELAY set
* connected
* Connected to 127.0.0.1 (127.0.0.1) port 8332 (#0)
* Server auth using Basic with user 'Superuser'
> POST / HTTP/1.1
Authorization: Basic Verylongstrangepassword=
Host: 127.0.0.1:8332
Accept: */*
Accept-Encoding: deflate, gzip
Content-type: application/json
Content-Length: 47

< HTTP/1.1 200 OK
< Date: Sat, 01 Jun 2013 11:30:17 +0000
< Connection: keep-alive
< Content-Length: 623
< Content-Type: application/json
< Server: novacoin-json-rpc/v0.4.2-nvc-beta
<
* Connection #0 to host 127.0.0.1 left intact
JSON protocol response:
{
   "error": null,
   "result": {
      "data": "000000050a883c74769724cc00fb5b758394c35b0f3711357949ae8071cf73473f45ab0347ed72c798dabd472ea902256f5db99c4898faf68b2ee312ea662ee4b7c310ff51a9db491c01588200000000000000800000000000000000000000000000000000000000000000000000000000000000000000000000000080020000",
      "merkle": [],
      "target": "0000000000000000000000000000000000000000000000000082580100000000",
      "coinbase": "010000003adba951010000000000000000000000000000000000000000000000000000000000000000ffffffff0c02ee5e0103062f503253482fffffffff0120ff9e0000000000232103ec76df90d42358f5e1425805f8d927550233e8d9813435036171427f02623db6ac00000000"
   },
   "id": 1
}
[2013-06-01 11:30:17.793631] error: using aux chains but getworkex not available

I used this pushpool fork before: https://github.com/alexhz/pushpool Then I've desided to change it to https://github.com/CryptoManiac/pushpool for better NVC support. With CryptoManiac fork I see that pushpool and miner working but no one shares counted. Even in miner log I dont see that any share founded.
Then I tried roll back to alxhz for but now it get error about getworkex not available. Is there a way to show him that getworkex?

Thanks.
hero member
Activity: 873
Merit: 1035
Sexcoin Core Dev Team Member
May 08, 2013, 09:45:02 PM
now 30000 shares, still no upstream_result with "N" or "Y"

problems?
upstream_result is when the pool detects a share at or higher than the network target, ONLY THEN does it allow it to get to bitcoind. That's why, basically.

I'm having this issue running pushpool against a private testnet (difficulty 0.00024414). Right now I've got 10,000 shares and less than .01% are getting submitted upstream. All of those submitted get returned as false (upstream_result = "N"). Also, cgminer constantly reports "Found block"

When I point cgminer directly at litecoind (the same litecoind), it mines blocks so fast I have to drop my intensity to see the output.

I've tried almost every combination of:
setting rpc.target.bits everywhere between 1 and 32.
rpc.target.rewrite true and false
longpoll.disable true and false

I've commented out the check in the source for insufficient target to prevent submission. This results in all work being submitted to litecoind and all being rejected.

I've fiddled with the EASY_TARGET def, blindly.
I've tried alexhz, viperaus and Artforz's versions, though almost all of my edits were done against alexhz's.

Here's some of the output with rpc.target.bits : 16

Code:
[2013-05-08 21:22:04] Found block for pool 0!
 [2013-05-08 21:22:04] Accepted 07d00a91 Diff 32/15 BLOCK! GPU 0
 [2013-05-08 21:22:05] Found block for pool 0!
 [2013-05-08 21:22:05] Accepted 061e8bec Diff 41/15 BLOCK! GPU 0
 [2013-05-08 21:22:05] Found block for pool 0!
 [2013-05-08 21:22:05] Accepted 079e59aa Diff 33/15 BLOCK! GPU 0
 [2013-05-08 21:22:08] Found block for pool 0!
 [2013-05-08 21:22:08] Accepted 04b99f69 Diff 54/15 BLOCK! GPU 0
 [2013-05-08 21:22:10] Found block for pool 0!
 [2013-05-08 21:22:10] Accepted 021f7d6f Diff 120/15 BLOCK! GPU 0
 [2013-05-08 21:22:18] Found block for pool 0!
 [2013-05-08 21:22:18] Accepted 00b36a9c Diff 365/15 BLOCK! GPU 0
 [2013-05-08 21:22:21] Found block for pool 0!
 [2013-05-08 21:22:21] Accepted 0bbf72e8 Diff 21/15 BLOCK! GPU 0
 [2013-05-08 21:22:21] Found block for pool 0!
 [2013-05-08 21:22:21] Accepted 0cccf99d Diff 19/15 BLOCK! GPU 0
 [2013-05-08 21:22:39] Found block for pool 0!
 [2013-05-08 21:22:39] Accepted 00e5cf93 Diff 285/15 BLOCK! GPU 0
 [2013-05-08 21:22:39] Found block for pool 0!
 [2013-05-08 21:22:39] Accepted 0e81878f Diff 17/15 BLOCK! GPU 0
 [2013-05-08 21:22:50] Found block for pool 0!
 [2013-05-08 21:22:50] Accepted 0c719c90 Diff 20/15 BLOCK! GPU 0
 [2013-05-08 21:22:54] Found block for pool 0!
 [2013-05-08 21:22:54] Accepted 001dfb7e Diff 2.19K/15 BLOCK! GPU 0
 [2013-05-08 21:22:55] Found block for pool 0!
 [2013-05-08 21:22:55] Accepted 0ea29e1c Diff 17/15 BLOCK! GPU 0
 [2013-05-08 21:22:56] Found block for pool 0!
 [2013-05-08 21:22:56] Accepted 0ddff7e4 Diff 18/15 BLOCK! GPU 0

None of these shares were submitted upstream.

I'm testing on an Ubuntu 32bit 10.04. The compile is clean.

A couple of things I've noticed:
- if I reset the testnet to go back to zero, I can usually mine the first block. Not always.
- commenting out rpc.target.bits results in many shares being accepted between found blocks, but the "Found block" is still false.
- setting rpc.target.bits : 1 results in the above, but much slower. ( I read somewhere that the lower the rpc.target.bits, the less shares get submitted).

I've read other people in this thread having this problem, but I haven't found any resolution. Did someone solve this and I missed it?

I've also wondered if everything may be running right, just there's something about testnet that's incompatible?


EDIT: This is solved. Thanks for the PM's!  I didn't have a blocknotify process in place. In case anyone else is having trouble finding this, Longpolling requires that a SIGUSR1 signal is sent to the pushpool process when a block is found (new block available) which in turn notifies connected clients that they need new work. Populate an entry in litecoin.conf (or pass on command line).
Code:
blocknotify="/full/path/to/process"

I wrote my notifier in php.

Code:
#!/usr/bin/php
$log=fopen("/opt/work/notify.log","a+");
$date=date("Y-m-d H:i:s");
fwrite($log,"$date\n");
exec("killall -s SIGUSR1 pushpoold");
fclose($log);
?>

newbie
Activity: 42
Merit: 0
May 08, 2013, 04:45:25 PM
What's going wrong here?

I've installed pushpool for litecoind.

When i connect my miner, pushpool outputs this:

Quote
./pushpoold -E -F --foreground --debug=2 --stderr
[2013-05-08 19:17:18.016875] Debug output enabled
[2013-05-08 19:17:18.017560] Forcing local hostname to localhost.localdomain
[2013-05-08 19:17:18.053034] Listening on host :: port 8342
[2013-05-08 19:17:18.053239] Listening on host :: port 8341
[2013-05-08 19:17:18.053317] Listening on host :: port 8992
[2013-05-08 19:17:18.053379] Listening on host 127.0.0.1 port 8338
[2013-05-08 19:17:18.084128] initialized
JSON protocol request:
{"method": "getwork", "params": [], "id":1}

* About to connect() to 127.0.0.1 port 9332 (#0)
*   Trying 127.0.0.1... * TCP_NODELAY set
* connected
* Connected to 127.0.0.1 (127.0.0.1) port 9332 (#0)
* Server auth using Basic with user 'bbttcc2llttcc'
> POST / HTTP/1.1
Authorization: Basic YmJ0dGNjMmxsdHRjYzp2ZXJ5MTIzNDVsb25nUGFzc3dvcmRUaGF0bm8xQ2FuR3Vlc3M=
Host: 127.0.0.1:9332
Accept: */*
Accept-Encoding: deflate, gzip
Content-type: application/json
Content-Length: 45

< HTTP/1.1 200 OK
< Date: Wed, 08 May 2013 19:17:24 +0000
< Connection: keep-alive
< Content-Length: 592
< Content-Type: application/json
< Server: litecoin-json-rpc/v0.6.3.0-g8ad55e4-beta
<
* Connection #0 to host 127.0.0.1 left intact
JSON protocol response:
{
   "error": null,
   "result": {
      "target": "000000000000000000000000000000000000000000000000007f8b0000000000",
      "midstate": "41d1d52c550e8cd2d5de37f5f950553350b148b62650f22d82d15dfd9261f9d5",
      "data": "00000001ae49bc7f11aa453a299e20d797fee143f0f525f3754941b91bc2fdcd5d0bc2743b01414 92473bce49564fe704dbfea861dc35232d2c33fc5853018446471aa13518aa4cc1c008b7f000000 0000000080000000000000000000000000000000000000000000000000000000000000000000000 0000000000080020000",
      "hash1": "0000000000000000000000000000000000000000000000000000000000000000000000800000000 0000000000000000000000000000000000000000000010000"
   },
   "id": 1
}



It does'nt say the miner is connected. Why? Every 30 seconds or so, a new getwork request is done, but nothing else seem to happen...
Also: My miner mines @ 100Khash, but does'nt get shares (accepted). The database also doesn't get filled, it does not show active miner, nor shares.

It kinda feel's like it's solo mining.
full member
Activity: 121
Merit: 100
New Order
May 07, 2013, 08:59:00 PM
You should recieve shares... when connected to pushpool... My Litecoin pool gives met a share every second or so...

Hi OversightNL,
Do you know how to make sure that i am really mining ... I've set pushpool to use litecoind (using git clone https://github.com/ArtForz/pushpool.git) , connected my client and cgminer is processing like crazy... the problem is, i just can't see any message saying that i am actually doing any progress.

Is there a way to make sure it is really working ? I really don't want to spend electricity for nothing....

Cgminer:

 [2013-05-07 21:53:14] LONGPOLL from pool 0 detected new block
 [2013-05-07 21:53:53] Network diff set to 26M
 [2013-05-07 21:53:53] LONGPOLL from pool 0 detected new block
 [2013-05-07 21:54:25] Network diff set to 26M
 [2013-05-07 21:54:25] LONGPOLL from pool 0 detected new block
 [2013-05-07 21:57:17] Network diff set to 26M
 [2013-05-07 21:57:17] LONGPOLL from pool 0 detected new block
 [2013-05-07 21:57:40] Network diff set to 26M
 [2013-05-07 21:57:40] LONGPOLL from pool 0 detected new block
 [2013-05-07 21:57:56] Network diff set to 26M
 [2013-05-07 21:57:56] LONGPOLL from pool 0 detected new block

No idea if it is working or not.... Sad
full member
Activity: 121
Merit: 100
New Order
May 07, 2013, 06:31:24 PM
You should recieve shares... when connected to pushpool... My Litecoin pool gives met a share every second or so...

Hi OversightNL,
Do you know how to make sure that i am really mining ... I've set pushpool to use litecoind (using git clone https://github.com/ArtForz/pushpool.git) , connected my client and cgminer is processing like crazy... the problem is, i just can't see any message saying that i am actually doing any progress.

Is there a way to make sure it is really working ? I really don't want to spend electricity for nothing....
newbie
Activity: 56
Merit: 0
May 05, 2013, 03:59:59 PM
You should recieve shares... when connected to pushpool... My Litecoin pool gives met a share every second or so...
Pages:
Jump to: