[Distutils] bdist_sdux.py version 0.0000001

Mark W. Alexander mwa@gate.net
Fri, 25 Aug 2000 17:56:08 -0400 (EDT)


  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.

---656673009-1108563448-967240568=:31668
Content-Type: TEXT/PLAIN; charset=US-ASCII

Attached is the first pass of bdist_sdux.py for making binary
packages for HP-UX Software distributor (SD-UX). I took a little more
time on this than on bdist_pkgtool, but not much, and I still
claim very little knowledge about how I'm "supposed" to be doing
this, so anyone who has time to take a look and advise me on
better ways please (PLEASE!) do so. 

Anyway, this creates relocatable packages for HP, although they
install by default into the site-packages path as discovered on
the BUILD machine. The quick way to get proper re-location on 
the install machine would be to provide a shell wrapper with
the package that would find the proper install directory and
relocate the package appropriately. Or, just make the admin
tell it to go elsewhere manually.

The problem with this is HP's concept of a "depot" allows for
the creation of a repository somewhere on the network where
packages can be installed from. To use this effectively, packages
should just do the right thing whenever they can. So...
bdist_sdux created packages can't be put in a depot unless
all machines installed python in the same place. I'm still
trying to figure out a gracefull way to trick SD-UX into putting
them in the right place, maybe making a pseudo-package that
installs the python package and then uninstalls itself. Any
HP users out there with ideas, please email me. For now, my
choice is to just cope ;|

Although I'm not totally satisfied with the state of either
bdist-pkgtool or bdist_sdux, they sufficiently "scratch my
itch" for now, so I'm not likely to make any changes of my
own accord for some time. If anyone else start's using them,
(or even reading them) however, I'll work any bugs or 
suggestions for improvement.

Mark
mwa@gate.net

---656673009-1108563448-967240568=:31668
Content-Type: TEXT/PLAIN; charset=US-ASCII; name="bdist_sdux.py"
Content-Transfer-Encoding: BASE64
Content-ID: <Pine.A41.4.21.0008251756080.31668@navajo.gate.net>
Content-Description: 
Content-Disposition: attachment; filename="bdist_sdux.py"

IiIiZGlzdHV0aWxzLmNvbW1hbmQuYmRpc3RfcGtndG9vbA0KDQpJbXBsZW1l
bnRzIHRoZSBEaXN0dXRpbHMgJ2JkaXN0X3NkdXgnIGNvbW1hbmQgdG8gY3Jl
YXRlIEhQLVVYIA0Kc3dpbnN0YWxsIGRlcG90IiIiDQoNCiMgTWFyayBBbGV4
YW5kZXIgPG13YUBnYXRlLm5ldD4NCg0KX19yZXZpc2lvbl9fID0gIiRJZDog
YmRpc3Rfc2R1eC5weSx2IDAuMSAiDQojaW1wb3J0IHBkYg0KaW1wb3J0IG9z
LCBzdHJpbmcNCmltcG9ydCBnbG9iDQpmcm9tIHR5cGVzIGltcG9ydCAqDQpm
cm9tIGRpc3R1dGlscy5jb3JlIGltcG9ydCBDb21tYW5kLCBERUJVRw0KZnJv
bSBkaXN0dXRpbHMudXRpbCBpbXBvcnQgZ2V0X3BsYXRmb3JtDQpmcm9tIGRp
c3R1dGlscy5maWxlX3V0aWwgaW1wb3J0IHdyaXRlX2ZpbGUNCmZyb20gZGlz
dHV0aWxzLmVycm9ycyBpbXBvcnQgKg0KaW1wb3J0IHN5cw0KZnJvbSBjb21t
YW5kcyBpbXBvcnQgZ2V0b3V0cHV0DQoNCmNsYXNzIGJkaXN0X3NkdXgoQ29t
bWFuZCk6DQogICAgIiIiIERvZXMgbm90IHN1cHBvcnQgc3ViLXBhY2thZ2Vz
LCBtdWx0aXBsZSBmaWxlc2V0cyBvciBpbmRpdmlkdWFsIGZpbGVzDQogICAg
ICAgIGluIGEgZmlsZXNldC4gSW4gb3RoZXIgd29yZHMsIHRoZSBweXRob24g
cGFja2FnZSBoYXMgdG8gYmUgc2VsZi0NCiAgICAgICAgY29udGFpbmVkIGlu
IGl0J3Mgb3duIGRpcmVjdG9yeS4gU2luY2UgdGhpcyBpcyB0aGUgcHl0aG9u
IHBhY2thZ2UNCiAgICAgICAgc3RhbmRhcmQsIGl0IHNob3VsZCBub3QgYmUg
dG9vIG11Y2ggb2YgYSBwcm9ibGVtLiIiIg0KDQogICAgZGVzY3JpcHRpb24g
PSAiY3JlYXRlIGFuIEhQIHN3aW5zdGFsbCBkZXBvdCINCg0KICAgIHVzZXJf
b3B0aW9ucyA9IFsNCiAgICAgICAgKCdiZGlzdC1iYXNlJywgTm9uZSwNCiAg
ICAgICAgICJCdWlsZCBkaXJlY3RvcnkiKSwNCiAgICAgICAgKCduYW1lJywg
Tm9uZSwNCiAgICAgICAgICJNb2R1bGUgbmFtZSIpLA0KICAgICAgICAoJ2Nv
cHlyaWdodCcsIE5vbmUsDQogICAgICAgICAiQ29weXJpZ2h0IiksDQogICAg
ICAgICgnb3MtbmFtZScsIE5vbmUsDQogICAgICAgICAiT1MgTmFtZSIpLA0K
ICAgICAgICAoJ3JlYWRtZScsIE5vbmUsDQogICAgICAgICAiUkVBRE1FIGZp
bGUiKSwNCiAgICAgICAgKCd2ZW5kb3ItdGFnPScsIE5vbmUsDQogICAgICAg
ICAiVmVuZG9yIGlkZW50aWZpY2F0aW9uIHRhZyIpLA0KICAgICAgICAoJ3Zl
bmRlci10aXRsZScsIE5vbmUsDQogICAgICAgICAiTmFtZSBvZiB2ZW5kb3Ig
IiksDQogICAgICAgICgndmVuZG9yLWRlc2NyaXB0aW9uJywgTm9uZSwNCiAg
ICAgICAgICJEZXNjcmlwdGlvbiBvZiB2ZW5kb3IiKSwNCiAgICAgICAgKCdw
c2Ytb25seScsIE5vbmUsDQogICAgICAgICAiUHJvZHVjZSBqdXN0IHRoZSBw
c2YgZmlsZSIpLA0KICAgICAgICAoJ3Byb2R1Y3QtdGFnJywgTm9uZSwNCiAg
ICAgICAgICJOYW1lIG9mIHByb2R1Y3QiKSwNCiAgICAgICAgKCdwcm9kdWN0
LXRpdGxlJywgTm9uZSwNCiAgICAgICAgICJUaXRsZSBvZiBwcm9kdWN0Iiks
DQogICAgICAgICgndmVyc2lvbicsIE5vbmUsDQogICAgICAgICAiUGFja2Fn
ZSB2ZXJzaW9uIiksDQogICAgICAgICgncHJvZHVjdC1kZXNjcmlwdGlvbics
IE5vbmUsDQogICAgICAgICAiRGVzY3JpcHRpb24gb2YgcHJvZHVjdCIpLA0K
ICAgICAgICAoJ3Byb2R1Y3QtYXJjaGl0ZWN0dXJlJywgTm9uZSwNCiAgICAg
ICAgICJNYWNoaW5lIGFyY2hpdGVjdHVyZSIpLA0KICAgICAgICAoJ3Byb2R1
Y3QtbWFjaGluZS10eXBlJywgTm9uZSwNCiAgICAgICAgICJUeXBlIG9mIGhh
cmR3YXJlIiksDQogICAgICAgICgncHJvZHVjdC1vcy1yZWxlYXNlJywgTm9u
ZSwNCiAgICAgICAgICJPcGVyYXRpbmcgc3lzdGVtIGxldmVsIiksDQogICAg
ICAgICgncHJvZHV0LW9zLXZlcnNpb24nLCBOb25lLA0KICAgICAgICAgIk9w
ZXJhdGluZyBzeXN0ZW0gdmVyc2lvbiIpLA0KICAgICAgICAoJ2ZpbGVzZXQt
dGFnJywgTm9uZSwNCiAgICAgICAgICJOYW1lIG9mIGZpbGVzZXQiKSwNCiAg
ICAgICAgKCdmaWxlc2V0LXJldmlzaW9uJywgTm9uZSwNCiAgICAgICAgICJS
ZXYgbGV2ZWwgb2YgZmlsZXNldCIpLA0KICAgICAgICAoJ2ZpbGVzZXQtdGl0
bGUnLCBOb25lLA0KICAgICAgICAgIk5hbWUgb2YgZmlsZXNldCIpLA0KICAg
ICAgICAoJ2ZpbGVzZXQtZGlyZWN0b3J5JywgTm9uZSwNCiAgICAgICAgICJE
aXJlY3RvcnkgZm9yIG1vZHVsZSBmaWxlcyIpDQogICAgICAgXQ0KDQogICAg
ZGVmIGluaXRpYWxpemVfb3B0aW9ucyAoc2VsZik6DQogICAgICAgIHNlbGYu
bmFtZSA9IE5vbmUNCiAgICAgICAgc2VsZi52ZW5kb3JfdGFnID0gTm9uZQ0K
ICAgICAgICBzZWxmLmJkaXN0X2Jhc2UgPSBOb25lDQogICAgICAgIHNlbGYu
ZGlzdF9kaXIgPSBOb25lDQogICAgICAgIHNlbGYudmVuZG9yX3RpdGxlID0g
Tm9uZQ0KICAgICAgICBzZWxmLnZlbmRvcl9kZXNjcmlwdGlvbiA9IE5vbmUN
CiAgICAgICAgc2VsZi5wc2Zfb25seSA9IE5vbmUNCg0KICAgICAgICBzZWxm
LnByb2R1Y3RfdGFnID0gTm9uZQ0KICAgICAgICBzZWxmLnByb2R1Y3RfdGl0
bGUgPSBOb25lDQogICAgICAgIHNlbGYucHJvZHVjdF9kZXNjcmlwdGlvbiA9
IE5vbmUNCiAgICAgICAgc2VsZi5jb3B5cmlnaHQgPSBOb25lDQogICAgICAg
IHNlbGYucmVhZG1lID0gTm9uZQ0KICAgICAgICBzZWxmLm9zX25hbWUgPSBO
b25lDQogICAgICAgIHNlbGYudmVyc2lvbiA9IE5vbmUNCiAgICAgICAgc2Vs
Zi5wcm9kdWN0X2FyY2hpdGVjdHVyZSA9IE5vbmUNCiAgICAgICAgc2VsZi5w
cm9kdWN0X21hY2hpbmVfdHlwZSA9IE5vbmUNCiAgICAgICAgc2VsZi5wcm9k
dWN0X29zX3JlbGVhc2UgPSBOb25lDQogICAgICAgIHNlbGYucHJvZHVjdF9v
c192ZXJzaW9uID0gTm9uZQ0KICAgICAgICBzZWxmLmZpbGVzZXRfdGFnID0g
Tm9uZQ0KICAgICAgICBzZWxmLmZpbGVzZXRfcmV2aXNpb24gPSBOb25lDQog
ICAgICAgIHNlbGYuZmlsZXNldF90aXRsZSA9IE5vbmUNCiAgICAgICAgc2Vs
Zi5maWxlc2V0X2RpcmVjdG9yeSA9IE5vbmUNCg0KICAgICMgaW5pdGlhbGl6
ZV9vcHRpb25zKCkNCg0KDQogICAgZGVmIGZpbmFsaXplX29wdGlvbnMgKHNl
bGYpOg0KICAgICAgICBzZWxmLnNldF91bmRlZmluZWRfb3B0aW9ucygnYmRp
c3QnLCAoJ2JkaXN0X2Jhc2UnLCAnYmRpc3RfYmFzZScpKQ0KICAgICAgICBz
ZWxmLnNldF91bmRlZmluZWRfb3B0aW9ucygnYmRpc3QnLCAoJ2Rpc3RfZGly
JywgJ2Rpc3RfZGlyJykpDQogICAgICAgIHNlbGYuZmluYWxpemVfcGFja2Fn
ZV9kYXRhKCkNCg0KICAgICMgZmluYWxpemVfb3B0aW9ucygpDQoNCiAgICBk
ZWYgZmluYWxpemVfcGFja2FnZV9kYXRhIChzZWxmKToNCiAgICAgICAgc2Vs
Zi5lbnN1cmVfc3RyaW5nKCduYW1lJyxzZWxmLmRpc3RyaWJ1dGlvbi5nZXRf
bmFtZSgpKSwNCiAgICAgICAgc2VsZi5lbnN1cmVfc3RyaW5nKCd2ZW5kb3Jf
dGFnJyxzZWxmLmRpc3RyaWJ1dGlvbi5nZXRfYXV0aG9yKCkpDQogICAgICAg
IHNlbGYuZW5zdXJlX3N0cmluZygndmVuZG9yX3RpdGxlJyxzZWxmLmRpc3Ry
aWJ1dGlvbi5nZXRfYXV0aG9yX2VtYWlsKCkpDQogICAgICAgIHNlbGYuZW5z
dXJlX3N0cmluZygndmVuZG9yX2Rlc2NyaXB0aW9uJyxzZWxmLmRpc3RyaWJ1
dGlvbi5nZXRfYXV0aG9yKCkpDQogICAgICAgIHNlbGYuZW5zdXJlX3N0cmlu
ZygncHJvZHVjdF90YWcnLHNlbGYubmFtZSkNCiAgICAgICAgc2VsZi5lbnN1
cmVfc3RyaW5nKCdwcm9kdWN0X3RpdGxlJyxzZWxmLmRpc3RyaWJ1dGlvbi5n
ZXRfZGVzY3JpcHRpb24oKSkNCiAgICAgICAgc2VsZi5lbnN1cmVfc3RyaW5n
KCdvc19uYW1lJywnSFAtVVgnKQ0KICAgICAgICBzZWxmLmVuc3VyZV9zdHJp
bmcoJ3ZlcnNpb24nLHNlbGYuZGlzdHJpYnV0aW9uLmdldF92ZXJzaW9uKCkp
DQogICAgICAgIHNlbGYuZW5zdXJlX3N0cmluZygncHJvZHVjdF9hcmNoaXRl
Y3R1cmUnLCIqIikNCiAgICAgICAgc2VsZi5lbnN1cmVfc3RyaW5nKCdwcm9k
dWN0X21hY2hpbmVfdHlwZScsIioiKQ0KICAgICAgICBzZWxmLmVuc3VyZV9z
dHJpbmcoJ3Byb2R1Y3Rfb3NfcmVsZWFzZScsIioiKQ0KICAgICAgICBzZWxm
LmVuc3VyZV9zdHJpbmcoJ3Byb2R1Y3Rfb3NfdmVyc2lvbicsIioiKQ0KICAg
ICAgICBzZWxmLmVuc3VyZV9zdHJpbmcoJ2ZpbGVzZXRfdGFnJywiRklMRVMi
KQ0KICAgICAgICBzZWxmLmVuc3VyZV9zdHJpbmcoJ2ZpbGVzZXRfcmV2aXNp
b24nLHNlbGYudmVyc2lvbikNCiAgICAgICAgc2VsZi5lbnN1cmVfc3RyaW5n
KCdmaWxlc2V0X3RpdGxlJyxzZWxmLm5hbWUpDQogICAgICAgIHNpdGU9Tm9u
ZQ0KICAgICAgICBmb3IgaSBpbiAgc3lzLnBhdGg6DQogICAgICAgICAgICBp
ZiBpWy0xMzpdPT0ic2l0ZS1wYWNrYWdlcyI6DQogICAgICAgICAgICAgICAg
c2l0ZT1pDQogICAgICAgICAgICAgICAgYnJlYWsNCiAgICAgICAgaWYgbm90
IHNpdGU6DQogICAgICAgICAgICByYWlzZSBBdHRyaWJ1dGVFcnJvciwgIkNh
bm5vdCBmaWxlIHNpdGUtcGFja2FnZXMiDQogICAgICAgIHNlbGYuc2l0ZT1z
aXRlDQogICAgICAgIHNlbGYuZW5zdXJlX3N0cmluZygnZmlsZXNldF9kaXJl
Y3RvcnknLHNlbGYubmFtZSkNCiAgICAgICAgI2lmIHNpdGU6DQogICAgICAg
ICAgICAjc2VsZi5lbnN1cmVfc3RyaW5nKCdmaWxlc2V0X2RpcmVjdG9yeScs
c2l0ZSkNCiAgICAgICAgI2Vsc2U6DQogICAgICAgICAgICAjcmFpc2UgQXR0
cmlidXRlRXJyb3IsICJmaWxlc2V0X2RpcmVjdG9yeSBpcyBub3Qgc3BlY2lm
aWVkIg0KICAgICAgICBzZWxmLnBrZ19kaXIgPSBvcy5wYXRoLmpvaW4oc2Vs
Zi5iZGlzdF9iYXNlLCAiZGVwb3QiKQ0KDQogICAgIyBmaW5hbGl6ZV9wYWNr
YWdlX2RhdGEgKCkNCg0KDQogICAgZGVmIHJ1biAoc2VsZik6DQoNCiAgICAg
ICAgaWYgREVCVUc6DQogICAgICAgICAgICBwcmludCAiYmVmb3JlIF9nZXRf
cGFja2FnZV9kYXRhKCk6Ig0KICAgICAgICAgICAgcHJpbnQgInZlbmRvciA9
Iiwgc2VsZi52ZW5kb3INCiAgICAgICAgICAgIHByaW50ICJwYWNrYWdlciA9
Iiwgc2VsZi5wYWNrYWdlcg0KDQogICAgICAgICMgbWFrZSBkaXJlY3Rvcmll
cw0KICAgICAgICBzZWxmLm1rcGF0aChzZWxmLnBrZ19kaXIpDQoNCiAgICAg
ICAgIyBTcGVjIGZpbGUgZ29lcyBpbnRvICdkaXN0X2RpcicgaWYgJy0tcHNm
LW9ubHkgc3BlY2lmaWVkJywNCiAgICAgICAgIyBidWlsZC9iZGlzdC48cGxh
dD4vcGtndG9vbCBvdGhlcndpc2UuDQogICAgICAgIHBzZl9wYXRoID0gb3Mu
cGF0aC5qb2luKHNlbGYucGtnX2RpciwgDQogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAiJXMucHNmIiAlIHNlbGYuZGlzdHJpYnV0aW9uLmdl
dF9uYW1lKCkpDQogICAgICAgICMgYnVpbGQgcGFja2FnZQ0KICAgICAgICBz
ZWxmLmFubm91bmNlKCdCdWlsZGluZyBwYWNrYWdlJykNCiAgICAgICAgc2Vs
Zi5zcGF3bihzdHJpbmcuc3BsaXQoIiVzL2Jpbi9weXRob24gc2V0dXAucHkg
YnVpbGQiICUgc3lzLmV4ZWNfcHJlZml4KSkNCiAgICAgICAgc2VsZi5hbm5v
dW5jZSgnQ3JlYXRpbmcgcHNmIGZpbGUnKQ0KICAgICAgICBzZWxmLmV4ZWN1
dGUod3JpdGVfZmlsZSwNCiAgICAgICAgICAgICAgICAgICAgIChwc2ZfcGF0
aCwNCiAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9tYWtlX2luZm9fZmls
ZSgpKSwNCiAgICAgICAgICAgICAgICAgICAgICJ3cml0aW5nICclcyciICUg
cHNmX3BhdGgpDQogICAgICAgIGlmIHNlbGYucHNmX29ubHk6ICMgc3RvcCBp
ZiByZXF1ZXN0ZWQNCiAgICAgICAgICAgIHJldHVybg0KICAgICAgICAjc2Vs
Zi5hbm5vdW5jZSgnQ3JlYXRpbmcgcHJvdG90eXBlIGZpbGUnKQ0KICAgICAg
ICAjcHNmX3BhdGggPSBvcy5wYXRoLmpvaW4oc2VsZi5wa2dfZGlyLCAicHJv
dG90eXBlIikNCiAgICAgICAgI3NlbGYuZXhlY3V0ZSh3cml0ZV9maWxlLA0K
ICAgICAgICAgICAgICAgICAgICAgIyhwc2ZfcGF0aCwNCiAgICAgICAgICAg
ICAgICAgICAgICAjc2VsZi5fbWFrZV9wcm90b3R5cGUoKSksDQogICAgICAg
ICAgICAgICAgICAgICAjIndyaXRpbmcgJyVzJyIgJSBwc2ZfcGF0aCkNCg0K
ICAgICAgICAjc2VsZi5hbm5vdW5jZSgnQ3JlYXRpbmcgcmVsb2NhdGlvbiBy
ZXF1ZXN0IHNjcmlwdCcpDQogICAgICAgICNyZXFfcGF0aCA9IG9zLnBhdGgu
am9pbihzZWxmLnBrZ19kaXIsICJyZXF1ZXN0IikNCiAgICAgICAgI3NlbGYu
ZXhlY3V0ZSh3cml0ZV9maWxlLChyZXFfcGF0aCxzdHJpbmcuc3BsaXQoUkVR
LCJcMDEyIikpLA0KICAgICAgICAgICAgIyJ3cml0aW5nICclcyciICUgcmVx
X3BhdGgpDQoNCiAgICAgICAgI2lmIHNlbGYucHNmX29ubHk6ICMgc3RvcCBp
ZiByZXF1ZXN0ZWQNCiAgICAgICAgICAgICNyZXR1cm4NCg0KDQogICAgICAg
IHNlbGYuYW5ub3VuY2UoJ0NyZWF0aW5nIHBhY2thZ2UnKQ0KICAgICAgICBz
cGF3bl9jbWQgPSBbJ3N3cGFja2FnZScsICctcyddDQogICAgICAgIHNwYXdu
X2NtZC5hcHBlbmQocHNmX3BhdGgpDQogICAgICAgIHNwYXduX2NtZC5hcHBl
bmQoJy14JykNCiAgICAgICAgc3Bhd25fY21kLmFwcGVuZCgndGFyZ2V0X3R5
cGU9dGFwZScpDQogICAgICAgIHNwYXduX2NtZC5hcHBlbmQoJ0AnKQ0KICAg
ICAgICBzcGF3bl9jbWQuYXBwZW5kKHNlbGYucGtnX2RpcisiLyIrc2VsZi5u
YW1lKyctJytzZWxmLnZlcnNpb24rJy5kZXBvdCcpDQogICAgICAgIHNlbGYu
c3Bhd24oc3Bhd25fY21kKQ0KDQogICAgICAgICMgWFhYIHRoaXMgaXMgYSBu
YXN0eSBoYWNrIC0tIHdlIHJlYWxseSBzaG91bGQgaGF2ZSBhIHByb3BlciB3
YXkgdG8NCiAgICAgICAgIyBmaW5kIG91dCB0aGUgbmFtZXMgb2YgdGhlIFJQ
TSBmaWxlcyBjcmVhdGVkOyBhbHNvLCB0aGlzIGFzc3VtZXMNCiAgICAgICAg
IyB0aGF0IFJQTSBjcmVhdGVzIGV4YWN0bHkgb25lIHNvdXJjZSBhbmQgb25l
IGJpbmFyeSBSUE0uDQogICAgIyBydW4oKQ0KDQogIA0KICAgIGRlZiBfbWFr
ZV9pbmZvX2ZpbGUoc2VsZik6DQogICAgICAgICMgR2VuZXJhdGUgYSBwc2Yg
ZmlsZSBhbmQgcmV0dXJuIGl0IGFzIGxpc3Qgb2Ygc3RyaW5ncyAob25lIHBl
ciBsaW5lKS4NCiAgICAgICAgIyBkZWZpbml0aW9ucyBhbmQgaGVhZGVycw0K
ICAgICAgICBwc2ZfZmlsZSA9IFsNCiAgICAgICAgICAgICd2ZW5kb3InLCAg
ICAgICAgICAgICAgICMgVmVuZG9yIGluZm9ybWF0aW9uDQogICAgICAgICAg
ICAnICAgIHRhZyAgICAgICAgICAgICAgICAlcycgJSBzdHJpbmcucmVwbGFj
ZShzZWxmLnZlbmRvcl90YWcsIiAiLCJfIiksDQogICAgICAgICAgICAnICAg
IHRpdGxlICAgICAgICAgICAgICAlcycgJSBzZWxmLnZlbmRvcl90aXRsZSwN
CiAgICAgICAgICAgICcgICAgZGVzY3JpcHRpb24gICAgICAgICVzJyAlIHNl
bGYudmVuZG9yX2Rlc2NyaXB0aW9uLA0KICAgICAgICAgICAgJ2VuZCcsICAg
ICAgICAgICAgICAgICAgIyBlbmQgb2YgdmVuZG9yDQogICAgICAgICAgICAn
cHJvZHVjdCcsICAgICAgICAgICAgICAjIFByb2R1Y3QgaW5mb3JtYXRpb24N
CiAgICAgICAgICAgICcgICAgdGFnICAgICAgICAgICAgICAgICVzJyAlIHNl
bGYucHJvZHVjdF90YWcsDQogICAgICAgICAgICAnICAgIHRpdGxlICAgICAg
ICAgICAgICAlcycgJSBzZWxmLnByb2R1Y3RfdGl0bGUsDQogICAgICAgICAg
ICAnICAgIHJldmlzaW9uICAgICAgICAgICAlcycgJSBzZWxmLnZlcnNpb24s
DQogICAgICAgICAgICAjJyAgICBhcmNoaXRlY3R1cmUgICAgICAgJXMnICUg
c2VsZi5wcm9kdWN0X2FyY2hpdGVjdHVyZSwNCiAgICAgICAgICAgICcgICAg
bWFjaGluZV90eXBlICAgICAgICVzJyAlIHNlbGYucHJvZHVjdF9tYWNoaW5l
X3R5cGUsDQogICAgICAgICAgICAnICAgIG9zX25hbWUgICAgICAgICAgICAl
cycgJSBzZWxmLm9zX25hbWUsDQogICAgICAgICAgICAnICAgIG9zX3JlbGVh
c2UgICAgICAgICAlcycgJSBzZWxmLnByb2R1Y3Rfb3NfcmVsZWFzZSwNCiAg
ICAgICAgICAgICcgICAgZGlyZWN0b3J5ICAgICAgICAgICVzJyAlIHNlbGYu
c2l0ZSwNCiAgICAgICAgICAgICcgICAgaXNfbG9jYXRhYmxlICAgICAgIHRy
dWUnLA0KICAgICAgICAgICAgXQ0KICAgICAgICBpZiBzZWxmLnByb2R1Y3Rf
ZGVzY3JpcHRpb246DQogICAgICAgICAgICBwc2ZfZmlsZS5leHRlbmQoW3Nl
bGYucHJvZHVjdF9kZXNjcmlwdGlvbl0pDQogICAgICAgIGlmIHNlbGYuY29w
eXJpZ2h0Og0KICAgICAgICAgICAgIyBYWCBtYWtlIGEgY29weXJpZ2h0IGZp
bGUgWFhYDQogICAgICAgICAgICBwc2ZfZmlsZS5leHRlbmQoWycgICAgY29w
eXJpZ2h0ICAgICAgICAgPGNvcHlyaWdodF9maWxlJ10pDQogICAgICAgIGlm
IHNlbGYucmVhZG1lOg0KICAgICAgICAgICAgIyBYWCBtYWtlIGEgcmVhZG1l
IGZpbGUgWFhYDQogICAgICAgICAgICBwc2ZfZmlsZS5leHRlbmQoWycgICAg
cmVhZG1lICAgICAgICAgICAgPHJlYWRtZV9maWxlJ10pDQoNCiAgICAgICAg
cHNmX2ZpbGUuZXh0ZW5kKFsnICAgIGZpbGVzZXQnXSkgICAgIyBzdGFydCBm
aWxlc2V0DQogICAgICAgIHBsYXRsaWI9c2VsZi5nZXRfZmluYWxpemVkX2Nv
bW1hbmQoJ2J1aWxkJykuYnVpbGRfcGxhdGxpYg0KICAgICAgICBwc2ZfZmls
ZS5leHRlbmQoWw0KICAgICAgICAgICAgJyAgICAgICAgdGFnICAgICAgICAg
ICAgJXMnICUgc2VsZi5maWxlc2V0X3RhZywNCiAgICAgICAgICAgICcgICAg
ICAgIHRpdGxlICAgICAgICAgICVzJyAlIHNlbGYuZmlsZXNldF90aXRsZSwN
CiAgICAgICAgICAgICcgICAgICAgIHJldmlzaW9uICAgICAgICVzJyAlIHNl
bGYuZmlsZXNldF9yZXZpc2lvbiwNCiAgICAgICAgICAgICcgICAgICAgIGRp
cmVjdG9yeSAgICAgICVzLyVzPSVzLyVzJyAlIChwbGF0bGliLHNlbGYubmFt
ZSxzZWxmLnNpdGUsc2VsZi5uYW1lKSwNCiAgICAgICAgICAgICcgICAgICAg
IGZpbGUgICAgICAgICAgIConDQogICAgICAgICAgICBdKQ0KICAgICAgICBw
c2ZfZmlsZS5leHRlbmQoWycgICAgZW5kJ10pICAgICAgICAjIGVuZCBvZiBm
aWxlc2V0DQogICAgICAgIHBzZl9maWxlLmV4dGVuZChbJ2VuZCddKSAgICAj
IGVuZCBvZiBwcm9kdWN0DQogICAgICAgICAgICAgICANCiMgWFhYIGFkZCBm
aWxlc2V0IGluZm9ybWF0aW9uDQogICAgICAgIA0KDQogICAgICAgIHJldHVy
biBwc2ZfZmlsZQ0KDQogICAgIyBfbWFrZV9pbmZvX2ZpbGUgKCkNCg0KDQoj
IGNsYXNzIGJkaXN0X3JwbQ0K
---656673009-1108563448-967240568=:31668--