[pkg-bioc] how to proceed?

Dirk Eddelbuettel edd@debian.org
Sun, 6 Feb 2005 13:56:41 -0600


--kQxz4VSsz/
Content-Type: text/plain; charset=iso-8859-1
Content-Description: message body text
Content-Transfer-Encoding: quoted-printable


On 6 February 2005 at 19:31, "Steffen M=F6ller" wrote:
| > I also sent a copy to Elijah a few weeks ago when he (rightly) bugg=
ed me
| > about lack of progress on the debianisation of CRAN.
| >=20
| > Shall I repost is again on alioth?  Problem is, the code is a littl=
e messy
| > and dependent on how I had stuff lined up on my box.  Shall we rewr=
ite
| > that
| > for alioth, or all individually for our home/work machines?  May be=
 the
| > latter as we'll need an esoteric mix of build depends as well...
|=20
| I think you should post your latest version to Alioth again. And the =
we test
| subversion for parallel changes :-)  Well, maybe a notification to th=
is list
| would be beneficial prior to starting bigger diffs.

Included below. 13kb, file date here is Sep 4, 2004 so I haven't run it=
 in a
while.  Needs CRAN2DEB.PM -- 12kb, Jul 29 2004.  They expect certain
directories in certain places -- that is the first thing we need to cha=
nge:
local mirror of CRAN in /var/spool, say, local packages in /var/lib or
whatever ...

I also have a bioc2deb.pl partial rewrite that uses more R for informat=
ion
retrieval (given BioC's excellent and very feature rich repostool packa=
ge).
I never cleanly/fully ported that back to cran2deb.pl, though.

Just ping me with question when something is unclear. Understand that i=
t is a
hack.  It does work, though.  Acknowledgements to Albrecht Gebhardt who=
se
earlier file inspired this.

Dirk


--kQxz4VSsz/
Content-Type: application/octet-stream
Content-Disposition: attachment;
	filename="cran2deb.pl"
Content-Transfer-Encoding: base64

IyEvdXNyL2Jpbi9wZXJsCgojIFRoaXMgc2NyaXB0IGJ1aWxkcyBEZWJpYW4gcGFja2FnZXMg
b2YgYWxsIFIgcGFja2FnZXMgYXZhaWxhYmxlIGF0IENSQU4uCiMgSXQgYXNzdW1lcyBhIGxv
Y2FsIG1pcnJvciBvZiB0aGUgc3JjL2NvbnRyaWIvIGRpcmVjdG9yeQojCiMgQWxicmVjaHQg
R2ViaGFyZHQncyBzY3JpcHQgYnVpbGQtUi1jb250cmliLWRlYnMucGwsIGF2YWlsYWJsZSBh
dAojIAlodHRwOi8vd3d3Lm1hdGgudW5pLWtsdS5hYy5hdC9+YWdlYmhhcmQvYnVpbGQtUi1j
b250cmliLWRlYnMucGwKIyBpcyBncmF0ZWZ1bGx5IGFja25vd2xlZGdlZCBhcyBhIGZhaXJs
eSBjb21wbGV0ZSBzdGFydGluZyBwb2ludC4KCiMgZWRkICBTb21lIG5vdGVzIHJlbGF0aXZl
IHRvIEFsYnJlY2h0J3MgYnVpbGQtUi1jb250cmliLWRlYnMucGwKIyAgICAgIC0gYSBjaHJv
b3RlZCBidWlsZCBlbnZpcm9ubWVudCBtYXkgYmUgcHJlZmVyYWJsZSB0byBtZXNzaW5nIHdp
dGgKIyAgICAgICAgdGhlIHN5c3RlbSBkaXJlY3RseWwgSSBoYXZlIHVzZWQgYSBjaHJvb3Qg
d2hpY2ggSSBhZG1pbidlZAojICAgICAgICBtYW51YWxseSwgYW5kIGN1cnJlbnRseSB1c2Ug
dGhlIHBidWlsZGVyIHBhY2thZ2U7IGVpdGhlciBvbmUgaXMKIyAgICAgICAgZWFzeSB0byBz
ZXQgdXAgd2l0aCBhY3R1YWwgRGViaWFuIHBhY2thZ2VzCiMgICAgICAtIGluIGEgcGJ1aWxk
ZXItc3R5bGUgZW52aXJvbm1lbnQsIHdlJ2Qgd2FudCBhY3R1YWwgQnVpbGQtRGVwZW5kcwoj
ICAgICAgLSB3b3JraW5nIG9mZiBhIGxvY2FsIG1pcnJvciBtYXkgYmUgZWFzaWVyIHRvbyBb
IGluIGZhY3QgaXQgYWxsb3dzCiMgICAgICAgICAgdG8gcmVtb3ZlIGEgbG90IG9mIHRoZSBj
b2RlLCBieSBhc3N1bWluZyB0aGUgbWlycm9yIGlzIGN1cnJlbnQgXQojICAgICAgLSB3b3Vs
ZCBiZSBuaWNlIG5vdCB0byByZXF1aXJlIGEgRGViaWFuIHN5c3RlbSBhcm91bmQgaXQKIyAg
ICAgICAgICBbIG5ldmVyIG1pbmQsIG5lZWQgdG8gc2VlIHdoYXQgaXMgaW4gYXB0LWNhY2hl
OyBzbyByZXF1aXJlIERlYmlhbiBdCiMgICAgICAtIG5lZWQgZXhjZXB0aW9ucyBsaXN0IGZv
ciBwYWNrYWdlcyBhbHJlYWR5IGRlYmlhbml6ZWQgWyBkb25lIF0KIyAgICAgIC0gbmVlZCBh
Y3R1YWwgQnVpbGQtRGVwZW5kcyBpbiBkZWJpYW4vY29udHJvbCBbIGFsbW9zdCBdCiMgICAg
ICAtIHRoZSBjb21tYW5kIAojICAgICAgICAgICAgd2dldCAtLXJldHItc3ltbGlua3MgLUki
Y29udHJpYi9tYWluL0Rlc2NyaXB0aW9ucyIgLW5IIC1tIFwKIyAgICAgICAgICAgICAgICAg
ImZ0cDovL2NyYW4udXMuci1wcm9qZWN0Lm9yZy9jb250cmliL21haW4vIgojICAgICAgICBy
ZXRyaWV2ZXMgdGhlIHRvcC1sZXZlbCBmaWxlcyBhcyB3ZWxsIGFzIHRoZSBEZXNjcmlwdGlv
bnMgZGlyCiMgICAgICAgIGFuZCBub3RoaW5nIGVsc2UKIyAgICAgIC0gd291bGQgYmUgbmlj
ZSB0byBrZWVwIGV4aXN0aW5nIGRlYmlhbi8qIGZpbGVzLCBpbiBwYXJ0aWN1bGFyIHRoZQoj
ICAgICAgICBjaGFuZ2Vsb2cKIyAgICAgIC0gYXMgYSBydWxlLCBzaG91bGQgRGVwZW5kcyBm
b3Igci1jcmFuLSogYWxzbyBiZSBpbiBCdWlsZC1EZXBlbmRzPwojICAgICAgLSBWUiBidW5k
bGUgcGFja2FnZXMgYXJlIG5vdCBtYXBwZWQgYmFjayBpbnRvIHItY3Jhbi12ciBbZG9uZV0K
IyAgICAgIC0gdGhlIG1haW4gTyhuXjIpIHNlYXJjaCBmb3IgY3Jvc3MtZGVwZW5kcyBpbiBp
bmFjY3VycmF0ZSwgcGFja2FnZSAnZHInCiMgICAgICAgIGdldCBtYXBwZWQgaW5zdGVhZCBv
ZiAnbW9kcmVnJyBmb3IgYSBsb3QgcGFja2FnZXMgLS0gcmV3cml0dGVuIGJ5CiMgICAgICAg
IHNwbGl0dGluZyBEZXBlbmRzIGFsb25nIHRoZSBzZXBhcmF0b3IKIyAgICAgICAgYnV0IGlu
IGVzc2VuY2Ugc2ltaWxhciBpc3N1ZSB3aXRoIG1hcHBpbmcgYmFzZWxpYnMgLyByZWNsaWJz
CiMgICAgICAgIHRob3VnaCB0aGF0IGJlIGltcHJvdmVkIChmaXhlZD8pIHdpdGggXGIgZGVs
aW1zIG9uIHJlZ2V4cAojICAgICAgLSBhZGRlZCAndXNlIHdhcm5pbmdzOyB1c2Ugc3RyaWN0
JwojICAgICAgLSBkZWJpYW4vY29udHJvbCBEZXNjcmlwdGlvbiBuZWVkZWQgZm9ybWF0LCBl
bHNlIGxpbnRpYW4gY29tcGxhaW5zCiMgICAgICAtIGxvd2VyY2FzaW5nIHJvdXRpbmUgYWxz
byBzZWVtcyB0byBjcmVhdGUgdHJvdWJsZSwgZy5kYXRhIAojICAgICAgICAgICBiZWNhbWUg
Zy1kYXRhICB3aXRoIHdyb25nIGxvd2VyY2FzZXMgLSBiZXR3ZWVuIGxldHRlcnM6CiMgICAg
ICAtIEltcG9ydGFudDogTmVlZCB0byBtYWtlIHN1cmUgd2UncmUgbm90IHBhY2thZ2luZyBu
b24tZnJlZSBwYWNrYWdlcwojICAgICAgLSBUbyByZXNvbHZlIERlcGVuZHMgZnJvbSBERVND
UklQVElPTiwgd2UgbmVlZCB0byBrbm93IGlmICdmb28nIGlzIAojICAgICAgICByLWNyYW4t
Zm9vIG9yIHItYmlvYy1mb28gLS0tIGEgcGFpbiwgcmVhbGx5IFtEb25lIHZpYSByZXBvc1Rv
b2xzXQoKCiMgJElkOiBjcmFuMmRlYi5wbCx2IDEuMSAyMDA0LzA3LzI4IDAzOjQ4OjEzIGVk
ZCBFeHAgZWRkICQKCkJFR0lOewkJCQkJIyBpbml0aWFsaXphdGlvbjoKICBwdXNoKEBJTkMs
ICIvdXNyL2xpYi9SL3NoYXJlL3BlcmwiKTsgICMgRGViaWFuJ3MgUiBsb2NhdGlvbgogIHB1
c2goQElOQywgIi4iKTsJCQkjIGN1cnJlbnQgZGlyIGZvciBjcmFuMmRlYiBwYWNrYWdlCn0K
CnVzZSBzdHJpY3Q7CnVzZSB2YXJzIHF3KCRoZWxwICRkZWJ1ZyAkdmVyYm9zZSAkZHJ5cnVu
KTsKdXNlIHdhcm5pbmdzOwp1c2UgRGF0YTo6RHVtcGVyOwp1c2UgRW5nbGlzaDsKdXNlIEZj
bnRsOwp1c2UgRmlsZTo6c3RhdDsKdXNlIEdldG9wdDo6TG9uZzsgICAgICAgICAgICAgICAj
IGxvbmcgb3B0aW9ucwp1c2UgSVBDOjpPcGVuMjsKdXNlIElPOjpIYW5kbGU7CnVzZSBQT1NJ
WDsKdXNlIFRleHQ6OlBhcnNlV29yZHM7Cgp1c2UgUjo6RGNmOwp1c2UgQ1JBTjJERUI7Cgpt
eSAlb3B0aW9ucyA9ICgiaGVscCIgICAgICAgICAgID0+IFwkaGVscCwKICAgICAgICAgICAg
ICAgImRlYnVnIiAgCT0+IFwkZGVidWcsCiAgICAgICAgICAgICAgICJ2ZXJib3NlIiAgICAg
ICAgPT4gXCR2ZXJib3NlLAoJICAgICAgICJkcnlydW4iCQk9PiBcJGRyeXJ1bik7CgpzaG93
SGVscEFuZEV4aXQoKSBpZiAoIUdldE9wdGlvbnMoJW9wdGlvbnMpIG9yICRoZWxwKTsKJHZl
cmJvc2U9MSBpZiAkZGVidWc7CgokfD0xOwkJCQkjIHVuYnVmZmVyZWQgb3V0cHV0OgoKbXkg
JGJpbmFyY2g9ImkzODYiOwkJIyBjb25maWd1cmFibGUgc3R1ZmYgYmVsb3cKbXkgJG1haW50
YWluZXJtYWlsID0gIkRpcmsgRWRkZWxidWV0dGVsIDxlZGRcQGRlYmlhbi5vcmc+IjsKIyBm
dHAgYXJjaGl2ZSBzZXR0aW5ncyAtLSBhc3N1bWVkIHRvIGJlIGluIGxvY2FsIG1pcnJvciBp
biAkY3Jhbi8kY29udHJpYnBhdGgKI215ICRjcmFuICAgICAgICAgPSAiY3Jhbi51cy5yLXBy
b2plY3Qub3JnIjsKI215ICRjb250cmlicGF0aCAgPSAiY29udHJpYi9tYWluIjsKbXkgJG1p
cnJvciA9ICJjb250cmliL21haW4iOwpteSAkb3V0cHV0ID0gImJ1aWxkcyI7CgojIyBjdXJy
ZW50bHkgaGFuZC1lZGl0ZWQgZnJvbSBsb29raW5nIGF0IHRoZSBSIHNyYy9saWJyYXJ5IGRp
cmVjdG9yeQpteSBAYmFzZWxpYnM9KCJiYXNlIiwgImN0ZXN0IiwgImVkYSIsICJncmFwaGlj
cyIsICJncmlkIiwgImxxcyIsCgkgICAgICAibWV0aG9kcyIsICJtbGUiLCAibW9kcmVnIiwg
Im12YSIsICJubHMiLCAicHJvZmlsZSIsICJzcGxpbmVzIiwKCSAgICAgICJzdGF0cyIsICJz
dGF0czQiLCAic3RlcGZ1biIsICJ0Y2x0ayIsICJ0b29scyIsICJ0cyIsICJ1dGlscyIpOwoK
IyMgaGFuZC1lZGl0ZWQgZnJvbSBsb29raW5nIGF0IHRoZSBSIHNyYy9saWJyYXJ5L1JlY29t
bWVuZCBkaXJlY3RvcnkKbXkgQHJlY2xpYnM9KCJLZXJuU21vb3RoIiwgIlZSIiwgImJvb3Qi
LCAiY2x1c3RlciIsICJmb3JlaWduIiwgImxhdHRpY2UiLAoJICAgICAibWdjdiIsICJubG1l
IiwgInJwYXJ0IiwgInN1cnZpdmFsIik7CgojIyBjb21wb25lbnRzIG9mIHRoZSBWUiBidW5k
bGUKbXkgQHZybGlicyA9ICgiTUFTUyIsICJjbGFzcyIsICJubmV0IiwgInNwYXRpYWwiKTsK
CiMjIHBhY2thZ2VzIGZvciB3aGljaCB3ZSBsYWNrIGJ1aWxkIGRlcGVuZGVuY2llcwojIyBO
QiBjYXNlIG1hdHRlcnMgaGVyZSwgbmVlZCB0byBsb3dlcmNhc2UgYmVmb3JlIGNvbXBhcmlz
b24KbXkgQGNhbm5vdGJ1aWxkID0gKCJSbVNRTCIsICJtaW1SIiwgIlJPcmFjbGUiLAoJCSAg
ICJSU1FMaXRlIiwgICAgIyMgaGFzIHNvbWUgV2luZG93cyBsaWJzIHRoYXQgdHJpcCBsaW50
aWFuIHVwCgkJICAgIlJTY2FMQVBBQ0siLCAjIyBuZWVkIHRvIHNvcnQgLWRldiBwYWNrYWdl
cyBvdXQKCQkgICAicnNwcm5nIiwgICAgICMjIG5lZWQgdG8gZmlndXJlIG91dCB3aHkgdGhp
cyBmYWlscwojCQkgICAiUk5ldENERiIsICAgICMjIGRvZXNuJ3QgZmluZCBuZXRjZGYgaW4g
L3VzcgoJCSAgICMjIEJpb0M6IGNhbid0IGRvIGFubmFmZnkgYXMgd2UgbGFjayBHTyBhbmQg
S0VHRyBkYXRhIHBrZ3MKCQkgICAiYW5uYWZmeSIpOwoKIyMgZ2V0IGxpc3Qgb2Ygci1jcmFu
LSogcGFja2FnZXMgYWxyZWFkeSBrbm93biB0byBhcHQgCiMjIFsgc28gYXB0IHNob3VsZCBu
b3QgcG9pbnQgdG8gYW4gYXJjaGl2ZSBvZiBsb2NhbCBDUkFOIERlYmlhbiBwYWNrYWdlcyBd
IApteSBAZGViaWFucGtnczsKb3BlbihQSVBFLCAiYXB0LWNhY2hlIHNlYXJjaCBcIl5yLWNy
YW4tXHxeci1iaW9jLVwiIHwgY3V0IC1mMSAtZFwiIFwiIHwiKSBvcgogIGRpZSAiQ2Fubm90
IHF1ZXJ5IGFwdC1jYWNoZVxuIjsKd2hpbGUgKDxQSVBFPikgewogIGNob21wOwogIHB1c2gg
QGRlYmlhbnBrZ3MsICRBUkc7Cn0KCm15ICVidWlsZERlcHM9KAoJICAgICAgIFJtcGkgPT4g
WyJsYW0tcnVudGltZSIsICJsYW00LWRldiJdLAoJICAgICAgIFJNeVNRTCA9PiBbImxpYm15
c3FsY2xpZW50LWRldiJdLAoJICAgICAgIFJQZ1NRTCA9PiBbInBvc3RncmVzcWwtZGV2Il0s
CgkgICAgICAgUlNRTGl0ZSA9PiBbImxpYnNxbGl0ZS1kZXYiLCAici1jcmFuLWRiaSJdLAoJ
ICAgICAgIGd0a0RldmljZSA9PiBbImxpYmd0azEuMi1kZXYiLCAibGliZ2xpYjEuMi1kZXYi
LCAieGxpYnMtZGV2IiBdLAoJICAgICAgIGhkZjUgPT4gWyJsaWJoZGY1LXNlcmlhbC1kZXYi
LCAiemxpYjFnLWRldiJdLAoJICAgICAgIHVkdW5pdHMgPT4gWyJ1ZHVuaXRzIl0sCgkgICAg
ICAgUk5ldENERiA9PiBbInItY3Jhbi11ZHVuaXRzIiwgIm5ldGNkZmctZGV2IiwgInVkdW5p
dHMiXSwKCSAgICAgICBsbWU0ID0+IFsici1jcmFuLW1hdHJpeCJdLAoJICAgICAgIG5jZGYg
PT4gWyJuZXRjZGZnLWRldiJdLAoJICAgICAgIG5ldENERiA9PiBbIm5ldGNkZmctZGV2Il0s
CgkgICAgICAgcmdkYWwgPT4gWyJsaWJnZGFsMS1kZXYiXSwKCSAgICAgICByaW1hZ2UgPT4g
WyJmZnR3LWRldiIsICJsaWJqcGVnNjItZGV2Il0sCgkgICAgICAgcnF1YW50bGliID0+IFsi
bGlicXVhbnRsaWIwLWRldiIsICJsaWJib29zdC1kZXYiLCAKCQkJICAgICAibGliYm9vc3Qt
dGVzdC1kZXYiXSwKCSAgICAgICBycHZtID0+IFsicHZtLWRldiJdLAoJICAgICAgIHJzY2Fs
YXBhY2sgPT4gWyJsYW0tcnVudGltZSIsICJsYW00LWRldiIsICJyZWZibGFzMy1kZXYiLAoJ
CQkgICAgICAiYmxhY3MtbGFtLWRldiAiLCAic2NhbGFwYWNrLW1waWNoLWRldiIgXSwKCSAg
ICAgICByc3BybmcgPT4gWyJsaWJzcHJuZzItZGV2IiwgImxpYmdtcDMtZGV2Il0sCgkgICAg
ICAgcnB2bSA9PiBbInB2bS1kZXYiXSwKCSAgICAgICByY3VybCA9PiBbImxpYmN1cmwzLWRl
diJdLAoJICAgICAgIHRrcnBsb3QgPT4gWyJ0Y2w4LjQtZGV2IiwgInRrOC40LWRldiIsICJ4
bGlicy1kZXYiXSwKIwkgICAgICAgc25vdyA9PiBbInB2bS1kZXYiXSwKCSAgICAgICk7Cgpt
eSAlZXh0ZXJuYWxEZXBzPSh4Z29iaSA9PiBbJ3hnb2JpJ10sCgkJICBHUkFTUyA9PiBbJ2dy
YXNzJ10sCgkJICAjIyBCaW9Db25kdWN0b3IKCQkgIFJncmFwaHZpeiA9PiBbJ2dyYXBodml6
J10KCQkgKTsKbXkgJXBhY2thZ2VzOwpteSBAY3JhbnBhY2thZ2VzOwoKZGllICJUaGlzIG5l
ZWRzIHRvIHJ1biBvbiBhIERlYmlhbiBzeXN0ZW0uXG4iIAogIHVubGVzcyBzdGF0KCIvZXRj
L2RlYmlhbl92ZXJzaW9uIik7CgpteSAkcGFja2FnZXNmaWxlID0gIiRtaXJyb3IvUEFDS0FH
RVMiOwpvcGVuKEZJTEUsICRwYWNrYWdlc2ZpbGUpIG9yIGRpZSAiQ2Fubm90IG9wZW4gJHBh
Y2thZ2VzZmlsZVxuIjsKIyBzdGFydCBwYXJzaW5nIHRoZSBQQUNLQUdFUyBmaWxlOgp3aGls
ZSAobXkgJGxpbmUgPSA8RklMRT4pIHsKICBjaG9tcCAkbGluZTsKICAjIGZpbmQgYWxsIGxp
bmVzIHN0YXJ0aW5nIHdpdGggIlBhY2thZ2U6IgogIGlmICgkbGluZSA9fiAvXlBhY2thZ2U6
XHMqKFxTKylccyovKSB7CiAgICBteSAkcGFja2FnZSA9ICQxOwogICAgcHJpbnQgIkluc2Vy
dGluZyBwYWNrYWdlIGluZm8gZm9yICRwYWNrYWdlXG4iICBpZiAkdmVyYm9zZTsKICAgICRw
YWNrYWdlc3skcGFja2FnZX17UGFja2FnZX0gPSAkcGFja2FnZTsKICB9Cn0KY2xvc2UoRklM
RSk7CgpteSBAcGFja2FnZW5hbWVzID0ga2V5cyAlcGFja2FnZXM7CmZvcmVhY2ggbXkgJHBh
Y2thZ2UgKEBwYWNrYWdlbmFtZXMpIHsKICBwcmludCAiUHJvY2Vzc2luZyBERVNDUklQVElP
TiBmb3IgcGFja2FnZSAkcGFja2FnZVxuIiBpZiAkdmVyYm9zZTsKCiAgbXkgJGRlc2NyaXB0
aW9uZmlsZSA9ICIkbWlycm9yL0Rlc2NyaXB0aW9ucy8kcGFja2FnZS5ERVNDUklQVElPTiI7
CiAgbXkgJHJkY2YgPSBSOjpEY2YtPm5ldygkZGVzY3JpcHRpb25maWxlKTsKICBmb3JlYWNo
IG15ICRmaWVsZCAoJ1ZlcnNpb24nLCdEZXNjcmlwdGlvbicsJ0F1dGhvcicsJ0xpY2Vuc2Un
LAoJCSAgICAgJ0J1bmRsZURlc2NyaXB0aW9uJywgJ1RpdGxlJywnQ29udGFpbnMnLCdEZXBl
bmRzJywKCQkgICAgICdQYWNrYWdlJywnVVJMJywnRGF0ZScpIHsKICAgIGlmIChkZWZpbmVk
KCRyZGNmLT57JGZpZWxkfSkpIHsKICAgICAgJHBhY2thZ2VzeyRwYWNrYWdlfXskZmllbGR9
ID0gJHJkY2YtPnskZmllbGR9OwogICAgfQogIH0KICBpZiAoZGVmaW5lZCgkcGFja2FnZXN7
JHBhY2thZ2V9e1RpdGxlfSkpIHsKICAgICRwYWNrYWdlc3skcGFja2FnZX17VGl0bGV9ID1+
IHMvXG4vIC9nIDsKICB9CiAgaWYgKGRlZmluZWQoJHBhY2thZ2VzeyRwYWNrYWdlfXtEZXBl
bmRzfSkpIHsKICAgICNwcmludCAiICBkZXBlbmRzIG9uICRwYWNrYWdlc3skcGFja2FnZX17
RGVwZW5kc31cbiI7CiAgICAkcGFja2FnZXN7JHBhY2thZ2V9e09yaWdEZXBlbmRzfSA9ICRw
YWNrYWdlc3skcGFja2FnZX17RGVwZW5kc307CiAgICAkcGFja2FnZXN7JHBhY2thZ2V9e0Rl
cGVuZHN9ID1+IHMvXChbMC05XC5cLT49IF0qXCkvL2dvOyAjIG51a2UgKD49IDEuMi0zKQog
ICAgJHBhY2thZ2VzeyRwYWNrYWdlfXtEZXBlbmRzfSA9fiBzLyAvL2dvOyAgICAgICAgICAg
ICAgICAgIyBudWtlIHNwYWNlcwogICAgI3ByaW50ICIgIGRlcGVuZHMgb24gJHBhY2thZ2Vz
eyRwYWNrYWdlfXtEZXBlbmRzfVxuIjsKICB9CiAgIyB0dXJuIENSQU4ncyBwb3NzaWJsZSAx
LjIuMy00IGludG8gMS4yLjMuNAogICRwYWNrYWdlc3skcGFja2FnZX17RGViVmVyc2lvbn0g
PSAkcGFja2FnZXN7JHBhY2thZ2V9e1ZlcnNpb259OwogICRwYWNrYWdlc3skcGFja2FnZX17
RGViVmVyc2lvbn0gPX4gcy8tL1wuL207CiAgJHBhY2thZ2VzeyRwYWNrYWdlfXtEZWJSZWxl
YXNlfSA9IAogICAgJHBhY2thZ2VzeyRwYWNrYWdlfXtEZWJWZXJzaW9ufSAuICItMC5yMmQu
MSI7Cn0KCiMgaGFuZGxlIGludGVycGFja2FnZSBkZXBlbmRlbmNpZXM6CiMgKGFzc3VtaW5n
IHRoZXJlIGlzIG5vIGNpcmN1bGFyIGRlcGVuZGVuY3kpCmZvcmVhY2ggbXkgJHBhY2thZ2Ug
KEBwYWNrYWdlbmFtZXMpIHsKICAkcGFja2FnZXN7JHBhY2thZ2V9eydkZXBlbmRlbmNpZXMn
fT0oKTsKICAkcGFja2FnZXN7JHBhY2thZ2V9eydkZWJpYW5kZXBlbmRlbmNpZXMnfT0oKTsK
ICAkcGFja2FnZXN7JHBhY2thZ2V9eydkZWJpYW5idWlsZGRlcGVuZGVuY2llcyd9PSgpOwog
IGlmKGV4aXN0cyAkZXh0ZXJuYWxEZXBzeyRwYWNrYWdlfSkgewogICAgcHVzaCAoQHskcGFj
a2FnZXN7JHBhY2thZ2V9eydkZWJpYW5kZXBlbmRlbmNpZXMnfX0sCgkgIEB7JGV4dGVybmFs
RGVwc3skcGFja2FnZX19KTsKICB9CiAgaWYoZXhpc3RzICRidWlsZERlcHN7JHBhY2thZ2V9
KSB7CiAgICBwdXNoIChAeyRwYWNrYWdlc3skcGFja2FnZX17J2RlYmlhbmJ1aWxkZGVwZW5k
ZW5jaWVzJ319LAoJICBAeyRidWlsZERlcHN7JHBhY2thZ2V9fSk7CiAgfQogIGlmIChkZWZp
bmVkKCRwYWNrYWdlc3skcGFja2FnZX17RGVwZW5kc30pKSB7CiAgICBteSBAcGtncyA9IHNw
bGl0KC8sLywgJHBhY2thZ2VzeyRwYWNrYWdlfXtEZXBlbmRzfSk7CiAgICBmb3JlYWNoIG15
ICRwa2cgKEBwa2dzKSB7CiAgICAgIG5leHQgaWYgJHBrZyA9fiBtL15SKC4qXCg+PT8gXGQq
XCkpPy87CiAgICAgIG5leHQgaWYgZ3JlcCgvXGIkcGtnXGIvLCBAYmFzZWxpYnMpID4gMDsK
ICAgICAgJHBrZyA9fiBzL1xzKlwoLipcKS8vbzsJIyBudWtlIHZlcnNpb24gbnVtYmVycwog
ICAgICBwcmludCAiXHQkcGFja2FnZSBkZXBlbmRzIG9uIG5vbi1iYXNlIHBhY2thZ2UgJHBr
Z1xuIiBpZiAkdmVyYm9zZTsKICAgICAgcHVzaChAeyRwYWNrYWdlc3skcGFja2FnZX17ZGVw
ZW5kZW5jaWVzfX0sICRwa2cpOwogICAgICAjIHRyYW5zbGF0ZSBpbnRvIGRlYmlhbiBkZXBl
bmRlbmNpZXM7CiAgICAgIGlmIChncmVwKC9cYiRwa2dcYi8sIEB2cmxpYnMpID4gMCkgewoJ
cHVzaChAeyRwYWNrYWdlc3skcGFja2FnZX17ZGViaWFuZGVwZW5kZW5jaWVzfX0sICJyLWNy
YW4tdnIiKTsKIyAgICAgIH0gZWxzaWYgKGdyZXAoL1xiJHBrZ1xiLywgQGNyYW5wYWNrYWdl
cykgPiAwKSB7CiAgICAgIH0gZWxzZSB7CglwdXNoKEB7JHBhY2thZ2VzeyRwYWNrYWdlfXtk
ZWJpYW5kZXBlbmRlbmNpZXN9fSwKCSAgICAgInItY3Jhbi0iIC4gbG93ZXJDYXNlKCRwa2cp
KTsKICAgICAgfQogICAgfQogICAgaWYgKGRlZmluZWQoQHskcGFja2FnZXN7JHBhY2thZ2V9
e2RlcGVuZGVuY2llc319KSBhbmQgJHZlcmJvc2UpIHsKICAgICAgcHJpbnQgIiRwYWNrYWdl
IGRlcGVuZHMgb246ICIsCglqb2luKCIgIiwgQHskcGFja2FnZXN7JHBhY2thZ2V9e2RlcGVu
ZGVuY2llc319KSwgIlxuIjsKICAgIH0KICB9Cn0KCm15ICRtYXhkZXB0aD0wOwpmb3JlYWNo
IG15ICRwYWNrYWdlIChAcGFja2FnZW5hbWVzKSB7CiAgcHJpbnQgImdldCBkZXBlbmRlbmN5
IGRlcHRoIGZvciAkcGFja2FnZSAuLi4gIiBpZiAkdmVyYm9zZTsKICAkcGFja2FnZXN7JHBh
Y2thZ2V9e2RlcGRlcHRofSA9IGdldERlcHRoKFwlcGFja2FnZXMsICRwYWNrYWdlKTsKICBw
cmludCAiJHBhY2thZ2VzeyRwYWNrYWdlfXtkZXBkZXB0aH1cbiIgaWYgJHZlcmJvc2U7CiAg
JG1heGRlcHRoPSRwYWNrYWdlc3skcGFja2FnZX17ZGVwZGVwdGh9CiAgICBpZiAkcGFja2Fn
ZXN7JHBhY2thZ2V9e2RlcGRlcHRofT4kbWF4ZGVwdGg7Cn0KCm15ICRjb3VudGVyID0gMDsK
IyBub3cgZ2VuZXJhdGUgdGhlIGRlYmlhbiBidWlsZCBmaWxlczoKIyBkbyB0aGlzIGluICRt
YXhkZXB0aCBwYXNzZXMsIGhhbmRsZSBwYWNrYWdlcyB3aXRoIGxvd2VyIGRlcHRoIGZpcnN0
CmZvciAobXkgJHBhc3M9MDsgJHBhc3M8PSRtYXhkZXB0aDsgJHBhc3MrKykgewogIHByaW50
ICJwYXNzIGZvciBkZXBlbmRlbmN5IGRlcHRoICRwYXNzXG4iIGlmICR2ZXJib3NlOwogIGZv
cmVhY2ggbXkgJHBhY2thZ2UgKEBwYWNrYWdlbmFtZXMpIHsKICAgIG5leHQgdW5sZXNzICRw
YWNrYWdlc3skcGFja2FnZX17J2RlcGRlcHRoJ30gPT0gJHBhc3M7CiMgICAgbmV4dCBpZiAk
Y291bnRlcisrID4gMDsKICAgIHByaW50ICJcdGRlcHRoICRwYXNzIGFuZCBwYWNrYWdlIGlz
ICRwYWNrYWdlXG4iIGlmICR2ZXJib3NlOwoKICAgICMgd2UgY2FuIHNraXAgcmVjb21tZW5k
ZWQgcGFja2FnZXMKICAgIG5leHQgdW5sZXNzIGdyZXAoL14kcGFja2FnZSQvLCBAcmVjbGli
cyk9PTA7CgogICAgaWYgKGdyZXAoL1xiJHBhY2thZ2VcYi8sIEBjYW5ub3RidWlsZCkgPiAw
KSB7CiAgICAgIHByaW50ICJcdFx0JHBhY2thZ2UgY2Fubm90IGJlIGJ1aWx0IGZvciBsYWNr
IG9mIGNvbXBvbmVudHMsIHNraXBwaW5nXG4iOwogICAgICBuZXh0OwogICAgfQoKICAgICMg
Y2hlY2sgTGljZW5zZSBmb3Igc3VzcGljaW91cyB0ZXh0IChpLmUuIHNpZ2dlbmVzKQogICAg
bXkgJGxpY2Vuc2UgPSAkcGFja2FnZXN7JHBhY2thZ2V9e0xpY2Vuc2V9OwogICAgaWYgKCRs
aWNlbnNlID1+IG0vKG5vbi0/KGNvbW1lcmNpYWx8YWNhZGVtaWN8ZnJlZXxwcm9maXQpKS9p
KSB7CiAgICAgICRsaWNlbnNlID1+IHMvXG4vL21vOwkjIHJlbW92ZSBsaW5lIGJyZWFrcwog
ICAgICBwcmludCAic2tpcHBpbmcgJHBhY2thZ2Ugd2l0aCBzdXNwaWNpb3VzIGxpY2Vuc2U6
ICRsaWNlbnNlXG4iOwogICAgICBuZXh0OwogICAgfQoKICAgICMgcHJlcGFyZSBmaWxlbmFt
ZXM6CiAgICBteSAkc291cmNlZmlsZSA9ICIkbWlycm9yLyIgLiAkcGFja2FnZXN7JHBhY2th
Z2V9e1BhY2thZ2V9IC4gIl8iIC4KICAgICAgJHBhY2thZ2VzeyRwYWNrYWdlfXtWZXJzaW9u
fSAuICIudGFyLmd6IjsKICAgICMgbG93ZXJjYXNlIHBhY2thZ2UgbmFtZToKICAgIG15ICRs
Y3BhY2thZ2UgPSBsb3dlckNhc2UoJHBhY2thZ2VzeyRwYWNrYWdlfXtQYWNrYWdlfSk7CiAg
ICBteSAkcGFja2FnZXBhdGggPSAkbGNwYWNrYWdlIC4gIi0iIC4gJHBhY2thZ2VzeyRwYWNr
YWdlfXtEZWJWZXJzaW9ufTsKICAgICRwYWNrYWdlc3skcGFja2FnZX17RGViRGlyfSA9ICRw
YWNrYWdlcGF0aDsKICAgICRwYWNrYWdlc3skcGFja2FnZX17RGViTmFtZX0gPSAkbGNwYWNr
YWdlOwogICAgJHBhY2thZ2VzeyRwYWNrYWdlfXtEZWJBcmNofSA9IGdldEFyY2hpdGVjdHVy
ZSgkc291cmNlZmlsZSwgJGJpbmFyY2gpOwoKICAgIG15ICRkZWJuYW1lID0gInItY3Jhbi0i
IC4gJGxjcGFja2FnZTsKICAgIG15ICRkZWJmaWxlID0gJG91dHB1dCAuICIvIiAuICRkZWJu
YW1lIC4gIl8iIC4KICAgICAgJHBhY2thZ2VzeyRwYWNrYWdlfXtEZWJSZWxlYXNlfSAuICJf
IgoJLiAkcGFja2FnZXN7JHBhY2thZ2V9e0RlYkFyY2h9IC4gIi5kZWIiOyAKIyAgICBpZiAo
Z3JlcCgvXGIkZGVibmFtZVxiLywgQGRlYmlhbnBrZ3MpID4gMCkgewojICAgICAgcHJpbnQg
Ilx0XHQkZGVibmFtZSBhbHJlYWR5IGluIERlYmlhbiwgc2tpcHBpbmdcbiI7CiMgICAgICBu
ZXh0OwojICAgIH0KCiAgICBpZiAoc3RhdCgkZGViZmlsZSkpIHsKICAgICAgcHJpbnQgIlx0
XHQkZGViZmlsZSBhbHJlYWR5IGJ1aWx0LCBza2lwcGluZ1xuIiBpZiAkdmVyYm9zZTsKICAg
ICAgbmV4dDsKICAgIH0KCiAgICAjIyBlZGQ6IGNyZWF0ZSBhIGxpbmsgdG8gLm9yaWcudGFy
Lmd6LCBzaW1pbGFyIHRvIHItcmVjb21tZW5kcyBpbiBSIHNyY3MKICAgICMjICAgICAgYW5k
IGxpbmsgaXQgaW4gZGlyZWN0bHkgZnJvbSB0aGUgQ1JBTiBtaXJyb3IgaW4gc3ViZGlyCiAg
ICBteSAkb3JpZ3NvdXJjZWZpbGUgPSAkbGNwYWNrYWdlIC4gIl8iIC4gCiAgICAgICRwYWNr
YWdlc3skcGFja2FnZX17RGViVmVyc2lvbn0gIC4gIi5vcmlnLnRhci5neiI7CgogICAgbXkg
JGdlbmVyYXRlZmlsZXMgPSAxOwogICAgaWYgKHN0YXQoJGRlYmZpbGUpKSB7CiAgICAgICRn
ZW5lcmF0ZWZpbGVzID0gKHN0YXQoJGRlYmZpbGUpLT5tdGltZSA8IHN0YXQoJG9yaWdzb3Vy
Y2VmaWxlKS0+bXRpbWUpOwogICAgfQoKICAgICMgZXhwYW5kIGFyY2hpdmVzIGZvciBwYWNr
YWdlIGJ1aWxkaW5nCiAgICAjIGxpbmsoJHNvdXJjZWZpbGUsICRvcmlnc291cmNlZmlsZSkg
b3IgZGllICJDYW5ub3QgbGluayAkc291cmNlZmlsZSI7CiAgICBjaGRpciAiJG91dHB1dCIg
b3IgZGllICJDYW5ub3QgY2QgaW50byAkb3V0cHV0XG4iOwogICAgc3lzdGVtKCJsbiAtc2Yg
Li4vJHNvdXJjZWZpbGUgJG9yaWdzb3VyY2VmaWxlIik7IyBvciAKICAgICAgICAgICAgICAg
ICAjZGllICJDYW5ub3QgbGluayAuLi8kc291cmNlZmlsZSB0byAkb3JpZ3NvdXJjZWZpbGVc
biI7CiAgICBzeXN0ZW0oInJtIC1yZiAuLyRwYWNrYWdlcGF0aCIpOyAjIG9yIGRpZSAiQ2Fu
bm90IHJlbW92ZSAkcGFja2FnZXBhdGhcbiI7CiAgICBzeXN0ZW0oInRhciB4emYgJG9yaWdz
b3VyY2VmaWxlIik7ICMgb3IgZGllICJDYW5ub3QgdW5wYWNrICRzb3VyY2VmaWxlXG4iOwog
ICAgcmVuYW1lKCRwYWNrYWdlc3skcGFja2FnZX17UGFja2FnZX0sICRwYWNrYWdlcGF0aCkg
b3IgCiAgICAgIGRpZSAiQ2Fubm90IHJlbmFtZSAkcGFja2FnZXN7JHBhY2thZ2V9e1BhY2th
Z2V9IHRvICRwYWNrYWdlcGF0aFxuIjsKCiAgICAjIGlmIG5lZWRlZCwgcG9wdWxhdGUgdGhl
IGRlYmlhbiBzdWJkaXJlY3Rvcnk6CiAgICBpZiAoJGdlbmVyYXRlZmlsZXMgYW5kIHN0YXQo
JG9yaWdzb3VyY2VmaWxlKSkgewogICAgICBpZiAoLWQgIiRwYWNrYWdlcGF0aC9kZWJpYW4i
KSB7CglwcmludCAiXHRudWtpbmcgZGViaWFuIGRpcmVjdG9yeSBmb3IgJHBhY2thZ2VcbiI7
CglzeXN0ZW0oInJtIC1yZiAkcGFja2FnZXBhdGgvZGViaWFuIikgIyBUb255IFIuIGhhZCBj
cmVhdGVkIHNvbWUKICAgICAgfQogICAgICBta2RpciAiJHBhY2thZ2VwYXRoL2RlYmlhbiIg
b3IKIAlkaWUgIkNhbm5vdCBjcmVhdGUgZGViaWFuLyBpbiAkcGFja2FnZXBhdGgiOwoKICAg
ICAgd3JpdGVSdWxlcyhcJXskcGFja2FnZXN7JHBhY2thZ2V9fSwgJG1haW50YWluZXJtYWls
KTsKICAgICAgd3JpdGVDb25maWcoXCV7JHBhY2thZ2VzeyRwYWNrYWdlfX0sICRtYWludGFp
bmVybWFpbCwgJGJpbmFyY2gpOwogICAgICB3cml0ZUNvcHlyaWdodChcJXskcGFja2FnZXN7
JHBhY2thZ2V9fSwgJG1haW50YWluZXJtYWlsKTsKICAgICAgI3dyaXRlUmVhZG1lKFwleyRw
YWNrYWdlc3skcGFja2FnZX19LCAkbWFpbnRhaW5lcm1haWwpOwogICAgICB3cml0ZUNoYW5n
ZWxvZyhcJXskcGFja2FnZXN7JHBhY2thZ2V9fSwgJG1haW50YWluZXJtYWlsKTsKICAgICAg
d3JpdGVQb3N0aW5zdChcJXskcGFja2FnZXN7JHBhY2thZ2V9fSwgJG1haW50YWluZXJtYWls
KTsKICAgICAgd3JpdGVQb3N0cm0oXCV7JHBhY2thZ2VzeyRwYWNrYWdlfX0sICRtYWludGFp
bmVybWFpbCk7CiAgICAgICN3cml0ZUZpbGVzKFwleyRwYWNrYWdlc3skcGFja2FnZX19LCAk
bWFpbnRhaW5lcm1haWwpOwoKICAgICAgcHJpbnQgImJ1aWxkaW5nIHBhY2thZ2UgJGRlYmZp
bGUgLi4uXG4iOwogICAgICBteSAkbG9nZmlsZSA9ICRsY3BhY2thZ2UgLiAiXyIgLiAKIAkk
cGFja2FnZXN7JHBhY2thZ2V9e0RlYlZlcnNpb259ICAuICIubG9nIjsKICAgICAgdW5sZXNz
ICgkZHJ5cnVuKSB7CglzeXN0ZW0oImNkICRwYWNrYWdlcGF0aDsgZGVidWlsZCAtdWMgLXVz
IDI+JjEgPiAuLi8kbG9nZmlsZSIpOwoJaWYgKCFzdGF0KCIuLi8kZGViZmlsZSIpKSB7Cgkg
IGRpZSAiYnVpbGQgZmFpbGVkIGZvciAkZGViZmlsZVxuIjsKCX0KICAgICAgfQogICAgfQog
ICAgY2hkaXIgIi4uIiBvciBkaWUgIkNhbm5vdCBjaGFuZ2UgYmFja1xuIjsKICAgICNkaWUg
IlN0b3AgaGVyZSBmb3Igbm93XG4iOwogIH0KfQpwcmludCAiRE9ORVxuIjsKCg==
--kQxz4VSsz/
Content-Type: text/plain; charset=us-ascii
Content-Description: .signature
Content-Transfer-Encoding: 7bit





-- 
Better to have an approximate answer to the right question than a precise 
answer to the wrong question.  --  John Tukey as quoted by John Chambers

--kQxz4VSsz/--