Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Sign in / Register
Toggle navigation
G
gfwlist
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Locked Files
Issues
0
Issues
0
List
Boards
Labels
Service Desk
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Security & Compliance
Security & Compliance
Dependency List
License Compliance
Packages
Packages
List
Container Registry
Analytics
Analytics
CI / CD
Code Review
Insights
Issues
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
MyCard
gfwlist
Commits
a75ab263
Commit
a75ab263
authored
Mar 11, 2009
by
lovelywcm
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
U2NyaXB0Cg==
parent
1e2cf104
Changes
3
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
331 additions
and
167 deletions
+331
-167
addChecksum.pl
addChecksum.pl
+65
-0
gfwlist.txt
gfwlist.txt
+167
-167
sendGFWList.sh
sendGFWList.sh
+99
-0
No files found.
addChecksum.pl
0 → 100755
View file @
a75ab263
#!/usr/bin/perl
#############################################################################
# This is a reference script to add checksums to downloadable #
# subscriptions. The checksum will be validated by AutoProxy on download #
# and checksum mismatches (broken downloads) will be rejected. #
# #
# To add a checksum to a subscription file, run the script like this: #
# #
# perl addChecksum.pl subscription.txt #
# #
# Note: your subscription file should be saved in UTF-8 encoding, otherwise #
# the generated checksum might be incorrect. #
# #
#############################################################################
use
strict
;
use
warnings
;
use
Digest::
MD5
qw(md5_base64)
;
die
"
Usage: $^X $0 subscription.txt
\n
"
unless
@ARGV
;
my
$file
=
$ARGV
[
0
];
my
$data
=
readFile
(
$file
);
# Remove already existing checksum
$data
=~
s/^.*!\s*checksum[\s\-:]+([\w\+\/=]+).*\n//gmi
;
# Calculate new checksum: remove all CR symbols and empty
# lines and get an MD5 checksum of the result (base64-encoded,
# without the trailing = characters).
my
$checksumData
=
$data
;
$checksumData
=~
s/\r//g
;
$checksumData
=~
s/\n+/\n/g
;
# Calculate new checksum
my
$checksum
=
md5_base64
(
$checksumData
);
# Insert checksum into the file
$data
=~
s/(\r?\n)/$1! Checksum: $checksum$1/
;
writeFile
(
$file
,
$data
);
sub
readFile
{
my
$file
=
shift
;
open
(
local
*
FILE
,
"
<
",
$file
)
||
die
"
Could not read file '
$file
'
";
binmode
(
FILE
);
local
$/
;
my
$result
=
<
FILE
>
;
close
(
FILE
);
return
$result
;
}
sub
writeFile
{
my
(
$file
,
$contents
)
=
@_
;
open
(
local
*
FILE
,
"
>
",
$file
)
||
die
"
Could not write file '
$file
'
";
binmode
(
FILE
);
print
FILE
$contents
;
close
(
FILE
);
}
gfwlist.txt
View file @
a75ab263
W0F1dG9Qcm94eSAwLjEuMF0KISBDaGVja3N1bTog
MG5hc3Q2RStnRFFuWno1dnNjY3E1QQ
ohIExh
W0F1dG9Qcm94eSAwLjEuMF0KISBDaGVja3N1bTog
SG1qUWxqZ2llbXJNdEpMdy9ZeVBodw
ohIExh
c3QgTW9kaWZpZWQ6ICBXZWQsIDExIE1hciAyMDA5IDE
1OjU5OjE2
ICswODAwCiEgICAgIC0tLS1o
c3QgTW9kaWZpZWQ6ICBXZWQsIDExIE1hciAyMDA5IDE
2OjM2OjEz
ICswODAwCiEgICAgIC0tLS1o
dHRwOi8vYXV0b3Byb3h5LWdmd2xpc3QuZ29vZ2xlY29kZS5jb20vCiEtLS0tLS0tLS0tLS0tLS0t
dHRwOi8vYXV0b3Byb3h5LWdmd2xpc3QuZ29vZ2xlY29kZS5jb20vCiEtLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tTnVtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KfGh0dHA6Ly9uc2YuMTEwbWIu
LS0tLS0tLS0tTnVtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KfGh0dHA6Ly9uc2YuMTEwbWIu
Y29tCnxodHRwOi8vd3d3LjFiYW8ub3JnCnxodHRwOi8vM2NjLmNjLwp8aHR0cDovL3d3dy4zY2Mu
Y29tCnxodHRwOi8vd3d3LjFiYW8ub3JnCnxodHRwOi8vM2NjLmNjLwp8aHR0cDovL3d3dy4zY2Mu
...
@@ -9,171 +9,171 @@ LS0tLS0tLS0tLS0tLS0Kd3d3LmFib2x1b3dhbmcuY29tCnxodHRwOi8vd3d3LmFib3V0dXMub3Jn
...
@@ -9,171 +9,171 @@ LS0tLS0tLS0tLS0tLS0Kd3d3LmFib2x1b3dhbmcuY29tCnxodHRwOi8vd3d3LmFib3V0dXMub3Jn
Ci5hbW5lc3R5Lm9yZwphbW5lc3R5dXNhLm9yZwp8aHR0cDovL3d3dy5hbW9paXN0LmNvbS8KfGh0
Ci5hbW5lc3R5Lm9yZwphbW5lc3R5dXNhLm9yZwp8aHR0cDovL3d3dy5hbW9paXN0LmNvbS8KfGh0
dHA6Ly93d3cuYW5keWxhdS5jb20KYW5vbnltaXplci5jb20KfGh0dHA6Ly9hbm9ueW1vdXNlLm9y
dHA6Ly93d3cuYW5keWxhdS5jb20KYW5vbnltaXplci5jb20KfGh0dHA6Ly9hbm9ueW1vdXNlLm9y
Zwp8aHR0cDovL25ld3MuYW9sLmNvbS8KfGh0dHA6Ly9wcm94eXB5LmFwcHNwb3QuY29tLwp8aHR0
Zwp8aHR0cDovL25ld3MuYW9sLmNvbS8KfGh0dHA6Ly9wcm94eXB5LmFwcHNwb3QuY29tLwp8aHR0
cDovL3d3dy5hcml6b25hY2hpbmVzZS5jb20Kd3d3LmFzaWFkZW1vLm9yZwouYXRqLm9yZy50dwo
K
cDovL3d3dy5hcml6b25hY2hpbmVzZS5jb20Kd3d3LmFzaWFkZW1vLm9yZwouYXRqLm9yZy50dwo
u
IS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tQi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCmJh
YXRuZXh0LmNvbQoKIS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tQi0tLS0tLS0tLS0tLS0tLS0t
aWR1LmpwLwp8aHR0cDovL3d3dy5iYXJuYWJ1LmNvLnVrCmJiYy5jby51aypjaGluZXNlCmJlaWpp
LS0tLS0tLS0tCmJhaWR1LmpwLwp8aHR0cDovL3d3dy5iYXJuYWJ1LmNvLnVrCmJiYy5jby51aypj
bmdzcHJpbmcuY29tCmJlc3Rmb3JjaGluYS5vcmcKYmlnbmV3cy5vcmcKLmJsaXAudHYKLmJsb2cu
aGluZXNlCmJlaWppbmdzcHJpbmcuY29tCmJlc3Rmb3JjaGluYS5vcmcKYmlnbmV3cy5vcmcKLmJs
Y29tLwp8aHR0cDovL3Jjb252ZXJzYXRpb24uYmxvZ3MuY29tLwp8aHR0cDovL3d3dy5ibG9nZ2Vy
aXAudHYKLmJsb2cuY29tLwp8aHR0cDovL3Jjb252ZXJzYXRpb24uYmxvZ3MuY29tLwp8aHR0cDov
L
mNvbS9mZWVkcwp8aHR0cDovL2Jsb2dsaW5lcy5jb20KfGh0dHA6Ly93d3cuYmxvZ2xpbmVzLmNv
L
3d3dy5ibG9nZ2VyLmNvbS9mZWVkcwp8aHR0cDovL2Jsb2dsaW5lcy5jb20KfGh0dHA6Ly93d3cu
bQouYmxvZ3NvbWUuY29tCmJsb29vb29vb29nZ2VyLmJsb2dzcG90LmNvbQpjaGluYWdmdy5ibG9n
YmxvZ2xpbmVzLmNvbQouYmxvZ3NvbWUuY29tCmJsb29vb29vb29nZ2VyLmJsb2dzcG90LmNvbQpj
c3BvdC5jb20KeWV0YWFpLmJsb2dzcG90LmNvbQp8aHR0cDovL3d3dy5ib29rcy5jb20udHcvCmJv
aGluYWdmdy5ibG9nc3BvdC5jb20KeWV0YWFpLmJsb2dzcG90LmNvbQp8aHR0cDovL3d3dy5ib29r
eC5uZXQvc2hhcmVkL3ltY20zazBjeTgKYm94dW4uY29tCmJ1bGxvZ2dlci5jb20KCiEtLS0tLS0t
cy5jb20udHcvCmJveC5uZXQvc2hhcmVkL3ltY20zazBjeTgKYm94dW4uY29tCmJ1bGxvZ2dlci5j
LS0tLS0tLS0tLS0tLS0tLS0tLUMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQp8aHR0cDovL2Nh
b20KCiEtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLUMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
b2Rhbi5uZXQKfGh0dHA6Ly93d3cuY2FybmVnaWVlbmRvd21lbnQub3JnCnd3dy5jY2R0ci5vcmcK
LQp8aHR0cDovL2Nhb2Rhbi5uZXQKfGh0dHA6Ly93d3cuY2FybmVnaWVlbmRvd21lbnQub3JnCnd3
fGh0dHA6Ly93d3cuY2RlZi5vcmcKd3d3LmNkcDE5OTgub3JnCmNkcHd1Lm9yZwp3d3cuY2VjYy5n
dy5jY2R0ci5vcmcKfGh0dHA6Ly93d3cuY2RlZi5vcmcKd3d3LmNkcDE5OTgub3JnCmNkcHd1Lm9y
b3YKfGh0dHA6Ly9jZ2lwcm94eS51cy8KfGh0dHA6Ly93d3cuY2dpcHJveHkudXMvCmNoaW5hY29t
Zwp3d3cuY2VjYy5nb3YKfGh0dHA6Ly9jZ2lwcm94eS51cy8KfGh0dHA6Ly93d3cuY2dpcHJveHku
bWVudHMub3JnCmNoaW5hZGlnaXRhbHRpbWVzLm5ldC8KY2hpbmFnZncub3JnCi5jaGluYXRpbWVz
dXMvCmNoaW5hY29tbWVudHMub3JnCmNoaW5hZGlnaXRhbHRpbWVzLm5ldC8KY2hpbmFnZncub3Jn
LmNvbS8KY2hpbmF3YXkub3JnCmNoaW5lc2VuZXdzbmV0LmNvbQp8aHR0cDovL2Rldi5jaHJvbWl1
Ci5jaGluYXRpbWVzLmNvbS8KY2hpbmF3YXkub3JnCmNoaW5lc2VuZXdzbmV0LmNvbQp8aHR0cDov
bS5vcmcvCnxodHRwOi8vYmxvZy5jaHJvbWl1bS5vcmcvCnBzaXBob24uY2l2aXNlYy5vcmcKfGh0
L2Rldi5jaHJvbWl1bS5vcmcvCnxodHRwOi8vYmxvZy5jaHJvbWl1bS5vcmcvCnBzaXBob24uY2l2
dHA6Ly93d3cuY2l2aXNlYy5vcmcKfGh0dHA6Ly9jb2RlcGFkLm9yZy8KfGh0dHA6Ly93d3cuY29v
aXNlYy5vcmcKfGh0dHA6Ly93d3cuY2l2aXNlYy5vcmcKfGh0dHA6Ly9jb2RlcGFkLm9yZy8KfGh0
bGxvdWQub3JnLnR3LwpjcmQtbmV0Lm9yZwpjdWlodWEub3JnCgohLS0tLS0tLS0tLS0t
LS0tLS0t
dHA6Ly93d3cuY29vbGxvdWQub3JnLnR3LwpjcmQtbmV0Lm9yZwpjdWlodWEub3JnCgoh
LS0tLS0t
LS0tLS0tLS
1ELS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KfGh0dHA6Ly9hay4qLmRhaWx5bW90
LS0tLS0tLS
0tLS0tLS0tLS0tLS1ELS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KfGh0dHA6Ly9h
a
W9uLmNvbS8KbGlzdHMuZGViaWFuLm9yZwpkaXNjdXNzLmNvbS5oawp8aHR0cDovL3d3dy5kb2Ni
a
y4qLmRhaWx5bW90aW9uLmNvbS8KbGlzdHMuZGViaWFuLm9yZwpkaXNjdXNzLmNvbS5oawp8aHR0
b29rLm9yZy8KZG91YmxlYWYuY29tCnd3dy5kb3dubG9hZC5jb20vRnJlZWdhdGUvMzAwMC0yMDg1
cDovL3d3dy5kb2Nib29rLm9yZy8KZG91YmxlYWYuY29tCnd3dy5kb3dubG9hZC5jb20vRnJlZWdh
XzQtMTA0MTUzOTEuaHRtbAp8aHR0cDovL3d3dy5kcHAub3JnLnR3Lwpkdy13b3JsZC5kZQp8aHR0
dGUvMzAwMC0yMDg1XzQtMTA0MTUzOTEuaHRtbAp8aHR0cDovL3d3dy5kcHAub3JnLnR3Lwpkdy13
cDovL3d3dy5keW5hd2ViaW5jLmNvbS8KCiEtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLUU
tLS0t
b3JsZC5kZQp8aHR0cDovL3d3dy5keW5hd2ViaW5jLmNvbS8KCiEtLS0tLS0tLS0tLS0tLS0
tLS0t
LS0tLS0tL
S0tLS0tLS0tLS0tLS0tLQplZG9vcnMuY29tCnxodHRwOi8vd3d3LmVkdWJyaWRnZS5j
LS0tLS0tL
UUtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQplZG9vcnMuY29tCnxodHRwOi8vd3d3
b20vCnxodHRwOi8vZW5kc29mdHBhdGVudHMub3JnLwpldHJlZS5vcmcvCgohLS0tLS0tLS0tLS0t
LmVkdWJyaWRnZS5jb20vCnxodHRwOi8vZW5kc29mdHBhdGVudHMub3JnLwpldHJlZS5vcmcvCgoh
LS0tLS0tLS0tLS0tLS
1GLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KfGh0dHA6Ly9mZWVkcy5m
LS0tLS0tLS0tLS0tLS
0tLS0tLS0tLS0tLS1GLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KfGh0
ZWVkYnVybmVyLmNvbS8KfGh0dHA6Ly9mYXJtMS5zdGF0aWMuZmxpY2tyLmNvbS8KfGh0dHA6Ly9m
dHA6Ly9mZWVkcy5mZWVkYnVybmVyLmNvbS8KfGh0dHA6Ly9mYXJtMS5zdGF0aWMuZmxpY2tyLmNv
YXJtMi5zdGF0aWMuZmxpY2tyLmNvbS8KZnJlZWZvcnVtcy5vcmcvCmZyZWVtb3Jlbi5jb20vCnxo
bS8KfGh0dHA6Ly9mYXJtMi5zdGF0aWMuZmxpY2tyLmNvbS8KZnJlZWZvcnVtcy5vcmcvCmZyZWVt
dHRwOi8vd3d3LmZyZWVuZXQtY2hpbmEub3JnLwpmcmVlbmV0cHJvamVjdC5vcmcvCnxodHRwOi8
v
b3Jlbi5jb20vCnxodHRwOi8vd3d3LmZyZWVuZXQtY2hpbmEub3JnLwpmcmVlbmV0cHJvamVjdC5
v
d3d3LmZyZXNobWVhdC5uZXQvcHJvamVjdHMvZnJlZW5ldC8KZnJpZW5kZmVlZC5jb20lMkZlJTJG
cmcvCnxodHRwOi8vd3d3LmZyZXNobWVhdC5uZXQvcHJvamVjdHMvZnJlZW5ldC8KZnJpZW5kZmVl
CmZyaWVuZGZlZWQuY29tL2UvCnxodHRwOi8vd3d3LmZzdXJmLmNvbS8KLmZ1dHVyZWNoaW5hZm9y
ZC5jb20lMkZlJTJGCmZyaWVuZGZlZWQuY29tL2UvCnxodHRwOi8vd3d3LmZzdXJmLmNvbS8KLmZ1
d
W0ub3JnCgohLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1HLS0tLS0tLS0tLS0t
LS0tLS0tLS0t
d
HVyZWNoaW5hZm9ydW0ub3JnCgohLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1H
LS0tLS0tLS0t
LS0tLS0
KfGh0dHA6Ly93d3cuZ2xvYmFsaW50ZXJuZXRmcmVlZG9tLm9yZy8KfGh0dHA6Ly96aC5n
LS0tLS0
tLS0tLS0tLS0tLS0KfGh0dHA6Ly93d3cuZ2xvYmFsaW50ZXJuZXRmcmVlZG9tLm9yZy8K
bG9iYWx2b2ljZXNvbmxpbmUub3JnLwpnb29nbGUuY29tKmFuYWx5dGljcyp6aC1DTgpmZWVkcHJv
fGh0dHA6Ly96aC5nbG9iYWx2b2ljZXNvbmxpbmUub3JnLwpnb29nbGUuY29tKmFuYWx5dGljcyp6
eHkuZ29vZ2xlLmNvbQp8aHR0cDovL3BhZ2VzLmdvb2dsZS5jb20vCnxodHRwOi8vd3d3Lmdvb2ds
aC1DTgpmZWVkcHJveHkuZ29vZ2xlLmNvbQp8aHR0cDovL3BhZ2VzLmdvb2dsZS5jb20vCnxodHRw
ZS5jb20vdXJsKmN0PWNsbmsKfGh0dHA6Ly9nb29nbGVibG9nLmJsb2dzcG90LmNvbS8KLmdvb2ds
Oi8vd3d3Lmdvb2dsZS5jb20vdXJsKmN0PWNsbmsKfGh0dHA6Ly9nb29nbGVibG9nLmJsb2dzcG90
ZXBhZ2VzLmNvbS8KZ3Bhc3MxLmNvbQp8aHR0cDovL3d3dy5ncHJveHkuY29tCnxodHRwOi8vd3d3
LmNvbS8KLmdvb2dsZXBhZ2VzLmNvbS8KZ3Bhc3MxLmNvbQp8aHR0cDovL3d3dy5ncHJveHkuY29t
LmdyZWFzZXNwb3QubmV0LwpncmVhdC1maXJld2FsbC5jb20KfGh0dHA6Ly93d3cuZ3V0ZW5iZXJn
CnxodHRwOi8vd3d3LmdyZWFzZXNwb3QubmV0LwpncmVhdC1maXJld2FsbC5jb20KfGh0dHA6Ly93
Lm9yZy8KCiEtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLUgtLS0tLS0tLS0tLS0
tLS0tLS0tLS0t
d3cuZ3V0ZW5iZXJnLm9yZy8KCiEtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLUg
tLS0tLS0tLS0t
LS0tL
Qp8aHR0cDovL2hhY2thZGF5LmNvbS8KfGh0dHA6Ly93d3cuaGVhcnR5aXQuY29tLwp8aHR0
LS0tL
S0tLS0tLS0tLS0tLQp8aHR0cDovL2hhY2thZGF5LmNvbS8KfGh0dHA6Ly93d3cuaGVhcnR5
cDovL3d3dy5oZW1pZGVtaS5jb20vCm15d2ViLmhpbmV0Lm5ldAp8aHR0cDovL3RpbWVzLmhpbmV0
aXQuY29tLwp8aHR0cDovL3d3dy5oZW1pZGVtaS5jb20vCm15d2ViLmhpbmV0Lm5ldAp8aHR0cDov
L
m5ldC8KCiEtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLUktLS0tLS0tLS0tLS0
tLS0tLS0tLS0t
L
3RpbWVzLmhpbmV0Lm5ldC8KCiEtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLUk
tLS0tLS0tLS0t
LS0tL
Qp8aHR0cDovL2kxLmhrLwp8aHR0cDovL3d3dy5pYW1maXNoZXIubmV0LwpocC5pbmZvc2Vl
LS0tL
S0tLS0tLS0tLS0tLQp8aHR0cDovL2kxLmhrLwp8aHR0cDovL3d3dy5pYW1maXNoZXIubmV0
ay5jby5qcC8KfGh0dHA6Ly93d3cuaW0udHYvCnxodHRwOi8vd3d3LmlubWVkaWFoay5uZXQvCnxo
LwpocC5pbmZvc2Vlay5jby5qcC8KfGh0dHA6Ly93d3cuaW0udHYvCnxodHRwOi8vd3d3LmlubWVk
dHRwOi8vd3d3LmludGVybmV0ZnJlZWRvbS5vcmcvCgohLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0t
aWFoay5uZXQvCnxodHRwOi8vd3d3LmludGVybmV0ZnJlZWRvbS5vcmcvCgoh
LS0tLS0tLS0tLS0t
LS
1KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KfGh0dHA6Ly9qYWlrdS5jb20KfGh0dHA6Ly93
LS
0tLS0tLS0tLS0tLS1KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KfGh0dHA6Ly9qYWlrdS5j
d3cuamFpa3UuY29tCi5qaXJ1YW4ubmV0CnxodHRwOi8vanByYTExMTMub3JnCgohLS0tLS0tLS0t
b20KfGh0dHA6Ly93d3cuamFpa3UuY29tCi5qaXJ1YW4ubmV0CnxodHRwOi8vanByYTExMTMub3Jn
LS0tLS0tLS0tLS0tLS0tLS1LLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0Ka2FuemhvbmdndW8u
CgohLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1LLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K
Y29tCnxodHRwOi8vbG9nLmtlc28uY24vCnxodHRwOi8vd3d3LmttdC5vcmcudHcvCnxodHRwOi8v
a2FuemhvbmdndW8uY29tCnxodHRwOi8vbG9nLmtlc28uY24vCnxodHRwOi8vd3d3LmttdC5vcmcu
d
3d3Lmt6ZW5nLmluZm8vCgohLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1MLS0tLS0tLS0tLS0t
d
HcvCnxodHRwOi8vd3d3Lmt6ZW5nLmluZm8vCgohLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1M
LS0tLS0tLS0tLS0tLS0
KbGliZXJ0eXRpbWVzLmNvbS50dwp8aHR0cDovL2NsZS5saW51eC5vcmcu
LS0tLS0tLS0tLS0tLS0
tLS0tLS0tLS0tLS0KbGliZXJ0eXRpbWVzLmNvbS50dwp8aHR0cDovL2Ns
dHcvCnxodHRwOi8vd3d3LmxpdmVqb3VybmFsLmNvbQoKIS0tLS0tLS0tLS0tL
S0tLS0tLS0tLS0t
ZS5saW51eC5vcmcudHcvCnxodHRwOi8vd3d3LmxpdmVqb3VybmFsLmNvbQoKI
S0tLS0tLS0tLS0t
LS0t
TS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCm1haWwtYXJjaGl2ZS5jb20KfGh0dHA6Ly9
j
LS0t
LS0tLS0tLS0tLS0tTS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCm1haWwtYXJjaGl2ZS5
j
cS5tYWlsMTYzLnRvLwp8aHR0cDovL3d3dy5tYXRodHVubmVsLmNvbS8KfGh0dHA6Ly9tZW1lZGlh
b20KfGh0dHA6Ly9jcS5tYWlsMTYzLnRvLwp8aHR0cDovL3d3dy5tYXRodHVubmVsLmNvbS8KfGh0
LmNuLwoubWluZ2h1aS5vcmcKd3d3Lm1pbmdwYW8uY29tCm1pbmdwYW9uZXdzLmNvbQp8aHR0cDov
dHA6Ly9tZW1lZGlhLmNuLwoubWluZ2h1aS5vcmcKd3d3Lm1pbmdwYW8uY29tCm1pbmdwYW9uZXdz
L
3d3dy5taW5ncGFvbnkuY29tLwptaW56aHV6aG9uZ2d1by5vcmcKfGh0dHA6Ly93d3cubXBpbmV3
L
mNvbQp8aHR0cDovL3d3dy5taW5ncGFvbnkuY29tLwptaW56aHV6aG9uZ2d1by5vcmcKfGh0dHA6
cy5jb20vCm5ld3MubXNuLmNvbS50dwp3d3cubXNuLmNvbS50dwp8aHR0cDovL214ZXhwcmVzcy50
Ly93d3cubXBpbmV3cy5jb20vCm5ld3MubXNuLmNvbS50dwp3d3cubXNuLmNvbS50dwp8aHR0cDov
d2Jicy5vcmcvCnxodHRwOi8vd3d3Lm15Y291bGQuY29tLwp8aHR0cDovL3ZpZHMubXlzcGFjZS5j
L214ZXhwcmVzcy50d2Jicy5vcmcvCnxodHRwOi8vd3d3Lm15Y291bGQuY29tLwp8aHR0cDovL3Zp
b20vCgohLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1OLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0t
ZHMubXlzcGFjZS5jb20vCgohLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1O
LS0tLS0tLS0tLS0t
LS0
KbmV0Y29sb255LmNvbQp8aHR0cDovL3d3dy5uZXdzdmluZS5jb20vCnxodHRwOi8vYmxvZy5u
LS0
tLS0tLS0tLS0tLS0KbmV0Y29sb255LmNvbQp8aHR0cDovL3d3dy5uZXdzdmluZS5jb20vCnxo
aWhpbG9naWMuZGsvCnxodHRwOi8vdGFpd2FueWVzLm5pbmcuY29tL2dyb3VwL3RhaXdhbnBvd2Vy
dHRwOi8vYmxvZy5uaWhpbG9naWMuZGsvCnxodHRwOi8vdGFpd2FueWVzLm5pbmcuY29tL2dyb3Vw
Cm50ZHR2LmNvbQoKIS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tTy0tLS0tLS0tLS0tLS
0tLS0t
L3RhaXdhbnBvd2VyCm50ZHR2LmNvbQoKIS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tTy
0tLS0t
LS0tLS0tLS0t
Cm9tbml0YWxrLgovb24uY2MvKgoub24uY2MvCm15Lm9wZXJhLmNvbQp8aHR0cDov
LS0tLS0tLS0t
LS0tLS0tLS0tLS0tCm9tbml0YWxrLgovb24uY2MvKgoub24uY2MvCm15Lm9wZXJh
L
29zZGlyLmNvbS8KCiEtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVAtLS0tLS0tLS0tLS0
tLS0t
L
mNvbQp8aHR0cDovL29zZGlyLmNvbS8KCiEtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVA
tLS0t
LS0tLS0tLS0tL
QpwYndpa2kuY29tCnxodHRwOi8vbmV3cy5wY2hvbWUuY29tLnR3LwoucGVhY2Vm
LS0tLS0tLS0tL
S0tLS0tLS0tLS0tLQpwYndpa2kuY29tCnxodHRwOi8vbmV3cy5wY2hvbWUuY29t
aXJlLm9yZwpwZWFjZWhhbGwuY29tLgpwaGlsbHkuY29tCnBzaXBob24uY2EKfGh0dHA6Ly93d3cu
LnR3LwoucGVhY2VmaXJlLm9yZwpwZWFjZWhhbGwuY29tLgpwaGlsbHkuY29tCnBzaXBob24uY2EK
cHR0LmNjLwoKIS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tUS0tLS0tLS0tLS0tL
S0tLS0tLS0t
fGh0dHA6Ly93d3cucHR0LmNjLwoKIS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tU
S0tLS0tLS0t
LS0tLS0t
CnxodHRwOi8vcGl4ZWwucXVhbnRzZXJ2ZS5jb20vCnxodHRwOi8vcXVrZS5jbgp8aHR0
LS0tLS0t
LS0tLS0tLS0tLS0tCnxodHRwOi8vcGl4ZWwucXVhbnRzZXJ2ZS5jb20vCnxodHRwOi8v
c
DovL3d3dy5xdWtlLmNuCnF4YmJzLm9yZy8KCiEtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVI
t
c
XVrZS5jbgp8aHR0cDovL3d3dy5xdWtlLmNuCnF4YmJzLm9yZy8KCiEtLS0tLS0tLS0tLS0tLS0
t
LS0tLS0tLS0tL
S0tLS0tLS0tLS0tLS0tLQp8aHR0cDovL3d3dy5yc2Yub3JnLwp8aHR0cDovL3d3
LS0tLS0tLS0tL
VItLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQp8aHR0cDovL3d3dy5yc2Yub3Jn
dy5yc2YtY2hpbmVzZS5vcmcvCgohLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1T
LS0tLS0tLS0t
Lwp8aHR0cDovL3d3dy5yc2YtY2hpbmVzZS5vcmcvCgohLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0t
LS
0tLS0tLS0tLS0tLS0tLS0KfGh0dHA6Ly9zLnNjcmliZC5jb20vCm5ld3Muc2luYS5jb20udHcK
LS
1TLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KfGh0dHA6Ly9zLnNjcmliZC5jb20vCm5ld3Mu
bmV3cy5zaW5hLmNvbS5oawp8aHR0cDovL3Jzcy5zbGFzaGRvdC5vcmcvCi5zb3VwLmlvLwp8aHR0
c2luYS5jb20udHcKbmV3cy5zaW5hLmNvbS5oawp8aHR0cDovL3Jzcy5zbGFzaGRvdC5vcmcvCi5z
cDovL3BvcnRpczIxLnNwYWNlcy5saXZlLmNvbS8KfGh0dHA6Ly93YW5neWk2NC5zcGFjZXMubGl
2
b3VwLmlvLwp8aHR0cDovL3BvcnRpczIxLnNwYWNlcy5saXZlLmNvbS8KfGh0dHA6Ly93YW5neWk
2
ZS5jb20vCnxodHRwOi8vd2VueXVuY2hhby5zcGFjZXMubGl2ZS5jb20vCnVzaW5mby5zdGF0ZS5n
NC5zcGFjZXMubGl2ZS5jb20vCnxodHRwOi8vd2VueXVuY2hhby5zcGFjZXMubGl2ZS5jb20vCnVz
b3YKCiEtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVQtLS0tLS0tLS0tLS0
tLS0tLS0tLS0tLS0t
aW5mby5zdGF0ZS5nb3YKCiEtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVQ
tLS0tLS0tLS0tLS0t
L
Qp8aHR0cDovL3RhbnNpb2tzaW9rLmNvbS8KdGVjaG5vbG9naXplci5jb20KfGh0dHA6Ly93d3cu
L
S0tLS0tLS0tLS0tLQp8aHR0cDovL3RhbnNpb2tzaW9rLmNvbS8KdGVjaG5vbG9naXplci5jb20K
dGVjaG5vcmF0aS5jb20vCnxodHRwOi8vdGhlcGlyYXRlYmF5Lm9yZy8KY2hpbmEuYmxvZ3MudGlt
fGh0dHA6Ly93d3cudGVjaG5vcmF0aS5jb20vCnxodHRwOi8vdGhlcGlyYXRlYmF5Lm9yZy8KY2hp
ZS5jb20KdGlhbmFubWVubW90aGVyLm9yZwp0bGRwLm9yZwp0b3Jwcm9qZWN0Lm9yZwp8aHR0cDov
bmEuYmxvZ3MudGltZS5jb20KdGlhbmFubWVubW90aGVyLm9yZwp0bGRwLm9yZwp0b3Jwcm9qZWN0
L
2NzYWkudHNpbmdodWEuZWR1LmNuLwp8aHR0cDovL3R0dGFuLmNvbS8KdHVtYmxyLmNvbQouZ292
L
m9yZwp8aHR0cDovL2NzYWkudHNpbmdodWEuZWR1LmNuLwp8aHR0cDovL3R0dGFuLmNvbS8KdHVt
LnR3Lwp0d2lzdGVybm93LmNvbQp0d2l0dGVyLmNvbS9hbW9paXN0CnR3aXR0ZXIuY29tL2JpbGx6
YmxyLmNvbQouZ292LnR3Lwp0d2lzdGVybm93LmNvbQp0d2l0dGVyLmNvbS9hbW9paXN0CnR3aXR0
aG9uZwp0d2l0dGVyLmNvbS9rY29tZQp0d2l0dGVyLmNvbS9zaGl6aGFvCnR3aXR0ZXIuY29tL1ZP
ZXIuY29tL2JpbGx6aG9uZwp0d2l0dGVyLmNvbS9rY29tZQp0d2l0dGVyLmNvbS9zaGl6aGFvCnR3
VENoaW5lc2UKdHdpdHRlci5jb20vemVuZ2ppbnlhbgp0d2l0dGVyLmNvbS96dW9sYQp8aHR0cDov
aXR0ZXIuY29tL1ZPVENoaW5lc2UKdHdpdHRlci5jb20vemVuZ2ppbnlhbgp0d2l0dGVyLmNvbS96
L2FwaXdpa2kudHdpdHRlci5jb20vCnxodHRwOi8vYmxvZy50d2l0dGVyLmNvbS8KfGh0dHA6Ly9k
dW9sYQp8aHR0cDovL2FwaXdpa2kudHdpdHRlci5jb20vCnxodHRwOi8vYmxvZy50d2l0dGVyLmNv
ZXYudHdpdHRlci5jb20vCnxodHRwOi8vc3RhdHVzLnR3aXR0ZXIuY29tLwoKIS0tLS0tLS0tLS0t
bS8KfGh0dHA6Ly9kZXYudHdpdHRlci5jb20vCnxodHRwOi8vc3RhdHVzLnR3aXR0ZXIuY29tLwoK
LS0tLS0tLS0tLS0tLS0tVS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCnxodHRwOi8vYmxvZy51
IS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tVS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCnxo
ZG4uY29tLwp8aHR0cDovL2NpdHkudWRuLmNvbS8KfGh0dHA6Ly9wYXBlci51ZG4uY29tLwp1bmN5
dHRwOi8vYmxvZy51ZG4uY29tLwp8aHR0cDovL2NpdHkudWRuLmNvbS8KfGh0dHA6Ly9wYXBlci51
Y2xvcGVkaWEuCnxodHRwOi8vdW5pZm91bmRyeS5jb20vCnxodHRwOi8vd3d3LnVua25vd25zcGFj
ZG4uY29tLwp1bmN5Y2xvcGVkaWEuCnxodHRwOi8vdW5pZm91bmRyeS5jb20vCnxodHRwOi8vd3d3
ZS5vcmcvCnxodHRwOi8vd3d3LnVybC5jb20udHcvCnxodHRwOi8vd3d3LmNhZmMudXNjb3VydHMu
LnVua25vd25zcGFjZS5vcmcvCnxodHRwOi8vd3d3LnVybC5jb20udHcvCnxodHRwOi8vd3d3LmNh
Z
292LwpodHRwOi8vZWFydGhxdWFrZS51c2dzLmdvdi9lcWNlbnRlci9yZWNlbnRlcXN3dy9NYXBz
Z
mMudXNjb3VydHMuZ292LwpodHRwOi8vZWFydGhxdWFrZS51c2dzLmdvdi9lcWNlbnRlci9yZWNl
LzEwLzEwNV8zMC5waHAKLnV3YW50cy5jb20KCiEtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVY
t
bnRlcXN3dy9NYXBzLzEwLzEwNV8zMC5waHAKLnV3YW50cy5jb20KCiEtLS0tLS0tLS0tLS0tLS0
t
LS0tLS0tLS0tL
S0tLS0tLS0tLS0tLS0tLQp2MmV4LmNvbQp8aHR0cDovL3d3dy52aXN1d29yZHMu
LS0tLS0tLS0tL
VYtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQp2MmV4LmNvbQp8aHR0cDovL3d3
Y29tLwp8aHR0cDovL3d3dy52b2FuZXdzLmNvbS8KCiEtLS0tLS0tLS0tLS0
tLS0tLS0tLS0tLS0t
dy52aXN1d29yZHMuY29tLwp8aHR0cDovL3d3dy52b2FuZXdzLmNvbS8KCiE
tLS0tLS0tLS0tLS0t
L
VctLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQp3d3cud2FuZ3J1b3dhbmcub3JnCi53ZWJzaG90
L
S0tLS0tLS0tLS0tLVctLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQp3d3cud2FuZ3J1b3dhbmcu
cy5jb20vCndlbnh1ZWNpdHkuY29tLwp8aHR0cDovL3N0YXRpYy53ZXRwYWludC5jb20vCnxodHRw
b3JnCi53ZWJzaG90cy5jb20vCndlbnh1ZWNpdHkuY29tLwp8aHR0cDovL3N0YXRpYy53ZXRwYWlu
Oi8vd3d3LndldHBhaW50LmNvbS8KfGh0dHA6Ly93d3cud2V0cGFpbnRpbmplY3RlZC5jb20vCnxo
dC5jb20vCnxodHRwOi8vd3d3LndldHBhaW50LmNvbS8KfGh0dHA6Ly93d3cud2V0cGFpbnRpbmpl
dHRwOi8vd2lkZ2V0LndldHBhaW50c2Vydi51cy8KfGh0dHA6Ly9ldmNoay53aWtpYS5jb20vCndp
Y3RlZC5jb20vCnxodHRwOi8vd2lkZ2V0LndldHBhaW50c2Vydi51cy8KfGh0dHA6Ly9ldmNoay53
a
2lkb3QuY29tCkBAc3RhdGljLndpa2lkb3QuY29tCi53aWtpbGVha3Mub3JnLwohLVdpa2lMZWFr
a
WtpYS5jb20vCndpa2lkb3QuY29tCkBAc3RhdGljLndpa2lkb3QuY29tCi53aWtpbGVha3Mub3Jn
cyBJUAoqLzg4LjgwLjEzLjE2MC8qCnNlY3VyZS53aWtpbWVkaWEub3JnCgohLS0tLS0tLS0tLS0t
LwohLVdpa2lMZWFrcyBJUAoqLzg4LjgwLjEzLjE2MC8qCnNlY3VyZS53aWtpbWVkaWEub3JnCgoh
L
XpoLldpa2lQZWRpYS0tLS0tCiEtLURhIEppIFl1YW4Kemgud2lraXBlZGlhLm9yZyolRTUlQTQl
L
S0tLS0tLS0tLS0tLXpoLldpa2lQZWRpYS0tLS0tCiEtLURhIEppIFl1YW4Kemgud2lraXBlZGlh
QTclRTclQjQlODAlRTUlODUlODMKIS0tRGEgSmkgWXVhbiBTaGkgQmFvCnpoLndpa2lwZWRpYS5v
Lm9yZyolRTUlQTQlQTclRTclQjQlODAlRTUlODUlODMKIS0tRGEgSmkgWXVhbiBTaGkgQmFvCnpo
cmcqJUU1JUE0JUE3JUU3JUI0JTgwJUU1JTg1JTgzJUU2JTk5JTgyJUU1JUEwJUIxCiEtLURhIEpp
Lndpa2lwZWRpYS5vcmcqJUU1JUE0JUE3JUU3JUI0JTgwJUU1JTg1JTgzJUU2JTk5JTgyJUU1JUEw
IFl1YW4gU2hpIEJhbzogemgtY24Kemgud2lraXBlZGlhLm9yZyolRTUlQTQlQTclRTclQkElQUE
l
JUIxCiEtLURhIEppIFl1YW4gU2hpIEJhbzogemgtY24Kemgud2lraXBlZGlhLm9yZyolRTUlQTQ
l
RTUlODUlODMlRTYlOTclQjYlRTYlOEElQTUKIS0tRGEgU2UgR3VvIEpJCnpoLndpa2lwZWRpYS5v
QTclRTclQkElQUElRTUlODUlODMlRTYlOTclQjYlRTYlOEElQTUKIS0tRGEgU2UgR3VvIEpJCnpo
cmcqJUU1JUE0JUE3JUU4JUI1JUE2JUU1JTlCJUJEJUU5JTk5JTg1CiEtLUUgTHVvIFNpCnpoLndp
Lndpa2lwZWRpYS5vcmcqJUU1JUE0JUE3JUU4JUI1JUE2JUU1JTlCJUJEJUU5JTk5JTg1CiEtLUUg
a2lwZWRpYS5vcmcqJUU0JUJGJTg0JUU3JUJEJTk3JUU2JTk2JUFGCiEtLUZhIEx1biBHb25nCnpo
THVvIFNpCnpoLndpa2lwZWRpYS5vcmcqJUU0JUJGJTg0JUU3JUJEJTk3JUU2JTk2JUFGCiEtLUZh
Lndpa2lwZWRpYS5vcmcqJUU2JUIzJTk1JUU4JUJDJUFBJUU1JThBJTlGCiEtLUZhIEx1biBHb25n
IEx1biBHb25nCnpoLndpa2lwZWRpYS5vcmcqJUU2JUIzJTk1JUU4JUJDJUFBJUU1JThBJTlGCiEt
OiB6aC1oYW5zCnpoLndpa2lwZWRpYS5vcmcqJUU2JUIzJTk1JUU4JUJEJUFFJUU1JThBJTlGCiEt
LUZhIEx1biBHb25nOiB6aC1oYW5zCnpoLndpa2lwZWRpYS5vcmcqJUU2JUIzJTk1JUU4JUJEJUFF
LUZhbmcgSHVvIENoYW5nIENoZW5nCnpoLndpa2lwZWRpYS5vcmcqJUU5JTk4JUIyJUU3JTgxJUFC
JUU1JThBJTlGCiEtLUZhbmcgSHVvIENoYW5nIENoZW5nCnpoLndpa2lwZWRpYS5vcmcqJUU5JTk4
JU
U5JTk1JUJGJUU1JTlGJThFCiEtLUh1YSBZdWFuIFJ1YW4gSmlhbgp6aC53aWtpcGVkaWEub3Jn
JU
IyJUU3JTgxJUFCJUU5JTk1JUJGJUU1JTlGJThFCiEtLUh1YSBZdWFuIFJ1YW4gSmlhbgp6aC53
L3dpa2kvJUU4JThBJUIxJUU1JTlCJUFEJUU4JUJEJUFGJUU0JUJCJUI2CiEtLUh1YSBZdWFuIFdh
aWtpcGVkaWEub3JnL3dpa2kvJUU4JThBJUIxJUU1JTlCJUFEJUU4JUJEJUFGJUU0JUJCJUI2CiEt
bmcKemgud2lraXBlZGlhLm9yZyolRTglOEElQjElRTUlOUIlQUQlRTclQkQlOTEKIS0tTGl1IFNp
LUh1YSBZdWFuIFdhbmcKemgud2lraXBlZGlhLm9yZyolRTglOEElQjElRTUlOUIlQUQlRTclQkQl
IFNoaSBKaWFuCnpoLndpa2lwZWRpYS5vcmcqJUU1JTg1JUFEJUU1JTlCJTlCJUU0JUJBJThCJUU0
OTEKIS0tTGl1IFNpIFNoaSBKaWFuCnpoLndpa2lwZWRpYS5vcmcqJUU1JTg1JUFEJUU1JTlCJTlC
JU
JCJUI2CiEtLU1laSBHdW8gWmhpIFlpbgp6aC53aWtpcGVkaWEub3JnKiVFNyVCRSU4RSVFNSU5
JU
U0JUJBJThCJUU0JUJCJUI2CiEtLU1laSBHdW8gWmhpIFlpbgp6aC53aWtpcGVkaWEub3JnKiVF
QiVCRCVFNCVCOSU4QiVFOSU5RiVCMwohLS1XZW4gQ2h1YW4gRGEgRGkgWmhlbgp6aC53aWtpcGVk
NyVCRSU4RSVFNSU5QiVCRCVFNCVCOSU4QiVFOSU5RiVCMwohLS1XZW4gQ2h1YW4gRGEgRGkgWmhl
aWEub3JnKiVFNiVCMSVCNiVFNSVCNyU5RCVFNSVBNCVBNyVFNSU5QyVCMCVFOSU5QyU4NwohLS1X
bgp6aC53aWtpcGVkaWEub3JnKiVFNiVCMSVCNiVFNSVCNyU5RCVFNSVBNCVBNyVFNSU5QyVCMCVF
dSBHdW8gSmllIEppIFpoZQp6aC53aWtpcGVkaWEub3JnKiVFNiU5NyVBMCVFNSU5QiVCRCVFNyU5
OSU5QyU4NwohLS1XdSBHdW8gSmllIEppIFpoZQp6aC53aWtpcGVkaWEub3JnKiVFNiU5NyVBMCVF
NSU
4QyVFOCVBRSVCMCVFOCU4MCU4NQohLS1XdSBKaWUgV2FuZyBMdW8Kemgud2lraXBlZGlhLm9y
NSU
5QiVCRCVFNyU5NSU4QyVFOCVBRSVCMCVFOCU4MCU4NQohLS1XdSBKaWUgV2FuZyBMdW8Kemgu
ZyolRTYlOTclQTAlRTclOTUlOEMlRTclQkQlOTElRTclQkIlOUMKIS0tWGkgWmFuZyBMaXUgV2Fu
d2lraXBlZGlhLm9yZyolRTYlOTclQTAlRTclOTUlOEMlRTclQkQlOTElRTclQkIlOUMKIS0tWGkg
ZyBaaGVuZyBGdQp6aC53aWtpcGVkaWEub3JnKiVFOCVBNSVCRiVFOCU5NyU4RiVFNiVCNSU4MSVF
WmFuZyBMaXUgV2FuZyBaaGVuZyBGdQp6aC53aWtpcGVkaWEub3JnKiVFOCVBNSVCRiVFOCU5NyU4
NCVCQSVBMSVFNiU5NCVCRiVFNSVCQSU5QwohLS1aaG9uZyBHdW8gRGEgTHUgRmVuZyBTdW8gV2Vp
RiVFNiVCNSU4MSVFNCVCQSVBMSVFNiU5NCVCRiVFNSVCQSU5QwohLS1aaG9uZyBHdW8gRGEgTHUg
IEpJIE1laSBUaSBTaGkgSmlhbgp6aC53aWtpcGVkaWEub3JnKiVFNCVCOCVBRCVFNSU5QiVCRCVF
RmVuZyBTdW8gV2VpIEpJIE1laSBUaSBTaGkgSmlhbgp6aC53aWtpcGVkaWEub3JnKiVFNCVCOCVB
NSVBNCVBNyVFOSU5OSU4NiVFNSVCMCU4MSVFOSU5NCU4MSVFNyVCQiVCNCVFNSU5RiVCQSVFNSVB
RCVFNSU5QiVCRCVFNSVBNCVBNyVFOSU5OSU4NiVFNSVCMCU4MSVFOSU5NCU4MSVFNyVCQiVCNCVF
QSU5MiVFNCVCRCU5MyVFNCVCQSU4QiVFNCVCQiVCNgohLS1aaG9uZyBHdW8gRGEgTHUgV2FuZyBM
NSU5RiVCQSVFNSVBQSU5MiVFNCVCRCU5MyVFNCVCQSU4QiVFNCVCQiVCNgohLS1aaG9uZyBHdW8g
dW8gRmVuZyBTdW8Kemgud2lraXBlZGlhLm9yZyolRTQlQjglQUQlRTUlOUMlOEIlRTUlQTQlQTc
l
RGEgTHUgV2FuZyBMdW8gRmVuZyBTdW8Kemgud2lraXBlZGlhLm9yZyolRTQlQjglQUQlRTUlOUM
l
RTklOTklQjglRTclQjYlQjIlRTglQjclQUYlRTUlQjAlODElRTklOEUlOTYKIS0tWmhvbmcgR3Vv
OEIlRTUlQTQlQTclRTklOTklQjglRTclQjYlQjIlRTglQjclQUYlRTUlQjAlODElRTklOEUlOTYK
I
FdhbmcgTHVvIFNoZW4gQ2hhCnpoLndpa2lwZWRpYS5vcmcqJUU0JUI4JUFEJUU1JTlCJUJEJUU3
I
S0tWmhvbmcgR3VvIFdhbmcgTHVvIFNoZW4gQ2hhCnpoLndpa2lwZWRpYS5vcmcqJUU0JUI4JUFE
JU
JEJTkxJUU3JUJCJTlDJUU1JUFFJUExJUU2JTlGJUE1CiEtLVpob25nIEh1YSBSZW4gTWluIEdv
JU
U1JTlCJUJEJUU3JUJEJTkxJUU3JUJCJTlDJUU1JUFFJUExJUU2JTlGJUE1CiEtLVpob25nIEh1
bmcgSGUgR3VvIFdhbmcgTHVvIFNoZW4gQ2hhCnpoLndpa2lwZWRpYS5vcmcqJUU0JUI4JUFEJUU1
YSBSZW4gTWluIEdvbmcgSGUgR3VvIFdhbmcgTHVvIFNoZW4gQ2hhCnpoLndpa2lwZWRpYS5vcmcq
J
ThEJThFJUU0JUJBJUJBJUU2JUIwJTkxJUU1JTg1JUIxJUU1JTkyJThDJUU1JTlCJUJEJUU3JUJE
J
UU0JUI4JUFEJUU1JThEJThFJUU0JUJBJUJBJUU2JUIwJTkxJUU1JTg1JUIxJUU1JTkyJThDJUU1
JT
kxJUU3JUJCJTlDJUU1JUFFJUExJUU2JTlGJUE1CiEtLVppIFlvdSBNZW4Kemgud2lraXBlZGlh
JT
lCJUJEJUU3JUJEJTkxJUU3JUJCJTlDJUU1JUFFJUExJUU2JTlGJUE1CiEtLVppIFlvdSBNZW4K
Lm9yZyolRTglODclQUElRTclOTQlQjElRTklOTclQTgKIS0tWmkgWW91IFlhIFpob3UKemgud2lr
emgud2lraXBlZGlhLm9yZyolRTglODclQUElRTclOTQlQjElRTklOTclQTgKIS0tWmkgWW91IFlh
aXBlZGlhLm9yZyolRTglODclQUElRTclOTQlQjElRTQlQkElOUElRTYlQjQlQjIKIS0tWmkgWW91
IFpob3UKemgud2lraXBlZGlhLm9yZyolRTglODclQUElRTclOTQlQjElRTQlQkElOUElRTYlQjQl
IFlhIFpob3UgRGlhbiBUYWk6IHpoLWhhbnMKemgud2lraXBlZGlhLm9yZyolRTglODclQUElRTc
l
QjIKIS0tWmkgWW91IFlhIFpob3UgRGlhbiBUYWk6IHpoLWhhbnMKemgud2lraXBlZGlhLm9yZyo
l
OTQlQjElRTQlQkElOUElRTYlQjQlQjIlRTclOTQlQjUlRTUlOEYlQjAKCi53b3JkcHJlc3MuY29t
RTglODclQUElRTclOTQlQjElRTQlQkElOUElRTYlQjQlQjIlRTclOTQlQjUlRTUlOEYlQjAKCi53
CkBAaHR0cDovL3Muc3RhdHMud29yZHByZXNzLmNvbS8KQEBodHRwOi8vczEud29yZHByZXNzLmNv
b3JkcHJlc3MuY29tCkBAaHR0cDovL3Muc3RhdHMud29yZHByZXNzLmNvbS8KQEBodHRwOi8vczEu
bS8KQEBodHRwOi8vc3RhdHMud29yZHByZXNzLmNvbS8KQEBodHRwOi8vd3d3LndvcmRwcmVzcy5j
d29yZHByZXNzLmNvbS8KQEBodHRwOi8vc3RhdHMud29yZHByZXNzLmNvbS8KQEBodHRwOi8vd3d3
b20KLnd1amllLm5ldAoKIS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tWC0tLS0tLS0tLS0tLS
0t
LndvcmRwcmVzcy5jb20KLnd1amllLm5ldAoKIS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tWC
0t
LS0tLS0tLS0tLS0t
CnxodHRwOi8vd3d3LnhhbmdhLmNvbS8KfGh0dHA6Ly93d3cueGluaHVhbmV0
LS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tCnxodHRwOi8vd3d3LnhhbmdhLmNvbS8KfGh0dHA6Ly93
Lm9yZy8KfGh0dHA6Ly9ibG9nLnh1aXRlLm5ldC8KCiEtLS0tLS0tLS0tLS0
tLS0tLS0tLS0tLS0t
d3cueGluaHVhbmV0Lm9yZy8KfGh0dHA6Ly9ibG9nLnh1aXRlLm5ldC8KCiE
tLS0tLS0tLS0tLS0t
L
VktLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQp8aHR0cDovL2Jsb2cueWFtLmNvbS8KbmV3cy55
L
S0tLS0tLS0tLS0tLVktLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQp8aHR0cDovL2Jsb2cueWFt
YW0uY29tCnxodHRwOi8vd3d3LnlvdXBhaS5vcmcvCnxodHRwOi8vd3d3LnlvdXItZnJlZWRvbS5u
LmNvbS8KbmV3cy55YW0uY29tCnxodHRwOi8vd3d3LnlvdXBhaS5vcmcvCnxodHRwOi8vd3d3Lnlv
ZXQvCnxodHRwczovL3d3dy55b3VyLWZyZWVkb20ubmV0Lwp5b3V0dWJlLmNvbQpAQHlvdXR1YmUu
dXItZnJlZWRvbS5uZXQvCnxodHRwczovL3d3dy55b3VyLWZyZWVkb20ubmV0Lwp5b3V0dWJlLmNv
Y29tL2dldF92aWRlbwp5dGh0Lm5ldC8KCiEtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVo
tLS0t
bQpAQHlvdXR1YmUuY29tL2dldF92aWRlbwp5dGh0Lm5ldC8KCiEtLS0tLS0tLS0tLS0tLS0
tLS0t
LS0tLS0tL
S0tLS0tLS0tLS0tLS0tLQp8aHR0cDovL2x1bnRhbi56YW9iYW8uY29tLwouemVuZ2pp
LS0tLS0tL
VotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQp8aHR0cDovL2x1bnRhbi56YW9iYW8u
bnlhbi5vcmcKemVuZ2ppbnlhbi5zcGFjZXMubGl2ZS5jb20KenVvbGEuY29tCgohLS0tLS0tLS0
t
Y29tLwouemVuZ2ppbnlhbi5vcmcKemVuZ2ppbnlhbi5zcGFjZXMubGl2ZS5jb20KenVvbGEuY29
t
LS0tLS0tLS0tLS0tLS0tLS1PdGhlci0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIS0tZG9uZyB0YWkg
CgohLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1PdGhlci0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K
d2FuZwolRTUlOEElQTglRTYlODAlODElRTclQkQlOTEKZmFsdW5kYWZhCiEtZmEgbHVuIGRhIGZh
IS0tZG9uZyB0YWkgd2FuZwolRTUlOEElQTglRTYlODAlODElRTclQkQlOTEKZmFsdW5kYWZhCiEt
CiVFNiVCMyU5NSVFOCVCRCVBRSVFNSVBNCVBNyVFNiVCMyU5NQohLS1MaXUgWGlhbyBCbwolRTUl
ZmEgbHVuIGRhIGZhCiVFNiVCMyU5NSVFOCVCRCVBRSVFNSVBNCVBNyVFNiVCMyU5NQohLS1MaXUg
ODglOTglRTYlOTklOTMlRTYlQjMlQTIKc2VhcmNoP3E9Y2FjaGUKc2VhcmNoP3E9c2FmZXdlYgpV
WGlhbyBCbwolRTUlODglOTglRTYlOTklOTMlRTYlQjMlQTIKc2VhcmNoP3E9Y2FjaGUKc2VhcmNo
bHRyYXJlYWNoCgoKCiEtLS0tLS1VblNvcnRlZC0tLS0tLS0tLS0tLS
0tLS0tLS0tLS0tLS0tLS0t
P3E9c2FmZXdlYgpVbHRyYXJlYWNoCgoKCiEtLS0tLS1VblNvcnRlZC
0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tL
QoKCgp8aHR0cDovL2Rsc3RhdHVzYmFyLnByb2JvYXJkczQzLmNvbS8KfGh0dHA6
LS0tLS0tLS0tL
S0tLS0tLS0tLS0tLQoKCgp8aHR0cDovL2Rsc3RhdHVzYmFyLnByb2JvYXJkczQz
L
y93d3cud3JldGNoLmNjLwp8aHR0cDovL21hb215Lm1vdGltZS5jb20vCnxodHRwOi8vY2guc2h2
L
mNvbS8KfGh0dHA6Ly93d3cud3JldGNoLmNjLwp8aHR0cDovL21hb215Lm1vdGltZS5jb20vCnxo
b29uZy5jb20vCnxodHRwOi8vd3d3LmxhbmNza3kuY29tLwp8aHR0cDovL3d3dy5sZW5pbmxlZS5j
dHRwOi8vY2guc2h2b29uZy5jb20vCnxodHRwOi8vd3d3LmxhbmNza3kuY29tLwp8aHR0cDovL3d3
bi8KfGh0dHA6Ly93d3cuYm94Lm5ldC9zaGFyZWQvcDF0MG5meHpyZAp8aHR0cDovL3d3dy5yZmku
dy5sZW5pbmxlZS5jbi8KfGh0dHA6Ly93d3cuYm94Lm5ldC9zaGFyZWQvcDF0MG5meHpyZAp8aHR0
ZnIvYWN0dWNuL3BhZ2VzLzAwMS9ob21lY2hpbm9pcy5hc3AKfGh0dHA6Ly93d3cueXp6ay5jb20v
cDovL3d3dy5yZmkuZnIvYWN0dWNuL3BhZ2VzLzAwMS9ob21lY2hpbm9pcy5hc3AKfGh0dHA6Ly93
CnxodHRwOi8vd3d3LndlZWttYWcuaW5mby8KYmVuZGlrZW4ubmV0Ci5iYWRvbmdvLmNvbS8KLmVj
d3cueXp6ay5jb20vCnxodHRwOi8vd3d3LndlZWttYWcuaW5mby8KYmVuZGlrZW4ubmV0Ci5iYWRv
c3RhcnQuY29tLwp8aHR0cDovL2JzaWVnZWwuYXRoLmN4Lwp8aHR0cDovL3d3dy50eWNvb2wuY29t
bmdvLmNvbS8KLmVjc3RhcnQuY29tLwp8aHR0cDovL2JzaWVnZWwuYXRoLmN4Lwp8aHR0cDovL3d3
Lwp3d3cubXNndWFuY2hhLmNvbQp8aHR0cDovL3d3dy5tZWV0dXAuY29tLwp8aHR0cDovL3d3dy5t
dy50eWNvb2wuY29tLwp3d3cubXNndWFuY2hhLmNvbQp8aHR0cDovL3d3dy5tZWV0dXAuY29tLwp8
dWx0aXBseS5jb20vCnxodHRwOi8vdHJ1dmVvLmNvbS8KfGh0dHA6Ly9mdW5wLmNvbS8KfGh0dHA6
aHR0cDovL3d3dy5tdWx0aXBseS5jb20vCnxodHRwOi8vdHJ1dmVvLmNvbS8KfGh0dHA6Ly9mdW5w
L
y93d3cub3hmYW0ub3JnLmhrLwp8aHR0cDovL3d3dy5zYWx2YXRpb24ub3JnLmhrLwp8aHR0cDov
L
mNvbS8KfGh0dHA6Ly93d3cub3hmYW0ub3JnLmhrLwp8aHR0cDovL3d3dy5zYWx2YXRpb24ub3Jn
L
3d3dy50YWNlbS5vcmcvCi5waXhuZXQubmV0Lwp8aHR0cDovL215c2luYWJsb2cuY29tLwp8aHR0
L
mhrLwp8aHR0cDovL3d3dy50YWNlbS5vcmcvCi5waXhuZXQubmV0Lwp8aHR0cDovL215c2luYWJs
cDovL3d3dy5rd29uZ3dhaC5jb20ubXkvCnxodHRwOi8vd3d3LmRhaWx5bW90aW9uLmNvbS8KfGh
0
b2cuY29tLwp8aHR0cDovL3d3dy5rd29uZ3dhaC5jb20ubXkvCnxodHRwOi8vd3d3LmRhaWx5bW9
0
dHA6Ly9vcmllbnRhbGRhaWx5Lm9uLmNjLwp8aHR0cDovL25ld3MuZnR2LmNvbS50dy8KfGh0dHA6
aW9uLmNvbS8KfGh0dHA6Ly9vcmllbnRhbGRhaWx5Lm9uLmNjLwp8aHR0cDovL25ld3MuZnR2LmNv
Ly93d3cubWl0YmJzLmNvbS8KLmF0bmV4dC5jb20
KfGh0dHA6Ly93d3cueHlzLm9yZy8KZ2FyZGVu
bS50dy8KfGh0dHA6Ly93d3cubWl0YmJzLmNvbS8
KfGh0dHA6Ly93d3cueHlzLm9yZy8KZ2FyZGVu
bmV0d29ya3MuY29tCnNlY3JldGNoaW5hLmNvbQpkb25ndGFpd2FuZy5jb20Kc291bmRvZmhvcGUu
bmV0d29ya3MuY29tCnNlY3JldGNoaW5hLmNvbQpkb25ndGFpd2FuZy5jb20Kc291bmRvZmhvcGUu
b3JnCmJvbGluLm5ldGZpcm1zLmNvbQp8aHR0cDovL3d3dy5yZmEub3JnLwplcG9jaHRpbWVzLmNv
b3JnCmJvbGluLm5ldGZpcm1zLmNvbQp8aHR0cDovL3d3dy5yZmEub3JnLwplcG9jaHRpbWVzLmNv
bS8KZGFqaXl1YW4uY29tLwpjb21lZnJvbWNoaW5hLmNvbQpnb3BldGl0aW9uLmNvbQpjcmVhZGVy
bS8KZGFqaXl1YW4uY29tLwpjb21lZnJvbWNoaW5hLmNvbQpnb3BldGl0aW9uLmNvbQpjcmVhZGVy
...
...
sendGFWList.sh
0 → 100755
View file @
a75ab263
#!/bin/bash
#
# A simple script help to maintain AutoProxy gfwList easily.
#
# Function:
# Update local svn repository;
# Commit decoded changes(by others in your team) to local git repository
# with decoded message and authors name;
# Update "Last Modified" time;
# Update "Checksum";
# Commit your changes to local git repository;
# Commit your encoded changes to remote svn repository with encoded log.
# Usage:
# Initialize:
# $svn checkout https://autoproxy-gfwlist.googlecode.com/svn/trunk/ gfwList --username your-google-user-name
# $cd gfwList
# $git init
# $base64 gfwlist.txt > list.txt
# $git add list.txt
# $git commit -a -m "init"
# Normal Usage:
# edit list.txt as usual;
# $./synGfwList.sh "say something about this edit"
# Note:
# 1: You can use "git" to show, diff, log...what's you want;
# 2: "gfwlist.txt" is a fake file, do NOT commit "list.txt" to svn server;
# 3: Do NOT use any unicode character in the list, there is a known bug.
###############################################################################
# dependence
for
cmd
in
sed date base64
gawk svn git
do
which
$cmd
&> /dev/null
;
if
[
$?
-ne
0
]
;
then
echo
"Depends on
$cmd
, please install it first."
;
exit
1
;
fi
done
# get current revision number
oriLang
=
$LANG
;
export
LANG
=
"en_US"
;
curRevNum
=
$(
svn info | gawk
'/^Revision:/ { print $2 }'
)
;
export
LANG
=
$oriLang
;
# save local modification
git diff
>
temp.patch
&&
svn update
&&
# get formated author and log information
log
=
$(
svn log
-r
$curRevNum
:HEAD
)
&&
log
=
$(
echo
$log
| gawk
-v
RS
=
'------------------------------------------------------------------------'
\
'NR > 3 { if (NF > 10) printf "%s:%s;", $3, $NF; }'
)
&&
# convert from base64
i
=
0
&&
convertedLog
=
""
&&
while
[
"
$log
"
!=
""
]
do
if
((
$i
%2
==
0
))
;
then
# author
temp
=
${
log
%%
:
*
}
;
convertedLog+
=
$temp
;
convertedLog+
=
":
\"
"
;
log
=
${
log
#*
:
}
;
else
# log, decode it
temp
=
$(
echo
${
log
%%;*
}
|
base64
-d
)
;
convertedLog+
=
$temp
;
convertedLog+
=
"
\"
; "
;
log
=
${
log
#*;
}
;
fi
((
i++
))
;
done
# replace last ";" symbol to "."
convertedLog
=
$(
echo
$convertedLog
|
sed
's/;$/\./'
)
&&
if
[
"
$convertedLog
"
!=
""
]
;
then
# modified by others, commit to local repository.
# log format: author1:"message1"; author2:"message2"...
base64
-d
gfwlist.txt
>
list.txt
&&
git commit
-a
-m
"
$convertedLog
"
&&
# apply local modification
git apply temp.patch
;
fi
# update date and checksum
sed
-i
s/
"Last Modified:.*$"
/
"Last Modified:
$(
date
-R
-r
list.txt
)
"
/ list.txt
&&
./addChecksum.pl list.txt
&&
# save self change to git
git commit
-a
-m
"
$*
"
&&
# commit to remote svn server
base64
list.txt
>
gfwlist.txt
&&
svn ci
-m
$(
echo
"
$*
"
|
base64
)
&&
rm
temp.patch
;
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment