From olav.kolbu@usit.uio.no Wed Oct  8 14:40:47 1997
Received: from astart.com (papowell@astart4.astart.com [206.71.174.196])
	by astart4.astart.com (8.8.5/8.8.5) with ESMTP id OAA00554
	for <papowell@astart4.astart.com>; Wed, 8 Oct 1997 14:40:46 -0700 (PDT)
Received: from pat (pat.uio.no [129.240.130.16])
	by astart2.astart.com (8.8.7/8.8.5) with SMTP id OAA22330
	for <papowell@astart.com>; Wed, 8 Oct 1997 14:30:46 -0700 (PDT)
Received: from aragorn.uio.no by pat with local-SMTP (PP);
          Wed, 8 Oct 1997 23:27:42 +0200
Received: from localhost (ok@localhost) by aragorn.uio.no ;
          Wed, 8 Oct 1997 23:27:41 +0200 (METDST)
Date: Wed, 8 Oct 1997 23:27:41 +0200 (METDST)
From: Olav Kolbu <olav.kolbu@usit.uio.no>
X-Sender: ok@aragorn.uio.no
Reply-To: Olav Kolbu <olav.kolbu@usit.uio.no>
To: papowell@astart2.astart.com
Subject: Re: [LPRng] Help! I need some Perl/Tk code written
In-Reply-To: <199710072158.OAA25525@astart4.astart.com>
Message-ID: <Pine.HPP.3.96.971008224720.26316H-200000@aragorn.uio.no>
MIME-Version: 1.0
Content-Type: MULTIPART/MIXED; BOUNDARY="2016706854-824023566-876346061=:26316"
Status: R

  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.

--2016706854-824023566-876346061=:26316
Content-Type: TEXT/PLAIN; charset=US-ASCII


Hi there!

Attached you'll find first draft of the program you requested, largely
untested since I don't run LPRng :-). There is a small TODO list that I
haven't had time to do yet, will get to that shortly:

# TODO: 
#       1. SIGALRM a timeout on each connection to make sure some twit
#          doesn't stop us dead by connecting and leaving the connection 
#          open.
#       2. Man page.
#       3. Testing & bugfixing.
#       4. UDP support

Other than that it does more or less what you want I think.

LPR/jobinfo.pl [-u] [-d] [-m <single|cont[inuous]>] [-s <server1,...>]
               [-p <port1,...>] [-P <port>]
        -u                      Usage
        -d                      Debug output on STDERR
        -m <single|cont>        Single or continous messages (Default
                                continous)
        -s <server1,...>        Regexps matching valid client hosts
        -p <port1,...>          Regexps matching valid client ports
        -P <port>               Port number to connect to (Default 3456)
        -r <refresh rate>       Seconds to wait in select (Default 1 sec)

Feedback welcome, I'll maintain it if you want to.

				OK

PS Quick question while I have your attention:
    You may remember my Esc-E problem, where ifhp caused errors
    on my HP4 printers. Your latest comment was that the printers
    must be hardwired to be PostScript printers. The display
    definitively says "Auto" when looking at the language so
    what I was wondering was if there is any other way of
    allowing PCL/PJL or if Auto really means it groks PCL/PJL.

--
Olav Kolbu (Olav.Kolbu@usit.uio.no)
System Administrator
Center for Information Technology Services/Section for Operations
University of Oslo
P.O. Box 1059 Blindern, N-0316 Oslo, Norway
Phone: +47 22 85 27 80, Fax: +47 22 85 27 30


--2016706854-824023566-876346061=:26316
Content-Type: TEXT/PLAIN; charset=US-ASCII; name="jobinfo.pl"
Content-Transfer-Encoding: BASE64
Content-ID: <Pine.HPP.3.96.971008232741.26316J@aragorn.uio.no>
Content-Description: JobInfo.pl, Perl/Tk program

IyEvb3B0L0xXcGVybC9iaW4vcGVybA0KIw0KIyBDb3B5cmlnaHQgMTk5NyBP
bGF2IEtvbGJ1IDxvbGF2QGtvbGJ1LmNvbT4NCiMNCiMgVXNlIGFuZCBkaXN0
cmlidXRpb24gb2YgdGhpcyBzb2Z0d2FyZSBpcyBjb3ZlcmVkIGJ5IHRoZSBH
TlUgQ09QWUlORw0KIyBsaWNlbnNlLiAgUGxlYXNlIHJlZmVyIHRvIHRoaXMg
Zm9yIHRlcm1zIGFuZCBjb25kaXRpb25zLg0KIw0KIyBUT0RPOiANCiMgICAg
ICAgMS4gU0lHQUxSTSBhIHRpbWVvdXQgb24gZWFjaCBjb25uZWN0aW9uIHRv
IG1ha2Ugc3VyZSBzb21lIHR3aXQNCiMgICAgICAgICAgZG9lc24ndCBzdG9w
IHVzIGRlYWQgYnkgY29ubmVjdGluZyBhbmQgbGVhdmluZyB0aGUgY29ubmVj
dGlvbiANCiMgICAgICAgICAgb3Blbi4NCiMgICAgICAgMi4gTWFuIHBhZ2Uu
DQojICAgICAgIDMuIFRlc3RpbmcgJiBidWdmaXhpbmcuDQojICAgICAgIDQu
IFVEUCBzdXBwb3J0DQojDQojIEEgc21hbGwgcHJvZ3JhbSB0aGF0IGxpc3Rl
bnMgb24gYSBnaXZlbiBwb3J0IGFuZCBkaXNwbGF5cyBhbnkgbWVzc2FnZXMg
aXQgDQojIHJlY2VpdmVzIG9uIHRoYXQgcG9ydCBpbiBhIFRrIHdpbmRvdy4g
VHdvIG1vZGVzOg0KIw0KIyAxLiBDbGVhciB0aGUgd2luZG93IGZvciBlYWNo
IG5ldyBtZXNzYWdlDQojIDIuIEtlZXAgYSBzY3JvbGxpbmcgaGlzdG9yeSBv
ZiBtZXNzYWdlcyAoZGVmYXVsdCkNCiMNCiMgQXJndW1lbnRzOg0KIyANCiMg
LW0gPHNpbmdsZXxjb250W2ludW91c10+ICAgICAgICAvLyBEaXNwbGF5IG1v
ZGUNCiMgLXMgPHNlcnZlcjEsc2VydmVyMiwuLi4+ICAgICAgICAvLyBSZWdl
eHAgbWF0Y2hlcyBmb3IgdmFsaWRhdGluZyBjb25uZWN0aW9uDQojIC1wIDxw
b3J0MSxwb3J0MiwuLi4+ICAgICAgICAgICAgLy8gUmVnZXhwIG1hdGNoZXMg
Zm9yIHZhbGlkYXRpbmcgY2xpZW50IHBvcnRzDQojIC1QIDxwb3J0IG51bWJl
cj4gICAgICAgICAgICAgICAgLy8gUG9ydCBudW1iZXIgdG8gbGlzdGVuIG9u
DQojIC1yIDxyZWZyZXNoIHJhdGU+ICAgICAgICAgICAgICAgLy8gU2Vjb25k
cyhvciBmcmFjdGlvbnMpIHRvIHdhaXQgaW4gc2VsZWN0DQojICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgLy8gSGlnaCBudW1iZXIgLT4gc2xv
dyBzY3JlZW4gdXBkYXRlDQojICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgLy8gICAgICAgICAgICAgLT4ga2luZCBvbiBDUFUNCiMgLXUgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBVc2FnZQ0KIyAtZCAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIC8vIERlYnVnIGluZm8gb24gU1RE
RVJSDQojDQp1c2UgR2V0b3B0OjpTdGQ7DQp1c2UgU29ja2V0Ow0KdXNlIFRr
Ow0KDQojIFJlYWQgT25seSBUZXh0IHdpZGdldA0KIw0KcmVxdWlyZSBUazo6
Uk9UZXh0Ow0KDQojIEZ1bmN0aW9uIGRlY2xhcmF0aW9ucw0KIw0Kc3ViIHVz
YWdlOw0Kc3ViIGZvcm1hdF9tZXNzYWdlOw0Kc3ViIGRpc3BsYXlfbWVzc2Fn
ZTsNCnN1YiBzZXR1cF93aW5kb3c7DQpzdWIgdmFsaWRhdGVfY29ubmVjdGlv
bjsNCg0KIyBWYXJpYWJsZXMNCiMNCm15IEB2YWxpZF9jbGllbnRzID0gKCIu
KiIpOyAgICAgICAgICAgICAgICAgIyBSZWdleHAgbWF0Y2hpbmcgYW55IGNs
aWVudA0KbXkgQHZhbGlkX3BvcnRzICAgPSAoIi4qIik7ICAgICAgICAgICAg
ICAgICAjIFJlZ2V4cCBtYXRjaGluZyBhbnkgcG9ydA0KbXkgJHNpbmdsZSAg
ICAgICAgPSAwOw0KbXkgJHBvcnQgICAgICAgICAgPSAzNDU2Ow0KbXkgJHJl
ZnJlc2ggICAgICAgPSAxOyAgICAgICAgICAgICAgICAgICAgICAjIDEgc2Vj
b25kIGlzIGEgbmljZSB0cmFkZW9mZg0KbXkgKCRwcm90bywgJGNvbm5lY3Rp
b25zKTsNCm15ICgkcmluLCAkcm91dCk7DQpteSAoJFRPUCwgJFRFWFQsICRU
RVhUX1NUUklORyk7DQoNCm15ICRwcm9nbmFtZSA9ICdKb2JJbmZvJzsNCm15
ICR2ZXJzaW9uICA9ICcxLjAnOw0KDQoNCiMgUGFyc2UgY29tbWFuZCBsaW5l
IGFyZ3VtZW50cw0KIw0KZ2V0b3B0cygnbTpzOnA6UDpyOnVkJyk7DQoNCiRv
cHRfdSAmJiBkbyB7IHVzYWdlKCk7IGV4aXQoMCk7IH07DQokb3B0X3MgJiYg
ZG8geyBAdmFsaWRfY2xpZW50cyA9IHNwbGl0KC8sLywgJG9wdF9zKTsgfTsN
CiRvcHRfcCAmJiBkbyB7IEB2YWxpZF9wb3J0cyAgID0gc3BsaXQoLywvLCAk
b3B0X3ApOyB9Ow0KJG9wdF9tICYmIGRvIHsgJHNpbmdsZSAgICAgICAgPSAk
b3B0X20gZXEgInNpbmdsZSI7ICB9Ow0KJG9wdF9QICYmIGRvIHsgJHBvcnQg
ICAgICAgICAgPSAkb3B0X3A7IH07DQokb3B0X3IgJiYgZG8geyAkcmVmcmVz
aCAgICAgICA9ICRvcHRfcjsgfTsNCg0KIyBJbml0aWFsIFRrIHNldHVwDQoj
IA0Kc2V0dXBfd2luZG93KCk7DQoNCiRvcHRfZCAmJiBwcmludCBTVERFUlIg
IlRrIGZyb250ZW5kIHJ1bm5pbmcuXG4iOw0KDQojIFNldCB1cCB0aGUgbGlz
dGVuaW5nIHBvcnQNCiMNCiRwcm90byA9IGdldHByb3RvYnluYW1lKCJ0Y3Ai
KTsNCnNvY2tldChTRVJWRVIsIFBGX0lORVQsIFNPQ0tfU1RSRUFNLCAkcHJv
dG8pICAgICAgICAgICBvciBkaWUgInNvY2tldDogJCEiOw0Kc2V0c29ja29w
dChTRVJWRVIsIFNPTF9TT0NLRVQsIFNPX1JFVVNFQUREUiwgcGFjaygibCIs
MSkpDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgb3IgZGllICJzZXRzb2Nrb3B0OiAkISI7DQpiaW5k
KFNFUlZFUiwgc29ja2FkZHJfaW4oJHBvcnQsIElOQUREUl9BTlkpKSAgICAg
ICAgICAgb3IgZGllICJiaW5kOiAkISI7DQpsaXN0ZW4oU0VSVkVSLCBTT01B
WENPTk4pICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3IgZGllICJs
aXN0ZW46ICQhIjsNCg0KJG9wdF9kICYmIHByaW50IFNUREVSUiAiTGlzdGVu
aW5nIG9uIHBvcnQgJHBvcnQuXG4iOw0KDQojIFByaW1lIHZlY3RvciBhcnJh
eXMgbmVlZGVkIGJ5IHNlbGVjdCgpLiBXZSBjYW4ndCBkbyBhbiBhY2NlcHQo
KSB3YWl0DQojIGFzIHdlJ3JlIHN1cHBvc2VkIHRvIGtlZXAgdGhlIGRpc3Bs
YXkgcmVhc29uYWJseSB1cCB0byBkYXRlIGFzIHdlbGwuDQojDQokcmluID0g
IiI7DQp2ZWMoJHJpbiwgZmlsZW5vKFNFUlZFUiksIDEpID0gMTsNCg0Kd2hp
bGUoMSkNCnsNCiAgICBteSAoJG51bSwgJHRpbWVsZWZ0KTsNCg0KICAgICMg
V2lsbCBoYW5nIGhlcmUgZm9yIGEgc2Vjb25kIG9yIHVudGlsIHdlIGdldCBo
aXQgb24gdGhlIHBvcnQsIA0KICAgICMgd2hpY2hldmVyIGNvbWVzIGZpcnN0
Lg0KICAgICMNCiAgICAoJG51bSwgJHRpbWVsZWZ0KSA9IHNlbGVjdCgkcm91
dD0kcmluLCB1bmRlZiwgdW5kZWYsICRyZWZyZXNoKTsNCg0KICAgIGlmICgg
JG51bSApDQogICAgew0KICAgICAgICBteSAoJHRtcGFkZHIsICRzb3VyY2Vf
cG9ydCwgJHNvdXJjZV9hZGRyLCAkc291cmNlX25hbWUsICRzb3VyY2VfaXAp
Ow0KICAgICAgICBteSAoJHN0aWxsX21vcmUsICRpbnB1dCk7DQoNCgkkdG1w
YWRkciA9IGFjY2VwdChDTElFTlQsIFNFUlZFUik7DQoNCiAgICAgICAgJGNv
bm5lY3Rpb25zKys7DQoNCgkjIEdldCBpbmZvcm1hdGlvbiByZXF1aXJlZCBm
b3IgdmFsaWRhdGlvbg0KCSMNCgkoJHNvdXJjZV9wb3J0LCAkc291cmNlX2Fk
ZHIpID0gc29ja2FkZHJfaW4oJHRtcGFkZHIpOw0KCSRzb3VyY2VfbmFtZSA9
IGdldGhvc3RieWFkZHIoJHNvdXJjZV9hZGRyLCBBRl9JTkVUKTsNCgkkc291
cmNlX2lwID0gaW5ldF9udG9hKCRzb3VyY2VfYWRkcik7DQoNCgkkb3B0X2Qg
JiYgcHJpbnQgU1RERVJSICJDb25uZWN0aW9uICMkY29ubmVjdGlvbnMgZnJv
bSAkbmFtZSBbJHNvdXJjZV9pcCAkc291cmNlX3BvcnRdXG4iOw0KDQoJIyBC
b290IGNvbm5lY3Rpb24gaWYgbm90IGZyb20gYSB2YWxpZCBzb3VyY2UNCgkj
DQogICAgICAgIGlmICggIXZhbGlkYXRlX2Nvbm5lY3Rpb24oJHNvdXJjZV9u
YW1lLCAkc291cmNlX2lwLCAkc291cmNlX3BvcnQpICkNCgl7DQoJICAgIGNs
b3NlKENMSUVOVCk7DQoJICAgIG5leHQ7DQoJfQ0KDQoJIyBJdCBpcyBwcmVz
dW1lZCB0aGF0IHRoZSBjbGllbnQgd2lsbCBkaXNhcHBlYXIgcmVhc29uYWJs
eSANCiAJIyBxdWlja2x5LCBhcyB3ZSdyZSByZWFsbHkgZG9pbmcgYSBibG9j
a2luZyByZWFkIHVudGlsDQoJIyB0aGUgY2xpZW50IGRpc2Nvbm5lY3RzIGhl
cmUuIFRoZSBsb25nZXIgdGhlIHRleHQsIHRoZSANCgkjIHNsb3dlciB0aGUg
d2luZG93IHJlZnJlc2guDQoJIw0KCWRvIHsNCgkgICAgbXkgJHRtcGlucHV0
Ow0KCSAgICBpZiAoICRzdGlsbF9tb3JlID0gc3lzcmVhZChDTElFTlQsICR0
bXBpbnB1dCwgODE5MikgKQ0KCSAgICB7DQoJICAgICAgICAkaW5wdXQgLj0g
JHRtcGlucHV0Ow0KCSAgICB9DQoJfSB3aGlsZSAoICRzdGlsbF9tb3JlICk7
DQoNCglkaXNwbGF5X21lc3NhZ2UoZm9ybWF0X21lc3NhZ2UoJHNvdXJjZV9u
YW1lLCAkaW5wdXQpKTsNCiAgICB9DQogICAgDQogICAgIyBBYm91dCB0aW1l
IHdlIHVwZGF0ZSB0aGUgc2NyZWVuDQogICAgJFRPUC0+dXBkYXRlKCk7DQoN
CiAgICAkb3B0X2QgJiYgcHJpbnQgU1RERVJSICJTZWxlY3QoKSBhbmQgVGsg
dXBkYXRlKCkgZG9uZSAiLmxvY2FsdGltZSh0aW1lKCkpLiIuXG4iOw0KfQ0K
DQpleGl0Ow0KDQojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIw0KIyBTdWJyb3V0aW5l
cw0KIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMNCg0KIyBWYWxpZGF0ZXMgYSBjb25u
ZWN0aW9uIGJ5IG1ha2luZyBzdXJlIGVpdGhlciB0aGUgSVAgbnVtYmVyIG9y
DQojIG5hbWUgbWF0Y2hlcyBhbiBlbnRyeSBpbiB0aGUgQHZhbGlkX25hbWVz
IGFycmF5Lg0KIw0KIyBJbnB1dCAgOiAgSVAgbnVtYmVyIG9mIGNvbm5lY3Rp
bmcgY2xpZW50DQojICAgICAgICAgICBOYW1lIG9mIGNvbm5lY3RpbmcgY2xp
ZW50DQojICAgICAgICAgICBQb3J0IG51bWJlciBjbGllbnQgY29ubmVjdHMg
ZnJvbQ0KIw0KIyBPdXRwdXQgOiAgQm9vbGVhbiBhY2NlcHRpbmcgY29ubmVj
dGlvbiBvciBub3QNCiMNCnN1YiB2YWxpZGF0ZV9jb25uZWN0aW9uDQp7DQog
ICAgbXkgKCRpcCwgJG5hbWUsICRwb3J0KSA9IEBfOw0KICAgIG15ICgkY2hl
Y2ssICR2YWxpZF9jbGllbnQsICR2YWxpZF9wb3J0KTsNCg0KICAgIGZvcmVh
Y2ggJGNoZWNrICggQHZhbGlkX2NsaWVudHMgKQ0KICAgIHsNCiAgICAgICAg
JGlwID1+IC8kY2hlY2svICYmIGRvIHsgJHZhbGlkX2NsaWVudCA9IDE7IGxh
c3Q7IH07DQogICAgICAgICRuYW1lID1+IC8kY2hlY2svICYmIGRvIHsgJHZh
bGlkX2NsaWVudCA9IDE7IGxhc3Q7IH07DQogICAgfQ0KDQogICAgJG9wdF9k
ICYmIHByaW50IFNUREVSUiAiQ2xpZW50IGNoZWNrIHJldHVybmVkICR2YWxp
ZF9jbGllbnRcbiI7DQoNCiAgICBpZiAoICR2YWxpZF9jbGllbnQgKQ0KICAg
IHsNCglmb3JlYWNoICRjaGVjayAoIEB2YWxpZF9wb3J0cyApDQogICAgICAg
IHsNCiAgICAgICAgICAgICRwb3J0ID1+IC8kY2hlY2svICYmIGRvIHsgJHZh
bGlkX3BvcnQgPSAxOyBsYXN0OyB9Ow0KCX0NCiAgICB9DQoNCiAgICAkb3B0
X2QgJiYgcHJpbnQgU1RERVJSICJQb3J0IGNoZWNrIHJldHVybmVkICR2YWxp
ZF9wb3J0XG4iOw0KDQogICAgcmV0dXJuICR2YWxpZF9jbGllbnQgJiYgJHZh
bGlkX3BvcnQ7DQp9DQoNCiMgVGhlIGludGVudGlvbiBoZXJlIGlzIHRvIGFs
bG93IHBlb3BsZSB0byBlYXNpbHkgbW9kaWZ5IHRoZSANCiMgZm9ybWF0IG9m
IHRoZSBtZXNzYWdlIGJlaW5nIGRpc3BsYXllZC4NCiMNCiMgRGVmYXVsdCBs
b29rIDogIldlZCBPY3QgIDggMTA6Mzc6MTIgW21hY2hpbmVdIE1lc3NhZ2Vc
biINCiMNCiMgSW5wdXQgIDogIEZRRE4gb2YgY29ubmVjdGluZyBtYWNoaW5l
DQojICAgICAgICAgICBUaGUgYWN0dWFsIG1lc3NhZ2UNCiMNCiMgT3V0cHV0
IDogIFRoZSBzdHJpbmcgdG8gZGlzcGxheQ0KIw0Kc3ViIGZvcm1hdF9tZXNz
YWdlDQp7DQogICAgbXkgKCRtYWNoaW5lLCAkbWVzc2FnZSkgPSBAXzsNCiAg
ICBteSAoJGxpbmUsICRyZXMsICRwcmVzdHJpbmcsICRibGFua3N0cmluZyk7
DQoNCiAgICAjIFN0cmlwIGRvbWFpbiBuYW1lLCBpZiBhbnkNCiAgICAkbWFj
aGluZSA9fiBzL1wuLiokLy87DQoNCiAgICAkcHJlc3RyaW5nID0gc3Vic3Ry
KGxvY2FsdGltZSh0aW1lKCkpLCAwLCAxOSkuIiBbJG1hY2hpbmVdICI7DQog
ICAgJGJsYW5rc3RyaW5nID0gIiAiIHggbGVuZ3RoKCRwcmVzdHJpbmcpOw0K
DQogICAgZm9yZWFjaCAkbGluZSAoc3BsaXQoL1xyP1xuLywgJG1lc3NhZ2Up
KQ0KICAgIHsNCgkkcmVzIC49ICgkcmVzPyRibGFua3N0cmluZzokcHJlc3Ry
aW5nKS4kbGluZS4iXG4iOw0KICAgIH0NCg0KICAgIHJldHVybiAkcmVzOw0K
fQ0KDQojIERpc3BsYXlzIGEgc2ltcGxlIHBvcHVwIGJveCBjb250YWluaW5n
IHRoZSBtZXNzYWdlIGdpdmVuIGFzIGFyZ3VtZW50DQojDQojIElucHV0IDog
TWVzc2FnZSB0byBkaXNwbGF5DQojDQpzdWIgZGlzcGxheV9tZXNzYWdlDQp7
DQogICAgbXkgKCRtZXNzYWdlKSA9IEBfOw0KDQogICAgaWYgKCAkc2luZ2xl
ICkNCiAgICB7DQoJJFRFWFQtPmRlbGV0ZSgnMS4wJywgJ2VuZCcpOw0KCSRU
RVhULT5pbnNlcnQoJzEuMCcsICRtZXNzYWdlKTsNCiAgICB9DQogICAgZWxz
ZQ0KICAgIHsNCgkkVEVYVC0+aW5zZXJ0KCdlbmQnLCAkbWVzc2FnZSk7DQog
ICAgfQ0KICAgICRURVhULT5zZWUoJ2VuZCcpOw0KfQ0KDQojIFNpbXBseSBy
ZXR1cm5zIHRoZSBpbml0aWFsICdSZWFkeScgc3RyaW5nLiBVc2VkIGluIHNl
dmVyYWwgcGxhY2VzLg0KIw0Kc3ViIGNsZWFyX21lc3NhZ2UNCnsNCiAgICBy
ZXR1cm4gIiRwcm9nbmFtZSAkdmVyc2lvbiA6IFJlYWR5IGFuZCBsaXN0ZW5p
bmcgdG8gcG9ydCAkcG9ydCAoTW9kZTogIi4NCiAgICAgICAgICAgKCRzaW5n
bGU/InNpbmdsZSI6ImNvbnRpbnVvdXMiKS4iKVxuIjsNCn0NCg0KIyBUaGlz
IGZ1bmN0aW9uIGRvZXMgYWxsIHRoZSBUayBzdHVmZi4gSXQgY3JlYXRlcyBh
IHdpbmRvdywgYSBjb3VwbGUgb2YNCiMgZnJhbWVzIHRvIGFsbG93IGJldHRl
ciBsYXlvdXQgYW5kIHRoZSB2aXNpYmxlIHdpZGdldHMuIA0KIw0Kc3ViIHNl
dHVwX3dpbmRvdw0Kew0KICAgICRUT1AgPSBuZXcgTWFpbldpbmRvdzsNCg0K
ICAgICRUT1AtPnRpdGxlKCRwcm9nbmFtZSk7DQogICAgJFRPUC0+aWNvbm5h
bWUoJHByb2duYW1lKTsNCg0KICAgIG15ICRmcmFtZTEgPSAkVE9QLT5GcmFt
ZSgpOw0KICAgICANCiAgICAkVEVYVCA9ICRmcmFtZTEtPlJPVGV4dCggLWZv
bnQgPT4gJ2ZpeGVkJywNCgkJCSAgICAgLXdyYXAgPT4gJ25vbmUnLA0KCQkJ
ICAgICAtd2lkdGggPT4gODAsDQoJCQkgICAgIC1oZWlnaHQgPT4gMTAsDQoJ
CSAgICAgICAgICAgICAtYm9yZGVyd2lkdGggPT4gMik7DQogICAgbXkgJHNj
cm9sbGJhcjEgPSAkZnJhbWUxLT5TY3JvbGxiYXIoLWNvbW1hbmQgPT4gWyd5
dmlldycsICRURVhUXSk7DQogICAgbXkgJHNjcm9sbGJhcjIgPSAkZnJhbWUx
LT5TY3JvbGxiYXIoLWNvbW1hbmQgPT4gWyd4dmlldycsICRURVhUXSwNCgkJ
CQkJLW9yaWVudCAgPT4gJ2hvcml6b250YWwnKTsNCiAgICAkVEVYVC0+Y29u
ZmlndXJlKCd5c2Nyb2xsY29tbWFuZCcgPT4gWydzZXQnLCAkc2Nyb2xsYmFy
MV0pOw0KICAgICRURVhULT5jb25maWd1cmUoJ3hzY3JvbGxjb21tYW5kJyA9
PiBbJ3NldCcsICRzY3JvbGxiYXIyXSk7DQoNCg0KICAgICMgV2UnbGwgY2Vu
dGVyIHRoZSBidXR0b25zIGp1c3QgdG8gYmUgZnJpZW5kbHkNCiAgICBteSAk
ZnJhbWUyID0gJFRPUC0+RnJhbWUoKTsNCiAgICBteSAkYnV0dG9uMSA9ICRm
cmFtZTItPkJ1dHRvbigtdGV4dCA9PiAnUXVpdCcsDQogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAtY29tbWFuZCA9PiBzdWJ7ZXhpdH0pOw0K
ICAgIG15ICRidXR0b24yID0gJGZyYW1lMi0+QnV0dG9uKC10ZXh0ID0+ICdT
aW5nbGUnLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgLWNvbW1hbmQg
PT4gWyBzdWJ7ICRzaW5nbGUgPSAxOyBkaXNwbGF5X21lc3NhZ2UoJmNsZWFy
X21lc3NhZ2UpOyB9IF0pOw0KICAgIG15ICRidXR0b24zID0gJGZyYW1lMi0+
QnV0dG9uKC10ZXh0ID0+ICdDb250aW51b3VzJywNCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgIC1jb21tYW5kID0+IFsgc3VieyAkc2luZ2xlID0gMDsg
ZGlzcGxheV9tZXNzYWdlKCZjbGVhcl9tZXNzYWdlKTsgfSBdKTsNCg0KICAg
IGRpc3BsYXlfbWVzc2FnZShjbGVhcl9tZXNzYWdlKCkpOw0KDQogICAgIyBQ
YWNrJ2VtLCByYWNrJ2VtIGFuZCBzdGFjaydlbQ0KICAgICMNCiAgICAjIFRv
IG1vdmUgdmVydGljYWwgc2Nyb2xsYmFyICoqKioqIENoYW5nZSAncmlnaHQn
IHRvICdsZWZ0Jw0KICAgICRzY3JvbGxiYXIxLT5wYWNrKC1zaWRlID0+ICAn
cmlnaHQnLCAtZmlsbCA9PiAneScpOw0KICAgICRzY3JvbGxiYXIyLT5wYWNr
KC1zaWRlID0+ICdib3R0b20nLCAtZmlsbCA9PiAneCcpOw0KICAgICRURVhU
LT5wYWNrKC1wYWR4ID0+ICcybScsIC1wYWR5ID0+ICcybScsIC1leHBhbmQg
PT4gMSwgLWZpbGwgPT4gJ2JvdGgnKTsNCiAgICAkZnJhbWUxLT5wYWNrKC1l
eHBhbmQgPT4gMSwtZmlsbCA9PiAnYm90aCcpOw0KDQogICAgJGJ1dHRvbjEt
PnBhY2soLXNpZGUgPT4gJ2xlZnQnKTsNCiAgICAkYnV0dG9uMi0+cGFjaygt
c2lkZSA9PiAnbGVmdCcpOw0KICAgICRidXR0b24zLT5wYWNrKC1zaWRlID0+
ICdsZWZ0Jyk7DQogICAgJGZyYW1lMi0+cGFjaygpOw0KfQ0KDQojIFByaW50
cyB1c2FnZQ0KIw0Kc3ViIHVzYWdlDQp7DQogICAgcHJpbnQgIiQwIFstdV0g
Wy1kXSBbLW0gPHNpbmdsZXxjb250W2ludW91c10+XSBbLXMgPHNlcnZlcjEs
Li4uPl1cbiI7DQogICAgcHJpbnQgIiAiIHggbGVuZ3RoKCQwKSAuICIgWy1w
IDxwb3J0MSwuLi4+XSBbLVAgPHBvcnQ+XVxuIjsNCiAgICBwcmludCAiXHQt
dVx0XHRcdFVzYWdlXG4iOw0KICAgIHByaW50ICJcdC1kXHRcdFx0RGVidWcg
b3V0cHV0IG9uIFNUREVSUlxuIjsNCiAgICBwcmludCAiXHQtbSA8c2luZ2xl
fGNvbnQ+XHRTaW5nbGUgb3IgY29udGlub3VzIG1lc3NhZ2VzIChEZWZhdWx0
ICIuDQogICAgICAgICAgKCRzaW5nbGU/InNpbmdsZSI6ImNvbnRpbm91cyIp
LiIpXG4iOw0KICAgIHByaW50ICJcdC1zIDxzZXJ2ZXIxLC4uLj5cdFJlZ2V4
cHMgbWF0Y2hpbmcgdmFsaWQgY2xpZW50IGhvc3RzXG4iOw0KICAgIHByaW50
ICJcdC1wIDxwb3J0MSwuLi4+XHRcdFJlZ2V4cHMgbWF0Y2hpbmcgdmFsaWQg
Y2xpZW50IHBvcnRzXG4iOw0KICAgIHByaW50ICJcdC1QIDxwb3J0Plx0XHRQ
b3J0IG51bWJlciB0byBjb25uZWN0IHRvIChEZWZhdWx0ICRwb3J0KVxuIjsN
CiAgICBwcmludCAiXHQtciA8cmVmcmVzaCByYXRlPlx0U2Vjb25kcyB0byB3
YWl0IGluIHNlbGVjdCAoRGVmYXVsdCAkcmVmcmVzaCBzZWMpXG4iOw0KfQ0K

--2016706854-824023566-876346061=:26316--

