<?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>173166</bug_id>
          
          <creation_ts>2017-06-09 09:46:52 -0700</creation_ts>
          <short_desc>CSS transitions added while page is not visible do not start when the page becomes visible</short_desc>
          <delta_ts>2017-06-14 09:52:24 -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>CSS</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=173370</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>173302</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Chris Dumez">cdumez</reporter>
          <assigned_to name="Chris Dumez">cdumez</assigned_to>
          <cc>buildbot</cc>
    
    <cc>commit-queue</cc>
    
    <cc>csaavedra</cc>
    
    <cc>darin</cc>
    
    <cc>dino</cc>
    
    <cc>dstockwell</cc>
    
    <cc>hyatt</cc>
    
    <cc>jonlee</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>zalan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1317444</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-06-09 09:46:52 -0700</bug_when>
    <thetext>CSS transitions added while page is not visible do not start when the page becomes visible.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1317445</commentid>
    <comment_count>1</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-06-09 09:47:27 -0700</bug_when>
    <thetext>&lt;rdar://problem/32250351&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1317446</commentid>
    <comment_count>2</comment_count>
      <attachid>312444</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-06-09 09:49:37 -0700</bug_when>
    <thetext>Created attachment 312444
WIP Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1317470</commentid>
    <comment_count>3</comment_count>
      <attachid>312449</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-06-09 10:18:54 -0700</bug_when>
    <thetext>Created attachment 312449
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1317473</commentid>
    <comment_count>4</comment_count>
      <attachid>312449</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2017-06-09 10:20:49 -0700</bug_when>
    <thetext>Comment on attachment 312449
Patch

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

&gt; Source/WebCore/page/animation/ImplicitAnimation.h:58
&gt; +    void reset(const RenderStyle* to, CompositeAnimation*);

Both arguments should be references rather than pointers. Unless CompositeAnimation* can be null?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1317475</commentid>
    <comment_count>5</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-06-09 10:23:25 -0700</bug_when>
    <thetext>(In reply to Darin Adler from comment #4)
&gt; Comment on attachment 312449 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=312449&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/page/animation/ImplicitAnimation.h:58
&gt; &gt; +    void reset(const RenderStyle* to, CompositeAnimation*);
&gt; 
&gt; Both arguments should be references rather than pointers. Unless
&gt; CompositeAnimation* can be null?

OK.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1317478</commentid>
    <comment_count>6</comment_count>
      <attachid>312452</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-06-09 10:27:01 -0700</bug_when>
    <thetext>Created attachment 312452
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1317479</commentid>
    <comment_count>7</comment_count>
      <attachid>312452</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2017-06-09 10:28:38 -0700</bug_when>
    <thetext>Comment on attachment 312452
Patch

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

&gt; Source/WebCore/page/animation/CompositeAnimation.cpp:176
&gt;                      m_transitions.set(prop, WTFMove(implicitAnimation));

Not for this patch, I suppose, but a bit peculiar that this uses set rather than add.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1317487</commentid>
    <comment_count>8</comment_count>
      <attachid>312452</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2017-06-09 10:43:18 -0700</bug_when>
    <thetext>Comment on attachment 312452
Patch

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

&gt; Source/WebCore/page/animation/CompositeAnimation.cpp:173
&gt; +                    if (m_suspended &amp;&amp; implicitAnimation-&gt;hasStyle())
&gt; +                        implicitAnimation-&gt;updatePlayState(AnimPlayStatePaused);

I&apos;m slightly concerned about doing this; pausing transitions is not a very well-tested code path (and historically has led to assertions in the state machine). But if tests don&apos;t assert, I don&apos;t object.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1317492</commentid>
    <comment_count>9</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-06-09 10:44:36 -0700</bug_when>
    <thetext>(In reply to Simon Fraser (smfr) from comment #8)
&gt; Comment on attachment 312452 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=312452&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/page/animation/CompositeAnimation.cpp:173
&gt; &gt; +                    if (m_suspended &amp;&amp; implicitAnimation-&gt;hasStyle())
&gt; &gt; +                        implicitAnimation-&gt;updatePlayState(AnimPlayStatePaused);
&gt; 
&gt; I&apos;m slightly concerned about doing this; pausing transitions is not a very
&gt; well-tested code path (and historically has led to assertions in the state
&gt; machine). But if tests don&apos;t assert, I don&apos;t object.

Tests do not assert.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1317498</commentid>
    <comment_count>10</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-06-09 10:49:36 -0700</bug_when>
    <thetext>(In reply to Chris Dumez from comment #9)
&gt; (In reply to Simon Fraser (smfr) from comment #8)
&gt; &gt; Comment on attachment 312452 [details]
&gt; &gt; Patch
&gt; &gt; 
&gt; &gt; View in context:
&gt; &gt; https://bugs.webkit.org/attachment.cgi?id=312452&amp;action=review
&gt; &gt; 
&gt; &gt; &gt; Source/WebCore/page/animation/CompositeAnimation.cpp:173
&gt; &gt; &gt; +                    if (m_suspended &amp;&amp; implicitAnimation-&gt;hasStyle())
&gt; &gt; &gt; +                        implicitAnimation-&gt;updatePlayState(AnimPlayStatePaused);
&gt; &gt; 
&gt; &gt; I&apos;m slightly concerned about doing this; pausing transitions is not a very
&gt; &gt; well-tested code path (and historically has led to assertions in the state
&gt; &gt; machine). But if tests don&apos;t assert, I don&apos;t object.
&gt; 
&gt; Tests do not assert.

And to be clear, this code path was already exercised when hiding a page that contains animated CSS transitions. I am now pausing such transitions in the same way when they are created while the page is hidden.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1317500</commentid>
    <comment_count>11</comment_count>
      <attachid>312452</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-06-09 10:52:45 -0700</bug_when>
    <thetext>Comment on attachment 312452
Patch

Clearing flags on attachment: 312452

Committed r217997: &lt;http://trac.webkit.org/changeset/217997&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1317501</commentid>
    <comment_count>12</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-06-09 10:52:48 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1319106</commentid>
    <comment_count>13</comment_count>
    <who name="Claudio Saavedra">csaavedra</who>
    <bug_when>2017-06-14 06:06:31 -0700</bug_when>
    <thetext>(In reply to WebKit Commit Bot from comment #11)
&gt; Comment on attachment 312452 [details]
&gt; Patch
&gt; 
&gt; Clearing flags on attachment: 312452
&gt; 
&gt; Committed r217997: &lt;http://trac.webkit.org/changeset/217997&gt;

This patch is causing the following test to fail in several platforms:

  transitions/created-while-suspended.html [ Failure ]

See for the failure: https://build.webkit.org/results/GTK%20Linux%2064-bit%20Release%20(Tests)/r218230%20(1716)/transitions/created-while-suspended-pretty-diff.html

I suspect that the expectation just needs to be updated?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1319109</commentid>
    <comment_count>14</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2017-06-14 07:26:50 -0700</bug_when>
    <thetext>Seems possible that failure is what Chris fixed in bug 173302.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1319115</commentid>
    <comment_count>15</comment_count>
    <who name="Claudio Saavedra">csaavedra</who>
    <bug_when>2017-06-14 07:42:27 -0700</bug_when>
    <thetext>(In reply to Darin Adler from comment #14)
&gt; Seems possible that failure is what Chris fixed in bug 173302.

I tested the patch in that bug and the test output is the same, so it doesn&apos;t seem to be the case.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1319132</commentid>
    <comment_count>16</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-06-14 08:38:03 -0700</bug_when>
    <thetext>(In reply to Claudio Saavedra from comment #13)
&gt; (In reply to WebKit Commit Bot from comment #11)
&gt; &gt; Comment on attachment 312452 [details]
&gt; &gt; Patch
&gt; &gt; 
&gt; &gt; Clearing flags on attachment: 312452
&gt; &gt; 
&gt; &gt; Committed r217997: &lt;http://trac.webkit.org/changeset/217997&gt;
&gt; 
&gt; This patch is causing the following test to fail in several platforms:
&gt; 
&gt;   transitions/created-while-suspended.html [ Failure ]
&gt; 
&gt; See for the failure:
&gt; https://build.webkit.org/results/GTK%20Linux%2064-bit%20Release%20(Tests)/
&gt; r218230%20(1716)/transitions/created-while-suspended-pretty-diff.html
&gt; 
&gt; I suspect that the expectation just needs to be updated?

This looks to me like a progression from my patch. Before my patch, the transition that was added while suspended would not actually be resumed when resuming animations.
The test would still pass because it relies on internals.animationsAreSuspended() which claims animations were resumed.

With my patch, you see an extra:
#### Transition ended on element with id: box

line after resuming the animations because the transition was *actually* resumed and the animation has time to finish because we wait 8 seconds after resuming the animations:
setTimeout(function () { testRunner.notifyDone();}, 8000);

So I think this test merely needs rebaselining. However, I think this test should be rewriting so it does not wait 8 seconds, this is way too slow. We can probably finish the test when the transition ends.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1319134</commentid>
    <comment_count>17</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-06-14 08:40:57 -0700</bug_when>
    <thetext>(In reply to Chris Dumez from comment #16)
&gt; (In reply to Claudio Saavedra from comment #13)
&gt; &gt; (In reply to WebKit Commit Bot from comment #11)
&gt; &gt; &gt; Comment on attachment 312452 [details]
&gt; &gt; &gt; Patch
&gt; &gt; &gt; 
&gt; &gt; &gt; Clearing flags on attachment: 312452
&gt; &gt; &gt; 
&gt; &gt; &gt; Committed r217997: &lt;http://trac.webkit.org/changeset/217997&gt;
&gt; &gt; 
&gt; &gt; This patch is causing the following test to fail in several platforms:
&gt; &gt; 
&gt; &gt;   transitions/created-while-suspended.html [ Failure ]
&gt; &gt; 
&gt; &gt; See for the failure:
&gt; &gt; https://build.webkit.org/results/GTK%20Linux%2064-bit%20Release%20(Tests)/
&gt; &gt; r218230%20(1716)/transitions/created-while-suspended-pretty-diff.html
&gt; &gt; 
&gt; &gt; I suspect that the expectation just needs to be updated?
&gt; 
&gt; This looks to me like a progression from my patch. Before my patch, the
&gt; transition that was added while suspended would not actually be resumed when
&gt; resuming animations.
&gt; The test would still pass because it relies on
&gt; internals.animationsAreSuspended() which claims animations were resumed.
&gt; 
&gt; With my patch, you see an extra:
&gt; #### Transition ended on element with id: box
&gt; 
&gt; line after resuming the animations because the transition was *actually*
&gt; resumed and the animation has time to finish because we wait 8 seconds after
&gt; resuming the animations:
&gt; setTimeout(function () { testRunner.notifyDone();}, 8000);
&gt; 
&gt; So I think this test merely needs rebaselining. However, I think this test
&gt; should be rewriting so it does not wait 8 seconds, this is way too slow. We
&gt; can probably finish the test when the transition ends.

Will find some time today to improve the test.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1319177</commentid>
    <comment_count>18</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-06-14 09:52:24 -0700</bug_when>
    <thetext>(In reply to Chris Dumez from comment #17)
&gt; (In reply to Chris Dumez from comment #16)
&gt; &gt; (In reply to Claudio Saavedra from comment #13)
&gt; &gt; &gt; (In reply to WebKit Commit Bot from comment #11)
&gt; &gt; &gt; &gt; Comment on attachment 312452 [details]
&gt; &gt; &gt; &gt; Patch
&gt; &gt; &gt; &gt; 
&gt; &gt; &gt; &gt; Clearing flags on attachment: 312452
&gt; &gt; &gt; &gt; 
&gt; &gt; &gt; &gt; Committed r217997: &lt;http://trac.webkit.org/changeset/217997&gt;
&gt; &gt; &gt; 
&gt; &gt; &gt; This patch is causing the following test to fail in several platforms:
&gt; &gt; &gt; 
&gt; &gt; &gt;   transitions/created-while-suspended.html [ Failure ]
&gt; &gt; &gt; 
&gt; &gt; &gt; See for the failure:
&gt; &gt; &gt; https://build.webkit.org/results/GTK%20Linux%2064-bit%20Release%20(Tests)/
&gt; &gt; &gt; r218230%20(1716)/transitions/created-while-suspended-pretty-diff.html
&gt; &gt; &gt; 
&gt; &gt; &gt; I suspect that the expectation just needs to be updated?
&gt; &gt; 
&gt; &gt; This looks to me like a progression from my patch. Before my patch, the
&gt; &gt; transition that was added while suspended would not actually be resumed when
&gt; &gt; resuming animations.
&gt; &gt; The test would still pass because it relies on
&gt; &gt; internals.animationsAreSuspended() which claims animations were resumed.
&gt; &gt; 
&gt; &gt; With my patch, you see an extra:
&gt; &gt; #### Transition ended on element with id: box
&gt; &gt; 
&gt; &gt; line after resuming the animations because the transition was *actually*
&gt; &gt; resumed and the animation has time to finish because we wait 8 seconds after
&gt; &gt; resuming the animations:
&gt; &gt; setTimeout(function () { testRunner.notifyDone();}, 8000);
&gt; &gt; 
&gt; &gt; So I think this test merely needs rebaselining. However, I think this test
&gt; &gt; should be rewriting so it does not wait 8 seconds, this is way too slow. We
&gt; &gt; can probably finish the test when the transition ends.
&gt; 
&gt; Will find some time today to improve the test.

https://bugs.webkit.org/show_bug.cgi?id=173370</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>312444</attachid>
            <date>2017-06-09 09:49:37 -0700</date>
            <delta_ts>2017-06-09 10:18:53 -0700</delta_ts>
            <desc>WIP Patch</desc>
            <filename>CSS_Animation_suspend_bug_wip.patch</filename>
            <type>text/plain</type>
            <size>6775</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvYW5pbWF0aW9uL2Nzcy1hbmltYXRpb24tcmVz
dW1pbmctd2hlbi12aXNpYmxlLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvYW5pbWF0
aW9uL2Nzcy1hbmltYXRpb24tcmVzdW1pbmctd2hlbi12aXNpYmxlLWV4cGVjdGVkLnR4dApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uYTUyNGJkMGUwMzAKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2FuaW1hdGlvbi9jc3MtYW5pbWF0aW9uLXJlc3Vt
aW5nLXdoZW4tdmlzaWJsZS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxMiBAQAorVGVzdHMgdGhh
dCBDU1MgYW5pbWF0aW9ucyB0aGF0IGFyZSBjcmVhdGVkIHdoaWxlIHRoZSBwYWdlIGlzIGhpZGRl
biBhcmUgcHJvcGVybHkgcmVzdW1lZCB3aGVuIHRoZSBwYWdlIGJlY29tZXMgdmlzaWJsZS4KKwor
T24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9s
bG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BBU1MgaW50ZXJuYWxzLmFuaW1hdGlvbnNB
cmVTdXNwZW5kZWQoKSBpcyB0cnVlCitQQVNTIGludGVybmFscy5udW1iZXJPZkFjdGl2ZUFuaW1h
dGlvbnMoKSBpcyAwCitQQVNTIGludGVybmFscy5udW1iZXJPZkFjdGl2ZUFuaW1hdGlvbnMoKSBi
ZWNhbWUgMQorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRF
CitURVNUCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2FuaW1hdGlvbi9jc3MtYW5pbWF0
aW9uLXJlc3VtaW5nLXdoZW4tdmlzaWJsZS5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9hbmltYXRp
b24vY3NzLWFuaW1hdGlvbi1yZXN1bWluZy13aGVuLXZpc2libGUuaHRtbApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uMzMwYmY4NGQ4MGMKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9mYXN0L2FuaW1hdGlvbi9jc3MtYW5pbWF0aW9uLXJlc3VtaW5nLXdoZW4t
dmlzaWJsZS5odG1sCkBAIC0wLDAgKzEsNDAgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8
aGVhZD4KKzxzdHlsZT4KKyN0ZXN0RGl2IHsKKyAgICB0cmFuc2l0aW9uOiB0cmFuc2Zvcm0gMzBz
IGxpbmVhciwgY29sb3IgMnMsIGxlZnQgNHMgbGluZWFyLCB0b3AgNHMgbGluZWFyOworICAgIHBv
c2l0aW9uOiBhYnNvbHV0ZTsKK30KKzwvc3R5bGU+Cis8L2hlYWQ+Cis8Ym9keT4KKzxzY3JpcHQg
c3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC5qcyI+PC9zY3JpcHQ+Cis8ZGl2IGlkPSJ0ZXN0
RGl2Ij5URVNUPC9kaXY+Cis8c2NyaXB0PgorZGVzY3JpcHRpb24oIlRlc3RzIHRoYXQgQ1NTIGFu
aW1hdGlvbnMgdGhhdCBhcmUgY3JlYXRlZCB3aGlsZSB0aGUgcGFnZSBpcyBoaWRkZW4gYXJlIHBy
b3Blcmx5IHJlc3VtZWQgd2hlbiB0aGUgcGFnZSBiZWNvbWVzIHZpc2libGUuIik7Citqc1Rlc3RJ
c0FzeW5jID0gdHJ1ZTsKKworZnVuY3Rpb24gcmVnaXN0ZXJBbmltYXRpb24oKQoreworICAgIHRl
c3REaXYuc3R5bGUudHJhbnNmb3JtID0gInJvdGF0ZSgxNzBkZWcpIHNjYWxlKDAuMjc4MTk0MTQx
NDM0NzI4NCkiOworfQorCitvbmxvYWQgPSBmdW5jdGlvbigpIHsKKyAgICBpbnRlcm5hbHMuc3Vz
cGVuZEFuaW1hdGlvbnMoKTsKKworICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7CisgICAgICAg
IHJlZ2lzdGVyQW5pbWF0aW9uKCk7CisgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7Cisg
ICAgICAgICAgICBzaG91bGRCZVRydWUoImludGVybmFscy5hbmltYXRpb25zQXJlU3VzcGVuZGVk
KCkiKTsKKyAgICAgICAgICAgIHNob3VsZEJlKCJpbnRlcm5hbHMubnVtYmVyT2ZBY3RpdmVBbmlt
YXRpb25zKCkiLCAiMCIpOworCisgICAgICAgICAgICBpbnRlcm5hbHMucmVzdW1lQW5pbWF0aW9u
cygpOworICAgICAgICAgICAgc2hvdWxkQmVjb21lRXF1YWwoImludGVybmFscy5udW1iZXJPZkFj
dGl2ZUFuaW1hdGlvbnMoKSIsICIxIiwgZmluaXNoSlNUZXN0KTsKKyAgICAgICAgfSwgNTAwKTsK
KyAgICB9LCAwKTsKK30KKworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2FuaW1hdGlvbi9Db21wb3NpdGVBbmltYXRpb24uY3BwIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9hbmltYXRpb24vQ29tcG9zaXRlQW5pbWF0aW9uLmNwcAppbmRl
eCAzMGI3YjNiOGIyYy4uZDFkYTQxN2E0NTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvYW5pbWF0aW9uL0NvbXBvc2l0ZUFuaW1hdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9hbmltYXRpb24vQ29tcG9zaXRlQW5pbWF0aW9uLmNwcApAQCAtOTQsNyArOTQsNyBAQCB2
b2lkIENvbXBvc2l0ZUFuaW1hdGlvbjo6dXBkYXRlVHJhbnNpdGlvbnMoUmVuZGVyRWxlbWVudCog
cmVuZGVyZXIsIGNvbnN0IFJlbmRlcgogICAgIGlmICh0YXJnZXRTdHlsZS0+dHJhbnNpdGlvbnMo
KSkgewogICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHRhcmdldFN0eWxlLT50cmFuc2l0
aW9ucygpLT5zaXplKCk7ICsraSkgewogICAgICAgICAgICAgYXV0byYgYW5pbWF0aW9uID0gdGFy
Z2V0U3R5bGUtPnRyYW5zaXRpb25zKCktPmFuaW1hdGlvbihpKTsKLSAgICAgICAgICAgIGJvb2wg
aXNBY3RpdmVUcmFuc2l0aW9uID0gIW1fc3VzcGVuZGVkICYmIChhbmltYXRpb24uZHVyYXRpb24o
KSB8fCBhbmltYXRpb24uZGVsYXkoKSA+IDApOworICAgICAgICAgICAgYm9vbCBpc0FjdGl2ZVRy
YW5zaXRpb24gPSBhbmltYXRpb24uZHVyYXRpb24oKSB8fCBhbmltYXRpb24uZGVsYXkoKSA+IDA7
CiAKICAgICAgICAgICAgIEFuaW1hdGlvbjo6QW5pbWF0aW9uTW9kZSBtb2RlID0gYW5pbWF0aW9u
LmFuaW1hdGlvbk1vZGUoKTsKICAgICAgICAgICAgIGlmIChtb2RlID09IEFuaW1hdGlvbjo6QW5p
bWF0ZU5vbmUgfHwgbW9kZSA9PSBBbmltYXRpb246OkFuaW1hdGVVbmtub3duUHJvcGVydHkpCkBA
IC0xNjksNiArMTY5LDkgQEAgdm9pZCBDb21wb3NpdGVBbmltYXRpb246OnVwZGF0ZVRyYW5zaXRp
b25zKFJlbmRlckVsZW1lbnQqIHJlbmRlcmVyLCBjb25zdCBSZW5kZXIKICAgICAgICAgICAgICAg
ICBpZiAoIWVxdWFsICYmIGlzQWN0aXZlVHJhbnNpdGlvbikgewogICAgICAgICAgICAgICAgICAg
ICAvLyBBZGQgdGhlIG5ldyB0cmFuc2l0aW9uCiAgICAgICAgICAgICAgICAgICAgIGF1dG8gaW1w
bGljaXRBbmltYXRpb24gPSBJbXBsaWNpdEFuaW1hdGlvbjo6Y3JlYXRlKGFuaW1hdGlvbiwgcHJv
cCwgcmVuZGVyZXIsIHRoaXMsIG1vZGlmaWVkQ3VycmVudFN0eWxlID8gbW9kaWZpZWRDdXJyZW50
U3R5bGUuZ2V0KCkgOiBmcm9tU3R5bGUpOworICAgICAgICAgICAgICAgICAgICBpZiAobV9zdXNw
ZW5kZWQgJiYgaW1wbGljaXRBbmltYXRpb24tPmhhc1N0eWxlKCkpCisgICAgICAgICAgICAgICAg
ICAgICAgICBpbXBsaWNpdEFuaW1hdGlvbi0+dXBkYXRlUGxheVN0YXRlKEFuaW1QbGF5U3RhdGVQ
YXVzZWQpOworCiAgICAgICAgICAgICAgICAgICAgIExPRyhBbmltYXRpb25zLCAiQ3JlYXRlZCBJ
bXBsaWNpdEFuaW1hdGlvbiAlcCBvbiByZW5kZXJlciAlcCBmb3IgcHJvcGVydHkgJXMgZHVyYXRp
b24gJS4yZiBkZWxheSAlLjJmIiwgaW1wbGljaXRBbmltYXRpb24ucHRyKCksIHJlbmRlcmVyLCBn
ZXRQcm9wZXJ0eU5hbWUocHJvcCksIGFuaW1hdGlvbi5kdXJhdGlvbigpLCBhbmltYXRpb24uZGVs
YXkoKSk7CiAgICAgICAgICAgICAgICAgICAgIG1fdHJhbnNpdGlvbnMuc2V0KHByb3AsIFdURk1v
dmUoaW1wbGljaXRBbmltYXRpb24pKTsKICAgICAgICAgICAgICAgICB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL2FuaW1hdGlvbi9JbXBsaWNpdEFuaW1hdGlvbi5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL2FuaW1hdGlvbi9JbXBsaWNpdEFuaW1hdGlvbi5jcHAKaW5kZXggMTM5
NzZhZjcxNjMuLmVjZTkyMTM1N2E3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2Fu
aW1hdGlvbi9JbXBsaWNpdEFuaW1hdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9h
bmltYXRpb24vSW1wbGljaXRBbmltYXRpb24uY3BwCkBAIC02MSw3ICs2MSw3IEBAIGJvb2wgSW1w
bGljaXRBbmltYXRpb246OnNob3VsZFNlbmRFdmVudEZvckxpc3RlbmVyKERvY3VtZW50OjpMaXN0
ZW5lclR5cGUgaW5MaXN0CiAgICAgcmV0dXJuIG1fb2JqZWN0LT5kb2N1bWVudCgpLmhhc0xpc3Rl
bmVyVHlwZShpbkxpc3RlbmVyVHlwZSk7CiB9CiAKLWJvb2wgSW1wbGljaXRBbmltYXRpb246OmFu
aW1hdGUoQ29tcG9zaXRlQW5pbWF0aW9uKiwgUmVuZGVyRWxlbWVudCosIGNvbnN0IFJlbmRlclN0
eWxlKiwgY29uc3QgUmVuZGVyU3R5bGUqIHRhcmdldFN0eWxlLCBzdGQ6OnVuaXF1ZV9wdHI8UmVu
ZGVyU3R5bGU+JiBhbmltYXRlZFN0eWxlLCBib29sJiBkaWRCbGVuZFN0eWxlKQorYm9vbCBJbXBs
aWNpdEFuaW1hdGlvbjo6YW5pbWF0ZShDb21wb3NpdGVBbmltYXRpb24qIGNvbXBvc2l0ZUFuaW1h
dGlvbiwgUmVuZGVyRWxlbWVudCosIGNvbnN0IFJlbmRlclN0eWxlKiwgY29uc3QgUmVuZGVyU3R5
bGUqIHRhcmdldFN0eWxlLCBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+JiBhbmltYXRlZFN0
eWxlLCBib29sJiBkaWRCbGVuZFN0eWxlKQogewogICAgIC8vIElmIHdlIGdldCB0aGlzIGZhciBh
bmQgdGhlIGFuaW1hdGlvbiBpcyBkb25lLCBpdCBtZWFucyB3ZSBhcmUgY2xlYW5pbmcgdXAgYSBq
dXN0IGZpbmlzaGVkIGFuaW1hdGlvbi4KICAgICAvLyBTbyBqdXN0IHJldHVybi4gRXZlcnl0aGlu
ZyBpcyBhbHJlYWR5IGFsbCBjbGVhbmVkIHVwLgpAQCAtNzIsNyArNzIsNyBAQCBib29sIEltcGxp
Y2l0QW5pbWF0aW9uOjphbmltYXRlKENvbXBvc2l0ZUFuaW1hdGlvbiosIFJlbmRlckVsZW1lbnQq
LCBjb25zdCBSZW5kZQogCiAgICAgLy8gUmVzZXQgdG8gc3RhcnQgdGhlIHRyYW5zaXRpb24gaWYg
d2UgYXJlIG5ldwogICAgIGlmIChpc05ldygpKQotICAgICAgICByZXNldCh0YXJnZXRTdHlsZSk7
CisgICAgICAgIHJlc2V0KHRhcmdldFN0eWxlLCBjb21wb3NpdGVBbmltYXRpb24pOwogCiAgICAg
Ly8gUnVuIGEgY3ljbGUgb2YgYW5pbWF0aW9uLgogICAgIC8vIFdlIGtub3cgd2Ugd2lsbCBuZWVk
IGEgbmV3IHJlbmRlciBzdHlsZSwgc28gbWFrZSBvbmUgaWYgbmVlZGVkCkBAIC0xOTksNyArMTk5
LDcgQEAgYm9vbCBJbXBsaWNpdEFuaW1hdGlvbjo6c2VuZFRyYW5zaXRpb25FdmVudChjb25zdCBB
dG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgZG91YmwKICAgICByZXR1cm4gZmFsc2U7IC8vIERpZG4n
dCBkaXNwYXRjaCBhbiBldmVudAogfQogCi12b2lkIEltcGxpY2l0QW5pbWF0aW9uOjpyZXNldChj
b25zdCBSZW5kZXJTdHlsZSogdG8pCit2b2lkIEltcGxpY2l0QW5pbWF0aW9uOjpyZXNldChjb25z
dCBSZW5kZXJTdHlsZSogdG8sIENvbXBvc2l0ZUFuaW1hdGlvbiogY29tcG9zaXRlQW5pbWF0aW9u
KQogewogICAgIEFTU0VSVCh0byk7CiAgICAgQVNTRVJUKG1fZnJvbVN0eWxlKTsKQEAgLTIxMSw3
ICsyMTEsNyBAQCB2b2lkIEltcGxpY2l0QW5pbWF0aW9uOjpyZXNldChjb25zdCBSZW5kZXJTdHls
ZSogdG8pCiAKICAgICAvLyBSZXN0YXJ0IHRoZSB0cmFuc2l0aW9uCiAgICAgaWYgKG1fZnJvbVN0
eWxlICYmIG1fdG9TdHlsZSkKLSAgICAgICAgdXBkYXRlU3RhdGVNYWNoaW5lKEFuaW1hdGlvblN0
YXRlSW5wdXQ6OlJlc3RhcnRBbmltYXRpb24sIC0xKTsKKyAgICAgICAgdXBkYXRlU3RhdGVNYWNo
aW5lKGNvbXBvc2l0ZUFuaW1hdGlvbi0+aXNTdXNwZW5kZWQoKSA/IEFuaW1hdGlvblN0YXRlSW5w
dXQ6OlBsYXlTdGF0ZVBhdXNlZCA6IEFuaW1hdGlvblN0YXRlSW5wdXQ6OlJlc3RhcnRBbmltYXRp
b24sIC0xKTsKICAgICAgICAgCiAgICAgLy8gc2V0IHRoZSB0cmFuc2Zvcm0gYW5pbWF0aW9uIGxp
c3QKICAgICB2YWxpZGF0ZVRyYW5zZm9ybUZ1bmN0aW9uTGlzdCgpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGFnZS9hbmltYXRpb24vSW1wbGljaXRBbmltYXRpb24uaCBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvYW5pbWF0aW9uL0ltcGxpY2l0QW5pbWF0aW9uLmgKaW5kZXggOGUxNzE5NThk
MTQuLmVkZDZkZDQyYjBhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2FuaW1hdGlv
bi9JbXBsaWNpdEFuaW1hdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvYW5pbWF0aW9u
L0ltcGxpY2l0QW5pbWF0aW9uLmgKQEAgLTU1LDcgKzU1LDcgQEAgcHVibGljOgogCiAgICAgYm9v
bCBhbmltYXRlKENvbXBvc2l0ZUFuaW1hdGlvbiosIFJlbmRlckVsZW1lbnQqLCBjb25zdCBSZW5k
ZXJTdHlsZSogY3VycmVudFN0eWxlLCBjb25zdCBSZW5kZXJTdHlsZSogdGFyZ2V0U3R5bGUsIHN0
ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4mIGFuaW1hdGVkU3R5bGUsIGJvb2wmIGRpZEJsZW5k
U3R5bGUpIG92ZXJyaWRlOwogICAgIHZvaWQgZ2V0QW5pbWF0ZWRTdHlsZShzdGQ6OnVuaXF1ZV9w
dHI8UmVuZGVyU3R5bGU+JiBhbmltYXRlZFN0eWxlKSBvdmVycmlkZTsKLSAgICB2b2lkIHJlc2V0
KGNvbnN0IFJlbmRlclN0eWxlKiB0byk7CisgICAgdm9pZCByZXNldChjb25zdCBSZW5kZXJTdHls
ZSogdG8sIENvbXBvc2l0ZUFuaW1hdGlvbiopOwogCiAgICAgYm9vbCBjb21wdXRlRXh0ZW50T2ZU
cmFuc2Zvcm1BbmltYXRpb24oTGF5b3V0UmVjdCYpIGNvbnN0IG92ZXJyaWRlOwogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>312449</attachid>
            <date>2017-06-09 10:18:54 -0700</date>
            <delta_ts>2017-06-09 10:23:33 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-173166-20170609101853.patch</filename>
            <type>text/plain</type>
            <size>10230</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjE3OTU2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMGNlMGI5ZWYyNDc4NWUy
ZjA0M2E4NGU1YjZmNGViNTkyZjUwNjEyNi4uYzA2NjVlZmYxNjgzNzA5NzQ4ZjEwNmZkNzFmZDJl
OTM5MTUwMWViMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM2IEBACisyMDE3LTA2LTA5ICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgQ1NTIHRyYW5zaXRpb25zIGFk
ZGVkIHdoaWxlIHBhZ2UgaXMgbm90IHZpc2libGUgZG8gbm90IHN0YXJ0IHdoZW4gdGhlIHBhZ2Ug
YmVjb21lcyB2aXNpYmxlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xNzMxNjYKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzMyMjUwMzUxPgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIENTUyB0cmFuc2l0aW9u
cyBhZGRlZCB3aGlsZSBwYWdlIGlzIG5vdCB2aXNpYmxlIHdvdWxkIG5vdCBzdGFydCB3aGVuIHRo
ZSBwYWdlIGJlY29tZXMKKyAgICAgICAgdmlzaWJsZS4gVGhlIGlzc3VlIHdhcyB0aGF0IHdoZW4g
Q29tcG9zaXRlQW5pbWF0aW9uOjp1cGRhdGVUcmFuc2l0aW9ucygpIHdhcyBjYWxsZWQKKyAgICAg
ICAgd2hpbGUgdGhlIHBhZ2UgaXMgaGlkZGVuIChhbmQgYW5pbWF0aW9ucyBhcmUgdGhlcmVmb3Jl
IHN1c3BlbmRlZCksIGl0IHdvdWxkIG5vdAorICAgICAgICBwb3B1bGF0ZSBtX3RyYW5zYXRpb25z
IHdpdGggSW1wbGljaXRBbmltYXRpb24gb2JqZWN0cy4gV2Ugd291bGQgdGhlcmVmb3JlIGhhdmUg
bGF0ZXIKKyAgICAgICAgbm8gdHJhbnNpdGlvbnMgdG8gcmVzdW1lIHdoZW4gdGhlIHBhZ2UgYmVj
b21lcyB2aXNpYmxlIGxhdGVyIG9uLiBUaGlzIHBhdGNoIHVwZGF0ZXMKKyAgICAgICAgQ29tcG9z
aXRlQW5pbWF0aW9uOjp1cGRhdGVUcmFuc2l0aW9ucygpIHRvIHByb3Blcmx5IHBvcHVsYXRlIG1f
dHJhbnNpdGlvbnMgYW5kIGluc3RlYWQKKyAgICAgICAgcGF1c2UgdGhlIEltcGxpY2l0QW5pbWF0
aW9uIGl0IGNyZWF0ZXMgaWYgYW5pbWF0aW9ucyBhcmUgY3VycmVudGx5IHN1c3BlbmRlZC4gVGhp
cworICAgICAgICBiZWhhdmlvciBpcyBtb3JlIGNvbnNpc3RlbnQgd2l0aCB0aGUgb25lIG9mIENv
bXBvc2l0ZUFuaW1hdGlvbjo6dXBkYXRlS2V5ZnJhbWVBbmltYXRpb25zKCkuCisKKyAgICAgICAg
SSBhbHNvIG5lZWRlZCB0byB1cGRhdGUgSW1wbGljaXRBbmltYXRpb246OmFuaW1hdGUoKSB0byBu
b3QgcmVzdGFydCBhIHBhdXNlZCBhbmltYXRpb24KKyAgICAgICAgaWYgdGhlIGFuaW1hdGlvbiBp
cyBjdXJyZW50bHkgcGF1c2VkLiBUaGlzIGlzIHNpbWlsYXIgdG8gd2hhdCBpcyBkb25lIGluCisg
ICAgICAgIEtleWZyYW1lQW5pbWF0aW9uOjphbmltYXRlKCkuIFdpdGhvdXQgdGhpcywgdGhlIHBh
dXNlZCBJbXBsaWNpdEFuaW1hdGlvbiB3ZSBhZGQgdG8KKyAgICAgICAgbV90cmFuc2l0aW9uIHdv
dWxkIGluY29ycmVjdGx5IGdldCB1bnBhdXNlZCB3aGlsZSB0aGUgcGFnZSBpcyBzdGlsbCBoaWRk
ZW4gYW5kIHRoZQorICAgICAgICBhbmltYXRpb25zIGFyZSBzdGlsbCBzdXBwb3NlZCB0byBiZSBz
dXNwZW5kZWQuIFRoaXMgaXNzdWUgd2FzIHNob3dpbmcgd2hlbiBydW5uaW5nIHRoZQorICAgICAg
ICB0ZXN0IEkgYW0gYWRkaW5nIGluIHRoaXMgcGF0Y2guCisKKyAgICAgICAgVGVzdDogZmFzdC9h
bmltYXRpb24vY3NzLWFuaW1hdGlvbi1yZXN1bWluZy13aGVuLXZpc2libGUuaHRtbAorCisgICAg
ICAgICogcGFnZS9hbmltYXRpb24vQ29tcG9zaXRlQW5pbWF0aW9uLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkNvbXBvc2l0ZUFuaW1hdGlvbjo6dXBkYXRlVHJhbnNpdGlvbnMpOgorICAgICAgICAq
IHBhZ2UvYW5pbWF0aW9uL0ltcGxpY2l0QW5pbWF0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkltcGxpY2l0QW5pbWF0aW9uOjphbmltYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkltcGxpY2l0
QW5pbWF0aW9uOjpyZXNldCk6CisgICAgICAgICogcGFnZS9hbmltYXRpb24vSW1wbGljaXRBbmlt
YXRpb24uaDoKKwogMjAxNy0wNi0wOCAgTXlsZXMgQy4gTWF4ZmllbGQgIDxtbWF4ZmllbGRAYXBw
bGUuY29tPgogCiAgICAgICAgIFtDb2NvYV0gRXhwYW5kIHN5c3RlbS11aSB0byBpbmNsdWRlIGV2
ZXJ5IGl0ZW0gaW4gdGhlIENvcmUgVGV4dCBjYXNjYWRlIGxpc3QKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvYW5pbWF0aW9uL0NvbXBvc2l0ZUFuaW1hdGlvbi5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL2FuaW1hdGlvbi9Db21wb3NpdGVBbmltYXRpb24uY3BwCmluZGV4IDMwYjdi
M2I4YjJjY2RjMzE0ODY4NjMwYzJlNDZkZjlhNWNlNjRkNzUuLmQxZGE0MTdhNDU0NmE3NDhkNmY0
OGI4YzYzZWFjYzY4NWFhMTMzZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvYW5p
bWF0aW9uL0NvbXBvc2l0ZUFuaW1hdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9h
bmltYXRpb24vQ29tcG9zaXRlQW5pbWF0aW9uLmNwcApAQCAtOTQsNyArOTQsNyBAQCB2b2lkIENv
bXBvc2l0ZUFuaW1hdGlvbjo6dXBkYXRlVHJhbnNpdGlvbnMoUmVuZGVyRWxlbWVudCogcmVuZGVy
ZXIsIGNvbnN0IFJlbmRlcgogICAgIGlmICh0YXJnZXRTdHlsZS0+dHJhbnNpdGlvbnMoKSkgewog
ICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHRhcmdldFN0eWxlLT50cmFuc2l0aW9ucygp
LT5zaXplKCk7ICsraSkgewogICAgICAgICAgICAgYXV0byYgYW5pbWF0aW9uID0gdGFyZ2V0U3R5
bGUtPnRyYW5zaXRpb25zKCktPmFuaW1hdGlvbihpKTsKLSAgICAgICAgICAgIGJvb2wgaXNBY3Rp
dmVUcmFuc2l0aW9uID0gIW1fc3VzcGVuZGVkICYmIChhbmltYXRpb24uZHVyYXRpb24oKSB8fCBh
bmltYXRpb24uZGVsYXkoKSA+IDApOworICAgICAgICAgICAgYm9vbCBpc0FjdGl2ZVRyYW5zaXRp
b24gPSBhbmltYXRpb24uZHVyYXRpb24oKSB8fCBhbmltYXRpb24uZGVsYXkoKSA+IDA7CiAKICAg
ICAgICAgICAgIEFuaW1hdGlvbjo6QW5pbWF0aW9uTW9kZSBtb2RlID0gYW5pbWF0aW9uLmFuaW1h
dGlvbk1vZGUoKTsKICAgICAgICAgICAgIGlmIChtb2RlID09IEFuaW1hdGlvbjo6QW5pbWF0ZU5v
bmUgfHwgbW9kZSA9PSBBbmltYXRpb246OkFuaW1hdGVVbmtub3duUHJvcGVydHkpCkBAIC0xNjks
NiArMTY5LDkgQEAgdm9pZCBDb21wb3NpdGVBbmltYXRpb246OnVwZGF0ZVRyYW5zaXRpb25zKFJl
bmRlckVsZW1lbnQqIHJlbmRlcmVyLCBjb25zdCBSZW5kZXIKICAgICAgICAgICAgICAgICBpZiAo
IWVxdWFsICYmIGlzQWN0aXZlVHJhbnNpdGlvbikgewogICAgICAgICAgICAgICAgICAgICAvLyBB
ZGQgdGhlIG5ldyB0cmFuc2l0aW9uCiAgICAgICAgICAgICAgICAgICAgIGF1dG8gaW1wbGljaXRB
bmltYXRpb24gPSBJbXBsaWNpdEFuaW1hdGlvbjo6Y3JlYXRlKGFuaW1hdGlvbiwgcHJvcCwgcmVu
ZGVyZXIsIHRoaXMsIG1vZGlmaWVkQ3VycmVudFN0eWxlID8gbW9kaWZpZWRDdXJyZW50U3R5bGUu
Z2V0KCkgOiBmcm9tU3R5bGUpOworICAgICAgICAgICAgICAgICAgICBpZiAobV9zdXNwZW5kZWQg
JiYgaW1wbGljaXRBbmltYXRpb24tPmhhc1N0eWxlKCkpCisgICAgICAgICAgICAgICAgICAgICAg
ICBpbXBsaWNpdEFuaW1hdGlvbi0+dXBkYXRlUGxheVN0YXRlKEFuaW1QbGF5U3RhdGVQYXVzZWQp
OworCiAgICAgICAgICAgICAgICAgICAgIExPRyhBbmltYXRpb25zLCAiQ3JlYXRlZCBJbXBsaWNp
dEFuaW1hdGlvbiAlcCBvbiByZW5kZXJlciAlcCBmb3IgcHJvcGVydHkgJXMgZHVyYXRpb24gJS4y
ZiBkZWxheSAlLjJmIiwgaW1wbGljaXRBbmltYXRpb24ucHRyKCksIHJlbmRlcmVyLCBnZXRQcm9w
ZXJ0eU5hbWUocHJvcCksIGFuaW1hdGlvbi5kdXJhdGlvbigpLCBhbmltYXRpb24uZGVsYXkoKSk7
CiAgICAgICAgICAgICAgICAgICAgIG1fdHJhbnNpdGlvbnMuc2V0KHByb3AsIFdURk1vdmUoaW1w
bGljaXRBbmltYXRpb24pKTsKICAgICAgICAgICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL2FuaW1hdGlvbi9JbXBsaWNpdEFuaW1hdGlvbi5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL2FuaW1hdGlvbi9JbXBsaWNpdEFuaW1hdGlvbi5jcHAKaW5kZXggMTM5NzZhZjcx
NjM2NWRkMGYzNjg0YWYwNjdjNzljM2RlNTQ4YzMxOS4uZWNlOTIxMzU3YTdkMWFjMDU0YTVkYTY0
NzFkODkyZjFjMzEyNjM3OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9hbmltYXRp
b24vSW1wbGljaXRBbmltYXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvYW5pbWF0
aW9uL0ltcGxpY2l0QW5pbWF0aW9uLmNwcApAQCAtNjEsNyArNjEsNyBAQCBib29sIEltcGxpY2l0
QW5pbWF0aW9uOjpzaG91bGRTZW5kRXZlbnRGb3JMaXN0ZW5lcihEb2N1bWVudDo6TGlzdGVuZXJU
eXBlIGluTGlzdAogICAgIHJldHVybiBtX29iamVjdC0+ZG9jdW1lbnQoKS5oYXNMaXN0ZW5lclR5
cGUoaW5MaXN0ZW5lclR5cGUpOwogfQogCi1ib29sIEltcGxpY2l0QW5pbWF0aW9uOjphbmltYXRl
KENvbXBvc2l0ZUFuaW1hdGlvbiosIFJlbmRlckVsZW1lbnQqLCBjb25zdCBSZW5kZXJTdHlsZSos
IGNvbnN0IFJlbmRlclN0eWxlKiB0YXJnZXRTdHlsZSwgc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0
eWxlPiYgYW5pbWF0ZWRTdHlsZSwgYm9vbCYgZGlkQmxlbmRTdHlsZSkKK2Jvb2wgSW1wbGljaXRB
bmltYXRpb246OmFuaW1hdGUoQ29tcG9zaXRlQW5pbWF0aW9uKiBjb21wb3NpdGVBbmltYXRpb24s
IFJlbmRlckVsZW1lbnQqLCBjb25zdCBSZW5kZXJTdHlsZSosIGNvbnN0IFJlbmRlclN0eWxlKiB0
YXJnZXRTdHlsZSwgc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiYgYW5pbWF0ZWRTdHlsZSwg
Ym9vbCYgZGlkQmxlbmRTdHlsZSkKIHsKICAgICAvLyBJZiB3ZSBnZXQgdGhpcyBmYXIgYW5kIHRo
ZSBhbmltYXRpb24gaXMgZG9uZSwgaXQgbWVhbnMgd2UgYXJlIGNsZWFuaW5nIHVwIGEganVzdCBm
aW5pc2hlZCBhbmltYXRpb24uCiAgICAgLy8gU28ganVzdCByZXR1cm4uIEV2ZXJ5dGhpbmcgaXMg
YWxyZWFkeSBhbGwgY2xlYW5lZCB1cC4KQEAgLTcyLDcgKzcyLDcgQEAgYm9vbCBJbXBsaWNpdEFu
aW1hdGlvbjo6YW5pbWF0ZShDb21wb3NpdGVBbmltYXRpb24qLCBSZW5kZXJFbGVtZW50KiwgY29u
c3QgUmVuZGUKIAogICAgIC8vIFJlc2V0IHRvIHN0YXJ0IHRoZSB0cmFuc2l0aW9uIGlmIHdlIGFy
ZSBuZXcKICAgICBpZiAoaXNOZXcoKSkKLSAgICAgICAgcmVzZXQodGFyZ2V0U3R5bGUpOworICAg
ICAgICByZXNldCh0YXJnZXRTdHlsZSwgY29tcG9zaXRlQW5pbWF0aW9uKTsKIAogICAgIC8vIFJ1
biBhIGN5Y2xlIG9mIGFuaW1hdGlvbi4KICAgICAvLyBXZSBrbm93IHdlIHdpbGwgbmVlZCBhIG5l
dyByZW5kZXIgc3R5bGUsIHNvIG1ha2Ugb25lIGlmIG5lZWRlZApAQCAtMTk5LDcgKzE5OSw3IEBA
IGJvb2wgSW1wbGljaXRBbmltYXRpb246OnNlbmRUcmFuc2l0aW9uRXZlbnQoY29uc3QgQXRvbWlj
U3RyaW5nJiBldmVudFR5cGUsIGRvdWJsCiAgICAgcmV0dXJuIGZhbHNlOyAvLyBEaWRuJ3QgZGlz
cGF0Y2ggYW4gZXZlbnQKIH0KIAotdm9pZCBJbXBsaWNpdEFuaW1hdGlvbjo6cmVzZXQoY29uc3Qg
UmVuZGVyU3R5bGUqIHRvKQordm9pZCBJbXBsaWNpdEFuaW1hdGlvbjo6cmVzZXQoY29uc3QgUmVu
ZGVyU3R5bGUqIHRvLCBDb21wb3NpdGVBbmltYXRpb24qIGNvbXBvc2l0ZUFuaW1hdGlvbikKIHsK
ICAgICBBU1NFUlQodG8pOwogICAgIEFTU0VSVChtX2Zyb21TdHlsZSk7CkBAIC0yMTEsNyArMjEx
LDcgQEAgdm9pZCBJbXBsaWNpdEFuaW1hdGlvbjo6cmVzZXQoY29uc3QgUmVuZGVyU3R5bGUqIHRv
KQogCiAgICAgLy8gUmVzdGFydCB0aGUgdHJhbnNpdGlvbgogICAgIGlmIChtX2Zyb21TdHlsZSAm
JiBtX3RvU3R5bGUpCi0gICAgICAgIHVwZGF0ZVN0YXRlTWFjaGluZShBbmltYXRpb25TdGF0ZUlu
cHV0OjpSZXN0YXJ0QW5pbWF0aW9uLCAtMSk7CisgICAgICAgIHVwZGF0ZVN0YXRlTWFjaGluZShj
b21wb3NpdGVBbmltYXRpb24tPmlzU3VzcGVuZGVkKCkgPyBBbmltYXRpb25TdGF0ZUlucHV0OjpQ
bGF5U3RhdGVQYXVzZWQgOiBBbmltYXRpb25TdGF0ZUlucHV0OjpSZXN0YXJ0QW5pbWF0aW9uLCAt
MSk7CiAgICAgICAgIAogICAgIC8vIHNldCB0aGUgdHJhbnNmb3JtIGFuaW1hdGlvbiBsaXN0CiAg
ICAgdmFsaWRhdGVUcmFuc2Zvcm1GdW5jdGlvbkxpc3QoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvYW5pbWF0aW9uL0ltcGxpY2l0QW5pbWF0aW9uLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL2FuaW1hdGlvbi9JbXBsaWNpdEFuaW1hdGlvbi5oCmluZGV4IDhlMTcxOTU4ZDE0ZDNl
OTk3OTk2OThiYmY0NWYzZjc1MTI5Njg0NWIuLmVkZDZkZDQyYjBhNjdiOGYwNTI4ZjIwODBlZDE3
YmI3NTY5NDNlZGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvYW5pbWF0aW9uL0lt
cGxpY2l0QW5pbWF0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9hbmltYXRpb24vSW1w
bGljaXRBbmltYXRpb24uaApAQCAtNTUsNyArNTUsNyBAQCBwdWJsaWM6CiAKICAgICBib29sIGFu
aW1hdGUoQ29tcG9zaXRlQW5pbWF0aW9uKiwgUmVuZGVyRWxlbWVudCosIGNvbnN0IFJlbmRlclN0
eWxlKiBjdXJyZW50U3R5bGUsIGNvbnN0IFJlbmRlclN0eWxlKiB0YXJnZXRTdHlsZSwgc3RkOjp1
bmlxdWVfcHRyPFJlbmRlclN0eWxlPiYgYW5pbWF0ZWRTdHlsZSwgYm9vbCYgZGlkQmxlbmRTdHls
ZSkgb3ZlcnJpZGU7CiAgICAgdm9pZCBnZXRBbmltYXRlZFN0eWxlKHN0ZDo6dW5pcXVlX3B0cjxS
ZW5kZXJTdHlsZT4mIGFuaW1hdGVkU3R5bGUpIG92ZXJyaWRlOwotICAgIHZvaWQgcmVzZXQoY29u
c3QgUmVuZGVyU3R5bGUqIHRvKTsKKyAgICB2b2lkIHJlc2V0KGNvbnN0IFJlbmRlclN0eWxlKiB0
bywgQ29tcG9zaXRlQW5pbWF0aW9uKik7CiAKICAgICBib29sIGNvbXB1dGVFeHRlbnRPZlRyYW5z
Zm9ybUFuaW1hdGlvbihMYXlvdXRSZWN0JikgY29uc3Qgb3ZlcnJpZGU7CiAKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCBkODI5
ODZiYWU5YzdiMzllN2FjZjRlNTFmMGQ1YTIzOGJmMDEyYmUyLi42OGNiYTIzNzYzY2ViZTc3MGJk
NDFiMTNjMTk2MTFmMzY2ODVmMzU1IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cK
KysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTctMDYtMDkg
IENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBDU1MgdHJhbnNpdGlv
bnMgYWRkZWQgd2hpbGUgcGFnZSBpcyBub3QgdmlzaWJsZSBkbyBub3Qgc3RhcnQgd2hlbiB0aGUg
cGFnZSBiZWNvbWVzIHZpc2libGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTE3MzE2NgorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMzIyNTAzNTE+CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIGxheW91
dCB0ZXN0IGNvdmVyYWdlLgorCisgICAgICAgICogZmFzdC9hbmltYXRpb24vY3NzLWFuaW1hdGlv
bi1yZXN1bWluZy13aGVuLXZpc2libGUtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBm
YXN0L2FuaW1hdGlvbi9jc3MtYW5pbWF0aW9uLXJlc3VtaW5nLXdoZW4tdmlzaWJsZS5odG1sOiBB
ZGRlZC4KKwogMjAxNy0wNi0wOCAgTXlsZXMgQy4gTWF4ZmllbGQgIDxtbWF4ZmllbGRAYXBwbGUu
Y29tPgogCiAgICAgICAgIFtDb2NvYV0gRXhwYW5kIHN5c3RlbS11aSB0byBpbmNsdWRlIGV2ZXJ5
IGl0ZW0gaW4gdGhlIENvcmUgVGV4dCBjYXNjYWRlIGxpc3QKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2Zhc3QvYW5pbWF0aW9uL2Nzcy1hbmltYXRpb24tcmVzdW1pbmctd2hlbi12aXNpYmxlLWV4
cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvYW5pbWF0aW9uL2Nzcy1hbmltYXRpb24tcmVz
dW1pbmctd2hlbi12aXNpYmxlLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hNTI0YmQwZTAzMDAw
NDBhNGRmYzkzYmE2YjExMWMwYzZhZTYyYTk4Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvZmFzdC9hbmltYXRpb24vY3NzLWFuaW1hdGlvbi1yZXN1bWluZy13aGVuLXZpc2libGUtZXhw
ZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTIgQEAKK1Rlc3RzIHRoYXQgQ1NTIGFuaW1hdGlvbnMgdGhh
dCBhcmUgY3JlYXRlZCB3aGlsZSB0aGUgcGFnZSBpcyBoaWRkZW4gYXJlIHByb3Blcmx5IHJlc3Vt
ZWQgd2hlbiB0aGUgcGFnZSBiZWNvbWVzIHZpc2libGUuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxs
IHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBM
RVRFIi4KKworCitQQVNTIGludGVybmFscy5hbmltYXRpb25zQXJlU3VzcGVuZGVkKCkgaXMgdHJ1
ZQorUEFTUyBpbnRlcm5hbHMubnVtYmVyT2ZBY3RpdmVBbmltYXRpb25zKCkgaXMgMAorUEFTUyBp
bnRlcm5hbHMubnVtYmVyT2ZBY3RpdmVBbmltYXRpb25zKCkgYmVjYW1lIDEKK1BBU1Mgc3VjY2Vz
c2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorVEVTVApkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvZmFzdC9hbmltYXRpb24vY3NzLWFuaW1hdGlvbi1yZXN1bWluZy13aGVuLXZp
c2libGUuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvYW5pbWF0aW9uL2Nzcy1hbmltYXRpb24tcmVz
dW1pbmctd2hlbi12aXNpYmxlLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzMwYmY4NGQ4MGNhOTg0YzRjNmM4
NzQwYzBiOGU4MTE1OTNhOTUzYQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3Qv
YW5pbWF0aW9uL2Nzcy1hbmltYXRpb24tcmVzdW1pbmctd2hlbi12aXNpYmxlLmh0bWwKQEAgLTAs
MCArMSw0MCBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPHN0eWxlPgorI3Rl
c3REaXYgeworICAgIHRyYW5zaXRpb246IHRyYW5zZm9ybSAzMHMgbGluZWFyLCBjb2xvciAycywg
bGVmdCA0cyBsaW5lYXIsIHRvcCA0cyBsaW5lYXI7CisgICAgcG9zaXRpb246IGFic29sdXRlOwor
fQorPC9zdHlsZT4KKzwvaGVhZD4KKzxib2R5PgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNl
cy9qcy10ZXN0LmpzIj48L3NjcmlwdD4KKzxkaXYgaWQ9InRlc3REaXYiPlRFU1Q8L2Rpdj4KKzxz
Y3JpcHQ+CitkZXNjcmlwdGlvbigiVGVzdHMgdGhhdCBDU1MgYW5pbWF0aW9ucyB0aGF0IGFyZSBj
cmVhdGVkIHdoaWxlIHRoZSBwYWdlIGlzIGhpZGRlbiBhcmUgcHJvcGVybHkgcmVzdW1lZCB3aGVu
IHRoZSBwYWdlIGJlY29tZXMgdmlzaWJsZS4iKTsKK2pzVGVzdElzQXN5bmMgPSB0cnVlOworCitm
dW5jdGlvbiByZWdpc3RlckFuaW1hdGlvbigpCit7CisgICAgdGVzdERpdi5zdHlsZS50cmFuc2Zv
cm0gPSAicm90YXRlKDE3MGRlZykgc2NhbGUoMC4yNzgxOTQxNDE0MzQ3Mjg0KSI7Cit9CisKK29u
bG9hZCA9IGZ1bmN0aW9uKCkgeworICAgIGludGVybmFscy5zdXNwZW5kQW5pbWF0aW9ucygpOwor
CisgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsKKyAgICAgICAgcmVnaXN0ZXJBbmltYXRpb24o
KTsKKyAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsKKyAgICAgICAgICAgIHNob3VsZEJl
VHJ1ZSgiaW50ZXJuYWxzLmFuaW1hdGlvbnNBcmVTdXNwZW5kZWQoKSIpOworICAgICAgICAgICAg
c2hvdWxkQmUoImludGVybmFscy5udW1iZXJPZkFjdGl2ZUFuaW1hdGlvbnMoKSIsICIwIik7CisK
KyAgICAgICAgICAgIGludGVybmFscy5yZXN1bWVBbmltYXRpb25zKCk7CisgICAgICAgICAgICBz
aG91bGRCZWNvbWVFcXVhbCgiaW50ZXJuYWxzLm51bWJlck9mQWN0aXZlQW5pbWF0aW9ucygpIiwg
IjEiLCBmaW5pc2hKU1Rlc3QpOworICAgICAgICB9LCA1MDApOworICAgIH0sIDApOworfQorCis8
L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>312452</attachid>
            <date>2017-06-09 10:27:01 -0700</date>
            <delta_ts>2017-06-09 10:52:45 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-173166-20170609102701.patch</filename>
            <type>text/plain</type>
            <size>16773</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjE3OTU2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMGNlMGI5ZWYyNDc4NWUy
ZjA0M2E4NGU1YjZmNGViNTkyZjUwNjEyNi4uYzA2NjVlZmYxNjgzNzA5NzQ4ZjEwNmZkNzFmZDJl
OTM5MTUwMWViMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM2IEBACisyMDE3LTA2LTA5ICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgQ1NTIHRyYW5zaXRpb25zIGFk
ZGVkIHdoaWxlIHBhZ2UgaXMgbm90IHZpc2libGUgZG8gbm90IHN0YXJ0IHdoZW4gdGhlIHBhZ2Ug
YmVjb21lcyB2aXNpYmxlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xNzMxNjYKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzMyMjUwMzUxPgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIENTUyB0cmFuc2l0aW9u
cyBhZGRlZCB3aGlsZSBwYWdlIGlzIG5vdCB2aXNpYmxlIHdvdWxkIG5vdCBzdGFydCB3aGVuIHRo
ZSBwYWdlIGJlY29tZXMKKyAgICAgICAgdmlzaWJsZS4gVGhlIGlzc3VlIHdhcyB0aGF0IHdoZW4g
Q29tcG9zaXRlQW5pbWF0aW9uOjp1cGRhdGVUcmFuc2l0aW9ucygpIHdhcyBjYWxsZWQKKyAgICAg
ICAgd2hpbGUgdGhlIHBhZ2UgaXMgaGlkZGVuIChhbmQgYW5pbWF0aW9ucyBhcmUgdGhlcmVmb3Jl
IHN1c3BlbmRlZCksIGl0IHdvdWxkIG5vdAorICAgICAgICBwb3B1bGF0ZSBtX3RyYW5zYXRpb25z
IHdpdGggSW1wbGljaXRBbmltYXRpb24gb2JqZWN0cy4gV2Ugd291bGQgdGhlcmVmb3JlIGhhdmUg
bGF0ZXIKKyAgICAgICAgbm8gdHJhbnNpdGlvbnMgdG8gcmVzdW1lIHdoZW4gdGhlIHBhZ2UgYmVj
b21lcyB2aXNpYmxlIGxhdGVyIG9uLiBUaGlzIHBhdGNoIHVwZGF0ZXMKKyAgICAgICAgQ29tcG9z
aXRlQW5pbWF0aW9uOjp1cGRhdGVUcmFuc2l0aW9ucygpIHRvIHByb3Blcmx5IHBvcHVsYXRlIG1f
dHJhbnNpdGlvbnMgYW5kIGluc3RlYWQKKyAgICAgICAgcGF1c2UgdGhlIEltcGxpY2l0QW5pbWF0
aW9uIGl0IGNyZWF0ZXMgaWYgYW5pbWF0aW9ucyBhcmUgY3VycmVudGx5IHN1c3BlbmRlZC4gVGhp
cworICAgICAgICBiZWhhdmlvciBpcyBtb3JlIGNvbnNpc3RlbnQgd2l0aCB0aGUgb25lIG9mIENv
bXBvc2l0ZUFuaW1hdGlvbjo6dXBkYXRlS2V5ZnJhbWVBbmltYXRpb25zKCkuCisKKyAgICAgICAg
SSBhbHNvIG5lZWRlZCB0byB1cGRhdGUgSW1wbGljaXRBbmltYXRpb246OmFuaW1hdGUoKSB0byBu
b3QgcmVzdGFydCBhIHBhdXNlZCBhbmltYXRpb24KKyAgICAgICAgaWYgdGhlIGFuaW1hdGlvbiBp
cyBjdXJyZW50bHkgcGF1c2VkLiBUaGlzIGlzIHNpbWlsYXIgdG8gd2hhdCBpcyBkb25lIGluCisg
ICAgICAgIEtleWZyYW1lQW5pbWF0aW9uOjphbmltYXRlKCkuIFdpdGhvdXQgdGhpcywgdGhlIHBh
dXNlZCBJbXBsaWNpdEFuaW1hdGlvbiB3ZSBhZGQgdG8KKyAgICAgICAgbV90cmFuc2l0aW9uIHdv
dWxkIGluY29ycmVjdGx5IGdldCB1bnBhdXNlZCB3aGlsZSB0aGUgcGFnZSBpcyBzdGlsbCBoaWRk
ZW4gYW5kIHRoZQorICAgICAgICBhbmltYXRpb25zIGFyZSBzdGlsbCBzdXBwb3NlZCB0byBiZSBz
dXNwZW5kZWQuIFRoaXMgaXNzdWUgd2FzIHNob3dpbmcgd2hlbiBydW5uaW5nIHRoZQorICAgICAg
ICB0ZXN0IEkgYW0gYWRkaW5nIGluIHRoaXMgcGF0Y2guCisKKyAgICAgICAgVGVzdDogZmFzdC9h
bmltYXRpb24vY3NzLWFuaW1hdGlvbi1yZXN1bWluZy13aGVuLXZpc2libGUuaHRtbAorCisgICAg
ICAgICogcGFnZS9hbmltYXRpb24vQ29tcG9zaXRlQW5pbWF0aW9uLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkNvbXBvc2l0ZUFuaW1hdGlvbjo6dXBkYXRlVHJhbnNpdGlvbnMpOgorICAgICAgICAq
IHBhZ2UvYW5pbWF0aW9uL0ltcGxpY2l0QW5pbWF0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkltcGxpY2l0QW5pbWF0aW9uOjphbmltYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkltcGxpY2l0
QW5pbWF0aW9uOjpyZXNldCk6CisgICAgICAgICogcGFnZS9hbmltYXRpb24vSW1wbGljaXRBbmlt
YXRpb24uaDoKKwogMjAxNy0wNi0wOCAgTXlsZXMgQy4gTWF4ZmllbGQgIDxtbWF4ZmllbGRAYXBw
bGUuY29tPgogCiAgICAgICAgIFtDb2NvYV0gRXhwYW5kIHN5c3RlbS11aSB0byBpbmNsdWRlIGV2
ZXJ5IGl0ZW0gaW4gdGhlIENvcmUgVGV4dCBjYXNjYWRlIGxpc3QKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvYW5pbWF0aW9uL0FuaW1hdGlvbkJhc2UuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvYW5pbWF0aW9uL0FuaW1hdGlvbkJhc2UuaAppbmRleCBjYmViNzQ4MTYxZDg2MjAwZmIw
YzJhMmVlMWZiMzA2MjdiYzczMTM3Li4zYWI1Y2JmZmM5OTQ3ZTEyN2ZkZmEyMDUxNTg1MmU1OGVm
ZDI0ZjZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2FuaW1hdGlvbi9BbmltYXRp
b25CYXNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9hbmltYXRpb24vQW5pbWF0aW9uQmFz
ZS5oCkBAIC0xMzQsNyArMTM0LDcgQEAgcHVibGljOgogICAgIGRvdWJsZSBwcm9ncmVzcyhkb3Vi
bGUgc2NhbGUgPSAxLCBkb3VibGUgb2Zmc2V0ID0gMCwgY29uc3QgVGltaW5nRnVuY3Rpb24qID0g
bnVsbHB0cikgY29uc3Q7CiAKICAgICAvLyBSZXR1cm5zIHRydWUgaWYgdGhlIGFuaW1hdGlvbiBz
dGF0ZSBjaGFuZ2VkLgotICAgIHZpcnR1YWwgYm9vbCBhbmltYXRlKENvbXBvc2l0ZUFuaW1hdGlv
biosIFJlbmRlckVsZW1lbnQqLCBjb25zdCBSZW5kZXJTdHlsZSogLypjdXJyZW50U3R5bGUqLywg
Y29uc3QgUmVuZGVyU3R5bGUqIC8qdGFyZ2V0U3R5bGUqLywgc3RkOjp1bmlxdWVfcHRyPFJlbmRl
clN0eWxlPiYgLyphbmltYXRlZFN0eWxlKi8sIGJvb2wmIGRpZEJsZW5kU3R5bGUpID0gMDsKKyAg
ICB2aXJ0dWFsIGJvb2wgYW5pbWF0ZShDb21wb3NpdGVBbmltYXRpb24mLCBSZW5kZXJFbGVtZW50
KiwgY29uc3QgUmVuZGVyU3R5bGUqIC8qY3VycmVudFN0eWxlKi8sIGNvbnN0IFJlbmRlclN0eWxl
JiAvKnRhcmdldFN0eWxlKi8sIHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4mIC8qYW5pbWF0
ZWRTdHlsZSovLCBib29sJiBkaWRCbGVuZFN0eWxlKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGdl
dEFuaW1hdGVkU3R5bGUoc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiYgLyphbmltYXRlZFN0
eWxlKi8pID0gMDsKIAogICAgIHZpcnR1YWwgYm9vbCBjb21wdXRlRXh0ZW50T2ZUcmFuc2Zvcm1B
bmltYXRpb24oTGF5b3V0UmVjdCYpIGNvbnN0ID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvYW5pbWF0aW9uL0NvbXBvc2l0ZUFuaW1hdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL2FuaW1hdGlvbi9Db21wb3NpdGVBbmltYXRpb24uY3BwCmluZGV4IDMwYjdiM2I4YjJj
Y2RjMzE0ODY4NjMwYzJlNDZkZjlhNWNlNjRkNzUuLmQ4ZTFiMmRiZGFkMjcwOTRiYzM3ZTE1NTky
YzE2NmVhZWU2YTJhNDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvYW5pbWF0aW9u
L0NvbXBvc2l0ZUFuaW1hdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9hbmltYXRp
b24vQ29tcG9zaXRlQW5pbWF0aW9uLmNwcApAQCAtOTQsNyArOTQsNyBAQCB2b2lkIENvbXBvc2l0
ZUFuaW1hdGlvbjo6dXBkYXRlVHJhbnNpdGlvbnMoUmVuZGVyRWxlbWVudCogcmVuZGVyZXIsIGNv
bnN0IFJlbmRlcgogICAgIGlmICh0YXJnZXRTdHlsZS0+dHJhbnNpdGlvbnMoKSkgewogICAgICAg
ICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHRhcmdldFN0eWxlLT50cmFuc2l0aW9ucygpLT5zaXpl
KCk7ICsraSkgewogICAgICAgICAgICAgYXV0byYgYW5pbWF0aW9uID0gdGFyZ2V0U3R5bGUtPnRy
YW5zaXRpb25zKCktPmFuaW1hdGlvbihpKTsKLSAgICAgICAgICAgIGJvb2wgaXNBY3RpdmVUcmFu
c2l0aW9uID0gIW1fc3VzcGVuZGVkICYmIChhbmltYXRpb24uZHVyYXRpb24oKSB8fCBhbmltYXRp
b24uZGVsYXkoKSA+IDApOworICAgICAgICAgICAgYm9vbCBpc0FjdGl2ZVRyYW5zaXRpb24gPSBh
bmltYXRpb24uZHVyYXRpb24oKSB8fCBhbmltYXRpb24uZGVsYXkoKSA+IDA7CiAKICAgICAgICAg
ICAgIEFuaW1hdGlvbjo6QW5pbWF0aW9uTW9kZSBtb2RlID0gYW5pbWF0aW9uLmFuaW1hdGlvbk1v
ZGUoKTsKICAgICAgICAgICAgIGlmIChtb2RlID09IEFuaW1hdGlvbjo6QW5pbWF0ZU5vbmUgfHwg
bW9kZSA9PSBBbmltYXRpb246OkFuaW1hdGVVbmtub3duUHJvcGVydHkpCkBAIC0xNjksNiArMTY5
LDkgQEAgdm9pZCBDb21wb3NpdGVBbmltYXRpb246OnVwZGF0ZVRyYW5zaXRpb25zKFJlbmRlckVs
ZW1lbnQqIHJlbmRlcmVyLCBjb25zdCBSZW5kZXIKICAgICAgICAgICAgICAgICBpZiAoIWVxdWFs
ICYmIGlzQWN0aXZlVHJhbnNpdGlvbikgewogICAgICAgICAgICAgICAgICAgICAvLyBBZGQgdGhl
IG5ldyB0cmFuc2l0aW9uCiAgICAgICAgICAgICAgICAgICAgIGF1dG8gaW1wbGljaXRBbmltYXRp
b24gPSBJbXBsaWNpdEFuaW1hdGlvbjo6Y3JlYXRlKGFuaW1hdGlvbiwgcHJvcCwgcmVuZGVyZXIs
IHRoaXMsIG1vZGlmaWVkQ3VycmVudFN0eWxlID8gbW9kaWZpZWRDdXJyZW50U3R5bGUuZ2V0KCkg
OiBmcm9tU3R5bGUpOworICAgICAgICAgICAgICAgICAgICBpZiAobV9zdXNwZW5kZWQgJiYgaW1w
bGljaXRBbmltYXRpb24tPmhhc1N0eWxlKCkpCisgICAgICAgICAgICAgICAgICAgICAgICBpbXBs
aWNpdEFuaW1hdGlvbi0+dXBkYXRlUGxheVN0YXRlKEFuaW1QbGF5U3RhdGVQYXVzZWQpOworCiAg
ICAgICAgICAgICAgICAgICAgIExPRyhBbmltYXRpb25zLCAiQ3JlYXRlZCBJbXBsaWNpdEFuaW1h
dGlvbiAlcCBvbiByZW5kZXJlciAlcCBmb3IgcHJvcGVydHkgJXMgZHVyYXRpb24gJS4yZiBkZWxh
eSAlLjJmIiwgaW1wbGljaXRBbmltYXRpb24ucHRyKCksIHJlbmRlcmVyLCBnZXRQcm9wZXJ0eU5h
bWUocHJvcCksIGFuaW1hdGlvbi5kdXJhdGlvbigpLCBhbmltYXRpb24uZGVsYXkoKSk7CiAgICAg
ICAgICAgICAgICAgICAgIG1fdHJhbnNpdGlvbnMuc2V0KHByb3AsIFdURk1vdmUoaW1wbGljaXRB
bmltYXRpb24pKTsKICAgICAgICAgICAgICAgICB9CkBAIC0zMDAsNyArMzAzLDcgQEAgYm9vbCBD
b21wb3NpdGVBbmltYXRpb246OmFuaW1hdGUoUmVuZGVyRWxlbWVudCYgcmVuZGVyZXIsIGNvbnN0
IFJlbmRlclN0eWxlKiBjdXIKICAgICAgICAgYm9vbCBjaGVja0ZvclN0YWNraW5nQ29udGV4dCA9
IGZhbHNlOwogICAgICAgICBmb3IgKGF1dG8mIHRyYW5zaXRpb24gOiBtX3RyYW5zaXRpb25zLnZh
bHVlcygpKSB7CiAgICAgICAgICAgICBib29sIGRpZEJsZW5kU3R5bGUgPSBmYWxzZTsKLSAgICAg
ICAgICAgIGlmICh0cmFuc2l0aW9uLT5hbmltYXRlKHRoaXMsICZyZW5kZXJlciwgY3VycmVudFN0
eWxlLCAmdGFyZ2V0U3R5bGUsIGJsZW5kZWRTdHlsZSwgZGlkQmxlbmRTdHlsZSkpCisgICAgICAg
ICAgICBpZiAodHJhbnNpdGlvbi0+YW5pbWF0ZSgqdGhpcywgJnJlbmRlcmVyLCBjdXJyZW50U3R5
bGUsIHRhcmdldFN0eWxlLCBibGVuZGVkU3R5bGUsIGRpZEJsZW5kU3R5bGUpKQogICAgICAgICAg
ICAgICAgIGFuaW1hdGlvblN0YXRlQ2hhbmdlZCA9IHRydWU7CiAKICAgICAgICAgICAgIGlmIChk
aWRCbGVuZFN0eWxlKQpAQCAtMzMwLDcgKzMzMyw3IEBAIGJvb2wgQ29tcG9zaXRlQW5pbWF0aW9u
OjphbmltYXRlKFJlbmRlckVsZW1lbnQmIHJlbmRlcmVyLCBjb25zdCBSZW5kZXJTdHlsZSogY3Vy
CiAgICAgICAgIFJlZlB0cjxLZXlmcmFtZUFuaW1hdGlvbj4ga2V5ZnJhbWVBbmltID0gbV9rZXlm
cmFtZUFuaW1hdGlvbnMuZ2V0KG5hbWUpOwogICAgICAgICBpZiAoa2V5ZnJhbWVBbmltKSB7CiAg
ICAgICAgICAgICBib29sIGRpZEJsZW5kU3R5bGUgPSBmYWxzZTsKLSAgICAgICAgICAgIGlmIChr
ZXlmcmFtZUFuaW0tPmFuaW1hdGUodGhpcywgJnJlbmRlcmVyLCBjdXJyZW50U3R5bGUsICZ0YXJn
ZXRTdHlsZSwgYmxlbmRlZFN0eWxlLCBkaWRCbGVuZFN0eWxlKSkKKyAgICAgICAgICAgIGlmIChr
ZXlmcmFtZUFuaW0tPmFuaW1hdGUoKnRoaXMsICZyZW5kZXJlciwgY3VycmVudFN0eWxlLCB0YXJn
ZXRTdHlsZSwgYmxlbmRlZFN0eWxlLCBkaWRCbGVuZFN0eWxlKSkKICAgICAgICAgICAgICAgICBh
bmltYXRpb25TdGF0ZUNoYW5nZWQgPSB0cnVlOwogCiAgICAgICAgICAgICBmb3JjZVN0YWNraW5n
Q29udGV4dCB8PSBkaWRCbGVuZFN0eWxlICYmIGtleWZyYW1lQW5pbS0+dHJpZ2dlcnNTdGFja2lu
Z0NvbnRleHQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvYW5pbWF0aW9uL0lt
cGxpY2l0QW5pbWF0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvYW5pbWF0aW9uL0ltcGxp
Y2l0QW5pbWF0aW9uLmNwcAppbmRleCAxMzk3NmFmNzE2MzY1ZGQwZjM2ODRhZjA2N2M3OWMzZGU1
NDhjMzE5Li5mN2Y0MDFhNDgyMWFjN2MyNjI1YjI1MTVlYjMzM2JkMjZmNDA4MGI5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2FuaW1hdGlvbi9JbXBsaWNpdEFuaW1hdGlvbi5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9hbmltYXRpb24vSW1wbGljaXRBbmltYXRpb24uY3Bw
CkBAIC02MSw3ICs2MSw3IEBAIGJvb2wgSW1wbGljaXRBbmltYXRpb246OnNob3VsZFNlbmRFdmVu
dEZvckxpc3RlbmVyKERvY3VtZW50OjpMaXN0ZW5lclR5cGUgaW5MaXN0CiAgICAgcmV0dXJuIG1f
b2JqZWN0LT5kb2N1bWVudCgpLmhhc0xpc3RlbmVyVHlwZShpbkxpc3RlbmVyVHlwZSk7CiB9CiAK
LWJvb2wgSW1wbGljaXRBbmltYXRpb246OmFuaW1hdGUoQ29tcG9zaXRlQW5pbWF0aW9uKiwgUmVu
ZGVyRWxlbWVudCosIGNvbnN0IFJlbmRlclN0eWxlKiwgY29uc3QgUmVuZGVyU3R5bGUqIHRhcmdl
dFN0eWxlLCBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+JiBhbmltYXRlZFN0eWxlLCBib29s
JiBkaWRCbGVuZFN0eWxlKQorYm9vbCBJbXBsaWNpdEFuaW1hdGlvbjo6YW5pbWF0ZShDb21wb3Np
dGVBbmltYXRpb24mIGNvbXBvc2l0ZUFuaW1hdGlvbiwgUmVuZGVyRWxlbWVudCosIGNvbnN0IFJl
bmRlclN0eWxlKiwgY29uc3QgUmVuZGVyU3R5bGUmIHRhcmdldFN0eWxlLCBzdGQ6OnVuaXF1ZV9w
dHI8UmVuZGVyU3R5bGU+JiBhbmltYXRlZFN0eWxlLCBib29sJiBkaWRCbGVuZFN0eWxlKQogewog
ICAgIC8vIElmIHdlIGdldCB0aGlzIGZhciBhbmQgdGhlIGFuaW1hdGlvbiBpcyBkb25lLCBpdCBt
ZWFucyB3ZSBhcmUgY2xlYW5pbmcgdXAgYSBqdXN0IGZpbmlzaGVkIGFuaW1hdGlvbi4KICAgICAv
LyBTbyBqdXN0IHJldHVybi4gRXZlcnl0aGluZyBpcyBhbHJlYWR5IGFsbCBjbGVhbmVkIHVwLgpA
QCAtNzIsMTIgKzcyLDEyIEBAIGJvb2wgSW1wbGljaXRBbmltYXRpb246OmFuaW1hdGUoQ29tcG9z
aXRlQW5pbWF0aW9uKiwgUmVuZGVyRWxlbWVudCosIGNvbnN0IFJlbmRlCiAKICAgICAvLyBSZXNl
dCB0byBzdGFydCB0aGUgdHJhbnNpdGlvbiBpZiB3ZSBhcmUgbmV3CiAgICAgaWYgKGlzTmV3KCkp
Ci0gICAgICAgIHJlc2V0KHRhcmdldFN0eWxlKTsKKyAgICAgICAgcmVzZXQodGFyZ2V0U3R5bGUs
IGNvbXBvc2l0ZUFuaW1hdGlvbik7CiAKICAgICAvLyBSdW4gYSBjeWNsZSBvZiBhbmltYXRpb24u
CiAgICAgLy8gV2Uga25vdyB3ZSB3aWxsIG5lZWQgYSBuZXcgcmVuZGVyIHN0eWxlLCBzbyBtYWtl
IG9uZSBpZiBuZWVkZWQKICAgICBpZiAoIWFuaW1hdGVkU3R5bGUpCi0gICAgICAgIGFuaW1hdGVk
U3R5bGUgPSBSZW5kZXJTdHlsZTo6Y2xvbmVQdHIoKnRhcmdldFN0eWxlKTsKKyAgICAgICAgYW5p
bWF0ZWRTdHlsZSA9IFJlbmRlclN0eWxlOjpjbG9uZVB0cih0YXJnZXRTdHlsZSk7CiAKICAgICBD
U1NQcm9wZXJ0eUFuaW1hdGlvbjo6YmxlbmRQcm9wZXJ0aWVzKHRoaXMsIG1fYW5pbWF0aW5nUHJv
cGVydHksIGFuaW1hdGVkU3R5bGUuZ2V0KCksIG1fZnJvbVN0eWxlLmdldCgpLCBtX3RvU3R5bGUu
Z2V0KCksIHByb2dyZXNzKCkpOwogICAgIC8vIEZJWE1FOiB3ZSBhbHNvIG5lZWQgdG8gZGV0ZWN0
IGNhc2VzIHdoZXJlIHdlIGhhdmUgdG8gc29mdHdhcmUgYW5pbWF0ZSBmb3Igb3RoZXIgcmVhc29u
cywKQEAgLTE5OSwxOSArMTk5LDE4IEBAIGJvb2wgSW1wbGljaXRBbmltYXRpb246OnNlbmRUcmFu
c2l0aW9uRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIGRvdWJsCiAgICAgcmV0
dXJuIGZhbHNlOyAvLyBEaWRuJ3QgZGlzcGF0Y2ggYW4gZXZlbnQKIH0KIAotdm9pZCBJbXBsaWNp
dEFuaW1hdGlvbjo6cmVzZXQoY29uc3QgUmVuZGVyU3R5bGUqIHRvKQordm9pZCBJbXBsaWNpdEFu
aW1hdGlvbjo6cmVzZXQoY29uc3QgUmVuZGVyU3R5bGUmIHRvLCBDb21wb3NpdGVBbmltYXRpb24m
IGNvbXBvc2l0ZUFuaW1hdGlvbikKIHsKLSAgICBBU1NFUlQodG8pOwogICAgIEFTU0VSVChtX2Zy
b21TdHlsZSk7CiAKLSAgICBtX3RvU3R5bGUgPSBSZW5kZXJTdHlsZTo6Y2xvbmVQdHIoKnRvKTsK
KyAgICBtX3RvU3R5bGUgPSBSZW5kZXJTdHlsZTo6Y2xvbmVQdHIodG8pOwogCiAgICAgaWYgKG1f
b2JqZWN0ICYmIG1fb2JqZWN0LT5lbGVtZW50KCkpCiAgICAgICAgIFN0eWxlOjpsb2FkUGVuZGlu
Z1Jlc291cmNlcygqbV90b1N0eWxlLCBtX29iamVjdC0+ZWxlbWVudCgpLT5kb2N1bWVudCgpLCBt
X29iamVjdC0+ZWxlbWVudCgpKTsKIAogICAgIC8vIFJlc3RhcnQgdGhlIHRyYW5zaXRpb24KICAg
ICBpZiAobV9mcm9tU3R5bGUgJiYgbV90b1N0eWxlKQotICAgICAgICB1cGRhdGVTdGF0ZU1hY2hp
bmUoQW5pbWF0aW9uU3RhdGVJbnB1dDo6UmVzdGFydEFuaW1hdGlvbiwgLTEpOworICAgICAgICB1
cGRhdGVTdGF0ZU1hY2hpbmUoY29tcG9zaXRlQW5pbWF0aW9uLmlzU3VzcGVuZGVkKCkgPyBBbmlt
YXRpb25TdGF0ZUlucHV0OjpQbGF5U3RhdGVQYXVzZWQgOiBBbmltYXRpb25TdGF0ZUlucHV0OjpS
ZXN0YXJ0QW5pbWF0aW9uLCAtMSk7CiAgICAgICAgIAogICAgIC8vIHNldCB0aGUgdHJhbnNmb3Jt
IGFuaW1hdGlvbiBsaXN0CiAgICAgdmFsaWRhdGVUcmFuc2Zvcm1GdW5jdGlvbkxpc3QoKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvYW5pbWF0aW9uL0ltcGxpY2l0QW5pbWF0aW9u
LmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2FuaW1hdGlvbi9JbXBsaWNpdEFuaW1hdGlvbi5oCmlu
ZGV4IDhlMTcxOTU4ZDE0ZDNlOTk3OTk2OThiYmY0NWYzZjc1MTI5Njg0NWIuLjBmMDYxYzU4MzQ1
MTUwYzg5NzQ2OWYyN2EyMzQ3NGM5Zjk3MzhkNWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvYW5pbWF0aW9uL0ltcGxpY2l0QW5pbWF0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9hbmltYXRpb24vSW1wbGljaXRBbmltYXRpb24uaApAQCAtNTMsOSArNTMsOSBAQCBwdWJs
aWM6CiAgICAgdm9pZCBwYXVzZUFuaW1hdGlvbihkb3VibGUgdGltZU9mZnNldCkgb3ZlcnJpZGU7
CiAgICAgdm9pZCBlbmRBbmltYXRpb24oKSBvdmVycmlkZTsKIAotICAgIGJvb2wgYW5pbWF0ZShD
b21wb3NpdGVBbmltYXRpb24qLCBSZW5kZXJFbGVtZW50KiwgY29uc3QgUmVuZGVyU3R5bGUqIGN1
cnJlbnRTdHlsZSwgY29uc3QgUmVuZGVyU3R5bGUqIHRhcmdldFN0eWxlLCBzdGQ6OnVuaXF1ZV9w
dHI8UmVuZGVyU3R5bGU+JiBhbmltYXRlZFN0eWxlLCBib29sJiBkaWRCbGVuZFN0eWxlKSBvdmVy
cmlkZTsKKyAgICBib29sIGFuaW1hdGUoQ29tcG9zaXRlQW5pbWF0aW9uJiwgUmVuZGVyRWxlbWVu
dCosIGNvbnN0IFJlbmRlclN0eWxlKiBjdXJyZW50U3R5bGUsIGNvbnN0IFJlbmRlclN0eWxlJiB0
YXJnZXRTdHlsZSwgc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiYgYW5pbWF0ZWRTdHlsZSwg
Ym9vbCYgZGlkQmxlbmRTdHlsZSkgb3ZlcnJpZGU7CiAgICAgdm9pZCBnZXRBbmltYXRlZFN0eWxl
KHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4mIGFuaW1hdGVkU3R5bGUpIG92ZXJyaWRlOwot
ICAgIHZvaWQgcmVzZXQoY29uc3QgUmVuZGVyU3R5bGUqIHRvKTsKKyAgICB2b2lkIHJlc2V0KGNv
bnN0IFJlbmRlclN0eWxlJiB0bywgQ29tcG9zaXRlQW5pbWF0aW9uJik7CiAKICAgICBib29sIGNv
bXB1dGVFeHRlbnRPZlRyYW5zZm9ybUFuaW1hdGlvbihMYXlvdXRSZWN0JikgY29uc3Qgb3ZlcnJp
ZGU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvYW5pbWF0aW9uL0tleWZyYW1l
QW5pbWF0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvYW5pbWF0aW9uL0tleWZyYW1lQW5p
bWF0aW9uLmNwcAppbmRleCAwMGY3MmE5ZWZmZjlhNjI5ZmVkNDUwMzBmNDVhYTg1MjE1NTZjMjg1
Li5kNDJkY2JiNWJlMzc3YTNlYmI5NjA1ZDI5NmUxNDg2NzZmYzJmNDAxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL2FuaW1hdGlvbi9LZXlmcmFtZUFuaW1hdGlvbi5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9hbmltYXRpb24vS2V5ZnJhbWVBbmltYXRpb24uY3BwCkBAIC0x
NTQsMTQgKzE1NCwxNCBAQCB2b2lkIEtleWZyYW1lQW5pbWF0aW9uOjpmZXRjaEludGVydmFsRW5k
cG9pbnRzRm9yUHJvcGVydHkoQ1NTUHJvcGVydHlJRCBwcm9wZXJ0eQogICAgIHByb2cgPSBwcm9n
cmVzcyhzY2FsZSwgb2Zmc2V0LCBwcmV2S2V5ZnJhbWUudGltaW5nRnVuY3Rpb24obmFtZSgpKSk7
CiB9CiAKLWJvb2wgS2V5ZnJhbWVBbmltYXRpb246OmFuaW1hdGUoQ29tcG9zaXRlQW5pbWF0aW9u
KiBjb21wb3NpdGVBbmltYXRpb24sIFJlbmRlckVsZW1lbnQqLCBjb25zdCBSZW5kZXJTdHlsZSos
IGNvbnN0IFJlbmRlclN0eWxlKiB0YXJnZXRTdHlsZSwgc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0
eWxlPiYgYW5pbWF0ZWRTdHlsZSwgYm9vbCYgZGlkQmxlbmRTdHlsZSkKK2Jvb2wgS2V5ZnJhbWVB
bmltYXRpb246OmFuaW1hdGUoQ29tcG9zaXRlQW5pbWF0aW9uJiBjb21wb3NpdGVBbmltYXRpb24s
IFJlbmRlckVsZW1lbnQqLCBjb25zdCBSZW5kZXJTdHlsZSosIGNvbnN0IFJlbmRlclN0eWxlJiB0
YXJnZXRTdHlsZSwgc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiYgYW5pbWF0ZWRTdHlsZSwg
Ym9vbCYgZGlkQmxlbmRTdHlsZSkKIHsKICAgICAvLyBGaXJlIHRoZSBzdGFydCB0aW1lb3V0IGlm
IG5lZWRlZAogICAgIGZpcmVBbmltYXRpb25FdmVudHNJZk5lZWRlZCgpOwogICAgIAogICAgIC8v
IElmIHdlIGhhdmUgbm90IHlldCBzdGFydGVkLCB3ZSB3aWxsIG5vdCBoYXZlIGEgdmFsaWQgc3Rh
cnQgdGltZSwgc28ganVzdCBzdGFydCB0aGUgYW5pbWF0aW9uIGlmIG5lZWRlZC4KICAgICBpZiAo
aXNOZXcoKSkgewotICAgICAgICBpZiAobV9hbmltYXRpb24tPnBsYXlTdGF0ZSgpID09IEFuaW1Q
bGF5U3RhdGVQbGF5aW5nICYmICFjb21wb3NpdGVBbmltYXRpb24tPmlzU3VzcGVuZGVkKCkpCisg
ICAgICAgIGlmIChtX2FuaW1hdGlvbi0+cGxheVN0YXRlKCkgPT0gQW5pbVBsYXlTdGF0ZVBsYXlp
bmcgJiYgIWNvbXBvc2l0ZUFuaW1hdGlvbi5pc1N1c3BlbmRlZCgpKQogICAgICAgICAgICAgdXBk
YXRlU3RhdGVNYWNoaW5lKEFuaW1hdGlvblN0YXRlSW5wdXQ6OlN0YXJ0QW5pbWF0aW9uLCAtMSk7
CiAgICAgICAgIGVsc2UgaWYgKG1fYW5pbWF0aW9uLT5wbGF5U3RhdGUoKSA9PSBBbmltUGxheVN0
YXRlUGF1c2VkKQogICAgICAgICAgICAgdXBkYXRlU3RhdGVNYWNoaW5lKEFuaW1hdGlvblN0YXRl
SW5wdXQ6OlBsYXlTdGF0ZVBhdXNlZCwgLTEpOwpAQCAtMTcxLDcgKzE3MSw3IEBAIGJvb2wgS2V5
ZnJhbWVBbmltYXRpb246OmFuaW1hdGUoQ29tcG9zaXRlQW5pbWF0aW9uKiBjb21wb3NpdGVBbmlt
YXRpb24sIFJlbmRlckVsCiAgICAgLy8gSWYgc28sIHdlIG5lZWQgdG8gc2VuZCBiYWNrIHRoZSB0
YXJnZXRTdHlsZS4KICAgICBpZiAocG9zdEFjdGl2ZSgpKSB7CiAgICAgICAgIGlmICghYW5pbWF0
ZWRTdHlsZSkKLSAgICAgICAgICAgIGFuaW1hdGVkU3R5bGUgPSBSZW5kZXJTdHlsZTo6Y2xvbmVQ
dHIoKnRhcmdldFN0eWxlKTsKKyAgICAgICAgICAgIGFuaW1hdGVkU3R5bGUgPSBSZW5kZXJTdHls
ZTo6Y2xvbmVQdHIodGFyZ2V0U3R5bGUpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQog
CkBAIC0xOTUsNyArMTk1LDcgQEAgYm9vbCBLZXlmcmFtZUFuaW1hdGlvbjo6YW5pbWF0ZShDb21w
b3NpdGVBbmltYXRpb24qIGNvbXBvc2l0ZUFuaW1hdGlvbiwgUmVuZGVyRWwKICAgICAvLyBSdW4g
YSBjeWNsZSBvZiBhbmltYXRpb24uCiAgICAgLy8gV2Uga25vdyB3ZSB3aWxsIG5lZWQgYSBuZXcg
cmVuZGVyIHN0eWxlLCBzbyBtYWtlIG9uZSBpZiBuZWVkZWQuCiAgICAgaWYgKCFhbmltYXRlZFN0
eWxlKQotICAgICAgICBhbmltYXRlZFN0eWxlID0gUmVuZGVyU3R5bGU6OmNsb25lUHRyKCp0YXJn
ZXRTdHlsZSk7CisgICAgICAgIGFuaW1hdGVkU3R5bGUgPSBSZW5kZXJTdHlsZTo6Y2xvbmVQdHIo
dGFyZ2V0U3R5bGUpOwogCiAgICAgLy8gRklYTUU6IHdlIG5lZWQgdG8gYmUgbW9yZSBlZmZpY2ll
bnQgYWJvdXQgZGV0ZXJtaW5pbmcgd2hpY2gga2V5ZnJhbWVzIHdlIGFyZSBhbmltYXRpbmcgYmV0
d2Vlbi4KICAgICAvLyBXZSBzaG91bGQgY2FjaGUgdGhlIGxhc3QgcGFpciBvciBzb21ldGhpbmcu
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2FuaW1hdGlvbi9LZXlmcmFtZUFuaW1h
dGlvbi5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9hbmltYXRpb24vS2V5ZnJhbWVBbmltYXRpb24u
aAppbmRleCBkMjIwZWRmNGUyOTIzZWM0MTYyMmMyOGIyMDUxOWYyNTkyMDYwNDk4Li4wNmRiODk5
NGExMWZmZTMwYjc0MDY0MzRjMTVkYjUxNTMxYzQ1MjZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL2FuaW1hdGlvbi9LZXlmcmFtZUFuaW1hdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvYW5pbWF0aW9uL0tleWZyYW1lQW5pbWF0aW9uLmgKQEAgLTQ0LDcgKzQ0LDcgQEAg
cHVibGljOgogICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBLZXlmcmFtZUFuaW1hdGlvbihh
bmltYXRpb24sIHJlbmRlcmVyLCBjb21wb3NpdGVBbmltYXRpb24sIHVuYW5pbWF0ZWRTdHlsZSkp
OwogICAgIH0KIAotICAgIGJvb2wgYW5pbWF0ZShDb21wb3NpdGVBbmltYXRpb24qLCBSZW5kZXJF
bGVtZW50KiwgY29uc3QgUmVuZGVyU3R5bGUqIGN1cnJlbnRTdHlsZSwgY29uc3QgUmVuZGVyU3R5
bGUqIHRhcmdldFN0eWxlLCBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+JiBhbmltYXRlZFN0
eWxlLCBib29sJiBkaWRCbGVuZFN0eWxlKSBvdmVycmlkZTsKKyAgICBib29sIGFuaW1hdGUoQ29t
cG9zaXRlQW5pbWF0aW9uJiwgUmVuZGVyRWxlbWVudCosIGNvbnN0IFJlbmRlclN0eWxlKiBjdXJy
ZW50U3R5bGUsIGNvbnN0IFJlbmRlclN0eWxlJiB0YXJnZXRTdHlsZSwgc3RkOjp1bmlxdWVfcHRy
PFJlbmRlclN0eWxlPiYgYW5pbWF0ZWRTdHlsZSwgYm9vbCYgZGlkQmxlbmRTdHlsZSkgb3ZlcnJp
ZGU7CiAgICAgdm9pZCBnZXRBbmltYXRlZFN0eWxlKHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHls
ZT4mKSBvdmVycmlkZTsKIAogICAgIGJvb2wgY29tcHV0ZUV4dGVudE9mVHJhbnNmb3JtQW5pbWF0
aW9uKExheW91dFJlY3QmKSBjb25zdCBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCBkODI5ODZiYWU5YzdiMzll
N2FjZjRlNTFmMGQ1YTIzOGJmMDEyYmUyLi42OGNiYTIzNzYzY2ViZTc3MGJkNDFiMTNjMTk2MTFm
MzY2ODVmMzU1IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0
VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTctMDYtMDkgIENocmlzIER1bWV6
ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBDU1MgdHJhbnNpdGlvbnMgYWRkZWQgd2hp
bGUgcGFnZSBpcyBub3QgdmlzaWJsZSBkbyBub3Qgc3RhcnQgd2hlbiB0aGUgcGFnZSBiZWNvbWVz
IHZpc2libGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE3MzE2NgorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMzIyNTAzNTE+CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIGxheW91dCB0ZXN0IGNvdmVy
YWdlLgorCisgICAgICAgICogZmFzdC9hbmltYXRpb24vY3NzLWFuaW1hdGlvbi1yZXN1bWluZy13
aGVuLXZpc2libGUtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2FuaW1hdGlv
bi9jc3MtYW5pbWF0aW9uLXJlc3VtaW5nLXdoZW4tdmlzaWJsZS5odG1sOiBBZGRlZC4KKwogMjAx
Ny0wNi0wOCAgTXlsZXMgQy4gTWF4ZmllbGQgIDxtbWF4ZmllbGRAYXBwbGUuY29tPgogCiAgICAg
ICAgIFtDb2NvYV0gRXhwYW5kIHN5c3RlbS11aSB0byBpbmNsdWRlIGV2ZXJ5IGl0ZW0gaW4gdGhl
IENvcmUgVGV4dCBjYXNjYWRlIGxpc3QKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvYW5p
bWF0aW9uL2Nzcy1hbmltYXRpb24tcmVzdW1pbmctd2hlbi12aXNpYmxlLWV4cGVjdGVkLnR4dCBi
L0xheW91dFRlc3RzL2Zhc3QvYW5pbWF0aW9uL2Nzcy1hbmltYXRpb24tcmVzdW1pbmctd2hlbi12
aXNpYmxlLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hNTI0YmQwZTAzMDAwNDBhNGRmYzkzYmE2
YjExMWMwYzZhZTYyYTk4Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9hbmlt
YXRpb24vY3NzLWFuaW1hdGlvbi1yZXN1bWluZy13aGVuLXZpc2libGUtZXhwZWN0ZWQudHh0CkBA
IC0wLDAgKzEsMTIgQEAKK1Rlc3RzIHRoYXQgQ1NTIGFuaW1hdGlvbnMgdGhhdCBhcmUgY3JlYXRl
ZCB3aGlsZSB0aGUgcGFnZSBpcyBoaWRkZW4gYXJlIHByb3Blcmx5IHJlc3VtZWQgd2hlbiB0aGUg
cGFnZSBiZWNvbWVzIHZpc2libGUuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmll
cyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQ
QVNTIGludGVybmFscy5hbmltYXRpb25zQXJlU3VzcGVuZGVkKCkgaXMgdHJ1ZQorUEFTUyBpbnRl
cm5hbHMubnVtYmVyT2ZBY3RpdmVBbmltYXRpb25zKCkgaXMgMAorUEFTUyBpbnRlcm5hbHMubnVt
YmVyT2ZBY3RpdmVBbmltYXRpb25zKCkgYmVjYW1lIDEKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2Vk
IGlzIHRydWUKKworVEVTVCBDT01QTEVURQorVEVTVApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
ZmFzdC9hbmltYXRpb24vY3NzLWFuaW1hdGlvbi1yZXN1bWluZy13aGVuLXZpc2libGUuaHRtbCBi
L0xheW91dFRlc3RzL2Zhc3QvYW5pbWF0aW9uL2Nzcy1hbmltYXRpb24tcmVzdW1pbmctd2hlbi12
aXNpYmxlLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzMwYmY4NGQ4MGNhOTg0YzRjNmM4NzQwYzBiOGU4MTE1
OTNhOTUzYQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvYW5pbWF0aW9uL2Nz
cy1hbmltYXRpb24tcmVzdW1pbmctd2hlbi12aXNpYmxlLmh0bWwKQEAgLTAsMCArMSw0MCBAQAor
PCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPHN0eWxlPgorI3Rlc3REaXYgeworICAg
IHRyYW5zaXRpb246IHRyYW5zZm9ybSAzMHMgbGluZWFyLCBjb2xvciAycywgbGVmdCA0cyBsaW5l
YXIsIHRvcCA0cyBsaW5lYXI7CisgICAgcG9zaXRpb246IGFic29sdXRlOworfQorPC9zdHlsZT4K
KzwvaGVhZD4KKzxib2R5PgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0Lmpz
Ij48L3NjcmlwdD4KKzxkaXYgaWQ9InRlc3REaXYiPlRFU1Q8L2Rpdj4KKzxzY3JpcHQ+CitkZXNj
cmlwdGlvbigiVGVzdHMgdGhhdCBDU1MgYW5pbWF0aW9ucyB0aGF0IGFyZSBjcmVhdGVkIHdoaWxl
IHRoZSBwYWdlIGlzIGhpZGRlbiBhcmUgcHJvcGVybHkgcmVzdW1lZCB3aGVuIHRoZSBwYWdlIGJl
Y29tZXMgdmlzaWJsZS4iKTsKK2pzVGVzdElzQXN5bmMgPSB0cnVlOworCitmdW5jdGlvbiByZWdp
c3RlckFuaW1hdGlvbigpCit7CisgICAgdGVzdERpdi5zdHlsZS50cmFuc2Zvcm0gPSAicm90YXRl
KDE3MGRlZykgc2NhbGUoMC4yNzgxOTQxNDE0MzQ3Mjg0KSI7Cit9CisKK29ubG9hZCA9IGZ1bmN0
aW9uKCkgeworICAgIGludGVybmFscy5zdXNwZW5kQW5pbWF0aW9ucygpOworCisgICAgc2V0VGlt
ZW91dChmdW5jdGlvbigpIHsKKyAgICAgICAgcmVnaXN0ZXJBbmltYXRpb24oKTsKKyAgICAgICAg
c2V0VGltZW91dChmdW5jdGlvbigpIHsKKyAgICAgICAgICAgIHNob3VsZEJlVHJ1ZSgiaW50ZXJu
YWxzLmFuaW1hdGlvbnNBcmVTdXNwZW5kZWQoKSIpOworICAgICAgICAgICAgc2hvdWxkQmUoImlu
dGVybmFscy5udW1iZXJPZkFjdGl2ZUFuaW1hdGlvbnMoKSIsICIwIik7CisKKyAgICAgICAgICAg
IGludGVybmFscy5yZXN1bWVBbmltYXRpb25zKCk7CisgICAgICAgICAgICBzaG91bGRCZWNvbWVF
cXVhbCgiaW50ZXJuYWxzLm51bWJlck9mQWN0aXZlQW5pbWF0aW9ucygpIiwgIjEiLCBmaW5pc2hK
U1Rlc3QpOworICAgICAgICB9LCA1MDApOworICAgIH0sIDApOworfQorCis8L3NjcmlwdD4KKzwv
Ym9keT4KKzwvaHRtbD4K
</data>

          </attachment>
      

    </bug>

</bugzilla>