<?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>65931</bug_id>
          
          <creation_ts>2011-08-09 11:27:39 -0700</creation_ts>
          <short_desc>Leaks bot shows python logging prefixes as part of summary display</short_desc>
          <delta_ts>2011-08-10 10:34:22 -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>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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Eric Seidel (no email)">eric</reporter>
          <assigned_to name="Eric Seidel (no email)">eric</assigned_to>
          <cc>abarth</cc>
    
    <cc>aroben</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>wsiegrist</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>448695</commentid>
    <comment_count>0</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-08-09 11:27:39 -0700</bug_when>
    <thetext>Leaks bot shows python logging prefixes as part of summary display

Right now the summary line looks like this:
#18494	Failed 2011-08-09 11:05:43,602 34458 mac.py:275 info leaks found for a total of 150,368 bytes! 2011-08-09 11:05:43,602 34458 mac.py:276 info 1 unique leaks found! 4 failures 1 flakes run-api-tests

When ORWT looked like this:
Failed 1400 total leaks found! 25 test cases (&lt;1%) had incorrect layout 1 test case (&lt;1%) crashed run-api-tests

After this patch it will look like:
#18494	Failed leaks found for a total of 150,368 bytes! 1 unique leaks found! 4 failures 1 flakes run-api-tests

Which isn&apos;t perfect, but much better than before.


In writing this change, I was sure I would make a typo or two, so I had to invent a way to test master.cfg changes.

That turned out to be ridiculously involved, as loading master.cfg not only required a buildbot install (I tried mocking it out at first, but that didn&apos;t work), but also required the ability to load/execute python files which have dots in their names and do not end in .py!

It&apos;s unclear if we really wanted to add buildbot to autoinstalled.  However normal webkitpy users won&apos;t notice any change, only ones running mastercfg_unittest.py will ever cause buildbot to autoinstall.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>448702</commentid>
    <comment_count>1</comment_count>
      <attachid>103378</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-08-09 11:36:28 -0700</bug_when>
    <thetext>Created attachment 103378
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>448708</commentid>
    <comment_count>2</comment_count>
      <attachid>103378</attachid>
    <who name="William Siegrist">wsiegrist</who>
    <bug_when>2011-08-09 11:45:33 -0700</bug_when>
    <thetext>Comment on attachment 103378
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=103378&amp;action=review

&gt; Tools/BuildSlaveSupport/build.webkit.org-config/master.cfg:270
&gt; +

You might want to consider pre-compiling the regex via re.compile() above this and pass it as a parameter to _strip_python_logging_prefix() so we&apos;re not parsing it for every line of log text

&gt; Tools/BuildSlaveSupport/build.webkit.org-config/master.cfg:729
&gt; +        scheduler = dict(map(lambda key_value_pair: (str(key_value_pair[0]), key_value_pair[1]), scheduler.items()))

FWIW, the master runs Python 2.6 which has a built-in json module which could be used to replace simplejson.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>448765</commentid>
    <comment_count>3</comment_count>
      <attachid>103378</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-08-09 13:43:21 -0700</bug_when>
    <thetext>Comment on attachment 103378
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=103378&amp;action=review

&gt;&gt; Tools/BuildSlaveSupport/build.webkit.org-config/master.cfg:270
&gt;&gt; +
&gt; 
&gt; You might want to consider pre-compiling the regex via re.compile() above this and pass it as a parameter to _strip_python_logging_prefix() so we&apos;re not parsing it for every line of log text

Currently it only runs on lines which have already matched the &quot;exiting early&quot; or &quot;leaks found&quot; regexp (up to 2 per log), but I&apos;m happy to pre-compile it in preparation for any future use.

&gt;&gt; Tools/BuildSlaveSupport/build.webkit.org-config/master.cfg:729
&gt;&gt; +        scheduler = dict(map(lambda key_value_pair: (str(key_value_pair[0]), key_value_pair[1]), scheduler.items()))
&gt; 
&gt; FWIW, the master runs Python 2.6 which has a built-in json module which could be used to replace simplejson.

For whatever (probably just historical) reason, master.cfg uses simplejson explicitly.  Built-in json also spits out unicode strings in newer versions of python, but the most recent versions of 2.6/2.7 have this bug fixed.  I figured this was a relatively easy fix for now, but I&apos;m happy to do the:

try:
   import json
except:
   import simpljson as json

trick that the rest of the webkitpy code does if you&apos;d prefer.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>448777</commentid>
    <comment_count>4</comment_count>
    <who name="William Siegrist">wsiegrist</who>
    <bug_when>2011-08-09 13:56:19 -0700</bug_when>
    <thetext>I don&apos;t have a strong desire for either of my comments to be acted upon, but you can assume the master always runs on python 2.6 or newer now. Simplejson was needed back when the master ran python 2.5.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>448778</commentid>
    <comment_count>5</comment_count>
      <attachid>103390</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-08-09 13:57:34 -0700</bug_when>
    <thetext>Created attachment 103390
Pre-compile regexp per bill&apos;s suggestion</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>448784</commentid>
    <comment_count>6</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-08-09 14:02:48 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; I don&apos;t have a strong desire for either of my comments to be acted upon, but you can assume the master always runs on python 2.6 or newer now. Simplejson was needed back when the master ran python 2.5.

Good to know.  I just tried moving everything to &apos;json&apos; and hit the same unicode problem.  It seems that json in Python 2.6.1 returns unicode, but the unicode-keywords bug hadn&apos;t been fixed yet.  So I&apos;ve left the code as-posted for now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>448789</commentid>
    <comment_count>7</comment_count>
      <attachid>103390</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-08-09 14:10:09 -0700</bug_when>
    <thetext>Comment on attachment 103390
Pre-compile regexp per bill&apos;s suggestion

View in context: https://bugs.webkit.org/attachment.cgi?id=103390&amp;action=review

&gt; Tools/BuildSlaveSupport/build.webkit.org-config/master.cfg:731
&gt; +        scheduler = dict(map(lambda key_value_pair: (str(key_value_pair[0]), key_value_pair[1]), scheduler.items()))

Can you break this out into a free function?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>448803</commentid>
    <comment_count>8</comment_count>
      <attachid>103390</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-08-09 14:22:56 -0700</bug_when>
    <thetext>Comment on attachment 103390
Pre-compile regexp per bill&apos;s suggestion

View in context: https://bugs.webkit.org/attachment.cgi?id=103390&amp;action=review

&gt;&gt; Tools/BuildSlaveSupport/build.webkit.org-config/master.cfg:731
&gt;&gt; +        scheduler = dict(map(lambda key_value_pair: (str(key_value_pair[0]), key_value_pair[1]), scheduler.items()))
&gt; 
&gt; Can you break this out into a free function?

I can.  I&apos;m not sure what you&apos;re looking for though.  Could you suggest a signature?  Unless you feel strongly I&apos;m inclined to just land it as-is.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>448806</commentid>
    <comment_count>9</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-08-09 14:25:47 -0700</bug_when>
    <thetext>&gt; I can.  I&apos;m not sure what you&apos;re looking for though.  Could you suggest a signature?  Unless you feel strongly I&apos;m inclined to just land it as-is.

convert_dictionary_keys_to_strings</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>449142</commentid>
    <comment_count>10</comment_count>
      <attachid>103390</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-08-10 07:46:07 -0700</bug_when>
    <thetext>Comment on attachment 103390
Pre-compile regexp per bill&apos;s suggestion

View in context: https://bugs.webkit.org/attachment.cgi?id=103390&amp;action=review

&gt;&gt;&gt; Tools/BuildSlaveSupport/build.webkit.org-config/master.cfg:731
&gt;&gt;&gt; +        scheduler = dict(map(lambda key_value_pair: (str(key_value_pair[0]), key_value_pair[1]), scheduler.items()))
&gt;&gt; 
&gt;&gt; Can you break this out into a free function?
&gt; 
&gt; I can.  I&apos;m not sure what you&apos;re looking for though.  Could you suggest a signature?  Unless you feel strongly I&apos;m inclined to just land it as-is.

I tried various flavors just now (both lambda and truly free function) and both read worse to me.  Since this is the only use for now, I&apos;d like to leave it as is.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>449153</commentid>
    <comment_count>11</comment_count>
      <attachid>103390</attachid>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2011-08-10 08:05:14 -0700</bug_when>
    <thetext>Comment on attachment 103390
Pre-compile regexp per bill&apos;s suggestion

View in context: https://bugs.webkit.org/attachment.cgi?id=103390&amp;action=review

&gt;&gt;&gt;&gt; Tools/BuildSlaveSupport/build.webkit.org-config/master.cfg:731
&gt;&gt;&gt;&gt; +        scheduler = dict(map(lambda key_value_pair: (str(key_value_pair[0]), key_value_pair[1]), scheduler.items()))
&gt;&gt;&gt; 
&gt;&gt;&gt; Can you break this out into a free function?
&gt;&gt; 
&gt;&gt; I can.  I&apos;m not sure what you&apos;re looking for though.  Could you suggest a signature?  Unless you feel strongly I&apos;m inclined to just land it as-is.
&gt; 
&gt; I tried various flavors just now (both lambda and truly free function) and both read worse to me.  Since this is the only use for now, I&apos;d like to leave it as is.

Seems like you can at least use argument unpacking to make this a little more palatable:

scheduler = dict(map(lambda (k, v): (str(k), v), scheduler.items()))

Or maybe a generator expression would be even more readable:

scheduler = dict((str(k), v) for (k, v) in scheduler.iteritems())</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>449177</commentid>
    <comment_count>12</comment_count>
      <attachid>103390</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-08-10 08:49:55 -0700</bug_when>
    <thetext>Comment on attachment 103390
Pre-compile regexp per bill&apos;s suggestion

Clearing flags on attachment: 103390

Committed r92772: &lt;http://trac.webkit.org/changeset/92772&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>449179</commentid>
    <comment_count>13</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-08-10 08:50:00 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>449225</commentid>
    <comment_count>14</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-08-10 10:34:22 -0700</bug_when>
    <thetext>(In reply to comment #11)
&gt; (From update of attachment 103390 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=103390&amp;action=review
&gt; 
&gt; &gt;&gt;&gt;&gt; Tools/BuildSlaveSupport/build.webkit.org-config/master.cfg:731
&gt; &gt;&gt;&gt;&gt; +        scheduler = dict(map(lambda key_value_pair: (str(key_value_pair[0]), key_value_pair[1]), scheduler.items()))
&gt; &gt;&gt;&gt; 
&gt; &gt;&gt;&gt; Can you break this out into a free function?
&gt; &gt;&gt; 
&gt; &gt;&gt; I can.  I&apos;m not sure what you&apos;re looking for though.  Could you suggest a signature?  Unless you feel strongly I&apos;m inclined to just land it as-is.
&gt; &gt; 
&gt; &gt; I tried various flavors just now (both lambda and truly free function) and both read worse to me.  Since this is the only use for now, I&apos;d like to leave it as is.
&gt; 
&gt; Seems like you can at least use argument unpacking to make this a little more palatable:
&gt; 
&gt; scheduler = dict(map(lambda (k, v): (str(k), v), scheduler.items()))

Oh, I tried:

dict(map(lambda k, v: (str(k), v), scheduler.items()))

And it complained about lambda only getting one argument when it expected 2.  But it&apos;s possible I needed to wrap my lamba arguments in () to make it work.

&gt; Or maybe a generator expression would be even more readable:
&gt; 
&gt; scheduler = dict((str(k), v) for (k, v) in scheduler.iteritems())

Agreed.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>103378</attachid>
            <date>2011-08-09 11:36:28 -0700</date>
            <delta_ts>2011-08-09 13:57:30 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-65931-20110809113627.patch</filename>
            <type>text/plain</type>
            <size>10345</size>
            <attacher name="Eric Seidel (no email)">eric</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTI2ODYKZGlmZiAtLWdpdCBhL1Rvb2xzL0J1aWxkU2xhdmVT
dXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL21hc3Rlci5jZmcgYi9Ub29scy9CdWlsZFNs
YXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9tYXN0ZXIuY2ZnCmluZGV4IDE2MTQx
YTcwMWJmZTQwNGVlNjQ5MzhlZjRlMDQ5MzM1MGE3ZGE0MjIuLjVjM2U1OTM1ZjI0YjBmYjNlNzM5
ZTlkNGY4OGI1MGFhOTYxZjcxZmYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0J1aWxkU2xhdmVTdXBwb3J0
L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL21hc3Rlci5jZmcKKysrIGIvVG9vbHMvQnVpbGRTbGF2
ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvbWFzdGVyLmNmZwpAQCAtMjYxLDYgKzI2
MSwxMyBAQCBjbGFzcyBSdW5XZWJLaXRUZXN0cyhzaGVsbC5UZXN0KToKIAogICAgICAgICBzZWxm
LmluY29ycmVjdExheW91dExpbmVzID0gaW5jb3JyZWN0TGF5b3V0TGluZXMKIAorICAgIGRlZiBf
c3RyaXBfcHl0aG9uX2xvZ2dpbmdfcHJlZml4KHNlbGYsIGxpbmUpOgorICAgICAgICAjIEZJWE1F
OiBUaGlzIHdpbGwgYnJlYWsgaWYgbmV3LXJ1bi13ZWJraXQtdGVzdHMgY2hhbmdlcyBpdHMgZGVm
YXVsdCBsb2cgZm9ybWF0dGVyLgorICAgICAgICBtYXRjaF9vYmplY3QgPSByZS5tYXRjaChyJyg/
UDxsb2dfcHJlZml4Pi4qKSAoP1A8bG9nX2xldmVsPkRFQlVHfElORk8pICg/UDxtZXNzYWdlPi4q
KScsIGxpbmUpCisgICAgICAgIGlmIG1hdGNoX29iamVjdDoKKyAgICAgICAgICAgIHJldHVybiBt
YXRjaF9vYmplY3QuZ3JvdXAoJ21lc3NhZ2UnKQorICAgICAgICByZXR1cm4gbGluZQorCiAgICAg
ZGVmIF9wYXJzZU5ld1J1bldlYktpdFRlc3RzT3V0cHV0KHNlbGYsIGxvZ1RleHQpOgogICAgICAg
ICBpbmNvcnJlY3RMYXlvdXRMaW5lcyA9IFtdCiAgICAgICAgIGV4cHJlc3Npb25zID0gWwpAQCAt
MjczLDcgKzI4MCw3IEBAIGNsYXNzIFJ1bldlYktpdFRlc3RzKHNoZWxsLlRlc3QpOgogCiAgICAg
ICAgIGZvciBsaW5lIGluIGxvZ1RleHQuc3BsaXRsaW5lcygpOgogICAgICAgICAgICAgaWYgbGlu
ZS5maW5kKCdFeGl0aW5nIGVhcmx5JykgPj0gMCBvciBsaW5lLmZpbmQoJ2xlYWtzIGZvdW5kJykg
Pj0gMDoKLSAgICAgICAgICAgICAgICBpbmNvcnJlY3RMYXlvdXRMaW5lcy5hcHBlbmQobGluZSkK
KyAgICAgICAgICAgICAgICBpbmNvcnJlY3RMYXlvdXRMaW5lcy5hcHBlbmQoc2VsZi5fc3RyaXBf
cHl0aG9uX2xvZ2dpbmdfcHJlZml4KGxpbmUpKQogICAgICAgICAgICAgICAgIGNvbnRpbnVlCiAg
ICAgICAgICAgICBmb3IgbmFtZSwgZXhwcmVzc2lvbiBpbiBleHByZXNzaW9uczoKICAgICAgICAg
ICAgICAgICBtYXRjaCA9IGV4cHJlc3Npb24uc2VhcmNoKGxpbmUpCkBAIC03MTYsNiArNzIzLDE0
IEBAIGRlZiBsb2FkQnVpbGRlckNvbmZpZyhjKToKICAgICAgICAgaWYgImNoYW5nZV9maWx0ZXIi
IGluIHNjaGVkdWxlcjoKICAgICAgICAgICAgIHNjaGVkdWxlclsiY2hhbmdlX2ZpbHRlciJdID0g
Z2xvYmFscygpW3NjaGVkdWxlclsiY2hhbmdlX2ZpbHRlciJdXQogICAgICAgICBrbHMgPSBnbG9i
YWxzKClbc2NoZWR1bGVyLnBvcCgndHlwZScpXQorICAgICAgICAjIFB5dGhvbiAyLjYgY2FuJ3Qg
aGFuZGxlIHVuaWNvZGUga2V5cyBhcyBrZXl3b3JkIGFyZ3VtZW50czoKKyAgICAgICAgIyBodHRw
Oi8vYnVncy5weXRob24ub3JnL2lzc3VlMjY0Ni4gIE1vZGVybiB2ZXJzaW9ucyBvZiBzaW1wbGVq
c29uIHJldHVybgorICAgICAgICAjIHVuaWNvZGUgc3RyaW5ncyBmcm9tIHNpbXBsZWpzb24ubG9h
ZCwgc28gd2UgbWFwIGFsbCBrZXlzIHRvIHN0ciBvYmplY3RzLgorICAgICAgICBzY2hlZHVsZXIg
PSBkaWN0KG1hcChsYW1iZGEga2V5X3ZhbHVlX3BhaXI6IChzdHIoa2V5X3ZhbHVlX3BhaXJbMF0p
LCBrZXlfdmFsdWVfcGFpclsxXSksIHNjaGVkdWxlci5pdGVtcygpKSkKKworICAgICAgICAjIEJh
c2VTY2hlZHVsZXIgYXNzZXJ0cyBpZiBnaXZlbiB1bmljb2RlIG9iamVjdHMgaW5zdGVhZCBvZiBz
dHJzLgorICAgICAgICAjIGh0dHA6Ly90cmFjLmJ1aWxkYm90Lm5ldC90aWNrZXQvMjA3NQorICAg
ICAgICBzY2hlZHVsZXJbJ2J1aWxkZXJOYW1lcyddID0gbWFwKHN0ciwgc2NoZWR1bGVyWydidWls
ZGVyTmFtZXMnXSkKICAgICAgICAgY1snc2NoZWR1bGVycyddLmFwcGVuZChrbHMoKipzY2hlZHVs
ZXIpKQogCiAgICAgY1snYnVpbGRlcnMnXSA9IFtdCmRpZmYgLS1naXQgYS9Ub29scy9CdWlsZFNs
YXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9tYXN0ZXJjZmdfdW5pdHRlc3QucHkg
Yi9Ub29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9tYXN0ZXJj
ZmdfdW5pdHRlc3QucHkKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uN2NiZTI5YTE4NWIyNDQ3Mjc4NDM4ZmY5YmVjYWI3
NGQ0Yzc4NmFjMgotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1
aWxkLndlYmtpdC5vcmctY29uZmlnL21hc3RlcmNmZ191bml0dGVzdC5weQpAQCAtMCwwICsxLDc0
IEBACisjISAvdXNyL2Jpbi9weXRob24KKworaW1wb3J0IHN5cworaW1wb3J0IG9zCitpbXBvcnQg
U3RyaW5nSU8KK2ltcG9ydCB1bml0dGVzdAorCisKK2NsYXNzIEJ1aWxkQm90Q29uZmlnTG9hZGVy
KG9iamVjdCk6CisgICAgZGVmIF9hZGRfd2Via2l0cHlfdG9fc3lzX3BhdGgoc2VsZik6CisgICAg
ICAgICMgV2hlbiBmaWxlcyBhcmUgcGFzc2VkIHRvIHRoZSBweXRob24gaW50ZXJwcmV0ZXIgb24g
dGhlIGNvbW1hbmQgbGluZSAoZS5nLiBweXRob24gdGVzdC5weSkgX19maWxlX18gaXMgYSByZWxh
dGl2ZSBwYXRoLgorICAgICAgICBhYnNvbHV0ZV9maWxlX3BhdGggPSBvcy5wYXRoLmFic3BhdGgo
X19maWxlX18pCisgICAgICAgIHdlYmtpdF9vcmdfY29uZmlnX2RpciA9IG9zLnBhdGguZGlybmFt
ZShhYnNvbHV0ZV9maWxlX3BhdGgpCisgICAgICAgIGJ1aWxkX3NsYXZlX3N1cHBvcnRfZGlyID0g
b3MucGF0aC5kaXJuYW1lKHdlYmtpdF9vcmdfY29uZmlnX2RpcikKKyAgICAgICAgd2Via2l0X3Rv
b2xzX2RpciA9IG9zLnBhdGguZGlybmFtZShidWlsZF9zbGF2ZV9zdXBwb3J0X2RpcikKKyAgICAg
ICAgc2NyaXB0c19kaXIgPSBvcy5wYXRoLmpvaW4od2Via2l0X3Rvb2xzX2RpciwgJ1NjcmlwdHMn
KQorICAgICAgICBzeXMucGF0aC5hcHBlbmQoc2NyaXB0c19kaXIpCisKKyAgICBkZWYgX2NyZWF0
ZV9tb2NrX3Bhc3N3b3Jkc19kaWN0KHNlbGYpOgorICAgICAgICBjb25maWdfZGljdCA9IHNpbXBs
ZWpzb24ubG9hZChvcGVuKCdjb25maWcuanNvbicpKQorICAgICAgICByZXR1cm4gZGljdChbKHNs
YXZlWyduYW1lJ10sICcxMjM0JykgZm9yIHNsYXZlIGluIGNvbmZpZ19kaWN0WydzbGF2ZXMnXV0p
CisKKyAgICBkZWYgX21vY2tfb3BlbihzZWxmLCBmaWxlbmFtZSk6CisgICAgICAgIGlmIGZpbGVu
YW1lID09ICdwYXNzd29yZHMuanNvbic6CisgICAgICAgICAgICAjIEZJWE1FOiBUaGlzIGRlcGVu
ZHMgb24gX2FkZF9kZXBlbmRhbnRfbW9kdWxlc190b19zeXNfbW9kdWxlcyBpbXBvcnRlZCBzaW1w
bGVqc29uLgorICAgICAgICAgICAgcmV0dXJuIFN0cmluZ0lPLlN0cmluZ0lPKHNpbXBsZWpzb24u
ZHVtcHMoc2VsZi5fY3JlYXRlX21vY2tfcGFzc3dvcmRzX2RpY3QoKSkpCisgICAgICAgIHJldHVy
biBfX2J1aWx0aW5zX18ub3BlbihmaWxlbmFtZSkKKworICAgIGRlZiBfYWRkX2RlcGVuZGFudF9t
b2R1bGVzX3RvX3N5c19tb2R1bGVzKHNlbGYpOgorICAgICAgICBmcm9tIHdlYmtpdHB5LnRoaXJk
cGFydHkuYXV0b2luc3RhbGxlZCBpbXBvcnQgYnVpbGRib3QKKyAgICAgICAgZnJvbSB3ZWJraXRw
eS50aGlyZHBhcnR5IGltcG9ydCBzaW1wbGVqc29uCisKKyAgICAgICAgc3lzLm1vZHVsZXNbJ2J1
aWxkYm90J10gPSBidWlsZGJvdAorICAgICAgICBzeXMubW9kdWxlc1snc2ltcGxlanNvbiddID0g
c2ltcGxlanNvbgorCisgICAgZGVmIGxvYWRfY29uZmlnKHNlbGYsIG1hc3Rlcl9jZmdfcGF0aCk6
CisgICAgICAgICMgQmVmb3JlIHdlIGNhbiB1c2Ugd2Via2l0cHkudGhpcmRwYXJ0eSwgd2UgbmVl
ZCB0byBmaXggb3VyIHBhdGggdG8gaW5jbHVkZSB3ZWJraXRweS4KKyAgICAgICAgIyBGSVhNRTog
SWYgd2UncmUgZXZlciBydW4gYnkgdGVzdC13ZWJraXRweSB3ZSB3b24ndCBuZWVkIHRoaXMgc3Rl
cC4KKyAgICAgICAgc2VsZi5fYWRkX3dlYmtpdHB5X3RvX3N5c19wYXRoKCkKKyAgICAgICAgIyBt
YXN0ZXIuY2ZnIGV4cGVjdHMgdGhlIGJ1aWxkYm90IGFuZCBzaW1wbGVqc29uIG1vZHVsZXMgdG8g
YmUgaW4gc3lzLnBhdGguCisgICAgICAgIHNlbGYuX2FkZF9kZXBlbmRhbnRfbW9kdWxlc190b19z
eXNfbW9kdWxlcygpCisKKyAgICAgICAgIyBtYXN0ZXIuY2ZnIGV4cGVjdHMgYSBwYXNzd29yZHMu
anNvbiBmaWxlIHdoaWNoIGlzIG5vdCBjaGVja2VkIGluLiAgRmFrZSBpdCBieSBtb2NraW5nIG9w
ZW4oKS4KKyAgICAgICAgZ2xvYmFscygpWydvcGVuJ10gPSBzZWxmLl9tb2NrX29wZW4KKyAgICAg
ICAgIyBCZWNhdXNlIHRoZSBtYXN0ZXJfY2ZnX3BhdGggbWF5IGhhdmUgJy4nIGluIGl0cyBuYW1l
LCB3ZSBjYW4ndCBqdXN0IHVzZSBpbXBvcnQsIHdlIGhhdmUgdG8gdXNlIGV4ZWNmaWxlLgorICAg
ICAgICAjIFdlIHBhc3MgZ2xvYmFscygpIGFzIGJvdGggdGhlIGdsb2JhbHMgYW5kIGxvY2FscyB0
byBtaW1pYyBleGVjdHV0aW5nIGluIHRoZSBnbG9iYWwgc2NvcGUsIHNvCisgICAgICAgICMgdGhh
dCBnbG9iYWxzIGRlZmluZWQgaW4gbWFzdGVyLmNmZyB3aWxsIGJlIGdsb2JhbCB0byB0aGlzIGZp
bGUgdG9vLgorICAgICAgICBleGVjZmlsZShtYXN0ZXJfY2ZnX3BhdGgsIGdsb2JhbHMoKSwgZ2xv
YmFscygpKQorICAgICAgICBnbG9iYWxzKClbJ29wZW4nXSA9IF9fYnVpbHRpbnNfXy5vcGVuICAj
IFN0b3AgbW9ja2luZyBvcGVuKCkuCisKKworY2xhc3MgTWFzdGVyQ2ZnVGVzdCh1bml0dGVzdC5U
ZXN0Q2FzZSk6CisgICAgZGVmIHRlc3RfbnJ3dF9sZWFrc19wYXJzaW5nKHNlbGYpOgorICAgICAg
ICBydW5fd2Via2l0X3Rlc3RzID0gUnVuV2ViS2l0VGVzdHMoKQorICAgICAgICBsb2dfdGV4dCA9
ICIiIgorMjAxMS0wOC0wOSAxMDowNToxOCw1ODAgMjk0ODYgbWFjLnB5OjI3NSBJTkZPIGxlYWtz
IGZvdW5kIGZvciBhIHRvdGFsIG9mIDE5Nyw5MzYgYnl0ZXMhCisyMDExLTA4LTA5IDEwOjA1OjE4
LDU4MCAyOTQ4NiBtYWMucHk6Mjc2IElORk8gMSB1bmlxdWUgbGVha3MgZm91bmQhCisiIiIKKyAg
ICAgICAgZXhwZWN0ZWRfaW5jb3JyZWN0X2xpbmVzID0gWworICAgICAgICAgICAgJ2xlYWtzIGZv
dW5kIGZvciBhIHRvdGFsIG9mIDE5Nyw5MzYgYnl0ZXMhJywKKyAgICAgICAgICAgICcxIHVuaXF1
ZSBsZWFrcyBmb3VuZCEnLAorICAgICAgICBdCisgICAgICAgIHJ1bl93ZWJraXRfdGVzdHMuX3Bh
cnNlTmV3UnVuV2ViS2l0VGVzdHNPdXRwdXQobG9nX3RleHQpCisgICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWxzKHJ1bl93ZWJraXRfdGVzdHMuaW5jb3JyZWN0TGF5b3V0TGluZXMsIGV4cGVjdGVkX2lu
Y29ycmVjdF9saW5lcykKKworCisjIEZJWE1FOiBXZSBzaG91bGQgcnVuIHRoaXMgZmlsZSBhcyBw
YXJ0IG9mIHRlc3Qtd2Via2l0cHkuCisjIFVuZm9ydHVuYXRlbHkgdGVzdC13ZWJraXRweSBjdXJy
ZW50bHkgcmVxdWlyZXMgdGhhdCB1bml0dGVzdHMKKyMgYmUgbG9jYXRlZCBpbiBhIGRpcmVjdG9y
eSB3aXRoIGEgdmFsaWQgbW9kdWxlIG5hbWUuCisjICdidWlsZC53ZWJraXQub3JnLWNvbmZpZycg
aXMgbm90IGEgdmFsaWQgbW9kdWxlIG5hbWUgKGR1ZSB0byAnLicgYW5kICctJykKKyMgc28gZm9y
IG5vdyB0aGlzIGlzIGEgc3RhbmQtYWxvbmUgdGVzdCBoYXJuZXNzLgoraWYgX19uYW1lX18gPT0g
J19fbWFpbl9fJzoKKyAgICBCdWlsZEJvdENvbmZpZ0xvYWRlcigpLmxvYWRfY29uZmlnKCdtYXN0
ZXIuY2ZnJykKKyAgICB1bml0dGVzdC5tYWluKCkKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxv
ZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCA1YzgwMDYzNjQ2ZmI2ZjNlMjRjMDI4Y2U4YTc5ODUy
NjlmN2U2NDE5Li4zMjVlYzNkMjRjOGRhYWRlY2VjNTA1YTA4ZWFlNzkwMzMxNGIyOGY3IDEwMDY0
NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
MzQgQEAKKzIwMTEtMDgtMDkgIEVyaWMgU2VpZGVsICA8ZXJpY0B3ZWJraXQub3JnPgorCisgICAg
ICAgIExlYWtzIGJvdCBzaG93cyBweXRob24gbG9nZ2luZyBwcmVmaXhlcyBhcyBwYXJ0IG9mIHN1
bW1hcnkgZGlzcGxheQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9NjU5MzEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBUaGUgYmlnIHBhcnQgb2YgdGhpcyBjaGFuZ2UgaXMgYWRkaW5nIGEgdW5pdHRlc3Rpbmcg
c3lzdGVtIGZvcgorICAgICAgICBtYXN0ZXIuY2ZnLCBzbyBtZXJlLW1vcnRhbHMgY2FuIG1ha2Ug
Y2hhbmdlcyB0byBidWlsZC53ZWJraXQub3JnCisgICAgICAgIHdpdGggZ3JlYXRseS1yZWR1Y2Vk
IHJpc2sgb2YgYnJlYWtpbmcgdGhlIHdvcmxkLgorCisgICAgICAgIFR1cm5zIG91dCB0aGF0IGlu
IHR5cGluZyB1cCBteSB0cml2YWwgbG9nZ2luZyBmaXggSSBtYWRlIDIgdHlwb3MsCisgICAgICAg
IHNvIGhvcGVmdWxseSB0aGUgaG91ciBzcGVudCBnZXR0aW5nIG1hc3Rlci5jZmcgdG8gbG9hZCB3
YXMgd29ydGggaXQuIDopCisKKyAgICAgICAgSSBhbHNvIHRyaWVkIHRvIG1ha2UgbWFzdGVyY2Zn
X3VuaXR0ZXN0IHJ1biBhcyBwYXJ0IG9mIHRlc3Qtd2Via2l0cHkKKyAgICAgICAgYnV0IHJpZ2h0
IG5vdyB0ZXN0LXdlYmtpdHB5IHJlcXVpcmVzIHRoYXQgdW5pdHRlc3QgZmlsZXMgYmUgbG9jYXRl
ZCBpbgorICAgICAgICBhIG1vZHVsZS1uYW1lLWNvbXBhdGlibGUgZGlyZWN0b3J5LiAgJ2J1aWxk
LndlYmtpdC5vcmctY29uZmlnJyBpcyBub3QKKyAgICAgICAgYSB2YWxpZCBtb2R1bGUgbmFtZS4K
KworICAgICAgICAqIEJ1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL21h
c3Rlci5jZmc6CisgICAgICAgICAtIEZpeGVkIF9wYXJzZU5ld1J1bldlYktpdFRlc3RzT3V0cHV0
IHRvIHN0cmlwIE5SV1QncyBweXRob24gZm9ybWF0dGVyIHByZWZpeAorICAgICAgICAgICBieSB1
c2luZyBhIG5ldyBfc3RyaXBfcHl0aG9uX2xvZ2dpbmdfcHJlZml4IGZ1bmN0aW9uLgorICAgICAg
ICAgLSBBbHNvIGZpeGVkIHRoaXMgZnVuY3Rpb24gdG8gZmlsZSB0byB3b3JrIHdpdGggYSBtb3Jl
IG1vZGVybgorICAgICAgICAgICBzaW1wbGVqc29uIHZlcnNpb24gKHdoaWNoIHJldHVybnMgdW5p
Y29kZSBvYmplY3RzIGluc3RlYWQgb2Ygc3RyIG9iamVjdHMpCisgICAgICAgICAgIGFuZCBmaWxl
ZCBhIHJlbGF0ZWQgYnVnIHdpdGggYnVpbGRib3QubmV0IGR1ZSB0byB0aGVpciBoYW5kbGluZyBv
ZiB1bmljb2RlIGJ1aWxkZXIgbmFtZXMuCisgICAgICAgICogQnVpbGRTbGF2ZVN1cHBvcnQvYnVp
bGQud2Via2l0Lm9yZy1jb25maWcvbWFzdGVyY2ZnX3VuaXR0ZXN0LnB5OiBBZGRlZC4KKyAgICAg
ICAgIC0gQnVpbGRCb3RDb25maWdMb2FkZXIgaXMgYSBodWdlIHBpbGUgb2YgY29kZSBqdXN0IHRv
IGdldCBtYXN0ZXIuY2ZnIHRvIGxvYWQuCisgICAgICAgICAtIFRoZSBhY3R1YWwgdGlueSB1bml0
dGVzdCBvZiB0aGUgbmV3IF9wYXJzZU5ld1J1bldlYktpdFRlc3RzT3V0cHV0IGxvZ2ljLgorICAg
ICAgICAqIFNjcmlwdHMvd2Via2l0cHkvdGhpcmRwYXJ0eS9fX2luaXRfXy5weToKKyAgICAgICAg
IC0gQWRkIGF1dG9pbnN0YWxsYXRpb24gb2YgYnVpbGRib3QgKGFuZCBqaW5qYTIpIGZvciB1c2Ug
YnkgbWFzdGVyY2ZnX3VuaXR0ZXN0LnB5CisKIDIwMTEtMDgtMDkgIFNoZXJpZmYgQm90ICA8d2Vi
a2l0LnJldmlldy5ib3RAZ21haWwuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcg
b3V0IHI5MjY4My4KZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdGhpcmRwYXJ0
eS9fX2luaXRfXy5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdGhpcmRwYXJ0eS9fX2luaXRf
Xy5weQppbmRleCBmYjA3ZjMzZTkzYWZkYTkyMWNhOGJiOGNjMzljZjViNWRkNTY4ZWEzLi45YjQ1
YzRkZTU4NmM0MTdjM2I4MWUxYjZlM2Q2YjcwNTQ1ODRlNzZmIDEwMDY0NAotLS0gYS9Ub29scy9T
Y3JpcHRzL3dlYmtpdHB5L3RoaXJkcGFydHkvX19pbml0X18ucHkKKysrIGIvVG9vbHMvU2NyaXB0
cy93ZWJraXRweS90aGlyZHBhcnR5L19faW5pdF9fLnB5CkBAIC04MSw2ICs4MSw4IEBAIGNsYXNz
IEF1dG9pbnN0YWxsSW1wb3J0SG9vayhvYmplY3QpOgogICAgICAgICAgICAgc2VsZi5faW5zdGFs
bF9pcmMoKQogICAgICAgICBlbGlmICcucHl3ZWJzb2NrZXQnIGluIGZ1bGxuYW1lOgogICAgICAg
ICAgICAgc2VsZi5faW5zdGFsbF9weXdlYnNvY2tldCgpCisgICAgICAgIGVsaWYgJy5idWlsZGJv
dCcgaW4gZnVsbG5hbWU6CisgICAgICAgICAgICBzZWxmLl9pbnN0YWxsX2J1aWxkYm90KCkKIAog
ICAgIGRlZiBfaW5zdGFsbF9tZWNoYW5pemUoc2VsZik6CiAgICAgICAgICMgVGhlIG1lY2hhbml6
ZSBwYWNrYWdlIHVzZXMgQ2xpZW50Rm9ybSwgZm9yIGV4YW1wbGUsIGluIF9odG1sLnB5LgpAQCAt
MTA0LDYgKzEwNiwyMiBAQCBjbGFzcyBBdXRvaW5zdGFsbEltcG9ydEhvb2sob2JqZWN0KToKICAg
ICAgICAgc2VsZi5faW5zdGFsbCgiaHR0cDovL3B5cGkucHl0aG9uLm9yZy9wYWNrYWdlcy9zb3Vy
Y2UvcC9wZXA4L3BlcDgtMC41LjAudGFyLmd6I21kNT01MTJhODE4YWY5OTc5MjkwY2Q2MTljY2U4
ZTljMmUyYiIsCiAgICAgICAgICAgICAgICAgICAgICAgInBlcDgtMC41LjAvcGVwOC5weSIpCiAK
KyAgICAjIGF1dG9pbnN0YWxsZWQuYnVpbGRib3QgaXMgdXNlZCBieSBCdWlsZFNsYXZlU3VwcG9y
dC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9tYXN0ZXJjZmdfdW5pdHRlc3QucHkKKyAgICAjIGFu
ZCBzaG91bGQgaWRlYWxseSBtYXRjaCB0aGUgdmVyc2lvbiBvZiBCdWlsZEJvdCB1c2VkIGF0IGJ1
aWxkLndlYmtpdC5vcmcuCisgICAgZGVmIF9pbnN0YWxsX2J1aWxkYm90KHNlbGYpOgorICAgICAg
ICAjIFRoZSBidWlsZGJvdCBwYWNrYWdlIHVzZXMgamluamEyLCBmb3IgZXhhbXBsZSwgaW4gYnVp
bGRib3Qvc3RhdHVzL3dlYi9iYXNlLnB5LgorICAgICAgICAjIGJ1aWxkYm90IGltcG9ydHMgamlu
amEyIGRpcmVjdGx5IChhcyB0aG91Z2ggaXQgd2VyZSBpbnN0YWxsZWQgb24gdGhlIHN5c3RlbSks
CisgICAgICAgICMgc28gdGhlIHNlYXJjaCBwYXRoIG5lZWRzIHRvIGluY2x1ZGUgamluamEyLiAg
V2UgcHV0IGppbmphMiBpbgorICAgICAgICAjIGl0cyBvd24gZGlyZWN0b3J5IHNvIHRoYXQgd2Ug
Y2FuIGluY2x1ZGUgaXQgaW4gdGhlIHNlYXJjaCBwYXRoCisgICAgICAgICMgd2l0aG91dCBpbmNs
dWRpbmcgb3RoZXIgbW9kdWxlcyBhcyBhIHNpZGUgZWZmZWN0LgorICAgICAgICBjbGllbnRmb3Jt
X2RpciA9IHNlbGYuX2ZzLmpvaW4oX0FVVE9JTlNUQUxMRURfRElSLCAiamluamEyIikKKyAgICAg
ICAgaW5zdGFsbGVyID0gQXV0b0luc3RhbGxlcihhcHBlbmRfdG9fc2VhcmNoX3BhdGg9VHJ1ZSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YXJnZXRfZGlyPWNsaWVudGZvcm1f
ZGlyKQorICAgICAgICBpbnN0YWxsZXIuaW5zdGFsbCh1cmw9Imh0dHA6Ly9weXBpLnB5dGhvbi5v
cmcvcGFja2FnZXMvc291cmNlL0ovSmluamEyL0ppbmphMi0yLjYudGFyLmd6I21kNT0xYzQ5YTg4
MjVjOTkzYmZkY2Y1NWJiMzY4OTdkMjhhMiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgIHVy
bF9zdWJwYXRoPSJKaW5qYTItMi42L2ppbmphMiIpCisKKyAgICAgICAgc2VsZi5faW5zdGFsbCgi
aHR0cDovL3B5cGkucHl0aG9uLm9yZy9wYWNrYWdlcy9zb3VyY2UvYi9idWlsZGJvdC9idWlsZGJv
dC0wLjguNHAyLnRhci5neiNtZDU9NzU5N2Q5NDU3MjRjODBjMGFiNDc2ZTgzM2ExMDI2Y2IiLCAi
YnVpbGRib3QtMC44LjRwMi9idWlsZGJvdCIpCisKICAgICBkZWYgX2luc3RhbGxfZWxpemEoc2Vs
Zik6CiAgICAgICAgIGluc3RhbGxlciA9IEF1dG9JbnN0YWxsZXIodGFyZ2V0X2Rpcj1fQVVUT0lO
U1RBTExFRF9ESVIpCiAgICAgICAgIGluc3RhbGxlci5pbnN0YWxsKHVybD0iaHR0cDovL3d3dy5h
ZGFtYmFydGguY29tL3dlYmtpdC9lbGl6YSIsCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>103390</attachid>
            <date>2011-08-09 13:57:34 -0700</date>
            <delta_ts>2011-08-10 08:49:55 -0700</delta_ts>
            <desc>Pre-compile regexp per bill&apos;s suggestion</desc>
            <filename>bug-65931-20110809135733.patch</filename>
            <type>text/plain</type>
            <size>11011</size>
            <attacher name="Eric Seidel (no email)">eric</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTI2ODYKZGlmZiAtLWdpdCBhL1Rvb2xzL0J1aWxkU2xhdmVT
dXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL21hc3Rlci5jZmcgYi9Ub29scy9CdWlsZFNs
YXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9tYXN0ZXIuY2ZnCmluZGV4IDE2MTQx
YTcwMWJmZTQwNGVlNjQ5MzhlZjRlMDQ5MzM1MGE3ZGE0MjIuLjRmZWFhZjFiMTFiZTkwMmMzNDRh
YTMxNmI3ZGNhZDQ2NTZjNDliYjYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0J1aWxkU2xhdmVTdXBwb3J0
L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL21hc3Rlci5jZmcKKysrIGIvVG9vbHMvQnVpbGRTbGF2
ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvbWFzdGVyLmNmZwpAQCAtMjYxLDYgKzI2
MSwxNSBAQCBjbGFzcyBSdW5XZWJLaXRUZXN0cyhzaGVsbC5UZXN0KToKIAogICAgICAgICBzZWxm
LmluY29ycmVjdExheW91dExpbmVzID0gaW5jb3JyZWN0TGF5b3V0TGluZXMKIAorICAgICMgRklY
TUU6IFRoaXMgd2lsbCBicmVhayBpZiBuZXctcnVuLXdlYmtpdC10ZXN0cyBjaGFuZ2VzIGl0cyBk
ZWZhdWx0IGxvZyBmb3JtYXR0ZXIuCisgICAgbnJ3dF9sb2dfbWVzc2FnZV9yZWdleHAgPSByZS5j
b21waWxlKHInKD9QPGxvZ19wcmVmaXg+LiopICg/UDxsb2dfbGV2ZWw+REVCVUd8SU5GTykgKD9Q
PG1lc3NhZ2U+LiopJykKKworICAgIGRlZiBfc3RyaXBfcHl0aG9uX2xvZ2dpbmdfcHJlZml4KHNl
bGYsIGxpbmUpOgorICAgICAgICBtYXRjaF9vYmplY3QgPSBzZWxmLm5yd3RfbG9nX21lc3NhZ2Vf
cmVnZXhwLm1hdGNoKGxpbmUpCisgICAgICAgIGlmIG1hdGNoX29iamVjdDoKKyAgICAgICAgICAg
IHJldHVybiBtYXRjaF9vYmplY3QuZ3JvdXAoJ21lc3NhZ2UnKQorICAgICAgICByZXR1cm4gbGlu
ZQorCiAgICAgZGVmIF9wYXJzZU5ld1J1bldlYktpdFRlc3RzT3V0cHV0KHNlbGYsIGxvZ1RleHQp
OgogICAgICAgICBpbmNvcnJlY3RMYXlvdXRMaW5lcyA9IFtdCiAgICAgICAgIGV4cHJlc3Npb25z
ID0gWwpAQCAtMjczLDcgKzI4Miw3IEBAIGNsYXNzIFJ1bldlYktpdFRlc3RzKHNoZWxsLlRlc3Qp
OgogCiAgICAgICAgIGZvciBsaW5lIGluIGxvZ1RleHQuc3BsaXRsaW5lcygpOgogICAgICAgICAg
ICAgaWYgbGluZS5maW5kKCdFeGl0aW5nIGVhcmx5JykgPj0gMCBvciBsaW5lLmZpbmQoJ2xlYWtz
IGZvdW5kJykgPj0gMDoKLSAgICAgICAgICAgICAgICBpbmNvcnJlY3RMYXlvdXRMaW5lcy5hcHBl
bmQobGluZSkKKyAgICAgICAgICAgICAgICBpbmNvcnJlY3RMYXlvdXRMaW5lcy5hcHBlbmQoc2Vs
Zi5fc3RyaXBfcHl0aG9uX2xvZ2dpbmdfcHJlZml4KGxpbmUpKQogICAgICAgICAgICAgICAgIGNv
bnRpbnVlCiAgICAgICAgICAgICBmb3IgbmFtZSwgZXhwcmVzc2lvbiBpbiBleHByZXNzaW9uczoK
ICAgICAgICAgICAgICAgICBtYXRjaCA9IGV4cHJlc3Npb24uc2VhcmNoKGxpbmUpCkBAIC03MTYs
NiArNzI1LDE0IEBAIGRlZiBsb2FkQnVpbGRlckNvbmZpZyhjKToKICAgICAgICAgaWYgImNoYW5n
ZV9maWx0ZXIiIGluIHNjaGVkdWxlcjoKICAgICAgICAgICAgIHNjaGVkdWxlclsiY2hhbmdlX2Zp
bHRlciJdID0gZ2xvYmFscygpW3NjaGVkdWxlclsiY2hhbmdlX2ZpbHRlciJdXQogICAgICAgICBr
bHMgPSBnbG9iYWxzKClbc2NoZWR1bGVyLnBvcCgndHlwZScpXQorICAgICAgICAjIFB5dGhvbiAy
LjYgY2FuJ3QgaGFuZGxlIHVuaWNvZGUga2V5cyBhcyBrZXl3b3JkIGFyZ3VtZW50czoKKyAgICAg
ICAgIyBodHRwOi8vYnVncy5weXRob24ub3JnL2lzc3VlMjY0Ni4gIE1vZGVybiB2ZXJzaW9ucyBv
ZiBzaW1wbGVqc29uIHJldHVybgorICAgICAgICAjIHVuaWNvZGUgc3RyaW5ncyBmcm9tIHNpbXBs
ZWpzb24ubG9hZCwgc28gd2UgbWFwIGFsbCBrZXlzIHRvIHN0ciBvYmplY3RzLgorICAgICAgICBz
Y2hlZHVsZXIgPSBkaWN0KG1hcChsYW1iZGEga2V5X3ZhbHVlX3BhaXI6IChzdHIoa2V5X3ZhbHVl
X3BhaXJbMF0pLCBrZXlfdmFsdWVfcGFpclsxXSksIHNjaGVkdWxlci5pdGVtcygpKSkKKworICAg
ICAgICAjIEJhc2VTY2hlZHVsZXIgYXNzZXJ0cyBpZiBnaXZlbiB1bmljb2RlIG9iamVjdHMgaW5z
dGVhZCBvZiBzdHJzLgorICAgICAgICAjIGh0dHA6Ly90cmFjLmJ1aWxkYm90Lm5ldC90aWNrZXQv
MjA3NQorICAgICAgICBzY2hlZHVsZXJbJ2J1aWxkZXJOYW1lcyddID0gbWFwKHN0ciwgc2NoZWR1
bGVyWydidWlsZGVyTmFtZXMnXSkKICAgICAgICAgY1snc2NoZWR1bGVycyddLmFwcGVuZChrbHMo
KipzY2hlZHVsZXIpKQogCiAgICAgY1snYnVpbGRlcnMnXSA9IFtdCmRpZmYgLS1naXQgYS9Ub29s
cy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9tYXN0ZXJjZmdfdW5p
dHRlc3QucHkgYi9Ub29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZp
Zy9tYXN0ZXJjZmdfdW5pdHRlc3QucHkKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uN2NiZTI5YTE4NWIyNDQ3Mjc4NDM4
ZmY5YmVjYWI3NGQ0Yzc4NmFjMgotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL0J1aWxkU2xhdmVT
dXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL21hc3RlcmNmZ191bml0dGVzdC5weQpAQCAt
MCwwICsxLDc0IEBACisjISAvdXNyL2Jpbi9weXRob24KKworaW1wb3J0IHN5cworaW1wb3J0IG9z
CitpbXBvcnQgU3RyaW5nSU8KK2ltcG9ydCB1bml0dGVzdAorCisKK2NsYXNzIEJ1aWxkQm90Q29u
ZmlnTG9hZGVyKG9iamVjdCk6CisgICAgZGVmIF9hZGRfd2Via2l0cHlfdG9fc3lzX3BhdGgoc2Vs
Zik6CisgICAgICAgICMgV2hlbiBmaWxlcyBhcmUgcGFzc2VkIHRvIHRoZSBweXRob24gaW50ZXJw
cmV0ZXIgb24gdGhlIGNvbW1hbmQgbGluZSAoZS5nLiBweXRob24gdGVzdC5weSkgX19maWxlX18g
aXMgYSByZWxhdGl2ZSBwYXRoLgorICAgICAgICBhYnNvbHV0ZV9maWxlX3BhdGggPSBvcy5wYXRo
LmFic3BhdGgoX19maWxlX18pCisgICAgICAgIHdlYmtpdF9vcmdfY29uZmlnX2RpciA9IG9zLnBh
dGguZGlybmFtZShhYnNvbHV0ZV9maWxlX3BhdGgpCisgICAgICAgIGJ1aWxkX3NsYXZlX3N1cHBv
cnRfZGlyID0gb3MucGF0aC5kaXJuYW1lKHdlYmtpdF9vcmdfY29uZmlnX2RpcikKKyAgICAgICAg
d2Via2l0X3Rvb2xzX2RpciA9IG9zLnBhdGguZGlybmFtZShidWlsZF9zbGF2ZV9zdXBwb3J0X2Rp
cikKKyAgICAgICAgc2NyaXB0c19kaXIgPSBvcy5wYXRoLmpvaW4od2Via2l0X3Rvb2xzX2Rpciwg
J1NjcmlwdHMnKQorICAgICAgICBzeXMucGF0aC5hcHBlbmQoc2NyaXB0c19kaXIpCisKKyAgICBk
ZWYgX2NyZWF0ZV9tb2NrX3Bhc3N3b3Jkc19kaWN0KHNlbGYpOgorICAgICAgICBjb25maWdfZGlj
dCA9IHNpbXBsZWpzb24ubG9hZChvcGVuKCdjb25maWcuanNvbicpKQorICAgICAgICByZXR1cm4g
ZGljdChbKHNsYXZlWyduYW1lJ10sICcxMjM0JykgZm9yIHNsYXZlIGluIGNvbmZpZ19kaWN0Wydz
bGF2ZXMnXV0pCisKKyAgICBkZWYgX21vY2tfb3BlbihzZWxmLCBmaWxlbmFtZSk6CisgICAgICAg
IGlmIGZpbGVuYW1lID09ICdwYXNzd29yZHMuanNvbic6CisgICAgICAgICAgICAjIEZJWE1FOiBU
aGlzIGRlcGVuZHMgb24gX2FkZF9kZXBlbmRhbnRfbW9kdWxlc190b19zeXNfbW9kdWxlcyBpbXBv
cnRlZCBzaW1wbGVqc29uLgorICAgICAgICAgICAgcmV0dXJuIFN0cmluZ0lPLlN0cmluZ0lPKHNp
bXBsZWpzb24uZHVtcHMoc2VsZi5fY3JlYXRlX21vY2tfcGFzc3dvcmRzX2RpY3QoKSkpCisgICAg
ICAgIHJldHVybiBfX2J1aWx0aW5zX18ub3BlbihmaWxlbmFtZSkKKworICAgIGRlZiBfYWRkX2Rl
cGVuZGFudF9tb2R1bGVzX3RvX3N5c19tb2R1bGVzKHNlbGYpOgorICAgICAgICBmcm9tIHdlYmtp
dHB5LnRoaXJkcGFydHkuYXV0b2luc3RhbGxlZCBpbXBvcnQgYnVpbGRib3QKKyAgICAgICAgZnJv
bSB3ZWJraXRweS50aGlyZHBhcnR5IGltcG9ydCBzaW1wbGVqc29uCisKKyAgICAgICAgc3lzLm1v
ZHVsZXNbJ2J1aWxkYm90J10gPSBidWlsZGJvdAorICAgICAgICBzeXMubW9kdWxlc1snc2ltcGxl
anNvbiddID0gc2ltcGxlanNvbgorCisgICAgZGVmIGxvYWRfY29uZmlnKHNlbGYsIG1hc3Rlcl9j
ZmdfcGF0aCk6CisgICAgICAgICMgQmVmb3JlIHdlIGNhbiB1c2Ugd2Via2l0cHkudGhpcmRwYXJ0
eSwgd2UgbmVlZCB0byBmaXggb3VyIHBhdGggdG8gaW5jbHVkZSB3ZWJraXRweS4KKyAgICAgICAg
IyBGSVhNRTogSWYgd2UncmUgZXZlciBydW4gYnkgdGVzdC13ZWJraXRweSB3ZSB3b24ndCBuZWVk
IHRoaXMgc3RlcC4KKyAgICAgICAgc2VsZi5fYWRkX3dlYmtpdHB5X3RvX3N5c19wYXRoKCkKKyAg
ICAgICAgIyBtYXN0ZXIuY2ZnIGV4cGVjdHMgdGhlIGJ1aWxkYm90IGFuZCBzaW1wbGVqc29uIG1v
ZHVsZXMgdG8gYmUgaW4gc3lzLnBhdGguCisgICAgICAgIHNlbGYuX2FkZF9kZXBlbmRhbnRfbW9k
dWxlc190b19zeXNfbW9kdWxlcygpCisKKyAgICAgICAgIyBtYXN0ZXIuY2ZnIGV4cGVjdHMgYSBw
YXNzd29yZHMuanNvbiBmaWxlIHdoaWNoIGlzIG5vdCBjaGVja2VkIGluLiAgRmFrZSBpdCBieSBt
b2NraW5nIG9wZW4oKS4KKyAgICAgICAgZ2xvYmFscygpWydvcGVuJ10gPSBzZWxmLl9tb2NrX29w
ZW4KKyAgICAgICAgIyBCZWNhdXNlIHRoZSBtYXN0ZXJfY2ZnX3BhdGggbWF5IGhhdmUgJy4nIGlu
IGl0cyBuYW1lLCB3ZSBjYW4ndCBqdXN0IHVzZSBpbXBvcnQsIHdlIGhhdmUgdG8gdXNlIGV4ZWNm
aWxlLgorICAgICAgICAjIFdlIHBhc3MgZ2xvYmFscygpIGFzIGJvdGggdGhlIGdsb2JhbHMgYW5k
IGxvY2FscyB0byBtaW1pYyBleGVjdHV0aW5nIGluIHRoZSBnbG9iYWwgc2NvcGUsIHNvCisgICAg
ICAgICMgdGhhdCBnbG9iYWxzIGRlZmluZWQgaW4gbWFzdGVyLmNmZyB3aWxsIGJlIGdsb2JhbCB0
byB0aGlzIGZpbGUgdG9vLgorICAgICAgICBleGVjZmlsZShtYXN0ZXJfY2ZnX3BhdGgsIGdsb2Jh
bHMoKSwgZ2xvYmFscygpKQorICAgICAgICBnbG9iYWxzKClbJ29wZW4nXSA9IF9fYnVpbHRpbnNf
Xy5vcGVuICAjIFN0b3AgbW9ja2luZyBvcGVuKCkuCisKKworY2xhc3MgTWFzdGVyQ2ZnVGVzdCh1
bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgZGVmIHRlc3RfbnJ3dF9sZWFrc19wYXJzaW5nKHNlbGYp
OgorICAgICAgICBydW5fd2Via2l0X3Rlc3RzID0gUnVuV2ViS2l0VGVzdHMoKQorICAgICAgICBs
b2dfdGV4dCA9ICIiIgorMjAxMS0wOC0wOSAxMDowNToxOCw1ODAgMjk0ODYgbWFjLnB5OjI3NSBJ
TkZPIGxlYWtzIGZvdW5kIGZvciBhIHRvdGFsIG9mIDE5Nyw5MzYgYnl0ZXMhCisyMDExLTA4LTA5
IDEwOjA1OjE4LDU4MCAyOTQ4NiBtYWMucHk6Mjc2IElORk8gMSB1bmlxdWUgbGVha3MgZm91bmQh
CisiIiIKKyAgICAgICAgZXhwZWN0ZWRfaW5jb3JyZWN0X2xpbmVzID0gWworICAgICAgICAgICAg
J2xlYWtzIGZvdW5kIGZvciBhIHRvdGFsIG9mIDE5Nyw5MzYgYnl0ZXMhJywKKyAgICAgICAgICAg
ICcxIHVuaXF1ZSBsZWFrcyBmb3VuZCEnLAorICAgICAgICBdCisgICAgICAgIHJ1bl93ZWJraXRf
dGVzdHMuX3BhcnNlTmV3UnVuV2ViS2l0VGVzdHNPdXRwdXQobG9nX3RleHQpCisgICAgICAgIHNl
bGYuYXNzZXJ0RXF1YWxzKHJ1bl93ZWJraXRfdGVzdHMuaW5jb3JyZWN0TGF5b3V0TGluZXMsIGV4
cGVjdGVkX2luY29ycmVjdF9saW5lcykKKworCisjIEZJWE1FOiBXZSBzaG91bGQgcnVuIHRoaXMg
ZmlsZSBhcyBwYXJ0IG9mIHRlc3Qtd2Via2l0cHkuCisjIFVuZm9ydHVuYXRlbHkgdGVzdC13ZWJr
aXRweSBjdXJyZW50bHkgcmVxdWlyZXMgdGhhdCB1bml0dGVzdHMKKyMgYmUgbG9jYXRlZCBpbiBh
IGRpcmVjdG9yeSB3aXRoIGEgdmFsaWQgbW9kdWxlIG5hbWUuCisjICdidWlsZC53ZWJraXQub3Jn
LWNvbmZpZycgaXMgbm90IGEgdmFsaWQgbW9kdWxlIG5hbWUgKGR1ZSB0byAnLicgYW5kICctJykK
KyMgc28gZm9yIG5vdyB0aGlzIGlzIGEgc3RhbmQtYWxvbmUgdGVzdCBoYXJuZXNzLgoraWYgX19u
YW1lX18gPT0gJ19fbWFpbl9fJzoKKyAgICBCdWlsZEJvdENvbmZpZ0xvYWRlcigpLmxvYWRfY29u
ZmlnKCdtYXN0ZXIuY2ZnJykKKyAgICB1bml0dGVzdC5tYWluKCkKZGlmZiAtLWdpdCBhL1Rvb2xz
L0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCA1YzgwMDYzNjQ2ZmI2ZjNlMjRjMDI4
Y2U4YTc5ODUyNjlmN2U2NDE5Li4zMjVlYzNkMjRjOGRhYWRlY2VjNTA1YTA4ZWFlNzkwMzMxNGIy
OGY3IDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMzQgQEAKKzIwMTEtMDgtMDkgIEVyaWMgU2VpZGVsICA8ZXJpY0B3ZWJraXQub3Jn
PgorCisgICAgICAgIExlYWtzIGJvdCBzaG93cyBweXRob24gbG9nZ2luZyBwcmVmaXhlcyBhcyBw
YXJ0IG9mIHN1bW1hcnkgZGlzcGxheQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9NjU5MzEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBUaGUgYmlnIHBhcnQgb2YgdGhpcyBjaGFuZ2UgaXMgYWRkaW5nIGEgdW5p
dHRlc3Rpbmcgc3lzdGVtIGZvcgorICAgICAgICBtYXN0ZXIuY2ZnLCBzbyBtZXJlLW1vcnRhbHMg
Y2FuIG1ha2UgY2hhbmdlcyB0byBidWlsZC53ZWJraXQub3JnCisgICAgICAgIHdpdGggZ3JlYXRs
eS1yZWR1Y2VkIHJpc2sgb2YgYnJlYWtpbmcgdGhlIHdvcmxkLgorCisgICAgICAgIFR1cm5zIG91
dCB0aGF0IGluIHR5cGluZyB1cCBteSB0cml2YWwgbG9nZ2luZyBmaXggSSBtYWRlIDIgdHlwb3Ms
CisgICAgICAgIHNvIGhvcGVmdWxseSB0aGUgaG91ciBzcGVudCBnZXR0aW5nIG1hc3Rlci5jZmcg
dG8gbG9hZCB3YXMgd29ydGggaXQuIDopCisKKyAgICAgICAgSSBhbHNvIHRyaWVkIHRvIG1ha2Ug
bWFzdGVyY2ZnX3VuaXR0ZXN0IHJ1biBhcyBwYXJ0IG9mIHRlc3Qtd2Via2l0cHkKKyAgICAgICAg
YnV0IHJpZ2h0IG5vdyB0ZXN0LXdlYmtpdHB5IHJlcXVpcmVzIHRoYXQgdW5pdHRlc3QgZmlsZXMg
YmUgbG9jYXRlZCBpbgorICAgICAgICBhIG1vZHVsZS1uYW1lLWNvbXBhdGlibGUgZGlyZWN0b3J5
LiAgJ2J1aWxkLndlYmtpdC5vcmctY29uZmlnJyBpcyBub3QKKyAgICAgICAgYSB2YWxpZCBtb2R1
bGUgbmFtZS4KKworICAgICAgICAqIEJ1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmct
Y29uZmlnL21hc3Rlci5jZmc6CisgICAgICAgICAtIEZpeGVkIF9wYXJzZU5ld1J1bldlYktpdFRl
c3RzT3V0cHV0IHRvIHN0cmlwIE5SV1QncyBweXRob24gZm9ybWF0dGVyIHByZWZpeAorICAgICAg
ICAgICBieSB1c2luZyBhIG5ldyBfc3RyaXBfcHl0aG9uX2xvZ2dpbmdfcHJlZml4IGZ1bmN0aW9u
LgorICAgICAgICAgLSBBbHNvIGZpeGVkIHRoaXMgZnVuY3Rpb24gdG8gZmlsZSB0byB3b3JrIHdp
dGggYSBtb3JlIG1vZGVybgorICAgICAgICAgICBzaW1wbGVqc29uIHZlcnNpb24gKHdoaWNoIHJl
dHVybnMgdW5pY29kZSBvYmplY3RzIGluc3RlYWQgb2Ygc3RyIG9iamVjdHMpCisgICAgICAgICAg
IGFuZCBmaWxlZCBhIHJlbGF0ZWQgYnVnIHdpdGggYnVpbGRib3QubmV0IGR1ZSB0byB0aGVpciBo
YW5kbGluZyBvZiB1bmljb2RlIGJ1aWxkZXIgbmFtZXMuCisgICAgICAgICogQnVpbGRTbGF2ZVN1
cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvbWFzdGVyY2ZnX3VuaXR0ZXN0LnB5OiBBZGRl
ZC4KKyAgICAgICAgIC0gQnVpbGRCb3RDb25maWdMb2FkZXIgaXMgYSBodWdlIHBpbGUgb2YgY29k
ZSBqdXN0IHRvIGdldCBtYXN0ZXIuY2ZnIHRvIGxvYWQuCisgICAgICAgICAtIFRoZSBhY3R1YWwg
dGlueSB1bml0dGVzdCBvZiB0aGUgbmV3IF9wYXJzZU5ld1J1bldlYktpdFRlc3RzT3V0cHV0IGxv
Z2ljLgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvdGhpcmRwYXJ0eS9fX2luaXRfXy5weToK
KyAgICAgICAgIC0gQWRkIGF1dG9pbnN0YWxsYXRpb24gb2YgYnVpbGRib3QgKGFuZCBqaW5qYTIp
IGZvciB1c2UgYnkgbWFzdGVyY2ZnX3VuaXR0ZXN0LnB5CisKIDIwMTEtMDgtMDkgIFNoZXJpZmYg
Qm90ICA8d2Via2l0LnJldmlldy5ib3RAZ21haWwuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQs
IHJvbGxpbmcgb3V0IHI5MjY4My4KZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkv
dGhpcmRwYXJ0eS9fX2luaXRfXy5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdGhpcmRwYXJ0
eS9fX2luaXRfXy5weQppbmRleCBmYjA3ZjMzZTkzYWZkYTkyMWNhOGJiOGNjMzljZjViNWRkNTY4
ZWEzLi5mMGE3YzQ4ZmQzMDEyYzBkZjQ1MGI0NjVjNTk0ZWNhMTdhZmRjMmVkIDEwMDY0NAotLS0g
YS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3RoaXJkcGFydHkvX19pbml0X18ucHkKKysrIGIvVG9v
bHMvU2NyaXB0cy93ZWJraXRweS90aGlyZHBhcnR5L19faW5pdF9fLnB5CkBAIC04MSw2ICs4MSw4
IEBAIGNsYXNzIEF1dG9pbnN0YWxsSW1wb3J0SG9vayhvYmplY3QpOgogICAgICAgICAgICAgc2Vs
Zi5faW5zdGFsbF9pcmMoKQogICAgICAgICBlbGlmICcucHl3ZWJzb2NrZXQnIGluIGZ1bGxuYW1l
OgogICAgICAgICAgICAgc2VsZi5faW5zdGFsbF9weXdlYnNvY2tldCgpCisgICAgICAgIGVsaWYg
Jy5idWlsZGJvdCcgaW4gZnVsbG5hbWU6CisgICAgICAgICAgICBzZWxmLl9pbnN0YWxsX2J1aWxk
Ym90KCkKIAogICAgIGRlZiBfaW5zdGFsbF9tZWNoYW5pemUoc2VsZik6CiAgICAgICAgICMgVGhl
IG1lY2hhbml6ZSBwYWNrYWdlIHVzZXMgQ2xpZW50Rm9ybSwgZm9yIGV4YW1wbGUsIGluIF9odG1s
LnB5LgpAQCAtOTIsOCArOTQsNyBAQCBjbGFzcyBBdXRvaW5zdGFsbEltcG9ydEhvb2sob2JqZWN0
KToKICAgICAgICAgIyBpdHMgb3duIGRpcmVjdG9yeSBzbyB0aGF0IHdlIGNhbiBpbmNsdWRlIGl0
IGluIHRoZSBzZWFyY2ggcGF0aAogICAgICAgICAjIHdpdGhvdXQgaW5jbHVkaW5nIG90aGVyIG1v
ZHVsZXMgYXMgYSBzaWRlIGVmZmVjdC4KICAgICAgICAgY2xpZW50Zm9ybV9kaXIgPSBzZWxmLl9m
cy5qb2luKF9BVVRPSU5TVEFMTEVEX0RJUiwgImNsaWVudGZvcm0iKQotICAgICAgICBpbnN0YWxs
ZXIgPSBBdXRvSW5zdGFsbGVyKGFwcGVuZF90b19zZWFyY2hfcGF0aD1UcnVlLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHRhcmdldF9kaXI9Y2xpZW50Zm9ybV9kaXIpCisgICAg
ICAgIGluc3RhbGxlciA9IEF1dG9JbnN0YWxsZXIoYXBwZW5kX3RvX3NlYXJjaF9wYXRoPVRydWUs
IHRhcmdldF9kaXI9Y2xpZW50Zm9ybV9kaXIpCiAgICAgICAgIGluc3RhbGxlci5pbnN0YWxsKHVy
bD0iaHR0cDovL3B5cGkucHl0aG9uLm9yZy9wYWNrYWdlcy9zb3VyY2UvQy9DbGllbnRGb3JtL0Ns
aWVudEZvcm0tMC4yLjEwLnppcCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIHVybF9zdWJw
YXRoPSJDbGllbnRGb3JtLnB5IikKIApAQCAtMTA0LDYgKzEwNSwyMSBAQCBjbGFzcyBBdXRvaW5z
dGFsbEltcG9ydEhvb2sob2JqZWN0KToKICAgICAgICAgc2VsZi5faW5zdGFsbCgiaHR0cDovL3B5
cGkucHl0aG9uLm9yZy9wYWNrYWdlcy9zb3VyY2UvcC9wZXA4L3BlcDgtMC41LjAudGFyLmd6I21k
NT01MTJhODE4YWY5OTc5MjkwY2Q2MTljY2U4ZTljMmUyYiIsCiAgICAgICAgICAgICAgICAgICAg
ICAgInBlcDgtMC41LjAvcGVwOC5weSIpCiAKKyAgICAjIGF1dG9pbnN0YWxsZWQuYnVpbGRib3Qg
aXMgdXNlZCBieSBCdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9tYXN0
ZXJjZmdfdW5pdHRlc3QucHkKKyAgICAjIGFuZCBzaG91bGQgaWRlYWxseSBtYXRjaCB0aGUgdmVy
c2lvbiBvZiBCdWlsZEJvdCB1c2VkIGF0IGJ1aWxkLndlYmtpdC5vcmcuCisgICAgZGVmIF9pbnN0
YWxsX2J1aWxkYm90KHNlbGYpOgorICAgICAgICAjIFRoZSBidWlsZGJvdCBwYWNrYWdlIHVzZXMg
amluamEyLCBmb3IgZXhhbXBsZSwgaW4gYnVpbGRib3Qvc3RhdHVzL3dlYi9iYXNlLnB5LgorICAg
ICAgICAjIGJ1aWxkYm90IGltcG9ydHMgamluamEyIGRpcmVjdGx5IChhcyB0aG91Z2ggaXQgd2Vy
ZSBpbnN0YWxsZWQgb24gdGhlIHN5c3RlbSksCisgICAgICAgICMgc28gdGhlIHNlYXJjaCBwYXRo
IG5lZWRzIHRvIGluY2x1ZGUgamluamEyLiAgV2UgcHV0IGppbmphMiBpbgorICAgICAgICAjIGl0
cyBvd24gZGlyZWN0b3J5IHNvIHRoYXQgd2UgY2FuIGluY2x1ZGUgaXQgaW4gdGhlIHNlYXJjaCBw
YXRoCisgICAgICAgICMgd2l0aG91dCBpbmNsdWRpbmcgb3RoZXIgbW9kdWxlcyBhcyBhIHNpZGUg
ZWZmZWN0LgorICAgICAgICBqaW5qYV9kaXIgPSBzZWxmLl9mcy5qb2luKF9BVVRPSU5TVEFMTEVE
X0RJUiwgImppbmphMiIpCisgICAgICAgIGluc3RhbGxlciA9IEF1dG9JbnN0YWxsZXIoYXBwZW5k
X3RvX3NlYXJjaF9wYXRoPVRydWUsIHRhcmdldF9kaXI9amluamFfZGlyKQorICAgICAgICBpbnN0
YWxsZXIuaW5zdGFsbCh1cmw9Imh0dHA6Ly9weXBpLnB5dGhvbi5vcmcvcGFja2FnZXMvc291cmNl
L0ovSmluamEyL0ppbmphMi0yLjYudGFyLmd6I21kNT0xYzQ5YTg4MjVjOTkzYmZkY2Y1NWJiMzY4
OTdkMjhhMiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgIHVybF9zdWJwYXRoPSJKaW5qYTIt
Mi42L2ppbmphMiIpCisKKyAgICAgICAgc2VsZi5faW5zdGFsbCgiaHR0cDovL3B5cGkucHl0aG9u
Lm9yZy9wYWNrYWdlcy9zb3VyY2UvYi9idWlsZGJvdC9idWlsZGJvdC0wLjguNHAyLnRhci5neiNt
ZDU9NzU5N2Q5NDU3MjRjODBjMGFiNDc2ZTgzM2ExMDI2Y2IiLCAiYnVpbGRib3QtMC44LjRwMi9i
dWlsZGJvdCIpCisKICAgICBkZWYgX2luc3RhbGxfZWxpemEoc2VsZik6CiAgICAgICAgIGluc3Rh
bGxlciA9IEF1dG9JbnN0YWxsZXIodGFyZ2V0X2Rpcj1fQVVUT0lOU1RBTExFRF9ESVIpCiAgICAg
ICAgIGluc3RhbGxlci5pbnN0YWxsKHVybD0iaHR0cDovL3d3dy5hZGFtYmFydGguY29tL3dlYmtp
dC9lbGl6YSIsCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>