mirror of
https://github.com/TeamNewPipe/NewPipe
synced 2025-09-24 08:40:51 +02:00
Compare commits
3504 Commits
Author | SHA1 | Date | |
---|---|---|---|
![]() |
7ae908a466 | ||
![]() |
00767f4bf3 | ||
![]() |
54f0b3d8b3 | ||
![]() |
08eb70833d | ||
![]() |
42aafd3a2d | ||
![]() |
e2a7b9ac56 | ||
![]() |
5e593f687d | ||
![]() |
3223ec04e3 | ||
![]() |
f388a1af67 | ||
![]() |
c1fe5c8d07 | ||
![]() |
608e73e2f2 | ||
![]() |
2e538b8959 | ||
![]() |
1278fc27ae | ||
![]() |
be95d7fe0f | ||
![]() |
377914f1d8 | ||
![]() |
5bf439ad9e | ||
![]() |
3b1b23ba2a | ||
![]() |
9274e6417a | ||
![]() |
dce6565af4 | ||
![]() |
8b3aec5edb | ||
![]() |
b0e4f947ea | ||
![]() |
91bcd8766a | ||
![]() |
4e633504a8 | ||
![]() |
144a10f7a6 | ||
![]() |
72a2644f25 | ||
![]() |
e865c4350e | ||
![]() |
52cc4a0a05 | ||
![]() |
e103e4817c | ||
![]() |
d0637a8832 | ||
![]() |
94f774b82d | ||
![]() |
651b79d3ed | ||
![]() |
9e5b9ca326 | ||
![]() |
dfa606ef49 | ||
![]() |
2886bc3b01 | ||
![]() |
71c5aaa11e | ||
![]() |
466db83375 | ||
![]() |
17c0fffd73 | ||
![]() |
8a069b497f | ||
![]() |
af79479716 | ||
![]() |
8cfe8c17e3 | ||
![]() |
5108d75682 | ||
![]() |
ac53196dcc | ||
![]() |
1e652b159e | ||
![]() |
ea07d7751b | ||
![]() |
82de35d724 | ||
![]() |
f55e8ea3aa | ||
![]() |
7067ebdd12 | ||
![]() |
03bb2123f2 | ||
![]() |
e2f449f0c8 | ||
![]() |
b16e972710 | ||
![]() |
37cd71328c | ||
![]() |
9b2c86a37b | ||
![]() |
ce4dd33eab | ||
![]() |
8bbc3e531c | ||
![]() |
c5a06243a6 | ||
![]() |
bebd2b449c | ||
![]() |
658168eb8d | ||
![]() |
6b23df0659 | ||
![]() |
d59314801c | ||
![]() |
0f45c69388 | ||
![]() |
52542e04e8 | ||
![]() |
7fc0a3841a | ||
![]() |
22db4175f3 | ||
![]() |
8fc935b09d | ||
![]() |
07fb319e88 | ||
![]() |
12a78a826d | ||
![]() |
4a061f20ed | ||
![]() |
f3be89b503 | ||
![]() |
12acaf29dd | ||
![]() |
683d9816cb | ||
![]() |
8802582997 | ||
![]() |
983c98d262 | ||
![]() |
c38389672a | ||
![]() |
93148400a2 | ||
![]() |
194e43f5cb | ||
![]() |
08c928e1d0 | ||
![]() |
69dacb34b9 | ||
![]() |
60c3a2dc9c | ||
![]() |
b8e5e036b2 | ||
![]() |
2f87305f2d | ||
![]() |
15dc99f110 | ||
![]() |
2d907706ea | ||
![]() |
f5dbb07893 | ||
![]() |
a437672dc1 | ||
![]() |
388a4860b5 | ||
![]() |
4b72ee53b0 | ||
![]() |
d77c23ed34 | ||
![]() |
31635c122e | ||
![]() |
afef793fbb | ||
![]() |
3bc2ec90ef | ||
![]() |
a3e68c93f8 | ||
![]() |
15e6f1cb3b | ||
![]() |
89c540c520 | ||
![]() |
6632720bc3 | ||
![]() |
b5662c2d07 | ||
![]() |
0f74c2463e | ||
![]() |
fdfdf94cb9 | ||
![]() |
8595078053 | ||
![]() |
80be089ca9 | ||
![]() |
96ab2f855e | ||
![]() |
4206ae84c1 | ||
![]() |
2f21523da9 | ||
![]() |
6c1222ea32 | ||
![]() |
ba50de236c | ||
![]() |
bef8882a7c | ||
![]() |
0d8b7e23e7 | ||
![]() |
864c19e7dc | ||
![]() |
4b0ed9de5d | ||
![]() |
d18a34b766 | ||
![]() |
0cf24c5d36 | ||
![]() |
fa293e3415 | ||
![]() |
1531a5112c | ||
![]() |
e127db6fa6 | ||
![]() |
49b1649348 | ||
![]() |
9f503917c2 | ||
![]() |
54ef604569 | ||
![]() |
30ce906f72 | ||
![]() |
1c20eabb48 | ||
![]() |
f8c52c4dac | ||
![]() |
345ba74d58 | ||
![]() |
d2aaf152a0 | ||
![]() |
7bf1f3dba6 | ||
![]() |
452fe3a8e2 | ||
![]() |
c25e523df6 | ||
![]() |
65bb1dcdbf | ||
![]() |
fe42206e94 | ||
![]() |
dac47d9f52 | ||
![]() |
83a3d11f38 | ||
![]() |
03d5372525 | ||
![]() |
a454a41b51 | ||
![]() |
95631dba46 | ||
![]() |
ee827407aa | ||
![]() |
3aebfa22e9 | ||
![]() |
72eb3b4415 | ||
![]() |
3a40759cd2 | ||
![]() |
6f44ced7b6 | ||
![]() |
81843ddb6e | ||
![]() |
23d14ab443 | ||
![]() |
3d3d94655b | ||
![]() |
a6515d5450 | ||
![]() |
2d0da2c7a4 | ||
![]() |
f05affa984 | ||
![]() |
cd265fc31f | ||
![]() |
3c21be8fa5 | ||
![]() |
f681b0bb5a | ||
![]() |
d7fbddf6f8 | ||
![]() |
993c34911a | ||
![]() |
4a7cfd1a6c | ||
![]() |
402990dd9d | ||
![]() |
41faf70da1 | ||
![]() |
15e3b6301c | ||
![]() |
5b9c28b93b | ||
![]() |
6672169707 | ||
![]() |
9ff1baefde | ||
![]() |
552734faa5 | ||
![]() |
7268e04361 | ||
![]() |
45d8fef00c | ||
![]() |
0f83497284 | ||
![]() |
1475ff805f | ||
![]() |
7907182e7e | ||
![]() |
0f457127df | ||
![]() |
064242d962 | ||
![]() |
ddcbe27fd3 | ||
![]() |
ee19ea66b3 | ||
![]() |
6b490ee547 | ||
![]() |
e127697fff | ||
![]() |
558c9147a2 | ||
![]() |
4147c7c1d1 | ||
![]() |
45ef9b0278 | ||
![]() |
fc0e709817 | ||
![]() |
b67bf16d4f | ||
![]() |
fb3be544ce | ||
![]() |
53f5741317 | ||
![]() |
07015973d2 | ||
![]() |
215880207e | ||
![]() |
41c4ab5739 | ||
![]() |
ff8868f6a3 | ||
![]() |
8c6e37d1d1 | ||
![]() |
c90237c14c | ||
![]() |
989bcbf895 | ||
![]() |
19dd9d266a | ||
![]() |
05370dbb94 | ||
![]() |
f3edc69897 | ||
![]() |
f6cad2d9cf | ||
![]() |
dc67628ba5 | ||
![]() |
37b8a9375f | ||
![]() |
d71af9a625 | ||
![]() |
a163d5461d | ||
![]() |
a274baf5cd | ||
![]() |
96eb1425f8 | ||
![]() |
361760be0a | ||
![]() |
eea2768633 | ||
![]() |
d3562c70f5 | ||
![]() |
e06342eacf | ||
![]() |
e8d909553d | ||
![]() |
b21d231e3a | ||
![]() |
4058277b7a | ||
![]() |
dd9772cde2 | ||
![]() |
a924f819a9 | ||
![]() |
156bbad5b5 | ||
![]() |
2963cd5c6e | ||
![]() |
7d6688f497 | ||
![]() |
b056faa97f | ||
![]() |
3ff00ff50e | ||
![]() |
baee915db5 | ||
![]() |
4e6dcc693b | ||
![]() |
3750561b4d | ||
![]() |
6b026557d4 | ||
![]() |
1ee137bbda | ||
![]() |
c92a90749e | ||
![]() |
e806f8c4e6 | ||
![]() |
8a5e2ffa57 | ||
![]() |
ad405d9e0b | ||
![]() |
b9ee14ac30 | ||
![]() |
bb49b1cfb1 | ||
![]() |
4fc9443b4f | ||
![]() |
581ede022e | ||
![]() |
f86fc03c46 | ||
![]() |
75db002369 | ||
![]() |
dbfa4e554b | ||
![]() |
84d87a2e60 | ||
![]() |
9e3577e77b | ||
![]() |
41a0dc1abd | ||
![]() |
950956ebf2 | ||
![]() |
c000c1d455 | ||
![]() |
c8e2ab4c83 | ||
![]() |
397f93b079 | ||
![]() |
09d137f740 | ||
![]() |
81f740d409 | ||
![]() |
1d2642f1e3 | ||
![]() |
7cd3603bbb | ||
![]() |
ec7de2a6dc | ||
![]() |
3d1a3606c9 | ||
![]() |
6472e9b6b6 | ||
![]() |
2c88e9d068 | ||
![]() |
4825a0a35f | ||
![]() |
7adebbe989 | ||
![]() |
122b0b0de4 | ||
![]() |
744cfe5672 | ||
![]() |
17724a901c | ||
![]() |
7dc85af5fb | ||
![]() |
c7daf32904 | ||
![]() |
b2323859e5 | ||
![]() |
4c8dca5300 | ||
![]() |
68e7fcf8ee | ||
![]() |
f78983b16b | ||
![]() |
ef91214085 | ||
![]() |
dc09a4621b | ||
![]() |
2f99a217c3 | ||
![]() |
6992b2c308 | ||
![]() |
0d51eefbb9 | ||
![]() |
aa28a85747 | ||
![]() |
f18ee8e83d | ||
![]() |
fb58967766 | ||
![]() |
c3f1478fde | ||
![]() |
e5c00a7ef4 | ||
![]() |
769791af7a | ||
![]() |
e632fab4d0 | ||
![]() |
91611fcae4 | ||
![]() |
6cd25d7e55 | ||
![]() |
c9488eb042 | ||
![]() |
c8516a04dc | ||
![]() |
02d1b98b1c | ||
![]() |
d8236bbedd | ||
![]() |
1de21fb0c2 | ||
![]() |
13cac07b8d | ||
![]() |
bd9dcfb28a | ||
![]() |
d5199eac3e | ||
![]() |
7638d229c0 | ||
![]() |
a641c5bb58 | ||
![]() |
1e0c9f46ad | ||
![]() |
4eb02f584e | ||
![]() |
700c1b4b25 | ||
![]() |
4b4337e078 | ||
![]() |
38ce800685 | ||
![]() |
2310e8c1d6 | ||
![]() |
1b2b3a4f88 | ||
![]() |
d11129a76b | ||
![]() |
02789122a0 | ||
![]() |
676bc02d52 | ||
![]() |
8b807b0706 | ||
![]() |
72dfe974ab | ||
![]() |
316db0e4c6 | ||
![]() |
010c607e40 | ||
![]() |
3e099fb2a3 | ||
![]() |
9c9730b152 | ||
![]() |
9e44053e22 | ||
![]() |
dee32c3dc5 | ||
![]() |
344fbff59a | ||
![]() |
e39a816bdc | ||
![]() |
605b8fac5e | ||
![]() |
dfba10f8ae | ||
![]() |
48a1ab64b0 | ||
![]() |
dd2cde3c1a | ||
![]() |
1b9c2b37c5 | ||
![]() |
eae1f8b597 | ||
![]() |
18ce86c2ed | ||
![]() |
d5f25e05d9 | ||
![]() |
53303ac5d3 | ||
![]() |
90cc8e2144 | ||
![]() |
adf9badbf6 | ||
![]() |
c35fe4f3f1 | ||
![]() |
63291f8101 | ||
![]() |
62efb588ef | ||
![]() |
203ca9afc6 | ||
![]() |
a23f941ac8 | ||
![]() |
b0a10f0542 | ||
![]() |
478ad42977 | ||
![]() |
0764983ac6 | ||
![]() |
2b2f1ee8f5 | ||
![]() |
28f167fd99 | ||
![]() |
272be36dd9 | ||
![]() |
f933db8117 | ||
![]() |
cddb9bccb9 | ||
![]() |
b5ad24eb47 | ||
![]() |
ad8f791f71 | ||
![]() |
2e862b4ccc | ||
![]() |
ecac897e7b | ||
![]() |
702adb53a7 | ||
![]() |
4ea962f523 | ||
![]() |
acaf92d671 | ||
![]() |
c673cb6157 | ||
![]() |
c0f7b123a3 | ||
![]() |
bc2f0f9f3e | ||
![]() |
e9e2afa61a | ||
![]() |
403154b2e1 | ||
![]() |
e5fd24b0d1 | ||
![]() |
8dc34274a1 | ||
![]() |
467bd21de2 | ||
![]() |
5c9705d94e | ||
![]() |
85fb5827aa | ||
![]() |
0bcc9bd3ba | ||
![]() |
25e120bec1 | ||
![]() |
7067deb328 | ||
![]() |
f6efd302dc | ||
![]() |
61972141ae | ||
![]() |
af936bc646 | ||
![]() |
d66f933c69 | ||
![]() |
cf81c37683 | ||
![]() |
d2306b0fd7 | ||
![]() |
94dfabf3dc | ||
![]() |
5522dc10b8 | ||
![]() |
0ae04b8ead | ||
![]() |
44cad27d0a | ||
![]() |
5d59025b3c | ||
![]() |
768bb0bbcd | ||
![]() |
ac071b383f | ||
![]() |
e0b1a6b88b | ||
![]() |
ed86b1c572 | ||
![]() |
b6c2bade73 | ||
![]() |
b6b19b474e | ||
![]() |
231b7492fb | ||
![]() |
b4950fcb2e | ||
![]() |
b79ea7b51b | ||
![]() |
28c72e7f63 | ||
![]() |
5fcc3b4dab | ||
![]() |
51837ce36f | ||
![]() |
ddaafb68c8 | ||
![]() |
a744775fe7 | ||
![]() |
50b85a7734 | ||
![]() |
aab09c0c65 | ||
![]() |
3ded6feddb | ||
![]() |
c8802fe5d0 | ||
![]() |
411b3129f9 | ||
![]() |
a55acd38df | ||
![]() |
e7773d8807 | ||
![]() |
7edef8d5a2 | ||
![]() |
03d2ca9f9f | ||
![]() |
2271ea4281 | ||
![]() |
afc8db8f81 | ||
![]() |
4af49ee5a6 | ||
![]() |
d7b29aae5c | ||
![]() |
9f7a8407ca | ||
![]() |
7eb13a9b93 | ||
![]() |
7c9896beaf | ||
![]() |
54d3bff26d | ||
![]() |
a2050a5211 | ||
![]() |
048743c062 | ||
![]() |
e9bd2934c3 | ||
![]() |
50634eb2b3 | ||
![]() |
08489b81fb | ||
![]() |
a2ff770afc | ||
![]() |
e0ba9b3902 | ||
![]() |
f11b5ae7a1 | ||
![]() |
7baeb6eca7 | ||
![]() |
658d988254 | ||
![]() |
9d7e9289bb | ||
![]() |
4e8519a1b9 | ||
![]() |
12aac09c7b | ||
![]() |
d7d87691cb | ||
![]() |
731640997e | ||
![]() |
64d7432852 | ||
![]() |
e6fffc0d5b | ||
![]() |
1c9f68bcae | ||
![]() |
4fde62ff89 | ||
![]() |
4c5fc7fa7c | ||
![]() |
b633108a4c | ||
![]() |
ceb55d0ede | ||
![]() |
87c958b2e7 | ||
![]() |
d844e0aba6 | ||
![]() |
3d42da5ff5 | ||
![]() |
1b869199f4 | ||
![]() |
f3cd2f6c9d | ||
![]() |
2e3e7f9bf2 | ||
![]() |
92327dd9e3 | ||
![]() |
d40b432f46 | ||
![]() |
5b3137093f | ||
![]() |
4fc9f2e5fd | ||
![]() |
ce592f4baf | ||
![]() |
2b3edcf2d1 | ||
![]() |
f165f97bd9 | ||
![]() |
4ec572372e | ||
![]() |
a953aab9b4 | ||
![]() |
672eb34049 | ||
![]() |
a0b042091b | ||
![]() |
b753705a84 | ||
![]() |
f48ff610a3 | ||
![]() |
93aed9f34c | ||
![]() |
3cf94382e6 | ||
![]() |
f52cb3bbe0 | ||
![]() |
d45182cb5c | ||
![]() |
22847c6c92 | ||
![]() |
a70c51b71c | ||
![]() |
02d417476e | ||
![]() |
bc3139e5f9 | ||
![]() |
c1f7b2653c | ||
![]() |
72dbb9441e | ||
![]() |
bbc13756f3 | ||
![]() |
ba0876b43b | ||
![]() |
c0d41661e8 | ||
![]() |
b2e2551e33 | ||
![]() |
ac371e6fb4 | ||
![]() |
108af48b76 | ||
![]() |
a225ac5deb | ||
![]() |
920695f90a | ||
![]() |
49fc57eee9 | ||
![]() |
b61d44aaa6 | ||
![]() |
f36fd2f7b2 | ||
![]() |
7e26748dc4 | ||
![]() |
ba6fdecbae | ||
![]() |
f791e83380 | ||
![]() |
dd7f914b8d | ||
![]() |
7667b2ce59 | ||
![]() |
62d36126ea | ||
![]() |
8272b2508b | ||
![]() |
70354eb73e | ||
![]() |
63083ac0c3 | ||
![]() |
9346f9b0f3 | ||
![]() |
605e5d265c | ||
![]() |
25456b15e7 | ||
![]() |
ebbe7ef944 | ||
![]() |
60a272e70a | ||
![]() |
672fcb9ce3 | ||
![]() |
870d50ebcd | ||
![]() |
b62b3e91a0 | ||
![]() |
b022d90303 | ||
![]() |
02af529551 | ||
![]() |
dd9cc619ed | ||
![]() |
75c9e959de | ||
![]() |
fb8afec1bf | ||
![]() |
a2887034a6 | ||
![]() |
7eb5aa1bc5 | ||
![]() |
08ebd7d39a | ||
![]() |
9ea263f72e | ||
![]() |
e4a2d2f3c1 | ||
![]() |
892b4a15f6 | ||
![]() |
fda0a550fd | ||
![]() |
638825cdff | ||
![]() |
6a1d81fcf3 | ||
![]() |
8afd44a72f | ||
![]() |
22c5135740 | ||
![]() |
4d51ebc37a | ||
![]() |
433c6dc33b | ||
![]() |
ed4fdadd4d | ||
![]() |
298e96b821 | ||
![]() |
9006667b4d | ||
![]() |
abbf71982d | ||
![]() |
57110717d3 | ||
![]() |
c3b5444281 | ||
![]() |
7a542975ca | ||
![]() |
490aff5846 | ||
![]() |
1dfc036ead | ||
![]() |
360d6b998c | ||
![]() |
be7307cf39 | ||
![]() |
12096ab050 | ||
![]() |
225f23ce02 | ||
![]() |
9c15ee7285 | ||
![]() |
8dd617fc6b | ||
![]() |
ae8e72f34b | ||
![]() |
fc52a6e871 | ||
![]() |
722b47b86f | ||
![]() |
3a09039b93 | ||
![]() |
669a35bc78 | ||
![]() |
81fa0c1558 | ||
![]() |
ed408b2094 | ||
![]() |
3bc661f583 | ||
![]() |
cf9b482be2 | ||
![]() |
1d935b46f9 | ||
![]() |
520ac2e935 | ||
![]() |
c6316abbce | ||
![]() |
2dfe837c35 | ||
![]() |
3c2ea7697c | ||
![]() |
faa7a91764 | ||
![]() |
f629a4d206 | ||
![]() |
4b7c37e919 | ||
![]() |
a4c9732916 | ||
![]() |
f8f2dfce4b | ||
![]() |
5284072b8d | ||
![]() |
e603dddc54 | ||
![]() |
15691ba41a | ||
![]() |
a555aab3e7 | ||
![]() |
88f1c3a808 | ||
![]() |
0e6668636d | ||
![]() |
d0f4d8b132 | ||
![]() |
cfdcb92fa3 | ||
![]() |
039bd5d413 | ||
![]() |
5ffba55b4a | ||
![]() |
57ca281c80 | ||
![]() |
46f74b908a | ||
![]() |
703f1550d8 | ||
![]() |
8bfd380b89 | ||
![]() |
43e91ae4ae | ||
![]() |
023a2c1d9c | ||
![]() |
d931d058d9 | ||
![]() |
a825253b7f | ||
![]() |
d9086300f3 | ||
![]() |
f18a7c91ca | ||
![]() |
556aad0114 | ||
![]() |
05f6ea6401 | ||
![]() |
43d0543b9f | ||
![]() |
e95637f7b7 | ||
![]() |
4cd7c42b9e | ||
![]() |
0787d62254 | ||
![]() |
b061423847 | ||
![]() |
dbd90299bd | ||
![]() |
1faf1b261c | ||
![]() |
c6ead351c0 | ||
![]() |
bbcfdf2969 | ||
![]() |
36e72d5a41 | ||
![]() |
f8297a8a9b | ||
![]() |
a4503eb609 | ||
![]() |
a1cb3e59d6 | ||
![]() |
ef94458249 | ||
![]() |
1b05c404d5 | ||
![]() |
5de455bb86 | ||
![]() |
acdfee5c25 | ||
![]() |
a6d6ed6474 | ||
![]() |
87e7d95966 | ||
![]() |
d37ee1e0dc | ||
![]() |
1d33e7ab49 | ||
![]() |
2027b743b4 | ||
![]() |
7e27e73532 | ||
![]() |
3705a1adad | ||
![]() |
793b88a7d4 | ||
![]() |
2928df0cc9 | ||
![]() |
4f5e772157 | ||
![]() |
f7a0b9951e | ||
![]() |
44128f9145 | ||
![]() |
6eaff5ca6a | ||
![]() |
c0664c1cb6 | ||
![]() |
e229e5355d | ||
![]() |
52189fc5df | ||
![]() |
314964c5f9 | ||
![]() |
fcef783bbb | ||
![]() |
9c5ac069d7 | ||
![]() |
160f9df64e | ||
![]() |
bdbb9bead2 | ||
![]() |
e4dfce9ee2 | ||
![]() |
6fbb601802 | ||
![]() |
94b4c76749 | ||
![]() |
8715e7dd98 | ||
![]() |
ccc2d892c1 | ||
![]() |
d1ce8e7baa | ||
![]() |
82fbbbecac | ||
![]() |
bf029ddd9f | ||
![]() |
af5f0c042a | ||
![]() |
4e15f0ddac | ||
![]() |
b566355c4f | ||
![]() |
5c31dff72d | ||
![]() |
d69672e113 | ||
![]() |
a209e87c69 | ||
![]() |
71610a365f | ||
![]() |
44860f2ea7 | ||
![]() |
967bdf8f08 | ||
![]() |
02aa6fcab0 | ||
![]() |
712985ced1 | ||
![]() |
0683dafa55 | ||
![]() |
6f1958d398 | ||
![]() |
85fbd2560d | ||
![]() |
65f2730261 | ||
![]() |
21bcadeecb | ||
![]() |
bd0427c79f | ||
![]() |
241054fd26 | ||
![]() |
d8888e3495 | ||
![]() |
137d9e6d6e | ||
![]() |
d0cbd1e663 | ||
![]() |
da51e1ed72 | ||
![]() |
76803bfcb1 | ||
![]() |
c248741c00 | ||
![]() |
759a078ce0 | ||
![]() |
a536311d56 | ||
![]() |
9dd2a82b7d | ||
![]() |
4d50a66e40 | ||
![]() |
e6c56cacc6 | ||
![]() |
c3b9465aa3 | ||
![]() |
5f3b8bea52 | ||
![]() |
0e4c8ea8af | ||
![]() |
f9ab23bb4a | ||
![]() |
9f8b2264a2 | ||
![]() |
52cc3f10c1 | ||
![]() |
1d61bb58f5 | ||
![]() |
a3440cc8ef | ||
![]() |
51c60e5261 | ||
![]() |
c3349e18a5 | ||
![]() |
12e46e0a36 | ||
![]() |
f8caed139a | ||
![]() |
a2297fb5b8 | ||
![]() |
26c39381a8 | ||
![]() |
a4742ad9e9 | ||
![]() |
23a6973291 | ||
![]() |
340a84e583 | ||
![]() |
4291877830 | ||
![]() |
8f6d608a43 | ||
![]() |
45dd98e639 | ||
![]() |
2ac265a6f5 | ||
![]() |
e100806fd9 | ||
![]() |
c7f75bf7d1 | ||
![]() |
4bf5ddbfe9 | ||
![]() |
32dffb577c | ||
![]() |
a9623f8e6a | ||
![]() |
bc74bb6bf6 | ||
![]() |
d32450255c | ||
![]() |
896aec5295 | ||
![]() |
d42a534fc3 | ||
![]() |
398007ca90 | ||
![]() |
551e8df8b8 | ||
![]() |
dc0a28b93d | ||
![]() |
644396149b | ||
![]() |
a25bb2618a | ||
![]() |
0e12cdea7c | ||
![]() |
903296014a | ||
![]() |
cd713db029 | ||
![]() |
bdd16e06e0 | ||
![]() |
4c632810ec | ||
![]() |
f451bdbfa4 | ||
![]() |
bfac73b992 | ||
![]() |
2b41f710a8 | ||
![]() |
5924edb289 | ||
![]() |
5ceec31adf | ||
![]() |
e2791cdf0f | ||
![]() |
50f3b08c59 | ||
![]() |
2aebf6ceaf | ||
![]() |
7ceea2cd8d | ||
![]() |
0cb801179c | ||
![]() |
1822d21676 | ||
![]() |
7fd2ebc252 | ||
![]() |
f709ac16f8 | ||
![]() |
74173317de | ||
![]() |
3874e16187 | ||
![]() |
39722a5563 | ||
![]() |
1f9ad12593 | ||
![]() |
52c136439e | ||
![]() |
cd86ed3877 | ||
![]() |
1d85661ab9 | ||
![]() |
736cefed5a | ||
![]() |
fa8630ddae | ||
![]() |
4a2bd7bd7b | ||
![]() |
a9e21a35ea | ||
![]() |
fd4e1b8d2c | ||
![]() |
420f0505ae | ||
![]() |
b58f7856a1 | ||
![]() |
44a6429267 | ||
![]() |
472bde9eea | ||
![]() |
c422f65935 | ||
![]() |
f5962375f8 | ||
![]() |
4e33f2dcb6 | ||
![]() |
dce874bbc7 | ||
![]() |
7d69dfa62a | ||
![]() |
a56f17cc3b | ||
![]() |
7be7a32d70 | ||
![]() |
a7dd3af4e5 | ||
![]() |
63fdc100d6 | ||
![]() |
9e2ece78dd | ||
![]() |
cebcaf4d6a | ||
![]() |
4a242e43a7 | ||
![]() |
d8f442cc89 | ||
![]() |
f6923e073e | ||
![]() |
f02c6be10d | ||
![]() |
5ba3ef0a25 | ||
![]() |
9458b9f37d | ||
![]() |
ca282f2be8 | ||
![]() |
0cde08c46e | ||
![]() |
bec8512c7b | ||
![]() |
46e7da4e21 | ||
![]() |
c7b8bd3436 | ||
![]() |
1721817fdb | ||
![]() |
d57bfde604 | ||
![]() |
3167ab3ba0 | ||
![]() |
8f559965f6 | ||
![]() |
35e005caaa | ||
![]() |
6c25ce56a3 | ||
![]() |
baa12c7069 | ||
![]() |
e2b044d2ee | ||
![]() |
621af8d812 | ||
![]() |
efd038a536 | ||
![]() |
0b2629e910 | ||
![]() |
a9b5ef3bd3 | ||
![]() |
2a24532e1d | ||
![]() |
88c4195260 | ||
![]() |
c5f2eb1dd8 | ||
![]() |
384d964827 | ||
![]() |
253526e565 | ||
![]() |
2e2dbaf77f | ||
![]() |
43133df2ad | ||
![]() |
eef568b24c | ||
![]() |
e7d5011f42 | ||
![]() |
36c198fc33 | ||
![]() |
75a8edf20f | ||
![]() |
81107df53f | ||
![]() |
a932bc2503 | ||
![]() |
f4e2eca256 | ||
![]() |
08d5dfa49c | ||
![]() |
e7f339a946 | ||
![]() |
d3375a921d | ||
![]() |
a2eb810df0 | ||
![]() |
6e576a165c | ||
![]() |
dfa941a9e7 | ||
![]() |
1584028995 | ||
![]() |
14dab85ff0 | ||
![]() |
403e336a64 | ||
![]() |
2aa5f68b7b | ||
![]() |
56ea526cce | ||
![]() |
96f5cd9f17 | ||
![]() |
64efb89cce | ||
![]() |
4d5b68792b | ||
![]() |
85d813a94b | ||
![]() |
e9b008ee84 | ||
![]() |
b795c5f017 | ||
![]() |
1e4686463b | ||
![]() |
4e9631a8d8 | ||
![]() |
3a83062670 | ||
![]() |
79102a20d2 | ||
![]() |
2e053ea25a | ||
![]() |
fd3d46c813 | ||
![]() |
ab838fd84f | ||
![]() |
9ca2691a2c | ||
![]() |
7c3f5a62c5 | ||
![]() |
6711dae4e0 | ||
![]() |
a73a4afcad | ||
![]() |
4ea2d8e7ba | ||
![]() |
bb386fea16 | ||
![]() |
82cdb0fdb3 | ||
![]() |
a94dacf03c | ||
![]() |
de312eb768 | ||
![]() |
29aa1de4e3 | ||
![]() |
09435a1b63 | ||
![]() |
85e864a01e | ||
![]() |
573839c0ff | ||
![]() |
9c636f5ee2 | ||
![]() |
f78d2a5ed8 | ||
![]() |
48c2c156cb | ||
![]() |
435813355f | ||
![]() |
e30a552b6c | ||
![]() |
22a4a4b2df | ||
![]() |
5ac418aa61 | ||
![]() |
d8a0a74d47 | ||
![]() |
3931c0d200 | ||
![]() |
e26607fbd1 | ||
![]() |
a63683e6b8 | ||
![]() |
83b198f6fe | ||
![]() |
23f6e1084b | ||
![]() |
99335bab7a | ||
![]() |
33fbc889fb | ||
![]() |
201e5ee09d | ||
![]() |
c398308872 | ||
![]() |
090c063644 | ||
![]() |
ec40c8ed1e | ||
![]() |
78a99526a9 | ||
![]() |
25914b0263 | ||
![]() |
aaa3e20c5a | ||
![]() |
0da8e28651 | ||
![]() |
d7dcfa5729 | ||
![]() |
65824ff64d | ||
![]() |
63cad7ebb0 | ||
![]() |
b996fa7eef | ||
![]() |
5ebf3726ed | ||
![]() |
484c852efd | ||
![]() |
25cf8dc20a | ||
![]() |
cb1a138140 | ||
![]() |
384ca66205 | ||
![]() |
46bfec66cb | ||
![]() |
afe06b379f | ||
![]() |
a9e85abd7f | ||
![]() |
08d4651ef0 | ||
![]() |
62b4f333bb | ||
![]() |
02b0909829 | ||
![]() |
ae39b31c68 | ||
![]() |
e5a1438673 | ||
![]() |
72d305b283 | ||
![]() |
785c0376f8 | ||
![]() |
0bdf8de38e | ||
![]() |
6c575511be | ||
![]() |
9767e98e50 | ||
![]() |
79deff3261 | ||
![]() |
0782410a14 | ||
![]() |
f5d015e8f9 | ||
![]() |
74ad488f4a | ||
![]() |
0db3406ad8 | ||
![]() |
6e377dd3c5 | ||
![]() |
be676ad93c | ||
![]() |
f00cffd17e | ||
![]() |
0803d9f2b5 | ||
![]() |
841fb4cfc5 | ||
![]() |
8b3e32b6eb | ||
![]() |
90de75968d | ||
![]() |
2de9d7b4a7 | ||
![]() |
a9ab2f54ea | ||
![]() |
a1432e939f | ||
![]() |
cae160b5be | ||
![]() |
aa4e5da146 | ||
![]() |
1061fca6a3 | ||
![]() |
e4885e3c52 | ||
![]() |
a98c0bdec7 | ||
![]() |
d6e0bd8c26 | ||
![]() |
e01ef42d31 | ||
![]() |
92910eb227 | ||
![]() |
cdfe686322 | ||
![]() |
553943ab93 | ||
![]() |
32df4d39a4 | ||
![]() |
1281ea858c | ||
![]() |
30a303f873 | ||
![]() |
fdb6679d2d | ||
![]() |
7145b117cc | ||
![]() |
4698d07323 | ||
![]() |
2142f05a88 | ||
![]() |
40a2df847b | ||
![]() |
6063ff063b | ||
![]() |
547a1a9970 | ||
![]() |
8c52a812d9 | ||
![]() |
4eef498d24 | ||
![]() |
32b0bdb98c | ||
![]() |
edfe0f9c30 | ||
![]() |
eef418a757 | ||
![]() |
218f25c171 | ||
![]() |
f02df6d80c | ||
![]() |
da4d379b22 | ||
![]() |
f13f4cc5d2 | ||
![]() |
a79badd783 | ||
![]() |
2702700d10 | ||
![]() |
267686fd37 | ||
![]() |
e5df2f65b8 | ||
![]() |
d6decc05d7 | ||
![]() |
d85afd6435 | ||
![]() |
2fb86364ab | ||
![]() |
c972940338 | ||
![]() |
6abdd2a6d8 | ||
![]() |
9e9d1a04e4 | ||
![]() |
ae9349e36c | ||
![]() |
4031777606 | ||
![]() |
9591f14551 | ||
![]() |
06d10cf9aa | ||
![]() |
0113ad5e14 | ||
![]() |
e58feadba9 | ||
![]() |
360f5ac6f7 | ||
![]() |
e846f69e38 | ||
![]() |
fa1d7ffac3 | ||
![]() |
272d589518 | ||
![]() |
6ab4787e97 | ||
![]() |
060f09ff55 | ||
![]() |
f47ae3668f | ||
![]() |
56cd84c1fe | ||
![]() |
a2eead521f | ||
![]() |
a2fd5ae20c | ||
![]() |
543440e38d | ||
![]() |
0b64382ef6 | ||
![]() |
bede758507 | ||
![]() |
5532666ad5 | ||
![]() |
63cff25616 | ||
![]() |
5e2735aaa2 | ||
![]() |
6fc0d8fce4 | ||
![]() |
e0c1ca1209 | ||
![]() |
3dc4ed1764 | ||
![]() |
f63a4ee2ae | ||
![]() |
c96bdfcb32 | ||
![]() |
2a99e0e435 | ||
![]() |
5ffc667bea | ||
![]() |
21b8df0375 | ||
![]() |
b78ac7d2e9 | ||
![]() |
114dc8ffa0 | ||
![]() |
eea43d5a73 | ||
![]() |
bcb1cf6603 | ||
![]() |
6a0c5a874c | ||
![]() |
1e8b3826dc | ||
![]() |
7efe62ee80 | ||
![]() |
febb21a01d | ||
![]() |
cb4e6159c4 | ||
![]() |
1164ea52f9 | ||
![]() |
0f75024e03 | ||
![]() |
1e09a1768e | ||
![]() |
7c78d963d9 | ||
![]() |
b57ecae565 | ||
![]() |
89317d4abc | ||
![]() |
c5dd3dc7a9 | ||
![]() |
ccc46971b4 | ||
![]() |
6ad4b425e4 | ||
![]() |
761e01c3b9 | ||
![]() |
70b9330b61 | ||
![]() |
f1e8667945 | ||
![]() |
509f501696 | ||
![]() |
3fe0368486 | ||
![]() |
8f027e274e | ||
![]() |
3b0045917c | ||
![]() |
a102fc9cad | ||
![]() |
f6bca68da2 | ||
![]() |
d921e2e61b | ||
![]() |
0f7ed0ec70 | ||
![]() |
49b12ea4f8 | ||
![]() |
69fc466323 | ||
![]() |
81d00f2e97 | ||
![]() |
ded6540422 | ||
![]() |
583a028529 | ||
![]() |
f1bb56e2fb | ||
![]() |
f583dd47ac | ||
![]() |
7e3b3453c0 | ||
![]() |
abc354f516 | ||
![]() |
79efffe12f | ||
![]() |
25130db371 | ||
![]() |
932eb94f9d | ||
![]() |
9bf4eff173 | ||
![]() |
9fc3ddeab7 | ||
![]() |
98fdbec442 | ||
![]() |
332b90d6c1 | ||
![]() |
db2e03eb14 | ||
![]() |
8ed8b94ec7 | ||
![]() |
63c9308f59 | ||
![]() |
1306a777fc | ||
![]() |
f739ed7581 | ||
![]() |
b4d6015464 | ||
![]() |
b9aaafdb30 | ||
![]() |
71aa6c6e92 | ||
![]() |
f98d2631e5 | ||
![]() |
9e94c81ef2 | ||
![]() |
d025ef11f8 | ||
![]() |
fe7536e374 | ||
![]() |
14256137e8 | ||
![]() |
bc3e43ac58 | ||
![]() |
d0d5373be9 | ||
![]() |
997267bad1 | ||
![]() |
ef6d0cc4b1 | ||
![]() |
ffad244e1e | ||
![]() |
fdee7c3d06 | ||
![]() |
142cde975f | ||
![]() |
004907d306 | ||
![]() |
05eb0d0fbe | ||
![]() |
f13a1b04e6 | ||
![]() |
fd4408e572 | ||
![]() |
a84ab7413c | ||
![]() |
62b593da08 | ||
![]() |
0eb69b6659 | ||
![]() |
67b83388b1 | ||
![]() |
ecc998aea8 | ||
![]() |
6956d16f0e | ||
![]() |
f1bc4f5c20 | ||
![]() |
f134e2d02a | ||
![]() |
6ec72ef945 | ||
![]() |
e8d518cd6c | ||
![]() |
b564433ff6 | ||
![]() |
79f7dcd1a3 | ||
![]() |
23ee9b7867 | ||
![]() |
afbf36900f | ||
![]() |
2829851e49 | ||
![]() |
2b8fda3511 | ||
![]() |
d31959990e | ||
![]() |
26c535db84 | ||
![]() |
ea1b910d7e | ||
![]() |
8f4c6fb6ac | ||
![]() |
9b1861417c | ||
![]() |
448989f32f | ||
![]() |
2fc26bc154 | ||
![]() |
1812249d37 | ||
![]() |
14bbaccb9f | ||
![]() |
d2b03afcf4 | ||
![]() |
1cac3895dc | ||
![]() |
01aab25889 | ||
![]() |
96d731dfc7 | ||
![]() |
8080c32b1f | ||
![]() |
4b27aec196 | ||
![]() |
38fb510375 | ||
![]() |
6422e31b10 | ||
![]() |
c0f47195a2 | ||
![]() |
40f66977c7 | ||
![]() |
e518c0dc14 | ||
![]() |
2e161a1f45 | ||
![]() |
5ab6e84044 | ||
![]() |
e1a6347c4e | ||
![]() |
bf8e8798d9 | ||
![]() |
08949ee347 | ||
![]() |
92a67bb8cb | ||
![]() |
363bbf5fd3 | ||
![]() |
77f6940336 | ||
![]() |
e8eeac6735 | ||
![]() |
775fbc9a75 | ||
![]() |
8d0f2d371d | ||
![]() |
8efe2859b8 | ||
![]() |
441c68ead2 | ||
![]() |
882b235a78 | ||
![]() |
4cd1f201f5 | ||
![]() |
013c59f904 | ||
![]() |
57474e2dab | ||
![]() |
139ced885d | ||
![]() |
10b1da135e | ||
![]() |
f0bb2e8687 | ||
![]() |
4643ccef6f | ||
![]() |
753ca7cb53 | ||
![]() |
87d2f33e55 | ||
![]() |
fc7944d287 | ||
![]() |
376e5c1546 | ||
![]() |
e8ad947d37 | ||
![]() |
067528211f | ||
![]() |
92ab9cae27 | ||
![]() |
fa2b11b768 | ||
![]() |
82f43ac6a6 | ||
![]() |
c7660b8c2d | ||
![]() |
847831c195 | ||
![]() |
e0b246431f | ||
![]() |
3b1c4b043d | ||
![]() |
e8b8391868 | ||
![]() |
cd0a87785e | ||
![]() |
c808beec30 | ||
![]() |
2d4a3c2554 | ||
![]() |
b2b9938484 | ||
![]() |
eb1cefe2fa | ||
![]() |
5eb5dbddde | ||
![]() |
bfe3eff5ff | ||
![]() |
e7936e6c9a | ||
![]() |
514f92e6f2 | ||
![]() |
68fd7a031f | ||
![]() |
95f61542b5 | ||
![]() |
9fc6f19702 | ||
![]() |
4038617d59 | ||
![]() |
98ccd577d6 | ||
![]() |
1d43a2362c | ||
![]() |
0ff675171b | ||
![]() |
59594c6637 | ||
![]() |
9595733563 | ||
![]() |
5eb1d49857 | ||
![]() |
fa1fdbf73e | ||
![]() |
52e52b3ca1 | ||
![]() |
5b4fbe32b1 | ||
![]() |
31ea44ccf1 | ||
![]() |
7fdb6e1425 | ||
![]() |
621f049a5c | ||
![]() |
d26ca194b3 | ||
![]() |
a012e26d63 | ||
![]() |
f80b1fb2fe | ||
![]() |
38ed07caa7 | ||
![]() |
72ee4be495 | ||
![]() |
c85b97a484 | ||
![]() |
c7510c628f | ||
![]() |
3ca1e550fe | ||
![]() |
01e8944077 | ||
![]() |
d6ab3298a3 | ||
![]() |
97b28bba4d | ||
![]() |
7f6674a0e6 | ||
![]() |
2c1df5f875 | ||
![]() |
e7ae215ab0 | ||
![]() |
4a9c790652 | ||
![]() |
91ca680911 | ||
![]() |
01376aba86 | ||
![]() |
d56ffa3531 | ||
![]() |
5a5a24bf1a | ||
![]() |
3d2c65b398 | ||
![]() |
bacb35fb1c | ||
![]() |
0a2ed805a2 | ||
![]() |
e70c153cd3 | ||
![]() |
b54c2b7f57 | ||
![]() |
3fe80ec5ac | ||
![]() |
e52048c69e | ||
![]() |
ceb930aed6 | ||
![]() |
e775037366 | ||
![]() |
4357e02c58 | ||
![]() |
67c0ceedc9 | ||
![]() |
0039312a64 | ||
![]() |
57f1152751 | ||
![]() |
bfb9be1225 | ||
![]() |
8837b54aab | ||
![]() |
8ab5a4d394 | ||
![]() |
29bcf94d50 | ||
![]() |
dd68bf8eeb | ||
![]() |
fc4dd4524a | ||
![]() |
c12ac64678 | ||
![]() |
264044272a | ||
![]() |
c74162c586 | ||
![]() |
fa6ff4e5eb | ||
![]() |
01bbc50c68 | ||
![]() |
e5457e5029 | ||
![]() |
b025bdf0c7 | ||
![]() |
600e156c4c | ||
![]() |
13ba708adc | ||
![]() |
edf8bf2c9d | ||
![]() |
c9e0bf4f02 | ||
![]() |
8f9eaa22e6 | ||
![]() |
3fcd580491 | ||
![]() |
cf3cc2e984 | ||
![]() |
76322d8089 | ||
![]() |
9e29d8d692 | ||
![]() |
5d5f8b4d51 | ||
![]() |
4d74be881d | ||
![]() |
425a312151 | ||
![]() |
ea294e8e5d | ||
![]() |
e75d0de135 | ||
![]() |
81cacbd917 | ||
![]() |
c0c78ae9bb | ||
![]() |
eb572e8d8f | ||
![]() |
781c499806 | ||
![]() |
a3d74ea444 | ||
![]() |
86a19aa037 | ||
![]() |
e484339cca | ||
![]() |
6b5a1d0202 | ||
![]() |
24247fd6a6 | ||
![]() |
2af20d5c40 | ||
![]() |
dfb983c3cf | ||
![]() |
e1a6b69f9a | ||
![]() |
8df935f5fe | ||
![]() |
04c5acd1d7 | ||
![]() |
c9766d25ef | ||
![]() |
aaea661b70 | ||
![]() |
7061859112 | ||
![]() |
66c24af3d2 | ||
![]() |
083c315fd6 | ||
![]() |
29b44a181b | ||
![]() |
4fdc5ea646 | ||
![]() |
e17bfa029c | ||
![]() |
279e4c2fa8 | ||
![]() |
856a39855e | ||
![]() |
4a9d21062a | ||
![]() |
ad8f3aa6c9 | ||
![]() |
43f85408be | ||
![]() |
5739caaa5a | ||
![]() |
73cfa5499d | ||
![]() |
8f0323fb8d | ||
![]() |
83d16932a4 | ||
![]() |
84e3f6ca18 | ||
![]() |
5d6a568308 | ||
![]() |
3e8cba745a | ||
![]() |
be4d12789d | ||
![]() |
00fbfb5a56 | ||
![]() |
27d0f7f277 | ||
![]() |
fb1aab2a49 | ||
![]() |
cc72fa4793 | ||
![]() |
e9c60eff85 | ||
![]() |
5b7c87ee79 | ||
![]() |
c8b4685fc9 | ||
![]() |
561d5675f7 | ||
![]() |
c906cb57ee | ||
![]() |
84de865daf | ||
![]() |
24a264d78c | ||
![]() |
62c3c7ac21 | ||
![]() |
a7d6ad5162 | ||
![]() |
0dbb212d13 | ||
![]() |
8002cc2771 | ||
![]() |
8d64eac853 | ||
![]() |
80d1c5b9f5 | ||
![]() |
7175f27da8 | ||
![]() |
d6f9aace8c | ||
![]() |
aeccb5b472 | ||
![]() |
09a7b7718a | ||
![]() |
ef2c76efaf | ||
![]() |
69793049c3 | ||
![]() |
67942a906a | ||
![]() |
6a9cae3de8 | ||
![]() |
0afdac5683 | ||
![]() |
609d09a8e2 | ||
![]() |
01e8654fbd | ||
![]() |
f477ab84d5 | ||
![]() |
9f59d4baa3 | ||
![]() |
2e9a1d958c | ||
![]() |
e4f2c58933 | ||
![]() |
a9e8b3e06b | ||
![]() |
daa5b7827a | ||
![]() |
dd00152485 | ||
![]() |
df52a6ea6b | ||
![]() |
7d5197e6fd | ||
![]() |
81e08d0cc4 | ||
![]() |
32a159d48f | ||
![]() |
44f3a7484d | ||
![]() |
38eb8e40ea | ||
![]() |
fd14c8cdce | ||
![]() |
eb6968fb3f | ||
![]() |
216da63276 | ||
![]() |
08d8f2564a | ||
![]() |
1d51002173 | ||
![]() |
610d0b272e | ||
![]() |
b3e2418b93 | ||
![]() |
464d0e50b0 | ||
![]() |
7411c54f9e | ||
![]() |
7c74deb700 | ||
![]() |
e63165e80f | ||
![]() |
e2bc9dfacd | ||
![]() |
48789dbab7 | ||
![]() |
196f0f0475 | ||
![]() |
085b59f2e1 | ||
![]() |
2fdc2664ff | ||
![]() |
a33a5c5527 | ||
![]() |
a7c0f37904 | ||
![]() |
4889ab3462 | ||
![]() |
3923deeaad | ||
![]() |
80d6fff0ca | ||
![]() |
fe43b4da39 | ||
![]() |
67afd05e22 | ||
![]() |
0fcaf20221 | ||
![]() |
0277b94b37 | ||
![]() |
6a9d5fd4cc | ||
![]() |
a83106f717 | ||
![]() |
4c2a6e346d | ||
![]() |
cae63a7ada | ||
![]() |
c7efa8c4f1 | ||
![]() |
bf6645e829 | ||
![]() |
ea1b42510c | ||
![]() |
72818ffa42 | ||
![]() |
985308bf0c | ||
![]() |
86381696f4 | ||
![]() |
08b960cc6e | ||
![]() |
731c65cd59 | ||
![]() |
a85e8a29ff | ||
![]() |
22b2f52f8c | ||
![]() |
a713ce2126 | ||
![]() |
4fac3cf304 | ||
![]() |
74e20a8c52 | ||
![]() |
8cf4ba25f5 | ||
![]() |
feb65cf8f3 | ||
![]() |
93592d23f4 | ||
![]() |
338a4837bc | ||
![]() |
8e19fe535c | ||
![]() |
2aeccc0c5c | ||
![]() |
8db1234a59 | ||
![]() |
80fb351ad3 | ||
![]() |
523f85d4d1 | ||
![]() |
bfff500915 | ||
![]() |
3e83bb0d95 | ||
![]() |
bdaee25e61 | ||
![]() |
71d3227791 | ||
![]() |
a28aa6a8c4 | ||
![]() |
292e103073 | ||
![]() |
39a3f03e79 | ||
![]() |
404a6c12a6 | ||
![]() |
8271409afe | ||
![]() |
985f659026 | ||
![]() |
7c36cbffd0 | ||
![]() |
285ea4e3fd | ||
![]() |
8ce18647f1 | ||
![]() |
aee0478235 | ||
![]() |
c3cf1d81c2 | ||
![]() |
c2b6cec37d | ||
![]() |
b265cabc22 | ||
![]() |
463dd8ea74 | ||
![]() |
0263125e11 | ||
![]() |
1fc8e4c148 | ||
![]() |
c43bca6007 | ||
![]() |
4c31636d19 | ||
![]() |
3a61ab59f2 | ||
![]() |
1db3c57ef0 | ||
![]() |
eeaf3496d5 | ||
![]() |
70f421b787 | ||
![]() |
86fa629591 | ||
![]() |
553b80164b | ||
![]() |
8518933ca8 | ||
![]() |
ea53b7d4ad | ||
![]() |
37a96d063f | ||
![]() |
b360920472 | ||
![]() |
9e1744f904 | ||
![]() |
85a468bda9 | ||
![]() |
7955ef8105 | ||
![]() |
80cd41893b | ||
![]() |
9b09f2ad71 | ||
![]() |
c45d9559c4 | ||
![]() |
f0d978b4c6 | ||
![]() |
8734f4bbe3 | ||
![]() |
9f03280075 | ||
![]() |
427ac4ef35 | ||
![]() |
d9c4495e8e | ||
![]() |
d09070b61d | ||
![]() |
d6855a6b50 | ||
![]() |
9be970a4c4 | ||
![]() |
b236bb407b | ||
![]() |
8978187c64 | ||
![]() |
eba0b07782 | ||
![]() |
1f77e00df4 | ||
![]() |
41c70cc85d | ||
![]() |
5bc0a8fba1 | ||
![]() |
687020e595 | ||
![]() |
8c75b96c38 | ||
![]() |
6f7a01bc53 | ||
![]() |
5383a0af0b | ||
![]() |
3e50466024 | ||
![]() |
45b703daf6 | ||
![]() |
f1e1f6424a | ||
![]() |
460f031cef | ||
![]() |
25aaf4e48b | ||
![]() |
a26baa3061 | ||
![]() |
138513d790 | ||
![]() |
1e5dc01825 | ||
![]() |
8c4b1b967d | ||
![]() |
7faa107547 | ||
![]() |
85ccc2384f | ||
![]() |
469a5b1974 | ||
![]() |
80161c36c6 | ||
![]() |
aea912f499 | ||
![]() |
156d7139fa | ||
![]() |
0ad3d0247d | ||
![]() |
092f9170cc | ||
![]() |
b820e9a888 | ||
![]() |
b9cd55188e | ||
![]() |
ebd45dfae3 | ||
![]() |
40195b2d98 | ||
![]() |
0b0305eaed | ||
![]() |
950997ea66 | ||
![]() |
be4beb41b6 | ||
![]() |
c55f87c962 | ||
![]() |
bdc85b435c | ||
![]() |
522d6d8b01 | ||
![]() |
e98838ad7e | ||
![]() |
3829565ea0 | ||
![]() |
c16a8dacd0 | ||
![]() |
02db971b7c | ||
![]() |
0d522aae6c | ||
![]() |
fdb0f01b38 | ||
![]() |
376cba696e | ||
![]() |
cade272501 | ||
![]() |
4f828fbe00 | ||
![]() |
3d348c63d9 | ||
![]() |
fe10c19956 | ||
![]() |
9ada979484 | ||
![]() |
2926cb7682 | ||
![]() |
8c15cc1c17 | ||
![]() |
bea4fb6ae6 | ||
![]() |
cafc64534b | ||
![]() |
327fc742d3 | ||
![]() |
0c5df29417 | ||
![]() |
cce896e900 | ||
![]() |
50c0f9e622 | ||
![]() |
10ec67854e | ||
![]() |
a3c4a10721 | ||
![]() |
e327f7ba2c | ||
![]() |
9a65f02d5b | ||
![]() |
d1fc9c5880 | ||
![]() |
3c9ae68314 | ||
![]() |
5e7c2c11f6 | ||
![]() |
053b6ab8c6 | ||
![]() |
5814743d59 | ||
![]() |
fa7613b8d1 | ||
![]() |
d3d05d613d | ||
![]() |
23b5cd5b72 | ||
![]() |
d4a33603ab | ||
![]() |
39724de6e6 | ||
![]() |
156adaa1a0 | ||
![]() |
3868243c2a | ||
![]() |
243f539439 | ||
![]() |
71d92c8d1b | ||
![]() |
e840d42fb9 | ||
![]() |
750c4ffbd3 | ||
![]() |
d043a4f410 | ||
![]() |
4c3ba0fe3d | ||
![]() |
a314f55a17 | ||
![]() |
78a9811fe3 | ||
![]() |
6277639ded | ||
![]() |
d1c807487a | ||
![]() |
fe92abde0e | ||
![]() |
098c954ef1 | ||
![]() |
01396923f1 | ||
![]() |
e0de66b1be | ||
![]() |
77675b361f | ||
![]() |
e2dd058430 | ||
![]() |
a188125982 | ||
![]() |
9e5f079cf2 | ||
![]() |
51a948bfcf | ||
![]() |
9d27d49c1f | ||
![]() |
761f6568fa | ||
![]() |
ee94b296ae | ||
![]() |
b387946d34 | ||
![]() |
46afe5153f | ||
![]() |
68be87724a | ||
![]() |
8c9f2af855 | ||
![]() |
594f0b10ba | ||
![]() |
79e98db3bd | ||
![]() |
a57fd69fb4 | ||
![]() |
b73eb9438d | ||
![]() |
920e560b4b | ||
![]() |
0d33f8b460 | ||
![]() |
5b58850c31 | ||
![]() |
17746f35f9 | ||
![]() |
ca0b211854 | ||
![]() |
54cb26ff03 | ||
![]() |
a7ff73dbfd | ||
![]() |
815dd0f706 | ||
![]() |
7455dc93ac | ||
![]() |
337662bd40 | ||
![]() |
91305771bc | ||
![]() |
98ed80d305 | ||
![]() |
5313e1861a | ||
![]() |
d8665366ef | ||
![]() |
c216f29fb0 | ||
![]() |
302fde6004 | ||
![]() |
14ddf37988 | ||
![]() |
87568b6590 | ||
![]() |
37aa41afae | ||
![]() |
41968918bb | ||
![]() |
8fd48a88be | ||
![]() |
10c35f354e | ||
![]() |
9ee7740fcc | ||
![]() |
94b086de20 | ||
![]() |
c90696e67e | ||
![]() |
8378789f6a | ||
![]() |
059bb7622d | ||
![]() |
cece83328a | ||
![]() |
4a12b0ab2d | ||
![]() |
f6e2dd1480 | ||
![]() |
f04b5fd42f | ||
![]() |
5994cd8ea2 | ||
![]() |
83f33a7d1b | ||
![]() |
f80e1bd214 | ||
![]() |
97672f06de | ||
![]() |
6039484a02 | ||
![]() |
7682ebd245 | ||
![]() |
7c581ec108 | ||
![]() |
910d22daa6 | ||
![]() |
979102a2d9 | ||
![]() |
98be89a20a | ||
![]() |
0264383ad2 | ||
![]() |
e2ea217bc5 | ||
![]() |
fa75c79d34 | ||
![]() |
0c86a4e608 | ||
![]() |
031585be3f | ||
![]() |
92a87a5ed2 | ||
![]() |
4c26e597e4 | ||
![]() |
5108bf1742 | ||
![]() |
6215faa06c | ||
![]() |
fee1fed0a1 | ||
![]() |
50dcf308a2 | ||
![]() |
486e720e00 | ||
![]() |
a6c09e2dac | ||
![]() |
43e4dc8170 | ||
![]() |
5c4d72ec42 | ||
![]() |
114806db55 | ||
![]() |
0ff7170ab1 | ||
![]() |
6b2f084cda | ||
![]() |
907106156f | ||
![]() |
50a026183d | ||
![]() |
716d795970 | ||
![]() |
fcfdcd1025 | ||
![]() |
af119db1d7 | ||
![]() |
122e80fae9 | ||
![]() |
8fceffd6fd | ||
![]() |
f778c48923 | ||
![]() |
19cd3a17df | ||
![]() |
ea91a62c89 | ||
![]() |
cef791ba1b | ||
![]() |
f78a7fa630 | ||
![]() |
ac59382b84 | ||
![]() |
68175c1cf0 | ||
![]() |
aeca8dc5b2 | ||
![]() |
e75ef086af | ||
![]() |
14a2171035 | ||
![]() |
0cdd866393 | ||
![]() |
24c1cfbf72 | ||
![]() |
31899d2ab9 | ||
![]() |
16c44f3a30 | ||
![]() |
1b4bde4e78 | ||
![]() |
ff9ae57f39 | ||
![]() |
71add5a7c2 | ||
![]() |
ce2719d77e | ||
![]() |
8193a0df63 | ||
![]() |
48a5107296 | ||
![]() |
ebd589c9cb | ||
![]() |
1f15368b7b | ||
![]() |
8fe1a76ec6 | ||
![]() |
83faf119a9 | ||
![]() |
0a05534c84 | ||
![]() |
137fbb34d9 | ||
![]() |
d45ce19b04 | ||
![]() |
7153506ddb | ||
![]() |
0483d3ff32 | ||
![]() |
7e784ce9a7 | ||
![]() |
8343d9cc18 | ||
![]() |
db0ecd92ca | ||
![]() |
b5140cfecd | ||
![]() |
36aea35a92 | ||
![]() |
1984436b41 | ||
![]() |
8ba2f5f964 | ||
![]() |
c923d35a1f | ||
![]() |
c550779472 | ||
![]() |
90d3c9ced0 | ||
![]() |
43cbc09f1f | ||
![]() |
feea084c60 | ||
![]() |
d403a83a24 | ||
![]() |
35fc27cfb0 | ||
![]() |
81742565a4 | ||
![]() |
923d0b7c80 | ||
![]() |
d416465371 | ||
![]() |
2586c543d3 | ||
![]() |
c32bc26328 | ||
![]() |
4074c71b6a | ||
![]() |
a7493d1039 | ||
![]() |
d7cab6a8d8 | ||
![]() |
eddc12693a | ||
![]() |
ced3898499 | ||
![]() |
318a5df109 | ||
![]() |
b2e9981313 | ||
![]() |
5f092e37f9 | ||
![]() |
81bbef04dc | ||
![]() |
74f43639ad | ||
![]() |
fc342bd458 | ||
![]() |
adfbf5b49f | ||
![]() |
2cb7bb84f7 | ||
![]() |
84d1792e7f | ||
![]() |
531859ac60 | ||
![]() |
b5bf0d7e1d | ||
![]() |
bf071d65d7 | ||
![]() |
e4aa7a90c7 | ||
![]() |
6d4e3c5633 | ||
![]() |
19f9b4f502 | ||
![]() |
2b8837609b | ||
![]() |
f3dbb19364 | ||
![]() |
0a831ec84e | ||
![]() |
0c656abb8e | ||
![]() |
7a7a90bf79 | ||
![]() |
908dff3931 | ||
![]() |
a786cff036 | ||
![]() |
28802805f8 | ||
![]() |
f59099395f | ||
![]() |
0fe3fe7594 | ||
![]() |
467dacd35a | ||
![]() |
173150591d | ||
![]() |
e4d94b1a4e | ||
![]() |
75e34a5a8e | ||
![]() |
d6121c8e21 | ||
![]() |
b4d77df1be | ||
![]() |
e6021465f6 | ||
![]() |
22ec70e94d | ||
![]() |
a1a70a94a8 | ||
![]() |
a65ed7e914 | ||
![]() |
4545b8e92d | ||
![]() |
ba0c0fb109 | ||
![]() |
18d530021c | ||
![]() |
31bb70e333 | ||
![]() |
a919a039e5 | ||
![]() |
aacb1f46a8 | ||
![]() |
96862cbcb3 | ||
![]() |
10f79e1307 | ||
![]() |
e0ee3dce40 | ||
![]() |
13e7d2e7ac | ||
![]() |
a7723373a0 | ||
![]() |
7e469ead45 | ||
![]() |
5397a4e410 | ||
![]() |
99b59f0126 | ||
![]() |
d46c7eb8fe | ||
![]() |
e4a1fc9d95 | ||
![]() |
276f50a944 | ||
![]() |
40fcd93312 | ||
![]() |
807e4d4af9 | ||
![]() |
480348f11a | ||
![]() |
30613b7064 | ||
![]() |
79189dcc83 | ||
![]() |
c2210330b6 | ||
![]() |
917f459569 | ||
![]() |
0ced9ba799 | ||
![]() |
5e95277d7c | ||
![]() |
efb417dba7 | ||
![]() |
5c2d4c4d9d | ||
![]() |
e8bd9920fd | ||
![]() |
69ed531a5c | ||
![]() |
b967d7c148 | ||
![]() |
90150c42ed | ||
![]() |
8e2fd9ccce | ||
![]() |
567ffad41d | ||
![]() |
3c306a0971 | ||
![]() |
c0d6c8aeb3 | ||
![]() |
b27b49e4f3 | ||
![]() |
7ed0dbcf1a | ||
![]() |
8a23de6b20 | ||
![]() |
6cc3089204 | ||
![]() |
093e95c078 | ||
![]() |
7c8ac04e35 | ||
![]() |
dc88f8b172 | ||
![]() |
a00ac6b9ca | ||
![]() |
c94f0ded27 | ||
![]() |
b553aa2159 | ||
![]() |
a7bd2666f0 | ||
![]() |
fe2fc60581 | ||
![]() |
ce59c05d5b | ||
![]() |
a4858bc702 | ||
![]() |
a2bb58a991 | ||
![]() |
f7b41227d2 | ||
![]() |
5b1a6831d5 | ||
![]() |
42b1bbe414 | ||
![]() |
ac86fe80c8 | ||
![]() |
db9f20a22f | ||
![]() |
b30e025bda | ||
![]() |
5f3eb4871a | ||
![]() |
9a223532c5 | ||
![]() |
cf67b592da | ||
![]() |
e867bfbc82 | ||
![]() |
f341f43427 | ||
![]() |
9a671851df | ||
![]() |
4b92f78cc8 | ||
![]() |
c585982557 | ||
![]() |
6bf22e7ad0 | ||
![]() |
2f8dccf7f6 | ||
![]() |
027768d97d | ||
![]() |
085f63b8c5 | ||
![]() |
6f7c337e00 | ||
![]() |
16a968f3bb | ||
![]() |
d7e0167fed | ||
![]() |
41c4f515cf | ||
![]() |
d9a8218372 | ||
![]() |
dd9bd4da8b | ||
![]() |
cf98500b7f | ||
![]() |
2ce8facc05 | ||
![]() |
d1b117d07c | ||
![]() |
c0377c7ebf | ||
![]() |
a2490a5730 | ||
![]() |
177334ba62 | ||
![]() |
f7f00293cc | ||
![]() |
7bce588767 | ||
![]() |
4bb67c634f | ||
![]() |
3653afbcc4 | ||
![]() |
1f4a4ea09f | ||
![]() |
3d38add4b4 | ||
![]() |
124b7eefb5 | ||
![]() |
b52924048c | ||
![]() |
93393f5dff | ||
![]() |
275a75ebaa | ||
![]() |
3e4a7a19cc | ||
![]() |
734af457f3 | ||
![]() |
55bdb1f47a | ||
![]() |
adff0d199d | ||
![]() |
f95b3262a0 | ||
![]() |
794a14e76c | ||
![]() |
ba857b5ef7 | ||
![]() |
2aed04a8c2 | ||
![]() |
5f9e6b51da | ||
![]() |
e7b5c99ed6 | ||
![]() |
9c0b3d35be | ||
![]() |
a54bc96eab | ||
![]() |
a2a8e4b965 | ||
![]() |
81ad2c61d9 | ||
![]() |
32616493b3 | ||
![]() |
05183ffd0f | ||
![]() |
e72ddc9439 | ||
![]() |
32e3caecac | ||
![]() |
df43389183 | ||
![]() |
19b77809ec | ||
![]() |
be05b827f3 | ||
![]() |
5dfc6f822d | ||
![]() |
c3e004da03 | ||
![]() |
8bae73b6ea | ||
![]() |
d1e19d3b63 | ||
![]() |
ffca897ddf | ||
![]() |
4277b6e262 | ||
![]() |
506c4ce701 | ||
![]() |
d251e58984 | ||
![]() |
4a1213c081 | ||
![]() |
8b7609255c | ||
![]() |
ef78fe0653 | ||
![]() |
70b3ccb422 | ||
![]() |
81d6b367fe | ||
![]() |
0a78ae60be | ||
![]() |
a61830a860 | ||
![]() |
86bae9ddc9 | ||
![]() |
033780862a | ||
![]() |
6094d8a74e | ||
![]() |
356ca3d177 | ||
![]() |
d69806faa9 | ||
![]() |
ab67635dcb | ||
![]() |
cee3d49458 | ||
![]() |
5b53a7aef7 | ||
![]() |
9b29665cc0 | ||
![]() |
f447c87b45 | ||
![]() |
e3eea45d86 | ||
![]() |
f61a06ce0a | ||
![]() |
539842aa99 | ||
![]() |
5925f1d2aa | ||
![]() |
61eb150825 | ||
![]() |
cf95de4d27 | ||
![]() |
fdad7ec1ba | ||
![]() |
850efb4237 | ||
![]() |
853cb3887f | ||
![]() |
412f2c1664 | ||
![]() |
2810a69bd4 | ||
![]() |
5347f95f50 | ||
![]() |
6b469f0621 | ||
![]() |
0021562c93 | ||
![]() |
f2bd2b0a59 | ||
![]() |
647eb8bbf5 | ||
![]() |
816d13ae3f | ||
![]() |
578fea4a9c | ||
![]() |
1a660d9a4a | ||
![]() |
227ac6d9e3 | ||
![]() |
bb57407733 | ||
![]() |
13ddcce0a2 | ||
![]() |
53767a78d1 | ||
![]() |
5600e8a2ad | ||
![]() |
c6ed52c592 | ||
![]() |
3ad14e4adf | ||
![]() |
8a22bdea5d | ||
![]() |
6135a3c3e2 | ||
![]() |
1e3c979303 | ||
![]() |
d0228406b6 | ||
![]() |
507a2237b7 | ||
![]() |
c15c597d99 | ||
![]() |
7c26cd3270 | ||
![]() |
938af73059 | ||
![]() |
1c047366d2 | ||
![]() |
cb20f0cbb0 | ||
![]() |
468251c84e | ||
![]() |
ca86ae0c9a | ||
![]() |
59221b0b4e | ||
![]() |
d3e0640400 | ||
![]() |
bcb72321f5 | ||
![]() |
4060af715d | ||
![]() |
2ec0237e83 | ||
![]() |
c5593880f2 | ||
![]() |
3673cbce4f | ||
![]() |
1f6f7be4b2 | ||
![]() |
580cce3506 | ||
![]() |
36ba546fc6 | ||
![]() |
7f37799cbe | ||
![]() |
5570eeeff9 | ||
![]() |
2b186ce6e0 | ||
![]() |
72938fed69 | ||
![]() |
d54c806e03 | ||
![]() |
7eb3551485 | ||
![]() |
57abe27895 | ||
![]() |
a628a36082 | ||
![]() |
0d3e04ff25 | ||
![]() |
0c78a3f7b0 | ||
![]() |
fb1f574c26 | ||
![]() |
7f15c18fca | ||
![]() |
e274650956 | ||
![]() |
2a1db4a338 | ||
![]() |
0b6ea9ec61 | ||
![]() |
257a826d45 | ||
![]() |
e9f48f5134 | ||
![]() |
fcf04624d4 | ||
![]() |
16218d6dc5 | ||
![]() |
071f33e3cd | ||
![]() |
6d15389da8 | ||
![]() |
2e8530ec00 | ||
![]() |
4edd1c5497 | ||
![]() |
8e693b8b42 | ||
![]() |
29376066e8 | ||
![]() |
a44f3071bf | ||
![]() |
b66047e084 | ||
![]() |
f0ca916432 | ||
![]() |
c88b4032ef | ||
![]() |
6f5e99be6f | ||
![]() |
fd4c37e9b3 | ||
![]() |
7a8dab2d58 | ||
![]() |
6f3dfad550 | ||
![]() |
18fb0a13d7 | ||
![]() |
e88f9ae03b | ||
![]() |
30c010ad3f | ||
![]() |
e84e70bdc6 | ||
![]() |
1e6b6165ae | ||
![]() |
c6d149d091 | ||
![]() |
d55d8d78de | ||
![]() |
eff59f7b5e | ||
![]() |
a7a5437245 | ||
![]() |
6671b9e55b | ||
![]() |
2dde1cc589 | ||
![]() |
17866c29ae | ||
![]() |
8dc4e6dc2a | ||
![]() |
1197f44262 | ||
![]() |
a86ed1f801 | ||
![]() |
e98d3423e4 | ||
![]() |
95333d37c8 | ||
![]() |
8bcf0c6498 | ||
![]() |
340b92e32b | ||
![]() |
6e68ab19f9 | ||
![]() |
15fed32d92 | ||
![]() |
897c754dd4 | ||
![]() |
ec1e746a22 | ||
![]() |
001f078ba9 | ||
![]() |
c0ff1e86b9 | ||
![]() |
b5321152fd | ||
![]() |
66d15ea635 | ||
![]() |
72177033d2 | ||
![]() |
06b7072240 | ||
![]() |
4700f35739 | ||
![]() |
bbfa280e86 | ||
![]() |
2669ba944d | ||
![]() |
c8788dbfbe | ||
![]() |
5e7c3b53f8 | ||
![]() |
99348c2300 | ||
![]() |
ab2b9797fd | ||
![]() |
637653ea11 | ||
![]() |
04cb6ba3d0 | ||
![]() |
eb1cddd85a | ||
![]() |
723b230093 | ||
![]() |
7185fae491 | ||
![]() |
0274cd6beb | ||
![]() |
ad2ea0b807 | ||
![]() |
c24999075d | ||
![]() |
773bde14ab | ||
![]() |
00b08318a5 | ||
![]() |
39e5d8ccc2 | ||
![]() |
e25622df4b | ||
![]() |
ea5939c1b7 | ||
![]() |
4734d04d4f | ||
![]() |
493e47f7e6 | ||
![]() |
ef2b32eb05 | ||
![]() |
1da91d44e1 | ||
![]() |
ebd7ab3e46 | ||
![]() |
99bddfdf0a | ||
![]() |
144f48c9a6 | ||
![]() |
8d0d2ba07b | ||
![]() |
a6ad334dc0 | ||
![]() |
468ca30070 | ||
![]() |
7b2d2d9338 | ||
![]() |
0e08819cf3 | ||
![]() |
1d3f7b49dc | ||
![]() |
3566ec7012 | ||
![]() |
f37a36efa4 | ||
![]() |
2ea069cd8c | ||
![]() |
08e111f6dc | ||
![]() |
6339881684 | ||
![]() |
e222538575 | ||
![]() |
c4a67ce420 | ||
![]() |
77e348ba62 | ||
![]() |
bde39d8c37 | ||
![]() |
ebb906c273 | ||
![]() |
46b91bf8b0 | ||
![]() |
7a432b38e9 | ||
![]() |
9b6a201bbb | ||
![]() |
a79d7c8417 | ||
![]() |
7a6e0d651f | ||
![]() |
7476498823 | ||
![]() |
4c7b5d44a0 | ||
![]() |
620bb54881 | ||
![]() |
73be747cbe | ||
![]() |
4d874451c9 | ||
![]() |
3245d620c3 | ||
![]() |
a59f80589a | ||
![]() |
6b269c7559 | ||
![]() |
53cadeab61 | ||
![]() |
e90d388fdb | ||
![]() |
219f059834 | ||
![]() |
dc2dac66a3 | ||
![]() |
e04ee666b8 | ||
![]() |
7d27003bb2 | ||
![]() |
b866c9dd08 | ||
![]() |
d17236fe45 | ||
![]() |
d2580ec87c | ||
![]() |
7c10f414dc | ||
![]() |
2a4717cb7f | ||
![]() |
be9cb8a4da | ||
![]() |
e887363910 | ||
![]() |
a274159726 | ||
![]() |
83384e0de4 | ||
![]() |
748904b8ad | ||
![]() |
3e72df8b1e | ||
![]() |
2921563e9c | ||
![]() |
01c1346696 | ||
![]() |
796e0456ef | ||
![]() |
eeb68497fe | ||
![]() |
7eadb6acad | ||
![]() |
9d588aa7e7 | ||
![]() |
204b5f7f09 | ||
![]() |
e0f53b63ce | ||
![]() |
83f4dbe40e | ||
![]() |
8d8ba68838 | ||
![]() |
3f25940dec | ||
![]() |
745773b207 | ||
![]() |
35f5575595 | ||
![]() |
e4746f8b32 | ||
![]() |
7e0552efde | ||
![]() |
6075b98634 | ||
![]() |
ebe9f518d0 | ||
![]() |
37ceddd11b | ||
![]() |
d1d8b911b9 | ||
![]() |
796e656328 | ||
![]() |
8b869915e7 | ||
![]() |
9b05243d61 | ||
![]() |
81c24510a8 | ||
![]() |
9e7fb4d21a | ||
![]() |
7805f8a9b1 | ||
![]() |
ae7f04578d | ||
![]() |
ce814cffd1 | ||
![]() |
703b310ef0 | ||
![]() |
da6c4ad36a | ||
![]() |
a8c849d38a | ||
![]() |
d8d5e04a51 | ||
![]() |
fa348cb98f | ||
![]() |
f4ec2d8107 | ||
![]() |
de39d828de | ||
![]() |
25d3d0d0ba | ||
![]() |
6f3b1000a7 | ||
![]() |
1ebb8d8d14 | ||
![]() |
4e4acdaecc | ||
![]() |
f7fb03bf56 | ||
![]() |
429aafc7ba | ||
![]() |
acdfede2a8 | ||
![]() |
b822c5a039 | ||
![]() |
8366c4c165 | ||
![]() |
4c7260b043 | ||
![]() |
c878f7dc25 | ||
![]() |
aca21f6ef2 | ||
![]() |
10c582bafb | ||
![]() |
7b3bd26631 | ||
![]() |
731f88da84 | ||
![]() |
b7fb9a65b6 | ||
![]() |
843c24b17a | ||
![]() |
18dbbfc95a | ||
![]() |
5b6e187b49 | ||
![]() |
9025a9b88c | ||
![]() |
07b2891671 | ||
![]() |
c4a739bef6 | ||
![]() |
1008c74cd7 | ||
![]() |
60dc9d27bc | ||
![]() |
9eb0f48a7a | ||
![]() |
7b1fccdd06 | ||
![]() |
64ae07b03b | ||
![]() |
6ecbbd1f79 | ||
![]() |
a1fb268764 | ||
![]() |
868661edf0 | ||
![]() |
9899e63d53 | ||
![]() |
0b37b8b059 | ||
![]() |
1b34ca822f | ||
![]() |
a4e3a874ad | ||
![]() |
8ec3df552a | ||
![]() |
b4b1c9256b | ||
![]() |
acee20d897 | ||
![]() |
6ea3ebb72d | ||
![]() |
55f23e9304 | ||
![]() |
ad223a04f8 | ||
![]() |
0b150ea475 | ||
![]() |
167e9fbc6d | ||
![]() |
77ea160cd9 | ||
![]() |
f9204450f1 | ||
![]() |
21ef76816f | ||
![]() |
f166cfbac8 | ||
![]() |
e5f64710f4 | ||
![]() |
32a5062081 | ||
![]() |
e6bc29281e | ||
![]() |
617ee0afc0 | ||
![]() |
1b47a1a994 | ||
![]() |
5a87cfc25d | ||
![]() |
00a178f7d3 | ||
![]() |
2a2c82e73b | ||
![]() |
bb882ada2c | ||
![]() |
1d42e45d78 | ||
![]() |
15c4a5c9ea | ||
![]() |
f4435f9031 | ||
![]() |
5a423c89a3 | ||
![]() |
8b02154f5a | ||
![]() |
97c454ea77 | ||
![]() |
f07a6d03b5 | ||
![]() |
1f18fb5446 | ||
![]() |
92ee5b66ab | ||
![]() |
fcc92c3e27 | ||
![]() |
3e91b5a793 | ||
![]() |
42e5cc3bef | ||
![]() |
16c61a1919 | ||
![]() |
c2b4b0490b | ||
![]() |
a310a06e3c | ||
![]() |
9228511527 | ||
![]() |
bbc4174501 | ||
![]() |
5f3196b74c | ||
![]() |
725bd8029f | ||
![]() |
479ab5df0e | ||
![]() |
18c45ad30b | ||
![]() |
6f32f098eb | ||
![]() |
e8289d3912 | ||
![]() |
472d9322ce | ||
![]() |
0233ffafb6 | ||
![]() |
468ee4756f | ||
![]() |
abf9365bbe | ||
![]() |
1e0789162f | ||
![]() |
31f407f4e8 | ||
![]() |
77330ffc50 | ||
![]() |
6f132f3fed | ||
![]() |
c193b4f07c | ||
![]() |
c745b845c5 | ||
![]() |
3b69e0dd25 | ||
![]() |
8ec55ef394 | ||
![]() |
ef5084036c | ||
![]() |
7dd317e530 | ||
![]() |
e5db3ed9b7 | ||
![]() |
3a00dc5b5f | ||
![]() |
2d848020fc | ||
![]() |
70123d19fe | ||
![]() |
ea3770260a | ||
![]() |
eea1a80de6 | ||
![]() |
4889775ae6 | ||
![]() |
355effd93d | ||
![]() |
f1583b6e0c | ||
![]() |
347566c311 | ||
![]() |
1f73572dd3 | ||
![]() |
2bfb83c4cd | ||
![]() |
ceed1c4962 | ||
![]() |
2b5b9d3599 | ||
![]() |
96e3709b7b | ||
![]() |
239fc2f6f8 | ||
![]() |
4c77e5cdd2 | ||
![]() |
974f8f692c | ||
![]() |
e97d0b9a69 | ||
![]() |
b0b0a75c87 | ||
![]() |
abcacf8c74 | ||
![]() |
290428b981 | ||
![]() |
37d1541d6b | ||
![]() |
1500ce7490 | ||
![]() |
a48529872d | ||
![]() |
31cffa68c5 | ||
![]() |
6909d1e527 | ||
![]() |
972235bfba | ||
![]() |
6db560fd2c | ||
![]() |
1a64d8aec9 | ||
![]() |
1e1fb32558 | ||
![]() |
008eb5ba4a | ||
![]() |
f46e0acc89 | ||
![]() |
b615ef5810 | ||
![]() |
d773279de8 | ||
![]() |
56d721651a | ||
![]() |
ee17abff92 | ||
![]() |
952bb1a2eb | ||
![]() |
c287813e00 | ||
![]() |
eab4fd80d7 | ||
![]() |
5c8f8869d4 | ||
![]() |
4954dfe107 | ||
![]() |
4eb8094fb8 | ||
![]() |
1dd2423a0b | ||
![]() |
6fcf989c62 | ||
![]() |
67d1a4f643 | ||
![]() |
3df9433baf | ||
![]() |
b12d568147 | ||
![]() |
8691e035a0 | ||
![]() |
2683043762 | ||
![]() |
be5aa59f61 | ||
![]() |
9398dfb7cf | ||
![]() |
ff6d2b30e4 | ||
![]() |
29bb999a32 | ||
![]() |
9320507e26 | ||
![]() |
181fc4fa0a | ||
![]() |
4f3dd4b662 | ||
![]() |
7b09de99ea | ||
![]() |
f9f0da18e1 | ||
![]() |
ba0fdb9478 | ||
![]() |
8c684bca22 | ||
![]() |
1266a75549 | ||
![]() |
3871d5aed7 | ||
![]() |
25d555126d | ||
![]() |
f529d15d7a | ||
![]() |
9eda30fc71 | ||
![]() |
dfd6424d9c | ||
![]() |
fdc961f2de | ||
![]() |
a6d4000d24 | ||
![]() |
e1024e59c3 | ||
![]() |
990164802d | ||
![]() |
34f18fbdb3 | ||
![]() |
17e24bb038 | ||
![]() |
df7e2b7734 | ||
![]() |
1ddef06bd2 | ||
![]() |
18bd910bf0 | ||
![]() |
0db44f6e33 | ||
![]() |
7aac3d38f0 | ||
![]() |
e406b6f780 | ||
![]() |
2dad9666a9 | ||
![]() |
063abf1688 | ||
![]() |
a86f8e9a22 | ||
![]() |
0ce6d4fe92 | ||
![]() |
886f6c721c | ||
![]() |
9d7d089279 | ||
![]() |
0bd624dfa9 | ||
![]() |
8c29760d93 | ||
![]() |
9b893d841d | ||
![]() |
e8c0163153 | ||
![]() |
256568d966 | ||
![]() |
34bed47a52 | ||
![]() |
9b0996fade | ||
![]() |
7c1028df5d | ||
![]() |
eaea60e0cb | ||
![]() |
efab05dcfc | ||
![]() |
d79f77f7e0 | ||
![]() |
f0d459d490 | ||
![]() |
e269c073ac | ||
![]() |
85d5609144 | ||
![]() |
671c593db1 | ||
![]() |
8b14c7a2cb | ||
![]() |
23862419eb | ||
![]() |
43d54db4dd | ||
![]() |
b8b0060440 | ||
![]() |
64d79ceb30 | ||
![]() |
25f7b44d48 | ||
![]() |
ada7e628da | ||
![]() |
76f2338c3d | ||
![]() |
a0ed8036c0 | ||
![]() |
863ce65b10 | ||
![]() |
85190b16cb | ||
![]() |
abc6fd8b2a | ||
![]() |
b6f603154e | ||
![]() |
90cb9d3de1 | ||
![]() |
d47c9a2e29 | ||
![]() |
b7aea96ca0 | ||
![]() |
a5879a4407 | ||
![]() |
0452c69771 | ||
![]() |
4eb9dff45e | ||
![]() |
b7c1e88b59 | ||
![]() |
23814330d9 | ||
![]() |
8bc75aacea | ||
![]() |
17576d223a | ||
![]() |
90e8f0ca63 | ||
![]() |
adc4a811b7 | ||
![]() |
7c80233f26 | ||
![]() |
f05ae2de35 | ||
![]() |
cf9da556a8 | ||
![]() |
32a142bf79 | ||
![]() |
2680d41a3d | ||
![]() |
1550fc4398 | ||
![]() |
f2a85f3b7e | ||
![]() |
49c2b4c196 | ||
![]() |
a8281e174e | ||
![]() |
d7f5c8bd55 | ||
![]() |
b3337df88b | ||
![]() |
d760616e55 | ||
![]() |
914a4d32b4 | ||
![]() |
148f53e21e | ||
![]() |
5e7fa0f964 | ||
![]() |
0973ceb9d2 | ||
![]() |
5214bfe8cb | ||
![]() |
187aaafddc | ||
![]() |
208cb405ca | ||
![]() |
9b9d267cd4 | ||
![]() |
6f90a27f9f | ||
![]() |
4e1dddc06d | ||
![]() |
1f504d6f23 | ||
![]() |
2db1fd813f | ||
![]() |
f39383a3d8 | ||
![]() |
b593bdbf1b | ||
![]() |
4de93ba3c0 | ||
![]() |
2eb7a91987 | ||
![]() |
94e4264c2a | ||
![]() |
e54d28f157 | ||
![]() |
6111c8bde0 | ||
![]() |
3bacdfd4fc | ||
![]() |
65db645ff9 | ||
![]() |
de2e2c45a5 | ||
![]() |
9b655e18e3 | ||
![]() |
fb4b9b5f76 | ||
![]() |
820b39840a | ||
![]() |
4b1052eb70 | ||
![]() |
c0eb3972a7 | ||
![]() |
66ba8d56b7 | ||
![]() |
a73baf32f1 | ||
![]() |
333cf0a2f0 | ||
![]() |
8347d8700a | ||
![]() |
09af0e2448 | ||
![]() |
001914764a | ||
![]() |
6938dd6267 | ||
![]() |
941028ba6f | ||
![]() |
4ca7ed9f8c | ||
![]() |
03d99887c5 | ||
![]() |
293e2ff5e3 | ||
![]() |
55d242fa08 | ||
![]() |
7e9fba2d96 | ||
![]() |
175652f23b | ||
![]() |
3329e0c4a1 | ||
![]() |
3c5ed2c885 | ||
![]() |
c4af93c363 | ||
![]() |
e2685c4503 | ||
![]() |
48b1d3fff8 | ||
![]() |
6c4920949d | ||
![]() |
69447b75af | ||
![]() |
e1104570a9 | ||
![]() |
2c23678fb9 | ||
![]() |
613070d39f | ||
![]() |
6deae64f45 | ||
![]() |
aced2b124c | ||
![]() |
e6b08de2e8 | ||
![]() |
d2d02d0749 | ||
![]() |
28d27801b2 | ||
![]() |
be340dd275 | ||
![]() |
58090fb3de | ||
![]() |
ae33c6cf18 | ||
![]() |
f8cd6afbf8 | ||
![]() |
6fce06906d | ||
![]() |
84694a8bbd | ||
![]() |
1639e68424 | ||
![]() |
ff48fe8b49 | ||
![]() |
efe06267ec | ||
![]() |
53647ea5a8 | ||
![]() |
7742de5af4 | ||
![]() |
724a260f71 | ||
![]() |
cf75e40332 | ||
![]() |
3c67df263c | ||
![]() |
c4ae72c3c1 | ||
![]() |
f6925fc5b8 | ||
![]() |
18be9655d6 | ||
![]() |
6235b6123e | ||
![]() |
b3555385e6 | ||
![]() |
c9fbdb322b | ||
![]() |
94bac7d8db | ||
![]() |
f38119be96 | ||
![]() |
bc1d2ba839 | ||
![]() |
18f5b70b1f | ||
![]() |
7df9b07305 | ||
![]() |
cf01c1fd1f | ||
![]() |
2ce6fe420b | ||
![]() |
f55381d689 | ||
![]() |
c4084c4f97 | ||
![]() |
58b720b004 | ||
![]() |
f6d0c1f05e | ||
![]() |
f4620be859 | ||
![]() |
e2b3a98690 | ||
![]() |
4cd391d5ef | ||
![]() |
01c37c34dd | ||
![]() |
f4827cde0e | ||
![]() |
3e722295b0 | ||
![]() |
0d2eab3ad4 | ||
![]() |
9e1bc631cf | ||
![]() |
ca9fbe2f11 | ||
![]() |
2e28fad102 | ||
![]() |
69760200dd | ||
![]() |
f945ee1288 | ||
![]() |
5e3486c481 | ||
![]() |
c15a943cf4 | ||
![]() |
b8cb29c66c | ||
![]() |
003badcb5a | ||
![]() |
5b2493fa68 | ||
![]() |
bc342b9b33 | ||
![]() |
314615bfef | ||
![]() |
44e82217c1 | ||
![]() |
cbf364f24f | ||
![]() |
44dfcb927b | ||
![]() |
12f615c6da | ||
![]() |
ed6fc4d848 | ||
![]() |
cd515993f5 | ||
![]() |
a918eaac3f | ||
![]() |
9f63e2d39a | ||
![]() |
36248ff046 | ||
![]() |
a88f5113e0 | ||
![]() |
06fb89fae2 | ||
![]() |
733531356f | ||
![]() |
3f8fb30066 | ||
![]() |
1a4a2d2b30 | ||
![]() |
eb6d3b3f8d | ||
![]() |
e8e3363d06 | ||
![]() |
dd55ad61f4 | ||
![]() |
2464bfd70b | ||
![]() |
09bc36bb13 | ||
![]() |
39da89b556 | ||
![]() |
c23de4b3b0 | ||
![]() |
7c79d7f5d7 | ||
![]() |
710507da51 | ||
![]() |
10e95bf1b1 | ||
![]() |
66a893c84e | ||
![]() |
dd6392e380 | ||
![]() |
ea0a0c7c5a | ||
![]() |
b8f7ba62c7 | ||
![]() |
25b318ba00 | ||
![]() |
9add51b59d | ||
![]() |
535a0504d8 | ||
![]() |
365c49d6d2 | ||
![]() |
b70bea48f2 | ||
![]() |
996f8644c4 | ||
![]() |
b3882ec6e3 | ||
![]() |
f87d447397 | ||
![]() |
9d8570d0d2 | ||
![]() |
796755dad8 | ||
![]() |
9387753995 | ||
![]() |
618d36dc07 | ||
![]() |
f11b0be483 | ||
![]() |
1b8b15b136 | ||
![]() |
bb63673cce | ||
![]() |
6770ad68d5 | ||
![]() |
bfe90c58d1 | ||
![]() |
f1cbeb3c29 | ||
![]() |
554ab4ea16 | ||
![]() |
a2becac2e6 | ||
![]() |
67a651f5e9 | ||
![]() |
ac8efe19d8 | ||
![]() |
ffd65d5afa | ||
![]() |
e86677178f | ||
![]() |
3c49a3341a | ||
![]() |
3433b2a73e | ||
![]() |
730988e7b7 | ||
![]() |
2a3b89e596 | ||
![]() |
f1a31bf58c | ||
![]() |
f1b62a9056 | ||
![]() |
dd943d24c8 | ||
![]() |
801320a3f3 | ||
![]() |
222ed2debd | ||
![]() |
7aab782c5f | ||
![]() |
3836f2f353 | ||
![]() |
5bfaa9a5db | ||
![]() |
95581771d6 | ||
![]() |
db5e3f2479 | ||
![]() |
b5a9631bcc | ||
![]() |
4a2d62ece0 | ||
![]() |
c3836decee | ||
![]() |
f7a030c895 | ||
![]() |
f171a692d3 | ||
![]() |
df5e73192b | ||
![]() |
fc1447d614 | ||
![]() |
77fd206b06 | ||
![]() |
23bdc03490 | ||
![]() |
9fe4de5709 | ||
![]() |
54fd601809 | ||
![]() |
63d54e6570 | ||
![]() |
71d027a966 | ||
![]() |
8b63aa2fe6 | ||
![]() |
5a35842c28 | ||
![]() |
d6a1ae3b3a | ||
![]() |
be5f4cb562 | ||
![]() |
d8b5464833 | ||
![]() |
5e7bbcd3bc | ||
![]() |
5383e53c4d | ||
![]() |
5b6fc713d6 | ||
![]() |
272be025e1 | ||
![]() |
e4ab250729 | ||
![]() |
4dcca9d5af | ||
![]() |
1988a08631 | ||
![]() |
34de0e569f | ||
![]() |
343d0fa09d | ||
![]() |
8eb6686103 | ||
![]() |
9e9687b5b8 | ||
![]() |
ef888d1afe | ||
![]() |
0e70e1a37a | ||
![]() |
06aaceb673 | ||
![]() |
703a4b7858 | ||
![]() |
32ba2ba83d | ||
![]() |
272b03ed92 | ||
![]() |
ecf19214ee | ||
![]() |
f3eb0c497f | ||
![]() |
c1f29a7565 | ||
![]() |
fb745b9108 | ||
![]() |
9410bf40d3 | ||
![]() |
c7a695cb04 | ||
![]() |
b991d5cab6 | ||
![]() |
42fd318321 | ||
![]() |
903aeec383 | ||
![]() |
8768fe4dcf | ||
![]() |
d8ba2ceed4 | ||
![]() |
ef8a1bcf47 | ||
![]() |
2b1469e02e | ||
![]() |
83ea91586b | ||
![]() |
dbb86d25e1 | ||
![]() |
794c74e514 | ||
![]() |
fbcdaa77e3 | ||
![]() |
dbdc04c45e | ||
![]() |
a4bb22280f | ||
![]() |
c0e1bbbfb6 | ||
![]() |
196b9dc771 | ||
![]() |
09578b4e46 | ||
![]() |
4d88dadf8c | ||
![]() |
d4fda5847d | ||
![]() |
b1ea7d6cbc | ||
![]() |
4e7632949d | ||
![]() |
26a8bd147b | ||
![]() |
dd726fac02 | ||
![]() |
3a3ecc7775 | ||
![]() |
6665d630ec | ||
![]() |
7706d7471a | ||
![]() |
ed87d6b268 | ||
![]() |
ed51c8b318 | ||
![]() |
6ffbb7b1ed | ||
![]() |
06764db118 | ||
![]() |
4864fa3f2d | ||
![]() |
2d25b6a1f4 | ||
![]() |
be76b3d105 | ||
![]() |
81cbeb4b24 | ||
![]() |
f0b658ba14 | ||
![]() |
295836fc7e | ||
![]() |
54e9858148 | ||
![]() |
b68f015825 | ||
![]() |
87ae26ede3 | ||
![]() |
49615f81b4 | ||
![]() |
87ce5140fa | ||
![]() |
3ba9fb375c | ||
![]() |
f4bd20361a | ||
![]() |
54f8a17aac | ||
![]() |
7a1e5026c4 | ||
![]() |
323161c6de | ||
![]() |
1ac4890893 | ||
![]() |
e9c88fecc5 | ||
![]() |
33deaaefac | ||
![]() |
bb6438ebe4 | ||
![]() |
d42af74afa | ||
![]() |
ea1f2f4ad4 | ||
![]() |
95b45651bb | ||
![]() |
0d5730d33e | ||
![]() |
0625a35ddf | ||
![]() |
2d3271ee13 | ||
![]() |
6da2e80027 | ||
![]() |
439edbf85c | ||
![]() |
e0237a0b86 | ||
![]() |
e1845ba603 | ||
![]() |
1cf757d401 | ||
![]() |
14985b1727 | ||
![]() |
6b2788be57 | ||
![]() |
ac888f4cb2 | ||
![]() |
df06cfc4c5 | ||
![]() |
dcba3a681c | ||
![]() |
7fd49c22a8 | ||
![]() |
314287a6d9 | ||
![]() |
f5e7b8f229 | ||
![]() |
de84db070e | ||
![]() |
c1d5a5cd98 | ||
![]() |
160a04c3c7 | ||
![]() |
23bfc30c57 | ||
![]() |
d9329bffd1 | ||
![]() |
bafc1df988 | ||
![]() |
30b8835919 | ||
![]() |
44b19e75f6 | ||
![]() |
2a558ad11d | ||
![]() |
123d8972e1 | ||
![]() |
e550a8ea27 | ||
![]() |
8b29460fed | ||
![]() |
e380d63c57 | ||
![]() |
89b4f2c4d4 | ||
![]() |
6c2f63f738 | ||
![]() |
77c612f0f5 | ||
![]() |
2d06c01192 | ||
![]() |
d13c19f05f | ||
![]() |
3d2ba05c77 | ||
![]() |
6898b9d9a4 | ||
![]() |
a65aaa6b83 | ||
![]() |
b3136c20c4 | ||
![]() |
0ae3dfd9cc | ||
![]() |
0370fa6c00 | ||
![]() |
7ab323b00c | ||
![]() |
541eb70b9c | ||
![]() |
e53e5ca20e | ||
![]() |
609bf64856 | ||
![]() |
a9fafe91a5 | ||
![]() |
0466b320dd | ||
![]() |
5b74d22d0a | ||
![]() |
4152c7f956 | ||
![]() |
d5f603303d | ||
![]() |
fc9c073a60 | ||
![]() |
9a0c2c40bd | ||
![]() |
d0fc9fda71 | ||
![]() |
df9823988e | ||
![]() |
eeb09c074c | ||
![]() |
af0928e2bd | ||
![]() |
d9cf4de3f7 | ||
![]() |
2d6dd4b3be | ||
![]() |
160312393a | ||
![]() |
e3ff9f9c86 | ||
![]() |
95570d796d | ||
![]() |
cd0d58a915 | ||
![]() |
2f1007c725 | ||
![]() |
b53d5d8c00 | ||
![]() |
3c4a4e5384 | ||
![]() |
0e5f85db95 | ||
![]() |
ad3364671d | ||
![]() |
3add24b8aa | ||
![]() |
e0f02d4080 | ||
![]() |
00c4c10472 | ||
![]() |
a2b8cc9dc2 | ||
![]() |
3465002cbb | ||
![]() |
631cb73305 | ||
![]() |
b3b6384bef | ||
![]() |
941ca575fb | ||
![]() |
2d65c3595d | ||
![]() |
b3812d913a | ||
![]() |
adcc420c81 | ||
![]() |
b97ad99bb4 | ||
![]() |
e93a2850d6 | ||
![]() |
411d0691fa | ||
![]() |
c843e77183 | ||
![]() |
093d6e5336 | ||
![]() |
8a3c752d42 | ||
![]() |
b4e073cde7 | ||
![]() |
814efbf8df | ||
![]() |
11e048abb1 | ||
![]() |
34e7855af6 | ||
![]() |
de54dc27ad | ||
![]() |
790133978d | ||
![]() |
b914d67d9d | ||
![]() |
518eb97e3a | ||
![]() |
f41549ccf1 | ||
![]() |
b69e477ecd | ||
![]() |
0062ff9cfa | ||
![]() |
f8de72f59f | ||
![]() |
7317737e90 | ||
![]() |
5b8eda4805 | ||
![]() |
886a949a00 | ||
![]() |
92e13dafe5 | ||
![]() |
c9be812330 | ||
![]() |
59e7ebabfa | ||
![]() |
1afc48fce3 | ||
![]() |
a1e4ef9e8e | ||
![]() |
5ada0ae2c7 | ||
![]() |
a5312c1341 | ||
![]() |
150e156d26 | ||
![]() |
6d38615ea8 | ||
![]() |
011cc7d337 | ||
![]() |
b747d09836 | ||
![]() |
4b7311bafd | ||
![]() |
eeba9c0a5f | ||
![]() |
11d9a037f7 | ||
![]() |
883e4fcd7c | ||
![]() |
2017e6a3e3 | ||
![]() |
bccfe500b3 | ||
![]() |
5846fbabce | ||
![]() |
52e89c1d1c | ||
![]() |
1605e50cef | ||
![]() |
2215ce58a4 | ||
![]() |
a13e6b69e3 | ||
![]() |
1d6370e11c | ||
![]() |
bd34c7ede3 | ||
![]() |
bc8954fbba | ||
![]() |
9cf0bc6c82 | ||
![]() |
71b32fe641 | ||
![]() |
530f745e44 | ||
![]() |
a5a2313851 | ||
![]() |
4e98c2e7f6 | ||
![]() |
14486782dc | ||
![]() |
31814b70da | ||
![]() |
408e819d32 | ||
![]() |
622676f9bc | ||
![]() |
5b631e0387 | ||
![]() |
06d54ef77e | ||
![]() |
6c5ef567ed | ||
![]() |
f86b40302d | ||
![]() |
273c287fbf | ||
![]() |
6cb16be5df | ||
![]() |
a4feb3fc09 | ||
![]() |
ba6c7de35a | ||
![]() |
79e2bb382f | ||
![]() |
0090256ded | ||
![]() |
00ce077758 | ||
![]() |
a801d0994f | ||
![]() |
628575dc5f | ||
![]() |
0a22f21410 | ||
![]() |
97ff9e9c5b | ||
![]() |
8b3a09306b | ||
![]() |
7766fd13fd | ||
![]() |
c79997ebe3 | ||
![]() |
0fd1e2fcd9 | ||
![]() |
99442b6e04 | ||
![]() |
b8a35e9e4a | ||
![]() |
e833d415e3 | ||
![]() |
8030312924 | ||
![]() |
a84b54f940 | ||
![]() |
c66c81294e | ||
![]() |
bfdc215c65 | ||
![]() |
e10c7beedb | ||
![]() |
18c3286364 | ||
![]() |
8d2ec30818 | ||
![]() |
e5ffddfc6b | ||
![]() |
59fc1e4b5f | ||
![]() |
7ead581953 | ||
![]() |
b860980df4 | ||
![]() |
97a366d62e | ||
![]() |
9ad68097d0 | ||
![]() |
331999fb95 | ||
![]() |
6519d7051d | ||
![]() |
552d585fca | ||
![]() |
24c24d6c72 | ||
![]() |
b7f50c3e12 | ||
![]() |
aed1687a45 | ||
![]() |
daa427dc15 | ||
![]() |
e9d4303fdb | ||
![]() |
5485e994ee | ||
![]() |
87228673b4 | ||
![]() |
d306513319 | ||
![]() |
e08480f345 | ||
![]() |
13c9096417 | ||
![]() |
d3d65c8e3a | ||
![]() |
12ac5ef781 | ||
![]() |
adef9a8acf | ||
![]() |
5ef407d15f | ||
![]() |
970b636eb4 | ||
![]() |
fcf9131aae | ||
![]() |
7fd27fac45 | ||
![]() |
6e17af91fb | ||
![]() |
68555573ad | ||
![]() |
fb9905a89e | ||
![]() |
1e7504dc5a | ||
![]() |
d7af019511 | ||
![]() |
04bb070afa | ||
![]() |
e693d80857 | ||
![]() |
45ae05f1b5 | ||
![]() |
05a83beb44 | ||
![]() |
8a1a42e83b | ||
![]() |
1b3f3cedb3 | ||
![]() |
f815ae5973 | ||
![]() |
fb7035bf22 | ||
![]() |
02bcbc3221 | ||
![]() |
f0a51d4ab4 | ||
![]() |
24fe8fe9a0 | ||
![]() |
244e95d959 | ||
![]() |
ad72c64e32 | ||
![]() |
767ac6a51b | ||
![]() |
3a6f87659a | ||
![]() |
b7ac16c7d9 | ||
![]() |
f9f84cbd89 | ||
![]() |
701c87eefa | ||
![]() |
5379cf0544 | ||
![]() |
6b5c37f17f | ||
![]() |
50b2fad180 | ||
![]() |
b9cb65b24e | ||
![]() |
d7574973e9 | ||
![]() |
ff48c93d59 | ||
![]() |
d2e6700dd1 | ||
![]() |
05b8c3f35f | ||
![]() |
70b643e7ba | ||
![]() |
dce973a519 | ||
![]() |
eb2f75579a | ||
![]() |
773316ce4f | ||
![]() |
5fd7ae33b4 | ||
![]() |
13a065f2dc | ||
![]() |
1a8ff81087 | ||
![]() |
65637fce40 | ||
![]() |
b11fa7a28e | ||
![]() |
45408caf33 | ||
![]() |
963ee4dbab | ||
![]() |
3b46d5a440 | ||
![]() |
212fddd8e1 | ||
![]() |
433485470e | ||
![]() |
e160a1f794 | ||
![]() |
7911b7e637 | ||
![]() |
7fc5a77e7e | ||
![]() |
f0fb55640e | ||
![]() |
d5685f2255 | ||
![]() |
a732233db6 | ||
![]() |
a5918c29ee | ||
![]() |
3b719803bb | ||
![]() |
d77463c9f1 | ||
![]() |
2d8fd9bedf | ||
![]() |
b17a667a9d | ||
![]() |
b7287a070b | ||
![]() |
fbb5c8cdd6 | ||
![]() |
baaf2815e4 | ||
![]() |
d8b5549fd9 | ||
![]() |
6de03f2bf0 | ||
![]() |
caf7c55069 | ||
![]() |
7d499ffba1 | ||
![]() |
4abf6b2f5c | ||
![]() |
a842b06301 | ||
![]() |
0bca4925d7 | ||
![]() |
ae3953cbec | ||
![]() |
a99667c54c | ||
![]() |
465963a8c2 | ||
![]() |
b9b4762faf | ||
![]() |
a56b128a4b | ||
![]() |
d43cc089fd | ||
![]() |
771513d287 | ||
![]() |
c387678217 | ||
![]() |
847368718b | ||
![]() |
458b3daac3 | ||
![]() |
3ea5278b12 | ||
![]() |
20b9748a8c | ||
![]() |
79487adbec | ||
![]() |
89f3fca6b1 | ||
![]() |
f290b2bf5a | ||
![]() |
04e7d13043 | ||
![]() |
e41218c46b | ||
![]() |
8562fbdbbe | ||
![]() |
c841d7a32b | ||
![]() |
8827ae4d2c | ||
![]() |
2e1029e157 | ||
![]() |
a7dc0c2d55 | ||
![]() |
7f1749d853 | ||
![]() |
b4a34d58db | ||
![]() |
4a50fcab2c | ||
![]() |
c9ef089199 | ||
![]() |
94ecf9a081 | ||
![]() |
67aaa9a655 | ||
![]() |
823f5640f7 | ||
![]() |
45d1c63895 | ||
![]() |
d3b6781bb8 | ||
![]() |
21d1f69d6d | ||
![]() |
1b9f5989ef | ||
![]() |
348e46ff3b | ||
![]() |
7918e3a1aa | ||
![]() |
d6d8c7830c | ||
![]() |
f53a0f0d07 | ||
![]() |
17edd1c3d4 | ||
![]() |
b0685c153a | ||
![]() |
a5ca20ee4c | ||
![]() |
03685db2fc | ||
![]() |
68ed738dcd | ||
![]() |
5293d17e32 | ||
![]() |
f2e4b69466 | ||
![]() |
ec8b00042b | ||
![]() |
08db1d59e5 | ||
![]() |
7c79d421e8 | ||
![]() |
ade5e38fa5 | ||
![]() |
7385aa09a8 | ||
![]() |
185a5fad88 | ||
![]() |
a1e2477d14 | ||
![]() |
a1200a5fff | ||
![]() |
91a0257c8f | ||
![]() |
53ffc82fe2 | ||
![]() |
801267df18 | ||
![]() |
6e73e0b395 | ||
![]() |
7aa8a5c368 | ||
![]() |
3ecbbea7cb | ||
![]() |
77cd3182f1 | ||
![]() |
c7ccf9bab8 | ||
![]() |
06e70abb86 | ||
![]() |
88c86e88b0 | ||
![]() |
2d6cf48532 | ||
![]() |
19e152a54b | ||
![]() |
2898bead66 | ||
![]() |
381c329441 | ||
![]() |
a3de3705f7 | ||
![]() |
dc3dc6b77f | ||
![]() |
e028a63f30 | ||
![]() |
d196f8b4b2 | ||
![]() |
4274827dbe | ||
![]() |
7a30f4a7d2 | ||
![]() |
d0c03a0211 | ||
![]() |
787b136d13 | ||
![]() |
08412d6108 | ||
![]() |
d8f7db4715 | ||
![]() |
bff238774e | ||
![]() |
d2aaa6f691 | ||
![]() |
c900ef036c | ||
![]() |
b2164ce5fc | ||
![]() |
d088d432c5 | ||
![]() |
c9fafbe198 | ||
![]() |
2d909b0514 | ||
![]() |
c2a012553d | ||
![]() |
085f0266ac | ||
![]() |
7ede2daa3c | ||
![]() |
713c53d170 | ||
![]() |
110b3a6a8f | ||
![]() |
e12e6dd7a7 | ||
![]() |
e183fc6118 | ||
![]() |
dd57e246b8 | ||
![]() |
f4a4172369 | ||
![]() |
b96d1714b5 | ||
![]() |
dbd809b040 | ||
![]() |
ff4e6b139d | ||
![]() |
af098aaac8 | ||
![]() |
5d7e62c736 | ||
![]() |
e2ead011f5 | ||
![]() |
a067c950e1 | ||
![]() |
3369618cfa | ||
![]() |
4e9b6520e5 | ||
![]() |
a074203fae | ||
![]() |
42092e3f28 | ||
![]() |
c07b34e298 | ||
![]() |
ef5f181328 | ||
![]() |
a7ea2fcf92 | ||
![]() |
e81730715c | ||
![]() |
c09f2ad482 | ||
![]() |
84aef8b5b5 | ||
![]() |
8fac3e8221 | ||
![]() |
5874ed781d | ||
![]() |
d8f29bd7a7 | ||
![]() |
8120b6aaaa | ||
![]() |
13a0d1de70 | ||
![]() |
20e828be51 | ||
![]() |
ccd82fb8b8 | ||
![]() |
0711650ff8 | ||
![]() |
4194ac2226 | ||
![]() |
248e2d7ee0 | ||
![]() |
1daa654051 | ||
![]() |
d751434979 | ||
![]() |
8cc21920b7 | ||
![]() |
248212588d | ||
![]() |
13c0fdef08 | ||
![]() |
dfc27b2480 | ||
![]() |
b2d78d380b | ||
![]() |
faa6cb5c7d | ||
![]() |
452977abdf | ||
![]() |
93570b2f59 | ||
![]() |
073f5c2c8c | ||
![]() |
1b4313f847 | ||
![]() |
07cead7e99 | ||
![]() |
f128751aba | ||
![]() |
9516d9da17 | ||
![]() |
e9aafc2a56 | ||
![]() |
a91a6575e0 | ||
![]() |
5bd4093dfb | ||
![]() |
f9890e2016 | ||
![]() |
00529fe134 | ||
![]() |
5e9dce7d39 | ||
![]() |
734680b9f0 | ||
![]() |
d0b5345252 | ||
![]() |
c2b4a44a59 | ||
![]() |
38c79bbc11 | ||
![]() |
0d7028a36c | ||
![]() |
b63f687491 | ||
![]() |
952b636569 | ||
![]() |
e14ba48244 | ||
![]() |
720c8c31ec | ||
![]() |
4e8407ed8f | ||
![]() |
26c5f69161 | ||
![]() |
078ae15794 | ||
![]() |
16ae90dc9f | ||
![]() |
3de5afc68e | ||
![]() |
a7e8f5087e | ||
![]() |
5cc60ed760 | ||
![]() |
2e6e75cd4e | ||
![]() |
9f3b35634a | ||
![]() |
c24dfc63dc | ||
![]() |
c029929850 | ||
![]() |
d9100913d5 | ||
![]() |
a7fbe05a73 | ||
![]() |
e03d970bc2 | ||
![]() |
fe4516ea23 | ||
![]() |
039b47b872 | ||
![]() |
0a57a8a7f3 | ||
![]() |
8c823f3a2d | ||
![]() |
33f3a4f455 | ||
![]() |
2ecf8044d7 | ||
![]() |
c9a1eb55b5 | ||
![]() |
76bb1fd61e | ||
![]() |
1275b26ba0 | ||
![]() |
a470a4af9b | ||
![]() |
487c9ebbd4 | ||
![]() |
c796e2ae3c | ||
![]() |
746cab92f0 | ||
![]() |
33266a96ff | ||
![]() |
2816889d8d | ||
![]() |
58e177b3e4 | ||
![]() |
5cfd8bbb56 | ||
![]() |
e6fe6fd645 | ||
![]() |
63e167b38e | ||
![]() |
abe77c4783 | ||
![]() |
72af51fe9d | ||
![]() |
36b4134838 | ||
![]() |
cf6ee26fdb | ||
![]() |
858111e623 | ||
![]() |
367e625804 | ||
![]() |
ae4d9c7f80 | ||
![]() |
6c6ee41346 | ||
![]() |
9ef7688f9e | ||
![]() |
7d6e226c2b | ||
![]() |
17d1346a8a | ||
![]() |
59e0c10c42 | ||
![]() |
0d29e66092 | ||
![]() |
caa000f447 | ||
![]() |
267e114354 | ||
![]() |
b5375396d2 | ||
![]() |
e34f666b70 | ||
![]() |
19334b4f96 | ||
![]() |
1fa609e539 | ||
![]() |
d9ce25a721 | ||
![]() |
5b8fc25da6 | ||
![]() |
c70968dcf1 | ||
![]() |
77147510fb | ||
![]() |
7092577482 | ||
![]() |
3e70050056 | ||
![]() |
1f23c814e5 | ||
![]() |
145e0a0b7b | ||
![]() |
e68e787e7a | ||
![]() |
903308d285 | ||
![]() |
a4d8388b2e | ||
![]() |
3e83f9f956 | ||
![]() |
4063221313 | ||
![]() |
c3c8d80919 | ||
![]() |
3ae71c73c4 | ||
![]() |
b3db8c9549 | ||
![]() |
596eb4a0f9 | ||
![]() |
6b0381b903 | ||
![]() |
049c8f70cd | ||
![]() |
353bf69550 | ||
![]() |
cdb989ede3 | ||
![]() |
74079e4238 | ||
![]() |
c89746214c | ||
![]() |
1d97db3ef9 | ||
![]() |
b2a5ff5f9d | ||
![]() |
f47ef2b5ea | ||
![]() |
bd7ec3b692 | ||
![]() |
52895e7b6b | ||
![]() |
a6a82c6477 | ||
![]() |
af66ed94b2 | ||
![]() |
e43fdf5ef9 | ||
![]() |
3984fc075f | ||
![]() |
ee2a159374 | ||
![]() |
57c9b29ba3 | ||
![]() |
927ea72337 | ||
![]() |
123bdbd13b | ||
![]() |
0baa5a2f04 | ||
![]() |
7d98a70028 | ||
![]() |
73b72ab01c | ||
![]() |
e8cf71f41c | ||
![]() |
5f2d2a64d2 | ||
![]() |
27bf3901de | ||
![]() |
16d4fa03a5 | ||
![]() |
bef579ec26 | ||
![]() |
0cff10e02e | ||
![]() |
4c6f7238dd | ||
![]() |
583f1476d6 | ||
![]() |
b42bef32fd | ||
![]() |
8bb85ccf19 | ||
![]() |
3d88c2a5fa | ||
![]() |
e350acaf08 | ||
![]() |
172f70bef9 | ||
![]() |
9d25c0bf8a | ||
![]() |
75b377aab3 | ||
![]() |
3706f30b44 | ||
![]() |
a9697a61ad | ||
![]() |
e16a2d7cb6 | ||
![]() |
f106e2945b | ||
![]() |
1ad7deddb1 | ||
![]() |
7b81e98581 | ||
![]() |
0cae58ce8e | ||
![]() |
7231150115 | ||
![]() |
071986a4c9 | ||
![]() |
39e7d43f10 | ||
![]() |
aa1b17ae66 | ||
![]() |
92bae88355 | ||
![]() |
067eaf363e | ||
![]() |
00efc266d9 | ||
![]() |
0b014185e3 | ||
![]() |
3eee7378de | ||
![]() |
c31428f6bc | ||
![]() |
163e561cf9 | ||
![]() |
a32ded2829 | ||
![]() |
a5b7517fbd | ||
![]() |
176d57b35a | ||
![]() |
927a1d58e2 | ||
![]() |
bbd0df08d3 | ||
![]() |
9e57195e14 | ||
![]() |
05ab54c30d | ||
![]() |
e3e2028153 | ||
![]() |
883bcc735d | ||
![]() |
158727e2f2 | ||
![]() |
899f69d120 | ||
![]() |
b575046c05 | ||
![]() |
b5c60d2be2 | ||
![]() |
631dfee763 | ||
![]() |
d7f610113e | ||
![]() |
e0e4f6db2b | ||
![]() |
c27a26c0aa | ||
![]() |
3dcd2468a2 | ||
![]() |
ea43b28f74 | ||
![]() |
a3e2a085b6 | ||
![]() |
635d51b60d | ||
![]() |
95eb1c0d95 | ||
![]() |
8aca43a7e6 | ||
![]() |
f6afe59788 | ||
![]() |
8e13161f64 | ||
![]() |
97437b8af3 | ||
![]() |
9a938093e2 | ||
![]() |
3edcc9f9fd | ||
![]() |
55db408720 | ||
![]() |
caef874814 | ||
![]() |
1622639eca | ||
![]() |
4df89f4217 | ||
![]() |
079b98ed3f | ||
![]() |
a0526d2c9c | ||
![]() |
169b1cbd32 | ||
![]() |
8968081e77 | ||
![]() |
93ba7510e1 | ||
![]() |
579bb743bb | ||
![]() |
9e5e9ea612 | ||
![]() |
2241a13cba | ||
![]() |
9c1fb0cb92 | ||
![]() |
4904514257 | ||
![]() |
6d829c26a1 | ||
![]() |
c05467fb92 | ||
![]() |
d47f7f3348 | ||
![]() |
5931a84651 | ||
![]() |
5771783d11 | ||
![]() |
aae07a60bd | ||
![]() |
462d418ee0 | ||
![]() |
ce63c2e1db | ||
![]() |
52baf8cbe5 | ||
![]() |
1779b9ee1a | ||
![]() |
eae169236c | ||
![]() |
ce0efba0d2 | ||
![]() |
87c7ac3970 | ||
![]() |
0f8d196a52 | ||
![]() |
6dc7dab154 | ||
![]() |
dd4cb23005 | ||
![]() |
0589017f8c | ||
![]() |
55027a9b2b | ||
![]() |
0a984ca8c8 | ||
![]() |
929d13bfea | ||
![]() |
375e18bec8 | ||
![]() |
b9de74f183 | ||
![]() |
08ca69507f | ||
![]() |
65ca982342 | ||
![]() |
658281a92c | ||
![]() |
a959f61367 | ||
![]() |
8e61f744ec | ||
![]() |
73d3e52e29 | ||
![]() |
49a134845c | ||
![]() |
29807f3d39 | ||
![]() |
29b79b7725 | ||
![]() |
1cdb10a040 | ||
![]() |
5f7851df72 | ||
![]() |
3d9bc05d7a | ||
![]() |
c127428c59 | ||
![]() |
7966d8403a | ||
![]() |
80cc8a8e02 | ||
![]() |
ee4e205fef | ||
![]() |
ea443dc80c | ||
![]() |
283645513d | ||
![]() |
81b99382b8 | ||
![]() |
ab74465e6c | ||
![]() |
b3eadb557b | ||
![]() |
0abd2bcba6 | ||
![]() |
9cf76a918e | ||
![]() |
ae437b1510 | ||
![]() |
1096ec1c09 | ||
![]() |
235394d96c | ||
![]() |
d25e1d801c | ||
![]() |
2dca5ab966 | ||
![]() |
89ab57b1c1 | ||
![]() |
dc66e6a4bf | ||
![]() |
5c2f2fd882 | ||
![]() |
5c3ddefbf9 | ||
![]() |
a8d3f45ea1 | ||
![]() |
cc2c41ddc8 | ||
![]() |
b990f30a09 | ||
![]() |
5c711322d4 | ||
![]() |
b7d4a4f604 | ||
![]() |
cc8874b687 | ||
![]() |
2d0bc05488 | ||
![]() |
1429774487 | ||
![]() |
2060312dc1 | ||
![]() |
8b6728480f | ||
![]() |
cecafdee29 | ||
![]() |
05f2af25af | ||
![]() |
e3d826f6c4 | ||
![]() |
02430bed90 | ||
![]() |
3f7005ed9a | ||
![]() |
586ee75833 | ||
![]() |
1d903f11a8 | ||
![]() |
578159b95c | ||
![]() |
5c95587284 | ||
![]() |
f7e9227ad2 | ||
![]() |
c11a4d6867 | ||
![]() |
6c2b0448a4 | ||
![]() |
bd0eb8cccf | ||
![]() |
09bb043952 | ||
![]() |
9ca6cfd637 | ||
![]() |
3869a66fcc | ||
![]() |
d1c94f5120 | ||
![]() |
c55e9941ec | ||
![]() |
fa9a419d73 | ||
![]() |
ab4e0da6b4 | ||
![]() |
073572681e | ||
![]() |
b630f269c4 | ||
![]() |
40b1cd82b1 | ||
![]() |
abcbdef63b | ||
![]() |
dc8d1b0993 | ||
![]() |
56d53d8805 | ||
![]() |
7433fe049c | ||
![]() |
bb2be49d3b | ||
![]() |
cd1b578e84 | ||
![]() |
c3df9b4105 | ||
![]() |
243f3e21ec | ||
![]() |
375291380c | ||
![]() |
d221194454 | ||
![]() |
6d94a54387 | ||
![]() |
910bde88c7 | ||
![]() |
72916544ce | ||
![]() |
a01975dfce | ||
![]() |
10708801ae | ||
![]() |
ac096fb4e7 | ||
![]() |
620c1397ba | ||
![]() |
5b2f2f34f6 | ||
![]() |
ae3861a29d | ||
![]() |
93e2145254 | ||
![]() |
2b6290d275 | ||
![]() |
f81af7acb3 | ||
![]() |
f0170247a4 | ||
![]() |
3430874d11 | ||
![]() |
cb5e7532ab | ||
![]() |
5b928d679c | ||
![]() |
697b9694e5 | ||
![]() |
81c3e7e7f6 | ||
![]() |
0517bba8ca | ||
![]() |
83c7244fe6 | ||
![]() |
68fd129042 | ||
![]() |
b697e8a616 | ||
![]() |
2b281fbde9 | ||
![]() |
de8c4018c4 | ||
![]() |
9e8af96bbf | ||
![]() |
b0415a5289 | ||
![]() |
ff7344438b | ||
![]() |
f5f8e5d279 | ||
![]() |
b4ddc8f96c | ||
![]() |
e556c8ee15 | ||
![]() |
2f9a0b3376 | ||
![]() |
828f07b401 | ||
![]() |
36921b3426 | ||
![]() |
3988c6491c | ||
![]() |
2cf558ec05 | ||
![]() |
6fbadbdd94 | ||
![]() |
faa1d7effb | ||
![]() |
fe73a708d4 | ||
![]() |
a5ca262faa | ||
![]() |
8ebb1e29fa | ||
![]() |
1b44dc9522 | ||
![]() |
a66d468dc2 | ||
![]() |
ca8beafc2d | ||
![]() |
639c589a4a | ||
![]() |
cd66836218 | ||
![]() |
98662baa26 | ||
![]() |
004e5794e3 | ||
![]() |
f4f4f062cf | ||
![]() |
d8d9c7e171 | ||
![]() |
ceff82732e | ||
![]() |
d94b1708a9 | ||
![]() |
46e1f16012 | ||
![]() |
bbd014d409 | ||
![]() |
d553ee7c60 | ||
![]() |
2df6ab240d | ||
![]() |
8a2b9dfd6a | ||
![]() |
1f7892d7a9 | ||
![]() |
d11c537bea | ||
![]() |
2d4d237009 | ||
![]() |
daeee6b616 | ||
![]() |
eacb0b13b2 | ||
![]() |
dc5748059a | ||
![]() |
96d75f4bcb | ||
![]() |
19bfdf3f9f | ||
![]() |
4ea273b297 | ||
![]() |
72c9845174 | ||
![]() |
77597b329e | ||
![]() |
f62f00b4ad | ||
![]() |
1975973ff2 | ||
![]() |
00262b4a49 | ||
![]() |
de6cabe408 | ||
![]() |
d65552b59f | ||
![]() |
3755f48bce | ||
![]() |
8fe75d2015 | ||
![]() |
b0c0249ce6 | ||
![]() |
17685f3d86 | ||
![]() |
30f1c71569 | ||
![]() |
137afba1b6 | ||
![]() |
b27de5cac1 | ||
![]() |
8d43ae9805 | ||
![]() |
3cebb028f4 | ||
![]() |
28ab9d3515 | ||
![]() |
f7739309e8 | ||
![]() |
2db0d63c97 | ||
![]() |
437b86d1a7 | ||
![]() |
5ba1df52e0 | ||
![]() |
04ab753b26 | ||
![]() |
bc4a598a55 | ||
![]() |
651cdec9b5 | ||
![]() |
346f9fbacd | ||
![]() |
0f493ae808 | ||
![]() |
a07f143759 | ||
![]() |
0ec22c7a6e | ||
![]() |
73611004a0 | ||
![]() |
776ddddc83 | ||
![]() |
f60cce54ea | ||
![]() |
63087a4311 | ||
![]() |
5a193d50f6 | ||
![]() |
08a6e999b9 | ||
![]() |
e33cdca1ef | ||
![]() |
9ede7a3c42 | ||
![]() |
430d4e1ccd | ||
![]() |
de4d6037d3 | ||
![]() |
fc1fc6842b | ||
![]() |
0649b297f6 | ||
![]() |
9a470b9d41 | ||
![]() |
47d1ab356d | ||
![]() |
1ea5787486 | ||
![]() |
1d4695c109 | ||
![]() |
b673f9dd7f | ||
![]() |
a1dd03472f | ||
![]() |
497e545024 | ||
![]() |
6892fdb70b | ||
![]() |
aa1cc32d17 | ||
![]() |
b22398ae6c | ||
![]() |
e6eddaff73 | ||
![]() |
cd53518897 | ||
![]() |
8e9b1b7213 | ||
![]() |
7a88fae2e2 | ||
![]() |
f066da23c5 | ||
![]() |
34aa3d3e00 | ||
![]() |
715119fd45 | ||
![]() |
bde34fc4c4 | ||
![]() |
07b4aa89d4 | ||
![]() |
d60351114c | ||
![]() |
c932a70bef | ||
![]() |
4641d7ee8c | ||
![]() |
d4b3ee50f2 | ||
![]() |
5392daa3ff | ||
![]() |
a70e366fb4 | ||
![]() |
dff14268db | ||
![]() |
5517e157ad | ||
![]() |
bdf4ffc36b | ||
![]() |
71455c63c1 | ||
![]() |
b1ae2b1a41 | ||
![]() |
8a31732ce2 | ||
![]() |
e79aed7792 | ||
![]() |
973fc08f2d | ||
![]() |
00211e1fb2 | ||
![]() |
ce7286a72a | ||
![]() |
db335d5cec | ||
![]() |
ee5ce0c809 | ||
![]() |
b8efef7c7a | ||
![]() |
e2cbf40957 | ||
![]() |
d7d45fb8e2 | ||
![]() |
63afacc067 | ||
![]() |
3175199787 | ||
![]() |
1d0c3de65f | ||
![]() |
fe1646caa0 | ||
![]() |
72710f075b | ||
![]() |
c7c01aedc2 | ||
![]() |
c2e2e76fd8 | ||
![]() |
f30a87e4e2 | ||
![]() |
7a84cfd510 | ||
![]() |
7a5a773b07 | ||
![]() |
cf1488f6ce | ||
![]() |
b02badba0c | ||
![]() |
772d84ea5a | ||
![]() |
ddaa66f080 | ||
![]() |
8fd75833f0 | ||
![]() |
1967d60813 | ||
![]() |
f38f265cf7 | ||
![]() |
79f37ffee0 | ||
![]() |
d4b2a3c696 | ||
![]() |
39ec365821 | ||
![]() |
bc423c471d | ||
![]() |
a790f43566 | ||
![]() |
9fbdc950d2 | ||
![]() |
8319963cbb | ||
![]() |
4341219497 | ||
![]() |
835504270d | ||
![]() |
daed42d208 | ||
![]() |
850f51a156 | ||
![]() |
d37b195708 | ||
![]() |
54ceb85ebe | ||
![]() |
ef7a5bc753 | ||
![]() |
b7ef60eedd | ||
![]() |
70ede70ea8 | ||
![]() |
d1d942f3fd | ||
![]() |
53b3bda909 | ||
![]() |
ac5571a363 | ||
![]() |
c42f5eca87 | ||
![]() |
9cb6816b3c | ||
![]() |
feab633e60 | ||
![]() |
a50e430cd9 | ||
![]() |
46918ee907 | ||
![]() |
fe1889653e | ||
![]() |
9487b5367d | ||
![]() |
6b47df75a7 | ||
![]() |
bd9b2d54aa | ||
![]() |
506d1dc1f2 | ||
![]() |
90f9819cbd | ||
![]() |
9bbd03c14e | ||
![]() |
2852815e1a | ||
![]() |
41a100613f | ||
![]() |
63e489f134 | ||
![]() |
914d3c4a66 | ||
![]() |
2b47a1b06a | ||
![]() |
625419a7db | ||
![]() |
2710d9de5b | ||
![]() |
e51314b104 | ||
![]() |
4c128d837c | ||
![]() |
c392804f47 | ||
![]() |
cc7a25d9ce | ||
![]() |
36b2bea25f | ||
![]() |
913796ff0f | ||
![]() |
a1b9892c77 | ||
![]() |
03de4b29ea | ||
![]() |
35a706f745 | ||
![]() |
65cd9751d8 | ||
![]() |
ff9a1ebb1b | ||
![]() |
b5df000e9d | ||
![]() |
655522a3e5 | ||
![]() |
e4a4af34c5 | ||
![]() |
b047e562ca | ||
![]() |
1600233c48 | ||
![]() |
55c8bcd0e3 | ||
![]() |
2d0dadbd34 | ||
![]() |
49879bc9db | ||
![]() |
2c453c7691 | ||
![]() |
5166c22ce9 | ||
![]() |
225b9e1b15 | ||
![]() |
7a9d2c9a74 | ||
![]() |
3855e488cb | ||
![]() |
ce75747887 | ||
![]() |
c462766cb8 | ||
![]() |
bb905b70df | ||
![]() |
5c8b9f6b4c | ||
![]() |
c726639484 | ||
![]() |
100c7b8360 | ||
![]() |
5502df89bb | ||
![]() |
4491b66872 | ||
![]() |
9bc24728b4 | ||
![]() |
a3a00ea052 | ||
![]() |
1b1534add5 | ||
![]() |
a54c8d4f55 | ||
![]() |
0cddd15203 | ||
![]() |
5653d443d9 | ||
![]() |
a5a497c4ea | ||
![]() |
d60feb466c | ||
![]() |
a435167619 | ||
![]() |
99c823c763 | ||
![]() |
aebed13a40 | ||
![]() |
1347bdd545 | ||
![]() |
562754c0b9 | ||
![]() |
ec52e144e8 | ||
![]() |
3e383a9f57 | ||
![]() |
3a2444db0d | ||
![]() |
14d01ae358 | ||
![]() |
1f4b147ddd | ||
![]() |
12405f4059 | ||
![]() |
8d6965713c | ||
![]() |
fe2858bc75 | ||
![]() |
99dd6ae6aa | ||
![]() |
cb7ed4079f | ||
![]() |
89fbc055f4 | ||
![]() |
df12b838ad | ||
![]() |
055fa19c9b | ||
![]() |
d1b661506e | ||
![]() |
180ddcceaa | ||
![]() |
512fad207b | ||
![]() |
82d514d857 | ||
![]() |
037fac7cd4 | ||
![]() |
ebad85664d | ||
![]() |
4b626c39fe | ||
![]() |
81c539f150 | ||
![]() |
0e74d82777 | ||
![]() |
5ea34a3c07 | ||
![]() |
4f8c5c3c0a | ||
![]() |
37e45e0984 | ||
![]() |
5683ad6666 | ||
![]() |
92ca1e6e09 | ||
![]() |
6571fdbaa2 | ||
![]() |
9c3f138b8e | ||
![]() |
0ac2865b74 | ||
![]() |
98fc88dec6 | ||
![]() |
8cab790030 | ||
![]() |
954399b255 | ||
![]() |
66c95f901d | ||
![]() |
8265922d68 | ||
![]() |
2403184845 | ||
![]() |
15a53d299d | ||
![]() |
24a1a5d680 | ||
![]() |
c1cfff1502 | ||
![]() |
8b2599297b | ||
![]() |
1ed387dd54 | ||
![]() |
9c795895ba | ||
![]() |
3c193dca58 | ||
![]() |
ce2a8fbfab | ||
![]() |
4bbcf44351 | ||
![]() |
a9a43538be | ||
![]() |
905e4f16e2 | ||
![]() |
008489361d | ||
![]() |
dfa7fb53b2 | ||
![]() |
dc6604bcda | ||
![]() |
63194ff292 | ||
![]() |
53a727955f | ||
![]() |
a8fca89045 | ||
![]() |
1eff727722 | ||
![]() |
d9c6f7acb6 | ||
![]() |
faefe957b0 | ||
![]() |
2fb8467673 | ||
![]() |
401422deb3 | ||
![]() |
b52ed8e4c9 | ||
![]() |
41061d0289 | ||
![]() |
fed9197d23 | ||
![]() |
282d3dbf8c | ||
![]() |
b6c6dc7282 | ||
![]() |
45194061b3 | ||
![]() |
55480c8290 | ||
![]() |
63bcc04eff | ||
![]() |
fda5405e48 | ||
![]() |
819e52cab3 | ||
![]() |
ea917c82b6 | ||
![]() |
65d5303765 | ||
![]() |
08d37a4bef | ||
![]() |
da2b059802 | ||
![]() |
62d934dd8e | ||
![]() |
96086b7733 | ||
![]() |
182fc104bb | ||
![]() |
06a897fba0 | ||
![]() |
ff4b13245c | ||
![]() |
00a8906128 | ||
![]() |
8b73d2d39f | ||
![]() |
e976b3e43e | ||
![]() |
1585ca7c85 | ||
![]() |
f7697007e5 | ||
![]() |
249e9c0b52 | ||
![]() |
099d5570f4 | ||
![]() |
6a84f433ea | ||
![]() |
12bf409e10 | ||
![]() |
a01f1e64fe | ||
![]() |
5f549a8fc6 | ||
![]() |
eb144af0b9 | ||
![]() |
0d020d3a54 | ||
![]() |
e1042e326d | ||
![]() |
f085e7d362 | ||
![]() |
b995f39206 | ||
![]() |
713bf58c44 | ||
![]() |
a7af21958f | ||
![]() |
8fed3df681 | ||
![]() |
0be78b1204 | ||
![]() |
0a67ecbc3a | ||
![]() |
c57b4ee965 | ||
![]() |
d4db7b3fc1 | ||
![]() |
e9db964a70 | ||
![]() |
90c8a714fc | ||
![]() |
d958c0c68a | ||
![]() |
377d02ab1a | ||
![]() |
2c0ad89a07 | ||
![]() |
101a8adbc2 | ||
![]() |
5009fa461c | ||
![]() |
f48f6ae5df | ||
![]() |
be504212d0 | ||
![]() |
0f075137c9 | ||
![]() |
8714664e00 | ||
![]() |
bfaf938543 | ||
![]() |
b605bc086c | ||
![]() |
e394b16335 | ||
![]() |
0457423498 | ||
![]() |
91d30dbb83 | ||
![]() |
63642a4d3e | ||
![]() |
1b64900c14 | ||
![]() |
2660178658 | ||
![]() |
3a0271cd4d | ||
![]() |
76e2a2f032 | ||
![]() |
932de969f0 | ||
![]() |
9082ab6ff7 | ||
![]() |
2461173e26 | ||
![]() |
48c2f8b91b | ||
![]() |
6766b25414 | ||
![]() |
aacaf1b3fe | ||
![]() |
4cc154cbe1 | ||
![]() |
ca030dd5ed | ||
![]() |
f000409a90 | ||
![]() |
697f0659e2 | ||
![]() |
5169ef1f00 | ||
![]() |
10faa45182 | ||
![]() |
edff3c35f2 | ||
![]() |
3a611adc11 | ||
![]() |
381b491845 | ||
![]() |
6aca344bf7 | ||
![]() |
512046e300 | ||
![]() |
9cb3cf250c | ||
![]() |
1cc5a67d82 | ||
![]() |
fa6823599a | ||
![]() |
398cbe9284 | ||
![]() |
d87e488c23 | ||
![]() |
5c2ff9b777 | ||
![]() |
6a3a72eb06 | ||
![]() |
56544802e8 | ||
![]() |
6d7e37610c | ||
![]() |
a47e6dd8c5 | ||
![]() |
5bd0c701c7 | ||
![]() |
50a2771d87 | ||
![]() |
e6df041613 | ||
![]() |
f334a2740f | ||
![]() |
caa1de8aff | ||
![]() |
fac13fb8cb | ||
![]() |
26e487c01a | ||
![]() |
cc438fdb7b | ||
![]() |
92ff98d99a | ||
![]() |
d1609cba90 | ||
![]() |
0c394b123c | ||
![]() |
421b8214cb | ||
![]() |
6fc91312d2 | ||
![]() |
22bb129bd9 | ||
![]() |
4c57893312 | ||
![]() |
a2d5314cf7 | ||
![]() |
e063967734 | ||
![]() |
4519dd010d | ||
![]() |
55d2637214 | ||
![]() |
bc2dc8d933 | ||
![]() |
fc9b63298c | ||
![]() |
c45514b989 | ||
![]() |
8c9015b57b | ||
![]() |
a0cb96abff | ||
![]() |
3f51114129 | ||
![]() |
29136d633a | ||
![]() |
20bff1389e | ||
![]() |
106e538d08 | ||
![]() |
dc7ae3917e | ||
![]() |
c0fb96a911 | ||
![]() |
a1e02f7704 | ||
![]() |
436c75ca6c | ||
![]() |
7d75950624 | ||
![]() |
5f051a9766 | ||
![]() |
5716cf8cb2 | ||
![]() |
7bb5cacb0d | ||
![]() |
9801cf50e3 | ||
![]() |
b5558a8b78 | ||
![]() |
a7c31e6bcc | ||
![]() |
6e76610f30 | ||
![]() |
6da2b399e8 | ||
![]() |
79c962fc88 | ||
![]() |
28fb864ed0 | ||
![]() |
d23227d427 | ||
![]() |
eb6d26b6a4 | ||
![]() |
a8a28294d3 | ||
![]() |
7db1ba40eb | ||
![]() |
d8bd8d87ec | ||
![]() |
d29e0aa1a7 | ||
![]() |
644ad110c0 | ||
![]() |
6791de5fc0 | ||
![]() |
1bb96ef405 | ||
![]() |
7dc4ccf144 | ||
![]() |
2b39438eba | ||
![]() |
8952e2b0cd | ||
![]() |
4806ac62ee | ||
![]() |
eaa1179572 |
115
.github/CONTRIBUTING.md
vendored
115
.github/CONTRIBUTING.md
vendored
@@ -1,68 +1,85 @@
|
|||||||
NewPipe contribution guidelines
|
NewPipe contribution guidelines
|
||||||
===============================
|
===============================
|
||||||
|
|
||||||
PLEASE READ THESE GUIDELINES CAREFULLY BEFORE ANY CONTRIBUTION!
|
|
||||||
|
|
||||||
## Crash reporting
|
## Crash reporting
|
||||||
|
|
||||||
Do not report crashes in the GitHub issue tracker. NewPipe has an automated crash report system that will ask you to
|
Report crashes through the **automated crash report system** of NewPipe.
|
||||||
send a report via e-mail when a crash occurs. This contains all the data we need for debugging, and allows you to even
|
This way all the data needed for debugging is included in your bugreport for GitHub.
|
||||||
add a comment to it. You'll see exactly what is sent, the system is 100% transparent.
|
You'll see *exactly* what is sent, be able to add **your comments**, and then send it.
|
||||||
|
|
||||||
## Issue reporting/feature requests
|
## Issue reporting/feature requests
|
||||||
|
|
||||||
* Search the [existing issues](https://github.com/TeamNewPipe/NewPipe/issues) first to make sure your issue/feature
|
* **Already reported**? Browse the [existing issues](https://github.com/TeamNewPipe/NewPipe/issues) to make sure your issue/feature hasn't been reported/requested.
|
||||||
hasn't been reported/requested before
|
* **Already fixed**? Check whether your issue/feature is already fixed/implemented.
|
||||||
* Check whether your issue/feature is already fixed/implemented
|
* **Still relevant**? Check if the issue still exists in the latest release/beta version.
|
||||||
* Check if the issue still exists in the latest release/beta version
|
* **Can you fix it**? If you are an Android/Java developer, you are always welcome to fix an issue or implement a feature yourself. PRs welcome! See [Code contribution](#code-contribution) for more info.
|
||||||
* If you are an Android/Java developer, you are always welcome to fix/implement an issue/a feature yourself. PRs welcome!
|
* **Is it in English**? Issues in other languages will be ignored unless someone translates them.
|
||||||
* We use English for development. Issues in other languages will be closed and ignored.
|
* **Is it one issue**? Multiple issues require multiple reports, that can be linked to track their statuses.
|
||||||
* Please only add *one* issue at a time. Do not put multiple issues into one thread.
|
* **The template**: Fill it out, everyone wins. Your issue has a chance of getting fixed.
|
||||||
* When reporting a bug please give us a context, and a description how to reproduce it.
|
|
||||||
* Issues that only contain a generated bug report, but no description might be closed.
|
|
||||||
|
|
||||||
## Bug Fixing
|
|
||||||
* If you want to help NewPipe to become free of bugs (this is our utopic goal for NewPipe), you can send us an email to
|
|
||||||
tnp@newpipe.schabi.org to let me know that you intend to help. We'll send you further instructions. You may, on request,
|
|
||||||
register at our [Sentry](https://sentry.schabi.org) instance (see section "Crash reporting" for more information.
|
|
||||||
|
|
||||||
## Translation
|
## Translation
|
||||||
|
|
||||||
* NewPipe can be translated via [Weblate](https://hosted.weblate.org/projects/newpipe/strings/). You can log in there
|
* NewPipe is translated via [Weblate](https://hosted.weblate.org/projects/newpipe/strings/). Log in there with your GitHub account, or register.
|
||||||
with your GitHub account.
|
* Add the language you want to translate if it is not there already: see [How to add a new language](https://github.com/TeamNewPipe/NewPipe/wiki/How-to-add-a-new-language-to-NewPipe) in the wiki.
|
||||||
|
|
||||||
## Code contribution
|
## Code contribution
|
||||||
|
|
||||||
* Stick to NewPipe's style conventions (well, just look the other code and then do it the same way :))
|
### Guidelines
|
||||||
* Do not bring non-free software (e.g., binary blobs) into the project. Also, make sure you do not introduce Google
|
|
||||||
libraries.
|
* Stick to NewPipe's *style conventions* of [checkStyle](https://github.com/checkstyle/checkstyle) and [ktlint](https://github.com/pinterest/ktlint). They run each time you build the project.
|
||||||
* Stick to [F-Droid contribution guidelines](https://f-droid.org/wiki/page/Inclusion_Policy)
|
* Stick to [F-Droid contribution guidelines](https://f-droid.org/wiki/page/Inclusion_Policy).
|
||||||
* Make changes on a separate branch, not on the master branch. This is commonly known as *feature branch workflow*. You
|
* In particular **do not bring non-free software** (e.g. binary blobs) into the project. Make sure you do not introduce any closed-source library from Google.
|
||||||
may then send your changes as a pull request on GitHub. Patches to the email address mentioned in this document might
|
|
||||||
not be considered, GitHub is the primary platform. (This only affects you if you are a member of TeamNewPipe)
|
### Before starting development
|
||||||
* When submitting changes, you confirm that your code is licensed under the terms of the
|
|
||||||
[GNU General Public License v3](https://www.gnu.org/licenses/gpl-3.0.html).
|
* If you want to help out with an existing bug report or feature request, **leave a comment** on that issue saying you want to try your hand at it.
|
||||||
* Please test (compile and run) your code before you submit changes! Ideally, provide test feedback in the PR
|
* If there is no existing issue for what you want to work on, **open a new one** describing the changes you are planning to introduce. This gives the team and the community a chance to give **feedback** before you spend time on something that is already in development, should be done differently, or should be avoided completely.
|
||||||
description. Untested code will **not** be merged!
|
* Please show **intention to maintain your features** and code after you contribute a PR. Unmaintained code is a hassle for core developers. If you do not intend to maintain features you plan to contribute, please rethink your submission, or clearly state that in the PR description.
|
||||||
|
* Create PRs that cover only **one specific issue/solution/bug**. Do not create PRs that are huge monoliths and could have been split into multiple independent contributions.
|
||||||
|
* NewPipe uses [NewPipeExtractor](https://github.com/TeamNewPipe/NewPipeExtractor) to fetch data from services. If you need to change something there, you must test your changes in NewPipe. Telling NewPipe to use your extractor version can be accomplished by editing the `app/build.gradle` file: the comments under the "NewPipe libraries" section of `dependencies` will help you out.
|
||||||
|
|
||||||
|
### Kotlin in NewPipe
|
||||||
|
* NewPipe will remain mostly Java for time being
|
||||||
|
* Contributions containing a simple conversion from Java to Kotlin should be avoided. Conversions to Kotlin should only be done if Kotlin actually brings improvements like bug fixes or better performance which are not, or only with much more effort, implementable in Java. The core team sees Java as an easier to learn and generally well adopted programming language.
|
||||||
|
|
||||||
|
### Creating a Pull Request (PR)
|
||||||
|
|
||||||
|
* Make changes on a **separate branch** with a meaningful name, not on the _master_ branch or the _dev_ branch. This is commonly known as *feature branch workflow*. You may then send your changes as a pull request (PR) on GitHub.
|
||||||
|
* Please **test** (compile and run) your code before submitting changes! Ideally, provide test feedback in the PR description. Untested code will **not** be merged!
|
||||||
|
* Respond if someone requests changes or otherwise raises issues about your PRs.
|
||||||
* Try to figure out yourself why builds on our CI fail.
|
* Try to figure out yourself why builds on our CI fail.
|
||||||
* Make sure your PR is up-to-date with the rest of the code. Often, a simple click on "Update branch" will do the job,
|
* Make sure your PR is **up-to-date** with the rest of the code. Often, a simple click on "Update branch" will do the job, but if not, you must *rebase* your branch on the `dev` branch manually and resolve the conflicts on your own. You can find help [on the wiki](https://github.com/TeamNewPipe/NewPipe/wiki/How-to-merge-a-PR). Doing this makes the maintainers' job way easier.
|
||||||
but if not, you are asked to merge the master branch manually and resolve the problems on your own. That will make the
|
|
||||||
maintainers' jobs way easier.
|
## IDE setup & building the app
|
||||||
* Please show intention to maintain your features and code after you contributed it. Unmaintained code is a hassle for
|
|
||||||
the core developers, and just adds work. If you do not intend to maintain features you contributed, please think again
|
### Basic setup
|
||||||
about submission, or clearly state that in the description of your PR.
|
|
||||||
* Respond yourselves if someone requests changes or otherwise raises issues about your PRs.
|
NewPipe is developed using [Android Studio](https://developer.android.com/studio/). Learn more about how to install it and how it works in the [official documentation](https://developer.android.com/studio/intro). In particular, make sure you have accepted Android Studio's SDK licences. Once Android Studio is ready, setting up the NewPipe project is fairly simple:
|
||||||
* Check if your contributions align with the [fdroid inclusion guidelines](https://f-droid.org/en/docs/Inclusion_Policy/).
|
- Clone the NewPipe repository with `git clone https://github.com/TeamNewPipe/NewPipe.git` (or use the link from your own fork, if you want to open a PR).
|
||||||
* Check if your submission can be build with the current fdroid build server setup.
|
- Open the folder you just cloned with Android Studio.
|
||||||
* Send PR that only cover one specific issue/solution/bug. Do not send PRs that are huge and consists of multiple
|
- Build and run it just like you would do with any other app, with the green triangle in the top bar.
|
||||||
independent solutions.
|
|
||||||
|
You may find [SonarLint](https://www.sonarlint.org/intellij)'s **inspections** useful in helping you to write good code and prevent bugs.
|
||||||
|
|
||||||
|
### checkStyle setup
|
||||||
|
|
||||||
|
The [checkStyle](https://github.com/checkstyle/checkstyle) plugin verifies that Java code abides by the project style. It runs automatically each time you build the project. If you want to view errors directly in the editor, instead of having to skim through the build output, you can install an Android Studio plugin:
|
||||||
|
- Go to `File -> Settings -> Plugins`, search for `checkstyle` and install `CheckStyle-IDEA`.
|
||||||
|
- Go to `File -> Settings -> Tools -> Checkstyle`.
|
||||||
|
- Add NewPipe's configuration file by clicking the `+` in the right toolbar of the "Configuration File" list.
|
||||||
|
- Under the "Use a local Checkstyle file" bullet, click on `Browse` and pick the file named `checkstyle.xml` in the project's root folder.
|
||||||
|
- Enable "Store relative to project location" so that moving the directory around does not create issues.
|
||||||
|
- Insert a description in the top bar, then click `Next` and then `Finish`.
|
||||||
|
- Activate the configuration file you just added by enabling the checkbox on the left.
|
||||||
|
- Click `Ok` and you are done.
|
||||||
|
|
||||||
|
### ktlint setup
|
||||||
|
|
||||||
|
The [ktlint](https://github.com/pinterest/ktlint) plugin does the same job as checkStyle for Kotlin files. Installing the related plugin is as simple as going to `File -> Settings -> Plugins`, searching for `ktlint` and installing `Ktlint (unofficial)`.
|
||||||
|
|
||||||
## Communication
|
## Communication
|
||||||
|
|
||||||
* WE DO NOW HAVE A MAILING LIST: [newpipe@list.schabi.org](https://list.schabi.org/cgi-bin/mailman/listinfo/newpipe).
|
* The #newpipe channel on Libera Chat (`ircs://irc.libera.chat:6697/newpipe`) has the core team and other developers in it. [Click here for webchat](https://web.libera.chat/#newpipe)!
|
||||||
* There is an IRC channel on Freenode which is regularly visited by the core team and other developers:
|
* You can also use a Matrix account to join the NewPipe channel at [#newpipe:libera.chat](https://matrix.to/#/#newpipe:libera.chat). Some convenient clients, available both for phone and desktop, are listed at that link.
|
||||||
[#newpipe](irc:irc.freenode.net/newpipe). [Click here for Webchat](https://webchat.freenode.net/?channels=newpipe)!
|
* You can post your suggestions, changes, ideas etc. on either GitHub or IRC.
|
||||||
* If you want to get in touch with the core team or one of our other contributors you can send an email to
|
|
||||||
tnp(at)schabi.org. Please do not send issue reports, they will be ignored and remain unanswered! Use the GitHub issue
|
|
||||||
tracker described above!
|
|
||||||
* Feel free to post suggestions, changes, ideas etc. on GitHub, IRC or the mailing list!
|
|
||||||
|
1
.github/FUNDING.yml
vendored
1
.github/FUNDING.yml
vendored
@@ -1 +1,2 @@
|
|||||||
liberapay: TeamNewPipe
|
liberapay: TeamNewPipe
|
||||||
|
custom: 'https://newpipe.net/donate/'
|
||||||
|
44
.github/ISSUE_TEMPLATE/bug_report.md
vendored
44
.github/ISSUE_TEMPLATE/bug_report.md
vendored
@@ -1,44 +0,0 @@
|
|||||||
---
|
|
||||||
name: Bug report
|
|
||||||
about: Create a bug report to help us improve
|
|
||||||
labels: bug
|
|
||||||
assignees: ''
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
<!--
|
|
||||||
Oh no, a bug! It happens. Thanks for reporting an issue with NewPipe.
|
|
||||||
|
|
||||||
Use this template to notify us if you found a bug.
|
|
||||||
|
|
||||||
To make it easier for us to help you please enter detailed information below.
|
|
||||||
|
|
||||||
Please note, we only support the latest version of NewPipe and the master branch. Make sure you have that version installed. If you don't, upgrade & reproduce the problem before opening the issue. The release page (https://github.com/TeamNewPipe/NewPipe/releases/latest) is the go-to place to get this version. In order to check your app version, open the left drawer and click on "About".
|
|
||||||
|
|
||||||
P.S.: Our contribution guidelines might be a nice document to read before you fill out the report :) You can find it at https://github.com/TeamNewPipe/NewPipe/blob/HEAD/.github/CONTRIBUTING.md
|
|
||||||
-->
|
|
||||||
### Version
|
|
||||||
<!-- Which version are you using? -->
|
|
||||||
-
|
|
||||||
|
|
||||||
|
|
||||||
### Steps to reproduce the bug
|
|
||||||
<!-- If you can't reproduce it, please try to give as many details as possible on how you think you got to the bug. -->
|
|
||||||
Steps to reproduce the behavior:
|
|
||||||
1. Go to '...'
|
|
||||||
2. Press on '....'
|
|
||||||
3. Swipe down to '....'
|
|
||||||
|
|
||||||
### Expected behavior
|
|
||||||
Tell us what you expected to happen.
|
|
||||||
|
|
||||||
### Actual behaviour
|
|
||||||
Tell us what happens instead.
|
|
||||||
|
|
||||||
### Screenshots/Screen records
|
|
||||||
If applicable, add screenshots or a screen recording to help explain your problem. GitHub should support uploading them directly in the issue field. If your file is too big, feel free to paste a link from an image/video hoster here instead.
|
|
||||||
|
|
||||||
### Logs
|
|
||||||
If your bug includes a crash, please head over to the [incredible bugreport to markdown converter](https://teamnewpipe.github.io/CrashReportToMarkdown/). Copy the result. Paste it here:
|
|
||||||
|
|
||||||
<!-- That's right, here! -->
|
|
113
.github/ISSUE_TEMPLATE/bug_report.yml
vendored
Normal file
113
.github/ISSUE_TEMPLATE/bug_report.yml
vendored
Normal file
@@ -0,0 +1,113 @@
|
|||||||
|
name: Bug report
|
||||||
|
description: Create a bug report to help us improve
|
||||||
|
labels: [bug]
|
||||||
|
body:
|
||||||
|
- type: markdown
|
||||||
|
attributes:
|
||||||
|
value: |
|
||||||
|
Thank you for helping to make NewPipe better by reporting a bug. :hugs:
|
||||||
|
|
||||||
|
Please fill in as much information as possible about your bug so that we don't have to play "information ping-pong" and can help you immediately.
|
||||||
|
|
||||||
|
- type: checkboxes
|
||||||
|
id: checklist
|
||||||
|
attributes:
|
||||||
|
label: "Checklist"
|
||||||
|
options:
|
||||||
|
- label: "I am able to reproduce the bug with the [latest version](https://github.com/TeamNewPipe/NewPipe/releases/latest)."
|
||||||
|
required: true
|
||||||
|
- label: "I made sure that there are *no existing issues* - [open](https://github.com/TeamNewPipe/NewPipe/issues) or [closed](https://github.com/TeamNewPipe/NewPipe/issues?q=is%3Aissue+is%3Aclosed) - which I could contribute my information to."
|
||||||
|
required: true
|
||||||
|
- label: "I have taken the time to fill in all the required details. I understand that the bug report will be dismissed otherwise."
|
||||||
|
required: true
|
||||||
|
- label: "This issue contains only one bug."
|
||||||
|
required: true
|
||||||
|
- label: "I have read and understood the [contribution guidelines](https://github.com/TeamNewPipe/NewPipe/blob/dev/.github/CONTRIBUTING.md)."
|
||||||
|
required: true
|
||||||
|
|
||||||
|
- type: input
|
||||||
|
id: app-version
|
||||||
|
attributes:
|
||||||
|
label: Affected version
|
||||||
|
description: "In which NewPipe version did you encounter the bug?"
|
||||||
|
placeholder: "x.xx.x - Can be seen in the app from the 'About' section in the sidebar"
|
||||||
|
validations:
|
||||||
|
required: true
|
||||||
|
|
||||||
|
- type: textarea
|
||||||
|
id: steps-to-reproduce
|
||||||
|
attributes:
|
||||||
|
label: Steps to reproduce the bug
|
||||||
|
description: |
|
||||||
|
What did you do for the bug to show up?
|
||||||
|
|
||||||
|
If you can't cause the bug to show up again reliably (and hence don't have a proper set of steps to give us), please still try to give as many details as possible on how you think you encountered the bug.
|
||||||
|
placeholder: |
|
||||||
|
1. Go to '...'
|
||||||
|
2. Press on '....'
|
||||||
|
3. Swipe down to '....'
|
||||||
|
validations:
|
||||||
|
required: true
|
||||||
|
|
||||||
|
- type: textarea
|
||||||
|
id: expected-behavior
|
||||||
|
attributes:
|
||||||
|
label: Expected behavior
|
||||||
|
description: |
|
||||||
|
Tell us what you expect to happen.
|
||||||
|
|
||||||
|
- type: textarea
|
||||||
|
id: actual-behavior
|
||||||
|
attributes:
|
||||||
|
label: Actual behavior
|
||||||
|
description: |
|
||||||
|
Tell us what happens with the steps given above.
|
||||||
|
|
||||||
|
- type: textarea
|
||||||
|
id: screen-media
|
||||||
|
attributes:
|
||||||
|
label: Screenshots/Screen recordings
|
||||||
|
description: |
|
||||||
|
A picture or video is worth a thousand words.
|
||||||
|
|
||||||
|
If applicable, add screenshots or a screen recording to help explain your problem.
|
||||||
|
GitHub supports uploading them directly in the text box.
|
||||||
|
If your file is too big for Github to accept, try to compress it (ZIP-file) or feel free to paste a link to an image/video hoster here instead.
|
||||||
|
|
||||||
|
:heavy_exclamation_mark: DON'T POST SCREENSHOTS OF THE ERROR PAGE.
|
||||||
|
Instead, follow the instructions in the "Logs" section below.
|
||||||
|
|
||||||
|
- type: textarea
|
||||||
|
id: logs
|
||||||
|
attributes:
|
||||||
|
label: Logs
|
||||||
|
description: |
|
||||||
|
If your bug includes a crash (where you're shown the Error Report page with a bunch of info), tap on "Copy formatted report" at the bottom and paste it here.
|
||||||
|
|
||||||
|
- type: input
|
||||||
|
id: device-os-info
|
||||||
|
attributes:
|
||||||
|
label: Affected Android/Custom ROM version
|
||||||
|
description: |
|
||||||
|
With what operating system (+ version) did you encounter the bug?
|
||||||
|
placeholder: "Example: Android 12 / LineageOS 18.1"
|
||||||
|
|
||||||
|
- type: input
|
||||||
|
id: device-model-info
|
||||||
|
attributes:
|
||||||
|
label: Affected device model
|
||||||
|
description: |
|
||||||
|
On what device did you encounter the bug?
|
||||||
|
placeholder: "Example: Huawei P20 lite (ANE-LX1) / Samsung Galaxy S20"
|
||||||
|
|
||||||
|
- type: textarea
|
||||||
|
id: additional-information
|
||||||
|
attributes:
|
||||||
|
label: Additional information
|
||||||
|
description: |
|
||||||
|
Any other information you'd like to include, for instance that
|
||||||
|
* the affected device is foldable or a TV
|
||||||
|
* you have disabled all animations on your device
|
||||||
|
* your cat disabled your network connection
|
||||||
|
* ...
|
||||||
|
|
8
.github/ISSUE_TEMPLATE/config.yml
vendored
Normal file
8
.github/ISSUE_TEMPLATE/config.yml
vendored
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
blank_issues_enabled: false
|
||||||
|
contact_links:
|
||||||
|
- name: 💬 IRC
|
||||||
|
url: https://web.libera.chat/#newpipe
|
||||||
|
about: Chat with us via IRC for quick Q/A
|
||||||
|
- name: 💬 Matrix
|
||||||
|
url: https://matrix.to/#/#newpipe:libera.chat
|
||||||
|
about: Chat with us via Matrix for quick Q/A
|
28
.github/ISSUE_TEMPLATE/feature_request.md
vendored
28
.github/ISSUE_TEMPLATE/feature_request.md
vendored
@@ -1,28 +0,0 @@
|
|||||||
---
|
|
||||||
name: Feature request
|
|
||||||
about: Suggest an idea for this project
|
|
||||||
labels: enhancement
|
|
||||||
assignees: ''
|
|
||||||
|
|
||||||
---
|
|
||||||
<!-- Hey. Our contribution guidelines (https://github.com/TeamNewPipe/NewPipe/blob/HEAD/.github/CONTRIBUTING.md) might be an appropriate
|
|
||||||
document to read before you fill out the request :) -->
|
|
||||||
#### Is your feature request related to a problem? Please describe it
|
|
||||||
A clear and concise description of what the problem is.
|
|
||||||
Example: *I want to do X, but there is no way to do it.*
|
|
||||||
|
|
||||||
#### Describe the solution you'd like
|
|
||||||
A clear and concise description of what you want to happen.
|
|
||||||
Example: *I think it would be nice if you add feature Y which makes X possible.*
|
|
||||||
|
|
||||||
#### (Optional) Describe alternatives you've considered
|
|
||||||
A clear and concise description of any alternative solutions or features you've considered.
|
|
||||||
Example: *I considered Z, but that didn't turn out to be a good idea because...*
|
|
||||||
|
|
||||||
#### Additional context
|
|
||||||
Add any other context or screenshots about the feature request here.
|
|
||||||
Example: *Here's a photo of my cat!*
|
|
||||||
|
|
||||||
#### How will you/everyone benefit from this feature?
|
|
||||||
Convince us! How does it change your NewPipe experience and/or your life?
|
|
||||||
The better this paragraph is, the more likely a developer will think about working on it.
|
|
51
.github/ISSUE_TEMPLATE/feature_request.yml
vendored
Normal file
51
.github/ISSUE_TEMPLATE/feature_request.yml
vendored
Normal file
@@ -0,0 +1,51 @@
|
|||||||
|
name: Feature request
|
||||||
|
description: Suggest an idea for this project
|
||||||
|
labels: [enhancement]
|
||||||
|
body:
|
||||||
|
- type: markdown
|
||||||
|
attributes:
|
||||||
|
value: |
|
||||||
|
Thank you for helping to make NewPipe better by suggesting a feature. :hugs:
|
||||||
|
|
||||||
|
Your ideas are highly welcome! The app is made for you, the users, after all.
|
||||||
|
|
||||||
|
- type: checkboxes
|
||||||
|
id: checklist
|
||||||
|
attributes:
|
||||||
|
label: "Checklist"
|
||||||
|
options:
|
||||||
|
- label: "I made sure that there are *no existing issues* - [open](https://github.com/TeamNewPipe/NewPipe/issues) or [closed](https://github.com/TeamNewPipe/NewPipe/issues?q=is%3Aissue+is%3Aclosed) - which I could contribute my information to."
|
||||||
|
required: true
|
||||||
|
- label: "I'm aware that this is a request for NewPipe itself and that requests for adding a new service need to be made at [NewPipeExtractor](https://github.com/TeamNewPipe/NewPipeExtractor/issues)."
|
||||||
|
required: true
|
||||||
|
- label: "I have taken the time to fill in all the required details. I understand that the feature request will be dismissed otherwise."
|
||||||
|
required: true
|
||||||
|
- label: "This issue contains only one feature request."
|
||||||
|
required: true
|
||||||
|
- label: "I have read and understood the [contribution guidelines](https://github.com/TeamNewPipe/NewPipe/blob/dev/.github/CONTRIBUTING.md)."
|
||||||
|
required: true
|
||||||
|
|
||||||
|
|
||||||
|
- type: textarea
|
||||||
|
id: feature-description
|
||||||
|
attributes:
|
||||||
|
label: Feature description
|
||||||
|
description: |
|
||||||
|
Explain how you want the app's look or behavior to change to suit your needs.
|
||||||
|
validations:
|
||||||
|
required: true
|
||||||
|
|
||||||
|
- type: textarea
|
||||||
|
id: why-is-the-feature-requested
|
||||||
|
attributes:
|
||||||
|
label: Why do you want this feature?
|
||||||
|
description: |
|
||||||
|
Describe any problem or limitation you come across while using the app which would be solved by this feature.
|
||||||
|
validations:
|
||||||
|
required: true
|
||||||
|
|
||||||
|
- type: textarea
|
||||||
|
id: additional-information
|
||||||
|
attributes:
|
||||||
|
label: Additional information
|
||||||
|
description: Any other information you'd like to include, for instance sketches, mockups, pictures of cats, etc.
|
35
.github/ISSUE_TEMPLATE/question.yml
vendored
Normal file
35
.github/ISSUE_TEMPLATE/question.yml
vendored
Normal file
@@ -0,0 +1,35 @@
|
|||||||
|
name: Question
|
||||||
|
description: Ask about anything NewPipe-related
|
||||||
|
labels: [question]
|
||||||
|
body:
|
||||||
|
- type: markdown
|
||||||
|
attributes:
|
||||||
|
value: |
|
||||||
|
Thanks for taking the time to fill out this issue! :hugs:
|
||||||
|
|
||||||
|
Note that you can also ask questions on our [IRC channel](https://web.libera.chat/#newpipe).
|
||||||
|
|
||||||
|
- type: checkboxes
|
||||||
|
id: checklist
|
||||||
|
attributes:
|
||||||
|
label: "Checklist"
|
||||||
|
options:
|
||||||
|
- label: "I made sure that there are *no existing issues* - [open](https://github.com/TeamNewPipe/NewPipe/issues) or [closed](https://github.com/TeamNewPipe/NewPipe/issues?q=is%3Aissue+is%3Aclosed) - which I could contribute my information to."
|
||||||
|
required: true
|
||||||
|
- label: "I have taken the time to fill in all the required details. I understand that the question will be dismissed otherwise."
|
||||||
|
required: true
|
||||||
|
- label: "I have read and understood the [contribution guidelines](https://github.com/TeamNewPipe/NewPipe/blob/dev/.github/CONTRIBUTING.md)."
|
||||||
|
required: true
|
||||||
|
|
||||||
|
- type: textarea
|
||||||
|
id: what-is-the-question
|
||||||
|
attributes:
|
||||||
|
label: What is/are your question(s)?
|
||||||
|
validations:
|
||||||
|
required: true
|
||||||
|
|
||||||
|
- type: textarea
|
||||||
|
id: additional-information
|
||||||
|
attributes:
|
||||||
|
label: Additional information
|
||||||
|
description: Any other information you'd like to include, for instance sketches, mockups, pictures of cats, etc.
|
34
.github/PULL_REQUEST_TEMPLATE.md
vendored
34
.github/PULL_REQUEST_TEMPLATE.md
vendored
@@ -1,26 +1,34 @@
|
|||||||
<!-- Hey there. Thank you so much for improving NewPipe. Please take a moment to fill out the following suggestion on how to structure this PR description. Having roughly the same layout helps everyone considerably :)-->
|
<!-- Hey there. Thank you so much for improving NewPipe, and filling out the details. Having roughly the same layout helps everyone considerably :)-->
|
||||||
|
|
||||||
#### What is it?
|
#### What is it?
|
||||||
- [ ] Bug fix
|
- [ ] Bugfix (user facing)
|
||||||
- [ ] Feature
|
- [ ] Feature (user facing)
|
||||||
|
- [ ] Codebase improvement (dev facing)
|
||||||
|
- [ ] Meta improvement to the project (dev facing)
|
||||||
|
|
||||||
#### Long description of the changes in your PR
|
#### Description of the changes in your PR
|
||||||
<!-- While bullet points are the norm in this section, feel free to write a text instead if you can't fit it in a list -->
|
<!-- While bullet points are the norm in this section, feel free to write free-form text instead of a list -->
|
||||||
- record videos
|
- record videos
|
||||||
- create clones
|
- create clones
|
||||||
- take over the world
|
- take over the world
|
||||||
|
|
||||||
|
#### Before/After Screenshots/Screen Record
|
||||||
|
<!-- If your PR changes the app's UI in any way, please include screenshots or a video showing exactly what changed, so that developers and users can pinpoint it easily. Delete this if it doesn't apply to your PR.-->
|
||||||
|
- Before:
|
||||||
|
- After:
|
||||||
|
|
||||||
#### Fixes the following issue(s)
|
#### Fixes the following issue(s)
|
||||||
<!-- Also add reddit or other links which are relevant to your change. -->
|
<!-- Prefix issues with "Fixes" so that GitHub closes them when the PR is merged (note that each "Fixes #" should be in its own item). Also add any other relevant links. -->
|
||||||
-
|
- Fixes #
|
||||||
|
|
||||||
#### Relies on the following changes
|
#### Relies on the following changes
|
||||||
<!-- Delete this if it doesn't apply to you. -->
|
<!-- Delete this if it doesn't apply to your PR. -->
|
||||||
-
|
-
|
||||||
|
|
||||||
#### Testing apk
|
#### APK testing
|
||||||
<!-- Ensure that you have your changes on a new branch which has a meaningful name. This name will be used as a suffix for the app ID to allow installing and testing multiple versions of NewPipe. Do NOT name your branches like "patch-0" and "feature-1". For example, if your PR implements a bug fix for comments, an appropriate branch name would be "commentfix". -->
|
<!-- Use a new, meaningfully named branch. The name is used as a suffix for the app ID to allow installing and testing multiple versions of NewPipe, e.g. "commentfix", if your PR implements a bugfix for comments. (No names like "patch-0" and "feature-1".) -->
|
||||||
debug.zip
|
<!-- Remove the following line if you directly link the APK created by the CI pipeline. Directly linking is preferred if you need to let users test.-->
|
||||||
|
The APK can be found by going to the "Checks" tab below the title. On the left pane, click on "CI", scroll down to "artifacts" and click "app" to download the zip file which contains the debug APK of this PR.
|
||||||
|
|
||||||
#### Agreement
|
#### Due diligence
|
||||||
- [ ] I carefully read the [contribution guidelines](https://github.com/TeamNewPipe/NewPipe/blob/HEAD/.github/CONTRIBUTING.md) and agree to them.
|
- [ ] I read the [contribution guidelines](https://github.com/TeamNewPipe/NewPipe/blob/HEAD/.github/CONTRIBUTING.md).
|
||||||
|
116
.github/workflows/ci.yml
vendored
Normal file
116
.github/workflows/ci.yml
vendored
Normal file
@@ -0,0 +1,116 @@
|
|||||||
|
name: CI
|
||||||
|
|
||||||
|
on:
|
||||||
|
workflow_dispatch:
|
||||||
|
pull_request:
|
||||||
|
branches:
|
||||||
|
- dev
|
||||||
|
- master
|
||||||
|
paths-ignore:
|
||||||
|
- 'README.md'
|
||||||
|
- 'doc/**'
|
||||||
|
- 'fastlane/**'
|
||||||
|
- 'assets/**'
|
||||||
|
- '.github/**/*.md'
|
||||||
|
- '.github/FUNDING.yml'
|
||||||
|
- '.github/ISSUE_TEMPLATE/**'
|
||||||
|
push:
|
||||||
|
branches:
|
||||||
|
- dev
|
||||||
|
- master
|
||||||
|
paths-ignore:
|
||||||
|
- 'README.md'
|
||||||
|
- 'doc/**'
|
||||||
|
- 'fastlane/**'
|
||||||
|
- 'assets/**'
|
||||||
|
- '.github/**/*.md'
|
||||||
|
- '.github/FUNDING.yml'
|
||||||
|
- '.github/ISSUE_TEMPLATE/**'
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
build-and-test-jvm:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v2
|
||||||
|
- uses: gradle/wrapper-validation-action@v1
|
||||||
|
|
||||||
|
- name: create and checkout branch
|
||||||
|
# push events already checked out the branch
|
||||||
|
if: github.event_name == 'pull_request'
|
||||||
|
run: git checkout -B ${{ github.head_ref }}
|
||||||
|
|
||||||
|
- name: set up JDK 11
|
||||||
|
uses: actions/setup-java@v2
|
||||||
|
with:
|
||||||
|
java-version: 11
|
||||||
|
distribution: "temurin"
|
||||||
|
cache: 'gradle'
|
||||||
|
|
||||||
|
- name: Build debug APK and run jvm tests
|
||||||
|
run: ./gradlew assembleDebug lintDebug testDebugUnitTest --stacktrace -DskipFormatKtlint
|
||||||
|
|
||||||
|
- name: Upload APK
|
||||||
|
uses: actions/upload-artifact@v2
|
||||||
|
with:
|
||||||
|
name: app
|
||||||
|
path: app/build/outputs/apk/debug/*.apk
|
||||||
|
|
||||||
|
test-android:
|
||||||
|
# macos has hardware acceleration. See android-emulator-runner action
|
||||||
|
runs-on: macos-latest
|
||||||
|
timeout-minutes: 20
|
||||||
|
strategy:
|
||||||
|
matrix:
|
||||||
|
# api-level 19 is min sdk, but throws errors related to desugaring
|
||||||
|
api-level: [ 21, 29 ]
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v2
|
||||||
|
|
||||||
|
- name: set up JDK 11
|
||||||
|
uses: actions/setup-java@v2
|
||||||
|
with:
|
||||||
|
java-version: 11
|
||||||
|
distribution: "temurin"
|
||||||
|
cache: 'gradle'
|
||||||
|
|
||||||
|
- name: Run android tests
|
||||||
|
uses: reactivecircus/android-emulator-runner@v2
|
||||||
|
with:
|
||||||
|
api-level: ${{ matrix.api-level }}
|
||||||
|
# workaround to emulator bug: https://github.com/ReactiveCircus/android-emulator-runner/issues/160
|
||||||
|
emulator-build: 7425822
|
||||||
|
script: ./gradlew connectedCheck --stacktrace
|
||||||
|
|
||||||
|
- name: Upload test report when tests fail # because the printed out stacktrace (console) is too short, see also #7553
|
||||||
|
uses: actions/upload-artifact@v2
|
||||||
|
if: failure()
|
||||||
|
with:
|
||||||
|
name: android-test-report-api${{ matrix.api-level }}
|
||||||
|
path: app/build/reports/androidTests/connected/**
|
||||||
|
|
||||||
|
sonar:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v2
|
||||||
|
with:
|
||||||
|
fetch-depth: 0 # Shallow clones should be disabled for a better relevancy of analysis
|
||||||
|
|
||||||
|
- name: Set up JDK 11
|
||||||
|
uses: actions/setup-java@v2
|
||||||
|
with:
|
||||||
|
java-version: 11 # Sonar requires JDK 11
|
||||||
|
distribution: "temurin"
|
||||||
|
cache: 'gradle'
|
||||||
|
|
||||||
|
- name: Cache SonarCloud packages
|
||||||
|
uses: actions/cache@v2
|
||||||
|
with:
|
||||||
|
path: ~/.sonar/cache
|
||||||
|
key: ${{ runner.os }}-sonar
|
||||||
|
restore-keys: ${{ runner.os }}-sonar
|
||||||
|
|
||||||
|
- name: Build and analyze
|
||||||
|
env:
|
||||||
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} # Needed to get PR information, if any
|
||||||
|
SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }}
|
||||||
|
run: ./gradlew build sonarqube --info
|
107
.github/workflows/image-minimizer.js
vendored
Normal file
107
.github/workflows/image-minimizer.js
vendored
Normal file
@@ -0,0 +1,107 @@
|
|||||||
|
/*
|
||||||
|
* Script for minimizing big images (jpg,gif,png) when they are uploaded to GitHub and not edited otherwise
|
||||||
|
*/
|
||||||
|
module.exports = async ({github, context}) => {
|
||||||
|
const IGNORE_KEY = '<!-- IGNORE IMAGE MINIFY -->';
|
||||||
|
const IGNORE_ALT_NAME_END = 'ignoreImageMinify';
|
||||||
|
const IMG_MAX_HEIGHT_PX = 600;
|
||||||
|
|
||||||
|
// Get the body of the image
|
||||||
|
let initialBody = null;
|
||||||
|
if (context.eventName == 'issue_comment') {
|
||||||
|
initialBody = context.payload.comment.body;
|
||||||
|
} else if (context.eventName == 'issues') {
|
||||||
|
initialBody = context.payload.issue.body;
|
||||||
|
} else {
|
||||||
|
console.log('Aborting: No body found');
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
console.log(`Found body: \n${initialBody}\n`);
|
||||||
|
|
||||||
|
// Check if we should ignore the currently processing element
|
||||||
|
if (initialBody.includes(IGNORE_KEY)) {
|
||||||
|
console.log('Ignoring: Body contains IGNORE_KEY');
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Regex for finding images (simple variant) 
|
||||||
|
const REGEX_IMAGE_LOOKUP = /\!\[(.*)\]\((https:\/\/[-a-z0-9]+\.githubusercontent\.com\/\d+\/[-0-9a-f]{32,512}\.(jpg|gif|png))\)/gm;
|
||||||
|
|
||||||
|
// Check if we found something
|
||||||
|
let foundSimpleImages = REGEX_IMAGE_LOOKUP.test(initialBody);
|
||||||
|
if (!foundSimpleImages) {
|
||||||
|
console.log('Found no simple images to process');
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
console.log('Found at least one simple image to process');
|
||||||
|
|
||||||
|
// Require the probe lib for getting the image dimensions
|
||||||
|
const probe = require('probe-image-size');
|
||||||
|
|
||||||
|
// Try to find and replace the images with minimized ones
|
||||||
|
let newBody = await replaceAsync(initialBody, REGEX_IMAGE_LOOKUP, async (match, g1, g2) => {
|
||||||
|
console.log(`Found match '${match}'`);
|
||||||
|
|
||||||
|
if (g1.endsWith(IGNORE_ALT_NAME_END)) {
|
||||||
|
console.log(`Ignoring match '${match}': IGNORE_ALT_NAME_END`);
|
||||||
|
return match;
|
||||||
|
}
|
||||||
|
|
||||||
|
let shouldModifiy = false;
|
||||||
|
try {
|
||||||
|
console.log(`Probing ${g2}`);
|
||||||
|
let probeResult = await probe(g2);
|
||||||
|
if (probeResult == null) {
|
||||||
|
throw 'No probeResult';
|
||||||
|
}
|
||||||
|
if (probeResult.hUnits != 'px') {
|
||||||
|
throw `Unexpected probeResult.hUnits (expected px but got ${probeResult.hUnits})`;
|
||||||
|
}
|
||||||
|
|
||||||
|
shouldModifiy = probeResult.height > IMG_MAX_HEIGHT_PX;
|
||||||
|
} catch(e) {
|
||||||
|
console.log('Probing failed:', e);
|
||||||
|
// Immediately abort
|
||||||
|
return match;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (shouldModifiy) {
|
||||||
|
console.log(`Modifying match '${match}'`);
|
||||||
|
return `<img alt="${g1}" src="${g2}" height=${IMG_MAX_HEIGHT_PX} />`;
|
||||||
|
}
|
||||||
|
|
||||||
|
console.log(`Match '${match}' is ok/will not be modified`);
|
||||||
|
return match;
|
||||||
|
});
|
||||||
|
|
||||||
|
// Update the corresponding element
|
||||||
|
if (context.eventName == 'issue_comment') {
|
||||||
|
console.log('Updating comment with id', context.payload.comment.id);
|
||||||
|
await github.rest.issues.updateComment({
|
||||||
|
comment_id: context.payload.comment.id,
|
||||||
|
owner: context.repo.owner,
|
||||||
|
repo: context.repo.repo,
|
||||||
|
body: newBody
|
||||||
|
})
|
||||||
|
} else if (context.eventName == 'issues') {
|
||||||
|
console.log('Updating issue', context.payload.issue.number);
|
||||||
|
await github.rest.issues.update({
|
||||||
|
issue_number: context.payload.issue.number,
|
||||||
|
owner: context.repo.owner,
|
||||||
|
repo: context.repo.repo,
|
||||||
|
body: newBody
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
// Asnyc replace function from https://stackoverflow.com/a/48032528
|
||||||
|
async function replaceAsync(str, regex, asyncFn) {
|
||||||
|
const promises = [];
|
||||||
|
str.replace(regex, (match, ...args) => {
|
||||||
|
const promise = asyncFn(match, ...args);
|
||||||
|
promises.push(promise);
|
||||||
|
});
|
||||||
|
const data = await Promise.all(promises);
|
||||||
|
return str.replace(regex, () => data.shift());
|
||||||
|
}
|
||||||
|
}
|
29
.github/workflows/image-minimizer.yml
vendored
Normal file
29
.github/workflows/image-minimizer.yml
vendored
Normal file
@@ -0,0 +1,29 @@
|
|||||||
|
name: Image Minimizer
|
||||||
|
|
||||||
|
on:
|
||||||
|
issue_comment:
|
||||||
|
types: [created, edited]
|
||||||
|
issues:
|
||||||
|
types: [opened, edited]
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
try-minimize:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v2
|
||||||
|
|
||||||
|
- uses: actions/setup-node@v2
|
||||||
|
with:
|
||||||
|
node-version: 16
|
||||||
|
|
||||||
|
- name: Install probe-image-size
|
||||||
|
run: npm i probe-image-size@7.2.3 --ignore-scripts
|
||||||
|
|
||||||
|
- name: Minimize simple images
|
||||||
|
uses: actions/github-script@v5
|
||||||
|
timeout-minutes: 3
|
||||||
|
with:
|
||||||
|
script: |
|
||||||
|
const script = require('.github/workflows/image-minimizer.js');
|
||||||
|
await script({github, context});
|
20
.github/workflows/no-response.yml
vendored
Normal file
20
.github/workflows/no-response.yml
vendored
Normal file
@@ -0,0 +1,20 @@
|
|||||||
|
name: No Response
|
||||||
|
|
||||||
|
# Both `issue_comment` and `scheduled` event types are required for this Action
|
||||||
|
# to work properly.
|
||||||
|
on:
|
||||||
|
issue_comment:
|
||||||
|
types: [created]
|
||||||
|
schedule:
|
||||||
|
# Run daily at midnight.
|
||||||
|
- cron: '0 0 * * *'
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
noResponse:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- uses: lee-dohm/no-response@v0.5.0
|
||||||
|
with:
|
||||||
|
token: ${{ github.token }}
|
||||||
|
daysUntilClose: 14
|
||||||
|
responseRequiredLabel: waiting-for-author
|
24
.gitignore
vendored
24
.gitignore
vendored
@@ -1,12 +1,20 @@
|
|||||||
.gitignore
|
.gradle/
|
||||||
.gradle
|
local.properties
|
||||||
/local.properties
|
|
||||||
.DS_Store
|
.DS_Store
|
||||||
/build
|
build/
|
||||||
/captures
|
captures/
|
||||||
/app/app.iml
|
.idea/
|
||||||
/.idea
|
*.iml
|
||||||
/*.iml
|
|
||||||
*~
|
*~
|
||||||
.weblate
|
.weblate
|
||||||
*.class
|
*.class
|
||||||
|
app/debug/
|
||||||
|
app/release/
|
||||||
|
|
||||||
|
# vscode / eclipse files
|
||||||
|
*.classpath
|
||||||
|
*.project
|
||||||
|
*.settings
|
||||||
|
bin/
|
||||||
|
.vscode/
|
||||||
|
*.code-workspace
|
||||||
|
0
.gitmodules
vendored
0
.gitmodules
vendored
18
.travis.yml
18
.travis.yml
@@ -1,18 +0,0 @@
|
|||||||
language: android
|
|
||||||
jdk:
|
|
||||||
- oraclejdk8
|
|
||||||
android:
|
|
||||||
components:
|
|
||||||
# The BuildTools version used by NewPipe
|
|
||||||
- tools
|
|
||||||
- build-tools-28.0.3
|
|
||||||
|
|
||||||
# The SDK version used to compile NewPipe
|
|
||||||
- android-28
|
|
||||||
|
|
||||||
before_install:
|
|
||||||
- yes | sdkmanager "platforms;android-28"
|
|
||||||
script: ./gradlew -Dorg.gradle.jvmargs=-Xmx1536m assembleDebug lintDebug testDebugUnitTest
|
|
||||||
|
|
||||||
licenses:
|
|
||||||
- '.+'
|
|
3
app/.gitignore
vendored
3
app/.gitignore
vendored
@@ -1,3 +0,0 @@
|
|||||||
.gitignore
|
|
||||||
/build
|
|
||||||
*.iml
|
|
310
app/build.gradle
310
app/build.gradle
File diff suppressed because it is too large
Load Diff
713
app/schemas/org.schabi.newpipe.database.AppDatabase/4.json
Normal file
713
app/schemas/org.schabi.newpipe.database.AppDatabase/4.json
Normal file
File diff suppressed because it is too large
Load Diff
@@ -1,118 +0,0 @@
|
|||||||
package org.schabi.newpipe.database
|
|
||||||
|
|
||||||
import android.content.ContentValues
|
|
||||||
import android.database.sqlite.SQLiteDatabase
|
|
||||||
import androidx.room.Room
|
|
||||||
import androidx.room.testing.MigrationTestHelper
|
|
||||||
import androidx.sqlite.db.framework.FrameworkSQLiteOpenHelperFactory
|
|
||||||
import androidx.test.core.app.ApplicationProvider
|
|
||||||
import androidx.test.ext.junit.runners.AndroidJUnit4
|
|
||||||
import androidx.test.platform.app.InstrumentationRegistry
|
|
||||||
import org.junit.Assert.assertEquals
|
|
||||||
import org.junit.Assert.assertNull
|
|
||||||
import org.junit.Rule
|
|
||||||
import org.junit.Test
|
|
||||||
import org.junit.runner.RunWith
|
|
||||||
import org.schabi.newpipe.extractor.stream.StreamType
|
|
||||||
|
|
||||||
@RunWith(AndroidJUnit4::class)
|
|
||||||
class AppDatabaseTest {
|
|
||||||
companion object {
|
|
||||||
private const val DEFAULT_SERVICE_ID = 0
|
|
||||||
private const val DEFAULT_URL = "https://www.youtube.com/watch?v=cDphUib5iG4"
|
|
||||||
private const val DEFAULT_TITLE = "Test Title"
|
|
||||||
private val DEFAULT_TYPE = StreamType.VIDEO_STREAM
|
|
||||||
private const val DEFAULT_DURATION = 480L
|
|
||||||
private const val DEFAULT_UPLOADER_NAME = "Uploader Test"
|
|
||||||
private const val DEFAULT_THUMBNAIL = "https://example.com/example.jpg"
|
|
||||||
|
|
||||||
private const val DEFAULT_SECOND_SERVICE_ID = 0
|
|
||||||
private const val DEFAULT_SECOND_URL = "https://www.youtube.com/watch?v=ncQU6iBn5Fc"
|
|
||||||
}
|
|
||||||
|
|
||||||
@get:Rule val testHelper = MigrationTestHelper(InstrumentationRegistry.getInstrumentation(),
|
|
||||||
AppDatabase::class.java.canonicalName, FrameworkSQLiteOpenHelperFactory());
|
|
||||||
|
|
||||||
@Test
|
|
||||||
fun migrateDatabaseFrom2to3() {
|
|
||||||
val databaseInV2 = testHelper.createDatabase(AppDatabase.DATABASE_NAME, Migrations.DB_VER_2)
|
|
||||||
|
|
||||||
databaseInV2.run {
|
|
||||||
insert("streams", SQLiteDatabase.CONFLICT_FAIL, ContentValues().apply {
|
|
||||||
// put("uid", null)
|
|
||||||
put("service_id", DEFAULT_SERVICE_ID)
|
|
||||||
put("url", DEFAULT_URL)
|
|
||||||
put("title", DEFAULT_TITLE)
|
|
||||||
put("stream_type", DEFAULT_TYPE.name)
|
|
||||||
put("duration", DEFAULT_DURATION)
|
|
||||||
put("uploader", DEFAULT_UPLOADER_NAME)
|
|
||||||
put("thumbnail_url", DEFAULT_THUMBNAIL)
|
|
||||||
})
|
|
||||||
insert("streams", SQLiteDatabase.CONFLICT_FAIL, ContentValues().apply {
|
|
||||||
// put("uid", null)
|
|
||||||
put("service_id", DEFAULT_SECOND_SERVICE_ID)
|
|
||||||
put("url", DEFAULT_SECOND_URL)
|
|
||||||
// put("title", null)
|
|
||||||
// put("stream_type", null)
|
|
||||||
// put("duration", null)
|
|
||||||
// put("uploader", null)
|
|
||||||
// put("thumbnail_url", null)
|
|
||||||
})
|
|
||||||
insert("streams", SQLiteDatabase.CONFLICT_FAIL, ContentValues().apply {
|
|
||||||
// put("uid", null)
|
|
||||||
put("service_id", DEFAULT_SERVICE_ID)
|
|
||||||
// put("url", null)
|
|
||||||
// put("title", null)
|
|
||||||
// put("stream_type", null)
|
|
||||||
// put("duration", null)
|
|
||||||
// put("uploader", null)
|
|
||||||
// put("thumbnail_url", null)
|
|
||||||
})
|
|
||||||
close()
|
|
||||||
}
|
|
||||||
|
|
||||||
testHelper.runMigrationsAndValidate(AppDatabase.DATABASE_NAME, Migrations.DB_VER_3,
|
|
||||||
true, Migrations.MIGRATION_2_3);
|
|
||||||
|
|
||||||
val migratedDatabaseV3 = getMigratedDatabase()
|
|
||||||
val listFromDB = migratedDatabaseV3.streamDAO().all.blockingFirst()
|
|
||||||
|
|
||||||
// Only expect 2, the one with the null url will be ignored
|
|
||||||
assertEquals(2, listFromDB.size)
|
|
||||||
|
|
||||||
val streamFromMigratedDatabase = listFromDB[0]
|
|
||||||
assertEquals(DEFAULT_SERVICE_ID, streamFromMigratedDatabase.serviceId)
|
|
||||||
assertEquals(DEFAULT_URL, streamFromMigratedDatabase.url)
|
|
||||||
assertEquals(DEFAULT_TITLE, streamFromMigratedDatabase.title)
|
|
||||||
assertEquals(DEFAULT_TYPE, streamFromMigratedDatabase.streamType)
|
|
||||||
assertEquals(DEFAULT_DURATION, streamFromMigratedDatabase.duration)
|
|
||||||
assertEquals(DEFAULT_UPLOADER_NAME, streamFromMigratedDatabase.uploader)
|
|
||||||
assertEquals(DEFAULT_THUMBNAIL, streamFromMigratedDatabase.thumbnailUrl)
|
|
||||||
assertNull(streamFromMigratedDatabase.viewCount)
|
|
||||||
assertNull(streamFromMigratedDatabase.textualUploadDate)
|
|
||||||
assertNull(streamFromMigratedDatabase.uploadDate)
|
|
||||||
assertNull(streamFromMigratedDatabase.isUploadDateApproximation)
|
|
||||||
|
|
||||||
val secondStreamFromMigratedDatabase = listFromDB[1]
|
|
||||||
assertEquals(DEFAULT_SECOND_SERVICE_ID, secondStreamFromMigratedDatabase.serviceId)
|
|
||||||
assertEquals(DEFAULT_SECOND_URL, secondStreamFromMigratedDatabase.url)
|
|
||||||
assertEquals("", secondStreamFromMigratedDatabase.title)
|
|
||||||
// Should fallback to VIDEO_STREAM
|
|
||||||
assertEquals(StreamType.VIDEO_STREAM, secondStreamFromMigratedDatabase.streamType)
|
|
||||||
assertEquals(0, secondStreamFromMigratedDatabase.duration)
|
|
||||||
assertEquals("", secondStreamFromMigratedDatabase.uploader)
|
|
||||||
assertEquals("", secondStreamFromMigratedDatabase.thumbnailUrl)
|
|
||||||
assertNull(secondStreamFromMigratedDatabase.viewCount)
|
|
||||||
assertNull(secondStreamFromMigratedDatabase.textualUploadDate)
|
|
||||||
assertNull(secondStreamFromMigratedDatabase.uploadDate)
|
|
||||||
assertNull(secondStreamFromMigratedDatabase.isUploadDateApproximation)
|
|
||||||
}
|
|
||||||
|
|
||||||
private fun getMigratedDatabase(): AppDatabase {
|
|
||||||
val database: AppDatabase = Room.databaseBuilder(ApplicationProvider.getApplicationContext(),
|
|
||||||
AppDatabase::class.java, AppDatabase.DATABASE_NAME)
|
|
||||||
.build()
|
|
||||||
testHelper.closeWhenFinished(database)
|
|
||||||
return database
|
|
||||||
}
|
|
||||||
}
|
|
@@ -0,0 +1,46 @@
|
|||||||
|
package org.schabi.newpipe.error;
|
||||||
|
|
||||||
|
import android.os.Parcel;
|
||||||
|
|
||||||
|
import androidx.test.ext.junit.runners.AndroidJUnit4;
|
||||||
|
import androidx.test.filters.LargeTest;
|
||||||
|
|
||||||
|
import org.junit.Test;
|
||||||
|
import org.junit.runner.RunWith;
|
||||||
|
import org.schabi.newpipe.R;
|
||||||
|
import org.schabi.newpipe.extractor.ServiceList;
|
||||||
|
import org.schabi.newpipe.extractor.exceptions.ParsingException;
|
||||||
|
|
||||||
|
import java.util.Arrays;
|
||||||
|
|
||||||
|
import static org.junit.Assert.assertEquals;
|
||||||
|
import static org.junit.Assert.assertTrue;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Instrumented tests for {@link ErrorInfo}.
|
||||||
|
*/
|
||||||
|
@RunWith(AndroidJUnit4.class)
|
||||||
|
@LargeTest
|
||||||
|
public class ErrorInfoTest {
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void errorInfoTestParcelable() {
|
||||||
|
final ErrorInfo info = new ErrorInfo(new ParsingException("Hello"),
|
||||||
|
UserAction.USER_REPORT, "request", ServiceList.YouTube.getServiceId());
|
||||||
|
// Obtain a Parcel object and write the parcelable object to it:
|
||||||
|
final Parcel parcel = Parcel.obtain();
|
||||||
|
info.writeToParcel(parcel, 0);
|
||||||
|
parcel.setDataPosition(0);
|
||||||
|
final ErrorInfo infoFromParcel = (ErrorInfo) ErrorInfo.CREATOR.createFromParcel(parcel);
|
||||||
|
|
||||||
|
assertTrue(Arrays.toString(infoFromParcel.getStackTraces())
|
||||||
|
.contains(ErrorInfoTest.class.getSimpleName()));
|
||||||
|
assertEquals(UserAction.USER_REPORT, infoFromParcel.getUserAction());
|
||||||
|
assertEquals(ServiceList.YouTube.getServiceInfo().getName(),
|
||||||
|
infoFromParcel.getServiceName());
|
||||||
|
assertEquals("request", infoFromParcel.getRequest());
|
||||||
|
assertEquals(R.string.parsing_error, infoFromParcel.getMessageStringId());
|
||||||
|
|
||||||
|
parcel.recycle();
|
||||||
|
}
|
||||||
|
}
|
@@ -0,0 +1,178 @@
|
|||||||
|
package org.schabi.newpipe.local.history
|
||||||
|
|
||||||
|
import androidx.test.core.app.ApplicationProvider
|
||||||
|
import org.assertj.core.api.Assertions.assertThat
|
||||||
|
import org.junit.After
|
||||||
|
import org.junit.Assert.assertEquals
|
||||||
|
import org.junit.Before
|
||||||
|
import org.junit.Rule
|
||||||
|
import org.junit.Test
|
||||||
|
import org.schabi.newpipe.database.AppDatabase
|
||||||
|
import org.schabi.newpipe.database.history.model.SearchHistoryEntry
|
||||||
|
import org.schabi.newpipe.testUtil.TestDatabase
|
||||||
|
import org.schabi.newpipe.testUtil.TrampolineSchedulerRule
|
||||||
|
import java.time.LocalDateTime
|
||||||
|
import java.time.OffsetDateTime
|
||||||
|
import java.time.ZoneOffset
|
||||||
|
|
||||||
|
class HistoryRecordManagerTest {
|
||||||
|
|
||||||
|
private lateinit var manager: HistoryRecordManager
|
||||||
|
private lateinit var database: AppDatabase
|
||||||
|
|
||||||
|
@get:Rule
|
||||||
|
val trampolineScheduler = TrampolineSchedulerRule()
|
||||||
|
|
||||||
|
@Before
|
||||||
|
fun setup() {
|
||||||
|
database = TestDatabase.createReplacingNewPipeDatabase()
|
||||||
|
manager = HistoryRecordManager(ApplicationProvider.getApplicationContext())
|
||||||
|
}
|
||||||
|
|
||||||
|
@After
|
||||||
|
fun cleanUp() {
|
||||||
|
database.close()
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
fun onSearched() {
|
||||||
|
manager.onSearched(0, "Hello").test().await().assertValue(1)
|
||||||
|
|
||||||
|
// For some reason the Flowable returned by getAll() never completes, so we can't assert
|
||||||
|
// that the number of Lists it returns is exactly 1, we can only check if the first List is
|
||||||
|
// correct. Why on earth has a Flowable been used instead of a Single for getAll()?!?
|
||||||
|
val entities = database.searchHistoryDAO().all.blockingFirst()
|
||||||
|
assertThat(entities).hasSize(1)
|
||||||
|
assertThat(entities[0].id).isEqualTo(1)
|
||||||
|
assertThat(entities[0].serviceId).isEqualTo(0)
|
||||||
|
assertThat(entities[0].search).isEqualTo("Hello")
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
fun deleteSearchHistory() {
|
||||||
|
val entries = listOf(
|
||||||
|
SearchHistoryEntry(time.minusSeconds(1), 0, "A"),
|
||||||
|
SearchHistoryEntry(time.minusSeconds(2), 2, "A"),
|
||||||
|
SearchHistoryEntry(time.minusSeconds(3), 1, "B"),
|
||||||
|
SearchHistoryEntry(time.minusSeconds(4), 0, "B"),
|
||||||
|
)
|
||||||
|
|
||||||
|
// make sure all 4 were inserted
|
||||||
|
database.searchHistoryDAO().insertAll(entries)
|
||||||
|
assertThat(database.searchHistoryDAO().all.blockingFirst()).hasSameSizeAs(entries)
|
||||||
|
|
||||||
|
// try to delete only "A" entries, "B" entries should be untouched
|
||||||
|
manager.deleteSearchHistory("A").test().await().assertValue(2)
|
||||||
|
val entities = database.searchHistoryDAO().all.blockingFirst()
|
||||||
|
assertThat(entities).hasSize(2)
|
||||||
|
assertThat(entities).usingElementComparator { o1, o2 -> if (o1.hasEqualValues(o2)) 0 else 1 }
|
||||||
|
.containsExactly(*entries.subList(2, 4).toTypedArray())
|
||||||
|
|
||||||
|
// assert that nothing happens if we delete a search query that does exist in the db
|
||||||
|
manager.deleteSearchHistory("A").test().await().assertValue(0)
|
||||||
|
val entities2 = database.searchHistoryDAO().all.blockingFirst()
|
||||||
|
assertThat(entities2).hasSize(2)
|
||||||
|
assertThat(entities2).usingElementComparator { o1, o2 -> if (o1.hasEqualValues(o2)) 0 else 1 }
|
||||||
|
.containsExactly(*entries.subList(2, 4).toTypedArray())
|
||||||
|
|
||||||
|
// delete all remaining entries
|
||||||
|
manager.deleteSearchHistory("B").test().await().assertValue(2)
|
||||||
|
assertThat(database.searchHistoryDAO().all.blockingFirst()).isEmpty()
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
fun deleteCompleteSearchHistory() {
|
||||||
|
val entries = listOf(
|
||||||
|
SearchHistoryEntry(time.minusSeconds(1), 1, "A"),
|
||||||
|
SearchHistoryEntry(time.minusSeconds(2), 2, "B"),
|
||||||
|
SearchHistoryEntry(time.minusSeconds(3), 0, "C"),
|
||||||
|
)
|
||||||
|
|
||||||
|
// make sure all 3 were inserted
|
||||||
|
database.searchHistoryDAO().insertAll(entries)
|
||||||
|
assertThat(database.searchHistoryDAO().all.blockingFirst()).hasSameSizeAs(entries)
|
||||||
|
|
||||||
|
// should remove everything
|
||||||
|
manager.deleteCompleteSearchHistory().test().await().assertValue(entries.size)
|
||||||
|
assertThat(database.searchHistoryDAO().all.blockingFirst()).isEmpty()
|
||||||
|
}
|
||||||
|
|
||||||
|
private fun insertShuffledRelatedSearches(relatedSearches: Collection<SearchHistoryEntry>) {
|
||||||
|
|
||||||
|
// shuffle to make sure the order of items returned by queries depends only on
|
||||||
|
// SearchHistoryEntry.creationDate, not on the actual insertion time, so that we can
|
||||||
|
// verify that the `ORDER BY` clause does its job
|
||||||
|
database.searchHistoryDAO().insertAll(relatedSearches.shuffled())
|
||||||
|
|
||||||
|
// make sure all entries were inserted
|
||||||
|
assertEquals(
|
||||||
|
relatedSearches.size,
|
||||||
|
database.searchHistoryDAO().all.blockingFirst().size
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
fun getRelatedSearches_emptyQuery() {
|
||||||
|
insertShuffledRelatedSearches(RELATED_SEARCHES_ENTRIES)
|
||||||
|
|
||||||
|
// make sure correct number of searches is returned and in correct order
|
||||||
|
val searches = manager.getRelatedSearches("", 6, 4).blockingFirst()
|
||||||
|
assertThat(searches).containsExactly(
|
||||||
|
RELATED_SEARCHES_ENTRIES[6].search, // A (even if in two places)
|
||||||
|
RELATED_SEARCHES_ENTRIES[4].search, // B
|
||||||
|
RELATED_SEARCHES_ENTRIES[5].search, // AA
|
||||||
|
RELATED_SEARCHES_ENTRIES[2].search, // BA
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
fun getRelatedSearches_emptyQuery_manyDuplicates() {
|
||||||
|
insertShuffledRelatedSearches(
|
||||||
|
listOf(
|
||||||
|
SearchHistoryEntry(time.minusSeconds(9), 3, "A"),
|
||||||
|
SearchHistoryEntry(time.minusSeconds(8), 3, "AB"),
|
||||||
|
SearchHistoryEntry(time.minusSeconds(7), 3, "A"),
|
||||||
|
SearchHistoryEntry(time.minusSeconds(6), 3, "A"),
|
||||||
|
SearchHistoryEntry(time.minusSeconds(5), 3, "BA"),
|
||||||
|
SearchHistoryEntry(time.minusSeconds(4), 3, "A"),
|
||||||
|
SearchHistoryEntry(time.minusSeconds(3), 3, "A"),
|
||||||
|
SearchHistoryEntry(time.minusSeconds(2), 0, "A"),
|
||||||
|
SearchHistoryEntry(time.minusSeconds(1), 2, "AA"),
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
|
val searches = manager.getRelatedSearches("", 9, 3).blockingFirst()
|
||||||
|
assertThat(searches).containsExactly("AA", "A", "BA")
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
fun getRelatedSearched_nonEmptyQuery() {
|
||||||
|
insertShuffledRelatedSearches(RELATED_SEARCHES_ENTRIES)
|
||||||
|
|
||||||
|
// make sure correct number of searches is returned and in correct order
|
||||||
|
val searches = manager.getRelatedSearches("A", 3, 5).blockingFirst()
|
||||||
|
assertThat(searches).containsExactly(
|
||||||
|
RELATED_SEARCHES_ENTRIES[6].search, // A (even if in two places)
|
||||||
|
RELATED_SEARCHES_ENTRIES[5].search, // AA
|
||||||
|
RELATED_SEARCHES_ENTRIES[1].search, // BA
|
||||||
|
)
|
||||||
|
|
||||||
|
// also make sure that the string comparison is case insensitive
|
||||||
|
val searches2 = manager.getRelatedSearches("a", 3, 5).blockingFirst()
|
||||||
|
assertThat(searches).isEqualTo(searches2)
|
||||||
|
}
|
||||||
|
|
||||||
|
companion object {
|
||||||
|
private val time = OffsetDateTime.of(LocalDateTime.of(2000, 1, 1, 1, 1), ZoneOffset.UTC)
|
||||||
|
|
||||||
|
private val RELATED_SEARCHES_ENTRIES = listOf(
|
||||||
|
SearchHistoryEntry(time.minusSeconds(7), 2, "AC"),
|
||||||
|
SearchHistoryEntry(time.minusSeconds(6), 0, "ABC"),
|
||||||
|
SearchHistoryEntry(time.minusSeconds(5), 1, "BA"),
|
||||||
|
SearchHistoryEntry(time.minusSeconds(4), 3, "A"),
|
||||||
|
SearchHistoryEntry(time.minusSeconds(2), 0, "B"),
|
||||||
|
SearchHistoryEntry(time.minusSeconds(3), 2, "AA"),
|
||||||
|
SearchHistoryEntry(time.minusSeconds(1), 1, "A"),
|
||||||
|
)
|
||||||
|
}
|
||||||
|
}
|
@@ -0,0 +1,77 @@
|
|||||||
|
package org.schabi.newpipe.local.playlist
|
||||||
|
|
||||||
|
import org.junit.After
|
||||||
|
import org.junit.Before
|
||||||
|
import org.junit.Rule
|
||||||
|
import org.junit.Test
|
||||||
|
import org.schabi.newpipe.database.AppDatabase
|
||||||
|
import org.schabi.newpipe.database.stream.model.StreamEntity
|
||||||
|
import org.schabi.newpipe.extractor.stream.StreamType
|
||||||
|
import org.schabi.newpipe.testUtil.TestDatabase
|
||||||
|
import org.schabi.newpipe.testUtil.TrampolineSchedulerRule
|
||||||
|
|
||||||
|
class LocalPlaylistManagerTest {
|
||||||
|
|
||||||
|
private lateinit var manager: LocalPlaylistManager
|
||||||
|
private lateinit var database: AppDatabase
|
||||||
|
|
||||||
|
@get:Rule
|
||||||
|
val trampolineScheduler = TrampolineSchedulerRule()
|
||||||
|
|
||||||
|
@Before
|
||||||
|
fun setup() {
|
||||||
|
database = TestDatabase.createReplacingNewPipeDatabase()
|
||||||
|
manager = LocalPlaylistManager(database)
|
||||||
|
}
|
||||||
|
|
||||||
|
@After
|
||||||
|
fun cleanUp() {
|
||||||
|
database.close()
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
fun createPlaylist() {
|
||||||
|
val NEWPIPE_URL = "https://newpipe.net/"
|
||||||
|
val stream = StreamEntity(
|
||||||
|
serviceId = 1, url = NEWPIPE_URL, title = "title",
|
||||||
|
streamType = StreamType.VIDEO_STREAM, duration = 1, uploader = "uploader",
|
||||||
|
uploaderUrl = NEWPIPE_URL
|
||||||
|
)
|
||||||
|
|
||||||
|
val result = manager.createPlaylist("name", listOf(stream))
|
||||||
|
|
||||||
|
// This should not behave like this.
|
||||||
|
// Currently list of all stream ids is returned instead of playlist id
|
||||||
|
result.test().await().assertValue(listOf(1L))
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
fun createPlaylist_emptyPlaylistMustReturnEmpty() {
|
||||||
|
val result = manager.createPlaylist("name", emptyList())
|
||||||
|
|
||||||
|
// This should not behave like this.
|
||||||
|
// It should throw an error because currently the result is null
|
||||||
|
result.test().await().assertComplete()
|
||||||
|
manager.playlists.test().awaitCount(1).assertValue(emptyList())
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test()
|
||||||
|
fun createPlaylist_nonExistentStreamsAreUpserted() {
|
||||||
|
val stream = StreamEntity(
|
||||||
|
serviceId = 1, url = "https://newpipe.net/", title = "title",
|
||||||
|
streamType = StreamType.VIDEO_STREAM, duration = 1, uploader = "uploader",
|
||||||
|
uploaderUrl = "https://newpipe.net/"
|
||||||
|
)
|
||||||
|
database.streamDAO().insert(stream)
|
||||||
|
val upserted = StreamEntity(
|
||||||
|
serviceId = 1, url = "https://newpipe.net/2", title = "title2",
|
||||||
|
streamType = StreamType.VIDEO_STREAM, duration = 1, uploader = "uploader",
|
||||||
|
uploaderUrl = "https://newpipe.net/"
|
||||||
|
)
|
||||||
|
|
||||||
|
val result = manager.createPlaylist("name", listOf(stream, upserted))
|
||||||
|
|
||||||
|
result.test().await().assertComplete()
|
||||||
|
database.streamDAO().all.test().awaitCount(1).assertValue(listOf(stream, upserted))
|
||||||
|
}
|
||||||
|
}
|
@@ -1,37 +0,0 @@
|
|||||||
package org.schabi.newpipe.report;
|
|
||||||
|
|
||||||
import android.os.Parcel;
|
|
||||||
import androidx.test.filters.LargeTest;
|
|
||||||
import androidx.test.ext.junit.runners.AndroidJUnit4;
|
|
||||||
|
|
||||||
import org.junit.Test;
|
|
||||||
import org.junit.runner.RunWith;
|
|
||||||
import org.schabi.newpipe.R;
|
|
||||||
import org.schabi.newpipe.report.ErrorActivity.ErrorInfo;
|
|
||||||
|
|
||||||
import static org.junit.Assert.assertEquals;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Instrumented tests for {@link ErrorInfo}
|
|
||||||
*/
|
|
||||||
@RunWith(AndroidJUnit4.class)
|
|
||||||
@LargeTest
|
|
||||||
public class ErrorInfoTest {
|
|
||||||
|
|
||||||
@Test
|
|
||||||
public void errorInfo_testParcelable() {
|
|
||||||
ErrorInfo info = ErrorInfo.make(UserAction.USER_REPORT, "youtube", "request", R.string.general_error);
|
|
||||||
// Obtain a Parcel object and write the parcelable object to it:
|
|
||||||
Parcel parcel = Parcel.obtain();
|
|
||||||
info.writeToParcel(parcel, 0);
|
|
||||||
parcel.setDataPosition(0);
|
|
||||||
ErrorInfo infoFromParcel = ErrorInfo.CREATOR.createFromParcel(parcel);
|
|
||||||
|
|
||||||
assertEquals(UserAction.USER_REPORT, infoFromParcel.userAction);
|
|
||||||
assertEquals("youtube", infoFromParcel.serviceName);
|
|
||||||
assertEquals("request", infoFromParcel.request);
|
|
||||||
assertEquals(R.string.general_error, infoFromParcel.message);
|
|
||||||
|
|
||||||
parcel.recycle();
|
|
||||||
}
|
|
||||||
}
|
|
@@ -0,0 +1,32 @@
|
|||||||
|
package org.schabi.newpipe.testUtil
|
||||||
|
|
||||||
|
import androidx.room.Room
|
||||||
|
import androidx.test.core.app.ApplicationProvider
|
||||||
|
import org.junit.Assert.assertSame
|
||||||
|
import org.schabi.newpipe.NewPipeDatabase
|
||||||
|
import org.schabi.newpipe.database.AppDatabase
|
||||||
|
|
||||||
|
class TestDatabase {
|
||||||
|
companion object {
|
||||||
|
fun createReplacingNewPipeDatabase(): AppDatabase {
|
||||||
|
val database = Room.inMemoryDatabaseBuilder(
|
||||||
|
ApplicationProvider.getApplicationContext(),
|
||||||
|
AppDatabase::class.java
|
||||||
|
)
|
||||||
|
.allowMainThreadQueries()
|
||||||
|
.build()
|
||||||
|
|
||||||
|
val databaseField = NewPipeDatabase::class.java.getDeclaredField("databaseInstance")
|
||||||
|
databaseField.isAccessible = true
|
||||||
|
databaseField.set(NewPipeDatabase::class, database)
|
||||||
|
|
||||||
|
assertSame(
|
||||||
|
"Mocking database failed!",
|
||||||
|
database,
|
||||||
|
NewPipeDatabase.getInstance(ApplicationProvider.getApplicationContext())
|
||||||
|
)
|
||||||
|
|
||||||
|
return database
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@@ -0,0 +1,37 @@
|
|||||||
|
package org.schabi.newpipe.testUtil
|
||||||
|
|
||||||
|
import io.reactivex.rxjava3.android.plugins.RxAndroidPlugins
|
||||||
|
import io.reactivex.rxjava3.plugins.RxJavaPlugins
|
||||||
|
import io.reactivex.rxjava3.schedulers.Schedulers
|
||||||
|
import org.junit.rules.TestRule
|
||||||
|
import org.junit.runner.Description
|
||||||
|
import org.junit.runners.model.Statement
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Always run on [Schedulers.trampoline].
|
||||||
|
* This executes the task in the current thread in FIFO manner.
|
||||||
|
* This ensures that tasks are run quickly inside the tests
|
||||||
|
* and not scheduled away to another thread for later execution
|
||||||
|
*/
|
||||||
|
class TrampolineSchedulerRule : TestRule {
|
||||||
|
|
||||||
|
private val scheduler = Schedulers.trampoline()
|
||||||
|
|
||||||
|
override fun apply(base: Statement, description: Description): Statement =
|
||||||
|
object : Statement() {
|
||||||
|
override fun evaluate() {
|
||||||
|
try {
|
||||||
|
RxJavaPlugins.setComputationSchedulerHandler { scheduler }
|
||||||
|
RxJavaPlugins.setIoSchedulerHandler { scheduler }
|
||||||
|
RxJavaPlugins.setNewThreadSchedulerHandler { scheduler }
|
||||||
|
RxJavaPlugins.setSingleSchedulerHandler { scheduler }
|
||||||
|
RxAndroidPlugins.setInitMainThreadSchedulerHandler { scheduler }
|
||||||
|
|
||||||
|
base.evaluate()
|
||||||
|
} finally {
|
||||||
|
RxJavaPlugins.reset()
|
||||||
|
RxAndroidPlugins.reset()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@@ -1,104 +0,0 @@
|
|||||||
package org.schabi.newpipe;
|
|
||||||
|
|
||||||
import android.content.Context;
|
|
||||||
import android.content.SharedPreferences;
|
|
||||||
import android.preference.PreferenceManager;
|
|
||||||
import androidx.annotation.NonNull;
|
|
||||||
import androidx.multidex.MultiDex;
|
|
||||||
|
|
||||||
import com.facebook.stetho.Stetho;
|
|
||||||
import com.facebook.stetho.okhttp3.StethoInterceptor;
|
|
||||||
import com.squareup.leakcanary.AndroidHeapDumper;
|
|
||||||
import com.squareup.leakcanary.DefaultLeakDirectoryProvider;
|
|
||||||
import com.squareup.leakcanary.HeapDumper;
|
|
||||||
import com.squareup.leakcanary.LeakCanary;
|
|
||||||
import com.squareup.leakcanary.LeakDirectoryProvider;
|
|
||||||
import com.squareup.leakcanary.RefWatcher;
|
|
||||||
|
|
||||||
import org.schabi.newpipe.extractor.downloader.Downloader;
|
|
||||||
|
|
||||||
import java.io.File;
|
|
||||||
import java.util.concurrent.TimeUnit;
|
|
||||||
|
|
||||||
import okhttp3.OkHttpClient;
|
|
||||||
|
|
||||||
public class DebugApp extends App {
|
|
||||||
private static final String TAG = DebugApp.class.toString();
|
|
||||||
|
|
||||||
@Override
|
|
||||||
protected void attachBaseContext(Context base) {
|
|
||||||
super.attachBaseContext(base);
|
|
||||||
MultiDex.install(this);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void onCreate() {
|
|
||||||
super.onCreate();
|
|
||||||
initStetho();
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
protected Downloader getDownloader() {
|
|
||||||
return DownloaderImpl.init(new OkHttpClient.Builder()
|
|
||||||
.addNetworkInterceptor(new StethoInterceptor()));
|
|
||||||
}
|
|
||||||
|
|
||||||
private void initStetho() {
|
|
||||||
// Create an InitializerBuilder
|
|
||||||
Stetho.InitializerBuilder initializerBuilder =
|
|
||||||
Stetho.newInitializerBuilder(this);
|
|
||||||
|
|
||||||
// Enable Chrome DevTools
|
|
||||||
initializerBuilder.enableWebKitInspector(
|
|
||||||
Stetho.defaultInspectorModulesProvider(this)
|
|
||||||
);
|
|
||||||
|
|
||||||
// Enable command line interface
|
|
||||||
initializerBuilder.enableDumpapp(
|
|
||||||
Stetho.defaultDumperPluginsProvider(getApplicationContext())
|
|
||||||
);
|
|
||||||
|
|
||||||
// Use the InitializerBuilder to generate an Initializer
|
|
||||||
Stetho.Initializer initializer = initializerBuilder.build();
|
|
||||||
|
|
||||||
// Initialize Stetho with the Initializer
|
|
||||||
Stetho.initialize(initializer);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
protected boolean isDisposedRxExceptionsReported() {
|
|
||||||
return PreferenceManager.getDefaultSharedPreferences(this)
|
|
||||||
.getBoolean(getString(R.string.allow_disposed_exceptions_key), false);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
protected RefWatcher installLeakCanary() {
|
|
||||||
return LeakCanary.refWatcher(this)
|
|
||||||
.heapDumper(new ToggleableHeapDumper(this))
|
|
||||||
// give each object 10 seconds to be gc'ed, before leak canary gets nosy on it
|
|
||||||
.watchDelay(10, TimeUnit.SECONDS)
|
|
||||||
.buildAndInstall();
|
|
||||||
}
|
|
||||||
|
|
||||||
public static class ToggleableHeapDumper implements HeapDumper {
|
|
||||||
private final HeapDumper dumper;
|
|
||||||
private final SharedPreferences preferences;
|
|
||||||
private final String dumpingAllowanceKey;
|
|
||||||
|
|
||||||
ToggleableHeapDumper(@NonNull final Context context) {
|
|
||||||
LeakDirectoryProvider leakDirectoryProvider = new DefaultLeakDirectoryProvider(context);
|
|
||||||
this.dumper = new AndroidHeapDumper(context, leakDirectoryProvider);
|
|
||||||
this.preferences = PreferenceManager.getDefaultSharedPreferences(context);
|
|
||||||
this.dumpingAllowanceKey = context.getString(R.string.allow_heap_dumping_key);
|
|
||||||
}
|
|
||||||
|
|
||||||
private boolean isDumpingAllowed() {
|
|
||||||
return preferences.getBoolean(dumpingAllowanceKey, false);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public File dumpHeap() {
|
|
||||||
return isDumpingAllowed() ? dumper.dumpHeap() : HeapDumper.RETRY_LATER;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
61
app/src/debug/java/org/schabi/newpipe/DebugApp.kt
Normal file
61
app/src/debug/java/org/schabi/newpipe/DebugApp.kt
Normal file
@@ -0,0 +1,61 @@
|
|||||||
|
package org.schabi.newpipe
|
||||||
|
|
||||||
|
import androidx.preference.PreferenceManager
|
||||||
|
import com.facebook.stetho.Stetho
|
||||||
|
import com.facebook.stetho.okhttp3.StethoInterceptor
|
||||||
|
import leakcanary.AppWatcher
|
||||||
|
import leakcanary.LeakCanary
|
||||||
|
import okhttp3.OkHttpClient
|
||||||
|
import org.schabi.newpipe.extractor.downloader.Downloader
|
||||||
|
|
||||||
|
class DebugApp : App() {
|
||||||
|
override fun onCreate() {
|
||||||
|
super.onCreate()
|
||||||
|
initStetho()
|
||||||
|
|
||||||
|
// Give each object 10 seconds to be GC'ed, before LeakCanary gets nosy on it
|
||||||
|
AppWatcher.config = AppWatcher.config.copy(watchDurationMillis = 10000)
|
||||||
|
LeakCanary.config = LeakCanary.config.copy(
|
||||||
|
dumpHeap = PreferenceManager
|
||||||
|
.getDefaultSharedPreferences(this).getBoolean(
|
||||||
|
getString(
|
||||||
|
R.string.allow_heap_dumping_key
|
||||||
|
),
|
||||||
|
false
|
||||||
|
)
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun getDownloader(): Downloader {
|
||||||
|
val downloader = DownloaderImpl.init(
|
||||||
|
OkHttpClient.Builder()
|
||||||
|
.addNetworkInterceptor(StethoInterceptor())
|
||||||
|
)
|
||||||
|
setCookiesToDownloader(downloader)
|
||||||
|
return downloader
|
||||||
|
}
|
||||||
|
|
||||||
|
private fun initStetho() {
|
||||||
|
// Create an InitializerBuilder
|
||||||
|
val initializerBuilder = Stetho.newInitializerBuilder(this)
|
||||||
|
|
||||||
|
// Enable Chrome DevTools
|
||||||
|
initializerBuilder.enableWebKitInspector(Stetho.defaultInspectorModulesProvider(this))
|
||||||
|
|
||||||
|
// Enable command line interface
|
||||||
|
initializerBuilder.enableDumpapp(
|
||||||
|
Stetho.defaultDumperPluginsProvider(applicationContext)
|
||||||
|
)
|
||||||
|
|
||||||
|
// Use the InitializerBuilder to generate an Initializer
|
||||||
|
val initializer = initializerBuilder.build()
|
||||||
|
|
||||||
|
// Initialize Stetho with the Initializer
|
||||||
|
Stetho.initialize(initializer)
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun isDisposedRxExceptionsReported(): Boolean {
|
||||||
|
return PreferenceManager.getDefaultSharedPreferences(this)
|
||||||
|
.getBoolean(getString(R.string.allow_disposed_exceptions_key), false)
|
||||||
|
}
|
||||||
|
}
|
@@ -0,0 +1,20 @@
|
|||||||
|
package org.schabi.newpipe.settings;
|
||||||
|
|
||||||
|
import android.content.Intent;
|
||||||
|
|
||||||
|
import leakcanary.LeakCanary;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Build variant dependent (BVD) leak canary API implementation for the debug settings fragment.
|
||||||
|
* This class is loaded via reflection by
|
||||||
|
* {@link DebugSettingsFragment.DebugSettingsBVDLeakCanaryAPI}.
|
||||||
|
*/
|
||||||
|
@SuppressWarnings("unused") // Class is used but loaded via reflection
|
||||||
|
public class DebugSettingsBVDLeakCanary
|
||||||
|
implements DebugSettingsFragment.DebugSettingsBVDLeakCanaryAPI {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Intent getNewLeakDisplayActivityIntent() {
|
||||||
|
return LeakCanary.INSTANCE.newLeakDisplayActivityIntent();
|
||||||
|
}
|
||||||
|
}
|
File diff suppressed because it is too large
Load Diff
245
app/src/main/assets/epl1.html
Normal file
245
app/src/main/assets/epl1.html
Normal file
@@ -0,0 +1,245 @@
|
|||||||
|
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
|
||||||
|
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||||
|
<!-- saved from url=(0050)https://www.eclipse.org/org/documents/epl-v10.html -->
|
||||||
|
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||||
|
<head>
|
||||||
|
<meta content="text/html; charset=utf-8" http-equiv="Content-Type">
|
||||||
|
|
||||||
|
<title>Eclipse Public License - Version 1.0</title>
|
||||||
|
|
||||||
|
</head>
|
||||||
|
|
||||||
|
<body cz-shortcut-listen="true" lang="EN-US">
|
||||||
|
|
||||||
|
<h2>Eclipse Public License - v 1.0</h2>
|
||||||
|
|
||||||
|
<p>THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE
|
||||||
|
PUBLIC LICENSE ("AGREEMENT"). ANY USE, REPRODUCTION OR
|
||||||
|
DISTRIBUTION OF THE PROGRAM CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS
|
||||||
|
AGREEMENT.</p>
|
||||||
|
|
||||||
|
<p><b>1. DEFINITIONS</b></p>
|
||||||
|
|
||||||
|
<p>"Contribution" means:</p>
|
||||||
|
|
||||||
|
<p class="list">a) in the case of the initial Contributor, the initial
|
||||||
|
code and documentation distributed under this Agreement, and</p>
|
||||||
|
<p class="list">b) in the case of each subsequent Contributor:</p>
|
||||||
|
<p class="list">i) changes to the Program, and</p>
|
||||||
|
<p class="list">ii) additions to the Program;</p>
|
||||||
|
<p class="list">where such changes and/or additions to the Program
|
||||||
|
originate from and are distributed by that particular Contributor. A
|
||||||
|
Contribution 'originates' from a Contributor if it was added to the
|
||||||
|
Program by such Contributor itself or anyone acting on such
|
||||||
|
Contributor's behalf. Contributions do not include additions to the
|
||||||
|
Program which: (i) are separate modules of software distributed in
|
||||||
|
conjunction with the Program under their own license agreement, and (ii)
|
||||||
|
are not derivative works of the Program.</p>
|
||||||
|
|
||||||
|
<p>"Contributor" means any person or entity that distributes
|
||||||
|
the Program.</p>
|
||||||
|
|
||||||
|
<p>"Licensed Patents" mean patent claims licensable by a
|
||||||
|
Contributor which are necessarily infringed by the use or sale of its
|
||||||
|
Contribution alone or when combined with the Program.</p>
|
||||||
|
|
||||||
|
<p>"Program" means the Contributions distributed in accordance
|
||||||
|
with this Agreement.</p>
|
||||||
|
|
||||||
|
<p>"Recipient" means anyone who receives the Program under
|
||||||
|
this Agreement, including all Contributors.</p>
|
||||||
|
|
||||||
|
<p><b>2. GRANT OF RIGHTS</b></p>
|
||||||
|
|
||||||
|
<p class="list">a) Subject to the terms of this Agreement, each
|
||||||
|
Contributor hereby grants Recipient a non-exclusive, worldwide,
|
||||||
|
royalty-free copyright license to reproduce, prepare derivative works
|
||||||
|
of, publicly display, publicly perform, distribute and sublicense the
|
||||||
|
Contribution of such Contributor, if any, and such derivative works, in
|
||||||
|
source code and object code form.</p>
|
||||||
|
|
||||||
|
<p class="list">b) Subject to the terms of this Agreement, each
|
||||||
|
Contributor hereby grants Recipient a non-exclusive, worldwide,
|
||||||
|
royalty-free patent license under Licensed Patents to make, use, sell,
|
||||||
|
offer to sell, import and otherwise transfer the Contribution of such
|
||||||
|
Contributor, if any, in source code and object code form. This patent
|
||||||
|
license shall apply to the combination of the Contribution and the
|
||||||
|
Program if, at the time the Contribution is added by the Contributor,
|
||||||
|
such addition of the Contribution causes such combination to be covered
|
||||||
|
by the Licensed Patents. The patent license shall not apply to any other
|
||||||
|
combinations which include the Contribution. No hardware per se is
|
||||||
|
licensed hereunder.</p>
|
||||||
|
|
||||||
|
<p class="list">c) Recipient understands that although each Contributor
|
||||||
|
grants the licenses to its Contributions set forth herein, no assurances
|
||||||
|
are provided by any Contributor that the Program does not infringe the
|
||||||
|
patent or other intellectual property rights of any other entity. Each
|
||||||
|
Contributor disclaims any liability to Recipient for claims brought by
|
||||||
|
any other entity based on infringement of intellectual property rights
|
||||||
|
or otherwise. As a condition to exercising the rights and licenses
|
||||||
|
granted hereunder, each Recipient hereby assumes sole responsibility to
|
||||||
|
secure any other intellectual property rights needed, if any. For
|
||||||
|
example, if a third party patent license is required to allow Recipient
|
||||||
|
to distribute the Program, it is Recipient's responsibility to acquire
|
||||||
|
that license before distributing the Program.</p>
|
||||||
|
|
||||||
|
<p class="list">d) Each Contributor represents that to its knowledge it
|
||||||
|
has sufficient copyright rights in its Contribution, if any, to grant
|
||||||
|
the copyright license set forth in this Agreement.</p>
|
||||||
|
|
||||||
|
<p><b>3. REQUIREMENTS</b></p>
|
||||||
|
|
||||||
|
<p>A Contributor may choose to distribute the Program in object code
|
||||||
|
form under its own license agreement, provided that:</p>
|
||||||
|
|
||||||
|
<p class="list">a) it complies with the terms and conditions of this
|
||||||
|
Agreement; and</p>
|
||||||
|
|
||||||
|
<p class="list">b) its license agreement:</p>
|
||||||
|
|
||||||
|
<p class="list">i) effectively disclaims on behalf of all Contributors
|
||||||
|
all warranties and conditions, express and implied, including warranties
|
||||||
|
or conditions of title and non-infringement, and implied warranties or
|
||||||
|
conditions of merchantability and fitness for a particular purpose;</p>
|
||||||
|
|
||||||
|
<p class="list">ii) effectively excludes on behalf of all Contributors
|
||||||
|
all liability for damages, including direct, indirect, special,
|
||||||
|
incidental and consequential damages, such as lost profits;</p>
|
||||||
|
|
||||||
|
<p class="list">iii) states that any provisions which differ from this
|
||||||
|
Agreement are offered by that Contributor alone and not by any other
|
||||||
|
party; and</p>
|
||||||
|
|
||||||
|
<p class="list">iv) states that source code for the Program is available
|
||||||
|
from such Contributor, and informs licensees how to obtain it in a
|
||||||
|
reasonable manner on or through a medium customarily used for software
|
||||||
|
exchange.</p>
|
||||||
|
|
||||||
|
<p>When the Program is made available in source code form:</p>
|
||||||
|
|
||||||
|
<p class="list">a) it must be made available under this Agreement; and</p>
|
||||||
|
|
||||||
|
<p class="list">b) a copy of this Agreement must be included with each
|
||||||
|
copy of the Program.</p>
|
||||||
|
|
||||||
|
<p>Contributors may not remove or alter any copyright notices contained
|
||||||
|
within the Program.</p>
|
||||||
|
|
||||||
|
<p>Each Contributor must identify itself as the originator of its
|
||||||
|
Contribution, if any, in a manner that reasonably allows subsequent
|
||||||
|
Recipients to identify the originator of the Contribution.</p>
|
||||||
|
|
||||||
|
<p><b>4. COMMERCIAL DISTRIBUTION</b></p>
|
||||||
|
|
||||||
|
<p>Commercial distributors of software may accept certain
|
||||||
|
responsibilities with respect to end users, business partners and the
|
||||||
|
like. While this license is intended to facilitate the commercial use of
|
||||||
|
the Program, the Contributor who includes the Program in a commercial
|
||||||
|
product offering should do so in a manner which does not create
|
||||||
|
potential liability for other Contributors. Therefore, if a Contributor
|
||||||
|
includes the Program in a commercial product offering, such Contributor
|
||||||
|
("Commercial Contributor") hereby agrees to defend and
|
||||||
|
indemnify every other Contributor ("Indemnified Contributor")
|
||||||
|
against any losses, damages and costs (collectively "Losses")
|
||||||
|
arising from claims, lawsuits and other legal actions brought by a third
|
||||||
|
party against the Indemnified Contributor to the extent caused by the
|
||||||
|
acts or omissions of such Commercial Contributor in connection with its
|
||||||
|
distribution of the Program in a commercial product offering. The
|
||||||
|
obligations in this section do not apply to any claims or Losses
|
||||||
|
relating to any actual or alleged intellectual property infringement. In
|
||||||
|
order to qualify, an Indemnified Contributor must: a) promptly notify
|
||||||
|
the Commercial Contributor in writing of such claim, and b) allow the
|
||||||
|
Commercial Contributor to control, and cooperate with the Commercial
|
||||||
|
Contributor in, the defense and any related settlement negotiations. The
|
||||||
|
Indemnified Contributor may participate in any such claim at its own
|
||||||
|
expense.</p>
|
||||||
|
|
||||||
|
<p>For example, a Contributor might include the Program in a commercial
|
||||||
|
product offering, Product X. That Contributor is then a Commercial
|
||||||
|
Contributor. If that Commercial Contributor then makes performance
|
||||||
|
claims, or offers warranties related to Product X, those performance
|
||||||
|
claims and warranties are such Commercial Contributor's responsibility
|
||||||
|
alone. Under this section, the Commercial Contributor would have to
|
||||||
|
defend claims against the other Contributors related to those
|
||||||
|
performance claims and warranties, and if a court requires any other
|
||||||
|
Contributor to pay any damages as a result, the Commercial Contributor
|
||||||
|
must pay those damages.</p>
|
||||||
|
|
||||||
|
<p><b>5. NO WARRANTY</b></p>
|
||||||
|
|
||||||
|
<p>EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, THE PROGRAM IS
|
||||||
|
PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS
|
||||||
|
OF ANY KIND, EITHER EXPRESS OR IMPLIED INCLUDING, WITHOUT LIMITATION,
|
||||||
|
ANY WARRANTIES OR CONDITIONS OF TITLE, NON-INFRINGEMENT, MERCHANTABILITY
|
||||||
|
OR FITNESS FOR A PARTICULAR PURPOSE. Each Recipient is solely
|
||||||
|
responsible for determining the appropriateness of using and
|
||||||
|
distributing the Program and assumes all risks associated with its
|
||||||
|
exercise of rights under this Agreement , including but not limited to
|
||||||
|
the risks and costs of program errors, compliance with applicable laws,
|
||||||
|
damage to or loss of data, programs or equipment, and unavailability or
|
||||||
|
interruption of operations.</p>
|
||||||
|
|
||||||
|
<p><b>6. DISCLAIMER OF LIABILITY</b></p>
|
||||||
|
|
||||||
|
<p>EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, NEITHER RECIPIENT
|
||||||
|
NOR ANY CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR ANY DIRECT, INDIRECT,
|
||||||
|
INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING
|
||||||
|
WITHOUT LIMITATION LOST PROFITS), HOWEVER CAUSED AND ON ANY THEORY OF
|
||||||
|
LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
|
||||||
|
NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OR
|
||||||
|
DISTRIBUTION OF THE PROGRAM OR THE EXERCISE OF ANY RIGHTS GRANTED
|
||||||
|
HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.</p>
|
||||||
|
|
||||||
|
<p><b>7. GENERAL</b></p>
|
||||||
|
|
||||||
|
<p>If any provision of this Agreement is invalid or unenforceable under
|
||||||
|
applicable law, it shall not affect the validity or enforceability of
|
||||||
|
the remainder of the terms of this Agreement, and without further action
|
||||||
|
by the parties hereto, such provision shall be reformed to the minimum
|
||||||
|
extent necessary to make such provision valid and enforceable.</p>
|
||||||
|
|
||||||
|
<p>If Recipient institutes patent litigation against any entity
|
||||||
|
(including a cross-claim or counterclaim in a lawsuit) alleging that the
|
||||||
|
Program itself (excluding combinations of the Program with other
|
||||||
|
software or hardware) infringes such Recipient's patent(s), then such
|
||||||
|
Recipient's rights granted under Section 2(b) shall terminate as of the
|
||||||
|
date such litigation is filed.</p>
|
||||||
|
|
||||||
|
<p>All Recipient's rights under this Agreement shall terminate if it
|
||||||
|
fails to comply with any of the material terms or conditions of this
|
||||||
|
Agreement and does not cure such failure in a reasonable period of time
|
||||||
|
after becoming aware of such noncompliance. If all Recipient's rights
|
||||||
|
under this Agreement terminate, Recipient agrees to cease use and
|
||||||
|
distribution of the Program as soon as reasonably practicable. However,
|
||||||
|
Recipient's obligations under this Agreement and any licenses granted by
|
||||||
|
Recipient relating to the Program shall continue and survive.</p>
|
||||||
|
|
||||||
|
<p>Everyone is permitted to copy and distribute copies of this
|
||||||
|
Agreement, but in order to avoid inconsistency the Agreement is
|
||||||
|
copyrighted and may only be modified in the following manner. The
|
||||||
|
Agreement Steward reserves the right to publish new versions (including
|
||||||
|
revisions) of this Agreement from time to time. No one other than the
|
||||||
|
Agreement Steward has the right to modify this Agreement. The Eclipse
|
||||||
|
Foundation is the initial Agreement Steward. The Eclipse Foundation may
|
||||||
|
assign the responsibility to serve as the Agreement Steward to a
|
||||||
|
suitable separate entity. Each new version of the Agreement will be
|
||||||
|
given a distinguishing version number. The Program (including
|
||||||
|
Contributions) may always be distributed subject to the version of the
|
||||||
|
Agreement under which it was received. In addition, after a new version
|
||||||
|
of the Agreement is published, Contributor may elect to distribute the
|
||||||
|
Program (including its Contributions) under the new version. Except as
|
||||||
|
expressly stated in Sections 2(a) and 2(b) above, Recipient receives no
|
||||||
|
rights or licenses to the intellectual property of any Contributor under
|
||||||
|
this Agreement, whether expressly, by implication, estoppel or
|
||||||
|
otherwise. All rights in the Program not expressly granted under this
|
||||||
|
Agreement are reserved.</p>
|
||||||
|
|
||||||
|
<p>This Agreement is governed by the laws of the State of New York and
|
||||||
|
the intellectual property laws of the United States of America. No party
|
||||||
|
to this Agreement will bring a legal action under this Agreement more
|
||||||
|
than one year after the cause of action arose. Each party waives its
|
||||||
|
rights to a jury trial in any resulting litigation.</p>
|
||||||
|
|
||||||
|
|
||||||
|
</body>
|
||||||
|
</html>
|
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user