<?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>85829</bug_id>
          
          <creation_ts>2012-05-07 14:21:59 -0700</creation_ts>
          <short_desc>[chromium] Don&apos;t draw when canDraw() is false</short_desc>
          <delta_ts>2012-05-09 17:40:49 -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>1</everconfirmed>
          <reporter name="Dana Jansens">danakj</reporter>
          <assigned_to name="Dana Jansens">danakj</assigned_to>
          <cc>backer</cc>
    
    <cc>cc-bugs</cc>
    
    <cc>enne</cc>
    
    <cc>jamesr</cc>
    
    <cc>nduca</cc>
    
    <cc>piman</cc>
    
    <cc>sievers</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>617943</commentid>
    <comment_count>0</comment_count>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2012-05-07 14:21:59 -0700</bug_when>
    <thetext>[chromium] Don&apos;t draw in single threaded compositor when canDraw() is false</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>617997</commentid>
    <comment_count>1</comment_count>
      <attachid>140603</attachid>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2012-05-07 15:22:11 -0700</bug_when>
    <thetext>Created attachment 140603
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>618001</commentid>
    <comment_count>2</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-05-07 15:24:31 -0700</bug_when>
    <thetext>What crashes is this intended to fix?  How are we getting into this state currently?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>618007</commentid>
    <comment_count>3</comment_count>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2012-05-07 15:26:28 -0700</bug_when>
    <thetext>http://crash.corp.google.com/reportdetail?reportid=31cdd8d5c8c805ad#crashing_thread

The crash is not very clear to me, but it immediately seemed incorrect that SingleThreadedProxy is calling drawLayers() when canDraw() is false.

Maybe that stack trace makes more sense to you?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>618009</commentid>
    <comment_count>4</comment_count>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2012-05-07 15:27:46 -0700</bug_when>
    <thetext>Oh, additionally the crash started happening around the time we added the prepareToDraw() step, and there was a bit of churn around the whole drawLayers() code.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>618014</commentid>
    <comment_count>5</comment_count>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2012-05-07 15:30:17 -0700</bug_when>
    <thetext>Last but not least.. I should have stuck this in the changelog maybe.

I noticed that prepareToDraw() is checking m_rootLayerImpl != NULL, and that&apos;s totally bogus IMO. prepareToDraw() should return false if the frame is not going to be correct (checkerboarding stuff), not be overloaded with checked from canDraw().

This CL removes that check from prepareToDraw() and makes prepareToDraw() always produce a valid (tho maybe not desirable) frame. That is how it was intended to work.

Guarding prepareToDraw() (and then drawLayers() too) on canDraw() is the correct way to use the method.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>618045</commentid>
    <comment_count>6</comment_count>
      <attachid>140612</attachid>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2012-05-07 15:56:30 -0700</bug_when>
    <thetext>Created attachment 140612
Patch

rebased, and cleanup of CCLTHImplTests common setup code.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>618811</commentid>
    <comment_count>7</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-05-08 14:32:56 -0700</bug_when>
    <thetext>So we have a crash in single threaded mode, but we don&apos;t really know how it&apos;s happening and this patch doesn&apos;t have any unit tests for the single threaded proxy?  How is this good?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>618820</commentid>
    <comment_count>8</comment_count>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2012-05-08 14:39:47 -0700</bug_when>
    <thetext>I agree it&apos;s not.

The check in prepareToDraw() was introduced in the revert of Sami&apos;s layer scrolling code, and should be removed. The revert of Daniel&apos;s code removed the threaded-mode guarding of prepareToDraw/drawLayers, which should be replaced to go with it.

We ignored single thread when doing all the above work previously, and it needs to guard similarly to the threaded mode.

This patch is fixing threaded mode again, which the test addresses. But also making single-thread mode match this time around.

I agree I would like a test for single-thread too, it requires https://bugs.webkit.org/show_bug.cgi?id=85690 to land which enables single-threaded LTHTests.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>618825</commentid>
    <comment_count>9</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-05-08 14:44:26 -0700</bug_when>
    <thetext>When did single-threaded LTHTests regress?  Can we revert that?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>618829</commentid>
    <comment_count>10</comment_count>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2012-05-08 14:50:04 -0700</bug_when>
    <thetext>At least a few months ago, I expect much longer though. The only single-threaded tests we run don&apos;t actually use the event loop, they simply run a single function and end the test immediately.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>619685</commentid>
    <comment_count>11</comment_count>
      <attachid>140612</attachid>
    <who name="Adrienne Walker">enne</who>
    <bug_when>2012-05-09 11:37:18 -0700</bug_when>
    <thetext>Comment on attachment 140612
Patch

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

&gt; Source/WebCore/platform/graphics/chromium/cc/CCSingleThreadProxy.cpp:355
&gt;        m_layerTreeHostImpl-&gt;animate(monotonicTime, wallClockTime);
&gt; +
&gt; +      if (!m_layerTreeHostImpl-&gt;canDraw())
&gt; +          return false;
&gt; +

Is there any reason to animate() if !canDraw()?  Can you early out earlier?

&gt; Source/WebCore/platform/graphics/chromium/cc/CCThreadProxy.cpp:643
&gt; -    bool drawFrame = m_layerTreeHostImpl-&gt;prepareToDraw(frame) || forcedDraw;
&gt; +    bool drawFrame = m_layerTreeHostImpl-&gt;canDraw() &amp;&amp; (m_layerTreeHostImpl-&gt;prepareToDraw(frame) || forcedDraw);

Just as a sanity check, this canDraw is currently redundant since the scheduler should never call this function if !canDraw()?

&gt; Source/WebCore/platform/graphics/chromium/cc/CCThreadProxy.cpp:677
&gt; -    ASSERT(drawFrame || (!drawFrame &amp;&amp; !forcedDraw));
&gt; +    ASSERT(drawFrame || (!drawFrame &amp;&amp; (!forcedDraw || (forcedDraw &amp;&amp; !m_layerTreeHostImpl-&gt;canDraw()))));

This is an awkward ASSERT and I&apos;m not sure what it&apos;s buying us.  Can it be removed?

&gt; Source/WebKit/chromium/tests/CCLayerTreeHostImplTest.cpp:64
&gt; +        m_hostImpl-&gt;initializeLayerRenderer(createContext(), adoptPtr(new FakeTextureUploader));
&gt; +        m_hostImpl-&gt;setViewportSize(IntSize(10, 10));

I like the changes in this file, but they look like they&apos;re part of some other patch entirely.

&gt; Source/WebKit/chromium/tests/CCLayerTreeHostTest.cpp:844
&gt; +// FIXME: Make this run in single threaded mode too.

If there&apos;s not one already, can you file a bug for this and put a link here?

&gt; Source/WebKit/chromium/tests/CCLayerTreeHostTest.cpp:859
&gt; +        // Only the initial draw should bring us here.
&gt; +        EXPECT_TRUE(impl-&gt;canDraw());

Can you assert about the source frame number here too?

&gt; Source/WebKit/chromium/tests/CCLayerTreeHostTest.cpp:867
&gt; +            // Make the viewport empty so the host says it can&apos;t draw.
&gt; +            m_layerTreeHost-&gt;setViewportSize(IntSize(0, 0));

Is there a place to assert explicitly that canDraw is false?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>619692</commentid>
    <comment_count>12</comment_count>
      <attachid>140612</attachid>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2012-05-09 11:45:08 -0700</bug_when>
    <thetext>Comment on attachment 140612
Patch

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

thanks for comments

&gt;&gt; Source/WebCore/platform/graphics/chromium/cc/CCSingleThreadProxy.cpp:355
&gt;&gt; +
&gt; 
&gt; Is there any reason to animate() if !canDraw()?  Can you early out earlier?

From Ian: This lets animations start, so that javascript attached to the animations can run.

&gt;&gt; Source/WebCore/platform/graphics/chromium/cc/CCThreadProxy.cpp:643
&gt;&gt; +    bool drawFrame = m_layerTreeHostImpl-&gt;canDraw() &amp;&amp; (m_layerTreeHostImpl-&gt;prepareToDraw(frame) || forcedDraw);
&gt; 
&gt; Just as a sanity check, this canDraw is currently redundant since the scheduler should never call this function if !canDraw()?

No. Forced draws must come here in order to signal completion and unblock the other thread. They will indicate success=false if they can&apos;t draw though.

&gt;&gt; Source/WebCore/platform/graphics/chromium/cc/CCThreadProxy.cpp:677
&gt;&gt; +    ASSERT(drawFrame || (!drawFrame &amp;&amp; (!forcedDraw || (forcedDraw &amp;&amp; !m_layerTreeHostImpl-&gt;canDraw()))));
&gt; 
&gt; This is an awkward ASSERT and I&apos;m not sure what it&apos;s buying us.  Can it be removed?

What it&apos;s attempting to do is check that we either:
1) did draw
2) if not, it&apos;s not a forced draw
3) if it is a forced draw, it&apos;s because we couldn&apos;t draw.

But i guess it&apos;s basically asserting on the assignment of drawFrame and duplicating it. Will remove.

&gt;&gt; Source/WebKit/chromium/tests/CCLayerTreeHostImplTest.cpp:64
&gt;&gt; +        m_hostImpl-&gt;setViewportSize(IntSize(10, 10));
&gt; 
&gt; I like the changes in this file, but they look like they&apos;re part of some other patch entirely.

canDraw() checks !viewportSize.isEmpty(). So canDraw will be false and suddenly block drawing or cause asserts in prepareToDraw() in a number of tests. So I moved setViewportSize() up here.

Same thing for m_layerRendererInitialized.

Other option is adding these lines to the now-failing tests, but I like this more?

&gt;&gt; Source/WebKit/chromium/tests/CCLayerTreeHostTest.cpp:844
&gt;&gt; +// FIXME: Make this run in single threaded mode too.
&gt; 
&gt; If there&apos;s not one already, can you file a bug for this and put a link here?

k

&gt;&gt; Source/WebKit/chromium/tests/CCLayerTreeHostTest.cpp:859
&gt;&gt; +        EXPECT_TRUE(impl-&gt;canDraw());
&gt; 
&gt; Can you assert about the source frame number here too?

yup sounds right!

&gt;&gt; Source/WebKit/chromium/tests/CCLayerTreeHostTest.cpp:867
&gt;&gt; +            m_layerTreeHost-&gt;setViewportSize(IntSize(0, 0));
&gt; 
&gt; Is there a place to assert explicitly that canDraw is false?

Sure we can do that here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>619718</commentid>
    <comment_count>13</comment_count>
      <attachid>140612</attachid>
    <who name="Adrienne Walker">enne</who>
    <bug_when>2012-05-09 12:10:23 -0700</bug_when>
    <thetext>Comment on attachment 140612
Patch

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

&gt;&gt;&gt; Source/WebCore/platform/graphics/chromium/cc/CCSingleThreadProxy.cpp:355
&gt;&gt;&gt; +
&gt;&gt; 
&gt;&gt; Is there any reason to animate() if !canDraw()?  Can you early out earlier?
&gt; 
&gt; From Ian: This lets animations start, so that javascript attached to the animations can run.

Oh, I see.  In other words, doComposite() behaves as if it were a forcedDraw.

&gt;&gt;&gt; Source/WebCore/platform/graphics/chromium/cc/CCThreadProxy.cpp:643
&gt;&gt;&gt; +    bool drawFrame = m_layerTreeHostImpl-&gt;canDraw() &amp;&amp; (m_layerTreeHostImpl-&gt;prepareToDraw(frame) || forcedDraw);
&gt;&gt; 
&gt;&gt; Just as a sanity check, this canDraw is currently redundant since the scheduler should never call this function if !canDraw()?
&gt; 
&gt; No. Forced draws must come here in order to signal completion and unblock the other thread. They will indicate success=false if they can&apos;t draw though.

Thanks for the explanation.  I misunderstood how canDraw() was supposed to work.  Can you add some comments about the relationship of canDraw to prepareToDraw and drawLayers as well as canDraw to scheduledActionDrawAndSwap?

&gt;&gt;&gt; Source/WebKit/chromium/tests/CCLayerTreeHostImplTest.cpp:64
&gt;&gt;&gt; +        m_hostImpl-&gt;setViewportSize(IntSize(10, 10));
&gt;&gt; 
&gt;&gt; I like the changes in this file, but they look like they&apos;re part of some other patch entirely.
&gt; 
&gt; canDraw() checks !viewportSize.isEmpty(). So canDraw will be false and suddenly block drawing or cause asserts in prepareToDraw() in a number of tests. So I moved setViewportSize() up here.
&gt; 
&gt; Same thing for m_layerRendererInitialized.
&gt; 
&gt; Other option is adding these lines to the now-failing tests, but I like this more?

Nah, this approach is ok.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>620012</commentid>
    <comment_count>14</comment_count>
      <attachid>140612</attachid>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2012-05-09 16:37:33 -0700</bug_when>
    <thetext>Comment on attachment 140612
Patch

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

&gt;&gt;&gt;&gt; Source/WebCore/platform/graphics/chromium/cc/CCThreadProxy.cpp:643
&gt;&gt;&gt;&gt; +    bool drawFrame = m_layerTreeHostImpl-&gt;canDraw() &amp;&amp; (m_layerTreeHostImpl-&gt;prepareToDraw(frame) || forcedDraw);
&gt;&gt;&gt; 
&gt;&gt;&gt; Just as a sanity check, this canDraw is currently redundant since the scheduler should never call this function if !canDraw()?
&gt;&gt; 
&gt;&gt; No. Forced draws must come here in order to signal completion and unblock the other thread. They will indicate success=false if they can&apos;t draw though.
&gt; 
&gt; Thanks for the explanation.  I misunderstood how canDraw() was supposed to work.  Can you add some comments about the relationship of canDraw to prepareToDraw and drawLayers as well as canDraw to scheduledActionDrawAndSwap?

done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>620037</commentid>
    <comment_count>15</comment_count>
      <attachid>141053</attachid>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2012-05-09 16:55:21 -0700</bug_when>
    <thetext>Created attachment 141053
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>620082</commentid>
    <comment_count>16</comment_count>
      <attachid>141053</attachid>
    <who name="Adrienne Walker">enne</who>
    <bug_when>2012-05-09 17:20:21 -0700</bug_when>
    <thetext>Comment on attachment 141053
Patch

R=me.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>620108</commentid>
    <comment_count>17</comment_count>
      <attachid>141053</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-05-09 17:40:44 -0700</bug_when>
    <thetext>Comment on attachment 141053
Patch

Clearing flags on attachment: 141053

Committed r116587: &lt;http://trac.webkit.org/changeset/116587&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>620109</commentid>
    <comment_count>18</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-05-09 17:40:49 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>140603</attachid>
            <date>2012-05-07 15:22:11 -0700</date>
            <delta_ts>2012-05-07 15:56:27 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-85829-20120507182210.patch</filename>
            <type>text/plain</type>
            <size>13626</size>
            <attacher name="Dana Jansens">danakj</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE2MzEzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzY2ZjBmMmQ3N2E2OTlm
MzAxZGU3NzM1MGEzZWMyZjM0Njc0NGJlMy4uOWMyZjRjNzVlODA4ZDc5OTU4NzQ0NzVhMjQ0Nzk1
MjU1NWZlMWVlZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM1IEBACisyMDEyLTA1LTA3ICBEYW5h
IEphbnNlbnMgIDxkYW5ha2pAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtjaHJvbWl1bV0gRG9u
J3QgZHJhdyB3aGVuIGNhbkRyYXcoKSBpcyBmYWxzZQorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODU4MjkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIGlzIGJhc2VkIG9uIHRoZSB3b3JrIG9mIERhbmll
bCBTaWV2ZXJzIGluIGJ1ZworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9ODI2ODAuIFdoZW4gY2FuRHJhdygpIGlzIGZhbHNlLAorICAgICAgICB3ZSBzaG91
bGQgbm90IGNhbGwgZHJhd0xheWVycygpIG9yIHByZXBhcmVUb0RyYXcoKSBpbiBib3RoIFNpbmds
ZS0gYW5kCisgICAgICAgIE11bHRpLVRocmVhZGVkIG1vZGUuCisKKyAgICAgICAgZHJhd0xheWVy
cygpIGlzIGNyYXNoaW5nIGluIHNpbmdsZSB0aHJlYWRlZCBtb2RlLCBhbmQgdGhpcyBhdHRlbXB0
cyB0bworICAgICAgICBwcmV2ZW50IGl0IGZyb20gYmVpbmcgY2FsbGVkIHdpdGggaW52YWxpZCBz
dGF0ZS4gV2hpbGUgbWFraW5nIGl0IGJlaGF2ZQorICAgICAgICBwcm9wZXJseSBpbiBzaW5nbGUt
dGhyZWFkZWQgbW9kZSwgaXQgc2VlbXMgYXBwcm9wcmlhdGUgdG8gdW5yZXZlcnQgdGhlCisgICAg
ICAgIHBhcnRzIG9mIDgyNjgwIHRoYXQgbWFkZSB0aHJlYWRlZCBtb2RlIGJlaGF2ZSBzaW1pbGFy
bHkgYXBwcm9wcmlhdGVseS4KKworICAgICAgICBBIHNpbmdsZS10aHJlYWRlZCB0ZXN0IGlzIG5v
dCBpbmNsdWRlZCBzaW5jZSBMVEhUZXN0cyBpcyB1bmFibGUgdG8gcnVuCisgICAgICAgIGluIHNp
bmdsZS10aHJlYWRlZCBtb2RlIGF0IHRoaXMgdGltZSAocGVuZGluZyB3b3JrIGZyb20gSWFuIFZv
bGxpY2spLiBTbworICAgICAgICB3ZSB0ZXN0IGluIHRocmVhZGVkIG1vZGUgb25seSB3aXRoIGEg
bm90ZSB0byBpbmNsdWRlIGEgc2luZ2xlIHRocmVhZAorICAgICAgICB2ZXJzaW9uLgorCisgICAg
ICAgIFRlc3RzOiBDQ0xheWVyVHJlZUhvc3RUZXN0Q2FuRHJhd0Jsb2Nrc0RyYXdpbmcucnVuTXVs
dGlUaHJlYWQKKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5
ZXJUcmVlSG9zdEltcGwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXllclRyZWVIb3N0SW1w
bDo6cHJlcGFyZVRvRHJhdyk6CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVyVHJlZUhvc3RJbXBs
OjpkcmF3TGF5ZXJzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9D
Q1NpbmdsZVRocmVhZFByb3h5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNDU2luZ2xlVGhyZWFk
UHJveHk6OmRvQ29tcG9zaXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9jYy9DQ1RocmVhZFByb3h5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNDVGhyZWFkUHJveHk6
OnNjaGVkdWxlZEFjdGlvbkRyYXdBbmRTd2FwSW50ZXJuYWwpOgorCiAyMDEyLTA1LTA3ICBDaHJp
c3RvcGhlIER1bWV6ICA8Y2hyaXN0b3BoZS5kdW1lekBpbnRlbC5jb20+CiAKICAgICAgICAgW0VG
TF0gbWVkaWEvdHJhY2svdHJhY2stY3VlLXJlbmRlcmluZy1zbmFwLXRvLWxpbmVzLW5vdC1zZXQu
aHRtbCBmYWlscwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cg
Yi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwppbmRleCA3NzMxNjVmMzQyOGE5ODM4
MTBhYzllNzlmYjAyNGYzMTI1YmNmZWNhLi4zNTFhYTBiMzY4OTg1Y2NiNzdmYjRiYTk2NWZiYjJl
OWMxOWJkZWQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwor
KysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIzIEBACisy
MDEyLTA1LTA3ICBEYW5hIEphbnNlbnMgIDxkYW5ha2pAY2hyb21pdW0ub3JnPgorCisgICAgICAg
IFtjaHJvbWl1bV0gRG9uJ3QgZHJhdyB3aGVuIGNhbkRyYXcoKSBpcyBmYWxzZQorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODU4MjkKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHRlc3RzL0NDTGF5ZXJUcmVl
SG9zdEltcGxUZXN0LmNwcDoKKyAgICAgICAgKFdlYktpdFRlc3RzOjpDQ0xheWVyVHJlZUhvc3RJ
bXBsVGVzdDo6Q0NMYXllclRyZWVIb3N0SW1wbFRlc3QpOgorICAgICAgICAoV2ViS2l0VGVzdHM6
OlRFU1RfRik6CisgICAgICAgICogdGVzdHMvQ0NMYXllclRyZWVIb3N0VGVzdC5jcHA6CisgICAg
ICAgIChXVEYpOgorICAgICAgICAoQ0NMYXllclRyZWVIb3N0VGVzdENhbkRyYXdCbG9ja3NEcmF3
aW5nKToKKyAgICAgICAgKFdURjo6Q0NMYXllclRyZWVIb3N0VGVzdENhbkRyYXdCbG9ja3NEcmF3
aW5nOjpDQ0xheWVyVHJlZUhvc3RUZXN0Q2FuRHJhd0Jsb2Nrc0RyYXdpbmcpOgorICAgICAgICAo
V1RGOjpDQ0xheWVyVHJlZUhvc3RUZXN0Q2FuRHJhd0Jsb2Nrc0RyYXdpbmc6OmJlZ2luVGVzdCk6
CisgICAgICAgIChXVEY6OkNDTGF5ZXJUcmVlSG9zdFRlc3RDYW5EcmF3QmxvY2tzRHJhd2luZzo6
ZHJhd0xheWVyc09uQ0NUaHJlYWQpOgorICAgICAgICAoV1RGOjpDQ0xheWVyVHJlZUhvc3RUZXN0
Q2FuRHJhd0Jsb2Nrc0RyYXdpbmc6OmRpZENvbW1pdEFuZERyYXdGcmFtZSk6CisgICAgICAgIChX
VEY6OkNDTGF5ZXJUcmVlSG9zdFRlc3RDYW5EcmF3QmxvY2tzRHJhd2luZzo6YWZ0ZXJUZXN0KToK
KyAgICAgICAgKFdURjo6VEVTVF9GKToKKwogMjAxMi0wNS0wNyAgS2ludWtvIFlhc3VkYSAgPGtp
bnVrb0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgVW5yZXZpZXdlZDogdGhlIHNhbWUgZml4IGlu
IGFub3RoZXIgZmlsZSBmb3IgY2hyb21pdW0gd2luIGJ1aWxkLiAgQWRkaW5nIFdlYkNvcmUgbmFt
ZXNwYWNlIHRvIEZpbGVTeXN0ZW1UeXBlcy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0
SW1wbC5jcHAKaW5kZXggM2VhNWZiMTlhYzdiZGNkYjRkZDZmYzFlYzExNTk1MWVjYTQ1ZmNmZC4u
NzcwMDM4ZGYyNzliY2Y0ZTc3ZDQwYmM5MDRiOWMyOTc5OWU1NGVhMiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0
SW1wbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NMYXllclRyZWVIb3N0SW1wbC5jcHAKQEAgLTM4MCwxMyArMzgwLDExIEBAIEludFNpemUg
Q0NMYXllclRyZWVIb3N0SW1wbDo6Y29udGVudFNpemUoKSBjb25zdAogYm9vbCBDQ0xheWVyVHJl
ZUhvc3RJbXBsOjpwcmVwYXJlVG9EcmF3KEZyYW1lRGF0YSYgZnJhbWUpCiB7CiAgICAgVFJBQ0Vf
RVZFTlQoIkNDTGF5ZXJUcmVlSG9zdEltcGw6OnByZXBhcmVUb0RyYXciLCB0aGlzLCAwKTsKKyAg
ICBBU1NFUlQoY2FuRHJhdygpKTsKIAogICAgIGZyYW1lLnJlbmRlclBhc3Nlcy5jbGVhcigpOwog
ICAgIGZyYW1lLnJlbmRlclN1cmZhY2VMYXllckxpc3QuY2xlYXIoKTsKIAotICAgIGlmICghbV9y
b290TGF5ZXJJbXBsKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KICAgICBpZiAoIWNhbGN1bGF0
ZVJlbmRlclBhc3NlcyhmcmFtZS5yZW5kZXJQYXNzZXMsIGZyYW1lLnJlbmRlclN1cmZhY2VMYXll
ckxpc3QpKSB7CiAgICAgICAgIC8vIFdlJ3JlIG1pc3NpbmcgdGV4dHVyZXMgb24gYW4gYW5pbWF0
aW5nIGxheWVyLiBSZXF1ZXN0IGEgY29tbWl0LgogICAgICAgICBtX2NsaWVudC0+c2V0TmVlZHND
b21taXRPbkltcGxUaHJlYWQoKTsKQEAgLTQwNSwxMCArNDAzLDcgQEAgdm9pZCBDQ0xheWVyVHJl
ZUhvc3RJbXBsOjpzZXRDb250ZW50c01lbW9yeUFsbG9jYXRpb25MaW1pdEJ5dGVzKHNpemVfdCBi
eXRlcykKIHZvaWQgQ0NMYXllclRyZWVIb3N0SW1wbDo6ZHJhd0xheWVycyhjb25zdCBGcmFtZURh
dGEmIGZyYW1lKQogewogICAgIFRSQUNFX0VWRU5UKCJDQ0xheWVyVHJlZUhvc3RJbXBsOjpkcmF3
TGF5ZXJzIiwgdGhpcywgMCk7Ci0gICAgQVNTRVJUKG1fbGF5ZXJSZW5kZXJlcik7Ci0KLSAgICBp
ZiAoIW1fcm9vdExheWVySW1wbCkKLSAgICAgICAgcmV0dXJuOworICAgIEFTU0VSVChjYW5EcmF3
KCkpOwogCiAgICAgLy8gRklYTUU6IHVzZSB0aGUgZnJhbWUgYmVnaW4gdGltZSBmcm9tIHRoZSBv
dmVyYWxsIGNvbXBvc2l0b3Igc2NoZWR1bGVyLgogICAgIC8vIFRoaXMgdmFsdWUgaXMgY3VycmVu
dGx5IGluYWNjZXNzaWJsZSBiZWNhdXNlIGl0IGlzIHVwIGluIENocm9taXVtJ3MKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2luZ2xl
VGhyZWFkUHJveHkuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vY2MvQ0NTaW5nbGVUaHJlYWRQcm94eS5jcHAKaW5kZXggYjM5NzM2ZGQwYjRlMTBkZDJkNWJm
NTA4MTg5MTE1YmMzZTNiODc5Yi4uMWI4NGFjNjU3YzA4MjY4ODkyYjMwZWNjZjU4N2E4Yjg1NGNj
ODc5NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vY2MvQ0NTaW5nbGVUaHJlYWRQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTaW5nbGVUaHJlYWRQcm94eS5jcHAKQEAgLTMyNSw4
ICszMjUsMTEgQEAgYm9vbCBDQ1NpbmdsZVRocmVhZFByb3h5Ojpkb0NvbXBvc2l0ZSgpCiAgICAg
ICBEZWJ1Z1Njb3BlZFNldEltcGxUaHJlYWQgaW1wbDsKICAgICAgIGRvdWJsZSBtb25vdG9uaWNU
aW1lID0gbW9ub3RvbmljYWxseUluY3JlYXNpbmdUaW1lKCk7CiAgICAgICBkb3VibGUgd2FsbENs
b2NrVGltZSA9IGN1cnJlbnRUaW1lKCk7Ci0KICAgICAgIG1fbGF5ZXJUcmVlSG9zdEltcGwtPmFu
aW1hdGUobW9ub3RvbmljVGltZSwgd2FsbENsb2NrVGltZSk7CisKKyAgICAgIGlmICghbV9sYXll
clRyZWVIb3N0SW1wbC0+Y2FuRHJhdygpKQorICAgICAgICAgIHJldHVybiBmYWxzZTsKKwogICAg
ICAgQ0NMYXllclRyZWVIb3N0SW1wbDo6RnJhbWVEYXRhIGZyYW1lOwogICAgICAgbV9sYXllclRy
ZWVIb3N0SW1wbC0+cHJlcGFyZVRvRHJhdyhmcmFtZSk7CiAgICAgICBtX2xheWVyVHJlZUhvc3RJ
bXBsLT5kcmF3TGF5ZXJzKGZyYW1lKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGhyZWFkUHJveHkuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaHJlYWRQcm94eS5jcHAKaW5kZXgg
ZWFmMmY4OWE5ZWQwYWQ4NjhlOWQ4MjZlNWY4ZmEyYjQxYjBmY2ZhMi4uMWQ3NmJmMTEyZjNkYTZh
Yzc4YmIxNjNmMDU5NWVmMWI5OWNiZjA4NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaHJlYWRQcm94eS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaHJlYWRQcm94eS5jcHAK
QEAgLTYyMSw3ICs2MjEsNyBAQCBDQ1NjaGVkdWxlZEFjdGlvbkRyYXdBbmRTd2FwUmVzdWx0IEND
VGhyZWFkUHJveHk6OnNjaGVkdWxlZEFjdGlvbkRyYXdBbmRTd2FwSW50ZQogICAgIG1faW5wdXRI
YW5kbGVyT25JbXBsVGhyZWFkLT5hbmltYXRlKG1vbm90b25pY1RpbWUpOwogICAgIG1fbGF5ZXJU
cmVlSG9zdEltcGwtPmFuaW1hdGUobW9ub3RvbmljVGltZSwgd2FsbENsb2NrVGltZSk7CiAgICAg
Q0NMYXllclRyZWVIb3N0SW1wbDo6RnJhbWVEYXRhIGZyYW1lOwotICAgIGJvb2wgZHJhd0ZyYW1l
ID0gbV9sYXllclRyZWVIb3N0SW1wbC0+cHJlcGFyZVRvRHJhdyhmcmFtZSkgfHwgZm9yY2VkRHJh
dzsKKyAgICBib29sIGRyYXdGcmFtZSA9IG1fbGF5ZXJUcmVlSG9zdEltcGwtPmNhbkRyYXcoKSAm
JiAobV9sYXllclRyZWVIb3N0SW1wbC0+cHJlcGFyZVRvRHJhdyhmcmFtZSkgfHwgZm9yY2VkRHJh
dyk7CiAgICAgaWYgKGRyYXdGcmFtZSkgewogICAgICAgICBtX2xheWVyVHJlZUhvc3RJbXBsLT5k
cmF3TGF5ZXJzKGZyYW1lKTsKICAgICAgICAgcmVzdWx0LmRpZERyYXcgPSB0cnVlOwpAQCAtNjMw
LDkgKzYzMCwxMSBAQCBDQ1NjaGVkdWxlZEFjdGlvbkRyYXdBbmRTd2FwUmVzdWx0IENDVGhyZWFk
UHJveHk6OnNjaGVkdWxlZEFjdGlvbkRyYXdBbmRTd2FwSW50ZQogCiAgICAgLy8gQ2hlY2sgZm9y
IGEgcGVuZGluZyBjb21wb3NpdGVBbmRSZWFkYmFjay4KICAgICBpZiAobV9yZWFkYmFja1JlcXVl
c3RPbkltcGxUaHJlYWQpIHsKLSAgICAgICAgQVNTRVJUKGRyYXdGcmFtZSk7IC8vIFRoaXMgc2hv
dWxkIGJlIGEgZm9yY2VkRHJhdwotICAgICAgICBtX2xheWVyVHJlZUhvc3RJbXBsLT5yZWFkYmFj
ayhtX3JlYWRiYWNrUmVxdWVzdE9uSW1wbFRocmVhZC0+cGl4ZWxzLCBtX3JlYWRiYWNrUmVxdWVz
dE9uSW1wbFRocmVhZC0+cmVjdCk7Ci0gICAgICAgIG1fcmVhZGJhY2tSZXF1ZXN0T25JbXBsVGhy
ZWFkLT5zdWNjZXNzID0gIW1fbGF5ZXJUcmVlSG9zdEltcGwtPmlzQ29udGV4dExvc3QoKTsKKyAg
ICAgICAgbV9yZWFkYmFja1JlcXVlc3RPbkltcGxUaHJlYWQtPnN1Y2Nlc3MgPSBmYWxzZTsKKyAg
ICAgICAgaWYgKGRyYXdGcmFtZSkgeworICAgICAgICAgICAgbV9sYXllclRyZWVIb3N0SW1wbC0+
cmVhZGJhY2sobV9yZWFkYmFja1JlcXVlc3RPbkltcGxUaHJlYWQtPnBpeGVscywgbV9yZWFkYmFj
a1JlcXVlc3RPbkltcGxUaHJlYWQtPnJlY3QpOworICAgICAgICAgICAgbV9yZWFkYmFja1JlcXVl
c3RPbkltcGxUaHJlYWQtPnN1Y2Nlc3MgPSAhbV9sYXllclRyZWVIb3N0SW1wbC0+aXNDb250ZXh0
TG9zdCgpOworICAgICAgICB9CiAgICAgICAgIG1fcmVhZGJhY2tSZXF1ZXN0T25JbXBsVGhyZWFk
LT5jb21wbGV0aW9uLnNpZ25hbCgpOwogICAgICAgICBtX3JlYWRiYWNrUmVxdWVzdE9uSW1wbFRo
cmVhZCA9IDA7CiAgICAgfQpAQCAtNjQyLDcgKzY0NCw2IEBAIENDU2NoZWR1bGVkQWN0aW9uRHJh
d0FuZFN3YXBSZXN1bHQgQ0NUaHJlYWRQcm94eTo6c2NoZWR1bGVkQWN0aW9uRHJhd0FuZFN3YXBJ
bnRlCiAKICAgICAvLyBQcm9jZXNzIGFueSBmaW5pc2ggcmVxdWVzdAogICAgIGlmIChtX2Zpbmlz
aEFsbFJlbmRlcmluZ0NvbXBsZXRpb25FdmVudE9uSW1wbFRocmVhZCkgewotICAgICAgICBBU1NF
UlQoZHJhd0ZyYW1lKTsgLy8gVGhpcyBzaG91bGQgYmUgYSBmb3JjZWREcmF3CiAgICAgICAgIG1f
bGF5ZXJUcmVlSG9zdEltcGwtPmZpbmlzaEFsbFJlbmRlcmluZygpOwogICAgICAgICBtX2Zpbmlz
aEFsbFJlbmRlcmluZ0NvbXBsZXRpb25FdmVudE9uSW1wbFRocmVhZC0+c2lnbmFsKCk7CiAgICAg
ICAgIG1fZmluaXNoQWxsUmVuZGVyaW5nQ29tcGxldGlvbkV2ZW50T25JbXBsVGhyZWFkID0gMDsK
QEAgLTY1NCw3ICs2NTUsNyBAQCBDQ1NjaGVkdWxlZEFjdGlvbkRyYXdBbmRTd2FwUmVzdWx0IEND
VGhyZWFkUHJveHk6OnNjaGVkdWxlZEFjdGlvbkRyYXdBbmRTd2FwSW50ZQogICAgICAgICBtX21h
aW5UaHJlYWRQcm94eS0+cG9zdFRhc2soY3JlYXRlQ0NUaHJlYWRUYXNrKHRoaXMsICZDQ1RocmVh
ZFByb3h5OjpkaWRDb21taXRBbmREcmF3RnJhbWUpKTsKICAgICB9CiAKLSAgICBBU1NFUlQoZHJh
d0ZyYW1lIHx8ICghZHJhd0ZyYW1lICYmICFmb3JjZWREcmF3KSk7CisgICAgQVNTRVJUKGRyYXdG
cmFtZSB8fCAoIWRyYXdGcmFtZSAmJiAoIWZvcmNlZERyYXcgfHwgKGZvcmNlZERyYXcgJiYgIW1f
bGF5ZXJUcmVlSG9zdEltcGwtPmNhbkRyYXcoKSkpKSk7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ0xheWVyVHJlZUhv
c3RJbXBsVGVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDTGF5ZXJUcmVl
SG9zdEltcGxUZXN0LmNwcAppbmRleCBmZjI0OTcwODUwZDU0ZThlYmY2Yzc4YWUyMzFkZDE2ZmU4
MDJiYmJjLi5mYTZhOWI1MzU3OTI2N2RlM2MwNGY1OTI3NDZjZTJiNDBmNDY4YTEzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDTGF5ZXJUcmVlSG9zdEltcGxUZXN0
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDTGF5ZXJUcmVlSG9zdElt
cGxUZXN0LmNwcApAQCAtNTksNiArNTksOCBAQCBwdWJsaWM6CiAgICAgewogICAgICAgICBDQ1Nl
dHRpbmdzIHNldHRpbmdzOwogICAgICAgICBtX2hvc3RJbXBsID0gQ0NMYXllclRyZWVIb3N0SW1w
bDo6Y3JlYXRlKHNldHRpbmdzLCB0aGlzKTsKKyAgICAgICAgbV9ob3N0SW1wbC0+c2V0Vmlld3Bv
cnRTaXplKEludFNpemUoMSwgMSkpOworICAgICAgICBtX2hvc3RJbXBsLT5pbml0aWFsaXplTGF5
ZXJSZW5kZXJlcihjcmVhdGVDb250ZXh0KCkpOwogICAgIH0KIAogICAgIHZpcnR1YWwgdm9pZCBk
aWRMb3NlQ29udGV4dE9uSW1wbFRocmVhZCgpIE9WRVJSSURFIHsgfQpAQCAtMjU0LDggKzI1Niw2
IEBAIFRFU1RfRihDQ0xheWVyVHJlZUhvc3RJbXBsVGVzdCwgbm9uRmFzdFNjcm9sbGFibGVSZWdp
b25CYXNpYykKIAogVEVTVF9GKENDTGF5ZXJUcmVlSG9zdEltcGxUZXN0LCBub25GYXN0U2Nyb2xs
YWJsZVJlZ2lvbldpdGhPZmZzZXQpCiB7Ci0gICAgbV9ob3N0SW1wbC0+aW5pdGlhbGl6ZUxheWVy
UmVuZGVyZXIoY3JlYXRlQ29udGV4dCgpKTsKLQogICAgIE93blB0cjxDQ0xheWVySW1wbD4gcm9v
dCA9IENDTGF5ZXJJbXBsOjpjcmVhdGUoMCk7CiAgICAgcm9vdC0+c2V0U2Nyb2xsYWJsZSh0cnVl
KTsKICAgICByb290LT5zZXRTY3JvbGxQb3NpdGlvbihJbnRQb2ludCgwLCAwKSk7CkBAIC00NDIs
NDAgKzQ0Miw0NyBAQCBURVNUX0YoQ0NMYXllclRyZWVIb3N0SW1wbFRlc3QsIGRpZERyYXdOb3RD
YWxsZWRPbkhpZGRlbkxheWVyKQogewogICAgIG1faG9zdEltcGwtPmluaXRpYWxpemVMYXllclJl
bmRlcmVyKGNyZWF0ZUNvbnRleHQoKSk7CiAKLSAgICAvLyBFbnN1cmUgdmlzaWJsZUxheWVyUmVj
dCBmb3Igcm9vdCBsYXllciBpcyBlbXB0eQotICAgIG1faG9zdEltcGwtPnNldFZpZXdwb3J0U2l6
ZShJbnRTaXplKDAsIDApKTsKLQorICAgIC8vIFRoZSByb290IGxheWVyIGlzIGFsd2F5cyBkcmF3
biwgc28gcnVuIHRoaXMgdGVzdCBvbiBhIGNoaWxkIGxheWVyIHRoYXQKKyAgICAvLyB3aWxsIGJl
IG1hc2tlZCBvdXQgYnkgdGhlIHJvb3QgbGF5ZXIncyBib3VuZHMuCiAgICAgbV9ob3N0SW1wbC0+
c2V0Um9vdExheWVyKERpZERyYXdDaGVja0xheWVyOjpjcmVhdGUoMCkpOwogICAgIERpZERyYXdD
aGVja0xheWVyKiByb290ID0gc3RhdGljX2Nhc3Q8RGlkRHJhd0NoZWNrTGF5ZXIqPihtX2hvc3RJ
bXBsLT5yb290TGF5ZXIoKSk7CisgICAgcm9vdC0+c2V0TWFza3NUb0JvdW5kcyh0cnVlKTsKKwor
ICAgIHJvb3QtPmFkZENoaWxkKERpZERyYXdDaGVja0xheWVyOjpjcmVhdGUoMSkpOworICAgIERp
ZERyYXdDaGVja0xheWVyKiBsYXllciA9IHN0YXRpY19jYXN0PERpZERyYXdDaGVja0xheWVyKj4o
cm9vdC0+Y2hpbGRyZW4oKVswXS5nZXQoKSk7CisgICAgLy8gRW5zdXJlIHZpc2libGVMYXllclJl
Y3QgZm9yIGxheWVyIGlzIGVtcHR5CisgICAgbGF5ZXItPnNldFBvc2l0aW9uKEZsb2F0UG9pbnQo
MTAwLCAxMDApKTsKKyAgICBsYXllci0+c2V0Qm91bmRzKEludFNpemUoMTAsIDEwKSk7CisgICAg
bGF5ZXItPnNldENvbnRlbnRCb3VuZHMoSW50U2l6ZSgxMCwgMTApKTsKIAogICAgIENDTGF5ZXJU
cmVlSG9zdEltcGw6OkZyYW1lRGF0YSBmcmFtZTsKIAotICAgIEVYUEVDVF9GQUxTRShyb290LT53
aWxsRHJhd0NhbGxlZCgpKTsKLSAgICBFWFBFQ1RfRkFMU0Uocm9vdC0+ZGlkRHJhd0NhbGxlZCgp
KTsKKyAgICBFWFBFQ1RfRkFMU0UobGF5ZXItPndpbGxEcmF3Q2FsbGVkKCkpOworICAgIEVYUEVD
VF9GQUxTRShsYXllci0+ZGlkRHJhd0NhbGxlZCgpKTsKIAogICAgIEVYUEVDVF9UUlVFKG1faG9z
dEltcGwtPnByZXBhcmVUb0RyYXcoZnJhbWUpKTsKICAgICBtX2hvc3RJbXBsLT5kcmF3TGF5ZXJz
KGZyYW1lKTsKICAgICBtX2hvc3RJbXBsLT5kaWREcmF3QWxsTGF5ZXJzKGZyYW1lKTsKIAotICAg
IEVYUEVDVF9GQUxTRShyb290LT53aWxsRHJhd0NhbGxlZCgpKTsKLSAgICBFWFBFQ1RfRkFMU0Uo
cm9vdC0+ZGlkRHJhd0NhbGxlZCgpKTsKKyAgICBFWFBFQ1RfRkFMU0UobGF5ZXItPndpbGxEcmF3
Q2FsbGVkKCkpOworICAgIEVYUEVDVF9GQUxTRShsYXllci0+ZGlkRHJhd0NhbGxlZCgpKTsKIAot
ICAgIEVYUEVDVF9UUlVFKHJvb3QtPnZpc2libGVMYXllclJlY3QoKS5pc0VtcHR5KCkpOworICAg
IEVYUEVDVF9UUlVFKGxheWVyLT52aXNpYmxlTGF5ZXJSZWN0KCkuaXNFbXB0eSgpKTsKIAotICAg
IC8vIEVuc3VyZSB2aXNpYmxlTGF5ZXJSZWN0IGZvciByb290IGxheWVyIGlzIG5vdCBlbXB0eQot
ICAgIG1faG9zdEltcGwtPnNldFZpZXdwb3J0U2l6ZShJbnRTaXplKDEwLCAxMCkpOworICAgIC8v
IEVuc3VyZSB2aXNpYmxlTGF5ZXJSZWN0IGZvciBsYXllciBsYXllciBpcyBub3QgZW1wdHkKKyAg
ICBsYXllci0+c2V0UG9zaXRpb24oRmxvYXRQb2ludCgwLCAwKSk7CiAKLSAgICBFWFBFQ1RfRkFM
U0Uocm9vdC0+d2lsbERyYXdDYWxsZWQoKSk7Ci0gICAgRVhQRUNUX0ZBTFNFKHJvb3QtPmRpZERy
YXdDYWxsZWQoKSk7CisgICAgRVhQRUNUX0ZBTFNFKGxheWVyLT53aWxsRHJhd0NhbGxlZCgpKTsK
KyAgICBFWFBFQ1RfRkFMU0UobGF5ZXItPmRpZERyYXdDYWxsZWQoKSk7CiAKICAgICBFWFBFQ1Rf
VFJVRShtX2hvc3RJbXBsLT5wcmVwYXJlVG9EcmF3KGZyYW1lKSk7CiAgICAgbV9ob3N0SW1wbC0+
ZHJhd0xheWVycyhmcmFtZSk7CiAgICAgbV9ob3N0SW1wbC0+ZGlkRHJhd0FsbExheWVycyhmcmFt
ZSk7CiAKLSAgICBFWFBFQ1RfVFJVRShyb290LT53aWxsRHJhd0NhbGxlZCgpKTsKLSAgICBFWFBF
Q1RfVFJVRShyb290LT5kaWREcmF3Q2FsbGVkKCkpOworICAgIEVYUEVDVF9UUlVFKGxheWVyLT53
aWxsRHJhd0NhbGxlZCgpKTsKKyAgICBFWFBFQ1RfVFJVRShsYXllci0+ZGlkRHJhd0NhbGxlZCgp
KTsKIAotICAgIEVYUEVDVF9GQUxTRShyb290LT52aXNpYmxlTGF5ZXJSZWN0KCkuaXNFbXB0eSgp
KTsKKyAgICBFWFBFQ1RfRkFMU0UobGF5ZXItPnZpc2libGVMYXllclJlY3QoKS5pc0VtcHR5KCkp
OwogfQogCiBURVNUX0YoQ0NMYXllclRyZWVIb3N0SW1wbFRlc3QsIGRpZERyYXdDYWxsZWRPbkFs
bExheWVycykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NMYXll
clRyZWVIb3N0VGVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDTGF5ZXJU
cmVlSG9zdFRlc3QuY3BwCmluZGV4IGYyMzgyYjM1OTA3YWQzZDRlZTNjYTNlMmJjM2IyMmJiNmU3
ZTU3M2MuLjM4ZWEzNzU1MDIxYWRjNzI5MjUyMjI5ZTZiMjZjNDkwYTU2ZGYzY2IgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NMYXllclRyZWVIb3N0VGVzdC5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ0xheWVyVHJlZUhvc3RUZXN0LmNw
cApAQCAtODQwLDYgKzg0MCw1MyBAQCBURVNUX0YoQ0NMYXllclRyZWVIb3N0VGVzdFNldE5lZWRz
UmVkcmF3LCBydW5NdWx0aVRocmVhZCkKICAgICBydW5UZXN0VGhyZWFkZWQoKTsKIH0KIAorLy8g
SWYgdGhlIGxheWVyVHJlZUhvc3Qgc2F5cyBpdCBjYW4ndCBkcmF3LCB0aGVuIHdlIHNob3VsZCBu
b3QgdHJ5IHRvIGRyYXcuCisvLyBGSVhNRTogTWFrZSB0aGlzIHJ1biBpbiBzaW5nbGUgdGhyZWFk
ZWQgbW9kZSB0b28uCitjbGFzcyBDQ0xheWVyVHJlZUhvc3RUZXN0Q2FuRHJhd0Jsb2Nrc0RyYXdp
bmcgOiBwdWJsaWMgQ0NMYXllclRyZWVIb3N0VGVzdFRocmVhZE9ubHkgeworcHVibGljOgorICAg
IENDTGF5ZXJUcmVlSG9zdFRlc3RDYW5EcmF3QmxvY2tzRHJhd2luZygpCisgICAgICAgIDogbV9u
dW1Db21taXRzKDApCisgICAgeworICAgIH0KKworICAgIHZpcnR1YWwgdm9pZCBiZWdpblRlc3Qo
KQorICAgIHsKKyAgICB9CisKKyAgICB2aXJ0dWFsIHZvaWQgZHJhd0xheWVyc09uQ0NUaHJlYWQo
Q0NMYXllclRyZWVIb3N0SW1wbCogaW1wbCkKKyAgICB7CisgICAgICAgIC8vIE9ubHkgdGhlIGlu
aXRpYWwgZHJhdyBzaG91bGQgYnJpbmcgdXMgaGVyZS4KKyAgICAgICAgRVhQRUNUX1RSVUUoaW1w
bC0+Y2FuRHJhdygpKTsKKyAgICB9CisKKyAgICB2aXJ0dWFsIHZvaWQgZGlkQ29tbWl0QW5kRHJh
d0ZyYW1lKCkKKyAgICB7CisgICAgICAgIG1fbnVtQ29tbWl0cysrOworICAgICAgICBpZiAobV9u
dW1Db21taXRzID09IDEpIHsKKyAgICAgICAgICAgIC8vIE1ha2UgdGhlIHZpZXdwb3J0IGVtcHR5
IHNvIHRoZSBob3N0IHNheXMgaXQgY2FuJ3QgZHJhdy4KKyAgICAgICAgICAgIG1fbGF5ZXJUcmVl
SG9zdC0+c2V0Vmlld3BvcnRTaXplKEludFNpemUoMCwgMCkpOworCisgICAgICAgICAgICBPd25B
cnJheVB0cjxjaGFyPiBwaXhlbHMoYWRvcHRBcnJheVB0cihuZXcgY2hhcls0XSkpOworICAgICAg
ICAgICAgbV9sYXllclRyZWVIb3N0LT5jb21wb3NpdGVBbmRSZWFkYmFjayhzdGF0aWNfY2FzdDx2
b2lkKj4ocGl4ZWxzLmdldCgpKSwgSW50UmVjdCgwLCAwLCAxLCAxKSk7CisgICAgICAgIH0gZWxz
ZSBpZiAobV9udW1Db21taXRzID09IDIpIHsKKyAgICAgICAgICAgIG1fbGF5ZXJUcmVlSG9zdC0+
c2V0TmVlZHNDb21taXQoKTsKKyAgICAgICAgICAgIG1fbGF5ZXJUcmVlSG9zdC0+ZmluaXNoQWxs
UmVuZGVyaW5nKCk7CisgICAgICAgICAgICBlbmRUZXN0KCk7CisgICAgICAgIH0KKyAgICB9CisK
KyAgICB2aXJ0dWFsIHZvaWQgYWZ0ZXJUZXN0KCkKKyAgICB7CisgICAgfQorCitwcml2YXRlOgor
ICAgIGludCBtX251bUNvbW1pdHM7Cit9OworCitURVNUX0YoQ0NMYXllclRyZWVIb3N0VGVzdENh
bkRyYXdCbG9ja3NEcmF3aW5nLCBydW5NdWx0aVRocmVhZCkKK3sKKyAgICBydW5UZXN0VGhyZWFk
ZWQoKTsKK30KIAogLy8gYmVnaW5MYXllcldyaXRlIHNob3VsZCBwcmV2ZW50IGRyYXdzIGZyb20g
ZXhlY3V0aW5nIHVudGlsIGEgY29tbWl0IG9jY3VycwogY2xhc3MgQ0NMYXllclRyZWVIb3N0VGVz
dFdyaXRlTGF5ZXJzUmVkcmF3IDogcHVibGljIENDTGF5ZXJUcmVlSG9zdFRlc3RUaHJlYWRPbmx5
IHsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>140612</attachid>
            <date>2012-05-07 15:56:30 -0700</date>
            <delta_ts>2012-05-09 16:55:15 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-85829-20120507185629.patch</filename>
            <type>text/plain</type>
            <size>16712</size>
            <attacher name="Dana Jansens">danakj</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE2MzYwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNDIzNWJjY2Q0OTFhOWFi
NjcxZjdhZTU3ODkzNWMzNjQ0NjUxZjIyZi4uMWI4NmRjZmVjZjIxNTcwMjIwMTdkMjFiNjhmY2Yz
OGMwZTkzZjI4OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM1IEBACisyMDEyLTA1LTA3ICBEYW5h
IEphbnNlbnMgIDxkYW5ha2pAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtjaHJvbWl1bV0gRG9u
J3QgZHJhdyB3aGVuIGNhbkRyYXcoKSBpcyBmYWxzZQorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODU4MjkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIGlzIGJhc2VkIG9uIHRoZSB3b3JrIG9mIERhbmll
bCBTaWV2ZXJzIGluIGJ1ZworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9ODI2ODAuIFdoZW4gY2FuRHJhdygpIGlzIGZhbHNlLAorICAgICAgICB3ZSBzaG91
bGQgbm90IGNhbGwgZHJhd0xheWVycygpIG9yIHByZXBhcmVUb0RyYXcoKSBpbiBib3RoIFNpbmds
ZS0gYW5kCisgICAgICAgIE11bHRpLVRocmVhZGVkIG1vZGUuCisKKyAgICAgICAgZHJhd0xheWVy
cygpIGlzIGNyYXNoaW5nIGluIHNpbmdsZSB0aHJlYWRlZCBtb2RlLCBhbmQgdGhpcyBhdHRlbXB0
cyB0bworICAgICAgICBwcmV2ZW50IGl0IGZyb20gYmVpbmcgY2FsbGVkIHdpdGggaW52YWxpZCBz
dGF0ZS4gV2hpbGUgbWFraW5nIGl0IGJlaGF2ZQorICAgICAgICBwcm9wZXJseSBpbiBzaW5nbGUt
dGhyZWFkZWQgbW9kZSwgaXQgc2VlbXMgYXBwcm9wcmlhdGUgdG8gdW5yZXZlcnQgdGhlCisgICAg
ICAgIHBhcnRzIG9mIDgyNjgwIHRoYXQgbWFkZSB0aHJlYWRlZCBtb2RlIGJlaGF2ZSBzaW1pbGFy
bHkgYXBwcm9wcmlhdGVseS4KKworICAgICAgICBBIHNpbmdsZS10aHJlYWRlZCB0ZXN0IGlzIG5v
dCBpbmNsdWRlZCBzaW5jZSBMVEhUZXN0cyBpcyB1bmFibGUgdG8gcnVuCisgICAgICAgIGluIHNp
bmdsZS10aHJlYWRlZCBtb2RlIGF0IHRoaXMgdGltZSAocGVuZGluZyB3b3JrIGZyb20gSWFuIFZv
bGxpY2spLiBTbworICAgICAgICB3ZSB0ZXN0IGluIHRocmVhZGVkIG1vZGUgb25seSB3aXRoIGEg
bm90ZSB0byBpbmNsdWRlIGEgc2luZ2xlIHRocmVhZAorICAgICAgICB2ZXJzaW9uLgorCisgICAg
ICAgIFRlc3RzOiBDQ0xheWVyVHJlZUhvc3RUZXN0Q2FuRHJhd0Jsb2Nrc0RyYXdpbmcucnVuTXVs
dGlUaHJlYWQKKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5
ZXJUcmVlSG9zdEltcGwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXllclRyZWVIb3N0SW1w
bDo6cHJlcGFyZVRvRHJhdyk6CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVyVHJlZUhvc3RJbXBs
OjpkcmF3TGF5ZXJzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9D
Q1NpbmdsZVRocmVhZFByb3h5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNDU2luZ2xlVGhyZWFk
UHJveHk6OmRvQ29tcG9zaXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9jYy9DQ1RocmVhZFByb3h5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNDVGhyZWFkUHJveHk6
OnNjaGVkdWxlZEFjdGlvbkRyYXdBbmRTd2FwSW50ZXJuYWwpOgorCiAyMDEyLTA1LTA3ICBTY290
dCBHcmFoYW0gIDxzY290dG1nQGNocm9taXVtLm9yZz4KIAogICAgICAgICBbQ2hyb21pdW1dIFN1
cHByZXNzIHN3aXRjaC13aXRob3V0LWNhc2VzIHdhcm5pbmcKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VM
b2cKaW5kZXggMjM4YTk3Y2ViODQ2OTlhM2Q1ZjlkYmY3NDFmOTFmOWVmZDUzODdiYi4uMmExMTk4
NjFkZTBiNzRmZTVjYWE5OWFiNTUyY2I3NWVmNjAxZmM1MCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwyMyBAQAorMjAxMi0wNS0wNyAgRGFuYSBKYW5zZW5zICA8ZGFuYWtq
QGNocm9taXVtLm9yZz4KKworICAgICAgICBbY2hyb21pdW1dIERvbid0IGRyYXcgd2hlbiBjYW5E
cmF3KCkgaXMgZmFsc2UKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTg1ODI5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgKiB0ZXN0cy9DQ0xheWVyVHJlZUhvc3RJbXBsVGVzdC5jcHA6CisgICAgICAgIChXZWJL
aXRUZXN0czo6Q0NMYXllclRyZWVIb3N0SW1wbFRlc3Q6OkNDTGF5ZXJUcmVlSG9zdEltcGxUZXN0
KToKKyAgICAgICAgKFdlYktpdFRlc3RzOjpURVNUX0YpOgorICAgICAgICAqIHRlc3RzL0NDTGF5
ZXJUcmVlSG9zdFRlc3QuY3BwOgorICAgICAgICAoV1RGKToKKyAgICAgICAgKENDTGF5ZXJUcmVl
SG9zdFRlc3RDYW5EcmF3QmxvY2tzRHJhd2luZyk6CisgICAgICAgIChXVEY6OkNDTGF5ZXJUcmVl
SG9zdFRlc3RDYW5EcmF3QmxvY2tzRHJhd2luZzo6Q0NMYXllclRyZWVIb3N0VGVzdENhbkRyYXdC
bG9ja3NEcmF3aW5nKToKKyAgICAgICAgKFdURjo6Q0NMYXllclRyZWVIb3N0VGVzdENhbkRyYXdC
bG9ja3NEcmF3aW5nOjpiZWdpblRlc3QpOgorICAgICAgICAoV1RGOjpDQ0xheWVyVHJlZUhvc3RU
ZXN0Q2FuRHJhd0Jsb2Nrc0RyYXdpbmc6OmRyYXdMYXllcnNPbkNDVGhyZWFkKToKKyAgICAgICAg
KFdURjo6Q0NMYXllclRyZWVIb3N0VGVzdENhbkRyYXdCbG9ja3NEcmF3aW5nOjpkaWRDb21taXRB
bmREcmF3RnJhbWUpOgorICAgICAgICAoV1RGOjpDQ0xheWVyVHJlZUhvc3RUZXN0Q2FuRHJhd0Js
b2Nrc0RyYXdpbmc6OmFmdGVyVGVzdCk6CisgICAgICAgIChXVEY6OlRFU1RfRik6CisKIDIwMTIt
MDUtMDcgIEFkcmllbm5lIFdhbGtlciAgPGVubmVAZ29vZ2xlLmNvbT4KIAogICAgICAgICBbY2hy
b21pdW1dIEFsbG93IGZvciBhc3ltbWV0cmljIHRpbGUgc2l6ZXMgb24gY29tcG9zaXRlZCB0aWxl
ZCBsYXllcnMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0SW1wbC5jcHAKaW5kZXggMzFi
ZGJjMmU1ZmYxZWI5MjUyMjBmOGUzZDU1MDNmMjg0NzEyMjgwZS4uZWM1NjRmNWY2ZjZkYjc1Y2Rl
YTcxZGU1N2FlODU1NTZiMTViMTVjMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0SW1wbC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0
SW1wbC5jcHAKQEAgLTM4MCwxMyArMzgwLDExIEBAIEludFNpemUgQ0NMYXllclRyZWVIb3N0SW1w
bDo6Y29udGVudFNpemUoKSBjb25zdAogYm9vbCBDQ0xheWVyVHJlZUhvc3RJbXBsOjpwcmVwYXJl
VG9EcmF3KEZyYW1lRGF0YSYgZnJhbWUpCiB7CiAgICAgVFJBQ0VfRVZFTlQoIkNDTGF5ZXJUcmVl
SG9zdEltcGw6OnByZXBhcmVUb0RyYXciLCB0aGlzLCAwKTsKKyAgICBBU1NFUlQoY2FuRHJhdygp
KTsKIAogICAgIGZyYW1lLnJlbmRlclBhc3Nlcy5jbGVhcigpOwogICAgIGZyYW1lLnJlbmRlclN1
cmZhY2VMYXllckxpc3QuY2xlYXIoKTsKIAotICAgIGlmICghbV9yb290TGF5ZXJJbXBsKQotICAg
ICAgICByZXR1cm4gZmFsc2U7Ci0KICAgICBpZiAoIWNhbGN1bGF0ZVJlbmRlclBhc3NlcyhmcmFt
ZS5yZW5kZXJQYXNzZXMsIGZyYW1lLnJlbmRlclN1cmZhY2VMYXllckxpc3QpKSB7CiAgICAgICAg
IC8vIFdlJ3JlIG1pc3NpbmcgdGV4dHVyZXMgb24gYW4gYW5pbWF0aW5nIGxheWVyLiBSZXF1ZXN0
IGEgY29tbWl0LgogICAgICAgICBtX2NsaWVudC0+c2V0TmVlZHNDb21taXRPbkltcGxUaHJlYWQo
KTsKQEAgLTQwNSwxMCArNDAzLDcgQEAgdm9pZCBDQ0xheWVyVHJlZUhvc3RJbXBsOjpzZXRDb250
ZW50c01lbW9yeUFsbG9jYXRpb25MaW1pdEJ5dGVzKHNpemVfdCBieXRlcykKIHZvaWQgQ0NMYXll
clRyZWVIb3N0SW1wbDo6ZHJhd0xheWVycyhjb25zdCBGcmFtZURhdGEmIGZyYW1lKQogewogICAg
IFRSQUNFX0VWRU5UKCJDQ0xheWVyVHJlZUhvc3RJbXBsOjpkcmF3TGF5ZXJzIiwgdGhpcywgMCk7
Ci0gICAgQVNTRVJUKG1fbGF5ZXJSZW5kZXJlcik7Ci0KLSAgICBpZiAoIW1fcm9vdExheWVySW1w
bCkKLSAgICAgICAgcmV0dXJuOworICAgIEFTU0VSVChjYW5EcmF3KCkpOwogCiAgICAgLy8gRklY
TUU6IHVzZSB0aGUgZnJhbWUgYmVnaW4gdGltZSBmcm9tIHRoZSBvdmVyYWxsIGNvbXBvc2l0b3Ig
c2NoZWR1bGVyLgogICAgIC8vIFRoaXMgdmFsdWUgaXMgY3VycmVudGx5IGluYWNjZXNzaWJsZSBi
ZWNhdXNlIGl0IGlzIHVwIGluIENocm9taXVtJ3MKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2luZ2xlVGhyZWFkUHJveHkuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTaW5nbGVUaHJl
YWRQcm94eS5jcHAKaW5kZXggMmM0MTdkZjE3MTNiNjgwZDVjZDVkOTQyMjA1N2FiMzc2MjM3Mjk3
Zi4uYWIyYmE5Y2YxNGUzYjExNDdlYjZhNjk4ODk4MWVkODY3OGU5ZGY5NCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTaW5nbGVUaHJl
YWRQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vY2MvQ0NTaW5nbGVUaHJlYWRQcm94eS5jcHAKQEAgLTM0OCw4ICszNDgsMTEgQEAgYm9vbCBD
Q1NpbmdsZVRocmVhZFByb3h5Ojpkb0NvbXBvc2l0ZSgpCiAgICAgICBEZWJ1Z1Njb3BlZFNldElt
cGxUaHJlYWQgaW1wbDsKICAgICAgIGRvdWJsZSBtb25vdG9uaWNUaW1lID0gbW9ub3RvbmljYWxs
eUluY3JlYXNpbmdUaW1lKCk7CiAgICAgICBkb3VibGUgd2FsbENsb2NrVGltZSA9IGN1cnJlbnRU
aW1lKCk7Ci0KICAgICAgIG1fbGF5ZXJUcmVlSG9zdEltcGwtPmFuaW1hdGUobW9ub3RvbmljVGlt
ZSwgd2FsbENsb2NrVGltZSk7CisKKyAgICAgIGlmICghbV9sYXllclRyZWVIb3N0SW1wbC0+Y2Fu
RHJhdygpKQorICAgICAgICAgIHJldHVybiBmYWxzZTsKKwogICAgICAgQ0NMYXllclRyZWVIb3N0
SW1wbDo6RnJhbWVEYXRhIGZyYW1lOwogICAgICAgbV9sYXllclRyZWVIb3N0SW1wbC0+cHJlcGFy
ZVRvRHJhdyhmcmFtZSk7CiAgICAgICBtX2xheWVyVHJlZUhvc3RJbXBsLT5kcmF3TGF5ZXJzKGZy
YW1lKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDVGhyZWFkUHJveHkuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vY2MvQ0NUaHJlYWRQcm94eS5jcHAKaW5kZXggMTU3ZmMxZGYwODYzYjdiZGI5
N2RiZDQzZDVkMzIwOGQzNWYzZjVhYS4uNDA2MjAyYzlmYjQ3Yzg3YTE1NGZiZmZiYzExMDVlZmZi
YTcwMGRhOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vY2MvQ0NUaHJlYWRQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaHJlYWRQcm94eS5jcHAKQEAgLTY0MCw3ICs2NDAsNyBA
QCBDQ1NjaGVkdWxlZEFjdGlvbkRyYXdBbmRTd2FwUmVzdWx0IENDVGhyZWFkUHJveHk6OnNjaGVk
dWxlZEFjdGlvbkRyYXdBbmRTd2FwSW50ZQogICAgIG1faW5wdXRIYW5kbGVyT25JbXBsVGhyZWFk
LT5hbmltYXRlKG1vbm90b25pY1RpbWUpOwogICAgIG1fbGF5ZXJUcmVlSG9zdEltcGwtPmFuaW1h
dGUobW9ub3RvbmljVGltZSwgd2FsbENsb2NrVGltZSk7CiAgICAgQ0NMYXllclRyZWVIb3N0SW1w
bDo6RnJhbWVEYXRhIGZyYW1lOwotICAgIGJvb2wgZHJhd0ZyYW1lID0gbV9sYXllclRyZWVIb3N0
SW1wbC0+cHJlcGFyZVRvRHJhdyhmcmFtZSkgfHwgZm9yY2VkRHJhdzsKKyAgICBib29sIGRyYXdG
cmFtZSA9IG1fbGF5ZXJUcmVlSG9zdEltcGwtPmNhbkRyYXcoKSAmJiAobV9sYXllclRyZWVIb3N0
SW1wbC0+cHJlcGFyZVRvRHJhdyhmcmFtZSkgfHwgZm9yY2VkRHJhdyk7CiAgICAgaWYgKGRyYXdG
cmFtZSkgewogICAgICAgICBtX2xheWVyVHJlZUhvc3RJbXBsLT5kcmF3TGF5ZXJzKGZyYW1lKTsK
ICAgICAgICAgcmVzdWx0LmRpZERyYXcgPSB0cnVlOwpAQCAtNjQ5LDkgKzY0OSwxMSBAQCBDQ1Nj
aGVkdWxlZEFjdGlvbkRyYXdBbmRTd2FwUmVzdWx0IENDVGhyZWFkUHJveHk6OnNjaGVkdWxlZEFj
dGlvbkRyYXdBbmRTd2FwSW50ZQogCiAgICAgLy8gQ2hlY2sgZm9yIGEgcGVuZGluZyBjb21wb3Np
dGVBbmRSZWFkYmFjay4KICAgICBpZiAobV9yZWFkYmFja1JlcXVlc3RPbkltcGxUaHJlYWQpIHsK
LSAgICAgICAgQVNTRVJUKGRyYXdGcmFtZSk7IC8vIFRoaXMgc2hvdWxkIGJlIGEgZm9yY2VkRHJh
dwotICAgICAgICBtX2xheWVyVHJlZUhvc3RJbXBsLT5yZWFkYmFjayhtX3JlYWRiYWNrUmVxdWVz
dE9uSW1wbFRocmVhZC0+cGl4ZWxzLCBtX3JlYWRiYWNrUmVxdWVzdE9uSW1wbFRocmVhZC0+cmVj
dCk7Ci0gICAgICAgIG1fcmVhZGJhY2tSZXF1ZXN0T25JbXBsVGhyZWFkLT5zdWNjZXNzID0gIW1f
bGF5ZXJUcmVlSG9zdEltcGwtPmlzQ29udGV4dExvc3QoKTsKKyAgICAgICAgbV9yZWFkYmFja1Jl
cXVlc3RPbkltcGxUaHJlYWQtPnN1Y2Nlc3MgPSBmYWxzZTsKKyAgICAgICAgaWYgKGRyYXdGcmFt
ZSkgeworICAgICAgICAgICAgbV9sYXllclRyZWVIb3N0SW1wbC0+cmVhZGJhY2sobV9yZWFkYmFj
a1JlcXVlc3RPbkltcGxUaHJlYWQtPnBpeGVscywgbV9yZWFkYmFja1JlcXVlc3RPbkltcGxUaHJl
YWQtPnJlY3QpOworICAgICAgICAgICAgbV9yZWFkYmFja1JlcXVlc3RPbkltcGxUaHJlYWQtPnN1
Y2Nlc3MgPSAhbV9sYXllclRyZWVIb3N0SW1wbC0+aXNDb250ZXh0TG9zdCgpOworICAgICAgICB9
CiAgICAgICAgIG1fcmVhZGJhY2tSZXF1ZXN0T25JbXBsVGhyZWFkLT5jb21wbGV0aW9uLnNpZ25h
bCgpOwogICAgICAgICBtX3JlYWRiYWNrUmVxdWVzdE9uSW1wbFRocmVhZCA9IDA7CiAgICAgfQpA
QCAtNjYxLDcgKzY2Myw2IEBAIENDU2NoZWR1bGVkQWN0aW9uRHJhd0FuZFN3YXBSZXN1bHQgQ0NU
aHJlYWRQcm94eTo6c2NoZWR1bGVkQWN0aW9uRHJhd0FuZFN3YXBJbnRlCiAKICAgICAvLyBQcm9j
ZXNzIGFueSBmaW5pc2ggcmVxdWVzdAogICAgIGlmIChtX2ZpbmlzaEFsbFJlbmRlcmluZ0NvbXBs
ZXRpb25FdmVudE9uSW1wbFRocmVhZCkgewotICAgICAgICBBU1NFUlQoZHJhd0ZyYW1lKTsgLy8g
VGhpcyBzaG91bGQgYmUgYSBmb3JjZWREcmF3CiAgICAgICAgIG1fbGF5ZXJUcmVlSG9zdEltcGwt
PmZpbmlzaEFsbFJlbmRlcmluZygpOwogICAgICAgICBtX2ZpbmlzaEFsbFJlbmRlcmluZ0NvbXBs
ZXRpb25FdmVudE9uSW1wbFRocmVhZC0+c2lnbmFsKCk7CiAgICAgICAgIG1fZmluaXNoQWxsUmVu
ZGVyaW5nQ29tcGxldGlvbkV2ZW50T25JbXBsVGhyZWFkID0gMDsKQEAgLTY3Myw3ICs2NzQsNyBA
QCBDQ1NjaGVkdWxlZEFjdGlvbkRyYXdBbmRTd2FwUmVzdWx0IENDVGhyZWFkUHJveHk6OnNjaGVk
dWxlZEFjdGlvbkRyYXdBbmRTd2FwSW50ZQogICAgICAgICBtX21haW5UaHJlYWRQcm94eS0+cG9z
dFRhc2soY3JlYXRlQ0NUaHJlYWRUYXNrKHRoaXMsICZDQ1RocmVhZFByb3h5OjpkaWRDb21taXRB
bmREcmF3RnJhbWUpKTsKICAgICB9CiAKLSAgICBBU1NFUlQoZHJhd0ZyYW1lIHx8ICghZHJhd0Zy
YW1lICYmICFmb3JjZWREcmF3KSk7CisgICAgQVNTRVJUKGRyYXdGcmFtZSB8fCAoIWRyYXdGcmFt
ZSAmJiAoIWZvcmNlZERyYXcgfHwgKGZvcmNlZERyYXcgJiYgIW1fbGF5ZXJUcmVlSG9zdEltcGwt
PmNhbkRyYXcoKSkpKSk7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ0xheWVyVHJlZUhvc3RJbXBsVGVzdC5jcHAgYi9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDTGF5ZXJUcmVlSG9zdEltcGxUZXN0LmNwcApp
bmRleCBiMmE0YTRhYzk0Zjc1M2QxNDM5ZTExYzU0NWE1YjNjNmZhZmI4NDc3Li41ODY2OGQwZWZh
MjM3ODE4YWRkZWE5NDM4NGFmZTBhMGJmMDlkMjliIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3Rlc3RzL0NDTGF5ZXJUcmVlSG9zdEltcGxUZXN0LmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDTGF5ZXJUcmVlSG9zdEltcGxUZXN0LmNwcApAQCAtNjAs
NiArNjAsOCBAQCBwdWJsaWM6CiAgICAgewogICAgICAgICBDQ1NldHRpbmdzIHNldHRpbmdzOwog
ICAgICAgICBtX2hvc3RJbXBsID0gQ0NMYXllclRyZWVIb3N0SW1wbDo6Y3JlYXRlKHNldHRpbmdz
LCB0aGlzKTsKKyAgICAgICAgbV9ob3N0SW1wbC0+aW5pdGlhbGl6ZUxheWVyUmVuZGVyZXIoY3Jl
YXRlQ29udGV4dCgpLCBhZG9wdFB0cihuZXcgRmFrZVRleHR1cmVVcGxvYWRlcikpOworICAgICAg
ICBtX2hvc3RJbXBsLT5zZXRWaWV3cG9ydFNpemUoSW50U2l6ZSgxMCwgMTApKTsKICAgICB9CiAK
ICAgICB2aXJ0dWFsIHZvaWQgZGlkTG9zZUNvbnRleHRPbkltcGxUaHJlYWQoKSBPVkVSUklERSB7
IH0KQEAgLTI1NSw4ICsyNTcsNiBAQCBURVNUX0YoQ0NMYXllclRyZWVIb3N0SW1wbFRlc3QsIG5v
bkZhc3RTY3JvbGxhYmxlUmVnaW9uQmFzaWMpCiAKIFRFU1RfRihDQ0xheWVyVHJlZUhvc3RJbXBs
VGVzdCwgbm9uRmFzdFNjcm9sbGFibGVSZWdpb25XaXRoT2Zmc2V0KQogewotICAgIG1faG9zdElt
cGwtPmluaXRpYWxpemVMYXllclJlbmRlcmVyKGNyZWF0ZUNvbnRleHQoKSwgYWRvcHRQdHIobmV3
IEZha2VUZXh0dXJlVXBsb2FkZXIpKTsKLQogICAgIE93blB0cjxDQ0xheWVySW1wbD4gcm9vdCA9
IENDTGF5ZXJJbXBsOjpjcmVhdGUoMCk7CiAgICAgcm9vdC0+c2V0U2Nyb2xsYWJsZSh0cnVlKTsK
ICAgICByb290LT5zZXRTY3JvbGxQb3NpdGlvbihJbnRQb2ludCgwLCAwKSk7CkBAIC00NDEsNDkg
KzQ0MSw1MSBAQCBwcml2YXRlOgogCiBURVNUX0YoQ0NMYXllclRyZWVIb3N0SW1wbFRlc3QsIGRp
ZERyYXdOb3RDYWxsZWRPbkhpZGRlbkxheWVyKQogewotICAgIG1faG9zdEltcGwtPmluaXRpYWxp
emVMYXllclJlbmRlcmVyKGNyZWF0ZUNvbnRleHQoKSwgYWRvcHRQdHIobmV3IEZha2VUZXh0dXJl
VXBsb2FkZXIpKTsKLQotICAgIC8vIEVuc3VyZSB2aXNpYmxlTGF5ZXJSZWN0IGZvciByb290IGxh
eWVyIGlzIGVtcHR5Ci0gICAgbV9ob3N0SW1wbC0+c2V0Vmlld3BvcnRTaXplKEludFNpemUoMCwg
MCkpOwotCisgICAgLy8gVGhlIHJvb3QgbGF5ZXIgaXMgYWx3YXlzIGRyYXduLCBzbyBydW4gdGhp
cyB0ZXN0IG9uIGEgY2hpbGQgbGF5ZXIgdGhhdAorICAgIC8vIHdpbGwgYmUgbWFza2VkIG91dCBi
eSB0aGUgcm9vdCBsYXllcidzIGJvdW5kcy4KICAgICBtX2hvc3RJbXBsLT5zZXRSb290TGF5ZXIo
RGlkRHJhd0NoZWNrTGF5ZXI6OmNyZWF0ZSgwKSk7CiAgICAgRGlkRHJhd0NoZWNrTGF5ZXIqIHJv
b3QgPSBzdGF0aWNfY2FzdDxEaWREcmF3Q2hlY2tMYXllcio+KG1faG9zdEltcGwtPnJvb3RMYXll
cigpKTsKKyAgICByb290LT5zZXRNYXNrc1RvQm91bmRzKHRydWUpOworCisgICAgcm9vdC0+YWRk
Q2hpbGQoRGlkRHJhd0NoZWNrTGF5ZXI6OmNyZWF0ZSgxKSk7CisgICAgRGlkRHJhd0NoZWNrTGF5
ZXIqIGxheWVyID0gc3RhdGljX2Nhc3Q8RGlkRHJhd0NoZWNrTGF5ZXIqPihyb290LT5jaGlsZHJl
bigpWzBdLmdldCgpKTsKKyAgICAvLyBFbnN1cmUgdmlzaWJsZUxheWVyUmVjdCBmb3IgbGF5ZXIg
aXMgZW1wdHkKKyAgICBsYXllci0+c2V0UG9zaXRpb24oRmxvYXRQb2ludCgxMDAsIDEwMCkpOwor
ICAgIGxheWVyLT5zZXRCb3VuZHMoSW50U2l6ZSgxMCwgMTApKTsKKyAgICBsYXllci0+c2V0Q29u
dGVudEJvdW5kcyhJbnRTaXplKDEwLCAxMCkpOwogCiAgICAgQ0NMYXllclRyZWVIb3N0SW1wbDo6
RnJhbWVEYXRhIGZyYW1lOwogCi0gICAgRVhQRUNUX0ZBTFNFKHJvb3QtPndpbGxEcmF3Q2FsbGVk
KCkpOwotICAgIEVYUEVDVF9GQUxTRShyb290LT5kaWREcmF3Q2FsbGVkKCkpOworICAgIEVYUEVD
VF9GQUxTRShsYXllci0+d2lsbERyYXdDYWxsZWQoKSk7CisgICAgRVhQRUNUX0ZBTFNFKGxheWVy
LT5kaWREcmF3Q2FsbGVkKCkpOwogCiAgICAgRVhQRUNUX1RSVUUobV9ob3N0SW1wbC0+cHJlcGFy
ZVRvRHJhdyhmcmFtZSkpOwogICAgIG1faG9zdEltcGwtPmRyYXdMYXllcnMoZnJhbWUpOwogICAg
IG1faG9zdEltcGwtPmRpZERyYXdBbGxMYXllcnMoZnJhbWUpOwogCi0gICAgRVhQRUNUX0ZBTFNF
KHJvb3QtPndpbGxEcmF3Q2FsbGVkKCkpOwotICAgIEVYUEVDVF9GQUxTRShyb290LT5kaWREcmF3
Q2FsbGVkKCkpOworICAgIEVYUEVDVF9GQUxTRShsYXllci0+d2lsbERyYXdDYWxsZWQoKSk7Cisg
ICAgRVhQRUNUX0ZBTFNFKGxheWVyLT5kaWREcmF3Q2FsbGVkKCkpOwogCi0gICAgRVhQRUNUX1RS
VUUocm9vdC0+dmlzaWJsZUxheWVyUmVjdCgpLmlzRW1wdHkoKSk7CisgICAgRVhQRUNUX1RSVUUo
bGF5ZXItPnZpc2libGVMYXllclJlY3QoKS5pc0VtcHR5KCkpOwogCi0gICAgLy8gRW5zdXJlIHZp
c2libGVMYXllclJlY3QgZm9yIHJvb3QgbGF5ZXIgaXMgbm90IGVtcHR5Ci0gICAgbV9ob3N0SW1w
bC0+c2V0Vmlld3BvcnRTaXplKEludFNpemUoMTAsIDEwKSk7CisgICAgLy8gRW5zdXJlIHZpc2li
bGVMYXllclJlY3QgZm9yIGxheWVyIGxheWVyIGlzIG5vdCBlbXB0eQorICAgIGxheWVyLT5zZXRQ
b3NpdGlvbihGbG9hdFBvaW50KDAsIDApKTsKIAotICAgIEVYUEVDVF9GQUxTRShyb290LT53aWxs
RHJhd0NhbGxlZCgpKTsKLSAgICBFWFBFQ1RfRkFMU0Uocm9vdC0+ZGlkRHJhd0NhbGxlZCgpKTsK
KyAgICBFWFBFQ1RfRkFMU0UobGF5ZXItPndpbGxEcmF3Q2FsbGVkKCkpOworICAgIEVYUEVDVF9G
QUxTRShsYXllci0+ZGlkRHJhd0NhbGxlZCgpKTsKIAogICAgIEVYUEVDVF9UUlVFKG1faG9zdElt
cGwtPnByZXBhcmVUb0RyYXcoZnJhbWUpKTsKICAgICBtX2hvc3RJbXBsLT5kcmF3TGF5ZXJzKGZy
YW1lKTsKICAgICBtX2hvc3RJbXBsLT5kaWREcmF3QWxsTGF5ZXJzKGZyYW1lKTsKIAotICAgIEVY
UEVDVF9UUlVFKHJvb3QtPndpbGxEcmF3Q2FsbGVkKCkpOwotICAgIEVYUEVDVF9UUlVFKHJvb3Qt
PmRpZERyYXdDYWxsZWQoKSk7CisgICAgRVhQRUNUX1RSVUUobGF5ZXItPndpbGxEcmF3Q2FsbGVk
KCkpOworICAgIEVYUEVDVF9UUlVFKGxheWVyLT5kaWREcmF3Q2FsbGVkKCkpOwogCi0gICAgRVhQ
RUNUX0ZBTFNFKHJvb3QtPnZpc2libGVMYXllclJlY3QoKS5pc0VtcHR5KCkpOworICAgIEVYUEVD
VF9GQUxTRShsYXllci0+dmlzaWJsZUxheWVyUmVjdCgpLmlzRW1wdHkoKSk7CiB9CiAKIFRFU1Rf
RihDQ0xheWVyVHJlZUhvc3RJbXBsVGVzdCwgZGlkRHJhd0NhbGxlZE9uQWxsTGF5ZXJzKQogewot
ICAgIG1faG9zdEltcGwtPmluaXRpYWxpemVMYXllclJlbmRlcmVyKGNyZWF0ZUNvbnRleHQoKSwg
YWRvcHRQdHIobmV3IEZha2VUZXh0dXJlVXBsb2FkZXIpKTsKLSAgICBtX2hvc3RJbXBsLT5zZXRW
aWV3cG9ydFNpemUoSW50U2l6ZSgxMCwgMTApKTsKLQogICAgIG1faG9zdEltcGwtPnNldFJvb3RM
YXllcihEaWREcmF3Q2hlY2tMYXllcjo6Y3JlYXRlKDApKTsKICAgICBEaWREcmF3Q2hlY2tMYXll
ciogcm9vdCA9IHN0YXRpY19jYXN0PERpZERyYXdDaGVja0xheWVyKj4obV9ob3N0SW1wbC0+cm9v
dExheWVyKCkpOwogCkBAIC01MzQsOSArNTM2LDYgQEAgcHJpdmF0ZToKIAogVEVTVF9GKENDTGF5
ZXJUcmVlSG9zdEltcGxUZXN0LCBwcmVwYXJlVG9EcmF3RmFpbHNXaGVuQW5pbWF0aW9uVXNlc0No
ZWNrZXJib2FyZCkKIHsKLSAgICBtX2hvc3RJbXBsLT5pbml0aWFsaXplTGF5ZXJSZW5kZXJlcihj
cmVhdGVDb250ZXh0KCksIGFkb3B0UHRyKG5ldyBGYWtlVGV4dHVyZVVwbG9hZGVyKSk7Ci0gICAg
bV9ob3N0SW1wbC0+c2V0Vmlld3BvcnRTaXplKEludFNpemUoMTAsIDEwKSk7Ci0KICAgICAvLyBX
aGVuIHRoZSB0ZXh0dXJlIGlzIG5vdCBtaXNzaW5nLCB3ZSBkcmF3IGFzIHVzdWFsLgogICAgIG1f
aG9zdEltcGwtPnNldFJvb3RMYXllcihEaWREcmF3Q2hlY2tMYXllcjo6Y3JlYXRlKDApKTsKICAg
ICBEaWREcmF3Q2hlY2tMYXllciogcm9vdCA9IHN0YXRpY19jYXN0PERpZERyYXdDaGVja0xheWVy
Kj4obV9ob3N0SW1wbC0+cm9vdExheWVyKCkpOwpAQCAtNjYxLDggKzY2MCw2IEBAIHByaXZhdGU6
CiAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzU3ODMKIFRFU1Rf
RihDQ0xheWVyVHJlZUhvc3RJbXBsVGVzdCwgYmxlbmRpbmdPZmZXaGVuRHJhd2luZ09wYXF1ZUxh
eWVycykKIHsKLSAgICBtX2hvc3RJbXBsLT5pbml0aWFsaXplTGF5ZXJSZW5kZXJlcihjcmVhdGVD
b250ZXh0KCksIGFkb3B0UHRyKG5ldyBGYWtlVGV4dHVyZVVwbG9hZGVyKSk7Ci0gICAgbV9ob3N0
SW1wbC0+c2V0Vmlld3BvcnRTaXplKEludFNpemUoMTAsIDEwKSk7CiAKICAgICB7CiAgICAgICAg
IE93blB0cjxDQ0xheWVySW1wbD4gcm9vdCA9IENDTGF5ZXJJbXBsOjpjcmVhdGUoMCk7CkBAIC05
OTEsNyArOTg4LDYgQEAgVEVTVF9GKENDTGF5ZXJUcmVlSG9zdEltcGxUZXN0LCByZXNoYXBlTm90
Q2FsbGVkVW50aWxEcmF3KQogICAgIFJlc2hhcGVUcmFja2VyQ29udGV4dCogcmVzaGFwZVRyYWNr
ZXIgPSBuZXcgUmVzaGFwZVRyYWNrZXJDb250ZXh0KCk7CiAgICAgUmVmUHRyPEdyYXBoaWNzQ29u
dGV4dDNEPiBjb250ZXh0ID0gR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOjpjcmVhdGVHcmFwaGlj
c0NvbnRleHRGcm9tV2ViQ29udGV4dChhZG9wdFB0cihyZXNoYXBlVHJhY2tlciksIEdyYXBoaWNz
Q29udGV4dDNEOjpSZW5kZXJEaXJlY3RseVRvSG9zdFdpbmRvdyk7CiAgICAgbV9ob3N0SW1wbC0+
aW5pdGlhbGl6ZUxheWVyUmVuZGVyZXIoY29udGV4dCwgYWRvcHRQdHIobmV3IEZha2VUZXh0dXJl
VXBsb2FkZXIpKTsKLSAgICBtX2hvc3RJbXBsLT5zZXRWaWV3cG9ydFNpemUoSW50U2l6ZSgxMCwg
MTApKTsKIAogICAgIENDTGF5ZXJJbXBsKiByb290ID0gbmV3IEZha2VEcmF3YWJsZUNDTGF5ZXJJ
bXBsKDEpOwogICAgIHJvb3QtPnNldEFuY2hvclBvaW50KEZsb2F0UG9pbnQoMCwgMCkpOwpAQCAt
MTEyNiw5ICsxMTIyLDYgQEAgcHJpdmF0ZToKIAogVEVTVF9GKENDTGF5ZXJUcmVlSG9zdEltcGxU
ZXN0LCBjb250ZXh0TG9zdEFuZFJlc3RvcmVkTm90aWZpY2F0aW9uU2VudFRvQWxsTGF5ZXJzKQog
ewotICAgIG1faG9zdEltcGwtPmluaXRpYWxpemVMYXllclJlbmRlcmVyKGNyZWF0ZUNvbnRleHQo
KSwgYWRvcHRQdHIobmV3IEZha2VUZXh0dXJlVXBsb2FkZXIpKTsKLSAgICBtX2hvc3RJbXBsLT5z
ZXRWaWV3cG9ydFNpemUoSW50U2l6ZSgxMCwgMTApKTsKLQogICAgIG1faG9zdEltcGwtPnNldFJv
b3RMYXllcihDb250ZXh0TG9zdE5vdGlmaWNhdGlvbkNoZWNrTGF5ZXI6OmNyZWF0ZSgwKSk7CiAg
ICAgQ29udGV4dExvc3ROb3RpZmljYXRpb25DaGVja0xheWVyKiByb290ID0gc3RhdGljX2Nhc3Q8
Q29udGV4dExvc3ROb3RpZmljYXRpb25DaGVja0xheWVyKj4obV9ob3N0SW1wbC0+cm9vdExheWVy
KCkpOwogCkBAIC0xMTczLDkgKzExNjYsNiBAQCBwcml2YXRlOgogCiBURVNUX0YoQ0NMYXllclRy
ZWVIb3N0SW1wbFRlc3QsIHNjcm9sbGJhckxheWVyTG9zdENvbnRleHQpCiB7Ci0gICAgbV9ob3N0
SW1wbC0+aW5pdGlhbGl6ZUxheWVyUmVuZGVyZXIoY3JlYXRlQ29udGV4dCgpLCBhZG9wdFB0cihu
ZXcgRmFrZVRleHR1cmVVcGxvYWRlcikpOwotICAgIG1faG9zdEltcGwtPnNldFZpZXdwb3J0U2l6
ZShJbnRTaXplKDEwLCAxMCkpOwotCiAgICAgbV9ob3N0SW1wbC0+c2V0Um9vdExheWVyKFNjcm9s
bGJhckxheWVyRmFrZVBhaW50OjpjcmVhdGUoMCkpOwogICAgIFNjcm9sbGJhckxheWVyRmFrZVBh
aW50KiBzY3JvbGxiYXIgPSBzdGF0aWNfY2FzdDxTY3JvbGxiYXJMYXllckZha2VQYWludCo+KG1f
aG9zdEltcGwtPnJvb3RMYXllcigpKTsKICAgICBzY3JvbGxiYXItPnNldEJvdW5kcyhJbnRTaXpl
KDEsIDEpKTsKQEAgLTEzMjMsOSArMTMxMyw2IEBAIHByaXZhdGU6CiAKIFRFU1RfRihDQ0xheWVy
VHJlZUhvc3RJbXBsVGVzdCwgZG9udFVzZU9sZFJlc291cmNlc0FmdGVyTG9zdENvbnRleHQpCiB7
Ci0gICAgbV9ob3N0SW1wbC0+aW5pdGlhbGl6ZUxheWVyUmVuZGVyZXIoY3JlYXRlQ29udGV4dCgp
LCBhZG9wdFB0cihuZXcgRmFrZVRleHR1cmVVcGxvYWRlcikpOwotICAgIG1faG9zdEltcGwtPnNl
dFZpZXdwb3J0U2l6ZShJbnRTaXplKDEwLCAxMCkpOwotCiAgICAgT3duUHRyPENDTGF5ZXJJbXBs
PiByb290TGF5ZXIoQ0NMYXllckltcGw6OmNyZWF0ZSgwKSk7CiAgICAgcm9vdExheWVyLT5zZXRC
b3VuZHMoSW50U2l6ZSgxMCwgMTApKTsKICAgICByb290TGF5ZXItPnNldEFuY2hvclBvaW50KEZs
b2F0UG9pbnQoMCwgMCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0
cy9DQ0xheWVyVHJlZUhvc3RUZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMv
Q0NMYXllclRyZWVIb3N0VGVzdC5jcHAKaW5kZXggZjIzODJiMzU5MDdhZDNkNGVlM2NhM2UyYmMz
YjIyYmI2ZTdlNTczYy4uMzhlYTM3NTUwMjFhZGM3MjkyNTIyMjllNmIyNmM0OTBhNTZkZjNjYiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ0xheWVyVHJlZUhvc3RU
ZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDTGF5ZXJUcmVlSG9z
dFRlc3QuY3BwCkBAIC04NDAsNiArODQwLDUzIEBAIFRFU1RfRihDQ0xheWVyVHJlZUhvc3RUZXN0
U2V0TmVlZHNSZWRyYXcsIHJ1bk11bHRpVGhyZWFkKQogICAgIHJ1blRlc3RUaHJlYWRlZCgpOwog
fQogCisvLyBJZiB0aGUgbGF5ZXJUcmVlSG9zdCBzYXlzIGl0IGNhbid0IGRyYXcsIHRoZW4gd2Ug
c2hvdWxkIG5vdCB0cnkgdG8gZHJhdy4KKy8vIEZJWE1FOiBNYWtlIHRoaXMgcnVuIGluIHNpbmds
ZSB0aHJlYWRlZCBtb2RlIHRvby4KK2NsYXNzIENDTGF5ZXJUcmVlSG9zdFRlc3RDYW5EcmF3Qmxv
Y2tzRHJhd2luZyA6IHB1YmxpYyBDQ0xheWVyVHJlZUhvc3RUZXN0VGhyZWFkT25seSB7CitwdWJs
aWM6CisgICAgQ0NMYXllclRyZWVIb3N0VGVzdENhbkRyYXdCbG9ja3NEcmF3aW5nKCkKKyAgICAg
ICAgOiBtX251bUNvbW1pdHMoMCkKKyAgICB7CisgICAgfQorCisgICAgdmlydHVhbCB2b2lkIGJl
Z2luVGVzdCgpCisgICAgeworICAgIH0KKworICAgIHZpcnR1YWwgdm9pZCBkcmF3TGF5ZXJzT25D
Q1RocmVhZChDQ0xheWVyVHJlZUhvc3RJbXBsKiBpbXBsKQorICAgIHsKKyAgICAgICAgLy8gT25s
eSB0aGUgaW5pdGlhbCBkcmF3IHNob3VsZCBicmluZyB1cyBoZXJlLgorICAgICAgICBFWFBFQ1Rf
VFJVRShpbXBsLT5jYW5EcmF3KCkpOworICAgIH0KKworICAgIHZpcnR1YWwgdm9pZCBkaWRDb21t
aXRBbmREcmF3RnJhbWUoKQorICAgIHsKKyAgICAgICAgbV9udW1Db21taXRzKys7CisgICAgICAg
IGlmIChtX251bUNvbW1pdHMgPT0gMSkgeworICAgICAgICAgICAgLy8gTWFrZSB0aGUgdmlld3Bv
cnQgZW1wdHkgc28gdGhlIGhvc3Qgc2F5cyBpdCBjYW4ndCBkcmF3LgorICAgICAgICAgICAgbV9s
YXllclRyZWVIb3N0LT5zZXRWaWV3cG9ydFNpemUoSW50U2l6ZSgwLCAwKSk7CisKKyAgICAgICAg
ICAgIE93bkFycmF5UHRyPGNoYXI+IHBpeGVscyhhZG9wdEFycmF5UHRyKG5ldyBjaGFyWzRdKSk7
CisgICAgICAgICAgICBtX2xheWVyVHJlZUhvc3QtPmNvbXBvc2l0ZUFuZFJlYWRiYWNrKHN0YXRp
Y19jYXN0PHZvaWQqPihwaXhlbHMuZ2V0KCkpLCBJbnRSZWN0KDAsIDAsIDEsIDEpKTsKKyAgICAg
ICAgfSBlbHNlIGlmIChtX251bUNvbW1pdHMgPT0gMikgeworICAgICAgICAgICAgbV9sYXllclRy
ZWVIb3N0LT5zZXROZWVkc0NvbW1pdCgpOworICAgICAgICAgICAgbV9sYXllclRyZWVIb3N0LT5m
aW5pc2hBbGxSZW5kZXJpbmcoKTsKKyAgICAgICAgICAgIGVuZFRlc3QoKTsKKyAgICAgICAgfQor
ICAgIH0KKworICAgIHZpcnR1YWwgdm9pZCBhZnRlclRlc3QoKQorICAgIHsKKyAgICB9CisKK3By
aXZhdGU6CisgICAgaW50IG1fbnVtQ29tbWl0czsKK307CisKK1RFU1RfRihDQ0xheWVyVHJlZUhv
c3RUZXN0Q2FuRHJhd0Jsb2Nrc0RyYXdpbmcsIHJ1bk11bHRpVGhyZWFkKQoreworICAgIHJ1blRl
c3RUaHJlYWRlZCgpOworfQogCiAvLyBiZWdpbkxheWVyV3JpdGUgc2hvdWxkIHByZXZlbnQgZHJh
d3MgZnJvbSBleGVjdXRpbmcgdW50aWwgYSBjb21taXQgb2NjdXJzCiBjbGFzcyBDQ0xheWVyVHJl
ZUhvc3RUZXN0V3JpdGVMYXllcnNSZWRyYXcgOiBwdWJsaWMgQ0NMYXllclRyZWVIb3N0VGVzdFRo
cmVhZE9ubHkgewo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>141053</attachid>
            <date>2012-05-09 16:55:21 -0700</date>
            <delta_ts>2012-05-09 17:40:44 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-85829-20120509195520.patch</filename>
            <type>text/plain</type>
            <size>17904</size>
            <attacher name="Dana Jansens">danakj</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE2NTQyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOGYxNjlkMDk2YWQxM2Rh
YzcyZTYzMGYyZDZhNzY3NjhkZDNlMjZkMy4uMjcwNGNhNjdmYTNmMTQ1MTk5NjAyZDQzNWY4YTJm
ZWNiYzU0YmFkYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM1IEBACisyMDEyLTA1LTA3ICBEYW5h
IEphbnNlbnMgIDxkYW5ha2pAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtjaHJvbWl1bV0gRG9u
J3QgZHJhdyB3aGVuIGNhbkRyYXcoKSBpcyBmYWxzZQorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODU4MjkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIGlzIGJhc2VkIG9uIHRoZSB3b3JrIG9mIERhbmll
bCBTaWV2ZXJzIGluIGJ1ZworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9ODI2ODAuIFdoZW4gY2FuRHJhdygpIGlzIGZhbHNlLAorICAgICAgICB3ZSBzaG91
bGQgbm90IGNhbGwgZHJhd0xheWVycygpIG9yIHByZXBhcmVUb0RyYXcoKSBpbiBib3RoIFNpbmds
ZS0gYW5kCisgICAgICAgIE11bHRpLVRocmVhZGVkIG1vZGUuCisKKyAgICAgICAgZHJhd0xheWVy
cygpIGlzIGNyYXNoaW5nIGluIHNpbmdsZSB0aHJlYWRlZCBtb2RlLCBhbmQgdGhpcyBhdHRlbXB0
cyB0bworICAgICAgICBwcmV2ZW50IGl0IGZyb20gYmVpbmcgY2FsbGVkIHdpdGggaW52YWxpZCBz
dGF0ZS4gV2hpbGUgbWFraW5nIGl0IGJlaGF2ZQorICAgICAgICBwcm9wZXJseSBpbiBzaW5nbGUt
dGhyZWFkZWQgbW9kZSwgaXQgc2VlbXMgYXBwcm9wcmlhdGUgdG8gdW5yZXZlcnQgdGhlCisgICAg
ICAgIHBhcnRzIG9mIDgyNjgwIHRoYXQgbWFkZSB0aHJlYWRlZCBtb2RlIGJlaGF2ZSBzaW1pbGFy
bHkgYXBwcm9wcmlhdGVseS4KKworICAgICAgICBBIHNpbmdsZS10aHJlYWRlZCB0ZXN0IGlzIG5v
dCBpbmNsdWRlZCBzaW5jZSBMVEhUZXN0cyBpcyB1bmFibGUgdG8gcnVuCisgICAgICAgIGluIHNp
bmdsZS10aHJlYWRlZCBtb2RlIGF0IHRoaXMgdGltZSAocGVuZGluZyB3b3JrIGZyb20gSWFuIFZv
bGxpY2spLiBTbworICAgICAgICB3ZSB0ZXN0IGluIHRocmVhZGVkIG1vZGUgb25seSB3aXRoIGEg
bm90ZSB0byBpbmNsdWRlIGEgc2luZ2xlIHRocmVhZAorICAgICAgICB2ZXJzaW9uLgorCisgICAg
ICAgIFRlc3RzOiBDQ0xheWVyVHJlZUhvc3RUZXN0Q2FuRHJhd0Jsb2Nrc0RyYXdpbmcucnVuTXVs
dGlUaHJlYWQKKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5
ZXJUcmVlSG9zdEltcGwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXllclRyZWVIb3N0SW1w
bDo6cHJlcGFyZVRvRHJhdyk6CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVyVHJlZUhvc3RJbXBs
OjpkcmF3TGF5ZXJzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9D
Q1NpbmdsZVRocmVhZFByb3h5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNDU2luZ2xlVGhyZWFk
UHJveHk6OmRvQ29tcG9zaXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9jYy9DQ1RocmVhZFByb3h5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNDVGhyZWFkUHJveHk6
OnNjaGVkdWxlZEFjdGlvbkRyYXdBbmRTd2FwSW50ZXJuYWwpOgorCiAyMDEyLTA1LTA5ICBDYWlv
IE1hcmNlbG8gZGUgT2xpdmVpcmEgRmlsaG8gIDxjYWlvLm9saXZlaXJhQG9wZW5ib3NzYS5vcmc+
CiAKICAgICAgICAgU2ltcGxpZnkgQ1NTUGFyc2VyOjpwYXJzZVNpbXBsZUxlbmd0aFZhbHVlKCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nIGIvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKaW5kZXggNDJmNzk2MmY2YjgxYmY0OTlhOTk2MWNhM2U1
ZjYyZDZkMDVkYTUzNi4uMzk4ZmY5ZTQyMmJmNmQ1NDRhMjc1ZmE0ZmZlNmJjYWM1ODBjYzAxOSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKKysrIGIvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNCBAQAorMjAxMi0wNS0wNyAg
RGFuYSBKYW5zZW5zICA8ZGFuYWtqQGNocm9taXVtLm9yZz4KKworICAgICAgICBbY2hyb21pdW1d
IERvbid0IGRyYXcgd2hlbiBjYW5EcmF3KCkgaXMgZmFsc2UKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTg1ODI5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiB0ZXN0cy9DQ0xheWVyVHJlZUhvc3RJbXBsVGVz
dC5jcHA6CisgICAgICAgIChXZWJLaXRUZXN0czo6Q0NMYXllclRyZWVIb3N0SW1wbFRlc3Q6OkND
TGF5ZXJUcmVlSG9zdEltcGxUZXN0KToKKyAgICAgICAgKFdlYktpdFRlc3RzOjpURVNUX0YpOgor
ICAgICAgICAqIHRlc3RzL0NDTGF5ZXJUcmVlSG9zdFRlc3QuY3BwOgorICAgICAgICAoV1RGKToK
KyAgICAgICAgKENDTGF5ZXJUcmVlSG9zdFRlc3RDYW5EcmF3QmxvY2tzRHJhd2luZyk6CisgICAg
ICAgIChXVEY6OkNDTGF5ZXJUcmVlSG9zdFRlc3RDYW5EcmF3QmxvY2tzRHJhd2luZzo6Q0NMYXll
clRyZWVIb3N0VGVzdENhbkRyYXdCbG9ja3NEcmF3aW5nKToKKyAgICAgICAgKFdURjo6Q0NMYXll
clRyZWVIb3N0VGVzdENhbkRyYXdCbG9ja3NEcmF3aW5nOjpiZWdpblRlc3QpOgorICAgICAgICAo
V1RGOjpDQ0xheWVyVHJlZUhvc3RUZXN0Q2FuRHJhd0Jsb2Nrc0RyYXdpbmc6OmNvbW1pdENvbXBs
ZXRlT25DQ1RocmVhZCk6CisgICAgICAgIChXVEY6OkNDTGF5ZXJUcmVlSG9zdFRlc3RDYW5EcmF3
QmxvY2tzRHJhd2luZzo6ZHJhd0xheWVyc09uQ0NUaHJlYWQpOgorICAgICAgICAoV1RGOjpDQ0xh
eWVyVHJlZUhvc3RUZXN0Q2FuRHJhd0Jsb2Nrc0RyYXdpbmc6OmRpZENvbW1pdEFuZERyYXdGcmFt
ZSk6CisgICAgICAgIChXVEY6OkNDTGF5ZXJUcmVlSG9zdFRlc3RDYW5EcmF3QmxvY2tzRHJhd2lu
Zzo6YWZ0ZXJUZXN0KToKKyAgICAgICAgKFdURjo6VEVTVF9GKToKKwogMjAxMi0wNS0wOSAgRGFu
YSBKYW5zZW5zICA8ZGFuYWtqQGNocm9taXVtLm9yZz4KIAogICAgICAgICBFYXJseS1vdXQgYW5k
IGF2b2lkIGFueSBjb3B5aW5nIHdoZW4gcG9zc2libGUgZm9yIFJlZ2lvbiBvcGVyYXRpb25zCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9D
Q0xheWVyVHJlZUhvc3RJbXBsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwuY3BwCmluZGV4IDMxYmRiYzJlNWZmMWVi
OTI1MjIwZjhlM2Q1NTAzZjI4NDcxMjI4MGUuLmVjNTY0ZjVmNmY2ZGI3NWNkZWE3MWRlNTdhZTg1
NTU2YjE1YjE1YzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwuY3BwCkBA
IC0zODAsMTMgKzM4MCwxMSBAQCBJbnRTaXplIENDTGF5ZXJUcmVlSG9zdEltcGw6OmNvbnRlbnRT
aXplKCkgY29uc3QKIGJvb2wgQ0NMYXllclRyZWVIb3N0SW1wbDo6cHJlcGFyZVRvRHJhdyhGcmFt
ZURhdGEmIGZyYW1lKQogewogICAgIFRSQUNFX0VWRU5UKCJDQ0xheWVyVHJlZUhvc3RJbXBsOjpw
cmVwYXJlVG9EcmF3IiwgdGhpcywgMCk7CisgICAgQVNTRVJUKGNhbkRyYXcoKSk7CiAKICAgICBm
cmFtZS5yZW5kZXJQYXNzZXMuY2xlYXIoKTsKICAgICBmcmFtZS5yZW5kZXJTdXJmYWNlTGF5ZXJM
aXN0LmNsZWFyKCk7CiAKLSAgICBpZiAoIW1fcm9vdExheWVySW1wbCkKLSAgICAgICAgcmV0dXJu
IGZhbHNlOwotCiAgICAgaWYgKCFjYWxjdWxhdGVSZW5kZXJQYXNzZXMoZnJhbWUucmVuZGVyUGFz
c2VzLCBmcmFtZS5yZW5kZXJTdXJmYWNlTGF5ZXJMaXN0KSkgewogICAgICAgICAvLyBXZSdyZSBt
aXNzaW5nIHRleHR1cmVzIG9uIGFuIGFuaW1hdGluZyBsYXllci4gUmVxdWVzdCBhIGNvbW1pdC4K
ICAgICAgICAgbV9jbGllbnQtPnNldE5lZWRzQ29tbWl0T25JbXBsVGhyZWFkKCk7CkBAIC00MDUs
MTAgKzQwMyw3IEBAIHZvaWQgQ0NMYXllclRyZWVIb3N0SW1wbDo6c2V0Q29udGVudHNNZW1vcnlB
bGxvY2F0aW9uTGltaXRCeXRlcyhzaXplX3QgYnl0ZXMpCiB2b2lkIENDTGF5ZXJUcmVlSG9zdElt
cGw6OmRyYXdMYXllcnMoY29uc3QgRnJhbWVEYXRhJiBmcmFtZSkKIHsKICAgICBUUkFDRV9FVkVO
VCgiQ0NMYXllclRyZWVIb3N0SW1wbDo6ZHJhd0xheWVycyIsIHRoaXMsIDApOwotICAgIEFTU0VS
VChtX2xheWVyUmVuZGVyZXIpOwotCi0gICAgaWYgKCFtX3Jvb3RMYXllckltcGwpCi0gICAgICAg
IHJldHVybjsKKyAgICBBU1NFUlQoY2FuRHJhdygpKTsKIAogICAgIC8vIEZJWE1FOiB1c2UgdGhl
IGZyYW1lIGJlZ2luIHRpbWUgZnJvbSB0aGUgb3ZlcmFsbCBjb21wb3NpdG9yIHNjaGVkdWxlci4K
ICAgICAvLyBUaGlzIHZhbHVlIGlzIGN1cnJlbnRseSBpbmFjY2Vzc2libGUgYmVjYXVzZSBpdCBp
cyB1cCBpbiBDaHJvbWl1bSdzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NpbmdsZVRocmVhZFByb3h5LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2luZ2xlVGhyZWFkUHJveHkuY3Bw
CmluZGV4IDJjNDE3ZGYxNzEzYjY4MGQ1Y2Q1ZDk0MjIwNTdhYjM3NjIzNzI5N2YuLmQ1MzE4YWUz
NmJlNjI0OThkODdjNjQ0OGZjOWQxNDAwNWU4ZDk1M2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2luZ2xlVGhyZWFkUHJveHkuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2lu
Z2xlVGhyZWFkUHJveHkuY3BwCkBAIC0zNDgsOCArMzQ4LDE0IEBAIGJvb2wgQ0NTaW5nbGVUaHJl
YWRQcm94eTo6ZG9Db21wb3NpdGUoKQogICAgICAgRGVidWdTY29wZWRTZXRJbXBsVGhyZWFkIGlt
cGw7CiAgICAgICBkb3VibGUgbW9ub3RvbmljVGltZSA9IG1vbm90b25pY2FsbHlJbmNyZWFzaW5n
VGltZSgpOwogICAgICAgZG91YmxlIHdhbGxDbG9ja1RpbWUgPSBjdXJyZW50VGltZSgpOwotCiAg
ICAgICBtX2xheWVyVHJlZUhvc3RJbXBsLT5hbmltYXRlKG1vbm90b25pY1RpbWUsIHdhbGxDbG9j
a1RpbWUpOworCisgICAgICAvLyBXZSBndWFyZCBwcmVwYXJlVG9EcmF3KCkgd2l0aCBjYW5EcmF3
KCkgYmVjYXVzZSBpdCBhbHdheXMgcmV0dXJucyBhIHZhbGlkIGZyYW1lLCBzbyBjYW4gb25seQor
ICAgICAgLy8gYmUgdXNlZCB3aGVuIHN1Y2ggYSBmcmFtZSBpcyBwb3NzaWJsZS4gU2luY2UgZHJh
d0xheWVycygpIGRlcGVuZHMgb24gdGhlIHJlc3VsdCBvZgorICAgICAgLy8gcHJlcGFyZVRvRHJh
dygpLCBpdCBpcyBndWFyZGVkIG9uIGNhbkRyYXcoKSBhcyB3ZWxsLgorICAgICAgaWYgKCFtX2xh
eWVyVHJlZUhvc3RJbXBsLT5jYW5EcmF3KCkpCisgICAgICAgICAgcmV0dXJuIGZhbHNlOworCiAg
ICAgICBDQ0xheWVyVHJlZUhvc3RJbXBsOjpGcmFtZURhdGEgZnJhbWU7CiAgICAgICBtX2xheWVy
VHJlZUhvc3RJbXBsLT5wcmVwYXJlVG9EcmF3KGZyYW1lKTsKICAgICAgIG1fbGF5ZXJUcmVlSG9z
dEltcGwtPmRyYXdMYXllcnMoZnJhbWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaHJlYWRQcm94eS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RocmVhZFByb3h5LmNwcAppbmRl
eCAxNTdmYzFkZjA4NjNiN2JkYjk3ZGJkNDNkNWQzMjA4ZDM1ZjNmNWFhLi4wNzg0OTA1ODE2Mjkx
ZDNlMTMyMGFmN2NhNTQ2OWU5NmM3MTcxNmEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RocmVhZFByb3h5LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RocmVhZFByb3h5LmNw
cApAQCAtNjM5LDggKzYzOSwxOCBAQCBDQ1NjaGVkdWxlZEFjdGlvbkRyYXdBbmRTd2FwUmVzdWx0
IENDVGhyZWFkUHJveHk6OnNjaGVkdWxlZEFjdGlvbkRyYXdBbmRTd2FwSW50ZQogCiAgICAgbV9p
bnB1dEhhbmRsZXJPbkltcGxUaHJlYWQtPmFuaW1hdGUobW9ub3RvbmljVGltZSk7CiAgICAgbV9s
YXllclRyZWVIb3N0SW1wbC0+YW5pbWF0ZShtb25vdG9uaWNUaW1lLCB3YWxsQ2xvY2tUaW1lKTsK
KworICAgIC8vIFRoaXMgbWV0aG9kIGlzIGNhbGxlZCBvbiBhIGZvcmNlZCBkcmF3LCByZWdhcmRs
ZXNzIG9mIHdoZXRoZXIgd2UgYXJlIGFibGUgdG8gcHJvZHVjZSBhIGZyYW1lLAorICAgIC8vIGFz
IHRoZSBjYWxsaW5nIHNpdGUgb24gbWFpbiB0aHJlYWQgaXMgYmxvY2tlZCB1bnRpbCBpdHMgcmVx
dWVzdCBjb21wbGV0ZXMsIGFuZCB3ZSBzaWduYWwKKyAgICAvLyBjb21wbGV0aW9uIGhlcmUuIElm
IGNhbkRyYXcoKSBpcyBmYWxzZSwgd2Ugd2lsbCBpbmRpY2F0ZSBzdWNjZXNzPWZhbHNlIHRvIHRo
ZSBjYWxsZXIsIGJ1dCB3ZQorICAgIC8vIG11c3Qgc3RpbGwgc2lnbmFsIGNvbXBsZXRpb24gdG8g
YXZvaWQgZGVhZGxvY2suCisKKyAgICAvLyBXZSBndWFyZCBwcmVwYXJlVG9EcmF3KCkgd2l0aCBj
YW5EcmF3KCkgYmVjYXVzZSBpdCBhbHdheXMgcmV0dXJucyBhIHZhbGlkIGZyYW1lLCBzbyBjYW4g
b25seQorICAgIC8vIGJlIHVzZWQgd2hlbiBzdWNoIGEgZnJhbWUgaXMgcG9zc2libGUuIFNpbmNl
IGRyYXdMYXllcnMoKSBkZXBlbmRzIG9uIHRoZSByZXN1bHQgb2YKKyAgICAvLyBwcmVwYXJlVG9E
cmF3KCksIGl0IGlzIGd1YXJkZWQgb24gY2FuRHJhdygpIGFzIHdlbGwuCisKICAgICBDQ0xheWVy
VHJlZUhvc3RJbXBsOjpGcmFtZURhdGEgZnJhbWU7Ci0gICAgYm9vbCBkcmF3RnJhbWUgPSBtX2xh
eWVyVHJlZUhvc3RJbXBsLT5wcmVwYXJlVG9EcmF3KGZyYW1lKSB8fCBmb3JjZWREcmF3OworICAg
IGJvb2wgZHJhd0ZyYW1lID0gbV9sYXllclRyZWVIb3N0SW1wbC0+Y2FuRHJhdygpICYmIChtX2xh
eWVyVHJlZUhvc3RJbXBsLT5wcmVwYXJlVG9EcmF3KGZyYW1lKSB8fCBmb3JjZWREcmF3KTsKICAg
ICBpZiAoZHJhd0ZyYW1lKSB7CiAgICAgICAgIG1fbGF5ZXJUcmVlSG9zdEltcGwtPmRyYXdMYXll
cnMoZnJhbWUpOwogICAgICAgICByZXN1bHQuZGlkRHJhdyA9IHRydWU7CkBAIC02NDksOSArNjU5
LDExIEBAIENDU2NoZWR1bGVkQWN0aW9uRHJhd0FuZFN3YXBSZXN1bHQgQ0NUaHJlYWRQcm94eTo6
c2NoZWR1bGVkQWN0aW9uRHJhd0FuZFN3YXBJbnRlCiAKICAgICAvLyBDaGVjayBmb3IgYSBwZW5k
aW5nIGNvbXBvc2l0ZUFuZFJlYWRiYWNrLgogICAgIGlmIChtX3JlYWRiYWNrUmVxdWVzdE9uSW1w
bFRocmVhZCkgewotICAgICAgICBBU1NFUlQoZHJhd0ZyYW1lKTsgLy8gVGhpcyBzaG91bGQgYmUg
YSBmb3JjZWREcmF3Ci0gICAgICAgIG1fbGF5ZXJUcmVlSG9zdEltcGwtPnJlYWRiYWNrKG1fcmVh
ZGJhY2tSZXF1ZXN0T25JbXBsVGhyZWFkLT5waXhlbHMsIG1fcmVhZGJhY2tSZXF1ZXN0T25JbXBs
VGhyZWFkLT5yZWN0KTsKLSAgICAgICAgbV9yZWFkYmFja1JlcXVlc3RPbkltcGxUaHJlYWQtPnN1
Y2Nlc3MgPSAhbV9sYXllclRyZWVIb3N0SW1wbC0+aXNDb250ZXh0TG9zdCgpOworICAgICAgICBt
X3JlYWRiYWNrUmVxdWVzdE9uSW1wbFRocmVhZC0+c3VjY2VzcyA9IGZhbHNlOworICAgICAgICBp
ZiAoZHJhd0ZyYW1lKSB7CisgICAgICAgICAgICBtX2xheWVyVHJlZUhvc3RJbXBsLT5yZWFkYmFj
ayhtX3JlYWRiYWNrUmVxdWVzdE9uSW1wbFRocmVhZC0+cGl4ZWxzLCBtX3JlYWRiYWNrUmVxdWVz
dE9uSW1wbFRocmVhZC0+cmVjdCk7CisgICAgICAgICAgICBtX3JlYWRiYWNrUmVxdWVzdE9uSW1w
bFRocmVhZC0+c3VjY2VzcyA9ICFtX2xheWVyVHJlZUhvc3RJbXBsLT5pc0NvbnRleHRMb3N0KCk7
CisgICAgICAgIH0KICAgICAgICAgbV9yZWFkYmFja1JlcXVlc3RPbkltcGxUaHJlYWQtPmNvbXBs
ZXRpb24uc2lnbmFsKCk7CiAgICAgICAgIG1fcmVhZGJhY2tSZXF1ZXN0T25JbXBsVGhyZWFkID0g
MDsKICAgICB9CkBAIC02NjEsNyArNjczLDYgQEAgQ0NTY2hlZHVsZWRBY3Rpb25EcmF3QW5kU3dh
cFJlc3VsdCBDQ1RocmVhZFByb3h5OjpzY2hlZHVsZWRBY3Rpb25EcmF3QW5kU3dhcEludGUKIAog
ICAgIC8vIFByb2Nlc3MgYW55IGZpbmlzaCByZXF1ZXN0CiAgICAgaWYgKG1fZmluaXNoQWxsUmVu
ZGVyaW5nQ29tcGxldGlvbkV2ZW50T25JbXBsVGhyZWFkKSB7Ci0gICAgICAgIEFTU0VSVChkcmF3
RnJhbWUpOyAvLyBUaGlzIHNob3VsZCBiZSBhIGZvcmNlZERyYXcKICAgICAgICAgbV9sYXllclRy
ZWVIb3N0SW1wbC0+ZmluaXNoQWxsUmVuZGVyaW5nKCk7CiAgICAgICAgIG1fZmluaXNoQWxsUmVu
ZGVyaW5nQ29tcGxldGlvbkV2ZW50T25JbXBsVGhyZWFkLT5zaWduYWwoKTsKICAgICAgICAgbV9m
aW5pc2hBbGxSZW5kZXJpbmdDb21wbGV0aW9uRXZlbnRPbkltcGxUaHJlYWQgPSAwOwpAQCAtNjcz
LDcgKzY4NCw2IEBAIENDU2NoZWR1bGVkQWN0aW9uRHJhd0FuZFN3YXBSZXN1bHQgQ0NUaHJlYWRQ
cm94eTo6c2NoZWR1bGVkQWN0aW9uRHJhd0FuZFN3YXBJbnRlCiAgICAgICAgIG1fbWFpblRocmVh
ZFByb3h5LT5wb3N0VGFzayhjcmVhdGVDQ1RocmVhZFRhc2sodGhpcywgJkNDVGhyZWFkUHJveHk6
OmRpZENvbW1pdEFuZERyYXdGcmFtZSkpOwogICAgIH0KIAotICAgIEFTU0VSVChkcmF3RnJhbWUg
fHwgKCFkcmF3RnJhbWUgJiYgIWZvcmNlZERyYXcpKTsKICAgICByZXR1cm4gcmVzdWx0OwogfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDTGF5ZXJUcmVlSG9z
dEltcGxUZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NMYXllclRyZWVI
b3N0SW1wbFRlc3QuY3BwCmluZGV4IGIyYTRhNGFjOTRmNzUzZDE0MzllMTFjNTQ1YTViM2M2ZmFm
Yjg0NzcuLjU4NjY4ZDBlZmEyMzc4MThhZGRlYTk0Mzg0YWZlMGEwYmYwOWQyOWIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NMYXllclRyZWVIb3N0SW1wbFRlc3Qu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NMYXllclRyZWVIb3N0SW1w
bFRlc3QuY3BwCkBAIC02MCw2ICs2MCw4IEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAgIENDU2V0
dGluZ3Mgc2V0dGluZ3M7CiAgICAgICAgIG1faG9zdEltcGwgPSBDQ0xheWVyVHJlZUhvc3RJbXBs
OjpjcmVhdGUoc2V0dGluZ3MsIHRoaXMpOworICAgICAgICBtX2hvc3RJbXBsLT5pbml0aWFsaXpl
TGF5ZXJSZW5kZXJlcihjcmVhdGVDb250ZXh0KCksIGFkb3B0UHRyKG5ldyBGYWtlVGV4dHVyZVVw
bG9hZGVyKSk7CisgICAgICAgIG1faG9zdEltcGwtPnNldFZpZXdwb3J0U2l6ZShJbnRTaXplKDEw
LCAxMCkpOwogICAgIH0KIAogICAgIHZpcnR1YWwgdm9pZCBkaWRMb3NlQ29udGV4dE9uSW1wbFRo
cmVhZCgpIE9WRVJSSURFIHsgfQpAQCAtMjU1LDggKzI1Nyw2IEBAIFRFU1RfRihDQ0xheWVyVHJl
ZUhvc3RJbXBsVGVzdCwgbm9uRmFzdFNjcm9sbGFibGVSZWdpb25CYXNpYykKIAogVEVTVF9GKEND
TGF5ZXJUcmVlSG9zdEltcGxUZXN0LCBub25GYXN0U2Nyb2xsYWJsZVJlZ2lvbldpdGhPZmZzZXQp
CiB7Ci0gICAgbV9ob3N0SW1wbC0+aW5pdGlhbGl6ZUxheWVyUmVuZGVyZXIoY3JlYXRlQ29udGV4
dCgpLCBhZG9wdFB0cihuZXcgRmFrZVRleHR1cmVVcGxvYWRlcikpOwotCiAgICAgT3duUHRyPEND
TGF5ZXJJbXBsPiByb290ID0gQ0NMYXllckltcGw6OmNyZWF0ZSgwKTsKICAgICByb290LT5zZXRT
Y3JvbGxhYmxlKHRydWUpOwogICAgIHJvb3QtPnNldFNjcm9sbFBvc2l0aW9uKEludFBvaW50KDAs
IDApKTsKQEAgLTQ0MSw0OSArNDQxLDUxIEBAIHByaXZhdGU6CiAKIFRFU1RfRihDQ0xheWVyVHJl
ZUhvc3RJbXBsVGVzdCwgZGlkRHJhd05vdENhbGxlZE9uSGlkZGVuTGF5ZXIpCiB7Ci0gICAgbV9o
b3N0SW1wbC0+aW5pdGlhbGl6ZUxheWVyUmVuZGVyZXIoY3JlYXRlQ29udGV4dCgpLCBhZG9wdFB0
cihuZXcgRmFrZVRleHR1cmVVcGxvYWRlcikpOwotCi0gICAgLy8gRW5zdXJlIHZpc2libGVMYXll
clJlY3QgZm9yIHJvb3QgbGF5ZXIgaXMgZW1wdHkKLSAgICBtX2hvc3RJbXBsLT5zZXRWaWV3cG9y
dFNpemUoSW50U2l6ZSgwLCAwKSk7Ci0KKyAgICAvLyBUaGUgcm9vdCBsYXllciBpcyBhbHdheXMg
ZHJhd24sIHNvIHJ1biB0aGlzIHRlc3Qgb24gYSBjaGlsZCBsYXllciB0aGF0CisgICAgLy8gd2ls
bCBiZSBtYXNrZWQgb3V0IGJ5IHRoZSByb290IGxheWVyJ3MgYm91bmRzLgogICAgIG1faG9zdElt
cGwtPnNldFJvb3RMYXllcihEaWREcmF3Q2hlY2tMYXllcjo6Y3JlYXRlKDApKTsKICAgICBEaWRE
cmF3Q2hlY2tMYXllciogcm9vdCA9IHN0YXRpY19jYXN0PERpZERyYXdDaGVja0xheWVyKj4obV9o
b3N0SW1wbC0+cm9vdExheWVyKCkpOworICAgIHJvb3QtPnNldE1hc2tzVG9Cb3VuZHModHJ1ZSk7
CisKKyAgICByb290LT5hZGRDaGlsZChEaWREcmF3Q2hlY2tMYXllcjo6Y3JlYXRlKDEpKTsKKyAg
ICBEaWREcmF3Q2hlY2tMYXllciogbGF5ZXIgPSBzdGF0aWNfY2FzdDxEaWREcmF3Q2hlY2tMYXll
cio+KHJvb3QtPmNoaWxkcmVuKClbMF0uZ2V0KCkpOworICAgIC8vIEVuc3VyZSB2aXNpYmxlTGF5
ZXJSZWN0IGZvciBsYXllciBpcyBlbXB0eQorICAgIGxheWVyLT5zZXRQb3NpdGlvbihGbG9hdFBv
aW50KDEwMCwgMTAwKSk7CisgICAgbGF5ZXItPnNldEJvdW5kcyhJbnRTaXplKDEwLCAxMCkpOwor
ICAgIGxheWVyLT5zZXRDb250ZW50Qm91bmRzKEludFNpemUoMTAsIDEwKSk7CiAKICAgICBDQ0xh
eWVyVHJlZUhvc3RJbXBsOjpGcmFtZURhdGEgZnJhbWU7CiAKLSAgICBFWFBFQ1RfRkFMU0Uocm9v
dC0+d2lsbERyYXdDYWxsZWQoKSk7Ci0gICAgRVhQRUNUX0ZBTFNFKHJvb3QtPmRpZERyYXdDYWxs
ZWQoKSk7CisgICAgRVhQRUNUX0ZBTFNFKGxheWVyLT53aWxsRHJhd0NhbGxlZCgpKTsKKyAgICBF
WFBFQ1RfRkFMU0UobGF5ZXItPmRpZERyYXdDYWxsZWQoKSk7CiAKICAgICBFWFBFQ1RfVFJVRSht
X2hvc3RJbXBsLT5wcmVwYXJlVG9EcmF3KGZyYW1lKSk7CiAgICAgbV9ob3N0SW1wbC0+ZHJhd0xh
eWVycyhmcmFtZSk7CiAgICAgbV9ob3N0SW1wbC0+ZGlkRHJhd0FsbExheWVycyhmcmFtZSk7CiAK
LSAgICBFWFBFQ1RfRkFMU0Uocm9vdC0+d2lsbERyYXdDYWxsZWQoKSk7Ci0gICAgRVhQRUNUX0ZB
TFNFKHJvb3QtPmRpZERyYXdDYWxsZWQoKSk7CisgICAgRVhQRUNUX0ZBTFNFKGxheWVyLT53aWxs
RHJhd0NhbGxlZCgpKTsKKyAgICBFWFBFQ1RfRkFMU0UobGF5ZXItPmRpZERyYXdDYWxsZWQoKSk7
CiAKLSAgICBFWFBFQ1RfVFJVRShyb290LT52aXNpYmxlTGF5ZXJSZWN0KCkuaXNFbXB0eSgpKTsK
KyAgICBFWFBFQ1RfVFJVRShsYXllci0+dmlzaWJsZUxheWVyUmVjdCgpLmlzRW1wdHkoKSk7CiAK
LSAgICAvLyBFbnN1cmUgdmlzaWJsZUxheWVyUmVjdCBmb3Igcm9vdCBsYXllciBpcyBub3QgZW1w
dHkKLSAgICBtX2hvc3RJbXBsLT5zZXRWaWV3cG9ydFNpemUoSW50U2l6ZSgxMCwgMTApKTsKKyAg
ICAvLyBFbnN1cmUgdmlzaWJsZUxheWVyUmVjdCBmb3IgbGF5ZXIgbGF5ZXIgaXMgbm90IGVtcHR5
CisgICAgbGF5ZXItPnNldFBvc2l0aW9uKEZsb2F0UG9pbnQoMCwgMCkpOwogCi0gICAgRVhQRUNU
X0ZBTFNFKHJvb3QtPndpbGxEcmF3Q2FsbGVkKCkpOwotICAgIEVYUEVDVF9GQUxTRShyb290LT5k
aWREcmF3Q2FsbGVkKCkpOworICAgIEVYUEVDVF9GQUxTRShsYXllci0+d2lsbERyYXdDYWxsZWQo
KSk7CisgICAgRVhQRUNUX0ZBTFNFKGxheWVyLT5kaWREcmF3Q2FsbGVkKCkpOwogCiAgICAgRVhQ
RUNUX1RSVUUobV9ob3N0SW1wbC0+cHJlcGFyZVRvRHJhdyhmcmFtZSkpOwogICAgIG1faG9zdElt
cGwtPmRyYXdMYXllcnMoZnJhbWUpOwogICAgIG1faG9zdEltcGwtPmRpZERyYXdBbGxMYXllcnMo
ZnJhbWUpOwogCi0gICAgRVhQRUNUX1RSVUUocm9vdC0+d2lsbERyYXdDYWxsZWQoKSk7Ci0gICAg
RVhQRUNUX1RSVUUocm9vdC0+ZGlkRHJhd0NhbGxlZCgpKTsKKyAgICBFWFBFQ1RfVFJVRShsYXll
ci0+d2lsbERyYXdDYWxsZWQoKSk7CisgICAgRVhQRUNUX1RSVUUobGF5ZXItPmRpZERyYXdDYWxs
ZWQoKSk7CiAKLSAgICBFWFBFQ1RfRkFMU0Uocm9vdC0+dmlzaWJsZUxheWVyUmVjdCgpLmlzRW1w
dHkoKSk7CisgICAgRVhQRUNUX0ZBTFNFKGxheWVyLT52aXNpYmxlTGF5ZXJSZWN0KCkuaXNFbXB0
eSgpKTsKIH0KIAogVEVTVF9GKENDTGF5ZXJUcmVlSG9zdEltcGxUZXN0LCBkaWREcmF3Q2FsbGVk
T25BbGxMYXllcnMpCiB7Ci0gICAgbV9ob3N0SW1wbC0+aW5pdGlhbGl6ZUxheWVyUmVuZGVyZXIo
Y3JlYXRlQ29udGV4dCgpLCBhZG9wdFB0cihuZXcgRmFrZVRleHR1cmVVcGxvYWRlcikpOwotICAg
IG1faG9zdEltcGwtPnNldFZpZXdwb3J0U2l6ZShJbnRTaXplKDEwLCAxMCkpOwotCiAgICAgbV9o
b3N0SW1wbC0+c2V0Um9vdExheWVyKERpZERyYXdDaGVja0xheWVyOjpjcmVhdGUoMCkpOwogICAg
IERpZERyYXdDaGVja0xheWVyKiByb290ID0gc3RhdGljX2Nhc3Q8RGlkRHJhd0NoZWNrTGF5ZXIq
PihtX2hvc3RJbXBsLT5yb290TGF5ZXIoKSk7CiAKQEAgLTUzNCw5ICs1MzYsNiBAQCBwcml2YXRl
OgogCiBURVNUX0YoQ0NMYXllclRyZWVIb3N0SW1wbFRlc3QsIHByZXBhcmVUb0RyYXdGYWlsc1do
ZW5BbmltYXRpb25Vc2VzQ2hlY2tlcmJvYXJkKQogewotICAgIG1faG9zdEltcGwtPmluaXRpYWxp
emVMYXllclJlbmRlcmVyKGNyZWF0ZUNvbnRleHQoKSwgYWRvcHRQdHIobmV3IEZha2VUZXh0dXJl
VXBsb2FkZXIpKTsKLSAgICBtX2hvc3RJbXBsLT5zZXRWaWV3cG9ydFNpemUoSW50U2l6ZSgxMCwg
MTApKTsKLQogICAgIC8vIFdoZW4gdGhlIHRleHR1cmUgaXMgbm90IG1pc3NpbmcsIHdlIGRyYXcg
YXMgdXN1YWwuCiAgICAgbV9ob3N0SW1wbC0+c2V0Um9vdExheWVyKERpZERyYXdDaGVja0xheWVy
OjpjcmVhdGUoMCkpOwogICAgIERpZERyYXdDaGVja0xheWVyKiByb290ID0gc3RhdGljX2Nhc3Q8
RGlkRHJhd0NoZWNrTGF5ZXIqPihtX2hvc3RJbXBsLT5yb290TGF5ZXIoKSk7CkBAIC02NjEsOCAr
NjYwLDYgQEAgcHJpdmF0ZToKIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD03NTc4MwogVEVTVF9GKENDTGF5ZXJUcmVlSG9zdEltcGxUZXN0LCBibGVuZGluZ09mZldo
ZW5EcmF3aW5nT3BhcXVlTGF5ZXJzKQogewotICAgIG1faG9zdEltcGwtPmluaXRpYWxpemVMYXll
clJlbmRlcmVyKGNyZWF0ZUNvbnRleHQoKSwgYWRvcHRQdHIobmV3IEZha2VUZXh0dXJlVXBsb2Fk
ZXIpKTsKLSAgICBtX2hvc3RJbXBsLT5zZXRWaWV3cG9ydFNpemUoSW50U2l6ZSgxMCwgMTApKTsK
IAogICAgIHsKICAgICAgICAgT3duUHRyPENDTGF5ZXJJbXBsPiByb290ID0gQ0NMYXllckltcGw6
OmNyZWF0ZSgwKTsKQEAgLTk5MSw3ICs5ODgsNiBAQCBURVNUX0YoQ0NMYXllclRyZWVIb3N0SW1w
bFRlc3QsIHJlc2hhcGVOb3RDYWxsZWRVbnRpbERyYXcpCiAgICAgUmVzaGFwZVRyYWNrZXJDb250
ZXh0KiByZXNoYXBlVHJhY2tlciA9IG5ldyBSZXNoYXBlVHJhY2tlckNvbnRleHQoKTsKICAgICBS
ZWZQdHI8R3JhcGhpY3NDb250ZXh0M0Q+IGNvbnRleHQgPSBHcmFwaGljc0NvbnRleHQzRFByaXZh
dGU6OmNyZWF0ZUdyYXBoaWNzQ29udGV4dEZyb21XZWJDb250ZXh0KGFkb3B0UHRyKHJlc2hhcGVU
cmFja2VyKSwgR3JhcGhpY3NDb250ZXh0M0Q6OlJlbmRlckRpcmVjdGx5VG9Ib3N0V2luZG93KTsK
ICAgICBtX2hvc3RJbXBsLT5pbml0aWFsaXplTGF5ZXJSZW5kZXJlcihjb250ZXh0LCBhZG9wdFB0
cihuZXcgRmFrZVRleHR1cmVVcGxvYWRlcikpOwotICAgIG1faG9zdEltcGwtPnNldFZpZXdwb3J0
U2l6ZShJbnRTaXplKDEwLCAxMCkpOwogCiAgICAgQ0NMYXllckltcGwqIHJvb3QgPSBuZXcgRmFr
ZURyYXdhYmxlQ0NMYXllckltcGwoMSk7CiAgICAgcm9vdC0+c2V0QW5jaG9yUG9pbnQoRmxvYXRQ
b2ludCgwLCAwKSk7CkBAIC0xMTI2LDkgKzExMjIsNiBAQCBwcml2YXRlOgogCiBURVNUX0YoQ0NM
YXllclRyZWVIb3N0SW1wbFRlc3QsIGNvbnRleHRMb3N0QW5kUmVzdG9yZWROb3RpZmljYXRpb25T
ZW50VG9BbGxMYXllcnMpCiB7Ci0gICAgbV9ob3N0SW1wbC0+aW5pdGlhbGl6ZUxheWVyUmVuZGVy
ZXIoY3JlYXRlQ29udGV4dCgpLCBhZG9wdFB0cihuZXcgRmFrZVRleHR1cmVVcGxvYWRlcikpOwot
ICAgIG1faG9zdEltcGwtPnNldFZpZXdwb3J0U2l6ZShJbnRTaXplKDEwLCAxMCkpOwotCiAgICAg
bV9ob3N0SW1wbC0+c2V0Um9vdExheWVyKENvbnRleHRMb3N0Tm90aWZpY2F0aW9uQ2hlY2tMYXll
cjo6Y3JlYXRlKDApKTsKICAgICBDb250ZXh0TG9zdE5vdGlmaWNhdGlvbkNoZWNrTGF5ZXIqIHJv
b3QgPSBzdGF0aWNfY2FzdDxDb250ZXh0TG9zdE5vdGlmaWNhdGlvbkNoZWNrTGF5ZXIqPihtX2hv
c3RJbXBsLT5yb290TGF5ZXIoKSk7CiAKQEAgLTExNzMsOSArMTE2Niw2IEBAIHByaXZhdGU6CiAK
IFRFU1RfRihDQ0xheWVyVHJlZUhvc3RJbXBsVGVzdCwgc2Nyb2xsYmFyTGF5ZXJMb3N0Q29udGV4
dCkKIHsKLSAgICBtX2hvc3RJbXBsLT5pbml0aWFsaXplTGF5ZXJSZW5kZXJlcihjcmVhdGVDb250
ZXh0KCksIGFkb3B0UHRyKG5ldyBGYWtlVGV4dHVyZVVwbG9hZGVyKSk7Ci0gICAgbV9ob3N0SW1w
bC0+c2V0Vmlld3BvcnRTaXplKEludFNpemUoMTAsIDEwKSk7Ci0KICAgICBtX2hvc3RJbXBsLT5z
ZXRSb290TGF5ZXIoU2Nyb2xsYmFyTGF5ZXJGYWtlUGFpbnQ6OmNyZWF0ZSgwKSk7CiAgICAgU2Ny
b2xsYmFyTGF5ZXJGYWtlUGFpbnQqIHNjcm9sbGJhciA9IHN0YXRpY19jYXN0PFNjcm9sbGJhckxh
eWVyRmFrZVBhaW50Kj4obV9ob3N0SW1wbC0+cm9vdExheWVyKCkpOwogICAgIHNjcm9sbGJhci0+
c2V0Qm91bmRzKEludFNpemUoMSwgMSkpOwpAQCAtMTMyMyw5ICsxMzEzLDYgQEAgcHJpdmF0ZToK
IAogVEVTVF9GKENDTGF5ZXJUcmVlSG9zdEltcGxUZXN0LCBkb250VXNlT2xkUmVzb3VyY2VzQWZ0
ZXJMb3N0Q29udGV4dCkKIHsKLSAgICBtX2hvc3RJbXBsLT5pbml0aWFsaXplTGF5ZXJSZW5kZXJl
cihjcmVhdGVDb250ZXh0KCksIGFkb3B0UHRyKG5ldyBGYWtlVGV4dHVyZVVwbG9hZGVyKSk7Ci0g
ICAgbV9ob3N0SW1wbC0+c2V0Vmlld3BvcnRTaXplKEludFNpemUoMTAsIDEwKSk7Ci0KICAgICBP
d25QdHI8Q0NMYXllckltcGw+IHJvb3RMYXllcihDQ0xheWVySW1wbDo6Y3JlYXRlKDApKTsKICAg
ICByb290TGF5ZXItPnNldEJvdW5kcyhJbnRTaXplKDEwLCAxMCkpOwogICAgIHJvb3RMYXllci0+
c2V0QW5jaG9yUG9pbnQoRmxvYXRQb2ludCgwLCAwKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3Rlc3RzL0NDTGF5ZXJUcmVlSG9zdFRlc3QuY3BwIGIvU291cmNlL1dlYktp
dC9jaHJvbWl1bS90ZXN0cy9DQ0xheWVyVHJlZUhvc3RUZXN0LmNwcAppbmRleCBjZDM1ZmQ2Njk2
OWNmZGE4MzRmNGNmZGVjNTk3YzNmMzljNjJmNzUwLi4yMDRhYWIzOWE4ZmNmOWUwYTI1NThhNzgy
NTgxZjM3YzAxYmE2MjQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3Rz
L0NDTGF5ZXJUcmVlSG9zdFRlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVz
dHMvQ0NMYXllclRyZWVIb3N0VGVzdC5jcHAKQEAgLTg0MCw2ICs4NDAsNjIgQEAgVEVTVF9GKEND
TGF5ZXJUcmVlSG9zdFRlc3RTZXROZWVkc1JlZHJhdywgcnVuTXVsdGlUaHJlYWQpCiAgICAgcnVu
VGVzdFRocmVhZGVkKCk7CiB9CiAKKy8vIElmIHRoZSBsYXllclRyZWVIb3N0IHNheXMgaXQgY2Fu
J3QgZHJhdywgdGhlbiB3ZSBzaG91bGQgbm90IHRyeSB0byBkcmF3LgorLy8gRklYTUU6IE1ha2Ug
dGhpcyBydW4gaW4gc2luZ2xlIHRocmVhZGVkIG1vZGUgdG9vLiBodHRwOi8vY3JidWcuY29tLzEy
NzQ4MQorY2xhc3MgQ0NMYXllclRyZWVIb3N0VGVzdENhbkRyYXdCbG9ja3NEcmF3aW5nIDogcHVi
bGljIENDTGF5ZXJUcmVlSG9zdFRlc3RUaHJlYWRPbmx5IHsKK3B1YmxpYzoKKyAgICBDQ0xheWVy
VHJlZUhvc3RUZXN0Q2FuRHJhd0Jsb2Nrc0RyYXdpbmcoKQorICAgICAgICA6IG1fbnVtQ29tbWl0
cygwKQorICAgIHsKKyAgICB9CisKKyAgICB2aXJ0dWFsIHZvaWQgYmVnaW5UZXN0KCkKKyAgICB7
CisgICAgfQorCisgICAgdmlydHVhbCB2b2lkIGRyYXdMYXllcnNPbkNDVGhyZWFkKENDTGF5ZXJU
cmVlSG9zdEltcGwqIGltcGwpCisgICAgeworICAgICAgICAvLyBPbmx5IHRoZSBpbml0aWFsIGRy
YXcgc2hvdWxkIGJyaW5nIHVzIGhlcmUuCisgICAgICAgIEVYUEVDVF9UUlVFKGltcGwtPmNhbkRy
YXcoKSk7CisgICAgICAgIEVYUEVDVF9FUSgwLCBpbXBsLT5zb3VyY2VGcmFtZU51bWJlcigpKTsK
KyAgICB9CisKKyAgICB2aXJ0dWFsIHZvaWQgY29tbWl0Q29tcGxldGVPbkNDVGhyZWFkKENDTGF5
ZXJUcmVlSG9zdEltcGwqIGltcGwpCisgICAgeworICAgICAgICBpZiAobV9udW1Db21taXRzID49
IDEpIHsKKyAgICAgICAgICAgIC8vIEFmdGVyIHRoZSBmaXJzdCBjb21taXQsIHdlIHNob3VsZCBu
b3QgYmUgYWJsZSB0byBkcmF3LgorICAgICAgICAgICAgRVhQRUNUX0ZBTFNFKGltcGwtPmNhbkRy
YXcoKSk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICB2aXJ0dWFsIHZvaWQgZGlkQ29tbWl0QW5k
RHJhd0ZyYW1lKCkKKyAgICB7CisgICAgICAgIG1fbnVtQ29tbWl0cysrOworICAgICAgICBpZiAo
bV9udW1Db21taXRzID09IDEpIHsKKyAgICAgICAgICAgIC8vIE1ha2UgdGhlIHZpZXdwb3J0IGVt
cHR5IHNvIHRoZSBob3N0IHNheXMgaXQgY2FuJ3QgZHJhdy4KKyAgICAgICAgICAgIG1fbGF5ZXJU
cmVlSG9zdC0+c2V0Vmlld3BvcnRTaXplKEludFNpemUoMCwgMCkpOworCisgICAgICAgICAgICBP
d25BcnJheVB0cjxjaGFyPiBwaXhlbHMoYWRvcHRBcnJheVB0cihuZXcgY2hhcls0XSkpOworICAg
ICAgICAgICAgbV9sYXllclRyZWVIb3N0LT5jb21wb3NpdGVBbmRSZWFkYmFjayhzdGF0aWNfY2Fz
dDx2b2lkKj4ocGl4ZWxzLmdldCgpKSwgSW50UmVjdCgwLCAwLCAxLCAxKSk7CisgICAgICAgIH0g
ZWxzZSBpZiAobV9udW1Db21taXRzID09IDIpIHsKKyAgICAgICAgICAgIG1fbGF5ZXJUcmVlSG9z
dC0+c2V0TmVlZHNDb21taXQoKTsKKyAgICAgICAgICAgIG1fbGF5ZXJUcmVlSG9zdC0+ZmluaXNo
QWxsUmVuZGVyaW5nKCk7CisgICAgICAgICAgICBlbmRUZXN0KCk7CisgICAgICAgIH0KKyAgICB9
CisKKyAgICB2aXJ0dWFsIHZvaWQgYWZ0ZXJUZXN0KCkKKyAgICB7CisgICAgfQorCitwcml2YXRl
OgorICAgIGludCBtX251bUNvbW1pdHM7Cit9OworCitURVNUX0YoQ0NMYXllclRyZWVIb3N0VGVz
dENhbkRyYXdCbG9ja3NEcmF3aW5nLCBydW5NdWx0aVRocmVhZCkKK3sKKyAgICBydW5UZXN0VGhy
ZWFkZWQoKTsKK30KIAogLy8gYmVnaW5MYXllcldyaXRlIHNob3VsZCBwcmV2ZW50IGRyYXdzIGZy
b20gZXhlY3V0aW5nIHVudGlsIGEgY29tbWl0IG9jY3VycwogY2xhc3MgQ0NMYXllclRyZWVIb3N0
VGVzdFdyaXRlTGF5ZXJzUmVkcmF3IDogcHVibGljIENDTGF5ZXJUcmVlSG9zdFRlc3RUaHJlYWRP
bmx5IHsK
</data>

          </attachment>
      

    </bug>

</bugzilla>