Compare commits
6054 Commits
v0.22.6
...
monorepo@2
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
29f6adc2ed | ||
|
|
5446de6308 | ||
|
|
9540db2aad | ||
|
|
7dd28d6fab | ||
|
|
ba59879e7f | ||
|
|
c10807c4e3 | ||
|
|
4e8ec2359d | ||
|
|
cbd72b6e3d | ||
|
|
90e28220fa | ||
|
|
abd308455a | ||
|
|
3e70ab015b | ||
|
|
dab7f1a739 | ||
|
|
f6438725eb | ||
|
|
83ffbd05be | ||
|
|
88be6b5e0d | ||
|
|
aa47f85f48 | ||
|
|
fec9c8f1c6 | ||
|
|
e2559798df | ||
|
|
ccc18620bf | ||
|
|
febe00db4f | ||
|
|
6f36048a8e | ||
|
|
2457ecb7e7 | ||
|
|
2378747570 | ||
|
|
2df569b727 | ||
|
|
65aecc0024 | ||
|
|
074082ec94 | ||
|
|
6b9f0af828 | ||
|
|
bfabf765e3 | ||
|
|
e74f736eff | ||
|
|
45483557a5 | ||
|
|
07942a7aec | ||
|
|
3d1b7c10e8 | ||
|
|
cf46d2c704 | ||
|
|
4434856add | ||
|
|
52d511df21 | ||
|
|
50f58f9121 | ||
|
|
7a20c7b946 | ||
|
|
ce0e60ed84 | ||
|
|
4ad0a6c7b7 | ||
|
|
b8d8651e43 | ||
|
|
45b68832aa | ||
|
|
6dfcaaf889 | ||
|
|
8131c5d6bc | ||
|
|
df5779b6d1 | ||
|
|
4a5a0c8c78 | ||
|
|
b3a17624c8 | ||
|
|
e63841a604 | ||
|
|
7ec95e8c29 | ||
|
|
b217495465 | ||
|
|
db6ddc0c4b | ||
|
|
174b360593 | ||
|
|
481a752e70 | ||
|
|
38acdfd632 | ||
|
|
561e525778 | ||
|
|
69eb820d0d | ||
|
|
447f16fc4f | ||
|
|
1769609245 | ||
|
|
e1dcdac1bb | ||
|
|
9d45d19c80 | ||
|
|
9858bb0ce4 | ||
|
|
a3527a77a6 | ||
|
|
33a45fa739 | ||
|
|
e70882a657 | ||
|
|
e456332da7 | ||
|
|
4ed84c5dc5 | ||
|
|
2fe3f40be9 | ||
|
|
44bfdb718f | ||
|
|
3524efc41c | ||
|
|
01210c291c | ||
|
|
192d4b4dbf | ||
|
|
68246fc335 | ||
|
|
7ef86636aa | ||
|
|
a5859c6cee | ||
|
|
3463903d02 | ||
|
|
4b0f1a8431 | ||
|
|
603e8aa671 | ||
|
|
6eb980abe2 | ||
|
|
46b168e10f | ||
|
|
508e6ccf89 | ||
|
|
a173c5fc38 | ||
|
|
f5237f7971 | ||
|
|
6f7a5d00e6 | ||
|
|
4061723863 | ||
|
|
ab1b52ba87 | ||
|
|
16e94ecb40 | ||
|
|
6bb2c5877c | ||
|
|
a14450f367 | ||
|
|
85df313a7a | ||
|
|
66ed6b9b88 | ||
|
|
9304d09da6 | ||
|
|
e61dbbb6cf | ||
|
|
1690f59857 | ||
|
|
c916dd6ebb | ||
|
|
8a683b8541 | ||
|
|
4883b8be10 | ||
|
|
51760f9bdd | ||
|
|
6a619a4084 | ||
|
|
feeafa193a | ||
|
|
8d8528996a | ||
|
|
965d609829 | ||
|
|
a52714bcf3 | ||
|
|
bbfd7647a8 | ||
|
|
0aba5a3be4 | ||
|
|
61bf5864a8 | ||
|
|
56847a53f4 | ||
|
|
8324ab3af7 | ||
|
|
d496a7585c | ||
|
|
8d7f2a993a | ||
|
|
ed786f3e8f | ||
|
|
539c243733 | ||
|
|
40e0c829b3 | ||
|
|
e34b1f2f8b | ||
|
|
f6b6619c08 | ||
|
|
e480e08aa4 | ||
|
|
652cf7a976 | ||
|
|
7a8ab6fbe8 | ||
|
|
9deec8ec35 | ||
|
|
3f1586045c | ||
|
|
ada5563b1f | ||
|
|
6b41a570a5 | ||
|
|
cebf6bfb34 | ||
|
|
47a1b48ad8 | ||
|
|
ef82a9d2a6 | ||
|
|
ba6351841d | ||
|
|
cdc786a1e3 | ||
|
|
3ea137a78f | ||
|
|
b525ccc825 | ||
|
|
77acbdd3ea | ||
|
|
c13190ceab | ||
|
|
78d4fc59a5 | ||
|
|
f9e86c057d | ||
|
|
1d8e133a30 | ||
|
|
99fbf384fd | ||
|
|
cb4fcf4de7 | ||
|
|
675964dc5c | ||
|
|
6432f85eb0 | ||
|
|
66eef758c6 | ||
|
|
c64f0ba34b | ||
|
|
6deffb6b28 | ||
|
|
5802713801 | ||
|
|
11df29fa8e | ||
|
|
f4a41e80b8 | ||
|
|
5c655b55d3 | ||
|
|
63c15b6f4f | ||
|
|
4f2bc29744 | ||
|
|
2cac431c41 | ||
|
|
80b7a7842c | ||
|
|
8c7cec9822 | ||
|
|
971a4087d2 | ||
|
|
660e670d38 | ||
|
|
052824f4e3 | ||
|
|
1d5ef4d0ca | ||
|
|
a6440b94f4 | ||
|
|
01685b7622 | ||
|
|
397fefa8d7 | ||
|
|
82a01ef020 | ||
|
|
a224ce347e | ||
|
|
81ba2a8411 | ||
|
|
a6e8b28da5 | ||
|
|
e90dbf66f3 | ||
|
|
0be2219beb | ||
|
|
09b4d5e0e4 | ||
|
|
60f1bcf51f | ||
|
|
431ac3b401 | ||
|
|
50781bd77a | ||
|
|
c3361bb86e | ||
|
|
fd5ad69c26 | ||
|
|
b1f97a27f3 | ||
|
|
febddcb356 | ||
|
|
74d5af34eb | ||
|
|
365890291f | ||
|
|
0368de701f | ||
|
|
f5e7b7e7e0 | ||
|
|
038c21324e | ||
|
|
5d008ee83e | ||
|
|
d0f6933980 | ||
|
|
14793f30b5 | ||
|
|
86319291e3 | ||
|
|
afa2dd7374 | ||
|
|
1312e4caf2 | ||
|
|
eb4517d737 | ||
|
|
d80701c277 | ||
|
|
bf3ab1127d | ||
|
|
dcb12b6ad6 | ||
|
|
f87420a776 | ||
|
|
6cedf5362b | ||
|
|
aa833ef074 | ||
|
|
5f1c9cfee5 | ||
|
|
62b93cf2eb | ||
|
|
b1c5f6e8f1 | ||
|
|
3bc9b309f6 | ||
|
|
6924a2b681 | ||
|
|
d93d4c34f5 | ||
|
|
557267477e | ||
|
|
b9f7979e91 | ||
|
|
8c803ab232 | ||
|
|
422e5e4dd7 | ||
|
|
2aea820d89 | ||
|
|
1c3b2b7141 | ||
|
|
e7d5ceb9c5 | ||
|
|
68af0e9eb7 | ||
|
|
a18d0f6229 | ||
|
|
031807df9c | ||
|
|
72710be04b | ||
|
|
ac135d55d3 | ||
|
|
1d55e94659 | ||
|
|
86284f1c7e | ||
|
|
61a4ae7fc4 | ||
|
|
55fab3d98f | ||
|
|
de11b62e30 | ||
|
|
8e14e65b60 | ||
|
|
2d1d14d2e4 | ||
|
|
f44644ad90 | ||
|
|
ac1640140c | ||
|
|
1402a0aa22 | ||
|
|
f225f9e7c8 | ||
|
|
14fdb71a71 | ||
|
|
9c4c4fb19a | ||
|
|
5785ec0713 | ||
|
|
2eab0e30b7 | ||
|
|
2c846ff145 | ||
|
|
ca0dfc6610 | ||
|
|
0fd44ee2c1 | ||
|
|
7271fc0bab | ||
|
|
6c039bbeb1 | ||
|
|
38e6d26145 | ||
|
|
b0f210dea9 | ||
|
|
f7469080f9 | ||
|
|
fb5ea5d99f | ||
|
|
be2f4cbdca | ||
|
|
68f2dc11b4 | ||
|
|
d6c670dfcb | ||
|
|
0736c41357 | ||
|
|
898bd75a18 | ||
|
|
260313a6ae | ||
|
|
6a99bfa68e | ||
|
|
f60adbdd72 | ||
|
|
1be310cef4 | ||
|
|
ff4f86f1d6 | ||
|
|
f4a4fefe42 | ||
|
|
00a4fa5f7c | ||
|
|
4475fefd07 | ||
|
|
cd08a9c121 | ||
|
|
b0c4eb8333 | ||
|
|
368dbda8f0 | ||
|
|
bc4149683e | ||
|
|
6174d9ebb7 | ||
|
|
e4fc8a8414 | ||
|
|
907972c466 | ||
|
|
49f5fe635f | ||
|
|
77290c1efa | ||
|
|
4ac43a9fd2 | ||
|
|
cc77d1dd49 | ||
|
|
51161784e8 | ||
|
|
cb7660fbe7 | ||
|
|
82e51b8787 | ||
|
|
fffa96bba7 | ||
|
|
e6cb2e0fcd | ||
|
|
38abeaed9c | ||
|
|
90c9e3496a | ||
|
|
9fc8a6e214 | ||
|
|
9df87a199a | ||
|
|
7e9ba50502 | ||
|
|
41559c39b9 | ||
|
|
6a6b424c86 | ||
|
|
3a5c6ed00f | ||
|
|
db54588d05 | ||
|
|
52fde551e4 | ||
|
|
40cf805e5e | ||
|
|
09d6496135 | ||
|
|
c4dadf4bfd | ||
|
|
35ba3e6f7c | ||
|
|
3ac182ee91 | ||
|
|
00e7c70b4d | ||
|
|
0aa9ed3839 | ||
|
|
d652deea23 | ||
|
|
878db3b849 | ||
|
|
ec2e726be0 | ||
|
|
287830d6e0 | ||
|
|
c7a7ae7e18 | ||
|
|
1c7ba6a315 | ||
|
|
0a6f107243 | ||
|
|
a93f95c55e | ||
|
|
6833e243b7 | ||
|
|
81dc893d1d | ||
|
|
f8e565bc06 | ||
|
|
ba15fb6a06 | ||
|
|
1e6b83719a | ||
|
|
9fcb2dda73 | ||
|
|
9a5ec8d030 | ||
|
|
ac872e5181 | ||
|
|
70863cca08 | ||
|
|
5a1dce15be | ||
|
|
d291256158 | ||
|
|
8c706ac639 | ||
|
|
f697814849 | ||
|
|
ca5c9e77c0 | ||
|
|
a32b201afe | ||
|
|
0ecdf1e213 | ||
|
|
057891b342 | ||
|
|
407f63ef20 | ||
|
|
f938c989e3 | ||
|
|
c8500cab10 | ||
|
|
c28c3db63f | ||
|
|
a09ee90739 | ||
|
|
7d5a23969d | ||
|
|
56c3c29feb | ||
|
|
c75212bef0 | ||
|
|
6d0dedc62c | ||
|
|
cf12daea2f | ||
|
|
6f88e9bdbd | ||
|
|
d8cb56caa3 | ||
|
|
044415e23d | ||
|
|
6b866d6053 | ||
|
|
74ce893f52 | ||
|
|
cc1fac9bbe | ||
|
|
94e01be9ed | ||
|
|
91a9014a50 | ||
|
|
e215992859 | ||
|
|
e6f5cac878 | ||
|
|
29971f36cf | ||
|
|
3e4493b389 | ||
|
|
749c6ecc30 | ||
|
|
e6e7bae445 | ||
|
|
a1d8943552 | ||
|
|
07e56b3cc7 | ||
|
|
b16f5f55fb | ||
|
|
d92fd43791 | ||
|
|
e706fa76ac | ||
|
|
11328bd93d | ||
|
|
bc686fcbf3 | ||
|
|
80291caf7c | ||
|
|
cd5e9a5115 | ||
|
|
ad161a973e | ||
|
|
103e1aa250 | ||
|
|
641d86cb98 | ||
|
|
813b2ca1fb | ||
|
|
ec96c3bb77 | ||
|
|
65120e84e2 | ||
|
|
82b51db17e | ||
|
|
374ee2db32 | ||
|
|
3557cd93fc | ||
|
|
0629a7d143 | ||
|
|
a27112cbef | ||
|
|
d039a1adda | ||
|
|
bb4d449e92 | ||
|
|
241534a63d | ||
|
|
1932aff35c | ||
|
|
4f27991959 | ||
|
|
8ce4f9c784 | ||
|
|
7351bf0b14 | ||
|
|
48ab151ec2 | ||
|
|
f6080367fe | ||
|
|
7f78d7da9d | ||
|
|
6734f2f1bc | ||
|
|
0fb7617a78 | ||
|
|
4219af1430 | ||
|
|
c109d1f545 | ||
|
|
50fab9feb3 | ||
|
|
3dad6ee55e | ||
|
|
5d70df771b | ||
|
|
ab5df342e1 | ||
|
|
6a9669a409 | ||
|
|
e68942ee78 | ||
|
|
4159e45aff | ||
|
|
92497d7df4 | ||
|
|
44a430802e | ||
|
|
070eff6f3a | ||
|
|
681ed822ec | ||
|
|
0a1ae2c311 | ||
|
|
c5f8b9c2d2 | ||
|
|
6b03cfd40d | ||
|
|
7f36574a57 | ||
|
|
b637ca105a | ||
|
|
9ffddb47b8 | ||
|
|
7bcaac4e10 | ||
|
|
7f585a15f5 | ||
|
|
b38ef579fb | ||
|
|
8427db36e9 | ||
|
|
2d1c88c20d | ||
|
|
029ea52979 | ||
|
|
a2b6255f40 | ||
|
|
d4592c0a60 | ||
|
|
fb6d511811 | ||
|
|
c1b4fe999c | ||
|
|
1354f794a1 | ||
|
|
8f6a96740e | ||
|
|
1d6699585e | ||
|
|
e96f36751a | ||
|
|
a75c298de0 | ||
|
|
d603d8da47 | ||
|
|
1040826b8b | ||
|
|
a551d0a6dd | ||
|
|
21c37ba62f | ||
|
|
2c660e62d3 | ||
|
|
6b667f8eca | ||
|
|
d52c1310b2 | ||
|
|
6338b5bd3c | ||
|
|
2713cca6ac | ||
|
|
57c104119c | ||
|
|
cd5c73550b | ||
|
|
68b060cb6a | ||
|
|
7ad1a18a4a | ||
|
|
6e27324a34 | ||
|
|
8eb4b6f917 | ||
|
|
0ca64e394b | ||
|
|
c4c47d9665 | ||
|
|
f9b222c127 | ||
|
|
28f077b16f | ||
|
|
3563fabe88 | ||
|
|
1ca176e992 | ||
|
|
52e2c60361 | ||
|
|
ae154f43df | ||
|
|
610caef73f | ||
|
|
29a9e1fc4e | ||
|
|
ae937cfcce | ||
|
|
6c7dca7d07 | ||
|
|
aa9efd79db | ||
|
|
f0f4f873a9 | ||
|
|
0577ab96b8 | ||
|
|
15a34dca79 | ||
|
|
2b38163274 | ||
|
|
572ad4615a | ||
|
|
b013cf2e14 | ||
|
|
3e56990db7 | ||
|
|
2de7a49000 | ||
|
|
2a63592994 | ||
|
|
2cef8d3a3e | ||
|
|
1417ee2ccb | ||
|
|
04e4fe251a | ||
|
|
61255309d2 | ||
|
|
27d329ff25 | ||
|
|
cb19623a3a | ||
|
|
44ca6c4b71 | ||
|
|
bfabdf6010 | ||
|
|
cbcf8e8477 | ||
|
|
b0b3f9e339 | ||
|
|
a5c7ddcff5 | ||
|
|
6cef847a27 | ||
|
|
68dfd1bb22 | ||
|
|
67d33ec10c | ||
|
|
05ba049f59 | ||
|
|
867ff3c5ec | ||
|
|
c2454d1428 | ||
|
|
7e0e195c88 | ||
|
|
e8a1950a74 | ||
|
|
3c973ba9f6 | ||
|
|
2ef867f398 | ||
|
|
90f2813d0e | ||
|
|
dd9c4b6e5d | ||
|
|
a6cdc38d53 | ||
|
|
167c4f8519 | ||
|
|
799db64541 | ||
|
|
69b436babe | ||
|
|
c83f2a070c | ||
|
|
ba9e31d3c1 | ||
|
|
e915d72202 | ||
|
|
74e7fa13d6 | ||
|
|
b7c119b2aa | ||
|
|
3c2af2067f | ||
|
|
7c29cadb17 | ||
|
|
40b202f8c0 | ||
|
|
392c00a698 | ||
|
|
fb4fbc0e13 | ||
|
|
730226081c | ||
|
|
1fdd7466b2 | ||
|
|
00b7620af1 | ||
|
|
a39d79352d | ||
|
|
3b5c8a847b | ||
|
|
4b84081795 | ||
|
|
27ba218ed7 | ||
|
|
d907b40378 | ||
|
|
0248add542 | ||
|
|
c12f0d04bb | ||
|
|
22de88035c | ||
|
|
80e52464a6 | ||
|
|
3760eb5baf | ||
|
|
c905b20ce6 | ||
|
|
301cb296ec | ||
|
|
1bbd7bf870 | ||
|
|
da15df2c2d | ||
|
|
fe43f84abd | ||
|
|
7fa5b474eb | ||
|
|
3d25758b1d | ||
|
|
f1ddbc9387 | ||
|
|
dafb282432 | ||
|
|
0918f95421 | ||
|
|
be67c25b0a | ||
|
|
f53157414f | ||
|
|
6b838c034a | ||
|
|
86cb89feef | ||
|
|
1ba26ea5e8 | ||
|
|
8b79868c36 | ||
|
|
8bb7b5b543 | ||
|
|
809d301d58 | ||
|
|
c00c477307 | ||
|
|
6216714be1 | ||
|
|
cc90c806b0 | ||
|
|
04bbd60c11 | ||
|
|
ad9bb3ea59 | ||
|
|
1ddac0bc7b | ||
|
|
a7468eb858 | ||
|
|
213d82a2c2 | ||
|
|
7553411fb2 | ||
|
|
c52c94214f | ||
|
|
151cf03f5b | ||
|
|
141c51eaf5 | ||
|
|
ab7d083aa5 | ||
|
|
12881e60e3 | ||
|
|
1f65de60b4 | ||
|
|
635373febb | ||
|
|
e7c7af8ef4 | ||
|
|
cd2bbd850d | ||
|
|
83a36bc4b6 | ||
|
|
1c95f685bb | ||
|
|
e45d320fc5 | ||
|
|
dd2e54d60d | ||
|
|
64eac5f37f | ||
|
|
78ed6e0339 | ||
|
|
79aff1c57a | ||
|
|
a21bfc5f2c | ||
|
|
da3dc7affc | ||
|
|
254d88ffa0 | ||
|
|
4ded591624 | ||
|
|
2af99a1fe2 | ||
|
|
135fbf67ad | ||
|
|
6405c70d07 | ||
|
|
1255570b95 | ||
|
|
a263e7dfce | ||
|
|
cbe0ffb3ce | ||
|
|
67b4ba2a57 | ||
|
|
ab71f54128 | ||
|
|
cabce8cb67 | ||
|
|
44cc5e45cc | ||
|
|
1ae11ed8ae | ||
|
|
075e3a41c8 | ||
|
|
756787c61f | ||
|
|
b67677f476 | ||
|
|
b4cf69b021 | ||
|
|
d149b6cdec | ||
|
|
f29263c477 | ||
|
|
61ef6edaa5 | ||
|
|
fae58ca695 | ||
|
|
1c68057999 | ||
|
|
fb637d9234 | ||
|
|
0f7ced3625 | ||
|
|
ea4d7f153a | ||
|
|
f2d1d95355 | ||
|
|
ddf85112d7 | ||
|
|
05ce002435 | ||
|
|
48ec78d3aa | ||
|
|
e35788e2c8 | ||
|
|
8bce73dc67 | ||
|
|
c13f538400 | ||
|
|
09d3d15db0 | ||
|
|
633e6c38c8 | ||
|
|
a4d6bc3190 | ||
|
|
0b9a9d92af | ||
|
|
a82e36c1d4 | ||
|
|
61ba012b1f | ||
|
|
aeb9ffbf5a | ||
|
|
6dde6d7cb7 | ||
|
|
1d70724bcf | ||
|
|
77c87cd009 | ||
|
|
4dd59a370d | ||
|
|
7a6e647386 | ||
|
|
f5459164d2 | ||
|
|
2743eee044 | ||
|
|
bb3c345891 | ||
|
|
0f3201d72a | ||
|
|
8131a87046 | ||
|
|
64a85dfb9c | ||
|
|
68d7eb5712 | ||
|
|
f7375fca98 | ||
|
|
e079790f7f | ||
|
|
2604d40751 | ||
|
|
89174cd63f | ||
|
|
8cb1d2a0af | ||
|
|
c1ec849554 | ||
|
|
def575b995 | ||
|
|
d0d6a6a500 | ||
|
|
445177bf42 | ||
|
|
a4c3a0d39f | ||
|
|
7c08f6d30a | ||
|
|
0337b5a401 | ||
|
|
4d81ab679d | ||
|
|
72752bcb68 | ||
|
|
e47e9c5b34 | ||
|
|
402ca27fbf | ||
|
|
8e3df2b5ae | ||
|
|
bf9ee82d9f | ||
|
|
ae7bce7674 | ||
|
|
7d09a94428 | ||
|
|
b7079e9616 | ||
|
|
85427a84df | ||
|
|
a59f18927d | ||
|
|
a607a61bde | ||
|
|
421a7394df | ||
|
|
acb3c0d0aa | ||
|
|
11231795cd | ||
|
|
6b6b368bf6 | ||
|
|
60f026e6fd | ||
|
|
36668f9409 | ||
|
|
480d28ea26 | ||
|
|
88c99396a2 | ||
|
|
ca5e52920d | ||
|
|
30dfb7511d | ||
|
|
1c87e5f698 | ||
|
|
badcb35525 | ||
|
|
c325d638c9 | ||
|
|
baab0f27b5 | ||
|
|
9e7657ac5d | ||
|
|
237bac920a | ||
|
|
89202b7bdf | ||
|
|
20ac6936ac | ||
|
|
976d159e52 | ||
|
|
e7f19e350e | ||
|
|
41768617a9 | ||
|
|
455c78dfb1 | ||
|
|
ec41e314b0 | ||
|
|
8959b0993e | ||
|
|
7c96fa45f8 | ||
|
|
ad9a7d72ce | ||
|
|
558286467b | ||
|
|
f0f94f199e | ||
|
|
6e74d1519b | ||
|
|
a8d44ccc48 | ||
|
|
d744468479 | ||
|
|
c01810f0d7 | ||
|
|
622509c508 | ||
|
|
bb992f8a49 | ||
|
|
c11d805469 | ||
|
|
3b8a343711 | ||
|
|
83e3bb899e | ||
|
|
bb4558e0be | ||
|
|
3eeb9ddfa6 | ||
|
|
cb5d8d75bf | ||
|
|
267078ed6c | ||
|
|
80e5127a46 | ||
|
|
19e17ba128 | ||
|
|
04e00e0c28 | ||
|
|
8bebffb147 | ||
|
|
5c40c466f6 | ||
|
|
f9f232f5d9 | ||
|
|
7b7b97dd7b | ||
|
|
b6cdc00a31 | ||
|
|
644fe1de8f | ||
|
|
ce88086e08 | ||
|
|
1d9408a8e0 | ||
|
|
c743f010e3 | ||
|
|
2f2582a0da | ||
|
|
c1cc92a46f | ||
|
|
9c3d10d5be | ||
|
|
3afe405bbe | ||
|
|
7eff195d61 | ||
|
|
e79c7632e6 | ||
|
|
aa27346f93 | ||
|
|
db6de490b2 | ||
|
|
014d71d5ae | ||
|
|
783bc873db | ||
|
|
478bf14289 | ||
|
|
d89934954d | ||
|
|
6baa5ef311 | ||
|
|
db20ad1c5d | ||
|
|
56eb444ea4 | ||
|
|
6a2634d362 | ||
|
|
a2192e62df | ||
|
|
66745c5260 | ||
|
|
c10c4cec1d | ||
|
|
f2d9dfb56b | ||
|
|
228387f995 | ||
|
|
336519a690 | ||
|
|
10dc3ea81c | ||
|
|
dd7e03c7d7 | ||
|
|
fadd292ecf | ||
|
|
7c8a7a2420 | ||
|
|
99b744ba52 | ||
|
|
c320c8742e | ||
|
|
3a086cae1a | ||
|
|
b10cba600d | ||
|
|
3b0fa1aa87 | ||
|
|
d859399841 | ||
|
|
8169155a65 | ||
|
|
952367d532 | ||
|
|
67666446bf | ||
|
|
3d1c8dfe06 | ||
|
|
283175df98 | ||
|
|
aeb368a1d9 | ||
|
|
e51deb93ee | ||
|
|
a351757493 | ||
|
|
0025c6640b | ||
|
|
25a8554be1 | ||
|
|
cd76c129da | ||
|
|
7340338626 | ||
|
|
9d3c287918 | ||
|
|
c2b5fe3d84 | ||
|
|
5ef84d61fa | ||
|
|
58321a36dc | ||
|
|
ca4905c343 | ||
|
|
b6d793aec4 | ||
|
|
83fb9df63d | ||
|
|
083319786f | ||
|
|
719699eb30 | ||
|
|
889ec81ff3 | ||
|
|
2f66f26048 | ||
|
|
713f285f37 | ||
|
|
ab64ea7377 | ||
|
|
b86210332f | ||
|
|
af52598d32 | ||
|
|
cbe639866e | ||
|
|
fcd57d2743 | ||
|
|
c0924d8067 | ||
|
|
a1860b076d | ||
|
|
32ab4dcac7 | ||
|
|
938a99f435 | ||
|
|
f97ec000e1 | ||
|
|
1b5c5e7a3b | ||
|
|
c804e2230d | ||
|
|
3f610d4865 | ||
|
|
8404e0e73f | ||
|
|
b2c666bb1f | ||
|
|
f3761af567 | ||
|
|
b9d8d2d5e3 | ||
|
|
b60a74c8bc | ||
|
|
0113ecee96 | ||
|
|
eb20e86947 | ||
|
|
15e15f994a | ||
|
|
d44ff6a915 | ||
|
|
68605ca261 | ||
|
|
5d4dd406f2 | ||
|
|
9dd6ba7825 | ||
|
|
45e9fbe8f9 | ||
|
|
53713188fe | ||
|
|
c4c37cafa0 | ||
|
|
5b7774f9d0 | ||
|
|
ca7d8a8940 | ||
|
|
762bbe9bcd | ||
|
|
03fb73d1d2 | ||
|
|
d10e2652ae | ||
|
|
9a5d7b7635 | ||
|
|
1fb3da6b53 | ||
|
|
970bef717e | ||
|
|
2a85f79040 | ||
|
|
651a468b44 | ||
|
|
5e8ad0aef4 | ||
|
|
44d909c0c7 | ||
|
|
44b01f2069 | ||
|
|
d7d51791a6 | ||
|
|
9e3fe7092b | ||
|
|
083d42c8f7 | ||
|
|
6121a6d2bf | ||
|
|
09af23f950 | ||
|
|
52e094addc | ||
|
|
6a6739ebbe | ||
|
|
6a5965d73b | ||
|
|
19cda0eb03 | ||
|
|
cc67c0df51 | ||
|
|
76b91cbcda | ||
|
|
13f0d27f7c | ||
|
|
5ccf41c566 | ||
|
|
797fd38e00 | ||
|
|
9aacceb0e4 | ||
|
|
68fb1bf376 | ||
|
|
a6ccfaf9ca | ||
|
|
c9e1b7c5dc | ||
|
|
6e2e658162 | ||
|
|
149c07dfd2 | ||
|
|
9f42ceb5a3 | ||
|
|
386b5bb122 | ||
|
|
ca67e7d36f | ||
|
|
d49af66add | ||
|
|
853b5aa38b | ||
|
|
4e30bc3e16 | ||
|
|
95b656f360 | ||
|
|
b0a7db81cb | ||
|
|
e6c91493f2 | ||
|
|
3771df728c | ||
|
|
f6dbc23995 | ||
|
|
f36a43a83f | ||
|
|
f4c2fabbf8 | ||
|
|
3d6cf50364 | ||
|
|
0a616ad3b8 | ||
|
|
57a4429123 | ||
|
|
3b542bf356 | ||
|
|
be472b61e7 | ||
|
|
8199e87943 | ||
|
|
35201af4b1 | ||
|
|
1a89905ab9 | ||
|
|
b2b3c24fd2 | ||
|
|
bc5835229d | ||
|
|
6182d2c7f6 | ||
|
|
af90a777c6 | ||
|
|
fdcb42d8e1 | ||
|
|
4e6322beb5 | ||
|
|
6e122691d1 | ||
|
|
ea5684e054 | ||
|
|
50bbd793c6 | ||
|
|
a1a777e715 | ||
|
|
d234ee12de | ||
|
|
50e0ddcf79 | ||
|
|
da304de3fc | ||
|
|
ff3c77f7c4 | ||
|
|
0bc775cdb8 | ||
|
|
2273798df9 | ||
|
|
7d0bec9b2a | ||
|
|
8382161f75 | ||
|
|
bc5f8e52de | ||
|
|
09c0fc94fc | ||
|
|
e5d65b585a | ||
|
|
d9933237a0 | ||
|
|
a016747c36 | ||
|
|
1c06380ef5 | ||
|
|
47fef1f8ff | ||
|
|
3cb955c136 | ||
|
|
47673ba4bb | ||
|
|
4527e9ce00 | ||
|
|
7759e67a5a | ||
|
|
3865a081a0 | ||
|
|
4d75689790 | ||
|
|
6df8746871 | ||
|
|
c68e183953 | ||
|
|
f42119c928 | ||
|
|
30be039570 | ||
|
|
d00ee5df0d | ||
|
|
4f381ca1d9 | ||
|
|
bcc1ad2086 | ||
|
|
343cd05363 | ||
|
|
d9f09b5e1e | ||
|
|
9337d207a1 | ||
|
|
c17d6c47c3 | ||
|
|
a728247d6c | ||
|
|
36d615318d | ||
|
|
1588f4ac39 | ||
|
|
0e82be1bda | ||
|
|
d85ce6ac75 | ||
|
|
0d3d9dad84 | ||
|
|
b8c8258404 | ||
|
|
3ee3fc2fb3 | ||
|
|
bb4d15005a | ||
|
|
477c3dc4f6 | ||
|
|
81f689e693 | ||
|
|
e80fa6e311 | ||
|
|
c94168981c | ||
|
|
749ec0cefe | ||
|
|
bd488020df | ||
|
|
ab398751e1 | ||
|
|
74d5f2f0b9 | ||
|
|
10f6647ab3 | ||
|
|
406b7c33f5 | ||
|
|
13520dbd94 | ||
|
|
d136df7679 | ||
|
|
8c96a31152 | ||
|
|
d4bd4ec441 | ||
|
|
e4aed98a3d | ||
|
|
4a2a22a43b | ||
|
|
47584b18e9 | ||
|
|
6dd656bdfc | ||
|
|
260640feed | ||
|
|
36e7cb16aa | ||
|
|
0390a5ecbf | ||
|
|
82092ab50a | ||
|
|
c3e6be7956 | ||
|
|
1ce6579c3a | ||
|
|
b5d98a2803 | ||
|
|
c7a5b8c776 | ||
|
|
90ead59d34 | ||
|
|
faa980ffc3 | ||
|
|
afc5c2616a | ||
|
|
9a3b630b19 | ||
|
|
b3473ff89f | ||
|
|
987971bd59 | ||
|
|
71a2f2d721 | ||
|
|
6e74896620 | ||
|
|
30c6fe08ec | ||
|
|
7c864b81e0 | ||
|
|
4f006fdc5c | ||
|
|
9f7f61085c | ||
|
|
2414b47a30 | ||
|
|
238eef6bae | ||
|
|
b92b745ab7 | ||
|
|
0132286cab | ||
|
|
f8a252d142 | ||
|
|
962d6e71b6 | ||
|
|
48aaf22855 | ||
|
|
8351f5998a | ||
|
|
2494af99aa | ||
|
|
e5b93d1f02 | ||
|
|
86eafeb826 | ||
|
|
32e1c2ac97 | ||
|
|
5e3bbbbb3c | ||
|
|
3bdf6004ca | ||
|
|
11869122b4 | ||
|
|
9b24459108 | ||
|
|
c5fbc5c991 | ||
|
|
0413e3e77f | ||
|
|
92fda0a940 | ||
|
|
63e088730a | ||
|
|
a78d35f84e | ||
|
|
63e869f6d0 | ||
|
|
4aff9515d8 | ||
|
|
6f0daa5463 | ||
|
|
a658aaaf30 | ||
|
|
37590d5f5e | ||
|
|
ca1f926d6d | ||
|
|
5d44a67e62 | ||
|
|
8ed3d59f96 | ||
|
|
bc93ff0cb5 | ||
|
|
44498f2263 | ||
|
|
045751a430 | ||
|
|
162fe797fc | ||
|
|
e671563f1e | ||
|
|
a7238d0fdb | ||
|
|
2a899f5295 | ||
|
|
b7cd84fad6 | ||
|
|
36b6da7c4f | ||
|
|
02eb575813 | ||
|
|
ca8a6665ba | ||
|
|
ba00cd916a | ||
|
|
b4f916d214 | ||
|
|
79faf7d3cb | ||
|
|
79b1b6c8e0 | ||
|
|
2ecf7a3349 | ||
|
|
5283dcce2e | ||
|
|
b56fc697c4 | ||
|
|
b7ff1fe5d3 | ||
|
|
1b24064c9f | ||
|
|
bb9237b0f4 | ||
|
|
fe2787fcc1 | ||
|
|
11778db05a | ||
|
|
454af2bda3 | ||
|
|
9f7479711e | ||
|
|
4579e1637d | ||
|
|
f4a2e227e1 | ||
|
|
48e538f5c7 | ||
|
|
c851c37630 | ||
|
|
a0d7b1efa5 | ||
|
|
1a06e6b305 | ||
|
|
43d7045a5b | ||
|
|
9199a56b7a | ||
|
|
44d1be27e6 | ||
|
|
554d5f97df | ||
|
|
78a4b9897c | ||
|
|
c1fcbe3f04 | ||
|
|
efa67d87aa | ||
|
|
4fe410a277 | ||
|
|
3235606644 | ||
|
|
260976914d | ||
|
|
3ca4b7e7a7 | ||
|
|
95c627f581 | ||
|
|
512dbb448b | ||
|
|
b793c1cc73 | ||
|
|
aea048ecc7 | ||
|
|
d0e6413fcf | ||
|
|
3b7ad1688b | ||
|
|
e907b99314 | ||
|
|
973bcb0483 | ||
|
|
87fb9a76ce | ||
|
|
0187e0c47d | ||
|
|
8732d8ece8 | ||
|
|
2e7c130f62 | ||
|
|
a90f434df5 | ||
|
|
3b005ad47c | ||
|
|
735bc2f178 | ||
|
|
e3cfa6363d | ||
|
|
331b1cb9a0 | ||
|
|
55dbb0ece0 | ||
|
|
af4071e119 | ||
|
|
9947e643d0 | ||
|
|
d3be4f2852 | ||
|
|
e320f343f8 | ||
|
|
f6cc7d9c3c | ||
|
|
b756f76b0e | ||
|
|
034948065d | ||
|
|
0c2df7e589 | ||
|
|
2ae6a71ca3 | ||
|
|
206fd0f78e | ||
|
|
b84225ac70 | ||
|
|
5ebcea53d6 | ||
|
|
a491e01144 | ||
|
|
1236efc008 | ||
|
|
e63bbdeb87 | ||
|
|
084ccb62a6 | ||
|
|
015469885d | ||
|
|
061f223269 | ||
|
|
88ee35d5f9 | ||
|
|
6c5b33ec71 | ||
|
|
31b8dd1bfc | ||
|
|
35113487f1 | ||
|
|
9ce8e10115 | ||
|
|
d07d059eda | ||
|
|
d836b0f815 | ||
|
|
1b1733ce7c | ||
|
|
5fd64a969b | ||
|
|
9a762e584c | ||
|
|
7fc0fd9fb6 | ||
|
|
da4b70fcae | ||
|
|
a0db69ee05 | ||
|
|
2c62504b79 | ||
|
|
67303106dc | ||
|
|
600d574042 | ||
|
|
07d4f21807 | ||
|
|
4da12067b9 | ||
|
|
24ab24879c | ||
|
|
dc51741b83 | ||
|
|
dd979dbf6d | ||
|
|
0cfea5613a | ||
|
|
98dd3ecab7 | ||
|
|
fe05e0bac3 | ||
|
|
d3f9b72c84 | ||
|
|
05b35c0fdc | ||
|
|
36b61650b3 | ||
|
|
c37b6f0eeb | ||
|
|
28114c3b5a | ||
|
|
2617df4ec7 | ||
|
|
0d28c48eb9 | ||
|
|
c6a6a54cce | ||
|
|
e5aa03da64 | ||
|
|
47c0195b07 | ||
|
|
f13d43dbf5 | ||
|
|
f9e99a27d3 | ||
|
|
854b8fad22 | ||
|
|
91c7105d43 | ||
|
|
c1e3533287 | ||
|
|
bb7c308081 | ||
|
|
fcbaf2f4e3 | ||
|
|
109c5df973 | ||
|
|
b0fab3ea4a | ||
|
|
490fed6228 | ||
|
|
9c81692d48 | ||
|
|
c505ba6f3e | ||
|
|
ee71f57453 | ||
|
|
f133aebfaf | ||
|
|
88556d31e2 | ||
|
|
c0d75c6476 | ||
|
|
5b6cf447e5 | ||
|
|
3890f8224d | ||
|
|
b9f5c93830 | ||
|
|
c40b3dea6c | ||
|
|
dbc798596b | ||
|
|
fac90c446c | ||
|
|
c5859b65a3 | ||
|
|
14bb697924 | ||
|
|
dbd815c1e0 | ||
|
|
9592a9a821 | ||
|
|
dd9f020c9b | ||
|
|
56f21f4bab | ||
|
|
91bc1b468b | ||
|
|
97268d2253 | ||
|
|
14b3c50b69 | ||
|
|
333bf9de05 | ||
|
|
16a38c687e | ||
|
|
24aa5cd1bf | ||
|
|
f699da90ba | ||
|
|
d1e33a3dff | ||
|
|
f50ac932d6 | ||
|
|
cab32d7593 | ||
|
|
2073aa9abc | ||
|
|
0386025395 | ||
|
|
0772403ea9 | ||
|
|
8acfc9a2f9 | ||
|
|
de087abc8d | ||
|
|
98b2875512 | ||
|
|
e9e73aa0a3 | ||
|
|
d280311734 | ||
|
|
789762617f | ||
|
|
6f38d1bee5 | ||
|
|
73d75bc405 | ||
|
|
91dcfd5ee8 | ||
|
|
5fe0e9f2e7 | ||
|
|
51fb6e6a23 | ||
|
|
9392d5c84f | ||
|
|
e49d136b99 | ||
|
|
d50174b89e | ||
|
|
1d9a77027e | ||
|
|
b4cd8897b2 | ||
|
|
df341717f7 | ||
|
|
68974313e1 | ||
|
|
39a06e1d3b | ||
|
|
bfe57b84d6 | ||
|
|
dae975b08c | ||
|
|
27d44e3021 | ||
|
|
df00d93b9c | ||
|
|
15bbbb3762 | ||
|
|
c9ee526d8b | ||
|
|
b110d95de1 | ||
|
|
76eab5d3ec | ||
|
|
4a2715e61f | ||
|
|
7fbcc3999f | ||
|
|
e873b8948f | ||
|
|
c8108a1db2 | ||
|
|
195c3af84e | ||
|
|
39724292e3 | ||
|
|
24b5aa0e82 | ||
|
|
3af2ef8439 | ||
|
|
e2d027e252 | ||
|
|
bddcebfbb1 | ||
|
|
a05b14e4d9 | ||
|
|
9a36e73f4e | ||
|
|
a66ccaa1da | ||
|
|
f05a563802 | ||
|
|
06396b8874 | ||
|
|
e5e68de2d7 | ||
|
|
dcc0908617 | ||
|
|
45d68285f1 | ||
|
|
e20f3a0f97 | ||
|
|
c5029e61e3 | ||
|
|
e90ed01105 | ||
|
|
d8099d53fe | ||
|
|
0a976a3fb8 | ||
|
|
4636d5fbc2 | ||
|
|
3506ec1caa | ||
|
|
1f0e819756 | ||
|
|
799ff2a5c3 | ||
|
|
ec5f768f9b | ||
|
|
66ab010055 | ||
|
|
6fb157488c | ||
|
|
814518dd80 | ||
|
|
554b18a466 | ||
|
|
855b6b1dc5 | ||
|
|
c2ae9f62a4 | ||
|
|
4159a8fe6e | ||
|
|
d8b44283a2 | ||
|
|
2c1daf9c9a | ||
|
|
c7962216e9 | ||
|
|
ffdaf88fd0 | ||
|
|
f84f879950 | ||
|
|
eb6027fba7 | ||
|
|
9a1f0ac8e2 | ||
|
|
51b6f8bc71 | ||
|
|
4f73b81b9c | ||
|
|
195d11f9d0 | ||
|
|
b325ad1735 | ||
|
|
74483631d0 | ||
|
|
89b24a21a0 | ||
|
|
f0f13aa1dd | ||
|
|
06f61949f9 | ||
|
|
0e72b67865 | ||
|
|
b987eebf21 | ||
|
|
c808d12b74 | ||
|
|
b466431ede | ||
|
|
bf69ca6e53 | ||
|
|
6ffa907f0e | ||
|
|
e54501522d | ||
|
|
f2baeddc30 | ||
|
|
fd349b618a | ||
|
|
6ca2a02766 | ||
|
|
d9a282bd92 | ||
|
|
dc151f7290 | ||
|
|
cce2127f72 | ||
|
|
0f8e6b395e | ||
|
|
b28cc6d7d3 | ||
|
|
3bf12a98a7 | ||
|
|
f27084ced4 | ||
|
|
cdcf624e9e | ||
|
|
ad4c2b95e4 | ||
|
|
8e7c395f59 | ||
|
|
02d50a513a | ||
|
|
d61759f6dd | ||
|
|
5790ed7ba9 | ||
|
|
067adbfb62 | ||
|
|
7fadba59e7 | ||
|
|
bcde0731db | ||
|
|
052afb67a4 | ||
|
|
6e15d7bb0f | ||
|
|
5bb68974ec | ||
|
|
0a3ba4d27d | ||
|
|
482a226dc5 | ||
|
|
9e69458ba8 | ||
|
|
71e386d5fa | ||
|
|
60b501b137 | ||
|
|
36f8e9f1d5 | ||
|
|
78707bd3ca | ||
|
|
56137d0605 | ||
|
|
681a582630 | ||
|
|
846a447c4d | ||
|
|
f76be4f016 | ||
|
|
ed19067096 | ||
|
|
eb9f7c2c9d | ||
|
|
52693f7d0a | ||
|
|
5e015872ef | ||
|
|
08c291bd3f | ||
|
|
48c5d69c9d | ||
|
|
0f9c262bb0 | ||
|
|
dff0fc65bf | ||
|
|
161f96c07d | ||
|
|
67ad21b368 | ||
|
|
d5e633c38f | ||
|
|
617ef5b6ce | ||
|
|
8bd4e38d02 | ||
|
|
f364b5c5ab | ||
|
|
6486fced34 | ||
|
|
bc9f2a51a2 | ||
|
|
9c03b54d75 | ||
|
|
eae08ea1e4 | ||
|
|
6f276223c6 | ||
|
|
21effcaa8b | ||
|
|
114b31a813 | ||
|
|
1a1b7a2bc4 | ||
|
|
c9b213839a | ||
|
|
4043fa76cc | ||
|
|
9c8e3bc4c9 | ||
|
|
18b1f01641 | ||
|
|
9085c674e4 | ||
|
|
b5d19d3fb1 | ||
|
|
cc0477153b | ||
|
|
76008b41c5 | ||
|
|
8193fdc304 | ||
|
|
9d06c81078 | ||
|
|
cdf85e5eee | ||
|
|
d774dbc432 | ||
|
|
0369f5ebc4 | ||
|
|
1e6b11b27e | ||
|
|
7a8231435b | ||
|
|
b1aa7725df | ||
|
|
bfe0ba3e9a | ||
|
|
2d39329ee7 | ||
|
|
761b0063a0 | ||
|
|
0f27ce3424 | ||
|
|
2b0c0a6ff7 | ||
|
|
5bd96f6fe9 | ||
|
|
37ac6749ba | ||
|
|
bf955bd87f | ||
|
|
6bd921d0bc | ||
|
|
534decea95 | ||
|
|
267830d463 | ||
|
|
e82d0c21ec | ||
|
|
ece6417699 | ||
|
|
74d5449719 | ||
|
|
4af7ff9cc3 | ||
|
|
46dedfcb67 | ||
|
|
a9fa1a0df6 | ||
|
|
a8572b4944 | ||
|
|
91c0d47ad4 | ||
|
|
fd2611794a | ||
|
|
1fe1c5321b | ||
|
|
f063a5db0f | ||
|
|
3883315447 | ||
|
|
7679e07957 | ||
|
|
c39ba37ad8 | ||
|
|
f1c3840c3b | ||
|
|
e5c5b36a73 | ||
|
|
c51f7a8375 | ||
|
|
e53e2ac31b | ||
|
|
b72857cd8b | ||
|
|
cc223b9eab | ||
|
|
f2c49e8b37 | ||
|
|
9b6476a6b7 | ||
|
|
d8898cf9a3 | ||
|
|
34df5af295 | ||
|
|
3de88d5345 | ||
|
|
9ab6ab1bf9 | ||
|
|
b6de0bdd43 | ||
|
|
a2b62fd808 | ||
|
|
fc166dea26 | ||
|
|
f9c4d0925e | ||
|
|
1df9370bc2 | ||
|
|
7d840c7a18 | ||
|
|
ff12aafc0f | ||
|
|
c08b4aa6a1 | ||
|
|
52a6e6357b | ||
|
|
74c0fd419b | ||
|
|
6f540e3e58 | ||
|
|
dead04dce8 | ||
|
|
886a03fdcd | ||
|
|
81007c453c | ||
|
|
6529e06057 | ||
|
|
55336f96d7 | ||
|
|
938aabde3d | ||
|
|
c7f196b579 | ||
|
|
b28a88dbb2 | ||
|
|
e6558b7135 | ||
|
|
2c8fb9aa31 | ||
|
|
f48c6b6285 | ||
|
|
4f42f60bde | ||
|
|
3942647910 | ||
|
|
e0fbc78925 | ||
|
|
f3e43d7d94 | ||
|
|
f36547241c | ||
|
|
7ad29950a8 | ||
|
|
cbf91ad45c | ||
|
|
a039b66533 | ||
|
|
3a18c249f5 | ||
|
|
7c0775aa1b | ||
|
|
6514c34ed8 | ||
|
|
ba92754669 | ||
|
|
30afd39129 | ||
|
|
41699406cf | ||
|
|
9aa49e59d0 | ||
|
|
29d5034260 | ||
|
|
00d1622b3f | ||
|
|
a1acf19ff3 | ||
|
|
86328af6b7 | ||
|
|
36c27bdbf8 | ||
|
|
c839965c05 | ||
|
|
e1a9f3435f | ||
|
|
9f74feb347 | ||
|
|
f99232095b | ||
|
|
5044fe4fe4 | ||
|
|
8e49169e6b | ||
|
|
c71781d9ab | ||
|
|
8a2a4052f3 | ||
|
|
dad557164e | ||
|
|
e2fb49a8f8 | ||
|
|
f3241ff86a | ||
|
|
b9e7973a0f | ||
|
|
004b1f5288 | ||
|
|
857bd24c6d | ||
|
|
904968cf4a | ||
|
|
83747934ad | ||
|
|
7f90f5ecd4 | ||
|
|
12f02b9814 | ||
|
|
8931388309 | ||
|
|
25160d7344 | ||
|
|
ab6bf6edc7 | ||
|
|
56a4a374cd | ||
|
|
caa5b4e342 | ||
|
|
b6172c3965 | ||
|
|
02ddfa07a7 | ||
|
|
5022878680 | ||
|
|
2bfacbb8ba | ||
|
|
b18d2b0274 | ||
|
|
f20b496dca | ||
|
|
cca17f70b8 | ||
|
|
b8e69718a1 | ||
|
|
50ed7d2af2 | ||
|
|
698de932ed | ||
|
|
a3d8858bb1 | ||
|
|
83f3ba21b8 | ||
|
|
2aa729b212 | ||
|
|
1de70e4474 | ||
|
|
f2393de59b | ||
|
|
94ea7cc451 | ||
|
|
f8dbf57582 | ||
|
|
c59cd36da6 | ||
|
|
15e92958d6 | ||
|
|
96c648c4b4 | ||
|
|
f56a7d0cb2 | ||
|
|
01e617bb83 | ||
|
|
59fd5c69c0 | ||
|
|
28a9a8c380 | ||
|
|
6c2796b433 | ||
|
|
82ad5f7897 | ||
|
|
bf8ac3b9e6 | ||
|
|
edcdc9b1b9 | ||
|
|
4227aaa68a | ||
|
|
b750ce8be6 | ||
|
|
03a6a088c5 | ||
|
|
1e787a7646 | ||
|
|
766ac3f1fe | ||
|
|
a9038f2afc | ||
|
|
9828fa335e | ||
|
|
0c04d490bb | ||
|
|
bffffffc95 | ||
|
|
e9589ff786 | ||
|
|
c3bd3437f5 | ||
|
|
01789e6750 | ||
|
|
c3f7ba1b91 | ||
|
|
90d72a3683 | ||
|
|
f9bcf936ed | ||
|
|
acff177c54 | ||
|
|
658214a2e2 | ||
|
|
55f6f02c9b | ||
|
|
c5ba52910a | ||
|
|
994ccd6694 | ||
|
|
4921a83813 | ||
|
|
a97ba41b86 | ||
|
|
67e2623d2c | ||
|
|
4111095da3 | ||
|
|
6c21ddcedb | ||
|
|
d86349658f | ||
|
|
151ce6e3c7 | ||
|
|
6bdee26c30 | ||
|
|
5e4b1eed30 | ||
|
|
ab5cd95ccc | ||
|
|
a3dc398da5 | ||
|
|
b70f5d1a1e | ||
|
|
26363931ed | ||
|
|
e2438330f5 | ||
|
|
c5fcdd0657 | ||
|
|
345f3c07a5 | ||
|
|
f3477ff28c | ||
|
|
7ac4fa50b5 | ||
|
|
2f0a914838 | ||
|
|
5fc7d9a603 | ||
|
|
ced68e4e02 | ||
|
|
80071beaac | ||
|
|
de1029d5ef | ||
|
|
ffeb3194a8 | ||
|
|
95e9f33f6a | ||
|
|
c599a20b34 | ||
|
|
ca59528a32 | ||
|
|
6f4fd06d38 | ||
|
|
4715c2d006 | ||
|
|
fcfa43b6f1 | ||
|
|
56b4c55654 | ||
|
|
830790eeac | ||
|
|
39de9c7879 | ||
|
|
7b6cc14b71 | ||
|
|
ec749a4033 | ||
|
|
fe32214613 | ||
|
|
f6fcb775b7 | ||
|
|
d209108a95 | ||
|
|
efc64cf17f | ||
|
|
2f41ed50c1 | ||
|
|
fcc8cdd36a | ||
|
|
248632ce76 | ||
|
|
25681754bd | ||
|
|
179c487da9 | ||
|
|
350989bbec | ||
|
|
f5293e6c38 | ||
|
|
70c3515c94 | ||
|
|
4c7fd5a4e8 | ||
|
|
9d24341d94 | ||
|
|
512502ca08 | ||
|
|
6ce662c7a4 | ||
|
|
701ea5c46b | ||
|
|
2e5ff53d72 | ||
|
|
1229c61ba4 | ||
|
|
ee54438e92 | ||
|
|
65af78c85d | ||
|
|
b4747c3f85 | ||
|
|
1df074b73e | ||
|
|
254d30b8df | ||
|
|
ac5588c7c4 | ||
|
|
ddb70a89ad | ||
|
|
f4b2a9625d | ||
|
|
c2a1317c38 | ||
|
|
49f1a6933c | ||
|
|
9b387b8ec3 | ||
|
|
a45a29432e | ||
|
|
819d069edc | ||
|
|
b0a57a5091 | ||
|
|
d8678d562d | ||
|
|
34a9035164 | ||
|
|
0941e0a929 | ||
|
|
1ee78062d7 | ||
|
|
09f5609618 | ||
|
|
098322c564 | ||
|
|
365e24c1cd | ||
|
|
b82fdd59e7 | ||
|
|
6190ac7791 | ||
|
|
ed3aeb7997 | ||
|
|
33f92b6bcf | ||
|
|
9131a72a47 | ||
|
|
e5617dfe61 | ||
|
|
e67d67419f | ||
|
|
17c34716f9 | ||
|
|
e12f7c3026 | ||
|
|
af395eccda | ||
|
|
c403dcdabf | ||
|
|
c500cc095f | ||
|
|
6ecda647ad | ||
|
|
3e7ee1f090 | ||
|
|
0c120cb7a3 | ||
|
|
cab6829df9 | ||
|
|
0efe6df416 | ||
|
|
a4b6112a31 | ||
|
|
47debf0134 | ||
|
|
16ddd1edfc | ||
|
|
0f1fd0e90d | ||
|
|
ef76d83d2a | ||
|
|
df9f6004f2 | ||
|
|
9a87f99dcd | ||
|
|
30011db6d7 | ||
|
|
b6ac132c78 | ||
|
|
abf87a643d | ||
|
|
3824ea9079 | ||
|
|
5e22ce05c5 | ||
|
|
8fcc7aefa7 | ||
|
|
0b6ea1d046 | ||
|
|
22d3981a74 | ||
|
|
81b4f4928d | ||
|
|
dd77a38535 | ||
|
|
d319b53e23 | ||
|
|
b9627e14d0 | ||
|
|
56a96d36a1 | ||
|
|
e60630fa73 | ||
|
|
5ef6613024 | ||
|
|
af7e02de27 | ||
|
|
51d5b9d35d | ||
|
|
092ca6bcf5 | ||
|
|
2625cbbfed | ||
|
|
cedd1d5596 | ||
|
|
fb9e14a229 | ||
|
|
4e1bd7b5f0 | ||
|
|
5dfed8cd00 | ||
|
|
a2672a0d78 | ||
|
|
ee5ac6b800 | ||
|
|
a481d2ab46 | ||
|
|
c8bb21d12d | ||
|
|
e817cd7d43 | ||
|
|
bd6085fffd | ||
|
|
7efe9a9385 | ||
|
|
50da40a727 | ||
|
|
48390a1875 | ||
|
|
a3d27cd128 | ||
|
|
589c814ee6 | ||
|
|
4b60a3cbab | ||
|
|
1aaf633df8 | ||
|
|
82771ec64a | ||
|
|
ada8a402da | ||
|
|
17956efe35 | ||
|
|
8378c9f85e | ||
|
|
324b1079e7 | ||
|
|
c6da829713 | ||
|
|
844b0687a6 | ||
|
|
2ed2dd2fb7 | ||
|
|
d2f7dd3d5a | ||
|
|
9f08916cf1 | ||
|
|
a0e3676e3a | ||
|
|
2276793629 | ||
|
|
a9b320e636 | ||
|
|
ecdc0636d8 | ||
|
|
ea12e34809 | ||
|
|
9fb7865292 | ||
|
|
12f30c78ff | ||
|
|
e3bed5cc71 | ||
|
|
0f8f5ca5ff | ||
|
|
0fe0433b9a | ||
|
|
ab1e38701d | ||
|
|
258fe8ea50 | ||
|
|
813824868e | ||
|
|
028184947f | ||
|
|
14c96e0b97 | ||
|
|
ef03d1ae13 | ||
|
|
f1613d36ac | ||
|
|
8314bbbbac | ||
|
|
462f1f00d8 | ||
|
|
1c80bba4dd | ||
|
|
d22cff0976 | ||
|
|
269b56b907 | ||
|
|
60ebfcf36d | ||
|
|
824c331ea0 | ||
|
|
b9e51d2fad | ||
|
|
9669a4d121 | ||
|
|
e929fb4337 | ||
|
|
80da9cd31f | ||
|
|
5ed7a1baba | ||
|
|
07c111d1f5 | ||
|
|
a2024da955 | ||
|
|
7418926ebb | ||
|
|
4cc33d270e | ||
|
|
f767f5c12c | ||
|
|
0ea3b10efd | ||
|
|
d634775d40 | ||
|
|
c4ab5bc653 | ||
|
|
1d3bdfc374 | ||
|
|
72fb1ee36f | ||
|
|
afbc4989d5 | ||
|
|
d2e422cd5e | ||
|
|
49c7365d93 | ||
|
|
c753e24f0a | ||
|
|
acfbba5476 | ||
|
|
e796734659 | ||
|
|
f172908bde | ||
|
|
16dc4e9f66 | ||
|
|
8eefc89d55 | ||
|
|
20d349cea7 | ||
|
|
22f408f713 | ||
|
|
1e0fa776c1 | ||
|
|
faf5c84082 | ||
|
|
b21f6e4d86 | ||
|
|
bc52303402 | ||
|
|
2da705e81c | ||
|
|
a0601cd052 | ||
|
|
ed2c06508b | ||
|
|
03b3d74748 | ||
|
|
0557d6a9bf | ||
|
|
d975c0cef3 | ||
|
|
188bf000b7 | ||
|
|
608442b2e8 | ||
|
|
aefc122caf | ||
|
|
a72eae7ea8 | ||
|
|
30e3afc0fb | ||
|
|
97809a03eb | ||
|
|
f894ffc0cc | ||
|
|
127fbc6e94 | ||
|
|
9f870b3d4e | ||
|
|
51b86742d1 | ||
|
|
3a85b3212b | ||
|
|
fd6445439e | ||
|
|
51fa8d3e24 | ||
|
|
7b8db1156d | ||
|
|
32ad34d224 | ||
|
|
cfbb1c440e | ||
|
|
ade2f96ca3 | ||
|
|
abb38e1bc0 | ||
|
|
0df36471b7 | ||
|
|
97312c2656 | ||
|
|
e9e4df4891 | ||
|
|
e0f80c5e6a | ||
|
|
f21b042ed1 | ||
|
|
d8c7c9803c | ||
|
|
302b9deef3 | ||
|
|
0c8264801a | ||
|
|
54d1a0359f | ||
|
|
b87e48c113 | ||
|
|
a874cd2424 | ||
|
|
d9e308e53a | ||
|
|
efc3536283 | ||
|
|
4b7e669d29 | ||
|
|
01c6efeaf1 | ||
|
|
22cf7bee5b | ||
|
|
ef890aeac4 | ||
|
|
91e8c00076 | ||
|
|
20bf4d8ef9 | ||
|
|
795da130a2 | ||
|
|
51a625d4af | ||
|
|
ab8544b0ff | ||
|
|
b68d16820f | ||
|
|
61d9cdced0 | ||
|
|
714f9ed207 | ||
|
|
ccccaf8e12 | ||
|
|
c3ce9d6104 | ||
|
|
d3f602f063 | ||
|
|
6b379a8a0f | ||
|
|
d1d636f1ca | ||
|
|
ba9d3cbdb8 | ||
|
|
bcf8d51806 | ||
|
|
66c0d6724a | ||
|
|
0f477607f9 | ||
|
|
c1635f2656 | ||
|
|
029d91bd7a | ||
|
|
03dbad6813 | ||
|
|
c65b2573c4 | ||
|
|
7fbee77875 | ||
|
|
3cc1a952ca | ||
|
|
9c8de3e933 | ||
|
|
cbdce6b67e | ||
|
|
a6746ae5cd | ||
|
|
7111f3ffc6 | ||
|
|
87a7a4ad2d | ||
|
|
1ee2d6ed54 | ||
|
|
1eba78e20a | ||
|
|
a1fb438a8c | ||
|
|
40d1b0a23c | ||
|
|
1c9a657693 | ||
|
|
11747c6cf4 | ||
|
|
2a7b3aecc3 | ||
|
|
75babed693 | ||
|
|
0a32ae6cb5 | ||
|
|
3d67f122a5 | ||
|
|
b0daec8384 | ||
|
|
f5b1fe0e6b | ||
|
|
139d289b01 | ||
|
|
fd242a9cba | ||
|
|
7efa17ef7d | ||
|
|
a0b9c7777b | ||
|
|
5204e4c08d | ||
|
|
1050ecdf3c | ||
|
|
5176d929fa | ||
|
|
d712dc47d9 | ||
|
|
8adc6f0faa | ||
|
|
4e783fba57 | ||
|
|
ade620f4f7 | ||
|
|
5915f8430c | ||
|
|
9e0f06d060 | ||
|
|
ce86ae0191 | ||
|
|
2bec5cb7fd | ||
|
|
cd766ea2a1 | ||
|
|
aeea3817a4 | ||
|
|
0f11ae1875 | ||
|
|
6e87e3e1ac | ||
|
|
4ba108d12f | ||
|
|
8ff17ff960 | ||
|
|
0d56daf7ab | ||
|
|
9db0bc262b | ||
|
|
f410903465 | ||
|
|
5f2c303bd8 | ||
|
|
6aa4984fed | ||
|
|
f5cd1ac82e | ||
|
|
54c0b7b261 | ||
|
|
a7902eca1f | ||
|
|
2b4bb579d4 | ||
|
|
52c956222e | ||
|
|
0900e0c85e | ||
|
|
a5653337c1 | ||
|
|
d097113639 | ||
|
|
9389d64392 | ||
|
|
931e7e7d71 | ||
|
|
cce2fb40a1 | ||
|
|
547cf4bef3 | ||
|
|
d528ce757c | ||
|
|
3b78188fec | ||
|
|
d91b30faef | ||
|
|
dc956020ef | ||
|
|
a52eb81380 | ||
|
|
ab0055d5c6 | ||
|
|
32c25a2034 | ||
|
|
c30b42434a | ||
|
|
3c797a6e11 | ||
|
|
9b864517e2 | ||
|
|
a858e2870b | ||
|
|
ce1542da4f | ||
|
|
d2ebf4a777 | ||
|
|
c5fcea1dbd | ||
|
|
5e8ef070e2 | ||
|
|
2d30c290e9 | ||
|
|
688b34710e | ||
|
|
afbfc8ba1c | ||
|
|
671f29774b | ||
|
|
4c99ac0ca2 | ||
|
|
0e690608d3 | ||
|
|
92f6391df5 | ||
|
|
f2af6e4b3a | ||
|
|
27c03cffe2 | ||
|
|
499915042e | ||
|
|
1a901554cc | ||
|
|
5b64b3ea93 | ||
|
|
6fc5c0cd46 | ||
|
|
328da21420 | ||
|
|
81062d20eb | ||
|
|
835d06dcdc | ||
|
|
8929543b55 | ||
|
|
f62044c1e3 | ||
|
|
a31f7a5112 | ||
|
|
fe68114f39 | ||
|
|
a5231df6d9 | ||
|
|
fd545ec00f | ||
|
|
73d8a2adf7 | ||
|
|
04d11d6fac | ||
|
|
2eede4a09e | ||
|
|
bc7e8ff471 | ||
|
|
73e81c62fb | ||
|
|
8c5dc7cecd | ||
|
|
300c9f09b9 | ||
|
|
06f4427939 | ||
|
|
b1dc20bbb3 | ||
|
|
4887d1d42f | ||
|
|
d247d72e3e | ||
|
|
50957e1d29 | ||
|
|
6aad12a52f | ||
|
|
db0944acde | ||
|
|
e553ef83de | ||
|
|
a619949a56 | ||
|
|
1346fa792a | ||
|
|
b763cdbd4c | ||
|
|
e4eac14dc9 | ||
|
|
bdda1f2992 | ||
|
|
9c7289d7a3 | ||
|
|
d861caca23 | ||
|
|
590033bcb2 | ||
|
|
af1e4574a8 | ||
|
|
7b806fe84d | ||
|
|
e54e2ac67b | ||
|
|
de9f0732a0 | ||
|
|
20acdbf6c3 | ||
|
|
6a6d2f73a8 | ||
|
|
f5a8f00af8 | ||
|
|
018a437d62 | ||
|
|
32d75b6483 | ||
|
|
cb6cace910 | ||
|
|
0326ddd79d | ||
|
|
d6f40a9281 | ||
|
|
687802394a | ||
|
|
ad570b8ae1 | ||
|
|
b9165c03af | ||
|
|
cfe57f52f4 | ||
|
|
86d4ffe7e5 | ||
|
|
2dea179333 | ||
|
|
5a7908984e | ||
|
|
955fdf5d13 | ||
|
|
a6f40d4187 | ||
|
|
6daf754f5b | ||
|
|
da8cf9981e | ||
|
|
be64184cfa | ||
|
|
3031598843 | ||
|
|
b9b00e10d3 | ||
|
|
6c34255a3e | ||
|
|
41064adc66 | ||
|
|
2fcc36bbad | ||
|
|
762c0143eb | ||
|
|
6c6f34ee72 | ||
|
|
42b7b0dab9 | ||
|
|
e58e35e098 | ||
|
|
654b048602 | ||
|
|
3ece72af49 | ||
|
|
2ef31991c7 | ||
|
|
d3293a5571 | ||
|
|
854752acdf | ||
|
|
0c889385f1 | ||
|
|
6e1a549fcb | ||
|
|
5f0a2953c6 | ||
|
|
78b513c52a | ||
|
|
8ffce78827 | ||
|
|
d4852092b8 | ||
|
|
622ce0bf2e | ||
|
|
6a197a64e6 | ||
|
|
1e4c3ed22b | ||
|
|
e3521c6388 | ||
|
|
9d81e069dc | ||
|
|
8623a30763 | ||
|
|
6cf39896f1 | ||
|
|
44b6adaa29 | ||
|
|
762a6199b2 | ||
|
|
8da42b12f4 | ||
|
|
c473a0444c | ||
|
|
e693629bbd | ||
|
|
0dbe883c3b | ||
|
|
cc12bc9247 | ||
|
|
ddec01e6c1 | ||
|
|
03bc7bb935 | ||
|
|
5207dfdc0e | ||
|
|
fc40efb761 | ||
|
|
50556e2609 | ||
|
|
7a22298597 | ||
|
|
36cadaae46 | ||
|
|
09e921a562 | ||
|
|
13cbaf56b2 | ||
|
|
62910c8e89 | ||
|
|
f20e1acad9 | ||
|
|
5dea432ebf | ||
|
|
016d82d766 | ||
|
|
260c72cc20 | ||
|
|
3d7bcd7ecb | ||
|
|
ac9175bf88 | ||
|
|
294d3bbdc1 | ||
|
|
6db614251e | ||
|
|
bcc588efe7 | ||
|
|
f7b3fc58bc | ||
|
|
de40497330 | ||
|
|
d84bb7ed7e | ||
|
|
f02ada2d11 | ||
|
|
48970d3424 | ||
|
|
8940b1759d | ||
|
|
91a50d0f53 | ||
|
|
ed4f8c5b66 | ||
|
|
2f07ee0a8f | ||
|
|
8dd00a8eef | ||
|
|
d7845a177e | ||
|
|
7a3be0a320 | ||
|
|
14cebce304 | ||
|
|
9fcf9f2504 | ||
|
|
c466ab6cf2 | ||
|
|
01bf789ad4 | ||
|
|
1a1ab5af54 | ||
|
|
4089ad7b4b | ||
|
|
2adc299c78 | ||
|
|
3aef323c13 | ||
|
|
a655cd046c | ||
|
|
9c8701f5f6 | ||
|
|
7ac84aff0a | ||
|
|
fd13c8f68c | ||
|
|
532964af42 | ||
|
|
52d1407215 | ||
|
|
ecb7356345 | ||
|
|
edda7dae94 | ||
|
|
32da0a376a | ||
|
|
073e76ee90 | ||
|
|
ceba82260f | ||
|
|
a5a61c87fc | ||
|
|
d34feb1e0a | ||
|
|
6cc5e45183 | ||
|
|
618c7ef48a | ||
|
|
14047f9c7b | ||
|
|
f439f162d2 | ||
|
|
5b685b32bd | ||
|
|
6ce151c676 | ||
|
|
eb79b5d651 | ||
|
|
608e1c8960 | ||
|
|
f8772d8850 | ||
|
|
ce2f408864 | ||
|
|
c2a362e3ea | ||
|
|
eafdd4d42d | ||
|
|
1a2c58494f | ||
|
|
68c00976f1 | ||
|
|
aa2616b307 | ||
|
|
3062c18ebd | ||
|
|
a83f5241dc | ||
|
|
f89acb49be | ||
|
|
2b5f45676f | ||
|
|
aedd51a61b | ||
|
|
0b5a49c17d | ||
|
|
08f7666d21 | ||
|
|
81ff99276b | ||
|
|
e71862676c | ||
|
|
67777c586d | ||
|
|
9ada8e4ddf | ||
|
|
0142e7fa8f | ||
|
|
467e9abf5f | ||
|
|
512980d9bd | ||
|
|
e235a63119 | ||
|
|
4c28b66539 | ||
|
|
46d79e5115 | ||
|
|
d79994fbb2 | ||
|
|
518a2da027 | ||
|
|
71fa92dbeb | ||
|
|
172d2353dd | ||
|
|
3315006c45 | ||
|
|
6700745585 | ||
|
|
0ff18058ab | ||
|
|
1a11283086 | ||
|
|
ed559be47c | ||
|
|
a60dd1cbaf | ||
|
|
7ee37fb62a | ||
|
|
2970e103db | ||
|
|
78333b3026 | ||
|
|
1ca182e741 | ||
|
|
8419db53bb | ||
|
|
f76c9bc226 | ||
|
|
6a39a69afe | ||
|
|
2474d1d2f4 | ||
|
|
e4188f5d4c | ||
|
|
0fcbd02d50 | ||
|
|
4969797c23 | ||
|
|
0e932286d2 | ||
|
|
366a9502dd | ||
|
|
988a334758 | ||
|
|
4fe6269043 | ||
|
|
646927962a | ||
|
|
b56baefaa6 | ||
|
|
f49a507297 | ||
|
|
c20549e88d | ||
|
|
cd16986942 | ||
|
|
e481404a14 | ||
|
|
3dfde15133 | ||
|
|
4454cfa65d | ||
|
|
382839464f | ||
|
|
cce5585795 | ||
|
|
26a9fe9127 | ||
|
|
47a267c3fa | ||
|
|
36836eb942 | ||
|
|
aad0804a1e | ||
|
|
3c68d9c297 | ||
|
|
ffdc7d13a9 | ||
|
|
c5085d8364 | ||
|
|
00ad7bc470 | ||
|
|
360927ec77 | ||
|
|
b6f546ebe0 | ||
|
|
2a092143dc | ||
|
|
de50407953 | ||
|
|
57d5fbfbd8 | ||
|
|
92322c0e07 | ||
|
|
97ed453eb4 | ||
|
|
654b782810 | ||
|
|
51211a21ba | ||
|
|
133b6fe240 | ||
|
|
c824fe8718 | ||
|
|
26d3a487a5 | ||
|
|
e0a2afc068 | ||
|
|
f6e97bb284 | ||
|
|
6c8b998505 | ||
|
|
f9fab216e9 | ||
|
|
c308359f59 | ||
|
|
375d667144 | ||
|
|
84bd54ba40 | ||
|
|
73c36fe2d2 | ||
|
|
ec3e9efdaa | ||
|
|
d5c389b7dc | ||
|
|
7f233dcb15 | ||
|
|
6a2421c683 | ||
|
|
d66ca7b5cb | ||
|
|
5e38cbd69c | ||
|
|
b6d8dcb6e1 | ||
|
|
08ee1ab2e6 | ||
|
|
26edec5773 | ||
|
|
d72e06842f | ||
|
|
0a0da63ac7 | ||
|
|
873ec898d8 | ||
|
|
97a70d14a3 | ||
|
|
394fbebfa8 | ||
|
|
b79588c4a0 | ||
|
|
3b46e82625 | ||
|
|
dbaf1fcd43 | ||
|
|
4caf1271e4 | ||
|
|
6921943aff | ||
|
|
3ce90b8257 | ||
|
|
3866154b50 | ||
|
|
64ed2464cf | ||
|
|
e27780aee9 | ||
|
|
744e6e60c5 | ||
|
|
f70c1ff009 | ||
|
|
3a808fe7fd | ||
|
|
2ca169b3c4 | ||
|
|
098d486291 | ||
|
|
ec4fb70b80 | ||
|
|
2a82807be4 | ||
|
|
43ae868c69 | ||
|
|
1bc742aed1 | ||
|
|
6dc852774e | ||
|
|
7967ebed57 | ||
|
|
105b927397 | ||
|
|
9219f9d8ae | ||
|
|
f780e6f235 | ||
|
|
27670f4da6 | ||
|
|
e051743a3d | ||
|
|
fb03003b3a | ||
|
|
e52d0a3512 | ||
|
|
cba92a01b6 | ||
|
|
0a87364101 | ||
|
|
a89908540f | ||
|
|
c4e2dcafa4 | ||
|
|
0163984ea4 | ||
|
|
db3ce08cab | ||
|
|
1076959006 | ||
|
|
5127cbb22c | ||
|
|
9175b43542 | ||
|
|
562fec01d8 | ||
|
|
b8051c8fed | ||
|
|
4df66a4802 | ||
|
|
a2ff63daa5 | ||
|
|
7ce0f9682f | ||
|
|
3c6d0dc3e0 | ||
|
|
64a6fb2344 | ||
|
|
07734a5184 | ||
|
|
32d4994219 | ||
|
|
08d22d2f3c | ||
|
|
b7b0185baf | ||
|
|
7b0c13c121 | ||
|
|
a98ecc05af | ||
|
|
f7337c1a05 | ||
|
|
53e2cda4c8 | ||
|
|
8064914bb7 | ||
|
|
6bb2203f79 | ||
|
|
3d56817da1 | ||
|
|
31e3b9ff8b | ||
|
|
b2e32aaf58 | ||
|
|
699de9174e | ||
|
|
1dd9ec4d5a | ||
|
|
87d66ccf6c | ||
|
|
1134ff1075 | ||
|
|
178676ef8c | ||
|
|
94740155e5 | ||
|
|
9341afe764 | ||
|
|
7ce1e9b18d | ||
|
|
1821f60fb5 | ||
|
|
235d78565e | ||
|
|
db5880539b | ||
|
|
76f4d67f33 | ||
|
|
e59c57106c | ||
|
|
bb4c748bf1 | ||
|
|
92cb9c3807 | ||
|
|
1a4e99431b | ||
|
|
ec9d1ca57e | ||
|
|
71c9b98896 | ||
|
|
71bac8c60b | ||
|
|
7b0f7c2e5c | ||
|
|
ad67a6add5 | ||
|
|
1353723b58 | ||
|
|
f811c07454 | ||
|
|
bb85382824 | ||
|
|
3ed4a1ba20 | ||
|
|
c50da5d034 | ||
|
|
9b196ba68c | ||
|
|
df79fb19af | ||
|
|
f8bde5ab9b | ||
|
|
0cd37cbf7e | ||
|
|
d621e4201d | ||
|
|
82af1df3c3 | ||
|
|
ea8c2b8d69 | ||
|
|
8ddcb6c841 | ||
|
|
1681361aed | ||
|
|
6a6f98299d | ||
|
|
19ba272d62 | ||
|
|
2f8ceca2ef | ||
|
|
ba1baafca5 | ||
|
|
20a07494f6 | ||
|
|
c66477c690 | ||
|
|
5c612a186f | ||
|
|
943e556f43 | ||
|
|
4bf4f96f47 | ||
|
|
384cd2f605 | ||
|
|
425af46f98 | ||
|
|
c83ee04662 | ||
|
|
2054cd78da | ||
|
|
88982f98ff | ||
|
|
2ea0b839d3 | ||
|
|
afd83e59b8 | ||
|
|
7f84049538 | ||
|
|
98840c9c5f | ||
|
|
26cacfa247 | ||
|
|
4b2d27b5e5 | ||
|
|
69625946b1 | ||
|
|
f7fe9b0961 | ||
|
|
7fcd34eb36 | ||
|
|
1f5848ba82 | ||
|
|
bbd414bdcd | ||
|
|
a1737a28d0 | ||
|
|
66be42d1f8 | ||
|
|
c984c0f2c0 | ||
|
|
89d2bb7ecd | ||
|
|
9f8cad93f7 | ||
|
|
a207260fe0 | ||
|
|
1ef4a47255 | ||
|
|
b8aa68b4d1 | ||
|
|
61edbac6e5 | ||
|
|
d315133d34 | ||
|
|
82d59dbea8 | ||
|
|
42884e0871 | ||
|
|
7fb8b546f9 | ||
|
|
80fe1938b8 | ||
|
|
2409afae95 | ||
|
|
06705f9e88 | ||
|
|
2b408e71ac | ||
|
|
b097193486 | ||
|
|
543f2c91fe | ||
|
|
05c0088445 | ||
|
|
2f6f815d81 | ||
|
|
1e03fbe1a8 | ||
|
|
4409f11b24 | ||
|
|
7a216901be | ||
|
|
0e7c254b93 | ||
|
|
ba14850c9a | ||
|
|
59d3a21993 | ||
|
|
d2faa49bf4 | ||
|
|
438c0e27ea | ||
|
|
4c14372b4a | ||
|
|
8b4077d7de | ||
|
|
914b009361 | ||
|
|
b2a4b7eb88 | ||
|
|
daa50442c9 | ||
|
|
76fd7f47eb | ||
|
|
fbf840cb68 | ||
|
|
798a647b71 | ||
|
|
26a0b09064 | ||
|
|
98570b5da1 | ||
|
|
e923d7dafb | ||
|
|
64b6861880 | ||
|
|
c46e11cae2 | ||
|
|
82ccfa21e1 | ||
|
|
13f7fc1fd2 | ||
|
|
018cc14a87 | ||
|
|
3ce295a2af | ||
|
|
a30107ab86 | ||
|
|
d8df6968d3 | ||
|
|
0515c6acde | ||
|
|
607b44e01d | ||
|
|
5c0bae2070 | ||
|
|
4012e31115 | ||
|
|
2d8e9eda56 | ||
|
|
4375a0e07e | ||
|
|
a07cfb7abc | ||
|
|
c131d82699 | ||
|
|
de2dcbae5a | ||
|
|
b0000bb276 | ||
|
|
82789d5315 | ||
|
|
3df5882711 | ||
|
|
b6765b849c | ||
|
|
df94e5f164 | ||
|
|
79edc12c76 | ||
|
|
bd03151c2a | ||
|
|
7c0fdc7ecf | ||
|
|
b333ed91de | ||
|
|
6a073d5f86 | ||
|
|
c7159b2be4 | ||
|
|
2d98193c83 | ||
|
|
685756f9d5 | ||
|
|
535bb364b6 | ||
|
|
c740539f48 | ||
|
|
4cf331067b | ||
|
|
a3ba7683f4 | ||
|
|
5edfec68cf | ||
|
|
eb494f78fa | ||
|
|
d963941be0 | ||
|
|
8ab65fdde4 | ||
|
|
8e2c0bb977 | ||
|
|
f1f1064f70 | ||
|
|
88500e3714 | ||
|
|
eae2a4df8b | ||
|
|
ade8e95d2e | ||
|
|
a0b225b8b1 | ||
|
|
323e8756ba | ||
|
|
ada5428df7 | ||
|
|
7869c19245 | ||
|
|
5706b29c8c | ||
|
|
8ff7b2405f | ||
|
|
eaabe15863 | ||
|
|
63b2ae743b | ||
|
|
c5ea985a70 | ||
|
|
11b35b89f5 | ||
|
|
6d5b16725d | ||
|
|
c34897036e | ||
|
|
1e51af1d4b | ||
|
|
8ee6e26608 | ||
|
|
4d36f38f96 | ||
|
|
d31ca444e1 | ||
|
|
090b3014c0 | ||
|
|
491a322ceb | ||
|
|
12e16d532b | ||
|
|
7814a391d8 | ||
|
|
322151b0d5 | ||
|
|
4a136cafda | ||
|
|
d0df25d9e2 | ||
|
|
8d003dbc30 | ||
|
|
2c7358d64f | ||
|
|
94e260cec6 | ||
|
|
783ac3c105 | ||
|
|
d46e3f6778 | ||
|
|
6fe3158778 | ||
|
|
bbd12e33ec | ||
|
|
e4d55242d8 | ||
|
|
dedddcfcf5 | ||
|
|
613a78bcf6 | ||
|
|
f5decb1d7e | ||
|
|
47b4c236c3 | ||
|
|
39ccb2df0b | ||
|
|
5bfdffda11 | ||
|
|
247f8c8557 | ||
|
|
3ce449e167 | ||
|
|
663f9657ea | ||
|
|
457f951aaf | ||
|
|
feafd57027 | ||
|
|
5c0183c71e | ||
|
|
fb7d425244 | ||
|
|
3fab40efe5 | ||
|
|
0bbdbc9e63 | ||
|
|
9bc481ff62 | ||
|
|
32dea43d2e | ||
|
|
632da71a8d | ||
|
|
2ffab22185 | ||
|
|
5541327968 | ||
|
|
096eaa20d7 | ||
|
|
e5fe6b915e | ||
|
|
512bd84cc2 | ||
|
|
ebbcbeedd2 | ||
|
|
be17308e50 | ||
|
|
25fa29e6e1 | ||
|
|
bddc47f9b2 | ||
|
|
51948d7760 | ||
|
|
5817a30031 | ||
|
|
e216eb1e7b | ||
|
|
549c6afa0a | ||
|
|
6b08e6b809 | ||
|
|
0438fdde49 | ||
|
|
be4ea18119 | ||
|
|
a75d6531f2 | ||
|
|
da69ddc19b | ||
|
|
e92926e881 | ||
|
|
7dd208fb49 | ||
|
|
5305db689d | ||
|
|
2338c7a3b3 | ||
|
|
829bc96209 | ||
|
|
7454e16aae | ||
|
|
e4acad60e9 | ||
|
|
f35af1fb6d | ||
|
|
c0e008c601 | ||
|
|
9acf4458c0 | ||
|
|
70de264d4d | ||
|
|
1a0b9e4612 | ||
|
|
66dc70c057 | ||
|
|
6641f34d76 | ||
|
|
f3ae5d8160 | ||
|
|
d937541aa0 | ||
|
|
21707d7ff6 | ||
|
|
3002bc0eee | ||
|
|
df50232ed9 | ||
|
|
17d49067e9 | ||
|
|
9a2e023a51 | ||
|
|
9c747f3160 | ||
|
|
08ea71cb24 | ||
|
|
a96abe2422 | ||
|
|
84a4a888e6 | ||
|
|
e3299b546e | ||
|
|
f2e0f1b2f1 | ||
|
|
2a4456b9ca | ||
|
|
560a55bfd1 | ||
|
|
d32f0fad12 | ||
|
|
031e7d270d | ||
|
|
3b73a0e269 | ||
|
|
0bfcf79e79 | ||
|
|
bdd299dd9e | ||
|
|
f97e605bf6 | ||
|
|
db9ff76754 | ||
|
|
49f5495c45 | ||
|
|
9e431df848 | ||
|
|
12476c52a4 | ||
|
|
8fd9aebcb9 | ||
|
|
8c83f4ba3b | ||
|
|
25b6d1a232 | ||
|
|
880cbd88c2 | ||
|
|
dcd53c3c5b | ||
|
|
3e64b3da39 | ||
|
|
9a748c8bf1 | ||
|
|
53eae14763 | ||
|
|
074c42e8b6 | ||
|
|
8633fa7024 | ||
|
|
19668b9b48 | ||
|
|
3f02631b98 | ||
|
|
da46eefe2e | ||
|
|
a3ca3ed33f | ||
|
|
efaa33c4d5 | ||
|
|
0cdfe7f458 | ||
|
|
190eafc30e | ||
|
|
d4ee0e8622 | ||
|
|
96c90e6295 | ||
|
|
ff95da411b | ||
|
|
2ad411ea29 | ||
|
|
55cbcd728d | ||
|
|
8880860105 | ||
|
|
0c238448fd | ||
|
|
8a76fdc126 | ||
|
|
433f830cf3 | ||
|
|
8893bc102c | ||
|
|
0cf9927132 | ||
|
|
5993125cc7 | ||
|
|
0c34309133 | ||
|
|
3d6ce0fb76 | ||
|
|
54f79c2798 | ||
|
|
8bac1706a1 | ||
|
|
d0a3779091 | ||
|
|
ff0960b174 | ||
|
|
7032825e35 | ||
|
|
d118533d87 | ||
|
|
35f4f75733 | ||
|
|
ef61c3543f | ||
|
|
897560745a | ||
|
|
5a8539a122 | ||
|
|
d9292a70bf | ||
|
|
a9c23b7c28 | ||
|
|
2cc7289b7b | ||
|
|
81d6df925e | ||
|
|
263bfb1bda | ||
|
|
677e77d0ae | ||
|
|
0d0c1af7f7 | ||
|
|
fb55def54f | ||
|
|
eea86757d5 | ||
|
|
e7eb220c50 | ||
|
|
7d67005820 | ||
|
|
fadd91b6a2 | ||
|
|
5fa6a2848f | ||
|
|
7ab921669b | ||
|
|
4811dfa663 | ||
|
|
7a41a5249f | ||
|
|
f9e05d0cad | ||
|
|
15a63c4bc5 | ||
|
|
4a2e4d2b55 | ||
|
|
12033abe09 | ||
|
|
f9410d5d00 | ||
|
|
c232a32991 | ||
|
|
57f37939d5 | ||
|
|
432ff58107 | ||
|
|
2c7d6a7711 | ||
|
|
d31b051fc5 | ||
|
|
98405a39db | ||
|
|
0e354e5ea1 | ||
|
|
d172a97247 | ||
|
|
8a3df7e434 | ||
|
|
eafcbabaa2 | ||
|
|
14071ea119 | ||
|
|
6239686afa | ||
|
|
45186b70ec | ||
|
|
b4fead9606 | ||
|
|
61243b418e | ||
|
|
fe75660e88 | ||
|
|
946e6c1644 | ||
|
|
3eb232b3fc | ||
|
|
38de1c9a31 | ||
|
|
78dcb87a75 | ||
|
|
421e568232 | ||
|
|
4efd28c092 | ||
|
|
d0bbee7e8c | ||
|
|
7640563991 | ||
|
|
90cf85c3f0 | ||
|
|
f1a98693d0 | ||
|
|
2794d64d3e | ||
|
|
82743cca92 | ||
|
|
d0c348e595 | ||
|
|
f50d3088dc | ||
|
|
0917fa0d75 | ||
|
|
cfb73dd534 | ||
|
|
ef497b7989 | ||
|
|
9d9341901f | ||
|
|
155e3d225d | ||
|
|
ca41f100ab | ||
|
|
084285a760 | ||
|
|
982391cd7c | ||
|
|
d206d0a3ae | ||
|
|
627ea6c860 | ||
|
|
bcc76b3764 | ||
|
|
39692a8b3f | ||
|
|
eba8b4bf00 | ||
|
|
f149665660 | ||
|
|
e3bb64cf35 | ||
|
|
33f0669100 | ||
|
|
3a5f3e8b55 | ||
|
|
a0a90afbc0 | ||
|
|
2f96cb257c | ||
|
|
5910bec52e | ||
|
|
764b1c35cb | ||
|
|
ee8c9b764d | ||
|
|
7080f0c35a | ||
|
|
679d60cd5a | ||
|
|
bc36c0faed | ||
|
|
3c073bc360 | ||
|
|
c52d5e1084 | ||
|
|
b7bb27fa21 | ||
|
|
087aaa2f94 | ||
|
|
474b93a22f | ||
|
|
0c2f002a7d | ||
|
|
3d76d83a39 | ||
|
|
787015f537 | ||
|
|
fb624fddc4 | ||
|
|
605ddacb71 | ||
|
|
71934f05a8 | ||
|
|
534a0d6836 | ||
|
|
746b1d0c4d | ||
|
|
387c80e00a | ||
|
|
05c914691f | ||
|
|
94398d70f4 | ||
|
|
915ddb2b2b | ||
|
|
b916e7f7ef | ||
|
|
3cc30f91a9 | ||
|
|
f4a61b4c70 | ||
|
|
6eebd693ce | ||
|
|
7e78f5941a | ||
|
|
bc0ae6be31 | ||
|
|
c03119d10a | ||
|
|
e1879ef4d9 | ||
|
|
b6df727efb | ||
|
|
fe58b44916 | ||
|
|
0a2694811d | ||
|
|
31fe232bac | ||
|
|
682f6d273c | ||
|
|
83ddaccf4a | ||
|
|
e0c0584c59 | ||
|
|
60f5a52964 | ||
|
|
7e5866ce3f | ||
|
|
89b7b56a2c | ||
|
|
ae54b13d4b | ||
|
|
927ccc489c | ||
|
|
21f7722f10 | ||
|
|
e4afe603f9 | ||
|
|
30d15a1438 | ||
|
|
c84586dd66 | ||
|
|
e9f87c2026 | ||
|
|
afa27a3c2a | ||
|
|
ce6078ed94 | ||
|
|
82d1412d45 | ||
|
|
6d5949ba9c | ||
|
|
cdb165af7f | ||
|
|
88a3f8e4aa | ||
|
|
1c3dc757c3 | ||
|
|
25866095db | ||
|
|
b6c8d8e971 | ||
|
|
ab94b0b231 | ||
|
|
760bab8f86 | ||
|
|
817c332d11 | ||
|
|
05fbc8e6b0 | ||
|
|
c39301b6da | ||
|
|
add9a9db9b | ||
|
|
05123ea6f4 | ||
|
|
a8d328bfc9 | ||
|
|
d62ff34a5a | ||
|
|
a8b8d53d9d | ||
|
|
0d4ff5a916 | ||
|
|
8ace41d144 | ||
|
|
5bb7219f4b | ||
|
|
f0200ab697 | ||
|
|
f457a56d4a | ||
|
|
db086de84a | ||
|
|
37684c6af0 | ||
|
|
3c75d4f1dd | ||
|
|
b19276bb0f | ||
|
|
774d831fae | ||
|
|
a1b49d8389 | ||
|
|
12e2bfc794 | ||
|
|
6e5abade3c | ||
|
|
e4e3676095 | ||
|
|
3ed13150e1 | ||
|
|
f03e5c6bd1 | ||
|
|
8496c1cdd3 | ||
|
|
3c3851c221 | ||
|
|
05f1e9e3b8 | ||
|
|
249a1e6d8d | ||
|
|
e042e0ad32 | ||
|
|
5db15ca54c | ||
|
|
069b89b208 | ||
|
|
63014aeb6b | ||
|
|
31e21db5b5 | ||
|
|
7f21872510 | ||
|
|
27351c9a90 | ||
|
|
76b918d40e | ||
|
|
f5bc0b205c | ||
|
|
b3c253ea2a | ||
|
|
d17e031259 | ||
|
|
842363200b | ||
|
|
d9f9895b2b | ||
|
|
bc0edd4042 | ||
|
|
9b82e2df58 | ||
|
|
3d65341080 | ||
|
|
80215ea181 | ||
|
|
78d8526e41 | ||
|
|
0ddaabe377 | ||
|
|
20f9318597 | ||
|
|
9bc6ebde4e | ||
|
|
011f14d115 | ||
|
|
62a5cbb5ce | ||
|
|
5aaf87d612 | ||
|
|
96b31f3974 | ||
|
|
09e387bf09 | ||
|
|
05fe8792ea | ||
|
|
18ed45597a | ||
|
|
b646c84414 | ||
|
|
a200eaacaa | ||
|
|
f5ad553be3 | ||
|
|
7b7664bd66 | ||
|
|
4f4acc04fe | ||
|
|
dee0fec9e9 | ||
|
|
73cc2a140c | ||
|
|
6058a74da5 | ||
|
|
ab5e021bda | ||
|
|
bd3b652cfc | ||
|
|
73429fc720 | ||
|
|
10478a6b2f | ||
|
|
0fc9814004 | ||
|
|
e0bc01eea1 | ||
|
|
2af6d3f6bc | ||
|
|
cbe5438a31 | ||
|
|
67c4ad128c | ||
|
|
870eca0d9f | ||
|
|
d299458084 | ||
|
|
e0cf68f1d5 | ||
|
|
64906a1ba5 | ||
|
|
e75721016e | ||
|
|
e0d5b9daf8 | ||
|
|
5989844f1c | ||
|
|
14e3f413a2 | ||
|
|
a97d77064a | ||
|
|
3342dd4001 | ||
|
|
785b9811f3 | ||
|
|
643c77ded0 | ||
|
|
e617da3bbf | ||
|
|
76f01511a3 | ||
|
|
dd8727d3ae | ||
|
|
b933946f33 | ||
|
|
5d2f9d7a33 | ||
|
|
3baf14b793 | ||
|
|
c57e4ba508 | ||
|
|
98656289ea | ||
|
|
167a38e27d | ||
|
|
ba6806df5d | ||
|
|
fe12101278 | ||
|
|
d6d7f4e875 | ||
|
|
63caddea62 | ||
|
|
36b01fbdcf | ||
|
|
45a3d8b75a | ||
|
|
bca62c813d | ||
|
|
ae1cf74dcd | ||
|
|
577a8dd005 | ||
|
|
5900899c01 | ||
|
|
2dfc468094 | ||
|
|
98ffe9931d | ||
|
|
2004c0d739 | ||
|
|
cd7cb025ad | ||
|
|
96da267778 | ||
|
|
5816e410e9 | ||
|
|
31c98fc0db | ||
|
|
00bf957b53 | ||
|
|
5b999c2f7d | ||
|
|
1cc9d9c071 | ||
|
|
72fb8460e9 | ||
|
|
577156fe5f | ||
|
|
612cc96e41 | ||
|
|
da3f783a9f | ||
|
|
b1e8545981 | ||
|
|
6a2da6dc06 | ||
|
|
58603e2a5a | ||
|
|
d97184880c | ||
|
|
625f40cfa6 | ||
|
|
49049b8c12 | ||
|
|
037912ccab | ||
|
|
8b05b864fb | ||
|
|
319135c8fe | ||
|
|
61d9e418e8 | ||
|
|
475bb2845d | ||
|
|
42f39de0f9 | ||
|
|
3898b8e8ab | ||
|
|
b1fd005c95 | ||
|
|
cf8fdd3a70 | ||
|
|
cb754ee125 | ||
|
|
cea81df969 | ||
|
|
af1d5fce6e | ||
|
|
54b86b6131 | ||
|
|
ec2b83515b | ||
|
|
2f2724dff5 | ||
|
|
271fa26890 | ||
|
|
fe437da751 | ||
|
|
129876d1be | ||
|
|
f2ced67a8d | ||
|
|
787eec8be4 | ||
|
|
cc39eea999 | ||
|
|
cbfed99bc6 | ||
|
|
2b4cd8b2ec | ||
|
|
b5dc72b126 | ||
|
|
ab4d2faea3 | ||
|
|
1677817d9f | ||
|
|
03854baf53 | ||
|
|
61dc253de1 | ||
|
|
a0e8f410d1 | ||
|
|
2865f63c5d | ||
|
|
3f19ab1a87 | ||
|
|
d75fec0cee | ||
|
|
39570a9663 | ||
|
|
479c18e21f | ||
|
|
fd4453d85e | ||
|
|
7ee7f99780 | ||
|
|
4c0b8e3113 | ||
|
|
e0af60d8a7 | ||
|
|
afcb7f00da | ||
|
|
a59e9f024e | ||
|
|
e1b06bfce2 | ||
|
|
8de3f03b49 | ||
|
|
db8f018b42 | ||
|
|
59cb2132f2 | ||
|
|
25f62daf14 | ||
|
|
05b9dfbe30 | ||
|
|
3db4e2ee2f | ||
|
|
86a6a5b826 | ||
|
|
cc6338d048 | ||
|
|
57b65726d6 | ||
|
|
44a736c53b | ||
|
|
38cbd42d81 | ||
|
|
28d019f824 | ||
|
|
54b8e1be89 | ||
|
|
9778695b4a | ||
|
|
44b6285268 | ||
|
|
6c6fb2e287 | ||
|
|
ecdfde8c38 | ||
|
|
ea2d5b9d4a | ||
|
|
4670cc1a5f | ||
|
|
1e0522fe8f | ||
|
|
70858603ed | ||
|
|
3c508c1d27 | ||
|
|
5c44db341f | ||
|
|
cf73363016 | ||
|
|
351173e554 | ||
|
|
342432dc76 | ||
|
|
c4538cada7 | ||
|
|
de532bb2fc | ||
|
|
f525afa5de | ||
|
|
9fba470364 | ||
|
|
6cd5bf31c9 | ||
|
|
321c0a8537 | ||
|
|
b9bc58ef10 | ||
|
|
7bcf05fd19 | ||
|
|
f816bdf541 | ||
|
|
79472552aa | ||
|
|
c5e5c8288e | ||
|
|
fd1c7f7169 | ||
|
|
9212d67e2f | ||
|
|
f5c74d123a | ||
|
|
c8421efcd3 | ||
|
|
f382609d01 | ||
|
|
f9615c18a1 | ||
|
|
a74597c7cd | ||
|
|
d50fbac5f9 | ||
|
|
95086a75e6 | ||
|
|
073a96cf63 | ||
|
|
d3c64bd5b4 | ||
|
|
7024a7468a | ||
|
|
62e60e2ba6 | ||
|
|
fb3860757c | ||
|
|
e4a8b17522 | ||
|
|
448df1bb9c | ||
|
|
bf6900fb2a | ||
|
|
50552546f3 | ||
|
|
324fab8186 | ||
|
|
7ab80f01b5 | ||
|
|
9ce4a5c7b1 | ||
|
|
c9a0525a10 | ||
|
|
83465bb7f5 | ||
|
|
e8771fb36a | ||
|
|
d4d03f3d7f | ||
|
|
d567d667e8 | ||
|
|
3d55bbbc29 | ||
|
|
2f8e52f905 | ||
|
|
a5896ac6b6 | ||
|
|
94b9d5644c | ||
|
|
06e5fc233c | ||
|
|
aefb922a05 | ||
|
|
a22434fd73 | ||
|
|
c41846805d | ||
|
|
b7b45b69a6 | ||
|
|
ed5528664c | ||
|
|
fe88d3c225 | ||
|
|
aed4ee8694 | ||
|
|
817d9b0d3e | ||
|
|
df9cfe7840 | ||
|
|
8cd4578d83 | ||
|
|
9ca41b9536 | ||
|
|
559743c911 | ||
|
|
3a7f26f620 | ||
|
|
04a0eae241 | ||
|
|
0500d2fb6e | ||
|
|
31f1a9e5aa | ||
|
|
6387aae471 | ||
|
|
152082e182 | ||
|
|
08eb2b3df7 | ||
|
|
846ec87249 | ||
|
|
62690b5159 | ||
|
|
719c432ca8 | ||
|
|
e654616b6d | ||
|
|
f0473b0320 | ||
|
|
fcc627e6e1 | ||
|
|
fe17802cd2 | ||
|
|
384c05ccc7 | ||
|
|
193e4f3275 | ||
|
|
6fd87568e7 | ||
|
|
484fd68495 | ||
|
|
792be54443 | ||
|
|
00df102c29 | ||
|
|
90e68ddd73 | ||
|
|
df27f4f118 | ||
|
|
bee26daf0c | ||
|
|
b76c738785 | ||
|
|
8ca9fb0251 | ||
|
|
3b26a656f7 | ||
|
|
2f5ac5d993 | ||
|
|
a2fc9a964b | ||
|
|
b8a267370d | ||
|
|
fa3d011f68 | ||
|
|
a7fc9caacb | ||
|
|
c284f6dcd4 | ||
|
|
368d59c3ca | ||
|
|
94ee82e076 | ||
|
|
bfefb6e696 | ||
|
|
95b7601e2b | ||
|
|
f9c8bd868c | ||
|
|
a773973b1b | ||
|
|
a60006366b | ||
|
|
a66bb7889a | ||
|
|
adfba06e85 | ||
|
|
6ee4e954f6 | ||
|
|
a11d139ff6 | ||
|
|
85a3e66314 | ||
|
|
1a3958ed60 | ||
|
|
743c957918 | ||
|
|
224a6c192b | ||
|
|
ae47da3801 | ||
|
|
a6d669453f | ||
|
|
0beab9eec4 | ||
|
|
aa997f1be5 | ||
|
|
4eb58a70bb | ||
|
|
5b31d0aa36 | ||
|
|
79e7c44884 | ||
|
|
1382c1243a | ||
|
|
8f2fd9b603 | ||
|
|
d625b65a09 | ||
|
|
101e9be7b9 | ||
|
|
9f93d8f533 | ||
|
|
6050a59e4a | ||
|
|
e5b7e29113 | ||
|
|
ecdd0ce9f2 | ||
|
|
fc5c598f8f | ||
|
|
18ebed3c5d | ||
|
|
822e319efe | ||
|
|
6d462fc961 | ||
|
|
4b71c65aea | ||
|
|
34ab53173d | ||
|
|
d6be6f79ce | ||
|
|
87d36f06fd | ||
|
|
3eb05b4505 | ||
|
|
0789c6a3d8 | ||
|
|
b587f076fe | ||
|
|
a5a7217c8f | ||
|
|
c0cf55b40b | ||
|
|
9200ed2216 | ||
|
|
e1f7dd1372 | ||
|
|
32833b7301 | ||
|
|
3302c89284 | ||
|
|
e18d61b31a | ||
|
|
61cd1ae525 | ||
|
|
064608a8ef | ||
|
|
5a840c88b5 | ||
|
|
b14c3fe48d | ||
|
|
4874d55d03 | ||
|
|
b20e40dd6f | ||
|
|
bc28a08dd0 | ||
|
|
0d3010f6fc | ||
|
|
399a651fa3 | ||
|
|
30ac5fcb5e | ||
|
|
92cb5e10be | ||
|
|
10faa47495 | ||
|
|
f0bbf2cab0 | ||
|
|
338e8be327 | ||
|
|
a4726a0e0d | ||
|
|
d4a366aeb1 | ||
|
|
98652997f9 | ||
|
|
f5a39c2f7b | ||
|
|
9854db0a63 | ||
|
|
cc7b0f4623 | ||
|
|
549e6d57c4 | ||
|
|
dea322e2c5 | ||
|
|
ed5b9c2b56 | ||
|
|
c31ca4af90 | ||
|
|
2c9ec4bee8 | ||
|
|
6dcfc36a4a | ||
|
|
76579a3004 | ||
|
|
1d68692bb6 | ||
|
|
790af0fd72 | ||
|
|
39008372e5 | ||
|
|
1026952f26 | ||
|
|
9631927a8c | ||
|
|
b0e6ce581a | ||
|
|
e575323c60 | ||
|
|
809ac3340c | ||
|
|
f0af638874 | ||
|
|
b49148ec54 | ||
|
|
c7f5e77b3f | ||
|
|
817248369a | ||
|
|
654698b208 | ||
|
|
4e5bfae332 | ||
|
|
895a9093aa | ||
|
|
35121f0b78 | ||
|
|
c4a7574f7b | ||
|
|
4ee636ecca | ||
|
|
662dc12877 | ||
|
|
3cc8af819c | ||
|
|
fcf4a958c3 | ||
|
|
65676c22f9 | ||
|
|
3e907d7f4f | ||
|
|
9fa567aa78 | ||
|
|
237ebb0716 | ||
|
|
fdea260e41 | ||
|
|
9af77dc835 | ||
|
|
d4aacd218a | ||
|
|
326a566db2 | ||
|
|
84257dac2b | ||
|
|
22ad9e1e1a | ||
|
|
cc44f5f75d | ||
|
|
23df5cc201 | ||
|
|
dab2d5db44 | ||
|
|
1717c5c00d | ||
|
|
ea3f82ccc2 | ||
|
|
fd6ce470e7 | ||
|
|
6d3fbbe256 | ||
|
|
45c4de16d2 | ||
|
|
92b0efff5a | ||
|
|
bc550c3265 | ||
|
|
b39aa5d359 | ||
|
|
f8f8bd95ca | ||
|
|
d057b77dc5 | ||
|
|
27d637195d | ||
|
|
46919ce797 | ||
|
|
b4e1ce59f9 | ||
|
|
7af77d3eb0 | ||
|
|
de1ff52de3 | ||
|
|
69c1df68c8 | ||
|
|
62431fee8e | ||
|
|
357201869a | ||
|
|
a88e8ffe79 | ||
|
|
5c88f43e15 | ||
|
|
2f7ab3e32d | ||
|
|
3ec05bb5d8 | ||
|
|
59890f2c83 | ||
|
|
2c70162bee | ||
|
|
2f1a4042bf | ||
|
|
4af7740907 | ||
|
|
f64ea361d4 | ||
|
|
9c850d152c | ||
|
|
71266c0220 | ||
|
|
0801457ff0 | ||
|
|
ba7c9ceccc | ||
|
|
f6f2818a02 | ||
|
|
b05a3b7aed | ||
|
|
3fe94891d3 | ||
|
|
9d11028fce | ||
|
|
f6b81f588d | ||
|
|
513007a82c | ||
|
|
bf18a90da7 | ||
|
|
2ddd53b355 | ||
|
|
c9aef16649 | ||
|
|
6a77e0fe56 | ||
|
|
0a725415a4 | ||
|
|
af0d9439d4 | ||
|
|
65f09d0528 | ||
|
|
48e6695447 | ||
|
|
e3604c1662 | ||
|
|
5913d654bd | ||
|
|
f3fe9661f6 | ||
|
|
17cfd7b001 | ||
|
|
e941bdd945 | ||
|
|
e7e8773cd4 | ||
|
|
ebc750d5bf | ||
|
|
3507fe6d5b | ||
|
|
f9ef6491e6 | ||
|
|
61e487224f | ||
|
|
85eb82acb2 | ||
|
|
4d364ea261 | ||
|
|
577528bb9c | ||
|
|
d49f2c40ae | ||
|
|
706bfafe74 | ||
|
|
1b8204dabe | ||
|
|
05cabded02 | ||
|
|
1578402cbe | ||
|
|
49ee56b22c | ||
|
|
8c7f0902c0 | ||
|
|
056ef9ccd1 | ||
|
|
dfc635b451 | ||
|
|
68321362c5 | ||
|
|
f7560036b8 | ||
|
|
fc87caa348 | ||
|
|
6e0aef5f2b | ||
|
|
127b3e7d60 | ||
|
|
9740199870 | ||
|
|
06be580d2c | ||
|
|
6540343f45 | ||
|
|
447b305e3c | ||
|
|
0c53d276f8 | ||
|
|
83c37c6a7a | ||
|
|
ac52ad88a1 | ||
|
|
84a1b5612d | ||
|
|
fa4e694859 | ||
|
|
f8c628b0c7 | ||
|
|
2f35e4789c | ||
|
|
253bada643 | ||
|
|
e4fe497504 | ||
|
|
5c9bde203e | ||
|
|
d9907f227e | ||
|
|
08b08ef1d0 | ||
|
|
334ef5c3eb | ||
|
|
ac925aa226 | ||
|
|
86f17fb466 | ||
|
|
6aafda4517 | ||
|
|
8267950dbc | ||
|
|
56d1b0103f | ||
|
|
1ff34bd0f4 | ||
|
|
b86248f13f | ||
|
|
427a29145d | ||
|
|
974575b695 | ||
|
|
60b1fdd367 | ||
|
|
842f2ea5cc | ||
|
|
ae220c37df | ||
|
|
6f57f52ac2 | ||
|
|
4897513d7d | ||
|
|
c8dad01137 | ||
|
|
5a09063adb | ||
|
|
9de9bf651b | ||
|
|
09d80b1e50 | ||
|
|
2b793f372a | ||
|
|
4cfeb6b8ac | ||
|
|
9373451ca8 | ||
|
|
15c199d5a2 | ||
|
|
cde85243d6 | ||
|
|
c579db1a7b | ||
|
|
61fa34e2ce | ||
|
|
96febf6639 | ||
|
|
09e59cf677 | ||
|
|
9119ee14b6 | ||
|
|
2ac2ae3eee | ||
|
|
a682b5d90e | ||
|
|
e26c0c58ae | ||
|
|
187fa71526 | ||
|
|
031f97e97c | ||
|
|
b9e1c3c34f | ||
|
|
1a35107a1d | ||
|
|
d3e086c850 | ||
|
|
4a0c8d72b0 | ||
|
|
ab9cfd293b | ||
|
|
cc840a6911 | ||
|
|
5456187dd0 | ||
|
|
73c95c328d | ||
|
|
4a971be168 | ||
|
|
f657a3d811 | ||
|
|
b39f75a2e3 | ||
|
|
1dad14f8ea | ||
|
|
5cc2e8de7b | ||
|
|
d0abc60176 | ||
|
|
130e83d9b2 | ||
|
|
ed8acdb11c | ||
|
|
26370da13d | ||
|
|
c4a2f70017 | ||
|
|
a5d315ee2a | ||
|
|
4fa57f55e6 | ||
|
|
2c496a92ad | ||
|
|
4ca8903a21 | ||
|
|
d460c0e8b9 | ||
|
|
11b6d290da | ||
|
|
d83902834f | ||
|
|
0fdf32cf6f | ||
|
|
f4ebbfabf4 | ||
|
|
b5bcfc8fe7 | ||
|
|
d13c08cc0d | ||
|
|
89abd76570 | ||
|
|
8c1ae35088 | ||
|
|
bb74789b42 | ||
|
|
dbbd32d2ce | ||
|
|
80285a300d | ||
|
|
2eb5819851 | ||
|
|
e748e1891b | ||
|
|
28bb11217c | ||
|
|
636dae6a79 | ||
|
|
c8f65a1bf9 | ||
|
|
ce177ae6f6 | ||
|
|
c79f3501cd | ||
|
|
80114edc71 | ||
|
|
71483e2865 | ||
|
|
93087324d9 | ||
|
|
061facdcce | ||
|
|
3e6e7fb272 | ||
|
|
12d8c2398f | ||
|
|
bb73963421 | ||
|
|
1dd7688bdd | ||
|
|
5735095521 | ||
|
|
fa7570352c | ||
|
|
f378406d15 | ||
|
|
68fa7ae2a3 | ||
|
|
9b1015bbce | ||
|
|
a4c821eb60 | ||
|
|
c70540e7f4 | ||
|
|
e291146443 | ||
|
|
faa2b6237f | ||
|
|
26661f3091 | ||
|
|
e6e8d49d72 | ||
|
|
b9ca055586 | ||
|
|
9ce7be050a | ||
|
|
1d2617c826 | ||
|
|
7c8e9ddc42 | ||
|
|
157764c0d9 | ||
|
|
317ff81744 | ||
|
|
bd7fc780cb | ||
|
|
4b343d9dcf | ||
|
|
7a6a5d7595 | ||
|
|
85020c74cf | ||
|
|
0137c0da8c | ||
|
|
407731ab16 | ||
|
|
72503c0689 | ||
|
|
e9e570db4f | ||
|
|
5bc83fceaa | ||
|
|
e7fd501200 | ||
|
|
ea0067d999 | ||
|
|
ec49ca6480 | ||
|
|
a26cc7c14d | ||
|
|
c9d3041460 | ||
|
|
943b7d39c6 | ||
|
|
6b1a911604 | ||
|
|
3d4e03f2cd | ||
|
|
48b0b54819 | ||
|
|
00515eb6f9 | ||
|
|
63e7391981 | ||
|
|
b6776f53ab | ||
|
|
6a0cda7396 | ||
|
|
09692dc70e | ||
|
|
e0482f5400 | ||
|
|
c787dc7356 | ||
|
|
ea948ac2c8 | ||
|
|
d6e321e97f | ||
|
|
807250510a | ||
|
|
ef1e974346 | ||
|
|
55d1228abb | ||
|
|
9e76d2ca63 | ||
|
|
d53915e7e3 | ||
|
|
7fab782907 | ||
|
|
cf7967e629 | ||
|
|
0eacbac8f6 | ||
|
|
cec76c33b6 | ||
|
|
18dcf98998 | ||
|
|
251218af8b | ||
|
|
e2cbe42ed0 | ||
|
|
c06ed58582 | ||
|
|
78623ae3bd | ||
|
|
4de6221825 | ||
|
|
136c6d01b3 | ||
|
|
22f3f57f44 | ||
|
|
b2f362225c | ||
|
|
40ed59ce28 | ||
|
|
839db68571 | ||
|
|
fec6ac3ff0 | ||
|
|
45fa26dc6c | ||
|
|
f49d432fdc | ||
|
|
1a31ceff8e | ||
|
|
cc486cb86d | ||
|
|
7a45a579c0 | ||
|
|
dc58d539c2 | ||
|
|
2ba78eb740 | ||
|
|
f43b275f16 | ||
|
|
509a81a572 | ||
|
|
184232ba4f | ||
|
|
9e0471bfbb | ||
|
|
0bc338ba42 | ||
|
|
406e91d387 | ||
|
|
473acafd14 | ||
|
|
7474e6b1c9 | ||
|
|
323955277c | ||
|
|
03b5b09122 | ||
|
|
fe00c06d4b | ||
|
|
ca08dd9705 | ||
|
|
b3e53b609b | ||
|
|
fdeab0475c | ||
|
|
f86cc0dc7a | ||
|
|
0457c959dd | ||
|
|
c520b7f1fb | ||
|
|
5422bf5733 | ||
|
|
a703160226 | ||
|
|
d0905eda49 | ||
|
|
da60008048 | ||
|
|
7c023233f2 | ||
|
|
1e7003a307 | ||
|
|
8cb074657d | ||
|
|
5f72b86ce4 | ||
|
|
09d33792f3 | ||
|
|
a6773b85d2 | ||
|
|
5f678acf46 | ||
|
|
76f9ad0705 | ||
|
|
478f6ed011 | ||
|
|
c94d1b2275 | ||
|
|
7d60356fac | ||
|
|
58fa35641d | ||
|
|
b74957acdf | ||
|
|
6aed4fb1ae | ||
|
|
ad8e12eeae | ||
|
|
31763a018c | ||
|
|
bc20f8a004 | ||
|
|
3f6876c419 | ||
|
|
fb9c774558 | ||
|
|
7df9393d29 | ||
|
|
c6439def2c | ||
|
|
273d3445e4 | ||
|
|
bc3dc52377 | ||
|
|
ef1d484d9e | ||
|
|
63cd5a6296 | ||
|
|
657dc785ea | ||
|
|
461e74d8be | ||
|
|
a7daea1728 | ||
|
|
c4416f9696 | ||
|
|
f9ad34170d | ||
|
|
45f2a8ad06 | ||
|
|
3dad802c90 | ||
|
|
735166f06c | ||
|
|
042df52e5c | ||
|
|
294a65f842 | ||
|
|
bf8550ae1e | ||
|
|
91549ef28c | ||
|
|
95956eff64 | ||
|
|
bcae71dfa4 | ||
|
|
d370296e82 | ||
|
|
f42f608f3f | ||
|
|
f78b5741c3 | ||
|
|
733fe5b335 | ||
|
|
c093aab350 | ||
|
|
44f17c1706 | ||
|
|
8302e1687a | ||
|
|
7ad4380653 | ||
|
|
bea185ce8b | ||
|
|
5a73b8a8e6 | ||
|
|
da62a0af3b | ||
|
|
1137abfd33 | ||
|
|
e972ed8456 | ||
|
|
2e1c2d9dfe | ||
|
|
83dd333eba | ||
|
|
f854f3ee2b | ||
|
|
1055ca6d44 | ||
|
|
a5fea3b9c3 | ||
|
|
62f1430a2c | ||
|
|
1dec6a442e | ||
|
|
97831e3702 | ||
|
|
7eb9444458 | ||
|
|
ebc296ea31 | ||
|
|
75d24dea0e | ||
|
|
a6f72de09d | ||
|
|
96037aed52 | ||
|
|
f9d80adaee | ||
|
|
422e5a19d4 | ||
|
|
3d58b38e4e | ||
|
|
0a044199a1 | ||
|
|
cd5f00ac4d | ||
|
|
23c4027c83 | ||
|
|
eeb08b7fae | ||
|
|
20beb2bdb6 | ||
|
|
c6882d0bd8 | ||
|
|
ce47e83939 | ||
|
|
832e1e2cf7 | ||
|
|
6d61616492 | ||
|
|
d5304fb5bd | ||
|
|
13a61db289 | ||
|
|
93b74cc766 | ||
|
|
28e83c21e2 | ||
|
|
33ed5cd437 | ||
|
|
37c8e21f25 | ||
|
|
7b726650e9 | ||
|
|
d3adb48c2e | ||
|
|
9838124abc | ||
|
|
4df847c349 | ||
|
|
f9d2689a12 | ||
|
|
c64ad1af28 | ||
|
|
e83b056bd4 | ||
|
|
eba6dcc497 | ||
|
|
017b5a23d8 | ||
|
|
c7a147f49d | ||
|
|
f84a466d16 | ||
|
|
382a805c7e | ||
|
|
0b38e575d6 | ||
|
|
209266dbed | ||
|
|
20f6d8d3d0 | ||
|
|
09b26645ee | ||
|
|
9f2258ebd9 | ||
|
|
9744b1906a | ||
|
|
71e2ee62e4 | ||
|
|
6c8ee4d55d | ||
|
|
5198c56db9 | ||
|
|
f94d4b492d | ||
|
|
e01a4fcbb4 | ||
|
|
5ed9b8b1dc | ||
|
|
17f3d5f6ba | ||
|
|
607d738342 | ||
|
|
1b102f9ed3 | ||
|
|
6c38481550 | ||
|
|
9cbd151658 | ||
|
|
419b670aa3 | ||
|
|
a44874d2eb | ||
|
|
e9d70b7b1e | ||
|
|
73c6f11c9c | ||
|
|
7e7364fc83 | ||
|
|
a9c5488620 | ||
|
|
906af858a5 | ||
|
|
b699a61f56 | ||
|
|
8eabc49e9d | ||
|
|
9e67e12732 | ||
|
|
2d30183d65 | ||
|
|
fcb0a05880 | ||
|
|
fad7dc9f04 | ||
|
|
7c1e05d33c | ||
|
|
02147f546e | ||
|
|
3d51bc1ada | ||
|
|
95df4433dc | ||
|
|
0f1589a43f | ||
|
|
27262c4e56 | ||
|
|
c9b8f2a397 | ||
|
|
72b2a1c66f | ||
|
|
395d060427 | ||
|
|
bbf088d903 | ||
|
|
69a6166b6a | ||
|
|
bf87b1a6af | ||
|
|
2e8a5602b2 | ||
|
|
0ec1c4ad6d | ||
|
|
15a3a8c62f | ||
|
|
f001181e39 | ||
|
|
2c659d3d82 | ||
|
|
5ffff7397e | ||
|
|
1a36459ab8 | ||
|
|
33cc79c13b | ||
|
|
b4cb21b55e | ||
|
|
ae68c3abe4 | ||
|
|
939e2c70c4 | ||
|
|
14b29172b1 | ||
|
|
58794fc8e9 | ||
|
|
91fdd6fc29 | ||
|
|
8dd9124863 | ||
|
|
3fc99dbad5 | ||
|
|
01dd84dced | ||
|
|
6b92ef733c | ||
|
|
fe0f4ae257 | ||
|
|
cf9555debc | ||
|
|
528008b1a9 | ||
|
|
5e3576ed69 | ||
|
|
c84be8ddb3 | ||
|
|
853b5e1b72 | ||
|
|
3355a39fe0 | ||
|
|
28ee9e247e | ||
|
|
a054b485d0 | ||
|
|
3585326d7e | ||
|
|
a6046af024 | ||
|
|
adaff92c92 | ||
|
|
0499541e11 | ||
|
|
f08738e133 | ||
|
|
0cb357a0e9 | ||
|
|
668dcb7cf0 | ||
|
|
1fbdc14734 | ||
|
|
3e683162e9 | ||
|
|
8e7937bdb6 | ||
|
|
b36587fac8 | ||
|
|
3a1f9d01e8 | ||
|
|
b5c4b81aac | ||
|
|
c849c8ef08 | ||
|
|
bbb3d5bb67 | ||
|
|
1131d66b3d | ||
|
|
63ad2ebf0b | ||
|
|
7104ae4752 | ||
|
|
2403323463 | ||
|
|
feb7dfffa1 | ||
|
|
005e633e2a | ||
|
|
127fe971e9 | ||
|
|
3c4bde6ea1 | ||
|
|
dc19690863 | ||
|
|
e4f8ea2f7c | ||
|
|
599d34f1c0 | ||
|
|
31411dd11b | ||
|
|
b7781108ae | ||
|
|
35ca7d1826 | ||
|
|
9ddec32260 | ||
|
|
185e7d43fb | ||
|
|
0e0a46f373 | ||
|
|
732202fe8e | ||
|
|
47604384d4 | ||
|
|
e1cab78c09 | ||
|
|
9dc4ec6fb5 | ||
|
|
c69984e309 | ||
|
|
0baaf1767b | ||
|
|
eab76c5819 | ||
|
|
ebd6f7ace0 | ||
|
|
a6d5cd4b39 | ||
|
|
4c5a632095 | ||
|
|
b8c611de2b | ||
|
|
870693b968 | ||
|
|
b24b98a365 | ||
|
|
fd041e2997 | ||
|
|
9c827a0298 | ||
|
|
766aeaa9e1 | ||
|
|
27a44f0e77 | ||
|
|
567768c66a | ||
|
|
deaa5f3211 | ||
|
|
5682cd0048 | ||
|
|
11f1ccf3ff | ||
|
|
2896110d4d | ||
|
|
d05b175e04 | ||
|
|
10a379077c | ||
|
|
ffd9b79100 | ||
|
|
04c07d9006 | ||
|
|
a3cc5c1dd7 | ||
|
|
941342cc24 | ||
|
|
cc471dd127 | ||
|
|
432b064601 | ||
|
|
a8a0a5cbfb | ||
|
|
32e77753b5 | ||
|
|
f427a736a3 | ||
|
|
afb02b8bd1 | ||
|
|
48b44342ab | ||
|
|
1f968fa4fd | ||
|
|
ebf5077e1a | ||
|
|
7d26b96d42 | ||
|
|
08208acf53 | ||
|
|
9b535e3cec | ||
|
|
9656895726 | ||
|
|
121b6949a1 | ||
|
|
fb31c49317 | ||
|
|
e51f9b3593 | ||
|
|
46653a0268 | ||
|
|
fcef1819b1 | ||
|
|
3335fc7baf | ||
|
|
63abf34664 | ||
|
|
120ca5b1ec | ||
|
|
1c94ab7cc3 | ||
|
|
aa3be51980 | ||
|
|
fe6c77cafb | ||
|
|
67117913dd | ||
|
|
e532f2c165 | ||
|
|
a0c7da95c2 | ||
|
|
95dbc0f5bc | ||
|
|
ab13ce96cc | ||
|
|
ac0c35424b | ||
|
|
41242a6660 | ||
|
|
e80f203efc | ||
|
|
dbd65cdb04 | ||
|
|
e4dd33a675 | ||
|
|
0e3544e1f9 | ||
|
|
f4589b5bd4 | ||
|
|
3b7068e8d0 | ||
|
|
2a8fc705c7 | ||
|
|
c19fb1dffc | ||
|
|
436a6605fb | ||
|
|
84eddc3d94 | ||
|
|
dfe6b2844b | ||
|
|
6be5fe928e | ||
|
|
167654c9a0 | ||
|
|
6d6179fb2c | ||
|
|
80d06d358a | ||
|
|
1cace49b74 | ||
|
|
7ab5442163 | ||
|
|
4d42f64fa3 | ||
|
|
8d83243378 | ||
|
|
e1a74b6bdd | ||
|
|
44919c353e | ||
|
|
cf8523da5f | ||
|
|
10707ebc3a | ||
|
|
8374a51e6a | ||
|
|
4e48de1116 | ||
|
|
b3b29f527e | ||
|
|
37cfeed0f5 | ||
|
|
cb27fe17cd | ||
|
|
682ab76ba1 | ||
|
|
c811b710eb | ||
|
|
d0930b9048 | ||
|
|
591645758a | ||
|
|
4e093369f6 | ||
|
|
be8e8791b7 | ||
|
|
b13a2e71ad | ||
|
|
28678214d2 | ||
|
|
f75d03c9ae | ||
|
|
51508a732d | ||
|
|
326d8d3976 | ||
|
|
f559a5510b | ||
|
|
bf8b123dfc | ||
|
|
32a7442845 | ||
|
|
a0dfdefd16 | ||
|
|
e7b0c24d9d | ||
|
|
1707f1940d | ||
|
|
5dd708aae8 | ||
|
|
2477ea2fcf | ||
|
|
9b624a884b | ||
|
|
bc7672652e | ||
|
|
cc77f8489e | ||
|
|
564ddff4c7 | ||
|
|
023ea94f07 | ||
|
|
adad76eca6 | ||
|
|
772bb65237 | ||
|
|
d72a731865 | ||
|
|
f35fe56d9b | ||
|
|
1ab70f130d | ||
|
|
86f79949ea | ||
|
|
219d6c294d | ||
|
|
78d81f193f | ||
|
|
b9e0cd4512 | ||
|
|
f9d4966000 | ||
|
|
ad2289935d | ||
|
|
fd47b3fac5 | ||
|
|
84d836f22b | ||
|
|
5d05a2da74 | ||
|
|
2f639b77bb | ||
|
|
8b5b371821 | ||
|
|
0c74a3bc66 | ||
|
|
75f77f3e86 | ||
|
|
7a66da5a51 | ||
|
|
3541f5e1da | ||
|
|
8f809e3a29 | ||
|
|
3f76985435 | ||
|
|
751f9b9240 | ||
|
|
1efba5979f | ||
|
|
bf3c4f4743 | ||
|
|
aeb0742434 | ||
|
|
e98b4ea26d | ||
|
|
1729cfaea9 | ||
|
|
56ade9c44e | ||
|
|
6db0b2e398 | ||
|
|
2bd1ddd129 | ||
|
|
20a37bdd1d | ||
|
|
234447cb3d | ||
|
|
97232145a4 | ||
|
|
056ec6d2b3 | ||
|
|
2c44c7ea83 | ||
|
|
9cc1956b4b | ||
|
|
a35138e2b9 | ||
|
|
49f6c20b20 | ||
|
|
6bfc02d79d | ||
|
|
7b166837d3 | ||
|
|
3ff8a319c5 | ||
|
|
cd8f8e1e4a | ||
|
|
ed43d8d08b | ||
|
|
ca786cdd11 | ||
|
|
3e659f0de8 | ||
|
|
795a357595 | ||
|
|
5737365b2d | ||
|
|
8dff54de42 | ||
|
|
c1b8a7fbb7 | ||
|
|
6f3c6f7599 | ||
|
|
246eca91aa | ||
|
|
5fd378e4ce | ||
|
|
382f24c556 | ||
|
|
0773fcf66f | ||
|
|
650a24ba87 | ||
|
|
d2be2ee6cd | ||
|
|
7d63c5d982 | ||
|
|
a4f294c090 | ||
|
|
58c5e800d0 | ||
|
|
6d7097eed5 | ||
|
|
55da59a537 | ||
|
|
012ee310a4 | ||
|
|
1e07fcacac | ||
|
|
69ab913bc6 | ||
|
|
83a63f64b1 | ||
|
|
8f7e67367a | ||
|
|
0dad3fecb6 | ||
|
|
09b99bbf8b | ||
|
|
92e112dc63 | ||
|
|
6f5a84703e | ||
|
|
c0de35e71c | ||
|
|
f7dd6f7a7e | ||
|
|
655c1eb90f | ||
|
|
af6885db81 | ||
|
|
78e216d157 | ||
|
|
61726d84ac | ||
|
|
60d3bed393 | ||
|
|
3133ca0081 | ||
|
|
0f720223a9 | ||
|
|
6bb93b8170 | ||
|
|
d0f32d1865 | ||
|
|
2fe4e380d1 | ||
|
|
a7f4701698 | ||
|
|
f12e4f8889 | ||
|
|
df99a360fb | ||
|
|
4c76ad072a | ||
|
|
edf837ed62 | ||
|
|
7201a74aea | ||
|
|
9e2f8bead9 | ||
|
|
942867179c | ||
|
|
6b897f6fd2 | ||
|
|
389f1cde51 | ||
|
|
1ad31ab007 | ||
|
|
914db52c4d | ||
|
|
fe51ec906e | ||
|
|
85551f4994 | ||
|
|
fc1cfcceca | ||
|
|
6b4d4b9246 | ||
|
|
b06ba55be3 | ||
|
|
d08bfbf705 | ||
|
|
a10e466fed | ||
|
|
35bb010c35 | ||
|
|
0046a0762c | ||
|
|
c453012a8e | ||
|
|
1f82c7eadf | ||
|
|
b6fb8dbb52 | ||
|
|
30256cbe51 | ||
|
|
7f46e9af2c | ||
|
|
417cec9e04 | ||
|
|
62a55c0135 | ||
|
|
72336eb393 | ||
|
|
12d8c0b6af | ||
|
|
5c232b6a8d | ||
|
|
f6fd4281a4 | ||
|
|
4bee63afc6 | ||
|
|
d186f6148b | ||
|
|
2b15c03b9a | ||
|
|
60d879e045 | ||
|
|
858d1768ce | ||
|
|
fc2b7f747b | ||
|
|
207019c7f3 | ||
|
|
b264bbea84 | ||
|
|
32efb3e280 | ||
|
|
1a0d68d49a | ||
|
|
7dd3b2d38b | ||
|
|
4bc65faf1a | ||
|
|
8634551f53 | ||
|
|
089663ccc1 | ||
|
|
d1d26f8bf6 | ||
|
|
1ca86730fa | ||
|
|
12ae7c009d | ||
|
|
51b2fce8c1 | ||
|
|
62fcb51e1a | ||
|
|
cbc55f2ef8 | ||
|
|
679f828e4e | ||
|
|
4a8b4e7398 | ||
|
|
b6a11ca31e | ||
|
|
a30ccf2b25 | ||
|
|
2574405699 | ||
|
|
3ba78553f0 | ||
|
|
4d485fc424 | ||
|
|
85f28ade86 | ||
|
|
f6f2991a44 | ||
|
|
4ea222bbff | ||
|
|
f9f5e04b41 | ||
|
|
ea6706a2af | ||
|
|
64c5c5eb40 | ||
|
|
823f2db09f | ||
|
|
a71e511f82 | ||
|
|
39c0064ffb | ||
|
|
12d5c35d14 | ||
|
|
1a161cc02e | ||
|
|
96f19ba8da | ||
|
|
a63dfb7995 | ||
|
|
97ea1e300a | ||
|
|
d87d93dfac | ||
|
|
3ffcb03d87 | ||
|
|
33b08b90a3 | ||
|
|
cbca2061f7 | ||
|
|
bf4873e519 | ||
|
|
8fc1b38ff2 | ||
|
|
7d957538b4 | ||
|
|
7a8edb5018 | ||
|
|
2193d9ae6e | ||
|
|
79d01fe2d7 | ||
|
|
0d02037a12 | ||
|
|
d263f7783f | ||
|
|
d8ef76fd5e | ||
|
|
bc3c7a30c4 | ||
|
|
7b318b3cc2 | ||
|
|
e5cf41b313 | ||
|
|
74012ad584 | ||
|
|
06b4f007f8 | ||
|
|
a9cf425410 | ||
|
|
5355da6cad | ||
|
|
38f7c4a0d2 | ||
|
|
1fcf3c5dc4 | ||
|
|
20b0afacf5 | ||
|
|
6dbe8dbc50 | ||
|
|
73e23996a6 | ||
|
|
e40bce253c | ||
|
|
74c279ea3a | ||
|
|
6c13b792f9 | ||
|
|
6be7466c4a | ||
|
|
1dbdd7ee1f | ||
|
|
eb89926cee | ||
|
|
7923ff4ac6 | ||
|
|
783314c037 | ||
|
|
15cf64318c | ||
|
|
442017f93a | ||
|
|
4dd9f29769 | ||
|
|
f2f9bd2e7a | ||
|
|
d95b8ef3e1 | ||
|
|
ed0c64fdcf | ||
|
|
9a91e39b3f | ||
|
|
ce3f25d48f | ||
|
|
b669508c34 | ||
|
|
364d8824af | ||
|
|
749354b1c0 | ||
|
|
be73084e04 | ||
|
|
5eb90697c8 | ||
|
|
faedd2fa0b | ||
|
|
c47fb8f9a8 | ||
|
|
27b915789e | ||
|
|
ddc6dca98c | ||
|
|
72aa3d3005 | ||
|
|
e8d4f6d532 | ||
|
|
631e7e9c58 | ||
|
|
3c84ce2050 | ||
|
|
9db1ce7ceb | ||
|
|
e472f7899f | ||
|
|
b053781453 | ||
|
|
f892b7dbf6 | ||
|
|
b146acc69e | ||
|
|
63b941fbaf | ||
|
|
29dc22e208 | ||
|
|
c44f9e56ad | ||
|
|
2fe209d5ff | ||
|
|
41bd0e30d6 | ||
|
|
40f4dd91e9 | ||
|
|
5bf43a3560 | ||
|
|
f0afc0ae45 | ||
|
|
916b4d3a26 | ||
|
|
6d1a587c5c | ||
|
|
bce97c2543 | ||
|
|
34446cf569 | ||
|
|
1e13e927d0 | ||
|
|
3c0fa0b7e6 | ||
|
|
ad894fbdbb | ||
|
|
7d9c6eafbf | ||
|
|
de6f757ec8 | ||
|
|
3eeb8f4d6d | ||
|
|
f44ef7ce59 | ||
|
|
b08c616713 | ||
|
|
3ad693d334 | ||
|
|
7d8badc86e | ||
|
|
854d65b51b | ||
|
|
4aa67e2925 | ||
|
|
260ab2d413 | ||
|
|
a824957de7 | ||
|
|
4017c172a2 | ||
|
|
65b2c936ab | ||
|
|
eee190826a | ||
|
|
20a1deb187 | ||
|
|
9169913a2c | ||
|
|
df773d07f3 | ||
|
|
bf0ef055fb | ||
|
|
4e4842a62f | ||
|
|
a34c9095c3 | ||
|
|
efdbc1ff6c | ||
|
|
84a4b7d1c1 | ||
|
|
a9b5faa787 | ||
|
|
49a54c0ff6 | ||
|
|
70d403e6f8 | ||
|
|
eecf09f515 | ||
|
|
5b69cd4a22 | ||
|
|
61fc3346c2 | ||
|
|
c80b42712a | ||
|
|
8d76d74a17 | ||
|
|
b7e98abc43 | ||
|
|
6f72fed8b5 | ||
|
|
27575e9866 | ||
|
|
986ba175ce | ||
|
|
919b327fc5 | ||
|
|
e05b55d4a5 | ||
|
|
073bf738dd | ||
|
|
68e8d6f304 | ||
|
|
6f24337a53 | ||
|
|
0e8f5004d6 | ||
|
|
524e4707d2 | ||
|
|
22fa5a57a5 | ||
|
|
e30c76b743 | ||
|
|
a0fac663f7 | ||
|
|
277e58c2e5 | ||
|
|
75a51af006 | ||
|
|
24454938e5 | ||
|
|
774ab8a8ef | ||
|
|
21dc94b709 | ||
|
|
d6176872f7 | ||
|
|
c396be42b9 | ||
|
|
89a72ebf0d | ||
|
|
7f7ddee0f9 | ||
|
|
b99c797945 | ||
|
|
59edca4166 | ||
|
|
fbba5e054a | ||
|
|
ea47613d90 | ||
|
|
9d18f751c8 | ||
|
|
9745dfe2f4 | ||
|
|
29d38593d6 | ||
|
|
d76bc18bb7 | ||
|
|
cbe61ac315 | ||
|
|
250d97a7c4 | ||
|
|
249bf0163d | ||
|
|
20aaab0847 | ||
|
|
3e648cfb7e | ||
|
|
2106d7476d | ||
|
|
43e07e7ce3 | ||
|
|
5e4e27fed5 | ||
|
|
6c02722f56 | ||
|
|
5cfebd2680 | ||
|
|
bd20b1747d | ||
|
|
674e56cea6 | ||
|
|
61809130a6 | ||
|
|
f5e6e0eaf7 | ||
|
|
b2c423dd84 | ||
|
|
4a9752d7cd | ||
|
|
7db9a01639 | ||
|
|
e9cb5c069a | ||
|
|
03e4205700 | ||
|
|
fd9278ac02 | ||
|
|
1b7c7037b8 | ||
|
|
913264c811 | ||
|
|
e70b6630f9 | ||
|
|
6d53947fd8 | ||
|
|
1c0d982398 | ||
|
|
a88b4040ff | ||
|
|
e8073cd6f2 | ||
|
|
8281be235c | ||
|
|
9ce03e3515 | ||
|
|
667938696d | ||
|
|
a165281dcf | ||
|
|
185f70f2dd | ||
|
|
cd3e14f45a | ||
|
|
dd87588dfe | ||
|
|
29042e1939 | ||
|
|
4dbf6559aa | ||
|
|
b987b5988d | ||
|
|
6ba6bec105 | ||
|
|
d95b1e2db4 | ||
|
|
c1d6c7ff66 | ||
|
|
6e12794765 | ||
|
|
0f4b05e374 | ||
|
|
695b697cdf | ||
|
|
3aea0e3b2f | ||
|
|
c0e92d511e | ||
|
|
51f2a20b2a | ||
|
|
333a23f222 | ||
|
|
3bf3f479f5 | ||
|
|
6241d06f27 | ||
|
|
9e81d3c87b | ||
|
|
a9b2838c5f | ||
|
|
fbc39614c0 | ||
|
|
b2d6ac8dba | ||
|
|
b090b7b1f2 | ||
|
|
ba0696a0d7 | ||
|
|
b57850a225 | ||
|
|
4d9029bb0e | ||
|
|
bc49dde4d5 | ||
|
|
afe07b2926 | ||
|
|
2411bfc20f | ||
|
|
4d4ea8a4d0 | ||
|
|
595517e68b | ||
|
|
40ab2de393 | ||
|
|
723276ae3f | ||
|
|
76c5945017 | ||
|
|
01c6fd92e8 | ||
|
|
3f230a8fdb | ||
|
|
2a6a71ea6c | ||
|
|
cd23f220a0 | ||
|
|
fab88ea2cc | ||
|
|
688f8615ff | ||
|
|
d187a31e38 | ||
|
|
c6f85464ce | ||
|
|
a220b56736 | ||
|
|
0e33f45f3d | ||
|
|
ff7c3012a5 | ||
|
|
20fec2943b | ||
|
|
08b30b0706 | ||
|
|
bf52ce7e72 | ||
|
|
1bac5019e8 | ||
|
|
19454a92dc | ||
|
|
cdbb3a015f | ||
|
|
644da2b0cb | ||
|
|
57446d78f1 | ||
|
|
3e285c0ef1 | ||
|
|
a322148631 | ||
|
|
33ec9fdf47 | ||
|
|
323826111a | ||
|
|
ddd3d284d9 | ||
|
|
f55a300f43 | ||
|
|
08a69ebd6e | ||
|
|
ddb8e26bec | ||
|
|
57ca611e12 | ||
|
|
1eff120f49 | ||
|
|
4bc6096ec0 | ||
|
|
95eb114051 | ||
|
|
9c856de49c | ||
|
|
d502f79303 | ||
|
|
5224337323 | ||
|
|
ef49192170 | ||
|
|
c9df388731 | ||
|
|
870da2ab22 | ||
|
|
6122840241 | ||
|
|
03b00ef8da | ||
|
|
84b820abc6 | ||
|
|
cc4ff568a9 | ||
|
|
665011174b | ||
|
|
37f210e9f0 | ||
|
|
9c01e3a8a0 | ||
|
|
c4dd9658e7 | ||
|
|
29aa09e448 | ||
|
|
1337b6928a | ||
|
|
ac35d8127e | ||
|
|
a6ae1efadb | ||
|
|
bd7b5c51b2 | ||
|
|
397cd77ef9 | ||
|
|
743c3dbe01 | ||
|
|
9f1c212596 | ||
|
|
defd249565 | ||
|
|
8926dac78c | ||
|
|
18cac3f092 | ||
|
|
01e27426d6 | ||
|
|
0b09cc36b0 | ||
|
|
f3cb484f82 | ||
|
|
0053762760 | ||
|
|
d72b7299c6 | ||
|
|
eb89ef79eb | ||
|
|
066d13f5b7 | ||
|
|
ec06d8d606 | ||
|
|
a2e4aaa9a3 | ||
|
|
26e9696ddb | ||
|
|
343191e936 | ||
|
|
3e3b667366 | ||
|
|
3b45d4727b | ||
|
|
b4f3450d4a | ||
|
|
0a8b7cb494 | ||
|
|
125ace3519 | ||
|
|
109fc41474 | ||
|
|
f30353087f | ||
|
|
d106079d9b | ||
|
|
dc3be992a3 | ||
|
|
bed7d87b7f | ||
|
|
05daab5dea | ||
|
|
170e5589f9 | ||
|
|
538914aa52 | ||
|
|
81deb68c8e | ||
|
|
36986fe9c9 | ||
|
|
5791632933 | ||
|
|
289359bf0d | ||
|
|
81f6487865 | ||
|
|
21b797c3f9 | ||
|
|
de8450d5c9 | ||
|
|
bcb9ee4cc2 | ||
|
|
7c87447241 | ||
|
|
b39d87f357 | ||
|
|
552b14b1fa | ||
|
|
5779ffd01b | ||
|
|
a7c24a17f4 | ||
|
|
8743c40911 | ||
|
|
7ef6bd4b14 | ||
|
|
6af0f08dfc | ||
|
|
54ae94dde0 | ||
|
|
c570f3865f | ||
|
|
ed9d1da297 | ||
|
|
beb483ea85 | ||
|
|
46b7fecafe | ||
|
|
e476682922 | ||
|
|
8478dc8d6d | ||
|
|
9f8e41cbfa | ||
|
|
3916383dd0 | ||
|
|
a60c8f7d8c | ||
|
|
4e5cd472c2 | ||
|
|
e1341bc6d9 | ||
|
|
d437a66019 | ||
|
|
542b46a22f | ||
|
|
6fef533fff | ||
|
|
ec219fc395 | ||
|
|
a555a8a374 | ||
|
|
78e9c48803 | ||
|
|
18d3e5458a | ||
|
|
ac25764d12 | ||
|
|
c55e7fa91a | ||
|
|
e31ba2e12e | ||
|
|
73f8ae9a47 | ||
|
|
32b85625c1 | ||
|
|
629edd3108 | ||
|
|
ee77b81551 | ||
|
|
2c7fdac5cd | ||
|
|
d118116548 | ||
|
|
8d01956c3e | ||
|
|
1dda8c1468 | ||
|
|
111f7e917e | ||
|
|
477daf4168 | ||
|
|
8b52793f2f | ||
|
|
18b9fe5256 | ||
|
|
439e864085 | ||
|
|
f45191d0e8 | ||
|
|
32feadee42 | ||
|
|
c4b4bb9e8e | ||
|
|
8fd705d2af | ||
|
|
3c36135d6c | ||
|
|
02ede26893 | ||
|
|
af21ad1615 | ||
|
|
07fa01528b | ||
|
|
38f716bd77 | ||
|
|
6a410b03ff | ||
|
|
3cd7bce0a3 | ||
|
|
6693540f43 | ||
|
|
647bc5a63e | ||
|
|
4f76bb2a12 | ||
|
|
9991ddecc2 | ||
|
|
3cf2cb89bb | ||
|
|
2875cfa8c7 | ||
|
|
87cbbdad72 | ||
|
|
07de3a1d94 | ||
|
|
27880a6059 | ||
|
|
0367e4117a | ||
|
|
ec582d6e46 | ||
|
|
4ca706d4e6 | ||
|
|
72671c1014 | ||
|
|
a3c31f4f4a | ||
|
|
db8be4a66e | ||
|
|
2f7c19e80d | ||
|
|
7d9c357409 | ||
|
|
abf41b073c | ||
|
|
c9b07107f3 | ||
|
|
773be348a3 | ||
|
|
b7bb8d9b2a | ||
|
|
c7c12371ef | ||
|
|
fb40b10501 | ||
|
|
d4dce41d3a | ||
|
|
293b55e51f | ||
|
|
11bac66046 | ||
|
|
2a438419ab | ||
|
|
0f0aca7de5 | ||
|
|
f699b9a73f | ||
|
|
214096de9e | ||
|
|
a0ccb609cd | ||
|
|
4e05554b3e | ||
|
|
04c08b9fc8 | ||
|
|
86c1c8082d | ||
|
|
c5afc5feb5 | ||
|
|
8392ee4625 | ||
|
|
ac881d149c | ||
|
|
cc4e390c91 | ||
|
|
26c726da45 | ||
|
|
358f3d9b42 | ||
|
|
3337625fa0 | ||
|
|
ae2daa5a6f | ||
|
|
79f521b555 | ||
|
|
fffcb98ac4 | ||
|
|
5468358f21 | ||
|
|
87044313c2 | ||
|
|
794b155827 | ||
|
|
4941ffd354 | ||
|
|
aa8a3ee055 | ||
|
|
c1d17c83f8 | ||
|
|
db030016fa | ||
|
|
ae04f55882 | ||
|
|
b40fab35f6 | ||
|
|
644deee8b5 | ||
|
|
c7302c46e5 | ||
|
|
4948551703 | ||
|
|
d4c1b3b0bd | ||
|
|
bbdb072634 | ||
|
|
d7bf003d51 | ||
|
|
5a827eb3d4 | ||
|
|
b37076136b | ||
|
|
3574ab253f | ||
|
|
312a30578b | ||
|
|
8243e73413 | ||
|
|
5175fe8107 | ||
|
|
2acb767640 | ||
|
|
a9b1dcb32a | ||
|
|
8f8577b7c6 | ||
|
|
0225d34b74 | ||
|
|
8d1e27a1a5 | ||
|
|
e4ea6e1ec3 | ||
|
|
8137d41ce5 | ||
|
|
4b7f0bd374 | ||
|
|
f9ad97b978 | ||
|
|
b145a17d11 | ||
|
|
3430e2bdac | ||
|
|
cdcf925378 | ||
|
|
76029cbf09 | ||
|
|
b9c1653c1c | ||
|
|
f6c01520ae | ||
|
|
0fb4de85c4 | ||
|
|
ffe7363776 | ||
|
|
4a27a7dc58 | ||
|
|
3b3d5b12bc | ||
|
|
380e51ca50 | ||
|
|
aea7207b9f | ||
|
|
9593739938 | ||
|
|
40ebb533b3 | ||
|
|
7fe26ee719 | ||
|
|
28d63ad8e1 | ||
|
|
56eeea1e63 | ||
|
|
642a2cf165 | ||
|
|
e16feb27f4 | ||
|
|
83ae7ba08d | ||
|
|
a86f8a81a2 | ||
|
|
28abcef1ca | ||
|
|
32d15d79f1 | ||
|
|
538ac604a8 | ||
|
|
009b70f5b2 | ||
|
|
f7c1e10b5a | ||
|
|
3f3e8be004 | ||
|
|
cb612360ca | ||
|
|
6a8c2cb717 | ||
|
|
c8a8b851d8 | ||
|
|
ba9a734ba7 | ||
|
|
b08374f0ba | ||
|
|
c2f8858aab | ||
|
|
1f81fa1c6c | ||
|
|
db44a5bca7 | ||
|
|
53e1815c1d | ||
|
|
20985d515f | ||
|
|
0334004b11 | ||
|
|
95e2b37d62 | ||
|
|
dba1b8a7e9 | ||
|
|
ee29ed26ff | ||
|
|
a08ae722c1 | ||
|
|
b3c1c0ccad | ||
|
|
e1fa65f5ef | ||
|
|
a2e848a7fa | ||
|
|
67fbffc964 | ||
|
|
c3b4359e87 | ||
|
|
11ed5d62ba | ||
|
|
5827170815 | ||
|
|
ca25b816fa | ||
|
|
a9db0e8ebe | ||
|
|
a0791455e1 | ||
|
|
efb0ee4c02 | ||
|
|
df1968157c | ||
|
|
355aac2a1a | ||
|
|
b93b66edfb | ||
|
|
92a4e77288 | ||
|
|
7ac646ff94 | ||
|
|
ef6aa9f41b | ||
|
|
df9e7385ad | ||
|
|
e065ac45dc | ||
|
|
745af5309d | ||
|
|
952f1cf8d0 | ||
|
|
86a55fe55a | ||
|
|
88c6694ffc | ||
|
|
20826e0f08 | ||
|
|
e474096119 | ||
|
|
075f286130 | ||
|
|
32e3cab116 | ||
|
|
49ff4299c6 | ||
|
|
4d18a4802d | ||
|
|
d613791104 | ||
|
|
44f7f79bd9 | ||
|
|
1cdfbbadaa | ||
|
|
76a31b6fd6 | ||
|
|
0ad3d06ef9 | ||
|
|
fb0fd8ddc4 | ||
|
|
2a9913b8fb | ||
|
|
9b8d2ed469 | ||
|
|
17148df06d | ||
|
|
d93089fcc0 | ||
|
|
870995933a | ||
|
|
d6c2e47bbd | ||
|
|
e2b2bf1e0d | ||
|
|
c4a18ee64b | ||
|
|
7143996d26 | ||
|
|
22f78a2c52 | ||
|
|
bd7517cfd4 | ||
|
|
9bffce9dc5 | ||
|
|
10f6a17857 | ||
|
|
2197c2481a | ||
|
|
8d90e640b0 | ||
|
|
368870a2fc | ||
|
|
945a19bb61 | ||
|
|
b0abc384bc | ||
|
|
8f45e9a518 | ||
|
|
b06f1d1982 | ||
|
|
4365350430 | ||
|
|
3b158cb726 | ||
|
|
2298a34c37 | ||
|
|
633039c528 | ||
|
|
ee31d5e24d | ||
|
|
f590aa11f7 | ||
|
|
6b7f48644c | ||
|
|
21aac75533 | ||
|
|
95b02a3197 | ||
|
|
be7c444959 | ||
|
|
f02d3f689d | ||
|
|
981752059c | ||
|
|
6c87ebac01 | ||
|
|
a9479b3c01 | ||
|
|
c5afca53a4 | ||
|
|
b4cb88ab26 | ||
|
|
ad4f607643 | ||
|
|
c7d340e822 | ||
|
|
2c501d2380 | ||
|
|
3787e4a83c | ||
|
|
3b77e4ebf1 | ||
|
|
6eebf717d5 | ||
|
|
98f32d6f1f | ||
|
|
62f45f7b41 | ||
|
|
a7d8f6599a | ||
|
|
4da6db8418 | ||
|
|
d991291f2a | ||
|
|
392fb42973 | ||
|
|
13299158d1 | ||
|
|
a6571b09d2 | ||
|
|
870ba445b8 | ||
|
|
caaa70f630 | ||
|
|
56a8e0a09a | ||
|
|
4c08667a07 | ||
|
|
4ac6b6828c | ||
|
|
c050186014 | ||
|
|
63f2606863 | ||
|
|
5160e0ba18 | ||
|
|
0aad2ee005 | ||
|
|
8a58ffda86 | ||
|
|
cea8dcae3d | ||
|
|
fc7e7d9331 | ||
|
|
494bff4bc0 | ||
|
|
824ee8a3dc | ||
|
|
47af38ecb8 | ||
|
|
654c790c3d | ||
|
|
7ebebb5bd9 | ||
|
|
8f921a61da | ||
|
|
cfd734d84f | ||
|
|
342a697e42 | ||
|
|
918f3cde94 | ||
|
|
7b82a8669d | ||
|
|
7116f100ee | ||
|
|
42fce45585 | ||
|
|
9da57daa7f | ||
|
|
e302d23317 | ||
|
|
0edfa83951 | ||
|
|
a5ba049427 | ||
|
|
adba69a589 | ||
|
|
cc73f72d13 | ||
|
|
e4f90996af | ||
|
|
974c0d2b95 | ||
|
|
d1fc2a115e | ||
|
|
a9373c7fb0 | ||
|
|
8b604462ac | ||
|
|
51e4a73439 | ||
|
|
d42cdcfd43 | ||
|
|
c18acd0859 | ||
|
|
9699ee4eff | ||
|
|
c78e504bfb | ||
|
|
0eeaac1f2b | ||
|
|
b578517f91 | ||
|
|
c009e9979e | ||
|
|
22b6097e95 | ||
|
|
8e3446a389 | ||
|
|
1747d7a1bb | ||
|
|
8e5a876b37 | ||
|
|
c71b710d7e | ||
|
|
7440b87596 | ||
|
|
583a17d627 | ||
|
|
caf1a22084 | ||
|
|
29abc5e921 | ||
|
|
098dae9a7e | ||
|
|
aaa7affa46 | ||
|
|
40ca846cdc | ||
|
|
da277f5b27 | ||
|
|
2a24f6e2ea | ||
|
|
98e8105ec5 | ||
|
|
4a94a2b4e8 | ||
|
|
2011349eb1 | ||
|
|
8057f4a678 | ||
|
|
f9ec8a0828 | ||
|
|
a0030c7bdb | ||
|
|
0e4448fd3f | ||
|
|
21d2d59b50 | ||
|
|
295f177271 | ||
|
|
f3154313a8 | ||
|
|
e37f3b4fa3 | ||
|
|
7e5c35d06e | ||
|
|
60756aa02b | ||
|
|
3779ab90de | ||
|
|
5b5037a844 | ||
|
|
03902b0b26 | ||
|
|
883feabb8b | ||
|
|
5fb79e3253 | ||
|
|
c44811fbc2 | ||
|
|
c3eaa694dd | ||
|
|
bd8b8abfea | ||
|
|
1a6c2e2bac | ||
|
|
e2e6ae937d | ||
|
|
5b9c5d2790 | ||
|
|
896a57d4ed | ||
|
|
c3de8d3a67 | ||
|
|
d1a92a0a2e | ||
|
|
5f626495fd | ||
|
|
238f3c89a7 | ||
|
|
6e724eb8a5 | ||
|
|
9aec1feae3 | ||
|
|
8517de128b | ||
|
|
a3e15c910c | ||
|
|
a6303de4d1 | ||
|
|
5356b0e118 | ||
|
|
e31309f213 | ||
|
|
6f8a70834b | ||
|
|
327cc307b3 | ||
|
|
f191ba6e69 | ||
|
|
a2b89411b0 | ||
|
|
f66efed777 | ||
|
|
f61b59fa89 | ||
|
|
6288a72036 | ||
|
|
a941f0ffb6 | ||
|
|
d7373a5c04 | ||
|
|
2ff485d2e0 | ||
|
|
5a67068348 | ||
|
|
d39af6c9eb | ||
|
|
1789025da9 | ||
|
|
696f49497b | ||
|
|
e88eba1877 | ||
|
|
f8b8a10b8f | ||
|
|
01e505a5f4 | ||
|
|
5b2d9a4668 | ||
|
|
71008dc819 | ||
|
|
f27e943258 | ||
|
|
9301173f7d | ||
|
|
60d95475eb | ||
|
|
c8ace2edc0 | ||
|
|
0b1ba9f997 | ||
|
|
f3026e33fd | ||
|
|
f014a97e9a | ||
|
|
ddad09a936 | ||
|
|
5dd0654105 | ||
|
|
b4b664e97a | ||
|
|
551771235b | ||
|
|
eb201c4084 | ||
|
|
7bfc499ec8 | ||
|
|
71e7e9c9c3 | ||
|
|
8521775389 | ||
|
|
61ad8d4c10 | ||
|
|
38a4ccd9f2 | ||
|
|
cf342dd00e | ||
|
|
08ab81c54c | ||
|
|
d355382f70 | ||
|
|
d171ce4fba | ||
|
|
5a90fece80 | ||
|
|
994935b5da | ||
|
|
874e667849 | ||
|
|
1817f6eaf6 | ||
|
|
2e19930178 | ||
|
|
2b01461748 | ||
|
|
24b9df475c | ||
|
|
011bab3c80 | ||
|
|
699c0c3e05 | ||
|
|
5f4b28960e | ||
|
|
3837913855 | ||
|
|
65eb3997d9 | ||
|
|
47411b406d | ||
|
|
f710026a8f | ||
|
|
925e133f50 | ||
|
|
2bdd60ed72 | ||
|
|
9ac1cce26f | ||
|
|
0a597c94d6 | ||
|
|
02f82be094 | ||
|
|
86e26240a1 | ||
|
|
82c5be2564 | ||
|
|
42f4f07268 | ||
|
|
df4db8fa4c | ||
|
|
bd85fe0af3 | ||
|
|
aee15e5dff | ||
|
|
d7a803d9fd | ||
|
|
839e5895e4 | ||
|
|
49a4f0c74c | ||
|
|
5bea8e63de | ||
|
|
e64be284dd | ||
|
|
e11e26a352 | ||
|
|
bee90abbc4 | ||
|
|
8782559c33 | ||
|
|
223ddc0f68 | ||
|
|
4445d1d5a0 | ||
|
|
b7d001da88 | ||
|
|
3592ebef08 | ||
|
|
a783d21409 | ||
|
|
a716e3de74 | ||
|
|
c797c720be | ||
|
|
1b5742fbf0 | ||
|
|
5794349d97 | ||
|
|
456f094913 | ||
|
|
abb9eb0df4 | ||
|
|
9e7b45ea4c | ||
|
|
6c6bd60a48 | ||
|
|
cef82e72dc | ||
|
|
45b9647ba0 | ||
|
|
160f74d53e | ||
|
|
3ab6139522 | ||
|
|
9aa54257e7 | ||
|
|
8eafa62bbe | ||
|
|
968c24f0bc | ||
|
|
e5c755b1fc | ||
|
|
6d56f01c40 | ||
|
|
eefce48e68 | ||
|
|
c7d97c733a | ||
|
|
3db42deb42 | ||
|
|
02603e8926 | ||
|
|
c5003554f4 | ||
|
|
eb223805ca | ||
|
|
244c148a80 | ||
|
|
4dbb2ed167 | ||
|
|
212d680a47 | ||
|
|
a853e35dec | ||
|
|
fdaf9f0bfc | ||
|
|
0afe45b3a8 | ||
|
|
f9a37168b0 | ||
|
|
52232e98c7 | ||
|
|
0fbb443e4b | ||
|
|
8021694b81 | ||
|
|
a2b262c9df | ||
|
|
5906f4c995 | ||
|
|
da8edd2226 | ||
|
|
406aedfdc2 | ||
|
|
67c834841e | ||
|
|
edaa0b0e34 | ||
|
|
31f03fcf3a | ||
|
|
4a57f2a762 | ||
|
|
92b9dbd706 | ||
|
|
6edd7682a9 | ||
|
|
447891b396 | ||
|
|
89bfcafb80 | ||
|
|
a74a04c5d5 | ||
|
|
0c16f0ea22 | ||
|
|
003d43b03a | ||
|
|
6323496945 | ||
|
|
fd5e231a93 | ||
|
|
ae209677de | ||
|
|
d5ca00de95 | ||
|
|
7be84c6ad3 | ||
|
|
425039e4d3 | ||
|
|
6c5333180d | ||
|
|
cb47a51b70 | ||
|
|
e36fb654b0 | ||
|
|
6325fac020 | ||
|
|
c6358d5f22 | ||
|
|
413e8b6062 | ||
|
|
e113a8e7af | ||
|
|
e42891ae5b | ||
|
|
c90770472e | ||
|
|
45df9de5b5 | ||
|
|
2d0940589e | ||
|
|
5908f189a7 | ||
|
|
17328bce53 | ||
|
|
451a0dacbe | ||
|
|
a46199e37d | ||
|
|
e25cc301fd | ||
|
|
5bbb0d1f60 | ||
|
|
a5b8875356 | ||
|
|
3e86df311d | ||
|
|
002f9ebde7 | ||
|
|
72e6e1ce8b | ||
|
|
a3c7af95e1 | ||
|
|
0987c9a7cf | ||
|
|
bbd87daf6d | ||
|
|
30e4613d0a | ||
|
|
79593f52b0 | ||
|
|
bab8c1eeff | ||
|
|
8b6cc95c1b | ||
|
|
90236b87de | ||
|
|
b6a133cc64 | ||
|
|
7aa070f9ea | ||
|
|
c2ec2291e8 | ||
|
|
97fcfb7f6c | ||
|
|
ce677fd55a | ||
|
|
e48a3edacb | ||
|
|
ce0b92d681 | ||
|
|
29c5ba5639 | ||
|
|
cdea618457 | ||
|
|
425a519f97 | ||
|
|
c07d64c6ff | ||
|
|
c07e3a76bb | ||
|
|
8fe844bcc9 | ||
|
|
a0390956a9 | ||
|
|
4f1e6296ca | ||
|
|
0ef372e531 | ||
|
|
06e2894750 | ||
|
|
10e2d4b99c | ||
|
|
ef40cb9687 | ||
|
|
758604fc1a | ||
|
|
34c1134b55 | ||
|
|
a5ef1db0c5 | ||
|
|
748ed40321 | ||
|
|
42063f785e | ||
|
|
1657451f37 | ||
|
|
0bb0bff0b3 | ||
|
|
747732118c | ||
|
|
2aec1501d0 | ||
|
|
39c6bc1106 | ||
|
|
4e451479f8 | ||
|
|
93b2736d65 | ||
|
|
34274a1042 | ||
|
|
fa822caa62 | ||
|
|
ddc30cc2c0 | ||
|
|
9d9cab1711 | ||
|
|
fe8f2d8d89 | ||
|
|
2d561bc8a0 | ||
|
|
f5275d3ad7 | ||
|
|
5fbdf9cfb9 | ||
|
|
0409c9c1e5 | ||
|
|
42a5da1df4 | ||
|
|
0b326a8bbe | ||
|
|
9c8501a84e | ||
|
|
2da7f82171 | ||
|
|
593474031d | ||
|
|
fce10548d2 | ||
|
|
addca63938 | ||
|
|
6961169f89 | ||
|
|
3d66feb89f | ||
|
|
bb157eefc6 | ||
|
|
7f8f4df0a0 | ||
|
|
4b325676f7 | ||
|
|
ecba95250d | ||
|
|
dd116b3cd6 | ||
|
|
eabe96fd19 | ||
|
|
7dd9ce2e32 | ||
|
|
fffaafe4c9 | ||
|
|
0b9646136a | ||
|
|
55f38b9c35 | ||
|
|
709fa9e02e | ||
|
|
f42bdb8bab | ||
|
|
10aed46062 | ||
|
|
6e43e89b2d | ||
|
|
10c0c0b6d2 | ||
|
|
e13924cd2d | ||
|
|
7afe00f06a | ||
|
|
87b9caa7dc | ||
|
|
f689d335c0 | ||
|
|
31f9a848f9 | ||
|
|
3d2c5d67af | ||
|
|
63f8f469b0 | ||
|
|
9929f1acf0 | ||
|
|
42ecc087cb | ||
|
|
93adee36b0 | ||
|
|
0e95fd0b9b | ||
|
|
611ddfeeb8 | ||
|
|
dfe2579eeb | ||
|
|
66b36f6d8f | ||
|
|
1b3a9102f1 | ||
|
|
9993a50903 | ||
|
|
c226509be0 | ||
|
|
ef6f52e722 | ||
|
|
7d8cad8e3a | ||
|
|
15507d3827 | ||
|
|
e2d17d122e | ||
|
|
0d7bf50581 | ||
|
|
a50618fcb0 | ||
|
|
fc2a9a756a | ||
|
|
07721eb99f | ||
|
|
13fed15e0c | ||
|
|
38a308ce5b | ||
|
|
be19316dfb | ||
|
|
c4f65681a1 | ||
|
|
f600226aa9 | ||
|
|
67f2864501 | ||
|
|
c1bbcaba73 | ||
|
|
6685cb3fba | ||
|
|
d770e46208 | ||
|
|
665636e642 | ||
|
|
0028e71ab2 | ||
|
|
7fb66bf71a | ||
|
|
3120d854f8 | ||
|
|
c85c14210f | ||
|
|
0fb81a11a8 | ||
|
|
7b67afae06 | ||
|
|
fe9e319a61 | ||
|
|
097fc477a2 | ||
|
|
f60b00d116 | ||
|
|
3a36e0621f | ||
|
|
b482473e23 | ||
|
|
9a5fd3f784 | ||
|
|
b703ccde9b | ||
|
|
80eca30725 | ||
|
|
7dbc14dc43 | ||
|
|
b3f9010eb5 | ||
|
|
f62d72e548 | ||
|
|
d12352972e | ||
|
|
03d3d84db3 | ||
|
|
6d818c25c7 | ||
|
|
6a8f624e75 | ||
|
|
0801b1ddf9 | ||
|
|
4fd64ca492 | ||
|
|
c4bcf24640 | ||
|
|
0114fc9608 | ||
|
|
8db098eaec | ||
|
|
05c3a66543 | ||
|
|
9349752baa | ||
|
|
974fab7284 | ||
|
|
8a52ffe7b7 | ||
|
|
c6ecdbd86e | ||
|
|
03797545f9 | ||
|
|
2778f96483 | ||
|
|
6cd4e7a17e | ||
|
|
5c91b4bfc6 | ||
|
|
e2b51c5dc4 | ||
|
|
b610b7c192 | ||
|
|
b75fdd6b66 | ||
|
|
060b02eaed | ||
|
|
003e5da00d | ||
|
|
02951d4813 | ||
|
|
db52ed9941 | ||
|
|
af333b1838 | ||
|
|
f62762bd0e | ||
|
|
4b67352278 | ||
|
|
76afb6b116 | ||
|
|
db52e87740 | ||
|
|
e22788abe8 | ||
|
|
bbfbfcda85 | ||
|
|
0dfb36e675 | ||
|
|
95a9d77301 | ||
|
|
ab1f070901 | ||
|
|
8201d5d1f8 | ||
|
|
8704c34a0f | ||
|
|
599adaf1bf | ||
|
|
778e399438 | ||
|
|
485ae4d997 | ||
|
|
8cd2ba3ad6 | ||
|
|
dbad7d1869 | ||
|
|
4d482438f5 | ||
|
|
b53a1b51d6 | ||
|
|
49375c73d4 | ||
|
|
98b78c56c5 | ||
|
|
f3e6ef0fa9 | ||
|
|
18e1c2dea5 | ||
|
|
91ae01e484 | ||
|
|
2897b72967 | ||
|
|
3510985cf4 | ||
|
|
5927e65045 | ||
|
|
13e2041d50 | ||
|
|
4bf530ed9e | ||
|
|
4c797405ad | ||
|
|
713c922e35 | ||
|
|
7f1e789264 | ||
|
|
07d00cc515 | ||
|
|
cd55e346af | ||
|
|
6746428fb1 | ||
|
|
634032d5be | ||
|
|
602abc53dd | ||
|
|
fdbaa9768a | ||
|
|
293d7261e0 | ||
|
|
efb6eb28ce | ||
|
|
ac5531ce85 | ||
|
|
bc2415c70e | ||
|
|
0fd411f83f | ||
|
|
b74ad0ad12 | ||
|
|
4c58836735 | ||
|
|
3206b80dbd | ||
|
|
4910f7a61e | ||
|
|
6e9109eaec | ||
|
|
a04ec14cf0 | ||
|
|
7d3df3c117 | ||
|
|
b3a03f8e3e | ||
|
|
e5668c1e5c | ||
|
|
92e74bc4fa | ||
|
|
7e12269baf | ||
|
|
f3f264f5fd | ||
|
|
2e3c9b87df | ||
|
|
0a113e1cf7 | ||
|
|
fd772c48cf | ||
|
|
1c7dce6054 | ||
|
|
0a2947b860 | ||
|
|
c80877af43 | ||
|
|
e68b9c7e81 | ||
|
|
19198737a5 | ||
|
|
fea4b6aecd | ||
|
|
20e2673b82 | ||
|
|
ef1375b9dd | ||
|
|
58f1939ec1 | ||
|
|
ba57c34adb | ||
|
|
936f6ac10f | ||
|
|
7e04c4f24b | ||
|
|
9495c8f46c | ||
|
|
b3f91600d3 | ||
|
|
ddf4437fb6 | ||
|
|
4153d57849 | ||
|
|
0652790703 | ||
|
|
9c934d903d | ||
|
|
d7a7e28925 | ||
|
|
6dec29e214 | ||
|
|
43cf8d30bd | ||
|
|
254d3f53e2 | ||
|
|
ec198343b5 | ||
|
|
876517d458 | ||
|
|
1233c33116 | ||
|
|
eebf205817 | ||
|
|
e666bb44c6 | ||
|
|
39cb0b5122 | ||
|
|
58003a2811 | ||
|
|
7f2a7cfa77 | ||
|
|
8fba0477a6 | ||
|
|
7ca1ba7e1e | ||
|
|
e6f2c7a382 | ||
|
|
69f5f5e946 | ||
|
|
68a8acbe7b | ||
|
|
852811b314 | ||
|
|
2404ff0304 | ||
|
|
9ff4cacf0f | ||
|
|
e443cb2a3b | ||
|
|
f3c6cce455 | ||
|
|
ae14b0a71d | ||
|
|
3c7ebe2697 | ||
|
|
10fb6061cc | ||
|
|
223df8006a | ||
|
|
1c9428cbba | ||
|
|
18dc5d17b5 | ||
|
|
4d50933189 | ||
|
|
9b3680780f | ||
|
|
a26e77074f | ||
|
|
568e4d33f2 | ||
|
|
fd004032cb | ||
|
|
4b6324050d | ||
|
|
12d62e1157 | ||
|
|
063c6b66b6 | ||
|
|
d9b1d31e73 | ||
|
|
0bad911a16 | ||
|
|
518efa8ad2 | ||
|
|
6e87c9e713 | ||
|
|
b61852b1f5 | ||
|
|
fcbe24a126 | ||
|
|
55312d00ef | ||
|
|
a96e3f3222 | ||
|
|
e35519b50f | ||
|
|
ae775f9664 | ||
|
|
071b1c47d1 | ||
|
|
4cc5bbaf19 | ||
|
|
a264c36a48 | ||
|
|
0c2ab22656 | ||
|
|
47adad5122 | ||
|
|
745f209f7e | ||
|
|
2287597712 | ||
|
|
eea8b15180 | ||
|
|
600a2b40af | ||
|
|
a7c51593e4 | ||
|
|
218876ac19 | ||
|
|
6cda67df10 | ||
|
|
897515c002 | ||
|
|
9deaf612f1 | ||
|
|
b7676d8c46 | ||
|
|
05aa2fa421 | ||
|
|
03f5c9b950 | ||
|
|
4c9c4c487a | ||
|
|
c172b9e080 | ||
|
|
5533a84dcd | ||
|
|
562bcb8571 | ||
|
|
00c07b38a4 | ||
|
|
f44bfa9682 | ||
|
|
7357a0a324 | ||
|
|
36a49966eb | ||
|
|
f818d06b43 | ||
|
|
548246c05f | ||
|
|
2bf1aa975a | ||
|
|
4be8eca3fe | ||
|
|
e17ace397c | ||
|
|
6bdabe72b9 | ||
|
|
00bfc7f889 | ||
|
|
5fcb77e591 | ||
|
|
df8de7ff51 | ||
|
|
67d7540907 | ||
|
|
83d0bad3a1 | ||
|
|
9d80a62bb1 | ||
|
|
629653425d | ||
|
|
03ce1d8641 | ||
|
|
225baeb5cb | ||
|
|
cf171d28c7 | ||
|
|
61434a9121 | ||
|
|
20590b7d35 | ||
|
|
fce7081215 | ||
|
|
83c7c8110d | ||
|
|
c4680a97a8 | ||
|
|
91a5bcf380 | ||
|
|
7e9ae458e2 | ||
|
|
4e284f5e6c | ||
|
|
75ded89790 | ||
|
|
598ce0d401 | ||
|
|
fc3058c1e2 | ||
|
|
d14ae70776 | ||
|
|
882816d609 | ||
|
|
2205e2b9a0 | ||
|
|
855fdd7921 | ||
|
|
99b1f81e89 | ||
|
|
46ad7b1b38 | ||
|
|
7e5b7a7f2a | ||
|
|
156e85a6b3 | ||
|
|
6fce02d25e | ||
|
|
4ddb86df53 | ||
|
|
3565e96f42 | ||
|
|
2c7db23022 | ||
|
|
fe51c9a9a2 | ||
|
|
5324dfa5a7 | ||
|
|
881d32e733 | ||
|
|
1f4cbb7479 | ||
|
|
b17bbdaa7d | ||
|
|
5458a1c1b7 | ||
|
|
fa98450754 | ||
|
|
7b4f2b47de | ||
|
|
400a97e7a8 | ||
|
|
a816fb5958 | ||
|
|
c7ad6ebad6 | ||
|
|
85b4a82a4b | ||
|
|
f18fa8e947 | ||
|
|
44cd185c66 | ||
|
|
890f414b5a | ||
|
|
03b1b12ef1 | ||
|
|
dae6f28f8a | ||
|
|
5aca3a2d7d | ||
|
|
7f257e258f | ||
|
|
6a9d3de0f9 | ||
|
|
05aae36813 | ||
|
|
d5d6079b67 | ||
|
|
bb4c8bf8eb | ||
|
|
3eb40db498 | ||
|
|
576f63d5e4 | ||
|
|
cda1dc82e9 | ||
|
|
2721252d6a | ||
|
|
45ac960308 | ||
|
|
47d74aa24a | ||
|
|
48aa1ad57d | ||
|
|
2eccb28dee | ||
|
|
9c3bfd920f | ||
|
|
76eb1e9e7f | ||
|
|
b7af597668 | ||
|
|
d635559a30 | ||
|
|
58dd90b7b7 | ||
|
|
ead990a734 | ||
|
|
27400fcd5b | ||
|
|
d4631e14b2 | ||
|
|
8df2cc103e | ||
|
|
8e0e9c7d3a | ||
|
|
913930b561 | ||
|
|
994c8db1f3 | ||
|
|
0c6cbb66b1 | ||
|
|
f09393d4f4 | ||
|
|
f6d963d45a | ||
|
|
39e3733be4 | ||
|
|
09659cc304 | ||
|
|
6811bdec40 | ||
|
|
6577d60733 | ||
|
|
c7db837214 | ||
|
|
03cb7233dc | ||
|
|
6682abf89d | ||
|
|
78fbf0f7ba | ||
|
|
89547332ee | ||
|
|
75539bf675 | ||
|
|
eaeb715e56 | ||
|
|
ca55cc99ed | ||
|
|
7cc4a8f5ce | ||
|
|
fa35768fc9 | ||
|
|
4d0ff0dce4 | ||
|
|
8aac6e46d4 | ||
|
|
1feac1a308 | ||
|
|
d3e42e4b3e | ||
|
|
3a1ca32ff1 | ||
|
|
ecf86d1d13 | ||
|
|
adc6170f02 | ||
|
|
02600f40d2 | ||
|
|
16ea0348a9 | ||
|
|
44162811bd | ||
|
|
57acb8db5c | ||
|
|
2bcb7d5639 | ||
|
|
a99e54330a | ||
|
|
e219772b2a | ||
|
|
144a507a2e | ||
|
|
5019c51940 | ||
|
|
da1071526f | ||
|
|
7ad314472d | ||
|
|
4f6168a982 | ||
|
|
218a872968 | ||
|
|
0043c5e1ac | ||
|
|
d0e7046a89 | ||
|
|
52ad16b920 | ||
|
|
5a4c0bff6a | ||
|
|
6205209fbb | ||
|
|
6ebf8a57d1 | ||
|
|
c02dfc4fb1 | ||
|
|
9d62e5fb6f | ||
|
|
6f13d107c4 | ||
|
|
e56b2ceebb | ||
|
|
7de244ed62 | ||
|
|
1e9147b8bb | ||
|
|
2f65fadeaa | ||
|
|
a17091b394 | ||
|
|
ed77c6cb54 | ||
|
|
bc37cc8a91 | ||
|
|
387363283c | ||
|
|
709026bf1a | ||
|
|
f2b2b86786 | ||
|
|
d0fbea76d8 | ||
|
|
8269610a5c | ||
|
|
20c88a46d9 | ||
|
|
661029f7cc | ||
|
|
850d32d60c | ||
|
|
eb881b9729 | ||
|
|
091ba473ff | ||
|
|
fca051c565 | ||
|
|
6463cda204 | ||
|
|
d004df56e3 | ||
|
|
359dd482c4 | ||
|
|
89e98240b4 | ||
|
|
1c1f2ef1ff | ||
|
|
4fa774f866 | ||
|
|
4671999ea0 | ||
|
|
0a73bbe279 | ||
|
|
8d30058a6d | ||
|
|
69151c06e4 | ||
|
|
2e3c02887e | ||
|
|
7603cef308 | ||
|
|
be370c4e19 | ||
|
|
c6dece6bd1 | ||
|
|
93a5b3f457 | ||
|
|
4242176d29 | ||
|
|
1cadbeed88 | ||
|
|
86cc011212 | ||
|
|
c0facfc28f | ||
|
|
ad52a82190 | ||
|
|
60b6ed514f | ||
|
|
ef32822b31 | ||
|
|
bb0cedd2de | ||
|
|
8175c7c085 | ||
|
|
5c2d725721 | ||
|
|
72571628da | ||
|
|
fa6130c907 | ||
|
|
8ccdd54974 | ||
|
|
6c1409b00d | ||
|
|
542a1a11b9 | ||
|
|
63ffa80c5c | ||
|
|
609342be7a | ||
|
|
52394884da | ||
|
|
af08177f79 | ||
|
|
45fdfc2d3d | ||
|
|
d18554e0e8 | ||
|
|
3c3f9ca85b | ||
|
|
005a02efeb | ||
|
|
6206ebc994 | ||
|
|
dd9f5adc2e | ||
|
|
748d805a32 | ||
|
|
4b59bf01b3 | ||
|
|
b4faa4851a | ||
|
|
f37fcc147c | ||
|
|
dc5694e544 | ||
|
|
e588f6f8c3 | ||
|
|
d227f2ad7c | ||
|
|
97c228031a | ||
|
|
ad85011d62 | ||
|
|
a70379625d | ||
|
|
7350333129 | ||
|
|
216420fdc5 | ||
|
|
c559fbbe8c | ||
|
|
71d68f975c | ||
|
|
390534497e | ||
|
|
3f0ec89f11 | ||
|
|
d3aa4f2bc7 | ||
|
|
f58f0ddb67 | ||
|
|
633e3129d4 | ||
|
|
877bdce4c8 | ||
|
|
6e1fbd2d97 | ||
|
|
36bfe62a8f | ||
|
|
b08bd0f9ab | ||
|
|
3998b47d84 | ||
|
|
d965fdb11d | ||
|
|
ddb64b3ec1 | ||
|
|
5055ec8617 | ||
|
|
8a858501f2 | ||
|
|
e1af25c8a6 | ||
|
|
6091f818da | ||
|
|
a45f9b4802 | ||
|
|
9ccf63b44a | ||
|
|
d34135ae43 | ||
|
|
a81f6f9ad1 | ||
|
|
8a80b10cc2 | ||
|
|
22b1ee132a | ||
|
|
ab7f681f15 | ||
|
|
2ac806ef08 | ||
|
|
13ec8ed03c | ||
|
|
fb77817c2d | ||
|
|
ceb8a492b1 | ||
|
|
cfc868bf4d | ||
|
|
7b4e2257d8 | ||
|
|
4ac6e5477d | ||
|
|
614ea14a7f | ||
|
|
ce45f99006 | ||
|
|
9203813a61 | ||
|
|
ba987b0574 | ||
|
|
b20f34adb7 | ||
|
|
63d0d810b1 | ||
|
|
5491400684 | ||
|
|
6a5165e9b3 | ||
|
|
9a7c4442d2 | ||
|
|
0e5363b5c3 | ||
|
|
d41bce36be | ||
|
|
1380cd811e | ||
|
|
d99bb3a87c | ||
|
|
4b9501318d | ||
|
|
e5eec04f92 | ||
|
|
f9c21efc30 | ||
|
|
ae72b71895 | ||
|
|
87e3fe725d | ||
|
|
807d9e3eef | ||
|
|
9e569b3791 | ||
|
|
024f093585 | ||
|
|
996e9e9102 | ||
|
|
d58bfb46cf | ||
|
|
eb0d7df50b | ||
|
|
547bee38c0 | ||
|
|
60614ba250 | ||
|
|
278f68ae77 | ||
|
|
b4375d6f64 | ||
|
|
9f47c72d31 | ||
|
|
de3bf03f42 | ||
|
|
59a39ac57d | ||
|
|
df9c2b193e | ||
|
|
3894311d68 | ||
|
|
35501dd4fc | ||
|
|
e2ca713658 | ||
|
|
a45de6d427 | ||
|
|
a350638526 | ||
|
|
59f9605ed9 | ||
|
|
9521bf8d4f | ||
|
|
7c1c94d39b | ||
|
|
8a74963815 | ||
|
|
3ebd8b7f45 | ||
|
|
ae8cb2e6a8 | ||
|
|
1ccb978612 | ||
|
|
7040a01cf2 | ||
|
|
6bc0e815e9 | ||
|
|
593f7e826c | ||
|
|
835fa0af13 | ||
|
|
0e3bd0c6c1 | ||
|
|
86668eb7b9 | ||
|
|
771f65c858 | ||
|
|
89d6326a83 | ||
|
|
8b81ea162f | ||
|
|
a53e6db537 | ||
|
|
62e3feeb94 | ||
|
|
a950494503 | ||
|
|
3cb310122e | ||
|
|
feace988b4 | ||
|
|
6a56f20928 | ||
|
|
80a46d14be | ||
|
|
fbcbf066cd | ||
|
|
4d30e1115f | ||
|
|
897cfb491c | ||
|
|
c2c7512431 | ||
|
|
568cf4d182 | ||
|
|
f54330f1c5 | ||
|
|
97e01d7a42 | ||
|
|
4be3e000e1 | ||
|
|
b47baa9ee1 | ||
|
|
f6c98112df | ||
|
|
94d29ab22e | ||
|
|
b0b179550a | ||
|
|
41c7ab4f9c | ||
|
|
432c7c63fe | ||
|
|
2bba1ae292 | ||
|
|
7830d518e0 | ||
|
|
571b3c4da8 | ||
|
|
5b6f8d4c3f | ||
|
|
ae57b21b98 | ||
|
|
292c3bbff8 | ||
|
|
065570ebf5 | ||
|
|
1f5dfd71d5 | ||
|
|
31b3ac4b98 | ||
|
|
7f4a383d75 | ||
|
|
de943c5f30 | ||
|
|
e34b0af251 | ||
|
|
fa7237fde7 | ||
|
|
ed530cef72 | ||
|
|
0f8b2703d1 | ||
|
|
a2176f566b | ||
|
|
bef056b084 | ||
|
|
c8c86c44f8 | ||
|
|
f917a4a34a | ||
|
|
78fd942faa | ||
|
|
a3274ac9b1 | ||
|
|
2e67d69434 | ||
|
|
c2d6e78b2a | ||
|
|
7233a11ba0 | ||
|
|
3a1360ce11 | ||
|
|
ba761044a6 | ||
|
|
d8636a2c5d | ||
|
|
9889c8f9e0 | ||
|
|
7e2e392ecc | ||
|
|
6912a67eba | ||
|
|
6abc83de83 | ||
|
|
0ca66a1469 | ||
|
|
a88be1af44 | ||
|
|
ae47fda257 | ||
|
|
6eb5411029 | ||
|
|
73d13d61a7 | ||
|
|
fdf213ef72 | ||
|
|
22fe605b1e | ||
|
|
bcc902a889 | ||
|
|
24ff2ec30c | ||
|
|
4e0c67e2a1 | ||
|
|
0cc21db654 | ||
|
|
dd5d1c00e5 | ||
|
|
cad2555c03 | ||
|
|
005d8184aa | ||
|
|
c228eddc57 | ||
|
|
ae37f8d9b6 | ||
|
|
6a8113af1d | ||
|
|
0c8cf12650 | ||
|
|
2e29a51ccf | ||
|
|
162f1d94dc | ||
|
|
a76bce1f32 | ||
|
|
be20e04c7b | ||
|
|
d9df82f31d | ||
|
|
6210333628 | ||
|
|
a552a790d3 | ||
|
|
9acb745956 | ||
|
|
875edaf96f | ||
|
|
a9afc0f3f0 | ||
|
|
3bbeaabe26 | ||
|
|
c04cbb480a | ||
|
|
2c241c294e | ||
|
|
ce851f3c28 | ||
|
|
817a6d1828 | ||
|
|
4d0735e7f6 | ||
|
|
80291930f0 | ||
|
|
cf8678b979 | ||
|
|
67722c0fb8 | ||
|
|
0b6e246c04 | ||
|
|
3992295678 | ||
|
|
da404b9acc | ||
|
|
da8db153be | ||
|
|
2c90f7324b | ||
|
|
2cdb0de1c3 | ||
|
|
66bd798e80 | ||
|
|
cf37dfb257 | ||
|
|
217f84204e | ||
|
|
fbbe0ec3db | ||
|
|
1ec34767f9 | ||
|
|
14e94a5376 | ||
|
|
08508afdb2 | ||
|
|
4220f25e01 | ||
|
|
4ff5afecc8 | ||
|
|
2eabb439d9 | ||
|
|
2bc9d5d490 | ||
|
|
9e1c142f02 | ||
|
|
1a38893b52 | ||
|
|
f28d75cf7c | ||
|
|
a3c9d0ace5 | ||
|
|
aea1799a64 | ||
|
|
ef76c4c62b | ||
|
|
210e7c5579 | ||
|
|
3fa0046542 | ||
|
|
d6754685cc | ||
|
|
bb5721700b | ||
|
|
5c4a1dcbd5 | ||
|
|
4f488dee61 | ||
|
|
0d33758104 | ||
|
|
15b5fcbaf9 | ||
|
|
0718b0d5b0 | ||
|
|
0af2ba1b7d | ||
|
|
ea2fdecb83 | ||
|
|
07eb250083 | ||
|
|
ee04717e1b | ||
|
|
d7d22c36ed | ||
|
|
36bf91f920 | ||
|
|
98e9c3b800 | ||
|
|
a7f1137db8 | ||
|
|
f86159e717 | ||
|
|
6e93223ea3 | ||
|
|
a6d677043f | ||
|
|
eb1bf198ac | ||
|
|
0a2f82a19d | ||
|
|
27d9fba785 | ||
|
|
e6a783aff8 | ||
|
|
a767c353d2 | ||
|
|
a39d3d7233 | ||
|
|
40c7ee6355 | ||
|
|
eb760aa33f | ||
|
|
262c34abac | ||
|
|
8019b1b823 | ||
|
|
7a56e83fa3 | ||
|
|
a1c38d9cb2 | ||
|
|
734cf5819a | ||
|
|
35e0b6143a | ||
|
|
e019ae4aed | ||
|
|
c700046b76 | ||
|
|
326a6b729f | ||
|
|
e2ef0c5b94 | ||
|
|
c49f68ef3e | ||
|
|
d0f66f8624 | ||
|
|
4dfa720f2d | ||
|
|
f3b8bac477 | ||
|
|
ce6abad97f | ||
|
|
807e908f78 | ||
|
|
94c75b5262 | ||
|
|
eb0dd6b6e9 | ||
|
|
1c542c3e0d | ||
|
|
d46fcb33c5 | ||
|
|
d5e0da0eb6 | ||
|
|
e744e4cd98 | ||
|
|
9a96e8c704 | ||
|
|
31a94f468e | ||
|
|
7422b9b53b | ||
|
|
161a9d6ad2 | ||
|
|
f684cc3711 | ||
|
|
ab0c8c3496 | ||
|
|
47534b200d | ||
|
|
f2976af734 | ||
|
|
ee463058f1 | ||
|
|
c36a7471a8 | ||
|
|
6ea8cee551 | ||
|
|
69806c8839 | ||
|
|
690036aa30 | ||
|
|
8fe81c9d09 | ||
|
|
eda6b8d01b | ||
|
|
9f3acf8e28 | ||
|
|
31c9c82f6c | ||
|
|
cbf06b2165 | ||
|
|
e884eb9882 | ||
|
|
f8cbfea4a1 | ||
|
|
e01c0f054d | ||
|
|
12dc8c0d15 | ||
|
|
cb3582289f | ||
|
|
734d220d60 | ||
|
|
d725de7286 | ||
|
|
3e91773cd9 | ||
|
|
dc1d2a33a5 | ||
|
|
ac4074911d | ||
|
|
66cf60f9cb | ||
|
|
fffe8c355e | ||
|
|
b94d13b413 | ||
|
|
85e16c1233 | ||
|
|
2d53b7d9a4 | ||
|
|
23052a5c2e | ||
|
|
42b3a7c9d7 | ||
|
|
33315046cd | ||
|
|
2cf647d5ad | ||
|
|
b1d88ca643 | ||
|
|
b79b48cfbe | ||
|
|
a2bf19efc1 | ||
|
|
6636a0861d | ||
|
|
5d4078bcf4 | ||
|
|
396e3d3ec2 | ||
|
|
e88b01ed5b | ||
|
|
cb11aec84d | ||
|
|
3e3587c281 | ||
|
|
972e1675f6 | ||
|
|
05ee368763 | ||
|
|
291e2c8fa0 | ||
|
|
ad61fe4b54 | ||
|
|
439fe10e1e | ||
|
|
d05a36deed | ||
|
|
03fd73fab8 | ||
|
|
1d430cf62f | ||
|
|
9ed05f56d3 | ||
|
|
23aa3ec5ea | ||
|
|
a0f5ceddce | ||
|
|
3171943228 | ||
|
|
455f74d449 | ||
|
|
01bc254cd0 | ||
|
|
2a7cafbf20 | ||
|
|
bf1603839e | ||
|
|
8ed776e113 | ||
|
|
c3508dcdc6 | ||
|
|
3579f063d6 | ||
|
|
ecc6cb2b7c | ||
|
|
de6fe25751 | ||
|
|
d639a22cff | ||
|
|
b1f36a9024 | ||
|
|
d8d15149fc | ||
|
|
c07de97fd8 | ||
|
|
78eb79396e | ||
|
|
abce410897 | ||
|
|
9594185f11 | ||
|
|
35c20d505e | ||
|
|
b829d55752 | ||
|
|
e92d6ff84f | ||
|
|
0056c66d32 | ||
|
|
613fada49f | ||
|
|
b603197ae8 | ||
|
|
69b81836fe | ||
|
|
0be4e1e1b3 | ||
|
|
14c994ce14 | ||
|
|
dd39fadce7 | ||
|
|
5d24022209 | ||
|
|
c75eaca5b6 | ||
|
|
53798302da | ||
|
|
b799a8a108 | ||
|
|
3d6c0b75a1 | ||
|
|
c531d734d4 | ||
|
|
f239522a19 | ||
|
|
d1c36f50d5 | ||
|
|
484312e677 | ||
|
|
0dc5178083 | ||
|
|
08f2406ca2 | ||
|
|
41104b2d45 | ||
|
|
766824120a | ||
|
|
c39ac903a9 | ||
|
|
ca2bb60877 | ||
|
|
3c66f18a46 | ||
|
|
8a940a800a | ||
|
|
06bd5a9b03 | ||
|
|
93518802d6 | ||
|
|
75f637bd75 | ||
|
|
e38c7ff076 | ||
|
|
66fe7b88b0 | ||
|
|
16179d2f8e | ||
|
|
1316a2dd2a | ||
|
|
e5b5fc400a | ||
|
|
786ea52738 | ||
|
|
ed6756898f | ||
|
|
a5d2cbfd6f | ||
|
|
04268d7f4b | ||
|
|
156dae1d33 | ||
|
|
436d78eb93 | ||
|
|
f269ecd95e | ||
|
|
1e4fdcf615 | ||
|
|
b7004b3002 | ||
|
|
c6af59a3e7 | ||
|
|
32396b5eca | ||
|
|
2930537a51 | ||
|
|
16c91bca0a | ||
|
|
1f85d31663 | ||
|
|
684542d073 | ||
|
|
bab01abe27 | ||
|
|
c63f76dde7 | ||
|
|
79bd416c61 | ||
|
|
7710989dee | ||
|
|
fb0b7efc45 | ||
|
|
1af427e4a7 | ||
|
|
bb6d594ec7 | ||
|
|
a57dda2c2a | ||
|
|
a3a2df098b | ||
|
|
90d1c3e2c9 | ||
|
|
950406f1f9 | ||
|
|
064405126d | ||
|
|
6d447fd8a5 | ||
|
|
400228e139 | ||
|
|
edfae32484 | ||
|
|
1aed970ce3 | ||
|
|
445ff1e28e | ||
|
|
df9d3e3e16 | ||
|
|
4dc6694651 | ||
|
|
98c01c2f80 | ||
|
|
f698dd4077 | ||
|
|
0578116f1d | ||
|
|
abbad68eb8 | ||
|
|
90d274ffc4 | ||
|
|
449fd9f024 | ||
|
|
22c4ee6ef7 | ||
|
|
951fbc9b76 | ||
|
|
89f368a8b8 | ||
|
|
672c8acaca | ||
|
|
681617480a | ||
|
|
95dfac6f9b | ||
|
|
b2256679be | ||
|
|
9e914be975 | ||
|
|
edbe6915e0 | ||
|
|
fd3e8cd813 | ||
|
|
b640e2cc49 | ||
|
|
51af6de624 | ||
|
|
054c00e323 | ||
|
|
5664333490 | ||
|
|
ac78c64f9e | ||
|
|
1f748afed9 | ||
|
|
4a73c05435 | ||
|
|
fe8f2d87c7 | ||
|
|
a71a1edf2c | ||
|
|
87209b8f57 | ||
|
|
13279f1f20 | ||
|
|
b46dd2e0a2 | ||
|
|
3eb08735d4 | ||
|
|
c8e52882ca | ||
|
|
484dd4c33a | ||
|
|
94f40a54b4 | ||
|
|
818a50a3fb | ||
|
|
2041e9945e | ||
|
|
126048bac9 | ||
|
|
274aa50d74 | ||
|
|
c36d85a46c | ||
|
|
ac1fbeb962 | ||
|
|
de8c445f96 | ||
|
|
c23d42fea5 | ||
|
|
a0aa21103b | ||
|
|
ce242b10e2 | ||
|
|
6d386220d9 | ||
|
|
7ce1021798 | ||
|
|
9ad9e1204c | ||
|
|
a63061f5b2 | ||
|
|
4997331410 | ||
|
|
f7f4b6da8d | ||
|
|
c975676f6c | ||
|
|
d702c65a5b | ||
|
|
4391f9913e | ||
|
|
28c409fc6d | ||
|
|
449a04d39c | ||
|
|
4bcd7ba31e | ||
|
|
5bda301fec | ||
|
|
84c7c6eb12 | ||
|
|
a5b7980b06 | ||
|
|
f746f5bfa3 | ||
|
|
3ed2eedfda | ||
|
|
4ce8eaa158 | ||
|
|
7abb026819 | ||
|
|
abd55411d4 | ||
|
|
cb596c1413 | ||
|
|
6120a43fff | ||
|
|
02e7354b53 | ||
|
|
0a0d3503c0 | ||
|
|
105bcc6664 | ||
|
|
ceae51fe32 | ||
|
|
b054080fa1 | ||
|
|
565010408e | ||
|
|
5619780cc1 | ||
|
|
d69143487e | ||
|
|
2ef763a195 | ||
|
|
6ba4ed99c4 | ||
|
|
aec3c83191 | ||
|
|
19d8449981 | ||
|
|
91f276d925 | ||
|
|
6bda6a22e3 | ||
|
|
1fbe638950 | ||
|
|
1e9f23ebba | ||
|
|
bbb768c5cf | ||
|
|
5678196706 | ||
|
|
987637abed | ||
|
|
ff422ecfb2 | ||
|
|
1fb643cb69 | ||
|
|
88db8c3724 | ||
|
|
cf50a82ecc | ||
|
|
145fea5253 | ||
|
|
b97f140b78 | ||
|
|
1dda4d5f78 | ||
|
|
6f2cb66163 | ||
|
|
8b29f6f18d | ||
|
|
2cc410e61f | ||
|
|
548fda8dba | ||
|
|
b58bf8259d | ||
|
|
e6862e9739 | ||
|
|
7008e882c0 | ||
|
|
7d59faa650 | ||
|
|
eaa6484f24 | ||
|
|
6630b1d8a5 | ||
|
|
d0916e196c | ||
|
|
8e74a22c6f | ||
|
|
2ffcc853fd | ||
|
|
caeb5cb6ab | ||
|
|
4f72c527de | ||
|
|
71cb2e05d1 | ||
|
|
d1fb61e0de | ||
|
|
cb7188d473 | ||
|
|
02f22d9155 | ||
|
|
707b98849c | ||
|
|
d778378b37 | ||
|
|
f3f596b231 | ||
|
|
276ee9903a | ||
|
|
16a970b65d | ||
|
|
1647e45247 | ||
|
|
3477a84bbd | ||
|
|
c61fe3ce64 | ||
|
|
f94dc1fe44 | ||
|
|
1339aadf4e | ||
|
|
a14424ae5f | ||
|
|
f1e7ea118b | ||
|
|
9c6453e129 | ||
|
|
a6f9718131 | ||
|
|
47075edc97 | ||
|
|
25cee41358 | ||
|
|
d08d65a3af | ||
|
|
d14ed71191 | ||
|
|
f341f62b2b | ||
|
|
ec3d8a034f | ||
|
|
c452294bcc | ||
|
|
d5757499bc | ||
|
|
828dffffed | ||
|
|
af8d24d0eb | ||
|
|
ca85a97106 | ||
|
|
5eea829be9 | ||
|
|
e822e3562d | ||
|
|
f109d132e4 | ||
|
|
1fc1eae39a | ||
|
|
deb6aeae43 | ||
|
|
f48f126b3a | ||
|
|
e0d79bd332 | ||
|
|
5e75aab8ea | ||
|
|
36125c3539 | ||
|
|
72ced622d7 | ||
|
|
b362e2c28e | ||
|
|
2260a0a4cd | ||
|
|
3c64b33f5c | ||
|
|
5301086c68 | ||
|
|
5687279c8d | ||
|
|
139c8c2e78 | ||
|
|
6c2bf8ed26 | ||
|
|
f1ecdcf602 | ||
|
|
1eaefac12b | ||
|
|
215e33fa6c | ||
|
|
be17b75ad3 | ||
|
|
0c23f5e07e | ||
|
|
86e1fa8153 | ||
|
|
fae0651b0c | ||
|
|
720641f14c | ||
|
|
e8495b0c7b | ||
|
|
e80579a605 | ||
|
|
5967d39ca9 | ||
|
|
b82b50e2f0 | ||
|
|
e893e8c442 | ||
|
|
3db5efa264 | ||
|
|
5401c69163 | ||
|
|
b7030cffd9 | ||
|
|
73b4b4488e | ||
|
|
825402b0f9 | ||
|
|
f23071a214 | ||
|
|
f1b267cc9f | ||
|
|
3d12b84f1d | ||
|
|
adf1afc6ba | ||
|
|
0abbdc6b96 | ||
|
|
598f1dd2d8 | ||
|
|
594bd2de1c | ||
|
|
55083316fc | ||
|
|
8c87394b2b | ||
|
|
1dba4b85d0 | ||
|
|
22de68205b | ||
|
|
f76543ebfa | ||
|
|
f0c27f98b8 | ||
|
|
da678ba018 | ||
|
|
86ed1b4554 | ||
|
|
d8adc88c52 | ||
|
|
5119e49e47 | ||
|
|
cfb9f87418 | ||
|
|
06e348f80b | ||
|
|
f05e0174a0 | ||
|
|
6bea3ac157 | ||
|
|
e4d42a079c | ||
|
|
5bbdb7a8f7 | ||
|
|
3cf7cb1054 | ||
|
|
78274440cb | ||
|
|
e59934ca21 | ||
|
|
c93bb4ef98 | ||
|
|
e3763bade2 | ||
|
|
1ea1c02387 | ||
|
|
f6321a8e70 | ||
|
|
08168c6e7d | ||
|
|
b5030df4e3 | ||
|
|
8414c18866 | ||
|
|
038668efdf | ||
|
|
4441d76725 | ||
|
|
1f494feec4 | ||
|
|
1153fa093b | ||
|
|
c64ec92fb2 | ||
|
|
20e28d6c70 | ||
|
|
c0015c2c11 | ||
|
|
3880f2b3cc | ||
|
|
293847053a | ||
|
|
e042f49e27 | ||
|
|
c036b96848 | ||
|
|
e95dba2c25 | ||
|
|
9891d7aaa6 | ||
|
|
1ce66b4a81 | ||
|
|
63b1199bd5 | ||
|
|
47789d770d | ||
|
|
df58593ff4 | ||
|
|
e2ef7a74db | ||
|
|
cde52b10b1 | ||
|
|
43983f1bb3 | ||
|
|
eb4adcf797 | ||
|
|
32568ebf09 | ||
|
|
c53d195ed0 | ||
|
|
9b1c9ecb8b | ||
|
|
8cd204423a | ||
|
|
2abc5a88c5 | ||
|
|
4c0bc02c48 | ||
|
|
16b27c4ae8 | ||
|
|
dc5f4ab28b | ||
|
|
f88ecaa035 | ||
|
|
c0cf47138e | ||
|
|
e1127dc2e8 | ||
|
|
5d1b845cad | ||
|
|
355514ca38 | ||
|
|
518d0eba84 | ||
|
|
78fb8d2bdc | ||
|
|
5673b42ec4 | ||
|
|
438c8ff807 | ||
|
|
ee15143dd7 | ||
|
|
042caa3363 | ||
|
|
eb667f653c | ||
|
|
6cbd0d4537 | ||
|
|
11bf2a0e06 | ||
|
|
9485e4f4f3 | ||
|
|
865ee090c8 | ||
|
|
0fc356740a | ||
|
|
f285a46d05 | ||
|
|
1e1c99d8d6 | ||
|
|
c291419141 | ||
|
|
290a96d41f | ||
|
|
ca9518c48c | ||
|
|
d44d6ccfd8 | ||
|
|
cec0b2afe3 | ||
|
|
e85a69655c | ||
|
|
4b3e038323 | ||
|
|
c57190dead | ||
|
|
3d73167f53 | ||
|
|
2eefec54b4 | ||
|
|
ab72656fdf | ||
|
|
b6f2f98db6 | ||
|
|
c051c48600 | ||
|
|
04fc16587b | ||
|
|
f1d5a7d31f | ||
|
|
7197356928 | ||
|
|
a75d547af6 | ||
|
|
bdecb18e3e | ||
|
|
e2adcaa185 | ||
|
|
4193893349 | ||
|
|
53522a98b9 | ||
|
|
0e856ccfab | ||
|
|
6093ee7824 | ||
|
|
46f185bbeb | ||
|
|
8bfa880371 | ||
|
|
a7f0d03611 | ||
|
|
9ce899d3f3 | ||
|
|
e71c7fdb16 | ||
|
|
4258e6dab1 | ||
|
|
e59b683047 | ||
|
|
3c3033586d | ||
|
|
166c741beb | ||
|
|
629a0fa3a5 | ||
|
|
15ce862334 | ||
|
|
840557be0d | ||
|
|
72a00ac2df | ||
|
|
da0af12834 | ||
|
|
7617b6681c | ||
|
|
8e13c477a3 | ||
|
|
ff334b0e53 | ||
|
|
a98d6bf496 | ||
|
|
bbcf669bd9 | ||
|
|
328ecd0533 | ||
|
|
ab91717199 | ||
|
|
e4dfdc6b5c | ||
|
|
9e673f0073 | ||
|
|
353abffba9 | ||
|
|
bead76a5b7 | ||
|
|
9f5e724aec | ||
|
|
50bf6a991d | ||
|
|
1d584b1329 | ||
|
|
0c5a9fbc2c | ||
|
|
d5e58ecdd8 | ||
|
|
d6a9e7520d | ||
|
|
36b21e6e7b | ||
|
|
977a6b2794 | ||
|
|
fcddd503b7 | ||
|
|
3472bdcfd4 | ||
|
|
78f0ab3682 | ||
|
|
5a59ac4c6b | ||
|
|
0a19ba3014 | ||
|
|
88bd0f5328 | ||
|
|
6e2a69976b | ||
|
|
0500602ac3 | ||
|
|
e6887dc9d4 | ||
|
|
082c5c375e | ||
|
|
5977fa881e | ||
|
|
128fccb763 | ||
|
|
65697f5896 | ||
|
|
ee93f091ea | ||
|
|
33a8c7a9fb | ||
|
|
d1065cd266 | ||
|
|
0e44a630f0 | ||
|
|
7a21c6854b | ||
|
|
54ef916b93 | ||
|
|
4a770dee84 | ||
|
|
426a412ba1 | ||
|
|
f862a2af6d | ||
|
|
32867c9a07 | ||
|
|
cf0a8b2d05 | ||
|
|
4a17f5e820 | ||
|
|
694c37150c | ||
|
|
b04d07815f | ||
|
|
e7b523074a | ||
|
|
4e03155588 | ||
|
|
3e5abc60d3 | ||
|
|
edf80aba1a | ||
|
|
25ec4cf7b0 | ||
|
|
48b3d85265 | ||
|
|
ecfee00fec | ||
|
|
b5ce876327 | ||
|
|
d1342c6326 | ||
|
|
d3dcb2fd40 | ||
|
|
c448d048fd | ||
|
|
f0b3ee84b4 | ||
|
|
ab78c54d6a | ||
|
|
cee0d2706f | ||
|
|
8dea47f038 | ||
|
|
b7b1721145 | ||
|
|
5068f1666a | ||
|
|
37f0051d83 | ||
|
|
c780d04cee | ||
|
|
8c54e9a873 | ||
|
|
062f85e506 | ||
|
|
b3c0d54acd | ||
|
|
3d11afd872 | ||
|
|
96d15a8931 | ||
|
|
50915e6007 | ||
|
|
52007e5864 | ||
|
|
0c74d5ba01 | ||
|
|
0cd1959706 | ||
|
|
55ddf62df2 | ||
|
|
7f69d26247 | ||
|
|
b3c01f6750 | ||
|
|
34beee1edc | ||
|
|
7bc6a7b23f | ||
|
|
4a19655fb0 | ||
|
|
e32c453bc3 | ||
|
|
7b8d9193e2 | ||
|
|
74633126ce | ||
|
|
2fa5bb2028 | ||
|
|
010e6f8d7f | ||
|
|
3d5b6ec110 | ||
|
|
db2917b01c | ||
|
|
87d34f9c7f | ||
|
|
d20926e150 | ||
|
|
c453099f6b | ||
|
|
08569dbe6c | ||
|
|
a38ef3655b | ||
|
|
c586d3e81d | ||
|
|
c72745b0b2 | ||
|
|
8935146240 | ||
|
|
66aaceea91 | ||
|
|
4fe28ec53c | ||
|
|
efe8e07854 | ||
|
|
63dc606a9c | ||
|
|
131236305b | ||
|
|
45c9171a2c | ||
|
|
311d42626a | ||
|
|
cbf35de4c1 | ||
|
|
92efc65847 | ||
|
|
17e41f2391 | ||
|
|
fcd37808d4 | ||
|
|
6323badc19 | ||
|
|
e01468b492 | ||
|
|
f7f2390ce1 | ||
|
|
6118561bb5 | ||
|
|
6a9f10cd36 | ||
|
|
e7a4e03194 | ||
|
|
a42e8ae873 | ||
|
|
bcc5d63516 | ||
|
|
f97074dc84 | ||
|
|
bd81124b5a | ||
|
|
5a18f43b51 | ||
|
|
924b96ce2a | ||
|
|
47236dbaec | ||
|
|
437ac301db | ||
|
|
215740fab2 | ||
|
|
c66fc63452 | ||
|
|
02aefc40f3 | ||
|
|
cd42ca1bbd | ||
|
|
05bfd764b6 | ||
|
|
99f2026ce2 | ||
|
|
6a8717b294 | ||
|
|
c3f24a9cea | ||
|
|
805a055946 | ||
|
|
c0e17f6136 | ||
|
|
b38142ddb1 | ||
|
|
0b29514836 | ||
|
|
27ce87f652 | ||
|
|
a61a7b688a | ||
|
|
f74408f390 | ||
|
|
f5e0fd8de5 | ||
|
|
353b6f3d6d | ||
|
|
cb377f29c2 | ||
|
|
0e03ef385b | ||
|
|
ac2c723ec9 | ||
|
|
3fc0eae4c0 | ||
|
|
beed223281 | ||
|
|
9c9ce97525 | ||
|
|
4bfb1fcc71 | ||
|
|
15628a1206 | ||
|
|
a1411e3d52 | ||
|
|
66750f7349 | ||
|
|
f7f1397e52 | ||
|
|
3660ba28d7 | ||
|
|
e3cc283478 | ||
|
|
9a2735d035 | ||
|
|
06cd2f1eb3 | ||
|
|
41315827c1 | ||
|
|
415fd101d3 | ||
|
|
0747e162fa | ||
|
|
8d6ba6ee7a | ||
|
|
173a707a2e | ||
|
|
c8c95b4bd2 | ||
|
|
351b7557b6 | ||
|
|
4dc1962f9e | ||
|
|
335b9629b8 | ||
|
|
d16f0508bd | ||
|
|
da03331015 | ||
|
|
43128234bb | ||
|
|
bbcee8dfa7 | ||
|
|
5b8f84f59a | ||
|
|
cfcbf34305 | ||
|
|
4bd5789203 | ||
|
|
c4669013ab | ||
|
|
3ad6020e19 | ||
|
|
3fc8645d92 | ||
|
|
fb812d59b0 | ||
|
|
3e0371685f | ||
|
|
3bc3666215 | ||
|
|
b01a4af99e | ||
|
|
9745d5348c | ||
|
|
c858ff61f7 | ||
|
|
d39c0bee39 | ||
|
|
5788b90c52 | ||
|
|
037f466e1f | ||
|
|
71475d3cea | ||
|
|
a613c3b7e7 | ||
|
|
35668fe225 | ||
|
|
83a2abeee4 | ||
|
|
49d926013c | ||
|
|
c068ec5231 | ||
|
|
86d19657b1 | ||
|
|
67ad07020d | ||
|
|
fa2c4160b5 | ||
|
|
a37f019806 | ||
|
|
20449a0cb2 | ||
|
|
856a5c3369 | ||
|
|
2c193a1244 | ||
|
|
c4d10a6f2d | ||
|
|
d6589004c7 | ||
|
|
519f1318c6 | ||
|
|
7460a36ce2 | ||
|
|
c8f6e3f923 | ||
|
|
7b373e29ea | ||
|
|
94ce7a54c3 | ||
|
|
3bb6d8871b | ||
|
|
98394c6e37 | ||
|
|
e755ed927c | ||
|
|
37a9b64503 | ||
|
|
0de00da753 | ||
|
|
a4ae3c1e14 | ||
|
|
7f595169c1 | ||
|
|
abee7d25a4 | ||
|
|
49ba456189 | ||
|
|
6a83687f45 | ||
|
|
70f4453e3e | ||
|
|
cd0f6716e8 | ||
|
|
5042b85d21 | ||
|
|
5015f2d7d7 | ||
|
|
5277d4a266 | ||
|
|
f25b2d9ab9 | ||
|
|
0402d3de80 | ||
|
|
d3e03744cd | ||
|
|
34926eb66a | ||
|
|
b7585318c7 | ||
|
|
e70c3976db | ||
|
|
2c055db0d7 | ||
|
|
50dc1d3db3 | ||
|
|
2e368b50eb | ||
|
|
7b61ad639b | ||
|
|
741774c4a7 | ||
|
|
33c1259fa2 | ||
|
|
9ee04fb14c | ||
|
|
e9a5ae21e0 | ||
|
|
0bcf7e56c2 | ||
|
|
141f185c72 | ||
|
|
e1b2c64654 | ||
|
|
d7e5c6f9b5 | ||
|
|
1e5cc3b0e5 | ||
|
|
85c3b2996d | ||
|
|
9a57f71ee6 | ||
|
|
cf7727debc | ||
|
|
9133e764a5 | ||
|
|
c32938fa43 | ||
|
|
827c245777 | ||
|
|
88d020f9f2 | ||
|
|
54c891a447 | ||
|
|
6096fe75d3 | ||
|
|
a2e1d28efc | ||
|
|
a9fbe921a0 | ||
|
|
ee8042b458 | ||
|
|
1e1b14edc5 | ||
|
|
4c505b6470 | ||
|
|
471abfa760 | ||
|
|
590552d3e0 | ||
|
|
557faba31b | ||
|
|
2411749594 | ||
|
|
4e39a957c7 | ||
|
|
0cf719a744 | ||
|
|
fe7ad22cc1 | ||
|
|
59f82c5bfb | ||
|
|
a2b8933129 | ||
|
|
031b07264a | ||
|
|
87f8e93e12 | ||
|
|
5b5c31861a | ||
|
|
c315ca6c0c | ||
|
|
655b0636fa | ||
|
|
5bd8e172c9 | ||
|
|
ebb35fd65e | ||
|
|
df7195bda4 | ||
|
|
4bd950bb6f | ||
|
|
3f39b22a68 | ||
|
|
c019280e85 | ||
|
|
ff0b0ae1ab | ||
|
|
823015435d | ||
|
|
99854d7ecf | ||
|
|
bb7d9656a5 | ||
|
|
e41994a064 | ||
|
|
79df9ef8e6 | ||
|
|
3b52686125 | ||
|
|
af7c03212d | ||
|
|
bdeedb6c91 | ||
|
|
4d61d56639 | ||
|
|
430154d543 | ||
|
|
bb6631c7c6 | ||
|
|
9bb5e6f5ce | ||
|
|
05de07496f | ||
|
|
ab9dc66b8f | ||
|
|
f98042a7f8 | ||
|
|
247b4686fa | ||
|
|
c78cb27175 | ||
|
|
752603284d | ||
|
|
dcfe8bae1c | ||
|
|
8f4be963b2 | ||
|
|
61496d77a5 | ||
|
|
a12069f03f | ||
|
|
56b5619d24 | ||
|
|
bc61b92070 | ||
|
|
682fbd3b76 | ||
|
|
574ea453b0 | ||
|
|
2b806455a5 | ||
|
|
49898525af | ||
|
|
24493a4556 | ||
|
|
8de64c9495 | ||
|
|
02bbcf6b0e | ||
|
|
08963f269b | ||
|
|
2d0fd14d3c | ||
|
|
a15f78652f | ||
|
|
3d62312657 | ||
|
|
9b083eebd7 | ||
|
|
c7e57a4124 | ||
|
|
ee1a44ebeb | ||
|
|
5b70383ce6 | ||
|
|
abb2ad45ce | ||
|
|
087ea1f068 | ||
|
|
33f479c271 | ||
|
|
f936363440 | ||
|
|
315e4015de | ||
|
|
0c91b66f45 | ||
|
|
4354d3f121 | ||
|
|
3e8e3478a3 | ||
|
|
cf29530dd0 | ||
|
|
b0f13c17e2 | ||
|
|
1147cb56ba | ||
|
|
e29c3e4c70 | ||
|
|
b1b473d3cb | ||
|
|
c088d9ddd9 | ||
|
|
2b26981e3d | ||
|
|
f3e4576625 | ||
|
|
5dae2b8d2b | ||
|
|
62da364e5d | ||
|
|
58a318b754 | ||
|
|
ff07f49002 | ||
|
|
8d69d8553c | ||
|
|
a072954176 | ||
|
|
23de8185c6 | ||
|
|
d9c80e9b6a | ||
|
|
dcc4272c4e | ||
|
|
2060940ecc | ||
|
|
14274ef67b | ||
|
|
70661c179f | ||
|
|
8a0ae68f27 | ||
|
|
06ada87370 | ||
|
|
a5d9b71eb6 | ||
|
|
aa3385d516 | ||
|
|
af60b41c89 | ||
|
|
506bf45272 | ||
|
|
2655daa2f4 | ||
|
|
0b095ce5ce | ||
|
|
ae461b77f8 | ||
|
|
4f3b9dc61a | ||
|
|
a246702511 | ||
|
|
2ae47d64b7 | ||
|
|
6a76349730 | ||
|
|
e6482554f5 | ||
|
|
c4ee2d7386 | ||
|
|
a74ec0effa | ||
|
|
e33027c624 | ||
|
|
b0be323e89 | ||
|
|
a22661670f | ||
|
|
442f35a1fd | ||
|
|
5aef16c2aa | ||
|
|
e512e38efb | ||
|
|
7ea0b138bc | ||
|
|
d73fb5a23c | ||
|
|
610298a25d | ||
|
|
7b50a6490d | ||
|
|
fdb82d5dd4 | ||
|
|
a587697883 | ||
|
|
3204c077d1 | ||
|
|
d52825a5b1 | ||
|
|
84c965d459 | ||
|
|
22cd6989a0 | ||
|
|
a9ae555b88 | ||
|
|
d4dc428124 | ||
|
|
f5608d2c94 | ||
|
|
bcad937003 | ||
|
|
53c918cc78 | ||
|
|
009f81fe4f | ||
|
|
81ce4a0229 | ||
|
|
6bcd9adb9e | ||
|
|
61e7b735dc | ||
|
|
44c15fc1ef | ||
|
|
9d3fe1258a | ||
|
|
e72ba39c41 | ||
|
|
ffcc487763 | ||
|
|
473ce8b617 | ||
|
|
70436fa535 | ||
|
|
4921f61e76 | ||
|
|
75b390cf93 | ||
|
|
dcda8fe538 | ||
|
|
6edae86516 | ||
|
|
f163e6d8cc | ||
|
|
742660591f | ||
|
|
ddbcf5f470 | ||
|
|
6becf22a2f | ||
|
|
32246fd26b | ||
|
|
42e3ab91a7 | ||
|
|
6daf70b745 | ||
|
|
12298ea392 | ||
|
|
5e77e8809a | ||
|
|
1b3f84c9ad | ||
|
|
e06539e76d | ||
|
|
fdb3fa6801 | ||
|
|
1392a855bb | ||
|
|
d4cab6e62f | ||
|
|
5d2b6585c6 | ||
|
|
a2f89347a9 | ||
|
|
50ee23ebfa | ||
|
|
719c51f61a | ||
|
|
3e2a614eb9 | ||
|
|
abb23631df | ||
|
|
dae5a063cf | ||
|
|
e57a507ba0 | ||
|
|
4e194d7766 | ||
|
|
d34ea79d93 | ||
|
|
ee73659f16 | ||
|
|
394417ff07 | ||
|
|
a85b1f016d | ||
|
|
c6f97f20fb | ||
|
|
b66600338e | ||
|
|
4ae9482d50 | ||
|
|
72fcf7b2ab | ||
|
|
a8b6bbd6bc | ||
|
|
e5d04f4467 | ||
|
|
62ac8e1952 | ||
|
|
d61f34ec12 | ||
|
|
252fdd03d7 | ||
|
|
0fe5c5dac3 | ||
|
|
037e992de4 | ||
|
|
12023073f4 | ||
|
|
0db0694aad | ||
|
|
d4f763aa68 | ||
|
|
4e708c81ca | ||
|
|
041d00301c | ||
|
|
0ec51b124b | ||
|
|
6012926e82 | ||
|
|
ca9c1bca4a | ||
|
|
0d957ea71d | ||
|
|
697926641f | ||
|
|
2bf65fda1f | ||
|
|
4262ac3c89 | ||
|
|
d90756e8ef | ||
|
|
9b9ab983d6 | ||
|
|
d5746652a2 | ||
|
|
47f9e171fc | ||
|
|
a1bc18e5cf | ||
|
|
0cd5bf7967 | ||
|
|
0205f9ede3 | ||
|
|
960c83315b | ||
|
|
f9c84fb6f4 | ||
|
|
1b14561748 | ||
|
|
27519e1dfa | ||
|
|
46e2da24a4 | ||
|
|
dbbcbed344 | ||
|
|
c0db88168b | ||
|
|
d98435b4dc | ||
|
|
595dc6de03 | ||
|
|
322e054f1a | ||
|
|
7f606e1e64 | ||
|
|
b0491b0ee2 | ||
|
|
0e69356ca9 | ||
|
|
90348e08c1 | ||
|
|
c60d7e2db8 | ||
|
|
50d3a14825 | ||
|
|
0ff3ba5250 | ||
|
|
02cc3f9116 | ||
|
|
62861d1e13 | ||
|
|
cd3c7f1b97 | ||
|
|
0c8886ad0c | ||
|
|
9d24325207 | ||
|
|
126a165f55 | ||
|
|
1c6e6842c6 | ||
|
|
6f5a55b5fe | ||
|
|
530f5a700e | ||
|
|
441c1f9ab7 | ||
|
|
d98d885924 | ||
|
|
6aa91d89e0 | ||
|
|
ecc54b07c7 | ||
|
|
ce11a38d70 | ||
|
|
c9e0b29878 | ||
|
|
3a96fec03b | ||
|
|
7a231b3166 | ||
|
|
31f6934787 | ||
|
|
c5dc89886d | ||
|
|
545cc0b026 | ||
|
|
9ff42053c3 | ||
|
|
41a0ce146d | ||
|
|
709fa06af6 | ||
|
|
5623400557 | ||
|
|
1351e02065 | ||
|
|
4f030ac45c | ||
|
|
c7c81a1f7e | ||
|
|
ae74965774 | ||
|
|
e952c98ca8 | ||
|
|
6f00c422c7 | ||
|
|
e592cedbb4 | ||
|
|
a10bb4b2fa | ||
|
|
c89eec4261 | ||
|
|
edc0fec808 | ||
|
|
bb5474660c | ||
|
|
63f16b5f99 | ||
|
|
0b84c469d3 | ||
|
|
ff5d18d327 | ||
|
|
1980b3fae4 | ||
|
|
6714b8958b | ||
|
|
f601a5d356 | ||
|
|
e7f60032bc | ||
|
|
589bd8694f | ||
|
|
eace1a9840 | ||
|
|
3ddb203317 | ||
|
|
84b8e77aaa | ||
|
|
247eefc33a | ||
|
|
fd54a6a3ad | ||
|
|
a2ffd7de2e | ||
|
|
cea2fb0fe6 | ||
|
|
23d7d7d140 | ||
|
|
f8179bc5a9 | ||
|
|
a4e93558aa | ||
|
|
cb3cae0f30 | ||
|
|
04e0199790 | ||
|
|
453f3405a7 | ||
|
|
a8585df81b | ||
|
|
c96c681758 | ||
|
|
6007609f71 | ||
|
|
5a6ed252c4 | ||
|
|
641dff8991 | ||
|
|
ee3115550e | ||
|
|
d39852c0cf | ||
|
|
c57894633f | ||
|
|
a896904ae7 | ||
|
|
6bfcd253f8 | ||
|
|
456f7e7304 | ||
|
|
ed7917f9df | ||
|
|
2a25ece363 | ||
|
|
1c90c3af42 | ||
|
|
6ca6290f6a | ||
|
|
fd2c5d46ad | ||
|
|
a6c110f558 | ||
|
|
02b33f988f | ||
|
|
7bf6e6188a | ||
|
|
26394813f4 | ||
|
|
f21f42f11e | ||
|
|
68a8556cd2 | ||
|
|
e4d8b1c4d2 | ||
|
|
eac467fe9a | ||
|
|
1bb9c912cd | ||
|
|
02d470892f | ||
|
|
161f62dc27 | ||
|
|
f53472e717 |
259
.circleci/config.yml
Normal file
259
.circleci/config.yml
Normal file
@@ -0,0 +1,259 @@
|
||||
version: 2
|
||||
|
||||
jobs:
|
||||
build:
|
||||
resource_class: medium+
|
||||
docker:
|
||||
- image: circleci/node:9
|
||||
environment:
|
||||
CONTRACTS_COMMIT_HASH: '9ed05f5'
|
||||
working_directory: ~/repo
|
||||
steps:
|
||||
- checkout
|
||||
- run: echo 'export PATH=$HOME/CIRCLE_PROJECT_REPONAME/node_modules/.bin:$PATH' >> $BASH_ENV
|
||||
- restore_cache:
|
||||
name: Restore Yarn Package Cache
|
||||
keys:
|
||||
- yarn-packages-{{ .Branch }}-{{ checksum "yarn.lock" }}
|
||||
- yarn-packages-{{ .Branch }}
|
||||
- yarn-packages-master
|
||||
- yarn-packages-
|
||||
- run:
|
||||
name: install-yarn
|
||||
command: sudo npm install --global yarn@1.9.4
|
||||
- run:
|
||||
name: yarn
|
||||
command: yarn --frozen-lockfile install || yarn --frozen-lockfile install
|
||||
- save_cache:
|
||||
name: Save Yarn Package Cache
|
||||
key: yarn-packages-{{ .Branch }}-{{ checksum "yarn.lock" }}
|
||||
paths:
|
||||
- node_modules/
|
||||
- run: >
|
||||
if [ -z "$(git diff --name-only development packages/website)" ]; then
|
||||
yarn build --exclude website
|
||||
else
|
||||
yarn build
|
||||
fi
|
||||
- save_cache:
|
||||
key: repo-{{ .Environment.CIRCLE_SHA1 }}
|
||||
paths:
|
||||
- ~/repo
|
||||
test-contracts-ganache:
|
||||
docker:
|
||||
- image: circleci/node:9
|
||||
working_directory: ~/repo
|
||||
steps:
|
||||
- restore_cache:
|
||||
keys:
|
||||
- repo-{{ .Environment.CIRCLE_SHA1 }}
|
||||
- run: yarn wsrun test:circleci contracts
|
||||
test-contracts-geth:
|
||||
docker:
|
||||
- image: circleci/node:9
|
||||
- image: albrow/0x-devnet
|
||||
working_directory: ~/repo
|
||||
steps:
|
||||
- restore_cache:
|
||||
keys:
|
||||
- repo-{{ .Environment.CIRCLE_SHA1 }}
|
||||
# HACK(albrow): we need to sleep 10 seconds to ensure the devnet is
|
||||
# initialized
|
||||
- run: sleep 10 && TEST_PROVIDER=geth yarn wsrun test contracts
|
||||
test-publish:
|
||||
resource_class: medium+
|
||||
docker:
|
||||
- image: circleci/node:9
|
||||
- image: verdaccio/verdaccio
|
||||
working_directory: ~/repo
|
||||
steps:
|
||||
- restore_cache:
|
||||
keys:
|
||||
- repo-{{ .Environment.CIRCLE_SHA1 }}
|
||||
- run: yarn test:publish:circleci
|
||||
test-doc-generation:
|
||||
docker:
|
||||
- image: circleci/node:9
|
||||
working_directory: ~/repo
|
||||
steps:
|
||||
- restore_cache:
|
||||
keys:
|
||||
- repo-{{ .Environment.CIRCLE_SHA1 }}
|
||||
- run: yarn test:generate_docs:circleci
|
||||
test-rest:
|
||||
docker:
|
||||
- image: circleci/node:9
|
||||
working_directory: ~/repo
|
||||
steps:
|
||||
- restore_cache:
|
||||
keys:
|
||||
- repo-{{ .Environment.CIRCLE_SHA1 }}
|
||||
- run: yarn wsrun test:circleci @0xproject/abi-gen
|
||||
- run: yarn wsrun test:circleci @0xproject/assert
|
||||
- run: yarn wsrun test:circleci @0xproject/base-contract
|
||||
- run: yarn wsrun test:circleci @0xproject/connect
|
||||
- run: yarn wsrun test:circleci @0xproject/contract-wrappers
|
||||
- run: yarn wsrun test:circleci @0xproject/dev-utils
|
||||
- run: yarn wsrun test:circleci @0xproject/json-schemas
|
||||
- run: yarn wsrun test:circleci @0xproject/metacoin
|
||||
- run: yarn wsrun test:circleci @0xproject/order-utils
|
||||
- run: yarn wsrun test:circleci @0xproject/order-watcher
|
||||
- run: yarn wsrun test:circleci @0xproject/sol-compiler
|
||||
- run: yarn wsrun test:circleci @0xproject/sol-cov
|
||||
- run: yarn wsrun test:circleci @0xproject/sra-report
|
||||
- run: yarn wsrun test:circleci @0xproject/subproviders
|
||||
- run: yarn wsrun test:circleci @0xproject/web3-wrapper
|
||||
- run: yarn wsrun test:circleci @0xproject/utils
|
||||
- save_cache:
|
||||
key: coverage-abi-gen-{{ .Environment.CIRCLE_SHA1 }}
|
||||
paths:
|
||||
- ~/repo/packages/abi-gen/coverage/lcov.info
|
||||
- save_cache:
|
||||
key: coverage-assert-{{ .Environment.CIRCLE_SHA1 }}
|
||||
paths:
|
||||
- ~/repo/packages/assert/coverage/lcov.info
|
||||
- save_cache:
|
||||
key: coverage-base-contract-{{ .Environment.CIRCLE_SHA1 }}
|
||||
paths:
|
||||
- ~/repo/packages/base-contract/coverage/lcov.info
|
||||
- save_cache:
|
||||
key: coverage-connect-{{ .Environment.CIRCLE_SHA1 }}
|
||||
paths:
|
||||
- ~/repo/packages/connect/coverage/lcov.info
|
||||
- save_cache:
|
||||
key: coverage-contract-wrappers-{{ .Environment.CIRCLE_SHA1 }}
|
||||
paths:
|
||||
- ~/repo/packages/contract-wrappers/coverage/lcov.info
|
||||
- save_cache:
|
||||
key: coverage-dev-utils-{{ .Environment.CIRCLE_SHA1 }}
|
||||
paths:
|
||||
- ~/repo/packages/dev-utils/coverage/lcov.info
|
||||
- save_cache:
|
||||
key: coverage-json-schemas-{{ .Environment.CIRCLE_SHA1 }}
|
||||
paths:
|
||||
- ~/repo/packages/json-schemas/coverage/lcov.info
|
||||
- save_cache:
|
||||
key: coverage-metacoin-{{ .Environment.CIRCLE_SHA1 }}
|
||||
paths:
|
||||
- ~/repo/packages/metacoin/coverage/lcov.info
|
||||
- save_cache:
|
||||
key: coverage-order-utils-{{ .Environment.CIRCLE_SHA1 }}
|
||||
paths:
|
||||
- ~/repo/packages/order-utils/coverage/lcov.info
|
||||
- save_cache:
|
||||
key: coverage-order-watcher-{{ .Environment.CIRCLE_SHA1 }}
|
||||
paths:
|
||||
- ~/repo/packages/order-watcher/coverage/lcov.info
|
||||
- save_cache:
|
||||
key: coverage-sol-compiler-{{ .Environment.CIRCLE_SHA1 }}
|
||||
paths:
|
||||
- ~/repo/packages/sol-compiler/coverage/lcov.info
|
||||
- save_cache:
|
||||
key: coverage-sol-cov-{{ .Environment.CIRCLE_SHA1 }}
|
||||
paths:
|
||||
- ~/repo/packages/sol-cov/coverage/lcov.info
|
||||
- save_cache:
|
||||
key: coverage-sra-report-{{ .Environment.CIRCLE_SHA1 }}
|
||||
paths:
|
||||
- ~/repo/packages/sra-report/coverage/lcov.info
|
||||
- save_cache:
|
||||
key: coverage-subproviders-{{ .Environment.CIRCLE_SHA1 }}
|
||||
paths:
|
||||
- ~/repo/packages/subproviders/coverage/lcov.info
|
||||
- save_cache:
|
||||
key: coverage-web3-wrapper-{{ .Environment.CIRCLE_SHA1 }}
|
||||
paths:
|
||||
- ~/repo/packages/web3-wrapper/coverage/lcov.info
|
||||
static-tests:
|
||||
working_directory: ~/repo
|
||||
docker:
|
||||
- image: circleci/node:9
|
||||
steps:
|
||||
- restore_cache:
|
||||
keys:
|
||||
- repo-{{ .Environment.CIRCLE_SHA1 }}
|
||||
- run: yarn prettier:ci
|
||||
- run: yarn lerna run lint
|
||||
submit-coverage:
|
||||
docker:
|
||||
- image: circleci/node:9
|
||||
working_directory: ~/repo
|
||||
steps:
|
||||
- restore_cache:
|
||||
keys:
|
||||
- repo-{{ .Environment.CIRCLE_SHA1 }}
|
||||
- restore_cache:
|
||||
keys:
|
||||
- coverage-abi-gen-{{ .Environment.CIRCLE_SHA1 }}
|
||||
- restore_cache:
|
||||
keys:
|
||||
- coverage-assert-{{ .Environment.CIRCLE_SHA1 }}
|
||||
- restore_cache:
|
||||
keys:
|
||||
- coverage-base-contract-{{ .Environment.CIRCLE_SHA1 }}
|
||||
- restore_cache:
|
||||
keys:
|
||||
- coverage-connect-{{ .Environment.CIRCLE_SHA1 }}
|
||||
- restore_cache:
|
||||
keys:
|
||||
- coverage-contract-wrappers-{{ .Environment.CIRCLE_SHA1 }}
|
||||
- restore_cache:
|
||||
keys:
|
||||
- coverage-dev-utils-{{ .Environment.CIRCLE_SHA1 }}
|
||||
- restore_cache:
|
||||
keys:
|
||||
- coverage-json-schemas-{{ .Environment.CIRCLE_SHA1 }}
|
||||
- restore_cache:
|
||||
keys:
|
||||
- coverage-metacoin-{{ .Environment.CIRCLE_SHA1 }}
|
||||
- restore_cache:
|
||||
keys:
|
||||
- coverage-order-utils-{{ .Environment.CIRCLE_SHA1 }}
|
||||
- restore_cache:
|
||||
keys:
|
||||
- coverage-order-watcher-{{ .Environment.CIRCLE_SHA1 }}
|
||||
- restore_cache:
|
||||
keys:
|
||||
- coverage-sol-compiler-{{ .Environment.CIRCLE_SHA1 }}
|
||||
- restore_cache:
|
||||
keys:
|
||||
- coverage-sol-cov-{{ .Environment.CIRCLE_SHA1 }}
|
||||
- restore_cache:
|
||||
keys:
|
||||
- coverage-sra-report-{{ .Environment.CIRCLE_SHA1 }}
|
||||
- restore_cache:
|
||||
keys:
|
||||
- coverage-subproviders-{{ .Environment.CIRCLE_SHA1 }}
|
||||
- restore_cache:
|
||||
keys:
|
||||
- coverage-web3-wrapper-{{ .Environment.CIRCLE_SHA1 }}
|
||||
- restore_cache:
|
||||
keys:
|
||||
- coverage-contracts-{{ .Environment.CIRCLE_SHA1 }}
|
||||
- run: yarn report_coverage
|
||||
workflows:
|
||||
version: 2
|
||||
main:
|
||||
jobs:
|
||||
- build
|
||||
- test-contracts-ganache:
|
||||
requires:
|
||||
- build
|
||||
- test-contracts-geth:
|
||||
requires:
|
||||
- build
|
||||
- test-rest:
|
||||
requires:
|
||||
- build
|
||||
- static-tests:
|
||||
requires:
|
||||
- build
|
||||
- test-publish:
|
||||
requires:
|
||||
- build
|
||||
- test-doc-generation:
|
||||
requires:
|
||||
- build
|
||||
- submit-coverage:
|
||||
requires:
|
||||
- test-rest
|
||||
12
.editorconfig
Normal file
12
.editorconfig
Normal file
@@ -0,0 +1,12 @@
|
||||
# EditorConfig http://EditorConfig.org
|
||||
|
||||
# top-most EditorConfig file
|
||||
root = true
|
||||
|
||||
# All files
|
||||
[*]
|
||||
end_of_line = lf
|
||||
insert_final_newline = true
|
||||
charset = utf-8
|
||||
indent_style = space
|
||||
indent_size = 4
|
||||
1
.gitattributes
vendored
Normal file
1
.gitattributes
vendored
Normal file
@@ -0,0 +1 @@
|
||||
*.sol linguist-language=Solidity
|
||||
48
.gitignore
vendored
48
.gitignore
vendored
@@ -41,6 +41,7 @@ typings/
|
||||
|
||||
# Optional npm cache directory
|
||||
.npm
|
||||
.npmrc
|
||||
|
||||
# Optional eslint cache
|
||||
.eslintcache
|
||||
@@ -58,9 +59,52 @@ typings/
|
||||
.env
|
||||
|
||||
# built library using in commonjs module syntax
|
||||
lib
|
||||
lib/
|
||||
# UMD bundles that export the global variable
|
||||
_bundles
|
||||
|
||||
# generated documentation
|
||||
docs
|
||||
generated_docs/
|
||||
|
||||
TODO.md
|
||||
|
||||
# VSCode file
|
||||
.vscode
|
||||
|
||||
packages/website/public/bundle*
|
||||
packages/react-docs/example/public/bundle*
|
||||
|
||||
# server cli
|
||||
packages/testnet-faucets/server/
|
||||
|
||||
# generated contract artifacts/
|
||||
packages/sol-cov/test/fixtures/artifacts/
|
||||
packages/metacoin/artifacts/
|
||||
packages/order-watcher/test/artifacts/
|
||||
packages/contract-wrappers/test/artifacts/
|
||||
packages/contract-wrappers/src/artifacts/
|
||||
packages/order-watcher/src/artifacts/
|
||||
packages/0x.js/src/artifacts/
|
||||
packages/order-utils/src/artifacts/
|
||||
|
||||
# unstable generated contract artifacts:
|
||||
packages/migrations/artifacts/development/
|
||||
|
||||
# generated contract watcher
|
||||
packages/0x.js/src/generated_contract_wrappers/
|
||||
packages/contracts/generated_contract_wrappers/
|
||||
packages/contract-wrappers/src/contract_wrappers/generated/
|
||||
packages/metacoin/src/contract_wrappers
|
||||
packages/fill-scenarios/src/generated_contract_wrappers/
|
||||
packages/order-watcher/src/generated_contract_wrappers/
|
||||
packages/order-utils/src/generated_contract_wrappers/
|
||||
packages/migrations/src/1.0.0/contract_wrappers
|
||||
packages/migrations/src/2.0.0-testnet/contract_wrappers
|
||||
packages/migrations/src/2.0.0/contract_wrappers
|
||||
packages/migrations/src/development/contract_wrappers
|
||||
|
||||
# solc-bin in sol-compiler
|
||||
packages/sol-compiler/solc_bin/
|
||||
|
||||
# Monorepo scripts
|
||||
packages/*/scripts/
|
||||
|
||||
@@ -1,6 +0,0 @@
|
||||
.*
|
||||
tsconfig.json
|
||||
tslint.json
|
||||
webpack.config.js
|
||||
yarn.lock
|
||||
docs
|
||||
27
.prettierignore
Normal file
27
.prettierignore
Normal file
@@ -0,0 +1,27 @@
|
||||
lib
|
||||
.nyc_output
|
||||
/packages/contract-wrappers/src/contract_wrappers/generated/
|
||||
/packages/metacoin/src/contract_wrappers
|
||||
/packages/0x.js/src/generated_contract_wrappers/
|
||||
/packages/contracts/generated_contract_wrappers/
|
||||
/packages/fill-scenarios/src/generated_contract_wrappers/
|
||||
/packages/order-watcher/src/generated_contract_wrappers/
|
||||
/packages/order-utils/src/generated_contract_wrappers/
|
||||
/packages/migrations/src/1.0.0/contract_wrappers
|
||||
/packages/migrations/src/2.0.0-testnet/contract_wrappers
|
||||
/packages/migrations/src/2.0.0/contract_wrappers
|
||||
/packages/0x.js/src/artifacts
|
||||
/packages/contracts/src/artifacts
|
||||
/packages/contract-wrappers/src/artifacts
|
||||
/packages/order-watcher/src/artifacts
|
||||
/packages/metacoin/artifacts
|
||||
/packages/sra-spec/public/
|
||||
/packages/contract-wrappers/test/artifacts
|
||||
/packages/order-watcher/test/artifacts
|
||||
/packages/migrations/artifacts/1.0.0
|
||||
/packages/migrations/artifacts/2.0.0-testnet
|
||||
/packages/migrations/artifacts/2.0.0
|
||||
/packages/migrations/artifacts/development
|
||||
package.json
|
||||
scripts/postpublish_utils.js
|
||||
packages/sol-cov/test/fixtures/artifacts
|
||||
6
.prettierrc
Normal file
6
.prettierrc
Normal file
@@ -0,0 +1,6 @@
|
||||
{
|
||||
"tabWidth": 4,
|
||||
"printWidth": 120,
|
||||
"trailingComma": all,
|
||||
"singleQuote": true
|
||||
}
|
||||
211
CHANGELOG.md
211
CHANGELOG.md
@@ -1,211 +0,0 @@
|
||||
# CHANGELOG
|
||||
|
||||
v0.22.6 - _November 10, 2017_
|
||||
------------------------
|
||||
* Add a timeout parameter to transaction awaiting (#206)
|
||||
|
||||
v0.22.5 - _November 7, 2017_
|
||||
------------------------
|
||||
* Re-publish v0.22.4 to fix publishing issue
|
||||
|
||||
v0.22.4 - _October 25, 2017_
|
||||
------------------------
|
||||
* Upgraded bignumber.js to a new version that ships with native typings
|
||||
|
||||
v0.22.3 - _October 25, 2017_
|
||||
------------------------
|
||||
* Fixed an issue with new version of testrpc and unlimited proxy allowance (#199)
|
||||
|
||||
v0.22.2 - _October 24, 2017_
|
||||
------------------------
|
||||
* Fixed rounding of maker fill amount and incorrect validation of partial fees (#197)
|
||||
|
||||
v0.22.0 - _October 16, 2017_
|
||||
------------------------
|
||||
* Started using `OrderFillRequest` interface instead of `OrderFillOrKillRequest` interface for `zeroEx.exchange.batchFillOrKill` (#187)
|
||||
* Removed `OrderFillOrKillRequest` (#187)
|
||||
|
||||
v0.21.4 - _October 13, 2017_
|
||||
------------------------
|
||||
* Made 0x.js more type-safe by making `getLogsAsync` and `subscribe/subscribeAsync` generics parametrized with arg type (#194)
|
||||
|
||||
v0.21.3 - _October 12, 2017_
|
||||
------------------------
|
||||
* Fixed a bug causing order fills to throw `INSUFFICIENT_TAKER_ALLOWANCE` (#193)
|
||||
|
||||
v0.21.2 - _October 11, 2017_
|
||||
------------------------
|
||||
* Exported `ContractEventArg` as a public type (#190)
|
||||
|
||||
v0.21.1 - _October 11, 2017_
|
||||
------------------------
|
||||
* Fixed a bug in subscriptions (#189)
|
||||
|
||||
v0.21.0 - _October 10, 2017_
|
||||
------------------------
|
||||
* Complete rewrite of subscription logic (#182)
|
||||
* Subscriptions no longer return historical logs. If you want them - use `getLogsAsync`
|
||||
* Subscriptions now use [ethereumjs-blockstream](https://github.com/ethereumjs/ethereumjs-blockstream) under the hood
|
||||
* Subscriptions correctly handle block re-orgs (forks)
|
||||
* Subscriptions correctly backfill logs (connection problems)
|
||||
* They no longer setup filters on the underlying nodes, so you can use them with infura without a filter Subprovider
|
||||
* Removed `ContractEventEmitter` and added `LogEvent`
|
||||
* Renamed `zeroEx.token.subscribeAsync` to `zeroEx.token.subscribe`
|
||||
* Added `zeroEx.token.unsubscribe` and `zeroEx.exchange.unsubscribe`
|
||||
* Renamed `zeroEx.exchange.stopWatchingAllEventsAsync` to `zeroEx.exhange.unsubscribeAll`
|
||||
* Renamed `zeroEx.token.stopWatchingAllEventsAsync` to `zeroEx.token.unsubscribeAll`
|
||||
* Fixed the batch fills validation by emulating all balance & proxy allowance changes (#185)
|
||||
|
||||
v0.20.0 - _October 5, 2017_
|
||||
------------------------
|
||||
* Add `zeroEx.token.getLogsAsync` (#178)
|
||||
* Add `zeroEx.exchange.getLogsAsync` (#178)
|
||||
* Fixed fees validation when one of the tokens transferred is ZRX (#181)
|
||||
|
||||
v0.19.0 - _September 29, 2017_
|
||||
------------------------
|
||||
* Made order validation optional (#172)
|
||||
* Added Ropsten testnet support (#173)
|
||||
* Fixed a bug causing awaitTransactionMinedAsync to DDos backend nodes (#175)
|
||||
|
||||
v0.18.0 - _September 26, 2017_
|
||||
------------------------
|
||||
* Added `zeroEx.exchange.validateOrderFillableOrThrowAsync` to simplify orderbook pruning (#170)
|
||||
|
||||
v0.17.0 - _September 26, 2017_
|
||||
------------------------
|
||||
* Made `zeroEx.exchange.getZRXTokenAddressAsync` public (#171)
|
||||
|
||||
v0.16.0 - _September 20, 2017_
|
||||
------------------------
|
||||
* Added the ability to specify custom contract addresses to be used with 0x.js (#165)
|
||||
* ZeroExConfig.exchangeContractAddress
|
||||
* ZeroExConfig.tokenRegistryContractAddress
|
||||
* ZeroExConfig.etherTokenContractAddress
|
||||
* Added `zeroEx.tokenRegistry.getContractAddressAsync` (#165)
|
||||
|
||||
v0.15.0 - _September 8, 2017_
|
||||
------------------------
|
||||
* Added the ability to specify a historical `blockNumber` at which to query the blockchain's state when calling a token or exchange method (#161)
|
||||
|
||||
v0.14.2 - _September 7, 2017_
|
||||
------------------------
|
||||
* Fixed an issue with bignumber.js types not found (#160)
|
||||
|
||||
v0.14.1 - _September 7, 2017_
|
||||
------------------------
|
||||
* Fixed an issue with Artifact type not found (#159)
|
||||
|
||||
v0.14.0 - _September 6, 2017_
|
||||
------------------------
|
||||
* Added `zeroEx.exchange.throwLogErrorsAsErrors` method to public interface (#157)
|
||||
* Fixed an issue with overlapping async intervals in `zeroEx.awaitTransactionMinedAsync` (#157)
|
||||
* Fixed an issue with log decoder returning `BigNumber`s as `strings` (#157)
|
||||
|
||||
v0.13.0 - _September 6, 2017_
|
||||
------------------------
|
||||
* Made all the functions submitting transactions to the network to immediately return transaction hash (#151)
|
||||
* Added `zeroEx.awaitTransactionMinedAsync` (#151)
|
||||
* Added `TransactionReceiptWithDecodedLogs`, `LogWithDecodedArgs`, `DecodedLogArgs` to public types (#151)
|
||||
* Added signature validation to `validateFillOrderThrowIfInvalidAsync` (#152)
|
||||
|
||||
v0.12.1 - _September 2, 2017_
|
||||
------------------------
|
||||
* Added the support for web3@1.x.x provider (#142)
|
||||
* Added the optional `zeroExConfig` parameter to the constructor of `ZeroEx` (#139)
|
||||
* Added the ability to specify `gasPrice` when instantiating `ZeroEx` (#139)
|
||||
|
||||
v0.11.0 - _August 24, 2017_
|
||||
------------------------
|
||||
* Added `zeroEx.token.setUnlimitedProxyAllowanceAsync` (#137)
|
||||
* Added `zeroEx.token.setUnlimitedAllowanceAsync` (#137)
|
||||
* Added `zeroEx.token.UNLIMITED_ALLOWANCE_IN_BASE_UNITS` (#137)
|
||||
|
||||
v0.10.4 - _Aug 24, 2017_
|
||||
------------------------
|
||||
* Fixed a bug where checksummed addresses were being pulled from artifacts and not lower-cased. (#135)
|
||||
|
||||
v0.10.1 - _Aug 24, 2017_
|
||||
------------------------
|
||||
* Added `zeroEx.exchange.validateFillOrderThrowIfInvalidAsync` (#128)
|
||||
* Added `zeroEx.exchange.validateFillOrKillOrderThrowIfInvalidAsync` (#128)
|
||||
* Added `zeroEx.exchange.validateCancelOrderThrowIfInvalidAsync` (#128)
|
||||
* Added `zeroEx.exchange.isRoundingErrorAsync` (#128)
|
||||
* Added `zeroEx.proxy.getContractAddressAsync` (#130)
|
||||
* Added `zeroEx.tokenRegistry.getTokenAddressesAsync` (#132)
|
||||
* Added `zeroEx.tokenRegistry.getTokenAddressBySymbolIfExistsAsync` (#132)
|
||||
* Added `zeroEx.tokenRegistry.getTokenAddressByNameIfExistsAsync` (#132)
|
||||
* Added `zeroEx.tokenRegistry.getTokenBySymbolIfExistsAsync` (#132)
|
||||
* Added `zeroEx.tokenRegistry.getTokenByNameIfExistsAsync` (#132)
|
||||
* Added clear error message when checksummed address is passed to a public method (#124)
|
||||
* Fixes the description of `shouldThrowOnInsufficientBalanceOrAllowance` in docs (#127)
|
||||
|
||||
v0.9.3 - _Aug 22, 2017_
|
||||
------------------------
|
||||
* Update contract artifacts to include latest Kovan and Mainnet deploys (#118)
|
||||
|
||||
v0.9.2 - _Aug 21, 2017_
|
||||
------------------------
|
||||
* *This version was unpublished because of a publishing issue.*
|
||||
* Update contract artifacts to include latest Kovan and Mainnet deploys (#118)
|
||||
|
||||
v0.9.1 - _Aug. 16, 2017_
|
||||
------------------------
|
||||
* Fixed the bug causing `zeroEx.token.getBalanceAsync()` to fail if no addresses available (#120)
|
||||
|
||||
v0.9.0 - _Jul. 26, 2017_
|
||||
------------------------
|
||||
* Migrated to the new version of smart contracts (#101)
|
||||
* Removed the ability to call methods on multiple authorized Exchange smart contracts (#106)
|
||||
* Made `zeroEx.getOrderHashHex` a static method (#107)
|
||||
* Cached `net_version` requests and invalidate the cache on calls to `setProvider` (#95)
|
||||
* Renamed `zeroEx.exchange.batchCancelOrderAsync` to `zeroEx.exchange.batchCancelOrdersAsync`
|
||||
* Renamed `zeroEx.exchange.batchFillOrderAsync` to `zeroEx.exchange.batchFillOrdersAsync`
|
||||
* Updated to typescript v2.4 (#104)
|
||||
* Fixed an issue with incorrect balance/allowance validation when ZRX is one of the tokens traded (#109)
|
||||
|
||||
v0.8.0 - _Jul. 4, 2017_
|
||||
------------------------
|
||||
* Added the ability to call methods on different authorized versions of the Exchange smart contract (#82)
|
||||
* Updated contract artifacts to reflect latest changes to the smart contracts (0xproject/contracts#59)
|
||||
* Added `zeroEx.proxy.isAuthorizedAsync` and `zeroEx.proxy.getAuthorizedAddressesAsync` (#89)
|
||||
* Added `zeroEx.token.subscribeAsync` (#90)
|
||||
* Made contract invalidation functions private (#90)
|
||||
* `zeroEx.token.invalidateContractInstancesAsync`
|
||||
* `zeroEx.exchange.invalidateContractInstancesAsync`
|
||||
* `zeroEx.proxy.invalidateContractInstance`
|
||||
* `zeroEx.tokenRegistry.invalidateContractInstance`
|
||||
* Fixed the bug where `zeroEx.setProviderAsync` didn't invalidate etherToken contract's instance
|
||||
|
||||
v0.7.1 - _Jun. 26, 2017_
|
||||
------------------------
|
||||
* Added the ability to convert Ether to wrapped Ether tokens and back via `zeroEx.etherToken.depostAsync` and `zeroEx.etherToken.withdrawAsync` (#81)
|
||||
|
||||
v0.7.0 - _Jun. 22, 2017_
|
||||
------------------------
|
||||
* Added Kovan smart contract artifacts (#78)
|
||||
* Started returning fillAmount from `fillOrderAsync` and `fillUpToAsync` (#72)
|
||||
* Started returning cancelledAmount from `cancelOrderAsync` (#72)
|
||||
* Renamed type `LogCancelArgs` to `LogCancelContractEventArgs` and `LogFillArgs` to `LogFillContractEventArgs`
|
||||
|
||||
v0.6.2 - _Jun. 21, 2017_
|
||||
------------------------
|
||||
* Reduced bundle size
|
||||
* Improved documentation
|
||||
|
||||
v0.6.1 - _Jun. 19, 2017_
|
||||
------------------------
|
||||
* Improved documentation
|
||||
|
||||
v0.6.0 - _Jun. 19, 2017_
|
||||
------------------------
|
||||
* Made `ZeroEx` class accept `Web3Provider` instance instead of `Web3` instance
|
||||
* Added types for contract event arguments
|
||||
|
||||
v0.5.2 - _Jun. 15, 2017_
|
||||
------------------------
|
||||
* Fixed the bug in `postpublish` script that caused that only unminified UMD bundle was uploaded to release page
|
||||
|
||||
v0.5.1 - _Jun. 15, 2017_
|
||||
------------------------
|
||||
* Added `postpublish` script to publish to Github Releases with assets.
|
||||
8
CODEOWNERS
Normal file
8
CODEOWNERS
Normal file
@@ -0,0 +1,8 @@
|
||||
# See https://help.github.com/articles/about-codeowners/
|
||||
# for more info about CODEOWNERS file
|
||||
|
||||
# It uses the same pattern rule for gitignore file
|
||||
# https://git-scm.com/docs/gitignore#_pattern_format
|
||||
|
||||
# Website
|
||||
packages/website/ @BMillman19 @fragosti
|
||||
46
CODE_OF_CONDUCT.md
Normal file
46
CODE_OF_CONDUCT.md
Normal file
@@ -0,0 +1,46 @@
|
||||
# Contributor Covenant Code of Conduct
|
||||
|
||||
## Our Pledge
|
||||
|
||||
In the interest of fostering an open and welcoming environment, we as contributors and maintainers pledge to making participation in our project and our community a harassment-free experience for everyone, regardless of age, body size, disability, ethnicity, gender identity and expression, level of experience, nationality, personal appearance, race, religion, or sexual identity and orientation.
|
||||
|
||||
## Our Standards
|
||||
|
||||
Examples of behavior that contributes to creating a positive environment include:
|
||||
|
||||
* Using welcoming and inclusive language
|
||||
* Being respectful of differing viewpoints and experiences
|
||||
* Gracefully accepting constructive criticism
|
||||
* Focusing on what is best for the community
|
||||
* Showing empathy towards other community members
|
||||
|
||||
Examples of unacceptable behavior by participants include:
|
||||
|
||||
* The use of sexualized language or imagery and unwelcome sexual attention or advances
|
||||
* Trolling, insulting/derogatory comments, and personal or political attacks
|
||||
* Public or private harassment
|
||||
* Publishing others' private information, such as a physical or electronic address, without explicit permission
|
||||
* Other conduct which could reasonably be considered inappropriate in a professional setting
|
||||
|
||||
## Our Responsibilities
|
||||
|
||||
Project maintainers are responsible for clarifying the standards of acceptable behavior and are expected to take appropriate and fair corrective action in response to any instances of unacceptable behavior.
|
||||
|
||||
Project maintainers have the right and responsibility to remove, edit, or reject comments, commits, code, wiki edits, issues, and other contributions that are not aligned to this Code of Conduct, or to ban temporarily or permanently any contributor for other behaviors that they deem inappropriate, threatening, offensive, or harmful.
|
||||
|
||||
## Scope
|
||||
|
||||
This Code of Conduct applies both within project spaces and in public spaces when an individual is representing the project or its community. Examples of representing a project or community include using an official project e-mail address, posting via an official social media account, or acting as an appointed representative at an online or offline event. Representation of a project may be further defined and clarified by project maintainers.
|
||||
|
||||
## Enforcement
|
||||
|
||||
Instances of abusive, harassing, or otherwise unacceptable behavior may be reported by contacting the project team at team@0xproject.com. The project team will review and investigate all complaints, and will respond in a way that it deems appropriate to the circumstances. The project team is obligated to maintain confidentiality with regard to the reporter of an incident. Further details of specific enforcement policies may be posted separately.
|
||||
|
||||
Project maintainers who do not follow or enforce the Code of Conduct in good faith may face temporary or permanent repercussions as determined by other members of the project's leadership.
|
||||
|
||||
## Attribution
|
||||
|
||||
This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4, available at [http://contributor-covenant.org/version/1/4][version]
|
||||
|
||||
[homepage]: http://contributor-covenant.org
|
||||
[version]: http://contributor-covenant.org/version/1/4/
|
||||
@@ -1,62 +1,58 @@
|
||||
# 0x.js CONTRIBUTING.md
|
||||
## 0x Contribution Guide
|
||||
|
||||
Thank you for your interest in contributing to 0x.js! We welcome contributions from anyone on the internet, and are grateful for even the smallest of fixes!
|
||||
Thank you for your interest in contributing to 0x protocol! We welcome contributions from anyone on the internet, and are grateful for even the smallest of fixes!
|
||||
|
||||
## Developer's guide
|
||||
### How to contribute
|
||||
|
||||
## How to contribute
|
||||
If you'd like to contribute to 0x protocol, please fork the repo, fix, commit and send a pull request against the `development` branch for the maintainers to review and merge into the main code base. If you wish to submit more complex changes though, please check with a core dev first on [our RocketChat #dev channel](http://chat.0xproject.com) to ensure those changes are in-line with the general philosophy of the project and/or to get some early feedback which can make both your efforts easier as well as our review and merge procedures quick and simple.
|
||||
|
||||
If you'd like to contribute to 0x.js, please fork the repo, fix, commit and send a pull request against the `development` branch for the maintainers to review and merge into the main code base. If you wish to submit more complex changes though, please check up with a core dev first on [our gitter channel](https://gitter.im/0xProject/Lobby) or in the `#dev` channel on our [slack](https://slack.0xproject.com/) to ensure those changes are in line with the general philosophy of the project and/or to get some early feedback which can make both your efforts easier as well as our review and merge procedures quick and simple.
|
||||
We encourage a “PR early” approach so create the PR as early as possible even without the fix/feature ready, so that devs and other contributors know you have picked up the issue. These early PRs should indicate an 'in progress' status by adding the '[WIP]' prefix to the PR title. Please make sure your contributions adhere to our coding guidelines:
|
||||
|
||||
We encourage a “PR early” approach so create the PR as early as possible even without the fix/feature ready, so that devs and other volunteers know you have picked up the issue. These early PRs should indicate an 'in progress' status by adding the '[WIP]' prefix to the PR title. Please make sure your contributions adhere to our coding guidelines:
|
||||
* Pull requests adding features or refactoring should be opened against the `development` branch
|
||||
* Pull requests fixing bugs in the latest release version should be opened again the `master` branch
|
||||
* Write [good commit messages](https://chris.beams.io/posts/git-commit/)
|
||||
|
||||
* Pull requests adding features or refactoring should be opened against the `development` branch
|
||||
* Pull requests fixing bugs in the latest release version should be opened again the `master` branch
|
||||
* Write [good commit messages](https://chris.beams.io/posts/git-commit/)
|
||||
### Code quality
|
||||
|
||||
## Code quality
|
||||
Because 0x.js is used by multiple relayers in production and their businesses depend on it, we strive for exceptional code quality. Please follow the existing code standards and conventions. `tslint` and `prettier` (described below) will help you.
|
||||
|
||||
Because 0x.js is used by multiple relayers in production and their businesses depend on it, we strive for excellent code quality. Please follow the existing code standards and conventions. `tslint` (described below) will help you.
|
||||
If you're adding functionality, please also add tests and make sure they pass. We have an automatic coverage reporting tool, so we'll see it if they are missing ;)
|
||||
If you're adding a new public function/member, make sure you document it with Java doc-style comments. We use typedoc to generate [awesome documentation](https://0xproject.com/docs/0xjs) from the comments within our source code.
|
||||
|
||||
## Running and building
|
||||
If the sub-package you are modifying has a `CHANGELOG.md` file, make sure to add an entry in it for the change made to the package. For published packages, only changes that modify the public interface or behavior of the package need a CHANGELOG entry.
|
||||
|
||||
First thing to do with an unknown code base is to run the tests.
|
||||
We assume that you have `npm` and `yarn` installed.
|
||||
#### Enabling code coverage checks on your fork
|
||||
|
||||
To do that:
|
||||
If you simply fork the repo and then create a PR sourced from it, your PR will fail its test coverage check. This is because the 0x CircleCI configuration sets the `COVERALLS_REPO_TOKEN` environment variable to the token for 0xProject/0x-monorepo, but when running the check against your fork the token needs to match the repo that is your fork, rather than the 0x repo.
|
||||
|
||||
* Install dependencies: `yarn`
|
||||
* Initialize the testrpc state (migrate the contracts) by doing one of the following:
|
||||
* Manual contracts migration:
|
||||
* Run testrpc: `yarn testrpc`
|
||||
* Clone the `[contracts](https://github.com/0xProject/contracts)` repo and run `yarn migrate`
|
||||
* Use one of the existing testrpc snapshots
|
||||
* Check out `circle.yml` for an example
|
||||
* Run tests: `yarn test`
|
||||
To facilitate this check, after creating your fork, but before creating the branch for your PR, do the following:
|
||||
|
||||
To build run: `yarn build`
|
||||
1. Log in to [coveralls.io](https://coveralls.io/), go to Add Repos, and enable your fork. Then go to the settings for that repo, and copy the Repo Token identifier.
|
||||
2. Log in to [CircleCI](https://circleci.com/login), go to Add Projects, click the Set Up Project button corresponding to your fork, and then click Start Building. (Aside from step 3 below, no actual set up is needed, since it will use the `.circleci/config.yml` file in 0x-monorepo, so you can ignore all of the instruction/explanation given on the page with the Start Building button.)
|
||||
3. In CircleCI, configure your project to add an Environment Variable, with name `COVERALLS_REPO_TOKEN`, and for the value paste in the Repo Token you copied in step 1.
|
||||
|
||||
We also recommend you read through the tests.
|
||||
Now, when you push to your branch, CircleCI will automatically run all of the checks in your own instance, and the coverage check will work since it has the proper Repo Token, and the PR will magically refer to your own checks rather than running them in the 0x CircleCI instance.
|
||||
|
||||
## Styleguide
|
||||
### Styleguide
|
||||
|
||||
We use `[tslint](https://palantir.github.io/tslint/)` with [custom configs](https://github.com/0xProject/tslint-config-0xproject) to keep our code style consistent.
|
||||
We use [TSLint](https://palantir.github.io/tslint/) with [custom configs](https://github.com/0xProject/0x-monorepo/tree/development/packages/tslint-config) to keep our code style consistent.
|
||||
|
||||
To lint your code just run: `yarn lint`
|
||||
|
||||
We also use [Prettier](https://prettier.io/) to auto-format our code. Be sure to either add a [text editor integration](https://prettier.io/docs/en/editors.html) or a [pre-commit hook](https://prettier.io/docs/en/precommit.html) to properly format your code changes.
|
||||
|
||||
If using the Atom text editor, we recommend you install the following packages:
|
||||
|
||||
* [atom-typescript](https://atom.io/packages/atom-typescript)
|
||||
* [linter-tslint](https://atom.io/packages/linter-tslint)
|
||||
* [atom-typescript](https://atom.io/packages/atom-typescript)
|
||||
* [linter-tslint](https://atom.io/packages/linter-tslint)
|
||||
* [prettier-atom](https://atom.io/packages/prettier-atom)
|
||||
* [language-ethereum](https://atom.io/packages/language-ethereum)
|
||||
|
||||
Our CI will also run it as a part of the test run when you submit your PR.
|
||||
Our CI will also run TSLint and Prettier as a part of the test run when you submit your PR. Make sure that the CI tests pass for your contribution.
|
||||
|
||||
### Branch structure & versioning
|
||||
|
||||
## Branch structure & versioning
|
||||
|
||||
We use [semantic versioning](http://semver.org/), but before we reach v1.0.0 all breaking changes as well as new features will be minor version bumps.
|
||||
We use [semantic versioning](http://semver.org/), but before a package reaches v1.0.0 all breaking changes as well as new features will be minor version bumps.
|
||||
|
||||
We have two main branches: `master` and `development`.
|
||||
|
||||
|
||||
62
ISSUE_TEMPLATE.md
Normal file
62
ISSUE_TEMPLATE.md
Normal file
@@ -0,0 +1,62 @@
|
||||
<!--- Thank you for taking the time to file an Issue -->
|
||||
|
||||
<!--- Before submitting please check to see if this issue was already reported -->
|
||||
|
||||
<!--- Provide a general summary of the issue in the Title above -->
|
||||
|
||||
## Expected Behavior
|
||||
|
||||
<!--- If you're describing a bug, tell us what should happen -->
|
||||
|
||||
<!--- If you're suggesting a package change/improvement, tell us how it should work -->
|
||||
|
||||
<!--- If you're suggesting a contract or protocol change/improvement, visit our ZEIPs repo -->
|
||||
|
||||
## Current Behavior
|
||||
|
||||
<!--- If describing a bug, tell us what happens instead of the expected behavior -->
|
||||
|
||||
<!--- If suggesting a change/improvement, explain the difference from current behavior -->
|
||||
|
||||
## Possible Solution
|
||||
|
||||
<!--- Not obligatory, but suggest a fix/reason for the bug, -->
|
||||
|
||||
<!--- or ideas how to implement the addition or change -->
|
||||
|
||||
## Steps to Reproduce (for bugs)
|
||||
|
||||
<!--- Provide a link to a live example, or an unambiguous set of steps to -->
|
||||
|
||||
<!--- reproduce this bug. Include code to reproduce, if relevant -->
|
||||
|
||||
```
|
||||
1.
|
||||
2.
|
||||
3.
|
||||
```
|
||||
|
||||
## Context
|
||||
|
||||
<!--- How has this issue affected you? What are you trying to accomplish? -->
|
||||
|
||||
<!--- Providing context helps us come up with a solution that is most useful in the real world -->
|
||||
|
||||
## Your Environment
|
||||
|
||||
<!--- Include as many relevant details about the environment you experienced the bug in -->
|
||||
|
||||
| Package | Version |
|
||||
| ------------------: | :------ |
|
||||
| `0x.js` | 0.25.0 |
|
||||
| `Exchange Contract` | v1 |
|
||||
|
||||
| Network |
|
||||
| ------- |
|
||||
| NAME |
|
||||
|
||||
<!-- For example:
|
||||
| mainnet |
|
||||
| kovan |
|
||||
| testrpc |
|
||||
-->
|
||||
@@ -1,2 +1,27 @@
|
||||
This PR:
|
||||
*
|
||||
## Description
|
||||
|
||||
<!--- Describe your changes in detail -->
|
||||
|
||||
## Testing instructions
|
||||
|
||||
<!--- Please describe how reviewers can test your changes -->
|
||||
|
||||
## Types of changes
|
||||
|
||||
<!--- What types of changes does your code introduce? Uncomment all the bullets that apply: -->
|
||||
|
||||
<!-- * Bug fix (non-breaking change which fixes an issue) -->
|
||||
|
||||
<!-- * New feature (non-breaking change which adds functionality) -->
|
||||
|
||||
<!-- * Breaking change (fix or feature that would cause existing functionality to change) -->
|
||||
|
||||
## Checklist:
|
||||
|
||||
<!--- The following points should be used to indicate the progress of your PR. Put an `x` in all the boxes that apply right now, and come back over time and check them off as you make progress. If you're unsure about any of these, don't hesitate to ask. We're here to help! -->
|
||||
|
||||
* [ ] Prefix PR title with `[WIP]` if necessary.
|
||||
* [ ] Prefix PR title with bracketed package name(s) corresponding to the changed package(s). For example: `[sol-cov] Fixed bug`.
|
||||
* [ ] Add tests to cover changes as needed.
|
||||
* [ ] Update documentation as needed.
|
||||
* [ ] Add new entries to the relevant CHANGELOG.jsons.
|
||||
|
||||
182
README.md
182
README.md
@@ -4,50 +4,176 @@
|
||||
|
||||
[0x][website-url] is an open protocol that facilitates trustless, low friction exchange of Ethereum-based assets. A full description of the protocol may be found in our [whitepaper][whitepaper-url].
|
||||
|
||||
This repository contains a Javascript library that makes it easy to build Relayers and other DApps that use the 0x protocol.
|
||||
This repository is a monorepo including the 0x protocol smart contracts and numerous developer tools. Each public sub-package is independently published to NPM.
|
||||
|
||||
[](https://circleci.com/gh/0xProject/0x.js)
|
||||
[](https://badge.fury.io/js/0x.js)
|
||||
[](https://coveralls.io/github/0xProject/0x.js?branch=master)
|
||||
[](http://slack.0xProject.com)
|
||||
If you're developing on 0x now or are interested in using 0x infrastructure in the future, please join our [developer mailing list][dev-mailing-list-url] for updates.
|
||||
|
||||
[website-url]: https://0xproject.com
|
||||
[whitepaper-url]: https://0xproject.com/pdfs/0x_white_paper.pdf
|
||||
[dev-mailing-list-url]: http://eepurl.com/dx4cPf
|
||||
|
||||
[](https://circleci.com/gh/0xProject/0x-monorepo)
|
||||
[](https://coveralls.io/github/0xProject/0x-monorepo?branch=development)
|
||||
[](https://chat.0xproject.com)
|
||||
[](https://gitter.im/0xProject/Lobby?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)
|
||||
[](https://opensource.org/licenses/Apache-2.0)
|
||||
[](https://greenkeeper.io/)
|
||||
|
||||
## Installation
|
||||
### Published Packages
|
||||
|
||||
0x.js ships as both a [UMD](https://github.com/umdjs/umd) module and a [CommonJS](https://en.wikipedia.org/wiki/CommonJS) package.
|
||||
| Package | Version | Description |
|
||||
| --------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------- |
|
||||
| [`0x.js`](/packages/0x.js) | [](https://www.npmjs.com/package/0x.js) | A Javascript library for interacting with the 0x protocol |
|
||||
| [`@0xproject/abi-gen`](/packages/abi-gen) | [](https://www.npmjs.com/package/@0xproject/abi-gen) | Tool to generate TS wrappers from smart contract ABIs |
|
||||
| [`@0xproject/assert`](/packages/assert) | [](https://www.npmjs.com/package/@0xproject/assert) | Type and schema assertions used by our packages |
|
||||
| [`@0xproject/base-contract`](/packages/base-contract) | [](https://www.npmjs.com/package/@0xproject/base-contract) | BaseContract used by auto-generated `abi-gen` wrapper contracts |
|
||||
| [`@0xproject/connect`](/packages/connect) | [](https://www.npmjs.com/package/@0xproject/connect) | A Javascript library for interacting with the Standard Relayer API |
|
||||
| [`@0xproject/sol-compiler`](/packages/sol-compiler) | [](https://www.npmjs.com/package/@0xproject/sol-compiler) | A thin wrapper around Solc.js that outputs artifacts, resolves imports, only re-compiles when needed, and other niceties. |
|
||||
| [`@0xproject/dev-utils`](/packages/dev-utils) | [](https://www.npmjs.com/package/@0xproject/dev-utils) | Dev utils to be shared across 0x projects and packages |
|
||||
| [`@0xproject/json-schemas`](/packages/json-schemas) | [](https://www.npmjs.com/package/@0xproject/json-schemas) | 0x-related json schemas |
|
||||
| [`@0xproject/monorepo-scripts`](/packages/monorepo-scripts) | [](https://www.npmjs.com/package/@0xproject/monorepo-scripts) | Monorepo scripts |
|
||||
| [`@0xproject/react-docs`](/packages/react-docs) | [](https://www.npmjs.com/package/@0xproject/react-docs) | React documentation component for rendering TypeDoc & Doxity generated JSON |
|
||||
| [`@0xproject/react-shared`](/packages/react-shared) | [](https://www.npmjs.com/package/@0xproject/react-shared) | 0x shared react components |
|
||||
| [`@0xproject/sra-spec`](/packages/sra-spec) | [](https://www.npmjs.com/package/@0xproject/sra-spec) | OpenAPI specification for the standard relayer API |
|
||||
| [`@0xproject/sra-report`](/packages/sra-report) | [](https://www.npmjs.com/package/@0xproject/sra-report) | Generate reports for standard relayer API compliance |
|
||||
| [`@0xproject/sol-cov`](/packages/sol-cov) | [](https://www.npmjs.com/package/@0xproject/sol-cov) | Solidity test coverage tool |
|
||||
| [`@0xproject/subproviders`](/packages/subproviders) | [](https://www.npmjs.com/package/@0xproject/subproviders) | Useful web3 subproviders (e.g LedgerSubprovider) |
|
||||
| [`@0xproject/tslint-config`](/packages/tslint-config) | [](https://www.npmjs.com/package/@0xproject/tslint-config) | Custom 0x development TSLint rules |
|
||||
| [`@0xproject/types`](/packages/types) | [](https://www.npmjs.com/package/@0xproject/types) | Shared type declarations |
|
||||
| [`@0xproject/typescript-typings`](/packages/typescript-typings) | [](https://www.npmjs.com/package/@0xproject/typescript-typings) | Repository of types for external packages |
|
||||
| [`@0xproject/utils`](/packages/utils) | [](https://www.npmjs.com/package/@0xproject/utils) | Shared utilities |
|
||||
| [`@0xproject/web3-wrapper`](/packages/web3-wrapper) | [](https://www.npmjs.com/package/@0xproject/web3-wrapper) | Web3 wrapper |
|
||||
|
||||
#### CommonJS *(recommended)*:
|
||||
### Private Packages
|
||||
|
||||
**Install**
|
||||
| Package | Description |
|
||||
| --------------------------------------------------------------- | ---------------------------------------------------------------- |
|
||||
| [`@0xproject/contracts`](/packages/contracts) | 0x solidity smart contracts & tests |
|
||||
| [`@0xproject/react-docs-example`](/packages/react-docs-example) | Example documentation site created with `@0xproject/react-docs` |
|
||||
| [`@0xproject/testnet-faucets`](/packages/testnet-faucets) | A faucet micro-service that dispenses test ERC20 tokens or Ether |
|
||||
| [`@0xproject/website`](/packages/website) | 0x website & Portal DApp |
|
||||
|
||||
## Usage
|
||||
|
||||
Dedicated documentation pages:
|
||||
|
||||
* [0x.js Library](https://0xproject.com/docs/0xjs)
|
||||
* [0x Connect](https://0xproject.com/docs/connect)
|
||||
* [Smart contracts](https://0xproject.com/docs/contracts)
|
||||
* [Subproviders](https://0xproject.com/docs/subproviders)
|
||||
* [Sol Compiler](https://0xproject.com/docs/sol-compiler)
|
||||
* [Web3-wrapper](https://0xproject.com/docs/web3-wrapper)
|
||||
* [JSON-schemas](https://0xproject.com/docs/json-schemas)
|
||||
* [Sol-cov](https://0xproject.com/docs/sol-cov)
|
||||
* [Standard Relayer API](https://github.com/0xProject/standard-relayer-api/blob/master/README.md)
|
||||
|
||||
Node version >= 6.12 is required.
|
||||
|
||||
Most of the packages require additional typings for external dependencies.
|
||||
You can include those by prepending the `@0xproject/typescript-typings` package to your [`typeRoots`](http://www.typescriptlang.org/docs/handbook/tsconfig-json.html) config.
|
||||
|
||||
```json
|
||||
"typeRoots": ["node_modules/@0xproject/typescript-typings/types", "node_modules/@types"],
|
||||
```
|
||||
|
||||
## Contributing
|
||||
|
||||
We strongly recommend that the community help us make improvements and determine the future direction of the protocol. To report bugs within this package, please create an issue in this repository.
|
||||
|
||||
#### Read our [contribution guidelines](./CONTRIBUTING.md).
|
||||
|
||||
### Install dependencies
|
||||
|
||||
Make sure you are using Yarn v1.9.4. To install using brew:
|
||||
|
||||
Then install dependencies
|
||||
|
||||
```bash
|
||||
npm install 0x.js --save
|
||||
yarn install
|
||||
```
|
||||
|
||||
**Import**
|
||||
### Build
|
||||
|
||||
```javascript
|
||||
import {ZeroEx} from '0x.js';
|
||||
To build all packages:
|
||||
|
||||
```bash
|
||||
yarn build
|
||||
```
|
||||
|
||||
#### UMD:
|
||||
To build a specific package:
|
||||
|
||||
**Install**
|
||||
|
||||
Download the UMD module from our [releases page](https://github.com/0xProject/0x.js/releases) and add it to your project.
|
||||
|
||||
**Import**
|
||||
|
||||
```html
|
||||
<script type="text/javascript" src="0x.js"></script>
|
||||
```bash
|
||||
PKG=@0xproject/web3-wrapper yarn build
|
||||
```
|
||||
|
||||
## Documentation
|
||||
### Watch
|
||||
|
||||
Extensive documentation of 0x.js can be found on [our website][docs-url].
|
||||
To re-build all packages on change:
|
||||
|
||||
[website-url]: https://0xproject.com/
|
||||
[whitepaper-url]: https://0xproject.com/pdfs/0x_white_paper.pdf
|
||||
[docs-url]: https://0xproject.com/docs/0xjs
|
||||
```bash
|
||||
yarn watch
|
||||
```
|
||||
|
||||
To watch a specific package and all it's dependent packages:
|
||||
|
||||
```bash
|
||||
PKG=[NPM_PACKAGE_NAME] yarn watch
|
||||
|
||||
e.g
|
||||
PKG=@0xproject/web3-wrapper yarn watch
|
||||
```
|
||||
|
||||
### Clean
|
||||
|
||||
Clean all packages:
|
||||
|
||||
```bash
|
||||
yarn clean
|
||||
```
|
||||
|
||||
Clean a specific package
|
||||
|
||||
```bash
|
||||
PKG=0x.js yarn clean
|
||||
```
|
||||
|
||||
### Rebuild
|
||||
|
||||
To re-build (clean & build) all packages:
|
||||
|
||||
```bash
|
||||
yarn rebuild
|
||||
```
|
||||
|
||||
To re-build (clean & build) a specific package & it's deps:
|
||||
|
||||
```bash
|
||||
PKG=0x.js yarn rebuild
|
||||
```
|
||||
|
||||
### Lint
|
||||
|
||||
Lint all packages:
|
||||
|
||||
```bash
|
||||
yarn lint
|
||||
```
|
||||
|
||||
Lint a specific package:
|
||||
|
||||
```bash
|
||||
PKG=0x.js yarn lint
|
||||
```
|
||||
|
||||
### Run Tests
|
||||
|
||||
Run all tests:
|
||||
|
||||
```bash
|
||||
yarn test
|
||||
```
|
||||
|
||||
Run a specific package's test:
|
||||
|
||||
```bash
|
||||
PKG=@0xproject/web3-wrapper yarn test
|
||||
```
|
||||
|
||||
23
circle.yml
23
circle.yml
@@ -1,23 +0,0 @@
|
||||
machine:
|
||||
node:
|
||||
version: 6.5.0
|
||||
environment:
|
||||
CONTRACTS_COMMIT_HASH: '35053f9'
|
||||
PATH: "${PATH}:${HOME}/${CIRCLE_PROJECT_REPONAME}/node_modules/.bin"
|
||||
|
||||
dependencies:
|
||||
override:
|
||||
- yarn
|
||||
cache_directories:
|
||||
- ~/.cache/yarn
|
||||
|
||||
test:
|
||||
override:
|
||||
- wget https://s3.amazonaws.com/testrpc-shapshots/${CONTRACTS_COMMIT_HASH}.zip
|
||||
- unzip ${CONTRACTS_COMMIT_HASH}.zip -d testrpc_snapshot
|
||||
- npm run testrpc -- --db testrpc_snapshot:
|
||||
background: true
|
||||
- yarn test:coverage
|
||||
- yarn report_test_coverage
|
||||
- if [ $CIRCLE_BRANCH = "master" ]; then yarn test:umd; fi
|
||||
- yarn lint
|
||||
12
lerna.json
Normal file
12
lerna.json
Normal file
@@ -0,0 +1,12 @@
|
||||
{
|
||||
"lerna": "3.0.0-beta.23",
|
||||
"packages": ["packages/*"],
|
||||
"version": "independent",
|
||||
"command": {
|
||||
"publish": {
|
||||
"ignoreChanges": ["test/**/*", "*.md", "scripts", "lib", "tslint.json", "tsconfig.json"]
|
||||
}
|
||||
},
|
||||
"npmClient": "yarn",
|
||||
"useWorkspaces": true
|
||||
}
|
||||
10156
package-lock.json
generated
10156
package-lock.json
generated
File diff suppressed because it is too large
Load Diff
163
package.json
163
package.json
@@ -1,106 +1,61 @@
|
||||
{
|
||||
"name": "0x.js",
|
||||
"version": "0.22.6",
|
||||
"description": "A javascript library for interacting with the 0x protocol",
|
||||
"keywords": [
|
||||
"0x.js",
|
||||
"0xproject",
|
||||
"ethereum",
|
||||
"tokens",
|
||||
"exchange"
|
||||
],
|
||||
"main": "lib/src/index.js",
|
||||
"types": "lib/src/index.d.ts",
|
||||
"scripts": {
|
||||
"prebuild": "npm run clean",
|
||||
"build": "run-p build:umd:prod build:commonjs",
|
||||
"prepublishOnly": "run-p build",
|
||||
"postpublish": "run-s release docs:json upload_docs_json",
|
||||
"release": "publish-release --assets _bundles/index.js,_bundles/index.min.js --tag $(git describe --tags) --owner 0xProject --repo 0x.js",
|
||||
"upload_docs_json": "aws s3 cp docs/index.json s3://0xjs-docs-jsons/$(git describe --tags).json --profile 0xproject --grants read=uri=http://acs.amazonaws.com/groups/global/AllUsers --content-type aplication/json",
|
||||
"lint": "tslint src/**/*.ts test/**/*.ts",
|
||||
"test": "run-s clean test:commonjs",
|
||||
"test:umd": "./scripts/test_umd.sh",
|
||||
"test:coverage": "nyc npm run test --all",
|
||||
"report_test_coverage": "nyc report --reporter=text-lcov | coveralls",
|
||||
"update_contracts": "for i in ${npm_package_config_artifacts}; do copyfiles -u 4 ../contracts/build/contracts/$i.json ../0x.js/src/artifacts; done;",
|
||||
"testrpc": "testrpc -p 8545 --networkId 50 -m \"${npm_package_config_mnemonic}\"",
|
||||
"docs:json": "typedoc --excludePrivate --excludeExternals --target ES5 --json docs/index.json .",
|
||||
"docs:generate": "typedoc --out docs .",
|
||||
"docs:open": "opn docs/index.html",
|
||||
"clean": "shx rm -rf _bundles lib test_temp",
|
||||
"build:umd:dev": "webpack",
|
||||
"build:umd:prod": "NODE_ENV=production webpack",
|
||||
"build:commonjs": "tsc; copyfiles -u 2 './src/artifacts/**/*.json' ./lib/src/artifacts;",
|
||||
"test:commonjs": "run-s build:commonjs run_mocha",
|
||||
"pretest:umd": "run-s clean build:umd:dev build:commonjs",
|
||||
"substitute_umd_bundle": "npm run remove_src_files_not_used_by_tests; shx mv _bundles/* lib/src",
|
||||
"remove_src_files_not_used_by_tests": "find ./lib/src \\( -path ./lib/src/utils -o -path ./lib/src/subproviders -o -path ./lib/src/schemas -o -path \"./lib/src/types.*\" \\) -prune -o -type f -print | xargs rm",
|
||||
"run_mocha": "mocha lib/test/**/*_test.js --timeout 5000 --bail --exit"
|
||||
},
|
||||
"config": {
|
||||
"artifacts": "TokenTransferProxy Exchange TokenRegistry Token EtherToken",
|
||||
"mnemonic": "concert load couple harbor equip island argue ramp clarify fence smart topic"
|
||||
},
|
||||
"repository": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/0xProject/0x.js"
|
||||
},
|
||||
"license": "Apache-2.0",
|
||||
"engines": {
|
||||
"node": ">=6.0.0"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@types/jsonschema": "^1.1.1",
|
||||
"@types/lodash": "^4.14.64",
|
||||
"@types/mocha": "^2.2.41",
|
||||
"@types/node": "^8.0.1",
|
||||
"@types/sinon": "^2.2.2",
|
||||
"@types/uuid": "^3.4.2",
|
||||
"awesome-typescript-loader": "^3.1.3",
|
||||
"chai": "^4.0.1",
|
||||
"chai-as-promised": "^7.1.0",
|
||||
"chai-as-promised-typescript-typings": "0.0.3",
|
||||
"chai-bignumber": "^2.0.1",
|
||||
"chai-typescript-typings": "^0.0.0",
|
||||
"copyfiles": "^1.2.0",
|
||||
"coveralls": "^3.0.0",
|
||||
"dirty-chai": "^2.0.1",
|
||||
"ethereumjs-testrpc": "4.0.1",
|
||||
"json-loader": "^0.5.4",
|
||||
"mocha": "^4.0.0",
|
||||
"npm-run-all": "^4.0.2",
|
||||
"nyc": "^11.0.1",
|
||||
"opn-cli": "^3.1.0",
|
||||
"request": "^2.81.0",
|
||||
"request-promise-native": "^1.0.4",
|
||||
"shx": "^0.2.2",
|
||||
"sinon": "^4.0.0",
|
||||
"source-map-support": "^0.5.0",
|
||||
"truffle-hdwallet-provider": "^0.0.3",
|
||||
"tslint": "^5.3.2",
|
||||
"tslint-config-0xproject": "^0.0.2",
|
||||
"typedoc": "~0.8.0",
|
||||
"types-bn": "^0.0.1",
|
||||
"types-ethereumjs-util": "0xProject/types-ethereumjs-util",
|
||||
"typescript": "^2.4.1",
|
||||
"web3-provider-engine": "^13.0.1",
|
||||
"web3-typescript-typings": "^0.6.2",
|
||||
"webpack": "^3.1.0"
|
||||
},
|
||||
"dependencies": {
|
||||
"0x-json-schemas": "^0.6.1",
|
||||
"bignumber.js": "^4.1.0",
|
||||
"compare-versions": "^3.0.1",
|
||||
"es6-promisify": "^5.0.0",
|
||||
"ethereumjs-abi": "^0.6.4",
|
||||
"ethereumjs-blockstream": "^2.0.6",
|
||||
"ethereumjs-util": "^5.1.1",
|
||||
"find-versions": "^2.0.0",
|
||||
"js-sha3": "^0.6.1",
|
||||
"lodash": "^4.17.4",
|
||||
"publish-release": "^1.3.3",
|
||||
"uuid": "^3.1.0",
|
||||
"web3": "^0.20.0"
|
||||
}
|
||||
"private": true,
|
||||
"name": "0x-monorepo",
|
||||
"engines": {
|
||||
"node": ">=6.12"
|
||||
},
|
||||
"workspaces": [
|
||||
"packages/*"
|
||||
],
|
||||
"scripts": {
|
||||
"ganache": "ganache-cli -p 8545 --networkId 50 -m \"${npm_package_config_mnemonic}\"",
|
||||
"prettier": "prettier --write '**/*.{ts,tsx,json,md}' --config .prettierrc",
|
||||
"prettier:ci": "prettier --list-different '**/*.{ts,tsx,json,md}' --config .prettierrc",
|
||||
"report_coverage": "lcov-result-merger 'packages/*/coverage/lcov.info' | coveralls",
|
||||
"test:installation": "node ./packages/monorepo-scripts/lib/test_installation.js",
|
||||
"test:installation:local": "IS_LOCAL_PUBLISH=true node ./packages/monorepo-scripts/lib/test_installation.js",
|
||||
"test:publish:circleci:comment": "HACK(albrow) We need an automated way to login to npm and echo+sleep piped to stdin was the only way I could find to do it.",
|
||||
"test:publish:circleci": "yarn npm-cli-login -u test -p test -e test@example.com -r http://localhost:4873 && IS_LOCAL_PUBLISH=true run-s script:publish test:installation:local",
|
||||
"run:publish": "run-s install:all build:monorepo_scripts script:prepublish_checks rebuild:no_website script:publish",
|
||||
"run:publish:local": "IS_LOCAL_PUBLISH=true yarn run:publish",
|
||||
"script:prepublish_checks": "node ./packages/monorepo-scripts/lib/prepublish_checks.js",
|
||||
"script:publish": "node ./packages/monorepo-scripts/lib/publish.js",
|
||||
"install:all": "yarn install",
|
||||
"wsrun": "wsrun",
|
||||
"lerna": "lerna",
|
||||
"build": "wsrun build $PKG --fast-exit -r --stages",
|
||||
"build:no_website": "wsrun build $PKG --fast-exit -r --stages --exclude @0xproject/website",
|
||||
"build:monorepo_scripts": "PKG=@0xproject/monorepo-scripts yarn build",
|
||||
"build:ts": "tsc -b",
|
||||
"watch:ts": "tsc -b -w",
|
||||
"clean": "wsrun clean $PKG --fast-exit -r --parallel",
|
||||
"remove_node_modules": "lerna clean --yes; rm -rf node_modules",
|
||||
"rebuild": "run-s clean build",
|
||||
"rebuild:no_website": "run-s clean build:no_website",
|
||||
"test": "wsrun test $PKG --fast-exit --serial --exclude-missing",
|
||||
"generate_doc": "node ./packages/monorepo-scripts/lib/doc_generate_and_upload.js",
|
||||
"test:generate_docs:circleci": "for i in ${npm_package_config_packagesWithDocPages}; do yarn generate_doc --package $i --shouldUpload false --isStaging true || break -1; done;",
|
||||
"lint": "wsrun lint $PKG --fast-exit --parallel --exclude-missing",
|
||||
"comment:postinstall": "HACK: For some reason `yarn` is not setting up symlinks properly for order-utils. We temporarily set them manually. Remove this after V2 refactor is complete."
|
||||
},
|
||||
"config": {
|
||||
"mnemonic": "concert load couple harbor equip island argue ramp clarify fence smart topic",
|
||||
"packagesWithDocPages": "0x.js connect json-schemas subproviders web3-wrapper contract-wrappers order-utils order-watcher sol-compiler sol-cov ethereum-types"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@0x-lerna-fork/lerna": "3.0.0-beta.25",
|
||||
"async-child-process": "^1.1.1",
|
||||
"coveralls": "^3.0.0",
|
||||
"ganache-cli": "6.1.3",
|
||||
"lcov-result-merger": "^3.0.0",
|
||||
"npm-cli-login": "^0.0.10",
|
||||
"npm-run-all": "^4.1.2",
|
||||
"prettier": "^1.11.1",
|
||||
"source-map-support": "^0.5.6",
|
||||
"typescript": "3.0.1",
|
||||
"wsrun": "^2.2.0"
|
||||
},
|
||||
"resolutions": {
|
||||
"ethers": "0xproject/ethers.js#eip-838-reasons"
|
||||
}
|
||||
}
|
||||
|
||||
11
packages/0x.js/.npmignore
Normal file
11
packages/0x.js/.npmignore
Normal file
@@ -0,0 +1,11 @@
|
||||
.*
|
||||
tsconfig.json
|
||||
webpack.config.js
|
||||
yarn-error.log
|
||||
test/
|
||||
/src/
|
||||
/_bundles/
|
||||
/contract_templates/
|
||||
/generated_docs/
|
||||
/scripts/
|
||||
/lib/src/monorepo_scripts/
|
||||
1277
packages/0x.js/CHANGELOG.json
Normal file
1277
packages/0x.js/CHANGELOG.json
Normal file
File diff suppressed because it is too large
Load Diff
458
packages/0x.js/CHANGELOG.md
Normal file
458
packages/0x.js/CHANGELOG.md
Normal file
@@ -0,0 +1,458 @@
|
||||
<!--
|
||||
changelogUtils.file is auto-generated using the monorepo-scripts package. Don't edit directly.
|
||||
Edit the package's CHANGELOG.json file only.
|
||||
-->
|
||||
|
||||
CHANGELOG
|
||||
|
||||
## v1.0.4 - _September 21, 2018_
|
||||
|
||||
* Dependencies updated
|
||||
|
||||
## v1.0.3 - _September 19, 2018_
|
||||
|
||||
* Drastically reduce the bundle size by removing unused parts of included contract artifacts.
|
||||
|
||||
## v1.0.2 - _September 18, 2018_
|
||||
|
||||
* Add ZRX & WETH mainnet contract addresses into the included artifacts
|
||||
|
||||
## v1.0.1 - _September 5, 2018_
|
||||
|
||||
* Dependencies updated
|
||||
|
||||
## v1.0.1-rc.6 - _August 27, 2018_
|
||||
|
||||
* Fix missing `BlockParamLiteral` type import issue
|
||||
|
||||
## v1.0.1-rc.5 - _Invalid date_
|
||||
|
||||
* Fix `main` and `types` package.json entries so that they point to the new location of index.d.ts and index.js
|
||||
|
||||
## v1.0.1-rc.4 - _August 24, 2018_
|
||||
|
||||
* Re-organize the exported interface of 0x.js. Remove the `ZeroEx` class, and instead export the same exports as `0x.js`'s sub-packages: `@0xproject/contract-wrappers`, `@0xproject/order-utils` and `@0xproject/order-watcher` (#963)
|
||||
|
||||
## v1.0.1-rc.3 - _August 14, 2018_
|
||||
|
||||
* Dependencies updated
|
||||
* Update ecSignOrderHashAsync to return the signature as a string for immediate use in contracts (#914)
|
||||
|
||||
## v1.0.1-rc.2 - _July 26, 2018_
|
||||
|
||||
* Fixed bug caused by importing non-existent dep
|
||||
|
||||
## v1.0.1-rc.1 - _July 26, 2018_
|
||||
|
||||
* Dependencies updated
|
||||
|
||||
## v1.0.0 - _July 23, 2018_
|
||||
|
||||
* Dependencies updated
|
||||
|
||||
## v1.0.0-rc.2 - _July 20, 2018_
|
||||
|
||||
* Remove `zeroEx.assetData` and instead re-export it's static functions directly off `ZeroEx`
|
||||
|
||||
## v1.0.0-rc.1 - _July 20, 2018_
|
||||
|
||||
* Remove tokenRegistry wrapper (#863)
|
||||
* Rename `zeroEx.token` to `zeroEx.erc20Token`, and add `zeroEx.erc721Token` (#863)
|
||||
* Rename `zeroEx.proxy` to `zeroEx.erc20Proxy` and add `zeroEx.erc721Proxy` (#863)
|
||||
* Refactored `ZeroEx.isValidSignature` to `zeroEx.isValidSignatureAsync`. It is now async so that it can verify contract-dependent signature types (#863)
|
||||
* Refactored `signOrderHashAsync` to `ecSignOrderHashAsync`. There are now many non-ECSignature ways to sign orders too. (#863)
|
||||
* Removed `createOrderWatcherAsync` method. Will be added back once OrderWatcher is refactored for V2 (#863)
|
||||
* 0x.js exports renamed contract events and event arg types (#863)
|
||||
* Export `ZeroEx.assetData` with methods to decode/encode assetData fields found in 0x orders (#884)
|
||||
|
||||
## v0.38.6 - _July 18, 2018_
|
||||
|
||||
* Dependencies updated
|
||||
|
||||
## v0.38.5 - _July 9, 2018_
|
||||
|
||||
* Dependencies updated
|
||||
|
||||
## v0.38.4 - _June 19, 2018_
|
||||
|
||||
* Dependencies updated
|
||||
|
||||
## v0.38.3 - _May 29, 2018_
|
||||
|
||||
* Dependencies updated
|
||||
|
||||
## v0.38.2 - _May 29, 2018_
|
||||
|
||||
* Dependencies updated
|
||||
|
||||
## v0.38.1 - _May 29, 2018_
|
||||
|
||||
* Dependencies updated
|
||||
|
||||
## v0.38.0 - _May 22, 2018_
|
||||
|
||||
* Renamed createOrderStateWatcher to createOrderWatcherAsync since it is now async (#579)
|
||||
* Renamed ZeroExError to ContractWrappersErrors since they now lives in the @0xproject/contract-wrappers subpackage (#579)
|
||||
|
||||
## v0.37.2 - _May 5, 2018_
|
||||
|
||||
* Dependencies updated
|
||||
|
||||
## v0.37.1 - _May 4, 2018_
|
||||
|
||||
* Dependencies updated
|
||||
|
||||
## v0.37.0 - _May 4, 2018_
|
||||
|
||||
* Fixed expiration watcher comparator to handle orders with equal expiration times (#526)
|
||||
* Update Web3 Provider Engine to 14.0.4 (#555)
|
||||
* Add `zeroEx.getProvider()` (#559)
|
||||
* Move `ZeroExError.InvalidSignature` to `@0xproject/order-utils` `OrderError.InvalidSignature` (#559)
|
||||
|
||||
## v0.36.3 - _April 18, 2018_
|
||||
|
||||
* Move @0xproject/migrations to devDependencies
|
||||
|
||||
## v0.36.2 - _April 18, 2018_
|
||||
|
||||
* Dependencies updated
|
||||
|
||||
## v0.36.1 - _April 18, 2018_
|
||||
|
||||
* Internal changes and refactoring
|
||||
* Fix redundant expired order removal bug (#527)
|
||||
|
||||
## v0.36.0 - _April 11, 2018_
|
||||
|
||||
* Moved Web3.Provider to `@0xproject/types:Provider` (#501)
|
||||
* Add `zeroEx.exchange.getOrderStateAsync` to allow obtaining current OrderState for a signedOrder (#510)
|
||||
|
||||
## v0.35.0 - _April 2, 2018_
|
||||
|
||||
* Removed `ZeroExError.TransactionMiningTimeout` and moved it to '@0xproject/web3-wrapper' `Web3WrapperErrors.TransactionMiningTimeout` (#485)
|
||||
|
||||
## v0.34.0 - _April 2, 2018_
|
||||
|
||||
* Fix the bug causing `zeroEx.exchange.fillOrdersUpToAsync` validation to fail if there were some extra orders passed (#470)
|
||||
* Remove automatic instantiation of `zeroEx.orderStateWatcher` (#488)
|
||||
* Add `zeroEx.createOrderStateWatcher` to allow creating arbitrary number of OrderStateWatchers (#488)
|
||||
* Added `stateLayer` setting to `OrderStateWatcherConfig` so OrderStateWatcher can be set to monitor different blockchain state layers (#488)
|
||||
|
||||
## v0.33.2 - _March 17, 2018_
|
||||
|
||||
* Consolidate all `console.log` calls into `logUtils` in the `@0xproject/utils` package (#452)
|
||||
* Consolidate `Order`, `SignedOrder`, and `ECSignature` into the `@0xproject/types` package (#456)
|
||||
|
||||
## v0.33.1 - _March 7, 2018_
|
||||
|
||||
* Add missing EthersJs typescript typings as dependency
|
||||
|
||||
## v0.33.0 - _March 3, 2018_
|
||||
|
||||
* Validate and lowercase all addresses in public methods (#373)
|
||||
* Improve validation to force passing contract addresses on private networks (#385)
|
||||
* Change `LogErrorContractEventArgs.errorId` type from `BigNumber` to `number` (#413)
|
||||
* Rename all public `_unsubscribeAll` methods to `unsubscribeAll` (#415)
|
||||
* Move web3 typings from devDep to dep since cannot use this package without it (#429)
|
||||
|
||||
## v0.32.2 - _February 8, 2018_
|
||||
|
||||
* Fix publishing issue where .npmignore was not properly excluding undesired content (#389)
|
||||
|
||||
## v0.32.1 - _February 6, 2018_
|
||||
|
||||
* Reorganized `BlockParamLiteral` export into `@0xproject/types` package (#355)
|
||||
* Now using `abi-gen` package to generate ContractEventArgs types (#371)
|
||||
|
||||
## v0.32.0 - _February 4, 2018_
|
||||
|
||||
* Add `zeroEx.etherToken.getContractAddressIfExists` (#350)
|
||||
* Fixed the bug causing order watcher to throw if there is an event with the same signature but different indexed fields (#366)
|
||||
|
||||
## v0.31.1 - _January 31, 2018_
|
||||
|
||||
* Fix the bug causing order watcher to throw if makerToken === zrx (#357)
|
||||
|
||||
## v0.31.0 - _January 29, 2018_
|
||||
|
||||
* Add the `shouldAddPersonalMessagePrefix` parameter to `signOrderHashAsync` so that the caller can decide on whether to add the personalMessage prefix before relaying the request to the signer. Parity Signer, Ledger and TestRPC add the prefix themselves, Metamask expects it to have already been added. (#349)
|
||||
|
||||
## v0.30.2 - _January 28, 2018_
|
||||
|
||||
* Add Rinkeby testnet addresses to artifacts (#337)
|
||||
* Move @0xproject/types to dependencies from devDependencies fixing missing type errors
|
||||
|
||||
## v0.30.1 - _January 23, 2018_
|
||||
|
||||
* Fix a bug allowing negative fill values (#212)
|
||||
* Fix a bug that made it impossible to pass a custom ZRX address (#341)
|
||||
|
||||
## v0.30.0 - _January 16, 2018_
|
||||
|
||||
* Add an error parameter to the order watcher callback (#312)
|
||||
* Fix a bug making it impossible to catch some errors from awaitTransactionMinedAsync (#312)
|
||||
* Fix a bug in fillOrdersUpTo validation making it impossible to fill up to if user doesn't have enough balance to fully fill all the orders (#321)
|
||||
|
||||
## v0.29.1 - _January 10, 2018_
|
||||
|
||||
* Fixed bignumber config issue #301 (#305)
|
||||
|
||||
## v0.29.0 - _December 27, 2017_
|
||||
|
||||
* Assert baseUnit amount supplied to `toUnitAmount` is integer amount. (#287)
|
||||
* `toBaseUnitAmount` throws if amount supplied has too many decimals (#287)
|
||||
|
||||
## v0.28.0 - _December 19, 2017_
|
||||
|
||||
* Add `etherTokenAddress` arg to `depositAsync` and `withdrawAsync` methods on `zeroEx.etherToken` (#267)
|
||||
* Removed accidentally included `unsubscribeAll` method from `zeroEx.proxy`, `zeroEx.etherToken` and `zeroEx.tokenRegistry` (#267)
|
||||
* Removed `etherTokenContractAddress` from `ZeroEx` constructor arg `ZeroExConfig` (#267)
|
||||
* Rename `SubscriptionOpts` to `BlockRange` (#272)
|
||||
* Add `zeroEx.etherToken.subscribe`, `zeroEx.etherToken.unsubscribe`, `zeroEx.etherToken.unsubscribeAll` (#277)
|
||||
* Add `zeroEx.etherToken.getLogsAsync` (#277)
|
||||
* Add new public types `BlockParamLiteral`, `EtherTokenEvents`, `EtherTokenContractEventArgs`, `DepositContractEventArgs`, `WithdrawalContractEventArgs` (#277)
|
||||
* Support `Deposit` and `Withdraw` events on etherToken (#277)
|
||||
* Improve the error message when taker is not a string (#278)
|
||||
|
||||
## v0.27.1 - _November 27, 2017_
|
||||
|
||||
* Export `TransactionOpts` type
|
||||
|
||||
## v0.27.0 - _November 27, 2017_
|
||||
|
||||
* Make `ZeroExConfig` required parameter of `ZeroEx` constructor (#233)
|
||||
* Add a required property `networkId` to `ZeroExConfig` (#233)
|
||||
* Make all `getContractAddress` functions, `zeroEx.exchange.subscribe`, `zeroEx.exchange.getZRXTokenAddress` sync (#233)
|
||||
* Remove `ZeroExError.ContractNotFound` and replace it with contract-specific errors (#233)
|
||||
* Make `DecodedLogEvent<A>` contain `LogWithDecodedArgs<A>` under log key instead of merging it in like web3 does (#234)
|
||||
* Rename `removed` to `isRemoved` in `DecodedLogEvent<A>` (#234)
|
||||
* Add config allowing to specify gasPrice and gasLimit for every transaction sending method (#235)
|
||||
* All transaction sending methods now call `estimateGas` if no gas amount was supplied (#235)
|
||||
* Modify order validation methods to validate against the `latest` block, not against the `pending` block (#236)
|
||||
|
||||
## v0.26.0 - _November 20, 2017_
|
||||
|
||||
* Add post-formatter for logs converting `blockNumber`, `logIndex`, `transactionIndex` from hexes to numbers (#231)
|
||||
* Remove support for Async callback types when used in Subscribe functions (#222)
|
||||
* In OrderWatcher subscribe to ZRX Token Transfer and Approval events when maker token is different (#225)
|
||||
|
||||
## v0.25.1 - _November 12, 2017_
|
||||
|
||||
* Standardise on Cancelled over Canceled (#217)
|
||||
* Add missing `DecodedLogEvent` type to exported types (#205)
|
||||
* Normalized the transactionReceipt status to be `null|0|1`, 1 meaning transaction execution successful, 0 unsuccessful and `null` if it is a pre-byzantinium transaction. (#200)
|
||||
|
||||
## v0.23.0 - _November 11, 2017_
|
||||
|
||||
* Fixed unhandled promise rejection error in subscribe methods (#209)
|
||||
* Subscribe callbacks now receive an error object as their first argument
|
||||
|
||||
## v0.22.6 - _November 9, 2017_
|
||||
|
||||
* Add a timeout parameter to transaction awaiting (#206)
|
||||
|
||||
## v0.22.5 - _November 6, 2017_
|
||||
|
||||
* Re-publish v0.22.4 to fix publishing issue
|
||||
|
||||
## v0.22.4 - _October 24, 2017_
|
||||
|
||||
* Upgraded bignumber.js to a new version that ships with native typings
|
||||
|
||||
## v0.22.3 - _October 24, 2017_
|
||||
|
||||
* Fixed an issue with new version of testrpc and unlimited proxy allowance (#199)
|
||||
|
||||
## v0.22.2 - _October 23, 2017_
|
||||
|
||||
* Fixed rounding of maker fill amount and incorrect validation of partial fees (#197)
|
||||
|
||||
## v0.22.0 - _October 15, 2017_
|
||||
|
||||
* Started using `OrderFillRequest` interface instead of `OrderFillOrKillRequest` interface for `zeroEx.exchange.batchFillOrKill` (#187)
|
||||
* Removed `OrderFillOrKillRequest` (#187)
|
||||
|
||||
## v0.21.4 - _October 12, 2017_
|
||||
|
||||
* Made 0x.js more type-safe by making `getLogsAsync` and `subscribe/subscribeAsync` generics parametrized with arg type (#194)
|
||||
|
||||
## v0.21.3 - _October 11, 2017_
|
||||
|
||||
* Fixed a bug causing order fills to throw `INSUFFICIENT_TAKER_ALLOWANCE` (#193)
|
||||
|
||||
## v0.21.2 - _October 10, 2017_
|
||||
|
||||
* Exported `ContractEventArg` as a public type (#190)
|
||||
|
||||
## v0.21.1 - _October 10, 2017_
|
||||
|
||||
* Fixed a bug in subscriptions (#189)
|
||||
|
||||
## v0.21.0 - _October 9, 2017_
|
||||
|
||||
* Complete rewrite of subscription logic (#182)
|
||||
* Subscriptions no longer return historical logs. If you want them - use `getLogsAsync`
|
||||
* Subscriptions now use [ethereumjs-blockstream](https://github.com/ethereumjs/ethereumjs-blockstream) under the hood
|
||||
* Subscriptions correctly handle block re-orgs (forks)
|
||||
* Subscriptions correctly backfill logs (connection problems)
|
||||
* They no longer setup filters on the underlying nodes, so you can use them with infura without a filter Subprovider
|
||||
* Removed `ContractEventEmitter` and added `LogEvent`
|
||||
* Renamed `zeroEx.token.subscribeAsync` to `zeroEx.token.subscribe`
|
||||
* Added `zeroEx.token.unsubscribe` and `zeroEx.exchange.unsubscribe`
|
||||
* Renamed `zeroEx.exchange.stopWatchingAllEventsAsync` to `zeroEx.exhange.unsubscribeAll`
|
||||
* Renamed `zeroEx.token.stopWatchingAllEventsAsync` to `zeroEx.token.unsubscribeAll`
|
||||
* Fixed the batch fills validation by emulating all balance & proxy allowance changes (#185)
|
||||
|
||||
## v0.20.0 - _October 4, 2017_
|
||||
|
||||
* Add `zeroEx.token.getLogsAsync` (#178)
|
||||
* Add `zeroEx.exchange.getLogsAsync` (#178)
|
||||
* Fixed fees validation when one of the tokens transferred is ZRX (#181)
|
||||
|
||||
## v0.19.0 - _September 28, 2017_
|
||||
|
||||
* Made order validation optional (#172)
|
||||
* Added Ropsten testnet support (#173)
|
||||
* Fixed a bug causing awaitTransactionMinedAsync to DDos backend nodes (#175)
|
||||
|
||||
## v0.18.0 - _September 25, 2017_
|
||||
|
||||
* Added `zeroEx.exchange.validateOrderFillableOrThrowAsync` to simplify orderbook pruning (#170)
|
||||
|
||||
## v0.17.0 - _September 25, 2017_
|
||||
|
||||
* Made `zeroEx.exchange.getZRXTokenAddressAsync` public (#171)
|
||||
|
||||
## v0.16.0 - _September 19, 2017_
|
||||
|
||||
* Added the ability to specify custom contract addresses to be used with 0x.js (#165)
|
||||
* ZeroExConfig.exchangeContractAddress
|
||||
* ZeroExConfig.tokenRegistryContractAddress
|
||||
* ZeroExConfig.etherTokenContractAddress
|
||||
* Added `zeroEx.tokenRegistry.getContractAddressAsync` (#165)
|
||||
|
||||
## v0.15.0 - _September 7, 2017_
|
||||
|
||||
* Added the ability to specify a historical `blockNumber` at which to query the blockchain's state when calling a token or exchange method (#161)
|
||||
|
||||
## v0.14.2 - _September 6, 2017_
|
||||
|
||||
* Fixed an issue with bignumber.js types not found (#160)
|
||||
|
||||
## v0.14.1 - _September 6, 2017_
|
||||
|
||||
* Fixed an issue with Artifact type not found (#159)
|
||||
|
||||
## v0.14.0 - _September 5, 2017_
|
||||
|
||||
* Added `zeroEx.exchange.throwLogErrorsAsErrors` method to public interface (#157)
|
||||
* Fixed an issue with overlapping async intervals in `zeroEx.awaitTransactionMinedAsync` (#157)
|
||||
* Fixed an issue with log decoder returning `BigNumber`s as `strings` (#157)
|
||||
|
||||
## v0.13.0 - _September 5, 2017_
|
||||
|
||||
* Made all the functions submitting transactions to the network to immediately return transaction hash (#151)
|
||||
* Added `zeroEx.awaitTransactionMinedAsync` (#151)
|
||||
* Added `TransactionReceiptWithDecodedLogs`, `LogWithDecodedArgs`, `DecodedLogArgs` to public types (#151)
|
||||
* Added signature validation to `validateFillOrderThrowIfInvalidAsync` (#152)
|
||||
|
||||
## v0.12.1 - _September 1, 2017_
|
||||
|
||||
* Added the support for web3@1.x.x provider (#142)
|
||||
* Added the optional `zeroExConfig` parameter to the constructor of `ZeroEx` (#139)
|
||||
* Added the ability to specify `gasPrice` when instantiating `ZeroEx` (#139)
|
||||
|
||||
## v0.11.0 - _August 23, 2017_
|
||||
|
||||
* Added `zeroEx.token.setUnlimitedProxyAllowanceAsync` (#137)
|
||||
* Added `zeroEx.token.setUnlimitedAllowanceAsync` (#137)
|
||||
* Added `zeroEx.token.UNLIMITED_ALLOWANCE_IN_BASE_UNITS` (#137)
|
||||
|
||||
## v0.10.4 - _August 23, 2017_
|
||||
|
||||
* Fixed a bug where checksummed addresses were being pulled from artifacts and not lower-cased. (#135)
|
||||
|
||||
## v0.10.1 - _August 23, 2017_
|
||||
|
||||
* Added `zeroEx.exchange.validateFillOrderThrowIfInvalidAsync` (#128)
|
||||
* Added `zeroEx.exchange.validateFillOrKillOrderThrowIfInvalidAsync` (#128)
|
||||
* Added `zeroEx.exchange.validateCancelOrderThrowIfInvalidAsync` (#128)
|
||||
* Added `zeroEx.exchange.isRoundingErrorAsync` (#128)
|
||||
* Added `zeroEx.proxy.getContractAddressAsync` (#130)
|
||||
* Added `zeroEx.tokenRegistry.getTokenAddressesAsync` (#132)
|
||||
* Added `zeroEx.tokenRegistry.getTokenAddressBySymbolIfExistsAsync` (#132)
|
||||
* Added `zeroEx.tokenRegistry.getTokenAddressByNameIfExistsAsync` (#132)
|
||||
* Added `zeroEx.tokenRegistry.getTokenBySymbolIfExistsAsync` (#132)
|
||||
* Added `zeroEx.tokenRegistry.getTokenByNameIfExistsAsync` (#132)
|
||||
* Added clear error message when checksummed address is passed to a public method (#124)
|
||||
* Fixes the description of `shouldThrowOnInsufficientBalanceOrAllowance` in docs (#127)
|
||||
|
||||
## v0.9.3 - _August 21, 2017_
|
||||
|
||||
* Update contract artifacts to include latest Kovan and Mainnet deploys (#118)
|
||||
|
||||
## v0.9.2 - _August 20, 2017_
|
||||
|
||||
* *This version was unpublished because of a publishing issue.*
|
||||
* Update contract artifacts to include latest Kovan and Mainnet deploys (#118)
|
||||
|
||||
## v0.9.1 - _August 15, 2017_
|
||||
|
||||
* Fixed the bug causing `zeroEx.token.getBalanceAsync()` to fail if no addresses available (#120)
|
||||
|
||||
## v0.9.0 - _July 25, 2017_
|
||||
|
||||
* Migrated to the new version of smart contracts (#101)
|
||||
* Removed the ability to call methods on multiple authorized Exchange smart contracts (#106)
|
||||
* Made `zeroEx.getOrderHashHex` a static method (#107)
|
||||
* Cached `net_version` requests and invalidate the cache on calls to `setProvider` (#95)
|
||||
* Renamed `zeroEx.exchange.batchCancelOrderAsync` to `zeroEx.exchange.batchCancelOrdersAsync`
|
||||
* Renamed `zeroEx.exchange.batchFillOrderAsync` to `zeroEx.exchange.batchFillOrdersAsync`
|
||||
* Updated to typescript v2.4 (#104)
|
||||
* Fixed an issue with incorrect balance/allowance validation when ZRX is one of the tokens traded (#109)
|
||||
|
||||
## v0.8.0 - _July 3, 2017_
|
||||
|
||||
* Added the ability to call methods on different authorized versions of the Exchange smart contract (#82)
|
||||
* Updated contract artifacts to reflect latest changes to the smart contracts (0xproject/contracts#59)
|
||||
* Added `zeroEx.proxy.isAuthorizedAsync` and `zeroEx.proxy.getAuthorizedAddressesAsync` (#89)
|
||||
* Added `zeroEx.token.subscribeAsync` (#90)
|
||||
* Made contract invalidation functions private (#90)
|
||||
* `zeroEx.token.invalidateContractInstancesAsync`
|
||||
* `zeroEx.exchange.invalidateContractInstancesAsync`
|
||||
* `zeroEx.proxy.invalidateContractInstance`
|
||||
* `zeroEx.tokenRegistry.invalidateContractInstance`
|
||||
* Fixed the bug where `zeroEx.setProviderAsync` didn't invalidate etherToken contract's instance
|
||||
|
||||
## v0.7.1 - _June 25, 2017_
|
||||
|
||||
* Added the ability to convert Ether to wrapped Ether tokens and back via `zeroEx.etherToken.depostAsync` and `zeroEx.etherToken.withdrawAsync` (#81)
|
||||
|
||||
## v0.7.0 - _June 21, 2017_
|
||||
|
||||
* Added Kovan smart contract artifacts (#78)
|
||||
* Started returning fillAmount from `fillOrderAsync` and `fillUpToAsync` (#72)
|
||||
* Started returning cancelledAmount from `cancelOrderAsync` (#72)
|
||||
* Renamed type `LogCancelArgs` to `LogCancelContractEventArgs` and `LogFillArgs` to `LogFillContractEventArgs`
|
||||
|
||||
## v0.6.2 - _June 20, 2017_
|
||||
|
||||
* Reduced bundle size
|
||||
* Improved documentation
|
||||
|
||||
## v0.6.1 - _June 18, 2017_
|
||||
|
||||
* Improved documentation
|
||||
|
||||
## v0.6.0 - _June 18, 2017_
|
||||
|
||||
* Made `ZeroEx` class accept `Web3Provider` instance instead of `Web3` instance
|
||||
* Added types for contract event arguments
|
||||
|
||||
## v0.5.2 - _June 14, 2017_
|
||||
|
||||
* Fixed the bug in `postpublish` script that caused that only unminified UMD bundle was uploaded to release page
|
||||
|
||||
## v0.5.1 - _June 14, 2017_
|
||||
|
||||
* Added `postpublish` script to publish to Github Releases with assets.
|
||||
102
packages/0x.js/README.md
Normal file
102
packages/0x.js/README.md
Normal file
@@ -0,0 +1,102 @@
|
||||
## 0x.js
|
||||
|
||||
A TypeScript/Javascript library for interacting with the 0x protocol. It is a high level package which combines a number of underlying packages such as order-utils and order-watcher.
|
||||
|
||||
### Read the [Documentation](https://0xproject.com/docs/0x.js).
|
||||
|
||||
## Installation
|
||||
|
||||
0x.js ships as both a [UMD](https://github.com/umdjs/umd) module and a [CommonJS](https://en.wikipedia.org/wiki/CommonJS) package.
|
||||
|
||||
#### CommonJS _(recommended)_:
|
||||
|
||||
**Install**
|
||||
|
||||
```bash
|
||||
npm install 0x.js --save
|
||||
```
|
||||
|
||||
**Import**
|
||||
|
||||
```javascript
|
||||
import {
|
||||
assetDataUtils,
|
||||
BigNumber,
|
||||
ContractWrappers,
|
||||
generatePseudoRandomSalt,
|
||||
orderHashUtils,
|
||||
signatureUtils,
|
||||
} from '0x.js';
|
||||
```
|
||||
|
||||
If your project is in [TypeScript](https://www.typescriptlang.org/), add the following to your `tsconfig.json`:
|
||||
|
||||
```json
|
||||
"compilerOptions": {
|
||||
"typeRoots": ["node_modules/@0xproject/typescript-typings/types", "node_modules/@types"],
|
||||
}
|
||||
```
|
||||
|
||||
#### UMD:
|
||||
|
||||
**Install**
|
||||
|
||||
Download the UMD module from our [releases page](https://github.com/0xProject/0x-monorepo/releases) and add it to your project.
|
||||
|
||||
**Import**
|
||||
|
||||
```html
|
||||
<script type="text/javascript" src="0x.js"></script>
|
||||
```
|
||||
|
||||
## Contributing
|
||||
|
||||
We strongly recommend that the community help us make improvements and determine the future direction of 0x protocol. To report bugs within this package, please create an issue in this repository.
|
||||
|
||||
Please read our [contribution guidelines](../../CONTRIBUTING.md) before getting started.
|
||||
|
||||
### Install dependencies
|
||||
|
||||
If you don't have yarn workspaces enabled (Yarn < v1.0) - enable them:
|
||||
|
||||
```bash
|
||||
yarn config set workspaces-experimental true
|
||||
```
|
||||
|
||||
Then install dependencies
|
||||
|
||||
```bash
|
||||
yarn install
|
||||
```
|
||||
|
||||
### Build
|
||||
|
||||
To build this package and all other monorepo packages that it depends on, run the following from the monorepo root directory:
|
||||
|
||||
```bash
|
||||
PKG=0x.js yarn build
|
||||
```
|
||||
|
||||
Or continuously rebuild on change:
|
||||
|
||||
```bash
|
||||
PKG=0x.js yarn watch
|
||||
```
|
||||
|
||||
### Clean
|
||||
|
||||
```bash
|
||||
yarn clean
|
||||
```
|
||||
|
||||
### Lint
|
||||
|
||||
```bash
|
||||
yarn lint
|
||||
```
|
||||
|
||||
### Run Tests
|
||||
|
||||
```bash
|
||||
yarn test
|
||||
```
|
||||
0
packages/0x.js/coverage/.gitkeep
Normal file
0
packages/0x.js/coverage/.gitkeep
Normal file
94
packages/0x.js/package.json
Normal file
94
packages/0x.js/package.json
Normal file
@@ -0,0 +1,94 @@
|
||||
{
|
||||
"name": "0x.js",
|
||||
"version": "1.0.4",
|
||||
"engines": {
|
||||
"node": ">=6.12"
|
||||
},
|
||||
"description": "A javascript library for interacting with the 0x protocol",
|
||||
"keywords": [
|
||||
"0x.js",
|
||||
"0xproject",
|
||||
"ethereum",
|
||||
"tokens",
|
||||
"exchange"
|
||||
],
|
||||
"main": "lib/index.js",
|
||||
"types": "lib/index.d.ts",
|
||||
"scripts": {
|
||||
"build": "yarn build:all",
|
||||
"build:all": "run-p build:umd:prod build:commonjs",
|
||||
"lint": "tslint --project . --exclude **/src/generated_contract_wrappers/**/*",
|
||||
"test:circleci": "run-s test:coverage",
|
||||
"rebuild_and_test": "run-s build test",
|
||||
"test:coverage": "nyc npm run test --all && yarn coverage:report:lcov",
|
||||
"coverage:report:lcov": "nyc report --reporter=text-lcov > coverage/lcov.info",
|
||||
"clean": "shx rm -rf _bundles lib test_temp src/generated_contract_wrappers generated_docs",
|
||||
"build:umd:prod": "NODE_ENV=production webpack",
|
||||
"build:commonjs": "tsc -b",
|
||||
"docs:json": "typedoc --excludePrivate --excludeExternals --target ES5 --tsconfig typedoc-tsconfig.json --json $JSON_FILE_PATH $PROJECT_FILES"
|
||||
},
|
||||
"config": {
|
||||
"postpublish": {
|
||||
"assets": [
|
||||
"packages/0x.js/_bundles/index.js",
|
||||
"packages/0x.js/_bundles/index.min.js"
|
||||
]
|
||||
}
|
||||
},
|
||||
"repository": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/0xProject/0x-monorepo"
|
||||
},
|
||||
"license": "Apache-2.0",
|
||||
"devDependencies": {
|
||||
"@0xproject/abi-gen": "^1.0.9",
|
||||
"@0xproject/dev-utils": "^1.0.8",
|
||||
"@0xproject/migrations": "^1.0.10",
|
||||
"@0xproject/monorepo-scripts": "^1.0.9",
|
||||
"@0xproject/tslint-config": "^1.0.7",
|
||||
"@types/lodash": "4.14.104",
|
||||
"@types/mocha": "^2.2.42",
|
||||
"@types/node": "*",
|
||||
"@types/sinon": "^2.2.2",
|
||||
"@types/web3-provider-engine": "^14.0.0",
|
||||
"awesome-typescript-loader": "^3.1.3",
|
||||
"chai": "^4.0.1",
|
||||
"chai-as-promised": "^7.1.0",
|
||||
"chai-bignumber": "^2.0.1",
|
||||
"copyfiles": "^2.0.0",
|
||||
"dirty-chai": "^2.0.1",
|
||||
"json-loader": "^0.5.4",
|
||||
"make-promises-safe": "^1.1.0",
|
||||
"mocha": "^4.1.0",
|
||||
"npm-run-all": "^4.1.2",
|
||||
"nyc": "^11.0.1",
|
||||
"opn-cli": "^3.1.0",
|
||||
"shx": "^0.2.2",
|
||||
"sinon": "^4.0.0",
|
||||
"source-map-support": "^0.5.0",
|
||||
"tslint": "5.11.0",
|
||||
"typedoc": "0.12.0",
|
||||
"typescript": "3.0.1",
|
||||
"uglifyjs-webpack-plugin": "^1.3.0",
|
||||
"webpack": "^3.1.0"
|
||||
},
|
||||
"dependencies": {
|
||||
"@0xproject/assert": "^1.0.9",
|
||||
"@0xproject/base-contract": "^2.0.3",
|
||||
"@0xproject/contract-wrappers": "^1.0.4",
|
||||
"@0xproject/order-utils": "^1.0.3",
|
||||
"@0xproject/order-watcher": "^1.0.4",
|
||||
"@0xproject/subproviders": "^2.0.3",
|
||||
"@0xproject/types": "^1.0.2",
|
||||
"@0xproject/typescript-typings": "^2.0.1",
|
||||
"@0xproject/utils": "^1.0.9",
|
||||
"@0xproject/web3-wrapper": "^2.0.3",
|
||||
"ethereum-types": "^1.0.7",
|
||||
"ethers": "3.0.22",
|
||||
"lodash": "^4.17.5",
|
||||
"web3-provider-engine": "14.0.6"
|
||||
},
|
||||
"publishConfig": {
|
||||
"access": "public"
|
||||
}
|
||||
}
|
||||
6
packages/0x.js/src/globals.d.ts
vendored
Normal file
6
packages/0x.js/src/globals.d.ts
vendored
Normal file
@@ -0,0 +1,6 @@
|
||||
declare module '*.json' {
|
||||
const json: any;
|
||||
/* tslint:disable */
|
||||
export default json;
|
||||
/* tslint:enable */
|
||||
}
|
||||
104
packages/0x.js/src/index.ts
Normal file
104
packages/0x.js/src/index.ts
Normal file
@@ -0,0 +1,104 @@
|
||||
export { assetDataUtils, signatureUtils, generatePseudoRandomSalt, orderHashUtils } from '@0xproject/order-utils';
|
||||
|
||||
export {
|
||||
ContractWrappers,
|
||||
ERC20TokenWrapper,
|
||||
ERC721TokenWrapper,
|
||||
EtherTokenWrapper,
|
||||
ExchangeWrapper,
|
||||
ERC20ProxyWrapper,
|
||||
ERC721ProxyWrapper,
|
||||
ForwarderWrapper,
|
||||
OrderValidatorWrapper,
|
||||
IndexedFilterValues,
|
||||
BlockRange,
|
||||
ContractWrappersConfig,
|
||||
MethodOpts,
|
||||
OrderTransactionOpts,
|
||||
TransactionOpts,
|
||||
OrderStatus,
|
||||
OrderInfo,
|
||||
WETH9Events,
|
||||
WETH9WithdrawalEventArgs,
|
||||
WETH9ApprovalEventArgs,
|
||||
WETH9EventArgs,
|
||||
WETH9DepositEventArgs,
|
||||
WETH9TransferEventArgs,
|
||||
ERC20TokenTransferEventArgs,
|
||||
ERC20TokenApprovalEventArgs,
|
||||
ERC20TokenEvents,
|
||||
ERC20TokenEventArgs,
|
||||
ERC721TokenApprovalEventArgs,
|
||||
ERC721TokenApprovalForAllEventArgs,
|
||||
ERC721TokenTransferEventArgs,
|
||||
ERC721TokenEvents,
|
||||
ERC721TokenEventArgs,
|
||||
ExchangeCancelUpToEventArgs,
|
||||
ExchangeAssetProxyRegisteredEventArgs,
|
||||
ExchangeSignatureValidatorApprovalEventArgs,
|
||||
ExchangeFillEventArgs,
|
||||
ExchangeCancelEventArgs,
|
||||
ExchangeEvents,
|
||||
EventCallback,
|
||||
DecodedLogEvent,
|
||||
ExchangeEventArgs,
|
||||
TransactionEncoder,
|
||||
BalanceAndAllowance,
|
||||
OrderAndTraderInfo,
|
||||
TraderInfo,
|
||||
ValidateOrderFillableOpts,
|
||||
} from '@0xproject/contract-wrappers';
|
||||
|
||||
export { OrderWatcher, OnOrderStateChangeCallback, OrderWatcherConfig } from '@0xproject/order-watcher';
|
||||
|
||||
export import Web3ProviderEngine = require('web3-provider-engine');
|
||||
|
||||
export { RPCSubprovider, Callback, JSONRPCRequestPayloadWithMethod, ErrorCallback } from '@0xproject/subproviders';
|
||||
|
||||
export { AbiDecoder } from '@0xproject/utils';
|
||||
|
||||
export { BigNumber } from '@0xproject/utils';
|
||||
|
||||
export {
|
||||
ExchangeContractErrs,
|
||||
Order,
|
||||
SignedOrder,
|
||||
ECSignature,
|
||||
OrderStateValid,
|
||||
OrderStateInvalid,
|
||||
OrderState,
|
||||
AssetProxyId,
|
||||
SignerType,
|
||||
ERC20AssetData,
|
||||
ERC721AssetData,
|
||||
SignatureType,
|
||||
OrderRelevantState,
|
||||
} from '@0xproject/types';
|
||||
|
||||
export {
|
||||
BlockParamLiteral,
|
||||
ContractAbi,
|
||||
BlockParam,
|
||||
LogWithDecodedArgs,
|
||||
ContractEventArg,
|
||||
Provider,
|
||||
JSONRPCRequestPayload,
|
||||
JSONRPCResponsePayload,
|
||||
JSONRPCErrorCallback,
|
||||
LogEntry,
|
||||
DecodedLogArgs,
|
||||
LogEntryEvent,
|
||||
DecodedLogEntry,
|
||||
DecodedLogEntryEvent,
|
||||
RawLog,
|
||||
AbiDefinition,
|
||||
FunctionAbi,
|
||||
EventAbi,
|
||||
EventParameter,
|
||||
MethodAbi,
|
||||
ConstructorAbi,
|
||||
FallbackAbi,
|
||||
DataItem,
|
||||
ConstructorStateMutability,
|
||||
StateMutability,
|
||||
} from 'ethereum-types';
|
||||
8
packages/0x.js/tsconfig.json
Normal file
8
packages/0x.js/tsconfig.json
Normal file
@@ -0,0 +1,8 @@
|
||||
{
|
||||
"extends": "../../tsconfig",
|
||||
"compilerOptions": {
|
||||
"outDir": "lib",
|
||||
"rootDir": "src"
|
||||
},
|
||||
"include": ["./src/**/*"]
|
||||
}
|
||||
3
packages/0x.js/tslint.json
Normal file
3
packages/0x.js/tslint.json
Normal file
@@ -0,0 +1,3 @@
|
||||
{
|
||||
"extends": ["@0xproject/tslint-config"]
|
||||
}
|
||||
7
packages/0x.js/typedoc-tsconfig.json
Normal file
7
packages/0x.js/typedoc-tsconfig.json
Normal file
@@ -0,0 +1,7 @@
|
||||
{
|
||||
"extends": "../../typedoc-tsconfig",
|
||||
"compilerOptions": {
|
||||
"outDir": "lib"
|
||||
},
|
||||
"include": ["./src/**/*", "./test/**/*"]
|
||||
}
|
||||
@@ -3,14 +3,15 @@
|
||||
*/
|
||||
const _ = require('lodash');
|
||||
const webpack = require('webpack');
|
||||
const UglifyJsPlugin = require('uglifyjs-webpack-plugin');
|
||||
const path = require('path');
|
||||
const production = process.env.NODE_ENV === 'production';
|
||||
|
||||
let entry = {
|
||||
'index': './src/index.ts',
|
||||
index: './src/index.ts',
|
||||
};
|
||||
if (production) {
|
||||
entry = _.assign({}, entry, {'index.min': './src/index.ts'});
|
||||
entry = _.assign({}, entry, { 'index.min': './src/index.ts' });
|
||||
}
|
||||
|
||||
module.exports = {
|
||||
@@ -27,10 +28,16 @@ module.exports = {
|
||||
},
|
||||
devtool: 'source-map',
|
||||
plugins: [
|
||||
new webpack.optimize.UglifyJsPlugin({
|
||||
minimize: true,
|
||||
// TODO: Revert to webpack bundled version with webpack v4.
|
||||
// The v3 series bundled version does not support ES6 and
|
||||
// fails to build.
|
||||
new UglifyJsPlugin({
|
||||
sourceMap: true,
|
||||
include: /\.min\.js$/,
|
||||
uglifyOptions: {
|
||||
mangle: {
|
||||
reserved: ['BigNumber'],
|
||||
},
|
||||
},
|
||||
}),
|
||||
],
|
||||
module: {
|
||||
@@ -40,8 +47,13 @@ module.exports = {
|
||||
use: [
|
||||
{
|
||||
loader: 'awesome-typescript-loader',
|
||||
// tsconfig.json contains some options required for
|
||||
// project references which do not work with webback.
|
||||
// We override those options here.
|
||||
query: {
|
||||
declaration: false,
|
||||
declarationMap: false,
|
||||
composite: false,
|
||||
},
|
||||
},
|
||||
],
|
||||
6
packages/abi-gen/.npmignore
Normal file
6
packages/abi-gen/.npmignore
Normal file
@@ -0,0 +1,6 @@
|
||||
.*
|
||||
yarn-error.log
|
||||
/src/
|
||||
/scripts/
|
||||
tsconfig.json
|
||||
/lib/monorepo_scripts/
|
||||
275
packages/abi-gen/CHANGELOG.json
Normal file
275
packages/abi-gen/CHANGELOG.json
Normal file
@@ -0,0 +1,275 @@
|
||||
[
|
||||
{
|
||||
"timestamp": 1537541580,
|
||||
"version": "1.0.9",
|
||||
"changes": [
|
||||
{
|
||||
"note": "Dependencies updated"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"timestamp": 1536142250,
|
||||
"version": "1.0.8",
|
||||
"changes": [
|
||||
{
|
||||
"note": "Dependencies updated"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"timestamp": 1535377027,
|
||||
"version": "1.0.7",
|
||||
"changes": [
|
||||
{
|
||||
"note": "Dependencies updated"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"timestamp": 1535133899,
|
||||
"version": "1.0.6",
|
||||
"changes": [
|
||||
{
|
||||
"note": "Dependencies updated"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"timestamp": 1534210131,
|
||||
"version": "1.0.5",
|
||||
"changes": [
|
||||
{
|
||||
"note": "Dependencies updated"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"timestamp": 1532619515,
|
||||
"version": "1.0.4",
|
||||
"changes": [
|
||||
{
|
||||
"note": "Dependencies updated"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"timestamp": 1532614997,
|
||||
"version": "1.0.3",
|
||||
"changes": [
|
||||
{
|
||||
"note": "Dependencies updated"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"timestamp": 1532605697,
|
||||
"version": "1.0.2",
|
||||
"changes": [
|
||||
{
|
||||
"note": "Dependencies updated"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"version": "1.0.1",
|
||||
"changes": [
|
||||
{
|
||||
"note": "Fix the abi-gen entry point in package.json",
|
||||
"pr": 901
|
||||
}
|
||||
],
|
||||
"timestamp": 1532357734
|
||||
},
|
||||
{
|
||||
"timestamp": 1532043000,
|
||||
"version": "1.0.0",
|
||||
"changes": [
|
||||
{
|
||||
"note": "Convert e_r_c to erc in generated file names",
|
||||
"pr": 822
|
||||
},
|
||||
{
|
||||
"note": "Remove the output directory before writing to it",
|
||||
"pr": 822
|
||||
},
|
||||
{
|
||||
"note": "skip generation of wrappers that are already up to date",
|
||||
"pr": 788
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"timestamp": 1531919263,
|
||||
"version": "0.3.4",
|
||||
"changes": [
|
||||
{
|
||||
"note": "Dependencies updated"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"timestamp": 1531149657,
|
||||
"version": "0.3.3",
|
||||
"changes": [
|
||||
{
|
||||
"note": "Dependencies updated"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"timestamp": 1529397769,
|
||||
"version": "0.3.2",
|
||||
"changes": [
|
||||
{
|
||||
"note": "Dependencies updated"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"version": "0.3.1",
|
||||
"changes": [
|
||||
{
|
||||
"note": "Incorrect publish that was unpublished"
|
||||
}
|
||||
],
|
||||
"timestamp": 1527810075
|
||||
},
|
||||
{
|
||||
"version": "0.3.0",
|
||||
"changes": [
|
||||
{
|
||||
"note": "Properly export the executable binary",
|
||||
"pr": 588
|
||||
}
|
||||
],
|
||||
"timestamp": 1527008270
|
||||
},
|
||||
{
|
||||
"timestamp": 1525477860,
|
||||
"version": "0.2.13",
|
||||
"changes": [
|
||||
{
|
||||
"note": "Dependencies updated"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"timestamp": 1525428773,
|
||||
"version": "0.2.12",
|
||||
"changes": [
|
||||
{
|
||||
"note": "Dependencies updated"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"timestamp": 1524044013,
|
||||
"version": "0.2.11",
|
||||
"changes": [
|
||||
{
|
||||
"note": "Dependencies updated"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"timestamp": 1523462196,
|
||||
"version": "0.2.10",
|
||||
"changes": [
|
||||
{
|
||||
"note": "Dependencies updated"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"timestamp": 1522673609,
|
||||
"version": "0.2.9",
|
||||
"changes": [
|
||||
{
|
||||
"note": "Dependencies updated"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"timestamp": 1522658513,
|
||||
"version": "0.2.8",
|
||||
"changes": [
|
||||
{
|
||||
"note": "Dependencies updated"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"version": "0.2.5",
|
||||
"changes": [
|
||||
{
|
||||
"note": "Consolidate all `console.log` calls into `logUtils` in the `@0xproject/utils` package",
|
||||
"pr": 452
|
||||
}
|
||||
],
|
||||
"timestamp": 1521298800
|
||||
},
|
||||
{
|
||||
"version": "0.2.4",
|
||||
"changes": [
|
||||
{
|
||||
"note":
|
||||
"Add a `backend` parameter that allows you to specify the Ethereum library you use in your templates (`web3` or `ethers`). Ethers auto-converts small ints to numbers whereas Web3 doesn't. Defaults to `web3`",
|
||||
"pr": 413
|
||||
},
|
||||
{
|
||||
"note":
|
||||
"Add support for [tuple types](https://solidity.readthedocs.io/en/develop/abi-spec.html#handling-tuple-types)",
|
||||
"pr": 413
|
||||
},
|
||||
{
|
||||
"note": "Add `hasReturnValue` to context data",
|
||||
"pr": 413
|
||||
}
|
||||
],
|
||||
"timestamp": 1520089200
|
||||
},
|
||||
{
|
||||
"version": "0.2.1",
|
||||
"changes": [
|
||||
{
|
||||
"note": "Fix publishing issue where .npmignore was not properly excluding undesired content",
|
||||
"pr": 389
|
||||
}
|
||||
],
|
||||
"timestamp": 1518102000
|
||||
},
|
||||
{
|
||||
"version": "0.2.0",
|
||||
"changes": [
|
||||
{
|
||||
"note": "Added CLI options for explicit specifying location of partials and main template",
|
||||
"pr": 346
|
||||
},
|
||||
{
|
||||
"note":
|
||||
"Added CLI option to specify networkId, adding support for the JSON artifact format found in @0xproject/contracts",
|
||||
"pr": 388
|
||||
}
|
||||
],
|
||||
"timestamp": 1517929200
|
||||
},
|
||||
{
|
||||
"version": "0.1.0",
|
||||
"changes": [
|
||||
{
|
||||
"note": "Fixed array typings with union types",
|
||||
"pr": 295
|
||||
},
|
||||
{
|
||||
"note": "Add event ABIs to context data passed to templates",
|
||||
"pr": 302
|
||||
},
|
||||
{
|
||||
"note": "Add constructor ABIs to context data passed to templates",
|
||||
"pr": 304
|
||||
}
|
||||
],
|
||||
"timestamp": 1515596400
|
||||
}
|
||||
]
|
||||
117
packages/abi-gen/CHANGELOG.md
Normal file
117
packages/abi-gen/CHANGELOG.md
Normal file
@@ -0,0 +1,117 @@
|
||||
<!--
|
||||
changelogUtils.file is auto-generated using the monorepo-scripts package. Don't edit directly.
|
||||
Edit the package's CHANGELOG.json file only.
|
||||
-->
|
||||
|
||||
CHANGELOG
|
||||
|
||||
## v1.0.9 - _September 21, 2018_
|
||||
|
||||
* Dependencies updated
|
||||
|
||||
## v1.0.8 - _September 5, 2018_
|
||||
|
||||
* Dependencies updated
|
||||
|
||||
## v1.0.7 - _August 27, 2018_
|
||||
|
||||
* Dependencies updated
|
||||
|
||||
## v1.0.6 - _August 24, 2018_
|
||||
|
||||
* Dependencies updated
|
||||
|
||||
## v1.0.5 - _August 14, 2018_
|
||||
|
||||
* Dependencies updated
|
||||
|
||||
## v1.0.4 - _July 26, 2018_
|
||||
|
||||
* Dependencies updated
|
||||
|
||||
## v1.0.3 - _July 26, 2018_
|
||||
|
||||
* Dependencies updated
|
||||
|
||||
## v1.0.2 - _July 26, 2018_
|
||||
|
||||
* Dependencies updated
|
||||
|
||||
## v1.0.1 - _July 23, 2018_
|
||||
|
||||
* Fix the abi-gen entry point in package.json (#901)
|
||||
|
||||
## v1.0.0 - _July 20, 2018_
|
||||
|
||||
* Convert e_r_c to erc in generated file names (#822)
|
||||
* Remove the output directory before writing to it (#822)
|
||||
* skip generation of wrappers that are already up to date (#788)
|
||||
|
||||
## v0.3.4 - _July 18, 2018_
|
||||
|
||||
* Dependencies updated
|
||||
|
||||
## v0.3.3 - _July 9, 2018_
|
||||
|
||||
* Dependencies updated
|
||||
|
||||
## v0.3.2 - _June 19, 2018_
|
||||
|
||||
* Dependencies updated
|
||||
|
||||
## v0.3.1 - _June 1, 2018_
|
||||
|
||||
* Incorrect publish that was unpublished
|
||||
|
||||
## v0.3.0 - _May 22, 2018_
|
||||
|
||||
* Properly export the executable binary (#588)
|
||||
|
||||
## v0.2.13 - _May 5, 2018_
|
||||
|
||||
* Dependencies updated
|
||||
|
||||
## v0.2.12 - _May 4, 2018_
|
||||
|
||||
* Dependencies updated
|
||||
|
||||
## v0.2.11 - _April 18, 2018_
|
||||
|
||||
* Dependencies updated
|
||||
|
||||
## v0.2.10 - _April 11, 2018_
|
||||
|
||||
* Dependencies updated
|
||||
|
||||
## v0.2.9 - _April 2, 2018_
|
||||
|
||||
* Dependencies updated
|
||||
|
||||
## v0.2.8 - _April 2, 2018_
|
||||
|
||||
* Dependencies updated
|
||||
|
||||
## v0.2.5 - _March 17, 2018_
|
||||
|
||||
* Consolidate all `console.log` calls into `logUtils` in the `@0xproject/utils` package (#452)
|
||||
|
||||
## v0.2.4 - _March 3, 2018_
|
||||
|
||||
* Add a `backend` parameter that allows you to specify the Ethereum library you use in your templates (`web3` or `ethers`). Ethers auto-converts small ints to numbers whereas Web3 doesn't. Defaults to `web3` (#413)
|
||||
* Add support for [tuple types](https://solidity.readthedocs.io/en/develop/abi-spec.html#handling-tuple-types) (#413)
|
||||
* Add `hasReturnValue` to context data (#413)
|
||||
|
||||
## v0.2.1 - _February 8, 2018_
|
||||
|
||||
* Fix publishing issue where .npmignore was not properly excluding undesired content (#389)
|
||||
|
||||
## v0.2.0 - _February 6, 2018_
|
||||
|
||||
* Added CLI options for explicit specifying location of partials and main template (#346)
|
||||
* Added CLI option to specify networkId, adding support for the JSON artifact format found in @0xproject/contracts (#388)
|
||||
|
||||
## v0.1.0 - _January 10, 2018_
|
||||
|
||||
* Fixed array typings with union types (#295)
|
||||
* Add event ABIs to context data passed to templates (#302)
|
||||
* Add constructor ABIs to context data passed to templates (#304)
|
||||
104
packages/abi-gen/README.md
Normal file
104
packages/abi-gen/README.md
Normal file
@@ -0,0 +1,104 @@
|
||||
# ABI Gen
|
||||
|
||||
This package allows you to generate TypeScript contract wrappers from ABI files.
|
||||
It's heavily inspired by [Geth abigen](https://github.com/ethereum/go-ethereum/wiki/Native-DApps:-Go-bindings-to-Ethereum-contracts) but takes a different approach.
|
||||
You can write your custom handlebars templates which will allow you to seamlessly integrate the generated code into your existing codebase with existing conventions.
|
||||
|
||||
[Here](https://github.com/0xProject/0x-monorepo/tree/development/packages/0x.js/contract_templates) are the templates used to generate the contract wrappers used by 0x.js.e
|
||||
|
||||
## Installation
|
||||
|
||||
`yarn add -g @0xproject/abi-gen`
|
||||
|
||||
## Usage
|
||||
|
||||
```
|
||||
abi-gen
|
||||
Options:
|
||||
--help Show help [boolean]
|
||||
--version Show version number [boolean]
|
||||
--abis Glob pattern to search for ABI JSON files
|
||||
[string] [required]
|
||||
--output, -o, --out Folder where to put the output files [string] [required]
|
||||
--partials Glob pattern for the partial template files [string]
|
||||
--template Path for the main template file that will be used to
|
||||
generate each contract [string] [required]
|
||||
--backend The backing Ethereum library your app uses. Either 'web3'
|
||||
or 'ethers'. Ethers auto-converts small ints to numbers
|
||||
whereas Web3 doesn't.
|
||||
[string] [choices: "web3", "ethers"] [default: "web3"]
|
||||
--network-id ID of the network where contract ABIs are nested in
|
||||
artifacts [number] [default: 50]
|
||||
```
|
||||
|
||||
You're required to pass a [glob](<https://en.wikipedia.org/wiki/Glob_(programming)>) template where your abi files are located.
|
||||
TL;DR - here is the example from 0x.js.
|
||||
|
||||
`--abis 'src/artifacts/@(Exchange|Token|TokenTransferProxy|EtherToken|TokenRegistry).json`
|
||||
|
||||
We could've just used `--abis 'src/artifacts/*.json` but we wanted to exclude some of the abi files.
|
||||
|
||||
The abi file should be either a [Truffle](http://truffleframework.com/) contract artifact (a JSON object with an abi key) or a JSON abi array.
|
||||
|
||||
You need to also specify the location of your main template used for every contract `--template` as well as the partial templates `--partials` that can later be used from the main one.
|
||||
|
||||
## How to write custom templates?
|
||||
|
||||
The best way to get started is to copy [0x.js templates](https://github.com/0xProject/0x-monorepo/tree/development/packages/contract_templates) and start adjusting them for your needs.
|
||||
We use [handlebars](http://handlebarsjs.com/) template engine under the hood.
|
||||
You need to have a master template called `contract.mustache`. it will be used to generate each contract wrapper. Although - you don't need and probably shouldn't write all your logic in a single template file. You can write [partial templates](http://handlebarsjs.com/partials.html) and as long as they are within a partials folder - they will be registered and available.
|
||||
|
||||
## Which data/context do I get in my templates?
|
||||
|
||||
For now you don't get much on top of methods abi, some useful helpers and a contract name because it was enough for our use-case, but if you need something else - create a PR.
|
||||
See the [type definition](https://github.com/0xProject/0x-monorepo/tree/development/packages/abi-gen/src/types.ts) of what we pass to the render method.
|
||||
|
||||
## Output files
|
||||
|
||||
Output files will be generated within an output folder with names converted to camel case and taken from abi file names. If you already have some files in that folder they will be overwritten.
|
||||
|
||||
## Contributing
|
||||
|
||||
We welcome improvements and fixes from the wider community! To report bugs within this package, please create an issue in this repository.
|
||||
|
||||
Please read our [contribution guidelines](../../CONTRIBUTING.md) before getting started.
|
||||
|
||||
### Install dependencies
|
||||
|
||||
If you don't have yarn workspaces enabled (Yarn < v1.0) - enable them:
|
||||
|
||||
```bash
|
||||
yarn config set workspaces-experimental true
|
||||
```
|
||||
|
||||
Then install dependencies
|
||||
|
||||
```bash
|
||||
yarn install
|
||||
```
|
||||
|
||||
### Build
|
||||
|
||||
To build this package and all other monorepo packages that it depends on, run the following from the monorepo root directory:
|
||||
|
||||
```bash
|
||||
PKG=@0xproject/abi-gen yarn build
|
||||
```
|
||||
|
||||
Or continuously rebuild on change:
|
||||
|
||||
```bash
|
||||
PKG=@0xproject/abi-gen yarn watch
|
||||
```
|
||||
|
||||
### Clean
|
||||
|
||||
```bash
|
||||
yarn clean
|
||||
```
|
||||
|
||||
### Lint
|
||||
|
||||
```bash
|
||||
yarn lint
|
||||
```
|
||||
2
packages/abi-gen/bin/abi-gen.js
Executable file
2
packages/abi-gen/bin/abi-gen.js
Executable file
@@ -0,0 +1,2 @@
|
||||
#!/usr/bin/env node
|
||||
require('../lib/src/index.js');
|
||||
0
packages/abi-gen/coverage/.gitkeep
Normal file
0
packages/abi-gen/coverage/.gitkeep
Normal file
68
packages/abi-gen/package.json
Normal file
68
packages/abi-gen/package.json
Normal file
@@ -0,0 +1,68 @@
|
||||
{
|
||||
"name": "@0xproject/abi-gen",
|
||||
"version": "1.0.9",
|
||||
"engines": {
|
||||
"node": ">=6.12"
|
||||
},
|
||||
"description": "Generate contract wrappers from ABI and handlebars templates",
|
||||
"main": "lib/src/index.js",
|
||||
"types": "lib/src/index.d.ts",
|
||||
"scripts": {
|
||||
"lint": "tslint --project .",
|
||||
"clean": "shx rm -rf lib",
|
||||
"build": "tsc -b",
|
||||
"test": "yarn run_mocha",
|
||||
"run_mocha": "mocha --require source-map-support/register --require make-promises-safe lib/test/**/*_test.js --bail --exit",
|
||||
"test:circleci": "yarn test:coverage",
|
||||
"test:coverage": "nyc npm run test --all && yarn coverage:report:lcov",
|
||||
"coverage:report:lcov": "nyc report --reporter=text-lcov > coverage/lcov.info"
|
||||
},
|
||||
"bin": {
|
||||
"abi-gen": "bin/abi-gen.js"
|
||||
},
|
||||
"repository": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/0xProject/0x-monorepo.git"
|
||||
},
|
||||
"license": "Apache-2.0",
|
||||
"bugs": {
|
||||
"url": "https://github.com/0xProject/0x-monorepo/issues"
|
||||
},
|
||||
"homepage": "https://github.com/0xProject/0x-monorepo/packages/abi-gen/README.md",
|
||||
"dependencies": {
|
||||
"@0xproject/typescript-typings": "^2.0.1",
|
||||
"@0xproject/utils": "^1.0.9",
|
||||
"chalk": "^2.3.0",
|
||||
"ethereum-types": "^1.0.7",
|
||||
"glob": "^7.1.2",
|
||||
"handlebars": "^4.0.11",
|
||||
"lodash": "^4.17.5",
|
||||
"mkdirp": "^0.5.1",
|
||||
"sleep": "^5.1.1",
|
||||
"tmp": "^0.0.33",
|
||||
"to-snake-case": "^1.0.0",
|
||||
"yargs": "^10.0.3"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@0xproject/tslint-config": "^1.0.7",
|
||||
"@types/glob": "5.0.35",
|
||||
"@types/handlebars": "^4.0.36",
|
||||
"@types/mkdirp": "^0.5.1",
|
||||
"@types/node": "*",
|
||||
"@types/sleep": "^0.0.7",
|
||||
"@types/tmp": "^0.0.33",
|
||||
"@types/yargs": "^10.0.0",
|
||||
"chai": "^4.1.2",
|
||||
"copyfiles": "^2.0.0",
|
||||
"dirty-chai": "^2.0.1",
|
||||
"make-promises-safe": "^1.1.0",
|
||||
"mocha": "^5.2.0",
|
||||
"npm-run-all": "^4.1.2",
|
||||
"shx": "^0.2.2",
|
||||
"tslint": "5.11.0",
|
||||
"typescript": "3.0.1"
|
||||
},
|
||||
"publishConfig": {
|
||||
"access": "public"
|
||||
}
|
||||
}
|
||||
6
packages/abi-gen/src/globals.d.ts
vendored
Normal file
6
packages/abi-gen/src/globals.d.ts
vendored
Normal file
@@ -0,0 +1,6 @@
|
||||
declare module '*.json' {
|
||||
const json: any;
|
||||
/* tslint:disable */
|
||||
export default json;
|
||||
/* tslint:enable */
|
||||
}
|
||||
152
packages/abi-gen/src/index.ts
Normal file
152
packages/abi-gen/src/index.ts
Normal file
@@ -0,0 +1,152 @@
|
||||
#!/usr/bin/env node
|
||||
|
||||
import { abiUtils, logUtils } from '@0xproject/utils';
|
||||
import chalk from 'chalk';
|
||||
import { AbiDefinition, ConstructorAbi, EventAbi, MethodAbi } from 'ethereum-types';
|
||||
import { sync as globSync } from 'glob';
|
||||
import * as Handlebars from 'handlebars';
|
||||
import * as _ from 'lodash';
|
||||
import * as mkdirp from 'mkdirp';
|
||||
import * as yargs from 'yargs';
|
||||
|
||||
import { ContextData, ContractsBackend, ParamKind } from './types';
|
||||
import { utils } from './utils';
|
||||
|
||||
const ABI_TYPE_CONSTRUCTOR = 'constructor';
|
||||
const ABI_TYPE_METHOD = 'function';
|
||||
const ABI_TYPE_EVENT = 'event';
|
||||
const DEFAULT_NETWORK_ID = 50;
|
||||
const DEFAULT_BACKEND = 'web3';
|
||||
|
||||
const args = yargs
|
||||
.option('abis', {
|
||||
describe: 'Glob pattern to search for ABI JSON files',
|
||||
type: 'string',
|
||||
demandOption: true,
|
||||
})
|
||||
.option('output', {
|
||||
alias: ['o', 'out'],
|
||||
describe: 'Folder where to put the output files',
|
||||
type: 'string',
|
||||
normalize: true,
|
||||
demandOption: true,
|
||||
})
|
||||
.option('partials', {
|
||||
describe: 'Glob pattern for the partial template files',
|
||||
type: 'string',
|
||||
implies: 'template',
|
||||
})
|
||||
.option('template', {
|
||||
describe: 'Path for the main template file that will be used to generate each contract',
|
||||
type: 'string',
|
||||
demandOption: true,
|
||||
normalize: true,
|
||||
})
|
||||
.option('backend', {
|
||||
describe: `The backing Ethereum library your app uses. Either 'web3' or 'ethers'. Ethers auto-converts small ints to numbers whereas Web3 doesn't.`,
|
||||
type: 'string',
|
||||
choices: [ContractsBackend.Web3, ContractsBackend.Ethers],
|
||||
default: DEFAULT_BACKEND,
|
||||
})
|
||||
.option('network-id', {
|
||||
describe: 'ID of the network where contract ABIs are nested in artifacts',
|
||||
type: 'number',
|
||||
default: DEFAULT_NETWORK_ID,
|
||||
})
|
||||
.example(
|
||||
"$0 --abis 'src/artifacts/**/*.json' --out 'src/contracts/generated/' --partials 'src/templates/partials/**/*.handlebars' --template 'src/templates/contract.handlebars'",
|
||||
'Full usage example',
|
||||
).argv;
|
||||
|
||||
function registerPartials(partialsGlob: string): void {
|
||||
const partialTemplateFileNames = globSync(partialsGlob);
|
||||
logUtils.log(`Found ${chalk.green(`${partialTemplateFileNames.length}`)} ${chalk.bold('partial')} templates`);
|
||||
for (const partialTemplateFileName of partialTemplateFileNames) {
|
||||
const namedContent = utils.getNamedContent(partialTemplateFileName);
|
||||
Handlebars.registerPartial(namedContent.name, namedContent.content);
|
||||
}
|
||||
}
|
||||
|
||||
Handlebars.registerHelper('parameterType', utils.solTypeToTsType.bind(utils, ParamKind.Input, args.backend));
|
||||
Handlebars.registerHelper('returnType', utils.solTypeToTsType.bind(utils, ParamKind.Output, args.backend));
|
||||
if (args.partials) {
|
||||
registerPartials(args.partials);
|
||||
}
|
||||
const mainTemplate = utils.getNamedContent(args.template);
|
||||
const template = Handlebars.compile<ContextData>(mainTemplate.content);
|
||||
const abiFileNames = globSync(args.abis);
|
||||
|
||||
if (_.isEmpty(abiFileNames)) {
|
||||
logUtils.log(`${chalk.red(`No ABI files found.`)}`);
|
||||
logUtils.log(`Please make sure you've passed the correct folder name and that the files have
|
||||
${chalk.bold('*.json')} extensions`);
|
||||
process.exit(1);
|
||||
} else {
|
||||
logUtils.log(`Found ${chalk.green(`${abiFileNames.length}`)} ${chalk.bold('ABI')} files`);
|
||||
mkdirp.sync(args.output);
|
||||
}
|
||||
for (const abiFileName of abiFileNames) {
|
||||
const namedContent = utils.getNamedContent(abiFileName);
|
||||
logUtils.log(`Processing: ${chalk.bold(namedContent.name)}...`);
|
||||
const parsedContent = JSON.parse(namedContent.content);
|
||||
let ABI;
|
||||
if (_.isArray(parsedContent)) {
|
||||
ABI = parsedContent; // ABI file
|
||||
} else if (!_.isUndefined(parsedContent.abi)) {
|
||||
ABI = parsedContent.abi; // Truffle artifact
|
||||
} else if (!_.isUndefined(parsedContent.compilerOutput.abi)) {
|
||||
ABI = parsedContent.compilerOutput.abi; // 0x artifact
|
||||
}
|
||||
if (_.isUndefined(ABI)) {
|
||||
logUtils.log(`${chalk.red(`ABI not found in ${abiFileName}.`)}`);
|
||||
logUtils.log(
|
||||
`Please make sure your ABI file is either an array with ABI entries or a truffle artifact or 0x sol-compiler artifact`,
|
||||
);
|
||||
process.exit(1);
|
||||
}
|
||||
|
||||
const outFileName = utils.makeOutputFileName(namedContent.name);
|
||||
const outFilePath = `${args.output}/${outFileName}.ts`;
|
||||
|
||||
if (utils.isOutputFileUpToDate(abiFileName, outFilePath)) {
|
||||
logUtils.log(`Already up to date: ${chalk.bold(outFilePath)}`);
|
||||
continue;
|
||||
}
|
||||
|
||||
let ctor = ABI.find((abi: AbiDefinition) => abi.type === ABI_TYPE_CONSTRUCTOR) as ConstructorAbi;
|
||||
if (_.isUndefined(ctor)) {
|
||||
ctor = utils.getEmptyConstructor(); // The constructor exists, but it's implicit in JSON's ABI definition
|
||||
}
|
||||
|
||||
const methodAbis = ABI.filter((abi: AbiDefinition) => abi.type === ABI_TYPE_METHOD) as MethodAbi[];
|
||||
const sanitizedMethodAbis = abiUtils.renameOverloadedMethods(methodAbis) as MethodAbi[];
|
||||
const methodsData = _.map(methodAbis, (methodAbi, methodAbiIndex: number) => {
|
||||
_.forEach(methodAbi.inputs, (input, inputIndex: number) => {
|
||||
if (_.isEmpty(input.name)) {
|
||||
// Auto-generated getters don't have parameter names
|
||||
input.name = `index_${inputIndex}`;
|
||||
}
|
||||
});
|
||||
// This will make templates simpler
|
||||
const methodData = {
|
||||
...methodAbi,
|
||||
singleReturnValue: methodAbi.outputs.length === 1,
|
||||
hasReturnValue: methodAbi.outputs.length !== 0,
|
||||
tsName: sanitizedMethodAbis[methodAbiIndex].name,
|
||||
functionSignature: abiUtils.getFunctionSignature(methodAbi),
|
||||
};
|
||||
return methodData;
|
||||
});
|
||||
|
||||
const eventAbis = ABI.filter((abi: AbiDefinition) => abi.type === ABI_TYPE_EVENT) as EventAbi[];
|
||||
|
||||
const contextData = {
|
||||
contractName: namedContent.name,
|
||||
ctor,
|
||||
methods: methodsData,
|
||||
events: eventAbis,
|
||||
};
|
||||
const renderedTsCode = template(contextData);
|
||||
utils.writeOutputFile(outFilePath, renderedTsCode);
|
||||
logUtils.log(`Created: ${chalk.bold(outFilePath)}`);
|
||||
}
|
||||
24
packages/abi-gen/src/types.ts
Normal file
24
packages/abi-gen/src/types.ts
Normal file
@@ -0,0 +1,24 @@
|
||||
import { EventAbi, MethodAbi } from 'ethereum-types';
|
||||
|
||||
export enum ParamKind {
|
||||
Input = 'input',
|
||||
Output = 'output',
|
||||
}
|
||||
|
||||
export enum ContractsBackend {
|
||||
Web3 = 'web3',
|
||||
Ethers = 'ethers',
|
||||
}
|
||||
|
||||
export interface Method extends MethodAbi {
|
||||
singleReturnValue: boolean;
|
||||
hasReturnValue: boolean;
|
||||
tsName: string;
|
||||
functionSignature: string;
|
||||
}
|
||||
|
||||
export interface ContextData {
|
||||
contractName: string;
|
||||
methods: Method[];
|
||||
events: EventAbi[];
|
||||
}
|
||||
119
packages/abi-gen/src/utils.ts
Normal file
119
packages/abi-gen/src/utils.ts
Normal file
@@ -0,0 +1,119 @@
|
||||
import { AbiType, ConstructorAbi, DataItem } from 'ethereum-types';
|
||||
import * as fs from 'fs';
|
||||
import * as _ from 'lodash';
|
||||
import * as path from 'path';
|
||||
import toSnakeCase = require('to-snake-case');
|
||||
|
||||
import { ContractsBackend, ParamKind } from './types';
|
||||
|
||||
export const utils = {
|
||||
solTypeToTsType(paramKind: ParamKind, backend: ContractsBackend, solType: string, components?: DataItem[]): string {
|
||||
const trailingArrayRegex = /\[\d*\]$/;
|
||||
if (solType.match(trailingArrayRegex)) {
|
||||
const arrayItemSolType = solType.replace(trailingArrayRegex, '');
|
||||
const arrayItemTsType = utils.solTypeToTsType(paramKind, backend, arrayItemSolType, components);
|
||||
const arrayTsType =
|
||||
utils.isUnionType(arrayItemTsType) || utils.isObjectType(arrayItemTsType)
|
||||
? `Array<${arrayItemTsType}>`
|
||||
: `${arrayItemTsType}[]`;
|
||||
return arrayTsType;
|
||||
} else {
|
||||
const solTypeRegexToTsType = [
|
||||
{ regex: '^string$', tsType: 'string' },
|
||||
{ regex: '^address$', tsType: 'string' },
|
||||
{ regex: '^bool$', tsType: 'boolean' },
|
||||
{ regex: '^u?int\\d*$', tsType: 'BigNumber' },
|
||||
{ regex: '^bytes\\d*$', tsType: 'string' },
|
||||
];
|
||||
if (paramKind === ParamKind.Input) {
|
||||
// web3 and ethers allow to pass those as numbers instead of bignumbers
|
||||
solTypeRegexToTsType.unshift({
|
||||
regex: '^u?int(8|16|32)?$',
|
||||
tsType: 'number|BigNumber',
|
||||
});
|
||||
}
|
||||
if (backend === ContractsBackend.Ethers && paramKind === ParamKind.Output) {
|
||||
// ethers-contracts automatically converts small BigNumbers to numbers
|
||||
solTypeRegexToTsType.unshift({
|
||||
regex: '^u?int(8|16|32|48)?$',
|
||||
tsType: 'number',
|
||||
});
|
||||
}
|
||||
for (const regexAndTxType of solTypeRegexToTsType) {
|
||||
const { regex, tsType } = regexAndTxType;
|
||||
if (solType.match(regex)) {
|
||||
return tsType;
|
||||
}
|
||||
}
|
||||
const TUPLE_TYPE_REGEX = '^tuple$';
|
||||
if (solType.match(TUPLE_TYPE_REGEX)) {
|
||||
const componentsType = _.map(components, component => {
|
||||
const componentValueType = utils.solTypeToTsType(
|
||||
paramKind,
|
||||
backend,
|
||||
component.type,
|
||||
component.components,
|
||||
);
|
||||
const componentType = `${component.name}: ${componentValueType}`;
|
||||
return componentType;
|
||||
});
|
||||
const tsType = `{${componentsType.join(';')}}`;
|
||||
return tsType;
|
||||
}
|
||||
throw new Error(`Unknown Solidity type found: ${solType}`);
|
||||
}
|
||||
},
|
||||
isUnionType(tsType: string): boolean {
|
||||
return tsType === 'number|BigNumber';
|
||||
},
|
||||
isObjectType(tsType: string): boolean {
|
||||
return /^{.*}$/.test(tsType);
|
||||
},
|
||||
getPartialNameFromFileName(filename: string): string {
|
||||
const name = path.parse(filename).name;
|
||||
return name;
|
||||
},
|
||||
getNamedContent(filename: string): { name: string; content: string } {
|
||||
const name = utils.getPartialNameFromFileName(filename);
|
||||
try {
|
||||
const content = fs.readFileSync(filename).toString();
|
||||
return {
|
||||
name,
|
||||
content,
|
||||
};
|
||||
} catch (err) {
|
||||
throw new Error(`Failed to read ${filename}: ${err}`);
|
||||
}
|
||||
},
|
||||
getEmptyConstructor(): ConstructorAbi {
|
||||
return {
|
||||
type: AbiType.Constructor,
|
||||
stateMutability: 'nonpayable',
|
||||
payable: false,
|
||||
inputs: [],
|
||||
};
|
||||
},
|
||||
makeOutputFileName(name: string): string {
|
||||
let fileName = toSnakeCase(name);
|
||||
// HACK: Snake case doesn't make a lot of sense for abbreviated names but we can't reliably detect abbreviations
|
||||
// so we special-case the abbreviations we use.
|
||||
fileName = fileName.replace('z_r_x', 'zrx').replace('e_r_c', 'erc');
|
||||
return fileName;
|
||||
},
|
||||
writeOutputFile(filePath: string, renderedTsCode: string): void {
|
||||
fs.writeFileSync(filePath, renderedTsCode);
|
||||
},
|
||||
isOutputFileUpToDate(abiFile: string, outputFile: string): boolean {
|
||||
const abiFileModTimeMs = fs.statSync(abiFile).mtimeMs;
|
||||
try {
|
||||
const outFileModTimeMs = fs.statSync(outputFile).mtimeMs;
|
||||
return outFileModTimeMs > abiFileModTimeMs;
|
||||
} catch (err) {
|
||||
if (err.code === 'ENOENT') {
|
||||
return false;
|
||||
} else {
|
||||
throw err;
|
||||
}
|
||||
}
|
||||
},
|
||||
};
|
||||
86
packages/abi-gen/test/utils_test.ts
Normal file
86
packages/abi-gen/test/utils_test.ts
Normal file
@@ -0,0 +1,86 @@
|
||||
import * as chai from 'chai';
|
||||
import * as dirtyChai from 'dirty-chai';
|
||||
import * as fs from 'fs';
|
||||
import 'mocha';
|
||||
import * as tmp from 'tmp';
|
||||
|
||||
import { utils } from '../src/utils';
|
||||
|
||||
tmp.setGracefulCleanup(); // remove tmp files even if there are failures
|
||||
|
||||
chai.use(dirtyChai);
|
||||
|
||||
const expect = chai.expect;
|
||||
|
||||
describe('makeOutputFileName()', () => {
|
||||
it('should handle Metacoin usage', () => {
|
||||
expect(utils.makeOutputFileName('Metacoin')).to.equal('metacoin');
|
||||
});
|
||||
it('should handle special zrx_token case', () => {
|
||||
expect(utils.makeOutputFileName('ZRXToken')).to.equal('zrx_token');
|
||||
});
|
||||
it('should handle special erc_token case', () => {
|
||||
expect(utils.makeOutputFileName('ERC20Token')).to.equal('erc20_token');
|
||||
});
|
||||
});
|
||||
|
||||
describe('writeOutputFile()', () => {
|
||||
let tempFilePath: string;
|
||||
before(() => {
|
||||
tempFilePath = tmp.fileSync(
|
||||
{ discardDescriptor: true }, // close file (so we can update it)
|
||||
).name;
|
||||
});
|
||||
it('should write content to output file', () => {
|
||||
const content = 'hello world';
|
||||
|
||||
utils.writeOutputFile(tempFilePath, content);
|
||||
|
||||
expect(fs.readFileSync(tempFilePath).toString()).to.equal(content);
|
||||
});
|
||||
});
|
||||
|
||||
describe('isOutputFileUpToDate()', () => {
|
||||
it('should throw ENOENT when there is no abi file', () => {
|
||||
expect(utils.isOutputFileUpToDate.bind('nonexistant1', 'nonexistant2')).to.throw('ENOENT');
|
||||
});
|
||||
|
||||
describe('when the abi input file exists', () => {
|
||||
let abiFile: string;
|
||||
before(() => {
|
||||
abiFile = tmp.fileSync(
|
||||
{ discardDescriptor: true }, // close file (set timestamp)
|
||||
).name;
|
||||
});
|
||||
|
||||
describe('without an existing output file', () => {
|
||||
it('should return false', () => {
|
||||
expect(utils.isOutputFileUpToDate(abiFile, 'nonexistant_file')).to.be.false();
|
||||
});
|
||||
});
|
||||
|
||||
describe('with an existing output file', () => {
|
||||
let outputFile: string;
|
||||
before(() => {
|
||||
outputFile = tmp.fileSync(
|
||||
{ discardDescriptor: true }, // close file (set timestamp)
|
||||
).name;
|
||||
const abiFileModTimeMs = fs.statSync(abiFile).mtimeMs;
|
||||
const outfileModTimeMs = abiFileModTimeMs + 1;
|
||||
fs.utimesSync(outputFile, outfileModTimeMs, outfileModTimeMs);
|
||||
});
|
||||
|
||||
it('should return true when output file is newer than abi file', async () => {
|
||||
expect(utils.isOutputFileUpToDate(abiFile, outputFile)).to.be.true();
|
||||
});
|
||||
|
||||
it('should return false when output file exists but is older than abi file', () => {
|
||||
const outFileModTimeMs = fs.statSync(outputFile).mtimeMs;
|
||||
const abiFileModTimeMs = outFileModTimeMs + 1;
|
||||
fs.utimesSync(abiFile, abiFileModTimeMs, abiFileModTimeMs);
|
||||
|
||||
expect(utils.isOutputFileUpToDate(abiFile, outputFile)).to.be.false();
|
||||
});
|
||||
});
|
||||
});
|
||||
});
|
||||
8
packages/abi-gen/tsconfig.json
Normal file
8
packages/abi-gen/tsconfig.json
Normal file
@@ -0,0 +1,8 @@
|
||||
{
|
||||
"extends": "../../tsconfig",
|
||||
"compilerOptions": {
|
||||
"outDir": "lib",
|
||||
"rootDir": "."
|
||||
},
|
||||
"include": ["./src/**/*", "./test/**/*"]
|
||||
}
|
||||
3
packages/abi-gen/tslint.json
Normal file
3
packages/abi-gen/tslint.json
Normal file
@@ -0,0 +1,3 @@
|
||||
{
|
||||
"extends": ["@0xproject/tslint-config"]
|
||||
}
|
||||
7
packages/assert/.npmignore
Normal file
7
packages/assert/.npmignore
Normal file
@@ -0,0 +1,7 @@
|
||||
.*
|
||||
yarn-error.log
|
||||
/src/
|
||||
/scripts/
|
||||
test/
|
||||
tsconfig.json
|
||||
/lib/src/monorepo_scripts/
|
||||
240
packages/assert/CHANGELOG.json
Normal file
240
packages/assert/CHANGELOG.json
Normal file
@@ -0,0 +1,240 @@
|
||||
[
|
||||
{
|
||||
"timestamp": 1537541580,
|
||||
"version": "1.0.9",
|
||||
"changes": [
|
||||
{
|
||||
"note": "Dependencies updated"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"timestamp": 1536142250,
|
||||
"version": "1.0.8",
|
||||
"changes": [
|
||||
{
|
||||
"note": "Dependencies updated"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"timestamp": 1535377027,
|
||||
"version": "1.0.7",
|
||||
"changes": [
|
||||
{
|
||||
"note": "Dependencies updated"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"timestamp": 1535133899,
|
||||
"version": "1.0.6",
|
||||
"changes": [
|
||||
{
|
||||
"note": "Dependencies updated"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"timestamp": 1534210131,
|
||||
"version": "1.0.5",
|
||||
"changes": [
|
||||
{
|
||||
"note": "Dependencies updated"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"timestamp": 1532619515,
|
||||
"version": "1.0.4",
|
||||
"changes": [
|
||||
{
|
||||
"note": "Dependencies updated"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"timestamp": 1532614997,
|
||||
"version": "1.0.3",
|
||||
"changes": [
|
||||
{
|
||||
"note": "Dependencies updated"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"timestamp": 1532605697,
|
||||
"version": "1.0.2",
|
||||
"changes": [
|
||||
{
|
||||
"note": "Dependencies updated"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"timestamp": 1532357734,
|
||||
"version": "1.0.1",
|
||||
"changes": [
|
||||
{
|
||||
"note": "Dependencies updated"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"timestamp": 1532043000,
|
||||
"version": "1.0.0",
|
||||
"changes": [
|
||||
{
|
||||
"note":
|
||||
"Fix bug in string enum assertion. We erroneously were checking against the enum keys, not values",
|
||||
"pr": 821
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"timestamp": 1531919263,
|
||||
"version": "0.2.14",
|
||||
"changes": [
|
||||
{
|
||||
"note": "Dependencies updated"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"timestamp": 1531149657,
|
||||
"version": "0.2.13",
|
||||
"changes": [
|
||||
{
|
||||
"note": "Dependencies updated"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"timestamp": 1529397769,
|
||||
"version": "0.2.12",
|
||||
"changes": [
|
||||
{
|
||||
"note": "Dependencies updated"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"version": "0.2.11",
|
||||
"changes": [
|
||||
{
|
||||
"note": "Incorrect publish that was unpublished"
|
||||
}
|
||||
],
|
||||
"timestamp": 1527810075
|
||||
},
|
||||
{
|
||||
"timestamp": 1527008270,
|
||||
"version": "0.2.10",
|
||||
"changes": [
|
||||
{
|
||||
"note": "Dependencies updated"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"timestamp": 1525477860,
|
||||
"version": "0.2.9",
|
||||
"changes": [
|
||||
{
|
||||
"note": "Dependencies updated"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"timestamp": 1525428773,
|
||||
"version": "0.2.8",
|
||||
"changes": [
|
||||
{
|
||||
"note": "Dependencies updated"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"timestamp": 1524044013,
|
||||
"version": "0.2.7",
|
||||
"changes": [
|
||||
{
|
||||
"note": "Dependencies updated"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"timestamp": 1523462196,
|
||||
"version": "0.2.6",
|
||||
"changes": [
|
||||
{
|
||||
"note": "Dependencies updated"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"timestamp": 1522673609,
|
||||
"version": "0.2.5",
|
||||
"changes": [
|
||||
{
|
||||
"note": "Dependencies updated"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"timestamp": 1522658513,
|
||||
"version": "0.2.4",
|
||||
"changes": [
|
||||
{
|
||||
"note": "Dependencies updated"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"version": "0.2.0",
|
||||
"changes": [
|
||||
{
|
||||
"note": "Rename `isHttpUrl` to `isWebUri`",
|
||||
"pr": 412
|
||||
}
|
||||
],
|
||||
"timestamp": 1520434800
|
||||
},
|
||||
{
|
||||
"version": "0.1.0",
|
||||
"changes": [
|
||||
{
|
||||
"note": "Remove isETHAddressHex checksum address check and assume address will be lowercased ",
|
||||
"pr": 373
|
||||
},
|
||||
{
|
||||
"note": "Add an optional parameter `subSchemas` to `doesConformToSchema` method",
|
||||
"pr": 385
|
||||
}
|
||||
],
|
||||
"timestamp": 1520089200
|
||||
},
|
||||
{
|
||||
"version": "0.0.18",
|
||||
"changes": [
|
||||
{
|
||||
"note": "Fix publishing issue where .npmignore was not properly excluding undesired content",
|
||||
"pr": 389
|
||||
}
|
||||
],
|
||||
"timestamp": 1486566000
|
||||
},
|
||||
{
|
||||
"version": "0.0.4",
|
||||
"changes": [
|
||||
{
|
||||
"note": "Re-publish Assert previously published under NPM package @0xproject/0x-assert"
|
||||
},
|
||||
{
|
||||
"note":
|
||||
"Added assertion isValidBaseUnitAmount which checks both that the value is a valid bigNumber and that it does not contain decimals."
|
||||
}
|
||||
],
|
||||
"timestamp": 1510585200
|
||||
}
|
||||
]
|
||||
108
packages/assert/CHANGELOG.md
Normal file
108
packages/assert/CHANGELOG.md
Normal file
@@ -0,0 +1,108 @@
|
||||
<!--
|
||||
changelogUtils.file is auto-generated using the monorepo-scripts package. Don't edit directly.
|
||||
Edit the package's CHANGELOG.json file only.
|
||||
-->
|
||||
|
||||
CHANGELOG
|
||||
|
||||
## v1.0.9 - _September 21, 2018_
|
||||
|
||||
* Dependencies updated
|
||||
|
||||
## v1.0.8 - _September 5, 2018_
|
||||
|
||||
* Dependencies updated
|
||||
|
||||
## v1.0.7 - _August 27, 2018_
|
||||
|
||||
* Dependencies updated
|
||||
|
||||
## v1.0.6 - _August 24, 2018_
|
||||
|
||||
* Dependencies updated
|
||||
|
||||
## v1.0.5 - _August 14, 2018_
|
||||
|
||||
* Dependencies updated
|
||||
|
||||
## v1.0.4 - _July 26, 2018_
|
||||
|
||||
* Dependencies updated
|
||||
|
||||
## v1.0.3 - _July 26, 2018_
|
||||
|
||||
* Dependencies updated
|
||||
|
||||
## v1.0.2 - _July 26, 2018_
|
||||
|
||||
* Dependencies updated
|
||||
|
||||
## v1.0.1 - _July 23, 2018_
|
||||
|
||||
* Dependencies updated
|
||||
|
||||
## v1.0.0 - _July 20, 2018_
|
||||
|
||||
* Fix bug in string enum assertion. We erroneously were checking against the enum keys, not values (#821)
|
||||
|
||||
## v0.2.14 - _July 18, 2018_
|
||||
|
||||
* Dependencies updated
|
||||
|
||||
## v0.2.13 - _July 9, 2018_
|
||||
|
||||
* Dependencies updated
|
||||
|
||||
## v0.2.12 - _June 19, 2018_
|
||||
|
||||
* Dependencies updated
|
||||
|
||||
## v0.2.11 - _June 1, 2018_
|
||||
|
||||
* Incorrect publish that was unpublished
|
||||
|
||||
## v0.2.10 - _May 22, 2018_
|
||||
|
||||
* Dependencies updated
|
||||
|
||||
## v0.2.9 - _May 5, 2018_
|
||||
|
||||
* Dependencies updated
|
||||
|
||||
## v0.2.8 - _May 4, 2018_
|
||||
|
||||
* Dependencies updated
|
||||
|
||||
## v0.2.7 - _April 18, 2018_
|
||||
|
||||
* Dependencies updated
|
||||
|
||||
## v0.2.6 - _April 11, 2018_
|
||||
|
||||
* Dependencies updated
|
||||
|
||||
## v0.2.5 - _April 2, 2018_
|
||||
|
||||
* Dependencies updated
|
||||
|
||||
## v0.2.4 - _April 2, 2018_
|
||||
|
||||
* Dependencies updated
|
||||
|
||||
## v0.2.0 - _March 7, 2018_
|
||||
|
||||
* Rename `isHttpUrl` to `isWebUri` (#412)
|
||||
|
||||
## v0.1.0 - _March 3, 2018_
|
||||
|
||||
* Remove isETHAddressHex checksum address check and assume address will be lowercased (#373)
|
||||
* Add an optional parameter `subSchemas` to `doesConformToSchema` method (#385)
|
||||
|
||||
## v0.0.18 - _February 8, 2017_
|
||||
|
||||
* Fix publishing issue where .npmignore was not properly excluding undesired content (#389)
|
||||
|
||||
## v0.0.4 - _November 13, 2017_
|
||||
|
||||
* Re-publish Assert previously published under NPM package @0xproject/0x-assert
|
||||
* Added assertion isValidBaseUnitAmount which checks both that the value is a valid bigNumber and that it does not contain decimals.
|
||||
77
packages/assert/README.md
Normal file
77
packages/assert/README.md
Normal file
@@ -0,0 +1,77 @@
|
||||
## @0xproject/assert
|
||||
|
||||
Standard type and schema assertions to be used across all 0x projects and packages
|
||||
|
||||
## Installation
|
||||
|
||||
```bash
|
||||
yarn add @0xproject/assert
|
||||
```
|
||||
|
||||
## Usage
|
||||
|
||||
```typescript
|
||||
import { assert } from '@0xproject/assert';
|
||||
|
||||
assert.isValidBaseUnitAmount('baseUnitAmount', baseUnitAmount);
|
||||
```
|
||||
|
||||
If your project is in [TypeScript](https://www.typescriptlang.org/), add the following to your `tsconfig.json`:
|
||||
|
||||
```json
|
||||
"compilerOptions": {
|
||||
"typeRoots": ["node_modules/@0xproject/typescript-typings/types", "node_modules/@types"],
|
||||
}
|
||||
```
|
||||
|
||||
## Contributing
|
||||
|
||||
We welcome improvements and fixes from the wider community! To report bugs within this package, please create an issue in this repository.
|
||||
|
||||
Please read our [contribution guidelines](../../CONTRIBUTING.md) before getting started.
|
||||
|
||||
### Install dependencies
|
||||
|
||||
If you don't have yarn workspaces enabled (Yarn < v1.0) - enable them:
|
||||
|
||||
```bash
|
||||
yarn config set workspaces-experimental true
|
||||
```
|
||||
|
||||
Then install dependencies
|
||||
|
||||
```bash
|
||||
yarn install
|
||||
```
|
||||
|
||||
### Build
|
||||
|
||||
To build this package and all other monorepo packages that it depends on, run the following from the monorepo root directory:
|
||||
|
||||
```bash
|
||||
PKG=@0xproject/assert yarn build
|
||||
```
|
||||
|
||||
Or continuously rebuild on change:
|
||||
|
||||
```bash
|
||||
PKG=@0xproject/assert yarn watch
|
||||
```
|
||||
|
||||
### Clean
|
||||
|
||||
```bash
|
||||
yarn clean
|
||||
```
|
||||
|
||||
### Lint
|
||||
|
||||
```bash
|
||||
yarn lint
|
||||
```
|
||||
|
||||
### Run Tests
|
||||
|
||||
```bash
|
||||
yarn test
|
||||
```
|
||||
0
packages/assert/coverage/.gitkeep
Normal file
0
packages/assert/coverage/.gitkeep
Normal file
56
packages/assert/package.json
Normal file
56
packages/assert/package.json
Normal file
@@ -0,0 +1,56 @@
|
||||
{
|
||||
"name": "@0xproject/assert",
|
||||
"version": "1.0.9",
|
||||
"engines": {
|
||||
"node": ">=6.12"
|
||||
},
|
||||
"description": "Provides a standard way of performing type and schema validation across 0x projects",
|
||||
"main": "lib/src/index.js",
|
||||
"types": "lib/src/index.d.ts",
|
||||
"scripts": {
|
||||
"build": "tsc -b",
|
||||
"clean": "shx rm -rf lib test_temp",
|
||||
"lint": "tslint --project .",
|
||||
"run_mocha": "mocha --require source-map-support/register --require make-promises-safe lib/test/**/*_test.js --exit",
|
||||
"test": "yarn run_mocha",
|
||||
"rebuild_and_test": "run-s clean build test",
|
||||
"test:coverage": "nyc npm run test --all && yarn coverage:report:lcov",
|
||||
"coverage:report:lcov": "nyc report --reporter=text-lcov > coverage/lcov.info",
|
||||
"test:circleci": "yarn test:coverage"
|
||||
},
|
||||
"license": "Apache-2.0",
|
||||
"repository": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/0xProject/0x-monorepo.git"
|
||||
},
|
||||
"bugs": {
|
||||
"url": "https://github.com/0xProject/0x-monorepo/issues"
|
||||
},
|
||||
"homepage": "https://github.com/0xProject/0x-monorepo/packages/assert/README.md",
|
||||
"devDependencies": {
|
||||
"@0xproject/tslint-config": "^1.0.7",
|
||||
"@types/lodash": "4.14.104",
|
||||
"@types/mocha": "^2.2.42",
|
||||
"@types/valid-url": "^1.0.2",
|
||||
"chai": "^4.0.1",
|
||||
"copyfiles": "^2.0.0",
|
||||
"dirty-chai": "^2.0.1",
|
||||
"make-promises-safe": "^1.1.0",
|
||||
"mocha": "^4.1.0",
|
||||
"npm-run-all": "^4.1.2",
|
||||
"nyc": "^11.0.1",
|
||||
"shx": "^0.2.2",
|
||||
"tslint": "5.11.0",
|
||||
"typescript": "3.0.1"
|
||||
},
|
||||
"dependencies": {
|
||||
"@0xproject/json-schemas": "^1.0.2",
|
||||
"@0xproject/typescript-typings": "^2.0.1",
|
||||
"@0xproject/utils": "^1.0.9",
|
||||
"lodash": "^4.17.5",
|
||||
"valid-url": "^1.0.9"
|
||||
},
|
||||
"publishConfig": {
|
||||
"access": "public"
|
||||
}
|
||||
}
|
||||
6
packages/assert/src/globals.d.ts
vendored
Normal file
6
packages/assert/src/globals.d.ts
vendored
Normal file
@@ -0,0 +1,6 @@
|
||||
declare module '*.json' {
|
||||
const json: any;
|
||||
/* tslint:disable */
|
||||
export default json;
|
||||
/* tslint:enable */
|
||||
}
|
||||
97
packages/assert/src/index.ts
Normal file
97
packages/assert/src/index.ts
Normal file
@@ -0,0 +1,97 @@
|
||||
import { Schema, SchemaValidator } from '@0xproject/json-schemas';
|
||||
import { addressUtils, BigNumber } from '@0xproject/utils';
|
||||
import * as _ from 'lodash';
|
||||
import * as validUrl from 'valid-url';
|
||||
|
||||
const HEX_REGEX = /^0x[0-9A-F]*$/i;
|
||||
|
||||
export const assert = {
|
||||
isBigNumber(variableName: string, value: BigNumber): void {
|
||||
const isBigNumber = _.isObject(value) && (value as any).isBigNumber;
|
||||
assert.assert(isBigNumber, assert.typeAssertionMessage(variableName, 'BigNumber', value));
|
||||
},
|
||||
isValidBaseUnitAmount(variableName: string, value: BigNumber): void {
|
||||
assert.isBigNumber(variableName, value);
|
||||
const isNegative = value.lessThan(0);
|
||||
assert.assert(!isNegative, `${variableName} cannot be a negative number, found value: ${value.toNumber()}`);
|
||||
const hasDecimals = value.decimalPlaces() !== 0;
|
||||
assert.assert(
|
||||
!hasDecimals,
|
||||
`${variableName} should be in baseUnits (no decimals), found value: ${value.toNumber()}`,
|
||||
);
|
||||
},
|
||||
isString(variableName: string, value: string): void {
|
||||
assert.assert(_.isString(value), assert.typeAssertionMessage(variableName, 'string', value));
|
||||
},
|
||||
isFunction(variableName: string, value: any): void {
|
||||
assert.assert(_.isFunction(value), assert.typeAssertionMessage(variableName, 'function', value));
|
||||
},
|
||||
isHexString(variableName: string, value: string): void {
|
||||
assert.assert(
|
||||
_.isString(value) && HEX_REGEX.test(value),
|
||||
assert.typeAssertionMessage(variableName, 'HexString', value),
|
||||
);
|
||||
},
|
||||
isETHAddressHex(variableName: string, value: string): void {
|
||||
assert.assert(_.isString(value), assert.typeAssertionMessage(variableName, 'string', value));
|
||||
assert.assert(addressUtils.isAddress(value), assert.typeAssertionMessage(variableName, 'ETHAddressHex', value));
|
||||
},
|
||||
doesBelongToStringEnum(
|
||||
variableName: string,
|
||||
value: string,
|
||||
stringEnum: any /* There is no base type for every string enum */,
|
||||
): void {
|
||||
const enumValues = _.values(stringEnum);
|
||||
const doesBelongToStringEnum = _.includes(enumValues, value);
|
||||
const enumValuesAsStrings = _.map(enumValues, enumValue => `'${enumValue}'`);
|
||||
const enumValuesAsString = enumValuesAsStrings.join(', ');
|
||||
assert.assert(
|
||||
doesBelongToStringEnum,
|
||||
`Expected ${variableName} to be one of: ${enumValuesAsString}, encountered: ${value}`,
|
||||
);
|
||||
},
|
||||
hasAtMostOneUniqueValue(value: any[], errMsg: string): void {
|
||||
assert.assert(_.uniq(value).length <= 1, errMsg);
|
||||
},
|
||||
isNumber(variableName: string, value: number): void {
|
||||
assert.assert(_.isFinite(value), assert.typeAssertionMessage(variableName, 'number', value));
|
||||
},
|
||||
isBoolean(variableName: string, value: boolean): void {
|
||||
assert.assert(_.isBoolean(value), assert.typeAssertionMessage(variableName, 'boolean', value));
|
||||
},
|
||||
isWeb3Provider(variableName: string, value: any): void {
|
||||
const isWeb3Provider = _.isFunction(value.send) || _.isFunction(value.sendAsync);
|
||||
assert.assert(isWeb3Provider, assert.typeAssertionMessage(variableName, 'Provider', value));
|
||||
},
|
||||
doesConformToSchema(variableName: string, value: any, schema: Schema, subSchemas?: Schema[]): void {
|
||||
if (_.isUndefined(value)) {
|
||||
throw new Error(`${variableName} can't be undefined`);
|
||||
}
|
||||
const schemaValidator = new SchemaValidator();
|
||||
if (!_.isUndefined(subSchemas)) {
|
||||
_.map(subSchemas, schemaValidator.addSchema.bind(schemaValidator));
|
||||
}
|
||||
const validationResult = schemaValidator.validate(value, schema);
|
||||
const hasValidationErrors = validationResult.errors.length > 0;
|
||||
const msg = `Expected ${variableName} to conform to schema ${schema.id}
|
||||
Encountered: ${JSON.stringify(value, null, '\t')}
|
||||
Validation errors: ${validationResult.errors.join(', ')}`;
|
||||
assert.assert(!hasValidationErrors, msg);
|
||||
},
|
||||
isWebUri(variableName: string, value: any): void {
|
||||
const isValidUrl = !_.isUndefined(validUrl.isWebUri(value));
|
||||
assert.assert(isValidUrl, assert.typeAssertionMessage(variableName, 'web uri', value));
|
||||
},
|
||||
isUri(variableName: string, value: any): void {
|
||||
const isValidUri = !_.isUndefined(validUrl.isUri(value));
|
||||
assert.assert(isValidUri, assert.typeAssertionMessage(variableName, 'uri', value));
|
||||
},
|
||||
assert(condition: boolean, message: string): void {
|
||||
if (!condition) {
|
||||
throw new Error(message);
|
||||
}
|
||||
},
|
||||
typeAssertionMessage(variableName: string, type: string, value: any): string {
|
||||
return `Expected ${variableName} to be of type ${type}, encountered: ${value}`;
|
||||
},
|
||||
};
|
||||
255
packages/assert/test/assert_test.ts
Normal file
255
packages/assert/test/assert_test.ts
Normal file
@@ -0,0 +1,255 @@
|
||||
import { schemas } from '@0xproject/json-schemas';
|
||||
import { BigNumber } from '@0xproject/utils';
|
||||
import * as chai from 'chai';
|
||||
import * as dirtyChai from 'dirty-chai';
|
||||
import 'mocha';
|
||||
|
||||
import { assert } from '../src/index';
|
||||
|
||||
chai.config.includeStack = true;
|
||||
chai.use(dirtyChai);
|
||||
const expect = chai.expect;
|
||||
|
||||
// tslint:disable:custom-no-magic-numbers
|
||||
describe('Assertions', () => {
|
||||
const variableName = 'variable';
|
||||
describe('#isBigNumber', () => {
|
||||
it('should not throw for valid input', () => {
|
||||
const validInputs = [new BigNumber(23), new BigNumber('45')];
|
||||
validInputs.forEach(input => expect(assert.isBigNumber.bind(assert, variableName, input)).to.not.throw());
|
||||
});
|
||||
it('should throw for invalid input', () => {
|
||||
const invalidInputs = ['test', 42, false, { random: 'test' }, undefined];
|
||||
invalidInputs.forEach(input => expect(assert.isBigNumber.bind(assert, variableName, input)).to.throw());
|
||||
});
|
||||
});
|
||||
describe('#isValidBaseUnitAmount', () => {
|
||||
it('should not throw for valid input', () => {
|
||||
const validInputs = [new BigNumber(23), new BigNumber('45000000')];
|
||||
validInputs.forEach(input =>
|
||||
expect(assert.isValidBaseUnitAmount.bind(assert, variableName, input)).to.not.throw(),
|
||||
);
|
||||
});
|
||||
it('should throw for invalid input', () => {
|
||||
const invalidInputs = [0, undefined, new BigNumber(3.145), 3.145, new BigNumber(-400)];
|
||||
invalidInputs.forEach(input =>
|
||||
expect(assert.isValidBaseUnitAmount.bind(assert, variableName, input)).to.throw(),
|
||||
);
|
||||
});
|
||||
});
|
||||
describe('#isString', () => {
|
||||
it('should not throw for valid input', () => {
|
||||
const validInputs = ['hello', 'goodbye'];
|
||||
validInputs.forEach(input => expect(assert.isString.bind(assert, variableName, input)).to.not.throw());
|
||||
});
|
||||
it('should throw for invalid input', () => {
|
||||
const invalidInputs = [42, false, { random: 'test' }, undefined, new BigNumber(45)];
|
||||
invalidInputs.forEach(input => expect(assert.isString.bind(assert, variableName, input)).to.throw());
|
||||
});
|
||||
});
|
||||
describe('#isFunction', () => {
|
||||
it('should not throw for valid input', () => {
|
||||
const validInputs = [BigNumber, assert.isString.bind(assert)];
|
||||
validInputs.forEach(input => expect(assert.isFunction.bind(assert, variableName, input)).to.not.throw());
|
||||
});
|
||||
it('should throw for invalid input', () => {
|
||||
const invalidInputs = [42, false, { random: 'test' }, undefined, new BigNumber(45)];
|
||||
invalidInputs.forEach(input => expect(assert.isFunction.bind(assert, variableName, input)).to.throw());
|
||||
});
|
||||
});
|
||||
describe('#isHexString', () => {
|
||||
it('should not throw for valid input', () => {
|
||||
const validInputs = [
|
||||
'0x61a3ed31B43c8780e905a260a35faefEc527be7516aa11c0256729b5b351bc33',
|
||||
'0x40349190569279751135161d22529dc25add4f6069af05be04cacbda2ace2254',
|
||||
];
|
||||
validInputs.forEach(input => expect(assert.isHexString.bind(assert, variableName, input)).to.not.throw());
|
||||
});
|
||||
it('should throw for invalid input', () => {
|
||||
const invalidInputs = [
|
||||
42,
|
||||
false,
|
||||
{ random: 'test' },
|
||||
undefined,
|
||||
new BigNumber(45),
|
||||
'0x61a3ed31B43c8780e905a260a35faYfEc527be7516aa11c0256729b5b351bc33',
|
||||
];
|
||||
invalidInputs.forEach(input => expect(assert.isHexString.bind(assert, variableName, input)).to.throw());
|
||||
});
|
||||
});
|
||||
describe('#isETHAddressHex', () => {
|
||||
it('should not throw for valid input', () => {
|
||||
const validInputs = [
|
||||
'0x0000000000000000000000000000000000000000',
|
||||
'0x6fffd0ae3f7d88c9b4925323f54c6e4b2918c5fd',
|
||||
'0x12459c951127e0c374ff9105dda097662a027093',
|
||||
];
|
||||
validInputs.forEach(input =>
|
||||
expect(assert.isETHAddressHex.bind(assert, variableName, input)).to.not.throw(),
|
||||
);
|
||||
});
|
||||
it('should throw for invalid input', () => {
|
||||
const invalidInputs = [
|
||||
42,
|
||||
false,
|
||||
{ random: 'test' },
|
||||
undefined,
|
||||
new BigNumber(45),
|
||||
'0x6FFFd0ae3f7d88c9b4925323f54c6e4b2918c5fd',
|
||||
'0x6FFFd0ae3f7d88c9b4925323f54c6e4',
|
||||
];
|
||||
invalidInputs.forEach(input => expect(assert.isETHAddressHex.bind(assert, variableName, input)).to.throw());
|
||||
});
|
||||
});
|
||||
describe('#doesBelongToStringEnum', () => {
|
||||
enum TestEnums {
|
||||
Test1 = 'Test1',
|
||||
Test2 = 'Test2',
|
||||
}
|
||||
it('should not throw for valid input', () => {
|
||||
const validInputs = [TestEnums.Test1, TestEnums.Test2];
|
||||
validInputs.forEach(input =>
|
||||
expect(assert.doesBelongToStringEnum.bind(assert, variableName, input, TestEnums)).to.not.throw(),
|
||||
);
|
||||
});
|
||||
it('should throw for invalid input', () => {
|
||||
const invalidInputs = [42, false, { random: 'test' }, undefined, new BigNumber(45)];
|
||||
invalidInputs.forEach(input =>
|
||||
expect(assert.doesBelongToStringEnum.bind(assert, variableName, input, TestEnums)).to.throw(),
|
||||
);
|
||||
});
|
||||
});
|
||||
describe('#hasAtMostOneUniqueValue', () => {
|
||||
const errorMsg = 'more than one unique value';
|
||||
it('should not throw for valid input', () => {
|
||||
const validInputs = [['hello'], ['goodbye', 'goodbye', 'goodbye']];
|
||||
validInputs.forEach(input =>
|
||||
expect(assert.hasAtMostOneUniqueValue.bind(assert, input, errorMsg)).to.not.throw(),
|
||||
);
|
||||
});
|
||||
it('should throw for invalid input', () => {
|
||||
const invalidInputs = [['hello', 'goodbye'], ['goodbye', 42, false, false]];
|
||||
invalidInputs.forEach(input =>
|
||||
expect(assert.hasAtMostOneUniqueValue.bind(assert, input, errorMsg)).to.throw(),
|
||||
);
|
||||
});
|
||||
});
|
||||
describe('#isNumber', () => {
|
||||
it('should not throw for valid input', () => {
|
||||
const validInputs = [42, 0, 21e42];
|
||||
validInputs.forEach(input => expect(assert.isNumber.bind(assert, variableName, input)).to.not.throw());
|
||||
});
|
||||
it('should throw for invalid input', () => {
|
||||
const invalidInputs = [false, { random: 'test' }, undefined, new BigNumber(45)];
|
||||
invalidInputs.forEach(input => expect(assert.isNumber.bind(assert, variableName, input)).to.throw());
|
||||
});
|
||||
});
|
||||
describe('#isBoolean', () => {
|
||||
it('should not throw for valid input', () => {
|
||||
const validInputs = [true, false];
|
||||
validInputs.forEach(input => expect(assert.isBoolean.bind(assert, variableName, input)).to.not.throw());
|
||||
});
|
||||
it('should throw for invalid input', () => {
|
||||
const invalidInputs = [42, { random: 'test' }, undefined, new BigNumber(45)];
|
||||
invalidInputs.forEach(input => expect(assert.isBoolean.bind(assert, variableName, input)).to.throw());
|
||||
});
|
||||
});
|
||||
describe('#isWeb3Provider', () => {
|
||||
it('should not throw for valid input', () => {
|
||||
const validInputs = [{ send: () => 45 }, { sendAsync: () => 45 }];
|
||||
validInputs.forEach(input =>
|
||||
expect(assert.isWeb3Provider.bind(assert, variableName, input)).to.not.throw(),
|
||||
);
|
||||
});
|
||||
it('should throw for invalid input', () => {
|
||||
const invalidInputs = [42, { random: 'test' }, undefined, new BigNumber(45)];
|
||||
invalidInputs.forEach(input => expect(assert.isWeb3Provider.bind(assert, variableName, input)).to.throw());
|
||||
});
|
||||
});
|
||||
describe('#doesConformToSchema', () => {
|
||||
const schema = schemas.addressSchema;
|
||||
it('should not throw for valid input', () => {
|
||||
const validInputs = [
|
||||
'0x6fffd0ae3f7d88c9b4925323f54c6e4b2918c5fd',
|
||||
'0x12459c951127e0c374ff9105dda097662a027093',
|
||||
];
|
||||
validInputs.forEach(input =>
|
||||
expect(assert.doesConformToSchema.bind(assert, variableName, input, schema)).to.not.throw(),
|
||||
);
|
||||
});
|
||||
it('should throw for invalid input', () => {
|
||||
const invalidInputs = [42, { random: 'test' }, undefined, new BigNumber(45)];
|
||||
invalidInputs.forEach(input =>
|
||||
expect(assert.doesConformToSchema.bind(assert, variableName, input, schema)).to.throw(),
|
||||
);
|
||||
});
|
||||
});
|
||||
describe('#isWebUri', () => {
|
||||
it('should not throw for valid input', () => {
|
||||
const validInputs = [
|
||||
'http://www.google.com',
|
||||
'https://api.example-relayer.net',
|
||||
'https://api.radarrelay.com/0x/v0/',
|
||||
'https://zeroex.beta.radarrelay.com:8000/0x/v0/',
|
||||
];
|
||||
validInputs.forEach(input => expect(assert.isWebUri.bind(assert, variableName, input)).to.not.throw());
|
||||
});
|
||||
it('should throw for invalid input', () => {
|
||||
const invalidInputs = [
|
||||
42,
|
||||
{ random: 'test' },
|
||||
undefined,
|
||||
new BigNumber(45),
|
||||
'ws://www.api.example-relayer.net',
|
||||
'www.google.com',
|
||||
'api.example-relayer.net',
|
||||
'user:password@api.example-relayer.net',
|
||||
'//api.example-relayer.net',
|
||||
];
|
||||
invalidInputs.forEach(input => expect(assert.isWebUri.bind(assert, variableName, input)).to.throw());
|
||||
});
|
||||
});
|
||||
describe('#isUri', () => {
|
||||
it('should not throw for valid input', () => {
|
||||
const validInputs = [
|
||||
'http://www.google.com',
|
||||
'https://api.example-relayer.net',
|
||||
'https://api.radarrelay.com/0x/v0/',
|
||||
'https://zeroex.beta.radarrelay.com:8000/0x/v0/',
|
||||
'ws://www.api.example-relayer.net',
|
||||
'wss://www.api.example-relayer.net',
|
||||
'user:password@api.example-relayer.net',
|
||||
];
|
||||
validInputs.forEach(input => expect(assert.isUri.bind(assert, variableName, input)).to.not.throw());
|
||||
});
|
||||
it('should throw for invalid input', () => {
|
||||
const invalidInputs = [
|
||||
42,
|
||||
{ random: 'test' },
|
||||
undefined,
|
||||
new BigNumber(45),
|
||||
'www.google.com',
|
||||
'api.example-relayer.net',
|
||||
'//api.example-relayer.net',
|
||||
];
|
||||
invalidInputs.forEach(input => expect(assert.isUri.bind(assert, variableName, input)).to.throw());
|
||||
});
|
||||
});
|
||||
describe('#assert', () => {
|
||||
const assertMessage = 'assert not satisfied';
|
||||
it('should not throw for valid input', () => {
|
||||
expect(assert.assert.bind(assert, true, assertMessage)).to.not.throw();
|
||||
});
|
||||
it('should throw for invalid input', () => {
|
||||
expect(assert.assert.bind(assert, false, assertMessage)).to.throw();
|
||||
});
|
||||
});
|
||||
describe('#typeAssertionMessage', () => {
|
||||
it('should render correct message', () => {
|
||||
expect(assert.typeAssertionMessage('variable', 'string', 'number')).to.equal(
|
||||
`Expected variable to be of type string, encountered: number`,
|
||||
);
|
||||
});
|
||||
});
|
||||
});
|
||||
// tslint:enable:custom-no-magic-numbers
|
||||
8
packages/assert/tsconfig.json
Normal file
8
packages/assert/tsconfig.json
Normal file
@@ -0,0 +1,8 @@
|
||||
{
|
||||
"extends": "../../tsconfig",
|
||||
"compilerOptions": {
|
||||
"outDir": "lib",
|
||||
"rootDir": "."
|
||||
},
|
||||
"include": ["./src/**/*", "./test/**/*"]
|
||||
}
|
||||
3
packages/assert/tslint.json
Normal file
3
packages/assert/tslint.json
Normal file
@@ -0,0 +1,3 @@
|
||||
{
|
||||
"extends": ["@0xproject/tslint-config"]
|
||||
}
|
||||
6
packages/base-contract/.npmignore
Normal file
6
packages/base-contract/.npmignore
Normal file
@@ -0,0 +1,6 @@
|
||||
.*
|
||||
yarn-error.log
|
||||
/scripts/
|
||||
/src/
|
||||
tsconfig.json
|
||||
/lib/monorepo_scripts/
|
||||
213
packages/base-contract/CHANGELOG.json
Normal file
213
packages/base-contract/CHANGELOG.json
Normal file
@@ -0,0 +1,213 @@
|
||||
[
|
||||
{
|
||||
"timestamp": 1537541580,
|
||||
"version": "2.0.3",
|
||||
"changes": [
|
||||
{
|
||||
"note": "Dependencies updated"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"timestamp": 1536142250,
|
||||
"version": "2.0.2",
|
||||
"changes": [
|
||||
{
|
||||
"note": "Dependencies updated"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"timestamp": 1535377027,
|
||||
"version": "2.0.1",
|
||||
"changes": [
|
||||
{
|
||||
"note": "Dependencies updated"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"timestamp": 1535133899,
|
||||
"version": "2.0.0",
|
||||
"changes": [
|
||||
{
|
||||
"note": "Dependencies updated"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"version": "2.0.0-rc.1",
|
||||
"changes": [
|
||||
{
|
||||
"pr": 915,
|
||||
"note": "Added strict encoding/decoding checks for sendTransaction and call"
|
||||
}
|
||||
],
|
||||
"timestamp": 1534210131
|
||||
},
|
||||
{
|
||||
"timestamp": 1532619515,
|
||||
"version": "1.0.4",
|
||||
"changes": [
|
||||
{
|
||||
"note": "Dependencies updated"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"timestamp": 1532614997,
|
||||
"version": "1.0.3",
|
||||
"changes": [
|
||||
{
|
||||
"note": "Dependencies updated"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"timestamp": 1532605697,
|
||||
"version": "1.0.2",
|
||||
"changes": [
|
||||
{
|
||||
"note": "Dependencies updated"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"timestamp": 1532357734,
|
||||
"version": "1.0.1",
|
||||
"changes": [
|
||||
{
|
||||
"note": "Dependencies updated"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"timestamp": 1532043000,
|
||||
"version": "1.0.0",
|
||||
"changes": [
|
||||
{
|
||||
"note": "Dependencies updated"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"timestamp": 1531919263,
|
||||
"version": "0.3.6",
|
||||
"changes": [
|
||||
{
|
||||
"note": "Dependencies updated"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"timestamp": 1531149657,
|
||||
"version": "0.3.5",
|
||||
"changes": [
|
||||
{
|
||||
"note": "Dependencies updated"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"version": "0.3.4",
|
||||
"changes": [
|
||||
{
|
||||
"note":
|
||||
"Update EthersJs to fix the `value.toLowerCase()` is not a function bug caused by `ethers.js` breaking patch version https://github.com/ethers-io/ethers.js/issues/201"
|
||||
}
|
||||
],
|
||||
"timestamp": 1529397769
|
||||
},
|
||||
{
|
||||
"timestamp": 1527810075,
|
||||
"version": "0.3.3",
|
||||
"changes": [
|
||||
{
|
||||
"note": "Incorrect publish that was unpublished"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"timestamp": 1527008270,
|
||||
"version": "0.3.2",
|
||||
"changes": [
|
||||
{
|
||||
"note": "Dependencies updated"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"timestamp": 1525477860,
|
||||
"version": "0.3.1",
|
||||
"changes": [
|
||||
{
|
||||
"note": "Dependencies updated"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"version": "0.3.0",
|
||||
"changes": [
|
||||
{
|
||||
"note": "Update ethers-contracts to ethers.js",
|
||||
"pr": 540
|
||||
}
|
||||
],
|
||||
"timestamp": 1525428773
|
||||
},
|
||||
{
|
||||
"timestamp": 1524044013,
|
||||
"version": "0.2.1",
|
||||
"changes": [
|
||||
{
|
||||
"note": "Dependencies updated"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"version": "0.2.0",
|
||||
"changes": [
|
||||
{
|
||||
"note": "Contract wrappers now accept Provider and defaults instead of Web3Wrapper",
|
||||
"pr": 501
|
||||
}
|
||||
],
|
||||
"timestamp": 1523462196
|
||||
},
|
||||
{
|
||||
"version": "0.1.0",
|
||||
"changes": [
|
||||
{
|
||||
"note": "Add tests for traversing ABI tree",
|
||||
"pr": 485
|
||||
},
|
||||
{
|
||||
"note": "Fix ABI tuples traversing",
|
||||
"pr": 485
|
||||
},
|
||||
{
|
||||
"note": "Fix ABI arrays traversing",
|
||||
"pr": 485
|
||||
}
|
||||
],
|
||||
"timestamp": 1522673609
|
||||
},
|
||||
{
|
||||
"timestamp": 1522658513,
|
||||
"version": "0.0.6",
|
||||
"changes": [
|
||||
{
|
||||
"note": "Dependencies updated"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"version": "0.0.2",
|
||||
"changes": [
|
||||
{
|
||||
"note": "Initial release"
|
||||
}
|
||||
],
|
||||
"timestamp": 1520089200
|
||||
}
|
||||
]
|
||||
96
packages/base-contract/CHANGELOG.md
Normal file
96
packages/base-contract/CHANGELOG.md
Normal file
@@ -0,0 +1,96 @@
|
||||
<!--
|
||||
changelogUtils.file is auto-generated using the monorepo-scripts package. Don't edit directly.
|
||||
Edit the package's CHANGELOG.json file only.
|
||||
-->
|
||||
|
||||
CHANGELOG
|
||||
|
||||
## v2.0.3 - _September 21, 2018_
|
||||
|
||||
* Dependencies updated
|
||||
|
||||
## v2.0.2 - _September 5, 2018_
|
||||
|
||||
* Dependencies updated
|
||||
|
||||
## v2.0.1 - _August 27, 2018_
|
||||
|
||||
* Dependencies updated
|
||||
|
||||
## v2.0.0 - _August 24, 2018_
|
||||
|
||||
* Dependencies updated
|
||||
|
||||
## v2.0.0-rc.1 - _August 14, 2018_
|
||||
|
||||
* Added strict encoding/decoding checks for sendTransaction and call (#915)
|
||||
|
||||
## v1.0.4 - _July 26, 2018_
|
||||
|
||||
* Dependencies updated
|
||||
|
||||
## v1.0.3 - _July 26, 2018_
|
||||
|
||||
* Dependencies updated
|
||||
|
||||
## v1.0.2 - _July 26, 2018_
|
||||
|
||||
* Dependencies updated
|
||||
|
||||
## v1.0.1 - _July 23, 2018_
|
||||
|
||||
* Dependencies updated
|
||||
|
||||
## v1.0.0 - _July 20, 2018_
|
||||
|
||||
* Dependencies updated
|
||||
|
||||
## v0.3.6 - _July 18, 2018_
|
||||
|
||||
* Dependencies updated
|
||||
|
||||
## v0.3.5 - _July 9, 2018_
|
||||
|
||||
* Dependencies updated
|
||||
|
||||
## v0.3.4 - _June 19, 2018_
|
||||
|
||||
* Update EthersJs to fix the `value.toLowerCase()` is not a function bug caused by `ethers.js` breaking patch version https://github.com/ethers-io/ethers.js/issues/201
|
||||
|
||||
## v0.3.3 - _June 1, 2018_
|
||||
|
||||
* Incorrect publish that was unpublished
|
||||
|
||||
## v0.3.2 - _May 22, 2018_
|
||||
|
||||
* Dependencies updated
|
||||
|
||||
## v0.3.1 - _May 5, 2018_
|
||||
|
||||
* Dependencies updated
|
||||
|
||||
## v0.3.0 - _May 4, 2018_
|
||||
|
||||
* Update ethers-contracts to ethers.js (#540)
|
||||
|
||||
## v0.2.1 - _April 18, 2018_
|
||||
|
||||
* Dependencies updated
|
||||
|
||||
## v0.2.0 - _April 11, 2018_
|
||||
|
||||
* Contract wrappers now accept Provider and defaults instead of Web3Wrapper (#501)
|
||||
|
||||
## v0.1.0 - _April 2, 2018_
|
||||
|
||||
* Add tests for traversing ABI tree (#485)
|
||||
* Fix ABI tuples traversing (#485)
|
||||
* Fix ABI arrays traversing (#485)
|
||||
|
||||
## v0.0.6 - _April 2, 2018_
|
||||
|
||||
* Dependencies updated
|
||||
|
||||
## v0.0.2 - _March 3, 2018_
|
||||
|
||||
* Initial release
|
||||
63
packages/base-contract/README.md
Normal file
63
packages/base-contract/README.md
Normal file
@@ -0,0 +1,63 @@
|
||||
## @0xproject/base-contract
|
||||
|
||||
BaseContract to derive all auto-generated wrappers from
|
||||
|
||||
## Installation
|
||||
|
||||
```bash
|
||||
yarn add @0xproject/base-contract
|
||||
```
|
||||
|
||||
If your project is in [TypeScript](https://www.typescriptlang.org/), add the following to your `tsconfig.json`:
|
||||
|
||||
```json
|
||||
"compilerOptions": {
|
||||
"typeRoots": ["node_modules/@0xproject/typescript-typings/types", "node_modules/@types"],
|
||||
}
|
||||
```
|
||||
|
||||
## Usage
|
||||
|
||||
```javascript
|
||||
import { BaseContract } from '@0xproject/base-contract';
|
||||
```
|
||||
|
||||
## Contributing
|
||||
|
||||
We strongly recommend that the community help us make improvements and determine the future direction of the protocol. To report bugs within this package, please create an issue in this repository.
|
||||
|
||||
Please read our [contribution guidelines](../../CONTRIBUTING.md) before getting started.
|
||||
|
||||
### Install Dependencies
|
||||
|
||||
If you don't have yarn workspaces enabled (Yarn < v1.0) - enable them:
|
||||
|
||||
```bash
|
||||
yarn config set workspaces-experimental true
|
||||
```
|
||||
|
||||
Then install dependencies
|
||||
|
||||
```bash
|
||||
yarn install
|
||||
```
|
||||
|
||||
### Build
|
||||
|
||||
To build this package and all other monorepo packages that it depends on, run the following from the monorepo root directory:
|
||||
|
||||
```bash
|
||||
PKG=@0xproject/base-contract yarn build
|
||||
```
|
||||
|
||||
Or continuously rebuild on change:
|
||||
|
||||
```bash
|
||||
PKG=@0xproject/base-contract yarn watch
|
||||
```
|
||||
|
||||
### Lint
|
||||
|
||||
```bash
|
||||
yarn lint
|
||||
```
|
||||
0
packages/base-contract/coverage/.gitkeep
Normal file
0
packages/base-contract/coverage/.gitkeep
Normal file
53
packages/base-contract/package.json
Normal file
53
packages/base-contract/package.json
Normal file
@@ -0,0 +1,53 @@
|
||||
{
|
||||
"name": "@0xproject/base-contract",
|
||||
"version": "2.0.3",
|
||||
"engines": {
|
||||
"node": ">=6.12"
|
||||
},
|
||||
"description": "0x Base TS contract",
|
||||
"main": "lib/src/index.js",
|
||||
"types": "lib/src/index.d.ts",
|
||||
"scripts": {
|
||||
"build": "tsc -b",
|
||||
"clean": "shx rm -rf lib",
|
||||
"test": "yarn run_mocha",
|
||||
"rebuild_and_test": "run-s clean build test",
|
||||
"test:circleci": "yarn test:coverage",
|
||||
"run_mocha": "mocha --require source-map-support/register --require make-promises-safe lib/test/**/*_test.js --bail --exit",
|
||||
"test:coverage": "nyc npm run test --all && yarn coverage:report:lcov",
|
||||
"coverage:report:lcov": "nyc report --reporter=text-lcov > coverage/lcov.info",
|
||||
"lint": "tslint --project . --exclude **/src/contract_wrappers/**/*"
|
||||
},
|
||||
"license": "Apache-2.0",
|
||||
"repository": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/0xProject/0x-monorepo.git"
|
||||
},
|
||||
"bugs": {
|
||||
"url": "https://github.com/0xProject/0x-monorepo/issues"
|
||||
},
|
||||
"homepage": "https://github.com/0xProject/0x-monorepo/packages/base-contract/README.md",
|
||||
"devDependencies": {
|
||||
"@0xproject/tslint-config": "^1.0.7",
|
||||
"@types/lodash": "4.14.104",
|
||||
"chai": "^4.0.1",
|
||||
"copyfiles": "^2.0.0",
|
||||
"make-promises-safe": "^1.1.0",
|
||||
"mocha": "^4.1.0",
|
||||
"npm-run-all": "^4.1.2",
|
||||
"shx": "^0.2.2",
|
||||
"tslint": "5.11.0",
|
||||
"typescript": "3.0.1"
|
||||
},
|
||||
"dependencies": {
|
||||
"@0xproject/typescript-typings": "^2.0.1",
|
||||
"@0xproject/utils": "^1.0.9",
|
||||
"@0xproject/web3-wrapper": "^2.0.3",
|
||||
"ethereum-types": "^1.0.7",
|
||||
"ethers": "3.0.22",
|
||||
"lodash": "^4.17.5"
|
||||
},
|
||||
"publishConfig": {
|
||||
"access": "public"
|
||||
}
|
||||
}
|
||||
6
packages/base-contract/src/globals.d.ts
vendored
Normal file
6
packages/base-contract/src/globals.d.ts
vendored
Normal file
@@ -0,0 +1,6 @@
|
||||
declare module '*.json' {
|
||||
const json: any;
|
||||
/* tslint:disable */
|
||||
export default json;
|
||||
/* tslint:enable */
|
||||
}
|
||||
146
packages/base-contract/src/index.ts
Normal file
146
packages/base-contract/src/index.ts
Normal file
@@ -0,0 +1,146 @@
|
||||
import { abiUtils, BigNumber } from '@0xproject/utils';
|
||||
import { Web3Wrapper } from '@0xproject/web3-wrapper';
|
||||
import {
|
||||
AbiDefinition,
|
||||
AbiType,
|
||||
ConstructorAbi,
|
||||
ContractAbi,
|
||||
DataItem,
|
||||
MethodAbi,
|
||||
Provider,
|
||||
TxData,
|
||||
TxDataPayable,
|
||||
} from 'ethereum-types';
|
||||
import * as ethers from 'ethers';
|
||||
import * as _ from 'lodash';
|
||||
|
||||
import { formatABIDataItem } from './utils';
|
||||
|
||||
export interface EthersInterfaceByFunctionSignature {
|
||||
[key: string]: ethers.Interface;
|
||||
}
|
||||
|
||||
export class BaseContract {
|
||||
protected _ethersInterfacesByFunctionSignature: EthersInterfaceByFunctionSignature;
|
||||
protected _web3Wrapper: Web3Wrapper;
|
||||
public abi: ContractAbi;
|
||||
public address: string;
|
||||
public contractName: string;
|
||||
public constructorArgs: any[] = [];
|
||||
protected static _formatABIDataItemList(
|
||||
abis: DataItem[],
|
||||
values: any[],
|
||||
formatter: (type: string, value: any) => any,
|
||||
): any {
|
||||
return _.map(values, (value: any, i: number) => formatABIDataItem(abis[i], value, formatter));
|
||||
}
|
||||
protected static _lowercaseAddress(type: string, value: string): string {
|
||||
return type === 'address' ? value.toLowerCase() : value;
|
||||
}
|
||||
protected static _bigNumberToString(_type: string, value: any): any {
|
||||
return _.isObject(value) && value.isBigNumber ? value.toString() : value;
|
||||
}
|
||||
protected static _lookupConstructorAbi(abi: ContractAbi): ConstructorAbi {
|
||||
const constructorAbiIfExists = _.find(
|
||||
abi,
|
||||
(abiDefinition: AbiDefinition) => abiDefinition.type === AbiType.Constructor,
|
||||
// tslint:disable-next-line:no-unnecessary-type-assertion
|
||||
) as ConstructorAbi | undefined;
|
||||
if (!_.isUndefined(constructorAbiIfExists)) {
|
||||
return constructorAbiIfExists;
|
||||
} else {
|
||||
// If the constructor is not explicitly defined, it won't be included in the ABI. It is
|
||||
// still callable however, so we construct what the ABI would look like were it to exist.
|
||||
const defaultConstructorAbi: ConstructorAbi = {
|
||||
type: AbiType.Constructor,
|
||||
stateMutability: 'nonpayable',
|
||||
payable: false,
|
||||
inputs: [],
|
||||
};
|
||||
return defaultConstructorAbi;
|
||||
}
|
||||
}
|
||||
protected static _bnToBigNumber(_type: string, value: any): any {
|
||||
return _.isObject(value) && value._bn ? new BigNumber(value.toString()) : value;
|
||||
}
|
||||
protected static async _applyDefaultsToTxDataAsync<T extends Partial<TxData | TxDataPayable>>(
|
||||
txData: T,
|
||||
txDefaults: Partial<TxData>,
|
||||
estimateGasAsync?: (txData: T) => Promise<number>,
|
||||
): Promise<TxData> {
|
||||
// Gas amount sourced with the following priorities:
|
||||
// 1. Optional param passed in to public method call
|
||||
// 2. Global config passed in at library instantiation
|
||||
// 3. Gas estimate calculation + safety margin
|
||||
const removeUndefinedProperties = _.pickBy.bind(_);
|
||||
const txDataWithDefaults = {
|
||||
...removeUndefinedProperties(txDefaults),
|
||||
...removeUndefinedProperties(txData),
|
||||
};
|
||||
if (_.isUndefined(txDataWithDefaults.gas) && !_.isUndefined(estimateGasAsync)) {
|
||||
txDataWithDefaults.gas = await estimateGasAsync(txDataWithDefaults);
|
||||
}
|
||||
return txDataWithDefaults;
|
||||
}
|
||||
// Throws if the given arguments cannot be safely/correctly encoded based on
|
||||
// the given inputAbi. An argument may not be considered safely encodeable
|
||||
// if it overflows the corresponding Solidity type, there is a bug in the
|
||||
// encoder, or the encoder performs unsafe type coercion.
|
||||
public static strictArgumentEncodingCheck(inputAbi: DataItem[], args: any[]): void {
|
||||
const coder = ethers.utils.AbiCoder.defaultCoder;
|
||||
const params = abiUtils.parseEthersParams(inputAbi);
|
||||
const rawEncoded = coder.encode(params.names, params.types, args);
|
||||
const rawDecoded = coder.decode(params.names, params.types, rawEncoded);
|
||||
for (let i = 0; i < rawDecoded.length; i++) {
|
||||
const original = args[i];
|
||||
const decoded = rawDecoded[i];
|
||||
if (!abiUtils.isAbiDataEqual(params.names[i], params.types[i], original, decoded)) {
|
||||
throw new Error(
|
||||
`Cannot safely encode argument: ${params.names[i]} (${original}) of type ${
|
||||
params.types[i]
|
||||
}. (Possible type overflow or other encoding error)`,
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
||||
protected _lookupEthersInterface(functionSignature: string): ethers.Interface {
|
||||
const ethersInterface = this._ethersInterfacesByFunctionSignature[functionSignature];
|
||||
if (_.isUndefined(ethersInterface)) {
|
||||
throw new Error(`Failed to lookup method with function signature '${functionSignature}'`);
|
||||
}
|
||||
return ethersInterface;
|
||||
}
|
||||
protected _lookupAbi(functionSignature: string): MethodAbi {
|
||||
const methodAbi = _.find(this.abi, (abiDefinition: AbiDefinition) => {
|
||||
if (abiDefinition.type !== AbiType.Function) {
|
||||
return false;
|
||||
}
|
||||
const abiFunctionSignature = abiUtils.getFunctionSignature(abiDefinition);
|
||||
if (abiFunctionSignature === functionSignature) {
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}) as MethodAbi;
|
||||
return methodAbi;
|
||||
}
|
||||
constructor(
|
||||
contractName: string,
|
||||
abi: ContractAbi,
|
||||
address: string,
|
||||
provider: Provider,
|
||||
txDefaults?: Partial<TxData>,
|
||||
) {
|
||||
this.contractName = contractName;
|
||||
this._web3Wrapper = new Web3Wrapper(provider, txDefaults);
|
||||
this.abi = abi;
|
||||
this.address = address;
|
||||
const methodAbis = this.abi.filter(
|
||||
(abiDefinition: AbiDefinition) => abiDefinition.type === AbiType.Function,
|
||||
) as MethodAbi[];
|
||||
this._ethersInterfacesByFunctionSignature = {};
|
||||
_.each(methodAbis, methodAbi => {
|
||||
const functionSignature = abiUtils.getFunctionSignature(methodAbi);
|
||||
this._ethersInterfacesByFunctionSignature[functionSignature] = new ethers.Interface([methodAbi]);
|
||||
});
|
||||
}
|
||||
}
|
||||
25
packages/base-contract/src/utils.ts
Normal file
25
packages/base-contract/src/utils.ts
Normal file
@@ -0,0 +1,25 @@
|
||||
import { DataItem } from 'ethereum-types';
|
||||
import * as _ from 'lodash';
|
||||
|
||||
// tslint:disable-next-line:completed-docs
|
||||
export function formatABIDataItem(abi: DataItem, value: any, formatter: (type: string, value: any) => any): any {
|
||||
const trailingArrayRegex = /\[\d*\]$/;
|
||||
if (abi.type.match(trailingArrayRegex)) {
|
||||
const arrayItemType = abi.type.replace(trailingArrayRegex, '');
|
||||
return _.map(value, val => {
|
||||
const arrayItemAbi = {
|
||||
...abi,
|
||||
type: arrayItemType,
|
||||
};
|
||||
return formatABIDataItem(arrayItemAbi, val, formatter);
|
||||
});
|
||||
} else if (abi.type === 'tuple') {
|
||||
const formattedTuple: { [componentName: string]: DataItem } = {};
|
||||
_.forEach(abi.components, componentABI => {
|
||||
formattedTuple[componentABI.name] = formatABIDataItem(componentABI, value[componentABI.name], formatter);
|
||||
});
|
||||
return formattedTuple;
|
||||
} else {
|
||||
return formatter(abi.type, value);
|
||||
}
|
||||
}
|
||||
114
packages/base-contract/test/base_contract_test.ts
Normal file
114
packages/base-contract/test/base_contract_test.ts
Normal file
@@ -0,0 +1,114 @@
|
||||
import * as chai from 'chai';
|
||||
import 'mocha';
|
||||
|
||||
import { BaseContract } from '../src';
|
||||
|
||||
const { expect } = chai;
|
||||
|
||||
describe('BaseContract', () => {
|
||||
describe('strictArgumentEncodingCheck', () => {
|
||||
it('works for simple types', () => {
|
||||
BaseContract.strictArgumentEncodingCheck(
|
||||
[{ name: 'to', type: 'address' }],
|
||||
['0xe834ec434daba538cd1b9fe1582052b880bd7e63'],
|
||||
);
|
||||
});
|
||||
it('works for array types', () => {
|
||||
const inputAbi = [
|
||||
{
|
||||
name: 'takerAssetFillAmounts',
|
||||
type: 'uint256[]',
|
||||
},
|
||||
];
|
||||
const args = [
|
||||
['9000000000000000000', '79000000000000000000', '979000000000000000000', '7979000000000000000000'],
|
||||
];
|
||||
BaseContract.strictArgumentEncodingCheck(inputAbi, args);
|
||||
});
|
||||
it('works for tuple/struct types', () => {
|
||||
const inputAbi = [
|
||||
{
|
||||
components: [
|
||||
{
|
||||
name: 'makerAddress',
|
||||
type: 'address',
|
||||
},
|
||||
{
|
||||
name: 'takerAddress',
|
||||
type: 'address',
|
||||
},
|
||||
{
|
||||
name: 'feeRecipientAddress',
|
||||
type: 'address',
|
||||
},
|
||||
{
|
||||
name: 'senderAddress',
|
||||
type: 'address',
|
||||
},
|
||||
{
|
||||
name: 'makerAssetAmount',
|
||||
type: 'uint256',
|
||||
},
|
||||
{
|
||||
name: 'takerAssetAmount',
|
||||
type: 'uint256',
|
||||
},
|
||||
{
|
||||
name: 'makerFee',
|
||||
type: 'uint256',
|
||||
},
|
||||
{
|
||||
name: 'takerFee',
|
||||
type: 'uint256',
|
||||
},
|
||||
{
|
||||
name: 'expirationTimeSeconds',
|
||||
type: 'uint256',
|
||||
},
|
||||
{
|
||||
name: 'salt',
|
||||
type: 'uint256',
|
||||
},
|
||||
{
|
||||
name: 'makerAssetData',
|
||||
type: 'bytes',
|
||||
},
|
||||
{
|
||||
name: 'takerAssetData',
|
||||
type: 'bytes',
|
||||
},
|
||||
],
|
||||
name: 'order',
|
||||
type: 'tuple',
|
||||
},
|
||||
];
|
||||
const args = [
|
||||
{
|
||||
makerAddress: '0x6ecbe1db9ef729cbe972c83fb886247691fb6beb',
|
||||
takerAddress: '0x0000000000000000000000000000000000000000',
|
||||
feeRecipientAddress: '0xe834ec434daba538cd1b9fe1582052b880bd7e63',
|
||||
senderAddress: '0x0000000000000000000000000000000000000000',
|
||||
makerAssetAmount: '0',
|
||||
takerAssetAmount: '200000000000000000000',
|
||||
makerFee: '1000000000000000000',
|
||||
takerFee: '1000000000000000000',
|
||||
expirationTimeSeconds: '1532563026',
|
||||
salt: '59342956082154660870994022243365949771115859664887449740907298019908621891376',
|
||||
makerAssetData: '0xf47261b00000000000000000000000001dc4c1cefef38a777b15aa20260a54e584b16c48',
|
||||
takerAssetData: '0xf47261b00000000000000000000000001d7022f5b17d2f8b695918fb48fa1089c9f85401',
|
||||
},
|
||||
];
|
||||
BaseContract.strictArgumentEncodingCheck(inputAbi, args);
|
||||
});
|
||||
it('throws for integer overflows', () => {
|
||||
expect(() =>
|
||||
BaseContract.strictArgumentEncodingCheck([{ name: 'amount', type: 'uint8' }], ['256']),
|
||||
).to.throw();
|
||||
});
|
||||
it('throws for fixed byte array overflows', () => {
|
||||
expect(() =>
|
||||
BaseContract.strictArgumentEncodingCheck([{ name: 'hash', type: 'bytes8' }], ['0x001122334455667788']),
|
||||
).to.throw();
|
||||
});
|
||||
});
|
||||
});
|
||||
108
packages/base-contract/test/utils_test.ts
Normal file
108
packages/base-contract/test/utils_test.ts
Normal file
@@ -0,0 +1,108 @@
|
||||
import { BigNumber } from '@0xproject/utils';
|
||||
import * as chai from 'chai';
|
||||
import 'mocha';
|
||||
|
||||
import { formatABIDataItem } from '../src/utils';
|
||||
|
||||
const { expect } = chai;
|
||||
|
||||
describe('Utils tests', () => {
|
||||
describe('#formatABIDataItem', () => {
|
||||
it('correctly handles arrays', () => {
|
||||
const calls: Array<{ type: string; value: any }> = [];
|
||||
const abi = {
|
||||
name: 'values',
|
||||
type: 'uint256[]',
|
||||
};
|
||||
const val = [1, 2, 3];
|
||||
const formatted = formatABIDataItem(abi, val, (type: string, value: any) => {
|
||||
calls.push({ type, value });
|
||||
return value; // no-op
|
||||
});
|
||||
expect(formatted).to.be.deep.equal(val);
|
||||
expect(calls).to.be.deep.equal([
|
||||
{ type: 'uint256', value: 1 },
|
||||
{ type: 'uint256', value: 2 },
|
||||
{ type: 'uint256', value: 3 },
|
||||
]);
|
||||
});
|
||||
it('correctly handles tuples', () => {
|
||||
const calls: Array<{ type: string; value: any }> = [];
|
||||
const abi = {
|
||||
components: [
|
||||
{
|
||||
name: 'to',
|
||||
type: 'address',
|
||||
},
|
||||
{
|
||||
name: 'amount',
|
||||
type: 'uint256',
|
||||
},
|
||||
],
|
||||
name: 'data',
|
||||
type: 'tuple',
|
||||
};
|
||||
const ZERO_ADDRESS = '0x0000000000000000000000000000000000000000';
|
||||
const val = { to: ZERO_ADDRESS, amount: new BigNumber(1) };
|
||||
const formatted = formatABIDataItem(abi, val, (type: string, value: any) => {
|
||||
calls.push({ type, value });
|
||||
return value; // no-op
|
||||
});
|
||||
expect(formatted).to.be.deep.equal(val);
|
||||
expect(calls).to.be.deep.equal([
|
||||
{
|
||||
type: 'address',
|
||||
value: val.to,
|
||||
},
|
||||
{
|
||||
type: 'uint256',
|
||||
value: val.amount,
|
||||
},
|
||||
]);
|
||||
});
|
||||
it('correctly handles nested arrays of tuples', () => {
|
||||
const calls: Array<{ type: string; value: any }> = [];
|
||||
const abi = {
|
||||
components: [
|
||||
{
|
||||
name: 'to',
|
||||
type: 'address',
|
||||
},
|
||||
{
|
||||
name: 'amount',
|
||||
type: 'uint256',
|
||||
},
|
||||
],
|
||||
name: 'data',
|
||||
type: 'tuple[2][]',
|
||||
};
|
||||
const ZERO_ADDRESS = '0x0000000000000000000000000000000000000000';
|
||||
const val = [
|
||||
[{ to: ZERO_ADDRESS, amount: new BigNumber(1) }, { to: ZERO_ADDRESS, amount: new BigNumber(2) }],
|
||||
];
|
||||
const formatted = formatABIDataItem(abi, val, (type: string, value: any) => {
|
||||
calls.push({ type, value });
|
||||
return value; // no-op
|
||||
});
|
||||
expect(formatted).to.be.deep.equal(val);
|
||||
expect(calls).to.be.deep.equal([
|
||||
{
|
||||
type: 'address',
|
||||
value: val[0][0].to,
|
||||
},
|
||||
{
|
||||
type: 'uint256',
|
||||
value: val[0][0].amount,
|
||||
},
|
||||
{
|
||||
type: 'address',
|
||||
value: val[0][1].to,
|
||||
},
|
||||
{
|
||||
type: 'uint256',
|
||||
value: val[0][1].amount,
|
||||
},
|
||||
]);
|
||||
});
|
||||
});
|
||||
});
|
||||
8
packages/base-contract/tsconfig.json
Normal file
8
packages/base-contract/tsconfig.json
Normal file
@@ -0,0 +1,8 @@
|
||||
{
|
||||
"extends": "../../tsconfig",
|
||||
"compilerOptions": {
|
||||
"outDir": "lib",
|
||||
"rootDir": "."
|
||||
},
|
||||
"include": ["src/**/*", "test/**/*"]
|
||||
}
|
||||
3
packages/base-contract/tslint.json
Normal file
3
packages/base-contract/tslint.json
Normal file
@@ -0,0 +1,3 @@
|
||||
{
|
||||
"extends": ["@0xproject/tslint-config"]
|
||||
}
|
||||
8
packages/connect/.npmignore
Normal file
8
packages/connect/.npmignore
Normal file
@@ -0,0 +1,8 @@
|
||||
.*
|
||||
yarn-error.log
|
||||
/src/
|
||||
/scripts/
|
||||
/generated_docs/
|
||||
test/
|
||||
tsconfig.json
|
||||
/lib/src/monorepo_scripts/
|
||||
317
packages/connect/CHANGELOG.json
Normal file
317
packages/connect/CHANGELOG.json
Normal file
@@ -0,0 +1,317 @@
|
||||
[
|
||||
{
|
||||
"timestamp": 1537541580,
|
||||
"version": "2.0.2",
|
||||
"changes": [
|
||||
{
|
||||
"note": "Dependencies updated"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"timestamp": 1537369748,
|
||||
"version": "2.0.1",
|
||||
"changes": [
|
||||
{
|
||||
"note": "Dependencies updated"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"version": "2.0.0",
|
||||
"changes": [
|
||||
{
|
||||
"note": "Change `OrderConfigRequest` to use BigNumber instead of string for relevant fields.",
|
||||
"pr": 1058
|
||||
}
|
||||
],
|
||||
"timestamp": 1536142250
|
||||
},
|
||||
{
|
||||
"version": "2.0.0-rc.2",
|
||||
"changes": [
|
||||
{
|
||||
"note": "Dependencies updated"
|
||||
}
|
||||
],
|
||||
"timestamp": 1535377027
|
||||
},
|
||||
{
|
||||
"version": "2.0.0-rc.1",
|
||||
"changes": [
|
||||
{
|
||||
"note": "Updated for SRA v2",
|
||||
"pr": 974
|
||||
},
|
||||
{
|
||||
"note": "Stopped exporting `Order` type",
|
||||
"pr": 924
|
||||
}
|
||||
],
|
||||
"timestamp": 1535133899
|
||||
},
|
||||
{
|
||||
"timestamp": 1534210131,
|
||||
"version": "1.0.5",
|
||||
"changes": [
|
||||
{
|
||||
"note": "Dependencies updated"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"timestamp": 1532619515,
|
||||
"version": "1.0.4",
|
||||
"changes": [
|
||||
{
|
||||
"note": "Dependencies updated"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"timestamp": 1532614997,
|
||||
"version": "1.0.3",
|
||||
"changes": [
|
||||
{
|
||||
"note": "Dependencies updated"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"timestamp": 1532605697,
|
||||
"version": "1.0.2",
|
||||
"changes": [
|
||||
{
|
||||
"note": "Dependencies updated"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"timestamp": 1532357734,
|
||||
"version": "1.0.1",
|
||||
"changes": [
|
||||
{
|
||||
"note": "Dependencies updated"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"timestamp": 1532043000,
|
||||
"version": "1.0.0",
|
||||
"changes": [
|
||||
{
|
||||
"note":
|
||||
"Remove `WebSocketOrderbookChannel` from the public interface and replace with `orderbookChannelFactory`"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"timestamp": 1531919263,
|
||||
"version": "0.6.17",
|
||||
"changes": [
|
||||
{
|
||||
"note": "Dependencies updated"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"timestamp": 1531149657,
|
||||
"version": "0.6.16",
|
||||
"changes": [
|
||||
{
|
||||
"note": "Dependencies updated"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"timestamp": 1529397769,
|
||||
"version": "0.6.15",
|
||||
"changes": [
|
||||
{
|
||||
"note": "Dependencies updated"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"timestamp": 1527616612,
|
||||
"version": "0.6.14",
|
||||
"changes": [
|
||||
{
|
||||
"note": "Dependencies updated"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"timestamp": 1527008270,
|
||||
"version": "0.6.13",
|
||||
"changes": [
|
||||
{
|
||||
"note": "Dependencies updated"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"timestamp": 1525477860,
|
||||
"version": "0.6.12",
|
||||
"changes": [
|
||||
{
|
||||
"note": "Dependencies updated"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"timestamp": 1525428773,
|
||||
"version": "0.6.11",
|
||||
"changes": [
|
||||
{
|
||||
"note": "Dependencies updated"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"timestamp": 1524044013,
|
||||
"version": "0.6.10",
|
||||
"changes": [
|
||||
{
|
||||
"note": "Dependencies updated"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"timestamp": 1523462196,
|
||||
"version": "0.6.9",
|
||||
"changes": [
|
||||
{
|
||||
"note": "Dependencies updated"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"timestamp": 1522673609,
|
||||
"version": "0.6.8",
|
||||
"changes": [
|
||||
{
|
||||
"note": "Dependencies updated"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"timestamp": 1522658513,
|
||||
"version": "0.6.7",
|
||||
"changes": [
|
||||
{
|
||||
"note": "Dependencies updated"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"version": "0.6.4",
|
||||
"changes": [
|
||||
{
|
||||
"note": "Consolidate `Order`, `SignedOrder`, and `ECSignature` into the `@0xproject/types` package",
|
||||
"pr": 456
|
||||
}
|
||||
],
|
||||
"timestamp": 1521298800
|
||||
},
|
||||
{
|
||||
"version": "0.6.2",
|
||||
"changes": [
|
||||
{
|
||||
"note": "Fix JSON parse empty response",
|
||||
"pr": 407
|
||||
}
|
||||
],
|
||||
"timestamp": 1518706800
|
||||
},
|
||||
{
|
||||
"version": "0.6.0",
|
||||
"changes": [
|
||||
{
|
||||
"note": "Add pagination options to HttpClient methods",
|
||||
"pr": 393
|
||||
},
|
||||
{
|
||||
"note": "Add heartbeat configuration to WebSocketOrderbookChannel constructor",
|
||||
"pr": 406
|
||||
}
|
||||
],
|
||||
"timestamp": 1518706800
|
||||
},
|
||||
{
|
||||
"version": "0.5.7",
|
||||
"changes": [
|
||||
{
|
||||
"note": "Fix publishing issue where .npmignore was not properly excluding undesired content",
|
||||
"pr": 389
|
||||
}
|
||||
],
|
||||
"timestamp": 1518102000
|
||||
},
|
||||
{
|
||||
"version": "0.5.0",
|
||||
"changes": [
|
||||
{
|
||||
"note": "Sanitize api endpoint url and remove trailing slashes",
|
||||
"pr": 318
|
||||
},
|
||||
{
|
||||
"note": "Improve error message text in HttpClient",
|
||||
"pr": 318
|
||||
},
|
||||
{
|
||||
"note": "Stop appending '/v0' to api endpoint url in HttpClient",
|
||||
"pr": 318
|
||||
}
|
||||
],
|
||||
"timestamp": 1516114800
|
||||
},
|
||||
{
|
||||
"version": "0.4.0",
|
||||
"changes": [
|
||||
{
|
||||
"note": "Prevent getFeesAsync method on HttpClient from mutating input",
|
||||
"pr": 296
|
||||
}
|
||||
],
|
||||
"timestamp": 1515596400
|
||||
},
|
||||
{
|
||||
"version": "0.3.0",
|
||||
"changes": [
|
||||
{
|
||||
"note": "Expose WebSocketOrderbookChannel and associated types to public interface",
|
||||
"pr": 251
|
||||
},
|
||||
{
|
||||
"note": "Remove tokenA and tokenB fields from OrdersRequest",
|
||||
"pr": 256
|
||||
}
|
||||
],
|
||||
"timestamp": 1512658800
|
||||
},
|
||||
{
|
||||
"version": "0.2.0",
|
||||
"changes": [
|
||||
{
|
||||
"note": "Add SignedOrder and TokenTradeInfo to the public interface"
|
||||
},
|
||||
{
|
||||
"note": "Add ECSignature and Order to the public interface"
|
||||
},
|
||||
{
|
||||
"note": "Remove dependency on 0x.js"
|
||||
}
|
||||
],
|
||||
"timestamp": 1511881200
|
||||
},
|
||||
{
|
||||
"version": "0.1.0",
|
||||
"changes": [
|
||||
{
|
||||
"note": "Provide a HttpClient class for interacting with standard relayer api compliant HTTP urls"
|
||||
}
|
||||
],
|
||||
"timestamp": 1511276400
|
||||
}
|
||||
]
|
||||
137
packages/connect/CHANGELOG.md
Normal file
137
packages/connect/CHANGELOG.md
Normal file
@@ -0,0 +1,137 @@
|
||||
<!--
|
||||
changelogUtils.file is auto-generated using the monorepo-scripts package. Don't edit directly.
|
||||
Edit the package's CHANGELOG.json file only.
|
||||
-->
|
||||
|
||||
CHANGELOG
|
||||
|
||||
## v2.0.2 - _September 21, 2018_
|
||||
|
||||
* Dependencies updated
|
||||
|
||||
## v2.0.1 - _September 19, 2018_
|
||||
|
||||
* Dependencies updated
|
||||
|
||||
## v2.0.0 - _September 5, 2018_
|
||||
|
||||
* Change `OrderConfigRequest` to use BigNumber instead of string for relevant fields. (#1058)
|
||||
|
||||
## v2.0.0-rc.2 - _August 27, 2018_
|
||||
|
||||
* Dependencies updated
|
||||
|
||||
## v2.0.0-rc.1 - _August 24, 2018_
|
||||
|
||||
* Updated for SRA v2 (#974)
|
||||
* Stopped exporting `Order` type (#924)
|
||||
|
||||
## v1.0.5 - _August 14, 2018_
|
||||
|
||||
* Dependencies updated
|
||||
|
||||
## v1.0.4 - _July 26, 2018_
|
||||
|
||||
* Dependencies updated
|
||||
|
||||
## v1.0.3 - _July 26, 2018_
|
||||
|
||||
* Dependencies updated
|
||||
|
||||
## v1.0.2 - _July 26, 2018_
|
||||
|
||||
* Dependencies updated
|
||||
|
||||
## v1.0.1 - _July 23, 2018_
|
||||
|
||||
* Dependencies updated
|
||||
|
||||
## v1.0.0 - _July 20, 2018_
|
||||
|
||||
* Remove `WebSocketOrderbookChannel` from the public interface and replace with `orderbookChannelFactory`
|
||||
|
||||
## v0.6.17 - _July 18, 2018_
|
||||
|
||||
* Dependencies updated
|
||||
|
||||
## v0.6.16 - _July 9, 2018_
|
||||
|
||||
* Dependencies updated
|
||||
|
||||
## v0.6.15 - _June 19, 2018_
|
||||
|
||||
* Dependencies updated
|
||||
|
||||
## v0.6.14 - _May 29, 2018_
|
||||
|
||||
* Dependencies updated
|
||||
|
||||
## v0.6.13 - _May 22, 2018_
|
||||
|
||||
* Dependencies updated
|
||||
|
||||
## v0.6.12 - _May 5, 2018_
|
||||
|
||||
* Dependencies updated
|
||||
|
||||
## v0.6.11 - _May 4, 2018_
|
||||
|
||||
* Dependencies updated
|
||||
|
||||
## v0.6.10 - _April 18, 2018_
|
||||
|
||||
* Dependencies updated
|
||||
|
||||
## v0.6.9 - _April 11, 2018_
|
||||
|
||||
* Dependencies updated
|
||||
|
||||
## v0.6.8 - _April 2, 2018_
|
||||
|
||||
* Dependencies updated
|
||||
|
||||
## v0.6.7 - _April 2, 2018_
|
||||
|
||||
* Dependencies updated
|
||||
|
||||
## v0.6.4 - _March 17, 2018_
|
||||
|
||||
* Consolidate `Order`, `SignedOrder`, and `ECSignature` into the `@0xproject/types` package (#456)
|
||||
|
||||
## v0.6.2 - _February 15, 2018_
|
||||
|
||||
* Fix JSON parse empty response (#407)
|
||||
|
||||
## v0.6.0 - _February 15, 2018_
|
||||
|
||||
* Add pagination options to HttpClient methods (#393)
|
||||
* Add heartbeat configuration to WebSocketOrderbookChannel constructor (#406)
|
||||
|
||||
## v0.5.7 - _February 8, 2018_
|
||||
|
||||
* Fix publishing issue where .npmignore was not properly excluding undesired content (#389)
|
||||
|
||||
## v0.5.0 - _January 16, 2018_
|
||||
|
||||
* Sanitize api endpoint url and remove trailing slashes (#318)
|
||||
* Improve error message text in HttpClient (#318)
|
||||
* Stop appending '/v0' to api endpoint url in HttpClient (#318)
|
||||
|
||||
## v0.4.0 - _January 10, 2018_
|
||||
|
||||
* Prevent getFeesAsync method on HttpClient from mutating input (#296)
|
||||
|
||||
## v0.3.0 - _December 7, 2017_
|
||||
|
||||
* Expose WebSocketOrderbookChannel and associated types to public interface (#251)
|
||||
* Remove tokenA and tokenB fields from OrdersRequest (#256)
|
||||
|
||||
## v0.2.0 - _November 28, 2017_
|
||||
|
||||
* Add SignedOrder and TokenTradeInfo to the public interface
|
||||
* Add ECSignature and Order to the public interface
|
||||
* Remove dependency on 0x.js
|
||||
|
||||
## v0.1.0 - _November 21, 2017_
|
||||
|
||||
* Provide a HttpClient class for interacting with standard relayer api compliant HTTP urls
|
||||
74
packages/connect/README.md
Normal file
74
packages/connect/README.md
Normal file
@@ -0,0 +1,74 @@
|
||||
## @0xproject/connect
|
||||
|
||||
This repository contains a Javascript library that makes it easy to interact with Relayers that conform to the [Standard Relayer API](https://github.com/0xProject/standard-relayer-api)
|
||||
|
||||
## Installation
|
||||
|
||||
```bash
|
||||
yarn add @0xproject/connect
|
||||
```
|
||||
|
||||
If your project is in [TypeScript](https://www.typescriptlang.org/), add the following to your `tsconfig.json`:
|
||||
|
||||
```json
|
||||
"compilerOptions": {
|
||||
"typeRoots": ["node_modules/@0xproject/typescript-typings/types", "node_modules/@types"],
|
||||
}
|
||||
```
|
||||
|
||||
## Usage
|
||||
|
||||
* [Docs](https://0xproject.com/docs/connect)
|
||||
* [Tutorials](https://0xproject.com/wiki#connect)
|
||||
|
||||
## Contributing
|
||||
|
||||
We welcome improvements and fixes from the wider community! To report bugs within this package, please create an issue in this repository.
|
||||
|
||||
Please read our [contribution guidelines](../../CONTRIBUTING.md) before getting started.
|
||||
|
||||
### Install dependencies
|
||||
|
||||
If you don't have yarn workspaces enabled (Yarn < v1.0) - enable them:
|
||||
|
||||
```bash
|
||||
yarn config set workspaces-experimental true
|
||||
```
|
||||
|
||||
Then install dependencies
|
||||
|
||||
```bash
|
||||
yarn install
|
||||
```
|
||||
|
||||
### Build
|
||||
|
||||
To build this package and all other monorepo packages that it depends on, run the following from the monorepo root directory:
|
||||
|
||||
```bash
|
||||
PKG=@0xproject/connect yarn build
|
||||
```
|
||||
|
||||
Or continuously rebuild on change:
|
||||
|
||||
```bash
|
||||
PKG=@0xproject/connect yarn watch
|
||||
```
|
||||
|
||||
### Clean
|
||||
|
||||
```bash
|
||||
yarn clean
|
||||
```
|
||||
|
||||
### Lint
|
||||
|
||||
```bash
|
||||
yarn lint
|
||||
```
|
||||
|
||||
### Run Tests
|
||||
|
||||
```bash
|
||||
yarn test
|
||||
```
|
||||
0
packages/connect/coverage/.gitkeep
Normal file
0
packages/connect/coverage/.gitkeep
Normal file
85
packages/connect/package.json
Normal file
85
packages/connect/package.json
Normal file
@@ -0,0 +1,85 @@
|
||||
{
|
||||
"name": "@0xproject/connect",
|
||||
"version": "2.0.2",
|
||||
"engines": {
|
||||
"node": ">=6.12"
|
||||
},
|
||||
"description": "A javascript library for interacting with the standard relayer api",
|
||||
"keywords": [
|
||||
"connect",
|
||||
"0xproject",
|
||||
"ethereum",
|
||||
"tokens",
|
||||
"exchange"
|
||||
],
|
||||
"main": "lib/src/index.js",
|
||||
"types": "lib/src/index.d.ts",
|
||||
"scripts": {
|
||||
"build": "tsc -b",
|
||||
"clean": "shx rm -rf lib test_temp generated_docs",
|
||||
"copy_test_fixtures": "copyfiles -u 2 './test/fixtures/**/*.json' ./lib/test/fixtures",
|
||||
"lint": "tslint --project .",
|
||||
"run_mocha": "mocha --require source-map-support/register --require make-promises-safe lib/test/**/*_test.js --exit",
|
||||
"test": "run-s copy_test_fixtures run_mocha",
|
||||
"rebuild_and_test": "run-s clean build test",
|
||||
"test:coverage": "nyc npm run test --all && yarn coverage:report:lcov",
|
||||
"coverage:report:lcov": "nyc report --reporter=text-lcov > coverage/lcov.info",
|
||||
"test:circleci": "yarn test:coverage",
|
||||
"docs:json": "typedoc --excludePrivate --excludeExternals --target ES5 --tsconfig typedoc-tsconfig.json --json $JSON_FILE_PATH $PROJECT_FILES"
|
||||
},
|
||||
"config": {
|
||||
"postpublish": {
|
||||
"assets": []
|
||||
}
|
||||
},
|
||||
"repository": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/0xProject/0x-monorepo.git"
|
||||
},
|
||||
"author": "Brandon Millman",
|
||||
"license": "Apache-2.0",
|
||||
"bugs": {
|
||||
"url": "https://github.com/0xProject/0x-monorepo/issues"
|
||||
},
|
||||
"homepage": "https://github.com/0xProject/0x-monorepo/packages/connect/README.md",
|
||||
"dependencies": {
|
||||
"@0xproject/assert": "^1.0.9",
|
||||
"@0xproject/json-schemas": "^1.0.2",
|
||||
"@0xproject/order-utils": "^1.0.3",
|
||||
"@0xproject/types": "^1.0.2",
|
||||
"@0xproject/typescript-typings": "^2.0.1",
|
||||
"@0xproject/utils": "^1.0.9",
|
||||
"lodash": "^4.17.5",
|
||||
"query-string": "^5.0.1",
|
||||
"sinon": "^4.0.0",
|
||||
"uuid": "^3.3.2",
|
||||
"websocket": "^1.0.25"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@0xproject/tslint-config": "^1.0.7",
|
||||
"@types/fetch-mock": "^6.0.3",
|
||||
"@types/lodash": "4.14.104",
|
||||
"@types/mocha": "^2.2.42",
|
||||
"@types/query-string": "^5.0.1",
|
||||
"@types/sinon": "^2.2.2",
|
||||
"@types/uuid": "^3.4.3",
|
||||
"@types/websocket": "^0.0.39",
|
||||
"async-child-process": "^1.1.1",
|
||||
"chai": "^4.0.1",
|
||||
"chai-as-promised": "^7.1.0",
|
||||
"copyfiles": "^2.0.0",
|
||||
"dirty-chai": "^2.0.1",
|
||||
"fetch-mock": "^5.13.1",
|
||||
"make-promises-safe": "^1.1.0",
|
||||
"mocha": "^4.1.0",
|
||||
"npm-run-all": "^4.1.2",
|
||||
"nyc": "^11.0.1",
|
||||
"shx": "^0.2.2",
|
||||
"tslint": "5.11.0",
|
||||
"typedoc": "0.12.0",
|
||||
"typescript": "3.0.1"
|
||||
},
|
||||
"publishConfig": {
|
||||
"access": "public"
|
||||
}
|
||||
}
|
||||
4
packages/connect/src/globals.d.ts
vendored
Normal file
4
packages/connect/src/globals.d.ts
vendored
Normal file
@@ -0,0 +1,4 @@
|
||||
declare module '*.json' {
|
||||
const value: any;
|
||||
export default value;
|
||||
}
|
||||
213
packages/connect/src/http_client.ts
Normal file
213
packages/connect/src/http_client.ts
Normal file
@@ -0,0 +1,213 @@
|
||||
import { assert } from '@0xproject/assert';
|
||||
import { schemas } from '@0xproject/json-schemas';
|
||||
import { SignedOrder } from '@0xproject/types';
|
||||
import { fetchAsync } from '@0xproject/utils';
|
||||
import * as _ from 'lodash';
|
||||
import * as queryString from 'query-string';
|
||||
|
||||
import { schemas as clientSchemas } from './schemas/schemas';
|
||||
import {
|
||||
APIOrder,
|
||||
AssetPairsRequestOpts,
|
||||
AssetPairsResponse,
|
||||
Client,
|
||||
FeeRecipientsResponse,
|
||||
HttpRequestOptions,
|
||||
HttpRequestType,
|
||||
OrderbookRequest,
|
||||
OrderbookResponse,
|
||||
OrderConfigRequest,
|
||||
OrderConfigResponse,
|
||||
OrdersRequestOpts,
|
||||
OrdersResponse,
|
||||
PagedRequestOpts,
|
||||
RequestOpts,
|
||||
} from './types';
|
||||
import { relayerResponseJsonParsers } from './utils/relayer_response_json_parsers';
|
||||
|
||||
const TRAILING_SLASHES_REGEX = /\/+$/;
|
||||
|
||||
/**
|
||||
* This class includes all the functionality related to interacting with a set of HTTP endpoints
|
||||
* that implement the standard relayer API v0
|
||||
*/
|
||||
export class HttpClient implements Client {
|
||||
private readonly _apiEndpointUrl: string;
|
||||
/**
|
||||
* Format parameters to be appended to http requests into query string form
|
||||
*/
|
||||
private static _buildQueryStringFromHttpParams(params?: object): string {
|
||||
// if params are undefined or empty, return an empty string
|
||||
if (_.isUndefined(params) || _.isEmpty(params)) {
|
||||
return '';
|
||||
}
|
||||
// stringify the formatted object
|
||||
const stringifiedParams = queryString.stringify(params);
|
||||
return `?${stringifiedParams}`;
|
||||
}
|
||||
/**
|
||||
* Instantiates a new HttpClient instance
|
||||
* @param url The relayer API base HTTP url you would like to interact with
|
||||
* @return An instance of HttpClient
|
||||
*/
|
||||
constructor(url: string) {
|
||||
assert.isWebUri('url', url);
|
||||
this._apiEndpointUrl = url.replace(TRAILING_SLASHES_REGEX, ''); // remove trailing slashes
|
||||
}
|
||||
/**
|
||||
* Retrieve assetData pair info from the API
|
||||
* @param requestOpts Options specifying assetData information to retrieve, page information, and network id.
|
||||
* @return The resulting AssetPairsResponse that match the request
|
||||
*/
|
||||
public async getAssetPairsAsync(
|
||||
requestOpts?: RequestOpts & AssetPairsRequestOpts & PagedRequestOpts,
|
||||
): Promise<AssetPairsResponse> {
|
||||
if (!_.isUndefined(requestOpts)) {
|
||||
assert.doesConformToSchema('requestOpts', requestOpts, clientSchemas.assetPairsRequestOptsSchema);
|
||||
assert.doesConformToSchema('requestOpts', requestOpts, clientSchemas.pagedRequestOptsSchema);
|
||||
assert.doesConformToSchema('requestOpts', requestOpts, clientSchemas.requestOptsSchema);
|
||||
}
|
||||
const httpRequestOpts = {
|
||||
params: requestOpts,
|
||||
};
|
||||
const responseJson = await this._requestAsync('/asset_pairs', HttpRequestType.Get, httpRequestOpts);
|
||||
const assetDataPairs = relayerResponseJsonParsers.parseAssetDataPairsJson(responseJson);
|
||||
return assetDataPairs;
|
||||
}
|
||||
/**
|
||||
* Retrieve orders from the API
|
||||
* @param requestOpts Options specifying orders to retrieve and page information, page information, and network id.
|
||||
* @return The resulting OrdersResponse that match the request
|
||||
*/
|
||||
public async getOrdersAsync(
|
||||
requestOpts?: RequestOpts & OrdersRequestOpts & PagedRequestOpts,
|
||||
): Promise<OrdersResponse> {
|
||||
if (!_.isUndefined(requestOpts)) {
|
||||
assert.doesConformToSchema('requestOpts', requestOpts, clientSchemas.ordersRequestOptsSchema);
|
||||
assert.doesConformToSchema('requestOpts', requestOpts, clientSchemas.pagedRequestOptsSchema);
|
||||
assert.doesConformToSchema('requestOpts', requestOpts, clientSchemas.requestOptsSchema);
|
||||
}
|
||||
const httpRequestOpts = {
|
||||
params: requestOpts,
|
||||
};
|
||||
const responseJson = await this._requestAsync(`/orders`, HttpRequestType.Get, httpRequestOpts);
|
||||
const orders = relayerResponseJsonParsers.parseOrdersJson(responseJson);
|
||||
return orders;
|
||||
}
|
||||
/**
|
||||
* Retrieve a specific order from the API
|
||||
* @param orderHash An orderHash generated from the desired order
|
||||
* @return The APIOrder that matches the supplied orderHash
|
||||
*/
|
||||
public async getOrderAsync(orderHash: string, requestOpts?: RequestOpts): Promise<APIOrder> {
|
||||
if (!_.isUndefined(requestOpts)) {
|
||||
assert.doesConformToSchema('requestOpts', requestOpts, clientSchemas.requestOptsSchema);
|
||||
}
|
||||
assert.doesConformToSchema('orderHash', orderHash, schemas.orderHashSchema);
|
||||
const httpRequestOpts = {
|
||||
params: requestOpts,
|
||||
};
|
||||
const responseJson = await this._requestAsync(`/order/${orderHash}`, HttpRequestType.Get, httpRequestOpts);
|
||||
const order = relayerResponseJsonParsers.parseAPIOrderJson(responseJson);
|
||||
return order;
|
||||
}
|
||||
/**
|
||||
* Retrieve an orderbook from the API
|
||||
* @param request An OrderbookRequest instance describing the specific orderbook to retrieve
|
||||
* @param requestOpts Options specifying page information, and network id.
|
||||
* @return The resulting OrderbookResponse that matches the request
|
||||
*/
|
||||
public async getOrderbookAsync(
|
||||
request: OrderbookRequest,
|
||||
requestOpts?: RequestOpts & PagedRequestOpts,
|
||||
): Promise<OrderbookResponse> {
|
||||
assert.doesConformToSchema('request', request, clientSchemas.orderBookRequestSchema);
|
||||
if (!_.isUndefined(requestOpts)) {
|
||||
assert.doesConformToSchema('requestOpts', requestOpts, clientSchemas.pagedRequestOptsSchema);
|
||||
assert.doesConformToSchema('requestOpts', requestOpts, clientSchemas.requestOptsSchema);
|
||||
}
|
||||
const httpRequestOpts = {
|
||||
params: _.defaults({}, request, requestOpts),
|
||||
};
|
||||
const responseJson = await this._requestAsync('/orderbook', HttpRequestType.Get, httpRequestOpts);
|
||||
const orderbook = relayerResponseJsonParsers.parseOrderbookResponseJson(responseJson);
|
||||
return orderbook;
|
||||
}
|
||||
/**
|
||||
* Retrieve fee information from the API
|
||||
* @param request A OrderConfigRequest instance describing the specific fees to retrieve
|
||||
* @param requestOpts Options specifying network id.
|
||||
* @return The resulting OrderConfigResponse that matches the request
|
||||
*/
|
||||
public async getOrderConfigAsync(
|
||||
request: OrderConfigRequest,
|
||||
requestOpts?: RequestOpts,
|
||||
): Promise<OrderConfigResponse> {
|
||||
if (!_.isUndefined(requestOpts)) {
|
||||
assert.doesConformToSchema('requestOpts', requestOpts, clientSchemas.requestOptsSchema);
|
||||
}
|
||||
assert.doesConformToSchema('request', request, clientSchemas.orderConfigRequestSchema);
|
||||
const httpRequestOpts = {
|
||||
params: requestOpts,
|
||||
payload: request,
|
||||
};
|
||||
const responseJson = await this._requestAsync('/order_config', HttpRequestType.Get, httpRequestOpts);
|
||||
const fees = relayerResponseJsonParsers.parseOrderConfigResponseJson(responseJson);
|
||||
return fees;
|
||||
}
|
||||
/**
|
||||
* Retrieve the list of fee recipient addresses used by the relayer.
|
||||
* @param requestOpts Options specifying page information, and network id.
|
||||
* @return The resulting FeeRecipientsResponse
|
||||
*/
|
||||
public async getFeeRecipientsAsync(requestOpts?: RequestOpts & PagedRequestOpts): Promise<FeeRecipientsResponse> {
|
||||
if (!_.isUndefined(requestOpts)) {
|
||||
assert.doesConformToSchema('requestOpts', requestOpts, clientSchemas.pagedRequestOptsSchema);
|
||||
assert.doesConformToSchema('requestOpts', requestOpts, clientSchemas.requestOptsSchema);
|
||||
}
|
||||
const httpRequestOpts = {
|
||||
params: requestOpts,
|
||||
};
|
||||
const feeRecipients = await this._requestAsync('/fee_recipients', HttpRequestType.Get, httpRequestOpts);
|
||||
assert.doesConformToSchema('feeRecipients', feeRecipients, schemas.relayerApiFeeRecipientsResponseSchema);
|
||||
return feeRecipients;
|
||||
}
|
||||
/**
|
||||
* Submit a signed order to the API
|
||||
* @param signedOrder A SignedOrder instance to submit
|
||||
* @param requestOpts Options specifying network id.
|
||||
*/
|
||||
public async submitOrderAsync(signedOrder: SignedOrder, requestOpts?: RequestOpts): Promise<void> {
|
||||
assert.doesConformToSchema('signedOrder', signedOrder, schemas.signedOrderSchema);
|
||||
const httpRequestOpts = {
|
||||
params: requestOpts,
|
||||
payload: signedOrder,
|
||||
};
|
||||
await this._requestAsync('/order', HttpRequestType.Post, httpRequestOpts);
|
||||
}
|
||||
private async _requestAsync(
|
||||
path: string,
|
||||
requestType: HttpRequestType,
|
||||
requestOptions?: HttpRequestOptions,
|
||||
): Promise<any> {
|
||||
const params = _.get(requestOptions, 'params');
|
||||
const payload = _.get(requestOptions, 'payload');
|
||||
const query = HttpClient._buildQueryStringFromHttpParams(params);
|
||||
const url = `${this._apiEndpointUrl}${path}${query}`;
|
||||
const headers = new Headers({
|
||||
'content-type': 'application/json',
|
||||
});
|
||||
const response = await fetchAsync(url, {
|
||||
method: requestType,
|
||||
body: JSON.stringify(payload),
|
||||
headers,
|
||||
});
|
||||
const text = await response.text();
|
||||
if (!response.ok) {
|
||||
const errorString = `${response.status} - ${response.statusText}\n${requestType} ${url}\n${text}`;
|
||||
throw Error(errorString);
|
||||
}
|
||||
const result = !_.isEmpty(text) ? JSON.parse(text) : undefined;
|
||||
return result;
|
||||
}
|
||||
}
|
||||
23
packages/connect/src/index.ts
Normal file
23
packages/connect/src/index.ts
Normal file
@@ -0,0 +1,23 @@
|
||||
export { HttpClient } from './http_client';
|
||||
export { ordersChannelFactory } from './orders_channel_factory';
|
||||
export {
|
||||
Client,
|
||||
OrderConfigRequest,
|
||||
OrderConfigResponse,
|
||||
OrdersChannel,
|
||||
OrdersChannelHandler,
|
||||
OrdersChannelSubscriptionOpts,
|
||||
OrderbookRequest,
|
||||
OrderbookResponse,
|
||||
OrdersRequestOpts,
|
||||
PagedRequestOpts,
|
||||
AssetPairsRequestOpts,
|
||||
RequestOpts,
|
||||
AssetPairsResponse,
|
||||
FeeRecipientsResponse,
|
||||
APIOrder,
|
||||
OrdersResponse,
|
||||
PaginatedCollection,
|
||||
} from './types';
|
||||
|
||||
export { SignedOrder } from '@0xproject/types';
|
||||
29
packages/connect/src/orders_channel_factory.ts
Normal file
29
packages/connect/src/orders_channel_factory.ts
Normal file
@@ -0,0 +1,29 @@
|
||||
import * as WebSocket from 'websocket';
|
||||
|
||||
import { OrdersChannel, OrdersChannelHandler } from './types';
|
||||
import { assert } from './utils/assert';
|
||||
import { WebSocketOrdersChannel } from './ws_orders_channel';
|
||||
|
||||
export const ordersChannelFactory = {
|
||||
/**
|
||||
* Instantiates a new WebSocketOrdersChannel instance
|
||||
* @param url The relayer API base WS url you would like to interact with
|
||||
* @param handler An OrdersChannelHandler instance that responds to various
|
||||
* channel updates
|
||||
* @return An OrdersChannel Promise
|
||||
*/
|
||||
async createWebSocketOrdersChannelAsync(url: string, handler: OrdersChannelHandler): Promise<OrdersChannel> {
|
||||
assert.isUri('url', url);
|
||||
assert.isOrdersChannelHandler('handler', handler);
|
||||
return new Promise<OrdersChannel>((resolve, reject) => {
|
||||
const client = new WebSocket.w3cwebsocket(url);
|
||||
client.onopen = () => {
|
||||
const ordersChannel = new WebSocketOrdersChannel(client, handler);
|
||||
resolve(ordersChannel);
|
||||
};
|
||||
client.onerror = err => {
|
||||
reject(err);
|
||||
};
|
||||
});
|
||||
},
|
||||
};
|
||||
@@ -0,0 +1,8 @@
|
||||
export const assetPairsRequestOptsSchema = {
|
||||
id: '/AssetPairsRequestOpts',
|
||||
type: 'object',
|
||||
properties: {
|
||||
assetDataA: { $ref: '/hexSchema' },
|
||||
assetDataB: { $ref: '/hexSchema' },
|
||||
},
|
||||
};
|
||||
24
packages/connect/src/schemas/order_config_request_schema.ts
Normal file
24
packages/connect/src/schemas/order_config_request_schema.ts
Normal file
@@ -0,0 +1,24 @@
|
||||
export const orderConfigRequestSchema = {
|
||||
id: '/OrderConfigRequest',
|
||||
type: 'object',
|
||||
properties: {
|
||||
makerAddress: { $ref: '/addressSchema' },
|
||||
takerAddress: { $ref: '/addressSchema' },
|
||||
makerAssetAmount: { $ref: '/numberSchema' },
|
||||
takerAssetAmount: { $ref: '/numberSchema' },
|
||||
makerAssetData: { $ref: '/hexSchema' },
|
||||
takerAssetData: { $ref: '/hexSchema' },
|
||||
exchangeAddress: { $ref: '/addressSchema' },
|
||||
expirationTimeSeconds: { $ref: '/numberSchema' },
|
||||
},
|
||||
required: [
|
||||
'makerAddress',
|
||||
'takerAddress',
|
||||
'makerAssetAmount',
|
||||
'takerAssetAmount',
|
||||
'makerAssetData',
|
||||
'takerAssetData',
|
||||
'exchangeAddress',
|
||||
'expirationTimeSeconds',
|
||||
],
|
||||
};
|
||||
9
packages/connect/src/schemas/orderbook_request_schema.ts
Normal file
9
packages/connect/src/schemas/orderbook_request_schema.ts
Normal file
@@ -0,0 +1,9 @@
|
||||
export const orderBookRequestSchema = {
|
||||
id: '/OrderBookRequest',
|
||||
type: 'object',
|
||||
properties: {
|
||||
baseAssetData: { $ref: '/hexSchema' },
|
||||
quoteAssetData: { $ref: '/hexSchema' },
|
||||
},
|
||||
required: ['baseAssetData', 'quoteAssetData'],
|
||||
};
|
||||
19
packages/connect/src/schemas/orders_request_opts_schema.ts
Normal file
19
packages/connect/src/schemas/orders_request_opts_schema.ts
Normal file
@@ -0,0 +1,19 @@
|
||||
export const ordersRequestOptsSchema = {
|
||||
id: '/OrdersRequestOpts',
|
||||
type: 'object',
|
||||
properties: {
|
||||
makerAssetProxyId: { $ref: '/hexSchema' },
|
||||
takerAssetProxyId: { $ref: '/hexSchema' },
|
||||
makerAssetAddress: { $ref: '/addressSchema' },
|
||||
takerAssetAddress: { $ref: '/addressSchema' },
|
||||
exchangeAddress: { $ref: '/addressSchema' },
|
||||
senderAddress: { $ref: '/addressSchema' },
|
||||
makerAssetData: { $ref: '/hexSchema' },
|
||||
takerAssetData: { $ref: '/hexSchema' },
|
||||
traderAssetData: { $ref: '/hexSchema' },
|
||||
makerAddress: { $ref: '/addressSchema' },
|
||||
takerAddress: { $ref: '/addressSchema' },
|
||||
traderAddress: { $ref: '/addressSchema' },
|
||||
feeRecipientAddress: { $ref: '/addressSchema' },
|
||||
},
|
||||
};
|
||||
@@ -0,0 +1,8 @@
|
||||
export const pagedRequestOptsSchema = {
|
||||
id: '/PagedRequestOpts',
|
||||
type: 'object',
|
||||
properties: {
|
||||
page: { type: 'number' },
|
||||
perPage: { type: 'number' },
|
||||
},
|
||||
};
|
||||
7
packages/connect/src/schemas/request_opts_schema.ts
Normal file
7
packages/connect/src/schemas/request_opts_schema.ts
Normal file
@@ -0,0 +1,7 @@
|
||||
export const requestOptsSchema = {
|
||||
id: '/RequestOpts',
|
||||
type: 'object',
|
||||
properties: {
|
||||
networkId: { type: 'number' },
|
||||
},
|
||||
};
|
||||
15
packages/connect/src/schemas/schemas.ts
Normal file
15
packages/connect/src/schemas/schemas.ts
Normal file
@@ -0,0 +1,15 @@
|
||||
import { assetPairsRequestOptsSchema } from './asset_pairs_request_opts_schema';
|
||||
import { orderConfigRequestSchema } from './order_config_request_schema';
|
||||
import { orderBookRequestSchema } from './orderbook_request_schema';
|
||||
import { ordersRequestOptsSchema } from './orders_request_opts_schema';
|
||||
import { pagedRequestOptsSchema } from './paged_request_opts_schema';
|
||||
import { requestOptsSchema } from './request_opts_schema';
|
||||
|
||||
export const schemas = {
|
||||
orderConfigRequestSchema,
|
||||
orderBookRequestSchema,
|
||||
ordersRequestOptsSchema,
|
||||
pagedRequestOptsSchema,
|
||||
requestOptsSchema,
|
||||
assetPairsRequestOptsSchema,
|
||||
};
|
||||
163
packages/connect/src/types.ts
Normal file
163
packages/connect/src/types.ts
Normal file
@@ -0,0 +1,163 @@
|
||||
import { SignedOrder } from '@0xproject/types';
|
||||
import { BigNumber } from '@0xproject/utils';
|
||||
|
||||
export interface Client {
|
||||
getAssetPairsAsync: (
|
||||
requestOpts?: AssetPairsRequestOpts & PagedRequestOpts,
|
||||
) => Promise<PaginatedCollection<AssetPairsItem>>;
|
||||
getOrdersAsync: (requestOpts?: OrdersRequestOpts & PagedRequestOpts) => Promise<PaginatedCollection<APIOrder>>;
|
||||
getOrderAsync: (orderHash: string) => Promise<APIOrder>;
|
||||
getOrderbookAsync: (request: OrderbookRequest, requestOpts?: PagedRequestOpts) => Promise<OrderbookResponse>;
|
||||
getOrderConfigAsync: (request: OrderConfigRequest) => Promise<OrderConfigResponse>;
|
||||
getFeeRecipientsAsync: (requestOpts?: PagedRequestOpts) => Promise<FeeRecipientsResponse>;
|
||||
submitOrderAsync: (signedOrder: SignedOrder) => Promise<void>;
|
||||
}
|
||||
|
||||
export interface OrdersChannel {
|
||||
subscribe: (subscriptionOpts: OrdersChannelSubscriptionOpts) => void;
|
||||
close: () => void;
|
||||
}
|
||||
|
||||
/**
|
||||
* baseAssetData: The address of assetData designated as the baseToken in the currency pair calculation of price
|
||||
* quoteAssetData: The address of assetData designated as the quoteToken in the currency pair calculation of price
|
||||
* limit: Maximum number of bids and asks in orderbook snapshot
|
||||
*/
|
||||
export interface OrdersChannelSubscriptionOpts {
|
||||
baseAssetData: string;
|
||||
quoteAssetData: string;
|
||||
limit: number;
|
||||
}
|
||||
|
||||
export interface OrdersChannelHandler {
|
||||
onUpdate: (channel: OrdersChannel, subscriptionOpts: OrdersChannelSubscriptionOpts, orders: APIOrder[]) => void;
|
||||
onError: (channel: OrdersChannel, err: Error, subscriptionOpts?: OrdersChannelSubscriptionOpts) => void;
|
||||
onClose: (channel: OrdersChannel) => void;
|
||||
}
|
||||
|
||||
export type OrdersChannelMessage = UpdateOrdersChannelMessage | UnknownOrdersChannelMessage;
|
||||
|
||||
export enum OrdersChannelMessageTypes {
|
||||
Update = 'update',
|
||||
Unknown = 'unknown',
|
||||
}
|
||||
|
||||
export interface UpdateOrdersChannelMessage {
|
||||
type: OrdersChannelMessageTypes.Update;
|
||||
requestId: string;
|
||||
payload: APIOrder[];
|
||||
}
|
||||
|
||||
export interface UnknownOrdersChannelMessage {
|
||||
type: OrdersChannelMessageTypes.Unknown;
|
||||
requestId: string;
|
||||
payload: undefined;
|
||||
}
|
||||
|
||||
export enum WebsocketConnectionEventType {
|
||||
Close = 'close',
|
||||
Error = 'error',
|
||||
Message = 'message',
|
||||
}
|
||||
|
||||
export enum WebsocketClientEventType {
|
||||
Connect = 'connect',
|
||||
ConnectFailed = 'connectFailed',
|
||||
}
|
||||
|
||||
export type OrdersResponse = PaginatedCollection<APIOrder>;
|
||||
|
||||
export interface APIOrder {
|
||||
order: SignedOrder;
|
||||
metaData: object;
|
||||
}
|
||||
|
||||
export interface AssetPairsRequestOpts {
|
||||
assetDataA?: string;
|
||||
assetDataB?: string;
|
||||
}
|
||||
|
||||
export type AssetPairsResponse = PaginatedCollection<AssetPairsItem>;
|
||||
|
||||
export interface AssetPairsItem {
|
||||
assetDataA: Asset;
|
||||
assetDataB: Asset;
|
||||
}
|
||||
|
||||
export interface Asset {
|
||||
assetData: string;
|
||||
minAmount: BigNumber;
|
||||
maxAmount: BigNumber;
|
||||
precision: number;
|
||||
}
|
||||
|
||||
export interface OrdersRequestOpts {
|
||||
makerAssetProxyId?: string;
|
||||
takerAssetProxyId?: string;
|
||||
makerAssetAddress?: string;
|
||||
takerAssetAddress?: string;
|
||||
exchangeAddress?: string;
|
||||
senderAddress?: string;
|
||||
makerAssetData?: string;
|
||||
takerAssetData?: string;
|
||||
makerAddress?: string;
|
||||
takerAddress?: string;
|
||||
traderAddress?: string;
|
||||
feeRecipientAddress?: string;
|
||||
}
|
||||
|
||||
export interface OrderbookRequest {
|
||||
baseAssetData: string;
|
||||
quoteAssetData: string;
|
||||
}
|
||||
|
||||
export interface OrderbookResponse {
|
||||
bids: PaginatedCollection<APIOrder>;
|
||||
asks: PaginatedCollection<APIOrder>;
|
||||
}
|
||||
|
||||
export interface PaginatedCollection<T> {
|
||||
total: number;
|
||||
page: number;
|
||||
perPage: number;
|
||||
records: T[];
|
||||
}
|
||||
|
||||
export interface OrderConfigRequest {
|
||||
makerAddress: string;
|
||||
takerAddress: string;
|
||||
makerAssetAmount: BigNumber;
|
||||
takerAssetAmount: BigNumber;
|
||||
makerAssetData: string;
|
||||
takerAssetData: string;
|
||||
exchangeAddress: string;
|
||||
expirationTimeSeconds: BigNumber;
|
||||
}
|
||||
|
||||
export interface OrderConfigResponse {
|
||||
makerFee: BigNumber;
|
||||
takerFee: BigNumber;
|
||||
feeRecipientAddress: string;
|
||||
senderAddress: string;
|
||||
}
|
||||
|
||||
export type FeeRecipientsResponse = PaginatedCollection<string>;
|
||||
|
||||
export interface RequestOpts {
|
||||
networkId?: number;
|
||||
}
|
||||
|
||||
export interface PagedRequestOpts {
|
||||
page?: number;
|
||||
perPage?: number;
|
||||
}
|
||||
|
||||
export interface HttpRequestOptions {
|
||||
params?: object;
|
||||
payload?: object;
|
||||
}
|
||||
|
||||
export enum HttpRequestType {
|
||||
Get = 'GET',
|
||||
Post = 'POST',
|
||||
}
|
||||
25
packages/connect/src/utils/assert.ts
Normal file
25
packages/connect/src/utils/assert.ts
Normal file
@@ -0,0 +1,25 @@
|
||||
import { assert as sharedAssert } from '@0xproject/assert';
|
||||
// HACK: We need those two unused imports because they're actually used by sharedAssert which gets injected here
|
||||
// tslint:disable-next-line:no-unused-variable
|
||||
import { Schema, schemas } from '@0xproject/json-schemas';
|
||||
// tslint:disable-next-line:no-unused-variable
|
||||
import { ECSignature } from '@0xproject/types';
|
||||
// tslint:disable-next-line:no-unused-variable
|
||||
import { BigNumber } from '@0xproject/utils';
|
||||
import * as _ from 'lodash';
|
||||
|
||||
export const assert = {
|
||||
...sharedAssert,
|
||||
isOrdersChannelSubscriptionOpts(variableName: string, subscriptionOpts: any): void {
|
||||
sharedAssert.doesConformToSchema(
|
||||
variableName,
|
||||
subscriptionOpts,
|
||||
schemas.relayerApiOrdersChannelSubscribePayload,
|
||||
);
|
||||
},
|
||||
isOrdersChannelHandler(variableName: string, handler: any): void {
|
||||
sharedAssert.isFunction(`${variableName}.onUpdate`, _.get(handler, 'onUpdate'));
|
||||
sharedAssert.isFunction(`${variableName}.onError`, _.get(handler, 'onError'));
|
||||
sharedAssert.isFunction(`${variableName}.onClose`, _.get(handler, 'onClose'));
|
||||
},
|
||||
};
|
||||
37
packages/connect/src/utils/orders_channel_message_parser.ts
Normal file
37
packages/connect/src/utils/orders_channel_message_parser.ts
Normal file
@@ -0,0 +1,37 @@
|
||||
import { assert } from '@0xproject/assert';
|
||||
import { schemas } from '@0xproject/json-schemas';
|
||||
import * as _ from 'lodash';
|
||||
|
||||
import { OrdersChannelMessage, OrdersChannelMessageTypes } from '../types';
|
||||
|
||||
import { relayerResponseJsonParsers } from './relayer_response_json_parsers';
|
||||
|
||||
export const ordersChannelMessageParser = {
|
||||
parse(utf8Data: string): OrdersChannelMessage {
|
||||
// parse the message
|
||||
const messageObj = JSON.parse(utf8Data);
|
||||
// ensure we have a type parameter to switch on
|
||||
const type: string = _.get(messageObj, 'type');
|
||||
assert.assert(!_.isUndefined(type), `Message is missing a type parameter: ${utf8Data}`);
|
||||
assert.isString('type', type);
|
||||
// ensure we have a request id for the resulting message
|
||||
const requestId: string = _.get(messageObj, 'requestId');
|
||||
assert.assert(!_.isUndefined(requestId), `Message is missing a requestId parameter: ${utf8Data}`);
|
||||
assert.isString('requestId', requestId);
|
||||
switch (type) {
|
||||
case OrdersChannelMessageTypes.Update: {
|
||||
assert.doesConformToSchema('message', messageObj, schemas.relayerApiOrdersChannelUpdateSchema);
|
||||
const ordersJson = messageObj.payload;
|
||||
const orders = relayerResponseJsonParsers.parseAPIOrdersJson(ordersJson);
|
||||
return _.assign(messageObj, { payload: orders });
|
||||
}
|
||||
default: {
|
||||
return {
|
||||
type: OrdersChannelMessageTypes.Unknown,
|
||||
requestId,
|
||||
payload: undefined,
|
||||
};
|
||||
}
|
||||
}
|
||||
},
|
||||
};
|
||||
50
packages/connect/src/utils/relayer_response_json_parsers.ts
Normal file
50
packages/connect/src/utils/relayer_response_json_parsers.ts
Normal file
@@ -0,0 +1,50 @@
|
||||
import { assert } from '@0xproject/assert';
|
||||
import { schemas } from '@0xproject/json-schemas';
|
||||
import { orderParsingUtils } from '@0xproject/order-utils';
|
||||
|
||||
import {
|
||||
APIOrder,
|
||||
AssetPairsItem,
|
||||
AssetPairsResponse,
|
||||
OrderbookResponse,
|
||||
OrderConfigResponse,
|
||||
OrdersResponse,
|
||||
} from '../types';
|
||||
|
||||
import { typeConverters } from './type_converters';
|
||||
|
||||
export const relayerResponseJsonParsers = {
|
||||
parseAssetDataPairsJson(json: any): AssetPairsResponse {
|
||||
assert.doesConformToSchema('assetDataPairsResponse', json, schemas.relayerApiAssetDataPairsResponseSchema);
|
||||
return { ...json, records: relayerResponseJsonParsers.parseAssetPairsItemsJson(json.records) };
|
||||
},
|
||||
parseAssetPairsItemsJson(json: any): AssetPairsItem[] {
|
||||
return json.map((assetDataPair: any) => {
|
||||
return orderParsingUtils.convertStringsFieldsToBigNumbers(assetDataPair, [
|
||||
'assetDataA.minAmount',
|
||||
'assetDataA.maxAmount',
|
||||
'assetDataB.minAmount',
|
||||
'assetDataB.maxAmount',
|
||||
]);
|
||||
});
|
||||
},
|
||||
parseOrdersJson(json: any): OrdersResponse {
|
||||
assert.doesConformToSchema('relayerApiOrdersResponse', json, schemas.relayerApiOrdersResponseSchema);
|
||||
return { ...json, records: relayerResponseJsonParsers.parseAPIOrdersJson(json.records) };
|
||||
},
|
||||
parseAPIOrdersJson(json: any): APIOrder[] {
|
||||
return json.map(relayerResponseJsonParsers.parseAPIOrderJson.bind(relayerResponseJsonParsers));
|
||||
},
|
||||
parseAPIOrderJson(json: any): APIOrder {
|
||||
assert.doesConformToSchema('relayerApiOrder', json, schemas.relayerApiOrderSchema);
|
||||
return typeConverters.convertAPIOrderStringFieldsToBigNumber(json);
|
||||
},
|
||||
parseOrderbookResponseJson(json: any): OrderbookResponse {
|
||||
assert.doesConformToSchema('orderBookResponse', json, schemas.relayerApiOrderbookResponseSchema);
|
||||
return typeConverters.convertOrderbookStringFieldsToBigNumber(json);
|
||||
},
|
||||
parseOrderConfigResponseJson(json: any): OrderConfigResponse {
|
||||
assert.doesConformToSchema('orderConfigResponse', json, schemas.relayerApiOrderConfigResponseSchema);
|
||||
return orderParsingUtils.convertStringsFieldsToBigNumbers(json, ['makerFee', 'takerFee']);
|
||||
},
|
||||
};
|
||||
26
packages/connect/src/utils/type_converters.ts
Normal file
26
packages/connect/src/utils/type_converters.ts
Normal file
@@ -0,0 +1,26 @@
|
||||
import { orderParsingUtils } from '@0xproject/order-utils';
|
||||
import * as _ from 'lodash';
|
||||
|
||||
import { APIOrder } from '../types';
|
||||
|
||||
export const typeConverters = {
|
||||
convertOrderbookStringFieldsToBigNumber(orderbook: any): any {
|
||||
const bids = _.get(orderbook, 'bids', []);
|
||||
const asks = _.get(orderbook, 'asks', []);
|
||||
const convertedBids = {
|
||||
...bids,
|
||||
records: bids.records.map((order: any) => typeConverters.convertAPIOrderStringFieldsToBigNumber(order)),
|
||||
};
|
||||
const convertedAsks = {
|
||||
...asks,
|
||||
records: asks.records.map((order: any) => typeConverters.convertAPIOrderStringFieldsToBigNumber(order)),
|
||||
};
|
||||
return {
|
||||
bids: convertedBids,
|
||||
asks: convertedAsks,
|
||||
};
|
||||
},
|
||||
convertAPIOrderStringFieldsToBigNumber(apiOrder: any): APIOrder {
|
||||
return { ...apiOrder, order: orderParsingUtils.convertOrderStringFieldsToBigNumber(apiOrder.order) };
|
||||
},
|
||||
};
|
||||
101
packages/connect/src/ws_orders_channel.ts
Normal file
101
packages/connect/src/ws_orders_channel.ts
Normal file
@@ -0,0 +1,101 @@
|
||||
import * as _ from 'lodash';
|
||||
import { v4 as uuid } from 'uuid';
|
||||
import * as WebSocket from 'websocket';
|
||||
|
||||
import { OrdersChannel, OrdersChannelHandler, OrdersChannelMessageTypes, OrdersChannelSubscriptionOpts } from './types';
|
||||
import { assert } from './utils/assert';
|
||||
import { ordersChannelMessageParser } from './utils/orders_channel_message_parser';
|
||||
|
||||
export interface OrdersChannelSubscriptionOptsMap {
|
||||
[key: string]: OrdersChannelSubscriptionOpts;
|
||||
}
|
||||
|
||||
/**
|
||||
* This class includes all the functionality related to interacting with a websocket endpoint
|
||||
* that implements the standard relayer API v0
|
||||
*/
|
||||
export class WebSocketOrdersChannel implements OrdersChannel {
|
||||
private readonly _client: WebSocket.w3cwebsocket;
|
||||
private readonly _handler: OrdersChannelHandler;
|
||||
private readonly _subscriptionOptsMap: OrdersChannelSubscriptionOptsMap = {};
|
||||
/**
|
||||
* Instantiates a new WebSocketOrdersChannel instance
|
||||
* @param client A WebSocket client
|
||||
* @param handler An OrdersChannelHandler instance that responds to various
|
||||
* channel updates
|
||||
* @return An instance of WebSocketOrdersChannel
|
||||
*/
|
||||
constructor(client: WebSocket.w3cwebsocket, handler: OrdersChannelHandler) {
|
||||
assert.isOrdersChannelHandler('handler', handler);
|
||||
// set private members
|
||||
this._client = client;
|
||||
this._handler = handler;
|
||||
// attach client callbacks
|
||||
this._client.onerror = err => {
|
||||
this._handler.onError(this, err);
|
||||
};
|
||||
this._client.onclose = () => {
|
||||
this._handler.onClose(this);
|
||||
};
|
||||
this._client.onmessage = message => {
|
||||
this._handleWebSocketMessage(message);
|
||||
};
|
||||
}
|
||||
/**
|
||||
* Subscribe to orderbook snapshots and updates from the websocket
|
||||
* @param subscriptionOpts An OrdersChannelSubscriptionOpts instance describing which
|
||||
* assetData pair to subscribe to
|
||||
*/
|
||||
public subscribe(subscriptionOpts: OrdersChannelSubscriptionOpts): void {
|
||||
assert.isOrdersChannelSubscriptionOpts('subscriptionOpts', subscriptionOpts);
|
||||
assert.assert(this._client.readyState === WebSocket.w3cwebsocket.OPEN, 'WebSocket connection is closed');
|
||||
const requestId = uuid();
|
||||
this._subscriptionOptsMap[requestId] = subscriptionOpts;
|
||||
const subscribeMessage = {
|
||||
type: 'subscribe',
|
||||
channel: 'orders',
|
||||
requestId,
|
||||
payload: subscriptionOpts,
|
||||
};
|
||||
this._client.send(JSON.stringify(subscribeMessage));
|
||||
}
|
||||
/**
|
||||
* Close the websocket and stop receiving updates
|
||||
*/
|
||||
public close(): void {
|
||||
this._client.close();
|
||||
}
|
||||
private _handleWebSocketMessage(message: any): void {
|
||||
if (_.isUndefined(message.data)) {
|
||||
this._handler.onError(this, new Error(`Message does not contain data. Url: ${this._client.url}`));
|
||||
return;
|
||||
}
|
||||
try {
|
||||
const data = message.data;
|
||||
const parserResult = ordersChannelMessageParser.parse(data);
|
||||
const subscriptionOpts = this._subscriptionOptsMap[parserResult.requestId];
|
||||
if (_.isUndefined(subscriptionOpts)) {
|
||||
this._handler.onError(
|
||||
this,
|
||||
new Error(`Message has unknown requestId. Url: ${this._client.url} Message: ${data}`),
|
||||
);
|
||||
return;
|
||||
}
|
||||
switch (parserResult.type) {
|
||||
case OrdersChannelMessageTypes.Update: {
|
||||
this._handler.onUpdate(this, subscriptionOpts, parserResult.payload);
|
||||
break;
|
||||
}
|
||||
default: {
|
||||
this._handler.onError(
|
||||
this,
|
||||
new Error(`Message has unknown type parameter. Url: ${this._client.url} Message: ${data}`),
|
||||
subscriptionOpts,
|
||||
);
|
||||
}
|
||||
}
|
||||
} catch (error) {
|
||||
this._handler.onError(this, error);
|
||||
}
|
||||
}
|
||||
}
|
||||
21
packages/connect/test/fixtures/standard_relayer_api/asset_pairs.json
vendored
Normal file
21
packages/connect/test/fixtures/standard_relayer_api/asset_pairs.json
vendored
Normal file
@@ -0,0 +1,21 @@
|
||||
{
|
||||
"total": 43,
|
||||
"page": 1,
|
||||
"perPage": 100,
|
||||
"records": [
|
||||
{
|
||||
"assetDataA": {
|
||||
"minAmount": "0",
|
||||
"maxAmount": "10000000000000000000",
|
||||
"precision": 5,
|
||||
"assetData": "0xf47261b04c32345ced77393b3530b1eed0f346429d"
|
||||
},
|
||||
"assetDataB": {
|
||||
"minAmount": "0",
|
||||
"maxAmount": "50000000000000000000",
|
||||
"precision": 5,
|
||||
"assetData": "0x0257179264389b814a946f3e92105513705ca6b990"
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
25
packages/connect/test/fixtures/standard_relayer_api/asset_pairs.ts
vendored
Normal file
25
packages/connect/test/fixtures/standard_relayer_api/asset_pairs.ts
vendored
Normal file
@@ -0,0 +1,25 @@
|
||||
import { BigNumber } from '@0xproject/utils';
|
||||
|
||||
import { AssetPairsResponse } from '../../../src/types';
|
||||
|
||||
export const assetDataPairsResponse: AssetPairsResponse = {
|
||||
total: 43,
|
||||
page: 1,
|
||||
perPage: 100,
|
||||
records: [
|
||||
{
|
||||
assetDataA: {
|
||||
minAmount: new BigNumber('0'),
|
||||
maxAmount: new BigNumber('10000000000000000000'),
|
||||
precision: 5,
|
||||
assetData: '0xf47261b04c32345ced77393b3530b1eed0f346429d',
|
||||
},
|
||||
assetDataB: {
|
||||
minAmount: new BigNumber('0'),
|
||||
maxAmount: new BigNumber('50000000000000000000'),
|
||||
precision: 5,
|
||||
assetData: '0x0257179264389b814a946f3e92105513705ca6b990',
|
||||
},
|
||||
},
|
||||
],
|
||||
};
|
||||
10
packages/connect/test/fixtures/standard_relayer_api/fee_recipients.json
vendored
Normal file
10
packages/connect/test/fixtures/standard_relayer_api/fee_recipients.json
vendored
Normal file
@@ -0,0 +1,10 @@
|
||||
{
|
||||
"total": 3,
|
||||
"page": 1,
|
||||
"perPage": 10,
|
||||
"records": [
|
||||
"0x6ec92694ea172ebc430c30fa31de87620967a082",
|
||||
"0x9e56625509c2f60af937f23b7b532600390e8c8b",
|
||||
"0xa2b31dacf30a9c50ca473337c01d8a201ae33e32"
|
||||
]
|
||||
}
|
||||
12
packages/connect/test/fixtures/standard_relayer_api/fee_recipients.ts
vendored
Normal file
12
packages/connect/test/fixtures/standard_relayer_api/fee_recipients.ts
vendored
Normal file
@@ -0,0 +1,12 @@
|
||||
import { FeeRecipientsResponse } from '../../../src/types';
|
||||
|
||||
export const feeRecipientsResponse: FeeRecipientsResponse = {
|
||||
total: 3,
|
||||
page: 1,
|
||||
perPage: 10,
|
||||
records: [
|
||||
'0x6ec92694ea172ebc430c30fa31de87620967a082',
|
||||
'0x9e56625509c2f60af937f23b7b532600390e8c8b',
|
||||
'0xa2b31dacf30a9c50ca473337c01d8a201ae33e32',
|
||||
],
|
||||
};
|
||||
@@ -0,0 +1,19 @@
|
||||
{
|
||||
"order": {
|
||||
"makerAddress": "0x9e56625509c2f60af937f23b7b532600390e8c8b",
|
||||
"takerAddress": "0xa2b31dacf30a9c50ca473337c01d8a201ae33e32",
|
||||
"feeRecipientAddress": "0xb046140686d052fff581f63f8136cce132e857da",
|
||||
"senderAddress": "0xa2b31dacf30a9c50ca473337c01d8a201ae33e32",
|
||||
"makerAssetAmount": "10000000000000000",
|
||||
"takerAssetAmount": "20000000000000000",
|
||||
"makerFee": "100000000000000",
|
||||
"takerFee": "200000000000000",
|
||||
"expirationTimeSeconds": "1532560590",
|
||||
"salt": "1532559225",
|
||||
"makerAssetData": "0xf47261b04c32345ced77393b3530b1eed0f346429d",
|
||||
"takerAssetData": "0x0257179264389b814a946f3e92105513705ca6b990",
|
||||
"exchangeAddress": "0x12459c951127e0c374ff9105dda097662a027093",
|
||||
"signature": "0x012761a3ed31b43c8780e905a260a35faefcc527be7516aa11c0256729b5b351bc33"
|
||||
},
|
||||
"metaData": {}
|
||||
}
|
||||
@@ -0,0 +1,21 @@
|
||||
import { BigNumber } from '@0xproject/utils';
|
||||
|
||||
export const orderResponse = {
|
||||
order: {
|
||||
makerAddress: '0x9e56625509c2f60af937f23b7b532600390e8c8b',
|
||||
takerAddress: '0xa2b31dacf30a9c50ca473337c01d8a201ae33e32',
|
||||
feeRecipientAddress: '0xb046140686d052fff581f63f8136cce132e857da',
|
||||
senderAddress: '0xa2b31dacf30a9c50ca473337c01d8a201ae33e32',
|
||||
makerAssetAmount: new BigNumber('10000000000000000'),
|
||||
takerAssetAmount: new BigNumber('20000000000000000'),
|
||||
makerFee: new BigNumber('100000000000000'),
|
||||
takerFee: new BigNumber('200000000000000'),
|
||||
expirationTimeSeconds: new BigNumber('1532560590'),
|
||||
salt: new BigNumber('1532559225'),
|
||||
makerAssetData: '0xf47261b04c32345ced77393b3530b1eed0f346429d',
|
||||
takerAssetData: '0x0257179264389b814a946f3e92105513705ca6b990',
|
||||
exchangeAddress: '0x12459c951127e0c374ff9105dda097662a027093',
|
||||
signature: '0x012761a3ed31b43c8780e905a260a35faefcc527be7516aa11c0256729b5b351bc33',
|
||||
},
|
||||
metaData: {},
|
||||
};
|
||||
6
packages/connect/test/fixtures/standard_relayer_api/order_config.json
vendored
Normal file
6
packages/connect/test/fixtures/standard_relayer_api/order_config.json
vendored
Normal file
@@ -0,0 +1,6 @@
|
||||
{
|
||||
"senderAddress": "0xa2b31dacf30a9c50ca473337c01d8a201ae33e32",
|
||||
"feeRecipientAddress": "0xb046140686d052fff581f63f8136cce132e857da",
|
||||
"makerFee": "100000000000000",
|
||||
"takerFee": "200000000000000"
|
||||
}
|
||||
10
packages/connect/test/fixtures/standard_relayer_api/order_config.ts
vendored
Normal file
10
packages/connect/test/fixtures/standard_relayer_api/order_config.ts
vendored
Normal file
@@ -0,0 +1,10 @@
|
||||
import { BigNumber } from '@0xproject/utils';
|
||||
|
||||
import { OrderConfigResponse } from '../../../src/types';
|
||||
|
||||
export const orderConfigResponse: OrderConfigResponse = {
|
||||
senderAddress: '0xa2b31dacf30a9c50ca473337c01d8a201ae33e32',
|
||||
feeRecipientAddress: '0xb046140686d052fff581f63f8136cce132e857da',
|
||||
makerFee: new BigNumber('100000000000000'),
|
||||
takerFee: new BigNumber('200000000000000'),
|
||||
};
|
||||
54
packages/connect/test/fixtures/standard_relayer_api/orderbook.json
vendored
Normal file
54
packages/connect/test/fixtures/standard_relayer_api/orderbook.json
vendored
Normal file
@@ -0,0 +1,54 @@
|
||||
{
|
||||
"bids": {
|
||||
"total": 325,
|
||||
"page": 2,
|
||||
"perPage": 100,
|
||||
"records": [
|
||||
{
|
||||
"order": {
|
||||
"makerAddress": "0x9e56625509c2f60af937f23b7b532600390e8c8b",
|
||||
"takerAddress": "0xa2b31dacf30a9c50ca473337c01d8a201ae33e32",
|
||||
"feeRecipientAddress": "0xb046140686d052fff581f63f8136cce132e857da",
|
||||
"senderAddress": "0xa2b31dacf30a9c50ca473337c01d8a201ae33e32",
|
||||
"makerAssetAmount": "10000000000000000",
|
||||
"takerAssetAmount": "20000000000000000",
|
||||
"makerFee": "100000000000000",
|
||||
"takerFee": "200000000000000",
|
||||
"expirationTimeSeconds": "1532560590",
|
||||
"salt": "1532559225",
|
||||
"makerAssetData": "0xf47261b04c32345ced77393b3530b1eed0f346429d",
|
||||
"takerAssetData": "0x0257179264389b814a946f3e92105513705ca6b990",
|
||||
"exchangeAddress": "0x12459c951127e0c374ff9105dda097662a027093",
|
||||
"signature": "0x012761a3ed31b43c8780e905a260a35faefcc527be7516aa11c0256729b5b351bc33"
|
||||
},
|
||||
"metaData": {}
|
||||
}
|
||||
]
|
||||
},
|
||||
"asks": {
|
||||
"total": 500,
|
||||
"page": 2,
|
||||
"perPage": 100,
|
||||
"records": [
|
||||
{
|
||||
"order": {
|
||||
"makerAddress": "0xa2b31dacf30a9c50ca473337c01d8a201ae33e32",
|
||||
"takerAddress": "0x9e56625509c2f60af937f23b7b532600390e8c8b",
|
||||
"feeRecipientAddress": "0xb046140686d052fff581f63f8136cce132e857da",
|
||||
"senderAddress": "0xa2b31dacf30a9c50ca473337c01d8a201ae33e32",
|
||||
"makerAssetAmount": "20000000000000000",
|
||||
"takerAssetAmount": "10000000000000000",
|
||||
"makerFee": "200000000000000",
|
||||
"takerFee": "100000000000000",
|
||||
"expirationTimeSeconds": "1532560590",
|
||||
"salt": "1532559225",
|
||||
"makerAssetData": "0x0257179264389b814a946f3e92105513705ca6b990",
|
||||
"takerAssetData": "0xf47261b04c32345ced77393b3530b1eed0f346429d",
|
||||
"exchangeAddress": "0x12459c951127e0c374ff9105dda097662a027093",
|
||||
"signature": "0x013842a3ed31b43c8780e905a260a35faefcc527be7516aa11c0256729b5b3518891"
|
||||
},
|
||||
"metaData": {}
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user