<?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>56989</bug_id>
          
          <creation_ts>2011-03-23 20:34:14 -0700</creation_ts>
          <short_desc>webkit-patch should be more intelligent about whether a bug applies to a patch</short_desc>
          <delta_ts>2011-04-01 05:59:37 -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>PC</rep_platform>
          <op_sys>OS X 10.5</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="Ojan Vafai">ojan</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>abarth</cc>
    
    <cc>andrewf</cc>
    
    <cc>aroben</cc>
    
    <cc>commit-queue</cc>
    
    <cc>eric</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>372656</commentid>
    <comment_count>0</comment_count>
    <who name="Ojan Vafai">ojan</who>
    <bug_when>2011-03-23 20:34:14 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/81850 closed bug 56988, but that was obviously not my intention. Maybe we should expect a bug on a line by itself?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>372706</commentid>
    <comment_count>1</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-03-24 00:31:07 -0700</bug_when>
    <thetext>Sounds like a good idea.  There&apos;s a regexp in webkitpy you can try adjusting.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>372805</commentid>
    <comment_count>2</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-03-24 07:25:30 -0700</bug_when>
    <thetext>We&apos;re trying to add semantic meaning where there is none.  We have conventions for ChangeLogs, but not everyone follows them, so webkit-patch makes mistakes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>373295</commentid>
    <comment_count>3</comment_count>
      <attachid>86875</attachid>
    <who name="andrewf@chromium.org">andrewf</who>
    <bug_when>2011-03-24 21:03:51 -0700</bug_when>
    <thetext>Created attachment 86875
Proposed patch to improve parsing of bug IDs from changelogs</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>373297</commentid>
    <comment_count>4</comment_count>
      <attachid>86875</attachid>
    <who name="Ojan Vafai">ojan</who>
    <bug_when>2011-03-24 21:14:59 -0700</bug_when>
    <thetext>Comment on attachment 86875
Proposed patch to improve parsing of bug IDs from changelogs

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

The regexp and tests look good. Just not sure about the need for an argument.

&gt; Tools/Scripts/webkitpy/common/net/bugzilla/bugzilla.py:53
&gt; +def parse_bug_id(message, show_bug_url_on_own_line=False):

I don&apos;t see why you need this argument. As best I can tell, all the paces where this is used are to get the bug ID out of a changelog/commit entry and they should all have the same format. Is there a case that breaks if you just always restrict to searching for the bug url on it&apos;s own line?

&gt; Tools/Scripts/webkitpy/common/net/bugzilla/bugzilla.py:59
&gt; +    if show_bug_url_on_own_line == False:

If you invert the order here, you can just check &quot;if show_bug_url_on_own_line&quot;. Also, general preferred style is to use &quot;if bool&quot; or &quot;if not bool&quot; instead of comparing to True/False.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>373304</commentid>
    <comment_count>5</comment_count>
    <who name="andrewf@chromium.org">andrewf</who>
    <bug_when>2011-03-24 21:50:39 -0700</bug_when>
    <thetext>&gt; &gt; Tools/Scripts/webkitpy/common/net/bugzilla/bugzilla.py:53
&gt; &gt; +def parse_bug_id(message, show_bug_url_on_own_line=False):
&gt; 
&gt; I don&apos;t see why you need this argument. As best I can tell, all the paces where this is used are to get the bug ID out of a changelog/commit entry and they should all have the same format. Is there a case that breaks if you just always restrict to searching for the bug url on it&apos;s own line?

Currently sheriff_unittest.py creates a string &quot;Created bug https://bugs.webkit.org/...&quot; which is used as an input to parse_bug_id().  

I could alter this particular test, but my concern is potentially breaking anything that may be lacking robust unittests that assumes that a non-start-of-line match of a bug URL is handled by parse_bug_id()
 
&gt; &gt; Tools/Scripts/webkitpy/common/net/bugzilla/bugzilla.py:59
&gt; &gt; +    if show_bug_url_on_own_line == False:
&gt; 
&gt; If you invert the order here, you can just check &quot;if show_bug_url_on_own_line&quot;. Also, general preferred style is to use &quot;if bool&quot; or &quot;if not bool&quot; instead of comparing to True/False.

Fixed, thanks, I&apos;ll upload another patch if we agree that an argument is or isn&apos;t needed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>373310</commentid>
    <comment_count>6</comment_count>
    <who name="Ojan Vafai">ojan</who>
    <bug_when>2011-03-24 22:06:21 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; &gt; &gt; Tools/Scripts/webkitpy/common/net/bugzilla/bugzilla.py:53
&gt; &gt; &gt; +def parse_bug_id(message, show_bug_url_on_own_line=False):
&gt; &gt; 
&gt; &gt; I don&apos;t see why you need this argument. As best I can tell, all the paces where this is used are to get the bug ID out of a changelog/commit entry and they should all have the same format. Is there a case that breaks if you just always restrict to searching for the bug url on it&apos;s own line?
&gt; 
&gt; Currently sheriff_unittest.py creates a string &quot;Created bug https://bugs.webkit.org/...&quot; which is used as an input to parse_bug_id().  
&gt; 
&gt; I could alter this particular test, but my concern is potentially breaking anything that may be lacking robust unittests that assumes that a non-start-of-line match of a bug URL is handled by parse_bug_id()

Oh. I see. Yeah, create_bug uses that output. I&apos;d prefer for the default to be True here since the sheriffbot case is the exception.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>373314</commentid>
    <comment_count>7</comment_count>
      <attachid>86882</attachid>
    <who name="andrewf@chromium.org">andrewf</who>
    <bug_when>2011-03-24 22:21:54 -0700</bug_when>
    <thetext>Created attachment 86882
Updated patch based on Ojan&apos;s feedback

- Made the regex used by parse_bug_id() when show_bug_url_on_own_line is True more robust by optionally permitting &amp;ctype=xml in the URL whilst still checking for end of line
- Made show_bug_url_on_own_line True by default, and explicitly set value to false in calling functions where needed</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>373320</commentid>
    <comment_count>8</comment_count>
      <attachid>86882</attachid>
    <who name="Ojan Vafai">ojan</who>
    <bug_when>2011-03-24 22:35:38 -0700</bug_when>
    <thetext>Comment on attachment 86882
Updated patch based on Ojan&apos;s feedback

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

&gt; Tools/Scripts/webkitpy/common/net/bugzilla/bugzilla.py:61
&gt; +            &quot;^\s*&quot; + Bugzilla.bug_server_regex + &quot;show_bug\.cgi\?id=(?P&lt;bug_id&gt;\d+)(&amp;ctype=xml)?$&quot;,

Interesting. If we&apos;re going to handle this, we should probably also handle the case where ctype comes before the id?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>373373</commentid>
    <comment_count>9</comment_count>
      <attachid>86882</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-03-25 00:24:09 -0700</bug_when>
    <thetext>Comment on attachment 86882
Updated patch based on Ojan&apos;s feedback

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

&gt; Tools/Scripts/webkitpy/common/net/bugzilla/bugzilla.py:53
&gt; +def parse_bug_id(message, show_bug_url_on_own_line=True):

What does &quot;show_bug_url_on_own_line&quot; mean? 

I also wonder if this shouldn&apos;t ust be a separate function.  Why is it OK to find http://webkit.org/b/ links not on their own line?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>373571</commentid>
    <comment_count>10</comment_count>
      <attachid>86882</attachid>
    <who name="Tony Chang">tony</who>
    <bug_when>2011-03-25 09:54:08 -0700</bug_when>
    <thetext>Comment on attachment 86882
Updated patch based on Ojan&apos;s feedback

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

&gt;&gt; Tools/Scripts/webkitpy/common/net/bugzilla/bugzilla.py:61
&gt;&gt; +            &quot;^\s*&quot; + Bugzilla.bug_server_regex + &quot;show_bug\.cgi\?id=(?P&lt;bug_id&gt;\d+)(&amp;ctype=xml)?$&quot;,
&gt; 
&gt; Interesting. If we&apos;re going to handle this, we should probably also handle the case where ctype comes before the id?

Drive-by-nit: These string literals should be prefixed with &apos;r&apos; to make it clear you don&apos;t want backslashes to be escaped.

&gt; Tools/Scripts/webkitpy/common/net/bugzilla/bugzilla.py:65
&gt; +            Bugzilla.bug_server_regex + &quot;show_bug\.cgi\?id=(?P&lt;bug_id&gt;\d+)&quot;,

This string too.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>374281</commentid>
    <comment_count>11</comment_count>
      <attachid>87100</attachid>
    <who name="andrewf@chromium.org">andrewf</who>
    <bug_when>2011-03-27 22:29:05 -0700</bug_when>
    <thetext>Created attachment 87100
Create and use parse_bug_id_from_changelog()

Create parse_bug_id_from_changelog() which is stricter about looking for a URL to a bug than parse_bug_id (which will match anywhere in the input message).  
parse_bug_id_from_changelog() will parse out a bug ID from a ChangeLog that has been created with prepare-ChangeLog (ie, the URL to the bug is on a line by itself).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>375022</commentid>
    <comment_count>12</comment_count>
      <attachid>87100</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2011-03-28 22:56:29 -0700</bug_when>
    <thetext>Comment on attachment 87100
Create and use parse_bug_id_from_changelog()

Clearing flags on attachment: 87100

Committed r82196: &lt;http://trac.webkit.org/changeset/82196&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>375023</commentid>
    <comment_count>13</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2011-03-28 22:56:35 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>377444</commentid>
    <comment_count>14</comment_count>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2011-03-31 14:23:20 -0700</bug_when>
    <thetext>(In reply to comment #0)
&gt; http://trac.webkit.org/changeset/81850 closed bug 56988, but that was obviously not my intention. Maybe we should expect a bug on a line by itself?

r81850 was clearly a patch that was landed due to bug 56988. I think it makes sense that webkit-patch would have associated the two. The fact that you didn&apos;t want to close the bug is a separate issue; we have --no-close for that.

The new behavior is so strict that it doesn&apos;t find the bug URLs in my commits, so I filed bug 57579 about it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>377447</commentid>
    <comment_count>15</comment_count>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2011-03-31 14:25:16 -0700</bug_when>
    <thetext>I guess what I&apos;m saying is that it seems like a bug that webkit-patch no longer associates r81850 and bug 56988, *and* the new behavior doesn&apos;t work well with my non-standard-but-long-in-use ChangeLog format. Hence bug 57579.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>377641</commentid>
    <comment_count>16</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-03-31 20:50:13 -0700</bug_when>
    <thetext>There are tools which create these entries (including the bug link) for you.  If both you and Ojan used them, than neither of these bugs woudl exist. :)

But then again, part of why i wrote the parser so flexibly in the first place was to be able to read historical change log entries.  I think we should just roll out ojan&apos;s change.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>377642</commentid>
    <comment_count>17</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-03-31 20:50:49 -0700</bug_when>
    <thetext>It&apos;s never useful for the changelog code to *not* return a bug number.  If that&apos;s the wrong number.  Than that&apos;s OK.  It&apos;s better to have a number than not IMO.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>377739</commentid>
    <comment_count>18</comment_count>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2011-04-01 05:59:37 -0700</bug_when>
    <thetext>As I think I&apos;ve made clear above, I don&apos;t think we&apos;ve yet discussed a case where webkit-patch chose the wrong number. The only thing that was wrong was that the bug was closed instead of just being updated.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>86875</attachid>
            <date>2011-03-24 21:03:51 -0700</date>
            <delta_ts>2011-03-24 22:21:54 -0700</delta_ts>
            <desc>Proposed patch to improve parsing of bug IDs from changelogs</desc>
            <filename>patch.txt</filename>
            <type>text/plain</type>
            <size>7253</size>
            <attacher name="andrewf@chromium.org">andrewf</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCBkZTBl
N2UxLi4yNTlhNDYyIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMjAgQEAKKzIwMTEtMDMtMjQgIEFuZHJldyBGb3N0ZXIgIDxhbmRy
ZXdmQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICB3ZWJraXQtcGF0Y2ggc2hvdWxkIGJlIG1vcmUgaW50ZWxsaWdlbnQgYWJvdXQg
d2hldGhlciBhIGJ1ZyBhcHBsaWVzIHRvIGEgcGF0Y2gKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU2OTg5CisKKyAgICAgICAgVGhpcyBhbHRlcnMgYnVn
emlsbGEucHkncyBwYXJzZV9idWdfaWQoKSB0byBvcHRpb25hbGx5IGVuZm9yY2UgdGhhdCB0aGUg
CisgICAgICAgIHNob3dfYnVnLmNnaSBVUkwgaXMgb24gYSBsaW5lIG9mIGl0cyBvd24uIFRoaXMg
YXZvaWRzIGFjY2lkZW50YWxseSBpbnRlcnByZXRpbmcgCisgICAgICAgIGEgc2hvd19idWcuY2dp
IFVSTCBtZW50aW9uZWQgaW4gYSBwYXRjaCBkZXNjcmlwdGlvbiBhcyBiZWluZyB0aWVkIHRvIHRo
ZSBwYXRjaCwgCisgICAgICAgIGFuZCBiZWluZyBlcnJvbmVvdXNseSBjbG9zZWQuCisKKyAgICAg
ICAgKiBTY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9jaGVja291dC9hcGkucHk6CisgICAgICAgICog
U2NyaXB0cy93ZWJraXRweS9jb21tb24vY2hlY2tvdXQvYXBpX3VuaXR0ZXN0LnB5OgorICAgICAg
ICAqIFNjcmlwdHMvd2Via2l0cHkvY29tbW9uL25ldC9idWd6aWxsYS9idWd6aWxsYS5weToKKyAg
ICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9uZXQvYnVnemlsbGEvYnVnemlsbGFfdW5p
dHRlc3QucHk6CisKIDIwMTEtMDMtMjQgIEJyZW50IEZ1bGdoYW0gIDxiZnVsZ2hhbUB3ZWJraXQu
b3JnPgogCiAgICAgICAgIFVucmV2aWV3ZWQgYnVpbGQgY29ycmVjdGlvbi4KZGlmZiAtLWdpdCBh
L1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL2NoZWNrb3V0L2FwaS5weSBiL1Rvb2xzL1Nj
cmlwdHMvd2Via2l0cHkvY29tbW9uL2NoZWNrb3V0L2FwaS5weQppbmRleCAxNzBiODIyLi5hYTY1
OGI0IDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9jaGVja291dC9h
cGkucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vY2hlY2tvdXQvYXBpLnB5
CkBAIC0xNDUsNyArMTQ1LDggQEAgY2xhc3MgQ2hlY2tvdXQob2JqZWN0KToKIAogICAgIGRlZiBi
dWdfaWRfZm9yX3RoaXNfY29tbWl0KHNlbGYsIGdpdF9jb21taXQsIGNoYW5nZWRfZmlsZXM9Tm9u
ZSk6CiAgICAgICAgIHRyeToKLSAgICAgICAgICAgIHJldHVybiBwYXJzZV9idWdfaWQoc2VsZi5j
b21taXRfbWVzc2FnZV9mb3JfdGhpc19jb21taXQoZ2l0X2NvbW1pdCwgY2hhbmdlZF9maWxlcyku
bWVzc2FnZSgpKQorICAgICAgICAgICAgcmV0dXJuIHBhcnNlX2J1Z19pZChzZWxmLmNvbW1pdF9t
ZXNzYWdlX2Zvcl90aGlzX2NvbW1pdChnaXRfY29tbWl0LCBjaGFuZ2VkX2ZpbGVzKS5tZXNzYWdl
KCksCisgICAgICAgICAgICAgICAgc2hvd19idWdfdXJsX29uX293bl9saW5lPVRydWUpCiAgICAg
ICAgIGV4Y2VwdCBTY3JpcHRFcnJvciwgZToKICAgICAgICAgICAgIHBhc3MgIyBXZSBtaWdodCBu
b3QgaGF2ZSBDaGFuZ2VMb2dzLgogCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5
L2NvbW1vbi9jaGVja291dC9hcGlfdW5pdHRlc3QucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5
L2NvbW1vbi9jaGVja291dC9hcGlfdW5pdHRlc3QucHkKaW5kZXggZmRmM2ZiYS4uNjE3NDExOCAx
MDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vY2hlY2tvdXQvYXBpX3Vu
aXR0ZXN0LnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL2NoZWNrb3V0L2Fw
aV91bml0dGVzdC5weQpAQCAtODEsNiArODEsMjIgQEAgX2NoYW5nZWxvZzIgPSB1IiIiMjAxMC0w
My0yNSAgVG9yIEFybmUgVmVzdGJcdTAwZjggIDx2ZXN0Ym9Ad2Via2l0Lm9yZz4KIAogICAgICAg
ICBGaWxsZXIgY2hhbmdlLgogIiIiCitfY2hhbmdlbG9nMmVudHJ5MSA9IHUiIiIyMDExLTAzLTIz
ICBPamFuIFZhZmFpICA8b2phbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgQWRkIGZhaWxpbmcg
cmVzdWx0IGZvciBXZWJLaXQyLiBBbGwgdGVzdHMgdGhhdCByZXF1aXJlCisgICAgICAgIGZvY3Vz
IGZhaWwgb24gV2ViS2l0Mi4gU2VlIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD01Njk4OC4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTEyMzQ1CisKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMtd2syL2Zhc3QvY3NzL3BzZXVkby1h
bnktZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyIiIgorX2NoYW5nZWxvZzJlbnRyeTIgPSB1IiIiMjAx
MS0wMy0yMyAgT2phbiBWYWZhaSAgPG9qYW5AY2hyb21pdW0ub3JnPgorCisgICAgICAgIEFkZCBm
YWlsaW5nIHJlc3VsdCBmb3IgV2ViS2l0Mi4gQWxsIHRlc3RzIHRoYXQgcmVxdWlyZQorICAgICAg
ICBmb2N1cyBmYWlsIG9uIFdlYktpdDIuIFNlZSBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9NTY5ODguCisKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMtd2syL2Zhc3QvY3Nz
L3BzZXVkby1hbnktZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyIiIgorCiAKIGNsYXNzIENvbW1pdE1l
c3NhZ2VGb3JUaGlzQ29tbWl0VGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgZXhwZWN0ZWRf
Y29tbWl0X21lc3NhZ2UgPSB1IiIiMjAxMC0wMy0yNSAgVG9yIEFybmUgVmVzdGJcdTAwZjggIDx2
ZXN0Ym9Ad2Via2l0Lm9yZz4KQEAgLTE5MCw2ICsyMDYsMTggQEAgY2xhc3MgQ2hlY2tvdXRUZXN0
KHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICAgICAgY2hlY2tvdXQuY29tbWl0X21lc3NhZ2VfZm9y
X3RoaXNfY29tbWl0ID0gbGFtYmRhIGdpdF9jb21taXQsIGNoYW5nZWRfZmlsZXM9Tm9uZTogQ29t
bWl0TWVzc2FnZShDaGFuZ2VMb2dFbnRyeShfY2hhbmdlbG9nMWVudHJ5MSkuY29udGVudHMoKS5z
cGxpdGxpbmVzKCkpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY2hlY2tvdXQuYnVnX2lkX2Zv
cl90aGlzX2NvbW1pdChnaXRfY29tbWl0PU5vbmUpLCAzNjYyOSkKIAorICAgIGRlZiB0ZXN0X2J1
Z19pZF9mb3JfdGhpc19jb21taXQyKHNlbGYpOgorICAgICAgICBzY20gPSBNb2NrKCkKKyAgICAg
ICAgY2hlY2tvdXQgPSBDaGVja291dChzY20pCisgICAgICAgIGNoZWNrb3V0LmNvbW1pdF9tZXNz
YWdlX2Zvcl90aGlzX2NvbW1pdCA9IGxhbWJkYSBnaXRfY29tbWl0LCBjaGFuZ2VkX2ZpbGVzPU5v
bmU6IENvbW1pdE1lc3NhZ2UoQ2hhbmdlTG9nRW50cnkoX2NoYW5nZWxvZzJlbnRyeTEpLmNvbnRl
bnRzKCkuc3BsaXRsaW5lcygpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNoZWNrb3V0LmJ1
Z19pZF9mb3JfdGhpc19jb21taXQoZ2l0X2NvbW1pdD1Ob25lKSwgMTIzNDUpCisKKyAgICBkZWYg
dGVzdF9idWdfaWRfZm9yX3RoaXNfY29tbWl0MyhzZWxmKToKKyAgICAgICAgc2NtID0gTW9jaygp
CisgICAgICAgIGNoZWNrb3V0ID0gQ2hlY2tvdXQoc2NtKQorICAgICAgICBjaGVja291dC5jb21t
aXRfbWVzc2FnZV9mb3JfdGhpc19jb21taXQgPSBsYW1iZGEgZ2l0X2NvbW1pdCwgY2hhbmdlZF9m
aWxlcz1Ob25lOiBDb21taXRNZXNzYWdlKENoYW5nZUxvZ0VudHJ5KF9jaGFuZ2Vsb2cyZW50cnky
KS5jb250ZW50cygpLnNwbGl0bGluZXMoKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjaGVj
a291dC5idWdfaWRfZm9yX3RoaXNfY29tbWl0KGdpdF9jb21taXQ9Tm9uZSksIE5vbmUpCisKICAg
ICBkZWYgdGVzdF9tb2RpZmllZF9jaGFuZ2Vsb2dzKHNlbGYpOgogICAgICAgICBzY20gPSBNb2Nr
KCkKICAgICAgICAgc2NtLmNoZWNrb3V0X3Jvb3QgPSAiL2Zvby9iYXIiCmRpZmYgLS1naXQgYS9U
b29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9uZXQvYnVnemlsbGEvYnVnemlsbGEucHkgYi9U
b29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9uZXQvYnVnemlsbGEvYnVnemlsbGEucHkKaW5k
ZXggMTdhODUxNS4uYjVkNjdjZCAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9j
b21tb24vbmV0L2J1Z3ppbGxhL2J1Z3ppbGxhLnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0
cHkvY29tbW9uL25ldC9idWd6aWxsYS9idWd6aWxsYS5weQpAQCAtNTAsMTUgKzUwLDIwIEBAIGZy
b20gd2Via2l0cHkudGhpcmRwYXJ0eS5CZWF1dGlmdWxTb3VwIGltcG9ydCBCZWF1dGlmdWxTb3Vw
LCBTb3VwU3RyYWluZXIKIAogCiAjIEZJWE1FOiBwYXJzZV9idWdfaWQgc2hvdWxkIG5vdCBiZSBh
IGZyZWUgZnVuY3Rpb24uCi1kZWYgcGFyc2VfYnVnX2lkKG1lc3NhZ2UpOgorZGVmIHBhcnNlX2J1
Z19pZChtZXNzYWdlLCBzaG93X2J1Z191cmxfb25fb3duX2xpbmU9RmFsc2UpOgogICAgIGlmIG5v
dCBtZXNzYWdlOgogICAgICAgICByZXR1cm4gTm9uZQogICAgIG1hdGNoID0gcmUuc2VhcmNoKCJo
dHRwXDovL3dlYmtpdFwub3JnL2IvKD9QPGJ1Z19pZD5cZCspIiwgbWVzc2FnZSkKICAgICBpZiBt
YXRjaDoKICAgICAgICAgcmV0dXJuIGludChtYXRjaC5ncm91cCgnYnVnX2lkJykpCi0gICAgbWF0
Y2ggPSByZS5zZWFyY2goCi0gICAgICAgIEJ1Z3ppbGxhLmJ1Z19zZXJ2ZXJfcmVnZXggKyAic2hv
d19idWdcLmNnaVw/aWQ9KD9QPGJ1Z19pZD5cZCspIiwKLSAgICAgICAgbWVzc2FnZSkKKyAgICBp
ZiBzaG93X2J1Z191cmxfb25fb3duX2xpbmUgPT0gRmFsc2U6CisgICAgICAgIG1hdGNoID0gcmUu
c2VhcmNoKAorICAgICAgICAgICAgQnVnemlsbGEuYnVnX3NlcnZlcl9yZWdleCArICJzaG93X2J1
Z1wuY2dpXD9pZD0oP1A8YnVnX2lkPlxkKykiLAorICAgICAgICAgICAgbWVzc2FnZSkKKyAgICBl
bHNlOgorICAgICAgICBtYXRjaCA9IHJlLnNlYXJjaCgKKyAgICAgICAgICAgICJeXHMqIiArIEJ1
Z3ppbGxhLmJ1Z19zZXJ2ZXJfcmVnZXggKyAic2hvd19idWdcLmNnaVw/aWQ9KD9QPGJ1Z19pZD5c
ZCspJCIsCisgICAgICAgICAgICBtZXNzYWdlLCByZS5NVUxUSUxJTkUpCiAgICAgaWYgbWF0Y2g6
CiAgICAgICAgIHJldHVybiBpbnQobWF0Y2guZ3JvdXAoJ2J1Z19pZCcpKQogICAgIHJldHVybiBO
b25lCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9uZXQvYnVnemls
bGEvYnVnemlsbGFfdW5pdHRlc3QucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9u
ZXQvYnVnemlsbGEvYnVnemlsbGFfdW5pdHRlc3QucHkKaW5kZXggMWQwOGNhNS4uZjRiN2MxMSAx
MDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vbmV0L2J1Z3ppbGxhL2J1
Z3ppbGxhX3VuaXR0ZXN0LnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL25l
dC9idWd6aWxsYS9idWd6aWxsYV91bml0dGVzdC5weQpAQCAtMTAwLDYgKzEwMCw0NCBAQCBjbGFz
cyBCdWd6aWxsYVRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgogICAgICAgICBzZWxmLmFzc2VydEVx
dWFscyhOb25lLCBwYXJzZV9idWdfaWQoImh0dHA6Ly93d3cud2Via2l0Lm9yZy9iLzEyMzQ1Iikp
CiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKE5vbmUsIHBhcnNlX2J1Z19pZCgiaHR0cDovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/Y3R5cGU9eG1sJmlkPTEyMzQ1IikpCiAKKyAgICAg
ICAgY29tbWl0X3RleHQgPSAnJycKKzIwMTEtMDMtMjMgIE9qYW4gVmFmYWkgIDxvamFuQGNocm9t
aXVtLm9yZz4KKworICAgICAgICBBZGQgZmFpbGluZyByZXN1bHQgZm9yIFdlYktpdDIuIEFsbCB0
ZXN0cyB0aGF0IHJlcXVpcmUKKyAgICAgICAgZm9jdXMgZmFpbCBvbiBXZWJLaXQyLiBTZWUgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU2OTg4LgorCisgICAgICAgICog
cGxhdGZvcm0vbWFjLXdrMi9mYXN0L2Nzcy9wc2V1ZG8tYW55LWV4cGVjdGVkLnR4dDogQWRkZWQu
CisKKyAgICAgICAgJycnCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoTm9uZSwgcGFyc2Vf
YnVnX2lkKGNvbW1pdF90ZXh0LCBzaG93X2J1Z191cmxfb25fb3duX2xpbmU9VHJ1ZSkpCisgICAg
ICAgIHNlbGYuYXNzZXJ0RXF1YWxzKDU2OTg4LCBwYXJzZV9idWdfaWQoY29tbWl0X3RleHQsIHNo
b3dfYnVnX3VybF9vbl9vd25fbGluZT1GYWxzZSkpCisKKyAgICAgICAgY29tbWl0X3RleHQgPSAn
JycKKzIwMTEtMDMtMjMgIE9qYW4gVmFmYWkgIDxvamFuQGNocm9taXVtLm9yZz4KKworICAgICAg
ICBBZGQgZmFpbGluZyByZXN1bHQgZm9yIFdlYktpdDIuIEFsbCB0ZXN0cyB0aGF0IHJlcXVpcmUK
KyAgICAgICAgZm9jdXMgZmFpbCBvbiBXZWJLaXQyLiBTZWUgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTU2OTg4LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTIzNDUKKworICAgICAgICAqIHBsYXRmb3JtL21hYy13azIvZmFz
dC9jc3MvcHNldWRvLWFueS1leHBlY3RlZC50eHQ6IEFkZGVkLgorCisgICAgICAgICcnJworCisg
ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKDEyMzQ1LCBwYXJzZV9idWdfaWQoY29tbWl0X3RleHQs
IHNob3dfYnVnX3VybF9vbl9vd25fbGluZT1UcnVlKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bHMoNTY5ODgsIHBhcnNlX2J1Z19pZChjb21taXRfdGV4dCwgc2hvd19idWdfdXJsX29uX293bl9s
aW5lPUZhbHNlKSkKKworICAgICAgICBjb21taXRfdGV4dCA9ICcnJworMjAxMS0wMy0yMiAgRGF2
aWQgS2lsemVyICA8ZGRraWx6ZXJAYXBwbGUuY29tPgorCisgICAgICAgIDxodHRwOi8vd2Via2l0
Lm9yZy9iLzU2NzgxPiBBZGQgLS1kc3ltIHN3aXRjaCB0byBlbmFibGUgZHN5bSBnZW5lcmF0aW9u
IHdoZW4gYnVpbGRpbmcgd2l0aCBYY29kZQorCisgICAgICAgIFJldmlld2VkIGJ5IEpvc2VwaCBQ
ZWNvcmFyby4KKworICAgICAgICAnJycKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFscyg1Njc4
MSwgcGFyc2VfYnVnX2lkKGNvbW1pdF90ZXh0LCBzaG93X2J1Z191cmxfb25fb3duX2xpbmU9VHJ1
ZSkpCisKICAgICBfYnVnX3htbCA9ICIiIgogICAgIDxidWc+CiAgICAgICAgICAgPGJ1Z19pZD4z
MjU4NTwvYnVnX2lkPgo=
</data>
<flag name="review"
          id="79240"
          type_id="1"
          status="-"
          setter="ojan"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>86882</attachid>
            <date>2011-03-24 22:21:54 -0700</date>
            <delta_ts>2011-03-27 22:29:05 -0700</delta_ts>
            <desc>Updated patch based on Ojan&apos;s feedback</desc>
            <filename>patch.txt</filename>
            <type>text/plain</type>
            <size>7760</size>
            <attacher name="andrewf@chromium.org">andrewf</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCBkZTBl
N2UxLi40YmE0M2RlIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMjEgQEAKKzIwMTEtMDMtMjQgIEFuZHJldyBGb3N0ZXIgIDxhbmRy
ZXdmQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICB3ZWJraXQtcGF0Y2ggc2hvdWxkIGJlIG1vcmUgaW50ZWxsaWdlbnQgYWJvdXQg
d2hldGhlciBhIGJ1ZyBhcHBsaWVzIHRvIGEgcGF0Y2gKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU2OTg5CisKKyAgICAgICAgVGhpcyBhbHRlcnMgYnVn
emlsbGEucHkncyBwYXJzZV9idWdfaWQoKSB0byBvcHRpb25hbGx5IGVuZm9yY2UgdGhhdCB0aGUg
CisgICAgICAgIHNob3dfYnVnLmNnaSBVUkwgaXMgb24gYSBsaW5lIG9mIGl0cyBvd24uIFRoaXMg
YXZvaWRzIGFjY2lkZW50YWxseSBpbnRlcnByZXRpbmcgCisgICAgICAgIGEgc2hvd19idWcuY2dp
IFVSTCBtZW50aW9uZWQgaW4gYSBwYXRjaCBkZXNjcmlwdGlvbiBhcyBiZWluZyB0aWVkIHRvIHRo
ZSBwYXRjaCwgCisgICAgICAgIGFuZCBiZWluZyBlcnJvbmVvdXNseSBjbG9zZWQuCisKKyAgICAg
ICAgKiBTY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9jaGVja291dC9hcGlfdW5pdHRlc3QucHk6Cisg
ICAgICAgICogU2NyaXB0cy93ZWJraXRweS9jb21tb24vbmV0L2J1Z3ppbGxhL2J1Z3ppbGxhLnB5
OgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvY29tbW9uL25ldC9idWd6aWxsYS9idWd6aWxs
YV91bml0dGVzdC5weToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3Rvb2wvYm90L2lyY19j
b21tYW5kLnB5OgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvdG9vbC9ib3Qvc2hlcmlmZi5w
eToKKwogMjAxMS0wMy0yNCAgQnJlbnQgRnVsZ2hhbSAgPGJmdWxnaGFtQHdlYmtpdC5vcmc+CiAK
ICAgICAgICAgVW5yZXZpZXdlZCBidWlsZCBjb3JyZWN0aW9uLgpkaWZmIC0tZ2l0IGEvVG9vbHMv
U2NyaXB0cy93ZWJraXRweS9jb21tb24vY2hlY2tvdXQvYXBpX3VuaXR0ZXN0LnB5IGIvVG9vbHMv
U2NyaXB0cy93ZWJraXRweS9jb21tb24vY2hlY2tvdXQvYXBpX3VuaXR0ZXN0LnB5CmluZGV4IGZk
ZjNmYmEuLjYxNzQxMTggMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9u
L2NoZWNrb3V0L2FwaV91bml0dGVzdC5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2Nv
bW1vbi9jaGVja291dC9hcGlfdW5pdHRlc3QucHkKQEAgLTgxLDYgKzgxLDIyIEBAIF9jaGFuZ2Vs
b2cyID0gdSIiIjIwMTAtMDMtMjUgIFRvciBBcm5lIFZlc3RiXHUwMGY4ICA8dmVzdGJvQHdlYmtp
dC5vcmc+CiAKICAgICAgICAgRmlsbGVyIGNoYW5nZS4KICIiIgorX2NoYW5nZWxvZzJlbnRyeTEg
PSB1IiIiMjAxMS0wMy0yMyAgT2phbiBWYWZhaSAgPG9qYW5AY2hyb21pdW0ub3JnPgorCisgICAg
ICAgIEFkZCBmYWlsaW5nIHJlc3VsdCBmb3IgV2ViS2l0Mi4gQWxsIHRlc3RzIHRoYXQgcmVxdWly
ZQorICAgICAgICBmb2N1cyBmYWlsIG9uIFdlYktpdDIuIFNlZSBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTY5ODguCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xMjM0NQorCisgICAgICAgICogcGxhdGZvcm0vbWFjLXdrMi9m
YXN0L2Nzcy9wc2V1ZG8tYW55LWV4cGVjdGVkLnR4dDogQWRkZWQuCisiIiIKK19jaGFuZ2Vsb2cy
ZW50cnkyID0gdSIiIjIwMTEtMDMtMjMgIE9qYW4gVmFmYWkgIDxvamFuQGNocm9taXVtLm9yZz4K
KworICAgICAgICBBZGQgZmFpbGluZyByZXN1bHQgZm9yIFdlYktpdDIuIEFsbCB0ZXN0cyB0aGF0
IHJlcXVpcmUKKyAgICAgICAgZm9jdXMgZmFpbCBvbiBXZWJLaXQyLiBTZWUgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU2OTg4LgorCisgICAgICAgICogcGxhdGZvcm0v
bWFjLXdrMi9mYXN0L2Nzcy9wc2V1ZG8tYW55LWV4cGVjdGVkLnR4dDogQWRkZWQuCisiIiIKKwog
CiBjbGFzcyBDb21taXRNZXNzYWdlRm9yVGhpc0NvbW1pdFRlc3QodW5pdHRlc3QuVGVzdENhc2Up
OgogICAgIGV4cGVjdGVkX2NvbW1pdF9tZXNzYWdlID0gdSIiIjIwMTAtMDMtMjUgIFRvciBBcm5l
IFZlc3RiXHUwMGY4ICA8dmVzdGJvQHdlYmtpdC5vcmc+CkBAIC0xOTAsNiArMjA2LDE4IEBAIGNs
YXNzIENoZWNrb3V0VGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgICAgIGNoZWNrb3V0LmNv
bW1pdF9tZXNzYWdlX2Zvcl90aGlzX2NvbW1pdCA9IGxhbWJkYSBnaXRfY29tbWl0LCBjaGFuZ2Vk
X2ZpbGVzPU5vbmU6IENvbW1pdE1lc3NhZ2UoQ2hhbmdlTG9nRW50cnkoX2NoYW5nZWxvZzFlbnRy
eTEpLmNvbnRlbnRzKCkuc3BsaXRsaW5lcygpKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNo
ZWNrb3V0LmJ1Z19pZF9mb3JfdGhpc19jb21taXQoZ2l0X2NvbW1pdD1Ob25lKSwgMzY2MjkpCiAK
KyAgICBkZWYgdGVzdF9idWdfaWRfZm9yX3RoaXNfY29tbWl0MihzZWxmKToKKyAgICAgICAgc2Nt
ID0gTW9jaygpCisgICAgICAgIGNoZWNrb3V0ID0gQ2hlY2tvdXQoc2NtKQorICAgICAgICBjaGVj
a291dC5jb21taXRfbWVzc2FnZV9mb3JfdGhpc19jb21taXQgPSBsYW1iZGEgZ2l0X2NvbW1pdCwg
Y2hhbmdlZF9maWxlcz1Ob25lOiBDb21taXRNZXNzYWdlKENoYW5nZUxvZ0VudHJ5KF9jaGFuZ2Vs
b2cyZW50cnkxKS5jb250ZW50cygpLnNwbGl0bGluZXMoKSkKKyAgICAgICAgc2VsZi5hc3NlcnRF
cXVhbChjaGVja291dC5idWdfaWRfZm9yX3RoaXNfY29tbWl0KGdpdF9jb21taXQ9Tm9uZSksIDEy
MzQ1KQorCisgICAgZGVmIHRlc3RfYnVnX2lkX2Zvcl90aGlzX2NvbW1pdDMoc2VsZik6CisgICAg
ICAgIHNjbSA9IE1vY2soKQorICAgICAgICBjaGVja291dCA9IENoZWNrb3V0KHNjbSkKKyAgICAg
ICAgY2hlY2tvdXQuY29tbWl0X21lc3NhZ2VfZm9yX3RoaXNfY29tbWl0ID0gbGFtYmRhIGdpdF9j
b21taXQsIGNoYW5nZWRfZmlsZXM9Tm9uZTogQ29tbWl0TWVzc2FnZShDaGFuZ2VMb2dFbnRyeShf
Y2hhbmdlbG9nMmVudHJ5MikuY29udGVudHMoKS5zcGxpdGxpbmVzKCkpCisgICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWwoY2hlY2tvdXQuYnVnX2lkX2Zvcl90aGlzX2NvbW1pdChnaXRfY29tbWl0PU5v
bmUpLCBOb25lKQorCiAgICAgZGVmIHRlc3RfbW9kaWZpZWRfY2hhbmdlbG9ncyhzZWxmKToKICAg
ICAgICAgc2NtID0gTW9jaygpCiAgICAgICAgIHNjbS5jaGVja291dF9yb290ID0gIi9mb28vYmFy
IgpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vbmV0L2J1Z3ppbGxh
L2J1Z3ppbGxhLnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vbmV0L2J1Z3ppbGxh
L2J1Z3ppbGxhLnB5CmluZGV4IDE3YTg1MTUuLmFhNjc5ZWMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Nj
cmlwdHMvd2Via2l0cHkvY29tbW9uL25ldC9idWd6aWxsYS9idWd6aWxsYS5weQorKysgYi9Ub29s
cy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9uZXQvYnVnemlsbGEvYnVnemlsbGEucHkKQEAgLTUw
LDE1ICs1MCwyMCBAQCBmcm9tIHdlYmtpdHB5LnRoaXJkcGFydHkuQmVhdXRpZnVsU291cCBpbXBv
cnQgQmVhdXRpZnVsU291cCwgU291cFN0cmFpbmVyCiAKIAogIyBGSVhNRTogcGFyc2VfYnVnX2lk
IHNob3VsZCBub3QgYmUgYSBmcmVlIGZ1bmN0aW9uLgotZGVmIHBhcnNlX2J1Z19pZChtZXNzYWdl
KToKK2RlZiBwYXJzZV9idWdfaWQobWVzc2FnZSwgc2hvd19idWdfdXJsX29uX293bl9saW5lPVRy
dWUpOgogICAgIGlmIG5vdCBtZXNzYWdlOgogICAgICAgICByZXR1cm4gTm9uZQogICAgIG1hdGNo
ID0gcmUuc2VhcmNoKCJodHRwXDovL3dlYmtpdFwub3JnL2IvKD9QPGJ1Z19pZD5cZCspIiwgbWVz
c2FnZSkKICAgICBpZiBtYXRjaDoKICAgICAgICAgcmV0dXJuIGludChtYXRjaC5ncm91cCgnYnVn
X2lkJykpCi0gICAgbWF0Y2ggPSByZS5zZWFyY2goCi0gICAgICAgIEJ1Z3ppbGxhLmJ1Z19zZXJ2
ZXJfcmVnZXggKyAic2hvd19idWdcLmNnaVw/aWQ9KD9QPGJ1Z19pZD5cZCspIiwKLSAgICAgICAg
bWVzc2FnZSkKKyAgICBpZiBzaG93X2J1Z191cmxfb25fb3duX2xpbmU6CisgICAgICAgIG1hdGNo
ID0gcmUuc2VhcmNoKAorICAgICAgICAgICAgIl5ccyoiICsgQnVnemlsbGEuYnVnX3NlcnZlcl9y
ZWdleCArICJzaG93X2J1Z1wuY2dpXD9pZD0oP1A8YnVnX2lkPlxkKykoJmN0eXBlPXhtbCk/JCIs
CisgICAgICAgICAgICBtZXNzYWdlLCByZS5NVUxUSUxJTkUpCisgICAgZWxzZToKKyAgICAgICAg
bWF0Y2ggPSByZS5zZWFyY2goCisgICAgICAgICAgICBCdWd6aWxsYS5idWdfc2VydmVyX3JlZ2V4
ICsgInNob3dfYnVnXC5jZ2lcP2lkPSg/UDxidWdfaWQ+XGQrKSIsCisgICAgICAgICAgICBtZXNz
YWdlKQogICAgIGlmIG1hdGNoOgogICAgICAgICByZXR1cm4gaW50KG1hdGNoLmdyb3VwKCdidWdf
aWQnKSkKICAgICByZXR1cm4gTm9uZQpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRw
eS9jb21tb24vbmV0L2J1Z3ppbGxhL2J1Z3ppbGxhX3VuaXR0ZXN0LnB5IGIvVG9vbHMvU2NyaXB0
cy93ZWJraXRweS9jb21tb24vbmV0L2J1Z3ppbGxhL2J1Z3ppbGxhX3VuaXR0ZXN0LnB5CmluZGV4
IDFkMDhjYTUuLmM4MzE3ZWYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29t
bW9uL25ldC9idWd6aWxsYS9idWd6aWxsYV91bml0dGVzdC5weQorKysgYi9Ub29scy9TY3JpcHRz
L3dlYmtpdHB5L2NvbW1vbi9uZXQvYnVnemlsbGEvYnVnemlsbGFfdW5pdHRlc3QucHkKQEAgLTEw
MCw2ICsxMDAsNDQgQEAgY2xhc3MgQnVnemlsbGFUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKICAg
ICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoTm9uZSwgcGFyc2VfYnVnX2lkKCJodHRwOi8vd3d3Lndl
YmtpdC5vcmcvYi8xMjM0NSIpKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhOb25lLCBwYXJz
ZV9idWdfaWQoImh0dHA6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2N0eXBlPXhtbCZp
ZD0xMjM0NSIpKQogCisgICAgICAgIGNvbW1pdF90ZXh0ID0gJycnCisyMDExLTAzLTIzICBPamFu
IFZhZmFpICA8b2phbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgQWRkIGZhaWxpbmcgcmVzdWx0
IGZvciBXZWJLaXQyLiBBbGwgdGVzdHMgdGhhdCByZXF1aXJlCisgICAgICAgIGZvY3VzIGZhaWwg
b24gV2ViS2l0Mi4gU2VlIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01
Njk4OC4KKworICAgICAgICAqIHBsYXRmb3JtL21hYy13azIvZmFzdC9jc3MvcHNldWRvLWFueS1l
eHBlY3RlZC50eHQ6IEFkZGVkLgorCisgICAgICAgICcnJworCisgICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWxzKE5vbmUsIHBhcnNlX2J1Z19pZChjb21taXRfdGV4dCkpCisgICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWxzKDU2OTg4LCBwYXJzZV9idWdfaWQoY29tbWl0X3RleHQsIHNob3dfYnVnX3VybF9v
bl9vd25fbGluZT1GYWxzZSkpCisKKyAgICAgICAgY29tbWl0X3RleHQgPSAnJycKKzIwMTEtMDMt
MjMgIE9qYW4gVmFmYWkgIDxvamFuQGNocm9taXVtLm9yZz4KKworICAgICAgICBBZGQgZmFpbGlu
ZyByZXN1bHQgZm9yIFdlYktpdDIuIEFsbCB0ZXN0cyB0aGF0IHJlcXVpcmUKKyAgICAgICAgZm9j
dXMgZmFpbCBvbiBXZWJLaXQyLiBTZWUgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTU2OTg4LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTIzNDUKKworICAgICAgICAqIHBsYXRmb3JtL21hYy13azIvZmFzdC9jc3MvcHNldWRv
LWFueS1leHBlY3RlZC50eHQ6IEFkZGVkLgorCisgICAgICAgICcnJworCisgICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWxzKDEyMzQ1LCBwYXJzZV9idWdfaWQoY29tbWl0X3RleHQpKQorICAgICAgICBz
ZWxmLmFzc2VydEVxdWFscyg1Njk4OCwgcGFyc2VfYnVnX2lkKGNvbW1pdF90ZXh0LCBzaG93X2J1
Z191cmxfb25fb3duX2xpbmU9RmFsc2UpKQorCisgICAgICAgIGNvbW1pdF90ZXh0ID0gJycnCisy
MDExLTAzLTIyICBEYXZpZCBLaWx6ZXIgIDxkZGtpbHplckBhcHBsZS5jb20+CisKKyAgICAgICAg
PGh0dHA6Ly93ZWJraXQub3JnL2IvNTY3ODE+IEFkZCAtLWRzeW0gc3dpdGNoIHRvIGVuYWJsZSBk
c3ltIGdlbmVyYXRpb24gd2hlbiBidWlsZGluZyB3aXRoIFhjb2RlCisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgSm9zZXBoIFBlY29yYXJvLgorCisgICAgICAgICcnJworCisgICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWxzKDU2NzgxLCBwYXJzZV9idWdfaWQoY29tbWl0X3RleHQpKQorCiAgICAgX2J1Z194
bWwgPSAiIiIKICAgICA8YnVnPgogICAgICAgICAgIDxidWdfaWQ+MzI1ODU8L2J1Z19pZD4KZGlm
ZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9ib3QvaXJjX2NvbW1hbmQucHkg
Yi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvYm90L2lyY19jb21tYW5kLnB5CmluZGV4IGFm
MTA5ZTQuLjZlNDQ4MzQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9i
b3QvaXJjX2NvbW1hbmQucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL2JvdC9p
cmNfY29tbWFuZC5weQpAQCAtOTIsNyArOTIsNyBAQCBjbGFzcyBSb2xsb3V0KElSQ0NvbW1hbmQp
OgogICAgICAgICBleGNlcHQgU2NyaXB0RXJyb3IsIGU6CiAgICAgICAgICAgICB0b29sLmlyYygp
LnBvc3QoIiVzOiBGYWlsZWQgdG8gY3JlYXRlIHJvbGxvdXQgcGF0Y2g6IiAlIG5pY2spCiAgICAg
ICAgICAgICB0b29sLmlyYygpLnBvc3QoIiVzIiAlIGUpCi0gICAgICAgICAgICBidWdfaWQgPSBw
YXJzZV9idWdfaWQoZS5vdXRwdXQpCisgICAgICAgICAgICBidWdfaWQgPSBwYXJzZV9idWdfaWQo
ZS5vdXRwdXQsIHNob3dfYnVnX3VybF9vbl9vd25fbGluZT1GYWxzZSkKICAgICAgICAgICAgIGlm
IGJ1Z19pZDoKICAgICAgICAgICAgICAgICB0b29sLmlyYygpLnBvc3QoIlVnZy4uLiAgTWlnaHQg
aGF2ZSBjcmVhdGVkICVzIiAlCiAgICAgICAgICAgICAgICAgICAgIHRvb2wuYnVncy5idWdfdXJs
X2Zvcl9idWdfaWQoYnVnX2lkKSkKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkv
dG9vbC9ib3Qvc2hlcmlmZi5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9ib3Qvc2hl
cmlmZi5weQppbmRleCBhNWVkY2ViLi4wOWFjMWFiIDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRz
L3dlYmtpdHB5L3Rvb2wvYm90L3NoZXJpZmYucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRw
eS90b29sL2JvdC9zaGVyaWZmLnB5CkBAIC03NSw3ICs3NSw3IEBAIGNsYXNzIFNoZXJpZmYob2Jq
ZWN0KToKICAgICAgICAgICAgIHN2bl9yZXZpc2lvbnMsCiAgICAgICAgICAgICByb2xsb3V0X3Jl
YXNvbiwKICAgICAgICAgXSkKLSAgICAgICAgcmV0dXJuIHBhcnNlX2J1Z19pZChvdXRwdXQpCisg
ICAgICAgIHJldHVybiBwYXJzZV9idWdfaWQob3V0cHV0LCBzaG93X2J1Z191cmxfb25fb3duX2xp
bmU9RmFsc2UpCiAKICAgICBkZWYgcG9zdF9ibGFtZV9jb21tZW50X29uX2J1ZyhzZWxmLCBjb21t
aXRfaW5mbywgYnVpbGRlcnMsIHRlc3RzKToKICAgICAgICAgaWYgbm90IGNvbW1pdF9pbmZvLmJ1
Z19pZCgpOgo=
</data>
<flag name="review"
          id="79243"
          type_id="1"
          status="-"
          setter="eric"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>87100</attachid>
            <date>2011-03-27 22:29:05 -0700</date>
            <delta_ts>2011-03-28 22:56:29 -0700</delta_ts>
            <desc>Create and use parse_bug_id_from_changelog()</desc>
            <filename>56989-3.txt</filename>
            <type>text/plain</type>
            <size>10992</size>
            <attacher name="andrewf@chromium.org">andrewf</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCBiMDRl
MDllLi5kNmJjNjA0IDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMjIgQEAKKzIwMTEtMDMtMjcgIEFuZHJldyBGb3N0ZXIgIDxhbmRy
ZXdmQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICB3ZWJraXQtcGF0Y2ggc2hvdWxkIGJlIG1vcmUgaW50ZWxsaWdlbnQgYWJvdXQg
d2hldGhlciBhIGJ1ZyBhcHBsaWVzIHRvIGEgcGF0Y2gKKyAgICAgICAgQ3JlYXRlIGEgbmV3IGZ1
bmN0aW9uLCBwYXJzZV9idWdfaWRfZnJvbV9jaGFuZ2Vsb2coKSB3aGljaCBkZXRlcm1pbmVzCisg
ICAgICAgIHRoYXQgYSBidWcgaXMgcmVsYXRlZCB0byBhIHBhdGNoIGJ5IHBhcnNpbmcgdGhlIG91
dHB1dCBnZW5lcmF0ZWQgZnJvbQorICAgICAgICBwcmVwYXJlLUNoYW5nZUxvZywgcmF0aGVyIHRo
YW4gYXJiaXRyYXJpbHkgbWF0Y2hpbmcgYSBVUkwgdG8gYSBidWcgaW4KKyAgICAgICAgdGhlIGRl
c2NyaXB0aW9uIG9mIGEgcGF0Y2guCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD01Njk4OQorCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9jb21tb24v
Y2hlY2tvdXQvYXBpLnB5OgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvY29tbW9uL2NoZWNr
b3V0L2NoYW5nZWxvZy5weToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9uZXQv
YnVnemlsbGEvX19pbml0X18ucHk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9jb21tb24v
bmV0L2J1Z3ppbGxhL2J1Z3ppbGxhLnB5OgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvY29t
bW9uL25ldC9idWd6aWxsYS9idWd6aWxsYV91bml0dGVzdC5weToKKyAgICAgICAgKiBTY3JpcHRz
L3dlYmtpdHB5L3N0eWxlL2NoZWNrZXJzL2NoYW5nZWxvZy5weToKKyAgICAgICAgKiBTY3JpcHRz
L3dlYmtpdHB5L3Rvb2wvY29tbWFuZHMvdXBsb2FkLnB5OgorCiAyMDExLTAzLTI3ICBQYXRyaWNr
IEdhbnN0ZXJlciAgPHBhcm9nYUB3ZWJraXQub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IERh
dmlkIExldmluLgpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vY2hl
Y2tvdXQvYXBpLnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vY2hlY2tvdXQvYXBp
LnB5CmluZGV4IDE3MGI4MjIuLjVjMjEwMjggMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Vi
a2l0cHkvY29tbW9uL2NoZWNrb3V0L2FwaS5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5
L2NvbW1vbi9jaGVja291dC9hcGkucHkKQEAgLTM1LDcgKzM1LDcgQEAgZnJvbSB3ZWJraXRweS5j
b21tb24uY2hlY2tvdXQuY29tbWl0aW5mbyBpbXBvcnQgQ29tbWl0SW5mbwogZnJvbSB3ZWJraXRw
eS5jb21tb24uY2hlY2tvdXQuc2NtIGltcG9ydCBDb21taXRNZXNzYWdlCiBmcm9tIHdlYmtpdHB5
LmNvbW1vbi5jaGVja291dC5kZXBzIGltcG9ydCBERVBTCiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5t
ZW1vaXplZCBpbXBvcnQgbWVtb2l6ZWQKLWZyb20gd2Via2l0cHkuY29tbW9uLm5ldC5idWd6aWxs
YSBpbXBvcnQgcGFyc2VfYnVnX2lkCitmcm9tIHdlYmtpdHB5LmNvbW1vbi5uZXQuYnVnemlsbGEg
aW1wb3J0IHBhcnNlX2J1Z19pZF9mcm9tX2NoYW5nZWxvZwogZnJvbSB3ZWJraXRweS5jb21tb24u
c3lzdGVtLmV4ZWN1dGl2ZSBpbXBvcnQgRXhlY3V0aXZlLCBydW5fY29tbWFuZCwgU2NyaXB0RXJy
b3IKIGZyb20gd2Via2l0cHkuY29tbW9uLnN5c3RlbS5kZXByZWNhdGVkX2xvZ2dpbmcgaW1wb3J0
IGxvZwogCkBAIC04NSw3ICs4NSw3IEBAIGNsYXNzIENoZWNrb3V0KG9iamVjdCk6CiAgICAgICAg
ICAgICByZXR1cm4gTm9uZQogICAgICAgICBjaGFuZ2Vsb2dfZW50cnkgPSBjaGFuZ2Vsb2dfZW50
cmllc1swXQogICAgICAgICBjaGFuZ2Vsb2dfZGF0YSA9IHsKLSAgICAgICAgICAgICJidWdfaWQi
OiBwYXJzZV9idWdfaWQoY2hhbmdlbG9nX2VudHJ5LmNvbnRlbnRzKCkpLAorICAgICAgICAgICAg
ImJ1Z19pZCI6IHBhcnNlX2J1Z19pZF9mcm9tX2NoYW5nZWxvZyhjaGFuZ2Vsb2dfZW50cnkuY29u
dGVudHMoKSksCiAgICAgICAgICAgICAiYXV0aG9yX25hbWUiOiBjaGFuZ2Vsb2dfZW50cnkuYXV0
aG9yX25hbWUoKSwKICAgICAgICAgICAgICJhdXRob3JfZW1haWwiOiBjaGFuZ2Vsb2dfZW50cnku
YXV0aG9yX2VtYWlsKCksCiAgICAgICAgICAgICAiYXV0aG9yIjogY2hhbmdlbG9nX2VudHJ5LmF1
dGhvcigpLApAQCAtMTQ1LDcgKzE0NSw3IEBAIGNsYXNzIENoZWNrb3V0KG9iamVjdCk6CiAKICAg
ICBkZWYgYnVnX2lkX2Zvcl90aGlzX2NvbW1pdChzZWxmLCBnaXRfY29tbWl0LCBjaGFuZ2VkX2Zp
bGVzPU5vbmUpOgogICAgICAgICB0cnk6Ci0gICAgICAgICAgICByZXR1cm4gcGFyc2VfYnVnX2lk
KHNlbGYuY29tbWl0X21lc3NhZ2VfZm9yX3RoaXNfY29tbWl0KGdpdF9jb21taXQsIGNoYW5nZWRf
ZmlsZXMpLm1lc3NhZ2UoKSkKKyAgICAgICAgICAgIHJldHVybiBwYXJzZV9idWdfaWRfZnJvbV9j
aGFuZ2Vsb2coc2VsZi5jb21taXRfbWVzc2FnZV9mb3JfdGhpc19jb21taXQoZ2l0X2NvbW1pdCwg
Y2hhbmdlZF9maWxlcykubWVzc2FnZSgpKQogICAgICAgICBleGNlcHQgU2NyaXB0RXJyb3IsIGU6
CiAgICAgICAgICAgICBwYXNzICMgV2UgbWlnaHQgbm90IGhhdmUgQ2hhbmdlTG9ncy4KIApkaWZm
IC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vY2hlY2tvdXQvY2hhbmdlbG9n
LnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vY2hlY2tvdXQvY2hhbmdlbG9nLnB5
CmluZGV4IGNjZGY5Y2EuLmE4NmI3YTkgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0
cHkvY29tbW9uL2NoZWNrb3V0L2NoYW5nZWxvZy5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtp
dHB5L2NvbW1vbi9jaGVja291dC9jaGFuZ2Vsb2cucHkKQEAgLTM2LDcgKzM2LDcgQEAgaW1wb3J0
IHRleHR3cmFwCiAKIGZyb20gd2Via2l0cHkuY29tbW9uLnN5c3RlbS5kZXByZWNhdGVkX2xvZ2dp
bmcgaW1wb3J0IGxvZwogZnJvbSB3ZWJraXRweS5jb21tb24uY29uZmlnLmNvbW1pdHRlcnMgaW1w
b3J0IENvbW1pdHRlckxpc3QKLWZyb20gd2Via2l0cHkuY29tbW9uLm5ldC5idWd6aWxsYSBpbXBv
cnQgcGFyc2VfYnVnX2lkCitmcm9tIHdlYmtpdHB5LmNvbW1vbi5uZXQuYnVnemlsbGEgaW1wb3J0
IHBhcnNlX2J1Z19pZF9mcm9tX2NoYW5nZWxvZwogCiAKIGNsYXNzIENoYW5nZUxvZ0VudHJ5KG9i
amVjdCk6CkBAIC04Nyw3ICs4Nyw3IEBAIGNsYXNzIENoYW5nZUxvZ0VudHJ5KG9iamVjdCk6CiAg
ICAgICAgIHJldHVybiBzZWxmLl9jb250ZW50cwogCiAgICAgZGVmIGJ1Z19pZChzZWxmKToKLSAg
ICAgICAgcmV0dXJuIHBhcnNlX2J1Z19pZChzZWxmLl9jb250ZW50cykKKyAgICAgICAgcmV0dXJu
IHBhcnNlX2J1Z19pZF9mcm9tX2NoYW5nZWxvZyhzZWxmLl9jb250ZW50cykKIAogCiAjIEZJWE1F
OiBWYXJpb3VzIG1ldGhvZHMgb24gQ2hhbmdlTG9nIHNob3VsZCBtb3ZlIGludG8gQ2hhbmdlTG9n
RW50cnkgaW5zdGVhZC4KZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9u
L25ldC9idWd6aWxsYS9fX2luaXRfXy5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9u
L25ldC9idWd6aWxsYS9fX2luaXRfXy5weQppbmRleCBjZmFmM2IxLi5iZGU2N2M2IDEwMDY0NAot
LS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9uZXQvYnVnemlsbGEvX19pbml0X18u
cHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vbmV0L2J1Z3ppbGxhL19faW5p
dF9fLnB5CkBAIC0yLDcgKzIsNyBAQAogCiAjIFdlIG9ubHkgZXhwb3J0IHB1YmxpYyBBUEkgaGVy
ZS4KICMgRklYTUU6IHBhcnNlX2J1Z19pZCBzaG91bGQgbm90IGJlIGEgZnJlZSBmdW5jdGlvbi4K
LWZyb20gLmJ1Z3ppbGxhIGltcG9ydCBCdWd6aWxsYSwgcGFyc2VfYnVnX2lkCitmcm9tIC5idWd6
aWxsYSBpbXBvcnQgQnVnemlsbGEsIHBhcnNlX2J1Z19pZCwgcGFyc2VfYnVnX2lkX2Zyb21fY2hh
bmdlbG9nCiAjIFVuY2xlYXIgaWYgQnVnIGFuZCBBdHRhY2htZW50IG5lZWQgdG8gYmUgcHVibGlj
IGNsYXNzZXMuCiBmcm9tIC5idWcgaW1wb3J0IEJ1ZwogZnJvbSAuYXR0YWNobWVudCBpbXBvcnQg
QXR0YWNobWVudApkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vbmV0
L2J1Z3ppbGxhL2J1Z3ppbGxhLnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vbmV0
L2J1Z3ppbGxhL2J1Z3ppbGxhLnB5CmluZGV4IDE3YTg1MTUuLjhkYWY5MmUgMTAwNjQ0Ci0tLSBh
L1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL25ldC9idWd6aWxsYS9idWd6aWxsYS5weQor
KysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9uZXQvYnVnemlsbGEvYnVnemlsbGEu
cHkKQEAgLTUzLDIyICs1MywzNCBAQCBmcm9tIHdlYmtpdHB5LnRoaXJkcGFydHkuQmVhdXRpZnVs
U291cCBpbXBvcnQgQmVhdXRpZnVsU291cCwgU291cFN0cmFpbmVyCiBkZWYgcGFyc2VfYnVnX2lk
KG1lc3NhZ2UpOgogICAgIGlmIG5vdCBtZXNzYWdlOgogICAgICAgICByZXR1cm4gTm9uZQotICAg
IG1hdGNoID0gcmUuc2VhcmNoKCJodHRwXDovL3dlYmtpdFwub3JnL2IvKD9QPGJ1Z19pZD5cZCsp
IiwgbWVzc2FnZSkKKyAgICBtYXRjaCA9IHJlLnNlYXJjaChCdWd6aWxsYS5idWdfdXJsX3Nob3J0
LCBtZXNzYWdlKQogICAgIGlmIG1hdGNoOgogICAgICAgICByZXR1cm4gaW50KG1hdGNoLmdyb3Vw
KCdidWdfaWQnKSkKLSAgICBtYXRjaCA9IHJlLnNlYXJjaCgKLSAgICAgICAgQnVnemlsbGEuYnVn
X3NlcnZlcl9yZWdleCArICJzaG93X2J1Z1wuY2dpXD9pZD0oP1A8YnVnX2lkPlxkKykiLAotICAg
ICAgICBtZXNzYWdlKQorICAgIG1hdGNoID0gcmUuc2VhcmNoKEJ1Z3ppbGxhLmJ1Z191cmxfbG9u
ZywgbWVzc2FnZSkKICAgICBpZiBtYXRjaDoKICAgICAgICAgcmV0dXJuIGludChtYXRjaC5ncm91
cCgnYnVnX2lkJykpCiAgICAgcmV0dXJuIE5vbmUKIAogCisjIEZJWE1FOiBwYXJzZV9idWdfaWRf
ZnJvbV9jaGFuZ2Vsb2cgc2hvdWxkIG5vdCBiZSBhIGZyZWUgZnVuY3Rpb24uCisjIFBhcnNlIHRo
ZSBidWcgSUQgb3V0IG9mIGEgQ2hhbmdlbG9nIG1lc3NhZ2UgYmFzZWQgb24gdGhlIGZvcm1hdCB0
aGF0IGlzCisjIHVzZWQgYnkgcHJlcGFyZS1DaGFuZ2VMb2cKK2RlZiBwYXJzZV9idWdfaWRfZnJv
bV9jaGFuZ2Vsb2cobWVzc2FnZSk6CisgICAgaWYgbm90IG1lc3NhZ2U6CisgICAgICAgIHJldHVy
biBOb25lCisgICAgbWF0Y2ggPSByZS5zZWFyY2goIl5ccyoiICsgQnVnemlsbGEuYnVnX3VybF9z
aG9ydCArICIkIiwgbWVzc2FnZSwgcmUuTVVMVElMSU5FKQorICAgIGlmIG1hdGNoOgorICAgICAg
ICByZXR1cm4gaW50KG1hdGNoLmdyb3VwKCdidWdfaWQnKSkKKyAgICBtYXRjaCA9IHJlLnNlYXJj
aCgiXlxzKiIgKyBCdWd6aWxsYS5idWdfdXJsX2xvbmcgKyAiJCIsIG1lc3NhZ2UsIHJlLk1VTFRJ
TElORSkKKyAgICBpZiBtYXRjaDoKKyAgICAgICAgcmV0dXJuIGludChtYXRjaC5ncm91cCgnYnVn
X2lkJykpCisgICAgcmV0dXJuIE5vbmUKKwogZGVmIHRpbWVzdGFtcCgpOgogICAgIHJldHVybiBk
YXRldGltZS5ub3coKS5zdHJmdGltZSgiJVklbSVkJUglTSVTIikKIAogCi0jIEEgY29udGFpbmVy
IGZvciBhbGwgb2YgdGhlIGxvZ2ljIGZvciBtYWtpbmcgYW5kIHBhcnNpbmcgYnV6aWxsYSBxdWVy
aWVzLgorIyBBIGNvbnRhaW5lciBmb3IgYWxsIG9mIHRoZSBsb2dpYyBmb3IgbWFraW5nIGFuZCBw
YXJzaW5nIGJ1Z3ppbGxhIHF1ZXJpZXMuCiBjbGFzcyBCdWd6aWxsYVF1ZXJpZXMob2JqZWN0KToK
IAogICAgIGRlZiBfX2luaXRfXyhzZWxmLCBidWd6aWxsYSk6CkBAIC0yMTAsNiArMjIyLDggQEAg
Y2xhc3MgQnVnemlsbGEob2JqZWN0KToKICAgICBidWdfc2VydmVyX2hvc3QgPSAiYnVncy53ZWJr
aXQub3JnIgogICAgIGJ1Z19zZXJ2ZXJfcmVnZXggPSAiaHR0cHM/Oi8vJXMvIiAlIHJlLnN1Yign
XC4nLCAnXFwuJywgYnVnX3NlcnZlcl9ob3N0KQogICAgIGJ1Z19zZXJ2ZXJfdXJsID0gImh0dHBz
Oi8vJXMvIiAlIGJ1Z19zZXJ2ZXJfaG9zdAorICAgIGJ1Z191cmxfbG9uZyA9IGJ1Z19zZXJ2ZXJf
cmVnZXggKyByInNob3dfYnVnXC5jZ2lcP2lkPSg/UDxidWdfaWQ+XGQrKSgmY3R5cGU9eG1sKT8i
CisgICAgYnVnX3VybF9zaG9ydCA9IHIiaHR0cFw6Ly93ZWJraXRcLm9yZy9iLyg/UDxidWdfaWQ+
XGQrKSIKIAogICAgIGRlZiBxdWlwcyhzZWxmKToKICAgICAgICAgIyBXZSBvbmx5IGZldGNoIGFu
ZCBwYXJzZSB0aGUgbGlzdCBvZiBxdWlwcyBvbmNlIHBlciBpbnN0YW50aWF0aW9uCmRpZmYgLS1n
aXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9uZXQvYnVnemlsbGEvYnVnemlsbGFf
dW5pdHRlc3QucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9uZXQvYnVnemlsbGEv
YnVnemlsbGFfdW5pdHRlc3QucHkKaW5kZXggMWQwOGNhNS4uMmU3NWNhOSAxMDA2NDQKLS0tIGEv
VG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vbmV0L2J1Z3ppbGxhL2J1Z3ppbGxhX3VuaXR0
ZXN0LnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL25ldC9idWd6aWxsYS9i
dWd6aWxsYV91bml0dGVzdC5weQpAQCAtMzAsNyArMzAsNyBAQCBpbXBvcnQgdW5pdHRlc3QKIGlt
cG9ydCBkYXRldGltZQogaW1wb3J0IFN0cmluZ0lPCiAKLWZyb20gLmJ1Z3ppbGxhIGltcG9ydCBC
dWd6aWxsYSwgQnVnemlsbGFRdWVyaWVzLCBwYXJzZV9idWdfaWQKK2Zyb20gLmJ1Z3ppbGxhIGlt
cG9ydCBCdWd6aWxsYSwgQnVnemlsbGFRdWVyaWVzLCBwYXJzZV9idWdfaWQsIHBhcnNlX2J1Z19p
ZF9mcm9tX2NoYW5nZWxvZwogCiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0ub3V0cHV0Y2Fw
dHVyZSBpbXBvcnQgT3V0cHV0Q2FwdHVyZQogZnJvbSB3ZWJraXRweS50b29sLm1vY2t0b29sIGlt
cG9ydCBNb2NrQnJvd3NlcgpAQCAtMTkyLDYgKzE5MiwzMyBAQCBaRVpwYm1semFFeHZZV1JYYVhS
b1VtVmhjMjl1T25KbFlYTnZibDA3Q2l0OUNpc0tJRUJsYm1RS0lBb2dJMlZ1WkdsbUNnPT0KICAg
ICAgICAgfV0sCiAgICAgfQogCisgICAgZGVmIHRlc3RfcGFyc2VfYnVnX2lkX2Zyb21fY2hhbmdl
bG9nKHNlbGYpOgorICAgICAgICBjb21taXRfdGV4dCA9ICcnJworMjAxMS0wMy0yMyAgT2phbiBW
YWZhaSAgPG9qYW5AY2hyb21pdW0ub3JnPgorCisgICAgICAgIEFkZCBmYWlsaW5nIHJlc3VsdCBm
b3IgV2ViS2l0Mi4gQWxsIHRlc3RzIHRoYXQgcmVxdWlyZQorICAgICAgICBmb2N1cyBmYWlsIG9u
IFdlYktpdDIuIFNlZSBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTY5
ODguCisKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMtd2syL2Zhc3QvY3NzL3BzZXVkby1hbnktZXhw
ZWN0ZWQudHh0OiBBZGRlZC4KKworICAgICAgICAnJycKKworICAgICAgICBzZWxmLmFzc2VydEVx
dWFscyhOb25lLCBwYXJzZV9idWdfaWRfZnJvbV9jaGFuZ2Vsb2coY29tbWl0X3RleHQpKQorCisg
ICAgICAgIGNvbW1pdF90ZXh0ID0gJycnCisyMDExLTAzLTIzICBPamFuIFZhZmFpICA8b2phbkBj
aHJvbWl1bS5vcmc+CisKKyAgICAgICAgQWRkIGZhaWxpbmcgcmVzdWx0IGZvciBXZWJLaXQyLiBB
bGwgdGVzdHMgdGhhdCByZXF1aXJlCisgICAgICAgIGZvY3VzIGZhaWwgb24gV2ViS2l0Mi4gU2Vl
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01Njk4OC4KKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyMzQ1CisKKyAgICAgICAg
KiBwbGF0Zm9ybS9tYWMtd2syL2Zhc3QvY3NzL3BzZXVkby1hbnktZXhwZWN0ZWQudHh0OiBBZGRl
ZC4KKworICAgICAgICAnJycKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFscygxMjM0NSwgcGFy
c2VfYnVnX2lkX2Zyb21fY2hhbmdlbG9nKGNvbW1pdF90ZXh0KSkKKworCiAgICAgIyBGSVhNRTog
VGhpcyBzaG91bGQgbW92ZSB0byBhIGNlbnRyYWwgbG9jYXRpb24gYW5kIGJlIHNoYXJlZCBieSBt
b3JlIHVuaXQgdGVzdHMuCiAgICAgZGVmIF9hc3NlcnRfZGljdGlvbmFyaWVzX2VxdWFsKHNlbGYs
IGFjdHVhbCwgZXhwZWN0ZWQpOgogICAgICAgICAjIE1ha2Ugc3VyZSB3ZSBhcmVuJ3QgcGFyc2lu
ZyBtb3JlIG9yIGxlc3MgdGhhbiB3ZSBleHBlY3QKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMv
d2Via2l0cHkvc3R5bGUvY2hlY2tlcnMvY2hhbmdlbG9nLnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJr
aXRweS9zdHlsZS9jaGVja2Vycy9jaGFuZ2Vsb2cucHkKaW5kZXggZmY0YjA3Zi4uYmUyNzlhNyAx
MDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9zdHlsZS9jaGVja2Vycy9jaGFuZ2Vs
b2cucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9zdHlsZS9jaGVja2Vycy9jaGFuZ2Vs
b2cucHkKQEAgLTI3LDcgKzI3LDcgQEAKIAogaW1wb3J0IHJlCiBmcm9tIGNvbW1vbiBpbXBvcnQg
VGFiQ2hlY2tlcgotZnJvbSB3ZWJraXRweS5jb21tb24ubmV0LmJ1Z3ppbGxhIGltcG9ydCBwYXJz
ZV9idWdfaWQKK2Zyb20gd2Via2l0cHkuY29tbW9uLm5ldC5idWd6aWxsYSBpbXBvcnQgcGFyc2Vf
YnVnX2lkX2Zyb21fY2hhbmdlbG9nCiAKIAogY2xhc3MgQ2hhbmdlTG9nQ2hlY2tlcihvYmplY3Qp
OgpAQCAtNDEsNyArNDEsNyBAQCBjbGFzcyBDaGFuZ2VMb2dDaGVja2VyKG9iamVjdCk6CiAKICAg
ICBkZWYgY2hlY2tfZW50cnkoc2VsZiwgZW50cnlfbGluZV9udW1iZXIsIGVudHJ5X2xpbmVzKToK
ICAgICAgICAgZm9yIGxpbmUgaW4gZW50cnlfbGluZXM6Ci0gICAgICAgICAgICBpZiBwYXJzZV9i
dWdfaWQobGluZSk6CisgICAgICAgICAgICBpZiBwYXJzZV9idWdfaWRfZnJvbV9jaGFuZ2Vsb2co
bGluZSk6CiAgICAgICAgICAgICAgICAgYnJlYWsKICAgICAgICAgICAgIGlmIHJlLnNlYXJjaCgi
VW5yZXZpZXdlZCIsIGxpbmUsIHJlLklHTk9SRUNBU0UpOgogICAgICAgICAgICAgICAgIGJyZWFr
CmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvY29tbWFuZHMvdXBsb2Fk
LnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL2NvbW1hbmRzL3VwbG9hZC5weQppbmRl
eCA2NDg1MzE3Li44MDcxNWE3IDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3Rv
b2wvY29tbWFuZHMvdXBsb2FkLnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9j
b21tYW5kcy91cGxvYWQucHkKQEAgLTM3LDcgKzM3LDcgQEAgZnJvbSBvcHRwYXJzZSBpbXBvcnQg
bWFrZV9vcHRpb24KIGZyb20gd2Via2l0cHkudG9vbCBpbXBvcnQgc3RlcHMKIAogZnJvbSB3ZWJr
aXRweS5jb21tb24uY29uZmlnLmNvbW1pdHRlcnMgaW1wb3J0IENvbW1pdHRlckxpc3QKLWZyb20g
d2Via2l0cHkuY29tbW9uLm5ldC5idWd6aWxsYSBpbXBvcnQgcGFyc2VfYnVnX2lkCitmcm9tIHdl
YmtpdHB5LmNvbW1vbi5uZXQuYnVnemlsbGEgaW1wb3J0IHBhcnNlX2J1Z19pZF9mcm9tX2NoYW5n
ZWxvZwogZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVtLmRlcHJlY2F0ZWRfbG9nZ2luZyBpbXBv
cnQgZXJyb3IsIGxvZwogZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVtLnVzZXIgaW1wb3J0IFVz
ZXIKIGZyb20gd2Via2l0cHkudGhpcmRwYXJ0eS5tb2NrIGltcG9ydCBNb2NrCkBAIC0zMjYsNyAr
MzI2LDcgQEAgY2xhc3MgUG9zdENvbW1pdHMoQWJzdHJhY3REZWNsYXJhdGl2ZUNvbW1hbmQpOgog
ICAgICAgICAgICAgY29tbWl0X21lc3NhZ2UgPSB0b29sLnNjbSgpLmNvbW1pdF9tZXNzYWdlX2Zv
cl9sb2NhbF9jb21taXQoY29tbWl0X2lkKQogCiAgICAgICAgICAgICAjIFByZWZlciAtLWJ1Zy1p
ZD0sIHRoZW4gYSBidWcgdXJsIGluIHRoZSBjb21taXQgbWVzc2FnZSwgdGhlbiBhIGJ1ZyB1cmwg
aW4gdGhlIGVudGlyZSBjb21taXQgZGlmZiAoaS5lLiBDaGFuZ2VMb2dzKS4KLSAgICAgICAgICAg
IGJ1Z19pZCA9IG9wdGlvbnMuYnVnX2lkIG9yIHBhcnNlX2J1Z19pZChjb21taXRfbWVzc2FnZS5t
ZXNzYWdlKCkpIG9yIHBhcnNlX2J1Z19pZCh0b29sLnNjbSgpLmNyZWF0ZV9wYXRjaChnaXRfY29t
bWl0PWNvbW1pdF9pZCkpCisgICAgICAgICAgICBidWdfaWQgPSBvcHRpb25zLmJ1Z19pZCBvciBw
YXJzZV9idWdfaWRfZnJvbV9jaGFuZ2Vsb2coY29tbWl0X21lc3NhZ2UubWVzc2FnZSgpKSBvciBw
YXJzZV9idWdfaWRfZnJvbV9jaGFuZ2Vsb2codG9vbC5zY20oKS5jcmVhdGVfcGF0Y2goZ2l0X2Nv
bW1pdD1jb21taXRfaWQpKQogICAgICAgICAgICAgaWYgbm90IGJ1Z19pZDoKICAgICAgICAgICAg
ICAgICBsb2coIlNraXBwaW5nICVzOiBObyBidWcgaWQgZm91bmQgaW4gY29tbWl0IG9yIHNwZWNp
ZmllZCB3aXRoIC0tYnVnLWlkLiIgJSBjb21taXRfaWQpCiAgICAgICAgICAgICAgICAgY29udGlu
dWUKQEAgLTM2Niw3ICszNjYsNyBAQCBjbGFzcyBNYXJrQnVnRml4ZWQoQWJzdHJhY3REZWNsYXJh
dGl2ZUNvbW1hbmQpOgogICAgICAgICBjb21taXRfbG9nID0gc2VsZi5fZmV0Y2hfY29tbWl0X2xv
Zyh0b29sLCBzdm5fcmV2aXNpb24pCiAKICAgICAgICAgaWYgbm90IGJ1Z19pZDoKLSAgICAgICAg
ICAgIGJ1Z19pZCA9IHBhcnNlX2J1Z19pZChjb21taXRfbG9nKQorICAgICAgICAgICAgYnVnX2lk
ID0gcGFyc2VfYnVnX2lkX2Zyb21fY2hhbmdlbG9nKGNvbW1pdF9sb2cpCiAKICAgICAgICAgaWYg
bm90IHN2bl9yZXZpc2lvbjoKICAgICAgICAgICAgIG1hdGNoID0gcmUuc2VhcmNoKCJecig/UDxz
dm5fcmV2aXNpb24+XGQrKSBcfCIsIGNvbW1pdF9sb2csIHJlLk1VTFRJTElORSkK
</data>

          </attachment>
      

    </bug>

</bugzilla>