<?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>27363</bug_id>
          
          <creation_ts>2009-07-17 02:06:38 -0700</creation_ts>
          <short_desc>Add a parser of patches for linter</short_desc>
          <delta_ts>2009-07-17 14:25:51 -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>0</everconfirmed>
          <reporter name="Shinichiro Hamaji">hamaji</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>hamaji</cc>
    
    <cc>levin</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>132519</commentid>
    <comment_count>0</comment_count>
    <who name="Shinichiro Hamaji">hamaji</who>
    <bug_when>2009-07-17 02:06:38 -0700</bug_when>
    <thetext>To implement a linter for patches (Bug 27291), we need a parser for diff file.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>132521</commentid>
    <comment_count>1</comment_count>
      <attachid>32919</attachid>
    <who name="Shinichiro Hamaji">hamaji</who>
    <bug_when>2009-07-17 02:13:39 -0700</bug_when>
    <thetext>Created attachment 32919
Patch v2


---
 9 files changed, 137 insertions(+), 5 deletions(-)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>132522</commentid>
    <comment_count>2</comment_count>
      <attachid>32920</attachid>
    <who name="Shinichiro Hamaji">hamaji</who>
    <bug_when>2009-07-17 02:14:46 -0700</bug_when>
    <thetext>Created attachment 32920
Patch v1


---
 3 files changed, 312 insertions(+), 0 deletions(-)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>132523</commentid>
    <comment_count>3</comment_count>
    <who name="Shinichiro Hamaji">hamaji</who>
    <bug_when>2009-07-17 02:15:55 -0700</bug_when>
    <thetext>(In reply to comment #1)
&gt; Created an attachment (id=32919) [details]
&gt; Patch v2

Oops... I&apos;ve sent a wrong patch. Please just ignore this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>132524</commentid>
    <comment_count>4</comment_count>
      <attachid>32921</attachid>
    <who name="Shinichiro Hamaji">hamaji</who>
    <bug_when>2009-07-17 02:19:15 -0700</bug_when>
    <thetext>Created attachment 32921
Patch v2


---
 1 files changed, 2 insertions(+), 1 deletions(-)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>132525</commentid>
    <comment_count>5</comment_count>
      <attachid>32922</attachid>
    <who name="Shinichiro Hamaji">hamaji</who>
    <bug_when>2009-07-17 02:21:33 -0700</bug_when>
    <thetext>Created attachment 32922
Patch v3


---
 3 files changed, 313 insertions(+), 0 deletions(-)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>132526</commentid>
    <comment_count>6</comment_count>
    <who name="Shinichiro Hamaji">hamaji</who>
    <bug_when>2009-07-17 02:24:31 -0700</bug_when>
    <thetext>I found an unnecessary local variable and eliminated it. Again, patch v2 is my mistake and sorry for this (it shows the difference between &quot;patch v1&quot; and &quot;patch v3&quot; unintentionally though).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>132530</commentid>
    <comment_count>7</comment_count>
      <attachid>32922</attachid>
    <who name="David Levin">levin</who>
    <bug_when>2009-07-17 03:23:51 -0700</bug_when>
    <thetext>Comment on attachment 32922
Patch v3

Nice to see this patch.  Just a few things to address.


&gt; diff --git a/WebKitTools/ChangeLog b/WebKitTools/ChangeLog
...
&gt; +        Now, the parser doesn&apos;t have full information of patches.
&gt; +        It only knows the line number and line contents of each lines in
&gt; +        chunks of a patch.  In case the line is newly added or deleted, it
&gt; +        sets zero as the line number.

In isolation from the code, this comment is a bit confusing.  I think it is sufficient to say something like this here:

Adds a simple parser for unified diff format.

&gt; diff --git a/WebKitTools/Scripts/modules/diff_parser.py b/WebKitTools/Scripts/modules/diff_parser.py
...
&gt; +def match(pattern, string):
&gt; +    &quot;&quot;&quot;Matches the string with the pattern, caching the compiled regexp.&quot;&quot;&quot;
&gt; +    # The regexp compilation caching is inlined in both match and search for
&gt; +    # performance reasons; factoring it out into a separate function turns out
&gt; +    # to be noticeably expensive.

I&apos;d remove this comment as there is no search function.  (The comment is a carry over from the cpplint.py file where there is.)

&gt; +# FIXME: We may need more states if we want to check the integrity of input patches.

I think it is fine to omit this fixme.  If someone wants to check integrity, they can do the appropriate changes.

&gt; +class DiffFile:
&gt; +    &quot;&quot;&quot;Hold information of a file in a patch.

Consider: Contains the information for one file in a patch.

&gt; +    The field &quot;lines&quot; is a list which contains tuples which represent

Consider: The field &quot;lines&quot; is a list which contains tuples in this format:

&gt; +    # FIXME: We only have information of lines in chunks. Need more info?

I think it is fine to omit this FIXME.  If someone wants more information, they can enhance this code.

&gt; +    def add_new_line(self, line_number, line):
&gt; +        &quot;&quot;&quot;Adds a newly added line.&quot;&quot;&quot;

I would just omit this doc string as it doesn&apos;t add any information.

&gt; +    def add_old_line(self, line_number, line):

add_deleted_line seems like a better name.

&gt; +        &quot;&quot;&quot;Adds a deleted line.&quot;&quot;&quot;

Remove this doc string.

&gt; +    def add_unchanged_line(self, old_line_number, new_line_number, line):
&gt; +        &quot;&quot;&quot;Adds an unchanged line.&quot;&quot;&quot;

Remove this doc string.

&gt; +    def __init__(self, diff_input):
&gt; +        &quot;&quot;&quot;Parses a diff.
&gt; +
&gt; +        Args:
&gt; +          diff_input: An iteratable object.

An iterable object

&gt; +                elif line == &apos;\\ No newline at end of file\n&apos;:
&gt; +                    # Nothing to do.  We may still have some added lines.
&gt; +                    # FIXME: Check if the following lines only contain added lines?

I don&apos;t understand this FIXME. (I guess I really don&apos;t understand how there are added lines after the &quot;no newline at end of line&quot; in the diff.)

&gt; +            # The following kinds of lines will be ignored silently:
&gt; +            #
&gt; +            # - Lines git-diff-tree produces before filename
&gt; +            #   declaration, which contains a hash of a patch.
&gt; +            # - &apos;=&apos;*67 lines between filename declaration and file
&gt; +            #   revision declaration.
&gt; +            # - Lines for revision declaration.
&gt; +            #
&gt; +            # FIXME: Need these info?

I think it is fine to omit this FIXME and perhaps the whole note.  It seems clear that this information isn&apos;t used.


&gt; diff --git a/WebKitTools/Scripts/modules/diff_parser_unittest.py b/WebKitTools/Scripts/modules/diff_parser_unittest.py
...
&gt; +    def test_diff_parser(self):
...
&gt; +        # The first file looks OK, let&apos;s check the next, more complicated file.

Add a period here:
        # The first file looks OK. Let&apos;s check the next, more complicated file.

&gt; +        # Look through the last chunk, which contains both add/delete.
Consider this wording:
        # Look through the last chunk, which contains both add&apos;s and delete&apos;s.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>132538</commentid>
    <comment_count>8</comment_count>
      <attachid>32927</attachid>
    <who name="Shinichiro Hamaji">hamaji</who>
    <bug_when>2009-07-17 04:32:33 -0700</bug_when>
    <thetext>Created attachment 32927
Patch v4


---
 3 files changed, 291 insertions(+), 0 deletions(-)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>132545</commentid>
    <comment_count>9</comment_count>
      <attachid>32927</attachid>
    <who name="David Levin">levin</who>
    <bug_when>2009-07-17 05:02:29 -0700</bug_when>
    <thetext>Comment on attachment 32927
Patch v4

I still like add_deleted_line better than add_old_line, but add_old_line is ok. :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>132706</commentid>
    <comment_count>10</comment_count>
    <who name="David Levin">levin</who>
    <bug_when>2009-07-17 14:25:51 -0700</bug_when>
    <thetext>Committed as http://trac.webkit.org/changeset/46046</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>32919</attachid>
            <date>2009-07-17 02:13:39 -0700</date>
            <delta_ts>2009-07-17 02:14:41 -0700</delta_ts>
            <desc>Patch v2</desc>
            <filename>bug-27363-20090717181338.patch</filename>
            <type>text/plain</type>
            <size>9095</size>
            <attacher name="Shinichiro Hamaji">hamaji</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBhMGRjY2MxLi4yZTg0M2U2IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjMgQEAKKzIwMDktMDct
MTYgIFNoaW5pY2hpcm8gSGFtYWppICA8aGFtYWppQGNocm9taXVtLm9yZz4KKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBDYW52YXM6IHJvdGF0aW9uIG9m
ICduby1yZXBlYXQnIHBhdHRlcm4gc3RpbGwgaGFzIHNtYWxsIGVycm9yCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yNjc0OQorCisgICAgICAgIFVzZSAo
MTw8MjMpLzIgYXMgc3RlcHMgb2Ygbm8tcmVwZWF0IHBhdHRlcm4gdG8gbWFrZSB0aGUgZXJyb3Ig
bGVzcworICAgICAgICB0aGFuIDAuNS4gIFRoZSBwcmV2aW91cyB2YWx1ZSBtYXkgY2F1c2UgMSBw
aXhlbCBlcnJvcnMuCisKKyAgICAgICAgQWRkIGFub3RoZXIgdGVzdCB0byBzaG93IHRoaXMgYnVn
IGNsZWFybHkuCisgICAgICAgIEFsc28gYWRkIHBuZyBleHBlY3RlZCBpbWFnZSB3aGljaCB3YXMg
bWlzc2luZyBpbiB0aGUgcHJldmlvdXMgcGF0Y2guCisKKyAgICAgICAgKiBmYXN0L2NhbnZhcy9p
bWFnZS1wYXR0ZXJuLXJvdGF0ZS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMv
ZmFzdC9jYW52YXMvaW1hZ2Utb2JqZWN0LWluLWNhbnZhcy1leHBlY3RlZC5jaGVja3N1bToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9tYWMvZmFzdC9jYW52YXMvaW1hZ2Utb2JqZWN0LWluLWNhbnZhcy1l
eHBlY3RlZC5wbmc6CisgICAgICAgICogcGxhdGZvcm0vbWFjL2Zhc3QvY2FudmFzL2ltYWdlLXBh
dHRlcm4tcm90YXRlLWV4cGVjdGVkLmNoZWNrc3VtOiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9y
bS9tYWMvZmFzdC9jYW52YXMvaW1hZ2UtcGF0dGVybi1yb3RhdGUtZXhwZWN0ZWQucG5nOiBBZGRl
ZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvZmFzdC9jYW52YXMvaW1hZ2UtcGF0dGVybi1yb3Rh
dGUtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKwogMjAwOS0wNy0xNSAgRGF2aWQgTGV2aW4gIDxsZXZp
bkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUnViYmVyLXN0YW1wZWQgYnkgT2xpdmVyIEh1bnQu
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy9pbWFnZS1wYXR0ZXJuLXJvdGF0
ZS5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvaW1hZ2UtcGF0dGVybi1yb3RhdGUuaHRt
bApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44M2ZiYWU0Ci0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvaW1hZ2UtcGF0dGVybi1yb3RhdGUuaHRt
bApAQCAtMCwwICsxLDUzIEBACis8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL1czQy8vRFREIEhU
TUwgNC4wMSBUcmFuc2l0aW9uYWwvL0VOIgorICAgICAgICAiaHR0cDovL3d3dy53My5vcmcvVFIv
aHRtbDQvbG9vc2UuZHRkIj4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0PgordmFyIGltZzsKKwor
ZnVuY3Rpb24gaW1hZ2VMb2FkZWQoKSB7CisgICAgdmFyIE5VTV9JTUFHRSA9IDE2OworICAgIGZv
ciAodmFyIGkgPSAwOyBpIDwgTlVNX0lNQUdFOyBpKyspIHsKKyAgICAgICAgdmFyIGNhbnZhc2Vz
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NhbnZhc2VzJyk7CisgICAgICAgIHZhciBjYW52
YXMgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdjYW52YXMnKTsKKyAgICAgICAgY2FudmFzLndp
ZHRoID0gMzsKKyAgICAgICAgY2FudmFzLmhlaWdodCA9IDM7CisgICAgICAgIHZhciBjdHggPSBj
YW52YXMuZ2V0Q29udGV4dCgnMmQnKTsKKworICAgICAgICB2YXIgcGF0dGVybiA9IGN0eC5jcmVh
dGVQYXR0ZXJuKGltZywgJ25vLXJlcGVhdCcpOworICAgICAgICBjdHguZmlsbFN0eWxlID0gcGF0
dGVybjsKKyAgICAgICAgY3R4LnRyYW5zbGF0ZShpbWcud2lkdGggLyAyLCBpbWcuaGVpZ2h0IC8g
Mik7CisgICAgICAgIHZhciBhbmdsZSA9IDIgKiBNYXRoLlBJICogaSAvIE5VTV9JTUFHRTsKKyAg
ICAgICAgY3R4LnJvdGF0ZShhbmdsZSk7CisgICAgICAgIGN0eC50cmFuc2xhdGUoLSBpbWcud2lk
dGggLyAyLCAtIGltZy5oZWlnaHQgLyAyKTsKKyAgICAgICAgY3R4LmZpbGxSZWN0KDAsIDAsIGlt
Zy53aWR0aCwgaW1nLmhlaWdodCk7CisKKyAgICAgICAgdmFyIGRpdiA9IGRvY3VtZW50LmNyZWF0
ZUVsZW1lbnQoJ2RpdicpOworICAgICAgICBkaXYuYXBwZW5kQ2hpbGQoY2FudmFzKTsKKyAgICAg
ICAgY2FudmFzZXMuYXBwZW5kQ2hpbGQoZGl2KTsKKyAgICB9CisKKyAgICBpZiAod2luZG93Lmxh
eW91dFRlc3RDb250cm9sbGVyKSB7CisgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlm
eURvbmUoKTsKKyAgICB9Cit9CisKK2Z1bmN0aW9uIHJ1blRlc3RzKCkgeworICAgIGlmICh3aW5k
b3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKKyAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIu
d2FpdFVudGlsRG9uZSgpOworICAgIH0KKworICAgIGltZyA9IG5ldyBJbWFnZSgpOworICAgIGlt
Zy5vbmxvYWQgPSBpbWFnZUxvYWRlZDsKKyAgICBpbWcuc3JjID0gKCdkYXRhOmltYWdlL3BuZzti
YXNlNjQsJyArCisgICAgICAgICAgICAgICAnaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUFNQUFB
QURDQUlBQUFEWlNpTG9BQUFBQVhOU1IwSUFyczRjNlFBQUFBbHdTRmx6QUFBTEV3QUFDeE1CQUpx
Y0dBQUFBQWQwU1UxRkI5a0hFQWNyQVIva3Q3SUFBQUFaZEVWWWRFTnZiVzFsYm5RQVEzSmxZWFJs
WkNCM2FYUm9JRWRKVFZCWGdRNFhBQUFBRkVsRVFWUUkxMlA0Ly84L0F3TURoSVFCdUJnQXMyb0w5
YnB5TWQ4QUFBQUFTVVZPUks1Q1lJST0nKTsKKworfQorPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9k
eSBvbmxvYWQ9InJ1blRlc3RzKCk7Ij4KK1lvdSBzaG91bGQgc2VlIChhbG1vc3QpIHN0cmFpZ2h0
IHZlcnRpY2FsIGxpbmUgYmVsb3cuCis8ZGl2IGlkPSJjYW52YXNlcyI+PC9kaXY+Cis8L3ByZT4K
KzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9m
YXN0L2NhbnZhcy9pbWFnZS1vYmplY3QtaW4tY2FudmFzLWV4cGVjdGVkLmNoZWNrc3VtIGIvTGF5
b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2Zhc3QvY2FudmFzL2ltYWdlLW9iamVjdC1pbi1jYW52YXMt
ZXhwZWN0ZWQuY2hlY2tzdW0KaW5kZXggZWRjYzMzOS4uMTcyNmJkZSAxMDA2NDQKLS0tIGEvTGF5
b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2Zhc3QvY2FudmFzL2ltYWdlLW9iamVjdC1pbi1jYW52YXMt
ZXhwZWN0ZWQuY2hlY2tzdW0KKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2Zhc3QvY2Fu
dmFzL2ltYWdlLW9iamVjdC1pbi1jYW52YXMtZXhwZWN0ZWQuY2hlY2tzdW0KQEAgLTEgKzEgQEAK
LTU2N2VjNmYyNjc5ZWI1MjBlOGJjYjRkYTBmYzFmNmFlClwgTm8gbmV3bGluZSBhdCBlbmQgb2Yg
ZmlsZQorNWU1ZWYwYzVmNTJiYWFmZGU1ZjYxNDg1NjQwZWJlNmYKXCBObyBuZXdsaW5lIGF0IGVu
ZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvZmFzdC9jYW52
YXMvaW1hZ2Utb2JqZWN0LWluLWNhbnZhcy1leHBlY3RlZC5wbmcgYi9MYXlvdXRUZXN0cy9wbGF0
Zm9ybS9tYWMvZmFzdC9jYW52YXMvaW1hZ2Utb2JqZWN0LWluLWNhbnZhcy1leHBlY3RlZC5wbmcK
aW5kZXggYzBhYjMzMi4uMjE1NThhMCAxMDA2NDQKQmluYXJ5IGZpbGVzIGEvTGF5b3V0VGVzdHMv
cGxhdGZvcm0vbWFjL2Zhc3QvY2FudmFzL2ltYWdlLW9iamVjdC1pbi1jYW52YXMtZXhwZWN0ZWQu
cG5nIGFuZCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9mYXN0L2NhbnZhcy9pbWFnZS1vYmpl
Y3QtaW4tY2FudmFzLWV4cGVjdGVkLnBuZyBkaWZmZXIKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L3BsYXRmb3JtL21hYy9mYXN0L2NhbnZhcy9pbWFnZS1wYXR0ZXJuLXJvdGF0ZS1leHBlY3RlZC5j
aGVja3N1bSBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9mYXN0L2NhbnZhcy9pbWFnZS1wYXR0
ZXJuLXJvdGF0ZS1leHBlY3RlZC5jaGVja3N1bQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwLi4wMzdkZDQ4Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0v
bWFjL2Zhc3QvY2FudmFzL2ltYWdlLXBhdHRlcm4tcm90YXRlLWV4cGVjdGVkLmNoZWNrc3VtCkBA
IC0wLDAgKzEgQEAKK2YxMzk5NWVhMmI0YjUzZGQzOWViZDVmNDFkZTkxY2JjClwgTm8gbmV3bGlu
ZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2Zh
c3QvY2FudmFzL2ltYWdlLXBhdHRlcm4tcm90YXRlLWV4cGVjdGVkLnBuZyBiL0xheW91dFRlc3Rz
L3BsYXRmb3JtL21hYy9mYXN0L2NhbnZhcy9pbWFnZS1wYXR0ZXJuLXJvdGF0ZS1leHBlY3RlZC5w
bmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDA2MTM3ZgpCaW5hcnkgZmls
ZXMgL2Rldi9udWxsIGFuZCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9mYXN0L2NhbnZhcy9p
bWFnZS1wYXR0ZXJuLXJvdGF0ZS1leHBlY3RlZC5wbmcgZGlmZmVyCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9wbGF0Zm9ybS9tYWMvZmFzdC9jYW52YXMvaW1hZ2UtcGF0dGVybi1yb3RhdGUtZXhw
ZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2Zhc3QvY2FudmFzL2ltYWdlLXBh
dHRlcm4tcm90YXRlLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwLi5mMTNhYWFiCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFj
L2Zhc3QvY2FudmFzL2ltYWdlLXBhdHRlcm4tcm90YXRlLWV4cGVjdGVkLnR4dApAQCAtMCwwICsx
LDQxIEBACitsYXllciBhdCAoMCwwKSBzaXplIDgwMHg2MDAKKyAgUmVuZGVyVmlldyBhdCAoMCww
KSBzaXplIDgwMHg2MDAKK2xheWVyIGF0ICgwLDApIHNpemUgODAweDgyCisgIFJlbmRlckJsb2Nr
IHtIVE1MfSBhdCAoMCwwKSBzaXplIDgwMHg4MgorICAgIFJlbmRlckJvZHkge0JPRFl9IGF0ICg4
LDgpIHNpemUgNzg0eDY2CisgICAgICBSZW5kZXJCbG9jayAoYW5vbnltb3VzKSBhdCAoMCwwKSBz
aXplIDc4NHgxOAorICAgICAgICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDAsMCkgc2l6ZSAzMjd4
MTgKKyAgICAgICAgICB0ZXh0IHJ1biBhdCAoMCwwKSB3aWR0aCAzMjc6ICJZb3Ugc2hvdWxkIHNl
ZSAoYWxtb3N0KSBzdHJhaWdodCB2ZXJ0aWNhbCBsaW5lIGJlbG93LiIKKyAgICAgIFJlbmRlckJs
b2NrIHtESVZ9IGF0ICgwLDE4KSBzaXplIDc4NHg0OAorICAgICAgICBSZW5kZXJCbG9jayB7RElW
fSBhdCAoMCwwKSBzaXplIDc4NHgzCisgICAgICAgICAgUmVuZGVySFRNTENhbnZhcyB7Q0FOVkFT
fSBhdCAoMCwwKSBzaXplIDN4MworICAgICAgICBSZW5kZXJCbG9jayB7RElWfSBhdCAoMCwzKSBz
aXplIDc4NHgzCisgICAgICAgICAgUmVuZGVySFRNTENhbnZhcyB7Q0FOVkFTfSBhdCAoMCwwKSBz
aXplIDN4MworICAgICAgICBSZW5kZXJCbG9jayB7RElWfSBhdCAoMCw2KSBzaXplIDc4NHgzCisg
ICAgICAgICAgUmVuZGVySFRNTENhbnZhcyB7Q0FOVkFTfSBhdCAoMCwwKSBzaXplIDN4MworICAg
ICAgICBSZW5kZXJCbG9jayB7RElWfSBhdCAoMCw5KSBzaXplIDc4NHgzCisgICAgICAgICAgUmVu
ZGVySFRNTENhbnZhcyB7Q0FOVkFTfSBhdCAoMCwwKSBzaXplIDN4MworICAgICAgICBSZW5kZXJC
bG9jayB7RElWfSBhdCAoMCwxMikgc2l6ZSA3ODR4MworICAgICAgICAgIFJlbmRlckhUTUxDYW52
YXMge0NBTlZBU30gYXQgKDAsMCkgc2l6ZSAzeDMKKyAgICAgICAgUmVuZGVyQmxvY2sge0RJVn0g
YXQgKDAsMTUpIHNpemUgNzg0eDMKKyAgICAgICAgICBSZW5kZXJIVE1MQ2FudmFzIHtDQU5WQVN9
IGF0ICgwLDApIHNpemUgM3gzCisgICAgICAgIFJlbmRlckJsb2NrIHtESVZ9IGF0ICgwLDE4KSBz
aXplIDc4NHgzCisgICAgICAgICAgUmVuZGVySFRNTENhbnZhcyB7Q0FOVkFTfSBhdCAoMCwwKSBz
aXplIDN4MworICAgICAgICBSZW5kZXJCbG9jayB7RElWfSBhdCAoMCwyMSkgc2l6ZSA3ODR4Mwor
ICAgICAgICAgIFJlbmRlckhUTUxDYW52YXMge0NBTlZBU30gYXQgKDAsMCkgc2l6ZSAzeDMKKyAg
ICAgICAgUmVuZGVyQmxvY2sge0RJVn0gYXQgKDAsMjQpIHNpemUgNzg0eDMKKyAgICAgICAgICBS
ZW5kZXJIVE1MQ2FudmFzIHtDQU5WQVN9IGF0ICgwLDApIHNpemUgM3gzCisgICAgICAgIFJlbmRl
ckJsb2NrIHtESVZ9IGF0ICgwLDI3KSBzaXplIDc4NHgzCisgICAgICAgICAgUmVuZGVySFRNTENh
bnZhcyB7Q0FOVkFTfSBhdCAoMCwwKSBzaXplIDN4MworICAgICAgICBSZW5kZXJCbG9jayB7RElW
fSBhdCAoMCwzMCkgc2l6ZSA3ODR4MworICAgICAgICAgIFJlbmRlckhUTUxDYW52YXMge0NBTlZB
U30gYXQgKDAsMCkgc2l6ZSAzeDMKKyAgICAgICAgUmVuZGVyQmxvY2sge0RJVn0gYXQgKDAsMzMp
IHNpemUgNzg0eDMKKyAgICAgICAgICBSZW5kZXJIVE1MQ2FudmFzIHtDQU5WQVN9IGF0ICgwLDAp
IHNpemUgM3gzCisgICAgICAgIFJlbmRlckJsb2NrIHtESVZ9IGF0ICgwLDM2KSBzaXplIDc4NHgz
CisgICAgICAgICAgUmVuZGVySFRNTENhbnZhcyB7Q0FOVkFTfSBhdCAoMCwwKSBzaXplIDN4Mwor
ICAgICAgICBSZW5kZXJCbG9jayB7RElWfSBhdCAoMCwzOSkgc2l6ZSA3ODR4MworICAgICAgICAg
IFJlbmRlckhUTUxDYW52YXMge0NBTlZBU30gYXQgKDAsMCkgc2l6ZSAzeDMKKyAgICAgICAgUmVu
ZGVyQmxvY2sge0RJVn0gYXQgKDAsNDIpIHNpemUgNzg0eDMKKyAgICAgICAgICBSZW5kZXJIVE1M
Q2FudmFzIHtDQU5WQVN9IGF0ICgwLDApIHNpemUgM3gzCisgICAgICAgIFJlbmRlckJsb2NrIHtE
SVZ9IGF0ICgwLDQ1KSBzaXplIDc4NHgzCisgICAgICAgICAgUmVuZGVySFRNTENhbnZhcyB7Q0FO
VkFTfSBhdCAoMCwwKSBzaXplIDN4MwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9DaGFuZ2VMb2cgYi9X
ZWJDb3JlL0NoYW5nZUxvZwppbmRleCAzYjE4Y2FiLi4wMDBiZWJhIDEwMDY0NAotLS0gYS9XZWJD
b3JlL0NoYW5nZUxvZworKysgYi9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIxIEBACisy
MDA5LTA3LTE2ICBTaGluaWNoaXJvIEhhbWFqaSAgPGhhbWFqaUBjaHJvbWl1bS5vcmc+CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQ2FudmFzOiByb3Rh
dGlvbiBvZiAnbm8tcmVwZWF0JyBwYXR0ZXJuIHN0aWxsIGhhcyBzbWFsbCBlcnJvcgorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjY3NDkKKworICAgICAg
ICBVc2UgKDE8PDIzKS8yIGFzIHN0ZXBzIG9mIG5vLXJlcGVhdCBwYXR0ZXJuIHRvIG1ha2UgdGhl
IGVycm9yIGxlc3MKKyAgICAgICAgdGhhbiAwLjUuICBUaGUgcHJldmlvdXMgdmFsdWUgbWF5IGNh
dXNlIDEgcGl4ZWwgZXJyb3JzLgorCisgICAgICAgIEFkZCBhbm90aGVyIHRlc3QgdG8gc2hvdyB0
aGlzIGJ1ZyBjbGVhcmx5LgorICAgICAgICBBbHNvIGFkZCBwbmcgZXhwZWN0ZWQgaW1hZ2Ugd2hp
Y2ggd2FzIG1pc3NpbmcgaW4gdGhlIHByZXZpb3VzIHBhdGNoLgorCisgICAgICAgIFRlc3Q6IGZh
c3QvY2FudmFzL2ltYWdlLXBhdHRlcm4tcm90YXRlLmh0bWwKKworICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2NnL1BhdHRlcm5DRy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQYXR0ZXJuOjpj
cmVhdGVQbGF0Zm9ybVBhdHRlcm4pOgorCiAyMDA5LTA3LTE1ICBTaGluaWNoaXJvIEhhbWFqaSAg
PGhhbWFqaUBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRXJpYyBTZWlkZWwu
CmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL1BhdHRlcm5DRy5jcHAg
Yi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL1BhdHRlcm5DRy5jcHAKaW5kZXggZjk4NWE3
OC4uNjM2MjhmNCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9QYXR0
ZXJuQ0cuY3BwCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvUGF0dGVybkNHLmNw
cApAQCAtNjMsMTAgKzYzLDkgQEAgQ0dQYXR0ZXJuUmVmIFBhdHRlcm46OmNyZWF0ZVBsYXRmb3Jt
UGF0dGVybihjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgdXNlclNwYWMKICAgICAvLyByZXN1
bHQgaW4gbm90aGluZyBiZWluZyByZW5kZXJlZC4KICAgICAvLyBJTlRfTUFYIGlzIGFsbW9zdCBj
b3JyZWN0LCBidXQgdGhlcmUgc2VlbXMgdG8gYmUgc29tZSBudW1iZXIgd3JhcHBpbmcgb2NjdXJp
bmcgbWFraW5nIHRoZSBmaWxsCiAgICAgLy8gcGF0dGVybiBpcyBub3QgZmlsbGVkIGNvcnJlY3Rs
eS4KLSAgICAvLyBUbyBtYWtlIGVycm9yIG9mIGZsb2F0aW5nIHBvaW50IGxlc3MgdGhhbiAxLCB3
ZSBuZWVkIHRvIHVzZSBhIGJpZyBudW1iZXIgd2hpY2ggaXMgc21hbGxlciB0aGFuIHRoZQotICAg
IC8vIG51bWJlciBvZiBtYW50aXNzYSBvZiBmbG9hdCAoMSA8PCAyMykuCi0gICAgQ0dGbG9hdCB4
U3RlcCA9IG1fcmVwZWF0WCA/IHRpbGVSZWN0LndpZHRoKCkgOiAoKDEgPDwgMjMpIC0gMSk7Ci0g
ICAgQ0dGbG9hdCB5U3RlcCA9IG1fcmVwZWF0WSA/IHRpbGVSZWN0LmhlaWdodCgpIDogKCgxIDw8
IDIzKSAtIDEpOworICAgIC8vIFRvIG1ha2UgZXJyb3Igb2YgZmxvYXRpbmcgcG9pbnQgbGVzcyB0
aGFuIDAuNSwgd2UgdXNlIHRoZSBoYWxmIG9mIHRoZSBudW1iZXIgb2YgbWFudGlzc2Egb2YgZmxv
YXQgKDEgPDwgMjIpLgorICAgIENHRmxvYXQgeFN0ZXAgPSBtX3JlcGVhdFggPyB0aWxlUmVjdC53
aWR0aCgpIDogKDEgPDwgMjIpOworICAgIENHRmxvYXQgeVN0ZXAgPSBtX3JlcGVhdFkgPyB0aWxl
UmVjdC5oZWlnaHQoKSA6ICgxIDw8IDIyKTsKIAogICAgIC8vIFRoZSBwYXR0ZXJuIHdpbGwgcmVs
ZWFzZSB0aGUgdGlsZSB3aGVuIGl0J3MgZG9uZSByZW5kZXJpbmcgaW4gcGF0dGVyblJlbGVhc2VD
YWxsYmFjawogICAgIHRpbGVJbWFnZSgpLT5yZWYoKTs=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>32920</attachid>
            <date>2009-07-17 02:14:46 -0700</date>
            <delta_ts>2009-07-17 02:19:10 -0700</delta_ts>
            <desc>Patch v1</desc>
            <filename>bug-27363-20090717181444.patch</filename>
            <type>text/plain</type>
            <size>14206</size>
            <attacher name="Shinichiro Hamaji">hamaji</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0NoYW5nZUxvZyBiL1dlYktpdFRvb2xzL0NoYW5nZUxv
ZwppbmRleCA0OTM1MzVjLi4yYWM5MmM0IDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9DaGFuZ2VM
b2cKKysrIGIvV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTggQEAKKzIwMDktMDct
MTcgIFNoaW5pY2hpcm8gSGFtYWppICA8aGFtYWppQGNocm9taXVtLm9yZz4KKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgYSBwYXJzZXIgb2YgcGF0
Y2hlcyBmb3IgbGludGVyLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MjczNjMKKworICAgICAgICBOb3csIHRoZSBwYXJzZXIgZG9lc24ndCBoYXZlIGZ1
bGwgaW5mb3JtYXRpb24gb2YgcGF0Y2hlcy4KKyAgICAgICAgSXQgb25seSBrbm93cyB0aGUgbGlu
ZSBudW1iZXIgYW5kIGxpbmUgY29udGVudHMgb2YgZWFjaCBsaW5lcyBpbgorICAgICAgICBjaHVu
a3Mgb2YgYSBwYXRjaC4gIEluIGNhc2UgdGhlIGxpbmUgaXMgbmV3bHkgYWRkZWQgb3IgZGVsZXRl
ZCwgaXQKKyAgICAgICAgc2V0cyB6ZXJvIGFzIHRoZSBsaW5lIG51bWJlci4KKworICAgICAgICAq
IFNjcmlwdHMvbW9kdWxlcy9kaWZmX3BhcnNlci5weTogQWRkZWQuCisgICAgICAgICogU2NyaXB0
cy9tb2R1bGVzL2RpZmZfcGFyc2VyX3VuaXR0ZXN0LnB5OiBBZGRlZC4KKwogMjAwOS0wNy0xNSAg
RGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CiAKICAgICAgICAgKiBTY3JpcHRzL2RvLXdl
YmNvcmUtcmVuYW1lOiBDaGVjayBpbiB0aGUgdmVyc2lvbiB1c2VkIHRvCmRpZmYgLS1naXQgYS9X
ZWJLaXRUb29scy9TY3JpcHRzL21vZHVsZXMvZGlmZl9wYXJzZXIucHkgYi9XZWJLaXRUb29scy9T
Y3JpcHRzL21vZHVsZXMvZGlmZl9wYXJzZXIucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMC4uNDllODY1YQotLS0gL2Rldi9udWxsCisrKyBiL1dlYktpdFRvb2xzL1NjcmlwdHMv
bW9kdWxlcy9kaWZmX3BhcnNlci5weQpAQCAtMCwwICsxLDE3OSBAQAorIyBDb3B5cmlnaHQgKEMp
IDIwMDkgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisj
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucyBhcmUKKyMgbWV0OgorIworIyAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgICAgKiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisj
IGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIKKyMgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZQorIyBkaXN0cmlidXRpb24uCisjICAgICogTmVpdGhlciB0
aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworIyBjb250cmlidXRv
cnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJv
bQorIyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNz
aW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9M
REVSUyBBTkQgQ09OVFJJQlVUT1JTCisjICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisjIExJTUlURUQgVE8sIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorIyBBIFBB
UlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENP
UFlSSUdIVAorIyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyMgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorIyBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyMgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZCisjIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisjIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisK
KyIiIldlYktpdCdzIFB5dGhvbiBtb2R1bGUgZm9yIGludGVyYWN0aW5nIHdpdGggcGF0Y2hlcy4i
IiIKKworaW1wb3J0IGxvZ2dpbmcKK2ltcG9ydCByZQorCisKK19yZWdleHBfY29tcGlsZV9jYWNo
ZSA9IHt9CisKKworZGVmIG1hdGNoKHBhdHRlcm4sIHN0cmluZyk6CisgICAgIiIiTWF0Y2hlcyB0
aGUgc3RyaW5nIHdpdGggdGhlIHBhdHRlcm4sIGNhY2hpbmcgdGhlIGNvbXBpbGVkIHJlZ2V4cC4i
IiIKKyAgICAjIFRoZSByZWdleHAgY29tcGlsYXRpb24gY2FjaGluZyBpcyBpbmxpbmVkIGluIGJv
dGggbWF0Y2ggYW5kIHNlYXJjaCBmb3IKKyAgICAjIHBlcmZvcm1hbmNlIHJlYXNvbnM7IGZhY3Rv
cmluZyBpdCBvdXQgaW50byBhIHNlcGFyYXRlIGZ1bmN0aW9uIHR1cm5zIG91dAorICAgICMgdG8g
YmUgbm90aWNlYWJseSBleHBlbnNpdmUuCisgICAgaWYgbm90IHBhdHRlcm4gaW4gX3JlZ2V4cF9j
b21waWxlX2NhY2hlOgorICAgICAgICBfcmVnZXhwX2NvbXBpbGVfY2FjaGVbcGF0dGVybl0gPSBy
ZS5jb21waWxlKHBhdHRlcm4pCisgICAgcmV0dXJuIF9yZWdleHBfY29tcGlsZV9jYWNoZVtwYXR0
ZXJuXS5tYXRjaChzdHJpbmcpCisKKworZGVmIGdpdF9kaWZmX3RvX3N2bl9kaWZmKGxpbmUpOgor
ICAgICIiIkNvbnZlcnRzIGEgZ2l0IGZvcm1hdHRlZCBkaWZmIGxpbmUgdG8gYSBzdm4gZm9ybWF0
dGVkIGxpbmUuCisKKyAgICBBcmdzOgorICAgICAgbGluZTogQSBzdHJpbmcgcmVwcmVzZW50aW5n
IGEgbGluZSBvZiB0aGUgZGlmZi4KKyAgICAiIiIKKyAgICBjb252ZXJzaW9uX3BhdHRlcm5zID0g
KCgiXmRpZmYgLS1naXQgYS8oLispIGIvKD9QPEZpbGVQYXRoPi4rKSIsIGxhbWJkYSBtYXRjaGVk
OiAiSW5kZXg6ICIgKyBtYXRjaGVkLmdyb3VwKCdGaWxlUGF0aCcpICsgIlxuIiksCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAoIl5uZXcgZmlsZS4qIiwgbGFtYmRhIG1hdGNoZWQ6ICJcbiIp
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgKCJeaW5kZXggWzAtOWEtZl17N31cLlwuWzAt
OWEtZl17N30gWzAtOV17Nn0iLCBsYW1iZGEgbWF0Y2hlZDogIj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiIpLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgKCJeLS0tIGEvKD9QPEZpbGVQYXRoPi4rKSIsIGxhbWJk
YSBtYXRjaGVkOiAiLS0tICIgKyBtYXRjaGVkLmdyb3VwKCdGaWxlUGF0aCcpICsgIlxuIiksCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAoIl5cK1wrXCsgYi8oP1A8RmlsZVBhdGg+LispIiwg
bGFtYmRhIG1hdGNoZWQ6ICIrKysgIiArIG1hdGNoZWQuZ3JvdXAoJ0ZpbGVQYXRoJykgKyAiXG4i
KSkKKworICAgIGZvciBwYXR0ZXJuLCBjb252ZXJzaW9uIGluIGNvbnZlcnNpb25fcGF0dGVybnM6
CisgICAgICAgIG1hdGNoZWQgPSBtYXRjaChwYXR0ZXJuLCBsaW5lKQorICAgICAgICBpZiBtYXRj
aGVkOgorICAgICAgICAgICAgcmV0dXJuIGNvbnZlcnNpb24obWF0Y2hlZCkKKyAgICByZXR1cm4g
bGluZQorCisKK2RlZiBnZXRfZGlmZl9jb252ZXJ0ZXIoZmlyc3RfZGlmZl9saW5lKToKKyAgICAi
IiJHZXRzIGEgY29udmVydGVyIGZ1bmN0aW9uIG9mIGRpZmYgbGluZXMuCisKKyAgICBBcmdzOgor
ICAgICAgZmlyc3RfZGlmZl9saW5lOiBUaGUgZmlyc3QgZmlsZW5hbWUgbGluZSBvZiBhIGRpZmYg
ZmlsZS4KKyAgICAgICAgICAgICAgICAgICAgICAgSWYgdGhpcyBsaW5lIGlzIGdpdCBmb3JtYXR0
ZWQsIHdlJ2xsIHJldHVybiBhCisgICAgICAgICAgICAgICAgICAgICAgIGNvbnZlcnRlciBmcm9t
IGdpdCB0byBTVk4uCisgICAgIiIiCisgICAgaWYgbWF0Y2gociJeZGlmZiAtLWdpdCBhLyIsIGZp
cnN0X2RpZmZfbGluZSk6CisgICAgICAgIHJldHVybiBnaXRfZGlmZl90b19zdm5fZGlmZgorICAg
IHJldHVybiBsYW1iZGEgaW5wdXQ6IGlucHV0CisKKworIyBGSVhNRTogV2UgbWF5IG5lZWQgbW9y
ZSBzdGF0ZXMgaWYgd2Ugd2FudCB0byBjaGVjayB0aGUgaW50ZWdyaXR5IG9mIGlucHV0IHBhdGNo
ZXMuCitfSU5JVElBTF9TVEFURSA9IDEKK19ERUNMQVJFRF9GSUxFX1BBVEggPSAyCitfUFJPQ0VT
U0lOR19DSFVOSyA9IDMKKworCitjbGFzcyBEaWZmRmlsZToKKyAgICAiIiJIb2xkIGluZm9ybWF0
aW9uIG9mIGEgZmlsZSBpbiBhIHBhdGNoLgorCisgICAgVGhlIGZpZWxkICJsaW5lcyIgaXMgYSBs
aXN0IHdoaWNoIGNvbnRhaW5zIHR1cGxlcyB3aGljaCByZXByZXNlbnQKKyAgICAgICAob2xkX2xp
bmVfbnVtYmVyLCBuZXdfbGluZV9udW1iZXIsIGxpbmVfc3RyaW5nKQorICAgIElmIG9sZF9saW5l
X251bWJlciBpcyB6ZXJvLCBpdCBtZWFucyB0aGlzIGxpbmUgaXMgbmV3bHkgYWRkZWQuCisgICAg
SWYgbmV3X2xpbmVfbnVtYmVyIGlzIHplcm8sIGl0IG1lYW5zIHRoaXMgbGluZSBpcyBkZWxldGVk
LgorICAgICIiIgorICAgICMgRklYTUU6IFdlIG9ubHkgaGF2ZSBpbmZvcm1hdGlvbiBvZiBsaW5l
cyBpbiBjaHVua3MuIE5lZWQgbW9yZSBpbmZvPworCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIGZp
bGVuYW1lKToKKyAgICAgICAgc2VsZi5maWxlbmFtZSA9IGZpbGVuYW1lCisgICAgICAgIHNlbGYu
bGluZXMgPSBbXQorCisgICAgZGVmIGFkZF9uZXdfbGluZShzZWxmLCBsaW5lX251bWJlciwgbGlu
ZSk6CisgICAgICAgICIiIkFkZHMgYSBuZXdseSBhZGRlZCBsaW5lLiIiIgorICAgICAgICBzZWxm
LmxpbmVzLmFwcGVuZCgoMCwgbGluZV9udW1iZXIsIGxpbmUpKQorCisgICAgZGVmIGFkZF9vbGRf
bGluZShzZWxmLCBsaW5lX251bWJlciwgbGluZSk6CisgICAgICAgICIiIkFkZHMgYSBkZWxldGVk
IGxpbmUuIiIiCisgICAgICAgIHNlbGYubGluZXMuYXBwZW5kKChsaW5lX251bWJlciwgMCwgbGlu
ZSkpCisKKyAgICBkZWYgYWRkX3VuY2hhbmdlZF9saW5lKHNlbGYsIG9sZF9saW5lX251bWJlciwg
bmV3X2xpbmVfbnVtYmVyLCBsaW5lKToKKyAgICAgICAgIiIiQWRkcyBhbiB1bmNoYW5nZWQgbGlu
ZS4iIiIKKyAgICAgICAgc2VsZi5saW5lcy5hcHBlbmQoKG9sZF9saW5lX251bWJlciwgbmV3X2xp
bmVfbnVtYmVyLCBsaW5lKSkKKworCitjbGFzcyBEaWZmUGFyc2VyOgorICAgICIiIkEgcGFyc2Vy
IGZvciBhIHBhdGNoIGZpbGUuCisKKyAgICBUaGUgZmllbGQgImZpbGVzIiBpcyBhIGRpY3Qgd2hv
c2Uga2V5IGlzIHRoZSBmaWxlbmFtZSBhbmQgdmFsdWUgaXMKKyAgICBhIERpZmZGaWxlIG9iamVj
dC4KKyAgICAiIiIKKworICAgIGRlZiBfX2luaXRfXyhzZWxmLCBkaWZmX2lucHV0KToKKyAgICAg
ICAgIiIiUGFyc2VzIGEgZGlmZi4KKworICAgICAgICBBcmdzOgorICAgICAgICAgIGRpZmZfaW5w
dXQ6IEFuIGl0ZXJhdGFibGUgb2JqZWN0LgorICAgICAgICAiIiIKKyAgICAgICAgc3RhdGUgPSBf
SU5JVElBTF9TVEFURQorICAgICAgICBmaXJzdF9saW5lID0gVHJ1ZQorCisgICAgICAgIHNlbGYu
ZmlsZXMgPSB7fQorICAgICAgICBjdXJyZW50X2ZpbGUgPSBOb25lCisgICAgICAgIGZvciBsaW5l
IGluIGRpZmZfaW5wdXQ6CisgICAgICAgICAgICBpZiBzdGF0ZSA9PSBfSU5JVElBTF9TVEFURToK
KyAgICAgICAgICAgICAgICB0cmFuc2Zvcm1fbGluZSA9IGdldF9kaWZmX2NvbnZlcnRlcihsaW5l
KQorICAgICAgICAgICAgbGluZSA9IHRyYW5zZm9ybV9saW5lKGxpbmUpCisKKyAgICAgICAgICAg
IGZpbGVfZGVjbGFyYXRpb24gPSBtYXRjaChyIl5JbmRleDogKD9QPEZpbGVQYXRoPi4rKSIsIGxp
bmUpCisgICAgICAgICAgICBpZiBmaWxlX2RlY2xhcmF0aW9uOgorICAgICAgICAgICAgICAgIGZp
bGVuYW1lID0gZmlsZV9kZWNsYXJhdGlvbi5ncm91cCgnRmlsZVBhdGgnKQorICAgICAgICAgICAg
ICAgIGN1cnJlbnRfZmlsZSA9IERpZmZGaWxlKGZpbGVuYW1lKQorICAgICAgICAgICAgICAgIHNl
bGYuZmlsZXNbZmlsZW5hbWVdID0gY3VycmVudF9maWxlCisgICAgICAgICAgICAgICAgc3RhdGUg
PSBfREVDTEFSRURfRklMRV9QQVRICisgICAgICAgICAgICAgICAgY29udGludWUKKworICAgICAg
ICAgICAgbGluZXNfY2hhbmdlZCA9IG1hdGNoKHIiXkBAIC0oP1A8T2xkU3RhcnRMaW5lPlxkKyko
LFxkKyk/IFwrKD9QPE5ld1N0YXJ0TGluZT5cZCspKCxcZCspPyBAQCIsIGxpbmUpCisgICAgICAg
ICAgICBpZiBsaW5lc19jaGFuZ2VkOgorICAgICAgICAgICAgICAgIGlmIHN0YXRlICE9IF9ERUNM
QVJFRF9GSUxFX1BBVEggYW5kIHN0YXRlICE9IF9QUk9DRVNTSU5HX0NIVU5LOgorICAgICAgICAg
ICAgICAgICAgICBsb2dnaW5nLmVycm9yKCdVbmV4cGVjdGVkIGxpbmUgY2hhbmdlIHdpdGhvdXQg
ZmlsZSBwYXRoIGRlY2xhcmF0aW9uOiAlcicgJSBsaW5lKQorICAgICAgICAgICAgICAgIG9sZF9k
aWZmX2xpbmUgPSBpbnQobGluZXNfY2hhbmdlZC5ncm91cCgnT2xkU3RhcnRMaW5lJykpCisgICAg
ICAgICAgICAgICAgbmV3X2RpZmZfbGluZSA9IGludChsaW5lc19jaGFuZ2VkLmdyb3VwKCdOZXdT
dGFydExpbmUnKSkKKyAgICAgICAgICAgICAgICBzdGF0ZSA9IF9QUk9DRVNTSU5HX0NIVU5LCisg
ICAgICAgICAgICAgICAgY29udGludWUKKworICAgICAgICAgICAgaWYgc3RhdGUgPT0gX1BST0NF
U1NJTkdfQ0hVTks6CisgICAgICAgICAgICAgICAgaWYgbGluZS5zdGFydHN3aXRoKCcrJyk6Cisg
ICAgICAgICAgICAgICAgICAgIGN1cnJlbnRfZmlsZS5hZGRfbmV3X2xpbmUobmV3X2RpZmZfbGlu
ZSwgbGluZVsxOl0pCisgICAgICAgICAgICAgICAgICAgIG5ld19kaWZmX2xpbmUgKz0gMQorICAg
ICAgICAgICAgICAgIGVsaWYgbGluZS5zdGFydHN3aXRoKCctJyk6CisgICAgICAgICAgICAgICAg
ICAgIGN1cnJlbnRfZmlsZS5hZGRfb2xkX2xpbmUob2xkX2RpZmZfbGluZSwgbGluZVsxOl0pCisg
ICAgICAgICAgICAgICAgICAgIG9sZF9kaWZmX2xpbmUgKz0gMQorICAgICAgICAgICAgICAgIGVs
aWYgbGluZS5zdGFydHN3aXRoKCcgJyk6CisgICAgICAgICAgICAgICAgICAgIGN1cnJlbnRfZmls
ZS5hZGRfdW5jaGFuZ2VkX2xpbmUob2xkX2RpZmZfbGluZSwgbmV3X2RpZmZfbGluZSwgbGluZVsx
Ol0pCisgICAgICAgICAgICAgICAgICAgIG9sZF9kaWZmX2xpbmUgKz0gMQorICAgICAgICAgICAg
ICAgICAgICBuZXdfZGlmZl9saW5lICs9IDEKKyAgICAgICAgICAgICAgICBlbGlmIGxpbmUgPT0g
J1xcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGVcbic6CisgICAgICAgICAgICAgICAgICAgICMg
Tm90aGluZyB0byBkby4gIFdlIG1heSBzdGlsbCBoYXZlIHNvbWUgYWRkZWQgbGluZXMuCisgICAg
ICAgICAgICAgICAgICAgICMgRklYTUU6IENoZWNrIGlmIHRoZSBmb2xsb3dpbmcgbGluZXMgb25s
eSBjb250YWluIGFkZGVkIGxpbmVzPworICAgICAgICAgICAgICAgICAgICBwYXNzCisgICAgICAg
ICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgbG9nZ2luZy5lcnJvcignVW5leHBl
Y3RlZCBkaWZmIGZvcm1hdCB3aGVuIHBhcnNpbmcgYSBjaHVuazogJXInICUgbGluZSkKKworICAg
ICAgICAgICAgIyBUaGUgZm9sbG93aW5nIGtpbmRzIG9mIGxpbmVzIHdpbGwgYmUgaWdub3JlZCBz
aWxlbnRseToKKyAgICAgICAgICAgICMKKyAgICAgICAgICAgICMgLSBMaW5lcyBnaXQtZGlmZi10
cmVlIHByb2R1Y2VzIGJlZm9yZSBmaWxlbmFtZQorICAgICAgICAgICAgIyAgIGRlY2xhcmF0aW9u
LCB3aGljaCBjb250YWlucyBhIGhhc2ggb2YgYSBwYXRjaC4KKyAgICAgICAgICAgICMgLSAnPScq
NjcgbGluZXMgYmV0d2VlbiBmaWxlbmFtZSBkZWNsYXJhdGlvbiBhbmQgZmlsZQorICAgICAgICAg
ICAgIyAgIHJldmlzaW9uIGRlY2xhcmF0aW9uLgorICAgICAgICAgICAgIyAtIExpbmVzIGZvciBy
ZXZpc2lvbiBkZWNsYXJhdGlvbi4KKyAgICAgICAgICAgICMKKyAgICAgICAgICAgICMgRklYTUU6
IE5lZWQgdGhlc2UgaW5mbz8KZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL1NjcmlwdHMvbW9kdWxl
cy9kaWZmX3BhcnNlcl91bml0dGVzdC5weSBiL1dlYktpdFRvb2xzL1NjcmlwdHMvbW9kdWxlcy9k
aWZmX3BhcnNlcl91bml0dGVzdC5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
Li4xOTM5ZTU0Ci0tLSAvZGV2L251bGwKKysrIGIvV2ViS2l0VG9vbHMvU2NyaXB0cy9tb2R1bGVz
L2RpZmZfcGFyc2VyX3VuaXR0ZXN0LnB5CkBAIC0wLDAgKzEsMTE4IEBACisjIENvcHlyaWdodCAo
QykgMjAwOSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zIGFyZQorIyBtZXQ6CisjCisjICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAgICAq
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUK
KyMgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lcgorIyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisjIGRpc3RyaWJ1dGlvbi4KKyMgICAgKiBOZWl0aGVy
IHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisjIGNvbnRyaWJ1
dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBm
cm9tCisjIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1p
c3Npb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBI
T0xERVJTIEFORCBDT05UUklCVVRPUlMKKyMgIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyMgTElNSVRFRCBUTywgVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisjIEEg
UEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUg
Q09QWVJJR0hUCisjIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLAorIyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisjIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorIyBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkKKyMgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyMgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KworaW1wb3J0IHVuaXR0ZXN0CitpbXBvcnQgZGlmZl9wYXJzZXIKKworCitjbGFzcyBEaWZmUGFy
c2VyVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CisKKyAgICBfUEFUQ0ggPSAnJydkaWZmIC0tZ2l0
IGEvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVGbGV4aWJsZUJveERhdGEuaCBiL1dlYkNv
cmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlRmxleGlibGVCb3hEYXRhLmgKK2luZGV4IGY1ZDVlNzQu
LjNiNmFhOTIgMTAwNjQ0CistLS0gYS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZUZsZXhp
YmxlQm94RGF0YS5oCisrKysgYi9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZUZsZXhpYmxl
Qm94RGF0YS5oCitAQCAtNDcsNyArNDcsNiBAQCBwdWJsaWM6CisgCisgICAgIHVuc2lnbmVkIGFs
aWduIDogMzsgLy8gRUJveEFsaWdubWVudAorICAgICB1bnNpZ25lZCBwYWNrOiAzOyAvLyBFQm94
QWxpZ25tZW50CistICAgIHVuc2lnbmVkIG9yaWVudDogMTsgLy8gRUJveE9yaWVudAorICAgICB1
bnNpZ25lZCBsaW5lcyA6IDE7IC8vIEVCb3hMaW5lcworIAorIHByaXZhdGU6CitkaWZmIC0tZ2l0
IGEvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVSYXJlSW5oZXJpdGVkRGF0YS5jcHAgYi9X
ZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZVJhcmVJbmhlcml0ZWREYXRhLmNwcAoraW5kZXgg
Y2UyMTcyMC4uMzI0OTI5ZSAxMDA2NDQKKy0tLSBhL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0
eWxlUmFyZUluaGVyaXRlZERhdGEuY3BwCisrKysgYi9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9T
dHlsZVJhcmVJbmhlcml0ZWREYXRhLmNwcAorQEAgLTM5LDYgKzM5LDcgQEAgU3R5bGVSYXJlSW5o
ZXJpdGVkRGF0YTo6U3R5bGVSYXJlSW5oZXJpdGVkRGF0YSgpCisgICAgICwgdGV4dFNpemVBZGp1
c3QoUmVuZGVyU3R5bGU6OmluaXRpYWxUZXh0U2l6ZUFkanVzdCgpKQorICAgICAsIHJlc2l6ZShS
ZW5kZXJTdHlsZTo6aW5pdGlhbFJlc2l6ZSgpKQorICAgICAsIHVzZXJTZWxlY3QoUmVuZGVyU3R5
bGU6OmluaXRpYWxVc2VyU2VsZWN0KCkpCisrICAgICwgYm94T3JpZW50KFJlbmRlclN0eWxlOjpp
bml0aWFsQm94T3JpZW50KCkpCisgeworIH0KKyAKK0BAIC01OCw2ICs1OSw3IEBAIFN0eWxlUmFy
ZUluaGVyaXRlZERhdGE6OlN0eWxlUmFyZUluaGVyaXRlZERhdGEoY29uc3QgU3R5bGVSYXJlSW5o
ZXJpdGVkRGF0YSYgbykKKyAgICAgLCB0ZXh0U2l6ZUFkanVzdChvLnRleHRTaXplQWRqdXN0KQor
ICAgICAsIHJlc2l6ZShvLnJlc2l6ZSkKKyAgICAgLCB1c2VyU2VsZWN0KG8udXNlclNlbGVjdCkK
KysgICAgLCBib3hPcmllbnQoby5ib3hPcmllbnQpCisgeworIH0KKyAKK0BAIC04MSw3ICs4Myw4
IEBAIGJvb2wgU3R5bGVSYXJlSW5oZXJpdGVkRGF0YTo6b3BlcmF0b3I9PShjb25zdCBTdHlsZVJh
cmVJbmhlcml0ZWREYXRhJiBvKSBjb25zdAorICAgICAgICAgJiYga2h0bWxMaW5lQnJlYWsgPT0g
by5raHRtbExpbmVCcmVhaworICAgICAgICAgJiYgdGV4dFNpemVBZGp1c3QgPT0gby50ZXh0U2l6
ZUFkanVzdAorICAgICAgICAgJiYgcmVzaXplID09IG8ucmVzaXplCistICAgICAgICAmJiB1c2Vy
U2VsZWN0ID09IG8udXNlclNlbGVjdDsKKysgICAgICAgICYmIHVzZXJTZWxlY3QgPT0gby51c2Vy
U2VsZWN0CisrICAgICAgICAmJiBib3hPcmllbnQgPT0gby5ib3hPcmllbnQ7CisgfQorIAorIGJv
b2wgU3R5bGVSYXJlSW5oZXJpdGVkRGF0YTo6c2hhZG93RGF0YUVxdWl2YWxlbnQoY29uc3QgU3R5
bGVSYXJlSW5oZXJpdGVkRGF0YSYgbykgY29uc3QKKycnJy5zcGxpdGxpbmVzKCkKKworCisgICAg
ZGVmIHRlc3RfZGlmZl9wYXJzZXIoc2VsZik6CisgICAgICAgIHBhcnNlciA9IGRpZmZfcGFyc2Vy
LkRpZmZQYXJzZXIoc2VsZi5fUEFUQ0gpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKDIsIGxl
bihwYXJzZXIuZmlsZXMpKQorCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSgnV2ViQ29yZS9yZW5k
ZXJpbmcvc3R5bGUvU3R5bGVGbGV4aWJsZUJveERhdGEuaCcgaW4gcGFyc2VyLmZpbGVzKQorICAg
ICAgICBkaWZmID0gcGFyc2VyLmZpbGVzWydXZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZUZs
ZXhpYmxlQm94RGF0YS5oJ10KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoNywgbGVuKGRpZmYu
bGluZXMpKQorICAgICAgICAjIFRoZSBmaXJzdCB0d28gdW5jaGFnZWQgbGluZXMuCisgICAgICAg
IHNlbGYuYXNzZXJ0RXF1YWxzKCg0NywgNDcpLCBkaWZmLmxpbmVzWzBdWzA6Ml0pCisgICAgICAg
IHNlbGYuYXNzZXJ0RXF1YWxzKCcnLCBkaWZmLmxpbmVzWzBdWzJdKQorICAgICAgICBzZWxmLmFz
c2VydEVxdWFscygoNDgsIDQ4KSwgZGlmZi5saW5lc1sxXVswOjJdKQorICAgICAgICBzZWxmLmFz
c2VydEVxdWFscygnICAgIHVuc2lnbmVkIGFsaWduIDogMzsgLy8gRUJveEFsaWdubWVudCcsIGRp
ZmYubGluZXNbMV1bMl0pCisgICAgICAgICMgVGhlIGRlbGV0ZWQgbGluZQorICAgICAgICBzZWxm
LmFzc2VydEVxdWFscygoNTAsIDApLCBkaWZmLmxpbmVzWzNdWzA6Ml0pCisgICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWxzKCcgICAgdW5zaWduZWQgb3JpZW50OiAxOyAvLyBFQm94T3JpZW50JywgZGlm
Zi5saW5lc1szXVsyXSkKKworICAgICAgICAjIFRoZSBmaXJzdCBmaWxlIGxvb2tzIE9LLCBsZXQn
cyBjaGVjayB0aGUgbmV4dCwgbW9yZSBjb21wbGljYXRlZCBmaWxlLgorICAgICAgICBzZWxmLmFz
c2VydFRydWUoJ1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlUmFyZUluaGVyaXRlZERhdGEu
Y3BwJyBpbiBwYXJzZXIuZmlsZXMpCisgICAgICAgIGRpZmYgPSBwYXJzZXIuZmlsZXNbJ1dlYkNv
cmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlUmFyZUluaGVyaXRlZERhdGEuY3BwJ10KKyAgICAgICAg
IyBUaGVyZSBhcmUgMyBjaHVua3MuCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKDcgKyA3ICsg
OSwgbGVuKGRpZmYubGluZXMpKQorICAgICAgICAjIEFyb3VuZCBhbiBhZGRlZCBsaW5lLgorICAg
ICAgICBzZWxmLmFzc2VydEVxdWFscygoNjAsIDYxKSwgZGlmZi5saW5lc1s5XVswOjJdKQorICAg
ICAgICBzZWxmLmFzc2VydEVxdWFscygoMCwgNjIpLCBkaWZmLmxpbmVzWzEwXVswOjJdKQorICAg
ICAgICBzZWxmLmFzc2VydEVxdWFscygoNjEsIDYzKSwgZGlmZi5saW5lc1sxMV1bMDoyXSkKKyAg
ICAgICAgIyBMb29rIHRocm91Z2ggdGhlIGxhc3QgY2h1bmssIHdoaWNoIGNvbnRhaW5zIGJvdGgg
YWRkL2RlbGV0ZS4KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoKDgxLCA4MyksIGRpZmYubGlu
ZXNbMTRdWzA6Ml0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKCg4MiwgODQpLCBkaWZmLmxp
bmVzWzE1XVswOjJdKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFscygoODMsIDg1KSwgZGlmZi5s
aW5lc1sxNl1bMDoyXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoKDg0LCAwKSwgZGlmZi5s
aW5lc1sxN11bMDoyXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoKDAsIDg2KSwgZGlmZi5s
aW5lc1sxOF1bMDoyXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoKDAsIDg3KSwgZGlmZi5s
aW5lc1sxOV1bMDoyXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoKDg1LCA4OCksIGRpZmYu
bGluZXNbMjBdWzA6Ml0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKCg4NiwgODkpLCBkaWZm
LmxpbmVzWzIxXVswOjJdKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFscygoODcsIDkwKSwgZGlm
Zi5saW5lc1syMl1bMDoyXSkKKworCitpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgorICAgIHVu
aXR0ZXN0Lm1haW4oKQ==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>32921</attachid>
            <date>2009-07-17 02:19:15 -0700</date>
            <delta_ts>2009-07-17 02:21:28 -0700</delta_ts>
            <desc>Patch v2</desc>
            <filename>bug-27363-20090717181914.patch</filename>
            <type>text/plain</type>
            <size>634</size>
            <attacher name="Shinichiro Hamaji">hamaji</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL1NjcmlwdHMvbW9kdWxlcy9kaWZmX3BhcnNlci5weSBi
L1dlYktpdFRvb2xzL1NjcmlwdHMvbW9kdWxlcy9kaWZmX3BhcnNlci5weQppbmRleCA0OWU4NjVh
Li5jOTgxZTFhIDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9TY3JpcHRzL21vZHVsZXMvZGlmZl9w
YXJzZXIucHkKKysrIGIvV2ViS2l0VG9vbHMvU2NyaXB0cy9tb2R1bGVzL2RpZmZfcGFyc2VyLnB5
CkBAIC0xMjQsMTAgKzEyNCwxMSBAQCBjbGFzcyBEaWZmUGFyc2VyOgogICAgICAgICAgIGRpZmZf
aW5wdXQ6IEFuIGl0ZXJhdGFibGUgb2JqZWN0LgogICAgICAgICAiIiIKICAgICAgICAgc3RhdGUg
PSBfSU5JVElBTF9TVEFURQotICAgICAgICBmaXJzdF9saW5lID0gVHJ1ZQogCiAgICAgICAgIHNl
bGYuZmlsZXMgPSB7fQogICAgICAgICBjdXJyZW50X2ZpbGUgPSBOb25lCisgICAgICAgIG9sZF9k
aWZmX2xpbmUgPSBOb25lCisgICAgICAgIG5ld19kaWZmX2xpbmUgPSBOb25lCiAgICAgICAgIGZv
ciBsaW5lIGluIGRpZmZfaW5wdXQ6CiAgICAgICAgICAgICBpZiBzdGF0ZSA9PSBfSU5JVElBTF9T
VEFURToKICAgICAgICAgICAgICAgICB0cmFuc2Zvcm1fbGluZSA9IGdldF9kaWZmX2NvbnZlcnRl
cihsaW5lKQ==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>32922</attachid>
            <date>2009-07-17 02:21:33 -0700</date>
            <delta_ts>2009-07-17 04:32:28 -0700</delta_ts>
            <desc>Patch v3</desc>
            <filename>bug-27363-20090717182132.patch</filename>
            <type>text/plain</type>
            <size>14239</size>
            <attacher name="Shinichiro Hamaji">hamaji</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0NoYW5nZUxvZyBiL1dlYktpdFRvb2xzL0NoYW5nZUxv
ZwppbmRleCA0OTM1MzVjLi4yYWM5MmM0IDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9DaGFuZ2VM
b2cKKysrIGIvV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTggQEAKKzIwMDktMDct
MTcgIFNoaW5pY2hpcm8gSGFtYWppICA8aGFtYWppQGNocm9taXVtLm9yZz4KKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgYSBwYXJzZXIgb2YgcGF0
Y2hlcyBmb3IgbGludGVyLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MjczNjMKKworICAgICAgICBOb3csIHRoZSBwYXJzZXIgZG9lc24ndCBoYXZlIGZ1
bGwgaW5mb3JtYXRpb24gb2YgcGF0Y2hlcy4KKyAgICAgICAgSXQgb25seSBrbm93cyB0aGUgbGlu
ZSBudW1iZXIgYW5kIGxpbmUgY29udGVudHMgb2YgZWFjaCBsaW5lcyBpbgorICAgICAgICBjaHVu
a3Mgb2YgYSBwYXRjaC4gIEluIGNhc2UgdGhlIGxpbmUgaXMgbmV3bHkgYWRkZWQgb3IgZGVsZXRl
ZCwgaXQKKyAgICAgICAgc2V0cyB6ZXJvIGFzIHRoZSBsaW5lIG51bWJlci4KKworICAgICAgICAq
IFNjcmlwdHMvbW9kdWxlcy9kaWZmX3BhcnNlci5weTogQWRkZWQuCisgICAgICAgICogU2NyaXB0
cy9tb2R1bGVzL2RpZmZfcGFyc2VyX3VuaXR0ZXN0LnB5OiBBZGRlZC4KKwogMjAwOS0wNy0xNSAg
RGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CiAKICAgICAgICAgKiBTY3JpcHRzL2RvLXdl
YmNvcmUtcmVuYW1lOiBDaGVjayBpbiB0aGUgdmVyc2lvbiB1c2VkIHRvCmRpZmYgLS1naXQgYS9X
ZWJLaXRUb29scy9TY3JpcHRzL21vZHVsZXMvZGlmZl9wYXJzZXIucHkgYi9XZWJLaXRUb29scy9T
Y3JpcHRzL21vZHVsZXMvZGlmZl9wYXJzZXIucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMC4uYzk4MWUxYQotLS0gL2Rldi9udWxsCisrKyBiL1dlYktpdFRvb2xzL1NjcmlwdHMv
bW9kdWxlcy9kaWZmX3BhcnNlci5weQpAQCAtMCwwICsxLDE4MCBAQAorIyBDb3B5cmlnaHQgKEMp
IDIwMDkgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisj
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucyBhcmUKKyMgbWV0OgorIworIyAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgICAgKiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisj
IGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIKKyMgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZQorIyBkaXN0cmlidXRpb24uCisjICAgICogTmVpdGhlciB0
aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworIyBjb250cmlidXRv
cnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJv
bQorIyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNz
aW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9M
REVSUyBBTkQgQ09OVFJJQlVUT1JTCisjICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisjIExJTUlURUQgVE8sIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorIyBBIFBB
UlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENP
UFlSSUdIVAorIyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyMgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorIyBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyMgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZCisjIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisjIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisK
KyIiIldlYktpdCdzIFB5dGhvbiBtb2R1bGUgZm9yIGludGVyYWN0aW5nIHdpdGggcGF0Y2hlcy4i
IiIKKworaW1wb3J0IGxvZ2dpbmcKK2ltcG9ydCByZQorCisKK19yZWdleHBfY29tcGlsZV9jYWNo
ZSA9IHt9CisKKworZGVmIG1hdGNoKHBhdHRlcm4sIHN0cmluZyk6CisgICAgIiIiTWF0Y2hlcyB0
aGUgc3RyaW5nIHdpdGggdGhlIHBhdHRlcm4sIGNhY2hpbmcgdGhlIGNvbXBpbGVkIHJlZ2V4cC4i
IiIKKyAgICAjIFRoZSByZWdleHAgY29tcGlsYXRpb24gY2FjaGluZyBpcyBpbmxpbmVkIGluIGJv
dGggbWF0Y2ggYW5kIHNlYXJjaCBmb3IKKyAgICAjIHBlcmZvcm1hbmNlIHJlYXNvbnM7IGZhY3Rv
cmluZyBpdCBvdXQgaW50byBhIHNlcGFyYXRlIGZ1bmN0aW9uIHR1cm5zIG91dAorICAgICMgdG8g
YmUgbm90aWNlYWJseSBleHBlbnNpdmUuCisgICAgaWYgbm90IHBhdHRlcm4gaW4gX3JlZ2V4cF9j
b21waWxlX2NhY2hlOgorICAgICAgICBfcmVnZXhwX2NvbXBpbGVfY2FjaGVbcGF0dGVybl0gPSBy
ZS5jb21waWxlKHBhdHRlcm4pCisgICAgcmV0dXJuIF9yZWdleHBfY29tcGlsZV9jYWNoZVtwYXR0
ZXJuXS5tYXRjaChzdHJpbmcpCisKKworZGVmIGdpdF9kaWZmX3RvX3N2bl9kaWZmKGxpbmUpOgor
ICAgICIiIkNvbnZlcnRzIGEgZ2l0IGZvcm1hdHRlZCBkaWZmIGxpbmUgdG8gYSBzdm4gZm9ybWF0
dGVkIGxpbmUuCisKKyAgICBBcmdzOgorICAgICAgbGluZTogQSBzdHJpbmcgcmVwcmVzZW50aW5n
IGEgbGluZSBvZiB0aGUgZGlmZi4KKyAgICAiIiIKKyAgICBjb252ZXJzaW9uX3BhdHRlcm5zID0g
KCgiXmRpZmYgLS1naXQgYS8oLispIGIvKD9QPEZpbGVQYXRoPi4rKSIsIGxhbWJkYSBtYXRjaGVk
OiAiSW5kZXg6ICIgKyBtYXRjaGVkLmdyb3VwKCdGaWxlUGF0aCcpICsgIlxuIiksCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAoIl5uZXcgZmlsZS4qIiwgbGFtYmRhIG1hdGNoZWQ6ICJcbiIp
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgKCJeaW5kZXggWzAtOWEtZl17N31cLlwuWzAt
OWEtZl17N30gWzAtOV17Nn0iLCBsYW1iZGEgbWF0Y2hlZDogIj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiIpLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgKCJeLS0tIGEvKD9QPEZpbGVQYXRoPi4rKSIsIGxhbWJk
YSBtYXRjaGVkOiAiLS0tICIgKyBtYXRjaGVkLmdyb3VwKCdGaWxlUGF0aCcpICsgIlxuIiksCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAoIl5cK1wrXCsgYi8oP1A8RmlsZVBhdGg+LispIiwg
bGFtYmRhIG1hdGNoZWQ6ICIrKysgIiArIG1hdGNoZWQuZ3JvdXAoJ0ZpbGVQYXRoJykgKyAiXG4i
KSkKKworICAgIGZvciBwYXR0ZXJuLCBjb252ZXJzaW9uIGluIGNvbnZlcnNpb25fcGF0dGVybnM6
CisgICAgICAgIG1hdGNoZWQgPSBtYXRjaChwYXR0ZXJuLCBsaW5lKQorICAgICAgICBpZiBtYXRj
aGVkOgorICAgICAgICAgICAgcmV0dXJuIGNvbnZlcnNpb24obWF0Y2hlZCkKKyAgICByZXR1cm4g
bGluZQorCisKK2RlZiBnZXRfZGlmZl9jb252ZXJ0ZXIoZmlyc3RfZGlmZl9saW5lKToKKyAgICAi
IiJHZXRzIGEgY29udmVydGVyIGZ1bmN0aW9uIG9mIGRpZmYgbGluZXMuCisKKyAgICBBcmdzOgor
ICAgICAgZmlyc3RfZGlmZl9saW5lOiBUaGUgZmlyc3QgZmlsZW5hbWUgbGluZSBvZiBhIGRpZmYg
ZmlsZS4KKyAgICAgICAgICAgICAgICAgICAgICAgSWYgdGhpcyBsaW5lIGlzIGdpdCBmb3JtYXR0
ZWQsIHdlJ2xsIHJldHVybiBhCisgICAgICAgICAgICAgICAgICAgICAgIGNvbnZlcnRlciBmcm9t
IGdpdCB0byBTVk4uCisgICAgIiIiCisgICAgaWYgbWF0Y2gociJeZGlmZiAtLWdpdCBhLyIsIGZp
cnN0X2RpZmZfbGluZSk6CisgICAgICAgIHJldHVybiBnaXRfZGlmZl90b19zdm5fZGlmZgorICAg
IHJldHVybiBsYW1iZGEgaW5wdXQ6IGlucHV0CisKKworIyBGSVhNRTogV2UgbWF5IG5lZWQgbW9y
ZSBzdGF0ZXMgaWYgd2Ugd2FudCB0byBjaGVjayB0aGUgaW50ZWdyaXR5IG9mIGlucHV0IHBhdGNo
ZXMuCitfSU5JVElBTF9TVEFURSA9IDEKK19ERUNMQVJFRF9GSUxFX1BBVEggPSAyCitfUFJPQ0VT
U0lOR19DSFVOSyA9IDMKKworCitjbGFzcyBEaWZmRmlsZToKKyAgICAiIiJIb2xkIGluZm9ybWF0
aW9uIG9mIGEgZmlsZSBpbiBhIHBhdGNoLgorCisgICAgVGhlIGZpZWxkICJsaW5lcyIgaXMgYSBs
aXN0IHdoaWNoIGNvbnRhaW5zIHR1cGxlcyB3aGljaCByZXByZXNlbnQKKyAgICAgICAob2xkX2xp
bmVfbnVtYmVyLCBuZXdfbGluZV9udW1iZXIsIGxpbmVfc3RyaW5nKQorICAgIElmIG9sZF9saW5l
X251bWJlciBpcyB6ZXJvLCBpdCBtZWFucyB0aGlzIGxpbmUgaXMgbmV3bHkgYWRkZWQuCisgICAg
SWYgbmV3X2xpbmVfbnVtYmVyIGlzIHplcm8sIGl0IG1lYW5zIHRoaXMgbGluZSBpcyBkZWxldGVk
LgorICAgICIiIgorICAgICMgRklYTUU6IFdlIG9ubHkgaGF2ZSBpbmZvcm1hdGlvbiBvZiBsaW5l
cyBpbiBjaHVua3MuIE5lZWQgbW9yZSBpbmZvPworCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIGZp
bGVuYW1lKToKKyAgICAgICAgc2VsZi5maWxlbmFtZSA9IGZpbGVuYW1lCisgICAgICAgIHNlbGYu
bGluZXMgPSBbXQorCisgICAgZGVmIGFkZF9uZXdfbGluZShzZWxmLCBsaW5lX251bWJlciwgbGlu
ZSk6CisgICAgICAgICIiIkFkZHMgYSBuZXdseSBhZGRlZCBsaW5lLiIiIgorICAgICAgICBzZWxm
LmxpbmVzLmFwcGVuZCgoMCwgbGluZV9udW1iZXIsIGxpbmUpKQorCisgICAgZGVmIGFkZF9vbGRf
bGluZShzZWxmLCBsaW5lX251bWJlciwgbGluZSk6CisgICAgICAgICIiIkFkZHMgYSBkZWxldGVk
IGxpbmUuIiIiCisgICAgICAgIHNlbGYubGluZXMuYXBwZW5kKChsaW5lX251bWJlciwgMCwgbGlu
ZSkpCisKKyAgICBkZWYgYWRkX3VuY2hhbmdlZF9saW5lKHNlbGYsIG9sZF9saW5lX251bWJlciwg
bmV3X2xpbmVfbnVtYmVyLCBsaW5lKToKKyAgICAgICAgIiIiQWRkcyBhbiB1bmNoYW5nZWQgbGlu
ZS4iIiIKKyAgICAgICAgc2VsZi5saW5lcy5hcHBlbmQoKG9sZF9saW5lX251bWJlciwgbmV3X2xp
bmVfbnVtYmVyLCBsaW5lKSkKKworCitjbGFzcyBEaWZmUGFyc2VyOgorICAgICIiIkEgcGFyc2Vy
IGZvciBhIHBhdGNoIGZpbGUuCisKKyAgICBUaGUgZmllbGQgImZpbGVzIiBpcyBhIGRpY3Qgd2hv
c2Uga2V5IGlzIHRoZSBmaWxlbmFtZSBhbmQgdmFsdWUgaXMKKyAgICBhIERpZmZGaWxlIG9iamVj
dC4KKyAgICAiIiIKKworICAgIGRlZiBfX2luaXRfXyhzZWxmLCBkaWZmX2lucHV0KToKKyAgICAg
ICAgIiIiUGFyc2VzIGEgZGlmZi4KKworICAgICAgICBBcmdzOgorICAgICAgICAgIGRpZmZfaW5w
dXQ6IEFuIGl0ZXJhdGFibGUgb2JqZWN0LgorICAgICAgICAiIiIKKyAgICAgICAgc3RhdGUgPSBf
SU5JVElBTF9TVEFURQorCisgICAgICAgIHNlbGYuZmlsZXMgPSB7fQorICAgICAgICBjdXJyZW50
X2ZpbGUgPSBOb25lCisgICAgICAgIG9sZF9kaWZmX2xpbmUgPSBOb25lCisgICAgICAgIG5ld19k
aWZmX2xpbmUgPSBOb25lCisgICAgICAgIGZvciBsaW5lIGluIGRpZmZfaW5wdXQ6CisgICAgICAg
ICAgICBpZiBzdGF0ZSA9PSBfSU5JVElBTF9TVEFURToKKyAgICAgICAgICAgICAgICB0cmFuc2Zv
cm1fbGluZSA9IGdldF9kaWZmX2NvbnZlcnRlcihsaW5lKQorICAgICAgICAgICAgbGluZSA9IHRy
YW5zZm9ybV9saW5lKGxpbmUpCisKKyAgICAgICAgICAgIGZpbGVfZGVjbGFyYXRpb24gPSBtYXRj
aChyIl5JbmRleDogKD9QPEZpbGVQYXRoPi4rKSIsIGxpbmUpCisgICAgICAgICAgICBpZiBmaWxl
X2RlY2xhcmF0aW9uOgorICAgICAgICAgICAgICAgIGZpbGVuYW1lID0gZmlsZV9kZWNsYXJhdGlv
bi5ncm91cCgnRmlsZVBhdGgnKQorICAgICAgICAgICAgICAgIGN1cnJlbnRfZmlsZSA9IERpZmZG
aWxlKGZpbGVuYW1lKQorICAgICAgICAgICAgICAgIHNlbGYuZmlsZXNbZmlsZW5hbWVdID0gY3Vy
cmVudF9maWxlCisgICAgICAgICAgICAgICAgc3RhdGUgPSBfREVDTEFSRURfRklMRV9QQVRICisg
ICAgICAgICAgICAgICAgY29udGludWUKKworICAgICAgICAgICAgbGluZXNfY2hhbmdlZCA9IG1h
dGNoKHIiXkBAIC0oP1A8T2xkU3RhcnRMaW5lPlxkKykoLFxkKyk/IFwrKD9QPE5ld1N0YXJ0TGlu
ZT5cZCspKCxcZCspPyBAQCIsIGxpbmUpCisgICAgICAgICAgICBpZiBsaW5lc19jaGFuZ2VkOgor
ICAgICAgICAgICAgICAgIGlmIHN0YXRlICE9IF9ERUNMQVJFRF9GSUxFX1BBVEggYW5kIHN0YXRl
ICE9IF9QUk9DRVNTSU5HX0NIVU5LOgorICAgICAgICAgICAgICAgICAgICBsb2dnaW5nLmVycm9y
KCdVbmV4cGVjdGVkIGxpbmUgY2hhbmdlIHdpdGhvdXQgZmlsZSBwYXRoIGRlY2xhcmF0aW9uOiAl
cicgJSBsaW5lKQorICAgICAgICAgICAgICAgIG9sZF9kaWZmX2xpbmUgPSBpbnQobGluZXNfY2hh
bmdlZC5ncm91cCgnT2xkU3RhcnRMaW5lJykpCisgICAgICAgICAgICAgICAgbmV3X2RpZmZfbGlu
ZSA9IGludChsaW5lc19jaGFuZ2VkLmdyb3VwKCdOZXdTdGFydExpbmUnKSkKKyAgICAgICAgICAg
ICAgICBzdGF0ZSA9IF9QUk9DRVNTSU5HX0NIVU5LCisgICAgICAgICAgICAgICAgY29udGludWUK
KworICAgICAgICAgICAgaWYgc3RhdGUgPT0gX1BST0NFU1NJTkdfQ0hVTks6CisgICAgICAgICAg
ICAgICAgaWYgbGluZS5zdGFydHN3aXRoKCcrJyk6CisgICAgICAgICAgICAgICAgICAgIGN1cnJl
bnRfZmlsZS5hZGRfbmV3X2xpbmUobmV3X2RpZmZfbGluZSwgbGluZVsxOl0pCisgICAgICAgICAg
ICAgICAgICAgIG5ld19kaWZmX2xpbmUgKz0gMQorICAgICAgICAgICAgICAgIGVsaWYgbGluZS5z
dGFydHN3aXRoKCctJyk6CisgICAgICAgICAgICAgICAgICAgIGN1cnJlbnRfZmlsZS5hZGRfb2xk
X2xpbmUob2xkX2RpZmZfbGluZSwgbGluZVsxOl0pCisgICAgICAgICAgICAgICAgICAgIG9sZF9k
aWZmX2xpbmUgKz0gMQorICAgICAgICAgICAgICAgIGVsaWYgbGluZS5zdGFydHN3aXRoKCcgJyk6
CisgICAgICAgICAgICAgICAgICAgIGN1cnJlbnRfZmlsZS5hZGRfdW5jaGFuZ2VkX2xpbmUob2xk
X2RpZmZfbGluZSwgbmV3X2RpZmZfbGluZSwgbGluZVsxOl0pCisgICAgICAgICAgICAgICAgICAg
IG9sZF9kaWZmX2xpbmUgKz0gMQorICAgICAgICAgICAgICAgICAgICBuZXdfZGlmZl9saW5lICs9
IDEKKyAgICAgICAgICAgICAgICBlbGlmIGxpbmUgPT0gJ1xcIE5vIG5ld2xpbmUgYXQgZW5kIG9m
IGZpbGVcbic6CisgICAgICAgICAgICAgICAgICAgICMgTm90aGluZyB0byBkby4gIFdlIG1heSBz
dGlsbCBoYXZlIHNvbWUgYWRkZWQgbGluZXMuCisgICAgICAgICAgICAgICAgICAgICMgRklYTUU6
IENoZWNrIGlmIHRoZSBmb2xsb3dpbmcgbGluZXMgb25seSBjb250YWluIGFkZGVkIGxpbmVzPwor
ICAgICAgICAgICAgICAgICAgICBwYXNzCisgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAg
ICAgICAgICAgICAgbG9nZ2luZy5lcnJvcignVW5leHBlY3RlZCBkaWZmIGZvcm1hdCB3aGVuIHBh
cnNpbmcgYSBjaHVuazogJXInICUgbGluZSkKKworICAgICAgICAgICAgIyBUaGUgZm9sbG93aW5n
IGtpbmRzIG9mIGxpbmVzIHdpbGwgYmUgaWdub3JlZCBzaWxlbnRseToKKyAgICAgICAgICAgICMK
KyAgICAgICAgICAgICMgLSBMaW5lcyBnaXQtZGlmZi10cmVlIHByb2R1Y2VzIGJlZm9yZSBmaWxl
bmFtZQorICAgICAgICAgICAgIyAgIGRlY2xhcmF0aW9uLCB3aGljaCBjb250YWlucyBhIGhhc2gg
b2YgYSBwYXRjaC4KKyAgICAgICAgICAgICMgLSAnPScqNjcgbGluZXMgYmV0d2VlbiBmaWxlbmFt
ZSBkZWNsYXJhdGlvbiBhbmQgZmlsZQorICAgICAgICAgICAgIyAgIHJldmlzaW9uIGRlY2xhcmF0
aW9uLgorICAgICAgICAgICAgIyAtIExpbmVzIGZvciByZXZpc2lvbiBkZWNsYXJhdGlvbi4KKyAg
ICAgICAgICAgICMKKyAgICAgICAgICAgICMgRklYTUU6IE5lZWQgdGhlc2UgaW5mbz8KZGlmZiAt
LWdpdCBhL1dlYktpdFRvb2xzL1NjcmlwdHMvbW9kdWxlcy9kaWZmX3BhcnNlcl91bml0dGVzdC5w
eSBiL1dlYktpdFRvb2xzL1NjcmlwdHMvbW9kdWxlcy9kaWZmX3BhcnNlcl91bml0dGVzdC5weQpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xOTM5ZTU0Ci0tLSAvZGV2L251bGwK
KysrIGIvV2ViS2l0VG9vbHMvU2NyaXB0cy9tb2R1bGVzL2RpZmZfcGFyc2VyX3VuaXR0ZXN0LnB5
CkBAIC0wLDAgKzEsMTE4IEBACisjIENvcHlyaWdodCAoQykgMjAwOSBHb29nbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorIyBtZXQ6
CisjCisjICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyMgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyMgY29weXJpZ2h0IG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorIyBpbiB0
aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
CisjIGRpc3RyaWJ1dGlvbi4KKyMgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMu
IG5vciB0aGUgbmFtZXMgb2YgaXRzCisjIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRv
cnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisjIHRoaXMgc29mdHdhcmUgd2l0
aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisjCisjIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMK
KyMgIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QKKyMgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisjIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisjIE9XTkVSIE9SIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LAorIyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UCisjIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorIyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyMgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAorIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKKyMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworaW1wb3J0IHVuaXR0ZXN0CitpbXBv
cnQgZGlmZl9wYXJzZXIKKworCitjbGFzcyBEaWZmUGFyc2VyVGVzdCh1bml0dGVzdC5UZXN0Q2Fz
ZSk6CisKKyAgICBfUEFUQ0ggPSAnJydkaWZmIC0tZ2l0IGEvV2ViQ29yZS9yZW5kZXJpbmcvc3R5
bGUvU3R5bGVGbGV4aWJsZUJveERhdGEuaCBiL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxl
RmxleGlibGVCb3hEYXRhLmgKK2luZGV4IGY1ZDVlNzQuLjNiNmFhOTIgMTAwNjQ0CistLS0gYS9X
ZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZUZsZXhpYmxlQm94RGF0YS5oCisrKysgYi9XZWJD
b3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZUZsZXhpYmxlQm94RGF0YS5oCitAQCAtNDcsNyArNDcs
NiBAQCBwdWJsaWM6CisgCisgICAgIHVuc2lnbmVkIGFsaWduIDogMzsgLy8gRUJveEFsaWdubWVu
dAorICAgICB1bnNpZ25lZCBwYWNrOiAzOyAvLyBFQm94QWxpZ25tZW50CistICAgIHVuc2lnbmVk
IG9yaWVudDogMTsgLy8gRUJveE9yaWVudAorICAgICB1bnNpZ25lZCBsaW5lcyA6IDE7IC8vIEVC
b3hMaW5lcworIAorIHByaXZhdGU6CitkaWZmIC0tZ2l0IGEvV2ViQ29yZS9yZW5kZXJpbmcvc3R5
bGUvU3R5bGVSYXJlSW5oZXJpdGVkRGF0YS5jcHAgYi9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9T
dHlsZVJhcmVJbmhlcml0ZWREYXRhLmNwcAoraW5kZXggY2UyMTcyMC4uMzI0OTI5ZSAxMDA2NDQK
Ky0tLSBhL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlUmFyZUluaGVyaXRlZERhdGEuY3Bw
CisrKysgYi9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZVJhcmVJbmhlcml0ZWREYXRhLmNw
cAorQEAgLTM5LDYgKzM5LDcgQEAgU3R5bGVSYXJlSW5oZXJpdGVkRGF0YTo6U3R5bGVSYXJlSW5o
ZXJpdGVkRGF0YSgpCisgICAgICwgdGV4dFNpemVBZGp1c3QoUmVuZGVyU3R5bGU6OmluaXRpYWxU
ZXh0U2l6ZUFkanVzdCgpKQorICAgICAsIHJlc2l6ZShSZW5kZXJTdHlsZTo6aW5pdGlhbFJlc2l6
ZSgpKQorICAgICAsIHVzZXJTZWxlY3QoUmVuZGVyU3R5bGU6OmluaXRpYWxVc2VyU2VsZWN0KCkp
CisrICAgICwgYm94T3JpZW50KFJlbmRlclN0eWxlOjppbml0aWFsQm94T3JpZW50KCkpCisgewor
IH0KKyAKK0BAIC01OCw2ICs1OSw3IEBAIFN0eWxlUmFyZUluaGVyaXRlZERhdGE6OlN0eWxlUmFy
ZUluaGVyaXRlZERhdGEoY29uc3QgU3R5bGVSYXJlSW5oZXJpdGVkRGF0YSYgbykKKyAgICAgLCB0
ZXh0U2l6ZUFkanVzdChvLnRleHRTaXplQWRqdXN0KQorICAgICAsIHJlc2l6ZShvLnJlc2l6ZSkK
KyAgICAgLCB1c2VyU2VsZWN0KG8udXNlclNlbGVjdCkKKysgICAgLCBib3hPcmllbnQoby5ib3hP
cmllbnQpCisgeworIH0KKyAKK0BAIC04MSw3ICs4Myw4IEBAIGJvb2wgU3R5bGVSYXJlSW5oZXJp
dGVkRGF0YTo6b3BlcmF0b3I9PShjb25zdCBTdHlsZVJhcmVJbmhlcml0ZWREYXRhJiBvKSBjb25z
dAorICAgICAgICAgJiYga2h0bWxMaW5lQnJlYWsgPT0gby5raHRtbExpbmVCcmVhaworICAgICAg
ICAgJiYgdGV4dFNpemVBZGp1c3QgPT0gby50ZXh0U2l6ZUFkanVzdAorICAgICAgICAgJiYgcmVz
aXplID09IG8ucmVzaXplCistICAgICAgICAmJiB1c2VyU2VsZWN0ID09IG8udXNlclNlbGVjdDsK
KysgICAgICAgICYmIHVzZXJTZWxlY3QgPT0gby51c2VyU2VsZWN0CisrICAgICAgICAmJiBib3hP
cmllbnQgPT0gby5ib3hPcmllbnQ7CisgfQorIAorIGJvb2wgU3R5bGVSYXJlSW5oZXJpdGVkRGF0
YTo6c2hhZG93RGF0YUVxdWl2YWxlbnQoY29uc3QgU3R5bGVSYXJlSW5oZXJpdGVkRGF0YSYgbykg
Y29uc3QKKycnJy5zcGxpdGxpbmVzKCkKKworCisgICAgZGVmIHRlc3RfZGlmZl9wYXJzZXIoc2Vs
Zik6CisgICAgICAgIHBhcnNlciA9IGRpZmZfcGFyc2VyLkRpZmZQYXJzZXIoc2VsZi5fUEFUQ0gp
CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKDIsIGxlbihwYXJzZXIuZmlsZXMpKQorCisgICAg
ICAgIHNlbGYuYXNzZXJ0VHJ1ZSgnV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVGbGV4aWJs
ZUJveERhdGEuaCcgaW4gcGFyc2VyLmZpbGVzKQorICAgICAgICBkaWZmID0gcGFyc2VyLmZpbGVz
WydXZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZUZsZXhpYmxlQm94RGF0YS5oJ10KKyAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbHMoNywgbGVuKGRpZmYubGluZXMpKQorICAgICAgICAjIFRoZSBm
aXJzdCB0d28gdW5jaGFnZWQgbGluZXMuCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKCg0Nywg
NDcpLCBkaWZmLmxpbmVzWzBdWzA6Ml0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKCcnLCBk
aWZmLmxpbmVzWzBdWzJdKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFscygoNDgsIDQ4KSwgZGlm
Zi5saW5lc1sxXVswOjJdKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFscygnICAgIHVuc2lnbmVk
IGFsaWduIDogMzsgLy8gRUJveEFsaWdubWVudCcsIGRpZmYubGluZXNbMV1bMl0pCisgICAgICAg
ICMgVGhlIGRlbGV0ZWQgbGluZQorICAgICAgICBzZWxmLmFzc2VydEVxdWFscygoNTAsIDApLCBk
aWZmLmxpbmVzWzNdWzA6Ml0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKCcgICAgdW5zaWdu
ZWQgb3JpZW50OiAxOyAvLyBFQm94T3JpZW50JywgZGlmZi5saW5lc1szXVsyXSkKKworICAgICAg
ICAjIFRoZSBmaXJzdCBmaWxlIGxvb2tzIE9LLCBsZXQncyBjaGVjayB0aGUgbmV4dCwgbW9yZSBj
b21wbGljYXRlZCBmaWxlLgorICAgICAgICBzZWxmLmFzc2VydFRydWUoJ1dlYkNvcmUvcmVuZGVy
aW5nL3N0eWxlL1N0eWxlUmFyZUluaGVyaXRlZERhdGEuY3BwJyBpbiBwYXJzZXIuZmlsZXMpCisg
ICAgICAgIGRpZmYgPSBwYXJzZXIuZmlsZXNbJ1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxl
UmFyZUluaGVyaXRlZERhdGEuY3BwJ10KKyAgICAgICAgIyBUaGVyZSBhcmUgMyBjaHVua3MuCisg
ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKDcgKyA3ICsgOSwgbGVuKGRpZmYubGluZXMpKQorICAg
ICAgICAjIEFyb3VuZCBhbiBhZGRlZCBsaW5lLgorICAgICAgICBzZWxmLmFzc2VydEVxdWFscygo
NjAsIDYxKSwgZGlmZi5saW5lc1s5XVswOjJdKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFscygo
MCwgNjIpLCBkaWZmLmxpbmVzWzEwXVswOjJdKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFscygo
NjEsIDYzKSwgZGlmZi5saW5lc1sxMV1bMDoyXSkKKyAgICAgICAgIyBMb29rIHRocm91Z2ggdGhl
IGxhc3QgY2h1bmssIHdoaWNoIGNvbnRhaW5zIGJvdGggYWRkL2RlbGV0ZS4KKyAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbHMoKDgxLCA4MyksIGRpZmYubGluZXNbMTRdWzA6Ml0pCisgICAgICAgIHNl
bGYuYXNzZXJ0RXF1YWxzKCg4MiwgODQpLCBkaWZmLmxpbmVzWzE1XVswOjJdKQorICAgICAgICBz
ZWxmLmFzc2VydEVxdWFscygoODMsIDg1KSwgZGlmZi5saW5lc1sxNl1bMDoyXSkKKyAgICAgICAg
c2VsZi5hc3NlcnRFcXVhbHMoKDg0LCAwKSwgZGlmZi5saW5lc1sxN11bMDoyXSkKKyAgICAgICAg
c2VsZi5hc3NlcnRFcXVhbHMoKDAsIDg2KSwgZGlmZi5saW5lc1sxOF1bMDoyXSkKKyAgICAgICAg
c2VsZi5hc3NlcnRFcXVhbHMoKDAsIDg3KSwgZGlmZi5saW5lc1sxOV1bMDoyXSkKKyAgICAgICAg
c2VsZi5hc3NlcnRFcXVhbHMoKDg1LCA4OCksIGRpZmYubGluZXNbMjBdWzA6Ml0pCisgICAgICAg
IHNlbGYuYXNzZXJ0RXF1YWxzKCg4NiwgODkpLCBkaWZmLmxpbmVzWzIxXVswOjJdKQorICAgICAg
ICBzZWxmLmFzc2VydEVxdWFscygoODcsIDkwKSwgZGlmZi5saW5lc1syMl1bMDoyXSkKKworCitp
ZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgorICAgIHVuaXR0ZXN0Lm1haW4oKQ==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>32927</attachid>
            <date>2009-07-17 04:32:33 -0700</date>
            <delta_ts>2009-07-17 05:02:29 -0700</delta_ts>
            <desc>Patch v4</desc>
            <filename>bug-27363-20090717203231.patch</filename>
            <type>text/plain</type>
            <size>13078</size>
            <attacher name="Shinichiro Hamaji">hamaji</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0NoYW5nZUxvZyBiL1dlYktpdFRvb2xzL0NoYW5nZUxv
ZwppbmRleCA0OTM1MzVjLi5mOWIyYmI0IDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9DaGFuZ2VM
b2cKKysrIGIvV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMDktMDct
MTcgIFNoaW5pY2hpcm8gSGFtYWppICA8aGFtYWppQGNocm9taXVtLm9yZz4KKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgYSBwYXJzZXIgb2YgcGF0
Y2hlcyBmb3IgbGludGVyLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MjczNjMKKworICAgICAgICBBZGRzIGEgc2ltcGxlIHBhcnNlciBmb3IgdW5pZmll
ZCBkaWZmIGZvcm1hdC4KKworICAgICAgICAqIFNjcmlwdHMvbW9kdWxlcy9kaWZmX3BhcnNlci5w
eTogQWRkZWQuCisgICAgICAgICogU2NyaXB0cy9tb2R1bGVzL2RpZmZfcGFyc2VyX3VuaXR0ZXN0
LnB5OiBBZGRlZC4KKwogMjAwOS0wNy0xNSAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+
CiAKICAgICAgICAgKiBTY3JpcHRzL2RvLXdlYmNvcmUtcmVuYW1lOiBDaGVjayBpbiB0aGUgdmVy
c2lvbiB1c2VkIHRvCmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9TY3JpcHRzL21vZHVsZXMvZGlm
Zl9wYXJzZXIucHkgYi9XZWJLaXRUb29scy9TY3JpcHRzL21vZHVsZXMvZGlmZl9wYXJzZXIucHkK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODQxNDBjZgotLS0gL2Rldi9udWxs
CisrKyBiL1dlYktpdFRvb2xzL1NjcmlwdHMvbW9kdWxlcy9kaWZmX3BhcnNlci5weQpAQCAtMCww
ICsxLDE2MSBAQAorIyBDb3B5cmlnaHQgKEMpIDIwMDkgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyMgbWV0OgorIworIyAg
ICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisjIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyMgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisjIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyMgaW4gdGhlIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorIyBkaXN0
cmlidXRpb24uCisjICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhl
IG5hbWVzIG9mIGl0cworIyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBw
cm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorIyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3Bl
Y2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisjICJBUyBJ
UyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UCisjIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUgorIyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorIyBPV05FUiBPUiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyMgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVAorIyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyMgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisjIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyMgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCisjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKKyIiIldlYktpdCdzIFB5dGhvbiBtb2R1bGUgZm9y
IGludGVyYWN0aW5nIHdpdGggcGF0Y2hlcy4iIiIKKworaW1wb3J0IGxvZ2dpbmcKK2ltcG9ydCBy
ZQorCisKK19yZWdleHBfY29tcGlsZV9jYWNoZSA9IHt9CisKKworZGVmIG1hdGNoKHBhdHRlcm4s
IHN0cmluZyk6CisgICAgIiIiTWF0Y2hlcyB0aGUgc3RyaW5nIHdpdGggdGhlIHBhdHRlcm4sIGNh
Y2hpbmcgdGhlIGNvbXBpbGVkIHJlZ2V4cC4iIiIKKyAgICBpZiBub3QgcGF0dGVybiBpbiBfcmVn
ZXhwX2NvbXBpbGVfY2FjaGU6CisgICAgICAgIF9yZWdleHBfY29tcGlsZV9jYWNoZVtwYXR0ZXJu
XSA9IHJlLmNvbXBpbGUocGF0dGVybikKKyAgICByZXR1cm4gX3JlZ2V4cF9jb21waWxlX2NhY2hl
W3BhdHRlcm5dLm1hdGNoKHN0cmluZykKKworCitkZWYgZ2l0X2RpZmZfdG9fc3ZuX2RpZmYobGlu
ZSk6CisgICAgIiIiQ29udmVydHMgYSBnaXQgZm9ybWF0dGVkIGRpZmYgbGluZSB0byBhIHN2biBm
b3JtYXR0ZWQgbGluZS4KKworICAgIEFyZ3M6CisgICAgICBsaW5lOiBBIHN0cmluZyByZXByZXNl
bnRpbmcgYSBsaW5lIG9mIHRoZSBkaWZmLgorICAgICIiIgorICAgIGNvbnZlcnNpb25fcGF0dGVy
bnMgPSAoKCJeZGlmZiAtLWdpdCBhLyguKykgYi8oP1A8RmlsZVBhdGg+LispIiwgbGFtYmRhIG1h
dGNoZWQ6ICJJbmRleDogIiArIG1hdGNoZWQuZ3JvdXAoJ0ZpbGVQYXRoJykgKyAiXG4iKSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICgiXm5ldyBmaWxlLioiLCBsYW1iZGEgbWF0Y2hlZDog
IlxuIiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAoIl5pbmRleCBbMC05YS1mXXs3fVwu
XC5bMC05YS1mXXs3fSBbMC05XXs2fSIsIGxhbWJkYSBtYXRjaGVkOiAiPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuIiks
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAoIl4tLS0gYS8oP1A8RmlsZVBhdGg+LispIiwg
bGFtYmRhIG1hdGNoZWQ6ICItLS0gIiArIG1hdGNoZWQuZ3JvdXAoJ0ZpbGVQYXRoJykgKyAiXG4i
KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICgiXlwrXCtcKyBiLyg/UDxGaWxlUGF0aD4u
KykiLCBsYW1iZGEgbWF0Y2hlZDogIisrKyAiICsgbWF0Y2hlZC5ncm91cCgnRmlsZVBhdGgnKSAr
ICJcbiIpKQorCisgICAgZm9yIHBhdHRlcm4sIGNvbnZlcnNpb24gaW4gY29udmVyc2lvbl9wYXR0
ZXJuczoKKyAgICAgICAgbWF0Y2hlZCA9IG1hdGNoKHBhdHRlcm4sIGxpbmUpCisgICAgICAgIGlm
IG1hdGNoZWQ6CisgICAgICAgICAgICByZXR1cm4gY29udmVyc2lvbihtYXRjaGVkKQorICAgIHJl
dHVybiBsaW5lCisKKworZGVmIGdldF9kaWZmX2NvbnZlcnRlcihmaXJzdF9kaWZmX2xpbmUpOgor
ICAgICIiIkdldHMgYSBjb252ZXJ0ZXIgZnVuY3Rpb24gb2YgZGlmZiBsaW5lcy4KKworICAgIEFy
Z3M6CisgICAgICBmaXJzdF9kaWZmX2xpbmU6IFRoZSBmaXJzdCBmaWxlbmFtZSBsaW5lIG9mIGEg
ZGlmZiBmaWxlLgorICAgICAgICAgICAgICAgICAgICAgICBJZiB0aGlzIGxpbmUgaXMgZ2l0IGZv
cm1hdHRlZCwgd2UnbGwgcmV0dXJuIGEKKyAgICAgICAgICAgICAgICAgICAgICAgY29udmVydGVy
IGZyb20gZ2l0IHRvIFNWTi4KKyAgICAiIiIKKyAgICBpZiBtYXRjaChyIl5kaWZmIC0tZ2l0IGEv
IiwgZmlyc3RfZGlmZl9saW5lKToKKyAgICAgICAgcmV0dXJuIGdpdF9kaWZmX3RvX3N2bl9kaWZm
CisgICAgcmV0dXJuIGxhbWJkYSBpbnB1dDogaW5wdXQKKworCitfSU5JVElBTF9TVEFURSA9IDEK
K19ERUNMQVJFRF9GSUxFX1BBVEggPSAyCitfUFJPQ0VTU0lOR19DSFVOSyA9IDMKKworCitjbGFz
cyBEaWZmRmlsZToKKyAgICAiIiJDb250YWlucyB0aGUgaW5mb3JtYXRpb24gZm9yIG9uZSBmaWxl
IGluIGEgcGF0Y2guCisKKyAgICBUaGUgZmllbGQgImxpbmVzIiBpcyBhIGxpc3Qgd2hpY2ggY29u
dGFpbnMgdHVwbGVzIGluIHRoaXMgZm9ybWF0OgorICAgICAgIChvbGRfbGluZV9udW1iZXIsIG5l
d19saW5lX251bWJlciwgbGluZV9zdHJpbmcpCisgICAgSWYgb2xkX2xpbmVfbnVtYmVyIGlzIHpl
cm8sIGl0IG1lYW5zIHRoaXMgbGluZSBpcyBuZXdseSBhZGRlZC4KKyAgICBJZiBuZXdfbGluZV9u
dW1iZXIgaXMgemVybywgaXQgbWVhbnMgdGhpcyBsaW5lIGlzIGRlbGV0ZWQuCisgICAgIiIiCisK
KyAgICBkZWYgX19pbml0X18oc2VsZiwgZmlsZW5hbWUpOgorICAgICAgICBzZWxmLmZpbGVuYW1l
ID0gZmlsZW5hbWUKKyAgICAgICAgc2VsZi5saW5lcyA9IFtdCisKKyAgICBkZWYgYWRkX25ld19s
aW5lKHNlbGYsIGxpbmVfbnVtYmVyLCBsaW5lKToKKyAgICAgICAgc2VsZi5saW5lcy5hcHBlbmQo
KDAsIGxpbmVfbnVtYmVyLCBsaW5lKSkKKworICAgIGRlZiBhZGRfb2xkX2xpbmUoc2VsZiwgbGlu
ZV9udW1iZXIsIGxpbmUpOgorICAgICAgICBzZWxmLmxpbmVzLmFwcGVuZCgobGluZV9udW1iZXIs
IDAsIGxpbmUpKQorCisgICAgZGVmIGFkZF91bmNoYW5nZWRfbGluZShzZWxmLCBvbGRfbGluZV9u
dW1iZXIsIG5ld19saW5lX251bWJlciwgbGluZSk6CisgICAgICAgIHNlbGYubGluZXMuYXBwZW5k
KChvbGRfbGluZV9udW1iZXIsIG5ld19saW5lX251bWJlciwgbGluZSkpCisKKworY2xhc3MgRGlm
ZlBhcnNlcjoKKyAgICAiIiJBIHBhcnNlciBmb3IgYSBwYXRjaCBmaWxlLgorCisgICAgVGhlIGZp
ZWxkICJmaWxlcyIgaXMgYSBkaWN0IHdob3NlIGtleSBpcyB0aGUgZmlsZW5hbWUgYW5kIHZhbHVl
IGlzCisgICAgYSBEaWZmRmlsZSBvYmplY3QuCisgICAgIiIiCisKKyAgICBkZWYgX19pbml0X18o
c2VsZiwgZGlmZl9pbnB1dCk6CisgICAgICAgICIiIlBhcnNlcyBhIGRpZmYuCisKKyAgICAgICAg
QXJnczoKKyAgICAgICAgICBkaWZmX2lucHV0OiBBbiBpdGVyYWJsZSBvYmplY3QuCisgICAgICAg
ICIiIgorICAgICAgICBzdGF0ZSA9IF9JTklUSUFMX1NUQVRFCisKKyAgICAgICAgc2VsZi5maWxl
cyA9IHt9CisgICAgICAgIGN1cnJlbnRfZmlsZSA9IE5vbmUKKyAgICAgICAgb2xkX2RpZmZfbGlu
ZSA9IE5vbmUKKyAgICAgICAgbmV3X2RpZmZfbGluZSA9IE5vbmUKKyAgICAgICAgZm9yIGxpbmUg
aW4gZGlmZl9pbnB1dDoKKyAgICAgICAgICAgIGlmIHN0YXRlID09IF9JTklUSUFMX1NUQVRFOgor
ICAgICAgICAgICAgICAgIHRyYW5zZm9ybV9saW5lID0gZ2V0X2RpZmZfY29udmVydGVyKGxpbmUp
CisgICAgICAgICAgICBsaW5lID0gdHJhbnNmb3JtX2xpbmUobGluZSkKKworICAgICAgICAgICAg
ZmlsZV9kZWNsYXJhdGlvbiA9IG1hdGNoKHIiXkluZGV4OiAoP1A8RmlsZVBhdGg+LispIiwgbGlu
ZSkKKyAgICAgICAgICAgIGlmIGZpbGVfZGVjbGFyYXRpb246CisgICAgICAgICAgICAgICAgZmls
ZW5hbWUgPSBmaWxlX2RlY2xhcmF0aW9uLmdyb3VwKCdGaWxlUGF0aCcpCisgICAgICAgICAgICAg
ICAgY3VycmVudF9maWxlID0gRGlmZkZpbGUoZmlsZW5hbWUpCisgICAgICAgICAgICAgICAgc2Vs
Zi5maWxlc1tmaWxlbmFtZV0gPSBjdXJyZW50X2ZpbGUKKyAgICAgICAgICAgICAgICBzdGF0ZSA9
IF9ERUNMQVJFRF9GSUxFX1BBVEgKKyAgICAgICAgICAgICAgICBjb250aW51ZQorCisgICAgICAg
ICAgICBsaW5lc19jaGFuZ2VkID0gbWF0Y2gociJeQEAgLSg/UDxPbGRTdGFydExpbmU+XGQrKSgs
XGQrKT8gXCsoP1A8TmV3U3RhcnRMaW5lPlxkKykoLFxkKyk/IEBAIiwgbGluZSkKKyAgICAgICAg
ICAgIGlmIGxpbmVzX2NoYW5nZWQ6CisgICAgICAgICAgICAgICAgaWYgc3RhdGUgIT0gX0RFQ0xB
UkVEX0ZJTEVfUEFUSCBhbmQgc3RhdGUgIT0gX1BST0NFU1NJTkdfQ0hVTks6CisgICAgICAgICAg
ICAgICAgICAgIGxvZ2dpbmcuZXJyb3IoJ1VuZXhwZWN0ZWQgbGluZSBjaGFuZ2Ugd2l0aG91dCBm
aWxlIHBhdGggZGVjbGFyYXRpb246ICVyJyAlIGxpbmUpCisgICAgICAgICAgICAgICAgb2xkX2Rp
ZmZfbGluZSA9IGludChsaW5lc19jaGFuZ2VkLmdyb3VwKCdPbGRTdGFydExpbmUnKSkKKyAgICAg
ICAgICAgICAgICBuZXdfZGlmZl9saW5lID0gaW50KGxpbmVzX2NoYW5nZWQuZ3JvdXAoJ05ld1N0
YXJ0TGluZScpKQorICAgICAgICAgICAgICAgIHN0YXRlID0gX1BST0NFU1NJTkdfQ0hVTksKKyAg
ICAgICAgICAgICAgICBjb250aW51ZQorCisgICAgICAgICAgICBpZiBzdGF0ZSA9PSBfUFJPQ0VT
U0lOR19DSFVOSzoKKyAgICAgICAgICAgICAgICBpZiBsaW5lLnN0YXJ0c3dpdGgoJysnKToKKyAg
ICAgICAgICAgICAgICAgICAgY3VycmVudF9maWxlLmFkZF9uZXdfbGluZShuZXdfZGlmZl9saW5l
LCBsaW5lWzE6XSkKKyAgICAgICAgICAgICAgICAgICAgbmV3X2RpZmZfbGluZSArPSAxCisgICAg
ICAgICAgICAgICAgZWxpZiBsaW5lLnN0YXJ0c3dpdGgoJy0nKToKKyAgICAgICAgICAgICAgICAg
ICAgY3VycmVudF9maWxlLmFkZF9vbGRfbGluZShvbGRfZGlmZl9saW5lLCBsaW5lWzE6XSkKKyAg
ICAgICAgICAgICAgICAgICAgb2xkX2RpZmZfbGluZSArPSAxCisgICAgICAgICAgICAgICAgZWxp
ZiBsaW5lLnN0YXJ0c3dpdGgoJyAnKToKKyAgICAgICAgICAgICAgICAgICAgY3VycmVudF9maWxl
LmFkZF91bmNoYW5nZWRfbGluZShvbGRfZGlmZl9saW5lLCBuZXdfZGlmZl9saW5lLCBsaW5lWzE6
XSkKKyAgICAgICAgICAgICAgICAgICAgb2xkX2RpZmZfbGluZSArPSAxCisgICAgICAgICAgICAg
ICAgICAgIG5ld19kaWZmX2xpbmUgKz0gMQorICAgICAgICAgICAgICAgIGVsaWYgbGluZSA9PSAn
XFwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZVxuJzoKKyAgICAgICAgICAgICAgICAgICAgIyBO
b3RoaW5nIHRvIGRvLiAgV2UgbWF5IHN0aWxsIGhhdmUgc29tZSBhZGRlZCBsaW5lcy4KKyAgICAg
ICAgICAgICAgICAgICAgcGFzcworICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAg
ICAgICAgIGxvZ2dpbmcuZXJyb3IoJ1VuZXhwZWN0ZWQgZGlmZiBmb3JtYXQgd2hlbiBwYXJzaW5n
IGEgY2h1bms6ICVyJyAlIGxpbmUpCmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9TY3JpcHRzL21v
ZHVsZXMvZGlmZl9wYXJzZXJfdW5pdHRlc3QucHkgYi9XZWJLaXRUb29scy9TY3JpcHRzL21vZHVs
ZXMvZGlmZl9wYXJzZXJfdW5pdHRlc3QucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMC4uNzM4ZDA1NQotLS0gL2Rldi9udWxsCisrKyBiL1dlYktpdFRvb2xzL1NjcmlwdHMvbW9k
dWxlcy9kaWZmX3BhcnNlcl91bml0dGVzdC5weQpAQCAtMCwwICsxLDExOCBAQAorIyBDb3B5cmln
aHQgKEMpIDIwMDkgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucyBhcmUKKyMgbWV0OgorIworIyAgICAqIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMg
ICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlCisjIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIKKyMgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorIyBkaXN0cmlidXRpb24uCisjICAgICogTmVp
dGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworIyBjb250
cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2
ZWQgZnJvbQorIyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBw
ZXJtaXNzaW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklH
SFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisjICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisjIExJTUlURUQgVE8sIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgor
IyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
VEhFIENPUFlSSUdIVAorIyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyMgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorIyBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwK
KyMgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZCisjIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisjIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisKK2ltcG9ydCB1bml0dGVzdAoraW1wb3J0IGRpZmZfcGFyc2VyCisKKworY2xhc3MgRGlm
ZlBhcnNlclRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgorCisgICAgX1BBVENIID0gJycnZGlmZiAt
LWdpdCBhL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlRmxleGlibGVCb3hEYXRhLmggYi9X
ZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZUZsZXhpYmxlQm94RGF0YS5oCitpbmRleCBmNWQ1
ZTc0Li4zYjZhYTkyIDEwMDY0NAorLS0tIGEvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVG
bGV4aWJsZUJveERhdGEuaAorKysrIGIvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVGbGV4
aWJsZUJveERhdGEuaAorQEAgLTQ3LDcgKzQ3LDYgQEAgcHVibGljOgorIAorICAgICB1bnNpZ25l
ZCBhbGlnbiA6IDM7IC8vIEVCb3hBbGlnbm1lbnQKKyAgICAgdW5zaWduZWQgcGFjazogMzsgLy8g
RUJveEFsaWdubWVudAorLSAgICB1bnNpZ25lZCBvcmllbnQ6IDE7IC8vIEVCb3hPcmllbnQKKyAg
ICAgdW5zaWduZWQgbGluZXMgOiAxOyAvLyBFQm94TGluZXMKKyAKKyBwcml2YXRlOgorZGlmZiAt
LWdpdCBhL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlUmFyZUluaGVyaXRlZERhdGEuY3Bw
IGIvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVSYXJlSW5oZXJpdGVkRGF0YS5jcHAKK2lu
ZGV4IGNlMjE3MjAuLjMyNDkyOWUgMTAwNjQ0CistLS0gYS9XZWJDb3JlL3JlbmRlcmluZy9zdHls
ZS9TdHlsZVJhcmVJbmhlcml0ZWREYXRhLmNwcAorKysrIGIvV2ViQ29yZS9yZW5kZXJpbmcvc3R5
bGUvU3R5bGVSYXJlSW5oZXJpdGVkRGF0YS5jcHAKK0BAIC0zOSw2ICszOSw3IEBAIFN0eWxlUmFy
ZUluaGVyaXRlZERhdGE6OlN0eWxlUmFyZUluaGVyaXRlZERhdGEoKQorICAgICAsIHRleHRTaXpl
QWRqdXN0KFJlbmRlclN0eWxlOjppbml0aWFsVGV4dFNpemVBZGp1c3QoKSkKKyAgICAgLCByZXNp
emUoUmVuZGVyU3R5bGU6OmluaXRpYWxSZXNpemUoKSkKKyAgICAgLCB1c2VyU2VsZWN0KFJlbmRl
clN0eWxlOjppbml0aWFsVXNlclNlbGVjdCgpKQorKyAgICAsIGJveE9yaWVudChSZW5kZXJTdHls
ZTo6aW5pdGlhbEJveE9yaWVudCgpKQorIHsKKyB9CisgCitAQCAtNTgsNiArNTksNyBAQCBTdHls
ZVJhcmVJbmhlcml0ZWREYXRhOjpTdHlsZVJhcmVJbmhlcml0ZWREYXRhKGNvbnN0IFN0eWxlUmFy
ZUluaGVyaXRlZERhdGEmIG8pCisgICAgICwgdGV4dFNpemVBZGp1c3Qoby50ZXh0U2l6ZUFkanVz
dCkKKyAgICAgLCByZXNpemUoby5yZXNpemUpCisgICAgICwgdXNlclNlbGVjdChvLnVzZXJTZWxl
Y3QpCisrICAgICwgYm94T3JpZW50KG8uYm94T3JpZW50KQorIHsKKyB9CisgCitAQCAtODEsNyAr
ODMsOCBAQCBib29sIFN0eWxlUmFyZUluaGVyaXRlZERhdGE6Om9wZXJhdG9yPT0oY29uc3QgU3R5
bGVSYXJlSW5oZXJpdGVkRGF0YSYgbykgY29uc3QKKyAgICAgICAgICYmIGtodG1sTGluZUJyZWFr
ID09IG8ua2h0bWxMaW5lQnJlYWsKKyAgICAgICAgICYmIHRleHRTaXplQWRqdXN0ID09IG8udGV4
dFNpemVBZGp1c3QKKyAgICAgICAgICYmIHJlc2l6ZSA9PSBvLnJlc2l6ZQorLSAgICAgICAgJiYg
dXNlclNlbGVjdCA9PSBvLnVzZXJTZWxlY3Q7CisrICAgICAgICAmJiB1c2VyU2VsZWN0ID09IG8u
dXNlclNlbGVjdAorKyAgICAgICAgJiYgYm94T3JpZW50ID09IG8uYm94T3JpZW50OworIH0KKyAK
KyBib29sIFN0eWxlUmFyZUluaGVyaXRlZERhdGE6OnNoYWRvd0RhdGFFcXVpdmFsZW50KGNvbnN0
IFN0eWxlUmFyZUluaGVyaXRlZERhdGEmIG8pIGNvbnN0CisnJycuc3BsaXRsaW5lcygpCisKKwor
ICAgIGRlZiB0ZXN0X2RpZmZfcGFyc2VyKHNlbGYpOgorICAgICAgICBwYXJzZXIgPSBkaWZmX3Bh
cnNlci5EaWZmUGFyc2VyKHNlbGYuX1BBVENIKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFscygy
LCBsZW4ocGFyc2VyLmZpbGVzKSkKKworICAgICAgICBzZWxmLmFzc2VydFRydWUoJ1dlYkNvcmUv
cmVuZGVyaW5nL3N0eWxlL1N0eWxlRmxleGlibGVCb3hEYXRhLmgnIGluIHBhcnNlci5maWxlcykK
KyAgICAgICAgZGlmZiA9IHBhcnNlci5maWxlc1snV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5
bGVGbGV4aWJsZUJveERhdGEuaCddCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKDcsIGxlbihk
aWZmLmxpbmVzKSkKKyAgICAgICAgIyBUaGUgZmlyc3QgdHdvIHVuY2hhZ2VkIGxpbmVzLgorICAg
ICAgICBzZWxmLmFzc2VydEVxdWFscygoNDcsIDQ3KSwgZGlmZi5saW5lc1swXVswOjJdKQorICAg
ICAgICBzZWxmLmFzc2VydEVxdWFscygnJywgZGlmZi5saW5lc1swXVsyXSkKKyAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbHMoKDQ4LCA0OCksIGRpZmYubGluZXNbMV1bMDoyXSkKKyAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbHMoJyAgICB1bnNpZ25lZCBhbGlnbiA6IDM7IC8vIEVCb3hBbGlnbm1lbnQn
LCBkaWZmLmxpbmVzWzFdWzJdKQorICAgICAgICAjIFRoZSBkZWxldGVkIGxpbmUKKyAgICAgICAg
c2VsZi5hc3NlcnRFcXVhbHMoKDUwLCAwKSwgZGlmZi5saW5lc1szXVswOjJdKQorICAgICAgICBz
ZWxmLmFzc2VydEVxdWFscygnICAgIHVuc2lnbmVkIG9yaWVudDogMTsgLy8gRUJveE9yaWVudCcs
IGRpZmYubGluZXNbM11bMl0pCisKKyAgICAgICAgIyBUaGUgZmlyc3QgZmlsZSBsb29rcyBPSy4g
TGV0J3MgY2hlY2sgdGhlIG5leHQsIG1vcmUgY29tcGxpY2F0ZWQgZmlsZS4KKyAgICAgICAgc2Vs
Zi5hc3NlcnRUcnVlKCdXZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZVJhcmVJbmhlcml0ZWRE
YXRhLmNwcCcgaW4gcGFyc2VyLmZpbGVzKQorICAgICAgICBkaWZmID0gcGFyc2VyLmZpbGVzWydX
ZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZVJhcmVJbmhlcml0ZWREYXRhLmNwcCddCisgICAg
ICAgICMgVGhlcmUgYXJlIDMgY2h1bmtzLgorICAgICAgICBzZWxmLmFzc2VydEVxdWFscyg3ICsg
NyArIDksIGxlbihkaWZmLmxpbmVzKSkKKyAgICAgICAgIyBBcm91bmQgYW4gYWRkZWQgbGluZS4K
KyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoKDYwLCA2MSksIGRpZmYubGluZXNbOV1bMDoyXSkK
KyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoKDAsIDYyKSwgZGlmZi5saW5lc1sxMF1bMDoyXSkK
KyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoKDYxLCA2MyksIGRpZmYubGluZXNbMTFdWzA6Ml0p
CisgICAgICAgICMgTG9vayB0aHJvdWdoIHRoZSBsYXN0IGNodW5rLCB3aGljaCBjb250YWlucyBi
b3RoIGFkZCdzIGFuZCBkZWxldGUncy4KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoKDgxLCA4
MyksIGRpZmYubGluZXNbMTRdWzA6Ml0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKCg4Miwg
ODQpLCBkaWZmLmxpbmVzWzE1XVswOjJdKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFscygoODMs
IDg1KSwgZGlmZi5saW5lc1sxNl1bMDoyXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoKDg0
LCAwKSwgZGlmZi5saW5lc1sxN11bMDoyXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoKDAs
IDg2KSwgZGlmZi5saW5lc1sxOF1bMDoyXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoKDAs
IDg3KSwgZGlmZi5saW5lc1sxOV1bMDoyXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoKDg1
LCA4OCksIGRpZmYubGluZXNbMjBdWzA6Ml0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKCg4
NiwgODkpLCBkaWZmLmxpbmVzWzIxXVswOjJdKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFscygo
ODcsIDkwKSwgZGlmZi5saW5lc1syMl1bMDoyXSkKKworCitpZiBfX25hbWVfXyA9PSAnX19tYWlu
X18nOgorICAgIHVuaXR0ZXN0Lm1haW4oKQ==
</data>
<flag name="review"
          id="17274"
          type_id="1"
          status="+"
          setter="levin"
    />
          </attachment>
      

    </bug>

</bugzilla>