<?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>29914</bug_id>
          
          <creation_ts>2009-09-30 00:48:46 -0700</creation_ts>
          <short_desc>bugzilla-tool post-diff inserts stderr into patch</short_desc>
          <delta_ts>2009-11-24 15:49:18 -0800</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>PC</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>31734</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Shinichiro Hamaji">hamaji</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>abarth</cc>
    
    <cc>commit-queue</cc>
    
    <cc>eric</cc>
    
    <cc>zoltan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>151181</commentid>
    <comment_count>0</comment_count>
    <who name="Shinichiro Hamaji">hamaji</who>
    <bug_when>2009-09-30 00:48:46 -0700</bug_when>
    <thetext>After Bug 29316, bugzilla-tool post-diff inserts unnecessary stderr outputs into patches.

Maybe we should add an optional parameter into SCM.run_command to determine how to handle stderr and use the parameter in create_patch()?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>158718</commentid>
    <comment_count>1</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-10-28 14:55:37 -0700</bug_when>
    <thetext>http://trac.webkit.org/browser/trunk/WebKitTools/Scripts/modules/scm.py#L133
is the line which is &quot;wrong&quot;.  We should not be piping stderr to stdout but rather we should rout it to a separate buffer (including to system.stderr) in some circumstances.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>164509</commentid>
    <comment_count>2</comment_count>
      <attachid>43419</attachid>
    <who name="Zoltan Horvath">zoltan</who>
    <bug_when>2009-11-18 02:15:55 -0800</bug_when>
    <thetext>Created attachment 43419
proposed patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>164575</commentid>
    <comment_count>3</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2009-11-18 08:21:50 -0800</bug_when>
    <thetext>Do we really need to proliferate [0] all over the code?  That&apos;s pretty ugly and error-prone.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>164748</commentid>
    <comment_count>4</comment_count>
    <who name="Zoltan Horvath">zoltan</who>
    <bug_when>2009-11-18 15:13:36 -0800</bug_when>
    <thetext>No, we don&apos;t. We can give back only the stdout by default (with run_command). Currently we use stderr output only in one unittest. 
So this is also a possible way. If it&apos;s better I&apos;ll file a new patch at the morning.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>164750</commentid>
    <comment_count>5</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-11-18 15:16:59 -0800</bug_when>
    <thetext>Yeah, I think we should just go back to teh &quot;just return stdout&quot; model.  The one problem with this new implementation is that places which want both stderr and stdout ouput can&apos;t get them interlaced anymore. :(  I think that if scripts like run-webkit-tests fail we want to report both outputs.  Although I&apos;m not sure that any of our scripts use both, so we could go with this change for now and see what harm it does.

I also need to fix run_command to know how to echo to the current stdout and stderr as well.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>164764</commentid>
    <comment_count>6</comment_count>
    <who name="Zoltan Horvath">zoltan</who>
    <bug_when>2009-11-18 15:27:20 -0800</bug_when>
    <thetext>By the way, we can use [stderr] and [stdout] instead of [1], [0]. It&apos;s more clearly.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>164938</commentid>
    <comment_count>7</comment_count>
      <attachid>43493</attachid>
    <who name="Zoltan Horvath">zoltan</who>
    <bug_when>2009-11-19 01:22:48 -0800</bug_when>
    <thetext>Created attachment 43493
other solution</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>165211</commentid>
    <comment_count>8</comment_count>
      <attachid>43493</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2009-11-19 22:13:25 -0800</bug_when>
    <thetext>Comment on attachment 43493
other solution

I think we should do this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>165215</commentid>
    <comment_count>9</comment_count>
      <attachid>43493</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2009-11-19 22:21:00 -0800</bug_when>
    <thetext>Comment on attachment 43493
other solution

Clearing flags on attachment: 43493

Committed r51230: &lt;http://trac.webkit.org/changeset/51230&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>165216</commentid>
    <comment_count>10</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2009-11-19 22:21:08 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>165225</commentid>
    <comment_count>11</comment_count>
      <attachid>43493</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-11-19 22:58:05 -0800</bug_when>
    <thetext>Comment on attachment 43493
other solution

So the behavior of this is that stderr will now go to the parent&apos;s stderr.  Which is OK.  And might actually be better.  But if you intended for None to mean /dev/null, that is not the POpen behavior. :)

I think this is better than what we had before.  I think that some of our callsites definitely want the return_stderr behavior.

run-webkit-tests calls being one such callsite.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>43419</attachid>
            <date>2009-11-18 02:15:55 -0800</date>
            <delta_ts>2009-11-19 22:13:35 -0800</delta_ts>
            <desc>proposed patch</desc>
            <filename>bug-29914-20091118111553.patch</filename>
            <type>text/plain</type>
            <size>15954</size>
            <attacher name="Zoltan Horvath">zoltan</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYktpdFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXRUb29scy9D
aGFuZ2VMb2cJKHJldmlzaW9uIDUxMTAyKQorKysgV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDMgKzEsMTYgQEAKKzIwMDktMTEtMTggIFpvbHRhbiBIb3J2YXRoICA8
em9sdGFuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgUmVtb3ZlIGluc2VydGluZyBzdGRlcnIgaW50byBwYXRjaCBpbiBidWd6aWxs
YS10b29sCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
OTkxNAorCisgICAgICAgIE1vZGlmeSBTQ00gcHl0aG9uIG1vZHVsZSB0byBhdm9pZCBpbnNlcnRp
bmcgc3RkZXJyIGludG8gdGhlIHBhdGNoZXMuCisgICAgICAgIE1vZGlmeSB0aGUgcmVsYXRlZCB1
bml0IHRlc3QuCisKKyAgICAgICAgKiBTY3JpcHRzL21vZHVsZXMvc2NtLnB5OgorICAgICAgICAq
IFNjcmlwdHMvbW9kdWxlcy9zY21fdW5pdHRlc3QucHk6CisKIDIwMDktMTEtMTcgIE1hcmsgUm93
ZSAgPG1yb3dlQGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBBbGV4ZXkgUHJvc2t1
cnlha292LgpJbmRleDogV2ViS2l0VG9vbHMvU2NyaXB0cy9tb2R1bGVzL3NjbS5weQo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJLaXRUb29scy9TY3JpcHRzL21vZHVsZXMvc2NtLnB5CShyZXZpc2lvbiA1MTEw
MikKKysrIFdlYktpdFRvb2xzL1NjcmlwdHMvbW9kdWxlcy9zY20ucHkJKHdvcmtpbmcgY29weSkK
QEAgLTEzMCwxNSArMTMwLDE1IEBAIGNsYXNzIFNDTToKICAgICAgICAgZWxzZToKICAgICAgICAg
ICAgIHN0ZGluID0gc3VicHJvY2Vzcy5QSVBFIGlmIGlucHV0IGVsc2UgTm9uZQogICAgICAgICAg
ICAgc3RyaW5nX3RvX2NvbW11bmljYXRlID0gaW5wdXQKLSAgICAgICAgcHJvY2VzcyA9IHN1YnBy
b2Nlc3MuUG9wZW4oYXJncywgc3RkaW49c3RkaW4sIHN0ZG91dD1zdWJwcm9jZXNzLlBJUEUsIHN0
ZGVycj1zdWJwcm9jZXNzLlNURE9VVCwgY3dkPWN3ZCkKLSAgICAgICAgb3V0cHV0ID0gcHJvY2Vz
cy5jb21tdW5pY2F0ZShzdHJpbmdfdG9fY29tbXVuaWNhdGUpWzBdCisgICAgICAgIHByb2Nlc3Mg
PSBzdWJwcm9jZXNzLlBvcGVuKGFyZ3MsIHN0ZGluPXN0ZGluLCBzdGRvdXQ9c3VicHJvY2Vzcy5Q
SVBFLCBzdGRlcnI9c3VicHJvY2Vzcy5QSVBFLCBjd2Q9Y3dkKQorICAgICAgICBvdXRwdXQsIGVy
cl9vdXRwdXQgPSBwcm9jZXNzLmNvbW11bmljYXRlKHN0cmluZ190b19jb21tdW5pY2F0ZSkKICAg
ICAgICAgZXhpdF9jb2RlID0gcHJvY2Vzcy53YWl0KCkKICAgICAgICAgaWYgZXhpdF9jb2RlOgog
ICAgICAgICAgICAgc2NyaXB0X2Vycm9yID0gU2NyaXB0RXJyb3Ioc2NyaXB0X2FyZ3M9YXJncywg
ZXhpdF9jb2RlPWV4aXRfY29kZSwgb3V0cHV0PW91dHB1dCwgY3dkPWN3ZCkKICAgICAgICAgICAg
IGVycm9yX2hhbmRsZXIoc2NyaXB0X2Vycm9yKQogICAgICAgICBpZiByZXR1cm5fZXhpdF9jb2Rl
OgogICAgICAgICAgICAgcmV0dXJuIGV4aXRfY29kZQotICAgICAgICByZXR1cm4gb3V0cHV0Cisg
ICAgICAgIHJldHVybiBvdXRwdXQsIGVycl9vdXRwdXQKIAogICAgIGRlZiBzY3JpcHRzX2RpcmVj
dG9yeShzZWxmKToKICAgICAgICAgcmV0dXJuIG9zLnBhdGguam9pbihzZWxmLmNoZWNrb3V0X3Jv
b3QsICJXZWJLaXRUb29scyIsICJTY3JpcHRzIikKQEAgLTE0OCw3ICsxNDgsNyBAQCBjbGFzcyBT
Q006CiAKICAgICBkZWYgZW5zdXJlX2NsZWFuX3dvcmtpbmdfZGlyZWN0b3J5KHNlbGYsIGZvcmNl
X2NsZWFuKToKICAgICAgICAgaWYgbm90IGZvcmNlX2NsZWFuIGFuZCBub3Qgc2VsZi53b3JraW5n
X2RpcmVjdG9yeV9pc19jbGVhbigpOgotICAgICAgICAgICAgcHJpbnQgc2VsZi5ydW5fY29tbWFu
ZChzZWxmLnN0YXR1c19jb21tYW5kKCksIGVycm9yX2hhbmRsZXI9aWdub3JlX2Vycm9yKQorICAg
ICAgICAgICAgcHJpbnQgc2VsZi5ydW5fY29tbWFuZChzZWxmLnN0YXR1c19jb21tYW5kKCksIGVy
cm9yX2hhbmRsZXI9aWdub3JlX2Vycm9yKVswXQogICAgICAgICAgICAgcmFpc2UgU2NyaXB0RXJy
b3IobWVzc2FnZT0iV29ya2luZyBkaXJlY3RvcnkgaGFzIG1vZGlmaWNhdGlvbnMsIHBhc3MgLS1m
b3JjZS1jbGVhbiBvciAtLW5vLWNsZWFuIHRvIGNvbnRpbnVlLiIpCiAgICAgICAgIAogICAgICAg
ICBsb2coIkNsZWFuaW5nIHdvcmtpbmcgZGlyZWN0b3J5IikKQEAgLTE3NCwxMSArMTc0LDExIEBA
IGNsYXNzIFNDTToKICAgICAgICAgaWYgZm9yY2U6CiAgICAgICAgICAgICBhcmdzLmFwcGVuZCgn
LS1mb3JjZScpCiAKLSAgICAgICAgc2VsZi5ydW5fY29tbWFuZChhcmdzLCBpbnB1dD1jdXJsX3By
b2Nlc3Muc3Rkb3V0KQorICAgICAgICBzZWxmLnJ1bl9jb21tYW5kKGFyZ3MsIGlucHV0PWN1cmxf
cHJvY2Vzcy5zdGRvdXQpWzBdCiAKICAgICBkZWYgcnVuX3N0YXR1c19hbmRfZXh0cmFjdF9maWxl
bmFtZXMoc2VsZiwgc3RhdHVzX2NvbW1hbmQsIHN0YXR1c19yZWdleHApOgogICAgICAgICBmaWxl
bmFtZXMgPSBbXQotICAgICAgICBmb3IgbGluZSBpbiBzZWxmLnJ1bl9jb21tYW5kKHN0YXR1c19j
b21tYW5kKS5zcGxpdGxpbmVzKCk6CisgICAgICAgIGZvciBsaW5lIGluIHNlbGYucnVuX2NvbW1h
bmQoc3RhdHVzX2NvbW1hbmQpWzBdLnNwbGl0bGluZXMoKToKICAgICAgICAgICAgIG1hdGNoID0g
cmUuc2VhcmNoKHN0YXR1c19yZWdleHAsIGxpbmUpCiAgICAgICAgICAgICBpZiBub3QgbWF0Y2g6
CiAgICAgICAgICAgICAgICAgY29udGludWUKQEAgLTI5Nyw3ICsyOTcsNyBAQCBjbGFzcyBTVk4o
U0NNKToKICAgICBAY2xhc3NtZXRob2QKICAgICBkZWYgdmFsdWVfZnJvbV9zdm5faW5mbyhjbHMs
IHBhdGgsIGZpZWxkX25hbWUpOgogICAgICAgICBzdm5faW5mb19hcmdzID0gWydzdm4nLCAnaW5m
bycsIHBhdGhdCi0gICAgICAgIGluZm9fb3V0cHV0ID0gY2xzLnJ1bl9jb21tYW5kKHN2bl9pbmZv
X2FyZ3MpLnJzdHJpcCgpCisgICAgICAgIGluZm9fb3V0cHV0ID0gY2xzLnJ1bl9jb21tYW5kKHN2
bl9pbmZvX2FyZ3MpWzBdLnJzdHJpcCgpCiAgICAgICAgIG1hdGNoID0gcmUuc2VhcmNoKCJeJXM6
ICg/UDx2YWx1ZT4uKykkIiAlIGZpZWxkX25hbWUsIGluZm9fb3V0cHV0LCByZS5NVUxUSUxJTkUp
CiAgICAgICAgIGlmIG5vdCBtYXRjaDoKICAgICAgICAgICAgIHJhaXNlIFNjcmlwdEVycm9yKHNj
cmlwdF9hcmdzPXN2bl9pbmZvX2FyZ3MsIG1lc3NhZ2U9J3N2biBpbmZvIGRpZCBub3QgY29udGFp
biBhICVzLicgJSBmaWVsZF9uYW1lKQpAQCAtMzI1LDE4ICszMjUsMTggQEAgY2xhc3MgU1ZOKFND
TSk6CiAKICAgICBkZWYgc3ZuX3ZlcnNpb24oc2VsZik6CiAgICAgICAgIGlmIG5vdCBzZWxmLmNh
Y2hlZF92ZXJzaW9uOgotICAgICAgICAgICAgc2VsZi5jYWNoZWRfdmVyc2lvbiA9IHNlbGYucnVu
X2NvbW1hbmQoWydzdm4nLCAnLS12ZXJzaW9uJywgJy0tcXVpZXQnXSkKKyAgICAgICAgICAgIHNl
bGYuY2FjaGVkX3ZlcnNpb24gPSBzZWxmLnJ1bl9jb21tYW5kKFsnc3ZuJywgJy0tdmVyc2lvbics
ICctLXF1aWV0J10pWzBdCiAgICAgICAgIAogICAgICAgICByZXR1cm4gc2VsZi5jYWNoZWRfdmVy
c2lvbgogCiAgICAgZGVmIHdvcmtpbmdfZGlyZWN0b3J5X2lzX2NsZWFuKHNlbGYpOgotICAgICAg
ICByZXR1cm4gc2VsZi5ydW5fY29tbWFuZChbJ3N2bicsICdkaWZmJ10pID09ICIiCisgICAgICAg
IHJldHVybiBzZWxmLnJ1bl9jb21tYW5kKFsnc3ZuJywgJ2RpZmYnXSlbMF0gPT0gIiIKIAogICAg
IGRlZiBjbGVhbl93b3JraW5nX2RpcmVjdG9yeShzZWxmKToKLSAgICAgICAgc2VsZi5ydW5fY29t
bWFuZChbJ3N2bicsICdyZXZlcnQnLCAnLVInLCAnLiddKQorICAgICAgICBzZWxmLnJ1bl9jb21t
YW5kKFsnc3ZuJywgJ3JldmVydCcsICctUicsICcuJ10pWzBdCiAKICAgICBkZWYgdXBkYXRlX3dl
YmtpdChzZWxmKToKLSAgICAgICAgc2VsZi5ydW5fY29tbWFuZChzZWxmLnNjcmlwdF9wYXRoKCJ1
cGRhdGUtd2Via2l0IikpCisgICAgICAgIHNlbGYucnVuX2NvbW1hbmQoc2VsZi5zY3JpcHRfcGF0
aCgidXBkYXRlLXdlYmtpdCIpKVswXQogCiAgICAgZGVmIHN0YXR1c19jb21tYW5kKHNlbGYpOgog
ICAgICAgICByZXR1cm4gWydzdm4nLCAnc3RhdHVzJ10KQEAgLTM1NiwxMCArMzU2LDEwIEBAIGNs
YXNzIFNWTihTQ00pOgogICAgICAgICByZXR1cm4gInN2biIKIAogICAgIGRlZiBjcmVhdGVfcGF0
Y2goc2VsZik6Ci0gICAgICAgIHJldHVybiBzZWxmLnJ1bl9jb21tYW5kKHNlbGYuc2NyaXB0X3Bh
dGgoInN2bi1jcmVhdGUtcGF0Y2giKSwgY3dkPXNlbGYuY2hlY2tvdXRfcm9vdCkKKyAgICAgICAg
cmV0dXJuIHNlbGYucnVuX2NvbW1hbmQoc2VsZi5zY3JpcHRfcGF0aCgic3ZuLWNyZWF0ZS1wYXRj
aCIpLCBjd2Q9c2VsZi5jaGVja291dF9yb290KVswXQogCiAgICAgZGVmIGRpZmZfZm9yX3Jldmlz
aW9uKHNlbGYsIHJldmlzaW9uKToKLSAgICAgICAgcmV0dXJuIHNlbGYucnVuX2NvbW1hbmQoWydz
dm4nLCAnZGlmZicsICctYycsIHN0cihyZXZpc2lvbildKQorICAgICAgICByZXR1cm4gc2VsZi5y
dW5fY29tbWFuZChbJ3N2bicsICdkaWZmJywgJy1jJywgc3RyKHJldmlzaW9uKV0pWzBdCiAKICAg
ICBkZWYgX3JlcG9zaXRvcnlfdXJsKHNlbGYpOgogICAgICAgICByZXR1cm4gc2VsZi52YWx1ZV9m
cm9tX3N2bl9pbmZvKHNlbGYuY2hlY2tvdXRfcm9vdCwgJ1VSTCcpCkBAIC0zNjksMjAgKzM2OSwy
MCBAQCBjbGFzcyBTVk4oU0NNKToKICAgICAgICAgc3ZuX21lcmdlX2FyZ3MgPSBbJ3N2bicsICdt
ZXJnZScsICctLW5vbi1pbnRlcmFjdGl2ZScsICctYycsICctJXMnICUgcmV2aXNpb24sIHNlbGYu
X3JlcG9zaXRvcnlfdXJsKCldCiAgICAgICAgIGxvZygiV0FSTklORzogc3ZuIG1lcmdlIGhhcyBi
ZWVuIGtub3duIHRvIHRha2UgbW9yZSB0aGFuIDEwIG1pbnV0ZXMgdG8gY29tcGxldGUuICBJdCBp
cyByZWNvbW1lbmRlZCB5b3UgdXNlIGdpdCBmb3Igcm9sbG91dHMuIikKICAgICAgICAgbG9nKCJS
dW5uaW5nICclcyciICUgIiAiLmpvaW4oc3ZuX21lcmdlX2FyZ3MpKQotICAgICAgICBzZWxmLnJ1
bl9jb21tYW5kKHN2bl9tZXJnZV9hcmdzKQorICAgICAgICBzZWxmLnJ1bl9jb21tYW5kKHN2bl9t
ZXJnZV9hcmdzKVswXQogCiAgICAgZGVmIHJldmVydF9maWxlcyhzZWxmLCBmaWxlX3BhdGhzKToK
LSAgICAgICAgc2VsZi5ydW5fY29tbWFuZChbJ3N2bicsICdyZXZlcnQnXSArIGZpbGVfcGF0aHMp
CisgICAgICAgIHNlbGYucnVuX2NvbW1hbmQoWydzdm4nLCAncmV2ZXJ0J10gKyBmaWxlX3BhdGhz
KVswXQogCiAgICAgZGVmIGNvbW1pdF93aXRoX21lc3NhZ2Uoc2VsZiwgbWVzc2FnZSk6CiAgICAg
ICAgIGlmIHNlbGYuZHJ5cnVuOgogICAgICAgICAgICAgIyBSZXR1cm4gYSBzdHJpbmcgd2hpY2gg
bG9va3MgbGlrZSBhIGNvbW1pdCBzbyB0aGF0IHRoaW5ncyB3aGljaCBwYXJzZSB0aGlzIG91dHB1
dCB3aWxsIHN1Y2NlZWQuCiAgICAgICAgICAgICByZXR1cm4gIkRyeSBydW4sIG5vIGNvbW1pdC5c
bkNvbW1pdHRlZCByZXZpc2lvbiAwLiIKLSAgICAgICAgcmV0dXJuIHNlbGYucnVuX2NvbW1hbmQo
Wydzdm4nLCAnY29tbWl0JywgJy1tJywgbWVzc2FnZV0sIGVycm9yX2hhbmRsZXI9Y29tbWl0X2Vy
cm9yX2hhbmRsZXIpCisgICAgICAgIHJldHVybiBzZWxmLnJ1bl9jb21tYW5kKFsnc3ZuJywgJ2Nv
bW1pdCcsICctbScsIG1lc3NhZ2VdLCBlcnJvcl9oYW5kbGVyPWNvbW1pdF9lcnJvcl9oYW5kbGVy
KVswXQogCiAgICAgZGVmIHN2bl9jb21taXRfbG9nKHNlbGYsIHN2bl9yZXZpc2lvbik6CiAgICAg
ICAgIHN2bl9yZXZpc2lvbiA9IHNlbGYuc3RyaXBfcl9mcm9tX3N2bl9yZXZpc2lvbihzdHIoc3Zu
X3JldmlzaW9uKSkKLSAgICAgICAgcmV0dXJuIHNlbGYucnVuX2NvbW1hbmQoWydzdm4nLCAnbG9n
JywgJy0tbm9uLWludGVyYWN0aXZlJywgJy0tcmV2aXNpb24nLCBzdm5fcmV2aXNpb25dKTsKKyAg
ICAgICAgcmV0dXJuIHNlbGYucnVuX2NvbW1hbmQoWydzdm4nLCAnbG9nJywgJy0tbm9uLWludGVy
YWN0aXZlJywgJy0tcmV2aXNpb24nLCBzdm5fcmV2aXNpb25dKVswXTsKIAogICAgIGRlZiBsYXN0
X3N2bl9jb21taXRfbG9nKHNlbGYpOgogICAgICAgICAjIEJBU0UgaXMgdGhlIGNoZWNrb3V0IHJl
dmlzaW9uLCBIRUFEIGlzIHRoZSByZW1vdGUgcmVwb3NpdG9yeSByZXZpc2lvbgpAQCAtMzk2LDEy
ICszOTYsMTIgQEAgY2xhc3MgR2l0KFNDTSk6CiAKICAgICBAY2xhc3NtZXRob2QKICAgICBkZWYg
aW5fd29ya2luZ19kaXJlY3RvcnkoY2xzLCBwYXRoKToKLSAgICAgICAgcmV0dXJuIGNscy5ydW5f
Y29tbWFuZChbJ2dpdCcsICdyZXYtcGFyc2UnLCAnLS1pcy1pbnNpZGUtd29yay10cmVlJ10sIGN3
ZD1wYXRoLCBlcnJvcl9oYW5kbGVyPWlnbm9yZV9lcnJvcikucnN0cmlwKCkgPT0gInRydWUiCisg
ICAgICAgIHJldHVybiBjbHMucnVuX2NvbW1hbmQoWydnaXQnLCAncmV2LXBhcnNlJywgJy0taXMt
aW5zaWRlLXdvcmstdHJlZSddLCBjd2Q9cGF0aCwgZXJyb3JfaGFuZGxlcj1pZ25vcmVfZXJyb3Ip
WzBdLnJzdHJpcCgpID09ICJ0cnVlIgogCiAgICAgQGNsYXNzbWV0aG9kCiAgICAgZGVmIGZpbmRf
Y2hlY2tvdXRfcm9vdChjbHMsIHBhdGgpOgogICAgICAgICAjICJnaXQgcmV2LXBhcnNlIC0tc2hv
dy1jZHVwIiB3b3VsZCBiZSBhbm90aGVyIHdheSB0byBnZXQgdG8gdGhlIHJvb3QKLSAgICAgICAg
KGNoZWNrb3V0X3Jvb3QsIGRvdF9naXQpID0gb3MucGF0aC5zcGxpdChjbHMucnVuX2NvbW1hbmQo
WydnaXQnLCAncmV2LXBhcnNlJywgJy0tZ2l0LWRpciddLCBjd2Q9cGF0aCkpCisgICAgICAgIChj
aGVja291dF9yb290LCBkb3RfZ2l0KSA9IG9zLnBhdGguc3BsaXQoY2xzLnJ1bl9jb21tYW5kKFsn
Z2l0JywgJ3Jldi1wYXJzZScsICctLWdpdC1kaXInXSwgY3dkPXBhdGgpWzBdKQogICAgICAgICAj
IElmIHdlIHdlcmUgdXNpbmcgMi42ICMgY2hlY2tvdXRfcm9vdCA9IG9zLnBhdGgucmVscGF0aChj
aGVja291dF9yb290LCBwYXRoKQogICAgICAgICBpZiBub3Qgb3MucGF0aC5pc2FicyhjaGVja291
dF9yb290KTogIyBTb21ldGltZXMgZ2l0IHJldHVybnMgcmVsYXRpdmUgcGF0aHMKICAgICAgICAg
ICAgIGNoZWNrb3V0X3Jvb3QgPSBvcy5wYXRoLmpvaW4ocGF0aCwgY2hlY2tvdXRfcm9vdCkKQEAg
LTQxMywyOCArNDEzLDI4IEBAIGNsYXNzIEdpdChTQ00pOgogCiAKICAgICBkZWYgZGlzY2FyZF9s
b2NhbF9jb21taXRzKHNlbGYpOgotICAgICAgICBzZWxmLnJ1bl9jb21tYW5kKFsnZ2l0JywgJ3Jl
c2V0JywgJy0taGFyZCcsICd0cnVuayddKQorICAgICAgICBzZWxmLnJ1bl9jb21tYW5kKFsnZ2l0
JywgJ3Jlc2V0JywgJy0taGFyZCcsICd0cnVuayddKVswXQogICAgIAogICAgIGRlZiBsb2NhbF9j
b21taXRzKHNlbGYpOgotICAgICAgICByZXR1cm4gc2VsZi5ydW5fY29tbWFuZChbJ2dpdCcsICds
b2cnLCAnLS1wcmV0dHk9b25lbGluZScsICdIRUFELi4udHJ1bmsnXSkuc3BsaXRsaW5lcygpCisg
ICAgICAgIHJldHVybiBzZWxmLnJ1bl9jb21tYW5kKFsnZ2l0JywgJ2xvZycsICctLXByZXR0eT1v
bmVsaW5lJywgJ0hFQUQuLi50cnVuayddKVswXS5zcGxpdGxpbmVzKCkKIAogICAgIGRlZiByZWJh
c2VfaW5fcHJvZ3Jlc3Moc2VsZik6CiAgICAgICAgIHJldHVybiBvcy5wYXRoLmV4aXN0cyhvcy5w
YXRoLmpvaW4oc2VsZi5jaGVja291dF9yb290LCAnLmdpdC9yZWJhc2UtYXBwbHknKSkKIAogICAg
IGRlZiB3b3JraW5nX2RpcmVjdG9yeV9pc19jbGVhbihzZWxmKToKLSAgICAgICAgcmV0dXJuIHNl
bGYucnVuX2NvbW1hbmQoWydnaXQnLCAnZGlmZi1pbmRleCcsICdIRUFEJ10pID09ICIiCisgICAg
ICAgIHJldHVybiBzZWxmLnJ1bl9jb21tYW5kKFsnZ2l0JywgJ2RpZmYtaW5kZXgnLCAnSEVBRCdd
KVswXSA9PSAiIgogCiAgICAgZGVmIGNsZWFuX3dvcmtpbmdfZGlyZWN0b3J5KHNlbGYpOgogICAg
ICAgICAjIENvdWxkIHJ1biBnaXQgY2xlYW4gaGVyZSB0b28sIGJ1dCB0aGF0IHdvdWxkbid0IG1h
dGNoIHdvcmtpbmdfZGlyZWN0b3J5X2lzX2NsZWFuCi0gICAgICAgIHNlbGYucnVuX2NvbW1hbmQo
WydnaXQnLCAncmVzZXQnLCAnLS1oYXJkJywgJ0hFQUQnXSkKKyAgICAgICAgc2VsZi5ydW5fY29t
bWFuZChbJ2dpdCcsICdyZXNldCcsICctLWhhcmQnLCAnSEVBRCddKVswXQogICAgICAgICAjIEFi
b3J0aW5nIHJlYmFzZSBldmVuIHRob3VnaCB0aGlzIGRvZXMgbm90IG1hdGNoIHdvcmtpbmdfZGly
ZWN0b3J5X2lzX2NsZWFuCiAgICAgICAgIGlmIHNlbGYucmViYXNlX2luX3Byb2dyZXNzKCk6Ci0g
ICAgICAgICAgICBzZWxmLnJ1bl9jb21tYW5kKFsnZ2l0JywgJ3JlYmFzZScsICctLWFib3J0J10p
CisgICAgICAgICAgICBzZWxmLnJ1bl9jb21tYW5kKFsnZ2l0JywgJ3JlYmFzZScsICctLWFib3J0
J10pWzBdCiAKICAgICBkZWYgdXBkYXRlX3dlYmtpdChzZWxmKToKICAgICAgICAgIyBGSVhNRTog
Q2FsbCB1cGRhdGUtd2Via2l0IG9uY2UgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTI3MTYyIGlzIGZpeGVkLgogICAgICAgICBsb2coIlVwZGF0aW5nIHdvcmtpbmcgZGly
ZWN0b3J5IikKLSAgICAgICAgc2VsZi5ydW5fY29tbWFuZChbJ2dpdCcsICdzdm4nLCAncmViYXNl
J10pCisgICAgICAgIHNlbGYucnVuX2NvbW1hbmQoWydnaXQnLCAnc3ZuJywgJ3JlYmFzZSddKVsw
XQogCiAgICAgZGVmIHN0YXR1c19jb21tYW5kKHNlbGYpOgogICAgICAgICByZXR1cm4gWydnaXQn
LCAnc3RhdHVzJ10KQEAgLTQ1MiwxMiArNDUyLDEyIEBAIGNsYXNzIEdpdChTQ00pOgogICAgICAg
ICByZXR1cm4gImdpdCIKIAogICAgIGRlZiBjcmVhdGVfcGF0Y2goc2VsZik6Ci0gICAgICAgIHJl
dHVybiBzZWxmLnJ1bl9jb21tYW5kKFsnZ2l0JywgJ2RpZmYnLCAnLS1iaW5hcnknLCAnSEVBRCdd
KQorICAgICAgICByZXR1cm4gc2VsZi5ydW5fY29tbWFuZChbJ2dpdCcsICdkaWZmJywgJy0tYmlu
YXJ5JywgJ0hFQUQnXSlbMF0KIAogICAgIEBjbGFzc21ldGhvZAogICAgIGRlZiBnaXRfY29tbWl0
X2Zyb21fc3ZuX3JldmlzaW9uKGNscywgcmV2aXNpb24pOgogICAgICAgICAjIGdpdCBzdm4gZmlu
ZC1yZXYgYWx3YXlzIGV4aXRzIDAsIGV2ZW4gd2hlbiB0aGUgcmV2aXNpb24gaXMgbm90IGZvdW5k
LgotICAgICAgICByZXR1cm4gY2xzLnJ1bl9jb21tYW5kKFsnZ2l0JywgJ3N2bicsICdmaW5kLXJl
dicsICdyJXMnICUgcmV2aXNpb25dKS5yc3RyaXAoKQorICAgICAgICByZXR1cm4gY2xzLnJ1bl9j
b21tYW5kKFsnZ2l0JywgJ3N2bicsICdmaW5kLXJldicsICdyJXMnICUgcmV2aXNpb25dKVswXS5y
c3RyaXAoKQogCiAgICAgZGVmIGRpZmZfZm9yX3JldmlzaW9uKHNlbGYsIHJldmlzaW9uKToKICAg
ICAgICAgZ2l0X2NvbW1pdCA9IHNlbGYuZ2l0X2NvbW1pdF9mcm9tX3N2bl9yZXZpc2lvbihyZXZp
c2lvbikKQEAgLTQ3MSwxNSArNDcxLDE1IEBAIGNsYXNzIEdpdChTQ00pOgogCiAgICAgICAgICMg
SSB0aGluayB0aGlzIHdpbGwgYWx3YXlzIGZhaWwgZHVlIHRvIENoYW5nZUxvZ3MuCiAgICAgICAg
ICMgRklYTUU6IFdlIG5lZWQgdG8gZGV0ZWMgc3BlY2lmaWMgZmFpbHVyZSBjb25kaXRpb25zIGFu
ZCBoYW5kbGUgdGhlbS4KLSAgICAgICAgc2VsZi5ydW5fY29tbWFuZChbJ2dpdCcsICdyZXZlcnQn
LCAnLS1uby1jb21taXQnLCBnaXRfY29tbWl0XSwgZXJyb3JfaGFuZGxlcj1pZ25vcmVfZXJyb3Ip
CisgICAgICAgIHNlbGYucnVuX2NvbW1hbmQoWydnaXQnLCAncmV2ZXJ0JywgJy0tbm8tY29tbWl0
JywgZ2l0X2NvbW1pdF0sIGVycm9yX2hhbmRsZXI9aWdub3JlX2Vycm9yKVswXQogCiAgICAgICAg
ICMgRml4IGFueSBDaGFuZ2VMb2dzIGlmIG5lY2Vzc2FyeS4KICAgICAgICAgY2hhbmdlbG9nX3Bh
dGhzID0gc2VsZi5tb2RpZmllZF9jaGFuZ2Vsb2dzKCkKICAgICAgICAgaWYgbGVuKGNoYW5nZWxv
Z19wYXRocyk6Ci0gICAgICAgICAgICBzZWxmLnJ1bl9jb21tYW5kKFtzZWxmLnNjcmlwdF9wYXRo
KCdyZXNvbHZlLUNoYW5nZUxvZ3MnKV0gKyBjaGFuZ2Vsb2dfcGF0aHMpCisgICAgICAgICAgICBz
ZWxmLnJ1bl9jb21tYW5kKFtzZWxmLnNjcmlwdF9wYXRoKCdyZXNvbHZlLUNoYW5nZUxvZ3MnKV0g
KyBjaGFuZ2Vsb2dfcGF0aHMpWzBdCiAKICAgICBkZWYgcmV2ZXJ0X2ZpbGVzKHNlbGYsIGZpbGVf
cGF0aHMpOgotICAgICAgICBzZWxmLnJ1bl9jb21tYW5kKFsnZ2l0JywgJ2NoZWNrb3V0JywgJ0hF
QUQnXSArIGZpbGVfcGF0aHMpCisgICAgICAgIHNlbGYucnVuX2NvbW1hbmQoWydnaXQnLCAnY2hl
Y2tvdXQnLCAnSEVBRCddICsgZmlsZV9wYXRocylbMF0KIAogICAgIGRlZiBjb21taXRfd2l0aF9t
ZXNzYWdlKHNlbGYsIG1lc3NhZ2UpOgogICAgICAgICBzZWxmLmNvbW1pdF9sb2NhbGx5X3dpdGhf
bWVzc2FnZShtZXNzYWdlKQpAQCAtNDg3LDI3ICs0ODcsMjcgQEAgY2xhc3MgR2l0KFNDTSk6CiAK
ICAgICBkZWYgc3ZuX2NvbW1pdF9sb2coc2VsZiwgc3ZuX3JldmlzaW9uKToKICAgICAgICAgc3Zu
X3JldmlzaW9uID0gc2VsZi5zdHJpcF9yX2Zyb21fc3ZuX3JldmlzaW9uKHN2bl9yZXZpc2lvbikK
LSAgICAgICAgcmV0dXJuIHNlbGYucnVuX2NvbW1hbmQoWydnaXQnLCAnc3ZuJywgJ2xvZycsICct
cicsIHN2bl9yZXZpc2lvbl0pCisgICAgICAgIHJldHVybiBzZWxmLnJ1bl9jb21tYW5kKFsnZ2l0
JywgJ3N2bicsICdsb2cnLCAnLXInLCBzdm5fcmV2aXNpb25dKVswXQogCiAgICAgZGVmIGxhc3Rf
c3ZuX2NvbW1pdF9sb2coc2VsZik6Ci0gICAgICAgIHJldHVybiBzZWxmLnJ1bl9jb21tYW5kKFsn
Z2l0JywgJ3N2bicsICdsb2cnLCAnLS1saW1pdD0xJ10pCisgICAgICAgIHJldHVybiBzZWxmLnJ1
bl9jb21tYW5kKFsnZ2l0JywgJ3N2bicsICdsb2cnLCAnLS1saW1pdD0xJ10pWzBdCiAKICAgICAj
IEdpdC1zcGVjaWZpYyBtZXRob2RzOgogCiAgICAgZGVmIGNyZWF0ZV9wYXRjaF9mcm9tX2xvY2Fs
X2NvbW1pdChzZWxmLCBjb21taXRfaWQpOgotICAgICAgICByZXR1cm4gc2VsZi5ydW5fY29tbWFu
ZChbJ2dpdCcsICdkaWZmJywgJy0tYmluYXJ5JywgY29tbWl0X2lkICsgIl4uLiIgKyBjb21taXRf
aWRdKQorICAgICAgICByZXR1cm4gc2VsZi5ydW5fY29tbWFuZChbJ2dpdCcsICdkaWZmJywgJy0t
YmluYXJ5JywgY29tbWl0X2lkICsgIl4uLiIgKyBjb21taXRfaWRdKVswXQogCiAgICAgZGVmIGNy
ZWF0ZV9wYXRjaF9zaW5jZV9sb2NhbF9jb21taXQoc2VsZiwgY29tbWl0X2lkKToKLSAgICAgICAg
cmV0dXJuIHNlbGYucnVuX2NvbW1hbmQoWydnaXQnLCAnZGlmZicsICctLWJpbmFyeScsIGNvbW1p
dF9pZF0pCisgICAgICAgIHJldHVybiBzZWxmLnJ1bl9jb21tYW5kKFsnZ2l0JywgJ2RpZmYnLCAn
LS1iaW5hcnknLCBjb21taXRfaWRdKVswXQogCiAgICAgZGVmIGNvbW1pdF9sb2NhbGx5X3dpdGhf
bWVzc2FnZShzZWxmLCBtZXNzYWdlKToKLSAgICAgICAgc2VsZi5ydW5fY29tbWFuZChbJ2dpdCcs
ICdjb21taXQnLCAnLS1hbGwnLCAnLUYnLCAnLSddLCBpbnB1dD1tZXNzYWdlKQorICAgICAgICBz
ZWxmLnJ1bl9jb21tYW5kKFsnZ2l0JywgJ2NvbW1pdCcsICctLWFsbCcsICctRicsICctJ10sIGlu
cHV0PW1lc3NhZ2UpWzBdCiAgICAgICAgIAogICAgIGRlZiBwdXNoX2xvY2FsX2NvbW1pdHNfdG9f
c2VydmVyKHNlbGYpOgogICAgICAgICBpZiBzZWxmLmRyeXJ1bjoKICAgICAgICAgICAgICMgUmV0
dXJuIGEgc3RyaW5nIHdoaWNoIGxvb2tzIGxpa2UgYSBjb21taXQgc28gdGhhdCB0aGluZ3Mgd2hp
Y2ggcGFyc2UgdGhpcyBvdXRwdXQgd2lsbCBzdWNjZWVkLgogICAgICAgICAgICAgcmV0dXJuICJE
cnkgcnVuLCBubyByZW1vdGUgY29tbWl0LlxuQ29tbWl0dGVkIHIwIgotICAgICAgICByZXR1cm4g
c2VsZi5ydW5fY29tbWFuZChbJ2dpdCcsICdzdm4nLCAnZGNvbW1pdCddLCBlcnJvcl9oYW5kbGVy
PWNvbW1pdF9lcnJvcl9oYW5kbGVyKQorICAgICAgICByZXR1cm4gc2VsZi5ydW5fY29tbWFuZChb
J2dpdCcsICdzdm4nLCAnZGNvbW1pdCddLCBlcnJvcl9oYW5kbGVyPWNvbW1pdF9lcnJvcl9oYW5k
bGVyKVswXQogCiAgICAgIyBUaGlzIGZ1bmN0aW9uIHN1cHBvcnRzIHRoZSBmb2xsb3dpbmcgYXJn
dW1lbnQgZm9ybWF0czoKICAgICAjIG5vIGFyZ3MgOiByZXYtbGlzdCB0cnVuay4uSEVBRApAQCAt
NTI0LDE0ICs1MjQsMTQgQEAgY2xhc3MgR2l0KFNDTSk6CiAgICAgICAgICAgICBpZiAnLi4uJyBp
biBjb21taXRpc2g6CiAgICAgICAgICAgICAgICAgcmFpc2UgU2NyaXB0RXJyb3IobWVzc2FnZT0i
Jy4uLicgaXMgbm90IHN1cHBvcnRlZCAoZm91bmQgaW4gJyVzJykuIERpZCB5b3UgbWVhbiAnLi4n
PyIgJSBjb21taXRpc2gpCiAgICAgICAgICAgICBlbGlmICcuLicgaW4gY29tbWl0aXNoOgotICAg
ICAgICAgICAgICAgIGNvbW1pdF9pZHMgKz0gcmV2ZXJzZWQoc2VsZi5ydW5fY29tbWFuZChbJ2dp
dCcsICdyZXYtbGlzdCcsIGNvbW1pdGlzaF0pLnNwbGl0bGluZXMoKSkKKyAgICAgICAgICAgICAg
ICBjb21taXRfaWRzICs9IHJldmVyc2VkKHNlbGYucnVuX2NvbW1hbmQoWydnaXQnLCAncmV2LWxp
c3QnLCBjb21taXRpc2hdKVswXS5zcGxpdGxpbmVzKCkpCiAgICAgICAgICAgICBlbHNlOgogICAg
ICAgICAgICAgICAgICMgVHVybiBzaW5nbGUgY29tbWl0cyBvciBicmFuY2ggb3IgdGFnIG5hbWVz
IGludG8gY29tbWl0IGlkcy4KLSAgICAgICAgICAgICAgICBjb21taXRfaWRzICs9IHNlbGYucnVu
X2NvbW1hbmQoWydnaXQnLCAncmV2LXBhcnNlJywgJy0tcmV2cy1vbmx5JywgY29tbWl0aXNoXSku
c3BsaXRsaW5lcygpCisgICAgICAgICAgICAgICAgY29tbWl0X2lkcyArPSBzZWxmLnJ1bl9jb21t
YW5kKFsnZ2l0JywgJ3Jldi1wYXJzZScsICctLXJldnMtb25seScsIGNvbW1pdGlzaF0pWzBdLnNw
bGl0bGluZXMoKQogICAgICAgICByZXR1cm4gY29tbWl0X2lkcwogCiAgICAgZGVmIGNvbW1pdF9t
ZXNzYWdlX2Zvcl9sb2NhbF9jb21taXQoc2VsZiwgY29tbWl0X2lkKToKLSAgICAgICAgY29tbWl0
X2xpbmVzID0gc2VsZi5ydW5fY29tbWFuZChbJ2dpdCcsICdjYXQtZmlsZScsICdjb21taXQnLCBj
b21taXRfaWRdKS5zcGxpdGxpbmVzKCkKKyAgICAgICAgY29tbWl0X2xpbmVzID0gc2VsZi5ydW5f
Y29tbWFuZChbJ2dpdCcsICdjYXQtZmlsZScsICdjb21taXQnLCBjb21taXRfaWRdKVswXS5zcGxp
dGxpbmVzKCkKIAogICAgICAgICAjIFNraXAgdGhlIGdpdCBoZWFkZXJzLgogICAgICAgICBmaXJz
dF9saW5lX2FmdGVyX2hlYWRlcnMgPSAwCkBAIC01NDIsNCArNTQyLDQgQEAgY2xhc3MgR2l0KFND
TSk6CiAgICAgICAgIHJldHVybiBDb21taXRNZXNzYWdlKGNvbW1pdF9saW5lc1tmaXJzdF9saW5l
X2FmdGVyX2hlYWRlcnM6XSkKIAogICAgIGRlZiBmaWxlc19jaGFuZ2VkX3N1bW1hcnlfZm9yX2Nv
bW1pdChzZWxmLCBjb21taXRfaWQpOgotICAgICAgICByZXR1cm4gc2VsZi5ydW5fY29tbWFuZChb
J2dpdCcsICdkaWZmLXRyZWUnLCAnLS1zaG9ydHN0YXQnLCAnLS1uby1jb21taXQtaWQnLCBjb21t
aXRfaWRdKQorICAgICAgICByZXR1cm4gc2VsZi5ydW5fY29tbWFuZChbJ2dpdCcsICdkaWZmLXRy
ZWUnLCAnLS1zaG9ydHN0YXQnLCAnLS1uby1jb21taXQtaWQnLCBjb21taXRfaWRdKVswXQpJbmRl
eDogV2ViS2l0VG9vbHMvU2NyaXB0cy9tb2R1bGVzL3NjbV91bml0dGVzdC5weQo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJLaXRUb29scy9TY3JpcHRzL21vZHVsZXMvc2NtX3VuaXR0ZXN0LnB5CShyZXZpc2lv
biA1MTEwMikKKysrIFdlYktpdFRvb2xzL1NjcmlwdHMvbW9kdWxlcy9zY21fdW5pdHRlc3QucHkJ
KHdvcmtpbmcgY29weSkKQEAgLTQ1LDcgKzQ1LDcgQEAgZnJvbSBtb2R1bGVzLnNjbSBpbXBvcnQg
ZGV0ZWN0X3NjbV9zeXN0ZQogIyBQZXJoYXBzIHRocm91Z2ggc29tZSBTQ01UZXN0IGJhc2UtY2xh
c3Mgd2hpY2ggYm90aCBTVk5UZXN0IGFuZCBHaXRUZXN0IGluaGVyaXQgZnJvbS4KIAogZGVmIHJ1
bihhcmdzLCBjd2Q9Tm9uZSk6Ci0gICAgcmV0dXJuIFNDTS5ydW5fY29tbWFuZChhcmdzLCBjd2Q9
Y3dkKQorICAgIHJldHVybiBTQ00ucnVuX2NvbW1hbmQoYXJncywgY3dkPWN3ZClbMF0KIAogZGVm
IHJ1bl9zaWxlbnQoYXJncywgY3dkPU5vbmUpOgogICAgIHByb2Nlc3MgPSBzdWJwcm9jZXNzLlBv
cGVuKGFyZ3MsIHN0ZG91dD1zdWJwcm9jZXNzLlBJUEUsIHN0ZGVycj1zdWJwcm9jZXNzLlBJUEUs
IGN3ZD1jd2QpCkBAIC0xMjYsMTAgKzEyNiwxMCBAQCBjbGFzcyBTQ01DbGFzc1Rlc3RzKHVuaXR0
ZXN0LlRlc3RDYXNlKToKIAogICAgIGRlZiB0ZXN0X3J1bl9jb21tYW5kX3dpdGhfcGlwZShzZWxm
KToKICAgICAgICAgaW5wdXRfcHJvY2VzcyA9IHN1YnByb2Nlc3MuUG9wZW4oWycvYmluL2VjaG8n
LCAnZm9vXG5iYXInXSwgc3Rkb3V0PXN1YnByb2Nlc3MuUElQRSwgc3RkZXJyPXNlbGYuZGV2X251
bGwpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoU0NNLnJ1bl9jb21tYW5kKFsnL3Vzci9iaW4v
Z3JlcCcsICdiYXInXSwgaW5wdXQ9aW5wdXRfcHJvY2Vzcy5zdGRvdXQpLCAiYmFyXG4iKQorICAg
ICAgICBzZWxmLmFzc2VydEVxdWFsKFNDTS5ydW5fY29tbWFuZChbJy91c3IvYmluL2dyZXAnLCAn
YmFyJ10sIGlucHV0PWlucHV0X3Byb2Nlc3Muc3Rkb3V0KVswXSwgImJhclxuIikKIAogICAgICAg
ICAjIFRlc3QgdGhlIG5vbi1waXBlIGNhc2UgdG9vOgotICAgICAgICBzZWxmLmFzc2VydEVxdWFs
KFNDTS5ydW5fY29tbWFuZChbJy91c3IvYmluL2dyZXAnLCAnYmFyJ10sIGlucHV0PSJmb29cbmJh
ciIpLCAiYmFyXG4iKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFNDTS5ydW5fY29tbWFuZChb
Jy91c3IvYmluL2dyZXAnLCAnYmFyJ10sIGlucHV0PSJmb29cbmJhciIpWzBdLCAiYmFyXG4iKQog
CiAgICAgICAgIGNvbW1hbmRfcmV0dXJuc19ub25femVybyA9IFsnL2Jpbi9zaCcsICctLWludmFs
aWQtb3B0aW9uJ10KICAgICAgICAgIyBUZXN0IHdoZW4gdGhlIGlucHV0IHBpcGUgcHJvY2VzcyBm
YWlscy4KQEAgLTE1Myw3ICsxNTMsOCBAQCBzdm46IHJlc291cmNlIG91dCBvZiBkYXRlOyB0cnkg
dXBkYXRpbmcKIAogICAgICAgICBjb21tYW5kX3JldHVybnNfbm9uX3plcm8gPSBbJy9iaW4vc2gn
LCAnLS1pbnZhbGlkLW9wdGlvbiddCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFNjcmlwdEVy
cm9yLCBTQ00ucnVuX2NvbW1hbmQsIGNvbW1hbmRfcmV0dXJuc19ub25femVybykKLSAgICAgICAg
c2VsZi5hc3NlcnRUcnVlKFNDTS5ydW5fY29tbWFuZChjb21tYW5kX3JldHVybnNfbm9uX3plcm8s
IGVycm9yX2hhbmRsZXI9aWdub3JlX2Vycm9yKSkKKyAgICAgICAgIyBDaGVjayBpZiByZXR1cm5z
IGVycm9yIHRleHQ6CisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShTQ00ucnVuX2NvbW1hbmQoY29t
bWFuZF9yZXR1cm5zX25vbl96ZXJvLCBlcnJvcl9oYW5kbGVyPWlnbm9yZV9lcnJvcilbMV0pCiAK
ICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoQ2hlY2tvdXROZWVkc1VwZGF0ZSwgY29tbWl0X2Vy
cm9yX2hhbmRsZXIsIFNjcmlwdEVycm9yKG91dHB1dD1naXRfZmFpbHVyZV9tZXNzYWdlKSkKICAg
ICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoQ2hlY2tvdXROZWVkc1VwZGF0ZSwgY29tbWl0X2Vycm9y
X2hhbmRsZXIsIFNjcmlwdEVycm9yKG91dHB1dD1zdm5fZmFpbHVyZV9tZXNzYWdlKSkK
</data>
<flag name="review"
          id="25123"
          type_id="1"
          status="-"
          setter="abarth"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>43493</attachid>
            <date>2009-11-19 01:22:48 -0800</date>
            <delta_ts>2009-11-19 22:58:05 -0800</delta_ts>
            <desc>other solution</desc>
            <filename>bug-29914-20091119102246.patch</filename>
            <type>text/plain</type>
            <size>2942</size>
            <attacher name="Zoltan Horvath">zoltan</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYktpdFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXRUb29scy9D
aGFuZ2VMb2cJKHJldmlzaW9uIDUxMTc4KQorKysgV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDMgKzEsMTcgQEAKKzIwMDktMTEtMTggIFpvbHRhbiBIb3J2YXRoICA8
em9sdGFuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgUmVtb3ZlIGluc2VydGluZyBzdGRlcnIgaW50byBwYXRjaCBpbiBidWd6aWxs
YS10b29sCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
OTkxNAorCisgICAgICAgIE1vZGlmeSBTQ00gcHl0aG9uIG1vZHVsZSdzIHJ1bl9jb21tYW5kIGZ1
bmN0aW9uIHRvIGF2b2lkIHJldHVybiBvZiBzdGRlcnIKKyAgICAgICAgYnkgZGVmYXVsdCwgc28g
c3RkZXJyIHdvbid0IGJlIGluc2VydGVkIGludG8gdGhlIHBhdGNoZXMuCisgICAgICAgIE1vZGlm
eSB0aGUgcmVsYXRlZCB1bml0IHRlc3QuCisKKyAgICAgICAgKiBTY3JpcHRzL21vZHVsZXMvc2Nt
LnB5OgorICAgICAgICAqIFNjcmlwdHMvbW9kdWxlcy9zY21fdW5pdHRlc3QucHk6CisKIDIwMDkt
MTEtMTggIEFkYW0gQmFydGggIDxhYmFydGhAd2Via2l0Lm9yZz4KIAogICAgICAgICBSZXZpZXdl
ZCBieSBFcmljIFNlaWRlbC4KSW5kZXg6IFdlYktpdFRvb2xzL1NjcmlwdHMvbW9kdWxlcy9zY20u
cHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViS2l0VG9vbHMvU2NyaXB0cy9tb2R1bGVzL3NjbS5weQkocmV2
aXNpb24gNTExNzgpCisrKyBXZWJLaXRUb29scy9TY3JpcHRzL21vZHVsZXMvc2NtLnB5CSh3b3Jr
aW5nIGNvcHkpCkBAIC0xMjMsMTQgKzEyMywxOCBAQCBjbGFzcyBTQ006CiAgICAgICAgIHNlbGYu
ZHJ5cnVuID0gZHJ5cnVuCiAKICAgICBAc3RhdGljbWV0aG9kCi0gICAgZGVmIHJ1bl9jb21tYW5k
KGFyZ3MsIGN3ZD1Ob25lLCBpbnB1dD1Ob25lLCBlcnJvcl9oYW5kbGVyPWRlZmF1bHRfZXJyb3Jf
aGFuZGxlciwgcmV0dXJuX2V4aXRfY29kZT1GYWxzZSk6CisgICAgZGVmIHJ1bl9jb21tYW5kKGFy
Z3MsIGN3ZD1Ob25lLCBpbnB1dD1Ob25lLCBlcnJvcl9oYW5kbGVyPWRlZmF1bHRfZXJyb3JfaGFu
ZGxlciwgcmV0dXJuX2V4aXRfY29kZT1GYWxzZSwgcmV0dXJuX3N0ZGVycj1GYWxzZSk6CiAgICAg
ICAgIGlmIGhhc2F0dHIoaW5wdXQsICdyZWFkJyk6ICMgQ2hlY2sgaWYgdGhlIGlucHV0IGlzIGEg
ZmlsZS4KICAgICAgICAgICAgIHN0ZGluID0gaW5wdXQKICAgICAgICAgICAgIHN0cmluZ190b19j
b21tdW5pY2F0ZSA9IE5vbmUKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIHN0ZGluID0gc3Vi
cHJvY2Vzcy5QSVBFIGlmIGlucHV0IGVsc2UgTm9uZQogICAgICAgICAgICAgc3RyaW5nX3RvX2Nv
bW11bmljYXRlID0gaW5wdXQKLSAgICAgICAgcHJvY2VzcyA9IHN1YnByb2Nlc3MuUG9wZW4oYXJn
cywgc3RkaW49c3RkaW4sIHN0ZG91dD1zdWJwcm9jZXNzLlBJUEUsIHN0ZGVycj1zdWJwcm9jZXNz
LlNURE9VVCwgY3dkPWN3ZCkKKyAgICAgICAgaWYgcmV0dXJuX3N0ZGVycjoKKyAgICAgICAgICAg
IHN0ZGVyciA9IHN1YnByb2Nlc3MuU1RET1VUCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBz
dGRlcnIgPSBOb25lCisgICAgICAgIHByb2Nlc3MgPSBzdWJwcm9jZXNzLlBvcGVuKGFyZ3MsIHN0
ZGluPXN0ZGluLCBzdGRvdXQ9c3VicHJvY2Vzcy5QSVBFLCBzdGRlcnI9c3RkZXJyLCBjd2Q9Y3dk
KQogICAgICAgICBvdXRwdXQgPSBwcm9jZXNzLmNvbW11bmljYXRlKHN0cmluZ190b19jb21tdW5p
Y2F0ZSlbMF0KICAgICAgICAgZXhpdF9jb2RlID0gcHJvY2Vzcy53YWl0KCkKICAgICAgICAgaWYg
ZXhpdF9jb2RlOgpJbmRleDogV2ViS2l0VG9vbHMvU2NyaXB0cy9tb2R1bGVzL3NjbV91bml0dGVz
dC5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXRUb29scy9TY3JpcHRzL21vZHVsZXMvc2NtX3VuaXR0
ZXN0LnB5CShyZXZpc2lvbiA1MTE3OCkKKysrIFdlYktpdFRvb2xzL1NjcmlwdHMvbW9kdWxlcy9z
Y21fdW5pdHRlc3QucHkJKHdvcmtpbmcgY29weSkKQEAgLTE1Myw3ICsxNTMsOCBAQCBzdm46IHJl
c291cmNlIG91dCBvZiBkYXRlOyB0cnkgdXBkYXRpbmcKIAogICAgICAgICBjb21tYW5kX3JldHVy
bnNfbm9uX3plcm8gPSBbJy9iaW4vc2gnLCAnLS1pbnZhbGlkLW9wdGlvbiddCiAgICAgICAgIHNl
bGYuYXNzZXJ0UmFpc2VzKFNjcmlwdEVycm9yLCBTQ00ucnVuX2NvbW1hbmQsIGNvbW1hbmRfcmV0
dXJuc19ub25femVybykKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKFNDTS5ydW5fY29tbWFuZChj
b21tYW5kX3JldHVybnNfbm9uX3plcm8sIGVycm9yX2hhbmRsZXI9aWdub3JlX2Vycm9yKSkKKyAg
ICAgICAgIyBDaGVjayBpZiByZXR1cm5zIGVycm9yIHRleHQ6CisgICAgICAgIHNlbGYuYXNzZXJ0
VHJ1ZShTQ00ucnVuX2NvbW1hbmQoY29tbWFuZF9yZXR1cm5zX25vbl96ZXJvLCBlcnJvcl9oYW5k
bGVyPWlnbm9yZV9lcnJvciwgcmV0dXJuX3N0ZGVycj1UcnVlKSkKIAogICAgICAgICBzZWxmLmFz
c2VydFJhaXNlcyhDaGVja291dE5lZWRzVXBkYXRlLCBjb21taXRfZXJyb3JfaGFuZGxlciwgU2Ny
aXB0RXJyb3Iob3V0cHV0PWdpdF9mYWlsdXJlX21lc3NhZ2UpKQogICAgICAgICBzZWxmLmFzc2Vy
dFJhaXNlcyhDaGVja291dE5lZWRzVXBkYXRlLCBjb21taXRfZXJyb3JfaGFuZGxlciwgU2NyaXB0
RXJyb3Iob3V0cHV0PXN2bl9mYWlsdXJlX21lc3NhZ2UpKQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>