mirror of
https://github.com/privacyguides/privacyguides.org.git
synced 2025-07-04 02:22:38 +00:00
Compare commits
1118 Commits
v1.0.0
...
2024.06.01
Author | SHA1 | Date | |
---|---|---|---|
44f35581a9
|
|||
0a0e8b605d
|
|||
0bc8336b6a | |||
3ace34099b | |||
e4ee74ea29 | |||
9aee2381f7 | |||
0ea286bf8e
|
|||
13f1bd19a4 | |||
2b97f64f3b | |||
c19f554b77
|
|||
66847abdaf | |||
32e65cf3e8 | |||
87aa1586f3 | |||
9ed7abb972 | |||
4221863aff
|
|||
26f3300424 | |||
2356a3a49b | |||
4f26072136 | |||
3d8eda7bff | |||
e0b1995d20 | |||
560a46ff03 | |||
f1a0679bd3 | |||
c64d446d52 | |||
25a6a5a937 | |||
8e51dcb5aa | |||
1ce9941018 | |||
5b0f3a6832
|
|||
ece4a76711
|
|||
33474d79e2 | |||
f82cd36298 | |||
c830c0cf30 | |||
61ade2c055 | |||
0d1e4d88f6 | |||
266f92811c | |||
1633232fd5
|
|||
03a35288ec
|
|||
7346c4d3ac
|
|||
e46cb94c86
|
|||
c0139de0e1 | |||
1df7bd988f | |||
f762b5c3f5 | |||
a8a4adee73
|
|||
93136f2a0b
|
|||
5d405830df
|
|||
d80af3968f
|
|||
09d3669fcf | |||
c4c68f7f7e | |||
a80653968e | |||
775ff52b14
|
|||
1acdf1748f | |||
e88ee1a80e | |||
662a3dfeb5 | |||
6458a05355 | |||
a57dc2cd78 | |||
e8f12c1bdf | |||
2c623ce775
|
|||
65bc92af88
|
|||
5b41dec8b0
|
|||
bad1370181 | |||
a1b01b8b8c
|
|||
9626aabea8 | |||
a7a8817c21 | |||
d17adf0299 | |||
dec6fbb64c | |||
f35e64a4f4 | |||
af45bcc642
|
|||
66225f2eff | |||
c2fce11a64 | |||
cf43545f57 | |||
cca4759612 | |||
492facf194 | |||
472a3a5416 | |||
3a8c0a9e66 | |||
0f17a9dce9 | |||
464d7ec3c6 | |||
b6d2c6f113 | |||
895a83b841 | |||
ce7896c07f | |||
04c37b9cdf | |||
b12887310f | |||
ff0a5339a8 | |||
632761cae1 | |||
b536928661 | |||
1372587017 | |||
82ab189d36
|
|||
139a206367
|
|||
4b92316774
|
|||
fc19f44c18
|
|||
0b43cb1fc7 | |||
9a56bd46b1 | |||
9169afa79a | |||
6aa14e8eb1 | |||
f37e72084c | |||
d050d27767 | |||
e5d9d1d055 | |||
a31dcb6df8
|
|||
525a2c1137
|
|||
c5bdbbcdcb | |||
48abc1d42a | |||
f77fbc6a45 | |||
01b3a7d48f | |||
792fc00b06 | |||
d022f53e6b | |||
3b69c565a3 | |||
2b8869882c | |||
bfa4b0f422 | |||
3ad66a447f | |||
aaa843d272 | |||
d8627a1ad2 | |||
ae0800e8ec | |||
df824ee0e3 | |||
298c3cde2b | |||
dd492b272a | |||
67614c3e17 | |||
05e5832161 | |||
0140f0ab7e | |||
b477409747 | |||
f60fcf4b2f | |||
5b09c59a7c | |||
6b7f2bca03 | |||
5d76e2ae0b
|
|||
df13d33a09 | |||
c64814d41a | |||
63270a3e8c | |||
e388e84dc5 | |||
b0aa86f8dc | |||
46b462ad72 | |||
7011b007a0 | |||
a890fc47af
|
|||
3f0ba17dcc | |||
f6f800d49f | |||
97996b9397 | |||
0d0c272a5d | |||
546e728188 | |||
8e3bd2589e | |||
cd4181a7fc | |||
3f26dd3b27 | |||
8a25c48f57 | |||
f098042357 | |||
f12573d40b | |||
2043e644c3 | |||
ede201f76d | |||
96d857da21 | |||
73188e1a21 | |||
8ea30ebd7f | |||
fe121cf0d5 | |||
7c0ff5824a | |||
a650d015fc | |||
33aecf011a | |||
e756ae4b37 | |||
f1e6db05b5 | |||
1634bea9d2 | |||
01c19281f7 | |||
f1864a4062 | |||
a1523e3f81 | |||
c89d1ed25f | |||
667a207010 | |||
b856a51785 | |||
9d0a2de9a1 | |||
e9cde5c75d | |||
93081f84c7 | |||
e182583a17 | |||
8167166eb9 | |||
772cd517cf | |||
2a4885ed39 | |||
7ebe767518
|
|||
9e40a3ece5 | |||
084a0f9427 | |||
fe127bed0f | |||
fce4ad5a6b | |||
ee4ff2d41b | |||
54f37e7f53 | |||
9e247fcbe6 | |||
019c9d46f9 | |||
9d877250f9 | |||
ee1c13db4c | |||
bb04a71b59 | |||
60db942814 | |||
6c771e2ea8 | |||
8b7a0e3233 | |||
b7f20342f2 | |||
efcd5159c8 | |||
aca6b565a7 | |||
5808953199 | |||
dc054d91e0 | |||
2fbc674986 | |||
239ac0d9e9 | |||
55dd7465d2 | |||
cf96d55027 | |||
a896a1a306 | |||
b7f0b672a2 | |||
7004d344ac | |||
461ac8f224 | |||
c8dc59c134 | |||
f8570a4c6a | |||
9d285e3094 | |||
abc22993cb | |||
e56081202d
|
|||
6da9b15464 | |||
d5a31c88bb | |||
d9ff08381f | |||
e6149a97d9 | |||
b69edfefd6
|
|||
d419ac9432 | |||
708b1917a7 | |||
741fb9d904 | |||
05228b4db3 | |||
aa9fed4eac | |||
3db638b937 | |||
43b346a5ff | |||
de216b9cde | |||
add980a655 | |||
58d6e4e044 | |||
366e44a940 | |||
b3a26717cd | |||
b0b6434f28
|
|||
42bce85c7f
|
|||
aa54b66a03
|
|||
122646d0f8 | |||
9bd5e84d32 | |||
025a07e658 | |||
4621a11016 | |||
46d2d50842 | |||
3dbc2f0083 | |||
06fc5e9f1d
|
|||
880bfd3cb2
|
|||
f37cd9e7f2 | |||
78eb8f8eac | |||
0a83385de0
|
|||
a85690b306 | |||
38dcfbb3e1 | |||
95516f6344 | |||
edae556a2a | |||
d52e533fa2 | |||
e7686c1cc1 | |||
d94da5094f | |||
4caef8ef1e | |||
42de2565ba | |||
5d6992bf76 | |||
4867ca9b79 | |||
19119a4c03 | |||
e619ccaf28 | |||
e44e24d77f | |||
465e499db1 | |||
e277417ab2 | |||
659a03be58
|
|||
f69e1ad6af | |||
94599e568d | |||
d653735a3b | |||
ddc800d6e4 | |||
83ea0d0774
|
|||
b6d8df1239
|
|||
821f35eb37 | |||
2d0c5ea9a7 | |||
abaca70f2f | |||
4eae08712d | |||
af3f279d29
|
|||
e40f3979b9
|
|||
3f48629ed3
|
|||
9fa7184a24 | |||
8c8c4e1009 | |||
6f9cf58da1 | |||
51230eb68f | |||
3a52e6986b | |||
966626d9e2 | |||
5a04889a9e | |||
813936b51b | |||
cf0d62ef7c
|
|||
1c9a1a805d
|
|||
1502f1b36c | |||
a5327ff4d1 | |||
911c0b5f24 | |||
e90fd2377d
|
|||
1fe5320bbe | |||
45ff07147d | |||
509397d6e7 | |||
8809550e58 | |||
61ad5103fb | |||
7429f0b8b1 | |||
dcd5cc05dd | |||
de75a19b2c | |||
e3beac9e01 | |||
794591bbd5 | |||
2029ecbb8d | |||
f55467fc01 | |||
e9a7b27cf2 | |||
278c462466
|
|||
96da882689
|
|||
1487ad6dca | |||
522c5e92ef | |||
6849228388 | |||
472ab56d50 | |||
d8c8a631ee | |||
c23c06c11b | |||
2ddb046a4b | |||
1a8fda242e | |||
92d5d9d1ac | |||
e356ae9212 | |||
ef7bd365cc | |||
8c69fa78d0 | |||
87b1377e85 | |||
94da846afc | |||
42c1611420 | |||
caae79bea2 | |||
fde6019469 | |||
cc077e63c8
|
|||
ff60d624fc
|
|||
f3144efeb2
|
|||
0faf548111
|
|||
60c7a0970f | |||
3daeea597d | |||
972df273e1 | |||
b8b62c18df | |||
e09e35dfdf
|
|||
90a96896a7 | |||
8b09671052
|
|||
f439e0be46
|
|||
7220531861 | |||
72166bb3f1 | |||
2998c52d7c | |||
c19c1599cb | |||
d47c737a73 | |||
5f45dd9147 | |||
57056566b4 | |||
42fe93a194 | |||
b42e62e822 | |||
6cdd3ed34b | |||
93462d6ea7
|
|||
3016dc4bc8 | |||
ef990bf0f2 | |||
ad94d0ebe9 | |||
186e7a2b47 | |||
fa2ed271ef | |||
97ed4c7279 | |||
65a4e306eb | |||
7de8b90cb0 | |||
c5d14debd1 | |||
a2b1f8adf9 | |||
ca6236da58
|
|||
a5c761c237
|
|||
86f8fda8a5 | |||
fe0f0d1ce3
|
|||
18f76a9068
|
|||
e41d5eae11
|
|||
d03114fd33
|
|||
b1fcc23d0f
|
|||
3d2d6fb726
|
|||
32969c9fc5 | |||
31f3319951
|
|||
70366045d5 | |||
8c438b8183 | |||
2df3405598
|
|||
ebfb448ed2
|
|||
fc12732e93 | |||
0e457065a0 | |||
b074ed9401
|
|||
b4804752e1 | |||
4c805daa7e
|
|||
416f468a20 | |||
1f6dfc4e6f | |||
4847c25066 | |||
6582156917
|
|||
e29ed5de35
|
|||
09b4799dbf
|
|||
d1c4abcd4f | |||
77c073c602 | |||
d25b4021d5
|
|||
37632d93ec | |||
321eccb7d6
|
|||
aefa3e75c4
|
|||
8fc748109d
|
|||
7b75ad0514 | |||
a88689fb43 | |||
3f5bbbd492
|
|||
3499498be7 | |||
1bde6c2920 | |||
14b2f975e2 | |||
29658d1d98 | |||
3e7d6c6ac2 | |||
60f0a8df9f
|
|||
9112720140
|
|||
c99bdda06f
|
|||
3849c523ef
|
|||
9e35e2ef8a | |||
5bad28ff6d | |||
3955114451 | |||
d2316dd782 | |||
99618de520 | |||
5c41b3c2f2 | |||
ac8c5a30d1 | |||
45bfe22c61 | |||
65db9d3fee
|
|||
f3f092d1a3
|
|||
35c95c029c
|
|||
7fb07925ec
|
|||
dc4199d7c4 | |||
fda35b5f70
|
|||
9e16a63caa | |||
47377df8da
|
|||
28c576110c
|
|||
d63dc04aff
|
|||
e336699480
|
|||
aaec10b83e
|
|||
9cbebf239b
|
|||
97350b6245
|
|||
f0621e257b | |||
1ac4dd75c7
|
|||
4c8cd3f295
|
|||
bfaba1cd11 | |||
66efe4a27f
|
|||
657e977074 | |||
f516235dd4
|
|||
cc696093ce
|
|||
4da25bc39a
|
|||
6245ed8581
|
|||
d9b9092ac3
|
|||
7a6fc90114
|
|||
ef7cf862d4
|
|||
f396afa15f
|
|||
227609f768
|
|||
425914a33d | |||
131f91ad56 | |||
9b008f2b76 | |||
2a4947bd72 | |||
829883c450 | |||
e52286a1b0 | |||
2a85daa3fa | |||
052671197b
|
|||
f6ca66bbb4
|
|||
d03f91b1c0
|
|||
74928bb4c7 | |||
7b6a158e4d | |||
2150385184
|
|||
561f6a7463
|
|||
23b7effac9 | |||
1cd29c6972 | |||
ebf28c2b35 | |||
3498602fdd | |||
7c6ebc5ebb | |||
d011fe716e | |||
428121c0c7 | |||
3361de1705
|
|||
242894c291
|
|||
d67dcaea11
|
|||
e901d0db22 | |||
815739b7bc | |||
1b9d8f9c14 | |||
70a6cda9d5
|
|||
e6f6498908
|
|||
687a36e7db
|
|||
94fa083700
|
|||
752db84b86
|
|||
d5a732e08c
|
|||
2746861567
|
|||
f4f28ce821
|
|||
b0ce8cea24 | |||
43cdf87ad3
|
|||
9782ddf60f | |||
8ffa8207ff | |||
ff30001aff
|
|||
145e0af811 | |||
e91f63045d | |||
790293b792 | |||
d4f1195bb3 | |||
e4d89b0894 | |||
a9a7864889 | |||
d6bab0c4f8 | |||
27fe6a4c41 | |||
bd1ff328a7 | |||
64d736a7ef | |||
a1e40a79ba | |||
baece71b49 | |||
f5910c4b2b | |||
d35437cafa | |||
41bb717191 | |||
fdb59b32b9 | |||
c1f8a1e00c | |||
070a9b157c | |||
a17363080e | |||
f714a82d84 | |||
3efe31dc29 | |||
670331bcd9 | |||
bd5506bab8 | |||
eb2fd3bccb | |||
478c2cee3b | |||
dd96ff1b56 | |||
2c61157cbc | |||
a110fb0489 | |||
b66845af14 | |||
39f67789c4 | |||
603bec291e | |||
80f1e8ca51 | |||
fa9faa5648 | |||
95126762a6 | |||
0d597160cf | |||
dc0cd7d35f | |||
10812ede81 | |||
53b2c2af89 | |||
78e0cf7a42 | |||
0c2b119089 | |||
22572e096f | |||
41215f7433 | |||
750b73c589 | |||
2edd012619 | |||
2172eab26a | |||
724b70ae51 | |||
b9937e8630 | |||
303bf1aff6 | |||
ba435096f3 | |||
3ae6f80797 | |||
67535a820c | |||
c7ff34b330 | |||
703c291ba3 | |||
e3ee1cf1bb | |||
ae171cee7b | |||
c477e7af46 | |||
c113f03264 | |||
b6167fda1a | |||
9525deaf51 | |||
9911fa781e | |||
dc75bcf42e | |||
43c7b5329d | |||
3f6cc30f06 | |||
05cb8ee35c | |||
6a469b1fa6 | |||
78a8f8c061 | |||
8979e0ce79 | |||
ed873cd800 | |||
4f8663321a | |||
b20785b3b6 | |||
31bc2cd5af | |||
1b5d83137c | |||
e7d22bb1f2 | |||
ab5c9f8222 | |||
b4c0aac903 | |||
5f4f23ea65
|
|||
887022c7c0
|
|||
b9612deb98
|
|||
c4f5871160
|
|||
f5dac93435
|
|||
0a98bcb36b | |||
4815008e23 | |||
acd802e15e | |||
ef657b4afd
|
|||
8afb128ce3 | |||
d4266679b3 | |||
1be248c1ca | |||
1ec3dbf27c | |||
95a14f35d7 | |||
812558db5c | |||
7a3fdd42ab | |||
a263b5a95a | |||
27fec327fd | |||
6c9dc8c5d4 | |||
7f09bd69a9 | |||
226b9f7885 | |||
a74b6cc7bc | |||
f3086e4416 | |||
126805b5ba | |||
4235d62136 | |||
a87d5cb227 | |||
df90475594 | |||
ebf589096b | |||
64c7e30e37 | |||
afc078b9f4
|
|||
ee70f568dc | |||
3ab0c984e8
|
|||
aaff8259d4 | |||
9c85a65190 | |||
23a2419dc8 | |||
a1bd21f365 | |||
5bf2e8bf1f | |||
bc8045c2a0 | |||
faf6d34ec1 | |||
02c65f45e3 | |||
666df1dd65 | |||
7c84c44b3d | |||
1cc1bd3ad6 | |||
21f5b7f84f | |||
befce0f1d9 | |||
23c74a6dc3 | |||
b92347cba3 | |||
e7f8f1c8c0 | |||
70c0905b2b | |||
36528b2eb8 | |||
f7258ebe8d | |||
2dd8e847f6 | |||
1dbcac4d5b | |||
688abddc43 | |||
bca9692c37 | |||
f2162cf28a | |||
4c159a3261 | |||
b3a254463d | |||
2b58befda4 | |||
0b8edd035c | |||
9f6cd454a8 | |||
8309e56cb3 | |||
c88dc960d2 | |||
2c5707a9ba
|
|||
cc3bcd9d94 | |||
982dc64730 | |||
0660fbf119 | |||
9d14330cde
|
|||
16cb2daf2a | |||
173a9b6d30
|
|||
429c643866 | |||
a974b8485c | |||
667996df8d | |||
93663bca8e | |||
66bb715834 | |||
ecbc75e955
|
|||
dd87672a73
|
|||
e07feb8aa9 | |||
72f74406b9
|
|||
193a8d512a | |||
137f16d0a9 | |||
35af82b3f1 | |||
8cc83258b7 | |||
7e1f0196f9
|
|||
54e8229454 | |||
2e3cecf285
|
|||
13c05dc07f
|
|||
0ba070dc8e
|
|||
5f970c58ac
|
|||
b5205aee77
|
|||
f85803d5c1 | |||
b3c976b694
|
|||
41f785b0fd | |||
3803bdd72d | |||
b373e23429 | |||
ba7b53aceb
|
|||
f255d49760 | |||
88bb0721eb | |||
7a594bbf27
|
|||
eddfd29cfe
|
|||
c72ae5fb3c
|
|||
2098040200
|
|||
a7816299f3
|
|||
3db5cffecd | |||
65179b83e9 | |||
3874ff4919 | |||
8b6f0397bb | |||
313ca0b50f | |||
f288f840dd | |||
3af8be9b88 | |||
c593ce9ed3 | |||
79f898a2dd | |||
4ea7ae8f7b | |||
9cfe06f714
|
|||
a7505190d4 | |||
605b0fd954 | |||
e32404f85a
|
|||
61acc755c6 | |||
3d8c8d969c | |||
68096ef2ab | |||
df94276c31 | |||
8040c32810 | |||
76f5417f04 | |||
208c738b83 | |||
432ee9898e | |||
c120e07c25 | |||
8563ee9ec9 | |||
2f9c779b15
|
|||
5fa9a3b505
|
|||
3b0cd75cbd
|
|||
12fc2d8a9b
|
|||
e9b951cb68 | |||
95d653f26e | |||
bd4818e993 | |||
16237ad930 | |||
347d09a4c2 | |||
0ab8b1f8f2
|
|||
4f091b65e2
|
|||
86ee500c6d
|
|||
005c6fe7cd | |||
bd5ef054ea | |||
182d76b2ae | |||
67f1526d19 | |||
ef4db53567 | |||
8535dadcad | |||
e1f5a00d90 | |||
3b12f672f0 | |||
462db2bdfa | |||
2abaf2f4dd | |||
a0ebda314e | |||
5334e869ed | |||
011efec32b | |||
1c527faa04 | |||
ca9a13c544 | |||
0d0a0a822c | |||
ef286ae706 | |||
d421e81045 | |||
2176a3a2de | |||
65874da53c | |||
b3ceb64052 | |||
ab0b61db10 | |||
31ff6160eb | |||
960a328ea7 | |||
3111447b96 | |||
b506f74950 | |||
e0933d6521 | |||
2d6b59e94b | |||
7a73aae321 | |||
da1a7709fa | |||
3ab5a28edf | |||
345487e3fc | |||
3511a5c094 | |||
f0d9faa705 | |||
f85f7dcf8f | |||
d4dd950d16 | |||
523abd3639 | |||
b160702ccb | |||
80ee4dd2d4 | |||
7f23720f1b | |||
011d9d9993 | |||
f538a2c7c8 | |||
86da4c1e02 | |||
36f029f5be | |||
c1c1fcf494 | |||
d727cbf79d | |||
d242ca3749 | |||
b6e8b01023 | |||
f58740ad7f | |||
97561641dd | |||
3bd62a0231 | |||
7ecbb0290d | |||
7b2f12e364 | |||
90a06daa4f | |||
045e702227 | |||
22e9a5e990 | |||
50311abc2e | |||
84bf23d740 | |||
750830247a | |||
5669d1f258 | |||
b7a1067528 | |||
95a21ab2f2 | |||
9392744593 | |||
74e69302d4 | |||
757729d145 | |||
730a422532 | |||
d48215273f | |||
bade01ca68 | |||
2658214018 | |||
ec03ced668 | |||
f8a3df77bd | |||
e453cb4211 | |||
0b91130e75 | |||
51ecce67e9 | |||
57e1717521 | |||
5c1d6ced8f | |||
786756a3dc | |||
05353aca85 | |||
81c2abd931 | |||
2095aa5a52 | |||
ecce11a009 | |||
ba3b4b5c3a | |||
bb81287173 | |||
e89f324c6a | |||
7dbe38e80c | |||
4d2a21cf0f
|
|||
42dd2c57a4
|
|||
7f7a7c2dd7 | |||
1a900cda46 | |||
10231ee0aa
|
|||
9b5446c7be | |||
3390d27ba9 | |||
7367add2a6 | |||
108aae831c
|
|||
246fb81eb2 | |||
12ae9ae8ce | |||
c2059a392b | |||
ef9e236b2b
|
|||
c4f1e269c8 | |||
fcd366af2a | |||
7f1ce148bf
|
|||
a52770e1c0 | |||
f6a25a7dd4 | |||
4a25c635ee | |||
a29c443a48 | |||
6f27a0e849 | |||
4f20378555 | |||
072e087487 | |||
547ed4c728
|
|||
bbca7bcbab | |||
0b70d8689d | |||
4a448189c6 | |||
58343b1dd9 | |||
8b1d9cd9b6 | |||
c38c185efe | |||
b5f4773923 | |||
5ff8b083d4 | |||
2635aabed7 | |||
f335a7e5d2 | |||
ba20357cda | |||
641f80db99 | |||
9bb70d2e6b | |||
631b2d2e14 | |||
f7a55480fb | |||
0a5286832d | |||
e0c11ad21c | |||
ef3986de9d | |||
bbe9531d05 | |||
0e7da2af19 | |||
03649e16f7 | |||
9e0b8843d3 | |||
39e7f02309 | |||
ad19e1de9c | |||
4bd402c1c7 | |||
d14f33d442 | |||
4d6a57689a | |||
c438cac4e8
|
|||
ca9e725d0a | |||
aba833d617 | |||
b5cc57267e | |||
718b915991
|
|||
2d36716977
|
|||
6d7bacd22a
|
|||
a3f33c2ea0
|
|||
d66ee4ab60 | |||
abd2fa0ff0 | |||
9af610ef9e | |||
75a37bd07f | |||
6cbbfe1cde
|
|||
a3e87e1d47 | |||
8b30b59ab4 | |||
3b74b60401 | |||
6f3ffca705 | |||
c6bf2dcf3e
|
|||
9b8d855641 | |||
68928f71eb | |||
1c8fcd812c | |||
7c1a693dec | |||
fa8e48aa43 | |||
396a220960 | |||
7b24cd39b6 | |||
185af90a16 | |||
b2f6e52ae8 | |||
fa835f8b35 | |||
a86c4b6517 | |||
ba1817deb7 | |||
e8db5ce8af | |||
0a2cc8aa81 | |||
d2d73c63c4 | |||
72fe29ef70 | |||
d687b114c9 | |||
4cec0a0c94 | |||
48a328b022 | |||
01245acdb2 | |||
58206b76f2 | |||
5eea29d0ce | |||
3810c7e28e | |||
ce619b6e6a | |||
7587dcb2a6 | |||
e05326e07a | |||
b2cfa819ae | |||
c0edc33898 | |||
7ceaa9822c | |||
b3004d9008 | |||
06e7dbf3f4 | |||
fc338ea696 | |||
6b760d27d0 | |||
3d90fcc7e5 | |||
df57b8c4e6 | |||
1d764d03f7 | |||
e78fb0d387 | |||
70c7b614c1 | |||
cd4ce7b55e | |||
f2a7710aed | |||
5eaceb9a8e | |||
f9d8426174
|
|||
6ee7c34951 | |||
cb498b015e | |||
bfb5c88e79
|
|||
d318a6abb0 | |||
238fe7a365 | |||
c32a64e05c | |||
b179d0e09e | |||
b16f4869d6 | |||
a846da33ad | |||
6c044312c2 | |||
8a498988e7 | |||
0d781d327b | |||
8173006301 | |||
ed0430bc3a | |||
137a553ace | |||
cebf65a89b | |||
f34576d18a | |||
ffe674124e
|
|||
57f497df54
|
|||
ab8cabf8e0
|
|||
c01b285fe4
|
|||
45a5a5d2ca | |||
79537bf1b3 | |||
967882b0b7 | |||
ec9ee8fbc3
|
|||
44f7b7edd8 | |||
9d48a93a76
|
|||
b295c24a18
|
|||
a80a1aa9ac
|
|||
e4654a71eb
|
|||
c1a4eec75e | |||
f5775be4be
|
|||
48ca20b104 | |||
77de2ba46f | |||
b7916aa0f1 | |||
95845ea5e1 | |||
656eeaaab5 | |||
269e9323df | |||
7ba8db2287 | |||
8bfa10b6e4
|
|||
b9797310ab | |||
686e9b7bcf | |||
c7e207b934 | |||
40d85c7120 | |||
ea5a202af4
|
|||
e151d96dd9
|
|||
afa81ce50a
|
|||
0fbc894173 | |||
e6f5b7456e | |||
42a301e763 | |||
13210d90bc | |||
6c297d4f77 | |||
669311205f | |||
0f4a35d003 | |||
8aacb15e21 | |||
c62de5d29f | |||
fce88ba49a | |||
25d0374939 | |||
4dfed7d77d | |||
073e904954 | |||
9c0f39f19d | |||
e5b494ecb8 | |||
ca24eb6ba5 | |||
b88beee846 | |||
33dc6b1211 | |||
313696132a | |||
480e7d5978 | |||
945744e5e9 | |||
fb8c62fc9c | |||
c8bd1533d8 | |||
ba59882e94 | |||
07a4a3009d | |||
8591a1afc1 | |||
0be5f75da0 | |||
82a251ba35 | |||
1dbbabd570 | |||
ac8b551d4a | |||
e1e18378ed | |||
35ec0bf432 | |||
40e005c517 | |||
504d54e7b2 | |||
97640d4f70 | |||
a4298c0992 | |||
4ea12e8831 | |||
23d72ffc43 | |||
46d646bd5b | |||
e5879a60f5 | |||
bbb7ff3a43 | |||
396adfb3a8 | |||
629db03c02 | |||
52b7c1af6a | |||
296a5b6404 | |||
ee70136f42 | |||
2c0c7fdf7e | |||
994efbb991 | |||
ea81e5fa0e | |||
d1f9813c3b | |||
95ae693dd0 | |||
96f98f4908 | |||
8df2ebed45 | |||
99c6845c98 | |||
62713d50d3 | |||
14aaaefd69 | |||
84b507b2ae | |||
4582bbfc64 | |||
f59c3ba228 | |||
8e903c59f6 | |||
ff5b3ee504 | |||
74c61e2e84 | |||
e43acf1bdc | |||
0e2fba583f | |||
da1407eb48 | |||
002aec543f | |||
569df8a18f | |||
28a5f9b2a4 | |||
d2c9864497 | |||
e4311b2689 | |||
b9e0058739 | |||
4556849ec8 | |||
779ae1e61a | |||
e340ed095c | |||
e812c17394 | |||
39daf99deb | |||
74f852d2f4 | |||
2fdb3c5f88 | |||
214ed8e876 | |||
a379164f87 | |||
e39f063568 | |||
7f71093e33 | |||
bd6ef18a5b | |||
00a13b8fb2 | |||
987cffd998 | |||
f8a6732b38 | |||
cd08f12848 | |||
9bdc882abd | |||
9137cb9d06 | |||
f2033c9c2f | |||
0db05bad0a | |||
be558ebfd6 | |||
4ae2e9453c | |||
834d30ac8c | |||
a1a20eeeb0 | |||
eb6d634d3a | |||
d87bb6b0de | |||
8f45e51a9e | |||
fb6503a200 | |||
41beef9fae | |||
1beaa6c2b7 | |||
8d64d97d82 | |||
ee4c683e1a | |||
65a4dbbf37 | |||
4b28596983 | |||
90292634a8 | |||
f6a176b30c | |||
6673523a71 | |||
ce85dc9bf9 | |||
f7bbd36aef | |||
e156345ecf | |||
c2c8d6fba1 | |||
aa63bb7378 | |||
b028b389a9 | |||
24215dc880 | |||
aabc5827e3 | |||
6be4ce2575 | |||
8a50bac101 | |||
0665669173 | |||
51fc9076cb | |||
d185d5cdc8 | |||
e37fa65be1 | |||
72ef50f914 | |||
8776541daa | |||
a98a1e4c5b | |||
b0dbd8330e | |||
881df3e5da | |||
f8b6efb995 | |||
dc94c77dad | |||
2582abe3d7 | |||
5e7dc85052 | |||
9a6e6c617d | |||
9aff2ad351 | |||
be3febe40a | |||
2f726c9f4b | |||
6e14cdfadc | |||
0923783611 | |||
1e6485fb3c | |||
9df67861c9 | |||
4343ae6c02 | |||
ffdb89720c | |||
e49aa04efc | |||
7d24b5c0c1 | |||
122f21fce2 | |||
3ec675cd05 | |||
1b71db4575 | |||
f7a3eaa0cb | |||
5b1f1a14f3 | |||
24d068bc27 | |||
bca3748ca7 | |||
866e75955a | |||
5c520ab865 | |||
97e5b9ab0a | |||
799c520437 | |||
e7ade0215a | |||
4d652b88d7 | |||
39e54ea40b | |||
09f07f3584 | |||
75bd0b1358 | |||
91abf0f412 | |||
b2e81cf9bd | |||
cbb82a2399 | |||
16dc6c6d34 | |||
55a4058ef4 | |||
43dc5a9b3e | |||
90d36575c4 | |||
c22743c1c9 | |||
9ad644ee37 | |||
b1dffdc3e8 | |||
d19deee5a5 | |||
d9aff3d770 | |||
0a7f85ceeb | |||
cc13fb189c | |||
c237e5595e | |||
38a948d30d | |||
f8c574d856 | |||
46aa2088e5 | |||
929b942a4d | |||
b6d24a79ee | |||
b6cd39a22d | |||
c85098f4c3 | |||
de909e61fd | |||
a8216603f4 | |||
28d7c1b3c0 | |||
325f511234 | |||
363d87a38a | |||
029bf2bbbd | |||
140cc62b5a | |||
fec526192b | |||
3ff77e729f | |||
2bc80b1042 | |||
6c7092c229 | |||
345f446050 | |||
2d0738c976 | |||
02eccfbf5e | |||
4dfed4c64c | |||
8359f2127a | |||
ca45181dac | |||
9fcb5f61a4 | |||
5f025d97cb | |||
8ef8e2a263 |
2752
.all-contributorsrc
Normal file
2752
.all-contributorsrc
Normal file
File diff suppressed because it is too large
Load Diff
1
.allowed_signers
Normal file
1
.allowed_signers
Normal file
@ -0,0 +1 @@
|
|||||||
|
jonah@privacyguides.org ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIJUp+Gi8ZpTDDbZC+GY+3QnFfxkI9rAu07bceyoHDp9O
|
1
.cache/plugin/social/fonts
Symbolic link
1
.cache/plugin/social/fonts
Symbolic link
@ -0,0 +1 @@
|
|||||||
|
../../../theme/assets/brand/fonts
|
8
.devcontainer/devcontainer.json
Normal file
8
.devcontainer/devcontainer.json
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
// For format details, see https://aka.ms/devcontainer.json. For config options, see the
|
||||||
|
// README at: https://github.com/devcontainers/templates/tree/main/src/python
|
||||||
|
{
|
||||||
|
"name": "Privacy Guides",
|
||||||
|
"image": "ghcr.io/squidfunk/mkdocs-material:9.5.17",
|
||||||
|
"forwardPorts": [8000],
|
||||||
|
"postCreateCommand": "git submodule init; git submodule update theme/assets/brand; apk add bash; /bin/bash run.sh --cmd=mkdocs --cmd_flags=--dev-addr=0.0.0.0:8000"
|
||||||
|
}
|
8
.devcontainer/team/devcontainer.json
Normal file
8
.devcontainer/team/devcontainer.json
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
// For format details, see https://aka.ms/devcontainer.json. For config options, see the
|
||||||
|
// README at: https://github.com/devcontainers/templates/tree/main/src/python
|
||||||
|
{
|
||||||
|
"name": "Privacy Guides Team",
|
||||||
|
"image": "ghcr.io/privacyguides/privacyguides.org:main",
|
||||||
|
"forwardPorts": [8000],
|
||||||
|
"postCreateCommand": "git submodule init; git submodule update theme/assets/brand; ./run.sh --cmd=mkdocs --insiders --production --cmd_flags=--dev-addr=0.0.0.0:8000"
|
||||||
|
}
|
38
.editorconfig
Normal file
38
.editorconfig
Normal file
@ -0,0 +1,38 @@
|
|||||||
|
# Copyright (c) 2024 Jonah Aragon <jonah@triplebit.net>
|
||||||
|
|
||||||
|
# Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
|
# of this software and associated documentation files (the "Software"), to
|
||||||
|
# deal in the Software without restriction, including without limitation the
|
||||||
|
# rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
|
||||||
|
# sell copies of the Software, and to permit persons to whom the Software is
|
||||||
|
# furnished to do so, subject to the following conditions:
|
||||||
|
|
||||||
|
# The above copyright notice and this permission notice shall be included in
|
||||||
|
# all copies or substantial portions of the Software.
|
||||||
|
|
||||||
|
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
# FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE
|
||||||
|
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
|
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||||
|
# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
|
||||||
|
# IN THE SOFTWARE.
|
||||||
|
|
||||||
|
# EditorConfig is awesome: https://EditorConfig.org
|
||||||
|
|
||||||
|
# top-most EditorConfig file
|
||||||
|
root = true
|
||||||
|
|
||||||
|
# Unix-style newlines with a newline ending every file
|
||||||
|
[*]
|
||||||
|
charset = utf-8
|
||||||
|
indent_style = space
|
||||||
|
indent_size = 2
|
||||||
|
end_of_line = lf
|
||||||
|
insert_final_newline = true
|
||||||
|
trim_trailing_whitespace = true
|
||||||
|
|
||||||
|
[{*.caddy,*.example-caddy,Caddyfile}]
|
||||||
|
charset = utf-8
|
||||||
|
indent_style = tab
|
||||||
|
tab_width = 4
|
32
.gitattributes
vendored
32
.gitattributes
vendored
@ -1,2 +1,34 @@
|
|||||||
|
# Copyright (c) 2020-2023 Jonah Aragon <jonah@triplebit.net>
|
||||||
|
|
||||||
|
# Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
|
# of this software and associated documentation files (the "Software"), to
|
||||||
|
# deal in the Software without restriction, including without limitation the
|
||||||
|
# rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
|
||||||
|
# sell copies of the Software, and to permit persons to whom the Software is
|
||||||
|
# furnished to do so, subject to the following conditions:
|
||||||
|
|
||||||
|
# The above copyright notice and this permission notice shall be included in
|
||||||
|
# all copies or substantial portions of the Software.
|
||||||
|
|
||||||
|
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
# FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE
|
||||||
|
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
|
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||||
|
# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
|
||||||
|
# IN THE SOFTWARE.
|
||||||
|
|
||||||
# Auto detect text files and perform LF normalization
|
# Auto detect text files and perform LF normalization
|
||||||
* text=auto
|
* text=auto
|
||||||
|
|
||||||
|
docs/** -linguist-documentation
|
||||||
|
.git* text
|
||||||
|
*.json text
|
||||||
|
*.js text
|
||||||
|
*.md text linguist-detectable
|
||||||
|
*.{yml,yaml} text
|
||||||
|
*.{htm,html} text diff=html
|
||||||
|
|
||||||
|
*.svg text
|
||||||
|
*.png binary
|
||||||
|
*.{jpeg,jpg} binary
|
||||||
|
28
.github/CODEOWNERS
vendored
28
.github/CODEOWNERS
vendored
@ -1,21 +1,15 @@
|
|||||||
# Additional Co-Owners are added to the TOP of this file.
|
|
||||||
|
|
||||||
# High-traffic pages
|
# High-traffic pages
|
||||||
/index.html @JonahAragon @dngray
|
/docs/index.md @jonaharagon @dngray
|
||||||
/blog.html @JonahAragon
|
/theme/overrides/ @jonaharagon
|
||||||
|
|
||||||
# Org/legal
|
# Org
|
||||||
/notices.md @JonahAragon
|
/docs/about/ @jonaharagon
|
||||||
/privacy-policy.md @JonahAragon
|
CODE_OF_CONDUCT.md @jonaharagon
|
||||||
LICENSE @JonahAragon
|
CITATION.cff
|
||||||
|
LICENSE @jonaharagon
|
||||||
# Website dev
|
README.md @jonaharagon @dngray
|
||||||
/_sass/ @JonahAragon
|
|
||||||
/_layouts/ @JonahAragon
|
|
||||||
Gemfile @JonahAragon
|
|
||||||
Gemfile.lock @JonahAragon
|
|
||||||
_config.yml @JonahAragon
|
|
||||||
|
|
||||||
# Ops
|
# Ops
|
||||||
/.github/ @JonahAragon
|
/Pipfile @jonaharagon
|
||||||
/.well-known/ @JonahAragon
|
/Pipfile.lock @jonaharagon
|
||||||
|
/.github/ @jonaharagon
|
||||||
|
@ -1,8 +0,0 @@
|
|||||||
---
|
|
||||||
name: "Content Correction"
|
|
||||||
about: Report any inaccurate, incorrect, or outdated information on the website.
|
|
||||||
---
|
|
||||||
|
|
||||||
## Description
|
|
||||||
|
|
||||||
**URL of affected page:**
|
|
65
.github/ISSUE_TEMPLATE/1_Content_Correction.yml
vendored
Normal file
65
.github/ISSUE_TEMPLATE/1_Content_Correction.yml
vendored
Normal file
@ -0,0 +1,65 @@
|
|||||||
|
# Copyright (c) 2023 Jonah Aragon <jonah@triplebit.net>
|
||||||
|
|
||||||
|
# Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
|
# of this software and associated documentation files (the "Software"), to
|
||||||
|
# deal in the Software without restriction, including without limitation the
|
||||||
|
# rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
|
||||||
|
# sell copies of the Software, and to permit persons to whom the Software is
|
||||||
|
# furnished to do so, subject to the following conditions:
|
||||||
|
|
||||||
|
# The above copyright notice and this permission notice shall be included in
|
||||||
|
# all copies or substantial portions of the Software.
|
||||||
|
|
||||||
|
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
# FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE
|
||||||
|
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
|
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||||
|
# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
|
||||||
|
# IN THE SOFTWARE.
|
||||||
|
|
||||||
|
name: "Content Correction"
|
||||||
|
description: Report any inaccurate, incorrect, or outdated information on the website.
|
||||||
|
labels: ["t:correction"]
|
||||||
|
body:
|
||||||
|
- type: markdown
|
||||||
|
attributes:
|
||||||
|
value: |
|
||||||
|
This form is for reporting verifiable issues with our website.
|
||||||
|
If you simply disagree with an opinion on the website, please open a discussion [on our forum](https://discuss.privacyguides.net) instead.
|
||||||
|
|
||||||
|
- type: input
|
||||||
|
attributes:
|
||||||
|
label: Affected page
|
||||||
|
description: Please let us know which page the incorrect information can be found on.
|
||||||
|
placeholder: "https://www.privacyguides.org/en/data-redaction"
|
||||||
|
validations:
|
||||||
|
required: true
|
||||||
|
|
||||||
|
- type: textarea
|
||||||
|
id: description
|
||||||
|
attributes:
|
||||||
|
label: Description
|
||||||
|
description: Please let us know what should be fixed.
|
||||||
|
placeholder: The Google Play Store link for ExifEraser is broken...
|
||||||
|
validations:
|
||||||
|
required: true
|
||||||
|
|
||||||
|
- type: textarea
|
||||||
|
id: source
|
||||||
|
attributes:
|
||||||
|
label: Sources
|
||||||
|
description: Please provide reliable sources that support the change you are requesting.
|
||||||
|
validations:
|
||||||
|
required: true
|
||||||
|
|
||||||
|
- type: checkboxes
|
||||||
|
id: checklist
|
||||||
|
attributes:
|
||||||
|
label: Before submitting
|
||||||
|
description: The Code of Conduct helps create a safe space for everyone. We require that everyone agrees to it.
|
||||||
|
options:
|
||||||
|
- label: I am reporting something that is verifiably incorrect, not a suggestion or opinion.
|
||||||
|
required: true
|
||||||
|
- label: I agree to the [Community Code of Conduct](https://www.privacyguides.org/coc).
|
||||||
|
required: true
|
22
.github/ISSUE_TEMPLATE/2_Website_Issues.md
vendored
22
.github/ISSUE_TEMPLATE/2_Website_Issues.md
vendored
@ -1,22 +0,0 @@
|
|||||||
---
|
|
||||||
name: "Website Issue"
|
|
||||||
about: Report a bug with the website. (NO CONTENT ISSUES)
|
|
||||||
title: "Website Issue | "
|
|
||||||
---
|
|
||||||
|
|
||||||
<!--
|
|
||||||
|
|
||||||
READ ME FIRST:
|
|
||||||
This is NOT the place to request changes to the content of the website.
|
|
||||||
This is NOT the place to report issues with our services like Matrix.
|
|
||||||
This is ONLY for reporting bugs or technical issues with www.privacyguides.org, the website.
|
|
||||||
|
|
||||||
-->
|
|
||||||
|
|
||||||
## Description
|
|
||||||
|
|
||||||
<!--
|
|
||||||
## Screenshots
|
|
||||||
|
|
||||||
Please add screenshots if applicable
|
|
||||||
-->
|
|
100
.github/ISSUE_TEMPLATE/2_Website_Issues.yml
vendored
Normal file
100
.github/ISSUE_TEMPLATE/2_Website_Issues.yml
vendored
Normal file
@ -0,0 +1,100 @@
|
|||||||
|
# Copyright (c) 2023 Jonah Aragon <jonah@triplebit.net>
|
||||||
|
|
||||||
|
# Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
|
# of this software and associated documentation files (the "Software"), to
|
||||||
|
# deal in the Software without restriction, including without limitation the
|
||||||
|
# rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
|
||||||
|
# sell copies of the Software, and to permit persons to whom the Software is
|
||||||
|
# furnished to do so, subject to the following conditions:
|
||||||
|
|
||||||
|
# The above copyright notice and this permission notice shall be included in
|
||||||
|
# all copies or substantial portions of the Software.
|
||||||
|
|
||||||
|
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
# FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE
|
||||||
|
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
|
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||||
|
# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
|
||||||
|
# IN THE SOFTWARE.
|
||||||
|
|
||||||
|
name: "Website Issue"
|
||||||
|
description: Report a bug with the website.
|
||||||
|
labels: ["t:bug"]
|
||||||
|
assignees:
|
||||||
|
- jonaharagon
|
||||||
|
body:
|
||||||
|
- type: markdown
|
||||||
|
attributes:
|
||||||
|
value: |
|
||||||
|
This form is only for reporting a technical bug __with our website__, like broken images, broken CSS, issues with search or themes, etc.
|
||||||
|
This is not the place to report an issue with Matrix, Discourse, or our other hosted services.
|
||||||
|
|
||||||
|
If you want us to fix inaccurate information on the website, go back and use the content correction form.
|
||||||
|
If you want to make another suggestion, please [use our discussion forum](https://discuss.privacyguides.net) instead.
|
||||||
|
|
||||||
|
- type: textarea
|
||||||
|
id: description
|
||||||
|
attributes:
|
||||||
|
label: Bug description
|
||||||
|
description: |
|
||||||
|
Please give a detailed description of the bug.
|
||||||
|
Explain how the website does not behave as you would expect it to, and be as specific as possible.
|
||||||
|
If you have found a workaround or a fix for the problem too, please let us know.
|
||||||
|
validations:
|
||||||
|
required: true
|
||||||
|
|
||||||
|
- type: textarea
|
||||||
|
id: affected-pages
|
||||||
|
attributes:
|
||||||
|
label: Affected pages
|
||||||
|
description: |
|
||||||
|
Please list all pages where you've noticed this issue, or let us know if it affects every page on the site.
|
||||||
|
value: |
|
||||||
|
-
|
||||||
|
|
||||||
|
- type: dropdown
|
||||||
|
id: browser
|
||||||
|
attributes:
|
||||||
|
label: Browser
|
||||||
|
description: |
|
||||||
|
Please select the browser(s) you have noticed this issue with.
|
||||||
|
If your browser is not listed or the version is relevant, you may select _Other_ and provide more details in the description above.
|
||||||
|
multiple: true
|
||||||
|
options:
|
||||||
|
- Firefox
|
||||||
|
- Tor Browser
|
||||||
|
- Chrome
|
||||||
|
- Safari
|
||||||
|
- Edge
|
||||||
|
- Other
|
||||||
|
|
||||||
|
- type: dropdown
|
||||||
|
id: os
|
||||||
|
attributes:
|
||||||
|
label: Operating System
|
||||||
|
description: |
|
||||||
|
Please select the operating system(s) you have noticed this issue with.
|
||||||
|
multiple: true
|
||||||
|
options:
|
||||||
|
- Linux
|
||||||
|
- macOS
|
||||||
|
- Windows
|
||||||
|
- Android
|
||||||
|
- iOS
|
||||||
|
- Other
|
||||||
|
|
||||||
|
- type: checkboxes
|
||||||
|
id: checklist
|
||||||
|
attributes:
|
||||||
|
label: Before submitting
|
||||||
|
description: The Code of Conduct helps create a safe space for everyone. We require that everyone agrees to it.
|
||||||
|
options:
|
||||||
|
- label: I am reporting something that is broken on the website, not making a suggestion.
|
||||||
|
required: true
|
||||||
|
- label: I agree to the [Community Code of Conduct](https://www.privacyguides.org/coc).
|
||||||
|
required: true
|
||||||
|
|
||||||
|
- type: markdown
|
||||||
|
attributes:
|
||||||
|
value: Thank you for letting us know about this!
|
34
.github/ISSUE_TEMPLATE/config.yml
vendored
34
.github/ISSUE_TEMPLATE/config.yml
vendored
@ -1,11 +1,37 @@
|
|||||||
|
# Copyright (c) 2020-2023 Jonah Aragon <jonah@triplebit.net>
|
||||||
|
|
||||||
|
# Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
|
# of this software and associated documentation files (the "Software"), to
|
||||||
|
# deal in the Software without restriction, including without limitation the
|
||||||
|
# rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
|
||||||
|
# sell copies of the Software, and to permit persons to whom the Software is
|
||||||
|
# furnished to do so, subject to the following conditions:
|
||||||
|
|
||||||
|
# The above copyright notice and this permission notice shall be included in
|
||||||
|
# all copies or substantial portions of the Software.
|
||||||
|
|
||||||
|
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
# FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE
|
||||||
|
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
|
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||||
|
# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
|
||||||
|
# IN THE SOFTWARE.
|
||||||
|
|
||||||
blank_issues_enabled: false
|
blank_issues_enabled: false
|
||||||
contact_links:
|
contact_links:
|
||||||
- name: Suggest a New Provider or Software
|
- name: Suggest Adding or Removing a Tool
|
||||||
url: https://github.com/privacyguides/privacyguides.org/discussions/new
|
url: https://discuss.privacyguides.net/c/site-development/suggestions
|
||||||
about: Suggest something new for us to look at, or something we should remove.
|
about: Suggest something new for us to look at, or something we should remove.
|
||||||
|
- name: Suggest a New Guide
|
||||||
|
url: https://discuss.privacyguides.net/c/site-development/guide-suggestions
|
||||||
|
about: Suggest an area where you think guidance might be required.
|
||||||
- name: Ask a Question
|
- name: Ask a Question
|
||||||
url: https://github.com/privacyguides/privacyguides.org/discussions/new
|
url: https://discuss.privacyguides.net/c/privacy/questions
|
||||||
about: Let us know if something doesn't make sense!
|
about: Let us know if something doesn't make sense!
|
||||||
- name: Share an Idea
|
- name: Share an Idea
|
||||||
url: https://github.com/privacyguides/privacyguides.org/discussions/new
|
url: https://discuss.privacyguides.net/c/site-development
|
||||||
about: Suggest a new feature/section/page or anything else for the website.
|
about: Suggest a new feature/section/page or anything else for the website.
|
||||||
|
- name: Report a Translation Issue
|
||||||
|
url: https://crowdin.com/project/privacyguides/discussions
|
||||||
|
about: Please report an issue with website translations on Crowdin.
|
||||||
|
37
.github/PULL_REQUEST_TEMPLATE.md
vendored
37
.github/PULL_REQUEST_TEMPLATE.md
vendored
@ -1,24 +1,29 @@
|
|||||||
<!-- Submitting a PR? Awesome!! -->
|
Changes proposed in this PR:
|
||||||
|
|
||||||
## Description
|
-
|
||||||
|
|
||||||
Resolves: # <!-- Did you solve an open GitHub issue? Put the number here so we mark it complete! -->
|
<!-- SCROLL TO BOTTOM TO AGREE!:
|
||||||
|
Please use a descriptive title for your PR, it will be included in our changelog!
|
||||||
<!--
|
|
||||||
Please share with us what you've changed.
|
|
||||||
If you are adding a software recommendation, give us a link to its website or
|
|
||||||
source code.
|
|
||||||
|
|
||||||
If you are making changes that you have a conflict of interest with, please
|
If you are making changes that you have a conflict of interest with, please
|
||||||
disclose this as well:
|
disclose this as well (this does not disqualify your PR by any means):
|
||||||
|
|
||||||
Conflict of interest contributions involve contributing about yourself,
|
Conflict of interest contributions involve contributing about yourself,
|
||||||
family, friends, clients, employers, or your financial and other relationships.
|
family, friends, clients, employers, or your financial and other relationships.
|
||||||
Any external relationship can trigger a conflict of interest.
|
Any external relationship can trigger a conflict of interest.
|
||||||
|
|
||||||
That someone has a conflict of interest is a description of a situation,
|
|
||||||
NOT a judgement about that person's opinions, integrity, or good faith.
|
|
||||||
|
|
||||||
If you have a conflict of interest, you must disclose who is paying you for
|
|
||||||
this contribution, who the client is (if for example, you are being paid by
|
|
||||||
an advertising agency), and any other relevant affiliations.
|
|
||||||
-->
|
-->
|
||||||
|
|
||||||
|
<summary>
|
||||||
|
|
||||||
|
<!-- To agree, place an x in the box below, like: [x] -->
|
||||||
|
- [ ] I agree to the terms listed below:
|
||||||
|
<details><summary>Contribution terms (click to expand)</summary>
|
||||||
|
1) I am the sole author of this work.
|
||||||
|
2) I agree to grant Privacy Guides a perpetual, worldwide, non-exclusive, transferable, royalty-free, irrevocable license with the right to sublicense such rights through multiple tiers of sublicensees, to reproduce, modify, display, perform, relicense, and distribute my contribution as part of this project.
|
||||||
|
3) I have disclosed any relevant conflicts of interest in my post.
|
||||||
|
4) I agree to the Community Code of Conduct.
|
||||||
|
</details>
|
||||||
|
|
||||||
|
<!-- What's this? When you submit a PR, you keep the Copyright for the work you
|
||||||
|
are contributing. We need you to agree to the above terms in order for us to
|
||||||
|
publish this contribution to our website. -->
|
||||||
|
11
.github/actions/build/action.yml
vendored
11
.github/actions/build/action.yml
vendored
@ -1,11 +0,0 @@
|
|||||||
name: 'Build'
|
|
||||||
description: 'Builds Jekyll Site'
|
|
||||||
runs:
|
|
||||||
using: "composite"
|
|
||||||
steps:
|
|
||||||
- shell: bash
|
|
||||||
run: |
|
|
||||||
sed -i "s/^ date:.*$/ date: $(TZ=UTC date "+%Y-%m-%d")/" _config.yml
|
|
||||||
sed -i "s/^ time:.*$/ time: $(TZ=UTC date "+%H:%M:%S %Z")/" _config.yml
|
|
||||||
- shell: bash
|
|
||||||
run: npm run build
|
|
80
.github/dependabot.yml
vendored
80
.github/dependabot.yml
vendored
@ -1,27 +1,77 @@
|
|||||||
|
# Copyright (c) 2021-2023 Jonah Aragon <jonah@triplebit.net>
|
||||||
|
|
||||||
|
# Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
|
# of this software and associated documentation files (the "Software"), to
|
||||||
|
# deal in the Software without restriction, including without limitation the
|
||||||
|
# rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
|
||||||
|
# sell copies of the Software, and to permit persons to whom the Software is
|
||||||
|
# furnished to do so, subject to the following conditions:
|
||||||
|
|
||||||
|
# The above copyright notice and this permission notice shall be included in
|
||||||
|
# all copies or substantial portions of the Software.
|
||||||
|
|
||||||
|
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
# FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE
|
||||||
|
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
|
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||||
|
# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
|
||||||
|
# IN THE SOFTWARE.
|
||||||
|
|
||||||
version: 2
|
version: 2
|
||||||
|
|
||||||
registries:
|
registries:
|
||||||
|
github-privacyguides:
|
||||||
fortawesome:
|
type: git
|
||||||
type: npm-registry
|
url: https://github.com
|
||||||
url: https://npm.fontawesome.com/
|
username: x-access-token
|
||||||
token: ${{ secrets.FONTAWESOME_NPM_AUTH_TOKEN }}
|
password: ${{secrets.REPO_PAT}}
|
||||||
|
|
||||||
updates:
|
updates:
|
||||||
|
# Maintain dependencies for GitHub Actions
|
||||||
- package-ecosystem: "github-actions"
|
- package-ecosystem: "github-actions"
|
||||||
directory: "/"
|
directory: "/"
|
||||||
schedule:
|
schedule:
|
||||||
interval: "daily"
|
interval: "monthly"
|
||||||
|
assignees:
|
||||||
|
- "jonaharagon"
|
||||||
|
reviewers:
|
||||||
|
- "jonaharagon"
|
||||||
|
labels:
|
||||||
|
- "fix:github_actions"
|
||||||
|
|
||||||
- package-ecosystem: "bundler" # See documentation for possible values
|
# Maintain submodules
|
||||||
directory: "/" # Location of package manifests
|
- package-ecosystem: "gitsubmodule"
|
||||||
schedule:
|
|
||||||
interval: "daily"
|
|
||||||
|
|
||||||
- package-ecosystem: "npm"
|
|
||||||
directory: "/"
|
directory: "/"
|
||||||
registries:
|
registries:
|
||||||
- fortawesome
|
- github-privacyguides
|
||||||
schedule:
|
schedule:
|
||||||
interval: "daily"
|
interval: "monthly"
|
||||||
|
labels:
|
||||||
|
- "fix:submodules"
|
||||||
|
|
||||||
|
- package-ecosystem: "devcontainers"
|
||||||
|
directory: "/"
|
||||||
|
schedule:
|
||||||
|
interval: weekly
|
||||||
|
|
||||||
|
- package-ecosystem: "docker"
|
||||||
|
directory: "/"
|
||||||
|
schedule:
|
||||||
|
interval: weekly
|
||||||
|
# Disabled because some updates tend to remove needed dependencies for some reason
|
||||||
|
|
||||||
|
# # Maintain dependencies for pipenv
|
||||||
|
# - package-ecosystem: "pip"
|
||||||
|
# directory: "/"
|
||||||
|
# insecure-external-code-execution: allow
|
||||||
|
# registries:
|
||||||
|
# - github-privacyguides
|
||||||
|
# schedule:
|
||||||
|
# interval: "daily"
|
||||||
|
# assignees:
|
||||||
|
# - "jonaharagon"
|
||||||
|
# reviewers:
|
||||||
|
# - "jonaharagon"
|
||||||
|
# labels:
|
||||||
|
# - "fix:python"
|
||||||
|
92
.github/workflows/build-container.yml
vendored
Normal file
92
.github/workflows/build-container.yml
vendored
Normal file
@ -0,0 +1,92 @@
|
|||||||
|
name: ☁️ Build Container
|
||||||
|
|
||||||
|
# Configures this workflow to run every time a change is pushed to the branch called `release`.
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
branches: ["main"]
|
||||||
|
release:
|
||||||
|
types: [published]
|
||||||
|
workflow_dispatch:
|
||||||
|
|
||||||
|
concurrency:
|
||||||
|
group: container-build
|
||||||
|
cancel-in-progress: true
|
||||||
|
|
||||||
|
permissions:
|
||||||
|
contents: read
|
||||||
|
packages: write
|
||||||
|
|
||||||
|
# Defines two custom environment variables for the workflow. These are used for the Container registry domain, and a name for the Docker image that this workflow builds.
|
||||||
|
env:
|
||||||
|
REGISTRY: ghcr.io
|
||||||
|
IMAGE_NAME: ${{ github.repository }}
|
||||||
|
|
||||||
|
# There is a single job in this workflow. It's configured to run on the latest available version of Ubuntu.
|
||||||
|
jobs:
|
||||||
|
submodule:
|
||||||
|
strategy:
|
||||||
|
matrix:
|
||||||
|
repo: [mkdocs-material-insiders, brand]
|
||||||
|
uses: privacyguides/.github/.github/workflows/download-repo.yml@main
|
||||||
|
with:
|
||||||
|
repo: ${{ matrix.repo }}
|
||||||
|
secrets:
|
||||||
|
ACTIONS_SSH_KEY: ${{ secrets.ACTIONS_SSH_KEY }}
|
||||||
|
|
||||||
|
build-and-push-image:
|
||||||
|
needs: submodule
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- name: Checkout repository
|
||||||
|
uses: actions/checkout@v4
|
||||||
|
with:
|
||||||
|
fetch-depth: 0
|
||||||
|
|
||||||
|
- uses: actions/download-artifact@v4
|
||||||
|
with:
|
||||||
|
pattern: repo-*
|
||||||
|
path: modules
|
||||||
|
|
||||||
|
- run: |
|
||||||
|
rm -rf modules/mkdocs-material
|
||||||
|
mv modules/repo-mkdocs-material-insiders modules/mkdocs-material
|
||||||
|
rm -rf theme/assets/brand
|
||||||
|
mv modules/repo-brand theme/assets/brand
|
||||||
|
|
||||||
|
# Uses the `docker/login-action` action to log in to the Container registry registry using the account and password that will publish the packages. Once published, the packages are scoped to the account defined here.
|
||||||
|
- name: Log in to the Container registry
|
||||||
|
uses: docker/login-action@v3.1.0
|
||||||
|
with:
|
||||||
|
registry: ${{ env.REGISTRY }}
|
||||||
|
username: ${{ github.actor }}
|
||||||
|
password: ${{ secrets.GITHUB_TOKEN }}
|
||||||
|
|
||||||
|
# This step uses [docker/metadata-action](https://github.com/docker/metadata-action#about) to extract tags and labels that will be applied to the specified image. The `id` "meta" allows the output of this step to be referenced in a subsequent step. The `images` value provides the base name for the tags and labels.
|
||||||
|
- name: Extract metadata (tags, labels) for Docker
|
||||||
|
id: meta
|
||||||
|
uses: docker/metadata-action@v5.5.1
|
||||||
|
with:
|
||||||
|
images: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}
|
||||||
|
tags: |
|
||||||
|
type=ref,event=branch
|
||||||
|
type=ref,event=tag
|
||||||
|
type=ref,event=pr
|
||||||
|
type=sha
|
||||||
|
flavor: |
|
||||||
|
latest=${{ github.event_name == 'release' }}
|
||||||
|
|
||||||
|
# This step uses the `docker/build-push-action` action to build the image, based on your repository's `Dockerfile`. If the build succeeds, it pushes the image to GitHub Packages.
|
||||||
|
# It uses the `context` parameter to define the build's context as the set of files located in the specified path. For more information, see "[Usage](https://github.com/docker/build-push-action#usage)" in the README of the `docker/build-push-action` repository.
|
||||||
|
# It uses the `tags` and `labels` parameters to tag and label the image with the output from the "meta" step.
|
||||||
|
- name: Build and push Docker image
|
||||||
|
uses: docker/build-push-action@v5.3.0
|
||||||
|
with:
|
||||||
|
context: .
|
||||||
|
push: true
|
||||||
|
tags: ${{ steps.meta.outputs.tags }}
|
||||||
|
labels: ${{ steps.meta.outputs.labels }}
|
||||||
|
|
||||||
|
cleanup:
|
||||||
|
if: ${{ always() }}
|
||||||
|
needs: build-and-push-image
|
||||||
|
uses: privacyguides/.github/.github/workflows/cleanup.yml@main
|
116
.github/workflows/build-pr.yml
vendored
Normal file
116
.github/workflows/build-pr.yml
vendored
Normal file
@ -0,0 +1,116 @@
|
|||||||
|
name: 🛠️ Build PR Preview
|
||||||
|
|
||||||
|
on:
|
||||||
|
pull_request:
|
||||||
|
|
||||||
|
concurrency:
|
||||||
|
group: ${{github.event.pull_request.head.ref}}
|
||||||
|
cancel-in-progress: true
|
||||||
|
|
||||||
|
permissions:
|
||||||
|
contents: read
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
metadata:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
outputs:
|
||||||
|
submodules: ${{ steps.submodules-fork.outputs.submodules || steps.submodules-main.outputs.submodules }}
|
||||||
|
privileged: ${{ steps.submodules-fork.outputs.privileged || steps.submodules-main.outputs.privileged }}
|
||||||
|
env:
|
||||||
|
ACTIONS_SSH_KEY: ${{ secrets.ACTIONS_SSH_KEY }}
|
||||||
|
steps:
|
||||||
|
- name: Set submodules for fork
|
||||||
|
if: env.ACTIONS_SSH_KEY == ''
|
||||||
|
id: submodules-fork
|
||||||
|
run: |
|
||||||
|
echo 'submodules={"repo":["brand","i18n"]}' >> "$GITHUB_OUTPUT"
|
||||||
|
echo "privileged=false" >> "$GITHUB_OUTPUT"
|
||||||
|
|
||||||
|
- name: Set submodules for main repo
|
||||||
|
if: env.ACTIONS_SSH_KEY != ''
|
||||||
|
id: submodules-main
|
||||||
|
run: |
|
||||||
|
echo 'submodules={"repo":["brand","i18n","mkdocs-material-insiders"]}' >> "$GITHUB_OUTPUT"
|
||||||
|
echo "privileged=true" >> "$GITHUB_OUTPUT"
|
||||||
|
|
||||||
|
- name: Save PR metadata
|
||||||
|
run: |
|
||||||
|
mkdir -p ./metadata
|
||||||
|
echo ${{ github.event.number }} > ./metadata/NR
|
||||||
|
echo ${{ github.event.pull_request.head.sha }} > ./metadata/SHA
|
||||||
|
|
||||||
|
- name: Upload metadata as artifact
|
||||||
|
uses: actions/upload-artifact@v4
|
||||||
|
with:
|
||||||
|
name: metadata
|
||||||
|
path: metadata
|
||||||
|
|
||||||
|
submodule:
|
||||||
|
needs: metadata
|
||||||
|
strategy:
|
||||||
|
matrix: ${{ fromJson(needs.metadata.outputs.submodules) }}
|
||||||
|
uses: privacyguides/.github/.github/workflows/download-repo.yml@main
|
||||||
|
with:
|
||||||
|
repo: ${{ matrix.repo }}
|
||||||
|
privileged: ${{ fromJSON(needs.metadata.outputs.privileged) }}
|
||||||
|
secrets:
|
||||||
|
ACTIONS_SSH_KEY: ${{ secrets.ACTIONS_SSH_KEY }}
|
||||||
|
|
||||||
|
build_english:
|
||||||
|
needs: [submodule, metadata]
|
||||||
|
strategy:
|
||||||
|
matrix:
|
||||||
|
lang: [en]
|
||||||
|
fail-fast: true
|
||||||
|
uses: ./.github/workflows/build.yml
|
||||||
|
with:
|
||||||
|
ref: ${{github.event.pull_request.head.ref}}
|
||||||
|
repo: ${{github.event.pull_request.head.repo.full_name}}
|
||||||
|
lang: en
|
||||||
|
continue-on-error: false
|
||||||
|
privileged: ${{ fromJSON(needs.metadata.outputs.privileged) }}
|
||||||
|
|
||||||
|
build_i18n:
|
||||||
|
if: ${{ contains(github.event.pull_request.labels.*.name, 'ci:build i18n') }}
|
||||||
|
needs: [submodule, metadata]
|
||||||
|
strategy:
|
||||||
|
matrix:
|
||||||
|
lang: [es, fr, he, it, nl, ru, zh-Hant]
|
||||||
|
fail-fast: false
|
||||||
|
uses: ./.github/workflows/build.yml
|
||||||
|
with:
|
||||||
|
ref: ${{github.event.pull_request.head.ref}}
|
||||||
|
repo: ${{github.event.pull_request.head.repo.full_name}}
|
||||||
|
lang: ${{ matrix.lang }}
|
||||||
|
continue-on-error: true
|
||||||
|
privileged: ${{ fromJSON(needs.metadata.outputs.privileged) }}
|
||||||
|
|
||||||
|
combine_build:
|
||||||
|
needs: [build_english, build_i18n]
|
||||||
|
if: |
|
||||||
|
(always() && !cancelled() && !failure()) &&
|
||||||
|
needs.build_english.result == 'success' &&
|
||||||
|
(needs.build_i18n.result == 'success' || needs.build_i18n.result == 'skipped')
|
||||||
|
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- uses: actions/download-artifact@v4
|
||||||
|
with:
|
||||||
|
pattern: site-build-*
|
||||||
|
merge-multiple: true
|
||||||
|
|
||||||
|
- run: |
|
||||||
|
for file in *.tar.gz; do tar -zxf "$file"; done
|
||||||
|
ls -la site/
|
||||||
|
|
||||||
|
- name: Upload Site
|
||||||
|
uses: actions/upload-artifact@v4
|
||||||
|
with:
|
||||||
|
name: site-build-combined
|
||||||
|
path: site
|
||||||
|
retention-days: 5
|
||||||
|
|
||||||
|
cleanup:
|
||||||
|
if: ${{ always() }}
|
||||||
|
needs: [build_english, build_i18n]
|
||||||
|
uses: privacyguides/.github/.github/workflows/cleanup.yml@main
|
266
.github/workflows/build.yml
vendored
Normal file
266
.github/workflows/build.yml
vendored
Normal file
@ -0,0 +1,266 @@
|
|||||||
|
name: 🛠️ Build Website
|
||||||
|
|
||||||
|
on:
|
||||||
|
workflow_call:
|
||||||
|
inputs:
|
||||||
|
config:
|
||||||
|
type: string
|
||||||
|
default: build
|
||||||
|
ref:
|
||||||
|
required: true
|
||||||
|
type: string
|
||||||
|
repo:
|
||||||
|
required: true
|
||||||
|
type: string
|
||||||
|
lang:
|
||||||
|
type: string
|
||||||
|
default: en
|
||||||
|
context:
|
||||||
|
type: string
|
||||||
|
default: deploy-preview
|
||||||
|
continue-on-error:
|
||||||
|
type: boolean
|
||||||
|
default: true
|
||||||
|
privileged:
|
||||||
|
type: boolean
|
||||||
|
default: true
|
||||||
|
|
||||||
|
permissions:
|
||||||
|
contents: read
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
build:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
continue-on-error: ${{ inputs.continue-on-error }}
|
||||||
|
permissions:
|
||||||
|
contents: read
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- name: Add GitHub Token to Environment
|
||||||
|
run: |
|
||||||
|
echo "GH_TOKEN=${{ secrets.GITHUB_TOKEN }}" >> "$GITHUB_ENV"
|
||||||
|
|
||||||
|
- name: Set Metadata
|
||||||
|
if: inputs.config == 'build'
|
||||||
|
run: |
|
||||||
|
{
|
||||||
|
echo "BUILD_CONTEXT=${{ inputs.context }}"
|
||||||
|
echo "EXTRA_FLAGS=""$EXTRA_FLAGS" --production""
|
||||||
|
} >> "$GITHUB_ENV"
|
||||||
|
|
||||||
|
- name: Set Metadata for Privileged Builds
|
||||||
|
if: inputs.privileged
|
||||||
|
run: |
|
||||||
|
echo "BUILD_INSIDERS=true" >> "$GITHUB_ENV"
|
||||||
|
echo "EXTRA_FLAGS=""$EXTRA_FLAGS" --insiders"" >> "$GITHUB_ENV"
|
||||||
|
|
||||||
|
- name: Set Metadata for Offline Mode
|
||||||
|
if: inputs.config == 'offline'
|
||||||
|
run: |
|
||||||
|
{
|
||||||
|
echo "EXTRA_FLAGS=""$EXTRA_FLAGS" --offline""
|
||||||
|
} >> "$GITHUB_ENV"
|
||||||
|
|
||||||
|
- name: Download Repository
|
||||||
|
uses: actions/checkout@v4
|
||||||
|
with:
|
||||||
|
repository: ${{ inputs.repo }}
|
||||||
|
ref: ${{ inputs.ref }}
|
||||||
|
persist-credentials: "false"
|
||||||
|
fetch-depth: 0
|
||||||
|
|
||||||
|
- name: Download Submodules
|
||||||
|
uses: actions/download-artifact@v4
|
||||||
|
with:
|
||||||
|
pattern: repo-*
|
||||||
|
path: modules
|
||||||
|
|
||||||
|
- name: Move mkdocs-material-insiders to mkdocs-material
|
||||||
|
if: inputs.privileged
|
||||||
|
run: |
|
||||||
|
rmdir modules/mkdocs-material
|
||||||
|
mv modules/repo-mkdocs-material-insiders modules/mkdocs-material
|
||||||
|
|
||||||
|
- name: Move brand submodule to theme/assets/brand
|
||||||
|
run: |
|
||||||
|
rmdir theme/assets/brand
|
||||||
|
mv modules/repo-brand theme/assets/brand
|
||||||
|
|
||||||
|
- name: Copy Translation Files
|
||||||
|
if: inputs.lang != 'en'
|
||||||
|
run: |
|
||||||
|
cp -rl modules/repo-i18n/i18n .
|
||||||
|
cp -rl modules/repo-i18n/includes .
|
||||||
|
|
||||||
|
- name: Install Python (pipenv)
|
||||||
|
if: inputs.privileged
|
||||||
|
uses: actions/setup-python@v5
|
||||||
|
with:
|
||||||
|
cache: "pipenv"
|
||||||
|
|
||||||
|
- name: Install Python (no pipenv)
|
||||||
|
if: ${{ !inputs.privileged }}
|
||||||
|
uses: actions/setup-python@v5
|
||||||
|
|
||||||
|
- name: Restore Privacy Plugin Cache
|
||||||
|
uses: actions/cache/restore@v4.0.2
|
||||||
|
id: privacy_cache_restore
|
||||||
|
with:
|
||||||
|
key: privacy-cache-${{ inputs.repo }}-${{ hashfiles('.cache/plugin/privacy/**') }}
|
||||||
|
path: |
|
||||||
|
.cache/plugin/privacy
|
||||||
|
restore-keys: |
|
||||||
|
privacy-cache-${{ inputs.repo }}-
|
||||||
|
privacy-cache-privacyguides/privacyguides.org-
|
||||||
|
privacy-cache-
|
||||||
|
|
||||||
|
- name: Restore Social Plugin Cache
|
||||||
|
uses: actions/cache/restore@v4.0.2
|
||||||
|
id: social_cache_restore
|
||||||
|
with:
|
||||||
|
key: social-cache-${{ inputs.repo }}-${{ inputs.lang }}-${{ hashfiles('.cache/plugin/social/manifest.json') }}
|
||||||
|
path: |
|
||||||
|
.cache/plugin/social/manifest.json
|
||||||
|
.cache/plugin/social/assets
|
||||||
|
restore-keys: |
|
||||||
|
social-cache-${{ inputs.repo }}-${{ inputs.lang }}-
|
||||||
|
social-cache-privacyguides/privacyguides.org-${{ inputs.lang }}-
|
||||||
|
|
||||||
|
- name: Restore Optimize Plugin Cache
|
||||||
|
uses: actions/cache/restore@v4.0.2
|
||||||
|
id: optimize_cache_restore
|
||||||
|
with:
|
||||||
|
key: optimize-cache-${{ inputs.repo }}-${{ hashfiles('.cache/plugin/optimize/manifest.json') }}
|
||||||
|
path: |
|
||||||
|
.cache/plugin/optimize
|
||||||
|
restore-keys: |
|
||||||
|
optimize-cache-${{ inputs.repo }}-
|
||||||
|
optimize-cache-privacyguides/privacyguides.org-
|
||||||
|
optimize-cache-
|
||||||
|
|
||||||
|
- name: Install Python Dependencies
|
||||||
|
if: inputs.privileged
|
||||||
|
run: |
|
||||||
|
pip install pipenv
|
||||||
|
pipenv install
|
||||||
|
sudo apt install pngquant
|
||||||
|
|
||||||
|
- name: Install Python Dependencies (Unprivileged)
|
||||||
|
if: ${{ !inputs.privileged }}
|
||||||
|
run: |
|
||||||
|
pip install mkdocs-material
|
||||||
|
sudo apt install pngquant
|
||||||
|
echo "EXTRA_FLAGS=""$EXTRA_FLAGS" --cmd=mkdocs"" >> "$GITHUB_ENV"
|
||||||
|
|
||||||
|
- name: Build Website
|
||||||
|
run: |
|
||||||
|
eval ./run.sh --build --lang=${{ inputs.lang }} "$EXTRA_FLAGS"
|
||||||
|
|
||||||
|
- name: Package Website
|
||||||
|
run: |
|
||||||
|
tar -czf site-${{ inputs.config }}-${{ inputs.lang }}.tar.gz site
|
||||||
|
|
||||||
|
- name: Find Privacy Plugin Cache
|
||||||
|
uses: actions/cache/restore@v4.0.2
|
||||||
|
if: steps.privacy_cache_restore.outputs.cache-hit != 'true'
|
||||||
|
id: privacy_cache_test
|
||||||
|
with:
|
||||||
|
key: privacy-cache-privacyguides/privacyguides.org-${{ hashfiles('.cache/plugin/privacy/**') }}
|
||||||
|
lookup-only: true
|
||||||
|
path: |
|
||||||
|
.cache/plugin/privacy
|
||||||
|
|
||||||
|
- name: Find Social Plugin Cache
|
||||||
|
uses: actions/cache/restore@v4.0.2
|
||||||
|
if: steps.social_cache_restore.outputs.cache-hit != 'true'
|
||||||
|
id: social_cache_test
|
||||||
|
with:
|
||||||
|
key: social-cache-privacyguides/privacyguides.org-${{ inputs.lang }}-${{ hashfiles('.cache/plugin/social/manifest.json') }}
|
||||||
|
lookup-only: true
|
||||||
|
path: |
|
||||||
|
.cache/plugin/social/manifest.json
|
||||||
|
.cache/plugin/social/assets
|
||||||
|
|
||||||
|
- name: Find Optimize Plugin Cache
|
||||||
|
uses: actions/cache/restore@v4.0.2
|
||||||
|
if: steps.optimize_cache_restore.outputs.cache-hit != 'true'
|
||||||
|
id: optimize_cache_test
|
||||||
|
with:
|
||||||
|
key: optimize-cache-privacyguides/privacyguides.org-${{ hashfiles('.cache/plugin/optimize/manifest.json') }}
|
||||||
|
lookup-only: true
|
||||||
|
path: |
|
||||||
|
.cache/plugin/optimize
|
||||||
|
|
||||||
|
- name: Save Privacy Plugin Cache
|
||||||
|
uses: actions/cache/save@v4.0.2
|
||||||
|
if: steps.privacy_cache_test.outputs.cache-hit != 'true'
|
||||||
|
with:
|
||||||
|
key: privacy-cache-${{ inputs.repo }}-${{ hashfiles('.cache/plugin/privacy/**') }}
|
||||||
|
path: .cache/plugin/privacy
|
||||||
|
|
||||||
|
- name: Save Social Plugin Cache
|
||||||
|
uses: actions/cache/save@v4.0.2
|
||||||
|
if: steps.social_cache_test.outputs.cache-hit != 'true'
|
||||||
|
with:
|
||||||
|
key: social-cache-${{ inputs.repo }}-${{ inputs.lang }}-${{ hashfiles('.cache/plugin/social/manifest.json') }}
|
||||||
|
path: |
|
||||||
|
.cache/plugin/social/manifest.json
|
||||||
|
.cache/plugin/social/assets
|
||||||
|
|
||||||
|
- name: Save Optimize Plugin Cache
|
||||||
|
uses: actions/cache/save@v4.0.2
|
||||||
|
if: steps.optimize_cache_test.outputs.cache-hit != 'true'
|
||||||
|
with:
|
||||||
|
key: optimize-cache-${{ inputs.repo }}-${{ hashfiles('.cache/plugin/optimize/manifest.json') }}
|
||||||
|
path: .cache/plugin/optimize
|
||||||
|
|
||||||
|
- name: Upload Site
|
||||||
|
uses: actions/upload-artifact@v4
|
||||||
|
with:
|
||||||
|
name: site-${{ inputs.config }}-${{ inputs.lang }}.tar.gz
|
||||||
|
path: site-${{ inputs.config }}-${{ inputs.lang }}.tar.gz
|
||||||
|
retention-days: 1
|
||||||
|
|
||||||
|
offline_package:
|
||||||
|
if: inputs.config == 'offline' && inputs.lang == 'en'
|
||||||
|
needs: build
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
continue-on-error: ${{ inputs.continue-on-error }}
|
||||||
|
permissions:
|
||||||
|
contents: read
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- uses: actions/download-artifact@v4
|
||||||
|
with:
|
||||||
|
name: site-offline-en.tar.gz
|
||||||
|
|
||||||
|
- run: |
|
||||||
|
tar -xzf site-offline-en.tar.gz
|
||||||
|
tar -czf offline.tar.gz site/en
|
||||||
|
zip -r -q offline.zip site/en
|
||||||
|
|
||||||
|
- name: Upload tar.gz file
|
||||||
|
uses: actions/upload-artifact@v4
|
||||||
|
with:
|
||||||
|
name: offline.tar.gz
|
||||||
|
path: offline.tar.gz
|
||||||
|
|
||||||
|
- name: Upload zip file
|
||||||
|
uses: actions/upload-artifact@v4
|
||||||
|
with:
|
||||||
|
name: offline.zip
|
||||||
|
path: offline.zip
|
||||||
|
|
||||||
|
- name: Create ZIM File
|
||||||
|
uses: addnab/docker-run-action@v3
|
||||||
|
with:
|
||||||
|
image: ghcr.io/openzim/zim-tools:3.1.3
|
||||||
|
options: -v ${{ github.workspace }}:/data
|
||||||
|
run: |
|
||||||
|
zimwriterfs -w index.html -I assets/brand/logos/png/square/pg-yellow.png -l eng -t "Privacy Guides" -d "Your central privacy and security resource to protect yourself online." -c "Privacy Guides" -p "Jonah Aragon" -n "Privacy Guides" -e "https://github.com/privacyguides/privacyguides.org" /data/site/en /data/offline-privacy_guides.zim
|
||||||
|
|
||||||
|
- name: Upload ZIM file
|
||||||
|
uses: actions/upload-artifact@v4
|
||||||
|
with:
|
||||||
|
name: offline-privacy_guides.zim
|
||||||
|
path: offline-privacy_guides.zim
|
62
.github/workflows/production.yml
vendored
62
.github/workflows/production.yml
vendored
@ -1,62 +0,0 @@
|
|||||||
name: Production Deploy
|
|
||||||
concurrency:
|
|
||||||
group: Production
|
|
||||||
cancel-in-progress: true
|
|
||||||
|
|
||||||
on:
|
|
||||||
push:
|
|
||||||
branches: [ main ]
|
|
||||||
|
|
||||||
env:
|
|
||||||
FONTAWESOME_NPM_AUTH_TOKEN: ${{ secrets.FONTAWESOME_NPM_AUTH_TOKEN }}
|
|
||||||
|
|
||||||
jobs:
|
|
||||||
build:
|
|
||||||
name: Jekyll Build
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
|
|
||||||
steps:
|
|
||||||
- uses: actions/checkout@v3
|
|
||||||
- uses: ruby/setup-ruby@v1
|
|
||||||
with:
|
|
||||||
bundler-cache: true
|
|
||||||
- uses: actions/setup-node@v3
|
|
||||||
with:
|
|
||||||
node-version: '14'
|
|
||||||
- name: Cache Jekyll build
|
|
||||||
uses: actions/cache@v3
|
|
||||||
with:
|
|
||||||
path: |
|
|
||||||
.jekyll-cache
|
|
||||||
.sass-cache
|
|
||||||
key: ${{ runner.os }}-jekyll-${{ hashFiles('**/*.??m[ld]') }}
|
|
||||||
- name: Install dependencies
|
|
||||||
run: npm install
|
|
||||||
- name: Build website
|
|
||||||
uses: ./.github/actions/build
|
|
||||||
- run: tar cvf site.tar _site
|
|
||||||
- name: Upload generated Jekyll site
|
|
||||||
uses: actions/upload-artifact@v2
|
|
||||||
with:
|
|
||||||
name: generated-site
|
|
||||||
path: site.tar
|
|
||||||
|
|
||||||
deploy:
|
|
||||||
name: Rsync Deploy
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
environment: production
|
|
||||||
needs: build
|
|
||||||
|
|
||||||
steps:
|
|
||||||
- name: Download generated Jekyll site
|
|
||||||
uses: actions/download-artifact@v2
|
|
||||||
with:
|
|
||||||
name: generated-site
|
|
||||||
- run: tar xvf site.tar
|
|
||||||
- name: Copy built site to production
|
|
||||||
run: |
|
|
||||||
mkdir -p ~/.ssh
|
|
||||||
echo "${{ secrets.SSH_KEY }}" > ~/.ssh/id_rsa
|
|
||||||
chmod 700 ~/.ssh/id_rsa
|
|
||||||
ssh-keyscan -H ${{ secrets.SSH_HOST }} >> ~/.ssh/known_hosts
|
|
||||||
rsync -azP --delete _site/ ${{ secrets.SSH_USERNAME }}@${{ secrets.SSH_HOST }}:${{ secrets.SSH_PATH }}
|
|
64
.github/workflows/publish-mirror.yml
vendored
Normal file
64
.github/workflows/publish-mirror.yml
vendored
Normal file
@ -0,0 +1,64 @@
|
|||||||
|
# Copyright (c) 2022 Jonah Aragon <jonah@triplebit.net>
|
||||||
|
|
||||||
|
# Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
|
# of this software and associated documentation files (the "Software"), to
|
||||||
|
# deal in the Software without restriction, including without limitation the
|
||||||
|
# rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
|
||||||
|
# sell copies of the Software, and to permit persons to whom the Software is
|
||||||
|
# furnished to do so, subject to the following conditions:
|
||||||
|
|
||||||
|
# The above copyright notice and this permission notice shall be included in
|
||||||
|
# all copies or substantial portions of the Software.
|
||||||
|
|
||||||
|
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
# FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE
|
||||||
|
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
|
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||||
|
# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
|
||||||
|
# IN THE SOFTWARE.
|
||||||
|
|
||||||
|
name: 🪞 Push to Mirrors
|
||||||
|
|
||||||
|
permissions:
|
||||||
|
contents: read
|
||||||
|
|
||||||
|
on: [push, delete, create]
|
||||||
|
|
||||||
|
# Ensures that only one mirror task will run at a time.
|
||||||
|
concurrency:
|
||||||
|
group: git-mirror
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
gitlab:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- name: Mirror to GitLab
|
||||||
|
uses: wearerequired/git-mirror-action@v1
|
||||||
|
env:
|
||||||
|
SSH_PRIVATE_KEY: ${{ secrets.ACTIONS_SSH_KEY }}
|
||||||
|
with:
|
||||||
|
source-repo: "git@github.com:privacyguides/privacyguides.org.git"
|
||||||
|
destination-repo: "git@gitlab.com:privacyguides/privacyguides.org.git"
|
||||||
|
|
||||||
|
codeberg:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- name: Mirror to Codeberg
|
||||||
|
uses: wearerequired/git-mirror-action@v1
|
||||||
|
env:
|
||||||
|
SSH_PRIVATE_KEY: ${{ secrets.ACTIONS_SSH_KEY }}
|
||||||
|
with:
|
||||||
|
source-repo: "git@github.com:privacyguides/privacyguides.org.git"
|
||||||
|
destination-repo: "git@codeberg.org:privacyguides/privacyguides.org.git"
|
||||||
|
|
||||||
|
sourcehut:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- name: Mirror to SourceHut
|
||||||
|
uses: wearerequired/git-mirror-action@v1
|
||||||
|
env:
|
||||||
|
SSH_PRIVATE_KEY: ${{ secrets.ACTIONS_SSH_KEY }}
|
||||||
|
with:
|
||||||
|
source-repo: "git@github.com:privacyguides/privacyguides.org.git"
|
||||||
|
destination-repo: "git@git.sr.ht:~jonaharagon/privacyguides.org"
|
120
.github/workflows/publish-pr.yml
vendored
Normal file
120
.github/workflows/publish-pr.yml
vendored
Normal file
@ -0,0 +1,120 @@
|
|||||||
|
name: 📦 PR Preview
|
||||||
|
|
||||||
|
on:
|
||||||
|
workflow_run:
|
||||||
|
workflows: [🛠️ Build PR Preview]
|
||||||
|
types:
|
||||||
|
- completed
|
||||||
|
|
||||||
|
permissions:
|
||||||
|
actions: read
|
||||||
|
contents: read
|
||||||
|
pull-requests: write
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
metadata:
|
||||||
|
if: >
|
||||||
|
github.event.workflow_run.event == 'pull_request' &&
|
||||||
|
github.event.workflow_run.conclusion == 'success'
|
||||||
|
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
|
||||||
|
outputs:
|
||||||
|
pr_number: ${{ steps.metadata.outputs.pr_number }}
|
||||||
|
sha: ${{ steps.metadata.outputs.sha }}
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- name: Download Website Build Artifact
|
||||||
|
uses: actions/github-script@v7.0.1
|
||||||
|
with:
|
||||||
|
script: |
|
||||||
|
var artifacts = await github.rest.actions.listWorkflowRunArtifacts({
|
||||||
|
owner: context.repo.owner,
|
||||||
|
repo: context.repo.repo,
|
||||||
|
run_id: ${{github.event.workflow_run.id }},
|
||||||
|
});
|
||||||
|
var matchArtifact = artifacts.data.artifacts.filter((artifact) => {
|
||||||
|
return artifact.name == "site-build-combined"
|
||||||
|
})[0];
|
||||||
|
var download = await github.rest.actions.downloadArtifact({
|
||||||
|
owner: context.repo.owner,
|
||||||
|
repo: context.repo.repo,
|
||||||
|
artifact_id: matchArtifact.id,
|
||||||
|
archive_format: 'zip',
|
||||||
|
});
|
||||||
|
var fs = require('fs');
|
||||||
|
fs.writeFileSync('${{github.workspace}}/site-build-combined.zip', Buffer.from(download.data));
|
||||||
|
|
||||||
|
- name: Unpack Website
|
||||||
|
run: |
|
||||||
|
mkdir -p site
|
||||||
|
unzip site-build-combined.zip -d site
|
||||||
|
tar -czvf site-build-combined.tar.gz site
|
||||||
|
|
||||||
|
- name: Upload Combined Build Artifact
|
||||||
|
uses: actions/upload-artifact@v4
|
||||||
|
with:
|
||||||
|
name: site-build-combined.tar.gz
|
||||||
|
path: site-build-combined.tar.gz
|
||||||
|
retention-days: 5
|
||||||
|
|
||||||
|
- name: Download Metadata Artifact
|
||||||
|
uses: actions/github-script@v7.0.1
|
||||||
|
with:
|
||||||
|
script: |
|
||||||
|
var artifacts = await github.rest.actions.listWorkflowRunArtifacts({
|
||||||
|
owner: context.repo.owner,
|
||||||
|
repo: context.repo.repo,
|
||||||
|
run_id: ${{github.event.workflow_run.id }},
|
||||||
|
});
|
||||||
|
var matchArtifact = artifacts.data.artifacts.filter((artifact) => {
|
||||||
|
return artifact.name == "metadata"
|
||||||
|
})[0];
|
||||||
|
var download = await github.rest.actions.downloadArtifact({
|
||||||
|
owner: context.repo.owner,
|
||||||
|
repo: context.repo.repo,
|
||||||
|
artifact_id: matchArtifact.id,
|
||||||
|
archive_format: 'zip',
|
||||||
|
});
|
||||||
|
var fs = require('fs');
|
||||||
|
fs.writeFileSync('${{github.workspace}}/metadata.zip', Buffer.from(download.data));
|
||||||
|
|
||||||
|
- name: Set Metadata
|
||||||
|
id: metadata
|
||||||
|
run: |
|
||||||
|
mkdir -p metadata
|
||||||
|
unzip metadata.zip -d metadata
|
||||||
|
echo "pr_number=$(cat metadata/NR)" >> "$GITHUB_OUTPUT"
|
||||||
|
echo "sha=$(cat metadata/SHA)" >> "$GITHUB_OUTPUT"
|
||||||
|
|
||||||
|
deploy:
|
||||||
|
needs: metadata
|
||||||
|
permissions:
|
||||||
|
contents: read
|
||||||
|
|
||||||
|
uses: privacyguides/webserver/.github/workflows/deploy-netlify-preview.yml@main
|
||||||
|
with:
|
||||||
|
netlify_alias: ${{ needs.metadata.outputs.pr_number }}
|
||||||
|
netlify_site_id: ${{ vars.NETLIFY_SITE }}
|
||||||
|
secrets:
|
||||||
|
NETLIFY_TOKEN: ${{ secrets.NETLIFY_TOKEN }}
|
||||||
|
|
||||||
|
comment:
|
||||||
|
permissions:
|
||||||
|
pull-requests: write
|
||||||
|
needs: [deploy, metadata]
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
env:
|
||||||
|
address: ${{ needs.deploy.outputs.address }}
|
||||||
|
steps:
|
||||||
|
- uses: thollander/actions-comment-pull-request@v2.5.0
|
||||||
|
with:
|
||||||
|
pr_number: ${{ needs.metadata.outputs.pr_number }}
|
||||||
|
message: |
|
||||||
|
### <span aria-hidden="true">✅</span> Your preview is ready!
|
||||||
|
|
||||||
|
| Name | Link |
|
||||||
|
| :---: | ---- |
|
||||||
|
| <span aria-hidden="true">🔨</span> Latest commit | ${{ needs.metadata.outputs.sha }} |
|
||||||
|
| <span aria-hidden="true">😎</span> Preview | ${{ env.address }} |
|
||||||
|
comment_tag: deployment
|
103
.github/workflows/publish-release.yml
vendored
Normal file
103
.github/workflows/publish-release.yml
vendored
Normal file
@ -0,0 +1,103 @@
|
|||||||
|
# Copyright (c) 2021-2024 Jonah Aragon <jonah@triplebit.net>
|
||||||
|
|
||||||
|
# Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
|
# of this software and associated documentation files (the "Software"), to
|
||||||
|
# deal in the Software without restriction, including without limitation the
|
||||||
|
# rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
|
||||||
|
# sell copies of the Software, and to permit persons to whom the Software is
|
||||||
|
# furnished to do so, subject to the following conditions:
|
||||||
|
|
||||||
|
# The above copyright notice and this permission notice shall be included in
|
||||||
|
# all copies or substantial portions of the Software.
|
||||||
|
|
||||||
|
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
# FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE
|
||||||
|
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
|
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||||
|
# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
|
||||||
|
# IN THE SOFTWARE.
|
||||||
|
|
||||||
|
name: 📦 Release
|
||||||
|
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
tags:
|
||||||
|
- "*"
|
||||||
|
|
||||||
|
concurrency:
|
||||||
|
group: release-deployment
|
||||||
|
cancel-in-progress: true
|
||||||
|
|
||||||
|
permissions:
|
||||||
|
contents: write
|
||||||
|
pages: write
|
||||||
|
id-token: write
|
||||||
|
deployments: write
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
submodule:
|
||||||
|
strategy:
|
||||||
|
matrix:
|
||||||
|
repo: [mkdocs-material-insiders, brand, i18n]
|
||||||
|
uses: privacyguides/.github/.github/workflows/download-repo.yml@main
|
||||||
|
with:
|
||||||
|
repo: ${{ matrix.repo }}
|
||||||
|
secrets:
|
||||||
|
ACTIONS_SSH_KEY: ${{ secrets.ACTIONS_SSH_KEY }}
|
||||||
|
|
||||||
|
build:
|
||||||
|
needs: submodule
|
||||||
|
strategy:
|
||||||
|
matrix:
|
||||||
|
lang: [en, es, fr, he, it, nl, ru, zh-Hant]
|
||||||
|
build: [build, offline]
|
||||||
|
permissions:
|
||||||
|
contents: read
|
||||||
|
uses: ./.github/workflows/build.yml
|
||||||
|
with:
|
||||||
|
config: ${{ matrix.build }}
|
||||||
|
ref: ${{ github.ref }}
|
||||||
|
repo: ${{ github.repository }}
|
||||||
|
lang: ${{ matrix.lang }}
|
||||||
|
context: production
|
||||||
|
continue-on-error: false
|
||||||
|
|
||||||
|
release:
|
||||||
|
name: Create release notes
|
||||||
|
needs: build
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
permissions:
|
||||||
|
contents: write
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- uses: actions/download-artifact@v4
|
||||||
|
with:
|
||||||
|
pattern: offline*
|
||||||
|
merge-multiple: true
|
||||||
|
|
||||||
|
- name: Create release notes
|
||||||
|
uses: ncipollo/release-action@v1
|
||||||
|
with:
|
||||||
|
generateReleaseNotes: true
|
||||||
|
artifacts: "offline.zip,offline.tar.gz,offline-privacy_guides.zim"
|
||||||
|
makeLatest: true
|
||||||
|
|
||||||
|
deploy:
|
||||||
|
needs: build
|
||||||
|
uses: privacyguides/webserver/.github/workflows/deploy-all.yml@main
|
||||||
|
secrets:
|
||||||
|
NETLIFY_TOKEN: ${{ secrets.NETLIFY_TOKEN }}
|
||||||
|
PROD_MINIO_KEY_ID: ${{ secrets.PROD_MINIO_KEY_ID }}
|
||||||
|
PROD_MINIO_SECRET_KEY: ${{ secrets.PROD_MINIO_SECRET_KEY }}
|
||||||
|
CF_API_TOKEN: ${{ secrets.CF_API_TOKEN }}
|
||||||
|
CF_ACCOUNT_ID: ${{ secrets.CF_ACCOUNT_ID }}
|
||||||
|
CLUSTER_USERNAME: ${{ secrets.CLUSTER_USERNAME }}
|
||||||
|
CLUSTER_PASSWORD: ${{ secrets.CLUSTER_PASSWORD }}
|
||||||
|
CLOUDFLARE_ZONE: ${{ secrets.CLOUDFLARE_ZONE }}
|
||||||
|
CLOUDFLARE_TOKEN: ${{ secrets.CLOUDFLARE_TOKEN }}
|
||||||
|
|
||||||
|
cleanup:
|
||||||
|
if: ${{ always() }}
|
||||||
|
needs: build
|
||||||
|
uses: privacyguides/.github/.github/workflows/cleanup.yml@main
|
60
.github/workflows/test-build.yml
vendored
Normal file
60
.github/workflows/test-build.yml
vendored
Normal file
@ -0,0 +1,60 @@
|
|||||||
|
# Copyright (c) 2024 Jonah Aragon <jonah@triplebit.net>
|
||||||
|
|
||||||
|
# Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
|
# of this software and associated documentation files (the "Software"), to
|
||||||
|
# deal in the Software without restriction, including without limitation the
|
||||||
|
# rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
|
||||||
|
# sell copies of the Software, and to permit persons to whom the Software is
|
||||||
|
# furnished to do so, subject to the following conditions:
|
||||||
|
|
||||||
|
# The above copyright notice and this permission notice shall be included in
|
||||||
|
# all copies or substantial portions of the Software.
|
||||||
|
|
||||||
|
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
# FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE
|
||||||
|
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
|
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||||
|
# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
|
||||||
|
# IN THE SOFTWARE.
|
||||||
|
|
||||||
|
name: 📦 Manual Test Build
|
||||||
|
|
||||||
|
on:
|
||||||
|
workflow_dispatch:
|
||||||
|
|
||||||
|
permissions:
|
||||||
|
contents: read
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
submodule:
|
||||||
|
strategy:
|
||||||
|
matrix:
|
||||||
|
repo: [mkdocs-material-insiders, brand, i18n]
|
||||||
|
uses: privacyguides/.github/.github/workflows/download-repo.yml@main
|
||||||
|
with:
|
||||||
|
repo: ${{ matrix.repo }}
|
||||||
|
secrets:
|
||||||
|
ACTIONS_SSH_KEY: ${{ secrets.ACTIONS_SSH_KEY }}
|
||||||
|
|
||||||
|
build:
|
||||||
|
needs: submodule
|
||||||
|
strategy:
|
||||||
|
matrix:
|
||||||
|
lang: [en, fr, he]
|
||||||
|
build: [build, offline]
|
||||||
|
fail-fast: false
|
||||||
|
permissions:
|
||||||
|
contents: read
|
||||||
|
uses: ./.github/workflows/build.yml
|
||||||
|
with:
|
||||||
|
config: ${{ matrix.build }}
|
||||||
|
ref: ${{ github.ref }}
|
||||||
|
repo: ${{ github.repository }}
|
||||||
|
lang: ${{ matrix.lang }}
|
||||||
|
continue-on-error: true
|
||||||
|
|
||||||
|
cleanup:
|
||||||
|
if: ${{ always() }}
|
||||||
|
needs: build
|
||||||
|
uses: privacyguides/.github/.github/workflows/cleanup.yml@main
|
131
.github/workflows/test-lint.yml
vendored
Normal file
131
.github/workflows/test-lint.yml
vendored
Normal file
@ -0,0 +1,131 @@
|
|||||||
|
# Copyright (c) 2024 Jonah Aragon <jonah@triplebit.net>
|
||||||
|
|
||||||
|
# Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
|
# of this software and associated documentation files (the "Software"), to
|
||||||
|
# deal in the Software without restriction, including without limitation the
|
||||||
|
# rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
|
||||||
|
# sell copies of the Software, and to permit persons to whom the Software is
|
||||||
|
# furnished to do so, subject to the following conditions:
|
||||||
|
|
||||||
|
# The above copyright notice and this permission notice shall be included in
|
||||||
|
# all copies or substantial portions of the Software.
|
||||||
|
|
||||||
|
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
# FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE
|
||||||
|
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
|
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||||
|
# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
|
||||||
|
# IN THE SOFTWARE.
|
||||||
|
|
||||||
|
name: 🤖 Linting
|
||||||
|
|
||||||
|
permissions:
|
||||||
|
contents: read
|
||||||
|
|
||||||
|
on:
|
||||||
|
workflow_dispatch:
|
||||||
|
pull_request:
|
||||||
|
branches:
|
||||||
|
- main
|
||||||
|
push:
|
||||||
|
|
||||||
|
concurrency:
|
||||||
|
group: ${{ github.ref }}-${{ github.workflow }}
|
||||||
|
cancel-in-progress: true
|
||||||
|
|
||||||
|
env:
|
||||||
|
MAIN_BRANCH: ${{ github.event_name == 'push' }}
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
megalinter:
|
||||||
|
name: MegaLinter
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- if: ${{ env.MAIN_BRANCH }}
|
||||||
|
uses: actions/checkout@v4
|
||||||
|
|
||||||
|
- if: ${{ env.MAIN_BRANCH == 0 }}
|
||||||
|
uses: actions/checkout@v4
|
||||||
|
with:
|
||||||
|
fetch-depth: 0
|
||||||
|
|
||||||
|
- name: Configure markdown-link-check
|
||||||
|
run: |
|
||||||
|
cat <<EOT >> .markdown-link-check.json
|
||||||
|
{
|
||||||
|
"ignorePatterns": [
|
||||||
|
{
|
||||||
|
"pattern": "^https://twitter.com"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"pattern": "^https://reddit.com"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"pattern": "^#_"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"pattern": ".onion"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"pattern": "^https://en.opensuse.org"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"pattern": "^https://quad9.net"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"pattern": "^https://dnscrypt.info"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"pattern": "^https://pipewire.org"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"replacementPatterns": [
|
||||||
|
{
|
||||||
|
"pattern": "^assets/",
|
||||||
|
"replacement": "https://www.privacyguides.org/en/assets/"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"pattern": "^(../)*assets/",
|
||||||
|
"replacement": "https://www.privacyguides.org/en/assets/"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"pattern": "^/",
|
||||||
|
"replacement": "https://www.privacyguides.org/"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"retryOn429": true,
|
||||||
|
"retryCount": 5,
|
||||||
|
"aliveStatusCodes": [200, 206, 403]
|
||||||
|
}
|
||||||
|
EOT
|
||||||
|
|
||||||
|
- id: ml
|
||||||
|
# You can override MegaLinter flavor used to have faster performances
|
||||||
|
# More info at https://megalinter.io/flavors/
|
||||||
|
uses: oxsecurity/megalinter/flavors/documentation@v7.10.0
|
||||||
|
env:
|
||||||
|
# All available variables are described in documentation
|
||||||
|
# https://megalinter.io/configuration/
|
||||||
|
# Validates all source when push on main, else just the git diff with main.
|
||||||
|
VALIDATE_ALL_CODEBASE: ${{ env.MAIN_BRANCH }}
|
||||||
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||||
|
# ADD YOUR CUSTOM ENV VARIABLES HERE OR DEFINE THEM IN A FILE .mega-linter.yml AT THE ROOT OF YOUR REPOSITORY
|
||||||
|
DISABLE: COPYPASTE,SPELL,HTML
|
||||||
|
DISABLE_LINTERS: JSON_JSONLINT,MARKDOWN_MARKDOWN_TABLE_FORMATTER
|
||||||
|
DISABLE_ERRORS_LINTERS: CSS_STYLELINT,MARKDOWN_MARKDOWN_LINK_CHECK,YAML_YAMLLINT,DOCKERFILE_HADOLINT,REPOSITORY_TRIVY,REPOSITORY_CHECKOV,REPOSITORY_GITLEAKS
|
||||||
|
EDITORCONFIG_EDITORCONFIG_CHECKER_ARGUMENTS: -disable-indentation
|
||||||
|
ENV_DOTENV_LINTER_ARGUMENTS: "--skip QuoteCharacter"
|
||||||
|
MARKDOWN_MARKDOWN_LINK_CHECK_FILTER_REGEX_INCLUDE: (docs)
|
||||||
|
MARKDOWN_MARKDOWNLINT_CONFIG_FILE: .markdownlint.yml
|
||||||
|
MARKDOWN_MARKDOWNLINT_FILTER_REGEX_EXCLUDE: (PULL_REQUEST_TEMPLATE\.md)
|
||||||
|
|
||||||
|
# Upload MegaLinter artifacts
|
||||||
|
- name: Archive production artifacts
|
||||||
|
if: success() || failure()
|
||||||
|
uses: actions/upload-artifact@v4
|
||||||
|
with:
|
||||||
|
name: MegaLinter reports
|
||||||
|
path: |
|
||||||
|
megalinter-reports
|
||||||
|
mega-linter.log
|
238
.github/workflows/tests.yml
vendored
238
.github/workflows/tests.yml
vendored
@ -1,238 +0,0 @@
|
|||||||
name: Code tests
|
|
||||||
|
|
||||||
on:
|
|
||||||
push:
|
|
||||||
branches:
|
|
||||||
- main
|
|
||||||
pull_request:
|
|
||||||
branches:
|
|
||||||
- main
|
|
||||||
|
|
||||||
env:
|
|
||||||
FONTAWESOME_NPM_AUTH_TOKEN: ${{ secrets.FONTAWESOME_NPM_AUTH_TOKEN }}
|
|
||||||
|
|
||||||
jobs:
|
|
||||||
deps:
|
|
||||||
name: "Dependency Install"
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
|
|
||||||
steps:
|
|
||||||
- uses: actions/checkout@v3
|
|
||||||
- name: Cache node modules
|
|
||||||
uses: actions/cache@v3
|
|
||||||
with:
|
|
||||||
path: ~/.npm
|
|
||||||
key: ${{ runner.os }}-npm-${{ hashFiles('**/package-lock.json') }}
|
|
||||||
restore-keys: |
|
|
||||||
${{ runner.os }}-npm-
|
|
||||||
- uses: actions/setup-node@v3
|
|
||||||
with:
|
|
||||||
node-version: '14'
|
|
||||||
- run: npm install
|
|
||||||
- run: tar cvf node_modules.tar node_modules
|
|
||||||
- name: Upload node_modules for Jekyll build
|
|
||||||
uses: actions/upload-artifact@v2
|
|
||||||
with:
|
|
||||||
name: node_modules
|
|
||||||
path: node_modules.tar
|
|
||||||
|
|
||||||
build:
|
|
||||||
name: "Jekyll Build"
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
needs: deps
|
|
||||||
|
|
||||||
steps:
|
|
||||||
- uses: actions/checkout@v3
|
|
||||||
- uses: ruby/setup-ruby@v1
|
|
||||||
with:
|
|
||||||
bundler-cache: true
|
|
||||||
- uses: actions/setup-node@v3
|
|
||||||
with:
|
|
||||||
node-version: '14'
|
|
||||||
- name: Cache Jekyll build
|
|
||||||
uses: actions/cache@v3
|
|
||||||
with:
|
|
||||||
path: |
|
|
||||||
.jekyll-cache
|
|
||||||
.sass-cache
|
|
||||||
key: ${{ runner.os }}-jekyll-${{ hashFiles('**/*.??m[ld]') }}
|
|
||||||
restore-keys: |
|
|
||||||
${{ runner.os }}-jekyll-
|
|
||||||
- name: Set Date and Time
|
|
||||||
run: |
|
|
||||||
sed -i "s/^ date:.*$/ date: $(TZ=UTC date "+%Y-%m-%d")/" _config.yml
|
|
||||||
sed -i "s/^ time:.*$/ time: $(TZ=UTC date "+%H:%M:%S %Z")/" _config.yml
|
|
||||||
- name: Download node_modules
|
|
||||||
uses: actions/download-artifact@v2
|
|
||||||
with:
|
|
||||||
name: node_modules
|
|
||||||
- run: tar xvf node_modules.tar
|
|
||||||
- name: Generate Website
|
|
||||||
run: npm run build
|
|
||||||
- run: tar cvf site.tar _site
|
|
||||||
- name: Upload generated Jekyll site
|
|
||||||
uses: actions/upload-artifact@v2
|
|
||||||
with:
|
|
||||||
name: generated-site
|
|
||||||
path: site.tar
|
|
||||||
|
|
||||||
link:
|
|
||||||
name: "Broken Hyperlinks (Internal)"
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
needs: build
|
|
||||||
|
|
||||||
steps:
|
|
||||||
- uses: actions/checkout@v3
|
|
||||||
- name: Download generated Jekyll site
|
|
||||||
uses: actions/download-artifact@v2
|
|
||||||
with:
|
|
||||||
name: generated-site
|
|
||||||
- run: tar xvf site.tar
|
|
||||||
- name: Copy built site to production
|
|
||||||
run: |
|
|
||||||
mv ${{ github.workspace }}/_site /tmp/
|
|
||||||
mkdir -p /tmp/src
|
|
||||||
mv ${{ github.workspace }}/* /tmp/src/
|
|
||||||
mkdir -p ${{ github.workspace }}/src
|
|
||||||
mv /tmp/src/* ${{ github.workspace }}/src/
|
|
||||||
mv /tmp/_site ${{ github.workspace }}/
|
|
||||||
- name: Internal link checker
|
|
||||||
uses: untitaker/hyperlink@0.1.21
|
|
||||||
with:
|
|
||||||
args: _site/ --sources src/
|
|
||||||
|
|
||||||
extlink:
|
|
||||||
name: "Broken Hyperlinks (External)"
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
needs: [build, link]
|
|
||||||
|
|
||||||
steps:
|
|
||||||
- uses: actions/checkout@v3
|
|
||||||
- name: Download generated Jekyll site
|
|
||||||
uses: actions/download-artifact@v2
|
|
||||||
with:
|
|
||||||
name: generated-site
|
|
||||||
- run: tar xvf site.tar
|
|
||||||
- name: Cache HTMLProofer
|
|
||||||
id: cache-htmlproofer
|
|
||||||
uses: actions/cache@v3
|
|
||||||
with:
|
|
||||||
path: tmp/.htmlproofer
|
|
||||||
key: ${{ runner.os }}-htmlproofer-${{ hashFiles('_site/**.html') }}
|
|
||||||
restore-keys: |
|
|
||||||
${{ runner.os }}-htmlproofer-
|
|
||||||
${{ runner.os }}-htmlproofer
|
|
||||||
- name: Check External Links (Informational, Soft-Fail)
|
|
||||||
uses: chabad360/htmlproofer@v1.1
|
|
||||||
with:
|
|
||||||
directory: ${{ github.workspace }}/_site
|
|
||||||
arguments: --assume-extension --external_only --internal-domains privacyguides.org,www.privacyguides.org --timeframe 30d --url-ignore '/https:\/\/developers\.cloudflare\.com\//,/https:\/\/github\.com\/privacyguides\/privacyguides\.org\/(edit|tree|blob)\/main/,/https:\/\/support\.(startmail|yubico)\.com\//'
|
|
||||||
continue-on-error: true
|
|
||||||
|
|
||||||
https:
|
|
||||||
name: "Require HTTPS Internal Images"
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
needs: build
|
|
||||||
|
|
||||||
steps:
|
|
||||||
- uses: actions/checkout@v3
|
|
||||||
- name: Download generated Jekyll site
|
|
||||||
uses: actions/download-artifact@v2
|
|
||||||
with:
|
|
||||||
name: generated-site
|
|
||||||
- run: tar xvf site.tar
|
|
||||||
- name: Check Images
|
|
||||||
uses: chabad360/htmlproofer@v1.1
|
|
||||||
with:
|
|
||||||
directory: ${{ github.workspace }}/_site
|
|
||||||
arguments: --assume-extension --check-img-http --internal-domains privacyguides.org,www.privacyguides.org --disable-external --checks-to-ignore LinkCheck,ScriptCheck
|
|
||||||
|
|
||||||
scripts:
|
|
||||||
name: "Script Reference Checks"
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
needs: [build, link]
|
|
||||||
|
|
||||||
steps:
|
|
||||||
- uses: actions/checkout@v3
|
|
||||||
- name: Download generated Jekyll site
|
|
||||||
uses: actions/download-artifact@v2
|
|
||||||
with:
|
|
||||||
name: generated-site
|
|
||||||
- run: tar xvf site.tar
|
|
||||||
- name: Check HTML
|
|
||||||
uses: chabad360/htmlproofer@v1.1
|
|
||||||
with:
|
|
||||||
directory: ${{ github.workspace }}/_site
|
|
||||||
arguments: --assume-extension --check-html --disable-external --check-sri --report-script-embeds --internal-domains privacyguides.org,www.privacyguides.org --checks-to-ignore LinkCheck,ImageCheck,HtmlCheck
|
|
||||||
|
|
||||||
tags:
|
|
||||||
name: "HTML Tag Test"
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
needs: build
|
|
||||||
|
|
||||||
steps:
|
|
||||||
- uses: actions/checkout@v3
|
|
||||||
- name: Download generated Jekyll site
|
|
||||||
uses: actions/download-artifact@v2
|
|
||||||
with:
|
|
||||||
name: generated-site
|
|
||||||
- run: tar xvf site.tar
|
|
||||||
- name: Validate HTML
|
|
||||||
uses: chabad360/htmlproofer@v1.1
|
|
||||||
with:
|
|
||||||
directory: ${{ github.workspace }}/_site
|
|
||||||
arguments: --assume-extension --check-html --disable-external --allow-hash-href --internal-domains privacyguides.org,www.privacyguides.org --report-invalid-tags --report-eof-tags --report-mismatched-tags --checks-to-ignore LinkCheck,ImageCheck,ScriptCheck
|
|
||||||
|
|
||||||
entity:
|
|
||||||
name: "HTML Entity Names Test"
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
needs: build
|
|
||||||
|
|
||||||
steps:
|
|
||||||
- uses: actions/checkout@v3
|
|
||||||
- name: Download generated Jekyll site
|
|
||||||
uses: actions/download-artifact@v2
|
|
||||||
with:
|
|
||||||
name: generated-site
|
|
||||||
- run: tar xvf site.tar
|
|
||||||
- name: Validate HTML
|
|
||||||
uses: chabad360/htmlproofer@v1.1
|
|
||||||
with:
|
|
||||||
directory: ${{ github.workspace }}/_site
|
|
||||||
arguments: --assume-extension --check-html --disable-external --allow-hash-href --internal-domains privacyguides.org,www.privacyguides.org --report-missing-names --checks-to-ignore LinkCheck,ImageCheck,ScriptCheck
|
|
||||||
|
|
||||||
misc:
|
|
||||||
name: "Misc HTML Test"
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
needs: build
|
|
||||||
|
|
||||||
steps:
|
|
||||||
- uses: actions/checkout@v3
|
|
||||||
- name: Download generated Jekyll site
|
|
||||||
uses: actions/download-artifact@v2
|
|
||||||
with:
|
|
||||||
name: generated-site
|
|
||||||
- run: tar xvf site.tar
|
|
||||||
- name: Validate HTML
|
|
||||||
uses: chabad360/htmlproofer@v1.1
|
|
||||||
with:
|
|
||||||
directory: ${{ github.workspace }}/_site
|
|
||||||
arguments: --assume-extension --check-html --disable-external --internal-domains privacyguides.org,www.privacyguides.org --report-missing-doctype --checks-to-ignore LinkCheck,ImageCheck,ScriptCheck
|
|
||||||
|
|
||||||
opengraph:
|
|
||||||
name: "OpenGraph Test"
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
needs: build
|
|
||||||
|
|
||||||
steps:
|
|
||||||
- uses: actions/checkout@v3
|
|
||||||
- name: Download generated Jekyll site
|
|
||||||
uses: actions/download-artifact@v2
|
|
||||||
with:
|
|
||||||
name: generated-site
|
|
||||||
- run: tar xvf site.tar
|
|
||||||
- name: Check OpenGraph
|
|
||||||
uses: chabad360/htmlproofer@v1.1
|
|
||||||
with:
|
|
||||||
directory: ${{ github.workspace }}/_site
|
|
||||||
arguments: --assume-extension --disable-external --check-opengraph --checks-to-ignore LinkCheck,ImageCheck,ScriptCheck
|
|
53
.github/workflows/upload-crowdin.yml
vendored
Normal file
53
.github/workflows/upload-crowdin.yml
vendored
Normal file
@ -0,0 +1,53 @@
|
|||||||
|
# Copyright (c) 2022-2024 Jonah Aragon <jonah@triplebit.net>
|
||||||
|
|
||||||
|
# Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
|
# of this software and associated documentation files (the "Software"), to
|
||||||
|
# deal in the Software without restriction, including without limitation the
|
||||||
|
# rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
|
||||||
|
# sell copies of the Software, and to permit persons to whom the Software is
|
||||||
|
# furnished to do so, subject to the following conditions:
|
||||||
|
|
||||||
|
# The above copyright notice and this permission notice shall be included in
|
||||||
|
# all copies or substantial portions of the Software.
|
||||||
|
|
||||||
|
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
# FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE
|
||||||
|
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
|
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||||
|
# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
|
||||||
|
# IN THE SOFTWARE.
|
||||||
|
|
||||||
|
name: 💬 Crowdin Upload
|
||||||
|
|
||||||
|
permissions:
|
||||||
|
contents: read
|
||||||
|
|
||||||
|
on:
|
||||||
|
workflow_dispatch:
|
||||||
|
push:
|
||||||
|
branches: [main]
|
||||||
|
|
||||||
|
concurrency:
|
||||||
|
group: ${{ github.workflow }}-${{ github.ref }}
|
||||||
|
cancel-in-progress: true
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
synchronize-with-crowdin:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- name: Checkout
|
||||||
|
uses: actions/checkout@v4
|
||||||
|
|
||||||
|
- name: crowdin action
|
||||||
|
uses: crowdin/github-action@v1.20.2
|
||||||
|
with:
|
||||||
|
upload_sources: true
|
||||||
|
upload_sources_args: "--auto-update --delete-obsolete"
|
||||||
|
download_translations: false
|
||||||
|
config: crowdin.yml
|
||||||
|
env:
|
||||||
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||||
|
CROWDIN_PROJECT_ID: ${{ secrets.CROWDIN_PROJECT_ID }}
|
||||||
|
CROWDIN_PERSONAL_TOKEN: ${{ secrets.CROWDIN_PERSONAL_TOKEN }}
|
36
.gitignore
vendored
36
.gitignore
vendored
@ -1,13 +1,25 @@
|
|||||||
_site/
|
site
|
||||||
.sass-cache/
|
/i18n/
|
||||||
.jekyll-metadata
|
/includes/*.*.*
|
||||||
.DS_Store
|
!/includes/*.en.*
|
||||||
font/assets/
|
/static/i18n/
|
||||||
font/_sass/
|
/theme/overrides/*.*.*
|
||||||
font/.fontcustom-manifest.json
|
|
||||||
assets/webfonts/ptio-font-preview.html
|
# commit social card fonts to repo
|
||||||
vendor
|
# see: https://github.com/squidfunk/mkdocs-material/issues/6983
|
||||||
|
# ridiculous hide-and-seek https://stackoverflow.com/a/72380673
|
||||||
|
.cache/*
|
||||||
|
!.cache/plugin
|
||||||
|
/.cache/plugin/*
|
||||||
|
!.cache/plugin/social
|
||||||
|
/.cache/plugin/social/*
|
||||||
|
!.cache/plugin/social/fonts
|
||||||
|
|
||||||
|
# Local Netlify folder
|
||||||
|
.netlify
|
||||||
node_modules
|
node_modules
|
||||||
.bundle
|
|
||||||
.jekyll-cache
|
# Python
|
||||||
.nova
|
.venv
|
||||||
|
.env
|
||||||
|
.mkdocs-insiders-*
|
||||||
|
6
.gitmodules
vendored
Normal file
6
.gitmodules
vendored
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
[submodule "theme/assets/brand"]
|
||||||
|
path = theme/assets/brand
|
||||||
|
url = https://github.com/privacyguides/brand.git
|
||||||
|
[submodule "modules/mkdocs-material"]
|
||||||
|
path = modules/mkdocs-material
|
||||||
|
url = git@github.com:privacyguides/mkdocs-material-insiders.git
|
16
.mailmap
Normal file
16
.mailmap
Normal file
@ -0,0 +1,16 @@
|
|||||||
|
Daniel Gray <dngray@privacyguides.org> <dng@disroot.org>
|
||||||
|
Daniel Gray <dngray@privacyguides.org> <48640805+dngray@users.noreply.github.com>
|
||||||
|
Daniel Gray <dngray@privacyguides.org> <dngray@privacytools.io>
|
||||||
|
Daniel Gray <dngray@privacyguides.org>
|
||||||
|
Jonah Aragon <jonah@privacyguides.org> <jonah@triplebit.net>
|
||||||
|
Jonah Aragon <jonah@privacyguides.org> <jonah@privacytools.io>
|
||||||
|
Jonah Aragon <jonah@privacyguides.org> <github@aragon.science>
|
||||||
|
mfwmyfacewhen <mfw@privacyguides.org> <94880365+mfwmyfacewhen@users.noreply.github.com>
|
||||||
|
mbananasynergy <mbananasynergy@privacyguides.org> <>
|
||||||
|
mbananasynergy <mbananasynergy@privacyguides.org> <107055883+matchboxbananasynergy@users.noreply.github.com>
|
||||||
|
rollsicecream <rollsicecream@proton.me> <153316540+rollsicecream@users.noreply.github.com>
|
||||||
|
rollsicecream <rollsicecream@proton.me> <waterfallnet@proton.me>
|
||||||
|
Freddy <freddy@privacyguides.org> <freddy@decypher.pw>
|
||||||
|
Freddy <freddy@privacyguides.org> <freddy@privacytools.io>
|
||||||
|
Niek de Wilde <niek@privacyguides.org> <github.ef27z@simplelogin.com>
|
||||||
|
Niek de Wilde <niek@privacyguides.org> <blacklight447@privacytools.io>
|
30
.markdownlint.yml
Normal file
30
.markdownlint.yml
Normal file
@ -0,0 +1,30 @@
|
|||||||
|
# Copyright (c) 2022 Jonah Aragon <jonah@triplebit.net>
|
||||||
|
|
||||||
|
# Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
|
# of this software and associated documentation files (the "Software"), to
|
||||||
|
# deal in the Software without restriction, including without limitation the
|
||||||
|
# rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
|
||||||
|
# sell copies of the Software, and to permit persons to whom the Software is
|
||||||
|
# furnished to do so, subject to the following conditions:
|
||||||
|
|
||||||
|
# The above copyright notice and this permission notice shall be included in
|
||||||
|
# all copies or substantial portions of the Software.
|
||||||
|
|
||||||
|
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
# FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE
|
||||||
|
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
|
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||||
|
# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
|
||||||
|
# IN THE SOFTWARE.
|
||||||
|
|
||||||
|
default: true
|
||||||
|
line-length: false
|
||||||
|
ul-indent:
|
||||||
|
indent: 4
|
||||||
|
no-inline-html: false
|
||||||
|
code-block-style: false
|
||||||
|
no-hard-tabs: true
|
||||||
|
emphasis-style:
|
||||||
|
style: "asterisk"
|
||||||
|
no-duplicate-header: false
|
2
.npmrc
2
.npmrc
@ -1,2 +0,0 @@
|
|||||||
@fortawesome:registry=https://npm.fontawesome.com/
|
|
||||||
//npm.fontawesome.com/:_authToken=${FONTAWESOME_NPM_AUTH_TOKEN}
|
|
1
.python-version
Normal file
1
.python-version
Normal file
@ -0,0 +1 @@
|
|||||||
|
3.12
|
@ -1 +0,0 @@
|
|||||||
3.0.0
|
|
1
.vscode/.empty-schema.json
vendored
Normal file
1
.vscode/.empty-schema.json
vendored
Normal file
@ -0,0 +1 @@
|
|||||||
|
{}
|
31
.vscode/extensions.json
vendored
Normal file
31
.vscode/extensions.json
vendored
Normal file
@ -0,0 +1,31 @@
|
|||||||
|
// Copyright (c) 2024 Jonah Aragon <jonah@triplebit.net>
|
||||||
|
|
||||||
|
// Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
|
// of this software and associated documentation files (the "Software"), to
|
||||||
|
// deal in the Software without restriction, including without limitation the
|
||||||
|
// rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
|
||||||
|
// sell copies of the Software, and to permit persons to whom the Software is
|
||||||
|
// furnished to do so, subject to the following conditions:
|
||||||
|
|
||||||
|
// The above copyright notice and this permission notice shall be included in
|
||||||
|
// all copies or substantial portions of the Software.
|
||||||
|
|
||||||
|
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
// FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE
|
||||||
|
// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
|
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||||
|
// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
|
||||||
|
// IN THE SOFTWARE.
|
||||||
|
|
||||||
|
{
|
||||||
|
"recommendations": [
|
||||||
|
"EditorConfig.EditorConfig",
|
||||||
|
"DavidAnson.vscode-markdownlint",
|
||||||
|
"wholroyd.jinja",
|
||||||
|
"mikestead.dotenv",
|
||||||
|
"redhat.vscode-yaml",
|
||||||
|
"ecmel.vscode-html-css",
|
||||||
|
"yzhang.markdown-all-in-one"
|
||||||
|
]
|
||||||
|
}
|
51
.vscode/settings.json
vendored
Normal file
51
.vscode/settings.json
vendored
Normal file
@ -0,0 +1,51 @@
|
|||||||
|
// Copyright (c) 2024 Jonah Aragon <jonah@triplebit.net>
|
||||||
|
|
||||||
|
// Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
|
// of this software and associated documentation files (the "Software"), to
|
||||||
|
// deal in the Software without restriction, including without limitation the
|
||||||
|
// rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
|
||||||
|
// sell copies of the Software, and to permit persons to whom the Software is
|
||||||
|
// furnished to do so, subject to the following conditions:
|
||||||
|
|
||||||
|
// The above copyright notice and this permission notice shall be included in
|
||||||
|
// all copies or substantial portions of the Software.
|
||||||
|
|
||||||
|
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
// FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE
|
||||||
|
// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
|
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||||
|
// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
|
||||||
|
// IN THE SOFTWARE.
|
||||||
|
|
||||||
|
{
|
||||||
|
"git.ignoreLimitWarning": true,
|
||||||
|
"ltex.diagnosticSeverity": "hint",
|
||||||
|
"editor.unicodeHighlight.ambiguousCharacters": true,
|
||||||
|
"editor.unicodeHighlight.invisibleCharacters": true,
|
||||||
|
"editor.defaultFormatter": "DavidAnson.vscode-markdownlint",
|
||||||
|
"[yaml]": {
|
||||||
|
"editor.defaultFormatter": "redhat.vscode-yaml",
|
||||||
|
"editor.quickSuggestions": {
|
||||||
|
"other": true,
|
||||||
|
"comments": false,
|
||||||
|
"strings": true
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"yaml.schemas": {
|
||||||
|
"https://raw.githubusercontent.com/DavidAnson/markdownlint/main/schema/markdownlint-config-schema.json": ".markdownlint.yml",
|
||||||
|
"https://json.schemastore.org/github-issue-config.json": ".github/ISSUE_TEMPLATE/config.yml",
|
||||||
|
".vscode/.empty-schema.json": "config/*.yml"
|
||||||
|
},
|
||||||
|
"yaml.customTags": [
|
||||||
|
"!ENV sequence",
|
||||||
|
"!ENV",
|
||||||
|
"tag:yaml.org,2002:python/name:pymdownx.superfences.fence_code_format",
|
||||||
|
"tag:yaml.org,2002:python/name:material.extensions.emoji.twemoji",
|
||||||
|
"tag:yaml.org,2002:python/name:material.extensions.emoji.to_svg"
|
||||||
|
],
|
||||||
|
"editor.formatOnSave": true,
|
||||||
|
"[github-actions-workflow]": {
|
||||||
|
"editor.defaultFormatter": "esbenp.prettier-vscode"
|
||||||
|
}
|
||||||
|
}
|
@ -1,5 +0,0 @@
|
|||||||
{
|
|
||||||
"m.homeserver": {
|
|
||||||
"base_url": "https://dendrite-client.privacyguides.org"
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,3 +0,0 @@
|
|||||||
{
|
|
||||||
"m.server": "dendrite-federation.privacyguides.org:443"
|
|
||||||
}
|
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@ -1,5 +0,0 @@
|
|||||||
Contact: jonah@triplebit.net
|
|
||||||
Encryption: https://www.jonaharagon.com/keys/
|
|
||||||
Preferred-Languages: en
|
|
||||||
Canonical: https://privacyguides.org/.well-known/security.txt
|
|
||||||
Policy: https://github.com/privacyguides/privacyguides.org/security/policy
|
|
21
404.html
21
404.html
@ -1,21 +0,0 @@
|
|||||||
---
|
|
||||||
layout: default
|
|
||||||
---
|
|
||||||
|
|
||||||
<div class="container text-center">
|
|
||||||
<div class="position-absolute top-50 start-50 translate-middle">
|
|
||||||
<h1 class="display-1">404</h1>
|
|
||||||
<p><strong>We couldn't find that :(</strong></p>
|
|
||||||
<p>Maybe you were looking for one of these pages?</p>
|
|
||||||
<div class="row">
|
|
||||||
<div class="col">
|
|
||||||
<ul class="list-unstyled">
|
|
||||||
<li><i class="fas fa-home"></i> <a href="/">Back to our Homepage</a></li>
|
|
||||||
</ul>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="position-absolute bottom-0 start-50 translate-middle-x">
|
|
||||||
<p class="text-danger text-center"><i class="fas fa-exclamation-circle"></i> If you believe you reached this page in error, please <a href="https://github.com/privacyguides/privacyguides.org/issues/new/choose">contact us</a>!</p>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
98
CITATION.cff
Normal file
98
CITATION.cff
Normal file
@ -0,0 +1,98 @@
|
|||||||
|
# Copyright (c) 2022-2024 Jonah Aragon <jonah@triplebit.net>
|
||||||
|
|
||||||
|
# Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
|
# of this software and associated documentation files (the "Software"), to
|
||||||
|
# deal in the Software without restriction, including without limitation the
|
||||||
|
# rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
|
||||||
|
# sell copies of the Software, and to permit persons to whom the Software is
|
||||||
|
# furnished to do so, subject to the following conditions:
|
||||||
|
|
||||||
|
# The above copyright notice and this permission notice shall be included in
|
||||||
|
# all copies or substantial portions of the Software.
|
||||||
|
|
||||||
|
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
# FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE
|
||||||
|
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
|
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||||
|
# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
|
||||||
|
# IN THE SOFTWARE.
|
||||||
|
|
||||||
|
cff-version: 1.2.0
|
||||||
|
title: Privacy Guides
|
||||||
|
message: "If you reference this website, please cite it in your work."
|
||||||
|
type: software
|
||||||
|
authors:
|
||||||
|
- family-names: Aragon
|
||||||
|
given-names: Jonah
|
||||||
|
website: "https://www.jonaharagon.com"
|
||||||
|
orcid: "https://orcid.org/0000-0001-6996-4965"
|
||||||
|
- name: The Privacy Guides Team
|
||||||
|
website: "https://github.com/orgs/privacyguides/people"
|
||||||
|
repository-code: "https://github.com/privacyguides/privacyguides.org"
|
||||||
|
license:
|
||||||
|
- MIT
|
||||||
|
- CC-BY-SA-4.0
|
||||||
|
references:
|
||||||
|
- authors:
|
||||||
|
- family-names: Donath
|
||||||
|
given-names: Martin
|
||||||
|
title: "mkdocs-material"
|
||||||
|
type: software
|
||||||
|
repository-code: "https://github.com/squidfunk/mkdocs-material"
|
||||||
|
license: MIT
|
||||||
|
preferred-citation:
|
||||||
|
type: website
|
||||||
|
title: Privacy Guides
|
||||||
|
authors:
|
||||||
|
- family-names: Aragon
|
||||||
|
given-names: Jonah
|
||||||
|
website: "https://www.jonaharagon.com"
|
||||||
|
orcid: "https://orcid.org/0000-0001-6996-4965"
|
||||||
|
- family-names: Gray
|
||||||
|
given-names: Daniel
|
||||||
|
alias: dngray
|
||||||
|
website: "https://polarbear.army"
|
||||||
|
- family-names: Wilde
|
||||||
|
given-names: Niek
|
||||||
|
name-particle: de
|
||||||
|
alias: blacklight447
|
||||||
|
- given-names: Freddy
|
||||||
|
website: "https://freddy.lol"
|
||||||
|
- alias: mfwmyfacewhen
|
||||||
|
website: "https://github.com/mfwmyfacewhen"
|
||||||
|
- given-names: Olivia
|
||||||
|
alias: hook
|
||||||
|
- alias: nitrohorse
|
||||||
|
website: "https://nitrohorse.com"
|
||||||
|
- family-names: Suomalainen
|
||||||
|
given-names: Aminda
|
||||||
|
alias: Mikaela
|
||||||
|
website: "https://aminda.eu"
|
||||||
|
- family-names: Potocki
|
||||||
|
given-names: Dawid
|
||||||
|
website: "https://dawidpotocki.com"
|
||||||
|
- alias: matchboxbananasynergy
|
||||||
|
website: "https://banana.omg.lol"
|
||||||
|
- family-names: Tran
|
||||||
|
given-names: Thien
|
||||||
|
alias: Tommy
|
||||||
|
website: "https://tommytran.io"
|
||||||
|
- alias: samsepi0l
|
||||||
|
website: "https://github.com/d4rklynk"
|
||||||
|
- name: Privacy Guides Contributors
|
||||||
|
website: "https://www.privacyguides.org/en/about/contributors/"
|
||||||
|
url: "https://www.privacyguides.org"
|
||||||
|
abstract: >-
|
||||||
|
Privacy Guides is a socially motivated website that
|
||||||
|
provides information for protecting your data
|
||||||
|
security and privacy. We are a non-profit
|
||||||
|
collective operated entirely by volunteer team
|
||||||
|
members and contributors.
|
||||||
|
keywords:
|
||||||
|
- privacy
|
||||||
|
- surveillance
|
||||||
|
- encryption
|
||||||
|
- website
|
||||||
|
- markdown
|
||||||
|
license: CC-BY-SA-4.0
|
72
Dockerfile
Normal file
72
Dockerfile
Normal file
@ -0,0 +1,72 @@
|
|||||||
|
FROM python:3.12-alpine as base
|
||||||
|
|
||||||
|
LABEL org.opencontainers.image.source="https://github.com/privacyguides/privacyguides.org"
|
||||||
|
|
||||||
|
# Setup env
|
||||||
|
ENV LANG C.UTF-8
|
||||||
|
ENV LC_ALL C.UTF-8
|
||||||
|
ENV PYTHONDONTWRITEBYTECODE 1
|
||||||
|
ENV PYTHONFAULTHANDLER 1
|
||||||
|
|
||||||
|
FROM base AS python-deps
|
||||||
|
|
||||||
|
# Install pipenv and compilation dependencies
|
||||||
|
RUN pip install pipenv
|
||||||
|
RUN \
|
||||||
|
apk upgrade --update-cache -a \
|
||||||
|
&& \
|
||||||
|
apk add --no-cache \
|
||||||
|
gcc \
|
||||||
|
libffi-dev \
|
||||||
|
musl-dev
|
||||||
|
|
||||||
|
# Install python dependencies in /.venv
|
||||||
|
COPY modules/mkdocs-material ./modules/mkdocs-material
|
||||||
|
COPY Pipfile .
|
||||||
|
COPY Pipfile.lock .
|
||||||
|
RUN PIPENV_VENV_IN_PROJECT=1 pipenv install --deploy
|
||||||
|
|
||||||
|
FROM base AS runtime
|
||||||
|
|
||||||
|
# Install runtime dependencies
|
||||||
|
RUN \
|
||||||
|
apk upgrade --update-cache -a \
|
||||||
|
&& \
|
||||||
|
apk add --no-cache \
|
||||||
|
cairo \
|
||||||
|
freetype-dev \
|
||||||
|
git \
|
||||||
|
git-fast-import \
|
||||||
|
jpeg-dev \
|
||||||
|
openssh \
|
||||||
|
pngquant \
|
||||||
|
tini \
|
||||||
|
zlib-dev \
|
||||||
|
libffi-dev \
|
||||||
|
musl-dev \
|
||||||
|
bash
|
||||||
|
|
||||||
|
# Copy virtual env from python-deps stage
|
||||||
|
COPY --from=python-deps /.venv /.venv
|
||||||
|
COPY --from=python-deps /modules/mkdocs-material /modules/mkdocs-material
|
||||||
|
ENV PATH="/.venv/bin:$PATH"
|
||||||
|
|
||||||
|
# Create and switch to a new user
|
||||||
|
RUN mkdir /site
|
||||||
|
WORKDIR /site
|
||||||
|
|
||||||
|
COPY docs docs
|
||||||
|
COPY theme theme
|
||||||
|
COPY includes includes
|
||||||
|
COPY *.yml .
|
||||||
|
COPY .cache/plugin/social/fonts .cache/plugin/social/fonts
|
||||||
|
COPY run.sh .
|
||||||
|
|
||||||
|
EXPOSE 8000
|
||||||
|
|
||||||
|
ENV MKDOCS_INHERIT mkdocs-production.yml
|
||||||
|
|
||||||
|
HEALTHCHECK NONE
|
||||||
|
|
||||||
|
ENTRYPOINT ["./run.sh"]
|
||||||
|
CMD ["--cmd=mkdocs", "--insiders", "--cmd_flags=--dev-addr=0.0.0.0:8000"]
|
20
Gemfile
20
Gemfile
@ -1,20 +0,0 @@
|
|||||||
source "https://rubygems.org"
|
|
||||||
|
|
||||||
gem "jekyll", "~> 4.2"
|
|
||||||
|
|
||||||
group :jekyll_plugins do
|
|
||||||
gem "jekyll-feed", "~> 0.16"
|
|
||||||
gem "jekyll-brotli", "~> 2.3"
|
|
||||||
gem "jekyll-sitemap", "~> 1.4"
|
|
||||||
end
|
|
||||||
|
|
||||||
# Jekyll 3.9.0 now requires this explicitly installed, apparently
|
|
||||||
gem "kramdown-parser-gfm", "~> 1.1"
|
|
||||||
gem "webrick", "~> 1.7"
|
|
||||||
gem 'eventmachine', '1.3.0.dev.1', git: 'https://github.com/eventmachine/eventmachine', branch: 'master'
|
|
||||||
|
|
||||||
# Windows does not include zoneinfo files, so bundle the tzinfo-data gem
|
|
||||||
gem "tzinfo-data", platforms: [:mingw, :mswin, :x64_mingw, :jruby]
|
|
||||||
|
|
||||||
# Performance-booster for watching directories on Windows
|
|
||||||
gem "wdm", "~> 0.1.0" if Gem.win_platform?
|
|
89
Gemfile.lock
89
Gemfile.lock
@ -1,89 +0,0 @@
|
|||||||
GIT
|
|
||||||
remote: https://github.com/eventmachine/eventmachine
|
|
||||||
revision: df4ab0068e5e9f504096584093a74510d0dac6c8
|
|
||||||
branch: master
|
|
||||||
specs:
|
|
||||||
eventmachine (1.3.0.dev.1)
|
|
||||||
|
|
||||||
GEM
|
|
||||||
remote: https://rubygems.org/
|
|
||||||
specs:
|
|
||||||
addressable (2.8.0)
|
|
||||||
public_suffix (>= 2.0.2, < 5.0)
|
|
||||||
brotli (0.2.3)
|
|
||||||
colorator (1.1.0)
|
|
||||||
concurrent-ruby (1.1.9)
|
|
||||||
em-websocket (0.5.3)
|
|
||||||
eventmachine (>= 0.12.9)
|
|
||||||
http_parser.rb (~> 0)
|
|
||||||
ffi (1.15.5)
|
|
||||||
forwardable-extended (2.6.0)
|
|
||||||
http_parser.rb (0.8.0)
|
|
||||||
i18n (1.10.0)
|
|
||||||
concurrent-ruby (~> 1.0)
|
|
||||||
jekyll (4.2.2)
|
|
||||||
addressable (~> 2.4)
|
|
||||||
colorator (~> 1.0)
|
|
||||||
em-websocket (~> 0.5)
|
|
||||||
i18n (~> 1.0)
|
|
||||||
jekyll-sass-converter (~> 2.0)
|
|
||||||
jekyll-watch (~> 2.0)
|
|
||||||
kramdown (~> 2.3)
|
|
||||||
kramdown-parser-gfm (~> 1.0)
|
|
||||||
liquid (~> 4.0)
|
|
||||||
mercenary (~> 0.4.0)
|
|
||||||
pathutil (~> 0.9)
|
|
||||||
rouge (~> 3.0)
|
|
||||||
safe_yaml (~> 1.0)
|
|
||||||
terminal-table (~> 2.0)
|
|
||||||
jekyll-brotli (2.3.0)
|
|
||||||
brotli (~> 0.2.0)
|
|
||||||
jekyll (>= 3.0, < 5.0)
|
|
||||||
jekyll-feed (0.16.0)
|
|
||||||
jekyll (>= 3.7, < 5.0)
|
|
||||||
jekyll-sass-converter (2.2.0)
|
|
||||||
sassc (> 2.0.1, < 3.0)
|
|
||||||
jekyll-sitemap (1.4.0)
|
|
||||||
jekyll (>= 3.7, < 5.0)
|
|
||||||
jekyll-watch (2.2.1)
|
|
||||||
listen (~> 3.0)
|
|
||||||
kramdown (2.3.1)
|
|
||||||
rexml
|
|
||||||
kramdown-parser-gfm (1.1.0)
|
|
||||||
kramdown (~> 2.0)
|
|
||||||
liquid (4.0.3)
|
|
||||||
listen (3.7.1)
|
|
||||||
rb-fsevent (~> 0.10, >= 0.10.3)
|
|
||||||
rb-inotify (~> 0.9, >= 0.9.10)
|
|
||||||
mercenary (0.4.0)
|
|
||||||
pathutil (0.16.2)
|
|
||||||
forwardable-extended (~> 2.6)
|
|
||||||
public_suffix (4.0.6)
|
|
||||||
rb-fsevent (0.11.1)
|
|
||||||
rb-inotify (0.10.1)
|
|
||||||
ffi (~> 1.0)
|
|
||||||
rexml (3.2.5)
|
|
||||||
rouge (3.28.0)
|
|
||||||
safe_yaml (1.0.5)
|
|
||||||
sassc (2.4.0)
|
|
||||||
ffi (~> 1.9)
|
|
||||||
terminal-table (2.0.0)
|
|
||||||
unicode-display_width (~> 1.1, >= 1.1.1)
|
|
||||||
unicode-display_width (1.8.0)
|
|
||||||
webrick (1.7.0)
|
|
||||||
|
|
||||||
PLATFORMS
|
|
||||||
ruby
|
|
||||||
|
|
||||||
DEPENDENCIES
|
|
||||||
eventmachine (= 1.3.0.dev.1)!
|
|
||||||
jekyll (~> 4.2)
|
|
||||||
jekyll-brotli (~> 2.3)
|
|
||||||
jekyll-feed (~> 0.16)
|
|
||||||
jekyll-sitemap (~> 1.4)
|
|
||||||
kramdown-parser-gfm (~> 1.1)
|
|
||||||
tzinfo-data
|
|
||||||
webrick (~> 1.7)
|
|
||||||
|
|
||||||
BUNDLED WITH
|
|
||||||
2.2.5
|
|
503
LICENSE
503
LICENSE
@ -1,116 +1,427 @@
|
|||||||
CC0 1.0 Universal
|
Attribution-ShareAlike 4.0 International
|
||||||
|
|
||||||
Statement of Purpose
|
=======================================================================
|
||||||
|
|
||||||
The laws of most jurisdictions throughout the world automatically confer
|
Creative Commons Corporation ("Creative Commons") is not a law firm and
|
||||||
exclusive Copyright and Related Rights (defined below) upon the creator and
|
does not provide legal services or legal advice. Distribution of
|
||||||
subsequent owner(s) (each and all, an "owner") of an original work of
|
Creative Commons public licenses does not create a lawyer-client or
|
||||||
authorship and/or a database (each, a "Work").
|
other relationship. Creative Commons makes its licenses and related
|
||||||
|
information available on an "as-is" basis. Creative Commons gives no
|
||||||
|
warranties regarding its licenses, any material licensed under their
|
||||||
|
terms and conditions, or any related information. Creative Commons
|
||||||
|
disclaims all liability for damages resulting from their use to the
|
||||||
|
fullest extent possible.
|
||||||
|
|
||||||
Certain owners wish to permanently relinquish those rights to a Work for the
|
Using Creative Commons Public Licenses
|
||||||
purpose of contributing to a commons of creative, cultural and scientific
|
|
||||||
works ("Commons") that the public can reliably and without fear of later
|
|
||||||
claims of infringement build upon, modify, incorporate in other works, reuse
|
|
||||||
and redistribute as freely as possible in any form whatsoever and for any
|
|
||||||
purposes, including without limitation commercial purposes. These owners may
|
|
||||||
contribute to the Commons to promote the ideal of a free culture and the
|
|
||||||
further production of creative, cultural and scientific works, or to gain
|
|
||||||
reputation or greater distribution for their Work in part through the use and
|
|
||||||
efforts of others.
|
|
||||||
|
|
||||||
For these and/or other purposes and motivations, and without any expectation
|
Creative Commons public licenses provide a standard set of terms and
|
||||||
of additional consideration or compensation, the person associating CC0 with a
|
conditions that creators and other rights holders may use to share
|
||||||
Work (the "Affirmer"), to the extent that he or she is an owner of Copyright
|
original works of authorship and other material subject to copyright
|
||||||
and Related Rights in the Work, voluntarily elects to apply CC0 to the Work
|
and certain other rights specified in the public license below. The
|
||||||
and publicly distribute the Work under its terms, with knowledge of his or her
|
following considerations are for informational purposes only, are not
|
||||||
Copyright and Related Rights in the Work and the meaning and intended legal
|
exhaustive, and do not form part of our licenses.
|
||||||
effect of CC0 on those rights.
|
|
||||||
|
|
||||||
1. Copyright and Related Rights. A Work made available under CC0 may be
|
Considerations for licensors: Our public licenses are
|
||||||
protected by copyright and related or neighboring rights ("Copyright and
|
intended for use by those authorized to give the public
|
||||||
Related Rights"). Copyright and Related Rights include, but are not limited
|
permission to use material in ways otherwise restricted by
|
||||||
to, the following:
|
copyright and certain other rights. Our licenses are
|
||||||
|
irrevocable. Licensors should read and understand the terms
|
||||||
|
and conditions of the license they choose before applying it.
|
||||||
|
Licensors should also secure all rights necessary before
|
||||||
|
applying our licenses so that the public can reuse the
|
||||||
|
material as expected. Licensors should clearly mark any
|
||||||
|
material not subject to the license. This includes other CC-
|
||||||
|
licensed material, or material used under an exception or
|
||||||
|
limitation to copyright. More considerations for licensors:
|
||||||
|
wiki.creativecommons.org/Considerations_for_licensors
|
||||||
|
|
||||||
i. the right to reproduce, adapt, distribute, perform, display, communicate,
|
Considerations for the public: By using one of our public
|
||||||
and translate a Work;
|
licenses, a licensor grants the public permission to use the
|
||||||
|
licensed material under specified terms and conditions. If
|
||||||
|
the licensor's permission is not necessary for any reason--for
|
||||||
|
example, because of any applicable exception or limitation to
|
||||||
|
copyright--then that use is not regulated by the license. Our
|
||||||
|
licenses grant only permissions under copyright and certain
|
||||||
|
other rights that a licensor has authority to grant. Use of
|
||||||
|
the licensed material may still be restricted for other
|
||||||
|
reasons, including because others have copyright or other
|
||||||
|
rights in the material. A licensor may make special requests,
|
||||||
|
such as asking that all changes be marked or described.
|
||||||
|
Although not required by our licenses, you are encouraged to
|
||||||
|
respect those requests where reasonable. More considerations
|
||||||
|
for the public:
|
||||||
|
wiki.creativecommons.org/Considerations_for_licensees
|
||||||
|
|
||||||
ii. moral rights retained by the original author(s) and/or performer(s);
|
=======================================================================
|
||||||
|
|
||||||
iii. publicity and privacy rights pertaining to a person's image or likeness
|
Creative Commons Attribution-ShareAlike 4.0 International Public
|
||||||
depicted in a Work;
|
License
|
||||||
|
|
||||||
iv. rights protecting against unfair competition in regards to a Work,
|
By exercising the Licensed Rights (defined below), You accept and agree
|
||||||
subject to the limitations in paragraph 4(a), below;
|
to be bound by the terms and conditions of this Creative Commons
|
||||||
|
Attribution-ShareAlike 4.0 International Public License ("Public
|
||||||
|
License"). To the extent this Public License may be interpreted as a
|
||||||
|
contract, You are granted the Licensed Rights in consideration of Your
|
||||||
|
acceptance of these terms and conditions, and the Licensor grants You
|
||||||
|
such rights in consideration of benefits the Licensor receives from
|
||||||
|
making the Licensed Material available under these terms and
|
||||||
|
conditions.
|
||||||
|
|
||||||
v. rights protecting the extraction, dissemination, use and reuse of data in
|
|
||||||
a Work;
|
|
||||||
|
|
||||||
vi. database rights (such as those arising under Directive 96/9/EC of the
|
Section 1 -- Definitions.
|
||||||
European Parliament and of the Council of 11 March 1996 on the legal
|
|
||||||
protection of databases, and under any national implementation thereof,
|
|
||||||
including any amended or successor version of such directive); and
|
|
||||||
|
|
||||||
vii. other similar, equivalent or corresponding rights throughout the world
|
a. Adapted Material means material subject to Copyright and Similar
|
||||||
based on applicable law or treaty, and any national implementations thereof.
|
Rights that is derived from or based upon the Licensed Material
|
||||||
|
and in which the Licensed Material is translated, altered,
|
||||||
|
arranged, transformed, or otherwise modified in a manner requiring
|
||||||
|
permission under the Copyright and Similar Rights held by the
|
||||||
|
Licensor. For purposes of this Public License, where the Licensed
|
||||||
|
Material is a musical work, performance, or sound recording,
|
||||||
|
Adapted Material is always produced where the Licensed Material is
|
||||||
|
synched in timed relation with a moving image.
|
||||||
|
|
||||||
2. Waiver. To the greatest extent permitted by, but not in contravention of,
|
b. Adapter's License means the license You apply to Your Copyright
|
||||||
applicable law, Affirmer hereby overtly, fully, permanently, irrevocably and
|
and Similar Rights in Your contributions to Adapted Material in
|
||||||
unconditionally waives, abandons, and surrenders all of Affirmer's Copyright
|
accordance with the terms and conditions of this Public License.
|
||||||
and Related Rights and associated claims and causes of action, whether now
|
|
||||||
known or unknown (including existing as well as future claims and causes of
|
|
||||||
action), in the Work (i) in all territories worldwide, (ii) for the maximum
|
|
||||||
duration provided by applicable law or treaty (including future time
|
|
||||||
extensions), (iii) in any current or future medium and for any number of
|
|
||||||
copies, and (iv) for any purpose whatsoever, including without limitation
|
|
||||||
commercial, advertising or promotional purposes (the "Waiver"). Affirmer makes
|
|
||||||
the Waiver for the benefit of each member of the public at large and to the
|
|
||||||
detriment of Affirmer's heirs and successors, fully intending that such Waiver
|
|
||||||
shall not be subject to revocation, rescission, cancellation, termination, or
|
|
||||||
any other legal or equitable action to disrupt the quiet enjoyment of the Work
|
|
||||||
by the public as contemplated by Affirmer's express Statement of Purpose.
|
|
||||||
|
|
||||||
3. Public License Fallback. Should any part of the Waiver for any reason be
|
c. BY-SA Compatible License means a license listed at
|
||||||
judged legally invalid or ineffective under applicable law, then the Waiver
|
creativecommons.org/compatiblelicenses, approved by Creative
|
||||||
shall be preserved to the maximum extent permitted taking into account
|
Commons as essentially the equivalent of this Public License.
|
||||||
Affirmer's express Statement of Purpose. In addition, to the extent the Waiver
|
|
||||||
is so judged Affirmer hereby grants to each affected person a royalty-free,
|
|
||||||
non transferable, non sublicensable, non exclusive, irrevocable and
|
|
||||||
unconditional license to exercise Affirmer's Copyright and Related Rights in
|
|
||||||
the Work (i) in all territories worldwide, (ii) for the maximum duration
|
|
||||||
provided by applicable law or treaty (including future time extensions), (iii)
|
|
||||||
in any current or future medium and for any number of copies, and (iv) for any
|
|
||||||
purpose whatsoever, including without limitation commercial, advertising or
|
|
||||||
promotional purposes (the "License"). The License shall be deemed effective as
|
|
||||||
of the date CC0 was applied by Affirmer to the Work. Should any part of the
|
|
||||||
License for any reason be judged legally invalid or ineffective under
|
|
||||||
applicable law, such partial invalidity or ineffectiveness shall not
|
|
||||||
invalidate the remainder of the License, and in such case Affirmer hereby
|
|
||||||
affirms that he or she will not (i) exercise any of his or her remaining
|
|
||||||
Copyright and Related Rights in the Work or (ii) assert any associated claims
|
|
||||||
and causes of action with respect to the Work, in either case contrary to
|
|
||||||
Affirmer's express Statement of Purpose.
|
|
||||||
|
|
||||||
4. Limitations and Disclaimers.
|
d. Copyright and Similar Rights means copyright and/or similar rights
|
||||||
|
closely related to copyright including, without limitation,
|
||||||
|
performance, broadcast, sound recording, and Sui Generis Database
|
||||||
|
Rights, without regard to how the rights are labeled or
|
||||||
|
categorized. For purposes of this Public License, the rights
|
||||||
|
specified in Section 2(b)(1)-(2) are not Copyright and Similar
|
||||||
|
Rights.
|
||||||
|
|
||||||
a. No trademark or patent rights held by Affirmer are waived, abandoned,
|
e. Effective Technological Measures means those measures that, in the
|
||||||
surrendered, licensed or otherwise affected by this document.
|
absence of proper authority, may not be circumvented under laws
|
||||||
|
fulfilling obligations under Article 11 of the WIPO Copyright
|
||||||
|
Treaty adopted on December 20, 1996, and/or similar international
|
||||||
|
agreements.
|
||||||
|
|
||||||
b. Affirmer offers the Work as-is and makes no representations or warranties
|
f. Exceptions and Limitations means fair use, fair dealing, and/or
|
||||||
of any kind concerning the Work, express, implied, statutory or otherwise,
|
any other exception or limitation to Copyright and Similar Rights
|
||||||
including without limitation warranties of title, merchantability, fitness
|
that applies to Your use of the Licensed Material.
|
||||||
for a particular purpose, non infringement, or the absence of latent or
|
|
||||||
other defects, accuracy, or the present or absence of errors, whether or not
|
|
||||||
discoverable, all to the greatest extent permissible under applicable law.
|
|
||||||
|
|
||||||
c. Affirmer disclaims responsibility for clearing rights of other persons
|
g. License Elements means the license attributes listed in the name
|
||||||
that may apply to the Work or any use thereof, including without limitation
|
of a Creative Commons Public License. The License Elements of this
|
||||||
any person's Copyright and Related Rights in the Work. Further, Affirmer
|
Public License are Attribution and ShareAlike.
|
||||||
disclaims responsibility for obtaining any necessary consents, permissions
|
|
||||||
or other rights required for any use of the Work.
|
|
||||||
|
|
||||||
d. Affirmer understands and acknowledges that Creative Commons is not a
|
h. Licensed Material means the artistic or literary work, database,
|
||||||
party to this document and has no duty or obligation with respect to this
|
or other material to which the Licensor applied this Public
|
||||||
CC0 or use of the Work.
|
License.
|
||||||
|
|
||||||
For more information, please see
|
i. Licensed Rights means the rights granted to You subject to the
|
||||||
<http://creativecommons.org/publicdomain/zero/1.0/>
|
terms and conditions of this Public License, which are limited to
|
||||||
|
all Copyright and Similar Rights that apply to Your use of the
|
||||||
|
Licensed Material and that the Licensor has authority to license.
|
||||||
|
|
||||||
|
j. Licensor means the individual(s) or entity(ies) granting rights
|
||||||
|
under this Public License.
|
||||||
|
|
||||||
|
k. Share means to provide material to the public by any means or
|
||||||
|
process that requires permission under the Licensed Rights, such
|
||||||
|
as reproduction, public display, public performance, distribution,
|
||||||
|
dissemination, communication, or importation, and to make material
|
||||||
|
available to the public including in ways that members of the
|
||||||
|
public may access the material from a place and at a time
|
||||||
|
individually chosen by them.
|
||||||
|
|
||||||
|
l. Sui Generis Database Rights means rights other than copyright
|
||||||
|
resulting from Directive 96/9/EC of the European Parliament and of
|
||||||
|
the Council of 11 March 1996 on the legal protection of databases,
|
||||||
|
as amended and/or succeeded, as well as other essentially
|
||||||
|
equivalent rights anywhere in the world.
|
||||||
|
|
||||||
|
m. You means the individual or entity exercising the Licensed Rights
|
||||||
|
under this Public License. Your has a corresponding meaning.
|
||||||
|
|
||||||
|
|
||||||
|
Section 2 -- Scope.
|
||||||
|
|
||||||
|
a. License grant.
|
||||||
|
|
||||||
|
1. Subject to the terms and conditions of this Public License,
|
||||||
|
the Licensor hereby grants You a worldwide, royalty-free,
|
||||||
|
non-sublicensable, non-exclusive, irrevocable license to
|
||||||
|
exercise the Licensed Rights in the Licensed Material to:
|
||||||
|
|
||||||
|
a. reproduce and Share the Licensed Material, in whole or
|
||||||
|
in part; and
|
||||||
|
|
||||||
|
b. produce, reproduce, and Share Adapted Material.
|
||||||
|
|
||||||
|
2. Exceptions and Limitations. For the avoidance of doubt, where
|
||||||
|
Exceptions and Limitations apply to Your use, this Public
|
||||||
|
License does not apply, and You do not need to comply with
|
||||||
|
its terms and conditions.
|
||||||
|
|
||||||
|
3. Term. The term of this Public License is specified in Section
|
||||||
|
6(a).
|
||||||
|
|
||||||
|
4. Media and formats; technical modifications allowed. The
|
||||||
|
Licensor authorizes You to exercise the Licensed Rights in
|
||||||
|
all media and formats whether now known or hereafter created,
|
||||||
|
and to make technical modifications necessary to do so. The
|
||||||
|
Licensor waives and/or agrees not to assert any right or
|
||||||
|
authority to forbid You from making technical modifications
|
||||||
|
necessary to exercise the Licensed Rights, including
|
||||||
|
technical modifications necessary to circumvent Effective
|
||||||
|
Technological Measures. For purposes of this Public License,
|
||||||
|
simply making modifications authorized by this Section 2(a)
|
||||||
|
(4) never produces Adapted Material.
|
||||||
|
|
||||||
|
5. Downstream recipients.
|
||||||
|
|
||||||
|
a. Offer from the Licensor -- Licensed Material. Every
|
||||||
|
recipient of the Licensed Material automatically
|
||||||
|
receives an offer from the Licensor to exercise the
|
||||||
|
Licensed Rights under the terms and conditions of this
|
||||||
|
Public License.
|
||||||
|
|
||||||
|
b. Additional offer from the Licensor -- Adapted Material.
|
||||||
|
Every recipient of Adapted Material from You
|
||||||
|
automatically receives an offer from the Licensor to
|
||||||
|
exercise the Licensed Rights in the Adapted Material
|
||||||
|
under the conditions of the Adapter's License You apply.
|
||||||
|
|
||||||
|
c. No downstream restrictions. You may not offer or impose
|
||||||
|
any additional or different terms or conditions on, or
|
||||||
|
apply any Effective Technological Measures to, the
|
||||||
|
Licensed Material if doing so restricts exercise of the
|
||||||
|
Licensed Rights by any recipient of the Licensed
|
||||||
|
Material.
|
||||||
|
|
||||||
|
6. No endorsement. Nothing in this Public License constitutes or
|
||||||
|
may be construed as permission to assert or imply that You
|
||||||
|
are, or that Your use of the Licensed Material is, connected
|
||||||
|
with, or sponsored, endorsed, or granted official status by,
|
||||||
|
the Licensor or others designated to receive attribution as
|
||||||
|
provided in Section 3(a)(1)(A)(i).
|
||||||
|
|
||||||
|
b. Other rights.
|
||||||
|
|
||||||
|
1. Moral rights, such as the right of integrity, are not
|
||||||
|
licensed under this Public License, nor are publicity,
|
||||||
|
privacy, and/or other similar personality rights; however, to
|
||||||
|
the extent possible, the Licensor waives and/or agrees not to
|
||||||
|
assert any such rights held by the Licensor to the limited
|
||||||
|
extent necessary to allow You to exercise the Licensed
|
||||||
|
Rights, but not otherwise.
|
||||||
|
|
||||||
|
2. Patent and trademark rights are not licensed under this
|
||||||
|
Public License.
|
||||||
|
|
||||||
|
3. To the extent possible, the Licensor waives any right to
|
||||||
|
collect royalties from You for the exercise of the Licensed
|
||||||
|
Rights, whether directly or through a collecting society
|
||||||
|
under any voluntary or waivable statutory or compulsory
|
||||||
|
licensing scheme. In all other cases the Licensor expressly
|
||||||
|
reserves any right to collect such royalties.
|
||||||
|
|
||||||
|
|
||||||
|
Section 3 -- License Conditions.
|
||||||
|
|
||||||
|
Your exercise of the Licensed Rights is expressly made subject to the
|
||||||
|
following conditions.
|
||||||
|
|
||||||
|
a. Attribution.
|
||||||
|
|
||||||
|
1. If You Share the Licensed Material (including in modified
|
||||||
|
form), You must:
|
||||||
|
|
||||||
|
a. retain the following if it is supplied by the Licensor
|
||||||
|
with the Licensed Material:
|
||||||
|
|
||||||
|
i. identification of the creator(s) of the Licensed
|
||||||
|
Material and any others designated to receive
|
||||||
|
attribution, in any reasonable manner requested by
|
||||||
|
the Licensor (including by pseudonym if
|
||||||
|
designated);
|
||||||
|
|
||||||
|
ii. a copyright notice;
|
||||||
|
|
||||||
|
iii. a notice that refers to this Public License;
|
||||||
|
|
||||||
|
iv. a notice that refers to the disclaimer of
|
||||||
|
warranties;
|
||||||
|
|
||||||
|
v. a URI or hyperlink to the Licensed Material to the
|
||||||
|
extent reasonably practicable;
|
||||||
|
|
||||||
|
b. indicate if You modified the Licensed Material and
|
||||||
|
retain an indication of any previous modifications; and
|
||||||
|
|
||||||
|
c. indicate the Licensed Material is licensed under this
|
||||||
|
Public License, and include the text of, or the URI or
|
||||||
|
hyperlink to, this Public License.
|
||||||
|
|
||||||
|
2. You may satisfy the conditions in Section 3(a)(1) in any
|
||||||
|
reasonable manner based on the medium, means, and context in
|
||||||
|
which You Share the Licensed Material. For example, it may be
|
||||||
|
reasonable to satisfy the conditions by providing a URI or
|
||||||
|
hyperlink to a resource that includes the required
|
||||||
|
information.
|
||||||
|
|
||||||
|
3. If requested by the Licensor, You must remove any of the
|
||||||
|
information required by Section 3(a)(1)(A) to the extent
|
||||||
|
reasonably practicable.
|
||||||
|
|
||||||
|
b. ShareAlike.
|
||||||
|
|
||||||
|
In addition to the conditions in Section 3(a), if You Share
|
||||||
|
Adapted Material You produce, the following conditions also apply.
|
||||||
|
|
||||||
|
1. The Adapter's License You apply must be a Creative Commons
|
||||||
|
license with the same License Elements, this version or
|
||||||
|
later, or a BY-SA Compatible License.
|
||||||
|
|
||||||
|
2. You must include the text of, or the URI or hyperlink to, the
|
||||||
|
Adapter's License You apply. You may satisfy this condition
|
||||||
|
in any reasonable manner based on the medium, means, and
|
||||||
|
context in which You Share Adapted Material.
|
||||||
|
|
||||||
|
3. You may not offer or impose any additional or different terms
|
||||||
|
or conditions on, or apply any Effective Technological
|
||||||
|
Measures to, Adapted Material that restrict exercise of the
|
||||||
|
rights granted under the Adapter's License You apply.
|
||||||
|
|
||||||
|
|
||||||
|
Section 4 -- Sui Generis Database Rights.
|
||||||
|
|
||||||
|
Where the Licensed Rights include Sui Generis Database Rights that
|
||||||
|
apply to Your use of the Licensed Material:
|
||||||
|
|
||||||
|
a. for the avoidance of doubt, Section 2(a)(1) grants You the right
|
||||||
|
to extract, reuse, reproduce, and Share all or a substantial
|
||||||
|
portion of the contents of the database;
|
||||||
|
|
||||||
|
b. if You include all or a substantial portion of the database
|
||||||
|
contents in a database in which You have Sui Generis Database
|
||||||
|
Rights, then the database in which You have Sui Generis Database
|
||||||
|
Rights (but not its individual contents) is Adapted Material,
|
||||||
|
including for purposes of Section 3(b); and
|
||||||
|
|
||||||
|
c. You must comply with the conditions in Section 3(a) if You Share
|
||||||
|
all or a substantial portion of the contents of the database.
|
||||||
|
|
||||||
|
For the avoidance of doubt, this Section 4 supplements and does not
|
||||||
|
replace Your obligations under this Public License where the Licensed
|
||||||
|
Rights include other Copyright and Similar Rights.
|
||||||
|
|
||||||
|
|
||||||
|
Section 5 -- Disclaimer of Warranties and Limitation of Liability.
|
||||||
|
|
||||||
|
a. UNLESS OTHERWISE SEPARATELY UNDERTAKEN BY THE LICENSOR, TO THE
|
||||||
|
EXTENT POSSIBLE, THE LICENSOR OFFERS THE LICENSED MATERIAL AS-IS
|
||||||
|
AND AS-AVAILABLE, AND MAKES NO REPRESENTATIONS OR WARRANTIES OF
|
||||||
|
ANY KIND CONCERNING THE LICENSED MATERIAL, WHETHER EXPRESS,
|
||||||
|
IMPLIED, STATUTORY, OR OTHER. THIS INCLUDES, WITHOUT LIMITATION,
|
||||||
|
WARRANTIES OF TITLE, MERCHANTABILITY, FITNESS FOR A PARTICULAR
|
||||||
|
PURPOSE, NON-INFRINGEMENT, ABSENCE OF LATENT OR OTHER DEFECTS,
|
||||||
|
ACCURACY, OR THE PRESENCE OR ABSENCE OF ERRORS, WHETHER OR NOT
|
||||||
|
KNOWN OR DISCOVERABLE. WHERE DISCLAIMERS OF WARRANTIES ARE NOT
|
||||||
|
ALLOWED IN FULL OR IN PART, THIS DISCLAIMER MAY NOT APPLY TO YOU.
|
||||||
|
|
||||||
|
b. TO THE EXTENT POSSIBLE, IN NO EVENT WILL THE LICENSOR BE LIABLE
|
||||||
|
TO YOU ON ANY LEGAL THEORY (INCLUDING, WITHOUT LIMITATION,
|
||||||
|
NEGLIGENCE) OR OTHERWISE FOR ANY DIRECT, SPECIAL, INDIRECT,
|
||||||
|
INCIDENTAL, CONSEQUENTIAL, PUNITIVE, EXEMPLARY, OR OTHER LOSSES,
|
||||||
|
COSTS, EXPENSES, OR DAMAGES ARISING OUT OF THIS PUBLIC LICENSE OR
|
||||||
|
USE OF THE LICENSED MATERIAL, EVEN IF THE LICENSOR HAS BEEN
|
||||||
|
ADVISED OF THE POSSIBILITY OF SUCH LOSSES, COSTS, EXPENSES, OR
|
||||||
|
DAMAGES. WHERE A LIMITATION OF LIABILITY IS NOT ALLOWED IN FULL OR
|
||||||
|
IN PART, THIS LIMITATION MAY NOT APPLY TO YOU.
|
||||||
|
|
||||||
|
c. The disclaimer of warranties and limitation of liability provided
|
||||||
|
above shall be interpreted in a manner that, to the extent
|
||||||
|
possible, most closely approximates an absolute disclaimer and
|
||||||
|
waiver of all liability.
|
||||||
|
|
||||||
|
|
||||||
|
Section 6 -- Term and Termination.
|
||||||
|
|
||||||
|
a. This Public License applies for the term of the Copyright and
|
||||||
|
Similar Rights licensed here. However, if You fail to comply with
|
||||||
|
this Public License, then Your rights under this Public License
|
||||||
|
terminate automatically.
|
||||||
|
|
||||||
|
b. Where Your right to use the Licensed Material has terminated under
|
||||||
|
Section 6(a), it reinstates:
|
||||||
|
|
||||||
|
1. automatically as of the date the violation is cured, provided
|
||||||
|
it is cured within 30 days of Your discovery of the
|
||||||
|
violation; or
|
||||||
|
|
||||||
|
2. upon express reinstatement by the Licensor.
|
||||||
|
|
||||||
|
For the avoidance of doubt, this Section 6(b) does not affect any
|
||||||
|
right the Licensor may have to seek remedies for Your violations
|
||||||
|
of this Public License.
|
||||||
|
|
||||||
|
c. For the avoidance of doubt, the Licensor may also offer the
|
||||||
|
Licensed Material under separate terms or conditions or stop
|
||||||
|
distributing the Licensed Material at any time; however, doing so
|
||||||
|
will not terminate this Public License.
|
||||||
|
|
||||||
|
d. Sections 1, 5, 6, 7, and 8 survive termination of this Public
|
||||||
|
License.
|
||||||
|
|
||||||
|
|
||||||
|
Section 7 -- Other Terms and Conditions.
|
||||||
|
|
||||||
|
a. The Licensor shall not be bound by any additional or different
|
||||||
|
terms or conditions communicated by You unless expressly agreed.
|
||||||
|
|
||||||
|
b. Any arrangements, understandings, or agreements regarding the
|
||||||
|
Licensed Material not stated herein are separate from and
|
||||||
|
independent of the terms and conditions of this Public License.
|
||||||
|
|
||||||
|
|
||||||
|
Section 8 -- Interpretation.
|
||||||
|
|
||||||
|
a. For the avoidance of doubt, this Public License does not, and
|
||||||
|
shall not be interpreted to, reduce, limit, restrict, or impose
|
||||||
|
conditions on any use of the Licensed Material that could lawfully
|
||||||
|
be made without permission under this Public License.
|
||||||
|
|
||||||
|
b. To the extent possible, if any provision of this Public License is
|
||||||
|
deemed unenforceable, it shall be automatically reformed to the
|
||||||
|
minimum extent necessary to make it enforceable. If the provision
|
||||||
|
cannot be reformed, it shall be severed from this Public License
|
||||||
|
without affecting the enforceability of the remaining terms and
|
||||||
|
conditions.
|
||||||
|
|
||||||
|
c. No term or condition of this Public License will be waived and no
|
||||||
|
failure to comply consented to unless expressly agreed to by the
|
||||||
|
Licensor.
|
||||||
|
|
||||||
|
d. Nothing in this Public License constitutes or may be interpreted
|
||||||
|
as a limitation upon, or waiver of, any privileges and immunities
|
||||||
|
that apply to the Licensor or You, including from the legal
|
||||||
|
processes of any jurisdiction or authority.
|
||||||
|
|
||||||
|
|
||||||
|
=======================================================================
|
||||||
|
|
||||||
|
Creative Commons is not a party to its public licenses.
|
||||||
|
Notwithstanding, Creative Commons may elect to apply one of its public
|
||||||
|
licenses to material it publishes and in those instances will be
|
||||||
|
considered the “Licensor.” The text of the Creative Commons public
|
||||||
|
licenses is dedicated to the public domain under the CC0 Public Domain
|
||||||
|
Dedication. Except for the limited purpose of indicating that material
|
||||||
|
is shared under a Creative Commons public license or as otherwise
|
||||||
|
permitted by the Creative Commons policies published at
|
||||||
|
creativecommons.org/policies, Creative Commons does not authorize the
|
||||||
|
use of the trademark "Creative Commons" or any other trademark or logo
|
||||||
|
of Creative Commons without its prior written consent including,
|
||||||
|
without limitation, in connection with any unauthorized modifications
|
||||||
|
to any of its public licenses or any other arrangements,
|
||||||
|
understandings, or agreements concerning use of licensed material. For
|
||||||
|
the avoidance of doubt, this paragraph does not form part of the public
|
||||||
|
licenses.
|
||||||
|
|
||||||
|
Creative Commons may be contacted at creativecommons.org.
|
||||||
|
22
LICENSE-CODE
Normal file
22
LICENSE-CODE
Normal file
@ -0,0 +1,22 @@
|
|||||||
|
MIT License
|
||||||
|
|
||||||
|
Copyright (c) 2019 - 2024 Jonah Aragon <jonah@triplebit.net>
|
||||||
|
Copyright (c) 2020 - 2024 Privacy Guides contributors
|
||||||
|
|
||||||
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
|
of this software and associated documentation files (the "Software"), to deal
|
||||||
|
in the Software without restriction, including without limitation the rights
|
||||||
|
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||||
|
copies of the Software, and to permit persons to whom the Software is
|
||||||
|
furnished to do so, subject to the following conditions:
|
||||||
|
|
||||||
|
The above copyright notice and this permission notice shall be included in all
|
||||||
|
copies or substantial portions of the Software.
|
||||||
|
|
||||||
|
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||||
|
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
|
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||||
|
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||||
|
SOFTWARE.
|
37
Pipfile
Normal file
37
Pipfile
Normal file
@ -0,0 +1,37 @@
|
|||||||
|
# Copyright (c) 2022-2024 Jonah Aragon <jonah@triplebit.net>
|
||||||
|
#
|
||||||
|
# Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
|
# of this software and associated documentation files (the "Software"), to
|
||||||
|
# deal in the Software without restriction, including without limitation the
|
||||||
|
# rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
|
||||||
|
# sell copies of the Software, and to permit persons to whom the Software is
|
||||||
|
# furnished to do so, subject to the following conditions:
|
||||||
|
#
|
||||||
|
# The above copyright notice and this permission notice shall be included in
|
||||||
|
# all copies or substantial portions of the Software.
|
||||||
|
#
|
||||||
|
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
# FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE
|
||||||
|
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
|
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||||
|
# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
|
||||||
|
# IN THE SOFTWARE.
|
||||||
|
|
||||||
|
[[source]]
|
||||||
|
url = "https://pypi.org/simple"
|
||||||
|
verify_ssl = true
|
||||||
|
name = "pypi"
|
||||||
|
|
||||||
|
[packages]
|
||||||
|
mkdocs-material = {extras = ["imaging"], path = "./modules/mkdocs-material"}
|
||||||
|
mkdocs-git-revision-date-localized-plugin = "~=1.2"
|
||||||
|
mkdocs-git-authors-plugin = "~=0.8"
|
||||||
|
mkdocs-macros-plugin = "~=1.0"
|
||||||
|
jieba = "~=0.42"
|
||||||
|
|
||||||
|
[dev-packages]
|
||||||
|
scour = "~=0.38"
|
||||||
|
|
||||||
|
[requires]
|
||||||
|
python_version = "3.12"
|
824
Pipfile.lock
generated
Normal file
824
Pipfile.lock
generated
Normal file
@ -0,0 +1,824 @@
|
|||||||
|
{
|
||||||
|
"_meta": {
|
||||||
|
"hash": {
|
||||||
|
"sha256": "ea18b0cfbbad56281087e2422684e4943753ad503e1319ef1f2f054b7a05f608"
|
||||||
|
},
|
||||||
|
"pipfile-spec": 6,
|
||||||
|
"requires": {
|
||||||
|
"python_version": "3.12"
|
||||||
|
},
|
||||||
|
"sources": [
|
||||||
|
{
|
||||||
|
"name": "pypi",
|
||||||
|
"url": "https://pypi.org/simple",
|
||||||
|
"verify_ssl": true
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"default": {
|
||||||
|
"babel": {
|
||||||
|
"hashes": [
|
||||||
|
"sha256:08706bdad8d0a3413266ab61bd6c34d0c28d6e1e7badf40a2cebe67644e2e1fb",
|
||||||
|
"sha256:8daf0e265d05768bc6c7a314cf1321e9a123afc328cc635c18622a2f30a04413"
|
||||||
|
],
|
||||||
|
"markers": "python_version >= '3.8'",
|
||||||
|
"version": "==2.15.0"
|
||||||
|
},
|
||||||
|
"cairocffi": {
|
||||||
|
"hashes": [
|
||||||
|
"sha256:1f29a8d41dbda4090c0aa33bcdea64f3b493e95f74a43ea107c4a8a7b7f632ef",
|
||||||
|
"sha256:7761863603894305f3160eca68452f373433ca8745ab7dd445bd2c6ce50dcab7"
|
||||||
|
],
|
||||||
|
"markers": "python_version >= '3.8'",
|
||||||
|
"version": "==1.7.0"
|
||||||
|
},
|
||||||
|
"cairosvg": {
|
||||||
|
"hashes": [
|
||||||
|
"sha256:432531d72347291b9a9ebfb6777026b607563fd8719c46ee742db0aef7271ba0",
|
||||||
|
"sha256:8a5222d4e6c3f86f1f7046b63246877a63b49923a1cd202184c3a634ef546b3b"
|
||||||
|
],
|
||||||
|
"version": "==2.7.1"
|
||||||
|
},
|
||||||
|
"certifi": {
|
||||||
|
"hashes": [
|
||||||
|
"sha256:0569859f95fc761b18b45ef421b1290a0f65f147e92a1e5eb3e635f9a5e4e66f",
|
||||||
|
"sha256:dc383c07b76109f368f6106eee2b593b04a011ea4d55f652c6ca24a754d1cdd1"
|
||||||
|
],
|
||||||
|
"markers": "python_version >= '3.6'",
|
||||||
|
"version": "==2024.2.2"
|
||||||
|
},
|
||||||
|
"cffi": {
|
||||||
|
"hashes": [
|
||||||
|
"sha256:0c9ef6ff37e974b73c25eecc13952c55bceed9112be2d9d938ded8e856138bcc",
|
||||||
|
"sha256:131fd094d1065b19540c3d72594260f118b231090295d8c34e19a7bbcf2e860a",
|
||||||
|
"sha256:1b8ebc27c014c59692bb2664c7d13ce7a6e9a629be20e54e7271fa696ff2b417",
|
||||||
|
"sha256:2c56b361916f390cd758a57f2e16233eb4f64bcbeee88a4881ea90fca14dc6ab",
|
||||||
|
"sha256:2d92b25dbf6cae33f65005baf472d2c245c050b1ce709cc4588cdcdd5495b520",
|
||||||
|
"sha256:31d13b0f99e0836b7ff893d37af07366ebc90b678b6664c955b54561fc36ef36",
|
||||||
|
"sha256:32c68ef735dbe5857c810328cb2481e24722a59a2003018885514d4c09af9743",
|
||||||
|
"sha256:3686dffb02459559c74dd3d81748269ffb0eb027c39a6fc99502de37d501faa8",
|
||||||
|
"sha256:582215a0e9adbe0e379761260553ba11c58943e4bbe9c36430c4ca6ac74b15ed",
|
||||||
|
"sha256:5b50bf3f55561dac5438f8e70bfcdfd74543fd60df5fa5f62d94e5867deca684",
|
||||||
|
"sha256:5bf44d66cdf9e893637896c7faa22298baebcd18d1ddb6d2626a6e39793a1d56",
|
||||||
|
"sha256:6602bc8dc6f3a9e02b6c22c4fc1e47aa50f8f8e6d3f78a5e16ac33ef5fefa324",
|
||||||
|
"sha256:673739cb539f8cdaa07d92d02efa93c9ccf87e345b9a0b556e3ecc666718468d",
|
||||||
|
"sha256:68678abf380b42ce21a5f2abde8efee05c114c2fdb2e9eef2efdb0257fba1235",
|
||||||
|
"sha256:68e7c44931cc171c54ccb702482e9fc723192e88d25a0e133edd7aff8fcd1f6e",
|
||||||
|
"sha256:6b3d6606d369fc1da4fd8c357d026317fbb9c9b75d36dc16e90e84c26854b088",
|
||||||
|
"sha256:748dcd1e3d3d7cd5443ef03ce8685043294ad6bd7c02a38d1bd367cfd968e000",
|
||||||
|
"sha256:7651c50c8c5ef7bdb41108b7b8c5a83013bfaa8a935590c5d74627c047a583c7",
|
||||||
|
"sha256:7b78010e7b97fef4bee1e896df8a4bbb6712b7f05b7ef630f9d1da00f6444d2e",
|
||||||
|
"sha256:7e61e3e4fa664a8588aa25c883eab612a188c725755afff6289454d6362b9673",
|
||||||
|
"sha256:80876338e19c951fdfed6198e70bc88f1c9758b94578d5a7c4c91a87af3cf31c",
|
||||||
|
"sha256:8895613bcc094d4a1b2dbe179d88d7fb4a15cee43c052e8885783fac397d91fe",
|
||||||
|
"sha256:88e2b3c14bdb32e440be531ade29d3c50a1a59cd4e51b1dd8b0865c54ea5d2e2",
|
||||||
|
"sha256:8f8e709127c6c77446a8c0a8c8bf3c8ee706a06cd44b1e827c3e6a2ee6b8c098",
|
||||||
|
"sha256:9cb4a35b3642fc5c005a6755a5d17c6c8b6bcb6981baf81cea8bfbc8903e8ba8",
|
||||||
|
"sha256:9f90389693731ff1f659e55c7d1640e2ec43ff725cc61b04b2f9c6d8d017df6a",
|
||||||
|
"sha256:a09582f178759ee8128d9270cd1344154fd473bb77d94ce0aeb2a93ebf0feaf0",
|
||||||
|
"sha256:a6a14b17d7e17fa0d207ac08642c8820f84f25ce17a442fd15e27ea18d67c59b",
|
||||||
|
"sha256:a72e8961a86d19bdb45851d8f1f08b041ea37d2bd8d4fd19903bc3083d80c896",
|
||||||
|
"sha256:abd808f9c129ba2beda4cfc53bde801e5bcf9d6e0f22f095e45327c038bfe68e",
|
||||||
|
"sha256:ac0f5edd2360eea2f1daa9e26a41db02dd4b0451b48f7c318e217ee092a213e9",
|
||||||
|
"sha256:b29ebffcf550f9da55bec9e02ad430c992a87e5f512cd63388abb76f1036d8d2",
|
||||||
|
"sha256:b2ca4e77f9f47c55c194982e10f058db063937845bb2b7a86c84a6cfe0aefa8b",
|
||||||
|
"sha256:b7be2d771cdba2942e13215c4e340bfd76398e9227ad10402a8767ab1865d2e6",
|
||||||
|
"sha256:b84834d0cf97e7d27dd5b7f3aca7b6e9263c56308ab9dc8aae9784abb774d404",
|
||||||
|
"sha256:b86851a328eedc692acf81fb05444bdf1891747c25af7529e39ddafaf68a4f3f",
|
||||||
|
"sha256:bcb3ef43e58665bbda2fb198698fcae6776483e0c4a631aa5647806c25e02cc0",
|
||||||
|
"sha256:c0f31130ebc2d37cdd8e44605fb5fa7ad59049298b3f745c74fa74c62fbfcfc4",
|
||||||
|
"sha256:c6a164aa47843fb1b01e941d385aab7215563bb8816d80ff3a363a9f8448a8dc",
|
||||||
|
"sha256:d8a9d3ebe49f084ad71f9269834ceccbf398253c9fac910c4fd7053ff1386936",
|
||||||
|
"sha256:db8e577c19c0fda0beb7e0d4e09e0ba74b1e4c092e0e40bfa12fe05b6f6d75ba",
|
||||||
|
"sha256:dc9b18bf40cc75f66f40a7379f6a9513244fe33c0e8aa72e2d56b0196a7ef872",
|
||||||
|
"sha256:e09f3ff613345df5e8c3667da1d918f9149bd623cd9070c983c013792a9a62eb",
|
||||||
|
"sha256:e4108df7fe9b707191e55f33efbcb2d81928e10cea45527879a4749cbe472614",
|
||||||
|
"sha256:e6024675e67af929088fda399b2094574609396b1decb609c55fa58b028a32a1",
|
||||||
|
"sha256:e70f54f1796669ef691ca07d046cd81a29cb4deb1e5f942003f401c0c4a2695d",
|
||||||
|
"sha256:e715596e683d2ce000574bae5d07bd522c781a822866c20495e52520564f0969",
|
||||||
|
"sha256:e760191dd42581e023a68b758769e2da259b5d52e3103c6060ddc02c9edb8d7b",
|
||||||
|
"sha256:ed86a35631f7bfbb28e108dd96773b9d5a6ce4811cf6ea468bb6a359b256b1e4",
|
||||||
|
"sha256:ee07e47c12890ef248766a6e55bd38ebfb2bb8edd4142d56db91b21ea68b7627",
|
||||||
|
"sha256:fa3a0128b152627161ce47201262d3140edb5a5c3da88d73a1b790a959126956",
|
||||||
|
"sha256:fcc8eb6d5902bb1cf6dc4f187ee3ea80a1eba0a89aba40a5cb20a5087d961357"
|
||||||
|
],
|
||||||
|
"markers": "python_version >= '3.8'",
|
||||||
|
"version": "==1.16.0"
|
||||||
|
},
|
||||||
|
"charset-normalizer": {
|
||||||
|
"hashes": [
|
||||||
|
"sha256:06435b539f889b1f6f4ac1758871aae42dc3a8c0e24ac9e60c2384973ad73027",
|
||||||
|
"sha256:06a81e93cd441c56a9b65d8e1d043daeb97a3d0856d177d5c90ba85acb3db087",
|
||||||
|
"sha256:0a55554a2fa0d408816b3b5cedf0045f4b8e1a6065aec45849de2d6f3f8e9786",
|
||||||
|
"sha256:0b2b64d2bb6d3fb9112bafa732def486049e63de9618b5843bcdd081d8144cd8",
|
||||||
|
"sha256:10955842570876604d404661fbccbc9c7e684caf432c09c715ec38fbae45ae09",
|
||||||
|
"sha256:122c7fa62b130ed55f8f285bfd56d5f4b4a5b503609d181f9ad85e55c89f4185",
|
||||||
|
"sha256:1ceae2f17a9c33cb48e3263960dc5fc8005351ee19db217e9b1bb15d28c02574",
|
||||||
|
"sha256:1d3193f4a680c64b4b6a9115943538edb896edc190f0b222e73761716519268e",
|
||||||
|
"sha256:1f79682fbe303db92bc2b1136016a38a42e835d932bab5b3b1bfcfbf0640e519",
|
||||||
|
"sha256:2127566c664442652f024c837091890cb1942c30937add288223dc895793f898",
|
||||||
|
"sha256:22afcb9f253dac0696b5a4be4a1c0f8762f8239e21b99680099abd9b2b1b2269",
|
||||||
|
"sha256:25baf083bf6f6b341f4121c2f3c548875ee6f5339300e08be3f2b2ba1721cdd3",
|
||||||
|
"sha256:2e81c7b9c8979ce92ed306c249d46894776a909505d8f5a4ba55b14206e3222f",
|
||||||
|
"sha256:3287761bc4ee9e33561a7e058c72ac0938c4f57fe49a09eae428fd88aafe7bb6",
|
||||||
|
"sha256:34d1c8da1e78d2e001f363791c98a272bb734000fcef47a491c1e3b0505657a8",
|
||||||
|
"sha256:37e55c8e51c236f95b033f6fb391d7d7970ba5fe7ff453dad675e88cf303377a",
|
||||||
|
"sha256:3d47fa203a7bd9c5b6cee4736ee84ca03b8ef23193c0d1ca99b5089f72645c73",
|
||||||
|
"sha256:3e4d1f6587322d2788836a99c69062fbb091331ec940e02d12d179c1d53e25fc",
|
||||||
|
"sha256:42cb296636fcc8b0644486d15c12376cb9fa75443e00fb25de0b8602e64c1714",
|
||||||
|
"sha256:45485e01ff4d3630ec0d9617310448a8702f70e9c01906b0d0118bdf9d124cf2",
|
||||||
|
"sha256:4a78b2b446bd7c934f5dcedc588903fb2f5eec172f3d29e52a9096a43722adfc",
|
||||||
|
"sha256:4ab2fe47fae9e0f9dee8c04187ce5d09f48eabe611be8259444906793ab7cbce",
|
||||||
|
"sha256:4d0d1650369165a14e14e1e47b372cfcb31d6ab44e6e33cb2d4e57265290044d",
|
||||||
|
"sha256:549a3a73da901d5bc3ce8d24e0600d1fa85524c10287f6004fbab87672bf3e1e",
|
||||||
|
"sha256:55086ee1064215781fff39a1af09518bc9255b50d6333f2e4c74ca09fac6a8f6",
|
||||||
|
"sha256:572c3763a264ba47b3cf708a44ce965d98555f618ca42c926a9c1616d8f34269",
|
||||||
|
"sha256:573f6eac48f4769d667c4442081b1794f52919e7edada77495aaed9236d13a96",
|
||||||
|
"sha256:5b4c145409bef602a690e7cfad0a15a55c13320ff7a3ad7ca59c13bb8ba4d45d",
|
||||||
|
"sha256:6463effa3186ea09411d50efc7d85360b38d5f09b870c48e4600f63af490e56a",
|
||||||
|
"sha256:65f6f63034100ead094b8744b3b97965785388f308a64cf8d7c34f2f2e5be0c4",
|
||||||
|
"sha256:663946639d296df6a2bb2aa51b60a2454ca1cb29835324c640dafb5ff2131a77",
|
||||||
|
"sha256:6897af51655e3691ff853668779c7bad41579facacf5fd7253b0133308cf000d",
|
||||||
|
"sha256:68d1f8a9e9e37c1223b656399be5d6b448dea850bed7d0f87a8311f1ff3dabb0",
|
||||||
|
"sha256:6ac7ffc7ad6d040517be39eb591cac5ff87416c2537df6ba3cba3bae290c0fed",
|
||||||
|
"sha256:6b3251890fff30ee142c44144871185dbe13b11bab478a88887a639655be1068",
|
||||||
|
"sha256:6c4caeef8fa63d06bd437cd4bdcf3ffefe6738fb1b25951440d80dc7df8c03ac",
|
||||||
|
"sha256:6ef1d82a3af9d3eecdba2321dc1b3c238245d890843e040e41e470ffa64c3e25",
|
||||||
|
"sha256:753f10e867343b4511128c6ed8c82f7bec3bd026875576dfd88483c5c73b2fd8",
|
||||||
|
"sha256:7cd13a2e3ddeed6913a65e66e94b51d80a041145a026c27e6bb76c31a853c6ab",
|
||||||
|
"sha256:7ed9e526742851e8d5cc9e6cf41427dfc6068d4f5a3bb03659444b4cabf6bc26",
|
||||||
|
"sha256:7f04c839ed0b6b98b1a7501a002144b76c18fb1c1850c8b98d458ac269e26ed2",
|
||||||
|
"sha256:802fe99cca7457642125a8a88a084cef28ff0cf9407060f7b93dca5aa25480db",
|
||||||
|
"sha256:80402cd6ee291dcb72644d6eac93785fe2c8b9cb30893c1af5b8fdd753b9d40f",
|
||||||
|
"sha256:8465322196c8b4d7ab6d1e049e4c5cb460d0394da4a27d23cc242fbf0034b6b5",
|
||||||
|
"sha256:86216b5cee4b06df986d214f664305142d9c76df9b6512be2738aa72a2048f99",
|
||||||
|
"sha256:87d1351268731db79e0f8e745d92493ee2841c974128ef629dc518b937d9194c",
|
||||||
|
"sha256:8bdb58ff7ba23002a4c5808d608e4e6c687175724f54a5dade5fa8c67b604e4d",
|
||||||
|
"sha256:8c622a5fe39a48f78944a87d4fb8a53ee07344641b0562c540d840748571b811",
|
||||||
|
"sha256:8d756e44e94489e49571086ef83b2bb8ce311e730092d2c34ca8f7d925cb20aa",
|
||||||
|
"sha256:8f4a014bc36d3c57402e2977dada34f9c12300af536839dc38c0beab8878f38a",
|
||||||
|
"sha256:9063e24fdb1e498ab71cb7419e24622516c4a04476b17a2dab57e8baa30d6e03",
|
||||||
|
"sha256:90d558489962fd4918143277a773316e56c72da56ec7aa3dc3dbbe20fdfed15b",
|
||||||
|
"sha256:923c0c831b7cfcb071580d3f46c4baf50f174be571576556269530f4bbd79d04",
|
||||||
|
"sha256:95f2a5796329323b8f0512e09dbb7a1860c46a39da62ecb2324f116fa8fdc85c",
|
||||||
|
"sha256:96b02a3dc4381e5494fad39be677abcb5e6634bf7b4fa83a6dd3112607547001",
|
||||||
|
"sha256:9f96df6923e21816da7e0ad3fd47dd8f94b2a5ce594e00677c0013018b813458",
|
||||||
|
"sha256:a10af20b82360ab00827f916a6058451b723b4e65030c5a18577c8b2de5b3389",
|
||||||
|
"sha256:a50aebfa173e157099939b17f18600f72f84eed3049e743b68ad15bd69b6bf99",
|
||||||
|
"sha256:a981a536974bbc7a512cf44ed14938cf01030a99e9b3a06dd59578882f06f985",
|
||||||
|
"sha256:a9a8e9031d613fd2009c182b69c7b2c1ef8239a0efb1df3f7c8da66d5dd3d537",
|
||||||
|
"sha256:ae5f4161f18c61806f411a13b0310bea87f987c7d2ecdbdaad0e94eb2e404238",
|
||||||
|
"sha256:aed38f6e4fb3f5d6bf81bfa990a07806be9d83cf7bacef998ab1a9bd660a581f",
|
||||||
|
"sha256:b01b88d45a6fcb69667cd6d2f7a9aeb4bf53760d7fc536bf679ec94fe9f3ff3d",
|
||||||
|
"sha256:b261ccdec7821281dade748d088bb6e9b69e6d15b30652b74cbbac25e280b796",
|
||||||
|
"sha256:b2b0a0c0517616b6869869f8c581d4eb2dd83a4d79e0ebcb7d373ef9956aeb0a",
|
||||||
|
"sha256:b4a23f61ce87adf89be746c8a8974fe1c823c891d8f86eb218bb957c924bb143",
|
||||||
|
"sha256:bd8f7df7d12c2db9fab40bdd87a7c09b1530128315d047a086fa3ae3435cb3a8",
|
||||||
|
"sha256:beb58fe5cdb101e3a055192ac291b7a21e3b7ef4f67fa1d74e331a7f2124341c",
|
||||||
|
"sha256:c002b4ffc0be611f0d9da932eb0f704fe2602a9a949d1f738e4c34c75b0863d5",
|
||||||
|
"sha256:c083af607d2515612056a31f0a8d9e0fcb5876b7bfc0abad3ecd275bc4ebc2d5",
|
||||||
|
"sha256:c180f51afb394e165eafe4ac2936a14bee3eb10debc9d9e4db8958fe36afe711",
|
||||||
|
"sha256:c235ebd9baae02f1b77bcea61bce332cb4331dc3617d254df3323aa01ab47bd4",
|
||||||
|
"sha256:cd70574b12bb8a4d2aaa0094515df2463cb429d8536cfb6c7ce983246983e5a6",
|
||||||
|
"sha256:d0eccceffcb53201b5bfebb52600a5fb483a20b61da9dbc885f8b103cbe7598c",
|
||||||
|
"sha256:d965bba47ddeec8cd560687584e88cf699fd28f192ceb452d1d7ee807c5597b7",
|
||||||
|
"sha256:db364eca23f876da6f9e16c9da0df51aa4f104a972735574842618b8c6d999d4",
|
||||||
|
"sha256:ddbb2551d7e0102e7252db79ba445cdab71b26640817ab1e3e3648dad515003b",
|
||||||
|
"sha256:deb6be0ac38ece9ba87dea880e438f25ca3eddfac8b002a2ec3d9183a454e8ae",
|
||||||
|
"sha256:e06ed3eb3218bc64786f7db41917d4e686cc4856944f53d5bdf83a6884432e12",
|
||||||
|
"sha256:e27ad930a842b4c5eb8ac0016b0a54f5aebbe679340c26101df33424142c143c",
|
||||||
|
"sha256:e537484df0d8f426ce2afb2d0f8e1c3d0b114b83f8850e5f2fbea0e797bd82ae",
|
||||||
|
"sha256:eb00ed941194665c332bf8e078baf037d6c35d7c4f3102ea2d4f16ca94a26dc8",
|
||||||
|
"sha256:eb6904c354526e758fda7167b33005998fb68c46fbc10e013ca97f21ca5c8887",
|
||||||
|
"sha256:eb8821e09e916165e160797a6c17edda0679379a4be5c716c260e836e122f54b",
|
||||||
|
"sha256:efcb3f6676480691518c177e3b465bcddf57cea040302f9f4e6e191af91174d4",
|
||||||
|
"sha256:f27273b60488abe721a075bcca6d7f3964f9f6f067c8c4c605743023d7d3944f",
|
||||||
|
"sha256:f30c3cb33b24454a82faecaf01b19c18562b1e89558fb6c56de4d9118a032fd5",
|
||||||
|
"sha256:fb69256e180cb6c8a894fee62b3afebae785babc1ee98b81cdf68bbca1987f33",
|
||||||
|
"sha256:fd1abc0d89e30cc4e02e4064dc67fcc51bd941eb395c502aac3ec19fab46b519",
|
||||||
|
"sha256:ff8fa367d09b717b2a17a052544193ad76cd49979c805768879cb63d9ca50561"
|
||||||
|
],
|
||||||
|
"markers": "python_full_version >= '3.7.0'",
|
||||||
|
"version": "==3.3.2"
|
||||||
|
},
|
||||||
|
"click": {
|
||||||
|
"hashes": [
|
||||||
|
"sha256:ae74fb96c20a0277a1d615f1e4d73c8414f5a98db8b799a7931d1582f3390c28",
|
||||||
|
"sha256:ca9853ad459e787e2192211578cc907e7594e294c7ccc834310722b41b9ca6de"
|
||||||
|
],
|
||||||
|
"markers": "python_version >= '3.7'",
|
||||||
|
"version": "==8.1.7"
|
||||||
|
},
|
||||||
|
"colorama": {
|
||||||
|
"hashes": [
|
||||||
|
"sha256:08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44",
|
||||||
|
"sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6"
|
||||||
|
],
|
||||||
|
"markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4, 3.5, 3.6'",
|
||||||
|
"version": "==0.4.6"
|
||||||
|
},
|
||||||
|
"cssselect2": {
|
||||||
|
"hashes": [
|
||||||
|
"sha256:1ccd984dab89fc68955043aca4e1b03e0cf29cad9880f6e28e3ba7a74b14aa5a",
|
||||||
|
"sha256:fd23a65bfd444595913f02fc71f6b286c29261e354c41d722ca7a261a49b5969"
|
||||||
|
],
|
||||||
|
"markers": "python_version >= '3.7'",
|
||||||
|
"version": "==0.7.0"
|
||||||
|
},
|
||||||
|
"defusedxml": {
|
||||||
|
"hashes": [
|
||||||
|
"sha256:1bb3032db185915b62d7c6209c5a8792be6a32ab2fedacc84e01b52c51aa3e69",
|
||||||
|
"sha256:a352e7e428770286cc899e2542b6cdaedb2b4953ff269a210103ec58f6198a61"
|
||||||
|
],
|
||||||
|
"markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4'",
|
||||||
|
"version": "==0.7.1"
|
||||||
|
},
|
||||||
|
"ghp-import": {
|
||||||
|
"hashes": [
|
||||||
|
"sha256:8337dd7b50877f163d4c0289bc1f1c7f127550241988d568c1db512c4324a619",
|
||||||
|
"sha256:9c535c4c61193c2df8871222567d7fd7e5014d835f97dc7b7439069e2413d343"
|
||||||
|
],
|
||||||
|
"version": "==2.1.0"
|
||||||
|
},
|
||||||
|
"gitdb": {
|
||||||
|
"hashes": [
|
||||||
|
"sha256:81a3407ddd2ee8df444cbacea00e2d038e40150acfa3001696fe0dcf1d3adfa4",
|
||||||
|
"sha256:bf5421126136d6d0af55bc1e7c1af1c397a34f5b7bd79e776cd3e89785c2b04b"
|
||||||
|
],
|
||||||
|
"markers": "python_version >= '3.7'",
|
||||||
|
"version": "==4.0.11"
|
||||||
|
},
|
||||||
|
"gitpython": {
|
||||||
|
"hashes": [
|
||||||
|
"sha256:35f314a9f878467f5453cc1fee295c3e18e52f1b99f10f6cf5b1682e968a9e7c",
|
||||||
|
"sha256:eec7ec56b92aad751f9912a73404bc02ba212a23adb2c7098ee668417051a1ff"
|
||||||
|
],
|
||||||
|
"markers": "python_version >= '3.7'",
|
||||||
|
"version": "==3.1.43"
|
||||||
|
},
|
||||||
|
"idna": {
|
||||||
|
"hashes": [
|
||||||
|
"sha256:028ff3aadf0609c1fd278d8ea3089299412a7a8b9bd005dd08b9f8285bcb5cfc",
|
||||||
|
"sha256:82fee1fc78add43492d3a1898bfa6d8a904cc97d8427f683ed8e798d07761aa0"
|
||||||
|
],
|
||||||
|
"markers": "python_version >= '3.5'",
|
||||||
|
"version": "==3.7"
|
||||||
|
},
|
||||||
|
"jieba": {
|
||||||
|
"hashes": [
|
||||||
|
"sha256:055ca12f62674fafed09427f176506079bc135638a14e23e25be909131928db2"
|
||||||
|
],
|
||||||
|
"index": "pypi",
|
||||||
|
"version": "==0.42.1"
|
||||||
|
},
|
||||||
|
"jinja2": {
|
||||||
|
"hashes": [
|
||||||
|
"sha256:4a3aee7acbbe7303aede8e9648d13b8bf88a429282aa6122a993f0ac800cb369",
|
||||||
|
"sha256:bc5dd2abb727a5319567b7a813e6a2e7318c39f4f487cfe6c89c6f9c7d25197d"
|
||||||
|
],
|
||||||
|
"markers": "python_version >= '3.7'",
|
||||||
|
"version": "==3.1.4"
|
||||||
|
},
|
||||||
|
"markdown": {
|
||||||
|
"hashes": [
|
||||||
|
"sha256:48f276f4d8cfb8ce6527c8f79e2ee29708508bf4d40aa410fbc3b4ee832c850f",
|
||||||
|
"sha256:ed4f41f6daecbeeb96e576ce414c41d2d876daa9a16cb35fa8ed8c2ddfad0224"
|
||||||
|
],
|
||||||
|
"markers": "python_version >= '3.8'",
|
||||||
|
"version": "==3.6"
|
||||||
|
},
|
||||||
|
"markupsafe": {
|
||||||
|
"hashes": [
|
||||||
|
"sha256:00e046b6dd71aa03a41079792f8473dc494d564611a8f89bbbd7cb93295ebdcf",
|
||||||
|
"sha256:075202fa5b72c86ad32dc7d0b56024ebdbcf2048c0ba09f1cde31bfdd57bcfff",
|
||||||
|
"sha256:0e397ac966fdf721b2c528cf028494e86172b4feba51d65f81ffd65c63798f3f",
|
||||||
|
"sha256:17b950fccb810b3293638215058e432159d2b71005c74371d784862b7e4683f3",
|
||||||
|
"sha256:1f3fbcb7ef1f16e48246f704ab79d79da8a46891e2da03f8783a5b6fa41a9532",
|
||||||
|
"sha256:2174c595a0d73a3080ca3257b40096db99799265e1c27cc5a610743acd86d62f",
|
||||||
|
"sha256:2b7c57a4dfc4f16f7142221afe5ba4e093e09e728ca65c51f5620c9aaeb9a617",
|
||||||
|
"sha256:2d2d793e36e230fd32babe143b04cec8a8b3eb8a3122d2aceb4a371e6b09b8df",
|
||||||
|
"sha256:30b600cf0a7ac9234b2638fbc0fb6158ba5bdcdf46aeb631ead21248b9affbc4",
|
||||||
|
"sha256:397081c1a0bfb5124355710fe79478cdbeb39626492b15d399526ae53422b906",
|
||||||
|
"sha256:3a57fdd7ce31c7ff06cdfbf31dafa96cc533c21e443d57f5b1ecc6cdc668ec7f",
|
||||||
|
"sha256:3c6b973f22eb18a789b1460b4b91bf04ae3f0c4234a0a6aa6b0a92f6f7b951d4",
|
||||||
|
"sha256:3e53af139f8579a6d5f7b76549125f0d94d7e630761a2111bc431fd820e163b8",
|
||||||
|
"sha256:4096e9de5c6fdf43fb4f04c26fb114f61ef0bf2e5604b6ee3019d51b69e8c371",
|
||||||
|
"sha256:4275d846e41ecefa46e2015117a9f491e57a71ddd59bbead77e904dc02b1bed2",
|
||||||
|
"sha256:4c31f53cdae6ecfa91a77820e8b151dba54ab528ba65dfd235c80b086d68a465",
|
||||||
|
"sha256:4f11aa001c540f62c6166c7726f71f7573b52c68c31f014c25cc7901deea0b52",
|
||||||
|
"sha256:5049256f536511ee3f7e1b3f87d1d1209d327e818e6ae1365e8653d7e3abb6a6",
|
||||||
|
"sha256:58c98fee265677f63a4385256a6d7683ab1832f3ddd1e66fe948d5880c21a169",
|
||||||
|
"sha256:598e3276b64aff0e7b3451b72e94fa3c238d452e7ddcd893c3ab324717456bad",
|
||||||
|
"sha256:5b7b716f97b52c5a14bffdf688f971b2d5ef4029127f1ad7a513973cfd818df2",
|
||||||
|
"sha256:5dedb4db619ba5a2787a94d877bc8ffc0566f92a01c0ef214865e54ecc9ee5e0",
|
||||||
|
"sha256:619bc166c4f2de5caa5a633b8b7326fbe98e0ccbfacabd87268a2b15ff73a029",
|
||||||
|
"sha256:629ddd2ca402ae6dbedfceeba9c46d5f7b2a61d9749597d4307f943ef198fc1f",
|
||||||
|
"sha256:656f7526c69fac7f600bd1f400991cc282b417d17539a1b228617081106feb4a",
|
||||||
|
"sha256:6ec585f69cec0aa07d945b20805be741395e28ac1627333b1c5b0105962ffced",
|
||||||
|
"sha256:72b6be590cc35924b02c78ef34b467da4ba07e4e0f0454a2c5907f473fc50ce5",
|
||||||
|
"sha256:7502934a33b54030eaf1194c21c692a534196063db72176b0c4028e140f8f32c",
|
||||||
|
"sha256:7a68b554d356a91cce1236aa7682dc01df0edba8d043fd1ce607c49dd3c1edcf",
|
||||||
|
"sha256:7b2e5a267c855eea6b4283940daa6e88a285f5f2a67f2220203786dfa59b37e9",
|
||||||
|
"sha256:823b65d8706e32ad2df51ed89496147a42a2a6e01c13cfb6ffb8b1e92bc910bb",
|
||||||
|
"sha256:8590b4ae07a35970728874632fed7bd57b26b0102df2d2b233b6d9d82f6c62ad",
|
||||||
|
"sha256:8dd717634f5a044f860435c1d8c16a270ddf0ef8588d4887037c5028b859b0c3",
|
||||||
|
"sha256:8dec4936e9c3100156f8a2dc89c4b88d5c435175ff03413b443469c7c8c5f4d1",
|
||||||
|
"sha256:97cafb1f3cbcd3fd2b6fbfb99ae11cdb14deea0736fc2b0952ee177f2b813a46",
|
||||||
|
"sha256:a17a92de5231666cfbe003f0e4b9b3a7ae3afb1ec2845aadc2bacc93ff85febc",
|
||||||
|
"sha256:a549b9c31bec33820e885335b451286e2969a2d9e24879f83fe904a5ce59d70a",
|
||||||
|
"sha256:ac07bad82163452a6884fe8fa0963fb98c2346ba78d779ec06bd7a6262132aee",
|
||||||
|
"sha256:ae2ad8ae6ebee9d2d94b17fb62763125f3f374c25618198f40cbb8b525411900",
|
||||||
|
"sha256:b91c037585eba9095565a3556f611e3cbfaa42ca1e865f7b8015fe5c7336d5a5",
|
||||||
|
"sha256:bc1667f8b83f48511b94671e0e441401371dfd0f0a795c7daa4a3cd1dde55bea",
|
||||||
|
"sha256:bec0a414d016ac1a18862a519e54b2fd0fc8bbfd6890376898a6c0891dd82e9f",
|
||||||
|
"sha256:bf50cd79a75d181c9181df03572cdce0fbb75cc353bc350712073108cba98de5",
|
||||||
|
"sha256:bff1b4290a66b490a2f4719358c0cdcd9bafb6b8f061e45c7a2460866bf50c2e",
|
||||||
|
"sha256:c061bb86a71b42465156a3ee7bd58c8c2ceacdbeb95d05a99893e08b8467359a",
|
||||||
|
"sha256:c8b29db45f8fe46ad280a7294f5c3ec36dbac9491f2d1c17345be8e69cc5928f",
|
||||||
|
"sha256:ce409136744f6521e39fd8e2a24c53fa18ad67aa5bc7c2cf83645cce5b5c4e50",
|
||||||
|
"sha256:d050b3361367a06d752db6ead6e7edeb0009be66bc3bae0ee9d97fb326badc2a",
|
||||||
|
"sha256:d283d37a890ba4c1ae73ffadf8046435c76e7bc2247bbb63c00bd1a709c6544b",
|
||||||
|
"sha256:d9fad5155d72433c921b782e58892377c44bd6252b5af2f67f16b194987338a4",
|
||||||
|
"sha256:daa4ee5a243f0f20d528d939d06670a298dd39b1ad5f8a72a4275124a7819eff",
|
||||||
|
"sha256:db0b55e0f3cc0be60c1f19efdde9a637c32740486004f20d1cff53c3c0ece4d2",
|
||||||
|
"sha256:e61659ba32cf2cf1481e575d0462554625196a1f2fc06a1c777d3f48e8865d46",
|
||||||
|
"sha256:ea3d8a3d18833cf4304cd2fc9cbb1efe188ca9b5efef2bdac7adc20594a0e46b",
|
||||||
|
"sha256:ec6a563cff360b50eed26f13adc43e61bc0c04d94b8be985e6fb24b81f6dcfdf",
|
||||||
|
"sha256:f5dfb42c4604dddc8e4305050aa6deb084540643ed5804d7455b5df8fe16f5e5",
|
||||||
|
"sha256:fa173ec60341d6bb97a89f5ea19c85c5643c1e7dedebc22f5181eb73573142c5",
|
||||||
|
"sha256:fa9db3f79de01457b03d4f01b34cf91bc0048eb2c3846ff26f66687c2f6d16ab",
|
||||||
|
"sha256:fce659a462a1be54d2ffcacea5e3ba2d74daa74f30f5f143fe0c58636e355fdd",
|
||||||
|
"sha256:ffee1f21e5ef0d712f9033568f8344d5da8cc2869dbd08d87c84656e6a2d2f68"
|
||||||
|
],
|
||||||
|
"markers": "python_version >= '3.7'",
|
||||||
|
"version": "==2.1.5"
|
||||||
|
},
|
||||||
|
"mergedeep": {
|
||||||
|
"hashes": [
|
||||||
|
"sha256:0096d52e9dad9939c3d975a774666af186eda617e6ca84df4c94dec30004f2a8",
|
||||||
|
"sha256:70775750742b25c0d8f36c55aed03d24c3384d17c951b3175d898bd778ef0307"
|
||||||
|
],
|
||||||
|
"markers": "python_version >= '3.6'",
|
||||||
|
"version": "==1.3.4"
|
||||||
|
},
|
||||||
|
"mkdocs": {
|
||||||
|
"hashes": [
|
||||||
|
"sha256:1eb5cb7676b7d89323e62b56235010216319217d4af5ddc543a91beb8d125ea7",
|
||||||
|
"sha256:a73f735824ef83a4f3bcb7a231dcab23f5a838f88b7efc54a0eef5fbdbc3c512"
|
||||||
|
],
|
||||||
|
"markers": "python_version >= '3.8'",
|
||||||
|
"version": "==1.6.0"
|
||||||
|
},
|
||||||
|
"mkdocs-get-deps": {
|
||||||
|
"hashes": [
|
||||||
|
"sha256:162b3d129c7fad9b19abfdcb9c1458a651628e4b1dea628ac68790fb3061c60c",
|
||||||
|
"sha256:2bf11d0b133e77a0dd036abeeb06dec8775e46efa526dc70667d8863eefc6134"
|
||||||
|
],
|
||||||
|
"markers": "python_version >= '3.8'",
|
||||||
|
"version": "==0.2.0"
|
||||||
|
},
|
||||||
|
"mkdocs-git-authors-plugin": {
|
||||||
|
"hashes": [
|
||||||
|
"sha256:380730a05eeb947a7e84be05fdb1c5ae2a7bc70fd9f6eda941f187c87ae37052",
|
||||||
|
"sha256:6161f63b87064481a48d9ad01c23e43c3e758930c3a9cc167fe482909ceb9eac"
|
||||||
|
],
|
||||||
|
"index": "pypi",
|
||||||
|
"markers": "python_version >= '3.7'",
|
||||||
|
"version": "==0.9.0"
|
||||||
|
},
|
||||||
|
"mkdocs-git-revision-date-localized-plugin": {
|
||||||
|
"hashes": [
|
||||||
|
"sha256:0c439816d9d0dba48e027d9d074b2b9f1d7cd179f74ba46b51e4da7bb3dc4b9b",
|
||||||
|
"sha256:d796a18b07cfcdb154c133e3ec099d2bb5f38389e4fd54d3eb516a8a736815b8"
|
||||||
|
],
|
||||||
|
"index": "pypi",
|
||||||
|
"markers": "python_version >= '3.8'",
|
||||||
|
"version": "==1.2.5"
|
||||||
|
},
|
||||||
|
"mkdocs-macros-plugin": {
|
||||||
|
"hashes": [
|
||||||
|
"sha256:f60e26f711f5a830ddf1e7980865bf5c0f1180db56109803cdd280073c1a050a",
|
||||||
|
"sha256:fe348d75f01c911f362b6d998c57b3d85b505876dde69db924f2c512c395c328"
|
||||||
|
],
|
||||||
|
"index": "pypi",
|
||||||
|
"markers": "python_version >= '3.8'",
|
||||||
|
"version": "==1.0.5"
|
||||||
|
},
|
||||||
|
"mkdocs-material": {
|
||||||
|
"extras": [
|
||||||
|
"imaging"
|
||||||
|
],
|
||||||
|
"markers": "python_version >= '3.8'",
|
||||||
|
"path": "./modules/mkdocs-material"
|
||||||
|
},
|
||||||
|
"mkdocs-material-extensions": {
|
||||||
|
"hashes": [
|
||||||
|
"sha256:10c9511cea88f568257f960358a467d12b970e1f7b2c0e5fb2bb48cab1928443",
|
||||||
|
"sha256:adff8b62700b25cb77b53358dad940f3ef973dd6db797907c49e3c2ef3ab4e31"
|
||||||
|
],
|
||||||
|
"markers": "python_version >= '3.8'",
|
||||||
|
"version": "==1.3.1"
|
||||||
|
},
|
||||||
|
"packaging": {
|
||||||
|
"hashes": [
|
||||||
|
"sha256:2ddfb553fdf02fb784c234c7ba6ccc288296ceabec964ad2eae3777778130bc5",
|
||||||
|
"sha256:eb82c5e3e56209074766e6885bb04b8c38a0c015d0a30036ebe7ece34c9989e9"
|
||||||
|
],
|
||||||
|
"markers": "python_version >= '3.7'",
|
||||||
|
"version": "==24.0"
|
||||||
|
},
|
||||||
|
"paginate": {
|
||||||
|
"hashes": [
|
||||||
|
"sha256:5e6007b6a9398177a7e1648d04fdd9f8c9766a1a945bceac82f1929e8c78af2d"
|
||||||
|
],
|
||||||
|
"version": "==0.5.6"
|
||||||
|
},
|
||||||
|
"pathspec": {
|
||||||
|
"hashes": [
|
||||||
|
"sha256:a0d503e138a4c123b27490a4f7beda6a01c6f288df0e4a8b79c7eb0dc7b4cc08",
|
||||||
|
"sha256:a482d51503a1ab33b1c67a6c3813a26953dbdc71c31dacaef9a838c4e29f5712"
|
||||||
|
],
|
||||||
|
"markers": "python_version >= '3.8'",
|
||||||
|
"version": "==0.12.1"
|
||||||
|
},
|
||||||
|
"pillow": {
|
||||||
|
"hashes": [
|
||||||
|
"sha256:048ad577748b9fa4a99a0548c64f2cb8d672d5bf2e643a739ac8faff1164238c",
|
||||||
|
"sha256:048eeade4c33fdf7e08da40ef402e748df113fd0b4584e32c4af74fe78baaeb2",
|
||||||
|
"sha256:0ba26351b137ca4e0db0342d5d00d2e355eb29372c05afd544ebf47c0956ffeb",
|
||||||
|
"sha256:0ea2a783a2bdf2a561808fe4a7a12e9aa3799b701ba305de596bc48b8bdfce9d",
|
||||||
|
"sha256:1530e8f3a4b965eb6a7785cf17a426c779333eb62c9a7d1bbcf3ffd5bf77a4aa",
|
||||||
|
"sha256:16563993329b79513f59142a6b02055e10514c1a8e86dca8b48a893e33cf91e3",
|
||||||
|
"sha256:19aeb96d43902f0a783946a0a87dbdad5c84c936025b8419da0a0cd7724356b1",
|
||||||
|
"sha256:1a1d1915db1a4fdb2754b9de292642a39a7fb28f1736699527bb649484fb966a",
|
||||||
|
"sha256:1b87bd9d81d179bd8ab871603bd80d8645729939f90b71e62914e816a76fc6bd",
|
||||||
|
"sha256:1dfc94946bc60ea375cc39cff0b8da6c7e5f8fcdc1d946beb8da5c216156ddd8",
|
||||||
|
"sha256:2034f6759a722da3a3dbd91a81148cf884e91d1b747992ca288ab88c1de15999",
|
||||||
|
"sha256:261ddb7ca91fcf71757979534fb4c128448b5b4c55cb6152d280312062f69599",
|
||||||
|
"sha256:2ed854e716a89b1afcedea551cd85f2eb2a807613752ab997b9974aaa0d56936",
|
||||||
|
"sha256:3102045a10945173d38336f6e71a8dc71bcaeed55c3123ad4af82c52807b9375",
|
||||||
|
"sha256:339894035d0ede518b16073bdc2feef4c991ee991a29774b33e515f1d308e08d",
|
||||||
|
"sha256:412444afb8c4c7a6cc11a47dade32982439925537e483be7c0ae0cf96c4f6a0b",
|
||||||
|
"sha256:4203efca580f0dd6f882ca211f923168548f7ba334c189e9eab1178ab840bf60",
|
||||||
|
"sha256:45ebc7b45406febf07fef35d856f0293a92e7417ae7933207e90bf9090b70572",
|
||||||
|
"sha256:4b5ec25d8b17217d635f8935dbc1b9aa5907962fae29dff220f2659487891cd3",
|
||||||
|
"sha256:4c8e73e99da7db1b4cad7f8d682cf6abad7844da39834c288fbfa394a47bbced",
|
||||||
|
"sha256:4e6f7d1c414191c1199f8996d3f2282b9ebea0945693fb67392c75a3a320941f",
|
||||||
|
"sha256:4eaa22f0d22b1a7e93ff0a596d57fdede2e550aecffb5a1ef1106aaece48e96b",
|
||||||
|
"sha256:50b8eae8f7334ec826d6eeffaeeb00e36b5e24aa0b9df322c247539714c6df19",
|
||||||
|
"sha256:50fd3f6b26e3441ae07b7c979309638b72abc1a25da31a81a7fbd9495713ef4f",
|
||||||
|
"sha256:51243f1ed5161b9945011a7360e997729776f6e5d7005ba0c6879267d4c5139d",
|
||||||
|
"sha256:5d512aafa1d32efa014fa041d38868fda85028e3f930a96f85d49c7d8ddc0383",
|
||||||
|
"sha256:5f77cf66e96ae734717d341c145c5949c63180842a545c47a0ce7ae52ca83795",
|
||||||
|
"sha256:6b02471b72526ab8a18c39cb7967b72d194ec53c1fd0a70b050565a0f366d355",
|
||||||
|
"sha256:6fb1b30043271ec92dc65f6d9f0b7a830c210b8a96423074b15c7bc999975f57",
|
||||||
|
"sha256:7161ec49ef0800947dc5570f86568a7bb36fa97dd09e9827dc02b718c5643f09",
|
||||||
|
"sha256:72d622d262e463dfb7595202d229f5f3ab4b852289a1cd09650362db23b9eb0b",
|
||||||
|
"sha256:74d28c17412d9caa1066f7a31df8403ec23d5268ba46cd0ad2c50fb82ae40462",
|
||||||
|
"sha256:78618cdbccaa74d3f88d0ad6cb8ac3007f1a6fa5c6f19af64b55ca170bfa1edf",
|
||||||
|
"sha256:793b4e24db2e8742ca6423d3fde8396db336698c55cd34b660663ee9e45ed37f",
|
||||||
|
"sha256:798232c92e7665fe82ac085f9d8e8ca98826f8e27859d9a96b41d519ecd2e49a",
|
||||||
|
"sha256:81d09caa7b27ef4e61cb7d8fbf1714f5aec1c6b6c5270ee53504981e6e9121ad",
|
||||||
|
"sha256:8ab74c06ffdab957d7670c2a5a6e1a70181cd10b727cd788c4dd9005b6a8acd9",
|
||||||
|
"sha256:8eb0908e954d093b02a543dc963984d6e99ad2b5e36503d8a0aaf040505f747d",
|
||||||
|
"sha256:90b9e29824800e90c84e4022dd5cc16eb2d9605ee13f05d47641eb183cd73d45",
|
||||||
|
"sha256:9797a6c8fe16f25749b371c02e2ade0efb51155e767a971c61734b1bf6293994",
|
||||||
|
"sha256:9d2455fbf44c914840c793e89aa82d0e1763a14253a000743719ae5946814b2d",
|
||||||
|
"sha256:9d3bea1c75f8c53ee4d505c3e67d8c158ad4df0d83170605b50b64025917f338",
|
||||||
|
"sha256:9e2ec1e921fd07c7cda7962bad283acc2f2a9ccc1b971ee4b216b75fad6f0463",
|
||||||
|
"sha256:9e91179a242bbc99be65e139e30690e081fe6cb91a8e77faf4c409653de39451",
|
||||||
|
"sha256:a0eaa93d054751ee9964afa21c06247779b90440ca41d184aeb5d410f20ff591",
|
||||||
|
"sha256:a2c405445c79c3f5a124573a051062300936b0281fee57637e706453e452746c",
|
||||||
|
"sha256:aa7e402ce11f0885305bfb6afb3434b3cd8f53b563ac065452d9d5654c7b86fd",
|
||||||
|
"sha256:aff76a55a8aa8364d25400a210a65ff59d0168e0b4285ba6bf2bd83cf675ba32",
|
||||||
|
"sha256:b09b86b27a064c9624d0a6c54da01c1beaf5b6cadfa609cf63789b1d08a797b9",
|
||||||
|
"sha256:b14f16f94cbc61215115b9b1236f9c18403c15dd3c52cf629072afa9d54c1cbf",
|
||||||
|
"sha256:b50811d664d392f02f7761621303eba9d1b056fb1868c8cdf4231279645c25f5",
|
||||||
|
"sha256:b7bc2176354defba3edc2b9a777744462da2f8e921fbaf61e52acb95bafa9828",
|
||||||
|
"sha256:c78e1b00a87ce43bb37642c0812315b411e856a905d58d597750eb79802aaaa3",
|
||||||
|
"sha256:c83341b89884e2b2e55886e8fbbf37c3fa5efd6c8907124aeb72f285ae5696e5",
|
||||||
|
"sha256:ca2870d5d10d8726a27396d3ca4cf7976cec0f3cb706debe88e3a5bd4610f7d2",
|
||||||
|
"sha256:ccce24b7ad89adb5a1e34a6ba96ac2530046763912806ad4c247356a8f33a67b",
|
||||||
|
"sha256:cd5e14fbf22a87321b24c88669aad3a51ec052eb145315b3da3b7e3cc105b9a2",
|
||||||
|
"sha256:ce49c67f4ea0609933d01c0731b34b8695a7a748d6c8d186f95e7d085d2fe475",
|
||||||
|
"sha256:d33891be6df59d93df4d846640f0e46f1a807339f09e79a8040bc887bdcd7ed3",
|
||||||
|
"sha256:d3b2348a78bc939b4fed6552abfd2e7988e0f81443ef3911a4b8498ca084f6eb",
|
||||||
|
"sha256:d886f5d353333b4771d21267c7ecc75b710f1a73d72d03ca06df49b09015a9ef",
|
||||||
|
"sha256:d93480005693d247f8346bc8ee28c72a2191bdf1f6b5db469c096c0c867ac015",
|
||||||
|
"sha256:dc1a390a82755a8c26c9964d457d4c9cbec5405896cba94cf51f36ea0d855002",
|
||||||
|
"sha256:dd78700f5788ae180b5ee8902c6aea5a5726bac7c364b202b4b3e3ba2d293170",
|
||||||
|
"sha256:e46f38133e5a060d46bd630faa4d9fa0202377495df1f068a8299fd78c84de84",
|
||||||
|
"sha256:e4b878386c4bf293578b48fc570b84ecfe477d3b77ba39a6e87150af77f40c57",
|
||||||
|
"sha256:f0d0591a0aeaefdaf9a5e545e7485f89910c977087e7de2b6c388aec32011e9f",
|
||||||
|
"sha256:fdcbb4068117dfd9ce0138d068ac512843c52295ed996ae6dd1faf537b6dbc27",
|
||||||
|
"sha256:ff61bfd9253c3915e6d41c651d5f962da23eda633cf02262990094a18a55371a"
|
||||||
|
],
|
||||||
|
"version": "==10.3.0"
|
||||||
|
},
|
||||||
|
"platformdirs": {
|
||||||
|
"hashes": [
|
||||||
|
"sha256:2d7a1657e36a80ea911db832a8a6ece5ee53d8de21edd5cc5879af6530b1bfee",
|
||||||
|
"sha256:38b7b51f512eed9e84a22788b4bce1de17c0adb134d6becb09836e37d8654cd3"
|
||||||
|
],
|
||||||
|
"markers": "python_version >= '3.8'",
|
||||||
|
"version": "==4.2.2"
|
||||||
|
},
|
||||||
|
"pycparser": {
|
||||||
|
"hashes": [
|
||||||
|
"sha256:491c8be9c040f5390f5bf44a5b07752bd07f56edf992381b05c701439eec10f6",
|
||||||
|
"sha256:c3702b6d3dd8c7abc1afa565d7e63d53a1d0bd86cdc24edd75470f4de499cfcc"
|
||||||
|
],
|
||||||
|
"markers": "python_version >= '3.8'",
|
||||||
|
"version": "==2.22"
|
||||||
|
},
|
||||||
|
"pygments": {
|
||||||
|
"hashes": [
|
||||||
|
"sha256:786ff802f32e91311bff3889f6e9a86e81505fe99f2735bb6d60ae0c5004f199",
|
||||||
|
"sha256:b8e6aca0523f3ab76fee51799c488e38782ac06eafcf95e7ba832985c8e7b13a"
|
||||||
|
],
|
||||||
|
"markers": "python_version >= '3.8'",
|
||||||
|
"version": "==2.18.0"
|
||||||
|
},
|
||||||
|
"pymdown-extensions": {
|
||||||
|
"hashes": [
|
||||||
|
"sha256:3ab1db5c9e21728dabf75192d71471f8e50f216627e9a1fa9535ecb0231b9940",
|
||||||
|
"sha256:f938326115884f48c6059c67377c46cf631c733ef3629b6eed1349989d1b30cb"
|
||||||
|
],
|
||||||
|
"markers": "python_version >= '3.8'",
|
||||||
|
"version": "==10.8.1"
|
||||||
|
},
|
||||||
|
"python-dateutil": {
|
||||||
|
"hashes": [
|
||||||
|
"sha256:37dd54208da7e1cd875388217d5e00ebd4179249f90fb72437e91a35459a0ad3",
|
||||||
|
"sha256:a8b2bc7bffae282281c8140a97d3aa9c14da0b136dfe83f850eea9a5f7470427"
|
||||||
|
],
|
||||||
|
"markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3'",
|
||||||
|
"version": "==2.9.0.post0"
|
||||||
|
},
|
||||||
|
"pytz": {
|
||||||
|
"hashes": [
|
||||||
|
"sha256:2a29735ea9c18baf14b448846bde5a48030ed267578472d8955cd0e7443a9812",
|
||||||
|
"sha256:328171f4e3623139da4983451950b28e95ac706e13f3f2630a879749e7a8b319"
|
||||||
|
],
|
||||||
|
"markers": "python_version < '3.9'",
|
||||||
|
"version": "==2024.1"
|
||||||
|
},
|
||||||
|
"pyyaml": {
|
||||||
|
"hashes": [
|
||||||
|
"sha256:04ac92ad1925b2cff1db0cfebffb6ffc43457495c9b3c39d3fcae417d7125dc5",
|
||||||
|
"sha256:062582fca9fabdd2c8b54a3ef1c978d786e0f6b3a1510e0ac93ef59e0ddae2bc",
|
||||||
|
"sha256:0d3304d8c0adc42be59c5f8a4d9e3d7379e6955ad754aa9d6ab7a398b59dd1df",
|
||||||
|
"sha256:1635fd110e8d85d55237ab316b5b011de701ea0f29d07611174a1b42f1444741",
|
||||||
|
"sha256:184c5108a2aca3c5b3d3bf9395d50893a7ab82a38004c8f61c258d4428e80206",
|
||||||
|
"sha256:18aeb1bf9a78867dc38b259769503436b7c72f7a1f1f4c93ff9a17de54319b27",
|
||||||
|
"sha256:1d4c7e777c441b20e32f52bd377e0c409713e8bb1386e1099c2415f26e479595",
|
||||||
|
"sha256:1e2722cc9fbb45d9b87631ac70924c11d3a401b2d7f410cc0e3bbf249f2dca62",
|
||||||
|
"sha256:1fe35611261b29bd1de0070f0b2f47cb6ff71fa6595c077e42bd0c419fa27b98",
|
||||||
|
"sha256:28c119d996beec18c05208a8bd78cbe4007878c6dd15091efb73a30e90539696",
|
||||||
|
"sha256:326c013efe8048858a6d312ddd31d56e468118ad4cdeda36c719bf5bb6192290",
|
||||||
|
"sha256:40df9b996c2b73138957fe23a16a4f0ba614f4c0efce1e9406a184b6d07fa3a9",
|
||||||
|
"sha256:42f8152b8dbc4fe7d96729ec2b99c7097d656dc1213a3229ca5383f973a5ed6d",
|
||||||
|
"sha256:49a183be227561de579b4a36efbb21b3eab9651dd81b1858589f796549873dd6",
|
||||||
|
"sha256:4fb147e7a67ef577a588a0e2c17b6db51dda102c71de36f8549b6816a96e1867",
|
||||||
|
"sha256:50550eb667afee136e9a77d6dc71ae76a44df8b3e51e41b77f6de2932bfe0f47",
|
||||||
|
"sha256:510c9deebc5c0225e8c96813043e62b680ba2f9c50a08d3724c7f28a747d1486",
|
||||||
|
"sha256:5773183b6446b2c99bb77e77595dd486303b4faab2b086e7b17bc6bef28865f6",
|
||||||
|
"sha256:596106435fa6ad000c2991a98fa58eeb8656ef2325d7e158344fb33864ed87e3",
|
||||||
|
"sha256:6965a7bc3cf88e5a1c3bd2e0b5c22f8d677dc88a455344035f03399034eb3007",
|
||||||
|
"sha256:69b023b2b4daa7548bcfbd4aa3da05b3a74b772db9e23b982788168117739938",
|
||||||
|
"sha256:6c22bec3fbe2524cde73d7ada88f6566758a8f7227bfbf93a408a9d86bcc12a0",
|
||||||
|
"sha256:704219a11b772aea0d8ecd7058d0082713c3562b4e271b849ad7dc4a5c90c13c",
|
||||||
|
"sha256:7e07cbde391ba96ab58e532ff4803f79c4129397514e1413a7dc761ccd755735",
|
||||||
|
"sha256:81e0b275a9ecc9c0c0c07b4b90ba548307583c125f54d5b6946cfee6360c733d",
|
||||||
|
"sha256:855fb52b0dc35af121542a76b9a84f8d1cd886ea97c84703eaa6d88e37a2ad28",
|
||||||
|
"sha256:8d4e9c88387b0f5c7d5f281e55304de64cf7f9c0021a3525bd3b1c542da3b0e4",
|
||||||
|
"sha256:9046c58c4395dff28dd494285c82ba00b546adfc7ef001486fbf0324bc174fba",
|
||||||
|
"sha256:9eb6caa9a297fc2c2fb8862bc5370d0303ddba53ba97e71f08023b6cd73d16a8",
|
||||||
|
"sha256:a08c6f0fe150303c1c6b71ebcd7213c2858041a7e01975da3a99aed1e7a378ef",
|
||||||
|
"sha256:a0cd17c15d3bb3fa06978b4e8958dcdc6e0174ccea823003a106c7d4d7899ac5",
|
||||||
|
"sha256:afd7e57eddb1a54f0f1a974bc4391af8bcce0b444685d936840f125cf046d5bd",
|
||||||
|
"sha256:b1275ad35a5d18c62a7220633c913e1b42d44b46ee12554e5fd39c70a243d6a3",
|
||||||
|
"sha256:b786eecbdf8499b9ca1d697215862083bd6d2a99965554781d0d8d1ad31e13a0",
|
||||||
|
"sha256:ba336e390cd8e4d1739f42dfe9bb83a3cc2e80f567d8805e11b46f4a943f5515",
|
||||||
|
"sha256:baa90d3f661d43131ca170712d903e6295d1f7a0f595074f151c0aed377c9b9c",
|
||||||
|
"sha256:bc1bf2925a1ecd43da378f4db9e4f799775d6367bdb94671027b73b393a7c42c",
|
||||||
|
"sha256:bd4af7373a854424dabd882decdc5579653d7868b8fb26dc7d0e99f823aa5924",
|
||||||
|
"sha256:bf07ee2fef7014951eeb99f56f39c9bb4af143d8aa3c21b1677805985307da34",
|
||||||
|
"sha256:bfdf460b1736c775f2ba9f6a92bca30bc2095067b8a9d77876d1fad6cc3b4a43",
|
||||||
|
"sha256:c8098ddcc2a85b61647b2590f825f3db38891662cfc2fc776415143f599bb859",
|
||||||
|
"sha256:d2b04aac4d386b172d5b9692e2d2da8de7bfb6c387fa4f801fbf6fb2e6ba4673",
|
||||||
|
"sha256:d483d2cdf104e7c9fa60c544d92981f12ad66a457afae824d146093b8c294c54",
|
||||||
|
"sha256:d858aa552c999bc8a8d57426ed01e40bef403cd8ccdd0fc5f6f04a00414cac2a",
|
||||||
|
"sha256:e7d73685e87afe9f3b36c799222440d6cf362062f78be1013661b00c5c6f678b",
|
||||||
|
"sha256:f003ed9ad21d6a4713f0a9b5a7a0a79e08dd0f221aff4525a2be4c346ee60aab",
|
||||||
|
"sha256:f22ac1c3cac4dbc50079e965eba2c1058622631e526bd9afd45fedd49ba781fa",
|
||||||
|
"sha256:faca3bdcf85b2fc05d06ff3fbc1f83e1391b3e724afa3feba7d13eeab355484c",
|
||||||
|
"sha256:fca0e3a251908a499833aa292323f32437106001d436eca0e6e7833256674585",
|
||||||
|
"sha256:fd1592b3fdf65fff2ad0004b5e363300ef59ced41c2e6b3a99d4089fa8c5435d",
|
||||||
|
"sha256:fd66fc5d0da6d9815ba2cebeb4205f95818ff4b79c3ebe268e75d961704af52f"
|
||||||
|
],
|
||||||
|
"markers": "python_version >= '3.6'",
|
||||||
|
"version": "==6.0.1"
|
||||||
|
},
|
||||||
|
"pyyaml-env-tag": {
|
||||||
|
"hashes": [
|
||||||
|
"sha256:70092675bda14fdec33b31ba77e7543de9ddc88f2e5b99160396572d11525bdb",
|
||||||
|
"sha256:af31106dec8a4d68c60207c1886031cbf839b68aa7abccdb19868200532c2069"
|
||||||
|
],
|
||||||
|
"markers": "python_version >= '3.6'",
|
||||||
|
"version": "==0.1"
|
||||||
|
},
|
||||||
|
"regex": {
|
||||||
|
"hashes": [
|
||||||
|
"sha256:0721931ad5fe0dda45d07f9820b90b2148ccdd8e45bb9e9b42a146cb4f695649",
|
||||||
|
"sha256:10002e86e6068d9e1c91eae8295ef690f02f913c57db120b58fdd35a6bb1af35",
|
||||||
|
"sha256:10e4ce0dca9ae7a66e6089bb29355d4432caed736acae36fef0fdd7879f0b0cb",
|
||||||
|
"sha256:119af6e56dce35e8dfb5222573b50c89e5508d94d55713c75126b753f834de68",
|
||||||
|
"sha256:1337b7dbef9b2f71121cdbf1e97e40de33ff114801263b275aafd75303bd62b5",
|
||||||
|
"sha256:13cdaf31bed30a1e1c2453ef6015aa0983e1366fad2667657dbcac7b02f67133",
|
||||||
|
"sha256:1595f2d10dff3d805e054ebdc41c124753631b6a471b976963c7b28543cf13b0",
|
||||||
|
"sha256:16093f563098448ff6b1fa68170e4acbef94e6b6a4e25e10eae8598bb1694b5d",
|
||||||
|
"sha256:1878b8301ed011704aea4c806a3cadbd76f84dece1ec09cc9e4dc934cfa5d4da",
|
||||||
|
"sha256:19068a6a79cf99a19ccefa44610491e9ca02c2be3305c7760d3831d38a467a6f",
|
||||||
|
"sha256:19dfb1c504781a136a80ecd1fff9f16dddf5bb43cec6871778c8a907a085bb3d",
|
||||||
|
"sha256:1b5269484f6126eee5e687785e83c6b60aad7663dafe842b34691157e5083e53",
|
||||||
|
"sha256:1c1c174d6ec38d6c8a7504087358ce9213d4332f6293a94fbf5249992ba54efa",
|
||||||
|
"sha256:2431b9e263af1953c55abbd3e2efca67ca80a3de8a0437cb58e2421f8184717a",
|
||||||
|
"sha256:287eb7f54fc81546346207c533ad3c2c51a8d61075127d7f6d79aaf96cdee890",
|
||||||
|
"sha256:2b4c884767504c0e2401babe8b5b7aea9148680d2e157fa28f01529d1f7fcf67",
|
||||||
|
"sha256:35cb514e137cb3488bce23352af3e12fb0dbedd1ee6e60da053c69fb1b29cc6c",
|
||||||
|
"sha256:391d7f7f1e409d192dba8bcd42d3e4cf9e598f3979cdaed6ab11288da88cb9f2",
|
||||||
|
"sha256:3ad070b823ca5890cab606c940522d05d3d22395d432f4aaaf9d5b1653e47ced",
|
||||||
|
"sha256:3cd7874d57f13bf70078f1ff02b8b0aa48d5b9ed25fc48547516c6aba36f5741",
|
||||||
|
"sha256:3e507ff1e74373c4d3038195fdd2af30d297b4f0950eeda6f515ae3d84a1770f",
|
||||||
|
"sha256:455705d34b4154a80ead722f4f185b04c4237e8e8e33f265cd0798d0e44825fa",
|
||||||
|
"sha256:4a605586358893b483976cffc1723fb0f83e526e8f14c6e6614e75919d9862cf",
|
||||||
|
"sha256:4babf07ad476aaf7830d77000874d7611704a7fcf68c9c2ad151f5d94ae4bfc4",
|
||||||
|
"sha256:4eee78a04e6c67e8391edd4dad3279828dd66ac4b79570ec998e2155d2e59fd5",
|
||||||
|
"sha256:5397de3219a8b08ae9540c48f602996aa6b0b65d5a61683e233af8605c42b0f2",
|
||||||
|
"sha256:5b5467acbfc153847d5adb21e21e29847bcb5870e65c94c9206d20eb4e99a384",
|
||||||
|
"sha256:5eaa7ddaf517aa095fa8da0b5015c44d03da83f5bd49c87961e3c997daed0de7",
|
||||||
|
"sha256:632b01153e5248c134007209b5c6348a544ce96c46005d8456de1d552455b014",
|
||||||
|
"sha256:64c65783e96e563103d641760664125e91bd85d8e49566ee560ded4da0d3e704",
|
||||||
|
"sha256:64f18a9a3513a99c4bef0e3efd4c4a5b11228b48aa80743be822b71e132ae4f5",
|
||||||
|
"sha256:673b5a6da4557b975c6c90198588181029c60793835ce02f497ea817ff647cb2",
|
||||||
|
"sha256:68811ab14087b2f6e0fc0c2bae9ad689ea3584cad6917fc57be6a48bbd012c49",
|
||||||
|
"sha256:6e8d717bca3a6e2064fc3a08df5cbe366369f4b052dcd21b7416e6d71620dca1",
|
||||||
|
"sha256:71a455a3c584a88f654b64feccc1e25876066c4f5ef26cd6dd711308aa538694",
|
||||||
|
"sha256:72d7a99cd6b8f958e85fc6ca5b37c4303294954eac1376535b03c2a43eb72629",
|
||||||
|
"sha256:7b59138b219ffa8979013be7bc85bb60c6f7b7575df3d56dc1e403a438c7a3f6",
|
||||||
|
"sha256:7dbe2467273b875ea2de38ded4eba86cbcbc9a1a6d0aa11dcf7bd2e67859c435",
|
||||||
|
"sha256:833616ddc75ad595dee848ad984d067f2f31be645d603e4d158bba656bbf516c",
|
||||||
|
"sha256:87e2a9c29e672fc65523fb47a90d429b70ef72b901b4e4b1bd42387caf0d6835",
|
||||||
|
"sha256:8fe45aa3f4aa57faabbc9cb46a93363edd6197cbc43523daea044e9ff2fea83e",
|
||||||
|
"sha256:9e717956dcfd656f5055cc70996ee2cc82ac5149517fc8e1b60261b907740201",
|
||||||
|
"sha256:9efa1a32ad3a3ea112224897cdaeb6aa00381627f567179c0314f7b65d354c62",
|
||||||
|
"sha256:9ff11639a8d98969c863d4617595eb5425fd12f7c5ef6621a4b74b71ed8726d5",
|
||||||
|
"sha256:a094801d379ab20c2135529948cb84d417a2169b9bdceda2a36f5f10977ebc16",
|
||||||
|
"sha256:a0981022dccabca811e8171f913de05720590c915b033b7e601f35ce4ea7019f",
|
||||||
|
"sha256:a0bd000c6e266927cb7a1bc39d55be95c4b4f65c5be53e659537537e019232b1",
|
||||||
|
"sha256:a32b96f15c8ab2e7d27655969a23895eb799de3665fa94349f3b2fbfd547236f",
|
||||||
|
"sha256:a81e3cfbae20378d75185171587cbf756015ccb14840702944f014e0d93ea09f",
|
||||||
|
"sha256:ac394ff680fc46b97487941f5e6ae49a9f30ea41c6c6804832063f14b2a5a145",
|
||||||
|
"sha256:ada150c5adfa8fbcbf321c30c751dc67d2f12f15bd183ffe4ec7cde351d945b3",
|
||||||
|
"sha256:b2b6f1b3bb6f640c1a92be3bbfbcb18657b125b99ecf141fb3310b5282c7d4ed",
|
||||||
|
"sha256:b802512f3e1f480f41ab5f2cfc0e2f761f08a1f41092d6718868082fc0d27143",
|
||||||
|
"sha256:ba68168daedb2c0bab7fd7e00ced5ba90aebf91024dea3c88ad5063c2a562cca",
|
||||||
|
"sha256:bfc4f82cabe54f1e7f206fd3d30fda143f84a63fe7d64a81558d6e5f2e5aaba9",
|
||||||
|
"sha256:c0c18345010870e58238790a6779a1219b4d97bd2e77e1140e8ee5d14df071aa",
|
||||||
|
"sha256:c3bea0ba8b73b71b37ac833a7f3fd53825924165da6a924aec78c13032f20850",
|
||||||
|
"sha256:c486b4106066d502495b3025a0a7251bf37ea9540433940a23419461ab9f2a80",
|
||||||
|
"sha256:c49e15eac7c149f3670b3e27f1f28a2c1ddeccd3a2812cba953e01be2ab9b5fe",
|
||||||
|
"sha256:c6a2b494a76983df8e3d3feea9b9ffdd558b247e60b92f877f93a1ff43d26656",
|
||||||
|
"sha256:cab12877a9bdafde5500206d1020a584355a97884dfd388af3699e9137bf7388",
|
||||||
|
"sha256:cac27dcaa821ca271855a32188aa61d12decb6fe45ffe3e722401fe61e323cd1",
|
||||||
|
"sha256:cdd09d47c0b2efee9378679f8510ee6955d329424c659ab3c5e3a6edea696294",
|
||||||
|
"sha256:cf2430df4148b08fb4324b848672514b1385ae3807651f3567871f130a728cc3",
|
||||||
|
"sha256:d0a3d8d6acf0c78a1fff0e210d224b821081330b8524e3e2bc5a68ef6ab5803d",
|
||||||
|
"sha256:d0c0c0003c10f54a591d220997dd27d953cd9ccc1a7294b40a4be5312be8797b",
|
||||||
|
"sha256:d1f059a4d795e646e1c37665b9d06062c62d0e8cc3c511fe01315973a6542e40",
|
||||||
|
"sha256:d347a741ea871c2e278fde6c48f85136c96b8659b632fb57a7d1ce1872547600",
|
||||||
|
"sha256:d3ee02d9e5f482cc8309134a91eeaacbdd2261ba111b0fef3748eeb4913e6a2c",
|
||||||
|
"sha256:d99ceffa25ac45d150e30bd9ed14ec6039f2aad0ffa6bb87a5936f5782fc1569",
|
||||||
|
"sha256:e38a7d4e8f633a33b4c7350fbd8bad3b70bf81439ac67ac38916c4a86b465456",
|
||||||
|
"sha256:e4682f5ba31f475d58884045c1a97a860a007d44938c4c0895f41d64481edbc9",
|
||||||
|
"sha256:e5bb9425fe881d578aeca0b2b4b3d314ec88738706f66f219c194d67179337cb",
|
||||||
|
"sha256:e64198f6b856d48192bf921421fdd8ad8eb35e179086e99e99f711957ffedd6e",
|
||||||
|
"sha256:e6662686aeb633ad65be2a42b4cb00178b3fbf7b91878f9446075c404ada552f",
|
||||||
|
"sha256:ec54d5afa89c19c6dd8541a133be51ee1017a38b412b1321ccb8d6ddbeb4cf7d",
|
||||||
|
"sha256:f5b1dff3ad008dccf18e652283f5e5339d70bf8ba7c98bf848ac33db10f7bc7a",
|
||||||
|
"sha256:f8ec0c2fea1e886a19c3bee0cd19d862b3aa75dcdfb42ebe8ed30708df64687a",
|
||||||
|
"sha256:f9ebd0a36102fcad2f03696e8af4ae682793a5d30b46c647eaf280d6cfb32796"
|
||||||
|
],
|
||||||
|
"markers": "python_version >= '3.8'",
|
||||||
|
"version": "==2024.5.15"
|
||||||
|
},
|
||||||
|
"requests": {
|
||||||
|
"hashes": [
|
||||||
|
"sha256:dd951ff5ecf3e3b3aa26b40703ba77495dab41da839ae72ef3c8e5d8e2433289",
|
||||||
|
"sha256:fc06670dd0ed212426dfeb94fc1b983d917c4f9847c863f313c9dfaaffb7c23c"
|
||||||
|
],
|
||||||
|
"markers": "python_version >= '3.8'",
|
||||||
|
"version": "==2.32.2"
|
||||||
|
},
|
||||||
|
"six": {
|
||||||
|
"hashes": [
|
||||||
|
"sha256:1e61c37477a1626458e36f7b1d82aa5c9b094fa4802892072e49de9c60c4c926",
|
||||||
|
"sha256:8abb2f1d86890a2dfb989f9a77cfcfd3e47c2a354b01111771326f8aa26e0254"
|
||||||
|
],
|
||||||
|
"markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3'",
|
||||||
|
"version": "==1.16.0"
|
||||||
|
},
|
||||||
|
"smmap": {
|
||||||
|
"hashes": [
|
||||||
|
"sha256:dceeb6c0028fdb6734471eb07c0cd2aae706ccaecab45965ee83f11c8d3b1f62",
|
||||||
|
"sha256:e6d8668fa5f93e706934a62d7b4db19c8d9eb8cf2adbb75ef1b675aa332b69da"
|
||||||
|
],
|
||||||
|
"markers": "python_version >= '3.7'",
|
||||||
|
"version": "==5.0.1"
|
||||||
|
},
|
||||||
|
"termcolor": {
|
||||||
|
"hashes": [
|
||||||
|
"sha256:9297c0df9c99445c2412e832e882a7884038a25617c60cea2ad69488d4040d63",
|
||||||
|
"sha256:aab9e56047c8ac41ed798fa36d892a37aca6b3e9159f3e0c24bc64a9b3ac7b7a"
|
||||||
|
],
|
||||||
|
"markers": "python_version >= '3.8'",
|
||||||
|
"version": "==2.4.0"
|
||||||
|
},
|
||||||
|
"tinycss2": {
|
||||||
|
"hashes": [
|
||||||
|
"sha256:152f9acabd296a8375fbca5b84c961ff95971fcfc32e79550c8df8e29118c54d",
|
||||||
|
"sha256:54a8dbdffb334d536851be0226030e9505965bb2f30f21a4a82c55fb2a80fae7"
|
||||||
|
],
|
||||||
|
"markers": "python_version >= '3.8'",
|
||||||
|
"version": "==1.3.0"
|
||||||
|
},
|
||||||
|
"urllib3": {
|
||||||
|
"hashes": [
|
||||||
|
"sha256:450b20ec296a467077128bff42b73080516e71b56ff59a60a02bef2232c4fa9d",
|
||||||
|
"sha256:d0570876c61ab9e520d776c38acbbb5b05a776d3f9ff98a5c8fd5162a444cf19"
|
||||||
|
],
|
||||||
|
"markers": "python_version >= '3.8'",
|
||||||
|
"version": "==2.2.1"
|
||||||
|
},
|
||||||
|
"watchdog": {
|
||||||
|
"hashes": [
|
||||||
|
"sha256:11e12fafb13372e18ca1bbf12d50f593e7280646687463dd47730fd4f4d5d257",
|
||||||
|
"sha256:2895bf0518361a9728773083908801a376743bcc37dfa252b801af8fd281b1ca",
|
||||||
|
"sha256:39cb34b1f1afbf23e9562501673e7146777efe95da24fab5707b88f7fb11649b",
|
||||||
|
"sha256:45cc09cc4c3b43fb10b59ef4d07318d9a3ecdbff03abd2e36e77b6dd9f9a5c85",
|
||||||
|
"sha256:4986db5e8880b0e6b7cd52ba36255d4793bf5cdc95bd6264806c233173b1ec0b",
|
||||||
|
"sha256:5369136a6474678e02426bd984466343924d1df8e2fd94a9b443cb7e3aa20d19",
|
||||||
|
"sha256:557ba04c816d23ce98a06e70af6abaa0485f6d94994ec78a42b05d1c03dcbd50",
|
||||||
|
"sha256:6a4db54edea37d1058b08947c789a2354ee02972ed5d1e0dca9b0b820f4c7f92",
|
||||||
|
"sha256:6a80d5cae8c265842c7419c560b9961561556c4361b297b4c431903f8c33b269",
|
||||||
|
"sha256:6a9c71a0b02985b4b0b6d14b875a6c86ddea2fdbebd0c9a720a806a8bbffc69f",
|
||||||
|
"sha256:6c47bdd680009b11c9ac382163e05ca43baf4127954c5f6d0250e7d772d2b80c",
|
||||||
|
"sha256:6e949a8a94186bced05b6508faa61b7adacc911115664ccb1923b9ad1f1ccf7b",
|
||||||
|
"sha256:73c7a935e62033bd5e8f0da33a4dcb763da2361921a69a5a95aaf6c93aa03a87",
|
||||||
|
"sha256:76ad8484379695f3fe46228962017a7e1337e9acadafed67eb20aabb175df98b",
|
||||||
|
"sha256:8350d4055505412a426b6ad8c521bc7d367d1637a762c70fdd93a3a0d595990b",
|
||||||
|
"sha256:87e9df830022488e235dd601478c15ad73a0389628588ba0b028cb74eb72fed8",
|
||||||
|
"sha256:8f9a542c979df62098ae9c58b19e03ad3df1c9d8c6895d96c0d51da17b243b1c",
|
||||||
|
"sha256:8fec441f5adcf81dd240a5fe78e3d83767999771630b5ddfc5867827a34fa3d3",
|
||||||
|
"sha256:9a03e16e55465177d416699331b0f3564138f1807ecc5f2de9d55d8f188d08c7",
|
||||||
|
"sha256:ba30a896166f0fee83183cec913298151b73164160d965af2e93a20bbd2ab605",
|
||||||
|
"sha256:c17d98799f32e3f55f181f19dd2021d762eb38fdd381b4a748b9f5a36738e935",
|
||||||
|
"sha256:c522392acc5e962bcac3b22b9592493ffd06d1fc5d755954e6be9f4990de932b",
|
||||||
|
"sha256:d0f9bd1fd919134d459d8abf954f63886745f4660ef66480b9d753a7c9d40927",
|
||||||
|
"sha256:d18d7f18a47de6863cd480734613502904611730f8def45fc52a5d97503e5101",
|
||||||
|
"sha256:d31481ccf4694a8416b681544c23bd271f5a123162ab603c7d7d2dd7dd901a07",
|
||||||
|
"sha256:e3e7065cbdabe6183ab82199d7a4f6b3ba0a438c5a512a68559846ccb76a78ec",
|
||||||
|
"sha256:eed82cdf79cd7f0232e2fdc1ad05b06a5e102a43e331f7d041e5f0e0a34a51c4",
|
||||||
|
"sha256:f970663fa4f7e80401a7b0cbeec00fa801bf0287d93d48368fc3e6fa32716245",
|
||||||
|
"sha256:f9b2fdca47dc855516b2d66eef3c39f2672cbf7e7a42e7e67ad2cbfcd6ba107d"
|
||||||
|
],
|
||||||
|
"markers": "python_version >= '3.8'",
|
||||||
|
"version": "==4.0.0"
|
||||||
|
},
|
||||||
|
"webencodings": {
|
||||||
|
"hashes": [
|
||||||
|
"sha256:a0af1213f3c2226497a97e2b3aa01a7e4bee4f403f95be16fc9acd2947514a78",
|
||||||
|
"sha256:b36a1c245f2d304965eb4e0a82848379241dc04b865afcc4aab16748587e1923"
|
||||||
|
],
|
||||||
|
"version": "==0.5.1"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"develop": {
|
||||||
|
"scour": {
|
||||||
|
"hashes": [
|
||||||
|
"sha256:6881ec26660c130c5ecd996ac6f6b03939dd574198f50773f2508b81a68e0daf"
|
||||||
|
],
|
||||||
|
"index": "pypi",
|
||||||
|
"version": "==0.38.2"
|
||||||
|
},
|
||||||
|
"six": {
|
||||||
|
"hashes": [
|
||||||
|
"sha256:1e61c37477a1626458e36f7b1d82aa5c9b094fa4802892072e49de9c60c4c926",
|
||||||
|
"sha256:8abb2f1d86890a2dfb989f9a77cfcfd3e47c2a354b01111771326f8aa26e0254"
|
||||||
|
],
|
||||||
|
"markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3'",
|
||||||
|
"version": "==1.16.0"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
653
README.md
653
README.md
@ -1,60 +1,617 @@
|
|||||||
|
<!-- markdownlint-disable MD041 MD045 -->
|
||||||
<div align="center">
|
<div align="center">
|
||||||
<a href="https://privacyguides.org">
|
<a href="https://www.privacyguides.org">
|
||||||
<img src="/assets/img/layout/privacy-guides-logo.svg" width="500px" alt="Privacy Guides" />
|
<picture>
|
||||||
|
<source media="(prefers-color-scheme: dark)" srcset="https://raw.githubusercontent.com/privacyguides/brand/67166ed8b641d8ac1837d0b75329e02ed4056704/logos/svg/logo/privacy-guides-logo-dark.svg">
|
||||||
|
<img alt="Privacy Guides" width="500px" src="https://raw.githubusercontent.com/privacyguides/brand/67166ed8b641d8ac1837d0b75329e02ed4056704/logos/svg/logo/privacy-guides-logo.svg">
|
||||||
|
</picture>
|
||||||
</a>
|
</a>
|
||||||
|
|
||||||
<p><em>Your central privacy and security resource to protect yourself online.</em></p>
|
<p><em>Your central privacy and security resource to protect yourself online.</em></p>
|
||||||
|
|
||||||
<p><a href="https://www.privacyguides.org">
|
<p><a href="https://discuss.privacyguides.net">
|
||||||
<img src="https://img.shields.io/uptimerobot/status/m786935055-1117e0819f5c23c651d46a17?label=website%20status">
|
<img src="https://img.shields.io/discourse/users?label=Join%20our%20forum&logo=discourse&server=https%3A%2F%2Fdiscuss.privacyguides.net&style=social"></a>
|
||||||
</a>
|
|
||||||
<a href="https://opencollective.com/privacyguides">
|
|
||||||
<img src="https://img.shields.io/opencollective/all/privacyguides">
|
|
||||||
</a></p>
|
|
||||||
|
|
||||||
<p><a href="https://www.reddit.com/r/PrivacyGuides/">
|
|
||||||
<img src="https://img.shields.io/reddit/subreddit-subscribers/PrivacyGuides?label=Subscribe%20to%20r%2FPrivacyGuides&style=social">
|
|
||||||
</a>
|
|
||||||
<a href="https://twitter.com/privacy_guides">
|
|
||||||
<img src="https://img.shields.io/twitter/follow/privacy_guides?style=social">
|
|
||||||
</a>
|
|
||||||
<a href="https://github.com/privacyguides/privacyguides.org/stargazers">
|
<a href="https://github.com/privacyguides/privacyguides.org/stargazers">
|
||||||
<img src="https://img.shields.io/github/stars/privacyguides?style=social">
|
<img src="https://img.shields.io/github/stars/privacyguides?style=social"></a>
|
||||||
</a></p>
|
<a href="https://mastodon.neat.computer/@privacyguides">
|
||||||
|
<img src="https://img.shields.io/mastodon/follow/109298532634697668?domain=https%3A%2F%2Fmastodon.neat.computer&label=Follow%20%40privacyguides%40neat.computer&style=social"></a>
|
||||||
|
<a href="https://lemmy.one/c/privacyguides">
|
||||||
|
<img src="https://img.shields.io/lemmy/privacyguides%40lemmy.one?style=social"></a></p>
|
||||||
|
|
||||||
<p><a href="https://app.netlify.com/sites/privacyguides/deploys">
|
<p><a href="https://github.com/privacyguides/privacyguides.org/pulls">
|
||||||
<img src="https://img.shields.io/netlify/f40bcb64-a6ed-4650-9ca6-7d3ac293d2be">
|
<img src="https://img.shields.io/github/issues-pr-raw/privacyguides/privacyguides.org"></a>
|
||||||
</a>
|
|
||||||
<a href="https://github.com/privacyguides/privacyguides.org/issues">
|
|
||||||
<img src="https://img.shields.io/github/issues-raw/privacyguides/privacyguides.org">
|
|
||||||
</a>
|
|
||||||
<a href="https://github.com/privacyguides/privacyguides.org/issues?q=is%3Aissue+is%3Aclosed">
|
|
||||||
<img src="https://img.shields.io/github/issues-closed-raw/privacyguides/privacyguides.org">
|
|
||||||
</a>
|
|
||||||
<a href="https://github.com/privacyguides/privacyguides.org/pulls">
|
|
||||||
<img src="https://img.shields.io/github/issues-pr-raw/privacyguides/privacyguides.org">
|
|
||||||
</a>
|
|
||||||
<a href="https://github.com/privacyguides/privacyguides.org/pulls?q=is%3Apr+is%3Aclosed">
|
<a href="https://github.com/privacyguides/privacyguides.org/pulls?q=is%3Apr+is%3Aclosed">
|
||||||
<img src="https://img.shields.io/github/issues-pr-closed-raw/privacyguides/privacyguides.org">
|
<img src="https://img.shields.io/github/issues-pr-closed-raw/privacyguides/privacyguides.org"></a>
|
||||||
</a>
|
<a href="https://github.com/privacyguides/privacyguides.org/graphs/contributors">
|
||||||
<a href="https://github.com/privacytools/privacytools.io/issues">
|
<img src="https://img.shields.io/github/commit-activity/m/privacyguides/privacyguides.org"></a>
|
||||||
<img src="https://img.shields.io/github/issues/privacytools/privacytools.io?color=black&label=upstream%20issues">
|
<a href="#contributors">
|
||||||
</a></p>
|
<img src="https://img.shields.io/github/all-contributors/privacyguides/privacyguides.org"></a>
|
||||||
|
<a href="https://github.com/privacyguides/privacyguides.org/releases/latest">
|
||||||
|
<img src="https://img.shields.io/github/release-date/privacyguides/privacyguides.org"></a>
|
||||||
|
<a href="https://github.com/privacyguides/privacyguides.org/releases/latest">
|
||||||
|
<img src="https://img.shields.io/github/commits-since/privacyguides/privacyguides.org/latest"></a>
|
||||||
|
<a href="https://crowdin.com/project/privacyguides">
|
||||||
|
<img src="https://badges.crowdin.net/privacyguides/localized.svg"></a>
|
||||||
|
<a href="https://opencollective.com/privacyguides">
|
||||||
|
<img src="https://img.shields.io/opencollective/all/privacyguides"></a>
|
||||||
|
<a href="https://squidfunk.github.io/mkdocs-material/">
|
||||||
|
<img src="https://img.shields.io/badge/Material_for_MkDocs-526CFE?logo=MaterialForMkDocs&logoColor=white"></a>
|
||||||
|
<a href="https://github.com/privacyguides/privacyguides.org/actions/workflows/publish-release.yml">
|
||||||
|
<img src="https://img.shields.io/github/actions/workflow/status/privacyguides/privacyguides.org/publish-release.yml?label=release"></a></p>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
## About
|
||||||
|
|
||||||
|
**Privacy Guides** is a socially motivated website that provides information for protecting your data security and privacy. Our mission is to inform the public about the value of digital privacy, and global government initiatives which aim to monitor your online activity. We are a non-profit collective operated entirely by volunteer team members and contributors. Our website is free of advertisements and not affiliated with any of the listed providers.
|
||||||
|
|
||||||
|
The current list of team members can be found [here](https://www.privacyguides.org/about/#our-team). Additionally, [many people](#contributors) have made contributions to the project, and you can too!
|
||||||
|
|
||||||
|
*Featured on: [Tweakers](https://tweakers.net/reviews/10568/op-zoek-naar-privacyvriendelijke-tools-niek-de-wilde-van-privacy-guides.html), [The New York Times](https://nytimes.com/wirecutter/guides/online-security-social-media-privacy), and [Wired](https://wired.com/story/firefox-mozilla-2022)*
|
||||||
|
|
||||||
|
## Contributing
|
||||||
|
|
||||||
|
- 💬 [Start a discussion or suggest an idea](https://discuss.privacyguides.net)
|
||||||
|
- 💖 [Sponsor the project](https://github.com/sponsors/privacyguides)
|
||||||
|
- 🈴 [Help translate the site](https://crowdin.com/project/privacyguides) [[Matrix chat](https://matrix.to/#/#pg-i18n:aragon.sh)]
|
||||||
|
- 📝 Edit the site, everything's accessible in this repo
|
||||||
|
- Browse our [open issues](https://github.com/privacyguides/privacyguides.org/issues) to see what needs to be updated
|
||||||
|
- View the list of [approved topics waiting for a PR](https://discuss.privacyguides.net/tag/approved)
|
||||||
|
- Read some writing tips in our [style guide](https://www.privacyguides.org/en/meta/writing-style)
|
||||||
|
|
||||||
|
All contributors to the site are listed [here](#contributors). If you have contributed to the website or project, please [add yourself](https://github.com/privacyguides/privacyguides.org/issues/2524) to the list or ask @jonaharagon to make the change.
|
||||||
|
|
||||||
|
## Mirrors
|
||||||
|
|
||||||
|
- **GitHub Pages:** [privacyguides.github.io/privacyguides.org](https://privacyguides.github.io/privacyguides.org/en/)
|
||||||
|
- **Netlify (AWS):** [illustrious-bavarois-56cf30.netlify.app](https://illustrious-bavarois-56cf30.netlify.app/en/)
|
||||||
|
- **BunnyCDN:** [privacyguides-org-production.b-cdn.net](https://privacyguides-org-production.b-cdn.net/en/)
|
||||||
|
- **Hetzner:** [direct.privacyguides.org](https://direct.privacyguides.org/en/) (discouraged!)
|
||||||
|
|
||||||
|
### Alternative Networks
|
||||||
|
|
||||||
|
> [!NOTE]
|
||||||
|
> Most hidden service providers are not very extensively used or tested, [which is why we strongly recommend Tor](https://www.privacyguides.org/en/tor/). Using other networks could be more likely to endanger your anonymity, so make sure you know what you're doing.
|
||||||
|
|
||||||
|
- **Tor/onion:** [xoe4vn5uwdztif6goazfbmogh6wh5jc4up35bqdflu6bkdc5cas5vjqd.onion](http://www.xoe4vn5uwdztif6goazfbmogh6wh5jc4up35bqdflu6bkdc5cas5vjqd.onion)
|
||||||
|
|
||||||
|
- **IPFS:** `/ipns/ipfs.privacyguides.org` (**not** anonymous)
|
||||||
|
- Please help us out by pinning a copy: [Learn more](https://github.com/privacyguides/webserver/blob/main/ipfs/README.md)
|
||||||
|
- via Cloudflare: [cloudflare-ipfs.com/ipns/ipfs.privacyguides.org](https://cloudflare-ipfs.com/ipns/ipfs.privacyguides.org/en/)
|
||||||
|
- via 4everland: [ipfs-privacyguides-org.ipns.4everland.io](https://ipfs-privacyguides-org.ipns.4everland.io/)
|
||||||
|
- via [@jonaharagon](https://github.com/jonaharagon): [ipfs.jonaharagon.net/ipns/ipfs.privacyguides.org](https://ipfs.jonaharagon.net/ipns/ipfs.privacyguides.org/en/)
|
||||||
|
- via [peer](https://docs.ipfs.tech/how-to/peering-with-content-providers/): `/dnsaddr/node-1.ipfs.jonaharagon.net/p2p/12D3KooWMwqzuApCKxYfo66zq5BrTjCoz9naJ1rrMEBCnwuGGqWB`
|
||||||
|
|
||||||
|
- **I2P:** [privacyguides.i2p](http://privacyguides.i2p/?i2paddresshelper=fvbkmooriuqgssrjvbxu7nrwms5zyhf34r3uuppoakwwsm7ysv6q.b32.i2p)
|
||||||
|
|
||||||
|
- **Yggdrasil:** [http://[200:f3a6:4922:e067:770d:ac57:fcb1:8dbf]](http://[200:f3a6:4922:e067:770d:ac57:fcb1:8dbf]/en/) (**not** anonymous)
|
||||||
|
- via public peer: `tcp://5.161.245.8:45454`
|
||||||
|
|
||||||
|
### Git Mirrors
|
||||||
|
|
||||||
|
[](https://github.com/privacyguides/privacyguides.org)
|
||||||
|
[](https://gitlab.com/privacyguides/privacyguides.org)
|
||||||
|
[](https://codeberg.org/privacyguides/privacyguides.org)
|
||||||
|
[](https://code.privacyguides.dev/privacyguides/privacyguides.org)
|
||||||
|
[](https://git.jonaharagon.net/privacyguides/privacyguides.org)
|
||||||
|
|
||||||
|
## License
|
||||||
|
|
||||||
|
Copyright © 2019 - 2024 [Privacy Guides contributors](#contributors).
|
||||||
|
|
||||||
|
Privacy Guides content is licensed under the [Creative Commons Attribution-ShareAlike 4.0 International Public License](/LICENSE), and the underlying source code used to format and display that content on [www.privacyguides.org](https://www.privacyguides.org) is licensed under the [MIT License](/LICENSE-CODE).
|
||||||
|
|
||||||
|
Generally speaking, **content** can be found in the [`/docs`](/docs), [`/theme/assets/img`](/theme/assets/img) and [`/includes`](/includes) folders; and **source code** and configuration files can be found in the [`/config`](/config) and [`/theme`](/theme) folders, and in the root of this repository. Any source code snippets contained within documentation files are [MIT Licensed](/LICENSE-CODE). Please contact us if you require clarification on any of these terms.
|
||||||
|
|
||||||
|
These licenses do not apply to any work where another license is otherwise noted.
|
||||||
|
|
||||||
|
**Logos** in the [`/theme/assets/img`](/theme/assets/img) folder may not be original works of Privacy Guides and therefore cannot be (re)licensed by us. We believe that these logos obtained from third-party providers are either in the public domain or **fair use**. In a nutshell, legal [fair use doctrine](https://copyright.gov/fair-use/more-info.html) allows the use of copyrighted images in order to identify the subject for purposes of public comment. However, these logos and other images may still be subject to trademark laws in one or more jurisdictions. Before using this content, please ensure that it is used to identify the entity or organization that owns the trademark and that you have the right to use it under the laws which apply in the circumstances of your intended use. *When copying content from this website, you are solely responsible for ensuring that you do not infringe someone else's trademark or copyright.*
|
||||||
|
|
||||||
|
You may comply with our license terms in any reasonable manner, but not in any way that suggests Privacy Guides endorses you or your use. You **may not** use the Privacy Guides branding in your own project without express approval from this project. Privacy Guides's brand trademarks include the "Privacy Guides" wordmark and shield logo.
|
||||||
|
|
||||||
|
When you contribute to this repository you are doing so under the above licenses, and you are granting Privacy Guides a perpetual, worldwide, non-exclusive, transferable, royalty-free, irrevocable license with the right to sublicense such rights through multiple tiers of sublicensees, to reproduce, modify, display, perform and distribute your contribution as part of our project.
|
||||||
|
|
||||||
## Developing
|
## Developing
|
||||||
|
|
||||||
1. Install the version of [Ruby](https://www.ruby-lang.org/en/downloads/) currently specified by [`.ruby-version`](.ruby-version)
|
[](https://codespaces.new/privacyguides/privacyguides.org?devcontainer_path=.devcontainer%2Fdevcontainer.json)
|
||||||
* With [rbenv](https://github.com/rbenv/rbenv) (**recommended!**): `rbenv install`
|
|
||||||
* With [RVM](https://rvm.io): `rvm install "ruby-$(cat .ruby-version)"`
|
Committing to this repository requires [signing your commits](https://docs.github.com/en/authentication/managing-commit-signature-verification/signing-commits) (`git config commit.gpgsign true`) unless you are making edits via the GitHub.com text editor interface. As of August 2022 the preferred signing method is [SSH commit signatures](https://docs.github.com/en/authentication/managing-commit-signature-verification/about-commit-signature-verification#ssh-commit-signature-verification), but GPG signing is also acceptable. You should add your signing key to your GitHub profile.
|
||||||
* [Manually](https://www.ruby-lang.org/en/downloads/)
|
|
||||||
1. Install node.js and npm
|
### With `mkdocs-material`
|
||||||
1. Install [Bundler](https://bundler.io/) v2.2.5:
|
|
||||||
* `gem install bundler:2.2.5`
|
1. Install required packages: `pip install mkdocs-material`
|
||||||
1. Install the required dependencies:
|
2. Run a local preview of the English site: `./run.sh --cmd=mkdocs`
|
||||||
* `bundle install`
|
|
||||||
* `npm install`
|
### With `mkdocs-material-insiders`
|
||||||
1. Build the website (the output can be found in the `_site` directory):
|
|
||||||
* `npm run build`
|
This website uses [`mkdocs-material-insiders`](https://squidfunk.github.io/mkdocs-material/insiders) which offers additional functionality over the open-source `mkdocs-material` project. For obvious reasons we cannot distribute access to the insiders repository.
|
||||||
1. Serve the website locally with live reloading:
|
|
||||||
* `npm run serve`
|
**Team members** should clone the repository with `mkdocs-material-insiders` directly. This method is identical to production:
|
||||||
|
|
||||||
|
1. Clone this repository and submodules: `git clone --recurse-submodules https://github.com/privacyguides/privacyguides.org.git`
|
||||||
|
2. Enable SSH commit verification with our local [`.allowed_signers`](/.allowed_signers) file: `git config gpg.ssh.allowedSignersFile .allowed_signers`
|
||||||
|
3. Install Python **3.12**.
|
||||||
|
4. Install **pipenv**: `pip install pipenv`
|
||||||
|
5. Install dependencies: `pipenv install --dev` (install [Pillow and CairoSVG](https://squidfunk.github.io/mkdocs-material/setup/setting-up-social-cards/#dependencies) as well to generate social cards)
|
||||||
|
6. Serve the site locally: `./run.sh --insiders` (set `CARDS=true` to generate social cards)
|
||||||
|
- The site will be available at `http://localhost:8000`
|
||||||
|
- You can build the site locally with `./run.sh --insiders --build`
|
||||||
|
- This version of the site should be identical to the live, production version
|
||||||
|
|
||||||
|
If you commit to `main` with commits signed with your SSH key, you should add your SSH key to [`.allowed_signers`](/.allowed_signers) in this repo.
|
||||||
|
|
||||||
|
### Local Translated Site Builds
|
||||||
|
|
||||||
|
1. Install the [Crowdin CLI Tool](https://developer.crowdin.com/cli-tool) (`brew install crowdin`)
|
||||||
|
2. Set the `CROWDIN_PERSONAL_TOKEN` environment variable to your Crowdin personal access token
|
||||||
|
3. Run `crowdin download` in the root of this repo
|
||||||
|
4. Serve the site locally: `./run.sh --insiders --lang=fr` (replacing fr with the appropriate language in [/config](/config))
|
||||||
|
|
||||||
|
Translations downloaded from Crowdin are [.gitignore](/.gitignore)'d, so any local changes to the translated site cannot be committed to this repo. Actual modifications need to be made on Crowdin. As an alternative to steps 1-3, you can copy the folders from [privacyguides/i18n](https://github.com/privacyguides/i18n) to the root of this repo to obtain the translated files.
|
||||||
|
|
||||||
|
## Releasing
|
||||||
|
|
||||||
|
It is required to create a GitHub release to publish the current site to privacyguides.org. The current `main` branch can be previewed at [https://main.staging.privacyguides.dev](https://main.staging.privacyguides.dev) prior to release.
|
||||||
|
|
||||||
|
1. Create a new tag: `git tag -s YYYY.MM.DD -m 'Some message'`
|
||||||
|
- Tag numbering: `YYYY.MM.DD` - if two+ releases are published on the same day, append short commit sha to next release, e.g. `YYYY.MM.DD-6aa14e8`
|
||||||
|
- Enable GPG tag signing by default (`git config tag.gpgSign true`) to avoid missing signatures
|
||||||
|
2. Push the tag to GitHub: `git push --tags`
|
||||||
|
3. A GitHub Release will be automatically created and deployed to the live site.
|
||||||
|
- You may wish to manually check or edit the release changelog/title after it is published for accuracy.
|
||||||
|
|
||||||
|
## Contributors
|
||||||
|
|
||||||
|
Privacy Guides wouldn't be possible without these wonderful people ([emoji key](https://allcontributors.org/docs/en/emoji-key)):
|
||||||
|
|
||||||
|
<!-- ALL-CONTRIBUTORS-LIST:START - Do not remove or modify this section -->
|
||||||
|
<!-- prettier-ignore-start -->
|
||||||
|
<!-- markdownlint-disable -->
|
||||||
|
<table>
|
||||||
|
<tbody>
|
||||||
|
<tr>
|
||||||
|
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://www.jonaharagon.com/"><img src="https://avatars.githubusercontent.com/u/3637842?v=4" width="100px;" loading=lazy /><br /><sub><b>Jonah Aragon</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=jonaharagon" title="Documentation">📖</a> <a href="https://github.com/privacyguides/privacyguides.org/pulls?q=is%3Apr+reviewed-by%3Ajonaharagon" title="Reviewed Pull Requests">👀</a> <a href="#projectManagement-jonaharagon" title="Project Management">📆</a> <a href="https://github.com/privacyguides/privacyguides.org/commits?author=jonaharagon" title="Code">💻</a> <a href="#infra-jonaharagon" title="Infrastructure (Hosting, Build-Tools, etc)">🚇</a> <a href="#security-jonaharagon" title="Security">🛡️</a> <a href="#blog-jonaharagon" title="Blogposts">📝</a> <a href="#design-jonaharagon" title="Design">🎨</a> <a href="#platform-jonaharagon" title="Packaging/porting to new platform">📦</a> <a href="#promotion-jonaharagon" title="Promotion">📣</a> <a href="#question-jonaharagon" title="Answering Questions">💬</a> <a href="#research-jonaharagon" title="Research">🔬</a> <a href="#maintenance-jonaharagon" title="Maintenance">🚧</a> <a href="#mentoring-jonaharagon" title="Mentoring">🧑🏫</a> <a href="#a11y-jonaharagon" title="Accessibility">️️️️♿️</a> <a href="#ideas-jonaharagon" title="Ideas, Planning, & Feedback">🤔</a> <a href="#video-jonaharagon" title="Videos">📹</a> <a href="https://github.com/privacyguides/privacyguides.org/issues?q=author%3Ajonaharagon" title="Bug reports">🐛</a> <a href="#business-jonaharagon" title="Business development">💼</a></td>
|
||||||
|
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://polarbear.army/"><img src="https://avatars.githubusercontent.com/u/48640805?v=4" width="100px;" loading=lazy /><br /><sub><b>Daniel Nathan Gray</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=dngray" title="Documentation">📖</a> <a href="#mentoring-dngray" title="Mentoring">🧑🏫</a> <a href="#projectManagement-dngray" title="Project Management">📆</a> <a href="#question-dngray" title="Answering Questions">💬</a> <a href="#research-dngray" title="Research">🔬</a> <a href="https://github.com/privacyguides/privacyguides.org/pulls?q=is%3Apr+reviewed-by%3Adngray" title="Reviewed Pull Requests">👀</a> <a href="https://github.com/privacyguides/privacyguides.org/issues?q=author%3Adngray" title="Bug reports">🐛</a> <a href="#maintenance-dngray" title="Maintenance">🚧</a> <a href="#ideas-dngray" title="Ideas, Planning, & Feedback">🤔</a> <a href="#security-dngray" title="Security">🛡️</a></td>
|
||||||
|
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://freddy.lol/"><img src="https://avatars.githubusercontent.com/u/25013506?v=4" width="100px;" loading=lazy /><br /><sub><b>Freddy</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=freddy-m" title="Documentation">📖</a> <a href="#blog-freddy-m" title="Blogposts">📝</a> <a href="https://github.com/privacyguides/privacyguides.org/pulls?q=is%3Apr+reviewed-by%3Afreddy-m" title="Reviewed Pull Requests">👀</a> <a href="#research-freddy-m" title="Research">🔬</a> <a href="#maintenance-freddy-m" title="Maintenance">🚧</a> <a href="https://github.com/privacyguides/privacyguides.org/issues?q=author%3Afreddy-m" title="Bug reports">🐛</a> <a href="#ideas-freddy-m" title="Ideas, Planning, & Feedback">🤔</a> <a href="#question-freddy-m" title="Answering Questions">💬</a></td>
|
||||||
|
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://github.com/blacklight447"><img src="https://avatars.githubusercontent.com/u/50110294?v=4" width="100px;" loading=lazy /><br /><sub><b>Niek de Wilde</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=blacklight447" title="Documentation">📖</a> <a href="https://github.com/privacyguides/privacyguides.org/issues?q=author%3Ablacklight447" title="Bug reports">🐛</a> <a href="#research-blacklight447" title="Research">🔬</a> <a href="https://github.com/privacyguides/privacyguides.org/pulls?q=is%3Apr+reviewed-by%3Ablacklight447" title="Reviewed Pull Requests">👀</a> <a href="#infra-blacklight447" title="Infrastructure (Hosting, Build-Tools, etc)">🚇</a> <a href="#question-blacklight447" title="Answering Questions">💬</a> <a href="#ideas-blacklight447" title="Ideas, Planning, & Feedback">🤔</a> <a href="#blog-blacklight447" title="Blogposts">📝</a> <a href="#audio-blacklight447" title="Audio">🔊</a></td>
|
||||||
|
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://github.com/hook9"><img src="https://avatars.githubusercontent.com/u/47239784?v=4" width="100px;" loading=lazy /><br /><sub><b>hook9</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=hook9" title="Documentation">📖</a> <a href="#research-hook9" title="Research">🔬</a> <a href="https://github.com/privacyguides/privacyguides.org/pulls?q=is%3Apr+reviewed-by%3Ahook9" title="Reviewed Pull Requests">👀</a> <a href="#ideas-hook9" title="Ideas, Planning, & Feedback">🤔</a></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://aminda.eu/"><img src="https://avatars.githubusercontent.com/u/831184?v=4" width="100px;" loading=lazy /><br /><sub><b>Aminda Suomalainen ⚧</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=Mikaela" title="Documentation">📖</a> <a href="https://github.com/privacyguides/privacyguides.org/pulls?q=is%3Apr+reviewed-by%3AMikaela" title="Reviewed Pull Requests">👀</a> <a href="#ideas-Mikaela" title="Ideas, Planning, & Feedback">🤔</a> <a href="#research-Mikaela" title="Research">🔬</a> <a href="#a11y-Mikaela" title="Accessibility">️️️️♿️</a> <a href="#question-Mikaela" title="Answering Questions">💬</a> <a href="#projectManagement-Mikaela" title="Project Management">📆</a></td>
|
||||||
|
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://nitrohorse.com/"><img src="https://avatars.githubusercontent.com/u/1514352?v=4" width="100px;" loading=lazy /><br /><sub><b>nitrohorse</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=nitrohorse" title="Documentation">📖</a> <a href="https://github.com/privacyguides/privacyguides.org/pulls?q=is%3Apr+reviewed-by%3Anitrohorse" title="Reviewed Pull Requests">👀</a> <a href="#ideas-nitrohorse" title="Ideas, Planning, & Feedback">🤔</a> <a href="#blog-nitrohorse" title="Blogposts">📝</a></td>
|
||||||
|
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://dawidpotocki.com/"><img src="https://avatars.githubusercontent.com/u/38681822?v=4" width="100px;" loading=lazy /><br /><sub><b>Dawid Potocki</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=dawidpotocki" title="Documentation">📖</a> <a href="https://github.com/privacyguides/privacyguides.org/pulls?q=is%3Apr+reviewed-by%3Adawidpotocki" title="Reviewed Pull Requests">👀</a> <a href="#ideas-dawidpotocki" title="Ideas, Planning, & Feedback">🤔</a> <a href="#design-dawidpotocki" title="Design">🎨</a> <a href="#research-dawidpotocki" title="Research">🔬</a></td>
|
||||||
|
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://realguyman.xyz/"><img src="https://avatars.githubusercontent.com/u/93285774?v=4" width="100px;" loading=lazy /><br /><sub><b>Dale E. Wingard, Jr.</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=realguyman" title="Documentation">📖</a> <a href="https://github.com/privacyguides/privacyguides.org/pulls?q=is%3Apr+reviewed-by%3Arealguyman" title="Reviewed Pull Requests">👀</a> <a href="#ideas-realguyman" title="Ideas, Planning, & Feedback">🤔</a> <a href="#research-realguyman" title="Research">🔬</a></td>
|
||||||
|
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://github.com/kewde"><img src="https://avatars.githubusercontent.com/u/13770485?v=4" width="100px;" loading=lazy /><br /><sub><b>Kewde</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=kewde" title="Documentation">📖</a> <a href="https://github.com/privacyguides/privacyguides.org/commits?author=kewde" title="Code">💻</a> <a href="#research-kewde" title="Research">🔬</a></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://vince.sh/"><img src="https://avatars.githubusercontent.com/u/13933712?v=4" width="100px;" loading=lazy /><br /><sub><b>Vince</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=Vincevrp" title="Documentation">📖</a> <a href="https://github.com/privacyguides/privacyguides.org/commits?author=Vincevrp" title="Code">💻</a> <a href="#research-Vincevrp" title="Research">🔬</a></td>
|
||||||
|
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://github.com/shifterovich2"><img src="https://avatars.githubusercontent.com/u/31760859?v=4" width="100px;" loading=lazy /><br /><sub><b>shifterovich2</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=shifterovich2" title="Documentation">📖</a> <a href="https://github.com/privacyguides/privacyguides.org/commits?author=shifterovich2" title="Code">💻</a> <a href="#research-shifterovich2" title="Research">🔬</a></td>
|
||||||
|
<td align="center" valign="top" width="20%"><img src="https://avatars.githubusercontent.com/u/10137?v=4" width="100px;" loading=lazy /><br /><sub><b>mfwmyfacewhen</b></sub><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=mfwmyfacewhen" title="Documentation">📖</a> <a href="#ideas-mfwmyfacewhen" title="Ideas, Planning, & Feedback">🤔</a> <a href="https://github.com/privacyguides/privacyguides.org/pulls?q=is%3Apr+reviewed-by%3Amfwmyfacewhen" title="Reviewed Pull Requests">👀</a> <a href="#research-mfwmyfacewhen" title="Research">🔬</a> <a href="#question-mfwmyfacewhen" title="Answering Questions">💬</a></td>
|
||||||
|
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://tommytran.io/"><img src="https://avatars.githubusercontent.com/u/57488583?v=4" width="100px;" loading=lazy /><br /><sub><b>Tommy</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=TommyTran732" title="Documentation">📖</a> <a href="https://github.com/privacyguides/privacyguides.org/pulls?q=is%3Apr+reviewed-by%3ATommyTran732" title="Reviewed Pull Requests">👀</a> <a href="#research-TommyTran732" title="Research">🔬</a> <a href="#question-TommyTran732" title="Answering Questions">💬</a></td>
|
||||||
|
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://kaitebay.org/"><img src="https://avatars.githubusercontent.com/u/95620167?v=4" width="100px;" loading=lazy /><br /><sub><b>Kai Tebay</b></sub></a><br /><a href="#ideas-KaiTebay" title="Ideas, Planning, & Feedback">🤔</a> <a href="https://github.com/privacyguides/privacyguides.org/commits?author=KaiTebay" title="Documentation">📖</a> <a href="#research-KaiTebay" title="Research">🔬</a> <a href="https://github.com/privacyguides/privacyguides.org/commits?author=KaiTebay" title="Code">💻</a></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://github.com/matchboxbananasynergy"><img src="https://avatars.githubusercontent.com/u/107055883?v=4" width="100px;" loading=lazy /><br /><sub><b>matchboxbananasynergy</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=matchboxbananasynergy" title="Documentation">📖</a> <a href="#research-matchboxbananasynergy" title="Research">🔬</a> <a href="#ideas-matchboxbananasynergy" title="Ideas, Planning, & Feedback">🤔</a> <a href="https://github.com/privacyguides/privacyguides.org/pulls?q=is%3Apr+reviewed-by%3Amatchboxbananasynergy" title="Reviewed Pull Requests">👀</a> <a href="#blog-matchboxbananasynergy" title="Blogposts">📝</a></td>
|
||||||
|
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://github.com/features/actions"><img src="https://avatars.githubusercontent.com/u/44036562?v=4" width="100px;" loading=lazy /><br /><sub><b>GitHub Actions</b></sub></a><br /><a href="#infra-actions" title="Infrastructure (Hosting, Build-Tools, etc)">🚇</a></td>
|
||||||
|
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://www.netlify.com/"><img src="https://avatars.githubusercontent.com/u/7892489?v=4" width="100px;" loading=lazy /><br /><sub><b>Netlify</b></sub></a><br /><a href="#infra-netlify" title="Infrastructure (Hosting, Build-Tools, etc)">🚇</a></td>
|
||||||
|
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://github.com/features/security"><img src="https://avatars.githubusercontent.com/u/27347476?v=4" width="100px;" loading=lazy /><br /><sub><b>Dependabot</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=dependabot" title="Code">💻</a> <a href="#infra-dependabot" title="Infrastructure (Hosting, Build-Tools, etc)">🚇</a></td>
|
||||||
|
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://console.hetzner.cloud/"><img src="https://avatars.githubusercontent.com/u/22154697?v=4" width="100px;" loading=lazy /><br /><sub><b>Hetzner Cloud</b></sub></a><br /><a href="#infra-hetznercloud" title="Infrastructure (Hosting, Build-Tools, etc)">🚇</a></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://www.cloudflare.com/"><img src="https://avatars.githubusercontent.com/u/314135?v=4" width="100px;" loading=lazy /><br /><sub><b>Cloudflare</b></sub></a><br /><a href="#infra-cloudflare" title="Infrastructure (Hosting, Build-Tools, etc)">🚇</a></td>
|
||||||
|
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://opencollective.com/"><img src="https://avatars.githubusercontent.com/u/13403593?v=4" width="100px;" loading=lazy /><br /><sub><b>Open Collective</b></sub></a><br /><a href="#business-opencollective" title="Business development">💼</a></td>
|
||||||
|
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://safing.io/"><img src="https://avatars.githubusercontent.com/u/20678162?v=4" width="100px;" loading=lazy /><br /><sub><b>Safing</b></sub></a><br /><a href="#financial-safing" title="Financial">💵</a></td>
|
||||||
|
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://www.danarel.com/"><img src="https://avatars.githubusercontent.com/u/46383059?v=4" width="100px;" loading=lazy /><br /><sub><b>Dan Arel</b></sub></a><br /><a href="#blog-danarel" title="Blogposts">📝</a> <a href="https://github.com/privacyguides/privacyguides.org/commits?author=danarel" title="Documentation">📖</a> <a href="#research-danarel" title="Research">🔬</a></td>
|
||||||
|
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://techlore.tech/"><img src="https://avatars.githubusercontent.com/u/68134985?v=4" width="100px;" loading=lazy /><br /><sub><b>Techlore</b></sub></a><br /><a href="#financial-techlore" title="Financial">💵</a></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://github.com/elitejake"><img src="https://avatars.githubusercontent.com/u/74049394?v=4" width="100px;" loading=lazy /><br /><sub><b>elitejake</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=elitejake" title="Documentation">📖</a></td>
|
||||||
|
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://simpleprivacy.fr/"><img src="https://avatars.githubusercontent.com/u/74207682?v=4" width="100px;" loading=lazy /><br /><sub><b>samsepi0l</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=d4rklynk" title="Documentation">📖</a></td>
|
||||||
|
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://github.com/rollsicecream"><img src="https://avatars.githubusercontent.com/u/153316540?v=4" width="100px;" loading=lazy /><br /><sub><b>rollsicecream</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=rollsicecream" title="Documentation">📖</a> <a href="#question-rollsicecream" title="Answering Questions">💬</a> <a href="#translation-rollsicecream" title="Translation">🌍</a> <a href="https://github.com/privacyguides/privacyguides.org/pulls?q=is%3Apr+reviewed-by%3Arollsicecream" title="Reviewed Pull Requests">👀</a></td>
|
||||||
|
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://henryfisher.tech/"><img src="https://avatars.githubusercontent.com/u/64515030?v=4" width="100px;" loading=lazy /><br /><sub><b>Henry Fisher</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=henry-fisher" title="Documentation">📖</a></td>
|
||||||
|
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://thenewoil.org/"><img src="https://avatars.githubusercontent.com/u/133825060?v=4" width="100px;" loading=lazy /><br /><sub><b>Nate Bartram</b></sub></a><br /><a href="#blog-tnonate" title="Blogposts">📝</a></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://www.samhowell.uk/"><img src="https://avatars.githubusercontent.com/u/10137?v=4" width="100px;" loading=lazy /><br /><sub><b>Sam Howell</b></sub></a><br /><a href="#blog-5amm" title="Blogposts">📝</a></td>
|
||||||
|
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://github.com/asddsaz"><img src="https://avatars.githubusercontent.com/u/42685606?v=4" width="100px;" loading=lazy /><br /><sub><b>asddsaz</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=asddsaz" title="Documentation">📖</a></td>
|
||||||
|
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://github.com/hugoncosta"><img src="https://avatars.githubusercontent.com/u/29380568?v=4" width="100px;" loading=lazy /><br /><sub><b>Hugo Costa</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=hugoncosta" title="Documentation">📖</a></td>
|
||||||
|
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://github.com/C-O-M-P-A-R-T-M-E-N-T-A-L-I-Z-A-T-I-O-N"><img src="https://avatars.githubusercontent.com/u/30232065?v=4" width="100px;" loading=lazy /><br /><sub><b>C-O-M-P-A-R-T-M-E-N-T-A-L-I-Z-A-T-I-O-N</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=C-O-M-P-A-R-T-M-E-N-T-A-L-I-Z-A-T-I-O-N" title="Documentation">📖</a></td>
|
||||||
|
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://github.com/Strappazzon"><img src="https://avatars.githubusercontent.com/u/19752093?v=4" width="100px;" loading=lazy /><br /><sub><b>Alberto Strappazzon</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=Strappazzon" title="Documentation">📖</a></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://victorhckinthefreeworld.com/"><img src="https://avatars.githubusercontent.com/u/1514206?v=4" width="100px;" loading=lazy /><br /><sub><b>Victorhck</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=victorhck" title="Documentation">📖</a></td>
|
||||||
|
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://github.com/taivlam"><img src="https://avatars.githubusercontent.com/u/47955724?v=4" width="100px;" loading=lazy /><br /><sub><b>Tai Lam</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=taivlam" title="Documentation">📖</a></td>
|
||||||
|
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://github.com/NinebitX"><img src="https://avatars.githubusercontent.com/u/26626722?v=4" width="100px;" loading=lazy /><br /><sub><b>NinebitX</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=NinebitX" title="Documentation">📖</a></td>
|
||||||
|
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://antukh.com/"><img src="https://avatars.githubusercontent.com/u/10441512?v=4" width="100px;" loading=lazy /><br /><sub><b>Alexander Antukh</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=c0rdis" title="Documentation">📖</a></td>
|
||||||
|
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://gusted.xyz/"><img src="https://avatars.githubusercontent.com/u/25481501?v=4" width="100px;" loading=lazy /><br /><sub><b>Gusted</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=Gusted" title="Documentation">📖</a></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://github.com/redoomed1"><img src="https://avatars.githubusercontent.com/u/161974310?v=4" width="100px;" loading=lazy /><br /><sub><b>redoomed1</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=redoomed1" title="Documentation">📖</a> <a href="https://github.com/privacyguides/privacyguides.org/pulls?q=is%3Apr+reviewed-by%3Aredoomed1" title="Reviewed Pull Requests">👀</a></td>
|
||||||
|
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://github.com/Offpics"><img src="https://avatars.githubusercontent.com/u/20701635?v=4" width="100px;" loading=lazy /><br /><sub><b>Offpics</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=Offpics" title="Documentation">📖</a></td>
|
||||||
|
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://github.com/kimg45"><img src="https://avatars.githubusercontent.com/u/138676274?v=4" width="100px;" loading=lazy /><br /><sub><b>kimg45</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=kimg45" title="Documentation">📖</a></td>
|
||||||
|
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://github.com/djoate"><img src="https://avatars.githubusercontent.com/u/56777051?v=4" width="100px;" loading=lazy /><br /><sub><b>djoate</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=djoate" title="Documentation">📖</a></td>
|
||||||
|
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://github.com/afighttilldeath"><img src="https://avatars.githubusercontent.com/u/29437578?v=4" width="100px;" loading=lazy /><br /><sub><b>afighttilldeath</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=afighttilldeath" title="Documentation">📖</a></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://github.com/paulverbeke"><img src="https://avatars.githubusercontent.com/u/6412153?v=4" width="100px;" loading=lazy /><br /><sub><b>Paul Verbeke</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=paulverbeke" title="Documentation">📖</a> <a href="#translation-paulverbeke" title="Translation">🌍</a> <a href="https://github.com/privacyguides/privacyguides.org/issues?q=author%3Apaulverbeke" title="Bug reports">🐛</a> <a href="#mentoring-paulverbeke" title="Mentoring">🧑🏫</a></td>
|
||||||
|
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://mitchellcash.com/"><img src="https://avatars.githubusercontent.com/u/8009243?v=4" width="100px;" loading=lazy /><br /><sub><b>Mitchell Cash</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=MitchellCash" title="Documentation">📖</a></td>
|
||||||
|
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://github.com/NeverDucky"><img src="https://avatars.githubusercontent.com/u/32468662?v=4" width="100px;" loading=lazy /><br /><sub><b>NeverDucky</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=NeverDucky" title="Documentation">📖</a></td>
|
||||||
|
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://github.com/efb4f5ff-1298-471a-8973-3d47447115dc"><img src="https://avatars.githubusercontent.com/u/73130443?v=4" width="100px;" loading=lazy /><br /><sub><b>efb4f5ff-1298-471a-8973-3d47447115dc</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=efb4f5ff-1298-471a-8973-3d47447115dc" title="Documentation">📖</a></td>
|
||||||
|
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://www.giga.uliege.be/cms/c_4113283/en/giga-directory?uid=u225986"><img src="https://avatars.githubusercontent.com/u/1118942?v=4" width="100px;" loading=lazy /><br /><sub><b>Stephen Karl Larroque</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=lrq3000" title="Documentation">📖</a></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://github.com/0rdinant"><img src="https://avatars.githubusercontent.com/u/76827384?v=4" width="100px;" loading=lazy /><br /><sub><b>0rdinant</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=0rdinant" title="Documentation">📖</a></td>
|
||||||
|
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://github.com/Zenithium"><img src="https://avatars.githubusercontent.com/u/48525551?v=4" width="100px;" loading=lazy /><br /><sub><b>Zenithium</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=Zenithium" title="Documentation">📖</a></td>
|
||||||
|
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="http://www.ravellaw.com/"><img src="https://avatars.githubusercontent.com/u/860471?v=4" width="100px;" loading=lazy /><br /><sub><b>Jordan Gwyn</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=emanresusername" title="Documentation">📖</a></td>
|
||||||
|
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://gururaja.in/"><img src="https://avatars.githubusercontent.com/u/70903440?v=4" width="100px;" loading=lazy /><br /><sub><b>Guru</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=Guru-25" title="Documentation">📖</a></td>
|
||||||
|
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://github.com/datoshkr"><img src="https://avatars.githubusercontent.com/u/79659024?v=4" width="100px;" loading=lazy /><br /><sub><b>datoshkr</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=datoshkr" title="Documentation">📖</a></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://github.com/Kcchouette"><img src="https://avatars.githubusercontent.com/u/3000936?v=4" width="100px;" loading=lazy /><br /><sub><b>Kcchouette</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=Kcchouette" title="Documentation">📖</a></td>
|
||||||
|
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://jacobneplokh.com/"><img src="https://avatars.githubusercontent.com/u/46184597?v=4" width="100px;" loading=lazy /><br /><sub><b>Jacob Neplokh</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=jneplokh" title="Documentation">📖</a></td>
|
||||||
|
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://github.com/razac-elda"><img src="https://avatars.githubusercontent.com/u/30749146?v=4" width="100px;" loading=lazy /><br /><sub><b>Leonardo Mazzon</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=razac-elda" title="Documentation">📖</a></td>
|
||||||
|
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://github.com/opheron"><img src="https://avatars.githubusercontent.com/u/7110152?v=4" width="100px;" loading=lazy /><br /><sub><b>Andrew Chong</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=opheron" title="Documentation">📖</a></td>
|
||||||
|
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://github.com/woctezuma"><img src="https://avatars.githubusercontent.com/u/570669?v=4" width="100px;" loading=lazy /><br /><sub><b>Wok</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=woctezuma" title="Documentation">📖</a></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://itsnothing.net/"><img src="https://avatars.githubusercontent.com/u/105246487?v=4" width="100px;" loading=lazy /><br /><sub><b>nopeitsnothing</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=nopeitsnothing" title="Documentation">📖</a></td>
|
||||||
|
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://lynn.one/"><img src="https://avatars.githubusercontent.com/u/63118982?v=4" width="100px;" loading=lazy /><br /><sub><b>Lynn Stephenson</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=lynn-stephenson" title="Documentation">📖</a></td>
|
||||||
|
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://cory.solovewi.cz/"><img src="https://avatars.githubusercontent.com/u/19578733?v=4" width="100px;" loading=lazy /><br /><sub><b>Cory Solovewicz</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=corysolovewicz" title="Documentation">📖</a></td>
|
||||||
|
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://zerolimits.dev/"><img src="https://avatars.githubusercontent.com/u/103803129?v=4" width="100px;" loading=lazy /><br /><sub><b>noClaps</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=noClaps" title="Documentation">📖</a></td>
|
||||||
|
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://github.com/Perelandra0x309"><img src="https://avatars.githubusercontent.com/u/22124003?v=4" width="100px;" loading=lazy /><br /><sub><b>Brian</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=Perelandra0x309" title="Documentation">📖</a></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://github.com/SkewedZeppelin"><img src="https://avatars.githubusercontent.com/u/8296104?v=4" width="100px;" loading=lazy /><br /><sub><b>SkewedZeppelin</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=SkewedZeppelin" title="Documentation">📖</a> <a href="#question-SkewedZeppelin" title="Answering Questions">💬</a></td>
|
||||||
|
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://github.com/Arcadius3D"><img src="https://avatars.githubusercontent.com/u/165268515?v=4" width="100px;" loading=lazy /><br /><sub><b>Arcadius3D</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=Arcadius3D" title="Documentation">📖</a></td>
|
||||||
|
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://github.com/vpnarea"><img src="https://avatars.githubusercontent.com/u/17130812?v=4" width="100px;" loading=lazy /><br /><sub><b>vpnarea</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=vpnarea" title="Documentation">📖</a></td>
|
||||||
|
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://namazso.eu/"><img src="https://avatars.githubusercontent.com/u/8676443?v=4" width="100px;" loading=lazy /><br /><sub><b>namazso</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=namazso" title="Documentation">📖</a> <a href="#question-namazso" title="Answering Questions">💬</a></td>
|
||||||
|
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://github.com/cYDN48"><img src="https://avatars.githubusercontent.com/u/96789053?v=4" width="100px;" loading=lazy /><br /><sub><b>cYDN48</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=cYDN48" title="Documentation">📖</a></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://github.com/gjhklfdsa"><img src="https://avatars.githubusercontent.com/u/45323745?v=4" width="100px;" loading=lazy /><br /><sub><b>gjhklfdsa</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=gjhklfdsa" title="Documentation">📖</a></td>
|
||||||
|
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://fxgn.dev/"><img src="https://avatars.githubusercontent.com/u/66178592?v=4" width="100px;" loading=lazy /><br /><sub><b>Pavel Zolotarevskiy</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=flexagoon" title="Documentation">📖</a></td>
|
||||||
|
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://www.mediawiki.org/wiki/User:Quiddity"><img src="https://avatars.githubusercontent.com/u/6633202?v=4" width="100px;" loading=lazy /><br /><sub><b>quiddity-wp</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=quiddity-wp" title="Documentation">📖</a></td>
|
||||||
|
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://nikhiljha.com/"><img src="https://avatars.githubusercontent.com/u/2773700?v=4" width="100px;" loading=lazy /><br /><sub><b>Nikhil Jha</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=nikhiljha" title="Documentation">📖</a></td>
|
||||||
|
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://github.com/subatomic-honda-civic"><img src="https://avatars.githubusercontent.com/u/105336176?v=4" width="100px;" loading=lazy /><br /><sub><b>Subatomic Honda Civic</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=subatomic-honda-civic" title="Documentation">📖</a></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://github.com/ticklemyIP"><img src="https://avatars.githubusercontent.com/u/126688461?v=4" width="100px;" loading=lazy /><br /><sub><b>ticklemyIP</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=ticklemyIP" title="Documentation">📖</a></td>
|
||||||
|
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://github.com/jermanuts"><img src="https://avatars.githubusercontent.com/u/109705802?v=4" width="100px;" loading=lazy /><br /><sub><b>jermanuts</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=jermanuts" title="Documentation">📖</a></td>
|
||||||
|
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://github.com/conorohiggins"><img src="https://avatars.githubusercontent.com/u/16993660?v=4" width="100px;" loading=lazy /><br /><sub><b>conorohiggins</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=conorohiggins" title="Documentation">📖</a></td>
|
||||||
|
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://github.com/TechFanTheo"><img src="https://avatars.githubusercontent.com/u/78900789?v=4" width="100px;" loading=lazy /><br /><sub><b>TechFanTheo</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=TechFanTheo" title="Documentation">📖</a></td>
|
||||||
|
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://github.com/r-j-taylor"><img src="https://avatars.githubusercontent.com/u/35360143?v=4" width="100px;" loading=lazy /><br /><sub><b>Ryan Taylor</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=r-j-taylor" title="Documentation">📖</a></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://github.com/Positron832"><img src="https://avatars.githubusercontent.com/u/72881516?v=4" width="100px;" loading=lazy /><br /><sub><b>Positron832</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=Positron832" title="Documentation">📖</a></td>
|
||||||
|
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://github.com/JustLuckNoSkill"><img src="https://avatars.githubusercontent.com/u/114787000?v=4" width="100px;" loading=lazy /><br /><sub><b>JustLuckNoSkill</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=JustLuckNoSkill" title="Documentation">📖</a></td>
|
||||||
|
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://github.com/Akyshnik"><img src="https://avatars.githubusercontent.com/u/23380632?v=4" width="100px;" loading=lazy /><br /><sub><b>Arkadiy</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=Akyshnik" title="Documentation">📖</a></td>
|
||||||
|
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://github.com/jackmchou"><img src="https://avatars.githubusercontent.com/u/56708167?v=4" width="100px;" loading=lazy /><br /><sub><b>Jack Chou</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=jackmchou" title="Documentation">📖</a></td>
|
||||||
|
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://ave.zone/"><img src="https://avatars.githubusercontent.com/u/6755762?v=4" width="100px;" loading=lazy /><br /><sub><b>ave</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=aveao" title="Documentation">📖</a></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://github.com/Booteille"><img src="https://avatars.githubusercontent.com/u/2203721?v=4" width="100px;" loading=lazy /><br /><sub><b>Boo</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=Booteille" title="Documentation">📖</a></td>
|
||||||
|
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://github.com/IDKwhattoputhere"><img src="https://avatars.githubusercontent.com/u/39969358?v=4" width="100px;" loading=lazy /><br /><sub><b>IDKwhattoputhere</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=IDKwhattoputhere" title="Documentation">📖</a></td>
|
||||||
|
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://github.com/idk-r-n"><img src="https://avatars.githubusercontent.com/u/111711873?v=4" width="100px;" loading=lazy /><br /><sub><b>idkrn</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=idk-r-n" title="Documentation">📖</a></td>
|
||||||
|
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://github.com/ggg27"><img src="https://avatars.githubusercontent.com/u/52841257?v=4" width="100px;" loading=lazy /><br /><sub><b>ggg27</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=ggg27" title="Documentation">📖</a></td>
|
||||||
|
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://github.com/WalterKlosse"><img src="https://avatars.githubusercontent.com/u/27290800?v=4" width="100px;" loading=lazy /><br /><sub><b>WalterKlosse</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=WalterKlosse" title="Documentation">📖</a></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://stosb.com/"><img src="https://avatars.githubusercontent.com/u/108670?v=4" width="100px;" loading=lazy /><br /><sub><b>Tom Hacohen</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=tasn" title="Documentation">📖</a></td>
|
||||||
|
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://www.linkedin.com/in/paulfeuvraux/"><img src="https://avatars.githubusercontent.com/u/13090164?v=4" width="100px;" loading=lazy /><br /><sub><b>Paul Feuvraux</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=Super-Baleine" title="Documentation">📖</a></td>
|
||||||
|
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="http://sbennett1990.github.io/Resume/"><img src="https://avatars.githubusercontent.com/u/6392550?v=4" width="100px;" loading=lazy /><br /><sub><b>Scott Bennett</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=sbennett1990" title="Documentation">📖</a></td>
|
||||||
|
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="http://blog.191.161.xyz/"><img src="https://avatars.githubusercontent.com/u/1544371?v=4" width="100px;" loading=lazy /><br /><sub><b>Federico Ariel Castagnini</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=facastagnini" title="Documentation">📖</a></td>
|
||||||
|
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://github.com/jslawler-gh"><img src="https://avatars.githubusercontent.com/u/149243371?v=4" width="100px;" loading=lazy /><br /><sub><b>jslawler-gh</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=jslawler-gh" title="Documentation">📖</a></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://github.com/spaceoden"><img src="https://avatars.githubusercontent.com/u/26421479?v=4" width="100px;" loading=lazy /><br /><sub><b>spaceoden</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=spaceoden" title="Documentation">📖</a></td>
|
||||||
|
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://github.com/xe-3"><img src="https://avatars.githubusercontent.com/u/137224605?v=4" width="100px;" loading=lazy /><br /><sub><b>xe3</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=xe-3" title="Documentation">📖</a></td>
|
||||||
|
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://github.com/anoadragon453"><img src="https://avatars.githubusercontent.com/u/1342360?v=4" width="100px;" loading=lazy /><br /><sub><b>Andrew Morgan</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=anoadragon453" title="Documentation">📖</a></td>
|
||||||
|
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://rossviewef.org/"><img src="https://avatars.githubusercontent.com/u/35670796?v=4" width="100px;" loading=lazy /><br /><sub><b>Caleb King</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=EvasivePangolin" title="Documentation">📖</a></td>
|
||||||
|
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://github.com/Eduardo06sp"><img src="https://avatars.githubusercontent.com/u/34868791?v=4" width="100px;" loading=lazy /><br /><sub><b>Eduardo</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=Eduardo06sp" title="Documentation">📖</a></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://github.com/NafeezJS"><img src="https://avatars.githubusercontent.com/u/17627305?v=4" width="100px;" loading=lazy /><br /><sub><b>NafeezJS</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=NafeezJS" title="Documentation">📖</a></td>
|
||||||
|
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://github.com/Sloofy"><img src="https://avatars.githubusercontent.com/u/18003771?v=4" width="100px;" loading=lazy /><br /><sub><b>Sloofy</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=Sloofy" title="Documentation">📖</a></td>
|
||||||
|
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://sts10.github.io/"><img src="https://avatars.githubusercontent.com/u/4871664?v=4" width="100px;" loading=lazy /><br /><sub><b>Sam Schlinkert</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=sts10" title="Documentation">📖</a></td>
|
||||||
|
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://github.com/gaborluk"><img src="https://avatars.githubusercontent.com/u/6388299?v=4" width="100px;" loading=lazy /><br /><sub><b>Gabor Luk</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=gaborluk" title="Documentation">📖</a></td>
|
||||||
|
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://deiaspie.github.io/"><img src="https://avatars.githubusercontent.com/u/93835541?v=4" width="100px;" loading=lazy /><br /><sub><b>DeiAsPie</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=DeiAsPie" title="Documentation">📖</a></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://davidetaviani.com/"><img src="https://avatars.githubusercontent.com/u/283733?v=4" width="100px;" loading=lazy /><br /><sub><b>Davide Taviani</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=Heliosmaster" title="Documentation">📖</a></td>
|
||||||
|
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://github.com/spanishharlem"><img src="https://avatars.githubusercontent.com/u/9704046?v=4" width="100px;" loading=lazy /><br /><sub><b>spanishharlem</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=spanishharlem" title="Documentation">📖</a></td>
|
||||||
|
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://gonzoknows.com/"><img src="https://avatars.githubusercontent.com/u/122128828?v=4" width="100px;" loading=lazy /><br /><sub><b>Jacob Gonzales</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=jacobgonzales20" title="Documentation">📖</a></td>
|
||||||
|
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://kaede.ch/"><img src="https://avatars.githubusercontent.com/u/74188936?v=4" width="100px;" loading=lazy /><br /><sub><b>Kaede</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=kaedech" title="Documentation">📖</a></td>
|
||||||
|
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://github.com/abbluiz"><img src="https://avatars.githubusercontent.com/u/19765082?v=4" width="100px;" loading=lazy /><br /><sub><b>LABB</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=abbluiz" title="Documentation">📖</a></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://github.com/Raviu8"><img src="https://avatars.githubusercontent.com/u/36168047?v=4" width="100px;" loading=lazy /><br /><sub><b>Raviu8</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=Raviu8" title="Documentation">📖</a></td>
|
||||||
|
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://www.peterdavehello.org/"><img src="https://avatars.githubusercontent.com/u/3691490?v=4" width="100px;" loading=lazy /><br /><sub><b>Peter Dave Hello</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=PeterDaveHello" title="Documentation">📖</a></td>
|
||||||
|
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://github.com/RoseTheFlower"><img src="https://avatars.githubusercontent.com/u/4759227?v=4" width="100px;" loading=lazy /><br /><sub><b>Rose</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=RoseTheFlower" title="Documentation">📖</a></td>
|
||||||
|
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://xie.oskarsh.ru/"><img src="https://avatars.githubusercontent.com/u/28492051?v=4" width="100px;" loading=lazy /><br /><sub><b>Oskar Sharipov</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=igoose1" title="Documentation">📖</a></td>
|
||||||
|
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://samuellucas.com/"><img src="https://avatars.githubusercontent.com/u/63159663?v=4" width="100px;" loading=lazy /><br /><sub><b>Samuel Lucas</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=samuel-lucas6" title="Documentation">📖</a></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://github.com/NylaTheWolf"><img src="https://avatars.githubusercontent.com/u/41797151?v=4" width="100px;" loading=lazy /><br /><sub><b>NylaTheWolf</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=NylaTheWolf" title="Documentation">📖</a></td>
|
||||||
|
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://matthewdavis.me/"><img src="https://avatars.githubusercontent.com/u/298426?v=4" width="100px;" loading=lazy /><br /><sub><b>Matthew Davis</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=matthewdavis" title="Documentation">📖</a></td>
|
||||||
|
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://mpc.sh/"><img src="https://avatars.githubusercontent.com/u/2894019?v=4" width="100px;" loading=lazy /><br /><sub><b>Mark Cohen</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=mpcsh" title="Documentation">📖</a></td>
|
||||||
|
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://github.com/madscientist16"><img src="https://avatars.githubusercontent.com/u/67949699?v=4" width="100px;" loading=lazy /><br /><sub><b>Mad Scientist</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=madscientist16" title="Documentation">📖</a></td>
|
||||||
|
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://github.com/mmvanheusden"><img src="https://avatars.githubusercontent.com/u/50550545?v=4" width="100px;" loading=lazy /><br /><sub><b>Maarten</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=mmvanheusden" title="Documentation">📖</a></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://awesomesheep48.ca/"><img src="https://avatars.githubusercontent.com/u/58151048?v=4" width="100px;" loading=lazy /><br /><sub><b>William Davis</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=unbeatable-101" title="Documentation">📖</a></td>
|
||||||
|
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://github.com/WayTooWill"><img src="https://avatars.githubusercontent.com/u/119883899?v=4" width="100px;" loading=lazy /><br /><sub><b>William Thomas Wilkins</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=WayTooWill" title="Documentation">📖</a></td>
|
||||||
|
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://github.com/oXyiGYJ"><img src="https://avatars.githubusercontent.com/u/617189?v=4" width="100px;" loading=lazy /><br /><sub><b>wylel</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=oXyiGYJ" title="Documentation">📖</a></td>
|
||||||
|
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://willbrowning.me/"><img src="https://avatars.githubusercontent.com/u/20662079?v=4" width="100px;" loading=lazy /><br /><sub><b>Will Browning</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=willbrowningme" title="Documentation">📖</a></td>
|
||||||
|
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://ycao.top/"><img src="https://avatars.githubusercontent.com/u/32544798?v=4" width="100px;" loading=lazy /><br /><sub><b>Yi Cao</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=xiaoyu2006" title="Documentation">📖</a></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://github.com/yusufdaglioglu"><img src="https://avatars.githubusercontent.com/u/90555550?v=4" width="100px;" loading=lazy /><br /><sub><b>Yusuf Daglioglu</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=yusufdaglioglu" title="Documentation">📖</a></td>
|
||||||
|
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://github.com/Zackaryia"><img src="https://avatars.githubusercontent.com/u/30780411?v=4" width="100px;" loading=lazy /><br /><sub><b>Zack</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=Zackaryia" title="Documentation">📖</a></td>
|
||||||
|
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://zhw.pages.dev/"><img src="https://avatars.githubusercontent.com/u/14029004?v=4" width="100px;" loading=lazy /><br /><sub><b>ZH王</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=wi24rd" title="Documentation">📖</a></td>
|
||||||
|
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://cryptography.dog/"><img src="https://avatars.githubusercontent.com/u/1264398?v=4" width="100px;" loading=lazy /><br /><sub><b>ansuz</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=ansuz" title="Documentation">📖</a></td>
|
||||||
|
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://codeberg.org/archeite"><img src="https://avatars.githubusercontent.com/u/121004047?v=4" width="100px;" loading=lazy /><br /><sub><b>archeite</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=archeite" title="Documentation">📖</a></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://github.com/asdfghjz"><img src="https://avatars.githubusercontent.com/u/42332644?v=4" width="100px;" loading=lazy /><br /><sub><b>asdfghjz</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=asdfghjz" title="Documentation">📖</a></td>
|
||||||
|
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://github.com/ayaen"><img src="https://avatars.githubusercontent.com/u/96900168?v=4" width="100px;" loading=lazy /><br /><sub><b>ayaen</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=ayaen" title="Documentation">📖</a></td>
|
||||||
|
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://github.com/b-harper"><img src="https://avatars.githubusercontent.com/u/3729684?v=4" width="100px;" loading=lazy /><br /><sub><b>b-harper</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=b-harper" title="Documentation">📖</a></td>
|
||||||
|
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://verybadfrags.com/"><img src="https://avatars.githubusercontent.com/u/1664052?v=4" width="100px;" loading=lazy /><br /><sub><b>Loic Vourch</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=VeryBadFrags" title="Documentation">📖</a></td>
|
||||||
|
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://github.com/crasm"><img src="https://avatars.githubusercontent.com/u/16730716?v=4" width="100px;" loading=lazy /><br /><sub><b>crasm</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=crasm" title="Documentation">📖</a></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://github.com/eagerto-learn"><img src="https://avatars.githubusercontent.com/u/51919789?v=4" width="100px;" loading=lazy /><br /><sub><b>eagerto-learn</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=eagerto-learn" title="Documentation">📖</a></td>
|
||||||
|
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://github.com/egecelikci"><img src="https://avatars.githubusercontent.com/u/30394812?v=4" width="100px;" loading=lazy /><br /><sub><b>egecelikci</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=egecelikci" title="Documentation">📖</a></td>
|
||||||
|
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://github.com/elleybean"><img src="https://avatars.githubusercontent.com/u/37009392?v=4" width="100px;" loading=lazy /><br /><sub><b>elleybean</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=elleybean" title="Documentation">📖</a></td>
|
||||||
|
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://github.com/ferothefox"><img src="https://avatars.githubusercontent.com/u/52982404?v=4" width="100px;" loading=lazy /><br /><sub><b>Evan Song</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=ferothefox" title="Documentation">📖</a></td>
|
||||||
|
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://github.com/pynixis"><img src="https://avatars.githubusercontent.com/u/5612336?v=4" width="100px;" loading=lazy /><br /><sub><b>pynixis</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=pynixis" title="Documentation">📖</a></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://seirdy.one/"><img src="https://avatars.githubusercontent.com/u/44756978?v=4" width="100px;" loading=lazy /><br /><sub><b>Seirdy</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=Seirdy" title="Documentation">📖</a></td>
|
||||||
|
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://github.com/NPN"><img src="https://avatars.githubusercontent.com/u/1497826?v=4" width="100px;" loading=lazy /><br /><sub><b>Ryan Huang</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=NPN" title="Documentation">📖</a></td>
|
||||||
|
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://github.com/chickahoona"><img src="https://avatars.githubusercontent.com/u/8075146?v=4" width="100px;" loading=lazy /><br /><sub><b>Sascha P.</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=chickahoona" title="Documentation">📖</a></td>
|
||||||
|
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://github.com/Securified"><img src="https://avatars.githubusercontent.com/u/79296234?v=4" width="100px;" loading=lazy /><br /><sub><b>Securified</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=Securified" title="Documentation">📖</a></td>
|
||||||
|
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://sy.mk/"><img src="https://avatars.githubusercontent.com/u/18217335?v=4" width="100px;" loading=lazy /><br /><sub><b>Sergey Musiyenko</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=musiyenko" title="Documentation">📖</a></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://github.com/Spydar007"><img src="https://avatars.githubusercontent.com/u/7336943?v=4" width="100px;" loading=lazy /><br /><sub><b>Spydar007</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=Spydar007" title="Documentation">📖</a></td>
|
||||||
|
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://github.com/shbach"><img src="https://avatars.githubusercontent.com/u/5298745?v=4" width="100px;" loading=lazy /><br /><sub><b>Steven Bach</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=shbach" title="Documentation">📖</a></td>
|
||||||
|
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://github.com/sjlehn"><img src="https://avatars.githubusercontent.com/u/6686486?v=4" width="100px;" loading=lazy /><br /><sub><b>Steven Lehn</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=sjlehn" title="Documentation">📖</a></td>
|
||||||
|
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://steven.vandegraaf.xyz/"><img src="https://avatars.githubusercontent.com/u/8904453?v=4" width="100px;" loading=lazy /><br /><sub><b>Steven van de Graaf</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=sgraaf" title="Documentation">📖</a></td>
|
||||||
|
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://skortekaas.nl/"><img src="https://avatars.githubusercontent.com/u/6728108?v=4" width="100px;" loading=lazy /><br /><sub><b>Sven Kortekaas</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=SvenKortekaas" title="Documentation">📖</a></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://tejasgupta.com/"><img src="https://avatars.githubusercontent.com/u/18518375?v=4" width="100px;" loading=lazy /><br /><sub><b>Tejas Gupta</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=TGNYC" title="Documentation">📖</a></td>
|
||||||
|
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://github.com/tebowy"><img src="https://avatars.githubusercontent.com/u/3144357?v=4" width="100px;" loading=lazy /><br /><sub><b>Tebowy Seba</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=tebowy" title="Documentation">📖</a></td>
|
||||||
|
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://tedgravlin.tech/"><img src="https://avatars.githubusercontent.com/u/123981212?v=4" width="100px;" loading=lazy /><br /><sub><b>Ted Gravlin</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=tedgravlin" title="Documentation">📖</a></td>
|
||||||
|
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://thefrenchghosty.me/"><img src="https://avatars.githubusercontent.com/u/47571719?v=4" width="100px;" loading=lazy /><br /><sub><b>TheFrenchGhosty</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=TheFrenchGhosty" title="Documentation">📖</a></td>
|
||||||
|
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://github.com/TheNoobWar"><img src="https://avatars.githubusercontent.com/u/1857590?v=4" width="100px;" loading=lazy /><br /><sub><b>TheNoobWar</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=TheNoobWar" title="Documentation">📖</a></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://git.synz.io/users/Synzvato/projects#most-recent-activity"><img src="https://avatars.githubusercontent.com/u/2366020?v=4" width="100px;" loading=lazy /><br /><sub><b>Thomas Rientjes</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=Synzvato" title="Documentation">📖</a></td>
|
||||||
|
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://github.com/vergenzt"><img src="https://avatars.githubusercontent.com/u/1725615?v=4" width="100px;" loading=lazy /><br /><sub><b>Tim Vergenz</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=vergenzt" title="Documentation">📖</a></td>
|
||||||
|
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://github.com/tommyent"><img src="https://avatars.githubusercontent.com/u/509970?v=4" width="100px;" loading=lazy /><br /><sub><b>Tom Sullivan</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=tommyent" title="Documentation">📖</a></td>
|
||||||
|
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://github.com/tonyztan"><img src="https://avatars.githubusercontent.com/u/2025495?v=4" width="100px;" loading=lazy /><br /><sub><b>Tony Tan</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=tonyztan" title="Documentation">📖</a></td>
|
||||||
|
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://github.com/TroubleDog54"><img src="https://avatars.githubusercontent.com/u/115918107?v=4" width="100px;" loading=lazy /><br /><sub><b>TroubleDog54</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=TroubleDog54" title="Documentation">📖</a></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://github.com/User486375"><img src="https://avatars.githubusercontent.com/u/30012923?v=4" width="100px;" loading=lazy /><br /><sub><b>User486375</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=User486375" title="Documentation">📖</a></td>
|
||||||
|
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://github.com/nchristensen"><img src="https://avatars.githubusercontent.com/u/11543181?v=4" width="100px;" loading=lazy /><br /><sub><b>Nicholas Christensen</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=nchristensen" title="Documentation">📖</a></td>
|
||||||
|
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://github.com/oppressor1761"><img src="https://avatars.githubusercontent.com/u/163018825?v=4" width="100px;" loading=lazy /><br /><sub><b>oppressor1761</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=oppressor1761" title="Documentation">📖</a></td>
|
||||||
|
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://github.com/pbbob"><img src="https://avatars.githubusercontent.com/u/34972102?v=4" width="100px;" loading=lazy /><br /><sub><b>pbbob</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=pbbob" title="Documentation">📖</a></td>
|
||||||
|
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://github.com/pdjpdjpdj"><img src="https://avatars.githubusercontent.com/u/47047080?v=4" width="100px;" loading=lazy /><br /><sub><b>pdjpdjpdj</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=pdjpdjpdj" title="Documentation">📖</a></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://github.com/ph00lt0"><img src="https://avatars.githubusercontent.com/u/15004290?v=4" width="100px;" loading=lazy /><br /><sub><b>Stella Polaris</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=ph00lt0" title="Documentation">📖</a> <a href="#research-ph00lt0" title="Research">🔬</a> <a href="#promotion-ph00lt0" title="Promotion">📣</a> <a href="#question-ph00lt0" title="Answering Questions">💬</a></td>
|
||||||
|
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://github.com/regaldude"><img src="https://avatars.githubusercontent.com/u/63294824?v=4" width="100px;" loading=lazy /><br /><sub><b>regaldude</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=regaldude" title="Documentation">📖</a></td>
|
||||||
|
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://github.com/rusty-snake"><img src="https://avatars.githubusercontent.com/u/41237666?v=4" width="100px;" loading=lazy /><br /><sub><b>rusty-snake</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=rusty-snake" title="Documentation">📖</a></td>
|
||||||
|
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://github.com/sachk"><img src="https://avatars.githubusercontent.com/u/10218019?v=4" width="100px;" loading=lazy /><br /><sub><b>sacha</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=sachk" title="Documentation">📖</a></td>
|
||||||
|
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://github.com/schwukas"><img src="https://avatars.githubusercontent.com/u/33559975?v=4" width="100px;" loading=lazy /><br /><sub><b>schwukas</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=schwukas" title="Documentation">📖</a></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://github.com/sh-dv"><img src="https://avatars.githubusercontent.com/u/44544201?v=4" width="100px;" loading=lazy /><br /><sub><b>sh-dv</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=sh-dv" title="Documentation">📖</a></td>
|
||||||
|
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://github.com/szTheory"><img src="https://avatars.githubusercontent.com/u/28652?v=4" width="100px;" loading=lazy /><br /><sub><b>szTheory</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=szTheory" title="Documentation">📖</a></td>
|
||||||
|
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://github.com/tbds"><img src="https://avatars.githubusercontent.com/u/32208649?v=4" width="100px;" loading=lazy /><br /><sub><b>Thunderbolt Digital</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=tbds" title="Documentation">📖</a></td>
|
||||||
|
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://github.com/theRhinoLogician"><img src="https://avatars.githubusercontent.com/u/8325899?v=4" width="100px;" loading=lazy /><br /><sub><b>E. S. Leonesco</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=theRhinoLogician" title="Documentation">📖</a></td>
|
||||||
|
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://github.com/titanism"><img src="https://avatars.githubusercontent.com/u/101466223?v=4" width="100px;" loading=lazy /><br /><sub><b>titanism</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=titanism" title="Documentation">📖</a></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://github.com/tomac4t"><img src="https://avatars.githubusercontent.com/u/47532693?v=4" width="100px;" loading=lazy /><br /><sub><b>tomac4t</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=tomac4t" title="Documentation">📖</a></td>
|
||||||
|
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://virustotalop.github.io/"><img src="https://avatars.githubusercontent.com/u/11567285?v=4" width="100px;" loading=lazy /><br /><sub><b>virustotalop</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=virustotalop" title="Documentation">📖</a></td>
|
||||||
|
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://unit2.ca/"><img src="https://avatars.githubusercontent.com/u/4949200?v=4" width="100px;" loading=lazy /><br /><sub><b>wintr</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=wintr-" title="Documentation">📖</a></td>
|
||||||
|
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://github.com/xelarate86"><img src="https://avatars.githubusercontent.com/u/14865038?v=4" width="100px;" loading=lazy /><br /><sub><b>xelarate86</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=xelarate86" title="Documentation">📖</a></td>
|
||||||
|
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://github.com/yeoneer"><img src="https://avatars.githubusercontent.com/u/84702275?v=4" width="100px;" loading=lazy /><br /><sub><b>yeoneer</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=yeoneer" title="Documentation">📖</a></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://foxt.dev/"><img src="https://avatars.githubusercontent.com/u/12257112?v=4" width="100px;" loading=lazy /><br /><sub><b>foxt</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=foxt" title="Documentation">📖</a></td>
|
||||||
|
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://github.com/fredster33"><img src="https://avatars.githubusercontent.com/u/64927044?v=4" width="100px;" loading=lazy /><br /><sub><b>Freddie</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=fredster33" title="Documentation">📖</a></td>
|
||||||
|
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://github.com/ghbjklhv"><img src="https://avatars.githubusercontent.com/u/50426427?v=4" width="100px;" loading=lazy /><br /><sub><b>ghbjklhv</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=ghbjklhv" title="Documentation">📖</a></td>
|
||||||
|
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://github.com/gorhill"><img src="https://avatars.githubusercontent.com/u/585534?v=4" width="100px;" loading=lazy /><br /><sub><b>Raymond Hill</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=gorhill" title="Documentation">📖</a></td>
|
||||||
|
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://groovecoder.com/"><img src="https://avatars.githubusercontent.com/u/71928?v=4" width="100px;" loading=lazy /><br /><sub><b>luke crouch</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=groovecoder" title="Documentation">📖</a></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://github.com/fd1f"><img src="https://avatars.githubusercontent.com/u/30058021?v=4" width="100px;" loading=lazy /><br /><sub><b>fd1f744993de14178e6c</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=fd1f" title="Documentation">📖</a></td>
|
||||||
|
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://github.com/habitualname"><img src="https://avatars.githubusercontent.com/u/101975345?v=4" width="100px;" loading=lazy /><br /><sub><b>habitualname</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=habitualname" title="Documentation">📖</a></td>
|
||||||
|
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://github.com/hook321"><img src="https://avatars.githubusercontent.com/u/7744057?v=4" width="100px;" loading=lazy /><br /><sub><b>hook</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=hook321" title="Documentation">📖</a></td>
|
||||||
|
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://jfa.sh/"><img src="https://avatars.githubusercontent.com/u/6962524?v=4" width="100px;" loading=lazy /><br /><sub><b>nein</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=jfabraxas" title="Documentation">📖</a></td>
|
||||||
|
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://github.com/jkhgvfgvsth"><img src="https://avatars.githubusercontent.com/u/52437244?v=4" width="100px;" loading=lazy /><br /><sub><b>jkhgvfgvsth</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=jkhgvfgvsth" title="Documentation">📖</a></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://github.com/joaonsg"><img src="https://avatars.githubusercontent.com/u/8725806?v=4" width="100px;" loading=lazy /><br /><sub><b>joaonsg</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=joaonsg" title="Documentation">📖</a></td>
|
||||||
|
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://www.ivpn.net/"><img src="https://avatars.githubusercontent.com/u/60918126?v=4" width="100px;" loading=lazy /><br /><sub><b>johnnyburnaway</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=johnnyburnaway" title="Documentation">📖</a></td>
|
||||||
|
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://github.com/jus9"><img src="https://avatars.githubusercontent.com/u/72120996?v=4" width="100px;" loading=lazy /><br /><sub><b>jus9</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=jus9" title="Documentation">📖</a></td>
|
||||||
|
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://github.com/kc1212"><img src="https://avatars.githubusercontent.com/u/1093806?v=4" width="100px;" loading=lazy /><br /><sub><b>kc1212</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=kc1212" title="Documentation">📖</a></td>
|
||||||
|
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://github.com/kryptish"><img src="https://avatars.githubusercontent.com/u/39660724?v=4" width="100px;" loading=lazy /><br /><sub><b>kryptish</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=kryptish" title="Documentation">📖</a></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://github.com/m3t/id"><img src="https://avatars.githubusercontent.com/u/12968867?v=4" width="100px;" loading=lazy /><br /><sub><b>m3t</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=m3t" title="Documentation">📖</a></td>
|
||||||
|
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://github.com/macau23"><img src="https://avatars.githubusercontent.com/u/31501455?v=4" width="100px;" loading=lazy /><br /><sub><b>macau23</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=macau23" title="Documentation">📖</a></td>
|
||||||
|
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://github.com/mat1th"><img src="https://avatars.githubusercontent.com/u/6486389?v=4" width="100px;" loading=lazy /><br /><sub><b>mat1th</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=mat1th" title="Documentation">📖</a></td>
|
||||||
|
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://github.com/mwmcode"><img src="https://avatars.githubusercontent.com/u/13101565?v=4" width="100px;" loading=lazy /><br /><sub><b>MWM</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=mwmcode" title="Documentation">📖</a></td>
|
||||||
|
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://github.com/michaelplews"><img src="https://avatars.githubusercontent.com/u/14098929?v=4" width="100px;" loading=lazy /><br /><sub><b>Michael Plews</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=michaelplews" title="Documentation">📖</a></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://github.com/moritztk"><img src="https://avatars.githubusercontent.com/u/36471066?v=4" width="100px;" loading=lazy /><br /><sub><b>moritztk</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=moritztk" title="Documentation">📖</a></td>
|
||||||
|
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://aaronhorler.com/"><img src="https://avatars.githubusercontent.com/u/13065365?v=4" width="100px;" loading=lazy /><br /><sub><b>Aaron Horler</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=aghorler" title="Documentation">📖</a></td>
|
||||||
|
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://github.com/Commenter25"><img src="https://avatars.githubusercontent.com/u/35016761?v=4" width="100px;" loading=lazy /><br /><sub><b>Commenter</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=Commenter25" title="Documentation">📖</a></td>
|
||||||
|
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://blog.laubacher.io/"><img src="https://avatars.githubusercontent.com/u/12443257?v=4" width="100px;" loading=lazy /><br /><sub><b>Cédric Laubacher</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=Starbix" title="Documentation">📖</a></td>
|
||||||
|
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://gitlab.com/dpeukert"><img src="https://avatars.githubusercontent.com/u/3451904?v=4" width="100px;" loading=lazy /><br /><sub><b>Daniel Peukert</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=dpeukert" title="Documentation">📖</a></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://github.com/dabreese00"><img src="https://avatars.githubusercontent.com/u/5170955?v=4" width="100px;" loading=lazy /><br /><sub><b>David Breese</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=dabreese00" title="Documentation">📖</a></td>
|
||||||
|
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="http://www.dimitrisapostolou.com/"><img src="https://avatars.githubusercontent.com/u/227442?v=4" width="100px;" loading=lazy /><br /><sub><b>Dimitris Apostolou</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=rex4539" title="Documentation">📖</a></td>
|
||||||
|
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://github.com/Dyrimon"><img src="https://avatars.githubusercontent.com/u/77260451?v=4" width="100px;" loading=lazy /><br /><sub><b>Dyrimon</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=Dyrimon" title="Documentation">📖</a></td>
|
||||||
|
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://github.com/IkelAtomig"><img src="https://avatars.githubusercontent.com/u/101938856?v=4" width="100px;" loading=lazy /><br /><sub><b>Ikel Atomig</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=IkelAtomig" title="Documentation">📖</a></td>
|
||||||
|
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://www.eliasojala.me/contact/"><img src="https://avatars.githubusercontent.com/u/5832930?v=4" width="100px;" loading=lazy /><br /><sub><b>Elias Ojala</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=theel0ja" title="Documentation">📖</a></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://github.com/feni-brian"><img src="https://avatars.githubusercontent.com/u/56452538?v=4" width="100px;" loading=lazy /><br /><sub><b>Feni Brian</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=feni-brian" title="Documentation">📖</a></td>
|
||||||
|
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://www.filips.si/"><img src="https://avatars.githubusercontent.com/u/16626308?v=4" width="100px;" loading=lazy /><br /><sub><b>Filip Š</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=filips123" title="Documentation">📖</a></td>
|
||||||
|
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://github.com/FlxAlbroscheit"><img src="https://avatars.githubusercontent.com/u/2439195?v=4" width="100px;" loading=lazy /><br /><sub><b>Felix Albroscheit</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=FlxAlbroscheit" title="Documentation">📖</a></td>
|
||||||
|
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://github.com/GReagle"><img src="https://avatars.githubusercontent.com/u/11979774?v=4" width="100px;" loading=lazy /><br /><sub><b>GReagle</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=GReagle" title="Documentation">📖</a></td>
|
||||||
|
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://github.com/xPMo"><img src="https://avatars.githubusercontent.com/u/16061366?v=4" width="100px;" loading=lazy /><br /><sub><b>Gamma</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=xPMo" title="Documentation">📖</a></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://github.com/GetBoz"><img src="https://avatars.githubusercontent.com/u/8277114?v=4" width="100px;" loading=lazy /><br /><sub><b>GetBoz</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=GetBoz" title="Documentation">📖</a></td>
|
||||||
|
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://github.com/GrimPixel"><img src="https://avatars.githubusercontent.com/u/39795763?v=4" width="100px;" loading=lazy /><br /><sub><b>GrimPixel</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=GrimPixel" title="Documentation">📖</a></td>
|
||||||
|
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://github.com/Alonely0"><img src="https://avatars.githubusercontent.com/u/59423215?v=4" width="100px;" loading=lazy /><br /><sub><b>Guillem L. Jara</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=Alonely0" title="Documentation">📖</a></td>
|
||||||
|
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://github.com/HxxxxxS"><img src="https://avatars.githubusercontent.com/u/4034517?v=4" width="100px;" loading=lazy /><br /><sub><b>HxxxxxS</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=HxxxxxS" title="Documentation">📖</a></td>
|
||||||
|
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://github.com/himanshuchandola-zz"><img src="https://avatars.githubusercontent.com/u/34373537?v=4" width="100px;" loading=lazy /><br /><sub><b>Himanshu Chandola</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=himanshuchandola-zz" title="Documentation">📖</a></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://github.com/concatime"><img src="https://avatars.githubusercontent.com/u/26262387?v=4" width="100px;" loading=lazy /><br /><sub><b>Issam Maghni</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=concatime" title="Documentation">📖</a></td>
|
||||||
|
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://github.com/ItsDonny"><img src="https://avatars.githubusercontent.com/u/96709134?v=4" width="100px;" loading=lazy /><br /><sub><b>ItsDonny</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=ItsDonny" title="Documentation">📖</a></td>
|
||||||
|
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://github.com/thecodrr"><img src="https://avatars.githubusercontent.com/u/7473959?v=4" width="100px;" loading=lazy /><br /><sub><b>Abdullah Atta</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=thecodrr" title="Documentation">📖</a></td>
|
||||||
|
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://github.com/adam-sroka"><img src="https://avatars.githubusercontent.com/u/45038919?v=4" width="100px;" loading=lazy /><br /><sub><b>Adam Sroka</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=adam-sroka" title="Documentation">📖</a></td>
|
||||||
|
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://github.com/criadoperez"><img src="https://avatars.githubusercontent.com/u/8580472?v=4" width="100px;" loading=lazy /><br /><sub><b>criadoperez</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=criadoperez" title="Documentation">📖</a></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="http://stingle.org/"><img src="https://avatars.githubusercontent.com/u/149764?v=4" width="100px;" loading=lazy /><br /><sub><b>Alex Amiryan</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=alexamiryan" title="Documentation">📖</a></td>
|
||||||
|
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://github.com/alexshoup"><img src="https://avatars.githubusercontent.com/u/24282323?v=4" width="100px;" loading=lazy /><br /><sub><b>Alex Shoup</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=alexshoup" title="Documentation">📖</a></td>
|
||||||
|
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://alex.lol/"><img src="https://avatars.githubusercontent.com/u/1346090?v=4" width="100px;" loading=lazy /><br /><sub><b>Alex Thomassen</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=Decicus" title="Documentation">📖</a></td>
|
||||||
|
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://secluded.site/"><img src="https://avatars.githubusercontent.com/u/29460675?v=4" width="100px;" loading=lazy /><br /><sub><b>Amolith</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=Amolith" title="Documentation">📖</a></td>
|
||||||
|
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://scarpino.dev/"><img src="https://avatars.githubusercontent.com/u/529436?v=4" width="100px;" loading=lazy /><br /><sub><b>Andrea Scarpino</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=ilpianista" title="Documentation">📖</a></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://noplanman.ch/"><img src="https://avatars.githubusercontent.com/u/9423417?v=4" width="100px;" loading=lazy /><br /><sub><b>Armando Lüscher</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=noplanman" title="Documentation">📖</a></td>
|
||||||
|
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://github.com/AshTex"><img src="https://avatars.githubusercontent.com/u/11602677?v=4" width="100px;" loading=lazy /><br /><sub><b>Ash T</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=AshTex" title="Documentation">📖</a></td>
|
||||||
|
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://github.com/4-FLOSS-Free-Libre-Open-Source-Software"><img src="https://avatars.githubusercontent.com/u/46166740?v=4" width="100px;" loading=lazy /><br /><sub><b>Bernd Eichelberger</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=4-FLOSS-Free-Libre-Open-Source-Software" title="Documentation">📖</a></td>
|
||||||
|
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://github.com/BionicBison05"><img src="https://avatars.githubusercontent.com/u/93722725?v=4" width="100px;" loading=lazy /><br /><sub><b>BionicBison05</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=BionicBison05" title="Documentation">📖</a></td>
|
||||||
|
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://brentgervais.com/"><img src="https://avatars.githubusercontent.com/u/7018928?v=4" width="100px;" loading=lazy /><br /><sub><b>Brent Gervais</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=gerbrent" title="Documentation">📖</a></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://brian-cooper.com/"><img src="https://avatars.githubusercontent.com/u/20056195?v=4" width="100px;" loading=lazy /><br /><sub><b>Brian Cooper</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=coopbri" title="Documentation">📖</a></td>
|
||||||
|
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://github.com/Caboose700"><img src="https://avatars.githubusercontent.com/u/10017396?v=4" width="100px;" loading=lazy /><br /><sub><b>Caboose700</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=Caboose700" title="Documentation">📖</a></td>
|
||||||
|
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://www.cadelwatson.com/"><img src="https://avatars.githubusercontent.com/u/1031518?v=4" width="100px;" loading=lazy /><br /><sub><b>Cadel Watson</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=kdelwat" title="Documentation">📖</a></td>
|
||||||
|
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://github.com/trosel"><img src="https://avatars.githubusercontent.com/u/1299322?v=4" width="100px;" loading=lazy /><br /><sub><b>trosel</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=trosel" title="Documentation">📖</a></td>
|
||||||
|
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://www.bromite.org/"><img src="https://avatars.githubusercontent.com/u/32685696?v=4" width="100px;" loading=lazy /><br /><sub><b>Carl</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=csagan5" title="Documentation">📖</a></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://github.com/Deimos"><img src="https://avatars.githubusercontent.com/u/9033?v=4" width="100px;" loading=lazy /><br /><sub><b>Chad Birch</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=Deimos" title="Documentation">📖</a></td>
|
||||||
|
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://barry.im/"><img src="https://avatars.githubusercontent.com/u/1405770?v=4" width="100px;" loading=lazy /><br /><sub><b>Chris Barry</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=chris-barry" title="Documentation">📖</a></td>
|
||||||
|
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://github.com/claudiojulioferraz"><img src="https://avatars.githubusercontent.com/u/7096023?v=4" width="100px;" loading=lazy /><br /><sub><b>Júlio Ferraz</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=claudiojulioferraz" title="Documentation">📖</a></td>
|
||||||
|
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://github.com/JackH3103"><img src="https://avatars.githubusercontent.com/u/23507259?v=4" width="100px;" loading=lazy /><br /><sub><b>Jack Hill</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=JackH3103" title="Documentation">📖</a></td>
|
||||||
|
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://github.com/mathiazom"><img src="https://avatars.githubusercontent.com/u/24361490?v=4" width="100px;" loading=lazy /><br /><sub><b>Mathias Oterhals Myklebust</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=mathiazom" title="Documentation">📖</a></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://www.mxe.no/"><img src="https://avatars.githubusercontent.com/u/10927304?v=4" width="100px;" loading=lazy /><br /><sub><b>Mats Estensen</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=matsest" title="Documentation">📖</a></td>
|
||||||
|
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://write.as/matt/"><img src="https://avatars.githubusercontent.com/u/1138779?v=4" width="100px;" loading=lazy /><br /><sub><b>Matt Baer</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=thebaer" title="Documentation">📖</a></td>
|
||||||
|
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://github.com/mehdichaouch"><img src="https://avatars.githubusercontent.com/u/861701?v=4" width="100px;" loading=lazy /><br /><sub><b>Mehdi Chaouch</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=mehdichaouch" title="Documentation">📖</a></td>
|
||||||
|
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://github.com/mjperrone"><img src="https://avatars.githubusercontent.com/u/3848371?v=4" width="100px;" loading=lazy /><br /><sub><b>Mike Perrone</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=mjperrone" title="Documentation">📖</a></td>
|
||||||
|
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://github.com/MitchWilkins"><img src="https://avatars.githubusercontent.com/u/17414866?v=4" width="100px;" loading=lazy /><br /><sub><b>Mitch Wilkins</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=MitchWilkins" title="Documentation">📖</a></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://github.com/moughxyz"><img src="https://avatars.githubusercontent.com/u/3277844?v=4" width="100px;" loading=lazy /><br /><sub><b>Mo</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=moughxyz" title="Documentation">📖</a></td>
|
||||||
|
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://linderud.dev/"><img src="https://avatars.githubusercontent.com/u/1042946?v=4" width="100px;" loading=lazy /><br /><sub><b>Morten Linderud</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=Foxboron" title="Documentation">📖</a></td>
|
||||||
|
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://github.com/natzim"><img src="https://avatars.githubusercontent.com/u/103460227?v=4" width="100px;" loading=lazy /><br /><sub><b>natzim</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=natzim" title="Documentation">📖</a></td>
|
||||||
|
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://github.com/Nautman"><img src="https://avatars.githubusercontent.com/u/28629647?v=4" width="100px;" loading=lazy /><br /><sub><b>Douglas</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=Nautman" title="Documentation">📖</a></td>
|
||||||
|
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://nearwood.dev/"><img src="https://avatars.githubusercontent.com/u/1929778?v=4" width="100px;" loading=lazy /><br /><sub><b>Nick</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=nearwood" title="Documentation">📖</a></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://github.com/NielDB"><img src="https://avatars.githubusercontent.com/u/25815880?v=4" width="100px;" loading=lazy /><br /><sub><b>NielDB</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=NielDB" title="Documentation">📖</a></td>
|
||||||
|
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://nihal-raj.github.io/"><img src="https://avatars.githubusercontent.com/u/83210067?v=4" width="100px;" loading=lazy /><br /><sub><b>Nihal Raj</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=Nihal-Raj" title="Documentation">📖</a></td>
|
||||||
|
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://gitlab.com/NoahGray"><img src="https://avatars.githubusercontent.com/u/3739277?v=4" width="100px;" loading=lazy /><br /><sub><b>Noah</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=OKNoah" title="Documentation">📖</a></td>
|
||||||
|
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://github.com/n0toose"><img src="https://avatars.githubusercontent.com/u/30193966?v=4" width="100px;" loading=lazy /><br /><sub><b>Panagiotis "Ivory" Vasilopoulos</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=n0toose" title="Documentation">📖</a></td>
|
||||||
|
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://pacr.dev/"><img src="https://avatars.githubusercontent.com/u/32212089?v=4" width="100px;" loading=lazy /><br /><sub><b>Patrick R</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=xDazld" title="Documentation">📖</a></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="http://fart.attorney/"><img src="https://avatars.githubusercontent.com/u/12037849?v=4" width="100px;" loading=lazy /><br /><sub><b>Fart Attorney</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=fartattorney" title="Documentation">📖</a></td>
|
||||||
|
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://github.com/pilou-"><img src="https://avatars.githubusercontent.com/u/1356830?v=4" width="100px;" loading=lazy /><br /><sub><b>Pilou</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=pilou-" title="Documentation">📖</a></td>
|
||||||
|
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://github.com/PoorPocketsMcNewHold"><img src="https://avatars.githubusercontent.com/u/13170204?v=4" width="100px;" loading=lazy /><br /><sub><b>PoorPockets McNewHold</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=PoorPocketsMcNewHold" title="Documentation">📖</a> <a href="#translation-PoorPocketsMcNewHold" title="Translation">🌍</a></td>
|
||||||
|
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://github.com/PrinceKael"><img src="https://avatars.githubusercontent.com/u/44752304?v=4" width="100px;" loading=lazy /><br /><sub><b>PrinceKael</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=PrinceKael" title="Documentation">📖</a></td>
|
||||||
|
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://mail.protonmail.com/"><img src="https://avatars.githubusercontent.com/u/1345786?v=4" width="100px;" loading=lazy /><br /><sub><b>Richard</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=EpokK" title="Documentation">📖</a></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://github.com/walletdude"><img src="https://avatars.githubusercontent.com/u/19595856?v=4" width="100px;" loading=lazy /><br /><sub><b>Jaden Site</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=walletdude" title="Documentation">📖</a></td>
|
||||||
|
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="http://www.jakezeal.com/"><img src="https://avatars.githubusercontent.com/u/13857938?v=4" width="100px;" loading=lazy /><br /><sub><b>Jake Zeal</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=jakezeal" title="Documentation">📖</a></td>
|
||||||
|
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://github.com/thatrobotdev"><img src="https://avatars.githubusercontent.com/u/18013689?v=4" width="100px;" loading=lazy /><br /><sub><b>James Kerrane</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=thatrobotdev" title="Documentation">📖</a></td>
|
||||||
|
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://github.com/sell"><img src="https://avatars.githubusercontent.com/u/34258275?v=4" width="100px;" loading=lazy /><br /><sub><b>Sell</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=sell" title="Documentation">📖</a></td>
|
||||||
|
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://fmbase.tw/blog/"><img src="https://avatars.githubusercontent.com/u/2720857?v=4" width="100px;" loading=lazy /><br /><sub><b>YMHuang</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=ymhuang0808" title="Documentation">📖</a></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://github.com/jonathanvansina"><img src="https://avatars.githubusercontent.com/u/25825247?v=4" width="100px;" loading=lazy /><br /><sub><b>Jonathan Vansina</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=jonathanvansina" title="Documentation">📖</a></td>
|
||||||
|
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://github.com/jorgeluiscarrillo"><img src="https://avatars.githubusercontent.com/u/33134232?v=4" width="100px;" loading=lazy /><br /><sub><b>jorgeluiscarrillo</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=jorgeluiscarrillo" title="Documentation">📖</a></td>
|
||||||
|
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://julianfairfax.gitlab.io/"><img src="https://avatars.githubusercontent.com/u/43753131?v=4" width="100px;" loading=lazy /><br /><sub><b>Julian</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=julianfairfax" title="Documentation">📖</a></td>
|
||||||
|
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://github.com/Kefaku"><img src="https://avatars.githubusercontent.com/u/114934849?v=4" width="100px;" loading=lazy /><br /><sub><b>Kefaku</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=Kefaku" title="Documentation">📖</a></td>
|
||||||
|
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://github.com/kmgb"><img src="https://avatars.githubusercontent.com/u/25809479?v=4" width="100px;" loading=lazy /><br /><sub><b>Kevin Brennan</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=kmgb" title="Documentation">📖</a></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="http://www.kylespearrin.com/"><img src="https://avatars.githubusercontent.com/u/1190944?v=4" width="100px;" loading=lazy /><br /><sub><b>Kyle Spearrin</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=kspearrin" title="Documentation">📖</a></td>
|
||||||
|
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://leonallen22.github.io/"><img src="https://avatars.githubusercontent.com/u/5651701?v=4" width="100px;" loading=lazy /><br /><sub><b>Leon Allen</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=leonallen22" title="Documentation">📖</a></td>
|
||||||
|
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://github.com/LisaWilbourn"><img src="https://avatars.githubusercontent.com/u/67932294?v=4" width="100px;" loading=lazy /><br /><sub><b>LisaWilbourn</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=LisaWilbourn" title="Documentation">📖</a></td>
|
||||||
|
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://github.com/LordShedy"><img src="https://avatars.githubusercontent.com/u/1622827?v=4" width="100px;" loading=lazy /><br /><sub><b>Lord Shedy</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=LordShedy" title="Documentation">📖</a></td>
|
||||||
|
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://github.com/louiswolfers"><img src="https://avatars.githubusercontent.com/u/7440721?v=4" width="100px;" loading=lazy /><br /><sub><b>Louis Wolfers</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=louiswolfers" title="Documentation">📖</a></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://github.com/lunush"><img src="https://avatars.githubusercontent.com/u/76045303?v=4" width="100px;" loading=lazy /><br /><sub><b>Lunush</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=lunush" title="Documentation">📖</a></td>
|
||||||
|
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://github.com/mmrabbani"><img src="https://avatars.githubusercontent.com/u/56675802?v=4" width="100px;" loading=lazy /><br /><sub><b>MMR</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=mmrabbani" title="Documentation">📖</a></td>
|
||||||
|
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://github.com/StoppingBuck"><img src="https://avatars.githubusercontent.com/u/8426548?v=4" width="100px;" loading=lazy /><br /><sub><b>Mads Peter Rommedahl</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=StoppingBuck" title="Documentation">📖</a></td>
|
||||||
|
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://github.com/mq1"><img src="https://avatars.githubusercontent.com/u/29694921?v=4" width="100px;" loading=lazy /><br /><sub><b>Manuel Quarneti</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=mq1" title="Documentation">📖</a></td>
|
||||||
|
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://twitter.com/ocramleznem"><img src="https://avatars.githubusercontent.com/u/1401770?v=4" width="100px;" loading=lazy /><br /><sub><b>Marco Menzel</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=ocramleznem" title="Documentation">📖</a></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://github.com/FishCoding"><img src="https://avatars.githubusercontent.com/u/16527725?v=4" width="100px;" loading=lazy /><br /><sub><b>Mario</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=FishCoding" title="Documentation">📖</a></td>
|
||||||
|
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://skye.sh/"><img src="https://avatars.githubusercontent.com/u/48442092?v=4" width="100px;" loading=lazy /><br /><sub><b>skye</b></sub></a><br /><a href="#question-dioxias" title="Answering Questions">💬</a></td>
|
||||||
|
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://github.com/r2fo"><img src="https://avatars.githubusercontent.com/u/50496756?v=4" width="100px;" loading=lazy /><br /><sub><b>r2fo</b></sub></a><br /><a href="#translation-r2fo" title="Translation">🌍</a></td>
|
||||||
|
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://lamtrinh.dev/"><img src="https://avatars.githubusercontent.com/u/49742151?v=4" width="100px;" loading=lazy /><br /><sub><b>LamTrinh.Dev</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=lamtrinhdev" title="Documentation">📖</a> <a href="https://github.com/privacyguides/privacyguides.org/issues?q=author%3Alamtrinhdev" title="Bug reports">🐛</a> <a href="#question-lamtrinhdev" title="Answering Questions">💬</a></td>
|
||||||
|
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://discuss.privacyguides.net/u/frostlike"><img src="https://forum-cdn.privacyguides.net/user_avatar/discuss.privacyguides.net/frostlike/288/3600_2.png" width="100px;" loading=lazy /><br /><sub><b>frostlike</b></sub></a><br /><a href="#question" title="Answering Questions">💬</a></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://scholz.ruhr/"><img src="https://avatars.githubusercontent.com/u/21988035?v=4" width="100px;" loading=lazy /><br /><sub><b>Merlin Scholz</b></sub></a><br /><a href="#translation-merlinscholz" title="Translation">🌍</a></td>
|
||||||
|
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://jordanwarne.net/"><img src="https://avatars.githubusercontent.com/u/154663344?v=4" width="100px;" loading=lazy /><br /><sub><b>jordan warne</b></sub></a><br /><a href="https://github.com/privacyguides/privacyguides.org/commits?author=jordan-warne" title="Documentation">📖</a></td>
|
||||||
|
<td align="center" valign="top" width="20%"><a rel="nofollow noopener noreferrer" href="https://github.com/Dzenan"><img src="https://avatars.githubusercontent.com/u/69632324?v=4" width="100px;" loading=lazy /><br /><sub><b>Dženan</b></sub></a><br /><a href="#translation-dzenan" title="Translation">🌍</a></td>
|
||||||
|
</tr>
|
||||||
|
</tbody>
|
||||||
|
<tfoot>
|
||||||
|
<tr>
|
||||||
|
<td align="center" size="13px" colspan="5">
|
||||||
|
<img src="https://raw.githubusercontent.com/all-contributors/all-contributors-cli/1b8533af435da9854653492b1327a23a4dbd0a10/assets/logo-small.svg">
|
||||||
|
<a href="https://all-contributors.js.org/docs/en/bot/usage">Add your contributions</a>
|
||||||
|
</img>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</tfoot>
|
||||||
|
</table>
|
||||||
|
|
||||||
|
<!-- markdownlint-restore -->
|
||||||
|
<!-- prettier-ignore-end -->
|
||||||
|
|
||||||
|
<!-- ALL-CONTRIBUTORS-LIST:END -->
|
||||||
|
|
||||||
|
This project follows the [all-contributors](https://github.com/all-contributors/all-contributors) specification. Contributions of **any** kind welcome, including contributions to Privacy Guides outside of this repo, and contributions that aren't content related (like sharing ideas for Privacy Guides, promoting the project, answering questions on the forum, etc.).
|
||||||
|
|
||||||
|
CLI to generate this table:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
npx --package all-contributors-cli -- npx all-contributors generate
|
||||||
|
```
|
||||||
|
|
||||||
|
CLI to add a contributor:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
npx --package all-contributors-cli -- npx all-contributors add <username> <contribution>
|
||||||
|
```
|
||||||
|
|
||||||
|
See [this table](https://allcontributors.org/docs/en/emoji-key) for valid contribution reasons, comma-separated. Do **not** use the `content` code for contributors to the website, use `docs` instead (this way it will automatically link to their commits). Example:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
npx --package all-contributors-cli -- npx all-contributors add jonaharagon docs,research,question
|
||||||
|
```
|
||||||
|
36
_config.yml
36
_config.yml
@ -1,36 +0,0 @@
|
|||||||
title: Privacy Guides
|
|
||||||
email: jonah@privacyguides.org
|
|
||||||
description: >- # this means to ignore newlines until "baseurl:"
|
|
||||||
Massive organizations are monitoring your online activities.
|
|
||||||
Privacy Guides is your central privacy and security resource to protect yourself online.
|
|
||||||
baseurl: "" # the subpath of your site, e.g. /blog
|
|
||||||
url: "https://www.privacyguides.org" # the base hostname & protocol for your site, e.g. http://example.com
|
|
||||||
sass:
|
|
||||||
sass_dir: _sass
|
|
||||||
permalink: pretty
|
|
||||||
excerpt_separator: <!--more-->
|
|
||||||
collections_dir: collections
|
|
||||||
collections:
|
|
||||||
evergreen:
|
|
||||||
output: true
|
|
||||||
permalink: /:slug/
|
|
||||||
pages:
|
|
||||||
output: true
|
|
||||||
permalink: /:path/
|
|
||||||
posts:
|
|
||||||
permalink: /blog/:year/:month/:day/:title/
|
|
||||||
people:
|
|
||||||
permalink: /blog/authors/:path/
|
|
||||||
|
|
||||||
build:
|
|
||||||
date:
|
|
||||||
time:
|
|
||||||
|
|
||||||
kramdown:
|
|
||||||
auto_ids: true
|
|
||||||
|
|
||||||
# Build settings
|
|
||||||
plugins:
|
|
||||||
- jekyll-brotli
|
|
||||||
- jekyll-sitemap
|
|
||||||
exclude: [privacytools.io/]
|
|
@ -1,249 +0,0 @@
|
|||||||
AF: Afghanistan
|
|
||||||
AX: 'Åland Islands'
|
|
||||||
AL: Albania
|
|
||||||
DZ: Algeria
|
|
||||||
AS: 'American Samoa'
|
|
||||||
AD: Andorra
|
|
||||||
AO: Angola
|
|
||||||
AI: Anguilla
|
|
||||||
AQ: Antarctica
|
|
||||||
AG: 'Antigua & Barbuda'
|
|
||||||
AR: Argentina
|
|
||||||
AM: Armenia
|
|
||||||
AW: Aruba
|
|
||||||
AU: Australia
|
|
||||||
AT: Austria
|
|
||||||
AZ: Azerbaijan
|
|
||||||
BS: Bahamas
|
|
||||||
BH: Bahrain
|
|
||||||
BD: Bangladesh
|
|
||||||
BB: Barbados
|
|
||||||
BY: Belarus
|
|
||||||
BE: Belgium
|
|
||||||
BZ: Belize
|
|
||||||
BJ: Benin
|
|
||||||
BM: Bermuda
|
|
||||||
BT: Bhutan
|
|
||||||
BO: Bolivia
|
|
||||||
BA: 'Bosnia & Herzegovina'
|
|
||||||
BW: Botswana
|
|
||||||
BV: 'Bouvet Island'
|
|
||||||
BR: Brazil
|
|
||||||
IO: 'British Indian Ocean Territory'
|
|
||||||
VG: 'British Virgin Islands'
|
|
||||||
BN: Brunei
|
|
||||||
BG: Bulgaria
|
|
||||||
BF: 'Burkina Faso'
|
|
||||||
BI: Burundi
|
|
||||||
KH: Cambodia
|
|
||||||
CM: Cameroon
|
|
||||||
CA: Canada
|
|
||||||
CV: 'Cape Verde'
|
|
||||||
BQ: 'Caribbean Netherlands'
|
|
||||||
KY: 'Cayman Islands'
|
|
||||||
CF: 'Central African Republic'
|
|
||||||
TD: Chad
|
|
||||||
CL: Chile
|
|
||||||
CN: China
|
|
||||||
CX: 'Christmas Island'
|
|
||||||
CC: 'Cocos (Keeling) Islands'
|
|
||||||
CO: Colombia
|
|
||||||
KM: Comoros
|
|
||||||
CG: 'Congo - Brazzaville'
|
|
||||||
CD: 'Congo - Kinshasa'
|
|
||||||
CK: 'Cook Islands'
|
|
||||||
CR: 'Costa Rica'
|
|
||||||
CI: 'Côte d’Ivoire'
|
|
||||||
HR: Croatia
|
|
||||||
CU: Cuba
|
|
||||||
CW: Curaçao
|
|
||||||
CY: Cyprus
|
|
||||||
CZ: Czechia
|
|
||||||
DK: Denmark
|
|
||||||
DJ: Djibouti
|
|
||||||
DM: Dominica
|
|
||||||
DO: 'Dominican Republic'
|
|
||||||
EC: Ecuador
|
|
||||||
EG: Egypt
|
|
||||||
SV: 'El Salvador'
|
|
||||||
GQ: 'Equatorial Guinea'
|
|
||||||
ER: Eritrea
|
|
||||||
EE: Estonia
|
|
||||||
SZ: Eswatini
|
|
||||||
ET: Ethiopia
|
|
||||||
FK: 'Falkland Islands'
|
|
||||||
FO: 'Faroe Islands'
|
|
||||||
FJ: Fiji
|
|
||||||
FI: Finland
|
|
||||||
FR: France
|
|
||||||
GF: 'French Guiana'
|
|
||||||
PF: 'French Polynesia'
|
|
||||||
TF: 'French Southern Territories'
|
|
||||||
GA: Gabon
|
|
||||||
GM: Gambia
|
|
||||||
GE: Georgia
|
|
||||||
DE: Germany
|
|
||||||
GH: Ghana
|
|
||||||
GI: Gibraltar
|
|
||||||
GR: Greece
|
|
||||||
GL: Greenland
|
|
||||||
GD: Grenada
|
|
||||||
GP: Guadeloupe
|
|
||||||
GU: Guam
|
|
||||||
GT: Guatemala
|
|
||||||
GG: Guernsey
|
|
||||||
GN: Guinea
|
|
||||||
GW: Guinea-Bissau
|
|
||||||
GY: Guyana
|
|
||||||
HT: Haiti
|
|
||||||
HM: 'Heard & McDonald Islands'
|
|
||||||
HN: Honduras
|
|
||||||
HK: 'Hong Kong SAR China'
|
|
||||||
HU: Hungary
|
|
||||||
IS: Iceland
|
|
||||||
IN: India
|
|
||||||
ID: Indonesia
|
|
||||||
IR: Iran
|
|
||||||
IQ: Iraq
|
|
||||||
IE: Ireland
|
|
||||||
IM: 'Isle of Man'
|
|
||||||
IL: Israel
|
|
||||||
IT: Italy
|
|
||||||
JM: Jamaica
|
|
||||||
JP: Japan
|
|
||||||
JE: Jersey
|
|
||||||
JO: Jordan
|
|
||||||
KZ: Kazakhstan
|
|
||||||
KE: Kenya
|
|
||||||
KI: Kiribati
|
|
||||||
KW: Kuwait
|
|
||||||
KG: Kyrgyzstan
|
|
||||||
LA: Laos
|
|
||||||
LV: Latvia
|
|
||||||
LB: Lebanon
|
|
||||||
LS: Lesotho
|
|
||||||
LR: Liberia
|
|
||||||
LY: Libya
|
|
||||||
LI: Liechtenstein
|
|
||||||
LT: Lithuania
|
|
||||||
LU: Luxembourg
|
|
||||||
MO: 'Macao SAR China'
|
|
||||||
MG: Madagascar
|
|
||||||
MW: Malawi
|
|
||||||
MY: Malaysia
|
|
||||||
MV: Maldives
|
|
||||||
ML: Mali
|
|
||||||
MT: Malta
|
|
||||||
MH: 'Marshall Islands'
|
|
||||||
MQ: Martinique
|
|
||||||
MR: Mauritania
|
|
||||||
MU: Mauritius
|
|
||||||
YT: Mayotte
|
|
||||||
MX: Mexico
|
|
||||||
FM: Micronesia
|
|
||||||
MD: Moldova
|
|
||||||
MC: Monaco
|
|
||||||
MN: Mongolia
|
|
||||||
ME: Montenegro
|
|
||||||
MS: Montserrat
|
|
||||||
MA: Morocco
|
|
||||||
MZ: Mozambique
|
|
||||||
MM: 'Myanmar (Burma)'
|
|
||||||
NA: Namibia
|
|
||||||
NR: Nauru
|
|
||||||
NP: Nepal
|
|
||||||
NL: Netherlands
|
|
||||||
NC: 'New Caledonia'
|
|
||||||
NZ: 'New Zealand'
|
|
||||||
NI: Nicaragua
|
|
||||||
NE: Niger
|
|
||||||
NG: Nigeria
|
|
||||||
NU: Niue
|
|
||||||
NF: 'Norfolk Island'
|
|
||||||
KP: 'North Korea'
|
|
||||||
MK: 'North Macedonia'
|
|
||||||
MP: 'Northern Mariana Islands'
|
|
||||||
'NO': Norway
|
|
||||||
OM: Oman
|
|
||||||
PK: Pakistan
|
|
||||||
PW: Palau
|
|
||||||
PS: 'Palestinian Territories'
|
|
||||||
PA: Panama
|
|
||||||
PG: 'Papua New Guinea'
|
|
||||||
PY: Paraguay
|
|
||||||
PE: Peru
|
|
||||||
PH: Philippines
|
|
||||||
PN: 'Pitcairn Islands'
|
|
||||||
PL: Poland
|
|
||||||
PT: Portugal
|
|
||||||
PR: 'Puerto Rico'
|
|
||||||
QA: Qatar
|
|
||||||
RE: Réunion
|
|
||||||
RO: Romania
|
|
||||||
RU: Russia
|
|
||||||
RW: Rwanda
|
|
||||||
WS: Samoa
|
|
||||||
SM: 'San Marino'
|
|
||||||
ST: 'São Tomé & Príncipe'
|
|
||||||
SA: 'Saudi Arabia'
|
|
||||||
SN: Senegal
|
|
||||||
RS: Serbia
|
|
||||||
SC: Seychelles
|
|
||||||
SL: 'Sierra Leone'
|
|
||||||
SG: Singapore
|
|
||||||
SX: 'Sint Maarten'
|
|
||||||
SK: Slovakia
|
|
||||||
SI: Slovenia
|
|
||||||
SB: 'Solomon Islands'
|
|
||||||
SO: Somalia
|
|
||||||
ZA: 'South Africa'
|
|
||||||
GS: 'South Georgia & South Sandwich Islands'
|
|
||||||
KR: 'South Korea'
|
|
||||||
SS: 'South Sudan'
|
|
||||||
ES: Spain
|
|
||||||
LK: 'Sri Lanka'
|
|
||||||
BL: 'St. Barthélemy'
|
|
||||||
SH: 'St. Helena'
|
|
||||||
KN: 'St. Kitts & Nevis'
|
|
||||||
LC: 'St. Lucia'
|
|
||||||
MF: 'St. Martin'
|
|
||||||
PM: 'St. Pierre & Miquelon'
|
|
||||||
VC: 'St. Vincent & Grenadines'
|
|
||||||
SD: Sudan
|
|
||||||
SR: Suriname
|
|
||||||
SJ: 'Svalbard & Jan Mayen'
|
|
||||||
SE: Sweden
|
|
||||||
CH: Switzerland
|
|
||||||
SY: Syria
|
|
||||||
TW: Taiwan
|
|
||||||
TJ: Tajikistan
|
|
||||||
TZ: Tanzania
|
|
||||||
TH: Thailand
|
|
||||||
TL: Timor-Leste
|
|
||||||
TG: Togo
|
|
||||||
TK: Tokelau
|
|
||||||
TO: Tonga
|
|
||||||
TT: 'Trinidad & Tobago'
|
|
||||||
TN: Tunisia
|
|
||||||
TR: Turkey
|
|
||||||
TM: Turkmenistan
|
|
||||||
TC: 'Turks & Caicos Islands'
|
|
||||||
TV: Tuvalu
|
|
||||||
UM: 'U.S. Outlying Islands'
|
|
||||||
VI: 'U.S. Virgin Islands'
|
|
||||||
UG: Uganda
|
|
||||||
UA: Ukraine
|
|
||||||
AE: 'United Arab Emirates'
|
|
||||||
GB: 'United Kingdom'
|
|
||||||
US: 'United States'
|
|
||||||
UY: Uruguay
|
|
||||||
UZ: Uzbekistan
|
|
||||||
VU: Vanuatu
|
|
||||||
VA: 'Vatican City'
|
|
||||||
VE: Venezuela
|
|
||||||
VN: Vietnam
|
|
||||||
WF: 'Wallis & Futuna'
|
|
||||||
EH: 'Western Sahara'
|
|
||||||
YE: Yemen
|
|
||||||
ZM: Zambia
|
|
||||||
ZW: Zimbabwe
|
|
@ -1,23 +0,0 @@
|
|||||||
title: AdGuard
|
|
||||||
homepage: 'https://adguard.com/en/adguard-dns/overview.html'
|
|
||||||
source: 'https://github.com/AdguardTeam/AdGuardDNS/'
|
|
||||||
privacy_policy:
|
|
||||||
link: 'https://adguard.com/en/privacy/dns.html'
|
|
||||||
type:
|
|
||||||
name: Commercial
|
|
||||||
logs:
|
|
||||||
policy: true
|
|
||||||
text: Some
|
|
||||||
link: 'https://adguard.com/en/privacy/dns.html'
|
|
||||||
tooltip: >-
|
|
||||||
We store aggregated performance metrics of our DNS server, namely the number of complete requests to a particular server, the number of blocked requests, the speed of processing requests.
|
|
||||||
We keep and store the database of domains requested in the last 24 hours. We need this information to identify and block new trackers and threats.
|
|
||||||
We also log how many times this or that tracker has been blocked. We need this information to remove outdated rules from our filters.
|
|
||||||
protocols:
|
|
||||||
- name: Cleartext
|
|
||||||
- name: DoH
|
|
||||||
- name: DoT
|
|
||||||
- name: DNSCrypt
|
|
||||||
ecs:
|
|
||||||
status: false
|
|
||||||
filtering: Based on server choice. Filter list being used can be found here.
|
|
@ -1,21 +0,0 @@
|
|||||||
title: Cloudflare
|
|
||||||
homepage: 'https://developers.cloudflare.com/1.1.1.1/setting-up-1.1.1.1/'
|
|
||||||
privacy_policy:
|
|
||||||
link: 'https://www.cloudflare.com/privacypolicy/'
|
|
||||||
type:
|
|
||||||
name: Commercial
|
|
||||||
logs:
|
|
||||||
policy: true
|
|
||||||
text: Some
|
|
||||||
link: 'https://developers.cloudflare.com/1.1.1.1/privacy/public-dns-resolver/'
|
|
||||||
tooltip: >-
|
|
||||||
"Cloudflare collects and stores only the limited DNS query data that is sent to the 1.1.1.1 resolver.
|
|
||||||
The 1.1.1.1 resolver service does not log personal data,
|
|
||||||
and the bulk of the limited non-personally identifiable query data is only stored for 25 hours."
|
|
||||||
protocols:
|
|
||||||
- name: Cleartext
|
|
||||||
- name: DoH
|
|
||||||
- name: DoT
|
|
||||||
ecs:
|
|
||||||
status: false
|
|
||||||
filtering: Based on server choice.
|
|
@ -1,19 +0,0 @@
|
|||||||
title: ControlD
|
|
||||||
homepage: 'https://controld.com/'
|
|
||||||
privacy_policy:
|
|
||||||
link: 'https://controld.com/privacy'
|
|
||||||
type:
|
|
||||||
name: Commercial
|
|
||||||
logs:
|
|
||||||
policy: true
|
|
||||||
text: Optional
|
|
||||||
tooltip: >-
|
|
||||||
Neither free nor premium service have logging enabled by default. Premium users can enable logging/analytics at will.
|
|
||||||
color: info
|
|
||||||
protocols:
|
|
||||||
- name: Cleartext
|
|
||||||
- name: DoH
|
|
||||||
- name: DoT
|
|
||||||
ecs:
|
|
||||||
status: false
|
|
||||||
filtering: Based on server choice
|
|
@ -1,17 +0,0 @@
|
|||||||
title: MullvadDNS
|
|
||||||
homepage: 'https://mullvad.net/en/help/dns-over-https-and-dns-over-tls/'
|
|
||||||
source: 'https://github.com/mullvad/dns-adblock'
|
|
||||||
privacy_policy:
|
|
||||||
link: 'https://mullvad.net/en/help/privacy-policy/'
|
|
||||||
tooltip: >-
|
|
||||||
"Our public DNS service offers DNS over HTTPS (DoH) and DNS over TLS (DoT), with QNAME minimization and basic ad blocking. It has been audited by the security experts at Assured. You can use this privacy-enhancing service even if you don't use Mullvad."
|
|
||||||
type:
|
|
||||||
name: Commercial
|
|
||||||
logs:
|
|
||||||
policy: false
|
|
||||||
protocols:
|
|
||||||
- name: DoH
|
|
||||||
- name: DoT
|
|
||||||
ecs:
|
|
||||||
status: false
|
|
||||||
filtering: Based on server choice. Filter list being used can be found here.
|
|
@ -1,22 +0,0 @@
|
|||||||
title: NextDNS
|
|
||||||
homepage: 'https://www.nextdns.io/'
|
|
||||||
privacy_policy:
|
|
||||||
link: 'https://www.nextdns.io/privacy'
|
|
||||||
type:
|
|
||||||
name: Commercial
|
|
||||||
logs:
|
|
||||||
policy: true
|
|
||||||
text: Optional
|
|
||||||
tooltip: >-
|
|
||||||
NextDNS can provide insights and logging features on an opt-in basis.
|
|
||||||
Users can choose retention times and log storage locations for any logs they choose to keep.
|
|
||||||
color: info
|
|
||||||
protocols:
|
|
||||||
- name: Cleartext
|
|
||||||
- name: DoH
|
|
||||||
- name: DoT
|
|
||||||
- name: DNSCrypt
|
|
||||||
ecs:
|
|
||||||
status: true
|
|
||||||
text: Optional
|
|
||||||
filtering: Based on server choice
|
|
@ -1,17 +0,0 @@
|
|||||||
title: Quad9
|
|
||||||
homepage: 'https://quad9.net/'
|
|
||||||
privacy_policy:
|
|
||||||
link: 'https://quad9.net/service/privacy'
|
|
||||||
type:
|
|
||||||
name: Non-Profit
|
|
||||||
logs:
|
|
||||||
policy: false
|
|
||||||
protocols:
|
|
||||||
- name: Cleartext
|
|
||||||
- name: DoH
|
|
||||||
- name: DoT
|
|
||||||
- name: DNSCrypt
|
|
||||||
ecs:
|
|
||||||
status: true
|
|
||||||
text: Optional
|
|
||||||
filtering: Based on server choice, Malware blocking by default
|
|
@ -1,31 +0,0 @@
|
|||||||
type: dropdown
|
|
||||||
title: Providers
|
|
||||||
items:
|
|
||||||
- type: link
|
|
||||||
title: Cloud Storage
|
|
||||||
icon: fad fa-cloud
|
|
||||||
file: _evergreen/cloud.md
|
|
||||||
- type: link
|
|
||||||
title: DNS Servers
|
|
||||||
icon: fad fa-map-signs
|
|
||||||
file: _evergreen/dns.md
|
|
||||||
- type: link
|
|
||||||
title: Email Providers
|
|
||||||
icon: fad fa-envelope
|
|
||||||
file: legacy_pages/providers/email.html
|
|
||||||
- type: link
|
|
||||||
title: Search Engines
|
|
||||||
icon: fad fa-search-location
|
|
||||||
file: _evergreen/search-engines.md
|
|
||||||
- type: link
|
|
||||||
title: Social Networks
|
|
||||||
icon: fad fa-thumbs-up
|
|
||||||
file: legacy_pages/providers/social-networks.html
|
|
||||||
- type: link
|
|
||||||
title: Social News Aggregators
|
|
||||||
icon: fad fa-newspaper
|
|
||||||
file: legacy_pages/providers/social-news-aggregator.html
|
|
||||||
- type: link
|
|
||||||
title: VPN Services
|
|
||||||
icon: fad fa-network-wired
|
|
||||||
file: legacy_pages/providers/vpn.html
|
|
@ -1,52 +0,0 @@
|
|||||||
type: dropdown
|
|
||||||
title: Software
|
|
||||||
items:
|
|
||||||
- type: link
|
|
||||||
title: Browsers
|
|
||||||
icon: fad fa-browser
|
|
||||||
file: _evergreen/browsers.md
|
|
||||||
- type: divider
|
|
||||||
- type: link
|
|
||||||
title: Calendar/Contacts Sync Tools
|
|
||||||
icon: fad fa-calendar-day
|
|
||||||
file: legacy_pages/software/cal-card.html
|
|
||||||
- type: link
|
|
||||||
title: Digital Notebooks
|
|
||||||
icon: fad fa-edit
|
|
||||||
file: legacy_pages/software/notebooks.html
|
|
||||||
- type: link
|
|
||||||
title: Email Clients
|
|
||||||
icon: fad fa-envelope-open-text
|
|
||||||
file: legacy_pages/software/email.html
|
|
||||||
- type: link
|
|
||||||
title: File Encryption Tools
|
|
||||||
icon: fad fa-file-certificate
|
|
||||||
file: legacy_pages/software/file-encryption.html
|
|
||||||
- type: link
|
|
||||||
title: File Sharing and Sync
|
|
||||||
icon: fad fa-file-user
|
|
||||||
file: legacy_pages/software/file-sharing.html
|
|
||||||
- type: link
|
|
||||||
title: Metadata Removal Tools
|
|
||||||
icon: fad fa-file-times
|
|
||||||
file: legacy_pages/software/metadata-removal-tools.html
|
|
||||||
- type: link
|
|
||||||
title: Password Managers
|
|
||||||
icon: fad fa-user-lock
|
|
||||||
file: legacy_pages/software/passwords.html
|
|
||||||
- type: link
|
|
||||||
title: Productivity Tools
|
|
||||||
icon: fad fa-briefcase
|
|
||||||
file: legacy_pages/software/productivity.html
|
|
||||||
- type: link
|
|
||||||
title: Real-Time Communication
|
|
||||||
icon: fad fa-comments-alt
|
|
||||||
file: _evergreen/real-time-communication.md
|
|
||||||
- type: link
|
|
||||||
title: Self-Contained Networks
|
|
||||||
icon: fad fa-chart-network
|
|
||||||
file: legacy_pages/software/networks.html
|
|
||||||
- type: link
|
|
||||||
title: Video Streaming
|
|
||||||
icon: fad fa-video
|
|
||||||
file: _evergreen/video-streaming.md
|
|
@ -1,19 +0,0 @@
|
|||||||
type: dropdown
|
|
||||||
title: Operating Systems
|
|
||||||
items:
|
|
||||||
- type: link
|
|
||||||
title: Android
|
|
||||||
icon: fab fa-android
|
|
||||||
file: _evergreen/android.md
|
|
||||||
- type: link
|
|
||||||
title: Linux Desktop
|
|
||||||
icon: fab fa-linux
|
|
||||||
file: _evergreen/linux-desktop.md
|
|
||||||
- type: link
|
|
||||||
title: Qubes OS
|
|
||||||
icon: pg-qubes
|
|
||||||
file: _evergreen/qubes.md
|
|
||||||
- type: link
|
|
||||||
title: Router
|
|
||||||
icon: fa-duotone fa-circle-nodes
|
|
||||||
file: _evergreen/router.md
|
|
@ -1,7 +0,0 @@
|
|||||||
type: dropdown
|
|
||||||
title: Privacy
|
|
||||||
items:
|
|
||||||
- type: link
|
|
||||||
title: Threat Modeling
|
|
||||||
icon: fad fa-bullseye-arrow
|
|
||||||
file: _evergreen/threat-modeling.md
|
|
@ -1,3 +0,0 @@
|
|||||||
type: link
|
|
||||||
title: Blog
|
|
||||||
file: blog.html
|
|
@ -1,24 +0,0 @@
|
|||||||
title: Orbot
|
|
||||||
type: Recommendation
|
|
||||||
logo: /assets/img/android/orbot.svg
|
|
||||||
description: |
|
|
||||||
**Orbot** is a free proxy app that routes your connections through the Tor Network.
|
|
||||||
|
|
||||||
Orbot can proxy individual apps if they support SOCKS or HTTP proxying. It can also proxy all your network connections using [VpnService](https://developer.android.com/reference/android/net/VpnService) and can be used with the VPN killswitch (⚙️ Settings → Network & internet → VPN → ⚙️ → Block connections without VPN).
|
|
||||||
|
|
||||||
For resistance against traffic analysis attacks, consider enabling *Isolate Destination Address* ( ⁝ →Settings → Connectivity). This will use a completely different Tor Circuit (different middle relay and exit nodes) for every domain you connect to.
|
|
||||||
|
|
||||||
#### Notes
|
|
||||||
Orbot is often outdated on the Guardian Project's [F-Droid repository](https://guardianproject.info/fdroid) and [Google Play](https://play.google.com/store/apps/details?id=org.torproject.android) so consider downloading directly from the [GitHub repository](https://github.com/guardianproject/orbot) instead.
|
|
||||||
|
|
||||||
All versions are signed using the same signature so they should be compatible with each other.
|
|
||||||
website: 'https://orbot.app/'
|
|
||||||
downloads:
|
|
||||||
- icon: pg-f-droid
|
|
||||||
url: 'https://guardianproject.info/fdroid'
|
|
||||||
- icon: fab fa-google-play
|
|
||||||
url: 'https://play.google.com/store/apps/details?id=org.torproject.android'
|
|
||||||
- icon: fab fa-github
|
|
||||||
url: 'https://github.com/guardianproject/orbot'
|
|
||||||
- icon: fab fa-gitlab
|
|
||||||
url: 'https://gitlab.com/guardianproject/orbot'
|
|
@ -1,25 +0,0 @@
|
|||||||
title: Shelter
|
|
||||||
type: Recommendation
|
|
||||||
logo: /assets/img/android/shelter.svg
|
|
||||||
description: |
|
|
||||||
**Shelter** is an app that helps you leverage the Android work profile to isolate other apps.
|
|
||||||
|
|
||||||
Shelter supports blocking contact search cross profiles and sharing files across profiles via the default file manager ([DocumentsUI](https://source.android.com/devices/architecture/modular-system/documentsui)).
|
|
||||||
|
|
||||||
#### Notes
|
|
||||||
As CalyxOS includes a device controller, we recommend using their built in work profile instead.
|
|
||||||
|
|
||||||
Shelter is recommended over [Insular](https://secure-system.gitlab.io/Insular/) and [Island](https://github.com/oasisfeng/island) as it supports [contact search blocking](https://secure-system.gitlab.io/Insular/faq.html).
|
|
||||||
|
|
||||||
When using Shelter, you are placing complete trust in its developer as Shelter would be acting as a [Device Admin](https://developer.android.com/guide/topics/admin/device-admin) for the work profile and has extensive access to the data stored within it.
|
|
||||||
|
|
||||||
website: 'https://gitea.angry.im/PeterCxy/Shelter'
|
|
||||||
downloads:
|
|
||||||
- icon: pg-f-droid
|
|
||||||
url: 'https://f-droid.org/en/packages/net.typeblog.shelter'
|
|
||||||
- icon: fab fa-google-play
|
|
||||||
url: 'https://play.google.com/store/apps/details?id=net.typeblog.shelter'
|
|
||||||
- icon: fab fa-github
|
|
||||||
url: 'https://github.com/PeterCxy/Shelter'
|
|
||||||
- icon: fab fa-git
|
|
||||||
url: 'https://gitea.angry.im/PeterCxy/Shelter'
|
|
@ -1,26 +0,0 @@
|
|||||||
title: Auditor
|
|
||||||
type: Recommendation
|
|
||||||
logo: /assets/img/android/auditor.svg
|
|
||||||
logo_dark: /assets/img/android/auditor-dark.svg
|
|
||||||
description: |
|
|
||||||
**Auditor** is an app which leverages hardware security features to provide device integrity monitoring for [supported devices](https://attestation.app/about#device-support). It currently works with GrapheneOS and the stock operating system. It performs attestation and intrusion detection by:
|
|
||||||
|
|
||||||
* Using a [Trust On First Use (TOFU)](https://en.wikipedia.org/wiki/Trust_on_first_use) model between an *auditor* and *auditee*, the pair establish a private key in the [hardware-backed keystore](https://source.android.com/security/keystore/) of the *Auditor*.
|
|
||||||
* The *auditor* can either be another instance of the Auditor app or the [Remote Attestation Service](https://attestation.app).
|
|
||||||
* The *auditor* records the current state and configuration of the *auditee*.
|
|
||||||
* Should tampering with the operating system of the *auditee* after the pairing is complete, the auditor will be aware of the change in the device state and configurations.
|
|
||||||
* The user will be alerted to the change.
|
|
||||||
|
|
||||||
No personally identifiable information is submitted to the attestation service. We recommend that you sign up with an anonymous account and enable remote attestation for continuous monitoring.
|
|
||||||
|
|
||||||
If your [threat model](/threat-modeling/) requires privacy you could consider using Orbot or a VPN to hide your IP address from the attestation service.
|
|
||||||
|
|
||||||
To make sure that your hardware and operating system is genuine, [perform local attestation](https://grapheneos.org/install/web#verifying-installation) immediately after the device has been installed and prior to any internet connection.
|
|
||||||
|
|
||||||
website: 'https://attestation.app'
|
|
||||||
privacy_policy: 'https://attestation.app/privacy-policy'
|
|
||||||
downloads:
|
|
||||||
- icon: fab fa-google-play
|
|
||||||
url: 'https://play.google.com/store/apps/details?id=app.attestation.auditor'
|
|
||||||
- icon: fab fa-github
|
|
||||||
url: 'https://github.com/GrapheneOS/Auditor'
|
|
@ -1,23 +0,0 @@
|
|||||||
title: Secure Camera
|
|
||||||
type: Recommendation
|
|
||||||
logo: /assets/img/android/secure_camera.svg
|
|
||||||
logo_dark: /assets/img/android/secure_camera-dark.svg
|
|
||||||
description: |
|
|
||||||
**Secure Camera** is an camera app focused on privacy and security which can capture images, videos, and QR codes. CameraX vendor extensions (Portrait, HDR, Night Sight, Face Retouch, and Auto) are also supported on available devices.
|
|
||||||
|
|
||||||
Main privacy features include
|
|
||||||
- Auto removal of [Exif](https://en.wikipedia.org/wiki/Exif) metadata (enabled by default)
|
|
||||||
- Use of the new [Media](https://developer.android.com/training/data-storage/shared/media) API, therefore [storage permissions](https://developer.android.com/training/data-storage) are not required
|
|
||||||
- Microphone permission not required unless you want to record sound
|
|
||||||
|
|
||||||
### Notes
|
|
||||||
Metadata is not currently deleted from video files but that is planned.
|
|
||||||
|
|
||||||
The image orientation metadata is not deleted. If you enable location (in Secure Camera) that **won't** be deleted either. If you want to delete that later you will need to use an external app such as [Scrambled Exif](https://gitlab.com/juanitobananas/scrambled-exif/).
|
|
||||||
|
|
||||||
website: 'https://github.com/GrapheneOS/Camera'
|
|
||||||
downloads:
|
|
||||||
- icon: fab fa-google-play
|
|
||||||
url: 'https://play.google.com/store/apps/details?id=app.grapheneos.camera.play'
|
|
||||||
- icon: fab fa-github
|
|
||||||
url: 'https://github.com/GrapheneOS/Camera/releases'
|
|
@ -1,15 +0,0 @@
|
|||||||
title: Secure PDF Viewer
|
|
||||||
type: Recommendation
|
|
||||||
logo: /assets/img/android/secure_pdf_viewer.svg
|
|
||||||
logo_dark: /assets/img/android/secure_pdf_viewer-dark.svg
|
|
||||||
description: |
|
|
||||||
**Secure PDF Viewer** is a PDF viewer based on [pdf.js](https://en.wikipedia.org/wiki/PDF.js) that doesn't require any permissions. The PDF is fed into a [sandboxed](https://en.wikipedia.org/wiki/Sandbox_(software_development)) [webview](https://developer.android.com/guide/webapps/webview). This means that it doesn't require permission directly to access content or files.
|
|
||||||
|
|
||||||
[Content-Security-Policy](https://en.wikipedia.org/wiki/Content_Security_Policy) is used to enforce that the JavaScript and styling properties within the WebView are entirely static content.
|
|
||||||
|
|
||||||
website: 'https://github.com/GrapheneOS/PdfViewer'
|
|
||||||
downloads:
|
|
||||||
- icon: fab fa-google-play
|
|
||||||
url: 'https://play.google.com/store/apps/details?id=app.grapheneos.pdfviewer.play'
|
|
||||||
- icon: fab fa-github
|
|
||||||
url: 'https://github.com/GrapheneOS/PdfViewer/releases'
|
|
@ -1,16 +0,0 @@
|
|||||||
title: PrivacyBlur
|
|
||||||
type: Recommendation
|
|
||||||
logo: /assets/img/android/privacyblur.svg
|
|
||||||
description: |
|
|
||||||
**PrivacyBlur** is a free app which can blur sensitive portions of pictures before sharing them online.
|
|
||||||
|
|
||||||
### Notes
|
|
||||||
You should **never** use blur to redact [text in images](https://bishopfox.com/blog/unredacter-tool-never-pixelation). If you want to redact text in an image, draw a box over the text. For this we suggest [Pocket Paint](https://github.com/Catrobat/Paintroid) or [Imagepipe](https://codeberg.org/Starfish/Imagepipe).
|
|
||||||
website: 'https://privacyblur.app/'
|
|
||||||
downloads:
|
|
||||||
- icon: pg-f-droid
|
|
||||||
url: 'https://f-droid.org/en/packages/de.mathema.privacyblur/'
|
|
||||||
- icon: fab fa-google-play
|
|
||||||
url: 'https://play.google.com/store/apps/details?id=de.mathema.privacyblur'
|
|
||||||
- icon: fab fa-github
|
|
||||||
url: 'https://github.com/MATHEMA-GmbH/privacyblur'
|
|
@ -1,12 +0,0 @@
|
|||||||
title: Droid-ify
|
|
||||||
type: Recommendation
|
|
||||||
logo: /assets/img/android/droid-ify.png
|
|
||||||
description: |
|
|
||||||
**Droid-ify** is a modern F-Droid client made with MaterialUI, forked from [Foxy Droid](https://github.com/kitsunyan/foxy-droid).
|
|
||||||
|
|
||||||
Unlike the official F-Droid client, Droid-ify supports seamless updates on Android 12 and above without the need for a privileged extension. If your Android distribution is on Android 12 or above and does not include the [F-Droid privileged extension](https://f-droid.org/en/packages/org.fdroid.fdroid.privileged/), it is highly recommended that you use Droid-ify instead of the official client.
|
|
||||||
downloads:
|
|
||||||
- icon: fab fa-android
|
|
||||||
url: 'https://android.izzysoft.de/repo/apk/com.looker.droidify'
|
|
||||||
- icon: fab fa-github
|
|
||||||
url: 'https://github.com/Iamlooker/Droid-ify'
|
|
@ -1,20 +0,0 @@
|
|||||||
title: GrapheneOS
|
|
||||||
type: Recommendation
|
|
||||||
logo: /assets/img/android/grapheneos.svg
|
|
||||||
logo_dark: /assets/img/android/grapheneos-dark.svg
|
|
||||||
description: |
|
|
||||||
**GrapheneOS** is the best choice when it comes to privacy and security.
|
|
||||||
|
|
||||||
GrapheneOS provides additional [security hardening](https://en.wikipedia.org/wiki/Hardening_(computing)) and privacy improvements. It has a [hardened memory allocator](https://github.com/GrapheneOS/hardened_malloc), network and sensor permissions, and various other [security features](https://grapheneos.org/features). GrapheneOS also comes with full firmware updates and signed builds, so [verified boot](https://source.android.com/security/verifiedboot) is fully supported.
|
|
||||||
|
|
||||||
Notably, GrapheneOS supports [Sandboxed Google Play](https://grapheneos.org/usage#sandboxed-google-play). Google Play Services can be run fully sandboxed like a regular user app and contained in a work profile or user [profile](/android/#android-security-privacy) of your choice. This means that you can run apps dependant on Play Services, such as those that require push notifications using Google's [Firebase Cloud Messaging](https://firebase.google.com/docs/cloud-messaging/) service. GrapheneOS allows you to take advantage of most [Google Play Services](https://en.wikipedia.org/wiki/Google_Play_Services) whilst having full user control over their permissions and access.
|
|
||||||
|
|
||||||
Currently, only [Pixel phones](https://grapheneos.org/faq#device-support) meet its hardware security requirement and are supported.
|
|
||||||
|
|
||||||
#### Notes
|
|
||||||
GrapheneOS's "extended support" devices do not have full security patches (firmware updates) due to the original equipment manufacturer (OEM) discontinuing support. These devices cannot be considered completely secure.
|
|
||||||
website: 'https://grapheneos.org/'
|
|
||||||
privacy_policy: 'https://grapheneos.org/faq#privacy-policy'
|
|
||||||
downloads:
|
|
||||||
- icon: fab fa-github
|
|
||||||
url: 'https://github.com/GrapheneOS'
|
|
@ -1,22 +0,0 @@
|
|||||||
title: CalyxOS
|
|
||||||
type: Recommendation
|
|
||||||
logo: /assets/img/android/calyxos.svg
|
|
||||||
description: |
|
|
||||||
**CalyxOS** is a decent alternative to GrapheneOS.
|
|
||||||
|
|
||||||
It has some privacy features on top of AOSP, including [Datura firewall](https://calyxos.org/docs/tech/datura-details), [Signal](https://signal.org) integration in the dialer app, and a built in panic button. CalyxOS also comes with firmware updates and signed builds, so [verified boot](https://source.android.com/security/verifiedboot) is fully supported.
|
|
||||||
|
|
||||||
To accomodate users who need Google Play Services, CalyxOS optionally includes [MicroG](https://microg.org/). With MicroG, CalyxOS also bundles in the [Mozilla](https://location.services.mozilla.com/) and [DejaVu](https://github.com/n76/DejaVu) location services.
|
|
||||||
|
|
||||||
Currently, CalyxOS only supports [Pixel phones](https://calyxos.org/docs/guide/device-support/).
|
|
||||||
|
|
||||||
#### Notes
|
|
||||||
CalyxOS's "extended support" does not have full security patches due to the original equipment manufacturer (OEM) discontinuing support; therefore, they cannot be considered completely secure.
|
|
||||||
|
|
||||||
website: 'https://calyxos.org'
|
|
||||||
privacy_policy: 'https://calyxinstitute.org/legal/privacy-policy'
|
|
||||||
downloads:
|
|
||||||
- icon: fab fa-github
|
|
||||||
url: 'https://github.com/CalyxOS'
|
|
||||||
- icon: fab fa-gitlab
|
|
||||||
url: 'https://gitlab.com/calyxos'
|
|
@ -1,25 +0,0 @@
|
|||||||
title: DivestOS
|
|
||||||
type: Recommendation
|
|
||||||
logo: /assets/img/android/divestos.svg
|
|
||||||
description: |
|
|
||||||
**DivestOS** is a [soft-fork](https://en.wikipedia.org/wiki/Fork_(software_development)#Forking_of_free_and_open-source_software) of [LineageOS](https://lineageos.org/).
|
|
||||||
|
|
||||||
DivestOS inherits many [supported devices](https://divestos.org/index.php?page=devices&base=LineageOS) from LineageOS. It has signed builds, making it possible to have [verified boot](https://source.android.com/security/verifiedboot) on some non-Pixel devices.
|
|
||||||
|
|
||||||
DivestOS has automated kernel vulnerability ([CVE](https://en.wikipedia.org/wiki/Common_Vulnerabilities_and_Exposures)) [patching](https://gitlab.com/divested-mobile/cve_checker), fewer proprietary blobs, a custom [hosts](https://divested.dev/index.php?page=dnsbl) file, and [F-Droid](https://www.f-droid.org) as the app store. It includes [UnifiedNlp](https://github.com/microg/UnifiedNlp) for network location and some hardening with [Mulch Webview](https://gitlab.com/divested-mobile/mulch). Users can also select the [Bromite SystemWebView](https://www.bromite.org/system_web_view) in ⚙️ Settings → Developer options → Webview implementation. DivestOS also includes kernel patches from GrapheneOS and enables security features in [defconfig](https://github.com/Divested-Mobile/DivestOS-Build/blob/master/Scripts/Common/Functions.sh#L698).
|
|
||||||
|
|
||||||
DivestOS 16.0, 17.1, and 18.1 implements GrapheneOS's [`INTERNET`](https://developer.android.com/training/basics/network-ops/connecting) permission toggle and [hardened memory allocator](https://github.com/GrapheneOS/hardened_malloc).
|
|
||||||
|
|
||||||
#### Notes
|
|
||||||
DivestOS firmware update [status](https://gitlab.com/divested-mobile/firmware-empty/-/blob/master/STATUS) varies across the devices it supports. For Pixel phones, we still recommend using GrapheneOS or CalyxOS. For other supported devices, DivestOS is a good alternative.
|
|
||||||
|
|
||||||
Not all of the supported devices have [verified boot](https://source.android.com/security/verifiedboot), and some perform it better than others.
|
|
||||||
|
|
||||||
website: 'https://divestos.org'
|
|
||||||
website_tor: 'http://divestoseb5nncsydt7zzf5hrfg44md4bxqjs5ifcv4t7gt7u6ohjyyd.onion'
|
|
||||||
privacy_policy: 'https://divestos.org/index.php?page=privacy_policy'
|
|
||||||
downloads:
|
|
||||||
- icon: fab fa-github
|
|
||||||
url: 'https://github.com/divested-mobile'
|
|
||||||
- icon: fab fa-gitlab
|
|
||||||
url: 'https://gitlab.com/divested-mobile'
|
|
@ -1,16 +0,0 @@
|
|||||||
title: Fedora Silverblue (and Kinoite)
|
|
||||||
type: Recommendation
|
|
||||||
logo: /assets/img/linux-desktop/fedora-silverblue.svg
|
|
||||||
description: |
|
|
||||||
**Fedora Silverblue** and **Fedora Kinoite** are immutable variants of Fedora with a strong focus on container workflows. Silverblue comes with the [GNOME](https://www.gnome.org/) desktop environment while Kinoite comes with [KDE](https://kde.org/). Silverblue and Kinoite follow the same release schedule as Fedora Workstation, benefiting from the same fast updates and staying very close to upstream.
|
|
||||||
|
|
||||||
Silverblue (and Kionite) differ from Fedora Workstation as they replace the [DNF](https://fedoraproject.org/wiki/DNF) package manager with a much more advanced alternative called [`rpm-ostree`](https://docs.fedoraproject.org/en-US/fedora/rawhide/system-administrators-guide/package-management/rpm-ostree/). The `rpm-ostree` package manager works by downloading a base image for the system, then overlaying packages over it in a [git](https://en.wikipedia.org/wiki/Git)-like commit tree. When the system is updated, a new base image is downloaded and the overlays will be applied to that new image.
|
|
||||||
|
|
||||||
After the update is complete the user will reboot the system into the new deployment. `rpm-ostree` keeps two deployments of the system so that a user can easily rollback if something breaks in the new deployment. There is also the option to pin more deployments as needed.
|
|
||||||
|
|
||||||
[Flatpak](https://www.flatpak.org) is the primary package installation method on these distrbutions, as `rpm-ostree` is only meant to overlay packages that cannot stay inside of a container on top of the base image.
|
|
||||||
|
|
||||||
As an alternative to Flatpaks, there is the option of [Toolbox](https://docs.fedoraproject.org/en-US/fedora-silverblue/toolbox/) to create [Podman](https://podman.io) containers with a shared home directory with the host operating system and mimic a traditional Fedora environment, which is a [useful feature](https://containertoolbx.org) for the discerning developer.
|
|
||||||
|
|
||||||
website: 'https://silverblue.fedoraproject.org'
|
|
||||||
privacy_policy: 'https://fedoraproject.org/wiki/Legal:PrivacyPolicy#Sharing_Your_Personal_Data'
|
|
@ -1,17 +0,0 @@
|
|||||||
title: NixOS
|
|
||||||
type: Recommendation
|
|
||||||
logo: /assets/img/linux-desktop/nixos.svg
|
|
||||||
description: |
|
|
||||||
<strong>NixOS</strong> is an independent distribution based on the <a href="https://nixos.org">Nix package manager</a> with a focus on reproducibility and reliability.
|
|
||||||
|
|
||||||
NixOS's package manager keeps every version of every package in a different folder in the **Nix store**. Due to this you can have different versions of the same package installed on your system. After the package contents have been written to the folder, the folder is made read-only.
|
|
||||||
|
|
||||||
NixOS also provides atomic updates; first it downloads (or builds) the packages and files for the new system generation and then switches to it. There are different ways to switch to a new generation; you can tell NixOS to activate it after reboot or you can switch to it at runtime. You can also *test* the new generation by switching to it at runtime, but not setting it as the current system generation. If something in the update process breaks, you can just reboot and automatically and return to a working version of your system.
|
|
||||||
|
|
||||||
Nix the package manager uses a purely functional language - which is also called Nix - to define packages.
|
|
||||||
|
|
||||||
[Nixpkgs](https://github.com/nixos/nixpkgs) (the main source of packages) are contained in a single Github repository. You can also define your own packages in the same language and then easily include them in your config.
|
|
||||||
|
|
||||||
Nix is a source-based package manager; if there's no pre-built available in the binary cache, Nix will just build the package from source using its definition. It builds each package in a sandboxed *pure* environment, which is as independent of the host system as possible, thus making binaries reproducible.
|
|
||||||
|
|
||||||
website: 'https://nixos.org'
|
|
@ -1,16 +0,0 @@
|
|||||||
title: Whonix
|
|
||||||
type: Recommendation
|
|
||||||
logo: /assets/img/linux-desktop/whonix.svg
|
|
||||||
description: |
|
|
||||||
**Whonix** is based on [Kicksecure](https://www.whonix.org/wiki/Kicksecure), a security-focused fork of Debian. It aims to provide privacy, security, and anonymity on the internet.
|
|
||||||
|
|
||||||
Whonix is meant to run as two virtual machines: a "Workstation" and a Tor "Gateway". All communications from the Workstation has to go through the Tor gateway, and will be routed through the Tor Network.
|
|
||||||
|
|
||||||
Some of its features include Tor Stream Isolation, [keystroke anonymization](https://www.whonix.org/wiki/Keystroke_Deanonymization#Kloak), [encrypted swap](https://github.com/Whonix/swap-file-creator), and a hardened memory allocator.
|
|
||||||
|
|
||||||
Future versions of Whonix will likely include [full system Apparmor policies](https://github.com/Whonix/apparmor-profile-everything) and a [sandbox app launcher](https://www.whonix.org/wiki/Sandbox-app-launcher) to fully confine all processes on the system.
|
|
||||||
|
|
||||||
Whonix is best used [in conjunction with Qubes](https://www.whonix.org/wiki/Qubes/Why_use_Qubes_over_other_Virtualizers).
|
|
||||||
|
|
||||||
website: 'https://www.whonix.org/'
|
|
||||||
website_tor: 'http://www.dds6qkxpwdeubwucdiaord2xgbbeyds25rbsgr73tbfpqpt4a6vjwsyd.onion/'
|
|
@ -1,11 +0,0 @@
|
|||||||
title: Tails
|
|
||||||
type: Recommendation
|
|
||||||
logo: /assets/img/linux-desktop/tails.svg
|
|
||||||
description: |
|
|
||||||
**Tails** is a live operating system based on Debian that routes all communications through Tor.
|
|
||||||
|
|
||||||
It can boot on almost any computer from a DVD, USB stick, or sdcard. It aims to preserve privacy and anonymity while circumventing censorship and leaving no trace of itself on the computer it is used on.
|
|
||||||
|
|
||||||
By design, Tails is meant to completely reset itself after each reboot. Encrypted [persistent storage](https://tails.boum.org/doc/first_steps/persistence/index.en.html) can be configured to store some data.
|
|
||||||
|
|
||||||
website: 'https://tails.boum.org'
|
|
@ -1,13 +0,0 @@
|
|||||||
title: Fedora Workstation
|
|
||||||
type: Recommendation
|
|
||||||
logo: /assets/img/linux-desktop/fedora-workstation.svg
|
|
||||||
labels: 'color==info::icon==fas fa-fw fa-trophy::text==Beginner friendly::tooltip==We highly recommend that new Linux users use Fedora Workstation.'
|
|
||||||
description: |
|
|
||||||
**Fedora Workstation** is our recommended distribution for users new to Linux.
|
|
||||||
|
|
||||||
It has a semi-[rolling release](https://en.wikipedia.org/wiki/Rolling_release) cycle. While some packages like [GNOME](https://www.gnome.org) are frozen until the next Fedora release, most packages (including the kernel) are updated frequently throughout the lifespan of the release. Each Fedora release is supported for one year, with a new version released every 6 months.
|
|
||||||
|
|
||||||
Fedora generally adopts newer technologies before other distributions e.g., [Wayland](https://wayland.freedesktop.org/), [PipeWire](https://pipewire.org), and soon, [FS-Verity](https://fedoraproject.org/wiki/Changes/FsVerityRPM). These new technologies often come with improvements in security, privacy, and usability in general.
|
|
||||||
|
|
||||||
website: 'https://getfedora.org'
|
|
||||||
privacy_policy: 'https://fedoraproject.org/wiki/Legal:PrivacyPolicy#Sharing_Your_Personal_Data'
|
|
@ -1,11 +0,0 @@
|
|||||||
title: openSUSE Tumbleweed
|
|
||||||
type: Recommendation
|
|
||||||
logo: /assets/img/linux-desktop/opensuse-tumbleweed.svg
|
|
||||||
description: |
|
|
||||||
**openSUSE Tumbleweed** is a stable [rolling release](https://en.wikipedia.org/wiki/Rolling_release) distribution.
|
|
||||||
|
|
||||||
Tumbleweed follows a rolling release model where each update is released as a snapshot of the distribution. When the user upgrades their system, a new snapshot is downloaded. Each snapshot is run through a series of automated tests by the [openSUSE Build Service](https://build.opensuse.org) to ensure its quality.
|
|
||||||
|
|
||||||
openSUSE Tumbleweed has a [transactional update](https://kubic.opensuse.org/blog/2018-04-04-transactionalupdates/) system that uses [Btrfs](https://en.wikipedia.org/wiki/Btrfs) and [Snapper](https://en.opensuse.org/openSUSE:Snapper_Tutorial) to ensure that snapshots can be rolled back should there be a problem.
|
|
||||||
|
|
||||||
website: 'https://get.opensuse.org/tumbleweed/'
|
|
@ -1,14 +0,0 @@
|
|||||||
title: Arch Linux
|
|
||||||
type: Recommendation
|
|
||||||
logo: /assets/img/linux-desktop/archlinux.svg
|
|
||||||
description: |
|
|
||||||
**Arch Linux** is a lightweight, do-it-yourself (DIY) distribution meaning that you only get what you install. For more information see their [FAQ](https://wiki.archlinux.org/title/Frequently_asked_questions).
|
|
||||||
|
|
||||||
Arch Linux has a rolling release cycle. There is no fixed release schedule and packages are updated very frequently.
|
|
||||||
|
|
||||||
Being a DIY distribution, the user is [expected to setup and maintain](/linux-desktop/#arch-based-distributions) their system. Arch has an [official installer](https://wiki.archlinux.org/title/Archinstall) to make the installation process a little easier.
|
|
||||||
|
|
||||||
A large portion of [Arch Linux's packages](https://reproducible.archlinux.org) are [reproducible](https://reproducible-builds.org).
|
|
||||||
|
|
||||||
website: 'https://archlinux.org'
|
|
||||||
privacy_policy: 'https://wiki.archlinux.org/index.php/ArchWiki:Privacy_policy'
|
|
@ -1,11 +0,0 @@
|
|||||||
title: Qubes OS
|
|
||||||
type: Recommendation
|
|
||||||
logo: /assets/img/qubes/qubes_os.svg
|
|
||||||
description: |
|
|
||||||
**Qubes** is an open-source operating system designed to provide strong security for desktop computing. Qubes is based on Xen, the X Window System, and Linux, and can run most Linux applications and utilize most of the Linux drivers.
|
|
||||||
website: 'https://www.qubes-os.org/'
|
|
||||||
website_tor: 'http://qubesosfasa4zl44o4tws22di6kepyzfeqv3tg4e3ztknltfxqrymdad.onion/'
|
|
||||||
privacy_policy: 'https://www.qubes-os.org/privacy/'
|
|
||||||
downloads:
|
|
||||||
- icon: fab fa-github
|
|
||||||
url: 'https://github.com/QubesOS'
|
|
@ -1,14 +0,0 @@
|
|||||||
title: OpenWrt
|
|
||||||
type: Recommendation
|
|
||||||
logo: /assets/img/router/openwrt.svg
|
|
||||||
logo_dark: /assets/img/router/openwrt-dark.svg
|
|
||||||
description: |
|
|
||||||
**OpenWrt** is an operating system (in particular, an embedded operating system) based on the Linux kernel, primarily used on embedded devices to route network traffic. The main components are the Linux kernel, util-linux, uClibc, and BusyBox. All components have been optimized for size, to be small enough for fitting into the limited storage and memory available in home routers.
|
|
||||||
|
|
||||||
## Notes
|
|
||||||
Consult the [Table of Hardware](https://openwrt.org/toh/start) to check if your device is supported.
|
|
||||||
|
|
||||||
website: 'https://openwrt.org'
|
|
||||||
downloads:
|
|
||||||
- icon: fab fa-git
|
|
||||||
url: 'https://git.openwrt.org/'
|
|
@ -1,11 +0,0 @@
|
|||||||
title: pfSense
|
|
||||||
type: Recommendation
|
|
||||||
logo: /assets/img/router/pfsense.svg
|
|
||||||
logo_dark: /assets/img/router/pfsense-dark.svg
|
|
||||||
description: |
|
|
||||||
pfSense is an open source firewall/router computer software distribution based on FreeBSD. It is installed on a computer to make a dedicated firewall/router for a network and is noted for its reliability and offering features often only found in expensive commercial firewalls. pfSense is commonly deployed as a perimeter firewall, router, wireless access point, DHCP server, DNS server, and VPN endpoint.
|
|
||||||
website: 'https://www.pfsense.org'
|
|
||||||
privacy_policy: 'https://www.pfsense.org/privacy.html'
|
|
||||||
downloads:
|
|
||||||
- icon: fab fa-github
|
|
||||||
url: 'https://github.com/pfsense'
|
|
@ -1,33 +0,0 @@
|
|||||||
title: Nextcloud
|
|
||||||
type: Recommendation
|
|
||||||
logo: /assets/img/cloud/nextcloud.svg
|
|
||||||
description: |
|
|
||||||
**Nextcloud** is a suite of free and open-source client-server software for creating your own file hosting services on a private server you control. It also comes with experimental end-to-end encryption (E2EE).
|
|
||||||
|
|
||||||
We recommend checking if your Nextcloud provider supports E2EE, otherwise you have to trust the provider to not look at your files.
|
|
||||||
|
|
||||||
When self hosting Nextcloud, you should also remember to enable E2EE to protect against your hosting provider from snooping on your data.
|
|
||||||
|
|
||||||
website: 'https://nextcloud.com/'
|
|
||||||
privacy_policy: 'https://nextcloud.com/privacy/'
|
|
||||||
downloads:
|
|
||||||
- icon: fab fa-windows
|
|
||||||
url: 'https://nextcloud.com/install/#install-clients'
|
|
||||||
- icon: fab fa-apple
|
|
||||||
url: 'https://nextcloud.com/install/#install-clients'
|
|
||||||
- icon: fab fa-linux
|
|
||||||
url: 'https://nextcloud.com/install/#install-clients'
|
|
||||||
- icon: fab fa-freebsd
|
|
||||||
url: 'https://www.freshports.org/www/nextcloud/'
|
|
||||||
- icon: pg-openbsd
|
|
||||||
url: 'http://openports.se/www/nextcloud'
|
|
||||||
- icon: pg-netbsd
|
|
||||||
url: 'http://pkgsrc.se/www/php-nextcloud'
|
|
||||||
- icon: fab fa-android
|
|
||||||
url: 'https://f-droid.org/packages/com.nextcloud.client/'
|
|
||||||
- icon: fab fa-google-play
|
|
||||||
url: 'https://play.google.com/store/apps/details?id=com.nextcloud.client'
|
|
||||||
- icon: fab fa-app-store-ios
|
|
||||||
url: 'https://apps.apple.com/app/id1125420102'
|
|
||||||
- icon: fab fa-github
|
|
||||||
url: 'https://github.com/nextcloud'
|
|
@ -1,17 +0,0 @@
|
|||||||
title: Proton Drive
|
|
||||||
type: Recommendation
|
|
||||||
logo: /assets/img/cloud/protondrive.svg
|
|
||||||
description: |
|
|
||||||
**Proton Drive** is an end-to-end encrypted (E2EE) general file storage service by the popular encrypted email provider [ProtonMail](https://protonmail.com).
|
|
||||||
|
|
||||||
Proton Drive is currently in beta and only is only available through a web client.
|
|
||||||
|
|
||||||
When using a web client, you are placing trust in the server to send you proper JavaScript code to derive the decryption key and authentication token locally in your browser. A compromised server can send you malicious JavaScript code to steal your master password and decrypt your data. If this does not fit your [threat model](/threat-modeling/), consider using an alternative.
|
|
||||||
|
|
||||||
website: 'https://protonmail.com'
|
|
||||||
privacy_policy: 'https://protonmail.com/privacy-policy'
|
|
||||||
downloads:
|
|
||||||
- icon: fas fa-globe-americas
|
|
||||||
url: 'https://protonmail.com'
|
|
||||||
- icon: fab fa-github
|
|
||||||
url: 'https://github.com/ProtonMail/WebClients'
|
|
@ -1,20 +0,0 @@
|
|||||||
title: Tahoe-LAFS (Advanced)
|
|
||||||
type: Recommendation
|
|
||||||
logo: /assets/img/cloud/tahoe-lafs.svg
|
|
||||||
logo_dark: /assets/img/cloud/tahoe-lafs-dark.svg
|
|
||||||
description: |
|
|
||||||
**Tahoe-LAFS** is a free and open decentralized cloud storage system. It distributes your data across multiple servers. Even if some of the servers fail or are taken over by an attacker, the entire file store continues to function correctly, preserving your privacy and security. The servers used as storage pools do not have access to your data.
|
|
||||||
|
|
||||||
Due to the complexity of the system and the amount of nodes needed to set it up, Tahoe-LAFS is only recommended for seasoned system administrators.
|
|
||||||
website: 'https://www.tahoe-lafs.org/'
|
|
||||||
downloads:
|
|
||||||
- icon: fab fa-windows
|
|
||||||
url: 'https://github.com/tahoe-lafs/tahoe-lafs#via-pip'
|
|
||||||
- icon: fab fa-apple
|
|
||||||
url: 'https://github.com/tahoe-lafs/tahoe-lafs#via-pip'
|
|
||||||
- icon: fab fa-linux
|
|
||||||
url: 'https://github.com/tahoe-lafs/tahoe-lafs#using-os-packages'
|
|
||||||
- icon: pg-netbsd
|
|
||||||
url: 'http://pkgsrc.se/filesystems/tahoe-lafs'
|
|
||||||
- icon: fab fa-github
|
|
||||||
url: 'https://www.tahoe-lafs.org/trac/tahoe-lafs/browser'
|
|
@ -1,18 +0,0 @@
|
|||||||
title: DuckDuckGo
|
|
||||||
type: Recommendation
|
|
||||||
logo: /assets/img/search-engines/duckduckgo.svg
|
|
||||||
description: |
|
|
||||||
**DuckDuckGo** is a popular search engine and is the default for the Tor Browser.
|
|
||||||
|
|
||||||
DuckDuckGo has a [lite](https://duckduckgo.com/lite) and [html](https://duckduckgo.com/html) only version, both of which [do not require JavaScript](https://help.duckduckgo.com/features/non-javascript) and can be used with their [Tor onion address](https://duckduckgogg42xjoc72x3sjasowoarfbgcmvfimaftt6twagswzczad.onion) (append [/lite](https://duckduckgogg42xjoc72x3sjasowoarfbgcmvfimaftt6twagswzczad.onion/lite) or [/html](https://duckduckgogg42xjoc72x3sjasowoarfbgcmvfimaftt6twagswzczad.onion/html) for the respective version).
|
|
||||||
|
|
||||||
DuckDuckGo uses a commercial Bing API and various [other sources](https://help.duckduckgo.com/results/sources) to provide its search data.
|
|
||||||
|
|
||||||
#### Notes
|
|
||||||
The company is based in the <span class="flag-icon flag-icon-us"></span> USA.
|
|
||||||
|
|
||||||
Their [Privacy Policy](https://duckduckgo.com/privacy) states they do log your search query, but not your IP or any other identifying information.
|
|
||||||
|
|
||||||
website: 'https://duckduckgo.com'
|
|
||||||
website_tor: 'https://duckduckgogg42xjoc72x3sjasowoarfbgcmvfimaftt6twagswzczad.onion'
|
|
||||||
privacy_policy: 'https://duckduckgo.com/privacy'
|
|
@ -1,19 +0,0 @@
|
|||||||
title: Startpage
|
|
||||||
type: Recommendation
|
|
||||||
logo: /assets/img/search-engines/startpage.svg
|
|
||||||
description: |
|
|
||||||
**Startpage** is a search engine that provides Google search results. It is a very convenient way to get Google search results without experiencing dark patterns such as difficult captchas or being refused access because you used a [VPN](/providers/vpn) or [Tor](https://www.torproject.org/download/).
|
|
||||||
|
|
||||||
#### Notes
|
|
||||||
Startpage's majority shareholder is System1 who is an adtech company. We don't think that is an issue as they have their own Privacy Policy.
|
|
||||||
|
|
||||||
The Privacy Guides team reached out to Startpage [back in 2020](https://web.archive.org/web/20210118031008/https://blog.privacytools.io/relisting-startpage/) for clarification and was satisfied by the answers we received.
|
|
||||||
|
|
||||||
Startpage is based in the <span class="flag-icon flag-icon-nl"></span> Netherlands.
|
|
||||||
|
|
||||||
According to their [Privacy Policy](https://www.startpage.com/en/privacy-policy/), they only log details such as: operating system, type of browser and language. They do not log your IP address, search queries or other identifying information.
|
|
||||||
|
|
||||||
Startpage proxies Google Search so Google does have access to your search queries.
|
|
||||||
|
|
||||||
website: 'https://www.startpage.com'
|
|
||||||
privacy_policy: 'https://www.startpage.com/en/privacy-policy'
|
|
@ -1,13 +0,0 @@
|
|||||||
title: Mojeek
|
|
||||||
type: Recommendation
|
|
||||||
logo: /assets/img/search-engines/mojeek.svg
|
|
||||||
description: |
|
|
||||||
**Mojeek** is another privacy friendly search engine. They use their own crawler to provide search data.
|
|
||||||
|
|
||||||
#### Notes
|
|
||||||
The company is based in the <span class="flag-icon flag-icon-gb"></span> UK.
|
|
||||||
|
|
||||||
According to their [Privacy Policy](https://www.mojeek.com/about/privacy/), they log the originating country, time, page requested, and referral data of each query. IP addresses are not logged.
|
|
||||||
|
|
||||||
website: 'https://www.mojeek.com'
|
|
||||||
privacy_policy: 'https://www.mojeek.com/about/privacy'
|
|
@ -1,15 +0,0 @@
|
|||||||
title: Searx
|
|
||||||
type: Recommendation
|
|
||||||
logo: /assets/img/search-engines/searx.svg
|
|
||||||
description: |
|
|
||||||
**Searx** is an [open-source](https://github.com/asciimoo/searx), self-hostable, metasearch engine, aggregating the results of other search engines while not storing information about its users. There is a [list of public instances](https://searx.space/).
|
|
||||||
|
|
||||||
#### Notes
|
|
||||||
Searx is a proxy between the user and the search engines it aggregates from. Your search queries will still be sent to the search engines that Searx gets its results from.
|
|
||||||
|
|
||||||
When self-hosting, it is important that you have other people using your instance as well in order for you to blend in. You should be careful with where and how you are hosting Searx, as other people looking up illegal content on your instance could draw unwanted attention from authorities.
|
|
||||||
|
|
||||||
When you are using a Searx instance, be sure to go read the Privacy Policy of that specific instance. Searx instances can be modified by their owners and therefore may not reflect their associated privacy policy. Some instances have Tor .onion addresses which may grant some privacy as long as your search queries don't contain PII (Personally Identifiable Information).
|
|
||||||
|
|
||||||
website: 'https://searx.me'
|
|
||||||
website_tor: 'http://searxspbitokayvkhzhsnljde7rqmn7rvoga6e4waeub3h7ug3nghoad.onion'
|
|
@ -1,14 +0,0 @@
|
|||||||
"@context": https://schema.org
|
|
||||||
"@type": Organization
|
|
||||||
"name": Privacy Guides
|
|
||||||
"description": "Massive organizations are monitoring your online activities. Privacy Guides is your central privacy and security resource to protect yourself online."
|
|
||||||
"url": 'https://www.privacyguides.org'
|
|
||||||
"logo": 'https://www.privacyguides.org/assets/img/layout/apple-touch-icon.png'
|
|
||||||
"sameAs":
|
|
||||||
- 'https://www.wikidata.org/wiki/Q74788946'
|
|
||||||
- 'https://twitter.com/privacy_guides'
|
|
||||||
- 'https://github.com/privacyguides'
|
|
||||||
- 'https://github.com/privacytools'
|
|
||||||
- 'https://twitter.com/privacytoolsIO'
|
|
||||||
"alternateName":
|
|
||||||
- 'PrivacyTools'
|
|
@ -1,63 +0,0 @@
|
|||||||
title: Firefox Desktop
|
|
||||||
type: Recommendation
|
|
||||||
logo: /assets/img/browsers/firefox.svg
|
|
||||||
description: |
|
|
||||||
**Firefox** provides strong privacy settings such as [Enhanced Tracking Protection](https://support.mozilla.org/kb/enhanced-tracking-protection-firefox-desktop), which can help block various [types of tracking](https://support.mozilla.org/kb/enhanced-tracking-protection-firefox-desktop#w_what-enhanced-tracking-protection-blocks).
|
|
||||||
|
|
||||||
These options can be found in the *Privacy & Security* settings page ( ≡ → Settings → Privacy & Security).
|
|
||||||
|
|
||||||
##### **Enhanced Tracking Protection (ETP)**
|
|
||||||
<ul style="list-style-type:none;padding-left:0;">
|
|
||||||
<li>Select: <strong>Strict</strong></li>
|
|
||||||
</ul>
|
|
||||||
|
|
||||||
##### **Sanitize on Close**
|
|
||||||
<ul style="list-style-type:none;padding-left:0;">
|
|
||||||
<li>Select: <strong>Delete cookies and site data when Firefox is closed</strong></li>
|
|
||||||
</ul>
|
|
||||||
You can still stay logged into websites by allowing exceptions.
|
|
||||||
|
|
||||||
##### **Disable Search Suggestions**
|
|
||||||
*These features may not be available depending on your region.*
|
|
||||||
<ul style="list-style-type:none;padding-left:0;">
|
|
||||||
<li>Toggle off: <strong>Suggestions from the web</strong></li>
|
|
||||||
<li>Toggle off: <strong>Suggestions from sponsors</strong></li>
|
|
||||||
<li>Toggle off: <strong>Improve the Firefox Suggest experience</strong></li>
|
|
||||||
</ul>
|
|
||||||
|
|
||||||
##### **Disable Telemetry**
|
|
||||||
<ul style="list-style-type:none;padding-left:0;">
|
|
||||||
<li>Uncheck: <strong>Allow Firefox to send technical and interaction data to Mozilla</strong></li>
|
|
||||||
<li>Uncheck: <strong>Allow Firefox to install and run studies</strong></li>
|
|
||||||
<li>Uncheck: <strong>Allow Firefox to send backlogged crash reports on your behalf</strong></li>
|
|
||||||
</ul>
|
|
||||||
|
|
||||||
Firefox includes a unique [download token](https://bugzilla.mozilla.org/show_bug.cgi?id=1677497#c0) in downloads from Mozilla's website and uses telemetry in Firefox to send the token. The token is **not** included in releases from the [Mozilla FTP](https://ftp.mozilla.org/pub/firefox/releases/).
|
|
||||||
|
|
||||||
##### **HTTPS-Only Mode**
|
|
||||||
<ul style="list-style-type:none;padding-left:0;">
|
|
||||||
<li>Select: <strong>Enable HTTPS-Only Mode in all windows</strong>.</li>
|
|
||||||
</ul>
|
|
||||||
|
|
||||||
#### Sync
|
|
||||||
The [Firefox sync](https://hacks.mozilla.org/2018/11/firefox-sync-privacy/) service is end-to-end encrypted.
|
|
||||||
|
|
||||||
#### Extensions
|
|
||||||
We generally do not recommend installing any extensions as they increase your [attack surface](https://en.wikipedia.org/wiki/Attack_surface); however, if you want content blocking, [uBlock Origin](/browsers/#additional-resources) might be useful to you. The extension is also a 🏆️[Recommended Extension](https://support.mozilla.org/kb/add-on-badges#w_recommended-extensions) by Mozilla.
|
|
||||||
|
|
||||||
#### Arkenfox (advanced)
|
|
||||||
The [Arkenfox project](https://github.com/arkenfox/user.js) provides a set of carefully considered options for Firefox. These options are quite strict but a few are subjective and may cause some websites to not work properly. You can easily change these settings to suit your needs. We **strongly recommend** reading through their [wiki](https://github.com/arkenfox/user.js/wiki). Arkenfox also enables [container](https://support.mozilla.org/en-US/kb/containers#w_for-advanced-users) support.
|
|
||||||
|
|
||||||
website: 'https://firefox.com'
|
|
||||||
privacy_policy: 'https://www.mozilla.org/privacy/firefox'
|
|
||||||
downloads:
|
|
||||||
- icon: fab fa-windows
|
|
||||||
url: 'https://www.mozilla.org/firefox/windows'
|
|
||||||
- icon: fab fa-apple
|
|
||||||
url: 'https://www.mozilla.org/firefox/mac'
|
|
||||||
- icon: fab fa-linux
|
|
||||||
url: 'https://www.mozilla.org/firefox/linux'
|
|
||||||
- icon: fab fa-freebsd
|
|
||||||
url: 'https://www.freshports.org/www/firefox'
|
|
||||||
- icon: fab fa-git
|
|
||||||
url: 'https://hg.mozilla.org/mozilla-central'
|
|
@ -1,27 +0,0 @@
|
|||||||
title: Bromite
|
|
||||||
type: Recommendation
|
|
||||||
logo: /assets/img/browsers/bromite.svg
|
|
||||||
description: |
|
|
||||||
**Bromite** is a [Chromium](https://en.wikipedia.org/wiki/Chromium_(web_browser))-based browser with privacy and security enhancements, built-in ad blocking, and some fingerprinting randomization.
|
|
||||||
|
|
||||||
These options can be found in *Privacy and Security* ( ⁝ → ⚙️ Settings → Privacy and Security).
|
|
||||||
|
|
||||||
##### **HTTPS-Only Mode**
|
|
||||||
<ul style="list-style-type:none;padding-left:0;">
|
|
||||||
<li>Select: <strong>Always use secure connections</strong>.</li>
|
|
||||||
</ul>
|
|
||||||
|
|
||||||
##### **Always-on Incognito Mode**
|
|
||||||
<ul style="list-style-type:none;padding-left:0;">
|
|
||||||
<li>Select: <strong>Open links in incognito tabs always</strong>.</li>
|
|
||||||
<li>Select: <strong>Close all open tabs on exit</strong>.</li>
|
|
||||||
<li>Select: <strong>Open external links in incognito</strong>.</li>
|
|
||||||
</ul>
|
|
||||||
|
|
||||||
website: 'https://www.bromite.org'
|
|
||||||
privacy_policy: 'https://www.bromite.org/privacy'
|
|
||||||
downloads:
|
|
||||||
- icon: fab fa-android
|
|
||||||
url: 'https://www.bromite.org/fdroid'
|
|
||||||
- icon: fab fa-github
|
|
||||||
url: 'https://github.com/bromite/bromite'
|
|
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user