Skip to content

Commit 7cd58a0

Browse files
committed
feat: add script for miner stats snapshot
1 parent d5bb051 commit 7cd58a0

8 files changed

Lines changed: 1727 additions & 2 deletions

testnet_data_snapshots/TESTNET_DATA_README.md

Lines changed: 25 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,29 @@ This folder contains snapshot data from different testnets to figure out rewards
44

55
Note that addresses between resonance and schrodinger have changed, and will change again for testnet (3).
66

7-
## How to create this data
7+
Past testnets: `resonance_network`, `schrodinger`, `dirac`. Current testnet snapshot: `planck_miners.json`.
88

9-
-> simply go to graphQL, and hit "minerStats". That's all!
9+
## Fetch current testnet data
10+
11+
```bash
12+
python3 testnet_data_snapshots/fetch_current_miners.py
13+
```
14+
15+
This queries `https://sub2.quantus.com/v1/graphql` and writes `planck_miners.json`.
16+
17+
Options:
18+
19+
- `--output other_miners.json` — custom output filename
20+
- `--export-csv` — also write the matching `.csv` file
21+
22+
You can also query GraphQL manually with the `minerStats` alias on `account_stats`.
23+
24+
## Export to CSV
25+
26+
To convert miner JSON snapshots into spreadsheet-friendly CSV:
27+
28+
```bash
29+
python3 testnet_data_snapshots/export_miners_to_csv.py
30+
```
31+
32+
This writes one `.csv` per `*_miners.json` file (same directory) with columns: `id`, `totalMinedBlocks`, `totalRewards`.

testnet_data_snapshots/dirac_miners.csv

Lines changed: 400 additions & 0 deletions
Large diffs are not rendered by default.
Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
#!/usr/bin/env python3
2+
"""Export GraphQL minerStats JSON snapshots to CSV for spreadsheet import."""
3+
4+
from __future__ import annotations
5+
6+
import csv
7+
import json
8+
import sys
9+
from pathlib import Path
10+
11+
COLUMNS = ("id", "totalMinedBlocks", "totalRewards")
12+
13+
14+
def convert_json_to_csv(json_path: Path) -> int:
15+
with json_path.open(encoding="utf-8") as handle:
16+
payload = json.load(handle)
17+
18+
miners = payload["data"]["minerStats"]
19+
csv_path = json_path.with_suffix(".csv")
20+
21+
with csv_path.open("w", newline="", encoding="utf-8") as handle:
22+
writer = csv.DictWriter(handle, fieldnames=COLUMNS)
23+
writer.writeheader()
24+
writer.writerows(miners)
25+
26+
print(f"{json_path.name} -> {csv_path.name} ({len(miners)} rows)")
27+
return len(miners)
28+
29+
30+
def main() -> int:
31+
snapshot_dir = Path(__file__).resolve().parent
32+
json_files = sorted(snapshot_dir.glob("*_miners.json"))
33+
34+
if not json_files:
35+
print(f"No *_miners.json files found in {snapshot_dir}", file=sys.stderr)
36+
return 1
37+
38+
total_rows = 0
39+
for json_path in json_files:
40+
total_rows += convert_json_to_csv(json_path)
41+
42+
print(f"Exported {len(json_files)} file(s), {total_rows} total miner rows.")
43+
return 0
44+
45+
46+
if __name__ == "__main__":
47+
raise SystemExit(main())
Lines changed: 105 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,105 @@
1+
#!/usr/bin/env python3
2+
"""Fetch current testnet miner stats from Quantus GraphQL and save as JSON snapshot."""
3+
4+
from __future__ import annotations
5+
6+
import argparse
7+
import json
8+
import sys
9+
import urllib.error
10+
import urllib.request
11+
from pathlib import Path
12+
13+
DEFAULT_ENDPOINT = "https://sub2.quantus.com/v1/graphql"
14+
DEFAULT_OUTPUT = "planck_miners.json"
15+
16+
MINER_STATS_QUERY = """
17+
query MyQuery {
18+
minerStats: account_stats(
19+
where: {total_mined_blocks: {_gt: 0}}
20+
order_by: {total_mined_blocks: desc}
21+
) {
22+
id
23+
totalMinedBlocks: total_mined_blocks
24+
totalRewards: total_rewards
25+
}
26+
}
27+
""".strip()
28+
29+
30+
def fetch_miner_stats(endpoint: str) -> dict:
31+
body = json.dumps({"query": MINER_STATS_QUERY}).encode("utf-8")
32+
request = urllib.request.Request(
33+
endpoint,
34+
data=body,
35+
headers={
36+
"Content-Type": "application/json",
37+
"User-Agent": "task-master/1.0 (miner-stats-fetch)",
38+
},
39+
method="POST",
40+
)
41+
42+
try:
43+
with urllib.request.urlopen(request, timeout=60) as response:
44+
payload = json.load(response)
45+
except urllib.error.HTTPError as exc:
46+
error_body = exc.read().decode("utf-8", errors="replace")
47+
raise RuntimeError(f"GraphQL request failed ({exc.code}): {error_body}") from exc
48+
except urllib.error.URLError as exc:
49+
raise RuntimeError(f"Could not reach GraphQL endpoint: {exc.reason}") from exc
50+
51+
if "errors" in payload:
52+
raise RuntimeError(f"GraphQL errors: {json.dumps(payload['errors'], indent=2)}")
53+
54+
if "data" not in payload or "minerStats" not in payload["data"]:
55+
raise RuntimeError(f"Unexpected GraphQL response shape: {json.dumps(payload, indent=2)}")
56+
57+
return payload
58+
59+
60+
def main() -> int:
61+
parser = argparse.ArgumentParser(description=__doc__)
62+
parser.add_argument(
63+
"--endpoint",
64+
default=DEFAULT_ENDPOINT,
65+
help=f"GraphQL endpoint URL (default: {DEFAULT_ENDPOINT})",
66+
)
67+
parser.add_argument(
68+
"--output",
69+
default=DEFAULT_OUTPUT,
70+
help=f"Output JSON filename inside testnet_data_snapshots (default: {DEFAULT_OUTPUT})",
71+
)
72+
parser.add_argument(
73+
"--export-csv",
74+
action="store_true",
75+
help="Also export the fetched JSON to CSV via export_miners_to_csv.py",
76+
)
77+
args = parser.parse_args()
78+
79+
snapshot_dir = Path(__file__).resolve().parent
80+
output_path = snapshot_dir / args.output
81+
82+
print(f"Fetching miner stats from {args.endpoint} ...")
83+
payload = fetch_miner_stats(args.endpoint)
84+
miner_count = len(payload["data"]["minerStats"])
85+
86+
with output_path.open("w", encoding="utf-8") as handle:
87+
json.dump(payload, handle, indent=2)
88+
handle.write("\n")
89+
90+
print(f"Wrote {output_path.name} ({miner_count} miners)")
91+
92+
if args.export_csv:
93+
from export_miners_to_csv import convert_json_to_csv
94+
95+
convert_json_to_csv(output_path)
96+
97+
return 0
98+
99+
100+
if __name__ == "__main__":
101+
try:
102+
raise SystemExit(main())
103+
except RuntimeError as exc:
104+
print(exc, file=sys.stderr)
105+
raise SystemExit(1)
Lines changed: 161 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,161 @@
1+
id,totalMinedBlocks,totalRewards
2+
qzjVZ8E957sD3cp8XS8Cf3bD4qLZPjYsdm6NSm5ZbA2o5BDZj,73105,28155121276846947
3+
qznaZcifLXCN9M6cWeJ91XsGQ7NCbkiZCwaLouUSP5YMiMzyQ,26614,10256707989777470
4+
qzqDMhonEncjXczzbaxXYTsFkh2MMDVSpCQXamVvK7EE6NSpY,19992,7724346107780540
5+
qzkJ4DehqdMcBFHqVWPsZ7o6DpW5vJWNmsSs123vc9zCgjTod,18705,7286394758724671
6+
qzjtwGuPGLy1C8mkpc7hp4ZyiK3WxaPJ5yg2dZtUnGprqZ84r,17816,6791663597286986
7+
qzoe6nFgmXGwHA5zyUKwwGaiwFZjUBCvmXWCvZsnVA1LHEuHt,14174,5433573819629701
8+
qzq92jufqAi6mq6NejVjbnFSHmWGp2btEz7jyCbqW2t2NAYZw,13361,5141084520099119
9+
qzoUXSq3JiS3FNWLT1sX93orRW8iub9jijuKNs162oYf7gcmH,12655,4902730825106734
10+
qzozjfZd8vfVFdoKbtmezfMWV21ngt2Qc429Df1uT8u5CMeWZ,12639,4820581667301216
11+
qzk5T5k7XV5UwErhdCadnr5YG12rd7ZwXXMdQ9jKU8j1Qs8z6,11782,4716136748065193
12+
qzogGp7Wf1UJn9gWNr6qbEhHtyvVPFXq4ResHiCRnTNVX73Yy,11307,4347312148743515
13+
qzpkSBJZ2seaisouXx5r9HnhMzFUNrx8FdLTQLcE27veKurTc,10821,4255608072981682
14+
qzoqy3pcLsBcPpGFqj9BTv3UyvRB9o8ScnKqcQfSbQTR6odnu,9936,3813518767117941
15+
qzoGZBgSuPqRLLHe5E3MWR2Az3bLXdiobDJN56KdMoF5tyKhc,9557,3745411546476269
16+
qzq3yzbR7iXgkAEWdANe7WkvCvHqZVsmTJVQ9qkWax28wKQ1d,9252,3526115255654701
17+
qzoh8Nvauqx6fHiFftu8UU3vJncL23sZY9sP9PjxX8NtbbU71,9098,3508256206841844
18+
qzk8ik4XDs99LechSUQ7X4UcsEn3x5G2K6HVAh12VGaeLKCaE,8839,3399258452975923
19+
qzpciM4tLqLHhiRczjKd2kSwSWAncCYkuU6PdDyjZE37cbyMv,8579,3250242216745716
20+
qzkkAjRoQckvDiHHVod21JBK9VwAHDxqACD44PUyhqckGokaD,8194,3170547835662030
21+
qzphpYvryvfgPhykRHGA6dfNJggCyuWkLqrtbVG2fL7UMd2s3,8193,3470948060606317
22+
qznf9mQwGAX7oqmyiNQ4cAm68d2S9Ayx8oV5dirMFPHFYgNPf,7675,2929094094881623
23+
qzneChhG2NKkVycgweCDuBvksh4mvwNn58ySTcD6GYBHW5yLZ,7516,2858811280107912
24+
qzpo2n7PByDUB8MP5jyqVh5NqRdCPQ418xB1ywEKFcShD7bPu,6739,2575218293100102
25+
qzje34gHt9vcddjFSeRRpyo9zy3HVg7QjTUFvEkUzmxXRtfeo,6636,2539364163648904
26+
qzpvavZmrYcDtpK4wuz4T9FE336FZoPbTVKAwS8SiLTH5JuuR,6279,2405442355367267
27+
qzk7HyC72tCngnsZa8eR5CfH9VombFG2xA7YBSKE1P5KD5Ui6,6230,2395045779194833
28+
qzn7QqFMK1Jrq932oEdqUgg1i5rgxh1tdJmnLrVYk2H9CfZGM,5915,2304120180809783
29+
qzmBUdwKPZtkNMpUZTcuTdAgxzumJ3VBSrK2Z3jq3Wiv4fpNM,5704,2276383415528588
30+
qzkXsiDa8wssERPRv24gQ8NJSsWqrKy2YbpFJAfLPPAbS75ot,5453,2798885958822775
31+
qzntXFHNziRKXNRKDke7eugWHfGbsAdLY76MnpmPpq6GfnSsL,4798,1833515371259147
32+
qzkpjqTqAkt7khy1QF1xophcFRMvEvnoC2P3cTD13yXjTxnL4,4678,1796714591808863
33+
qznWNcF4qvGzMrFQNCxpUpG5wQqbyhi479QTVrsjjywSSKacC,4391,2033638591043509
34+
qzoA7nYHPcDgoh5CoS6yokCjBbS4Krxgock8WACw3di9fhfMR,4141,1672339487774016
35+
qzptQjWMTh95vs4w8fp6Mp3nvBc6LNJLpdPNXGPi9xRbLWraX,3910,1487978541493078
36+
qzngBkeSDRAU4aE4YzNSMBhgi6L6HoWVNopgpeDUWz7xZF3Yr,3793,1452794536995697
37+
qznAFkJZAFTWeLx7uszSRUMdEoSSE2fbXCfcEZSXLngE2sVyw,3527,1428221862261988
38+
qzkArpDcgYXXBHjo1KC8gdcPCqa1mey39hV3ikmGT1Q773Hoi,3391,1294083369189439
39+
qznjf7KKWr3XMdqUS2FnNh4eo69FWQALYvyd46RKvnkX8fZKf,3280,1265683229128697
40+
qzotFdURyYYVE8PxtvZYPae79XDVZb2mupjwxUzuAp5zbxF2x,3111,1197723252811195
41+
qzk3fjVeG9MHEfU9SVzAmUyb8yeDAwANyCzexqz8RQaHDLkV4,3005,1142537407304423
42+
qzjfjzcmfeZ8Gmx3TRJQHA6Z7ps4LdKBSxJ86FXW6CYM4PhkX,2923,1120655325144894
43+
qznFyjC5J8rev3q38Uq6AgmZZaz6pwVsNGYLY18o33dpQ82UC,2887,1106541942198009
44+
qzpWaNzLvKGa28HUT4WZfRZ9mR3CmzGeKTLZWUAaGY2hZ5N4h,2789,1068637685863408
45+
qzmzKoUTJeRRrHc1YheH289k96wR66Xyo6scgiJMwuk6GqcuB,2570,1010862712964546
46+
qzkES36rs5AJSgo9cVuYhqeDXPZrYwtVyP1QVfZCVNhVBvLuq,2346,905127182548260
47+
qzmDt1Nwq2L776DPH2czsfSpTvGZzGoTtsT5Xec1Lvt4U1uyL,1936,747568252484612
48+
qznGJeNb8SmTKc8j4MveHRUDzFbxzJfpbwA1xXbVu88gQ81cG,1921,775849706012877
49+
qznJU9ha9Pr71KZuocLfQTg85XmTLV9B4ookUdwumHH8Sx2Bw,1793,695296774916488
50+
qznaH1f7pzGjRLo3GVwJdvtxJibUfHStGYcvEao3hYCy8CtTY,1680,641370857022187
51+
qzmyJZ6rpZ7ia27SPMKJkBBZsSxvtbwNDkYVcCfNE7W5bSqCJ,1613,612657861325861
52+
qzmX7W95uX4LS1Eoe7qJ2ffpvXt9zyeuBDDDAxELJrnJ5LAAh,1580,605352565478830
53+
qzppKy8m9ETWMV8TUWmE3P5AuFTxka3ocKZ2wdg4whgHHigP5,1482,572605441221303
54+
qzoFgxG8X5CvDFeZva9CtxYG3xqufvhojzJQvCymHGbxjop5P,1405,535924366032179
55+
qzkhJXmG9MaC5aF3A7WF2hr8hLzCjyqAYYUwvUWXzKuaXXSSv,1368,521436421412360
56+
qznZttca6MzPdsEaSC289BjqpxZzs4tpa7TWQ9xzzMZBNWc3W,1150,444084439842913
57+
qzoV5wbHXENvywkCLNoVAZd7KzxxH2eREyZNbVRYNbaoh6jiT,1091,414583908832591
58+
qznGw9v9cdVzL3neuLjdTtCMHZAnP5GoDdRXZw84B7DHQ85bQ,1000,382330411499861
59+
qzoL1nn28VqPZy6kUvpe1mC3gW393bDjMBFVLwG2ka8Bn3uhY,987,381271600640084
60+
qzjYMpbcejXW1d26G8MGVo9hAVWhc29EgwK8rQhZvQQUfvKcE,910,342237739014083
61+
qzmMixDP4ZsZgXEKEzMjLoLLRhJkupyjHBv8AUwB4eTGDZDfg,905,343206244047809
62+
qzk53pm2A7qVMaeHpbEptPKfURadMnW95uyK3YjhX34Enjwx5,878,335786135471082
63+
qzowe2f4RP29RQChSvhMeSZVq1j2JeuzM2aVurTY2Vqx3WZuj,805,311211272667049
64+
qznjVeZD28Z3Vo8dkb2o95si7pEgQ6PgdjczmiWZHHSk7zQZv,717,269637809644717
65+
qznRv1Rs4SmSroEDGW8yfLELrUnSCesDF5vkBatasUpqY64Fg,691,262856277627171
66+
qzmAmnxxYyq3fqBP55eHPXiNWMCmvVe2YEx5o9H7M9xFm6hET,610,235244709997812
67+
qznaqHS3FQEVdsKRi9nc9JUFuCXoKcwE49cL8SF8mKGLHrLKs,589,228845910656355
68+
qzoomLZaNLK84UmcaxjiLXmPhwE5X3eETC1YNyAe55qe379S4,555,212925870811736
69+
qzpcuyNw8yNqTBnRzA7vQ5Uz4iCXWmGXKfCpn5qRjcM5uQ7gF,525,199799252779523
70+
qznJJmLc72y56wLzKjopYVwY2oa8jSodCfmxtqU2VjCs1jZXZ,492,191254688644868
71+
qzmUZW2Aghghw6TsSCgPmqEdbg1Nr5rvbQAKZFgkqPGNYTBEz,471,181838578628607
72+
qzoWfxg9D7SkmsxfZxMJg8ZDS4GfJMtuNVjfcp92WAffSaokD,453,204261903700401
73+
qzoe56Gzrt1NtwsmoUkEwL4UbXaRPNUJyhivzJBAJ2gewfJvo,451,173438532548612
74+
qzoU827dmqjZWxcLkV8JEPHbjk7nVxVTuAphZJE5ouKCi9i3d,446,169091352281627
75+
qzkjftZ5PLzzhjxTyp9byWVxWaaHFE4jDQJ9tXnJa2fLmVXTh,386,146855885593131
76+
qzjVXZ4jz2PsFyJo11PoSp793QJAkpHCKk4sCxo48DFSQ7sfY,373,142204821756720
77+
qzk6Bdtc1h93BGKkaYV8URjhs3cYgmzBVTGtE9RposguauoNt,351,135127446367932
78+
qzoZ45rs5UTkM4MLiM4tDfE9RLFwGvutqyHm3vUk2cqQSqyRN,342,130524024915547
79+
qzmQnLkom6SspzDKsABJQmqa2yRRpUzDsvi1gQHGZNd3dfcQT,338,136191234600847
80+
qzkxev6EzBfPY8ehVoesywRqcYQzR3WA3WaXDUHhX6F9AkEJ7,281,107014472120585
81+
qzjZfskbfWNH7AzHCQfCWia1wai1KDz1kynfufQDWqf7wZqER,276,105740813820475
82+
qzoAWNYxGSvurncNDmLraamni2rh2xztbj9pfBRRxtxpJy9kR,262,99275035964130
83+
qzk6kUXgqo2mg3FYp7HejWzN2y89ZTUWxY1JfSghv7pJ25ZiJ,258,98135102852897
84+
qzkZZKyU5f85w5texCMYtLnG4wn7XmP6LbJPheJ1B4mYQiTdS,249,94529401222813
85+
qzpW7oZydqZGGacSiQ96Jw7fzhRbQiCynt1LGhYSqHAsyehLv,245,93646717582774
86+
qzpPZywsNZY4BhajHqDuL7SEkPQfJCJDcuPMQzosPX5bQmHFd,204,78605067187148
87+
qzkfsjmauTtbEgAsX8hLYoWKkZUgn5E8HGd8Ra7uceUMAwa9D,182,70124144676651
88+
qzmkuZHCkSxKsdiLft6itvokgcoVGY4LCEnHTqrqDLE5LW8ST,180,67806400773847
89+
qzmkLmZ8L8pQCZhYqVsYrwjeNWt2aw8BCBAzP9YGbKCWtQrjj,160,60030408654099
90+
qzpKpUGF8PzRwdYAJ9nJdytSTNs3za9WiCqZRnvkXczcDXfFB,155,57764154900257
91+
qzkgH7zXgRmH94viJPwmZCEDirtCsKchd9ycMaLaMryjdsdwQ,143,54858413194509
92+
qznWni9oj1YhEQWmwxH6EN6G9AH5Mor8qexsFWhjqysH77Hpq,143,54630895536589
93+
qzknJzK1mxj4BPfJfevxuWtKnabogCp52ESnUEK1n7HY6iejs,143,55393042409931
94+
qzk1q2cpsRTG9xR27YTJjpq6wkSrxj8EFydhy8XVQRNoVztkZ,135,52034464492340
95+
qznCWPicHavhx5RV2R79EcHDio9y2baWjYYN4pKYQgiWJQHSx,131,49545879950486
96+
qznf6AqnX41rbUcAZw37gAma4KT3SzXRQ479xn66QWmfMX4jM,116,44891979249758
97+
qzp5rk1EYR4nXXmgXVSZC21jxmrKUkezpuFCvJq2YBaJMmEA7,95,36760474856366
98+
qzjV98C5Wsf3AFp5GuSypPVBqZ2b98T61CnW2ua5ABCULv14W,93,35182786770354
99+
qzpjRZgATwh8YX8RNGdVxkEJH3HbP6uANBfDzv16emghLNc1d,89,32433007887830
100+
qzpyGFtvdwb6PEX8engvx6a1Fr34ynJ95mRCk79A7rMhEbsYd,83,31545720804346
101+
qzmeLpn3zpnr6qByEkezHTxkWbfzHyUazFgXnMzzgWxc1mW1d,82,41376453800108
102+
qzkdFgYDxFuA4e7CWCn6UAG51ZqPwbZgRLFGmTHMtr49hrqCf,72,27701818114636
103+
qzmNdACGAF8juNpKwpeVx9kw6PNVX73m7g7RveLouoeDQ9MDp,71,27384782166204
104+
qzokw2pZLzagChLZ4AzXQ8URmLSSTKGUpAcFsjg8sCQiAeBcv,69,26781220617303
105+
qzoDZEJoJremk9FdshfPfquRkex7KGSdS62mrCMVqkzFPAkcf,68,25629941171100
106+
qzpayjBTErGZbhQ3D5YUcyCP1PVwUSiWFRdyXjr1dT3sysCDo,62,23904690732819
107+
qznL9CQFbtCn54m6QQQxNPsf2qsAGJCe6AtKwZ6rUWkLjxJVA,61,23667822145422
108+
qzox4ZXRpoVt4CNbewQ6aRUApLuqxtAsNNxVeZFM8hJSL4kbN,56,21709495775676
109+
qzmJZfma5ZAkBD9PLBSpBVi8WYpdzvhpJzsGoHH9Jq3PzZLFJ,54,20841494754862
110+
qzoSismfMrpcoyDCPRwFrvo6sAFC5nHFSixgPd45swjN1xzkc,51,19554037855445
111+
qzoxLXW767UZJNs52YezTgCNYy8nNMZ4fT1c6FPjDbeV3FucF,49,18826268068572
112+
qzkV4WNDjjPhBjHj8fU1DeXjQykuUVFY9mbMJaardkvxGQGVn,49,17623592847195
113+
qzmezXnGAqfFMxVVSP9mQLDQ9iVfFCbhVHfcDLgeEfdqD2BWH,36,13973029561194
114+
qzjcjgUJpc7AdJyE4JFJCvsWUp2cjoNYjL6Aov52NqV5CmuFE,32,12422135584027
115+
qzoo2z1erAV6UrWvstEYSL5aeTcFH9XK5fk9JyHa8WXt5gF7z,32,12395563606551
116+
qzpyGemzsZvXRihgZg1uAGqnQLXBsy213WQGBLDD17hKJ3zpM,28,10865382769000
117+
qzpqHg6mJ89HkcmoKYmWNfAX5GhNZW1PfqaApJ9cTryKzxW5M,27,10469346987364
118+
qzosnG6CiepSxanKYe2jKHoj5DEqkGyXbghYaWKxznTqhWQax,27,10476599992749
119+
qzocCRD4qnkNXDw44jh46Daw6s76z8PXiwAZvY7Uddc8aKFDr,24,9316897374230
120+
qzmvZ2HK6bEhBpfBhp6hoF9kFJuzWcTzha8UEdsFsXFS7GBHK,23,8932494109657
121+
qznVVeqLCFGbSAhuX44djxRgjxMtVvAsRbNvcmorDAr7izyfW,22,8548173970442
122+
qzmeNN3Ut3nbzMTgUyqZZQFLUMboNtregUYS1y8JXB5P26UQ7,18,6933603300934
123+
qzoFcKVewDKGFMbGVkXNrNoPU4kWw7j67pDjYs9EM3z1o3iN7,16,6185082047899
124+
qzpRWSWuWhpsFKyu25XS9VGroZGvntCERUg6TbpF6Ra562nsJ,16,6209017311999
125+
qzoHLnyZgjfLnGsFnP9uSEL2gMZZDFzkimQyrxm88Z4aw2K97,16,6209031562363
126+
qzkUuwqEMxxGSwfZyrnYveXiMufyMrCsiBzqq8ziGAWcnfU2b,15,5801769635173
127+
qznYt31QkD9wxRfSu1rDBR8qEvr5NyxKTWmYpYtAXCsE1YsCq,15,5790984143649
128+
qzpA91p9XtvsWLSVufXABgBJded89385xDw7DdGQi7uJcH8ce,12,4634690687516
129+
qzjgL9qpt1QiDQQ1mh2Wkj1YJqs8H4SdYJReuQzTcgwu1aFF6,10,3885499628251
130+
qzoT2pMfp35nzuQDanx1D81eCv6LoKSu8i7vSHRXHQxgLTccR,10,3860521386880
131+
qzpqxLHBnWSit8tPB4pWqr5f1R6dVGrbGaxFkj48gXPRzqA9C,9,3458315034568
132+
qzpTdiu1jfTHPVqif1b5Vu6GDqUuy81Jxm76oiNQ16f5KZkBQ,8,3107154678617
133+
qzoL8QqWzpJhSkRfK59FYrKtcsfNUxQ9tXEQWtznKAn64xpje,8,3105094607786
134+
qzpcRZmNX4suvzHRWcwbj2kqtGrgxTP8n8cPvQYDswsL1Hrtj,7,2677292796833
135+
qzjaWjqE8uocSjv7RaiGRbTeCi9APoHrwPGMS7vPnMtDiuEZ8,7,2693071933735
136+
qzputQrk7ZUQkGNRXBNCCDxrdb8ACQq8xqWrEy433bv3f6CVt,7,2710438196212
137+
qzjwF7pKyWfBcurxx5qtEB7UZyzTrYJvud1BfnamLb6grQX4p,5,1932923083493
138+
qzkjVnqExQRK3SLndRbfi1GT4VdHuroZLeZuuKwnRuAhdmJpg,5,1943375826759
139+
qznA4vcMujFgJdog7CxMsiAhKBr5QdhJh6G2sg6zFkp68oPjJ,4,1543894897634
140+
qzkEd1jkBkoYCnpYkxdwBWfzizVV2txTNtFaZFaKPo86fZkUq,3,1164384286763
141+
qznbtSyvbBezyRyo3P2E3t5aN5pGS36k2wyaYM3SsBX5J4t3v,3,1158660624354
142+
qznKrw41msVGkP5VCCBVxzgzTwXVYtiSPMg5ky2re6VF7MLTE,3,1151318327245
143+
qzpcj5GQKCTrDj5rJEJQoiQqYtMpui3u87TzWreBNtvtDP1F2,3,1156429611924
144+
qzpxKxU9R9Wr1PTtaby6vw7EPoTxQTShPKmWJWAv3aLrmU7wV,3,1152422879151
145+
qzkHaujm7Y69xc1nd5aMVT7JrTjjX61PQBmtaiNG5849vdQc3,3,1160489609797
146+
qzndN6KuuwErhK1SHud86KiC9yN16KqNbZj67ZbN3Jbdr4Y8H,3,1160176107455
147+
qzo87ZwuKz13ayPzDFQcdzpRK8gArkTWdG7dx3yKQgLxkC4kG,2,406428185932
148+
qzo1VJSvmRHa547Gamx4HoQT9JeBrgFRTUWghAZWfHqeky1Yq,2,774587559401
149+
qzk7RfwAxPHAczVqzajyt7upzMLi5UJ85uqaC8eWch3dpQCN9,2,776941220348
150+
qznokNSfTTmbQFxdMgZAi18oZa4LAFg9p5ENdQqiQHb8Jzxvg,2,772181397149
151+
qzjtdBwdhUVKtJVi2hatJ3H6XCuEmNxkYCKem5k8se64mz3mE,2,773921231960
152+
qzjpNsNa4ieb8x4i7CixThW6wZE981K9WeLkangcND2mbzJ9d,2,774358999565
153+
qzpEYGQmZ3t6Wovy6eXXiRBAXDvSry5vqGZWP7QhyDsMECNps,2,777182810244
154+
qzkwZ8y7TXR8hw4dKsng9YqypR6buTfFtN6y7NRkDgyf6KujU,1,388105785401
155+
qzpZjBNMYfBMDTQSwP65S5L5q2ZfDZkJLvuH7P8chuN2Xx5X5,1,383686653293
156+
qzq2XqBesLK7NjPmqputmf7SRuYW7RPL6UCZZAHUYcZc7kbUy,1,388493035096
157+
qzjpv7vUsyBD6qFu4qu8M4beoDdMf242Kqaobz2TJWK6KQSnv,1,383753772939
158+
qzmB4sirTy9SbtjG61DvNY5yiW8px9XLHGxo6f9MSLiWyp913,1,388088152848
159+
qzkMjWpxw1zq3dABct4xCpJjJUdVidoUvpJXAfKaYQqt1ZHex,1,382423517727
160+
qznE1MGLKBzbHnnndbEQ6xSn3XkjMQzyRF6Rm5mrd5mhQN1hT,1,388460706369
161+
qzp9Wa6EYVMv8fNY2BbegmGAJsP4N3wteqbUF8sgLqkRCSdtj,1,385610312846

0 commit comments

Comments
 (0)