<?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>45381</bug_id>
          
          <creation_ts>2010-09-08 05:04:11 -0700</creation_ts>
          <short_desc>[Gtk] Adjust atk_text_get_text_at_offset to account for bullets/numbers in list items</short_desc>
          <delta_ts>2010-09-27 14:05:26 -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>Accessibility</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>Linux</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>Gtk</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>25531</blocked>
          <everconfirmed>0</everconfirmed>
          <reporter name="Joanmarie Diggs">jdiggs</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>abarth</cc>
    
    <cc>apinheiro</cc>
    
    <cc>cfleizach</cc>
    
    <cc>commit-queue</cc>
    
    <cc>eric</cc>
    
    <cc>mario</cc>
    
    <cc>mrobinson</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>xan.lopez</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>275761</commentid>
    <comment_count>0</comment_count>
    <who name="Joanmarie Diggs">jdiggs</who>
    <bug_when>2010-09-08 05:04:11 -0700</bug_when>
    <thetext>As a result of the fix for bug #45190, the bullet/number of a list item was made part of the text. (Thanks!) It appears that a corresponding change will need to be made in atk_text_get_text_{at,before,after}_offset.

Using the original test case (https://bug-45190-attachments.webkit.org/attachment.cgi?id=66529)

Steps to reproduce:
1. Open the test case.
2. In Accerciser, select the first bulleted item.
3. In the iPython console:

  In [1]: text = acc.queryText()
  In [2]: text.getText(0, -1)
  Out[2]: &apos;\xe2\x80\xa2 text only&apos;
  In [3]: text.getTextAtOffset(0, TEXT_BOUNDARY_LINE_START)
  Out[3]: (&apos;\xe2\x80\xa2 text onl&apos;, 0, 10)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>280153</commentid>
    <comment_count>1</comment_count>
      <attachid>67807</attachid>
    <who name="Mario Sanchez Prada">mario</who>
    <bug_when>2010-09-16 09:45:21 -0700</bug_when>
    <thetext>Created attachment 67807
Patch proposal

Attaching a patch that would fix the issue.

It adds some -pretty simple yet useful- new API to WebCore::RenderListMarker and WebCore::RenderListItem to provide a way to retrieve the actual full text involved in a list item, that is, the item marker (like &quot;1&quot;, from &quot;1. This is an item&quot;) and the item marker&apos;s suffix (like &quot;. &quot; in &quot;1. This is an item&quot;). So far, it was possible to retrieve the marker but not the suffix, which was dinamically calculated and drawn in the paint() method of WebCore::RenderListMarker. However, as we need the suffix to be as much as accurate as possible when exposing list items to AT&apos;s through the ATK implementation (GTK), we need a way to get that suffix as well, and I thought of this one as the best way to do it.

The other part of the patch is just in AccessibilityObjectWrapperAtk.cpp (GTK port) and fixes some problems considering list markers in the AtkText interface implementation, now doing it in a more consistent way, IMHO.

Hence, now asking for review.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>280155</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-09-16 09:46:48 -0700</bug_when>
    <thetext>Attachment 67807 did not pass style-queue:

Failed to run &quot;[&apos;WebKitTools/Scripts/check-webkit-style&apos;]&quot; exit_code: 1
WebCore/accessibility/gtk/AccessibilityObjectWrapperAtk.cpp:1209:  Extra space before ( in function call  [whitespace/parens] [4]
Total errors found: 1 in 6 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>280156</commentid>
    <comment_count>3</comment_count>
      <attachid>67808</attachid>
    <who name="Mario Sanchez Prada">mario</who>
    <bug_when>2010-09-16 09:48:38 -0700</bug_when>
    <thetext>Created attachment 67808
Patch proposal

Damm it... always remember to run the check-webkit-style script after attaching the patch. Sorry!

This is the patch to review then :-P</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>282561</commentid>
    <comment_count>4</comment_count>
      <attachid>67808</attachid>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2010-09-21 14:33:22 -0700</bug_when>
    <thetext>Comment on attachment 67808
Patch proposal

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

i don&apos;t know how other people feel about adding a variable to RenderListMarker. sometimes they are quite picky about that. 

need a layout test for this however

&gt; WebCore/ChangeLog:39
&gt; +

indent comments when they are underneath the a filename. it makes it easier to read

&gt; WebCore/accessibility/gtk/AccessibilityObjectWrapperAtk.cpp:1218
&gt; +    RenderObject* renderer = static_cast&lt;const AccessibilityRenderObject*&gt;(object)-&gt;renderer();

check if renderer is nil as well

&gt; WebCore/rendering/RenderListItem.cpp:325
&gt; +    const String&amp; markerTxt = m_marker-&gt;text();

var name should be markerText</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>282878</commentid>
    <comment_count>5</comment_count>
    <who name="Mario Sanchez Prada">mario</who>
    <bug_when>2010-09-22 03:54:19 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; (From update of attachment 67808 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=67808&amp;action=review
&gt; 
&gt; i don&apos;t know how other people feel about adding a variable to RenderListMarker. sometimes they are quite picky about that. 

Well, that&apos;s the best way I found to allow returning the marker&apos;s suffix without having to recalculate it each time. But if there&apos;s a better way to do it, I&apos;m more than happy to change it.

&gt; need a layout test for this however

Wouldn&apos;t it be enough with an unit test to check the marker is what it&apos;s supposed to be?

&gt; &gt; WebCore/ChangeLog:39
&gt; &gt; +
&gt; 
&gt; indent comments when they are underneath the a filename. it makes it easier to read

Ok

&gt; &gt; WebCore/accessibility/gtk/AccessibilityObjectWrapperAtk.cpp:1218
&gt; &gt; +    RenderObject* renderer = static_cast&lt;const AccessibilityRenderObject*&gt;(object)-&gt;renderer();
&gt; 
&gt; check if renderer is nil as well

Ok.

&gt; &gt; WebCore/rendering/RenderListItem.cpp:325
&gt; &gt; +    const String&amp; markerTxt = m_marker-&gt;text();
&gt; 
&gt; var name should be markerText

Ok.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>283584</commentid>
    <comment_count>6</comment_count>
      <attachid>68509</attachid>
    <who name="Mario Sanchez Prada">mario</who>
    <bug_when>2010-09-23 05:07:29 -0700</bug_when>
    <thetext>Created attachment 68509
Patch proposal + unit tes updated

(In reply to comment #5)
&gt; (In reply to comment #4)
&gt; &gt; (From update of attachment 67808 [details] [details])
&gt; &gt; View in context: https://bugs.webkit.org/attachment.cgi?id=67808&amp;action=review
&gt; &gt; 
&gt; &gt; i don&apos;t know how other people feel about adding a variable to RenderListMarker. sometimes they are quite picky about that. 
&gt; 
&gt; Well, that&apos;s the best way I found to allow returning the marker&apos;s suffix without having to recalculate it each time. But if there&apos;s a better way to do it, I&apos;m more than happy to change it.

I finally found a simple way to expose the marker&apos;s suffix through a public function without having to add that variable to RenderListMarker, and it was just delegating on the internal static function listMarkerSuffix(), and then doing some small changes in the new funcion RenderListItem::markerTextWithSuffix(). And to be honest, I recognize I like it more this way, which hast the plus of not relying in the painting process to get the right value of the marker suffix.

&gt; &gt; need a layout test for this however
&gt; 
&gt; Wouldn&apos;t it be enough with an unit test to check the marker is what it&apos;s supposed to be?

I updated the unit test for ATK to ensure that the exposition of the marker is the right one. Guess this should be enough, but you (Chris) will better tell
 
&gt; &gt; &gt; WebCore/ChangeLog:39
&gt; &gt; &gt; +
&gt; &gt; 
&gt; &gt; indent comments when they are underneath the a filename. it makes it easier to read
&gt; 
&gt; Ok

Done.
 
&gt; &gt; &gt; WebCore/accessibility/gtk/AccessibilityObjectWrapperAtk.cpp:1218
&gt; &gt; &gt; +    RenderObject* renderer = static_cast&lt;const AccessibilityRenderObject*&gt;(object)-&gt;renderer();
&gt; &gt; 
&gt; &gt; check if renderer is nil as well
&gt; 
&gt; Ok.

Done.

&gt; &gt; &gt; WebCore/rendering/RenderListItem.cpp:325
&gt; &gt; &gt; +    const String&amp; markerTxt = m_marker-&gt;text();
&gt; &gt; 
&gt; &gt; var name should be markerText
&gt; 
&gt; Ok.

Done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>284229</commentid>
    <comment_count>7</comment_count>
      <attachid>68509</attachid>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2010-09-23 22:52:01 -0700</bug_when>
    <thetext>Comment on attachment 68509
Patch proposal + unit tes updated

when you get the text of an item with a list marker, should there be a space between the suffix and the actual text?
atk_text_get_text(ATK_TEXT(item3), 0, -1), ==, &quot;3.text and a link&quot;

otherwise this patch is looking pretty good</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>284273</commentid>
    <comment_count>8</comment_count>
    <who name="Mario Sanchez Prada">mario</who>
    <bug_when>2010-09-24 00:15:18 -0700</bug_when>
    <thetext>(In reply to comment #7)
&gt; (From update of attachment 68509 [details])
&gt; when you get the text of an item with a list marker, should there be a space between the suffix and the actual text?
&gt; atk_text_get_text(ATK_TEXT(item3), 0, -1), ==, &quot;3.text and a link&quot;
&gt; 
&gt; otherwise this patch is looking pretty good

Yeah, actually the previous version of the patch would need that extra space in the test, as I was also returning the space that sometimes comes along with the suffix in the RenderListMarker...

But then I thought again when redoing the patch without using the suffix, and I realized that the aditional space that sometimes is added to the suffix seemed to be too dependant on the painting process (where it&apos;s decided whether to put or not that extra space), and so to return that space along with the suffix would be too much hassle, would complicate this patch too much just because of it and, after all, if I wanted to be coherent, a function RenderListMarker::suffix() should return just the suffix, not the suffix and that -sometimes used while painting- extra space.

On top of that, from the ATK world POV, I don&apos;t think this is a big deal anyway, because at least a 1-character suffix will always be there separating the marker and the item&apos;s content (if it&apos;s not a character like &apos;.&apos;, it will be at least &apos; &apos;), so I don&apos;t think it was worth messing with that kind of things.

Of course, I can be wrong... but I honestly think this is a better, cleaner and good enough implementation. But in case I was wrong, just point it out and I&apos;d look for a reliable way to put that extra space when needed, just the same way it would be done during the execution of the paint() method.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>284321</commentid>
    <comment_count>9</comment_count>
    <who name="Mario Sanchez Prada">mario</who>
    <bug_when>2010-09-24 05:00:17 -0700</bug_when>
    <thetext>(In reply to comment #8)
&gt; (In reply to comment #7)
&gt; [...]
&gt; Of course, I can be wrong... but I honestly think this is a better, cleaner and good enough 
&gt; implementation. But in case I was wrong, just point it out and I&apos;d look for a reliable way to 
&gt; put that extra space when needed, just the same way it would be done during the execution 
&gt; of the paint() method.

I forgot to explicitly say that before, but I&apos;d like to hear as well Joanie&apos;s opinion on this topic, as she probably knows better what it would be acceptable/the right thing to do in this case.

So wrapping up, Joanmarie... would it be ok to expose a list item like &quot;1.item content here&quot; or would it be needed to do it like &quot;1. item content here&quot;, instead?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>284325</commentid>
    <comment_count>10</comment_count>
    <who name="Joanmarie Diggs">jdiggs</who>
    <bug_when>2010-09-24 05:13:08 -0700</bug_when>
    <thetext>(In reply to comment #9)
&gt; (In reply to comment #8)
&gt; &gt; (In reply to comment #7)
&gt; &gt; [...]
&gt; &gt; Of course, I can be wrong... but I honestly think this is a better, cleaner and good enough 
&gt; &gt; implementation. But in case I was wrong, just point it out and I&apos;d look for a reliable way to 
&gt; &gt; put that extra space when needed, just the same way it would be done during the execution 
&gt; &gt; of the paint() method.
&gt; 
&gt; I forgot to explicitly say that before, but I&apos;d like to hear as well Joanie&apos;s opinion on this topic, as she probably knows better what it would be acceptable/the right thing to do in this case.
&gt; 
&gt; So wrapping up, Joanmarie... would it be ok to expose a list item like &quot;1.item content here&quot; or would it be needed to do it like &quot;1. item content here&quot;, instead?

Well, the goal is (of course) to present to the user what&apos;s on the screen. And what&apos;s visually on the screen looks like &quot;1. item content here&quot;. The fact that this appearance was achieved by rendering magic other than the addition of an actual space character is, as far as the end user is concerned, irrelevant. Thus I&apos;m afraid we do need the space added.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>284326</commentid>
    <comment_count>11</comment_count>
    <who name="Mario Sanchez Prada">mario</who>
    <bug_when>2010-09-24 05:24:16 -0700</bug_when>
    <thetext>(In reply to comment #10)
&gt; [...]
&gt; Well, the goal is (of course) to present to the user what&apos;s on the screen. And what&apos;s visually
&gt; on the screen looks like &quot;1. item content here&quot;. The fact that this appearance was achieved 
&gt; by rendering magic other than the addition of an actual space character is, as far as the end 
&gt; user is concerned, irrelevant. Thus I&apos;m afraid we do need the space added.

Ok. Then I&apos;ll try to come up with a patch dealing with that extra space. I&apos;ve just checked what firefox does in thit case and it seems they also add that extra space, so let&apos;s follow the ff lead.

Thanks for the feedback.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>284374</commentid>
    <comment_count>12</comment_count>
      <attachid>68677</attachid>
    <who name="Mario Sanchez Prada">mario</who>
    <bug_when>2010-09-24 07:39:13 -0700</bug_when>
    <thetext>Created attachment 68677
Patch proposal + unit test updated

(In reply to comment #11)
&gt; (In reply to comment #10)
&gt; &gt; [...]
&gt; &gt; Well, the goal is (of course) to present to the user what&apos;s on the screen. And what&apos;s visually
&gt; &gt; on the screen looks like &quot;1. item content here&quot;. The fact that this appearance was achieved 
&gt; &gt; by rendering magic other than the addition of an actual space character is, as far as the end 
&gt; &gt; user is concerned, irrelevant. Thus I&apos;m afraid we do need the space added.
&gt; 
&gt; Ok. Then I&apos;ll try to come up with a patch dealing with that extra space. I&apos;ve just checked what firefox does in thit case and it seems they also add that extra space, so let&apos;s follow the ff lead.
&gt; 
&gt; Thanks for the feedback.

Attaching a new patch that also returns the extra space, when needed, along with the marker&apos;s suffix, so calling to RenderListMarker::suffix() returns the same string that is going to be rendered when painting between the list item and the item&apos;s content.

Hence, asking for review over this new patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>285511</commentid>
    <comment_count>13</comment_count>
      <attachid>68677</attachid>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2010-09-27 09:49:55 -0700</bug_when>
    <thetext>Comment on attachment 68677
Patch proposal + unit test updated

looks ok. thanks
r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>285530</commentid>
    <comment_count>14</comment_count>
    <who name="Mario Sanchez Prada">mario</who>
    <bug_when>2010-09-27 10:14:39 -0700</bug_when>
    <thetext>(In reply to comment #13)
&gt; (From update of attachment 68677 [details])
&gt; looks ok. thanks
&gt; r=me

Thanks for the review. Could you (or some other reviewer/committer) set the cq+ flag? I forgot to set the cq? in advance.

Thanks!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>285600</commentid>
    <comment_count>15</comment_count>
      <attachid>68677</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-09-27 11:16:26 -0700</bug_when>
    <thetext>Comment on attachment 68677
Patch proposal + unit test updated

Rejecting patch 68677 from commit-queue.

Failed to run &quot;[&apos;./WebKitTools/Scripts/webkit-patch&apos;, &apos;--status-host=queues.webkit.org&apos;, &apos;apply-attachment&apos;, &apos;--force-clean&apos;, &apos;--non-interactive&apos;, &apos;--quiet&apos;, 68677]&quot; exit_code: 2
Cleaning working directory
Updating working directory
Failed to run &quot;[&apos;WebKitTools/Scripts/update-webkit&apos;]&quot; exit_code: 2

Full output: http://queues.webkit.org/results/4002175</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>285612</commentid>
    <comment_count>16</comment_count>
    <who name="Mario Sanchez Prada">mario</who>
    <bug_when>2010-09-27 11:25:59 -0700</bug_when>
    <thetext>(In reply to comment #15)
&gt; (From update of attachment 68677 [details])
&gt; Rejecting patch 68677 from commit-queue.
&gt; 
&gt; Failed to run &quot;[&apos;./WebKitTools/Scripts/webkit-patch&apos;, &apos;--status-host=queues.webkit.org&apos;, &apos;apply-attachment&apos;, &apos;--force-clean&apos;, &apos;--non-interactive&apos;, &apos;--quiet&apos;, 68677]&quot; exit_code: 2
&gt; Cleaning working directory
&gt; Updating working directory
&gt; Failed to run &quot;[&apos;WebKitTools/Scripts/update-webkit&apos;]&quot; exit_code: 2
&gt; 
&gt; Full output: http://queues.webkit.org/results/4002175

I don&apos;t know what could have happened here, since the patch applies in my local machine perfectly on top of the very last commit.

Also it looks this issue also happened to other recent patches in the commit queue, so perhaps this is not an isolated issues, but something more global. See bugs 46621, 46538 and 46545, for instance, at the commit queue:

http://webkit-commit-queue.appspot.com/queue-status/commit-queue

If there&apos;s anything I can do from my side, don&apos;t hesitate to let me know.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>285613</commentid>
    <comment_count>17</comment_count>
      <attachid>68677</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-09-27 11:26:07 -0700</bug_when>
    <thetext>Comment on attachment 68677
Patch proposal + unit test updated

Rejecting patch 68677 from commit-queue.

Failed to run &quot;[&apos;./WebKitTools/Scripts/webkit-patch&apos;, &apos;--status-host=queues.webkit.org&apos;, &apos;build-and-test&apos;, &apos;--no-clean&apos;, &apos;--no-update&apos;, &apos;--test&apos;, &apos;--quiet&apos;, &apos;--non-interactive&apos;]&quot; exit_code: 2
Last 500 characters of output:
k
All tests successful.
Files=14, Tests=304,  2 wallclock secs ( 1.13 cusr +  0.23 csys =  1.36 CPU)
Running build-dumprendertree
Compiling Java tests
make: Nothing to be done for `default&apos;.
Running tests from /Users/abarth/git/webkit-queue/LayoutTests
Testing 21379 test cases.
media/invalid-media-url-crash.html -&gt; crashed

Exiting early after 1 failures. 17591 tests run.
597.37s total testing time

17590 test cases (99%) succeeded
1 test case (&lt;1%) crashed
29 test cases (&lt;1%) had stderr output

Full output: http://queues.webkit.org/results/4058163</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>285620</commentid>
    <comment_count>18</comment_count>
      <attachid>68677</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-09-27 11:32:49 -0700</bug_when>
    <thetext>Comment on attachment 68677
Patch proposal + unit test updated

Looks like a flaky test.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>285679</commentid>
    <comment_count>19</comment_count>
      <attachid>68677</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-09-27 12:35:23 -0700</bug_when>
    <thetext>Comment on attachment 68677
Patch proposal + unit test updated

Clearing flags on attachment: 68677

Committed r68415: &lt;http://trac.webkit.org/changeset/68415&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>285680</commentid>
    <comment_count>20</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-09-27 12:35:29 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>285720</commentid>
    <comment_count>21</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-09-27 14:05:26 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/68415 might have broken Leopard Intel Debug (Tests)
The following changes are on the blame list:
http://trac.webkit.org/changeset/68416
http://trac.webkit.org/changeset/68417
http://trac.webkit.org/changeset/68415</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>67807</attachid>
            <date>2010-09-16 09:45:21 -0700</date>
            <delta_ts>2010-09-16 09:48:38 -0700</delta_ts>
            <desc>Patch proposal</desc>
            <filename>0001-2010-09-16-Mario-Sanchez-Prada-msanchez-igalia.com.patch</filename>
            <type>text/plain</type>
            <size>13226</size>
            <attacher name="Mario Sanchez Prada">mario</attacher>
            
              <data encoding="base64">RnJvbSAwYjc5Y2FiZjE5YjY1ZjAyMzg0NWMwMmUxYWM2MDFkMWM2NGUwMTgwIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBNYXJpbyBTYW5jaGV6IFByYWRhIDxtc2FuY2hlekBpZ2FsaWEu
Y29tPgpEYXRlOiBUaHUsIDE2IFNlcCAyMDEwIDE4OjM0OjU0ICswMjAwClN1YmplY3Q6IFtQQVRD
SF0gMjAxMC0wOS0xNiAgTWFyaW8gU2FuY2hleiBQcmFkYSAgPG1zYW5jaGV6QGlnYWxpYS5jb20+
CgogICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgoKICAgICAgICBbR3RrXSBBZGp1
c3QgYXRrX3RleHRfZ2V0X3RleHRfYXRfb2Zmc2V0IHRvIGFjY291bnQgZm9yIGJ1bGxldHMvbnVt
YmVycyBpbiBsaXN0IGl0ZW1zCiAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTQ1MzgxCgogICAgICAgIEVuc3VyZSBsaXN0IG1hcmtlcnMgYXJlIGNvbnNpc3Rl
bnRseSB1c2VkIGluIHRoZSBBdGsgd3JhcHBlci4KCiAgICAgICAgVGhpcyBwYXRjaCBkb2VzIHR3
byB0aGluZ3MgKGJvdGggbmVlZGVkIHRvIGZpeCB0aGUgYnVnKTogSXQKICAgICAgICBpbXByb3Zl
cyB0aGUgd2F5IGxpc3QgaXRlbXMgbWFya2VycyBhcmUgZXhwb3NlZCB0aHJvdWdoIHRoZSBBdGsK
ICAgICAgICBXcmFwcGVyIChieSBleHBvc2luZyB0aGUgZXhhY3QgdGV4dCBpbiB0aGUgbWFya2Vy
LCBpbmNsdWRpbmcgdGhlCiAgICAgICAgbWFya2VyIHN1ZmZpeCwgaWYgYW55KSBhbmQgbWFrZXMg
c3VyZSB0aGUgbWFya2VyIGlzIGNvbnNpc3RlbnRseQogICAgICAgIGNvbnNpZGVyZWQgYW5kIHRy
ZWF0ZWQgaW4gdGhvc2UgbWV0aG9kcyBvZiB0aGUgQXRrVGV4dCBpbnRlcmZhY2UKICAgICAgICB0
aGF0IHdvdWxkIG5lZWQgaXQgKGxpa2UgYXRrX3RleHRfZ2V0X2NoYXJhY3Rlcl9jb3VudCBvcgog
ICAgICAgIGF0a190ZXh0X2dldF9ydW5fYXR0cmlidXRlcywgZm9yIGluc3RhbmNlKS4KCiAgICAg
ICAgKiBhY2Nlc3NpYmlsaXR5L2d0ay9BY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlckF0ay5jcHA6
CiAgICAgICAgKHRleHRGb3JPYmplY3QpOiBBcHBlbmQvcHJlcGVuZCBsaXN0IG1hcmtlciB3aGVu
IG5lZWRlZC4KICAgICAgICAod2Via2l0X2FjY2Vzc2libGVfdGV4dF9nZXRfdGV4dCk6IFVzZSB0
aGUgbmV3IGZ1bmN0aW9uCiAgICAgICAgbWFya2VyVGV4dFdpdGhTdWZmaXgoKSB0byBleHBvc2Ug
YSBtb3JlIGFjY3VyYXRlIHZhbHVlLgogICAgICAgIChhY2Nlc3NpYmlsaXR5T2JqZWN0TGVuZ3Ro
KTogQ29uc2lkZXIgbGlzdCBpdGVtcyBtYXJrZXIgdG8gcmV0dXJuCiAgICAgICAgdGhlIGxlbmd0
aCBvZiBhbiBvYmplY3QsIGlmIG5lZWRlZC4gQWxzbywgYWRkZWQgc29tZSBleHRyYSBjaGVja3Mu
CiAgICAgICAgKHdlYmtpdF9hY2Nlc3NpYmxlX3RleHRfZ2V0X2NoYXJhY3Rlcl9jb3VudCk6IEp1
c3QgZGVsZWdhdGUgb24KICAgICAgICBhY2Nlc3NpYmlsaXR5T2JqZWN0TGVuZ3RoLCB0byBtYWtl
IGl0IGNsZWFuZXIgYW5kIG1vcmUgY29uc2lzdGVudC4KICAgICAgICAqIHJlbmRlcmluZy9SZW5k
ZXJMaXN0SXRlbS5jcHA6CiAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxpc3RJdGVtOjptYXJrZXJU
ZXh0V2l0aFN1ZmZpeCk6IE5ldyBwdWJsaWMKICAgICAgICBmdW5jdGlvbiB0byByZXR1cm4gYSBz
aW5nbGUgc3RyaW5nIHdpdGggdGhlIG1hcmtlciBhc3NvY2lhdGVkIHRvCiAgICAgICAgdGhlIGl0
ZW0gYW5kIGl0cyBzdWZmaXgsIGNvbnNpZGVyaW5nIHRleHQgZGlyZWN0aW9uIChMVFIgb3IgUlRM
KS4KICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMaXN0SXRlbS5oOgogICAgICAgICogcmVuZGVy
aW5nL1JlbmRlckxpc3RNYXJrZXIuY3BwOgogICAgICAgIChXZWJDb3JlOjpSZW5kZXJMaXN0TWFy
a2VyOjpwYWludCk6IFVwZGF0ZSB0aGUgbV9zdWZmaXggcHJpdmF0ZQogICAgICAgIGF0dHJpYnV0
ZSBhcyBuZWVkZWQsIGNvbnNpZGVyaW5nIHRleHQgZGlyZWN0aW9uIChMVFIgb3IgUlRMKS4KICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyTGlzdE1hcmtlcjo6Y2FsY1ByZWZXaWR0aHMpOiBJbml0aWFs
aXplIG1fc3VmZml4CiAgICAgICAgdG8gaXRzIGRlZmF1bHQgdmFsdWUuCiAgICAgICAgKiByZW5k
ZXJpbmcvUmVuZGVyTGlzdE1hcmtlci5oOgogICAgICAgIChXZWJDb3JlOjpSZW5kZXJMaXN0TWFy
a2VyOjpzdWZmaXgpOiBOZXcgcHVibGljIGZ1bmN0aW9uIHRvIHJldHVybgogICAgICAgIHRoZSBp
bnRlcm5hbCBTdHJpbmcgd2l0aCB0aGUgc3VmZml4IGFzc29jaWF0ZWQgdG8gdGhlIG1hcmtlci4K
LS0tCiBXZWJDb3JlL0NoYW5nZUxvZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8
ICAgMzkgKysrKysrKysrKysrKwogLi4uL2d0ay9BY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlckF0
ay5jcHAgICAgICAgICAgfCAgIDU3ICsrKysrKysrKysrKysrKy0tLS0tCiBXZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJMaXN0SXRlbS5jcHAgICAgICAgICAgICAgICB8ICAgMjMgKysrKysrKysKIFdl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpc3RJdGVtLmggICAgICAgICAgICAgICAgIHwgICAgMSAr
CiBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0TWFya2VyLmNwcCAgICAgICAgICAgICB8ICAg
IDMgKwogV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlzdE1hcmtlci5oICAgICAgICAgICAgICAg
fCAgICAyICsKIDYgZmlsZXMgY2hhbmdlZCwgMTExIGluc2VydGlvbnMoKyksIDE0IGRlbGV0aW9u
cygtKQoKZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cK
aW5kZXggNDQxY2M1YS4uMDk5MWE0NiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysr
IGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0MiBAQAorMjAxMC0wOS0xNiAgTWFyaW8g
U2FuY2hleiBQcmFkYSAgPG1zYW5jaGV6QGlnYWxpYS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgW0d0a10gQWRqdXN0IGF0a190ZXh0X2dldF90
ZXh0X2F0X29mZnNldCB0byBhY2NvdW50IGZvciBidWxsZXRzL251bWJlcnMgaW4gbGlzdCBpdGVt
cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDUzODEK
KworICAgICAgICBFbnN1cmUgbGlzdCBtYXJrZXJzIGFyZSBjb25zaXN0ZW50bHkgdXNlZCBpbiB0
aGUgQXRrIHdyYXBwZXIuCisKKyAgICAgICAgVGhpcyBwYXRjaCBkb2VzIHR3byB0aGluZ3MgKGJv
dGggbmVlZGVkIHRvIGZpeCB0aGUgYnVnKTogSXQKKyAgICAgICAgaW1wcm92ZXMgdGhlIHdheSBs
aXN0IGl0ZW1zIG1hcmtlcnMgYXJlIGV4cG9zZWQgdGhyb3VnaCB0aGUgQXRrCisgICAgICAgIFdy
YXBwZXIgKGJ5IGV4cG9zaW5nIHRoZSBleGFjdCB0ZXh0IGluIHRoZSBtYXJrZXIsIGluY2x1ZGlu
ZyB0aGUKKyAgICAgICAgbWFya2VyIHN1ZmZpeCwgaWYgYW55KSBhbmQgbWFrZXMgc3VyZSB0aGUg
bWFya2VyIGlzIGNvbnNpc3RlbnRseQorICAgICAgICBjb25zaWRlcmVkIGFuZCB0cmVhdGVkIGlu
IHRob3NlIG1ldGhvZHMgb2YgdGhlIEF0a1RleHQgaW50ZXJmYWNlCisgICAgICAgIHRoYXQgd291
bGQgbmVlZCBpdCAobGlrZSBhdGtfdGV4dF9nZXRfY2hhcmFjdGVyX2NvdW50IG9yCisgICAgICAg
IGF0a190ZXh0X2dldF9ydW5fYXR0cmlidXRlcywgZm9yIGluc3RhbmNlKS4KKworICAgICAgICAq
IGFjY2Vzc2liaWxpdHkvZ3RrL0FjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyQXRrLmNwcDoKKyAg
ICAgICAgKHRleHRGb3JPYmplY3QpOiBBcHBlbmQvcHJlcGVuZCBsaXN0IG1hcmtlciB3aGVuIG5l
ZWRlZC4KKyAgICAgICAgKHdlYmtpdF9hY2Nlc3NpYmxlX3RleHRfZ2V0X3RleHQpOiBVc2UgdGhl
IG5ldyBmdW5jdGlvbgorICAgICAgICBtYXJrZXJUZXh0V2l0aFN1ZmZpeCgpIHRvIGV4cG9zZSBh
IG1vcmUgYWNjdXJhdGUgdmFsdWUuCisgICAgICAgIChhY2Nlc3NpYmlsaXR5T2JqZWN0TGVuZ3Ro
KTogQ29uc2lkZXIgbGlzdCBpdGVtcyBtYXJrZXIgdG8gcmV0dXJuCisgICAgICAgIHRoZSBsZW5n
dGggb2YgYW4gb2JqZWN0LCBpZiBuZWVkZWQuIEFsc28sIGFkZGVkIHNvbWUgZXh0cmEgY2hlY2tz
LgorICAgICAgICAod2Via2l0X2FjY2Vzc2libGVfdGV4dF9nZXRfY2hhcmFjdGVyX2NvdW50KTog
SnVzdCBkZWxlZ2F0ZSBvbgorICAgICAgICBhY2Nlc3NpYmlsaXR5T2JqZWN0TGVuZ3RoLCB0byBt
YWtlIGl0IGNsZWFuZXIgYW5kIG1vcmUgY29uc2lzdGVudC4KKyAgICAgICAgKiByZW5kZXJpbmcv
UmVuZGVyTGlzdEl0ZW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGlzdEl0ZW06Om1h
cmtlclRleHRXaXRoU3VmZml4KTogTmV3IHB1YmxpYworICAgICAgICBmdW5jdGlvbiB0byByZXR1
cm4gYSBzaW5nbGUgc3RyaW5nIHdpdGggdGhlIG1hcmtlciBhc3NvY2lhdGVkIHRvCisgICAgICAg
IHRoZSBpdGVtIGFuZCBpdHMgc3VmZml4LCBjb25zaWRlcmluZyB0ZXh0IGRpcmVjdGlvbiAoTFRS
IG9yIFJUTCkuCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxpc3RJdGVtLmg6CisgICAgICAg
ICogcmVuZGVyaW5nL1JlbmRlckxpc3RNYXJrZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyTGlzdE1hcmtlcjo6cGFpbnQpOiBVcGRhdGUgdGhlIG1fc3VmZml4IHByaXZhdGUKKyAgICAg
ICAgYXR0cmlidXRlIGFzIG5lZWRlZCwgY29uc2lkZXJpbmcgdGV4dCBkaXJlY3Rpb24gKExUUiBv
ciBSVEwpLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGlzdE1hcmtlcjo6Y2FsY1ByZWZXaWR0
aHMpOiBJbml0aWFsaXplIG1fc3VmZml4CisgICAgICAgIHRvIGl0cyBkZWZhdWx0IHZhbHVlLgor
ICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMaXN0TWFya2VyLmg6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJMaXN0TWFya2VyOjpzdWZmaXgpOiBOZXcgcHVibGljIGZ1bmN0aW9uIHRvIHJldHVy
bgorICAgICAgICB0aGUgaW50ZXJuYWwgU3RyaW5nIHdpdGggdGhlIHN1ZmZpeCBhc3NvY2lhdGVk
IHRvIHRoZSBtYXJrZXIuCisKIDIwMTAtMDktMTQgIEt3YW5nIFl1bCBTZW8gIDxza3l1bEBjb21w
YW55MTAwLm5ldD4KIAogICAgICAgICBSZXZpZXdlZCBieSBLZW50IFRhbXVyYS4KZGlmZiAtLWdp
dCBhL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9ndGsvQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJB
dGsuY3BwIGIvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2d0ay9BY2Nlc3NpYmlsaXR5T2JqZWN0V3Jh
cHBlckF0ay5jcHAKaW5kZXggMDFkZGRkMS4uMmFlN2M2NiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9h
Y2Nlc3NpYmlsaXR5L2d0ay9BY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlckF0ay5jcHAKKysrIGIv
V2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2d0ay9BY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlckF0ay5j
cHAKQEAgLTU1LDYgKzU1LDcgQEAKICNpbmNsdWRlICJJbmxpbmVUZXh0Qm94LmgiCiAjaW5jbHVk
ZSAiSW50UmVjdC5oIgogI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCisjaW5jbHVkZSAiUmVu
ZGVyTGlzdEl0ZW0uaCIKICNpbmNsdWRlICJSZW5kZXJMaXN0TWFya2VyLmgiCiAjaW5jbHVkZSAi
UmVuZGVyVGV4dC5oIgogI2luY2x1ZGUgIlRleHRFbmNvZGluZy5oIgpAQCAtODc4LDkgKzg3OSwx
MyBAQCBnY2hhciogdGV4dEZvck9iamVjdChBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0KiBhY2NP
YmplY3QpCiAgICAgICAgICAgICBnX3N0cmluZ19hcHBlbmQoc3RyLCAiXG4iKTsKICAgICAgICAg
ICAgIHJhbmdlID0gYWNjT2JqZWN0LT5kb0FYUmFuZ2VGb3JMaW5lKCsrbGluZU51bWJlcik7CiAg
ICAgICAgIH0KLSAgICB9IGVsc2UgaWYgKGFjY09iamVjdC0+cmVuZGVyZXIoKSkgeworICAgIH0g
ZWxzZSB7CisgICAgICAgIFJlbmRlck9iamVjdCogcmVuZGVyZXIgPSBhY2NPYmplY3QtPnJlbmRl
cmVyKCk7CisgICAgICAgIGlmICghcmVuZGVyZXIpCisgICAgICAgICAgICByZXR1cm4gZ19zdHJp
bmdfZnJlZShzdHIsIEZBTFNFKTsKKwogICAgICAgICAvLyBGb3IgUmVuZGVyQmxvY2tzLCBwaWVj
ZSB0b2dldGhlciB0aGUgdGV4dCBmcm9tIHRoZSBSZW5kZXJUZXh0IG9iamVjdHMgdGhleSBjb250
YWluLgotICAgICAgICBmb3IgKFJlbmRlck9iamVjdCogb2JqID0gYWNjT2JqZWN0LT5yZW5kZXJl
cigpLT5maXJzdENoaWxkKCk7IG9iajsgb2JqID0gb2JqLT5uZXh0U2libGluZygpKSB7CisgICAg
ICAgIGZvciAoUmVuZGVyT2JqZWN0KiBvYmogPSByZW5kZXJlci0+Zmlyc3RDaGlsZCgpOyBvYmo7
IG9iaiA9IG9iai0+bmV4dFNpYmxpbmcoKSkgewogICAgICAgICAgICAgaWYgKG9iai0+aXNCUigp
KSB7CiAgICAgICAgICAgICAgICAgZ19zdHJpbmdfYXBwZW5kKHN0ciwgIlxuIik7CiAgICAgICAg
ICAgICAgICAgY29udGludWU7CkBAIC05MDcsNyArOTEyLDE3IEBAIGdjaGFyKiB0ZXh0Rm9yT2Jq
ZWN0KEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QqIGFjY09iamVjdCkKICAgICAgICAgICAgICAg
ICBib3ggPSBib3gtPm5leHRUZXh0Qm94KCk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KKwor
ICAgICAgICAvLyBJbnNlcnQgdGhlIHRleHQgb2YgdGhlIG1hcmtlciBmb3IgbGlzdCBpdGVtIGlu
IHRoZSByaWdodCBwbGFjZSwgaWYgcHJlc2VudAorICAgICAgICBpZiAocmVuZGVyZXItPmlzTGlz
dEl0ZW0oKSkgeworICAgICAgICAgICAgU3RyaW5nIG1hcmtlclRleHQgPSB0b1JlbmRlckxpc3RJ
dGVtKHJlbmRlcmVyKS0+bWFya2VyVGV4dFdpdGhTdWZmaXgoKTsKKyAgICAgICAgICAgIGlmIChy
ZW5kZXJlci0+c3R5bGUoKS0+ZGlyZWN0aW9uKCkgPT0gTFRSKQorICAgICAgICAgICAgICAgIGdf
c3RyaW5nX3ByZXBlbmQoc3RyLCBtYXJrZXJUZXh0LnV0ZjgoKS5kYXRhKCkpOworICAgICAgICAg
ICAgZWxzZQorICAgICAgICAgICAgICAgIGdfc3RyaW5nX2FwcGVuZChzdHIsIG1hcmtlclRleHQu
dXRmOCgpLmRhdGEoKSk7CisgICAgICAgIH0KICAgICB9CisKICAgICByZXR1cm4gZ19zdHJpbmdf
ZnJlZShzdHIsIEZBTFNFKTsKIH0KIApAQCAtOTM5LDEwICs5NTQsOSBAQCBzdGF0aWMgZ2NoYXIq
IHdlYmtpdF9hY2Nlc3NpYmxlX3RleHRfZ2V0X3RleHQoQXRrVGV4dCogdGV4dCwgZ2ludCBzdGFy
dE9mZnNldCwgZwogICAgIC8vIFByZWZpeCBhIGl0ZW0gbnVtYmVyL2J1bGxldCBpZiBuZWVkZWQK
ICAgICBpZiAoY29yZU9iamVjdC0+cm9sZVZhbHVlKCkgPT0gTGlzdEl0ZW1Sb2xlKSB7CiAgICAg
ICAgIFJlbmRlck9iamVjdCogb2JqUmVuZGVyZXIgPSBzdGF0aWNfY2FzdDxBY2Nlc3NpYmlsaXR5
UmVuZGVyT2JqZWN0Kj4oY29yZU9iamVjdCktPnJlbmRlcmVyKCk7Ci0gICAgICAgIFJlbmRlck9i
amVjdCogbWFya2VyUmVuZGVyZXIgPSBvYmpSZW5kZXJlciA/IG9ialJlbmRlcmVyLT5maXJzdENo
aWxkKCkgOiAwOwotICAgICAgICBpZiAobWFya2VyUmVuZGVyZXIgJiYgbWFya2VyUmVuZGVyZXIt
PmlzTGlzdE1hcmtlcigpKSB7Ci0gICAgICAgICAgICBTdHJpbmcgbWFya2VyVHh0ID0gdG9SZW5k
ZXJMaXN0TWFya2VyKG1hcmtlclJlbmRlcmVyKS0+dGV4dCgpOwotICAgICAgICAgICAgcmV0ID0g
bWFya2VyVHh0Lmxlbmd0aCgpID4gMCA/IG1hcmtlclR4dCArICIgIiArIHJldCA6IHJldDsKKyAg
ICAgICAgaWYgKG9ialJlbmRlcmVyICYmIG9ialJlbmRlcmVyLT5pc0xpc3RJdGVtKCkpIHsKKyAg
ICAgICAgICAgIFN0cmluZyBtYXJrZXJUZXh0ID0gdG9SZW5kZXJMaXN0SXRlbShvYmpSZW5kZXJl
ciktPm1hcmtlclRleHRXaXRoU3VmZml4KCk7CisgICAgICAgICAgICByZXQgPSBvYmpSZW5kZXJl
ci0+c3R5bGUoKS0+ZGlyZWN0aW9uKCkgPT0gTFRSID8gbWFya2VyVGV4dCArIHJldCA6IHJldCAr
IG1hcmtlclRleHQ7CiAgICAgICAgIH0KICAgICB9CiAKQEAgLTExODUsOCArMTE5OSwyOCBAQCBz
dGF0aWMgQXRrQXR0cmlidXRlU2V0KiBhdHRyaWJ1dGVTZXREaWZmZXJlbmNlKEF0a0F0dHJpYnV0
ZVNldCogYTEsIEF0a0F0dHJpYnV0ZQogCiBzdGF0aWMgZ3VpbnQgYWNjZXNzaWJpbGl0eU9iamVj
dExlbmd0aChjb25zdCBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBvYmplY3QpCiB7Ci0gICAgR093blB0
cjxnY2hhcj4gdGV4dCh3ZWJraXRfYWNjZXNzaWJsZV90ZXh0X2dldF90ZXh0KEFUS19URVhUKG9i
amVjdC0+d3JhcHBlcigpKSwgMCwgLTEpKTsKLSAgICByZXR1cm4gZ191dGY4X3N0cmxlbih0ZXh0
LmdldCgpLCAtMSk7CisgICAgLy8gTm9uIHJlbmRlciBvYmplY3RzIGFyZSBub3QgdGFrZW4gaW50
byBhY2NvdW50CisgICAgaWYgKCFvYmplY3QtPmlzQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdCgp
KQorICAgICAgICByZXR1cm4gMDsKKworICAgIC8vIEZvciB0aG9zZSBvYmplY3RzIGltcGxlbWVu
dGluZyB0aGUgQXRrVGV4dCBpbnRlcmZhY2Ugd2UgdXNlIHRoZQorICAgIC8vIHdlbGwga25vd24g
QVBJIHRvIGFsd2F5cyBnZXQgdGhlIHRleHQgaW4gYSBjb25zaXN0ZW50IHdheQorICAgIEF0a09i
amVjdCogYXRrT2JqID0gQVRLX09CSkVDVChvYmplY3QtPndyYXBwZXIoKSk7CisgICAgaWYgKEFU
S19JU19URVhUIChhdGtPYmopKSB7CisgICAgICBHT3duUHRyPGdjaGFyPiB0ZXh0KHdlYmtpdF9h
Y2Nlc3NpYmxlX3RleHRfZ2V0X3RleHQoQVRLX1RFWFQoYXRrT2JqKSwgMCwgLTEpKTsKKyAgICAg
IHJldHVybiBnX3V0Zjhfc3RybGVuKHRleHQuZ2V0KCksIC0xKTsKKyAgICB9CisKKyAgICAvLyBF
dmVuIGlmIHdlIGRvbid0IGV4cG9zZSBsaXN0IG1hcmtlcnMgdG8gQXNzaXN0aXZlCisgICAgLy8g
VGVjaG5vbG9naWVzLCB3ZSBuZWVkIHRvIGhhdmUgYSB3YXkgdG8gbWVhc3VyZSB0aGVpciBsZW5n
dGgKKyAgICAvLyBmb3IgdGhvc2UgY2FzZXMgd2hlbiBpdCdzIG5lZWRlZCB0byB0YWtlIGl0IGlu
dG8gYWNjb3VudAorICAgIC8vIHNlcGFyYXRlbHkgKGFzIGluIGdldEFjY2Vzc2liaWxpdHlPYmpl
Y3RGb3JPZmZzZXQpCisgICAgUmVuZGVyT2JqZWN0KiByZW5kZXJlciA9IHN0YXRpY19jYXN0PGNv
bnN0IEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QqPihvYmplY3QpLT5yZW5kZXJlcigpOworICAg
IGlmICghcmVuZGVyZXItPmlzTGlzdE1hcmtlcigpKQorICAgICAgcmV0dXJuIDA7CisKKyAgICBS
ZW5kZXJMaXN0TWFya2VyKiBtYXJrZXIgPSB0b1JlbmRlckxpc3RNYXJrZXIocmVuZGVyZXIpOwor
ICAgIHJldHVybiBtYXJrZXItPnRleHQoKS5sZW5ndGgoKSArIG1hcmtlci0+c3VmZml4KCkubGVu
Z3RoKCk7CiB9CiAKIHN0YXRpYyBjb25zdCBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBnZXRBY2Nlc3Np
YmlsaXR5T2JqZWN0Rm9yT2Zmc2V0KGNvbnN0IEFjY2Vzc2liaWxpdHlPYmplY3QqIG9iamVjdCwg
Z3VpbnQgb2Zmc2V0LCBnaW50KiBzdGFydE9mZnNldCwgZ2ludCogZW5kT2Zmc2V0KQpAQCAtMTMy
MSwxMiArMTM1NSw3IEBAIHN0YXRpYyB2b2lkIHdlYmtpdF9hY2Nlc3NpYmxlX3RleHRfZ2V0X3Jh
bmdlX2V4dGVudHMoQXRrVGV4dCogdGV4dCwgZ2ludCBzdGFydE9mCiAKIHN0YXRpYyBnaW50IHdl
YmtpdF9hY2Nlc3NpYmxlX3RleHRfZ2V0X2NoYXJhY3Rlcl9jb3VudChBdGtUZXh0KiB0ZXh0KQog
ewotICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIGNvcmVPYmplY3QgPSBjb3JlKHRleHQpOwotCi0g
ICAgaWYgKGNvcmVPYmplY3QtPmlzVGV4dENvbnRyb2woKSkKLSAgICAgICAgcmV0dXJuIGNvcmVP
YmplY3QtPnRleHRMZW5ndGgoKTsKLSAgICBlbHNlCi0gICAgICAgIHJldHVybiBjb3JlT2JqZWN0
LT50ZXh0VW5kZXJFbGVtZW50KCkubGVuZ3RoKCk7CisgICAgcmV0dXJuIGFjY2Vzc2liaWxpdHlP
YmplY3RMZW5ndGgoY29yZSh0ZXh0KSk7CiB9CiAKIHN0YXRpYyBnaW50IHdlYmtpdF9hY2Nlc3Np
YmxlX3RleHRfZ2V0X29mZnNldF9hdF9wb2ludChBdGtUZXh0KiB0ZXh0LCBnaW50IHgsIGdpbnQg
eSwgQXRrQ29vcmRUeXBlIGNvb3JkcykKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckxpc3RJdGVtLmNwcCBiL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpc3RJdGVtLmNwcApp
bmRleCAyMzY2YTM0Li45ZjQ0OGQ5IDEwMDY0NAotLS0gYS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJMaXN0SXRlbS5jcHAKKysrIGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlzdEl0ZW0uY3Bw
CkBAIC0zMTQsNiArMzE0LDI5IEBAIGNvbnN0IFN0cmluZyYgUmVuZGVyTGlzdEl0ZW06Om1hcmtl
clRleHQoKSBjb25zdAogICAgIHJldHVybiBzdGF0aWNOdWxsU3RyaW5nOwogfQogCitTdHJpbmcg
UmVuZGVyTGlzdEl0ZW06Om1hcmtlclRleHRXaXRoU3VmZml4KCkgY29uc3QKK3sKKyAgICBpZiAo
IW1fbWFya2VyKQorICAgICAgICByZXR1cm4gU3RyaW5nKCk7CisKKyAgICAvLyBBcHBlbmQgdGhl
IHN1ZmZpeCBmb3IgdGhlIG1hcmtlciBpbiB0aGUgcmlnaHQgcGxhY2UgZGVwZW5kaW5nCisgICAg
Ly8gb24gdGhlIGRpcmVjdGlvbiBvZiB0aGUgdGV4dCAocmlnaHQtdG8tbGVmdCBvciBsZWZ0LXRv
LXJpZ2h0KS4KKworICAgIGNvbnN0IFN0cmluZyYgbWFya2VyVHh0ID0gbV9tYXJrZXItPnRleHQo
KTsKKyAgICBjb25zdCBTdHJpbmcmIG1hcmtlclN1ZmZpeCA9IG1fbWFya2VyLT5zdWZmaXgoKTsK
KyAgICBWZWN0b3I8VUNoYXI+IHJlc3VsdFZlY3RvcjsKKworICAgIGlmIChtX21hcmtlci0+c3R5
bGUoKS0+ZGlyZWN0aW9uKCkgPT0gUlRMKQorICAgICAgICByZXN1bHRWZWN0b3IuYXBwZW5kKG1h
cmtlclN1ZmZpeC5jaGFyYWN0ZXJzKCksIG1hcmtlclN1ZmZpeC5sZW5ndGgoKSk7CisKKyAgICBy
ZXN1bHRWZWN0b3IuYXBwZW5kKG1hcmtlclR4dC5jaGFyYWN0ZXJzKCksIG1hcmtlclR4dC5sZW5n
dGgoKSk7CisKKyAgICBpZiAobV9tYXJrZXItPnN0eWxlKCktPmRpcmVjdGlvbigpID09IExUUikK
KyAgICAgICAgcmVzdWx0VmVjdG9yLmFwcGVuZChtYXJrZXJTdWZmaXguY2hhcmFjdGVycygpLCBt
YXJrZXJTdWZmaXgubGVuZ3RoKCkpOworCisgICAgcmV0dXJuIFN0cmluZzo6YWRvcHQocmVzdWx0
VmVjdG9yKTsKK30KKwogdm9pZCBSZW5kZXJMaXN0SXRlbTo6ZXhwbGljaXRWYWx1ZUNoYW5nZWQo
KQogewogICAgIGlmIChtX21hcmtlcikKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckxpc3RJdGVtLmggYi9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0SXRlbS5oCmluZGV4
IDEzZDgxZjIuLjFjZjI5MzQgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxp
c3RJdGVtLmgKKysrIGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlzdEl0ZW0uaApAQCAtNDUs
NiArNDUsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBub3RJbkxpc3QoKSBjb25zdCB7IHJldHVybiBt
X25vdEluTGlzdDsgfQogCiAgICAgY29uc3QgU3RyaW5nJiBtYXJrZXJUZXh0KCkgY29uc3Q7Cisg
ICAgU3RyaW5nIG1hcmtlclRleHRXaXRoU3VmZml4KCkgY29uc3Q7CiAKICAgICB2b2lkIHVwZGF0
ZUxpc3RNYXJrZXJOdW1iZXJzKCk7CiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckxpc3RNYXJrZXIuY3BwIGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlzdE1hcmtlci5j
cHAKaW5kZXggN2IzM2MzZC4uZGNiNGExNiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyTGlzdE1hcmtlci5jcHAKKysrIGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlzdE1h
cmtlci5jcHAKQEAgLTEyNjIsMTIgKzEyNjIsMTQgQEAgdm9pZCBSZW5kZXJMaXN0TWFya2VyOjpw
YWludChQYWludEluZm8mIHBhaW50SW5mbywgaW50IHR4LCBpbnQgdHkpCiAgICAgICAgIGNvbnRl
eHQtPmRyYXdUZXh0KHN0eWxlKCktPmZvbnQoKSwgdGV4dFJ1biwgbWFya2VyLmxvY2F0aW9uKCkp
OwogICAgICAgICBVQ2hhciBzdWZmaXhTcGFjZVsyXSA9IHsgc3VmZml4LCAnICcgfTsKICAgICAg
ICAgY29udGV4dC0+ZHJhd1RleHQoc3R5bGUoKS0+Zm9udCgpLCBUZXh0UnVuKHN1ZmZpeFNwYWNl
LCAyKSwgbWFya2VyLmxvY2F0aW9uKCkgKyBJbnRTaXplKHdpZHRoLCAwKSk7CisgICAgICAgIG1f
c3VmZml4ID0gU3RyaW5nKHN1ZmZpeFNwYWNlLCAyKTsKICAgICB9IGVsc2UgewogICAgICAgICBV
Q2hhciBzcGFjZVN1ZmZpeFsyXSA9IHsgJyAnLCBzdWZmaXggfTsKICAgICAgICAgVGV4dFJ1biBz
cGFjZVN1ZmZpeFJ1bihzcGFjZVN1ZmZpeCwgMik7CiAgICAgICAgIGludCB3aWR0aCA9IGZvbnQu
d2lkdGgoc3BhY2VTdWZmaXhSdW4pOwogICAgICAgICBjb250ZXh0LT5kcmF3VGV4dChzdHlsZSgp
LT5mb250KCksIHNwYWNlU3VmZml4UnVuLCBtYXJrZXIubG9jYXRpb24oKSk7CiAgICAgICAgIGNv
bnRleHQtPmRyYXdUZXh0KHN0eWxlKCktPmZvbnQoKSwgdGV4dFJ1biwgbWFya2VyLmxvY2F0aW9u
KCkgKyBJbnRTaXplKHdpZHRoLCAwKSk7CisgICAgICAgIG1fc3VmZml4ID0gU3RyaW5nKHNwYWNl
U3VmZml4LCAyKTsKICAgICB9CiB9CiAKQEAgLTEzMTMsNiArMTMxNSw3IEBAIHZvaWQgUmVuZGVy
TGlzdE1hcmtlcjo6Y2FsY1ByZWZXaWR0aHMoKQogICAgIEFTU0VSVChwcmVmV2lkdGhzRGlydHko
KSk7CiAKICAgICBtX3RleHQgPSAiIjsKKyAgICBtX3N1ZmZpeCA9ICIgIjsKIAogICAgIGNvbnN0
IEZvbnQmIGZvbnQgPSBzdHlsZSgpLT5mb250KCk7CiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckxpc3RNYXJrZXIuaCBiL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpc3RN
YXJrZXIuaAppbmRleCA5NzE4NzdiLi4yZTZhMTQ0IDEwMDY0NAotLS0gYS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJMaXN0TWFya2VyLmgKKysrIGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlz
dE1hcmtlci5oCkBAIC00MSw2ICs0MSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgY2Fs
Y1ByZWZXaWR0aHMoKTsKIAogICAgIGNvbnN0IFN0cmluZyYgdGV4dCgpIGNvbnN0IHsgcmV0dXJu
IG1fdGV4dDsgfQorICAgIGNvbnN0IFN0cmluZyYgc3VmZml4KCkgY29uc3QgeyByZXR1cm4gbV9z
dWZmaXg7IH0KIAogICAgIGJvb2wgaXNJbnNpZGUoKSBjb25zdDsKIApAQCAtNzYsNiArNzcsNyBA
QCBwcml2YXRlOgogICAgIEludFJlY3QgbG9jYWxTZWxlY3Rpb25SZWN0KCk7CiAKICAgICBTdHJp
bmcgbV90ZXh0OworICAgIFN0cmluZyBtX3N1ZmZpeDsKICAgICBSZWZQdHI8U3R5bGVJbWFnZT4g
bV9pbWFnZTsKICAgICBSZW5kZXJMaXN0SXRlbSogbV9saXN0SXRlbTsKIH07Ci0tIAoxLjcuMC40
Cgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>67808</attachid>
            <date>2010-09-16 09:48:38 -0700</date>
            <delta_ts>2010-09-23 05:07:29 -0700</delta_ts>
            <desc>Patch proposal</desc>
            <filename>0001-2010-09-16-Mario-Sanchez-Prada-msanchez-igalia.com.patch</filename>
            <type>text/plain</type>
            <size>13225</size>
            <attacher name="Mario Sanchez Prada">mario</attacher>
            
              <data encoding="base64">RnJvbSA3N2UwZTk2YzRhNWE0MTQwZTZjOTIzNTg0NWZjMGMwMmQ1YTdiMjEyIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBNYXJpbyBTYW5jaGV6IFByYWRhIDxtc2FuY2hlekBpZ2FsaWEu
Y29tPgpEYXRlOiBUaHUsIDE2IFNlcCAyMDEwIDE4OjM0OjU0ICswMjAwClN1YmplY3Q6IFtQQVRD
SF0gMjAxMC0wOS0xNiAgTWFyaW8gU2FuY2hleiBQcmFkYSAgPG1zYW5jaGV6QGlnYWxpYS5jb20+
CgogICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgoKICAgICAgICBbR3RrXSBBZGp1
c3QgYXRrX3RleHRfZ2V0X3RleHRfYXRfb2Zmc2V0IHRvIGFjY291bnQgZm9yIGJ1bGxldHMvbnVt
YmVycyBpbiBsaXN0IGl0ZW1zCiAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTQ1MzgxCgogICAgICAgIEVuc3VyZSBsaXN0IG1hcmtlcnMgYXJlIGNvbnNpc3Rl
bnRseSB1c2VkIGluIHRoZSBBdGsgd3JhcHBlci4KCiAgICAgICAgVGhpcyBwYXRjaCBkb2VzIHR3
byB0aGluZ3MgKGJvdGggbmVlZGVkIHRvIGZpeCB0aGUgYnVnKTogSXQKICAgICAgICBpbXByb3Zl
cyB0aGUgd2F5IGxpc3QgaXRlbXMgbWFya2VycyBhcmUgZXhwb3NlZCB0aHJvdWdoIHRoZSBBdGsK
ICAgICAgICBXcmFwcGVyIChieSBleHBvc2luZyB0aGUgZXhhY3QgdGV4dCBpbiB0aGUgbWFya2Vy
LCBpbmNsdWRpbmcgdGhlCiAgICAgICAgbWFya2VyIHN1ZmZpeCwgaWYgYW55KSBhbmQgbWFrZXMg
c3VyZSB0aGUgbWFya2VyIGlzIGNvbnNpc3RlbnRseQogICAgICAgIGNvbnNpZGVyZWQgYW5kIHRy
ZWF0ZWQgaW4gdGhvc2UgbWV0aG9kcyBvZiB0aGUgQXRrVGV4dCBpbnRlcmZhY2UKICAgICAgICB0
aGF0IHdvdWxkIG5lZWQgaXQgKGxpa2UgYXRrX3RleHRfZ2V0X2NoYXJhY3Rlcl9jb3VudCBvcgog
ICAgICAgIGF0a190ZXh0X2dldF9ydW5fYXR0cmlidXRlcywgZm9yIGluc3RhbmNlKS4KCiAgICAg
ICAgKiBhY2Nlc3NpYmlsaXR5L2d0ay9BY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlckF0ay5jcHA6
CiAgICAgICAgKHRleHRGb3JPYmplY3QpOiBBcHBlbmQvcHJlcGVuZCBsaXN0IG1hcmtlciB3aGVu
IG5lZWRlZC4KICAgICAgICAod2Via2l0X2FjY2Vzc2libGVfdGV4dF9nZXRfdGV4dCk6IFVzZSB0
aGUgbmV3IGZ1bmN0aW9uCiAgICAgICAgbWFya2VyVGV4dFdpdGhTdWZmaXgoKSB0byBleHBvc2Ug
YSBtb3JlIGFjY3VyYXRlIHZhbHVlLgogICAgICAgIChhY2Nlc3NpYmlsaXR5T2JqZWN0TGVuZ3Ro
KTogQ29uc2lkZXIgbGlzdCBpdGVtcyBtYXJrZXIgdG8gcmV0dXJuCiAgICAgICAgdGhlIGxlbmd0
aCBvZiBhbiBvYmplY3QsIGlmIG5lZWRlZC4gQWxzbywgYWRkZWQgc29tZSBleHRyYSBjaGVja3Mu
CiAgICAgICAgKHdlYmtpdF9hY2Nlc3NpYmxlX3RleHRfZ2V0X2NoYXJhY3Rlcl9jb3VudCk6IEp1
c3QgZGVsZWdhdGUgb24KICAgICAgICBhY2Nlc3NpYmlsaXR5T2JqZWN0TGVuZ3RoLCB0byBtYWtl
IGl0IGNsZWFuZXIgYW5kIG1vcmUgY29uc2lzdGVudC4KICAgICAgICAqIHJlbmRlcmluZy9SZW5k
ZXJMaXN0SXRlbS5jcHA6CiAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxpc3RJdGVtOjptYXJrZXJU
ZXh0V2l0aFN1ZmZpeCk6IE5ldyBwdWJsaWMKICAgICAgICBmdW5jdGlvbiB0byByZXR1cm4gYSBz
aW5nbGUgc3RyaW5nIHdpdGggdGhlIG1hcmtlciBhc3NvY2lhdGVkIHRvCiAgICAgICAgdGhlIGl0
ZW0gYW5kIGl0cyBzdWZmaXgsIGNvbnNpZGVyaW5nIHRleHQgZGlyZWN0aW9uIChMVFIgb3IgUlRM
KS4KICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMaXN0SXRlbS5oOgogICAgICAgICogcmVuZGVy
aW5nL1JlbmRlckxpc3RNYXJrZXIuY3BwOgogICAgICAgIChXZWJDb3JlOjpSZW5kZXJMaXN0TWFy
a2VyOjpwYWludCk6IFVwZGF0ZSB0aGUgbV9zdWZmaXggcHJpdmF0ZQogICAgICAgIGF0dHJpYnV0
ZSBhcyBuZWVkZWQsIGNvbnNpZGVyaW5nIHRleHQgZGlyZWN0aW9uIChMVFIgb3IgUlRMKS4KICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyTGlzdE1hcmtlcjo6Y2FsY1ByZWZXaWR0aHMpOiBJbml0aWFs
aXplIG1fc3VmZml4CiAgICAgICAgdG8gaXRzIGRlZmF1bHQgdmFsdWUuCiAgICAgICAgKiByZW5k
ZXJpbmcvUmVuZGVyTGlzdE1hcmtlci5oOgogICAgICAgIChXZWJDb3JlOjpSZW5kZXJMaXN0TWFy
a2VyOjpzdWZmaXgpOiBOZXcgcHVibGljIGZ1bmN0aW9uIHRvIHJldHVybgogICAgICAgIHRoZSBp
bnRlcm5hbCBTdHJpbmcgd2l0aCB0aGUgc3VmZml4IGFzc29jaWF0ZWQgdG8gdGhlIG1hcmtlci4K
LS0tCiBXZWJDb3JlL0NoYW5nZUxvZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8
ICAgMzkgKysrKysrKysrKysrKwogLi4uL2d0ay9BY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlckF0
ay5jcHAgICAgICAgICAgfCAgIDU3ICsrKysrKysrKysrKysrKy0tLS0tCiBXZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJMaXN0SXRlbS5jcHAgICAgICAgICAgICAgICB8ICAgMjMgKysrKysrKysKIFdl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpc3RJdGVtLmggICAgICAgICAgICAgICAgIHwgICAgMSAr
CiBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0TWFya2VyLmNwcCAgICAgICAgICAgICB8ICAg
IDMgKwogV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlzdE1hcmtlci5oICAgICAgICAgICAgICAg
fCAgICAyICsKIDYgZmlsZXMgY2hhbmdlZCwgMTExIGluc2VydGlvbnMoKyksIDE0IGRlbGV0aW9u
cygtKQoKZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cK
aW5kZXggNDQxY2M1YS4uMDk5MWE0NiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysr
IGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0MiBAQAorMjAxMC0wOS0xNiAgTWFyaW8g
U2FuY2hleiBQcmFkYSAgPG1zYW5jaGV6QGlnYWxpYS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgW0d0a10gQWRqdXN0IGF0a190ZXh0X2dldF90
ZXh0X2F0X29mZnNldCB0byBhY2NvdW50IGZvciBidWxsZXRzL251bWJlcnMgaW4gbGlzdCBpdGVt
cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDUzODEK
KworICAgICAgICBFbnN1cmUgbGlzdCBtYXJrZXJzIGFyZSBjb25zaXN0ZW50bHkgdXNlZCBpbiB0
aGUgQXRrIHdyYXBwZXIuCisKKyAgICAgICAgVGhpcyBwYXRjaCBkb2VzIHR3byB0aGluZ3MgKGJv
dGggbmVlZGVkIHRvIGZpeCB0aGUgYnVnKTogSXQKKyAgICAgICAgaW1wcm92ZXMgdGhlIHdheSBs
aXN0IGl0ZW1zIG1hcmtlcnMgYXJlIGV4cG9zZWQgdGhyb3VnaCB0aGUgQXRrCisgICAgICAgIFdy
YXBwZXIgKGJ5IGV4cG9zaW5nIHRoZSBleGFjdCB0ZXh0IGluIHRoZSBtYXJrZXIsIGluY2x1ZGlu
ZyB0aGUKKyAgICAgICAgbWFya2VyIHN1ZmZpeCwgaWYgYW55KSBhbmQgbWFrZXMgc3VyZSB0aGUg
bWFya2VyIGlzIGNvbnNpc3RlbnRseQorICAgICAgICBjb25zaWRlcmVkIGFuZCB0cmVhdGVkIGlu
IHRob3NlIG1ldGhvZHMgb2YgdGhlIEF0a1RleHQgaW50ZXJmYWNlCisgICAgICAgIHRoYXQgd291
bGQgbmVlZCBpdCAobGlrZSBhdGtfdGV4dF9nZXRfY2hhcmFjdGVyX2NvdW50IG9yCisgICAgICAg
IGF0a190ZXh0X2dldF9ydW5fYXR0cmlidXRlcywgZm9yIGluc3RhbmNlKS4KKworICAgICAgICAq
IGFjY2Vzc2liaWxpdHkvZ3RrL0FjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyQXRrLmNwcDoKKyAg
ICAgICAgKHRleHRGb3JPYmplY3QpOiBBcHBlbmQvcHJlcGVuZCBsaXN0IG1hcmtlciB3aGVuIG5l
ZWRlZC4KKyAgICAgICAgKHdlYmtpdF9hY2Nlc3NpYmxlX3RleHRfZ2V0X3RleHQpOiBVc2UgdGhl
IG5ldyBmdW5jdGlvbgorICAgICAgICBtYXJrZXJUZXh0V2l0aFN1ZmZpeCgpIHRvIGV4cG9zZSBh
IG1vcmUgYWNjdXJhdGUgdmFsdWUuCisgICAgICAgIChhY2Nlc3NpYmlsaXR5T2JqZWN0TGVuZ3Ro
KTogQ29uc2lkZXIgbGlzdCBpdGVtcyBtYXJrZXIgdG8gcmV0dXJuCisgICAgICAgIHRoZSBsZW5n
dGggb2YgYW4gb2JqZWN0LCBpZiBuZWVkZWQuIEFsc28sIGFkZGVkIHNvbWUgZXh0cmEgY2hlY2tz
LgorICAgICAgICAod2Via2l0X2FjY2Vzc2libGVfdGV4dF9nZXRfY2hhcmFjdGVyX2NvdW50KTog
SnVzdCBkZWxlZ2F0ZSBvbgorICAgICAgICBhY2Nlc3NpYmlsaXR5T2JqZWN0TGVuZ3RoLCB0byBt
YWtlIGl0IGNsZWFuZXIgYW5kIG1vcmUgY29uc2lzdGVudC4KKyAgICAgICAgKiByZW5kZXJpbmcv
UmVuZGVyTGlzdEl0ZW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGlzdEl0ZW06Om1h
cmtlclRleHRXaXRoU3VmZml4KTogTmV3IHB1YmxpYworICAgICAgICBmdW5jdGlvbiB0byByZXR1
cm4gYSBzaW5nbGUgc3RyaW5nIHdpdGggdGhlIG1hcmtlciBhc3NvY2lhdGVkIHRvCisgICAgICAg
IHRoZSBpdGVtIGFuZCBpdHMgc3VmZml4LCBjb25zaWRlcmluZyB0ZXh0IGRpcmVjdGlvbiAoTFRS
IG9yIFJUTCkuCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxpc3RJdGVtLmg6CisgICAgICAg
ICogcmVuZGVyaW5nL1JlbmRlckxpc3RNYXJrZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyTGlzdE1hcmtlcjo6cGFpbnQpOiBVcGRhdGUgdGhlIG1fc3VmZml4IHByaXZhdGUKKyAgICAg
ICAgYXR0cmlidXRlIGFzIG5lZWRlZCwgY29uc2lkZXJpbmcgdGV4dCBkaXJlY3Rpb24gKExUUiBv
ciBSVEwpLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGlzdE1hcmtlcjo6Y2FsY1ByZWZXaWR0
aHMpOiBJbml0aWFsaXplIG1fc3VmZml4CisgICAgICAgIHRvIGl0cyBkZWZhdWx0IHZhbHVlLgor
ICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMaXN0TWFya2VyLmg6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJMaXN0TWFya2VyOjpzdWZmaXgpOiBOZXcgcHVibGljIGZ1bmN0aW9uIHRvIHJldHVy
bgorICAgICAgICB0aGUgaW50ZXJuYWwgU3RyaW5nIHdpdGggdGhlIHN1ZmZpeCBhc3NvY2lhdGVk
IHRvIHRoZSBtYXJrZXIuCisKIDIwMTAtMDktMTQgIEt3YW5nIFl1bCBTZW8gIDxza3l1bEBjb21w
YW55MTAwLm5ldD4KIAogICAgICAgICBSZXZpZXdlZCBieSBLZW50IFRhbXVyYS4KZGlmZiAtLWdp
dCBhL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9ndGsvQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJB
dGsuY3BwIGIvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2d0ay9BY2Nlc3NpYmlsaXR5T2JqZWN0V3Jh
cHBlckF0ay5jcHAKaW5kZXggMDFkZGRkMS4uMGRlMmYxOSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9h
Y2Nlc3NpYmlsaXR5L2d0ay9BY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlckF0ay5jcHAKKysrIGIv
V2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2d0ay9BY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlckF0ay5j
cHAKQEAgLTU1LDYgKzU1LDcgQEAKICNpbmNsdWRlICJJbmxpbmVUZXh0Qm94LmgiCiAjaW5jbHVk
ZSAiSW50UmVjdC5oIgogI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCisjaW5jbHVkZSAiUmVu
ZGVyTGlzdEl0ZW0uaCIKICNpbmNsdWRlICJSZW5kZXJMaXN0TWFya2VyLmgiCiAjaW5jbHVkZSAi
UmVuZGVyVGV4dC5oIgogI2luY2x1ZGUgIlRleHRFbmNvZGluZy5oIgpAQCAtODc4LDkgKzg3OSwx
MyBAQCBnY2hhciogdGV4dEZvck9iamVjdChBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0KiBhY2NP
YmplY3QpCiAgICAgICAgICAgICBnX3N0cmluZ19hcHBlbmQoc3RyLCAiXG4iKTsKICAgICAgICAg
ICAgIHJhbmdlID0gYWNjT2JqZWN0LT5kb0FYUmFuZ2VGb3JMaW5lKCsrbGluZU51bWJlcik7CiAg
ICAgICAgIH0KLSAgICB9IGVsc2UgaWYgKGFjY09iamVjdC0+cmVuZGVyZXIoKSkgeworICAgIH0g
ZWxzZSB7CisgICAgICAgIFJlbmRlck9iamVjdCogcmVuZGVyZXIgPSBhY2NPYmplY3QtPnJlbmRl
cmVyKCk7CisgICAgICAgIGlmICghcmVuZGVyZXIpCisgICAgICAgICAgICByZXR1cm4gZ19zdHJp
bmdfZnJlZShzdHIsIEZBTFNFKTsKKwogICAgICAgICAvLyBGb3IgUmVuZGVyQmxvY2tzLCBwaWVj
ZSB0b2dldGhlciB0aGUgdGV4dCBmcm9tIHRoZSBSZW5kZXJUZXh0IG9iamVjdHMgdGhleSBjb250
YWluLgotICAgICAgICBmb3IgKFJlbmRlck9iamVjdCogb2JqID0gYWNjT2JqZWN0LT5yZW5kZXJl
cigpLT5maXJzdENoaWxkKCk7IG9iajsgb2JqID0gb2JqLT5uZXh0U2libGluZygpKSB7CisgICAg
ICAgIGZvciAoUmVuZGVyT2JqZWN0KiBvYmogPSByZW5kZXJlci0+Zmlyc3RDaGlsZCgpOyBvYmo7
IG9iaiA9IG9iai0+bmV4dFNpYmxpbmcoKSkgewogICAgICAgICAgICAgaWYgKG9iai0+aXNCUigp
KSB7CiAgICAgICAgICAgICAgICAgZ19zdHJpbmdfYXBwZW5kKHN0ciwgIlxuIik7CiAgICAgICAg
ICAgICAgICAgY29udGludWU7CkBAIC05MDcsNyArOTEyLDE3IEBAIGdjaGFyKiB0ZXh0Rm9yT2Jq
ZWN0KEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QqIGFjY09iamVjdCkKICAgICAgICAgICAgICAg
ICBib3ggPSBib3gtPm5leHRUZXh0Qm94KCk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KKwor
ICAgICAgICAvLyBJbnNlcnQgdGhlIHRleHQgb2YgdGhlIG1hcmtlciBmb3IgbGlzdCBpdGVtIGlu
IHRoZSByaWdodCBwbGFjZSwgaWYgcHJlc2VudAorICAgICAgICBpZiAocmVuZGVyZXItPmlzTGlz
dEl0ZW0oKSkgeworICAgICAgICAgICAgU3RyaW5nIG1hcmtlclRleHQgPSB0b1JlbmRlckxpc3RJ
dGVtKHJlbmRlcmVyKS0+bWFya2VyVGV4dFdpdGhTdWZmaXgoKTsKKyAgICAgICAgICAgIGlmIChy
ZW5kZXJlci0+c3R5bGUoKS0+ZGlyZWN0aW9uKCkgPT0gTFRSKQorICAgICAgICAgICAgICAgIGdf
c3RyaW5nX3ByZXBlbmQoc3RyLCBtYXJrZXJUZXh0LnV0ZjgoKS5kYXRhKCkpOworICAgICAgICAg
ICAgZWxzZQorICAgICAgICAgICAgICAgIGdfc3RyaW5nX2FwcGVuZChzdHIsIG1hcmtlclRleHQu
dXRmOCgpLmRhdGEoKSk7CisgICAgICAgIH0KICAgICB9CisKICAgICByZXR1cm4gZ19zdHJpbmdf
ZnJlZShzdHIsIEZBTFNFKTsKIH0KIApAQCAtOTM5LDEwICs5NTQsOSBAQCBzdGF0aWMgZ2NoYXIq
IHdlYmtpdF9hY2Nlc3NpYmxlX3RleHRfZ2V0X3RleHQoQXRrVGV4dCogdGV4dCwgZ2ludCBzdGFy
dE9mZnNldCwgZwogICAgIC8vIFByZWZpeCBhIGl0ZW0gbnVtYmVyL2J1bGxldCBpZiBuZWVkZWQK
ICAgICBpZiAoY29yZU9iamVjdC0+cm9sZVZhbHVlKCkgPT0gTGlzdEl0ZW1Sb2xlKSB7CiAgICAg
ICAgIFJlbmRlck9iamVjdCogb2JqUmVuZGVyZXIgPSBzdGF0aWNfY2FzdDxBY2Nlc3NpYmlsaXR5
UmVuZGVyT2JqZWN0Kj4oY29yZU9iamVjdCktPnJlbmRlcmVyKCk7Ci0gICAgICAgIFJlbmRlck9i
amVjdCogbWFya2VyUmVuZGVyZXIgPSBvYmpSZW5kZXJlciA/IG9ialJlbmRlcmVyLT5maXJzdENo
aWxkKCkgOiAwOwotICAgICAgICBpZiAobWFya2VyUmVuZGVyZXIgJiYgbWFya2VyUmVuZGVyZXIt
PmlzTGlzdE1hcmtlcigpKSB7Ci0gICAgICAgICAgICBTdHJpbmcgbWFya2VyVHh0ID0gdG9SZW5k
ZXJMaXN0TWFya2VyKG1hcmtlclJlbmRlcmVyKS0+dGV4dCgpOwotICAgICAgICAgICAgcmV0ID0g
bWFya2VyVHh0Lmxlbmd0aCgpID4gMCA/IG1hcmtlclR4dCArICIgIiArIHJldCA6IHJldDsKKyAg
ICAgICAgaWYgKG9ialJlbmRlcmVyICYmIG9ialJlbmRlcmVyLT5pc0xpc3RJdGVtKCkpIHsKKyAg
ICAgICAgICAgIFN0cmluZyBtYXJrZXJUZXh0ID0gdG9SZW5kZXJMaXN0SXRlbShvYmpSZW5kZXJl
ciktPm1hcmtlclRleHRXaXRoU3VmZml4KCk7CisgICAgICAgICAgICByZXQgPSBvYmpSZW5kZXJl
ci0+c3R5bGUoKS0+ZGlyZWN0aW9uKCkgPT0gTFRSID8gbWFya2VyVGV4dCArIHJldCA6IHJldCAr
IG1hcmtlclRleHQ7CiAgICAgICAgIH0KICAgICB9CiAKQEAgLTExODUsOCArMTE5OSwyOCBAQCBz
dGF0aWMgQXRrQXR0cmlidXRlU2V0KiBhdHRyaWJ1dGVTZXREaWZmZXJlbmNlKEF0a0F0dHJpYnV0
ZVNldCogYTEsIEF0a0F0dHJpYnV0ZQogCiBzdGF0aWMgZ3VpbnQgYWNjZXNzaWJpbGl0eU9iamVj
dExlbmd0aChjb25zdCBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBvYmplY3QpCiB7Ci0gICAgR093blB0
cjxnY2hhcj4gdGV4dCh3ZWJraXRfYWNjZXNzaWJsZV90ZXh0X2dldF90ZXh0KEFUS19URVhUKG9i
amVjdC0+d3JhcHBlcigpKSwgMCwgLTEpKTsKLSAgICByZXR1cm4gZ191dGY4X3N0cmxlbih0ZXh0
LmdldCgpLCAtMSk7CisgICAgLy8gTm9uIHJlbmRlciBvYmplY3RzIGFyZSBub3QgdGFrZW4gaW50
byBhY2NvdW50CisgICAgaWYgKCFvYmplY3QtPmlzQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdCgp
KQorICAgICAgICByZXR1cm4gMDsKKworICAgIC8vIEZvciB0aG9zZSBvYmplY3RzIGltcGxlbWVu
dGluZyB0aGUgQXRrVGV4dCBpbnRlcmZhY2Ugd2UgdXNlIHRoZQorICAgIC8vIHdlbGwga25vd24g
QVBJIHRvIGFsd2F5cyBnZXQgdGhlIHRleHQgaW4gYSBjb25zaXN0ZW50IHdheQorICAgIEF0a09i
amVjdCogYXRrT2JqID0gQVRLX09CSkVDVChvYmplY3QtPndyYXBwZXIoKSk7CisgICAgaWYgKEFU
S19JU19URVhUKGF0a09iaikpIHsKKyAgICAgIEdPd25QdHI8Z2NoYXI+IHRleHQod2Via2l0X2Fj
Y2Vzc2libGVfdGV4dF9nZXRfdGV4dChBVEtfVEVYVChhdGtPYmopLCAwLCAtMSkpOworICAgICAg
cmV0dXJuIGdfdXRmOF9zdHJsZW4odGV4dC5nZXQoKSwgLTEpOworICAgIH0KKworICAgIC8vIEV2
ZW4gaWYgd2UgZG9uJ3QgZXhwb3NlIGxpc3QgbWFya2VycyB0byBBc3Npc3RpdmUKKyAgICAvLyBU
ZWNobm9sb2dpZXMsIHdlIG5lZWQgdG8gaGF2ZSBhIHdheSB0byBtZWFzdXJlIHRoZWlyIGxlbmd0
aAorICAgIC8vIGZvciB0aG9zZSBjYXNlcyB3aGVuIGl0J3MgbmVlZGVkIHRvIHRha2UgaXQgaW50
byBhY2NvdW50CisgICAgLy8gc2VwYXJhdGVseSAoYXMgaW4gZ2V0QWNjZXNzaWJpbGl0eU9iamVj
dEZvck9mZnNldCkKKyAgICBSZW5kZXJPYmplY3QqIHJlbmRlcmVyID0gc3RhdGljX2Nhc3Q8Y29u
c3QgQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdCo+KG9iamVjdCktPnJlbmRlcmVyKCk7CisgICAg
aWYgKCFyZW5kZXJlci0+aXNMaXN0TWFya2VyKCkpCisgICAgICByZXR1cm4gMDsKKworICAgIFJl
bmRlckxpc3RNYXJrZXIqIG1hcmtlciA9IHRvUmVuZGVyTGlzdE1hcmtlcihyZW5kZXJlcik7Cisg
ICAgcmV0dXJuIG1hcmtlci0+dGV4dCgpLmxlbmd0aCgpICsgbWFya2VyLT5zdWZmaXgoKS5sZW5n
dGgoKTsKIH0KIAogc3RhdGljIGNvbnN0IEFjY2Vzc2liaWxpdHlPYmplY3QqIGdldEFjY2Vzc2li
aWxpdHlPYmplY3RGb3JPZmZzZXQoY29uc3QgQWNjZXNzaWJpbGl0eU9iamVjdCogb2JqZWN0LCBn
dWludCBvZmZzZXQsIGdpbnQqIHN0YXJ0T2Zmc2V0LCBnaW50KiBlbmRPZmZzZXQpCkBAIC0xMzIx
LDEyICsxMzU1LDcgQEAgc3RhdGljIHZvaWQgd2Via2l0X2FjY2Vzc2libGVfdGV4dF9nZXRfcmFu
Z2VfZXh0ZW50cyhBdGtUZXh0KiB0ZXh0LCBnaW50IHN0YXJ0T2YKIAogc3RhdGljIGdpbnQgd2Vi
a2l0X2FjY2Vzc2libGVfdGV4dF9nZXRfY2hhcmFjdGVyX2NvdW50KEF0a1RleHQqIHRleHQpCiB7
Ci0gICAgQWNjZXNzaWJpbGl0eU9iamVjdCogY29yZU9iamVjdCA9IGNvcmUodGV4dCk7Ci0KLSAg
ICBpZiAoY29yZU9iamVjdC0+aXNUZXh0Q29udHJvbCgpKQotICAgICAgICByZXR1cm4gY29yZU9i
amVjdC0+dGV4dExlbmd0aCgpOwotICAgIGVsc2UKLSAgICAgICAgcmV0dXJuIGNvcmVPYmplY3Qt
PnRleHRVbmRlckVsZW1lbnQoKS5sZW5ndGgoKTsKKyAgICByZXR1cm4gYWNjZXNzaWJpbGl0eU9i
amVjdExlbmd0aChjb3JlKHRleHQpKTsKIH0KIAogc3RhdGljIGdpbnQgd2Via2l0X2FjY2Vzc2li
bGVfdGV4dF9nZXRfb2Zmc2V0X2F0X3BvaW50KEF0a1RleHQqIHRleHQsIGdpbnQgeCwgZ2ludCB5
LCBBdGtDb29yZFR5cGUgY29vcmRzKQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyTGlzdEl0ZW0uY3BwIGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlzdEl0ZW0uY3BwCmlu
ZGV4IDIzNjZhMzQuLjlmNDQ4ZDkgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckxpc3RJdGVtLmNwcAorKysgYi9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0SXRlbS5jcHAK
QEAgLTMxNCw2ICszMTQsMjkgQEAgY29uc3QgU3RyaW5nJiBSZW5kZXJMaXN0SXRlbTo6bWFya2Vy
VGV4dCgpIGNvbnN0CiAgICAgcmV0dXJuIHN0YXRpY051bGxTdHJpbmc7CiB9CiAKK1N0cmluZyBS
ZW5kZXJMaXN0SXRlbTo6bWFya2VyVGV4dFdpdGhTdWZmaXgoKSBjb25zdAoreworICAgIGlmICgh
bV9tYXJrZXIpCisgICAgICAgIHJldHVybiBTdHJpbmcoKTsKKworICAgIC8vIEFwcGVuZCB0aGUg
c3VmZml4IGZvciB0aGUgbWFya2VyIGluIHRoZSByaWdodCBwbGFjZSBkZXBlbmRpbmcKKyAgICAv
LyBvbiB0aGUgZGlyZWN0aW9uIG9mIHRoZSB0ZXh0IChyaWdodC10by1sZWZ0IG9yIGxlZnQtdG8t
cmlnaHQpLgorCisgICAgY29uc3QgU3RyaW5nJiBtYXJrZXJUeHQgPSBtX21hcmtlci0+dGV4dCgp
OworICAgIGNvbnN0IFN0cmluZyYgbWFya2VyU3VmZml4ID0gbV9tYXJrZXItPnN1ZmZpeCgpOwor
ICAgIFZlY3RvcjxVQ2hhcj4gcmVzdWx0VmVjdG9yOworCisgICAgaWYgKG1fbWFya2VyLT5zdHls
ZSgpLT5kaXJlY3Rpb24oKSA9PSBSVEwpCisgICAgICAgIHJlc3VsdFZlY3Rvci5hcHBlbmQobWFy
a2VyU3VmZml4LmNoYXJhY3RlcnMoKSwgbWFya2VyU3VmZml4Lmxlbmd0aCgpKTsKKworICAgIHJl
c3VsdFZlY3Rvci5hcHBlbmQobWFya2VyVHh0LmNoYXJhY3RlcnMoKSwgbWFya2VyVHh0Lmxlbmd0
aCgpKTsKKworICAgIGlmIChtX21hcmtlci0+c3R5bGUoKS0+ZGlyZWN0aW9uKCkgPT0gTFRSKQor
ICAgICAgICByZXN1bHRWZWN0b3IuYXBwZW5kKG1hcmtlclN1ZmZpeC5jaGFyYWN0ZXJzKCksIG1h
cmtlclN1ZmZpeC5sZW5ndGgoKSk7CisKKyAgICByZXR1cm4gU3RyaW5nOjphZG9wdChyZXN1bHRW
ZWN0b3IpOworfQorCiB2b2lkIFJlbmRlckxpc3RJdGVtOjpleHBsaWNpdFZhbHVlQ2hhbmdlZCgp
CiB7CiAgICAgaWYgKG1fbWFya2VyKQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyTGlzdEl0ZW0uaCBiL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpc3RJdGVtLmgKaW5kZXgg
MTNkODFmMi4uMWNmMjkzNCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlz
dEl0ZW0uaAorKysgYi9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0SXRlbS5oCkBAIC00NSw2
ICs0NSw3IEBAIHB1YmxpYzoKICAgICBib29sIG5vdEluTGlzdCgpIGNvbnN0IHsgcmV0dXJuIG1f
bm90SW5MaXN0OyB9CiAKICAgICBjb25zdCBTdHJpbmcmIG1hcmtlclRleHQoKSBjb25zdDsKKyAg
ICBTdHJpbmcgbWFya2VyVGV4dFdpdGhTdWZmaXgoKSBjb25zdDsKIAogICAgIHZvaWQgdXBkYXRl
TGlzdE1hcmtlck51bWJlcnMoKTsKIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyTGlzdE1hcmtlci5jcHAgYi9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0TWFya2VyLmNw
cAppbmRleCA3YjMzYzNkLi5kY2I0YTE2IDEwMDY0NAotLS0gYS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJMaXN0TWFya2VyLmNwcAorKysgYi9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0TWFy
a2VyLmNwcApAQCAtMTI2MiwxMiArMTI2MiwxNCBAQCB2b2lkIFJlbmRlckxpc3RNYXJrZXI6OnBh
aW50KFBhaW50SW5mbyYgcGFpbnRJbmZvLCBpbnQgdHgsIGludCB0eSkKICAgICAgICAgY29udGV4
dC0+ZHJhd1RleHQoc3R5bGUoKS0+Zm9udCgpLCB0ZXh0UnVuLCBtYXJrZXIubG9jYXRpb24oKSk7
CiAgICAgICAgIFVDaGFyIHN1ZmZpeFNwYWNlWzJdID0geyBzdWZmaXgsICcgJyB9OwogICAgICAg
ICBjb250ZXh0LT5kcmF3VGV4dChzdHlsZSgpLT5mb250KCksIFRleHRSdW4oc3VmZml4U3BhY2Us
IDIpLCBtYXJrZXIubG9jYXRpb24oKSArIEludFNpemUod2lkdGgsIDApKTsKKyAgICAgICAgbV9z
dWZmaXggPSBTdHJpbmcoc3VmZml4U3BhY2UsIDIpOwogICAgIH0gZWxzZSB7CiAgICAgICAgIFVD
aGFyIHNwYWNlU3VmZml4WzJdID0geyAnICcsIHN1ZmZpeCB9OwogICAgICAgICBUZXh0UnVuIHNw
YWNlU3VmZml4UnVuKHNwYWNlU3VmZml4LCAyKTsKICAgICAgICAgaW50IHdpZHRoID0gZm9udC53
aWR0aChzcGFjZVN1ZmZpeFJ1bik7CiAgICAgICAgIGNvbnRleHQtPmRyYXdUZXh0KHN0eWxlKCkt
PmZvbnQoKSwgc3BhY2VTdWZmaXhSdW4sIG1hcmtlci5sb2NhdGlvbigpKTsKICAgICAgICAgY29u
dGV4dC0+ZHJhd1RleHQoc3R5bGUoKS0+Zm9udCgpLCB0ZXh0UnVuLCBtYXJrZXIubG9jYXRpb24o
KSArIEludFNpemUod2lkdGgsIDApKTsKKyAgICAgICAgbV9zdWZmaXggPSBTdHJpbmcoc3BhY2VT
dWZmaXgsIDIpOwogICAgIH0KIH0KIApAQCAtMTMxMyw2ICsxMzE1LDcgQEAgdm9pZCBSZW5kZXJM
aXN0TWFya2VyOjpjYWxjUHJlZldpZHRocygpCiAgICAgQVNTRVJUKHByZWZXaWR0aHNEaXJ0eSgp
KTsKIAogICAgIG1fdGV4dCA9ICIiOworICAgIG1fc3VmZml4ID0gIiAiOwogCiAgICAgY29uc3Qg
Rm9udCYgZm9udCA9IHN0eWxlKCktPmZvbnQoKTsKIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyTGlzdE1hcmtlci5oIGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlzdE1h
cmtlci5oCmluZGV4IDk3MTg3N2IuLjJlNmExNDQgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckxpc3RNYXJrZXIuaAorKysgYi9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0
TWFya2VyLmgKQEAgLTQxLDYgKzQxLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBjYWxj
UHJlZldpZHRocygpOwogCiAgICAgY29uc3QgU3RyaW5nJiB0ZXh0KCkgY29uc3QgeyByZXR1cm4g
bV90ZXh0OyB9CisgICAgY29uc3QgU3RyaW5nJiBzdWZmaXgoKSBjb25zdCB7IHJldHVybiBtX3N1
ZmZpeDsgfQogCiAgICAgYm9vbCBpc0luc2lkZSgpIGNvbnN0OwogCkBAIC03Niw2ICs3Nyw3IEBA
IHByaXZhdGU6CiAgICAgSW50UmVjdCBsb2NhbFNlbGVjdGlvblJlY3QoKTsKIAogICAgIFN0cmlu
ZyBtX3RleHQ7CisgICAgU3RyaW5nIG1fc3VmZml4OwogICAgIFJlZlB0cjxTdHlsZUltYWdlPiBt
X2ltYWdlOwogICAgIFJlbmRlckxpc3RJdGVtKiBtX2xpc3RJdGVtOwogfTsKLS0gCjEuNy4wLjQK
Cg==
</data>
<flag name="review"
          id="57216"
          type_id="1"
          status="-"
          setter="cfleizach"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>68509</attachid>
            <date>2010-09-23 05:07:29 -0700</date>
            <delta_ts>2010-09-24 07:39:13 -0700</delta_ts>
            <desc>Patch proposal + unit tes updated</desc>
            <filename>0001-2010-09-23-Mario-Sanchez-Prada-msanchez-igalia.com.patch</filename>
            <type>text/plain</type>
            <size>17003</size>
            <attacher name="Mario Sanchez Prada">mario</attacher>
            
              <data encoding="base64">RnJvbSAwYjlkZDkxYjE5YjI0NmJkYjBkMmJmMDIyMTkwOTAxNTI0Y2RiZjI4IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBNYXJpbyBTYW5jaGV6IFByYWRhIDxtc2FuY2hlekBpZ2FsaWEu
Y29tPgpEYXRlOiBUaHUsIDIzIFNlcCAyMDEwIDEzOjU2OjU1ICswMjAwClN1YmplY3Q6IFtQQVRD
SF0gMjAxMC0wOS0yMyAgTWFyaW8gU2FuY2hleiBQcmFkYSAgPG1zYW5jaGV6QGlnYWxpYS5jb20+
CgogICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgoKICAgICAgICBbR3RrXSBBZGp1
c3QgYXRrX3RleHRfZ2V0X3RleHRfYXRfb2Zmc2V0IHRvIGFjY291bnQgZm9yIGJ1bGxldHMvbnVt
YmVycyBpbiBsaXN0IGl0ZW1zCiAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTQ1MzgxCgogICAgICAgIEVuc3VyZSBsaXN0IG1hcmtlcnMgYXJlIGNvbnNpc3Rl
bnRseSB1c2VkIGluIHRoZSBBdGsgd3JhcHBlci4KCiAgICAgICAgVGhpcyBwYXRjaCBkb2VzIHR3
byB0aGluZ3MgKGJvdGggbmVlZGVkIHRvIGZpeCB0aGUgYnVnKTogSXQKICAgICAgICBpbXByb3Zl
cyB0aGUgd2F5IGxpc3QgaXRlbXMgbWFya2VycyBhcmUgZXhwb3NlZCB0aHJvdWdoIHRoZSBBdGsK
ICAgICAgICBXcmFwcGVyIChieSBleHBvc2luZyB0aGUgZXhhY3QgdGV4dCBpbiB0aGUgbWFya2Vy
LCBpbmNsdWRpbmcgdGhlCiAgICAgICAgbWFya2VyIHN1ZmZpeCwgaWYgYW55KSBhbmQgbWFrZXMg
c3VyZSB0aGUgbWFya2VyIGlzIGNvbnNpc3RlbnRseQogICAgICAgIGNvbnNpZGVyZWQgYW5kIHRy
ZWF0ZWQgaW4gdGhvc2UgbWV0aG9kcyBvZiB0aGUgQXRrVGV4dCBpbnRlcmZhY2UKICAgICAgICB0
aGF0IHdvdWxkIG5lZWQgaXQgKGxpa2UgYXRrX3RleHRfZ2V0X2NoYXJhY3Rlcl9jb3VudCBvcgog
ICAgICAgIGF0a190ZXh0X2dldF9ydW5fYXR0cmlidXRlcywgZm9yIGluc3RhbmNlKS4KCiAgICAg
ICAgKiBhY2Nlc3NpYmlsaXR5L2d0ay9BY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlckF0ay5jcHA6
CiAgICAgICAgKHRleHRGb3JPYmplY3QpOgogICAgICAgICAgIEFwcGVuZC9wcmVwZW5kIGxpc3Qg
bWFya2VyIHdoZW4gbmVlZGVkLgogICAgICAgICh3ZWJraXRfYWNjZXNzaWJsZV90ZXh0X2dldF90
ZXh0KToKICAgICAgICAgICBVc2UgdGhlIG5ldyBmdW5jdGlvbiBtYXJrZXJUZXh0V2l0aFN1ZmZp
eCgpIHRvIGV4cG9zZSBhIG1vcmUKICAgICAgICAgICBhY2N1cmF0ZSB2YWx1ZS4KICAgICAgICAo
YWNjZXNzaWJpbGl0eU9iamVjdExlbmd0aCk6CiAgICAgICAgICAgQ29uc2lkZXIgbGlzdCBpdGVt
cyBtYXJrZXIgdG8gcmV0dXJuIHRoZSBsZW5ndGggb2YgYW4gb2JqZWN0LAogICAgICAgICAgIGlm
IG5lZWRlZC4gQWxzbywgYWRkZWQgc29tZSBleHRyYSBjaGVja3MuCiAgICAgICAgKHdlYmtpdF9h
Y2Nlc3NpYmxlX3RleHRfZ2V0X2NoYXJhY3Rlcl9jb3VudCk6CiAgICAgICAgICAgSnVzdCBkZWxl
Z2F0ZSBvbiBhY2Nlc3NpYmlsaXR5T2JqZWN0TGVuZ3RoLCB0byBtYWtlIGl0CiAgICAgICAgICAg
Y2xlYW5lciBhbmQgbW9yZSBjb25zaXN0ZW50LgoKICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJM
aXN0SXRlbS5jcHA6CiAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxpc3RJdGVtOjptYXJrZXJUZXh0
V2l0aFN1ZmZpeCk6CiAgICAgICAgICAgTmV3IHB1YmxpYyBmdW5jdGlvbiB0byByZXR1cm4gYSBz
aW5nbGUgc3RyaW5nIHdpdGggdGhlCiAgICAgICAgICAgbWFya2VyIGFzc29jaWF0ZWQgdG8gdGhl
IGl0ZW0gYW5kIGl0cyBzdWZmaXgsIGNvbnNpZGVyaW5nCiAgICAgICAgICAgdGV4dCBkaXJlY3Rp
b24gKExUUiBvciBSVEwpLgogICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxpc3RJdGVtLmg6CiAg
ICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGlzdE1hcmtlci5jcHA6CiAgICAgICAgKFdlYkNvcmU6
OlJlbmRlckxpc3RNYXJrZXI6OnN1ZmZpeCk6CiAgICAgICAgICAgTmV3IHB1YmxpYyBmdW5jdGlv
biB0byByZXR1cm4gYW4gVUNoYXIgd2l0aCB0aGUgc3VmZml4CiAgICAgICAgICAgYXNzb2NpYXRl
ZCB0byB0aGUgbWFya2VyLgogICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxpc3RNYXJrZXIuaDoK
CjIwMTAtMDktMjMgIE1hcmlvIFNhbmNoZXogUHJhZGEgIDxtc2FuY2hlekBpZ2FsaWEuY29tPgoK
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KCiAgICAgICAgW0d0a10gQWRqdXN0
IGF0a190ZXh0X2dldF90ZXh0X2F0X29mZnNldCB0byBhY2NvdW50IGZvciBidWxsZXRzL251bWJl
cnMgaW4gbGlzdCBpdGVtcwogICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD00NTM4MQoKICAgICAgICBVcGRhdGVkIHRlc3QgdG8gbWF0Y2ggdGhlIG5ldyBleHBv
c3VyZSBvZiBsaXN0IGl0ZW0gbWFya2Vycy4KCiAgICAgICAgQWxzbywgYWRkZWQgc29tZSBleHRy
YSBhc3NlcnRpb25zIGluIHRoYXQgdGVzdCB0byBtYWtlIHN1cmUgdGhlCiAgICAgICAgYWNjZXNz
aWJsZSBvYmplY3RzIGFzc29jaWF0ZWQgdG8gdGhlIGl0ZW1zIGltcGxlbWVudCBBdGtUZXh0LgoK
ICAgICAgICAqIHRlc3RzL3Rlc3RhdGsuYzoKICAgICAgICAodGVzdFdlYmtpdEF0a0xpc3RzT2ZJ
dGVtcyk6CiAgICAgICAgKG1haW4pOgotLS0KIFdlYkNvcmUvQ2hhbmdlTG9nICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHwgICA0MiArKysrKysrKysrKysrKwogLi4uL2d0ay9BY2Nl
c3NpYmlsaXR5T2JqZWN0V3JhcHBlckF0ay5jcHAgICAgICAgICAgfCAgIDU5ICsrKysrKysrKysr
KysrKy0tLS0tCiBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0SXRlbS5jcHAgICAgICAgICAg
ICAgICB8ICAgMjMgKysrKysrKysKIFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpc3RJdGVtLmgg
ICAgICAgICAgICAgICAgIHwgICAgMSArCiBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0TWFy
a2VyLmNwcCAgICAgICAgICAgICB8ICAgIDYgKysKIFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxp
c3RNYXJrZXIuaCAgICAgICAgICAgICAgIHwgICAgMSArCiBXZWJLaXQvZ3RrL0NoYW5nZUxvZyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgMTYgKysrKysKIFdlYktpdC9ndGsvdGVz
dHMvdGVzdGF0ay5jICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAzNyArKysrKystLS0tLS0t
CiA4IGZpbGVzIGNoYW5nZWQsIDE1MSBpbnNlcnRpb25zKCspLCAzNCBkZWxldGlvbnMoLSkKCmRp
ZmYgLS1naXQgYS9XZWJDb3JlL0NoYW5nZUxvZyBiL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IGM0
N2UwMzEuLjEyYzk0ZTMgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1dlYkNv
cmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDUgQEAKKzIwMTAtMDktMjMgIE1hcmlvIFNhbmNoZXog
UHJhZGEgIDxtc2FuY2hlekBpZ2FsaWEuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIFtHdGtdIEFkanVzdCBhdGtfdGV4dF9nZXRfdGV4dF9hdF9v
ZmZzZXQgdG8gYWNjb3VudCBmb3IgYnVsbGV0cy9udW1iZXJzIGluIGxpc3QgaXRlbXMKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ1MzgxCisKKyAgICAg
ICAgRW5zdXJlIGxpc3QgbWFya2VycyBhcmUgY29uc2lzdGVudGx5IHVzZWQgaW4gdGhlIEF0ayB3
cmFwcGVyLgorCisgICAgICAgIFRoaXMgcGF0Y2ggZG9lcyB0d28gdGhpbmdzIChib3RoIG5lZWRl
ZCB0byBmaXggdGhlIGJ1Zyk6IEl0CisgICAgICAgIGltcHJvdmVzIHRoZSB3YXkgbGlzdCBpdGVt
cyBtYXJrZXJzIGFyZSBleHBvc2VkIHRocm91Z2ggdGhlIEF0aworICAgICAgICBXcmFwcGVyIChi
eSBleHBvc2luZyB0aGUgZXhhY3QgdGV4dCBpbiB0aGUgbWFya2VyLCBpbmNsdWRpbmcgdGhlCisg
ICAgICAgIG1hcmtlciBzdWZmaXgsIGlmIGFueSkgYW5kIG1ha2VzIHN1cmUgdGhlIG1hcmtlciBp
cyBjb25zaXN0ZW50bHkKKyAgICAgICAgY29uc2lkZXJlZCBhbmQgdHJlYXRlZCBpbiB0aG9zZSBt
ZXRob2RzIG9mIHRoZSBBdGtUZXh0IGludGVyZmFjZQorICAgICAgICB0aGF0IHdvdWxkIG5lZWQg
aXQgKGxpa2UgYXRrX3RleHRfZ2V0X2NoYXJhY3Rlcl9jb3VudCBvcgorICAgICAgICBhdGtfdGV4
dF9nZXRfcnVuX2F0dHJpYnV0ZXMsIGZvciBpbnN0YW5jZSkuCisKKyAgICAgICAgKiBhY2Nlc3Np
YmlsaXR5L2d0ay9BY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlckF0ay5jcHA6CisgICAgICAgICh0
ZXh0Rm9yT2JqZWN0KToKKyAgICAgICAgICAgQXBwZW5kL3ByZXBlbmQgbGlzdCBtYXJrZXIgd2hl
biBuZWVkZWQuCisgICAgICAgICh3ZWJraXRfYWNjZXNzaWJsZV90ZXh0X2dldF90ZXh0KToKKyAg
ICAgICAgICAgVXNlIHRoZSBuZXcgZnVuY3Rpb24gbWFya2VyVGV4dFdpdGhTdWZmaXgoKSB0byBl
eHBvc2UgYSBtb3JlCisgICAgICAgICAgIGFjY3VyYXRlIHZhbHVlLgorICAgICAgICAoYWNjZXNz
aWJpbGl0eU9iamVjdExlbmd0aCk6CisgICAgICAgICAgIENvbnNpZGVyIGxpc3QgaXRlbXMgbWFy
a2VyIHRvIHJldHVybiB0aGUgbGVuZ3RoIG9mIGFuIG9iamVjdCwKKyAgICAgICAgICAgaWYgbmVl
ZGVkLiBBbHNvLCBhZGRlZCBzb21lIGV4dHJhIGNoZWNrcy4KKyAgICAgICAgKHdlYmtpdF9hY2Nl
c3NpYmxlX3RleHRfZ2V0X2NoYXJhY3Rlcl9jb3VudCk6CisgICAgICAgICAgIEp1c3QgZGVsZWdh
dGUgb24gYWNjZXNzaWJpbGl0eU9iamVjdExlbmd0aCwgdG8gbWFrZSBpdAorICAgICAgICAgICBj
bGVhbmVyIGFuZCBtb3JlIGNvbnNpc3RlbnQuCisKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVy
TGlzdEl0ZW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGlzdEl0ZW06Om1hcmtlclRl
eHRXaXRoU3VmZml4KToKKyAgICAgICAgICAgTmV3IHB1YmxpYyBmdW5jdGlvbiB0byByZXR1cm4g
YSBzaW5nbGUgc3RyaW5nIHdpdGggdGhlCisgICAgICAgICAgIG1hcmtlciBhc3NvY2lhdGVkIHRv
IHRoZSBpdGVtIGFuZCBpdHMgc3VmZml4LCBjb25zaWRlcmluZworICAgICAgICAgICB0ZXh0IGRp
cmVjdGlvbiAoTFRSIG9yIFJUTCkuCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxpc3RJdGVt
Lmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxpc3RNYXJrZXIuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyTGlzdE1hcmtlcjo6c3VmZml4KToKKyAgICAgICAgICAgTmV3IHB1Ymxp
YyBmdW5jdGlvbiB0byByZXR1cm4gYW4gVUNoYXIgd2l0aCB0aGUgc3VmZml4CisgICAgICAgICAg
IGFzc29jaWF0ZWQgdG8gdGhlIG1hcmtlci4KKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGlz
dE1hcmtlci5oOgorCiAyMDEwLTA5LTIzICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4K
IAogICAgICAgICBSZXZpZXdlZCBieSBDaHJpcyBGbGVpemFjaC4KZGlmZiAtLWdpdCBhL1dlYkNv
cmUvYWNjZXNzaWJpbGl0eS9ndGsvQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJBdGsuY3BwIGIv
V2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2d0ay9BY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlckF0ay5j
cHAKaW5kZXggZjM0YTAzZS4uNzZkZmFjNyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L2d0ay9BY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlckF0ay5jcHAKKysrIGIvV2ViQ29yZS9h
Y2Nlc3NpYmlsaXR5L2d0ay9BY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlckF0ay5jcHAKQEAgLTU1
LDYgKzU1LDcgQEAKICNpbmNsdWRlICJJbmxpbmVUZXh0Qm94LmgiCiAjaW5jbHVkZSAiSW50UmVj
dC5oIgogI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCisjaW5jbHVkZSAiUmVuZGVyTGlzdEl0
ZW0uaCIKICNpbmNsdWRlICJSZW5kZXJMaXN0TWFya2VyLmgiCiAjaW5jbHVkZSAiUmVuZGVyVGV4
dC5oIgogI2luY2x1ZGUgIlRleHRFbmNvZGluZy5oIgpAQCAtODc4LDkgKzg3OSwxMyBAQCBnY2hh
ciogdGV4dEZvck9iamVjdChBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0KiBhY2NPYmplY3QpCiAg
ICAgICAgICAgICBnX3N0cmluZ19hcHBlbmQoc3RyLCAiXG4iKTsKICAgICAgICAgICAgIHJhbmdl
ID0gYWNjT2JqZWN0LT5kb0FYUmFuZ2VGb3JMaW5lKCsrbGluZU51bWJlcik7CiAgICAgICAgIH0K
LSAgICB9IGVsc2UgaWYgKGFjY09iamVjdC0+cmVuZGVyZXIoKSkgeworICAgIH0gZWxzZSB7Cisg
ICAgICAgIFJlbmRlck9iamVjdCogcmVuZGVyZXIgPSBhY2NPYmplY3QtPnJlbmRlcmVyKCk7Cisg
ICAgICAgIGlmICghcmVuZGVyZXIpCisgICAgICAgICAgICByZXR1cm4gZ19zdHJpbmdfZnJlZShz
dHIsIEZBTFNFKTsKKwogICAgICAgICAvLyBGb3IgUmVuZGVyQmxvY2tzLCBwaWVjZSB0b2dldGhl
ciB0aGUgdGV4dCBmcm9tIHRoZSBSZW5kZXJUZXh0IG9iamVjdHMgdGhleSBjb250YWluLgotICAg
ICAgICBmb3IgKFJlbmRlck9iamVjdCogb2JqID0gYWNjT2JqZWN0LT5yZW5kZXJlcigpLT5maXJz
dENoaWxkKCk7IG9iajsgb2JqID0gb2JqLT5uZXh0U2libGluZygpKSB7CisgICAgICAgIGZvciAo
UmVuZGVyT2JqZWN0KiBvYmogPSByZW5kZXJlci0+Zmlyc3RDaGlsZCgpOyBvYmo7IG9iaiA9IG9i
ai0+bmV4dFNpYmxpbmcoKSkgewogICAgICAgICAgICAgaWYgKG9iai0+aXNCUigpKSB7CiAgICAg
ICAgICAgICAgICAgZ19zdHJpbmdfYXBwZW5kKHN0ciwgIlxuIik7CiAgICAgICAgICAgICAgICAg
Y29udGludWU7CkBAIC05MDcsNyArOTEyLDE3IEBAIGdjaGFyKiB0ZXh0Rm9yT2JqZWN0KEFjY2Vz
c2liaWxpdHlSZW5kZXJPYmplY3QqIGFjY09iamVjdCkKICAgICAgICAgICAgICAgICBib3ggPSBi
b3gtPm5leHRUZXh0Qm94KCk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KKworICAgICAgICAv
LyBJbnNlcnQgdGhlIHRleHQgb2YgdGhlIG1hcmtlciBmb3IgbGlzdCBpdGVtIGluIHRoZSByaWdo
dCBwbGFjZSwgaWYgcHJlc2VudAorICAgICAgICBpZiAocmVuZGVyZXItPmlzTGlzdEl0ZW0oKSkg
eworICAgICAgICAgICAgU3RyaW5nIG1hcmtlclRleHQgPSB0b1JlbmRlckxpc3RJdGVtKHJlbmRl
cmVyKS0+bWFya2VyVGV4dFdpdGhTdWZmaXgoKTsKKyAgICAgICAgICAgIGlmIChyZW5kZXJlci0+
c3R5bGUoKS0+ZGlyZWN0aW9uKCkgPT0gTFRSKQorICAgICAgICAgICAgICAgIGdfc3RyaW5nX3By
ZXBlbmQoc3RyLCBtYXJrZXJUZXh0LnV0ZjgoKS5kYXRhKCkpOworICAgICAgICAgICAgZWxzZQor
ICAgICAgICAgICAgICAgIGdfc3RyaW5nX2FwcGVuZChzdHIsIG1hcmtlclRleHQudXRmOCgpLmRh
dGEoKSk7CisgICAgICAgIH0KICAgICB9CisKICAgICByZXR1cm4gZ19zdHJpbmdfZnJlZShzdHIs
IEZBTFNFKTsKIH0KIApAQCAtOTM5LDEwICs5NTQsOSBAQCBzdGF0aWMgZ2NoYXIqIHdlYmtpdF9h
Y2Nlc3NpYmxlX3RleHRfZ2V0X3RleHQoQXRrVGV4dCogdGV4dCwgZ2ludCBzdGFydE9mZnNldCwg
ZwogICAgIC8vIFByZWZpeCBhIGl0ZW0gbnVtYmVyL2J1bGxldCBpZiBuZWVkZWQKICAgICBpZiAo
Y29yZU9iamVjdC0+cm9sZVZhbHVlKCkgPT0gTGlzdEl0ZW1Sb2xlKSB7CiAgICAgICAgIFJlbmRl
ck9iamVjdCogb2JqUmVuZGVyZXIgPSBzdGF0aWNfY2FzdDxBY2Nlc3NpYmlsaXR5UmVuZGVyT2Jq
ZWN0Kj4oY29yZU9iamVjdCktPnJlbmRlcmVyKCk7Ci0gICAgICAgIFJlbmRlck9iamVjdCogbWFy
a2VyUmVuZGVyZXIgPSBvYmpSZW5kZXJlciA/IG9ialJlbmRlcmVyLT5maXJzdENoaWxkKCkgOiAw
OwotICAgICAgICBpZiAobWFya2VyUmVuZGVyZXIgJiYgbWFya2VyUmVuZGVyZXItPmlzTGlzdE1h
cmtlcigpKSB7Ci0gICAgICAgICAgICBTdHJpbmcgbWFya2VyVHh0ID0gdG9SZW5kZXJMaXN0TWFy
a2VyKG1hcmtlclJlbmRlcmVyKS0+dGV4dCgpOwotICAgICAgICAgICAgcmV0ID0gbWFya2VyVHh0
Lmxlbmd0aCgpID4gMCA/IG1hcmtlclR4dCArICIgIiArIHJldCA6IHJldDsKKyAgICAgICAgaWYg
KG9ialJlbmRlcmVyICYmIG9ialJlbmRlcmVyLT5pc0xpc3RJdGVtKCkpIHsKKyAgICAgICAgICAg
IFN0cmluZyBtYXJrZXJUZXh0ID0gdG9SZW5kZXJMaXN0SXRlbShvYmpSZW5kZXJlciktPm1hcmtl
clRleHRXaXRoU3VmZml4KCk7CisgICAgICAgICAgICByZXQgPSBvYmpSZW5kZXJlci0+c3R5bGUo
KS0+ZGlyZWN0aW9uKCkgPT0gTFRSID8gbWFya2VyVGV4dCArIHJldCA6IHJldCArIG1hcmtlclRl
eHQ7CiAgICAgICAgIH0KICAgICB9CiAKQEAgLTExODUsOCArMTE5OSwzMCBAQCBzdGF0aWMgQXRr
QXR0cmlidXRlU2V0KiBhdHRyaWJ1dGVTZXREaWZmZXJlbmNlKEF0a0F0dHJpYnV0ZVNldCogYTEs
IEF0a0F0dHJpYnV0ZQogCiBzdGF0aWMgZ3VpbnQgYWNjZXNzaWJpbGl0eU9iamVjdExlbmd0aChj
b25zdCBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBvYmplY3QpCiB7Ci0gICAgR093blB0cjxnY2hhcj4g
dGV4dCh3ZWJraXRfYWNjZXNzaWJsZV90ZXh0X2dldF90ZXh0KEFUS19URVhUKG9iamVjdC0+d3Jh
cHBlcigpKSwgMCwgLTEpKTsKLSAgICByZXR1cm4gZ191dGY4X3N0cmxlbih0ZXh0LmdldCgpLCAt
MSk7CisgICAgLy8gTm9uIHJlbmRlciBvYmplY3RzIGFyZSBub3QgdGFrZW4gaW50byBhY2NvdW50
CisgICAgaWYgKCFvYmplY3QtPmlzQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdCgpKQorICAgICAg
ICByZXR1cm4gMDsKKworICAgIC8vIEZvciB0aG9zZSBvYmplY3RzIGltcGxlbWVudGluZyB0aGUg
QXRrVGV4dCBpbnRlcmZhY2Ugd2UgdXNlIHRoZQorICAgIC8vIHdlbGwga25vd24gQVBJIHRvIGFs
d2F5cyBnZXQgdGhlIHRleHQgaW4gYSBjb25zaXN0ZW50IHdheQorICAgIEF0a09iamVjdCogYXRr
T2JqID0gQVRLX09CSkVDVChvYmplY3QtPndyYXBwZXIoKSk7CisgICAgaWYgKEFUS19JU19URVhU
KGF0a09iaikpIHsKKyAgICAgIEdPd25QdHI8Z2NoYXI+IHRleHQod2Via2l0X2FjY2Vzc2libGVf
dGV4dF9nZXRfdGV4dChBVEtfVEVYVChhdGtPYmopLCAwLCAtMSkpOworICAgICAgcmV0dXJuIGdf
dXRmOF9zdHJsZW4odGV4dC5nZXQoKSwgLTEpOworICAgIH0KKworICAgIC8vIEV2ZW4gaWYgd2Ug
ZG9uJ3QgZXhwb3NlIGxpc3QgbWFya2VycyB0byBBc3Npc3RpdmUKKyAgICAvLyBUZWNobm9sb2dp
ZXMsIHdlIG5lZWQgdG8gaGF2ZSBhIHdheSB0byBtZWFzdXJlIHRoZWlyIGxlbmd0aAorICAgIC8v
IGZvciB0aG9zZSBjYXNlcyB3aGVuIGl0J3MgbmVlZGVkIHRvIHRha2UgaXQgaW50byBhY2NvdW50
CisgICAgLy8gc2VwYXJhdGVseSAoYXMgaW4gZ2V0QWNjZXNzaWJpbGl0eU9iamVjdEZvck9mZnNl
dCkKKyAgICBSZW5kZXJPYmplY3QqIHJlbmRlcmVyID0gc3RhdGljX2Nhc3Q8Y29uc3QgQWNjZXNz
aWJpbGl0eVJlbmRlck9iamVjdCo+KG9iamVjdCktPnJlbmRlcmVyKCk7CisgICAgaWYgKHJlbmRl
cmVyICYmIHJlbmRlcmVyLT5pc0xpc3RNYXJrZXIoKSkgeworICAgICAgICBSZW5kZXJMaXN0TWFy
a2VyKiBtYXJrZXIgPSB0b1JlbmRlckxpc3RNYXJrZXIocmVuZGVyZXIpOworICAgICAgICAvLyBO
ZWVkZWQgdG8gdGFrZSBpbnRvIGFjY291bnQgdGhlIG1hcmtlcidzIHN1ZmZpeCAoMSBjaGFyKQor
ICAgICAgICByZXR1cm4gbWFya2VyLT50ZXh0KCkubGVuZ3RoKCkgKyAxOworICAgIH0KKworICAg
IHJldHVybiAwOwogfQogCiBzdGF0aWMgY29uc3QgQWNjZXNzaWJpbGl0eU9iamVjdCogZ2V0QWNj
ZXNzaWJpbGl0eU9iamVjdEZvck9mZnNldChjb25zdCBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBvYmpl
Y3QsIGd1aW50IG9mZnNldCwgZ2ludCogc3RhcnRPZmZzZXQsIGdpbnQqIGVuZE9mZnNldCkKQEAg
LTEzMjEsMTIgKzEzNTcsNyBAQCBzdGF0aWMgdm9pZCB3ZWJraXRfYWNjZXNzaWJsZV90ZXh0X2dl
dF9yYW5nZV9leHRlbnRzKEF0a1RleHQqIHRleHQsIGdpbnQgc3RhcnRPZgogCiBzdGF0aWMgZ2lu
dCB3ZWJraXRfYWNjZXNzaWJsZV90ZXh0X2dldF9jaGFyYWN0ZXJfY291bnQoQXRrVGV4dCogdGV4
dCkKIHsKLSAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBjb3JlT2JqZWN0ID0gY29yZSh0ZXh0KTsK
LQotICAgIGlmIChjb3JlT2JqZWN0LT5pc1RleHRDb250cm9sKCkpCi0gICAgICAgIHJldHVybiBj
b3JlT2JqZWN0LT50ZXh0TGVuZ3RoKCk7Ci0gICAgZWxzZQotICAgICAgICByZXR1cm4gY29yZU9i
amVjdC0+dGV4dFVuZGVyRWxlbWVudCgpLmxlbmd0aCgpOworICAgIHJldHVybiBhY2Nlc3NpYmls
aXR5T2JqZWN0TGVuZ3RoKGNvcmUodGV4dCkpOwogfQogCiBzdGF0aWMgZ2ludCB3ZWJraXRfYWNj
ZXNzaWJsZV90ZXh0X2dldF9vZmZzZXRfYXRfcG9pbnQoQXRrVGV4dCogdGV4dCwgZ2ludCB4LCBn
aW50IHksIEF0a0Nvb3JkVHlwZSBjb29yZHMpCmRpZmYgLS1naXQgYS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJMaXN0SXRlbS5jcHAgYi9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0SXRlbS5j
cHAKaW5kZXggMjM2NmEzNC4uOTE4NjY1OCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyTGlzdEl0ZW0uY3BwCisrKyBiL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpc3RJdGVt
LmNwcApAQCAtMzE0LDYgKzMxNCwyOSBAQCBjb25zdCBTdHJpbmcmIFJlbmRlckxpc3RJdGVtOjpt
YXJrZXJUZXh0KCkgY29uc3QKICAgICByZXR1cm4gc3RhdGljTnVsbFN0cmluZzsKIH0KIAorU3Ry
aW5nIFJlbmRlckxpc3RJdGVtOjptYXJrZXJUZXh0V2l0aFN1ZmZpeCgpIGNvbnN0Cit7CisgICAg
aWYgKCFtX21hcmtlcikKKyAgICAgICAgcmV0dXJuIFN0cmluZygpOworCisgICAgLy8gQXBwZW5k
IHRoZSBzdWZmaXggZm9yIHRoZSBtYXJrZXIgaW4gdGhlIHJpZ2h0IHBsYWNlIGRlcGVuZGluZwor
ICAgIC8vIG9uIHRoZSBkaXJlY3Rpb24gb2YgdGhlIHRleHQgKHJpZ2h0LXRvLWxlZnQgb3IgbGVm
dC10by1yaWdodCkuCisKKyAgICBjb25zdCBTdHJpbmcmIG1hcmtlclRleHQgPSBtX21hcmtlci0+
dGV4dCgpOworICAgIGNvbnN0IFVDaGFyIG1hcmtlclN1ZmZpeCA9IG1fbWFya2VyLT5zdWZmaXgo
KTsKKyAgICBWZWN0b3I8VUNoYXI+IHJlc3VsdFZlY3RvcjsKKworICAgIGlmIChtX21hcmtlci0+
c3R5bGUoKS0+ZGlyZWN0aW9uKCkgPT0gUlRMKQorICAgICAgICByZXN1bHRWZWN0b3IuYXBwZW5k
KG1hcmtlclN1ZmZpeCk7CisKKyAgICByZXN1bHRWZWN0b3IuYXBwZW5kKG1hcmtlclRleHQuY2hh
cmFjdGVycygpLCBtYXJrZXJUZXh0Lmxlbmd0aCgpKTsKKworICAgIGlmIChtX21hcmtlci0+c3R5
bGUoKS0+ZGlyZWN0aW9uKCkgPT0gTFRSKQorICAgICAgICByZXN1bHRWZWN0b3IuYXBwZW5kKG1h
cmtlclN1ZmZpeCk7CisKKyAgICByZXR1cm4gU3RyaW5nOjphZG9wdChyZXN1bHRWZWN0b3IpOwor
fQorCiB2b2lkIFJlbmRlckxpc3RJdGVtOjpleHBsaWNpdFZhbHVlQ2hhbmdlZCgpCiB7CiAgICAg
aWYgKG1fbWFya2VyKQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlzdEl0
ZW0uaCBiL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpc3RJdGVtLmgKaW5kZXggMTNkODFmMi4u
MWNmMjkzNCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlzdEl0ZW0uaAor
KysgYi9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0SXRlbS5oCkBAIC00NSw2ICs0NSw3IEBA
IHB1YmxpYzoKICAgICBib29sIG5vdEluTGlzdCgpIGNvbnN0IHsgcmV0dXJuIG1fbm90SW5MaXN0
OyB9CiAKICAgICBjb25zdCBTdHJpbmcmIG1hcmtlclRleHQoKSBjb25zdDsKKyAgICBTdHJpbmcg
bWFya2VyVGV4dFdpdGhTdWZmaXgoKSBjb25zdDsKIAogICAgIHZvaWQgdXBkYXRlTGlzdE1hcmtl
ck51bWJlcnMoKTsKIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlzdE1h
cmtlci5jcHAgYi9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0TWFya2VyLmNwcAppbmRleCA3
YjMzYzNkLi4zMzc3MjI2IDEwMDY0NAotLS0gYS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0
TWFya2VyLmNwcAorKysgYi9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0TWFya2VyLmNwcApA
QCAtMTUyMyw2ICsxNTIzLDEyIEBAIGludCBSZW5kZXJMaXN0TWFya2VyOjpiYXNlbGluZVBvc2l0
aW9uKGJvb2wsIGJvb2wpIGNvbnN0CiAgICAgcmV0dXJuIGhlaWdodCgpOwogfQogCitVQ2hhciBS
ZW5kZXJMaXN0TWFya2VyOjpzdWZmaXgoKSBjb25zdAoreworICAgIEVMaXN0U3R5bGVUeXBlIHR5
cGUgPSBzdHlsZSgpLT5saXN0U3R5bGVUeXBlKCk7CisgICAgcmV0dXJuIGxpc3RNYXJrZXJTdWZm
aXgodHlwZSwgbV9saXN0SXRlbS0+dmFsdWUoKSk7Cit9CisKIGJvb2wgUmVuZGVyTGlzdE1hcmtl
cjo6aXNJbnNpZGUoKSBjb25zdAogewogICAgIHJldHVybiBtX2xpc3RJdGVtLT5ub3RJbkxpc3Qo
KSB8fCBzdHlsZSgpLT5saXN0U3R5bGVQb3NpdGlvbigpID09IElOU0lERTsKZGlmZiAtLWdpdCBh
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpc3RNYXJrZXIuaCBiL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckxpc3RNYXJrZXIuaAppbmRleCA5NzE4NzdiLi41NzVlZDZlIDEwMDY0NAotLS0gYS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0TWFya2VyLmgKKysrIGIvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyTGlzdE1hcmtlci5oCkBAIC00MSw2ICs0MSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0
dWFsIHZvaWQgY2FsY1ByZWZXaWR0aHMoKTsKIAogICAgIGNvbnN0IFN0cmluZyYgdGV4dCgpIGNv
bnN0IHsgcmV0dXJuIG1fdGV4dDsgfQorICAgIFVDaGFyIHN1ZmZpeCgpIGNvbnN0OwogCiAgICAg
Ym9vbCBpc0luc2lkZSgpIGNvbnN0OwogCmRpZmYgLS1naXQgYS9XZWJLaXQvZ3RrL0NoYW5nZUxv
ZyBiL1dlYktpdC9ndGsvQ2hhbmdlTG9nCmluZGV4IDFjZTgyMjguLjY3ZTYzNTUgMTAwNjQ0Ci0t
LSBhL1dlYktpdC9ndGsvQ2hhbmdlTG9nCisrKyBiL1dlYktpdC9ndGsvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMTkgQEAKKzIwMTAtMDktMjMgIE1hcmlvIFNhbmNoZXogUHJhZGEgIDxtc2FuY2hlekBp
Z2FsaWEuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIFtHdGtdIEFkanVzdCBhdGtfdGV4dF9nZXRfdGV4dF9hdF9vZmZzZXQgdG8gYWNjb3VudCBm
b3IgYnVsbGV0cy9udW1iZXJzIGluIGxpc3QgaXRlbXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ1MzgxCisKKyAgICAgICAgVXBkYXRlZCB0ZXN0IHRv
IG1hdGNoIHRoZSBuZXcgZXhwb3N1cmUgb2YgbGlzdCBpdGVtIG1hcmtlcnMuCisKKyAgICAgICAg
QWxzbywgYWRkZWQgc29tZSBleHRyYSBhc3NlcnRpb25zIGluIHRoYXQgdGVzdCB0byBtYWtlIHN1
cmUgdGhlCisgICAgICAgIGFjY2Vzc2libGUgb2JqZWN0cyBhc3NvY2lhdGVkIHRvIHRoZSBpdGVt
cyBpbXBsZW1lbnQgQXRrVGV4dC4KKworICAgICAgICAqIHRlc3RzL3Rlc3RhdGsuYzoKKyAgICAg
ICAgKHRlc3RXZWJraXRBdGtMaXN0c09mSXRlbXMpOgorICAgICAgICAobWFpbik6CisKIDIwMTAt
MDktMjIgIE1hcmlvIFNhbmNoZXogUHJhZGEgIDxtc2FuY2hlekBpZ2FsaWEuY29tPgogCiAgICAg
ICAgIFJldmlld2VkIGJ5IE1hcnRpbiBSb2JpbnNvbi4KZGlmZiAtLWdpdCBhL1dlYktpdC9ndGsv
dGVzdHMvdGVzdGF0ay5jIGIvV2ViS2l0L2d0ay90ZXN0cy90ZXN0YXRrLmMKaW5kZXggMTlhNTI1
YS4uODgyMjVhMyAxMDA2NDQKLS0tIGEvV2ViS2l0L2d0ay90ZXN0cy90ZXN0YXRrLmMKKysrIGIv
V2ViS2l0L2d0ay90ZXN0cy90ZXN0YXRrLmMKQEAgLTk2NiwzOCArOTY2LDMyIEBAIHN0YXRpYyB2
b2lkIHRlc3RXZWJraXRBdGtHZXRFeHRlbnRzKHZvaWQpCiAKIHN0YXRpYyB2b2lkIHRlc3RXZWJr
aXRBdGtMaXN0c09mSXRlbXModm9pZCkKIHsKLSAgICBXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3Owot
ICAgIEF0a09iamVjdCogb2JqOwotICAgIEF0a09iamVjdCogdUxpc3Q7Ci0gICAgQXRrT2JqZWN0
KiBvTGlzdDsKLSAgICBBdGtPYmplY3QqIGl0ZW0xOwotICAgIEF0a09iamVjdCogaXRlbTI7Ci0g
ICAgQXRrT2JqZWN0KiBpdGVtMzsKLSAgICBHTWFpbkxvb3AqIGxvb3A7Ci0KLSAgICB3ZWJWaWV3
ID0gV0VCS0lUX1dFQl9WSUVXKHdlYmtpdF93ZWJfdmlld19uZXcoKSk7CisgICAgV2ViS2l0V2Vi
Vmlldyogd2ViVmlldyA9IFdFQktJVF9XRUJfVklFVyh3ZWJraXRfd2ViX3ZpZXdfbmV3KCkpOwog
ICAgIGdfb2JqZWN0X3JlZl9zaW5rKHdlYlZpZXcpOwogICAgIEd0a0FsbG9jYXRpb24gYWxsb2Mg
PSB7IDAsIDAsIDgwMCwgNjAwIH07CiAgICAgZ3RrX3dpZGdldF9zaXplX2FsbG9jYXRlKEdUS19X
SURHRVQod2ViVmlldyksICZhbGxvYyk7CiAgICAgd2Via2l0X3dlYl92aWV3X2xvYWRfc3RyaW5n
KHdlYlZpZXcsIGxpc3RzT2ZJdGVtcywgTlVMTCwgTlVMTCwgTlVMTCk7Ci0gICAgbG9vcCA9IGdf
bWFpbl9sb29wX25ldyhOVUxMLCBUUlVFKTsKKyAgICBHTWFpbkxvb3AqIGxvb3AgPSBnX21haW5f
bG9vcF9uZXcoTlVMTCwgVFJVRSk7CiAKICAgICBnX2lkbGVfYWRkKChHU291cmNlRnVuYyliYWls
X291dCwgbG9vcCk7CiAgICAgZ19tYWluX2xvb3BfcnVuKGxvb3ApOwogCi0gICAgb2JqID0gZ3Rr
X3dpZGdldF9nZXRfYWNjZXNzaWJsZShHVEtfV0lER0VUKHdlYlZpZXcpKTsKKyAgICBBdGtPYmpl
Y3QqIG9iaiA9IGd0a193aWRnZXRfZ2V0X2FjY2Vzc2libGUoR1RLX1dJREdFVCh3ZWJWaWV3KSk7
CiAgICAgZ19hc3NlcnQob2JqKTsKIAogICAgIC8vIFVub3JkZXJlZCBsaXN0CiAKLSAgICB1TGlz
dCA9IGF0a19vYmplY3RfcmVmX2FjY2Vzc2libGVfY2hpbGQob2JqLCAwKTsKKyAgICBBdGtPYmpl
Y3QqIHVMaXN0ID0gYXRrX29iamVjdF9yZWZfYWNjZXNzaWJsZV9jaGlsZChvYmosIDApOwogICAg
IGdfYXNzZXJ0KEFUS19PQkpFQ1QodUxpc3QpKTsKICAgICBnX2Fzc2VydChhdGtfb2JqZWN0X2dl
dF9yb2xlKHVMaXN0KSA9PSBBVEtfUk9MRV9MSVNUKTsKICAgICBnX2Fzc2VydF9jbXBpbnQoYXRr
X29iamVjdF9nZXRfbl9hY2Nlc3NpYmxlX2NoaWxkcmVuKHVMaXN0KSwgPT0sIDMpOwogCi0gICAg
aXRlbTEgPSBhdGtfb2JqZWN0X3JlZl9hY2Nlc3NpYmxlX2NoaWxkKHVMaXN0LCAwKTsKLSAgICBp
dGVtMiA9IGF0a19vYmplY3RfcmVmX2FjY2Vzc2libGVfY2hpbGQodUxpc3QsIDEpOwotICAgIGl0
ZW0zID0gYXRrX29iamVjdF9yZWZfYWNjZXNzaWJsZV9jaGlsZCh1TGlzdCwgMik7CisgICAgQXRr
T2JqZWN0KiBpdGVtMSA9IGF0a19vYmplY3RfcmVmX2FjY2Vzc2libGVfY2hpbGQodUxpc3QsIDAp
OworICAgIGdfYXNzZXJ0KEFUS19JU19URVhUKGl0ZW0xKSk7CisgICAgQXRrT2JqZWN0KiBpdGVt
MiA9IGF0a19vYmplY3RfcmVmX2FjY2Vzc2libGVfY2hpbGQodUxpc3QsIDEpOworICAgIGdfYXNz
ZXJ0KEFUS19JU19URVhUKGl0ZW0yKSk7CisgICAgQXRrT2JqZWN0KiBpdGVtMyA9IGF0a19vYmpl
Y3RfcmVmX2FjY2Vzc2libGVfY2hpbGQodUxpc3QsIDIpOworICAgIGdfYXNzZXJ0KEFUS19JU19U
RVhUKGl0ZW0zKSk7CiAKICAgICBnX2Fzc2VydF9jbXBpbnQoYXRrX29iamVjdF9nZXRfbl9hY2Nl
c3NpYmxlX2NoaWxkcmVuKGl0ZW0xKSwgPT0sIDApOwogICAgIGdfYXNzZXJ0X2NtcGludChhdGtf
b2JqZWN0X2dldF9uX2FjY2Vzc2libGVfY2hpbGRyZW4oaXRlbTIpLCA9PSwgMSk7CkBAIC0xMDEz
LDE4ICsxMDA3LDIxIEBAIHN0YXRpYyB2b2lkIHRlc3RXZWJraXRBdGtMaXN0c09mSXRlbXModm9p
ZCkKIAogICAgIC8vIE9yZGVyZWQgbGlzdAogCi0gICAgb0xpc3QgPSBhdGtfb2JqZWN0X3JlZl9h
Y2Nlc3NpYmxlX2NoaWxkKG9iaiwgMSk7CisgICAgQXRrT2JqZWN0KiBvTGlzdCA9IGF0a19vYmpl
Y3RfcmVmX2FjY2Vzc2libGVfY2hpbGQob2JqLCAxKTsKICAgICBnX2Fzc2VydChBVEtfT0JKRUNU
KG9MaXN0KSk7CiAgICAgZ19hc3NlcnQoYXRrX29iamVjdF9nZXRfcm9sZShvTGlzdCkgPT0gQVRL
X1JPTEVfTElTVCk7CiAgICAgZ19hc3NlcnRfY21waW50KGF0a19vYmplY3RfZ2V0X25fYWNjZXNz
aWJsZV9jaGlsZHJlbihvTGlzdCksID09LCAzKTsKIAogICAgIGl0ZW0xID0gYXRrX29iamVjdF9y
ZWZfYWNjZXNzaWJsZV9jaGlsZChvTGlzdCwgMCk7CisgICAgZ19hc3NlcnQoQVRLX0lTX1RFWFQo
aXRlbTEpKTsKICAgICBpdGVtMiA9IGF0a19vYmplY3RfcmVmX2FjY2Vzc2libGVfY2hpbGQob0xp
c3QsIDEpOworICAgIGdfYXNzZXJ0KEFUS19JU19URVhUKGl0ZW0yKSk7CiAgICAgaXRlbTMgPSBh
dGtfb2JqZWN0X3JlZl9hY2Nlc3NpYmxlX2NoaWxkKG9MaXN0LCAyKTsKKyAgICBnX2Fzc2VydChB
VEtfSVNfVEVYVChpdGVtMykpOwogCi0gICAgZ19hc3NlcnRfY21wc3RyKGF0a190ZXh0X2dldF90
ZXh0KEFUS19URVhUKGl0ZW0xKSwgMCwgLTEpLCA9PSwgIjEgdGV4dCBvbmx5Iik7Ci0gICAgZ19h
c3NlcnRfY21wc3RyKGF0a190ZXh0X2dldF90ZXh0KEFUS19URVhUKGl0ZW0yKSwgMCwgLTEpLCA9
PSwgIjIgbGluayBvbmx5Iik7Ci0gICAgZ19hc3NlcnRfY21wc3RyKGF0a190ZXh0X2dldF90ZXh0
KEFUS19URVhUKGl0ZW0zKSwgMCwgLTEpLCA9PSwgIjMgdGV4dCBhbmQgYSBsaW5rIik7CisgICAg
Z19hc3NlcnRfY21wc3RyKGF0a190ZXh0X2dldF90ZXh0KEFUS19URVhUKGl0ZW0xKSwgMCwgLTEp
LCA9PSwgIjEudGV4dCBvbmx5Iik7CisgICAgZ19hc3NlcnRfY21wc3RyKGF0a190ZXh0X2dldF90
ZXh0KEFUS19URVhUKGl0ZW0yKSwgMCwgLTEpLCA9PSwgIjIubGluayBvbmx5Iik7CisgICAgZ19h
c3NlcnRfY21wc3RyKGF0a190ZXh0X2dldF90ZXh0KEFUS19URVhUKGl0ZW0zKSwgMCwgLTEpLCA9
PSwgIjMudGV4dCBhbmQgYSBsaW5rIik7CiAKICAgICBnX2Fzc2VydF9jbXBpbnQoYXRrX29iamVj
dF9nZXRfbl9hY2Nlc3NpYmxlX2NoaWxkcmVuKGl0ZW0xKSwgPT0sIDApOwogICAgIGdfYXNzZXJ0
X2NtcGludChhdGtfb2JqZWN0X2dldF9uX2FjY2Vzc2libGVfY2hpbGRyZW4oaXRlbTIpLCA9PSwg
MSk7Ci0tIAoxLjcuMC40Cgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>68677</attachid>
            <date>2010-09-24 07:39:13 -0700</date>
            <delta_ts>2010-09-27 12:35:23 -0700</delta_ts>
            <desc>Patch proposal + unit test updated</desc>
            <filename>0001-2010-09-24-Mario-Sanchez-Prada-msanchez-igalia.com.patch</filename>
            <type>text/plain</type>
            <size>17390</size>
            <attacher name="Mario Sanchez Prada">mario</attacher>
            
              <data encoding="base64">RnJvbSBiYzVmM2ZjNzMzOGUzMmI1NjFjOGExOWQ1OWZmZDA1YmEwZjQ0ZTBkIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBNYXJpbyBTYW5jaGV6IFByYWRhIDxtc2FuY2hlekBpZ2FsaWEu
Y29tPgpEYXRlOiBGcmksIDI0IFNlcCAyMDEwIDE2OjIzOjE5ICswMjAwClN1YmplY3Q6IFtQQVRD
SF0gMjAxMC0wOS0yNCAgTWFyaW8gU2FuY2hleiBQcmFkYSAgPG1zYW5jaGV6QGlnYWxpYS5jb20+
CgogICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgoKICAgICAgICBbR3RrXSBBZGp1
c3QgYXRrX3RleHRfZ2V0X3RleHRfYXRfb2Zmc2V0IHRvIGFjY291bnQgZm9yIGJ1bGxldHMvbnVt
YmVycyBpbiBsaXN0IGl0ZW1zCiAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTQ1MzgxCgogICAgICAgIEVuc3VyZSBsaXN0IG1hcmtlcnMgYXJlIGNvbnNpc3Rl
bnRseSB1c2VkIGluIHRoZSBBdGsgd3JhcHBlci4KCiAgICAgICAgVGhpcyBwYXRjaCBkb2VzIHR3
byB0aGluZ3MgKGJvdGggbmVlZGVkIHRvIGZpeCB0aGUgYnVnKTogSXQKICAgICAgICBpbXByb3Zl
cyB0aGUgd2F5IGxpc3QgaXRlbXMgbWFya2VycyBhcmUgZXhwb3NlZCB0aHJvdWdoIHRoZSBBdGsK
ICAgICAgICBXcmFwcGVyIChieSBleHBvc2luZyB0aGUgZXhhY3QgdGV4dCBpbiB0aGUgbWFya2Vy
LCBpbmNsdWRpbmcgdGhlCiAgICAgICAgbWFya2VyIHN1ZmZpeCwgaWYgYW55KSBhbmQgbWFrZXMg
c3VyZSB0aGUgbWFya2VyIGlzIGNvbnNpc3RlbnRseQogICAgICAgIGNvbnNpZGVyZWQgYW5kIHRy
ZWF0ZWQgaW4gdGhvc2UgbWV0aG9kcyBvZiB0aGUgQXRrVGV4dCBpbnRlcmZhY2UKICAgICAgICB0
aGF0IHdvdWxkIG5lZWQgaXQgKGxpa2UgYXRrX3RleHRfZ2V0X2NoYXJhY3Rlcl9jb3VudCBvcgog
ICAgICAgIGF0a190ZXh0X2dldF9ydW5fYXR0cmlidXRlcywgZm9yIGluc3RhbmNlKS4KCiAgICAg
ICAgKiBhY2Nlc3NpYmlsaXR5L2d0ay9BY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlckF0ay5jcHA6
CiAgICAgICAgKHRleHRGb3JPYmplY3QpOgogICAgICAgICAgIEFwcGVuZC9wcmVwZW5kIGxpc3Qg
bWFya2VyIHdoZW4gbmVlZGVkLgogICAgICAgICh3ZWJraXRfYWNjZXNzaWJsZV90ZXh0X2dldF90
ZXh0KToKICAgICAgICAgICBVc2UgdGhlIG5ldyBmdW5jdGlvbiBtYXJrZXJUZXh0V2l0aFN1ZmZp
eCgpIHRvIGV4cG9zZSBhIG1vcmUKICAgICAgICAgICBhY2N1cmF0ZSB2YWx1ZS4KICAgICAgICAo
YWNjZXNzaWJpbGl0eU9iamVjdExlbmd0aCk6CiAgICAgICAgICAgQ29uc2lkZXIgbGlzdCBpdGVt
cyBtYXJrZXIgdG8gcmV0dXJuIHRoZSBsZW5ndGggb2YgYW4gb2JqZWN0LAogICAgICAgICAgIGlm
IG5lZWRlZC4gQWxzbywgYWRkZWQgc29tZSBleHRyYSBjaGVja3MuCiAgICAgICAgKHdlYmtpdF9h
Y2Nlc3NpYmxlX3RleHRfZ2V0X2NoYXJhY3Rlcl9jb3VudCk6CiAgICAgICAgICAgSnVzdCBkZWxl
Z2F0ZSBvbiBhY2Nlc3NpYmlsaXR5T2JqZWN0TGVuZ3RoLCB0byBtYWtlIGl0CiAgICAgICAgICAg
Y2xlYW5lciBhbmQgbW9yZSBjb25zaXN0ZW50LgoKICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJM
aXN0SXRlbS5jcHA6CiAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxpc3RJdGVtOjptYXJrZXJUZXh0
V2l0aFN1ZmZpeCk6CiAgICAgICAgICAgTmV3IHB1YmxpYyBmdW5jdGlvbiB0byByZXR1cm4gYSBz
aW5nbGUgc3RyaW5nIHdpdGggdGhlCiAgICAgICAgICAgbWFya2VyIGFzc29jaWF0ZWQgdG8gdGhl
IGl0ZW0gYW5kIGl0cyBzdWZmaXgsIGNvbnNpZGVyaW5nCiAgICAgICAgICAgdGV4dCBkaXJlY3Rp
b24gKExUUiBvciBSVEwpLgogICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxpc3RJdGVtLmg6CiAg
ICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGlzdE1hcmtlci5jcHA6CiAgICAgICAgKFdlYkNvcmU6
OlJlbmRlckxpc3RNYXJrZXI6OnN1ZmZpeCk6CiAgICAgICAgICAgTmV3IHB1YmxpYyBmdW5jdGlv
biB0byByZXR1cm4gYSBTdHJpbmcgd2l0aCB0aGUgc3VmZml4CiAgICAgICAgICAgYXNzb2NpYXRl
ZCB0byB0aGUgbWFya2VyLgogICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxpc3RNYXJrZXIuaDoK
CjIwMTAtMDktMjQgIE1hcmlvIFNhbmNoZXogUHJhZGEgIDxtc2FuY2hlekBpZ2FsaWEuY29tPgoK
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KCiAgICAgICAgW0d0a10gQWRqdXN0
IGF0a190ZXh0X2dldF90ZXh0X2F0X29mZnNldCB0byBhY2NvdW50IGZvciBidWxsZXRzL251bWJl
cnMgaW4gbGlzdCBpdGVtcwogICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD00NTM4MQoKICAgICAgICBVcGRhdGVkIHRlc3QgdG8gbWF0Y2ggdGhlIG5ldyBleHBv
c3VyZSBvZiBsaXN0IGl0ZW0gbWFya2Vycy4KCiAgICAgICAgQWxzbywgYWRkZWQgc29tZSBleHRy
YSBhc3NlcnRpb25zIGluIHRoYXQgdGVzdCB0byBtYWtlIHN1cmUgdGhlCiAgICAgICAgYWNjZXNz
aWJsZSBvYmplY3RzIGFzc29jaWF0ZWQgdG8gdGhlIGl0ZW1zIGltcGxlbWVudCBBdGtUZXh0LgoK
ICAgICAgICAqIHRlc3RzL3Rlc3RhdGsuYzoKICAgICAgICAodGVzdFdlYmtpdEF0a0xpc3RzT2ZJ
dGVtcyk6CiAgICAgICAgKG1haW4pOgotLS0KIFdlYkNvcmUvQ2hhbmdlTG9nICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHwgICA0MiArKysrKysrKysrKysrKwogLi4uL2d0ay9BY2Nl
c3NpYmlsaXR5T2JqZWN0V3JhcHBlckF0ay5jcHAgICAgICAgICAgfCAgIDU4ICsrKysrKysrKysr
KysrKy0tLS0tCiBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0SXRlbS5jcHAgICAgICAgICAg
ICAgICB8ICAgMjMgKysrKysrKysKIFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpc3RJdGVtLmgg
ICAgICAgICAgICAgICAgIHwgICAgMSArCiBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0TWFy
a2VyLmNwcCAgICAgICAgICAgICB8ICAgMTkgKysrKysrKwogV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyTGlzdE1hcmtlci5oICAgICAgICAgICAgICAgfCAgICAxICsKIFdlYktpdC9ndGsvQ2hhbmdl
TG9nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAxNiArKysrKysKIFdlYktpdC9n
dGsvdGVzdHMvdGVzdGF0ay5jICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAzNyArKysrKyst
LS0tLS0tCiA4IGZpbGVzIGNoYW5nZWQsIDE2MyBpbnNlcnRpb25zKCspLCAzNCBkZWxldGlvbnMo
LSkKCmRpZmYgLS1naXQgYS9XZWJDb3JlL0NoYW5nZUxvZyBiL1dlYkNvcmUvQ2hhbmdlTG9nCmlu
ZGV4IGY4YmE2ZDMuLjE4NjkzNzAgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBi
L1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDUgQEAKKzIwMTAtMDktMjQgIE1hcmlvIFNh
bmNoZXogUHJhZGEgIDxtc2FuY2hlekBpZ2FsaWEuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFtHdGtdIEFkanVzdCBhdGtfdGV4dF9nZXRfdGV4
dF9hdF9vZmZzZXQgdG8gYWNjb3VudCBmb3IgYnVsbGV0cy9udW1iZXJzIGluIGxpc3QgaXRlbXMK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ1MzgxCisK
KyAgICAgICAgRW5zdXJlIGxpc3QgbWFya2VycyBhcmUgY29uc2lzdGVudGx5IHVzZWQgaW4gdGhl
IEF0ayB3cmFwcGVyLgorCisgICAgICAgIFRoaXMgcGF0Y2ggZG9lcyB0d28gdGhpbmdzIChib3Ro
IG5lZWRlZCB0byBmaXggdGhlIGJ1Zyk6IEl0CisgICAgICAgIGltcHJvdmVzIHRoZSB3YXkgbGlz
dCBpdGVtcyBtYXJrZXJzIGFyZSBleHBvc2VkIHRocm91Z2ggdGhlIEF0aworICAgICAgICBXcmFw
cGVyIChieSBleHBvc2luZyB0aGUgZXhhY3QgdGV4dCBpbiB0aGUgbWFya2VyLCBpbmNsdWRpbmcg
dGhlCisgICAgICAgIG1hcmtlciBzdWZmaXgsIGlmIGFueSkgYW5kIG1ha2VzIHN1cmUgdGhlIG1h
cmtlciBpcyBjb25zaXN0ZW50bHkKKyAgICAgICAgY29uc2lkZXJlZCBhbmQgdHJlYXRlZCBpbiB0
aG9zZSBtZXRob2RzIG9mIHRoZSBBdGtUZXh0IGludGVyZmFjZQorICAgICAgICB0aGF0IHdvdWxk
IG5lZWQgaXQgKGxpa2UgYXRrX3RleHRfZ2V0X2NoYXJhY3Rlcl9jb3VudCBvcgorICAgICAgICBh
dGtfdGV4dF9nZXRfcnVuX2F0dHJpYnV0ZXMsIGZvciBpbnN0YW5jZSkuCisKKyAgICAgICAgKiBh
Y2Nlc3NpYmlsaXR5L2d0ay9BY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlckF0ay5jcHA6CisgICAg
ICAgICh0ZXh0Rm9yT2JqZWN0KToKKyAgICAgICAgICAgQXBwZW5kL3ByZXBlbmQgbGlzdCBtYXJr
ZXIgd2hlbiBuZWVkZWQuCisgICAgICAgICh3ZWJraXRfYWNjZXNzaWJsZV90ZXh0X2dldF90ZXh0
KToKKyAgICAgICAgICAgVXNlIHRoZSBuZXcgZnVuY3Rpb24gbWFya2VyVGV4dFdpdGhTdWZmaXgo
KSB0byBleHBvc2UgYSBtb3JlCisgICAgICAgICAgIGFjY3VyYXRlIHZhbHVlLgorICAgICAgICAo
YWNjZXNzaWJpbGl0eU9iamVjdExlbmd0aCk6CisgICAgICAgICAgIENvbnNpZGVyIGxpc3QgaXRl
bXMgbWFya2VyIHRvIHJldHVybiB0aGUgbGVuZ3RoIG9mIGFuIG9iamVjdCwKKyAgICAgICAgICAg
aWYgbmVlZGVkLiBBbHNvLCBhZGRlZCBzb21lIGV4dHJhIGNoZWNrcy4KKyAgICAgICAgKHdlYmtp
dF9hY2Nlc3NpYmxlX3RleHRfZ2V0X2NoYXJhY3Rlcl9jb3VudCk6CisgICAgICAgICAgIEp1c3Qg
ZGVsZWdhdGUgb24gYWNjZXNzaWJpbGl0eU9iamVjdExlbmd0aCwgdG8gbWFrZSBpdAorICAgICAg
ICAgICBjbGVhbmVyIGFuZCBtb3JlIGNvbnNpc3RlbnQuCisKKyAgICAgICAgKiByZW5kZXJpbmcv
UmVuZGVyTGlzdEl0ZW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGlzdEl0ZW06Om1h
cmtlclRleHRXaXRoU3VmZml4KToKKyAgICAgICAgICAgTmV3IHB1YmxpYyBmdW5jdGlvbiB0byBy
ZXR1cm4gYSBzaW5nbGUgc3RyaW5nIHdpdGggdGhlCisgICAgICAgICAgIG1hcmtlciBhc3NvY2lh
dGVkIHRvIHRoZSBpdGVtIGFuZCBpdHMgc3VmZml4LCBjb25zaWRlcmluZworICAgICAgICAgICB0
ZXh0IGRpcmVjdGlvbiAoTFRSIG9yIFJUTCkuCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxp
c3RJdGVtLmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxpc3RNYXJrZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyTGlzdE1hcmtlcjo6c3VmZml4KToKKyAgICAgICAgICAgTmV3
IHB1YmxpYyBmdW5jdGlvbiB0byByZXR1cm4gYSBTdHJpbmcgd2l0aCB0aGUgc3VmZml4CisgICAg
ICAgICAgIGFzc29jaWF0ZWQgdG8gdGhlIG1hcmtlci4KKyAgICAgICAgKiByZW5kZXJpbmcvUmVu
ZGVyTGlzdE1hcmtlci5oOgorCiAyMDEwLTA5LTI0ICBKaWEgUHUgIDxqcHVAYXBwbGUuY29tPgog
CiAgICAgICAgIFJldmlld2VkIGJ5IFNoaW5pY2hpcm8gSGFtYWppLgpkaWZmIC0tZ2l0IGEvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L2d0ay9BY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlckF0ay5jcHAg
Yi9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvZ3RrL0FjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyQXRr
LmNwcAppbmRleCBmMzRhMDNlLi4zNTc1YWZlIDEwMDY0NAotLS0gYS9XZWJDb3JlL2FjY2Vzc2li
aWxpdHkvZ3RrL0FjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyQXRrLmNwcAorKysgYi9XZWJDb3Jl
L2FjY2Vzc2liaWxpdHkvZ3RrL0FjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyQXRrLmNwcApAQCAt
NTUsNiArNTUsNyBAQAogI2luY2x1ZGUgIklubGluZVRleHRCb3guaCIKICNpbmNsdWRlICJJbnRS
ZWN0LmgiCiAjaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKKyNpbmNsdWRlICJSZW5kZXJMaXN0
SXRlbS5oIgogI2luY2x1ZGUgIlJlbmRlckxpc3RNYXJrZXIuaCIKICNpbmNsdWRlICJSZW5kZXJU
ZXh0LmgiCiAjaW5jbHVkZSAiVGV4dEVuY29kaW5nLmgiCkBAIC04NzgsOSArODc5LDEzIEBAIGdj
aGFyKiB0ZXh0Rm9yT2JqZWN0KEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QqIGFjY09iamVjdCkK
ICAgICAgICAgICAgIGdfc3RyaW5nX2FwcGVuZChzdHIsICJcbiIpOwogICAgICAgICAgICAgcmFu
Z2UgPSBhY2NPYmplY3QtPmRvQVhSYW5nZUZvckxpbmUoKytsaW5lTnVtYmVyKTsKICAgICAgICAg
fQotICAgIH0gZWxzZSBpZiAoYWNjT2JqZWN0LT5yZW5kZXJlcigpKSB7CisgICAgfSBlbHNlIHsK
KyAgICAgICAgUmVuZGVyT2JqZWN0KiByZW5kZXJlciA9IGFjY09iamVjdC0+cmVuZGVyZXIoKTsK
KyAgICAgICAgaWYgKCFyZW5kZXJlcikKKyAgICAgICAgICAgIHJldHVybiBnX3N0cmluZ19mcmVl
KHN0ciwgRkFMU0UpOworCiAgICAgICAgIC8vIEZvciBSZW5kZXJCbG9ja3MsIHBpZWNlIHRvZ2V0
aGVyIHRoZSB0ZXh0IGZyb20gdGhlIFJlbmRlclRleHQgb2JqZWN0cyB0aGV5IGNvbnRhaW4uCi0g
ICAgICAgIGZvciAoUmVuZGVyT2JqZWN0KiBvYmogPSBhY2NPYmplY3QtPnJlbmRlcmVyKCktPmZp
cnN0Q2hpbGQoKTsgb2JqOyBvYmogPSBvYmotPm5leHRTaWJsaW5nKCkpIHsKKyAgICAgICAgZm9y
IChSZW5kZXJPYmplY3QqIG9iaiA9IHJlbmRlcmVyLT5maXJzdENoaWxkKCk7IG9iajsgb2JqID0g
b2JqLT5uZXh0U2libGluZygpKSB7CiAgICAgICAgICAgICBpZiAob2JqLT5pc0JSKCkpIHsKICAg
ICAgICAgICAgICAgICBnX3N0cmluZ19hcHBlbmQoc3RyLCAiXG4iKTsKICAgICAgICAgICAgICAg
ICBjb250aW51ZTsKQEAgLTkwNyw3ICs5MTIsMTcgQEAgZ2NoYXIqIHRleHRGb3JPYmplY3QoQWNj
ZXNzaWJpbGl0eVJlbmRlck9iamVjdCogYWNjT2JqZWN0KQogICAgICAgICAgICAgICAgIGJveCA9
IGJveC0+bmV4dFRleHRCb3goKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQorCisgICAgICAg
IC8vIEluc2VydCB0aGUgdGV4dCBvZiB0aGUgbWFya2VyIGZvciBsaXN0IGl0ZW0gaW4gdGhlIHJp
Z2h0IHBsYWNlLCBpZiBwcmVzZW50CisgICAgICAgIGlmIChyZW5kZXJlci0+aXNMaXN0SXRlbSgp
KSB7CisgICAgICAgICAgICBTdHJpbmcgbWFya2VyVGV4dCA9IHRvUmVuZGVyTGlzdEl0ZW0ocmVu
ZGVyZXIpLT5tYXJrZXJUZXh0V2l0aFN1ZmZpeCgpOworICAgICAgICAgICAgaWYgKHJlbmRlcmVy
LT5zdHlsZSgpLT5kaXJlY3Rpb24oKSA9PSBMVFIpCisgICAgICAgICAgICAgICAgZ19zdHJpbmdf
cHJlcGVuZChzdHIsIG1hcmtlclRleHQudXRmOCgpLmRhdGEoKSk7CisgICAgICAgICAgICBlbHNl
CisgICAgICAgICAgICAgICAgZ19zdHJpbmdfYXBwZW5kKHN0ciwgbWFya2VyVGV4dC51dGY4KCku
ZGF0YSgpKTsKKyAgICAgICAgfQogICAgIH0KKwogICAgIHJldHVybiBnX3N0cmluZ19mcmVlKHN0
ciwgRkFMU0UpOwogfQogCkBAIC05MzksMTAgKzk1NCw5IEBAIHN0YXRpYyBnY2hhciogd2Via2l0
X2FjY2Vzc2libGVfdGV4dF9nZXRfdGV4dChBdGtUZXh0KiB0ZXh0LCBnaW50IHN0YXJ0T2Zmc2V0
LCBnCiAgICAgLy8gUHJlZml4IGEgaXRlbSBudW1iZXIvYnVsbGV0IGlmIG5lZWRlZAogICAgIGlm
IChjb3JlT2JqZWN0LT5yb2xlVmFsdWUoKSA9PSBMaXN0SXRlbVJvbGUpIHsKICAgICAgICAgUmVu
ZGVyT2JqZWN0KiBvYmpSZW5kZXJlciA9IHN0YXRpY19jYXN0PEFjY2Vzc2liaWxpdHlSZW5kZXJP
YmplY3QqPihjb3JlT2JqZWN0KS0+cmVuZGVyZXIoKTsKLSAgICAgICAgUmVuZGVyT2JqZWN0KiBt
YXJrZXJSZW5kZXJlciA9IG9ialJlbmRlcmVyID8gb2JqUmVuZGVyZXItPmZpcnN0Q2hpbGQoKSA6
IDA7Ci0gICAgICAgIGlmIChtYXJrZXJSZW5kZXJlciAmJiBtYXJrZXJSZW5kZXJlci0+aXNMaXN0
TWFya2VyKCkpIHsKLSAgICAgICAgICAgIFN0cmluZyBtYXJrZXJUeHQgPSB0b1JlbmRlckxpc3RN
YXJrZXIobWFya2VyUmVuZGVyZXIpLT50ZXh0KCk7Ci0gICAgICAgICAgICByZXQgPSBtYXJrZXJU
eHQubGVuZ3RoKCkgPiAwID8gbWFya2VyVHh0ICsgIiAiICsgcmV0IDogcmV0OworICAgICAgICBp
ZiAob2JqUmVuZGVyZXIgJiYgb2JqUmVuZGVyZXItPmlzTGlzdEl0ZW0oKSkgeworICAgICAgICAg
ICAgU3RyaW5nIG1hcmtlclRleHQgPSB0b1JlbmRlckxpc3RJdGVtKG9ialJlbmRlcmVyKS0+bWFy
a2VyVGV4dFdpdGhTdWZmaXgoKTsKKyAgICAgICAgICAgIHJldCA9IG9ialJlbmRlcmVyLT5zdHls
ZSgpLT5kaXJlY3Rpb24oKSA9PSBMVFIgPyBtYXJrZXJUZXh0ICsgcmV0IDogcmV0ICsgbWFya2Vy
VGV4dDsKICAgICAgICAgfQogICAgIH0KIApAQCAtMTE4NSw4ICsxMTk5LDI5IEBAIHN0YXRpYyBB
dGtBdHRyaWJ1dGVTZXQqIGF0dHJpYnV0ZVNldERpZmZlcmVuY2UoQXRrQXR0cmlidXRlU2V0KiBh
MSwgQXRrQXR0cmlidXRlCiAKIHN0YXRpYyBndWludCBhY2Nlc3NpYmlsaXR5T2JqZWN0TGVuZ3Ro
KGNvbnN0IEFjY2Vzc2liaWxpdHlPYmplY3QqIG9iamVjdCkKIHsKLSAgICBHT3duUHRyPGdjaGFy
PiB0ZXh0KHdlYmtpdF9hY2Nlc3NpYmxlX3RleHRfZ2V0X3RleHQoQVRLX1RFWFQob2JqZWN0LT53
cmFwcGVyKCkpLCAwLCAtMSkpOwotICAgIHJldHVybiBnX3V0Zjhfc3RybGVuKHRleHQuZ2V0KCks
IC0xKTsKKyAgICAvLyBOb24gcmVuZGVyIG9iamVjdHMgYXJlIG5vdCB0YWtlbiBpbnRvIGFjY291
bnQKKyAgICBpZiAoIW9iamVjdC0+aXNBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0KCkpCisgICAg
ICAgIHJldHVybiAwOworCisgICAgLy8gRm9yIHRob3NlIG9iamVjdHMgaW1wbGVtZW50aW5nIHRo
ZSBBdGtUZXh0IGludGVyZmFjZSB3ZSB1c2UgdGhlCisgICAgLy8gd2VsbCBrbm93biBBUEkgdG8g
YWx3YXlzIGdldCB0aGUgdGV4dCBpbiBhIGNvbnNpc3RlbnQgd2F5CisgICAgQXRrT2JqZWN0KiBh
dGtPYmogPSBBVEtfT0JKRUNUKG9iamVjdC0+d3JhcHBlcigpKTsKKyAgICBpZiAoQVRLX0lTX1RF
WFQoYXRrT2JqKSkgeworICAgICAgICBHT3duUHRyPGdjaGFyPiB0ZXh0KHdlYmtpdF9hY2Nlc3Np
YmxlX3RleHRfZ2V0X3RleHQoQVRLX1RFWFQoYXRrT2JqKSwgMCwgLTEpKTsKKyAgICAgICAgcmV0
dXJuIGdfdXRmOF9zdHJsZW4odGV4dC5nZXQoKSwgLTEpOworICAgIH0KKworICAgIC8vIEV2ZW4g
aWYgd2UgZG9uJ3QgZXhwb3NlIGxpc3QgbWFya2VycyB0byBBc3Npc3RpdmUKKyAgICAvLyBUZWNo
bm9sb2dpZXMsIHdlIG5lZWQgdG8gaGF2ZSBhIHdheSB0byBtZWFzdXJlIHRoZWlyIGxlbmd0aAor
ICAgIC8vIGZvciB0aG9zZSBjYXNlcyB3aGVuIGl0J3MgbmVlZGVkIHRvIHRha2UgaXQgaW50byBh
Y2NvdW50CisgICAgLy8gc2VwYXJhdGVseSAoYXMgaW4gZ2V0QWNjZXNzaWJpbGl0eU9iamVjdEZv
ck9mZnNldCkKKyAgICBSZW5kZXJPYmplY3QqIHJlbmRlcmVyID0gc3RhdGljX2Nhc3Q8Y29uc3Qg
QWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdCo+KG9iamVjdCktPnJlbmRlcmVyKCk7CisgICAgaWYg
KHJlbmRlcmVyICYmIHJlbmRlcmVyLT5pc0xpc3RNYXJrZXIoKSkgeworICAgICAgICBSZW5kZXJM
aXN0TWFya2VyKiBtYXJrZXIgPSB0b1JlbmRlckxpc3RNYXJrZXIocmVuZGVyZXIpOworICAgICAg
ICByZXR1cm4gbWFya2VyLT50ZXh0KCkubGVuZ3RoKCkgKyBtYXJrZXItPnN1ZmZpeCgpLmxlbmd0
aCgpOworICAgIH0KKworICAgIHJldHVybiAwOwogfQogCiBzdGF0aWMgY29uc3QgQWNjZXNzaWJp
bGl0eU9iamVjdCogZ2V0QWNjZXNzaWJpbGl0eU9iamVjdEZvck9mZnNldChjb25zdCBBY2Nlc3Np
YmlsaXR5T2JqZWN0KiBvYmplY3QsIGd1aW50IG9mZnNldCwgZ2ludCogc3RhcnRPZmZzZXQsIGdp
bnQqIGVuZE9mZnNldCkKQEAgLTEzMjEsMTIgKzEzNTYsNyBAQCBzdGF0aWMgdm9pZCB3ZWJraXRf
YWNjZXNzaWJsZV90ZXh0X2dldF9yYW5nZV9leHRlbnRzKEF0a1RleHQqIHRleHQsIGdpbnQgc3Rh
cnRPZgogCiBzdGF0aWMgZ2ludCB3ZWJraXRfYWNjZXNzaWJsZV90ZXh0X2dldF9jaGFyYWN0ZXJf
Y291bnQoQXRrVGV4dCogdGV4dCkKIHsKLSAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBjb3JlT2Jq
ZWN0ID0gY29yZSh0ZXh0KTsKLQotICAgIGlmIChjb3JlT2JqZWN0LT5pc1RleHRDb250cm9sKCkp
Ci0gICAgICAgIHJldHVybiBjb3JlT2JqZWN0LT50ZXh0TGVuZ3RoKCk7Ci0gICAgZWxzZQotICAg
ICAgICByZXR1cm4gY29yZU9iamVjdC0+dGV4dFVuZGVyRWxlbWVudCgpLmxlbmd0aCgpOworICAg
IHJldHVybiBhY2Nlc3NpYmlsaXR5T2JqZWN0TGVuZ3RoKGNvcmUodGV4dCkpOwogfQogCiBzdGF0
aWMgZ2ludCB3ZWJraXRfYWNjZXNzaWJsZV90ZXh0X2dldF9vZmZzZXRfYXRfcG9pbnQoQXRrVGV4
dCogdGV4dCwgZ2ludCB4LCBnaW50IHksIEF0a0Nvb3JkVHlwZSBjb29yZHMpCmRpZmYgLS1naXQg
YS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0SXRlbS5jcHAgYi9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJMaXN0SXRlbS5jcHAKaW5kZXggMThiN2FjNS4uMmUwNGNjZCAxMDA2NDQKLS0tIGEv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlzdEl0ZW0uY3BwCisrKyBiL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckxpc3RJdGVtLmNwcApAQCAtMzE0LDYgKzMxNCwyOSBAQCBjb25zdCBTdHJpbmcm
IFJlbmRlckxpc3RJdGVtOjptYXJrZXJUZXh0KCkgY29uc3QKICAgICByZXR1cm4gc3RhdGljTnVs
bFN0cmluZzsKIH0KIAorU3RyaW5nIFJlbmRlckxpc3RJdGVtOjptYXJrZXJUZXh0V2l0aFN1ZmZp
eCgpIGNvbnN0Cit7CisgICAgaWYgKCFtX21hcmtlcikKKyAgICAgICAgcmV0dXJuIFN0cmluZygp
OworCisgICAgLy8gQXBwZW5kIHRoZSBzdWZmaXggZm9yIHRoZSBtYXJrZXIgaW4gdGhlIHJpZ2h0
IHBsYWNlIGRlcGVuZGluZworICAgIC8vIG9uIHRoZSBkaXJlY3Rpb24gb2YgdGhlIHRleHQgKHJp
Z2h0LXRvLWxlZnQgb3IgbGVmdC10by1yaWdodCkuCisKKyAgICBjb25zdCBTdHJpbmcmIG1hcmtl
clRleHQgPSBtX21hcmtlci0+dGV4dCgpOworICAgIGNvbnN0IFN0cmluZyBtYXJrZXJTdWZmaXgg
PSBtX21hcmtlci0+c3VmZml4KCk7CisgICAgVmVjdG9yPFVDaGFyPiByZXN1bHRWZWN0b3I7CisK
KyAgICBpZiAobV9tYXJrZXItPnN0eWxlKCktPmRpcmVjdGlvbigpID09IFJUTCkKKyAgICAgICAg
cmVzdWx0VmVjdG9yLmFwcGVuZChtYXJrZXJTdWZmaXguY2hhcmFjdGVycygpLCBtYXJrZXJTdWZm
aXgubGVuZ3RoKCkpOworCisgICAgcmVzdWx0VmVjdG9yLmFwcGVuZChtYXJrZXJUZXh0LmNoYXJh
Y3RlcnMoKSwgbWFya2VyVGV4dC5sZW5ndGgoKSk7CisKKyAgICBpZiAobV9tYXJrZXItPnN0eWxl
KCktPmRpcmVjdGlvbigpID09IExUUikKKyAgICAgICAgcmVzdWx0VmVjdG9yLmFwcGVuZChtYXJr
ZXJTdWZmaXguY2hhcmFjdGVycygpLCBtYXJrZXJTdWZmaXgubGVuZ3RoKCkpOworCisgICAgcmV0
dXJuIFN0cmluZzo6YWRvcHQocmVzdWx0VmVjdG9yKTsKK30KKwogdm9pZCBSZW5kZXJMaXN0SXRl
bTo6ZXhwbGljaXRWYWx1ZUNoYW5nZWQoKQogewogICAgIGlmIChtX21hcmtlcikKZGlmZiAtLWdp
dCBhL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpc3RJdGVtLmggYi9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJMaXN0SXRlbS5oCmluZGV4IDEzZDgxZjIuLjFjZjI5MzQgMTAwNjQ0Ci0tLSBhL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpc3RJdGVtLmgKKysrIGIvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyTGlzdEl0ZW0uaApAQCAtNDUsNiArNDUsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBub3RJ
bkxpc3QoKSBjb25zdCB7IHJldHVybiBtX25vdEluTGlzdDsgfQogCiAgICAgY29uc3QgU3RyaW5n
JiBtYXJrZXJUZXh0KCkgY29uc3Q7CisgICAgU3RyaW5nIG1hcmtlclRleHRXaXRoU3VmZml4KCkg
Y29uc3Q7CiAKICAgICB2b2lkIHVwZGF0ZUxpc3RNYXJrZXJOdW1iZXJzKCk7CiAKZGlmZiAtLWdp
dCBhL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpc3RNYXJrZXIuY3BwIGIvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyTGlzdE1hcmtlci5jcHAKaW5kZXggN2IzM2MzZC4uOWI1YjMwNSAxMDA2NDQK
LS0tIGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlzdE1hcmtlci5jcHAKKysrIGIvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyTGlzdE1hcmtlci5jcHAKQEAgLTE1MjMsNiArMTUyMywyNSBAQCBp
bnQgUmVuZGVyTGlzdE1hcmtlcjo6YmFzZWxpbmVQb3NpdGlvbihib29sLCBib29sKSBjb25zdAog
ICAgIHJldHVybiBoZWlnaHQoKTsKIH0KIAorU3RyaW5nIFJlbmRlckxpc3RNYXJrZXI6OnN1ZmZp
eCgpIGNvbnN0Cit7CisgICAgRUxpc3RTdHlsZVR5cGUgdHlwZSA9IHN0eWxlKCktPmxpc3RTdHls
ZVR5cGUoKTsKKyAgICBjb25zdCBVQ2hhciBzdWZmaXggPSBsaXN0TWFya2VyU3VmZml4KHR5cGUs
IG1fbGlzdEl0ZW0tPnZhbHVlKCkpOworCisgICAgVmVjdG9yPFVDaGFyPiByZXN1bHRWZWN0b3I7
CisgICAgcmVzdWx0VmVjdG9yLmFwcGVuZChzdWZmaXgpOworCisgICAgLy8gSWYgdGhlIHN1ZmZp
eCBpcyBub3QgJyAnLCBhbiBleHRyYSBzcGFjZSBpcyBuZWVkZWQKKyAgICBpZiAoc3VmZml4ICE9
ICcgJykgeworICAgICAgICBpZiAoc3R5bGUoKS0+ZGlyZWN0aW9uKCkgPT0gTFRSKQorICAgICAg
ICAgICAgcmVzdWx0VmVjdG9yLmFwcGVuZCgnICcpOworICAgICAgICBlbHNlCisgICAgICAgICAg
ICByZXN1bHRWZWN0b3IucHJlcGVuZCgnICcpOworICAgIH0KKworICAgIHJldHVybiBTdHJpbmc6
OmFkb3B0KHJlc3VsdFZlY3Rvcik7Cit9CisKIGJvb2wgUmVuZGVyTGlzdE1hcmtlcjo6aXNJbnNp
ZGUoKSBjb25zdAogewogICAgIHJldHVybiBtX2xpc3RJdGVtLT5ub3RJbkxpc3QoKSB8fCBzdHls
ZSgpLT5saXN0U3R5bGVQb3NpdGlvbigpID09IElOU0lERTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckxpc3RNYXJrZXIuaCBiL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxp
c3RNYXJrZXIuaAppbmRleCA5NzE4NzdiLi5lMTBkZjZlIDEwMDY0NAotLS0gYS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJMaXN0TWFya2VyLmgKKysrIGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
TGlzdE1hcmtlci5oCkBAIC00MSw2ICs0MSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQg
Y2FsY1ByZWZXaWR0aHMoKTsKIAogICAgIGNvbnN0IFN0cmluZyYgdGV4dCgpIGNvbnN0IHsgcmV0
dXJuIG1fdGV4dDsgfQorICAgIFN0cmluZyBzdWZmaXgoKSBjb25zdDsKIAogICAgIGJvb2wgaXNJ
bnNpZGUoKSBjb25zdDsKIApkaWZmIC0tZ2l0IGEvV2ViS2l0L2d0ay9DaGFuZ2VMb2cgYi9XZWJL
aXQvZ3RrL0NoYW5nZUxvZwppbmRleCAyNDIwM2VmLi5iM2NjMzAyIDEwMDY0NAotLS0gYS9XZWJL
aXQvZ3RrL0NoYW5nZUxvZworKysgYi9XZWJLaXQvZ3RrL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5
IEBACisyMDEwLTA5LTI0ICBNYXJpbyBTYW5jaGV6IFByYWRhICA8bXNhbmNoZXpAaWdhbGlhLmNv
bT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBbR3Rr
XSBBZGp1c3QgYXRrX3RleHRfZ2V0X3RleHRfYXRfb2Zmc2V0IHRvIGFjY291bnQgZm9yIGJ1bGxl
dHMvbnVtYmVycyBpbiBsaXN0IGl0ZW1zCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD00NTM4MQorCisgICAgICAgIFVwZGF0ZWQgdGVzdCB0byBtYXRjaCB0
aGUgbmV3IGV4cG9zdXJlIG9mIGxpc3QgaXRlbSBtYXJrZXJzLgorCisgICAgICAgIEFsc28sIGFk
ZGVkIHNvbWUgZXh0cmEgYXNzZXJ0aW9ucyBpbiB0aGF0IHRlc3QgdG8gbWFrZSBzdXJlIHRoZQor
ICAgICAgICBhY2Nlc3NpYmxlIG9iamVjdHMgYXNzb2NpYXRlZCB0byB0aGUgaXRlbXMgaW1wbGVt
ZW50IEF0a1RleHQuCisKKyAgICAgICAgKiB0ZXN0cy90ZXN0YXRrLmM6CisgICAgICAgICh0ZXN0
V2Via2l0QXRrTGlzdHNPZkl0ZW1zKToKKyAgICAgICAgKG1haW4pOgorCiAyMDEwLTA5LTIzICBN
YXJ0aW4gUm9iaW5zb24gIDxtcm9iaW5zb25AaWdhbGlhLmNvbT4KIAogICAgICAgICBSZXZpZXdl
ZCBieSBOYXRlIENoYXBpbi4KZGlmZiAtLWdpdCBhL1dlYktpdC9ndGsvdGVzdHMvdGVzdGF0ay5j
IGIvV2ViS2l0L2d0ay90ZXN0cy90ZXN0YXRrLmMKaW5kZXggMTlhNTI1YS4uYzhkZjRlZiAxMDA2
NDQKLS0tIGEvV2ViS2l0L2d0ay90ZXN0cy90ZXN0YXRrLmMKKysrIGIvV2ViS2l0L2d0ay90ZXN0
cy90ZXN0YXRrLmMKQEAgLTk2NiwzOCArOTY2LDMyIEBAIHN0YXRpYyB2b2lkIHRlc3RXZWJraXRB
dGtHZXRFeHRlbnRzKHZvaWQpCiAKIHN0YXRpYyB2b2lkIHRlc3RXZWJraXRBdGtMaXN0c09mSXRl
bXModm9pZCkKIHsKLSAgICBXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3OwotICAgIEF0a09iamVjdCog
b2JqOwotICAgIEF0a09iamVjdCogdUxpc3Q7Ci0gICAgQXRrT2JqZWN0KiBvTGlzdDsKLSAgICBB
dGtPYmplY3QqIGl0ZW0xOwotICAgIEF0a09iamVjdCogaXRlbTI7Ci0gICAgQXRrT2JqZWN0KiBp
dGVtMzsKLSAgICBHTWFpbkxvb3AqIGxvb3A7Ci0KLSAgICB3ZWJWaWV3ID0gV0VCS0lUX1dFQl9W
SUVXKHdlYmtpdF93ZWJfdmlld19uZXcoKSk7CisgICAgV2ViS2l0V2ViVmlldyogd2ViVmlldyA9
IFdFQktJVF9XRUJfVklFVyh3ZWJraXRfd2ViX3ZpZXdfbmV3KCkpOwogICAgIGdfb2JqZWN0X3Jl
Zl9zaW5rKHdlYlZpZXcpOwogICAgIEd0a0FsbG9jYXRpb24gYWxsb2MgPSB7IDAsIDAsIDgwMCwg
NjAwIH07CiAgICAgZ3RrX3dpZGdldF9zaXplX2FsbG9jYXRlKEdUS19XSURHRVQod2ViVmlldyks
ICZhbGxvYyk7CiAgICAgd2Via2l0X3dlYl92aWV3X2xvYWRfc3RyaW5nKHdlYlZpZXcsIGxpc3Rz
T2ZJdGVtcywgTlVMTCwgTlVMTCwgTlVMTCk7Ci0gICAgbG9vcCA9IGdfbWFpbl9sb29wX25ldyhO
VUxMLCBUUlVFKTsKKyAgICBHTWFpbkxvb3AqIGxvb3AgPSBnX21haW5fbG9vcF9uZXcoTlVMTCwg
VFJVRSk7CiAKICAgICBnX2lkbGVfYWRkKChHU291cmNlRnVuYyliYWlsX291dCwgbG9vcCk7CiAg
ICAgZ19tYWluX2xvb3BfcnVuKGxvb3ApOwogCi0gICAgb2JqID0gZ3RrX3dpZGdldF9nZXRfYWNj
ZXNzaWJsZShHVEtfV0lER0VUKHdlYlZpZXcpKTsKKyAgICBBdGtPYmplY3QqIG9iaiA9IGd0a193
aWRnZXRfZ2V0X2FjY2Vzc2libGUoR1RLX1dJREdFVCh3ZWJWaWV3KSk7CiAgICAgZ19hc3NlcnQo
b2JqKTsKIAogICAgIC8vIFVub3JkZXJlZCBsaXN0CiAKLSAgICB1TGlzdCA9IGF0a19vYmplY3Rf
cmVmX2FjY2Vzc2libGVfY2hpbGQob2JqLCAwKTsKKyAgICBBdGtPYmplY3QqIHVMaXN0ID0gYXRr
X29iamVjdF9yZWZfYWNjZXNzaWJsZV9jaGlsZChvYmosIDApOwogICAgIGdfYXNzZXJ0KEFUS19P
QkpFQ1QodUxpc3QpKTsKICAgICBnX2Fzc2VydChhdGtfb2JqZWN0X2dldF9yb2xlKHVMaXN0KSA9
PSBBVEtfUk9MRV9MSVNUKTsKICAgICBnX2Fzc2VydF9jbXBpbnQoYXRrX29iamVjdF9nZXRfbl9h
Y2Nlc3NpYmxlX2NoaWxkcmVuKHVMaXN0KSwgPT0sIDMpOwogCi0gICAgaXRlbTEgPSBhdGtfb2Jq
ZWN0X3JlZl9hY2Nlc3NpYmxlX2NoaWxkKHVMaXN0LCAwKTsKLSAgICBpdGVtMiA9IGF0a19vYmpl
Y3RfcmVmX2FjY2Vzc2libGVfY2hpbGQodUxpc3QsIDEpOwotICAgIGl0ZW0zID0gYXRrX29iamVj
dF9yZWZfYWNjZXNzaWJsZV9jaGlsZCh1TGlzdCwgMik7CisgICAgQXRrT2JqZWN0KiBpdGVtMSA9
IGF0a19vYmplY3RfcmVmX2FjY2Vzc2libGVfY2hpbGQodUxpc3QsIDApOworICAgIGdfYXNzZXJ0
KEFUS19JU19URVhUKGl0ZW0xKSk7CisgICAgQXRrT2JqZWN0KiBpdGVtMiA9IGF0a19vYmplY3Rf
cmVmX2FjY2Vzc2libGVfY2hpbGQodUxpc3QsIDEpOworICAgIGdfYXNzZXJ0KEFUS19JU19URVhU
KGl0ZW0yKSk7CisgICAgQXRrT2JqZWN0KiBpdGVtMyA9IGF0a19vYmplY3RfcmVmX2FjY2Vzc2li
bGVfY2hpbGQodUxpc3QsIDIpOworICAgIGdfYXNzZXJ0KEFUS19JU19URVhUKGl0ZW0zKSk7CiAK
ICAgICBnX2Fzc2VydF9jbXBpbnQoYXRrX29iamVjdF9nZXRfbl9hY2Nlc3NpYmxlX2NoaWxkcmVu
KGl0ZW0xKSwgPT0sIDApOwogICAgIGdfYXNzZXJ0X2NtcGludChhdGtfb2JqZWN0X2dldF9uX2Fj
Y2Vzc2libGVfY2hpbGRyZW4oaXRlbTIpLCA9PSwgMSk7CkBAIC0xMDEzLDE4ICsxMDA3LDIxIEBA
IHN0YXRpYyB2b2lkIHRlc3RXZWJraXRBdGtMaXN0c09mSXRlbXModm9pZCkKIAogICAgIC8vIE9y
ZGVyZWQgbGlzdAogCi0gICAgb0xpc3QgPSBhdGtfb2JqZWN0X3JlZl9hY2Nlc3NpYmxlX2NoaWxk
KG9iaiwgMSk7CisgICAgQXRrT2JqZWN0KiBvTGlzdCA9IGF0a19vYmplY3RfcmVmX2FjY2Vzc2li
bGVfY2hpbGQob2JqLCAxKTsKICAgICBnX2Fzc2VydChBVEtfT0JKRUNUKG9MaXN0KSk7CiAgICAg
Z19hc3NlcnQoYXRrX29iamVjdF9nZXRfcm9sZShvTGlzdCkgPT0gQVRLX1JPTEVfTElTVCk7CiAg
ICAgZ19hc3NlcnRfY21waW50KGF0a19vYmplY3RfZ2V0X25fYWNjZXNzaWJsZV9jaGlsZHJlbihv
TGlzdCksID09LCAzKTsKIAogICAgIGl0ZW0xID0gYXRrX29iamVjdF9yZWZfYWNjZXNzaWJsZV9j
aGlsZChvTGlzdCwgMCk7CisgICAgZ19hc3NlcnQoQVRLX0lTX1RFWFQoaXRlbTEpKTsKICAgICBp
dGVtMiA9IGF0a19vYmplY3RfcmVmX2FjY2Vzc2libGVfY2hpbGQob0xpc3QsIDEpOworICAgIGdf
YXNzZXJ0KEFUS19JU19URVhUKGl0ZW0yKSk7CiAgICAgaXRlbTMgPSBhdGtfb2JqZWN0X3JlZl9h
Y2Nlc3NpYmxlX2NoaWxkKG9MaXN0LCAyKTsKKyAgICBnX2Fzc2VydChBVEtfSVNfVEVYVChpdGVt
MykpOwogCi0gICAgZ19hc3NlcnRfY21wc3RyKGF0a190ZXh0X2dldF90ZXh0KEFUS19URVhUKGl0
ZW0xKSwgMCwgLTEpLCA9PSwgIjEgdGV4dCBvbmx5Iik7Ci0gICAgZ19hc3NlcnRfY21wc3RyKGF0
a190ZXh0X2dldF90ZXh0KEFUS19URVhUKGl0ZW0yKSwgMCwgLTEpLCA9PSwgIjIgbGluayBvbmx5
Iik7Ci0gICAgZ19hc3NlcnRfY21wc3RyKGF0a190ZXh0X2dldF90ZXh0KEFUS19URVhUKGl0ZW0z
KSwgMCwgLTEpLCA9PSwgIjMgdGV4dCBhbmQgYSBsaW5rIik7CisgICAgZ19hc3NlcnRfY21wc3Ry
KGF0a190ZXh0X2dldF90ZXh0KEFUS19URVhUKGl0ZW0xKSwgMCwgLTEpLCA9PSwgIjEuIHRleHQg
b25seSIpOworICAgIGdfYXNzZXJ0X2NtcHN0cihhdGtfdGV4dF9nZXRfdGV4dChBVEtfVEVYVChp
dGVtMiksIDAsIC0xKSwgPT0sICIyLiBsaW5rIG9ubHkiKTsKKyAgICBnX2Fzc2VydF9jbXBzdHIo
YXRrX3RleHRfZ2V0X3RleHQoQVRLX1RFWFQoaXRlbTMpLCAwLCAtMSksID09LCAiMy4gdGV4dCBh
bmQgYSBsaW5rIik7CiAKICAgICBnX2Fzc2VydF9jbXBpbnQoYXRrX29iamVjdF9nZXRfbl9hY2Nl
c3NpYmxlX2NoaWxkcmVuKGl0ZW0xKSwgPT0sIDApOwogICAgIGdfYXNzZXJ0X2NtcGludChhdGtf
b2JqZWN0X2dldF9uX2FjY2Vzc2libGVfY2hpbGRyZW4oaXRlbTIpLCA9PSwgMSk7Ci0tIAoxLjcu
MC40Cgo=
</data>

          </attachment>
      

    </bug>

</bugzilla>