<?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>57872</bug_id>
          
          <creation_ts>2011-04-05 12:36:05 -0700</creation_ts>
          <short_desc>REGRESSION (r46914, r48764): When typing in Mail, line wrapping frequently occurs in the middle of words</short_desc>
          <delta_ts>2011-04-07 21:11:39 -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>HTML Editing</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>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>57978</dependson>
    
    <dependson>58019</dependson>
    
    <dependson>58037</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Adele Peterson">adele</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>abarth</cc>
    
    <cc>adele</cc>
    
    <cc>commit-queue</cc>
    
    <cc>darin</cc>
    
    <cc>enrica</cc>
    
    <cc>eric</cc>
    
    <cc>mitz</cc>
    
    <cc>rniwa</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>379804</commentid>
    <comment_count>0</comment_count>
      <attachid>88293</attachid>
    <who name="Adele Peterson">adele</who>
    <bug_when>2011-04-05 12:36:05 -0700</bug_when>
    <thetext>Created attachment 88293
testcase

&lt;rdar://problem/8157205&gt;

http://trac.webkit.org/changeset/46914 was not supposed to change behavior, but it definitely did.


From looking of different reports of this problem, it seems to frequently happen with tab characters.  I&apos;m attaching an example that shows the problem.  Before r46914, when you hit enter after the tab character and start typing, the new text doesn&apos;t get the &quot;white-space: pre&quot; style, but after that change, it does.

To fix Mail, if we changed the tab style to use &quot;pre-wrap&quot;, that would fix this problem, but I&apos;d like to figure out what went wrong in r46914, and whether we can go back to the old behavior.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>380251</commentid>
    <comment_count>1</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-04-06 03:28:12 -0700</bug_when>
    <thetext>This bug was a regression from two change sets. http://trac.webkit.org/changeset/46914 initially introduced a regression because it wasn&apos;t avoiding tab span to obtain the computed style to apply after the insertion.  http://trac.webkit.org/changeset/46914 introduced another regression by copying hierarchy under new block at the insertion position without avoiding the tab span.

I&apos;m going to upload a patch in a minute to fix this bug, but we should really get rid of this tab span business at some point.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>380252</commentid>
    <comment_count>2</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-04-06 03:28:45 -0700</bug_when>
    <thetext>I mean to say &quot;r48764 introduced another regression&quot;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>380287</commentid>
    <comment_count>3</comment_count>
      <attachid>88401</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-04-06 05:49:34 -0700</bug_when>
    <thetext>Created attachment 88401
fixes the bug</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>380290</commentid>
    <comment_count>4</comment_count>
      <attachid>88401</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-04-06 05:53:22 -0700</bug_when>
    <thetext>Comment on attachment 88401
fixes the bug

Seems reasonable.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>380291</commentid>
    <comment_count>5</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-04-06 05:55:27 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; (From update of attachment 88401 [details])
&gt; Seems reasonable.

Thanks for the review! Landing it now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>380296</commentid>
    <comment_count>6</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-04-06 05:59:40 -0700</bug_when>
    <thetext>Committed r83039: &lt;http://trac.webkit.org/changeset/83039&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>380323</commentid>
    <comment_count>7</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-04-06 06:54:05 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/83039 might have broken Windows 7 Release (Tests)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>380750</commentid>
    <comment_count>8</comment_count>
    <who name="Adele Peterson">adele</who>
    <bug_when>2011-04-06 13:03:53 -0700</bug_when>
    <thetext>I believe this caused a serious regression, and may need to be rolled out.

Running Mail with this change, use the following steps:

- Set a default signature
- Place the caret at the beginning of the message
- Hit tab
- Copy a url from Safari&apos;s address field and paste it into the message
- Hit Enter

The caret will skip over the signature and land at the end of the message</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>380766</commentid>
    <comment_count>9</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-04-06 13:22:10 -0700</bug_when>
    <thetext>(In reply to comment #8)
&gt; Running Mail with this change, use the following steps:
&gt; 
&gt; - Set a default signature
&gt; - Place the caret at the beginning of the message
&gt; - Hit tab
&gt; - Copy a url from Safari&apos;s address field and paste it into the message
&gt; - Hit Enter
&gt; 
&gt; The caret will skip over the signature and land at the end of the message

Mn... that seems to imply that the pasted URL is inserted inside a tab span because all this patch does is to avoid inserting a paragraph separator inside a tab span.

Do you happen to know the HTML right before you hit the enter?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>380770</commentid>
    <comment_count>10</comment_count>
    <who name="Adele Peterson">adele</who>
    <bug_when>2011-04-06 13:31:37 -0700</bug_when>
    <thetext>Yes, you&apos;re right that the url gets pasted in the tab-span.

&lt;html&gt;&lt;head&gt;&lt;/head&gt;&lt;body style=&quot;word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; &quot;&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;	https://bugs.webkit.org/show_bug.cgi?id=57872&lt;/span&gt;&lt;br&gt;&lt;div id=&quot;AppleMailSignature&quot;&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;border-collapse: separate; color: rgb(0, 0, 0); font-family: Helvetica; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-align: -webkit-auto; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; font-size: medium; &quot;&gt;&lt;div&gt;Thanks,&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre; &quot;&gt;	&lt;/span&gt;Adele&lt;/div&gt;&lt;/span&gt;
&lt;/div&gt;
&lt;br&gt;&lt;/body&gt;&lt;/html&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>380787</commentid>
    <comment_count>11</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-04-06 13:48:00 -0700</bug_when>
    <thetext>I&apos;m rolling out http://trac.webkit.org/changeset/83039 for now per Adele&apos;s request. Will investigate the regression tomorrow.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>381003</commentid>
    <comment_count>12</comment_count>
      <attachid>88549</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-04-06 17:48:14 -0700</bug_when>
    <thetext>Created attachment 88549
work in progress (applies on top of the original patch)

Here&apos;s working in progress.  I&apos;m reverting r48764 for the general path and instead solving the bug 29740 (a.k.a. rdar://problem/7168738) by splitting nodes up until the startBlock.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>381345</commentid>
    <comment_count>13</comment_count>
      <attachid>88639</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-04-07 08:02:56 -0700</bug_when>
    <thetext>Created attachment 88639
complete patch (needs to rebaseline editing/inserting/6633727.html)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>381346</commentid>
    <comment_count>14</comment_count>
      <attachid>88639</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-04-07 08:04:11 -0700</bug_when>
    <thetext>Comment on attachment 88639
complete patch (needs to rebaseline editing/inserting/6633727.html)

Here&apos;s my latest work in progress. I can upload the final patch for review as soon as the bug 58037 is fixed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>381621</commentid>
    <comment_count>15</comment_count>
      <attachid>88679</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-04-07 13:20:07 -0700</bug_when>
    <thetext>Created attachment 88679
fixes the bug</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>381625</commentid>
    <comment_count>16</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-04-07 13:23:50 -0700</bug_when>
    <thetext>This patch hopefully fix all the regressions and bugs we have.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>381634</commentid>
    <comment_count>17</comment_count>
      <attachid>88679</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2011-04-07 13:32:45 -0700</bug_when>
    <thetext>Comment on attachment 88679
fixes the bug

Looks like a good approach.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>381639</commentid>
    <comment_count>18</comment_count>
      <attachid>88679</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-04-07 13:35:39 -0700</bug_when>
    <thetext>Comment on attachment 88679
fixes the bug

(In reply to comment #17)
&gt; (From update of attachment 88679 [details])
&gt; Looks like a good approach.

Thanks for the review.  Hopefully, this won&apos;t introduce a new regression...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>381976</commentid>
    <comment_count>19</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2011-04-07 21:08:01 -0700</bug_when>
    <thetext>The commit-queue encountered the following flaky tests while processing attachment 88679:

http/tests/websocket/tests/multiple-connections.html bug 53825 (author: abarth@webkit.org)
The commit-queue is continuing to process your patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>381977</commentid>
    <comment_count>20</comment_count>
      <attachid>88679</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2011-04-07 21:11:34 -0700</bug_when>
    <thetext>Comment on attachment 88679
fixes the bug

Clearing flags on attachment: 88679

Committed r83247: &lt;http://trac.webkit.org/changeset/83247&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>381978</commentid>
    <comment_count>21</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2011-04-07 21:11:39 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>88293</attachid>
            <date>2011-04-05 12:36:05 -0700</date>
            <delta_ts>2011-04-05 12:36:05 -0700</delta_ts>
            <desc>testcase</desc>
            <filename>bad.html</filename>
            <type>text/html</type>
            <size>755</size>
            <attacher name="Adele Peterson">adele</attacher>
            
              <data encoding="base64">PGh0bWw+CiAgICA8aGVhZD4KICAgICAgICA8c2NyaXB0PgogICAgICAgICAgICBmdW5jdGlvbiB0
ZXN0KCkKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgdmFyIHJvb3QgPSBkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZCgncm9vdCcpOwogICAgICAgICAgICAgICAgd2luZG93LmdldFNlbGVjdGlv
bigpLnNldFBvc2l0aW9uKHJvb3QsIDEpOwogICAgICAgICAgICAgICAgZG9jdW1lbnQuZXhlY0Nv
bW1hbmQoIkluc2VydFBhcmFncmFwaCIpOyAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICBk
b2N1bWVudC5leGVjQ29tbWFuZCgiSW5zZXJ0VGV4dCIsIGZhbHNlLCAidGVzdGluZyAxMjMgdGVz
dGluZyAxMjMgdGVzdGluZy4iKTsgICAgICAgICAgICAgICAgCiAgICAgICAgICAgIH0KICAgICAg
ICA8L3NjcmlwdD4KICAgICAgICA8c3R5bGU+CiAgICAgICAgICAgICNyb290IHsKICAgICAgICAg
ICAgICAgIGJvcmRlcjogc29saWQgdGhpbiBibGFjazsKICAgICAgICAgICAgICAgIHdpZHRoOiAx
MDBweDsKICAgICAgICAgICAgICAgIHdvcmQtd3JhcDogYnJlYWstd29yZDsKICAgICAgICAgICAg
fQogICAgICAgIDwvc3R5bGU+CiAgICA8L2hlYWQ+CiAgICA8Ym9keSBvbmxvYWQ9InRlc3QoKSI+
CiAgICAgICAgPGRpdiBjb250ZW50ZWRpdGFibGUgaWQ9InJvb3QiPjxzcGFuIGNsYXNzPSJBcHBs
ZS10YWItc3BhbiIgc3R5bGU9IndoaXRlLXNwYWNlOnByZSI+CTwvc3Bhbj48L2Rpdj4KICAgIDwv
Ym9keT4KPC9odG1sPgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>88401</attachid>
            <date>2011-04-06 05:49:34 -0700</date>
            <delta_ts>2011-04-07 08:02:39 -0700</delta_ts>
            <desc>fixes the bug</desc>
            <filename>bug-57872-20110406154930.patch</filename>
            <type>text/plain</type>
            <size>8752</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDgzMDM3KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjYgQEAKKzIwMTEtMDQtMDYgIFJ5b3N1a2Ug
Tml3YSAgPHJuaXdhQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgUkVHUkVTU0lPTiAocjQ2OTE0LCByNDg3NjQpOiBXaGVuIHR5cGlu
ZyBpbiBNYWlsLCBsaW5lIHdyYXBwaW5nIGZyZXF1ZW50bHkgb2NjdXJzIGluIHRoZSBtaWRkbGUg
b2Ygd29yZHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTU3ODcyCisKKyAgICAgICAgcjQ2OTE0IGluaXRpYWxseSBpbnRyb2R1Y2VkIGEgcmVncmVzc2lv
biBieSByZXBsYWNpbmcgY2FsbHMgdG8gc3R5bGVBdFBvc2l0aW9uIGJ5IGVkaXRpbmdTdHlsZUF0
UG9zaXRpb24KKyAgICAgICAgYmVjYXVzZSBlZGl0aW5nU3R5bGVBdFBvc2l0aW9uIGRpZCBub3Qg
YXZvaWQgdGFiIHNwYW4gdG8gb2J0YWluIHRoZSBjb21wdXRlZCBzdHlsZSB1bmxpa2Ugc3R5bGVB
dFBvc2l0aW9uLgorCisgICAgICAgIHI0NjkxNCBhbHNvIGludHJvZHVjZWQgYSByZWdyZXNzaW9u
IGJ5IGNsb25pbmcgaGllcmFyY2h5IHVuZGVyIG5ldyBibG9jayBhdCB0aGUgaW5zZXJ0aW9uIHBv
c2l0aW9uIHdpdGhvdXQKKyAgICAgICAgYXZvaWRpbmcgdGhlIHRhYiBzcGFuLgorCisgICAgICAg
IEZpeGVkIHRoZSBib3RoIHJlZ3Jlc3Npb25zIGJ5IGF2b2lkaW5nIHRhYiBzcGFucyB3aGVuIGNv
bXB1dGluZyB0aGUgZWRpdGluZyBzdHlsZSBhbmQgd2hlbiBjbG9uaW5nIGhpZXJhcmNoeS4KKwor
ICAgICAgICBUZXN0OiBlZGl0aW5nL2luc2VydGluZy9pbnNlcnQtcGFyYWdyYXBoLXNlcGFyYXRv
ci10YWItc3Bhbi5odG1sCisKKyAgICAgICAgKiBlZGl0aW5nL0VkaXRpbmdTdHlsZS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpFZGl0aW5nU3R5bGU6OmluaXQpOiBBbHdheXMgYXZvaWQgYSB0YWIg
c3BhbiB3aGVuIGNvbXB1dGluZyB0aGUgZWRpdGluZyBzdHlsZS4KKyAgICAgICAgKiBlZGl0aW5n
L0luc2VydFBhcmFncmFwaFNlcGFyYXRvckNvbW1hbmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
SW5zZXJ0UGFyYWdyYXBoU2VwYXJhdG9yQ29tbWFuZDo6ZG9BcHBseSk6IEF2b2lkIGNsb25pbmcg
dGFiIHNwYW5zIGFuZCBpbnNlcnRpbmcgYSBwYXJhZ3JhcGgKKyAgICAgICAgc2VwYXJhdG9yIGlu
dG8gYSBwYXJhZ3JhcGggc2VwYXJhdG9yLgorCiAyMDExLTA0LTA1ICBBbGV4YW5kZXIgUGF2bG92
ICA8YXBhdmxvdkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgUGF2ZWwgRmVs
ZG1hbi4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdGluZ1N0eWxlLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRpbmdTdHlsZS5jcHAJKHJldmlz
aW9uIDgyOTA2KQorKysgU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0aW5nU3R5bGUuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0zMDAsNiArMzAwLDExIEBAIEVkaXRpbmdTdHlsZTo6fkVkaXRpbmdT
dHlsZSgpCiAKIHZvaWQgRWRpdGluZ1N0eWxlOjppbml0KE5vZGUqIG5vZGUsIFByb3BlcnRpZXNU
b0luY2x1ZGUgcHJvcGVydGllc1RvSW5jbHVkZSkKIHsKKyAgICBpZiAoaXNUYWJTcGFuVGV4dE5v
ZGUobm9kZSkpCisgICAgICAgIG5vZGUgPSB0YWJTcGFuTm9kZShub2RlKS0+cGFyZW50Tm9kZSgp
OworICAgIGVsc2UgaWYgKGlzVGFiU3Bhbk5vZGUobm9kZSkpCisgICAgICAgIG5vZGUgPSBub2Rl
LT5wYXJlbnROb2RlKCk7CisKICAgICBSZWZQdHI8Q1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9u
PiBjb21wdXRlZFN0eWxlQXRQb3NpdGlvbiA9IGNvbXB1dGVkU3R5bGUobm9kZSk7CiAgICAgbV9t
dXRhYmxlU3R5bGUgPSBwcm9wZXJ0aWVzVG9JbmNsdWRlID09IEFsbFByb3BlcnRpZXMgJiYgY29t
cHV0ZWRTdHlsZUF0UG9zaXRpb24gPyBjb21wdXRlZFN0eWxlQXRQb3NpdGlvbi0+Y29weSgpIDog
ZWRpdGluZ1N0eWxlRnJvbUNvbXB1dGVkU3R5bGUoY29tcHV0ZWRTdHlsZUF0UG9zaXRpb24pOwog
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0luc2VydFBhcmFncmFwaFNlcGFyYXRvckNv
bW1hbmQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvSW5zZXJ0UGFy
YWdyYXBoU2VwYXJhdG9yQ29tbWFuZC5jcHAJKHJldmlzaW9uIDgyOTA2KQorKysgU291cmNlL1dl
YkNvcmUvZWRpdGluZy9JbnNlcnRQYXJhZ3JhcGhTZXBhcmF0b3JDb21tYW5kLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMjM5LDcgKzIzOSw3IEBAIHZvaWQgSW5zZXJ0UGFyYWdyYXBoU2VwYXJhdG9y
Q29tbWFuZDo6ZG8KICAgICAgICAgLy8gUmVjcmVhdGUgdGhlIHNhbWUgc3RydWN0dXJlIGluIHRo
ZSBuZXcgcGFyYWdyYXBoLgogICAgICAgICAKICAgICAgICAgVmVjdG9yPEVsZW1lbnQqPiBhbmNl
c3RvcnM7Ci0gICAgICAgIGdldEFuY2VzdG9yc0luc2lkZUJsb2NrKGluc2VydGlvblBvc2l0aW9u
LmRlcHJlY2F0ZWROb2RlKCksIHN0YXJ0QmxvY2ssIGFuY2VzdG9ycyk7ICAgICAgCisgICAgICAg
IGdldEFuY2VzdG9yc0luc2lkZUJsb2NrKHBvc2l0aW9uQmVmb3JlVGFiU3BhbihpbnNlcnRpb25Q
b3NpdGlvbikuZGVwcmVjYXRlZE5vZGUoKSwgc3RhcnRCbG9jaywgYW5jZXN0b3JzKTsgICAgICAK
ICAgICAgICAgUmVmUHRyPEVsZW1lbnQ+IHBhcmVudCA9IGNsb25lSGllcmFyY2h5VW5kZXJOZXdC
bG9jayhhbmNlc3RvcnMsIGJsb2NrVG9JbnNlcnQpOwogICAgICAgICAKICAgICAgICAgYXBwZW5k
QmxvY2tQbGFjZWhvbGRlcihwYXJlbnQpOwpAQCAtMjU0LDYgKzI1NCw5IEBAIHZvaWQgSW5zZXJ0
UGFyYWdyYXBoU2VwYXJhdG9yQ29tbWFuZDo6ZG8KICAgICAvLyBzaW1pbGFyIGNhc2Ugd2hlcmUg
cHJldmlvdXMgcG9zaXRpb24gaXMgaW4gYW5vdGhlciwgcHJlc3VtZWFibHkgbmVzdGVkLCBibG9j
ay4KICAgICBpZiAoaXNGaXJzdEluQmxvY2sgfHwgIWluU2FtZUJsb2NrKHZpc2libGVQb3MsIHZp
c2libGVQb3MucHJldmlvdXMoKSkpIHsKICAgICAgICAgTm9kZSAqcmVmTm9kZTsKKyAgICAgICAg
CisgICAgICAgIGluc2VydGlvblBvc2l0aW9uID0gcG9zaXRpb25CZWZvcmVUYWJTcGFuKGluc2Vy
dGlvblBvc2l0aW9uKTsKKwogICAgICAgICBpZiAoaXNGaXJzdEluQmxvY2sgJiYgIW5lc3ROZXdC
bG9jaykKICAgICAgICAgICAgIHJlZk5vZGUgPSBzdGFydEJsb2NrOwogICAgICAgICBlbHNlIGlm
IChpbnNlcnRpb25Qb3NpdGlvbi5kZXByZWNhdGVkTm9kZSgpID09IHN0YXJ0QmxvY2sgJiYgbmVz
dE5ld0Jsb2NrKSB7CkBAIC0yNzAsNyArMjczLDcgQEAgdm9pZCBJbnNlcnRQYXJhZ3JhcGhTZXBh
cmF0b3JDb21tYW5kOjpkbwogICAgICAgICAvLyBSZWNyZWF0ZSB0aGUgc2FtZSBzdHJ1Y3R1cmUg
aW4gdGhlIG5ldyBwYXJhZ3JhcGguCiAKICAgICAgICAgVmVjdG9yPEVsZW1lbnQqPiBhbmNlc3Rv
cnM7Ci0gICAgICAgIGdldEFuY2VzdG9yc0luc2lkZUJsb2NrKHBvc2l0aW9uQXZvaWRpbmdTcGVj
aWFsRWxlbWVudEJvdW5kYXJ5KGluc2VydGlvblBvc2l0aW9uKS5kZXByZWNhdGVkTm9kZSgpLCBz
dGFydEJsb2NrLCBhbmNlc3RvcnMpOworICAgICAgICBnZXRBbmNlc3RvcnNJbnNpZGVCbG9jayhw
b3NpdGlvbkF2b2lkaW5nU3BlY2lhbEVsZW1lbnRCb3VuZGFyeShwb3NpdGlvbkJlZm9yZVRhYlNw
YW4oaW5zZXJ0aW9uUG9zaXRpb24pKS5kZXByZWNhdGVkTm9kZSgpLCBzdGFydEJsb2NrLCBhbmNl
c3RvcnMpOwogICAgICAgICAKICAgICAgICAgYXBwZW5kQmxvY2tQbGFjZWhvbGRlcihjbG9uZUhp
ZXJhcmNoeVVuZGVyTmV3QmxvY2soYW5jZXN0b3JzLCBibG9ja1RvSW5zZXJ0KSk7CiAgICAgICAg
IApAQCAtMzAzLDcgKzMwNiw3IEBAIHZvaWQgSW5zZXJ0UGFyYWdyYXBoU2VwYXJhdG9yQ29tbWFu
ZDo6ZG8KIAogICAgIC8vIEJ1aWxkIHVwIGxpc3Qgb2YgYW5jZXN0b3JzIGluIGJldHdlZW4gdGhl
IHN0YXJ0IG5vZGUgYW5kIHRoZSBzdGFydCBibG9jay4KICAgICBWZWN0b3I8RWxlbWVudCo+IGFu
Y2VzdG9yczsKLSAgICBnZXRBbmNlc3RvcnNJbnNpZGVCbG9jayhpbnNlcnRpb25Qb3NpdGlvbi5k
ZXByZWNhdGVkTm9kZSgpLCBzdGFydEJsb2NrLCBhbmNlc3RvcnMpOworICAgIGdldEFuY2VzdG9y
c0luc2lkZUJsb2NrKHBvc2l0aW9uQmVmb3JlVGFiU3BhbihpbnNlcnRpb25Qb3NpdGlvbikuZGVw
cmVjYXRlZE5vZGUoKSwgc3RhcnRCbG9jaywgYW5jZXN0b3JzKTsKIAogICAgIC8vIE1ha2Ugc3Vy
ZSB3ZSBkbyBub3QgY2F1c2UgYSByZW5kZXJlZCBzcGFjZSB0byBiZWNvbWUgdW5yZW5kZXJlZC4K
ICAgICAvLyBGSVhNRTogV2UgbmVlZCB0aGUgYWZmaW5pdHkgZm9yIHBvcywgYnV0IHBvcy5kb3du
c3RyZWFtKCkgZG9lcyBub3QgZ2l2ZSBpdApJbmRleDogTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIExheW91dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNpb24gODMwMzcpCisrKyBM
YXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNiBAQAorMjAx
MS0wNC0wNiAgUnlvc3VrZSBOaXdhICA8cm5pd2FAd2Via2l0Lm9yZz4KKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSRUdSRVNTSU9OIChyNDY5MTQsIHI0
ODc2NCk6IFdoZW4gdHlwaW5nIGluIE1haWwsIGxpbmUgd3JhcHBpbmcgZnJlcXVlbnRseSBvY2N1
cnMgaW4gdGhlIG1pZGRsZSBvZiB3b3JkcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9NTc4NzIKKworICAgICAgICBBZGRlZCBhIHRlc3QgaW5zZXJ0IGEg
cGFyYWdyYXBoIHNlcGFyYXRvciBhbmQgdGV4dCBhcm91bmQgdGFiIHNwYW5zLiBXZWJLaXQgc2hv
dWxkIG5vdCBhcHBseSB0aGUgdGFiIHNwYW4ncworICAgICAgICBzdHlsZSB0byB0aGUgcGFyYWdy
YXBoIHNlcGFyYXRvciBvciB0aGUgdGV4dC4KKworICAgICAgICAqIGVkaXRpbmcvaW5zZXJ0aW5n
L2luc2VydC1wYXJhZ3JhcGgtc2VwYXJhdG9yLXRhYi1zcGFuLWV4cGVjdGVkLnR4dDogQWRkZWQu
CisgICAgICAgICogZWRpdGluZy9pbnNlcnRpbmcvaW5zZXJ0LXBhcmFncmFwaC1zZXBhcmF0b3It
dGFiLXNwYW4uaHRtbDogQWRkZWQuCisKIDIwMTEtMDQtMDUgIEFsZXhhbmRlciBQYXZsb3YgIDxh
cGF2bG92QGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBQYXZlbCBGZWxkbWFu
LgpJbmRleDogTGF5b3V0VGVzdHMvZWRpdGluZy9pbnNlcnRpbmcvaW5zZXJ0LXBhcmFncmFwaC1z
ZXBhcmF0b3ItdGFiLXNwYW4tZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3Rz
L2VkaXRpbmcvaW5zZXJ0aW5nL2luc2VydC1wYXJhZ3JhcGgtc2VwYXJhdG9yLXRhYi1zcGFuLWV4
cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2VkaXRpbmcvaW5zZXJ0aW5n
L2luc2VydC1wYXJhZ3JhcGgtc2VwYXJhdG9yLXRhYi1zcGFuLWV4cGVjdGVkLnR4dAkocmV2aXNp
b24gMCkKQEAgLTAsMCArMSwzOCBAQAorVGhpcyB0ZXN0IGVuc3VyZXMgV2ViS2l0IGF2b2lkcyBj
bG9uaW5nIEFwcGxlIHRhYiBzcGFuIHdoZW4gaW5zZXJ0aW5nIGEgcGFyYWdyYXBoIHNlcGFyYXRv
ci4KK09ubHkgdGFiIHNob3VsZCBiZSBpbnNpZGUgYSBBcHBsZSB0YWIgc3BhbiBpbiB0aGUgZm9s
bG93aW5nIHRlc3RzLgorCitsYXN0IHZpc2libGUgcG9zaXRpb246Cit8IDxzcGFuPgorfCAgIGNs
YXNzPSJBcHBsZS10YWItc3BhbiIKK3wgICBzdHlsZT0id2hpdGUtc3BhY2U6cHJlIgorfCAgICIJ
IgorfCA8ZGl2PgorfCAgICJoZWxsbyB3b3JsZCBXZWJLaXTCoDwjc2VsZWN0aW9uLWNhcmV0PiIK
KworZmlyc3QgdmlzaWJsZSBwb3NpdGlvbjoKK3wgPGRpdj4KK3wgICA8YnI+Cit8ICJoZWxsbyB3
b3JsZCBXZWJLaXTCoDwjc2VsZWN0aW9uLWNhcmV0PiIKK3wgPHNwYW4+Cit8ICAgY2xhc3M9IkFw
cGxlLXRhYi1zcGFuIgorfCAgIHN0eWxlPSJ3aGl0ZS1zcGFjZTpwcmUiCit8ICAgIgkiCisKK2Jl
Zm9yZSB0YWIgc3BhbjoKK3wgImhpLMKgIgorfCA8ZGl2PgorfCAgICJoZWxsbyB3b3JsZCBXZWJL
aXTCoDwjc2VsZWN0aW9uLWNhcmV0PiIKK3wgICA8c3Bhbj4KK3wgICAgIGNsYXNzPSJBcHBsZS10
YWItc3BhbiIKK3wgICAgIHN0eWxlPSJ3aGl0ZS1zcGFjZTpwcmUiCit8ICAgICAiCSIKK3wgICAi
IHJvY2tzIgorCithZnRlciB0YWIgc3BhbjoKK3wgImhpLCAiCit8IDxzcGFuPgorfCAgIGNsYXNz
PSJBcHBsZS10YWItc3BhbiIKK3wgICBzdHlsZT0id2hpdGUtc3BhY2U6cHJlIgorfCAgICIJIgor
fCAiIHJvY2tzaGVsbG8gd29ybGQgV2ViS2l0wqA8I3NlbGVjdGlvbi1jYXJldD4iCit8IDxkaXY+
CkluZGV4OiBMYXlvdXRUZXN0cy9lZGl0aW5nL2luc2VydGluZy9pbnNlcnQtcGFyYWdyYXBoLXNl
cGFyYXRvci10YWItc3Bhbi5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2VkaXRpbmcv
aW5zZXJ0aW5nL2luc2VydC1wYXJhZ3JhcGgtc2VwYXJhdG9yLXRhYi1zcGFuLmh0bWwJKHJldmlz
aW9uIDApCisrKyBMYXlvdXRUZXN0cy9lZGl0aW5nL2luc2VydGluZy9pbnNlcnQtcGFyYWdyYXBo
LXNlcGFyYXRvci10YWItc3Bhbi5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDMyIEBACis8
IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGJvZHk+Cis8ZGl2IGNvbnRlbnRlZGl0YWJsZSB0aXRs
ZT0iMTogbGFzdCB2aXNpYmxlIHBvc2l0aW9uIiBzdHlsZT0id29yZC13cmFwOiBicmVhay13b3Jk
OyB3aWR0aDogMTBleDsgYm9yZGVyOiBzb2xpZCB0aGluIGJsYWNrOyI+PHNwYW4gY2xhc3M9IkFw
cGxlLXRhYi1zcGFuIiBzdHlsZT0id2hpdGUtc3BhY2U6cHJlIj4JPC9zcGFuPjwvZGl2PgorPGRp
diBjb250ZW50ZWRpdGFibGUgdGl0bGU9IjA6IGZpcnN0IHZpc2libGUgcG9zaXRpb24iIHN0eWxl
PSJ3b3JkLXdyYXA6IGJyZWFrLXdvcmQ7IHdpZHRoOiAxMGV4OyBib3JkZXI6IHNvbGlkIHRoaW4g
YmxhY2s7Ij48c3BhbiBjbGFzcz0iQXBwbGUtdGFiLXNwYW4iIHN0eWxlPSJ3aGl0ZS1zcGFjZTpw
cmUiPgk8L3NwYW4+PC9kaXY+Cis8ZGl2IGNvbnRlbnRlZGl0YWJsZSB0aXRsZT0iMTogYmVmb3Jl
IHRhYiBzcGFuIiBzdHlsZT0id29yZC13cmFwOiBicmVhay13b3JkOyB3aWR0aDogMTBleDsgYm9y
ZGVyOiBzb2xpZCB0aGluIGJsYWNrOyI+aGksIDxzcGFuIGNsYXNzPSJBcHBsZS10YWItc3BhbiIg
c3R5bGU9IndoaXRlLXNwYWNlOnByZSI+CTwvc3Bhbj4gcm9ja3M8L2Rpdj4KKzxkaXYgY29udGVu
dGVkaXRhYmxlIHRpdGxlPSIyOiBhZnRlciB0YWIgc3BhbiIgc3R5bGU9IndvcmQtd3JhcDogYnJl
YWstd29yZDsgd2lkdGg6IDEwZXg7IGJvcmRlcjogc29saWQgdGhpbiBibGFjazsiPmhpLCA8c3Bh
biBjbGFzcz0iQXBwbGUtdGFiLXNwYW4iIHN0eWxlPSJ3aGl0ZS1zcGFjZTpwcmUiPgk8L3NwYW4+
IHJvY2tzPC9kaXY+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2R1bXAtYXMtbWFya3Vw
LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+CisKK01hcmt1cC5kZXNjcmlwdGlvbignVGhpcyB0ZXN0
IGVuc3VyZXMgV2ViS2l0IGF2b2lkcyBjbG9uaW5nIEFwcGxlIHRhYiBzcGFuIHdoZW4gaW5zZXJ0
aW5nIGEgcGFyYWdyYXBoIHNlcGFyYXRvci5cbicrCisgICAgJ09ubHkgdGFiIHNob3VsZCBiZSBp
bnNpZGUgYSBBcHBsZSB0YWIgc3BhbiBpbiB0aGUgZm9sbG93aW5nIHRlc3RzLicpOworCitmdW5j
dGlvbiBydW5UZXN0KGRpdikgeworICAgIHZhciBvZmZzZXQgPSBkaXYudGl0bGUuc3Vic3RyKDAs
IGRpdi50aXRsZS5pbmRleE9mKCc6JykpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5zZXRQ
b3NpdGlvbihkaXYsIG9mZnNldCk7CisgICAgZG9jdW1lbnQuZXhlY0NvbW1hbmQoIkluc2VydFBh
cmFncmFwaCIpOworICAgIGRvY3VtZW50LmV4ZWNDb21tYW5kKCJJbnNlcnRUZXh0IiwgZmFsc2Us
ICJoZWxsbyB3b3JsZCBXZWJLaXQgIik7CisgICAgTWFya3VwLmR1bXAoZGl2LCBkaXYudGl0bGUu
c3Vic3RyKGRpdi50aXRsZS5pbmRleE9mKCc6ICcpICsgMikpOworfQorCit2YXIgZGl2cyA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCdkaXYnKTsKK3ZhciB0ZXN0cyA9IG5ldyBBcnJh
eSgpOworZm9yICh2YXIgaSA9IDA7IGkgPCBkaXZzLmxlbmd0aDsgaSsrKQorICAgIHRlc3RzLnB1
c2goZGl2c1tpXSk7CisKK2ZvciAoaSBpbiB0ZXN0cykKKyAgICBydW5UZXN0KHRlc3RzW2ldKTsK
KworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>88549</attachid>
            <date>2011-04-06 17:48:14 -0700</date>
            <delta_ts>2011-04-07 08:02:47 -0700</delta_ts>
            <desc>work in progress (applies on top of the original patch)</desc>
            <filename>wip57872c</filename>
            <type>text/plain</type>
            <size>4574</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvaHRtbGVkaXRpbmcuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvaHRtbGVkaXRpbmcuY3BwCShyZXZpc2lvbiA4MzA3
NCkKKysrIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvaHRtbGVkaXRpbmcuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC04OTYsMTIgKzg5NiwxNSBAQAogICAgIAogUG9zaXRpb24gcG9zaXRpb25CZWZvcmVU
YWJTcGFuKGNvbnN0IFBvc2l0aW9uJiBwb3MpCiB7Ci0gICAgTm9kZSogbm9kZSA9IHBvcy5kZXBy
ZWNhdGVkTm9kZSgpOworICAgIE5vZGUqIG5vZGUgPSBwb3MuY29udGFpbmVyTm9kZSgpOwogICAg
IGlmIChpc1RhYlNwYW5UZXh0Tm9kZShub2RlKSkKICAgICAgICAgbm9kZSA9IHRhYlNwYW5Ob2Rl
KG5vZGUpOwogICAgIGVsc2UgaWYgKCFpc1RhYlNwYW5Ob2RlKG5vZGUpKQogICAgICAgICByZXR1
cm4gcG9zOwotICAgIAorCisgICAgaWYgKG5vZGUgJiYgVmlzaWJsZVBvc2l0aW9uKHBvcykgPT0g
bGFzdFBvc2l0aW9uSW5Ob2RlKG5vZGUpKQorICAgICAgICByZXR1cm4gcG9zaXRpb25JblBhcmVu
dEFmdGVyTm9kZShub2RlKTsKKwogICAgIHJldHVybiBwb3NpdGlvbkluUGFyZW50QmVmb3JlTm9k
ZShub2RlKTsKIH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvZWRpdGluZy9JbnNlcnRQYXJhZ3Jh
cGhTZXBhcmF0b3JDb21tYW5kLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL0luc2VydFBhcmFncmFwaFNlcGFyYXRvckNvbW1hbmQuY3BwCShyZXZpc2lvbiA4MzA3NCkK
KysrIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvSW5zZXJ0UGFyYWdyYXBoU2VwYXJhdG9yQ29tbWFu
ZC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMwMiwxMiArMzAyLDggQEAKICAgICAvLyBBdCB0aGlz
IHBvaW50LCB0aGUgaW5zZXJ0aW9uUG9zaXRpb24ncyBub2RlIGNvdWxkIGJlIGEgY29udGFpbmVy
LCBhbmQgd2Ugd2FudCB0byBtYWtlIHN1cmUgd2UgaW5jbHVkZQogICAgIC8vIGFsbCBvZiB0aGUg
Y29ycmVjdCBub2RlcyB3aGVuIGJ1aWxkaW5nIHRoZSBhbmNlc3RvciBsaXN0LiAgU28gdGhpcyBu
ZWVkcyB0byBiZSB0aGUgZGVlcGVzdCByZXByZXNlbnRhdGlvbiBvZiB0aGUgcG9zaXRpb24KICAg
ICAvLyBiZWZvcmUgd2Ugd2FsayB0aGUgRE9NIHRyZWUuCi0gICAgaW5zZXJ0aW9uUG9zaXRpb24g
PSBWaXNpYmxlUG9zaXRpb24oaW5zZXJ0aW9uUG9zaXRpb24pLmRlZXBFcXVpdmFsZW50KCk7Cisg
ICAgaW5zZXJ0aW9uUG9zaXRpb24gPSBwb3NpdGlvbkJlZm9yZVRhYlNwYW4oVmlzaWJsZVBvc2l0
aW9uKGluc2VydGlvblBvc2l0aW9uKS5kZWVwRXF1aXZhbGVudCgpKTsKIAotICAgIC8vIEJ1aWxk
IHVwIGxpc3Qgb2YgYW5jZXN0b3JzIGluIGJldHdlZW4gdGhlIHN0YXJ0IG5vZGUgYW5kIHRoZSBz
dGFydCBibG9jay4KLSAgICBWZWN0b3I8RWxlbWVudCo+IGFuY2VzdG9yczsKLSAgICBnZXRBbmNl
c3RvcnNJbnNpZGVCbG9jayhwb3NpdGlvbkJlZm9yZVRhYlNwYW4oaW5zZXJ0aW9uUG9zaXRpb24p
LmRlcHJlY2F0ZWROb2RlKCksIHN0YXJ0QmxvY2ssIGFuY2VzdG9ycyk7Ci0KICAgICAvLyBNYWtl
IHN1cmUgd2UgZG8gbm90IGNhdXNlIGEgcmVuZGVyZWQgc3BhY2UgdG8gYmVjb21lIHVucmVuZGVy
ZWQuCiAgICAgLy8gRklYTUU6IFdlIG5lZWQgdGhlIGFmZmluaXR5IGZvciBwb3MsIGJ1dCBwb3Mu
ZG93bnN0cmVhbSgpIGRvZXMgbm90IGdpdmUgaXQKICAgICBQb3NpdGlvbiBsZWFkaW5nV2hpdGVz
cGFjZSA9IGluc2VydGlvblBvc2l0aW9uLmxlYWRpbmdXaGl0ZXNwYWNlUG9zaXRpb24oVlBfREVG
QVVMVF9BRkZJTklUWSk7CkBAIC0zMzgsNDggKzMzNCwzNSBAQAogICAgICAgICBpbnNlcnROb2Rl
QWZ0ZXIoYmxvY2tUb0luc2VydC5nZXQoKSwgc3RhcnRCbG9jayk7CiAKICAgICB1cGRhdGVMYXlv
dXQoKTsKLSAgICAKLSAgICAvLyBNYWtlIGNsb25lcyBvZiBhbmNlc3RvcnMgaW4gYmV0d2VlbiB0
aGUgc3RhcnQgbm9kZSBhbmQgdGhlIG91dGVyIGJsb2NrLgotICAgIFJlZlB0cjxFbGVtZW50PiBw
YXJlbnQgPSBjbG9uZUhpZXJhcmNoeVVuZGVyTmV3QmxvY2soYW5jZXN0b3JzLCBibG9ja1RvSW5z
ZXJ0KTsKIAogICAgIC8vIElmIHRoZSBwYXJhZ3JhcGggc2VwYXJhdG9yIHdhcyBpbnNlcnRlZCBh
dCB0aGUgZW5kIG9mIGEgcGFyYWdyYXBoLCBhbiBlbXB0eSBsaW5lIG11c3QgYmUKICAgICAvLyBj
cmVhdGVkLiAgQWxsIG9mIHRoZSBub2Rlcywgc3RhcnRpbmcgYXQgdmlzaWJsZVBvcywgYXJlIGFi
b3V0IHRvIGJlIGFkZGVkIHRvIHRoZSBuZXcgcGFyYWdyYXBoIAogICAgIC8vIGVsZW1lbnQuICBJ
ZiB0aGUgZmlyc3Qgbm9kZSB0byBiZSBpbnNlcnRlZCB3b24ndCBiZSBvbmUgdGhhdCB3aWxsIGhv
bGQgYW4gZW1wdHkgbGluZSBvcGVuLCBhZGQgYSBici4KICAgICBpZiAoaXNFbmRPZlBhcmFncmFw
aCh2aXNpYmxlUG9zKSAmJiAhbGluZUJyZWFrRXhpc3RzQXRWaXNpYmxlUG9zaXRpb24odmlzaWJs
ZVBvcykpCiAgICAgICAgIGFwcGVuZE5vZGUoY3JlYXRlQnJlYWtFbGVtZW50KGRvY3VtZW50KCkp
LmdldCgpLCBibG9ja1RvSW5zZXJ0LmdldCgpKTsKLSAgICAgICAgCisKICAgICAvLyBNb3ZlIHRo
ZSBzdGFydCBub2RlIGFuZCB0aGUgc2libGluZ3Mgb2YgdGhlIHN0YXJ0IG5vZGUuCi0gICAgaWYg
KGluc2VydGlvblBvc2l0aW9uLmRlcHJlY2F0ZWROb2RlKCkgIT0gc3RhcnRCbG9jaykgewotICAg
ICAgICBOb2RlKiBuID0gaW5zZXJ0aW9uUG9zaXRpb24uZGVwcmVjYXRlZE5vZGUoKTsKLSAgICAg
ICAgaWYgKGluc2VydGlvblBvc2l0aW9uLmRlcHJlY2F0ZWRFZGl0aW5nT2Zmc2V0KCkgPj0gY2Fy
ZXRNYXhPZmZzZXQobikpCi0gICAgICAgICAgICBuID0gbi0+bmV4dFNpYmxpbmcoKTsKKyAgICBp
ZiAoVmlzaWJsZVBvc2l0aW9uKGluc2VydGlvblBvc2l0aW9uKSAhPSBWaXNpYmxlUG9zaXRpb24o
cG9zaXRpb25CZWZvcmVOb2RlKGJsb2NrVG9JbnNlcnQuZ2V0KCkpKSkgeworICAgICAgICBOb2Rl
KiBuOworICAgICAgICBpZiAoaW5zZXJ0aW9uUG9zaXRpb24uY29udGFpbmVyTm9kZSgpID09IHN0
YXJ0QmxvY2spCisgICAgICAgICAgICBuID0gaW5zZXJ0aW9uUG9zaXRpb24uY29tcHV0ZU5vZGVB
ZnRlclBvc2l0aW9uKCk7CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgc3BsaXRUcmVlVG9O
b2RlKGluc2VydGlvblBvc2l0aW9uLmNvbnRhaW5lck5vZGUoKSwgc3RhcnRCbG9jayk7CiAKKyAg
ICAgICAgICAgIGZvciAobiA9IHN0YXJ0QmxvY2stPmZpcnN0Q2hpbGQoKTsgbjsgbiA9IG4tPm5l
eHRTaWJsaW5nKCkpIHsKKyAgICAgICAgICAgICAgICBpZiAoY29tcGFyZVBvc2l0aW9ucyhWaXNp
YmxlUG9zaXRpb24oaW5zZXJ0aW9uUG9zaXRpb24pLCBwb3NpdGlvbkJlZm9yZU5vZGUobikpIDw9
IDApCisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICB9
CisKICAgICAgICAgd2hpbGUgKG4gJiYgbiAhPSBibG9ja1RvSW5zZXJ0KSB7CiAgICAgICAgICAg
ICBOb2RlICpuZXh0ID0gbi0+bmV4dFNpYmxpbmcoKTsKICAgICAgICAgICAgIHJlbW92ZU5vZGUo
bik7Ci0gICAgICAgICAgICBhcHBlbmROb2RlKG4sIHBhcmVudC5nZXQoKSk7CisgICAgICAgICAg
ICBhcHBlbmROb2RlKG4sIGJsb2NrVG9JbnNlcnQpOwogICAgICAgICAgICAgbiA9IG5leHQ7CiAg
ICAgICAgIH0KICAgICB9ICAgICAgICAgICAgCiAKLSAgICAvLyBNb3ZlIGV2ZXJ5dGhpbmcgYWZ0
ZXIgdGhlIHN0YXJ0IG5vZGUuCi0gICAgaWYgKCFhbmNlc3RvcnMuaXNFbXB0eSgpKSB7Ci0gICAg
ICAgIEVsZW1lbnQqIGxlZnRQYXJlbnQgPSBhbmNlc3RvcnMuZmlyc3QoKTsKLSAgICAgICAgd2hp
bGUgKGxlZnRQYXJlbnQgJiYgbGVmdFBhcmVudCAhPSBzdGFydEJsb2NrKSB7Ci0gICAgICAgICAg
ICBwYXJlbnQgPSBwYXJlbnQtPnBhcmVudEVsZW1lbnQoKTsKLSAgICAgICAgICAgIGlmICghcGFy
ZW50KQotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgTm9kZSogbiA9IGxlZnRQ
YXJlbnQtPm5leHRTaWJsaW5nKCk7Ci0gICAgICAgICAgICB3aGlsZSAobiAmJiBuICE9IGJsb2Nr
VG9JbnNlcnQpIHsKLSAgICAgICAgICAgICAgICBOb2RlKiBuZXh0ID0gbi0+bmV4dFNpYmxpbmco
KTsKLSAgICAgICAgICAgICAgICByZW1vdmVOb2RlKG4pOwotICAgICAgICAgICAgICAgIGFwcGVu
ZE5vZGUobiwgcGFyZW50LmdldCgpKTsKLSAgICAgICAgICAgICAgICBuID0gbmV4dDsKLSAgICAg
ICAgICAgIH0KLSAgICAgICAgICAgIGxlZnRQYXJlbnQgPSBsZWZ0UGFyZW50LT5wYXJlbnRFbGVt
ZW50KCk7Ci0gICAgICAgIH0KLSAgICB9Ci0KICAgICAvLyBIYW5kbGUgd2hpdGVzcGFjZSB0aGF0
IG9jY3VycyBhZnRlciB0aGUgc3BsaXQKICAgICBpZiAoc3BsaXRUZXh0KSB7CiAgICAgICAgIHVw
ZGF0ZUxheW91dCgpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>88639</attachid>
            <date>2011-04-07 08:02:56 -0700</date>
            <delta_ts>2011-04-07 13:19:56 -0700</delta_ts>
            <desc>complete patch (needs to rebaseline editing/inserting/6633727.html)</desc>
            <filename>bug-57872-20110407180253.patch</filename>
            <type>text/plain</type>
            <size>18333</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDgzMTczKQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMzcgQEAKKzIwMTEtMDQtMDcgIFJ5b3N1a2Ug
Tml3YSAgPHJuaXdhQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRXJpYyBTZWlk
ZWwuCisKKyAgICAgICAgUkVHUkVTU0lPTiAocjQ2OTE0LCByNDg3NjQpOiBXaGVuIHR5cGluZyBp
biBNYWlsLCBsaW5lIHdyYXBwaW5nIGZyZXF1ZW50bHkgb2NjdXJzIGluIHRoZSBtaWRkbGUgb2Yg
d29yZHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU3
ODcyCisKKyAgICAgICAgcjQ2OTE0IGluaXRpYWxseSBpbnRyb2R1Y2VkIGEgcmVncmVzc2lvbiBi
eSByZXBsYWNpbmcgY2FsbHMgdG8gc3R5bGVBdFBvc2l0aW9uIGJ5IGVkaXRpbmdTdHlsZUF0UG9z
aXRpb24KKyAgICAgICAgYmVjYXVzZSBlZGl0aW5nU3R5bGVBdFBvc2l0aW9uIGRpZCBub3QgYXZv
aWQgdGFiIHNwYW4gdG8gb2J0YWluIHRoZSBjb21wdXRlZCBzdHlsZSB1bmxpa2Ugc3R5bGVBdFBv
c2l0aW9uLgorCisgICAgICAgIHI0NjkxNCBhbHNvIGludHJvZHVjZWQgYSByZWdyZXNzaW9uIGJ5
IGNsb25pbmcgaGllcmFyY2h5IHVuZGVyIG5ldyBibG9jayBhdCB0aGUgaW5zZXJ0aW9uIHBvc2l0
aW9uIHdpdGhvdXQKKyAgICAgICAgYXZvaWRpbmcgdGhlIHRhYiBzcGFuLgorCisgICAgICAgIEZp
eGVkIHRoZSBib3RoIHJlZ3Jlc3Npb25zIGJ5IGF2b2lkaW5nIHRhYiBzcGFucyB3aGVuIGNvbXB1
dGluZyB0aGUgZWRpdGluZyBzdHlsZSBhbmQgd2hlbiBjbG9uaW5nIGhpZXJhcmNoeS4KKyAgICAg
ICAgQWxzbyByZXZlcnRlZCByNDY5MTQgZm9yIHRoZSBnZW5lcmFsIGNvZGUgcGF0aCBiZWNhdXNl
IHJlLWNyZWF0aW5nIG5vZGUgaGllcmFyY2h5IGR1cGxpY2F0ZXMgbm9kZXMgd2hlbgorICAgICAg
ICB3ZSdyZSBtb3Zpbmcgbm9kZXMgYWZ0ZXIgdGhlIHBhcmFncmFwaCBzZXBhcmF0b3IuIEluc3Rl
YWQsIHdlIG5vdyBzcGxpdCB0aGUgdHJlZSB1cCB1bnRpbCB0aGUgc3RhcnQgYmxvY2sKKyAgICAg
ICAgYmVmb3JlIG1vdmluZyB0aGUgbm9kZXMuCisKKyAgICAgICAgVGVzdHM6IGVkaXRpbmcvaW5z
ZXJ0aW5nL2luc2VydC1wYXJhZ3JhcGgtYWZ0ZXItdGFiLXNwYW4tYW5kLXRleHQuaHRtbAorICAg
ICAgICAgICAgICAgZWRpdGluZy9pbnNlcnRpbmcvaW5zZXJ0LXBhcmFncmFwaC1zZXBhcmF0b3It
dGFiLXNwYW4uaHRtbAorCisgICAgICAgICogZWRpdGluZy9EZWxldGVTZWxlY3Rpb25Db21tYW5k
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRlbGV0ZVNlbGVjdGlvbkNvbW1hbmQ6OnNhdmVUeXBp
bmdTdHlsZVN0YXRlKTogU2luY2UgRWRpdGluZ1N0eWxlJ3MgY29uc3RydWN0b3IgYXZvaWRzIGEg
dGFiIHNwYW4sCisgICAgICAgIG5vIGxvbmdlciBjYWxscyBwb3NpdGlvbkJlZm9yZVRhYlNwYW4g
b24gdGhlIHBvc2l0aW9uIHBhc3NlZCB0byBFZGl0aW5nU3R5bGUncyBjb25zdHJ1Y3Rvci4KKyAg
ICAgICAgKiBlZGl0aW5nL0VkaXRpbmdTdHlsZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFZGl0
aW5nU3R5bGU6OmluaXQpOiBBbHdheXMgYXZvaWQgYSB0YWIgc3BhbiB3aGVuIGNvbXB1dGluZyB0
aGUgZWRpdGluZyBzdHlsZS4KKyAgICAgICAgKiBlZGl0aW5nL0luc2VydFBhcmFncmFwaFNlcGFy
YXRvckNvbW1hbmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zZXJ0UGFyYWdyYXBoU2VwYXJh
dG9yQ29tbWFuZDo6ZG9BcHBseSk6IEF2b2lkIGNsb25pbmcgdGFiIHNwYW5zIGFuZCBpbnNlcnRp
bmcgYSBwYXJhZ3JhcGgKKyAgICAgICAgc2VwYXJhdG9yIGludG8gYSBwYXJhZ3JhcGggc2VwYXJh
dG9yLgorICAgICAgICAqIGVkaXRpbmcvaHRtbGVkaXRpbmcuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6cG9zaXRpb25PdXRzaWRlVGFiU3Bhbik6IFJlbmFtZWQgZnJvbSBwb3NpdGlvbkJlZm9yZVRh
YlNwYW4uIEFsc28gcmV0dXJucyB0aGUgcG9zaXRpb24gaW4gdGhlIHBhcmVudAorICAgICAgICBu
b2RlIGFmdGVyIHRoZSB0YWIgc3BhbiBpZiB0aGUgcG9zaXRpb24gd2FzIGF0IHRoZSBlbmQgb2Yg
dGhlIHRhYiBzcGFuLgorICAgICAgICAqIGVkaXRpbmcvaHRtbGVkaXRpbmcuaDoKKwogMjAxMS0w
NC0wNiAgSWx5YSBUaWtob25vdnNreSAgPGxvaXNsb0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAg
UmV2aWV3ZWQgYnkgWXVyeSBTZW1pa2hhdHNreS4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvRGVsZXRlU2VsZWN0aW9uQ29tbWFuZC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvZWRpdGluZy9EZWxldGVTZWxlY3Rpb25Db21tYW5kLmNwcAkocmV2aXNpb24gODMxNjIpCisr
KyBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0RlbGV0ZVNlbGVjdGlvbkNvbW1hbmQuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yODEsNyArMjgxLDcgQEAgdm9pZCBEZWxldGVTZWxlY3Rpb25Db21tYW5k
OjpzYXZlVHlwaW5nUwogICAgICAgICByZXR1cm47CiAKICAgICAvLyBGaWd1cmUgb3V0IHRoZSB0
eXBpbmcgc3R5bGUgaW4gZWZmZWN0IGJlZm9yZSB0aGUgZGVsZXRlIGlzIGRvbmUuCi0gICAgbV90
eXBpbmdTdHlsZSA9IEVkaXRpbmdTdHlsZTo6Y3JlYXRlKHBvc2l0aW9uQmVmb3JlVGFiU3Bhbiht
X3NlbGVjdGlvblRvRGVsZXRlLnN0YXJ0KCkpKTsKKyAgICBtX3R5cGluZ1N0eWxlID0gRWRpdGlu
Z1N0eWxlOjpjcmVhdGUobV9zZWxlY3Rpb25Ub0RlbGV0ZS5zdGFydCgpKTsKICAgICBtX3R5cGlu
Z1N0eWxlLT5yZW1vdmVTdHlsZUFkZGVkQnlOb2RlKGVuY2xvc2luZ0FuY2hvckVsZW1lbnQobV9z
ZWxlY3Rpb25Ub0RlbGV0ZS5zdGFydCgpKSk7CiAKICAgICAvLyBJZiB3ZSdyZSBkZWxldGluZyBp
bnRvIGEgTWFpbCBibG9ja3F1b3RlLCBzYXZlIHRoZSBzdHlsZSBhdCBlbmQoKSBpbnN0ZWFkIG9m
IHN0YXJ0KCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdGluZ1N0eWxlLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRpbmdTdHlsZS5jcHAJKHJl
dmlzaW9uIDgzMTYyKQorKysgU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0aW5nU3R5bGUuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0zMDAsNiArMzAwLDExIEBAIEVkaXRpbmdTdHlsZTo6fkVkaXRp
bmdTdHlsZSgpCiAKIHZvaWQgRWRpdGluZ1N0eWxlOjppbml0KE5vZGUqIG5vZGUsIFByb3BlcnRp
ZXNUb0luY2x1ZGUgcHJvcGVydGllc1RvSW5jbHVkZSkKIHsKKyAgICBpZiAoaXNUYWJTcGFuVGV4
dE5vZGUobm9kZSkpCisgICAgICAgIG5vZGUgPSB0YWJTcGFuTm9kZShub2RlKS0+cGFyZW50Tm9k
ZSgpOworICAgIGVsc2UgaWYgKGlzVGFiU3Bhbk5vZGUobm9kZSkpCisgICAgICAgIG5vZGUgPSBu
b2RlLT5wYXJlbnROb2RlKCk7CisKICAgICBSZWZQdHI8Q1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0
aW9uPiBjb21wdXRlZFN0eWxlQXRQb3NpdGlvbiA9IGNvbXB1dGVkU3R5bGUobm9kZSk7CiAgICAg
bV9tdXRhYmxlU3R5bGUgPSBwcm9wZXJ0aWVzVG9JbmNsdWRlID09IEFsbFByb3BlcnRpZXMgJiYg
Y29tcHV0ZWRTdHlsZUF0UG9zaXRpb24gPyBjb21wdXRlZFN0eWxlQXRQb3NpdGlvbi0+Y29weSgp
IDogZWRpdGluZ1N0eWxlRnJvbUNvbXB1dGVkU3R5bGUoY29tcHV0ZWRTdHlsZUF0UG9zaXRpb24p
OwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0luc2VydFBhcmFncmFwaFNlcGFyYXRv
ckNvbW1hbmQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvSW5zZXJ0
UGFyYWdyYXBoU2VwYXJhdG9yQ29tbWFuZC5jcHAJKHJldmlzaW9uIDgzMTYyKQorKysgU291cmNl
L1dlYkNvcmUvZWRpdGluZy9JbnNlcnRQYXJhZ3JhcGhTZXBhcmF0b3JDb21tYW5kLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMjM5LDcgKzIzOSw3IEBAIHZvaWQgSW5zZXJ0UGFyYWdyYXBoU2VwYXJh
dG9yQ29tbWFuZDo6ZG8KICAgICAgICAgLy8gUmVjcmVhdGUgdGhlIHNhbWUgc3RydWN0dXJlIGlu
IHRoZSBuZXcgcGFyYWdyYXBoLgogICAgICAgICAKICAgICAgICAgVmVjdG9yPEVsZW1lbnQqPiBh
bmNlc3RvcnM7Ci0gICAgICAgIGdldEFuY2VzdG9yc0luc2lkZUJsb2NrKGluc2VydGlvblBvc2l0
aW9uLmRlcHJlY2F0ZWROb2RlKCksIHN0YXJ0QmxvY2ssIGFuY2VzdG9ycyk7ICAgICAgCisgICAg
ICAgIGdldEFuY2VzdG9yc0luc2lkZUJsb2NrKHBvc2l0aW9uT3V0c2lkZVRhYlNwYW4oaW5zZXJ0
aW9uUG9zaXRpb24pLmRlcHJlY2F0ZWROb2RlKCksIHN0YXJ0QmxvY2ssIGFuY2VzdG9ycyk7ICAg
ICAgCiAgICAgICAgIFJlZlB0cjxFbGVtZW50PiBwYXJlbnQgPSBjbG9uZUhpZXJhcmNoeVVuZGVy
TmV3QmxvY2soYW5jZXN0b3JzLCBibG9ja1RvSW5zZXJ0KTsKICAgICAgICAgCiAgICAgICAgIGFw
cGVuZEJsb2NrUGxhY2Vob2xkZXIocGFyZW50KTsKQEAgLTI1NCw2ICsyNTQsOSBAQCB2b2lkIElu
c2VydFBhcmFncmFwaFNlcGFyYXRvckNvbW1hbmQ6OmRvCiAgICAgLy8gc2ltaWxhciBjYXNlIHdo
ZXJlIHByZXZpb3VzIHBvc2l0aW9uIGlzIGluIGFub3RoZXIsIHByZXN1bWVhYmx5IG5lc3RlZCwg
YmxvY2suCiAgICAgaWYgKGlzRmlyc3RJbkJsb2NrIHx8ICFpblNhbWVCbG9jayh2aXNpYmxlUG9z
LCB2aXNpYmxlUG9zLnByZXZpb3VzKCkpKSB7CiAgICAgICAgIE5vZGUgKnJlZk5vZGU7CisgICAg
ICAgIAorICAgICAgICBpbnNlcnRpb25Qb3NpdGlvbiA9IHBvc2l0aW9uT3V0c2lkZVRhYlNwYW4o
aW5zZXJ0aW9uUG9zaXRpb24pOworCiAgICAgICAgIGlmIChpc0ZpcnN0SW5CbG9jayAmJiAhbmVz
dE5ld0Jsb2NrKQogICAgICAgICAgICAgcmVmTm9kZSA9IHN0YXJ0QmxvY2s7CiAgICAgICAgIGVs
c2UgaWYgKGluc2VydGlvblBvc2l0aW9uLmRlcHJlY2F0ZWROb2RlKCkgPT0gc3RhcnRCbG9jayAm
JiBuZXN0TmV3QmxvY2spIHsKQEAgLTI3MCw3ICsyNzMsNyBAQCB2b2lkIEluc2VydFBhcmFncmFw
aFNlcGFyYXRvckNvbW1hbmQ6OmRvCiAgICAgICAgIC8vIFJlY3JlYXRlIHRoZSBzYW1lIHN0cnVj
dHVyZSBpbiB0aGUgbmV3IHBhcmFncmFwaC4KIAogICAgICAgICBWZWN0b3I8RWxlbWVudCo+IGFu
Y2VzdG9yczsKLSAgICAgICAgZ2V0QW5jZXN0b3JzSW5zaWRlQmxvY2socG9zaXRpb25Bdm9pZGlu
Z1NwZWNpYWxFbGVtZW50Qm91bmRhcnkoaW5zZXJ0aW9uUG9zaXRpb24pLmRlcHJlY2F0ZWROb2Rl
KCksIHN0YXJ0QmxvY2ssIGFuY2VzdG9ycyk7CisgICAgICAgIGdldEFuY2VzdG9yc0luc2lkZUJs
b2NrKHBvc2l0aW9uQXZvaWRpbmdTcGVjaWFsRWxlbWVudEJvdW5kYXJ5KHBvc2l0aW9uT3V0c2lk
ZVRhYlNwYW4oaW5zZXJ0aW9uUG9zaXRpb24pKS5kZXByZWNhdGVkTm9kZSgpLCBzdGFydEJsb2Nr
LCBhbmNlc3RvcnMpOwogICAgICAgICAKICAgICAgICAgYXBwZW5kQmxvY2tQbGFjZWhvbGRlcihj
bG9uZUhpZXJhcmNoeVVuZGVyTmV3QmxvY2soYW5jZXN0b3JzLCBibG9ja1RvSW5zZXJ0KSk7CiAg
ICAgICAgIApAQCAtMjk5LDExICszMDIsNyBAQCB2b2lkIEluc2VydFBhcmFncmFwaFNlcGFyYXRv
ckNvbW1hbmQ6OmRvCiAgICAgLy8gQXQgdGhpcyBwb2ludCwgdGhlIGluc2VydGlvblBvc2l0aW9u
J3Mgbm9kZSBjb3VsZCBiZSBhIGNvbnRhaW5lciwgYW5kIHdlIHdhbnQgdG8gbWFrZSBzdXJlIHdl
IGluY2x1ZGUKICAgICAvLyBhbGwgb2YgdGhlIGNvcnJlY3Qgbm9kZXMgd2hlbiBidWlsZGluZyB0
aGUgYW5jZXN0b3IgbGlzdC4gIFNvIHRoaXMgbmVlZHMgdG8gYmUgdGhlIGRlZXBlc3QgcmVwcmVz
ZW50YXRpb24gb2YgdGhlIHBvc2l0aW9uCiAgICAgLy8gYmVmb3JlIHdlIHdhbGsgdGhlIERPTSB0
cmVlLgotICAgIGluc2VydGlvblBvc2l0aW9uID0gVmlzaWJsZVBvc2l0aW9uKGluc2VydGlvblBv
c2l0aW9uKS5kZWVwRXF1aXZhbGVudCgpOwotCi0gICAgLy8gQnVpbGQgdXAgbGlzdCBvZiBhbmNl
c3RvcnMgaW4gYmV0d2VlbiB0aGUgc3RhcnQgbm9kZSBhbmQgdGhlIHN0YXJ0IGJsb2NrLgotICAg
IFZlY3RvcjxFbGVtZW50Kj4gYW5jZXN0b3JzOwotICAgIGdldEFuY2VzdG9yc0luc2lkZUJsb2Nr
KGluc2VydGlvblBvc2l0aW9uLmRlcHJlY2F0ZWROb2RlKCksIHN0YXJ0QmxvY2ssIGFuY2VzdG9y
cyk7CisgICAgaW5zZXJ0aW9uUG9zaXRpb24gPSBwb3NpdGlvbk91dHNpZGVUYWJTcGFuKFZpc2li
bGVQb3NpdGlvbihpbnNlcnRpb25Qb3NpdGlvbikuZGVlcEVxdWl2YWxlbnQoKSk7CiAKICAgICAv
LyBNYWtlIHN1cmUgd2UgZG8gbm90IGNhdXNlIGEgcmVuZGVyZWQgc3BhY2UgdG8gYmVjb21lIHVu
cmVuZGVyZWQuCiAgICAgLy8gRklYTUU6IFdlIG5lZWQgdGhlIGFmZmluaXR5IGZvciBwb3MsIGJ1
dCBwb3MuZG93bnN0cmVhbSgpIGRvZXMgbm90IGdpdmUgaXQKQEAgLTMzNSw0OCArMzM0LDM1IEBA
IHZvaWQgSW5zZXJ0UGFyYWdyYXBoU2VwYXJhdG9yQ29tbWFuZDo6ZG8KICAgICAgICAgaW5zZXJ0
Tm9kZUFmdGVyKGJsb2NrVG9JbnNlcnQuZ2V0KCksIHN0YXJ0QmxvY2spOwogCiAgICAgdXBkYXRl
TGF5b3V0KCk7Ci0gICAgCi0gICAgLy8gTWFrZSBjbG9uZXMgb2YgYW5jZXN0b3JzIGluIGJldHdl
ZW4gdGhlIHN0YXJ0IG5vZGUgYW5kIHRoZSBvdXRlciBibG9jay4KLSAgICBSZWZQdHI8RWxlbWVu
dD4gcGFyZW50ID0gY2xvbmVIaWVyYXJjaHlVbmRlck5ld0Jsb2NrKGFuY2VzdG9ycywgYmxvY2tU
b0luc2VydCk7CiAKICAgICAvLyBJZiB0aGUgcGFyYWdyYXBoIHNlcGFyYXRvciB3YXMgaW5zZXJ0
ZWQgYXQgdGhlIGVuZCBvZiBhIHBhcmFncmFwaCwgYW4gZW1wdHkgbGluZSBtdXN0IGJlCiAgICAg
Ly8gY3JlYXRlZC4gIEFsbCBvZiB0aGUgbm9kZXMsIHN0YXJ0aW5nIGF0IHZpc2libGVQb3MsIGFy
ZSBhYm91dCB0byBiZSBhZGRlZCB0byB0aGUgbmV3IHBhcmFncmFwaCAKICAgICAvLyBlbGVtZW50
LiAgSWYgdGhlIGZpcnN0IG5vZGUgdG8gYmUgaW5zZXJ0ZWQgd29uJ3QgYmUgb25lIHRoYXQgd2ls
bCBob2xkIGFuIGVtcHR5IGxpbmUgb3BlbiwgYWRkIGEgYnIuCiAgICAgaWYgKGlzRW5kT2ZQYXJh
Z3JhcGgodmlzaWJsZVBvcykgJiYgIWxpbmVCcmVha0V4aXN0c0F0VmlzaWJsZVBvc2l0aW9uKHZp
c2libGVQb3MpKQogICAgICAgICBhcHBlbmROb2RlKGNyZWF0ZUJyZWFrRWxlbWVudChkb2N1bWVu
dCgpKS5nZXQoKSwgYmxvY2tUb0luc2VydC5nZXQoKSk7Ci0gICAgICAgIAorCiAgICAgLy8gTW92
ZSB0aGUgc3RhcnQgbm9kZSBhbmQgdGhlIHNpYmxpbmdzIG9mIHRoZSBzdGFydCBub2RlLgotICAg
IGlmIChpbnNlcnRpb25Qb3NpdGlvbi5kZXByZWNhdGVkTm9kZSgpICE9IHN0YXJ0QmxvY2spIHsK
LSAgICAgICAgTm9kZSogbiA9IGluc2VydGlvblBvc2l0aW9uLmRlcHJlY2F0ZWROb2RlKCk7Ci0g
ICAgICAgIGlmIChpbnNlcnRpb25Qb3NpdGlvbi5kZXByZWNhdGVkRWRpdGluZ09mZnNldCgpID49
IGNhcmV0TWF4T2Zmc2V0KG4pKQotICAgICAgICAgICAgbiA9IG4tPm5leHRTaWJsaW5nKCk7Cisg
ICAgaWYgKFZpc2libGVQb3NpdGlvbihpbnNlcnRpb25Qb3NpdGlvbikgIT0gVmlzaWJsZVBvc2l0
aW9uKHBvc2l0aW9uQmVmb3JlTm9kZShibG9ja1RvSW5zZXJ0LmdldCgpKSkpIHsKKyAgICAgICAg
Tm9kZSogbjsKKyAgICAgICAgaWYgKGluc2VydGlvblBvc2l0aW9uLmNvbnRhaW5lck5vZGUoKSA9
PSBzdGFydEJsb2NrKQorICAgICAgICAgICAgbiA9IGluc2VydGlvblBvc2l0aW9uLmNvbXB1dGVO
b2RlQWZ0ZXJQb3NpdGlvbigpOworICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIHNwbGl0VHJl
ZVRvTm9kZShpbnNlcnRpb25Qb3NpdGlvbi5jb250YWluZXJOb2RlKCksIHN0YXJ0QmxvY2spOwor
CisgICAgICAgICAgICBmb3IgKG4gPSBzdGFydEJsb2NrLT5maXJzdENoaWxkKCk7IG47IG4gPSBu
LT5uZXh0U2libGluZygpKSB7CisgICAgICAgICAgICAgICAgaWYgKGNvbXBhcmVQb3NpdGlvbnMo
VmlzaWJsZVBvc2l0aW9uKGluc2VydGlvblBvc2l0aW9uKSwgcG9zaXRpb25CZWZvcmVOb2RlKG4p
KSA8PSAwKQorICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAg
ICAgfQogCiAgICAgICAgIHdoaWxlIChuICYmIG4gIT0gYmxvY2tUb0luc2VydCkgewogICAgICAg
ICAgICAgTm9kZSAqbmV4dCA9IG4tPm5leHRTaWJsaW5nKCk7CiAgICAgICAgICAgICByZW1vdmVO
b2RlKG4pOwotICAgICAgICAgICAgYXBwZW5kTm9kZShuLCBwYXJlbnQuZ2V0KCkpOworICAgICAg
ICAgICAgYXBwZW5kTm9kZShuLCBibG9ja1RvSW5zZXJ0KTsKICAgICAgICAgICAgIG4gPSBuZXh0
OwogICAgICAgICB9CiAgICAgfSAgICAgICAgICAgIAogCi0gICAgLy8gTW92ZSBldmVyeXRoaW5n
IGFmdGVyIHRoZSBzdGFydCBub2RlLgotICAgIGlmICghYW5jZXN0b3JzLmlzRW1wdHkoKSkgewot
ICAgICAgICBFbGVtZW50KiBsZWZ0UGFyZW50ID0gYW5jZXN0b3JzLmZpcnN0KCk7Ci0gICAgICAg
IHdoaWxlIChsZWZ0UGFyZW50ICYmIGxlZnRQYXJlbnQgIT0gc3RhcnRCbG9jaykgewotICAgICAg
ICAgICAgcGFyZW50ID0gcGFyZW50LT5wYXJlbnRFbGVtZW50KCk7Ci0gICAgICAgICAgICBpZiAo
IXBhcmVudCkKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIE5vZGUqIG4gPSBs
ZWZ0UGFyZW50LT5uZXh0U2libGluZygpOwotICAgICAgICAgICAgd2hpbGUgKG4gJiYgbiAhPSBi
bG9ja1RvSW5zZXJ0KSB7Ci0gICAgICAgICAgICAgICAgTm9kZSogbmV4dCA9IG4tPm5leHRTaWJs
aW5nKCk7Ci0gICAgICAgICAgICAgICAgcmVtb3ZlTm9kZShuKTsKLSAgICAgICAgICAgICAgICBh
cHBlbmROb2RlKG4sIHBhcmVudC5nZXQoKSk7Ci0gICAgICAgICAgICAgICAgbiA9IG5leHQ7Ci0g
ICAgICAgICAgICB9Ci0gICAgICAgICAgICBsZWZ0UGFyZW50ID0gbGVmdFBhcmVudC0+cGFyZW50
RWxlbWVudCgpOwotICAgICAgICB9Ci0gICAgfQotCiAgICAgLy8gSGFuZGxlIHdoaXRlc3BhY2Ug
dGhhdCBvY2N1cnMgYWZ0ZXIgdGhlIHNwbGl0CiAgICAgaWYgKHNwbGl0VGV4dCkgewogICAgICAg
ICB1cGRhdGVMYXlvdXQoKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvaHRtbGVkaXRp
bmcuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvaHRtbGVkaXRpbmcu
Y3BwCShyZXZpc2lvbiA4MzE2MikKKysrIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvaHRtbGVkaXRp
bmcuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04OTQsMTQgKzg5NCwxNyBAQCBib29sIGlzTm9kZUlu
VGV4dEZvcm1Db250cm9sKE5vZGUqIG5vZGUpCiAgICAgcmV0dXJuIGFuY2VzdG9yLT5pc0VsZW1l
bnROb2RlKCkgJiYgc3RhdGljX2Nhc3Q8RWxlbWVudCo+KGFuY2VzdG9yKS0+aXNUZXh0Rm9ybUNv
bnRyb2woKTsKIH0KICAgICAKLVBvc2l0aW9uIHBvc2l0aW9uQmVmb3JlVGFiU3Bhbihjb25zdCBQ
b3NpdGlvbiYgcG9zKQorUG9zaXRpb24gcG9zaXRpb25PdXRzaWRlVGFiU3Bhbihjb25zdCBQb3Np
dGlvbiYgcG9zKQogewotICAgIE5vZGUqIG5vZGUgPSBwb3MuZGVwcmVjYXRlZE5vZGUoKTsKKyAg
ICBOb2RlKiBub2RlID0gcG9zLmNvbnRhaW5lck5vZGUoKTsKICAgICBpZiAoaXNUYWJTcGFuVGV4
dE5vZGUobm9kZSkpCiAgICAgICAgIG5vZGUgPSB0YWJTcGFuTm9kZShub2RlKTsKICAgICBlbHNl
IGlmICghaXNUYWJTcGFuTm9kZShub2RlKSkKICAgICAgICAgcmV0dXJuIHBvczsKLSAgICAKKwor
ICAgIGlmIChub2RlICYmIFZpc2libGVQb3NpdGlvbihwb3MpID09IGxhc3RQb3NpdGlvbkluTm9k
ZShub2RlKSkKKyAgICAgICAgcmV0dXJuIHBvc2l0aW9uSW5QYXJlbnRBZnRlck5vZGUobm9kZSk7
CisKICAgICByZXR1cm4gcG9zaXRpb25JblBhcmVudEJlZm9yZU5vZGUobm9kZSk7CiB9CiAKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvaHRtbGVkaXRpbmcuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL2h0bWxlZGl0aW5nLmgJKHJldmlzaW9uIDgzMTYyKQorKysg
U291cmNlL1dlYkNvcmUvZWRpdGluZy9odG1sZWRpdGluZy5oCSh3b3JraW5nIGNvcHkpCkBAIC0x
MTEsNyArMTExLDcgQEAgUG9zaXRpb24gcHJldmlvdXNDYW5kaWRhdGUoY29uc3QgUG9zaXRpbwog
UG9zaXRpb24gbmV4dFZpc3VhbGx5RGlzdGluY3RDYW5kaWRhdGUoY29uc3QgUG9zaXRpb24mKTsK
IFBvc2l0aW9uIHByZXZpb3VzVmlzdWFsbHlEaXN0aW5jdENhbmRpZGF0ZShjb25zdCBQb3NpdGlv
biYpOwogCi1Qb3NpdGlvbiBwb3NpdGlvbkJlZm9yZVRhYlNwYW4oY29uc3QgUG9zaXRpb24mKTsK
K1Bvc2l0aW9uIHBvc2l0aW9uT3V0c2lkZVRhYlNwYW4oY29uc3QgUG9zaXRpb24mKTsKIFBvc2l0
aW9uIHBvc2l0aW9uQmVmb3JlQ29udGFpbmluZ1NwZWNpYWxFbGVtZW50KGNvbnN0IFBvc2l0aW9u
JiwgTm9kZSoqIGNvbnRhaW5pbmdTcGVjaWFsRWxlbWVudD0wKTsKIFBvc2l0aW9uIHBvc2l0aW9u
QWZ0ZXJDb250YWluaW5nU3BlY2lhbEVsZW1lbnQoY29uc3QgUG9zaXRpb24mLCBOb2RlKiogY29u
dGFpbmluZ1NwZWNpYWxFbGVtZW50PTApOwogUG9zaXRpb24gcG9zaXRpb25PdXRzaWRlQ29udGFp
bmluZ1NwZWNpYWxFbGVtZW50KGNvbnN0IFBvc2l0aW9uJiwgTm9kZSoqIGNvbnRhaW5pbmdTcGVj
aWFsRWxlbWVudD0wKTsKSW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHJldmlzaW9uIDgzMTczKQorKysgTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTggQEAKKzIwMTEtMDQtMDcgIFJ5
b3N1a2UgTml3YSAgPHJuaXdhQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgUkVHUkVTU0lPTiAocjQ2OTE0LCByNDg3NjQpOiBXaGVu
IHR5cGluZyBpbiBNYWlsLCBsaW5lIHdyYXBwaW5nIGZyZXF1ZW50bHkgb2NjdXJzIGluIHRoZSBt
aWRkbGUgb2Ygd29yZHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTU3ODcyCisKKyAgICAgICAgQWRkZWQgdGVzdHMgdG8gZW5zdXJlIFdlYktpdCBpbnNl
cnRzIGEgcGFyYWdyYXBoIHNlcGFyYXRvciBwcm9wZXJseSBhcm91bmQgdGFiIHNwYW4uCisKKyAg
ICAgICAgKiBlZGl0aW5nL2luc2VydGluZy9pbnNlcnQtZGl2LTAyMS1leHBlY3RlZC50eHQ6Cisg
ICAgICAgICogZWRpdGluZy9pbnNlcnRpbmcvaW5zZXJ0LXBhcmFncmFwaC1hZnRlci10YWItc3Bh
bi1hbmQtdGV4dC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGVkaXRpbmcvaW5zZXJ0
aW5nL2luc2VydC1wYXJhZ3JhcGgtYWZ0ZXItdGFiLXNwYW4tYW5kLXRleHQuaHRtbDogQWRkZWQu
CisgICAgICAgICogZWRpdGluZy9pbnNlcnRpbmcvaW5zZXJ0LXBhcmFncmFwaC1zZXBhcmF0b3It
dGFiLXNwYW4tZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBlZGl0aW5nL2luc2VydGlu
Zy9pbnNlcnQtcGFyYWdyYXBoLXNlcGFyYXRvci10YWItc3Bhbi5odG1sOiBBZGRlZC4KKwogMjAx
MS0wNC0wNyAgUGhpbGlwcGUgTm9ybWFuZCAgPHBub3JtYW5kQGlnYWxpYS5jb20+CiAKICAgICAg
ICAgVW5yZXZpZXdlZCwgdW5za2lwIGEgZmFzdC94bWxodHRwcmVxdWVzdCB0ZXN0IHBhc3Npbmcg
b24gR1RLLgpAQCAtNTcsNiArNzIsMTkgQEAKIAogICAgICAgICBSZXZpZXdlZCBieSBFcmljIFNl
aWRlbC4KIAorICAgICAgICBSRUdSRVNTSU9OIChyNDY5MTQsIHI0ODc2NCk6IFdoZW4gdHlwaW5n
IGluIE1haWwsIGxpbmUgd3JhcHBpbmcgZnJlcXVlbnRseSBvY2N1cnMgaW4gdGhlIG1pZGRsZSBv
ZiB3b3JkcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
NTc4NzIKKworICAgICAgICBBZGRlZCBhIHRlc3QgaW5zZXJ0IGEgcGFyYWdyYXBoIHNlcGFyYXRv
ciBhbmQgdGV4dCBhcm91bmQgdGFiIHNwYW5zLiBXZWJLaXQgc2hvdWxkIG5vdCBhcHBseSB0aGUg
dGFiIHNwYW4ncworICAgICAgICBzdHlsZSB0byB0aGUgcGFyYWdyYXBoIHNlcGFyYXRvciBvciB0
aGUgdGV4dC4KKworICAgICAgICAqIGVkaXRpbmcvaW5zZXJ0aW5nL2luc2VydC1wYXJhZ3JhcGgt
c2VwYXJhdG9yLXRhYi1zcGFuLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZWRpdGlu
Zy9pbnNlcnRpbmcvaW5zZXJ0LXBhcmFncmFwaC1zZXBhcmF0b3ItdGFiLXNwYW4uaHRtbDogQWRk
ZWQuCisKKzIwMTEtMDQtMDcgIFJ5b3N1a2UgTml3YSAgPHJuaXdhQHdlYmtpdC5vcmc+CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgRXJpYyBTZWlkZWwuCisKICAgICAgICAgQ29udmVydCBpbnNlcnQt
ZGl2LTAyMS5odG1sIHRvIGEgZHVtcC1hcy1tYXJrdXAgdGVzdAogICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTgwMTkKIApJbmRleDogTGF5b3V0VGVzdHMv
ZWRpdGluZy9pbnNlcnRpbmcvaW5zZXJ0LWRpdi0wMjEtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIExheW91dFRlc3RzL2VkaXRpbmcvaW5zZXJ0aW5nL2luc2VydC1kaXYtMDIxLWV4cGVjdGVk
LnR4dAkocmV2aXNpb24gODMxNjIpCisrKyBMYXlvdXRUZXN0cy9lZGl0aW5nL2luc2VydGluZy9p
bnNlcnQtZGl2LTAyMS1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTMyLDcgKzMyLDUg
QEAgRml4IGZvciB0aGlzIGJ1ZzogPHJkYXI6Ly9wcm9ibGVtLzM5MjQ1NwogfCA8ZGl2PgogfCAg
IDxicj4KIHwgPGRpdj4KLXwgICA8c3Bhbj4KLXwgICAgIGlkPSJ0ZXN0IgogfCAgICI8I3NlbGVj
dGlvbi1jYXJldD5iYXIKICIKSW5kZXg6IExheW91dFRlc3RzL2VkaXRpbmcvaW5zZXJ0aW5nL2lu
c2VydC1wYXJhZ3JhcGgtYWZ0ZXItdGFiLXNwYW4tYW5kLXRleHQtZXhwZWN0ZWQudHh0Cj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIExheW91dFRlc3RzL2VkaXRpbmcvaW5zZXJ0aW5nL2luc2VydC1wYXJhZ3JhcGgt
YWZ0ZXItdGFiLXNwYW4tYW5kLXRleHQtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5
b3V0VGVzdHMvZWRpdGluZy9pbnNlcnRpbmcvaW5zZXJ0LXBhcmFncmFwaC1hZnRlci10YWItc3Bh
bi1hbmQtdGV4dC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTkgQEAKK1Ro
aXMgdGVzdCBlbnN1cmVzIFdlYktpdCBpbnNlcnRzIGEgcGFyYWdyYXBoIHNlcGFyYXRvciBwcm9w
ZXJseSBhdCB0aGUgZW5kIG9mIGEgdGFiIHNwYW4uCit8ICIKKyIKK3wgPHNwYW4+Cit8ICAgY2xh
c3M9IkFwcGxlLXRhYi1zcGFuIgorfCAgIHN0eWxlPSJ3aGl0ZS1zcGFjZTpwcmUiCit8ICAgIiAg
ICBoZWxsbyIKK3wgPGRpdj4KK3wgICA8I3NlbGVjdGlvbi1jYXJldD4KK3wgICA8YnI+Cit8ICAg
IgorIgorfCAgIDxzcGFuPgorfCAgICAgY2xhc3M9IkFwcGxlLXN0eWxlLXNwYW4iCit8ICAgICA8
c3Bhbj4KK3wgICAgICAgY2xhc3M9IkFwcGxlLXRhYi1zcGFuIgorfCAgICAgICBzdHlsZT0id2hp
dGUtc3BhY2U6IHByZTsgIgorfCAgICAgICAiICAgICIKK3wgICAgICJ3b3JsZCIKSW5kZXg6IExh
eW91dFRlc3RzL2VkaXRpbmcvaW5zZXJ0aW5nL2luc2VydC1wYXJhZ3JhcGgtYWZ0ZXItdGFiLXNw
YW4tYW5kLXRleHQuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9lZGl0aW5nL2luc2Vy
dGluZy9pbnNlcnQtcGFyYWdyYXBoLWFmdGVyLXRhYi1zcGFuLWFuZC10ZXh0Lmh0bWwJKHJldmlz
aW9uIDApCisrKyBMYXlvdXRUZXN0cy9lZGl0aW5nL2luc2VydGluZy9pbnNlcnQtcGFyYWdyYXBo
LWFmdGVyLXRhYi1zcGFuLWFuZC10ZXh0Lmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMjAg
QEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8Ym9keT4KKzxkaXYgaWQ9InRlc3QiIGNvbnRl
bnRlZGl0YWJsZT4KKzxzcGFuIGNsYXNzPSJBcHBsZS10YWItc3BhbiIgc3R5bGU9IndoaXRlLXNw
YWNlOnByZSI+ICAgIGhlbGxvPC9zcGFuPjxicj4KKzxzcGFuIGNsYXNzPSJBcHBsZS1zdHlsZS1z
cGFuIj48c3BhbiBjbGFzcz0iQXBwbGUtdGFiLXNwYW4iIHN0eWxlPSJ3aGl0ZS1zcGFjZTogcHJl
OyAiPiAgICA8L3NwYW4+d29ybGQ8L3NwYW4+PC9kaXY+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVz
b3VyY2VzL2R1bXAtYXMtbWFya3VwLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+CisKK2RvY3VtZW50
LmJvZHkuZm9jdXMoKTsKK3ZhciBzcGFuID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFt
ZSgnQXBwbGUtdGFiLXNwYW4nKVswXTsKK3dpbmRvdy5nZXRTZWxlY3Rpb24oKS5zZXRQb3NpdGlv
bihzcGFuLCAxKTsKK2RvY3VtZW50LmV4ZWNDb21tYW5kKCdJbnNlcnRQYXJhZ3JhcGgnLCBmYWxz
ZSwgbnVsbCk7CisKK01hcmt1cC5kZXNjcmlwdGlvbignVGhpcyB0ZXN0IGVuc3VyZXMgV2ViS2l0
IGluc2VydHMgYSBwYXJhZ3JhcGggc2VwYXJhdG9yIHByb3Blcmx5IGF0IHRoZSBlbmQgb2YgYSB0
YWIgc3Bhbi4nKQorTWFya3VwLmR1bXAoJ3Rlc3QnKTsKKworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8
L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9lZGl0aW5nL2luc2VydGluZy9pbnNlcnQtcGFyYWdy
YXBoLXNlcGFyYXRvci10YWItc3Bhbi1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0
VGVzdHMvZWRpdGluZy9pbnNlcnRpbmcvaW5zZXJ0LXBhcmFncmFwaC1zZXBhcmF0b3ItdGFiLXNw
YW4tZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZWRpdGluZy9pbnNl
cnRpbmcvaW5zZXJ0LXBhcmFncmFwaC1zZXBhcmF0b3ItdGFiLXNwYW4tZXhwZWN0ZWQudHh0CShy
ZXZpc2lvbiAwKQpAQCAtMCwwICsxLDM4IEBACitUaGlzIHRlc3QgZW5zdXJlcyBXZWJLaXQgYXZv
aWRzIGNsb25pbmcgQXBwbGUgdGFiIHNwYW4gd2hlbiBpbnNlcnRpbmcgYSBwYXJhZ3JhcGggc2Vw
YXJhdG9yLgorT25seSB0YWIgc2hvdWxkIGJlIGluc2lkZSBhIEFwcGxlIHRhYiBzcGFuIGluIHRo
ZSBmb2xsb3dpbmcgdGVzdHMuCisKK2xhc3QgdmlzaWJsZSBwb3NpdGlvbjoKK3wgPHNwYW4+Cit8
ICAgY2xhc3M9IkFwcGxlLXRhYi1zcGFuIgorfCAgIHN0eWxlPSJ3aGl0ZS1zcGFjZTpwcmUiCit8
ICAgIgkiCit8IDxkaXY+Cit8ICAgImhlbGxvIHdvcmxkIFdlYktpdMKgPCNzZWxlY3Rpb24tY2Fy
ZXQ+IgorCitmaXJzdCB2aXNpYmxlIHBvc2l0aW9uOgorfCA8ZGl2PgorfCAgIDxicj4KK3wgImhl
bGxvIHdvcmxkIFdlYktpdMKgPCNzZWxlY3Rpb24tY2FyZXQ+IgorfCA8c3Bhbj4KK3wgICBjbGFz
cz0iQXBwbGUtdGFiLXNwYW4iCit8ICAgc3R5bGU9IndoaXRlLXNwYWNlOnByZSIKK3wgICAiCSIK
KworYmVmb3JlIHRhYiBzcGFuOgorfCAiaGkswqAiCit8IDxkaXY+Cit8ICAgImhlbGxvIHdvcmxk
IFdlYktpdMKgPCNzZWxlY3Rpb24tY2FyZXQ+IgorfCAgIDxzcGFuPgorfCAgICAgY2xhc3M9IkFw
cGxlLXRhYi1zcGFuIgorfCAgICAgc3R5bGU9IndoaXRlLXNwYWNlOnByZSIKK3wgICAgICIJIgor
fCAgICIgcm9ja3MiCisKK2FmdGVyIHRhYiBzcGFuOgorfCAiaGksICIKK3wgPHNwYW4+Cit8ICAg
Y2xhc3M9IkFwcGxlLXRhYi1zcGFuIgorfCAgIHN0eWxlPSJ3aGl0ZS1zcGFjZTpwcmUiCit8ICAg
IgkiCit8IDxkaXY+Cit8ICAgImhlbGxvIHdvcmxkIFdlYktpdCA8I3NlbGVjdGlvbi1jYXJldD5y
b2NrcyIKSW5kZXg6IExheW91dFRlc3RzL2VkaXRpbmcvaW5zZXJ0aW5nL2luc2VydC1wYXJhZ3Jh
cGgtc2VwYXJhdG9yLXRhYi1zcGFuLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZWRp
dGluZy9pbnNlcnRpbmcvaW5zZXJ0LXBhcmFncmFwaC1zZXBhcmF0b3ItdGFiLXNwYW4uaHRtbAko
cmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2VkaXRpbmcvaW5zZXJ0aW5nL2luc2VydC1wYXJh
Z3JhcGgtc2VwYXJhdG9yLXRhYi1zcGFuLmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMzIg
QEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8Ym9keT4KKzxkaXYgY29udGVudGVkaXRhYmxl
IHRpdGxlPSIxOiBsYXN0IHZpc2libGUgcG9zaXRpb24iIHN0eWxlPSJ3b3JkLXdyYXA6IGJyZWFr
LXdvcmQ7IHdpZHRoOiAxMGV4OyBib3JkZXI6IHNvbGlkIHRoaW4gYmxhY2s7Ij48c3BhbiBjbGFz
cz0iQXBwbGUtdGFiLXNwYW4iIHN0eWxlPSJ3aGl0ZS1zcGFjZTpwcmUiPgk8L3NwYW4+PC9kaXY+
Cis8ZGl2IGNvbnRlbnRlZGl0YWJsZSB0aXRsZT0iMDogZmlyc3QgdmlzaWJsZSBwb3NpdGlvbiIg
c3R5bGU9IndvcmQtd3JhcDogYnJlYWstd29yZDsgd2lkdGg6IDEwZXg7IGJvcmRlcjogc29saWQg
dGhpbiBibGFjazsiPjxzcGFuIGNsYXNzPSJBcHBsZS10YWItc3BhbiIgc3R5bGU9IndoaXRlLXNw
YWNlOnByZSI+CTwvc3Bhbj48L2Rpdj4KKzxkaXYgY29udGVudGVkaXRhYmxlIHRpdGxlPSIxOiBi
ZWZvcmUgdGFiIHNwYW4iIHN0eWxlPSJ3b3JkLXdyYXA6IGJyZWFrLXdvcmQ7IHdpZHRoOiAxMGV4
OyBib3JkZXI6IHNvbGlkIHRoaW4gYmxhY2s7Ij5oaSwgPHNwYW4gY2xhc3M9IkFwcGxlLXRhYi1z
cGFuIiBzdHlsZT0id2hpdGUtc3BhY2U6cHJlIj4JPC9zcGFuPiByb2NrczwvZGl2PgorPGRpdiBj
b250ZW50ZWRpdGFibGUgdGl0bGU9IjI6IGFmdGVyIHRhYiBzcGFuIiBzdHlsZT0id29yZC13cmFw
OiBicmVhay13b3JkOyB3aWR0aDogMTBleDsgYm9yZGVyOiBzb2xpZCB0aGluIGJsYWNrOyI+aGks
IDxzcGFuIGNsYXNzPSJBcHBsZS10YWItc3BhbiIgc3R5bGU9IndoaXRlLXNwYWNlOnByZSI+CTwv
c3Bhbj4gcm9ja3M8L2Rpdj4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvZHVtcC1hcy1t
YXJrdXAuanMiPjwvc2NyaXB0PgorPHNjcmlwdD4KKworTWFya3VwLmRlc2NyaXB0aW9uKCdUaGlz
IHRlc3QgZW5zdXJlcyBXZWJLaXQgYXZvaWRzIGNsb25pbmcgQXBwbGUgdGFiIHNwYW4gd2hlbiBp
bnNlcnRpbmcgYSBwYXJhZ3JhcGggc2VwYXJhdG9yLlxuJysKKyAgICAnT25seSB0YWIgc2hvdWxk
IGJlIGluc2lkZSBhIEFwcGxlIHRhYiBzcGFuIGluIHRoZSBmb2xsb3dpbmcgdGVzdHMuJyk7CisK
K2Z1bmN0aW9uIHJ1blRlc3QoZGl2KSB7CisgICAgdmFyIG9mZnNldCA9IGRpdi50aXRsZS5zdWJz
dHIoMCwgZGl2LnRpdGxlLmluZGV4T2YoJzonKSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigp
LnNldFBvc2l0aW9uKGRpdiwgb2Zmc2V0KTsKKyAgICBkb2N1bWVudC5leGVjQ29tbWFuZCgiSW5z
ZXJ0UGFyYWdyYXBoIik7CisgICAgZG9jdW1lbnQuZXhlY0NvbW1hbmQoIkluc2VydFRleHQiLCBm
YWxzZSwgImhlbGxvIHdvcmxkIFdlYktpdCAiKTsKKyAgICBNYXJrdXAuZHVtcChkaXYsIGRpdi50
aXRsZS5zdWJzdHIoZGl2LnRpdGxlLmluZGV4T2YoJzogJykgKyAyKSk7Cit9CisKK3ZhciBkaXZz
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ2RpdicpOwordmFyIHRlc3RzID0gbmV3
IEFycmF5KCk7Citmb3IgKHZhciBpID0gMDsgaSA8IGRpdnMubGVuZ3RoOyBpKyspCisgICAgdGVz
dHMucHVzaChkaXZzW2ldKTsKKworZm9yIChpIGluIHRlc3RzKQorICAgIHJ1blRlc3QodGVzdHNb
aV0pOworCis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>88679</attachid>
            <date>2011-04-07 13:20:07 -0700</date>
            <delta_ts>2011-04-07 21:11:34 -0700</delta_ts>
            <desc>fixes the bug</desc>
            <filename>bug-57872-20110407232002.patch</filename>
            <type>text/plain</type>
            <size>19013</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDgzMTg1KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMzcgQEAKKzIwMTEtMDQtMDcgIFJ5b3N1a2Ug
Tml3YSAgPHJuaXdhQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRXJpYyBTZWlk
ZWwuCisKKyAgICAgICAgUkVHUkVTU0lPTiAocjQ2OTE0LCByNDg3NjQpOiBXaGVuIHR5cGluZyBp
biBNYWlsLCBsaW5lIHdyYXBwaW5nIGZyZXF1ZW50bHkgb2NjdXJzIGluIHRoZSBtaWRkbGUgb2Yg
d29yZHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU3
ODcyCisKKyAgICAgICAgcjQ2OTE0IGluaXRpYWxseSBpbnRyb2R1Y2VkIGEgcmVncmVzc2lvbiBi
eSByZXBsYWNpbmcgY2FsbHMgdG8gc3R5bGVBdFBvc2l0aW9uIGJ5IGVkaXRpbmdTdHlsZUF0UG9z
aXRpb24KKyAgICAgICAgYmVjYXVzZSBlZGl0aW5nU3R5bGVBdFBvc2l0aW9uIGRpZCBub3QgYXZv
aWQgdGFiIHNwYW4gdG8gb2J0YWluIHRoZSBjb21wdXRlZCBzdHlsZSB1bmxpa2Ugc3R5bGVBdFBv
c2l0aW9uLgorCisgICAgICAgIHI0NjkxNCBhbHNvIGludHJvZHVjZWQgYSByZWdyZXNzaW9uIGJ5
IGNsb25pbmcgaGllcmFyY2h5IHVuZGVyIG5ldyBibG9jayBhdCB0aGUgaW5zZXJ0aW9uIHBvc2l0
aW9uIHdpdGhvdXQKKyAgICAgICAgYXZvaWRpbmcgdGhlIHRhYiBzcGFuLgorCisgICAgICAgIEZp
eGVkIHRoZSBib3RoIHJlZ3Jlc3Npb25zIGJ5IGF2b2lkaW5nIHRhYiBzcGFucyB3aGVuIGNvbXB1
dGluZyB0aGUgZWRpdGluZyBzdHlsZSBhbmQgd2hlbiBjbG9uaW5nIGhpZXJhcmNoeS4KKyAgICAg
ICAgQWxzbyByZXZlcnRlZCByNDY5MTQgZm9yIHRoZSBnZW5lcmFsIGNvZGUgcGF0aCBiZWNhdXNl
IHJlLWNyZWF0aW5nIG5vZGUgaGllcmFyY2h5IGR1cGxpY2F0ZXMgbm9kZXMgd2hlbgorICAgICAg
ICB3ZSdyZSBtb3Zpbmcgbm9kZXMgYWZ0ZXIgdGhlIHBhcmFncmFwaCBzZXBhcmF0b3IuIEluc3Rl
YWQsIHdlIG5vdyBzcGxpdCB0aGUgdHJlZSB1cCB1bnRpbCB0aGUgc3RhcnQgYmxvY2sKKyAgICAg
ICAgYmVmb3JlIG1vdmluZyB0aGUgbm9kZXMuCisKKyAgICAgICAgVGVzdHM6IGVkaXRpbmcvaW5z
ZXJ0aW5nL2luc2VydC1wYXJhZ3JhcGgtYWZ0ZXItdGFiLXNwYW4tYW5kLXRleHQuaHRtbAorICAg
ICAgICAgICAgICAgZWRpdGluZy9pbnNlcnRpbmcvaW5zZXJ0LXBhcmFncmFwaC1zZXBhcmF0b3It
dGFiLXNwYW4uaHRtbAorCisgICAgICAgICogZWRpdGluZy9EZWxldGVTZWxlY3Rpb25Db21tYW5k
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRlbGV0ZVNlbGVjdGlvbkNvbW1hbmQ6OnNhdmVUeXBp
bmdTdHlsZVN0YXRlKTogU2luY2UgRWRpdGluZ1N0eWxlJ3MgY29uc3RydWN0b3IgYXZvaWRzIGEg
dGFiIHNwYW4sCisgICAgICAgIG5vIGxvbmdlciBjYWxscyBwb3NpdGlvbkJlZm9yZVRhYlNwYW4g
b24gdGhlIHBvc2l0aW9uIHBhc3NlZCB0byBFZGl0aW5nU3R5bGUncyBjb25zdHJ1Y3Rvci4KKyAg
ICAgICAgKiBlZGl0aW5nL0VkaXRpbmdTdHlsZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFZGl0
aW5nU3R5bGU6OmluaXQpOiBBbHdheXMgYXZvaWQgYSB0YWIgc3BhbiB3aGVuIGNvbXB1dGluZyB0
aGUgZWRpdGluZyBzdHlsZS4KKyAgICAgICAgKiBlZGl0aW5nL0luc2VydFBhcmFncmFwaFNlcGFy
YXRvckNvbW1hbmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zZXJ0UGFyYWdyYXBoU2VwYXJh
dG9yQ29tbWFuZDo6ZG9BcHBseSk6IEF2b2lkIGNsb25pbmcgdGFiIHNwYW5zIGFuZCBpbnNlcnRp
bmcgYSBwYXJhZ3JhcGgKKyAgICAgICAgc2VwYXJhdG9yIGludG8gYSBwYXJhZ3JhcGggc2VwYXJh
dG9yLgorICAgICAgICAqIGVkaXRpbmcvaHRtbGVkaXRpbmcuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6cG9zaXRpb25PdXRzaWRlVGFiU3Bhbik6IFJlbmFtZWQgZnJvbSBwb3NpdGlvbkJlZm9yZVRh
YlNwYW4uIEFsc28gcmV0dXJucyB0aGUgcG9zaXRpb24gaW4gdGhlIHBhcmVudAorICAgICAgICBu
b2RlIGFmdGVyIHRoZSB0YWIgc3BhbiBpZiB0aGUgcG9zaXRpb24gd2FzIGF0IHRoZSBlbmQgb2Yg
dGhlIHRhYiBzcGFuLgorICAgICAgICAqIGVkaXRpbmcvaHRtbGVkaXRpbmcuaDoKKwogMjAxMS0w
NC0wNyAgRGFuIEJlcm5zdGVpbiAgPG1pdHpAYXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2Vk
IGJ5IEFkYW0gUm9iZW4uCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0RlbGV0ZVNlbGVj
dGlvbkNvbW1hbmQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRGVs
ZXRlU2VsZWN0aW9uQ29tbWFuZC5jcHAJKHJldmlzaW9uIDgzMTg1KQorKysgU291cmNlL1dlYkNv
cmUvZWRpdGluZy9EZWxldGVTZWxlY3Rpb25Db21tYW5kLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MjgxLDcgKzI4MSw3IEBAIHZvaWQgRGVsZXRlU2VsZWN0aW9uQ29tbWFuZDo6c2F2ZVR5cGluZ1MK
ICAgICAgICAgcmV0dXJuOwogCiAgICAgLy8gRmlndXJlIG91dCB0aGUgdHlwaW5nIHN0eWxlIGlu
IGVmZmVjdCBiZWZvcmUgdGhlIGRlbGV0ZSBpcyBkb25lLgotICAgIG1fdHlwaW5nU3R5bGUgPSBF
ZGl0aW5nU3R5bGU6OmNyZWF0ZShwb3NpdGlvbkJlZm9yZVRhYlNwYW4obV9zZWxlY3Rpb25Ub0Rl
bGV0ZS5zdGFydCgpKSk7CisgICAgbV90eXBpbmdTdHlsZSA9IEVkaXRpbmdTdHlsZTo6Y3JlYXRl
KG1fc2VsZWN0aW9uVG9EZWxldGUuc3RhcnQoKSk7CiAgICAgbV90eXBpbmdTdHlsZS0+cmVtb3Zl
U3R5bGVBZGRlZEJ5Tm9kZShlbmNsb3NpbmdBbmNob3JFbGVtZW50KG1fc2VsZWN0aW9uVG9EZWxl
dGUuc3RhcnQoKSkpOwogCiAgICAgLy8gSWYgd2UncmUgZGVsZXRpbmcgaW50byBhIE1haWwgYmxv
Y2txdW90ZSwgc2F2ZSB0aGUgc3R5bGUgYXQgZW5kKCkgaW5zdGVhZCBvZiBzdGFydCgpCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRpbmdTdHlsZS5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0aW5nU3R5bGUuY3BwCShyZXZpc2lvbiA4MzE4NSkK
KysrIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdGluZ1N0eWxlLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMzAwLDYgKzMwMCwxMSBAQCBFZGl0aW5nU3R5bGU6On5FZGl0aW5nU3R5bGUoKQogCiB2
b2lkIEVkaXRpbmdTdHlsZTo6aW5pdChOb2RlKiBub2RlLCBQcm9wZXJ0aWVzVG9JbmNsdWRlIHBy
b3BlcnRpZXNUb0luY2x1ZGUpCiB7CisgICAgaWYgKGlzVGFiU3BhblRleHROb2RlKG5vZGUpKQor
ICAgICAgICBub2RlID0gdGFiU3Bhbk5vZGUobm9kZSktPnBhcmVudE5vZGUoKTsKKyAgICBlbHNl
IGlmIChpc1RhYlNwYW5Ob2RlKG5vZGUpKQorICAgICAgICBub2RlID0gbm9kZS0+cGFyZW50Tm9k
ZSgpOworCiAgICAgUmVmUHRyPENTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbj4gY29tcHV0ZWRT
dHlsZUF0UG9zaXRpb24gPSBjb21wdXRlZFN0eWxlKG5vZGUpOwogICAgIG1fbXV0YWJsZVN0eWxl
ID0gcHJvcGVydGllc1RvSW5jbHVkZSA9PSBBbGxQcm9wZXJ0aWVzICYmIGNvbXB1dGVkU3R5bGVB
dFBvc2l0aW9uID8gY29tcHV0ZWRTdHlsZUF0UG9zaXRpb24tPmNvcHkoKSA6IGVkaXRpbmdTdHls
ZUZyb21Db21wdXRlZFN0eWxlKGNvbXB1dGVkU3R5bGVBdFBvc2l0aW9uKTsKIApJbmRleDogU291
cmNlL1dlYkNvcmUvZWRpdGluZy9JbnNlcnRQYXJhZ3JhcGhTZXBhcmF0b3JDb21tYW5kLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0luc2VydFBhcmFncmFwaFNlcGFy
YXRvckNvbW1hbmQuY3BwCShyZXZpc2lvbiA4MzE4NSkKKysrIFNvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvSW5zZXJ0UGFyYWdyYXBoU2VwYXJhdG9yQ29tbWFuZC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTIzOSw3ICsyMzksNyBAQCB2b2lkIEluc2VydFBhcmFncmFwaFNlcGFyYXRvckNvbW1hbmQ6OmRv
CiAgICAgICAgIC8vIFJlY3JlYXRlIHRoZSBzYW1lIHN0cnVjdHVyZSBpbiB0aGUgbmV3IHBhcmFn
cmFwaC4KICAgICAgICAgCiAgICAgICAgIFZlY3RvcjxFbGVtZW50Kj4gYW5jZXN0b3JzOwotICAg
ICAgICBnZXRBbmNlc3RvcnNJbnNpZGVCbG9jayhpbnNlcnRpb25Qb3NpdGlvbi5kZXByZWNhdGVk
Tm9kZSgpLCBzdGFydEJsb2NrLCBhbmNlc3RvcnMpOyAgICAgIAorICAgICAgICBnZXRBbmNlc3Rv
cnNJbnNpZGVCbG9jayhwb3NpdGlvbk91dHNpZGVUYWJTcGFuKGluc2VydGlvblBvc2l0aW9uKS5k
ZXByZWNhdGVkTm9kZSgpLCBzdGFydEJsb2NrLCBhbmNlc3RvcnMpOyAgICAgIAogICAgICAgICBS
ZWZQdHI8RWxlbWVudD4gcGFyZW50ID0gY2xvbmVIaWVyYXJjaHlVbmRlck5ld0Jsb2NrKGFuY2Vz
dG9ycywgYmxvY2tUb0luc2VydCk7CiAgICAgICAgIAogICAgICAgICBhcHBlbmRCbG9ja1BsYWNl
aG9sZGVyKHBhcmVudCk7CkBAIC0yNTQsNiArMjU0LDkgQEAgdm9pZCBJbnNlcnRQYXJhZ3JhcGhT
ZXBhcmF0b3JDb21tYW5kOjpkbwogICAgIC8vIHNpbWlsYXIgY2FzZSB3aGVyZSBwcmV2aW91cyBw
b3NpdGlvbiBpcyBpbiBhbm90aGVyLCBwcmVzdW1lYWJseSBuZXN0ZWQsIGJsb2NrLgogICAgIGlm
IChpc0ZpcnN0SW5CbG9jayB8fCAhaW5TYW1lQmxvY2sodmlzaWJsZVBvcywgdmlzaWJsZVBvcy5w
cmV2aW91cygpKSkgewogICAgICAgICBOb2RlICpyZWZOb2RlOworICAgICAgICAKKyAgICAgICAg
aW5zZXJ0aW9uUG9zaXRpb24gPSBwb3NpdGlvbk91dHNpZGVUYWJTcGFuKGluc2VydGlvblBvc2l0
aW9uKTsKKwogICAgICAgICBpZiAoaXNGaXJzdEluQmxvY2sgJiYgIW5lc3ROZXdCbG9jaykKICAg
ICAgICAgICAgIHJlZk5vZGUgPSBzdGFydEJsb2NrOwogICAgICAgICBlbHNlIGlmIChpbnNlcnRp
b25Qb3NpdGlvbi5kZXByZWNhdGVkTm9kZSgpID09IHN0YXJ0QmxvY2sgJiYgbmVzdE5ld0Jsb2Nr
KSB7CkBAIC0yNzAsNyArMjczLDcgQEAgdm9pZCBJbnNlcnRQYXJhZ3JhcGhTZXBhcmF0b3JDb21t
YW5kOjpkbwogICAgICAgICAvLyBSZWNyZWF0ZSB0aGUgc2FtZSBzdHJ1Y3R1cmUgaW4gdGhlIG5l
dyBwYXJhZ3JhcGguCiAKICAgICAgICAgVmVjdG9yPEVsZW1lbnQqPiBhbmNlc3RvcnM7Ci0gICAg
ICAgIGdldEFuY2VzdG9yc0luc2lkZUJsb2NrKHBvc2l0aW9uQXZvaWRpbmdTcGVjaWFsRWxlbWVu
dEJvdW5kYXJ5KGluc2VydGlvblBvc2l0aW9uKS5kZXByZWNhdGVkTm9kZSgpLCBzdGFydEJsb2Nr
LCBhbmNlc3RvcnMpOworICAgICAgICBnZXRBbmNlc3RvcnNJbnNpZGVCbG9jayhwb3NpdGlvbkF2
b2lkaW5nU3BlY2lhbEVsZW1lbnRCb3VuZGFyeShwb3NpdGlvbk91dHNpZGVUYWJTcGFuKGluc2Vy
dGlvblBvc2l0aW9uKSkuZGVwcmVjYXRlZE5vZGUoKSwgc3RhcnRCbG9jaywgYW5jZXN0b3JzKTsK
ICAgICAgICAgCiAgICAgICAgIGFwcGVuZEJsb2NrUGxhY2Vob2xkZXIoY2xvbmVIaWVyYXJjaHlV
bmRlck5ld0Jsb2NrKGFuY2VzdG9ycywgYmxvY2tUb0luc2VydCkpOwogICAgICAgICAKQEAgLTI5
OSwxMSArMzAyLDcgQEAgdm9pZCBJbnNlcnRQYXJhZ3JhcGhTZXBhcmF0b3JDb21tYW5kOjpkbwog
ICAgIC8vIEF0IHRoaXMgcG9pbnQsIHRoZSBpbnNlcnRpb25Qb3NpdGlvbidzIG5vZGUgY291bGQg
YmUgYSBjb250YWluZXIsIGFuZCB3ZSB3YW50IHRvIG1ha2Ugc3VyZSB3ZSBpbmNsdWRlCiAgICAg
Ly8gYWxsIG9mIHRoZSBjb3JyZWN0IG5vZGVzIHdoZW4gYnVpbGRpbmcgdGhlIGFuY2VzdG9yIGxp
c3QuICBTbyB0aGlzIG5lZWRzIHRvIGJlIHRoZSBkZWVwZXN0IHJlcHJlc2VudGF0aW9uIG9mIHRo
ZSBwb3NpdGlvbgogICAgIC8vIGJlZm9yZSB3ZSB3YWxrIHRoZSBET00gdHJlZS4KLSAgICBpbnNl
cnRpb25Qb3NpdGlvbiA9IFZpc2libGVQb3NpdGlvbihpbnNlcnRpb25Qb3NpdGlvbikuZGVlcEVx
dWl2YWxlbnQoKTsKLQotICAgIC8vIEJ1aWxkIHVwIGxpc3Qgb2YgYW5jZXN0b3JzIGluIGJldHdl
ZW4gdGhlIHN0YXJ0IG5vZGUgYW5kIHRoZSBzdGFydCBibG9jay4KLSAgICBWZWN0b3I8RWxlbWVu
dCo+IGFuY2VzdG9yczsKLSAgICBnZXRBbmNlc3RvcnNJbnNpZGVCbG9jayhpbnNlcnRpb25Qb3Np
dGlvbi5kZXByZWNhdGVkTm9kZSgpLCBzdGFydEJsb2NrLCBhbmNlc3RvcnMpOworICAgIGluc2Vy
dGlvblBvc2l0aW9uID0gcG9zaXRpb25PdXRzaWRlVGFiU3BhbihWaXNpYmxlUG9zaXRpb24oaW5z
ZXJ0aW9uUG9zaXRpb24pLmRlZXBFcXVpdmFsZW50KCkpOwogCiAgICAgLy8gTWFrZSBzdXJlIHdl
IGRvIG5vdCBjYXVzZSBhIHJlbmRlcmVkIHNwYWNlIHRvIGJlY29tZSB1bnJlbmRlcmVkLgogICAg
IC8vIEZJWE1FOiBXZSBuZWVkIHRoZSBhZmZpbml0eSBmb3IgcG9zLCBidXQgcG9zLmRvd25zdHJl
YW0oKSBkb2VzIG5vdCBnaXZlIGl0CkBAIC0zMzUsNDggKzMzNCwzNSBAQCB2b2lkIEluc2VydFBh
cmFncmFwaFNlcGFyYXRvckNvbW1hbmQ6OmRvCiAgICAgICAgIGluc2VydE5vZGVBZnRlcihibG9j
a1RvSW5zZXJ0LmdldCgpLCBzdGFydEJsb2NrKTsKIAogICAgIHVwZGF0ZUxheW91dCgpOwotICAg
IAotICAgIC8vIE1ha2UgY2xvbmVzIG9mIGFuY2VzdG9ycyBpbiBiZXR3ZWVuIHRoZSBzdGFydCBu
b2RlIGFuZCB0aGUgb3V0ZXIgYmxvY2suCi0gICAgUmVmUHRyPEVsZW1lbnQ+IHBhcmVudCA9IGNs
b25lSGllcmFyY2h5VW5kZXJOZXdCbG9jayhhbmNlc3RvcnMsIGJsb2NrVG9JbnNlcnQpOwogCiAg
ICAgLy8gSWYgdGhlIHBhcmFncmFwaCBzZXBhcmF0b3Igd2FzIGluc2VydGVkIGF0IHRoZSBlbmQg
b2YgYSBwYXJhZ3JhcGgsIGFuIGVtcHR5IGxpbmUgbXVzdCBiZQogICAgIC8vIGNyZWF0ZWQuICBB
bGwgb2YgdGhlIG5vZGVzLCBzdGFydGluZyBhdCB2aXNpYmxlUG9zLCBhcmUgYWJvdXQgdG8gYmUg
YWRkZWQgdG8gdGhlIG5ldyBwYXJhZ3JhcGggCiAgICAgLy8gZWxlbWVudC4gIElmIHRoZSBmaXJz
dCBub2RlIHRvIGJlIGluc2VydGVkIHdvbid0IGJlIG9uZSB0aGF0IHdpbGwgaG9sZCBhbiBlbXB0
eSBsaW5lIG9wZW4sIGFkZCBhIGJyLgogICAgIGlmIChpc0VuZE9mUGFyYWdyYXBoKHZpc2libGVQ
b3MpICYmICFsaW5lQnJlYWtFeGlzdHNBdFZpc2libGVQb3NpdGlvbih2aXNpYmxlUG9zKSkKICAg
ICAgICAgYXBwZW5kTm9kZShjcmVhdGVCcmVha0VsZW1lbnQoZG9jdW1lbnQoKSkuZ2V0KCksIGJs
b2NrVG9JbnNlcnQuZ2V0KCkpOwotICAgICAgICAKKwogICAgIC8vIE1vdmUgdGhlIHN0YXJ0IG5v
ZGUgYW5kIHRoZSBzaWJsaW5ncyBvZiB0aGUgc3RhcnQgbm9kZS4KLSAgICBpZiAoaW5zZXJ0aW9u
UG9zaXRpb24uZGVwcmVjYXRlZE5vZGUoKSAhPSBzdGFydEJsb2NrKSB7Ci0gICAgICAgIE5vZGUq
IG4gPSBpbnNlcnRpb25Qb3NpdGlvbi5kZXByZWNhdGVkTm9kZSgpOwotICAgICAgICBpZiAoaW5z
ZXJ0aW9uUG9zaXRpb24uZGVwcmVjYXRlZEVkaXRpbmdPZmZzZXQoKSA+PSBjYXJldE1heE9mZnNl
dChuKSkKLSAgICAgICAgICAgIG4gPSBuLT5uZXh0U2libGluZygpOworICAgIGlmIChWaXNpYmxl
UG9zaXRpb24oaW5zZXJ0aW9uUG9zaXRpb24pICE9IFZpc2libGVQb3NpdGlvbihwb3NpdGlvbkJl
Zm9yZU5vZGUoYmxvY2tUb0luc2VydC5nZXQoKSkpKSB7CisgICAgICAgIE5vZGUqIG47CisgICAg
ICAgIGlmIChpbnNlcnRpb25Qb3NpdGlvbi5jb250YWluZXJOb2RlKCkgPT0gc3RhcnRCbG9jaykK
KyAgICAgICAgICAgIG4gPSBpbnNlcnRpb25Qb3NpdGlvbi5jb21wdXRlTm9kZUFmdGVyUG9zaXRp
b24oKTsKKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBzcGxpdFRyZWVUb05vZGUoaW5zZXJ0
aW9uUG9zaXRpb24uY29udGFpbmVyTm9kZSgpLCBzdGFydEJsb2NrKTsKKworICAgICAgICAgICAg
Zm9yIChuID0gc3RhcnRCbG9jay0+Zmlyc3RDaGlsZCgpOyBuOyBuID0gbi0+bmV4dFNpYmxpbmco
KSkgeworICAgICAgICAgICAgICAgIGlmIChjb21wYXJlUG9zaXRpb25zKFZpc2libGVQb3NpdGlv
bihpbnNlcnRpb25Qb3NpdGlvbiksIHBvc2l0aW9uQmVmb3JlTm9kZShuKSkgPD0gMCkKKyAgICAg
ICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgIH0KIAogICAgICAg
ICB3aGlsZSAobiAmJiBuICE9IGJsb2NrVG9JbnNlcnQpIHsKICAgICAgICAgICAgIE5vZGUgKm5l
eHQgPSBuLT5uZXh0U2libGluZygpOwogICAgICAgICAgICAgcmVtb3ZlTm9kZShuKTsKLSAgICAg
ICAgICAgIGFwcGVuZE5vZGUobiwgcGFyZW50LmdldCgpKTsKKyAgICAgICAgICAgIGFwcGVuZE5v
ZGUobiwgYmxvY2tUb0luc2VydCk7CiAgICAgICAgICAgICBuID0gbmV4dDsKICAgICAgICAgfQog
ICAgIH0gICAgICAgICAgICAKIAotICAgIC8vIE1vdmUgZXZlcnl0aGluZyBhZnRlciB0aGUgc3Rh
cnQgbm9kZS4KLSAgICBpZiAoIWFuY2VzdG9ycy5pc0VtcHR5KCkpIHsKLSAgICAgICAgRWxlbWVu
dCogbGVmdFBhcmVudCA9IGFuY2VzdG9ycy5maXJzdCgpOwotICAgICAgICB3aGlsZSAobGVmdFBh
cmVudCAmJiBsZWZ0UGFyZW50ICE9IHN0YXJ0QmxvY2spIHsKLSAgICAgICAgICAgIHBhcmVudCA9
IHBhcmVudC0+cGFyZW50RWxlbWVudCgpOwotICAgICAgICAgICAgaWYgKCFwYXJlbnQpCi0gICAg
ICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBOb2RlKiBuID0gbGVmdFBhcmVudC0+bmV4
dFNpYmxpbmcoKTsKLSAgICAgICAgICAgIHdoaWxlIChuICYmIG4gIT0gYmxvY2tUb0luc2VydCkg
ewotICAgICAgICAgICAgICAgIE5vZGUqIG5leHQgPSBuLT5uZXh0U2libGluZygpOwotICAgICAg
ICAgICAgICAgIHJlbW92ZU5vZGUobik7Ci0gICAgICAgICAgICAgICAgYXBwZW5kTm9kZShuLCBw
YXJlbnQuZ2V0KCkpOwotICAgICAgICAgICAgICAgIG4gPSBuZXh0OwotICAgICAgICAgICAgfQot
ICAgICAgICAgICAgbGVmdFBhcmVudCA9IGxlZnRQYXJlbnQtPnBhcmVudEVsZW1lbnQoKTsKLSAg
ICAgICAgfQotICAgIH0KLQogICAgIC8vIEhhbmRsZSB3aGl0ZXNwYWNlIHRoYXQgb2NjdXJzIGFm
dGVyIHRoZSBzcGxpdAogICAgIGlmIChzcGxpdFRleHQpIHsKICAgICAgICAgdXBkYXRlTGF5b3V0
KCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2h0bWxlZGl0aW5nLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2h0bWxlZGl0aW5nLmNwcAkocmV2aXNpb24g
ODMxODUpCisrKyBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2h0bWxlZGl0aW5nLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtODk0LDE0ICs4OTQsMTcgQEAgYm9vbCBpc05vZGVJblRleHRGb3JtQ29udHJv
bChOb2RlKiBub2RlKQogICAgIHJldHVybiBhbmNlc3Rvci0+aXNFbGVtZW50Tm9kZSgpICYmIHN0
YXRpY19jYXN0PEVsZW1lbnQqPihhbmNlc3RvciktPmlzVGV4dEZvcm1Db250cm9sKCk7CiB9CiAg
ICAgCi1Qb3NpdGlvbiBwb3NpdGlvbkJlZm9yZVRhYlNwYW4oY29uc3QgUG9zaXRpb24mIHBvcykK
K1Bvc2l0aW9uIHBvc2l0aW9uT3V0c2lkZVRhYlNwYW4oY29uc3QgUG9zaXRpb24mIHBvcykKIHsK
LSAgICBOb2RlKiBub2RlID0gcG9zLmRlcHJlY2F0ZWROb2RlKCk7CisgICAgTm9kZSogbm9kZSA9
IHBvcy5jb250YWluZXJOb2RlKCk7CiAgICAgaWYgKGlzVGFiU3BhblRleHROb2RlKG5vZGUpKQog
ICAgICAgICBub2RlID0gdGFiU3Bhbk5vZGUobm9kZSk7CiAgICAgZWxzZSBpZiAoIWlzVGFiU3Bh
bk5vZGUobm9kZSkpCiAgICAgICAgIHJldHVybiBwb3M7Ci0gICAgCisKKyAgICBpZiAobm9kZSAm
JiBWaXNpYmxlUG9zaXRpb24ocG9zKSA9PSBsYXN0UG9zaXRpb25Jbk5vZGUobm9kZSkpCisgICAg
ICAgIHJldHVybiBwb3NpdGlvbkluUGFyZW50QWZ0ZXJOb2RlKG5vZGUpOworCiAgICAgcmV0dXJu
IHBvc2l0aW9uSW5QYXJlbnRCZWZvcmVOb2RlKG5vZGUpOwogfQogCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL2h0bWxlZGl0aW5nLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9odG1sZWRpdGluZy5oCShyZXZpc2lvbiA4MzE4NSkKKysrIFNvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvaHRtbGVkaXRpbmcuaAkod29ya2luZyBjb3B5KQpAQCAtMTExLDcgKzExMSw3IEBA
IFBvc2l0aW9uIHByZXZpb3VzQ2FuZGlkYXRlKGNvbnN0IFBvc2l0aW8KIFBvc2l0aW9uIG5leHRW
aXN1YWxseURpc3RpbmN0Q2FuZGlkYXRlKGNvbnN0IFBvc2l0aW9uJik7CiBQb3NpdGlvbiBwcmV2
aW91c1Zpc3VhbGx5RGlzdGluY3RDYW5kaWRhdGUoY29uc3QgUG9zaXRpb24mKTsKIAotUG9zaXRp
b24gcG9zaXRpb25CZWZvcmVUYWJTcGFuKGNvbnN0IFBvc2l0aW9uJik7CitQb3NpdGlvbiBwb3Np
dGlvbk91dHNpZGVUYWJTcGFuKGNvbnN0IFBvc2l0aW9uJik7CiBQb3NpdGlvbiBwb3NpdGlvbkJl
Zm9yZUNvbnRhaW5pbmdTcGVjaWFsRWxlbWVudChjb25zdCBQb3NpdGlvbiYsIE5vZGUqKiBjb250
YWluaW5nU3BlY2lhbEVsZW1lbnQ9MCk7CiBQb3NpdGlvbiBwb3NpdGlvbkFmdGVyQ29udGFpbmlu
Z1NwZWNpYWxFbGVtZW50KGNvbnN0IFBvc2l0aW9uJiwgTm9kZSoqIGNvbnRhaW5pbmdTcGVjaWFs
RWxlbWVudD0wKTsKIFBvc2l0aW9uIHBvc2l0aW9uT3V0c2lkZUNvbnRhaW5pbmdTcGVjaWFsRWxl
bWVudChjb25zdCBQb3NpdGlvbiYsIE5vZGUqKiBjb250YWluaW5nU3BlY2lhbEVsZW1lbnQ9MCk7
CkluZGV4OiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCShyZXZpc2lvbiA4MzE4NSkKKysrIExheW91dFRlc3RzL0NoYW5nZUxvZwkod29y
a2luZyBjb3B5KQpAQCAtMSwzICsxLDE5IEBACisyMDExLTA0LTA3ICBSeW9zdWtlIE5pd2EgIDxy
bml3YUB3ZWJraXQub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIFJFR1JFU1NJT04gKHI0NjkxNCwgcjQ4NzY0KTogV2hlbiB0eXBpbmcgaW4gTWFp
bCwgbGluZSB3cmFwcGluZyBmcmVxdWVudGx5IG9jY3VycyBpbiB0aGUgbWlkZGxlIG9mIHdvcmRz
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01Nzg3Mgor
CisgICAgICAgIEFkZGVkIHRlc3RzIHRvIGVuc3VyZSBXZWJLaXQgaW5zZXJ0cyBhIHBhcmFncmFw
aCBzZXBhcmF0b3IgcHJvcGVybHkgYXJvdW5kIHRhYiBzcGFuLgorCisgICAgICAgICogZWRpdGlu
Zy9pbnNlcnRpbmcvaW5zZXJ0LWRpdi0wMjEtZXhwZWN0ZWQudHh0OiBObyBsb25nZXIgZHVwbGlj
YXRlcyBzcGFuW2lkPSJ0ZXN0Il0gaW5jb3JyZWN0bHkuCisgICAgICAgICogZWRpdGluZy9pbnNl
cnRpbmcvaW5zZXJ0LXBhcmFncmFwaC1hZnRlci10YWItc3Bhbi1hbmQtdGV4dC1leHBlY3RlZC50
eHQ6IEFkZGVkLgorICAgICAgICAqIGVkaXRpbmcvaW5zZXJ0aW5nL2luc2VydC1wYXJhZ3JhcGgt
YWZ0ZXItdGFiLXNwYW4tYW5kLXRleHQuaHRtbDogQWRkZWQuCisgICAgICAgICogZWRpdGluZy9p
bnNlcnRpbmcvaW5zZXJ0LXBhcmFncmFwaC1zZXBhcmF0b3ItdGFiLXNwYW4tZXhwZWN0ZWQudHh0
OiBBZGRlZC4KKyAgICAgICAgKiBlZGl0aW5nL2luc2VydGluZy9pbnNlcnQtcGFyYWdyYXBoLXNl
cGFyYXRvci10YWItc3Bhbi5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBlZGl0aW5nL2luc2VydGlu
Zy9pbnNlcnQtcGFyYWdyYXBoLWF0LWVuZC1vZi1saW5lLWV4cGVjdGVkLnR4dDogTm8gbG9uZ2Vy
IGR1cGxpY2F0ZXMgYVtpZD0iYW5jaG9yIl0gaW5jb3JyZWN0bHkuCisKIDIwMTEtMDQtMDcgIEFk
cmllbm5lIFdhbGtlciAgPGVubmVAZ29vZ2xlLmNvbT4KIAogICAgICAgICBbY2hyb21pdW1dIFVu
cmV2aWV3ZWQsIHJlYmFzZWxpbmUgdGVzdHMgY2hhbmdlZCBpbiByODI5NDcuCkBAIC0xMDEsNiAr
MTE3LDE5IEBACiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRXJpYyBTZWlkZWwuCiAKKyAgICAgICAg
UkVHUkVTU0lPTiAocjQ2OTE0LCByNDg3NjQpOiBXaGVuIHR5cGluZyBpbiBNYWlsLCBsaW5lIHdy
YXBwaW5nIGZyZXF1ZW50bHkgb2NjdXJzIGluIHRoZSBtaWRkbGUgb2Ygd29yZHMKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU3ODcyCisKKyAgICAgICAg
QWRkZWQgYSB0ZXN0IGluc2VydCBhIHBhcmFncmFwaCBzZXBhcmF0b3IgYW5kIHRleHQgYXJvdW5k
IHRhYiBzcGFucy4gV2ViS2l0IHNob3VsZCBub3QgYXBwbHkgdGhlIHRhYiBzcGFuJ3MKKyAgICAg
ICAgc3R5bGUgdG8gdGhlIHBhcmFncmFwaCBzZXBhcmF0b3Igb3IgdGhlIHRleHQuCisKKyAgICAg
ICAgKiBlZGl0aW5nL2luc2VydGluZy9pbnNlcnQtcGFyYWdyYXBoLXNlcGFyYXRvci10YWItc3Bh
bi1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGVkaXRpbmcvaW5zZXJ0aW5nL2luc2Vy
dC1wYXJhZ3JhcGgtc2VwYXJhdG9yLXRhYi1zcGFuLmh0bWw6IEFkZGVkLgorCisyMDExLTA0LTA3
ICBSeW9zdWtlIE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5
IEVyaWMgU2VpZGVsLgorCiAgICAgICAgIENvbnZlcnQgaW5zZXJ0LWRpdi0wMjEuaHRtbCB0byBh
IGR1bXAtYXMtbWFya3VwIHRlc3QKICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTU4MDE5CiAKSW5kZXg6IExheW91dFRlc3RzL2VkaXRpbmcvaW5zZXJ0aW5n
L2luc2VydC1kaXYtMDIxLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9l
ZGl0aW5nL2luc2VydGluZy9pbnNlcnQtZGl2LTAyMS1leHBlY3RlZC50eHQJKHJldmlzaW9uIDgz
MTg1KQorKysgTGF5b3V0VGVzdHMvZWRpdGluZy9pbnNlcnRpbmcvaW5zZXJ0LWRpdi0wMjEtZXhw
ZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0zMiw3ICszMiw1IEBAIEZpeCBmb3IgdGhpcyBi
dWc6IDxyZGFyOi8vcHJvYmxlbS8zOTI0NTcKIHwgPGRpdj4KIHwgICA8YnI+CiB8IDxkaXY+Ci18
ICAgPHNwYW4+Ci18ICAgICBpZD0idGVzdCIKIHwgICAiPCNzZWxlY3Rpb24tY2FyZXQ+YmFyCiAi
CkluZGV4OiBMYXlvdXRUZXN0cy9lZGl0aW5nL2luc2VydGluZy9pbnNlcnQtcGFyYWdyYXBoLWFm
dGVyLXRhYi1zcGFuLWFuZC10ZXh0LWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRU
ZXN0cy9lZGl0aW5nL2luc2VydGluZy9pbnNlcnQtcGFyYWdyYXBoLWFmdGVyLXRhYi1zcGFuLWFu
ZC10ZXh0LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2VkaXRpbmcv
aW5zZXJ0aW5nL2luc2VydC1wYXJhZ3JhcGgtYWZ0ZXItdGFiLXNwYW4tYW5kLXRleHQtZXhwZWN0
ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDE5IEBACitUaGlzIHRlc3QgZW5zdXJlcyBX
ZWJLaXQgaW5zZXJ0cyBhIHBhcmFncmFwaCBzZXBhcmF0b3IgcHJvcGVybHkgYXQgdGhlIGVuZCBv
ZiBhIHRhYiBzcGFuLgorfCAiCisiCit8IDxzcGFuPgorfCAgIGNsYXNzPSJBcHBsZS10YWItc3Bh
biIKK3wgICBzdHlsZT0id2hpdGUtc3BhY2U6cHJlIgorfCAgICIgICAgaGVsbG8iCit8IDxkaXY+
Cit8ICAgPCNzZWxlY3Rpb24tY2FyZXQ+Cit8ICAgPGJyPgorfCAgICIKKyIKK3wgICA8c3Bhbj4K
K3wgICAgIGNsYXNzPSJBcHBsZS1zdHlsZS1zcGFuIgorfCAgICAgPHNwYW4+Cit8ICAgICAgIGNs
YXNzPSJBcHBsZS10YWItc3BhbiIKK3wgICAgICAgc3R5bGU9IndoaXRlLXNwYWNlOiBwcmU7ICIK
K3wgICAgICAgIiAgICAiCit8ICAgICAid29ybGQiCkluZGV4OiBMYXlvdXRUZXN0cy9lZGl0aW5n
L2luc2VydGluZy9pbnNlcnQtcGFyYWdyYXBoLWFmdGVyLXRhYi1zcGFuLWFuZC10ZXh0Lmh0bWwK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZWRpdGluZy9pbnNlcnRpbmcvaW5zZXJ0LXBhcmFn
cmFwaC1hZnRlci10YWItc3Bhbi1hbmQtdGV4dC5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0
VGVzdHMvZWRpdGluZy9pbnNlcnRpbmcvaW5zZXJ0LXBhcmFncmFwaC1hZnRlci10YWItc3Bhbi1h
bmQtdGV4dC5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDIwIEBACis8IURPQ1RZUEUgaHRt
bD4KKzxodG1sPgorPGJvZHk+Cis8ZGl2IGlkPSJ0ZXN0IiBjb250ZW50ZWRpdGFibGU+Cis8c3Bh
biBjbGFzcz0iQXBwbGUtdGFiLXNwYW4iIHN0eWxlPSJ3aGl0ZS1zcGFjZTpwcmUiPiAgICBoZWxs
bzwvc3Bhbj48YnI+Cis8c3BhbiBjbGFzcz0iQXBwbGUtc3R5bGUtc3BhbiI+PHNwYW4gY2xhc3M9
IkFwcGxlLXRhYi1zcGFuIiBzdHlsZT0id2hpdGUtc3BhY2U6IHByZTsgIj4gICAgPC9zcGFuPndv
cmxkPC9zcGFuPjwvZGl2PgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9kdW1wLWFzLW1h
cmt1cC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0PgorCitkb2N1bWVudC5ib2R5LmZvY3VzKCk7Cit2
YXIgc3BhbiA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ0FwcGxlLXRhYi1zcGFu
JylbMF07Cit3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuc2V0UG9zaXRpb24oc3BhbiwgMSk7Citkb2N1
bWVudC5leGVjQ29tbWFuZCgnSW5zZXJ0UGFyYWdyYXBoJywgZmFsc2UsIG51bGwpOworCitNYXJr
dXAuZGVzY3JpcHRpb24oJ1RoaXMgdGVzdCBlbnN1cmVzIFdlYktpdCBpbnNlcnRzIGEgcGFyYWdy
YXBoIHNlcGFyYXRvciBwcm9wZXJseSBhdCB0aGUgZW5kIG9mIGEgdGFiIHNwYW4uJykKK01hcmt1
cC5kdW1wKCd0ZXN0Jyk7CisKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpJbmRleDogTGF5
b3V0VGVzdHMvZWRpdGluZy9pbnNlcnRpbmcvaW5zZXJ0LXBhcmFncmFwaC1hdC1lbmQtb2YtbGlu
ZS1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZWRpdGluZy9pbnNlcnRp
bmcvaW5zZXJ0LXBhcmFncmFwaC1hdC1lbmQtb2YtbGluZS1leHBlY3RlZC50eHQJKHJldmlzaW9u
IDgzMTg1KQorKysgTGF5b3V0VGVzdHMvZWRpdGluZy9pbnNlcnRpbmcvaW5zZXJ0LXBhcmFncmFw
aC1hdC1lbmQtb2YtbGluZS1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTE4LDkgKzE4
LDYgQEAgSWYgdGhlIHRlc3QgaGFzIHBhc3NlZCwgdGhlIG51bWJlcnMgc2hvdQogfCAgIGlkPSJh
bmNob3IiCiB8ICAgIjEiCiB8IDxkaXY+Ci18ICAgPGE+Ci18ICAgICBocmVmPSIjIgotfCAgICAg
aWQ9ImFuY2hvciIKIHwgICAiMjwjc2VsZWN0aW9uLWNhcmV0PiIKIHwgICA8YnI+CiB8ICAgPGRp
dj4KSW5kZXg6IExheW91dFRlc3RzL2VkaXRpbmcvaW5zZXJ0aW5nL2luc2VydC1wYXJhZ3JhcGgt
c2VwYXJhdG9yLXRhYi1zcGFuLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0
cy9lZGl0aW5nL2luc2VydGluZy9pbnNlcnQtcGFyYWdyYXBoLXNlcGFyYXRvci10YWItc3Bhbi1l
eHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9lZGl0aW5nL2luc2VydGlu
Zy9pbnNlcnQtcGFyYWdyYXBoLXNlcGFyYXRvci10YWItc3Bhbi1leHBlY3RlZC50eHQJKHJldmlz
aW9uIDApCkBAIC0wLDAgKzEsMzggQEAKK1RoaXMgdGVzdCBlbnN1cmVzIFdlYktpdCBhdm9pZHMg
Y2xvbmluZyBBcHBsZSB0YWIgc3BhbiB3aGVuIGluc2VydGluZyBhIHBhcmFncmFwaCBzZXBhcmF0
b3IuCitPbmx5IHRhYiBzaG91bGQgYmUgaW5zaWRlIGEgQXBwbGUgdGFiIHNwYW4gaW4gdGhlIGZv
bGxvd2luZyB0ZXN0cy4KKworbGFzdCB2aXNpYmxlIHBvc2l0aW9uOgorfCA8c3Bhbj4KK3wgICBj
bGFzcz0iQXBwbGUtdGFiLXNwYW4iCit8ICAgc3R5bGU9IndoaXRlLXNwYWNlOnByZSIKK3wgICAi
CSIKK3wgPGRpdj4KK3wgICAiaGVsbG8gd29ybGQgV2ViS2l0wqA8I3NlbGVjdGlvbi1jYXJldD4i
CisKK2ZpcnN0IHZpc2libGUgcG9zaXRpb246Cit8IDxkaXY+Cit8ICAgPGJyPgorfCAiaGVsbG8g
d29ybGQgV2ViS2l0wqA8I3NlbGVjdGlvbi1jYXJldD4iCit8IDxzcGFuPgorfCAgIGNsYXNzPSJB
cHBsZS10YWItc3BhbiIKK3wgICBzdHlsZT0id2hpdGUtc3BhY2U6cHJlIgorfCAgICIJIgorCiti
ZWZvcmUgdGFiIHNwYW46Cit8ICJoaSzCoCIKK3wgPGRpdj4KK3wgICAiaGVsbG8gd29ybGQgV2Vi
S2l0wqA8I3NlbGVjdGlvbi1jYXJldD4iCit8ICAgPHNwYW4+Cit8ICAgICBjbGFzcz0iQXBwbGUt
dGFiLXNwYW4iCit8ICAgICBzdHlsZT0id2hpdGUtc3BhY2U6cHJlIgorfCAgICAgIgkiCit8ICAg
IiByb2NrcyIKKworYWZ0ZXIgdGFiIHNwYW46Cit8ICJoaSwgIgorfCA8c3Bhbj4KK3wgICBjbGFz
cz0iQXBwbGUtdGFiLXNwYW4iCit8ICAgc3R5bGU9IndoaXRlLXNwYWNlOnByZSIKK3wgICAiCSIK
K3wgPGRpdj4KK3wgICAiaGVsbG8gd29ybGQgV2ViS2l0IDwjc2VsZWN0aW9uLWNhcmV0PnJvY2tz
IgpJbmRleDogTGF5b3V0VGVzdHMvZWRpdGluZy9pbnNlcnRpbmcvaW5zZXJ0LXBhcmFncmFwaC1z
ZXBhcmF0b3ItdGFiLXNwYW4uaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9lZGl0aW5n
L2luc2VydGluZy9pbnNlcnQtcGFyYWdyYXBoLXNlcGFyYXRvci10YWItc3Bhbi5odG1sCShyZXZp
c2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZWRpdGluZy9pbnNlcnRpbmcvaW5zZXJ0LXBhcmFncmFw
aC1zZXBhcmF0b3ItdGFiLXNwYW4uaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwzMiBAQAor
PCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxib2R5PgorPGRpdiBjb250ZW50ZWRpdGFibGUgdGl0
bGU9IjE6IGxhc3QgdmlzaWJsZSBwb3NpdGlvbiIgc3R5bGU9IndvcmQtd3JhcDogYnJlYWstd29y
ZDsgd2lkdGg6IDEwZXg7IGJvcmRlcjogc29saWQgdGhpbiBibGFjazsiPjxzcGFuIGNsYXNzPSJB
cHBsZS10YWItc3BhbiIgc3R5bGU9IndoaXRlLXNwYWNlOnByZSI+CTwvc3Bhbj48L2Rpdj4KKzxk
aXYgY29udGVudGVkaXRhYmxlIHRpdGxlPSIwOiBmaXJzdCB2aXNpYmxlIHBvc2l0aW9uIiBzdHls
ZT0id29yZC13cmFwOiBicmVhay13b3JkOyB3aWR0aDogMTBleDsgYm9yZGVyOiBzb2xpZCB0aGlu
IGJsYWNrOyI+PHNwYW4gY2xhc3M9IkFwcGxlLXRhYi1zcGFuIiBzdHlsZT0id2hpdGUtc3BhY2U6
cHJlIj4JPC9zcGFuPjwvZGl2PgorPGRpdiBjb250ZW50ZWRpdGFibGUgdGl0bGU9IjE6IGJlZm9y
ZSB0YWIgc3BhbiIgc3R5bGU9IndvcmQtd3JhcDogYnJlYWstd29yZDsgd2lkdGg6IDEwZXg7IGJv
cmRlcjogc29saWQgdGhpbiBibGFjazsiPmhpLCA8c3BhbiBjbGFzcz0iQXBwbGUtdGFiLXNwYW4i
IHN0eWxlPSJ3aGl0ZS1zcGFjZTpwcmUiPgk8L3NwYW4+IHJvY2tzPC9kaXY+Cis8ZGl2IGNvbnRl
bnRlZGl0YWJsZSB0aXRsZT0iMjogYWZ0ZXIgdGFiIHNwYW4iIHN0eWxlPSJ3b3JkLXdyYXA6IGJy
ZWFrLXdvcmQ7IHdpZHRoOiAxMGV4OyBib3JkZXI6IHNvbGlkIHRoaW4gYmxhY2s7Ij5oaSwgPHNw
YW4gY2xhc3M9IkFwcGxlLXRhYi1zcGFuIiBzdHlsZT0id2hpdGUtc3BhY2U6cHJlIj4JPC9zcGFu
PiByb2NrczwvZGl2PgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9kdW1wLWFzLW1hcmt1
cC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0PgorCitNYXJrdXAuZGVzY3JpcHRpb24oJ1RoaXMgdGVz
dCBlbnN1cmVzIFdlYktpdCBhdm9pZHMgY2xvbmluZyBBcHBsZSB0YWIgc3BhbiB3aGVuIGluc2Vy
dGluZyBhIHBhcmFncmFwaCBzZXBhcmF0b3IuXG4nKworICAgICdPbmx5IHRhYiBzaG91bGQgYmUg
aW5zaWRlIGEgQXBwbGUgdGFiIHNwYW4gaW4gdGhlIGZvbGxvd2luZyB0ZXN0cy4nKTsKKworZnVu
Y3Rpb24gcnVuVGVzdChkaXYpIHsKKyAgICB2YXIgb2Zmc2V0ID0gZGl2LnRpdGxlLnN1YnN0cigw
LCBkaXYudGl0bGUuaW5kZXhPZignOicpKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuc2V0
UG9zaXRpb24oZGl2LCBvZmZzZXQpOworICAgIGRvY3VtZW50LmV4ZWNDb21tYW5kKCJJbnNlcnRQ
YXJhZ3JhcGgiKTsKKyAgICBkb2N1bWVudC5leGVjQ29tbWFuZCgiSW5zZXJ0VGV4dCIsIGZhbHNl
LCAiaGVsbG8gd29ybGQgV2ViS2l0ICIpOworICAgIE1hcmt1cC5kdW1wKGRpdiwgZGl2LnRpdGxl
LnN1YnN0cihkaXYudGl0bGUuaW5kZXhPZignOiAnKSArIDIpKTsKK30KKwordmFyIGRpdnMgPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgnZGl2Jyk7Cit2YXIgdGVzdHMgPSBuZXcgQXJy
YXkoKTsKK2ZvciAodmFyIGkgPSAwOyBpIDwgZGl2cy5sZW5ndGg7IGkrKykKKyAgICB0ZXN0cy5w
dXNoKGRpdnNbaV0pOworCitmb3IgKGkgaW4gdGVzdHMpCisgICAgcnVuVGVzdCh0ZXN0c1tpXSk7
CisKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgo=
</data>

          </attachment>
      

    </bug>

</bugzilla>