www.delorie.com/archives/browse.cgi   search  
Mail Archives: geda-user/2015/02/15/09:45:38

X-Authentication-Warning: delorie.com: mail set sender to geda-user-bounces using -f
X-Recipient: geda-user AT delorie DOT com
Date: Sun, 15 Feb 2015 15:43:02 +0100 (CET)
From: Roland Lutz <rlutz AT hedmen DOT org>
To: geda-user AT delorie DOT com
Subject: Re: [geda-user] work on gEDA
In-Reply-To: <alpine.DEB.2.00.1502151046540.7324@igor2priv>
Message-ID: <alpine.DEB.2.11.1502151524530.26783@nimbus>
References: <20150215021721 DOT 28d94fde AT jive> <20150215092144 DOT EF6D381A5EB8 AT turkos DOT aspodata DOT se> <alpine DOT DEB DOT 2 DOT 00 DOT 1502151046540 DOT 7324 AT igor2priv>
User-Agent: Alpine 2.11 (DEB 23 2013-08-11)
MIME-Version: 1.0
Reply-To: geda-user AT delorie DOT com
Errors-To: nobody AT delorie DOT com
X-Mailing-List: geda-user AT delorie DOT com
X-Unsubscribes-To: listserv AT delorie DOT com

  This message is in MIME format.  The first part should be readable text,
  while the remaining parts are likely unreadable without MIME-aware tools.

--8323329-337791766-1424011382=:26783
Content-Type: TEXT/PLAIN; charset=US-ASCII; format=flowed

On Sun, 15 Feb 2015, gedau AT igor2 DOT repo DOT hu wrote:
> - support for non-scheme scripts; I have my own favorite non-popular 
> language (awk) which I don't expect to be supported, but honestly, I'd 
> be happy with anything mostly procedural (e.g. tcl, lua, python)
>
> - at least one complex backend rewritten in such a non-scheme/non-lisp 
> language, to serve as an example to those who want to write their own. 
> Preferably a backend in common use should be the victim and the scheme 
> variant should be removed so that the rewritten code has more chance to 
> stay up to date long term

I'm currently working on porting gnetlist to Python.  As a temporary fix, 
you can use some files I wrote some time ago which allow writing gnetlist 
backends in Python.  Use gnet-python.scm as a gnetlist backend to generate 
a Python module which provides the netlist:

$ gnetlist -L ... -g python -o example.py example.sch

As an example, I translated the osmond backend to Python.  To run it, call 
the function "osmond" on the netlist object:

$ python -c '
> from example import netlist
> from gnet_osmond import osmond
> osmond(netlist, "example.out")'

This is assuming example.py and gnet_osmond.py are in the current working 
directory.  If they are not, you will have to set PYTHONPATH accordingly.

Roland

--8323329-337791766-1424011382=:26783
Content-Type: TEXT/PLAIN; charset=US-ASCII; name=gnet-python.scm
Content-Transfer-Encoding: BASE64
Content-ID: <alpine DOT DEB DOT 2 DOT 11 DOT 1502151543020 DOT 26783 AT nimbus>
Content-Description: 
Content-Disposition: attachment; filename=gnet-python.scm

OyBDb3B5cmlnaHQgKEMpIDIwMTMgUm9sYW5kIEx1dHoNCjsNCjsgVGhpcyBw
cm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRl
IGl0IGFuZC9vciBtb2RpZnkNCjsgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRo
ZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkN
CjsgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNp
b24gMiBvZiB0aGUgTGljZW5zZSwgb3INCjsgKGF0IHlvdXIgb3B0aW9uKSBh
bnkgbGF0ZXIgdmVyc2lvbi4NCjsNCjsgVGhpcyBwcm9ncmFtIGlzIGRpc3Ry
aWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsDQo7
IGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBp
bXBsaWVkIHdhcnJhbnR5IG9mDQo7IE1FUkNIQU5UQUJJTElUWSBvciBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUNCjsgR05V
IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4NCjsN
CjsgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05V
IEdlbmVyYWwgUHVibGljIExpY2Vuc2UNCjsgYWxvbmcgd2l0aCB0aGlzIHBy
b2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUgRm91
bmRhdGlvbiwNCjsgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBG
bG9vciwgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuDQoNCihkZWZpbmUg
KHB5dGhvbjpnZXQtYWxsLXBpbnMpDQogIChsZXQgY29sbGVjdC1waW5zICgo
cGFja2FnZXMgcGFja2FnZXMpDQoJCSAgICAgKHJlc3VsdCAnKCkpKQ0KICAg
IChpZiAobnVsbD8gcGFja2FnZXMpDQoJcmVzdWx0DQoJKGNvbGxlY3QtcGlu
cw0KCSAoY2RyIHBhY2thZ2VzKQ0KCSAobGV0IGNvbGxlY3QtcGluczEgKChy
ZWZkZXMgKGNhciBwYWNrYWdlcykpDQoJCQkgICAgIChwaW5zIChnbmV0bGlz
dDpnZXQtcGlucyAoY2FyIHBhY2thZ2VzKSkpDQoJCQkgICAgIChyZXN1bHQg
cmVzdWx0KSkNCgkgICAoaWYgKG51bGw/IHBpbnMpDQoJICAgICAgIHJlc3Vs
dA0KCSAgICAgICAoY29ucyAoY29ucyByZWZkZXMgKGNhciBwaW5zKSkNCgkJ
ICAgICAoY29sbGVjdC1waW5zMSByZWZkZXMgKGNkciBwaW5zKSByZXN1bHQp
KSkpKSkpKQ0KDQooZGVmaW5lIChweXRob246cGFja2FnZS1pbmRleCByZWZk
ZXMpDQogIChsZXQgZmluZC1wYWNrYWdlICgocGFja2FnZXMgcGFja2FnZXMp
DQoJCSAgICAgKGluZGV4IDApKQ0KICAgIChpZiAobnVsbD8gcGFja2FnZXMp
DQoJKGVycm9yICJyZWZkZXMgbm90IGZvdW5kIikNCgkoaWYgKHN0cmluZz0/
IHJlZmRlcyAoY2FyIHBhY2thZ2VzKSkNCgkgICAgaW5kZXgNCgkgICAgKGZp
bmQtcGFja2FnZSAoY2RyIHBhY2thZ2VzKSAoKyBpbmRleCAxKSkpKSkpDQoN
CihkZWZpbmUgKHB5dGhvbjpuZXQtaW5kZXggcmVmZGVzKQ0KICAobGV0IGZp
bmQtbmV0ICgobmV0cyBhbGwtdW5pcXVlLW5ldHMpDQoJCSAoaW5kZXggMCkp
DQogICAgKGlmIChudWxsPyBuZXRzKQ0KCSNmDQoJKGlmIChzdHJpbmc9PyBy
ZWZkZXMgKGNhciBuZXRzKSkNCgkgICAgaW5kZXgNCgkgICAgKGZpbmQtbmV0
IChjZHIgbmV0cykgKCsgaW5kZXggMSkpKSkpKQ0KDQooZGVmaW5lIChweXRo
b246d3JpdGUtYXR0cmlidXRlcyBnZXR0ZXIgZGVmYXVsdCBwb3J0KQ0KICAo
Zm9yLWVhY2ggKGxhbWJkYSAoa2V5KQ0KCSAgICAgIChsZXQgKCh2YWx1ZSAo
Z2V0dGVyIGtleSkpKQ0KCQkoaWYgKG5vdCAoc3RyaW5nPT8gZGVmYXVsdCB2
YWx1ZSkpDQoJCSAgICAoYmVnaW4gKGRpc3BsYXkga2V5IHBvcnQpDQoJCQkg
ICAoZGlzcGxheSAiID0gJyIgcG9ydCkNCgkJCSAgIChkaXNwbGF5IHZhbHVl
IHBvcnQpDQoJCQkgICAoZGlzcGxheSAiJywgIiBwb3J0KSkpKSkNCgkgICAg
JygiYXV0aG9yIiAiY29tbWVudCIgImRlc2NyaXB0aW9uIiAiZGV2aWNlIiAi
ZGlzdC1saWNlbnNlIg0KCSAgICAgICJkb2N1bWVudGF0aW9uIiAiZm9vdHBy
aW50IiAiZ3JhcGhpY2FsIiAibmV0IiAibmV0bmFtZSINCgkgICAgICAibnVt
c2xvdHMiICJwaW5sYWJlbCIgInBpbm51bWJlciIgInBpbnNlcSIgInBpbnR5
cGUiICJyZWZkZXMiDQoJICAgICAgInNsb3QiICJzbG90ZGVmIiAic291cmNl
IiAic3ltdmVyc2lvbiIgInVzZS1saWNlbnNlIiAidmFsdWUiKSkpDQoNCihk
ZWZpbmUgKHB5dGhvbiBvdXRwdXQtZmlsZW5hbWUpDQogIChsZXQgKChwb3J0
IChvcGVuLW91dHB1dC1maWxlIG91dHB1dC1maWxlbmFtZSkpKQ0KICAgIChk
aXNwbGF5ICJmcm9tIG5ldGxpc3QgaW1wb3J0ICpcblxuIiBwb3J0KQ0KICAg
IChkaXNwbGF5ICJuZXRsaXN0ID0gTmV0bGlzdCgiIHBvcnQpDQogICAgKHB5
dGhvbjp3cml0ZS1hdHRyaWJ1dGVzIChsYW1iZGEgKGtleSkNCgkJCSAgICAg
ICAoZ25ldGxpc3Q6Z2V0LXRvcGxldmVsLWF0dHJpYnV0ZSBrZXkpKQ0KCQkJ
ICAgICAibm90IGZvdW5kIiBwb3J0KQ0KICAgIChkaXNwbGF5ICIpXG4iIHBv
cnQpDQogICAgKGRpc3BsYXkgIm5ldGxpc3QucGFja2FnZXMgPSBbXG4iIHBv
cnQpDQogICAgKGZvci1lYWNoIChsYW1iZGEgKHBhY2thZ2UpDQoJCShkaXNw
bGF5ICIgIFBhY2thZ2UoIiBwb3J0KQ0KCQk7KGRpc3BsYXkgIiciIHBvcnQp
DQoJCTsoZGlzcGxheSBwYWNrYWdlIHBvcnQpDQoJCTsoZGlzcGxheSAiJywg
IiBwb3J0KQ0KCQkocHl0aG9uOndyaXRlLWF0dHJpYnV0ZXMgKGxhbWJkYSAo
a2V5KQ0KCQkJCQkgICAoZ25ldGxpc3Q6Z2V0LXBhY2thZ2UtYXR0cmlidXRl
DQoJCQkJCSAgICBwYWNrYWdlIGtleSkpDQoJCQkJCSAidW5rbm93biIgcG9y
dCkNCgkJKGRpc3BsYXkgIiksXG4iIHBvcnQpKQ0KCSAgICAgIHBhY2thZ2Vz
KQ0KICAgIChkaXNwbGF5ICJdXG4iIHBvcnQpDQogICAgKGRpc3BsYXkgIm5l
dGxpc3QubmV0cyA9IFtcbiIgcG9ydCkNCiAgICAoZm9yLWVhY2ggKGxhbWJk
YSAobmV0KQ0KCQkoZGlzcGxheSAiICBOZXQoJyIgcG9ydCkNCgkJKGRpc3Bs
YXkgbmV0IHBvcnQpDQoJCShkaXNwbGF5ICInKSxcbiIgcG9ydCkpDQoJICAg
ICAgYWxsLXVuaXF1ZS1uZXRzKQ0KICAgIChkaXNwbGF5ICJdXG4iIHBvcnQp
DQogICAgKGRpc3BsYXkgIm5ldGxpc3QucGlucyA9IFtcbiIgcG9ydCkNCiAg
ICAoZm9yLWVhY2ggKGxhbWJkYSAocGFja2FnZSkNCgkJKGxldCAoKHBhY2th
Z2UtaW5kZXggKHB5dGhvbjpwYWNrYWdlLWluZGV4IHBhY2thZ2UpKSkNCgkJ
ICAoZm9yLWVhY2ggKGxhbWJkYSAocGluLW5ldCkNCgkJCSAgICAgIChkaXNw
bGF5ICIgIFBpbihuZXRsaXN0LnBhY2thZ2VzWyIgcG9ydCkNCgkJCSAgICAg
IChkaXNwbGF5IHBhY2thZ2UtaW5kZXggcG9ydCkNCgkJCSAgICAgIChkaXNw
bGF5ICJdLCAiIHBvcnQpDQoJCQkgICAgICAobGV0ICgobmV0LWluZGV4DQoJ
CQkJICAgICAocHl0aG9uOm5ldC1pbmRleCAoY2RyIHBpbi1uZXQpKSkpDQoJ
CQkJKGlmIChlcT8gbmV0LWluZGV4ICNmKQ0KCQkJCSAgICAoZGlzcGxheSAi
Tm9uZSwgIiBwb3J0KQ0KCQkJCSAgICAoYmVnaW4gKGRpc3BsYXkgIm5ldGxp
c3QubmV0c1siIHBvcnQpDQoJCQkJCSAgIChkaXNwbGF5IG5ldC1pbmRleCBw
b3J0KQ0KCQkJCQkgICAoZGlzcGxheSAiXSwgIiBwb3J0KSkpKQ0KCQkJICAg
ICAgKGlmIChub3QgKHN0cmluZz0/DQoJCQkJCShnbmV0bGlzdDpnZXQtYXR0
cmlidXRlLWJ5LXBpbm51bWJlcg0KCQkJCQkgcGFja2FnZSAoY2FyIHBpbi1u
ZXQpICJwaW5udW1iZXIiKQ0KCQkJCQkoY2FyIHBpbi1uZXQpKSkNCgkJCQkg
IChiZWdpbiAoZGlzcGxheSAiVHJ1ZSwgcGlubnVtYmVyID0gJyIgcG9ydCkN
CgkJCQkJIChkaXNwbGF5IChjYXIgcGluLW5ldCkgcG9ydCkNCgkJCQkJIChk
aXNwbGF5ICInLCAiIHBvcnQpKQ0KCQkJCSAgKGRpc3BsYXkgIkZhbHNlLCAi
IHBvcnQpKQ0KCQkJICAgICAgKHB5dGhvbjp3cml0ZS1hdHRyaWJ1dGVzDQoJ
CQkgICAgICAgKGxhbWJkYSAoa2V5KQ0KCQkJCSAoZ25ldGxpc3Q6Z2V0LWF0
dHJpYnV0ZS1ieS1waW5udW1iZXINCgkJCQkgIHBhY2thZ2UgKGNhciBwaW4t
bmV0KSBrZXkpKQ0KCQkJICAgICAgICJ1bmtub3duIiBwb3J0KQ0KCQkJICAg
ICAgKGRpc3BsYXkgIiksXG4iIHBvcnQpKQ0KCQkJICAgIChnbmV0bGlzdDpn
ZXQtcGlucy1uZXRzIHBhY2thZ2UpKSkpDQoJICAgICAgcGFja2FnZXMpDQog
ICAgKGRpc3BsYXkgIl1cbiIgcG9ydCkNCiAgICAoZGlzcGxheSAibmV0bGlz
dC5pbml0KClcbiIgcG9ydCkNCiAgICAoY2xvc2Utb3V0cHV0LXBvcnQgcG9y
dCkpKQ0K

--8323329-337791766-1424011382=:26783
Content-Type: TEXT/x-python; name=netlist.py
Content-Transfer-Encoding: BASE64
Content-ID: <alpine DOT DEB DOT 2 DOT 11 DOT 1502151543021 DOT 26783 AT nimbus>
Content-Description: 
Content-Disposition: attachment; filename=netlist.py

IyBDb3B5cmlnaHQgKEMpIDIwMTMgUm9sYW5kIEx1dHoNCiMNCiMgVGhpcyBw
cm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRl
IGl0IGFuZC9vciBtb2RpZnkNCiMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRo
ZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkN
CiMgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNp
b24gMiBvZiB0aGUgTGljZW5zZSwgb3INCiMgKGF0IHlvdXIgb3B0aW9uKSBh
bnkgbGF0ZXIgdmVyc2lvbi4NCiMNCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3Ry
aWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsDQoj
IGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBp
bXBsaWVkIHdhcnJhbnR5IG9mDQojIE1FUkNIQU5UQUJJTElUWSBvciBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUNCiMgR05V
IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4NCiMN
CiMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05V
IEdlbmVyYWwgUHVibGljIExpY2Vuc2UNCiMgYWxvbmcgd2l0aCB0aGlzIHBy
b2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUgRm91
bmRhdGlvbiwNCiMgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBG
bG9vciwgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuDQoNCmNsYXNzIE5l
dGxpc3Q6DQogICAgZGVmIF9faW5pdF9fKHNlbGYsICoqYXR0cnMpOg0KICAg
ICAgICBzZWxmLmF0dHJzID0gYXR0cnMNCg0KICAgIGRlZiBpbml0KHNlbGYp
Og0KICAgICAgICBmb3IgcGluIGluIHNlbGYucGluczoNCiAgICAgICAgICAg
IHBpbi5wYWNrYWdlLnBpbnMgKz0gW3Bpbl0NCiAgICAgICAgICAgIGlmIHBp
bi5uZXQ6DQogICAgICAgICAgICAgICAgcGluLm5ldC5jb25uZWN0aW9ucyAr
PSBbcGluXQ0KICAgICAgICAgICAgaWYgInBpbm51bWJlciIgaW4gcGluLmF0
dHJzOg0KICAgICAgICAgICAgICAgIHBpbi5wYWNrYWdlLnBpbnNfYnlfcGlu
bnVtYmVyW3Bpbi5hdHRyc1sicGlubnVtYmVyIl1dID0gcGluDQogICAgICAg
ICAgICBpZiAicGluc2VxIiBpbiBwaW4uYXR0cnM6DQogICAgICAgICAgICAg
ICAgcGluLnBhY2thZ2UucGluc19ieV9waW5zZXFbcGluLmF0dHJzWyJwaW5z
ZXEiXV0gPSBwaW4NCg0KY2xhc3MgUGFja2FnZToNCiAgICBkZWYgX19pbml0
X18oc2VsZiwgKiphdHRycyk6DQogICAgICAgIHNlbGYuYXR0cnMgPSBhdHRy
cw0KICAgICAgICBzZWxmLnBpbnMgPSBbXQ0KICAgICAgICBzZWxmLnBpbnNf
YnlfcGlubnVtYmVyID0ge30NCiAgICAgICAgc2VsZi5waW5zX2J5X3BpbnNl
cSA9IHt9DQoNCmNsYXNzIE5ldDoNCiAgICBkZWYgX19pbml0X18oc2VsZiwg
bmFtZSk6DQogICAgICAgIHNlbGYubmFtZSA9IG5hbWUNCiAgICAgICAgc2Vs
Zi5jb25uZWN0aW9ucyA9IFtdDQoNCmNsYXNzIFBpbjoNCiAgICBkZWYgX19p
bml0X18oc2VsZiwgcGFja2FnZSwgbmV0LCBpc192aXJ0dWFsLCAqKmF0dHJz
KToNCiAgICAgICAgc2VsZi5wYWNrYWdlID0gcGFja2FnZQ0KICAgICAgICBz
ZWxmLm5ldCA9IG5ldA0KICAgICAgICBzZWxmLmlzX3ZpcnR1YWwgPSBpc192
aXJ0dWFsDQogICAgICAgIHNlbGYuYXR0cnMgPSBhdHRycw0K

--8323329-337791766-1424011382=:26783
Content-Type: TEXT/x-python; name=gnet_osmond.py
Content-Transfer-Encoding: BASE64
Content-ID: <alpine DOT DEB DOT 2 DOT 11 DOT 1502151543022 DOT 26783 AT nimbus>
Content-Description: 
Content-Disposition: attachment; filename=gnet_osmond.py

IyBnRURBIC0gR1BMIEVsZWN0cm9uaWMgRGVzaWduIEF1dG9tYXRpb24NCiMg
Z25ldGxpc3QgYmFjayBlbmQgZm9yIE9zbW9uZCBQQ0IgRGVzaWduDQojIENv
cHlyaWdodCAoQykgMjAwNy0yMDEwIEpvaG4gUC4gRG90eQ0KIyBDb3B5cmln
aHQgKEMpIDIwMTMgUm9sYW5kIEx1dHoNCiMNCiMgVGhpcyBwcm9ncmFtIGlz
IGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9v
ciBtb2RpZnkNCiMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2Vu
ZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkNCiMgdGhlIEZy
ZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0
aGUgTGljZW5zZSwgb3INCiMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIg
dmVyc2lvbi4NCiMNCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGlu
IHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsDQojIGJ1dCBXSVRI
T1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdh
cnJhbnR5IG9mDQojIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUNCiMgR05VIEdlbmVyYWwg
UHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4NCiMNCiMgWW91IHNo
b3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwg
UHVibGljIExpY2Vuc2UNCiMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlm
IG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUNCiMgRm91bmRhdGlv
biwgSW5jLiwgNjc1IE1hc3MgQXZlLCBDYW1icmlkZ2UsIE1BIDAyMTM5LCBV
U0EuDQoNCmRlZiBvc21vbmQobmV0bGlzdCwgb3V0cHV0X2ZpbGVuYW1lKToN
CiAgICBmID0gb3BlbihvdXRwdXRfZmlsZW5hbWUsICd3JykNCiAgICBmb3Ig
cGFja2FnZSBpbiBuZXRsaXN0LnBhY2thZ2VzOg0KICAgICAgICBmLndyaXRl
KCdQYXJ0ICVzIHsgTmFtZSAlcyB9XG4nICUgKHBhY2thZ2UuYXR0cnNbJ2Zv
b3RwcmludCddLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHBhY2thZ2UuYXR0cnNbJ3JlZmRlcyddKSkNCiAgICBmb3Ig
bmV0IGluIG5ldGxpc3QubmV0czoNCiAgICAgICAgZi53cml0ZSgnU2lnbmFs
ICIlcyJcbiAgeycgJSBuZXQubmFtZSkNCiAgICAgICAgZm9yIHBpbiBpbiBu
ZXQuY29ubmVjdGlvbnM6DQogICAgICAgICAgICBmLndyaXRlKCIgJXMtJXMi
ICUgKHBpbi5wYWNrYWdlLmF0dHJzWydyZWZkZXMnXSwNCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgcGluLmF0dHJzWydwaW5udW1iZXInXSkp
DQogICAgICAgIGYud3JpdGUoJyB9XG4nKQ0KICAgIGYuY2xvc2UoKQ0K

--8323329-337791766-1424011382=:26783--

- Raw text -


  webmaster     delorie software   privacy  
  Copyright © 2019   by DJ Delorie     Updated Jul 2019