<?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>111670</bug_id>
          
          <creation_ts>2013-03-06 19:31:25 -0800</creation_ts>
          <short_desc>Support bottom-right anchored fixed-position elements during a pinch gesture</short_desc>
          <delta_ts>2013-03-28 14:49:01 -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>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>0</everconfirmed>
          <reporter name="Tien-Ren Chen">trchen</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>abarth</cc>
    
    <cc>aelias</cc>
    
    <cc>andersca</cc>
    
    <cc>buildbot</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>dglazkov</cc>
    
    <cc>enne</cc>
    
    <cc>eric</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>fishd</cc>
    
    <cc>jamesr</cc>
    
    <cc>luiz</cc>
    
    <cc>ojan.autocc</cc>
    
    <cc>shawnsingh</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>skyostil</cc>
    
    <cc>tkent+wkapi</cc>
    
    <cc>tonikitoo</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>849643</commentid>
    <comment_count>0</comment_count>
    <who name="Tien-Ren Chen">trchen</who>
    <bug_when>2013-03-06 19:31:25 -0800</bug_when>
    <thetext>Implement pinch zoom for bottom-right fixed-position elements</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>849650</commentid>
    <comment_count>1</comment_count>
      <attachid>191899</attachid>
    <who name="Tien-Ren Chen">trchen</who>
    <bug_when>2013-03-06 19:36:23 -0800</bug_when>
    <thetext>Created attachment 191899
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>849659</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-03-06 19:43:27 -0800</bug_when>
    <thetext>Please wait for approval from abarth@webkit.org, dglazkov@chromium.org, fishd@chromium.org, jamesr@chromium.org or tkent@chromium.org before submitting, as this patch contains changes to the Chromium public API. See also https://trac.webkit.org/wiki/ChromiumWebKitAPI.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>849670</commentid>
    <comment_count>3</comment_count>
      <attachid>191899</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-03-06 19:51:21 -0800</bug_when>
    <thetext>Comment on attachment 191899
Patch

Attachment 191899 did not pass mac-wk2-ews (mac-wk2):
Output: http://webkit-commit-queue.appspot.com/results/17000343</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>849675</commentid>
    <comment_count>4</comment_count>
      <attachid>191901</attachid>
    <who name="Tien-Ren Chen">trchen</who>
    <bug_when>2013-03-06 20:01:45 -0800</bug_when>
    <thetext>Created attachment 191901
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>851067</commentid>
    <comment_count>5</comment_count>
      <attachid>191901</attachid>
    <who name="Sami Kyöstilä">skyostil</who>
    <bug_when>2013-03-08 04:21:22 -0800</bug_when>
    <thetext>Comment on attachment 191901
Patch

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

&gt; Source/Platform/chromium/public/WebLayer.h:199
&gt; +    virtual void setFixedToRightEdge(bool) { }

I wonder if we should have something more like the bitfields in the ViewportConstraints instead of this? That&apos;ll also cover cases where a layer is fixed to both edges on the same axis, in which case we may want to do something special in the compositor.

&gt; Source/WebCore/rendering/RenderLayerCompositor.cpp:1921
&gt; +RenderObject* RenderLayerCompositor::requiresFixedToContainerByRenderObject(const RenderLayer* layer) const

This function name is kinda hard to parse. Maybe fixedToContainerByRenderObject? The description doesn&apos;t seem to match the implementation since we can also return the layer itself (so the RenderObject won&apos;t be between the layer and its nearest compositor ancestor).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>851494</commentid>
    <comment_count>6</comment_count>
    <who name="Tien-Ren Chen">trchen</who>
    <bug_when>2013-03-08 14:00:11 -0800</bug_when>
    <thetext>(In reply to comment #5)
&gt; (From update of attachment 191901 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=191901&amp;action=review
&gt; 
&gt; &gt; Source/Platform/chromium/public/WebLayer.h:199
&gt; &gt; +    virtual void setFixedToRightEdge(bool) { }
&gt; 
&gt; I wonder if we should have something more like the bitfields in the ViewportConstraints instead of this? That&apos;ll also cover cases where a layer is fixed to both edges on the same axis, in which case we may want to do something special in the compositor.

I think you&apos;re right. I was too lazy to write a WebViewportConstraint. Will do.

&gt; &gt; Source/WebCore/rendering/RenderLayerCompositor.cpp:1921
&gt; &gt; +RenderObject* RenderLayerCompositor::requiresFixedToContainerByRenderObject(const RenderLayer* layer) const
&gt; 
&gt; This function name is kinda hard to parse. Maybe fixedToContainerByRenderObject? The description doesn&apos;t seem to match the implementation since we can also return the layer itself (so the RenderObject won&apos;t be between the layer and its nearest compositor ancestor).

Yep... The range is actually [this, compositing ancestor)
The semantic is to return false if the layer doesn&apos;t need fixed position compensation, and true if it does, and if true also returns which RenderObject caused it.
I&apos;ll change the function name and refine the comments.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>855360</commentid>
    <comment_count>7</comment_count>
      <attachid>191901</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2013-03-14 11:33:05 -0700</bug_when>
    <thetext>Comment on attachment 191901
Patch

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

Looks like you have a few refinements you plan to do with this patch.

&gt;&gt;&gt; Source/Platform/chromium/public/WebLayer.h:199
&gt;&gt;&gt; +    virtual void setFixedToRightEdge(bool) { }
&gt;&gt; 
&gt;&gt; I wonder if we should have something more like the bitfields in the ViewportConstraints instead of this? That&apos;ll also cover cases where a layer is fixed to both edges on the same axis, in which case we may want to do something special in the compositor.
&gt; 
&gt; I think you&apos;re right. I was too lazy to write a WebViewportConstraint. Will do.

Still waiting for this.

Also, do we need right-anchored right now?  I think the immediate need is just for bottom-anchored, isn&apos;t it?  We can add right-anchored later.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>855364</commentid>
    <comment_count>8</comment_count>
    <who name="Alexandre Elias">aelias</who>
    <bug_when>2013-03-14 11:36:24 -0700</bug_when>
    <thetext>Right-anchored is also solving a problem in that it will avoid jumping around on pinch zoom for those elements.  Given that the logic is identical, why not do both?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>855426</commentid>
    <comment_count>9</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2013-03-14 12:36:36 -0700</bug_when>
    <thetext>Ah, ok.  That&apos;s fine.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>856386</commentid>
    <comment_count>10</comment_count>
      <attachid>193395</attachid>
    <who name="Tien-Ren Chen">trchen</who>
    <bug_when>2013-03-15 16:17:19 -0700</bug_when>
    <thetext>Created attachment 193395
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>856388</commentid>
    <comment_count>11</comment_count>
    <who name="Tien-Ren Chen">trchen</who>
    <bug_when>2013-03-15 16:23:22 -0700</bug_when>
    <thetext>Changes from last patch:
* Moved RenderLayerCompositor::fixedPositionedByAncestor to ScrollingCoordinatorChromium. It is a chromium-specific concept that only makes sense to our implementation.
* Added WebLayerPositionConstraint, deprecate fixedToContainerLayer flag. The structure can be extended to support sticky elements at a later time.

Why not reuse WebCore::ViewportConstraints? Because our approach to fixed position layer is significantly different so there are too many parameters that are useless to us.

Chromium patch coming soon.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>856496</commentid>
    <comment_count>12</comment_count>
      <attachid>193420</attachid>
    <who name="Tien-Ren Chen">trchen</who>
    <bug_when>2013-03-15 21:10:14 -0700</bug_when>
    <thetext>Created attachment 193420
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>856985</commentid>
    <comment_count>13</comment_count>
      <attachid>193420</attachid>
    <who name="Sami Kyöstilä">skyostil</who>
    <bug_when>2013-03-18 04:32:10 -0700</bug_when>
    <thetext>Comment on attachment 193420
Patch

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

&gt; Source/WebCore/ChangeLog:11
&gt; +        No new tests. Can&apos;t test until chromium patch landed.

Presumably the basic fixed position layer functionality is covered by existing layout tests, right? We just don&apos;t have tests for bottom/right fixed things yet.

&gt; Source/WebCore/page/scrolling/chromium/ScrollingCoordinatorChromium.cpp:239
&gt; +static void clearPositionConstraintExcept(GraphicsLayer* layer, GraphicsLayer* except)

Bikeshed: clearPositionConstraintExceptForLayer()?

&gt; Source/WebCore/page/scrolling/chromium/ScrollingCoordinatorChromium.cpp:267
&gt; +    // Avoid unnecessary commits

I&apos;m not sure I get this. What does clearing the position constraint have to do with commits?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>857417</commentid>
    <comment_count>14</comment_count>
    <who name="Tien-Ren Chen">trchen</who>
    <bug_when>2013-03-18 12:26:36 -0700</bug_when>
    <thetext>(In reply to comment #13)
&gt; (From update of attachment 193420 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=193420&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/ChangeLog:11
&gt; &gt; +        No new tests. Can&apos;t test until chromium patch landed.
&gt; 
&gt; Presumably the basic fixed position layer functionality is covered by existing layout tests, right? We just don&apos;t have tests for bottom/right fixed things yet.

Yes exactly. And I have adjusted the stubs so we migrate to the new API without breaking existing tests.

&gt; &gt; Source/WebCore/page/scrolling/chromium/ScrollingCoordinatorChromium.cpp:239
&gt; &gt; +static void clearPositionConstraintExcept(GraphicsLayer* layer, GraphicsLayer* except)
&gt; 
&gt; Bikeshed: clearPositionConstraintExceptForLayer()?

SGTM. Will do.

&gt; &gt; Source/WebCore/page/scrolling/chromium/ScrollingCoordinatorChromium.cpp:267
&gt; &gt; +    // Avoid unnecessary commits
&gt; 
&gt; I&apos;m not sure I get this. What does clearing the position constraint have to do with commits?

Modification to position constraints will need a commit, and the call might be made on layers all the time, even if the layer didn&apos;t change its positioning. 

Consider the situation that a layer is fixed-positioned, and a call to update position constraint has been made. If we just blindly clear all position constraint and set it again on the main layer, a commit will be triggered. That is why we need the ExceptForLayer thing, so we apply the updated constraint on the main layer in one shot, and an early exit can be made.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>857454</commentid>
    <comment_count>15</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2013-03-18 13:08:18 -0700</bug_when>
    <thetext>I don&apos;t understand the bug title. You&apos;re not implementing pinch-zoom, you&apos;re altering the behavior when zooming, right?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>857694</commentid>
    <comment_count>16</comment_count>
      <attachid>193683</attachid>
    <who name="Tien-Ren Chen">trchen</who>
    <bug_when>2013-03-18 16:21:00 -0700</bug_when>
    <thetext>Created attachment 193683
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>857696</commentid>
    <comment_count>17</comment_count>
    <who name="Tien-Ren Chen">trchen</who>
    <bug_when>2013-03-18 16:21:42 -0700</bug_when>
    <thetext>Changes:
* Renamed bug title
* Renamed the function skyostil@ mentioned</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>858455</commentid>
    <comment_count>18</comment_count>
      <attachid>193683</attachid>
    <who name="Sami Kyöstilä">skyostil</who>
    <bug_when>2013-03-19 10:47:12 -0700</bug_when>
    <thetext>Comment on attachment 193683
Patch

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

&gt; Source/WebCore/page/scrolling/chromium/ScrollingCoordinatorChromium.cpp:241
&gt; +    if (layer &amp;&amp; layer != except &amp;&amp; scrollingWebLayerForGraphicsLayer(layer))

I think &quot;scrollingWebLayerForGraphicsLayer&quot; is a pretty misleading name (also true before your patch) because the returned layer may or may not have anything to do with scrolling -- it&apos;s just the platformLayer() we&apos;re interested in here and below. I don&apos;t think you should necessarily fix it in your patch, though.

&gt; Source/WebCore/page/scrolling/chromium/ScrollingCoordinatorChromium.cpp:267
&gt; +    // Avoid unnecessary commits

Thanks for explaining this. I&apos;m on the fence about whether a simple if (backing-&gt;ancestorClippingLayer() != mainLayer) { ... } would be clearer but either way is fine by me.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>858687</commentid>
    <comment_count>19</comment_count>
    <who name="Tien-Ren Chen">trchen</who>
    <bug_when>2013-03-19 13:31:31 -0700</bug_when>
    <thetext>(In reply to comment #18)
&gt; (From update of attachment 193683 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=193683&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/page/scrolling/chromium/ScrollingCoordinatorChromium.cpp:241
&gt; &gt; +    if (layer &amp;&amp; layer != except &amp;&amp; scrollingWebLayerForGraphicsLayer(layer))
&gt; 
&gt; I think &quot;scrollingWebLayerForGraphicsLayer&quot; is a pretty misleading name (also true before your patch) because the returned layer may or may not have anything to do with scrolling -- it&apos;s just the platformLayer() we&apos;re interested in here and below. I don&apos;t think you should necessarily fix it in your patch, though.

Can&apos;t agree with you more! I&apos;m always wondering why we need a function for such simple access. I suggest we just replace it with -&gt;platformLayer(), if everybody agree.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>859218</commentid>
    <comment_count>20</comment_count>
    <who name="Sami Kyöstilä">skyostil</who>
    <bug_when>2013-03-20 03:23:07 -0700</bug_when>
    <thetext>(In reply to comment #19)
&gt; Can&apos;t agree with you more! I&apos;m always wondering why we need a function for such simple access. I suggest we just replace it with -&gt;platformLayer(), if everybody agree.

Sounds good to me.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>860826</commentid>
    <comment_count>21</comment_count>
    <who name="Tien-Ren Chen">trchen</who>
    <bug_when>2013-03-21 16:08:31 -0700</bug_when>
    <thetext>Hello reviewers, do you want me to revise anything before starting to review this patch? Thanks!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>865121</commentid>
    <comment_count>22</comment_count>
    <who name="Tien-Ren Chen">trchen</who>
    <bug_when>2013-03-27 20:06:27 -0700</bug_when>
    <thetext>Reminder: this patch needs to be landed before the chromium counterpart.
Please review this patch first when you got the chance to review the chromium patch: https://codereview.chromium.org/12552004/
I will add the WebKit-side tests when the chromium patch gets landed. Thanks!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>865497</commentid>
    <comment_count>23</comment_count>
    <who name="Sami Kyöstilä">skyostil</who>
    <bug_when>2013-03-28 07:36:28 -0700</bug_when>
    <thetext>I think this patch looks good to go.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>865734</commentid>
    <comment_count>24</comment_count>
      <attachid>193683</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2013-03-28 12:58:57 -0700</bug_when>
    <thetext>Comment on attachment 193683
Patch

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

D&apos;oh, I had comments I forgot to publish :(

&gt; Source/Platform/chromium/public/WebLayer.h:34
&gt; +// Remove after chromium patch landed
&gt; +#include &quot;WebLayerPositionConstraint.h&quot;

Not sure I understand this constraint - what chromium patch needs to land to remove the need for this include?

&gt; Source/Platform/chromium/public/WebLayer.h:199
&gt; +    // Deprecated, remove after chromium patch landed
&gt; +    virtual void setFixedToContainerLayer(bool) { }
&gt; +    virtual bool fixedToContainerLayer() const { return positionConstraint().isFixedPosition; }

Our typical convention for this is to move the deprecated things to the bottom of the file under a big comment saying DEPRECATED.  Having it inline like this makes it harder to see

&gt; Source/Platform/chromium/public/WebLayer.h:200
&gt; +    // Use this instead, remove stub after chromium patch landed

Please document what these functions actually do first, then add another comment on its own line saying something like // FIXME: Make pure virtual after implementation lands.

&gt; Source/Platform/chromium/public/WebLayer.h:202
&gt; +    virtual WebLayerPositionConstraint positionConstraint() const { return WebLayerPositionConstraint(); }

Why do you need the getter?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>865757</commentid>
    <comment_count>25</comment_count>
    <who name="Tien-Ren Chen">trchen</who>
    <bug_when>2013-03-28 13:31:48 -0700</bug_when>
    <thetext>(In reply to comment #24)
&gt; (From update of attachment 193683 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=193683&amp;action=review
&gt; 
&gt; D&apos;oh, I had comments I forgot to publish :(
&gt; 
&gt; &gt; Source/Platform/chromium/public/WebLayer.h:34
&gt; &gt; +// Remove after chromium patch landed
&gt; &gt; +#include &quot;WebLayerPositionConstraint.h&quot;
&gt; 
&gt; Not sure I understand this constraint - what chromium patch needs to land to remove the need for this include?

The temporary stub below needs WebLayerPositionConstraint prototype. Let me change the comment to
&quot;// Remove after making setPositionConstraint() pure virtual.&quot;

&gt; &gt; Source/Platform/chromium/public/WebLayer.h:199
&gt; &gt; +    // Deprecated, remove after chromium patch landed
&gt; &gt; +    virtual void setFixedToContainerLayer(bool) { }
&gt; &gt; +    virtual bool fixedToContainerLayer() const { return positionConstraint().isFixedPosition; }
&gt; 
&gt; Our typical convention for this is to move the deprecated things to the bottom of the file under a big comment saying DEPRECATED.  Having it inline like this makes it harder to see

Got it.

&gt; &gt; Source/Platform/chromium/public/WebLayer.h:200
&gt; &gt; +    // Use this instead, remove stub after chromium patch landed
&gt; 
&gt; Please document what these functions actually do first, then add another comment on its own line saying something like // FIXME: Make pure virtual after implementation lands.

Got it.

&gt; &gt; Source/Platform/chromium/public/WebLayer.h:202
&gt; &gt; +    virtual WebLayerPositionConstraint positionConstraint() const { return WebLayerPositionConstraint(); }
&gt; 
&gt; Why do you need the getter?

For the unit tests. The migration plan as following:
As we land the Chromium counterpart, WebLayerImpl::fixedToContainerLayer() will be removed, so it turns to fallback implementation WebLayerImpl::fixedToContainerLayer(), which will query positionConstraint() as now Chromium-side implements the new methods. At last, we&apos;ll land another patch in WebKit that completely removes fixedToContainerLayer() and update tests.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>865767</commentid>
    <comment_count>26</comment_count>
      <attachid>195635</attachid>
    <who name="Tien-Ren Chen">trchen</who>
    <bug_when>2013-03-28 13:48:49 -0700</bug_when>
    <thetext>Created attachment 195635
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>865768</commentid>
    <comment_count>27</comment_count>
      <attachid>195635</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2013-03-28 13:54:57 -0700</bug_when>
    <thetext>Comment on attachment 195635
Patch

R=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>865820</commentid>
    <comment_count>28</comment_count>
      <attachid>195635</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-03-28 14:48:55 -0700</bug_when>
    <thetext>Comment on attachment 195635
Patch

Clearing flags on attachment: 195635

Committed r147163: &lt;http://trac.webkit.org/changeset/147163&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>865821</commentid>
    <comment_count>29</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-03-28 14:49:01 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>191899</attachid>
            <date>2013-03-06 19:36:23 -0800</date>
            <delta_ts>2013-03-06 20:01:39 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-111670-20130306193228.patch</filename>
            <type>text/plain</type>
            <size>11580</size>
            <attacher name="Tien-Ren Chen">trchen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ0NjE5CmRpZmYgLS1naXQgYS9Tb3VyY2UvUGxhdGZvcm0v
Q2hhbmdlTG9nIGIvU291cmNlL1BsYXRmb3JtL0NoYW5nZUxvZwppbmRleCBhNzc5YmFkYmFmZjAz
YWIxNjc2YjdiNjA5ODE1MDFmMzVjMjkyY2ZhLi42ZmZhNTBmNmYxNzA2NGUyNjBkNzMxZjAwODU3
NmRkOWY2MDA1Zjg4IDEwMDY0NAotLS0gYS9Tb3VyY2UvUGxhdGZvcm0vQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9QbGF0Zm9ybS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMCBAQAorMjAxMy0wMy0wNiAg
VGllbi1SZW4gQ2hlbiAgPHRyY2hlbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgSW1wbGVtZW50
IHBpbmNoIHpvb20gZm9yIGJvdHRvbS1yaWdodCBmaXhlZC1wb3NpdGlvbiBlbGVtZW50cworICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTExNjcwCisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIGZsYWdzIHRv
IGluZGljYXRlIHdoZXRoZXIgYSBmaXhlZC1wb3NpdGlvbiBsYXllciBpcyBhbmNob3JlZAorICAg
ICAgICB0byB0aGUgcmlnaHQvYm90dG9tIGVkZ2UgLgorCisgICAgICAgICogY2hyb21pdW0vcHVi
bGljL1dlYkxheWVyLmg6CisgICAgICAgIChXZWJMYXllcik6CisgICAgICAgIChXZWJLaXQ6Oldl
YkxheWVyOjpzZXRGaXhlZFRvUmlnaHRFZGdlKToKKyAgICAgICAgKFdlYktpdDo6V2ViTGF5ZXI6
OmZpeGVkVG9SaWdodEVkZ2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJMYXllcjo6c2V0Rml4ZWRU
b0JvdHRvbUVkZ2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJMYXllcjo6Zml4ZWRUb0JvdHRvbUVk
Z2UpOgorCiAyMDEzLTAyLTI2ICBaaGVueWFvIE1vICA8em1vQGdvb2dsZS5jb20+CiAKICAgICAg
ICAgRVhUX2RyYXdfYnVmZmVycyBuZWVkcyBpbXBsZW1lbnRhdGlvbgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IGEy
YTM0NDJhZWMwNWJiYmNjOWNmMzdkZGM2MmZjNTgwYzUzODExOGQuLjAxMzU2ODJlMWY0NGIwMWZi
NWY4N2E3NzBiNWUzZGU3NWEzMTlhOTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyOCBAQAorMjAx
My0wMy0wNiAgVGllbi1SZW4gQ2hlbiAgPHRyY2hlbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAg
SW1wbGVtZW50IHBpbmNoIHpvb20gZm9yIGJvdHRvbS1yaWdodCBmaXhlZC1wb3NpdGlvbiBlbGVt
ZW50cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTEx
NjcwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2hl
biBwcm9tb3RpbmcgYSBsYXllciBpbnRvIGZpeGVkLXBvc2l0aW9uIGxheWVyIHdlIHNob3VsZCBh
bHNvIHRlbGwKKyAgICAgICAgdGhlIGNvbXBvc2l0b3Igd2hpY2ggZWRnZSB0aGUgbGF5ZXIgaXMg
YW5jaG9yZWQgdG8uCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLiAoT09QUyEpIHdpbGwgYWRkIGEg
V2ViRnJhbWVUZXN0CisKKyAgICAgICAgKiBwYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdDb29yZGlu
YXRvci5oOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nQ29vcmRpbmF0b3I6OnNldExheWVy
SXNGaXhlZFRvQ29udGFpbmVyTGF5ZXIpOgorICAgICAgICAqIHBhZ2Uvc2Nyb2xsaW5nL2Nocm9t
aXVtL1Njcm9sbGluZ0Nvb3JkaW5hdG9yQ2hyb21pdW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6
U2Nyb2xsaW5nQ29vcmRpbmF0b3JDaHJvbWl1bTo6c2V0TGF5ZXJJc0ZpeGVkVG9Db250YWluZXJM
YXllcik6CisgICAgICAgICogcGFnZS9zY3JvbGxpbmcvY2hyb21pdW0vU2Nyb2xsaW5nQ29vcmRp
bmF0b3JDaHJvbWl1bS5oOgorICAgICAgICAoU2Nyb2xsaW5nQ29vcmRpbmF0b3JDaHJvbWl1bSk6
CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJMYXllckJhY2tpbmc6OnJlZ2lzdGVyU2Nyb2xsaW5nTGF5ZXJzKToKKyAg
ICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmNwcDoKKyAgICAgICAgKFdl
YkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXJDb21wb3NpdG9yOjpyZXF1aXJl
c0ZpeGVkVG9Db250YWluZXJCeVJlbmRlck9iamVjdCk6CisgICAgICAgICogcmVuZGVyaW5nL1Jl
bmRlckxheWVyQ29tcG9zaXRvci5oOgorCiAyMDEzLTAzLTA0ICBJbHlhIFRpa2hvbm92c2t5ICA8
bG9pc2xvQGNocm9taXVtLm9yZz4KIAogICAgICAgICBXZWIgSW5zcGVjdG9yOiBpbXBsZW1lbnQg
RmxhbWUgQ2hhcnQgZm9yIENQVSBwcm9maWxlci4KZGlmZiAtLWdpdCBhL1NvdXJjZS9QbGF0Zm9y
bS9jaHJvbWl1bS9wdWJsaWMvV2ViTGF5ZXIuaCBiL1NvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9w
dWJsaWMvV2ViTGF5ZXIuaAppbmRleCA5YmU3Mjg0YTMwMTUwNmQ5MmEyOWFiMTU3MzNlNjI0MWIz
Nzg2NjgyLi4zZDZjNjE5OWNlZGExOWQzYTc2NmJiZGZjM2QyZWQwYWEzMjI0Njc3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYkxheWVyLmgKKysrIGIvU291
cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJMYXllci5oCkBAIC0xOTUsNiArMTk1LDEz
IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgc2V0Rml4ZWRUb0NvbnRhaW5lckxheWVyKGJv
b2wpID0gMDsKICAgICB2aXJ0dWFsIGJvb2wgZml4ZWRUb0NvbnRhaW5lckxheWVyKCkgY29uc3Qg
PSAwOwogCisgICAgLy8gRklYTUU6IHJlbW92ZSB0aGUgc3R1YiBvbmNlIGNocm9taXVtIHNpZGUg
Y2hhbmdlIGdldHMgY29tbWl0dGVkCisgICAgdmlydHVhbCB2b2lkIHNldEZpeGVkVG9SaWdodEVk
Z2UoYm9vbCkgeyB9CisgICAgdmlydHVhbCBib29sIGZpeGVkVG9SaWdodEVkZ2UoKSBjb25zdCB7
IHJldHVybiBmYWxzZTsgfQorCisgICAgdmlydHVhbCB2b2lkIHNldEZpeGVkVG9Cb3R0b21FZGdl
KGJvb2wpIHsgfQorICAgIHZpcnR1YWwgYm9vbCBmaXhlZFRvQm90dG9tRWRnZSgpIGNvbnN0IHsg
cmV0dXJuIGZhbHNlOyB9CisKICAgICAvLyBUaGUgc2Nyb2xsIGNsaWVudCBpcyBub3RpZmllZCB3
aGVuIHRoZSBzY3JvbGwgcG9zaXRpb24gb2YgdGhlIFdlYkxheWVyCiAgICAgLy8gY2hhbmdlcy4g
T25seSBhIHNpbmdsZSBzY3JvbGwgY2xpZW50IGNhbiBiZSBzZXQgZm9yIGEgV2ViTGF5ZXIgYXQg
YSB0aW1lLgogICAgIC8vIFRoZSBXZWJMYXllciBkb2VzIG5vdCB0YWtlIG93bmVyc2hpcCBvZiB0
aGUgc2Nyb2xsIGNsaWVudCwgYW5kIGl0IGlzIHRoZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nQ29vcmRpbmF0b3IuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ0Nvb3JkaW5hdG9yLmgKaW5kZXggZDZjMzM1ZDI1MWUw
YWM3YjU3ZWFlY2YzMzcyZTExNzk3NmNiN2JhNC4uOGY1MjI5OTJlNjViOWVlNjA3ZTA1ZmQyZjI1
YzU0MWI3ZjhiMjgxZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcv
U2Nyb2xsaW5nQ29vcmRpbmF0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGlu
Zy9TY3JvbGxpbmdDb29yZGluYXRvci5oCkBAIC0xNTMsNyArMTUzLDcgQEAgcHVibGljOgogICAg
IHZpcnR1YWwgdm9pZCBzY3JvbGxhYmxlQXJlYVNjcm9sbExheWVyRGlkQ2hhbmdlKFNjcm9sbGFi
bGVBcmVhKikgeyB9CiAgICAgdmlydHVhbCB2b2lkIHNjcm9sbGFibGVBcmVhU2Nyb2xsYmFyTGF5
ZXJEaWRDaGFuZ2UoU2Nyb2xsYWJsZUFyZWEqLCBTY3JvbGxiYXJPcmllbnRhdGlvbikgeyB9CiAg
ICAgdmlydHVhbCB2b2lkIHNldExheWVySXNDb250YWluZXJGb3JGaXhlZFBvc2l0aW9uTGF5ZXJz
KEdyYXBoaWNzTGF5ZXIqLCBib29sKSB7IH0KLSAgICB2aXJ0dWFsIHZvaWQgc2V0TGF5ZXJJc0Zp
eGVkVG9Db250YWluZXJMYXllcihHcmFwaGljc0xheWVyKiwgYm9vbCkgeyB9CisgICAgdmlydHVh
bCB2b2lkIHNldExheWVySXNGaXhlZFRvQ29udGFpbmVyTGF5ZXIoR3JhcGhpY3NMYXllciosIGJv
b2wgZW5hYmxlLCBib29sIGZpeGVkVG9SaWdodEVkZ2UsIGJvb2wgZml4ZWRUb0JvdHRvbUVkZ2Up
IHsgfQogICAgIHZpcnR1YWwgdm9pZCB0b3VjaEV2ZW50VGFyZ2V0UmVjdHNEaWRDaGFuZ2UoY29u
c3QgRG9jdW1lbnQqKSB7IH0KIAogI2lmIEVOQUJMRShUT1VDSF9FVkVOVF9UUkFDS0lORykKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL2Nocm9taXVtL1Njcm9sbGlu
Z0Nvb3JkaW5hdG9yQ2hyb21pdW0uY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcv
Y2hyb21pdW0vU2Nyb2xsaW5nQ29vcmRpbmF0b3JDaHJvbWl1bS5jcHAKaW5kZXggMjU4YjE2Njkz
MWRhZmExYzdiY2E5Yjg2ZGNlMzQxZWRjMWU2MTM1MC4uZmUzNWY4NzQ0ZjE5ZWFmYjdlYTMzMjMz
ZjQyZmQ3NmQ1OWQxZWQ1YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxp
bmcvY2hyb21pdW0vU2Nyb2xsaW5nQ29vcmRpbmF0b3JDaHJvbWl1bS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvY2hyb21pdW0vU2Nyb2xsaW5nQ29vcmRpbmF0b3JDaHJv
bWl1bS5jcHAKQEAgLTIzMywxMCArMjMzLDEzIEBAIHZvaWQgU2Nyb2xsaW5nQ29vcmRpbmF0b3JD
aHJvbWl1bTo6c2V0TGF5ZXJJc0NvbnRhaW5lckZvckZpeGVkUG9zaXRpb25MYXllcnMoR3JhCiAg
ICAgICAgIHNjcm9sbGFibGVMYXllci0+c2V0SXNDb250YWluZXJGb3JGaXhlZFBvc2l0aW9uTGF5
ZXJzKGVuYWJsZSk7CiB9CiAKLXZvaWQgU2Nyb2xsaW5nQ29vcmRpbmF0b3JDaHJvbWl1bTo6c2V0
TGF5ZXJJc0ZpeGVkVG9Db250YWluZXJMYXllcihHcmFwaGljc0xheWVyKiBsYXllciwgYm9vbCBl
bmFibGUpCit2b2lkIFNjcm9sbGluZ0Nvb3JkaW5hdG9yQ2hyb21pdW06OnNldExheWVySXNGaXhl
ZFRvQ29udGFpbmVyTGF5ZXIoR3JhcGhpY3NMYXllciogbGF5ZXIsIGJvb2wgZW5hYmxlLCBib29s
IGZpeGVkVG9SaWdodEVkZ2UsIGJvb2wgZml4ZWRUb0JvdHRvbUVkZ2UpCiB7Ci0gICAgaWYgKFdl
YkxheWVyKiBzY3JvbGxhYmxlTGF5ZXIgPSBzY3JvbGxpbmdXZWJMYXllckZvckdyYXBoaWNzTGF5
ZXIobGF5ZXIpKQorICAgIGlmIChXZWJMYXllciogc2Nyb2xsYWJsZUxheWVyID0gc2Nyb2xsaW5n
V2ViTGF5ZXJGb3JHcmFwaGljc0xheWVyKGxheWVyKSkgewogICAgICAgICBzY3JvbGxhYmxlTGF5
ZXItPnNldEZpeGVkVG9Db250YWluZXJMYXllcihlbmFibGUpOworICAgICAgICBzY3JvbGxhYmxl
TGF5ZXItPnNldEZpeGVkVG9SaWdodEVkZ2UoZml4ZWRUb1JpZ2h0RWRnZSk7CisgICAgICAgIHNj
cm9sbGFibGVMYXllci0+c2V0Rml4ZWRUb0JvdHRvbUVkZ2UoZml4ZWRUb0JvdHRvbUVkZ2UpOwor
ICAgIH0KIH0KIAogdm9pZCBTY3JvbGxpbmdDb29yZGluYXRvckNocm9taXVtOjpzY3JvbGxhYmxl
QXJlYVNjcm9sbExheWVyRGlkQ2hhbmdlKFNjcm9sbGFibGVBcmVhKiBzY3JvbGxhYmxlQXJlYSkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL2Nocm9taXVtL1Njcm9s
bGluZ0Nvb3JkaW5hdG9yQ2hyb21pdW0uaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5n
L2Nocm9taXVtL1Njcm9sbGluZ0Nvb3JkaW5hdG9yQ2hyb21pdW0uaAppbmRleCBjMWMwMjlhMjJk
YjdkZDRiNzU2MTNhYmUwNDhlNDBiMjU4YWY2YTNiLi5iNzE4ZGFlNWM0MGQ0ZjIxZmQxZTViMzg4
MzFjNmI2NzdhZDUzNDcxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGlu
Zy9jaHJvbWl1bS9TY3JvbGxpbmdDb29yZGluYXRvckNocm9taXVtLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9zY3JvbGxpbmcvY2hyb21pdW0vU2Nyb2xsaW5nQ29vcmRpbmF0b3JDaHJvbWl1
bS5oCkBAIC01Myw3ICs1Myw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgc2V0TGF5ZXJJ
c0NvbnRhaW5lckZvckZpeGVkUG9zaXRpb25MYXllcnMoR3JhcGhpY3NMYXllciosIGJvb2wpOwog
CiAgICAgLy8gQXR0YWNoL2RldGFjaCBsYXllciBwb3NpdGlvbiB0byBhbmNlc3RvciBmaXhlZCBw
b3NpdGlvbiBjb250YWluZXIuCi0gICAgdmlydHVhbCB2b2lkIHNldExheWVySXNGaXhlZFRvQ29u
dGFpbmVyTGF5ZXIoR3JhcGhpY3NMYXllciosIGJvb2wpOworICAgIHZpcnR1YWwgdm9pZCBzZXRM
YXllcklzRml4ZWRUb0NvbnRhaW5lckxheWVyKEdyYXBoaWNzTGF5ZXIqLCBib29sIGVuYWJsZSwg
Ym9vbCBmaXhlZFRvUmlnaHRFZGdlLCBib29sIGZpeGVkVG9Cb3R0b21FZGdlKTsKIAogICAgIC8v
IFNob3VsZCBiZSBjYWxsZWQgd2hlbiBhIFNjcm9sbGFibGVBcmVhIGlzIGdldHRpbmcgZGVzdHJv
eWVkLgogICAgIHZpcnR1YWwgdm9pZCB3aWxsRGVzdHJveVNjcm9sbGFibGVBcmVhKFNjcm9sbGFi
bGVBcmVhKik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5
ZXJCYWNraW5nLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckJhY2tp
bmcuY3BwCmluZGV4IGE4MDUyZjNmYmVlOTIyNTNmODFkMzM4OTE5YTFlMzM0MDI3M2U3ZDAuLmY4
NjhiY2I4ZjI4YWU4OGFiNWQ0MTI1ZGFjMmYxZjk5ZTgwZmM1MDcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3BwCkBAIC04MzIsMTIgKzgzMiwx
NCBAQCB2b2lkIFJlbmRlckxheWVyQmFja2luZzo6cmVnaXN0ZXJTY3JvbGxpbmdMYXllcnMoKQog
ICAgIGNvbXBvc2l0b3IoKS0+dXBkYXRlVmlld3BvcnRDb25zdHJhaW50U3RhdHVzKG1fb3duaW5n
TGF5ZXIpOwogCiAgICAgLy8gRklYTUU6IGl0IHdvdWxkIGJlIG5pY2UgdG8gYXZvaWQgYWxsIHRo
aXMgd29yayBpZiB0aGUgcGxhdGZvcm0gZG9lc24ndCBpbXBsZW1lbnQgc2V0TGF5ZXJJc0ZpeGVk
VG9Db250YWluZXJMYXllcigpLgotICAgIGlmIChyZW5kZXJlcigpLT5zdHlsZSgpLT5wb3NpdGlv
bigpID09IEZpeGVkUG9zaXRpb24gfHwgY29tcG9zaXRvcigpLT5maXhlZFBvc2l0aW9uZWRCeUFu
Y2VzdG9yKG1fb3duaW5nTGF5ZXIpKQotICAgICAgICBzY3JvbGxpbmdDb29yZGluYXRvci0+c2V0
TGF5ZXJJc0ZpeGVkVG9Db250YWluZXJMYXllcihjaGlsZEZvclN1cGVybGF5ZXJzKCksIHRydWUp
OwotICAgIGVsc2UgeworICAgIGlmIChSZW5kZXJPYmplY3QqIGZpeGVkUG9zaXRpb25PYmplY3Qg
PSBjb21wb3NpdG9yKCktPnJlcXVpcmVzRml4ZWRUb0NvbnRhaW5lckJ5UmVuZGVyT2JqZWN0KG1f
b3duaW5nTGF5ZXIpKSB7CisgICAgICAgIGJvb2wgZml4ZWRUb1JpZ2h0ID0gIWZpeGVkUG9zaXRp
b25PYmplY3QtPnN0eWxlKCktPnJpZ2h0KCkuaXNBdXRvKCk7CisgICAgICAgIGJvb2wgZml4ZWRU
b0JvdHRvbSA9ICFmaXhlZFBvc2l0aW9uT2JqZWN0LT5zdHlsZSgpLT5ib3R0b20oKS5pc0F1dG8o
KTsKKyAgICAgICAgc2Nyb2xsaW5nQ29vcmRpbmF0b3ItPnNldExheWVySXNGaXhlZFRvQ29udGFp
bmVyTGF5ZXIoY2hpbGRGb3JTdXBlcmxheWVycygpLCB0cnVlLCBmaXhlZFRvUmlnaHQsIGZpeGVk
VG9Cb3R0b20pOworICAgIH0gZWxzZSB7CiAgICAgICAgIGlmIChtX2FuY2VzdG9yQ2xpcHBpbmdM
YXllcikKLSAgICAgICAgICAgIHNjcm9sbGluZ0Nvb3JkaW5hdG9yLT5zZXRMYXllcklzRml4ZWRU
b0NvbnRhaW5lckxheWVyKG1fYW5jZXN0b3JDbGlwcGluZ0xheWVyLmdldCgpLCBmYWxzZSk7Ci0g
ICAgICAgIHNjcm9sbGluZ0Nvb3JkaW5hdG9yLT5zZXRMYXllcklzRml4ZWRUb0NvbnRhaW5lckxh
eWVyKG1fZ3JhcGhpY3NMYXllci5nZXQoKSwgZmFsc2UpOworICAgICAgICAgICAgc2Nyb2xsaW5n
Q29vcmRpbmF0b3ItPnNldExheWVySXNGaXhlZFRvQ29udGFpbmVyTGF5ZXIobV9hbmNlc3RvckNs
aXBwaW5nTGF5ZXIuZ2V0KCksIGZhbHNlLCBmYWxzZSwgZmFsc2UpOworICAgICAgICBzY3JvbGxp
bmdDb29yZGluYXRvci0+c2V0TGF5ZXJJc0ZpeGVkVG9Db250YWluZXJMYXllcihtX2dyYXBoaWNz
TGF5ZXIuZ2V0KCksIGZhbHNlLCBmYWxzZSwgZmFsc2UpOwogICAgIH0KICAgICAvLyBQYWdlIHNj
YWxlIGlzIGFwcGxpZWQgYXMgYSB0cmFuc2Zvcm0gb24gdGhlIHJvb3QgcmVuZGVyIHZpZXcgbGF5
ZXIuIEJlY2F1c2UgdGhlIHNjcm9sbAogICAgIC8vIGxheWVyIGlzIGZ1cnRoZXIgdXAgaW4gdGhl
IGhpZXJhcmNoeSwgd2UgbmVlZCB0byBhdm9pZCBtYXJraW5nIHRoZSByb290IHJlbmRlciB2aWV3
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3Np
dG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckNvbXBvc2l0b3Iu
Y3BwCmluZGV4IDg5Y2Y4MmJiMTQxZjYyNjdhMjRiNjY3NGFkNTQ2OGIxNTQ0YjRhZTAuLjIzMGVk
ZDVmNjI5NzUxYjg3MzQ4MDc3Yzg0Y2U2NDc5ZTQ2MGJlYWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckNvbXBvc2l0b3IuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckNvbXBvc2l0b3IuY3BwCkBAIC0xOTE2LDI5ICsx
OTE2LDE5IEBAIGJvb2wgUmVuZGVyTGF5ZXJDb21wb3NpdG9yOjpjbGlwc0NvbXBvc2l0aW5nRGVz
Y2VuZGFudHMoY29uc3QgUmVuZGVyTGF5ZXIqIGxheWVyCiAgICAgcmV0dXJuIGxheWVyLT5oYXND
b21wb3NpdGluZ0Rlc2NlbmRhbnQoKSAmJiBsYXllci0+cmVuZGVyZXIoKS0+aGFzQ2xpcE9yT3Zl
cmZsb3dDbGlwKCk7CiB9CiAKLS8vIFJldHVybiB0cnVlIGlmIHRoZXJlIGlzIGFuIGFuY2VzdG9y
IGxheWVyIHRoYXQgaXMgZml4ZWQgcG9zaXRpb25lZCB0byB0aGUgdmlldy4KLS8vIE5vdGUgdGhh
dCBpZiB0aGUgYW5jZXN0b3IgaGFzIGEgc3RhY2tpbmcgY29udGV4dCBhbmQgaXMgZml4ZWQgcG9z
aXRpb24gdGhlbiB0aGlzIG1ldGhvZAotLy8gd2lsbCByZXR1cm4gZmFsc2UuCi1ib29sIFJlbmRl
ckxheWVyQ29tcG9zaXRvcjo6Zml4ZWRQb3NpdGlvbmVkQnlBbmNlc3Rvcihjb25zdCBSZW5kZXJM
YXllciogbGF5ZXIpIGNvbnN0CisvLyBSZXR1cm4gdGhlIGZpeGVkLXBvc2l0aW9uZWQgUmVuZGVy
T2JqZWN0IGluIGJldHdlZW4gYSBjb21wb3NpdGVkIGxheWVyIGFuZCBpdHMgbmVhcmVzdCBjb21w
b3NpdGVkIGFuY2VzdG9yLAorLy8gb3IgbnVsbCBpZiB0aGUgY29tcG9zaXRlZCBsYXllciBpcyBu
b3QgcmVzcG9uc2libGUgZm9yIGZpeGluZyBpdHMgcG9zaXRpb24gdG8gYSBmaXhlZC1wb3NpdGlv
biBjb250YWluZXIgbGF5ZXIuCitSZW5kZXJPYmplY3QqIFJlbmRlckxheWVyQ29tcG9zaXRvcjo6
cmVxdWlyZXNGaXhlZFRvQ29udGFpbmVyQnlSZW5kZXJPYmplY3QoY29uc3QgUmVuZGVyTGF5ZXIq
IGxheWVyKSBjb25zdAogewotICAgIGlmICghbGF5ZXItPmlzQ29tcG9zaXRlZCgpIHx8ICFsYXll
ci0+cGFyZW50KCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBBU1NFUlQobGF5ZXItPmlz
Q29tcG9zaXRlZCgpKTsKIAotICAgIGNvbnN0IFJlbmRlckxheWVyKiBjb21wb3NpdGluZ0FuY2Vz
dG9yID0gbGF5ZXItPmFuY2VzdG9yQ29tcG9zaXRpbmdMYXllcigpOwotICAgIGlmICghY29tcG9z
aXRpbmdBbmNlc3RvcikKLSAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGRvIHsKKyAgICAgICAg
aWYgKGxheWVyLT5yZW5kZXJlcigpLT5zdHlsZSgpLT5wb3NpdGlvbigpID09IEZpeGVkUG9zaXRp
b24pCisgICAgICAgICAgICByZXR1cm4gbGF5ZXItPnJlbmRlcmVyKCk7CiAKLSAgICBjb25zdCBS
ZW5kZXJMYXllciogY3VyciA9IGxheWVyOwotICAgIHdoaWxlIChjdXJyKSB7Ci0gICAgICAgIGNv
bnN0IFJlbmRlckxheWVyKiBuZXh0ID0gY3Vyci0+cGFyZW50KCk7Ci0gICAgICAgIGlmIChuZXh0
ID09IGNvbXBvc2l0aW5nQW5jZXN0b3IpCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAg
ICAgICAgaWYgKG5leHQgJiYgbmV4dC0+cmVuZGVyZXIoKS0+c3R5bGUoKS0+cG9zaXRpb24oKSA9
PSBGaXhlZFBvc2l0aW9uKQotICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgIGN1cnIg
PSBuZXh0OwotICAgIH0KLSAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIGxheWVyID0gbGF5ZXIt
PnBhcmVudCgpOworICAgIH0gd2hpbGUgKGxheWVyICYmICFsYXllci0+aXNDb21wb3NpdGVkKCkp
OworICAgIHJldHVybiAwOwogfQogCiBib29sIFJlbmRlckxheWVyQ29tcG9zaXRvcjo6cmVxdWly
ZXNDb21wb3NpdGluZ0ZvclNjcm9sbGFibGVGcmFtZSgpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmggYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmgKaW5kZXggMjkzYWI5ODg1M2Yz
NTFhYTY3ZTU3ZTViM2Y3NDhhMDgyMTg4OThmNi4uMmY1Y2MxMGVhMzY1NjQzODcxMmI4OGI2ZjAx
NjEzNmUyMzNhYTJlOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckxheWVyQ29tcG9zaXRvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJM
YXllckNvbXBvc2l0b3IuaApAQCAtMTU0LDggKzE1NCw5IEBAIHB1YmxpYzoKICAgICAvLyBXaGV0
aGVyIGxheWVyJ3MgYmFja2luZyBuZWVkcyBhIGdyYXBoaWNzIGxheWVyIHRvIGNsaXAgei1vcmRl
ciBjaGlsZHJlbiBvZiB0aGUgZ2l2ZW4gbGF5ZXIuCiAgICAgYm9vbCBjbGlwc0NvbXBvc2l0aW5n
RGVzY2VuZGFudHMoY29uc3QgUmVuZGVyTGF5ZXIqKSBjb25zdDsKIAotICAgIC8vIFdoZXRoZXIg
dGhlIGxheWVyIGlzIGZpeGVkIHBvc2l0aW9uZWQgdG8gdGhlIHZpZXcgYnkgYW4gYW5jZXN0b3Ig
bGF5ZXIuCi0gICAgYm9vbCBmaXhlZFBvc2l0aW9uZWRCeUFuY2VzdG9yKGNvbnN0IFJlbmRlckxh
eWVyKikgY29uc3Q7CisgICAgLy8gUmV0dXJuIHRoZSBmaXhlZC1wb3NpdGlvbmVkIFJlbmRlck9i
amVjdCBpbiBiZXR3ZWVuIHRoZSBSZW5kZXJMYXllciBhbmQgaXRzIG5lYXJlc3QgY29tcG9zaXRl
ZCBhbmNlc3RvciwKKyAgICAvLyBvciBudWxsIGlmIHRoZSBjb21wb3NpdGVkIGxheWVyIGlzIG5v
dCByZXNwb25zaWJsZSBmb3IgZml4aW5nIGl0cyBwb3NpdGlvbiB0byBhIGZpeGVkLXBvc2l0aW9u
IGNvbnRhaW5lciBsYXllci4KKyAgICBSZW5kZXJPYmplY3QqIHJlcXVpcmVzRml4ZWRUb0NvbnRh
aW5lckJ5UmVuZGVyT2JqZWN0KGNvbnN0IFJlbmRlckxheWVyKikgY29uc3Q7CiAKICAgICAvLyBX
aGV0aGVyIHRoZSBnaXZlbiBsYXllciBuZWVkcyBhbiBleHRyYSAnY29udGVudHMnIGxheWVyLgog
ICAgIGJvb2wgbmVlZHNDb250ZW50c0NvbXBvc2l0aW5nTGF5ZXIoY29uc3QgUmVuZGVyTGF5ZXIq
KSBjb25zdDsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>191901</attachid>
            <date>2013-03-06 20:01:45 -0800</date>
            <delta_ts>2013-03-15 16:17:15 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-111670-20130306195750.patch</filename>
            <type>text/plain</type>
            <size>11605</size>
            <attacher name="Tien-Ren Chen">trchen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ0NjE5CmRpZmYgLS1naXQgYS9Tb3VyY2UvUGxhdGZvcm0v
Q2hhbmdlTG9nIGIvU291cmNlL1BsYXRmb3JtL0NoYW5nZUxvZwppbmRleCBhNzc5YmFkYmFmZjAz
YWIxNjc2YjdiNjA5ODE1MDFmMzVjMjkyY2ZhLi42ZmZhNTBmNmYxNzA2NGUyNjBkNzMxZjAwODU3
NmRkOWY2MDA1Zjg4IDEwMDY0NAotLS0gYS9Tb3VyY2UvUGxhdGZvcm0vQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9QbGF0Zm9ybS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMCBAQAorMjAxMy0wMy0wNiAg
VGllbi1SZW4gQ2hlbiAgPHRyY2hlbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgSW1wbGVtZW50
IHBpbmNoIHpvb20gZm9yIGJvdHRvbS1yaWdodCBmaXhlZC1wb3NpdGlvbiBlbGVtZW50cworICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTExNjcwCisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIGZsYWdzIHRv
IGluZGljYXRlIHdoZXRoZXIgYSBmaXhlZC1wb3NpdGlvbiBsYXllciBpcyBhbmNob3JlZAorICAg
ICAgICB0byB0aGUgcmlnaHQvYm90dG9tIGVkZ2UgLgorCisgICAgICAgICogY2hyb21pdW0vcHVi
bGljL1dlYkxheWVyLmg6CisgICAgICAgIChXZWJMYXllcik6CisgICAgICAgIChXZWJLaXQ6Oldl
YkxheWVyOjpzZXRGaXhlZFRvUmlnaHRFZGdlKToKKyAgICAgICAgKFdlYktpdDo6V2ViTGF5ZXI6
OmZpeGVkVG9SaWdodEVkZ2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJMYXllcjo6c2V0Rml4ZWRU
b0JvdHRvbUVkZ2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJMYXllcjo6Zml4ZWRUb0JvdHRvbUVk
Z2UpOgorCiAyMDEzLTAyLTI2ICBaaGVueWFvIE1vICA8em1vQGdvb2dsZS5jb20+CiAKICAgICAg
ICAgRVhUX2RyYXdfYnVmZmVycyBuZWVkcyBpbXBsZW1lbnRhdGlvbgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IGEy
YTM0NDJhZWMwNWJiYmNjOWNmMzdkZGM2MmZjNTgwYzUzODExOGQuLjlhZGFiMDcwZmE0ZjIzZGY4
MmE2ZDUxMGE3Nzg4ZDNmOWE3NWNiNDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyOCBAQAorMjAx
My0wMy0wNiAgVGllbi1SZW4gQ2hlbiAgPHRyY2hlbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAg
SW1wbGVtZW50IHBpbmNoIHpvb20gZm9yIGJvdHRvbS1yaWdodCBmaXhlZC1wb3NpdGlvbiBlbGVt
ZW50cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTEx
NjcwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2hl
biBwcm9tb3RpbmcgYSBsYXllciBpbnRvIGZpeGVkLXBvc2l0aW9uIGxheWVyIHdlIHNob3VsZCBh
bHNvIHRlbGwKKyAgICAgICAgdGhlIGNvbXBvc2l0b3Igd2hpY2ggZWRnZSB0aGUgbGF5ZXIgaXMg
YW5jaG9yZWQgdG8uCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLiBDYW4ndCB0ZXN0IHVudGlsIGNo
cm9taXVtLXNpZGUgcGF0Y2ggbGFuZGVkLgorCisgICAgICAgICogcGFnZS9zY3JvbGxpbmcvU2Ny
b2xsaW5nQ29vcmRpbmF0b3IuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ0Nvb3JkaW5h
dG9yOjpzZXRMYXllcklzRml4ZWRUb0NvbnRhaW5lckxheWVyKToKKyAgICAgICAgKiBwYWdlL3Nj
cm9sbGluZy9jaHJvbWl1bS9TY3JvbGxpbmdDb29yZGluYXRvckNocm9taXVtLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlNjcm9sbGluZ0Nvb3JkaW5hdG9yQ2hyb21pdW06OnNldExheWVySXNGaXhl
ZFRvQ29udGFpbmVyTGF5ZXIpOgorICAgICAgICAqIHBhZ2Uvc2Nyb2xsaW5nL2Nocm9taXVtL1Nj
cm9sbGluZ0Nvb3JkaW5hdG9yQ2hyb21pdW0uaDoKKyAgICAgICAgKFNjcm9sbGluZ0Nvb3JkaW5h
dG9yQ2hyb21pdW0pOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXJCYWNraW5nOjpyZWdpc3RlclNjcm9sbGlu
Z0xheWVycyk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5jcHA6
CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyQ29tcG9z
aXRvcjo6cmVxdWlyZXNGaXhlZFRvQ29udGFpbmVyQnlSZW5kZXJPYmplY3QpOgorICAgICAgICAq
IHJlbmRlcmluZy9SZW5kZXJMYXllckNvbXBvc2l0b3IuaDoKKwogMjAxMy0wMy0wNCAgSWx5YSBU
aWtob25vdnNreSAgPGxvaXNsb0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgV2ViIEluc3BlY3Rv
cjogaW1wbGVtZW50IEZsYW1lIENoYXJ0IGZvciBDUFUgcHJvZmlsZXIuCmRpZmYgLS1naXQgYS9T
b3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYkxheWVyLmggYi9Tb3VyY2UvUGxhdGZv
cm0vY2hyb21pdW0vcHVibGljL1dlYkxheWVyLmgKaW5kZXggOWJlNzI4NGEzMDE1MDZkOTJhMjlh
YjE1NzMzZTYyNDFiMzc4NjY4Mi4uM2Q2YzYxOTljZWRhMTlkM2E3NjZiYmRmYzNkMmVkMGFhMzIy
NDY3NyAxMDA2NDQKLS0tIGEvU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJMYXll
ci5oCisrKyBiL1NvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViTGF5ZXIuaApAQCAt
MTk1LDYgKzE5NSwxMyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHNldEZpeGVkVG9Db250
YWluZXJMYXllcihib29sKSA9IDA7CiAgICAgdmlydHVhbCBib29sIGZpeGVkVG9Db250YWluZXJM
YXllcigpIGNvbnN0ID0gMDsKIAorICAgIC8vIEZJWE1FOiByZW1vdmUgdGhlIHN0dWIgb25jZSBj
aHJvbWl1bSBzaWRlIGNoYW5nZSBnZXRzIGNvbW1pdHRlZAorICAgIHZpcnR1YWwgdm9pZCBzZXRG
aXhlZFRvUmlnaHRFZGdlKGJvb2wpIHsgfQorICAgIHZpcnR1YWwgYm9vbCBmaXhlZFRvUmlnaHRF
ZGdlKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KKworICAgIHZpcnR1YWwgdm9pZCBzZXRGaXhl
ZFRvQm90dG9tRWRnZShib29sKSB7IH0KKyAgICB2aXJ0dWFsIGJvb2wgZml4ZWRUb0JvdHRvbUVk
Z2UoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQorCiAgICAgLy8gVGhlIHNjcm9sbCBjbGllbnQg
aXMgbm90aWZpZWQgd2hlbiB0aGUgc2Nyb2xsIHBvc2l0aW9uIG9mIHRoZSBXZWJMYXllcgogICAg
IC8vIGNoYW5nZXMuIE9ubHkgYSBzaW5nbGUgc2Nyb2xsIGNsaWVudCBjYW4gYmUgc2V0IGZvciBh
IFdlYkxheWVyIGF0IGEgdGltZS4KICAgICAvLyBUaGUgV2ViTGF5ZXIgZG9lcyBub3QgdGFrZSBv
d25lcnNoaXAgb2YgdGhlIHNjcm9sbCBjbGllbnQsIGFuZCBpdCBpcyB0aGUKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ0Nvb3JkaW5hdG9yLmggYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdDb29yZGluYXRvci5oCmluZGV4
IGQ2YzMzNWQyNTFlMGFjN2I1N2VhZWNmMzM3MmUxMTc5NzZjYjdiYTQuLjJhM2E1NzU2YTFhMDM2
NDRlOTNmZjcyOWEwNDA4NmFkMmU0NzAzNGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bh
Z2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ0Nvb3JkaW5hdG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nQ29vcmRpbmF0b3IuaApAQCAtMTUzLDcgKzE1Myw3IEBA
IHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgc2Nyb2xsYWJsZUFyZWFTY3JvbGxMYXllckRpZENo
YW5nZShTY3JvbGxhYmxlQXJlYSopIHsgfQogICAgIHZpcnR1YWwgdm9pZCBzY3JvbGxhYmxlQXJl
YVNjcm9sbGJhckxheWVyRGlkQ2hhbmdlKFNjcm9sbGFibGVBcmVhKiwgU2Nyb2xsYmFyT3JpZW50
YXRpb24pIHsgfQogICAgIHZpcnR1YWwgdm9pZCBzZXRMYXllcklzQ29udGFpbmVyRm9yRml4ZWRQ
b3NpdGlvbkxheWVycyhHcmFwaGljc0xheWVyKiwgYm9vbCkgeyB9Ci0gICAgdmlydHVhbCB2b2lk
IHNldExheWVySXNGaXhlZFRvQ29udGFpbmVyTGF5ZXIoR3JhcGhpY3NMYXllciosIGJvb2wpIHsg
fQorICAgIHZpcnR1YWwgdm9pZCBzZXRMYXllcklzRml4ZWRUb0NvbnRhaW5lckxheWVyKEdyYXBo
aWNzTGF5ZXIqLCBib29sIC8qZW5hYmxlKi8sIGJvb2wgLypmaXhlZFRvUmlnaHRFZGdlKi8sIGJv
b2wgLypmaXhlZFRvQm90dG9tRWRnZSovKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgdG91Y2hFdmVu
dFRhcmdldFJlY3RzRGlkQ2hhbmdlKGNvbnN0IERvY3VtZW50KikgeyB9CiAKICNpZiBFTkFCTEUo
VE9VQ0hfRVZFTlRfVFJBQ0tJTkcpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Nj
cm9sbGluZy9jaHJvbWl1bS9TY3JvbGxpbmdDb29yZGluYXRvckNocm9taXVtLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL2Nocm9taXVtL1Njcm9sbGluZ0Nvb3JkaW5hdG9yQ2hy
b21pdW0uY3BwCmluZGV4IDI1OGIxNjY5MzFkYWZhMWM3YmNhOWI4NmRjZTM0MWVkYzFlNjEzNTAu
LmZlMzVmODc0NGYxOWVhZmI3ZWEzMzIzM2Y0MmZkNzZkNTlkMWVkNWEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL2Nocm9taXVtL1Njcm9sbGluZ0Nvb3JkaW5hdG9y
Q2hyb21pdW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL2Nocm9taXVt
L1Njcm9sbGluZ0Nvb3JkaW5hdG9yQ2hyb21pdW0uY3BwCkBAIC0yMzMsMTAgKzIzMywxMyBAQCB2
b2lkIFNjcm9sbGluZ0Nvb3JkaW5hdG9yQ2hyb21pdW06OnNldExheWVySXNDb250YWluZXJGb3JG
aXhlZFBvc2l0aW9uTGF5ZXJzKEdyYQogICAgICAgICBzY3JvbGxhYmxlTGF5ZXItPnNldElzQ29u
dGFpbmVyRm9yRml4ZWRQb3NpdGlvbkxheWVycyhlbmFibGUpOwogfQogCi12b2lkIFNjcm9sbGlu
Z0Nvb3JkaW5hdG9yQ2hyb21pdW06OnNldExheWVySXNGaXhlZFRvQ29udGFpbmVyTGF5ZXIoR3Jh
cGhpY3NMYXllciogbGF5ZXIsIGJvb2wgZW5hYmxlKQordm9pZCBTY3JvbGxpbmdDb29yZGluYXRv
ckNocm9taXVtOjpzZXRMYXllcklzRml4ZWRUb0NvbnRhaW5lckxheWVyKEdyYXBoaWNzTGF5ZXIq
IGxheWVyLCBib29sIGVuYWJsZSwgYm9vbCBmaXhlZFRvUmlnaHRFZGdlLCBib29sIGZpeGVkVG9C
b3R0b21FZGdlKQogewotICAgIGlmIChXZWJMYXllciogc2Nyb2xsYWJsZUxheWVyID0gc2Nyb2xs
aW5nV2ViTGF5ZXJGb3JHcmFwaGljc0xheWVyKGxheWVyKSkKKyAgICBpZiAoV2ViTGF5ZXIqIHNj
cm9sbGFibGVMYXllciA9IHNjcm9sbGluZ1dlYkxheWVyRm9yR3JhcGhpY3NMYXllcihsYXllcikp
IHsKICAgICAgICAgc2Nyb2xsYWJsZUxheWVyLT5zZXRGaXhlZFRvQ29udGFpbmVyTGF5ZXIoZW5h
YmxlKTsKKyAgICAgICAgc2Nyb2xsYWJsZUxheWVyLT5zZXRGaXhlZFRvUmlnaHRFZGdlKGZpeGVk
VG9SaWdodEVkZ2UpOworICAgICAgICBzY3JvbGxhYmxlTGF5ZXItPnNldEZpeGVkVG9Cb3R0b21F
ZGdlKGZpeGVkVG9Cb3R0b21FZGdlKTsKKyAgICB9CiB9CiAKIHZvaWQgU2Nyb2xsaW5nQ29vcmRp
bmF0b3JDaHJvbWl1bTo6c2Nyb2xsYWJsZUFyZWFTY3JvbGxMYXllckRpZENoYW5nZShTY3JvbGxh
YmxlQXJlYSogc2Nyb2xsYWJsZUFyZWEpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L3Njcm9sbGluZy9jaHJvbWl1bS9TY3JvbGxpbmdDb29yZGluYXRvckNocm9taXVtLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9jaHJvbWl1bS9TY3JvbGxpbmdDb29yZGluYXRvckNo
cm9taXVtLmgKaW5kZXggYzFjMDI5YTIyZGI3ZGQ0Yjc1NjEzYWJlMDQ4ZTQwYjI1OGFmNmEzYi4u
YjcxOGRhZTVjNDBkNGYyMWZkMWU1YjM4ODMxYzZiNjc3YWQ1MzQ3MSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvY2hyb21pdW0vU2Nyb2xsaW5nQ29vcmRpbmF0b3JD
aHJvbWl1bS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL2Nocm9taXVtL1Nj
cm9sbGluZ0Nvb3JkaW5hdG9yQ2hyb21pdW0uaApAQCAtNTMsNyArNTMsNyBAQCBwdWJsaWM6CiAg
ICAgdmlydHVhbCB2b2lkIHNldExheWVySXNDb250YWluZXJGb3JGaXhlZFBvc2l0aW9uTGF5ZXJz
KEdyYXBoaWNzTGF5ZXIqLCBib29sKTsKIAogICAgIC8vIEF0dGFjaC9kZXRhY2ggbGF5ZXIgcG9z
aXRpb24gdG8gYW5jZXN0b3IgZml4ZWQgcG9zaXRpb24gY29udGFpbmVyLgotICAgIHZpcnR1YWwg
dm9pZCBzZXRMYXllcklzRml4ZWRUb0NvbnRhaW5lckxheWVyKEdyYXBoaWNzTGF5ZXIqLCBib29s
KTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0TGF5ZXJJc0ZpeGVkVG9Db250YWluZXJMYXllcihHcmFw
aGljc0xheWVyKiwgYm9vbCBlbmFibGUsIGJvb2wgZml4ZWRUb1JpZ2h0RWRnZSwgYm9vbCBmaXhl
ZFRvQm90dG9tRWRnZSk7CiAKICAgICAvLyBTaG91bGQgYmUgY2FsbGVkIHdoZW4gYSBTY3JvbGxh
YmxlQXJlYSBpcyBnZXR0aW5nIGRlc3Ryb3llZC4KICAgICB2aXJ0dWFsIHZvaWQgd2lsbERlc3Ry
b3lTY3JvbGxhYmxlQXJlYShTY3JvbGxhYmxlQXJlYSopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcAppbmRleCBhODA1MmYzZmJlZTkyMjUzZjgx
ZDMzODkxOWExZTMzNDAyNzNlN2QwLi5mODY4YmNiOGYyOGFlODhhYjVkNDEyNWRhYzJmMWY5OWU4
MGZjNTA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJC
YWNraW5nLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNr
aW5nLmNwcApAQCAtODMyLDEyICs4MzIsMTQgQEAgdm9pZCBSZW5kZXJMYXllckJhY2tpbmc6OnJl
Z2lzdGVyU2Nyb2xsaW5nTGF5ZXJzKCkKICAgICBjb21wb3NpdG9yKCktPnVwZGF0ZVZpZXdwb3J0
Q29uc3RyYWludFN0YXR1cyhtX293bmluZ0xheWVyKTsKIAogICAgIC8vIEZJWE1FOiBpdCB3b3Vs
ZCBiZSBuaWNlIHRvIGF2b2lkIGFsbCB0aGlzIHdvcmsgaWYgdGhlIHBsYXRmb3JtIGRvZXNuJ3Qg
aW1wbGVtZW50IHNldExheWVySXNGaXhlZFRvQ29udGFpbmVyTGF5ZXIoKS4KLSAgICBpZiAocmVu
ZGVyZXIoKS0+c3R5bGUoKS0+cG9zaXRpb24oKSA9PSBGaXhlZFBvc2l0aW9uIHx8IGNvbXBvc2l0
b3IoKS0+Zml4ZWRQb3NpdGlvbmVkQnlBbmNlc3RvcihtX293bmluZ0xheWVyKSkKLSAgICAgICAg
c2Nyb2xsaW5nQ29vcmRpbmF0b3ItPnNldExheWVySXNGaXhlZFRvQ29udGFpbmVyTGF5ZXIoY2hp
bGRGb3JTdXBlcmxheWVycygpLCB0cnVlKTsKLSAgICBlbHNlIHsKKyAgICBpZiAoUmVuZGVyT2Jq
ZWN0KiBmaXhlZFBvc2l0aW9uT2JqZWN0ID0gY29tcG9zaXRvcigpLT5yZXF1aXJlc0ZpeGVkVG9D
b250YWluZXJCeVJlbmRlck9iamVjdChtX293bmluZ0xheWVyKSkgeworICAgICAgICBib29sIGZp
eGVkVG9SaWdodCA9ICFmaXhlZFBvc2l0aW9uT2JqZWN0LT5zdHlsZSgpLT5yaWdodCgpLmlzQXV0
bygpOworICAgICAgICBib29sIGZpeGVkVG9Cb3R0b20gPSAhZml4ZWRQb3NpdGlvbk9iamVjdC0+
c3R5bGUoKS0+Ym90dG9tKCkuaXNBdXRvKCk7CisgICAgICAgIHNjcm9sbGluZ0Nvb3JkaW5hdG9y
LT5zZXRMYXllcklzRml4ZWRUb0NvbnRhaW5lckxheWVyKGNoaWxkRm9yU3VwZXJsYXllcnMoKSwg
dHJ1ZSwgZml4ZWRUb1JpZ2h0LCBmaXhlZFRvQm90dG9tKTsKKyAgICB9IGVsc2UgewogICAgICAg
ICBpZiAobV9hbmNlc3RvckNsaXBwaW5nTGF5ZXIpCi0gICAgICAgICAgICBzY3JvbGxpbmdDb29y
ZGluYXRvci0+c2V0TGF5ZXJJc0ZpeGVkVG9Db250YWluZXJMYXllcihtX2FuY2VzdG9yQ2xpcHBp
bmdMYXllci5nZXQoKSwgZmFsc2UpOwotICAgICAgICBzY3JvbGxpbmdDb29yZGluYXRvci0+c2V0
TGF5ZXJJc0ZpeGVkVG9Db250YWluZXJMYXllcihtX2dyYXBoaWNzTGF5ZXIuZ2V0KCksIGZhbHNl
KTsKKyAgICAgICAgICAgIHNjcm9sbGluZ0Nvb3JkaW5hdG9yLT5zZXRMYXllcklzRml4ZWRUb0Nv
bnRhaW5lckxheWVyKG1fYW5jZXN0b3JDbGlwcGluZ0xheWVyLmdldCgpLCBmYWxzZSwgZmFsc2Us
IGZhbHNlKTsKKyAgICAgICAgc2Nyb2xsaW5nQ29vcmRpbmF0b3ItPnNldExheWVySXNGaXhlZFRv
Q29udGFpbmVyTGF5ZXIobV9ncmFwaGljc0xheWVyLmdldCgpLCBmYWxzZSwgZmFsc2UsIGZhbHNl
KTsKICAgICB9CiAgICAgLy8gUGFnZSBzY2FsZSBpcyBhcHBsaWVkIGFzIGEgdHJhbnNmb3JtIG9u
IHRoZSByb290IHJlbmRlciB2aWV3IGxheWVyLiBCZWNhdXNlIHRoZSBzY3JvbGwKICAgICAvLyBs
YXllciBpcyBmdXJ0aGVyIHVwIGluIHRoZSBoaWVyYXJjaHksIHdlIG5lZWQgdG8gYXZvaWQgbWFy
a2luZyB0aGUgcm9vdCByZW5kZXIgdmlldwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmNwcAppbmRleCA4OWNmODJiYjE0MWY2MjY3YTI0YjY2
NzRhZDU0NjhiMTU0NGI0YWUwLi4yMzBlZGQ1ZjYyOTc1MWI4NzM0ODA3N2M4NGNlNjQ3OWU0NjBi
ZWFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21w
b3NpdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21w
b3NpdG9yLmNwcApAQCAtMTkxNiwyOSArMTkxNiwxOSBAQCBib29sIFJlbmRlckxheWVyQ29tcG9z
aXRvcjo6Y2xpcHNDb21wb3NpdGluZ0Rlc2NlbmRhbnRzKGNvbnN0IFJlbmRlckxheWVyKiBsYXll
cgogICAgIHJldHVybiBsYXllci0+aGFzQ29tcG9zaXRpbmdEZXNjZW5kYW50KCkgJiYgbGF5ZXIt
PnJlbmRlcmVyKCktPmhhc0NsaXBPck92ZXJmbG93Q2xpcCgpOwogfQogCi0vLyBSZXR1cm4gdHJ1
ZSBpZiB0aGVyZSBpcyBhbiBhbmNlc3RvciBsYXllciB0aGF0IGlzIGZpeGVkIHBvc2l0aW9uZWQg
dG8gdGhlIHZpZXcuCi0vLyBOb3RlIHRoYXQgaWYgdGhlIGFuY2VzdG9yIGhhcyBhIHN0YWNraW5n
IGNvbnRleHQgYW5kIGlzIGZpeGVkIHBvc2l0aW9uIHRoZW4gdGhpcyBtZXRob2QKLS8vIHdpbGwg
cmV0dXJuIGZhbHNlLgotYm9vbCBSZW5kZXJMYXllckNvbXBvc2l0b3I6OmZpeGVkUG9zaXRpb25l
ZEJ5QW5jZXN0b3IoY29uc3QgUmVuZGVyTGF5ZXIqIGxheWVyKSBjb25zdAorLy8gUmV0dXJuIHRo
ZSBmaXhlZC1wb3NpdGlvbmVkIFJlbmRlck9iamVjdCBpbiBiZXR3ZWVuIGEgY29tcG9zaXRlZCBs
YXllciBhbmQgaXRzIG5lYXJlc3QgY29tcG9zaXRlZCBhbmNlc3RvciwKKy8vIG9yIG51bGwgaWYg
dGhlIGNvbXBvc2l0ZWQgbGF5ZXIgaXMgbm90IHJlc3BvbnNpYmxlIGZvciBmaXhpbmcgaXRzIHBv
c2l0aW9uIHRvIGEgZml4ZWQtcG9zaXRpb24gY29udGFpbmVyIGxheWVyLgorUmVuZGVyT2JqZWN0
KiBSZW5kZXJMYXllckNvbXBvc2l0b3I6OnJlcXVpcmVzRml4ZWRUb0NvbnRhaW5lckJ5UmVuZGVy
T2JqZWN0KGNvbnN0IFJlbmRlckxheWVyKiBsYXllcikgY29uc3QKIHsKLSAgICBpZiAoIWxheWVy
LT5pc0NvbXBvc2l0ZWQoKSB8fCAhbGF5ZXItPnBhcmVudCgpKQotICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgQVNTRVJUKGxheWVyLT5pc0NvbXBvc2l0ZWQoKSk7CiAKLSAgICBjb25zdCBSZW5k
ZXJMYXllciogY29tcG9zaXRpbmdBbmNlc3RvciA9IGxheWVyLT5hbmNlc3RvckNvbXBvc2l0aW5n
TGF5ZXIoKTsKLSAgICBpZiAoIWNvbXBvc2l0aW5nQW5jZXN0b3IpCi0gICAgICAgIHJldHVybiBm
YWxzZTsKKyAgICBkbyB7CisgICAgICAgIGlmIChsYXllci0+cmVuZGVyZXIoKS0+c3R5bGUoKS0+
cG9zaXRpb24oKSA9PSBGaXhlZFBvc2l0aW9uKQorICAgICAgICAgICAgcmV0dXJuIGxheWVyLT5y
ZW5kZXJlcigpOwogCi0gICAgY29uc3QgUmVuZGVyTGF5ZXIqIGN1cnIgPSBsYXllcjsKLSAgICB3
aGlsZSAoY3VycikgewotICAgICAgICBjb25zdCBSZW5kZXJMYXllciogbmV4dCA9IGN1cnItPnBh
cmVudCgpOwotICAgICAgICBpZiAobmV4dCA9PSBjb21wb3NpdGluZ0FuY2VzdG9yKQotICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgICAgIGlmIChuZXh0ICYmIG5leHQtPnJlbmRlcmVy
KCktPnN0eWxlKCktPnBvc2l0aW9uKCkgPT0gRml4ZWRQb3NpdGlvbikKLSAgICAgICAgICAgIHJl
dHVybiB0cnVlOwotICAgICAgICBjdXJyID0gbmV4dDsKLSAgICB9Ci0gICAgcmV0dXJuIGZhbHNl
OworICAgICAgICBsYXllciA9IGxheWVyLT5wYXJlbnQoKTsKKyAgICB9IHdoaWxlIChsYXllciAm
JiAhbGF5ZXItPmlzQ29tcG9zaXRlZCgpKTsKKyAgICByZXR1cm4gMDsKIH0KIAogYm9vbCBSZW5k
ZXJMYXllckNvbXBvc2l0b3I6OnJlcXVpcmVzQ29tcG9zaXRpbmdGb3JTY3JvbGxhYmxlRnJhbWUo
KSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVy
Q29tcG9zaXRvci5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9z
aXRvci5oCmluZGV4IDI5M2FiOTg4NTNmMzUxYWE2N2U1N2U1YjNmNzQ4YTA4MjE4ODk4ZjYuLjJm
NWNjMTBlYTM2NTY0Mzg3MTJiODhiNmYwMTYxMzZlMjMzYWEyZTkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckNvbXBvc2l0b3IuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmgKQEAgLTE1NCw4ICsxNTQs
OSBAQCBwdWJsaWM6CiAgICAgLy8gV2hldGhlciBsYXllcidzIGJhY2tpbmcgbmVlZHMgYSBncmFw
aGljcyBsYXllciB0byBjbGlwIHotb3JkZXIgY2hpbGRyZW4gb2YgdGhlIGdpdmVuIGxheWVyLgog
ICAgIGJvb2wgY2xpcHNDb21wb3NpdGluZ0Rlc2NlbmRhbnRzKGNvbnN0IFJlbmRlckxheWVyKikg
Y29uc3Q7CiAKLSAgICAvLyBXaGV0aGVyIHRoZSBsYXllciBpcyBmaXhlZCBwb3NpdGlvbmVkIHRv
IHRoZSB2aWV3IGJ5IGFuIGFuY2VzdG9yIGxheWVyLgotICAgIGJvb2wgZml4ZWRQb3NpdGlvbmVk
QnlBbmNlc3Rvcihjb25zdCBSZW5kZXJMYXllciopIGNvbnN0OworICAgIC8vIFJldHVybiB0aGUg
Zml4ZWQtcG9zaXRpb25lZCBSZW5kZXJPYmplY3QgaW4gYmV0d2VlbiB0aGUgUmVuZGVyTGF5ZXIg
YW5kIGl0cyBuZWFyZXN0IGNvbXBvc2l0ZWQgYW5jZXN0b3IsCisgICAgLy8gb3IgbnVsbCBpZiB0
aGUgY29tcG9zaXRlZCBsYXllciBpcyBub3QgcmVzcG9uc2libGUgZm9yIGZpeGluZyBpdHMgcG9z
aXRpb24gdG8gYSBmaXhlZC1wb3NpdGlvbiBjb250YWluZXIgbGF5ZXIuCisgICAgUmVuZGVyT2Jq
ZWN0KiByZXF1aXJlc0ZpeGVkVG9Db250YWluZXJCeVJlbmRlck9iamVjdChjb25zdCBSZW5kZXJM
YXllciopIGNvbnN0OwogCiAgICAgLy8gV2hldGhlciB0aGUgZ2l2ZW4gbGF5ZXIgbmVlZHMgYW4g
ZXh0cmEgJ2NvbnRlbnRzJyBsYXllci4KICAgICBib29sIG5lZWRzQ29udGVudHNDb21wb3NpdGlu
Z0xheWVyKGNvbnN0IFJlbmRlckxheWVyKikgY29uc3Q7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>193395</attachid>
            <date>2013-03-15 16:17:19 -0700</date>
            <delta_ts>2013-03-15 21:10:07 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-111670-20130315161314.patch</filename>
            <type>text/plain</type>
            <size>17376</size>
            <attacher name="Tien-Ren Chen">trchen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ1ODAyCmRpZmYgLS1naXQgYS9Tb3VyY2UvUGxhdGZvcm0v
Q2hhbmdlTG9nIGIvU291cmNlL1BsYXRmb3JtL0NoYW5nZUxvZwppbmRleCA0MmZiMTYxMTMzNjg0
YTdkM2NkYTdkZTMxMTc3OTliNTJiMGQ2ZWRmLi40MWNjODc0ZWY5YjM2YjUyMzkyMzZhOTUyN2I2
YmE2ZjEyMzIzODY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvUGxhdGZvcm0vQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9QbGF0Zm9ybS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNCBAQAorMjAxMy0wMy0xNSAg
VGllbi1SZW4gQ2hlbiAgPHRyY2hlbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgSW1wbGVtZW50
IHBpbmNoIHpvb20gZm9yIGJvdHRvbS1yaWdodCBmaXhlZC1wb3NpdGlvbiBlbGVtZW50cworICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTExNjcwCisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkZWQgV2ViTGF5
ZXJQb3NpdGlvbkNvbnN0cmFpbnQgZm9yIGxheWVycyB0aGF0IG5lZWQgZHluYW1pYyBwb3NpdGlv
bmluZy4KKyAgICAgICAgQ3VycmVudGx5IGl0IGlzIG9ubHkgdXNlZCBmb3IgZml4ZWQtcG9zaXRp
b24gbGF5ZXJzLgorCisgICAgICAgICogUGxhdGZvcm0uZ3lwaToKKyAgICAgICAgKiBjaHJvbWl1
bS9wdWJsaWMvV2ViTGF5ZXIuaDoKKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChXZWJMYXll
cik6CisgICAgICAgIChXZWJLaXQ6OldlYkxheWVyOjpzZXRQb3NpdGlvbkNvbnN0cmFpbnQpOgor
ICAgICAgICAqIGNocm9taXVtL3B1YmxpYy9XZWJMYXllclBvc2l0aW9uQ29uc3RyYWludC5oOiBB
ZGRlZC4KKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChXZWJMYXllclBvc2l0aW9uQ29uc3Ry
YWludCk6CisgICAgICAgIChXZWJLaXQ6OldlYkxheWVyUG9zaXRpb25Db25zdHJhaW50OjpXZWJM
YXllclBvc2l0aW9uQ29uc3RyYWludCk6CisgICAgICAgIChXZWJLaXQ6OldlYkxheWVyUG9zaXRp
b25Db25zdHJhaW50OjpmaXhlZFBvc2l0aW9uKToKKwogMjAxMy0wMy0xMyAgVG9tbXkgV2lkZW5m
bHljaHQgIDx0b21teXdAZ29vZ2xlLmNvbT4KIAogICAgICAgICBbY2hyb21pdW1dIE1lZGlhU3Ry
ZWFtIEFQSTogQ2xlYW5pbmcgYXdheSBkZXByZWNhdGVkIGFuZCB1bnVzZWQgc3RhdGVzCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VM
b2cKaW5kZXggMWRiOWE2MmM4MmMwOTUxNGQ4MDJiYjBjZWIzZTA1MGIyZDM3YTI0OC4uZTI4Nzc1
MTJjZmUwZTIxNGYxNDZhZjg3YmZmOTJmM2JkY2JmYTIxMCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDMyIEBACisyMDEzLTAzLTE1ICBUaWVuLVJlbiBDaGVuICA8dHJjaGVuQGNocm9taXVtLm9yZz4K
KworICAgICAgICBJbXBsZW1lbnQgcGluY2ggem9vbSBmb3IgYm90dG9tLXJpZ2h0IGZpeGVkLXBv
c2l0aW9uIGVsZW1lbnRzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xMTE2NzAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBUaGlzIHBhdGNoIGFkZHMgc3VwcG9ydCB0byBib3R0b20tcmlnaHQgZml4ZWQtcG9z
aXRpb24gZWxlbWVudHMgYnkKKyAgICAgICAgaW50cm9kdWNpbmcgV2ViTGF5ZXJQb3NpdGlvbkNv
bnN0cmFpbnQgdG8gV2ViTGF5ZXIuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLiBDYW4ndCB0ZXN0
IHVudGlsIGNocm9taXVtIHBhdGNoIGxhbmRlZC4KKworICAgICAgICAqIHBhZ2Uvc2Nyb2xsaW5n
L1Njcm9sbGluZ0Nvb3JkaW5hdG9yLmg6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdDb29y
ZGluYXRvcjo6dXBkYXRlTGF5ZXJQb3NpdGlvbkNvbnN0cmFpbnQpOgorICAgICAgICAqIHBhZ2Uv
c2Nyb2xsaW5nL2Nocm9taXVtL1Njcm9sbGluZ0Nvb3JkaW5hdG9yQ2hyb21pdW0uY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6Y2xlYXJQb3NpdGlvbkNvbnN0cmFpbnRFeGNlcHQpOgorICAgICAgICAo
V2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpjb21wdXRlUG9zaXRpb25Db25zdHJhaW50KToK
KyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ0Nvb3JkaW5hdG9yQ2hyb21pdW06OnVwZGF0ZUxh
eWVyUG9zaXRpb25Db25zdHJhaW50KToKKyAgICAgICAgKiBwYWdlL3Njcm9sbGluZy9jaHJvbWl1
bS9TY3JvbGxpbmdDb29yZGluYXRvckNocm9taXVtLmg6CisgICAgICAgIChTY3JvbGxpbmdDb29y
ZGluYXRvckNocm9taXVtKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5n
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyQmFja2luZzo6cmVnaXN0ZXJTY3Jv
bGxpbmdMYXllcnMpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuaDoK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyQmFja2luZzo6Y29udGVudHNDb250YWlubWVu
dExheWVyKToKKyAgICAgICAgKFJlbmRlckxheWVyQmFja2luZyk6CisgICAgICAgICogcmVuZGVy
aW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5jcHA6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRl
ckxheWVyQ29tcG9zaXRvci5oOgorCiAyMDEzLTAzLTE0ICBNYXJqYSBIw7ZsdHTDpCAgPG1hcmph
QGNocm9taXVtLm9yZz4KIAogICAgICAgICBbVjhdIFN0b3JlIG1haW4gd29ybGQgYW5kIG5vbi1t
YWluIHdvcmxkIHRlbXBsYXRlcyBzZXBhcmF0ZWx5LgpkaWZmIC0tZ2l0IGEvU291cmNlL1BsYXRm
b3JtL1BsYXRmb3JtLmd5cGkgYi9Tb3VyY2UvUGxhdGZvcm0vUGxhdGZvcm0uZ3lwaQppbmRleCA2
MGFjMWI4NzVjNGM2OWVlYTdhNjIyNmI3OGE3OTYyMzU3ZDY3ZTI4Li4yMmFiZmE0NzNkOTI5ZDlk
NzdmY2U3ZjQ5YzE5Mjc3MzAyNTE4ZWMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvUGxhdGZvcm0vUGxh
dGZvcm0uZ3lwaQorKysgYi9Tb3VyY2UvUGxhdGZvcm0vUGxhdGZvcm0uZ3lwaQpAQCAtODIsNiAr
ODIsNyBAQAogICAgICAgICAgICAgJ2Nocm9taXVtL3B1YmxpYy9XZWJJbWFnZS5oJywKICAgICAg
ICAgICAgICdjaHJvbWl1bS9wdWJsaWMvV2ViSW1hZ2VMYXllci5oJywKICAgICAgICAgICAgICdj
aHJvbWl1bS9wdWJsaWMvV2ViTGF5ZXIuaCcsCisgICAgICAgICAgICAnY2hyb21pdW0vcHVibGlj
L1dlYkxheWVyUG9zaXRpb25Db25zdHJhaW50LmgnLAogICAgICAgICAgICAgJ2Nocm9taXVtL3B1
YmxpYy9XZWJMYXllclNjcm9sbENsaWVudC5oJywKICAgICAgICAgICAgICdjaHJvbWl1bS9wdWJs
aWMvV2ViTGF5ZXJUcmVlVmlldy5oJywKICAgICAgICAgICAgICdjaHJvbWl1bS9wdWJsaWMvV2Vi
TG9jYWxpemVkU3RyaW5nLmgnLApkaWZmIC0tZ2l0IGEvU291cmNlL1BsYXRmb3JtL2Nocm9taXVt
L3B1YmxpYy9XZWJMYXllci5oIGIvU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJM
YXllci5oCmluZGV4IDAxMzRjMzBjNmRiNzY5Mjg1Zjk2ZjY4MjZhNmQxYTI4MDk0YzUxYTIuLjA1
NmQ1YWRmMGJmZTlhYzFmMjIyNzA3NWYzYmMwMGVjNTM0ZGI5NDUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViTGF5ZXIuaAorKysgYi9Tb3VyY2UvUGxhdGZv
cm0vY2hyb21pdW0vcHVibGljL1dlYkxheWVyLmgKQEAgLTI5LDYgKzI5LDEwIEBACiAjaW5jbHVk
ZSAiV2ViQW5pbWF0aW9uLmgiCiAjaW5jbHVkZSAiV2ViQ29sb3IuaCIKICNpbmNsdWRlICJXZWJD
b21tb24uaCIKKworLy8gUmVtb3ZlIGFmdGVyIGNocm9taXVtIHBhdGNoIGxhbmRlZAorI2luY2x1
ZGUgIldlYkxheWVyUG9zaXRpb25Db25zdHJhaW50LmgiCisKICNpbmNsdWRlICJXZWJQb2ludC5o
IgogI2luY2x1ZGUgIldlYlByaXZhdGVQdHIuaCIKICNpbmNsdWRlICJXZWJSZWN0LmgiCkBAIC00
NCw2ICs0OCw3IEBAIGNsYXNzIFdlYkZpbHRlck9wZXJhdGlvbnM7CiBjbGFzcyBXZWJMYXllclNj
cm9sbENsaWVudDsKIHN0cnVjdCBXZWJGbG9hdFBvaW50Owogc3RydWN0IFdlYkZsb2F0UmVjdDsK
K3N0cnVjdCBXZWJMYXllclBvc2l0aW9uQ29uc3RyYWludDsKIHN0cnVjdCBXZWJTaXplOwogCiBj
bGFzcyBXZWJMYXllckltcGw7CkBAIC0xODksOCArMTk0LDExIEBAIHB1YmxpYzoKICAgICB2aXJ0
dWFsIHZvaWQgc2V0SXNDb250YWluZXJGb3JGaXhlZFBvc2l0aW9uTGF5ZXJzKGJvb2wpID0gMDsK
ICAgICB2aXJ0dWFsIGJvb2wgaXNDb250YWluZXJGb3JGaXhlZFBvc2l0aW9uTGF5ZXJzKCkgY29u
c3QgPSAwOwogCisgICAgLy8gRGVwcmVjYXRlZCwgcmVtb3ZlIGFmdGVyIGNocm9taXVtIHBhdGNo
IGxhbmRlZAogICAgIHZpcnR1YWwgdm9pZCBzZXRGaXhlZFRvQ29udGFpbmVyTGF5ZXIoYm9vbCkg
PSAwOwogICAgIHZpcnR1YWwgYm9vbCBmaXhlZFRvQ29udGFpbmVyTGF5ZXIoKSBjb25zdCA9IDA7
CisgICAgLy8gVXNlIHRoaXMgaW5zdGVhZCwgcmVtb3ZlIHN0dWIgYWZ0ZXIgY2hyb21pdW0gcGF0
Y2ggbGFuZGVkCisgICAgdmlydHVhbCB2b2lkIHNldFBvc2l0aW9uQ29uc3RyYWludChjb25zdCBX
ZWJMYXllclBvc2l0aW9uQ29uc3RyYWludCYgY29uc3RyYWludCkgeyBzZXRGaXhlZFRvQ29udGFp
bmVyTGF5ZXIoY29uc3RyYWludC5pc0ZpeGVkUG9zaXRpb24pOyB9CiAKICAgICAvLyBUaGUgc2Ny
b2xsIGNsaWVudCBpcyBub3RpZmllZCB3aGVuIHRoZSBzY3JvbGwgcG9zaXRpb24gb2YgdGhlIFdl
YkxheWVyCiAgICAgLy8gY2hhbmdlcy4gT25seSBhIHNpbmdsZSBzY3JvbGwgY2xpZW50IGNhbiBi
ZSBzZXQgZm9yIGEgV2ViTGF5ZXIgYXQgYSB0aW1lLgpkaWZmIC0tZ2l0IGEvU291cmNlL1BsYXRm
b3JtL2Nocm9taXVtL3B1YmxpYy9XZWJMYXllclBvc2l0aW9uQ29uc3RyYWludC5oIGIvU291cmNl
L1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJMYXllclBvc2l0aW9uQ29uc3RyYWludC5oCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjVhNTdlYTkzYWMwOGNjOTQyZjI4YjNjYTU2MGEzMWY1ZWM1ZjVlZTcKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYkxheWVyUG9z
aXRpb25Db25zdHJhaW50LmgKQEAgLTAsMCArMSw2NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxMyBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklC
VVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0Ug
QVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgV2ViTGF5
ZXJQb3NpdGlvbkNvbnN0cmFpbnRfaAorI2RlZmluZSBXZWJMYXllclBvc2l0aW9uQ29uc3RyYWlu
dF9oCisKK25hbWVzcGFjZSBXZWJLaXQgeworCitzdHJ1Y3QgV2ViTGF5ZXJQb3NpdGlvbkNvbnN0
cmFpbnQgeworICAgIGJvb2wgaXNGaXhlZFBvc2l0aW9uICAgICA6IDE7CisgICAgYm9vbCBpc0Zp
eGVkVG9SaWdodEVkZ2UgIDogMTsKKyAgICBib29sIGlzRml4ZWRUb0JvdHRvbUVkZ2UgOiAxOwor
CisgICAgV2ViTGF5ZXJQb3NpdGlvbkNvbnN0cmFpbnQoKQorICAgICAgICA6IGlzRml4ZWRQb3Np
dGlvbihmYWxzZSkKKyAgICAgICAgLCBpc0ZpeGVkVG9SaWdodEVkZ2UoZmFsc2UpCisgICAgICAg
ICwgaXNGaXhlZFRvQm90dG9tRWRnZShmYWxzZSkKKyAgICB7CisgICAgfQorCisgICAgc3RhdGlj
IFdlYkxheWVyUG9zaXRpb25Db25zdHJhaW50IGZpeGVkUG9zaXRpb24oYm9vbCBmaXhlZFRvUmln
aHRFZGdlLCBib29sIGZpeGVkVG9Cb3R0b21FZGdlKQorICAgIHsKKyAgICAgICAgV2ViTGF5ZXJQ
b3NpdGlvbkNvbnN0cmFpbnQgY29uc3RyYWludDsKKyAgICAgICAgY29uc3RyYWludC5pc0ZpeGVk
UG9zaXRpb24gPSB0cnVlOworICAgICAgICBjb25zdHJhaW50LmlzRml4ZWRUb1JpZ2h0RWRnZSA9
IGZpeGVkVG9SaWdodEVkZ2U7CisgICAgICAgIGNvbnN0cmFpbnQuaXNGaXhlZFRvQm90dG9tRWRn
ZSA9IGZpeGVkVG9Cb3R0b21FZGdlOworICAgICAgICByZXR1cm4gY29uc3RyYWludDsKKyAgICB9
CisKKyAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgV2ViTGF5ZXJQb3NpdGlvbkNvbnN0cmFpbnQm
IG90aGVyKQorICAgIHsKKyAgICAgICAgaWYgKCFpc0ZpeGVkUG9zaXRpb24gJiYgIW90aGVyLmlz
Rml4ZWRQb3NpdGlvbikKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICByZXR1cm4g
aXNGaXhlZFBvc2l0aW9uID09IG90aGVyLmlzRml4ZWRQb3NpdGlvbiAmJiBpc0ZpeGVkVG9SaWdo
dEVkZ2UgPT0gb3RoZXIuaXNGaXhlZFRvUmlnaHRFZGdlICYmIGlzRml4ZWRUb0JvdHRvbUVkZ2Ug
PT0gb3RoZXIuaXNGaXhlZFRvQm90dG9tRWRnZTsKKyAgICB9CisgICAgYm9vbCBvcGVyYXRvciE9
KGNvbnN0IFdlYkxheWVyUG9zaXRpb25Db25zdHJhaW50JiBvdGhlcikKKyAgICB7CisgICAgICAg
IHJldHVybiAhKCp0aGlzID09IG90aGVyKTsKKyAgICB9Cit9OworCit9IC8vIG5hbWVzcGFjZSBX
ZWJLaXQKKworI2VuZGlmIC8vIFdlYkxheWVyUG9zaXRpb25Db25zdHJhaW50X2gKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ0Nvb3JkaW5hdG9yLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdDb29yZGluYXRvci5oCmlu
ZGV4IDE0ZDkwZTVkNzgwNTA5MmE2M2NlOTg2YTMwYTE0YjA4YzMwZTE3OTkuLjJlY2I0NjQ2M2Iz
Y2IxZWYyYzA3NTZjZTRiYTY2NzNmZDg4ODQ5ODggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ0Nvb3JkaW5hdG9yLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nQ29vcmRpbmF0b3IuaApAQCAtMTUzLDcgKzE1Myw3
IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgc2Nyb2xsYWJsZUFyZWFTY3JvbGxMYXllckRp
ZENoYW5nZShTY3JvbGxhYmxlQXJlYSopIHsgfQogICAgIHZpcnR1YWwgdm9pZCBzY3JvbGxhYmxl
QXJlYVNjcm9sbGJhckxheWVyRGlkQ2hhbmdlKFNjcm9sbGFibGVBcmVhKiwgU2Nyb2xsYmFyT3Jp
ZW50YXRpb24pIHsgfQogICAgIHZpcnR1YWwgdm9pZCBzZXRMYXllcklzQ29udGFpbmVyRm9yRml4
ZWRQb3NpdGlvbkxheWVycyhHcmFwaGljc0xheWVyKiwgYm9vbCkgeyB9Ci0gICAgdmlydHVhbCB2
b2lkIHNldExheWVySXNGaXhlZFRvQ29udGFpbmVyTGF5ZXIoR3JhcGhpY3NMYXllciosIGJvb2wp
IHsgfQorICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVMYXllclBvc2l0aW9uQ29uc3RyYWludChSZW5k
ZXJMYXllciopIHsgfQogICAgIHZpcnR1YWwgdm9pZCB0b3VjaEV2ZW50VGFyZ2V0UmVjdHNEaWRD
aGFuZ2UoY29uc3QgRG9jdW1lbnQqKSB7IH0KIAogI2lmIEVOQUJMRShUT1VDSF9FVkVOVF9UUkFD
S0lORykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL2Nocm9taXVt
L1Njcm9sbGluZ0Nvb3JkaW5hdG9yQ2hyb21pdW0uY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9z
Y3JvbGxpbmcvY2hyb21pdW0vU2Nyb2xsaW5nQ29vcmRpbmF0b3JDaHJvbWl1bS5jcHAKaW5kZXgg
MjU4YjE2NjkzMWRhZmExYzdiY2E5Yjg2ZGNlMzQxZWRjMWU2MTM1MC4uY2FhOGU1ZjkxZWQ3N2M5
NWVjNzc4MzRhNzJiYzAwOGU3NTMwOTg4ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9zY3JvbGxpbmcvY2hyb21pdW0vU2Nyb2xsaW5nQ29vcmRpbmF0b3JDaHJvbWl1bS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvY2hyb21pdW0vU2Nyb2xsaW5nQ29vcmRp
bmF0b3JDaHJvbWl1bS5jcHAKQEAgLTMyLDYgKzMyLDcgQEAKICNpbmNsdWRlICJHcmFwaGljc0xh
eWVyQ2hyb21pdW0uaCIKICNpbmNsdWRlICJQYWdlLmgiCiAjaW5jbHVkZSAiUmVnaW9uLmgiCisj
aW5jbHVkZSAiUmVuZGVyTGF5ZXJCYWNraW5nLmgiCiAjaW5jbHVkZSAiUmVuZGVyTGF5ZXJDb21w
b3NpdG9yLmgiCiAjaW5jbHVkZSAiUmVuZGVyVmlldy5oIgogI2luY2x1ZGUgIlNjcm9sbGJhclRo
ZW1lQ29tcG9zaXRlLmgiCkBAIC0zOSwxMiArNDAsMTQgQEAKICNpbmNsdWRlICJXZWJTY3JvbGxi
YXJUaGVtZUdlb21ldHJ5TmF0aXZlLmgiCiAjaW5jbHVkZSA8cHVibGljL1BsYXRmb3JtLmg+CiAj
aW5jbHVkZSA8cHVibGljL1dlYkNvbXBvc2l0b3JTdXBwb3J0Lmg+CisjaW5jbHVkZSA8cHVibGlj
L1dlYkxheWVyUG9zaXRpb25Db25zdHJhaW50Lmg+CiAjaW5jbHVkZSA8cHVibGljL1dlYlNjcm9s
bGJhci5oPgogI2luY2x1ZGUgPHB1YmxpYy9XZWJTY3JvbGxiYXJMYXllci5oPgogI2luY2x1ZGUg
PHB1YmxpYy9XZWJTY3JvbGxiYXJUaGVtZUdlb21ldHJ5Lmg+CiAjaW5jbHVkZSA8cHVibGljL1dl
YlNjcm9sbGJhclRoZW1lUGFpbnRlci5oPgogCiB1c2luZyBXZWJLaXQ6OldlYkxheWVyOwordXNp
bmcgV2ViS2l0OjpXZWJMYXllclBvc2l0aW9uQ29uc3RyYWludDsKIHVzaW5nIFdlYktpdDo6V2Vi
UmVjdDsKIHVzaW5nIFdlYktpdDo6V2ViU2Nyb2xsYmFyTGF5ZXI7CiB1c2luZyBXZWJLaXQ6Oldl
YlZlY3RvcjsKQEAgLTIzMywxMCArMjM2LDQxIEBAIHZvaWQgU2Nyb2xsaW5nQ29vcmRpbmF0b3JD
aHJvbWl1bTo6c2V0TGF5ZXJJc0NvbnRhaW5lckZvckZpeGVkUG9zaXRpb25MYXllcnMoR3JhCiAg
ICAgICAgIHNjcm9sbGFibGVMYXllci0+c2V0SXNDb250YWluZXJGb3JGaXhlZFBvc2l0aW9uTGF5
ZXJzKGVuYWJsZSk7CiB9CiAKLXZvaWQgU2Nyb2xsaW5nQ29vcmRpbmF0b3JDaHJvbWl1bTo6c2V0
TGF5ZXJJc0ZpeGVkVG9Db250YWluZXJMYXllcihHcmFwaGljc0xheWVyKiBsYXllciwgYm9vbCBl
bmFibGUpCitzdGF0aWMgdm9pZCBjbGVhclBvc2l0aW9uQ29uc3RyYWludEV4Y2VwdChHcmFwaGlj
c0xheWVyKiBsYXllciwgR3JhcGhpY3NMYXllciogZXhjZXB0KQogewotICAgIGlmIChXZWJMYXll
ciogc2Nyb2xsYWJsZUxheWVyID0gc2Nyb2xsaW5nV2ViTGF5ZXJGb3JHcmFwaGljc0xheWVyKGxh
eWVyKSkKLSAgICAgICAgc2Nyb2xsYWJsZUxheWVyLT5zZXRGaXhlZFRvQ29udGFpbmVyTGF5ZXIo
ZW5hYmxlKTsKKyAgICBpZiAobGF5ZXIgJiYgbGF5ZXIgIT0gZXhjZXB0ICYmIHNjcm9sbGluZ1dl
YkxheWVyRm9yR3JhcGhpY3NMYXllcihsYXllcikpCisgICAgICAgIHNjcm9sbGluZ1dlYkxheWVy
Rm9yR3JhcGhpY3NMYXllcihsYXllciktPnNldFBvc2l0aW9uQ29uc3RyYWludChXZWJMYXllclBv
c2l0aW9uQ29uc3RyYWludCgpKTsKK30KKworc3RhdGljIFdlYkxheWVyUG9zaXRpb25Db25zdHJh
aW50IGNvbXB1dGVQb3NpdGlvbkNvbnN0cmFpbnQoY29uc3QgUmVuZGVyTGF5ZXIqIGxheWVyKQor
eworICAgIEFTU0VSVChsYXllci0+aXNDb21wb3NpdGVkKCkpOworICAgIGRvIHsKKyAgICAgICAg
aWYgKGxheWVyLT5yZW5kZXJlcigpLT5zdHlsZSgpLT5wb3NpdGlvbigpID09IEZpeGVkUG9zaXRp
b24pIHsKKyAgICAgICAgICAgIGNvbnN0IFJlbmRlck9iamVjdCogZml4ZWRQb3NpdGlvbk9iamVj
dCA9IGxheWVyLT5yZW5kZXJlcigpOworICAgICAgICAgICAgYm9vbCBmaXhlZFRvUmlnaHQgPSAh
Zml4ZWRQb3NpdGlvbk9iamVjdC0+c3R5bGUoKS0+cmlnaHQoKS5pc0F1dG8oKTsKKyAgICAgICAg
ICAgIGJvb2wgZml4ZWRUb0JvdHRvbSA9ICFmaXhlZFBvc2l0aW9uT2JqZWN0LT5zdHlsZSgpLT5i
b3R0b20oKS5pc0F1dG8oKTsKKyAgICAgICAgICAgIHJldHVybiBXZWJMYXllclBvc2l0aW9uQ29u
c3RyYWludDo6Zml4ZWRQb3NpdGlvbihmaXhlZFRvUmlnaHQsIGZpeGVkVG9Cb3R0b20pOworICAg
ICAgICB9CisKKyAgICAgICAgbGF5ZXIgPSBsYXllci0+cGFyZW50KCk7CisgICAgfSB3aGlsZSAo
bGF5ZXIgJiYgIWxheWVyLT5pc0NvbXBvc2l0ZWQoKSk7CisgICAgcmV0dXJuIFdlYkxheWVyUG9z
aXRpb25Db25zdHJhaW50KCk7Cit9CisKK3ZvaWQgU2Nyb2xsaW5nQ29vcmRpbmF0b3JDaHJvbWl1
bTo6dXBkYXRlTGF5ZXJQb3NpdGlvbkNvbnN0cmFpbnQoUmVuZGVyTGF5ZXIqIGxheWVyKQorewor
ICAgIEFTU0VSVChsYXllci0+YmFja2luZygpKTsKKyAgICBSZW5kZXJMYXllckJhY2tpbmcqIGJh
Y2tpbmcgPSBsYXllci0+YmFja2luZygpOworICAgIEdyYXBoaWNzTGF5ZXIqIG1haW5MYXllciA9
IGJhY2tpbmctPmNoaWxkRm9yU3VwZXJsYXllcnMoKTsKKworICAgIC8vIEF2b2lkIHVubmVjZXNz
YXJ5IGNvbW1pdHMKKyAgICBjbGVhclBvc2l0aW9uQ29uc3RyYWludEV4Y2VwdChiYWNraW5nLT5h
bmNlc3RvckNsaXBwaW5nTGF5ZXIoKSwgbWFpbkxheWVyKTsKKyAgICBjbGVhclBvc2l0aW9uQ29u
c3RyYWludEV4Y2VwdChiYWNraW5nLT5jb250ZW50c0NvbnRhaW5tZW50TGF5ZXIoKSwgbWFpbkxh
eWVyKTsKKyAgICBjbGVhclBvc2l0aW9uQ29uc3RyYWludEV4Y2VwdChiYWNraW5nLT5ncmFwaGlj
c0xheWVyKCksIG1haW5MYXllcik7CisKKyAgICBpZiAoV2ViTGF5ZXIqIHNjcm9sbGFibGVMYXll
ciA9IHNjcm9sbGluZ1dlYkxheWVyRm9yR3JhcGhpY3NMYXllcihtYWluTGF5ZXIpKQorICAgICAg
ICBzY3JvbGxhYmxlTGF5ZXItPnNldFBvc2l0aW9uQ29uc3RyYWludChjb21wdXRlUG9zaXRpb25D
b25zdHJhaW50KGxheWVyKSk7CiB9CiAKIHZvaWQgU2Nyb2xsaW5nQ29vcmRpbmF0b3JDaHJvbWl1
bTo6c2Nyb2xsYWJsZUFyZWFTY3JvbGxMYXllckRpZENoYW5nZShTY3JvbGxhYmxlQXJlYSogc2Ny
b2xsYWJsZUFyZWEpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9j
aHJvbWl1bS9TY3JvbGxpbmdDb29yZGluYXRvckNocm9taXVtLmggYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL3Njcm9sbGluZy9jaHJvbWl1bS9TY3JvbGxpbmdDb29yZGluYXRvckNocm9taXVtLmgKaW5k
ZXggYzFjMDI5YTIyZGI3ZGQ0Yjc1NjEzYWJlMDQ4ZTQwYjI1OGFmNmEzYi4uMGZkMDNiZTM4MzU1
M2MxYTQwMGRiOGJlNjFhNjEzMGM1NWVmOGNlNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGFnZS9zY3JvbGxpbmcvY2hyb21pdW0vU2Nyb2xsaW5nQ29vcmRpbmF0b3JDaHJvbWl1bS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL2Nocm9taXVtL1Njcm9sbGluZ0Nvb3Jk
aW5hdG9yQ2hyb21pdW0uaApAQCAtNTMsNyArNTMsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2
b2lkIHNldExheWVySXNDb250YWluZXJGb3JGaXhlZFBvc2l0aW9uTGF5ZXJzKEdyYXBoaWNzTGF5
ZXIqLCBib29sKTsKIAogICAgIC8vIEF0dGFjaC9kZXRhY2ggbGF5ZXIgcG9zaXRpb24gdG8gYW5j
ZXN0b3IgZml4ZWQgcG9zaXRpb24gY29udGFpbmVyLgotICAgIHZpcnR1YWwgdm9pZCBzZXRMYXll
cklzRml4ZWRUb0NvbnRhaW5lckxheWVyKEdyYXBoaWNzTGF5ZXIqLCBib29sKTsKKyAgICB2aXJ0
dWFsIHZvaWQgdXBkYXRlTGF5ZXJQb3NpdGlvbkNvbnN0cmFpbnQoUmVuZGVyTGF5ZXIqKTsKIAog
ICAgIC8vIFNob3VsZCBiZSBjYWxsZWQgd2hlbiBhIFNjcm9sbGFibGVBcmVhIGlzIGdldHRpbmcg
ZGVzdHJveWVkLgogICAgIHZpcnR1YWwgdm9pZCB3aWxsRGVzdHJveVNjcm9sbGFibGVBcmVhKFNj
cm9sbGFibGVBcmVhKik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyTGF5ZXJCYWNraW5nLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXll
ckJhY2tpbmcuY3BwCmluZGV4IGIyZjBhYTEyNjQwNTY3MGZmODc3Y2Y4ZmU5MjA4OGEwNGI0ZTQy
ZWQuLmU0Yjk4M2Q0YzI5MjRkMTQ3MGY5YjIzYzkyZGY2YmQyNDZhMzliMDkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3BwCkBAIC04NTUsMTQg
Kzg1NSwxMSBAQCB2b2lkIFJlbmRlckxheWVyQmFja2luZzo6cmVnaXN0ZXJTY3JvbGxpbmdMYXll
cnMoKQogCiAgICAgY29tcG9zaXRvcigpLT51cGRhdGVWaWV3cG9ydENvbnN0cmFpbnRTdGF0dXMo
bV9vd25pbmdMYXllcik7CiAKLSAgICAvLyBGSVhNRTogaXQgd291bGQgYmUgbmljZSB0byBhdm9p
ZCBhbGwgdGhpcyB3b3JrIGlmIHRoZSBwbGF0Zm9ybSBkb2Vzbid0IGltcGxlbWVudCBzZXRMYXll
cklzRml4ZWRUb0NvbnRhaW5lckxheWVyKCkuCi0gICAgaWYgKHJlbmRlcmVyKCktPnN0eWxlKCkt
PnBvc2l0aW9uKCkgPT0gRml4ZWRQb3NpdGlvbiB8fCBjb21wb3NpdG9yKCktPmZpeGVkUG9zaXRp
b25lZEJ5QW5jZXN0b3IobV9vd25pbmdMYXllcikpCi0gICAgICAgIHNjcm9sbGluZ0Nvb3JkaW5h
dG9yLT5zZXRMYXllcklzRml4ZWRUb0NvbnRhaW5lckxheWVyKGNoaWxkRm9yU3VwZXJsYXllcnMo
KSwgdHJ1ZSk7Ci0gICAgZWxzZSB7Ci0gICAgICAgIGlmIChtX2FuY2VzdG9yQ2xpcHBpbmdMYXll
cikKLSAgICAgICAgICAgIHNjcm9sbGluZ0Nvb3JkaW5hdG9yLT5zZXRMYXllcklzRml4ZWRUb0Nv
bnRhaW5lckxheWVyKG1fYW5jZXN0b3JDbGlwcGluZ0xheWVyLmdldCgpLCBmYWxzZSk7Ci0gICAg
ICAgIHNjcm9sbGluZ0Nvb3JkaW5hdG9yLT5zZXRMYXllcklzRml4ZWRUb0NvbnRhaW5lckxheWVy
KG1fZ3JhcGhpY3NMYXllci5nZXQoKSwgZmFsc2UpOwotICAgIH0KKyAgICBpZiAoIXNjcm9sbGlu
Z0Nvb3JkaW5hdG9yLT5zdXBwb3J0c0ZpeGVkUG9zaXRpb25MYXllcnMoKSkKKyAgICAgICAgcmV0
dXJuOworCisgICAgc2Nyb2xsaW5nQ29vcmRpbmF0b3ItPnVwZGF0ZUxheWVyUG9zaXRpb25Db25z
dHJhaW50KG1fb3duaW5nTGF5ZXIpOworCiAgICAgLy8gUGFnZSBzY2FsZSBpcyBhcHBsaWVkIGFz
IGEgdHJhbnNmb3JtIG9uIHRoZSByb290IHJlbmRlciB2aWV3IGxheWVyLiBCZWNhdXNlIHRoZSBz
Y3JvbGwKICAgICAvLyBsYXllciBpcyBmdXJ0aGVyIHVwIGluIHRoZSBoaWVyYXJjaHksIHdlIG5l
ZWQgdG8gYXZvaWQgbWFya2luZyB0aGUgcm9vdCByZW5kZXIgdmlldwogICAgIC8vIGxheWVyIGFz
IGEgY29udGFpbmVyLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckxheWVyQmFja2luZy5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQmFj
a2luZy5oCmluZGV4IDg5ZDhjMTQ1Yzc1MWYyMjViZTNhMmJmZmE2Y2VmMDhkZjJmMGE2Y2MuLjlj
MTBlNWNhNDBkYjgyNjM4YmRlNmFjNjhkZTgwMGM3YzQ2ODhhMWEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmgKQEAgLTg3LDYgKzg3LDggQEAgcHVi
bGljOgogICAgIGJvb2wgaGFzQW5jZXN0b3JDbGlwcGluZ0xheWVyKCkgY29uc3QgeyByZXR1cm4g
bV9hbmNlc3RvckNsaXBwaW5nTGF5ZXIgIT0gMDsgfQogICAgIEdyYXBoaWNzTGF5ZXIqIGFuY2Vz
dG9yQ2xpcHBpbmdMYXllcigpIGNvbnN0IHsgcmV0dXJuIG1fYW5jZXN0b3JDbGlwcGluZ0xheWVy
LmdldCgpOyB9CiAKKyAgICBHcmFwaGljc0xheWVyKiBjb250ZW50c0NvbnRhaW5tZW50TGF5ZXIo
KSBjb25zdCB7IHJldHVybiBtX2NvbnRlbnRzQ29udGFpbm1lbnRMYXllci5nZXQoKTsgfQorCiAg
ICAgYm9vbCBoYXNDb250ZW50c0xheWVyKCkgY29uc3QgeyByZXR1cm4gbV9mb3JlZ3JvdW5kTGF5
ZXIgIT0gMDsgfQogICAgIEdyYXBoaWNzTGF5ZXIqIGZvcmVncm91bmRMYXllcigpIGNvbnN0IHsg
cmV0dXJuIG1fZm9yZWdyb3VuZExheWVyLmdldCgpOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckNvbXBvc2l0b3IuY3BwIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5jcHAKaW5kZXggM2Q3NDFhZTJhNDlh
MmZjYjhiOTA4YmViN2MzNjVkOTA3N2ExMDQzOS4uMDAzZjljMGY2YjVlNzE1Zjc2NDU2ZDNiYWQy
OTI2MWEyZjk4NTc2YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckxheWVyQ29tcG9zaXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckxheWVyQ29tcG9zaXRvci5jcHAKQEAgLTE5MzUsMzEgKzE5MzUsNiBAQCBib29sIFJlbmRlckxh
eWVyQ29tcG9zaXRvcjo6Y2xpcHNDb21wb3NpdGluZ0Rlc2NlbmRhbnRzKGNvbnN0IFJlbmRlckxh
eWVyKiBsYXllcgogICAgIHJldHVybiBsYXllci0+aGFzQ29tcG9zaXRpbmdEZXNjZW5kYW50KCkg
JiYgbGF5ZXItPnJlbmRlcmVyKCktPmhhc0NsaXBPck92ZXJmbG93Q2xpcCgpOwogfQogCi0vLyBS
ZXR1cm4gdHJ1ZSBpZiB0aGVyZSBpcyBhbiBhbmNlc3RvciBsYXllciB0aGF0IGlzIGZpeGVkIHBv
c2l0aW9uZWQgdG8gdGhlIHZpZXcuCi0vLyBOb3RlIHRoYXQgaWYgdGhlIGFuY2VzdG9yIGhhcyBh
IHN0YWNraW5nIGNvbnRleHQgYW5kIGlzIGZpeGVkIHBvc2l0aW9uIHRoZW4gdGhpcyBtZXRob2QK
LS8vIHdpbGwgcmV0dXJuIGZhbHNlLgotYm9vbCBSZW5kZXJMYXllckNvbXBvc2l0b3I6OmZpeGVk
UG9zaXRpb25lZEJ5QW5jZXN0b3IoY29uc3QgUmVuZGVyTGF5ZXIqIGxheWVyKSBjb25zdAotewot
ICAgIGlmICghbGF5ZXItPmlzQ29tcG9zaXRlZCgpIHx8ICFsYXllci0+cGFyZW50KCkpCi0gICAg
ICAgIHJldHVybiBmYWxzZTsKLQotICAgIGNvbnN0IFJlbmRlckxheWVyKiBjb21wb3NpdGluZ0Fu
Y2VzdG9yID0gbGF5ZXItPmFuY2VzdG9yQ29tcG9zaXRpbmdMYXllcigpOwotICAgIGlmICghY29t
cG9zaXRpbmdBbmNlc3RvcikKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgY29uc3QgUmVu
ZGVyTGF5ZXIqIGN1cnIgPSBsYXllcjsKLSAgICB3aGlsZSAoY3VycikgewotICAgICAgICBjb25z
dCBSZW5kZXJMYXllciogbmV4dCA9IGN1cnItPnBhcmVudCgpOwotICAgICAgICBpZiAobmV4dCA9
PSBjb21wb3NpdGluZ0FuY2VzdG9yKQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAg
ICAgIGlmIChuZXh0ICYmIG5leHQtPnJlbmRlcmVyKCktPnN0eWxlKCktPnBvc2l0aW9uKCkgPT0g
Rml4ZWRQb3NpdGlvbikKLSAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICBjdXJyID0g
bmV4dDsKLSAgICB9Ci0gICAgcmV0dXJuIGZhbHNlOwotfQotCiBib29sIFJlbmRlckxheWVyQ29t
cG9zaXRvcjo6cmVxdWlyZXNDb21wb3NpdGluZ0ZvclNjcm9sbGFibGVGcmFtZSgpIGNvbnN0CiB7
CiAgICAgLy8gTmVlZCB0aGlzIGRvbmUgZmlyc3QgdG8gZGV0ZXJtaW5lIG92ZXJmbG93LgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5o
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5oCmluZGV4
IDAzMjcxYzExMTk3ZTBmOWRkNjUwYzYzNWRlNzkzMGNlMzJmODU3OWYuLjJhNDhlMjc3YTNiYzVi
N2U2MzZhMzJhM2Q3MTUwNWJjNWE4Mjk5YTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJMYXllckNvbXBvc2l0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmgKQEAgLTE1NCw5ICsxNTQsNiBAQCBwdWJsaWM6
CiAgICAgLy8gV2hldGhlciBsYXllcidzIGJhY2tpbmcgbmVlZHMgYSBncmFwaGljcyBsYXllciB0
byBjbGlwIHotb3JkZXIgY2hpbGRyZW4gb2YgdGhlIGdpdmVuIGxheWVyLgogICAgIGJvb2wgY2xp
cHNDb21wb3NpdGluZ0Rlc2NlbmRhbnRzKGNvbnN0IFJlbmRlckxheWVyKikgY29uc3Q7CiAKLSAg
ICAvLyBXaGV0aGVyIHRoZSBsYXllciBpcyBmaXhlZCBwb3NpdGlvbmVkIHRvIHRoZSB2aWV3IGJ5
IGFuIGFuY2VzdG9yIGxheWVyLgotICAgIGJvb2wgZml4ZWRQb3NpdGlvbmVkQnlBbmNlc3Rvcihj
b25zdCBSZW5kZXJMYXllciopIGNvbnN0OwotCiAgICAgLy8gV2hldGhlciB0aGUgZ2l2ZW4gbGF5
ZXIgbmVlZHMgYW4gZXh0cmEgJ2NvbnRlbnRzJyBsYXllci4KICAgICBib29sIG5lZWRzQ29udGVu
dHNDb21wb3NpdGluZ0xheWVyKGNvbnN0IFJlbmRlckxheWVyKikgY29uc3Q7CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>193420</attachid>
            <date>2013-03-15 21:10:14 -0700</date>
            <delta_ts>2013-03-18 16:20:56 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-111670-20130315210609.patch</filename>
            <type>text/plain</type>
            <size>17358</size>
            <attacher name="Tien-Ren Chen">trchen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ1ODAyCmRpZmYgLS1naXQgYS9Tb3VyY2UvUGxhdGZvcm0v
Q2hhbmdlTG9nIGIvU291cmNlL1BsYXRmb3JtL0NoYW5nZUxvZwppbmRleCA0MmZiMTYxMTMzNjg0
YTdkM2NkYTdkZTMxMTc3OTliNTJiMGQ2ZWRmLi4wNGNhYjAzMmQxYjE2YWFmZmY1YTAxMmI2MWM0
NDc0NDJkNWIyYWRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvUGxhdGZvcm0vQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9QbGF0Zm9ybS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNyBAQAorMjAxMy0wMy0xNSAg
VGllbi1SZW4gQ2hlbiAgPHRyY2hlbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgSW1wbGVtZW50
IHBpbmNoIHpvb20gZm9yIGJvdHRvbS1yaWdodCBmaXhlZC1wb3NpdGlvbiBlbGVtZW50cworICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTExNjcwCisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkZWQgV2ViTGF5
ZXJQb3NpdGlvbkNvbnN0cmFpbnQgZm9yIGxheWVycyB0aGF0IG5lZWQgZHluYW1pYyBwb3NpdGlv
bmluZy4KKyAgICAgICAgQ3VycmVudGx5IGl0IGlzIG9ubHkgdXNlZCBmb3IgZml4ZWQtcG9zaXRp
b24gbGF5ZXJzLgorCisgICAgICAgICogUGxhdGZvcm0uZ3lwaToKKyAgICAgICAgKiBjaHJvbWl1
bS9wdWJsaWMvV2ViTGF5ZXIuaDoKKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChXZWJMYXll
cik6CisgICAgICAgIChXZWJLaXQ6OldlYkxheWVyOjpzZXRGaXhlZFRvQ29udGFpbmVyTGF5ZXIp
OgorICAgICAgICAoV2ViS2l0OjpXZWJMYXllcjo6Zml4ZWRUb0NvbnRhaW5lckxheWVyKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViTGF5ZXI6OnNldFBvc2l0aW9uQ29uc3RyYWludCk6CisgICAgICAg
IChXZWJLaXQ6OldlYkxheWVyOjpwb3NpdGlvbkNvbnN0cmFpbnQpOgorICAgICAgICAqIGNocm9t
aXVtL3B1YmxpYy9XZWJMYXllclBvc2l0aW9uQ29uc3RyYWludC5oOiBBZGRlZC4KKyAgICAgICAg
KFdlYktpdCk6CisgICAgICAgIChXZWJMYXllclBvc2l0aW9uQ29uc3RyYWludCk6CisgICAgICAg
IChXZWJLaXQ6OldlYkxheWVyUG9zaXRpb25Db25zdHJhaW50OjpXZWJMYXllclBvc2l0aW9uQ29u
c3RyYWludCk6CisgICAgICAgIChXZWJLaXQ6OldlYkxheWVyUG9zaXRpb25Db25zdHJhaW50Ojpm
aXhlZFBvc2l0aW9uKToKKwogMjAxMy0wMy0xMyAgVG9tbXkgV2lkZW5mbHljaHQgIDx0b21teXdA
Z29vZ2xlLmNvbT4KIAogICAgICAgICBbY2hyb21pdW1dIE1lZGlhU3RyZWFtIEFQSTogQ2xlYW5p
bmcgYXdheSBkZXByZWNhdGVkIGFuZCB1bnVzZWQgc3RhdGVzCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMWRiOWE2
MmM4MmMwOTUxNGQ4MDJiYjBjZWIzZTA1MGIyZDM3YTI0OC4uZTI4Nzc1MTJjZmUwZTIxNGYxNDZh
Zjg3YmZmOTJmM2JkY2JmYTIxMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9n
CisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMyIEBACisyMDEzLTAz
LTE1ICBUaWVuLVJlbiBDaGVuICA8dHJjaGVuQGNocm9taXVtLm9yZz4KKworICAgICAgICBJbXBs
ZW1lbnQgcGluY2ggem9vbSBmb3IgYm90dG9tLXJpZ2h0IGZpeGVkLXBvc2l0aW9uIGVsZW1lbnRz
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTE2NzAK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIHBh
dGNoIGFkZHMgc3VwcG9ydCB0byBib3R0b20tcmlnaHQgZml4ZWQtcG9zaXRpb24gZWxlbWVudHMg
YnkKKyAgICAgICAgaW50cm9kdWNpbmcgV2ViTGF5ZXJQb3NpdGlvbkNvbnN0cmFpbnQgdG8gV2Vi
TGF5ZXIuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLiBDYW4ndCB0ZXN0IHVudGlsIGNocm9taXVt
IHBhdGNoIGxhbmRlZC4KKworICAgICAgICAqIHBhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ0Nvb3Jk
aW5hdG9yLmg6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdDb29yZGluYXRvcjo6dXBkYXRl
TGF5ZXJQb3NpdGlvbkNvbnN0cmFpbnQpOgorICAgICAgICAqIHBhZ2Uvc2Nyb2xsaW5nL2Nocm9t
aXVtL1Njcm9sbGluZ0Nvb3JkaW5hdG9yQ2hyb21pdW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Y2xlYXJQb3NpdGlvbkNvbnN0cmFpbnRFeGNlcHQpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAg
ICAgIChXZWJDb3JlOjpjb21wdXRlUG9zaXRpb25Db25zdHJhaW50KToKKyAgICAgICAgKFdlYkNv
cmU6OlNjcm9sbGluZ0Nvb3JkaW5hdG9yQ2hyb21pdW06OnVwZGF0ZUxheWVyUG9zaXRpb25Db25z
dHJhaW50KToKKyAgICAgICAgKiBwYWdlL3Njcm9sbGluZy9jaHJvbWl1bS9TY3JvbGxpbmdDb29y
ZGluYXRvckNocm9taXVtLmg6CisgICAgICAgIChTY3JvbGxpbmdDb29yZGluYXRvckNocm9taXVt
KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlckxheWVyQmFja2luZzo6cmVnaXN0ZXJTY3JvbGxpbmdMYXllcnMpOgor
ICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuaDoKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlckxheWVyQmFja2luZzo6Y29udGVudHNDb250YWlubWVudExheWVyKToKKyAgICAg
ICAgKFJlbmRlckxheWVyQmFja2luZyk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxheWVy
Q29tcG9zaXRvci5jcHA6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRv
ci5oOgorCiAyMDEzLTAzLTE0ICBNYXJqYSBIw7ZsdHTDpCAgPG1hcmphQGNocm9taXVtLm9yZz4K
IAogICAgICAgICBbVjhdIFN0b3JlIG1haW4gd29ybGQgYW5kIG5vbi1tYWluIHdvcmxkIHRlbXBs
YXRlcyBzZXBhcmF0ZWx5LgpkaWZmIC0tZ2l0IGEvU291cmNlL1BsYXRmb3JtL1BsYXRmb3JtLmd5
cGkgYi9Tb3VyY2UvUGxhdGZvcm0vUGxhdGZvcm0uZ3lwaQppbmRleCA2MGFjMWI4NzVjNGM2OWVl
YTdhNjIyNmI3OGE3OTYyMzU3ZDY3ZTI4Li4yMmFiZmE0NzNkOTI5ZDlkNzdmY2U3ZjQ5YzE5Mjc3
MzAyNTE4ZWMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvUGxhdGZvcm0vUGxhdGZvcm0uZ3lwaQorKysg
Yi9Tb3VyY2UvUGxhdGZvcm0vUGxhdGZvcm0uZ3lwaQpAQCAtODIsNiArODIsNyBAQAogICAgICAg
ICAgICAgJ2Nocm9taXVtL3B1YmxpYy9XZWJJbWFnZS5oJywKICAgICAgICAgICAgICdjaHJvbWl1
bS9wdWJsaWMvV2ViSW1hZ2VMYXllci5oJywKICAgICAgICAgICAgICdjaHJvbWl1bS9wdWJsaWMv
V2ViTGF5ZXIuaCcsCisgICAgICAgICAgICAnY2hyb21pdW0vcHVibGljL1dlYkxheWVyUG9zaXRp
b25Db25zdHJhaW50LmgnLAogICAgICAgICAgICAgJ2Nocm9taXVtL3B1YmxpYy9XZWJMYXllclNj
cm9sbENsaWVudC5oJywKICAgICAgICAgICAgICdjaHJvbWl1bS9wdWJsaWMvV2ViTGF5ZXJUcmVl
Vmlldy5oJywKICAgICAgICAgICAgICdjaHJvbWl1bS9wdWJsaWMvV2ViTG9jYWxpemVkU3RyaW5n
LmgnLApkaWZmIC0tZ2l0IGEvU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJMYXll
ci5oIGIvU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJMYXllci5oCmluZGV4IDAx
MzRjMzBjNmRiNzY5Mjg1Zjk2ZjY4MjZhNmQxYTI4MDk0YzUxYTIuLmJmMTA2ZjM4M2IwNzY4ODFj
NGE4NzVmMmNiYTQ3NTEzNDgzZDBiNWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9QbGF0Zm9ybS9jaHJv
bWl1bS9wdWJsaWMvV2ViTGF5ZXIuaAorKysgYi9Tb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVi
bGljL1dlYkxheWVyLmgKQEAgLTI5LDYgKzI5LDEwIEBACiAjaW5jbHVkZSAiV2ViQW5pbWF0aW9u
LmgiCiAjaW5jbHVkZSAiV2ViQ29sb3IuaCIKICNpbmNsdWRlICJXZWJDb21tb24uaCIKKworLy8g
UmVtb3ZlIGFmdGVyIGNocm9taXVtIHBhdGNoIGxhbmRlZAorI2luY2x1ZGUgIldlYkxheWVyUG9z
aXRpb25Db25zdHJhaW50LmgiCisKICNpbmNsdWRlICJXZWJQb2ludC5oIgogI2luY2x1ZGUgIldl
YlByaXZhdGVQdHIuaCIKICNpbmNsdWRlICJXZWJSZWN0LmgiCkBAIC00NCw2ICs0OCw3IEBAIGNs
YXNzIFdlYkZpbHRlck9wZXJhdGlvbnM7CiBjbGFzcyBXZWJMYXllclNjcm9sbENsaWVudDsKIHN0
cnVjdCBXZWJGbG9hdFBvaW50Owogc3RydWN0IFdlYkZsb2F0UmVjdDsKK3N0cnVjdCBXZWJMYXll
clBvc2l0aW9uQ29uc3RyYWludDsKIHN0cnVjdCBXZWJTaXplOwogCiBjbGFzcyBXZWJMYXllcklt
cGw7CkBAIC0xODksOCArMTk0LDEyIEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgc2V0SXND
b250YWluZXJGb3JGaXhlZFBvc2l0aW9uTGF5ZXJzKGJvb2wpID0gMDsKICAgICB2aXJ0dWFsIGJv
b2wgaXNDb250YWluZXJGb3JGaXhlZFBvc2l0aW9uTGF5ZXJzKCkgY29uc3QgPSAwOwogCi0gICAg
dmlydHVhbCB2b2lkIHNldEZpeGVkVG9Db250YWluZXJMYXllcihib29sKSA9IDA7Ci0gICAgdmly
dHVhbCBib29sIGZpeGVkVG9Db250YWluZXJMYXllcigpIGNvbnN0ID0gMDsKKyAgICAvLyBEZXBy
ZWNhdGVkLCByZW1vdmUgYWZ0ZXIgY2hyb21pdW0gcGF0Y2ggbGFuZGVkCisgICAgdmlydHVhbCB2
b2lkIHNldEZpeGVkVG9Db250YWluZXJMYXllcihib29sKSB7IH0KKyAgICB2aXJ0dWFsIGJvb2wg
Zml4ZWRUb0NvbnRhaW5lckxheWVyKCkgY29uc3QgeyByZXR1cm4gcG9zaXRpb25Db25zdHJhaW50
KCkuaXNGaXhlZFBvc2l0aW9uOyB9CisgICAgLy8gVXNlIHRoaXMgaW5zdGVhZCwgcmVtb3ZlIHN0
dWIgYWZ0ZXIgY2hyb21pdW0gcGF0Y2ggbGFuZGVkCisgICAgdmlydHVhbCB2b2lkIHNldFBvc2l0
aW9uQ29uc3RyYWludChjb25zdCBXZWJMYXllclBvc2l0aW9uQ29uc3RyYWludCYgY29uc3RyYWlu
dCkgeyBzZXRGaXhlZFRvQ29udGFpbmVyTGF5ZXIoY29uc3RyYWludC5pc0ZpeGVkUG9zaXRpb24p
OyB9CisgICAgdmlydHVhbCBXZWJMYXllclBvc2l0aW9uQ29uc3RyYWludCBwb3NpdGlvbkNvbnN0
cmFpbnQoKSBjb25zdCB7IHJldHVybiBXZWJMYXllclBvc2l0aW9uQ29uc3RyYWludCgpOyB9CiAK
ICAgICAvLyBUaGUgc2Nyb2xsIGNsaWVudCBpcyBub3RpZmllZCB3aGVuIHRoZSBzY3JvbGwgcG9z
aXRpb24gb2YgdGhlIFdlYkxheWVyCiAgICAgLy8gY2hhbmdlcy4gT25seSBhIHNpbmdsZSBzY3Jv
bGwgY2xpZW50IGNhbiBiZSBzZXQgZm9yIGEgV2ViTGF5ZXIgYXQgYSB0aW1lLgpkaWZmIC0tZ2l0
IGEvU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJMYXllclBvc2l0aW9uQ29uc3Ry
YWludC5oIGIvU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJMYXllclBvc2l0aW9u
Q29uc3RyYWludC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjBmMWI5ZjhmNjk1NTBkN2Q5NDExNWI3NmIxMWNhMmU1
NWI2NTI3MDcKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVi
bGljL1dlYkxheWVyUG9zaXRpb25Db25zdHJhaW50LmgKQEAgLTAsMCArMSw1NSBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxMyBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
QU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVE
CisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNpZm5kZWYgV2ViTGF5ZXJQb3NpdGlvbkNvbnN0cmFpbnRfaAorI2RlZmluZSBXZWJMYXllclBv
c2l0aW9uQ29uc3RyYWludF9oCisKK25hbWVzcGFjZSBXZWJLaXQgeworCitzdHJ1Y3QgV2ViTGF5
ZXJQb3NpdGlvbkNvbnN0cmFpbnQgeworICAgIGJvb2wgaXNGaXhlZFBvc2l0aW9uICAgICA6IDE7
CisgICAgYm9vbCBpc0ZpeGVkVG9SaWdodEVkZ2UgIDogMTsKKyAgICBib29sIGlzRml4ZWRUb0Jv
dHRvbUVkZ2UgOiAxOworCisgICAgV2ViTGF5ZXJQb3NpdGlvbkNvbnN0cmFpbnQoKQorICAgICAg
ICA6IGlzRml4ZWRQb3NpdGlvbihmYWxzZSkKKyAgICAgICAgLCBpc0ZpeGVkVG9SaWdodEVkZ2Uo
ZmFsc2UpCisgICAgICAgICwgaXNGaXhlZFRvQm90dG9tRWRnZShmYWxzZSkKKyAgICB7CisgICAg
fQorCisgICAgc3RhdGljIFdlYkxheWVyUG9zaXRpb25Db25zdHJhaW50IGZpeGVkUG9zaXRpb24o
Ym9vbCBmaXhlZFRvUmlnaHRFZGdlLCBib29sIGZpeGVkVG9Cb3R0b21FZGdlKQorICAgIHsKKyAg
ICAgICAgV2ViTGF5ZXJQb3NpdGlvbkNvbnN0cmFpbnQgY29uc3RyYWludDsKKyAgICAgICAgY29u
c3RyYWludC5pc0ZpeGVkUG9zaXRpb24gPSB0cnVlOworICAgICAgICBjb25zdHJhaW50LmlzRml4
ZWRUb1JpZ2h0RWRnZSA9IGZpeGVkVG9SaWdodEVkZ2U7CisgICAgICAgIGNvbnN0cmFpbnQuaXNG
aXhlZFRvQm90dG9tRWRnZSA9IGZpeGVkVG9Cb3R0b21FZGdlOworICAgICAgICByZXR1cm4gY29u
c3RyYWludDsKKyAgICB9Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8v
IFdlYkxheWVyUG9zaXRpb25Db25zdHJhaW50X2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ0Nvb3JkaW5hdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL3Njcm9sbGluZy9TY3JvbGxpbmdDb29yZGluYXRvci5oCmluZGV4IDE0ZDkwZTVkNzgwNTA5
MmE2M2NlOTg2YTMwYTE0YjA4YzMwZTE3OTkuLjJlY2I0NjQ2M2IzY2IxZWYyYzA3NTZjZTRiYTY2
NzNmZDg4ODQ5ODggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Nj
cm9sbGluZ0Nvb3JkaW5hdG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcv
U2Nyb2xsaW5nQ29vcmRpbmF0b3IuaApAQCAtMTUzLDcgKzE1Myw3IEBAIHB1YmxpYzoKICAgICB2
aXJ0dWFsIHZvaWQgc2Nyb2xsYWJsZUFyZWFTY3JvbGxMYXllckRpZENoYW5nZShTY3JvbGxhYmxl
QXJlYSopIHsgfQogICAgIHZpcnR1YWwgdm9pZCBzY3JvbGxhYmxlQXJlYVNjcm9sbGJhckxheWVy
RGlkQ2hhbmdlKFNjcm9sbGFibGVBcmVhKiwgU2Nyb2xsYmFyT3JpZW50YXRpb24pIHsgfQogICAg
IHZpcnR1YWwgdm9pZCBzZXRMYXllcklzQ29udGFpbmVyRm9yRml4ZWRQb3NpdGlvbkxheWVycyhH
cmFwaGljc0xheWVyKiwgYm9vbCkgeyB9Ci0gICAgdmlydHVhbCB2b2lkIHNldExheWVySXNGaXhl
ZFRvQ29udGFpbmVyTGF5ZXIoR3JhcGhpY3NMYXllciosIGJvb2wpIHsgfQorICAgIHZpcnR1YWwg
dm9pZCB1cGRhdGVMYXllclBvc2l0aW9uQ29uc3RyYWludChSZW5kZXJMYXllciopIHsgfQogICAg
IHZpcnR1YWwgdm9pZCB0b3VjaEV2ZW50VGFyZ2V0UmVjdHNEaWRDaGFuZ2UoY29uc3QgRG9jdW1l
bnQqKSB7IH0KIAogI2lmIEVOQUJMRShUT1VDSF9FVkVOVF9UUkFDS0lORykKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL2Nocm9taXVtL1Njcm9sbGluZ0Nvb3JkaW5h
dG9yQ2hyb21pdW0uY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvY2hyb21pdW0v
U2Nyb2xsaW5nQ29vcmRpbmF0b3JDaHJvbWl1bS5jcHAKaW5kZXggMjU4YjE2NjkzMWRhZmExYzdi
Y2E5Yjg2ZGNlMzQxZWRjMWU2MTM1MC4uY2FhOGU1ZjkxZWQ3N2M5NWVjNzc4MzRhNzJiYzAwOGU3
NTMwOTg4ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvY2hyb21p
dW0vU2Nyb2xsaW5nQ29vcmRpbmF0b3JDaHJvbWl1bS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9zY3JvbGxpbmcvY2hyb21pdW0vU2Nyb2xsaW5nQ29vcmRpbmF0b3JDaHJvbWl1bS5jcHAK
QEAgLTMyLDYgKzMyLDcgQEAKICNpbmNsdWRlICJHcmFwaGljc0xheWVyQ2hyb21pdW0uaCIKICNp
bmNsdWRlICJQYWdlLmgiCiAjaW5jbHVkZSAiUmVnaW9uLmgiCisjaW5jbHVkZSAiUmVuZGVyTGF5
ZXJCYWNraW5nLmgiCiAjaW5jbHVkZSAiUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmgiCiAjaW5jbHVk
ZSAiUmVuZGVyVmlldy5oIgogI2luY2x1ZGUgIlNjcm9sbGJhclRoZW1lQ29tcG9zaXRlLmgiCkBA
IC0zOSwxMiArNDAsMTQgQEAKICNpbmNsdWRlICJXZWJTY3JvbGxiYXJUaGVtZUdlb21ldHJ5TmF0
aXZlLmgiCiAjaW5jbHVkZSA8cHVibGljL1BsYXRmb3JtLmg+CiAjaW5jbHVkZSA8cHVibGljL1dl
YkNvbXBvc2l0b3JTdXBwb3J0Lmg+CisjaW5jbHVkZSA8cHVibGljL1dlYkxheWVyUG9zaXRpb25D
b25zdHJhaW50Lmg+CiAjaW5jbHVkZSA8cHVibGljL1dlYlNjcm9sbGJhci5oPgogI2luY2x1ZGUg
PHB1YmxpYy9XZWJTY3JvbGxiYXJMYXllci5oPgogI2luY2x1ZGUgPHB1YmxpYy9XZWJTY3JvbGxi
YXJUaGVtZUdlb21ldHJ5Lmg+CiAjaW5jbHVkZSA8cHVibGljL1dlYlNjcm9sbGJhclRoZW1lUGFp
bnRlci5oPgogCiB1c2luZyBXZWJLaXQ6OldlYkxheWVyOwordXNpbmcgV2ViS2l0OjpXZWJMYXll
clBvc2l0aW9uQ29uc3RyYWludDsKIHVzaW5nIFdlYktpdDo6V2ViUmVjdDsKIHVzaW5nIFdlYktp
dDo6V2ViU2Nyb2xsYmFyTGF5ZXI7CiB1c2luZyBXZWJLaXQ6OldlYlZlY3RvcjsKQEAgLTIzMywx
MCArMjM2LDQxIEBAIHZvaWQgU2Nyb2xsaW5nQ29vcmRpbmF0b3JDaHJvbWl1bTo6c2V0TGF5ZXJJ
c0NvbnRhaW5lckZvckZpeGVkUG9zaXRpb25MYXllcnMoR3JhCiAgICAgICAgIHNjcm9sbGFibGVM
YXllci0+c2V0SXNDb250YWluZXJGb3JGaXhlZFBvc2l0aW9uTGF5ZXJzKGVuYWJsZSk7CiB9CiAK
LXZvaWQgU2Nyb2xsaW5nQ29vcmRpbmF0b3JDaHJvbWl1bTo6c2V0TGF5ZXJJc0ZpeGVkVG9Db250
YWluZXJMYXllcihHcmFwaGljc0xheWVyKiBsYXllciwgYm9vbCBlbmFibGUpCitzdGF0aWMgdm9p
ZCBjbGVhclBvc2l0aW9uQ29uc3RyYWludEV4Y2VwdChHcmFwaGljc0xheWVyKiBsYXllciwgR3Jh
cGhpY3NMYXllciogZXhjZXB0KQogewotICAgIGlmIChXZWJMYXllciogc2Nyb2xsYWJsZUxheWVy
ID0gc2Nyb2xsaW5nV2ViTGF5ZXJGb3JHcmFwaGljc0xheWVyKGxheWVyKSkKLSAgICAgICAgc2Ny
b2xsYWJsZUxheWVyLT5zZXRGaXhlZFRvQ29udGFpbmVyTGF5ZXIoZW5hYmxlKTsKKyAgICBpZiAo
bGF5ZXIgJiYgbGF5ZXIgIT0gZXhjZXB0ICYmIHNjcm9sbGluZ1dlYkxheWVyRm9yR3JhcGhpY3NM
YXllcihsYXllcikpCisgICAgICAgIHNjcm9sbGluZ1dlYkxheWVyRm9yR3JhcGhpY3NMYXllcihs
YXllciktPnNldFBvc2l0aW9uQ29uc3RyYWludChXZWJMYXllclBvc2l0aW9uQ29uc3RyYWludCgp
KTsKK30KKworc3RhdGljIFdlYkxheWVyUG9zaXRpb25Db25zdHJhaW50IGNvbXB1dGVQb3NpdGlv
bkNvbnN0cmFpbnQoY29uc3QgUmVuZGVyTGF5ZXIqIGxheWVyKQoreworICAgIEFTU0VSVChsYXll
ci0+aXNDb21wb3NpdGVkKCkpOworICAgIGRvIHsKKyAgICAgICAgaWYgKGxheWVyLT5yZW5kZXJl
cigpLT5zdHlsZSgpLT5wb3NpdGlvbigpID09IEZpeGVkUG9zaXRpb24pIHsKKyAgICAgICAgICAg
IGNvbnN0IFJlbmRlck9iamVjdCogZml4ZWRQb3NpdGlvbk9iamVjdCA9IGxheWVyLT5yZW5kZXJl
cigpOworICAgICAgICAgICAgYm9vbCBmaXhlZFRvUmlnaHQgPSAhZml4ZWRQb3NpdGlvbk9iamVj
dC0+c3R5bGUoKS0+cmlnaHQoKS5pc0F1dG8oKTsKKyAgICAgICAgICAgIGJvb2wgZml4ZWRUb0Jv
dHRvbSA9ICFmaXhlZFBvc2l0aW9uT2JqZWN0LT5zdHlsZSgpLT5ib3R0b20oKS5pc0F1dG8oKTsK
KyAgICAgICAgICAgIHJldHVybiBXZWJMYXllclBvc2l0aW9uQ29uc3RyYWludDo6Zml4ZWRQb3Np
dGlvbihmaXhlZFRvUmlnaHQsIGZpeGVkVG9Cb3R0b20pOworICAgICAgICB9CisKKyAgICAgICAg
bGF5ZXIgPSBsYXllci0+cGFyZW50KCk7CisgICAgfSB3aGlsZSAobGF5ZXIgJiYgIWxheWVyLT5p
c0NvbXBvc2l0ZWQoKSk7CisgICAgcmV0dXJuIFdlYkxheWVyUG9zaXRpb25Db25zdHJhaW50KCk7
Cit9CisKK3ZvaWQgU2Nyb2xsaW5nQ29vcmRpbmF0b3JDaHJvbWl1bTo6dXBkYXRlTGF5ZXJQb3Np
dGlvbkNvbnN0cmFpbnQoUmVuZGVyTGF5ZXIqIGxheWVyKQoreworICAgIEFTU0VSVChsYXllci0+
YmFja2luZygpKTsKKyAgICBSZW5kZXJMYXllckJhY2tpbmcqIGJhY2tpbmcgPSBsYXllci0+YmFj
a2luZygpOworICAgIEdyYXBoaWNzTGF5ZXIqIG1haW5MYXllciA9IGJhY2tpbmctPmNoaWxkRm9y
U3VwZXJsYXllcnMoKTsKKworICAgIC8vIEF2b2lkIHVubmVjZXNzYXJ5IGNvbW1pdHMKKyAgICBj
bGVhclBvc2l0aW9uQ29uc3RyYWludEV4Y2VwdChiYWNraW5nLT5hbmNlc3RvckNsaXBwaW5nTGF5
ZXIoKSwgbWFpbkxheWVyKTsKKyAgICBjbGVhclBvc2l0aW9uQ29uc3RyYWludEV4Y2VwdChiYWNr
aW5nLT5jb250ZW50c0NvbnRhaW5tZW50TGF5ZXIoKSwgbWFpbkxheWVyKTsKKyAgICBjbGVhclBv
c2l0aW9uQ29uc3RyYWludEV4Y2VwdChiYWNraW5nLT5ncmFwaGljc0xheWVyKCksIG1haW5MYXll
cik7CisKKyAgICBpZiAoV2ViTGF5ZXIqIHNjcm9sbGFibGVMYXllciA9IHNjcm9sbGluZ1dlYkxh
eWVyRm9yR3JhcGhpY3NMYXllcihtYWluTGF5ZXIpKQorICAgICAgICBzY3JvbGxhYmxlTGF5ZXIt
PnNldFBvc2l0aW9uQ29uc3RyYWludChjb21wdXRlUG9zaXRpb25Db25zdHJhaW50KGxheWVyKSk7
CiB9CiAKIHZvaWQgU2Nyb2xsaW5nQ29vcmRpbmF0b3JDaHJvbWl1bTo6c2Nyb2xsYWJsZUFyZWFT
Y3JvbGxMYXllckRpZENoYW5nZShTY3JvbGxhYmxlQXJlYSogc2Nyb2xsYWJsZUFyZWEpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9jaHJvbWl1bS9TY3JvbGxpbmdD
b29yZGluYXRvckNocm9taXVtLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9jaHJv
bWl1bS9TY3JvbGxpbmdDb29yZGluYXRvckNocm9taXVtLmgKaW5kZXggYzFjMDI5YTIyZGI3ZGQ0
Yjc1NjEzYWJlMDQ4ZTQwYjI1OGFmNmEzYi4uMGZkMDNiZTM4MzU1M2MxYTQwMGRiOGJlNjFhNjEz
MGM1NWVmOGNlNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvY2hy
b21pdW0vU2Nyb2xsaW5nQ29vcmRpbmF0b3JDaHJvbWl1bS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2Uvc2Nyb2xsaW5nL2Nocm9taXVtL1Njcm9sbGluZ0Nvb3JkaW5hdG9yQ2hyb21pdW0uaApA
QCAtNTMsNyArNTMsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHNldExheWVySXNDb250
YWluZXJGb3JGaXhlZFBvc2l0aW9uTGF5ZXJzKEdyYXBoaWNzTGF5ZXIqLCBib29sKTsKIAogICAg
IC8vIEF0dGFjaC9kZXRhY2ggbGF5ZXIgcG9zaXRpb24gdG8gYW5jZXN0b3IgZml4ZWQgcG9zaXRp
b24gY29udGFpbmVyLgotICAgIHZpcnR1YWwgdm9pZCBzZXRMYXllcklzRml4ZWRUb0NvbnRhaW5l
ckxheWVyKEdyYXBoaWNzTGF5ZXIqLCBib29sKTsKKyAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlTGF5
ZXJQb3NpdGlvbkNvbnN0cmFpbnQoUmVuZGVyTGF5ZXIqKTsKIAogICAgIC8vIFNob3VsZCBiZSBj
YWxsZWQgd2hlbiBhIFNjcm9sbGFibGVBcmVhIGlzIGdldHRpbmcgZGVzdHJveWVkLgogICAgIHZp
cnR1YWwgdm9pZCB3aWxsRGVzdHJveVNjcm9sbGFibGVBcmVhKFNjcm9sbGFibGVBcmVhKik7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3BwCmluZGV4
IGIyZjBhYTEyNjQwNTY3MGZmODc3Y2Y4ZmU5MjA4OGEwNGI0ZTQyZWQuLmU0Yjk4M2Q0YzI5MjRk
MTQ3MGY5YjIzYzkyZGY2YmQyNDZhMzliMDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3BwCkBAIC04NTUsMTQgKzg1NSwxMSBAQCB2b2lkIFJl
bmRlckxheWVyQmFja2luZzo6cmVnaXN0ZXJTY3JvbGxpbmdMYXllcnMoKQogCiAgICAgY29tcG9z
aXRvcigpLT51cGRhdGVWaWV3cG9ydENvbnN0cmFpbnRTdGF0dXMobV9vd25pbmdMYXllcik7CiAK
LSAgICAvLyBGSVhNRTogaXQgd291bGQgYmUgbmljZSB0byBhdm9pZCBhbGwgdGhpcyB3b3JrIGlm
IHRoZSBwbGF0Zm9ybSBkb2Vzbid0IGltcGxlbWVudCBzZXRMYXllcklzRml4ZWRUb0NvbnRhaW5l
ckxheWVyKCkuCi0gICAgaWYgKHJlbmRlcmVyKCktPnN0eWxlKCktPnBvc2l0aW9uKCkgPT0gRml4
ZWRQb3NpdGlvbiB8fCBjb21wb3NpdG9yKCktPmZpeGVkUG9zaXRpb25lZEJ5QW5jZXN0b3IobV9v
d25pbmdMYXllcikpCi0gICAgICAgIHNjcm9sbGluZ0Nvb3JkaW5hdG9yLT5zZXRMYXllcklzRml4
ZWRUb0NvbnRhaW5lckxheWVyKGNoaWxkRm9yU3VwZXJsYXllcnMoKSwgdHJ1ZSk7Ci0gICAgZWxz
ZSB7Ci0gICAgICAgIGlmIChtX2FuY2VzdG9yQ2xpcHBpbmdMYXllcikKLSAgICAgICAgICAgIHNj
cm9sbGluZ0Nvb3JkaW5hdG9yLT5zZXRMYXllcklzRml4ZWRUb0NvbnRhaW5lckxheWVyKG1fYW5j
ZXN0b3JDbGlwcGluZ0xheWVyLmdldCgpLCBmYWxzZSk7Ci0gICAgICAgIHNjcm9sbGluZ0Nvb3Jk
aW5hdG9yLT5zZXRMYXllcklzRml4ZWRUb0NvbnRhaW5lckxheWVyKG1fZ3JhcGhpY3NMYXllci5n
ZXQoKSwgZmFsc2UpOwotICAgIH0KKyAgICBpZiAoIXNjcm9sbGluZ0Nvb3JkaW5hdG9yLT5zdXBw
b3J0c0ZpeGVkUG9zaXRpb25MYXllcnMoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgc2Nyb2xs
aW5nQ29vcmRpbmF0b3ItPnVwZGF0ZUxheWVyUG9zaXRpb25Db25zdHJhaW50KG1fb3duaW5nTGF5
ZXIpOworCiAgICAgLy8gUGFnZSBzY2FsZSBpcyBhcHBsaWVkIGFzIGEgdHJhbnNmb3JtIG9uIHRo
ZSByb290IHJlbmRlciB2aWV3IGxheWVyLiBCZWNhdXNlIHRoZSBzY3JvbGwKICAgICAvLyBsYXll
ciBpcyBmdXJ0aGVyIHVwIGluIHRoZSBoaWVyYXJjaHksIHdlIG5lZWQgdG8gYXZvaWQgbWFya2lu
ZyB0aGUgcm9vdCByZW5kZXIgdmlldwogICAgIC8vIGxheWVyIGFzIGEgY29udGFpbmVyLgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5oIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5oCmluZGV4IDg5ZDhj
MTQ1Yzc1MWYyMjViZTNhMmJmZmE2Y2VmMDhkZjJmMGE2Y2MuLjljMTBlNWNhNDBkYjgyNjM4YmRl
NmFjNjhkZTgwMGM3YzQ2ODhhMWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJMYXllckJhY2tpbmcuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyTGF5ZXJCYWNraW5nLmgKQEAgLTg3LDYgKzg3LDggQEAgcHVibGljOgogICAgIGJvb2wgaGFz
QW5jZXN0b3JDbGlwcGluZ0xheWVyKCkgY29uc3QgeyByZXR1cm4gbV9hbmNlc3RvckNsaXBwaW5n
TGF5ZXIgIT0gMDsgfQogICAgIEdyYXBoaWNzTGF5ZXIqIGFuY2VzdG9yQ2xpcHBpbmdMYXllcigp
IGNvbnN0IHsgcmV0dXJuIG1fYW5jZXN0b3JDbGlwcGluZ0xheWVyLmdldCgpOyB9CiAKKyAgICBH
cmFwaGljc0xheWVyKiBjb250ZW50c0NvbnRhaW5tZW50TGF5ZXIoKSBjb25zdCB7IHJldHVybiBt
X2NvbnRlbnRzQ29udGFpbm1lbnRMYXllci5nZXQoKTsgfQorCiAgICAgYm9vbCBoYXNDb250ZW50
c0xheWVyKCkgY29uc3QgeyByZXR1cm4gbV9mb3JlZ3JvdW5kTGF5ZXIgIT0gMDsgfQogICAgIEdy
YXBoaWNzTGF5ZXIqIGZvcmVncm91bmRMYXllcigpIGNvbnN0IHsgcmV0dXJuIG1fZm9yZWdyb3Vu
ZExheWVyLmdldCgpOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJMYXllckNvbXBvc2l0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckxheWVyQ29tcG9zaXRvci5jcHAKaW5kZXggM2Q3NDFhZTJhNDlhMmZjYjhiOTA4YmViN2MzNjVk
OTA3N2ExMDQzOS4uMDAzZjljMGY2YjVlNzE1Zjc2NDU2ZDNiYWQyOTI2MWEyZjk4NTc2YiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5j
cHAKQEAgLTE5MzUsMzEgKzE5MzUsNiBAQCBib29sIFJlbmRlckxheWVyQ29tcG9zaXRvcjo6Y2xp
cHNDb21wb3NpdGluZ0Rlc2NlbmRhbnRzKGNvbnN0IFJlbmRlckxheWVyKiBsYXllcgogICAgIHJl
dHVybiBsYXllci0+aGFzQ29tcG9zaXRpbmdEZXNjZW5kYW50KCkgJiYgbGF5ZXItPnJlbmRlcmVy
KCktPmhhc0NsaXBPck92ZXJmbG93Q2xpcCgpOwogfQogCi0vLyBSZXR1cm4gdHJ1ZSBpZiB0aGVy
ZSBpcyBhbiBhbmNlc3RvciBsYXllciB0aGF0IGlzIGZpeGVkIHBvc2l0aW9uZWQgdG8gdGhlIHZp
ZXcuCi0vLyBOb3RlIHRoYXQgaWYgdGhlIGFuY2VzdG9yIGhhcyBhIHN0YWNraW5nIGNvbnRleHQg
YW5kIGlzIGZpeGVkIHBvc2l0aW9uIHRoZW4gdGhpcyBtZXRob2QKLS8vIHdpbGwgcmV0dXJuIGZh
bHNlLgotYm9vbCBSZW5kZXJMYXllckNvbXBvc2l0b3I6OmZpeGVkUG9zaXRpb25lZEJ5QW5jZXN0
b3IoY29uc3QgUmVuZGVyTGF5ZXIqIGxheWVyKSBjb25zdAotewotICAgIGlmICghbGF5ZXItPmlz
Q29tcG9zaXRlZCgpIHx8ICFsYXllci0+cGFyZW50KCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsK
LQotICAgIGNvbnN0IFJlbmRlckxheWVyKiBjb21wb3NpdGluZ0FuY2VzdG9yID0gbGF5ZXItPmFu
Y2VzdG9yQ29tcG9zaXRpbmdMYXllcigpOwotICAgIGlmICghY29tcG9zaXRpbmdBbmNlc3RvcikK
LSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgY29uc3QgUmVuZGVyTGF5ZXIqIGN1cnIgPSBs
YXllcjsKLSAgICB3aGlsZSAoY3VycikgewotICAgICAgICBjb25zdCBSZW5kZXJMYXllciogbmV4
dCA9IGN1cnItPnBhcmVudCgpOwotICAgICAgICBpZiAobmV4dCA9PSBjb21wb3NpdGluZ0FuY2Vz
dG9yKQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgICAgIGlmIChuZXh0ICYmIG5l
eHQtPnJlbmRlcmVyKCktPnN0eWxlKCktPnBvc2l0aW9uKCkgPT0gRml4ZWRQb3NpdGlvbikKLSAg
ICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICBjdXJyID0gbmV4dDsKLSAgICB9Ci0gICAg
cmV0dXJuIGZhbHNlOwotfQotCiBib29sIFJlbmRlckxheWVyQ29tcG9zaXRvcjo6cmVxdWlyZXND
b21wb3NpdGluZ0ZvclNjcm9sbGFibGVGcmFtZSgpIGNvbnN0CiB7CiAgICAgLy8gTmVlZCB0aGlz
IGRvbmUgZmlyc3QgdG8gZGV0ZXJtaW5lIG92ZXJmbG93LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5oIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5oCmluZGV4IDAzMjcxYzExMTk3ZTBmOWRk
NjUwYzYzNWRlNzkzMGNlMzJmODU3OWYuLjJhNDhlMjc3YTNiYzViN2U2MzZhMzJhM2Q3MTUwNWJj
NWE4Mjk5YTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXll
ckNvbXBvc2l0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJD
b21wb3NpdG9yLmgKQEAgLTE1NCw5ICsxNTQsNiBAQCBwdWJsaWM6CiAgICAgLy8gV2hldGhlciBs
YXllcidzIGJhY2tpbmcgbmVlZHMgYSBncmFwaGljcyBsYXllciB0byBjbGlwIHotb3JkZXIgY2hp
bGRyZW4gb2YgdGhlIGdpdmVuIGxheWVyLgogICAgIGJvb2wgY2xpcHNDb21wb3NpdGluZ0Rlc2Nl
bmRhbnRzKGNvbnN0IFJlbmRlckxheWVyKikgY29uc3Q7CiAKLSAgICAvLyBXaGV0aGVyIHRoZSBs
YXllciBpcyBmaXhlZCBwb3NpdGlvbmVkIHRvIHRoZSB2aWV3IGJ5IGFuIGFuY2VzdG9yIGxheWVy
LgotICAgIGJvb2wgZml4ZWRQb3NpdGlvbmVkQnlBbmNlc3Rvcihjb25zdCBSZW5kZXJMYXllciop
IGNvbnN0OwotCiAgICAgLy8gV2hldGhlciB0aGUgZ2l2ZW4gbGF5ZXIgbmVlZHMgYW4gZXh0cmEg
J2NvbnRlbnRzJyBsYXllci4KICAgICBib29sIG5lZWRzQ29udGVudHNDb21wb3NpdGluZ0xheWVy
KGNvbnN0IFJlbmRlckxheWVyKikgY29uc3Q7CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>193683</attachid>
            <date>2013-03-18 16:21:00 -0700</date>
            <delta_ts>2013-03-28 13:48:45 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-111670-20130318161652.patch</filename>
            <type>text/plain</type>
            <size>17389</size>
            <attacher name="Tien-Ren Chen">trchen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ2MDU2CmRpZmYgLS1naXQgYS9Tb3VyY2UvUGxhdGZvcm0v
Q2hhbmdlTG9nIGIvU291cmNlL1BsYXRmb3JtL0NoYW5nZUxvZwppbmRleCAzMWRiMDc0NDAwOTdh
ZDNhZDQ1MmEyYTQ3ZjM3NzRkOGVhZGExNmYxLi5iMzY5MDhmMzEzMmMyZTA4MDc3MDIzMTJmYjQx
ODY1ZWU1YTQyNTJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvUGxhdGZvcm0vQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9QbGF0Zm9ybS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNyBAQAorMjAxMy0wMy0xOCAg
VGllbi1SZW4gQ2hlbiAgPHRyY2hlbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgU3VwcG9ydCBi
b3R0b20tcmlnaHQgYW5jaG9yZWQgZml4ZWQtcG9zaXRpb24gZWxlbWVudHMgZHVyaW5nIGEgcGlu
Y2ggZ2VzdHVyZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTExNjcwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgQWRkZWQgV2ViTGF5ZXJQb3NpdGlvbkNvbnN0cmFpbnQgZm9yIGxheWVycyB0aGF0IG5lZWQg
ZHluYW1pYyBwb3NpdGlvbmluZy4KKyAgICAgICAgQ3VycmVudGx5IGl0IGlzIG9ubHkgdXNlZCBm
b3IgZml4ZWQtcG9zaXRpb24gbGF5ZXJzLgorCisgICAgICAgICogUGxhdGZvcm0uZ3lwaToKKyAg
ICAgICAgKiBjaHJvbWl1bS9wdWJsaWMvV2ViTGF5ZXIuaDoKKyAgICAgICAgKFdlYktpdCk6Cisg
ICAgICAgIChXZWJMYXllcik6CisgICAgICAgIChXZWJLaXQ6OldlYkxheWVyOjpzZXRGaXhlZFRv
Q29udGFpbmVyTGF5ZXIpOgorICAgICAgICAoV2ViS2l0OjpXZWJMYXllcjo6Zml4ZWRUb0NvbnRh
aW5lckxheWVyKToKKyAgICAgICAgKFdlYktpdDo6V2ViTGF5ZXI6OnNldFBvc2l0aW9uQ29uc3Ry
YWludCk6CisgICAgICAgIChXZWJLaXQ6OldlYkxheWVyOjpwb3NpdGlvbkNvbnN0cmFpbnQpOgor
ICAgICAgICAqIGNocm9taXVtL3B1YmxpYy9XZWJMYXllclBvc2l0aW9uQ29uc3RyYWludC5oOiBB
ZGRlZC4KKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChXZWJMYXllclBvc2l0aW9uQ29uc3Ry
YWludCk6CisgICAgICAgIChXZWJLaXQ6OldlYkxheWVyUG9zaXRpb25Db25zdHJhaW50OjpXZWJM
YXllclBvc2l0aW9uQ29uc3RyYWludCk6CisgICAgICAgIChXZWJLaXQ6OldlYkxheWVyUG9zaXRp
b25Db25zdHJhaW50OjpmaXhlZFBvc2l0aW9uKToKKwogMjAxMy0wMy0xNyAgRGFuYSBKYW5zZW5z
ICA8ZGFuYWtqQGNocm9taXVtLm9yZz4KIAogICAgICAgICBbY2hyb21pdW1dIFJlbW92ZSB0aGUg
em9vbSBmaWx0ZXIgb3BlcmF0aW9uIGlmZGVmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTcxMmExMjYzOGQ3OGYy
ZjZiMzQ0YmU2MjZhMDhmODg5Yzk3NGRiNy4uMDE0MDcyZDdmNjA1MzdiYWFlOTkyYmNiYTUzMWM0
ZjU4MjFkZWFhZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMyIEBACisyMDEzLTAzLTE4ICBUaWVu
LVJlbiBDaGVuICA8dHJjaGVuQGNocm9taXVtLm9yZz4KKworICAgICAgICBTdXBwb3J0IGJvdHRv
bS1yaWdodCBhbmNob3JlZCBmaXhlZC1wb3NpdGlvbiBlbGVtZW50cyBkdXJpbmcgYSBwaW5jaCBn
ZXN0dXJlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
MTE2NzAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBU
aGlzIHBhdGNoIGFkZHMgc3VwcG9ydCB0byBib3R0b20tcmlnaHQgZml4ZWQtcG9zaXRpb24gZWxl
bWVudHMgYnkKKyAgICAgICAgaW50cm9kdWNpbmcgV2ViTGF5ZXJQb3NpdGlvbkNvbnN0cmFpbnQg
dG8gV2ViTGF5ZXIuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLiBDYW4ndCB0ZXN0IHVudGlsIGNo
cm9taXVtIHBhdGNoIGxhbmRlZC4KKworICAgICAgICAqIHBhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGlu
Z0Nvb3JkaW5hdG9yLmg6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdDb29yZGluYXRvcjo6
dXBkYXRlTGF5ZXJQb3NpdGlvbkNvbnN0cmFpbnQpOgorICAgICAgICAqIHBhZ2Uvc2Nyb2xsaW5n
L2Nocm9taXVtL1Njcm9sbGluZ0Nvb3JkaW5hdG9yQ2hyb21pdW0uY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6Y2xlYXJQb3NpdGlvbkNvbnN0cmFpbnRFeGNlcHRGb3JMYXllcik6CisgICAgICAgIChX
ZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OmNvbXB1dGVQb3NpdGlvbkNvbnN0cmFpbnQpOgor
ICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nQ29vcmRpbmF0b3JDaHJvbWl1bTo6dXBkYXRlTGF5
ZXJQb3NpdGlvbkNvbnN0cmFpbnQpOgorICAgICAgICAqIHBhZ2Uvc2Nyb2xsaW5nL2Nocm9taXVt
L1Njcm9sbGluZ0Nvb3JkaW5hdG9yQ2hyb21pdW0uaDoKKyAgICAgICAgKFNjcm9sbGluZ0Nvb3Jk
aW5hdG9yQ2hyb21pdW0pOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXJCYWNraW5nOjpyZWdpc3RlclNjcm9s
bGluZ0xheWVycyk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5oOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXJCYWNraW5nOjpjb250ZW50c0NvbnRhaW5tZW50
TGF5ZXIpOgorICAgICAgICAoUmVuZGVyTGF5ZXJCYWNraW5nKToKKyAgICAgICAgKiByZW5kZXJp
bmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmNwcDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVy
TGF5ZXJDb21wb3NpdG9yLmg6CisKIDIwMTMtMDMtMTggIEFsbGFuIFNhbmRmZWxkIEplbnNlbiAg
PGFsbGFuLmplbnNlbkBkaWdpYS5jb20+CiAKICAgICAgICAgQ2xlYW4gdXAgUmVuZGVyRnJhbWVT
ZXQ6Om5vZGVBdFBvaW50CmRpZmYgLS1naXQgYS9Tb3VyY2UvUGxhdGZvcm0vUGxhdGZvcm0uZ3lw
aSBiL1NvdXJjZS9QbGF0Zm9ybS9QbGF0Zm9ybS5neXBpCmluZGV4IDYwYWMxYjg3NWM0YzY5ZWVh
N2E2MjI2Yjc4YTc5NjIzNTdkNjdlMjguLjIyYWJmYTQ3M2Q5MjlkOWQ3N2ZjZTdmNDljMTkyNzcz
MDI1MThlYzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9QbGF0Zm9ybS9QbGF0Zm9ybS5neXBpCisrKyBi
L1NvdXJjZS9QbGF0Zm9ybS9QbGF0Zm9ybS5neXBpCkBAIC04Miw2ICs4Miw3IEBACiAgICAgICAg
ICAgICAnY2hyb21pdW0vcHVibGljL1dlYkltYWdlLmgnLAogICAgICAgICAgICAgJ2Nocm9taXVt
L3B1YmxpYy9XZWJJbWFnZUxheWVyLmgnLAogICAgICAgICAgICAgJ2Nocm9taXVtL3B1YmxpYy9X
ZWJMYXllci5oJywKKyAgICAgICAgICAgICdjaHJvbWl1bS9wdWJsaWMvV2ViTGF5ZXJQb3NpdGlv
bkNvbnN0cmFpbnQuaCcsCiAgICAgICAgICAgICAnY2hyb21pdW0vcHVibGljL1dlYkxheWVyU2Ny
b2xsQ2xpZW50LmgnLAogICAgICAgICAgICAgJ2Nocm9taXVtL3B1YmxpYy9XZWJMYXllclRyZWVW
aWV3LmgnLAogICAgICAgICAgICAgJ2Nocm9taXVtL3B1YmxpYy9XZWJMb2NhbGl6ZWRTdHJpbmcu
aCcsCmRpZmYgLS1naXQgYS9Tb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYkxheWVy
LmggYi9Tb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYkxheWVyLmgKaW5kZXggMDEz
NGMzMGM2ZGI3NjkyODVmOTZmNjgyNmE2ZDFhMjgwOTRjNTFhMi4uYmYxMDZmMzgzYjA3Njg4MWM0
YTg3NWYyY2JhNDc1MTM0ODNkMGI1ZCAxMDA2NDQKLS0tIGEvU291cmNlL1BsYXRmb3JtL2Nocm9t
aXVtL3B1YmxpYy9XZWJMYXllci5oCisrKyBiL1NvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJs
aWMvV2ViTGF5ZXIuaApAQCAtMjksNiArMjksMTAgQEAKICNpbmNsdWRlICJXZWJBbmltYXRpb24u
aCIKICNpbmNsdWRlICJXZWJDb2xvci5oIgogI2luY2x1ZGUgIldlYkNvbW1vbi5oIgorCisvLyBS
ZW1vdmUgYWZ0ZXIgY2hyb21pdW0gcGF0Y2ggbGFuZGVkCisjaW5jbHVkZSAiV2ViTGF5ZXJQb3Np
dGlvbkNvbnN0cmFpbnQuaCIKKwogI2luY2x1ZGUgIldlYlBvaW50LmgiCiAjaW5jbHVkZSAiV2Vi
UHJpdmF0ZVB0ci5oIgogI2luY2x1ZGUgIldlYlJlY3QuaCIKQEAgLTQ0LDYgKzQ4LDcgQEAgY2xh
c3MgV2ViRmlsdGVyT3BlcmF0aW9uczsKIGNsYXNzIFdlYkxheWVyU2Nyb2xsQ2xpZW50Owogc3Ry
dWN0IFdlYkZsb2F0UG9pbnQ7CiBzdHJ1Y3QgV2ViRmxvYXRSZWN0Oworc3RydWN0IFdlYkxheWVy
UG9zaXRpb25Db25zdHJhaW50Owogc3RydWN0IFdlYlNpemU7CiAKIGNsYXNzIFdlYkxheWVySW1w
bDsKQEAgLTE4OSw4ICsxOTQsMTIgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBzZXRJc0Nv
bnRhaW5lckZvckZpeGVkUG9zaXRpb25MYXllcnMoYm9vbCkgPSAwOwogICAgIHZpcnR1YWwgYm9v
bCBpc0NvbnRhaW5lckZvckZpeGVkUG9zaXRpb25MYXllcnMoKSBjb25zdCA9IDA7CiAKLSAgICB2
aXJ0dWFsIHZvaWQgc2V0Rml4ZWRUb0NvbnRhaW5lckxheWVyKGJvb2wpID0gMDsKLSAgICB2aXJ0
dWFsIGJvb2wgZml4ZWRUb0NvbnRhaW5lckxheWVyKCkgY29uc3QgPSAwOworICAgIC8vIERlcHJl
Y2F0ZWQsIHJlbW92ZSBhZnRlciBjaHJvbWl1bSBwYXRjaCBsYW5kZWQKKyAgICB2aXJ0dWFsIHZv
aWQgc2V0Rml4ZWRUb0NvbnRhaW5lckxheWVyKGJvb2wpIHsgfQorICAgIHZpcnR1YWwgYm9vbCBm
aXhlZFRvQ29udGFpbmVyTGF5ZXIoKSBjb25zdCB7IHJldHVybiBwb3NpdGlvbkNvbnN0cmFpbnQo
KS5pc0ZpeGVkUG9zaXRpb247IH0KKyAgICAvLyBVc2UgdGhpcyBpbnN0ZWFkLCByZW1vdmUgc3R1
YiBhZnRlciBjaHJvbWl1bSBwYXRjaCBsYW5kZWQKKyAgICB2aXJ0dWFsIHZvaWQgc2V0UG9zaXRp
b25Db25zdHJhaW50KGNvbnN0IFdlYkxheWVyUG9zaXRpb25Db25zdHJhaW50JiBjb25zdHJhaW50
KSB7IHNldEZpeGVkVG9Db250YWluZXJMYXllcihjb25zdHJhaW50LmlzRml4ZWRQb3NpdGlvbik7
IH0KKyAgICB2aXJ0dWFsIFdlYkxheWVyUG9zaXRpb25Db25zdHJhaW50IHBvc2l0aW9uQ29uc3Ry
YWludCgpIGNvbnN0IHsgcmV0dXJuIFdlYkxheWVyUG9zaXRpb25Db25zdHJhaW50KCk7IH0KIAog
ICAgIC8vIFRoZSBzY3JvbGwgY2xpZW50IGlzIG5vdGlmaWVkIHdoZW4gdGhlIHNjcm9sbCBwb3Np
dGlvbiBvZiB0aGUgV2ViTGF5ZXIKICAgICAvLyBjaGFuZ2VzLiBPbmx5IGEgc2luZ2xlIHNjcm9s
bCBjbGllbnQgY2FuIGJlIHNldCBmb3IgYSBXZWJMYXllciBhdCBhIHRpbWUuCmRpZmYgLS1naXQg
YS9Tb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYkxheWVyUG9zaXRpb25Db25zdHJh
aW50LmggYi9Tb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYkxheWVyUG9zaXRpb25D
b25zdHJhaW50LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMGYxYjlmOGY2OTU1MGQ3ZDk0MTE1Yjc2YjExY2EyZTU1
YjY1MjcwNwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJs
aWMvV2ViTGF5ZXJQb3NpdGlvbkNvbnN0cmFpbnQuaApAQCAtMCwwICsxLDU1IEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDEzIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBB
TkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQK
KyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I2lmbmRlZiBXZWJMYXllclBvc2l0aW9uQ29uc3RyYWludF9oCisjZGVmaW5lIFdlYkxheWVyUG9z
aXRpb25Db25zdHJhaW50X2gKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK3N0cnVjdCBXZWJMYXll
clBvc2l0aW9uQ29uc3RyYWludCB7CisgICAgYm9vbCBpc0ZpeGVkUG9zaXRpb24gICAgIDogMTsK
KyAgICBib29sIGlzRml4ZWRUb1JpZ2h0RWRnZSAgOiAxOworICAgIGJvb2wgaXNGaXhlZFRvQm90
dG9tRWRnZSA6IDE7CisKKyAgICBXZWJMYXllclBvc2l0aW9uQ29uc3RyYWludCgpCisgICAgICAg
IDogaXNGaXhlZFBvc2l0aW9uKGZhbHNlKQorICAgICAgICAsIGlzRml4ZWRUb1JpZ2h0RWRnZShm
YWxzZSkKKyAgICAgICAgLCBpc0ZpeGVkVG9Cb3R0b21FZGdlKGZhbHNlKQorICAgIHsKKyAgICB9
CisKKyAgICBzdGF0aWMgV2ViTGF5ZXJQb3NpdGlvbkNvbnN0cmFpbnQgZml4ZWRQb3NpdGlvbihi
b29sIGZpeGVkVG9SaWdodEVkZ2UsIGJvb2wgZml4ZWRUb0JvdHRvbUVkZ2UpCisgICAgeworICAg
ICAgICBXZWJMYXllclBvc2l0aW9uQ29uc3RyYWludCBjb25zdHJhaW50OworICAgICAgICBjb25z
dHJhaW50LmlzRml4ZWRQb3NpdGlvbiA9IHRydWU7CisgICAgICAgIGNvbnN0cmFpbnQuaXNGaXhl
ZFRvUmlnaHRFZGdlID0gZml4ZWRUb1JpZ2h0RWRnZTsKKyAgICAgICAgY29uc3RyYWludC5pc0Zp
eGVkVG9Cb3R0b21FZGdlID0gZml4ZWRUb0JvdHRvbUVkZ2U7CisgICAgICAgIHJldHVybiBjb25z
dHJhaW50OworICAgIH0KK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8g
V2ViTGF5ZXJQb3NpdGlvbkNvbnN0cmFpbnRfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nQ29vcmRpbmF0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ0Nvb3JkaW5hdG9yLmgKaW5kZXggMTRkOTBlNWQ3ODA1MDky
YTYzY2U5ODZhMzBhMTRiMDhjMzBlMTc5OS4uMmVjYjQ2NDYzYjNjYjFlZjJjMDc1NmNlNGJhNjY3
M2ZkODg4NDk4OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Ny
b2xsaW5nQ29vcmRpbmF0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9T
Y3JvbGxpbmdDb29yZGluYXRvci5oCkBAIC0xNTMsNyArMTUzLDcgQEAgcHVibGljOgogICAgIHZp
cnR1YWwgdm9pZCBzY3JvbGxhYmxlQXJlYVNjcm9sbExheWVyRGlkQ2hhbmdlKFNjcm9sbGFibGVB
cmVhKikgeyB9CiAgICAgdmlydHVhbCB2b2lkIHNjcm9sbGFibGVBcmVhU2Nyb2xsYmFyTGF5ZXJE
aWRDaGFuZ2UoU2Nyb2xsYWJsZUFyZWEqLCBTY3JvbGxiYXJPcmllbnRhdGlvbikgeyB9CiAgICAg
dmlydHVhbCB2b2lkIHNldExheWVySXNDb250YWluZXJGb3JGaXhlZFBvc2l0aW9uTGF5ZXJzKEdy
YXBoaWNzTGF5ZXIqLCBib29sKSB7IH0KLSAgICB2aXJ0dWFsIHZvaWQgc2V0TGF5ZXJJc0ZpeGVk
VG9Db250YWluZXJMYXllcihHcmFwaGljc0xheWVyKiwgYm9vbCkgeyB9CisgICAgdmlydHVhbCB2
b2lkIHVwZGF0ZUxheWVyUG9zaXRpb25Db25zdHJhaW50KFJlbmRlckxheWVyKikgeyB9CiAgICAg
dmlydHVhbCB2b2lkIHRvdWNoRXZlbnRUYXJnZXRSZWN0c0RpZENoYW5nZShjb25zdCBEb2N1bWVu
dCopIHsgfQogCiAjaWYgRU5BQkxFKFRPVUNIX0VWRU5UX1RSQUNLSU5HKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvY2hyb21pdW0vU2Nyb2xsaW5nQ29vcmRpbmF0
b3JDaHJvbWl1bS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9jaHJvbWl1bS9T
Y3JvbGxpbmdDb29yZGluYXRvckNocm9taXVtLmNwcAppbmRleCAyNThiMTY2OTMxZGFmYTFjN2Jj
YTliODZkY2UzNDFlZGMxZTYxMzUwLi42OTllMDgwYTljNjY3NzYxZTViZWI4NGZkOGZiZDcyMTQ3
ZGQzNTk3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9jaHJvbWl1
bS9TY3JvbGxpbmdDb29yZGluYXRvckNocm9taXVtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL3Njcm9sbGluZy9jaHJvbWl1bS9TY3JvbGxpbmdDb29yZGluYXRvckNocm9taXVtLmNwcApA
QCAtMzIsNiArMzIsNyBAQAogI2luY2x1ZGUgIkdyYXBoaWNzTGF5ZXJDaHJvbWl1bS5oIgogI2lu
Y2x1ZGUgIlBhZ2UuaCIKICNpbmNsdWRlICJSZWdpb24uaCIKKyNpbmNsdWRlICJSZW5kZXJMYXll
ckJhY2tpbmcuaCIKICNpbmNsdWRlICJSZW5kZXJMYXllckNvbXBvc2l0b3IuaCIKICNpbmNsdWRl
ICJSZW5kZXJWaWV3LmgiCiAjaW5jbHVkZSAiU2Nyb2xsYmFyVGhlbWVDb21wb3NpdGUuaCIKQEAg
LTM5LDEyICs0MCwxNCBAQAogI2luY2x1ZGUgIldlYlNjcm9sbGJhclRoZW1lR2VvbWV0cnlOYXRp
dmUuaCIKICNpbmNsdWRlIDxwdWJsaWMvUGxhdGZvcm0uaD4KICNpbmNsdWRlIDxwdWJsaWMvV2Vi
Q29tcG9zaXRvclN1cHBvcnQuaD4KKyNpbmNsdWRlIDxwdWJsaWMvV2ViTGF5ZXJQb3NpdGlvbkNv
bnN0cmFpbnQuaD4KICNpbmNsdWRlIDxwdWJsaWMvV2ViU2Nyb2xsYmFyLmg+CiAjaW5jbHVkZSA8
cHVibGljL1dlYlNjcm9sbGJhckxheWVyLmg+CiAjaW5jbHVkZSA8cHVibGljL1dlYlNjcm9sbGJh
clRoZW1lR2VvbWV0cnkuaD4KICNpbmNsdWRlIDxwdWJsaWMvV2ViU2Nyb2xsYmFyVGhlbWVQYWlu
dGVyLmg+CiAKIHVzaW5nIFdlYktpdDo6V2ViTGF5ZXI7Cit1c2luZyBXZWJLaXQ6OldlYkxheWVy
UG9zaXRpb25Db25zdHJhaW50OwogdXNpbmcgV2ViS2l0OjpXZWJSZWN0OwogdXNpbmcgV2ViS2l0
OjpXZWJTY3JvbGxiYXJMYXllcjsKIHVzaW5nIFdlYktpdDo6V2ViVmVjdG9yOwpAQCAtMjMzLDEw
ICsyMzYsNDEgQEAgdm9pZCBTY3JvbGxpbmdDb29yZGluYXRvckNocm9taXVtOjpzZXRMYXllcklz
Q29udGFpbmVyRm9yRml4ZWRQb3NpdGlvbkxheWVycyhHcmEKICAgICAgICAgc2Nyb2xsYWJsZUxh
eWVyLT5zZXRJc0NvbnRhaW5lckZvckZpeGVkUG9zaXRpb25MYXllcnMoZW5hYmxlKTsKIH0KIAot
dm9pZCBTY3JvbGxpbmdDb29yZGluYXRvckNocm9taXVtOjpzZXRMYXllcklzRml4ZWRUb0NvbnRh
aW5lckxheWVyKEdyYXBoaWNzTGF5ZXIqIGxheWVyLCBib29sIGVuYWJsZSkKK3N0YXRpYyB2b2lk
IGNsZWFyUG9zaXRpb25Db25zdHJhaW50RXhjZXB0Rm9yTGF5ZXIoR3JhcGhpY3NMYXllciogbGF5
ZXIsIEdyYXBoaWNzTGF5ZXIqIGV4Y2VwdCkKIHsKLSAgICBpZiAoV2ViTGF5ZXIqIHNjcm9sbGFi
bGVMYXllciA9IHNjcm9sbGluZ1dlYkxheWVyRm9yR3JhcGhpY3NMYXllcihsYXllcikpCi0gICAg
ICAgIHNjcm9sbGFibGVMYXllci0+c2V0Rml4ZWRUb0NvbnRhaW5lckxheWVyKGVuYWJsZSk7Cisg
ICAgaWYgKGxheWVyICYmIGxheWVyICE9IGV4Y2VwdCAmJiBzY3JvbGxpbmdXZWJMYXllckZvckdy
YXBoaWNzTGF5ZXIobGF5ZXIpKQorICAgICAgICBzY3JvbGxpbmdXZWJMYXllckZvckdyYXBoaWNz
TGF5ZXIobGF5ZXIpLT5zZXRQb3NpdGlvbkNvbnN0cmFpbnQoV2ViTGF5ZXJQb3NpdGlvbkNvbnN0
cmFpbnQoKSk7Cit9CisKK3N0YXRpYyBXZWJMYXllclBvc2l0aW9uQ29uc3RyYWludCBjb21wdXRl
UG9zaXRpb25Db25zdHJhaW50KGNvbnN0IFJlbmRlckxheWVyKiBsYXllcikKK3sKKyAgICBBU1NF
UlQobGF5ZXItPmlzQ29tcG9zaXRlZCgpKTsKKyAgICBkbyB7CisgICAgICAgIGlmIChsYXllci0+
cmVuZGVyZXIoKS0+c3R5bGUoKS0+cG9zaXRpb24oKSA9PSBGaXhlZFBvc2l0aW9uKSB7CisgICAg
ICAgICAgICBjb25zdCBSZW5kZXJPYmplY3QqIGZpeGVkUG9zaXRpb25PYmplY3QgPSBsYXllci0+
cmVuZGVyZXIoKTsKKyAgICAgICAgICAgIGJvb2wgZml4ZWRUb1JpZ2h0ID0gIWZpeGVkUG9zaXRp
b25PYmplY3QtPnN0eWxlKCktPnJpZ2h0KCkuaXNBdXRvKCk7CisgICAgICAgICAgICBib29sIGZp
eGVkVG9Cb3R0b20gPSAhZml4ZWRQb3NpdGlvbk9iamVjdC0+c3R5bGUoKS0+Ym90dG9tKCkuaXNB
dXRvKCk7CisgICAgICAgICAgICByZXR1cm4gV2ViTGF5ZXJQb3NpdGlvbkNvbnN0cmFpbnQ6OmZp
eGVkUG9zaXRpb24oZml4ZWRUb1JpZ2h0LCBmaXhlZFRvQm90dG9tKTsKKyAgICAgICAgfQorCisg
ICAgICAgIGxheWVyID0gbGF5ZXItPnBhcmVudCgpOworICAgIH0gd2hpbGUgKGxheWVyICYmICFs
YXllci0+aXNDb21wb3NpdGVkKCkpOworICAgIHJldHVybiBXZWJMYXllclBvc2l0aW9uQ29uc3Ry
YWludCgpOworfQorCit2b2lkIFNjcm9sbGluZ0Nvb3JkaW5hdG9yQ2hyb21pdW06OnVwZGF0ZUxh
eWVyUG9zaXRpb25Db25zdHJhaW50KFJlbmRlckxheWVyKiBsYXllcikKK3sKKyAgICBBU1NFUlQo
bGF5ZXItPmJhY2tpbmcoKSk7CisgICAgUmVuZGVyTGF5ZXJCYWNraW5nKiBiYWNraW5nID0gbGF5
ZXItPmJhY2tpbmcoKTsKKyAgICBHcmFwaGljc0xheWVyKiBtYWluTGF5ZXIgPSBiYWNraW5nLT5j
aGlsZEZvclN1cGVybGF5ZXJzKCk7CisKKyAgICAvLyBBdm9pZCB1bm5lY2Vzc2FyeSBjb21taXRz
CisgICAgY2xlYXJQb3NpdGlvbkNvbnN0cmFpbnRFeGNlcHRGb3JMYXllcihiYWNraW5nLT5hbmNl
c3RvckNsaXBwaW5nTGF5ZXIoKSwgbWFpbkxheWVyKTsKKyAgICBjbGVhclBvc2l0aW9uQ29uc3Ry
YWludEV4Y2VwdEZvckxheWVyKGJhY2tpbmctPmNvbnRlbnRzQ29udGFpbm1lbnRMYXllcigpLCBt
YWluTGF5ZXIpOworICAgIGNsZWFyUG9zaXRpb25Db25zdHJhaW50RXhjZXB0Rm9yTGF5ZXIoYmFj
a2luZy0+Z3JhcGhpY3NMYXllcigpLCBtYWluTGF5ZXIpOworCisgICAgaWYgKFdlYkxheWVyKiBz
Y3JvbGxhYmxlTGF5ZXIgPSBzY3JvbGxpbmdXZWJMYXllckZvckdyYXBoaWNzTGF5ZXIobWFpbkxh
eWVyKSkKKyAgICAgICAgc2Nyb2xsYWJsZUxheWVyLT5zZXRQb3NpdGlvbkNvbnN0cmFpbnQoY29t
cHV0ZVBvc2l0aW9uQ29uc3RyYWludChsYXllcikpOwogfQogCiB2b2lkIFNjcm9sbGluZ0Nvb3Jk
aW5hdG9yQ2hyb21pdW06OnNjcm9sbGFibGVBcmVhU2Nyb2xsTGF5ZXJEaWRDaGFuZ2UoU2Nyb2xs
YWJsZUFyZWEqIHNjcm9sbGFibGVBcmVhKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9zY3JvbGxpbmcvY2hyb21pdW0vU2Nyb2xsaW5nQ29vcmRpbmF0b3JDaHJvbWl1bS5oIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvY2hyb21pdW0vU2Nyb2xsaW5nQ29vcmRpbmF0b3JD
aHJvbWl1bS5oCmluZGV4IGMxYzAyOWEyMmRiN2RkNGI3NTYxM2FiZTA0OGU0MGIyNThhZjZhM2Iu
LjBmZDAzYmUzODM1NTNjMWE0MDBkYjhiZTYxYTYxMzBjNTVlZjhjZTQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL2Nocm9taXVtL1Njcm9sbGluZ0Nvb3JkaW5hdG9y
Q2hyb21pdW0uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9jaHJvbWl1bS9T
Y3JvbGxpbmdDb29yZGluYXRvckNocm9taXVtLmgKQEAgLTUzLDcgKzUzLDcgQEAgcHVibGljOgog
ICAgIHZpcnR1YWwgdm9pZCBzZXRMYXllcklzQ29udGFpbmVyRm9yRml4ZWRQb3NpdGlvbkxheWVy
cyhHcmFwaGljc0xheWVyKiwgYm9vbCk7CiAKICAgICAvLyBBdHRhY2gvZGV0YWNoIGxheWVyIHBv
c2l0aW9uIHRvIGFuY2VzdG9yIGZpeGVkIHBvc2l0aW9uIGNvbnRhaW5lci4KLSAgICB2aXJ0dWFs
IHZvaWQgc2V0TGF5ZXJJc0ZpeGVkVG9Db250YWluZXJMYXllcihHcmFwaGljc0xheWVyKiwgYm9v
bCk7CisgICAgdmlydHVhbCB2b2lkIHVwZGF0ZUxheWVyUG9zaXRpb25Db25zdHJhaW50KFJlbmRl
ckxheWVyKik7CiAKICAgICAvLyBTaG91bGQgYmUgY2FsbGVkIHdoZW4gYSBTY3JvbGxhYmxlQXJl
YSBpcyBnZXR0aW5nIGRlc3Ryb3llZC4KICAgICB2aXJ0dWFsIHZvaWQgd2lsbERlc3Ryb3lTY3Jv
bGxhYmxlQXJlYShTY3JvbGxhYmxlQXJlYSopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcAppbmRleCBjZWU1YTBmYWNkMTA5YTZkYjlkZTI2ZTE5
MDA1Y2MzOGI1ZjI4N2EwLi43ODc4ZWQzMTY2OWMyZjMwYjBlYjQ4NjUzMWEwYjdlNjIxZjcwZjJm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5n
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNw
cApAQCAtODU1LDE0ICs4NTUsMTEgQEAgdm9pZCBSZW5kZXJMYXllckJhY2tpbmc6OnJlZ2lzdGVy
U2Nyb2xsaW5nTGF5ZXJzKCkKIAogICAgIGNvbXBvc2l0b3IoKS0+dXBkYXRlVmlld3BvcnRDb25z
dHJhaW50U3RhdHVzKG1fb3duaW5nTGF5ZXIpOwogCi0gICAgLy8gRklYTUU6IGl0IHdvdWxkIGJl
IG5pY2UgdG8gYXZvaWQgYWxsIHRoaXMgd29yayBpZiB0aGUgcGxhdGZvcm0gZG9lc24ndCBpbXBs
ZW1lbnQgc2V0TGF5ZXJJc0ZpeGVkVG9Db250YWluZXJMYXllcigpLgotICAgIGlmIChyZW5kZXJl
cigpLT5zdHlsZSgpLT5wb3NpdGlvbigpID09IEZpeGVkUG9zaXRpb24gfHwgY29tcG9zaXRvcigp
LT5maXhlZFBvc2l0aW9uZWRCeUFuY2VzdG9yKG1fb3duaW5nTGF5ZXIpKQotICAgICAgICBzY3Jv
bGxpbmdDb29yZGluYXRvci0+c2V0TGF5ZXJJc0ZpeGVkVG9Db250YWluZXJMYXllcihjaGlsZEZv
clN1cGVybGF5ZXJzKCksIHRydWUpOwotICAgIGVsc2UgewotICAgICAgICBpZiAobV9hbmNlc3Rv
ckNsaXBwaW5nTGF5ZXIpCi0gICAgICAgICAgICBzY3JvbGxpbmdDb29yZGluYXRvci0+c2V0TGF5
ZXJJc0ZpeGVkVG9Db250YWluZXJMYXllcihtX2FuY2VzdG9yQ2xpcHBpbmdMYXllci5nZXQoKSwg
ZmFsc2UpOwotICAgICAgICBzY3JvbGxpbmdDb29yZGluYXRvci0+c2V0TGF5ZXJJc0ZpeGVkVG9D
b250YWluZXJMYXllcihtX2dyYXBoaWNzTGF5ZXIuZ2V0KCksIGZhbHNlKTsKLSAgICB9CisgICAg
aWYgKCFzY3JvbGxpbmdDb29yZGluYXRvci0+c3VwcG9ydHNGaXhlZFBvc2l0aW9uTGF5ZXJzKCkp
CisgICAgICAgIHJldHVybjsKKworICAgIHNjcm9sbGluZ0Nvb3JkaW5hdG9yLT51cGRhdGVMYXll
clBvc2l0aW9uQ29uc3RyYWludChtX293bmluZ0xheWVyKTsKKwogICAgIC8vIFBhZ2Ugc2NhbGUg
aXMgYXBwbGllZCBhcyBhIHRyYW5zZm9ybSBvbiB0aGUgcm9vdCByZW5kZXIgdmlldyBsYXllci4g
QmVjYXVzZSB0aGUgc2Nyb2xsCiAgICAgLy8gbGF5ZXIgaXMgZnVydGhlciB1cCBpbiB0aGUgaGll
cmFyY2h5LCB3ZSBuZWVkIHRvIGF2b2lkIG1hcmtpbmcgdGhlIHJvb3QgcmVuZGVyIHZpZXcKICAg
ICAvLyBsYXllciBhcyBhIGNvbnRhaW5lci4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJMYXllckJhY2tpbmcuaAppbmRleCA4OWQ4YzE0NWM3NTFmMjI1YmUzYTJiZmZhNmNlZjA4
ZGYyZjBhNmNjLi45YzEwZTVjYTQwZGI4MjYzOGJkZTZhYzY4ZGU4MDBjN2M0Njg4YTFhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5oCkBAIC04Nyw2
ICs4Nyw4IEBAIHB1YmxpYzoKICAgICBib29sIGhhc0FuY2VzdG9yQ2xpcHBpbmdMYXllcigpIGNv
bnN0IHsgcmV0dXJuIG1fYW5jZXN0b3JDbGlwcGluZ0xheWVyICE9IDA7IH0KICAgICBHcmFwaGlj
c0xheWVyKiBhbmNlc3RvckNsaXBwaW5nTGF5ZXIoKSBjb25zdCB7IHJldHVybiBtX2FuY2VzdG9y
Q2xpcHBpbmdMYXllci5nZXQoKTsgfQogCisgICAgR3JhcGhpY3NMYXllciogY29udGVudHNDb250
YWlubWVudExheWVyKCkgY29uc3QgeyByZXR1cm4gbV9jb250ZW50c0NvbnRhaW5tZW50TGF5ZXIu
Z2V0KCk7IH0KKwogICAgIGJvb2wgaGFzQ29udGVudHNMYXllcigpIGNvbnN0IHsgcmV0dXJuIG1f
Zm9yZWdyb3VuZExheWVyICE9IDA7IH0KICAgICBHcmFwaGljc0xheWVyKiBmb3JlZ3JvdW5kTGF5
ZXIoKSBjb25zdCB7IHJldHVybiBtX2ZvcmVncm91bmRMYXllci5nZXQoKTsgfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckNvbXBvc2l0b3IuY3BwCmluZGV4
IDQyY2U2NzYzMjAwOTRlNzZiNjMwMWQwMmY5YWJlM2Q0NzA4Y2Q1ZWYuLmRmOGZhYTk1OTg0Y2Yx
YzUxOWM3Y2VlNWM4MjM0OWY2NTBiM2VmMzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJMYXllckNvbXBvc2l0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJMYXllckNvbXBvc2l0b3IuY3BwCkBAIC0xOTM1LDMxICsxOTM1LDYgQEAg
Ym9vbCBSZW5kZXJMYXllckNvbXBvc2l0b3I6OmNsaXBzQ29tcG9zaXRpbmdEZXNjZW5kYW50cyhj
b25zdCBSZW5kZXJMYXllciogbGF5ZXIKICAgICByZXR1cm4gbGF5ZXItPmhhc0NvbXBvc2l0aW5n
RGVzY2VuZGFudCgpICYmIGxheWVyLT5yZW5kZXJlcigpLT5oYXNDbGlwT3JPdmVyZmxvd0NsaXAo
KTsKIH0KIAotLy8gUmV0dXJuIHRydWUgaWYgdGhlcmUgaXMgYW4gYW5jZXN0b3IgbGF5ZXIgdGhh
dCBpcyBmaXhlZCBwb3NpdGlvbmVkIHRvIHRoZSB2aWV3LgotLy8gTm90ZSB0aGF0IGlmIHRoZSBh
bmNlc3RvciBoYXMgYSBzdGFja2luZyBjb250ZXh0IGFuZCBpcyBmaXhlZCBwb3NpdGlvbiB0aGVu
IHRoaXMgbWV0aG9kCi0vLyB3aWxsIHJldHVybiBmYWxzZS4KLWJvb2wgUmVuZGVyTGF5ZXJDb21w
b3NpdG9yOjpmaXhlZFBvc2l0aW9uZWRCeUFuY2VzdG9yKGNvbnN0IFJlbmRlckxheWVyKiBsYXll
cikgY29uc3QKLXsKLSAgICBpZiAoIWxheWVyLT5pc0NvbXBvc2l0ZWQoKSB8fCAhbGF5ZXItPnBh
cmVudCgpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBjb25zdCBSZW5kZXJMYXllciog
Y29tcG9zaXRpbmdBbmNlc3RvciA9IGxheWVyLT5hbmNlc3RvckNvbXBvc2l0aW5nTGF5ZXIoKTsK
LSAgICBpZiAoIWNvbXBvc2l0aW5nQW5jZXN0b3IpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQot
ICAgIGNvbnN0IFJlbmRlckxheWVyKiBjdXJyID0gbGF5ZXI7Ci0gICAgd2hpbGUgKGN1cnIpIHsK
LSAgICAgICAgY29uc3QgUmVuZGVyTGF5ZXIqIG5leHQgPSBjdXJyLT5wYXJlbnQoKTsKLSAgICAg
ICAgaWYgKG5leHQgPT0gY29tcG9zaXRpbmdBbmNlc3RvcikKLSAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKLQotICAgICAgICBpZiAobmV4dCAmJiBuZXh0LT5yZW5kZXJlcigpLT5zdHlsZSgpLT5w
b3NpdGlvbigpID09IEZpeGVkUG9zaXRpb24pCi0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAg
ICAgICAgY3VyciA9IG5leHQ7Ci0gICAgfQotICAgIHJldHVybiBmYWxzZTsKLX0KLQogYm9vbCBS
ZW5kZXJMYXllckNvbXBvc2l0b3I6OnJlcXVpcmVzQ29tcG9zaXRpbmdGb3JTY3JvbGxhYmxlRnJh
bWUoKSBjb25zdAogewogICAgIC8vIE5lZWQgdGhpcyBkb25lIGZpcnN0IHRvIGRldGVybWluZSBv
dmVyZmxvdy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXll
ckNvbXBvc2l0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckNvbXBv
c2l0b3IuaAppbmRleCAwMzI3MWMxMTE5N2UwZjlkZDY1MGM2MzVkZTc5MzBjZTMyZjg1NzlmLi4y
YTQ4ZTI3N2EzYmM1YjdlNjM2YTMyYTNkNzE1MDViYzVhODI5OWEzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5oCkBAIC0xNTQsOSArMTU0
LDYgQEAgcHVibGljOgogICAgIC8vIFdoZXRoZXIgbGF5ZXIncyBiYWNraW5nIG5lZWRzIGEgZ3Jh
cGhpY3MgbGF5ZXIgdG8gY2xpcCB6LW9yZGVyIGNoaWxkcmVuIG9mIHRoZSBnaXZlbiBsYXllci4K
ICAgICBib29sIGNsaXBzQ29tcG9zaXRpbmdEZXNjZW5kYW50cyhjb25zdCBSZW5kZXJMYXllciop
IGNvbnN0OwogCi0gICAgLy8gV2hldGhlciB0aGUgbGF5ZXIgaXMgZml4ZWQgcG9zaXRpb25lZCB0
byB0aGUgdmlldyBieSBhbiBhbmNlc3RvciBsYXllci4KLSAgICBib29sIGZpeGVkUG9zaXRpb25l
ZEJ5QW5jZXN0b3IoY29uc3QgUmVuZGVyTGF5ZXIqKSBjb25zdDsKLQogICAgIC8vIFdoZXRoZXIg
dGhlIGdpdmVuIGxheWVyIG5lZWRzIGFuIGV4dHJhICdjb250ZW50cycgbGF5ZXIuCiAgICAgYm9v
bCBuZWVkc0NvbnRlbnRzQ29tcG9zaXRpbmdMYXllcihjb25zdCBSZW5kZXJMYXllciopIGNvbnN0
OwogCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>195635</attachid>
            <date>2013-03-28 13:48:49 -0700</date>
            <delta_ts>2013-03-28 14:48:55 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-111670-20130328134847.patch</filename>
            <type>text/plain</type>
            <size>17779</size>
            <attacher name="Tien-Ren Chen">trchen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ2NzczCmRpZmYgLS1naXQgYS9Tb3VyY2UvUGxhdGZvcm0v
Q2hhbmdlTG9nIGIvU291cmNlL1BsYXRmb3JtL0NoYW5nZUxvZwppbmRleCA5YzJlZGNmNzliOGZm
ODYxOTExOWM3MjE1YjU2MGUwZjQ1NTBmNGJkLi41NzY4OTU4Y2I5ZjRjMDU3ZmIxOTFkMDYwNWJk
NWY5N2UxNWQ5ZDA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvUGxhdGZvcm0vQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9QbGF0Zm9ybS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyOCBAQAorMjAxMy0wMy0yOCAg
VGllbi1SZW4gQ2hlbiAgPHRyY2hlbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgU3VwcG9ydCBi
b3R0b20tcmlnaHQgYW5jaG9yZWQgZml4ZWQtcG9zaXRpb24gZWxlbWVudHMgZHVyaW5nIGEgcGlu
Y2ggZ2VzdHVyZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTExNjcwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgQWRkZWQgV2ViTGF5ZXJQb3NpdGlvbkNvbnN0cmFpbnQgZm9yIGxheWVycyB0aGF0IG5lZWQg
cG9zaXRpb24KKyAgICAgICAgYWRqdXN0bWVudCBkdXJpbmcgdGhyZWFkZWQgc2Nyb2xsaW5nLgor
ICAgICAgICBDdXJyZW50bHkgaXQgaXMgb25seSB1c2VkIGZvciBmaXhlZC1wb3NpdGlvbiBsYXll
cnMuCisKKyAgICAgICAgKiBQbGF0Zm9ybS5neXBpOgorICAgICAgICAqIGNocm9taXVtL3B1Ymxp
Yy9XZWJMYXllci5oOgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdlYkxheWVyKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViTGF5ZXI6OnNldFBvc2l0aW9uQ29uc3RyYWludCk6CisgICAgICAg
IChXZWJLaXQ6OldlYkxheWVyOjpwb3NpdGlvbkNvbnN0cmFpbnQpOgorICAgICAgICAoV2ViS2l0
OjpXZWJMYXllcjo6c2V0Rml4ZWRUb0NvbnRhaW5lckxheWVyKToKKyAgICAgICAgKFdlYktpdDo6
V2ViTGF5ZXI6OmZpeGVkVG9Db250YWluZXJMYXllcik6CisgICAgICAgICogY2hyb21pdW0vcHVi
bGljL1dlYkxheWVyUG9zaXRpb25Db25zdHJhaW50Lmg6IEFkZGVkLgorICAgICAgICAoV2ViS2l0
KToKKyAgICAgICAgKFdlYkxheWVyUG9zaXRpb25Db25zdHJhaW50KToKKyAgICAgICAgKFdlYktp
dDo6V2ViTGF5ZXJQb3NpdGlvbkNvbnN0cmFpbnQ6OldlYkxheWVyUG9zaXRpb25Db25zdHJhaW50
KToKKyAgICAgICAgKFdlYktpdDo6V2ViTGF5ZXJQb3NpdGlvbkNvbnN0cmFpbnQ6OmZpeGVkUG9z
aXRpb24pOgorCiAyMDEzLTAzLTIyICBKYW1lcyBSb2JpbnNvbiAgPGphbWVzckBjaHJvbWl1bS5v
cmc+CiAKICAgICAgICAgW2Nocm9taXVtXSBXaXJlIHdpbmRvd3Mgc2Nyb2xsQnlQYWdlIGVudW0g
dXAgdG8gY29tcG9zaXRvciB0aHJlYWQgaW5wdXQgaGFuZGxpbmcKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA5ZDI5
NGU1YTY3NzU5ZGMwODk3ZDQzZjVhOTcxOWVmMzcyYTI5M2Q5Li5lNjk2ZjllZjhjNDUyNjZkZTA0
YzM0OWI1NzgzNTFkNjE5NzYyYmFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VM
b2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzIgQEAKKzIwMTMt
MDMtMjggIFRpZW4tUmVuIENoZW4gIDx0cmNoZW5AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFN1
cHBvcnQgYm90dG9tLXJpZ2h0IGFuY2hvcmVkIGZpeGVkLXBvc2l0aW9uIGVsZW1lbnRzIGR1cmlu
ZyBhIHBpbmNoIGdlc3R1cmUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTExMTY3MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIFRoaXMgcGF0Y2ggYWRkcyBzdXBwb3J0IHRvIGJvdHRvbS1yaWdodCBmaXhlZC1w
b3NpdGlvbiBlbGVtZW50cyBieQorICAgICAgICBpbnRyb2R1Y2luZyBXZWJMYXllclBvc2l0aW9u
Q29uc3RyYWludCB0byBXZWJMYXllci4KKworICAgICAgICBObyBuZXcgdGVzdHMuIENhbid0IHRl
c3QgdW50aWwgY2hyb21pdW0gcGF0Y2ggbGFuZGVkLgorCisgICAgICAgICogcGFnZS9zY3JvbGxp
bmcvU2Nyb2xsaW5nQ29vcmRpbmF0b3IuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ0Nv
b3JkaW5hdG9yOjp1cGRhdGVMYXllclBvc2l0aW9uQ29uc3RyYWludCk6CisgICAgICAgICogcGFn
ZS9zY3JvbGxpbmcvY2hyb21pdW0vU2Nyb2xsaW5nQ29vcmRpbmF0b3JDaHJvbWl1bS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpjbGVhclBvc2l0aW9uQ29uc3RyYWludEV4Y2VwdEZvckxheWVyKToK
KyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6Y29tcHV0ZVBvc2l0aW9uQ29u
c3RyYWludCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdDb29yZGluYXRvckNocm9taXVt
Ojp1cGRhdGVMYXllclBvc2l0aW9uQ29uc3RyYWludCk6CisgICAgICAgICogcGFnZS9zY3JvbGxp
bmcvY2hyb21pdW0vU2Nyb2xsaW5nQ29vcmRpbmF0b3JDaHJvbWl1bS5oOgorICAgICAgICAoU2Ny
b2xsaW5nQ29vcmRpbmF0b3JDaHJvbWl1bSk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxh
eWVyQmFja2luZy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllckJhY2tpbmc6OnJl
Z2lzdGVyU2Nyb2xsaW5nTGF5ZXJzKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5ZXJC
YWNraW5nLmg6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllckJhY2tpbmc6OmNvbnRlbnRz
Q29udGFpbm1lbnRMYXllcik6CisgICAgICAgIChSZW5kZXJMYXllckJhY2tpbmcpOgorICAgICAg
ICAqIHJlbmRlcmluZy9SZW5kZXJMYXllckNvbXBvc2l0b3IuY3BwOgorICAgICAgICAqIHJlbmRl
cmluZy9SZW5kZXJMYXllckNvbXBvc2l0b3IuaDoKKwogMjAxMy0wMy0yNSAgQW5kcmV5IEtvc3lh
a292ICA8Y2FzZXFAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IFtUaW1l
bGluZV0gc2V0IGdsdWUgcmVjb3JkcyBtb2RlIG9mZiBieSBkZWZhdWx0CmRpZmYgLS1naXQgYS9T
b3VyY2UvUGxhdGZvcm0vUGxhdGZvcm0uZ3lwaSBiL1NvdXJjZS9QbGF0Zm9ybS9QbGF0Zm9ybS5n
eXBpCmluZGV4IDRlODM5M2RkMWFlYWE4Yjc1OTNhMzczMDJmMmUyNjU5NjI1Zjk2ODUuLmFkNmJh
MmZmZjM1YmY3MjI3NDc4NGE5ZjI0N2YyNzlhODFlZmNmYmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9Q
bGF0Zm9ybS9QbGF0Zm9ybS5neXBpCisrKyBiL1NvdXJjZS9QbGF0Zm9ybS9QbGF0Zm9ybS5neXBp
CkBAIC04Myw2ICs4Myw3IEBACiAgICAgICAgICAgICAnY2hyb21pdW0vcHVibGljL1dlYkltYWdl
LmgnLAogICAgICAgICAgICAgJ2Nocm9taXVtL3B1YmxpYy9XZWJJbWFnZUxheWVyLmgnLAogICAg
ICAgICAgICAgJ2Nocm9taXVtL3B1YmxpYy9XZWJMYXllci5oJywKKyAgICAgICAgICAgICdjaHJv
bWl1bS9wdWJsaWMvV2ViTGF5ZXJQb3NpdGlvbkNvbnN0cmFpbnQuaCcsCiAgICAgICAgICAgICAn
Y2hyb21pdW0vcHVibGljL1dlYkxheWVyU2Nyb2xsQ2xpZW50LmgnLAogICAgICAgICAgICAgJ2No
cm9taXVtL3B1YmxpYy9XZWJMYXllclRyZWVWaWV3LmgnLAogICAgICAgICAgICAgJ2Nocm9taXVt
L3B1YmxpYy9XZWJMb2NhbGl6ZWRTdHJpbmcuaCcsCmRpZmYgLS1naXQgYS9Tb3VyY2UvUGxhdGZv
cm0vY2hyb21pdW0vcHVibGljL1dlYkxheWVyLmggYi9Tb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0v
cHVibGljL1dlYkxheWVyLmgKaW5kZXggNTJjODE2YTE5N2QyYjMwMjk1MWYwNzIyZjRkMzAzZTIz
Y2Q4NGYzMS4uNTk5ZTZkODgxNzc3NzUyNjEzZmIyMWZjOWNjZGZlM2RmOWY1YmRhYyAxMDA2NDQK
LS0tIGEvU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJMYXllci5oCisrKyBiL1Nv
dXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViTGF5ZXIuaApAQCAtMjksNiArMjksMTAg
QEAKICNpbmNsdWRlICJXZWJBbmltYXRpb24uaCIKICNpbmNsdWRlICJXZWJDb2xvci5oIgogI2lu
Y2x1ZGUgIldlYkNvbW1vbi5oIgorCisvLyBSZW1vdmUgYWZ0ZXIgbWFraW5nIHNldFBvc2l0aW9u
Q29uc3RyYWludCgpIHB1cmUgdmlydHVhbC4KKyNpbmNsdWRlICJXZWJMYXllclBvc2l0aW9uQ29u
c3RyYWludC5oIgorCiAjaW5jbHVkZSAiV2ViUG9pbnQuaCIKICNpbmNsdWRlICJXZWJQcml2YXRl
UHRyLmgiCiAjaW5jbHVkZSAiV2ViUmVjdC5oIgpAQCAtNDQsNiArNDgsNyBAQCBjbGFzcyBXZWJG
aWx0ZXJPcGVyYXRpb25zOwogY2xhc3MgV2ViTGF5ZXJTY3JvbGxDbGllbnQ7CiBzdHJ1Y3QgV2Vi
RmxvYXRQb2ludDsKIHN0cnVjdCBXZWJGbG9hdFJlY3Q7CitzdHJ1Y3QgV2ViTGF5ZXJQb3NpdGlv
bkNvbnN0cmFpbnQ7CiBzdHJ1Y3QgV2ViU2l6ZTsKIAogY2xhc3MgV2ViTGF5ZXJJbXBsOwpAQCAt
MTg5LDggKzE5NCwxMSBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHNldElzQ29udGFpbmVy
Rm9yRml4ZWRQb3NpdGlvbkxheWVycyhib29sKSA9IDA7CiAgICAgdmlydHVhbCBib29sIGlzQ29u
dGFpbmVyRm9yRml4ZWRQb3NpdGlvbkxheWVycygpIGNvbnN0ID0gMDsKIAotICAgIHZpcnR1YWwg
dm9pZCBzZXRGaXhlZFRvQ29udGFpbmVyTGF5ZXIoYm9vbCkgPSAwOwotICAgIHZpcnR1YWwgYm9v
bCBmaXhlZFRvQ29udGFpbmVyTGF5ZXIoKSBjb25zdCA9IDA7CisgICAgLy8gVGhpcyBmdW5jdGlv
biBzZXRzIGxheWVyIHBvc2l0aW9uIGNvbnN0cmFpbnQuIFRoZSBjb25zdHJhaW50IHdpbGwgYmUg
dXNlZAorICAgIC8vIHRvIGFkanVzdCBsYXllciBwb3NpdGlvbiBkdXJpbmcgdGhyZWFkZWQgc2Ny
b2xsaW5nLgorICAgIC8vIEZJWE1FOiBNYWtlIHB1cmUgdmlydHVhbCBhZnRlciBpbXBsZW1lbnRh
dGlvbiBsYW5kcy4KKyAgICB2aXJ0dWFsIHZvaWQgc2V0UG9zaXRpb25Db25zdHJhaW50KGNvbnN0
IFdlYkxheWVyUG9zaXRpb25Db25zdHJhaW50JiBjb25zdHJhaW50KSB7IHNldEZpeGVkVG9Db250
YWluZXJMYXllcihjb25zdHJhaW50LmlzRml4ZWRQb3NpdGlvbik7IH0KKyAgICB2aXJ0dWFsIFdl
YkxheWVyUG9zaXRpb25Db25zdHJhaW50IHBvc2l0aW9uQ29uc3RyYWludCgpIGNvbnN0IHsgcmV0
dXJuIFdlYkxheWVyUG9zaXRpb25Db25zdHJhaW50KCk7IH0KIAogICAgIC8vIFRoZSBzY3JvbGwg
Y2xpZW50IGlzIG5vdGlmaWVkIHdoZW4gdGhlIHNjcm9sbCBwb3NpdGlvbiBvZiB0aGUgV2ViTGF5
ZXIKICAgICAvLyBjaGFuZ2VzLiBPbmx5IGEgc2luZ2xlIHNjcm9sbCBjbGllbnQgY2FuIGJlIHNl
dCBmb3IgYSBXZWJMYXllciBhdCBhIHRpbWUuCkBAIC0yMDUsNiArMjEzLDEwIEBAIHB1YmxpYzoK
IAogICAgIC8vIFRydWUgaWYgdGhlIGxheWVyIGlzIG5vdCBwYXJ0IG9mIGEgdHJlZSBhdHRhY2hl
ZCB0byBhIFdlYkxheWVyVHJlZVZpZXcuCiAgICAgdmlydHVhbCBib29sIGlzT3JwaGFuKCkgY29u
c3QgPSAwOworCisgICAgLy8gREVQUkVDQVRFRAorICAgIHZpcnR1YWwgdm9pZCBzZXRGaXhlZFRv
Q29udGFpbmVyTGF5ZXIoYm9vbCkgeyB9CisgICAgdmlydHVhbCBib29sIGZpeGVkVG9Db250YWlu
ZXJMYXllcigpIGNvbnN0IHsgcmV0dXJuIHBvc2l0aW9uQ29uc3RyYWludCgpLmlzRml4ZWRQb3Np
dGlvbjsgfQogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
UGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYkxheWVyUG9zaXRpb25Db25zdHJhaW50LmggYi9T
b3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYkxheWVyUG9zaXRpb25Db25zdHJhaW50
LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uMGYxYjlmOGY2OTU1MGQ3ZDk0MTE1Yjc2YjExY2EyZTU1YjY1MjcwNwot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViTGF5
ZXJQb3NpdGlvbkNvbnN0cmFpbnQuaApAQCAtMCwwICsxLDU1IEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDEzIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENP
TlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVS
UE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBX
ZWJMYXllclBvc2l0aW9uQ29uc3RyYWludF9oCisjZGVmaW5lIFdlYkxheWVyUG9zaXRpb25Db25z
dHJhaW50X2gKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK3N0cnVjdCBXZWJMYXllclBvc2l0aW9u
Q29uc3RyYWludCB7CisgICAgYm9vbCBpc0ZpeGVkUG9zaXRpb24gICAgIDogMTsKKyAgICBib29s
IGlzRml4ZWRUb1JpZ2h0RWRnZSAgOiAxOworICAgIGJvb2wgaXNGaXhlZFRvQm90dG9tRWRnZSA6
IDE7CisKKyAgICBXZWJMYXllclBvc2l0aW9uQ29uc3RyYWludCgpCisgICAgICAgIDogaXNGaXhl
ZFBvc2l0aW9uKGZhbHNlKQorICAgICAgICAsIGlzRml4ZWRUb1JpZ2h0RWRnZShmYWxzZSkKKyAg
ICAgICAgLCBpc0ZpeGVkVG9Cb3R0b21FZGdlKGZhbHNlKQorICAgIHsKKyAgICB9CisKKyAgICBz
dGF0aWMgV2ViTGF5ZXJQb3NpdGlvbkNvbnN0cmFpbnQgZml4ZWRQb3NpdGlvbihib29sIGZpeGVk
VG9SaWdodEVkZ2UsIGJvb2wgZml4ZWRUb0JvdHRvbUVkZ2UpCisgICAgeworICAgICAgICBXZWJM
YXllclBvc2l0aW9uQ29uc3RyYWludCBjb25zdHJhaW50OworICAgICAgICBjb25zdHJhaW50Lmlz
Rml4ZWRQb3NpdGlvbiA9IHRydWU7CisgICAgICAgIGNvbnN0cmFpbnQuaXNGaXhlZFRvUmlnaHRF
ZGdlID0gZml4ZWRUb1JpZ2h0RWRnZTsKKyAgICAgICAgY29uc3RyYWludC5pc0ZpeGVkVG9Cb3R0
b21FZGdlID0gZml4ZWRUb0JvdHRvbUVkZ2U7CisgICAgICAgIHJldHVybiBjb25zdHJhaW50Owor
ICAgIH0KK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gV2ViTGF5ZXJQ
b3NpdGlvbkNvbnN0cmFpbnRfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3Jv
bGxpbmcvU2Nyb2xsaW5nQ29vcmRpbmF0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xs
aW5nL1Njcm9sbGluZ0Nvb3JkaW5hdG9yLmgKaW5kZXggMTRkOTBlNWQ3ODA1MDkyYTYzY2U5ODZh
MzBhMTRiMDhjMzBlMTc5OS4uMmVjYjQ2NDYzYjNjYjFlZjJjMDc1NmNlNGJhNjY3M2ZkODg4NDk4
OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nQ29v
cmRpbmF0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdD
b29yZGluYXRvci5oCkBAIC0xNTMsNyArMTUzLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9p
ZCBzY3JvbGxhYmxlQXJlYVNjcm9sbExheWVyRGlkQ2hhbmdlKFNjcm9sbGFibGVBcmVhKikgeyB9
CiAgICAgdmlydHVhbCB2b2lkIHNjcm9sbGFibGVBcmVhU2Nyb2xsYmFyTGF5ZXJEaWRDaGFuZ2Uo
U2Nyb2xsYWJsZUFyZWEqLCBTY3JvbGxiYXJPcmllbnRhdGlvbikgeyB9CiAgICAgdmlydHVhbCB2
b2lkIHNldExheWVySXNDb250YWluZXJGb3JGaXhlZFBvc2l0aW9uTGF5ZXJzKEdyYXBoaWNzTGF5
ZXIqLCBib29sKSB7IH0KLSAgICB2aXJ0dWFsIHZvaWQgc2V0TGF5ZXJJc0ZpeGVkVG9Db250YWlu
ZXJMYXllcihHcmFwaGljc0xheWVyKiwgYm9vbCkgeyB9CisgICAgdmlydHVhbCB2b2lkIHVwZGF0
ZUxheWVyUG9zaXRpb25Db25zdHJhaW50KFJlbmRlckxheWVyKikgeyB9CiAgICAgdmlydHVhbCB2
b2lkIHRvdWNoRXZlbnRUYXJnZXRSZWN0c0RpZENoYW5nZShjb25zdCBEb2N1bWVudCopIHsgfQog
CiAjaWYgRU5BQkxFKFRPVUNIX0VWRU5UX1RSQUNLSU5HKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGFnZS9zY3JvbGxpbmcvY2hyb21pdW0vU2Nyb2xsaW5nQ29vcmRpbmF0b3JDaHJvbWl1
bS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9jaHJvbWl1bS9TY3JvbGxpbmdD
b29yZGluYXRvckNocm9taXVtLmNwcAppbmRleCAxOTFjOGUwYjdiNTgyMTBjZjkyZjUxYTk0YTAw
NTEwYzgwMWRlNzc4Li5iY2U4NWNkMWU4YTFiYTAwZjMyZDQ5YTMyMDA0ZmI3NDE1MTUyZWIyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9jaHJvbWl1bS9TY3JvbGxp
bmdDb29yZGluYXRvckNocm9taXVtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9s
bGluZy9jaHJvbWl1bS9TY3JvbGxpbmdDb29yZGluYXRvckNocm9taXVtLmNwcApAQCAtMzIsNiAr
MzIsNyBAQAogI2luY2x1ZGUgIkdyYXBoaWNzTGF5ZXJDaHJvbWl1bS5oIgogI2luY2x1ZGUgIlBh
Z2UuaCIKICNpbmNsdWRlICJSZWdpb24uaCIKKyNpbmNsdWRlICJSZW5kZXJMYXllckJhY2tpbmcu
aCIKICNpbmNsdWRlICJSZW5kZXJMYXllckNvbXBvc2l0b3IuaCIKICNpbmNsdWRlICJSZW5kZXJW
aWV3LmgiCiAjaW5jbHVkZSAiU2Nyb2xsYmFyVGhlbWVDb21wb3NpdGUuaCIKQEAgLTM5LDEyICs0
MCwxNCBAQAogI2luY2x1ZGUgIldlYlNjcm9sbGJhclRoZW1lR2VvbWV0cnlOYXRpdmUuaCIKICNp
bmNsdWRlIDxwdWJsaWMvUGxhdGZvcm0uaD4KICNpbmNsdWRlIDxwdWJsaWMvV2ViQ29tcG9zaXRv
clN1cHBvcnQuaD4KKyNpbmNsdWRlIDxwdWJsaWMvV2ViTGF5ZXJQb3NpdGlvbkNvbnN0cmFpbnQu
aD4KICNpbmNsdWRlIDxwdWJsaWMvV2ViU2Nyb2xsYmFyLmg+CiAjaW5jbHVkZSA8cHVibGljL1dl
YlNjcm9sbGJhckxheWVyLmg+CiAjaW5jbHVkZSA8cHVibGljL1dlYlNjcm9sbGJhclRoZW1lR2Vv
bWV0cnkuaD4KICNpbmNsdWRlIDxwdWJsaWMvV2ViU2Nyb2xsYmFyVGhlbWVQYWludGVyLmg+CiAK
IHVzaW5nIFdlYktpdDo6V2ViTGF5ZXI7Cit1c2luZyBXZWJLaXQ6OldlYkxheWVyUG9zaXRpb25D
b25zdHJhaW50OwogdXNpbmcgV2ViS2l0OjpXZWJSZWN0OwogdXNpbmcgV2ViS2l0OjpXZWJTY3Jv
bGxiYXJMYXllcjsKIHVzaW5nIFdlYktpdDo6V2ViVmVjdG9yOwpAQCAtMjMzLDEwICsyMzYsNDEg
QEAgdm9pZCBTY3JvbGxpbmdDb29yZGluYXRvckNocm9taXVtOjpzZXRMYXllcklzQ29udGFpbmVy
Rm9yRml4ZWRQb3NpdGlvbkxheWVycyhHcmEKICAgICAgICAgc2Nyb2xsYWJsZUxheWVyLT5zZXRJ
c0NvbnRhaW5lckZvckZpeGVkUG9zaXRpb25MYXllcnMoZW5hYmxlKTsKIH0KIAotdm9pZCBTY3Jv
bGxpbmdDb29yZGluYXRvckNocm9taXVtOjpzZXRMYXllcklzRml4ZWRUb0NvbnRhaW5lckxheWVy
KEdyYXBoaWNzTGF5ZXIqIGxheWVyLCBib29sIGVuYWJsZSkKK3N0YXRpYyB2b2lkIGNsZWFyUG9z
aXRpb25Db25zdHJhaW50RXhjZXB0Rm9yTGF5ZXIoR3JhcGhpY3NMYXllciogbGF5ZXIsIEdyYXBo
aWNzTGF5ZXIqIGV4Y2VwdCkKIHsKLSAgICBpZiAoV2ViTGF5ZXIqIHNjcm9sbGFibGVMYXllciA9
IHNjcm9sbGluZ1dlYkxheWVyRm9yR3JhcGhpY3NMYXllcihsYXllcikpCi0gICAgICAgIHNjcm9s
bGFibGVMYXllci0+c2V0Rml4ZWRUb0NvbnRhaW5lckxheWVyKGVuYWJsZSk7CisgICAgaWYgKGxh
eWVyICYmIGxheWVyICE9IGV4Y2VwdCAmJiBzY3JvbGxpbmdXZWJMYXllckZvckdyYXBoaWNzTGF5
ZXIobGF5ZXIpKQorICAgICAgICBzY3JvbGxpbmdXZWJMYXllckZvckdyYXBoaWNzTGF5ZXIobGF5
ZXIpLT5zZXRQb3NpdGlvbkNvbnN0cmFpbnQoV2ViTGF5ZXJQb3NpdGlvbkNvbnN0cmFpbnQoKSk7
Cit9CisKK3N0YXRpYyBXZWJMYXllclBvc2l0aW9uQ29uc3RyYWludCBjb21wdXRlUG9zaXRpb25D
b25zdHJhaW50KGNvbnN0IFJlbmRlckxheWVyKiBsYXllcikKK3sKKyAgICBBU1NFUlQobGF5ZXIt
PmlzQ29tcG9zaXRlZCgpKTsKKyAgICBkbyB7CisgICAgICAgIGlmIChsYXllci0+cmVuZGVyZXIo
KS0+c3R5bGUoKS0+cG9zaXRpb24oKSA9PSBGaXhlZFBvc2l0aW9uKSB7CisgICAgICAgICAgICBj
b25zdCBSZW5kZXJPYmplY3QqIGZpeGVkUG9zaXRpb25PYmplY3QgPSBsYXllci0+cmVuZGVyZXIo
KTsKKyAgICAgICAgICAgIGJvb2wgZml4ZWRUb1JpZ2h0ID0gIWZpeGVkUG9zaXRpb25PYmplY3Qt
PnN0eWxlKCktPnJpZ2h0KCkuaXNBdXRvKCk7CisgICAgICAgICAgICBib29sIGZpeGVkVG9Cb3R0
b20gPSAhZml4ZWRQb3NpdGlvbk9iamVjdC0+c3R5bGUoKS0+Ym90dG9tKCkuaXNBdXRvKCk7Cisg
ICAgICAgICAgICByZXR1cm4gV2ViTGF5ZXJQb3NpdGlvbkNvbnN0cmFpbnQ6OmZpeGVkUG9zaXRp
b24oZml4ZWRUb1JpZ2h0LCBmaXhlZFRvQm90dG9tKTsKKyAgICAgICAgfQorCisgICAgICAgIGxh
eWVyID0gbGF5ZXItPnBhcmVudCgpOworICAgIH0gd2hpbGUgKGxheWVyICYmICFsYXllci0+aXND
b21wb3NpdGVkKCkpOworICAgIHJldHVybiBXZWJMYXllclBvc2l0aW9uQ29uc3RyYWludCgpOwor
fQorCit2b2lkIFNjcm9sbGluZ0Nvb3JkaW5hdG9yQ2hyb21pdW06OnVwZGF0ZUxheWVyUG9zaXRp
b25Db25zdHJhaW50KFJlbmRlckxheWVyKiBsYXllcikKK3sKKyAgICBBU1NFUlQobGF5ZXItPmJh
Y2tpbmcoKSk7CisgICAgUmVuZGVyTGF5ZXJCYWNraW5nKiBiYWNraW5nID0gbGF5ZXItPmJhY2tp
bmcoKTsKKyAgICBHcmFwaGljc0xheWVyKiBtYWluTGF5ZXIgPSBiYWNraW5nLT5jaGlsZEZvclN1
cGVybGF5ZXJzKCk7CisKKyAgICAvLyBBdm9pZCB1bm5lY2Vzc2FyeSBjb21taXRzCisgICAgY2xl
YXJQb3NpdGlvbkNvbnN0cmFpbnRFeGNlcHRGb3JMYXllcihiYWNraW5nLT5hbmNlc3RvckNsaXBw
aW5nTGF5ZXIoKSwgbWFpbkxheWVyKTsKKyAgICBjbGVhclBvc2l0aW9uQ29uc3RyYWludEV4Y2Vw
dEZvckxheWVyKGJhY2tpbmctPmNvbnRlbnRzQ29udGFpbm1lbnRMYXllcigpLCBtYWluTGF5ZXIp
OworICAgIGNsZWFyUG9zaXRpb25Db25zdHJhaW50RXhjZXB0Rm9yTGF5ZXIoYmFja2luZy0+Z3Jh
cGhpY3NMYXllcigpLCBtYWluTGF5ZXIpOworCisgICAgaWYgKFdlYkxheWVyKiBzY3JvbGxhYmxl
TGF5ZXIgPSBzY3JvbGxpbmdXZWJMYXllckZvckdyYXBoaWNzTGF5ZXIobWFpbkxheWVyKSkKKyAg
ICAgICAgc2Nyb2xsYWJsZUxheWVyLT5zZXRQb3NpdGlvbkNvbnN0cmFpbnQoY29tcHV0ZVBvc2l0
aW9uQ29uc3RyYWludChsYXllcikpOwogfQogCiB2b2lkIFNjcm9sbGluZ0Nvb3JkaW5hdG9yQ2hy
b21pdW06OnNjcm9sbGFibGVBcmVhU2Nyb2xsTGF5ZXJEaWRDaGFuZ2UoU2Nyb2xsYWJsZUFyZWEq
IHNjcm9sbGFibGVBcmVhKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxp
bmcvY2hyb21pdW0vU2Nyb2xsaW5nQ29vcmRpbmF0b3JDaHJvbWl1bS5oIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9zY3JvbGxpbmcvY2hyb21pdW0vU2Nyb2xsaW5nQ29vcmRpbmF0b3JDaHJvbWl1bS5o
CmluZGV4IGMxYzAyOWEyMmRiN2RkNGI3NTYxM2FiZTA0OGU0MGIyNThhZjZhM2IuLjBmZDAzYmUz
ODM1NTNjMWE0MDBkYjhiZTYxYTYxMzBjNTVlZjhjZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BhZ2Uvc2Nyb2xsaW5nL2Nocm9taXVtL1Njcm9sbGluZ0Nvb3JkaW5hdG9yQ2hyb21pdW0u
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9jaHJvbWl1bS9TY3JvbGxpbmdD
b29yZGluYXRvckNocm9taXVtLmgKQEAgLTUzLDcgKzUzLDcgQEAgcHVibGljOgogICAgIHZpcnR1
YWwgdm9pZCBzZXRMYXllcklzQ29udGFpbmVyRm9yRml4ZWRQb3NpdGlvbkxheWVycyhHcmFwaGlj
c0xheWVyKiwgYm9vbCk7CiAKICAgICAvLyBBdHRhY2gvZGV0YWNoIGxheWVyIHBvc2l0aW9uIHRv
IGFuY2VzdG9yIGZpeGVkIHBvc2l0aW9uIGNvbnRhaW5lci4KLSAgICB2aXJ0dWFsIHZvaWQgc2V0
TGF5ZXJJc0ZpeGVkVG9Db250YWluZXJMYXllcihHcmFwaGljc0xheWVyKiwgYm9vbCk7CisgICAg
dmlydHVhbCB2b2lkIHVwZGF0ZUxheWVyUG9zaXRpb25Db25zdHJhaW50KFJlbmRlckxheWVyKik7
CiAKICAgICAvLyBTaG91bGQgYmUgY2FsbGVkIHdoZW4gYSBTY3JvbGxhYmxlQXJlYSBpcyBnZXR0
aW5nIGRlc3Ryb3llZC4KICAgICB2aXJ0dWFsIHZvaWQgd2lsbERlc3Ryb3lTY3JvbGxhYmxlQXJl
YShTY3JvbGxhYmxlQXJlYSopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckxheWVyQmFja2luZy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
TGF5ZXJCYWNraW5nLmNwcAppbmRleCAwNmZiYzQwZTFiY2I0MzE0OWM4NGFmN2QyMjYwNjlkMDk1
YTg5N2IxLi4zMTlmYjgxN2M1N2QzYmI1NWNlZTM4ODgwYjYwZmRmNjNmODk3MTZjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcApAQCAtODYw
LDE0ICs4NjAsMTEgQEAgdm9pZCBSZW5kZXJMYXllckJhY2tpbmc6OnJlZ2lzdGVyU2Nyb2xsaW5n
TGF5ZXJzKCkKIAogICAgIGNvbXBvc2l0b3IoKS0+dXBkYXRlVmlld3BvcnRDb25zdHJhaW50U3Rh
dHVzKG1fb3duaW5nTGF5ZXIpOwogCi0gICAgLy8gRklYTUU6IGl0IHdvdWxkIGJlIG5pY2UgdG8g
YXZvaWQgYWxsIHRoaXMgd29yayBpZiB0aGUgcGxhdGZvcm0gZG9lc24ndCBpbXBsZW1lbnQgc2V0
TGF5ZXJJc0ZpeGVkVG9Db250YWluZXJMYXllcigpLgotICAgIGlmIChyZW5kZXJlcigpLT5zdHls
ZSgpLT5wb3NpdGlvbigpID09IEZpeGVkUG9zaXRpb24gfHwgY29tcG9zaXRvcigpLT5maXhlZFBv
c2l0aW9uZWRCeUFuY2VzdG9yKG1fb3duaW5nTGF5ZXIpKQotICAgICAgICBzY3JvbGxpbmdDb29y
ZGluYXRvci0+c2V0TGF5ZXJJc0ZpeGVkVG9Db250YWluZXJMYXllcihjaGlsZEZvclN1cGVybGF5
ZXJzKCksIHRydWUpOwotICAgIGVsc2UgewotICAgICAgICBpZiAobV9hbmNlc3RvckNsaXBwaW5n
TGF5ZXIpCi0gICAgICAgICAgICBzY3JvbGxpbmdDb29yZGluYXRvci0+c2V0TGF5ZXJJc0ZpeGVk
VG9Db250YWluZXJMYXllcihtX2FuY2VzdG9yQ2xpcHBpbmdMYXllci5nZXQoKSwgZmFsc2UpOwot
ICAgICAgICBzY3JvbGxpbmdDb29yZGluYXRvci0+c2V0TGF5ZXJJc0ZpeGVkVG9Db250YWluZXJM
YXllcihtX2dyYXBoaWNzTGF5ZXIuZ2V0KCksIGZhbHNlKTsKLSAgICB9CisgICAgaWYgKCFzY3Jv
bGxpbmdDb29yZGluYXRvci0+c3VwcG9ydHNGaXhlZFBvc2l0aW9uTGF5ZXJzKCkpCisgICAgICAg
IHJldHVybjsKKworICAgIHNjcm9sbGluZ0Nvb3JkaW5hdG9yLT51cGRhdGVMYXllclBvc2l0aW9u
Q29uc3RyYWludChtX293bmluZ0xheWVyKTsKKwogICAgIC8vIFBhZ2Ugc2NhbGUgaXMgYXBwbGll
ZCBhcyBhIHRyYW5zZm9ybSBvbiB0aGUgcm9vdCByZW5kZXIgdmlldyBsYXllci4gQmVjYXVzZSB0
aGUgc2Nyb2xsCiAgICAgLy8gbGF5ZXIgaXMgZnVydGhlciB1cCBpbiB0aGUgaGllcmFyY2h5LCB3
ZSBuZWVkIHRvIGF2b2lkIG1hcmtpbmcgdGhlIHJvb3QgcmVuZGVyIHZpZXcKICAgICAvLyBsYXll
ciBhcyBhIGNvbnRhaW5lci4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJMYXllckJhY2tpbmcuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXll
ckJhY2tpbmcuaAppbmRleCA4OWQ4YzE0NWM3NTFmMjI1YmUzYTJiZmZhNmNlZjA4ZGYyZjBhNmNj
Li45YzEwZTVjYTQwZGI4MjYzOGJkZTZhYzY4ZGU4MDBjN2M0Njg4YTFhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5oCkBAIC04Nyw2ICs4Nyw4IEBA
IHB1YmxpYzoKICAgICBib29sIGhhc0FuY2VzdG9yQ2xpcHBpbmdMYXllcigpIGNvbnN0IHsgcmV0
dXJuIG1fYW5jZXN0b3JDbGlwcGluZ0xheWVyICE9IDA7IH0KICAgICBHcmFwaGljc0xheWVyKiBh
bmNlc3RvckNsaXBwaW5nTGF5ZXIoKSBjb25zdCB7IHJldHVybiBtX2FuY2VzdG9yQ2xpcHBpbmdM
YXllci5nZXQoKTsgfQogCisgICAgR3JhcGhpY3NMYXllciogY29udGVudHNDb250YWlubWVudExh
eWVyKCkgY29uc3QgeyByZXR1cm4gbV9jb250ZW50c0NvbnRhaW5tZW50TGF5ZXIuZ2V0KCk7IH0K
KwogICAgIGJvb2wgaGFzQ29udGVudHNMYXllcigpIGNvbnN0IHsgcmV0dXJuIG1fZm9yZWdyb3Vu
ZExheWVyICE9IDA7IH0KICAgICBHcmFwaGljc0xheWVyKiBmb3JlZ3JvdW5kTGF5ZXIoKSBjb25z
dCB7IHJldHVybiBtX2ZvcmVncm91bmRMYXllci5nZXQoKTsgfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckNvbXBvc2l0b3IuY3BwCmluZGV4IDQyY2U2NzYz
MjAwOTRlNzZiNjMwMWQwMmY5YWJlM2Q0NzA4Y2Q1ZWYuLmRmOGZhYTk1OTg0Y2YxYzUxOWM3Y2Vl
NWM4MjM0OWY2NTBiM2VmMzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJMYXllckNvbXBvc2l0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJMYXllckNvbXBvc2l0b3IuY3BwCkBAIC0xOTM1LDMxICsxOTM1LDYgQEAgYm9vbCBSZW5k
ZXJMYXllckNvbXBvc2l0b3I6OmNsaXBzQ29tcG9zaXRpbmdEZXNjZW5kYW50cyhjb25zdCBSZW5k
ZXJMYXllciogbGF5ZXIKICAgICByZXR1cm4gbGF5ZXItPmhhc0NvbXBvc2l0aW5nRGVzY2VuZGFu
dCgpICYmIGxheWVyLT5yZW5kZXJlcigpLT5oYXNDbGlwT3JPdmVyZmxvd0NsaXAoKTsKIH0KIAot
Ly8gUmV0dXJuIHRydWUgaWYgdGhlcmUgaXMgYW4gYW5jZXN0b3IgbGF5ZXIgdGhhdCBpcyBmaXhl
ZCBwb3NpdGlvbmVkIHRvIHRoZSB2aWV3LgotLy8gTm90ZSB0aGF0IGlmIHRoZSBhbmNlc3RvciBo
YXMgYSBzdGFja2luZyBjb250ZXh0IGFuZCBpcyBmaXhlZCBwb3NpdGlvbiB0aGVuIHRoaXMgbWV0
aG9kCi0vLyB3aWxsIHJldHVybiBmYWxzZS4KLWJvb2wgUmVuZGVyTGF5ZXJDb21wb3NpdG9yOjpm
aXhlZFBvc2l0aW9uZWRCeUFuY2VzdG9yKGNvbnN0IFJlbmRlckxheWVyKiBsYXllcikgY29uc3QK
LXsKLSAgICBpZiAoIWxheWVyLT5pc0NvbXBvc2l0ZWQoKSB8fCAhbGF5ZXItPnBhcmVudCgpKQot
ICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBjb25zdCBSZW5kZXJMYXllciogY29tcG9zaXRp
bmdBbmNlc3RvciA9IGxheWVyLT5hbmNlc3RvckNvbXBvc2l0aW5nTGF5ZXIoKTsKLSAgICBpZiAo
IWNvbXBvc2l0aW5nQW5jZXN0b3IpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIGNvbnN0
IFJlbmRlckxheWVyKiBjdXJyID0gbGF5ZXI7Ci0gICAgd2hpbGUgKGN1cnIpIHsKLSAgICAgICAg
Y29uc3QgUmVuZGVyTGF5ZXIqIG5leHQgPSBjdXJyLT5wYXJlbnQoKTsKLSAgICAgICAgaWYgKG5l
eHQgPT0gY29tcG9zaXRpbmdBbmNlc3RvcikKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLQot
ICAgICAgICBpZiAobmV4dCAmJiBuZXh0LT5yZW5kZXJlcigpLT5zdHlsZSgpLT5wb3NpdGlvbigp
ID09IEZpeGVkUG9zaXRpb24pCi0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgY3Vy
ciA9IG5leHQ7Ci0gICAgfQotICAgIHJldHVybiBmYWxzZTsKLX0KLQogYm9vbCBSZW5kZXJMYXll
ckNvbXBvc2l0b3I6OnJlcXVpcmVzQ29tcG9zaXRpbmdGb3JTY3JvbGxhYmxlRnJhbWUoKSBjb25z
dAogewogICAgIC8vIE5lZWQgdGhpcyBkb25lIGZpcnN0IHRvIGRldGVybWluZSBvdmVyZmxvdy4K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckNvbXBvc2l0
b3IuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckNvbXBvc2l0b3IuaApp
bmRleCBiNmQxMmRiZjE1YjIxYTg4N2JmZjQ5OWNjNGY0N2M1NDQ5MzI0ZDNlLi4xYzNkNWVkOTU1
M2U5NWM0NDYwZTQxM2UxYmIyMjYyOGI3NjgyMWQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5oCkBAIC0xNTQsOSArMTU0LDYgQEAgcHVi
bGljOgogICAgIC8vIFdoZXRoZXIgbGF5ZXIncyBiYWNraW5nIG5lZWRzIGEgZ3JhcGhpY3MgbGF5
ZXIgdG8gY2xpcCB6LW9yZGVyIGNoaWxkcmVuIG9mIHRoZSBnaXZlbiBsYXllci4KICAgICBib29s
IGNsaXBzQ29tcG9zaXRpbmdEZXNjZW5kYW50cyhjb25zdCBSZW5kZXJMYXllciopIGNvbnN0Owog
Ci0gICAgLy8gV2hldGhlciB0aGUgbGF5ZXIgaXMgZml4ZWQgcG9zaXRpb25lZCB0byB0aGUgdmll
dyBieSBhbiBhbmNlc3RvciBsYXllci4KLSAgICBib29sIGZpeGVkUG9zaXRpb25lZEJ5QW5jZXN0
b3IoY29uc3QgUmVuZGVyTGF5ZXIqKSBjb25zdDsKLQogICAgIC8vIFdoZXRoZXIgdGhlIGdpdmVu
IGxheWVyIG5lZWRzIGFuIGV4dHJhICdjb250ZW50cycgbGF5ZXIuCiAgICAgYm9vbCBuZWVkc0Nv
bnRlbnRzQ29tcG9zaXRpbmdMYXllcihjb25zdCBSZW5kZXJMYXllciopIGNvbnN0OwogCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>