<?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>144718</bug_id>
          
          <creation_ts>2015-05-06 16:19:33 -0700</creation_ts>
          <short_desc>Throttle RequestAnimationFrame in subframes that are outside the viewport</short_desc>
          <delta_ts>2017-02-01 13:49:51 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Animations</component>
          <version>528+ (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=145465</see_also>
    
    <see_also>https://bugs.webkit.org/show_bug.cgi?id=100257</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>144796</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Chris Dumez">cdumez</reporter>
          <assigned_to name="Chris Dumez">cdumez</assigned_to>
          <cc>barraclough</cc>
    
    <cc>commit-queue</cc>
    
    <cc>dino</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>japhet</cc>
    
    <cc>kangil.han</cc>
    
    <cc>kling</cc>
    
    <cc>koivisto</cc>
    
    <cc>nick</cc>
    
    <cc>simon.fraser</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1092390</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2015-05-06 16:19:33 -0700</bug_when>
    <thetext>Throttle RequestAnimationFrame in subframes that are outside the viewport for performance / power reasons.

Radar: &lt;rdar://problem/20688782&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1092461</commentid>
    <comment_count>1</comment_count>
      <attachid>252559</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2015-05-06 19:59:44 -0700</bug_when>
    <thetext>Created attachment 252559
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1092488</commentid>
    <comment_count>2</comment_count>
      <attachid>252559</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2015-05-06 21:12:10 -0700</bug_when>
    <thetext>Comment on attachment 252559
Patch

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

r=me but please fix the red EWS.

&gt; Source/WebCore/dom/ScriptedAnimationController.cpp:87
&gt; +    LOG(Animations, &quot;%p - Setting RequestAnimationFrame throttling state to %d in frame&quot;, this, isThrottled);

in frame what? Would be nice to know fi this is the main frame.

&gt; Source/WebCore/page/FrameView.cpp:2181
&gt; +        if (auto* scriptedAnimationController = frame().document()-&gt;scriptedAnimationController()) {

Just auto, right?

&gt; Source/WebCore/page/FrameView.cpp:2182
&gt; +            bool shouldThrottle = forceThrottling || windowToContents(windowClipRect()).isEmpty();

Since we&apos;re calling this just after resumeVisibleImageAnimationsIncludingSubframes(), we&apos;ve probably computed windowToContents(windowClipRect()) already.

&gt; Source/WebCore/page/FrameView.cpp:2190
&gt; +    for (Frame* childFrame = frame().tree().firstChild(); childFrame; childFrame = childFrame-&gt;tree().nextSibling()) {

This makes me wonder if we do things in display:none iframes. I added firstRenderedChild()/nextRenderedSibling() to only hit iframes which are not display:none, but if you have a visible frame running animations, and you display:none it, what happens?

&gt; Source/WebCore/page/FrameView.cpp:2191
&gt; +        if (auto* childView = childFrame-&gt;view())

auto?

&gt; Source/WebCore/testing/Internals.cpp:772
&gt; +    auto* scriptedAnimationController = contextDocument()-&gt;scriptedAnimationController();

auto?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1092492</commentid>
    <comment_count>3</comment_count>
      <attachid>252559</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2015-05-06 21:21:48 -0700</bug_when>
    <thetext>Comment on attachment 252559
Patch

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

&gt;&gt; Source/WebCore/page/FrameView.cpp:2181
&gt;&gt; +        if (auto* scriptedAnimationController = frame().document()-&gt;scriptedAnimationController()) {
&gt; 
&gt; Just auto, right?

I actually prefer auto* to make it clear it is a pointer. I have seen Darin make similar comments.

&gt;&gt; Source/WebCore/page/FrameView.cpp:2182
&gt;&gt; +            bool shouldThrottle = forceThrottling || windowToContents(windowClipRect()).isEmpty();
&gt; 
&gt; Since we&apos;re calling this just after resumeVisibleImageAnimationsIncludingSubframes(), we&apos;ve probably computed windowToContents(windowClipRect()) already.

Yes, I&apos;ll try and leverage this.

&gt;&gt; Source/WebCore/page/FrameView.cpp:2190
&gt;&gt; +    for (Frame* childFrame = frame().tree().firstChild(); childFrame; childFrame = childFrame-&gt;tree().nextSibling()) {
&gt; 
&gt; This makes me wonder if we do things in display:none iframes. I added firstRenderedChild()/nextRenderedSibling() to only hit iframes which are not display:none, but if you have a visible frame running animations, and you display:none it, what happens?

Very good question. I add a test and update the code if needed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1092681</commentid>
    <comment_count>4</comment_count>
      <attachid>252605</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2015-05-07 11:58:53 -0700</bug_when>
    <thetext>Created attachment 252605
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1092684</commentid>
    <comment_count>5</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-05-07 12:01:40 -0700</bug_when>
    <thetext>Attachment 252605 did not pass style-queue:


ERROR: Source/WebCore/page/FrameView.h:602:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/page/FrameView.cpp:2152:  Extra space before ( in function call  [whitespace/parens] [4]
Total errors found: 2 in 16 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1092685</commentid>
    <comment_count>6</comment_count>
      <attachid>252605</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2015-05-07 12:03:02 -0700</bug_when>
    <thetext>Comment on attachment 252605
Patch

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

&gt; Source/WebCore/ChangeLog:12
&gt; +        Tests: fast/animation/request-animation-frame-throttle-subframe-display-none.html

Added a new layout test for display: none subframes.

&gt; Source/WebCore/dom/ScriptedAnimationController.cpp:102
&gt; +#if USE(REQUEST_ANIMATION_FRAME_TIMER) &amp;&amp; USE(REQUEST_ANIMATION_FRAME_DISPLAY_MONITOR)

Should fix red ews.

&gt; Source/WebCore/page/FrameView.cpp:1792
&gt; +    applyRecursively([] (FrameView&amp; frameView, IntRect visibleRect) {

Added a new applyRecursively() utility function so that the frame tree is only traversed once and we avoid redundant windowClipRect() computations.

&gt; Source/WebCore/page/FrameView.cpp:2196
&gt; +    bool shouldThrottle = !frame().ownerRenderer() || visibleRect.isEmpty();

Added this !frame().ownerRenderer() check to make the &quot;display: none&quot; subframe case work. Sadly, this is insufficient for subframes of a &quot;display: none&quot; frame because they get a non-null ownerRenderer. I am planning to look into this in a follow-up.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1092691</commentid>
    <comment_count>7</comment_count>
      <attachid>252605</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2015-05-07 12:17:26 -0700</bug_when>
    <thetext>Comment on attachment 252605
Patch

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

&gt; Source/WebCore/page/FrameView.cpp:2157
&gt; +void FrameView::applyRecursively(const std::function&lt;void (FrameView&amp; frameView, IntRect windowClipRect)&gt;&amp; apply)

This name is a bit generic given the windowClipRect code that&apos;s here. If this is intended to be the One True Way to recurse through subframes, it should be a bit more generic. We should probably also have an argument, or variant that only hits rendered subframes (firstRenderedChild etc).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1092702</commentid>
    <comment_count>8</comment_count>
      <attachid>252605</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2015-05-07 12:57:27 -0700</bug_when>
    <thetext>Comment on attachment 252605
Patch

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

&gt;&gt; Source/WebCore/page/FrameView.cpp:2157
&gt;&gt; +void FrameView::applyRecursively(const std::function&lt;void (FrameView&amp; frameView, IntRect windowClipRect)&gt;&amp; apply)
&gt; 
&gt; This name is a bit generic given the windowClipRect code that&apos;s here. If this is intended to be the One True Way to recurse through subframes, it should be a bit more generic. We should probably also have an argument, or variant that only hits rendered subframes (firstRenderedChild etc).

Ideally, I would find a less generic name for this, given the visibleRect argument. Maybe applyRecursivelyGivenVisibleRect()?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1092710</commentid>
    <comment_count>9</comment_count>
      <attachid>252605</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2015-05-07 13:19:59 -0700</bug_when>
    <thetext>Comment on attachment 252605
Patch

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

&gt;&gt;&gt; Source/WebCore/page/FrameView.cpp:2157
&gt;&gt;&gt; +void FrameView::applyRecursively(const std::function&lt;void (FrameView&amp; frameView, IntRect windowClipRect)&gt;&amp; apply)
&gt;&gt; 
&gt;&gt; This name is a bit generic given the windowClipRect code that&apos;s here. If this is intended to be the One True Way to recurse through subframes, it should be a bit more generic. We should probably also have an argument, or variant that only hits rendered subframes (firstRenderedChild etc).
&gt; 
&gt; Ideally, I would find a less generic name for this, given the visibleRect argument. Maybe applyRecursivelyGivenVisibleRect()?

I don&apos;t really need a version that only traverses rendered frames at the moment. Also, if a client wanted to do so, it would be easy enough to do a frame().ownerRenderer() check in the lamdba.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1092731</commentid>
    <comment_count>10</comment_count>
      <attachid>252623</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2015-05-07 13:55:35 -0700</bug_when>
    <thetext>Created attachment 252623
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1092732</commentid>
    <comment_count>11</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-05-07 13:57:18 -0700</bug_when>
    <thetext>Attachment 252623 did not pass style-queue:


ERROR: Source/WebCore/page/FrameView.h:600:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/page/FrameView.cpp:2102:  Extra space before ( in function call  [whitespace/parens] [4]
Total errors found: 2 in 16 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1092733</commentid>
    <comment_count>12</comment_count>
      <attachid>252623</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2015-05-07 13:57:44 -0700</bug_when>
    <thetext>Comment on attachment 252623
Patch

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

&gt; Source/WebCore/page/FrameView.cpp:2157
&gt; +void FrameView::applyRecursivelyGivenVisibleRect(const std::function&lt;void (FrameView&amp; frameView, IntRect visibleRect)&gt;&amp; apply)

I renamed this method to make it less generic. Let me know if you have a better naming proposal.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1093023</commentid>
    <comment_count>13</comment_count>
      <attachid>252679</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2015-05-07 20:36:33 -0700</bug_when>
    <thetext>Created attachment 252679
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1093024</commentid>
    <comment_count>14</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-05-07 20:38:45 -0700</bug_when>
    <thetext>Attachment 252679 did not pass style-queue:


ERROR: Source/WebCore/page/FrameView.h:600:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/page/FrameView.cpp:2107:  Extra space before ( in function call  [whitespace/parens] [4]
Total errors found: 2 in 16 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1093025</commentid>
    <comment_count>15</comment_count>
      <attachid>252679</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2015-05-07 20:43:28 -0700</bug_when>
    <thetext>Comment on attachment 252679
Patch

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

&gt; Source/WebCore/page/FrameView.h:600
&gt; +    void applyRecursivelyGivenVisibleRect(const std::function&lt;void (FrameView&amp; frameView, IntRect visibleRect)&gt;&amp;);

I&apos;d say applyRecursivelyWithVisibleRect.

&gt; Source/WebCore/page/FrameView.h:603
&gt; +    void updateThrottledDOMTimersState(IntRect visibleRect);
&gt; +    void resumeVisibleImageAnimations(IntRect visibleRect);
&gt; +    void updateScriptedAnimationsThrottlingState(IntRect visibleRect);

Are we passing IntRects (32 bytes) by value now?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1093027</commentid>
    <comment_count>16</comment_count>
      <attachid>252680</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2015-05-07 21:14:28 -0700</bug_when>
    <thetext>Created attachment 252680
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1093028</commentid>
    <comment_count>17</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-05-07 21:16:12 -0700</bug_when>
    <thetext>Attachment 252680 did not pass style-queue:


ERROR: Source/WebCore/page/FrameView.h:600:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/page/FrameView.cpp:2107:  Extra space before ( in function call  [whitespace/parens] [4]
Total errors found: 2 in 16 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1093071</commentid>
    <comment_count>18</comment_count>
      <attachid>252680</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-05-07 23:53:18 -0700</bug_when>
    <thetext>Comment on attachment 252680
Patch

Clearing flags on attachment: 252680

Committed r183985: &lt;http://trac.webkit.org/changeset/183985&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1093072</commentid>
    <comment_count>19</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-05-07 23:53:24 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1093143</commentid>
    <comment_count>20</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-05-08 02:42:19 -0700</bug_when>
    <thetext>Re-opened since this is blocked by bug 144796</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1093148</commentid>
    <comment_count>21</comment_count>
    <who name="Andreas Kling">kling</who>
    <bug_when>2015-05-08 02:48:05 -0700</bug_when>
    <thetext>CRASHING TEST: loader/go-back-to-different-window-size.html

https://build.webkit.org/results/Apple%20Mavericks%20Debug%20WK2%20(Tests)/r183987%20(11604)/loader/go-back-to-different-window-size-crash-log.txt

Thread 0 Crashed:: Dispatch queue: com.apple.main-thread
0   com.apple.JavaScriptCore      	0x000000010eba1aba WTFCrash + 42 (Assertions.cpp:321)
1   com.apple.WebCore             	0x0000000110bbd315 WebCore::FrameView::windowClipRect() const + 85 (FrameView.cpp:3277)
2   com.apple.WebCore             	0x0000000110bbb570 WebCore::FrameView::applyRecursivelyWithVisibleRect(std::__1::function&lt;void (WebCore::FrameView&amp;, WebCore::IntRect const&amp;)&gt; const&amp;) + 32 (FrameView.cpp:2109)
3   com.apple.WebCore             	0x0000000110bb4f43 WebCore::FrameView::viewportContentsChanged() + 99 (FrameView.cpp:1766)
4   com.apple.WebCore             	0x0000000110bb4e0f WebCore::FrameView::setFrameRect(WebCore::IntRect const&amp;) + 239 (FrameView.cpp:466)
5   com.apple.WebCore             	0x0000000110b86912 WebCore::FrameLoader::open(WebCore::CachedFrameBase&amp;) + 786 (FrameLoader.cpp:2073)
6   com.apple.WebCore             	0x000000011047f029 WebCore::CachedFrame::open() + 201 (CachedFrame.cpp:219)
7   com.apple.WebCore             	0x000000011048a768 WebCore::CachedPage::restore(WebCore::Page&amp;) + 328 (CachedPage.cpp:87)
8   com.apple.WebCore             	0x0000000110b84da3 WebCore::FrameLoader::commitProvisionalLoad() + 2643 (FrameLoader.cpp:1796)
9   com.apple.WebCore             	0x0000000110b88c17 WebCore::FrameLoader::loadProvisionalItemFromCachedPage() + 295 (FrameLoader.cpp:3093)
10  com.apple.WebCore             	0x0000000110b83185 WebCore::FrameLoader::continueLoadAfterNavigationPolicy(WebCore::ResourceRequest const&amp;, WTF::PassRefPtr&lt;WebCore::FormState&gt;, bool, WebCore::AllowNavigationToInvalidURL) + 1029 (FrameLoader.cpp:2944)
11  com.apple.WebCore             	0x0000000110b8e36e WebCore::FrameLoader::loadWithDocumentLoader(WebCore::DocumentLoader*, WebCore::FrameLoadType, WTF::PassRefPtr&lt;WebCore::FormState&gt;, WebCore::AllowNavigationToInvalidURL)::$_4::operator()(WebCore::ResourceRequest const&amp;, WTF::PassRefPtr&lt;WebCore::FormState&gt;, bool) const + 94 (FrameLoader.cpp:1458)
12  com.apple.WebCore             	0x0000000110b8e2f5 std::__1::__function::__func&lt;WebCore::FrameLoader::loadWithDocumentLoader(WebCore::DocumentLoader*, WebCore::FrameLoadType, WTF::PassRefPtr&lt;WebCore::FormState&gt;, WebCore::AllowNavigationToInvalidURL)::$_4, std::__1::allocator&lt;WebCore::FrameLoader::loadWithDocumentLoader(WebCore::DocumentLoader*, WebCore::FrameLoadType, WTF::PassRefPtr&lt;WebCore::FormState&gt;, WebCore::AllowNavigationToInvalidURL)::$_4&gt;, void (WebCore::ResourceRequest const&amp;, WTF::PassRefPtr&lt;WebCore::FormState&gt;, bool)&gt;::operator()(WebCore::ResourceRequest const&amp;, WTF::PassRefPtr&lt;WebCore::FormState&gt;&amp;&amp;, bool&amp;&amp;) + 229 (__functional_base:413)
13  com.apple.WebCore             	0x0000000111942077 std::__1::function&lt;void (WebCore::ResourceRequest const&amp;, WTF::PassRefPtr&lt;WebCore::FormState&gt;, bool)&gt;::operator()(WebCore::ResourceRequest const&amp;, WTF::PassRefPtr&lt;WebCore::FormState&gt;, bool) const + 87 (functional:1755)
14  com.apple.WebCore             	0x0000000111941706 WebCore::PolicyCallback::call(bool) + 134 (PolicyCallback.cpp:95)
15  com.apple.WebCore             	0x0000000111942c9a WebCore::PolicyChecker::continueAfterNavigationPolicy(WebCore::PolicyAction) + 682 (PolicyChecker.cpp:206)
16  com.apple.WebCore             	0x0000000111946ace WebCore::PolicyChecker::checkNavigationPolicy(WebCore::ResourceRequest const&amp;, WebCore::DocumentLoader*, WTF::PassRefPtr&lt;WebCore::FormState&gt;, std::__1::function&lt;void (WebCore::ResourceRequest const&amp;, WTF::PassRefPtr&lt;WebCore::FormState&gt;, bool)&gt;)::$_1::operator()(WebCore::PolicyAction) const + 30 (PolicyChecker.cpp:124)
17  com.apple.WebCore             	0x0000000111946a9e std::__1::__function::__func&lt;WebCore::PolicyChecker::checkNavigationPolicy(WebCore::ResourceRequest const&amp;, WebCore::DocumentLoader*, WTF::PassRefPtr&lt;WebCore::FormState&gt;, std::__1::function&lt;void (WebCore::ResourceRequest const&amp;, WTF::PassRefPtr&lt;WebCore::FormState&gt;, bool)&gt;)::$_1, std::__1::allocator&lt;WebCore::PolicyChecker::checkNavigationPolicy(WebCore::ResourceRequest const&amp;, WebCore::DocumentLoader*, WTF::PassRefPtr&lt;WebCore::FormState&gt;, std::__1::function&lt;void (WebCore::ResourceRequest const&amp;, WTF::PassRefPtr&lt;WebCore::FormState&gt;, bool)&gt;)::$_1&gt;, void (WebCore::PolicyAction)&gt;::operator()(WebCore::PolicyAction&amp;&amp;) + 94 (functional:1370)
18  com.apple.WebKit              	0x000000010b5b615c std::__1::function&lt;void (WebCore::PolicyAction)&gt;::operator()(WebCore::PolicyAction) const + 44 (functional:1755)
19  com.apple.WebKit              	0x000000010b5bc52f WebKit::WebFrameLoaderClient::dispatchDecidePolicyForNavigationAction(WebCore::NavigationAction const&amp;, WebCore::ResourceRequest const&amp;, WTF::PassRefPtr&lt;WebCore::FormState&gt;, std::__1::function&lt;void (WebCore::PolicyAction)&gt;) + 431 (WebFrameLoaderClient.cpp:756)
20  com.apple.WebCore             	0x0000000111942922 WebCore::PolicyChecker::checkNavigationPolicy(WebCore::ResourceRequest const&amp;, WebCore::DocumentLoader*, WTF::PassRefPtr&lt;WebCore::FormState&gt;, std::__1::function&lt;void (WebCore::ResourceRequest const&amp;, WTF::PassRefPtr&lt;WebCore::FormState&gt;, bool)&gt;) + 1442 (PolicyChecker.cpp:122)
21  com.apple.WebCore             	0x0000000110b82864 WebCore::FrameLoader::loadWithDocumentLoader(WebCore::DocumentLoader*, WebCore::FrameLoadType, WTF::PassRefPtr&lt;WebCore::FormState&gt;, WebCore::AllowNavigationToInvalidURL) + 1668 (FrameLoader.cpp:1457)
22  com.apple.WebCore             	0x0000000110b7f0e6 WebCore::FrameLoader::loadDifferentDocumentItem(WebCore::HistoryItem&amp;, WebCore::FrameLoadType, WebCore::FrameLoader::FormSubmissionCacheLoadPolicy) + 358 (FrameLoader.cpp:3159)
23  com.apple.WebCore             	0x0000000110b89966 WebCore::FrameLoader::loadItem(WebCore::HistoryItem&amp;, WebCore::FrameLoadType) + 166 (FrameLoader.cpp:3245)
24  com.apple.WebCore             	0x0000000110c9ae60 WebCore::HistoryController::recursiveGoToItem(WebCore::HistoryItem&amp;, WebCore::HistoryItem*, WebCore::FrameLoadType) + 96 (HistoryController.cpp:737)
25  com.apple.WebCore             	0x0000000110c9ac15 WebCore::HistoryController::goToItem(WebCore::HistoryItem&amp;, WebCore::FrameLoadType) + 405 (HistoryController.cpp:302)
26  com.apple.WebCore             	0x00000001118ba319 WebCore::Page::goToItem(WebCore::HistoryItem&amp;, WebCore::FrameLoadType) + 201 (Page.cpp:448)
27  com.apple.WebCore             	0x000000011042b3b4 WebCore::BackForwardController::goBackOrForward(int) + 228 (BackForwardController.cpp:78)
28  com.apple.WebCore             	0x000000011184e9e5 WebCore::ScheduledHistoryNavigation::fire(WebCore::Frame&amp;) + 293 (NavigationScheduler.cpp:232)
29  com.apple.WebCore             	0x000000011184ab1a WebCore::NavigationScheduler::timerFired() + 570 (NavigationScheduler.cpp:486)
30  com.apple.WebCore             	0x00000001118511a3 std::__1::__function::__func&lt;std::__1::__bind&lt;void (WebCore::NavigationScheduler::*&amp;)(), WebCore::NavigationScheduler*&gt;, std::__1::allocator&lt;std::__1::__bind&lt;void (WebCore::NavigationScheduler::*&amp;)(), WebCore::NavigationScheduler*&gt; &gt;, void ()&gt;::operator()() + 259 (functional:1370)
31  com.apple.WebCore             	0x00000001102c317a std::__1::function&lt;void ()&gt;::operator()() const + 26 (functional:1755)
32  com.apple.WebCore             	0x00000001102c312c WebCore::Timer::fired() + 28 (Timer.h:134)
33  com.apple.WebCore             	0x00000001121f4e9c WebCore::ThreadTimers::sharedTimerFiredInternal() + 396 (ThreadTimers.cpp:135)
34  com.apple.WebCore             	0x00000001121f4b59 WebCore::ThreadTimers::sharedTimerFired() + 25 (ThreadTimers.cpp:108)
35  com.apple.WebCore             	0x0000000111398d1a WebCore::timerFired(__CFRunLoopTimer*, void*) + 42 (SharedTimerCF.cpp:83)
36  com.apple.CoreFoundation      	0x00007fff8b2a13e4 __CFRUNLOOP_IS_CALLING_OUT_TO_A_TIMER_CALLBACK_FUNCTION__ + 20
37  com.apple.CoreFoundation      	0x00007fff8b2a0f1f __CFRunLoopDoTimer + 1151
38  com.apple.CoreFoundation      	0x00007fff8b3125aa __CFRunLoopDoTimers + 298
39  com.apple.CoreFoundation      	0x00007fff8b25c6a5 __CFRunLoopRun + 1525
40  com.apple.CoreFoundation      	0x00007fff8b25be75 CFRunLoopRunSpecific + 309
41  com.apple.HIToolbox           	0x00007fff85e17a0d RunCurrentEventLoopInMode + 226
42  com.apple.HIToolbox           	0x00007fff85e177b7 ReceiveNextEventCommon + 479
43  com.apple.HIToolbox           	0x00007fff85e175bc _BlockUntilNextEventMatchingListInModeWithFilter + 65
44  com.apple.AppKit              	0x00007fff84c9224e _DPSNextEvent + 1434
45  com.apple.AppKit              	0x00007fff84c9189b -[NSApplication nextEventMatchingMask:untilDate:inMode:dequeue:] + 122
46  com.apple.AppKit              	0x00007fff84c8599c -[NSApplication run] + 553
47  com.apple.AppKit              	0x00007fff84c70783 NSApplicationMain + 940
48  com.apple.XPCService          	0x00007fff90021c0f _xpc_main + 385
49  libxpc.dylib                  	0x00007fff901e0bde xpc_main + 399
50  com.apple.WebKit.WebContent.Development	0x0000000107393195 main + 37
51  libdyld.dylib                 	0x00007fff8709d5fd start + 1</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1093157</commentid>
    <comment_count>22</comment_count>
    <who name="Andreas Kling">kling</who>
    <bug_when>2015-05-08 03:09:05 -0700</bug_when>
    <thetext>Also broke some tests on Windows:

https://build.webkit.org/results/Apple%20Win%207%20Release%20(Tests)/r183985%20(51686)/results.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1093191</commentid>
    <comment_count>23</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2015-05-08 09:13:02 -0700</bug_when>
    <thetext>(In reply to comment #22)
&gt; Also broke some tests on Windows:
&gt; 
&gt; https://build.webkit.org/results/Apple%20Win%207%20Release%20(Tests)/
&gt; r183985%20(51686)/results.html

Yes, those are the 2 new tests my patch is adding. They are timing out on Windows, probably due to DRT limitations as they are passing elsewhere and the code is cross-platform.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1093196</commentid>
    <comment_count>24</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2015-05-08 09:19:56 -0700</bug_when>
    <thetext>(In reply to comment #23)
&gt; (In reply to comment #22)
&gt; &gt; Also broke some tests on Windows:
&gt; &gt; 
&gt; &gt; https://build.webkit.org/results/Apple%20Win%207%20Release%20(Tests)/
&gt; &gt; r183985%20(51686)/results.html
&gt; 
&gt; Yes, those are the 2 new tests my patch is adding. They are timing out on
&gt; Windows, probably due to DRT limitations as they are passing elsewhere and
&gt; the code is cross-platform.

It is because USE(REQUEST_ANIMATION_FRAME_DISPLAY_MONITOR) is only enabled on COCOA.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1093216</commentid>
    <comment_count>25</comment_count>
      <attachid>252727</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2015-05-08 10:02:54 -0700</bug_when>
    <thetext>Created attachment 252727
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1093217</commentid>
    <comment_count>26</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-05-08 10:06:13 -0700</bug_when>
    <thetext>Attachment 252727 did not pass style-queue:


ERROR: Source/WebCore/page/FrameView.h:600:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/page/FrameView.cpp:2107:  Extra space before ( in function call  [whitespace/parens] [4]
Total errors found: 2 in 18 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1093219</commentid>
    <comment_count>27</comment_count>
      <attachid>252728</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2015-05-08 10:08:21 -0700</bug_when>
    <thetext>Created attachment 252728
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1093220</commentid>
    <comment_count>28</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-05-08 10:09:41 -0700</bug_when>
    <thetext>Attachment 252728 did not pass style-queue:


ERROR: Source/WebCore/page/FrameView.h:600:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/page/FrameView.cpp:2107:  Extra space before ( in function call  [whitespace/parens] [4]
Total errors found: 2 in 18 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1093226</commentid>
    <comment_count>29</comment_count>
      <attachid>252728</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2015-05-08 10:28:00 -0700</bug_when>
    <thetext>Comment on attachment 252728
Patch

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

&gt; Source/WebCore/loader/FrameLoader.cpp:2076
&gt; -    if (m_frame.view())
&gt; -        view-&gt;setFrameRect(m_frame.view()-&gt;frameRect());
&gt; +    Optional&lt;IntRect&gt; previousViewFrameRect = m_frame.view() ?  m_frame.view()-&gt;frameRect() : Optional&lt;IntRect&gt;(Nullopt);
&gt;      m_frame.setView(view);
&gt; +
&gt; +    // Use the previous ScrollView&apos;s frame rect.
&gt; +    if (previousViewFrameRect)
&gt; +        view-&gt;setFrameRect(previousViewFrameRect.value());

I&apos;m slightly nervous about behavior changes here. Any code that consulted the view&apos;s frameRect inside of setView() is now getting an empty rect (but there doesn&apos;t seem to be much).

FYI, I added FrameView::isViewForDocumentInFrame() to detect the state of switching views.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1093237</commentid>
    <comment_count>30</comment_count>
      <attachid>252728</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-05-08 11:17:21 -0700</bug_when>
    <thetext>Comment on attachment 252728
Patch

Clearing flags on attachment: 252728

Committed r183998: &lt;http://trac.webkit.org/changeset/183998&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1093238</commentid>
    <comment_count>31</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-05-08 11:17:32 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1258417</commentid>
    <comment_count>32</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2016-12-09 15:38:36 -0800</bug_when>
    <thetext>*** Bug 165695 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1272260</commentid>
    <comment_count>33</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-02-01 13:49:51 -0800</bug_when>
    <thetext>*** Bug 100257 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>252559</attachid>
            <date>2015-05-06 19:59:44 -0700</date>
            <delta_ts>2015-05-07 11:58:49 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-144718-20150506195827.patch</filename>
            <type>text/plain</type>
            <size>15171</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTgzODgyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNWViNTM3NzUxYjQ3MDkz
NDI5MTE0YWM5ODk5ZDIzODY0YmZiZTNlMC4uNTcyMGI2ODJkOGM4ZmI4ODMxMTA4MDU2YTk0M2Zm
NDQxMTdmOTAwNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMzIEBACisyMDE1LTA1LTA2ICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgVGhyb3R0bGUgUmVxdWVzdEFu
aW1hdGlvbkZyYW1lIGluIHN1YmZyYW1lcyB0aGF0IGFyZSBvdXRzaWRlIHRoZSB2aWV3cG9ydAor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ0NzE4Cisg
ICAgICAgIDxyZGFyOi8vcHJvYmxlbS8yMDY4ODc4Mj4KKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaHJvdHRsZSBSZXF1ZXN0QW5pbWF0aW9uRnJhbWUg
aW4gc3ViZnJhbWVzIHRoYXQgYXJlIG91dHNpZGUgdGhlCisgICAgICAgIHZpZXdwb3J0IGZvciBw
ZXJmb3JtYW5jZSBhbmQgcG93ZXIuCisKKyAgICAgICAgVGVzdDogZmFzdC9hbmltYXRpb24vcmVx
dWVzdC1hbmltYXRpb24tZnJhbWUtdGhyb3R0bGUtc3ViZnJhbWUuaHRtbAorCisgICAgICAgICog
ZG9tL0RvY3VtZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6c2NyaXB0ZWRBbmlt
YXRpb25Db250cm9sbGVyKToKKyAgICAgICAgKiBkb20vU2NyaXB0ZWRBbmltYXRpb25Db250cm9s
bGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdGVkQW5pbWF0aW9uQ29udHJvbGxlcjo6
c2V0VGhyb3R0bGVkKToKKyAgICAgICAgKiBkb20vU2NyaXB0ZWRBbmltYXRpb25Db250cm9sbGVy
Lmg6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRlZEFuaW1hdGlvbkNvbnRyb2xsZXI6OmlzVGhy
b3R0bGVkKToKKyAgICAgICAgKiBwYWdlL0ZyYW1lVmlldy5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpGcmFtZVZpZXc6OnZpZXdwb3J0Q29udGVudHNDaGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6
OkZyYW1lVmlldzo6dXBkYXRlU2NyaXB0ZWRBbmltYXRpb25zVGhyb3R0bGluZ1N0YXRlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkZyYW1lVmlldzo6cmVzdW1lVmlzaWJsZUltYWdlQW5pbWF0aW9uc0lu
Y2x1ZGluZ1N1YmZyYW1lcyk6IERlbGV0ZWQuCisgICAgICAgICogcGFnZS9GcmFtZVZpZXcuaDoK
KyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFscy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnRl
cm5hbHM6OmlzUmVxdWVzdEFuaW1hdGlvbkZyYW1lVGhyb3R0bGVkKToKKyAgICAgICAgKFdlYkNv
cmU6OkludGVybmFsczo6aXNUaW1lclRocm90dGxlZCk6IERlbGV0ZWQuCisgICAgICAgICogdGVz
dGluZy9JbnRlcm5hbHMuaDoKKyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFscy5pZGw6CisKIDIw
MTUtMDUtMDYgIEVyaWMgQ2FybHNvbiAgPGVyaWMuY2FybHNvbkBhcHBsZS5jb20+CiAKICAgICAg
ICAgW2lPU10gcmVtb3ZlIHNvbWUgdW5uZWNlc3NhcnkgaU9TLW9ubHkgbWVkaWEgY29kZQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9k
b20vRG9jdW1lbnQuaAppbmRleCBkMGQ4YWRlODEzZmJmYTI2MjNlZDc3NGQ4NTg2YjFlY2ExZmZi
ODUyLi40MTg4NDNmODhkZTE4NzJiYjA3YmM2NTkyNDA0ZjdkMWEyNDZhNTdjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20v
RG9jdW1lbnQuaApAQCAtOTQ2LDYgKzk0Niw5IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgdm9p
ZCBwb3N0VGFzayhUYXNrKSBvdmVycmlkZSBmaW5hbDsgLy8gRXhlY3V0ZXMgdGhlIHRhc2sgb24g
Y29udGV4dCdzIHRocmVhZCBhc3luY2hyb25vdXNseS4KIAorI2lmIEVOQUJMRShSRVFVRVNUX0FO
SU1BVElPTl9GUkFNRSkKKyAgICBTY3JpcHRlZEFuaW1hdGlvbkNvbnRyb2xsZXIqIHNjcmlwdGVk
QW5pbWF0aW9uQ29udHJvbGxlcigpIHsgcmV0dXJuIG1fc2NyaXB0ZWRBbmltYXRpb25Db250cm9s
bGVyLmdldCgpOyB9CisjZW5kaWYKICAgICB2b2lkIHN1c3BlbmRTY3JpcHRlZEFuaW1hdGlvbkNv
bnRyb2xsZXJDYWxsYmFja3MoKTsKICAgICB2b2lkIHJlc3VtZVNjcmlwdGVkQW5pbWF0aW9uQ29u
dHJvbGxlckNhbGxiYWNrcygpOwogICAgIHZvaWQgc2NyaXB0ZWRBbmltYXRpb25Db250cm9sbGVy
U2V0VGhyb3R0bGVkKGJvb2wpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1Njcmlw
dGVkQW5pbWF0aW9uQ29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0ZWRB
bmltYXRpb25Db250cm9sbGVyLmNwcAppbmRleCA3ZWRlYmQ0NDExY2FiZDljNmZmYTQ5ZDZiZjFi
YzlhNTMxNGIwM2U3Li4xOWI5NWQ0ZDMyMjk0YmQwNGUwMTZkMzhjY2IyYzYyNDlkMTJjYjI4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0ZWRBbmltYXRpb25Db250cm9sbGVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0ZWRBbmltYXRpb25Db250cm9sbGVy
LmNwcApAQCAtODQsNiArODQsOCBAQCB2b2lkIFNjcmlwdGVkQW5pbWF0aW9uQ29udHJvbGxlcjo6
c2V0VGhyb3R0bGVkKGJvb2wgaXNUaHJvdHRsZWQpCiAgICAgaWYgKG1faXNUaHJvdHRsZWQgPT0g
aXNUaHJvdHRsZWQpCiAgICAgICAgIHJldHVybjsKIAorICAgIExPRyhBbmltYXRpb25zLCAiJXAg
LSBTZXR0aW5nIFJlcXVlc3RBbmltYXRpb25GcmFtZSB0aHJvdHRsaW5nIHN0YXRlIHRvICVkIGlu
IGZyYW1lIiwgdGhpcywgaXNUaHJvdHRsZWQpOworCiAgICAgbV9pc1Rocm90dGxlZCA9IGlzVGhy
b3R0bGVkOwogICAgIGlmIChtX2FuaW1hdGlvblRpbWVyLmlzQWN0aXZlKCkpIHsKICAgICAgICAg
bV9hbmltYXRpb25UaW1lci5zdG9wKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20v
U2NyaXB0ZWRBbmltYXRpb25Db250cm9sbGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0
ZWRBbmltYXRpb25Db250cm9sbGVyLmgKaW5kZXggN2IyOGU3OWVjODViNGJhMWYxNmUwZTljMTdk
MDUzNTdlMmIxZDRkYi4uMGMzZGFjYmZiMWE2NGNiM2Q1MDAwYjg2OTU2ODAyMjViODU5MjcwMSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdGVkQW5pbWF0aW9uQ29udHJvbGxl
ci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRlZEFuaW1hdGlvbkNvbnRyb2xsZXIu
aApAQCAtNjgsNiArNjgsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzdXNwZW5kKCk7CiAgICAgdm9p
ZCByZXN1bWUoKTsKICAgICB2b2lkIHNldFRocm90dGxlZChib29sKTsKKyAgICBib29sIGlzVGhy
b3R0bGVkKCkgY29uc3QgeyByZXR1cm4gbV9pc1Rocm90dGxlZDsgfQogCiAgICAgdm9pZCB3aW5k
b3dTY3JlZW5EaWRDaGFuZ2UoUGxhdGZvcm1EaXNwbGF5SUQpOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1l
Vmlldy5jcHAKaW5kZXggMTI1ODYzNmNkMzA5YmY2NTJhNTM3YjQzYzMxZDA0NmMzOTQyNjZhMS4u
YmFjYjE2ZjU0YzM4NjVjZmNhZDQ2YmFlMDJlNmIxNjk2NTkzMDA3ZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
RnJhbWVWaWV3LmNwcApAQCAtODAsNiArODAsNyBAQAogI2luY2x1ZGUgIlJlbmRlcldpZGdldC5o
IgogI2luY2x1ZGUgIlNWR0RvY3VtZW50LmgiCiAjaW5jbHVkZSAiU1ZHU1ZHRWxlbWVudC5oIgor
I2luY2x1ZGUgIlNjcmlwdGVkQW5pbWF0aW9uQ29udHJvbGxlci5oIgogI2luY2x1ZGUgIlNjcm9s
bEFuaW1hdG9yLmgiCiAjaW5jbHVkZSAiU2Nyb2xsaW5nQ29vcmRpbmF0b3IuaCIKICNpbmNsdWRl
ICJTZXR0aW5ncy5oIgpAQCAtMTc5MCw2ICsxNzkxLDcgQEAgdm9pZCBGcmFtZVZpZXc6OnZpZXdw
b3J0Q29udGVudHNDaGFuZ2VkKCkKICAgICAvLyBjaGVjayBpZiB3ZSBzaG91bGQgcmVzdW1lIGFu
aW1hdGVkIGltYWdlcyBvciB1bnRocm90dGxlIERPTSB0aW1lcnMuCiAgICAgcmVzdW1lVmlzaWJs
ZUltYWdlQW5pbWF0aW9uc0luY2x1ZGluZ1N1YmZyYW1lcygpOwogICAgIHVwZGF0ZVRocm90dGxl
ZERPTVRpbWVyc1N0YXRlKCk7CisgICAgdXBkYXRlU2NyaXB0ZWRBbmltYXRpb25zVGhyb3R0bGlu
Z1N0YXRlKCk7CiB9CiAKIGJvb2wgRnJhbWVWaWV3OjpmaXhlZEVsZW1lbnRzTGF5b3V0UmVsYXRp
dmVUb0ZyYW1lKCkgY29uc3QKQEAgLTIxNzIsNiArMjE3NCwyOCBAQCB2b2lkIEZyYW1lVmlldzo6
cmVzdW1lVmlzaWJsZUltYWdlQW5pbWF0aW9uc0luY2x1ZGluZ1N1YmZyYW1lcygpCiAgICAgfQog
fQogCit2b2lkIEZyYW1lVmlldzo6dXBkYXRlU2NyaXB0ZWRBbmltYXRpb25zVGhyb3R0bGluZ1N0
YXRlKGJvb2wgZm9yY2VUaHJvdHRsaW5nKQoreworI2lmIEVOQUJMRShSRVFVRVNUX0FOSU1BVElP
Tl9GUkFNRSkKKyAgICBpZiAoIWZyYW1lKCkuaXNNYWluRnJhbWUoKSAmJiBmcmFtZSgpLmRvY3Vt
ZW50KCkpIHsKKyAgICAgICAgaWYgKGF1dG8qIHNjcmlwdGVkQW5pbWF0aW9uQ29udHJvbGxlciA9
IGZyYW1lKCkuZG9jdW1lbnQoKS0+c2NyaXB0ZWRBbmltYXRpb25Db250cm9sbGVyKCkpIHsKKyAg
ICAgICAgICAgIGJvb2wgc2hvdWxkVGhyb3R0bGUgPSBmb3JjZVRocm90dGxpbmcgfHwgd2luZG93
VG9Db250ZW50cyh3aW5kb3dDbGlwUmVjdCgpKS5pc0VtcHR5KCk7CisgICAgICAgICAgICBzY3Jp
cHRlZEFuaW1hdGlvbkNvbnRyb2xsZXItPnNldFRocm90dGxlZChzaG91bGRUaHJvdHRsZSk7CisK
KyAgICAgICAgICAgIC8vIElmIHRoaXMgZnJhbWUgaXMgbm90IHZpc2libGUgdGhlbiBpdHMgc3Vi
ZnJhbWVzIHdvbid0IGJlIGVpdGhlci4KKyAgICAgICAgICAgIGZvcmNlVGhyb3R0bGluZyB8PSBz
aG91bGRUaHJvdHRsZTsKKyAgICAgICAgfQorICAgIH0KKworICAgIGZvciAoRnJhbWUqIGNoaWxk
RnJhbWUgPSBmcmFtZSgpLnRyZWUoKS5maXJzdENoaWxkKCk7IGNoaWxkRnJhbWU7IGNoaWxkRnJh
bWUgPSBjaGlsZEZyYW1lLT50cmVlKCkubmV4dFNpYmxpbmcoKSkgeworICAgICAgICBpZiAoYXV0
byogY2hpbGRWaWV3ID0gY2hpbGRGcmFtZS0+dmlldygpKQorICAgICAgICAgICAgY2hpbGRWaWV3
LT51cGRhdGVTY3JpcHRlZEFuaW1hdGlvbnNUaHJvdHRsaW5nU3RhdGUoZm9yY2VUaHJvdHRsaW5n
KTsKKyAgICB9CisjZWxzZQorICAgIFVOVVNFRF9QQVJBTShmb3JjZVRocm90dGxpbmcpOworI2Vu
ZGlmCit9CisKIHZvaWQgRnJhbWVWaWV3Ojp1cGRhdGVMYXllclBvc2l0aW9uc0FmdGVyU2Nyb2xs
aW5nKCkKIHsKICAgICAvLyBJZiB3ZSdyZSBzY3JvbGxpbmcgYXMgYSByZXN1bHQgb2YgdXBkYXRp
bmcgdGhlIHZpZXcgc2l6ZSBhZnRlciBsYXlvdXQsIHdlJ2xsIHVwZGF0ZSB3aWRnZXRzIGFuZCBs
YXllciBwb3NpdGlvbnMgc29vbiBhbnl3YXkuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL0ZyYW1lVmlldy5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuaAppbmRleCA5
ZGY0YjQyZjNiMDI2ZjVhM2ZiZGNmZGUzMWMxZDU4ZjQzZjI3OTk4Li40OTY2NzBjMDdlYTEzYTI1
NGJmM2IyYmYzZWE2OTUyMTgwZWFhZGQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L0ZyYW1lVmlldy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmgKQEAgLTU5
MCw2ICs1OTAsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgcGVyZm9ybVBvc3RMYXlvdXRUYXNrcygp
OwogICAgIHZvaWQgYXV0b1NpemVJZkVuYWJsZWQoKTsKICAgICB2b2lkIHVwZGF0ZVRocm90dGxl
ZERPTVRpbWVyc1N0YXRlKCk7CisgICAgdm9pZCB1cGRhdGVTY3JpcHRlZEFuaW1hdGlvbnNUaHJv
dHRsaW5nU3RhdGUoYm9vbCBmb3JjZVRocm90dGxpbmcgPSBmYWxzZSk7CiAKICAgICB2b2lkIHVw
ZGF0ZUxheWVyRmx1c2hUaHJvdHRsaW5nKCk7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBhZGp1
c3RUaWxlZEJhY2tpbmdDb3ZlcmFnZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVz
dGluZy9JbnRlcm5hbHMuY3BwIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3Bw
CmluZGV4IDIyNWNkMDhhYzJhNzE3ODUyMjMwNzA0M2QyOTVjOWI1MzVjYTlkMGYuLjlkMjkyMmYy
ODYwYzNiNzQwNjczMzdmMmJiOWIwNzdiZGUzYzliMTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0lu
dGVybmFscy5jcHAKQEAgLTk3LDYgKzk3LDcgQEAKICNpbmNsdWRlICJSZW5kZXJlZERvY3VtZW50
TWFya2VyLmgiCiAjaW5jbHVkZSAiUnVudGltZUVuYWJsZWRGZWF0dXJlcy5oIgogI2luY2x1ZGUg
IlNjaGVtZVJlZ2lzdHJ5LmgiCisjaW5jbHVkZSAiU2NyaXB0ZWRBbmltYXRpb25Db250cm9sbGVy
LmgiCiAjaW5jbHVkZSAiU2Nyb2xsaW5nQ29vcmRpbmF0b3IuaCIKICNpbmNsdWRlICJTZXJpYWxp
emVkU2NyaXB0VmFsdWUuaCIKICNpbmNsdWRlICJTZXR0aW5ncy5oIgpAQCAtNzY1LDYgKzc2Niwx
OCBAQCBib29sIEludGVybmFsczo6aXNUaW1lclRocm90dGxlZChpbnQgdGltZW91dElkLCBFeGNl
cHRpb25Db2RlJiBlYykKICAgICByZXR1cm4gdGltZXItPm1fdGhyb3R0bGVTdGF0ZSA9PSBET01U
aW1lcjo6U2hvdWxkVGhyb3R0bGU7CiB9CiAKK2Jvb2wgSW50ZXJuYWxzOjppc1JlcXVlc3RBbmlt
YXRpb25GcmFtZVRocm90dGxlZCgpIGNvbnN0Cit7CisjaWYgRU5BQkxFKFJFUVVFU1RfQU5JTUFU
SU9OX0ZSQU1FKQorICAgIGF1dG8qIHNjcmlwdGVkQW5pbWF0aW9uQ29udHJvbGxlciA9IGNvbnRl
eHREb2N1bWVudCgpLT5zY3JpcHRlZEFuaW1hdGlvbkNvbnRyb2xsZXIoKTsKKyAgICBpZiAoIXNj
cmlwdGVkQW5pbWF0aW9uQ29udHJvbGxlcikKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIHJl
dHVybiBzY3JpcHRlZEFuaW1hdGlvbkNvbnRyb2xsZXItPmlzVGhyb3R0bGVkKCk7CisjZWxzZQor
ICAgIHJldHVybiBmYWxzZTsKKyNlbmRpZgorfQorCiBTdHJpbmcgSW50ZXJuYWxzOjp2aXNpYmxl
UGxhY2Vob2xkZXIoRWxlbWVudCogZWxlbWVudCkKIHsKICAgICBpZiAoaXM8SFRNTFRleHRGb3Jt
Q29udHJvbEVsZW1lbnQ+KGVsZW1lbnQpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90
ZXN0aW5nL0ludGVybmFscy5oIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaApp
bmRleCA4NGEyOGVmZjNkNDlhOGI4ZjhkYjAxZjA0NzA4NmJhOTFiODc4NDM2Li5kYzBlYWY3ZTZi
MGNjYTkzMjE1YzIyOWFhZjkyNDQzOTNjMmQ4ZDZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS90ZXN0aW5nL0ludGVybmFscy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJu
YWxzLmgKQEAgLTExMyw2ICsxMTMsNyBAQCBwdWJsaWM6CiAKICAgICAvLyBET01UaW1lcnMgdGhy
b3R0bGluZyB0ZXN0aW5nLgogICAgIGJvb2wgaXNUaW1lclRocm90dGxlZChpbnQgdGltZW91dElk
LCBFeGNlcHRpb25Db2RlJik7CisgICAgYm9vbCBpc1JlcXVlc3RBbmltYXRpb25GcmFtZVRocm90
dGxlZCgpIGNvbnN0OwogCiAgICAgLy8gU3BhdGlhbCBOYXZpZ2F0aW9uIHRlc3RpbmcuCiAgICAg
dW5zaWduZWQgbGFzdFNwYXRpYWxOYXZpZ2F0aW9uQ2FuZGlkYXRlQ291bnQoRXhjZXB0aW9uQ29k
ZSYpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMu
aWRsIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaWRsCmluZGV4IDI1ZmVkNDk1
OTQ5ZmY4NjQxMDUyZTdhNjA0NDU3MzVmOWU3MjQ3MzEuLmQ1Y2MzZjRhMTc4MTYyMzE4OGUxYzhk
ZGExN2Y4MDAxM2FkMjVmODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50
ZXJuYWxzLmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5pZGwKQEAg
LTI3OSw2ICsyNzksOCBAQCBlbnVtIFJlc291cmNlTG9hZFByaW9yaXR5IHsKICAgICAvLyBRdWVy
eSBpZiBhIHRpbWVyIGlzIGN1cnJlbnRseSB0aHJvdHRsZWQsIHRvIGRlYnVnIHRpbWVyIHRocm90
dGxpbmcuCiAgICAgW1JhaXNlc0V4Y2VwdGlvbl0gYm9vbGVhbiBpc1RpbWVyVGhyb3R0bGVkKGxv
bmcgdGltZXJIYW5kbGUpOwogCisgICAgYm9vbGVhbiBpc1JlcXVlc3RBbmltYXRpb25GcmFtZVRo
cm90dGxlZCgpOworCiAgICAgW1JhaXNlc0V4Y2VwdGlvbl0gdm9pZCBzdGFydFRyYWNraW5nU3R5
bGVSZWNhbGNzKCk7CiAgICAgW1JhaXNlc0V4Y2VwdGlvbl0gdW5zaWduZWQgbG9uZyBzdHlsZVJl
Y2FsY0NvdW50KCk7CiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91
dFRlc3RzL0NoYW5nZUxvZwppbmRleCAwYzllYmM3YTViN2YyZWYyZGRmOTY5ZmVmYTAzMzU5ZDg4
ZDUwNTg3Li5jYjRkOWI4Y2MzMGExYzJhOTliZjFlNmJiMTJhMGFkZjdiZmI2NjdmIDEwMDY0NAot
LS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMTkgQEAKKzIwMTUtMDUtMDYgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNv
bT4KKworICAgICAgICBUaHJvdHRsZSBSZXF1ZXN0QW5pbWF0aW9uRnJhbWUgaW4gc3ViZnJhbWVz
IHRoYXQgYXJlIG91dHNpZGUgdGhlIHZpZXdwb3J0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDQ3MTgKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzIw
Njg4NzgyPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IEFkZCBsYXlvdXQgdGVzdCB0byB0ZXN0IHRoYXQgUmVxdWVzdEFuaW1hdGlvbkZyYW1lIGlzIHBy
b3Blcmx5IHRocm90dGxlZAorICAgICAgICBpbiBmcmFtZXMgdGhhdCBhcmUgb3V0c2lkZSB0aGUg
dmlld3BvcnQuCisKKyAgICAgICAgKiBmYXN0L2FuaW1hdGlvbi9yZXF1ZXN0LWFuaW1hdGlvbi1m
cmFtZS10aHJvdHRsZS1zdWJmcmFtZS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZh
c3QvYW5pbWF0aW9uL3JlcXVlc3QtYW5pbWF0aW9uLWZyYW1lLXRocm90dGxlLXN1YmZyYW1lLmh0
bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvYW5pbWF0aW9uL3Jlc291cmNlcy9yZXF1ZXN0QW5p
bWF0aW9uRnJhbWUtZnJhbWUtMi5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2FuaW1hdGlv
bi9yZXNvdXJjZXMvcmVxdWVzdEFuaW1hdGlvbkZyYW1lLWZyYW1lLmh0bWw6IEFkZGVkLgorCiAy
MDE1LTA1LTA2ICBNYXJ0aW4gUm9iaW5zb24gIDxtcm9iaW5zb25AaWdhbGlhLmNvbT4KIAogICAg
ICAgICBbRnJlZVR5cGVdIFZlcnRpY2FsIENKSyBnbHlwaHMgc2hvdWxkIG5vdCBiZSByZW5kZXJl
ZCB3aXRoIHN5bnRoZXRpYyBvYmxpcXVlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Fu
aW1hdGlvbi9yZXF1ZXN0LWFuaW1hdGlvbi1mcmFtZS10aHJvdHRsZS1zdWJmcmFtZS1leHBlY3Rl
ZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2FuaW1hdGlvbi9yZXF1ZXN0LWFuaW1hdGlvbi1mcmFt
ZS10aHJvdHRsZS1zdWJmcmFtZS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDU5ODNiMzMxMzI4
MzM0MjI1YmM4ODVkOGU0ZThiYzIyYjQ2Y2E4YwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2Zhc3QvYW5pbWF0aW9uL3JlcXVlc3QtYW5pbWF0aW9uLWZyYW1lLXRocm90dGxlLXN1YmZy
YW1lLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDI0IEBACitUZXN0cyB0aGF0IHJlcXVlc3RBbmlt
YXRpb25GcmFtZSBpcyB0aHJvdHRsZWQgaW4gc3ViZnJhbWVzIHRoYXQgYXJlIG91dHNpZGUgdGhl
IHZpZXdwb3J0CisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIg
bWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitGcmFtZSBpcyBpbml0
aWFsbHkgb3V0c2lkZSB0aGUgdmlld3BvcnQgc28gcmVxdWVzdEFuaW1hdGlvbkZyYW1lIHNob3Vs
ZCBiZSB0aHJvdHRsZWQKK1BBU1MgdGVzdEZyYW1lLmNvbnRlbnRXaW5kb3cuaW50ZXJuYWxzLmlz
UmVxdWVzdEFuaW1hdGlvbkZyYW1lVGhyb3R0bGVkKCkgYmVjYW1lIHRydWUKK1BBU1MgaW50ZXJu
YWxzLmlzUmVxdWVzdEFuaW1hdGlvbkZyYW1lVGhyb3R0bGVkKCkgaXMgZmFsc2UKK1BBU1MgdGVz
dEZyYW1lLmNvbnRlbnRXaW5kb3cuaW50ZXJuYWxzLmlzUmVxdWVzdEFuaW1hdGlvbkZyYW1lVGhy
b3R0bGVkKCkgaXMgdHJ1ZQorUEFTUyBncmFuZENoaWxkRnJhbWUuY29udGVudFdpbmRvdy5pbnRl
cm5hbHMuaXNSZXF1ZXN0QW5pbWF0aW9uRnJhbWVUaHJvdHRsZWQoKSBpcyB0cnVlCitTY3JvbGxp
bmcgZnJhbWUgaW50byB2aWV3LgorUmVxdWVzdEFuaW1hdGlvbkZyYW1lIHNob3VsZCBubyBsb25n
ZXIgYmUgdGhyb3R0bGVkCitQQVNTIGludGVybmFscy5pc1JlcXVlc3RBbmltYXRpb25GcmFtZVRo
cm90dGxlZCgpIGlzIGZhbHNlCitQQVNTIGdyYW5kQ2hpbGRGcmFtZS5jb250ZW50V2luZG93Lmlu
dGVybmFscy5pc1JlcXVlc3RBbmltYXRpb25GcmFtZVRocm90dGxlZCgpIGlzIGZhbHNlCitQQVNT
IHRlc3RGcmFtZS5jb250ZW50V2luZG93LmludGVybmFscy5pc1JlcXVlc3RBbmltYXRpb25GcmFt
ZVRocm90dGxlZCgpIGlzIGZhbHNlCitTY3JvbGxpbmcgZnJhbWUgb3V0IG9mIHZpZXcgYWdhaW4u
CitQQVNTIGludGVybmFscy5pc1JlcXVlc3RBbmltYXRpb25GcmFtZVRocm90dGxlZCgpIGlzIGZh
bHNlCitQQVNTIHRlc3RGcmFtZS5jb250ZW50V2luZG93LmludGVybmFscy5pc1JlcXVlc3RBbmlt
YXRpb25GcmFtZVRocm90dGxlZCgpIGJlY2FtZSB0cnVlCitQQVNTIHRlc3RGcmFtZS5jb250ZW50
V2luZG93LmludGVybmFscy5pc1JlcXVlc3RBbmltYXRpb25GcmFtZVRocm90dGxlZCgpIGlzIHRy
dWUKK1BBU1MgZ3JhbmRDaGlsZEZyYW1lLmNvbnRlbnRXaW5kb3cuaW50ZXJuYWxzLmlzUmVxdWVz
dEFuaW1hdGlvbkZyYW1lVGhyb3R0bGVkKCkgaXMgdHJ1ZQorUEFTUyBzdWNjZXNzZnVsbHlQYXJz
ZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zh
c3QvYW5pbWF0aW9uL3JlcXVlc3QtYW5pbWF0aW9uLWZyYW1lLXRocm90dGxlLXN1YmZyYW1lLmh0
bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2FuaW1hdGlvbi9yZXF1ZXN0LWFuaW1hdGlvbi1mcmFtZS10
aHJvdHRsZS1zdWJmcmFtZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmY4OTQwZjNlZDg5YTBhNTE1ZmVmZGFk
NWUwMmFmYzFhN2E1NGUzZjYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2Fu
aW1hdGlvbi9yZXF1ZXN0LWFuaW1hdGlvbi1mcmFtZS10aHJvdHRsZS1zdWJmcmFtZS5odG1sCkBA
IC0wLDAgKzEsNjEgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8Ym9keT4KKzxzY3JpcHQg
c3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdD4K
K2Rlc2NyaXB0aW9uKCJUZXN0cyB0aGF0IHJlcXVlc3RBbmltYXRpb25GcmFtZSBpcyB0aHJvdHRs
ZWQgaW4gc3ViZnJhbWVzIHRoYXQgYXJlIG91dHNpZGUgdGhlIHZpZXdwb3J0Iik7Cit3aW5kb3cu
anNUZXN0SXNBc3luYyA9IHRydWU7CisKK2Z1bmN0aW9uIGNoZWNrU3ViZnJhbWVzVGhyb3R0bGVk
KCkKK3sKKyAgICBzaG91bGRCZVRydWUoInRlc3RGcmFtZS5jb250ZW50V2luZG93LmludGVybmFs
cy5pc1JlcXVlc3RBbmltYXRpb25GcmFtZVRocm90dGxlZCgpIik7CisgICAgc2hvdWxkQmVUcnVl
KCJncmFuZENoaWxkRnJhbWUuY29udGVudFdpbmRvdy5pbnRlcm5hbHMuaXNSZXF1ZXN0QW5pbWF0
aW9uRnJhbWVUaHJvdHRsZWQoKSIpOworCisgICAgZmluaXNoSlNUZXN0KCk7Cit9CisKK2Z1bmN0
aW9uIHNjcm9sbEZyYW1lT3V0T2ZWaWV3KCkKK3sKKyAgICBkZWJ1ZygiU2Nyb2xsaW5nIGZyYW1l
IG91dCBvZiB2aWV3IGFnYWluLiIpOworICAgIHdpbmRvdy5zY3JvbGwoMCwgMCk7CisKKyAgICBz
aG91bGRCZUZhbHNlKCJpbnRlcm5hbHMuaXNSZXF1ZXN0QW5pbWF0aW9uRnJhbWVUaHJvdHRsZWQo
KSIpOworICAgIHNob3VsZEJlY29tZUVxdWFsKCJ0ZXN0RnJhbWUuY29udGVudFdpbmRvdy5pbnRl
cm5hbHMuaXNSZXF1ZXN0QW5pbWF0aW9uRnJhbWVUaHJvdHRsZWQoKSIsICJ0cnVlIiwgY2hlY2tT
dWJmcmFtZXNUaHJvdHRsZWQpOworfQorCitmdW5jdGlvbiBzY3JvbGxGcmFtZUludG9WaWV3KCkK
K3sKKyAgICBzaG91bGRCZUZhbHNlKCJpbnRlcm5hbHMuaXNSZXF1ZXN0QW5pbWF0aW9uRnJhbWVU
aHJvdHRsZWQoKSIpOworICAgIHNob3VsZEJlVHJ1ZSgidGVzdEZyYW1lLmNvbnRlbnRXaW5kb3cu
aW50ZXJuYWxzLmlzUmVxdWVzdEFuaW1hdGlvbkZyYW1lVGhyb3R0bGVkKCkiKTsKKyAgICBzaG91
bGRCZVRydWUoImdyYW5kQ2hpbGRGcmFtZS5jb250ZW50V2luZG93LmludGVybmFscy5pc1JlcXVl
c3RBbmltYXRpb25GcmFtZVRocm90dGxlZCgpIik7CisKKyAgICBkZWJ1ZygiU2Nyb2xsaW5nIGZy
YW1lIGludG8gdmlldy4iKTsKKyAgICB3aW5kb3cuaW50ZXJuYWxzLnNjcm9sbEVsZW1lbnRUb1Jl
Y3QodGVzdEZyYW1lLCAwLCAwLCAzMDAsIDMwMCk7CisKKyAgICBkZWJ1ZygiUmVxdWVzdEFuaW1h
dGlvbkZyYW1lIHNob3VsZCBubyBsb25nZXIgYmUgdGhyb3R0bGVkIik7CisgICAgc2hvdWxkQmVG
YWxzZSgiaW50ZXJuYWxzLmlzUmVxdWVzdEFuaW1hdGlvbkZyYW1lVGhyb3R0bGVkKCkiKTsKKyAg
ICBzaG91bGRCZUZhbHNlKCJncmFuZENoaWxkRnJhbWUuY29udGVudFdpbmRvdy5pbnRlcm5hbHMu
aXNSZXF1ZXN0QW5pbWF0aW9uRnJhbWVUaHJvdHRsZWQoKSIpOworICAgIHNob3VsZEJlRmFsc2Uo
InRlc3RGcmFtZS5jb250ZW50V2luZG93LmludGVybmFscy5pc1JlcXVlc3RBbmltYXRpb25GcmFt
ZVRocm90dGxlZCgpIik7CisKKyAgICBzY3JvbGxGcmFtZU91dE9mVmlldygpOworfQorCitmdW5j
dGlvbiBydW5UZXN0KCkKK3sKKyAgICB0ZXN0RnJhbWUgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJ
ZCgidGVzdEZyYW1lIik7CisgICAgZ3JhbmRDaGlsZEZyYW1lID0gdGVzdEZyYW1lLmNvbnRlbnRE
b2N1bWVudC5nZXRFbGVtZW50QnlJZCgiZ3JhbmRDaGlsZEZyYW1lIik7CisgICAgZGVidWcoIkZy
YW1lIGlzIGluaXRpYWxseSBvdXRzaWRlIHRoZSB2aWV3cG9ydCBzbyByZXF1ZXN0QW5pbWF0aW9u
RnJhbWUgc2hvdWxkIGJlIHRocm90dGxlZCIpOworICAgIHNob3VsZEJlY29tZUVxdWFsKCJ0ZXN0
RnJhbWUuY29udGVudFdpbmRvdy5pbnRlcm5hbHMuaXNSZXF1ZXN0QW5pbWF0aW9uRnJhbWVUaHJv
dHRsZWQoKSIsICJ0cnVlIiwgc2Nyb2xsRnJhbWVJbnRvVmlldyk7Cit9CisKK3ZhciBpID0gMDsK
K3JlcXVlc3RBbmltYXRpb25GcmFtZShmdW5jdGlvbigpIHsKKyAgICBpKys7Cit9KTsKKzwvc2Ny
aXB0PgorPGRpdiBzdHlsZT0icG9zaXRpb246IHJlbGF0aXZlOyB3aWR0aDogMTYwMHB4OyBoZWln
aHQ6IDI0MDBweDsgYmFja2dyb3VuZC1jb2xvcjogZ3JlZW47Ij4KKyAgICA8aWZyYW1lIGlkPSJ0
ZXN0RnJhbWUiIHNyYz0icmVzb3VyY2VzL3JlcXVlc3RBbmltYXRpb25GcmFtZS1mcmFtZS5odG1s
IiBzdHlsZT0icG9zaXRpb246YWJzb2x1dGU7IGxlZnQ6IDYwMHB4OyB0b3A6IDgwMHB4OyIgb25s
b2FkPSJydW5UZXN0KCkiPjwvaWZyYW1lPgorPC9kaXY+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVz
b3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2FuaW1hdGlvbi9yZXNvdXJjZXMvcmVxdWVzdEFuaW1h
dGlvbkZyYW1lLWZyYW1lLTIuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvYW5pbWF0aW9uL3Jlc291
cmNlcy9yZXF1ZXN0QW5pbWF0aW9uRnJhbWUtZnJhbWUtMi5odG1sCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjUxMTI1
ZDk3MThhYzA2N2UxYzAxZTdiMDUwMWY4NmFkZTI1MmM4MDIKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9mYXN0L2FuaW1hdGlvbi9yZXNvdXJjZXMvcmVxdWVzdEFuaW1hdGlvbkZyYW1l
LWZyYW1lLTIuaHRtbApAQCAtMCwwICsxLDExIEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgor
PGJvZHk+Cis8c2NyaXB0PgordmFyIGkgPSAwOworcmVxdWVzdEFuaW1hdGlvbkZyYW1lKGZ1bmN0
aW9uKCkgeworICBpKys7Cit9KTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9hbmltYXRpb24vcmVzb3VyY2VzL3JlcXVlc3RBbmltYXRp
b25GcmFtZS1mcmFtZS5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9hbmltYXRpb24vcmVzb3VyY2Vz
L3JlcXVlc3RBbmltYXRpb25GcmFtZS1mcmFtZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmMwZDc2MzZlMmM0
NTNjNTIzYWUxMjU5NjZjYTI3NjRiYjk4NjI4YzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9mYXN0L2FuaW1hdGlvbi9yZXNvdXJjZXMvcmVxdWVzdEFuaW1hdGlvbkZyYW1lLWZyYW1l
Lmh0bWwKQEAgLTAsMCArMSwxMiBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxib2R5Pgor
PGlmcmFtZSBpZD0iZ3JhbmRDaGlsZEZyYW1lIiBzcmM9InJlcXVlc3RBbmltYXRpb25GcmFtZS1m
cmFtZS0yLmh0bWwiPjwvaWZyYW1lPgorPHNjcmlwdD4KK3ZhciBpID0gMDsKK3JlcXVlc3RBbmlt
YXRpb25GcmFtZShmdW5jdGlvbigpIHsKKyAgaSsrOworfSk7Cis8L3NjcmlwdD4KKzwvYm9keT4K
KzwvaHRtbD4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>252605</attachid>
            <date>2015-05-07 11:58:53 -0700</date>
            <delta_ts>2015-05-07 13:55:30 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-144718-20150507115735.patch</filename>
            <type>text/plain</type>
            <size>22503</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTgzODgyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNWViNTM3NzUxYjQ3MDkz
NDI5MTE0YWM5ODk5ZDIzODY0YmZiZTNlMC4uMzQxM2U4NDhhMGRlMTkwZjNiNDM5NGFhZWI1MzI5
NTIxZDk1YmZjNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM5IEBACisyMDE1LTA1LTA3ICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgVGhyb3R0bGUgUmVxdWVzdEFu
aW1hdGlvbkZyYW1lIGluIHN1YmZyYW1lcyB0aGF0IGFyZSBvdXRzaWRlIHRoZSB2aWV3cG9ydAor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ0NzE4Cisg
ICAgICAgIDxyZGFyOi8vcHJvYmxlbS8yMDY4ODc4Mj4KKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaHJvdHRsZSBSZXF1ZXN0QW5pbWF0aW9uRnJhbWUg
aW4gc3ViZnJhbWVzIHRoYXQgYXJlIG91dHNpZGUgdGhlCisgICAgICAgIHZpZXdwb3J0IG9yIGhh
dmUgImRpc3BsYXk6IG5vbmUiIGZvciBwZXJmb3JtYW5jZSBhbmQgcG93ZXIuCisKKyAgICAgICAg
VGVzdHM6IGZhc3QvYW5pbWF0aW9uL3JlcXVlc3QtYW5pbWF0aW9uLWZyYW1lLXRocm90dGxlLXN1
YmZyYW1lLWRpc3BsYXktbm9uZS5odG1sCisgICAgICAgICAgICAgICBmYXN0L2FuaW1hdGlvbi9y
ZXF1ZXN0LWFuaW1hdGlvbi1mcmFtZS10aHJvdHRsZS1zdWJmcmFtZS5odG1sCisKKyAgICAgICAg
KiBkb20vRG9jdW1lbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjpzY3JpcHRlZEFu
aW1hdGlvbkNvbnRyb2xsZXIpOgorICAgICAgICAqIGRvbS9TY3JpcHRlZEFuaW1hdGlvbkNvbnRy
b2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0ZWRBbmltYXRpb25Db250cm9sbGVy
OjpzZXRUaHJvdHRsZWQpOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0ZWRBbmltYXRpb25Db250
cm9sbGVyOjppc1Rocm90dGxlZCk6CisgICAgICAgICogZG9tL1NjcmlwdGVkQW5pbWF0aW9uQ29u
dHJvbGxlci5oOgorICAgICAgICAqIHBhZ2UvRnJhbWVWaWV3LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkZyYW1lVmlldzo6dmlld3BvcnRDb250ZW50c0NoYW5nZWQpOgorICAgICAgICAoV2ViQ29y
ZTo6RnJhbWVWaWV3OjphcHBseVJlY3Vyc2l2ZWx5KToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1l
Vmlldzo6cmVzdW1lVmlzaWJsZUltYWdlQW5pbWF0aW9ucyk6CisgICAgICAgIChXZWJDb3JlOjpG
cmFtZVZpZXc6OnVwZGF0ZVNjcmlwdGVkQW5pbWF0aW9uc1Rocm90dGxpbmdTdGF0ZSk6CisgICAg
ICAgIChXZWJDb3JlOjpGcmFtZVZpZXc6OnJlc3VtZVZpc2libGVJbWFnZUFuaW1hdGlvbnNJbmNs
dWRpbmdTdWJmcmFtZXMpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVWaWV3Ojp1cGRhdGVUaHJv
dHRsZWRET01UaW1lcnNTdGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZVZpZXc6OnNjcm9s
bFBvc2l0aW9uQ2hhbmdlZCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpGcmFtZVZpZXc6
OnNlbmRSZXNpemVFdmVudElmTmVlZGVkKTogRGVsZXRlZC4KKyAgICAgICAgKiBwYWdlL0ZyYW1l
Vmlldy5oOgorICAgICAgICAqIHRlc3RpbmcvSW50ZXJuYWxzLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkludGVybmFsczo6aXNSZXF1ZXN0QW5pbWF0aW9uRnJhbWVUaHJvdHRsZWQpOgorICAgICAg
ICAoV2ViQ29yZTo6SW50ZXJuYWxzOjppc1RpbWVyVGhyb3R0bGVkKTogRGVsZXRlZC4KKyAgICAg
ICAgKiB0ZXN0aW5nL0ludGVybmFscy5oOgorICAgICAgICAqIHRlc3RpbmcvSW50ZXJuYWxzLmlk
bDoKKwogMjAxNS0wNS0wNiAgRXJpYyBDYXJsc29uICA8ZXJpYy5jYXJsc29uQGFwcGxlLmNvbT4K
IAogICAgICAgICBbaU9TXSByZW1vdmUgc29tZSB1bm5lY2Vzc2FyeSBpT1Mtb25seSBtZWRpYSBj
b2RlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaCBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9Eb2N1bWVudC5oCmluZGV4IGQwZDhhZGU4MTNmYmZhMjYyM2VkNzc0ZDg1ODZi
MWVjYTFmZmI4NTIuLjQxODg0M2Y4OGRlMTg3MmJiMDdiYzY1OTI0MDRmN2QxYTI0NmE1N2MgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9Eb2N1bWVudC5oCkBAIC05NDYsNiArOTQ2LDkgQEAgcHVibGljOgogCiAgICAgdmly
dHVhbCB2b2lkIHBvc3RUYXNrKFRhc2spIG92ZXJyaWRlIGZpbmFsOyAvLyBFeGVjdXRlcyB0aGUg
dGFzayBvbiBjb250ZXh0J3MgdGhyZWFkIGFzeW5jaHJvbm91c2x5LgogCisjaWYgRU5BQkxFKFJF
UVVFU1RfQU5JTUFUSU9OX0ZSQU1FKQorICAgIFNjcmlwdGVkQW5pbWF0aW9uQ29udHJvbGxlciog
c2NyaXB0ZWRBbmltYXRpb25Db250cm9sbGVyKCkgeyByZXR1cm4gbV9zY3JpcHRlZEFuaW1hdGlv
bkNvbnRyb2xsZXIuZ2V0KCk7IH0KKyNlbmRpZgogICAgIHZvaWQgc3VzcGVuZFNjcmlwdGVkQW5p
bWF0aW9uQ29udHJvbGxlckNhbGxiYWNrcygpOwogICAgIHZvaWQgcmVzdW1lU2NyaXB0ZWRBbmlt
YXRpb25Db250cm9sbGVyQ2FsbGJhY2tzKCk7CiAgICAgdm9pZCBzY3JpcHRlZEFuaW1hdGlvbkNv
bnRyb2xsZXJTZXRUaHJvdHRsZWQoYm9vbCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9k
b20vU2NyaXB0ZWRBbmltYXRpb25Db250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9T
Y3JpcHRlZEFuaW1hdGlvbkNvbnRyb2xsZXIuY3BwCmluZGV4IDdlZGViZDQ0MTFjYWJkOWM2ZmZh
NDlkNmJmMWJjOWE1MzE0YjAzZTcuLjU1ZDYyMmRkZjRkODU4Y2Q3ODZhMjdjMGU2ZWE4ZTFiOTFi
MzExM2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRlZEFuaW1hdGlvbkNv
bnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRlZEFuaW1hdGlvbkNv
bnRyb2xsZXIuY3BwCkBAIC0zNCw2ICszNCw3IEBACiAjaW5jbHVkZSAiRG9jdW1lbnRMb2FkZXIu
aCIKICNpbmNsdWRlICJGcmFtZVZpZXcuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JJbnN0cnVtZW50
YXRpb24uaCIKKyNpbmNsdWRlICJNYWluRnJhbWUuaCIKICNpbmNsdWRlICJSZXF1ZXN0QW5pbWF0
aW9uRnJhbWVDYWxsYmFjay5oIgogI2luY2x1ZGUgIlNldHRpbmdzLmgiCiAjaW5jbHVkZSA8d3Rm
L1JlZi5oPgpAQCAtODQsNiArODUsOCBAQCB2b2lkIFNjcmlwdGVkQW5pbWF0aW9uQ29udHJvbGxl
cjo6c2V0VGhyb3R0bGVkKGJvb2wgaXNUaHJvdHRsZWQpCiAgICAgaWYgKG1faXNUaHJvdHRsZWQg
PT0gaXNUaHJvdHRsZWQpCiAgICAgICAgIHJldHVybjsKIAorICAgIExPRyhBbmltYXRpb25zLCAi
JXAgLSBTZXR0aW5nIFJlcXVlc3RBbmltYXRpb25GcmFtZSB0aHJvdHRsaW5nIHN0YXRlIHRvICVk
IGluIGZyYW1lICVwIChpc01haW5GcmFtZTogJWQpIiwgdGhpcywgaXNUaHJvdHRsZWQsIG1fZG9j
dW1lbnQtPmZyYW1lKCksIG1fZG9jdW1lbnQtPmZyYW1lKCkgPyBtX2RvY3VtZW50LT5mcmFtZSgp
LT5pc01haW5GcmFtZSgpIDogMCk7CisKICAgICBtX2lzVGhyb3R0bGVkID0gaXNUaHJvdHRsZWQ7
CiAgICAgaWYgKG1fYW5pbWF0aW9uVGltZXIuaXNBY3RpdmUoKSkgewogICAgICAgICBtX2FuaW1h
dGlvblRpbWVyLnN0b3AoKTsKQEAgLTk0LDYgKzk3LDE1IEBAIHZvaWQgU2NyaXB0ZWRBbmltYXRp
b25Db250cm9sbGVyOjpzZXRUaHJvdHRsZWQoYm9vbCBpc1Rocm90dGxlZCkKICNlbmRpZgogfQog
Citib29sIFNjcmlwdGVkQW5pbWF0aW9uQ29udHJvbGxlcjo6aXNUaHJvdHRsZWQoKSBjb25zdAor
eworI2lmIFVTRShSRVFVRVNUX0FOSU1BVElPTl9GUkFNRV9USU1FUikgJiYgVVNFKFJFUVVFU1Rf
QU5JTUFUSU9OX0ZSQU1FX0RJU1BMQVlfTU9OSVRPUikKKyAgICByZXR1cm4gbV9pc1Rocm90dGxl
ZDsKKyNlbHNlCisgICAgcmV0dXJuIGZhbHNlOworI2VuZGlmCit9CisKIFNjcmlwdGVkQW5pbWF0
aW9uQ29udHJvbGxlcjo6Q2FsbGJhY2tJZCBTY3JpcHRlZEFuaW1hdGlvbkNvbnRyb2xsZXI6OnJl
Z2lzdGVyQ2FsbGJhY2soUGFzc1JlZlB0cjxSZXF1ZXN0QW5pbWF0aW9uRnJhbWVDYWxsYmFjaz4g
Y2FsbGJhY2spCiB7CiAgICAgU2NyaXB0ZWRBbmltYXRpb25Db250cm9sbGVyOjpDYWxsYmFja0lk
IGlkID0gKyttX25leHRDYWxsYmFja0lkOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9t
L1NjcmlwdGVkQW5pbWF0aW9uQ29udHJvbGxlci5oIGIvU291cmNlL1dlYkNvcmUvZG9tL1Njcmlw
dGVkQW5pbWF0aW9uQ29udHJvbGxlci5oCmluZGV4IDdiMjhlNzllYzg1YjRiYTFmMTZlMGU5YzE3
ZDA1MzU3ZTJiMWQ0ZGIuLjg5YWIwMTkxYjRjODJhODViYjQ1ZTMyZjA5MjQ5YjM4OTAyNGU1NDAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRlZEFuaW1hdGlvbkNvbnRyb2xs
ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0ZWRBbmltYXRpb25Db250cm9sbGVy
LmgKQEAgLTY4LDYgKzY4LDcgQEAgcHVibGljOgogICAgIHZvaWQgc3VzcGVuZCgpOwogICAgIHZv
aWQgcmVzdW1lKCk7CiAgICAgdm9pZCBzZXRUaHJvdHRsZWQoYm9vbCk7CisgICAgV0VCQ09SRV9F
WFBPUlQgYm9vbCBpc1Rocm90dGxlZCgpIGNvbnN0OwogCiAgICAgdm9pZCB3aW5kb3dTY3JlZW5E
aWRDaGFuZ2UoUGxhdGZvcm1EaXNwbGF5SUQpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL0ZyYW1lVmlldy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAK
aW5kZXggMTI1ODYzNmNkMzA5YmY2NTJhNTM3YjQzYzMxZDA0NmMzOTQyNjZhMS4uYjllMWNlOTRh
ZjQ1YWY4N2RlMTBlMzk5ZTBlMDAyMjdhZGJjZDgxNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGFnZS9GcmFtZVZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3
LmNwcApAQCAtODAsNiArODAsNyBAQAogI2luY2x1ZGUgIlJlbmRlcldpZGdldC5oIgogI2luY2x1
ZGUgIlNWR0RvY3VtZW50LmgiCiAjaW5jbHVkZSAiU1ZHU1ZHRWxlbWVudC5oIgorI2luY2x1ZGUg
IlNjcmlwdGVkQW5pbWF0aW9uQ29udHJvbGxlci5oIgogI2luY2x1ZGUgIlNjcm9sbEFuaW1hdG9y
LmgiCiAjaW5jbHVkZSAiU2Nyb2xsaW5nQ29vcmRpbmF0b3IuaCIKICNpbmNsdWRlICJTZXR0aW5n
cy5oIgpAQCAtMTc4OCw4ICsxNzg5LDExIEBAIHZvaWQgRnJhbWVWaWV3Ojp2aWV3cG9ydENvbnRl
bnRzQ2hhbmdlZCgpCiB7CiAgICAgLy8gV2hlbiB0aGUgdmlld3BvcnQgY29udGVudHMgY2hhbmdl
cyAoc2Nyb2xsLCByZXNpemUsIHN0eWxlIHJlY2FsYywgbGF5b3V0LCAuLi4pLAogICAgIC8vIGNo
ZWNrIGlmIHdlIHNob3VsZCByZXN1bWUgYW5pbWF0ZWQgaW1hZ2VzIG9yIHVudGhyb3R0bGUgRE9N
IHRpbWVycy4KLSAgICByZXN1bWVWaXNpYmxlSW1hZ2VBbmltYXRpb25zSW5jbHVkaW5nU3ViZnJh
bWVzKCk7Ci0gICAgdXBkYXRlVGhyb3R0bGVkRE9NVGltZXJzU3RhdGUoKTsKKyAgICBhcHBseVJl
Y3Vyc2l2ZWx5KFtdIChGcmFtZVZpZXcmIGZyYW1lVmlldywgSW50UmVjdCB2aXNpYmxlUmVjdCkg
eworICAgICAgICBmcmFtZVZpZXcucmVzdW1lVmlzaWJsZUltYWdlQW5pbWF0aW9ucyh2aXNpYmxl
UmVjdCk7CisgICAgICAgIGZyYW1lVmlldy51cGRhdGVUaHJvdHRsZWRET01UaW1lcnNTdGF0ZSh2
aXNpYmxlUmVjdCk7CisgICAgICAgIGZyYW1lVmlldy51cGRhdGVTY3JpcHRlZEFuaW1hdGlvbnNU
aHJvdHRsaW5nU3RhdGUodmlzaWJsZVJlY3QpOworICAgIH0pOwogfQogCiBib29sIEZyYW1lVmll
dzo6Zml4ZWRFbGVtZW50c0xheW91dFJlbGF0aXZlVG9GcmFtZSgpIGNvbnN0CkBAIC0yMTUwLDI4
ICsyMTU0LDYwIEBAIHZvaWQgRnJhbWVWaWV3OjpzY3JvbGxQb3NpdGlvbkNoYW5nZWQoY29uc3Qg
SW50UG9pbnQmIG9sZFBvc2l0aW9uLCBjb25zdCBJbnRQb2luCiAgICAgdmlld3BvcnRDb250ZW50
c0NoYW5nZWQoKTsKIH0KIAotdm9pZCBGcmFtZVZpZXc6OnJlc3VtZVZpc2libGVJbWFnZUFuaW1h
dGlvbnNJbmNsdWRpbmdTdWJmcmFtZXMoKQordm9pZCBGcmFtZVZpZXc6OmFwcGx5UmVjdXJzaXZl
bHkoY29uc3Qgc3RkOjpmdW5jdGlvbjx2b2lkIChGcmFtZVZpZXcmIGZyYW1lVmlldywgSW50UmVj
dCB3aW5kb3dDbGlwUmVjdCk+JiBhcHBseSkKIHsKLSAgICBhdXRvKiByZW5kZXJWaWV3ID0gZnJh
bWUoKS5jb250ZW50UmVuZGVyZXIoKTsKLSAgICBpZiAoIXJlbmRlclZpZXcpCi0gICAgICAgIHJl
dHVybjsKLQogICAgIEludFJlY3Qgd2luZG93Q2xpcFJlY3QgPSB0aGlzLT53aW5kb3dDbGlwUmVj
dCgpOwogICAgIGF1dG8gdmlzaWJsZVJlY3QgPSB3aW5kb3dUb0NvbnRlbnRzKHdpbmRvd0NsaXBS
ZWN0KTsKLSAgICBpZiAodmlzaWJsZVJlY3QuaXNFbXB0eSgpKQotICAgICAgICByZXR1cm47Ci0K
LSAgICAvLyBSZXN1bWUgcGF1c2VkIGltYWdlIGFuaW1hdGlvbnMgaW4gdGhpcyBmcmFtZS4KLSAg
ICByZW5kZXJWaWV3LT5yZXN1bWVQYXVzZWRJbWFnZUFuaW1hdGlvbnNJZk5lZWRlZCh2aXNpYmxl
UmVjdCk7CisgICAgYXBwbHkoKnRoaXMsIHZpc2libGVSZWN0KTsKIAogICAgIC8vIFJlY3Vyc2l2
ZSBjYWxsIGZvciBzdWJmcmFtZXMuIFdlIGNhY2hlIHRoZSBjdXJyZW50IEZyYW1lVmlldydzIHdp
bmRvd0NsaXBSZWN0IHRvIGF2b2lkIHJlY29tcHV0aW5nIGl0IGZvciBldmVyeSBzdWJmcmFtZS4K
ICAgICBUZW1wb3JhcnlDaGFuZ2U8SW50UmVjdCo+IHdpbmRvd0NsaXBSZWN0Q2FjaGUobV9jYWNo
ZWRXaW5kb3dDbGlwUmVjdCwgJndpbmRvd0NsaXBSZWN0KTsKICAgICBmb3IgKEZyYW1lKiBjaGls
ZEZyYW1lID0gZnJhbWUoKS50cmVlKCkuZmlyc3RDaGlsZCgpOyBjaGlsZEZyYW1lOyBjaGlsZEZy
YW1lID0gY2hpbGRGcmFtZS0+dHJlZSgpLm5leHRTaWJsaW5nKCkpIHsKICAgICAgICAgaWYgKGF1
dG8qIGNoaWxkVmlldyA9IGNoaWxkRnJhbWUtPnZpZXcoKSkKLSAgICAgICAgICAgIGNoaWxkVmll
dy0+cmVzdW1lVmlzaWJsZUltYWdlQW5pbWF0aW9uc0luY2x1ZGluZ1N1YmZyYW1lcygpOworICAg
ICAgICAgICAgY2hpbGRWaWV3LT5hcHBseVJlY3Vyc2l2ZWx5KGFwcGx5KTsKICAgICB9CiB9CiAK
K3ZvaWQgRnJhbWVWaWV3OjpyZXN1bWVWaXNpYmxlSW1hZ2VBbmltYXRpb25zKEludFJlY3Qgdmlz
aWJsZVJlY3QpCit7CisgICAgaWYgKHZpc2libGVSZWN0LmlzRW1wdHkoKSkKKyAgICAgICAgcmV0
dXJuOworCisgICAgaWYgKGF1dG8qIHJlbmRlclZpZXcgPSBmcmFtZSgpLmNvbnRlbnRSZW5kZXJl
cigpKQorICAgICAgICByZW5kZXJWaWV3LT5yZXN1bWVQYXVzZWRJbWFnZUFuaW1hdGlvbnNJZk5l
ZWRlZCh2aXNpYmxlUmVjdCk7Cit9CisKK3ZvaWQgRnJhbWVWaWV3Ojp1cGRhdGVTY3JpcHRlZEFu
aW1hdGlvbnNUaHJvdHRsaW5nU3RhdGUoSW50UmVjdCB2aXNpYmxlUmVjdCkKK3sKKyNpZiBFTkFC
TEUoUkVRVUVTVF9BTklNQVRJT05fRlJBTUUpCisgICAgaWYgKGZyYW1lKCkuaXNNYWluRnJhbWUo
KSkKKyAgICAgICAgcmV0dXJuOworCisgICAgYXV0byogZG9jdW1lbnQgPSBmcmFtZSgpLmRvY3Vt
ZW50KCk7CisgICAgaWYgKCFkb2N1bWVudCkKKyAgICAgICAgcmV0dXJuOworCisgICAgYXV0byog
c2NyaXB0ZWRBbmltYXRpb25Db250cm9sbGVyID0gZG9jdW1lbnQtPnNjcmlwdGVkQW5pbWF0aW9u
Q29udHJvbGxlcigpOworICAgIGlmICghc2NyaXB0ZWRBbmltYXRpb25Db250cm9sbGVyKQorICAg
ICAgICByZXR1cm47CisKKyAgICAvLyBGSVhNRTogVGhpcyBkb2Vzbid0IHdvcmsgZm9yIHN1YmZy
YW1lcyBvZiBhICJkaXNwbGF5OiBub25lIiBmcmFtZSBiZWNhdXNlCisgICAgLy8gdGhleSBoYXZl
IGEgbm9uLW51bGwgb3duZXJSZW5kZXJlci4KKyAgICBib29sIHNob3VsZFRocm90dGxlID0gIWZy
YW1lKCkub3duZXJSZW5kZXJlcigpIHx8IHZpc2libGVSZWN0LmlzRW1wdHkoKTsKKyAgICBzY3Jp
cHRlZEFuaW1hdGlvbkNvbnRyb2xsZXItPnNldFRocm90dGxlZChzaG91bGRUaHJvdHRsZSk7Cisj
ZWxzZQorICAgIFVOVVNFRF9QQVJBTSh2aXNpYmxlUmVjdCk7CisjZW5kaWYKK30KKworCit2b2lk
IEZyYW1lVmlldzo6cmVzdW1lVmlzaWJsZUltYWdlQW5pbWF0aW9uc0luY2x1ZGluZ1N1YmZyYW1l
cygpCit7CisgICAgYXBwbHlSZWN1cnNpdmVseShbXSAoRnJhbWVWaWV3JiBmcmFtZVZpZXcsIElu
dFJlY3QgdmlzaWJsZVJlY3QpIHsKKyAgICAgICAgZnJhbWVWaWV3LnJlc3VtZVZpc2libGVJbWFn
ZUFuaW1hdGlvbnModmlzaWJsZVJlY3QpOworICAgIH0pOworfQorCiB2b2lkIEZyYW1lVmlldzo6
dXBkYXRlTGF5ZXJQb3NpdGlvbnNBZnRlclNjcm9sbGluZygpCiB7CiAgICAgLy8gSWYgd2UncmUg
c2Nyb2xsaW5nIGFzIGEgcmVzdWx0IG9mIHVwZGF0aW5nIHRoZSB2aWV3IHNpemUgYWZ0ZXIgbGF5
b3V0LCB3ZSdsbCB1cGRhdGUgd2lkZ2V0cyBhbmQgbGF5ZXIgcG9zaXRpb25zIHNvb24gYW55d2F5
LgpAQCAtMzExNCwxMyArMzE1MCwxMSBAQCB2b2lkIEZyYW1lVmlldzo6dW5yZWdpc3RlclRocm90
dGxlZERPTVRpbWVyKERPTVRpbWVyKiB0aW1lcikKICAgICBtX3Rocm90dGxlZFRpbWVycy5yZW1v
dmUodGltZXIpOwogfQogCi12b2lkIEZyYW1lVmlldzo6dXBkYXRlVGhyb3R0bGVkRE9NVGltZXJz
U3RhdGUoKQordm9pZCBGcmFtZVZpZXc6OnVwZGF0ZVRocm90dGxlZERPTVRpbWVyc1N0YXRlKElu
dFJlY3QgdmlzaWJsZVJlY3QpCiB7CiAgICAgaWYgKG1fdGhyb3R0bGVkVGltZXJzLmlzRW1wdHko
KSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgSW50UmVjdCB2aXNpYmxlUmVjdCA9IHdpbmRvd1Rv
Q29udGVudHMod2luZG93Q2xpcFJlY3QoKSk7Ci0KICAgICAvLyBEbyBub3QgaXRlcmF0ZSBvdmVy
IHRoZSBIYXNoU2V0IGJlY2F1c2UgY2FsbGluZyBET01UaW1lcjo6dXBkYXRlVGhyb3R0bGluZ1N0
YXRlQWZ0ZXJWaWV3cG9ydENoYW5nZSgpCiAgICAgLy8gbWF5IGNhdXNlIHRpbWVycyB0byByZW1v
dmUgdGhlbXNlbHZlcyBmcm9tIGl0IHdoaWxlIHdlIGFyZSBpdGVyYXRpbmcuCiAgICAgVmVjdG9y
PERPTVRpbWVyKj4gdGltZXJzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFt
ZVZpZXcuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmgKaW5kZXggOWRmNGI0MmYz
YjAyNmY1YTNmYmRjZmRlMzFjMWQ1OGY0M2YyNzk5OC4uZjVkZTdjNTRmMmZiZmZkZjQyNjdlOTMw
ZjZhNzdjZWNiODEwMTI0MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZp
ZXcuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5oCkBAIC01ODksNyArNTg5
LDExIEBAIHByaXZhdGU6CiAgICAgdm9pZCBmb3JjZUxheW91dFBhcmVudFZpZXdJZk5lZWRlZCgp
OwogICAgIHZvaWQgcGVyZm9ybVBvc3RMYXlvdXRUYXNrcygpOwogICAgIHZvaWQgYXV0b1NpemVJ
ZkVuYWJsZWQoKTsKLSAgICB2b2lkIHVwZGF0ZVRocm90dGxlZERPTVRpbWVyc1N0YXRlKCk7CisK
KyAgICB2b2lkIGFwcGx5UmVjdXJzaXZlbHkoY29uc3Qgc3RkOjpmdW5jdGlvbjx2b2lkIChGcmFt
ZVZpZXcmIGZyYW1lVmlldywgSW50UmVjdCB2aXNpYmxlUmVjdCk+Jik7CisgICAgdm9pZCB1cGRh
dGVUaHJvdHRsZWRET01UaW1lcnNTdGF0ZShJbnRSZWN0IHZpc2libGVSZWN0KTsKKyAgICB2b2lk
IHJlc3VtZVZpc2libGVJbWFnZUFuaW1hdGlvbnMoSW50UmVjdCB2aXNpYmxlUmVjdCk7CisgICAg
dm9pZCB1cGRhdGVTY3JpcHRlZEFuaW1hdGlvbnNUaHJvdHRsaW5nU3RhdGUoSW50UmVjdCB2aXNp
YmxlUmVjdCk7CiAKICAgICB2b2lkIHVwZGF0ZUxheWVyRmx1c2hUaHJvdHRsaW5nKCk7CiAgICAg
V0VCQ09SRV9FWFBPUlQgdm9pZCBhZGp1c3RUaWxlZEJhY2tpbmdDb3ZlcmFnZSgpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwIGIvU291cmNlL1dlYkNv
cmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCmluZGV4IDIyNWNkMDhhYzJhNzE3ODUyMjMwNzA0M2Qy
OTVjOWI1MzVjYTlkMGYuLjlkMjkyMmYyODYwYzNiNzQwNjczMzdmMmJiOWIwNzdiZGUzYzliMTAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKQEAgLTk3LDYgKzk3LDcgQEAKICNp
bmNsdWRlICJSZW5kZXJlZERvY3VtZW50TWFya2VyLmgiCiAjaW5jbHVkZSAiUnVudGltZUVuYWJs
ZWRGZWF0dXJlcy5oIgogI2luY2x1ZGUgIlNjaGVtZVJlZ2lzdHJ5LmgiCisjaW5jbHVkZSAiU2Ny
aXB0ZWRBbmltYXRpb25Db250cm9sbGVyLmgiCiAjaW5jbHVkZSAiU2Nyb2xsaW5nQ29vcmRpbmF0
b3IuaCIKICNpbmNsdWRlICJTZXJpYWxpemVkU2NyaXB0VmFsdWUuaCIKICNpbmNsdWRlICJTZXR0
aW5ncy5oIgpAQCAtNzY1LDYgKzc2NiwxOCBAQCBib29sIEludGVybmFsczo6aXNUaW1lclRocm90
dGxlZChpbnQgdGltZW91dElkLCBFeGNlcHRpb25Db2RlJiBlYykKICAgICByZXR1cm4gdGltZXIt
Pm1fdGhyb3R0bGVTdGF0ZSA9PSBET01UaW1lcjo6U2hvdWxkVGhyb3R0bGU7CiB9CiAKK2Jvb2wg
SW50ZXJuYWxzOjppc1JlcXVlc3RBbmltYXRpb25GcmFtZVRocm90dGxlZCgpIGNvbnN0Cit7Cisj
aWYgRU5BQkxFKFJFUVVFU1RfQU5JTUFUSU9OX0ZSQU1FKQorICAgIGF1dG8qIHNjcmlwdGVkQW5p
bWF0aW9uQ29udHJvbGxlciA9IGNvbnRleHREb2N1bWVudCgpLT5zY3JpcHRlZEFuaW1hdGlvbkNv
bnRyb2xsZXIoKTsKKyAgICBpZiAoIXNjcmlwdGVkQW5pbWF0aW9uQ29udHJvbGxlcikKKyAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgIHJldHVybiBzY3JpcHRlZEFuaW1hdGlvbkNvbnRyb2xsZXIt
PmlzVGhyb3R0bGVkKCk7CisjZWxzZQorICAgIHJldHVybiBmYWxzZTsKKyNlbmRpZgorfQorCiBT
dHJpbmcgSW50ZXJuYWxzOjp2aXNpYmxlUGxhY2Vob2xkZXIoRWxlbWVudCogZWxlbWVudCkKIHsK
ICAgICBpZiAoaXM8SFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQ+KGVsZW1lbnQpKSB7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5oIGIvU291cmNlL1dlYkNv
cmUvdGVzdGluZy9JbnRlcm5hbHMuaAppbmRleCA4NGEyOGVmZjNkNDlhOGI4ZjhkYjAxZjA0NzA4
NmJhOTFiODc4NDM2Li5kYzBlYWY3ZTZiMGNjYTkzMjE1YzIyOWFhZjkyNDQzOTNjMmQ4ZDZkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmgKQEAgLTExMyw2ICsxMTMsNyBAQCBwdWJsaWM6
CiAKICAgICAvLyBET01UaW1lcnMgdGhyb3R0bGluZyB0ZXN0aW5nLgogICAgIGJvb2wgaXNUaW1l
clRocm90dGxlZChpbnQgdGltZW91dElkLCBFeGNlcHRpb25Db2RlJik7CisgICAgYm9vbCBpc1Jl
cXVlc3RBbmltYXRpb25GcmFtZVRocm90dGxlZCgpIGNvbnN0OwogCiAgICAgLy8gU3BhdGlhbCBO
YXZpZ2F0aW9uIHRlc3RpbmcuCiAgICAgdW5zaWduZWQgbGFzdFNwYXRpYWxOYXZpZ2F0aW9uQ2Fu
ZGlkYXRlQ291bnQoRXhjZXB0aW9uQ29kZSYpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaWRsIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRl
cm5hbHMuaWRsCmluZGV4IDI1ZmVkNDk1OTQ5ZmY4NjQxMDUyZTdhNjA0NDU3MzVmOWU3MjQ3MzEu
LmQ1Y2MzZjRhMTc4MTYyMzE4OGUxYzhkZGExN2Y4MDAxM2FkMjVmODYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS90
ZXN0aW5nL0ludGVybmFscy5pZGwKQEAgLTI3OSw2ICsyNzksOCBAQCBlbnVtIFJlc291cmNlTG9h
ZFByaW9yaXR5IHsKICAgICAvLyBRdWVyeSBpZiBhIHRpbWVyIGlzIGN1cnJlbnRseSB0aHJvdHRs
ZWQsIHRvIGRlYnVnIHRpbWVyIHRocm90dGxpbmcuCiAgICAgW1JhaXNlc0V4Y2VwdGlvbl0gYm9v
bGVhbiBpc1RpbWVyVGhyb3R0bGVkKGxvbmcgdGltZXJIYW5kbGUpOwogCisgICAgYm9vbGVhbiBp
c1JlcXVlc3RBbmltYXRpb25GcmFtZVRocm90dGxlZCgpOworCiAgICAgW1JhaXNlc0V4Y2VwdGlv
bl0gdm9pZCBzdGFydFRyYWNraW5nU3R5bGVSZWNhbGNzKCk7CiAgICAgW1JhaXNlc0V4Y2VwdGlv
bl0gdW5zaWduZWQgbG9uZyBzdHlsZVJlY2FsY0NvdW50KCk7CiAKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCAwYzllYmM3YTVi
N2YyZWYyZGRmOTY5ZmVmYTAzMzU5ZDg4ZDUwNTg3Li40NzhiN2YyYjJkZGRmODRmMWIxYjA3N2U0
N2QzOTYxNmEzODRlNTk3IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIv
TGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjQgQEAKKzIwMTUtMDUtMDcgIENocmlz
IER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBUaHJvdHRsZSBSZXF1ZXN0QW5p
bWF0aW9uRnJhbWUgaW4gc3ViZnJhbWVzIHRoYXQgYXJlIG91dHNpZGUgdGhlIHZpZXdwb3J0Cisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDQ3MTgKKyAg
ICAgICAgPHJkYXI6Ly9wcm9ibGVtLzIwNjg4NzgyPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgICogZmFzdC9hbmltYXRpb24vcmVxdWVzdC1hbmltYXRp
b24tZnJhbWUtdGhyb3R0bGUtc3ViZnJhbWUtZGlzcGxheS1ub25lLWV4cGVjdGVkLnR4dDogQWRk
ZWQuCisgICAgICAgICogZmFzdC9hbmltYXRpb24vcmVxdWVzdC1hbmltYXRpb24tZnJhbWUtdGhy
b3R0bGUtc3ViZnJhbWUtZGlzcGxheS1ub25lLmh0bWw6IEFkZGVkLgorICAgICAgICBBZGQgbGF5
b3V0IHRlc3QgdG8gdGVzdCB0aGF0IFJlcXVlc3RBbmltYXRpb25GcmFtZSBpcyBwcm9wZXJseSB0
aHJvdHRsZWQKKyAgICAgICAgaW4gImRpc3BsYXk6IG5vbmUiIHN1YmZyYW1lcy4KKworICAgICAg
ICAqIGZhc3QvYW5pbWF0aW9uL3JlcXVlc3QtYW5pbWF0aW9uLWZyYW1lLXRocm90dGxlLXN1YmZy
YW1lLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9hbmltYXRpb24vcmVxdWVz
dC1hbmltYXRpb24tZnJhbWUtdGhyb3R0bGUtc3ViZnJhbWUuaHRtbDogQWRkZWQuCisgICAgICAg
IEFkZCBsYXlvdXQgdGVzdCB0byB0ZXN0IHRoYXQgUmVxdWVzdEFuaW1hdGlvbkZyYW1lIGlzIHBy
b3Blcmx5IHRocm90dGxlZAorICAgICAgICBpbiBmcmFtZXMgdGhhdCBhcmUgb3V0c2lkZSB0aGUg
dmlld3BvcnQuCisKKyAgICAgICAgKiBmYXN0L2FuaW1hdGlvbi9yZXNvdXJjZXMvcmVxdWVzdEFu
aW1hdGlvbkZyYW1lLWZyYW1lLTIuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9hbmltYXRp
b24vcmVzb3VyY2VzL3JlcXVlc3RBbmltYXRpb25GcmFtZS1mcmFtZS5odG1sOiBBZGRlZC4KKwog
MjAxNS0wNS0wNiAgTWFydGluIFJvYmluc29uICA8bXJvYmluc29uQGlnYWxpYS5jb20+CiAKICAg
ICAgICAgW0ZyZWVUeXBlXSBWZXJ0aWNhbCBDSksgZ2x5cGhzIHNob3VsZCBub3QgYmUgcmVuZGVy
ZWQgd2l0aCBzeW50aGV0aWMgb2JsaXF1ZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9h
bmltYXRpb24vcmVxdWVzdC1hbmltYXRpb24tZnJhbWUtdGhyb3R0bGUtc3ViZnJhbWUtZGlzcGxh
eS1ub25lLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvYW5pbWF0aW9uL3JlcXVlc3Qt
YW5pbWF0aW9uLWZyYW1lLXRocm90dGxlLXN1YmZyYW1lLWRpc3BsYXktbm9uZS1leHBlY3RlZC50
eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uMDJkMGY1MDlhMzZmMDM1ZjkzYmI2MWYyM2I0MDAyNDc5YjA5MmI0MQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvYW5pbWF0aW9uL3JlcXVlc3QtYW5p
bWF0aW9uLWZyYW1lLXRocm90dGxlLXN1YmZyYW1lLWRpc3BsYXktbm9uZS1leHBlY3RlZC50eHQK
QEAgLTAsMCArMSwxOSBAQAorVGVzdHMgdGhhdCByZXF1ZXN0QW5pbWF0aW9uRnJhbWUgaXMgdGhy
b3R0bGVkIGluIHN1YmZyYW1lcyB0aGF0IGFyZSBkaXNwbGF5Om5vbmUKKworT24gc3VjY2Vzcywg
eW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRF
U1QgQ09NUExFVEUiLgorCisKK0ZyYW1lIGlzIGluaXRpYWxseSB2aXNpYmlsZSBzbyByZXF1ZXN0
QW5pbWF0aW9uRnJhbWUgc2hvdWxkIG5vdCBiZSB0aHJvdHRsZWQKK1BBU1MgdGVzdEZyYW1lLmNv
bnRlbnRXaW5kb3cuaW50ZXJuYWxzLmlzUmVxdWVzdEFuaW1hdGlvbkZyYW1lVGhyb3R0bGVkKCkg
YmVjYW1lIGZhbHNlCitQQVNTIHRlc3RGcmFtZS5jb250ZW50V2luZG93LmludGVybmFscy5pc1Jl
cXVlc3RBbmltYXRpb25GcmFtZVRocm90dGxlZCgpIGlzIGZhbHNlCitIaWRpbmcgc3ViZnJhbWUu
Cit0ZXN0RnJhbWUuc3R5bGUuZGlzcGxheSA9ICdub25lJzsKK1BBU1MgdGVzdEZyYW1lLmNvbnRl
bnRXaW5kb3cuaW50ZXJuYWxzLmlzUmVxdWVzdEFuaW1hdGlvbkZyYW1lVGhyb3R0bGVkKCkgYmVj
YW1lIHRydWUKK1BBU1MgdGVzdEZyYW1lLmNvbnRlbnRXaW5kb3cuaW50ZXJuYWxzLmlzUmVxdWVz
dEFuaW1hdGlvbkZyYW1lVGhyb3R0bGVkKCkgaXMgdHJ1ZQorU2hvdyBzdWJmcmFtZSBhZ2Fpbgor
dGVzdEZyYW1lLnN0eWxlLmRpc3BsYXkgPSAnYmxvY2snOworUEFTUyB0ZXN0RnJhbWUuY29udGVu
dFdpbmRvdy5pbnRlcm5hbHMuaXNSZXF1ZXN0QW5pbWF0aW9uRnJhbWVUaHJvdHRsZWQoKSBiZWNh
bWUgZmFsc2UKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVU
RQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2FuaW1hdGlvbi9yZXF1ZXN0LWFuaW1h
dGlvbi1mcmFtZS10aHJvdHRsZS1zdWJmcmFtZS1kaXNwbGF5LW5vbmUuaHRtbCBiL0xheW91dFRl
c3RzL2Zhc3QvYW5pbWF0aW9uL3JlcXVlc3QtYW5pbWF0aW9uLWZyYW1lLXRocm90dGxlLXN1YmZy
YW1lLWRpc3BsYXktbm9uZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmU4ZDExY2Y5MmJmNzcxOTQ0NjgyMjUw
MmMzZmJjMGMxMWZmYTE4ZGEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2Fu
aW1hdGlvbi9yZXF1ZXN0LWFuaW1hdGlvbi1mcmFtZS10aHJvdHRsZS1zdWJmcmFtZS1kaXNwbGF5
LW5vbmUuaHRtbApAQCAtMCwwICsxLDQ0IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGJv
ZHk+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3Njcmlw
dD4KKzxzY3JpcHQ+CitkZXNjcmlwdGlvbigiVGVzdHMgdGhhdCByZXF1ZXN0QW5pbWF0aW9uRnJh
bWUgaXMgdGhyb3R0bGVkIGluIHN1YmZyYW1lcyB0aGF0IGFyZSBkaXNwbGF5Om5vbmUiKTsKK3dp
bmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKworZnVuY3Rpb24gY2hlY2tTdWJmcmFtZVRocm90
dGxlZCgpCit7CisgICAgc2hvdWxkQmVUcnVlKCJ0ZXN0RnJhbWUuY29udGVudFdpbmRvdy5pbnRl
cm5hbHMuaXNSZXF1ZXN0QW5pbWF0aW9uRnJhbWVUaHJvdHRsZWQoKSIpOworCisgICAgZGVidWco
IlNob3cgc3ViZnJhbWUgYWdhaW4iKTsKKyAgICBldmFsQW5kTG9nKCJ0ZXN0RnJhbWUuc3R5bGUu
ZGlzcGxheSA9ICdibG9jayc7Iik7CisKKyAgICBzaG91bGRCZWNvbWVFcXVhbCgidGVzdEZyYW1l
LmNvbnRlbnRXaW5kb3cuaW50ZXJuYWxzLmlzUmVxdWVzdEFuaW1hdGlvbkZyYW1lVGhyb3R0bGVk
KCkiLCAiZmFsc2UiLCBmaW5pc2hKU1Rlc3QpOworfQorCitmdW5jdGlvbiBoaWRlRnJhbWUoKQor
eworICAgIHNob3VsZEJlRmFsc2UoInRlc3RGcmFtZS5jb250ZW50V2luZG93LmludGVybmFscy5p
c1JlcXVlc3RBbmltYXRpb25GcmFtZVRocm90dGxlZCgpIik7CisKKyAgICBkZWJ1ZygiSGlkaW5n
IHN1YmZyYW1lLiIpOworICAgIGV2YWxBbmRMb2coInRlc3RGcmFtZS5zdHlsZS5kaXNwbGF5ID0g
J25vbmUnOyIpOworCisgICAgc2hvdWxkQmVjb21lRXF1YWwoInRlc3RGcmFtZS5jb250ZW50V2lu
ZG93LmludGVybmFscy5pc1JlcXVlc3RBbmltYXRpb25GcmFtZVRocm90dGxlZCgpIiwgInRydWUi
LCBjaGVja1N1YmZyYW1lVGhyb3R0bGVkKTsKK30KKworZnVuY3Rpb24gcnVuVGVzdCgpCit7Cisg
ICAgdGVzdEZyYW1lID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInRlc3RGcmFtZSIpOworICAg
IGRlYnVnKCJGcmFtZSBpcyBpbml0aWFsbHkgdmlzaWJpbGUgc28gcmVxdWVzdEFuaW1hdGlvbkZy
YW1lIHNob3VsZCBub3QgYmUgdGhyb3R0bGVkIik7CisgICAgc2hvdWxkQmVjb21lRXF1YWwoInRl
c3RGcmFtZS5jb250ZW50V2luZG93LmludGVybmFscy5pc1JlcXVlc3RBbmltYXRpb25GcmFtZVRo
cm90dGxlZCgpIiwgImZhbHNlIiwgaGlkZUZyYW1lKTsKK30KKwordmFyIGkgPSAwOworcmVxdWVz
dEFuaW1hdGlvbkZyYW1lKGZ1bmN0aW9uKCkgeworICAgIGkrKzsKK30pOworPC9zY3JpcHQ+Cis8
aWZyYW1lIGlkPSJ0ZXN0RnJhbWUiIHNyYz0icmVzb3VyY2VzL3JlcXVlc3RBbmltYXRpb25GcmFt
ZS1mcmFtZS5odG1sIiBvbmxvYWQ9InJ1blRlc3QoKSI+PC9pZnJhbWU+Cis8c2NyaXB0IHNyYz0i
Li4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0
bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2FuaW1hdGlvbi9yZXF1ZXN0LWFuaW1h
dGlvbi1mcmFtZS10aHJvdHRsZS1zdWJmcmFtZS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9m
YXN0L2FuaW1hdGlvbi9yZXF1ZXN0LWFuaW1hdGlvbi1mcmFtZS10aHJvdHRsZS1zdWJmcmFtZS1l
eHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDU5ODNiMzMxMzI4MzM0MjI1YmM4ODVkOGU0ZThiYzIy
YjQ2Y2E4YwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvYW5pbWF0aW9uL3Jl
cXVlc3QtYW5pbWF0aW9uLWZyYW1lLXRocm90dGxlLXN1YmZyYW1lLWV4cGVjdGVkLnR4dApAQCAt
MCwwICsxLDI0IEBACitUZXN0cyB0aGF0IHJlcXVlc3RBbmltYXRpb25GcmFtZSBpcyB0aHJvdHRs
ZWQgaW4gc3ViZnJhbWVzIHRoYXQgYXJlIG91dHNpZGUgdGhlIHZpZXdwb3J0CisKK09uIHN1Y2Nl
c3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5
ICJURVNUIENPTVBMRVRFIi4KKworCitGcmFtZSBpcyBpbml0aWFsbHkgb3V0c2lkZSB0aGUgdmll
d3BvcnQgc28gcmVxdWVzdEFuaW1hdGlvbkZyYW1lIHNob3VsZCBiZSB0aHJvdHRsZWQKK1BBU1Mg
dGVzdEZyYW1lLmNvbnRlbnRXaW5kb3cuaW50ZXJuYWxzLmlzUmVxdWVzdEFuaW1hdGlvbkZyYW1l
VGhyb3R0bGVkKCkgYmVjYW1lIHRydWUKK1BBU1MgaW50ZXJuYWxzLmlzUmVxdWVzdEFuaW1hdGlv
bkZyYW1lVGhyb3R0bGVkKCkgaXMgZmFsc2UKK1BBU1MgdGVzdEZyYW1lLmNvbnRlbnRXaW5kb3cu
aW50ZXJuYWxzLmlzUmVxdWVzdEFuaW1hdGlvbkZyYW1lVGhyb3R0bGVkKCkgaXMgdHJ1ZQorUEFT
UyBncmFuZENoaWxkRnJhbWUuY29udGVudFdpbmRvdy5pbnRlcm5hbHMuaXNSZXF1ZXN0QW5pbWF0
aW9uRnJhbWVUaHJvdHRsZWQoKSBpcyB0cnVlCitTY3JvbGxpbmcgZnJhbWUgaW50byB2aWV3Lgor
UmVxdWVzdEFuaW1hdGlvbkZyYW1lIHNob3VsZCBubyBsb25nZXIgYmUgdGhyb3R0bGVkCitQQVNT
IGludGVybmFscy5pc1JlcXVlc3RBbmltYXRpb25GcmFtZVRocm90dGxlZCgpIGlzIGZhbHNlCitQ
QVNTIGdyYW5kQ2hpbGRGcmFtZS5jb250ZW50V2luZG93LmludGVybmFscy5pc1JlcXVlc3RBbmlt
YXRpb25GcmFtZVRocm90dGxlZCgpIGlzIGZhbHNlCitQQVNTIHRlc3RGcmFtZS5jb250ZW50V2lu
ZG93LmludGVybmFscy5pc1JlcXVlc3RBbmltYXRpb25GcmFtZVRocm90dGxlZCgpIGlzIGZhbHNl
CitTY3JvbGxpbmcgZnJhbWUgb3V0IG9mIHZpZXcgYWdhaW4uCitQQVNTIGludGVybmFscy5pc1Jl
cXVlc3RBbmltYXRpb25GcmFtZVRocm90dGxlZCgpIGlzIGZhbHNlCitQQVNTIHRlc3RGcmFtZS5j
b250ZW50V2luZG93LmludGVybmFscy5pc1JlcXVlc3RBbmltYXRpb25GcmFtZVRocm90dGxlZCgp
IGJlY2FtZSB0cnVlCitQQVNTIHRlc3RGcmFtZS5jb250ZW50V2luZG93LmludGVybmFscy5pc1Jl
cXVlc3RBbmltYXRpb25GcmFtZVRocm90dGxlZCgpIGlzIHRydWUKK1BBU1MgZ3JhbmRDaGlsZEZy
YW1lLmNvbnRlbnRXaW5kb3cuaW50ZXJuYWxzLmlzUmVxdWVzdEFuaW1hdGlvbkZyYW1lVGhyb3R0
bGVkKCkgaXMgdHJ1ZQorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENP
TVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvYW5pbWF0aW9uL3JlcXVlc3Qt
YW5pbWF0aW9uLWZyYW1lLXRocm90dGxlLXN1YmZyYW1lLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0
L2FuaW1hdGlvbi9yZXF1ZXN0LWFuaW1hdGlvbi1mcmFtZS10aHJvdHRsZS1zdWJmcmFtZS5odG1s
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLmY4OTQwZjNlZDg5YTBhNTE1ZmVmZGFkNWUwMmFmYzFhN2E1NGUzZjYKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2FuaW1hdGlvbi9yZXF1ZXN0LWFuaW1h
dGlvbi1mcmFtZS10aHJvdHRsZS1zdWJmcmFtZS5odG1sCkBAIC0wLDAgKzEsNjEgQEAKKzwhRE9D
VFlQRSBodG1sPgorPGh0bWw+Cis8Ym9keT4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMv
anMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdD4KK2Rlc2NyaXB0aW9uKCJUZXN0cyB0
aGF0IHJlcXVlc3RBbmltYXRpb25GcmFtZSBpcyB0aHJvdHRsZWQgaW4gc3ViZnJhbWVzIHRoYXQg
YXJlIG91dHNpZGUgdGhlIHZpZXdwb3J0Iik7Cit3aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7
CisKK2Z1bmN0aW9uIGNoZWNrU3ViZnJhbWVzVGhyb3R0bGVkKCkKK3sKKyAgICBzaG91bGRCZVRy
dWUoInRlc3RGcmFtZS5jb250ZW50V2luZG93LmludGVybmFscy5pc1JlcXVlc3RBbmltYXRpb25G
cmFtZVRocm90dGxlZCgpIik7CisgICAgc2hvdWxkQmVUcnVlKCJncmFuZENoaWxkRnJhbWUuY29u
dGVudFdpbmRvdy5pbnRlcm5hbHMuaXNSZXF1ZXN0QW5pbWF0aW9uRnJhbWVUaHJvdHRsZWQoKSIp
OworCisgICAgZmluaXNoSlNUZXN0KCk7Cit9CisKK2Z1bmN0aW9uIHNjcm9sbEZyYW1lT3V0T2ZW
aWV3KCkKK3sKKyAgICBkZWJ1ZygiU2Nyb2xsaW5nIGZyYW1lIG91dCBvZiB2aWV3IGFnYWluLiIp
OworICAgIHdpbmRvdy5zY3JvbGwoMCwgMCk7CisKKyAgICBzaG91bGRCZUZhbHNlKCJpbnRlcm5h
bHMuaXNSZXF1ZXN0QW5pbWF0aW9uRnJhbWVUaHJvdHRsZWQoKSIpOworICAgIHNob3VsZEJlY29t
ZUVxdWFsKCJ0ZXN0RnJhbWUuY29udGVudFdpbmRvdy5pbnRlcm5hbHMuaXNSZXF1ZXN0QW5pbWF0
aW9uRnJhbWVUaHJvdHRsZWQoKSIsICJ0cnVlIiwgY2hlY2tTdWJmcmFtZXNUaHJvdHRsZWQpOwor
fQorCitmdW5jdGlvbiBzY3JvbGxGcmFtZUludG9WaWV3KCkKK3sKKyAgICBzaG91bGRCZUZhbHNl
KCJpbnRlcm5hbHMuaXNSZXF1ZXN0QW5pbWF0aW9uRnJhbWVUaHJvdHRsZWQoKSIpOworICAgIHNo
b3VsZEJlVHJ1ZSgidGVzdEZyYW1lLmNvbnRlbnRXaW5kb3cuaW50ZXJuYWxzLmlzUmVxdWVzdEFu
aW1hdGlvbkZyYW1lVGhyb3R0bGVkKCkiKTsKKyAgICBzaG91bGRCZVRydWUoImdyYW5kQ2hpbGRG
cmFtZS5jb250ZW50V2luZG93LmludGVybmFscy5pc1JlcXVlc3RBbmltYXRpb25GcmFtZVRocm90
dGxlZCgpIik7CisKKyAgICBkZWJ1ZygiU2Nyb2xsaW5nIGZyYW1lIGludG8gdmlldy4iKTsKKyAg
ICB3aW5kb3cuaW50ZXJuYWxzLnNjcm9sbEVsZW1lbnRUb1JlY3QodGVzdEZyYW1lLCAwLCAwLCAz
MDAsIDMwMCk7CisKKyAgICBkZWJ1ZygiUmVxdWVzdEFuaW1hdGlvbkZyYW1lIHNob3VsZCBubyBs
b25nZXIgYmUgdGhyb3R0bGVkIik7CisgICAgc2hvdWxkQmVGYWxzZSgiaW50ZXJuYWxzLmlzUmVx
dWVzdEFuaW1hdGlvbkZyYW1lVGhyb3R0bGVkKCkiKTsKKyAgICBzaG91bGRCZUZhbHNlKCJncmFu
ZENoaWxkRnJhbWUuY29udGVudFdpbmRvdy5pbnRlcm5hbHMuaXNSZXF1ZXN0QW5pbWF0aW9uRnJh
bWVUaHJvdHRsZWQoKSIpOworICAgIHNob3VsZEJlRmFsc2UoInRlc3RGcmFtZS5jb250ZW50V2lu
ZG93LmludGVybmFscy5pc1JlcXVlc3RBbmltYXRpb25GcmFtZVRocm90dGxlZCgpIik7CisKKyAg
ICBzY3JvbGxGcmFtZU91dE9mVmlldygpOworfQorCitmdW5jdGlvbiBydW5UZXN0KCkKK3sKKyAg
ICB0ZXN0RnJhbWUgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgidGVzdEZyYW1lIik7CisgICAg
Z3JhbmRDaGlsZEZyYW1lID0gdGVzdEZyYW1lLmNvbnRlbnREb2N1bWVudC5nZXRFbGVtZW50QnlJ
ZCgiZ3JhbmRDaGlsZEZyYW1lIik7CisgICAgZGVidWcoIkZyYW1lIGlzIGluaXRpYWxseSBvdXRz
aWRlIHRoZSB2aWV3cG9ydCBzbyByZXF1ZXN0QW5pbWF0aW9uRnJhbWUgc2hvdWxkIGJlIHRocm90
dGxlZCIpOworICAgIHNob3VsZEJlY29tZUVxdWFsKCJ0ZXN0RnJhbWUuY29udGVudFdpbmRvdy5p
bnRlcm5hbHMuaXNSZXF1ZXN0QW5pbWF0aW9uRnJhbWVUaHJvdHRsZWQoKSIsICJ0cnVlIiwgc2Ny
b2xsRnJhbWVJbnRvVmlldyk7Cit9CisKK3ZhciBpID0gMDsKK3JlcXVlc3RBbmltYXRpb25GcmFt
ZShmdW5jdGlvbigpIHsKKyAgICBpKys7Cit9KTsKKzwvc2NyaXB0PgorPGRpdiBzdHlsZT0icG9z
aXRpb246IHJlbGF0aXZlOyB3aWR0aDogMTYwMHB4OyBoZWlnaHQ6IDI0MDBweDsgYmFja2dyb3Vu
ZC1jb2xvcjogZ3JlZW47Ij4KKyAgICA8aWZyYW1lIGlkPSJ0ZXN0RnJhbWUiIHNyYz0icmVzb3Vy
Y2VzL3JlcXVlc3RBbmltYXRpb25GcmFtZS1mcmFtZS5odG1sIiBzdHlsZT0icG9zaXRpb246YWJz
b2x1dGU7IGxlZnQ6IDYwMHB4OyB0b3A6IDgwMHB4OyIgb25sb2FkPSJydW5UZXN0KCkiPjwvaWZy
YW1lPgorPC9kaXY+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5q
cyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9m
YXN0L2FuaW1hdGlvbi9yZXNvdXJjZXMvcmVxdWVzdEFuaW1hdGlvbkZyYW1lLWZyYW1lLTIuaHRt
bCBiL0xheW91dFRlc3RzL2Zhc3QvYW5pbWF0aW9uL3Jlc291cmNlcy9yZXF1ZXN0QW5pbWF0aW9u
RnJhbWUtZnJhbWUtMi5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjUxMTI1ZDk3MThhYzA2N2UxYzAxZTdiMDUw
MWY4NmFkZTI1MmM4MDIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2FuaW1h
dGlvbi9yZXNvdXJjZXMvcmVxdWVzdEFuaW1hdGlvbkZyYW1lLWZyYW1lLTIuaHRtbApAQCAtMCww
ICsxLDExIEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGJvZHk+Cis8c2NyaXB0PgordmFy
IGkgPSAwOworcmVxdWVzdEFuaW1hdGlvbkZyYW1lKGZ1bmN0aW9uKCkgeworICBpKys7Cit9KTsK
Kzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFz
dC9hbmltYXRpb24vcmVzb3VyY2VzL3JlcXVlc3RBbmltYXRpb25GcmFtZS1mcmFtZS5odG1sIGIv
TGF5b3V0VGVzdHMvZmFzdC9hbmltYXRpb24vcmVzb3VyY2VzL3JlcXVlc3RBbmltYXRpb25GcmFt
ZS1mcmFtZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmMwZDc2MzZlMmM0NTNjNTIzYWUxMjU5NjZjYTI3NjRi
Yjk4NjI4YzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2FuaW1hdGlvbi9y
ZXNvdXJjZXMvcmVxdWVzdEFuaW1hdGlvbkZyYW1lLWZyYW1lLmh0bWwKQEAgLTAsMCArMSwxMiBA
QAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxib2R5PgorPGlmcmFtZSBpZD0iZ3JhbmRDaGls
ZEZyYW1lIiBzcmM9InJlcXVlc3RBbmltYXRpb25GcmFtZS1mcmFtZS0yLmh0bWwiPjwvaWZyYW1l
PgorPHNjcmlwdD4KK3ZhciBpID0gMDsKK3JlcXVlc3RBbmltYXRpb25GcmFtZShmdW5jdGlvbigp
IHsKKyAgaSsrOworfSk7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>252623</attachid>
            <date>2015-05-07 13:55:35 -0700</date>
            <delta_ts>2015-05-07 20:36:28 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-144718-20150507135418.patch</filename>
            <type>text/plain</type>
            <size>22618</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTgzODgyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNWViNTM3NzUxYjQ3MDkz
NDI5MTE0YWM5ODk5ZDIzODY0YmZiZTNlMC4uNWY5MGFlZTFkNzM2NTMyYmQ2ODhmYzNmNjNlNmU4
YzZhYmUxMDRlNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM5IEBACisyMDE1LTA1LTA3ICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgVGhyb3R0bGUgUmVxdWVzdEFu
aW1hdGlvbkZyYW1lIGluIHN1YmZyYW1lcyB0aGF0IGFyZSBvdXRzaWRlIHRoZSB2aWV3cG9ydAor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ0NzE4Cisg
ICAgICAgIDxyZGFyOi8vcHJvYmxlbS8yMDY4ODc4Mj4KKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaHJvdHRsZSBSZXF1ZXN0QW5pbWF0aW9uRnJhbWUg
aW4gc3ViZnJhbWVzIHRoYXQgYXJlIG91dHNpZGUgdGhlCisgICAgICAgIHZpZXdwb3J0IG9yIGhh
dmUgImRpc3BsYXk6IG5vbmUiIGZvciBwZXJmb3JtYW5jZSBhbmQgcG93ZXIuCisKKyAgICAgICAg
VGVzdHM6IGZhc3QvYW5pbWF0aW9uL3JlcXVlc3QtYW5pbWF0aW9uLWZyYW1lLXRocm90dGxlLXN1
YmZyYW1lLWRpc3BsYXktbm9uZS5odG1sCisgICAgICAgICAgICAgICBmYXN0L2FuaW1hdGlvbi9y
ZXF1ZXN0LWFuaW1hdGlvbi1mcmFtZS10aHJvdHRsZS1zdWJmcmFtZS5odG1sCisKKyAgICAgICAg
KiBkb20vRG9jdW1lbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjpzY3JpcHRlZEFu
aW1hdGlvbkNvbnRyb2xsZXIpOgorICAgICAgICAqIGRvbS9TY3JpcHRlZEFuaW1hdGlvbkNvbnRy
b2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0ZWRBbmltYXRpb25Db250cm9sbGVy
OjpzZXRUaHJvdHRsZWQpOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0ZWRBbmltYXRpb25Db250
cm9sbGVyOjppc1Rocm90dGxlZCk6CisgICAgICAgICogZG9tL1NjcmlwdGVkQW5pbWF0aW9uQ29u
dHJvbGxlci5oOgorICAgICAgICAqIHBhZ2UvRnJhbWVWaWV3LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkZyYW1lVmlldzo6dmlld3BvcnRDb250ZW50c0NoYW5nZWQpOgorICAgICAgICAoV2ViQ29y
ZTo6RnJhbWVWaWV3OjphcHBseVJlY3Vyc2l2ZWx5R2l2ZW5WaXNpYmxlUmVjdCk6CisgICAgICAg
IChXZWJDb3JlOjpGcmFtZVZpZXc6OnJlc3VtZVZpc2libGVJbWFnZUFuaW1hdGlvbnMpOgorICAg
ICAgICAoV2ViQ29yZTo6RnJhbWVWaWV3Ojp1cGRhdGVTY3JpcHRlZEFuaW1hdGlvbnNUaHJvdHRs
aW5nU3RhdGUpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVWaWV3OjpyZXN1bWVWaXNpYmxlSW1h
Z2VBbmltYXRpb25zSW5jbHVkaW5nU3ViZnJhbWVzKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1l
Vmlldzo6dXBkYXRlVGhyb3R0bGVkRE9NVGltZXJzU3RhdGUpOgorICAgICAgICAoV2ViQ29yZTo6
RnJhbWVWaWV3OjpzY3JvbGxQb3NpdGlvbkNoYW5nZWQpOiBEZWxldGVkLgorICAgICAgICAoV2Vi
Q29yZTo6RnJhbWVWaWV3OjpzZW5kUmVzaXplRXZlbnRJZk5lZWRlZCk6IERlbGV0ZWQuCisgICAg
ICAgICogcGFnZS9GcmFtZVZpZXcuaDoKKyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFscy5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpJbnRlcm5hbHM6OmlzUmVxdWVzdEFuaW1hdGlvbkZyYW1lVGhy
b3R0bGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkludGVybmFsczo6aXNUaW1lclRocm90dGxlZCk6
IERlbGV0ZWQuCisgICAgICAgICogdGVzdGluZy9JbnRlcm5hbHMuaDoKKyAgICAgICAgKiB0ZXN0
aW5nL0ludGVybmFscy5pZGw6CisKIDIwMTUtMDUtMDYgIEVyaWMgQ2FybHNvbiAgPGVyaWMuY2Fy
bHNvbkBhcHBsZS5jb20+CiAKICAgICAgICAgW2lPU10gcmVtb3ZlIHNvbWUgdW5uZWNlc3Nhcnkg
aU9TLW9ubHkgbWVkaWEgY29kZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3Vt
ZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaAppbmRleCBkMGQ4YWRlODEzZmJm
YTI2MjNlZDc3NGQ4NTg2YjFlY2ExZmZiODUyLi40MTg4NDNmODhkZTE4NzJiYjA3YmM2NTkyNDA0
ZjdkMWEyNDZhNTdjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaApAQCAtOTQ2LDYgKzk0Niw5IEBAIHB1
YmxpYzoKIAogICAgIHZpcnR1YWwgdm9pZCBwb3N0VGFzayhUYXNrKSBvdmVycmlkZSBmaW5hbDsg
Ly8gRXhlY3V0ZXMgdGhlIHRhc2sgb24gY29udGV4dCdzIHRocmVhZCBhc3luY2hyb25vdXNseS4K
IAorI2lmIEVOQUJMRShSRVFVRVNUX0FOSU1BVElPTl9GUkFNRSkKKyAgICBTY3JpcHRlZEFuaW1h
dGlvbkNvbnRyb2xsZXIqIHNjcmlwdGVkQW5pbWF0aW9uQ29udHJvbGxlcigpIHsgcmV0dXJuIG1f
c2NyaXB0ZWRBbmltYXRpb25Db250cm9sbGVyLmdldCgpOyB9CisjZW5kaWYKICAgICB2b2lkIHN1
c3BlbmRTY3JpcHRlZEFuaW1hdGlvbkNvbnRyb2xsZXJDYWxsYmFja3MoKTsKICAgICB2b2lkIHJl
c3VtZVNjcmlwdGVkQW5pbWF0aW9uQ29udHJvbGxlckNhbGxiYWNrcygpOwogICAgIHZvaWQgc2Ny
aXB0ZWRBbmltYXRpb25Db250cm9sbGVyU2V0VGhyb3R0bGVkKGJvb2wpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdGVkQW5pbWF0aW9uQ29udHJvbGxlci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vU2NyaXB0ZWRBbmltYXRpb25Db250cm9sbGVyLmNwcAppbmRleCA3ZWRl
YmQ0NDExY2FiZDljNmZmYTQ5ZDZiZjFiYzlhNTMxNGIwM2U3Li4xYjM5YmYxNmUwMzUwM2FjM2My
MzdmNDRiM2Y1ZmVmYTU2ODZlZTYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2Ny
aXB0ZWRBbmltYXRpb25Db250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2Ny
aXB0ZWRBbmltYXRpb25Db250cm9sbGVyLmNwcApAQCAtMzQsNiArMzQsOCBAQAogI2luY2x1ZGUg
IkRvY3VtZW50TG9hZGVyLmgiCiAjaW5jbHVkZSAiRnJhbWVWaWV3LmgiCiAjaW5jbHVkZSAiSW5z
cGVjdG9ySW5zdHJ1bWVudGF0aW9uLmgiCisjaW5jbHVkZSAiTG9nZ2luZy5oIgorI2luY2x1ZGUg
Ik1haW5GcmFtZS5oIgogI2luY2x1ZGUgIlJlcXVlc3RBbmltYXRpb25GcmFtZUNhbGxiYWNrLmgi
CiAjaW5jbHVkZSAiU2V0dGluZ3MuaCIKICNpbmNsdWRlIDx3dGYvUmVmLmg+CkBAIC04NCw2ICs4
Niw4IEBAIHZvaWQgU2NyaXB0ZWRBbmltYXRpb25Db250cm9sbGVyOjpzZXRUaHJvdHRsZWQoYm9v
bCBpc1Rocm90dGxlZCkKICAgICBpZiAobV9pc1Rocm90dGxlZCA9PSBpc1Rocm90dGxlZCkKICAg
ICAgICAgcmV0dXJuOwogCisgICAgTE9HKEFuaW1hdGlvbnMsICIlcCAtIFNldHRpbmcgUmVxdWVz
dEFuaW1hdGlvbkZyYW1lIHRocm90dGxpbmcgc3RhdGUgdG8gJWQgaW4gZnJhbWUgJXAgKGlzTWFp
bkZyYW1lOiAlZCkiLCB0aGlzLCBpc1Rocm90dGxlZCwgbV9kb2N1bWVudC0+ZnJhbWUoKSwgbV9k
b2N1bWVudC0+ZnJhbWUoKSA/IG1fZG9jdW1lbnQtPmZyYW1lKCktPmlzTWFpbkZyYW1lKCkgOiAw
KTsKKwogICAgIG1faXNUaHJvdHRsZWQgPSBpc1Rocm90dGxlZDsKICAgICBpZiAobV9hbmltYXRp
b25UaW1lci5pc0FjdGl2ZSgpKSB7CiAgICAgICAgIG1fYW5pbWF0aW9uVGltZXIuc3RvcCgpOwpA
QCAtOTQsNiArOTgsMTUgQEAgdm9pZCBTY3JpcHRlZEFuaW1hdGlvbkNvbnRyb2xsZXI6OnNldFRo
cm90dGxlZChib29sIGlzVGhyb3R0bGVkKQogI2VuZGlmCiB9CiAKK2Jvb2wgU2NyaXB0ZWRBbmlt
YXRpb25Db250cm9sbGVyOjppc1Rocm90dGxlZCgpIGNvbnN0Cit7CisjaWYgVVNFKFJFUVVFU1Rf
QU5JTUFUSU9OX0ZSQU1FX1RJTUVSKSAmJiBVU0UoUkVRVUVTVF9BTklNQVRJT05fRlJBTUVfRElT
UExBWV9NT05JVE9SKQorICAgIHJldHVybiBtX2lzVGhyb3R0bGVkOworI2Vsc2UKKyAgICByZXR1
cm4gZmFsc2U7CisjZW5kaWYKK30KKwogU2NyaXB0ZWRBbmltYXRpb25Db250cm9sbGVyOjpDYWxs
YmFja0lkIFNjcmlwdGVkQW5pbWF0aW9uQ29udHJvbGxlcjo6cmVnaXN0ZXJDYWxsYmFjayhQYXNz
UmVmUHRyPFJlcXVlc3RBbmltYXRpb25GcmFtZUNhbGxiYWNrPiBjYWxsYmFjaykKIHsKICAgICBT
Y3JpcHRlZEFuaW1hdGlvbkNvbnRyb2xsZXI6OkNhbGxiYWNrSWQgaWQgPSArK21fbmV4dENhbGxi
YWNrSWQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0ZWRBbmltYXRpb25D
b250cm9sbGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0ZWRBbmltYXRpb25Db250cm9s
bGVyLmgKaW5kZXggN2IyOGU3OWVjODViNGJhMWYxNmUwZTljMTdkMDUzNTdlMmIxZDRkYi4uODlh
YjAxOTFiNGM4MmE4NWJiNDVlMzJmMDkyNDliMzg5MDI0ZTU0MCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvZG9tL1NjcmlwdGVkQW5pbWF0aW9uQ29udHJvbGxlci5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9TY3JpcHRlZEFuaW1hdGlvbkNvbnRyb2xsZXIuaApAQCAtNjgsNiArNjgsNyBA
QCBwdWJsaWM6CiAgICAgdm9pZCBzdXNwZW5kKCk7CiAgICAgdm9pZCByZXN1bWUoKTsKICAgICB2
b2lkIHNldFRocm90dGxlZChib29sKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBib29sIGlzVGhyb3R0
bGVkKCkgY29uc3Q7CiAKICAgICB2b2lkIHdpbmRvd1NjcmVlbkRpZENoYW5nZShQbGF0Zm9ybURp
c3BsYXlJRCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcAppbmRleCAxMjU4NjM2Y2QzMDli
ZjY1MmE1MzdiNDNjMzFkMDQ2YzM5NDI2NmExLi4wNjU5MzczODQ0YmI1YTYzZmVhNTNkMjJkMDdl
ZGE2YzM0ZTkyMTJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwCkBAIC04MCw2ICs4MCw3
IEBACiAjaW5jbHVkZSAiUmVuZGVyV2lkZ2V0LmgiCiAjaW5jbHVkZSAiU1ZHRG9jdW1lbnQuaCIK
ICNpbmNsdWRlICJTVkdTVkdFbGVtZW50LmgiCisjaW5jbHVkZSAiU2NyaXB0ZWRBbmltYXRpb25D
b250cm9sbGVyLmgiCiAjaW5jbHVkZSAiU2Nyb2xsQW5pbWF0b3IuaCIKICNpbmNsdWRlICJTY3Jv
bGxpbmdDb29yZGluYXRvci5oIgogI2luY2x1ZGUgIlNldHRpbmdzLmgiCkBAIC0xNzg4LDggKzE3
ODksMTEgQEAgdm9pZCBGcmFtZVZpZXc6OnZpZXdwb3J0Q29udGVudHNDaGFuZ2VkKCkKIHsKICAg
ICAvLyBXaGVuIHRoZSB2aWV3cG9ydCBjb250ZW50cyBjaGFuZ2VzIChzY3JvbGwsIHJlc2l6ZSwg
c3R5bGUgcmVjYWxjLCBsYXlvdXQsIC4uLiksCiAgICAgLy8gY2hlY2sgaWYgd2Ugc2hvdWxkIHJl
c3VtZSBhbmltYXRlZCBpbWFnZXMgb3IgdW50aHJvdHRsZSBET00gdGltZXJzLgotICAgIHJlc3Vt
ZVZpc2libGVJbWFnZUFuaW1hdGlvbnNJbmNsdWRpbmdTdWJmcmFtZXMoKTsKLSAgICB1cGRhdGVU
aHJvdHRsZWRET01UaW1lcnNTdGF0ZSgpOworICAgIGFwcGx5UmVjdXJzaXZlbHlHaXZlblZpc2li
bGVSZWN0KFtdIChGcmFtZVZpZXcmIGZyYW1lVmlldywgSW50UmVjdCB2aXNpYmxlUmVjdCkgewor
ICAgICAgICBmcmFtZVZpZXcucmVzdW1lVmlzaWJsZUltYWdlQW5pbWF0aW9ucyh2aXNpYmxlUmVj
dCk7CisgICAgICAgIGZyYW1lVmlldy51cGRhdGVUaHJvdHRsZWRET01UaW1lcnNTdGF0ZSh2aXNp
YmxlUmVjdCk7CisgICAgICAgIGZyYW1lVmlldy51cGRhdGVTY3JpcHRlZEFuaW1hdGlvbnNUaHJv
dHRsaW5nU3RhdGUodmlzaWJsZVJlY3QpOworICAgIH0pOwogfQogCiBib29sIEZyYW1lVmlldzo6
Zml4ZWRFbGVtZW50c0xheW91dFJlbGF0aXZlVG9GcmFtZSgpIGNvbnN0CkBAIC0yMTUwLDI4ICsy
MTU0LDYwIEBAIHZvaWQgRnJhbWVWaWV3OjpzY3JvbGxQb3NpdGlvbkNoYW5nZWQoY29uc3QgSW50
UG9pbnQmIG9sZFBvc2l0aW9uLCBjb25zdCBJbnRQb2luCiAgICAgdmlld3BvcnRDb250ZW50c0No
YW5nZWQoKTsKIH0KIAotdm9pZCBGcmFtZVZpZXc6OnJlc3VtZVZpc2libGVJbWFnZUFuaW1hdGlv
bnNJbmNsdWRpbmdTdWJmcmFtZXMoKQordm9pZCBGcmFtZVZpZXc6OmFwcGx5UmVjdXJzaXZlbHlH
aXZlblZpc2libGVSZWN0KGNvbnN0IHN0ZDo6ZnVuY3Rpb248dm9pZCAoRnJhbWVWaWV3JiBmcmFt
ZVZpZXcsIEludFJlY3QgdmlzaWJsZVJlY3QpPiYgYXBwbHkpCiB7Ci0gICAgYXV0byogcmVuZGVy
VmlldyA9IGZyYW1lKCkuY29udGVudFJlbmRlcmVyKCk7Ci0gICAgaWYgKCFyZW5kZXJWaWV3KQot
ICAgICAgICByZXR1cm47Ci0KICAgICBJbnRSZWN0IHdpbmRvd0NsaXBSZWN0ID0gdGhpcy0+d2lu
ZG93Q2xpcFJlY3QoKTsKICAgICBhdXRvIHZpc2libGVSZWN0ID0gd2luZG93VG9Db250ZW50cyh3
aW5kb3dDbGlwUmVjdCk7Ci0gICAgaWYgKHZpc2libGVSZWN0LmlzRW1wdHkoKSkKLSAgICAgICAg
cmV0dXJuOwotCi0gICAgLy8gUmVzdW1lIHBhdXNlZCBpbWFnZSBhbmltYXRpb25zIGluIHRoaXMg
ZnJhbWUuCi0gICAgcmVuZGVyVmlldy0+cmVzdW1lUGF1c2VkSW1hZ2VBbmltYXRpb25zSWZOZWVk
ZWQodmlzaWJsZVJlY3QpOworICAgIGFwcGx5KCp0aGlzLCB2aXNpYmxlUmVjdCk7CiAKICAgICAv
LyBSZWN1cnNpdmUgY2FsbCBmb3Igc3ViZnJhbWVzLiBXZSBjYWNoZSB0aGUgY3VycmVudCBGcmFt
ZVZpZXcncyB3aW5kb3dDbGlwUmVjdCB0byBhdm9pZCByZWNvbXB1dGluZyBpdCBmb3IgZXZlcnkg
c3ViZnJhbWUuCiAgICAgVGVtcG9yYXJ5Q2hhbmdlPEludFJlY3QqPiB3aW5kb3dDbGlwUmVjdENh
Y2hlKG1fY2FjaGVkV2luZG93Q2xpcFJlY3QsICZ3aW5kb3dDbGlwUmVjdCk7CiAgICAgZm9yIChG
cmFtZSogY2hpbGRGcmFtZSA9IGZyYW1lKCkudHJlZSgpLmZpcnN0Q2hpbGQoKTsgY2hpbGRGcmFt
ZTsgY2hpbGRGcmFtZSA9IGNoaWxkRnJhbWUtPnRyZWUoKS5uZXh0U2libGluZygpKSB7CiAgICAg
ICAgIGlmIChhdXRvKiBjaGlsZFZpZXcgPSBjaGlsZEZyYW1lLT52aWV3KCkpCi0gICAgICAgICAg
ICBjaGlsZFZpZXctPnJlc3VtZVZpc2libGVJbWFnZUFuaW1hdGlvbnNJbmNsdWRpbmdTdWJmcmFt
ZXMoKTsKKyAgICAgICAgICAgIGNoaWxkVmlldy0+YXBwbHlSZWN1cnNpdmVseUdpdmVuVmlzaWJs
ZVJlY3QoYXBwbHkpOwogICAgIH0KIH0KIAordm9pZCBGcmFtZVZpZXc6OnJlc3VtZVZpc2libGVJ
bWFnZUFuaW1hdGlvbnMoSW50UmVjdCB2aXNpYmxlUmVjdCkKK3sKKyAgICBpZiAodmlzaWJsZVJl
Y3QuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAoYXV0byogcmVuZGVyVmll
dyA9IGZyYW1lKCkuY29udGVudFJlbmRlcmVyKCkpCisgICAgICAgIHJlbmRlclZpZXctPnJlc3Vt
ZVBhdXNlZEltYWdlQW5pbWF0aW9uc0lmTmVlZGVkKHZpc2libGVSZWN0KTsKK30KKwordm9pZCBG
cmFtZVZpZXc6OnVwZGF0ZVNjcmlwdGVkQW5pbWF0aW9uc1Rocm90dGxpbmdTdGF0ZShJbnRSZWN0
IHZpc2libGVSZWN0KQoreworI2lmIEVOQUJMRShSRVFVRVNUX0FOSU1BVElPTl9GUkFNRSkKKyAg
ICBpZiAoZnJhbWUoKS5pc01haW5GcmFtZSgpKQorICAgICAgICByZXR1cm47CisKKyAgICBhdXRv
KiBkb2N1bWVudCA9IGZyYW1lKCkuZG9jdW1lbnQoKTsKKyAgICBpZiAoIWRvY3VtZW50KQorICAg
ICAgICByZXR1cm47CisKKyAgICBhdXRvKiBzY3JpcHRlZEFuaW1hdGlvbkNvbnRyb2xsZXIgPSBk
b2N1bWVudC0+c2NyaXB0ZWRBbmltYXRpb25Db250cm9sbGVyKCk7CisgICAgaWYgKCFzY3JpcHRl
ZEFuaW1hdGlvbkNvbnRyb2xsZXIpCisgICAgICAgIHJldHVybjsKKworICAgIC8vIEZJWE1FOiBU
aGlzIGRvZXNuJ3Qgd29yayBmb3Igc3ViZnJhbWVzIG9mIGEgImRpc3BsYXk6IG5vbmUiIGZyYW1l
IGJlY2F1c2UKKyAgICAvLyB0aGV5IGhhdmUgYSBub24tbnVsbCBvd25lclJlbmRlcmVyLgorICAg
IGJvb2wgc2hvdWxkVGhyb3R0bGUgPSAhZnJhbWUoKS5vd25lclJlbmRlcmVyKCkgfHwgdmlzaWJs
ZVJlY3QuaXNFbXB0eSgpOworICAgIHNjcmlwdGVkQW5pbWF0aW9uQ29udHJvbGxlci0+c2V0VGhy
b3R0bGVkKHNob3VsZFRocm90dGxlKTsKKyNlbHNlCisgICAgVU5VU0VEX1BBUkFNKHZpc2libGVS
ZWN0KTsKKyNlbmRpZgorfQorCisKK3ZvaWQgRnJhbWVWaWV3OjpyZXN1bWVWaXNpYmxlSW1hZ2VB
bmltYXRpb25zSW5jbHVkaW5nU3ViZnJhbWVzKCkKK3sKKyAgICBhcHBseVJlY3Vyc2l2ZWx5R2l2
ZW5WaXNpYmxlUmVjdChbXSAoRnJhbWVWaWV3JiBmcmFtZVZpZXcsIEludFJlY3QgdmlzaWJsZVJl
Y3QpIHsKKyAgICAgICAgZnJhbWVWaWV3LnJlc3VtZVZpc2libGVJbWFnZUFuaW1hdGlvbnModmlz
aWJsZVJlY3QpOworICAgIH0pOworfQorCiB2b2lkIEZyYW1lVmlldzo6dXBkYXRlTGF5ZXJQb3Np
dGlvbnNBZnRlclNjcm9sbGluZygpCiB7CiAgICAgLy8gSWYgd2UncmUgc2Nyb2xsaW5nIGFzIGEg
cmVzdWx0IG9mIHVwZGF0aW5nIHRoZSB2aWV3IHNpemUgYWZ0ZXIgbGF5b3V0LCB3ZSdsbCB1cGRh
dGUgd2lkZ2V0cyBhbmQgbGF5ZXIgcG9zaXRpb25zIHNvb24gYW55d2F5LgpAQCAtMzExNCwxMyAr
MzE1MCwxMSBAQCB2b2lkIEZyYW1lVmlldzo6dW5yZWdpc3RlclRocm90dGxlZERPTVRpbWVyKERP
TVRpbWVyKiB0aW1lcikKICAgICBtX3Rocm90dGxlZFRpbWVycy5yZW1vdmUodGltZXIpOwogfQog
Ci12b2lkIEZyYW1lVmlldzo6dXBkYXRlVGhyb3R0bGVkRE9NVGltZXJzU3RhdGUoKQordm9pZCBG
cmFtZVZpZXc6OnVwZGF0ZVRocm90dGxlZERPTVRpbWVyc1N0YXRlKEludFJlY3QgdmlzaWJsZVJl
Y3QpCiB7CiAgICAgaWYgKG1fdGhyb3R0bGVkVGltZXJzLmlzRW1wdHkoKSkKICAgICAgICAgcmV0
dXJuOwogCi0gICAgSW50UmVjdCB2aXNpYmxlUmVjdCA9IHdpbmRvd1RvQ29udGVudHMod2luZG93
Q2xpcFJlY3QoKSk7Ci0KICAgICAvLyBEbyBub3QgaXRlcmF0ZSBvdmVyIHRoZSBIYXNoU2V0IGJl
Y2F1c2UgY2FsbGluZyBET01UaW1lcjo6dXBkYXRlVGhyb3R0bGluZ1N0YXRlQWZ0ZXJWaWV3cG9y
dENoYW5nZSgpCiAgICAgLy8gbWF5IGNhdXNlIHRpbWVycyB0byByZW1vdmUgdGhlbXNlbHZlcyBm
cm9tIGl0IHdoaWxlIHdlIGFyZSBpdGVyYXRpbmcuCiAgICAgVmVjdG9yPERPTVRpbWVyKj4gdGlt
ZXJzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmgKaW5kZXggOWRmNGI0MmYzYjAyNmY1YTNmYmRjZmRl
MzFjMWQ1OGY0M2YyNzk5OC4uNWNjOWYxZjgxNWQ2ZTNkMTJmOGIwNzNjYmZlZWZjMmFjZDZiNzAx
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5oCkBAIC01ODksNyArNTg5LDExIEBAIHByaXZhdGU6
CiAgICAgdm9pZCBmb3JjZUxheW91dFBhcmVudFZpZXdJZk5lZWRlZCgpOwogICAgIHZvaWQgcGVy
Zm9ybVBvc3RMYXlvdXRUYXNrcygpOwogICAgIHZvaWQgYXV0b1NpemVJZkVuYWJsZWQoKTsKLSAg
ICB2b2lkIHVwZGF0ZVRocm90dGxlZERPTVRpbWVyc1N0YXRlKCk7CisKKyAgICB2b2lkIGFwcGx5
UmVjdXJzaXZlbHlHaXZlblZpc2libGVSZWN0KGNvbnN0IHN0ZDo6ZnVuY3Rpb248dm9pZCAoRnJh
bWVWaWV3JiBmcmFtZVZpZXcsIEludFJlY3QgdmlzaWJsZVJlY3QpPiYpOworICAgIHZvaWQgdXBk
YXRlVGhyb3R0bGVkRE9NVGltZXJzU3RhdGUoSW50UmVjdCB2aXNpYmxlUmVjdCk7CisgICAgdm9p
ZCByZXN1bWVWaXNpYmxlSW1hZ2VBbmltYXRpb25zKEludFJlY3QgdmlzaWJsZVJlY3QpOworICAg
IHZvaWQgdXBkYXRlU2NyaXB0ZWRBbmltYXRpb25zVGhyb3R0bGluZ1N0YXRlKEludFJlY3Qgdmlz
aWJsZVJlY3QpOwogCiAgICAgdm9pZCB1cGRhdGVMYXllckZsdXNoVGhyb3R0bGluZygpOwogICAg
IFdFQkNPUkVfRVhQT1JUIHZvaWQgYWRqdXN0VGlsZWRCYWNraW5nQ292ZXJhZ2UoKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAppbmRleCAyMjVjZDA4YWMyYTcxNzg1MjIzMDcwNDNk
Mjk1YzliNTM1Y2E5ZDBmLi45ZDI5MjJmMjg2MGMzYjc0MDY3MzM3ZjJiYjliMDc3YmRlM2M5YjEw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCkBAIC05Nyw2ICs5Nyw3IEBACiAj
aW5jbHVkZSAiUmVuZGVyZWREb2N1bWVudE1hcmtlci5oIgogI2luY2x1ZGUgIlJ1bnRpbWVFbmFi
bGVkRmVhdHVyZXMuaCIKICNpbmNsdWRlICJTY2hlbWVSZWdpc3RyeS5oIgorI2luY2x1ZGUgIlNj
cmlwdGVkQW5pbWF0aW9uQ29udHJvbGxlci5oIgogI2luY2x1ZGUgIlNjcm9sbGluZ0Nvb3JkaW5h
dG9yLmgiCiAjaW5jbHVkZSAiU2VyaWFsaXplZFNjcmlwdFZhbHVlLmgiCiAjaW5jbHVkZSAiU2V0
dGluZ3MuaCIKQEAgLTc2NSw2ICs3NjYsMTggQEAgYm9vbCBJbnRlcm5hbHM6OmlzVGltZXJUaHJv
dHRsZWQoaW50IHRpbWVvdXRJZCwgRXhjZXB0aW9uQ29kZSYgZWMpCiAgICAgcmV0dXJuIHRpbWVy
LT5tX3Rocm90dGxlU3RhdGUgPT0gRE9NVGltZXI6OlNob3VsZFRocm90dGxlOwogfQogCitib29s
IEludGVybmFsczo6aXNSZXF1ZXN0QW5pbWF0aW9uRnJhbWVUaHJvdHRsZWQoKSBjb25zdAorewor
I2lmIEVOQUJMRShSRVFVRVNUX0FOSU1BVElPTl9GUkFNRSkKKyAgICBhdXRvKiBzY3JpcHRlZEFu
aW1hdGlvbkNvbnRyb2xsZXIgPSBjb250ZXh0RG9jdW1lbnQoKS0+c2NyaXB0ZWRBbmltYXRpb25D
b250cm9sbGVyKCk7CisgICAgaWYgKCFzY3JpcHRlZEFuaW1hdGlvbkNvbnRyb2xsZXIpCisgICAg
ICAgIHJldHVybiBmYWxzZTsKKyAgICByZXR1cm4gc2NyaXB0ZWRBbmltYXRpb25Db250cm9sbGVy
LT5pc1Rocm90dGxlZCgpOworI2Vsc2UKKyAgICByZXR1cm4gZmFsc2U7CisjZW5kaWYKK30KKwog
U3RyaW5nIEludGVybmFsczo6dmlzaWJsZVBsYWNlaG9sZGVyKEVsZW1lbnQqIGVsZW1lbnQpCiB7
CiAgICAgaWYgKGlzPEhUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50PihlbGVtZW50KSkgewpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaCBiL1NvdXJjZS9XZWJD
b3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmgKaW5kZXggODRhMjhlZmYzZDQ5YThiOGY4ZGIwMWYwNDcw
ODZiYTkxYjg3ODQzNi4uZGMwZWFmN2U2YjBjY2E5MzIxNWMyMjlhYWY5MjQ0MzkzYzJkOGQ2ZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5oCkBAIC0xMTMsNiArMTEzLDcgQEAgcHVibGlj
OgogCiAgICAgLy8gRE9NVGltZXJzIHRocm90dGxpbmcgdGVzdGluZy4KICAgICBib29sIGlzVGlt
ZXJUaHJvdHRsZWQoaW50IHRpbWVvdXRJZCwgRXhjZXB0aW9uQ29kZSYpOworICAgIGJvb2wgaXNS
ZXF1ZXN0QW5pbWF0aW9uRnJhbWVUaHJvdHRsZWQoKSBjb25zdDsKIAogICAgIC8vIFNwYXRpYWwg
TmF2aWdhdGlvbiB0ZXN0aW5nLgogICAgIHVuc2lnbmVkIGxhc3RTcGF0aWFsTmF2aWdhdGlvbkNh
bmRpZGF0ZUNvdW50KEV4Y2VwdGlvbkNvZGUmKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlkbCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50
ZXJuYWxzLmlkbAppbmRleCAyNWZlZDQ5NTk0OWZmODY0MTA1MmU3YTYwNDQ1NzM1ZjllNzI0NzMx
Li5kNWNjM2Y0YTE3ODE2MjMxODhlMWM4ZGRhMTdmODAwMTNhZDI1Zjg2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUv
dGVzdGluZy9JbnRlcm5hbHMuaWRsCkBAIC0yNzksNiArMjc5LDggQEAgZW51bSBSZXNvdXJjZUxv
YWRQcmlvcml0eSB7CiAgICAgLy8gUXVlcnkgaWYgYSB0aW1lciBpcyBjdXJyZW50bHkgdGhyb3R0
bGVkLCB0byBkZWJ1ZyB0aW1lciB0aHJvdHRsaW5nLgogICAgIFtSYWlzZXNFeGNlcHRpb25dIGJv
b2xlYW4gaXNUaW1lclRocm90dGxlZChsb25nIHRpbWVySGFuZGxlKTsKIAorICAgIGJvb2xlYW4g
aXNSZXF1ZXN0QW5pbWF0aW9uRnJhbWVUaHJvdHRsZWQoKTsKKwogICAgIFtSYWlzZXNFeGNlcHRp
b25dIHZvaWQgc3RhcnRUcmFja2luZ1N0eWxlUmVjYWxjcygpOwogICAgIFtSYWlzZXNFeGNlcHRp
b25dIHVuc2lnbmVkIGxvbmcgc3R5bGVSZWNhbGNDb3VudCgpOwogCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggMGM5ZWJjN2E1
YjdmMmVmMmRkZjk2OWZlZmEwMzM1OWQ4OGQ1MDU4Ny4uNDc4YjdmMmIyZGRkZjg0ZjFiMWIwNzdl
NDdkMzk2MTZhMzg0ZTU5NyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBi
L0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI0IEBACisyMDE1LTA1LTA3ICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgVGhyb3R0bGUgUmVxdWVzdEFu
aW1hdGlvbkZyYW1lIGluIHN1YmZyYW1lcyB0aGF0IGFyZSBvdXRzaWRlIHRoZSB2aWV3cG9ydAor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ0NzE4Cisg
ICAgICAgIDxyZGFyOi8vcHJvYmxlbS8yMDY4ODc4Mj4KKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGZhc3QvYW5pbWF0aW9uL3JlcXVlc3QtYW5pbWF0
aW9uLWZyYW1lLXRocm90dGxlLXN1YmZyYW1lLWRpc3BsYXktbm9uZS1leHBlY3RlZC50eHQ6IEFk
ZGVkLgorICAgICAgICAqIGZhc3QvYW5pbWF0aW9uL3JlcXVlc3QtYW5pbWF0aW9uLWZyYW1lLXRo
cm90dGxlLXN1YmZyYW1lLWRpc3BsYXktbm9uZS5odG1sOiBBZGRlZC4KKyAgICAgICAgQWRkIGxh
eW91dCB0ZXN0IHRvIHRlc3QgdGhhdCBSZXF1ZXN0QW5pbWF0aW9uRnJhbWUgaXMgcHJvcGVybHkg
dGhyb3R0bGVkCisgICAgICAgIGluICJkaXNwbGF5OiBub25lIiBzdWJmcmFtZXMuCisKKyAgICAg
ICAgKiBmYXN0L2FuaW1hdGlvbi9yZXF1ZXN0LWFuaW1hdGlvbi1mcmFtZS10aHJvdHRsZS1zdWJm
cmFtZS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvYW5pbWF0aW9uL3JlcXVl
c3QtYW5pbWF0aW9uLWZyYW1lLXRocm90dGxlLXN1YmZyYW1lLmh0bWw6IEFkZGVkLgorICAgICAg
ICBBZGQgbGF5b3V0IHRlc3QgdG8gdGVzdCB0aGF0IFJlcXVlc3RBbmltYXRpb25GcmFtZSBpcyBw
cm9wZXJseSB0aHJvdHRsZWQKKyAgICAgICAgaW4gZnJhbWVzIHRoYXQgYXJlIG91dHNpZGUgdGhl
IHZpZXdwb3J0LgorCisgICAgICAgICogZmFzdC9hbmltYXRpb24vcmVzb3VyY2VzL3JlcXVlc3RB
bmltYXRpb25GcmFtZS1mcmFtZS0yLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvYW5pbWF0
aW9uL3Jlc291cmNlcy9yZXF1ZXN0QW5pbWF0aW9uRnJhbWUtZnJhbWUuaHRtbDogQWRkZWQuCisK
IDIwMTUtMDUtMDYgIE1hcnRpbiBSb2JpbnNvbiAgPG1yb2JpbnNvbkBpZ2FsaWEuY29tPgogCiAg
ICAgICAgIFtGcmVlVHlwZV0gVmVydGljYWwgQ0pLIGdseXBocyBzaG91bGQgbm90IGJlIHJlbmRl
cmVkIHdpdGggc3ludGhldGljIG9ibGlxdWUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3Qv
YW5pbWF0aW9uL3JlcXVlc3QtYW5pbWF0aW9uLWZyYW1lLXRocm90dGxlLXN1YmZyYW1lLWRpc3Bs
YXktbm9uZS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2FuaW1hdGlvbi9yZXF1ZXN0
LWFuaW1hdGlvbi1mcmFtZS10aHJvdHRsZS1zdWJmcmFtZS1kaXNwbGF5LW5vbmUtZXhwZWN0ZWQu
dHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjAyZDBmNTA5YTM2ZjAzNWY5M2JiNjFmMjNiNDAwMjQ3OWIwOTJiNDEK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2FuaW1hdGlvbi9yZXF1ZXN0LWFu
aW1hdGlvbi1mcmFtZS10aHJvdHRsZS1zdWJmcmFtZS1kaXNwbGF5LW5vbmUtZXhwZWN0ZWQudHh0
CkBAIC0wLDAgKzEsMTkgQEAKK1Rlc3RzIHRoYXQgcmVxdWVzdEFuaW1hdGlvbkZyYW1lIGlzIHRo
cm90dGxlZCBpbiBzdWJmcmFtZXMgdGhhdCBhcmUgZGlzcGxheTpub25lCisKK09uIHN1Y2Nlc3Ms
IHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJU
RVNUIENPTVBMRVRFIi4KKworCitGcmFtZSBpcyBpbml0aWFsbHkgdmlzaWJpbGUgc28gcmVxdWVz
dEFuaW1hdGlvbkZyYW1lIHNob3VsZCBub3QgYmUgdGhyb3R0bGVkCitQQVNTIHRlc3RGcmFtZS5j
b250ZW50V2luZG93LmludGVybmFscy5pc1JlcXVlc3RBbmltYXRpb25GcmFtZVRocm90dGxlZCgp
IGJlY2FtZSBmYWxzZQorUEFTUyB0ZXN0RnJhbWUuY29udGVudFdpbmRvdy5pbnRlcm5hbHMuaXNS
ZXF1ZXN0QW5pbWF0aW9uRnJhbWVUaHJvdHRsZWQoKSBpcyBmYWxzZQorSGlkaW5nIHN1YmZyYW1l
LgordGVzdEZyYW1lLnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7CitQQVNTIHRlc3RGcmFtZS5jb250
ZW50V2luZG93LmludGVybmFscy5pc1JlcXVlc3RBbmltYXRpb25GcmFtZVRocm90dGxlZCgpIGJl
Y2FtZSB0cnVlCitQQVNTIHRlc3RGcmFtZS5jb250ZW50V2luZG93LmludGVybmFscy5pc1JlcXVl
c3RBbmltYXRpb25GcmFtZVRocm90dGxlZCgpIGlzIHRydWUKK1Nob3cgc3ViZnJhbWUgYWdhaW4K
K3Rlc3RGcmFtZS5zdHlsZS5kaXNwbGF5ID0gJ2Jsb2NrJzsKK1BBU1MgdGVzdEZyYW1lLmNvbnRl
bnRXaW5kb3cuaW50ZXJuYWxzLmlzUmVxdWVzdEFuaW1hdGlvbkZyYW1lVGhyb3R0bGVkKCkgYmVj
YW1lIGZhbHNlCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExF
VEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9hbmltYXRpb24vcmVxdWVzdC1hbmlt
YXRpb24tZnJhbWUtdGhyb3R0bGUtc3ViZnJhbWUtZGlzcGxheS1ub25lLmh0bWwgYi9MYXlvdXRU
ZXN0cy9mYXN0L2FuaW1hdGlvbi9yZXF1ZXN0LWFuaW1hdGlvbi1mcmFtZS10aHJvdHRsZS1zdWJm
cmFtZS1kaXNwbGF5LW5vbmUuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lOGQxMWNmOTJiZjc3MTk0NDY4MjI1
MDJjM2ZiYzBjMTFmZmExOGRhCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9h
bmltYXRpb24vcmVxdWVzdC1hbmltYXRpb24tZnJhbWUtdGhyb3R0bGUtc3ViZnJhbWUtZGlzcGxh
eS1ub25lLmh0bWwKQEAgLTAsMCArMSw0NCBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxi
b2R5PgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3Jp
cHQ+Cis8c2NyaXB0PgorZGVzY3JpcHRpb24oIlRlc3RzIHRoYXQgcmVxdWVzdEFuaW1hdGlvbkZy
YW1lIGlzIHRocm90dGxlZCBpbiBzdWJmcmFtZXMgdGhhdCBhcmUgZGlzcGxheTpub25lIik7Cit3
aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7CisKK2Z1bmN0aW9uIGNoZWNrU3ViZnJhbWVUaHJv
dHRsZWQoKQoreworICAgIHNob3VsZEJlVHJ1ZSgidGVzdEZyYW1lLmNvbnRlbnRXaW5kb3cuaW50
ZXJuYWxzLmlzUmVxdWVzdEFuaW1hdGlvbkZyYW1lVGhyb3R0bGVkKCkiKTsKKworICAgIGRlYnVn
KCJTaG93IHN1YmZyYW1lIGFnYWluIik7CisgICAgZXZhbEFuZExvZygidGVzdEZyYW1lLnN0eWxl
LmRpc3BsYXkgPSAnYmxvY2snOyIpOworCisgICAgc2hvdWxkQmVjb21lRXF1YWwoInRlc3RGcmFt
ZS5jb250ZW50V2luZG93LmludGVybmFscy5pc1JlcXVlc3RBbmltYXRpb25GcmFtZVRocm90dGxl
ZCgpIiwgImZhbHNlIiwgZmluaXNoSlNUZXN0KTsKK30KKworZnVuY3Rpb24gaGlkZUZyYW1lKCkK
K3sKKyAgICBzaG91bGRCZUZhbHNlKCJ0ZXN0RnJhbWUuY29udGVudFdpbmRvdy5pbnRlcm5hbHMu
aXNSZXF1ZXN0QW5pbWF0aW9uRnJhbWVUaHJvdHRsZWQoKSIpOworCisgICAgZGVidWcoIkhpZGlu
ZyBzdWJmcmFtZS4iKTsKKyAgICBldmFsQW5kTG9nKCJ0ZXN0RnJhbWUuc3R5bGUuZGlzcGxheSA9
ICdub25lJzsiKTsKKworICAgIHNob3VsZEJlY29tZUVxdWFsKCJ0ZXN0RnJhbWUuY29udGVudFdp
bmRvdy5pbnRlcm5hbHMuaXNSZXF1ZXN0QW5pbWF0aW9uRnJhbWVUaHJvdHRsZWQoKSIsICJ0cnVl
IiwgY2hlY2tTdWJmcmFtZVRocm90dGxlZCk7Cit9CisKK2Z1bmN0aW9uIHJ1blRlc3QoKQorewor
ICAgIHRlc3RGcmFtZSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ0ZXN0RnJhbWUiKTsKKyAg
ICBkZWJ1ZygiRnJhbWUgaXMgaW5pdGlhbGx5IHZpc2liaWxlIHNvIHJlcXVlc3RBbmltYXRpb25G
cmFtZSBzaG91bGQgbm90IGJlIHRocm90dGxlZCIpOworICAgIHNob3VsZEJlY29tZUVxdWFsKCJ0
ZXN0RnJhbWUuY29udGVudFdpbmRvdy5pbnRlcm5hbHMuaXNSZXF1ZXN0QW5pbWF0aW9uRnJhbWVU
aHJvdHRsZWQoKSIsICJmYWxzZSIsIGhpZGVGcmFtZSk7Cit9CisKK3ZhciBpID0gMDsKK3JlcXVl
c3RBbmltYXRpb25GcmFtZShmdW5jdGlvbigpIHsKKyAgICBpKys7Cit9KTsKKzwvc2NyaXB0Pgor
PGlmcmFtZSBpZD0idGVzdEZyYW1lIiBzcmM9InJlc291cmNlcy9yZXF1ZXN0QW5pbWF0aW9uRnJh
bWUtZnJhbWUuaHRtbCIgb25sb2FkPSJydW5UZXN0KCkiPjwvaWZyYW1lPgorPHNjcmlwdCBzcmM9
Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9o
dG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9hbmltYXRpb24vcmVxdWVzdC1hbmlt
YXRpb24tZnJhbWUtdGhyb3R0bGUtc3ViZnJhbWUtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMv
ZmFzdC9hbmltYXRpb24vcmVxdWVzdC1hbmltYXRpb24tZnJhbWUtdGhyb3R0bGUtc3ViZnJhbWUt
ZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA1OTgzYjMzMTMyODMzNDIyNWJjODg1ZDhlNGU4YmMy
MmI0NmNhOGMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2FuaW1hdGlvbi9y
ZXF1ZXN0LWFuaW1hdGlvbi1mcmFtZS10aHJvdHRsZS1zdWJmcmFtZS1leHBlY3RlZC50eHQKQEAg
LTAsMCArMSwyNCBAQAorVGVzdHMgdGhhdCByZXF1ZXN0QW5pbWF0aW9uRnJhbWUgaXMgdGhyb3R0
bGVkIGluIHN1YmZyYW1lcyB0aGF0IGFyZSBvdXRzaWRlIHRoZSB2aWV3cG9ydAorCitPbiBzdWNj
ZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBi
eSAiVEVTVCBDT01QTEVURSIuCisKKworRnJhbWUgaXMgaW5pdGlhbGx5IG91dHNpZGUgdGhlIHZp
ZXdwb3J0IHNvIHJlcXVlc3RBbmltYXRpb25GcmFtZSBzaG91bGQgYmUgdGhyb3R0bGVkCitQQVNT
IHRlc3RGcmFtZS5jb250ZW50V2luZG93LmludGVybmFscy5pc1JlcXVlc3RBbmltYXRpb25GcmFt
ZVRocm90dGxlZCgpIGJlY2FtZSB0cnVlCitQQVNTIGludGVybmFscy5pc1JlcXVlc3RBbmltYXRp
b25GcmFtZVRocm90dGxlZCgpIGlzIGZhbHNlCitQQVNTIHRlc3RGcmFtZS5jb250ZW50V2luZG93
LmludGVybmFscy5pc1JlcXVlc3RBbmltYXRpb25GcmFtZVRocm90dGxlZCgpIGlzIHRydWUKK1BB
U1MgZ3JhbmRDaGlsZEZyYW1lLmNvbnRlbnRXaW5kb3cuaW50ZXJuYWxzLmlzUmVxdWVzdEFuaW1h
dGlvbkZyYW1lVGhyb3R0bGVkKCkgaXMgdHJ1ZQorU2Nyb2xsaW5nIGZyYW1lIGludG8gdmlldy4K
K1JlcXVlc3RBbmltYXRpb25GcmFtZSBzaG91bGQgbm8gbG9uZ2VyIGJlIHRocm90dGxlZAorUEFT
UyBpbnRlcm5hbHMuaXNSZXF1ZXN0QW5pbWF0aW9uRnJhbWVUaHJvdHRsZWQoKSBpcyBmYWxzZQor
UEFTUyBncmFuZENoaWxkRnJhbWUuY29udGVudFdpbmRvdy5pbnRlcm5hbHMuaXNSZXF1ZXN0QW5p
bWF0aW9uRnJhbWVUaHJvdHRsZWQoKSBpcyBmYWxzZQorUEFTUyB0ZXN0RnJhbWUuY29udGVudFdp
bmRvdy5pbnRlcm5hbHMuaXNSZXF1ZXN0QW5pbWF0aW9uRnJhbWVUaHJvdHRsZWQoKSBpcyBmYWxz
ZQorU2Nyb2xsaW5nIGZyYW1lIG91dCBvZiB2aWV3IGFnYWluLgorUEFTUyBpbnRlcm5hbHMuaXNS
ZXF1ZXN0QW5pbWF0aW9uRnJhbWVUaHJvdHRsZWQoKSBpcyBmYWxzZQorUEFTUyB0ZXN0RnJhbWUu
Y29udGVudFdpbmRvdy5pbnRlcm5hbHMuaXNSZXF1ZXN0QW5pbWF0aW9uRnJhbWVUaHJvdHRsZWQo
KSBiZWNhbWUgdHJ1ZQorUEFTUyB0ZXN0RnJhbWUuY29udGVudFdpbmRvdy5pbnRlcm5hbHMuaXNS
ZXF1ZXN0QW5pbWF0aW9uRnJhbWVUaHJvdHRsZWQoKSBpcyB0cnVlCitQQVNTIGdyYW5kQ2hpbGRG
cmFtZS5jb250ZW50V2luZG93LmludGVybmFscy5pc1JlcXVlc3RBbmltYXRpb25GcmFtZVRocm90
dGxlZCgpIGlzIHRydWUKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBD
T01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2FuaW1hdGlvbi9yZXF1ZXN0
LWFuaW1hdGlvbi1mcmFtZS10aHJvdHRsZS1zdWJmcmFtZS5odG1sIGIvTGF5b3V0VGVzdHMvZmFz
dC9hbmltYXRpb24vcmVxdWVzdC1hbmltYXRpb24tZnJhbWUtdGhyb3R0bGUtc3ViZnJhbWUuaHRt
bApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi5mODk0MGYzZWQ4OWEwYTUxNWZlZmRhZDVlMDJhZmMxYTdhNTRlM2Y2Ci0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9hbmltYXRpb24vcmVxdWVzdC1hbmlt
YXRpb24tZnJhbWUtdGhyb3R0bGUtc3ViZnJhbWUuaHRtbApAQCAtMCwwICsxLDYxIEBACis8IURP
Q1RZUEUgaHRtbD4KKzxodG1sPgorPGJvZHk+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2Vz
L2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+CitkZXNjcmlwdGlvbigiVGVzdHMg
dGhhdCByZXF1ZXN0QW5pbWF0aW9uRnJhbWUgaXMgdGhyb3R0bGVkIGluIHN1YmZyYW1lcyB0aGF0
IGFyZSBvdXRzaWRlIHRoZSB2aWV3cG9ydCIpOword2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVl
OworCitmdW5jdGlvbiBjaGVja1N1YmZyYW1lc1Rocm90dGxlZCgpCit7CisgICAgc2hvdWxkQmVU
cnVlKCJ0ZXN0RnJhbWUuY29udGVudFdpbmRvdy5pbnRlcm5hbHMuaXNSZXF1ZXN0QW5pbWF0aW9u
RnJhbWVUaHJvdHRsZWQoKSIpOworICAgIHNob3VsZEJlVHJ1ZSgiZ3JhbmRDaGlsZEZyYW1lLmNv
bnRlbnRXaW5kb3cuaW50ZXJuYWxzLmlzUmVxdWVzdEFuaW1hdGlvbkZyYW1lVGhyb3R0bGVkKCki
KTsKKworICAgIGZpbmlzaEpTVGVzdCgpOworfQorCitmdW5jdGlvbiBzY3JvbGxGcmFtZU91dE9m
VmlldygpCit7CisgICAgZGVidWcoIlNjcm9sbGluZyBmcmFtZSBvdXQgb2YgdmlldyBhZ2Fpbi4i
KTsKKyAgICB3aW5kb3cuc2Nyb2xsKDAsIDApOworCisgICAgc2hvdWxkQmVGYWxzZSgiaW50ZXJu
YWxzLmlzUmVxdWVzdEFuaW1hdGlvbkZyYW1lVGhyb3R0bGVkKCkiKTsKKyAgICBzaG91bGRCZWNv
bWVFcXVhbCgidGVzdEZyYW1lLmNvbnRlbnRXaW5kb3cuaW50ZXJuYWxzLmlzUmVxdWVzdEFuaW1h
dGlvbkZyYW1lVGhyb3R0bGVkKCkiLCAidHJ1ZSIsIGNoZWNrU3ViZnJhbWVzVGhyb3R0bGVkKTsK
K30KKworZnVuY3Rpb24gc2Nyb2xsRnJhbWVJbnRvVmlldygpCit7CisgICAgc2hvdWxkQmVGYWxz
ZSgiaW50ZXJuYWxzLmlzUmVxdWVzdEFuaW1hdGlvbkZyYW1lVGhyb3R0bGVkKCkiKTsKKyAgICBz
aG91bGRCZVRydWUoInRlc3RGcmFtZS5jb250ZW50V2luZG93LmludGVybmFscy5pc1JlcXVlc3RB
bmltYXRpb25GcmFtZVRocm90dGxlZCgpIik7CisgICAgc2hvdWxkQmVUcnVlKCJncmFuZENoaWxk
RnJhbWUuY29udGVudFdpbmRvdy5pbnRlcm5hbHMuaXNSZXF1ZXN0QW5pbWF0aW9uRnJhbWVUaHJv
dHRsZWQoKSIpOworCisgICAgZGVidWcoIlNjcm9sbGluZyBmcmFtZSBpbnRvIHZpZXcuIik7Cisg
ICAgd2luZG93LmludGVybmFscy5zY3JvbGxFbGVtZW50VG9SZWN0KHRlc3RGcmFtZSwgMCwgMCwg
MzAwLCAzMDApOworCisgICAgZGVidWcoIlJlcXVlc3RBbmltYXRpb25GcmFtZSBzaG91bGQgbm8g
bG9uZ2VyIGJlIHRocm90dGxlZCIpOworICAgIHNob3VsZEJlRmFsc2UoImludGVybmFscy5pc1Jl
cXVlc3RBbmltYXRpb25GcmFtZVRocm90dGxlZCgpIik7CisgICAgc2hvdWxkQmVGYWxzZSgiZ3Jh
bmRDaGlsZEZyYW1lLmNvbnRlbnRXaW5kb3cuaW50ZXJuYWxzLmlzUmVxdWVzdEFuaW1hdGlvbkZy
YW1lVGhyb3R0bGVkKCkiKTsKKyAgICBzaG91bGRCZUZhbHNlKCJ0ZXN0RnJhbWUuY29udGVudFdp
bmRvdy5pbnRlcm5hbHMuaXNSZXF1ZXN0QW5pbWF0aW9uRnJhbWVUaHJvdHRsZWQoKSIpOworCisg
ICAgc2Nyb2xsRnJhbWVPdXRPZlZpZXcoKTsKK30KKworZnVuY3Rpb24gcnVuVGVzdCgpCit7Cisg
ICAgdGVzdEZyYW1lID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInRlc3RGcmFtZSIpOworICAg
IGdyYW5kQ2hpbGRGcmFtZSA9IHRlc3RGcmFtZS5jb250ZW50RG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQoImdyYW5kQ2hpbGRGcmFtZSIpOworICAgIGRlYnVnKCJGcmFtZSBpcyBpbml0aWFsbHkgb3V0
c2lkZSB0aGUgdmlld3BvcnQgc28gcmVxdWVzdEFuaW1hdGlvbkZyYW1lIHNob3VsZCBiZSB0aHJv
dHRsZWQiKTsKKyAgICBzaG91bGRCZWNvbWVFcXVhbCgidGVzdEZyYW1lLmNvbnRlbnRXaW5kb3cu
aW50ZXJuYWxzLmlzUmVxdWVzdEFuaW1hdGlvbkZyYW1lVGhyb3R0bGVkKCkiLCAidHJ1ZSIsIHNj
cm9sbEZyYW1lSW50b1ZpZXcpOworfQorCit2YXIgaSA9IDA7CityZXF1ZXN0QW5pbWF0aW9uRnJh
bWUoZnVuY3Rpb24oKSB7CisgICAgaSsrOworfSk7Cis8L3NjcmlwdD4KKzxkaXYgc3R5bGU9InBv
c2l0aW9uOiByZWxhdGl2ZTsgd2lkdGg6IDE2MDBweDsgaGVpZ2h0OiAyNDAwcHg7IGJhY2tncm91
bmQtY29sb3I6IGdyZWVuOyI+CisgICAgPGlmcmFtZSBpZD0idGVzdEZyYW1lIiBzcmM9InJlc291
cmNlcy9yZXF1ZXN0QW5pbWF0aW9uRnJhbWUtZnJhbWUuaHRtbCIgc3R5bGU9InBvc2l0aW9uOmFi
c29sdXRlOyBsZWZ0OiA2MDBweDsgdG9wOiA4MDBweDsiIG9ubG9hZD0icnVuVGVzdCgpIj48L2lm
cmFtZT4KKzwvZGl2PgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXBvc3Qu
anMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
ZmFzdC9hbmltYXRpb24vcmVzb3VyY2VzL3JlcXVlc3RBbmltYXRpb25GcmFtZS1mcmFtZS0yLmh0
bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2FuaW1hdGlvbi9yZXNvdXJjZXMvcmVxdWVzdEFuaW1hdGlv
bkZyYW1lLWZyYW1lLTIuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41MTEyNWQ5NzE4YWMwNjdlMWMwMWU3YjA1
MDFmODZhZGUyNTJjODAyCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9hbmlt
YXRpb24vcmVzb3VyY2VzL3JlcXVlc3RBbmltYXRpb25GcmFtZS1mcmFtZS0yLmh0bWwKQEAgLTAs
MCArMSwxMSBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxib2R5PgorPHNjcmlwdD4KK3Zh
ciBpID0gMDsKK3JlcXVlc3RBbmltYXRpb25GcmFtZShmdW5jdGlvbigpIHsKKyAgaSsrOworfSk7
Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zh
c3QvYW5pbWF0aW9uL3Jlc291cmNlcy9yZXF1ZXN0QW5pbWF0aW9uRnJhbWUtZnJhbWUuaHRtbCBi
L0xheW91dFRlc3RzL2Zhc3QvYW5pbWF0aW9uL3Jlc291cmNlcy9yZXF1ZXN0QW5pbWF0aW9uRnJh
bWUtZnJhbWUuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jMGQ3NjM2ZTJjNDUzYzUyM2FlMTI1OTY2Y2EyNzY0
YmI5ODYyOGM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9hbmltYXRpb24v
cmVzb3VyY2VzL3JlcXVlc3RBbmltYXRpb25GcmFtZS1mcmFtZS5odG1sCkBAIC0wLDAgKzEsMTIg
QEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8Ym9keT4KKzxpZnJhbWUgaWQ9ImdyYW5kQ2hp
bGRGcmFtZSIgc3JjPSJyZXF1ZXN0QW5pbWF0aW9uRnJhbWUtZnJhbWUtMi5odG1sIj48L2lmcmFt
ZT4KKzxzY3JpcHQ+Cit2YXIgaSA9IDA7CityZXF1ZXN0QW5pbWF0aW9uRnJhbWUoZnVuY3Rpb24o
KSB7CisgIGkrKzsKK30pOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>252679</attachid>
            <date>2015-05-07 20:36:33 -0700</date>
            <delta_ts>2015-05-07 21:14:16 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-144718-20150507203516.patch</filename>
            <type>text/plain</type>
            <size>22713</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTgzOTY5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjgwNDgwYzIwZGVkNWNj
NDVmMjA0ODQ4ODU1OWUxMzJmMTE3MGNkYS4uYTZkOWMzNDE4OTM4Y2ZhNDg0ZTgyM2FiMzg0MjZi
MjQ0MGU5MGE0YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM5IEBACisyMDE1LTA1LTA3ICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgVGhyb3R0bGUgUmVxdWVzdEFu
aW1hdGlvbkZyYW1lIGluIHN1YmZyYW1lcyB0aGF0IGFyZSBvdXRzaWRlIHRoZSB2aWV3cG9ydAor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ0NzE4Cisg
ICAgICAgIDxyZGFyOi8vcHJvYmxlbS8yMDY4ODc4Mj4KKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaHJvdHRsZSBSZXF1ZXN0QW5pbWF0aW9uRnJhbWUg
aW4gc3ViZnJhbWVzIHRoYXQgYXJlIG91dHNpZGUgdGhlCisgICAgICAgIHZpZXdwb3J0IG9yIGhh
dmUgImRpc3BsYXk6IG5vbmUiIGZvciBwZXJmb3JtYW5jZSBhbmQgcG93ZXIuCisKKyAgICAgICAg
VGVzdHM6IGZhc3QvYW5pbWF0aW9uL3JlcXVlc3QtYW5pbWF0aW9uLWZyYW1lLXRocm90dGxlLXN1
YmZyYW1lLWRpc3BsYXktbm9uZS5odG1sCisgICAgICAgICAgICAgICBmYXN0L2FuaW1hdGlvbi9y
ZXF1ZXN0LWFuaW1hdGlvbi1mcmFtZS10aHJvdHRsZS1zdWJmcmFtZS5odG1sCisKKyAgICAgICAg
KiBkb20vRG9jdW1lbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjpzY3JpcHRlZEFu
aW1hdGlvbkNvbnRyb2xsZXIpOgorICAgICAgICAqIGRvbS9TY3JpcHRlZEFuaW1hdGlvbkNvbnRy
b2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0ZWRBbmltYXRpb25Db250cm9sbGVy
OjpzZXRUaHJvdHRsZWQpOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0ZWRBbmltYXRpb25Db250
cm9sbGVyOjppc1Rocm90dGxlZCk6CisgICAgICAgICogZG9tL1NjcmlwdGVkQW5pbWF0aW9uQ29u
dHJvbGxlci5oOgorICAgICAgICAqIHBhZ2UvRnJhbWVWaWV3LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkZyYW1lVmlldzo6dmlld3BvcnRDb250ZW50c0NoYW5nZWQpOgorICAgICAgICAoV2ViQ29y
ZTo6RnJhbWVWaWV3OjphcHBseVJlY3Vyc2l2ZWx5R2l2ZW5WaXNpYmxlUmVjdCk6CisgICAgICAg
IChXZWJDb3JlOjpGcmFtZVZpZXc6OnJlc3VtZVZpc2libGVJbWFnZUFuaW1hdGlvbnMpOgorICAg
ICAgICAoV2ViQ29yZTo6RnJhbWVWaWV3Ojp1cGRhdGVTY3JpcHRlZEFuaW1hdGlvbnNUaHJvdHRs
aW5nU3RhdGUpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVWaWV3OjpyZXN1bWVWaXNpYmxlSW1h
Z2VBbmltYXRpb25zSW5jbHVkaW5nU3ViZnJhbWVzKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1l
Vmlldzo6dXBkYXRlVGhyb3R0bGVkRE9NVGltZXJzU3RhdGUpOgorICAgICAgICAoV2ViQ29yZTo6
RnJhbWVWaWV3OjpzY3JvbGxQb3NpdGlvbkNoYW5nZWQpOiBEZWxldGVkLgorICAgICAgICAoV2Vi
Q29yZTo6RnJhbWVWaWV3OjpzZW5kUmVzaXplRXZlbnRJZk5lZWRlZCk6IERlbGV0ZWQuCisgICAg
ICAgICogcGFnZS9GcmFtZVZpZXcuaDoKKyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFscy5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpJbnRlcm5hbHM6OmlzUmVxdWVzdEFuaW1hdGlvbkZyYW1lVGhy
b3R0bGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkludGVybmFsczo6aXNUaW1lclRocm90dGxlZCk6
IERlbGV0ZWQuCisgICAgICAgICogdGVzdGluZy9JbnRlcm5hbHMuaDoKKyAgICAgICAgKiB0ZXN0
aW5nL0ludGVybmFscy5pZGw6CisKIDIwMTUtMDUtMDcgIFNhbSBXZWluaWcgIDxzYW1Ad2Via2l0
Lm9yZz4KIAogICAgICAgICBDb25zaWRlciBpbXBsZW1lbnRpbmcgRG9jdW1lbnQuc2Nyb2xsaW5n
RWxlbWVudApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaAppbmRleCBiZWZiNWE1Mjk2MzA0ZDVjYzc1MzY3ZjIx
OTlkM2Y2YmE2ODZhODBhLi5jYzFjMDM4YzUxYzc5ZDcxZjY3MzYzZjExMWFmZGQzNDA3MDdiOWE0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vRG9jdW1lbnQuaApAQCAtOTQ4LDYgKzk0OCw5IEBAIHB1YmxpYzoKIAogICAg
IHZpcnR1YWwgdm9pZCBwb3N0VGFzayhUYXNrKSBvdmVycmlkZSBmaW5hbDsgLy8gRXhlY3V0ZXMg
dGhlIHRhc2sgb24gY29udGV4dCdzIHRocmVhZCBhc3luY2hyb25vdXNseS4KIAorI2lmIEVOQUJM
RShSRVFVRVNUX0FOSU1BVElPTl9GUkFNRSkKKyAgICBTY3JpcHRlZEFuaW1hdGlvbkNvbnRyb2xs
ZXIqIHNjcmlwdGVkQW5pbWF0aW9uQ29udHJvbGxlcigpIHsgcmV0dXJuIG1fc2NyaXB0ZWRBbmlt
YXRpb25Db250cm9sbGVyLmdldCgpOyB9CisjZW5kaWYKICAgICB2b2lkIHN1c3BlbmRTY3JpcHRl
ZEFuaW1hdGlvbkNvbnRyb2xsZXJDYWxsYmFja3MoKTsKICAgICB2b2lkIHJlc3VtZVNjcmlwdGVk
QW5pbWF0aW9uQ29udHJvbGxlckNhbGxiYWNrcygpOwogICAgIHZvaWQgc2NyaXB0ZWRBbmltYXRp
b25Db250cm9sbGVyU2V0VGhyb3R0bGVkKGJvb2wpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvZG9tL1NjcmlwdGVkQW5pbWF0aW9uQ29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9k
b20vU2NyaXB0ZWRBbmltYXRpb25Db250cm9sbGVyLmNwcAppbmRleCA3ZWRlYmQ0NDExY2FiZDlj
NmZmYTQ5ZDZiZjFiYzlhNTMxNGIwM2U3Li4xYjM5YmYxNmUwMzUwM2FjM2MyMzdmNDRiM2Y1ZmVm
YTU2ODZlZTYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0ZWRBbmltYXRp
b25Db250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0ZWRBbmltYXRp
b25Db250cm9sbGVyLmNwcApAQCAtMzQsNiArMzQsOCBAQAogI2luY2x1ZGUgIkRvY3VtZW50TG9h
ZGVyLmgiCiAjaW5jbHVkZSAiRnJhbWVWaWV3LmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9ySW5zdHJ1
bWVudGF0aW9uLmgiCisjaW5jbHVkZSAiTG9nZ2luZy5oIgorI2luY2x1ZGUgIk1haW5GcmFtZS5o
IgogI2luY2x1ZGUgIlJlcXVlc3RBbmltYXRpb25GcmFtZUNhbGxiYWNrLmgiCiAjaW5jbHVkZSAi
U2V0dGluZ3MuaCIKICNpbmNsdWRlIDx3dGYvUmVmLmg+CkBAIC04NCw2ICs4Niw4IEBAIHZvaWQg
U2NyaXB0ZWRBbmltYXRpb25Db250cm9sbGVyOjpzZXRUaHJvdHRsZWQoYm9vbCBpc1Rocm90dGxl
ZCkKICAgICBpZiAobV9pc1Rocm90dGxlZCA9PSBpc1Rocm90dGxlZCkKICAgICAgICAgcmV0dXJu
OwogCisgICAgTE9HKEFuaW1hdGlvbnMsICIlcCAtIFNldHRpbmcgUmVxdWVzdEFuaW1hdGlvbkZy
YW1lIHRocm90dGxpbmcgc3RhdGUgdG8gJWQgaW4gZnJhbWUgJXAgKGlzTWFpbkZyYW1lOiAlZCki
LCB0aGlzLCBpc1Rocm90dGxlZCwgbV9kb2N1bWVudC0+ZnJhbWUoKSwgbV9kb2N1bWVudC0+ZnJh
bWUoKSA/IG1fZG9jdW1lbnQtPmZyYW1lKCktPmlzTWFpbkZyYW1lKCkgOiAwKTsKKwogICAgIG1f
aXNUaHJvdHRsZWQgPSBpc1Rocm90dGxlZDsKICAgICBpZiAobV9hbmltYXRpb25UaW1lci5pc0Fj
dGl2ZSgpKSB7CiAgICAgICAgIG1fYW5pbWF0aW9uVGltZXIuc3RvcCgpOwpAQCAtOTQsNiArOTgs
MTUgQEAgdm9pZCBTY3JpcHRlZEFuaW1hdGlvbkNvbnRyb2xsZXI6OnNldFRocm90dGxlZChib29s
IGlzVGhyb3R0bGVkKQogI2VuZGlmCiB9CiAKK2Jvb2wgU2NyaXB0ZWRBbmltYXRpb25Db250cm9s
bGVyOjppc1Rocm90dGxlZCgpIGNvbnN0Cit7CisjaWYgVVNFKFJFUVVFU1RfQU5JTUFUSU9OX0ZS
QU1FX1RJTUVSKSAmJiBVU0UoUkVRVUVTVF9BTklNQVRJT05fRlJBTUVfRElTUExBWV9NT05JVE9S
KQorICAgIHJldHVybiBtX2lzVGhyb3R0bGVkOworI2Vsc2UKKyAgICByZXR1cm4gZmFsc2U7Cisj
ZW5kaWYKK30KKwogU2NyaXB0ZWRBbmltYXRpb25Db250cm9sbGVyOjpDYWxsYmFja0lkIFNjcmlw
dGVkQW5pbWF0aW9uQ29udHJvbGxlcjo6cmVnaXN0ZXJDYWxsYmFjayhQYXNzUmVmUHRyPFJlcXVl
c3RBbmltYXRpb25GcmFtZUNhbGxiYWNrPiBjYWxsYmFjaykKIHsKICAgICBTY3JpcHRlZEFuaW1h
dGlvbkNvbnRyb2xsZXI6OkNhbGxiYWNrSWQgaWQgPSArK21fbmV4dENhbGxiYWNrSWQ7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0ZWRBbmltYXRpb25Db250cm9sbGVyLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0ZWRBbmltYXRpb25Db250cm9sbGVyLmgKaW5kZXgg
N2IyOGU3OWVjODViNGJhMWYxNmUwZTljMTdkMDUzNTdlMmIxZDRkYi4uODlhYjAxOTFiNGM4MmE4
NWJiNDVlMzJmMDkyNDliMzg5MDI0ZTU0MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9t
L1NjcmlwdGVkQW5pbWF0aW9uQ29udHJvbGxlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9T
Y3JpcHRlZEFuaW1hdGlvbkNvbnRyb2xsZXIuaApAQCAtNjgsNiArNjgsNyBAQCBwdWJsaWM6CiAg
ICAgdm9pZCBzdXNwZW5kKCk7CiAgICAgdm9pZCByZXN1bWUoKTsKICAgICB2b2lkIHNldFRocm90
dGxlZChib29sKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBib29sIGlzVGhyb3R0bGVkKCkgY29uc3Q7
CiAKICAgICB2b2lkIHdpbmRvd1NjcmVlbkRpZENoYW5nZShQbGF0Zm9ybURpc3BsYXlJRCk7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcAppbmRleCBhNzIyYTE5MjA4ZmI2ZmViODdhYTM0ZmQ2
NWFmMDMwMzVkYmUxZjMxLi42YTZkOTdhZjRmYjc5ZGI3OWQ5YWM1MjE2ZjU4MDlhNTNiNjc5OTU5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwCkBAIC04MCw2ICs4MCw3IEBACiAjaW5jbHVk
ZSAiUmVuZGVyV2lkZ2V0LmgiCiAjaW5jbHVkZSAiU1ZHRG9jdW1lbnQuaCIKICNpbmNsdWRlICJT
VkdTVkdFbGVtZW50LmgiCisjaW5jbHVkZSAiU2NyaXB0ZWRBbmltYXRpb25Db250cm9sbGVyLmgi
CiAjaW5jbHVkZSAiU2Nyb2xsQW5pbWF0b3IuaCIKICNpbmNsdWRlICJTY3JvbGxpbmdDb29yZGlu
YXRvci5oIgogI2luY2x1ZGUgIlNldHRpbmdzLmgiCkBAIC0xNzU1LDEwICsxNzU2LDE4IEBAIHZv
aWQgRnJhbWVWaWV3OjpkZWxheWVkU2Nyb2xsRXZlbnRUaW1lckZpcmVkKCkKIAogdm9pZCBGcmFt
ZVZpZXc6OnZpZXdwb3J0Q29udGVudHNDaGFuZ2VkKCkKIHsKKyAgICBpZiAoIWZyYW1lKCkudmll
dygpKSB7CisgICAgICAgIC8vIFRoZSBmcmFtZSBpcyBiZWluZyBkZXN0cm95ZWQuCisgICAgICAg
IHJldHVybjsKKyAgICB9CisKICAgICAvLyBXaGVuIHRoZSB2aWV3cG9ydCBjb250ZW50cyBjaGFu
Z2VzIChzY3JvbGwsIHJlc2l6ZSwgc3R5bGUgcmVjYWxjLCBsYXlvdXQsIC4uLiksCiAgICAgLy8g
Y2hlY2sgaWYgd2Ugc2hvdWxkIHJlc3VtZSBhbmltYXRlZCBpbWFnZXMgb3IgdW50aHJvdHRsZSBE
T00gdGltZXJzLgotICAgIHJlc3VtZVZpc2libGVJbWFnZUFuaW1hdGlvbnNJbmNsdWRpbmdTdWJm
cmFtZXMoKTsKLSAgICB1cGRhdGVUaHJvdHRsZWRET01UaW1lcnNTdGF0ZSgpOworICAgIGFwcGx5
UmVjdXJzaXZlbHlHaXZlblZpc2libGVSZWN0KFtdIChGcmFtZVZpZXcmIGZyYW1lVmlldywgSW50
UmVjdCB2aXNpYmxlUmVjdCkgeworICAgICAgICBmcmFtZVZpZXcucmVzdW1lVmlzaWJsZUltYWdl
QW5pbWF0aW9ucyh2aXNpYmxlUmVjdCk7CisgICAgICAgIGZyYW1lVmlldy51cGRhdGVUaHJvdHRs
ZWRET01UaW1lcnNTdGF0ZSh2aXNpYmxlUmVjdCk7CisgICAgICAgIGZyYW1lVmlldy51cGRhdGVT
Y3JpcHRlZEFuaW1hdGlvbnNUaHJvdHRsaW5nU3RhdGUodmlzaWJsZVJlY3QpOworICAgIH0pOwog
fQogCiBib29sIEZyYW1lVmlldzo6Zml4ZWRFbGVtZW50c0xheW91dFJlbGF0aXZlVG9GcmFtZSgp
IGNvbnN0CkBAIC0yMDk1LDI4ICsyMTA0LDYwIEBAIHZvaWQgRnJhbWVWaWV3OjpzY3JvbGxQb3Np
dGlvbkNoYW5nZWQoY29uc3QgSW50UG9pbnQmIG9sZFBvc2l0aW9uLCBjb25zdCBJbnRQb2luCiAg
ICAgdmlld3BvcnRDb250ZW50c0NoYW5nZWQoKTsKIH0KIAotdm9pZCBGcmFtZVZpZXc6OnJlc3Vt
ZVZpc2libGVJbWFnZUFuaW1hdGlvbnNJbmNsdWRpbmdTdWJmcmFtZXMoKQordm9pZCBGcmFtZVZp
ZXc6OmFwcGx5UmVjdXJzaXZlbHlHaXZlblZpc2libGVSZWN0KGNvbnN0IHN0ZDo6ZnVuY3Rpb248
dm9pZCAoRnJhbWVWaWV3JiBmcmFtZVZpZXcsIEludFJlY3QgdmlzaWJsZVJlY3QpPiYgYXBwbHkp
CiB7Ci0gICAgYXV0byogcmVuZGVyVmlldyA9IGZyYW1lKCkuY29udGVudFJlbmRlcmVyKCk7Ci0g
ICAgaWYgKCFyZW5kZXJWaWV3KQotICAgICAgICByZXR1cm47Ci0KICAgICBJbnRSZWN0IHdpbmRv
d0NsaXBSZWN0ID0gdGhpcy0+d2luZG93Q2xpcFJlY3QoKTsKICAgICBhdXRvIHZpc2libGVSZWN0
ID0gd2luZG93VG9Db250ZW50cyh3aW5kb3dDbGlwUmVjdCk7Ci0gICAgaWYgKHZpc2libGVSZWN0
LmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgLy8gUmVzdW1lIHBhdXNlZCBpbWFn
ZSBhbmltYXRpb25zIGluIHRoaXMgZnJhbWUuCi0gICAgcmVuZGVyVmlldy0+cmVzdW1lUGF1c2Vk
SW1hZ2VBbmltYXRpb25zSWZOZWVkZWQodmlzaWJsZVJlY3QpOworICAgIGFwcGx5KCp0aGlzLCB2
aXNpYmxlUmVjdCk7CiAKICAgICAvLyBSZWN1cnNpdmUgY2FsbCBmb3Igc3ViZnJhbWVzLiBXZSBj
YWNoZSB0aGUgY3VycmVudCBGcmFtZVZpZXcncyB3aW5kb3dDbGlwUmVjdCB0byBhdm9pZCByZWNv
bXB1dGluZyBpdCBmb3IgZXZlcnkgc3ViZnJhbWUuCiAgICAgVGVtcG9yYXJ5Q2hhbmdlPEludFJl
Y3QqPiB3aW5kb3dDbGlwUmVjdENhY2hlKG1fY2FjaGVkV2luZG93Q2xpcFJlY3QsICZ3aW5kb3dD
bGlwUmVjdCk7CiAgICAgZm9yIChGcmFtZSogY2hpbGRGcmFtZSA9IGZyYW1lKCkudHJlZSgpLmZp
cnN0Q2hpbGQoKTsgY2hpbGRGcmFtZTsgY2hpbGRGcmFtZSA9IGNoaWxkRnJhbWUtPnRyZWUoKS5u
ZXh0U2libGluZygpKSB7CiAgICAgICAgIGlmIChhdXRvKiBjaGlsZFZpZXcgPSBjaGlsZEZyYW1l
LT52aWV3KCkpCi0gICAgICAgICAgICBjaGlsZFZpZXctPnJlc3VtZVZpc2libGVJbWFnZUFuaW1h
dGlvbnNJbmNsdWRpbmdTdWJmcmFtZXMoKTsKKyAgICAgICAgICAgIGNoaWxkVmlldy0+YXBwbHlS
ZWN1cnNpdmVseUdpdmVuVmlzaWJsZVJlY3QoYXBwbHkpOwogICAgIH0KIH0KIAordm9pZCBGcmFt
ZVZpZXc6OnJlc3VtZVZpc2libGVJbWFnZUFuaW1hdGlvbnMoSW50UmVjdCB2aXNpYmxlUmVjdCkK
K3sKKyAgICBpZiAodmlzaWJsZVJlY3QuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm47CisKKyAg
ICBpZiAoYXV0byogcmVuZGVyVmlldyA9IGZyYW1lKCkuY29udGVudFJlbmRlcmVyKCkpCisgICAg
ICAgIHJlbmRlclZpZXctPnJlc3VtZVBhdXNlZEltYWdlQW5pbWF0aW9uc0lmTmVlZGVkKHZpc2li
bGVSZWN0KTsKK30KKwordm9pZCBGcmFtZVZpZXc6OnVwZGF0ZVNjcmlwdGVkQW5pbWF0aW9uc1Ro
cm90dGxpbmdTdGF0ZShJbnRSZWN0IHZpc2libGVSZWN0KQoreworI2lmIEVOQUJMRShSRVFVRVNU
X0FOSU1BVElPTl9GUkFNRSkKKyAgICBpZiAoZnJhbWUoKS5pc01haW5GcmFtZSgpKQorICAgICAg
ICByZXR1cm47CisKKyAgICBhdXRvKiBkb2N1bWVudCA9IGZyYW1lKCkuZG9jdW1lbnQoKTsKKyAg
ICBpZiAoIWRvY3VtZW50KQorICAgICAgICByZXR1cm47CisKKyAgICBhdXRvKiBzY3JpcHRlZEFu
aW1hdGlvbkNvbnRyb2xsZXIgPSBkb2N1bWVudC0+c2NyaXB0ZWRBbmltYXRpb25Db250cm9sbGVy
KCk7CisgICAgaWYgKCFzY3JpcHRlZEFuaW1hdGlvbkNvbnRyb2xsZXIpCisgICAgICAgIHJldHVy
bjsKKworICAgIC8vIEZJWE1FOiBUaGlzIGRvZXNuJ3Qgd29yayBmb3Igc3ViZnJhbWVzIG9mIGEg
ImRpc3BsYXk6IG5vbmUiIGZyYW1lIGJlY2F1c2UKKyAgICAvLyB0aGV5IGhhdmUgYSBub24tbnVs
bCBvd25lclJlbmRlcmVyLgorICAgIGJvb2wgc2hvdWxkVGhyb3R0bGUgPSAhZnJhbWUoKS5vd25l
clJlbmRlcmVyKCkgfHwgdmlzaWJsZVJlY3QuaXNFbXB0eSgpOworICAgIHNjcmlwdGVkQW5pbWF0
aW9uQ29udHJvbGxlci0+c2V0VGhyb3R0bGVkKHNob3VsZFRocm90dGxlKTsKKyNlbHNlCisgICAg
VU5VU0VEX1BBUkFNKHZpc2libGVSZWN0KTsKKyNlbmRpZgorfQorCisKK3ZvaWQgRnJhbWVWaWV3
OjpyZXN1bWVWaXNpYmxlSW1hZ2VBbmltYXRpb25zSW5jbHVkaW5nU3ViZnJhbWVzKCkKK3sKKyAg
ICBhcHBseVJlY3Vyc2l2ZWx5R2l2ZW5WaXNpYmxlUmVjdChbXSAoRnJhbWVWaWV3JiBmcmFtZVZp
ZXcsIEludFJlY3QgdmlzaWJsZVJlY3QpIHsKKyAgICAgICAgZnJhbWVWaWV3LnJlc3VtZVZpc2li
bGVJbWFnZUFuaW1hdGlvbnModmlzaWJsZVJlY3QpOworICAgIH0pOworfQorCiB2b2lkIEZyYW1l
Vmlldzo6dXBkYXRlTGF5ZXJQb3NpdGlvbnNBZnRlclNjcm9sbGluZygpCiB7CiAgICAgLy8gSWYg
d2UncmUgc2Nyb2xsaW5nIGFzIGEgcmVzdWx0IG9mIHVwZGF0aW5nIHRoZSB2aWV3IHNpemUgYWZ0
ZXIgbGF5b3V0LCB3ZSdsbCB1cGRhdGUgd2lkZ2V0cyBhbmQgbGF5ZXIgcG9zaXRpb25zIHNvb24g
YW55d2F5LgpAQCAtMzA1OSwxMyArMzEwMCwxMSBAQCB2b2lkIEZyYW1lVmlldzo6dW5yZWdpc3Rl
clRocm90dGxlZERPTVRpbWVyKERPTVRpbWVyKiB0aW1lcikKICAgICBtX3Rocm90dGxlZFRpbWVy
cy5yZW1vdmUodGltZXIpOwogfQogCi12b2lkIEZyYW1lVmlldzo6dXBkYXRlVGhyb3R0bGVkRE9N
VGltZXJzU3RhdGUoKQordm9pZCBGcmFtZVZpZXc6OnVwZGF0ZVRocm90dGxlZERPTVRpbWVyc1N0
YXRlKEludFJlY3QgdmlzaWJsZVJlY3QpCiB7CiAgICAgaWYgKG1fdGhyb3R0bGVkVGltZXJzLmlz
RW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgSW50UmVjdCB2aXNpYmxlUmVjdCA9IHdp
bmRvd1RvQ29udGVudHMod2luZG93Q2xpcFJlY3QoKSk7Ci0KICAgICAvLyBEbyBub3QgaXRlcmF0
ZSBvdmVyIHRoZSBIYXNoU2V0IGJlY2F1c2UgY2FsbGluZyBET01UaW1lcjo6dXBkYXRlVGhyb3R0
bGluZ1N0YXRlQWZ0ZXJWaWV3cG9ydENoYW5nZSgpCiAgICAgLy8gbWF5IGNhdXNlIHRpbWVycyB0
byByZW1vdmUgdGhlbXNlbHZlcyBmcm9tIGl0IHdoaWxlIHdlIGFyZSBpdGVyYXRpbmcuCiAgICAg
VmVjdG9yPERPTVRpbWVyKj4gdGltZXJzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9GcmFtZVZpZXcuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmgKaW5kZXggYjJk
N2NlZjFjYzQ4MjExNTQ0Y2NmN2UzZWYwMjkxMDE4M2YzYTgwNS4uNzkzMmI3YTQyNjM2YWQ5NGU0
YTQ4YWQ0YzI2MjUzNjliMDE3YTY0MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9G
cmFtZVZpZXcuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5oCkBAIC01OTYs
NyArNTk2LDExIEBAIHByaXZhdGU6CiAgICAgdm9pZCBmb3JjZUxheW91dFBhcmVudFZpZXdJZk5l
ZWRlZCgpOwogICAgIHZvaWQgcGVyZm9ybVBvc3RMYXlvdXRUYXNrcygpOwogICAgIHZvaWQgYXV0
b1NpemVJZkVuYWJsZWQoKTsKLSAgICB2b2lkIHVwZGF0ZVRocm90dGxlZERPTVRpbWVyc1N0YXRl
KCk7CisKKyAgICB2b2lkIGFwcGx5UmVjdXJzaXZlbHlHaXZlblZpc2libGVSZWN0KGNvbnN0IHN0
ZDo6ZnVuY3Rpb248dm9pZCAoRnJhbWVWaWV3JiBmcmFtZVZpZXcsIEludFJlY3QgdmlzaWJsZVJl
Y3QpPiYpOworICAgIHZvaWQgdXBkYXRlVGhyb3R0bGVkRE9NVGltZXJzU3RhdGUoSW50UmVjdCB2
aXNpYmxlUmVjdCk7CisgICAgdm9pZCByZXN1bWVWaXNpYmxlSW1hZ2VBbmltYXRpb25zKEludFJl
Y3QgdmlzaWJsZVJlY3QpOworICAgIHZvaWQgdXBkYXRlU2NyaXB0ZWRBbmltYXRpb25zVGhyb3R0
bGluZ1N0YXRlKEludFJlY3QgdmlzaWJsZVJlY3QpOwogCiAgICAgdm9pZCB1cGRhdGVMYXllckZs
dXNoVGhyb3R0bGluZygpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgYWRqdXN0VGlsZWRCYWNr
aW5nQ292ZXJhZ2UoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJu
YWxzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAppbmRleCA4ODI5
ZWUwMDc4NzY5ZmE3YTZlNmFlZjE4NDFhZTYyMjQyNThkNDczLi4wNWFlMjFkNzk4OTE5YTE5NzZl
NWM0NDk0NmRmOGIyMGJkYmU1MGIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5n
L0ludGVybmFscy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3Bw
CkBAIC05OCw2ICs5OCw3IEBACiAjaW5jbHVkZSAiUmVuZGVyZWREb2N1bWVudE1hcmtlci5oIgog
I2luY2x1ZGUgIlJ1bnRpbWVFbmFibGVkRmVhdHVyZXMuaCIKICNpbmNsdWRlICJTY2hlbWVSZWdp
c3RyeS5oIgorI2luY2x1ZGUgIlNjcmlwdGVkQW5pbWF0aW9uQ29udHJvbGxlci5oIgogI2luY2x1
ZGUgIlNjcm9sbGluZ0Nvb3JkaW5hdG9yLmgiCiAjaW5jbHVkZSAiU2VyaWFsaXplZFNjcmlwdFZh
bHVlLmgiCiAjaW5jbHVkZSAiU2V0dGluZ3MuaCIKQEAgLTc2Niw2ICs3NjcsMTggQEAgYm9vbCBJ
bnRlcm5hbHM6OmlzVGltZXJUaHJvdHRsZWQoaW50IHRpbWVvdXRJZCwgRXhjZXB0aW9uQ29kZSYg
ZWMpCiAgICAgcmV0dXJuIHRpbWVyLT5tX3Rocm90dGxlU3RhdGUgPT0gRE9NVGltZXI6OlNob3Vs
ZFRocm90dGxlOwogfQogCitib29sIEludGVybmFsczo6aXNSZXF1ZXN0QW5pbWF0aW9uRnJhbWVU
aHJvdHRsZWQoKSBjb25zdAoreworI2lmIEVOQUJMRShSRVFVRVNUX0FOSU1BVElPTl9GUkFNRSkK
KyAgICBhdXRvKiBzY3JpcHRlZEFuaW1hdGlvbkNvbnRyb2xsZXIgPSBjb250ZXh0RG9jdW1lbnQo
KS0+c2NyaXB0ZWRBbmltYXRpb25Db250cm9sbGVyKCk7CisgICAgaWYgKCFzY3JpcHRlZEFuaW1h
dGlvbkNvbnRyb2xsZXIpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICByZXR1cm4gc2NyaXB0
ZWRBbmltYXRpb25Db250cm9sbGVyLT5pc1Rocm90dGxlZCgpOworI2Vsc2UKKyAgICByZXR1cm4g
ZmFsc2U7CisjZW5kaWYKK30KKwogU3RyaW5nIEludGVybmFsczo6dmlzaWJsZVBsYWNlaG9sZGVy
KEVsZW1lbnQqIGVsZW1lbnQpCiB7CiAgICAgaWYgKGlzPEhUTUxUZXh0Rm9ybUNvbnRyb2xFbGVt
ZW50PihlbGVtZW50KSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRl
cm5hbHMuaCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmgKaW5kZXggMDk0MTIy
OTYxOTIyMTcyZjdkYjcxNzViZGY4OThhNjc4Y2FiZGEyMy4uMTJkNmY4NzQzMmVhZjVmMTAyMjJm
N2IzY2NiNTAzYWVlYmM2YTFkNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9J
bnRlcm5hbHMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5oCkBAIC0x
MTMsNiArMTEzLDcgQEAgcHVibGljOgogCiAgICAgLy8gRE9NVGltZXJzIHRocm90dGxpbmcgdGVz
dGluZy4KICAgICBib29sIGlzVGltZXJUaHJvdHRsZWQoaW50IHRpbWVvdXRJZCwgRXhjZXB0aW9u
Q29kZSYpOworICAgIGJvb2wgaXNSZXF1ZXN0QW5pbWF0aW9uRnJhbWVUaHJvdHRsZWQoKSBjb25z
dDsKIAogICAgIC8vIFNwYXRpYWwgTmF2aWdhdGlvbiB0ZXN0aW5nLgogICAgIHVuc2lnbmVkIGxh
c3RTcGF0aWFsTmF2aWdhdGlvbkNhbmRpZGF0ZUNvdW50KEV4Y2VwdGlvbkNvZGUmKSBjb25zdDsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlkbCBiL1NvdXJj
ZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlkbAppbmRleCAxYjAwOTgwNDRmMzEzNjI3ZWMz
YWUzYWZiZGNkMmI3NGUyMGFjYjI3Li42ZDIzMjk5ZTI2NGRmNDUyMWU5MDVjNTRmODBkYmE5Mjdk
MWZiZmMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5pZGwK
KysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaWRsCkBAIC0yNzksNiArMjc5
LDggQEAgZW51bSBSZXNvdXJjZUxvYWRQcmlvcml0eSB7CiAgICAgLy8gUXVlcnkgaWYgYSB0aW1l
ciBpcyBjdXJyZW50bHkgdGhyb3R0bGVkLCB0byBkZWJ1ZyB0aW1lciB0aHJvdHRsaW5nLgogICAg
IFtSYWlzZXNFeGNlcHRpb25dIGJvb2xlYW4gaXNUaW1lclRocm90dGxlZChsb25nIHRpbWVySGFu
ZGxlKTsKIAorICAgIGJvb2xlYW4gaXNSZXF1ZXN0QW5pbWF0aW9uRnJhbWVUaHJvdHRsZWQoKTsK
KwogICAgIFtSYWlzZXNFeGNlcHRpb25dIHZvaWQgc3RhcnRUcmFja2luZ1N0eWxlUmVjYWxjcygp
OwogICAgIFtSYWlzZXNFeGNlcHRpb25dIHVuc2lnbmVkIGxvbmcgc3R5bGVSZWNhbGNDb3VudCgp
OwogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFu
Z2VMb2cKaW5kZXggNzRiMTY2MTY2NjQ2ODkwNGI0ODhkODllNzVjYWVhYTJlZWRhNGI3Ni4uN2Q3
NGIwNTFhYjFlY2Q4ZjA3NjM1N2NiNDI3MTMwNGMwZGJmOWE1MiAxMDA2NDQKLS0tIGEvTGF5b3V0
VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI0
IEBACisyMDE1LTA1LTA3ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAg
ICAgVGhyb3R0bGUgUmVxdWVzdEFuaW1hdGlvbkZyYW1lIGluIHN1YmZyYW1lcyB0aGF0IGFyZSBv
dXRzaWRlIHRoZSB2aWV3cG9ydAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTQ0NzE4CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8yMDY4ODc4Mj4KKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGZhc3QvYW5p
bWF0aW9uL3JlcXVlc3QtYW5pbWF0aW9uLWZyYW1lLXRocm90dGxlLXN1YmZyYW1lLWRpc3BsYXkt
bm9uZS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvYW5pbWF0aW9uL3JlcXVl
c3QtYW5pbWF0aW9uLWZyYW1lLXRocm90dGxlLXN1YmZyYW1lLWRpc3BsYXktbm9uZS5odG1sOiBB
ZGRlZC4KKyAgICAgICAgQWRkIGxheW91dCB0ZXN0IHRvIHRlc3QgdGhhdCBSZXF1ZXN0QW5pbWF0
aW9uRnJhbWUgaXMgcHJvcGVybHkgdGhyb3R0bGVkCisgICAgICAgIGluICJkaXNwbGF5OiBub25l
IiBzdWJmcmFtZXMuCisKKyAgICAgICAgKiBmYXN0L2FuaW1hdGlvbi9yZXF1ZXN0LWFuaW1hdGlv
bi1mcmFtZS10aHJvdHRsZS1zdWJmcmFtZS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAq
IGZhc3QvYW5pbWF0aW9uL3JlcXVlc3QtYW5pbWF0aW9uLWZyYW1lLXRocm90dGxlLXN1YmZyYW1l
Lmh0bWw6IEFkZGVkLgorICAgICAgICBBZGQgbGF5b3V0IHRlc3QgdG8gdGVzdCB0aGF0IFJlcXVl
c3RBbmltYXRpb25GcmFtZSBpcyBwcm9wZXJseSB0aHJvdHRsZWQKKyAgICAgICAgaW4gZnJhbWVz
IHRoYXQgYXJlIG91dHNpZGUgdGhlIHZpZXdwb3J0LgorCisgICAgICAgICogZmFzdC9hbmltYXRp
b24vcmVzb3VyY2VzL3JlcXVlc3RBbmltYXRpb25GcmFtZS1mcmFtZS0yLmh0bWw6IEFkZGVkLgor
ICAgICAgICAqIGZhc3QvYW5pbWF0aW9uL3Jlc291cmNlcy9yZXF1ZXN0QW5pbWF0aW9uRnJhbWUt
ZnJhbWUuaHRtbDogQWRkZWQuCisKIDIwMTUtMDUtMDcgIFNhbSBXZWluaWcgIDxzYW1Ad2Via2l0
Lm9yZz4KIAogICAgICAgICBDb25zaWRlciBpbXBsZW1lbnRpbmcgRG9jdW1lbnQuc2Nyb2xsaW5n
RWxlbWVudApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9hbmltYXRpb24vcmVxdWVzdC1h
bmltYXRpb24tZnJhbWUtdGhyb3R0bGUtc3ViZnJhbWUtZGlzcGxheS1ub25lLWV4cGVjdGVkLnR4
dCBiL0xheW91dFRlc3RzL2Zhc3QvYW5pbWF0aW9uL3JlcXVlc3QtYW5pbWF0aW9uLWZyYW1lLXRo
cm90dGxlLXN1YmZyYW1lLWRpc3BsYXktbm9uZS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDJk
MGY1MDlhMzZmMDM1ZjkzYmI2MWYyM2I0MDAyNDc5YjA5MmI0MQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2Zhc3QvYW5pbWF0aW9uL3JlcXVlc3QtYW5pbWF0aW9uLWZyYW1lLXRocm90
dGxlLXN1YmZyYW1lLWRpc3BsYXktbm9uZS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxOSBAQAor
VGVzdHMgdGhhdCByZXF1ZXN0QW5pbWF0aW9uRnJhbWUgaXMgdGhyb3R0bGVkIGluIHN1YmZyYW1l
cyB0aGF0IGFyZSBkaXNwbGF5Om5vbmUKKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2Vy
aWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisK
K0ZyYW1lIGlzIGluaXRpYWxseSB2aXNpYmlsZSBzbyByZXF1ZXN0QW5pbWF0aW9uRnJhbWUgc2hv
dWxkIG5vdCBiZSB0aHJvdHRsZWQKK1BBU1MgdGVzdEZyYW1lLmNvbnRlbnRXaW5kb3cuaW50ZXJu
YWxzLmlzUmVxdWVzdEFuaW1hdGlvbkZyYW1lVGhyb3R0bGVkKCkgYmVjYW1lIGZhbHNlCitQQVNT
IHRlc3RGcmFtZS5jb250ZW50V2luZG93LmludGVybmFscy5pc1JlcXVlc3RBbmltYXRpb25GcmFt
ZVRocm90dGxlZCgpIGlzIGZhbHNlCitIaWRpbmcgc3ViZnJhbWUuCit0ZXN0RnJhbWUuc3R5bGUu
ZGlzcGxheSA9ICdub25lJzsKK1BBU1MgdGVzdEZyYW1lLmNvbnRlbnRXaW5kb3cuaW50ZXJuYWxz
LmlzUmVxdWVzdEFuaW1hdGlvbkZyYW1lVGhyb3R0bGVkKCkgYmVjYW1lIHRydWUKK1BBU1MgdGVz
dEZyYW1lLmNvbnRlbnRXaW5kb3cuaW50ZXJuYWxzLmlzUmVxdWVzdEFuaW1hdGlvbkZyYW1lVGhy
b3R0bGVkKCkgaXMgdHJ1ZQorU2hvdyBzdWJmcmFtZSBhZ2FpbgordGVzdEZyYW1lLnN0eWxlLmRp
c3BsYXkgPSAnYmxvY2snOworUEFTUyB0ZXN0RnJhbWUuY29udGVudFdpbmRvdy5pbnRlcm5hbHMu
aXNSZXF1ZXN0QW5pbWF0aW9uRnJhbWVUaHJvdHRsZWQoKSBiZWNhbWUgZmFsc2UKK1BBU1Mgc3Vj
Y2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9mYXN0L2FuaW1hdGlvbi9yZXF1ZXN0LWFuaW1hdGlvbi1mcmFtZS10aHJvdHRs
ZS1zdWJmcmFtZS1kaXNwbGF5LW5vbmUuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvYW5pbWF0aW9u
L3JlcXVlc3QtYW5pbWF0aW9uLWZyYW1lLXRocm90dGxlLXN1YmZyYW1lLWRpc3BsYXktbm9uZS5o
dG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLmU4ZDExY2Y5MmJmNzcxOTQ0NjgyMjUwMmMzZmJjMGMxMWZmYTE4ZGEK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2FuaW1hdGlvbi9yZXF1ZXN0LWFu
aW1hdGlvbi1mcmFtZS10aHJvdHRsZS1zdWJmcmFtZS1kaXNwbGF5LW5vbmUuaHRtbApAQCAtMCww
ICsxLDQ0IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGJvZHk+Cis8c2NyaXB0IHNyYz0i
Li4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+CitkZXNj
cmlwdGlvbigiVGVzdHMgdGhhdCByZXF1ZXN0QW5pbWF0aW9uRnJhbWUgaXMgdGhyb3R0bGVkIGlu
IHN1YmZyYW1lcyB0aGF0IGFyZSBkaXNwbGF5Om5vbmUiKTsKK3dpbmRvdy5qc1Rlc3RJc0FzeW5j
ID0gdHJ1ZTsKKworZnVuY3Rpb24gY2hlY2tTdWJmcmFtZVRocm90dGxlZCgpCit7CisgICAgc2hv
dWxkQmVUcnVlKCJ0ZXN0RnJhbWUuY29udGVudFdpbmRvdy5pbnRlcm5hbHMuaXNSZXF1ZXN0QW5p
bWF0aW9uRnJhbWVUaHJvdHRsZWQoKSIpOworCisgICAgZGVidWcoIlNob3cgc3ViZnJhbWUgYWdh
aW4iKTsKKyAgICBldmFsQW5kTG9nKCJ0ZXN0RnJhbWUuc3R5bGUuZGlzcGxheSA9ICdibG9jayc7
Iik7CisKKyAgICBzaG91bGRCZWNvbWVFcXVhbCgidGVzdEZyYW1lLmNvbnRlbnRXaW5kb3cuaW50
ZXJuYWxzLmlzUmVxdWVzdEFuaW1hdGlvbkZyYW1lVGhyb3R0bGVkKCkiLCAiZmFsc2UiLCBmaW5p
c2hKU1Rlc3QpOworfQorCitmdW5jdGlvbiBoaWRlRnJhbWUoKQoreworICAgIHNob3VsZEJlRmFs
c2UoInRlc3RGcmFtZS5jb250ZW50V2luZG93LmludGVybmFscy5pc1JlcXVlc3RBbmltYXRpb25G
cmFtZVRocm90dGxlZCgpIik7CisKKyAgICBkZWJ1ZygiSGlkaW5nIHN1YmZyYW1lLiIpOworICAg
IGV2YWxBbmRMb2coInRlc3RGcmFtZS5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnOyIpOworCisgICAg
c2hvdWxkQmVjb21lRXF1YWwoInRlc3RGcmFtZS5jb250ZW50V2luZG93LmludGVybmFscy5pc1Jl
cXVlc3RBbmltYXRpb25GcmFtZVRocm90dGxlZCgpIiwgInRydWUiLCBjaGVja1N1YmZyYW1lVGhy
b3R0bGVkKTsKK30KKworZnVuY3Rpb24gcnVuVGVzdCgpCit7CisgICAgdGVzdEZyYW1lID0gZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQoInRlc3RGcmFtZSIpOworICAgIGRlYnVnKCJGcmFtZSBpcyBp
bml0aWFsbHkgdmlzaWJpbGUgc28gcmVxdWVzdEFuaW1hdGlvbkZyYW1lIHNob3VsZCBub3QgYmUg
dGhyb3R0bGVkIik7CisgICAgc2hvdWxkQmVjb21lRXF1YWwoInRlc3RGcmFtZS5jb250ZW50V2lu
ZG93LmludGVybmFscy5pc1JlcXVlc3RBbmltYXRpb25GcmFtZVRocm90dGxlZCgpIiwgImZhbHNl
IiwgaGlkZUZyYW1lKTsKK30KKwordmFyIGkgPSAwOworcmVxdWVzdEFuaW1hdGlvbkZyYW1lKGZ1
bmN0aW9uKCkgeworICAgIGkrKzsKK30pOworPC9zY3JpcHQ+Cis8aWZyYW1lIGlkPSJ0ZXN0RnJh
bWUiIHNyYz0icmVzb3VyY2VzL3JlcXVlc3RBbmltYXRpb25GcmFtZS1mcmFtZS5odG1sIiBvbmxv
YWQ9InJ1blRlc3QoKSI+PC9pZnJhbWU+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pz
LXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9mYXN0L2FuaW1hdGlvbi9yZXF1ZXN0LWFuaW1hdGlvbi1mcmFtZS10aHJvdHRs
ZS1zdWJmcmFtZS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2FuaW1hdGlvbi9yZXF1
ZXN0LWFuaW1hdGlvbi1mcmFtZS10aHJvdHRsZS1zdWJmcmFtZS1leHBlY3RlZC50eHQKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uMDU5ODNiMzMxMzI4MzM0MjI1YmM4ODVkOGU0ZThiYzIyYjQ2Y2E4YwotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvYW5pbWF0aW9uL3JlcXVlc3QtYW5pbWF0aW9uLWZy
YW1lLXRocm90dGxlLXN1YmZyYW1lLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDI0IEBACitUZXN0
cyB0aGF0IHJlcXVlc3RBbmltYXRpb25GcmFtZSBpcyB0aHJvdHRsZWQgaW4gc3ViZnJhbWVzIHRo
YXQgYXJlIG91dHNpZGUgdGhlIHZpZXdwb3J0CisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBh
IHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4K
KworCitGcmFtZSBpcyBpbml0aWFsbHkgb3V0c2lkZSB0aGUgdmlld3BvcnQgc28gcmVxdWVzdEFu
aW1hdGlvbkZyYW1lIHNob3VsZCBiZSB0aHJvdHRsZWQKK1BBU1MgdGVzdEZyYW1lLmNvbnRlbnRX
aW5kb3cuaW50ZXJuYWxzLmlzUmVxdWVzdEFuaW1hdGlvbkZyYW1lVGhyb3R0bGVkKCkgYmVjYW1l
IHRydWUKK1BBU1MgaW50ZXJuYWxzLmlzUmVxdWVzdEFuaW1hdGlvbkZyYW1lVGhyb3R0bGVkKCkg
aXMgZmFsc2UKK1BBU1MgdGVzdEZyYW1lLmNvbnRlbnRXaW5kb3cuaW50ZXJuYWxzLmlzUmVxdWVz
dEFuaW1hdGlvbkZyYW1lVGhyb3R0bGVkKCkgaXMgdHJ1ZQorUEFTUyBncmFuZENoaWxkRnJhbWUu
Y29udGVudFdpbmRvdy5pbnRlcm5hbHMuaXNSZXF1ZXN0QW5pbWF0aW9uRnJhbWVUaHJvdHRsZWQo
KSBpcyB0cnVlCitTY3JvbGxpbmcgZnJhbWUgaW50byB2aWV3LgorUmVxdWVzdEFuaW1hdGlvbkZy
YW1lIHNob3VsZCBubyBsb25nZXIgYmUgdGhyb3R0bGVkCitQQVNTIGludGVybmFscy5pc1JlcXVl
c3RBbmltYXRpb25GcmFtZVRocm90dGxlZCgpIGlzIGZhbHNlCitQQVNTIGdyYW5kQ2hpbGRGcmFt
ZS5jb250ZW50V2luZG93LmludGVybmFscy5pc1JlcXVlc3RBbmltYXRpb25GcmFtZVRocm90dGxl
ZCgpIGlzIGZhbHNlCitQQVNTIHRlc3RGcmFtZS5jb250ZW50V2luZG93LmludGVybmFscy5pc1Jl
cXVlc3RBbmltYXRpb25GcmFtZVRocm90dGxlZCgpIGlzIGZhbHNlCitTY3JvbGxpbmcgZnJhbWUg
b3V0IG9mIHZpZXcgYWdhaW4uCitQQVNTIGludGVybmFscy5pc1JlcXVlc3RBbmltYXRpb25GcmFt
ZVRocm90dGxlZCgpIGlzIGZhbHNlCitQQVNTIHRlc3RGcmFtZS5jb250ZW50V2luZG93LmludGVy
bmFscy5pc1JlcXVlc3RBbmltYXRpb25GcmFtZVRocm90dGxlZCgpIGJlY2FtZSB0cnVlCitQQVNT
IHRlc3RGcmFtZS5jb250ZW50V2luZG93LmludGVybmFscy5pc1JlcXVlc3RBbmltYXRpb25GcmFt
ZVRocm90dGxlZCgpIGlzIHRydWUKK1BBU1MgZ3JhbmRDaGlsZEZyYW1lLmNvbnRlbnRXaW5kb3cu
aW50ZXJuYWxzLmlzUmVxdWVzdEFuaW1hdGlvbkZyYW1lVGhyb3R0bGVkKCkgaXMgdHJ1ZQorUEFT
UyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2Zhc3QvYW5pbWF0aW9uL3JlcXVlc3QtYW5pbWF0aW9uLWZyYW1lLXRo
cm90dGxlLXN1YmZyYW1lLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2FuaW1hdGlvbi9yZXF1ZXN0
LWFuaW1hdGlvbi1mcmFtZS10aHJvdHRsZS1zdWJmcmFtZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmY4OTQw
ZjNlZDg5YTBhNTE1ZmVmZGFkNWUwMmFmYzFhN2E1NGUzZjYKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9mYXN0L2FuaW1hdGlvbi9yZXF1ZXN0LWFuaW1hdGlvbi1mcmFtZS10aHJvdHRs
ZS1zdWJmcmFtZS5odG1sCkBAIC0wLDAgKzEsNjEgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+
Cis8Ym9keT4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwv
c2NyaXB0PgorPHNjcmlwdD4KK2Rlc2NyaXB0aW9uKCJUZXN0cyB0aGF0IHJlcXVlc3RBbmltYXRp
b25GcmFtZSBpcyB0aHJvdHRsZWQgaW4gc3ViZnJhbWVzIHRoYXQgYXJlIG91dHNpZGUgdGhlIHZp
ZXdwb3J0Iik7Cit3aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7CisKK2Z1bmN0aW9uIGNoZWNr
U3ViZnJhbWVzVGhyb3R0bGVkKCkKK3sKKyAgICBzaG91bGRCZVRydWUoInRlc3RGcmFtZS5jb250
ZW50V2luZG93LmludGVybmFscy5pc1JlcXVlc3RBbmltYXRpb25GcmFtZVRocm90dGxlZCgpIik7
CisgICAgc2hvdWxkQmVUcnVlKCJncmFuZENoaWxkRnJhbWUuY29udGVudFdpbmRvdy5pbnRlcm5h
bHMuaXNSZXF1ZXN0QW5pbWF0aW9uRnJhbWVUaHJvdHRsZWQoKSIpOworCisgICAgZmluaXNoSlNU
ZXN0KCk7Cit9CisKK2Z1bmN0aW9uIHNjcm9sbEZyYW1lT3V0T2ZWaWV3KCkKK3sKKyAgICBkZWJ1
ZygiU2Nyb2xsaW5nIGZyYW1lIG91dCBvZiB2aWV3IGFnYWluLiIpOworICAgIHdpbmRvdy5zY3Jv
bGwoMCwgMCk7CisKKyAgICBzaG91bGRCZUZhbHNlKCJpbnRlcm5hbHMuaXNSZXF1ZXN0QW5pbWF0
aW9uRnJhbWVUaHJvdHRsZWQoKSIpOworICAgIHNob3VsZEJlY29tZUVxdWFsKCJ0ZXN0RnJhbWUu
Y29udGVudFdpbmRvdy5pbnRlcm5hbHMuaXNSZXF1ZXN0QW5pbWF0aW9uRnJhbWVUaHJvdHRsZWQo
KSIsICJ0cnVlIiwgY2hlY2tTdWJmcmFtZXNUaHJvdHRsZWQpOworfQorCitmdW5jdGlvbiBzY3Jv
bGxGcmFtZUludG9WaWV3KCkKK3sKKyAgICBzaG91bGRCZUZhbHNlKCJpbnRlcm5hbHMuaXNSZXF1
ZXN0QW5pbWF0aW9uRnJhbWVUaHJvdHRsZWQoKSIpOworICAgIHNob3VsZEJlVHJ1ZSgidGVzdEZy
YW1lLmNvbnRlbnRXaW5kb3cuaW50ZXJuYWxzLmlzUmVxdWVzdEFuaW1hdGlvbkZyYW1lVGhyb3R0
bGVkKCkiKTsKKyAgICBzaG91bGRCZVRydWUoImdyYW5kQ2hpbGRGcmFtZS5jb250ZW50V2luZG93
LmludGVybmFscy5pc1JlcXVlc3RBbmltYXRpb25GcmFtZVRocm90dGxlZCgpIik7CisKKyAgICBk
ZWJ1ZygiU2Nyb2xsaW5nIGZyYW1lIGludG8gdmlldy4iKTsKKyAgICB3aW5kb3cuaW50ZXJuYWxz
LnNjcm9sbEVsZW1lbnRUb1JlY3QodGVzdEZyYW1lLCAwLCAwLCAzMDAsIDMwMCk7CisKKyAgICBk
ZWJ1ZygiUmVxdWVzdEFuaW1hdGlvbkZyYW1lIHNob3VsZCBubyBsb25nZXIgYmUgdGhyb3R0bGVk
Iik7CisgICAgc2hvdWxkQmVGYWxzZSgiaW50ZXJuYWxzLmlzUmVxdWVzdEFuaW1hdGlvbkZyYW1l
VGhyb3R0bGVkKCkiKTsKKyAgICBzaG91bGRCZUZhbHNlKCJncmFuZENoaWxkRnJhbWUuY29udGVu
dFdpbmRvdy5pbnRlcm5hbHMuaXNSZXF1ZXN0QW5pbWF0aW9uRnJhbWVUaHJvdHRsZWQoKSIpOwor
ICAgIHNob3VsZEJlRmFsc2UoInRlc3RGcmFtZS5jb250ZW50V2luZG93LmludGVybmFscy5pc1Jl
cXVlc3RBbmltYXRpb25GcmFtZVRocm90dGxlZCgpIik7CisKKyAgICBzY3JvbGxGcmFtZU91dE9m
VmlldygpOworfQorCitmdW5jdGlvbiBydW5UZXN0KCkKK3sKKyAgICB0ZXN0RnJhbWUgPSBkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCgidGVzdEZyYW1lIik7CisgICAgZ3JhbmRDaGlsZEZyYW1lID0g
dGVzdEZyYW1lLmNvbnRlbnREb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiZ3JhbmRDaGlsZEZyYW1l
Iik7CisgICAgZGVidWcoIkZyYW1lIGlzIGluaXRpYWxseSBvdXRzaWRlIHRoZSB2aWV3cG9ydCBz
byByZXF1ZXN0QW5pbWF0aW9uRnJhbWUgc2hvdWxkIGJlIHRocm90dGxlZCIpOworICAgIHNob3Vs
ZEJlY29tZUVxdWFsKCJ0ZXN0RnJhbWUuY29udGVudFdpbmRvdy5pbnRlcm5hbHMuaXNSZXF1ZXN0
QW5pbWF0aW9uRnJhbWVUaHJvdHRsZWQoKSIsICJ0cnVlIiwgc2Nyb2xsRnJhbWVJbnRvVmlldyk7
Cit9CisKK3ZhciBpID0gMDsKK3JlcXVlc3RBbmltYXRpb25GcmFtZShmdW5jdGlvbigpIHsKKyAg
ICBpKys7Cit9KTsKKzwvc2NyaXB0PgorPGRpdiBzdHlsZT0icG9zaXRpb246IHJlbGF0aXZlOyB3
aWR0aDogMTYwMHB4OyBoZWlnaHQ6IDI0MDBweDsgYmFja2dyb3VuZC1jb2xvcjogZ3JlZW47Ij4K
KyAgICA8aWZyYW1lIGlkPSJ0ZXN0RnJhbWUiIHNyYz0icmVzb3VyY2VzL3JlcXVlc3RBbmltYXRp
b25GcmFtZS1mcmFtZS5odG1sIiBzdHlsZT0icG9zaXRpb246YWJzb2x1dGU7IGxlZnQ6IDYwMHB4
OyB0b3A6IDgwMHB4OyIgb25sb2FkPSJydW5UZXN0KCkiPjwvaWZyYW1lPgorPC9kaXY+Cis8c2Ny
aXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2Jv
ZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2FuaW1hdGlvbi9yZXNv
dXJjZXMvcmVxdWVzdEFuaW1hdGlvbkZyYW1lLWZyYW1lLTIuaHRtbCBiL0xheW91dFRlc3RzL2Zh
c3QvYW5pbWF0aW9uL3Jlc291cmNlcy9yZXF1ZXN0QW5pbWF0aW9uRnJhbWUtZnJhbWUtMi5odG1s
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjUxMTI1ZDk3MThhYzA2N2UxYzAxZTdiMDUwMWY4NmFkZTI1MmM4MDIKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2FuaW1hdGlvbi9yZXNvdXJjZXMvcmVx
dWVzdEFuaW1hdGlvbkZyYW1lLWZyYW1lLTIuaHRtbApAQCAtMCwwICsxLDExIEBACis8IURPQ1RZ
UEUgaHRtbD4KKzxodG1sPgorPGJvZHk+Cis8c2NyaXB0PgordmFyIGkgPSAwOworcmVxdWVzdEFu
aW1hdGlvbkZyYW1lKGZ1bmN0aW9uKCkgeworICBpKys7Cit9KTsKKzwvc2NyaXB0PgorPC9ib2R5
PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9hbmltYXRpb24vcmVzb3Vy
Y2VzL3JlcXVlc3RBbmltYXRpb25GcmFtZS1mcmFtZS5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9h
bmltYXRpb24vcmVzb3VyY2VzL3JlcXVlc3RBbmltYXRpb25GcmFtZS1mcmFtZS5odG1sCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLmMwZDc2MzZlMmM0NTNjNTIzYWUxMjU5NjZjYTI3NjRiYjk4NjI4YzUKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2FuaW1hdGlvbi9yZXNvdXJjZXMvcmVxdWVzdEFu
aW1hdGlvbkZyYW1lLWZyYW1lLmh0bWwKQEAgLTAsMCArMSwxMiBAQAorPCFET0NUWVBFIGh0bWw+
Cis8aHRtbD4KKzxib2R5PgorPGlmcmFtZSBpZD0iZ3JhbmRDaGlsZEZyYW1lIiBzcmM9InJlcXVl
c3RBbmltYXRpb25GcmFtZS1mcmFtZS0yLmh0bWwiPjwvaWZyYW1lPgorPHNjcmlwdD4KK3ZhciBp
ID0gMDsKK3JlcXVlc3RBbmltYXRpb25GcmFtZShmdW5jdGlvbigpIHsKKyAgaSsrOworfSk7Cis8
L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>252680</attachid>
            <date>2015-05-07 21:14:28 -0700</date>
            <delta_ts>2015-05-08 10:02:48 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-144718-20150507211311.patch</filename>
            <type>text/plain</type>
            <size>22773</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTgzOTY5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjgwNDgwYzIwZGVkNWNj
NDVmMjA0ODQ4ODU1OWUxMzJmMTE3MGNkYS4uMjc1MTkzZjRmOWZhYTlhMDViNWQyY2E3ZTBjODA4
OWE2NjI3NTYxMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM5IEBACisyMDE1LTA1LTA3ICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgVGhyb3R0bGUgUmVxdWVzdEFu
aW1hdGlvbkZyYW1lIGluIHN1YmZyYW1lcyB0aGF0IGFyZSBvdXRzaWRlIHRoZSB2aWV3cG9ydAor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ0NzE4Cisg
ICAgICAgIDxyZGFyOi8vcHJvYmxlbS8yMDY4ODc4Mj4KKworICAgICAgICBSZXZpZXdlZCBieSBT
aW1vbiBGcmFzZXIuCisKKyAgICAgICAgVGhyb3R0bGUgUmVxdWVzdEFuaW1hdGlvbkZyYW1lIGlu
IHN1YmZyYW1lcyB0aGF0IGFyZSBvdXRzaWRlIHRoZQorICAgICAgICB2aWV3cG9ydCBvciBoYXZl
ICJkaXNwbGF5OiBub25lIiBmb3IgcGVyZm9ybWFuY2UgYW5kIHBvd2VyLgorCisgICAgICAgIFRl
c3RzOiBmYXN0L2FuaW1hdGlvbi9yZXF1ZXN0LWFuaW1hdGlvbi1mcmFtZS10aHJvdHRsZS1zdWJm
cmFtZS1kaXNwbGF5LW5vbmUuaHRtbAorICAgICAgICAgICAgICAgZmFzdC9hbmltYXRpb24vcmVx
dWVzdC1hbmltYXRpb24tZnJhbWUtdGhyb3R0bGUtc3ViZnJhbWUuaHRtbAorCisgICAgICAgICog
ZG9tL0RvY3VtZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6c2NyaXB0ZWRBbmlt
YXRpb25Db250cm9sbGVyKToKKyAgICAgICAgKiBkb20vU2NyaXB0ZWRBbmltYXRpb25Db250cm9s
bGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdGVkQW5pbWF0aW9uQ29udHJvbGxlcjo6
c2V0VGhyb3R0bGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdGVkQW5pbWF0aW9uQ29udHJv
bGxlcjo6aXNUaHJvdHRsZWQpOgorICAgICAgICAqIGRvbS9TY3JpcHRlZEFuaW1hdGlvbkNvbnRy
b2xsZXIuaDoKKyAgICAgICAgKiBwYWdlL0ZyYW1lVmlldy5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpGcmFtZVZpZXc6OnZpZXdwb3J0Q29udGVudHNDaGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6
OkZyYW1lVmlldzo6YXBwbHlSZWN1cnNpdmVseVdpdGhWaXNpYmxlUmVjdCk6CisgICAgICAgIChX
ZWJDb3JlOjpGcmFtZVZpZXc6OnJlc3VtZVZpc2libGVJbWFnZUFuaW1hdGlvbnMpOgorICAgICAg
ICAoV2ViQ29yZTo6RnJhbWVWaWV3Ojp1cGRhdGVTY3JpcHRlZEFuaW1hdGlvbnNUaHJvdHRsaW5n
U3RhdGUpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVWaWV3OjpyZXN1bWVWaXNpYmxlSW1hZ2VB
bmltYXRpb25zSW5jbHVkaW5nU3ViZnJhbWVzKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lVmll
dzo6dXBkYXRlVGhyb3R0bGVkRE9NVGltZXJzU3RhdGUpOgorICAgICAgICAoV2ViQ29yZTo6RnJh
bWVWaWV3OjpzY3JvbGxQb3NpdGlvbkNoYW5nZWQpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29y
ZTo6RnJhbWVWaWV3OjpzZW5kUmVzaXplRXZlbnRJZk5lZWRlZCk6IERlbGV0ZWQuCisgICAgICAg
ICogcGFnZS9GcmFtZVZpZXcuaDoKKyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFscy5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpJbnRlcm5hbHM6OmlzUmVxdWVzdEFuaW1hdGlvbkZyYW1lVGhyb3R0
bGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkludGVybmFsczo6aXNUaW1lclRocm90dGxlZCk6IERl
bGV0ZWQuCisgICAgICAgICogdGVzdGluZy9JbnRlcm5hbHMuaDoKKyAgICAgICAgKiB0ZXN0aW5n
L0ludGVybmFscy5pZGw6CisKIDIwMTUtMDUtMDcgIFNhbSBXZWluaWcgIDxzYW1Ad2Via2l0Lm9y
Zz4KIAogICAgICAgICBDb25zaWRlciBpbXBsZW1lbnRpbmcgRG9jdW1lbnQuc2Nyb2xsaW5nRWxl
bWVudApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmggYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vRG9jdW1lbnQuaAppbmRleCBiZWZiNWE1Mjk2MzA0ZDVjYzc1MzY3ZjIxOTlk
M2Y2YmE2ODZhODBhLi5jYzFjMDM4YzUxYzc5ZDcxZjY3MzYzZjExMWFmZGQzNDA3MDdiOWE0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vRG9jdW1lbnQuaApAQCAtOTQ4LDYgKzk0OCw5IEBAIHB1YmxpYzoKIAogICAgIHZp
cnR1YWwgdm9pZCBwb3N0VGFzayhUYXNrKSBvdmVycmlkZSBmaW5hbDsgLy8gRXhlY3V0ZXMgdGhl
IHRhc2sgb24gY29udGV4dCdzIHRocmVhZCBhc3luY2hyb25vdXNseS4KIAorI2lmIEVOQUJMRShS
RVFVRVNUX0FOSU1BVElPTl9GUkFNRSkKKyAgICBTY3JpcHRlZEFuaW1hdGlvbkNvbnRyb2xsZXIq
IHNjcmlwdGVkQW5pbWF0aW9uQ29udHJvbGxlcigpIHsgcmV0dXJuIG1fc2NyaXB0ZWRBbmltYXRp
b25Db250cm9sbGVyLmdldCgpOyB9CisjZW5kaWYKICAgICB2b2lkIHN1c3BlbmRTY3JpcHRlZEFu
aW1hdGlvbkNvbnRyb2xsZXJDYWxsYmFja3MoKTsKICAgICB2b2lkIHJlc3VtZVNjcmlwdGVkQW5p
bWF0aW9uQ29udHJvbGxlckNhbGxiYWNrcygpOwogICAgIHZvaWQgc2NyaXB0ZWRBbmltYXRpb25D
b250cm9sbGVyU2V0VGhyb3R0bGVkKGJvb2wpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
ZG9tL1NjcmlwdGVkQW5pbWF0aW9uQ29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20v
U2NyaXB0ZWRBbmltYXRpb25Db250cm9sbGVyLmNwcAppbmRleCA3ZWRlYmQ0NDExY2FiZDljNmZm
YTQ5ZDZiZjFiYzlhNTMxNGIwM2U3Li4xYjM5YmYxNmUwMzUwM2FjM2MyMzdmNDRiM2Y1ZmVmYTU2
ODZlZTYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0ZWRBbmltYXRpb25D
b250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0ZWRBbmltYXRpb25D
b250cm9sbGVyLmNwcApAQCAtMzQsNiArMzQsOCBAQAogI2luY2x1ZGUgIkRvY3VtZW50TG9hZGVy
LmgiCiAjaW5jbHVkZSAiRnJhbWVWaWV3LmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9ySW5zdHJ1bWVu
dGF0aW9uLmgiCisjaW5jbHVkZSAiTG9nZ2luZy5oIgorI2luY2x1ZGUgIk1haW5GcmFtZS5oIgog
I2luY2x1ZGUgIlJlcXVlc3RBbmltYXRpb25GcmFtZUNhbGxiYWNrLmgiCiAjaW5jbHVkZSAiU2V0
dGluZ3MuaCIKICNpbmNsdWRlIDx3dGYvUmVmLmg+CkBAIC04NCw2ICs4Niw4IEBAIHZvaWQgU2Ny
aXB0ZWRBbmltYXRpb25Db250cm9sbGVyOjpzZXRUaHJvdHRsZWQoYm9vbCBpc1Rocm90dGxlZCkK
ICAgICBpZiAobV9pc1Rocm90dGxlZCA9PSBpc1Rocm90dGxlZCkKICAgICAgICAgcmV0dXJuOwog
CisgICAgTE9HKEFuaW1hdGlvbnMsICIlcCAtIFNldHRpbmcgUmVxdWVzdEFuaW1hdGlvbkZyYW1l
IHRocm90dGxpbmcgc3RhdGUgdG8gJWQgaW4gZnJhbWUgJXAgKGlzTWFpbkZyYW1lOiAlZCkiLCB0
aGlzLCBpc1Rocm90dGxlZCwgbV9kb2N1bWVudC0+ZnJhbWUoKSwgbV9kb2N1bWVudC0+ZnJhbWUo
KSA/IG1fZG9jdW1lbnQtPmZyYW1lKCktPmlzTWFpbkZyYW1lKCkgOiAwKTsKKwogICAgIG1faXNU
aHJvdHRsZWQgPSBpc1Rocm90dGxlZDsKICAgICBpZiAobV9hbmltYXRpb25UaW1lci5pc0FjdGl2
ZSgpKSB7CiAgICAgICAgIG1fYW5pbWF0aW9uVGltZXIuc3RvcCgpOwpAQCAtOTQsNiArOTgsMTUg
QEAgdm9pZCBTY3JpcHRlZEFuaW1hdGlvbkNvbnRyb2xsZXI6OnNldFRocm90dGxlZChib29sIGlz
VGhyb3R0bGVkKQogI2VuZGlmCiB9CiAKK2Jvb2wgU2NyaXB0ZWRBbmltYXRpb25Db250cm9sbGVy
Ojppc1Rocm90dGxlZCgpIGNvbnN0Cit7CisjaWYgVVNFKFJFUVVFU1RfQU5JTUFUSU9OX0ZSQU1F
X1RJTUVSKSAmJiBVU0UoUkVRVUVTVF9BTklNQVRJT05fRlJBTUVfRElTUExBWV9NT05JVE9SKQor
ICAgIHJldHVybiBtX2lzVGhyb3R0bGVkOworI2Vsc2UKKyAgICByZXR1cm4gZmFsc2U7CisjZW5k
aWYKK30KKwogU2NyaXB0ZWRBbmltYXRpb25Db250cm9sbGVyOjpDYWxsYmFja0lkIFNjcmlwdGVk
QW5pbWF0aW9uQ29udHJvbGxlcjo6cmVnaXN0ZXJDYWxsYmFjayhQYXNzUmVmUHRyPFJlcXVlc3RB
bmltYXRpb25GcmFtZUNhbGxiYWNrPiBjYWxsYmFjaykKIHsKICAgICBTY3JpcHRlZEFuaW1hdGlv
bkNvbnRyb2xsZXI6OkNhbGxiYWNrSWQgaWQgPSArK21fbmV4dENhbGxiYWNrSWQ7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0ZWRBbmltYXRpb25Db250cm9sbGVyLmggYi9T
b3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0ZWRBbmltYXRpb25Db250cm9sbGVyLmgKaW5kZXggN2Iy
OGU3OWVjODViNGJhMWYxNmUwZTljMTdkMDUzNTdlMmIxZDRkYi4uODlhYjAxOTFiNGM4MmE4NWJi
NDVlMzJmMDkyNDliMzg5MDI0ZTU0MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1Nj
cmlwdGVkQW5pbWF0aW9uQ29udHJvbGxlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3Jp
cHRlZEFuaW1hdGlvbkNvbnRyb2xsZXIuaApAQCAtNjgsNiArNjgsNyBAQCBwdWJsaWM6CiAgICAg
dm9pZCBzdXNwZW5kKCk7CiAgICAgdm9pZCByZXN1bWUoKTsKICAgICB2b2lkIHNldFRocm90dGxl
ZChib29sKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBib29sIGlzVGhyb3R0bGVkKCkgY29uc3Q7CiAK
ICAgICB2b2lkIHdpbmRvd1NjcmVlbkRpZENoYW5nZShQbGF0Zm9ybURpc3BsYXlJRCk7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvRnJhbWVWaWV3LmNwcAppbmRleCBhNzIyYTE5MjA4ZmI2ZmViODdhYTM0ZmQ2NWFm
MDMwMzVkYmUxZjMxLi44OTU1YzE5ZGI0NDk4YmZiNzllZjI4ZjkxMmNiNWRmNTM4MjUwZmQxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwCkBAIC04MCw2ICs4MCw3IEBACiAjaW5jbHVkZSAi
UmVuZGVyV2lkZ2V0LmgiCiAjaW5jbHVkZSAiU1ZHRG9jdW1lbnQuaCIKICNpbmNsdWRlICJTVkdT
VkdFbGVtZW50LmgiCisjaW5jbHVkZSAiU2NyaXB0ZWRBbmltYXRpb25Db250cm9sbGVyLmgiCiAj
aW5jbHVkZSAiU2Nyb2xsQW5pbWF0b3IuaCIKICNpbmNsdWRlICJTY3JvbGxpbmdDb29yZGluYXRv
ci5oIgogI2luY2x1ZGUgIlNldHRpbmdzLmgiCkBAIC0xNzU1LDEwICsxNzU2LDE4IEBAIHZvaWQg
RnJhbWVWaWV3OjpkZWxheWVkU2Nyb2xsRXZlbnRUaW1lckZpcmVkKCkKIAogdm9pZCBGcmFtZVZp
ZXc6OnZpZXdwb3J0Q29udGVudHNDaGFuZ2VkKCkKIHsKKyAgICBpZiAoIWZyYW1lKCkudmlldygp
KSB7CisgICAgICAgIC8vIFRoZSBmcmFtZSBpcyBiZWluZyBkZXN0cm95ZWQuCisgICAgICAgIHJl
dHVybjsKKyAgICB9CisKICAgICAvLyBXaGVuIHRoZSB2aWV3cG9ydCBjb250ZW50cyBjaGFuZ2Vz
IChzY3JvbGwsIHJlc2l6ZSwgc3R5bGUgcmVjYWxjLCBsYXlvdXQsIC4uLiksCiAgICAgLy8gY2hl
Y2sgaWYgd2Ugc2hvdWxkIHJlc3VtZSBhbmltYXRlZCBpbWFnZXMgb3IgdW50aHJvdHRsZSBET00g
dGltZXJzLgotICAgIHJlc3VtZVZpc2libGVJbWFnZUFuaW1hdGlvbnNJbmNsdWRpbmdTdWJmcmFt
ZXMoKTsKLSAgICB1cGRhdGVUaHJvdHRsZWRET01UaW1lcnNTdGF0ZSgpOworICAgIGFwcGx5UmVj
dXJzaXZlbHlXaXRoVmlzaWJsZVJlY3QoW10gKEZyYW1lVmlldyYgZnJhbWVWaWV3LCBjb25zdCBJ
bnRSZWN0JiB2aXNpYmxlUmVjdCkgeworICAgICAgICBmcmFtZVZpZXcucmVzdW1lVmlzaWJsZUlt
YWdlQW5pbWF0aW9ucyh2aXNpYmxlUmVjdCk7CisgICAgICAgIGZyYW1lVmlldy51cGRhdGVUaHJv
dHRsZWRET01UaW1lcnNTdGF0ZSh2aXNpYmxlUmVjdCk7CisgICAgICAgIGZyYW1lVmlldy51cGRh
dGVTY3JpcHRlZEFuaW1hdGlvbnNUaHJvdHRsaW5nU3RhdGUodmlzaWJsZVJlY3QpOworICAgIH0p
OwogfQogCiBib29sIEZyYW1lVmlldzo6Zml4ZWRFbGVtZW50c0xheW91dFJlbGF0aXZlVG9GcmFt
ZSgpIGNvbnN0CkBAIC0yMDk1LDI4ICsyMTA0LDYwIEBAIHZvaWQgRnJhbWVWaWV3OjpzY3JvbGxQ
b3NpdGlvbkNoYW5nZWQoY29uc3QgSW50UG9pbnQmIG9sZFBvc2l0aW9uLCBjb25zdCBJbnRQb2lu
CiAgICAgdmlld3BvcnRDb250ZW50c0NoYW5nZWQoKTsKIH0KIAotdm9pZCBGcmFtZVZpZXc6OnJl
c3VtZVZpc2libGVJbWFnZUFuaW1hdGlvbnNJbmNsdWRpbmdTdWJmcmFtZXMoKQordm9pZCBGcmFt
ZVZpZXc6OmFwcGx5UmVjdXJzaXZlbHlXaXRoVmlzaWJsZVJlY3QoY29uc3Qgc3RkOjpmdW5jdGlv
bjx2b2lkIChGcmFtZVZpZXcmIGZyYW1lVmlldywgY29uc3QgSW50UmVjdCYgdmlzaWJsZVJlY3Qp
PiYgYXBwbHkpCiB7Ci0gICAgYXV0byogcmVuZGVyVmlldyA9IGZyYW1lKCkuY29udGVudFJlbmRl
cmVyKCk7Ci0gICAgaWYgKCFyZW5kZXJWaWV3KQotICAgICAgICByZXR1cm47Ci0KICAgICBJbnRS
ZWN0IHdpbmRvd0NsaXBSZWN0ID0gdGhpcy0+d2luZG93Q2xpcFJlY3QoKTsKICAgICBhdXRvIHZp
c2libGVSZWN0ID0gd2luZG93VG9Db250ZW50cyh3aW5kb3dDbGlwUmVjdCk7Ci0gICAgaWYgKHZp
c2libGVSZWN0LmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgLy8gUmVzdW1lIHBh
dXNlZCBpbWFnZSBhbmltYXRpb25zIGluIHRoaXMgZnJhbWUuCi0gICAgcmVuZGVyVmlldy0+cmVz
dW1lUGF1c2VkSW1hZ2VBbmltYXRpb25zSWZOZWVkZWQodmlzaWJsZVJlY3QpOworICAgIGFwcGx5
KCp0aGlzLCB2aXNpYmxlUmVjdCk7CiAKICAgICAvLyBSZWN1cnNpdmUgY2FsbCBmb3Igc3ViZnJh
bWVzLiBXZSBjYWNoZSB0aGUgY3VycmVudCBGcmFtZVZpZXcncyB3aW5kb3dDbGlwUmVjdCB0byBh
dm9pZCByZWNvbXB1dGluZyBpdCBmb3IgZXZlcnkgc3ViZnJhbWUuCiAgICAgVGVtcG9yYXJ5Q2hh
bmdlPEludFJlY3QqPiB3aW5kb3dDbGlwUmVjdENhY2hlKG1fY2FjaGVkV2luZG93Q2xpcFJlY3Qs
ICZ3aW5kb3dDbGlwUmVjdCk7CiAgICAgZm9yIChGcmFtZSogY2hpbGRGcmFtZSA9IGZyYW1lKCku
dHJlZSgpLmZpcnN0Q2hpbGQoKTsgY2hpbGRGcmFtZTsgY2hpbGRGcmFtZSA9IGNoaWxkRnJhbWUt
PnRyZWUoKS5uZXh0U2libGluZygpKSB7CiAgICAgICAgIGlmIChhdXRvKiBjaGlsZFZpZXcgPSBj
aGlsZEZyYW1lLT52aWV3KCkpCi0gICAgICAgICAgICBjaGlsZFZpZXctPnJlc3VtZVZpc2libGVJ
bWFnZUFuaW1hdGlvbnNJbmNsdWRpbmdTdWJmcmFtZXMoKTsKKyAgICAgICAgICAgIGNoaWxkVmll
dy0+YXBwbHlSZWN1cnNpdmVseVdpdGhWaXNpYmxlUmVjdChhcHBseSk7CiAgICAgfQogfQogCit2
b2lkIEZyYW1lVmlldzo6cmVzdW1lVmlzaWJsZUltYWdlQW5pbWF0aW9ucyhjb25zdCBJbnRSZWN0
JiB2aXNpYmxlUmVjdCkKK3sKKyAgICBpZiAodmlzaWJsZVJlY3QuaXNFbXB0eSgpKQorICAgICAg
ICByZXR1cm47CisKKyAgICBpZiAoYXV0byogcmVuZGVyVmlldyA9IGZyYW1lKCkuY29udGVudFJl
bmRlcmVyKCkpCisgICAgICAgIHJlbmRlclZpZXctPnJlc3VtZVBhdXNlZEltYWdlQW5pbWF0aW9u
c0lmTmVlZGVkKHZpc2libGVSZWN0KTsKK30KKwordm9pZCBGcmFtZVZpZXc6OnVwZGF0ZVNjcmlw
dGVkQW5pbWF0aW9uc1Rocm90dGxpbmdTdGF0ZShjb25zdCBJbnRSZWN0JiB2aXNpYmxlUmVjdCkK
K3sKKyNpZiBFTkFCTEUoUkVRVUVTVF9BTklNQVRJT05fRlJBTUUpCisgICAgaWYgKGZyYW1lKCku
aXNNYWluRnJhbWUoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgYXV0byogZG9jdW1lbnQgPSBm
cmFtZSgpLmRvY3VtZW50KCk7CisgICAgaWYgKCFkb2N1bWVudCkKKyAgICAgICAgcmV0dXJuOwor
CisgICAgYXV0byogc2NyaXB0ZWRBbmltYXRpb25Db250cm9sbGVyID0gZG9jdW1lbnQtPnNjcmlw
dGVkQW5pbWF0aW9uQ29udHJvbGxlcigpOworICAgIGlmICghc2NyaXB0ZWRBbmltYXRpb25Db250
cm9sbGVyKQorICAgICAgICByZXR1cm47CisKKyAgICAvLyBGSVhNRTogVGhpcyBkb2Vzbid0IHdv
cmsgZm9yIHN1YmZyYW1lcyBvZiBhICJkaXNwbGF5OiBub25lIiBmcmFtZSBiZWNhdXNlCisgICAg
Ly8gdGhleSBoYXZlIGEgbm9uLW51bGwgb3duZXJSZW5kZXJlci4KKyAgICBib29sIHNob3VsZFRo
cm90dGxlID0gIWZyYW1lKCkub3duZXJSZW5kZXJlcigpIHx8IHZpc2libGVSZWN0LmlzRW1wdHko
KTsKKyAgICBzY3JpcHRlZEFuaW1hdGlvbkNvbnRyb2xsZXItPnNldFRocm90dGxlZChzaG91bGRU
aHJvdHRsZSk7CisjZWxzZQorICAgIFVOVVNFRF9QQVJBTSh2aXNpYmxlUmVjdCk7CisjZW5kaWYK
K30KKworCit2b2lkIEZyYW1lVmlldzo6cmVzdW1lVmlzaWJsZUltYWdlQW5pbWF0aW9uc0luY2x1
ZGluZ1N1YmZyYW1lcygpCit7CisgICAgYXBwbHlSZWN1cnNpdmVseVdpdGhWaXNpYmxlUmVjdChb
XSAoRnJhbWVWaWV3JiBmcmFtZVZpZXcsIGNvbnN0IEludFJlY3QmIHZpc2libGVSZWN0KSB7Cisg
ICAgICAgIGZyYW1lVmlldy5yZXN1bWVWaXNpYmxlSW1hZ2VBbmltYXRpb25zKHZpc2libGVSZWN0
KTsKKyAgICB9KTsKK30KKwogdm9pZCBGcmFtZVZpZXc6OnVwZGF0ZUxheWVyUG9zaXRpb25zQWZ0
ZXJTY3JvbGxpbmcoKQogewogICAgIC8vIElmIHdlJ3JlIHNjcm9sbGluZyBhcyBhIHJlc3VsdCBv
ZiB1cGRhdGluZyB0aGUgdmlldyBzaXplIGFmdGVyIGxheW91dCwgd2UnbGwgdXBkYXRlIHdpZGdl
dHMgYW5kIGxheWVyIHBvc2l0aW9ucyBzb29uIGFueXdheS4KQEAgLTMwNTksMTMgKzMxMDAsMTEg
QEAgdm9pZCBGcmFtZVZpZXc6OnVucmVnaXN0ZXJUaHJvdHRsZWRET01UaW1lcihET01UaW1lciog
dGltZXIpCiAgICAgbV90aHJvdHRsZWRUaW1lcnMucmVtb3ZlKHRpbWVyKTsKIH0KIAotdm9pZCBG
cmFtZVZpZXc6OnVwZGF0ZVRocm90dGxlZERPTVRpbWVyc1N0YXRlKCkKK3ZvaWQgRnJhbWVWaWV3
Ojp1cGRhdGVUaHJvdHRsZWRET01UaW1lcnNTdGF0ZShjb25zdCBJbnRSZWN0JiB2aXNpYmxlUmVj
dCkKIHsKICAgICBpZiAobV90aHJvdHRsZWRUaW1lcnMuaXNFbXB0eSgpKQogICAgICAgICByZXR1
cm47CiAKLSAgICBJbnRSZWN0IHZpc2libGVSZWN0ID0gd2luZG93VG9Db250ZW50cyh3aW5kb3dD
bGlwUmVjdCgpKTsKLQogICAgIC8vIERvIG5vdCBpdGVyYXRlIG92ZXIgdGhlIEhhc2hTZXQgYmVj
YXVzZSBjYWxsaW5nIERPTVRpbWVyOjp1cGRhdGVUaHJvdHRsaW5nU3RhdGVBZnRlclZpZXdwb3J0
Q2hhbmdlKCkKICAgICAvLyBtYXkgY2F1c2UgdGltZXJzIHRvIHJlbW92ZSB0aGVtc2VsdmVzIGZy
b20gaXQgd2hpbGUgd2UgYXJlIGl0ZXJhdGluZy4KICAgICBWZWN0b3I8RE9NVGltZXIqPiB0aW1l
cnM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5oIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuaAppbmRleCBiMmQ3Y2VmMWNjNDgyMTE1NDRjY2Y3ZTNl
ZjAyOTEwMTgzZjNhODA1Li41MmY0ZTZiNDQ5ZjhiOTNjNjg4MjY0MjJhY2RmMGFiZjE2ZmNhZjVm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmgKQEAgLTU5Niw3ICs1OTYsMTEgQEAgcHJpdmF0ZToK
ICAgICB2b2lkIGZvcmNlTGF5b3V0UGFyZW50Vmlld0lmTmVlZGVkKCk7CiAgICAgdm9pZCBwZXJm
b3JtUG9zdExheW91dFRhc2tzKCk7CiAgICAgdm9pZCBhdXRvU2l6ZUlmRW5hYmxlZCgpOwotICAg
IHZvaWQgdXBkYXRlVGhyb3R0bGVkRE9NVGltZXJzU3RhdGUoKTsKKworICAgIHZvaWQgYXBwbHlS
ZWN1cnNpdmVseVdpdGhWaXNpYmxlUmVjdChjb25zdCBzdGQ6OmZ1bmN0aW9uPHZvaWQgKEZyYW1l
VmlldyYgZnJhbWVWaWV3LCBjb25zdCBJbnRSZWN0JiB2aXNpYmxlUmVjdCk+Jik7CisgICAgdm9p
ZCB1cGRhdGVUaHJvdHRsZWRET01UaW1lcnNTdGF0ZShjb25zdCBJbnRSZWN0JiB2aXNpYmxlUmVj
dCk7CisgICAgdm9pZCByZXN1bWVWaXNpYmxlSW1hZ2VBbmltYXRpb25zKGNvbnN0IEludFJlY3Qm
IHZpc2libGVSZWN0KTsKKyAgICB2b2lkIHVwZGF0ZVNjcmlwdGVkQW5pbWF0aW9uc1Rocm90dGxp
bmdTdGF0ZShjb25zdCBJbnRSZWN0JiB2aXNpYmxlUmVjdCk7CiAKICAgICB2b2lkIHVwZGF0ZUxh
eWVyRmx1c2hUaHJvdHRsaW5nKCk7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBhZGp1c3RUaWxl
ZEJhY2tpbmdDb3ZlcmFnZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9J
bnRlcm5hbHMuY3BwIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCmluZGV4
IDg4MjllZTAwNzg3NjlmYTdhNmU2YWVmMTg0MWFlNjIyNDI1OGQ0NzMuLjA1YWUyMWQ3OTg5MTlh
MTk3NmU1YzQ0OTQ2ZGY4YjIwYmRiZTUwYjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rl
c3RpbmcvSW50ZXJuYWxzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFs
cy5jcHAKQEAgLTk4LDYgKzk4LDcgQEAKICNpbmNsdWRlICJSZW5kZXJlZERvY3VtZW50TWFya2Vy
LmgiCiAjaW5jbHVkZSAiUnVudGltZUVuYWJsZWRGZWF0dXJlcy5oIgogI2luY2x1ZGUgIlNjaGVt
ZVJlZ2lzdHJ5LmgiCisjaW5jbHVkZSAiU2NyaXB0ZWRBbmltYXRpb25Db250cm9sbGVyLmgiCiAj
aW5jbHVkZSAiU2Nyb2xsaW5nQ29vcmRpbmF0b3IuaCIKICNpbmNsdWRlICJTZXJpYWxpemVkU2Ny
aXB0VmFsdWUuaCIKICNpbmNsdWRlICJTZXR0aW5ncy5oIgpAQCAtNzY2LDYgKzc2NywxOCBAQCBi
b29sIEludGVybmFsczo6aXNUaW1lclRocm90dGxlZChpbnQgdGltZW91dElkLCBFeGNlcHRpb25D
b2RlJiBlYykKICAgICByZXR1cm4gdGltZXItPm1fdGhyb3R0bGVTdGF0ZSA9PSBET01UaW1lcjo6
U2hvdWxkVGhyb3R0bGU7CiB9CiAKK2Jvb2wgSW50ZXJuYWxzOjppc1JlcXVlc3RBbmltYXRpb25G
cmFtZVRocm90dGxlZCgpIGNvbnN0Cit7CisjaWYgRU5BQkxFKFJFUVVFU1RfQU5JTUFUSU9OX0ZS
QU1FKQorICAgIGF1dG8qIHNjcmlwdGVkQW5pbWF0aW9uQ29udHJvbGxlciA9IGNvbnRleHREb2N1
bWVudCgpLT5zY3JpcHRlZEFuaW1hdGlvbkNvbnRyb2xsZXIoKTsKKyAgICBpZiAoIXNjcmlwdGVk
QW5pbWF0aW9uQ29udHJvbGxlcikKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIHJldHVybiBz
Y3JpcHRlZEFuaW1hdGlvbkNvbnRyb2xsZXItPmlzVGhyb3R0bGVkKCk7CisjZWxzZQorICAgIHJl
dHVybiBmYWxzZTsKKyNlbmRpZgorfQorCiBTdHJpbmcgSW50ZXJuYWxzOjp2aXNpYmxlUGxhY2Vo
b2xkZXIoRWxlbWVudCogZWxlbWVudCkKIHsKICAgICBpZiAoaXM8SFRNTFRleHRGb3JtQ29udHJv
bEVsZW1lbnQ+KGVsZW1lbnQpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5n
L0ludGVybmFscy5oIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaAppbmRleCAw
OTQxMjI5NjE5MjIxNzJmN2RiNzE3NWJkZjg5OGE2NzhjYWJkYTIzLi4xMmQ2Zjg3NDMyZWFmNWYx
MDIyMmY3YjNjY2I1MDNhZWViYzZhMWQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0
aW5nL0ludGVybmFscy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmgK
QEAgLTExMyw2ICsxMTMsNyBAQCBwdWJsaWM6CiAKICAgICAvLyBET01UaW1lcnMgdGhyb3R0bGlu
ZyB0ZXN0aW5nLgogICAgIGJvb2wgaXNUaW1lclRocm90dGxlZChpbnQgdGltZW91dElkLCBFeGNl
cHRpb25Db2RlJik7CisgICAgYm9vbCBpc1JlcXVlc3RBbmltYXRpb25GcmFtZVRocm90dGxlZCgp
IGNvbnN0OwogCiAgICAgLy8gU3BhdGlhbCBOYXZpZ2F0aW9uIHRlc3RpbmcuCiAgICAgdW5zaWdu
ZWQgbGFzdFNwYXRpYWxOYXZpZ2F0aW9uQ2FuZGlkYXRlQ291bnQoRXhjZXB0aW9uQ29kZSYpIGNv
bnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaWRsIGIv
U291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaWRsCmluZGV4IDFiMDA5ODA0NGYzMTM2
MjdlYzNhZTNhZmJkY2QyYjc0ZTIwYWNiMjcuLjZkMjMyOTllMjY0ZGY0NTIxZTkwNWM1NGY4MGRi
YTkyN2QxZmJmYzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxz
LmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5pZGwKQEAgLTI3OSw2
ICsyNzksOCBAQCBlbnVtIFJlc291cmNlTG9hZFByaW9yaXR5IHsKICAgICAvLyBRdWVyeSBpZiBh
IHRpbWVyIGlzIGN1cnJlbnRseSB0aHJvdHRsZWQsIHRvIGRlYnVnIHRpbWVyIHRocm90dGxpbmcu
CiAgICAgW1JhaXNlc0V4Y2VwdGlvbl0gYm9vbGVhbiBpc1RpbWVyVGhyb3R0bGVkKGxvbmcgdGlt
ZXJIYW5kbGUpOwogCisgICAgYm9vbGVhbiBpc1JlcXVlc3RBbmltYXRpb25GcmFtZVRocm90dGxl
ZCgpOworCiAgICAgW1JhaXNlc0V4Y2VwdGlvbl0gdm9pZCBzdGFydFRyYWNraW5nU3R5bGVSZWNh
bGNzKCk7CiAgICAgW1JhaXNlc0V4Y2VwdGlvbl0gdW5zaWduZWQgbG9uZyBzdHlsZVJlY2FsY0Nv
dW50KCk7CiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3Rz
L0NoYW5nZUxvZwppbmRleCA3NGIxNjYxNjY2NDY4OTA0YjQ4OGQ4OWU3NWNhZWFhMmVlZGE0Yjc2
Li42YTBiYjA3NDkwOWY4YWMyMTAyN2RkZDY0ZmM3ZDk4OGFhNDYxNWFhIDEwMDY0NAotLS0gYS9M
YXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMjQgQEAKKzIwMTUtMDUtMDcgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKwor
ICAgICAgICBUaHJvdHRsZSBSZXF1ZXN0QW5pbWF0aW9uRnJhbWUgaW4gc3ViZnJhbWVzIHRoYXQg
YXJlIG91dHNpZGUgdGhlIHZpZXdwb3J0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xNDQ3MTgKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzIwNjg4Nzgy
PgorCisgICAgICAgIFJldmlld2VkIGJ5IFNpbW9uIEZyYXNlci4KKworICAgICAgICAqIGZhc3Qv
YW5pbWF0aW9uL3JlcXVlc3QtYW5pbWF0aW9uLWZyYW1lLXRocm90dGxlLXN1YmZyYW1lLWRpc3Bs
YXktbm9uZS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvYW5pbWF0aW9uL3Jl
cXVlc3QtYW5pbWF0aW9uLWZyYW1lLXRocm90dGxlLXN1YmZyYW1lLWRpc3BsYXktbm9uZS5odG1s
OiBBZGRlZC4KKyAgICAgICAgQWRkIGxheW91dCB0ZXN0IHRvIHRlc3QgdGhhdCBSZXF1ZXN0QW5p
bWF0aW9uRnJhbWUgaXMgcHJvcGVybHkgdGhyb3R0bGVkCisgICAgICAgIGluICJkaXNwbGF5OiBu
b25lIiBzdWJmcmFtZXMuCisKKyAgICAgICAgKiBmYXN0L2FuaW1hdGlvbi9yZXF1ZXN0LWFuaW1h
dGlvbi1mcmFtZS10aHJvdHRsZS1zdWJmcmFtZS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAg
ICAqIGZhc3QvYW5pbWF0aW9uL3JlcXVlc3QtYW5pbWF0aW9uLWZyYW1lLXRocm90dGxlLXN1YmZy
YW1lLmh0bWw6IEFkZGVkLgorICAgICAgICBBZGQgbGF5b3V0IHRlc3QgdG8gdGVzdCB0aGF0IFJl
cXVlc3RBbmltYXRpb25GcmFtZSBpcyBwcm9wZXJseSB0aHJvdHRsZWQKKyAgICAgICAgaW4gZnJh
bWVzIHRoYXQgYXJlIG91dHNpZGUgdGhlIHZpZXdwb3J0LgorCisgICAgICAgICogZmFzdC9hbmlt
YXRpb24vcmVzb3VyY2VzL3JlcXVlc3RBbmltYXRpb25GcmFtZS1mcmFtZS0yLmh0bWw6IEFkZGVk
LgorICAgICAgICAqIGZhc3QvYW5pbWF0aW9uL3Jlc291cmNlcy9yZXF1ZXN0QW5pbWF0aW9uRnJh
bWUtZnJhbWUuaHRtbDogQWRkZWQuCisKIDIwMTUtMDUtMDcgIFNhbSBXZWluaWcgIDxzYW1Ad2Vi
a2l0Lm9yZz4KIAogICAgICAgICBDb25zaWRlciBpbXBsZW1lbnRpbmcgRG9jdW1lbnQuc2Nyb2xs
aW5nRWxlbWVudApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9hbmltYXRpb24vcmVxdWVz
dC1hbmltYXRpb24tZnJhbWUtdGhyb3R0bGUtc3ViZnJhbWUtZGlzcGxheS1ub25lLWV4cGVjdGVk
LnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvYW5pbWF0aW9uL3JlcXVlc3QtYW5pbWF0aW9uLWZyYW1l
LXRocm90dGxlLXN1YmZyYW1lLWRpc3BsYXktbm9uZS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
MDJkMGY1MDlhMzZmMDM1ZjkzYmI2MWYyM2I0MDAyNDc5YjA5MmI0MQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2Zhc3QvYW5pbWF0aW9uL3JlcXVlc3QtYW5pbWF0aW9uLWZyYW1lLXRo
cm90dGxlLXN1YmZyYW1lLWRpc3BsYXktbm9uZS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxOSBA
QAorVGVzdHMgdGhhdCByZXF1ZXN0QW5pbWF0aW9uRnJhbWUgaXMgdGhyb3R0bGVkIGluIHN1YmZy
YW1lcyB0aGF0IGFyZSBkaXNwbGF5Om5vbmUKKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEg
c2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgor
CisKK0ZyYW1lIGlzIGluaXRpYWxseSB2aXNpYmlsZSBzbyByZXF1ZXN0QW5pbWF0aW9uRnJhbWUg
c2hvdWxkIG5vdCBiZSB0aHJvdHRsZWQKK1BBU1MgdGVzdEZyYW1lLmNvbnRlbnRXaW5kb3cuaW50
ZXJuYWxzLmlzUmVxdWVzdEFuaW1hdGlvbkZyYW1lVGhyb3R0bGVkKCkgYmVjYW1lIGZhbHNlCitQ
QVNTIHRlc3RGcmFtZS5jb250ZW50V2luZG93LmludGVybmFscy5pc1JlcXVlc3RBbmltYXRpb25G
cmFtZVRocm90dGxlZCgpIGlzIGZhbHNlCitIaWRpbmcgc3ViZnJhbWUuCit0ZXN0RnJhbWUuc3R5
bGUuZGlzcGxheSA9ICdub25lJzsKK1BBU1MgdGVzdEZyYW1lLmNvbnRlbnRXaW5kb3cuaW50ZXJu
YWxzLmlzUmVxdWVzdEFuaW1hdGlvbkZyYW1lVGhyb3R0bGVkKCkgYmVjYW1lIHRydWUKK1BBU1Mg
dGVzdEZyYW1lLmNvbnRlbnRXaW5kb3cuaW50ZXJuYWxzLmlzUmVxdWVzdEFuaW1hdGlvbkZyYW1l
VGhyb3R0bGVkKCkgaXMgdHJ1ZQorU2hvdyBzdWJmcmFtZSBhZ2FpbgordGVzdEZyYW1lLnN0eWxl
LmRpc3BsYXkgPSAnYmxvY2snOworUEFTUyB0ZXN0RnJhbWUuY29udGVudFdpbmRvdy5pbnRlcm5h
bHMuaXNSZXF1ZXN0QW5pbWF0aW9uRnJhbWVUaHJvdHRsZWQoKSBiZWNhbWUgZmFsc2UKK1BBU1Mg
c3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9mYXN0L2FuaW1hdGlvbi9yZXF1ZXN0LWFuaW1hdGlvbi1mcmFtZS10aHJv
dHRsZS1zdWJmcmFtZS1kaXNwbGF5LW5vbmUuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvYW5pbWF0
aW9uL3JlcXVlc3QtYW5pbWF0aW9uLWZyYW1lLXRocm90dGxlLXN1YmZyYW1lLWRpc3BsYXktbm9u
ZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLmU4ZDExY2Y5MmJmNzcxOTQ0NjgyMjUwMmMzZmJjMGMxMWZmYTE4
ZGEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2FuaW1hdGlvbi9yZXF1ZXN0
LWFuaW1hdGlvbi1mcmFtZS10aHJvdHRsZS1zdWJmcmFtZS1kaXNwbGF5LW5vbmUuaHRtbApAQCAt
MCwwICsxLDQ0IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGJvZHk+Cis8c2NyaXB0IHNy
Yz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+Citk
ZXNjcmlwdGlvbigiVGVzdHMgdGhhdCByZXF1ZXN0QW5pbWF0aW9uRnJhbWUgaXMgdGhyb3R0bGVk
IGluIHN1YmZyYW1lcyB0aGF0IGFyZSBkaXNwbGF5Om5vbmUiKTsKK3dpbmRvdy5qc1Rlc3RJc0Fz
eW5jID0gdHJ1ZTsKKworZnVuY3Rpb24gY2hlY2tTdWJmcmFtZVRocm90dGxlZCgpCit7CisgICAg
c2hvdWxkQmVUcnVlKCJ0ZXN0RnJhbWUuY29udGVudFdpbmRvdy5pbnRlcm5hbHMuaXNSZXF1ZXN0
QW5pbWF0aW9uRnJhbWVUaHJvdHRsZWQoKSIpOworCisgICAgZGVidWcoIlNob3cgc3ViZnJhbWUg
YWdhaW4iKTsKKyAgICBldmFsQW5kTG9nKCJ0ZXN0RnJhbWUuc3R5bGUuZGlzcGxheSA9ICdibG9j
ayc7Iik7CisKKyAgICBzaG91bGRCZWNvbWVFcXVhbCgidGVzdEZyYW1lLmNvbnRlbnRXaW5kb3cu
aW50ZXJuYWxzLmlzUmVxdWVzdEFuaW1hdGlvbkZyYW1lVGhyb3R0bGVkKCkiLCAiZmFsc2UiLCBm
aW5pc2hKU1Rlc3QpOworfQorCitmdW5jdGlvbiBoaWRlRnJhbWUoKQoreworICAgIHNob3VsZEJl
RmFsc2UoInRlc3RGcmFtZS5jb250ZW50V2luZG93LmludGVybmFscy5pc1JlcXVlc3RBbmltYXRp
b25GcmFtZVRocm90dGxlZCgpIik7CisKKyAgICBkZWJ1ZygiSGlkaW5nIHN1YmZyYW1lLiIpOwor
ICAgIGV2YWxBbmRMb2coInRlc3RGcmFtZS5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnOyIpOworCisg
ICAgc2hvdWxkQmVjb21lRXF1YWwoInRlc3RGcmFtZS5jb250ZW50V2luZG93LmludGVybmFscy5p
c1JlcXVlc3RBbmltYXRpb25GcmFtZVRocm90dGxlZCgpIiwgInRydWUiLCBjaGVja1N1YmZyYW1l
VGhyb3R0bGVkKTsKK30KKworZnVuY3Rpb24gcnVuVGVzdCgpCit7CisgICAgdGVzdEZyYW1lID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInRlc3RGcmFtZSIpOworICAgIGRlYnVnKCJGcmFtZSBp
cyBpbml0aWFsbHkgdmlzaWJpbGUgc28gcmVxdWVzdEFuaW1hdGlvbkZyYW1lIHNob3VsZCBub3Qg
YmUgdGhyb3R0bGVkIik7CisgICAgc2hvdWxkQmVjb21lRXF1YWwoInRlc3RGcmFtZS5jb250ZW50
V2luZG93LmludGVybmFscy5pc1JlcXVlc3RBbmltYXRpb25GcmFtZVRocm90dGxlZCgpIiwgImZh
bHNlIiwgaGlkZUZyYW1lKTsKK30KKwordmFyIGkgPSAwOworcmVxdWVzdEFuaW1hdGlvbkZyYW1l
KGZ1bmN0aW9uKCkgeworICAgIGkrKzsKK30pOworPC9zY3JpcHQ+Cis8aWZyYW1lIGlkPSJ0ZXN0
RnJhbWUiIHNyYz0icmVzb3VyY2VzL3JlcXVlc3RBbmltYXRpb25GcmFtZS1mcmFtZS5odG1sIiBv
bmxvYWQ9InJ1blRlc3QoKSI+PC9pZnJhbWU+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2Vz
L2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9mYXN0L2FuaW1hdGlvbi9yZXF1ZXN0LWFuaW1hdGlvbi1mcmFtZS10aHJv
dHRsZS1zdWJmcmFtZS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2FuaW1hdGlvbi9y
ZXF1ZXN0LWFuaW1hdGlvbi1mcmFtZS10aHJvdHRsZS1zdWJmcmFtZS1leHBlY3RlZC50eHQKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uMDU5ODNiMzMxMzI4MzM0MjI1YmM4ODVkOGU0ZThiYzIyYjQ2Y2E4YwotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvYW5pbWF0aW9uL3JlcXVlc3QtYW5pbWF0aW9u
LWZyYW1lLXRocm90dGxlLXN1YmZyYW1lLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDI0IEBACitU
ZXN0cyB0aGF0IHJlcXVlc3RBbmltYXRpb25GcmFtZSBpcyB0aHJvdHRsZWQgaW4gc3ViZnJhbWVz
IHRoYXQgYXJlIG91dHNpZGUgdGhlIHZpZXdwb3J0CisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNl
ZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRF
Ii4KKworCitGcmFtZSBpcyBpbml0aWFsbHkgb3V0c2lkZSB0aGUgdmlld3BvcnQgc28gcmVxdWVz
dEFuaW1hdGlvbkZyYW1lIHNob3VsZCBiZSB0aHJvdHRsZWQKK1BBU1MgdGVzdEZyYW1lLmNvbnRl
bnRXaW5kb3cuaW50ZXJuYWxzLmlzUmVxdWVzdEFuaW1hdGlvbkZyYW1lVGhyb3R0bGVkKCkgYmVj
YW1lIHRydWUKK1BBU1MgaW50ZXJuYWxzLmlzUmVxdWVzdEFuaW1hdGlvbkZyYW1lVGhyb3R0bGVk
KCkgaXMgZmFsc2UKK1BBU1MgdGVzdEZyYW1lLmNvbnRlbnRXaW5kb3cuaW50ZXJuYWxzLmlzUmVx
dWVzdEFuaW1hdGlvbkZyYW1lVGhyb3R0bGVkKCkgaXMgdHJ1ZQorUEFTUyBncmFuZENoaWxkRnJh
bWUuY29udGVudFdpbmRvdy5pbnRlcm5hbHMuaXNSZXF1ZXN0QW5pbWF0aW9uRnJhbWVUaHJvdHRs
ZWQoKSBpcyB0cnVlCitTY3JvbGxpbmcgZnJhbWUgaW50byB2aWV3LgorUmVxdWVzdEFuaW1hdGlv
bkZyYW1lIHNob3VsZCBubyBsb25nZXIgYmUgdGhyb3R0bGVkCitQQVNTIGludGVybmFscy5pc1Jl
cXVlc3RBbmltYXRpb25GcmFtZVRocm90dGxlZCgpIGlzIGZhbHNlCitQQVNTIGdyYW5kQ2hpbGRG
cmFtZS5jb250ZW50V2luZG93LmludGVybmFscy5pc1JlcXVlc3RBbmltYXRpb25GcmFtZVRocm90
dGxlZCgpIGlzIGZhbHNlCitQQVNTIHRlc3RGcmFtZS5jb250ZW50V2luZG93LmludGVybmFscy5p
c1JlcXVlc3RBbmltYXRpb25GcmFtZVRocm90dGxlZCgpIGlzIGZhbHNlCitTY3JvbGxpbmcgZnJh
bWUgb3V0IG9mIHZpZXcgYWdhaW4uCitQQVNTIGludGVybmFscy5pc1JlcXVlc3RBbmltYXRpb25G
cmFtZVRocm90dGxlZCgpIGlzIGZhbHNlCitQQVNTIHRlc3RGcmFtZS5jb250ZW50V2luZG93Lmlu
dGVybmFscy5pc1JlcXVlc3RBbmltYXRpb25GcmFtZVRocm90dGxlZCgpIGJlY2FtZSB0cnVlCitQ
QVNTIHRlc3RGcmFtZS5jb250ZW50V2luZG93LmludGVybmFscy5pc1JlcXVlc3RBbmltYXRpb25G
cmFtZVRocm90dGxlZCgpIGlzIHRydWUKK1BBU1MgZ3JhbmRDaGlsZEZyYW1lLmNvbnRlbnRXaW5k
b3cuaW50ZXJuYWxzLmlzUmVxdWVzdEFuaW1hdGlvbkZyYW1lVGhyb3R0bGVkKCkgaXMgdHJ1ZQor
UEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvYW5pbWF0aW9uL3JlcXVlc3QtYW5pbWF0aW9uLWZyYW1l
LXRocm90dGxlLXN1YmZyYW1lLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2FuaW1hdGlvbi9yZXF1
ZXN0LWFuaW1hdGlvbi1mcmFtZS10aHJvdHRsZS1zdWJmcmFtZS5odG1sCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmY4
OTQwZjNlZDg5YTBhNTE1ZmVmZGFkNWUwMmFmYzFhN2E1NGUzZjYKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9mYXN0L2FuaW1hdGlvbi9yZXF1ZXN0LWFuaW1hdGlvbi1mcmFtZS10aHJv
dHRsZS1zdWJmcmFtZS5odG1sCkBAIC0wLDAgKzEsNjEgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0
bWw+Cis8Ym9keT4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMi
Pjwvc2NyaXB0PgorPHNjcmlwdD4KK2Rlc2NyaXB0aW9uKCJUZXN0cyB0aGF0IHJlcXVlc3RBbmlt
YXRpb25GcmFtZSBpcyB0aHJvdHRsZWQgaW4gc3ViZnJhbWVzIHRoYXQgYXJlIG91dHNpZGUgdGhl
IHZpZXdwb3J0Iik7Cit3aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7CisKK2Z1bmN0aW9uIGNo
ZWNrU3ViZnJhbWVzVGhyb3R0bGVkKCkKK3sKKyAgICBzaG91bGRCZVRydWUoInRlc3RGcmFtZS5j
b250ZW50V2luZG93LmludGVybmFscy5pc1JlcXVlc3RBbmltYXRpb25GcmFtZVRocm90dGxlZCgp
Iik7CisgICAgc2hvdWxkQmVUcnVlKCJncmFuZENoaWxkRnJhbWUuY29udGVudFdpbmRvdy5pbnRl
cm5hbHMuaXNSZXF1ZXN0QW5pbWF0aW9uRnJhbWVUaHJvdHRsZWQoKSIpOworCisgICAgZmluaXNo
SlNUZXN0KCk7Cit9CisKK2Z1bmN0aW9uIHNjcm9sbEZyYW1lT3V0T2ZWaWV3KCkKK3sKKyAgICBk
ZWJ1ZygiU2Nyb2xsaW5nIGZyYW1lIG91dCBvZiB2aWV3IGFnYWluLiIpOworICAgIHdpbmRvdy5z
Y3JvbGwoMCwgMCk7CisKKyAgICBzaG91bGRCZUZhbHNlKCJpbnRlcm5hbHMuaXNSZXF1ZXN0QW5p
bWF0aW9uRnJhbWVUaHJvdHRsZWQoKSIpOworICAgIHNob3VsZEJlY29tZUVxdWFsKCJ0ZXN0RnJh
bWUuY29udGVudFdpbmRvdy5pbnRlcm5hbHMuaXNSZXF1ZXN0QW5pbWF0aW9uRnJhbWVUaHJvdHRs
ZWQoKSIsICJ0cnVlIiwgY2hlY2tTdWJmcmFtZXNUaHJvdHRsZWQpOworfQorCitmdW5jdGlvbiBz
Y3JvbGxGcmFtZUludG9WaWV3KCkKK3sKKyAgICBzaG91bGRCZUZhbHNlKCJpbnRlcm5hbHMuaXNS
ZXF1ZXN0QW5pbWF0aW9uRnJhbWVUaHJvdHRsZWQoKSIpOworICAgIHNob3VsZEJlVHJ1ZSgidGVz
dEZyYW1lLmNvbnRlbnRXaW5kb3cuaW50ZXJuYWxzLmlzUmVxdWVzdEFuaW1hdGlvbkZyYW1lVGhy
b3R0bGVkKCkiKTsKKyAgICBzaG91bGRCZVRydWUoImdyYW5kQ2hpbGRGcmFtZS5jb250ZW50V2lu
ZG93LmludGVybmFscy5pc1JlcXVlc3RBbmltYXRpb25GcmFtZVRocm90dGxlZCgpIik7CisKKyAg
ICBkZWJ1ZygiU2Nyb2xsaW5nIGZyYW1lIGludG8gdmlldy4iKTsKKyAgICB3aW5kb3cuaW50ZXJu
YWxzLnNjcm9sbEVsZW1lbnRUb1JlY3QodGVzdEZyYW1lLCAwLCAwLCAzMDAsIDMwMCk7CisKKyAg
ICBkZWJ1ZygiUmVxdWVzdEFuaW1hdGlvbkZyYW1lIHNob3VsZCBubyBsb25nZXIgYmUgdGhyb3R0
bGVkIik7CisgICAgc2hvdWxkQmVGYWxzZSgiaW50ZXJuYWxzLmlzUmVxdWVzdEFuaW1hdGlvbkZy
YW1lVGhyb3R0bGVkKCkiKTsKKyAgICBzaG91bGRCZUZhbHNlKCJncmFuZENoaWxkRnJhbWUuY29u
dGVudFdpbmRvdy5pbnRlcm5hbHMuaXNSZXF1ZXN0QW5pbWF0aW9uRnJhbWVUaHJvdHRsZWQoKSIp
OworICAgIHNob3VsZEJlRmFsc2UoInRlc3RGcmFtZS5jb250ZW50V2luZG93LmludGVybmFscy5p
c1JlcXVlc3RBbmltYXRpb25GcmFtZVRocm90dGxlZCgpIik7CisKKyAgICBzY3JvbGxGcmFtZU91
dE9mVmlldygpOworfQorCitmdW5jdGlvbiBydW5UZXN0KCkKK3sKKyAgICB0ZXN0RnJhbWUgPSBk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCgidGVzdEZyYW1lIik7CisgICAgZ3JhbmRDaGlsZEZyYW1l
ID0gdGVzdEZyYW1lLmNvbnRlbnREb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiZ3JhbmRDaGlsZEZy
YW1lIik7CisgICAgZGVidWcoIkZyYW1lIGlzIGluaXRpYWxseSBvdXRzaWRlIHRoZSB2aWV3cG9y
dCBzbyByZXF1ZXN0QW5pbWF0aW9uRnJhbWUgc2hvdWxkIGJlIHRocm90dGxlZCIpOworICAgIHNo
b3VsZEJlY29tZUVxdWFsKCJ0ZXN0RnJhbWUuY29udGVudFdpbmRvdy5pbnRlcm5hbHMuaXNSZXF1
ZXN0QW5pbWF0aW9uRnJhbWVUaHJvdHRsZWQoKSIsICJ0cnVlIiwgc2Nyb2xsRnJhbWVJbnRvVmll
dyk7Cit9CisKK3ZhciBpID0gMDsKK3JlcXVlc3RBbmltYXRpb25GcmFtZShmdW5jdGlvbigpIHsK
KyAgICBpKys7Cit9KTsKKzwvc2NyaXB0PgorPGRpdiBzdHlsZT0icG9zaXRpb246IHJlbGF0aXZl
OyB3aWR0aDogMTYwMHB4OyBoZWlnaHQ6IDI0MDBweDsgYmFja2dyb3VuZC1jb2xvcjogZ3JlZW47
Ij4KKyAgICA8aWZyYW1lIGlkPSJ0ZXN0RnJhbWUiIHNyYz0icmVzb3VyY2VzL3JlcXVlc3RBbmlt
YXRpb25GcmFtZS1mcmFtZS5odG1sIiBzdHlsZT0icG9zaXRpb246YWJzb2x1dGU7IGxlZnQ6IDYw
MHB4OyB0b3A6IDgwMHB4OyIgb25sb2FkPSJydW5UZXN0KCkiPjwvaWZyYW1lPgorPC9kaXY+Cis8
c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8
L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2FuaW1hdGlvbi9y
ZXNvdXJjZXMvcmVxdWVzdEFuaW1hdGlvbkZyYW1lLWZyYW1lLTIuaHRtbCBiL0xheW91dFRlc3Rz
L2Zhc3QvYW5pbWF0aW9uL3Jlc291cmNlcy9yZXF1ZXN0QW5pbWF0aW9uRnJhbWUtZnJhbWUtMi5o
dG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjUxMTI1ZDk3MThhYzA2N2UxYzAxZTdiMDUwMWY4NmFkZTI1MmM4MDIK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2FuaW1hdGlvbi9yZXNvdXJjZXMv
cmVxdWVzdEFuaW1hdGlvbkZyYW1lLWZyYW1lLTIuaHRtbApAQCAtMCwwICsxLDExIEBACis8IURP
Q1RZUEUgaHRtbD4KKzxodG1sPgorPGJvZHk+Cis8c2NyaXB0PgordmFyIGkgPSAwOworcmVxdWVz
dEFuaW1hdGlvbkZyYW1lKGZ1bmN0aW9uKCkgeworICBpKys7Cit9KTsKKzwvc2NyaXB0PgorPC9i
b2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9hbmltYXRpb24vcmVz
b3VyY2VzL3JlcXVlc3RBbmltYXRpb25GcmFtZS1mcmFtZS5odG1sIGIvTGF5b3V0VGVzdHMvZmFz
dC9hbmltYXRpb24vcmVzb3VyY2VzL3JlcXVlc3RBbmltYXRpb25GcmFtZS1mcmFtZS5odG1sCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLmMwZDc2MzZlMmM0NTNjNTIzYWUxMjU5NjZjYTI3NjRiYjk4NjI4YzUKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2FuaW1hdGlvbi9yZXNvdXJjZXMvcmVxdWVz
dEFuaW1hdGlvbkZyYW1lLWZyYW1lLmh0bWwKQEAgLTAsMCArMSwxMiBAQAorPCFET0NUWVBFIGh0
bWw+Cis8aHRtbD4KKzxib2R5PgorPGlmcmFtZSBpZD0iZ3JhbmRDaGlsZEZyYW1lIiBzcmM9InJl
cXVlc3RBbmltYXRpb25GcmFtZS1mcmFtZS0yLmh0bWwiPjwvaWZyYW1lPgorPHNjcmlwdD4KK3Zh
ciBpID0gMDsKK3JlcXVlc3RBbmltYXRpb25GcmFtZShmdW5jdGlvbigpIHsKKyAgaSsrOworfSk7
Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>252727</attachid>
            <date>2015-05-08 10:02:54 -0700</date>
            <delta_ts>2015-05-08 10:08:07 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-144718-20150508100136.patch</filename>
            <type>text/plain</type>
            <size>25576</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTgzOTk0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggODNhNmQyZTkyZTZkMDJm
MDZiYTY3MzgwMWU3MGVkYjUwMzY2OGQ2Mi4uMGI3ZTQ0NTY0MmIyZjVjY2I4OGZiNjIxMjJkYjY2
ZTMyMzhmYWY2MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ4IEBACisyMDE1LTA1LTA4ICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgVGhyb3R0bGUgUmVxdWVzdEFu
aW1hdGlvbkZyYW1lIGluIHN1YmZyYW1lcyB0aGF0IGFyZSBvdXRzaWRlIHRoZSB2aWV3cG9ydAor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ0NzE4Cisg
ICAgICAgIDxyZGFyOi8vcHJvYmxlbS8yMDY4ODc4Mj4KKworICAgICAgICBSZXZpZXdlZCBieSBT
aW1vbiBGcmFzZXIuCisKKyAgICAgICAgVGhyb3R0bGUgUmVxdWVzdEFuaW1hdGlvbkZyYW1lIGlu
IHN1YmZyYW1lcyB0aGF0IGFyZSBvdXRzaWRlIHRoZQorICAgICAgICB2aWV3cG9ydCBvciBoYXZl
ICJkaXNwbGF5OiBub25lIiBmb3IgcGVyZm9ybWFuY2UgYW5kIHBvd2VyLgorCisgICAgICAgIFRl
c3RzOiBmYXN0L2FuaW1hdGlvbi9yZXF1ZXN0LWFuaW1hdGlvbi1mcmFtZS10aHJvdHRsZS1zdWJm
cmFtZS1kaXNwbGF5LW5vbmUuaHRtbAorICAgICAgICAgICAgICAgZmFzdC9hbmltYXRpb24vcmVx
dWVzdC1hbmltYXRpb24tZnJhbWUtdGhyb3R0bGUtc3ViZnJhbWUuaHRtbAorCisgICAgICAgICog
ZG9tL0RvY3VtZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6c2NyaXB0ZWRBbmlt
YXRpb25Db250cm9sbGVyKToKKyAgICAgICAgKiBkb20vU2NyaXB0ZWRBbmltYXRpb25Db250cm9s
bGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdGVkQW5pbWF0aW9uQ29udHJvbGxlcjo6
c2V0VGhyb3R0bGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdGVkQW5pbWF0aW9uQ29udHJv
bGxlcjo6aXNUaHJvdHRsZWQpOgorICAgICAgICAqIGRvbS9TY3JpcHRlZEFuaW1hdGlvbkNvbnRy
b2xsZXIuaDoKKyAgICAgICAgKiBsb2FkZXIvRnJhbWVMb2FkZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6RnJhbWVMb2FkZXI6Om9wZW4pOgorICAgICAgICBDYWxsIEZyYW1lVmlldzo6c2V0RnJh
bWVSZWN0KCkgb25seSAqYWZ0ZXIqIHRoZSB2aWV3IGhhcyBiZWVuCisgICAgICAgIHNldCBvbiB0
aGUgRnJhbWUuIE90aGVyd2lzZSwgc2V0RnJhbWVSZWN0KCkgZW5kcyB1cCBjYWxsaW5nCisgICAg
ICAgIHZpZXdwb3J0Q29udGVudHNDaGFuZ2VkKCkgYW5kIHdlIGhpdCB0aGUKKyAgICAgICAgQVNT
RVJUKGZyYW1lKCkudmlldygpID09IHRoaXMpIGFzc2VydGlvbiBpbiB3aW5kb3dDbGlwUmVjdCgp
CisgICAgICAgIGJlY2F1c2UgdGhlIEZyYW1lIHN0aWxsIGhhcyBpdHMgb2xkIEZyYW1lVmlldy4g
VGhpcyBpcyBjb3ZlcmVkCisgICAgICAgIGJ5IGxvYWRlci9nby1iYWNrLXRvLWRpZmZlcmVudC13
aW5kb3ctc2l6ZS5odG1sIGxheW91dCB0ZXN0LgorCisgICAgICAgICogcGFnZS9GcmFtZVZpZXcu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVWaWV3Ojp2aWV3cG9ydENvbnRlbnRzQ2hhbmdl
ZCk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZVZpZXc6OmFwcGx5UmVjdXJzaXZlbHlXaXRoVmlz
aWJsZVJlY3QpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVWaWV3OjpyZXN1bWVWaXNpYmxlSW1h
Z2VBbmltYXRpb25zKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lVmlldzo6dXBkYXRlU2NyaXB0
ZWRBbmltYXRpb25zVGhyb3R0bGluZ1N0YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lVmll
dzo6cmVzdW1lVmlzaWJsZUltYWdlQW5pbWF0aW9uc0luY2x1ZGluZ1N1YmZyYW1lcyk6CisgICAg
ICAgIChXZWJDb3JlOjpGcmFtZVZpZXc6OnVwZGF0ZVRocm90dGxlZERPTVRpbWVyc1N0YXRlKToK
KyAgICAgICAgKFdlYkNvcmU6OkZyYW1lVmlldzo6c2Nyb2xsUG9zaXRpb25DaGFuZ2VkKTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lVmlldzo6c2VuZFJlc2l6ZUV2ZW50SWZOZWVk
ZWQpOiBEZWxldGVkLgorICAgICAgICAqIHBhZ2UvRnJhbWVWaWV3Lmg6CisgICAgICAgICogdGVz
dGluZy9JbnRlcm5hbHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW50ZXJuYWxzOjppc1JlcXVl
c3RBbmltYXRpb25GcmFtZVRocm90dGxlZCk6CisgICAgICAgIChXZWJDb3JlOjpJbnRlcm5hbHM6
OmlzVGltZXJUaHJvdHRsZWQpOiBEZWxldGVkLgorICAgICAgICAqIHRlc3RpbmcvSW50ZXJuYWxz
Lmg6CisgICAgICAgICogdGVzdGluZy9JbnRlcm5hbHMuaWRsOgorCiAyMDE1LTA1LTA4ICBYYWJp
ZXIgUm9kcmlndWV6IENhbHZhciAgPGNhbHZhcmlzQGlnYWxpYS5jb20+IGFuZCBZb3Vlbm4gRmFi
bGV0IDx5b3Vlbm4uZmFibGV0QGNyZi5jYW5vbi5mcj4KIAogICAgICAgICBbU3RyZWFtcyBBUEld
IFJlYWRhYmxlU3RyZWFtIGNvbnN0cnVjdG9yIHN0YXJ0IGZ1bmN0aW9uIHNob3VsZCBiZSBhYmxl
IHRvIGVycm9yIHRoZSBzdHJlYW0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1
bWVudC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKaW5kZXggYmVmYjVhNTI5NjMw
NGQ1Y2M3NTM2N2YyMTk5ZDNmNmJhNjg2YTgwYS4uY2MxYzAzOGM1MWM3OWQ3MWY2NzM2M2YxMTFh
ZmRkMzQwNzA3YjlhNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKQEAgLTk0OCw2ICs5NDgsOSBAQCBw
dWJsaWM6CiAKICAgICB2aXJ0dWFsIHZvaWQgcG9zdFRhc2soVGFzaykgb3ZlcnJpZGUgZmluYWw7
IC8vIEV4ZWN1dGVzIHRoZSB0YXNrIG9uIGNvbnRleHQncyB0aHJlYWQgYXN5bmNocm9ub3VzbHku
CiAKKyNpZiBFTkFCTEUoUkVRVUVTVF9BTklNQVRJT05fRlJBTUUpCisgICAgU2NyaXB0ZWRBbmlt
YXRpb25Db250cm9sbGVyKiBzY3JpcHRlZEFuaW1hdGlvbkNvbnRyb2xsZXIoKSB7IHJldHVybiBt
X3NjcmlwdGVkQW5pbWF0aW9uQ29udHJvbGxlci5nZXQoKTsgfQorI2VuZGlmCiAgICAgdm9pZCBz
dXNwZW5kU2NyaXB0ZWRBbmltYXRpb25Db250cm9sbGVyQ2FsbGJhY2tzKCk7CiAgICAgdm9pZCBy
ZXN1bWVTY3JpcHRlZEFuaW1hdGlvbkNvbnRyb2xsZXJDYWxsYmFja3MoKTsKICAgICB2b2lkIHNj
cmlwdGVkQW5pbWF0aW9uQ29udHJvbGxlclNldFRocm90dGxlZChib29sKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRlZEFuaW1hdGlvbkNvbnRyb2xsZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvZG9tL1NjcmlwdGVkQW5pbWF0aW9uQ29udHJvbGxlci5jcHAKaW5kZXggN2Vk
ZWJkNDQxMWNhYmQ5YzZmZmE0OWQ2YmYxYmM5YTUzMTRiMDNlNy4uMWIzOWJmMTZlMDM1MDNhYzNj
MjM3ZjQ0YjNmNWZlZmE1Njg2ZWU2MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1Nj
cmlwdGVkQW5pbWF0aW9uQ29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1Nj
cmlwdGVkQW5pbWF0aW9uQ29udHJvbGxlci5jcHAKQEAgLTM0LDYgKzM0LDggQEAKICNpbmNsdWRl
ICJEb2N1bWVudExvYWRlci5oIgogI2luY2x1ZGUgIkZyYW1lVmlldy5oIgogI2luY2x1ZGUgIklu
c3BlY3Rvckluc3RydW1lbnRhdGlvbi5oIgorI2luY2x1ZGUgIkxvZ2dpbmcuaCIKKyNpbmNsdWRl
ICJNYWluRnJhbWUuaCIKICNpbmNsdWRlICJSZXF1ZXN0QW5pbWF0aW9uRnJhbWVDYWxsYmFjay5o
IgogI2luY2x1ZGUgIlNldHRpbmdzLmgiCiAjaW5jbHVkZSA8d3RmL1JlZi5oPgpAQCAtODQsNiAr
ODYsOCBAQCB2b2lkIFNjcmlwdGVkQW5pbWF0aW9uQ29udHJvbGxlcjo6c2V0VGhyb3R0bGVkKGJv
b2wgaXNUaHJvdHRsZWQpCiAgICAgaWYgKG1faXNUaHJvdHRsZWQgPT0gaXNUaHJvdHRsZWQpCiAg
ICAgICAgIHJldHVybjsKIAorICAgIExPRyhBbmltYXRpb25zLCAiJXAgLSBTZXR0aW5nIFJlcXVl
c3RBbmltYXRpb25GcmFtZSB0aHJvdHRsaW5nIHN0YXRlIHRvICVkIGluIGZyYW1lICVwIChpc01h
aW5GcmFtZTogJWQpIiwgdGhpcywgaXNUaHJvdHRsZWQsIG1fZG9jdW1lbnQtPmZyYW1lKCksIG1f
ZG9jdW1lbnQtPmZyYW1lKCkgPyBtX2RvY3VtZW50LT5mcmFtZSgpLT5pc01haW5GcmFtZSgpIDog
MCk7CisKICAgICBtX2lzVGhyb3R0bGVkID0gaXNUaHJvdHRsZWQ7CiAgICAgaWYgKG1fYW5pbWF0
aW9uVGltZXIuaXNBY3RpdmUoKSkgewogICAgICAgICBtX2FuaW1hdGlvblRpbWVyLnN0b3AoKTsK
QEAgLTk0LDYgKzk4LDE1IEBAIHZvaWQgU2NyaXB0ZWRBbmltYXRpb25Db250cm9sbGVyOjpzZXRU
aHJvdHRsZWQoYm9vbCBpc1Rocm90dGxlZCkKICNlbmRpZgogfQogCitib29sIFNjcmlwdGVkQW5p
bWF0aW9uQ29udHJvbGxlcjo6aXNUaHJvdHRsZWQoKSBjb25zdAoreworI2lmIFVTRShSRVFVRVNU
X0FOSU1BVElPTl9GUkFNRV9USU1FUikgJiYgVVNFKFJFUVVFU1RfQU5JTUFUSU9OX0ZSQU1FX0RJ
U1BMQVlfTU9OSVRPUikKKyAgICByZXR1cm4gbV9pc1Rocm90dGxlZDsKKyNlbHNlCisgICAgcmV0
dXJuIGZhbHNlOworI2VuZGlmCit9CisKIFNjcmlwdGVkQW5pbWF0aW9uQ29udHJvbGxlcjo6Q2Fs
bGJhY2tJZCBTY3JpcHRlZEFuaW1hdGlvbkNvbnRyb2xsZXI6OnJlZ2lzdGVyQ2FsbGJhY2soUGFz
c1JlZlB0cjxSZXF1ZXN0QW5pbWF0aW9uRnJhbWVDYWxsYmFjaz4gY2FsbGJhY2spCiB7CiAgICAg
U2NyaXB0ZWRBbmltYXRpb25Db250cm9sbGVyOjpDYWxsYmFja0lkIGlkID0gKyttX25leHRDYWxs
YmFja0lkOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdGVkQW5pbWF0aW9u
Q29udHJvbGxlci5oIGIvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdGVkQW5pbWF0aW9uQ29udHJv
bGxlci5oCmluZGV4IDdiMjhlNzllYzg1YjRiYTFmMTZlMGU5YzE3ZDA1MzU3ZTJiMWQ0ZGIuLjg5
YWIwMTkxYjRjODJhODViYjQ1ZTMyZjA5MjQ5YjM4OTAyNGU1NDAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2RvbS9TY3JpcHRlZEFuaW1hdGlvbkNvbnRyb2xsZXIuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vU2NyaXB0ZWRBbmltYXRpb25Db250cm9sbGVyLmgKQEAgLTY4LDYgKzY4LDcg
QEAgcHVibGljOgogICAgIHZvaWQgc3VzcGVuZCgpOwogICAgIHZvaWQgcmVzdW1lKCk7CiAgICAg
dm9pZCBzZXRUaHJvdHRsZWQoYm9vbCk7CisgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBpc1Rocm90
dGxlZCgpIGNvbnN0OwogCiAgICAgdm9pZCB3aW5kb3dTY3JlZW5EaWRDaGFuZ2UoUGxhdGZvcm1E
aXNwbGF5SUQpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2Fk
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcAppbmRleCA0Nzkx
Y2Q4NGRiNDllMDFmMmRmYWNhY2RjYzMyMjdkZjkwMDNkMThmLi5jYWZlNmJhYTE4NDdkZDIxMzIw
NWQ4ODk3Zjg5ZDhhYzQ1NTY1YmJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
RnJhbWVMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5j
cHAKQEAgLTIwNjgsMTAgKzIwNjgsMTIgQEAgdm9pZCBGcmFtZUxvYWRlcjo6b3BlbihDYWNoZWRG
cmFtZUJhc2UmIGNhY2hlZEZyYW1lKQogICAgIEFTU0VSVCh2aWV3KTsKICAgICB2aWV3LT5zZXRX
YXNTY3JvbGxlZEJ5VXNlcihmYWxzZSk7CiAKLSAgICAvLyBVc2UgdGhlIGN1cnJlbnQgU2Nyb2xs
VmlldydzIGZyYW1lIHJlY3QuCi0gICAgaWYgKG1fZnJhbWUudmlldygpKQotICAgICAgICB2aWV3
LT5zZXRGcmFtZVJlY3QobV9mcmFtZS52aWV3KCktPmZyYW1lUmVjdCgpKTsKKyAgICBPcHRpb25h
bDxJbnRSZWN0PiBwcmV2aW91c1ZpZXdGcmFtZVJlY3QgPSBtX2ZyYW1lLnZpZXcoKSA/ICBtX2Zy
YW1lLnZpZXcoKS0+ZnJhbWVSZWN0KCkgOiBOdWxsb3B0OwogICAgIG1fZnJhbWUuc2V0Vmlldyh2
aWV3KTsKKworICAgIC8vIFVzZSB0aGUgcHJldmlvdXMgU2Nyb2xsVmlldydzIGZyYW1lIHJlY3Qu
CisgICAgaWYgKHByZXZpb3VzVmlld0ZyYW1lUmVjdCkKKyAgICAgICAgdmlldy0+c2V0RnJhbWVS
ZWN0KHByZXZpb3VzVmlld0ZyYW1lUmVjdC52YWx1ZSgpKTsKICAgICAKICAgICBtX2ZyYW1lLnNl
dERvY3VtZW50KGRvY3VtZW50KTsKICAgICBkb2N1bWVudC0+ZG9tV2luZG93KCktPnJlc3VtZUZy
b21QYWdlQ2FjaGUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcAppbmRleCBhNzIyYTE5MjA4
ZmI2ZmViODdhYTM0ZmQ2NWFmMDMwMzVkYmUxZjMxLi44OTU1YzE5ZGI0NDk4YmZiNzllZjI4Zjkx
MmNiNWRmNTM4MjUwZmQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmll
dy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwCkBAIC04MCw2ICs4
MCw3IEBACiAjaW5jbHVkZSAiUmVuZGVyV2lkZ2V0LmgiCiAjaW5jbHVkZSAiU1ZHRG9jdW1lbnQu
aCIKICNpbmNsdWRlICJTVkdTVkdFbGVtZW50LmgiCisjaW5jbHVkZSAiU2NyaXB0ZWRBbmltYXRp
b25Db250cm9sbGVyLmgiCiAjaW5jbHVkZSAiU2Nyb2xsQW5pbWF0b3IuaCIKICNpbmNsdWRlICJT
Y3JvbGxpbmdDb29yZGluYXRvci5oIgogI2luY2x1ZGUgIlNldHRpbmdzLmgiCkBAIC0xNzU1LDEw
ICsxNzU2LDE4IEBAIHZvaWQgRnJhbWVWaWV3OjpkZWxheWVkU2Nyb2xsRXZlbnRUaW1lckZpcmVk
KCkKIAogdm9pZCBGcmFtZVZpZXc6OnZpZXdwb3J0Q29udGVudHNDaGFuZ2VkKCkKIHsKKyAgICBp
ZiAoIWZyYW1lKCkudmlldygpKSB7CisgICAgICAgIC8vIFRoZSBmcmFtZSBpcyBiZWluZyBkZXN0
cm95ZWQuCisgICAgICAgIHJldHVybjsKKyAgICB9CisKICAgICAvLyBXaGVuIHRoZSB2aWV3cG9y
dCBjb250ZW50cyBjaGFuZ2VzIChzY3JvbGwsIHJlc2l6ZSwgc3R5bGUgcmVjYWxjLCBsYXlvdXQs
IC4uLiksCiAgICAgLy8gY2hlY2sgaWYgd2Ugc2hvdWxkIHJlc3VtZSBhbmltYXRlZCBpbWFnZXMg
b3IgdW50aHJvdHRsZSBET00gdGltZXJzLgotICAgIHJlc3VtZVZpc2libGVJbWFnZUFuaW1hdGlv
bnNJbmNsdWRpbmdTdWJmcmFtZXMoKTsKLSAgICB1cGRhdGVUaHJvdHRsZWRET01UaW1lcnNTdGF0
ZSgpOworICAgIGFwcGx5UmVjdXJzaXZlbHlXaXRoVmlzaWJsZVJlY3QoW10gKEZyYW1lVmlldyYg
ZnJhbWVWaWV3LCBjb25zdCBJbnRSZWN0JiB2aXNpYmxlUmVjdCkgeworICAgICAgICBmcmFtZVZp
ZXcucmVzdW1lVmlzaWJsZUltYWdlQW5pbWF0aW9ucyh2aXNpYmxlUmVjdCk7CisgICAgICAgIGZy
YW1lVmlldy51cGRhdGVUaHJvdHRsZWRET01UaW1lcnNTdGF0ZSh2aXNpYmxlUmVjdCk7CisgICAg
ICAgIGZyYW1lVmlldy51cGRhdGVTY3JpcHRlZEFuaW1hdGlvbnNUaHJvdHRsaW5nU3RhdGUodmlz
aWJsZVJlY3QpOworICAgIH0pOwogfQogCiBib29sIEZyYW1lVmlldzo6Zml4ZWRFbGVtZW50c0xh
eW91dFJlbGF0aXZlVG9GcmFtZSgpIGNvbnN0CkBAIC0yMDk1LDI4ICsyMTA0LDYwIEBAIHZvaWQg
RnJhbWVWaWV3OjpzY3JvbGxQb3NpdGlvbkNoYW5nZWQoY29uc3QgSW50UG9pbnQmIG9sZFBvc2l0
aW9uLCBjb25zdCBJbnRQb2luCiAgICAgdmlld3BvcnRDb250ZW50c0NoYW5nZWQoKTsKIH0KIAot
dm9pZCBGcmFtZVZpZXc6OnJlc3VtZVZpc2libGVJbWFnZUFuaW1hdGlvbnNJbmNsdWRpbmdTdWJm
cmFtZXMoKQordm9pZCBGcmFtZVZpZXc6OmFwcGx5UmVjdXJzaXZlbHlXaXRoVmlzaWJsZVJlY3Qo
Y29uc3Qgc3RkOjpmdW5jdGlvbjx2b2lkIChGcmFtZVZpZXcmIGZyYW1lVmlldywgY29uc3QgSW50
UmVjdCYgdmlzaWJsZVJlY3QpPiYgYXBwbHkpCiB7Ci0gICAgYXV0byogcmVuZGVyVmlldyA9IGZy
YW1lKCkuY29udGVudFJlbmRlcmVyKCk7Ci0gICAgaWYgKCFyZW5kZXJWaWV3KQotICAgICAgICBy
ZXR1cm47Ci0KICAgICBJbnRSZWN0IHdpbmRvd0NsaXBSZWN0ID0gdGhpcy0+d2luZG93Q2xpcFJl
Y3QoKTsKICAgICBhdXRvIHZpc2libGVSZWN0ID0gd2luZG93VG9Db250ZW50cyh3aW5kb3dDbGlw
UmVjdCk7Ci0gICAgaWYgKHZpc2libGVSZWN0LmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuOwot
Ci0gICAgLy8gUmVzdW1lIHBhdXNlZCBpbWFnZSBhbmltYXRpb25zIGluIHRoaXMgZnJhbWUuCi0g
ICAgcmVuZGVyVmlldy0+cmVzdW1lUGF1c2VkSW1hZ2VBbmltYXRpb25zSWZOZWVkZWQodmlzaWJs
ZVJlY3QpOworICAgIGFwcGx5KCp0aGlzLCB2aXNpYmxlUmVjdCk7CiAKICAgICAvLyBSZWN1cnNp
dmUgY2FsbCBmb3Igc3ViZnJhbWVzLiBXZSBjYWNoZSB0aGUgY3VycmVudCBGcmFtZVZpZXcncyB3
aW5kb3dDbGlwUmVjdCB0byBhdm9pZCByZWNvbXB1dGluZyBpdCBmb3IgZXZlcnkgc3ViZnJhbWUu
CiAgICAgVGVtcG9yYXJ5Q2hhbmdlPEludFJlY3QqPiB3aW5kb3dDbGlwUmVjdENhY2hlKG1fY2Fj
aGVkV2luZG93Q2xpcFJlY3QsICZ3aW5kb3dDbGlwUmVjdCk7CiAgICAgZm9yIChGcmFtZSogY2hp
bGRGcmFtZSA9IGZyYW1lKCkudHJlZSgpLmZpcnN0Q2hpbGQoKTsgY2hpbGRGcmFtZTsgY2hpbGRG
cmFtZSA9IGNoaWxkRnJhbWUtPnRyZWUoKS5uZXh0U2libGluZygpKSB7CiAgICAgICAgIGlmIChh
dXRvKiBjaGlsZFZpZXcgPSBjaGlsZEZyYW1lLT52aWV3KCkpCi0gICAgICAgICAgICBjaGlsZFZp
ZXctPnJlc3VtZVZpc2libGVJbWFnZUFuaW1hdGlvbnNJbmNsdWRpbmdTdWJmcmFtZXMoKTsKKyAg
ICAgICAgICAgIGNoaWxkVmlldy0+YXBwbHlSZWN1cnNpdmVseVdpdGhWaXNpYmxlUmVjdChhcHBs
eSk7CiAgICAgfQogfQogCit2b2lkIEZyYW1lVmlldzo6cmVzdW1lVmlzaWJsZUltYWdlQW5pbWF0
aW9ucyhjb25zdCBJbnRSZWN0JiB2aXNpYmxlUmVjdCkKK3sKKyAgICBpZiAodmlzaWJsZVJlY3Qu
aXNFbXB0eSgpKQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAoYXV0byogcmVuZGVyVmlldyA9
IGZyYW1lKCkuY29udGVudFJlbmRlcmVyKCkpCisgICAgICAgIHJlbmRlclZpZXctPnJlc3VtZVBh
dXNlZEltYWdlQW5pbWF0aW9uc0lmTmVlZGVkKHZpc2libGVSZWN0KTsKK30KKwordm9pZCBGcmFt
ZVZpZXc6OnVwZGF0ZVNjcmlwdGVkQW5pbWF0aW9uc1Rocm90dGxpbmdTdGF0ZShjb25zdCBJbnRS
ZWN0JiB2aXNpYmxlUmVjdCkKK3sKKyNpZiBFTkFCTEUoUkVRVUVTVF9BTklNQVRJT05fRlJBTUUp
CisgICAgaWYgKGZyYW1lKCkuaXNNYWluRnJhbWUoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAg
YXV0byogZG9jdW1lbnQgPSBmcmFtZSgpLmRvY3VtZW50KCk7CisgICAgaWYgKCFkb2N1bWVudCkK
KyAgICAgICAgcmV0dXJuOworCisgICAgYXV0byogc2NyaXB0ZWRBbmltYXRpb25Db250cm9sbGVy
ID0gZG9jdW1lbnQtPnNjcmlwdGVkQW5pbWF0aW9uQ29udHJvbGxlcigpOworICAgIGlmICghc2Ny
aXB0ZWRBbmltYXRpb25Db250cm9sbGVyKQorICAgICAgICByZXR1cm47CisKKyAgICAvLyBGSVhN
RTogVGhpcyBkb2Vzbid0IHdvcmsgZm9yIHN1YmZyYW1lcyBvZiBhICJkaXNwbGF5OiBub25lIiBm
cmFtZSBiZWNhdXNlCisgICAgLy8gdGhleSBoYXZlIGEgbm9uLW51bGwgb3duZXJSZW5kZXJlci4K
KyAgICBib29sIHNob3VsZFRocm90dGxlID0gIWZyYW1lKCkub3duZXJSZW5kZXJlcigpIHx8IHZp
c2libGVSZWN0LmlzRW1wdHkoKTsKKyAgICBzY3JpcHRlZEFuaW1hdGlvbkNvbnRyb2xsZXItPnNl
dFRocm90dGxlZChzaG91bGRUaHJvdHRsZSk7CisjZWxzZQorICAgIFVOVVNFRF9QQVJBTSh2aXNp
YmxlUmVjdCk7CisjZW5kaWYKK30KKworCit2b2lkIEZyYW1lVmlldzo6cmVzdW1lVmlzaWJsZUlt
YWdlQW5pbWF0aW9uc0luY2x1ZGluZ1N1YmZyYW1lcygpCit7CisgICAgYXBwbHlSZWN1cnNpdmVs
eVdpdGhWaXNpYmxlUmVjdChbXSAoRnJhbWVWaWV3JiBmcmFtZVZpZXcsIGNvbnN0IEludFJlY3Qm
IHZpc2libGVSZWN0KSB7CisgICAgICAgIGZyYW1lVmlldy5yZXN1bWVWaXNpYmxlSW1hZ2VBbmlt
YXRpb25zKHZpc2libGVSZWN0KTsKKyAgICB9KTsKK30KKwogdm9pZCBGcmFtZVZpZXc6OnVwZGF0
ZUxheWVyUG9zaXRpb25zQWZ0ZXJTY3JvbGxpbmcoKQogewogICAgIC8vIElmIHdlJ3JlIHNjcm9s
bGluZyBhcyBhIHJlc3VsdCBvZiB1cGRhdGluZyB0aGUgdmlldyBzaXplIGFmdGVyIGxheW91dCwg
d2UnbGwgdXBkYXRlIHdpZGdldHMgYW5kIGxheWVyIHBvc2l0aW9ucyBzb29uIGFueXdheS4KQEAg
LTMwNTksMTMgKzMxMDAsMTEgQEAgdm9pZCBGcmFtZVZpZXc6OnVucmVnaXN0ZXJUaHJvdHRsZWRE
T01UaW1lcihET01UaW1lciogdGltZXIpCiAgICAgbV90aHJvdHRsZWRUaW1lcnMucmVtb3ZlKHRp
bWVyKTsKIH0KIAotdm9pZCBGcmFtZVZpZXc6OnVwZGF0ZVRocm90dGxlZERPTVRpbWVyc1N0YXRl
KCkKK3ZvaWQgRnJhbWVWaWV3Ojp1cGRhdGVUaHJvdHRsZWRET01UaW1lcnNTdGF0ZShjb25zdCBJ
bnRSZWN0JiB2aXNpYmxlUmVjdCkKIHsKICAgICBpZiAobV90aHJvdHRsZWRUaW1lcnMuaXNFbXB0
eSgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBJbnRSZWN0IHZpc2libGVSZWN0ID0gd2luZG93
VG9Db250ZW50cyh3aW5kb3dDbGlwUmVjdCgpKTsKLQogICAgIC8vIERvIG5vdCBpdGVyYXRlIG92
ZXIgdGhlIEhhc2hTZXQgYmVjYXVzZSBjYWxsaW5nIERPTVRpbWVyOjp1cGRhdGVUaHJvdHRsaW5n
U3RhdGVBZnRlclZpZXdwb3J0Q2hhbmdlKCkKICAgICAvLyBtYXkgY2F1c2UgdGltZXJzIHRvIHJl
bW92ZSB0aGVtc2VsdmVzIGZyb20gaXQgd2hpbGUgd2UgYXJlIGl0ZXJhdGluZy4KICAgICBWZWN0
b3I8RE9NVGltZXIqPiB0aW1lcnM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Zy
YW1lVmlldy5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuaAppbmRleCBiMmQ3Y2Vm
MWNjNDgyMTE1NDRjY2Y3ZTNlZjAyOTEwMTgzZjNhODA1Li41MmY0ZTZiNDQ5ZjhiOTNjNjg4MjY0
MjJhY2RmMGFiZjE2ZmNhZjVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1l
Vmlldy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmgKQEAgLTU5Niw3ICs1
OTYsMTEgQEAgcHJpdmF0ZToKICAgICB2b2lkIGZvcmNlTGF5b3V0UGFyZW50Vmlld0lmTmVlZGVk
KCk7CiAgICAgdm9pZCBwZXJmb3JtUG9zdExheW91dFRhc2tzKCk7CiAgICAgdm9pZCBhdXRvU2l6
ZUlmRW5hYmxlZCgpOwotICAgIHZvaWQgdXBkYXRlVGhyb3R0bGVkRE9NVGltZXJzU3RhdGUoKTsK
KworICAgIHZvaWQgYXBwbHlSZWN1cnNpdmVseVdpdGhWaXNpYmxlUmVjdChjb25zdCBzdGQ6OmZ1
bmN0aW9uPHZvaWQgKEZyYW1lVmlldyYgZnJhbWVWaWV3LCBjb25zdCBJbnRSZWN0JiB2aXNpYmxl
UmVjdCk+Jik7CisgICAgdm9pZCB1cGRhdGVUaHJvdHRsZWRET01UaW1lcnNTdGF0ZShjb25zdCBJ
bnRSZWN0JiB2aXNpYmxlUmVjdCk7CisgICAgdm9pZCByZXN1bWVWaXNpYmxlSW1hZ2VBbmltYXRp
b25zKGNvbnN0IEludFJlY3QmIHZpc2libGVSZWN0KTsKKyAgICB2b2lkIHVwZGF0ZVNjcmlwdGVk
QW5pbWF0aW9uc1Rocm90dGxpbmdTdGF0ZShjb25zdCBJbnRSZWN0JiB2aXNpYmxlUmVjdCk7CiAK
ICAgICB2b2lkIHVwZGF0ZUxheWVyRmx1c2hUaHJvdHRsaW5nKCk7CiAgICAgV0VCQ09SRV9FWFBP
UlQgdm9pZCBhZGp1c3RUaWxlZEJhY2tpbmdDb3ZlcmFnZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9J
bnRlcm5hbHMuY3BwCmluZGV4IDg4MjllZTAwNzg3NjlmYTdhNmU2YWVmMTg0MWFlNjIyNDI1OGQ0
NzMuLjA1YWUyMWQ3OTg5MTlhMTk3NmU1YzQ0OTQ2ZGY4YjIwYmRiZTUwYjMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS90ZXN0aW5nL0ludGVybmFscy5jcHAKQEAgLTk4LDYgKzk4LDcgQEAKICNpbmNsdWRlICJSZW5k
ZXJlZERvY3VtZW50TWFya2VyLmgiCiAjaW5jbHVkZSAiUnVudGltZUVuYWJsZWRGZWF0dXJlcy5o
IgogI2luY2x1ZGUgIlNjaGVtZVJlZ2lzdHJ5LmgiCisjaW5jbHVkZSAiU2NyaXB0ZWRBbmltYXRp
b25Db250cm9sbGVyLmgiCiAjaW5jbHVkZSAiU2Nyb2xsaW5nQ29vcmRpbmF0b3IuaCIKICNpbmNs
dWRlICJTZXJpYWxpemVkU2NyaXB0VmFsdWUuaCIKICNpbmNsdWRlICJTZXR0aW5ncy5oIgpAQCAt
NzY2LDYgKzc2NywxOCBAQCBib29sIEludGVybmFsczo6aXNUaW1lclRocm90dGxlZChpbnQgdGlt
ZW91dElkLCBFeGNlcHRpb25Db2RlJiBlYykKICAgICByZXR1cm4gdGltZXItPm1fdGhyb3R0bGVT
dGF0ZSA9PSBET01UaW1lcjo6U2hvdWxkVGhyb3R0bGU7CiB9CiAKK2Jvb2wgSW50ZXJuYWxzOjpp
c1JlcXVlc3RBbmltYXRpb25GcmFtZVRocm90dGxlZCgpIGNvbnN0Cit7CisjaWYgRU5BQkxFKFJF
UVVFU1RfQU5JTUFUSU9OX0ZSQU1FKQorICAgIGF1dG8qIHNjcmlwdGVkQW5pbWF0aW9uQ29udHJv
bGxlciA9IGNvbnRleHREb2N1bWVudCgpLT5zY3JpcHRlZEFuaW1hdGlvbkNvbnRyb2xsZXIoKTsK
KyAgICBpZiAoIXNjcmlwdGVkQW5pbWF0aW9uQ29udHJvbGxlcikKKyAgICAgICAgcmV0dXJuIGZh
bHNlOworICAgIHJldHVybiBzY3JpcHRlZEFuaW1hdGlvbkNvbnRyb2xsZXItPmlzVGhyb3R0bGVk
KCk7CisjZWxzZQorICAgIHJldHVybiBmYWxzZTsKKyNlbmRpZgorfQorCiBTdHJpbmcgSW50ZXJu
YWxzOjp2aXNpYmxlUGxhY2Vob2xkZXIoRWxlbWVudCogZWxlbWVudCkKIHsKICAgICBpZiAoaXM8
SFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQ+KGVsZW1lbnQpKSB7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5oIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9J
bnRlcm5hbHMuaAppbmRleCAwOTQxMjI5NjE5MjIxNzJmN2RiNzE3NWJkZjg5OGE2NzhjYWJkYTIz
Li4xMmQ2Zjg3NDMyZWFmNWYxMDIyMmY3YjNjY2I1MDNhZWViYzZhMWQ2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rl
c3RpbmcvSW50ZXJuYWxzLmgKQEAgLTExMyw2ICsxMTMsNyBAQCBwdWJsaWM6CiAKICAgICAvLyBE
T01UaW1lcnMgdGhyb3R0bGluZyB0ZXN0aW5nLgogICAgIGJvb2wgaXNUaW1lclRocm90dGxlZChp
bnQgdGltZW91dElkLCBFeGNlcHRpb25Db2RlJik7CisgICAgYm9vbCBpc1JlcXVlc3RBbmltYXRp
b25GcmFtZVRocm90dGxlZCgpIGNvbnN0OwogCiAgICAgLy8gU3BhdGlhbCBOYXZpZ2F0aW9uIHRl
c3RpbmcuCiAgICAgdW5zaWduZWQgbGFzdFNwYXRpYWxOYXZpZ2F0aW9uQ2FuZGlkYXRlQ291bnQo
RXhjZXB0aW9uQ29kZSYpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGlu
Zy9JbnRlcm5hbHMuaWRsIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaWRsCmlu
ZGV4IDFiMDA5ODA0NGYzMTM2MjdlYzNhZTNhZmJkY2QyYjc0ZTIwYWNiMjcuLjZkMjMyOTllMjY0
ZGY0NTIxZTkwNWM1NGY4MGRiYTkyN2QxZmJmYzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3Rlc3RpbmcvSW50ZXJuYWxzLmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVy
bmFscy5pZGwKQEAgLTI3OSw2ICsyNzksOCBAQCBlbnVtIFJlc291cmNlTG9hZFByaW9yaXR5IHsK
ICAgICAvLyBRdWVyeSBpZiBhIHRpbWVyIGlzIGN1cnJlbnRseSB0aHJvdHRsZWQsIHRvIGRlYnVn
IHRpbWVyIHRocm90dGxpbmcuCiAgICAgW1JhaXNlc0V4Y2VwdGlvbl0gYm9vbGVhbiBpc1RpbWVy
VGhyb3R0bGVkKGxvbmcgdGltZXJIYW5kbGUpOwogCisgICAgYm9vbGVhbiBpc1JlcXVlc3RBbmlt
YXRpb25GcmFtZVRocm90dGxlZCgpOworCiAgICAgW1JhaXNlc0V4Y2VwdGlvbl0gdm9pZCBzdGFy
dFRyYWNraW5nU3R5bGVSZWNhbGNzKCk7CiAgICAgW1JhaXNlc0V4Y2VwdGlvbl0gdW5zaWduZWQg
bG9uZyBzdHlsZVJlY2FsY0NvdW50KCk7CiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCBjZTZkMmQyOWQwMWNjYzA5M2E4OGJi
NGYzNTgxMjgxMzhjMmQwMDFhLi41MWUzNzQ1N2Y1ZTcxY2UyZWFjZTUxNDg2YjY3NzhlZTc2NTUy
YWE3IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMjggQEAKKzIwMTUtMDUtMDggIENocmlzIER1bWV6ICA8Y2R1
bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBUaHJvdHRsZSBSZXF1ZXN0QW5pbWF0aW9uRnJhbWUg
aW4gc3ViZnJhbWVzIHRoYXQgYXJlIG91dHNpZGUgdGhlIHZpZXdwb3J0CisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDQ3MTgKKyAgICAgICAgPHJkYXI6
Ly9wcm9ibGVtLzIwNjg4NzgyPgorCisgICAgICAgIFJldmlld2VkIGJ5IFNpbW9uIEZyYXNlci4K
KworICAgICAgICAqIGZhc3QvYW5pbWF0aW9uL3JlcXVlc3QtYW5pbWF0aW9uLWZyYW1lLXRocm90
dGxlLXN1YmZyYW1lLWRpc3BsYXktbm9uZS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAq
IGZhc3QvYW5pbWF0aW9uL3JlcXVlc3QtYW5pbWF0aW9uLWZyYW1lLXRocm90dGxlLXN1YmZyYW1l
LWRpc3BsYXktbm9uZS5odG1sOiBBZGRlZC4KKyAgICAgICAgQWRkIGxheW91dCB0ZXN0IHRvIHRl
c3QgdGhhdCBSZXF1ZXN0QW5pbWF0aW9uRnJhbWUgaXMgcHJvcGVybHkgdGhyb3R0bGVkCisgICAg
ICAgIGluICJkaXNwbGF5OiBub25lIiBzdWJmcmFtZXMuCisKKyAgICAgICAgKiBmYXN0L2FuaW1h
dGlvbi9yZXF1ZXN0LWFuaW1hdGlvbi1mcmFtZS10aHJvdHRsZS1zdWJmcmFtZS1leHBlY3RlZC50
eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvYW5pbWF0aW9uL3JlcXVlc3QtYW5pbWF0aW9uLWZy
YW1lLXRocm90dGxlLXN1YmZyYW1lLmh0bWw6IEFkZGVkLgorICAgICAgICBBZGQgbGF5b3V0IHRl
c3QgdG8gdGVzdCB0aGF0IFJlcXVlc3RBbmltYXRpb25GcmFtZSBpcyBwcm9wZXJseSB0aHJvdHRs
ZWQKKyAgICAgICAgaW4gZnJhbWVzIHRoYXQgYXJlIG91dHNpZGUgdGhlIHZpZXdwb3J0LgorCisg
ICAgICAgICogZmFzdC9hbmltYXRpb24vcmVzb3VyY2VzL3JlcXVlc3RBbmltYXRpb25GcmFtZS1m
cmFtZS0yLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvYW5pbWF0aW9uL3Jlc291cmNlcy9y
ZXF1ZXN0QW5pbWF0aW9uRnJhbWUtZnJhbWUuaHRtbDogQWRkZWQuCisKKyAgICAgICAgKiBwbGF0
Zm9ybS93aW4vVGVzdEV4cGVjdGF0aW9uczoKKyAgICAgICAgU2tpcCB0aGUgMiBuZXcgdGVzdHMg
b24gV2luZG93cyBhcyByZXF1ZXN0QW5pbWF0aW9uRnJhbWUgdGhyb3R0bGluZyBpcworICAgICAg
ICBvbmx5IHN1cHBvcnRlZCBvbiBDb2NvYS4KKwogMjAxNS0wNS0wOCAgSHl1bmd3b29rIExlZSAg
PGh5dW5nd29vay5sZWVAbmF2ZXJjb3JwLmNvbT4KIAogICAgICAgICBbV2luXSBVbnNraXAgcGFz
c2luZyB0ZXN0IGNhc2UgYWZ0ZXIgcjE4Mzk4MQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFz
dC9hbmltYXRpb24vcmVxdWVzdC1hbmltYXRpb24tZnJhbWUtdGhyb3R0bGUtc3ViZnJhbWUtZGlz
cGxheS1ub25lLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvYW5pbWF0aW9uL3JlcXVl
c3QtYW5pbWF0aW9uLWZyYW1lLXRocm90dGxlLXN1YmZyYW1lLWRpc3BsYXktbm9uZS1leHBlY3Rl
ZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uMDJkMGY1MDlhMzZmMDM1ZjkzYmI2MWYyM2I0MDAyNDc5YjA5MmI0
MQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvYW5pbWF0aW9uL3JlcXVlc3Qt
YW5pbWF0aW9uLWZyYW1lLXRocm90dGxlLXN1YmZyYW1lLWRpc3BsYXktbm9uZS1leHBlY3RlZC50
eHQKQEAgLTAsMCArMSwxOSBAQAorVGVzdHMgdGhhdCByZXF1ZXN0QW5pbWF0aW9uRnJhbWUgaXMg
dGhyb3R0bGVkIGluIHN1YmZyYW1lcyB0aGF0IGFyZSBkaXNwbGF5Om5vbmUKKworT24gc3VjY2Vz
cywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkg
IlRFU1QgQ09NUExFVEUiLgorCisKK0ZyYW1lIGlzIGluaXRpYWxseSB2aXNpYmlsZSBzbyByZXF1
ZXN0QW5pbWF0aW9uRnJhbWUgc2hvdWxkIG5vdCBiZSB0aHJvdHRsZWQKK1BBU1MgdGVzdEZyYW1l
LmNvbnRlbnRXaW5kb3cuaW50ZXJuYWxzLmlzUmVxdWVzdEFuaW1hdGlvbkZyYW1lVGhyb3R0bGVk
KCkgYmVjYW1lIGZhbHNlCitQQVNTIHRlc3RGcmFtZS5jb250ZW50V2luZG93LmludGVybmFscy5p
c1JlcXVlc3RBbmltYXRpb25GcmFtZVRocm90dGxlZCgpIGlzIGZhbHNlCitIaWRpbmcgc3ViZnJh
bWUuCit0ZXN0RnJhbWUuc3R5bGUuZGlzcGxheSA9ICdub25lJzsKK1BBU1MgdGVzdEZyYW1lLmNv
bnRlbnRXaW5kb3cuaW50ZXJuYWxzLmlzUmVxdWVzdEFuaW1hdGlvbkZyYW1lVGhyb3R0bGVkKCkg
YmVjYW1lIHRydWUKK1BBU1MgdGVzdEZyYW1lLmNvbnRlbnRXaW5kb3cuaW50ZXJuYWxzLmlzUmVx
dWVzdEFuaW1hdGlvbkZyYW1lVGhyb3R0bGVkKCkgaXMgdHJ1ZQorU2hvdyBzdWJmcmFtZSBhZ2Fp
bgordGVzdEZyYW1lLnN0eWxlLmRpc3BsYXkgPSAnYmxvY2snOworUEFTUyB0ZXN0RnJhbWUuY29u
dGVudFdpbmRvdy5pbnRlcm5hbHMuaXNSZXF1ZXN0QW5pbWF0aW9uRnJhbWVUaHJvdHRsZWQoKSBi
ZWNhbWUgZmFsc2UKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01Q
TEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2FuaW1hdGlvbi9yZXF1ZXN0LWFu
aW1hdGlvbi1mcmFtZS10aHJvdHRsZS1zdWJmcmFtZS1kaXNwbGF5LW5vbmUuaHRtbCBiL0xheW91
dFRlc3RzL2Zhc3QvYW5pbWF0aW9uL3JlcXVlc3QtYW5pbWF0aW9uLWZyYW1lLXRocm90dGxlLXN1
YmZyYW1lLWRpc3BsYXktbm9uZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmU4ZDExY2Y5MmJmNzcxOTQ0Njgy
MjUwMmMzZmJjMGMxMWZmYTE4ZGEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0
L2FuaW1hdGlvbi9yZXF1ZXN0LWFuaW1hdGlvbi1mcmFtZS10aHJvdHRsZS1zdWJmcmFtZS1kaXNw
bGF5LW5vbmUuaHRtbApAQCAtMCwwICsxLDQ0IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgor
PGJvZHk+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3Nj
cmlwdD4KKzxzY3JpcHQ+CitkZXNjcmlwdGlvbigiVGVzdHMgdGhhdCByZXF1ZXN0QW5pbWF0aW9u
RnJhbWUgaXMgdGhyb3R0bGVkIGluIHN1YmZyYW1lcyB0aGF0IGFyZSBkaXNwbGF5Om5vbmUiKTsK
K3dpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKworZnVuY3Rpb24gY2hlY2tTdWJmcmFtZVRo
cm90dGxlZCgpCit7CisgICAgc2hvdWxkQmVUcnVlKCJ0ZXN0RnJhbWUuY29udGVudFdpbmRvdy5p
bnRlcm5hbHMuaXNSZXF1ZXN0QW5pbWF0aW9uRnJhbWVUaHJvdHRsZWQoKSIpOworCisgICAgZGVi
dWcoIlNob3cgc3ViZnJhbWUgYWdhaW4iKTsKKyAgICBldmFsQW5kTG9nKCJ0ZXN0RnJhbWUuc3R5
bGUuZGlzcGxheSA9ICdibG9jayc7Iik7CisKKyAgICBzaG91bGRCZWNvbWVFcXVhbCgidGVzdEZy
YW1lLmNvbnRlbnRXaW5kb3cuaW50ZXJuYWxzLmlzUmVxdWVzdEFuaW1hdGlvbkZyYW1lVGhyb3R0
bGVkKCkiLCAiZmFsc2UiLCBmaW5pc2hKU1Rlc3QpOworfQorCitmdW5jdGlvbiBoaWRlRnJhbWUo
KQoreworICAgIHNob3VsZEJlRmFsc2UoInRlc3RGcmFtZS5jb250ZW50V2luZG93LmludGVybmFs
cy5pc1JlcXVlc3RBbmltYXRpb25GcmFtZVRocm90dGxlZCgpIik7CisKKyAgICBkZWJ1ZygiSGlk
aW5nIHN1YmZyYW1lLiIpOworICAgIGV2YWxBbmRMb2coInRlc3RGcmFtZS5zdHlsZS5kaXNwbGF5
ID0gJ25vbmUnOyIpOworCisgICAgc2hvdWxkQmVjb21lRXF1YWwoInRlc3RGcmFtZS5jb250ZW50
V2luZG93LmludGVybmFscy5pc1JlcXVlc3RBbmltYXRpb25GcmFtZVRocm90dGxlZCgpIiwgInRy
dWUiLCBjaGVja1N1YmZyYW1lVGhyb3R0bGVkKTsKK30KKworZnVuY3Rpb24gcnVuVGVzdCgpCit7
CisgICAgdGVzdEZyYW1lID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInRlc3RGcmFtZSIpOwor
ICAgIGRlYnVnKCJGcmFtZSBpcyBpbml0aWFsbHkgdmlzaWJpbGUgc28gcmVxdWVzdEFuaW1hdGlv
bkZyYW1lIHNob3VsZCBub3QgYmUgdGhyb3R0bGVkIik7CisgICAgc2hvdWxkQmVjb21lRXF1YWwo
InRlc3RGcmFtZS5jb250ZW50V2luZG93LmludGVybmFscy5pc1JlcXVlc3RBbmltYXRpb25GcmFt
ZVRocm90dGxlZCgpIiwgImZhbHNlIiwgaGlkZUZyYW1lKTsKK30KKwordmFyIGkgPSAwOworcmVx
dWVzdEFuaW1hdGlvbkZyYW1lKGZ1bmN0aW9uKCkgeworICAgIGkrKzsKK30pOworPC9zY3JpcHQ+
Cis8aWZyYW1lIGlkPSJ0ZXN0RnJhbWUiIHNyYz0icmVzb3VyY2VzL3JlcXVlc3RBbmltYXRpb25G
cmFtZS1mcmFtZS5odG1sIiBvbmxvYWQ9InJ1blRlc3QoKSI+PC9pZnJhbWU+Cis8c2NyaXB0IHNy
Yz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8
L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2FuaW1hdGlvbi9yZXF1ZXN0LWFu
aW1hdGlvbi1mcmFtZS10aHJvdHRsZS1zdWJmcmFtZS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0
cy9mYXN0L2FuaW1hdGlvbi9yZXF1ZXN0LWFuaW1hdGlvbi1mcmFtZS10aHJvdHRsZS1zdWJmcmFt
ZS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDU5ODNiMzMxMzI4MzM0MjI1YmM4ODVkOGU0ZThi
YzIyYjQ2Y2E4YwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvYW5pbWF0aW9u
L3JlcXVlc3QtYW5pbWF0aW9uLWZyYW1lLXRocm90dGxlLXN1YmZyYW1lLWV4cGVjdGVkLnR4dApA
QCAtMCwwICsxLDI0IEBACitUZXN0cyB0aGF0IHJlcXVlc3RBbmltYXRpb25GcmFtZSBpcyB0aHJv
dHRsZWQgaW4gc3ViZnJhbWVzIHRoYXQgYXJlIG91dHNpZGUgdGhlIHZpZXdwb3J0CisKK09uIHN1
Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2Vk
IGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitGcmFtZSBpcyBpbml0aWFsbHkgb3V0c2lkZSB0aGUg
dmlld3BvcnQgc28gcmVxdWVzdEFuaW1hdGlvbkZyYW1lIHNob3VsZCBiZSB0aHJvdHRsZWQKK1BB
U1MgdGVzdEZyYW1lLmNvbnRlbnRXaW5kb3cuaW50ZXJuYWxzLmlzUmVxdWVzdEFuaW1hdGlvbkZy
YW1lVGhyb3R0bGVkKCkgYmVjYW1lIHRydWUKK1BBU1MgaW50ZXJuYWxzLmlzUmVxdWVzdEFuaW1h
dGlvbkZyYW1lVGhyb3R0bGVkKCkgaXMgZmFsc2UKK1BBU1MgdGVzdEZyYW1lLmNvbnRlbnRXaW5k
b3cuaW50ZXJuYWxzLmlzUmVxdWVzdEFuaW1hdGlvbkZyYW1lVGhyb3R0bGVkKCkgaXMgdHJ1ZQor
UEFTUyBncmFuZENoaWxkRnJhbWUuY29udGVudFdpbmRvdy5pbnRlcm5hbHMuaXNSZXF1ZXN0QW5p
bWF0aW9uRnJhbWVUaHJvdHRsZWQoKSBpcyB0cnVlCitTY3JvbGxpbmcgZnJhbWUgaW50byB2aWV3
LgorUmVxdWVzdEFuaW1hdGlvbkZyYW1lIHNob3VsZCBubyBsb25nZXIgYmUgdGhyb3R0bGVkCitQ
QVNTIGludGVybmFscy5pc1JlcXVlc3RBbmltYXRpb25GcmFtZVRocm90dGxlZCgpIGlzIGZhbHNl
CitQQVNTIGdyYW5kQ2hpbGRGcmFtZS5jb250ZW50V2luZG93LmludGVybmFscy5pc1JlcXVlc3RB
bmltYXRpb25GcmFtZVRocm90dGxlZCgpIGlzIGZhbHNlCitQQVNTIHRlc3RGcmFtZS5jb250ZW50
V2luZG93LmludGVybmFscy5pc1JlcXVlc3RBbmltYXRpb25GcmFtZVRocm90dGxlZCgpIGlzIGZh
bHNlCitTY3JvbGxpbmcgZnJhbWUgb3V0IG9mIHZpZXcgYWdhaW4uCitQQVNTIGludGVybmFscy5p
c1JlcXVlc3RBbmltYXRpb25GcmFtZVRocm90dGxlZCgpIGlzIGZhbHNlCitQQVNTIHRlc3RGcmFt
ZS5jb250ZW50V2luZG93LmludGVybmFscy5pc1JlcXVlc3RBbmltYXRpb25GcmFtZVRocm90dGxl
ZCgpIGJlY2FtZSB0cnVlCitQQVNTIHRlc3RGcmFtZS5jb250ZW50V2luZG93LmludGVybmFscy5p
c1JlcXVlc3RBbmltYXRpb25GcmFtZVRocm90dGxlZCgpIGlzIHRydWUKK1BBU1MgZ3JhbmRDaGls
ZEZyYW1lLmNvbnRlbnRXaW5kb3cuaW50ZXJuYWxzLmlzUmVxdWVzdEFuaW1hdGlvbkZyYW1lVGhy
b3R0bGVkKCkgaXMgdHJ1ZQorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNU
IENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvYW5pbWF0aW9uL3JlcXVl
c3QtYW5pbWF0aW9uLWZyYW1lLXRocm90dGxlLXN1YmZyYW1lLmh0bWwgYi9MYXlvdXRUZXN0cy9m
YXN0L2FuaW1hdGlvbi9yZXF1ZXN0LWFuaW1hdGlvbi1mcmFtZS10aHJvdHRsZS1zdWJmcmFtZS5o
dG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLmY4OTQwZjNlZDg5YTBhNTE1ZmVmZGFkNWUwMmFmYzFhN2E1NGUzZjYK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2FuaW1hdGlvbi9yZXF1ZXN0LWFu
aW1hdGlvbi1mcmFtZS10aHJvdHRsZS1zdWJmcmFtZS5odG1sCkBAIC0wLDAgKzEsNjEgQEAKKzwh
RE9DVFlQRSBodG1sPgorPGh0bWw+Cis8Ym9keT4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJj
ZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdD4KK2Rlc2NyaXB0aW9uKCJUZXN0
cyB0aGF0IHJlcXVlc3RBbmltYXRpb25GcmFtZSBpcyB0aHJvdHRsZWQgaW4gc3ViZnJhbWVzIHRo
YXQgYXJlIG91dHNpZGUgdGhlIHZpZXdwb3J0Iik7Cit3aW5kb3cuanNUZXN0SXNBc3luYyA9IHRy
dWU7CisKK2Z1bmN0aW9uIGNoZWNrU3ViZnJhbWVzVGhyb3R0bGVkKCkKK3sKKyAgICBzaG91bGRC
ZVRydWUoInRlc3RGcmFtZS5jb250ZW50V2luZG93LmludGVybmFscy5pc1JlcXVlc3RBbmltYXRp
b25GcmFtZVRocm90dGxlZCgpIik7CisgICAgc2hvdWxkQmVUcnVlKCJncmFuZENoaWxkRnJhbWUu
Y29udGVudFdpbmRvdy5pbnRlcm5hbHMuaXNSZXF1ZXN0QW5pbWF0aW9uRnJhbWVUaHJvdHRsZWQo
KSIpOworCisgICAgZmluaXNoSlNUZXN0KCk7Cit9CisKK2Z1bmN0aW9uIHNjcm9sbEZyYW1lT3V0
T2ZWaWV3KCkKK3sKKyAgICBkZWJ1ZygiU2Nyb2xsaW5nIGZyYW1lIG91dCBvZiB2aWV3IGFnYWlu
LiIpOworICAgIHdpbmRvdy5zY3JvbGwoMCwgMCk7CisKKyAgICBzaG91bGRCZUZhbHNlKCJpbnRl
cm5hbHMuaXNSZXF1ZXN0QW5pbWF0aW9uRnJhbWVUaHJvdHRsZWQoKSIpOworICAgIHNob3VsZEJl
Y29tZUVxdWFsKCJ0ZXN0RnJhbWUuY29udGVudFdpbmRvdy5pbnRlcm5hbHMuaXNSZXF1ZXN0QW5p
bWF0aW9uRnJhbWVUaHJvdHRsZWQoKSIsICJ0cnVlIiwgY2hlY2tTdWJmcmFtZXNUaHJvdHRsZWQp
OworfQorCitmdW5jdGlvbiBzY3JvbGxGcmFtZUludG9WaWV3KCkKK3sKKyAgICBzaG91bGRCZUZh
bHNlKCJpbnRlcm5hbHMuaXNSZXF1ZXN0QW5pbWF0aW9uRnJhbWVUaHJvdHRsZWQoKSIpOworICAg
IHNob3VsZEJlVHJ1ZSgidGVzdEZyYW1lLmNvbnRlbnRXaW5kb3cuaW50ZXJuYWxzLmlzUmVxdWVz
dEFuaW1hdGlvbkZyYW1lVGhyb3R0bGVkKCkiKTsKKyAgICBzaG91bGRCZVRydWUoImdyYW5kQ2hp
bGRGcmFtZS5jb250ZW50V2luZG93LmludGVybmFscy5pc1JlcXVlc3RBbmltYXRpb25GcmFtZVRo
cm90dGxlZCgpIik7CisKKyAgICBkZWJ1ZygiU2Nyb2xsaW5nIGZyYW1lIGludG8gdmlldy4iKTsK
KyAgICB3aW5kb3cuaW50ZXJuYWxzLnNjcm9sbEVsZW1lbnRUb1JlY3QodGVzdEZyYW1lLCAwLCAw
LCAzMDAsIDMwMCk7CisKKyAgICBkZWJ1ZygiUmVxdWVzdEFuaW1hdGlvbkZyYW1lIHNob3VsZCBu
byBsb25nZXIgYmUgdGhyb3R0bGVkIik7CisgICAgc2hvdWxkQmVGYWxzZSgiaW50ZXJuYWxzLmlz
UmVxdWVzdEFuaW1hdGlvbkZyYW1lVGhyb3R0bGVkKCkiKTsKKyAgICBzaG91bGRCZUZhbHNlKCJn
cmFuZENoaWxkRnJhbWUuY29udGVudFdpbmRvdy5pbnRlcm5hbHMuaXNSZXF1ZXN0QW5pbWF0aW9u
RnJhbWVUaHJvdHRsZWQoKSIpOworICAgIHNob3VsZEJlRmFsc2UoInRlc3RGcmFtZS5jb250ZW50
V2luZG93LmludGVybmFscy5pc1JlcXVlc3RBbmltYXRpb25GcmFtZVRocm90dGxlZCgpIik7CisK
KyAgICBzY3JvbGxGcmFtZU91dE9mVmlldygpOworfQorCitmdW5jdGlvbiBydW5UZXN0KCkKK3sK
KyAgICB0ZXN0RnJhbWUgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgidGVzdEZyYW1lIik7Cisg
ICAgZ3JhbmRDaGlsZEZyYW1lID0gdGVzdEZyYW1lLmNvbnRlbnREb2N1bWVudC5nZXRFbGVtZW50
QnlJZCgiZ3JhbmRDaGlsZEZyYW1lIik7CisgICAgZGVidWcoIkZyYW1lIGlzIGluaXRpYWxseSBv
dXRzaWRlIHRoZSB2aWV3cG9ydCBzbyByZXF1ZXN0QW5pbWF0aW9uRnJhbWUgc2hvdWxkIGJlIHRo
cm90dGxlZCIpOworICAgIHNob3VsZEJlY29tZUVxdWFsKCJ0ZXN0RnJhbWUuY29udGVudFdpbmRv
dy5pbnRlcm5hbHMuaXNSZXF1ZXN0QW5pbWF0aW9uRnJhbWVUaHJvdHRsZWQoKSIsICJ0cnVlIiwg
c2Nyb2xsRnJhbWVJbnRvVmlldyk7Cit9CisKK3ZhciBpID0gMDsKK3JlcXVlc3RBbmltYXRpb25G
cmFtZShmdW5jdGlvbigpIHsKKyAgICBpKys7Cit9KTsKKzwvc2NyaXB0PgorPGRpdiBzdHlsZT0i
cG9zaXRpb246IHJlbGF0aXZlOyB3aWR0aDogMTYwMHB4OyBoZWlnaHQ6IDI0MDBweDsgYmFja2dy
b3VuZC1jb2xvcjogZ3JlZW47Ij4KKyAgICA8aWZyYW1lIGlkPSJ0ZXN0RnJhbWUiIHNyYz0icmVz
b3VyY2VzL3JlcXVlc3RBbmltYXRpb25GcmFtZS1mcmFtZS5odG1sIiBzdHlsZT0icG9zaXRpb246
YWJzb2x1dGU7IGxlZnQ6IDYwMHB4OyB0b3A6IDgwMHB4OyIgb25sb2FkPSJydW5UZXN0KCkiPjwv
aWZyYW1lPgorPC9kaXY+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcG9z
dC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9mYXN0L2FuaW1hdGlvbi9yZXNvdXJjZXMvcmVxdWVzdEFuaW1hdGlvbkZyYW1lLWZyYW1lLTIu
aHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvYW5pbWF0aW9uL3Jlc291cmNlcy9yZXF1ZXN0QW5pbWF0
aW9uRnJhbWUtZnJhbWUtMi5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjUxMTI1ZDk3MThhYzA2N2UxYzAxZTdi
MDUwMWY4NmFkZTI1MmM4MDIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2Fu
aW1hdGlvbi9yZXNvdXJjZXMvcmVxdWVzdEFuaW1hdGlvbkZyYW1lLWZyYW1lLTIuaHRtbApAQCAt
MCwwICsxLDExIEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGJvZHk+Cis8c2NyaXB0Pgor
dmFyIGkgPSAwOworcmVxdWVzdEFuaW1hdGlvbkZyYW1lKGZ1bmN0aW9uKCkgeworICBpKys7Cit9
KTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
ZmFzdC9hbmltYXRpb24vcmVzb3VyY2VzL3JlcXVlc3RBbmltYXRpb25GcmFtZS1mcmFtZS5odG1s
IGIvTGF5b3V0VGVzdHMvZmFzdC9hbmltYXRpb24vcmVzb3VyY2VzL3JlcXVlc3RBbmltYXRpb25G
cmFtZS1mcmFtZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmMwZDc2MzZlMmM0NTNjNTIzYWUxMjU5NjZjYTI3
NjRiYjk4NjI4YzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2FuaW1hdGlv
bi9yZXNvdXJjZXMvcmVxdWVzdEFuaW1hdGlvbkZyYW1lLWZyYW1lLmh0bWwKQEAgLTAsMCArMSwx
MiBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxib2R5PgorPGlmcmFtZSBpZD0iZ3JhbmRD
aGlsZEZyYW1lIiBzcmM9InJlcXVlc3RBbmltYXRpb25GcmFtZS1mcmFtZS0yLmh0bWwiPjwvaWZy
YW1lPgorPHNjcmlwdD4KK3ZhciBpID0gMDsKK3JlcXVlc3RBbmltYXRpb25GcmFtZShmdW5jdGlv
bigpIHsKKyAgaSsrOworfSk7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL3dpbi9UZXN0RXhwZWN0YXRpb25zIGIvTGF5b3V0VGVz
dHMvcGxhdGZvcm0vd2luL1Rlc3RFeHBlY3RhdGlvbnMKaW5kZXggZjlmNDEwZjY4MDM1NmI1YWRm
MzM1Zjk1ODI2OTkyMzJmYjM4MTJmYy4uMjQzN2ExZTA4MGYwNjViMmJlY2FlMjA0N2Q2OWJmMWM4
MmJmMGRiZSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2luL1Rlc3RFeHBlY3Rh
dGlvbnMKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2luL1Rlc3RFeHBlY3RhdGlvbnMKQEAg
LTI0OTYsNiArMjQ5NiwxMCBAQCB3ZWJraXQub3JnL2IvMTQwMjUwIGZhc3QvbG9hZGVyL3N0YXRl
b2JqZWN0cy9yZXBsYWNlc3RhdGUtaW4taWZyYW1lLmh0bWwgWyBGYWlsdQogd2Via2l0Lm9yZy9i
LzEzODY3NiBpbXBvcnRlZC93M2MvY2FudmFzLzJkLmxpbmUuam9pbi5wYXJhbGxlbC5odG1sIFsg
RmFpbHVyZSBdCiB3ZWJraXQub3JnL2IvMTM4Njc2IGltcG9ydGVkL3czYy9jYW52YXMvMmQuc3Ry
b2tlUmVjdC56ZXJvLjUuaHRtbCBbIEZhaWx1cmUgXQogCisjIHJlcXVlc3RBbmltYXRpb25GcmFt
ZSB0aHJvdHRsaW5nIGRvZXMgbm90IHdvcmsgb24gV2luZG93cyBiZWNhdXNlIFVTRShSRVFVRVNU
X0FOSU1BVElPTl9GUkFNRV9ESVNQTEFZX01PTklUT1IpIGlzIGRpc2FibGVkLgord2Via2l0Lm9y
Zy9iLzE0NDcxOCBmYXN0L2FuaW1hdGlvbi9yZXF1ZXN0LWFuaW1hdGlvbi1mcmFtZS10aHJvdHRs
ZS1zdWJmcmFtZS1kaXNwbGF5LW5vbmUuaHRtbCBbIFNraXAgXQord2Via2l0Lm9yZy9iLzE0NDcx
OCBmYXN0L2FuaW1hdGlvbi9yZXF1ZXN0LWFuaW1hdGlvbi1mcmFtZS10aHJvdHRsZS1zdWJmcmFt
ZS5odG1sIFsgU2tpcCBdCisKICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIFN0YXJ0IGxpc3Qgb2YgVU5SRVZJRVdFRCBmYWlsdXJlcyAjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMKICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>252728</attachid>
            <date>2015-05-08 10:08:21 -0700</date>
            <delta_ts>2015-05-08 11:17:21 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-144718-20150508100703.patch</filename>
            <type>text/plain</type>
            <size>25595</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTgzOTk0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggODNhNmQyZTkyZTZkMDJm
MDZiYTY3MzgwMWU3MGVkYjUwMzY2OGQ2Mi4uMGI3ZTQ0NTY0MmIyZjVjY2I4OGZiNjIxMjJkYjY2
ZTMyMzhmYWY2MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ4IEBACisyMDE1LTA1LTA4ICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgVGhyb3R0bGUgUmVxdWVzdEFu
aW1hdGlvbkZyYW1lIGluIHN1YmZyYW1lcyB0aGF0IGFyZSBvdXRzaWRlIHRoZSB2aWV3cG9ydAor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ0NzE4Cisg
ICAgICAgIDxyZGFyOi8vcHJvYmxlbS8yMDY4ODc4Mj4KKworICAgICAgICBSZXZpZXdlZCBieSBT
aW1vbiBGcmFzZXIuCisKKyAgICAgICAgVGhyb3R0bGUgUmVxdWVzdEFuaW1hdGlvbkZyYW1lIGlu
IHN1YmZyYW1lcyB0aGF0IGFyZSBvdXRzaWRlIHRoZQorICAgICAgICB2aWV3cG9ydCBvciBoYXZl
ICJkaXNwbGF5OiBub25lIiBmb3IgcGVyZm9ybWFuY2UgYW5kIHBvd2VyLgorCisgICAgICAgIFRl
c3RzOiBmYXN0L2FuaW1hdGlvbi9yZXF1ZXN0LWFuaW1hdGlvbi1mcmFtZS10aHJvdHRsZS1zdWJm
cmFtZS1kaXNwbGF5LW5vbmUuaHRtbAorICAgICAgICAgICAgICAgZmFzdC9hbmltYXRpb24vcmVx
dWVzdC1hbmltYXRpb24tZnJhbWUtdGhyb3R0bGUtc3ViZnJhbWUuaHRtbAorCisgICAgICAgICog
ZG9tL0RvY3VtZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6c2NyaXB0ZWRBbmlt
YXRpb25Db250cm9sbGVyKToKKyAgICAgICAgKiBkb20vU2NyaXB0ZWRBbmltYXRpb25Db250cm9s
bGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdGVkQW5pbWF0aW9uQ29udHJvbGxlcjo6
c2V0VGhyb3R0bGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdGVkQW5pbWF0aW9uQ29udHJv
bGxlcjo6aXNUaHJvdHRsZWQpOgorICAgICAgICAqIGRvbS9TY3JpcHRlZEFuaW1hdGlvbkNvbnRy
b2xsZXIuaDoKKyAgICAgICAgKiBsb2FkZXIvRnJhbWVMb2FkZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6RnJhbWVMb2FkZXI6Om9wZW4pOgorICAgICAgICBDYWxsIEZyYW1lVmlldzo6c2V0RnJh
bWVSZWN0KCkgb25seSAqYWZ0ZXIqIHRoZSB2aWV3IGhhcyBiZWVuCisgICAgICAgIHNldCBvbiB0
aGUgRnJhbWUuIE90aGVyd2lzZSwgc2V0RnJhbWVSZWN0KCkgZW5kcyB1cCBjYWxsaW5nCisgICAg
ICAgIHZpZXdwb3J0Q29udGVudHNDaGFuZ2VkKCkgYW5kIHdlIGhpdCB0aGUKKyAgICAgICAgQVNT
RVJUKGZyYW1lKCkudmlldygpID09IHRoaXMpIGFzc2VydGlvbiBpbiB3aW5kb3dDbGlwUmVjdCgp
CisgICAgICAgIGJlY2F1c2UgdGhlIEZyYW1lIHN0aWxsIGhhcyBpdHMgb2xkIEZyYW1lVmlldy4g
VGhpcyBpcyBjb3ZlcmVkCisgICAgICAgIGJ5IGxvYWRlci9nby1iYWNrLXRvLWRpZmZlcmVudC13
aW5kb3ctc2l6ZS5odG1sIGxheW91dCB0ZXN0LgorCisgICAgICAgICogcGFnZS9GcmFtZVZpZXcu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVWaWV3Ojp2aWV3cG9ydENvbnRlbnRzQ2hhbmdl
ZCk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZVZpZXc6OmFwcGx5UmVjdXJzaXZlbHlXaXRoVmlz
aWJsZVJlY3QpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVWaWV3OjpyZXN1bWVWaXNpYmxlSW1h
Z2VBbmltYXRpb25zKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lVmlldzo6dXBkYXRlU2NyaXB0
ZWRBbmltYXRpb25zVGhyb3R0bGluZ1N0YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lVmll
dzo6cmVzdW1lVmlzaWJsZUltYWdlQW5pbWF0aW9uc0luY2x1ZGluZ1N1YmZyYW1lcyk6CisgICAg
ICAgIChXZWJDb3JlOjpGcmFtZVZpZXc6OnVwZGF0ZVRocm90dGxlZERPTVRpbWVyc1N0YXRlKToK
KyAgICAgICAgKFdlYkNvcmU6OkZyYW1lVmlldzo6c2Nyb2xsUG9zaXRpb25DaGFuZ2VkKTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lVmlldzo6c2VuZFJlc2l6ZUV2ZW50SWZOZWVk
ZWQpOiBEZWxldGVkLgorICAgICAgICAqIHBhZ2UvRnJhbWVWaWV3Lmg6CisgICAgICAgICogdGVz
dGluZy9JbnRlcm5hbHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW50ZXJuYWxzOjppc1JlcXVl
c3RBbmltYXRpb25GcmFtZVRocm90dGxlZCk6CisgICAgICAgIChXZWJDb3JlOjpJbnRlcm5hbHM6
OmlzVGltZXJUaHJvdHRsZWQpOiBEZWxldGVkLgorICAgICAgICAqIHRlc3RpbmcvSW50ZXJuYWxz
Lmg6CisgICAgICAgICogdGVzdGluZy9JbnRlcm5hbHMuaWRsOgorCiAyMDE1LTA1LTA4ICBYYWJp
ZXIgUm9kcmlndWV6IENhbHZhciAgPGNhbHZhcmlzQGlnYWxpYS5jb20+IGFuZCBZb3Vlbm4gRmFi
bGV0IDx5b3Vlbm4uZmFibGV0QGNyZi5jYW5vbi5mcj4KIAogICAgICAgICBbU3RyZWFtcyBBUEld
IFJlYWRhYmxlU3RyZWFtIGNvbnN0cnVjdG9yIHN0YXJ0IGZ1bmN0aW9uIHNob3VsZCBiZSBhYmxl
IHRvIGVycm9yIHRoZSBzdHJlYW0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1
bWVudC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKaW5kZXggYmVmYjVhNTI5NjMw
NGQ1Y2M3NTM2N2YyMTk5ZDNmNmJhNjg2YTgwYS4uY2MxYzAzOGM1MWM3OWQ3MWY2NzM2M2YxMTFh
ZmRkMzQwNzA3YjlhNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKQEAgLTk0OCw2ICs5NDgsOSBAQCBw
dWJsaWM6CiAKICAgICB2aXJ0dWFsIHZvaWQgcG9zdFRhc2soVGFzaykgb3ZlcnJpZGUgZmluYWw7
IC8vIEV4ZWN1dGVzIHRoZSB0YXNrIG9uIGNvbnRleHQncyB0aHJlYWQgYXN5bmNocm9ub3VzbHku
CiAKKyNpZiBFTkFCTEUoUkVRVUVTVF9BTklNQVRJT05fRlJBTUUpCisgICAgU2NyaXB0ZWRBbmlt
YXRpb25Db250cm9sbGVyKiBzY3JpcHRlZEFuaW1hdGlvbkNvbnRyb2xsZXIoKSB7IHJldHVybiBt
X3NjcmlwdGVkQW5pbWF0aW9uQ29udHJvbGxlci5nZXQoKTsgfQorI2VuZGlmCiAgICAgdm9pZCBz
dXNwZW5kU2NyaXB0ZWRBbmltYXRpb25Db250cm9sbGVyQ2FsbGJhY2tzKCk7CiAgICAgdm9pZCBy
ZXN1bWVTY3JpcHRlZEFuaW1hdGlvbkNvbnRyb2xsZXJDYWxsYmFja3MoKTsKICAgICB2b2lkIHNj
cmlwdGVkQW5pbWF0aW9uQ29udHJvbGxlclNldFRocm90dGxlZChib29sKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRlZEFuaW1hdGlvbkNvbnRyb2xsZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvZG9tL1NjcmlwdGVkQW5pbWF0aW9uQ29udHJvbGxlci5jcHAKaW5kZXggN2Vk
ZWJkNDQxMWNhYmQ5YzZmZmE0OWQ2YmYxYmM5YTUzMTRiMDNlNy4uMWIzOWJmMTZlMDM1MDNhYzNj
MjM3ZjQ0YjNmNWZlZmE1Njg2ZWU2MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1Nj
cmlwdGVkQW5pbWF0aW9uQ29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1Nj
cmlwdGVkQW5pbWF0aW9uQ29udHJvbGxlci5jcHAKQEAgLTM0LDYgKzM0LDggQEAKICNpbmNsdWRl
ICJEb2N1bWVudExvYWRlci5oIgogI2luY2x1ZGUgIkZyYW1lVmlldy5oIgogI2luY2x1ZGUgIklu
c3BlY3Rvckluc3RydW1lbnRhdGlvbi5oIgorI2luY2x1ZGUgIkxvZ2dpbmcuaCIKKyNpbmNsdWRl
ICJNYWluRnJhbWUuaCIKICNpbmNsdWRlICJSZXF1ZXN0QW5pbWF0aW9uRnJhbWVDYWxsYmFjay5o
IgogI2luY2x1ZGUgIlNldHRpbmdzLmgiCiAjaW5jbHVkZSA8d3RmL1JlZi5oPgpAQCAtODQsNiAr
ODYsOCBAQCB2b2lkIFNjcmlwdGVkQW5pbWF0aW9uQ29udHJvbGxlcjo6c2V0VGhyb3R0bGVkKGJv
b2wgaXNUaHJvdHRsZWQpCiAgICAgaWYgKG1faXNUaHJvdHRsZWQgPT0gaXNUaHJvdHRsZWQpCiAg
ICAgICAgIHJldHVybjsKIAorICAgIExPRyhBbmltYXRpb25zLCAiJXAgLSBTZXR0aW5nIFJlcXVl
c3RBbmltYXRpb25GcmFtZSB0aHJvdHRsaW5nIHN0YXRlIHRvICVkIGluIGZyYW1lICVwIChpc01h
aW5GcmFtZTogJWQpIiwgdGhpcywgaXNUaHJvdHRsZWQsIG1fZG9jdW1lbnQtPmZyYW1lKCksIG1f
ZG9jdW1lbnQtPmZyYW1lKCkgPyBtX2RvY3VtZW50LT5mcmFtZSgpLT5pc01haW5GcmFtZSgpIDog
MCk7CisKICAgICBtX2lzVGhyb3R0bGVkID0gaXNUaHJvdHRsZWQ7CiAgICAgaWYgKG1fYW5pbWF0
aW9uVGltZXIuaXNBY3RpdmUoKSkgewogICAgICAgICBtX2FuaW1hdGlvblRpbWVyLnN0b3AoKTsK
QEAgLTk0LDYgKzk4LDE1IEBAIHZvaWQgU2NyaXB0ZWRBbmltYXRpb25Db250cm9sbGVyOjpzZXRU
aHJvdHRsZWQoYm9vbCBpc1Rocm90dGxlZCkKICNlbmRpZgogfQogCitib29sIFNjcmlwdGVkQW5p
bWF0aW9uQ29udHJvbGxlcjo6aXNUaHJvdHRsZWQoKSBjb25zdAoreworI2lmIFVTRShSRVFVRVNU
X0FOSU1BVElPTl9GUkFNRV9USU1FUikgJiYgVVNFKFJFUVVFU1RfQU5JTUFUSU9OX0ZSQU1FX0RJ
U1BMQVlfTU9OSVRPUikKKyAgICByZXR1cm4gbV9pc1Rocm90dGxlZDsKKyNlbHNlCisgICAgcmV0
dXJuIGZhbHNlOworI2VuZGlmCit9CisKIFNjcmlwdGVkQW5pbWF0aW9uQ29udHJvbGxlcjo6Q2Fs
bGJhY2tJZCBTY3JpcHRlZEFuaW1hdGlvbkNvbnRyb2xsZXI6OnJlZ2lzdGVyQ2FsbGJhY2soUGFz
c1JlZlB0cjxSZXF1ZXN0QW5pbWF0aW9uRnJhbWVDYWxsYmFjaz4gY2FsbGJhY2spCiB7CiAgICAg
U2NyaXB0ZWRBbmltYXRpb25Db250cm9sbGVyOjpDYWxsYmFja0lkIGlkID0gKyttX25leHRDYWxs
YmFja0lkOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdGVkQW5pbWF0aW9u
Q29udHJvbGxlci5oIGIvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdGVkQW5pbWF0aW9uQ29udHJv
bGxlci5oCmluZGV4IDdiMjhlNzllYzg1YjRiYTFmMTZlMGU5YzE3ZDA1MzU3ZTJiMWQ0ZGIuLjg5
YWIwMTkxYjRjODJhODViYjQ1ZTMyZjA5MjQ5YjM4OTAyNGU1NDAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2RvbS9TY3JpcHRlZEFuaW1hdGlvbkNvbnRyb2xsZXIuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vU2NyaXB0ZWRBbmltYXRpb25Db250cm9sbGVyLmgKQEAgLTY4LDYgKzY4LDcg
QEAgcHVibGljOgogICAgIHZvaWQgc3VzcGVuZCgpOwogICAgIHZvaWQgcmVzdW1lKCk7CiAgICAg
dm9pZCBzZXRUaHJvdHRsZWQoYm9vbCk7CisgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBpc1Rocm90
dGxlZCgpIGNvbnN0OwogCiAgICAgdm9pZCB3aW5kb3dTY3JlZW5EaWRDaGFuZ2UoUGxhdGZvcm1E
aXNwbGF5SUQpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2Fk
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcAppbmRleCA0Nzkx
Y2Q4NGRiNDllMDFmMmRmYWNhY2RjYzMyMjdkZjkwMDNkMThmLi5lZDQ5NDhlMGMwY2Y2OWM3NzUw
ZDViZmJmNjE3YmYyMzFjMzZmN2UwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
RnJhbWVMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5j
cHAKQEAgLTIwNjgsMTAgKzIwNjgsMTIgQEAgdm9pZCBGcmFtZUxvYWRlcjo6b3BlbihDYWNoZWRG
cmFtZUJhc2UmIGNhY2hlZEZyYW1lKQogICAgIEFTU0VSVCh2aWV3KTsKICAgICB2aWV3LT5zZXRX
YXNTY3JvbGxlZEJ5VXNlcihmYWxzZSk7CiAKLSAgICAvLyBVc2UgdGhlIGN1cnJlbnQgU2Nyb2xs
VmlldydzIGZyYW1lIHJlY3QuCi0gICAgaWYgKG1fZnJhbWUudmlldygpKQotICAgICAgICB2aWV3
LT5zZXRGcmFtZVJlY3QobV9mcmFtZS52aWV3KCktPmZyYW1lUmVjdCgpKTsKKyAgICBPcHRpb25h
bDxJbnRSZWN0PiBwcmV2aW91c1ZpZXdGcmFtZVJlY3QgPSBtX2ZyYW1lLnZpZXcoKSA/ICBtX2Zy
YW1lLnZpZXcoKS0+ZnJhbWVSZWN0KCkgOiBPcHRpb25hbDxJbnRSZWN0PihOdWxsb3B0KTsKICAg
ICBtX2ZyYW1lLnNldFZpZXcodmlldyk7CisKKyAgICAvLyBVc2UgdGhlIHByZXZpb3VzIFNjcm9s
bFZpZXcncyBmcmFtZSByZWN0LgorICAgIGlmIChwcmV2aW91c1ZpZXdGcmFtZVJlY3QpCisgICAg
ICAgIHZpZXctPnNldEZyYW1lUmVjdChwcmV2aW91c1ZpZXdGcmFtZVJlY3QudmFsdWUoKSk7CiAg
ICAgCiAgICAgbV9mcmFtZS5zZXREb2N1bWVudChkb2N1bWVudCk7CiAgICAgZG9jdW1lbnQtPmRv
bVdpbmRvdygpLT5yZXN1bWVGcm9tUGFnZUNhY2hlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL0ZyYW1lVmlldy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5j
cHAKaW5kZXggYTcyMmExOTIwOGZiNmZlYjg3YWEzNGZkNjVhZjAzMDM1ZGJlMWYzMS4uODk1NWMx
OWRiNDQ5OGJmYjc5ZWYyOGY5MTJjYjVkZjUzODI1MGZkMSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVW
aWV3LmNwcApAQCAtODAsNiArODAsNyBAQAogI2luY2x1ZGUgIlJlbmRlcldpZGdldC5oIgogI2lu
Y2x1ZGUgIlNWR0RvY3VtZW50LmgiCiAjaW5jbHVkZSAiU1ZHU1ZHRWxlbWVudC5oIgorI2luY2x1
ZGUgIlNjcmlwdGVkQW5pbWF0aW9uQ29udHJvbGxlci5oIgogI2luY2x1ZGUgIlNjcm9sbEFuaW1h
dG9yLmgiCiAjaW5jbHVkZSAiU2Nyb2xsaW5nQ29vcmRpbmF0b3IuaCIKICNpbmNsdWRlICJTZXR0
aW5ncy5oIgpAQCAtMTc1NSwxMCArMTc1NiwxOCBAQCB2b2lkIEZyYW1lVmlldzo6ZGVsYXllZFNj
cm9sbEV2ZW50VGltZXJGaXJlZCgpCiAKIHZvaWQgRnJhbWVWaWV3Ojp2aWV3cG9ydENvbnRlbnRz
Q2hhbmdlZCgpCiB7CisgICAgaWYgKCFmcmFtZSgpLnZpZXcoKSkgeworICAgICAgICAvLyBUaGUg
ZnJhbWUgaXMgYmVpbmcgZGVzdHJveWVkLgorICAgICAgICByZXR1cm47CisgICAgfQorCiAgICAg
Ly8gV2hlbiB0aGUgdmlld3BvcnQgY29udGVudHMgY2hhbmdlcyAoc2Nyb2xsLCByZXNpemUsIHN0
eWxlIHJlY2FsYywgbGF5b3V0LCAuLi4pLAogICAgIC8vIGNoZWNrIGlmIHdlIHNob3VsZCByZXN1
bWUgYW5pbWF0ZWQgaW1hZ2VzIG9yIHVudGhyb3R0bGUgRE9NIHRpbWVycy4KLSAgICByZXN1bWVW
aXNpYmxlSW1hZ2VBbmltYXRpb25zSW5jbHVkaW5nU3ViZnJhbWVzKCk7Ci0gICAgdXBkYXRlVGhy
b3R0bGVkRE9NVGltZXJzU3RhdGUoKTsKKyAgICBhcHBseVJlY3Vyc2l2ZWx5V2l0aFZpc2libGVS
ZWN0KFtdIChGcmFtZVZpZXcmIGZyYW1lVmlldywgY29uc3QgSW50UmVjdCYgdmlzaWJsZVJlY3Qp
IHsKKyAgICAgICAgZnJhbWVWaWV3LnJlc3VtZVZpc2libGVJbWFnZUFuaW1hdGlvbnModmlzaWJs
ZVJlY3QpOworICAgICAgICBmcmFtZVZpZXcudXBkYXRlVGhyb3R0bGVkRE9NVGltZXJzU3RhdGUo
dmlzaWJsZVJlY3QpOworICAgICAgICBmcmFtZVZpZXcudXBkYXRlU2NyaXB0ZWRBbmltYXRpb25z
VGhyb3R0bGluZ1N0YXRlKHZpc2libGVSZWN0KTsKKyAgICB9KTsKIH0KIAogYm9vbCBGcmFtZVZp
ZXc6OmZpeGVkRWxlbWVudHNMYXlvdXRSZWxhdGl2ZVRvRnJhbWUoKSBjb25zdApAQCAtMjA5NSwy
OCArMjEwNCw2MCBAQCB2b2lkIEZyYW1lVmlldzo6c2Nyb2xsUG9zaXRpb25DaGFuZ2VkKGNvbnN0
IEludFBvaW50JiBvbGRQb3NpdGlvbiwgY29uc3QgSW50UG9pbgogICAgIHZpZXdwb3J0Q29udGVu
dHNDaGFuZ2VkKCk7CiB9CiAKLXZvaWQgRnJhbWVWaWV3OjpyZXN1bWVWaXNpYmxlSW1hZ2VBbmlt
YXRpb25zSW5jbHVkaW5nU3ViZnJhbWVzKCkKK3ZvaWQgRnJhbWVWaWV3OjphcHBseVJlY3Vyc2l2
ZWx5V2l0aFZpc2libGVSZWN0KGNvbnN0IHN0ZDo6ZnVuY3Rpb248dm9pZCAoRnJhbWVWaWV3JiBm
cmFtZVZpZXcsIGNvbnN0IEludFJlY3QmIHZpc2libGVSZWN0KT4mIGFwcGx5KQogewotICAgIGF1
dG8qIHJlbmRlclZpZXcgPSBmcmFtZSgpLmNvbnRlbnRSZW5kZXJlcigpOwotICAgIGlmICghcmVu
ZGVyVmlldykKLSAgICAgICAgcmV0dXJuOwotCiAgICAgSW50UmVjdCB3aW5kb3dDbGlwUmVjdCA9
IHRoaXMtPndpbmRvd0NsaXBSZWN0KCk7CiAgICAgYXV0byB2aXNpYmxlUmVjdCA9IHdpbmRvd1Rv
Q29udGVudHMod2luZG93Q2xpcFJlY3QpOwotICAgIGlmICh2aXNpYmxlUmVjdC5pc0VtcHR5KCkp
Ci0gICAgICAgIHJldHVybjsKLQotICAgIC8vIFJlc3VtZSBwYXVzZWQgaW1hZ2UgYW5pbWF0aW9u
cyBpbiB0aGlzIGZyYW1lLgotICAgIHJlbmRlclZpZXctPnJlc3VtZVBhdXNlZEltYWdlQW5pbWF0
aW9uc0lmTmVlZGVkKHZpc2libGVSZWN0KTsKKyAgICBhcHBseSgqdGhpcywgdmlzaWJsZVJlY3Qp
OwogCiAgICAgLy8gUmVjdXJzaXZlIGNhbGwgZm9yIHN1YmZyYW1lcy4gV2UgY2FjaGUgdGhlIGN1
cnJlbnQgRnJhbWVWaWV3J3Mgd2luZG93Q2xpcFJlY3QgdG8gYXZvaWQgcmVjb21wdXRpbmcgaXQg
Zm9yIGV2ZXJ5IHN1YmZyYW1lLgogICAgIFRlbXBvcmFyeUNoYW5nZTxJbnRSZWN0Kj4gd2luZG93
Q2xpcFJlY3RDYWNoZShtX2NhY2hlZFdpbmRvd0NsaXBSZWN0LCAmd2luZG93Q2xpcFJlY3QpOwog
ICAgIGZvciAoRnJhbWUqIGNoaWxkRnJhbWUgPSBmcmFtZSgpLnRyZWUoKS5maXJzdENoaWxkKCk7
IGNoaWxkRnJhbWU7IGNoaWxkRnJhbWUgPSBjaGlsZEZyYW1lLT50cmVlKCkubmV4dFNpYmxpbmco
KSkgewogICAgICAgICBpZiAoYXV0byogY2hpbGRWaWV3ID0gY2hpbGRGcmFtZS0+dmlldygpKQot
ICAgICAgICAgICAgY2hpbGRWaWV3LT5yZXN1bWVWaXNpYmxlSW1hZ2VBbmltYXRpb25zSW5jbHVk
aW5nU3ViZnJhbWVzKCk7CisgICAgICAgICAgICBjaGlsZFZpZXctPmFwcGx5UmVjdXJzaXZlbHlX
aXRoVmlzaWJsZVJlY3QoYXBwbHkpOwogICAgIH0KIH0KIAordm9pZCBGcmFtZVZpZXc6OnJlc3Vt
ZVZpc2libGVJbWFnZUFuaW1hdGlvbnMoY29uc3QgSW50UmVjdCYgdmlzaWJsZVJlY3QpCit7Cisg
ICAgaWYgKHZpc2libGVSZWN0LmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYg
KGF1dG8qIHJlbmRlclZpZXcgPSBmcmFtZSgpLmNvbnRlbnRSZW5kZXJlcigpKQorICAgICAgICBy
ZW5kZXJWaWV3LT5yZXN1bWVQYXVzZWRJbWFnZUFuaW1hdGlvbnNJZk5lZWRlZCh2aXNpYmxlUmVj
dCk7Cit9CisKK3ZvaWQgRnJhbWVWaWV3Ojp1cGRhdGVTY3JpcHRlZEFuaW1hdGlvbnNUaHJvdHRs
aW5nU3RhdGUoY29uc3QgSW50UmVjdCYgdmlzaWJsZVJlY3QpCit7CisjaWYgRU5BQkxFKFJFUVVF
U1RfQU5JTUFUSU9OX0ZSQU1FKQorICAgIGlmIChmcmFtZSgpLmlzTWFpbkZyYW1lKCkpCisgICAg
ICAgIHJldHVybjsKKworICAgIGF1dG8qIGRvY3VtZW50ID0gZnJhbWUoKS5kb2N1bWVudCgpOwor
ICAgIGlmICghZG9jdW1lbnQpCisgICAgICAgIHJldHVybjsKKworICAgIGF1dG8qIHNjcmlwdGVk
QW5pbWF0aW9uQ29udHJvbGxlciA9IGRvY3VtZW50LT5zY3JpcHRlZEFuaW1hdGlvbkNvbnRyb2xs
ZXIoKTsKKyAgICBpZiAoIXNjcmlwdGVkQW5pbWF0aW9uQ29udHJvbGxlcikKKyAgICAgICAgcmV0
dXJuOworCisgICAgLy8gRklYTUU6IFRoaXMgZG9lc24ndCB3b3JrIGZvciBzdWJmcmFtZXMgb2Yg
YSAiZGlzcGxheTogbm9uZSIgZnJhbWUgYmVjYXVzZQorICAgIC8vIHRoZXkgaGF2ZSBhIG5vbi1u
dWxsIG93bmVyUmVuZGVyZXIuCisgICAgYm9vbCBzaG91bGRUaHJvdHRsZSA9ICFmcmFtZSgpLm93
bmVyUmVuZGVyZXIoKSB8fCB2aXNpYmxlUmVjdC5pc0VtcHR5KCk7CisgICAgc2NyaXB0ZWRBbmlt
YXRpb25Db250cm9sbGVyLT5zZXRUaHJvdHRsZWQoc2hvdWxkVGhyb3R0bGUpOworI2Vsc2UKKyAg
ICBVTlVTRURfUEFSQU0odmlzaWJsZVJlY3QpOworI2VuZGlmCit9CisKKwordm9pZCBGcmFtZVZp
ZXc6OnJlc3VtZVZpc2libGVJbWFnZUFuaW1hdGlvbnNJbmNsdWRpbmdTdWJmcmFtZXMoKQorewor
ICAgIGFwcGx5UmVjdXJzaXZlbHlXaXRoVmlzaWJsZVJlY3QoW10gKEZyYW1lVmlldyYgZnJhbWVW
aWV3LCBjb25zdCBJbnRSZWN0JiB2aXNpYmxlUmVjdCkgeworICAgICAgICBmcmFtZVZpZXcucmVz
dW1lVmlzaWJsZUltYWdlQW5pbWF0aW9ucyh2aXNpYmxlUmVjdCk7CisgICAgfSk7Cit9CisKIHZv
aWQgRnJhbWVWaWV3Ojp1cGRhdGVMYXllclBvc2l0aW9uc0FmdGVyU2Nyb2xsaW5nKCkKIHsKICAg
ICAvLyBJZiB3ZSdyZSBzY3JvbGxpbmcgYXMgYSByZXN1bHQgb2YgdXBkYXRpbmcgdGhlIHZpZXcg
c2l6ZSBhZnRlciBsYXlvdXQsIHdlJ2xsIHVwZGF0ZSB3aWRnZXRzIGFuZCBsYXllciBwb3NpdGlv
bnMgc29vbiBhbnl3YXkuCkBAIC0zMDU5LDEzICszMTAwLDExIEBAIHZvaWQgRnJhbWVWaWV3Ojp1
bnJlZ2lzdGVyVGhyb3R0bGVkRE9NVGltZXIoRE9NVGltZXIqIHRpbWVyKQogICAgIG1fdGhyb3R0
bGVkVGltZXJzLnJlbW92ZSh0aW1lcik7CiB9CiAKLXZvaWQgRnJhbWVWaWV3Ojp1cGRhdGVUaHJv
dHRsZWRET01UaW1lcnNTdGF0ZSgpCit2b2lkIEZyYW1lVmlldzo6dXBkYXRlVGhyb3R0bGVkRE9N
VGltZXJzU3RhdGUoY29uc3QgSW50UmVjdCYgdmlzaWJsZVJlY3QpCiB7CiAgICAgaWYgKG1fdGhy
b3R0bGVkVGltZXJzLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgSW50UmVjdCB2
aXNpYmxlUmVjdCA9IHdpbmRvd1RvQ29udGVudHMod2luZG93Q2xpcFJlY3QoKSk7Ci0KICAgICAv
LyBEbyBub3QgaXRlcmF0ZSBvdmVyIHRoZSBIYXNoU2V0IGJlY2F1c2UgY2FsbGluZyBET01UaW1l
cjo6dXBkYXRlVGhyb3R0bGluZ1N0YXRlQWZ0ZXJWaWV3cG9ydENoYW5nZSgpCiAgICAgLy8gbWF5
IGNhdXNlIHRpbWVycyB0byByZW1vdmUgdGhlbXNlbHZlcyBmcm9tIGl0IHdoaWxlIHdlIGFyZSBp
dGVyYXRpbmcuCiAgICAgVmVjdG9yPERPTVRpbWVyKj4gdGltZXJzOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVW
aWV3LmgKaW5kZXggYjJkN2NlZjFjYzQ4MjExNTQ0Y2NmN2UzZWYwMjkxMDE4M2YzYTgwNS4uNTJm
NGU2YjQ0OWY4YjkzYzY4ODI2NDIyYWNkZjBhYmYxNmZjYWY1ZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1l
Vmlldy5oCkBAIC01OTYsNyArNTk2LDExIEBAIHByaXZhdGU6CiAgICAgdm9pZCBmb3JjZUxheW91
dFBhcmVudFZpZXdJZk5lZWRlZCgpOwogICAgIHZvaWQgcGVyZm9ybVBvc3RMYXlvdXRUYXNrcygp
OwogICAgIHZvaWQgYXV0b1NpemVJZkVuYWJsZWQoKTsKLSAgICB2b2lkIHVwZGF0ZVRocm90dGxl
ZERPTVRpbWVyc1N0YXRlKCk7CisKKyAgICB2b2lkIGFwcGx5UmVjdXJzaXZlbHlXaXRoVmlzaWJs
ZVJlY3QoY29uc3Qgc3RkOjpmdW5jdGlvbjx2b2lkIChGcmFtZVZpZXcmIGZyYW1lVmlldywgY29u
c3QgSW50UmVjdCYgdmlzaWJsZVJlY3QpPiYpOworICAgIHZvaWQgdXBkYXRlVGhyb3R0bGVkRE9N
VGltZXJzU3RhdGUoY29uc3QgSW50UmVjdCYgdmlzaWJsZVJlY3QpOworICAgIHZvaWQgcmVzdW1l
VmlzaWJsZUltYWdlQW5pbWF0aW9ucyhjb25zdCBJbnRSZWN0JiB2aXNpYmxlUmVjdCk7CisgICAg
dm9pZCB1cGRhdGVTY3JpcHRlZEFuaW1hdGlvbnNUaHJvdHRsaW5nU3RhdGUoY29uc3QgSW50UmVj
dCYgdmlzaWJsZVJlY3QpOwogCiAgICAgdm9pZCB1cGRhdGVMYXllckZsdXNoVGhyb3R0bGluZygp
OwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgYWRqdXN0VGlsZWRCYWNraW5nQ292ZXJhZ2UoKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAppbmRleCA4ODI5ZWUwMDc4NzY5ZmE3YTZl
NmFlZjE4NDFhZTYyMjQyNThkNDczLi4wNWFlMjFkNzk4OTE5YTE5NzZlNWM0NDk0NmRmOGIyMGJk
YmU1MGIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCkBAIC05OCw2ICs5OCw3
IEBACiAjaW5jbHVkZSAiUmVuZGVyZWREb2N1bWVudE1hcmtlci5oIgogI2luY2x1ZGUgIlJ1bnRp
bWVFbmFibGVkRmVhdHVyZXMuaCIKICNpbmNsdWRlICJTY2hlbWVSZWdpc3RyeS5oIgorI2luY2x1
ZGUgIlNjcmlwdGVkQW5pbWF0aW9uQ29udHJvbGxlci5oIgogI2luY2x1ZGUgIlNjcm9sbGluZ0Nv
b3JkaW5hdG9yLmgiCiAjaW5jbHVkZSAiU2VyaWFsaXplZFNjcmlwdFZhbHVlLmgiCiAjaW5jbHVk
ZSAiU2V0dGluZ3MuaCIKQEAgLTc2Niw2ICs3NjcsMTggQEAgYm9vbCBJbnRlcm5hbHM6OmlzVGlt
ZXJUaHJvdHRsZWQoaW50IHRpbWVvdXRJZCwgRXhjZXB0aW9uQ29kZSYgZWMpCiAgICAgcmV0dXJu
IHRpbWVyLT5tX3Rocm90dGxlU3RhdGUgPT0gRE9NVGltZXI6OlNob3VsZFRocm90dGxlOwogfQog
Citib29sIEludGVybmFsczo6aXNSZXF1ZXN0QW5pbWF0aW9uRnJhbWVUaHJvdHRsZWQoKSBjb25z
dAoreworI2lmIEVOQUJMRShSRVFVRVNUX0FOSU1BVElPTl9GUkFNRSkKKyAgICBhdXRvKiBzY3Jp
cHRlZEFuaW1hdGlvbkNvbnRyb2xsZXIgPSBjb250ZXh0RG9jdW1lbnQoKS0+c2NyaXB0ZWRBbmlt
YXRpb25Db250cm9sbGVyKCk7CisgICAgaWYgKCFzY3JpcHRlZEFuaW1hdGlvbkNvbnRyb2xsZXIp
CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICByZXR1cm4gc2NyaXB0ZWRBbmltYXRpb25Db250
cm9sbGVyLT5pc1Rocm90dGxlZCgpOworI2Vsc2UKKyAgICByZXR1cm4gZmFsc2U7CisjZW5kaWYK
K30KKwogU3RyaW5nIEludGVybmFsczo6dmlzaWJsZVBsYWNlaG9sZGVyKEVsZW1lbnQqIGVsZW1l
bnQpCiB7CiAgICAgaWYgKGlzPEhUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50PihlbGVtZW50KSkg
ewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaCBiL1NvdXJj
ZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmgKaW5kZXggMDk0MTIyOTYxOTIyMTcyZjdkYjcx
NzViZGY4OThhNjc4Y2FiZGEyMy4uMTJkNmY4NzQzMmVhZjVmMTAyMjJmN2IzY2NiNTAzYWVlYmM2
YTFkNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5oCkBAIC0xMTMsNiArMTEzLDcgQEAg
cHVibGljOgogCiAgICAgLy8gRE9NVGltZXJzIHRocm90dGxpbmcgdGVzdGluZy4KICAgICBib29s
IGlzVGltZXJUaHJvdHRsZWQoaW50IHRpbWVvdXRJZCwgRXhjZXB0aW9uQ29kZSYpOworICAgIGJv
b2wgaXNSZXF1ZXN0QW5pbWF0aW9uRnJhbWVUaHJvdHRsZWQoKSBjb25zdDsKIAogICAgIC8vIFNw
YXRpYWwgTmF2aWdhdGlvbiB0ZXN0aW5nLgogICAgIHVuc2lnbmVkIGxhc3RTcGF0aWFsTmF2aWdh
dGlvbkNhbmRpZGF0ZUNvdW50KEV4Y2VwdGlvbkNvZGUmKSBjb25zdDsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlkbCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3Rp
bmcvSW50ZXJuYWxzLmlkbAppbmRleCAxYjAwOTgwNDRmMzEzNjI3ZWMzYWUzYWZiZGNkMmI3NGUy
MGFjYjI3Li42ZDIzMjk5ZTI2NGRmNDUyMWU5MDVjNTRmODBkYmE5MjdkMWZiZmMwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5pZGwKKysrIGIvU291cmNlL1dl
YkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaWRsCkBAIC0yNzksNiArMjc5LDggQEAgZW51bSBSZXNv
dXJjZUxvYWRQcmlvcml0eSB7CiAgICAgLy8gUXVlcnkgaWYgYSB0aW1lciBpcyBjdXJyZW50bHkg
dGhyb3R0bGVkLCB0byBkZWJ1ZyB0aW1lciB0aHJvdHRsaW5nLgogICAgIFtSYWlzZXNFeGNlcHRp
b25dIGJvb2xlYW4gaXNUaW1lclRocm90dGxlZChsb25nIHRpbWVySGFuZGxlKTsKIAorICAgIGJv
b2xlYW4gaXNSZXF1ZXN0QW5pbWF0aW9uRnJhbWVUaHJvdHRsZWQoKTsKKwogICAgIFtSYWlzZXNF
eGNlcHRpb25dIHZvaWQgc3RhcnRUcmFja2luZ1N0eWxlUmVjYWxjcygpOwogICAgIFtSYWlzZXNF
eGNlcHRpb25dIHVuc2lnbmVkIGxvbmcgc3R5bGVSZWNhbGNDb3VudCgpOwogCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggY2U2
ZDJkMjlkMDFjY2MwOTNhODhiYjRmMzU4MTI4MTM4YzJkMDAxYS4uNTFlMzc0NTdmNWU3MWNlMmVh
Y2U1MTQ4NmI2Nzc4ZWU3NjU1MmFhNyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9n
CisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI4IEBACisyMDE1LTA1LTA4
ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgVGhyb3R0bGUgUmVx
dWVzdEFuaW1hdGlvbkZyYW1lIGluIHN1YmZyYW1lcyB0aGF0IGFyZSBvdXRzaWRlIHRoZSB2aWV3
cG9ydAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ0
NzE4CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8yMDY4ODc4Mj4KKworICAgICAgICBSZXZpZXdl
ZCBieSBTaW1vbiBGcmFzZXIuCisKKyAgICAgICAgKiBmYXN0L2FuaW1hdGlvbi9yZXF1ZXN0LWFu
aW1hdGlvbi1mcmFtZS10aHJvdHRsZS1zdWJmcmFtZS1kaXNwbGF5LW5vbmUtZXhwZWN0ZWQudHh0
OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2FuaW1hdGlvbi9yZXF1ZXN0LWFuaW1hdGlvbi1mcmFt
ZS10aHJvdHRsZS1zdWJmcmFtZS1kaXNwbGF5LW5vbmUuaHRtbDogQWRkZWQuCisgICAgICAgIEFk
ZCBsYXlvdXQgdGVzdCB0byB0ZXN0IHRoYXQgUmVxdWVzdEFuaW1hdGlvbkZyYW1lIGlzIHByb3Bl
cmx5IHRocm90dGxlZAorICAgICAgICBpbiAiZGlzcGxheTogbm9uZSIgc3ViZnJhbWVzLgorCisg
ICAgICAgICogZmFzdC9hbmltYXRpb24vcmVxdWVzdC1hbmltYXRpb24tZnJhbWUtdGhyb3R0bGUt
c3ViZnJhbWUtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2FuaW1hdGlvbi9y
ZXF1ZXN0LWFuaW1hdGlvbi1mcmFtZS10aHJvdHRsZS1zdWJmcmFtZS5odG1sOiBBZGRlZC4KKyAg
ICAgICAgQWRkIGxheW91dCB0ZXN0IHRvIHRlc3QgdGhhdCBSZXF1ZXN0QW5pbWF0aW9uRnJhbWUg
aXMgcHJvcGVybHkgdGhyb3R0bGVkCisgICAgICAgIGluIGZyYW1lcyB0aGF0IGFyZSBvdXRzaWRl
IHRoZSB2aWV3cG9ydC4KKworICAgICAgICAqIGZhc3QvYW5pbWF0aW9uL3Jlc291cmNlcy9yZXF1
ZXN0QW5pbWF0aW9uRnJhbWUtZnJhbWUtMi5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2Fu
aW1hdGlvbi9yZXNvdXJjZXMvcmVxdWVzdEFuaW1hdGlvbkZyYW1lLWZyYW1lLmh0bWw6IEFkZGVk
LgorCisgICAgICAgICogcGxhdGZvcm0vd2luL1Rlc3RFeHBlY3RhdGlvbnM6CisgICAgICAgIFNr
aXAgdGhlIDIgbmV3IHRlc3RzIG9uIFdpbmRvd3MgYXMgcmVxdWVzdEFuaW1hdGlvbkZyYW1lIHRo
cm90dGxpbmcgaXMKKyAgICAgICAgb25seSBzdXBwb3J0ZWQgb24gQ29jb2EuCisKIDIwMTUtMDUt
MDggIEh5dW5nd29vayBMZWUgIDxoeXVuZ3dvb2subGVlQG5hdmVyY29ycC5jb20+CiAKICAgICAg
ICAgW1dpbl0gVW5za2lwIHBhc3NpbmcgdGVzdCBjYXNlIGFmdGVyIHIxODM5ODEKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2Zhc3QvYW5pbWF0aW9uL3JlcXVlc3QtYW5pbWF0aW9uLWZyYW1lLXRo
cm90dGxlLXN1YmZyYW1lLWRpc3BsYXktbm9uZS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9m
YXN0L2FuaW1hdGlvbi9yZXF1ZXN0LWFuaW1hdGlvbi1mcmFtZS10aHJvdHRsZS1zdWJmcmFtZS1k
aXNwbGF5LW5vbmUtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjAyZDBmNTA5YTM2ZjAzNWY5M2Ji
NjFmMjNiNDAwMjQ3OWIwOTJiNDEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0
L2FuaW1hdGlvbi9yZXF1ZXN0LWFuaW1hdGlvbi1mcmFtZS10aHJvdHRsZS1zdWJmcmFtZS1kaXNw
bGF5LW5vbmUtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTkgQEAKK1Rlc3RzIHRoYXQgcmVxdWVz
dEFuaW1hdGlvbkZyYW1lIGlzIHRocm90dGxlZCBpbiBzdWJmcmFtZXMgdGhhdCBhcmUgZGlzcGxh
eTpub25lCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVz
c2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitGcmFtZSBpcyBpbml0aWFs
bHkgdmlzaWJpbGUgc28gcmVxdWVzdEFuaW1hdGlvbkZyYW1lIHNob3VsZCBub3QgYmUgdGhyb3R0
bGVkCitQQVNTIHRlc3RGcmFtZS5jb250ZW50V2luZG93LmludGVybmFscy5pc1JlcXVlc3RBbmlt
YXRpb25GcmFtZVRocm90dGxlZCgpIGJlY2FtZSBmYWxzZQorUEFTUyB0ZXN0RnJhbWUuY29udGVu
dFdpbmRvdy5pbnRlcm5hbHMuaXNSZXF1ZXN0QW5pbWF0aW9uRnJhbWVUaHJvdHRsZWQoKSBpcyBm
YWxzZQorSGlkaW5nIHN1YmZyYW1lLgordGVzdEZyYW1lLnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7
CitQQVNTIHRlc3RGcmFtZS5jb250ZW50V2luZG93LmludGVybmFscy5pc1JlcXVlc3RBbmltYXRp
b25GcmFtZVRocm90dGxlZCgpIGJlY2FtZSB0cnVlCitQQVNTIHRlc3RGcmFtZS5jb250ZW50V2lu
ZG93LmludGVybmFscy5pc1JlcXVlc3RBbmltYXRpb25GcmFtZVRocm90dGxlZCgpIGlzIHRydWUK
K1Nob3cgc3ViZnJhbWUgYWdhaW4KK3Rlc3RGcmFtZS5zdHlsZS5kaXNwbGF5ID0gJ2Jsb2NrJzsK
K1BBU1MgdGVzdEZyYW1lLmNvbnRlbnRXaW5kb3cuaW50ZXJuYWxzLmlzUmVxdWVzdEFuaW1hdGlv
bkZyYW1lVGhyb3R0bGVkKCkgYmVjYW1lIGZhbHNlCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBp
cyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9h
bmltYXRpb24vcmVxdWVzdC1hbmltYXRpb24tZnJhbWUtdGhyb3R0bGUtc3ViZnJhbWUtZGlzcGxh
eS1ub25lLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2FuaW1hdGlvbi9yZXF1ZXN0LWFuaW1hdGlv
bi1mcmFtZS10aHJvdHRsZS1zdWJmcmFtZS1kaXNwbGF5LW5vbmUuaHRtbApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5l
OGQxMWNmOTJiZjc3MTk0NDY4MjI1MDJjM2ZiYzBjMTFmZmExOGRhCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvZmFzdC9hbmltYXRpb24vcmVxdWVzdC1hbmltYXRpb24tZnJhbWUtdGhy
b3R0bGUtc3ViZnJhbWUtZGlzcGxheS1ub25lLmh0bWwKQEAgLTAsMCArMSw0NCBAQAorPCFET0NU
WVBFIGh0bWw+Cis8aHRtbD4KKzxib2R5PgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9q
cy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0PgorZGVzY3JpcHRpb24oIlRlc3RzIHRo
YXQgcmVxdWVzdEFuaW1hdGlvbkZyYW1lIGlzIHRocm90dGxlZCBpbiBzdWJmcmFtZXMgdGhhdCBh
cmUgZGlzcGxheTpub25lIik7Cit3aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7CisKK2Z1bmN0
aW9uIGNoZWNrU3ViZnJhbWVUaHJvdHRsZWQoKQoreworICAgIHNob3VsZEJlVHJ1ZSgidGVzdEZy
YW1lLmNvbnRlbnRXaW5kb3cuaW50ZXJuYWxzLmlzUmVxdWVzdEFuaW1hdGlvbkZyYW1lVGhyb3R0
bGVkKCkiKTsKKworICAgIGRlYnVnKCJTaG93IHN1YmZyYW1lIGFnYWluIik7CisgICAgZXZhbEFu
ZExvZygidGVzdEZyYW1lLnN0eWxlLmRpc3BsYXkgPSAnYmxvY2snOyIpOworCisgICAgc2hvdWxk
QmVjb21lRXF1YWwoInRlc3RGcmFtZS5jb250ZW50V2luZG93LmludGVybmFscy5pc1JlcXVlc3RB
bmltYXRpb25GcmFtZVRocm90dGxlZCgpIiwgImZhbHNlIiwgZmluaXNoSlNUZXN0KTsKK30KKwor
ZnVuY3Rpb24gaGlkZUZyYW1lKCkKK3sKKyAgICBzaG91bGRCZUZhbHNlKCJ0ZXN0RnJhbWUuY29u
dGVudFdpbmRvdy5pbnRlcm5hbHMuaXNSZXF1ZXN0QW5pbWF0aW9uRnJhbWVUaHJvdHRsZWQoKSIp
OworCisgICAgZGVidWcoIkhpZGluZyBzdWJmcmFtZS4iKTsKKyAgICBldmFsQW5kTG9nKCJ0ZXN0
RnJhbWUuc3R5bGUuZGlzcGxheSA9ICdub25lJzsiKTsKKworICAgIHNob3VsZEJlY29tZUVxdWFs
KCJ0ZXN0RnJhbWUuY29udGVudFdpbmRvdy5pbnRlcm5hbHMuaXNSZXF1ZXN0QW5pbWF0aW9uRnJh
bWVUaHJvdHRsZWQoKSIsICJ0cnVlIiwgY2hlY2tTdWJmcmFtZVRocm90dGxlZCk7Cit9CisKK2Z1
bmN0aW9uIHJ1blRlc3QoKQoreworICAgIHRlc3RGcmFtZSA9IGRvY3VtZW50LmdldEVsZW1lbnRC
eUlkKCJ0ZXN0RnJhbWUiKTsKKyAgICBkZWJ1ZygiRnJhbWUgaXMgaW5pdGlhbGx5IHZpc2liaWxl
IHNvIHJlcXVlc3RBbmltYXRpb25GcmFtZSBzaG91bGQgbm90IGJlIHRocm90dGxlZCIpOworICAg
IHNob3VsZEJlY29tZUVxdWFsKCJ0ZXN0RnJhbWUuY29udGVudFdpbmRvdy5pbnRlcm5hbHMuaXNS
ZXF1ZXN0QW5pbWF0aW9uRnJhbWVUaHJvdHRsZWQoKSIsICJmYWxzZSIsIGhpZGVGcmFtZSk7Cit9
CisKK3ZhciBpID0gMDsKK3JlcXVlc3RBbmltYXRpb25GcmFtZShmdW5jdGlvbigpIHsKKyAgICBp
Kys7Cit9KTsKKzwvc2NyaXB0PgorPGlmcmFtZSBpZD0idGVzdEZyYW1lIiBzcmM9InJlc291cmNl
cy9yZXF1ZXN0QW5pbWF0aW9uRnJhbWUtZnJhbWUuaHRtbCIgb25sb2FkPSJydW5UZXN0KCkiPjwv
aWZyYW1lPgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwv
c2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9h
bmltYXRpb24vcmVxdWVzdC1hbmltYXRpb24tZnJhbWUtdGhyb3R0bGUtc3ViZnJhbWUtZXhwZWN0
ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9hbmltYXRpb24vcmVxdWVzdC1hbmltYXRpb24tZnJh
bWUtdGhyb3R0bGUtc3ViZnJhbWUtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA1OTgzYjMzMTMy
ODMzNDIyNWJjODg1ZDhlNGU4YmMyMmI0NmNhOGMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9mYXN0L2FuaW1hdGlvbi9yZXF1ZXN0LWFuaW1hdGlvbi1mcmFtZS10aHJvdHRsZS1zdWJm
cmFtZS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwyNCBAQAorVGVzdHMgdGhhdCByZXF1ZXN0QW5p
bWF0aW9uRnJhbWUgaXMgdGhyb3R0bGVkIGluIHN1YmZyYW1lcyB0aGF0IGFyZSBvdXRzaWRlIHRo
ZSB2aWV3cG9ydAorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1Mi
IG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworRnJhbWUgaXMgaW5p
dGlhbGx5IG91dHNpZGUgdGhlIHZpZXdwb3J0IHNvIHJlcXVlc3RBbmltYXRpb25GcmFtZSBzaG91
bGQgYmUgdGhyb3R0bGVkCitQQVNTIHRlc3RGcmFtZS5jb250ZW50V2luZG93LmludGVybmFscy5p
c1JlcXVlc3RBbmltYXRpb25GcmFtZVRocm90dGxlZCgpIGJlY2FtZSB0cnVlCitQQVNTIGludGVy
bmFscy5pc1JlcXVlc3RBbmltYXRpb25GcmFtZVRocm90dGxlZCgpIGlzIGZhbHNlCitQQVNTIHRl
c3RGcmFtZS5jb250ZW50V2luZG93LmludGVybmFscy5pc1JlcXVlc3RBbmltYXRpb25GcmFtZVRo
cm90dGxlZCgpIGlzIHRydWUKK1BBU1MgZ3JhbmRDaGlsZEZyYW1lLmNvbnRlbnRXaW5kb3cuaW50
ZXJuYWxzLmlzUmVxdWVzdEFuaW1hdGlvbkZyYW1lVGhyb3R0bGVkKCkgaXMgdHJ1ZQorU2Nyb2xs
aW5nIGZyYW1lIGludG8gdmlldy4KK1JlcXVlc3RBbmltYXRpb25GcmFtZSBzaG91bGQgbm8gbG9u
Z2VyIGJlIHRocm90dGxlZAorUEFTUyBpbnRlcm5hbHMuaXNSZXF1ZXN0QW5pbWF0aW9uRnJhbWVU
aHJvdHRsZWQoKSBpcyBmYWxzZQorUEFTUyBncmFuZENoaWxkRnJhbWUuY29udGVudFdpbmRvdy5p
bnRlcm5hbHMuaXNSZXF1ZXN0QW5pbWF0aW9uRnJhbWVUaHJvdHRsZWQoKSBpcyBmYWxzZQorUEFT
UyB0ZXN0RnJhbWUuY29udGVudFdpbmRvdy5pbnRlcm5hbHMuaXNSZXF1ZXN0QW5pbWF0aW9uRnJh
bWVUaHJvdHRsZWQoKSBpcyBmYWxzZQorU2Nyb2xsaW5nIGZyYW1lIG91dCBvZiB2aWV3IGFnYWlu
LgorUEFTUyBpbnRlcm5hbHMuaXNSZXF1ZXN0QW5pbWF0aW9uRnJhbWVUaHJvdHRsZWQoKSBpcyBm
YWxzZQorUEFTUyB0ZXN0RnJhbWUuY29udGVudFdpbmRvdy5pbnRlcm5hbHMuaXNSZXF1ZXN0QW5p
bWF0aW9uRnJhbWVUaHJvdHRsZWQoKSBiZWNhbWUgdHJ1ZQorUEFTUyB0ZXN0RnJhbWUuY29udGVu
dFdpbmRvdy5pbnRlcm5hbHMuaXNSZXF1ZXN0QW5pbWF0aW9uRnJhbWVUaHJvdHRsZWQoKSBpcyB0
cnVlCitQQVNTIGdyYW5kQ2hpbGRGcmFtZS5jb250ZW50V2luZG93LmludGVybmFscy5pc1JlcXVl
c3RBbmltYXRpb25GcmFtZVRocm90dGxlZCgpIGlzIHRydWUKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFy
c2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9m
YXN0L2FuaW1hdGlvbi9yZXF1ZXN0LWFuaW1hdGlvbi1mcmFtZS10aHJvdHRsZS1zdWJmcmFtZS5o
dG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9hbmltYXRpb24vcmVxdWVzdC1hbmltYXRpb24tZnJhbWUt
dGhyb3R0bGUtc3ViZnJhbWUuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mODk0MGYzZWQ4OWEwYTUxNWZlZmRh
ZDVlMDJhZmMxYTdhNTRlM2Y2Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9h
bmltYXRpb24vcmVxdWVzdC1hbmltYXRpb24tZnJhbWUtdGhyb3R0bGUtc3ViZnJhbWUuaHRtbApA
QCAtMCwwICsxLDYxIEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGJvZHk+Cis8c2NyaXB0
IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+
CitkZXNjcmlwdGlvbigiVGVzdHMgdGhhdCByZXF1ZXN0QW5pbWF0aW9uRnJhbWUgaXMgdGhyb3R0
bGVkIGluIHN1YmZyYW1lcyB0aGF0IGFyZSBvdXRzaWRlIHRoZSB2aWV3cG9ydCIpOword2luZG93
LmpzVGVzdElzQXN5bmMgPSB0cnVlOworCitmdW5jdGlvbiBjaGVja1N1YmZyYW1lc1Rocm90dGxl
ZCgpCit7CisgICAgc2hvdWxkQmVUcnVlKCJ0ZXN0RnJhbWUuY29udGVudFdpbmRvdy5pbnRlcm5h
bHMuaXNSZXF1ZXN0QW5pbWF0aW9uRnJhbWVUaHJvdHRsZWQoKSIpOworICAgIHNob3VsZEJlVHJ1
ZSgiZ3JhbmRDaGlsZEZyYW1lLmNvbnRlbnRXaW5kb3cuaW50ZXJuYWxzLmlzUmVxdWVzdEFuaW1h
dGlvbkZyYW1lVGhyb3R0bGVkKCkiKTsKKworICAgIGZpbmlzaEpTVGVzdCgpOworfQorCitmdW5j
dGlvbiBzY3JvbGxGcmFtZU91dE9mVmlldygpCit7CisgICAgZGVidWcoIlNjcm9sbGluZyBmcmFt
ZSBvdXQgb2YgdmlldyBhZ2Fpbi4iKTsKKyAgICB3aW5kb3cuc2Nyb2xsKDAsIDApOworCisgICAg
c2hvdWxkQmVGYWxzZSgiaW50ZXJuYWxzLmlzUmVxdWVzdEFuaW1hdGlvbkZyYW1lVGhyb3R0bGVk
KCkiKTsKKyAgICBzaG91bGRCZWNvbWVFcXVhbCgidGVzdEZyYW1lLmNvbnRlbnRXaW5kb3cuaW50
ZXJuYWxzLmlzUmVxdWVzdEFuaW1hdGlvbkZyYW1lVGhyb3R0bGVkKCkiLCAidHJ1ZSIsIGNoZWNr
U3ViZnJhbWVzVGhyb3R0bGVkKTsKK30KKworZnVuY3Rpb24gc2Nyb2xsRnJhbWVJbnRvVmlldygp
Cit7CisgICAgc2hvdWxkQmVGYWxzZSgiaW50ZXJuYWxzLmlzUmVxdWVzdEFuaW1hdGlvbkZyYW1l
VGhyb3R0bGVkKCkiKTsKKyAgICBzaG91bGRCZVRydWUoInRlc3RGcmFtZS5jb250ZW50V2luZG93
LmludGVybmFscy5pc1JlcXVlc3RBbmltYXRpb25GcmFtZVRocm90dGxlZCgpIik7CisgICAgc2hv
dWxkQmVUcnVlKCJncmFuZENoaWxkRnJhbWUuY29udGVudFdpbmRvdy5pbnRlcm5hbHMuaXNSZXF1
ZXN0QW5pbWF0aW9uRnJhbWVUaHJvdHRsZWQoKSIpOworCisgICAgZGVidWcoIlNjcm9sbGluZyBm
cmFtZSBpbnRvIHZpZXcuIik7CisgICAgd2luZG93LmludGVybmFscy5zY3JvbGxFbGVtZW50VG9S
ZWN0KHRlc3RGcmFtZSwgMCwgMCwgMzAwLCAzMDApOworCisgICAgZGVidWcoIlJlcXVlc3RBbmlt
YXRpb25GcmFtZSBzaG91bGQgbm8gbG9uZ2VyIGJlIHRocm90dGxlZCIpOworICAgIHNob3VsZEJl
RmFsc2UoImludGVybmFscy5pc1JlcXVlc3RBbmltYXRpb25GcmFtZVRocm90dGxlZCgpIik7Cisg
ICAgc2hvdWxkQmVGYWxzZSgiZ3JhbmRDaGlsZEZyYW1lLmNvbnRlbnRXaW5kb3cuaW50ZXJuYWxz
LmlzUmVxdWVzdEFuaW1hdGlvbkZyYW1lVGhyb3R0bGVkKCkiKTsKKyAgICBzaG91bGRCZUZhbHNl
KCJ0ZXN0RnJhbWUuY29udGVudFdpbmRvdy5pbnRlcm5hbHMuaXNSZXF1ZXN0QW5pbWF0aW9uRnJh
bWVUaHJvdHRsZWQoKSIpOworCisgICAgc2Nyb2xsRnJhbWVPdXRPZlZpZXcoKTsKK30KKworZnVu
Y3Rpb24gcnVuVGVzdCgpCit7CisgICAgdGVzdEZyYW1lID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQoInRlc3RGcmFtZSIpOworICAgIGdyYW5kQ2hpbGRGcmFtZSA9IHRlc3RGcmFtZS5jb250ZW50
RG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImdyYW5kQ2hpbGRGcmFtZSIpOworICAgIGRlYnVnKCJG
cmFtZSBpcyBpbml0aWFsbHkgb3V0c2lkZSB0aGUgdmlld3BvcnQgc28gcmVxdWVzdEFuaW1hdGlv
bkZyYW1lIHNob3VsZCBiZSB0aHJvdHRsZWQiKTsKKyAgICBzaG91bGRCZWNvbWVFcXVhbCgidGVz
dEZyYW1lLmNvbnRlbnRXaW5kb3cuaW50ZXJuYWxzLmlzUmVxdWVzdEFuaW1hdGlvbkZyYW1lVGhy
b3R0bGVkKCkiLCAidHJ1ZSIsIHNjcm9sbEZyYW1lSW50b1ZpZXcpOworfQorCit2YXIgaSA9IDA7
CityZXF1ZXN0QW5pbWF0aW9uRnJhbWUoZnVuY3Rpb24oKSB7CisgICAgaSsrOworfSk7Cis8L3Nj
cmlwdD4KKzxkaXYgc3R5bGU9InBvc2l0aW9uOiByZWxhdGl2ZTsgd2lkdGg6IDE2MDBweDsgaGVp
Z2h0OiAyNDAwcHg7IGJhY2tncm91bmQtY29sb3I6IGdyZWVuOyI+CisgICAgPGlmcmFtZSBpZD0i
dGVzdEZyYW1lIiBzcmM9InJlc291cmNlcy9yZXF1ZXN0QW5pbWF0aW9uRnJhbWUtZnJhbWUuaHRt
bCIgc3R5bGU9InBvc2l0aW9uOmFic29sdXRlOyBsZWZ0OiA2MDBweDsgdG9wOiA4MDBweDsiIG9u
bG9hZD0icnVuVGVzdCgpIj48L2lmcmFtZT4KKzwvZGl2PgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jl
c291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9hbmltYXRpb24vcmVzb3VyY2VzL3JlcXVlc3RBbmlt
YXRpb25GcmFtZS1mcmFtZS0yLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2FuaW1hdGlvbi9yZXNv
dXJjZXMvcmVxdWVzdEFuaW1hdGlvbkZyYW1lLWZyYW1lLTIuaHRtbApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41MTEy
NWQ5NzE4YWMwNjdlMWMwMWU3YjA1MDFmODZhZGUyNTJjODAyCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvZmFzdC9hbmltYXRpb24vcmVzb3VyY2VzL3JlcXVlc3RBbmltYXRpb25GcmFt
ZS1mcmFtZS0yLmh0bWwKQEAgLTAsMCArMSwxMSBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4K
Kzxib2R5PgorPHNjcmlwdD4KK3ZhciBpID0gMDsKK3JlcXVlc3RBbmltYXRpb25GcmFtZShmdW5j
dGlvbigpIHsKKyAgaSsrOworfSk7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvYW5pbWF0aW9uL3Jlc291cmNlcy9yZXF1ZXN0QW5pbWF0
aW9uRnJhbWUtZnJhbWUuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvYW5pbWF0aW9uL3Jlc291cmNl
cy9yZXF1ZXN0QW5pbWF0aW9uRnJhbWUtZnJhbWUuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jMGQ3NjM2ZTJj
NDUzYzUyM2FlMTI1OTY2Y2EyNzY0YmI5ODYyOGM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvZmFzdC9hbmltYXRpb24vcmVzb3VyY2VzL3JlcXVlc3RBbmltYXRpb25GcmFtZS1mcmFt
ZS5odG1sCkBAIC0wLDAgKzEsMTIgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8Ym9keT4K
KzxpZnJhbWUgaWQ9ImdyYW5kQ2hpbGRGcmFtZSIgc3JjPSJyZXF1ZXN0QW5pbWF0aW9uRnJhbWUt
ZnJhbWUtMi5odG1sIj48L2lmcmFtZT4KKzxzY3JpcHQ+Cit2YXIgaSA9IDA7CityZXF1ZXN0QW5p
bWF0aW9uRnJhbWUoZnVuY3Rpb24oKSB7CisgIGkrKzsKK30pOworPC9zY3JpcHQ+Cis8L2JvZHk+
Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93aW4vVGVzdEV4cGVj
dGF0aW9ucyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL3dpbi9UZXN0RXhwZWN0YXRpb25zCmluZGV4
IGY5ZjQxMGY2ODAzNTZiNWFkZjMzNWY5NTgyNjk5MjMyZmIzODEyZmMuLjI0MzdhMWUwODBmMDY1
YjJiZWNhZTIwNDdkNjliZjFjODJiZjBkYmUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRm
b3JtL3dpbi9UZXN0RXhwZWN0YXRpb25zCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL3dpbi9U
ZXN0RXhwZWN0YXRpb25zCkBAIC0yNDk2LDYgKzI0OTYsMTAgQEAgd2Via2l0Lm9yZy9iLzE0MDI1
MCBmYXN0L2xvYWRlci9zdGF0ZW9iamVjdHMvcmVwbGFjZXN0YXRlLWluLWlmcmFtZS5odG1sIFsg
RmFpbHUKIHdlYmtpdC5vcmcvYi8xMzg2NzYgaW1wb3J0ZWQvdzNjL2NhbnZhcy8yZC5saW5lLmpv
aW4ucGFyYWxsZWwuaHRtbCBbIEZhaWx1cmUgXQogd2Via2l0Lm9yZy9iLzEzODY3NiBpbXBvcnRl
ZC93M2MvY2FudmFzLzJkLnN0cm9rZVJlY3QuemVyby41Lmh0bWwgWyBGYWlsdXJlIF0KIAorIyBy
ZXF1ZXN0QW5pbWF0aW9uRnJhbWUgdGhyb3R0bGluZyBkb2VzIG5vdCB3b3JrIG9uIFdpbmRvd3Mg
YmVjYXVzZSBVU0UoUkVRVUVTVF9BTklNQVRJT05fRlJBTUVfRElTUExBWV9NT05JVE9SKSBpcyBk
aXNhYmxlZC4KK3dlYmtpdC5vcmcvYi8xNDQ3MTggZmFzdC9hbmltYXRpb24vcmVxdWVzdC1hbmlt
YXRpb24tZnJhbWUtdGhyb3R0bGUtc3ViZnJhbWUtZGlzcGxheS1ub25lLmh0bWwgWyBTa2lwIF0K
K3dlYmtpdC5vcmcvYi8xNDQ3MTggZmFzdC9hbmltYXRpb24vcmVxdWVzdC1hbmltYXRpb24tZnJh
bWUtdGhyb3R0bGUtc3ViZnJhbWUuaHRtbCBbIFNraXAgXQorCiAjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIwogIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyBTdGFydCBsaXN0IG9mIFVOUkVWSUVXRUQg
ZmFpbHVyZXMgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
Iwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>