<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<!DOCTYPE bugzilla SYSTEM "https://bugs.webkit.org/page.cgi?id=bugzilla.dtd">

<bugzilla version="5.0.4.1"
          urlbase="https://bugs.webkit.org/"
          
          maintainer="admin@webkit.org"
>

    <bug>
          <bug_id>77807</bug_id>
          
          <creation_ts>2012-02-04 01:30:35 -0800</creation_ts>
          <short_desc>test-webkitpy&apos;s logging should be closer to new-run-webkit-tests</short_desc>
          <delta_ts>2012-06-26 19:52:14 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Tools / Tests</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>WONTFIX</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>NRWT</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>76022</blocked>
    
    <blocked>78185</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Dirk Pranke">dpranke</reporter>
          <assigned_to name="Dirk Pranke">dpranke</assigned_to>
          <cc>abarth</cc>
    
    <cc>ojan</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>549395</commentid>
    <comment_count>0</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2012-02-04 01:30:35 -0800</bug_when>
    <thetext>test-webkitpy&apos;s logging should be closer to new-run-webkit-tests</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>549396</commentid>
    <comment_count>1</comment_count>
      <attachid>125483</attachid>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2012-02-04 01:30:48 -0800</bug_when>
    <thetext>Created attachment 125483
work in progress</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>549397</commentid>
    <comment_count>2</comment_count>
      <attachid>125484</attachid>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2012-02-04 01:32:41 -0800</bug_when>
    <thetext>Created attachment 125484
work in progress</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>549409</commentid>
    <comment_count>3</comment_count>
      <attachid>125486</attachid>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2012-02-04 02:06:27 -0800</bug_when>
    <thetext>Created attachment 125486
attachment 125484 from bug 77807 merged to HEAD, output tweaked</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>549414</commentid>
    <comment_count>4</comment_count>
      <attachid>125487</attachid>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2012-02-04 02:16:24 -0800</bug_when>
    <thetext>Created attachment 125487
more tweaking of the output</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>658278</commentid>
    <comment_count>5</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2012-06-26 19:52:14 -0700</bug_when>
    <thetext>closing ... I will file new bugs as I have patches ready for review. The roll-up is still in bug 76022.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>125483</attachid>
            <date>2012-02-04 01:30:48 -0800</date>
            <delta_ts>2012-02-04 01:32:02 -0800</delta_ts>
            <desc>work in progress</desc>
            <filename>bug-77807-20120204013046.patch</filename>
            <type>text/plain</type>
            <size>28645</size>
            <attacher name="Dirk Pranke">dpranke</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA2NzIxCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3Rl
c3Qtd2Via2l0cHkgYi9Ub29scy9TY3JpcHRzL3Rlc3Qtd2Via2l0cHkKaW5kZXggNDI5OGZlYWUy
MzczYTdiOGEzN2M0MGZiOWM4ZDA1NzQ2NWJkOTU2YS4uNmMwZjkxZjM5MTdlZGFiMjMzZTdlNGZi
NjYwNGZkZjJkYjg1YWY4MyAxMDA3NTUKLS0tIGEvVG9vbHMvU2NyaXB0cy90ZXN0LXdlYmtpdHB5
CisrKyBiL1Rvb2xzL1NjcmlwdHMvdGVzdC13ZWJraXRweQpAQCAtMzcsMTggKzM3LDIzIEBAIGlt
cG9ydCBzeXMKIGZyb20gd2Via2l0cHkuY29tbW9uIGltcG9ydCB2ZXJzaW9uX2NoZWNrCiBmcm9t
IHdlYmtpdHB5LnRlc3QgaW1wb3J0IG1haW4KIAotCi1fbG9nID0gbG9nZ2luZy5nZXRMb2dnZXIo
InRlc3Qtd2Via2l0cHkiKQotCitfbG9nID0gbG9nZ2luZy5nZXRMb2dnZXIoX19uYW1lX18pCiAK
IGlmIF9fbmFtZV9fID09ICJfX21haW5fXyI6CiAgICAgd2Via2l0X3Jvb3QgPSBvcy5wYXRoLmRp
cm5hbWUob3MucGF0aC5kaXJuYW1lKG9zLnBhdGguZGlybmFtZShvcy5wYXRoLmFic3BhdGgoX19m
aWxlX18pKSkpCiAKLSAgICAjIEZJWE1FOiBXZSBzaG91bGQgcHJvYmFibHkgdGVzdCBlYWNoIHBh
Y2thZ2Ugc2VwYXJhdGVseSB0byBhdm9pZCBuYW1pbmcgY29uZmxpY3RzLgotICAgIGRpcnMgPSBb
Ci0gICAgICAgIG9zLnBhdGguam9pbih3ZWJraXRfcm9vdCwgJ1Rvb2xzJywgJ1NjcmlwdHMnKSwK
LSAgICAgICAgb3MucGF0aC5qb2luKHdlYmtpdF9yb290LCAnU291cmNlJywgJ1dlYktpdDInLCAn
U2NyaXB0cycpLAotICAgIF0KKyAgICB0ZXN0ZXIgPSBtYWluLlRlc3RlcihzeXMuc3RkZXJyKQor
ICAgIG9wdGlvbnMsIGFyZ3MgPSB0ZXN0ZXIucGFyc2VfYXJncyhzeXMuYXJndlsxOl0pCisgICAg
dGVzdGVyLmNvbmZpZ3VyZShvcHRpb25zKQorICAgIHRlc3Rlci5jb25maWd1cmVfbG9nZ2luZygp
CisKKyAgICB0aGlyZHBhcnR5ID0gb3MucGF0aC5qb2luKCd3ZWJraXRweScsICd0aGlyZHBhcnR5
JykKKyAgICB0ZXN0ZXIuYWRkX3RyZWUob3MucGF0aC5qb2luKHdlYmtpdF9yb290LCAnVG9vbHMn
LCAnU2NyaXB0cycpLCAnd2Via2l0cHknLAorICAgICAgICAgICAgICAgICAgICBbb3MucGF0aC5q
b2luKHRoaXJkcGFydHksICdhdXRvaW5zdGFsbGVkJyksCisgICAgICAgICAgICAgICAgICAgICBv
cy5wYXRoLmpvaW4odGhpcmRwYXJ0eSwgJ3NpbXBsZWpzb24nKSwKKyAgICAgICAgICAgICAgICAg
ICAgIG9zLnBhdGguam9pbih0aGlyZHBhcnR5LCAnQmVhdXRpZnVsU291cC5weScpLAorICAgICAg
ICAgICAgICAgICAgICAgb3MucGF0aC5qb2luKHRoaXJkcGFydHksICdtb2NrLnB5JyldKQorICAg
IHRlc3Rlci5hZGRfdHJlZShvcy5wYXRoLmpvaW4od2Via2l0X3Jvb3QsICdTb3VyY2UnLCAnV2Vi
S2l0MicsICdTY3JpcHRzJyksICd3ZWJraXQyJykKIAogICAgICMgRklYTUU6IERvIHdlIG5lZWQg
dG8gYmUgYWJsZSB0byB0ZXN0IFF1ZXVlU3RhdHVzU2VydmVyIG9uIFdpbmRvd3MgYXMgd2VsbD8K
ICAgICBhcHBlbmdpbmVfc2RrX3BhdGggPSAnL3Vzci9sb2NhbC9nb29nbGVfYXBwZW5naW5lJwpA
QCAtNTksMTcgKzY0LDcgQEAgaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKICAgICAgICAgZnJv
bSBnb29nbGUuYXBwZW5naW5lLmRpc3QgaW1wb3J0IHVzZV9saWJyYXJ5CiAgICAgICAgIHVzZV9s
aWJyYXJ5KCdkamFuZ28nLCAnMS4yJykKICAgICAgICAgZGV2X2FwcHNlcnZlci5maXhfc3lzX3Bh
dGgoKQotICAgICAgICBkaXJzLmFwcGVuZChvcy5wYXRoLmpvaW4od2Via2l0X3Jvb3QsICdUb29s
cycsICdRdWV1ZVN0YXR1c1NlcnZlcicpKQorICAgICAgICB0ZXN0ZXIuYWRkX3RyZWUob3MucGF0
aC5qb2luKHdlYmtpdF9yb290LCAnVG9vbHMnLCAnUXVldWVTdGF0dXNTZXJ2ZXInKSwgJycpCiAg
ICAgZWxzZToKICAgICAgICAgX2xvZy5pbmZvKCdTa2lwcGluZyBRdWV1ZVN0YXR1c1NlcnZlciB0
ZXN0czsgdGhlIEdvb2dsZSBBcHBFbmdpbmUgUHl0aG9uIFNESyBpcyBub3QgaW5zdGFsbGVkLicp
Ci0KLSAgICBtYWluLlRlc3Rlci5jbGVhbl9wYWNrYWdlcyhkaXJzKQotCi0gICAgdGVzdGVyID0g
bWFpbi5UZXN0ZXIoKQotICAgIG9wdGlvbnMsIGFyZ3MgPSB0ZXN0ZXIucGFyc2VfYXJncyhzeXMu
YXJndikKLSAgICB0ZXN0ZXIuY29uZmlndXJlKG9wdGlvbnMpCi0KLSAgICAjIE1ha2Ugc3VyZSBQ
WVRIT05QQVRIIGlzIHNldCB1cCBjb3JyZWN0bHkgc28gdGhhdCBhbGwgb2YgdGhlIGltcG9ydHMg
d2lsbCB3b3JrLgotICAgIHN5cy5wYXRoID0gW2QgZm9yIGQgaW4gZGlycyBpZiBkIG5vdCBpbiBz
eXMucGF0aF0gKyBzeXMucGF0aAotCi0gICAgc3lzLmV4aXQobm90IHRlc3Rlci5ydW4oZGlycywg
YXJncykpCisgICAgc3lzLmV4aXQobm90IHRlc3Rlci5ydW4oYXJncykpCmRpZmYgLS1naXQgYS9U
b29scy9TY3JpcHRzL3dlYmtpdHB5L3Rlc3QvbWFpbi5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0
cHkvdGVzdC9tYWluLnB5CmluZGV4IDc4YzM5ZGI1NTc5NTc2YmZmN2UyYjM3NzMzODkyNWFhZGE5
OWVlY2IuLmFmNTE1M2YyZGI3YjlhY2FmZWM2YzAwNWJkMTcyNzE4N2QxZmI3NmEgMTAwNjQ0Ci0t
LSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdGVzdC9tYWluLnB5CisrKyBiL1Rvb2xzL1Njcmlw
dHMvd2Via2l0cHkvdGVzdC9tYWluLnB5CkBAIC0xLDMgKzEsNCBAQAorIyBDb3B5cmlnaHQgKEMp
IDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICMgQ29weXJpZ2h0IChDKSAy
MDEwIENocmlzIEplcmRvbmVrIChjamVyZG9uZWtAd2Via2l0Lm9yZykKICMKICMgUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CkBAIC0yNSw4ICsyNiwxMSBAQAogaW1wb3J0IGxvZ2dpbmcKIGltcG9ydCBvcHRwYXJzZQogaW1w
b3J0IG9zCitpbXBvcnQgcGRiCitpbXBvcnQgcmUKIGltcG9ydCBTdHJpbmdJTwogaW1wb3J0IHN5
cworaW1wb3J0IHRpbWUKIGltcG9ydCB0cmFjZWJhY2sKIGltcG9ydCB1bml0dGVzdAogCkBAIC0z
NSw3MiArMzksMTE1IEBAIGltcG9ydCB1bml0dGVzdAogX2xvZyA9IGxvZ2dpbmcuZ2V0TG9nZ2Vy
KF9fbmFtZV9fKQogCiAKLWNsYXNzIFRlc3RlcihvYmplY3QpOgotICAgIEBzdGF0aWNtZXRob2QK
LSAgICBkZWYgY2xlYW5fcGFja2FnZXMoZGlycyk6Ci0gICAgICAgICIiIkRlbGV0ZSBhbGwgLnB5
YyBmaWxlcyB1bmRlciBkaXJzIHRoYXQgaGF2ZSBubyAucHkgZmlsZS4iIiIKLSAgICAgICAgZm9y
IGRpcl90b19jbGVhbiBpbiBkaXJzOgotICAgICAgICAgICAgX2xvZy5kZWJ1ZygiQ2xlYW5pbmcg
b3JwaGFuZWQgKi5weWMgZmlsZXMgZnJvbTogJXMiICUgZGlyX3RvX2NsZWFuKQotICAgICAgICAg
ICAgZm9yIGRpcl9wYXRoLCBkaXJfbmFtZXMsIGZpbGVfbmFtZXMgaW4gb3Mud2FsayhkaXJfdG9f
Y2xlYW4pOgotICAgICAgICAgICAgICAgIGZvciBmaWxlX25hbWUgaW4gZmlsZV9uYW1lczoKLSAg
ICAgICAgICAgICAgICAgICAgaWYgZmlsZV9uYW1lLmVuZHN3aXRoKCIucHljIikgYW5kIGZpbGVf
bmFtZVs6LTFdIG5vdCBpbiBmaWxlX25hbWVzOgotICAgICAgICAgICAgICAgICAgICAgICAgZmls
ZV9wYXRoID0gb3MucGF0aC5qb2luKGRpcl9wYXRoLCBmaWxlX25hbWUpCi0gICAgICAgICAgICAg
ICAgICAgICAgICBfbG9nLmluZm8oIkRlbGV0aW5nIG9ycGhhbiAqLnB5YyBmaWxlOiAlcyIgJSBm
aWxlX3BhdGgpCi0gICAgICAgICAgICAgICAgICAgICAgICBvcy5yZW1vdmUoZmlsZV9wYXRoKQor
Y2xhc3MgVGVzdFRyZWUob2JqZWN0KToKKyAgICBkZWYgX19pbml0X18oc2VsZiwgdG9wX2RpcmVj
dG9yeSwgc3RhcnRpbmdfc3ViZGlyZWN0b3J5LCBpZ25vcmVfbGlzdCk6CisgICAgICAgIHNlbGYu
dG9wX2RpcmVjdG9yeSA9IG9zLnBhdGgucmVhbHBhdGgodG9wX2RpcmVjdG9yeSkKKyAgICAgICAg
c2VsZi5zZWFyY2hfZGlyZWN0b3J5ID0gc2VsZi50b3BfZGlyZWN0b3J5CisgICAgICAgIHNlbGYu
aWdub3JlX2xpc3QgPSBbb3MucGF0aC5qb2luKHNlbGYudG9wX2RpcmVjdG9yeSwgeCkgZm9yIHgg
aW4gaWdub3JlX2xpc3RdCisgICAgICAgIHNlbGYudG9wX3BhY2thZ2UgPSAnJworICAgICAgICBp
ZiBzdGFydGluZ19zdWJkaXJlY3Rvcnk6CisgICAgICAgICAgICBzZWxmLnRvcF9wYWNrYWdlID0g
c3RhcnRpbmdfc3ViZGlyZWN0b3J5LnJlcGxhY2Uob3Muc2VwLCAnLicpICsgJy4nCisgICAgICAg
ICAgICBzZWxmLnNlYXJjaF9kaXJlY3RvcnkgPSBvcy5wYXRoLmpvaW4oc2VsZi50b3BfZGlyZWN0
b3J5LCBzdGFydGluZ19zdWJkaXJlY3RvcnkpCisKKyAgICBkZWYgY2xlYW4oc2VsZik6CisgICAg
ICAgICIiIkRlbGV0ZSBhbGwgLnB5YyBmaWxlcyBpbiB0aGUgdHJlZSB0aGF0IGhhdmUgbm8gbWF0
Y2hpbmcgLnB5IGZpbGUuIiIiCisgICAgICAgIF9sb2cuZGVidWcoIkNsZWFuaW5nIG9ycGhhbmVk
ICoucHljIGZpbGVzIGZyb206ICVzIiAlIHNlbGYuc2VhcmNoX2RpcmVjdG9yeSkKKyAgICAgICAg
Zm9yIGRpcl9wYXRoLCBkaXJfbmFtZXMsIGZpbGVfbmFtZXMgaW4gb3Mud2FsayhzZWxmLnNlYXJj
aF9kaXJlY3RvcnkpOgorICAgICAgICAgICAgIyBGSVhNRTogU2hvdWxkIHdlIGJlIGNsZWFuaW5n
IHRoZSBpZ25vcmVkIHN1YmRpcmVjdG9yaWVzIGFzIHdlbGw/CisgICAgICAgICAgICBmb3IgZmls
ZV9uYW1lIGluIGZpbGVfbmFtZXM6CisgICAgICAgICAgICAgICAgaWYgZmlsZV9uYW1lLmVuZHN3
aXRoKCIucHljIikgYW5kIGZpbGVfbmFtZVs6LTFdIG5vdCBpbiBmaWxlX25hbWVzOgorICAgICAg
ICAgICAgICAgICAgICBmaWxlX3BhdGggPSBvcy5wYXRoLmpvaW4oZGlyX3BhdGgsIGZpbGVfbmFt
ZSkKKyAgICAgICAgICAgICAgICAgICAgX2xvZy5pbmZvKCJEZWxldGluZyBvcnBoYW4gKi5weWMg
ZmlsZTogJXMiICUgZmlsZV9wYXRoKQorICAgICAgICAgICAgICAgICAgICBvcy5yZW1vdmUoZmls
ZV9wYXRoKQorCisgICAgZGVmIGZpbmRfbW9kdWxlcyhzZWxmLCBkaXJfdG9fc2VhcmNoLCBzdWZm
aXhlcyk6CisgICAgICAgIG1vZHVsZXMgPSBbXQorICAgICAgICBmb3IgZGlyX3BhdGgsIF8sIGZp
bGVuYW1lcyBpbiBvcy53YWxrKGRpcl90b19zZWFyY2gpOgorICAgICAgICAgICAgZGlyX3BhdGgg
PSBvcy5wYXRoLmpvaW4oZGlyX3BhdGgsICcnKQorICAgICAgICAgICAgcGFja2FnZSA9IGRpcl9w
YXRoLnJlcGxhY2Uoc2VsZi50b3BfZGlyZWN0b3J5ICsgb3Muc2VwLCAnJykucmVwbGFjZShvcy5z
ZXAsICcuJykKKyAgICAgICAgICAgIGZvciBmIGluIGZpbGVuYW1lczoKKyAgICAgICAgICAgICAg
ICBpZiBhbnkoZi5lbmRzd2l0aChzdWZmaXgpIGZvciBzdWZmaXggaW4gc3VmZml4ZXMpOgorICAg
ICAgICAgICAgICAgICAgICBtb2R1bGVzLmFwcGVuZChwYWNrYWdlICsgZi5yZXBsYWNlKCcucHkn
LCAnJykpCisgICAgICAgIHJldHVybiBtb2R1bGVzCiAKLSAgICBkZWYgX19pbml0X18oc2VsZik6
CisKK2NsYXNzIExvYWRlckVycm9yKEV4Y2VwdGlvbik6CisgICAgcGFzcworCisKK2NsYXNzIFRl
c3RlcihvYmplY3QpOgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBzdGRlcnIpOgogICAgICAgICBz
ZWxmLl92ZXJib3NpdHkgPSAxCisgICAgICAgIHNlbGYudHJlZXMgPSBbXQorICAgICAgICBzZWxm
LmxvYWRlciA9IE5vbmUKKyAgICAgICAgc2VsZi5ydW5uZXIgPSBOb25lCisgICAgICAgIHNlbGYu
X2xvZ19sZXZlbCA9IGxvZ2dpbmcuSU5GTworICAgICAgICBzZWxmLnN0ZGVyciA9IHN0ZGVycgog
Ci0gICAgZGVmIHBhcnNlX2FyZ3Moc2VsZiwgYXJndik6CisgICAgZGVmIHBhcnNlX2FyZ3Moc2Vs
ZiwgYXJndj1Ob25lKToKICAgICAgICAgcGFyc2VyID0gb3B0cGFyc2UuT3B0aW9uUGFyc2VyKHVz
YWdlPSd1c2FnZTogJXByb2cgW29wdGlvbnNdIFthcmdzLi4uXScpCiAgICAgICAgIHBhcnNlci5h
ZGRfb3B0aW9uKCctYScsICctLWFsbCcsIGFjdGlvbj0nc3RvcmVfdHJ1ZScsIGRlZmF1bHQ9RmFs
c2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlbHA9J3J1biBhbGwgdGhlIHRlc3RzJyks
CiAgICAgICAgIHBhcnNlci5hZGRfb3B0aW9uKCctYycsICctLWNvdmVyYWdlJywgYWN0aW9uPSdz
dG9yZV90cnVlJywgZGVmYXVsdD1GYWxzZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgaGVs
cD0nZ2VuZXJhdGUgY29kZSBjb3ZlcmFnZSBpbmZvIChyZXF1aXJlcyBodHRwOi8vcHlwaS5weXRo
b24ub3JnL3B5cGkvY292ZXJhZ2UpJyksCisgICAgICAgICAgICAgICAgICAgICAgICAgIGhlbHA9
J2dlbmVyYXRlIGNvZGUgY292ZXJhZ2UgcmVwb3J0IChyZXF1aXJlcyBodHRwOi8vcHlwaS5weXRo
b24ub3JnL3B5cGkvY292ZXJhZ2UpJyksCiAgICAgICAgIHBhcnNlci5hZGRfb3B0aW9uKCctcScs
ICctLXF1aWV0JywgYWN0aW9uPSdzdG9yZV90cnVlJywgZGVmYXVsdD1GYWxzZSwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgaGVscD0ncnVuIHF1aWV0bHkgKGVycm9ycywgd2FybmluZ3MsIGFu
ZCBwcm9ncmVzcyBvbmx5KScpLAogICAgICAgICBwYXJzZXIuYWRkX29wdGlvbignLXMnLCAnLS1z
aWxlbnQnLCBhY3Rpb249J3N0b3JlX3RydWUnLCBkZWZhdWx0PUZhbHNlLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICBoZWxwPSdydW4gc2lsZW50bHkgKGVycm9ycyBhbmQgd2FybmluZ3Mgb25s
eSknKSwKKyAgICAgICAgcGFyc2VyLmFkZF9vcHRpb24oJy10JywgJy0tdGltaW5nJywgYWN0aW9u
PSdzdG9yZV90cnVlJywgZGVmYXVsdD1GYWxzZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
aGVscD0nc2hvdyBob3cgbG9uZyBlYWNoIHRlc3QgdGFrZXMnKSwKICAgICAgICAgcGFyc2VyLmFk
ZF9vcHRpb24oJy14JywgJy0teG1sJywgYWN0aW9uPSdzdG9yZV90cnVlJywgZGVmYXVsdD1GYWxz
ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVscD0nb3V0cHV0IHhVbml0LXN0eWxlIFhN
TCBvdXRwdXQnKQogICAgICAgICBwYXJzZXIuYWRkX29wdGlvbignLXYnLCAnLS12ZXJib3NlJywg
YWN0aW9uPSdjb3VudCcsIGRlZmF1bHQ9MCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVs
cD0ndmVyYm9zZSBvdXRwdXQgKHNwZWNpZnkgb25jZSBmb3IgaW5kaXZpZHVhbCB0ZXN0IHJlc3Vs
dHMsIHR3aWNlIGZvciBkZWJ1ZyBtZXNzYWdlcyknKQorCisgICAgICAgICMgRklYTUU6IFdlIG5l
ZWQgdG8gdW5pZnkgdGhlc2UgdHdvIHR5cGVzIG9mIHRlc3RzIGFuZCBtYWtlIHRoZW0gY29uc2lz
dGVudC4KICAgICAgICAgcGFyc2VyLmFkZF9vcHRpb24oJy0tc2tpcC1pbnRlZ3JhdGlvbnRlc3Rz
JywgYWN0aW9uPSdzdG9yZV90cnVlJywgZGVmYXVsdD1GYWxzZSwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgaGVscD0nZG8gbm90IHJ1biB0aGUgaW50ZWdyYXRpb24gdGVzdHMnKQorICAgICAg
ICBwYXJzZXIuYWRkX29wdGlvbignLWknLCAnLS1ydW4tcmVhbC1pbnRlZ3JhdGlvbnRlc3RzJywg
YWN0aW9uPSdzdG9yZV90cnVlJywgZGVmYXVsdD1GYWxzZSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgaGVscD0nZG8gbm90IHJ1biB0aGUgcmVhbCBpbnRlZ3JhdGlvbiB0ZXN0cycpCiAKICAg
ICAgICAgcGFyc2VyLmVwaWxvZyA9ICgnW2FyZ3MuLi5dIGlzIGFuIG9wdGlvbmFsIGxpc3Qgb2Yg
bW9kdWxlcywgdGVzdF9jbGFzc2VzLCBvciBpbmRpdmlkdWFsIHRlc3RzLiAnCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgJ0lmIG5vIGFyZ3MgYXJlIGdpdmVuLCBhbGwgdGhlIHRlc3RzIHdpbGwg
YmUgcnVuLicpCiAKLSAgICAgICAgc2VsZi5wcm9nTmFtZSA9IG9zLnBhdGguYmFzZW5hbWUoYXJn
dlswXSkKLSAgICAgICAgcmV0dXJuIHBhcnNlci5wYXJzZV9hcmdzKGFyZ3ZbMTpdKQorICAgICAg
ICByZXR1cm4gcGFyc2VyLnBhcnNlX2FyZ3MoYXJndikKIAogICAgIGRlZiBjb25maWd1cmUoc2Vs
Ziwgb3B0aW9ucyk6CiAgICAgICAgIHNlbGYuX29wdGlvbnMgPSBvcHRpb25zCiAKICAgICAgICAg
aWYgb3B0aW9ucy5zaWxlbnQ6CiAgICAgICAgICAgICBzZWxmLl92ZXJib3NpdHkgPSAwCi0gICAg
ICAgICAgICBzZWxmLl9jb25maWd1cmVfbG9nZ2luZyhsb2dnaW5nLldBUk5JTkcpCisgICAgICAg
ICAgICBzZWxmLl9sb2dfbGV2ZWwgPSBsb2dnaW5nLldBUk5JTkcKICAgICAgICAgZWxpZiBvcHRp
b25zLnF1aWV0OgogICAgICAgICAgICAgc2VsZi5fdmVyYm9zaXR5ID0gMQotICAgICAgICAgICAg
c2VsZi5fY29uZmlndXJlX2xvZ2dpbmcobG9nZ2luZy5XQVJOSU5HKQorICAgICAgICAgICAgc2Vs
Zi5fbG9nX2xldmVsID0gbG9nZ2luZy5XQVJOSU5HCiAgICAgICAgIGVsaWYgb3B0aW9ucy52ZXJi
b3NlID09IDA6CiAgICAgICAgICAgICBzZWxmLl92ZXJib3NpdHkgPSAxCi0gICAgICAgICAgICBz
ZWxmLl9jb25maWd1cmVfbG9nZ2luZyhsb2dnaW5nLklORk8pCisgICAgICAgICAgICBzZWxmLl9s
b2dfbGV2ZWwgPSBsb2dnaW5nLklORk8KICAgICAgICAgZWxpZiBvcHRpb25zLnZlcmJvc2UgPT0g
MToKICAgICAgICAgICAgIHNlbGYuX3ZlcmJvc2l0eSA9IDIKLSAgICAgICAgICAgIHNlbGYuX2Nv
bmZpZ3VyZV9sb2dnaW5nKGxvZ2dpbmcuSU5GTykKKyAgICAgICAgICAgIHNlbGYuX2xvZ19sZXZl
bCA9IGxvZ2dpbmcuSU5GTwogICAgICAgICBlbGlmIG9wdGlvbnMudmVyYm9zZSA9PSAyOgogICAg
ICAgICAgICAgc2VsZi5fdmVyYm9zaXR5ID0gMgotICAgICAgICAgICAgc2VsZi5fY29uZmlndXJl
X2xvZ2dpbmcobG9nZ2luZy5ERUJVRykKKyAgICAgICAgICAgIHNlbGYuX2xvZ19sZXZlbCA9IGxv
Z2dpbmcuREVCVUcKKworICAgICAgICBzZWxmLmxvYWRlciA9IFRlc3RMb2FkZXIoKQorICAgICAg
ICBzZWxmLmxvYWRlci5ydW5fcmVhbF9pbnRlZ3JhdGlvbl90ZXN0cyA9IG9wdGlvbnMucnVuX3Jl
YWxfaW50ZWdyYXRpb250ZXN0cworICAgICAgICBpZiBzZWxmLl9vcHRpb25zLnhtbDoKKyAgICAg
ICAgICAgIGZyb20gd2Via2l0cHkudGhpcmRwYXJ0eS5hdXRvaW5zdGFsbGVkLnhtbHJ1bm5lciBp
bXBvcnQgWE1MVGVzdFJ1bm5lcgorICAgICAgICAgICAgc2VsZi5ydW5uZXIgPSBYTUxUZXN0UnVu
bmVyKG91dHB1dD0ndGVzdC13ZWJraXRweS14bWwtcmVwb3J0cycpCisgICAgICAgIGVsc2U6Cisg
ICAgICAgICAgICBzZWxmLnJ1bm5lciA9IFRlc3RSdW5uZXIoc2VsZi5zdGRlcnIsIHNlbGYuX3Zl
cmJvc2l0eSwgb3B0aW9ucy50aW1pbmcpCiAKLSAgICBkZWYgX2NvbmZpZ3VyZV9sb2dnaW5nKHNl
bGYsIGxvZ19sZXZlbCk6CisgICAgZGVmIGNvbmZpZ3VyZV9sb2dnaW5nKHNlbGYpOgogICAgICAg
ICAiIiJDb25maWd1cmUgdGhlIHJvb3QgbG9nZ2VyLgogCiAgICAgICAgIENvbmZpZ3VyZSB0aGUg
cm9vdCBsb2dnZXIgbm90IHRvIGxvZyBhbnkgbWVzc2FnZXMgZnJvbSB3ZWJraXRweSAtLQogICAg
ICAgICBleGNlcHQgZm9yIG1lc3NhZ2VzIGZyb20gdGhlIGF1dG9pbnN0YWxsIG1vZHVsZS4gIEFs
c28gc2V0IHRoZQogICAgICAgICBsb2dnaW5nIGxldmVsIGFzIGRlc2NyaWJlZCBiZWxvdy4KICAg
ICAgICAgIiIiCi0gICAgICAgIGhhbmRsZXIgPSBsb2dnaW5nLlN0cmVhbUhhbmRsZXIoc3lzLnN0
ZGVycikKKyAgICAgICAgbG9nX2xldmVsID0gc2VsZi5fbG9nX2xldmVsCisgICAgICAgIGhhbmRs
ZXIgPSBsb2dnaW5nLlN0cmVhbUhhbmRsZXIoc2VsZi5zdGRlcnIpCiAgICAgICAgICMgV2UgY29u
c3RyYWluIHRoZSBsZXZlbCBvbiB0aGUgaGFuZGxlciByYXRoZXIgdGhhbiBvbiB0aGUgcm9vdAog
ICAgICAgICAjIGxvZ2dlciBpdHNlbGYuICBUaGlzIGlzIHByb2JhYmx5IGJldHRlciBiZWNhdXNl
IHRoZSBoYW5kbGVyIGlzCiAgICAgICAgICMgY29uZmlndXJlZCBhbmQga25vd24gb25seSB0byB0
aGlzIG1vZHVsZSwgd2hlcmVhcyB0aGUgcm9vdCBsb2dnZXIKQEAgLTE0MSwzMiArMTg4LDg0IEBA
IGNsYXNzIFRlc3RlcihvYmplY3QpOgogICAgICAgICBfbG9nLmluZm8oIlN1cHByZXNzaW5nIG1v
c3Qgd2Via2l0cHkgbG9nZ2luZyB3aGlsZSBydW5uaW5nIHVuaXQgdGVzdHMuIikKICAgICAgICAg
aGFuZGxlci5hZGRGaWx0ZXIodGVzdGluZ19maWx0ZXIpCiAKLSAgICBkZWYgcnVuKHNlbGYsIGRp
cnMsIGFyZ3MpOgotICAgICAgICBhcmdzID0gYXJncyBvciBzZWxmLl9maW5kX21vZHVsZXMoZGly
cykKLSAgICAgICAgcmV0dXJuIHNlbGYuX3J1bl90ZXN0cyhkaXJzLCBhcmdzKQotCi0gICAgZGVm
IF9maW5kX21vZHVsZXMoc2VsZiwgZGlycyk6Ci0gICAgICAgIG1vZHVsZXMgPSBbXQotICAgICAg
ICBmb3IgZGlyX3RvX3NlYXJjaCBpbiBkaXJzOgotICAgICAgICAgICAgbW9kdWxlcy5leHRlbmQo
c2VsZi5fZmluZF9tb2R1bGVzX3VuZGVyKGRpcl90b19zZWFyY2gsICdfdW5pdHRlc3QucHknKSkK
LSAgICAgICAgICAgIGlmIG5vdCBzZWxmLl9vcHRpb25zLnNraXBfaW50ZWdyYXRpb250ZXN0czoK
LSAgICAgICAgICAgICAgICBtb2R1bGVzLmV4dGVuZChzZWxmLl9maW5kX21vZHVsZXNfdW5kZXIo
ZGlyX3RvX3NlYXJjaCwgJ19pbnRlZ3JhdGlvbnRlc3QucHknKSkKLSAgICAgICAgbW9kdWxlcy5z
b3J0KCkKLQotICAgICAgICBmb3IgbW9kdWxlIGluIG1vZHVsZXM6Ci0gICAgICAgICAgICBfbG9n
LmRlYnVnKCJGb3VuZDogJXMiICUgbW9kdWxlKQotCi0gICAgICAgICMgRklYTUU6IEZpZ3VyZSBv
dXQgaG93IHRvIG1vdmUgdGhpcyB0byB0ZXN0LXdlYmtpdHB5IGluIG9yZGVyIHRvIHRvIG1ha2Ug
dGhpcyBmaWxlIG1vcmUgZ2VuZXJpYy4KLSAgICAgICAgaWYgbm90IHNlbGYuX29wdGlvbnMuYWxs
OgotICAgICAgICAgICAgc2xvd190ZXN0cyA9ICgnd2Via2l0cHkuY29tbW9uLmNoZWNrb3V0LnNj
bS5zY21fdW5pdHRlc3QnLCkKLSAgICAgICAgICAgIHNlbGYuX2V4Y2x1ZGUobW9kdWxlcywgc2xv
d190ZXN0cywgJ2FyZSByZWFsbHksIHJlYWxseSBzbG93JywgMzE4MTgpCi0KLSAgICAgICAgICAg
IGlmIHN5cy5wbGF0Zm9ybSA9PSAnd2luMzInOgotICAgICAgICAgICAgICAgIHdpbjMyX2JsYWNr
bGlzdCA9ICgnd2Via2l0cHkuY29tbW9uLmNoZWNrb3V0JywKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgJ3dlYmtpdHB5LmNvbW1vbi5jb25maWcnLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAnd2Via2l0cHkudG9vbCcpCi0gICAgICAgICAgICAgICAgc2Vs
Zi5fZXhjbHVkZShtb2R1bGVzLCB3aW4zMl9ibGFja2xpc3QsICdmYWlsIGhvcnJpYmx5IG9uIHdp
bjMyJywgNTQ1MjYpCi0KKyAgICBkZWYgYWRkX3RyZWUoc2VsZiwgdG9wX2RpcmVjdG9yeSwgc3Rh
cnRpbmdfc3ViZGlyZWN0b3J5PU5vbmUsIGlnbm9yZV9saXN0PU5vbmUpOgorICAgICAgICBzZWxm
LnRyZWVzLmFwcGVuZChUZXN0VHJlZSh0b3BfZGlyZWN0b3J5LCBzdGFydGluZ19zdWJkaXJlY3Rv
cnksIGlnbm9yZV9saXN0IG9yIFtdKSkKKworICAgIGRlZiBydW4oc2VsZiwgYXJncyk6CisgICAg
ICAgIHNlbGYuX2NsZWFuX3RyZWVzKCkKKyAgICAgICAgc2VsZi5fZml4X3BhdGgoKQorCisgICAg
ICAgIHRyeToKKyAgICAgICAgICAgIGNvdiA9IE5vbmUKKyAgICAgICAgICAgIGlmIHNlbGYuX29w
dGlvbnMuY292ZXJhZ2U6CisgICAgICAgICAgICAgICAgY292ID0gc2VsZi5fY292ZXJhZ2Vfb2Jq
ZWN0KCkKKyAgICAgICAgICAgICAgICBjb3Yuc3RhcnQoKQorCisgICAgICAgICAgICBfbG9nLmRl
YnVnKCJMb2FkaW5nIHRoZSB0ZXN0cy4uLiIpCisgICAgICAgICAgICBpZiBhcmdzOgorICAgICAg
ICAgICAgICAgIHRlc3RzID0gW10KKyAgICAgICAgICAgICAgICBmb3IgYXJnIGluIGFyZ3M6Cisg
ICAgICAgICAgICAgICAgICAgIHRlc3RzLmV4dGVuZChzZWxmLl9maW5kX3Rlc3RzX2Zvcihhcmcp
KQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAjIEZJWE1FOiBDb25zaWRlciBy
dW5uaW5nIGVhY2ggdHJlZSBzZXBhcmF0ZWx5IHRvIGF2b2lkIG5hbWVzcGFjZSBjbGFzaGVzLgor
ICAgICAgICAgICAgICAgIHRlc3RzID0gc2VsZi5fZGVmYXVsdF90ZXN0cygpCisKKyAgICAgICAg
ICAgIHJlc3VsdCA9IHNlbGYuX3J1bl90ZXN0cyh0ZXN0cykKKyAgICAgICAgICAgIGlmIGNvdjoK
KyAgICAgICAgICAgICAgICBjb3Yuc3RvcCgpCisgICAgICAgICAgICAgICAgY292LnJlcG9ydChz
aG93X21pc3Npbmc9RmFsc2UpCisgICAgICAgICAgICByZXR1cm4gcmVzdWx0Lndhc1N1Y2Nlc3Nm
dWwKKworICAgICAgICBleGNlcHQgTG9hZGVyRXJyb3IsIGU6CisgICAgICAgICAgICByZXR1cm4g
RmFsc2UKKworICAgIGRlZiBfZml4X3BhdGgoc2VsZik6CisgICAgICAgICMgTWFrZSBzdXJlIFBZ
VEhPTlBBVEggaXMgc2V0IHVwIGNvcnJlY3RseS4KKyAgICAgICAgc3lzLnBhdGggPSBbdHJlZS50
b3BfZGlyZWN0b3J5IGZvciB0cmVlIGluIHNlbGYudHJlZXMgaWYgdHJlZS50b3BfZGlyZWN0b3J5
IG5vdCBpbiBzeXMucGF0aF0gKyBzeXMucGF0aAorCisgICAgZGVmIF9jbGVhbl90cmVlcyhzZWxm
KToKKyAgICAgICAgZm9yIHRyZWUgaW4gc2VsZi50cmVlczoKKyAgICAgICAgICAgIHRyZWUuY2xl
YW4oKQorCisgICAgZGVmIF9jb3ZlcmFnZV9vYmplY3Qoc2VsZik6CisgICAgICAgIHRyeToKKyAg
ICAgICAgICAgIGltcG9ydCB3ZWJraXRweS50aGlyZHBhcnR5LmF1dG9pbnN0YWxsZWQuY292ZXJh
Z2UgYXMgY292ZXJhZ2UKKyAgICAgICAgZXhjZXB0IEltcG9ydEVycm9yLCBlOgorICAgICAgICAg
ICAgX2xvZy5lcnJvcigiRmFpbGVkIHRvIGltcG9ydCAnY292ZXJhZ2UnOyBjYW4ndCBnZW5lcmF0
ZSBjb3ZlcmFnZSBudW1iZXJzLiIpCisgICAgICAgICAgICByYWlzZSBMb2FkZXJFcnJvcigpCisK
KyAgICAgICAgaW5jbHVkZSA9IFtvcy5wYXRoLmpvaW4odHJlZS5zZWFyY2hfZGlyZWN0b3J5LCAn
KicpIGZvciB0cmVlIGluIHNlbGYudHJlZXNdCisgICAgICAgIG9taXQgPSBbXQorICAgICAgICBm
b3IgdHJlZSBpbiBzZWxmLnRyZWVzOgorICAgICAgICAgICAgZm9yIHBhdGggaW4gdHJlZS5pZ25v
cmVfbGlzdDoKKyAgICAgICAgICAgICAgICBpZiBvcy5wYXRoLmlzZGlyKHBhdGgpOgorICAgICAg
ICAgICAgICAgICAgICBvbWl0LmFwcGVuZChvcy5wYXRoLmpvaW4ocGF0aCwgJyonKSkKKyAgICAg
ICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICBvbWl0LmFwcGVuZChwYXRoKQor
ICAgICAgICByZXR1cm4gY292ZXJhZ2UuY292ZXJhZ2UoaW5jbHVkZT1pbmNsdWRlLCBvbWl0PW9t
aXQpCisKKyAgICBkZWYgX2ZpbmRfbW9kdWxlcyhzZWxmLCB0cmVlLCBkaXJfdG9fc2VhcmNoKToK
KyAgICAgICAgc3VmZml4ZXMgPSAoJ191bml0dGVzdC5weScsICdfaW50ZWdyYXRpb250ZXN0LnB5
JykKKyAgICAgICAgaWYgc2VsZi5fb3B0aW9ucy5za2lwX2ludGVncmF0aW9udGVzdHM6CisgICAg
ICAgICAgICBzdWZmaXhlcyA9ICgnX3VuaXR0ZXN0LnB5JywpCisgICAgICAgIHJldHVybiB0cmVl
LmZpbmRfbW9kdWxlcyhkaXJfdG9fc2VhcmNoLCBzdWZmaXhlcykKKworICAgIGRlZiBfZGVmYXVs
dF90ZXN0cyhzZWxmKToKKyAgICAgICAgdGVzdHMgPSBbXQorICAgICAgICBmb3IgdHJlZSBpbiBz
ZWxmLnRyZWVzOgorICAgICAgICAgICAgdGVzdHMuZXh0ZW5kKHNlbGYuX2ZpbmRfbW9kdWxlcyh0
cmVlLCB0cmVlLnNlYXJjaF9kaXJlY3RvcnkpKQorICAgICAgICByZXR1cm4gdGVzdHMKKworICAg
IGRlZiBfc2tpcF9tb2R1bGVzKHNlbGYsIG1vZHVsZXMpOgorICAgICAgICAjIEZJWE1FOiBUaGVz
ZSBzaG91bGQgYmUgcmVwbGFjZWQgdy8gQHNsb3cgYW5kIEBza2lwX2lmIGRlY29yYXRvcnMKKyAg
ICAgICAgc2xvd190ZXN0cyA9ICgnd2Via2l0cHkuY29tbW9uLmNoZWNrb3V0LnNjbS5zY21fdW5p
dHRlc3QnLCkKKyAgICAgICAgc2VsZi5fZXhjbHVkZShtb2R1bGVzLCBzbG93X3Rlc3RzLCAnYXJl
IHJlYWxseSwgcmVhbGx5IHNsb3cnLCAzMTgxOCkKKworICAgICAgICBpZiBzeXMucGxhdGZvcm0g
PT0gJ3dpbjMyJzoKKyAgICAgICAgICAgIHdpbjMyX2JsYWNrbGlzdCA9ICgnd2Via2l0cHkuY29t
bW9uLmNoZWNrb3V0JywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3dlYmtpdHB5
LmNvbW1vbi5jb25maWcnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnd2Via2l0
cHkudG9vbCcpCisgICAgICAgICAgICBzZWxmLl9leGNsdWRlKG1vZHVsZXMsIHdpbjMyX2JsYWNr
bGlzdCwgJ2ZhaWwgaG9ycmlibHkgb24gd2luMzInLCA1NDUyNikKICAgICAgICAgcmV0dXJuIG1v
ZHVsZXMKIAogICAgIGRlZiBfZXhjbHVkZShzZWxmLCBtb2R1bGVzLCBtb2R1bGVfcHJlZml4ZXMs
IHJlYXNvbiwgYnVnaWQpOgpAQCAtMTgxLDY2ICsyODAsMjAxIEBAIGNsYXNzIFRlc3RlcihvYmpl
Y3QpOgogICAgICAgICBfbG9nLmluZm8oJyAgICAoaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPSVkOyB1c2UgLS1hbGwgdG8gaW5jbHVkZSknICUgYnVnaWQpCiAgICAgICAg
IF9sb2cuaW5mbygnJykKIAotICAgIGRlZiBfZmluZF9tb2R1bGVzX3VuZGVyKHNlbGYsIGRpcl90
b19zZWFyY2gsIHN1ZmZpeCk6Ci0KLSAgICAgICAgZGVmIHRvX3BhY2thZ2UoZGlyX3BhdGgpOgot
ICAgICAgICAgICAgcmV0dXJuIGRpcl9wYXRoLnJlcGxhY2UoZGlyX3RvX3NlYXJjaCArIG9zLnNl
cCwgJycpLnJlcGxhY2Uob3Muc2VwLCAnLicpCi0KLSAgICAgICAgZGVmIHRvX21vZHVsZShmaWxl
bmFtZSwgcGFja2FnZSk6Ci0gICAgICAgICAgICByZXR1cm4gcGFja2FnZSArICcuJyArIGZpbGVu
YW1lLnJlcGxhY2UoJy5weScsICcnKQotCi0gICAgICAgIG1vZHVsZXMgPSBbXQotICAgICAgICBm
b3IgZGlyX3BhdGgsIF8sIGZpbGVuYW1lcyBpbiBvcy53YWxrKGRpcl90b19zZWFyY2gpOgotICAg
ICAgICAgICAgcGFja2FnZSA9IHRvX3BhY2thZ2UoZGlyX3BhdGgpCi0gICAgICAgICAgICBtb2R1
bGVzLmV4dGVuZCh0b19tb2R1bGUoZiwgcGFja2FnZSkgZm9yIGYgaW4gZmlsZW5hbWVzIGlmIGYu
ZW5kc3dpdGgoc3VmZml4KSkKLSAgICAgICAgcmV0dXJuIG1vZHVsZXMKLQotICAgIGRlZiBfcnVu
X3Rlc3RzKHNlbGYsIGRpcnMsIGFyZ3MpOgotICAgICAgICBpZiBzZWxmLl9vcHRpb25zLmNvdmVy
YWdlOgorICAgIGRlZiBfZmluZF90ZXN0c19mb3Ioc2VsZiwgbmFtZSk6CisgICAgICAgICh0cmVl
LCBzdGFydGluZ19kaXJlY3RvcnkpID0gc2VsZi5fZmluZF90cmVlKG5hbWUpCisgICAgICAgIGlm
IHRyZWUgYW5kIG5vdCBvcy5wYXRoLmlzZmlsZShzdGFydGluZ19kaXJlY3RvcnkpOgorICAgICAg
ICAgICAgcmV0dXJuIHNlbGYuX2ZpbmRfbW9kdWxlcyh0cmVlLCBzdGFydGluZ19kaXJlY3Rvcnkp
CisgICAgICAgIGVsaWYgb3MucGF0aC5leGlzdHMobmFtZSk6CisgICAgICAgICAgICByZXR1cm4g
W3NlbGYuX3Rlc3RfZnJvbV9wYXRoKG5hbWUpXQorICAgICAgICBlbHNlOgorICAgICAgICAgICAg
cmV0dXJuIFtuYW1lXQorCisgICAgZGVmIF90ZXN0X2Zyb21fcGF0aChzZWxmLCBuYW1lKToKKyAg
ICAgICAgIyBGaXJzdCwgY2hlY2sgdG8gc2VlIGlmIHdlIGNhbiByZXNvbHZlIHRoZSBwYXRoIHJl
bGF0aXZlIHRvIHRoZSBjd2QuCisgICAgICAgIGZ1bGxfcGF0aCA9IG9zLnBhdGgucmVhbHBhdGgo
bmFtZSkKKyAgICAgICAgZm9yIHRyZWUgaW4gc2VsZi50cmVlczoKKyAgICAgICAgICAgICMgRklY
TUU6IERvIHdlIG5lZWQgdG8gd29ycnkgYWJvdXQgY2FzZS1pbnNlbnNpdGl2aXR5IGhlcmU/Cisg
ICAgICAgICAgICBpZiBmdWxsX3BhdGguc3RhcnRzd2l0aCh0cmVlLnRvcF9kaXJlY3RvcnkpOgor
ICAgICAgICAgICAgICAgIHJldHVybiBmdWxsX3BhdGgucmVwbGFjZSh0cmVlLnRvcF9kaXJlY3Rv
cnkgKyBvcy5zZXAsICcnKS5yZXBsYWNlKCcucHknLCAnJykucmVwbGFjZShvcy5zZXAsICcuJykK
KworICAgICAgICBlcnIgPSAnJXMgaXMgbm90IGluIG9uZSBvZiB0aGUgV2ViS2l0IHB5dGhvbiB0
cmVlcycgJSBuYW1lCisgICAgICAgIF9sb2cuZmF0YWwoZXJyKQorICAgICAgICByYWlzZSBMb2Fk
ZXJFcnJvcihlcnIpCisKKyAgICBkZWYgX3N1aXRlX2Zyb21fbmFtZShzZWxmLCBuYW1lKToKKyAg
ICAgICAgaWYgc2VsZi5faXNfbW9kdWxlKG5hbWUpOgorICAgICAgICAgICAgIyBpbXBvcnQgbW9k
dWxlcyBleHBsaWNpdGx5IGJlZm9yZSBsb2FkaW5nIHRoZWlyIHRlc3RzIGJlY2F1c2UKKyAgICAg
ICAgICAgICMgbG9hZFRlc3RzRnJvbU5hbWUoKSBwcm9kdWNlcyBsb3VzeSBlcnJvciBtZXNzYWdl
cyBmb3IgYmFkIG1vZHVsZXMuCiAgICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgaW1w
b3J0IGNvdmVyYWdlCisgICAgICAgICAgICAgICAgX19pbXBvcnRfXyhuYW1lKQogICAgICAgICAg
ICAgZXhjZXB0IEltcG9ydEVycm9yLCBlOgotICAgICAgICAgICAgICAgIF9sb2cuZXJyb3IoIkZh
aWxlZCB0byBpbXBvcnQgJ2NvdmVyYWdlJzsgY2FuJ3QgZ2VuZXJhdGUgY292ZXJhZ2UgbnVtYmVy
cy4iKQotICAgICAgICAgICAgICAgIHJldHVybiBGYWxzZQotICAgICAgICAgICAgY292ID0gY292
ZXJhZ2UuY292ZXJhZ2UoKQotICAgICAgICAgICAgY292LnN0YXJ0KCkKLQotICAgICAgICBfbG9n
LmRlYnVnKCJMb2FkaW5nIHRoZSB0ZXN0cy4uLiIpCi0KLSAgICAgICAgbG9hZGVyID0gdW5pdHRl
c3QuZGVmYXVsdFRlc3RMb2FkZXIKLSAgICAgICAgc3VpdGVzID0gW10KLSAgICAgICAgZm9yIG5h
bWUgaW4gYXJnczoKLSAgICAgICAgICAgIGlmIHNlbGYuX2lzX21vZHVsZShkaXJzLCBuYW1lKToK
LSAgICAgICAgICAgICAgICAjIGltcG9ydCBtb2R1bGVzIGV4cGxpY2l0bHkgYmVmb3JlIGxvYWRp
bmcgdGhlaXIgdGVzdHMgYmVjYXVzZQotICAgICAgICAgICAgICAgICMgbG9hZFRlc3RzRnJvbU5h
bWUoKSBwcm9kdWNlcyBsb3VzeSBlcnJvciBtZXNzYWdlcyBmb3IgYmFkIG1vZHVsZXMuCi0gICAg
ICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgICAgICBfX2ltcG9ydF9fKG5hbWUpCi0g
ICAgICAgICAgICAgICAgZXhjZXB0IEltcG9ydEVycm9yLCBlOgotICAgICAgICAgICAgICAgICAg
ICBfbG9nLmZhdGFsKCdGYWlsZWQgdG8gaW1wb3J0ICVzOicgJSBuYW1lKQotICAgICAgICAgICAg
ICAgICAgICBzZWxmLl9sb2dfZXhjZXB0aW9uKCkKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IEZhbHNlCi0gICAgICAgICAgICBzdWl0ZXMuYXBwZW5kKGxvYWRlci5sb2FkVGVzdHNGcm9tTmFt
ZShuYW1lLCBOb25lKSkKKyAgICAgICAgICAgICAgICBfbG9nLmZhdGFsKCdGYWlsZWQgdG8gaW1w
b3J0ICVzOicgJSBuYW1lKQorICAgICAgICAgICAgICAgIHNlbGYuX2xvZ19leGNlcHRpb24oKQor
ICAgICAgICAgICAgICAgIHJhaXNlIExvYWRlckVycm9yKCkKKyAgICAgICAgcmV0dXJuIHNlbGYu
bG9hZGVyLmxvYWRUZXN0c0Zyb21OYW1lKG5hbWUsIE5vbmUpCisKKyAgICBkZWYgX2ZpbmRfdHJl
ZShzZWxmLCBuYW1lKToKKyAgICAgICAgIyBJcyB0aGUgbmFtZSBhIHN1YmRpcmVjdG9yeSByZWxh
dGl2ZSB0byB0aGUgY3VycmVudCB3b3JraW5nIGRpcmVjdG9yeSBhbmQgaW4gYSB0cmVlPworICAg
ICAgICBpZiBvcy5wYXRoLmV4aXN0cyhuYW1lKToKKyAgICAgICAgICAgIGZ1bGxfcGF0aCA9IG9z
LnBhdGgucmVhbHBhdGgobmFtZSkKKyAgICAgICAgICAgIGZvciB0cmVlIGluIHNlbGYudHJlZXM6
CisgICAgICAgICAgICAgICAgaWYgZnVsbF9wYXRoLnN0YXJ0c3dpdGgodHJlZS50b3BfZGlyZWN0
b3J5KToKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuICh0cmVlLCBmdWxsX3BhdGgpCisKKyAg
ICAgICAgIyBJcyB0aGUgbmFtZSBhIHN1YmRpcmVjdG9yeSBvZiBhIHRyZWU/CisgICAgICAgIGlm
IG5vdCBvcy5wYXRoLmlzYWJzKG5hbWUpOgorICAgICAgICAgICAgZm9yIHRyZWUgaW4gc2VsZi50
cmVlczoKKyAgICAgICAgICAgICAgICBmdWxsX3BhdGggPSBvcy5wYXRoLnJlYWxwYXRoKG9zLnBh
dGguam9pbih0cmVlLnRvcF9kaXJlY3RvcnksIG5hbWUpKQorICAgICAgICAgICAgICAgIGlmIG9z
LnBhdGguaXNkaXIoZnVsbF9wYXRoKToKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuICh0cmVl
LCBvcy5wYXRoLmpvaW4odHJlZS50b3BfZGlyZWN0b3J5LCBuYW1lKSkKKworICAgICAgICAjIElz
IHRoZSBuYW1lIGEgcGFja2FnZT8KKyAgICAgICAgcmVscGF0aCA9IG5hbWUucmVwbGFjZSgnLics
IG9zLnNlcCkKKyAgICAgICAgZm9yIHRyZWUgaW4gc2VsZi50cmVlczoKKyAgICAgICAgICAgIGZ1
bGxfcGF0aCA9IG9zLnBhdGguam9pbih0cmVlLnRvcF9kaXJlY3RvcnksIHJlbHBhdGgpCisgICAg
ICAgICAgICBpZiBvcy5wYXRoLmlzZGlyKGZ1bGxfcGF0aCk6CisgICAgICAgICAgICAgICAgcmV0
dXJuICh0cmVlLCBmdWxsX3BhdGgpCisKKyAgICAgICAgcmV0dXJuIChOb25lLCBOb25lKQorCisg
ICAgZGVmIF9pc19tb2R1bGUoc2VsZiwgbmFtZSk6CisgICAgICAgIHJlbHBhdGggPSBuYW1lLnJl
cGxhY2UoJy4nLCBvcy5zZXApICsgJy5weScKKyAgICAgICAgcmV0dXJuIGFueShvcy5wYXRoLmV4
aXN0cyhvcy5wYXRoLmpvaW4odHJlZS50b3BfZGlyZWN0b3J5LCByZWxwYXRoKSkgZm9yIHRyZWUg
aW4gc2VsZi50cmVlcykKIAotICAgICAgICB0ZXN0X3N1aXRlID0gdW5pdHRlc3QuVGVzdFN1aXRl
KHN1aXRlcykKLSAgICAgICAgaWYgc2VsZi5fb3B0aW9ucy54bWw6Ci0gICAgICAgICAgICBmcm9t
IHdlYmtpdHB5LnRoaXJkcGFydHkuYXV0b2luc3RhbGxlZC54bWxydW5uZXIgaW1wb3J0IFhNTFRl
c3RSdW5uZXIKLSAgICAgICAgICAgIHRlc3RfcnVubmVyID0gWE1MVGVzdFJ1bm5lcihvdXRwdXQ9
J3Rlc3Qtd2Via2l0cHkteG1sLXJlcG9ydHMnKQotICAgICAgICBlbHNlOgotICAgICAgICAgICAg
dGVzdF9ydW5uZXIgPSB1bml0dGVzdC5UZXh0VGVzdFJ1bm5lcih2ZXJib3NpdHk9c2VsZi5fdmVy
Ym9zaXR5KQorICAgIGRlZiBfcnVuX3Rlc3RzKHNlbGYsIHRlc3RzKToKKyAgICAgICAgIyBTb3J0
IGFuZCBkZWR1cGxpY2F0ZSBhbGwgb2YgdGhlIHRlc3RzCisgICAgICAgIHRlc3RzID0gc29ydGVk
KFt0ZXN0IGZvciB0ZXN0IGluIHNldCh0ZXN0cyldKQogCi0gICAgICAgIF9sb2cuZGVidWcoIlJ1
bm5pbmcgdGhlIHRlc3RzLiIpCi0gICAgICAgIHJlc3VsdCA9IHRlc3RfcnVubmVyLnJ1bih0ZXN0
X3N1aXRlKQotICAgICAgICBpZiBzZWxmLl9vcHRpb25zLmNvdmVyYWdlOgotICAgICAgICAgICAg
Y292LnN0b3AoKQotICAgICAgICAgICAgY292LnNhdmUoKQotICAgICAgICByZXR1cm4gcmVzdWx0
Lndhc1N1Y2Nlc3NmdWwoKQorICAgICAgICBmb3IgdGVzdCBpbiB0ZXN0czoKKyAgICAgICAgICAg
IF9sb2cuZGVidWcoIkZvdW5kOiAlcyIgJSB0ZXN0KQogCi0gICAgZGVmIF9pc19tb2R1bGUoc2Vs
ZiwgZGlycywgbmFtZSk6Ci0gICAgICAgIHJlbHBhdGggPSBuYW1lLnJlcGxhY2UoJy4nLCBvcy5z
ZXApICsgJy5weScKLSAgICAgICAgcmV0dXJuIGFueShvcy5wYXRoLmV4aXN0cyhvcy5wYXRoLmpv
aW4oZCwgcmVscGF0aCkpIGZvciBkIGluIGRpcnMpCisgICAgICAgIGlmIG5vdCBzZWxmLl9vcHRp
b25zLmFsbDoKKyAgICAgICAgICAgIHRlc3RzID0gc2VsZi5fc2tpcF9tb2R1bGVzKHRlc3RzKQor
CisgICAgICAgIHN1aXRlcyA9IFtzZWxmLl9zdWl0ZV9mcm9tX25hbWUodGVzdCkgZm9yIHRlc3Qg
aW4gdGVzdHNdCisgICAgICAgIF9sb2cuZGVidWcoIlJ1bm5pbmcgdGhlIHRlc3RzLiIpCisgICAg
ICAgIHRlc3Rfc3VpdGUgPSB1bml0dGVzdC5UZXN0U3VpdGUoc3VpdGVzKQorICAgICAgICByZXR1
cm4gc2VsZi5ydW5uZXIucnVuKHRlc3Rfc3VpdGUpCiAKICAgICBkZWYgX2xvZ19leGNlcHRpb24o
c2VsZik6CiAgICAgICAgIHMgPSBTdHJpbmdJTy5TdHJpbmdJTygpCiAgICAgICAgIHRyYWNlYmFj
ay5wcmludF9leGMoZmlsZT1zKQogICAgICAgICBmb3IgbCBpbiBzLmJ1Zmxpc3Q6CiAgICAgICAg
ICAgICBfbG9nLmVycm9yKCcgICcgKyBsLnJzdHJpcCgpKQorCisKK2NsYXNzIFRlc3RMb2FkZXIo
dW5pdHRlc3QuVGVzdExvYWRlcik6CisgICAgZGVmIF9faW5pdF9fKHNlbGYpOgorICAgICAgICBz
ZWxmLnJ1bl9yZWFsX2ludGVncmF0aW9uX3Rlc3RzID0gRmFsc2UKKyAgICAgICAgc3VwZXIoVGVz
dExvYWRlciwgc2VsZikuX19pbml0X18oKQorCisgICAgZGVmIGdldFRlc3RDYXNlTmFtZXMoc2Vs
ZiwgdGVzdENhc2VDbGFzcyk6CisgICAgICAgIGRlZiBpc1Rlc3RNZXRob2QoYXR0cm5hbWUsIHRl
c3RDYXNlQ2xhc3M9dGVzdENhc2VDbGFzcyk6CisgICAgICAgICAgICBpZiBub3QgaGFzYXR0cihn
ZXRhdHRyKHRlc3RDYXNlQ2xhc3MsIGF0dHJuYW1lKSwgJ19fY2FsbF9fJyk6CisgICAgICAgICAg
ICAgICAgcmV0dXJuIEZhbHNlCisgICAgICAgICAgICByZXR1cm4gKChhdHRybmFtZS5zdGFydHN3
aXRoKCd0ZXN0JykpIG9yCisgICAgICAgICAgICAgICAgICAgIChzZWxmLnJ1bl9yZWFsX2ludGVn
cmF0aW9uX3Rlc3RzIGFuZCBhdHRybmFtZS5zdGFydHN3aXRoKCdpbnRlZ3JhdGlvbl90ZXN0Xycp
KSkKKyAgICAgICAgdGVzdEZuTmFtZXMgPSBmaWx0ZXIoaXNUZXN0TWV0aG9kLCBkaXIodGVzdENh
c2VDbGFzcykpCisgICAgICAgIHRlc3RGbk5hbWVzLnNvcnQoKQorICAgICAgICByZXR1cm4gdGVz
dEZuTmFtZXMKKworCitjbGFzcyBUZXN0UnVubmVyKHVuaXR0ZXN0LlRleHRUZXN0UnVubmVyKToK
KyAgICBkZWYgX19pbml0X18oc2VsZiwgc3RyZWFtLCB2ZXJib3NpdHksIHRpbWluZyk6CisgICAg
ICAgIHN1cGVyKFRlc3RSdW5uZXIsIHNlbGYpLl9faW5pdF9fKHN0cmVhbSwgMSwgdmVyYm9zaXR5
KQorICAgICAgICBzZWxmLnRpbWluZyA9IHRpbWluZworCisgICAgZGVmIHJ1bihzZWxmLCB0ZXN0
KToKKyAgICAgICAgcmVzdWx0ID0gVGVzdFJlc3VsdChzZWxmLnN0cmVhbSwgc2VsZi52ZXJib3Np
dHksIHNlbGYudGltaW5nLCB0ZXN0LmNvdW50VGVzdENhc2VzKCkpCisgICAgICAgIHN0YXJ0ID0g
dGltZS50aW1lKCkKKyAgICAgICAgdGVzdChyZXN1bHQpCisgICAgICAgIHN0b3AgPSB0aW1lLnRp
bWUoKQorICAgICAgICBpZiBzZWxmLnZlcmJvc2l0eSA9PSAxOgorICAgICAgICAgICAgcmVzdWx0
LmVyYXNlKCkKKyAgICAgICAgZWxpZiByZXN1bHQuc2hvd0FsbCBvciByZXN1bHQubnVtX2ZhaWxl
ZDoKKyAgICAgICAgICAgIHNlbGYuc3RyZWFtLndyaXRlbG4oKQorCisgICAgICAgIHRvdGFsX2Rl
bGF5ID0gJyUuM2Ygc2Vjb25kcycgJSAoc3RvcCAtIHN0YXJ0KQorICAgICAgICBpZiByZXN1bHQu
bnVtX3J1biA+IDEgYW5kIHJlc3VsdC5udW1fZmFpbGVkOgorICAgICAgICAgICAgc2VsZi5zdHJl
YW0ud3JpdGVsbignJWQgdGVzdHMgcnVuIGluICVzOyAlZCBmYWlsZWQuJyAlIChyZXN1bHQubnVt
X3J1biwgdG90YWxfZGVsYXksIHJlc3VsdC5udW1fZmFpbGVkKSkKKyAgICAgICAgZWxpZiByZXN1
bHQubnVtX3J1biA+IDE6CisgICAgICAgICAgICBzZWxmLnN0cmVhbS53cml0ZWxuKCclZCB0ZXN0
cyBydW4gaW4gJXM7IGFsbCBwYXNzZWQuJyAlIChyZXN1bHQubnVtX3J1biwgdG90YWxfZGVsYXkp
KQorICAgICAgICBlbGlmIG51bV9lcnJvcnM6CisgICAgICAgICAgICBzZWxmLnN0cmVhbS53cml0
ZWxuKCcxIHRlc3QgcnVuIGluICVzOyBpdCBmYWlsZWQuJyAlICh0b3RhbF9kZWxheSkpCisgICAg
ICAgIGVsc2U6CisgICAgICAgICAgICBzZWxmLnN0cmVhbS53cml0ZWxuKCcxIHRlc3QgcnVuIGlu
ICVzOyBpdCBwYXNzZWQuJyAlICh0b3RhbF9kZWxheSkpCisgICAgICAgIHJldHVybiByZXN1bHQK
KworCitjbGFzcyBUZXN0UmVzdWx0KHVuaXR0ZXN0Ll9UZXh0VGVzdFJlc3VsdCk6CisgICAgZGVm
IF9faW5pdF9fKHNlbGYsIHN0cmVhbSwgdmVyYm9zaXR5LCB0aW1pbmcsIG51bV90ZXN0cyk6Cisg
ICAgICAgIHN1cGVyKFRlc3RSZXN1bHQsIHNlbGYpLl9faW5pdF9fKHN0cmVhbSwgRmFsc2UsIHZl
cmJvc2l0eSkKKyAgICAgICAgc2VsZi52ZXJib3NpdHkgPSB2ZXJib3NpdHkKKyAgICAgICAgc2Vs
Zi50aW1pbmcgPSB0aW1pbmcKKyAgICAgICAgc2VsZi5udW1fcnVuID0gMAorICAgICAgICBzZWxm
Lm51bV9wYXNzZWQgPSAwCisgICAgICAgIHNlbGYubnVtX2ZhaWxlZCA9IDAKKyAgICAgICAgc2Vs
Zi5udW1fdGVzdHMgPSBudW1fdGVzdHMKKyAgICAgICAgc2VsZi5zaG93QWxsID0gc2VsZi5zaG93
QWxsIG9yIHRpbWluZworICAgICAgICBzZWxmLmRlc2NSZWdleHAgPSByZS5jb21waWxlKCIoXHcr
KSBcKChbXHcuXSspXCkiKQorICAgICAgICBzZWxmLl9idWZmZXIgPSAnJworCisgICAgZGVmIGdl
dERlc2NyaXB0aW9uKHNlbGYsIHRlc3QpOgorICAgICAgICBtID0gc2VsZi5kZXNjUmVnZXhwLm1h
dGNoKHN0cih0ZXN0KSkKKyAgICAgICAgcmV0dXJuICIlcy4lcyIgJSAobS5ncm91cCgyKSwgbS5n
cm91cCgxKSkKKworICAgIGRlZiBfd3JpdGVfc3RhdHVzKHNlbGYsIHRlc3QpOgorICAgICAgICBw
ZXJjZW50X2NvbXBsZXRlID0gMTAwICogKHNlbGYubnVtX3J1bikgLyBzZWxmLm51bV90ZXN0cwor
ICAgICAgICBzZWxmLmVyYXNlKCkKKyAgICAgICAgc2VsZi5fYnVmZmVyID0gJyUyZCUlOiAlZCBw
YXNzZWQsICVkIGZhaWxlZCwgJWQgbGVmdCAocnVubmluZyAlcyAuLi4pLicgJSAocGVyY2VudF9j
b21wbGV0ZSwgc2VsZi5udW1fcGFzc2VkLCBzZWxmLm51bV9mYWlsZWQsIHNlbGYubnVtX3Rlc3Rz
IC0gc2VsZi5udW1fcnVuLCBzZWxmLmdldERlc2NyaXB0aW9uKHRlc3QpKQorICAgICAgICBzZWxm
LnN0cmVhbS53cml0ZShzZWxmLl9idWZmZXIpCisgICAgICAgIHNlbGYuc3RyZWFtLmZsdXNoKCkK
KworICAgIGRlZiBlcmFzZShzZWxmKToKKyAgICAgICAgaWYgc2VsZi5fYnVmZmVyOgorICAgICAg
ICAgICAgc2VsZi5zdHJlYW0ud3JpdGUoJ1xiJyAqIGxlbihzZWxmLl9idWZmZXIpICsKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAnICcgKiBsZW4oc2VsZi5fYnVmZmVyKSArCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgJ1xiJyAqIGxlbihzZWxmLl9idWZmZXIpKQorICAgICAgICAg
ICAgc2VsZi5zdHJlYW0uX2J1ZmZlciA9ICcnCisKKyAgICBkZWYgX3dyaXRlX3Jlc3VsdChzZWxm
LCB0ZXN0LCBlcnI9Tm9uZSk6CisgICAgICAgIGlmIHNlbGYudGltaW5nIGFuZCBlcnI6CisgICAg
ICAgICAgICBtc2cgPSAnIGZhaWxlZCBhZnRlciAlLjNmcy4nICUgKHRpbWUudGltZSgpIC0gc2Vs
Zi5zdGFydCkKKyAgICAgICAgZWxpZiBzZWxmLnRpbWluZzoKKyAgICAgICAgICAgIG1zZyA9ICcg
cGFzc2VkIGluICUuM2ZzLicgJSAodGltZS50aW1lKCkgLSBzZWxmLnN0YXJ0KQorICAgICAgICBl
bGlmIGVycjoKKyAgICAgICAgICAgIG1zZyA9ICcgZmFpbGVkOicKKyAgICAgICAgZWxzZToKKyAg
ICAgICAgICAgIG1zZyA9ICcgcGFzc2VkLicKKworICAgICAgICBpZiBlcnI6CisgICAgICAgICAg
ICBzZWxmLmVyYXNlKCkKKyAgICAgICAgICAgIGlmIG5vdCBzZWxmLnNob3dBbGw6CisgICAgICAg
ICAgICAgICAgc2VsZi5zdHJlYW0ud3JpdGUoc2VsZi5nZXREZXNjcmlwdGlvbih0ZXN0KSkKKyAg
ICAgICAgICAgIHNlbGYuc3RyZWFtLndyaXRlbG4obXNnKQorICAgICAgICAgICAgZm9yIGxpbmUg
aW4gZXJyLnNwbGl0bGluZXMoKToKKyAgICAgICAgICAgICAgICBzZWxmLnN0cmVhbS53cml0ZWxu
KCcgICAgJyArIGxpbmUpCisgICAgICAgICAgICBzZWxmLnN0cmVhbS53cml0ZWxuKCkKKyAgICAg
ICAgZWxpZiBzZWxmLnNob3dBbGw6CisgICAgICAgICAgICBzZWxmLnN0cmVhbS53cml0ZWxuKG1z
ZykKKworICAgIGRlZiBzdGFydFRlc3Qoc2VsZiwgdGVzdCk6CisgICAgICAgIHNlbGYubnVtX3J1
biArPSAxCisgICAgICAgIGlmIHNlbGYuc2hvd0FsbDoKKyAgICAgICAgICAgIHNlbGYuc3RyZWFt
LndyaXRlKHNlbGYuZ2V0RGVzY3JpcHRpb24odGVzdCkpCisgICAgICAgICAgICBzZWxmLnN0cmVh
bS5fYnVmZmVyID0gJyAuLi4gJworICAgICAgICAgICAgc2VsZi5zdHJlYW0ud3JpdGUoc2VsZi5z
dHJlYW0uX2J1ZmZlcikKKyAgICAgICAgZWxpZiBzZWxmLmRvdHM6CisgICAgICAgICAgICBzZWxm
Ll93cml0ZV9zdGF0dXModGVzdCkKKyAgICAgICAgc2VsZi5zdGFydCA9IHRpbWUudGltZSgpCisK
KyAgICBkZWYgYWRkU3VjY2VzcyhzZWxmLCB0ZXN0KToKKyAgICAgICAgc2VsZi5udW1fcGFzc2Vk
ICs9IDEKKyAgICAgICAgc2VsZi5fd3JpdGVfcmVzdWx0KHRlc3QpCisKKyAgICBkZWYgYWRkRXJy
b3Ioc2VsZiwgdGVzdCwgZXJyKToKKyAgICAgICAgc2VsZi5udW1fZmFpbGVkICs9IDEKKyAgICAg
ICAgc2VsZi5fd3JpdGVfcmVzdWx0KHRlc3QsIHNlbGYuX2V4Y19pbmZvX3RvX3N0cmluZyhlcnIs
IHRlc3QpKQorCisgICAgZGVmIGFkZEZhaWx1cmUoc2VsZiwgdGVzdCwgZXJyKToKKyAgICAgICAg
c2VsZi5hZGRFcnJvcih0ZXN0LCBlcnIpCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtp
dHB5L3Rlc3QvbWFpbl91bml0dGVzdC5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdGVzdC9t
YWluX3VuaXR0ZXN0LnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE0MDU4ODk3M2FlYWFkZTNkMDJjNmJmMDI1Y2Rh
ODMyOTZkZDBmNGUKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3Rl
c3QvbWFpbl91bml0dGVzdC5weQpAQCAtMCwwICsxLDk0IEBACisjIENvcHlyaWdodCAoQykgMjAx
MSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisjIGFyZSBtZXQ6CisjIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAyLiAgUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyMgICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisjCisjIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycgQU5ECisjIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisjIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyMgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IKKyMgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAorIyBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUgorIyBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUgorIyBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLAorIyBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQorIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorCitpbXBvcnQgb3MKK2ltcG9ydCBwZGIKK2ltcG9ydCBjU3Ry
aW5nSU8gYXMgU3RyaW5nSU8KK2ltcG9ydCBzeXMKK2ltcG9ydCB1bml0dGVzdAorCitmcm9tIHdl
YmtpdHB5LnRlc3QubWFpbiBpbXBvcnQgVGVzdGVyCisKKworY2xhc3MgRHVtbXlSZXN1bHQob2Jq
ZWN0KToKKyAgICB3YXNTdWNjZXNzZnVsID0gVHJ1ZQorCisKK2NsYXNzIER1bW15UnVubmVyKG9i
amVjdCk6CisgICAgZGVmIF9faW5pdF9fKHNlbGYsIHN0cmVhbSwgKmFyZ3MsICoqa3dhcmdzKToK
KyAgICAgICAgc2VsZi5zdHJlYW0gPSBzdHJlYW0KKyAgICAgICAgcGFzcworCisgICAgZGVmIHJ1
bihzZWxmLCBzdWl0ZSk6CisgICAgICAgIHNlbGYuc3RyZWFtLndyaXRlKCdSYW4gJWQgdGVzdHMu
JyAlIHN1aXRlLmNvdW50VGVzdENhc2VzKCkpCisgICAgICAgIHJldHVybiBEdW1teVJlc3VsdCgp
CisKK3dlYmtpdF9yb290ID0gb3MucGF0aC5kaXJuYW1lKG9zLnBhdGguZGlybmFtZShvcy5wYXRo
LmRpcm5hbWUob3MucGF0aC5kaXJuYW1lKG9zLnBhdGguZGlybmFtZShfX2ZpbGVfXykpKSkpCisK
KworY2xhc3MgTWFpblRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgorICAgIGRlZiBjbWQoc2VsZiwg
YXJncywgY3dkPU5vbmUsIHN0ZGVycj1Ob25lLCByZXQ9VHJ1ZSwgbnVtX3Rlc3RzPU5vbmUpOgor
ICAgICAgICBvbGRjd2QgPSBvcy5nZXRjd2QoKQorICAgICAgICBpZiBub3QgY3dkOgorICAgICAg
ICAgICAgY3dkID0gJy9zcmMvd2snCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIG9zLmNoZGly
KGN3ZCkKKyAgICAgICAgICAgIGVyciA9IFN0cmluZ0lPLlN0cmluZ0lPKCkKKyAgICAgICAgICAg
IHRlc3RlciA9IFRlc3RlcihlcnIpCisgICAgICAgICAgICBvcHRpb25zLCBhcmdzID0gdGVzdGVy
LnBhcnNlX2FyZ3MoYXJncykKKyAgICAgICAgICAgIHRlc3Rlci5jb25maWd1cmUob3B0aW9ucykK
KyAgICAgICAgICAgIHRlc3Rlci5hZGRfdHJlZShvcy5wYXRoLmpvaW4od2Via2l0X3Jvb3QsICdU
b29scycsICdTY3JpcHRzJyksICd3ZWJraXRweScpCisgICAgICAgICAgICB0ZXN0ZXIucnVubmVy
ID0gRHVtbXlSdW5uZXIoZXJyKQorICAgICAgICAgICAgcmV0dXJuY29kZSA9IHRlc3Rlci5ydW4o
YXJncykKKyAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgIG9zLmNoZGlyKG9sZGN3ZCkKKwor
ICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJldCwgcmV0dXJuY29kZSkKKyAgICAgICAgYWN0dWFs
X2VyciA9IGVyci5nZXR2YWx1ZSgpCisgICAgICAgIGlmIHN0ZGVyciBpcyBub3QgTm9uZToKKyAg
ICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYWN0dWFsX2Vyciwgc3RkZXJyKQorICAgICAgICBp
ZiBudW1fdGVzdHMgaXMgbm90IE5vbmU6CisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoKCdS
YW4gJWQgdGVzdCcgJSBudW1fdGVzdHMpIGluIGFjdHVhbF9lcnIsIGFjdHVhbF9lcnIpCisKKyAg
ICBkZWYgaW50ZWdyYXRpb25fdGVzdF9wYWNrYWdlKHNlbGYpOgorICAgICAgICBzZWxmLmNtZChb
J3dlYmtpdHB5LmNvbW1vbi53YXRjaGxpc3QnXSwgbnVtX3Rlc3RzPTM3KQorCisgICAgZGVmIGlu
dGVncmF0aW9uX3Rlc3RfbW9kdWxlKHNlbGYpOgorICAgICAgICBzZWxmLmNtZChbJ3dlYmtpdHB5
LmNvbW1vbi53YXRjaGxpc3Qud2F0Y2hsaXN0X3VuaXR0ZXN0J10sIG51bV90ZXN0cz0xMCkKKwor
ICAgIGRlZiBpbnRlZ3JhdGlvbl90ZXN0X2NsYXNzKHNlbGYpOgorICAgICAgICBzZWxmLmNtZChb
J3dlYmtpdHB5LmNvbW1vbi53YXRjaGxpc3Qud2F0Y2hsaXN0X3VuaXR0ZXN0LldhdGNoTGlzdFRl
c3QnXSwgbnVtX3Rlc3RzPTEwKQorCisgICAgZGVmIGludGVncmF0aW9uX3Rlc3RfbWV0aG9kKHNl
bGYpOgorICAgICAgICBzZWxmLmNtZChbJ3dlYmtpdHB5LmNvbW1vbi53YXRjaGxpc3Qud2F0Y2hs
aXN0X3VuaXR0ZXN0LldhdGNoTGlzdFRlc3QudGVzdF9maWxlbmFtZV9kZWZpbml0aW9uJ10sIG51
bV90ZXN0cz0xKQorCisgICAgZGVmIGludGVncmF0aW9uX3Rlc3RfZGlyZWN0b3J5KHNlbGYpOgor
ICAgICAgICBzZWxmLmNtZChbJ3dlYmtpdHB5L2NvbW1vbi93YXRjaGxpc3QnXSwgbnVtX3Rlc3Rz
PTM3KQorCisgICAgZGVmIGludGVncmF0aW9uX3Rlc3RfY3dkKHNlbGYpOgorICAgICAgICBzZWxm
LmNtZChbJy4nXSwgY3dkPScvc3JjL3drL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL3dh
dGNobGlzdCcsIG51bV90ZXN0cz0zNykKKworICAgIGRlZiBpbnRlZ3JhdGlvbl90ZXN0X2N3ZChz
ZWxmKToKKyAgICAgICAgc2VsZi5jbWQoWyd3YXRjaGxpc3QnXSwgY3dkPScvc3JjL3drL1Rvb2xz
L1NjcmlwdHMvd2Via2l0cHkvY29tbW9uJywgbnVtX3Rlc3RzPTM3KQorCisgICAgZGVmIGludGVn
cmF0aW9uX3Rlc3RfZmlsZV9pbl9jd2Qoc2VsZik6CisgICAgICAgIHNlbGYuY21kKFsnd2F0Y2hs
aXN0L3dhdGNobGlzdF91bml0dGVzdC5weSddLCBjd2Q9Jy9zcmMvd2svVG9vbHMvU2NyaXB0cy93
ZWJraXRweS9jb21tb24nLCBudW1fdGVzdHM9MTApCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>125484</attachid>
            <date>2012-02-04 01:32:41 -0800</date>
            <delta_ts>2012-02-04 02:06:23 -0800</delta_ts>
            <desc>work in progress</desc>
            <filename>bug-77807-20120204013240.patch</filename>
            <type>text/plain</type>
            <size>5181</size>
            <attacher name="Dirk Pranke">dpranke</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA2NzIxCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dl
YmtpdHB5L3Rlc3QvbWFpbi5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdGVzdC9tYWluLnB5
CmluZGV4IDNkZWMyODM4YWVhZjhmYjlhMTFmZTcxMjYxNWRlZmE3OTNkYzU3YjcuLmFmNTE1M2Yy
ZGI3YjlhY2FmZWM2YzAwNWJkMTcyNzE4N2QxZmI3NmEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Njcmlw
dHMvd2Via2l0cHkvdGVzdC9tYWluLnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdGVz
dC9tYWluLnB5CkBAIC0yNyw4ICsyNywxMCBAQCBpbXBvcnQgbG9nZ2luZwogaW1wb3J0IG9wdHBh
cnNlCiBpbXBvcnQgb3MKIGltcG9ydCBwZGIKK2ltcG9ydCByZQogaW1wb3J0IFN0cmluZ0lPCiBp
bXBvcnQgc3lzCitpbXBvcnQgdGltZQogaW1wb3J0IHRyYWNlYmFjawogaW1wb3J0IHVuaXR0ZXN0
CiAKQEAgLTEzNSw3ICsxMzcsNyBAQCBjbGFzcyBUZXN0ZXIob2JqZWN0KToKICAgICAgICAgICAg
IGZyb20gd2Via2l0cHkudGhpcmRwYXJ0eS5hdXRvaW5zdGFsbGVkLnhtbHJ1bm5lciBpbXBvcnQg
WE1MVGVzdFJ1bm5lcgogICAgICAgICAgICAgc2VsZi5ydW5uZXIgPSBYTUxUZXN0UnVubmVyKG91
dHB1dD0ndGVzdC13ZWJraXRweS14bWwtcmVwb3J0cycpCiAgICAgICAgIGVsc2U6Ci0gICAgICAg
ICAgICBzZWxmLnJ1bm5lciA9IHVuaXR0ZXN0LlRleHRUZXN0UnVubmVyKHNlbGYuc3RkZXJyLCB2
ZXJib3NpdHk9c2VsZi5fdmVyYm9zaXR5KQorICAgICAgICAgICAgc2VsZi5ydW5uZXIgPSBUZXN0
UnVubmVyKHNlbGYuc3RkZXJyLCBzZWxmLl92ZXJib3NpdHksIG9wdGlvbnMudGltaW5nKQogCiAg
ICAgZGVmIGNvbmZpZ3VyZV9sb2dnaW5nKHNlbGYpOgogICAgICAgICAiIiJDb25maWd1cmUgdGhl
IHJvb3QgbG9nZ2VyLgpAQCAtMjE3LDcgKzIxOSw2IEBAIGNsYXNzIFRlc3RlcihvYmplY3QpOgog
ICAgICAgICBleGNlcHQgTG9hZGVyRXJyb3IsIGU6CiAgICAgICAgICAgICByZXR1cm4gRmFsc2UK
IAotCiAgICAgZGVmIF9maXhfcGF0aChzZWxmKToKICAgICAgICAgIyBNYWtlIHN1cmUgUFlUSE9O
UEFUSCBpcyBzZXQgdXAgY29ycmVjdGx5LgogICAgICAgICBzeXMucGF0aCA9IFt0cmVlLnRvcF9k
aXJlY3RvcnkgZm9yIHRyZWUgaW4gc2VsZi50cmVlcyBpZiB0cmVlLnRvcF9kaXJlY3Rvcnkgbm90
IGluIHN5cy5wYXRoXSArIHN5cy5wYXRoCkBAIC0zNzYsMyArMzc3LDEwNCBAQCBjbGFzcyBUZXN0
TG9hZGVyKHVuaXR0ZXN0LlRlc3RMb2FkZXIpOgogICAgICAgICB0ZXN0Rm5OYW1lcyA9IGZpbHRl
cihpc1Rlc3RNZXRob2QsIGRpcih0ZXN0Q2FzZUNsYXNzKSkKICAgICAgICAgdGVzdEZuTmFtZXMu
c29ydCgpCiAgICAgICAgIHJldHVybiB0ZXN0Rm5OYW1lcworCisKK2NsYXNzIFRlc3RSdW5uZXIo
dW5pdHRlc3QuVGV4dFRlc3RSdW5uZXIpOgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBzdHJlYW0s
IHZlcmJvc2l0eSwgdGltaW5nKToKKyAgICAgICAgc3VwZXIoVGVzdFJ1bm5lciwgc2VsZikuX19p
bml0X18oc3RyZWFtLCAxLCB2ZXJib3NpdHkpCisgICAgICAgIHNlbGYudGltaW5nID0gdGltaW5n
CisKKyAgICBkZWYgcnVuKHNlbGYsIHRlc3QpOgorICAgICAgICByZXN1bHQgPSBUZXN0UmVzdWx0
KHNlbGYuc3RyZWFtLCBzZWxmLnZlcmJvc2l0eSwgc2VsZi50aW1pbmcsIHRlc3QuY291bnRUZXN0
Q2FzZXMoKSkKKyAgICAgICAgc3RhcnQgPSB0aW1lLnRpbWUoKQorICAgICAgICB0ZXN0KHJlc3Vs
dCkKKyAgICAgICAgc3RvcCA9IHRpbWUudGltZSgpCisgICAgICAgIGlmIHNlbGYudmVyYm9zaXR5
ID09IDE6CisgICAgICAgICAgICByZXN1bHQuZXJhc2UoKQorICAgICAgICBlbGlmIHJlc3VsdC5z
aG93QWxsIG9yIHJlc3VsdC5udW1fZmFpbGVkOgorICAgICAgICAgICAgc2VsZi5zdHJlYW0ud3Jp
dGVsbigpCisKKyAgICAgICAgdG90YWxfZGVsYXkgPSAnJS4zZiBzZWNvbmRzJyAlIChzdG9wIC0g
c3RhcnQpCisgICAgICAgIGlmIHJlc3VsdC5udW1fcnVuID4gMSBhbmQgcmVzdWx0Lm51bV9mYWls
ZWQ6CisgICAgICAgICAgICBzZWxmLnN0cmVhbS53cml0ZWxuKCclZCB0ZXN0cyBydW4gaW4gJXM7
ICVkIGZhaWxlZC4nICUgKHJlc3VsdC5udW1fcnVuLCB0b3RhbF9kZWxheSwgcmVzdWx0Lm51bV9m
YWlsZWQpKQorICAgICAgICBlbGlmIHJlc3VsdC5udW1fcnVuID4gMToKKyAgICAgICAgICAgIHNl
bGYuc3RyZWFtLndyaXRlbG4oJyVkIHRlc3RzIHJ1biBpbiAlczsgYWxsIHBhc3NlZC4nICUgKHJl
c3VsdC5udW1fcnVuLCB0b3RhbF9kZWxheSkpCisgICAgICAgIGVsaWYgbnVtX2Vycm9yczoKKyAg
ICAgICAgICAgIHNlbGYuc3RyZWFtLndyaXRlbG4oJzEgdGVzdCBydW4gaW4gJXM7IGl0IGZhaWxl
ZC4nICUgKHRvdGFsX2RlbGF5KSkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHNlbGYuc3Ry
ZWFtLndyaXRlbG4oJzEgdGVzdCBydW4gaW4gJXM7IGl0IHBhc3NlZC4nICUgKHRvdGFsX2RlbGF5
KSkKKyAgICAgICAgcmV0dXJuIHJlc3VsdAorCisKK2NsYXNzIFRlc3RSZXN1bHQodW5pdHRlc3Qu
X1RleHRUZXN0UmVzdWx0KToKKyAgICBkZWYgX19pbml0X18oc2VsZiwgc3RyZWFtLCB2ZXJib3Np
dHksIHRpbWluZywgbnVtX3Rlc3RzKToKKyAgICAgICAgc3VwZXIoVGVzdFJlc3VsdCwgc2VsZiku
X19pbml0X18oc3RyZWFtLCBGYWxzZSwgdmVyYm9zaXR5KQorICAgICAgICBzZWxmLnZlcmJvc2l0
eSA9IHZlcmJvc2l0eQorICAgICAgICBzZWxmLnRpbWluZyA9IHRpbWluZworICAgICAgICBzZWxm
Lm51bV9ydW4gPSAwCisgICAgICAgIHNlbGYubnVtX3Bhc3NlZCA9IDAKKyAgICAgICAgc2VsZi5u
dW1fZmFpbGVkID0gMAorICAgICAgICBzZWxmLm51bV90ZXN0cyA9IG51bV90ZXN0cworICAgICAg
ICBzZWxmLnNob3dBbGwgPSBzZWxmLnNob3dBbGwgb3IgdGltaW5nCisgICAgICAgIHNlbGYuZGVz
Y1JlZ2V4cCA9IHJlLmNvbXBpbGUoIihcdyspIFwoKFtcdy5dKylcKSIpCisgICAgICAgIHNlbGYu
X2J1ZmZlciA9ICcnCisKKyAgICBkZWYgZ2V0RGVzY3JpcHRpb24oc2VsZiwgdGVzdCk6CisgICAg
ICAgIG0gPSBzZWxmLmRlc2NSZWdleHAubWF0Y2goc3RyKHRlc3QpKQorICAgICAgICByZXR1cm4g
IiVzLiVzIiAlIChtLmdyb3VwKDIpLCBtLmdyb3VwKDEpKQorCisgICAgZGVmIF93cml0ZV9zdGF0
dXMoc2VsZiwgdGVzdCk6CisgICAgICAgIHBlcmNlbnRfY29tcGxldGUgPSAxMDAgKiAoc2VsZi5u
dW1fcnVuKSAvIHNlbGYubnVtX3Rlc3RzCisgICAgICAgIHNlbGYuZXJhc2UoKQorICAgICAgICBz
ZWxmLl9idWZmZXIgPSAnJTJkJSU6ICVkIHBhc3NlZCwgJWQgZmFpbGVkLCAlZCBsZWZ0IChydW5u
aW5nICVzIC4uLikuJyAlIChwZXJjZW50X2NvbXBsZXRlLCBzZWxmLm51bV9wYXNzZWQsIHNlbGYu
bnVtX2ZhaWxlZCwgc2VsZi5udW1fdGVzdHMgLSBzZWxmLm51bV9ydW4sIHNlbGYuZ2V0RGVzY3Jp
cHRpb24odGVzdCkpCisgICAgICAgIHNlbGYuc3RyZWFtLndyaXRlKHNlbGYuX2J1ZmZlcikKKyAg
ICAgICAgc2VsZi5zdHJlYW0uZmx1c2goKQorCisgICAgZGVmIGVyYXNlKHNlbGYpOgorICAgICAg
ICBpZiBzZWxmLl9idWZmZXI6CisgICAgICAgICAgICBzZWxmLnN0cmVhbS53cml0ZSgnXGInICog
bGVuKHNlbGYuX2J1ZmZlcikgKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICcgJyAqIGxl
bihzZWxmLl9idWZmZXIpICsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAnXGInICogbGVu
KHNlbGYuX2J1ZmZlcikpCisgICAgICAgICAgICBzZWxmLnN0cmVhbS5fYnVmZmVyID0gJycKKwor
ICAgIGRlZiBfd3JpdGVfcmVzdWx0KHNlbGYsIHRlc3QsIGVycj1Ob25lKToKKyAgICAgICAgaWYg
c2VsZi50aW1pbmcgYW5kIGVycjoKKyAgICAgICAgICAgIG1zZyA9ICcgZmFpbGVkIGFmdGVyICUu
M2ZzLicgJSAodGltZS50aW1lKCkgLSBzZWxmLnN0YXJ0KQorICAgICAgICBlbGlmIHNlbGYudGlt
aW5nOgorICAgICAgICAgICAgbXNnID0gJyBwYXNzZWQgaW4gJS4zZnMuJyAlICh0aW1lLnRpbWUo
KSAtIHNlbGYuc3RhcnQpCisgICAgICAgIGVsaWYgZXJyOgorICAgICAgICAgICAgbXNnID0gJyBm
YWlsZWQ6JworICAgICAgICBlbHNlOgorICAgICAgICAgICAgbXNnID0gJyBwYXNzZWQuJworCisg
ICAgICAgIGlmIGVycjoKKyAgICAgICAgICAgIHNlbGYuZXJhc2UoKQorICAgICAgICAgICAgaWYg
bm90IHNlbGYuc2hvd0FsbDoKKyAgICAgICAgICAgICAgICBzZWxmLnN0cmVhbS53cml0ZShzZWxm
LmdldERlc2NyaXB0aW9uKHRlc3QpKQorICAgICAgICAgICAgc2VsZi5zdHJlYW0ud3JpdGVsbiht
c2cpCisgICAgICAgICAgICBmb3IgbGluZSBpbiBlcnIuc3BsaXRsaW5lcygpOgorICAgICAgICAg
ICAgICAgIHNlbGYuc3RyZWFtLndyaXRlbG4oJyAgICAnICsgbGluZSkKKyAgICAgICAgICAgIHNl
bGYuc3RyZWFtLndyaXRlbG4oKQorICAgICAgICBlbGlmIHNlbGYuc2hvd0FsbDoKKyAgICAgICAg
ICAgIHNlbGYuc3RyZWFtLndyaXRlbG4obXNnKQorCisgICAgZGVmIHN0YXJ0VGVzdChzZWxmLCB0
ZXN0KToKKyAgICAgICAgc2VsZi5udW1fcnVuICs9IDEKKyAgICAgICAgaWYgc2VsZi5zaG93QWxs
OgorICAgICAgICAgICAgc2VsZi5zdHJlYW0ud3JpdGUoc2VsZi5nZXREZXNjcmlwdGlvbih0ZXN0
KSkKKyAgICAgICAgICAgIHNlbGYuc3RyZWFtLl9idWZmZXIgPSAnIC4uLiAnCisgICAgICAgICAg
ICBzZWxmLnN0cmVhbS53cml0ZShzZWxmLnN0cmVhbS5fYnVmZmVyKQorICAgICAgICBlbGlmIHNl
bGYuZG90czoKKyAgICAgICAgICAgIHNlbGYuX3dyaXRlX3N0YXR1cyh0ZXN0KQorICAgICAgICBz
ZWxmLnN0YXJ0ID0gdGltZS50aW1lKCkKKworICAgIGRlZiBhZGRTdWNjZXNzKHNlbGYsIHRlc3Qp
OgorICAgICAgICBzZWxmLm51bV9wYXNzZWQgKz0gMQorICAgICAgICBzZWxmLl93cml0ZV9yZXN1
bHQodGVzdCkKKworICAgIGRlZiBhZGRFcnJvcihzZWxmLCB0ZXN0LCBlcnIpOgorICAgICAgICBz
ZWxmLm51bV9mYWlsZWQgKz0gMQorICAgICAgICBzZWxmLl93cml0ZV9yZXN1bHQodGVzdCwgc2Vs
Zi5fZXhjX2luZm9fdG9fc3RyaW5nKGVyciwgdGVzdCkpCisKKyAgICBkZWYgYWRkRmFpbHVyZShz
ZWxmLCB0ZXN0LCBlcnIpOgorICAgICAgICBzZWxmLmFkZEVycm9yKHRlc3QsIGVycikK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>125486</attachid>
            <date>2012-02-04 02:06:27 -0800</date>
            <delta_ts>2012-02-04 02:16:18 -0800</delta_ts>
            <desc>attachment 125484 from bug 77807 merged to HEAD, output tweaked</desc>
            <filename>bug-77807-20120204020627.patch</filename>
            <type>text/plain</type>
            <size>6585</size>
            <attacher name="Dirk Pranke">dpranke</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA2NzM1CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggMTk4N2ZjYjZhYTNmOThjYmU0NGQ2ZjljZWMzNmU3M2Jh
NGY0ZWQ0ZS4uYWVjNDk5OGNhYWM2NjQxNjdkZTAxNGU2ZWMzZjZkYzdhZTQ2ZGI5OCAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI4
IEBACisyMDEyLTAyLTA0ICBEaXJrIFByYW5rZSAgPGRwcmFua2VAY2hyb21pdW0ub3JnPgorCisg
ICAgICAgIHRlc3Qtd2Via2l0cHkncyBsb2dnaW5nIHNob3VsZCBiZSBjbG9zZXIgdG8gbmV3LXJ1
bi13ZWJraXQtdGVzdHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTc3ODA3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3Rlc3QvbWFpbi5weToKKyAgICAgICAgKFRlc3Rlci5w
YXJzZV9hcmdzKToKKyAgICAgICAgKFRlc3Rlci5fcnVuX3Rlc3RzKToKKyAgICAgICAgKFRlc3Rl
ci5fbG9nX2V4Y2VwdGlvbik6CisgICAgICAgIChUZXN0UnVubmVyKToKKyAgICAgICAgKFRlc3RS
dW5uZXIuX19pbml0X18pOgorICAgICAgICAoVGVzdFJ1bm5lci5ydW4pOgorICAgICAgICAoVGVz
dFJlc3VsdCk6CisgICAgICAgIChUZXN0UmVzdWx0Ll9faW5pdF9fKToKKyAgICAgICAgKFRlc3RS
ZXN1bHQuZ2V0RGVzY3JpcHRpb24pOgorICAgICAgICAoVGVzdFJlc3VsdC5fd3JpdGVfc3RhdHVz
KToKKyAgICAgICAgKFRlc3RSZXN1bHQuZXJhc2UpOgorICAgICAgICAoVGVzdFJlc3VsdC5fd3Jp
dGVfcmVzdWx0KToKKyAgICAgICAgKFRlc3RSZXN1bHQuc3RhcnRUZXN0KToKKyAgICAgICAgKFRl
c3RSZXN1bHQuYWRkU3VjY2Vzcyk6CisgICAgICAgIChUZXN0UmVzdWx0LmFkZEVycm9yKToKKyAg
ICAgICAgKFRlc3RSZXN1bHQuYWRkRmFpbHVyZSk6CisKIDIwMTItMDItMDQgIE9qYW4gVmFmYWkg
IDxvamFuQGNocm9taXVtLm9yZz4KIAogICAgICAgICBjaGVjay13ZWJraXQtc3R5bGUgaXMgdGhy
b3dpbmcgYW4gZXhjZXB0aW9uCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3Rl
c3QvbWFpbi5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdGVzdC9tYWluLnB5CmluZGV4IDc4
YzM5ZGI1NTc5NTc2YmZmN2UyYjM3NzMzODkyNWFhZGE5OWVlY2IuLmM2MTAzZGE0NjM0NzNiNjdh
MzdhOGNkNTY1ZTUzNjEwNmE2ZjRhMTUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0
cHkvdGVzdC9tYWluLnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdGVzdC9tYWluLnB5
CkBAIC0yNSw4ICsyNSwxMSBAQAogaW1wb3J0IGxvZ2dpbmcKIGltcG9ydCBvcHRwYXJzZQogaW1w
b3J0IG9zCitpbXBvcnQgcGRiCitpbXBvcnQgcmUKIGltcG9ydCBTdHJpbmdJTwogaW1wb3J0IHN5
cworaW1wb3J0IHRpbWUKIGltcG9ydCB0cmFjZWJhY2sKIGltcG9ydCB1bml0dGVzdAogCkBAIC02
MSw2ICs2NCw4IEBAIGNsYXNzIFRlc3RlcihvYmplY3QpOgogICAgICAgICAgICAgICAgICAgICAg
ICAgICBoZWxwPSdydW4gcXVpZXRseSAoZXJyb3JzLCB3YXJuaW5ncywgYW5kIHByb2dyZXNzIG9u
bHkpJyksCiAgICAgICAgIHBhcnNlci5hZGRfb3B0aW9uKCctcycsICctLXNpbGVudCcsIGFjdGlv
bj0nc3RvcmVfdHJ1ZScsIGRlZmF1bHQ9RmFsc2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
IGhlbHA9J3J1biBzaWxlbnRseSAoZXJyb3JzIGFuZCB3YXJuaW5ncyBvbmx5KScpLAorICAgICAg
ICBwYXJzZXIuYWRkX29wdGlvbignLXQnLCAnLS10aW1pbmcnLCBhY3Rpb249J3N0b3JlX3RydWUn
LCBkZWZhdWx0PUZhbHNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSdkaXNwbGF5
IHBlci10ZXN0IHRpbWluZyBpbmZvJyksCiAgICAgICAgIHBhcnNlci5hZGRfb3B0aW9uKCcteCcs
ICctLXhtbCcsIGFjdGlvbj0nc3RvcmVfdHJ1ZScsIGRlZmF1bHQ9RmFsc2UsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGhlbHA9J291dHB1dCB4VW5pdC1zdHlsZSBYTUwgb3V0cHV0JykKICAg
ICAgICAgcGFyc2VyLmFkZF9vcHRpb24oJy12JywgJy0tdmVyYm9zZScsIGFjdGlvbj0nY291bnQn
LCBkZWZhdWx0PTAsCkBAIC0yMjYsNyArMjMxLDcgQEAgY2xhc3MgVGVzdGVyKG9iamVjdCk6CiAg
ICAgICAgICAgICBmcm9tIHdlYmtpdHB5LnRoaXJkcGFydHkuYXV0b2luc3RhbGxlZC54bWxydW5u
ZXIgaW1wb3J0IFhNTFRlc3RSdW5uZXIKICAgICAgICAgICAgIHRlc3RfcnVubmVyID0gWE1MVGVz
dFJ1bm5lcihvdXRwdXQ9J3Rlc3Qtd2Via2l0cHkteG1sLXJlcG9ydHMnKQogICAgICAgICBlbHNl
OgotICAgICAgICAgICAgdGVzdF9ydW5uZXIgPSB1bml0dGVzdC5UZXh0VGVzdFJ1bm5lcih2ZXJi
b3NpdHk9c2VsZi5fdmVyYm9zaXR5KQorICAgICAgICAgICAgdGVzdF9ydW5uZXIgPSBUZXN0UnVu
bmVyKHN5cy5zdGRlcnIsIHNlbGYuX3ZlcmJvc2l0eSwgc2VsZi5fb3B0aW9ucy50aW1pbmcpCiAK
ICAgICAgICAgX2xvZy5kZWJ1ZygiUnVubmluZyB0aGUgdGVzdHMuIikKICAgICAgICAgcmVzdWx0
ID0gdGVzdF9ydW5uZXIucnVuKHRlc3Rfc3VpdGUpCkBAIC0yNDQsMyArMjQ5LDEwNiBAQCBjbGFz
cyBUZXN0ZXIob2JqZWN0KToKICAgICAgICAgdHJhY2ViYWNrLnByaW50X2V4YyhmaWxlPXMpCiAg
ICAgICAgIGZvciBsIGluIHMuYnVmbGlzdDoKICAgICAgICAgICAgIF9sb2cuZXJyb3IoJyAgJyAr
IGwucnN0cmlwKCkpCisKKworY2xhc3MgVGVzdFJ1bm5lcih1bml0dGVzdC5UZXh0VGVzdFJ1bm5l
cik6CisgICAgZGVmIF9faW5pdF9fKHNlbGYsIHN0cmVhbSwgdmVyYm9zaXR5LCB0aW1pbmcpOgor
ICAgICAgICBzdXBlcihUZXN0UnVubmVyLCBzZWxmKS5fX2luaXRfXyhzdHJlYW0sIDEsIHZlcmJv
c2l0eSkKKyAgICAgICAgc2VsZi50aW1pbmcgPSB0aW1pbmcKKworICAgIGRlZiBydW4oc2VsZiwg
dGVzdCk6CisgICAgICAgIHJlc3VsdCA9IFRlc3RSZXN1bHQoc2VsZi5zdHJlYW0sIHNlbGYudmVy
Ym9zaXR5LCBzZWxmLnRpbWluZywgdGVzdC5jb3VudFRlc3RDYXNlcygpKQorICAgICAgICBzdGFy
dCA9IHRpbWUudGltZSgpCisgICAgICAgIHRlc3QocmVzdWx0KQorICAgICAgICBzdG9wID0gdGlt
ZS50aW1lKCkKKyAgICAgICAgaWYgc2VsZi52ZXJib3NpdHkgPT0gMToKKyAgICAgICAgICAgIHJl
c3VsdC5lcmFzZSgpCisgICAgICAgIGVsaWYgcmVzdWx0LnNob3dBbGwgb3IgcmVzdWx0Lm51bV9m
YWlsZWQ6CisgICAgICAgICAgICBzZWxmLnN0cmVhbS53cml0ZWxuKCkKKworICAgICAgICB0b3Rh
bF9kZWxheSA9ICclLjNmIHNlY29uZHMnICUgKHN0b3AgLSBzdGFydCkKKyAgICAgICAgaWYgcmVz
dWx0Lm51bV9ydW4gPiAxIGFuZCByZXN1bHQubnVtX2ZhaWxlZDoKKyAgICAgICAgICAgIHNlbGYu
c3RyZWFtLndyaXRlbG4oJyVkIHRlc3RzIHJhbiBpbiAlczsgJWQgZmFpbGVkLicgJSAocmVzdWx0
Lm51bV9ydW4sIHRvdGFsX2RlbGF5LCByZXN1bHQubnVtX2ZhaWxlZCkpCisgICAgICAgIGVsaWYg
cmVzdWx0Lm51bV9ydW4gPiAxOgorICAgICAgICAgICAgc2VsZi5zdHJlYW0ud3JpdGVsbignJWQg
dGVzdHMgcmFuIGluICVzOyBhbGwgcGFzc2VkLicgJSAocmVzdWx0Lm51bV9ydW4sIHRvdGFsX2Rl
bGF5KSkKKyAgICAgICAgZWxpZiBudW1fZXJyb3JzOgorICAgICAgICAgICAgc2VsZi5zdHJlYW0u
d3JpdGVsbignMSB0ZXN0IHJhbiBpbiAlczsgaXQgZmFpbGVkLicgJSAodG90YWxfZGVsYXkpKQor
ICAgICAgICBlbHNlOgorICAgICAgICAgICAgc2VsZi5zdHJlYW0ud3JpdGVsbignMSB0ZXN0IHJh
biBpbiAlczsgaXQgcGFzc2VkLicgJSAodG90YWxfZGVsYXkpKQorICAgICAgICByZXR1cm4gcmVz
dWx0CisKKworY2xhc3MgVGVzdFJlc3VsdCh1bml0dGVzdC5fVGV4dFRlc3RSZXN1bHQpOgorICAg
IGRlZiBfX2luaXRfXyhzZWxmLCBzdHJlYW0sIHZlcmJvc2l0eSwgdGltaW5nLCBudW1fdGVzdHMp
OgorICAgICAgICBzdXBlcihUZXN0UmVzdWx0LCBzZWxmKS5fX2luaXRfXyhzdHJlYW0sIEZhbHNl
LCB2ZXJib3NpdHkpCisgICAgICAgIHNlbGYudmVyYm9zaXR5ID0gdmVyYm9zaXR5CisgICAgICAg
IHNlbGYudGltaW5nID0gdGltaW5nCisgICAgICAgIHNlbGYubnVtX3J1biA9IDAKKyAgICAgICAg
c2VsZi5udW1fcGFzc2VkID0gMAorICAgICAgICBzZWxmLm51bV9mYWlsZWQgPSAwCisgICAgICAg
IHNlbGYubnVtX3Rlc3RzID0gbnVtX3Rlc3RzCisgICAgICAgIHNlbGYuc2hvd0FsbCA9IHNlbGYu
c2hvd0FsbCBvciB0aW1pbmcKKyAgICAgICAgc2VsZi5kZXNjUmVnZXhwID0gcmUuY29tcGlsZSgi
KFx3KykgXCgoW1x3Ll0rKVwpIikKKyAgICAgICAgc2VsZi5fYnVmZmVyID0gJycKKworICAgIGRl
ZiBnZXREZXNjcmlwdGlvbihzZWxmLCB0ZXN0KToKKyAgICAgICAgbSA9IHNlbGYuZGVzY1JlZ2V4
cC5tYXRjaChzdHIodGVzdCkpCisgICAgICAgIHJldHVybiAiJXMuJXMiICUgKG0uZ3JvdXAoMiks
IG0uZ3JvdXAoMSkpCisKKyAgICBkZWYgX3dyaXRlX3N0YXR1cyhzZWxmLCB0ZXN0KToKKyAgICAg
ICAgcGVyY2VudF9jb21wbGV0ZSA9IDEwMCAqIChzZWxmLm51bV9ydW4pIC8gc2VsZi5udW1fdGVz
dHMKKyAgICAgICAgc2VsZi5lcmFzZSgpCisgICAgICAgIHNlbGYuX2J1ZmZlciA9ICclMmQlJTog
JWQgKyAlZCAtICVkICglcyAuLi4pJyAlICgKKyAgICAgICAgICAgIHBlcmNlbnRfY29tcGxldGUs
IHNlbGYubnVtX3Rlc3RzIC0gc2VsZi5udW1fcnVuLAorICAgICAgICAgICAgc2VsZi5udW1fcGFz
c2VkLCBzZWxmLm51bV9mYWlsZWQsIHNlbGYuZ2V0RGVzY3JpcHRpb24odGVzdCkpCisgICAgICAg
IHNlbGYuc3RyZWFtLndyaXRlKHNlbGYuX2J1ZmZlcikKKyAgICAgICAgc2VsZi5zdHJlYW0uZmx1
c2goKQorCisgICAgZGVmIGVyYXNlKHNlbGYpOgorICAgICAgICBpZiBzZWxmLl9idWZmZXI6Cisg
ICAgICAgICAgICBzZWxmLnN0cmVhbS53cml0ZSgnXGInICogbGVuKHNlbGYuX2J1ZmZlcikgKwor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICcgJyAqIGxlbihzZWxmLl9idWZmZXIpICsKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAnXGInICogbGVuKHNlbGYuX2J1ZmZlcikpCisgICAg
ICAgICAgICBzZWxmLnN0cmVhbS5fYnVmZmVyID0gJycKKworICAgIGRlZiBfd3JpdGVfcmVzdWx0
KHNlbGYsIHRlc3QsIGVycj1Ob25lKToKKyAgICAgICAgaWYgc2VsZi50aW1pbmcgYW5kIGVycjoK
KyAgICAgICAgICAgIG1zZyA9ICcgZmFpbGVkIGFmdGVyICUuM2ZzLicgJSAodGltZS50aW1lKCkg
LSBzZWxmLnN0YXJ0KQorICAgICAgICBlbGlmIHNlbGYudGltaW5nOgorICAgICAgICAgICAgbXNn
ID0gJyBwYXNzZWQgaW4gJS4zZnMuJyAlICh0aW1lLnRpbWUoKSAtIHNlbGYuc3RhcnQpCisgICAg
ICAgIGVsaWYgZXJyOgorICAgICAgICAgICAgbXNnID0gJyBmYWlsZWQ6JworICAgICAgICBlbHNl
OgorICAgICAgICAgICAgbXNnID0gJyBwYXNzZWQuJworCisgICAgICAgIGlmIGVycjoKKyAgICAg
ICAgICAgIHNlbGYuZXJhc2UoKQorICAgICAgICAgICAgaWYgbm90IHNlbGYuc2hvd0FsbDoKKyAg
ICAgICAgICAgICAgICBzZWxmLnN0cmVhbS53cml0ZShzZWxmLmdldERlc2NyaXB0aW9uKHRlc3Qp
KQorICAgICAgICAgICAgc2VsZi5zdHJlYW0ud3JpdGVsbihtc2cpCisgICAgICAgICAgICBmb3Ig
bGluZSBpbiBlcnIuc3BsaXRsaW5lcygpOgorICAgICAgICAgICAgICAgIHNlbGYuc3RyZWFtLndy
aXRlbG4oJyAgICAnICsgbGluZSkKKyAgICAgICAgICAgIHNlbGYuc3RyZWFtLndyaXRlbG4oKQor
ICAgICAgICBlbGlmIHNlbGYuc2hvd0FsbDoKKyAgICAgICAgICAgIHNlbGYuc3RyZWFtLndyaXRl
bG4obXNnKQorCisgICAgZGVmIHN0YXJ0VGVzdChzZWxmLCB0ZXN0KToKKyAgICAgICAgc2VsZi5u
dW1fcnVuICs9IDEKKyAgICAgICAgaWYgc2VsZi5zaG93QWxsOgorICAgICAgICAgICAgc2VsZi5z
dHJlYW0ud3JpdGUoc2VsZi5nZXREZXNjcmlwdGlvbih0ZXN0KSkKKyAgICAgICAgICAgIHNlbGYu
c3RyZWFtLl9idWZmZXIgPSAnIC4uLiAnCisgICAgICAgICAgICBzZWxmLnN0cmVhbS53cml0ZShz
ZWxmLnN0cmVhbS5fYnVmZmVyKQorICAgICAgICBlbGlmIHNlbGYuZG90czoKKyAgICAgICAgICAg
IHNlbGYuX3dyaXRlX3N0YXR1cyh0ZXN0KQorICAgICAgICBzZWxmLnN0YXJ0ID0gdGltZS50aW1l
KCkKKworICAgIGRlZiBhZGRTdWNjZXNzKHNlbGYsIHRlc3QpOgorICAgICAgICBzZWxmLm51bV9w
YXNzZWQgKz0gMQorICAgICAgICBzZWxmLl93cml0ZV9yZXN1bHQodGVzdCkKKworICAgIGRlZiBh
ZGRFcnJvcihzZWxmLCB0ZXN0LCBlcnIpOgorICAgICAgICBzZWxmLm51bV9mYWlsZWQgKz0gMQor
ICAgICAgICBzZWxmLl93cml0ZV9yZXN1bHQodGVzdCwgc2VsZi5fZXhjX2luZm9fdG9fc3RyaW5n
KGVyciwgdGVzdCkpCisKKyAgICBkZWYgYWRkRmFpbHVyZShzZWxmLCB0ZXN0LCBlcnIpOgorICAg
ICAgICBzZWxmLmFkZEVycm9yKHRlc3QsIGVycikK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>125487</attachid>
            <date>2012-02-04 02:16:24 -0800</date>
            <delta_ts>2012-02-04 02:16:24 -0800</delta_ts>
            <desc>more tweaking of the output</desc>
            <filename>bug-77807-20120204021623.patch</filename>
            <type>text/plain</type>
            <size>6618</size>
            <attacher name="Dirk Pranke">dpranke</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA2NzM1CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggMTk4N2ZjYjZhYTNmOThjYmU0NGQ2ZjljZWMzNmU3M2Jh
NGY0ZWQ0ZS4uYWVjNDk5OGNhYWM2NjQxNjdkZTAxNGU2ZWMzZjZkYzdhZTQ2ZGI5OCAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI4
IEBACisyMDEyLTAyLTA0ICBEaXJrIFByYW5rZSAgPGRwcmFua2VAY2hyb21pdW0ub3JnPgorCisg
ICAgICAgIHRlc3Qtd2Via2l0cHkncyBsb2dnaW5nIHNob3VsZCBiZSBjbG9zZXIgdG8gbmV3LXJ1
bi13ZWJraXQtdGVzdHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTc3ODA3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3Rlc3QvbWFpbi5weToKKyAgICAgICAgKFRlc3Rlci5w
YXJzZV9hcmdzKToKKyAgICAgICAgKFRlc3Rlci5fcnVuX3Rlc3RzKToKKyAgICAgICAgKFRlc3Rl
ci5fbG9nX2V4Y2VwdGlvbik6CisgICAgICAgIChUZXN0UnVubmVyKToKKyAgICAgICAgKFRlc3RS
dW5uZXIuX19pbml0X18pOgorICAgICAgICAoVGVzdFJ1bm5lci5ydW4pOgorICAgICAgICAoVGVz
dFJlc3VsdCk6CisgICAgICAgIChUZXN0UmVzdWx0Ll9faW5pdF9fKToKKyAgICAgICAgKFRlc3RS
ZXN1bHQuZ2V0RGVzY3JpcHRpb24pOgorICAgICAgICAoVGVzdFJlc3VsdC5fd3JpdGVfc3RhdHVz
KToKKyAgICAgICAgKFRlc3RSZXN1bHQuZXJhc2UpOgorICAgICAgICAoVGVzdFJlc3VsdC5fd3Jp
dGVfcmVzdWx0KToKKyAgICAgICAgKFRlc3RSZXN1bHQuc3RhcnRUZXN0KToKKyAgICAgICAgKFRl
c3RSZXN1bHQuYWRkU3VjY2Vzcyk6CisgICAgICAgIChUZXN0UmVzdWx0LmFkZEVycm9yKToKKyAg
ICAgICAgKFRlc3RSZXN1bHQuYWRkRmFpbHVyZSk6CisKIDIwMTItMDItMDQgIE9qYW4gVmFmYWkg
IDxvamFuQGNocm9taXVtLm9yZz4KIAogICAgICAgICBjaGVjay13ZWJraXQtc3R5bGUgaXMgdGhy
b3dpbmcgYW4gZXhjZXB0aW9uCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3Rl
c3QvbWFpbi5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdGVzdC9tYWluLnB5CmluZGV4IDc4
YzM5ZGI1NTc5NTc2YmZmN2UyYjM3NzMzODkyNWFhZGE5OWVlY2IuLjM1ZGI1MGRiNjlhMjE3YmRm
Njg0NGI4YWEyMmIxOTg5YTdiMDM2MmYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0
cHkvdGVzdC9tYWluLnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdGVzdC9tYWluLnB5
CkBAIC0yNSw4ICsyNSwxMSBAQAogaW1wb3J0IGxvZ2dpbmcKIGltcG9ydCBvcHRwYXJzZQogaW1w
b3J0IG9zCitpbXBvcnQgcGRiCitpbXBvcnQgcmUKIGltcG9ydCBTdHJpbmdJTwogaW1wb3J0IHN5
cworaW1wb3J0IHRpbWUKIGltcG9ydCB0cmFjZWJhY2sKIGltcG9ydCB1bml0dGVzdAogCkBAIC02
MSw2ICs2NCw4IEBAIGNsYXNzIFRlc3RlcihvYmplY3QpOgogICAgICAgICAgICAgICAgICAgICAg
ICAgICBoZWxwPSdydW4gcXVpZXRseSAoZXJyb3JzLCB3YXJuaW5ncywgYW5kIHByb2dyZXNzIG9u
bHkpJyksCiAgICAgICAgIHBhcnNlci5hZGRfb3B0aW9uKCctcycsICctLXNpbGVudCcsIGFjdGlv
bj0nc3RvcmVfdHJ1ZScsIGRlZmF1bHQ9RmFsc2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
IGhlbHA9J3J1biBzaWxlbnRseSAoZXJyb3JzIGFuZCB3YXJuaW5ncyBvbmx5KScpLAorICAgICAg
ICBwYXJzZXIuYWRkX29wdGlvbignLXQnLCAnLS10aW1pbmcnLCBhY3Rpb249J3N0b3JlX3RydWUn
LCBkZWZhdWx0PUZhbHNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSdkaXNwbGF5
IHBlci10ZXN0IHRpbWluZyBpbmZvJyksCiAgICAgICAgIHBhcnNlci5hZGRfb3B0aW9uKCcteCcs
ICctLXhtbCcsIGFjdGlvbj0nc3RvcmVfdHJ1ZScsIGRlZmF1bHQ9RmFsc2UsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGhlbHA9J291dHB1dCB4VW5pdC1zdHlsZSBYTUwgb3V0cHV0JykKICAg
ICAgICAgcGFyc2VyLmFkZF9vcHRpb24oJy12JywgJy0tdmVyYm9zZScsIGFjdGlvbj0nY291bnQn
LCBkZWZhdWx0PTAsCkBAIC0yMjYsNyArMjMxLDcgQEAgY2xhc3MgVGVzdGVyKG9iamVjdCk6CiAg
ICAgICAgICAgICBmcm9tIHdlYmtpdHB5LnRoaXJkcGFydHkuYXV0b2luc3RhbGxlZC54bWxydW5u
ZXIgaW1wb3J0IFhNTFRlc3RSdW5uZXIKICAgICAgICAgICAgIHRlc3RfcnVubmVyID0gWE1MVGVz
dFJ1bm5lcihvdXRwdXQ9J3Rlc3Qtd2Via2l0cHkteG1sLXJlcG9ydHMnKQogICAgICAgICBlbHNl
OgotICAgICAgICAgICAgdGVzdF9ydW5uZXIgPSB1bml0dGVzdC5UZXh0VGVzdFJ1bm5lcih2ZXJi
b3NpdHk9c2VsZi5fdmVyYm9zaXR5KQorICAgICAgICAgICAgdGVzdF9ydW5uZXIgPSBUZXN0UnVu
bmVyKHN5cy5zdGRlcnIsIHNlbGYuX3ZlcmJvc2l0eSwgc2VsZi5fb3B0aW9ucy50aW1pbmcpCiAK
ICAgICAgICAgX2xvZy5kZWJ1ZygiUnVubmluZyB0aGUgdGVzdHMuIikKICAgICAgICAgcmVzdWx0
ID0gdGVzdF9ydW5uZXIucnVuKHRlc3Rfc3VpdGUpCkBAIC0yNDQsMyArMjQ5LDEwOCBAQCBjbGFz
cyBUZXN0ZXIob2JqZWN0KToKICAgICAgICAgdHJhY2ViYWNrLnByaW50X2V4YyhmaWxlPXMpCiAg
ICAgICAgIGZvciBsIGluIHMuYnVmbGlzdDoKICAgICAgICAgICAgIF9sb2cuZXJyb3IoJyAgJyAr
IGwucnN0cmlwKCkpCisKKworY2xhc3MgVGVzdFJ1bm5lcih1bml0dGVzdC5UZXh0VGVzdFJ1bm5l
cik6CisgICAgZGVmIF9faW5pdF9fKHNlbGYsIHN0cmVhbSwgdmVyYm9zaXR5LCB0aW1pbmcpOgor
ICAgICAgICBzdXBlcihUZXN0UnVubmVyLCBzZWxmKS5fX2luaXRfXyhzdHJlYW0sIDEsIHZlcmJv
c2l0eSkKKyAgICAgICAgc2VsZi50aW1pbmcgPSB0aW1pbmcKKworICAgIGRlZiBydW4oc2VsZiwg
dGVzdCk6CisgICAgICAgIHJlc3VsdCA9IFRlc3RSZXN1bHQoc2VsZi5zdHJlYW0sIHNlbGYudmVy
Ym9zaXR5LCBzZWxmLnRpbWluZywgdGVzdC5jb3VudFRlc3RDYXNlcygpKQorICAgICAgICBzdGFy
dCA9IHRpbWUudGltZSgpCisgICAgICAgIHRlc3QocmVzdWx0KQorICAgICAgICBzdG9wID0gdGlt
ZS50aW1lKCkKKyAgICAgICAgaWYgc2VsZi52ZXJib3NpdHkgPT0gMToKKyAgICAgICAgICAgIHJl
c3VsdC5lcmFzZSgpCisgICAgICAgIGVsaWYgcmVzdWx0LnNob3dBbGwgb3IgcmVzdWx0Lm51bV9m
YWlsZWQ6CisgICAgICAgICAgICBzZWxmLnN0cmVhbS53cml0ZWxuKCkKKworICAgICAgICB0b3Rh
bF9kZWxheSA9ICclLjNmIHNlY29uZHMnICUgKHN0b3AgLSBzdGFydCkKKyAgICAgICAgaWYgcmVz
dWx0Lm51bV9ydW4gPiAxIGFuZCByZXN1bHQubnVtX2ZhaWxlZDoKKyAgICAgICAgICAgIHNlbGYu
c3RyZWFtLndyaXRlbG4oJyVkIHRlc3RzIHJhbiBpbiAlczsgJWQgZmFpbGVkLicgJSAocmVzdWx0
Lm51bV9ydW4sIHRvdGFsX2RlbGF5LCByZXN1bHQubnVtX2ZhaWxlZCkpCisgICAgICAgIGVsaWYg
cmVzdWx0Lm51bV9ydW4gPiAxOgorICAgICAgICAgICAgc2VsZi5zdHJlYW0ud3JpdGVsbignJWQg
dGVzdHMgcmFuIGluICVzOyBhbGwgcGFzc2VkLicgJSAocmVzdWx0Lm51bV9ydW4sIHRvdGFsX2Rl
bGF5KSkKKyAgICAgICAgZWxpZiBudW1fZXJyb3JzOgorICAgICAgICAgICAgc2VsZi5zdHJlYW0u
d3JpdGVsbignMSB0ZXN0IHJhbiBpbiAlczsgaXQgZmFpbGVkLicgJSAodG90YWxfZGVsYXkpKQor
ICAgICAgICBlbHNlOgorICAgICAgICAgICAgc2VsZi5zdHJlYW0ud3JpdGVsbignMSB0ZXN0IHJh
biBpbiAlczsgaXQgcGFzc2VkLicgJSAodG90YWxfZGVsYXkpKQorICAgICAgICByZXR1cm4gcmVz
dWx0CisKKworY2xhc3MgVGVzdFJlc3VsdCh1bml0dGVzdC5fVGV4dFRlc3RSZXN1bHQpOgorICAg
IGRlZiBfX2luaXRfXyhzZWxmLCBzdHJlYW0sIHZlcmJvc2l0eSwgdGltaW5nLCBudW1fdGVzdHMp
OgorICAgICAgICBzdXBlcihUZXN0UmVzdWx0LCBzZWxmKS5fX2luaXRfXyhzdHJlYW0sIEZhbHNl
LCB2ZXJib3NpdHkpCisgICAgICAgIHNlbGYudmVyYm9zaXR5ID0gdmVyYm9zaXR5CisgICAgICAg
IHNlbGYudGltaW5nID0gdGltaW5nCisgICAgICAgIHNlbGYubnVtX3J1biA9IDAKKyAgICAgICAg
c2VsZi5udW1fcGFzc2VkID0gMAorICAgICAgICBzZWxmLm51bV9mYWlsZWQgPSAwCisgICAgICAg
IHNlbGYubnVtX3Rlc3RzID0gbnVtX3Rlc3RzCisgICAgICAgIHNlbGYuc2hvd0FsbCA9IHNlbGYu
c2hvd0FsbCBvciB0aW1pbmcKKyAgICAgICAgc2VsZi5kZXNjUmVnZXhwID0gcmUuY29tcGlsZSgi
KFx3KykgXCgoW1x3Ll0rKVwpIikKKyAgICAgICAgc2VsZi5fYnVmZmVyID0gJycKKworICAgIGRl
ZiBnZXREZXNjcmlwdGlvbihzZWxmLCB0ZXN0KToKKyAgICAgICAgbSA9IHNlbGYuZGVzY1JlZ2V4
cC5tYXRjaChzdHIodGVzdCkpCisgICAgICAgIHJldHVybiAiJXMuJXMiICUgKG0uZ3JvdXAoMiks
IG0uZ3JvdXAoMSkpCisKKyAgICBkZWYgX3dyaXRlX3N0YXR1cyhzZWxmLCB0ZXN0KToKKyAgICAg
ICAgcGVyY2VudF9jb21wbGV0ZSA9IDEwMCAqIChzZWxmLm51bV9ydW4pIC8gc2VsZi5udW1fdGVz
dHMKKyAgICAgICAgbnVtX3JlbWFpbmluZyA9IHNlbGYubnVtX3Rlc3RzIC0gc2VsZi5udW1fcnVu
CisgICAgICAgIHNlbGYuZXJhc2UoKQorICAgICAgICBzZWxmLl9idWZmZXIgPSAnJTJkJSU6ICVk
cCAlZGYgJWRyICglcyAuLi4pJyAlICgKKyAgICAgICAgICAgIHBlcmNlbnRfY29tcGxldGUsIHNl
bGYubnVtX3Bhc3NlZCwgc2VsZi5udW1fZmFpbGVkLCBudW1fcmVtYWluaW5nLAorICAgICAgICAg
ICAgc2VsZi5nZXREZXNjcmlwdGlvbih0ZXN0KSkKKyAgICAgICAgc2VsZi5zdHJlYW0ud3JpdGUo
c2VsZi5fYnVmZmVyKQorICAgICAgICBzZWxmLnN0cmVhbS5mbHVzaCgpCisKKyAgICBkZWYgZXJh
c2Uoc2VsZik6CisgICAgICAgIGlmIHNlbGYuX2J1ZmZlcjoKKyAgICAgICAgICAgIHNlbGYuc3Ry
ZWFtLndyaXRlKCdcYicgKiBsZW4oc2VsZi5fYnVmZmVyKSArCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgJyAnICogbGVuKHNlbGYuX2J1ZmZlcikgKworICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICdcYicgKiBsZW4oc2VsZi5fYnVmZmVyKSkKKyAgICAgICAgICAgIHNlbGYuc3RyZWFt
Ll9idWZmZXIgPSAnJworCisgICAgZGVmIF93cml0ZV9yZXN1bHQoc2VsZiwgdGVzdCwgZXJyPU5v
bmUpOgorICAgICAgICBzZWxmLmVyYXNlKCkKKyAgICAgICAgaWYgc2VsZi50aW1pbmcgYW5kIGVy
cjoKKyAgICAgICAgICAgIG1zZyA9ICcgZmFpbGVkICUuM2ZzJyAlICh0aW1lLnRpbWUoKSAtIHNl
bGYuc3RhcnQpCisgICAgICAgIGVsaWYgc2VsZi50aW1pbmc6CisgICAgICAgICAgICBtc2cgPSAn
IHBhc3NlZCAlLjNmcycgJSAodGltZS50aW1lKCkgLSBzZWxmLnN0YXJ0KQorICAgICAgICBlbGlm
IGVycjoKKyAgICAgICAgICAgIG1zZyA9ICcgZmFpbGVkJworICAgICAgICBlbHNlOgorICAgICAg
ICAgICAgbXNnID0gJyBwYXNzZWQnCisKKyAgICAgICAgaWYgZXJyOgorICAgICAgICAgICAgc2Vs
Zi5lcmFzZSgpCisgICAgICAgICAgICBpZiBub3Qgc2VsZi5zaG93QWxsOgorICAgICAgICAgICAg
ICAgIHNlbGYuc3RyZWFtLndyaXRlKHNlbGYuZ2V0RGVzY3JpcHRpb24odGVzdCkpCisgICAgICAg
ICAgICBzZWxmLnN0cmVhbS53cml0ZWxuKG1zZykKKyAgICAgICAgICAgIGZvciBsaW5lIGluIGVy
ci5zcGxpdGxpbmVzKCk6CisgICAgICAgICAgICAgICAgc2VsZi5zdHJlYW0ud3JpdGVsbignICAg
ICcgKyBsaW5lKQorICAgICAgICAgICAgc2VsZi5zdHJlYW0ud3JpdGVsbigpCisgICAgICAgIGVs
aWYgc2VsZi5zaG93QWxsOgorICAgICAgICAgICAgc2VsZi5zdHJlYW0ud3JpdGVsbihtc2cpCisK
KyAgICBkZWYgc3RhcnRUZXN0KHNlbGYsIHRlc3QpOgorICAgICAgICBzZWxmLm51bV9ydW4gKz0g
MQorICAgICAgICBpZiBzZWxmLnNob3dBbGw6CisgICAgICAgICAgICBzZWxmLnN0cmVhbS53cml0
ZShzZWxmLmdldERlc2NyaXB0aW9uKHRlc3QpKQorICAgICAgICAgICAgc2VsZi5fYnVmZmVyID0g
JyAuLi4gJworICAgICAgICAgICAgc2VsZi5zdHJlYW0ud3JpdGUoc2VsZi5fYnVmZmVyKQorICAg
ICAgICBlbGlmIHNlbGYuZG90czoKKyAgICAgICAgICAgIHNlbGYuX3dyaXRlX3N0YXR1cyh0ZXN0
KQorICAgICAgICBzZWxmLnN0YXJ0ID0gdGltZS50aW1lKCkKKworICAgIGRlZiBhZGRTdWNjZXNz
KHNlbGYsIHRlc3QpOgorICAgICAgICBzZWxmLm51bV9wYXNzZWQgKz0gMQorICAgICAgICBzZWxm
Ll93cml0ZV9yZXN1bHQodGVzdCkKKworICAgIGRlZiBhZGRFcnJvcihzZWxmLCB0ZXN0LCBlcnIp
OgorICAgICAgICBzZWxmLm51bV9mYWlsZWQgKz0gMQorICAgICAgICBzZWxmLl93cml0ZV9yZXN1
bHQodGVzdCwgc2VsZi5fZXhjX2luZm9fdG9fc3RyaW5nKGVyciwgdGVzdCkpCisKKyAgICBkZWYg
YWRkRmFpbHVyZShzZWxmLCB0ZXN0LCBlcnIpOgorICAgICAgICBzZWxmLmFkZEVycm9yKHRlc3Qs
IGVycikK
</data>

          </attachment>
      

    </bug>

</bugzilla>