[Biocorba-l] Prototype of proposed BioCorba-0.2 with EMBL-Bank

Alan Robinson alan@ebi.ac.uk
Wed, 8 Nov 2000 16:24:01 +0000 (GMT Standard Time)


  This message is in MIME format.  The first part should be readable text,
  while the remaining parts are likely unreadable without MIME-aware tools.
  Send mail to mime@docserver.cac.washington.edu for more info.

--25468912-21755-973700641=:100
Content-Type: TEXT/PLAIN; charset=US-ASCII

Hi,

The IOR for a prototype of our proposed BioCorba-0.2 with EMBL-Bank is
available from:

	http://industry.ebi.ac.uk/~alan/IOR/

and is called 

	org.biocorba.seqcore.BioEnvPOAImpl-Biocorba-0.2.ior


Attached to this message is the source code for a demo Java client.


WARNING - I'm not entirely happy with the server implementation yet. It
seems to be running slower than I would otherwise expect. However, I'm
about to go away for two weeks and wanted to get something out of the door
before I left!


Documentation and code is also available from:

	http://industry.ebi.ac.uk/~alan/BioCorba-0.2.0/


cheers,
al


PS There's a chance you may see odd behaviour with locations for circular
sequences where they cross the origin.


--
============================================================
Alan J. Robinson, D.Phil.             Tel:+44-(0)1223 494444
European Bioinformatics Institute     Fax:+44-(0)1223 494468
EMBL Outstation - Hinxton             Email:  alan@ebi.ac.uk
Wellcome Trust Genome Campus
Hinxton, Cambridge
CB10 1SD, UK                http://industry.ebi.ac.uk/~alan/
============================================================

--25468912-21755-973700641=:100
Content-Type: APPLICATION/octet-stream; name="EmblBiocorbaClient.java"
Content-Transfer-Encoding: BASE64
Content-ID: <Pine.WNT.4.05.10011081624010.100@medusa.ebi.ac.uk>
Content-Description: 
Content-Disposition: attachment; filename="EmblBiocorbaClient.java"

aW1wb3J0IG9yZy5iaW9jb3JiYS5zZXFjb3JlLio7CmltcG9ydCBqYXZhLmlv
LkJ1ZmZlcmVkUmVhZGVyOwppbXBvcnQgamF2YS5pby5JbnB1dFN0cmVhbVJl
YWRlcjsKaW1wb3J0IGphdmEuaW8uQnVmZmVyZWRJbnB1dFN0cmVhbTsKCnB1
YmxpYyBjbGFzcyBFbWJsQmlvY29yYmFDbGllbnQgewoKICAgIHB1YmxpYyBz
dGF0aWMgdm9pZCBtYWluIChTdHJpbmdbXSBhcmdzKSB7CgkvL1JlZmVyZW5j
ZSBmb3IgYWNjZXNzaW9uX251bWJlci4KCVN0cmluZyBhY2Nlc3Npb25fbnVt
YmVyOwoJCglpZiAoYXJncy5sZW5ndGggPCAxKQoJICAgIGFjY2Vzc2lvbl9u
dW1iZXIgPSAiSFNFUlBHIjsKCWVsc2UKCSAgICBhY2Nlc3Npb25fbnVtYmVy
ID0gYXJnc1swXTsKCgl0cnkgewoKCSAgICAvL0NyZWF0ZSB0aGUgbG9jYXRp
b24gb2YgdGhlIElPUiBmaWxlLgogICAgICAgICAgICBqYXZhLm5ldC5VUkwg
dXJsID0gCgkJbmV3IGphdmEubmV0LlVSTCgiaHR0cDovL2luZHVzdHJ5LmVi
aS5hYy51ay9+YWxhbi9JT1Ivb3JnLmJpb2NvcmJhLnNlcWNvcmUuQmlvRW52
UE9BSW1wbC1CaW9jb3JiYS0wLjIuaW9yIik7CgoJICAgIC8vR2V0IHRoZSBJ
T1IgZm9yIHRoZSBzZXJ2ZXIuCgkgICAgQnVmZmVyZWRSZWFkZXIgcmVhZGVy
ID0gbmV3IEJ1ZmZlcmVkUmVhZGVyCgkJKG5ldyBJbnB1dFN0cmVhbVJlYWRl
cgoJCSAgICAobmV3IEJ1ZmZlcmVkSW5wdXRTdHJlYW0KCQkJKHVybC5vcGVu
U3RyZWFtKCkpKSk7CgkgICAgU3RyaW5nIGlvciA9IHJlYWRlci5yZWFkTGlu
ZSgpOwoJICAgIHJlYWRlci5jbG9zZSgpOwoJICAgIAoJICAgIC8vQ3JlYXRl
IGFuIE9SQiBvYmplY3QuCgkgICAgb3JnLm9tZy5DT1JCQS5PUkIgb3JiID0g
b3JnLm9tZy5DT1JCQS5PUkIuaW5pdChuZXcgU3RyaW5nWzBdLCBudWxsKTsK
CgkgICAgLy9DcmVhdGUgdGhlIENPUkJBIG9iamVjdCBmcm9tIHRoZSBJT1Iu
CiAgICAgICAgICAgIG9yZy5vbWcuQ09SQkEuT2JqZWN0IG9iaiA9IG9yYi5z
dHJpbmdfdG9fb2JqZWN0KGlvcik7CiAgICAgICAgICAgIAoJICAgIC8vTmFy
cm93IGl0IHRvIGEgQmlvRW52IG9iamVjdC4KICAgICAgICAgICAgQmlvRW52
IGJpb0VudiA9IEJpb0VudkhlbHBlci5uYXJyb3cob2JqKTsKICAgICAgICAg
ICAgCiAgICAgICAgICAgIC8vRmluZCB0aGUgbmFtZXMgb2YgdGhlIGRhdGFi
YXNlcyBhdmFpbGFibGUgZm9ybSB0aGUgQmlvRW52IHNlcnZlci4KICAgICAg
ICAgICAgU3RyaW5nW10gbmFtZXMgPSBiaW9FbnYuZ2V0X1NlcURCX25hbWVz
KCk7CgkgICAgU3lzdGVtLm91dC5wcmludGxuKCJOdW1iZXIgb2YgZGF0YWJh
c2VzIGluIEJpb0VudjogIituYW1lcy5sZW5ndGgpOwogICAgICAgICAgICBm
b3IgKGludCBpPTA7IGk8bmFtZXMubGVuZ3RoOyBpKyspIHsKICAgICAgICAg
ICAgICBTeXN0ZW0ub3V0LnByaW50bG4oIlx0IisoaSsxKSsiLiBEYXRhYmFz
ZSBuYW1lOiAiK25hbWVzW2ldKTsKICAgICAgICAgICAgfQoKCSAgICAvL1Jl
dHVybiBhIHJlZmVyZW5jZSB0byB0aGUgRU1CTCBkYXRhYmFzZS4KCSAgICBT
ZXFEQiBzZXFEQiA9IGJpb0Vudi5nZXRfU2VxREJfYnlfbmFtZSgiRU1CTC1C
YW5rIiwgMCk7CgoJICAgIC8vUHJpbnQgb3V0IGluZm9ybWF0aW9uIGFib3V0
IHRoZSBkYXRhYmFzZS4KCSAgICBTeXN0ZW0ub3V0LnByaW50bG4oIkRhdGFi
YXNlIG5hbWU6ICIrc2VxREIubmFtZSgpKTsKCSAgICBTeXN0ZW0ub3V0LnBy
aW50bG4oIkRhdGFiYXNlIHZlcnNpb246ICIrc2VxREIudmVyc2lvbigpKTsK
CSAgICBTeXN0ZW0ub3V0LnByaW50bG4oIk1heCBzZXF1ZW5jZSBsZW5ndGgg
cmV0dXJuZWQ6ICIrc2VxREIubWF4X3NlcXVlbmNlX2xlbmd0aCgpKTsKCSAg
ICAKCgkgICAgLy9Gcm9tIHRoZSBTZXFEQiBkYXRhYmFzZSwgcmV0dXJuIGEg
U2VxIG9iamVjdCBmb3IgdGhlCgkgICAgLy9naXZlbiBhY2Nlc3Npb25fbnVt
YmVyLgoJICAgIFNlcSBzZXEgPSBzZXFEQi5nZXRfU2VxKGFjY2Vzc2lvbl9u
dW1iZXIsIDApOwoKCSAgICBzaG9ydCBfdHlwZSA9IHNlcS50eXBlKCk7Cgkg
ICAgU3RyaW5nIHR5cGUgPSAiIjsKCgkgICAgc3dpdGNoIChfdHlwZSkgewoJ
ICAgIGNhc2UgKFNlcVR5cGUuRE5BKTogCgkJewoJCSAgICB0eXBlID0gIkRO
QSI7CgkJICAgIGJyZWFrOwoJCX0KCSAgICBjYXNlIChTZXFUeXBlLlJOQSk6
CgkJewoJCSAgICB0eXBlID0gIlJOQSI7CgkJICAgIGJyZWFrOwoJCX0KCSAg
ICBjYXNlIChTZXFUeXBlLlBST1RFSU4pOgoJCXsKCQkgICAgdHlwZSA9ICJQ
cm90ZWluIjsKCQkgICAgYnJlYWs7CgkJfQoJICAgIGRlZmF1bHQ6IAoJCXsK
CQkgICAgdHlwZSA9ICJVTktOT1dOIjsKCQkgICAgYnJlYWs7CgkJfQoJICAg
IH0KCgkgICAgLy9QcmludCBvdXQgaW5mb3JtYXRpb24gYWJvdXQgdGhlIFNl
cS4KCSAgICBTeXN0ZW0ub3V0LnByaW50bG4oIlR5cGU6ICIrdHlwZSk7Cgkg
ICAgU3lzdGVtLm91dC5wcmludGxuKCJJcyBjaXJjdWxhcj86ICIrc2VxLmlz
X2NpcmN1bGFyKCkpOwoJICAgIFN5c3RlbS5vdXQucHJpbnRsbigiTGVuZ3Ro
OiAiK3NlcS5sZW5ndGgoKSk7CgkgICAgLy8JICAgIFN5c3RlbS5vdXQucHJp
bnRsbigiU2VxdWVuY2U6ICIrc2VxLnNlcSgpKTsKCSAgICBTeXN0ZW0ub3V0
LnByaW50bG4oIlNlcXVlbmNlWzIuLjVdOiAiK3NlcS5zdWJzZXEoMiw1KSk7
CgkgICAgU3lzdGVtLm91dC5wcmludGxuKCJEaXNwbGF5IElEOiAiK3NlcS5k
aXNwbGF5X2lkKCkpOwoJICAgIFN5c3RlbS5vdXQucHJpbnRsbigiUHJpbWFy
eSBJRDogIitzZXEucHJpbWFyeV9pZCgpKTsKCSAgICBTeXN0ZW0ub3V0LnBy
aW50bG4oIkFjY2Vzc2lvbiBOdW1iZXI6ICIrc2VxLmFjY2Vzc2lvbl9udW1i
ZXIoKSk7CgkgICAgU3lzdGVtLm91dC5wcmludGxuKCJWZXJzaW9uOiAiK3Nl
cS52ZXJzaW9uKCkpOwoJICAgIAoJICAgIC8vR2V0IGFsbCB0aGUgU2VxRmVh
dHVyZXMuCgkgICAgU2VxRmVhdHVyZVZlY3RvciBzZXFGZWF0dXJlVmVjdG9y
ID0gc2VxLmFsbF9TZXFGZWF0dXJlcyh0cnVlKTsKCgkgICAgLy9QcmludCBv
dXQgaW5mb3JtYXRpb24gYWJvdXQgdGhlIFNlcUZlYXR1cmVzLgoJICAgIFN5
c3RlbS5vdXQucHJpbnRsbigiTnVtYmVyIG9mIFNlcUZlYXR1cmVzOiAiK3Nl
cUZlYXR1cmVWZWN0b3Iuc2l6ZSgpKTsKCSAgICAKICAgICAgICAgICAgLy8g
QSByZWZlcmVuY2UgZm9yIGEgU2VxRmVhdHVyZSBvYmplY3QuCiAgICAgICAg
ICAgIFNlcUZlYXR1cmUgc2VxRmVhdHVyZTsKCgkgICAgLy9HbyBvdmVyIGVh
Y2ggU2VxRmVhdHVyZSBpbiB0aGUgU2VxRmVhdHVyZUxpc3QuCgkgICAgZm9y
IChpbnQgaT0wOyBpPHNlcUZlYXR1cmVWZWN0b3Iuc2l6ZSgpOyBpKyspIHsK
ICAgICAgICAgICAgICAgIHNlcUZlYXR1cmUgPSBzZXFGZWF0dXJlVmVjdG9y
LmVsZW1lbnRBdChpKTsKCgkJU3lzdGVtLm91dC5wcmludGxuKCJcdFNlcUZl
YXR1cmUgIisoaSsxKSsiOiAiKTsKCQlTeXN0ZW0ub3V0LnByaW50bG4oIlx0
XHRUeXBlOiAiK3NlcUZlYXR1cmUudHlwZSgpKTsKCQlTeXN0ZW0ub3V0LnBy
aW50bG4oIlx0XHRTb3VyY2U6ICIrc2VxRmVhdHVyZS5zb3VyY2UoKSk7CgkJ
U3lzdGVtLm91dC5wcmludGxuKCJcdFx0U2VxIFByaW1hcnkgSUQ6ICIrc2Vx
RmVhdHVyZS5zZXFfcHJpbWFyeV9pZCgpKTsKCQlTeXN0ZW0ub3V0LnByaW50
bG4oIlx0XHRTdGFydDogIitzZXFGZWF0dXJlLnN0YXJ0KCkpOwoJCVN5c3Rl
bS5vdXQucHJpbnRsbigiXHRcdEVuZDogIitzZXFGZWF0dXJlLmVuZCgpKTsK
CQlTeXN0ZW0ub3V0LnByaW50bG4oIlx0XHRTdHJhbmQ6ICIrc2VxRmVhdHVy
ZS5zdHJhbmQoKSk7CgkJU3lzdGVtLm91dC5wcmludGxuKCJcdFx0UHJpbWFy
eVNlcSBpcyBhdmFpbGFibGU6ICIrCgkJCQkgICBzZXFGZWF0dXJlLlByaW1h
cnlTZXFfaXNfYXZhaWxhYmxlKCkpOwoKICAgICAgICAgICAgICAgIC8vIEV2
YWx1YXRlIHRoZSBsb2NhdGlvbiBpbmZvcm1hdGlvbiBvZiB0aGUgU2VxRmVh
dHVyZS4KICAgICAgICAgICAgICAgIFNlcUZlYXR1cmVMb2NhdGlvbltdIGxv
Y2F0aW9uTGlzdCA9IHNlcUZlYXR1cmUubG9jYXRpb25zKCk7CiAgICAgICAg
ICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oIlx0XHROdW1iZXIgb2YgbG9j
YXRpb24gc2VnbWVudHM6ICIrbG9jYXRpb25MaXN0Lmxlbmd0aCk7CiAgICAg
ICAgICAgICAgICBmb3IgKGludCBsPTA7IGw8bG9jYXRpb25MaXN0Lmxlbmd0
aDsgbCsrKSB7CgkJICAgIFN5c3RlbS5vdXQucHJpbnQoIlx0XHRcdExvY2F0
aW9uICIrKGwrMSkrIjogIik7CgoJCSAgICBpZiAobG9jYXRpb25MaXN0W2xd
LnN0cmFuZCA9PSAtMSkgewoJCQlTeXN0ZW0ub3V0LnByaW50KCJjb21wbGVt
ZW50KCIpOwoJCSAgICB9IGVsc2UgewoJCQlTeXN0ZW0ub3V0LnByaW50KCIo
Iik7CgkJICAgIH0gCgoJCSAgICBzd2l0Y2ggKGxvY2F0aW9uTGlzdFtsXS5z
dGFydC5mdXp6eSkgewoJCSAgICBjYXNlIChGdXp6eVR5cGVDb2RlLkVYQUNU
KToKCQkJewoJCQkgICAgU3lzdGVtLm91dC5wcmludChsb2NhdGlvbkxpc3Rb
bF0uc3RhcnQucG9zaXRpb24rIi4uIik7CgkJCSAgICBicmVhazsKCQkJfQoJ
CSAgICBjYXNlIChGdXp6eVR5cGVDb2RlLldJVEhJTik6CgkJCXsKCQkJICAg
IGludCBwb3NpdGlvbiA9IGxvY2F0aW9uTGlzdFtsXS5zdGFydC5wb3NpdGlv
bjsKCQkJICAgIGludCBleHRlbnNpb24gPSBsb2NhdGlvbkxpc3RbbF0uc3Rh
cnQuZXh0ZW5zaW9uOwoJCQkgICAgU3lzdGVtLm91dC5wcmludCgiKCIrcG9z
aXRpb24rCgkJCQkJICAgICAgICIuIisocG9zaXRpb24rZXh0ZW5zaW9uKSsK
CQkJCQkgICAgICAgIikuLiIpOwoJCQkgICAgYnJlYWs7CgkJCX0KCQkgICAg
Y2FzZSAoRnV6enlUeXBlQ29kZS5CRVRXRUVOKToKCQkJewoJCQkgICAgaW50
IHBvc2l0aW9uID0gbG9jYXRpb25MaXN0W2xdLnN0YXJ0LnBvc2l0aW9uOwoJ
CQkgICAgaW50IGV4dGVuc2lvbiA9IGxvY2F0aW9uTGlzdFtsXS5zdGFydC5l
eHRlbnNpb247CgkJCSAgICBTeXN0ZW0ub3V0LnByaW50KCIoIitwb3NpdGlv
bisKCQkJCQkgICAgICAgIl4iKyhwb3NpdGlvbitleHRlbnNpb24pKwoJCQkJ
CSAgICAgICAiKS4uIik7CgkJCSAgICBicmVhazsKCQkJfQoJCSAgICBjYXNl
IChGdXp6eVR5cGVDb2RlLkJFRk9SRSk6CgkJCXsKCQkJICAgIFN5c3RlbS5v
dXQucHJpbnQoIjwiK2xvY2F0aW9uTGlzdFtsXS5zdGFydC5wb3NpdGlvbisK
CQkJCQkgICAgICIuLiIpOwoJCQkgICAgYnJlYWs7CgkJCX0KCQkgICAgY2Fz
ZSAoRnV6enlUeXBlQ29kZS5BRlRFUik6CgkJCXsKCQkJICAgIFN5c3RlbS5v
dXQucHJpbnQoIj4iK2xvY2F0aW9uTGlzdFtsXS5zdGFydC5wb3NpdGlvbisK
CQkJCQkgICAgICIuLiIpOwoJCQkgICAgCgkJCSAgICBicmVhazsKCQkJfQoJ
CSAgICB9CgkJICAgIAoJCSAgICBzd2l0Y2ggKGxvY2F0aW9uTGlzdFtsXS5l
bmQuZnV6enkpIHsKCQkgICAgY2FzZSAoRnV6enlUeXBlQ29kZS5FWEFDVCk6
CiAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAg
ICAgICAgU3lzdGVtLm91dC5wcmludGxuKGxvY2F0aW9uTGlzdFtsXS5lbmQu
cG9zaXRpb24rCgkJCQkJICAgICAiKSIpOwogICAgICAgICAgICAgICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgfQogICAgICAg
ICAgICAgICAgICBjYXNlIChGdXp6eVR5cGVDb2RlLldJVEhJTik6CiAgICAg
ICAgICAgICAgICAgICAgICB7CgkJCSAgaW50IHBvc2l0aW9uID0gbG9jYXRp
b25MaXN0W2xdLmVuZC5wb3NpdGlvbjsKCQkJICBpbnQgZXh0ZW5zaW9uID0g
bG9jYXRpb25MaXN0W2xdLmVuZC5leHRlbnNpb247CiAgICAgICAgICAgICAg
ICAgICAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCIoIitwb3NpdGlvbisK
CQkJCQkgICAgICIuIisocG9zaXRpb24rZXh0ZW5zaW9uKSsKCQkJCQkgICAg
ICIpIik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgIGNhc2UgKEZ1
enp5VHlwZUNvZGUuQkVUV0VFTik6CiAgICAgICAgICAgICAgICAgICAgICB7
CgkJCSAgaW50IHBvc2l0aW9uID0gbG9jYXRpb25MaXN0W2xdLmVuZC5wb3Np
dGlvbjsKCQkJICBpbnQgZXh0ZW5zaW9uID0gbG9jYXRpb25MaXN0W2xdLmVu
ZC5leHRlbnNpb247CiAgICAgICAgICAgICAgICAgICAgICAgICAgU3lzdGVt
Lm91dC5wcmludGxuKCIoIitwb3NpdGlvbisKCQkJCQkgICAgICJeIisocG9z
aXRpb24rZXh0ZW5zaW9uKSsKCQkJCQkgICAgICIpIik7CiAgICAgICAgICAg
ICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICB9
CiAgICAgICAgICAgICAgICAgIGNhc2UgKEZ1enp5VHlwZUNvZGUuQkVGT1JF
KToKICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAg
ICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oIjwiK2xvY2F0aW9uTGlzdFts
XS5lbmQucG9zaXRpb24rCgkJCQkJICAgIikiKTsKICAgICAgICAgICAgICAg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgIH0KICAg
ICAgICAgICAgICAgICAgY2FzZSAoRnV6enlUeXBlQ29kZS5BRlRFUik6CiAg
ICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAg
ICAgU3lzdGVtLm91dC5wcmludGxuKCI+Iitsb2NhdGlvbkxpc3RbbF0uZW5k
LnBvc2l0aW9uKwoJCQkJCSAgICIpIik7CgogICAgICAgICAgICAgICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgfQogICAgICAg
ICAgICAgICAgICB9CgoKICAgICAgICAgICAgICAgIH0KIAoJCS8vR2V0IHRo
ZSBOYW1lU2V0VmFsdWVMaXN0LgoJCU5hbWVWYWx1ZVNldFtdIHF1YWxpZmll
cnMgPSBzZXFGZWF0dXJlLnF1YWxpZmllcnMoKTsKCQkKCQlTeXN0ZW0ub3V0
LnByaW50bG4oIlx0XHROdW1iZXIgb2YgcXVhbGlmaWVyczogIitxdWFsaWZp
ZXJzLmxlbmd0aCk7CgoJCS8vR28gb3ZlciBlYWNoIG9mIHRoZXNlIFF1YWxp
ZmllcnM6CgkJZm9yIChpbnQgaj0wOyBqPCBxdWFsaWZpZXJzLmxlbmd0aDsg
aisrKSB7CgkJICAgIC8vUHJpbnQgb3V0IHRoZSBRdWFsaWZpZXIgbmFtZSBh
bmQgYWxsIGl0cyB2YWx1ZXMuCgkJICAgIGlmIChxdWFsaWZpZXJzW2pdLnZh
bHVlcy5sZW5ndGggPiAwKSB7CgkJCVN5c3RlbS5vdXQucHJpbnRsbigiXHRc
dFx0UXVhbGlmaWVyICIrCgkJCQkJICAgKGorMSkrIjogIisKCQkJCQkgICBx
dWFsaWZpZXJzW2pdLm5hbWUrIiA9ICIrCgkJCQkJICAgcXVhbGlmaWVyc1tq
XS52YWx1ZXNbMF0pOwoJCSAgICB9IGVsc2UgewoJCQlTeXN0ZW0ub3V0LnBy
aW50bG4oIlx0XHRcdFF1YWxpZmllciAiKwoJCQkJCSAgIGorIjogIisKCQkJ
CQkgICBxdWFsaWZpZXJzW2pdLm5hbWUrIiA9ICIrCgkJCQkJICAgIm51bGwi
KTsKCQkJU3lzdGVtLmVyci5wcmludGxuKCJObyB2YWx1ZSBmb3IgcXVhbGlm
aWVyOiAiKwoJCQkJCSAgIHF1YWxpZmllcnNbal0ubmFtZSsKCQkJCQkgICAi
IGF0ICIrCgkJCQkJICAgc2VxRmVhdHVyZS5zdGFydCgpKwoJCQkJCSAgICIu
LiIrCgkJCQkJICAgc2VxRmVhdHVyZS5lbmQoKSk7CgkJICAgIH0JCQkKCQkg
ICAgZm9yIChpbnQgaz0xOyBrPHF1YWxpZmllcnNbal0udmFsdWVzLmxlbmd0
aDsgaysrKSB7CgkJCVN5c3RlbS5vdXQucHJpbnRsbigiXHRcdFx0XHRcdCIr
cXVhbGlmaWVyc1tqXS52YWx1ZXNba10pOwoJCSAgICB9CgkJfQoJICAgIH0K
CQoJICAgIAoJICAgIC8vUmV0dXJuIGEgU2VxRmVhdHVyZUl0ZXJhdG9yIGZv
ciB0aGUgZmlyc3QgaGFsZiBvZiB0aGUKCSAgICAvL3NlcXVlbmNlLgogICAg
ICAgICAgICBzZXFGZWF0dXJlVmVjdG9yID0gc2VxLmdldF9TZXFGZWF0dXJl
c19pbl9yZWdpb24oMSwgKGludCkoc2VxLmxlbmd0aCgpKS8yLCB0cnVlKTsK
CSAgICBTZXFGZWF0dXJlSXRlcmF0b3Igc2VxRmVhdHVyZUl0ZXJhdG9yID0g
c2VxRmVhdHVyZVZlY3Rvci5pdGVyYXRvcigpOwoKCSAgICAvL0dvIG92ZXIg
dGhlIHZhbHVlcyBhbmQgcHJpbnQgdGhlbSBvdXQuCgkgICAgU3lzdGVtLm91
dC5wcmludGxuKCJcblNlcUZlYXR1cmVJdGVyYXRvciAoMS4uIisoaW50KShz
ZXEubGVuZ3RoKCkvMikrIikuIik7CgoJICAgIHdoaWxlIChzZXFGZWF0dXJl
SXRlcmF0b3IuaGFzX21vcmUoKSkgewoJCXNlcUZlYXR1cmUgPSBzZXFGZWF0
dXJlSXRlcmF0b3IubmV4dCgpOwoJCVN5c3RlbS5vdXQucHJpbnRsbigiXHQi
K3NlcUZlYXR1cmUudHlwZSgpKwoJCQkJICAgIjogKCIrc2VxRmVhdHVyZS5z
dGFydCgpKyIuLiIrc2VxRmVhdHVyZS5lbmQoKSsiKS4iKTsKCSAgICB9Ly93
aGlsZS4KCSAgICAKCX0gY2F0Y2ggKEV4Y2VwdGlvbiBleCkgewoJICAgIGV4
LnByaW50U3RhY2tUcmFjZSgpOwoJfQoKCVN5c3RlbS5vdXQucHJpbnRsbigi
ZmluaXNoZWQiKTsKCiAgICB9Ly9tYWluLgoKfS8vQ2xpZW50Lgo=
--25468912-21755-973700641=:100--