<?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>210071</bug_id>
          
          <creation_ts>2020-04-06 13:41:02 -0700</creation_ts>
          <short_desc>Trackpad and Mouse scroll events on iPad only fire &quot;pointermove&quot; -- not &quot;wheel&quot;</short_desc>
          <delta_ts>2021-05-21 07:04:59 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>UI Events</component>
          <version>Other</version>
          <rep_platform>iPhone / iPad</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter>moogcharlie</reporter>
          <assigned_to name="Tim Horton">thorton</assigned_to>
          <cc>alsantos123</cc>
    
    <cc>ava</cc>
    
    <cc>benjamin</cc>
    
    <cc>cdumez</cc>
    
    <cc>changseok</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>daninator.zauner</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>glenn</cc>
    
    <cc>graouts</cc>
    
    <cc>hi</cc>
    
    <cc>hypertree</cc>
    
    <cc>imownbey</cc>
    
    <cc>inikolic</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>krunal.rao78</cc>
    
    <cc>mail</cc>
    
    <cc>patino</cc>
    
    <cc>pauli.jokela</cc>
    
    <cc>pdr</cc>
    
    <cc>rawlencecn</cc>
    
    <cc>rigel</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>thorton</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>webkit</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1638291</commentid>
    <comment_count>0</comment_count>
    <who name="">moogcharlie</who>
    <bug_when>2020-04-06 13:41:02 -0700</bug_when>
    <thetext>When scrolling with a trackpad/mouse on iPadOS 13.4, the browser only fires `pointermove` events. These events are not sufficient to simulate scroll interactions where a `deltaY` and deltaX are needed and `pointermove` is useless because the cursor is stationary. WebKit should fire `wheel` events!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1638690</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-04-07 11:46:38 -0700</bug_when>
    <thetext>&lt;rdar://problem/61403043&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1638728</commentid>
    <comment_count>2</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2020-04-07 12:40:58 -0700</bug_when>
    <thetext>You are not wrong!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1638730</commentid>
    <comment_count>3</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2020-04-07 12:41:51 -0700</bug_when>
    <thetext>If you know of specific sites that are impacted, please share. We are aware of the lack of wheel events.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1639061</commentid>
    <comment_count>4</comment_count>
    <who name="">moogcharlie</who>
    <bug_when>2020-04-08 08:22:50 -0700</bug_when>
    <thetext>Maybe not what you&apos;re looking for, but complex interfaces like the one linked below typically handle scrolling manually. These applications are usually behind logins which makes it difficult for me to share more examples. 

https://vscode-web-test-playground.azurewebsites.net/?enter=true</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1651760</commentid>
    <comment_count>5</comment_count>
    <who name="Sebastian">patino</who>
    <bug_when>2020-05-12 09:17:33 -0700</bug_when>
    <thetext>Since moogcharlies example is no longer online, here is a docker instance of the code-server editor that demonstrates the behaviour: 

http://vultr01.p2lab.com:8080
password: b174c59894a38db016661d57

Just open the file ./project/lorem.txt and try to scroll with two fingers. 

I replicated the issue using the trackpad on the iPad Magic Keyboard on the 2020 iPad Pro with iPadOS 13.4 installed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1675085</commentid>
    <comment_count>6</comment_count>
    <who name="Alexandre Santos">alsantos123</who>
    <bug_when>2020-07-26 06:40:45 -0700</bug_when>
    <thetext>This is happening in more projects than I realized. Hope soon I can do more work done with iPadOS and trackpad.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1676250</commentid>
    <comment_count>7</comment_count>
    <who name="">rigel</who>
    <bug_when>2020-07-29 17:19:56 -0700</bug_when>
    <thetext>Can be reproduced easily here: https://ace.c9.io/build/kitchen-sink.html

I would love to code more with my iPad Pro + Magic Keyboard :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1686183</commentid>
    <comment_count>8</comment_count>
    <who name="Jaimyn">webkit</who>
    <bug_when>2020-09-06 06:28:25 -0700</bug_when>
    <thetext>Just wanted to say I’ve been trying to use code-server (in browser VS Code) and this bug is unfortunately a show stopper. It would be great to be able to use my iPad and magic keyboard to code in the browser. :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1692268</commentid>
    <comment_count>9</comment_count>
    <who name="KR">krunal.rao78</who>
    <bug_when>2020-09-26 19:32:27 -0700</bug_when>
    <thetext>Same here, iPad iOS 14 user with magic keyboard, code-server is not usable as it requires constantly touching the screen for scrolling.
Also overleaf.com, the most prominent online Latex editor, has the same issue: scrolling with the trackpad results in the whole page scrolling instead of the code editor window (free accounts available if testing needed), the PDF preview window works fine instead.
Is there a way to prioritize this? As the availability of native apps of this kind is constrained on the iPad, these web solutions are critical to a more serious use of the iPad...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1694007</commentid>
    <comment_count>10</comment_count>
    <who name="J.R.">mail</who>
    <bug_when>2020-10-02 02:13:49 -0700</bug_when>
    <thetext>This, alongside the fact that I also can‘t use a third party browser engine on iOS which would behave differently, frustrates me to a point that I consider returning my newly bought iPad Pro + Magic Keyboard, as I can‘t really do the productive work I was hoping to do on it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1696558</commentid>
    <comment_count>11</comment_count>
    <who name="KR">krunal.rao78</who>
    <bug_when>2020-10-10 19:04:22 -0700</bug_when>
    <thetext>This ticket should be updated: the issue persists with iOS 14 latest.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1700089</commentid>
    <comment_count>12</comment_count>
    <who name="Anmol Sethi">hi</who>
    <bug_when>2020-10-20 23:56:05 -0700</bug_when>
    <thetext>Could reproduce this within the iOS simulator with a debug build of master. Scrolling doesn&apos;t work on https://ace.c9.io/build/kitchen-sink.html!

As far as I can tell I can&apos;t build webkit for iPad and run it on there directly so I assume there&apos;s some closed source code related to running WebKit on iOS devices.

But since I can reproduce in the simulator, the bug/problem is very likely in the open source code so hopefully I can contribute a fix.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1700090</commentid>
    <comment_count>13</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2020-10-21 00:11:18 -0700</bug_when>
    <thetext>(In reply to Anmol Sethi from comment #12)
&gt; But since I can reproduce in the simulator, the bug/problem is very likely
&gt; in the open source code so hopefully I can contribute a fix.

While ordinarily I would welcome and encourage help implementing this missing feature, fixing this particular thing in a performant way (without e.g. synchronous IPC on every scroll event) is going to involve coordination with other parts of iOS, so would be pretty tricky to work on as an open source patch (but you are definitely welcome and encouraged to contribute to WebKit in other ways if you want!).

Also, do know that while I can&apos;t comment on the timing of fixes, I am absolutely aware of this and know that it is important.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1705614</commentid>
    <comment_count>14</comment_count>
    <who name="Ian Ownbey">imownbey</who>
    <bug_when>2020-11-08 13:51:08 -0800</bug_when>
    <thetext>This is also broken on the web IDE for Ethereum Studio (iPad Air with magic keyboard iPad OS 14.2) https://studio.ethereum.org/5fa8653126b473001237039f?openFile=contracts/HelloWorld.sol</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1713482</commentid>
    <comment_count>15</comment_count>
      <attachid>415851</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2020-12-10 04:04:12 -0800</bug_when>
    <thetext>Created attachment 415851
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1713483</commentid>
    <comment_count>16</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2020-12-10 04:04:36 -0800</bug_when>
    <thetext>Test is incomplete, and there are a few weird bugs, but we can start the review process.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1713484</commentid>
    <comment_count>17</comment_count>
      <attachid>415852</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2020-12-10 04:16:36 -0800</bug_when>
    <thetext>Created attachment 415852
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1713485</commentid>
    <comment_count>18</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2020-12-10 04:16:51 -0800</bug_when>
    <thetext>Separately we should see if there are any normal wheel event layout tests we can turn on.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1713486</commentid>
    <comment_count>19</comment_count>
      <attachid>415853</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2020-12-10 04:18:15 -0800</bug_when>
    <thetext>Created attachment 415853
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1713491</commentid>
    <comment_count>20</comment_count>
      <attachid>415856</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2020-12-10 04:52:07 -0800</bug_when>
    <thetext>Created attachment 415856
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1713494</commentid>
    <comment_count>21</comment_count>
      <attachid>415856</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2020-12-10 05:01:02 -0800</bug_when>
    <thetext>Comment on attachment 415856
Patch

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

&gt; Source/WebKit/UIProcess/API/ios/WKWebViewIOS.mm:1649
&gt; +        completion(false);

s/false/NO/

&gt; Source/WebKit/UIProcess/WebPageProxy.cpp:2640
&gt; +void WebPageProxy::dispatchWheelEventWithoutScrolling(const WebWheelEvent&amp; event, bool isFirstEventInGesture, bool hasNonPassiveWheelHandlers, CompletionHandler&lt;void(bool)&gt;&amp;&amp; completionHandler)

Simon is going to want real types for the arguments probably

&gt; Tools/TestWebKitAPI/Tests/ios/WKScrollViewTests.mm:124
&gt; +        &quot;&lt;style&gt;#scrollable { width: 200px; height: 200px; }&lt;/style&gt;&quot;

Not actually scrollable, probably shouldn&apos;t use that name.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1713495</commentid>
    <comment_count>22</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2020-12-10 05:03:45 -0800</bug_when>
    <thetext>(In reply to Tim Horton from comment #16)
&gt; Test is incomplete, and there are a few weird bugs, but we can start the
&gt; review process.

Weird bugs (for follow ups):
- moogmusic + various custom test pages work, Zara and VSCode don&apos;t. Not sure why.
- Sometimes when rubber-banding with outstanding async scroll events, the scroll view buzzes between two scroll offsets. This might not be our bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1713624</commentid>
    <comment_count>23</comment_count>
      <attachid>415856</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2020-12-10 11:13:36 -0800</bug_when>
    <thetext>Comment on attachment 415856
Patch

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

&gt; Source/WTF/wtf/PlatformEnableCocoa.h:639
&gt; +#if !defined(ENABLE_WHEEL_EVENT_REGIONS) &amp;&amp; (PLATFORM(IOS) || PLATFORM(MACCATALYST))
&gt; +#define ENABLE_WHEEL_EVENT_REGIONS 1
&gt; +#endif

Can&apos;t you just combine this with the:
#if !defined(ENABLE_WHEEL_EVENT_REGIONS) &amp;&amp; PLATFORM(MAC)
#define ENABLE_WHEEL_EVENT_REGIONS 1
#endif

higher up?

&gt; Source/WebKit/UIProcess/API/ios/WKWebViewIOS.mm:1602
&gt; +    WebCore::IntPoint scrollLocation = WebCore::roundedIntPoint([scrollEvent locationInView:_contentView.get()]);

Is this right with insets, zooming etc etc?

&gt; Source/WebKit/UIProcess/API/ios/WKWebViewIOS.mm:1605
&gt; +    bool hasPassiveWheelHandlers = eventListeners.contains(WebCore::EventListenerRegionType::Wheel);

This isn&apos;t the region of passive handlers. This is the region of all handlers, so this should be hasWheelHandlers

&gt; Source/WebKit/UIProcess/API/ios/WKWebViewIOS.mm:1606
&gt; +    bool hasNonPassiveWheelHandlers = eventListeners.contains(WebCore::EventListenerRegionType::NonPassiveWheel);

This region is the subset with active handlers.

&gt; Source/WebKit/UIProcess/API/ios/WKWebViewIOS.mm:1608
&gt; +    if (!hasPassiveWheelHandlers &amp;&amp; !hasNonPassiveWheelHandlers) {

I think you only want to early return on ! hasWheelHandlers

&gt; Source/WebKit/UIProcess/API/ios/WKWebViewIOS.mm:1613
&gt; +    if (scrollEvent.phase == UIScrollPhaseMayBegin) {

Test this before paying the cost of looking at regions?

&gt; Source/WebKit/UIProcess/API/ios/WKWebViewIOS.mm:1622
&gt; +    bool isPreventable = hasNonPassiveWheelHandlers &amp;&amp; _currentScrollGestureWasInitiallyPrevented.valueOr(isFirstEventInGesture);

We call this Cancelable

&gt; Source/WebKit/UIProcess/API/ios/WKWebViewIOS.mm:1625
&gt; +    WebKit::WebWheelEvent event = {

Can we share this with other WebWheelEvent building code? It would be easy to get things wrong, e.g. approximateWallTime(). How are there no phases passed down?

&gt; Source/WebKit/UIProcess/API/ios/WKWebViewIOS.mm:1636
&gt; +    _page-&gt;dispatchWheelEventWithoutScrolling(event, isFirstEventInGesture, hasNonPassiveWheelHandlers, [weakSelf = WeakObjCPtr&lt;WKWebView&gt;(self), strongCompletion = makeBlockPtr(completion), isPreventable, isFirstEventInGesture](bool handled) {

isFirstEventInGesture should be available by inspecting the event

&gt; Source/WebKit/UIProcess/PageClient.h:473
&gt; +    virtual void handleAsynchronousPreventableScrollEvent(UIScrollView *, UIScrollEvent *, void (^completion)(BOOL handled)) = 0;

Having Objective-C in this header seems wrong?
Cancelable

&gt; Source/WebKit/UIProcess/RemoteLayerTree/ios/ScrollingTreeScrollingNodeDelegateIOS.h:69
&gt; +    void handleAsynchronousPreventableScrollEvent(UIScrollView *, UIScrollEvent *, void (^completion)(BOOL handled));

Cancelable

&gt; Source/WebKit/UIProcess/WebPageProxy.h:1838
&gt; +    void dispatchWheelEventWithoutScrolling(const WebWheelEvent&amp;, bool isFirstEventInGesture, bool hasNonPassiveWheelHandlers, CompletionHandler&lt;void(bool)&gt;&amp;&amp;);

Instead of the &quot;WithoutScrolling&quot; can you pass OptionSet&lt;WheelEventProcessingSteps&gt; ?

&gt; Source/WebKit/WebProcess/WebPage/WebPage.cpp:2886
&gt; +    bool isPreventable = hasNonPassiveWheelHandlers &amp;&amp; m_currentScrollGestureWasInitiallyPrevented.valueOr(isFirstEventInGesture);

isCancelable

&gt; Source/WebKit/WebProcess/WebPage/WebPage.h:1374
&gt; +    void dispatchWheelEventWithoutScrolling(const WebWheelEvent&amp;, bool isFirstEventInGesture, bool hasNonPassiveWheelHandlers, CompletionHandler&lt;void(bool)&gt;&amp;&amp;);

Let&apos;s call them activeHandlers

&gt; Source/WebKit/WebProcess/WebPage/WebPage.h:2187
&gt; +    Optional&lt;bool&gt; m_currentScrollGestureWasInitiallyPrevented;

I think this is just an alias of EventHandler&apos;s     Optional&lt;WheelScrollGestureState&gt; m_wheelScrollGestureState ? Can you avoid storing state in two places?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1713667</commentid>
    <comment_count>24</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2020-12-10 12:41:19 -0800</bug_when>
    <thetext>(In reply to Simon Fraser (smfr) from comment #23)
&gt; Comment on attachment 415856 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=415856&amp;action=review
&gt; 
&gt; &gt; Source/WTF/wtf/PlatformEnableCocoa.h:639
&gt; &gt; +#if !defined(ENABLE_WHEEL_EVENT_REGIONS) &amp;&amp; (PLATFORM(IOS) || PLATFORM(MACCATALYST))
&gt; &gt; +#define ENABLE_WHEEL_EVENT_REGIONS 1
&gt; &gt; +#endif
&gt; 
&gt; Can&apos;t you just combine this with the:
&gt; #if !defined(ENABLE_WHEEL_EVENT_REGIONS) &amp;&amp; PLATFORM(MAC)
&gt; #define ENABLE_WHEEL_EVENT_REGIONS 1
&gt; #endif
&gt; 
&gt; higher up?

Sure.

&gt; &gt; Source/WebKit/UIProcess/API/ios/WKWebViewIOS.mm:1602
&gt; &gt; +    WebCore::IntPoint scrollLocation = WebCore::roundedIntPoint([scrollEvent locationInView:_contentView.get()]);
&gt; 
&gt; Is this right with insets, zooming etc etc?

It&apos;s always in content coordinates. It seems to work perfectly with insets and scrolling and zooming.

&gt; &gt; Source/WebKit/UIProcess/API/ios/WKWebViewIOS.mm:1605
&gt; &gt; +    bool hasPassiveWheelHandlers = eventListeners.contains(WebCore::EventListenerRegionType::Wheel);
&gt; 
&gt; This isn&apos;t the region of passive handlers. This is the region of all
&gt; handlers, so this should be hasWheelHandlers

Ah!

&gt; &gt; Source/WebKit/UIProcess/API/ios/WKWebViewIOS.mm:1606
&gt; &gt; +    bool hasNonPassiveWheelHandlers = eventListeners.contains(WebCore::EventListenerRegionType::NonPassiveWheel);
&gt; 
&gt; This region is the subset with active handlers.
&gt; 
&gt; &gt; Source/WebKit/UIProcess/API/ios/WKWebViewIOS.mm:1608
&gt; &gt; +    if (!hasPassiveWheelHandlers &amp;&amp; !hasNonPassiveWheelHandlers) {
&gt; 
&gt; I think you only want to early return on ! hasWheelHandlers

Oh! Not a correctness problem, just unnecessary. Will change!

&gt; &gt; Source/WebKit/UIProcess/API/ios/WKWebViewIOS.mm:1613
&gt; &gt; +    if (scrollEvent.phase == UIScrollPhaseMayBegin) {
&gt; 
&gt; Test this before paying the cost of looking at regions?

Of course.

&gt; &gt; Source/WebKit/UIProcess/API/ios/WKWebViewIOS.mm:1622
&gt; &gt; +    bool isPreventable = hasNonPassiveWheelHandlers &amp;&amp; _currentScrollGestureWasInitiallyPrevented.valueOr(isFirstEventInGesture);
&gt; 
&gt; We call this Cancelable

Sure!

&gt; &gt; Source/WebKit/UIProcess/API/ios/WKWebViewIOS.mm:1625
&gt; &gt; +    WebKit::WebWheelEvent event = {
&gt; 
&gt; Can we share this with other WebWheelEvent building code? It would be easy
&gt; to get things wrong, e.g. approximateWallTime(). How are there no phases
&gt; passed down?

I will look. I don&apos;t think we /need/ the phases, where this is going, but since it appears they are accurate, we can plumb them along?

&gt; &gt; Source/WebKit/UIProcess/API/ios/WKWebViewIOS.mm:1636
&gt; &gt; +    _page-&gt;dispatchWheelEventWithoutScrolling(event, isFirstEventInGesture, hasNonPassiveWheelHandlers, [weakSelf = WeakObjCPtr&lt;WKWebView&gt;(self), strongCompletion = makeBlockPtr(completion), isPreventable, isFirstEventInGesture](bool handled) {
&gt; 
&gt; isFirstEventInGesture should be available by inspecting the event

Only if we plumb the phases :)

&gt; &gt; Source/WebKit/UIProcess/PageClient.h:473
&gt; &gt; +    virtual void handleAsynchronousPreventableScrollEvent(UIScrollView *, UIScrollEvent *, void (^completion)(BOOL handled)) = 0;
&gt; 
&gt; Having Objective-C in this header seems wrong?
&gt; Cancelable

Which ObjC! We&apos;ve got other ObjC ptrs (and they&apos;re valid in C) and blocks are C.

&gt; &gt; Source/WebKit/UIProcess/RemoteLayerTree/ios/ScrollingTreeScrollingNodeDelegateIOS.h:69
&gt; &gt; +    void handleAsynchronousPreventableScrollEvent(UIScrollView *, UIScrollEvent *, void (^completion)(BOOL handled));
&gt; 
&gt; Cancelable

Sure OK :D

&gt; &gt; Source/WebKit/UIProcess/WebPageProxy.h:1838
&gt; &gt; +    void dispatchWheelEventWithoutScrolling(const WebWheelEvent&amp;, bool isFirstEventInGesture, bool hasNonPassiveWheelHandlers, CompletionHandler&lt;void(bool)&gt;&amp;&amp;);
&gt; 
&gt; Instead of the &quot;WithoutScrolling&quot; can you pass
&gt; OptionSet&lt;WheelEventProcessingSteps&gt; ?

Here&apos;s the reason I didn&apos;t: after the first event in a gesture, there is a time window before the UI process knows if it was handled or not, in which we might get more events (and send them to the WP). The WP already knows whether we need to Blocking or NonBlocking, but the UI process doesn&apos;t.

So I could send empty vs. MainThreadForScrolling/ScrollingThread, and have the WP add the DOMEventDispatch ones, but can&apos;t send a fully formed WheelEventProcessingSteps (and honestly, the MainThreadForScrolling/ScrollingThread ones would be a bit weird for the UI process to deal in too, though I&apos;d never be sending those).

Thoughts?

&gt; &gt; Source/WebKit/WebProcess/WebPage/WebPage.cpp:2886
&gt; &gt; +    bool isPreventable = hasNonPassiveWheelHandlers &amp;&amp; m_currentScrollGestureWasInitiallyPrevented.valueOr(isFirstEventInGesture);
&gt; 
&gt; isCancelable
&gt; 
&gt; &gt; Source/WebKit/WebProcess/WebPage/WebPage.h:1374
&gt; &gt; +    void dispatchWheelEventWithoutScrolling(const WebWheelEvent&amp;, bool isFirstEventInGesture, bool hasNonPassiveWheelHandlers, CompletionHandler&lt;void(bool)&gt;&amp;&amp;);
&gt; 
&gt; Let&apos;s call them activeHandlers

OK!

&gt; &gt; Source/WebKit/WebProcess/WebPage/WebPage.h:2187
&gt; &gt; +    Optional&lt;bool&gt; m_currentScrollGestureWasInitiallyPrevented;
&gt; 
&gt; I think this is just an alias of EventHandler&apos;s    
&gt; Optional&lt;WheelScrollGestureState&gt; m_wheelScrollGestureState ? Can you avoid
&gt; storing state in two places?

Will check!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1713784</commentid>
    <comment_count>25</comment_count>
      <attachid>415951</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2020-12-10 17:27:55 -0800</bug_when>
    <thetext>Created attachment 415951
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1713843</commentid>
    <comment_count>26</comment_count>
      <attachid>415975</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2020-12-11 00:42:59 -0800</bug_when>
    <thetext>Created attachment 415975
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1713941</commentid>
    <comment_count>27</comment_count>
      <attachid>415975</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2020-12-11 10:12:20 -0800</bug_when>
    <thetext>Comment on attachment 415975
Patch

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

&gt; Source/WebKit/ChangeLog:29
&gt; +        If the event is not preventable, we will synchronously reply that it was

cancelable

&gt; Source/WebKit/Shared/ios/WebIOSEventFactory.mm:162
&gt; +        WebKit::WebEvent::Wheel, scrollLocation, scrollLocation, delta, { } /* wheelTicks */, WebKit::WebWheelEvent::Granularity::ScrollByPixelWheelEvent, false, toWebPhase(event.phase), WebKit::WebWheelEvent::PhaseNone, true, 1, delta, { }, MonotonicTime::fromRawSeconds(event.timestamp).approximateWallTime()

I would put this one per line but  ¯\_(ツ)_/¯

&gt; Source/WebKit/UIProcess/API/Cocoa/WKWebViewInternal.h:232
&gt; +    Optional&lt;bool&gt; _currentScrollGestureWasInitiallyPrevented;

Can this be a Optional&lt;WheelScrollGestureState&gt;?

&gt; Source/WebKit/UIProcess/API/ios/WKWebViewIOS.mm:1627
&gt; +        if (!strongSelf)
&gt; +            return;

Is it OK to not call the completion handler here?

&gt; Source/WebKit/UIProcess/API/ios/WKWebViewIOS.mm:1629
&gt; +        if (isCancelable) {

OK to not call strongCompletion() if not cancelable?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1713955</commentid>
    <comment_count>28</comment_count>
      <attachid>415975</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2020-12-11 10:39:23 -0800</bug_when>
    <thetext>Comment on attachment 415975
Patch

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

&gt;&gt; Source/WebKit/Shared/ios/WebIOSEventFactory.mm:162
&gt;&gt; +        WebKit::WebEvent::Wheel, scrollLocation, scrollLocation, delta, { } /* wheelTicks */, WebKit::WebWheelEvent::Granularity::ScrollByPixelWheelEvent, false, toWebPhase(event.phase), WebKit::WebWheelEvent::PhaseNone, true, 1, delta, { }, MonotonicTime::fromRawSeconds(event.timestamp).approximateWallTime()
&gt; 
&gt; I would put this one per line but  ¯\_(ツ)_/¯

Heh, I had it one per line and thought someone would not like it. I&apos;ll put it back!

&gt;&gt; Source/WebKit/UIProcess/API/Cocoa/WKWebViewInternal.h:232
&gt;&gt; +    Optional&lt;bool&gt; _currentScrollGestureWasInitiallyPrevented;
&gt; 
&gt; Can this be a Optional&lt;WheelScrollGestureState&gt;?

Why not!

&gt;&gt; Source/WebKit/UIProcess/API/ios/WKWebViewIOS.mm:1627
&gt;&gt; +            return;
&gt; 
&gt; Is it OK to not call the completion handler here?

Guess we should probably still call it. Don&apos;t think it matters.

&gt;&gt; Source/WebKit/UIProcess/API/ios/WKWebViewIOS.mm:1629
&gt;&gt; +        if (isCancelable) {
&gt; 
&gt; OK to not call strongCompletion() if not cancelable?

If it&apos;s not cancelable, we called it synchronously below!!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1714084</commentid>
    <comment_count>29</comment_count>
      <attachid>416045</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2020-12-11 14:01:36 -0800</bug_when>
    <thetext>Created attachment 416045
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1714100</commentid>
    <comment_count>30</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2020-12-11 14:59:49 -0800</bug_when>
    <thetext>Committed r270712: &lt;https://trac.webkit.org/changeset/270712&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 416045.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1714550</commentid>
    <comment_count>31</comment_count>
    <who name="Ryan Haddad">ryanhaddad</who>
    <bug_when>2020-12-14 12:39:03 -0800</bug_when>
    <thetext>Follow up build fix in https://trac.webkit.org/changeset/270759/webkit</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1717255</commentid>
    <comment_count>32</comment_count>
    <who name="Lei Zhang">rawlencecn</who>
    <bug_when>2021-01-05 02:31:46 -0800</bug_when>
    <thetext>(In reply to Tim Horton from comment #29)
&gt; Created attachment 416045 [details]
&gt; Patch

hi, Tim. Will this patch take effect in the next iPadOS version?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1721899</commentid>
    <comment_count>33</comment_count>
    <who name="KR">krunal.rao78</who>
    <bug_when>2021-01-23 22:57:45 -0800</bug_when>
    <thetext>Is it confirmed that the (In reply to Tim Horton from comment #22)
&gt; (In reply to Tim Horton from comment #16)
&gt; &gt; Test is incomplete, and there are a few weird bugs, but we can start the
&gt; &gt; review process.
&gt; 
&gt; Weird bugs (for follow ups):
&gt; - moogmusic + various custom test pages work, Zara and VSCode don&apos;t. Not
&gt; sure why.
&gt; - Sometimes when rubber-banding with outstanding async scroll events, the
&gt; scroll view buzzes between two scroll offsets. This might not be our bug.

Is it confirmed that the final fix solves the vscode issue?
It&apos;s not clear whether this comment still applies or not.

Can be tested at:
https://vscode-web-test-playground.azurewebsites.net/?enter=true

Thank you</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1721902</commentid>
    <comment_count>34</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2021-01-24 01:27:11 -0800</bug_when>
    <thetext>(In reply to KR from comment #33)
&gt; Is it confirmed that the (In reply to Tim Horton from comment #22)
&gt; &gt; (In reply to Tim Horton from comment #16)
&gt; &gt; &gt; Test is incomplete, and there are a few weird bugs, but we can start the
&gt; &gt; &gt; review process.
&gt; &gt; 
&gt; &gt; Weird bugs (for follow ups):
&gt; &gt; - moogmusic + various custom test pages work, Zara and VSCode don&apos;t. Not
&gt; &gt; sure why.
&gt; &gt; - Sometimes when rubber-banding with outstanding async scroll events, the
&gt; &gt; scroll view buzzes between two scroll offsets. This might not be our bug.
&gt; 
&gt; Is it confirmed that the final fix solves the vscode issue?
&gt; It&apos;s not clear whether this comment still applies or not.
&gt; 
&gt; Can be tested at:
&gt; https://vscode-web-test-playground.azurewebsites.net/?enter=true
&gt; 
&gt; Thank you

Yeah, there was a follow up that fixed VSCode IIRC: https://trac.webkit.org/changeset/271000/webkit</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1748755</commentid>
    <comment_count>35</comment_count>
    <who name="inikolic@microsoft.com">inikolic</who>
    <bug_when>2021-04-09 09:24:52 -0700</bug_when>
    <thetext>Hi,

VS Code engineer here.
This does not seem fixed on my iPad 14.4.2 and one of my colleagues tried 14.5 beta 2 and there it is also not fixed.
Which iPad version should contain this fix?

For reference here&apos;s the related VS Code issue https://github.com/microsoft/vscode/issues/106232</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1748756</commentid>
    <comment_count>36</comment_count>
    <who name="inikolic@microsoft.com">inikolic</who>
    <bug_when>2021-04-09 09:25:22 -0700</bug_when>
    <thetext>Hi,

VS Code engineer here.
This does not seem fixed on my iPad 14.4.2 and one of my colleagues tried 14.5 beta 2 and there it is also not fixed.
Which iPad version should contain this fix?

For reference here&apos;s the related VS Code issue https://github.com/microsoft/vscode/issues/106232</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1748834</commentid>
    <comment_count>37</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2021-04-09 13:07:54 -0700</bug_when>
    <thetext>(In reply to inikolic@microsoft.com from comment #36)
&gt; Hi,
&gt; 
&gt; VS Code engineer here.
&gt; This does not seem fixed on my iPad 14.4.2 and one of my colleagues tried
&gt; 14.5 beta 2 and there it is also not fixed.
&gt; Which iPad version should contain this fix?
&gt; 
&gt; For reference here&apos;s the related VS Code issue
&gt; https://github.com/microsoft/vscode/issues/106232

The link above (https://vscode-web-test-playground.azurewebsites.net/?enter=true) works fine for me on the iOS 14.5 beta. I would expect it to work in beta 2, though don&apos;t have that handy to test. Can you test again with a more recent beta? (I can confirm that all of these changes are /not/ in iOS 14.4.x)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1748837</commentid>
    <comment_count>38</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2021-04-09 13:10:58 -0700</bug_when>
    <thetext>(In reply to Tim Horton from comment #37)
&gt; (In reply to inikolic@microsoft.com from comment #36)
&gt; &gt; Hi,
&gt; &gt; 
&gt; &gt; VS Code engineer here.
&gt; &gt; This does not seem fixed on my iPad 14.4.2 and one of my colleagues tried
&gt; &gt; 14.5 beta 2 and there it is also not fixed.
&gt; &gt; Which iPad version should contain this fix?
&gt; &gt; 
&gt; &gt; For reference here&apos;s the related VS Code issue
&gt; &gt; https://github.com/microsoft/vscode/issues/106232
&gt; 
&gt; The link above
&gt; (https://vscode-web-test-playground.azurewebsites.net/?enter=true) works
&gt; fine for me on the iOS 14.5 beta. I would expect it to work in beta 2,
&gt; though don&apos;t have that handy to test. Can you test again with a more recent
&gt; beta? (I can confirm that all of these changes are /not/ in iOS 14.4.x)

Also, when testing: I&apos;m not sure if this is a VSCode bug or a WebKit bug, but you seem to need to focus the text editor before it will scroll.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1749682</commentid>
    <comment_count>39</comment_count>
    <who name="inikolic@microsoft.com">inikolic</who>
    <bug_when>2021-04-13 07:56:35 -0700</bug_when>
    <thetext>Thanks a lot for your quick reply!
I have updated iPad to latest 14.5 beta and I can confirm that this indeed has been fixed.
I see the issue that the VS Code Editor has to be focused in order for this to work, for that I will continue the discussion in the VS Code issue</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1749685</commentid>
    <comment_count>40</comment_count>
    <who name="inikolic@microsoft.com">inikolic</who>
    <bug_when>2021-04-13 08:17:39 -0700</bug_when>
    <thetext>A community member gave me a good tip:
once the address bar is hidden on Safari you can nicely scroll in the editor even before clicking it. This also allows other parts of the UI to be scrolled.

Why would the Safari address bar influence scrolling?
Is it possible that the address bar somehow eats up the scroll events?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1749792</commentid>
    <comment_count>41</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2021-04-13 12:22:50 -0700</bug_when>
    <thetext>(In reply to inikolic@microsoft.com from comment #39)
&gt; Thanks a lot for your quick reply!
&gt; I have updated iPad to latest 14.5 beta and I can confirm that this indeed
&gt; has been fixed.

Great!

&gt; I see the issue that the VS Code Editor has to be focused in order for this
&gt; to work, for that I will continue the discussion in the VS Code issue

Less great!

(In reply to inikolic@microsoft.com from comment #40)
&gt; A community member gave me a good tip:
&gt; once the address bar is hidden on Safari you can nicely scroll in the editor
&gt; even before clicking it. This also allows other parts of the UI to be
&gt; scrolled.
&gt; 
&gt; Why would the Safari address bar influence scrolling?
&gt; Is it possible that the address bar somehow eats up the scroll events?

In a simple test page, as well as other complicated live pages, I still get `wheel` events when the Safari UI is not squished, so I don&apos;t think this is a universal problem. Maybe it&apos;s content specific? Anyway, if it turns out to be a WebKit thing, please definitely file a new bug and Cc me!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1762347</commentid>
    <comment_count>42</comment_count>
    <who name="inikolic@microsoft.com">inikolic</who>
    <bug_when>2021-05-21 03:14:24 -0700</bug_when>
    <thetext>Sorry for the slow reply, I was side-tracked.
So this seems somewhat connected to https://github.com/microsoft/vscode/issues/122653

I plan to investigate further on our side, but it seems there are two modes:
1) When the keyboard appears and editor is read write. Then mouse scrolling works, however mouse selection does not work
2) When the editor is read only and there is no keyboard it is the opposite. Mouse scrolling does not work, however mouse selection works</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1762398</commentid>
    <comment_count>43</comment_count>
    <who name="inikolic@microsoft.com">inikolic</who>
    <bug_when>2021-05-21 07:04:59 -0700</bug_when>
    <thetext>Created this one for missing wheel events https://bugs.webkit.org/show_bug.cgi?id=226080
Created this one for the selection https://bugs.webkit.org/show_bug.cgi?id=226082
Though we have a workaround for that one</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>415851</attachid>
            <date>2020-12-10 04:04:12 -0800</date>
            <delta_ts>2020-12-10 04:25:28 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-210071-20201210040411.patch</filename>
            <type>text/plain</type>
            <size>37621</size>
            <attacher name="Tim Horton">thorton</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcwNDM1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDMzZTNhZjVkNGY3MmUxNDlhYTYyNTBi
Y2M4YmNlODgxODhlNTM5OTEuLjkxMTBhNDU3MTdkOWEwNzQ5NmI0YTRmNGE5ZmYyMmU4MTI3YmQw
ZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMjAtMTItMTAgIFRpbSBIb3J0b24gIDx0aW1vdGh5
X2hvcnRvbkBhcHBsZS5jb20+CisKKyAgICAgICAgVHJhY2twYWQgYW5kIE1vdXNlIHNjcm9sbCBl
dmVudHMgb24gaVBhZCBvbmx5IGZpcmUgInBvaW50ZXJtb3ZlIiAtLSBub3QgIndoZWVsIgorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjEwMDcxCisgICAg
ICAgIDxyZGFyOi8vcHJvYmxlbS81NDYxNjg1Mz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICAqIHd0Zi9QbGF0Zm9ybUVuYWJsZUNvY29hLmg6CisgICAg
ICAgIEVuYWJsZSB3aGVlbCBldmVudCByZWdpb25zIG9uIGlPUyArIG1hY0NhdGFseXN0LgorCiAy
MDIwLTEyLTAzICBBZGFtIFJvYmVuICA8YXJvYmVuQGFwcGxlLmNvbT4KIAogICAgICAgICBBZG9w
dCBGQUxMQkFDS19QTEFURk9STQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9n
IGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDdhZTI4OTMwYjc0ZmJmZDczMDFkNjhm
OWIxYjBiY2Y3OGE4NmM5ZjcuLjI2MGFkY2Y1Y2Y1NGQ1Mzg1ZWU1ODQxNTE5YjExM2QzNGM5ZWVl
YWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMSBAQAorMjAyMC0xMi0xMCAgVGltIEhvcnRvbiAg
PHRpbW90aHlfaG9ydG9uQGFwcGxlLmNvbT4KKworICAgICAgICBUcmFja3BhZCBhbmQgTW91c2Ug
c2Nyb2xsIGV2ZW50cyBvbiBpUGFkIG9ubHkgZmlyZSAicG9pbnRlcm1vdmUiIC0tIG5vdCAid2hl
ZWwiCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTAw
NzEKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzU0NjE2ODUzPgorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogcGFnZS9FdmVudEhhbmRsZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjpoYW5kbGVXaGVlbEV2ZW50SW50ZXJuYWwp
OgorICAgICAgICBGaXggYSBtaW5vciBsb2dpYyBlcnJvciB3aGVuIFdIRUVMX0VWRU5UX0xBVENI
SU5HIGlzIG9mZjsgYWxsb3dTY3JvbGxpbmcKKyAgICAgICAgd291bGQgYWx3YXlzIGJlIHRydWUs
IGV2ZW4gaWYgdGhlIHNldCBvZiBwcm9jZXNzaW5nIHN0ZXBzIGRvZXMgbm90IGluY2x1ZGUgYW55
IHNjcm9sbGluZyBzdGVwcy4KKworICAgICAgICAqIHJlbmRlcmluZy9FdmVudFJlZ2lvbi5oOgor
ICAgICAgICAoV2ViQ29yZTo6RXZlbnRSZWdpb246OmVuY29kZSBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpFdmVudFJlZ2lvbjo6ZGVjb2RlKToKKyAgICAgICAgRW5jb2RlL2RlY29kZSB0aGUg
d2hlZWwgYW5kIHBhc3NpdmUgd2hlZWwgZXZlbnQgcmVnaW9ucy4KKwogMjAyMC0xMi0wNCAgUGVu
ZyBMaXUgIDxwZW5nLmxpdTZAYXBwbGUuY29tPgogCiAgICAgICAgIFtNU0VdIE1vdmUgdHJhY2sg
YnVmZmVyIG1hbmFnZW1lbnQgZnJvbSBTb3VyY2VCdWZmZXIgdG8gU291cmNlQnVmZmVyUHJpdmF0
ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZwppbmRleCA2M2YzNDI5MDgyM2IxYzQ4Yzc3MWEzYzRmMzg1MmNhMjIzNTNlNDRkLi44
NjBkYmMzYTk2MDBiZjM0MTlkZmUzOTJmOTAzODVmYTcyNjgwYWRmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDYxIEBACisyMDIwLTEyLTEwICBUaW0gSG9ydG9uICA8dGltb3RoeV9ob3J0b25AYXBwbGUu
Y29tPgorCisgICAgICAgIFRyYWNrcGFkIGFuZCBNb3VzZSBzY3JvbGwgZXZlbnRzIG9uIGlQYWQg
b25seSBmaXJlICJwb2ludGVybW92ZSIgLS0gbm90ICJ3aGVlbCIKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxMDA3MQorICAgICAgICA8cmRhcjovL3By
b2JsZW0vNTQ2MTY4NTM+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgKiBQbGF0Zm9ybS9zcGkvaW9zL1VJS2l0U1BJLmg6CisgICAgICAgIEFkZCBzb21l
IFNQSS4KKworICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3SW50ZXJuYWwu
aDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2lvcy9XS1dlYlZpZXdJT1MuaDoKKyAgICAgICAg
KiBVSVByb2Nlc3MvQVBJL2lvcy9XS1dlYlZpZXdJT1MubW06CisgICAgICAgICgtW1dLV2ViVmll
dyBfc2V0dXBTY3JvbGxBbmRDb250ZW50Vmlld3NdKToKKyAgICAgICAgRW5hYmxlIGFzeW5jIFVJ
U2Nyb2xsRXZlbnQgaGFuZGxpbmcgZm9yIFdLU2Nyb2xsVmlldy4KKworICAgICAgICAoLVtXS1dl
YlZpZXcgX3Njcm9sbFZpZXc6YXN5bmNocm9ub3VzbHlIYW5kbGVTY3JvbGxFdmVudDpjb21wbGV0
aW9uOl0pOgorICAgICAgICBBZG9wdCBuZXcgVUlLaXQgU1BJIHRvIGFzeW5jaHJvbm91c2x5IGRl
ZmVyIFVJU2Nyb2xsRXZlbnRzLgorICAgICAgICBXZSBwYXNzIHRoZW0gdG8gdGhlIFdlYiBDb250
ZW50IHByb2Nlc3MsIHdoZXJlIHRoZXkgYXJlIHByb2Nlc3NlZCAKKyAgICAgICAgKm9ubHkqIGZv
ciBldmVudCBoYW5kbGluZywgbm90IGZvciBzY3JvbGxpbmcuCisKKyAgICAgICAgSWYgdGhlIGV2
ZW50IGlzIG5vdCBwcmV2ZW50YWJsZSwgd2Ugd2lsbCBzeW5jaHJvbm91c2x5IHJlcGx5IHRoYXQg
aXQgd2FzCisgICAgICAgIG5vdCBoYW5kbGVkOyBpZiBpdCBpcyBwcmV2ZW50YWJsZSwgb3Igd2Ug
ZG9uJ3QgeWV0IGtub3cgaWYgaXQgd2lsbCBiZSwKKyAgICAgICAgd2UnbGwgd2FpdCB0byBoZWFy
IGJhY2sgZnJvbSB0aGUgV2ViIENvbnRlbnQgcHJvY2VzcyBiZWZvcmUgcmVwbHlpbmcuCisKKyAg
ICAgICAgVUlLaXQgd2lsbCB3YWl0IHVudGlsIG91ciByZXBseSB0byBhcHBseSB0aGUgVUlTY3Jv
bGxFdmVudCB0byB0aGUgVUlTY3JvbGxWaWV3LgorCisgICAgICAgICogVUlQcm9jZXNzL1BhZ2VD
bGllbnQuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL2lvcy9SZW1vdGVM
YXllclRyZWVWaWV3cy5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvaW9z
L1JlbW90ZUxheWVyVHJlZVZpZXdzLm1tOgorICAgICAgICAoV2ViS2l0OjpldmVudExpc3RlbmVy
VHlwZXNBdFBvaW50KToKKyAgICAgICAgRXhwb3NlIGEgbWVjaGFuaXNtIGZvciByZXRyaWV2aW5n
IHRoZSBldmVudCBsaXN0ZW5lciB0eXBlcyBhdCBhIGdpdmVuIHBvaW50LAorICAgICAgICBzaW1p
bGFyIHRvIHRoZSBleGlzdGluZyBtZWNoYW5pc20gZm9yIHRvdWNoIGV2ZW50IGxpc3RlbmVycy4K
KworICAgICAgICAoLVtXS0NoaWxkU2Nyb2xsVmlldyBpbml0V2l0aEZyYW1lOl0pOgorICAgICAg
ICBFbmFibGUgYXN5bmMgVUlTY3JvbGxFdmVudCBoYW5kbGluZyBmb3IgV0tDaGlsZFNjcm9sbFZp
ZXcuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL2lvcy9TY3JvbGxpbmdU
cmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlSU9TLmg6CisgICAgICAgICogVUlQcm9jZXNzL1JlbW90
ZUxheWVyVHJlZS9pb3MvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZUlPUy5tbToK
KyAgICAgICAgKC1bV0tTY3JvbGxpbmdOb2RlU2Nyb2xsVmlld0RlbGVnYXRlIF9zY3JvbGxWaWV3
OmFzeW5jaHJvbm91c2x5SGFuZGxlU2Nyb2xsRXZlbnQ6Y29tcGxldGlvbjpdKToKKyAgICAgICAg
KFdlYktpdDo6U2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZUlPUzo6aGFuZGxlQXN5
bmNocm9ub3VzUHJldmVudGFibGVTY3JvbGxFdmVudCk6CisgICAgICAgIFBsdW1iIGFzeW5jIHNj
cm9sbCBldmVudHMgZm9yIHN1Yi1zY3JvbGxhYmxlIHJlZ2lvbnMgdGhyb3VnaCBQYWdlQ2xpZW50
CisgICAgICAgIHRvIFdLV2ViVmlldzsgd2UgZG9uJ3QgYWN0dWFsbHkgY2FyZSB3aGljaCBVSVNj
cm9sbFZpZXcgdGhleSdyZSBoYW5kZWQgdG8sCisgICAgICAgIHNpbmNlIHdlIHJlLWhpdC10ZXN0
IG91cnNlbHZlcy4KKworICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmRpc3BhdGNoV2hlZWxFdmVudFdpdGhvdXRTY3Jv
bGxpbmcpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaDoKKyAgICAgICAgKiBV
SVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLmg6CisgICAgICAgICogVUlQcm9jZXNzL2lv
cy9QYWdlQ2xpZW50SW1wbElPUy5tbToKKyAgICAgICAgKFdlYktpdDo6UGFnZUNsaWVudEltcGw6
OmhhbmRsZUFzeW5jaHJvbm91c1ByZXZlbnRhYmxlU2Nyb2xsRXZlbnQpOgorICAgICAgICAqIFdl
YlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6
d2hlZWxFdmVudCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmRpc3BhdGNoV2hlZWxFdmVu
dFdpdGhvdXRTY3JvbGxpbmcpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdl
Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW46CisK
IDIwMjAtMTItMDQgIFBlbmcgTGl1ICA8cGVuZy5saXU2QGFwcGxlLmNvbT4KIAogICAgICAgICBb
TVNFXSBNb3ZlIHRyYWNrIGJ1ZmZlciBtYW5hZ2VtZW50IGZyb20gU291cmNlQnVmZmVyIHRvIFNv
dXJjZUJ1ZmZlclByaXZhdGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtRW5h
YmxlQ29jb2EuaCBiL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtRW5hYmxlQ29jb2EuaAppbmRleCA1
YWRkYTg4NmVhMGU2NzY3ZjVmNzkwOTk4YjZhYjgxZTgxN2IwNmQ0Li41NTFiYjIxYzQyZGRlYzc0
MDM5M2RkMjZiNWY1YzU2NDliMjk3NTM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9QbGF0
Zm9ybUVuYWJsZUNvY29hLmgKKysrIGIvU291cmNlL1dURi93dGYvUGxhdGZvcm1FbmFibGVDb2Nv
YS5oCkBAIC02MzMsMyArNjMzLDcgQEAKICNpZiAhZGVmaW5lZChFTkFCTEVfU0VUX1dFQkNPTlRF
TlRfUFJPQ0VTU19JTkZPUk1BVElPTl9JTl9ORVRXT1JLX1BST0NFU1MpICYmIFBMQVRGT1JNKE1B
QykgJiYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+IDEyMDAwMAogI2RlZmluZSBF
TkFCTEVfU0VUX1dFQkNPTlRFTlRfUFJPQ0VTU19JTkZPUk1BVElPTl9JTl9ORVRXT1JLX1BST0NF
U1MgMQogI2VuZGlmCisKKyNpZiAhZGVmaW5lZChFTkFCTEVfV0hFRUxfRVZFTlRfUkVHSU9OUykg
JiYgKFBMQVRGT1JNKElPUykgfHwgUExBVEZPUk0oTUFDQ0FUQUxZU1QpKQorI2RlZmluZSBFTkFC
TEVfV0hFRUxfRVZFTlRfUkVHSU9OUyAxCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5k
bGVyLmNwcAppbmRleCA2YWJkZGIyNTYzZTkwNTFmOTRmMGVjODg2YjQ5OGFmYzdmNzFiNzg5Li5m
MDQwOTIwNzVlMDJmZTU5MzA2NDY5YmE5N2Q5MjYyZmM3ODY0YTE2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFn
ZS9FdmVudEhhbmRsZXIuY3BwCkBAIC0yOTA1LDEwICsyOTA1LDEzIEBAIGJvb2wgRXZlbnRIYW5k
bGVyOjpoYW5kbGVXaGVlbEV2ZW50SW50ZXJuYWwoY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50JiBl
dmVudCwgT3B0CiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIGJvb2wgaGFuZGxlZEV2ZW50
ID0gZmFsc2U7Ci0gICAgYm9vbCBhbGxvd1Njcm9sbGluZyA9IHRydWU7CisgICAgYm9vbCBhbGxv
d1Njcm9sbGluZyA9IG1fY3VycmVudFdoZWVsRXZlbnRBbGxvd3NTY3JvbGxpbmc7CisKICNpZiBF
TkFCTEUoV0hFRUxfRVZFTlRfTEFUQ0hJTkcpCi0gICAgYWxsb3dTY3JvbGxpbmcgPSBtX2N1cnJl
bnRXaGVlbEV2ZW50QWxsb3dzU2Nyb2xsaW5nICYmIG1fZnJhbWUucGFnZSgpLT5zY3JvbGxMYXRj
aGluZ0NvbnRyb2xsZXIoKS5sYXRjaGluZ0FsbG93c1Njcm9sbGluZ0luRnJhbWUobV9mcmFtZSwg
c2Nyb2xsYWJsZUFyZWEpOworICAgIGlmIChhbGxvd1Njcm9sbGluZykKKyAgICAgICAgYWxsb3dT
Y3JvbGxpbmcgPSBtX2ZyYW1lLnBhZ2UoKS0+c2Nyb2xsTGF0Y2hpbmdDb250cm9sbGVyKCkubGF0
Y2hpbmdBbGxvd3NTY3JvbGxpbmdJbkZyYW1lKG1fZnJhbWUsIHNjcm9sbGFibGVBcmVhKTsKICNl
bmRpZgorCiAgICAgaWYgKGFsbG93U2Nyb2xsaW5nKSB7CiAgICAgICAgIC8vIEZJWE1FOiBwcm9j
ZXNzV2hlZWxFdmVudEZvclNjcm9sbGluZygpIGlzIG9ubHkgY2FsbGVkIGZvciBGcmFtZVZpZXcg
c2Nyb2xsaW5nLCBub3Qgb3ZlcmZsb3cgc2Nyb2xsaW5nLCB3aGljaCBpcyBjb25mdXNpbmcuCiAg
ICAgICAgIGhhbmRsZWRFdmVudCA9IHByb2Nlc3NXaGVlbEV2ZW50Rm9yU2Nyb2xsaW5nKGV2ZW50
LCBzY3JvbGxhYmxlQXJlYSwgaGFuZGxpbmcpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL0V2ZW50UmVnaW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvRXZlbnRS
ZWdpb24uaAppbmRleCA2YzRmYWU2MzM3MjViN2U2ZThiZmQ5ZGVhOTg1OTE1YzgxMGM5NWZiLi4y
ZmY1ZTkzNjJmNmY0MjZmNzY5Yjk2YzliOGEyYTMxMzc4YzRmNzE4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvRXZlbnRSZWdpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvRXZlbnRSZWdpb24uaApAQCAtODIsNyArODIsNyBAQCBwdWJsaWM6CiAjZW5kaWYK
IAogI2lmIEVOQUJMRShXSEVFTF9FVkVOVF9SRUdJT05TKQotICAgIE9wdGlvblNldDxFdmVudExp
c3RlbmVyUmVnaW9uVHlwZT4gZXZlbnRMaXN0ZW5lclJlZ2lvblR5cGVzRm9yUG9pbnQoY29uc3Qg
SW50UG9pbnQmKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBPcHRpb25TZXQ8RXZlbnRMaXN0
ZW5lclJlZ2lvblR5cGU+IGV2ZW50TGlzdGVuZXJSZWdpb25UeXBlc0ZvclBvaW50KGNvbnN0IElu
dFBvaW50JikgY29uc3Q7CiAgICAgY29uc3QgUmVnaW9uJiBldmVudExpc3RlbmVyUmVnaW9uRm9y
VHlwZShFdmVudExpc3RlbmVyUmVnaW9uVHlwZSkgY29uc3Q7CiAjZW5kaWYKIApAQCAtMTI1LDYg
KzEyNSwxMCBAQCB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPgogdm9pZCBFdmVudFJlZ2lvbjo6ZW5j
b2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0CiB7CiAgICAgZW5jb2RlciA8PCBtX3JlZ2lvbjsK
KyNpZiBFTkFCTEUoV0hFRUxfRVZFTlRfUkVHSU9OUykKKyAgICBlbmNvZGVyIDw8IG1fd2hlZWxF
dmVudExpc3RlbmVyUmVnaW9uOworICAgIGVuY29kZXIgPDwgbV9ub25QYXNzaXZlV2hlZWxFdmVu
dExpc3RlbmVyUmVnaW9uOworI2VuZGlmCiAjaWYgRU5BQkxFKFRPVUNIX0FDVElPTl9SRUdJT05T
KQogICAgIGVuY29kZXIgPDwgbV90b3VjaEFjdGlvblJlZ2lvbnM7CiAjZW5kaWYKQEAgLTE0NCw2
ICsxNDgsMjIgQEAgT3B0aW9uYWw8RXZlbnRSZWdpb24+IEV2ZW50UmVnaW9uOjpkZWNvZGUoRGVj
b2RlciYgZGVjb2RlcikKICAgICBFdmVudFJlZ2lvbiBldmVudFJlZ2lvbjsKICAgICBldmVudFJl
Z2lvbi5tX3JlZ2lvbiA9IFdURk1vdmUoKnJlZ2lvbik7CiAKKyNpZiBFTkFCTEUoV0hFRUxfRVZF
TlRfUkVHSU9OUykKKyAgICBPcHRpb25hbDxSZWdpb24+IHdoZWVsRXZlbnRMaXN0ZW5lclJlZ2lv
bjsKKyAgICBkZWNvZGVyID4+IHdoZWVsRXZlbnRMaXN0ZW5lclJlZ2lvbjsKKyAgICBpZiAoIXdo
ZWVsRXZlbnRMaXN0ZW5lclJlZ2lvbikKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKwor
ICAgIGV2ZW50UmVnaW9uLm1fd2hlZWxFdmVudExpc3RlbmVyUmVnaW9uID0gV1RGTW92ZSgqd2hl
ZWxFdmVudExpc3RlbmVyUmVnaW9uKTsKKworICAgIE9wdGlvbmFsPFJlZ2lvbj4gbm9uUGFzc2l2
ZVdoZWVsRXZlbnRMaXN0ZW5lclJlZ2lvbjsKKyAgICBkZWNvZGVyID4+IG5vblBhc3NpdmVXaGVl
bEV2ZW50TGlzdGVuZXJSZWdpb247CisgICAgaWYgKCFub25QYXNzaXZlV2hlZWxFdmVudExpc3Rl
bmVyUmVnaW9uKQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAgZXZlbnRSZWdp
b24ubV9ub25QYXNzaXZlV2hlZWxFdmVudExpc3RlbmVyUmVnaW9uID0gV1RGTW92ZSgqbm9uUGFz
c2l2ZVdoZWVsRXZlbnRMaXN0ZW5lclJlZ2lvbik7CisjZW5kaWYKKwogI2lmIEVOQUJMRShUT1VD
SF9BQ1RJT05fUkVHSU9OUykKICAgICBPcHRpb25hbDxWZWN0b3I8UmVnaW9uPj4gdG91Y2hBY3Rp
b25SZWdpb25zOwogICAgIGRlY29kZXIgPj4gdG91Y2hBY3Rpb25SZWdpb25zOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9zcGkvaW9zL1VJS2l0U1BJLmggYi9Tb3VyY2UvV2Vi
S2l0L1BsYXRmb3JtL3NwaS9pb3MvVUlLaXRTUEkuaAppbmRleCAyNDE3Nzg5ZGJjMmZhOWVmYzhh
NDUyZTU5NDdlNThhMjY0NWYxNjc2Li5lMDhiMDk3YzEwNmFiMjE2MDEwMjljNDk5Nzc1NTE5OGJj
ODBmOGViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL3NwaS9pb3MvVUlLaXRT
UEkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL3NwaS9pb3MvVUlLaXRTUEkuaApAQCAt
NjIsNiArNjIsOCBAQAogI2ltcG9ydCA8VUlLaXQvVUlQcmVzZW50YXRpb25Db250cm9sbGVyX1By
aXZhdGUuaD4KICNpbXBvcnQgPFVJS2l0L1VJUmVzcG9uZGVyX1ByaXZhdGUuaD4KICNpbXBvcnQg
PFVJS2l0L1VJU2NlbmVfUHJpdmF0ZS5oPgorI2ltcG9ydCA8VUlLaXQvVUlTY3JvbGxFdmVudF9Q
cml2YXRlLmg+CisjaW1wb3J0IDxVSUtpdC9VSVNjcm9sbFZpZXdfRm9yV2ViS2l0T25seS5oPgog
I2ltcG9ydCA8VUlLaXQvVUlTY3JvbGxWaWV3X1ByaXZhdGUuaD4KICNpbXBvcnQgPFVJS2l0L1VJ
U3RyaW5nRHJhd2luZ19Qcml2YXRlLmg+CiAjaW1wb3J0IDxVSUtpdC9VSVRhYmxlVmlld0NlbGxf
UHJpdmF0ZS5oPgpAQCAtNDE2LDggKzQxOCwyNyBAQCB0eXBlZGVmIGVudW0gewogQHByb3BlcnR5
IChub25hdG9taWMsIGdldHRlcj1faW5kaWNhdG9ySW5zZXRBZGp1c3RtZW50QmVoYXZpb3IsIHNl
dHRlcj1fc2V0SW5kaWNhdG9ySW5zZXRBZGp1c3RtZW50QmVoYXZpb3I6KSBVSVNjcm9sbFZpZXdJ
bmRpY2F0b3JJbnNldEFkanVzdG1lbnRCZWhhdmlvciBpbmRpY2F0b3JJbnNldEFkanVzdG1lbnRC
ZWhhdmlvcjsKIEBwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSkgVUlFZGdlSW5zZXRzIF9z
eXN0ZW1Db250ZW50SW5zZXQ7CiBAcHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHkpIFVJRWRn
ZUluc2V0cyBfZWZmZWN0aXZlQ29udGVudEluc2V0OworQHByb3BlcnR5IChub25hdG9taWMsIGdl
dHRlcj1fYWxsb3dzQXN5bmNTY3JvbGxFdmVudCwgc2V0dGVyPV9zZXRBbGxvd3NBc3luY1Njcm9s
bEV2ZW50OikgQk9PTCBfYWxsb3dzQXN5bmNTY3JvbGxFdmVudDsKIEBlbmQKIAordHlwZWRlZiBO
U19FTlVNKE5TVUludGVnZXIsIFVJU2Nyb2xsUGhhc2UpIHsKKyAgICBVSVNjcm9sbFBoYXNlTm9u
ZSwKKyAgICBVSVNjcm9sbFBoYXNlTWF5QmVnaW4sCisgICAgVUlTY3JvbGxQaGFzZUJlZ2FuLAor
ICAgIFVJU2Nyb2xsUGhhc2VDaGFuZ2VkLAorICAgIFVJU2Nyb2xsUGhhc2VFbmRlZCwKKyAgICBV
SVNjcm9sbFBoYXNlQ2FuY2VsbGVkCit9OworCitAaW50ZXJmYWNlIFVJU2Nyb2xsRXZlbnQgOiBV
SUV2ZW50CisKK0Bwcm9wZXJ0eSAoYXNzaWduLCByZWFkb25seSkgVUlTY3JvbGxQaGFzZSBwaGFz
ZTsKKy0gKENHUG9pbnQpbG9jYXRpb25JblZpZXc6KFVJVmlldyAqKXZpZXc7CistIChDR1ZlY3Rv
cilfYWRqdXN0ZWRBY2NlbGVyYXRlZERlbHRhSW5WaWV3OihVSVZpZXcgKil2aWV3OworCitAZW5k
CisKKwogQGludGVyZmFjZSBOU1N0cmluZyAoVUlLaXREZXRhaWxzKQogLSAoQ0dTaXplKV9sZWdh
Y3lfc2l6ZVdpdGhGb250OihVSUZvbnQgKilmb250IGZvcldpZHRoOihDR0Zsb2F0KXdpZHRoIGxp
bmVCcmVha01vZGU6KE5TTGluZUJyZWFrTW9kZSlsaW5lQnJlYWtNb2RlOwogLSAoQ0dTaXplKV9s
ZWdhY3lfc2l6ZVdpdGhGb250OihVSUZvbnQgKilmb250IG1pbkZvbnRTaXplOihDR0Zsb2F0KW1p
bkZvbnRTaXplIGFjdHVhbEZvbnRTaXplOihDR0Zsb2F0ICopYWN0dWFsRm9udFNpemUgZm9yV2lk
dGg6KENHRmxvYXQpd2lkdGggbGluZUJyZWFrTW9kZTooTlNMaW5lQnJlYWtNb2RlKWxpbmVCcmVh
a01vZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tX
ZWJWaWV3SW50ZXJuYWwuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dl
YlZpZXdJbnRlcm5hbC5oCmluZGV4IGMwNWFkNzI0ZWQyMDM5MjFmNWViZWU0NzE3NTE1Nzk4MzM5
ZDYyZGIuLjMxZjgxY2UwZTllNGZlMjdlMmNlMTU5ZjlmMGQ0N2Q4OTlkNGZjOWMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdJbnRlcm5hbC5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdJbnRlcm5h
bC5oCkBAIC0yMjksNiArMjI5LDggQEAgY2xhc3MgVmlld0dlc3R1cmVDb250cm9sbGVyOwogICAg
IEJPT0wgX2hhc1NjaGVkdWxlZFZpc2libGVSZWN0VXBkYXRlOwogICAgIEJPT0wgX3Zpc2libGVD
b250ZW50UmVjdFVwZGF0ZVNjaGVkdWxlZEZyb21TY3JvbGxWaWV3SW5TdGFibGVTdGF0ZTsKIAor
ICAgIE9wdGlvbmFsPGJvb2w+IF9jdXJyZW50U2Nyb2xsR2VzdHVyZVdhc0luaXRpYWxseVByZXZl
bnRlZDsKKwogICAgIF9XS0RyYWdJbnRlcmFjdGlvblBvbGljeSBfZHJhZ0ludGVyYWN0aW9uUG9s
aWN5OwogCiAgICAgLy8gRm9yIHJlbGVhc2UtbG9nZ2luZyBmb3IgPHJkYXI6Ly9wcm9ibGVtLzM5
MjgxMjY5Pi4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9pb3MvV0tX
ZWJWaWV3SU9TLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvaW9zL1dLV2ViVmlld0lP
Uy5oCmluZGV4IGY3ZTJlMzMxZDFhMjRhZDE2ZmFiYTgyYzc3ODJiMzhiMWVmNDk5NWEuLjM5NDE1
ZTcyZTYyNDRmOWNjNTk1M2FiMjg2YmQ5ZTM0MzhjNzFlNDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9pb3MvV0tXZWJWaWV3SU9TLmgKKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL2lvcy9XS1dlYlZpZXdJT1MuaApAQCAtMjUsNiArMjUsOCBAQAogCiAj
aW1wb3J0ICJXS1dlYlZpZXdJbnRlcm5hbC5oIgogCitAY2xhc3MgVUlTY3JvbGxFdmVudDsKKwog
I2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAKIEBpbnRlcmZhY2UgV0tXZWJWaWV3IChXS1ZpZXdJ
bnRlcm5hbElPUykKQEAgLTEyNSw2ICsxMjcsMTEgQEAKIC0gKFdlYkNvcmU6OkZsb2F0U2l6ZSlh
Y3RpdmVWaWV3TGF5b3V0U2l6ZTooY29uc3QgQ0dSZWN0Jilib3VuZHM7CiAtICh2b2lkKV91cGRh
dGVTY3JvbGxWaWV3SW5zZXRBZGp1c3RtZW50QmVoYXZpb3I7CiAKKy0gKEJPT0wpX2VmZmVjdGl2
ZUFwcGVhcmFuY2VJc0Rhcms7CistIChCT09MKV9lZmZlY3RpdmVVc2VySW50ZXJmYWNlTGV2ZWxJ
c0VsZXZhdGVkOworCistICh2b2lkKV9zY3JvbGxWaWV3OihVSVNjcm9sbFZpZXcgKilzY3JvbGxW
aWV3IGFzeW5jaHJvbm91c2x5SGFuZGxlU2Nyb2xsRXZlbnQ6KFVJU2Nyb2xsRXZlbnQgKilzY3Jv
bGxFdmVudCBjb21wbGV0aW9uOih2b2lkICheKShCT09MIGhhbmRsZWQpKWNvbXBsZXRpb247CisK
IEBwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSkgV0tQYXNzd29yZFZpZXcgKl9wYXNzd29y
ZFZpZXc7CiBAcHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHkpIFdLV2ViVmlld0NvbnRlbnRQ
cm92aWRlclJlZ2lzdHJ5ICpfY29udGVudFByb3ZpZGVyUmVnaXN0cnk7CiBAcHJvcGVydHkgKG5v
bmF0b21pYywgcmVhZG9ubHkpIFdLU2VsZWN0aW9uR3JhbnVsYXJpdHkgX3NlbGVjdGlvbkdyYW51
bGFyaXR5OwpAQCAtMTM3LDkgKzE0NCw2IEBACiBAcHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9u
bHksIGdldHRlcj1faXNSZXRhaW5pbmdBY3RpdmVGb2N1c2VkU3RhdGUpIEJPT0wgX3JldGFpbmlu
Z0FjdGl2ZUZvY3VzZWRTdGF0ZTsKIEBwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSkgaW50
MzJfdCBfZGV2aWNlT3JpZW50YXRpb247CiAKLS0gKEJPT0wpX2VmZmVjdGl2ZUFwcGVhcmFuY2VJ
c0Rhcms7Ci0tIChCT09MKV9lZmZlY3RpdmVVc2VySW50ZXJmYWNlTGV2ZWxJc0VsZXZhdGVkOwot
CiBAZW5kCiAKICNlbmRpZiAvLyBQTEFURk9STShJT1NfRkFNSUxZKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2lvcy9XS1dlYlZpZXdJT1MubW0gYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvaW9zL1dLV2ViVmlld0lPUy5tbQppbmRleCA0Yjc2NjJhMTY0NTk0
ZGU2ZTQzZmU0NDQ0OGUwOTIzN2Q3MmJlZjMyLi5lMGRhOWNjYmM0MjJhNWE1ZTFhYTBlOTY5NDYz
MDdlMDdjMWNiZWE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvaW9z
L1dLV2ViVmlld0lPUy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvaW9zL1dL
V2ViVmlld0lPUy5tbQpAQCAtMjksOSArMjksMTEgQEAKICNpZiBQTEFURk9STShJT1NfRkFNSUxZ
KQogCiAjaW1wb3J0ICJGcm9udEJvYXJkU2VydmljZXNTUEkuaCIKKyNpbXBvcnQgIk5hdGl2ZVdl
YldoZWVsRXZlbnQuaCIKICNpbXBvcnQgIk5hdmlnYXRpb25TdGF0ZS5oIgogI2ltcG9ydCAiUmVt
b3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94eS5oIgogI2ltcG9ydCAiUmVtb3RlTGF5ZXJUcmVl
U2Nyb2xsaW5nUGVyZm9ybWFuY2VEYXRhLmgiCisjaW1wb3J0ICJSZW1vdGVMYXllclRyZWVWaWV3
cy5oIgogI2ltcG9ydCAiUmVtb3RlU2Nyb2xsaW5nQ29vcmRpbmF0b3JQcm94eS5oIgogI2ltcG9y
dCAiVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5LmgiCiAjaW1wb3J0ICJWaWV3R2VzdHVyZUNv
bnRyb2xsZXIuaCIKQEAgLTEzOSw2ICsxNDEsMTAgQEAgLSAodm9pZClfc2V0dXBTY3JvbGxBbmRD
b250ZW50Vmlld3MKICAgICBbX3Njcm9sbFZpZXcgc2V0SW50ZXJuYWxEZWxlZ2F0ZTpzZWxmXTsK
ICAgICBbX3Njcm9sbFZpZXcgc2V0Qm91bmNlc1pvb206WUVTXTsKIAorI2lmIEhBVkUoVUlTQ1JP
TExWSUVXX0FTWU5DSFJPTk9VU19TQ1JPTExfRVZFTlRfSEFORExJTkcpCisgICAgW19zY3JvbGxW
aWV3IF9zZXRBbGxvd3NBc3luY1Njcm9sbEV2ZW50OllFU107CisjZW5kaWYKKwogICAgIGlmIChb
X3Njcm9sbFZpZXcgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3Rvcihfc2V0QXZvaWRzSnVtcE9u
SW50ZXJydXB0ZWRCb3VuY2U6KV0pIHsKICAgICAgICAgW19zY3JvbGxWaWV3IHNldFRyYWNrc0lt
bWVkaWF0ZWx5V2hpbGVEZWNlbGVyYXRpbmc6Tk9dOwogICAgICAgICBbX3Njcm9sbFZpZXcgX3Nl
dEF2b2lkc0p1bXBPbkludGVycnVwdGVkQm91bmNlOllFU107CkBAIC0xNTkwLDYgKzE1OTYsNTgg
QEAgLSAoQ0dQb2ludClfc2Nyb2xsVmlldzooVUlTY3JvbGxWaWV3ICopc2Nyb2xsVmlldyBhZGp1
c3RlZE9mZnNldEZvck9mZnNldDooQ0dQb2kKICAgICByZXR1cm4gYWRqdXN0ZWRDb250ZW50T2Zm
c2V0OwogfQogCistICh2b2lkKV9zY3JvbGxWaWV3OihVSVNjcm9sbFZpZXcgKilzY3JvbGxWaWV3
IGFzeW5jaHJvbm91c2x5SGFuZGxlU2Nyb2xsRXZlbnQ6KFVJU2Nyb2xsRXZlbnQgKilzY3JvbGxF
dmVudCBjb21wbGV0aW9uOih2b2lkICheKShCT09MIGhhbmRsZWQpKWNvbXBsZXRpb24KK3sKKyAg
ICBXZWJDb3JlOjpJbnRQb2ludCBzY3JvbGxMb2NhdGlvbiA9IFdlYkNvcmU6OnJvdW5kZWRJbnRQ
b2ludChbc2Nyb2xsRXZlbnQgbG9jYXRpb25JblZpZXc6X2NvbnRlbnRWaWV3LmdldCgpXSk7CisK
KyAgICBhdXRvIGV2ZW50TGlzdGVuZXJzID0gV2ViS2l0OjpldmVudExpc3RlbmVyVHlwZXNBdFBv
aW50KF9jb250ZW50Vmlldy5nZXQoKSwgc2Nyb2xsTG9jYXRpb24pOworICAgIGJvb2wgaGFzUGFz
c2l2ZVdoZWVsSGFuZGxlcnMgPSBldmVudExpc3RlbmVycy5jb250YWlucyhXZWJDb3JlOjpFdmVu
dExpc3RlbmVyUmVnaW9uVHlwZTo6V2hlZWwpOworICAgIGJvb2wgaGFzTm9uUGFzc2l2ZVdoZWVs
SGFuZGxlcnMgPSBldmVudExpc3RlbmVycy5jb250YWlucyhXZWJDb3JlOjpFdmVudExpc3RlbmVy
UmVnaW9uVHlwZTo6Tm9uUGFzc2l2ZVdoZWVsKTsKKworICAgIGlmICghaGFzUGFzc2l2ZVdoZWVs
SGFuZGxlcnMgJiYgIWhhc05vblBhc3NpdmVXaGVlbEhhbmRsZXJzKSB7CisgICAgICAgIGNvbXBs
ZXRpb24oTk8pOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgaWYgKHNjcm9sbEV2ZW50
LnBoYXNlID09IFVJU2Nyb2xsUGhhc2VNYXlCZWdpbikgeworICAgICAgICBjb21wbGV0aW9uKE5P
KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGJvb2wgaXNGaXJzdEV2ZW50SW5HZXN0
dXJlID0gc2Nyb2xsRXZlbnQucGhhc2UgPT0gVUlTY3JvbGxQaGFzZUJlZ2FuOworICAgIGlmIChp
c0ZpcnN0RXZlbnRJbkdlc3R1cmUpCisgICAgICAgIF9jdXJyZW50U2Nyb2xsR2VzdHVyZVdhc0lu
aXRpYWxseVByZXZlbnRlZCA9IFdURjo6bnVsbG9wdDsKKworICAgIGJvb2wgaXNQcmV2ZW50YWJs
ZSA9IGhhc05vblBhc3NpdmVXaGVlbEhhbmRsZXJzICYmIF9jdXJyZW50U2Nyb2xsR2VzdHVyZVdh
c0luaXRpYWxseVByZXZlbnRlZC52YWx1ZU9yKGlzRmlyc3RFdmVudEluR2VzdHVyZSk7CisgICAg
Q0dWZWN0b3IgZGVsdGEgPSBbc2Nyb2xsRXZlbnQgX2FkanVzdGVkQWNjZWxlcmF0ZWREZWx0YUlu
VmlldzpfY29udGVudFZpZXcuZ2V0KCldOworCisgICAgV2ViS2l0OjpXZWJXaGVlbEV2ZW50IGV2
ZW50ID0geworICAgICAgICBXZWJLaXQ6OldlYkV2ZW50OjpXaGVlbCwKKyAgICAgICAgc2Nyb2xs
TG9jYXRpb24sCisgICAgICAgIHNjcm9sbExvY2F0aW9uLAorICAgICAgICBXZWJDb3JlOjpGbG9h
dFNpemUoZGVsdGEuZHgsIGRlbHRhLmR5KSwKKyAgICAgICAgeyB9LCAvLyB3aGVlbFRpY2tzCisg
ICAgICAgIFdlYktpdDo6TmF0aXZlV2ViV2hlZWxFdmVudDo6R3JhbnVsYXJpdHk6OlNjcm9sbEJ5
UGl4ZWxXaGVlbEV2ZW50LAorICAgICAgICB7IH0sIC8vIG1vZGlmaWVycworICAgICAgICBNb25v
dG9uaWNUaW1lOjpmcm9tUmF3U2Vjb25kcyhzY3JvbGxFdmVudC50aW1lc3RhbXApLmFwcHJveGlt
YXRlV2FsbFRpbWUoKQorICAgIH07CisKKyAgICBfcGFnZS0+ZGlzcGF0Y2hXaGVlbEV2ZW50V2l0
aG91dFNjcm9sbGluZyhldmVudCwgaXNGaXJzdEV2ZW50SW5HZXN0dXJlLCBoYXNOb25QYXNzaXZl
V2hlZWxIYW5kbGVycywgW3dlYWtTZWxmID0gV2Vha09iakNQdHI8V0tXZWJWaWV3PihzZWxmKSwg
c3Ryb25nQ29tcGxldGlvbiA9IG1ha2VCbG9ja1B0cihjb21wbGV0aW9uKSwgaXNQcmV2ZW50YWJs
ZSwgaXNGaXJzdEV2ZW50SW5HZXN0dXJlXShib29sIGhhbmRsZWQpIHsKKyAgICAgICAgYXV0byBz
dHJvbmdTZWxmID0gd2Vha1NlbGYuZ2V0KCk7CisgICAgICAgIGlmICghc3Ryb25nU2VsZikKKyAg
ICAgICAgICAgIHJldHVybjsKKworICAgICAgICBpZiAoaXNQcmV2ZW50YWJsZSkgeworICAgICAg
ICAgICAgaWYgKGlzRmlyc3RFdmVudEluR2VzdHVyZSkKKyAgICAgICAgICAgICAgICBzdHJvbmdT
ZWxmLT5fY3VycmVudFNjcm9sbEdlc3R1cmVXYXNJbml0aWFsbHlQcmV2ZW50ZWQgPSBoYW5kbGVk
OworICAgICAgICAgICAgc3Ryb25nQ29tcGxldGlvbihoYW5kbGVkKTsKKyAgICAgICAgfQorICAg
IH0pOworCisgICAgaWYgKCFpc1ByZXZlbnRhYmxlKQorICAgICAgICBjb21wbGV0aW9uKGZhbHNl
KTsKK30KKwogLSAodm9pZClzY3JvbGxWaWV3RGlkU2Nyb2xsOihVSVNjcm9sbFZpZXcgKilzY3Jv
bGxWaWV3CiB7CiAgICAgaWYgKCFbc2VsZiB1c2VzU3RhbmRhcmRDb250ZW50Vmlld10gJiYgW19j
dXN0b21Db250ZW50VmlldyByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKHdlYl9zY3JvbGxW
aWV3RGlkU2Nyb2xsOildKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGFn
ZUNsaWVudC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGFnZUNsaWVudC5oCmluZGV4IGM0
YzcxODc0YTEwZGE5YjU0MWZlZTI4MjA4MDhjMWU1MGQzZmE5MmIuLjRjY2E0MmY3ZjA2OWI3ZGY4
YjQwOWUyZmIxOWRiMDAzZDVhNDYxMDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1BhZ2VDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QYWdlQ2xpZW50
LmgKQEAgLTY0LDYgKzY0LDggQEAgT0JKQ19DTEFTUyBOU01lbnU7CiBPQkpDX0NMQVNTIE5TU2V0
OwogT0JKQ19DTEFTUyBOU1RleHRBbHRlcm5hdGl2ZXM7CiBPQkpDX0NMQVNTIFVJR2VzdHVyZVJl
Y29nbml6ZXI7CitPQkpDX0NMQVNTIFVJU2Nyb2xsRXZlbnQ7CitPQkpDX0NMQVNTIFVJU2Nyb2xs
VmlldzsKIE9CSkNfQ0xBU1MgX1dLUmVtb3RlT2JqZWN0UmVnaXN0cnk7CiAKICNpZiBVU0UoQVBQ
S0lUKQpAQCAtNDY2LDYgKzQ2OCw4IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZGlzYWJs
ZUluc3BlY3Rvck5vZGVTZWFyY2goKSA9IDA7CiAKICAgICB2aXJ0dWFsIHZvaWQgaGFuZGxlQXV0
b2NvcnJlY3Rpb25Db250ZXh0KGNvbnN0IFdlYkF1dG9jb3JyZWN0aW9uQ29udGV4dCYpID0gMDsK
KworICAgIHZpcnR1YWwgdm9pZCBoYW5kbGVBc3luY2hyb25vdXNQcmV2ZW50YWJsZVNjcm9sbEV2
ZW50KFVJU2Nyb2xsVmlldyAqLCBVSVNjcm9sbEV2ZW50ICosIHZvaWQgKF5jb21wbGV0aW9uKShC
T09MIGhhbmRsZWQpKSA9IDA7CiAjZW5kaWYKIAogICAgIC8vIEF1eGlsaWFyeSBDbGllbnQgQ3Jl
YXRpb24KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJl
ZS9pb3MvUmVtb3RlTGF5ZXJUcmVlVmlld3MuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Jl
bW90ZUxheWVyVHJlZS9pb3MvUmVtb3RlTGF5ZXJUcmVlVmlld3MuaAppbmRleCAzM2ExNDYxMGI4
YWZiY2M5NjZmOTgyNmU3YjQ1MzYzN2E2YjlkNTZlLi4yYjhkMGFiMGVlYjkxZDRmMWYxMTg2NmI5
NDE5NmRhMWYzY2JhZDFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1v
dGVMYXllclRyZWUvaW9zL1JlbW90ZUxheWVyVHJlZVZpZXdzLmgKKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL2lvcy9SZW1vdGVMYXllclRyZWVWaWV3cy5oCkBA
IC03MSw2ICs3MSw4IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogT3B0aW9uU2V0PFdlYkNvcmU6OlRv
dWNoQWN0aW9uPiB0b3VjaEFjdGlvbnNGb3JQb2ludChVSVZpZXcgKnJvb3RWaWV3LCBjb25zdCBX
ZWJDb3JlOjpJbnRQb2ludCYpOwogVUlTY3JvbGxWaWV3ICpmaW5kQWN0aW5nU2Nyb2xsUGFyZW50
KFVJU2Nyb2xsVmlldyAqLCBjb25zdCBSZW1vdGVMYXllclRyZWVIb3N0Jik7CiAKK09wdGlvblNl
dDxXZWJDb3JlOjpFdmVudExpc3RlbmVyUmVnaW9uVHlwZT4gZXZlbnRMaXN0ZW5lclR5cGVzQXRQ
b2ludChVSVZpZXcgKnJvb3RWaWV3LCBjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYpOworCiAjaWYg
RU5BQkxFKEVESVRBQkxFX1JFR0lPTikKIGJvb2wgbWF5Q29udGFpbkVkaXRhYmxlRWxlbWVudHNJ
blJlY3QoVUlWaWV3ICpyb290VmlldywgY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0Jik7CiAjZW5k
aWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9p
b3MvUmVtb3RlTGF5ZXJUcmVlVmlld3MubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1v
dGVMYXllclRyZWUvaW9zL1JlbW90ZUxheWVyVHJlZVZpZXdzLm1tCmluZGV4IDExYmIwMWIzNzJj
ZTY5N2I2ZTYzYTQzZTZhNDZkZjgyNDNjYWRjMzguLjRjYjZjNTMzMzIyMDk3OGJlNmFmYjViYjAx
YTc1MmIyMTRiNGFiMmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90
ZUxheWVyVHJlZS9pb3MvUmVtb3RlTGF5ZXJUcmVlVmlld3MubW0KKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL2lvcy9SZW1vdGVMYXllclRyZWVWaWV3cy5tbQpA
QCAtMjA1LDYgKzIwNSwzNCBAQCBPcHRpb25TZXQ8V2ViQ29yZTo6VG91Y2hBY3Rpb24+IHRvdWNo
QWN0aW9uc0ZvclBvaW50KFVJVmlldyAqcm9vdFZpZXcsIGNvbnN0IFdlYgogICAgIHJldHVybiBu
b2RlLT5ldmVudFJlZ2lvbigpLnRvdWNoQWN0aW9uc0ZvclBvaW50KFdlYkNvcmU6OkludFBvaW50
KGhpdFZpZXdQb2ludCkpOwogfQogCitPcHRpb25TZXQ8V2ViQ29yZTo6RXZlbnRMaXN0ZW5lclJl
Z2lvblR5cGU+IGV2ZW50TGlzdGVuZXJUeXBlc0F0UG9pbnQoVUlWaWV3ICpyb290VmlldywgY29u
c3QgV2ViQ29yZTo6SW50UG9pbnQmIHBvaW50KQoreworICAgIFZlY3RvcjxVSVZpZXcgKiwgMTY+
IHZpZXdzQXRQb2ludDsKKyAgICBjb2xsZWN0RGVzY2VuZGFudFZpZXdzQXRQb2ludCh2aWV3c0F0
UG9pbnQsIHJvb3RWaWV3LCBwb2ludCwgbmlsKTsKKworICAgIGlmICh2aWV3c0F0UG9pbnQuaXNF
bXB0eSgpKQorICAgICAgICByZXR1cm4geyB9OworCisgICAgVUlWaWV3ICpoaXRWaWV3ID0gbmls
OworICAgIGZvciAoYXV0byAqdmlldyA6IFdURjo6bWFrZVJldmVyc2VkUmFuZ2Uodmlld3NBdFBv
aW50KSkgeworICAgICAgICBpZiAoW3ZpZXcgaXNLaW5kT2ZDbGFzczpbV0tDb21wb3NpdGluZ1Zp
ZXcgY2xhc3NdXSkgeworICAgICAgICAgICAgaGl0VmlldyA9IHZpZXc7CisgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgfQorICAgIH0KKworICAgIGlmICghaGl0VmlldykKKyAgICAgICAgcmV0
dXJuIHsgfTsKKworICAgIENHUG9pbnQgaGl0Vmlld1BvaW50ID0gW2hpdFZpZXcgY29udmVydFBv
aW50OnBvaW50IGZyb21WaWV3OnJvb3RWaWV3XTsKKworICAgIGF1dG8qIG5vZGUgPSBSZW1vdGVM
YXllclRyZWVOb2RlOjpmb3JDQUxheWVyKGhpdFZpZXcubGF5ZXIpOworICAgIGlmICghbm9kZSkK
KyAgICAgICAgcmV0dXJuIHsgfTsKKworICAgIHJldHVybiBub2RlLT5ldmVudFJlZ2lvbigpLmV2
ZW50TGlzdGVuZXJSZWdpb25UeXBlc0ZvclBvaW50KFdlYkNvcmU6OkludFBvaW50KGhpdFZpZXdQ
b2ludCkpOworfQorCiBVSVNjcm9sbFZpZXcgKmZpbmRBY3RpbmdTY3JvbGxQYXJlbnQoVUlTY3Jv
bGxWaWV3ICpzY3JvbGxWaWV3LCBjb25zdCBSZW1vdGVMYXllclRyZWVIb3N0JiBob3N0KQogewog
ICAgIEhhc2hTZXQ8V2ViQ29yZTo6R3JhcGhpY3NMYXllcjo6UGxhdGZvcm1MYXllcklEPiBzY3Jv
bGxlcnNUb1NraXA7CkBAIC00MDQsNiArNDMyLDEwIEBAIC0gKGluc3RhbmNldHlwZSlpbml0V2l0
aEZyYW1lOihDR1JlY3QpZnJhbWUKICAgICBzZWxmLmNvbnRlbnRJbnNldEFkanVzdG1lbnRCZWhh
dmlvciA9IFVJU2Nyb2xsVmlld0NvbnRlbnRJbnNldEFkanVzdG1lbnROZXZlcjsKICNlbmRpZgog
CisjaWYgSEFWRShVSVNDUk9MTFZJRVdfQVNZTkNIUk9OT1VTX1NDUk9MTF9FVkVOVF9IQU5ETElO
RykKKyAgICBbc2VsZiBfc2V0QWxsb3dzQXN5bmNTY3JvbGxFdmVudDpZRVNdOworI2VuZGlmCisK
ICAgICByZXR1cm4gc2VsZjsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvUmVtb3RlTGF5ZXJUcmVlL2lvcy9TY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRl
SU9TLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvaW9zL1Njcm9s
bGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVJT1MuaAppbmRleCAzMTA1MDJjOGE2NDRjZGZm
OGM1ZjMyNjgyZDcwMzRlZWFlMjExNWFkLi4zMjY5ZmQyNmNjNDMzOTI1MmYzNGNmNjg5MGRiMmFh
NmNhMDZkZjMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXll
clRyZWUvaW9zL1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVJT1MuaAorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvaW9zL1Njcm9sbGluZ1RyZWVT
Y3JvbGxpbmdOb2RlRGVsZWdhdGVJT1MuaApAQCAtNjUsNiArNjUsOCBAQCBwdWJsaWM6CiAKICAg
ICB2b2lkIHJlcG9zaXRpb25TY3JvbGxpbmdMYXllcnMoKTsKIAorICAgIHZvaWQgaGFuZGxlQXN5
bmNocm9ub3VzUHJldmVudGFibGVTY3JvbGxFdmVudChVSVNjcm9sbFZpZXcgKiwgVUlTY3JvbGxF
dmVudCAqLCB2b2lkICheY29tcGxldGlvbikoQk9PTCBoYW5kbGVkKSk7CisKICAgICBPcHRpb25T
ZXQ8V2ViQ29yZTo6VG91Y2hBY3Rpb24+IGFjdGl2ZVRvdWNoQWN0aW9ucygpIGNvbnN0IHsgcmV0
dXJuIG1fYWN0aXZlVG91Y2hBY3Rpb25zOyB9CiAgICAgdm9pZCBjb21wdXRlQWN0aXZlVG91Y2hB
Y3Rpb25zRm9yR2VzdHVyZVJlY29nbml6ZXIoVUlHZXN0dXJlUmVjb2duaXplciopOwogICAgIHZv
aWQgY2xlYXJBY3RpdmVUb3VjaEFjdGlvbnMoKSB7IG1fYWN0aXZlVG91Y2hBY3Rpb25zID0geyB9
OyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUv
aW9zL1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVJT1MubW0gYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvaW9zL1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdO
b2RlRGVsZWdhdGVJT1MubW0KaW5kZXggYWIzNzQ3MjBhMzI4NDdmN2U1Y2M1N2JiYzU3OTc0ZDFl
MzA0NjUwZi4uZmY3MGI4MzM0N2Y4MWI3MThmNTdhNjM2YzhiYjhhYjJhYTI3NGYxMyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL2lvcy9TY3JvbGxp
bmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlSU9TLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1JlbW90ZUxheWVyVHJlZS9pb3MvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxl
Z2F0ZUlPUy5tbQpAQCAtMTc2LDYgKzE3NiwxMSBAQCAtIChDR1BvaW50KV9zY3JvbGxWaWV3OihV
SVNjcm9sbFZpZXcgKilzY3JvbGxWaWV3IGFkanVzdGVkT2Zmc2V0Rm9yT2Zmc2V0OihDR1BvaQog
ICAgIHJldHVybiBhZGp1c3RlZENvbnRlbnRPZmZzZXQ7CiB9CiAKKy0gKHZvaWQpX3Njcm9sbFZp
ZXc6KFVJU2Nyb2xsVmlldyAqKXNjcm9sbFZpZXcgYXN5bmNocm9ub3VzbHlIYW5kbGVTY3JvbGxF
dmVudDooVUlTY3JvbGxFdmVudCAqKXNjcm9sbEV2ZW50IGNvbXBsZXRpb246KHZvaWQgKF4pKEJP
T0wgaGFuZGxlZCkpY29tcGxldGlvbgoreworICAgIF9zY3JvbGxpbmdUcmVlTm9kZURlbGVnYXRl
LT5oYW5kbGVBc3luY2hyb25vdXNQcmV2ZW50YWJsZVNjcm9sbEV2ZW50KHNjcm9sbFZpZXcsIHNj
cm9sbEV2ZW50LCBjb21wbGV0aW9uKTsKK30KKwogLSAodm9pZClzY3JvbGxWaWV3V2lsbEJlZ2lu
Wm9vbWluZzooVUlTY3JvbGxWaWV3ICopc2Nyb2xsVmlldyB3aXRoVmlldzooVUlWaWV3ICopdmll
dwogewogICAgIFtzZWxmIGNhbmNlbFBvaW50ZXJzRm9yR2VzdHVyZVJlY29nbml6ZXI6c2Nyb2xs
Vmlldy5waW5jaEdlc3R1cmVSZWNvZ25pemVyXTsKQEAgLTI5OCw2ICszMDMsMTIgQEAgdm9pZCBT
Y3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlSU9TOjpjb21taXRTdGF0ZUFmdGVyQ2hp
bGRyZW4oY29uc3QgU2Nyb2wKICAgICB9CiB9CiAKK3ZvaWQgU2Nyb2xsaW5nVHJlZVNjcm9sbGlu
Z05vZGVEZWxlZ2F0ZUlPUzo6aGFuZGxlQXN5bmNocm9ub3VzUHJldmVudGFibGVTY3JvbGxFdmVu
dChVSVNjcm9sbFZpZXcgKnNjcm9sbFZpZXcsIFVJU2Nyb2xsRXZlbnQgKnNjcm9sbEV2ZW50LCB2
b2lkICheY29tcGxldGlvbikoQk9PTCBoYW5kbGVkKSkKK3sKKyAgICBhdXRvJiBzY3JvbGxpbmdD
b29yZGluYXRvclByb3h5ID0gZG93bmNhc3Q8V2ViS2l0OjpSZW1vdGVTY3JvbGxpbmdUcmVlPihz
Y3JvbGxpbmdUcmVlKCkpLnNjcm9sbGluZ0Nvb3JkaW5hdG9yUHJveHkoKTsKKyAgICBzY3JvbGxp
bmdDb29yZGluYXRvclByb3h5LndlYlBhZ2VQcm94eSgpLnBhZ2VDbGllbnQoKS5oYW5kbGVBc3lu
Y2hyb25vdXNQcmV2ZW50YWJsZVNjcm9sbEV2ZW50KHNjcm9sbFZpZXcsIHNjcm9sbEV2ZW50LCBj
b21wbGV0aW9uKTsKK30KKwogdm9pZCBTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRl
SU9TOjpyZXBvc2l0aW9uU2Nyb2xsaW5nTGF5ZXJzKCkKIHsKICAgICBCRUdJTl9CTE9DS19PQkpD
X0VYQ0VQVElPTlMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQ
cm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCmluZGV4
IGNjMWJiYjRhNGFhYjgyZDExZGM2NmFjMmU0MWFmY2FmZTBjZTc4ODMuLjJiNGQ4MzhiNWM3YmMw
MTM1ZGNmZDFiNTRmNDY1YjM1MWM2MWI0NzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
UGFnZVByb3h5LmNwcApAQCAtMjYzNyw2ICsyNjM3LDExIEBAIHZvaWQgV2ViUGFnZVByb3h5Ojpm
bHVzaFBlbmRpbmdNb3VzZUV2ZW50Q2FsbGJhY2tzKCkKICAgICBtX2NhbGxiYWNrSGFuZGxlcnNB
ZnRlclByb2Nlc3NpbmdQZW5kaW5nTW91c2VFdmVudHMuY2xlYXIoKTsKIH0KIAordm9pZCBXZWJQ
YWdlUHJveHk6OmRpc3BhdGNoV2hlZWxFdmVudFdpdGhvdXRTY3JvbGxpbmcoY29uc3QgV2ViV2hl
ZWxFdmVudCYgZXZlbnQsIGJvb2wgaXNGaXJzdEV2ZW50SW5HZXN0dXJlLCBib29sIGhhc05vblBh
c3NpdmVXaGVlbEhhbmRsZXJzLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNvbXBs
ZXRpb25IYW5kbGVyKQoreworICAgIHNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6V2ViUGFn
ZTo6RGlzcGF0Y2hXaGVlbEV2ZW50V2l0aG91dFNjcm9sbGluZyhldmVudCwgaXNGaXJzdEV2ZW50
SW5HZXN0dXJlLCBoYXNOb25QYXNzaXZlV2hlZWxIYW5kbGVycyksIFdURk1vdmUoY29tcGxldGlv
bkhhbmRsZXIpKTsKK30KKwogdm9pZCBXZWJQYWdlUHJveHk6OmhhbmRsZVdoZWVsRXZlbnQoY29u
c3QgTmF0aXZlV2ViV2hlZWxFdmVudCYgZXZlbnQpCiB7CiAjaWYgRU5BQkxFKEFTWU5DX1NDUk9M
TElORykgJiYgUExBVEZPUk0oQ09DT0EpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJQYWdlUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94
eS5oCmluZGV4IDk4ZTg2MzZlOGViNjBjZDRhMDRiYjA4YThmOWYxMGJmNzk5YjJiN2UuLmU2MzZj
NGYyNWE3YzFkYTM4ZGE5MjEwODNiZjVmMzI0N2YyNjMxMGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYlBhZ2VQcm94eS5oCkBAIC0xODM1LDYgKzE4MzUsOCBAQCBwdWJsaWM6CiAgICAgdm9p
ZCBjcmVhdGVBcHBIaWdobGlnaHRJblNlbGVjdGVkUmFuZ2UoQ3JlYXRlTmV3R3JvdXBGb3JIaWdo
bGlnaHQpOwogI2VuZGlmCiAKKyAgICB2b2lkIGRpc3BhdGNoV2hlZWxFdmVudFdpdGhvdXRTY3Jv
bGxpbmcoY29uc3QgV2ViV2hlZWxFdmVudCYsIGJvb2wgaXNGaXJzdEV2ZW50SW5HZXN0dXJlLCBi
b29sIGhhc05vblBhc3NpdmVXaGVlbEhhbmRsZXJzLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJv
b2wpPiYmKTsKKwogcHJpdmF0ZToKICAgICBXZWJQYWdlUHJveHkoUGFnZUNsaWVudCYsIFdlYlBy
b2Nlc3NQcm94eSYsIFJlZjxBUEk6OlBhZ2VDb25maWd1cmF0aW9uPiYmKTsKICAgICB2b2lkIHBs
YXRmb3JtSW5pdGlhbGl6ZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
aW9zL1BhZ2VDbGllbnRJbXBsSU9TLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvUGFn
ZUNsaWVudEltcGxJT1MuaAppbmRleCBiZTAzMDFmYjdjYjE4YmFjN2NkZTM5MGVkM2NmMWE4NTU1
Yjk4ZDdkLi4wNTFlNmVlYjY5YTc2MWMyZTU5N2YyNjcwZGFhOGM3NjVmMTVlY2E3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJT1MuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJT1MuaApAQCAtMjcx
LDYgKzI3MSw4IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIHNob3dEaWN0YXRpb25BbHRlcm5hdGl2
ZVVJKGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYsIFdlYkNvcmU6OkRpY3RhdGlvbkNvbnRleHQp
IGZpbmFsOwogCisgICAgdm9pZCBoYW5kbGVBc3luY2hyb25vdXNQcmV2ZW50YWJsZVNjcm9sbEV2
ZW50KFVJU2Nyb2xsVmlldyAqLCBVSVNjcm9sbEV2ZW50ICosIHZvaWQgKF5jb21wbGV0aW9uKShC
T09MIGhhbmRsZWQpKSBmaW5hbDsKKwogICAgIFdlYWtPYmpDUHRyPFdLQ29udGVudFZpZXc+IG1f
Y29udGVudFZpZXc7CiAgICAgUmV0YWluUHRyPFdLRWRpdG9yVW5kb1RhcmdldD4gbV91bmRvVGFy
Z2V0OwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9QYWdlQ2xp
ZW50SW1wbElPUy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1w
bElPUy5tbQppbmRleCBiNmFiOTYyYjczMzQzOTIzMmJmN2RkOTJjOTZhNmIyMTJjMWE4NmQyLi4w
MTZkNzU3ZGY1OWI0MTFiMjZlNWVhMzRkYzgyNmI2ZDA0MDliYTM0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJT1MubW0KKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLm1tCkBAIC05NjEsNiArOTYx
LDExIEBAIHZvaWQgUGFnZUNsaWVudEltcGw6OnNldE1vdXNlRXZlbnRQb2xpY3koV2ViQ29yZTo6
TW91c2VFdmVudFBvbGljeSBwb2xpY3kpCiAjZW5kaWYKIH0KIAordm9pZCBQYWdlQ2xpZW50SW1w
bDo6aGFuZGxlQXN5bmNocm9ub3VzUHJldmVudGFibGVTY3JvbGxFdmVudChVSVNjcm9sbFZpZXcg
KnNjcm9sbFZpZXcsIFVJU2Nyb2xsRXZlbnQgKnNjcm9sbEV2ZW50LCB2b2lkICheY29tcGxldGlv
bikoQk9PTCBoYW5kbGVkKSkKK3sKKyAgICBbbV93ZWJWaWV3IF9zY3JvbGxWaWV3OnNjcm9sbFZp
ZXcgYXN5bmNocm9ub3VzbHlIYW5kbGVTY3JvbGxFdmVudDpzY3JvbGxFdmVudCBjb21wbGV0aW9u
OmNvbXBsZXRpb25dOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKIAogI2VuZGlmIC8vIFBM
QVRGT1JNKElPU19GQU1JTFkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJQYWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YlBhZ2UuY3BwCmluZGV4IGM0NDYzOGZlZDdiZDM4ZDYxZTk2NmNjZmUwMzQxMjYzNDY0MjZjZmIu
LmY3YWQ5MmQ3ZDkxOTZmOTAzYWE1NzE2OGJmOTUzMmJkYWUxYTRlMTggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCkBAIC0yODY0LDcgKzI4NjQsNyBA
QCBzdGF0aWMgYm9vbCBoYW5kbGVXaGVlbEV2ZW50KGNvbnN0IFdlYldoZWVsRXZlbnQmIHdoZWVs
RXZlbnQsIFBhZ2UqIHBhZ2UsIE9wdGlvbgogICAgIHJldHVybiBwYWdlLT51c2VySW5wdXRCcmlk
Z2UoKS5oYW5kbGVXaGVlbEV2ZW50KHBsYXRmb3JtV2hlZWxFdmVudCwgcHJvY2Vzc2luZ1N0ZXBz
KTsKIH0KIAotdm9pZCBXZWJQYWdlOjp3aGVlbEV2ZW50KGNvbnN0IFdlYldoZWVsRXZlbnQmIHdo
ZWVsRXZlbnQsIE9wdGlvblNldDxXaGVlbEV2ZW50UHJvY2Vzc2luZ1N0ZXBzPiBwcm9jZXNzaW5n
U3RlcHMpCitib29sIFdlYlBhZ2U6OndoZWVsRXZlbnQoY29uc3QgV2ViV2hlZWxFdmVudCYgd2hl
ZWxFdmVudCwgT3B0aW9uU2V0PFdoZWVsRXZlbnRQcm9jZXNzaW5nU3RlcHM+IHByb2Nlc3NpbmdT
dGVwcykKIHsKICAgICBtX3VzZXJBY3Rpdml0eS5pbXB1bHNlKCk7CiAKQEAgLTI4NzQsNiArMjg3
NCwyMiBAQCB2b2lkIFdlYlBhZ2U6OndoZWVsRXZlbnQoY29uc3QgV2ViV2hlZWxFdmVudCYgd2hl
ZWxFdmVudCwgT3B0aW9uU2V0PFdoZWVsRXZlbnRQcgogCiAgICAgaWYgKHByb2Nlc3NpbmdTdGVw
cy5jb250YWlucyhXaGVlbEV2ZW50UHJvY2Vzc2luZ1N0ZXBzOjpNYWluVGhyZWFkRm9yU2Nyb2xs
aW5nKSkKICAgICAgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEaWRSZWNlaXZlRXZl
bnQoc3RhdGljX2Nhc3Q8dWludDMyX3Q+KHdoZWVsRXZlbnQudHlwZSgpKSwgaGFuZGxlZCkpOwor
CisgICAgcmV0dXJuIGhhbmRsZWQ7Cit9CisKK3ZvaWQgV2ViUGFnZTo6ZGlzcGF0Y2hXaGVlbEV2
ZW50V2l0aG91dFNjcm9sbGluZyhjb25zdCBXZWJXaGVlbEV2ZW50JiB3aGVlbEV2ZW50LCBib29s
IGlzRmlyc3RFdmVudEluR2VzdHVyZSwgYm9vbCBoYXNOb25QYXNzaXZlV2hlZWxIYW5kbGVycywg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAg
ICBpZiAoaXNGaXJzdEV2ZW50SW5HZXN0dXJlKQorICAgICAgICBtX2N1cnJlbnRTY3JvbGxHZXN0
dXJlV2FzSW5pdGlhbGx5UHJldmVudGVkID0gV1RGOjpudWxsb3B0OworCisgICAgYm9vbCBpc1By
ZXZlbnRhYmxlID0gaGFzTm9uUGFzc2l2ZVdoZWVsSGFuZGxlcnMgJiYgbV9jdXJyZW50U2Nyb2xs
R2VzdHVyZVdhc0luaXRpYWxseVByZXZlbnRlZC52YWx1ZU9yKGlzRmlyc3RFdmVudEluR2VzdHVy
ZSk7CisgICAgYm9vbCBoYW5kbGVkID0gdGhpcy0+d2hlZWxFdmVudCh3aGVlbEV2ZW50LCB7IGlz
UHJldmVudGFibGUgPyBXaGVlbEV2ZW50UHJvY2Vzc2luZ1N0ZXBzOjpNYWluVGhyZWFkRm9yQmxv
Y2tpbmdET01FdmVudERpc3BhdGNoIDogV2hlZWxFdmVudFByb2Nlc3NpbmdTdGVwczo6TWFpblRo
cmVhZEZvck5vbkJsb2NraW5nRE9NRXZlbnREaXNwYXRjaCB9KTsKKworICAgIGlmICghbV9jdXJy
ZW50U2Nyb2xsR2VzdHVyZVdhc0luaXRpYWxseVByZXZlbnRlZCkKKyAgICAgICAgbV9jdXJyZW50
U2Nyb2xsR2VzdHVyZVdhc0luaXRpYWxseVByZXZlbnRlZCA9IGlzUHJldmVudGFibGUgPyBoYW5k
bGVkIDogZmFsc2U7CisKKyAgICBjb21wbGV0aW9uSGFuZGxlcihoYW5kbGVkKTsKIH0KIAogc3Rh
dGljIGJvb2wgaGFuZGxlS2V5RXZlbnQoY29uc3QgV2ViS2V5Ym9hcmRFdmVudCYga2V5Ym9hcmRF
dmVudCwgUGFnZSogcGFnZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYlBhZ2UuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBh
Z2UuaAppbmRleCBlMDRlM2E4YjJkMTc4Y2M4NDk1ZDQ1YmFmODFmMzdkYWVmYmI3YjcwLi4yMDhm
NzVkNGUxMTRiYmYzMmRhZTNiMDFmYTkxOGM1MWM0ZmY0Mjk4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKKysrIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCkBAIC0xMDEzLDcgKzEwMTMsNyBAQCBwdWJsaWM6
CiAgICAgdm9pZCBjb250ZXh0TWVudVNob3dpbmcoKSB7IG1faXNTaG93aW5nQ29udGV4dE1lbnUg
PSB0cnVlOyB9CiAjZW5kaWYKIAotICAgIHZvaWQgd2hlZWxFdmVudChjb25zdCBXZWJXaGVlbEV2
ZW50JiwgT3B0aW9uU2V0PFdlYkNvcmU6OldoZWVsRXZlbnRQcm9jZXNzaW5nU3RlcHM+KTsKKyAg
ICBib29sIHdoZWVsRXZlbnQoY29uc3QgV2ViV2hlZWxFdmVudCYsIE9wdGlvblNldDxXZWJDb3Jl
OjpXaGVlbEV2ZW50UHJvY2Vzc2luZ1N0ZXBzPik7CiAKICAgICB2b2lkIHdoZWVsRXZlbnRIYW5k
bGVyc0NoYW5nZWQoYm9vbCk7CiAgICAgdm9pZCByZWNvbXB1dGVTaG9ydENpcmN1aXRIb3Jpem9u
dGFsV2hlZWxFdmVudHNTdGF0ZSgpOwpAQCAtMTM3MSw2ICsxMzcxLDggQEAgcHVibGljOgogICAg
IGJvb2wgY3JlYXRlQXBwSGlnaGxpZ2h0SW5TZWxlY3RlZFJhbmdlKENyZWF0ZU5ld0dyb3VwRm9y
SGlnaGxpZ2h0KTsKICNlbmRpZgogCisgICAgdm9pZCBkaXNwYXRjaFdoZWVsRXZlbnRXaXRob3V0
U2Nyb2xsaW5nKGNvbnN0IFdlYldoZWVsRXZlbnQmLCBib29sIGlzRmlyc3RFdmVudEluR2VzdHVy
ZSwgYm9vbCBoYXNOb25QYXNzaXZlV2hlZWxIYW5kbGVycywgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChib29sKT4mJik7CisKIHByaXZhdGU6CiAgICAgV2ViUGFnZShXZWJDb3JlOjpQYWdlSWRlbnRp
ZmllciwgV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycyYmKTsKIApAQCAtMjE4MSw2ICsyMTgzLDgg
QEAgcHJpdmF0ZToKICNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCiAgICAgc3RkOjp1bmlxdWVfcHRy
PFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eT4gbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJv
eHk7CiAjZW5kaWYKKworICAgIE9wdGlvbmFsPGJvb2w+IG1fY3VycmVudFNjcm9sbEdlc3R1cmVX
YXNJbml0aWFsbHlQcmV2ZW50ZWQ7CiB9OwogCiAjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3Nh
Z2VzLmluIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdl
cy5pbgppbmRleCA4NjRjNmU4MTlhYzY5YzIwMWFmNDZmZDUwYzZhZTJkNjVmODRjY2Y5Li5mMDhj
YWEwZWQxY2E4MWIyYjczM2ZlMTdiNThmYjFiOGJhNTMzZDViIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4KQEAgLTYyMSw0
ICs2MjEsNSBAQCBHZW5lcmF0ZVN5bnRoZXRpY0VkaXRpbmdDb21tYW5kKGVudW06dWludDhfdCBX
ZWJLaXQ6OlN5bnRoZXRpY0VkaXRpbmdDb21tYW5kVHlwZQogICAgIENyZWF0ZUFwcEhpZ2hsaWdo
dEluU2VsZWN0ZWRSYW5nZShlbnVtOmJvb2wgV2ViS2l0OjpDcmVhdGVOZXdHcm91cEZvckhpZ2hs
aWdodCBjcmVhdGVOZXdHcm91cCkKICNlbmRpZgogCisgICAgRGlzcGF0Y2hXaGVlbEV2ZW50V2l0
aG91dFNjcm9sbGluZyhXZWJLaXQ6OldlYldoZWVsRXZlbnQgZXZlbnQsIGJvb2wgaXNGaXJzdEV2
ZW50SW5HZXN0dXJlLCBib29sIGhhc05vblBhc3NpdmVXaGVlbEhhbmRsZXJzKSAtPiAoYm9vbCBo
YW5kbGVkKSBBc3luYwogfQpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hh
bmdlTG9nCmluZGV4IDQwNDU1N2VjNGQ3ZDJlOGY1ZTAwYzc2MDNlOTM4N2NjY2RhYTZmM2EuLmFh
ZTg0N2RlMmI3Y2NjOGNiNzk4MjU0NWM0MzQ0OTQ5N2NmNjdiZDAgMTAwNjQ0Ci0tLSBhL1Rvb2xz
L0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMiBAQAorMjAyMC0x
Mi0xMCAgVGltIEhvcnRvbiAgPHRpbW90aHlfaG9ydG9uQGFwcGxlLmNvbT4KKworICAgICAgICBU
cmFja3BhZCBhbmQgTW91c2Ugc2Nyb2xsIGV2ZW50cyBvbiBpUGFkIG9ubHkgZmlyZSAicG9pbnRl
cm1vdmUiIC0tIG5vdCAid2hlZWwiCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMTAwNzEKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzU0NjE2ODUzPgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogVGVzdFdl
YktpdEFQSS9UZXN0cy9pb3MvV0tTY3JvbGxWaWV3VGVzdHMubW06CisgICAgICAgICgtW1dLVUlT
Y3JvbGxFdmVudCBpbml0V2l0aFBoYXNlOmxvY2F0aW9uOmRlbHRhOl0pOgorICAgICAgICAoLVtX
S1VJU2Nyb2xsRXZlbnQgcGhhc2VdKToKKyAgICAgICAgKC1bV0tVSVNjcm9sbEV2ZW50IGxvY2F0
aW9uSW5WaWV3Ol0pOgorICAgICAgICAoLVtXS1VJU2Nyb2xsRXZlbnQgX2FkanVzdGVkQWNjZWxl
cmF0ZWREZWx0YUluVmlldzpdKToKKyAgICAgICAgKFRFU1QpOgorICAgICAgICAqIFRlc3RXZWJL
aXRBUEkvaW9zL1VJS2l0U1BJLmg6CisgICAgICAgIEFkZCBhIHZlcnkgc2ltcGxlIHRlc3QgdGhh
dCBkaXJlY3RseSBjYWxscyB0aGUgbmV3IFVJU2Nyb2xsVmlld0RlbGVnYXRlIFNQSQorICAgICAg
ICBhbmQgdmVyaWZpZXMgdGhhdCBvbmx5IHRoZSBmaXJzdCBldmVudCBpcyBwcmV2ZW50YWJsZSAo
dW5sZXNzIHRoZSBmaXJzdCBldmVudAorICAgICAgICBpcyBwcmV2ZW50ZWQsIGluIHdoaWNoIGNh
c2UgYWxsIHN1YnNlcXVlbnQgZXZlbnRzIGFyZSBwcmV2ZW50YWJsZSkuCisKIDIwMjAtMTItMDMg
IEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KIAogICAgICAgICBJ
bnRyb2R1Y2UgbmV3IGRvd25sb2FkIFNQSQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9pb3MvV0tTY3JvbGxWaWV3VGVzdHMubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL2lvcy9XS1Njcm9sbFZpZXdUZXN0cy5tbQppbmRleCAwZTJhMWM5ZWM1MTljN2RkZGE1NmEx
OWFiNGEwMTU3OGQ1MGU1ZWQ2Li5mYmRlOWZiM2EzY2Y5ZGU5MmNiNWFmOGI3YTU0ZDAxNGJiZDFj
NGY1IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL2lvcy9XS1Njcm9sbFZp
ZXdUZXN0cy5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL2lvcy9XS1Njcm9sbFZp
ZXdUZXN0cy5tbQpAQCAtMjksOCArMjksNTEgQEAKIAogI2ltcG9ydCAiUGxhdGZvcm1VdGlsaXRp
ZXMuaCIKICNpbXBvcnQgIlRlc3RXS1dlYlZpZXcuaCIKKyNpbXBvcnQgIlVJS2l0U1BJLmgiCiAj
aW1wb3J0IDxXZWJLaXQvV0tXZWJWaWV3UHJpdmF0ZS5oPgogCitAaW50ZXJmYWNlIFdLVUlTY3Jv
bGxFdmVudCA6IFVJU2Nyb2xsRXZlbnQKKworLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoUGhhc2U6
KFVJU2Nyb2xsUGhhc2UpcGhhc2UgbG9jYXRpb246KENHUG9pbnQpbG9jYXRpb24gZGVsdGE6KENH
VmVjdG9yKWRlbHRhOworCitAZW5kCisKK0BpbXBsZW1lbnRhdGlvbiBXS1VJU2Nyb2xsRXZlbnQg
eworICAgIFVJU2Nyb2xsUGhhc2UgX3BoYXNlOworICAgIENHUG9pbnQgX2xvY2F0aW9uOworICAg
IENHVmVjdG9yIF9kZWx0YTsKK30KKworLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoUGhhc2U6KFVJ
U2Nyb2xsUGhhc2UpcGhhc2UgbG9jYXRpb246KENHUG9pbnQpbG9jYXRpb24gZGVsdGE6KENHVmVj
dG9yKWRlbHRhCit7CisgICAgc2VsZiA9IFtzdXBlciBpbml0XTsKKyAgICBpZiAoIXNlbGYpCisg
ICAgICAgIHJldHVybiBuaWw7CisKKyAgICBfcGhhc2UgPSBwaGFzZTsKKyAgICBfbG9jYXRpb24g
PSBsb2NhdGlvbjsKKyAgICBfZGVsdGEgPSBkZWx0YTsKKworICAgIHJldHVybiBzZWxmOworfQor
CistIChVSVNjcm9sbFBoYXNlKXBoYXNlCit7CisgICAgcmV0dXJuIF9waGFzZTsKK30KKworLSAo
Q0dQb2ludClsb2NhdGlvbkluVmlldzooVUlWaWV3ICopdmlldworeworICAgIHJldHVybiBfbG9j
YXRpb247Cit9CisKKy0gKENHVmVjdG9yKV9hZGp1c3RlZEFjY2VsZXJhdGVkRGVsdGFJblZpZXc6
KFVJVmlldyAqKXZpZXcKK3sKKyAgICByZXR1cm4gX2RlbHRhOworfQorCitAZW5kCisKIHN0YXRp
YyB2b2lkIHRyYXZlcnNlTGF5ZXJUcmVlKENBTGF5ZXIgKmxheWVyLCB2b2lkKF5ibG9jaykoQ0FM
YXllciAqKSkKIHsKICAgICBmb3IgKENBTGF5ZXIgKmNoaWxkIGluIGxheWVyLnN1YmxheWVycykK
QEAgLTcxLDQgKzExNCw4MCBAQCBURVNUKFdLU2Nyb2xsVmlld1Rlc3RzLCBQb3NpdGlvbkZpeGVk
TGF5ZXJBZnRlclNjcm9sbGluZykKICAgICBFWFBFQ1RfVFJVRShmb3VuZExheWVyRm9yRml4ZWRO
YXZpZ2F0aW9uQmFyKTsKIH0KIAorVEVTVChXS1Njcm9sbFZpZXdUZXN0cywgQXN5bmNocm9ub3Vz
V2hlZWxFdmVudEhhbmRsaW5nKQoreworICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tUZXN0
V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOkNHUmVjdE1ha2UoMCwgMCwgMzIwLCA1MDAp
XSk7CisgICAgW3dlYlZpZXcgc3luY2hyb25vdXNseUxvYWRIVE1MU3RyaW5nOkAiIgorICAgICAg
ICAiPHN0eWxlPiNzY3JvbGxhYmxlIHsgd2lkdGg6IDIwMHB4OyBoZWlnaHQ6IDIwMHB4OyB9PC9z
dHlsZT4iCisgICAgICAgICI8ZGl2IGlkPSdzY3JvbGxhYmxlJz48L2Rpdj4iCisgICAgICAgICI8
c2NyaXB0PndpbmRvdy5wcmV2ZW50RGVmYXVsdE9uU2Nyb2xsRXZlbnRzID0gZmFsc2U7IgorICAg
ICAgICAiZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Njcm9sbGFibGUnKS5hZGRFdmVudExpc3Rl
bmVyKCd3aGVlbCcsICIKKyAgICAgICAgImZ1bmN0aW9uIChlKSB7IgorICAgICAgICAiICAgd2lu
ZG93Lmxhc3RXaGVlbEV2ZW50ID0gZTsiCisgICAgICAgICIgICBpZiAod2luZG93LnByZXZlbnRE
ZWZhdWx0T25TY3JvbGxFdmVudHMpIgorICAgICAgICAiICAgICAgIGUucHJldmVudERlZmF1bHQo
KTsiCisgICAgICAgICJ9KTwvc2NyaXB0PiJdOworICAgIFt3ZWJWaWV3IHdhaXRGb3JOZXh0UHJl
c2VudGF0aW9uVXBkYXRlXTsKKworICAgIF9fYmxvY2sgYm9vbCBkb25lOworICAgIF9fYmxvY2sg
Ym9vbCB3YXNIYW5kbGVkOworCisgICAgYXV0byBzeW5jaHJvbm91c2x5SGFuZGxlU2Nyb2xsRXZl
bnQgPSBeKFVJU2Nyb2xsUGhhc2UgcGhhc2UsIENHUG9pbnQgbG9jYXRpb24sIENHVmVjdG9yIGRl
bHRhKSB7CisgICAgICAgIGRvbmUgPSBmYWxzZTsKKyAgICAgICAgYXV0byBldmVudCA9IGFkb3B0
TlMoW1tXS1VJU2Nyb2xsRXZlbnQgYWxsb2NdIGluaXRXaXRoUGhhc2U6cGhhc2UgbG9jYXRpb246
bG9jYXRpb24gZGVsdGE6ZGVsdGFdKTsKKyAgICAgICAgW3dlYlZpZXcgX3Njcm9sbFZpZXc6W3dl
YlZpZXcgc2Nyb2xsVmlld10gYXN5bmNocm9ub3VzbHlIYW5kbGVTY3JvbGxFdmVudDpldmVudC5n
ZXQoKSBjb21wbGV0aW9uOl4oQk9PTCBoYW5kbGVkKSB7CisgICAgICAgICAgICB3YXNIYW5kbGVk
ID0gaGFuZGxlZDsKKyAgICAgICAgICAgIGRvbmUgPSB0cnVlOworICAgICAgICB9XTsKKyAgICAg
ICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZkb25lKTsKKyAgICB9OworCisgICAgLy8gRG9u
J3QgcHJldmVudERlZmF1bHQoKSBhdCBhbGwuCisgICAgc3luY2hyb25vdXNseUhhbmRsZVNjcm9s
bEV2ZW50KFVJU2Nyb2xsUGhhc2VNYXlCZWdpbiwgQ0dQb2ludE1ha2UoMTAwLCAxMDApLCBDR1Zl
Y3Rvck1ha2UoMCwgMCkpOworICAgIEVYUEVDVF9GQUxTRSh3YXNIYW5kbGVkKTsKKyAgICBzeW5j
aHJvbm91c2x5SGFuZGxlU2Nyb2xsRXZlbnQoVUlTY3JvbGxQaGFzZUJlZ2FuLCBDR1BvaW50TWFr
ZSgxMDAsIDEwMCksIENHVmVjdG9yTWFrZSgwLCAxMCkpOworICAgIEVYUEVDVF9GQUxTRSh3YXNI
YW5kbGVkKTsKKyAgICBzeW5jaHJvbm91c2x5SGFuZGxlU2Nyb2xsRXZlbnQoVUlTY3JvbGxQaGFz
ZUNoYW5nZWQsIENHUG9pbnRNYWtlKDEwMCwgMTAwKSwgQ0dWZWN0b3JNYWtlKDAsIDEwKSk7Cisg
ICAgRVhQRUNUX0ZBTFNFKHdhc0hhbmRsZWQpOworICAgIHN5bmNocm9ub3VzbHlIYW5kbGVTY3Jv
bGxFdmVudChVSVNjcm9sbFBoYXNlRW5kZWQsIENHUG9pbnRNYWtlKDEwMCwgMTAwKSwgQ0dWZWN0
b3JNYWtlKDAsIDApKTsKKyAgICBFWFBFQ1RfRkFMU0Uod2FzSGFuZGxlZCk7CisKKyAgICAvLyBw
cmV2ZW50RGVmYXVsdCgpIG9uIGFsbCBldmVudHMuCisgICAgW3dlYlZpZXcgc3RyaW5nQnlFdmFs
dWF0aW5nSmF2YVNjcmlwdDpAIndpbmRvdy5wcmV2ZW50RGVmYXVsdE9uU2Nyb2xsRXZlbnRzID0g
dHJ1ZTsiXTsKKyAgICBzeW5jaHJvbm91c2x5SGFuZGxlU2Nyb2xsRXZlbnQoVUlTY3JvbGxQaGFz
ZU1heUJlZ2luLCBDR1BvaW50TWFrZSgxMDAsIDEwMCksIENHVmVjdG9yTWFrZSgwLCAwKSk7Cisg
ICAgRVhQRUNUX0ZBTFNFKHdhc0hhbmRsZWQpOworICAgIHN5bmNocm9ub3VzbHlIYW5kbGVTY3Jv
bGxFdmVudChVSVNjcm9sbFBoYXNlQmVnYW4sIENHUG9pbnRNYWtlKDEwMCwgMTAwKSwgQ0dWZWN0
b3JNYWtlKDAsIDEwKSk7CisgICAgRVhQRUNUX1RSVUUod2FzSGFuZGxlZCk7CisgICAgc3luY2hy
b25vdXNseUhhbmRsZVNjcm9sbEV2ZW50KFVJU2Nyb2xsUGhhc2VDaGFuZ2VkLCBDR1BvaW50TWFr
ZSgxMDAsIDEwMCksIENHVmVjdG9yTWFrZSgwLCAxMCkpOworICAgIEVYUEVDVF9UUlVFKHdhc0hh
bmRsZWQpOworICAgIHN5bmNocm9ub3VzbHlIYW5kbGVTY3JvbGxFdmVudChVSVNjcm9sbFBoYXNl
RW5kZWQsIENHUG9pbnRNYWtlKDEwMCwgMTAwKSwgQ0dWZWN0b3JNYWtlKDAsIDApKTsKKyAgICBF
WFBFQ1RfRkFMU0Uod2FzSGFuZGxlZCk7CisKKyAgICAvLyBwcmV2ZW50RGVmYXVsdCgpIG9uIGFs
bCBidXQgdGhlIGJlZ2luIGV2ZW50OyBpdCB3aWxsIGJlIGlnbm9yZWQuCisgICAgW3dlYlZpZXcg
c3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpAIndpbmRvdy5wcmV2ZW50RGVmYXVsdE9uU2Ny
b2xsRXZlbnRzID0gZmFsc2U7Il07CisgICAgc3luY2hyb25vdXNseUhhbmRsZVNjcm9sbEV2ZW50
KFVJU2Nyb2xsUGhhc2VNYXlCZWdpbiwgQ0dQb2ludE1ha2UoMTAwLCAxMDApLCBDR1ZlY3Rvck1h
a2UoMCwgMCkpOworICAgIEVYUEVDVF9GQUxTRSh3YXNIYW5kbGVkKTsKKyAgICBzeW5jaHJvbm91
c2x5SGFuZGxlU2Nyb2xsRXZlbnQoVUlTY3JvbGxQaGFzZUJlZ2FuLCBDR1BvaW50TWFrZSgxMDAs
IDEwMCksIENHVmVjdG9yTWFrZSgwLCAxMCkpOworICAgIEVYUEVDVF9GQUxTRSh3YXNIYW5kbGVk
KTsKKyAgICBbd2ViVmlldyBzdHJpbmdCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OkAid2luZG93LnBy
ZXZlbnREZWZhdWx0T25TY3JvbGxFdmVudHMgPSB0cnVlOyJdOworICAgIHN5bmNocm9ub3VzbHlI
YW5kbGVTY3JvbGxFdmVudChVSVNjcm9sbFBoYXNlQ2hhbmdlZCwgQ0dQb2ludE1ha2UoMTAwLCAx
MDApLCBDR1ZlY3Rvck1ha2UoMCwgMTApKTsKKyAgICBFWFBFQ1RfRkFMU0Uod2FzSGFuZGxlZCk7
CisgICAgc3luY2hyb25vdXNseUhhbmRsZVNjcm9sbEV2ZW50KFVJU2Nyb2xsUGhhc2VFbmRlZCwg
Q0dQb2ludE1ha2UoMTAwLCAxMDApLCBDR1ZlY3Rvck1ha2UoMCwgMCkpOworICAgIEVYUEVDVF9G
QUxTRSh3YXNIYW5kbGVkKTsKKworICAgIC8vIHByZXZlbnREZWZhdWx0KCkgb24gdGhlIGJlZ2lu
IGV2ZW50LCBhbmQgc29tZSBzdWJzZXF1ZW50IGV2ZW50cy4KKyAgICBbd2ViVmlldyBzdHJpbmdC
eUV2YWx1YXRpbmdKYXZhU2NyaXB0OkAid2luZG93LnByZXZlbnREZWZhdWx0T25TY3JvbGxFdmVu
dHMgPSB0cnVlOyJdOworICAgIHN5bmNocm9ub3VzbHlIYW5kbGVTY3JvbGxFdmVudChVSVNjcm9s
bFBoYXNlTWF5QmVnaW4sIENHUG9pbnRNYWtlKDEwMCwgMTAwKSwgQ0dWZWN0b3JNYWtlKDAsIDAp
KTsKKyAgICBFWFBFQ1RfRkFMU0Uod2FzSGFuZGxlZCk7CisgICAgc3luY2hyb25vdXNseUhhbmRs
ZVNjcm9sbEV2ZW50KFVJU2Nyb2xsUGhhc2VCZWdhbiwgQ0dQb2ludE1ha2UoMTAwLCAxMDApLCBD
R1ZlY3Rvck1ha2UoMCwgMTApKTsKKyAgICBFWFBFQ1RfVFJVRSh3YXNIYW5kbGVkKTsKKyAgICBz
eW5jaHJvbm91c2x5SGFuZGxlU2Nyb2xsRXZlbnQoVUlTY3JvbGxQaGFzZUNoYW5nZWQsIENHUG9p
bnRNYWtlKDEwMCwgMTAwKSwgQ0dWZWN0b3JNYWtlKDAsIDEwKSk7CisgICAgRVhQRUNUX1RSVUUo
d2FzSGFuZGxlZCk7CisgICAgW3dlYlZpZXcgc3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpA
IndpbmRvdy5wcmV2ZW50RGVmYXVsdE9uU2Nyb2xsRXZlbnRzID0gZmFsc2U7Il07CisgICAgc3lu
Y2hyb25vdXNseUhhbmRsZVNjcm9sbEV2ZW50KFVJU2Nyb2xsUGhhc2VDaGFuZ2VkLCBDR1BvaW50
TWFrZSgxMDAsIDEwMCksIENHVmVjdG9yTWFrZSgwLCAxMCkpOworICAgIEVYUEVDVF9GQUxTRSh3
YXNIYW5kbGVkKTsKKyAgICBzeW5jaHJvbm91c2x5SGFuZGxlU2Nyb2xsRXZlbnQoVUlTY3JvbGxQ
aGFzZUVuZGVkLCBDR1BvaW50TWFrZSgxMDAsIDEwMCksIENHVmVjdG9yTWFrZSgwLCAwKSk7Cisg
ICAgRVhQRUNUX0ZBTFNFKHdhc0hhbmRsZWQpOworfQorCiAjZW5kaWYgLy8gUExBVEZPUk0oSU9T
X0ZBTUlMWSkKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvaW9zL1VJS2l0U1BJLmgg
Yi9Ub29scy9UZXN0V2ViS2l0QVBJL2lvcy9VSUtpdFNQSS5oCmluZGV4IGRkNWFlY2VjOTA1NDI5
YzlhMDI1YzUyYzEwZjc0NDU3OTJmODQ5MGYuLmI1M2VhNTYwZjg0YTdkYzI4ZTc0N2VlZmNlZTU1
YTUzOGU2ZWRkMTkgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvaW9zL1VJS2l0U1BJ
LmgKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9pb3MvVUlLaXRTUEkuaApAQCAtMzcsNiArMzcs
OCBAQAogI2ltcG9ydCA8VUlLaXQvVUlLZXlib2FyZF9Qcml2YXRlLmg+CiAjaW1wb3J0IDxVSUtp
dC9VSVJlc3BvbmRlcl9Qcml2YXRlLmg+CiAjaW1wb3J0IDxVSUtpdC9VSVNjcmVlbl9Qcml2YXRl
Lmg+CisjaW1wb3J0IDxVSUtpdC9VSVNjcm9sbEV2ZW50X1ByaXZhdGUuaD4KKyNpbXBvcnQgPFVJ
S2l0L1VJU2Nyb2xsVmlld19Gb3JXZWJLaXRPbmx5Lmg+CiAjaW1wb3J0IDxVSUtpdC9VSVNjcm9s
bFZpZXdfUHJpdmF0ZS5oPgogI2ltcG9ydCA8VUlLaXQvVUlUZXh0QXV0b2ZpbGxTdWdnZXN0aW9u
Lmg+CiAjaW1wb3J0IDxVSUtpdC9VSVRleHRJbnB1dE11bHRpRG9jdW1lbnQuaD4KQEAgLTI0MCw2
ICsyNDIsMTMgQEAgSUdOT1JFX1dBUk5JTkdTX0VORAogQHByb3BlcnR5IChub25hdG9taWMsIGdl
dHRlcj1faXNBdXRvbWF0aWNDb250ZW50T2Zmc2V0QWRqdXN0bWVudEVuYWJsZWQsIHNldHRlcj1f
c2V0QXV0b21hdGljQ29udGVudE9mZnNldEFkanVzdG1lbnRFbmFibGVkOikgQk9PTCBpc0F1dG9t
YXRpY0NvbnRlbnRPZmZzZXRBZGp1c3RtZW50RW5hYmxlZDsKIEBlbmQKIAorQGludGVyZmFjZSBV
SVNjcm9sbEV2ZW50IDogVUlFdmVudAorQGVuZAorCitAaW50ZXJmYWNlIE5TT2JqZWN0IChVSVNj
cm9sbFZpZXdEZWxlZ2F0ZV9Gb3JXZWJLaXRPbmx5KQorLSAodm9pZClfc2Nyb2xsVmlldzooVUlT
Y3JvbGxWaWV3ICopc2Nyb2xsVmlldyBhc3luY2hyb25vdXNseUhhbmRsZVNjcm9sbEV2ZW50OihV
SVNjcm9sbEV2ZW50ICopc2Nyb2xsRXZlbnQgY29tcGxldGlvbjoodm9pZCAoXikoQk9PTCBoYW5k
bGVkKSljb21wbGV0aW9uOworQGVuZAorCiAjZW5kaWYgLy8gVVNFKEFQUExFX0lOVEVSTkFMX1NE
SykKIAogI2RlZmluZSBVSVdLRG9jdW1lbnRSZXF1ZXN0TWFya2VkVGV4dFJlY3RzICgxIDw8IDUp
Cg==
</data>
<flag name="commit-queue"
          id="433173"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>415852</attachid>
            <date>2020-12-10 04:16:36 -0800</date>
            <delta_ts>2020-12-10 04:18:13 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-210071-20201210041634.patch</filename>
            <type>text/plain</type>
            <size>38273</size>
            <attacher name="Tim Horton">thorton</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcwNDM1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDMzZTNhZjVkNGY3MmUxNDlhYTYyNTBi
Y2M4YmNlODgxODhlNTM5OTEuLjkxMTBhNDU3MTdkOWEwNzQ5NmI0YTRmNGE5ZmYyMmU4MTI3YmQw
ZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMjAtMTItMTAgIFRpbSBIb3J0b24gIDx0aW1vdGh5
X2hvcnRvbkBhcHBsZS5jb20+CisKKyAgICAgICAgVHJhY2twYWQgYW5kIE1vdXNlIHNjcm9sbCBl
dmVudHMgb24gaVBhZCBvbmx5IGZpcmUgInBvaW50ZXJtb3ZlIiAtLSBub3QgIndoZWVsIgorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjEwMDcxCisgICAg
ICAgIDxyZGFyOi8vcHJvYmxlbS81NDYxNjg1Mz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICAqIHd0Zi9QbGF0Zm9ybUVuYWJsZUNvY29hLmg6CisgICAg
ICAgIEVuYWJsZSB3aGVlbCBldmVudCByZWdpb25zIG9uIGlPUyArIG1hY0NhdGFseXN0LgorCiAy
MDIwLTEyLTAzICBBZGFtIFJvYmVuICA8YXJvYmVuQGFwcGxlLmNvbT4KIAogICAgICAgICBBZG9w
dCBGQUxMQkFDS19QTEFURk9STQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9n
IGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDdhZTI4OTMwYjc0ZmJmZDczMDFkNjhm
OWIxYjBiY2Y3OGE4NmM5ZjcuLjI2MGFkY2Y1Y2Y1NGQ1Mzg1ZWU1ODQxNTE5YjExM2QzNGM5ZWVl
YWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMSBAQAorMjAyMC0xMi0xMCAgVGltIEhvcnRvbiAg
PHRpbW90aHlfaG9ydG9uQGFwcGxlLmNvbT4KKworICAgICAgICBUcmFja3BhZCBhbmQgTW91c2Ug
c2Nyb2xsIGV2ZW50cyBvbiBpUGFkIG9ubHkgZmlyZSAicG9pbnRlcm1vdmUiIC0tIG5vdCAid2hl
ZWwiCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTAw
NzEKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzU0NjE2ODUzPgorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogcGFnZS9FdmVudEhhbmRsZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjpoYW5kbGVXaGVlbEV2ZW50SW50ZXJuYWwp
OgorICAgICAgICBGaXggYSBtaW5vciBsb2dpYyBlcnJvciB3aGVuIFdIRUVMX0VWRU5UX0xBVENI
SU5HIGlzIG9mZjsgYWxsb3dTY3JvbGxpbmcKKyAgICAgICAgd291bGQgYWx3YXlzIGJlIHRydWUs
IGV2ZW4gaWYgdGhlIHNldCBvZiBwcm9jZXNzaW5nIHN0ZXBzIGRvZXMgbm90IGluY2x1ZGUgYW55
IHNjcm9sbGluZyBzdGVwcy4KKworICAgICAgICAqIHJlbmRlcmluZy9FdmVudFJlZ2lvbi5oOgor
ICAgICAgICAoV2ViQ29yZTo6RXZlbnRSZWdpb246OmVuY29kZSBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpFdmVudFJlZ2lvbjo6ZGVjb2RlKToKKyAgICAgICAgRW5jb2RlL2RlY29kZSB0aGUg
d2hlZWwgYW5kIHBhc3NpdmUgd2hlZWwgZXZlbnQgcmVnaW9ucy4KKwogMjAyMC0xMi0wNCAgUGVu
ZyBMaXUgIDxwZW5nLmxpdTZAYXBwbGUuY29tPgogCiAgICAgICAgIFtNU0VdIE1vdmUgdHJhY2sg
YnVmZmVyIG1hbmFnZW1lbnQgZnJvbSBTb3VyY2VCdWZmZXIgdG8gU291cmNlQnVmZmVyUHJpdmF0
ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZwppbmRleCA2M2YzNDI5MDgyM2IxYzQ4Yzc3MWEzYzRmMzg1MmNhMjIzNTNlNDRkLi44
NjBkYmMzYTk2MDBiZjM0MTlkZmUzOTJmOTAzODVmYTcyNjgwYWRmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDYxIEBACisyMDIwLTEyLTEwICBUaW0gSG9ydG9uICA8dGltb3RoeV9ob3J0b25AYXBwbGUu
Y29tPgorCisgICAgICAgIFRyYWNrcGFkIGFuZCBNb3VzZSBzY3JvbGwgZXZlbnRzIG9uIGlQYWQg
b25seSBmaXJlICJwb2ludGVybW92ZSIgLS0gbm90ICJ3aGVlbCIKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxMDA3MQorICAgICAgICA8cmRhcjovL3By
b2JsZW0vNTQ2MTY4NTM+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgKiBQbGF0Zm9ybS9zcGkvaW9zL1VJS2l0U1BJLmg6CisgICAgICAgIEFkZCBzb21l
IFNQSS4KKworICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3SW50ZXJuYWwu
aDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2lvcy9XS1dlYlZpZXdJT1MuaDoKKyAgICAgICAg
KiBVSVByb2Nlc3MvQVBJL2lvcy9XS1dlYlZpZXdJT1MubW06CisgICAgICAgICgtW1dLV2ViVmll
dyBfc2V0dXBTY3JvbGxBbmRDb250ZW50Vmlld3NdKToKKyAgICAgICAgRW5hYmxlIGFzeW5jIFVJ
U2Nyb2xsRXZlbnQgaGFuZGxpbmcgZm9yIFdLU2Nyb2xsVmlldy4KKworICAgICAgICAoLVtXS1dl
YlZpZXcgX3Njcm9sbFZpZXc6YXN5bmNocm9ub3VzbHlIYW5kbGVTY3JvbGxFdmVudDpjb21wbGV0
aW9uOl0pOgorICAgICAgICBBZG9wdCBuZXcgVUlLaXQgU1BJIHRvIGFzeW5jaHJvbm91c2x5IGRl
ZmVyIFVJU2Nyb2xsRXZlbnRzLgorICAgICAgICBXZSBwYXNzIHRoZW0gdG8gdGhlIFdlYiBDb250
ZW50IHByb2Nlc3MsIHdoZXJlIHRoZXkgYXJlIHByb2Nlc3NlZCAKKyAgICAgICAgKm9ubHkqIGZv
ciBldmVudCBoYW5kbGluZywgbm90IGZvciBzY3JvbGxpbmcuCisKKyAgICAgICAgSWYgdGhlIGV2
ZW50IGlzIG5vdCBwcmV2ZW50YWJsZSwgd2Ugd2lsbCBzeW5jaHJvbm91c2x5IHJlcGx5IHRoYXQg
aXQgd2FzCisgICAgICAgIG5vdCBoYW5kbGVkOyBpZiBpdCBpcyBwcmV2ZW50YWJsZSwgb3Igd2Ug
ZG9uJ3QgeWV0IGtub3cgaWYgaXQgd2lsbCBiZSwKKyAgICAgICAgd2UnbGwgd2FpdCB0byBoZWFy
IGJhY2sgZnJvbSB0aGUgV2ViIENvbnRlbnQgcHJvY2VzcyBiZWZvcmUgcmVwbHlpbmcuCisKKyAg
ICAgICAgVUlLaXQgd2lsbCB3YWl0IHVudGlsIG91ciByZXBseSB0byBhcHBseSB0aGUgVUlTY3Jv
bGxFdmVudCB0byB0aGUgVUlTY3JvbGxWaWV3LgorCisgICAgICAgICogVUlQcm9jZXNzL1BhZ2VD
bGllbnQuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL2lvcy9SZW1vdGVM
YXllclRyZWVWaWV3cy5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvaW9z
L1JlbW90ZUxheWVyVHJlZVZpZXdzLm1tOgorICAgICAgICAoV2ViS2l0OjpldmVudExpc3RlbmVy
VHlwZXNBdFBvaW50KToKKyAgICAgICAgRXhwb3NlIGEgbWVjaGFuaXNtIGZvciByZXRyaWV2aW5n
IHRoZSBldmVudCBsaXN0ZW5lciB0eXBlcyBhdCBhIGdpdmVuIHBvaW50LAorICAgICAgICBzaW1p
bGFyIHRvIHRoZSBleGlzdGluZyBtZWNoYW5pc20gZm9yIHRvdWNoIGV2ZW50IGxpc3RlbmVycy4K
KworICAgICAgICAoLVtXS0NoaWxkU2Nyb2xsVmlldyBpbml0V2l0aEZyYW1lOl0pOgorICAgICAg
ICBFbmFibGUgYXN5bmMgVUlTY3JvbGxFdmVudCBoYW5kbGluZyBmb3IgV0tDaGlsZFNjcm9sbFZp
ZXcuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL2lvcy9TY3JvbGxpbmdU
cmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlSU9TLmg6CisgICAgICAgICogVUlQcm9jZXNzL1JlbW90
ZUxheWVyVHJlZS9pb3MvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZUlPUy5tbToK
KyAgICAgICAgKC1bV0tTY3JvbGxpbmdOb2RlU2Nyb2xsVmlld0RlbGVnYXRlIF9zY3JvbGxWaWV3
OmFzeW5jaHJvbm91c2x5SGFuZGxlU2Nyb2xsRXZlbnQ6Y29tcGxldGlvbjpdKToKKyAgICAgICAg
KFdlYktpdDo6U2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZUlPUzo6aGFuZGxlQXN5
bmNocm9ub3VzUHJldmVudGFibGVTY3JvbGxFdmVudCk6CisgICAgICAgIFBsdW1iIGFzeW5jIHNj
cm9sbCBldmVudHMgZm9yIHN1Yi1zY3JvbGxhYmxlIHJlZ2lvbnMgdGhyb3VnaCBQYWdlQ2xpZW50
CisgICAgICAgIHRvIFdLV2ViVmlldzsgd2UgZG9uJ3QgYWN0dWFsbHkgY2FyZSB3aGljaCBVSVNj
cm9sbFZpZXcgdGhleSdyZSBoYW5kZWQgdG8sCisgICAgICAgIHNpbmNlIHdlIHJlLWhpdC10ZXN0
IG91cnNlbHZlcy4KKworICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmRpc3BhdGNoV2hlZWxFdmVudFdpdGhvdXRTY3Jv
bGxpbmcpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaDoKKyAgICAgICAgKiBV
SVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLmg6CisgICAgICAgICogVUlQcm9jZXNzL2lv
cy9QYWdlQ2xpZW50SW1wbElPUy5tbToKKyAgICAgICAgKFdlYktpdDo6UGFnZUNsaWVudEltcGw6
OmhhbmRsZUFzeW5jaHJvbm91c1ByZXZlbnRhYmxlU2Nyb2xsRXZlbnQpOgorICAgICAgICAqIFdl
YlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6
d2hlZWxFdmVudCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmRpc3BhdGNoV2hlZWxFdmVu
dFdpdGhvdXRTY3JvbGxpbmcpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdl
Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW46CisK
IDIwMjAtMTItMDQgIFBlbmcgTGl1ICA8cGVuZy5saXU2QGFwcGxlLmNvbT4KIAogICAgICAgICBb
TVNFXSBNb3ZlIHRyYWNrIGJ1ZmZlciBtYW5hZ2VtZW50IGZyb20gU291cmNlQnVmZmVyIHRvIFNv
dXJjZUJ1ZmZlclByaXZhdGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtRW5h
YmxlQ29jb2EuaCBiL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtRW5hYmxlQ29jb2EuaAppbmRleCA1
YWRkYTg4NmVhMGU2NzY3ZjVmNzkwOTk4YjZhYjgxZTgxN2IwNmQ0Li41NTFiYjIxYzQyZGRlYzc0
MDM5M2RkMjZiNWY1YzU2NDliMjk3NTM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9QbGF0
Zm9ybUVuYWJsZUNvY29hLmgKKysrIGIvU291cmNlL1dURi93dGYvUGxhdGZvcm1FbmFibGVDb2Nv
YS5oCkBAIC02MzMsMyArNjMzLDcgQEAKICNpZiAhZGVmaW5lZChFTkFCTEVfU0VUX1dFQkNPTlRF
TlRfUFJPQ0VTU19JTkZPUk1BVElPTl9JTl9ORVRXT1JLX1BST0NFU1MpICYmIFBMQVRGT1JNKE1B
QykgJiYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+IDEyMDAwMAogI2RlZmluZSBF
TkFCTEVfU0VUX1dFQkNPTlRFTlRfUFJPQ0VTU19JTkZPUk1BVElPTl9JTl9ORVRXT1JLX1BST0NF
U1MgMQogI2VuZGlmCisKKyNpZiAhZGVmaW5lZChFTkFCTEVfV0hFRUxfRVZFTlRfUkVHSU9OUykg
JiYgKFBMQVRGT1JNKElPUykgfHwgUExBVEZPUk0oTUFDQ0FUQUxZU1QpKQorI2RlZmluZSBFTkFC
TEVfV0hFRUxfRVZFTlRfUkVHSU9OUyAxCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5k
bGVyLmNwcAppbmRleCA2YWJkZGIyNTYzZTkwNTFmOTRmMGVjODg2YjQ5OGFmYzdmNzFiNzg5Li5m
MDQwOTIwNzVlMDJmZTU5MzA2NDY5YmE5N2Q5MjYyZmM3ODY0YTE2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFn
ZS9FdmVudEhhbmRsZXIuY3BwCkBAIC0yOTA1LDEwICsyOTA1LDEzIEBAIGJvb2wgRXZlbnRIYW5k
bGVyOjpoYW5kbGVXaGVlbEV2ZW50SW50ZXJuYWwoY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50JiBl
dmVudCwgT3B0CiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIGJvb2wgaGFuZGxlZEV2ZW50
ID0gZmFsc2U7Ci0gICAgYm9vbCBhbGxvd1Njcm9sbGluZyA9IHRydWU7CisgICAgYm9vbCBhbGxv
d1Njcm9sbGluZyA9IG1fY3VycmVudFdoZWVsRXZlbnRBbGxvd3NTY3JvbGxpbmc7CisKICNpZiBF
TkFCTEUoV0hFRUxfRVZFTlRfTEFUQ0hJTkcpCi0gICAgYWxsb3dTY3JvbGxpbmcgPSBtX2N1cnJl
bnRXaGVlbEV2ZW50QWxsb3dzU2Nyb2xsaW5nICYmIG1fZnJhbWUucGFnZSgpLT5zY3JvbGxMYXRj
aGluZ0NvbnRyb2xsZXIoKS5sYXRjaGluZ0FsbG93c1Njcm9sbGluZ0luRnJhbWUobV9mcmFtZSwg
c2Nyb2xsYWJsZUFyZWEpOworICAgIGlmIChhbGxvd1Njcm9sbGluZykKKyAgICAgICAgYWxsb3dT
Y3JvbGxpbmcgPSBtX2ZyYW1lLnBhZ2UoKS0+c2Nyb2xsTGF0Y2hpbmdDb250cm9sbGVyKCkubGF0
Y2hpbmdBbGxvd3NTY3JvbGxpbmdJbkZyYW1lKG1fZnJhbWUsIHNjcm9sbGFibGVBcmVhKTsKICNl
bmRpZgorCiAgICAgaWYgKGFsbG93U2Nyb2xsaW5nKSB7CiAgICAgICAgIC8vIEZJWE1FOiBwcm9j
ZXNzV2hlZWxFdmVudEZvclNjcm9sbGluZygpIGlzIG9ubHkgY2FsbGVkIGZvciBGcmFtZVZpZXcg
c2Nyb2xsaW5nLCBub3Qgb3ZlcmZsb3cgc2Nyb2xsaW5nLCB3aGljaCBpcyBjb25mdXNpbmcuCiAg
ICAgICAgIGhhbmRsZWRFdmVudCA9IHByb2Nlc3NXaGVlbEV2ZW50Rm9yU2Nyb2xsaW5nKGV2ZW50
LCBzY3JvbGxhYmxlQXJlYSwgaGFuZGxpbmcpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL0V2ZW50UmVnaW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvRXZlbnRS
ZWdpb24uaAppbmRleCA2YzRmYWU2MzM3MjViN2U2ZThiZmQ5ZGVhOTg1OTE1YzgxMGM5NWZiLi4y
ZmY1ZTkzNjJmNmY0MjZmNzY5Yjk2YzliOGEyYTMxMzc4YzRmNzE4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvRXZlbnRSZWdpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvRXZlbnRSZWdpb24uaApAQCAtODIsNyArODIsNyBAQCBwdWJsaWM6CiAjZW5kaWYK
IAogI2lmIEVOQUJMRShXSEVFTF9FVkVOVF9SRUdJT05TKQotICAgIE9wdGlvblNldDxFdmVudExp
c3RlbmVyUmVnaW9uVHlwZT4gZXZlbnRMaXN0ZW5lclJlZ2lvblR5cGVzRm9yUG9pbnQoY29uc3Qg
SW50UG9pbnQmKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBPcHRpb25TZXQ8RXZlbnRMaXN0
ZW5lclJlZ2lvblR5cGU+IGV2ZW50TGlzdGVuZXJSZWdpb25UeXBlc0ZvclBvaW50KGNvbnN0IElu
dFBvaW50JikgY29uc3Q7CiAgICAgY29uc3QgUmVnaW9uJiBldmVudExpc3RlbmVyUmVnaW9uRm9y
VHlwZShFdmVudExpc3RlbmVyUmVnaW9uVHlwZSkgY29uc3Q7CiAjZW5kaWYKIApAQCAtMTI1LDYg
KzEyNSwxMCBAQCB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPgogdm9pZCBFdmVudFJlZ2lvbjo6ZW5j
b2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0CiB7CiAgICAgZW5jb2RlciA8PCBtX3JlZ2lvbjsK
KyNpZiBFTkFCTEUoV0hFRUxfRVZFTlRfUkVHSU9OUykKKyAgICBlbmNvZGVyIDw8IG1fd2hlZWxF
dmVudExpc3RlbmVyUmVnaW9uOworICAgIGVuY29kZXIgPDwgbV9ub25QYXNzaXZlV2hlZWxFdmVu
dExpc3RlbmVyUmVnaW9uOworI2VuZGlmCiAjaWYgRU5BQkxFKFRPVUNIX0FDVElPTl9SRUdJT05T
KQogICAgIGVuY29kZXIgPDwgbV90b3VjaEFjdGlvblJlZ2lvbnM7CiAjZW5kaWYKQEAgLTE0NCw2
ICsxNDgsMjIgQEAgT3B0aW9uYWw8RXZlbnRSZWdpb24+IEV2ZW50UmVnaW9uOjpkZWNvZGUoRGVj
b2RlciYgZGVjb2RlcikKICAgICBFdmVudFJlZ2lvbiBldmVudFJlZ2lvbjsKICAgICBldmVudFJl
Z2lvbi5tX3JlZ2lvbiA9IFdURk1vdmUoKnJlZ2lvbik7CiAKKyNpZiBFTkFCTEUoV0hFRUxfRVZF
TlRfUkVHSU9OUykKKyAgICBPcHRpb25hbDxSZWdpb24+IHdoZWVsRXZlbnRMaXN0ZW5lclJlZ2lv
bjsKKyAgICBkZWNvZGVyID4+IHdoZWVsRXZlbnRMaXN0ZW5lclJlZ2lvbjsKKyAgICBpZiAoIXdo
ZWVsRXZlbnRMaXN0ZW5lclJlZ2lvbikKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKwor
ICAgIGV2ZW50UmVnaW9uLm1fd2hlZWxFdmVudExpc3RlbmVyUmVnaW9uID0gV1RGTW92ZSgqd2hl
ZWxFdmVudExpc3RlbmVyUmVnaW9uKTsKKworICAgIE9wdGlvbmFsPFJlZ2lvbj4gbm9uUGFzc2l2
ZVdoZWVsRXZlbnRMaXN0ZW5lclJlZ2lvbjsKKyAgICBkZWNvZGVyID4+IG5vblBhc3NpdmVXaGVl
bEV2ZW50TGlzdGVuZXJSZWdpb247CisgICAgaWYgKCFub25QYXNzaXZlV2hlZWxFdmVudExpc3Rl
bmVyUmVnaW9uKQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAgZXZlbnRSZWdp
b24ubV9ub25QYXNzaXZlV2hlZWxFdmVudExpc3RlbmVyUmVnaW9uID0gV1RGTW92ZSgqbm9uUGFz
c2l2ZVdoZWVsRXZlbnRMaXN0ZW5lclJlZ2lvbik7CisjZW5kaWYKKwogI2lmIEVOQUJMRShUT1VD
SF9BQ1RJT05fUkVHSU9OUykKICAgICBPcHRpb25hbDxWZWN0b3I8UmVnaW9uPj4gdG91Y2hBY3Rp
b25SZWdpb25zOwogICAgIGRlY29kZXIgPj4gdG91Y2hBY3Rpb25SZWdpb25zOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9zcGkvaW9zL1VJS2l0U1BJLmggYi9Tb3VyY2UvV2Vi
S2l0L1BsYXRmb3JtL3NwaS9pb3MvVUlLaXRTUEkuaAppbmRleCAyNDE3Nzg5ZGJjMmZhOWVmYzhh
NDUyZTU5NDdlNThhMjY0NWYxNjc2Li5lMDhiMDk3YzEwNmFiMjE2MDEwMjljNDk5Nzc1NTE5OGJj
ODBmOGViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL3NwaS9pb3MvVUlLaXRT
UEkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL3NwaS9pb3MvVUlLaXRTUEkuaApAQCAt
NjIsNiArNjIsOCBAQAogI2ltcG9ydCA8VUlLaXQvVUlQcmVzZW50YXRpb25Db250cm9sbGVyX1By
aXZhdGUuaD4KICNpbXBvcnQgPFVJS2l0L1VJUmVzcG9uZGVyX1ByaXZhdGUuaD4KICNpbXBvcnQg
PFVJS2l0L1VJU2NlbmVfUHJpdmF0ZS5oPgorI2ltcG9ydCA8VUlLaXQvVUlTY3JvbGxFdmVudF9Q
cml2YXRlLmg+CisjaW1wb3J0IDxVSUtpdC9VSVNjcm9sbFZpZXdfRm9yV2ViS2l0T25seS5oPgog
I2ltcG9ydCA8VUlLaXQvVUlTY3JvbGxWaWV3X1ByaXZhdGUuaD4KICNpbXBvcnQgPFVJS2l0L1VJ
U3RyaW5nRHJhd2luZ19Qcml2YXRlLmg+CiAjaW1wb3J0IDxVSUtpdC9VSVRhYmxlVmlld0NlbGxf
UHJpdmF0ZS5oPgpAQCAtNDE2LDggKzQxOCwyNyBAQCB0eXBlZGVmIGVudW0gewogQHByb3BlcnR5
IChub25hdG9taWMsIGdldHRlcj1faW5kaWNhdG9ySW5zZXRBZGp1c3RtZW50QmVoYXZpb3IsIHNl
dHRlcj1fc2V0SW5kaWNhdG9ySW5zZXRBZGp1c3RtZW50QmVoYXZpb3I6KSBVSVNjcm9sbFZpZXdJ
bmRpY2F0b3JJbnNldEFkanVzdG1lbnRCZWhhdmlvciBpbmRpY2F0b3JJbnNldEFkanVzdG1lbnRC
ZWhhdmlvcjsKIEBwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSkgVUlFZGdlSW5zZXRzIF9z
eXN0ZW1Db250ZW50SW5zZXQ7CiBAcHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHkpIFVJRWRn
ZUluc2V0cyBfZWZmZWN0aXZlQ29udGVudEluc2V0OworQHByb3BlcnR5IChub25hdG9taWMsIGdl
dHRlcj1fYWxsb3dzQXN5bmNTY3JvbGxFdmVudCwgc2V0dGVyPV9zZXRBbGxvd3NBc3luY1Njcm9s
bEV2ZW50OikgQk9PTCBfYWxsb3dzQXN5bmNTY3JvbGxFdmVudDsKIEBlbmQKIAordHlwZWRlZiBO
U19FTlVNKE5TVUludGVnZXIsIFVJU2Nyb2xsUGhhc2UpIHsKKyAgICBVSVNjcm9sbFBoYXNlTm9u
ZSwKKyAgICBVSVNjcm9sbFBoYXNlTWF5QmVnaW4sCisgICAgVUlTY3JvbGxQaGFzZUJlZ2FuLAor
ICAgIFVJU2Nyb2xsUGhhc2VDaGFuZ2VkLAorICAgIFVJU2Nyb2xsUGhhc2VFbmRlZCwKKyAgICBV
SVNjcm9sbFBoYXNlQ2FuY2VsbGVkCit9OworCitAaW50ZXJmYWNlIFVJU2Nyb2xsRXZlbnQgOiBV
SUV2ZW50CisKK0Bwcm9wZXJ0eSAoYXNzaWduLCByZWFkb25seSkgVUlTY3JvbGxQaGFzZSBwaGFz
ZTsKKy0gKENHUG9pbnQpbG9jYXRpb25JblZpZXc6KFVJVmlldyAqKXZpZXc7CistIChDR1ZlY3Rv
cilfYWRqdXN0ZWRBY2NlbGVyYXRlZERlbHRhSW5WaWV3OihVSVZpZXcgKil2aWV3OworCitAZW5k
CisKKwogQGludGVyZmFjZSBOU1N0cmluZyAoVUlLaXREZXRhaWxzKQogLSAoQ0dTaXplKV9sZWdh
Y3lfc2l6ZVdpdGhGb250OihVSUZvbnQgKilmb250IGZvcldpZHRoOihDR0Zsb2F0KXdpZHRoIGxp
bmVCcmVha01vZGU6KE5TTGluZUJyZWFrTW9kZSlsaW5lQnJlYWtNb2RlOwogLSAoQ0dTaXplKV9s
ZWdhY3lfc2l6ZVdpdGhGb250OihVSUZvbnQgKilmb250IG1pbkZvbnRTaXplOihDR0Zsb2F0KW1p
bkZvbnRTaXplIGFjdHVhbEZvbnRTaXplOihDR0Zsb2F0ICopYWN0dWFsRm9udFNpemUgZm9yV2lk
dGg6KENHRmxvYXQpd2lkdGggbGluZUJyZWFrTW9kZTooTlNMaW5lQnJlYWtNb2RlKWxpbmVCcmVh
a01vZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tX
ZWJWaWV3SW50ZXJuYWwuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dl
YlZpZXdJbnRlcm5hbC5oCmluZGV4IGMwNWFkNzI0ZWQyMDM5MjFmNWViZWU0NzE3NTE1Nzk4MzM5
ZDYyZGIuLjMxZjgxY2UwZTllNGZlMjdlMmNlMTU5ZjlmMGQ0N2Q4OTlkNGZjOWMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdJbnRlcm5hbC5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdJbnRlcm5h
bC5oCkBAIC0yMjksNiArMjI5LDggQEAgY2xhc3MgVmlld0dlc3R1cmVDb250cm9sbGVyOwogICAg
IEJPT0wgX2hhc1NjaGVkdWxlZFZpc2libGVSZWN0VXBkYXRlOwogICAgIEJPT0wgX3Zpc2libGVD
b250ZW50UmVjdFVwZGF0ZVNjaGVkdWxlZEZyb21TY3JvbGxWaWV3SW5TdGFibGVTdGF0ZTsKIAor
ICAgIE9wdGlvbmFsPGJvb2w+IF9jdXJyZW50U2Nyb2xsR2VzdHVyZVdhc0luaXRpYWxseVByZXZl
bnRlZDsKKwogICAgIF9XS0RyYWdJbnRlcmFjdGlvblBvbGljeSBfZHJhZ0ludGVyYWN0aW9uUG9s
aWN5OwogCiAgICAgLy8gRm9yIHJlbGVhc2UtbG9nZ2luZyBmb3IgPHJkYXI6Ly9wcm9ibGVtLzM5
MjgxMjY5Pi4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9pb3MvV0tX
ZWJWaWV3SU9TLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvaW9zL1dLV2ViVmlld0lP
Uy5oCmluZGV4IGY3ZTJlMzMxZDFhMjRhZDE2ZmFiYTgyYzc3ODJiMzhiMWVmNDk5NWEuLjM5NDE1
ZTcyZTYyNDRmOWNjNTk1M2FiMjg2YmQ5ZTM0MzhjNzFlNDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9pb3MvV0tXZWJWaWV3SU9TLmgKKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL2lvcy9XS1dlYlZpZXdJT1MuaApAQCAtMjUsNiArMjUsOCBAQAogCiAj
aW1wb3J0ICJXS1dlYlZpZXdJbnRlcm5hbC5oIgogCitAY2xhc3MgVUlTY3JvbGxFdmVudDsKKwog
I2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAKIEBpbnRlcmZhY2UgV0tXZWJWaWV3IChXS1ZpZXdJ
bnRlcm5hbElPUykKQEAgLTEyNSw2ICsxMjcsMTEgQEAKIC0gKFdlYkNvcmU6OkZsb2F0U2l6ZSlh
Y3RpdmVWaWV3TGF5b3V0U2l6ZTooY29uc3QgQ0dSZWN0Jilib3VuZHM7CiAtICh2b2lkKV91cGRh
dGVTY3JvbGxWaWV3SW5zZXRBZGp1c3RtZW50QmVoYXZpb3I7CiAKKy0gKEJPT0wpX2VmZmVjdGl2
ZUFwcGVhcmFuY2VJc0Rhcms7CistIChCT09MKV9lZmZlY3RpdmVVc2VySW50ZXJmYWNlTGV2ZWxJ
c0VsZXZhdGVkOworCistICh2b2lkKV9zY3JvbGxWaWV3OihVSVNjcm9sbFZpZXcgKilzY3JvbGxW
aWV3IGFzeW5jaHJvbm91c2x5SGFuZGxlU2Nyb2xsRXZlbnQ6KFVJU2Nyb2xsRXZlbnQgKilzY3Jv
bGxFdmVudCBjb21wbGV0aW9uOih2b2lkICheKShCT09MIGhhbmRsZWQpKWNvbXBsZXRpb247CisK
IEBwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSkgV0tQYXNzd29yZFZpZXcgKl9wYXNzd29y
ZFZpZXc7CiBAcHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHkpIFdLV2ViVmlld0NvbnRlbnRQ
cm92aWRlclJlZ2lzdHJ5ICpfY29udGVudFByb3ZpZGVyUmVnaXN0cnk7CiBAcHJvcGVydHkgKG5v
bmF0b21pYywgcmVhZG9ubHkpIFdLU2VsZWN0aW9uR3JhbnVsYXJpdHkgX3NlbGVjdGlvbkdyYW51
bGFyaXR5OwpAQCAtMTM3LDkgKzE0NCw2IEBACiBAcHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9u
bHksIGdldHRlcj1faXNSZXRhaW5pbmdBY3RpdmVGb2N1c2VkU3RhdGUpIEJPT0wgX3JldGFpbmlu
Z0FjdGl2ZUZvY3VzZWRTdGF0ZTsKIEBwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSkgaW50
MzJfdCBfZGV2aWNlT3JpZW50YXRpb247CiAKLS0gKEJPT0wpX2VmZmVjdGl2ZUFwcGVhcmFuY2VJ
c0Rhcms7Ci0tIChCT09MKV9lZmZlY3RpdmVVc2VySW50ZXJmYWNlTGV2ZWxJc0VsZXZhdGVkOwot
CiBAZW5kCiAKICNlbmRpZiAvLyBQTEFURk9STShJT1NfRkFNSUxZKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2lvcy9XS1dlYlZpZXdJT1MubW0gYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvaW9zL1dLV2ViVmlld0lPUy5tbQppbmRleCA0Yjc2NjJhMTY0NTk0
ZGU2ZTQzZmU0NDQ0OGUwOTIzN2Q3MmJlZjMyLi5jMDlmOTNiZGJmMTIxODJjMjcwY2IzMjc1OTZk
MDIxOTc1YzU5YjY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvaW9z
L1dLV2ViVmlld0lPUy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvaW9zL1dL
V2ViVmlld0lPUy5tbQpAQCAtMjksOSArMjksMTEgQEAKICNpZiBQTEFURk9STShJT1NfRkFNSUxZ
KQogCiAjaW1wb3J0ICJGcm9udEJvYXJkU2VydmljZXNTUEkuaCIKKyNpbXBvcnQgIk5hdGl2ZVdl
YldoZWVsRXZlbnQuaCIKICNpbXBvcnQgIk5hdmlnYXRpb25TdGF0ZS5oIgogI2ltcG9ydCAiUmVt
b3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94eS5oIgogI2ltcG9ydCAiUmVtb3RlTGF5ZXJUcmVl
U2Nyb2xsaW5nUGVyZm9ybWFuY2VEYXRhLmgiCisjaW1wb3J0ICJSZW1vdGVMYXllclRyZWVWaWV3
cy5oIgogI2ltcG9ydCAiUmVtb3RlU2Nyb2xsaW5nQ29vcmRpbmF0b3JQcm94eS5oIgogI2ltcG9y
dCAiVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5LmgiCiAjaW1wb3J0ICJWaWV3R2VzdHVyZUNv
bnRyb2xsZXIuaCIKQEAgLTEzOSw2ICsxNDEsMTAgQEAgLSAodm9pZClfc2V0dXBTY3JvbGxBbmRD
b250ZW50Vmlld3MKICAgICBbX3Njcm9sbFZpZXcgc2V0SW50ZXJuYWxEZWxlZ2F0ZTpzZWxmXTsK
ICAgICBbX3Njcm9sbFZpZXcgc2V0Qm91bmNlc1pvb206WUVTXTsKIAorI2lmIEhBVkUoVUlTQ1JP
TExWSUVXX0FTWU5DSFJPTk9VU19TQ1JPTExfRVZFTlRfSEFORExJTkcpCisgICAgW19zY3JvbGxW
aWV3IF9zZXRBbGxvd3NBc3luY1Njcm9sbEV2ZW50OllFU107CisjZW5kaWYKKwogICAgIGlmIChb
X3Njcm9sbFZpZXcgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3Rvcihfc2V0QXZvaWRzSnVtcE9u
SW50ZXJydXB0ZWRCb3VuY2U6KV0pIHsKICAgICAgICAgW19zY3JvbGxWaWV3IHNldFRyYWNrc0lt
bWVkaWF0ZWx5V2hpbGVEZWNlbGVyYXRpbmc6Tk9dOwogICAgICAgICBbX3Njcm9sbFZpZXcgX3Nl
dEF2b2lkc0p1bXBPbkludGVycnVwdGVkQm91bmNlOllFU107CkBAIC0xNTkwLDYgKzE1OTYsNjAg
QEAgLSAoQ0dQb2ludClfc2Nyb2xsVmlldzooVUlTY3JvbGxWaWV3ICopc2Nyb2xsVmlldyBhZGp1
c3RlZE9mZnNldEZvck9mZnNldDooQ0dQb2kKICAgICByZXR1cm4gYWRqdXN0ZWRDb250ZW50T2Zm
c2V0OwogfQogCisjaWYgSEFWRShVSVNDUk9MTFZJRVdfQVNZTkNIUk9OT1VTX1NDUk9MTF9FVkVO
VF9IQU5ETElORykKKy0gKHZvaWQpX3Njcm9sbFZpZXc6KFVJU2Nyb2xsVmlldyAqKXNjcm9sbFZp
ZXcgYXN5bmNocm9ub3VzbHlIYW5kbGVTY3JvbGxFdmVudDooVUlTY3JvbGxFdmVudCAqKXNjcm9s
bEV2ZW50IGNvbXBsZXRpb246KHZvaWQgKF4pKEJPT0wgaGFuZGxlZCkpY29tcGxldGlvbgorewor
ICAgIFdlYkNvcmU6OkludFBvaW50IHNjcm9sbExvY2F0aW9uID0gV2ViQ29yZTo6cm91bmRlZElu
dFBvaW50KFtzY3JvbGxFdmVudCBsb2NhdGlvbkluVmlldzpfY29udGVudFZpZXcuZ2V0KCldKTsK
KworICAgIGF1dG8gZXZlbnRMaXN0ZW5lcnMgPSBXZWJLaXQ6OmV2ZW50TGlzdGVuZXJUeXBlc0F0
UG9pbnQoX2NvbnRlbnRWaWV3LmdldCgpLCBzY3JvbGxMb2NhdGlvbik7CisgICAgYm9vbCBoYXNQ
YXNzaXZlV2hlZWxIYW5kbGVycyA9IGV2ZW50TGlzdGVuZXJzLmNvbnRhaW5zKFdlYkNvcmU6OkV2
ZW50TGlzdGVuZXJSZWdpb25UeXBlOjpXaGVlbCk7CisgICAgYm9vbCBoYXNOb25QYXNzaXZlV2hl
ZWxIYW5kbGVycyA9IGV2ZW50TGlzdGVuZXJzLmNvbnRhaW5zKFdlYkNvcmU6OkV2ZW50TGlzdGVu
ZXJSZWdpb25UeXBlOjpOb25QYXNzaXZlV2hlZWwpOworCisgICAgaWYgKCFoYXNQYXNzaXZlV2hl
ZWxIYW5kbGVycyAmJiAhaGFzTm9uUGFzc2l2ZVdoZWVsSGFuZGxlcnMpIHsKKyAgICAgICAgY29t
cGxldGlvbihOTyk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpZiAoc2Nyb2xsRXZl
bnQucGhhc2UgPT0gVUlTY3JvbGxQaGFzZU1heUJlZ2luKSB7CisgICAgICAgIGNvbXBsZXRpb24o
Tk8pOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgYm9vbCBpc0ZpcnN0RXZlbnRJbkdl
c3R1cmUgPSBzY3JvbGxFdmVudC5waGFzZSA9PSBVSVNjcm9sbFBoYXNlQmVnYW47CisgICAgaWYg
KGlzRmlyc3RFdmVudEluR2VzdHVyZSkKKyAgICAgICAgX2N1cnJlbnRTY3JvbGxHZXN0dXJlV2Fz
SW5pdGlhbGx5UHJldmVudGVkID0gV1RGOjpudWxsb3B0OworCisgICAgYm9vbCBpc1ByZXZlbnRh
YmxlID0gaGFzTm9uUGFzc2l2ZVdoZWVsSGFuZGxlcnMgJiYgX2N1cnJlbnRTY3JvbGxHZXN0dXJl
V2FzSW5pdGlhbGx5UHJldmVudGVkLnZhbHVlT3IoaXNGaXJzdEV2ZW50SW5HZXN0dXJlKTsKKyAg
ICBDR1ZlY3RvciBkZWx0YSA9IFtzY3JvbGxFdmVudCBfYWRqdXN0ZWRBY2NlbGVyYXRlZERlbHRh
SW5WaWV3Ol9jb250ZW50Vmlldy5nZXQoKV07CisKKyAgICBXZWJLaXQ6OldlYldoZWVsRXZlbnQg
ZXZlbnQgPSB7CisgICAgICAgIFdlYktpdDo6V2ViRXZlbnQ6OldoZWVsLAorICAgICAgICBzY3Jv
bGxMb2NhdGlvbiwKKyAgICAgICAgc2Nyb2xsTG9jYXRpb24sCisgICAgICAgIFdlYkNvcmU6OkZs
b2F0U2l6ZShkZWx0YS5keCwgZGVsdGEuZHkpLAorICAgICAgICB7IH0sIC8vIHdoZWVsVGlja3MK
KyAgICAgICAgV2ViS2l0OjpOYXRpdmVXZWJXaGVlbEV2ZW50OjpHcmFudWxhcml0eTo6U2Nyb2xs
QnlQaXhlbFdoZWVsRXZlbnQsCisgICAgICAgIHsgfSwgLy8gbW9kaWZpZXJzCisgICAgICAgIE1v
bm90b25pY1RpbWU6OmZyb21SYXdTZWNvbmRzKHNjcm9sbEV2ZW50LnRpbWVzdGFtcCkuYXBwcm94
aW1hdGVXYWxsVGltZSgpCisgICAgfTsKKworICAgIF9wYWdlLT5kaXNwYXRjaFdoZWVsRXZlbnRX
aXRob3V0U2Nyb2xsaW5nKGV2ZW50LCBpc0ZpcnN0RXZlbnRJbkdlc3R1cmUsIGhhc05vblBhc3Np
dmVXaGVlbEhhbmRsZXJzLCBbd2Vha1NlbGYgPSBXZWFrT2JqQ1B0cjxXS1dlYlZpZXc+KHNlbGYp
LCBzdHJvbmdDb21wbGV0aW9uID0gbWFrZUJsb2NrUHRyKGNvbXBsZXRpb24pLCBpc1ByZXZlbnRh
YmxlLCBpc0ZpcnN0RXZlbnRJbkdlc3R1cmVdKGJvb2wgaGFuZGxlZCkgeworICAgICAgICBhdXRv
IHN0cm9uZ1NlbGYgPSB3ZWFrU2VsZi5nZXQoKTsKKyAgICAgICAgaWYgKCFzdHJvbmdTZWxmKQor
ICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIGlmIChpc1ByZXZlbnRhYmxlKSB7CisgICAg
ICAgICAgICBpZiAoaXNGaXJzdEV2ZW50SW5HZXN0dXJlKQorICAgICAgICAgICAgICAgIHN0cm9u
Z1NlbGYtPl9jdXJyZW50U2Nyb2xsR2VzdHVyZVdhc0luaXRpYWxseVByZXZlbnRlZCA9IGhhbmRs
ZWQ7CisgICAgICAgICAgICBzdHJvbmdDb21wbGV0aW9uKGhhbmRsZWQpOworICAgICAgICB9Cisg
ICAgfSk7CisKKyAgICBpZiAoIWlzUHJldmVudGFibGUpCisgICAgICAgIGNvbXBsZXRpb24oZmFs
c2UpOworfQorI2VuZGlmIC8vIEhBVkUoVUlTQ1JPTExWSUVXX0FTWU5DSFJPTk9VU19TQ1JPTExf
RVZFTlRfSEFORExJTkcpCisKIC0gKHZvaWQpc2Nyb2xsVmlld0RpZFNjcm9sbDooVUlTY3JvbGxW
aWV3ICopc2Nyb2xsVmlldwogewogICAgIGlmICghW3NlbGYgdXNlc1N0YW5kYXJkQ29udGVudFZp
ZXddICYmIFtfY3VzdG9tQ29udGVudFZpZXcgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3Rvcih3
ZWJfc2Nyb2xsVmlld0RpZFNjcm9sbDopXSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1BhZ2VDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BhZ2VDbGllbnQu
aAppbmRleCBjNGM3MTg3NGExMGRhOWI1NDFmZWUyODIwODA4YzFlNTBkM2ZhOTJiLi40Y2NhNDJm
N2YwNjliN2RmOGI0MDllMmZiMTlkYjAwM2Q1YTQ2MTAwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9QYWdlQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
UGFnZUNsaWVudC5oCkBAIC02NCw2ICs2NCw4IEBAIE9CSkNfQ0xBU1MgTlNNZW51OwogT0JKQ19D
TEFTUyBOU1NldDsKIE9CSkNfQ0xBU1MgTlNUZXh0QWx0ZXJuYXRpdmVzOwogT0JKQ19DTEFTUyBV
SUdlc3R1cmVSZWNvZ25pemVyOworT0JKQ19DTEFTUyBVSVNjcm9sbEV2ZW50OworT0JKQ19DTEFT
UyBVSVNjcm9sbFZpZXc7CiBPQkpDX0NMQVNTIF9XS1JlbW90ZU9iamVjdFJlZ2lzdHJ5OwogCiAj
aWYgVVNFKEFQUEtJVCkKQEAgLTQ2Niw2ICs0NjgsOCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2
b2lkIGRpc2FibGVJbnNwZWN0b3JOb2RlU2VhcmNoKCkgPSAwOwogCiAgICAgdmlydHVhbCB2b2lk
IGhhbmRsZUF1dG9jb3JyZWN0aW9uQ29udGV4dChjb25zdCBXZWJBdXRvY29ycmVjdGlvbkNvbnRl
eHQmKSA9IDA7CisKKyAgICB2aXJ0dWFsIHZvaWQgaGFuZGxlQXN5bmNocm9ub3VzUHJldmVudGFi
bGVTY3JvbGxFdmVudChVSVNjcm9sbFZpZXcgKiwgVUlTY3JvbGxFdmVudCAqLCB2b2lkICheY29t
cGxldGlvbikoQk9PTCBoYW5kbGVkKSkgPSAwOwogI2VuZGlmCiAKICAgICAvLyBBdXhpbGlhcnkg
Q2xpZW50IENyZWF0aW9uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1v
dGVMYXllclRyZWUvaW9zL1JlbW90ZUxheWVyVHJlZVZpZXdzLmggYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvaW9zL1JlbW90ZUxheWVyVHJlZVZpZXdzLmgKaW5kZXgg
MzNhMTQ2MTBiOGFmYmNjOTY2Zjk4MjZlN2I0NTM2MzdhNmI5ZDU2ZS4uMmI4ZDBhYjBlZWI5MWQ0
ZjFmMTE4NjZiOTQxOTZkYTFmM2NiYWQxYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL2lvcy9SZW1vdGVMYXllclRyZWVWaWV3cy5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9pb3MvUmVtb3RlTGF5ZXJUcmVl
Vmlld3MuaApAQCAtNzEsNiArNzEsOCBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIE9wdGlvblNldDxX
ZWJDb3JlOjpUb3VjaEFjdGlvbj4gdG91Y2hBY3Rpb25zRm9yUG9pbnQoVUlWaWV3ICpyb290Vmll
dywgY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmKTsKIFVJU2Nyb2xsVmlldyAqZmluZEFjdGluZ1Nj
cm9sbFBhcmVudChVSVNjcm9sbFZpZXcgKiwgY29uc3QgUmVtb3RlTGF5ZXJUcmVlSG9zdCYpOwog
CitPcHRpb25TZXQ8V2ViQ29yZTo6RXZlbnRMaXN0ZW5lclJlZ2lvblR5cGU+IGV2ZW50TGlzdGVu
ZXJUeXBlc0F0UG9pbnQoVUlWaWV3ICpyb290VmlldywgY29uc3QgV2ViQ29yZTo6SW50UG9pbnQm
KTsKKwogI2lmIEVOQUJMRShFRElUQUJMRV9SRUdJT04pCiBib29sIG1heUNvbnRhaW5FZGl0YWJs
ZUVsZW1lbnRzSW5SZWN0KFVJVmlldyAqcm9vdFZpZXcsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVj
dCYpOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVM
YXllclRyZWUvaW9zL1JlbW90ZUxheWVyVHJlZVZpZXdzLm1tIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL2lvcy9SZW1vdGVMYXllclRyZWVWaWV3cy5tbQppbmRleCAx
MWJiMDFiMzcyY2U2OTdiNmU2M2E0M2U2YTQ2ZGY4MjQzY2FkYzM4Li5hOGZhNmZmNmZhMmFkMGU3
YzRhNGMzNTNmYWE3ZWE2YThhMmQ1MjM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9SZW1vdGVMYXllclRyZWUvaW9zL1JlbW90ZUxheWVyVHJlZVZpZXdzLm1tCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9pb3MvUmVtb3RlTGF5ZXJUcmVl
Vmlld3MubW0KQEAgLTIwNSw2ICsyMDUsMzYgQEAgT3B0aW9uU2V0PFdlYkNvcmU6OlRvdWNoQWN0
aW9uPiB0b3VjaEFjdGlvbnNGb3JQb2ludChVSVZpZXcgKnJvb3RWaWV3LCBjb25zdCBXZWIKICAg
ICByZXR1cm4gbm9kZS0+ZXZlbnRSZWdpb24oKS50b3VjaEFjdGlvbnNGb3JQb2ludChXZWJDb3Jl
OjpJbnRQb2ludChoaXRWaWV3UG9pbnQpKTsKIH0KIAorI2lmIEVOQUJMRShXSEVFTF9FVkVOVF9S
RUdJT05TKQorT3B0aW9uU2V0PFdlYkNvcmU6OkV2ZW50TGlzdGVuZXJSZWdpb25UeXBlPiBldmVu
dExpc3RlbmVyVHlwZXNBdFBvaW50KFVJVmlldyAqcm9vdFZpZXcsIGNvbnN0IFdlYkNvcmU6Oklu
dFBvaW50JiBwb2ludCkKK3sKKyAgICBWZWN0b3I8VUlWaWV3ICosIDE2PiB2aWV3c0F0UG9pbnQ7
CisgICAgY29sbGVjdERlc2NlbmRhbnRWaWV3c0F0UG9pbnQodmlld3NBdFBvaW50LCByb290Vmll
dywgcG9pbnQsIG5pbCk7CisKKyAgICBpZiAodmlld3NBdFBvaW50LmlzRW1wdHkoKSkKKyAgICAg
ICAgcmV0dXJuIHsgfTsKKworICAgIFVJVmlldyAqaGl0VmlldyA9IG5pbDsKKyAgICBmb3IgKGF1
dG8gKnZpZXcgOiBXVEY6Om1ha2VSZXZlcnNlZFJhbmdlKHZpZXdzQXRQb2ludCkpIHsKKyAgICAg
ICAgaWYgKFt2aWV3IGlzS2luZE9mQ2xhc3M6W1dLQ29tcG9zaXRpbmdWaWV3IGNsYXNzXV0pIHsK
KyAgICAgICAgICAgIGhpdFZpZXcgPSB2aWV3OworICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
IH0KKyAgICB9CisKKyAgICBpZiAoIWhpdFZpZXcpCisgICAgICAgIHJldHVybiB7IH07CisKKyAg
ICBDR1BvaW50IGhpdFZpZXdQb2ludCA9IFtoaXRWaWV3IGNvbnZlcnRQb2ludDpwb2ludCBmcm9t
Vmlldzpyb290Vmlld107CisKKyAgICBhdXRvKiBub2RlID0gUmVtb3RlTGF5ZXJUcmVlTm9kZTo6
Zm9yQ0FMYXllcihoaXRWaWV3LmxheWVyKTsKKyAgICBpZiAoIW5vZGUpCisgICAgICAgIHJldHVy
biB7IH07CisKKyAgICByZXR1cm4gbm9kZS0+ZXZlbnRSZWdpb24oKS5ldmVudExpc3RlbmVyUmVn
aW9uVHlwZXNGb3JQb2ludChXZWJDb3JlOjpJbnRQb2ludChoaXRWaWV3UG9pbnQpKTsKK30KKyNl
bmRpZgorCiBVSVNjcm9sbFZpZXcgKmZpbmRBY3RpbmdTY3JvbGxQYXJlbnQoVUlTY3JvbGxWaWV3
ICpzY3JvbGxWaWV3LCBjb25zdCBSZW1vdGVMYXllclRyZWVIb3N0JiBob3N0KQogewogICAgIEhh
c2hTZXQ8V2ViQ29yZTo6R3JhcGhpY3NMYXllcjo6UGxhdGZvcm1MYXllcklEPiBzY3JvbGxlcnNU
b1NraXA7CkBAIC00MDQsNiArNDM0LDEwIEBAIC0gKGluc3RhbmNldHlwZSlpbml0V2l0aEZyYW1l
OihDR1JlY3QpZnJhbWUKICAgICBzZWxmLmNvbnRlbnRJbnNldEFkanVzdG1lbnRCZWhhdmlvciA9
IFVJU2Nyb2xsVmlld0NvbnRlbnRJbnNldEFkanVzdG1lbnROZXZlcjsKICNlbmRpZgogCisjaWYg
SEFWRShVSVNDUk9MTFZJRVdfQVNZTkNIUk9OT1VTX1NDUk9MTF9FVkVOVF9IQU5ETElORykKKyAg
ICBbc2VsZiBfc2V0QWxsb3dzQXN5bmNTY3JvbGxFdmVudDpZRVNdOworI2VuZGlmCisKICAgICBy
ZXR1cm4gc2VsZjsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVt
b3RlTGF5ZXJUcmVlL2lvcy9TY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlSU9TLmgg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvaW9zL1Njcm9sbGluZ1Ry
ZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVJT1MuaAppbmRleCAzMTA1MDJjOGE2NDRjZGZmOGM1ZjMy
NjgyZDcwMzRlZWFlMjExNWFkLi4zMjY5ZmQyNmNjNDMzOTI1MmYzNGNmNjg5MGRiMmFhNmNhMDZk
ZjMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUv
aW9zL1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVJT1MuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvaW9zL1Njcm9sbGluZ1RyZWVTY3JvbGxp
bmdOb2RlRGVsZWdhdGVJT1MuaApAQCAtNjUsNiArNjUsOCBAQCBwdWJsaWM6CiAKICAgICB2b2lk
IHJlcG9zaXRpb25TY3JvbGxpbmdMYXllcnMoKTsKIAorICAgIHZvaWQgaGFuZGxlQXN5bmNocm9u
b3VzUHJldmVudGFibGVTY3JvbGxFdmVudChVSVNjcm9sbFZpZXcgKiwgVUlTY3JvbGxFdmVudCAq
LCB2b2lkICheY29tcGxldGlvbikoQk9PTCBoYW5kbGVkKSk7CisKICAgICBPcHRpb25TZXQ8V2Vi
Q29yZTo6VG91Y2hBY3Rpb24+IGFjdGl2ZVRvdWNoQWN0aW9ucygpIGNvbnN0IHsgcmV0dXJuIG1f
YWN0aXZlVG91Y2hBY3Rpb25zOyB9CiAgICAgdm9pZCBjb21wdXRlQWN0aXZlVG91Y2hBY3Rpb25z
Rm9yR2VzdHVyZVJlY29nbml6ZXIoVUlHZXN0dXJlUmVjb2duaXplciopOwogICAgIHZvaWQgY2xl
YXJBY3RpdmVUb3VjaEFjdGlvbnMoKSB7IG1fYWN0aXZlVG91Y2hBY3Rpb25zID0geyB9OyB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvaW9zL1Nj
cm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVJT1MubW0gYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvaW9zL1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVs
ZWdhdGVJT1MubW0KaW5kZXggYWIzNzQ3MjBhMzI4NDdmN2U1Y2M1N2JiYzU3OTc0ZDFlMzA0NjUw
Zi4uNjA5NDA1N2MxYjRkZmEzNWFlYTFhM2E5ZGI1Mzg4YTAyOTdmZDgwMSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL2lvcy9TY3JvbGxpbmdUcmVl
U2Nyb2xsaW5nTm9kZURlbGVnYXRlSU9TLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1JlbW90ZUxheWVyVHJlZS9pb3MvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZUlP
Uy5tbQpAQCAtMTc2LDYgKzE3NiwxMyBAQCAtIChDR1BvaW50KV9zY3JvbGxWaWV3OihVSVNjcm9s
bFZpZXcgKilzY3JvbGxWaWV3IGFkanVzdGVkT2Zmc2V0Rm9yT2Zmc2V0OihDR1BvaQogICAgIHJl
dHVybiBhZGp1c3RlZENvbnRlbnRPZmZzZXQ7CiB9CiAKKyNpZiBIQVZFKFVJU0NST0xMVklFV19B
U1lOQ0hST05PVVNfU0NST0xMX0VWRU5UX0hBTkRMSU5HKQorLSAodm9pZClfc2Nyb2xsVmlldzoo
VUlTY3JvbGxWaWV3ICopc2Nyb2xsVmlldyBhc3luY2hyb25vdXNseUhhbmRsZVNjcm9sbEV2ZW50
OihVSVNjcm9sbEV2ZW50ICopc2Nyb2xsRXZlbnQgY29tcGxldGlvbjoodm9pZCAoXikoQk9PTCBo
YW5kbGVkKSljb21wbGV0aW9uCit7CisgICAgX3Njcm9sbGluZ1RyZWVOb2RlRGVsZWdhdGUtPmhh
bmRsZUFzeW5jaHJvbm91c1ByZXZlbnRhYmxlU2Nyb2xsRXZlbnQoc2Nyb2xsVmlldywgc2Nyb2xs
RXZlbnQsIGNvbXBsZXRpb24pOworfQorI2VuZGlmCisKIC0gKHZvaWQpc2Nyb2xsVmlld1dpbGxC
ZWdpblpvb21pbmc6KFVJU2Nyb2xsVmlldyAqKXNjcm9sbFZpZXcgd2l0aFZpZXc6KFVJVmlldyAq
KXZpZXcKIHsKICAgICBbc2VsZiBjYW5jZWxQb2ludGVyc0Zvckdlc3R1cmVSZWNvZ25pemVyOnNj
cm9sbFZpZXcucGluY2hHZXN0dXJlUmVjb2duaXplcl07CkBAIC0yOTgsNiArMzA1LDEyIEBAIHZv
aWQgU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZUlPUzo6Y29tbWl0U3RhdGVBZnRl
ckNoaWxkcmVuKGNvbnN0IFNjcm9sCiAgICAgfQogfQogCit2b2lkIFNjcm9sbGluZ1RyZWVTY3Jv
bGxpbmdOb2RlRGVsZWdhdGVJT1M6OmhhbmRsZUFzeW5jaHJvbm91c1ByZXZlbnRhYmxlU2Nyb2xs
RXZlbnQoVUlTY3JvbGxWaWV3ICpzY3JvbGxWaWV3LCBVSVNjcm9sbEV2ZW50ICpzY3JvbGxFdmVu
dCwgdm9pZCAoXmNvbXBsZXRpb24pKEJPT0wgaGFuZGxlZCkpCit7CisgICAgYXV0byYgc2Nyb2xs
aW5nQ29vcmRpbmF0b3JQcm94eSA9IGRvd25jYXN0PFdlYktpdDo6UmVtb3RlU2Nyb2xsaW5nVHJl
ZT4oc2Nyb2xsaW5nVHJlZSgpKS5zY3JvbGxpbmdDb29yZGluYXRvclByb3h5KCk7CisgICAgc2Ny
b2xsaW5nQ29vcmRpbmF0b3JQcm94eS53ZWJQYWdlUHJveHkoKS5wYWdlQ2xpZW50KCkuaGFuZGxl
QXN5bmNocm9ub3VzUHJldmVudGFibGVTY3JvbGxFdmVudChzY3JvbGxWaWV3LCBzY3JvbGxFdmVu
dCwgY29tcGxldGlvbik7Cit9CisKIHZvaWQgU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxl
Z2F0ZUlPUzo6cmVwb3NpdGlvblNjcm9sbGluZ0xheWVycygpCiB7CiAgICAgQkVHSU5fQkxPQ0tf
T0JKQ19FWENFUFRJT05TCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQ
YWdlUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcApp
bmRleCBjYzFiYmI0YTRhYWI4MmQxMWRjNjZhYzJlNDFhZmNhZmUwY2U3ODgzLi4yYjRkODM4YjVj
N2JjMDEzNWRjZmQxYjU0ZjQ2NWIzNTFjNjFiNDcwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYlBhZ2VQcm94eS5jcHAKQEAgLTI2MzcsNiArMjYzNywxMSBAQCB2b2lkIFdlYlBhZ2VQcm94
eTo6Zmx1c2hQZW5kaW5nTW91c2VFdmVudENhbGxiYWNrcygpCiAgICAgbV9jYWxsYmFja0hhbmRs
ZXJzQWZ0ZXJQcm9jZXNzaW5nUGVuZGluZ01vdXNlRXZlbnRzLmNsZWFyKCk7CiB9CiAKK3ZvaWQg
V2ViUGFnZVByb3h5OjpkaXNwYXRjaFdoZWVsRXZlbnRXaXRob3V0U2Nyb2xsaW5nKGNvbnN0IFdl
YldoZWVsRXZlbnQmIGV2ZW50LCBib29sIGlzRmlyc3RFdmVudEluR2VzdHVyZSwgYm9vbCBoYXNO
b25QYXNzaXZlV2hlZWxIYW5kbGVycywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBj
b21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBzZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6Oldl
YlBhZ2U6OkRpc3BhdGNoV2hlZWxFdmVudFdpdGhvdXRTY3JvbGxpbmcoZXZlbnQsIGlzRmlyc3RF
dmVudEluR2VzdHVyZSwgaGFzTm9uUGFzc2l2ZVdoZWVsSGFuZGxlcnMpLCBXVEZNb3ZlKGNvbXBs
ZXRpb25IYW5kbGVyKSk7Cit9CisKIHZvaWQgV2ViUGFnZVByb3h5OjpoYW5kbGVXaGVlbEV2ZW50
KGNvbnN0IE5hdGl2ZVdlYldoZWVsRXZlbnQmIGV2ZW50KQogewogI2lmIEVOQUJMRShBU1lOQ19T
Q1JPTExJTkcpICYmIFBMQVRGT1JNKENPQ09BKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViUGFnZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdl
UHJveHkuaAppbmRleCA5OGU4NjM2ZThlYjYwY2Q0YTA0YmIwOGE4ZjlmMTBiZjc5OWIyYjdlLi5l
NjM2YzRmMjVhN2MxZGEzOGRhOTIxMDgzYmY1ZjMyNDdmMjYzMTBiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJQYWdlUHJveHkuaApAQCAtMTgzNSw2ICsxODM1LDggQEAgcHVibGljOgogICAg
IHZvaWQgY3JlYXRlQXBwSGlnaGxpZ2h0SW5TZWxlY3RlZFJhbmdlKENyZWF0ZU5ld0dyb3VwRm9y
SGlnaGxpZ2h0KTsKICNlbmRpZgogCisgICAgdm9pZCBkaXNwYXRjaFdoZWVsRXZlbnRXaXRob3V0
U2Nyb2xsaW5nKGNvbnN0IFdlYldoZWVsRXZlbnQmLCBib29sIGlzRmlyc3RFdmVudEluR2VzdHVy
ZSwgYm9vbCBoYXNOb25QYXNzaXZlV2hlZWxIYW5kbGVycywgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChib29sKT4mJik7CisKIHByaXZhdGU6CiAgICAgV2ViUGFnZVByb3h5KFBhZ2VDbGllbnQmLCBX
ZWJQcm9jZXNzUHJveHkmLCBSZWY8QVBJOjpQYWdlQ29uZmlndXJhdGlvbj4mJik7CiAgICAgdm9p
ZCBwbGF0Zm9ybUluaXRpYWxpemUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9z
L1BhZ2VDbGllbnRJbXBsSU9TLmgKaW5kZXggYmUwMzAxZmI3Y2IxOGJhYzdjZGUzOTBlZDNjZjFh
ODU1NWI5OGQ3ZC4uMDUxZTZlZWI2OWE3NjFjMmU1OTdmMjY3MGRhYThjNzY1ZjE1ZWNhNyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLmgK
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLmgKQEAg
LTI3MSw2ICsyNzEsOCBAQCBwcml2YXRlOgogCiAgICAgdm9pZCBzaG93RGljdGF0aW9uQWx0ZXJu
YXRpdmVVSShjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmLCBXZWJDb3JlOjpEaWN0YXRpb25Db250
ZXh0KSBmaW5hbDsKIAorICAgIHZvaWQgaGFuZGxlQXN5bmNocm9ub3VzUHJldmVudGFibGVTY3Jv
bGxFdmVudChVSVNjcm9sbFZpZXcgKiwgVUlTY3JvbGxFdmVudCAqLCB2b2lkICheY29tcGxldGlv
bikoQk9PTCBoYW5kbGVkKSkgZmluYWw7CisKICAgICBXZWFrT2JqQ1B0cjxXS0NvbnRlbnRWaWV3
PiBtX2NvbnRlbnRWaWV3OwogICAgIFJldGFpblB0cjxXS0VkaXRvclVuZG9UYXJnZXQ+IG1fdW5k
b1RhcmdldDsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvUGFn
ZUNsaWVudEltcGxJT1MubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvUGFnZUNsaWVu
dEltcGxJT1MubW0KaW5kZXggYjZhYjk2MmI3MzM0MzkyMzJiZjdkZDkyYzk2YTZiMjEyYzFhODZk
Mi4uMDE2ZDc1N2RmNTliNDExYjI2ZTVlYTM0ZGM4MjZiNmQwNDA5YmEzNCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLm1tCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5tbQpAQCAtOTYxLDYg
Kzk2MSwxMSBAQCB2b2lkIFBhZ2VDbGllbnRJbXBsOjpzZXRNb3VzZUV2ZW50UG9saWN5KFdlYkNv
cmU6Ok1vdXNlRXZlbnRQb2xpY3kgcG9saWN5KQogI2VuZGlmCiB9CiAKK3ZvaWQgUGFnZUNsaWVu
dEltcGw6OmhhbmRsZUFzeW5jaHJvbm91c1ByZXZlbnRhYmxlU2Nyb2xsRXZlbnQoVUlTY3JvbGxW
aWV3ICpzY3JvbGxWaWV3LCBVSVNjcm9sbEV2ZW50ICpzY3JvbGxFdmVudCwgdm9pZCAoXmNvbXBs
ZXRpb24pKEJPT0wgaGFuZGxlZCkpCit7CisgICAgW21fd2ViVmlldyBfc2Nyb2xsVmlldzpzY3Jv
bGxWaWV3IGFzeW5jaHJvbm91c2x5SGFuZGxlU2Nyb2xsRXZlbnQ6c2Nyb2xsRXZlbnQgY29tcGxl
dGlvbjpjb21wbGV0aW9uXTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKICNlbmRpZiAv
LyBQTEFURk9STShJT1NfRkFNSUxZKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFn
ZS9XZWJQYWdlLmNwcAppbmRleCBjNDQ2MzhmZWQ3YmQzOGQ2MWU5NjZjY2ZlMDM0MTI2MzQ2NDI2
Y2ZiLi5mN2FkOTJkN2Q5MTk2ZjkwM2FhNTcxNjhiZjk1MzJiZGFlMWE0ZTE4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcApAQCAtMjg2NCw3ICsyODY0
LDcgQEAgc3RhdGljIGJvb2wgaGFuZGxlV2hlZWxFdmVudChjb25zdCBXZWJXaGVlbEV2ZW50JiB3
aGVlbEV2ZW50LCBQYWdlKiBwYWdlLCBPcHRpb24KICAgICByZXR1cm4gcGFnZS0+dXNlcklucHV0
QnJpZGdlKCkuaGFuZGxlV2hlZWxFdmVudChwbGF0Zm9ybVdoZWVsRXZlbnQsIHByb2Nlc3NpbmdT
dGVwcyk7CiB9CiAKLXZvaWQgV2ViUGFnZTo6d2hlZWxFdmVudChjb25zdCBXZWJXaGVlbEV2ZW50
JiB3aGVlbEV2ZW50LCBPcHRpb25TZXQ8V2hlZWxFdmVudFByb2Nlc3NpbmdTdGVwcz4gcHJvY2Vz
c2luZ1N0ZXBzKQorYm9vbCBXZWJQYWdlOjp3aGVlbEV2ZW50KGNvbnN0IFdlYldoZWVsRXZlbnQm
IHdoZWVsRXZlbnQsIE9wdGlvblNldDxXaGVlbEV2ZW50UHJvY2Vzc2luZ1N0ZXBzPiBwcm9jZXNz
aW5nU3RlcHMpCiB7CiAgICAgbV91c2VyQWN0aXZpdHkuaW1wdWxzZSgpOwogCkBAIC0yODc0LDYg
KzI4NzQsMjIgQEAgdm9pZCBXZWJQYWdlOjp3aGVlbEV2ZW50KGNvbnN0IFdlYldoZWVsRXZlbnQm
IHdoZWVsRXZlbnQsIE9wdGlvblNldDxXaGVlbEV2ZW50UHIKIAogICAgIGlmIChwcm9jZXNzaW5n
U3RlcHMuY29udGFpbnMoV2hlZWxFdmVudFByb2Nlc3NpbmdTdGVwczo6TWFpblRocmVhZEZvclNj
cm9sbGluZykpCiAgICAgICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGlkUmVjZWl2
ZUV2ZW50KHN0YXRpY19jYXN0PHVpbnQzMl90Pih3aGVlbEV2ZW50LnR5cGUoKSksIGhhbmRsZWQp
KTsKKworICAgIHJldHVybiBoYW5kbGVkOworfQorCit2b2lkIFdlYlBhZ2U6OmRpc3BhdGNoV2hl
ZWxFdmVudFdpdGhvdXRTY3JvbGxpbmcoY29uc3QgV2ViV2hlZWxFdmVudCYgd2hlZWxFdmVudCwg
Ym9vbCBpc0ZpcnN0RXZlbnRJbkdlc3R1cmUsIGJvb2wgaGFzTm9uUGFzc2l2ZVdoZWVsSGFuZGxl
cnMsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7
CisgICAgaWYgKGlzRmlyc3RFdmVudEluR2VzdHVyZSkKKyAgICAgICAgbV9jdXJyZW50U2Nyb2xs
R2VzdHVyZVdhc0luaXRpYWxseVByZXZlbnRlZCA9IFdURjo6bnVsbG9wdDsKKworICAgIGJvb2wg
aXNQcmV2ZW50YWJsZSA9IGhhc05vblBhc3NpdmVXaGVlbEhhbmRsZXJzICYmIG1fY3VycmVudFNj
cm9sbEdlc3R1cmVXYXNJbml0aWFsbHlQcmV2ZW50ZWQudmFsdWVPcihpc0ZpcnN0RXZlbnRJbkdl
c3R1cmUpOworICAgIGJvb2wgaGFuZGxlZCA9IHRoaXMtPndoZWVsRXZlbnQod2hlZWxFdmVudCwg
eyBpc1ByZXZlbnRhYmxlID8gV2hlZWxFdmVudFByb2Nlc3NpbmdTdGVwczo6TWFpblRocmVhZEZv
ckJsb2NraW5nRE9NRXZlbnREaXNwYXRjaCA6IFdoZWVsRXZlbnRQcm9jZXNzaW5nU3RlcHM6Ok1h
aW5UaHJlYWRGb3JOb25CbG9ja2luZ0RPTUV2ZW50RGlzcGF0Y2ggfSk7CisKKyAgICBpZiAoIW1f
Y3VycmVudFNjcm9sbEdlc3R1cmVXYXNJbml0aWFsbHlQcmV2ZW50ZWQpCisgICAgICAgIG1fY3Vy
cmVudFNjcm9sbEdlc3R1cmVXYXNJbml0aWFsbHlQcmV2ZW50ZWQgPSBpc1ByZXZlbnRhYmxlID8g
aGFuZGxlZCA6IGZhbHNlOworCisgICAgY29tcGxldGlvbkhhbmRsZXIoaGFuZGxlZCk7CiB9CiAK
IHN0YXRpYyBib29sIGhhbmRsZUtleUV2ZW50KGNvbnN0IFdlYktleWJvYXJkRXZlbnQmIGtleWJv
YXJkRXZlbnQsIFBhZ2UqIHBhZ2UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUGFnZS9XZWJQYWdlLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJQYWdlLmgKaW5kZXggZTA0ZTNhOGIyZDE3OGNjODQ5NWQ0NWJhZjgxZjM3ZGFlZmJiN2I3MC4u
MjA4Zjc1ZDRlMTE0YmJmMzJkYWUzYjAxZmE5MThjNTFjNGZmNDI5OCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaApAQCAtMTAxMyw3ICsxMDEzLDcgQEAgcHVi
bGljOgogICAgIHZvaWQgY29udGV4dE1lbnVTaG93aW5nKCkgeyBtX2lzU2hvd2luZ0NvbnRleHRN
ZW51ID0gdHJ1ZTsgfQogI2VuZGlmCiAKLSAgICB2b2lkIHdoZWVsRXZlbnQoY29uc3QgV2ViV2hl
ZWxFdmVudCYsIE9wdGlvblNldDxXZWJDb3JlOjpXaGVlbEV2ZW50UHJvY2Vzc2luZ1N0ZXBzPik7
CisgICAgYm9vbCB3aGVlbEV2ZW50KGNvbnN0IFdlYldoZWVsRXZlbnQmLCBPcHRpb25TZXQ8V2Vi
Q29yZTo6V2hlZWxFdmVudFByb2Nlc3NpbmdTdGVwcz4pOwogCiAgICAgdm9pZCB3aGVlbEV2ZW50
SGFuZGxlcnNDaGFuZ2VkKGJvb2wpOwogICAgIHZvaWQgcmVjb21wdXRlU2hvcnRDaXJjdWl0SG9y
aXpvbnRhbFdoZWVsRXZlbnRzU3RhdGUoKTsKQEAgLTEzNzEsNiArMTM3MSw4IEBAIHB1YmxpYzoK
ICAgICBib29sIGNyZWF0ZUFwcEhpZ2hsaWdodEluU2VsZWN0ZWRSYW5nZShDcmVhdGVOZXdHcm91
cEZvckhpZ2hsaWdodCk7CiAjZW5kaWYKIAorICAgIHZvaWQgZGlzcGF0Y2hXaGVlbEV2ZW50V2l0
aG91dFNjcm9sbGluZyhjb25zdCBXZWJXaGVlbEV2ZW50JiwgYm9vbCBpc0ZpcnN0RXZlbnRJbkdl
c3R1cmUsIGJvb2wgaGFzTm9uUGFzc2l2ZVdoZWVsSGFuZGxlcnMsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoYm9vbCk+JiYpOworCiBwcml2YXRlOgogICAgIFdlYlBhZ2UoV2ViQ29yZTo6UGFnZUlk
ZW50aWZpZXIsIFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMmJik7CiAKQEAgLTIxODEsNiArMjE4
Myw4IEBAIHByaXZhdGU6CiAjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKQogICAgIHN0ZDo6dW5pcXVl
X3B0cjxSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk+IG1fcmVtb3RlUmVuZGVyaW5nQmFja2Vu
ZFByb3h5OwogI2VuZGlmCisKKyAgICBPcHRpb25hbDxib29sPiBtX2N1cnJlbnRTY3JvbGxHZXN0
dXJlV2FzSW5pdGlhbGx5UHJldmVudGVkOwogfTsKIAogI2lmICFQTEFURk9STShJT1NfRkFNSUxZ
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5t
ZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVz
c2FnZXMuaW4KaW5kZXggODY0YzZlODE5YWM2OWMyMDFhZjQ2ZmQ1MGM2YWUyZDY1Zjg0Y2NmOS4u
ZjA4Y2FhMGVkMWNhODFiMmI3MzNmZTE3YjU4ZmIxYjhiYTUzM2Q1YiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgorKysgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCkBAIC02
MjEsNCArNjIxLDUgQEAgR2VuZXJhdGVTeW50aGV0aWNFZGl0aW5nQ29tbWFuZChlbnVtOnVpbnQ4
X3QgV2ViS2l0OjpTeW50aGV0aWNFZGl0aW5nQ29tbWFuZFR5cGUKICAgICBDcmVhdGVBcHBIaWdo
bGlnaHRJblNlbGVjdGVkUmFuZ2UoZW51bTpib29sIFdlYktpdDo6Q3JlYXRlTmV3R3JvdXBGb3JI
aWdobGlnaHQgY3JlYXRlTmV3R3JvdXApCiAjZW5kaWYKIAorICAgIERpc3BhdGNoV2hlZWxFdmVu
dFdpdGhvdXRTY3JvbGxpbmcoV2ViS2l0OjpXZWJXaGVlbEV2ZW50IGV2ZW50LCBib29sIGlzRmly
c3RFdmVudEluR2VzdHVyZSwgYm9vbCBoYXNOb25QYXNzaXZlV2hlZWxIYW5kbGVycykgLT4gKGJv
b2wgaGFuZGxlZCkgQXN5bmMKIH0KZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xz
L0NoYW5nZUxvZwppbmRleCA0MDQ1NTdlYzRkN2QyZThmNWUwMGM3NjAzZTkzODdjY2NkYWE2ZjNh
Li5hYWU4NDdkZTJiN2NjYzhjYjc5ODI1NDVjNDM0NDk0OTdjZjY3YmQwIDEwMDY0NAotLS0gYS9U
b29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjIgQEAKKzIw
MjAtMTItMTAgIFRpbSBIb3J0b24gIDx0aW1vdGh5X2hvcnRvbkBhcHBsZS5jb20+CisKKyAgICAg
ICAgVHJhY2twYWQgYW5kIE1vdXNlIHNjcm9sbCBldmVudHMgb24gaVBhZCBvbmx5IGZpcmUgInBv
aW50ZXJtb3ZlIiAtLSBub3QgIndoZWVsIgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MjEwMDcxCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS81NDYxNjg1
Mz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFRl
c3RXZWJLaXRBUEkvVGVzdHMvaW9zL1dLU2Nyb2xsVmlld1Rlc3RzLm1tOgorICAgICAgICAoLVtX
S1VJU2Nyb2xsRXZlbnQgaW5pdFdpdGhQaGFzZTpsb2NhdGlvbjpkZWx0YTpdKToKKyAgICAgICAg
KC1bV0tVSVNjcm9sbEV2ZW50IHBoYXNlXSk6CisgICAgICAgICgtW1dLVUlTY3JvbGxFdmVudCBs
b2NhdGlvbkluVmlldzpdKToKKyAgICAgICAgKC1bV0tVSVNjcm9sbEV2ZW50IF9hZGp1c3RlZEFj
Y2VsZXJhdGVkRGVsdGFJblZpZXc6XSk6CisgICAgICAgIChURVNUKToKKyAgICAgICAgKiBUZXN0
V2ViS2l0QVBJL2lvcy9VSUtpdFNQSS5oOgorICAgICAgICBBZGQgYSB2ZXJ5IHNpbXBsZSB0ZXN0
IHRoYXQgZGlyZWN0bHkgY2FsbHMgdGhlIG5ldyBVSVNjcm9sbFZpZXdEZWxlZ2F0ZSBTUEkKKyAg
ICAgICAgYW5kIHZlcmlmaWVzIHRoYXQgb25seSB0aGUgZmlyc3QgZXZlbnQgaXMgcHJldmVudGFi
bGUgKHVubGVzcyB0aGUgZmlyc3QgZXZlbnQKKyAgICAgICAgaXMgcHJldmVudGVkLCBpbiB3aGlj
aCBjYXNlIGFsbCBzdWJzZXF1ZW50IGV2ZW50cyBhcmUgcHJldmVudGFibGUpLgorCiAyMDIwLTEy
LTAzICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CiAKICAgICAg
ICAgSW50cm9kdWNlIG5ldyBkb3dubG9hZCBTUEkKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvaW9zL1dLU2Nyb2xsVmlld1Rlc3RzLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9pb3MvV0tTY3JvbGxWaWV3VGVzdHMubW0KaW5kZXggMGUyYTFjOWVjNTE5YzdkZGRh
NTZhMTlhYjRhMDE1NzhkNTBlNWVkNi4uNTg4ZThlYzE5YjJmYWM5YjUzOWNkNmYwOGE1OTkzNWRi
N2NkYmFhOSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9pb3MvV0tTY3Jv
bGxWaWV3VGVzdHMubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9pb3MvV0tTY3Jv
bGxWaWV3VGVzdHMubW0KQEAgLTI5LDggKzI5LDUxIEBACiAKICNpbXBvcnQgIlBsYXRmb3JtVXRp
bGl0aWVzLmgiCiAjaW1wb3J0ICJUZXN0V0tXZWJWaWV3LmgiCisjaW1wb3J0ICJVSUtpdFNQSS5o
IgogI2ltcG9ydCA8V2ViS2l0L1dLV2ViVmlld1ByaXZhdGUuaD4KIAorQGludGVyZmFjZSBXS1VJ
U2Nyb2xsRXZlbnQgOiBVSVNjcm9sbEV2ZW50CisKKy0gKGluc3RhbmNldHlwZSlpbml0V2l0aFBo
YXNlOihVSVNjcm9sbFBoYXNlKXBoYXNlIGxvY2F0aW9uOihDR1BvaW50KWxvY2F0aW9uIGRlbHRh
OihDR1ZlY3RvcilkZWx0YTsKKworQGVuZAorCitAaW1wbGVtZW50YXRpb24gV0tVSVNjcm9sbEV2
ZW50IHsKKyAgICBVSVNjcm9sbFBoYXNlIF9waGFzZTsKKyAgICBDR1BvaW50IF9sb2NhdGlvbjsK
KyAgICBDR1ZlY3RvciBfZGVsdGE7Cit9CisKKy0gKGluc3RhbmNldHlwZSlpbml0V2l0aFBoYXNl
OihVSVNjcm9sbFBoYXNlKXBoYXNlIGxvY2F0aW9uOihDR1BvaW50KWxvY2F0aW9uIGRlbHRhOihD
R1ZlY3RvcilkZWx0YQoreworICAgIHNlbGYgPSBbc3VwZXIgaW5pdF07CisgICAgaWYgKCFzZWxm
KQorICAgICAgICByZXR1cm4gbmlsOworCisgICAgX3BoYXNlID0gcGhhc2U7CisgICAgX2xvY2F0
aW9uID0gbG9jYXRpb247CisgICAgX2RlbHRhID0gZGVsdGE7CisKKyAgICByZXR1cm4gc2VsZjsK
K30KKworLSAoVUlTY3JvbGxQaGFzZSlwaGFzZQoreworICAgIHJldHVybiBfcGhhc2U7Cit9CisK
Ky0gKENHUG9pbnQpbG9jYXRpb25JblZpZXc6KFVJVmlldyAqKXZpZXcKK3sKKyAgICByZXR1cm4g
X2xvY2F0aW9uOworfQorCistIChDR1ZlY3RvcilfYWRqdXN0ZWRBY2NlbGVyYXRlZERlbHRhSW5W
aWV3OihVSVZpZXcgKil2aWV3Cit7CisgICAgcmV0dXJuIF9kZWx0YTsKK30KKworQGVuZAorCiBz
dGF0aWMgdm9pZCB0cmF2ZXJzZUxheWVyVHJlZShDQUxheWVyICpsYXllciwgdm9pZCheYmxvY2sp
KENBTGF5ZXIgKikpCiB7CiAgICAgZm9yIChDQUxheWVyICpjaGlsZCBpbiBsYXllci5zdWJsYXll
cnMpCkBAIC03MSw0ICsxMTQsODQgQEAgVEVTVChXS1Njcm9sbFZpZXdUZXN0cywgUG9zaXRpb25G
aXhlZExheWVyQWZ0ZXJTY3JvbGxpbmcpCiAgICAgRVhQRUNUX1RSVUUoZm91bmRMYXllckZvckZp
eGVkTmF2aWdhdGlvbkJhcik7CiB9CiAKK1RFU1QoV0tTY3JvbGxWaWV3VGVzdHMsIEFzeW5jaHJv
bm91c1doZWVsRXZlbnRIYW5kbGluZykKK3sKKyAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtb
VGVzdFdLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpDR1JlY3RNYWtlKDAsIDAsIDMyMCwg
NTAwKV0pOworICAgIFt3ZWJWaWV3IHN5bmNocm9ub3VzbHlMb2FkSFRNTFN0cmluZzpAIiIKKyAg
ICAgICAgIjxzdHlsZT4jc2Nyb2xsYWJsZSB7IHdpZHRoOiAyMDBweDsgaGVpZ2h0OiAyMDBweDsg
fTwvc3R5bGU+IgorICAgICAgICAiPGRpdiBpZD0nc2Nyb2xsYWJsZSc+PC9kaXY+IgorICAgICAg
ICAiPHNjcmlwdD53aW5kb3cucHJldmVudERlZmF1bHRPblNjcm9sbEV2ZW50cyA9IGZhbHNlOyIK
KyAgICAgICAgImRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdzY3JvbGxhYmxlJykuYWRkRXZlbnRM
aXN0ZW5lcignd2hlZWwnLCAiCisgICAgICAgICJmdW5jdGlvbiAoZSkgeyIKKyAgICAgICAgIiAg
IHdpbmRvdy5sYXN0V2hlZWxFdmVudCA9IGU7IgorICAgICAgICAiICAgaWYgKHdpbmRvdy5wcmV2
ZW50RGVmYXVsdE9uU2Nyb2xsRXZlbnRzKSIKKyAgICAgICAgIiAgICAgICBlLnByZXZlbnREZWZh
dWx0KCk7IgorICAgICAgICAifSk8L3NjcmlwdD4iXTsKKyAgICBbd2ViVmlldyB3YWl0Rm9yTmV4
dFByZXNlbnRhdGlvblVwZGF0ZV07CisKKyAgICBfX2Jsb2NrIGJvb2wgZG9uZTsKKyAgICBfX2Js
b2NrIGJvb2wgd2FzSGFuZGxlZDsKKworICAgIGF1dG8gc3luY2hyb25vdXNseUhhbmRsZVNjcm9s
bEV2ZW50ID0gXihVSVNjcm9sbFBoYXNlIHBoYXNlLCBDR1BvaW50IGxvY2F0aW9uLCBDR1ZlY3Rv
ciBkZWx0YSkgeworICAgICAgICBkb25lID0gZmFsc2U7CisgICAgICAgIGF1dG8gZXZlbnQgPSBh
ZG9wdE5TKFtbV0tVSVNjcm9sbEV2ZW50IGFsbG9jXSBpbml0V2l0aFBoYXNlOnBoYXNlIGxvY2F0
aW9uOmxvY2F0aW9uIGRlbHRhOmRlbHRhXSk7CisgICAgICAgIFt3ZWJWaWV3IF9zY3JvbGxWaWV3
Olt3ZWJWaWV3IHNjcm9sbFZpZXddIGFzeW5jaHJvbm91c2x5SGFuZGxlU2Nyb2xsRXZlbnQ6ZXZl
bnQuZ2V0KCkgY29tcGxldGlvbjpeKEJPT0wgaGFuZGxlZCkgeworICAgICAgICAgICAgd2FzSGFu
ZGxlZCA9IGhhbmRsZWQ7CisgICAgICAgICAgICBkb25lID0gdHJ1ZTsKKyAgICAgICAgfV07Cisg
ICAgICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmZG9uZSk7CisgICAgfTsKKworICAgIC8v
IERvbid0IHByZXZlbnREZWZhdWx0KCkgYXQgYWxsLgorICAgIHN5bmNocm9ub3VzbHlIYW5kbGVT
Y3JvbGxFdmVudChVSVNjcm9sbFBoYXNlTWF5QmVnaW4sIENHUG9pbnRNYWtlKDEwMCwgMTAwKSwg
Q0dWZWN0b3JNYWtlKDAsIDApKTsKKyAgICBFWFBFQ1RfRkFMU0Uod2FzSGFuZGxlZCk7CisgICAg
c3luY2hyb25vdXNseUhhbmRsZVNjcm9sbEV2ZW50KFVJU2Nyb2xsUGhhc2VCZWdhbiwgQ0dQb2lu
dE1ha2UoMTAwLCAxMDApLCBDR1ZlY3Rvck1ha2UoMCwgMTApKTsKKyAgICBFWFBFQ1RfRkFMU0Uo
d2FzSGFuZGxlZCk7CisgICAgRVhQRUNUX1RSVUUoW1t3ZWJWaWV3IG9iamVjdEJ5RXZhbHVhdGlu
Z0phdmFTY3JpcHQ6QCJ3aW5kb3cubGFzdFdoZWVsRXZlbnQuY2FuY2VsYWJsZSJdIGludFZhbHVl
XSk7CisgICAgRVhQRUNUX0VRKC0xMCwgW1t3ZWJWaWV3IG9iamVjdEJ5RXZhbHVhdGluZ0phdmFT
Y3JpcHQ6QCJ3aW5kb3cubGFzdFdoZWVsRXZlbnQuZGVsdGFZIl0gaW50VmFsdWVdKTsKKyAgICBz
eW5jaHJvbm91c2x5SGFuZGxlU2Nyb2xsRXZlbnQoVUlTY3JvbGxQaGFzZUNoYW5nZWQsIENHUG9p
bnRNYWtlKDEwMCwgMTAwKSwgQ0dWZWN0b3JNYWtlKDAsIDEwKSk7CisgICAgRVhQRUNUX0ZBTFNF
KHdhc0hhbmRsZWQpOworICAgIHN5bmNocm9ub3VzbHlIYW5kbGVTY3JvbGxFdmVudChVSVNjcm9s
bFBoYXNlRW5kZWQsIENHUG9pbnRNYWtlKDEwMCwgMTAwKSwgQ0dWZWN0b3JNYWtlKDAsIDApKTsK
KyAgICBFWFBFQ1RfRkFMU0Uod2FzSGFuZGxlZCk7CisKKyAgICAvLyBwcmV2ZW50RGVmYXVsdCgp
IG9uIGFsbCBldmVudHMuCisgICAgW3dlYlZpZXcgc3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlw
dDpAIndpbmRvdy5wcmV2ZW50RGVmYXVsdE9uU2Nyb2xsRXZlbnRzID0gdHJ1ZTsiXTsKKyAgICBz
eW5jaHJvbm91c2x5SGFuZGxlU2Nyb2xsRXZlbnQoVUlTY3JvbGxQaGFzZU1heUJlZ2luLCBDR1Bv
aW50TWFrZSgxMDAsIDEwMCksIENHVmVjdG9yTWFrZSgwLCAwKSk7CisgICAgRVhQRUNUX0ZBTFNF
KHdhc0hhbmRsZWQpOworICAgIHN5bmNocm9ub3VzbHlIYW5kbGVTY3JvbGxFdmVudChVSVNjcm9s
bFBoYXNlQmVnYW4sIENHUG9pbnRNYWtlKDEwMCwgMTAwKSwgQ0dWZWN0b3JNYWtlKDAsIDEwKSk7
CisgICAgRVhQRUNUX1RSVUUod2FzSGFuZGxlZCk7CisgICAgc3luY2hyb25vdXNseUhhbmRsZVNj
cm9sbEV2ZW50KFVJU2Nyb2xsUGhhc2VDaGFuZ2VkLCBDR1BvaW50TWFrZSgxMDAsIDEwMCksIENH
VmVjdG9yTWFrZSgwLCAxMCkpOworICAgIEVYUEVDVF9UUlVFKHdhc0hhbmRsZWQpOworICAgIHN5
bmNocm9ub3VzbHlIYW5kbGVTY3JvbGxFdmVudChVSVNjcm9sbFBoYXNlRW5kZWQsIENHUG9pbnRN
YWtlKDEwMCwgMTAwKSwgQ0dWZWN0b3JNYWtlKDAsIDApKTsKKyAgICBFWFBFQ1RfRkFMU0Uod2Fz
SGFuZGxlZCk7CisKKyAgICAvLyBwcmV2ZW50RGVmYXVsdCgpIG9uIGFsbCBidXQgdGhlIGJlZ2lu
IGV2ZW50OyBpdCB3aWxsIGJlIGlnbm9yZWQuCisgICAgW3dlYlZpZXcgc3RyaW5nQnlFdmFsdWF0
aW5nSmF2YVNjcmlwdDpAIndpbmRvdy5wcmV2ZW50RGVmYXVsdE9uU2Nyb2xsRXZlbnRzID0gZmFs
c2U7Il07CisgICAgc3luY2hyb25vdXNseUhhbmRsZVNjcm9sbEV2ZW50KFVJU2Nyb2xsUGhhc2VN
YXlCZWdpbiwgQ0dQb2ludE1ha2UoMTAwLCAxMDApLCBDR1ZlY3Rvck1ha2UoMCwgMCkpOworICAg
IEVYUEVDVF9GQUxTRSh3YXNIYW5kbGVkKTsKKyAgICBzeW5jaHJvbm91c2x5SGFuZGxlU2Nyb2xs
RXZlbnQoVUlTY3JvbGxQaGFzZUJlZ2FuLCBDR1BvaW50TWFrZSgxMDAsIDEwMCksIENHVmVjdG9y
TWFrZSgwLCAxMCkpOworICAgIEVYUEVDVF9UUlVFKFtbd2ViVmlldyBvYmplY3RCeUV2YWx1YXRp
bmdKYXZhU2NyaXB0OkAid2luZG93Lmxhc3RXaGVlbEV2ZW50LmNhbmNlbGFibGUiXSBpbnRWYWx1
ZV0pOworICAgIEVYUEVDVF9GQUxTRSh3YXNIYW5kbGVkKTsKKyAgICBbd2ViVmlldyBzdHJpbmdC
eUV2YWx1YXRpbmdKYXZhU2NyaXB0OkAid2luZG93LnByZXZlbnREZWZhdWx0T25TY3JvbGxFdmVu
dHMgPSB0cnVlOyJdOworICAgIHN5bmNocm9ub3VzbHlIYW5kbGVTY3JvbGxFdmVudChVSVNjcm9s
bFBoYXNlQ2hhbmdlZCwgQ0dQb2ludE1ha2UoMTAwLCAxMDApLCBDR1ZlY3Rvck1ha2UoMCwgMTAp
KTsKKyAgICBFWFBFQ1RfRkFMU0Uod2FzSGFuZGxlZCk7CisgICAgRVhQRUNUX0ZBTFNFKFtbd2Vi
VmlldyBvYmplY3RCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OkAid2luZG93Lmxhc3RXaGVlbEV2ZW50
LmNhbmNlbGFibGUiXSBpbnRWYWx1ZV0pOworICAgIHN5bmNocm9ub3VzbHlIYW5kbGVTY3JvbGxF
dmVudChVSVNjcm9sbFBoYXNlRW5kZWQsIENHUG9pbnRNYWtlKDEwMCwgMTAwKSwgQ0dWZWN0b3JN
YWtlKDAsIDApKTsKKyAgICBFWFBFQ1RfRkFMU0Uod2FzSGFuZGxlZCk7CisKKyAgICAvLyBwcmV2
ZW50RGVmYXVsdCgpIG9uIHRoZSBiZWdpbiBldmVudCwgYW5kIHNvbWUgc3Vic2VxdWVudCBldmVu
dHMuCisgICAgW3dlYlZpZXcgc3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpAIndpbmRvdy5w
cmV2ZW50RGVmYXVsdE9uU2Nyb2xsRXZlbnRzID0gdHJ1ZTsiXTsKKyAgICBzeW5jaHJvbm91c2x5
SGFuZGxlU2Nyb2xsRXZlbnQoVUlTY3JvbGxQaGFzZU1heUJlZ2luLCBDR1BvaW50TWFrZSgxMDAs
IDEwMCksIENHVmVjdG9yTWFrZSgwLCAwKSk7CisgICAgRVhQRUNUX0ZBTFNFKHdhc0hhbmRsZWQp
OworICAgIHN5bmNocm9ub3VzbHlIYW5kbGVTY3JvbGxFdmVudChVSVNjcm9sbFBoYXNlQmVnYW4s
IENHUG9pbnRNYWtlKDEwMCwgMTAwKSwgQ0dWZWN0b3JNYWtlKDAsIDEwKSk7CisgICAgRVhQRUNU
X1RSVUUod2FzSGFuZGxlZCk7CisgICAgc3luY2hyb25vdXNseUhhbmRsZVNjcm9sbEV2ZW50KFVJ
U2Nyb2xsUGhhc2VDaGFuZ2VkLCBDR1BvaW50TWFrZSgxMDAsIDEwMCksIENHVmVjdG9yTWFrZSgw
LCAxMCkpOworICAgIEVYUEVDVF9UUlVFKHdhc0hhbmRsZWQpOworICAgIFt3ZWJWaWV3IHN0cmlu
Z0J5RXZhbHVhdGluZ0phdmFTY3JpcHQ6QCJ3aW5kb3cucHJldmVudERlZmF1bHRPblNjcm9sbEV2
ZW50cyA9IGZhbHNlOyJdOworICAgIHN5bmNocm9ub3VzbHlIYW5kbGVTY3JvbGxFdmVudChVSVNj
cm9sbFBoYXNlQ2hhbmdlZCwgQ0dQb2ludE1ha2UoMTAwLCAxMDApLCBDR1ZlY3Rvck1ha2UoMCwg
MTApKTsKKyAgICBFWFBFQ1RfRkFMU0Uod2FzSGFuZGxlZCk7CisgICAgc3luY2hyb25vdXNseUhh
bmRsZVNjcm9sbEV2ZW50KFVJU2Nyb2xsUGhhc2VFbmRlZCwgQ0dQb2ludE1ha2UoMTAwLCAxMDAp
LCBDR1ZlY3Rvck1ha2UoMCwgMCkpOworICAgIEVYUEVDVF9GQUxTRSh3YXNIYW5kbGVkKTsKK30K
KwogI2VuZGlmIC8vIFBMQVRGT1JNKElPU19GQU1JTFkpCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0
V2ViS2l0QVBJL2lvcy9VSUtpdFNQSS5oIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9pb3MvVUlLaXRT
UEkuaAppbmRleCBkZDVhZWNlYzkwNTQyOWM5YTAyNWM1MmMxMGY3NDQ1NzkyZjg0OTBmLi5iNTNl
YTU2MGY4NGE3ZGMyOGU3NDdlZWZjZWU1NWE1MzhlNmVkZDE5IDEwMDY0NAotLS0gYS9Ub29scy9U
ZXN0V2ViS2l0QVBJL2lvcy9VSUtpdFNQSS5oCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvaW9z
L1VJS2l0U1BJLmgKQEAgLTM3LDYgKzM3LDggQEAKICNpbXBvcnQgPFVJS2l0L1VJS2V5Ym9hcmRf
UHJpdmF0ZS5oPgogI2ltcG9ydCA8VUlLaXQvVUlSZXNwb25kZXJfUHJpdmF0ZS5oPgogI2ltcG9y
dCA8VUlLaXQvVUlTY3JlZW5fUHJpdmF0ZS5oPgorI2ltcG9ydCA8VUlLaXQvVUlTY3JvbGxFdmVu
dF9Qcml2YXRlLmg+CisjaW1wb3J0IDxVSUtpdC9VSVNjcm9sbFZpZXdfRm9yV2ViS2l0T25seS5o
PgogI2ltcG9ydCA8VUlLaXQvVUlTY3JvbGxWaWV3X1ByaXZhdGUuaD4KICNpbXBvcnQgPFVJS2l0
L1VJVGV4dEF1dG9maWxsU3VnZ2VzdGlvbi5oPgogI2ltcG9ydCA8VUlLaXQvVUlUZXh0SW5wdXRN
dWx0aURvY3VtZW50Lmg+CkBAIC0yNDAsNiArMjQyLDEzIEBAIElHTk9SRV9XQVJOSU5HU19FTkQK
IEBwcm9wZXJ0eSAobm9uYXRvbWljLCBnZXR0ZXI9X2lzQXV0b21hdGljQ29udGVudE9mZnNldEFk
anVzdG1lbnRFbmFibGVkLCBzZXR0ZXI9X3NldEF1dG9tYXRpY0NvbnRlbnRPZmZzZXRBZGp1c3Rt
ZW50RW5hYmxlZDopIEJPT0wgaXNBdXRvbWF0aWNDb250ZW50T2Zmc2V0QWRqdXN0bWVudEVuYWJs
ZWQ7CiBAZW5kCiAKK0BpbnRlcmZhY2UgVUlTY3JvbGxFdmVudCA6IFVJRXZlbnQKK0BlbmQKKwor
QGludGVyZmFjZSBOU09iamVjdCAoVUlTY3JvbGxWaWV3RGVsZWdhdGVfRm9yV2ViS2l0T25seSkK
Ky0gKHZvaWQpX3Njcm9sbFZpZXc6KFVJU2Nyb2xsVmlldyAqKXNjcm9sbFZpZXcgYXN5bmNocm9u
b3VzbHlIYW5kbGVTY3JvbGxFdmVudDooVUlTY3JvbGxFdmVudCAqKXNjcm9sbEV2ZW50IGNvbXBs
ZXRpb246KHZvaWQgKF4pKEJPT0wgaGFuZGxlZCkpY29tcGxldGlvbjsKK0BlbmQKKwogI2VuZGlm
IC8vIFVTRShBUFBMRV9JTlRFUk5BTF9TREspCiAKICNkZWZpbmUgVUlXS0RvY3VtZW50UmVxdWVz
dE1hcmtlZFRleHRSZWN0cyAoMSA8PCA1KQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>415853</attachid>
            <date>2020-12-10 04:18:15 -0800</date>
            <delta_ts>2020-12-10 04:53:23 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-210071-20201210041814.patch</filename>
            <type>text/plain</type>
            <size>38521</size>
            <attacher name="Tim Horton">thorton</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcwNDM1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDMzZTNhZjVkNGY3MmUxNDlhYTYyNTBi
Y2M4YmNlODgxODhlNTM5OTEuLjkxMTBhNDU3MTdkOWEwNzQ5NmI0YTRmNGE5ZmYyMmU4MTI3YmQw
ZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMjAtMTItMTAgIFRpbSBIb3J0b24gIDx0aW1vdGh5
X2hvcnRvbkBhcHBsZS5jb20+CisKKyAgICAgICAgVHJhY2twYWQgYW5kIE1vdXNlIHNjcm9sbCBl
dmVudHMgb24gaVBhZCBvbmx5IGZpcmUgInBvaW50ZXJtb3ZlIiAtLSBub3QgIndoZWVsIgorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjEwMDcxCisgICAg
ICAgIDxyZGFyOi8vcHJvYmxlbS81NDYxNjg1Mz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICAqIHd0Zi9QbGF0Zm9ybUVuYWJsZUNvY29hLmg6CisgICAg
ICAgIEVuYWJsZSB3aGVlbCBldmVudCByZWdpb25zIG9uIGlPUyArIG1hY0NhdGFseXN0LgorCiAy
MDIwLTEyLTAzICBBZGFtIFJvYmVuICA8YXJvYmVuQGFwcGxlLmNvbT4KIAogICAgICAgICBBZG9w
dCBGQUxMQkFDS19QTEFURk9STQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9n
IGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDdhZTI4OTMwYjc0ZmJmZDczMDFkNjhm
OWIxYjBiY2Y3OGE4NmM5ZjcuLjI2MGFkY2Y1Y2Y1NGQ1Mzg1ZWU1ODQxNTE5YjExM2QzNGM5ZWVl
YWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMSBAQAorMjAyMC0xMi0xMCAgVGltIEhvcnRvbiAg
PHRpbW90aHlfaG9ydG9uQGFwcGxlLmNvbT4KKworICAgICAgICBUcmFja3BhZCBhbmQgTW91c2Ug
c2Nyb2xsIGV2ZW50cyBvbiBpUGFkIG9ubHkgZmlyZSAicG9pbnRlcm1vdmUiIC0tIG5vdCAid2hl
ZWwiCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTAw
NzEKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzU0NjE2ODUzPgorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogcGFnZS9FdmVudEhhbmRsZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjpoYW5kbGVXaGVlbEV2ZW50SW50ZXJuYWwp
OgorICAgICAgICBGaXggYSBtaW5vciBsb2dpYyBlcnJvciB3aGVuIFdIRUVMX0VWRU5UX0xBVENI
SU5HIGlzIG9mZjsgYWxsb3dTY3JvbGxpbmcKKyAgICAgICAgd291bGQgYWx3YXlzIGJlIHRydWUs
IGV2ZW4gaWYgdGhlIHNldCBvZiBwcm9jZXNzaW5nIHN0ZXBzIGRvZXMgbm90IGluY2x1ZGUgYW55
IHNjcm9sbGluZyBzdGVwcy4KKworICAgICAgICAqIHJlbmRlcmluZy9FdmVudFJlZ2lvbi5oOgor
ICAgICAgICAoV2ViQ29yZTo6RXZlbnRSZWdpb246OmVuY29kZSBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpFdmVudFJlZ2lvbjo6ZGVjb2RlKToKKyAgICAgICAgRW5jb2RlL2RlY29kZSB0aGUg
d2hlZWwgYW5kIHBhc3NpdmUgd2hlZWwgZXZlbnQgcmVnaW9ucy4KKwogMjAyMC0xMi0wNCAgUGVu
ZyBMaXUgIDxwZW5nLmxpdTZAYXBwbGUuY29tPgogCiAgICAgICAgIFtNU0VdIE1vdmUgdHJhY2sg
YnVmZmVyIG1hbmFnZW1lbnQgZnJvbSBTb3VyY2VCdWZmZXIgdG8gU291cmNlQnVmZmVyUHJpdmF0
ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZwppbmRleCA2M2YzNDI5MDgyM2IxYzQ4Yzc3MWEzYzRmMzg1MmNhMjIzNTNlNDRkLi44
NjBkYmMzYTk2MDBiZjM0MTlkZmUzOTJmOTAzODVmYTcyNjgwYWRmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDYxIEBACisyMDIwLTEyLTEwICBUaW0gSG9ydG9uICA8dGltb3RoeV9ob3J0b25AYXBwbGUu
Y29tPgorCisgICAgICAgIFRyYWNrcGFkIGFuZCBNb3VzZSBzY3JvbGwgZXZlbnRzIG9uIGlQYWQg
b25seSBmaXJlICJwb2ludGVybW92ZSIgLS0gbm90ICJ3aGVlbCIKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxMDA3MQorICAgICAgICA8cmRhcjovL3By
b2JsZW0vNTQ2MTY4NTM+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgKiBQbGF0Zm9ybS9zcGkvaW9zL1VJS2l0U1BJLmg6CisgICAgICAgIEFkZCBzb21l
IFNQSS4KKworICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3SW50ZXJuYWwu
aDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2lvcy9XS1dlYlZpZXdJT1MuaDoKKyAgICAgICAg
KiBVSVByb2Nlc3MvQVBJL2lvcy9XS1dlYlZpZXdJT1MubW06CisgICAgICAgICgtW1dLV2ViVmll
dyBfc2V0dXBTY3JvbGxBbmRDb250ZW50Vmlld3NdKToKKyAgICAgICAgRW5hYmxlIGFzeW5jIFVJ
U2Nyb2xsRXZlbnQgaGFuZGxpbmcgZm9yIFdLU2Nyb2xsVmlldy4KKworICAgICAgICAoLVtXS1dl
YlZpZXcgX3Njcm9sbFZpZXc6YXN5bmNocm9ub3VzbHlIYW5kbGVTY3JvbGxFdmVudDpjb21wbGV0
aW9uOl0pOgorICAgICAgICBBZG9wdCBuZXcgVUlLaXQgU1BJIHRvIGFzeW5jaHJvbm91c2x5IGRl
ZmVyIFVJU2Nyb2xsRXZlbnRzLgorICAgICAgICBXZSBwYXNzIHRoZW0gdG8gdGhlIFdlYiBDb250
ZW50IHByb2Nlc3MsIHdoZXJlIHRoZXkgYXJlIHByb2Nlc3NlZCAKKyAgICAgICAgKm9ubHkqIGZv
ciBldmVudCBoYW5kbGluZywgbm90IGZvciBzY3JvbGxpbmcuCisKKyAgICAgICAgSWYgdGhlIGV2
ZW50IGlzIG5vdCBwcmV2ZW50YWJsZSwgd2Ugd2lsbCBzeW5jaHJvbm91c2x5IHJlcGx5IHRoYXQg
aXQgd2FzCisgICAgICAgIG5vdCBoYW5kbGVkOyBpZiBpdCBpcyBwcmV2ZW50YWJsZSwgb3Igd2Ug
ZG9uJ3QgeWV0IGtub3cgaWYgaXQgd2lsbCBiZSwKKyAgICAgICAgd2UnbGwgd2FpdCB0byBoZWFy
IGJhY2sgZnJvbSB0aGUgV2ViIENvbnRlbnQgcHJvY2VzcyBiZWZvcmUgcmVwbHlpbmcuCisKKyAg
ICAgICAgVUlLaXQgd2lsbCB3YWl0IHVudGlsIG91ciByZXBseSB0byBhcHBseSB0aGUgVUlTY3Jv
bGxFdmVudCB0byB0aGUgVUlTY3JvbGxWaWV3LgorCisgICAgICAgICogVUlQcm9jZXNzL1BhZ2VD
bGllbnQuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL2lvcy9SZW1vdGVM
YXllclRyZWVWaWV3cy5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvaW9z
L1JlbW90ZUxheWVyVHJlZVZpZXdzLm1tOgorICAgICAgICAoV2ViS2l0OjpldmVudExpc3RlbmVy
VHlwZXNBdFBvaW50KToKKyAgICAgICAgRXhwb3NlIGEgbWVjaGFuaXNtIGZvciByZXRyaWV2aW5n
IHRoZSBldmVudCBsaXN0ZW5lciB0eXBlcyBhdCBhIGdpdmVuIHBvaW50LAorICAgICAgICBzaW1p
bGFyIHRvIHRoZSBleGlzdGluZyBtZWNoYW5pc20gZm9yIHRvdWNoIGV2ZW50IGxpc3RlbmVycy4K
KworICAgICAgICAoLVtXS0NoaWxkU2Nyb2xsVmlldyBpbml0V2l0aEZyYW1lOl0pOgorICAgICAg
ICBFbmFibGUgYXN5bmMgVUlTY3JvbGxFdmVudCBoYW5kbGluZyBmb3IgV0tDaGlsZFNjcm9sbFZp
ZXcuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL2lvcy9TY3JvbGxpbmdU
cmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlSU9TLmg6CisgICAgICAgICogVUlQcm9jZXNzL1JlbW90
ZUxheWVyVHJlZS9pb3MvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZUlPUy5tbToK
KyAgICAgICAgKC1bV0tTY3JvbGxpbmdOb2RlU2Nyb2xsVmlld0RlbGVnYXRlIF9zY3JvbGxWaWV3
OmFzeW5jaHJvbm91c2x5SGFuZGxlU2Nyb2xsRXZlbnQ6Y29tcGxldGlvbjpdKToKKyAgICAgICAg
KFdlYktpdDo6U2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZUlPUzo6aGFuZGxlQXN5
bmNocm9ub3VzUHJldmVudGFibGVTY3JvbGxFdmVudCk6CisgICAgICAgIFBsdW1iIGFzeW5jIHNj
cm9sbCBldmVudHMgZm9yIHN1Yi1zY3JvbGxhYmxlIHJlZ2lvbnMgdGhyb3VnaCBQYWdlQ2xpZW50
CisgICAgICAgIHRvIFdLV2ViVmlldzsgd2UgZG9uJ3QgYWN0dWFsbHkgY2FyZSB3aGljaCBVSVNj
cm9sbFZpZXcgdGhleSdyZSBoYW5kZWQgdG8sCisgICAgICAgIHNpbmNlIHdlIHJlLWhpdC10ZXN0
IG91cnNlbHZlcy4KKworICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmRpc3BhdGNoV2hlZWxFdmVudFdpdGhvdXRTY3Jv
bGxpbmcpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaDoKKyAgICAgICAgKiBV
SVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLmg6CisgICAgICAgICogVUlQcm9jZXNzL2lv
cy9QYWdlQ2xpZW50SW1wbElPUy5tbToKKyAgICAgICAgKFdlYktpdDo6UGFnZUNsaWVudEltcGw6
OmhhbmRsZUFzeW5jaHJvbm91c1ByZXZlbnRhYmxlU2Nyb2xsRXZlbnQpOgorICAgICAgICAqIFdl
YlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6
d2hlZWxFdmVudCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmRpc3BhdGNoV2hlZWxFdmVu
dFdpdGhvdXRTY3JvbGxpbmcpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdl
Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW46CisK
IDIwMjAtMTItMDQgIFBlbmcgTGl1ICA8cGVuZy5saXU2QGFwcGxlLmNvbT4KIAogICAgICAgICBb
TVNFXSBNb3ZlIHRyYWNrIGJ1ZmZlciBtYW5hZ2VtZW50IGZyb20gU291cmNlQnVmZmVyIHRvIFNv
dXJjZUJ1ZmZlclByaXZhdGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtRW5h
YmxlQ29jb2EuaCBiL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtRW5hYmxlQ29jb2EuaAppbmRleCA1
YWRkYTg4NmVhMGU2NzY3ZjVmNzkwOTk4YjZhYjgxZTgxN2IwNmQ0Li41NTFiYjIxYzQyZGRlYzc0
MDM5M2RkMjZiNWY1YzU2NDliMjk3NTM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9QbGF0
Zm9ybUVuYWJsZUNvY29hLmgKKysrIGIvU291cmNlL1dURi93dGYvUGxhdGZvcm1FbmFibGVDb2Nv
YS5oCkBAIC02MzMsMyArNjMzLDcgQEAKICNpZiAhZGVmaW5lZChFTkFCTEVfU0VUX1dFQkNPTlRF
TlRfUFJPQ0VTU19JTkZPUk1BVElPTl9JTl9ORVRXT1JLX1BST0NFU1MpICYmIFBMQVRGT1JNKE1B
QykgJiYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+IDEyMDAwMAogI2RlZmluZSBF
TkFCTEVfU0VUX1dFQkNPTlRFTlRfUFJPQ0VTU19JTkZPUk1BVElPTl9JTl9ORVRXT1JLX1BST0NF
U1MgMQogI2VuZGlmCisKKyNpZiAhZGVmaW5lZChFTkFCTEVfV0hFRUxfRVZFTlRfUkVHSU9OUykg
JiYgKFBMQVRGT1JNKElPUykgfHwgUExBVEZPUk0oTUFDQ0FUQUxZU1QpKQorI2RlZmluZSBFTkFC
TEVfV0hFRUxfRVZFTlRfUkVHSU9OUyAxCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5k
bGVyLmNwcAppbmRleCA2YWJkZGIyNTYzZTkwNTFmOTRmMGVjODg2YjQ5OGFmYzdmNzFiNzg5Li5m
MDQwOTIwNzVlMDJmZTU5MzA2NDY5YmE5N2Q5MjYyZmM3ODY0YTE2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFn
ZS9FdmVudEhhbmRsZXIuY3BwCkBAIC0yOTA1LDEwICsyOTA1LDEzIEBAIGJvb2wgRXZlbnRIYW5k
bGVyOjpoYW5kbGVXaGVlbEV2ZW50SW50ZXJuYWwoY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50JiBl
dmVudCwgT3B0CiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIGJvb2wgaGFuZGxlZEV2ZW50
ID0gZmFsc2U7Ci0gICAgYm9vbCBhbGxvd1Njcm9sbGluZyA9IHRydWU7CisgICAgYm9vbCBhbGxv
d1Njcm9sbGluZyA9IG1fY3VycmVudFdoZWVsRXZlbnRBbGxvd3NTY3JvbGxpbmc7CisKICNpZiBF
TkFCTEUoV0hFRUxfRVZFTlRfTEFUQ0hJTkcpCi0gICAgYWxsb3dTY3JvbGxpbmcgPSBtX2N1cnJl
bnRXaGVlbEV2ZW50QWxsb3dzU2Nyb2xsaW5nICYmIG1fZnJhbWUucGFnZSgpLT5zY3JvbGxMYXRj
aGluZ0NvbnRyb2xsZXIoKS5sYXRjaGluZ0FsbG93c1Njcm9sbGluZ0luRnJhbWUobV9mcmFtZSwg
c2Nyb2xsYWJsZUFyZWEpOworICAgIGlmIChhbGxvd1Njcm9sbGluZykKKyAgICAgICAgYWxsb3dT
Y3JvbGxpbmcgPSBtX2ZyYW1lLnBhZ2UoKS0+c2Nyb2xsTGF0Y2hpbmdDb250cm9sbGVyKCkubGF0
Y2hpbmdBbGxvd3NTY3JvbGxpbmdJbkZyYW1lKG1fZnJhbWUsIHNjcm9sbGFibGVBcmVhKTsKICNl
bmRpZgorCiAgICAgaWYgKGFsbG93U2Nyb2xsaW5nKSB7CiAgICAgICAgIC8vIEZJWE1FOiBwcm9j
ZXNzV2hlZWxFdmVudEZvclNjcm9sbGluZygpIGlzIG9ubHkgY2FsbGVkIGZvciBGcmFtZVZpZXcg
c2Nyb2xsaW5nLCBub3Qgb3ZlcmZsb3cgc2Nyb2xsaW5nLCB3aGljaCBpcyBjb25mdXNpbmcuCiAg
ICAgICAgIGhhbmRsZWRFdmVudCA9IHByb2Nlc3NXaGVlbEV2ZW50Rm9yU2Nyb2xsaW5nKGV2ZW50
LCBzY3JvbGxhYmxlQXJlYSwgaGFuZGxpbmcpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL0V2ZW50UmVnaW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvRXZlbnRS
ZWdpb24uaAppbmRleCA2YzRmYWU2MzM3MjViN2U2ZThiZmQ5ZGVhOTg1OTE1YzgxMGM5NWZiLi4y
ZmY1ZTkzNjJmNmY0MjZmNzY5Yjk2YzliOGEyYTMxMzc4YzRmNzE4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvRXZlbnRSZWdpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvRXZlbnRSZWdpb24uaApAQCAtODIsNyArODIsNyBAQCBwdWJsaWM6CiAjZW5kaWYK
IAogI2lmIEVOQUJMRShXSEVFTF9FVkVOVF9SRUdJT05TKQotICAgIE9wdGlvblNldDxFdmVudExp
c3RlbmVyUmVnaW9uVHlwZT4gZXZlbnRMaXN0ZW5lclJlZ2lvblR5cGVzRm9yUG9pbnQoY29uc3Qg
SW50UG9pbnQmKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBPcHRpb25TZXQ8RXZlbnRMaXN0
ZW5lclJlZ2lvblR5cGU+IGV2ZW50TGlzdGVuZXJSZWdpb25UeXBlc0ZvclBvaW50KGNvbnN0IElu
dFBvaW50JikgY29uc3Q7CiAgICAgY29uc3QgUmVnaW9uJiBldmVudExpc3RlbmVyUmVnaW9uRm9y
VHlwZShFdmVudExpc3RlbmVyUmVnaW9uVHlwZSkgY29uc3Q7CiAjZW5kaWYKIApAQCAtMTI1LDYg
KzEyNSwxMCBAQCB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPgogdm9pZCBFdmVudFJlZ2lvbjo6ZW5j
b2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0CiB7CiAgICAgZW5jb2RlciA8PCBtX3JlZ2lvbjsK
KyNpZiBFTkFCTEUoV0hFRUxfRVZFTlRfUkVHSU9OUykKKyAgICBlbmNvZGVyIDw8IG1fd2hlZWxF
dmVudExpc3RlbmVyUmVnaW9uOworICAgIGVuY29kZXIgPDwgbV9ub25QYXNzaXZlV2hlZWxFdmVu
dExpc3RlbmVyUmVnaW9uOworI2VuZGlmCiAjaWYgRU5BQkxFKFRPVUNIX0FDVElPTl9SRUdJT05T
KQogICAgIGVuY29kZXIgPDwgbV90b3VjaEFjdGlvblJlZ2lvbnM7CiAjZW5kaWYKQEAgLTE0NCw2
ICsxNDgsMjIgQEAgT3B0aW9uYWw8RXZlbnRSZWdpb24+IEV2ZW50UmVnaW9uOjpkZWNvZGUoRGVj
b2RlciYgZGVjb2RlcikKICAgICBFdmVudFJlZ2lvbiBldmVudFJlZ2lvbjsKICAgICBldmVudFJl
Z2lvbi5tX3JlZ2lvbiA9IFdURk1vdmUoKnJlZ2lvbik7CiAKKyNpZiBFTkFCTEUoV0hFRUxfRVZF
TlRfUkVHSU9OUykKKyAgICBPcHRpb25hbDxSZWdpb24+IHdoZWVsRXZlbnRMaXN0ZW5lclJlZ2lv
bjsKKyAgICBkZWNvZGVyID4+IHdoZWVsRXZlbnRMaXN0ZW5lclJlZ2lvbjsKKyAgICBpZiAoIXdo
ZWVsRXZlbnRMaXN0ZW5lclJlZ2lvbikKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKwor
ICAgIGV2ZW50UmVnaW9uLm1fd2hlZWxFdmVudExpc3RlbmVyUmVnaW9uID0gV1RGTW92ZSgqd2hl
ZWxFdmVudExpc3RlbmVyUmVnaW9uKTsKKworICAgIE9wdGlvbmFsPFJlZ2lvbj4gbm9uUGFzc2l2
ZVdoZWVsRXZlbnRMaXN0ZW5lclJlZ2lvbjsKKyAgICBkZWNvZGVyID4+IG5vblBhc3NpdmVXaGVl
bEV2ZW50TGlzdGVuZXJSZWdpb247CisgICAgaWYgKCFub25QYXNzaXZlV2hlZWxFdmVudExpc3Rl
bmVyUmVnaW9uKQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAgZXZlbnRSZWdp
b24ubV9ub25QYXNzaXZlV2hlZWxFdmVudExpc3RlbmVyUmVnaW9uID0gV1RGTW92ZSgqbm9uUGFz
c2l2ZVdoZWVsRXZlbnRMaXN0ZW5lclJlZ2lvbik7CisjZW5kaWYKKwogI2lmIEVOQUJMRShUT1VD
SF9BQ1RJT05fUkVHSU9OUykKICAgICBPcHRpb25hbDxWZWN0b3I8UmVnaW9uPj4gdG91Y2hBY3Rp
b25SZWdpb25zOwogICAgIGRlY29kZXIgPj4gdG91Y2hBY3Rpb25SZWdpb25zOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9zcGkvaW9zL1VJS2l0U1BJLmggYi9Tb3VyY2UvV2Vi
S2l0L1BsYXRmb3JtL3NwaS9pb3MvVUlLaXRTUEkuaAppbmRleCAyNDE3Nzg5ZGJjMmZhOWVmYzhh
NDUyZTU5NDdlNThhMjY0NWYxNjc2Li5lMDhiMDk3YzEwNmFiMjE2MDEwMjljNDk5Nzc1NTE5OGJj
ODBmOGViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL3NwaS9pb3MvVUlLaXRT
UEkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL3NwaS9pb3MvVUlLaXRTUEkuaApAQCAt
NjIsNiArNjIsOCBAQAogI2ltcG9ydCA8VUlLaXQvVUlQcmVzZW50YXRpb25Db250cm9sbGVyX1By
aXZhdGUuaD4KICNpbXBvcnQgPFVJS2l0L1VJUmVzcG9uZGVyX1ByaXZhdGUuaD4KICNpbXBvcnQg
PFVJS2l0L1VJU2NlbmVfUHJpdmF0ZS5oPgorI2ltcG9ydCA8VUlLaXQvVUlTY3JvbGxFdmVudF9Q
cml2YXRlLmg+CisjaW1wb3J0IDxVSUtpdC9VSVNjcm9sbFZpZXdfRm9yV2ViS2l0T25seS5oPgog
I2ltcG9ydCA8VUlLaXQvVUlTY3JvbGxWaWV3X1ByaXZhdGUuaD4KICNpbXBvcnQgPFVJS2l0L1VJ
U3RyaW5nRHJhd2luZ19Qcml2YXRlLmg+CiAjaW1wb3J0IDxVSUtpdC9VSVRhYmxlVmlld0NlbGxf
UHJpdmF0ZS5oPgpAQCAtNDE2LDggKzQxOCwyNyBAQCB0eXBlZGVmIGVudW0gewogQHByb3BlcnR5
IChub25hdG9taWMsIGdldHRlcj1faW5kaWNhdG9ySW5zZXRBZGp1c3RtZW50QmVoYXZpb3IsIHNl
dHRlcj1fc2V0SW5kaWNhdG9ySW5zZXRBZGp1c3RtZW50QmVoYXZpb3I6KSBVSVNjcm9sbFZpZXdJ
bmRpY2F0b3JJbnNldEFkanVzdG1lbnRCZWhhdmlvciBpbmRpY2F0b3JJbnNldEFkanVzdG1lbnRC
ZWhhdmlvcjsKIEBwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSkgVUlFZGdlSW5zZXRzIF9z
eXN0ZW1Db250ZW50SW5zZXQ7CiBAcHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHkpIFVJRWRn
ZUluc2V0cyBfZWZmZWN0aXZlQ29udGVudEluc2V0OworQHByb3BlcnR5IChub25hdG9taWMsIGdl
dHRlcj1fYWxsb3dzQXN5bmNTY3JvbGxFdmVudCwgc2V0dGVyPV9zZXRBbGxvd3NBc3luY1Njcm9s
bEV2ZW50OikgQk9PTCBfYWxsb3dzQXN5bmNTY3JvbGxFdmVudDsKIEBlbmQKIAordHlwZWRlZiBO
U19FTlVNKE5TVUludGVnZXIsIFVJU2Nyb2xsUGhhc2UpIHsKKyAgICBVSVNjcm9sbFBoYXNlTm9u
ZSwKKyAgICBVSVNjcm9sbFBoYXNlTWF5QmVnaW4sCisgICAgVUlTY3JvbGxQaGFzZUJlZ2FuLAor
ICAgIFVJU2Nyb2xsUGhhc2VDaGFuZ2VkLAorICAgIFVJU2Nyb2xsUGhhc2VFbmRlZCwKKyAgICBV
SVNjcm9sbFBoYXNlQ2FuY2VsbGVkCit9OworCitAaW50ZXJmYWNlIFVJU2Nyb2xsRXZlbnQgOiBV
SUV2ZW50CisKK0Bwcm9wZXJ0eSAoYXNzaWduLCByZWFkb25seSkgVUlTY3JvbGxQaGFzZSBwaGFz
ZTsKKy0gKENHUG9pbnQpbG9jYXRpb25JblZpZXc6KFVJVmlldyAqKXZpZXc7CistIChDR1ZlY3Rv
cilfYWRqdXN0ZWRBY2NlbGVyYXRlZERlbHRhSW5WaWV3OihVSVZpZXcgKil2aWV3OworCitAZW5k
CisKKwogQGludGVyZmFjZSBOU1N0cmluZyAoVUlLaXREZXRhaWxzKQogLSAoQ0dTaXplKV9sZWdh
Y3lfc2l6ZVdpdGhGb250OihVSUZvbnQgKilmb250IGZvcldpZHRoOihDR0Zsb2F0KXdpZHRoIGxp
bmVCcmVha01vZGU6KE5TTGluZUJyZWFrTW9kZSlsaW5lQnJlYWtNb2RlOwogLSAoQ0dTaXplKV9s
ZWdhY3lfc2l6ZVdpdGhGb250OihVSUZvbnQgKilmb250IG1pbkZvbnRTaXplOihDR0Zsb2F0KW1p
bkZvbnRTaXplIGFjdHVhbEZvbnRTaXplOihDR0Zsb2F0ICopYWN0dWFsRm9udFNpemUgZm9yV2lk
dGg6KENHRmxvYXQpd2lkdGggbGluZUJyZWFrTW9kZTooTlNMaW5lQnJlYWtNb2RlKWxpbmVCcmVh
a01vZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tX
ZWJWaWV3SW50ZXJuYWwuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dl
YlZpZXdJbnRlcm5hbC5oCmluZGV4IGMwNWFkNzI0ZWQyMDM5MjFmNWViZWU0NzE3NTE1Nzk4MzM5
ZDYyZGIuLjMxZjgxY2UwZTllNGZlMjdlMmNlMTU5ZjlmMGQ0N2Q4OTlkNGZjOWMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdJbnRlcm5hbC5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdJbnRlcm5h
bC5oCkBAIC0yMjksNiArMjI5LDggQEAgY2xhc3MgVmlld0dlc3R1cmVDb250cm9sbGVyOwogICAg
IEJPT0wgX2hhc1NjaGVkdWxlZFZpc2libGVSZWN0VXBkYXRlOwogICAgIEJPT0wgX3Zpc2libGVD
b250ZW50UmVjdFVwZGF0ZVNjaGVkdWxlZEZyb21TY3JvbGxWaWV3SW5TdGFibGVTdGF0ZTsKIAor
ICAgIE9wdGlvbmFsPGJvb2w+IF9jdXJyZW50U2Nyb2xsR2VzdHVyZVdhc0luaXRpYWxseVByZXZl
bnRlZDsKKwogICAgIF9XS0RyYWdJbnRlcmFjdGlvblBvbGljeSBfZHJhZ0ludGVyYWN0aW9uUG9s
aWN5OwogCiAgICAgLy8gRm9yIHJlbGVhc2UtbG9nZ2luZyBmb3IgPHJkYXI6Ly9wcm9ibGVtLzM5
MjgxMjY5Pi4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9pb3MvV0tX
ZWJWaWV3SU9TLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvaW9zL1dLV2ViVmlld0lP
Uy5oCmluZGV4IGY3ZTJlMzMxZDFhMjRhZDE2ZmFiYTgyYzc3ODJiMzhiMWVmNDk5NWEuLjM5NDE1
ZTcyZTYyNDRmOWNjNTk1M2FiMjg2YmQ5ZTM0MzhjNzFlNDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9pb3MvV0tXZWJWaWV3SU9TLmgKKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL2lvcy9XS1dlYlZpZXdJT1MuaApAQCAtMjUsNiArMjUsOCBAQAogCiAj
aW1wb3J0ICJXS1dlYlZpZXdJbnRlcm5hbC5oIgogCitAY2xhc3MgVUlTY3JvbGxFdmVudDsKKwog
I2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAKIEBpbnRlcmZhY2UgV0tXZWJWaWV3IChXS1ZpZXdJ
bnRlcm5hbElPUykKQEAgLTEyNSw2ICsxMjcsMTEgQEAKIC0gKFdlYkNvcmU6OkZsb2F0U2l6ZSlh
Y3RpdmVWaWV3TGF5b3V0U2l6ZTooY29uc3QgQ0dSZWN0Jilib3VuZHM7CiAtICh2b2lkKV91cGRh
dGVTY3JvbGxWaWV3SW5zZXRBZGp1c3RtZW50QmVoYXZpb3I7CiAKKy0gKEJPT0wpX2VmZmVjdGl2
ZUFwcGVhcmFuY2VJc0Rhcms7CistIChCT09MKV9lZmZlY3RpdmVVc2VySW50ZXJmYWNlTGV2ZWxJ
c0VsZXZhdGVkOworCistICh2b2lkKV9zY3JvbGxWaWV3OihVSVNjcm9sbFZpZXcgKilzY3JvbGxW
aWV3IGFzeW5jaHJvbm91c2x5SGFuZGxlU2Nyb2xsRXZlbnQ6KFVJU2Nyb2xsRXZlbnQgKilzY3Jv
bGxFdmVudCBjb21wbGV0aW9uOih2b2lkICheKShCT09MIGhhbmRsZWQpKWNvbXBsZXRpb247CisK
IEBwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSkgV0tQYXNzd29yZFZpZXcgKl9wYXNzd29y
ZFZpZXc7CiBAcHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHkpIFdLV2ViVmlld0NvbnRlbnRQ
cm92aWRlclJlZ2lzdHJ5ICpfY29udGVudFByb3ZpZGVyUmVnaXN0cnk7CiBAcHJvcGVydHkgKG5v
bmF0b21pYywgcmVhZG9ubHkpIFdLU2VsZWN0aW9uR3JhbnVsYXJpdHkgX3NlbGVjdGlvbkdyYW51
bGFyaXR5OwpAQCAtMTM3LDkgKzE0NCw2IEBACiBAcHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9u
bHksIGdldHRlcj1faXNSZXRhaW5pbmdBY3RpdmVGb2N1c2VkU3RhdGUpIEJPT0wgX3JldGFpbmlu
Z0FjdGl2ZUZvY3VzZWRTdGF0ZTsKIEBwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSkgaW50
MzJfdCBfZGV2aWNlT3JpZW50YXRpb247CiAKLS0gKEJPT0wpX2VmZmVjdGl2ZUFwcGVhcmFuY2VJ
c0Rhcms7Ci0tIChCT09MKV9lZmZlY3RpdmVVc2VySW50ZXJmYWNlTGV2ZWxJc0VsZXZhdGVkOwot
CiBAZW5kCiAKICNlbmRpZiAvLyBQTEFURk9STShJT1NfRkFNSUxZKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2lvcy9XS1dlYlZpZXdJT1MubW0gYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvaW9zL1dLV2ViVmlld0lPUy5tbQppbmRleCA0Yjc2NjJhMTY0NTk0
ZGU2ZTQzZmU0NDQ0OGUwOTIzN2Q3MmJlZjMyLi5jMDlmOTNiZGJmMTIxODJjMjcwY2IzMjc1OTZk
MDIxOTc1YzU5YjY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvaW9z
L1dLV2ViVmlld0lPUy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvaW9zL1dL
V2ViVmlld0lPUy5tbQpAQCAtMjksOSArMjksMTEgQEAKICNpZiBQTEFURk9STShJT1NfRkFNSUxZ
KQogCiAjaW1wb3J0ICJGcm9udEJvYXJkU2VydmljZXNTUEkuaCIKKyNpbXBvcnQgIk5hdGl2ZVdl
YldoZWVsRXZlbnQuaCIKICNpbXBvcnQgIk5hdmlnYXRpb25TdGF0ZS5oIgogI2ltcG9ydCAiUmVt
b3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94eS5oIgogI2ltcG9ydCAiUmVtb3RlTGF5ZXJUcmVl
U2Nyb2xsaW5nUGVyZm9ybWFuY2VEYXRhLmgiCisjaW1wb3J0ICJSZW1vdGVMYXllclRyZWVWaWV3
cy5oIgogI2ltcG9ydCAiUmVtb3RlU2Nyb2xsaW5nQ29vcmRpbmF0b3JQcm94eS5oIgogI2ltcG9y
dCAiVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5LmgiCiAjaW1wb3J0ICJWaWV3R2VzdHVyZUNv
bnRyb2xsZXIuaCIKQEAgLTEzOSw2ICsxNDEsMTAgQEAgLSAodm9pZClfc2V0dXBTY3JvbGxBbmRD
b250ZW50Vmlld3MKICAgICBbX3Njcm9sbFZpZXcgc2V0SW50ZXJuYWxEZWxlZ2F0ZTpzZWxmXTsK
ICAgICBbX3Njcm9sbFZpZXcgc2V0Qm91bmNlc1pvb206WUVTXTsKIAorI2lmIEhBVkUoVUlTQ1JP
TExWSUVXX0FTWU5DSFJPTk9VU19TQ1JPTExfRVZFTlRfSEFORExJTkcpCisgICAgW19zY3JvbGxW
aWV3IF9zZXRBbGxvd3NBc3luY1Njcm9sbEV2ZW50OllFU107CisjZW5kaWYKKwogICAgIGlmIChb
X3Njcm9sbFZpZXcgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3Rvcihfc2V0QXZvaWRzSnVtcE9u
SW50ZXJydXB0ZWRCb3VuY2U6KV0pIHsKICAgICAgICAgW19zY3JvbGxWaWV3IHNldFRyYWNrc0lt
bWVkaWF0ZWx5V2hpbGVEZWNlbGVyYXRpbmc6Tk9dOwogICAgICAgICBbX3Njcm9sbFZpZXcgX3Nl
dEF2b2lkc0p1bXBPbkludGVycnVwdGVkQm91bmNlOllFU107CkBAIC0xNTkwLDYgKzE1OTYsNjAg
QEAgLSAoQ0dQb2ludClfc2Nyb2xsVmlldzooVUlTY3JvbGxWaWV3ICopc2Nyb2xsVmlldyBhZGp1
c3RlZE9mZnNldEZvck9mZnNldDooQ0dQb2kKICAgICByZXR1cm4gYWRqdXN0ZWRDb250ZW50T2Zm
c2V0OwogfQogCisjaWYgSEFWRShVSVNDUk9MTFZJRVdfQVNZTkNIUk9OT1VTX1NDUk9MTF9FVkVO
VF9IQU5ETElORykKKy0gKHZvaWQpX3Njcm9sbFZpZXc6KFVJU2Nyb2xsVmlldyAqKXNjcm9sbFZp
ZXcgYXN5bmNocm9ub3VzbHlIYW5kbGVTY3JvbGxFdmVudDooVUlTY3JvbGxFdmVudCAqKXNjcm9s
bEV2ZW50IGNvbXBsZXRpb246KHZvaWQgKF4pKEJPT0wgaGFuZGxlZCkpY29tcGxldGlvbgorewor
ICAgIFdlYkNvcmU6OkludFBvaW50IHNjcm9sbExvY2F0aW9uID0gV2ViQ29yZTo6cm91bmRlZElu
dFBvaW50KFtzY3JvbGxFdmVudCBsb2NhdGlvbkluVmlldzpfY29udGVudFZpZXcuZ2V0KCldKTsK
KworICAgIGF1dG8gZXZlbnRMaXN0ZW5lcnMgPSBXZWJLaXQ6OmV2ZW50TGlzdGVuZXJUeXBlc0F0
UG9pbnQoX2NvbnRlbnRWaWV3LmdldCgpLCBzY3JvbGxMb2NhdGlvbik7CisgICAgYm9vbCBoYXNQ
YXNzaXZlV2hlZWxIYW5kbGVycyA9IGV2ZW50TGlzdGVuZXJzLmNvbnRhaW5zKFdlYkNvcmU6OkV2
ZW50TGlzdGVuZXJSZWdpb25UeXBlOjpXaGVlbCk7CisgICAgYm9vbCBoYXNOb25QYXNzaXZlV2hl
ZWxIYW5kbGVycyA9IGV2ZW50TGlzdGVuZXJzLmNvbnRhaW5zKFdlYkNvcmU6OkV2ZW50TGlzdGVu
ZXJSZWdpb25UeXBlOjpOb25QYXNzaXZlV2hlZWwpOworCisgICAgaWYgKCFoYXNQYXNzaXZlV2hl
ZWxIYW5kbGVycyAmJiAhaGFzTm9uUGFzc2l2ZVdoZWVsSGFuZGxlcnMpIHsKKyAgICAgICAgY29t
cGxldGlvbihOTyk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpZiAoc2Nyb2xsRXZl
bnQucGhhc2UgPT0gVUlTY3JvbGxQaGFzZU1heUJlZ2luKSB7CisgICAgICAgIGNvbXBsZXRpb24o
Tk8pOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgYm9vbCBpc0ZpcnN0RXZlbnRJbkdl
c3R1cmUgPSBzY3JvbGxFdmVudC5waGFzZSA9PSBVSVNjcm9sbFBoYXNlQmVnYW47CisgICAgaWYg
KGlzRmlyc3RFdmVudEluR2VzdHVyZSkKKyAgICAgICAgX2N1cnJlbnRTY3JvbGxHZXN0dXJlV2Fz
SW5pdGlhbGx5UHJldmVudGVkID0gV1RGOjpudWxsb3B0OworCisgICAgYm9vbCBpc1ByZXZlbnRh
YmxlID0gaGFzTm9uUGFzc2l2ZVdoZWVsSGFuZGxlcnMgJiYgX2N1cnJlbnRTY3JvbGxHZXN0dXJl
V2FzSW5pdGlhbGx5UHJldmVudGVkLnZhbHVlT3IoaXNGaXJzdEV2ZW50SW5HZXN0dXJlKTsKKyAg
ICBDR1ZlY3RvciBkZWx0YSA9IFtzY3JvbGxFdmVudCBfYWRqdXN0ZWRBY2NlbGVyYXRlZERlbHRh
SW5WaWV3Ol9jb250ZW50Vmlldy5nZXQoKV07CisKKyAgICBXZWJLaXQ6OldlYldoZWVsRXZlbnQg
ZXZlbnQgPSB7CisgICAgICAgIFdlYktpdDo6V2ViRXZlbnQ6OldoZWVsLAorICAgICAgICBzY3Jv
bGxMb2NhdGlvbiwKKyAgICAgICAgc2Nyb2xsTG9jYXRpb24sCisgICAgICAgIFdlYkNvcmU6OkZs
b2F0U2l6ZShkZWx0YS5keCwgZGVsdGEuZHkpLAorICAgICAgICB7IH0sIC8vIHdoZWVsVGlja3MK
KyAgICAgICAgV2ViS2l0OjpOYXRpdmVXZWJXaGVlbEV2ZW50OjpHcmFudWxhcml0eTo6U2Nyb2xs
QnlQaXhlbFdoZWVsRXZlbnQsCisgICAgICAgIHsgfSwgLy8gbW9kaWZpZXJzCisgICAgICAgIE1v
bm90b25pY1RpbWU6OmZyb21SYXdTZWNvbmRzKHNjcm9sbEV2ZW50LnRpbWVzdGFtcCkuYXBwcm94
aW1hdGVXYWxsVGltZSgpCisgICAgfTsKKworICAgIF9wYWdlLT5kaXNwYXRjaFdoZWVsRXZlbnRX
aXRob3V0U2Nyb2xsaW5nKGV2ZW50LCBpc0ZpcnN0RXZlbnRJbkdlc3R1cmUsIGhhc05vblBhc3Np
dmVXaGVlbEhhbmRsZXJzLCBbd2Vha1NlbGYgPSBXZWFrT2JqQ1B0cjxXS1dlYlZpZXc+KHNlbGYp
LCBzdHJvbmdDb21wbGV0aW9uID0gbWFrZUJsb2NrUHRyKGNvbXBsZXRpb24pLCBpc1ByZXZlbnRh
YmxlLCBpc0ZpcnN0RXZlbnRJbkdlc3R1cmVdKGJvb2wgaGFuZGxlZCkgeworICAgICAgICBhdXRv
IHN0cm9uZ1NlbGYgPSB3ZWFrU2VsZi5nZXQoKTsKKyAgICAgICAgaWYgKCFzdHJvbmdTZWxmKQor
ICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIGlmIChpc1ByZXZlbnRhYmxlKSB7CisgICAg
ICAgICAgICBpZiAoaXNGaXJzdEV2ZW50SW5HZXN0dXJlKQorICAgICAgICAgICAgICAgIHN0cm9u
Z1NlbGYtPl9jdXJyZW50U2Nyb2xsR2VzdHVyZVdhc0luaXRpYWxseVByZXZlbnRlZCA9IGhhbmRs
ZWQ7CisgICAgICAgICAgICBzdHJvbmdDb21wbGV0aW9uKGhhbmRsZWQpOworICAgICAgICB9Cisg
ICAgfSk7CisKKyAgICBpZiAoIWlzUHJldmVudGFibGUpCisgICAgICAgIGNvbXBsZXRpb24oZmFs
c2UpOworfQorI2VuZGlmIC8vIEhBVkUoVUlTQ1JPTExWSUVXX0FTWU5DSFJPTk9VU19TQ1JPTExf
RVZFTlRfSEFORExJTkcpCisKIC0gKHZvaWQpc2Nyb2xsVmlld0RpZFNjcm9sbDooVUlTY3JvbGxW
aWV3ICopc2Nyb2xsVmlldwogewogICAgIGlmICghW3NlbGYgdXNlc1N0YW5kYXJkQ29udGVudFZp
ZXddICYmIFtfY3VzdG9tQ29udGVudFZpZXcgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3Rvcih3
ZWJfc2Nyb2xsVmlld0RpZFNjcm9sbDopXSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1BhZ2VDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BhZ2VDbGllbnQu
aAppbmRleCBjNGM3MTg3NGExMGRhOWI1NDFmZWUyODIwODA4YzFlNTBkM2ZhOTJiLi40Y2NhNDJm
N2YwNjliN2RmOGI0MDllMmZiMTlkYjAwM2Q1YTQ2MTAwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9QYWdlQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
UGFnZUNsaWVudC5oCkBAIC02NCw2ICs2NCw4IEBAIE9CSkNfQ0xBU1MgTlNNZW51OwogT0JKQ19D
TEFTUyBOU1NldDsKIE9CSkNfQ0xBU1MgTlNUZXh0QWx0ZXJuYXRpdmVzOwogT0JKQ19DTEFTUyBV
SUdlc3R1cmVSZWNvZ25pemVyOworT0JKQ19DTEFTUyBVSVNjcm9sbEV2ZW50OworT0JKQ19DTEFT
UyBVSVNjcm9sbFZpZXc7CiBPQkpDX0NMQVNTIF9XS1JlbW90ZU9iamVjdFJlZ2lzdHJ5OwogCiAj
aWYgVVNFKEFQUEtJVCkKQEAgLTQ2Niw2ICs0NjgsOCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2
b2lkIGRpc2FibGVJbnNwZWN0b3JOb2RlU2VhcmNoKCkgPSAwOwogCiAgICAgdmlydHVhbCB2b2lk
IGhhbmRsZUF1dG9jb3JyZWN0aW9uQ29udGV4dChjb25zdCBXZWJBdXRvY29ycmVjdGlvbkNvbnRl
eHQmKSA9IDA7CisKKyAgICB2aXJ0dWFsIHZvaWQgaGFuZGxlQXN5bmNocm9ub3VzUHJldmVudGFi
bGVTY3JvbGxFdmVudChVSVNjcm9sbFZpZXcgKiwgVUlTY3JvbGxFdmVudCAqLCB2b2lkICheY29t
cGxldGlvbikoQk9PTCBoYW5kbGVkKSkgPSAwOwogI2VuZGlmCiAKICAgICAvLyBBdXhpbGlhcnkg
Q2xpZW50IENyZWF0aW9uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1v
dGVMYXllclRyZWUvaW9zL1JlbW90ZUxheWVyVHJlZVZpZXdzLmggYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvaW9zL1JlbW90ZUxheWVyVHJlZVZpZXdzLmgKaW5kZXgg
MzNhMTQ2MTBiOGFmYmNjOTY2Zjk4MjZlN2I0NTM2MzdhNmI5ZDU2ZS4uMmI4ZDBhYjBlZWI5MWQ0
ZjFmMTE4NjZiOTQxOTZkYTFmM2NiYWQxYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL2lvcy9SZW1vdGVMYXllclRyZWVWaWV3cy5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9pb3MvUmVtb3RlTGF5ZXJUcmVl
Vmlld3MuaApAQCAtNzEsNiArNzEsOCBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIE9wdGlvblNldDxX
ZWJDb3JlOjpUb3VjaEFjdGlvbj4gdG91Y2hBY3Rpb25zRm9yUG9pbnQoVUlWaWV3ICpyb290Vmll
dywgY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmKTsKIFVJU2Nyb2xsVmlldyAqZmluZEFjdGluZ1Nj
cm9sbFBhcmVudChVSVNjcm9sbFZpZXcgKiwgY29uc3QgUmVtb3RlTGF5ZXJUcmVlSG9zdCYpOwog
CitPcHRpb25TZXQ8V2ViQ29yZTo6RXZlbnRMaXN0ZW5lclJlZ2lvblR5cGU+IGV2ZW50TGlzdGVu
ZXJUeXBlc0F0UG9pbnQoVUlWaWV3ICpyb290VmlldywgY29uc3QgV2ViQ29yZTo6SW50UG9pbnQm
KTsKKwogI2lmIEVOQUJMRShFRElUQUJMRV9SRUdJT04pCiBib29sIG1heUNvbnRhaW5FZGl0YWJs
ZUVsZW1lbnRzSW5SZWN0KFVJVmlldyAqcm9vdFZpZXcsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVj
dCYpOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVM
YXllclRyZWUvaW9zL1JlbW90ZUxheWVyVHJlZVZpZXdzLm1tIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL2lvcy9SZW1vdGVMYXllclRyZWVWaWV3cy5tbQppbmRleCAx
MWJiMDFiMzcyY2U2OTdiNmU2M2E0M2U2YTQ2ZGY4MjQzY2FkYzM4Li5hOGZhNmZmNmZhMmFkMGU3
YzRhNGMzNTNmYWE3ZWE2YThhMmQ1MjM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9SZW1vdGVMYXllclRyZWUvaW9zL1JlbW90ZUxheWVyVHJlZVZpZXdzLm1tCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9pb3MvUmVtb3RlTGF5ZXJUcmVl
Vmlld3MubW0KQEAgLTIwNSw2ICsyMDUsMzYgQEAgT3B0aW9uU2V0PFdlYkNvcmU6OlRvdWNoQWN0
aW9uPiB0b3VjaEFjdGlvbnNGb3JQb2ludChVSVZpZXcgKnJvb3RWaWV3LCBjb25zdCBXZWIKICAg
ICByZXR1cm4gbm9kZS0+ZXZlbnRSZWdpb24oKS50b3VjaEFjdGlvbnNGb3JQb2ludChXZWJDb3Jl
OjpJbnRQb2ludChoaXRWaWV3UG9pbnQpKTsKIH0KIAorI2lmIEVOQUJMRShXSEVFTF9FVkVOVF9S
RUdJT05TKQorT3B0aW9uU2V0PFdlYkNvcmU6OkV2ZW50TGlzdGVuZXJSZWdpb25UeXBlPiBldmVu
dExpc3RlbmVyVHlwZXNBdFBvaW50KFVJVmlldyAqcm9vdFZpZXcsIGNvbnN0IFdlYkNvcmU6Oklu
dFBvaW50JiBwb2ludCkKK3sKKyAgICBWZWN0b3I8VUlWaWV3ICosIDE2PiB2aWV3c0F0UG9pbnQ7
CisgICAgY29sbGVjdERlc2NlbmRhbnRWaWV3c0F0UG9pbnQodmlld3NBdFBvaW50LCByb290Vmll
dywgcG9pbnQsIG5pbCk7CisKKyAgICBpZiAodmlld3NBdFBvaW50LmlzRW1wdHkoKSkKKyAgICAg
ICAgcmV0dXJuIHsgfTsKKworICAgIFVJVmlldyAqaGl0VmlldyA9IG5pbDsKKyAgICBmb3IgKGF1
dG8gKnZpZXcgOiBXVEY6Om1ha2VSZXZlcnNlZFJhbmdlKHZpZXdzQXRQb2ludCkpIHsKKyAgICAg
ICAgaWYgKFt2aWV3IGlzS2luZE9mQ2xhc3M6W1dLQ29tcG9zaXRpbmdWaWV3IGNsYXNzXV0pIHsK
KyAgICAgICAgICAgIGhpdFZpZXcgPSB2aWV3OworICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
IH0KKyAgICB9CisKKyAgICBpZiAoIWhpdFZpZXcpCisgICAgICAgIHJldHVybiB7IH07CisKKyAg
ICBDR1BvaW50IGhpdFZpZXdQb2ludCA9IFtoaXRWaWV3IGNvbnZlcnRQb2ludDpwb2ludCBmcm9t
Vmlldzpyb290Vmlld107CisKKyAgICBhdXRvKiBub2RlID0gUmVtb3RlTGF5ZXJUcmVlTm9kZTo6
Zm9yQ0FMYXllcihoaXRWaWV3LmxheWVyKTsKKyAgICBpZiAoIW5vZGUpCisgICAgICAgIHJldHVy
biB7IH07CisKKyAgICByZXR1cm4gbm9kZS0+ZXZlbnRSZWdpb24oKS5ldmVudExpc3RlbmVyUmVn
aW9uVHlwZXNGb3JQb2ludChXZWJDb3JlOjpJbnRQb2ludChoaXRWaWV3UG9pbnQpKTsKK30KKyNl
bmRpZgorCiBVSVNjcm9sbFZpZXcgKmZpbmRBY3RpbmdTY3JvbGxQYXJlbnQoVUlTY3JvbGxWaWV3
ICpzY3JvbGxWaWV3LCBjb25zdCBSZW1vdGVMYXllclRyZWVIb3N0JiBob3N0KQogewogICAgIEhh
c2hTZXQ8V2ViQ29yZTo6R3JhcGhpY3NMYXllcjo6UGxhdGZvcm1MYXllcklEPiBzY3JvbGxlcnNU
b1NraXA7CkBAIC00MDQsNiArNDM0LDEwIEBAIC0gKGluc3RhbmNldHlwZSlpbml0V2l0aEZyYW1l
OihDR1JlY3QpZnJhbWUKICAgICBzZWxmLmNvbnRlbnRJbnNldEFkanVzdG1lbnRCZWhhdmlvciA9
IFVJU2Nyb2xsVmlld0NvbnRlbnRJbnNldEFkanVzdG1lbnROZXZlcjsKICNlbmRpZgogCisjaWYg
SEFWRShVSVNDUk9MTFZJRVdfQVNZTkNIUk9OT1VTX1NDUk9MTF9FVkVOVF9IQU5ETElORykKKyAg
ICBbc2VsZiBfc2V0QWxsb3dzQXN5bmNTY3JvbGxFdmVudDpZRVNdOworI2VuZGlmCisKICAgICBy
ZXR1cm4gc2VsZjsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVt
b3RlTGF5ZXJUcmVlL2lvcy9TY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlSU9TLmgg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvaW9zL1Njcm9sbGluZ1Ry
ZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVJT1MuaAppbmRleCAzMTA1MDJjOGE2NDRjZGZmOGM1ZjMy
NjgyZDcwMzRlZWFlMjExNWFkLi4zMjY5ZmQyNmNjNDMzOTI1MmYzNGNmNjg5MGRiMmFhNmNhMDZk
ZjMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUv
aW9zL1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVJT1MuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvaW9zL1Njcm9sbGluZ1RyZWVTY3JvbGxp
bmdOb2RlRGVsZWdhdGVJT1MuaApAQCAtNjUsNiArNjUsOCBAQCBwdWJsaWM6CiAKICAgICB2b2lk
IHJlcG9zaXRpb25TY3JvbGxpbmdMYXllcnMoKTsKIAorICAgIHZvaWQgaGFuZGxlQXN5bmNocm9u
b3VzUHJldmVudGFibGVTY3JvbGxFdmVudChVSVNjcm9sbFZpZXcgKiwgVUlTY3JvbGxFdmVudCAq
LCB2b2lkICheY29tcGxldGlvbikoQk9PTCBoYW5kbGVkKSk7CisKICAgICBPcHRpb25TZXQ8V2Vi
Q29yZTo6VG91Y2hBY3Rpb24+IGFjdGl2ZVRvdWNoQWN0aW9ucygpIGNvbnN0IHsgcmV0dXJuIG1f
YWN0aXZlVG91Y2hBY3Rpb25zOyB9CiAgICAgdm9pZCBjb21wdXRlQWN0aXZlVG91Y2hBY3Rpb25z
Rm9yR2VzdHVyZVJlY29nbml6ZXIoVUlHZXN0dXJlUmVjb2duaXplciopOwogICAgIHZvaWQgY2xl
YXJBY3RpdmVUb3VjaEFjdGlvbnMoKSB7IG1fYWN0aXZlVG91Y2hBY3Rpb25zID0geyB9OyB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvaW9zL1Nj
cm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVJT1MubW0gYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvaW9zL1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVs
ZWdhdGVJT1MubW0KaW5kZXggYWIzNzQ3MjBhMzI4NDdmN2U1Y2M1N2JiYzU3OTc0ZDFlMzA0NjUw
Zi4uNjA5NDA1N2MxYjRkZmEzNWFlYTFhM2E5ZGI1Mzg4YTAyOTdmZDgwMSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL2lvcy9TY3JvbGxpbmdUcmVl
U2Nyb2xsaW5nTm9kZURlbGVnYXRlSU9TLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1JlbW90ZUxheWVyVHJlZS9pb3MvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZUlP
Uy5tbQpAQCAtMTc2LDYgKzE3NiwxMyBAQCAtIChDR1BvaW50KV9zY3JvbGxWaWV3OihVSVNjcm9s
bFZpZXcgKilzY3JvbGxWaWV3IGFkanVzdGVkT2Zmc2V0Rm9yT2Zmc2V0OihDR1BvaQogICAgIHJl
dHVybiBhZGp1c3RlZENvbnRlbnRPZmZzZXQ7CiB9CiAKKyNpZiBIQVZFKFVJU0NST0xMVklFV19B
U1lOQ0hST05PVVNfU0NST0xMX0VWRU5UX0hBTkRMSU5HKQorLSAodm9pZClfc2Nyb2xsVmlldzoo
VUlTY3JvbGxWaWV3ICopc2Nyb2xsVmlldyBhc3luY2hyb25vdXNseUhhbmRsZVNjcm9sbEV2ZW50
OihVSVNjcm9sbEV2ZW50ICopc2Nyb2xsRXZlbnQgY29tcGxldGlvbjoodm9pZCAoXikoQk9PTCBo
YW5kbGVkKSljb21wbGV0aW9uCit7CisgICAgX3Njcm9sbGluZ1RyZWVOb2RlRGVsZWdhdGUtPmhh
bmRsZUFzeW5jaHJvbm91c1ByZXZlbnRhYmxlU2Nyb2xsRXZlbnQoc2Nyb2xsVmlldywgc2Nyb2xs
RXZlbnQsIGNvbXBsZXRpb24pOworfQorI2VuZGlmCisKIC0gKHZvaWQpc2Nyb2xsVmlld1dpbGxC
ZWdpblpvb21pbmc6KFVJU2Nyb2xsVmlldyAqKXNjcm9sbFZpZXcgd2l0aFZpZXc6KFVJVmlldyAq
KXZpZXcKIHsKICAgICBbc2VsZiBjYW5jZWxQb2ludGVyc0Zvckdlc3R1cmVSZWNvZ25pemVyOnNj
cm9sbFZpZXcucGluY2hHZXN0dXJlUmVjb2duaXplcl07CkBAIC0yOTgsNiArMzA1LDEyIEBAIHZv
aWQgU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZUlPUzo6Y29tbWl0U3RhdGVBZnRl
ckNoaWxkcmVuKGNvbnN0IFNjcm9sCiAgICAgfQogfQogCit2b2lkIFNjcm9sbGluZ1RyZWVTY3Jv
bGxpbmdOb2RlRGVsZWdhdGVJT1M6OmhhbmRsZUFzeW5jaHJvbm91c1ByZXZlbnRhYmxlU2Nyb2xs
RXZlbnQoVUlTY3JvbGxWaWV3ICpzY3JvbGxWaWV3LCBVSVNjcm9sbEV2ZW50ICpzY3JvbGxFdmVu
dCwgdm9pZCAoXmNvbXBsZXRpb24pKEJPT0wgaGFuZGxlZCkpCit7CisgICAgYXV0byYgc2Nyb2xs
aW5nQ29vcmRpbmF0b3JQcm94eSA9IGRvd25jYXN0PFdlYktpdDo6UmVtb3RlU2Nyb2xsaW5nVHJl
ZT4oc2Nyb2xsaW5nVHJlZSgpKS5zY3JvbGxpbmdDb29yZGluYXRvclByb3h5KCk7CisgICAgc2Ny
b2xsaW5nQ29vcmRpbmF0b3JQcm94eS53ZWJQYWdlUHJveHkoKS5wYWdlQ2xpZW50KCkuaGFuZGxl
QXN5bmNocm9ub3VzUHJldmVudGFibGVTY3JvbGxFdmVudChzY3JvbGxWaWV3LCBzY3JvbGxFdmVu
dCwgY29tcGxldGlvbik7Cit9CisKIHZvaWQgU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxl
Z2F0ZUlPUzo6cmVwb3NpdGlvblNjcm9sbGluZ0xheWVycygpCiB7CiAgICAgQkVHSU5fQkxPQ0tf
T0JKQ19FWENFUFRJT05TCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQ
YWdlUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcApp
bmRleCBjYzFiYmI0YTRhYWI4MmQxMWRjNjZhYzJlNDFhZmNhZmUwY2U3ODgzLi4yYjRkODM4YjVj
N2JjMDEzNWRjZmQxYjU0ZjQ2NWIzNTFjNjFiNDcwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYlBhZ2VQcm94eS5jcHAKQEAgLTI2MzcsNiArMjYzNywxMSBAQCB2b2lkIFdlYlBhZ2VQcm94
eTo6Zmx1c2hQZW5kaW5nTW91c2VFdmVudENhbGxiYWNrcygpCiAgICAgbV9jYWxsYmFja0hhbmRs
ZXJzQWZ0ZXJQcm9jZXNzaW5nUGVuZGluZ01vdXNlRXZlbnRzLmNsZWFyKCk7CiB9CiAKK3ZvaWQg
V2ViUGFnZVByb3h5OjpkaXNwYXRjaFdoZWVsRXZlbnRXaXRob3V0U2Nyb2xsaW5nKGNvbnN0IFdl
YldoZWVsRXZlbnQmIGV2ZW50LCBib29sIGlzRmlyc3RFdmVudEluR2VzdHVyZSwgYm9vbCBoYXNO
b25QYXNzaXZlV2hlZWxIYW5kbGVycywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBj
b21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBzZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6Oldl
YlBhZ2U6OkRpc3BhdGNoV2hlZWxFdmVudFdpdGhvdXRTY3JvbGxpbmcoZXZlbnQsIGlzRmlyc3RF
dmVudEluR2VzdHVyZSwgaGFzTm9uUGFzc2l2ZVdoZWVsSGFuZGxlcnMpLCBXVEZNb3ZlKGNvbXBs
ZXRpb25IYW5kbGVyKSk7Cit9CisKIHZvaWQgV2ViUGFnZVByb3h5OjpoYW5kbGVXaGVlbEV2ZW50
KGNvbnN0IE5hdGl2ZVdlYldoZWVsRXZlbnQmIGV2ZW50KQogewogI2lmIEVOQUJMRShBU1lOQ19T
Q1JPTExJTkcpICYmIFBMQVRGT1JNKENPQ09BKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViUGFnZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdl
UHJveHkuaAppbmRleCA5OGU4NjM2ZThlYjYwY2Q0YTA0YmIwOGE4ZjlmMTBiZjc5OWIyYjdlLi5l
NjM2YzRmMjVhN2MxZGEzOGRhOTIxMDgzYmY1ZjMyNDdmMjYzMTBiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJQYWdlUHJveHkuaApAQCAtMTgzNSw2ICsxODM1LDggQEAgcHVibGljOgogICAg
IHZvaWQgY3JlYXRlQXBwSGlnaGxpZ2h0SW5TZWxlY3RlZFJhbmdlKENyZWF0ZU5ld0dyb3VwRm9y
SGlnaGxpZ2h0KTsKICNlbmRpZgogCisgICAgdm9pZCBkaXNwYXRjaFdoZWVsRXZlbnRXaXRob3V0
U2Nyb2xsaW5nKGNvbnN0IFdlYldoZWVsRXZlbnQmLCBib29sIGlzRmlyc3RFdmVudEluR2VzdHVy
ZSwgYm9vbCBoYXNOb25QYXNzaXZlV2hlZWxIYW5kbGVycywgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChib29sKT4mJik7CisKIHByaXZhdGU6CiAgICAgV2ViUGFnZVByb3h5KFBhZ2VDbGllbnQmLCBX
ZWJQcm9jZXNzUHJveHkmLCBSZWY8QVBJOjpQYWdlQ29uZmlndXJhdGlvbj4mJik7CiAgICAgdm9p
ZCBwbGF0Zm9ybUluaXRpYWxpemUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9z
L1BhZ2VDbGllbnRJbXBsSU9TLmgKaW5kZXggYmUwMzAxZmI3Y2IxOGJhYzdjZGUzOTBlZDNjZjFh
ODU1NWI5OGQ3ZC4uMDUxZTZlZWI2OWE3NjFjMmU1OTdmMjY3MGRhYThjNzY1ZjE1ZWNhNyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLmgK
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLmgKQEAg
LTI3MSw2ICsyNzEsOCBAQCBwcml2YXRlOgogCiAgICAgdm9pZCBzaG93RGljdGF0aW9uQWx0ZXJu
YXRpdmVVSShjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmLCBXZWJDb3JlOjpEaWN0YXRpb25Db250
ZXh0KSBmaW5hbDsKIAorICAgIHZvaWQgaGFuZGxlQXN5bmNocm9ub3VzUHJldmVudGFibGVTY3Jv
bGxFdmVudChVSVNjcm9sbFZpZXcgKiwgVUlTY3JvbGxFdmVudCAqLCB2b2lkICheY29tcGxldGlv
bikoQk9PTCBoYW5kbGVkKSkgZmluYWw7CisKICAgICBXZWFrT2JqQ1B0cjxXS0NvbnRlbnRWaWV3
PiBtX2NvbnRlbnRWaWV3OwogICAgIFJldGFpblB0cjxXS0VkaXRvclVuZG9UYXJnZXQ+IG1fdW5k
b1RhcmdldDsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvUGFn
ZUNsaWVudEltcGxJT1MubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvUGFnZUNsaWVu
dEltcGxJT1MubW0KaW5kZXggYjZhYjk2MmI3MzM0MzkyMzJiZjdkZDkyYzk2YTZiMjEyYzFhODZk
Mi4uMDE2ZDc1N2RmNTliNDExYjI2ZTVlYTM0ZGM4MjZiNmQwNDA5YmEzNCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLm1tCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5tbQpAQCAtOTYxLDYg
Kzk2MSwxMSBAQCB2b2lkIFBhZ2VDbGllbnRJbXBsOjpzZXRNb3VzZUV2ZW50UG9saWN5KFdlYkNv
cmU6Ok1vdXNlRXZlbnRQb2xpY3kgcG9saWN5KQogI2VuZGlmCiB9CiAKK3ZvaWQgUGFnZUNsaWVu
dEltcGw6OmhhbmRsZUFzeW5jaHJvbm91c1ByZXZlbnRhYmxlU2Nyb2xsRXZlbnQoVUlTY3JvbGxW
aWV3ICpzY3JvbGxWaWV3LCBVSVNjcm9sbEV2ZW50ICpzY3JvbGxFdmVudCwgdm9pZCAoXmNvbXBs
ZXRpb24pKEJPT0wgaGFuZGxlZCkpCit7CisgICAgW21fd2ViVmlldyBfc2Nyb2xsVmlldzpzY3Jv
bGxWaWV3IGFzeW5jaHJvbm91c2x5SGFuZGxlU2Nyb2xsRXZlbnQ6c2Nyb2xsRXZlbnQgY29tcGxl
dGlvbjpjb21wbGV0aW9uXTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKICNlbmRpZiAv
LyBQTEFURk9STShJT1NfRkFNSUxZKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFn
ZS9XZWJQYWdlLmNwcAppbmRleCBjNDQ2MzhmZWQ3YmQzOGQ2MWU5NjZjY2ZlMDM0MTI2MzQ2NDI2
Y2ZiLi5mN2FkOTJkN2Q5MTk2ZjkwM2FhNTcxNjhiZjk1MzJiZGFlMWE0ZTE4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcApAQCAtMjg2NCw3ICsyODY0
LDcgQEAgc3RhdGljIGJvb2wgaGFuZGxlV2hlZWxFdmVudChjb25zdCBXZWJXaGVlbEV2ZW50JiB3
aGVlbEV2ZW50LCBQYWdlKiBwYWdlLCBPcHRpb24KICAgICByZXR1cm4gcGFnZS0+dXNlcklucHV0
QnJpZGdlKCkuaGFuZGxlV2hlZWxFdmVudChwbGF0Zm9ybVdoZWVsRXZlbnQsIHByb2Nlc3NpbmdT
dGVwcyk7CiB9CiAKLXZvaWQgV2ViUGFnZTo6d2hlZWxFdmVudChjb25zdCBXZWJXaGVlbEV2ZW50
JiB3aGVlbEV2ZW50LCBPcHRpb25TZXQ8V2hlZWxFdmVudFByb2Nlc3NpbmdTdGVwcz4gcHJvY2Vz
c2luZ1N0ZXBzKQorYm9vbCBXZWJQYWdlOjp3aGVlbEV2ZW50KGNvbnN0IFdlYldoZWVsRXZlbnQm
IHdoZWVsRXZlbnQsIE9wdGlvblNldDxXaGVlbEV2ZW50UHJvY2Vzc2luZ1N0ZXBzPiBwcm9jZXNz
aW5nU3RlcHMpCiB7CiAgICAgbV91c2VyQWN0aXZpdHkuaW1wdWxzZSgpOwogCkBAIC0yODc0LDYg
KzI4NzQsMjIgQEAgdm9pZCBXZWJQYWdlOjp3aGVlbEV2ZW50KGNvbnN0IFdlYldoZWVsRXZlbnQm
IHdoZWVsRXZlbnQsIE9wdGlvblNldDxXaGVlbEV2ZW50UHIKIAogICAgIGlmIChwcm9jZXNzaW5n
U3RlcHMuY29udGFpbnMoV2hlZWxFdmVudFByb2Nlc3NpbmdTdGVwczo6TWFpblRocmVhZEZvclNj
cm9sbGluZykpCiAgICAgICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGlkUmVjZWl2
ZUV2ZW50KHN0YXRpY19jYXN0PHVpbnQzMl90Pih3aGVlbEV2ZW50LnR5cGUoKSksIGhhbmRsZWQp
KTsKKworICAgIHJldHVybiBoYW5kbGVkOworfQorCit2b2lkIFdlYlBhZ2U6OmRpc3BhdGNoV2hl
ZWxFdmVudFdpdGhvdXRTY3JvbGxpbmcoY29uc3QgV2ViV2hlZWxFdmVudCYgd2hlZWxFdmVudCwg
Ym9vbCBpc0ZpcnN0RXZlbnRJbkdlc3R1cmUsIGJvb2wgaGFzTm9uUGFzc2l2ZVdoZWVsSGFuZGxl
cnMsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7
CisgICAgaWYgKGlzRmlyc3RFdmVudEluR2VzdHVyZSkKKyAgICAgICAgbV9jdXJyZW50U2Nyb2xs
R2VzdHVyZVdhc0luaXRpYWxseVByZXZlbnRlZCA9IFdURjo6bnVsbG9wdDsKKworICAgIGJvb2wg
aXNQcmV2ZW50YWJsZSA9IGhhc05vblBhc3NpdmVXaGVlbEhhbmRsZXJzICYmIG1fY3VycmVudFNj
cm9sbEdlc3R1cmVXYXNJbml0aWFsbHlQcmV2ZW50ZWQudmFsdWVPcihpc0ZpcnN0RXZlbnRJbkdl
c3R1cmUpOworICAgIGJvb2wgaGFuZGxlZCA9IHRoaXMtPndoZWVsRXZlbnQod2hlZWxFdmVudCwg
eyBpc1ByZXZlbnRhYmxlID8gV2hlZWxFdmVudFByb2Nlc3NpbmdTdGVwczo6TWFpblRocmVhZEZv
ckJsb2NraW5nRE9NRXZlbnREaXNwYXRjaCA6IFdoZWVsRXZlbnRQcm9jZXNzaW5nU3RlcHM6Ok1h
aW5UaHJlYWRGb3JOb25CbG9ja2luZ0RPTUV2ZW50RGlzcGF0Y2ggfSk7CisKKyAgICBpZiAoIW1f
Y3VycmVudFNjcm9sbEdlc3R1cmVXYXNJbml0aWFsbHlQcmV2ZW50ZWQpCisgICAgICAgIG1fY3Vy
cmVudFNjcm9sbEdlc3R1cmVXYXNJbml0aWFsbHlQcmV2ZW50ZWQgPSBpc1ByZXZlbnRhYmxlID8g
aGFuZGxlZCA6IGZhbHNlOworCisgICAgY29tcGxldGlvbkhhbmRsZXIoaGFuZGxlZCk7CiB9CiAK
IHN0YXRpYyBib29sIGhhbmRsZUtleUV2ZW50KGNvbnN0IFdlYktleWJvYXJkRXZlbnQmIGtleWJv
YXJkRXZlbnQsIFBhZ2UqIHBhZ2UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUGFnZS9XZWJQYWdlLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJQYWdlLmgKaW5kZXggZTA0ZTNhOGIyZDE3OGNjODQ5NWQ0NWJhZjgxZjM3ZGFlZmJiN2I3MC4u
MjA4Zjc1ZDRlMTE0YmJmMzJkYWUzYjAxZmE5MThjNTFjNGZmNDI5OCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaApAQCAtMTAxMyw3ICsxMDEzLDcgQEAgcHVi
bGljOgogICAgIHZvaWQgY29udGV4dE1lbnVTaG93aW5nKCkgeyBtX2lzU2hvd2luZ0NvbnRleHRN
ZW51ID0gdHJ1ZTsgfQogI2VuZGlmCiAKLSAgICB2b2lkIHdoZWVsRXZlbnQoY29uc3QgV2ViV2hl
ZWxFdmVudCYsIE9wdGlvblNldDxXZWJDb3JlOjpXaGVlbEV2ZW50UHJvY2Vzc2luZ1N0ZXBzPik7
CisgICAgYm9vbCB3aGVlbEV2ZW50KGNvbnN0IFdlYldoZWVsRXZlbnQmLCBPcHRpb25TZXQ8V2Vi
Q29yZTo6V2hlZWxFdmVudFByb2Nlc3NpbmdTdGVwcz4pOwogCiAgICAgdm9pZCB3aGVlbEV2ZW50
SGFuZGxlcnNDaGFuZ2VkKGJvb2wpOwogICAgIHZvaWQgcmVjb21wdXRlU2hvcnRDaXJjdWl0SG9y
aXpvbnRhbFdoZWVsRXZlbnRzU3RhdGUoKTsKQEAgLTEzNzEsNiArMTM3MSw4IEBAIHB1YmxpYzoK
ICAgICBib29sIGNyZWF0ZUFwcEhpZ2hsaWdodEluU2VsZWN0ZWRSYW5nZShDcmVhdGVOZXdHcm91
cEZvckhpZ2hsaWdodCk7CiAjZW5kaWYKIAorICAgIHZvaWQgZGlzcGF0Y2hXaGVlbEV2ZW50V2l0
aG91dFNjcm9sbGluZyhjb25zdCBXZWJXaGVlbEV2ZW50JiwgYm9vbCBpc0ZpcnN0RXZlbnRJbkdl
c3R1cmUsIGJvb2wgaGFzTm9uUGFzc2l2ZVdoZWVsSGFuZGxlcnMsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoYm9vbCk+JiYpOworCiBwcml2YXRlOgogICAgIFdlYlBhZ2UoV2ViQ29yZTo6UGFnZUlk
ZW50aWZpZXIsIFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMmJik7CiAKQEAgLTIxODEsNiArMjE4
Myw4IEBAIHByaXZhdGU6CiAjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKQogICAgIHN0ZDo6dW5pcXVl
X3B0cjxSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk+IG1fcmVtb3RlUmVuZGVyaW5nQmFja2Vu
ZFByb3h5OwogI2VuZGlmCisKKyAgICBPcHRpb25hbDxib29sPiBtX2N1cnJlbnRTY3JvbGxHZXN0
dXJlV2FzSW5pdGlhbGx5UHJldmVudGVkOwogfTsKIAogI2lmICFQTEFURk9STShJT1NfRkFNSUxZ
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5t
ZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVz
c2FnZXMuaW4KaW5kZXggODY0YzZlODE5YWM2OWMyMDFhZjQ2ZmQ1MGM2YWUyZDY1Zjg0Y2NmOS4u
ZjA4Y2FhMGVkMWNhODFiMmI3MzNmZTE3YjU4ZmIxYjhiYTUzM2Q1YiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgorKysgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCkBAIC02
MjEsNCArNjIxLDUgQEAgR2VuZXJhdGVTeW50aGV0aWNFZGl0aW5nQ29tbWFuZChlbnVtOnVpbnQ4
X3QgV2ViS2l0OjpTeW50aGV0aWNFZGl0aW5nQ29tbWFuZFR5cGUKICAgICBDcmVhdGVBcHBIaWdo
bGlnaHRJblNlbGVjdGVkUmFuZ2UoZW51bTpib29sIFdlYktpdDo6Q3JlYXRlTmV3R3JvdXBGb3JI
aWdobGlnaHQgY3JlYXRlTmV3R3JvdXApCiAjZW5kaWYKIAorICAgIERpc3BhdGNoV2hlZWxFdmVu
dFdpdGhvdXRTY3JvbGxpbmcoV2ViS2l0OjpXZWJXaGVlbEV2ZW50IGV2ZW50LCBib29sIGlzRmly
c3RFdmVudEluR2VzdHVyZSwgYm9vbCBoYXNOb25QYXNzaXZlV2hlZWxIYW5kbGVycykgLT4gKGJv
b2wgaGFuZGxlZCkgQXN5bmMKIH0KZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xz
L0NoYW5nZUxvZwppbmRleCA0MDQ1NTdlYzRkN2QyZThmNWUwMGM3NjAzZTkzODdjY2NkYWE2ZjNh
Li5hYWU4NDdkZTJiN2NjYzhjYjc5ODI1NDVjNDM0NDk0OTdjZjY3YmQwIDEwMDY0NAotLS0gYS9U
b29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjIgQEAKKzIw
MjAtMTItMTAgIFRpbSBIb3J0b24gIDx0aW1vdGh5X2hvcnRvbkBhcHBsZS5jb20+CisKKyAgICAg
ICAgVHJhY2twYWQgYW5kIE1vdXNlIHNjcm9sbCBldmVudHMgb24gaVBhZCBvbmx5IGZpcmUgInBv
aW50ZXJtb3ZlIiAtLSBub3QgIndoZWVsIgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MjEwMDcxCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS81NDYxNjg1
Mz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFRl
c3RXZWJLaXRBUEkvVGVzdHMvaW9zL1dLU2Nyb2xsVmlld1Rlc3RzLm1tOgorICAgICAgICAoLVtX
S1VJU2Nyb2xsRXZlbnQgaW5pdFdpdGhQaGFzZTpsb2NhdGlvbjpkZWx0YTpdKToKKyAgICAgICAg
KC1bV0tVSVNjcm9sbEV2ZW50IHBoYXNlXSk6CisgICAgICAgICgtW1dLVUlTY3JvbGxFdmVudCBs
b2NhdGlvbkluVmlldzpdKToKKyAgICAgICAgKC1bV0tVSVNjcm9sbEV2ZW50IF9hZGp1c3RlZEFj
Y2VsZXJhdGVkRGVsdGFJblZpZXc6XSk6CisgICAgICAgIChURVNUKToKKyAgICAgICAgKiBUZXN0
V2ViS2l0QVBJL2lvcy9VSUtpdFNQSS5oOgorICAgICAgICBBZGQgYSB2ZXJ5IHNpbXBsZSB0ZXN0
IHRoYXQgZGlyZWN0bHkgY2FsbHMgdGhlIG5ldyBVSVNjcm9sbFZpZXdEZWxlZ2F0ZSBTUEkKKyAg
ICAgICAgYW5kIHZlcmlmaWVzIHRoYXQgb25seSB0aGUgZmlyc3QgZXZlbnQgaXMgcHJldmVudGFi
bGUgKHVubGVzcyB0aGUgZmlyc3QgZXZlbnQKKyAgICAgICAgaXMgcHJldmVudGVkLCBpbiB3aGlj
aCBjYXNlIGFsbCBzdWJzZXF1ZW50IGV2ZW50cyBhcmUgcHJldmVudGFibGUpLgorCiAyMDIwLTEy
LTAzICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CiAKICAgICAg
ICAgSW50cm9kdWNlIG5ldyBkb3dubG9hZCBTUEkKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvaW9zL1dLU2Nyb2xsVmlld1Rlc3RzLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9pb3MvV0tTY3JvbGxWaWV3VGVzdHMubW0KaW5kZXggMGUyYTFjOWVjNTE5YzdkZGRh
NTZhMTlhYjRhMDE1NzhkNTBlNWVkNi4uMDNkNmFiZDhiNjNjMDhkNjE2NTc3M2Q0M2IwMWZjNWMy
MjcxMjAzNCAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9pb3MvV0tTY3Jv
bGxWaWV3VGVzdHMubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9pb3MvV0tTY3Jv
bGxWaWV3VGVzdHMubW0KQEAgLTI5LDggKzI5LDUzIEBACiAKICNpbXBvcnQgIlBsYXRmb3JtVXRp
bGl0aWVzLmgiCiAjaW1wb3J0ICJUZXN0V0tXZWJWaWV3LmgiCisjaW1wb3J0ICJVSUtpdFNQSS5o
IgogI2ltcG9ydCA8V2ViS2l0L1dLV2ViVmlld1ByaXZhdGUuaD4KIAorI2lmIEhBVkUoVUlTQ1JP
TExWSUVXX0FTWU5DSFJPTk9VU19TQ1JPTExfRVZFTlRfSEFORExJTkcpCitAaW50ZXJmYWNlIFdL
VUlTY3JvbGxFdmVudCA6IFVJU2Nyb2xsRXZlbnQKKworLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRo
UGhhc2U6KFVJU2Nyb2xsUGhhc2UpcGhhc2UgbG9jYXRpb246KENHUG9pbnQpbG9jYXRpb24gZGVs
dGE6KENHVmVjdG9yKWRlbHRhOworCitAZW5kCisKK0BpbXBsZW1lbnRhdGlvbiBXS1VJU2Nyb2xs
RXZlbnQgeworICAgIFVJU2Nyb2xsUGhhc2UgX3BoYXNlOworICAgIENHUG9pbnQgX2xvY2F0aW9u
OworICAgIENHVmVjdG9yIF9kZWx0YTsKK30KKworLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoUGhh
c2U6KFVJU2Nyb2xsUGhhc2UpcGhhc2UgbG9jYXRpb246KENHUG9pbnQpbG9jYXRpb24gZGVsdGE6
KENHVmVjdG9yKWRlbHRhCit7CisgICAgc2VsZiA9IFtzdXBlciBpbml0XTsKKyAgICBpZiAoIXNl
bGYpCisgICAgICAgIHJldHVybiBuaWw7CisKKyAgICBfcGhhc2UgPSBwaGFzZTsKKyAgICBfbG9j
YXRpb24gPSBsb2NhdGlvbjsKKyAgICBfZGVsdGEgPSBkZWx0YTsKKworICAgIHJldHVybiBzZWxm
OworfQorCistIChVSVNjcm9sbFBoYXNlKXBoYXNlCit7CisgICAgcmV0dXJuIF9waGFzZTsKK30K
KworLSAoQ0dQb2ludClsb2NhdGlvbkluVmlldzooVUlWaWV3ICopdmlldworeworICAgIHJldHVy
biBfbG9jYXRpb247Cit9CisKKy0gKENHVmVjdG9yKV9hZGp1c3RlZEFjY2VsZXJhdGVkRGVsdGFJ
blZpZXc6KFVJVmlldyAqKXZpZXcKK3sKKyAgICByZXR1cm4gX2RlbHRhOworfQorCitAZW5kCisj
ZW5kaWYgLy8gSEFWRShVSVNDUk9MTFZJRVdfQVNZTkNIUk9OT1VTX1NDUk9MTF9FVkVOVF9IQU5E
TElORykKKwogc3RhdGljIHZvaWQgdHJhdmVyc2VMYXllclRyZWUoQ0FMYXllciAqbGF5ZXIsIHZv
aWQoXmJsb2NrKShDQUxheWVyICopKQogewogICAgIGZvciAoQ0FMYXllciAqY2hpbGQgaW4gbGF5
ZXIuc3VibGF5ZXJzKQpAQCAtNzEsNCArMTE2LDg2IEBAIFRFU1QoV0tTY3JvbGxWaWV3VGVzdHMs
IFBvc2l0aW9uRml4ZWRMYXllckFmdGVyU2Nyb2xsaW5nKQogICAgIEVYUEVDVF9UUlVFKGZvdW5k
TGF5ZXJGb3JGaXhlZE5hdmlnYXRpb25CYXIpOwogfQogCisjaWYgSEFWRShVSVNDUk9MTFZJRVdf
QVNZTkNIUk9OT1VTX1NDUk9MTF9FVkVOVF9IQU5ETElORykKK1RFU1QoV0tTY3JvbGxWaWV3VGVz
dHMsIEFzeW5jaHJvbm91c1doZWVsRXZlbnRIYW5kbGluZykKK3sKKyAgICBhdXRvIHdlYlZpZXcg
PSBhZG9wdE5TKFtbVGVzdFdLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpDR1JlY3RNYWtl
KDAsIDAsIDMyMCwgNTAwKV0pOworICAgIFt3ZWJWaWV3IHN5bmNocm9ub3VzbHlMb2FkSFRNTFN0
cmluZzpAIiIKKyAgICAgICAgIjxzdHlsZT4jc2Nyb2xsYWJsZSB7IHdpZHRoOiAyMDBweDsgaGVp
Z2h0OiAyMDBweDsgfTwvc3R5bGU+IgorICAgICAgICAiPGRpdiBpZD0nc2Nyb2xsYWJsZSc+PC9k
aXY+IgorICAgICAgICAiPHNjcmlwdD53aW5kb3cucHJldmVudERlZmF1bHRPblNjcm9sbEV2ZW50
cyA9IGZhbHNlOyIKKyAgICAgICAgImRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdzY3JvbGxhYmxl
JykuYWRkRXZlbnRMaXN0ZW5lcignd2hlZWwnLCAiCisgICAgICAgICJmdW5jdGlvbiAoZSkgeyIK
KyAgICAgICAgIiAgIHdpbmRvdy5sYXN0V2hlZWxFdmVudCA9IGU7IgorICAgICAgICAiICAgaWYg
KHdpbmRvdy5wcmV2ZW50RGVmYXVsdE9uU2Nyb2xsRXZlbnRzKSIKKyAgICAgICAgIiAgICAgICBl
LnByZXZlbnREZWZhdWx0KCk7IgorICAgICAgICAifSk8L3NjcmlwdD4iXTsKKyAgICBbd2ViVmll
dyB3YWl0Rm9yTmV4dFByZXNlbnRhdGlvblVwZGF0ZV07CisKKyAgICBfX2Jsb2NrIGJvb2wgZG9u
ZTsKKyAgICBfX2Jsb2NrIGJvb2wgd2FzSGFuZGxlZDsKKworICAgIGF1dG8gc3luY2hyb25vdXNs
eUhhbmRsZVNjcm9sbEV2ZW50ID0gXihVSVNjcm9sbFBoYXNlIHBoYXNlLCBDR1BvaW50IGxvY2F0
aW9uLCBDR1ZlY3RvciBkZWx0YSkgeworICAgICAgICBkb25lID0gZmFsc2U7CisgICAgICAgIGF1
dG8gZXZlbnQgPSBhZG9wdE5TKFtbV0tVSVNjcm9sbEV2ZW50IGFsbG9jXSBpbml0V2l0aFBoYXNl
OnBoYXNlIGxvY2F0aW9uOmxvY2F0aW9uIGRlbHRhOmRlbHRhXSk7CisgICAgICAgIFt3ZWJWaWV3
IF9zY3JvbGxWaWV3Olt3ZWJWaWV3IHNjcm9sbFZpZXddIGFzeW5jaHJvbm91c2x5SGFuZGxlU2Ny
b2xsRXZlbnQ6ZXZlbnQuZ2V0KCkgY29tcGxldGlvbjpeKEJPT0wgaGFuZGxlZCkgeworICAgICAg
ICAgICAgd2FzSGFuZGxlZCA9IGhhbmRsZWQ7CisgICAgICAgICAgICBkb25lID0gdHJ1ZTsKKyAg
ICAgICAgfV07CisgICAgICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmZG9uZSk7CisgICAg
fTsKKworICAgIC8vIERvbid0IHByZXZlbnREZWZhdWx0KCkgYXQgYWxsLgorICAgIHN5bmNocm9u
b3VzbHlIYW5kbGVTY3JvbGxFdmVudChVSVNjcm9sbFBoYXNlTWF5QmVnaW4sIENHUG9pbnRNYWtl
KDEwMCwgMTAwKSwgQ0dWZWN0b3JNYWtlKDAsIDApKTsKKyAgICBFWFBFQ1RfRkFMU0Uod2FzSGFu
ZGxlZCk7CisgICAgc3luY2hyb25vdXNseUhhbmRsZVNjcm9sbEV2ZW50KFVJU2Nyb2xsUGhhc2VC
ZWdhbiwgQ0dQb2ludE1ha2UoMTAwLCAxMDApLCBDR1ZlY3Rvck1ha2UoMCwgMTApKTsKKyAgICBF
WFBFQ1RfRkFMU0Uod2FzSGFuZGxlZCk7CisgICAgRVhQRUNUX1RSVUUoW1t3ZWJWaWV3IG9iamVj
dEJ5RXZhbHVhdGluZ0phdmFTY3JpcHQ6QCJ3aW5kb3cubGFzdFdoZWVsRXZlbnQuY2FuY2VsYWJs
ZSJdIGludFZhbHVlXSk7CisgICAgRVhQRUNUX0VRKC0xMCwgW1t3ZWJWaWV3IG9iamVjdEJ5RXZh
bHVhdGluZ0phdmFTY3JpcHQ6QCJ3aW5kb3cubGFzdFdoZWVsRXZlbnQuZGVsdGFZIl0gaW50VmFs
dWVdKTsKKyAgICBzeW5jaHJvbm91c2x5SGFuZGxlU2Nyb2xsRXZlbnQoVUlTY3JvbGxQaGFzZUNo
YW5nZWQsIENHUG9pbnRNYWtlKDEwMCwgMTAwKSwgQ0dWZWN0b3JNYWtlKDAsIDEwKSk7CisgICAg
RVhQRUNUX0ZBTFNFKHdhc0hhbmRsZWQpOworICAgIHN5bmNocm9ub3VzbHlIYW5kbGVTY3JvbGxF
dmVudChVSVNjcm9sbFBoYXNlRW5kZWQsIENHUG9pbnRNYWtlKDEwMCwgMTAwKSwgQ0dWZWN0b3JN
YWtlKDAsIDApKTsKKyAgICBFWFBFQ1RfRkFMU0Uod2FzSGFuZGxlZCk7CisKKyAgICAvLyBwcmV2
ZW50RGVmYXVsdCgpIG9uIGFsbCBldmVudHMuCisgICAgW3dlYlZpZXcgc3RyaW5nQnlFdmFsdWF0
aW5nSmF2YVNjcmlwdDpAIndpbmRvdy5wcmV2ZW50RGVmYXVsdE9uU2Nyb2xsRXZlbnRzID0gdHJ1
ZTsiXTsKKyAgICBzeW5jaHJvbm91c2x5SGFuZGxlU2Nyb2xsRXZlbnQoVUlTY3JvbGxQaGFzZU1h
eUJlZ2luLCBDR1BvaW50TWFrZSgxMDAsIDEwMCksIENHVmVjdG9yTWFrZSgwLCAwKSk7CisgICAg
RVhQRUNUX0ZBTFNFKHdhc0hhbmRsZWQpOworICAgIHN5bmNocm9ub3VzbHlIYW5kbGVTY3JvbGxF
dmVudChVSVNjcm9sbFBoYXNlQmVnYW4sIENHUG9pbnRNYWtlKDEwMCwgMTAwKSwgQ0dWZWN0b3JN
YWtlKDAsIDEwKSk7CisgICAgRVhQRUNUX1RSVUUod2FzSGFuZGxlZCk7CisgICAgc3luY2hyb25v
dXNseUhhbmRsZVNjcm9sbEV2ZW50KFVJU2Nyb2xsUGhhc2VDaGFuZ2VkLCBDR1BvaW50TWFrZSgx
MDAsIDEwMCksIENHVmVjdG9yTWFrZSgwLCAxMCkpOworICAgIEVYUEVDVF9UUlVFKHdhc0hhbmRs
ZWQpOworICAgIHN5bmNocm9ub3VzbHlIYW5kbGVTY3JvbGxFdmVudChVSVNjcm9sbFBoYXNlRW5k
ZWQsIENHUG9pbnRNYWtlKDEwMCwgMTAwKSwgQ0dWZWN0b3JNYWtlKDAsIDApKTsKKyAgICBFWFBF
Q1RfRkFMU0Uod2FzSGFuZGxlZCk7CisKKyAgICAvLyBwcmV2ZW50RGVmYXVsdCgpIG9uIGFsbCBi
dXQgdGhlIGJlZ2luIGV2ZW50OyBpdCB3aWxsIGJlIGlnbm9yZWQuCisgICAgW3dlYlZpZXcgc3Ry
aW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpAIndpbmRvdy5wcmV2ZW50RGVmYXVsdE9uU2Nyb2xs
RXZlbnRzID0gZmFsc2U7Il07CisgICAgc3luY2hyb25vdXNseUhhbmRsZVNjcm9sbEV2ZW50KFVJ
U2Nyb2xsUGhhc2VNYXlCZWdpbiwgQ0dQb2ludE1ha2UoMTAwLCAxMDApLCBDR1ZlY3Rvck1ha2Uo
MCwgMCkpOworICAgIEVYUEVDVF9GQUxTRSh3YXNIYW5kbGVkKTsKKyAgICBzeW5jaHJvbm91c2x5
SGFuZGxlU2Nyb2xsRXZlbnQoVUlTY3JvbGxQaGFzZUJlZ2FuLCBDR1BvaW50TWFrZSgxMDAsIDEw
MCksIENHVmVjdG9yTWFrZSgwLCAxMCkpOworICAgIEVYUEVDVF9UUlVFKFtbd2ViVmlldyBvYmpl
Y3RCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OkAid2luZG93Lmxhc3RXaGVlbEV2ZW50LmNhbmNlbGFi
bGUiXSBpbnRWYWx1ZV0pOworICAgIEVYUEVDVF9GQUxTRSh3YXNIYW5kbGVkKTsKKyAgICBbd2Vi
VmlldyBzdHJpbmdCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OkAid2luZG93LnByZXZlbnREZWZhdWx0
T25TY3JvbGxFdmVudHMgPSB0cnVlOyJdOworICAgIHN5bmNocm9ub3VzbHlIYW5kbGVTY3JvbGxF
dmVudChVSVNjcm9sbFBoYXNlQ2hhbmdlZCwgQ0dQb2ludE1ha2UoMTAwLCAxMDApLCBDR1ZlY3Rv
ck1ha2UoMCwgMTApKTsKKyAgICBFWFBFQ1RfRkFMU0Uod2FzSGFuZGxlZCk7CisgICAgRVhQRUNU
X0ZBTFNFKFtbd2ViVmlldyBvYmplY3RCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OkAid2luZG93Lmxh
c3RXaGVlbEV2ZW50LmNhbmNlbGFibGUiXSBpbnRWYWx1ZV0pOworICAgIHN5bmNocm9ub3VzbHlI
YW5kbGVTY3JvbGxFdmVudChVSVNjcm9sbFBoYXNlRW5kZWQsIENHUG9pbnRNYWtlKDEwMCwgMTAw
KSwgQ0dWZWN0b3JNYWtlKDAsIDApKTsKKyAgICBFWFBFQ1RfRkFMU0Uod2FzSGFuZGxlZCk7CisK
KyAgICAvLyBwcmV2ZW50RGVmYXVsdCgpIG9uIHRoZSBiZWdpbiBldmVudCwgYW5kIHNvbWUgc3Vi
c2VxdWVudCBldmVudHMuCisgICAgW3dlYlZpZXcgc3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlw
dDpAIndpbmRvdy5wcmV2ZW50RGVmYXVsdE9uU2Nyb2xsRXZlbnRzID0gdHJ1ZTsiXTsKKyAgICBz
eW5jaHJvbm91c2x5SGFuZGxlU2Nyb2xsRXZlbnQoVUlTY3JvbGxQaGFzZU1heUJlZ2luLCBDR1Bv
aW50TWFrZSgxMDAsIDEwMCksIENHVmVjdG9yTWFrZSgwLCAwKSk7CisgICAgRVhQRUNUX0ZBTFNF
KHdhc0hhbmRsZWQpOworICAgIHN5bmNocm9ub3VzbHlIYW5kbGVTY3JvbGxFdmVudChVSVNjcm9s
bFBoYXNlQmVnYW4sIENHUG9pbnRNYWtlKDEwMCwgMTAwKSwgQ0dWZWN0b3JNYWtlKDAsIDEwKSk7
CisgICAgRVhQRUNUX1RSVUUod2FzSGFuZGxlZCk7CisgICAgc3luY2hyb25vdXNseUhhbmRsZVNj
cm9sbEV2ZW50KFVJU2Nyb2xsUGhhc2VDaGFuZ2VkLCBDR1BvaW50TWFrZSgxMDAsIDEwMCksIENH
VmVjdG9yTWFrZSgwLCAxMCkpOworICAgIEVYUEVDVF9UUlVFKHdhc0hhbmRsZWQpOworICAgIFt3
ZWJWaWV3IHN0cmluZ0J5RXZhbHVhdGluZ0phdmFTY3JpcHQ6QCJ3aW5kb3cucHJldmVudERlZmF1
bHRPblNjcm9sbEV2ZW50cyA9IGZhbHNlOyJdOworICAgIHN5bmNocm9ub3VzbHlIYW5kbGVTY3Jv
bGxFdmVudChVSVNjcm9sbFBoYXNlQ2hhbmdlZCwgQ0dQb2ludE1ha2UoMTAwLCAxMDApLCBDR1Zl
Y3Rvck1ha2UoMCwgMTApKTsKKyAgICBFWFBFQ1RfRkFMU0Uod2FzSGFuZGxlZCk7CisgICAgc3lu
Y2hyb25vdXNseUhhbmRsZVNjcm9sbEV2ZW50KFVJU2Nyb2xsUGhhc2VFbmRlZCwgQ0dQb2ludE1h
a2UoMTAwLCAxMDApLCBDR1ZlY3Rvck1ha2UoMCwgMCkpOworICAgIEVYUEVDVF9GQUxTRSh3YXNI
YW5kbGVkKTsKK30KKyNlbmRpZiAvLyBIQVZFKFVJU0NST0xMVklFV19BU1lOQ0hST05PVVNfU0NS
T0xMX0VWRU5UX0hBTkRMSU5HKQorCiAjZW5kaWYgLy8gUExBVEZPUk0oSU9TX0ZBTUlMWSkKZGlm
ZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvaW9zL1VJS2l0U1BJLmggYi9Ub29scy9UZXN0
V2ViS2l0QVBJL2lvcy9VSUtpdFNQSS5oCmluZGV4IGRkNWFlY2VjOTA1NDI5YzlhMDI1YzUyYzEw
Zjc0NDU3OTJmODQ5MGYuLmI1M2VhNTYwZjg0YTdkYzI4ZTc0N2VlZmNlZTU1YTUzOGU2ZWRkMTkg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvaW9zL1VJS2l0U1BJLmgKKysrIGIvVG9v
bHMvVGVzdFdlYktpdEFQSS9pb3MvVUlLaXRTUEkuaApAQCAtMzcsNiArMzcsOCBAQAogI2ltcG9y
dCA8VUlLaXQvVUlLZXlib2FyZF9Qcml2YXRlLmg+CiAjaW1wb3J0IDxVSUtpdC9VSVJlc3BvbmRl
cl9Qcml2YXRlLmg+CiAjaW1wb3J0IDxVSUtpdC9VSVNjcmVlbl9Qcml2YXRlLmg+CisjaW1wb3J0
IDxVSUtpdC9VSVNjcm9sbEV2ZW50X1ByaXZhdGUuaD4KKyNpbXBvcnQgPFVJS2l0L1VJU2Nyb2xs
Vmlld19Gb3JXZWJLaXRPbmx5Lmg+CiAjaW1wb3J0IDxVSUtpdC9VSVNjcm9sbFZpZXdfUHJpdmF0
ZS5oPgogI2ltcG9ydCA8VUlLaXQvVUlUZXh0QXV0b2ZpbGxTdWdnZXN0aW9uLmg+CiAjaW1wb3J0
IDxVSUtpdC9VSVRleHRJbnB1dE11bHRpRG9jdW1lbnQuaD4KQEAgLTI0MCw2ICsyNDIsMTMgQEAg
SUdOT1JFX1dBUk5JTkdTX0VORAogQHByb3BlcnR5IChub25hdG9taWMsIGdldHRlcj1faXNBdXRv
bWF0aWNDb250ZW50T2Zmc2V0QWRqdXN0bWVudEVuYWJsZWQsIHNldHRlcj1fc2V0QXV0b21hdGlj
Q29udGVudE9mZnNldEFkanVzdG1lbnRFbmFibGVkOikgQk9PTCBpc0F1dG9tYXRpY0NvbnRlbnRP
ZmZzZXRBZGp1c3RtZW50RW5hYmxlZDsKIEBlbmQKIAorQGludGVyZmFjZSBVSVNjcm9sbEV2ZW50
IDogVUlFdmVudAorQGVuZAorCitAaW50ZXJmYWNlIE5TT2JqZWN0IChVSVNjcm9sbFZpZXdEZWxl
Z2F0ZV9Gb3JXZWJLaXRPbmx5KQorLSAodm9pZClfc2Nyb2xsVmlldzooVUlTY3JvbGxWaWV3ICop
c2Nyb2xsVmlldyBhc3luY2hyb25vdXNseUhhbmRsZVNjcm9sbEV2ZW50OihVSVNjcm9sbEV2ZW50
ICopc2Nyb2xsRXZlbnQgY29tcGxldGlvbjoodm9pZCAoXikoQk9PTCBoYW5kbGVkKSljb21wbGV0
aW9uOworQGVuZAorCiAjZW5kaWYgLy8gVVNFKEFQUExFX0lOVEVSTkFMX1NESykKIAogI2RlZmlu
ZSBVSVdLRG9jdW1lbnRSZXF1ZXN0TWFya2VkVGV4dFJlY3RzICgxIDw8IDUpCg==
</data>
<flag name="commit-queue"
          id="433177"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>415856</attachid>
            <date>2020-12-10 04:52:07 -0800</date>
            <delta_ts>2020-12-10 17:27:53 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-210071-20201210045206.patch</filename>
            <type>text/plain</type>
            <size>38926</size>
            <attacher name="Tim Horton">thorton</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcwNDM1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDMzZTNhZjVkNGY3MmUxNDlhYTYyNTBi
Y2M4YmNlODgxODhlNTM5OTEuLjkxMTBhNDU3MTdkOWEwNzQ5NmI0YTRmNGE5ZmYyMmU4MTI3YmQw
ZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMjAtMTItMTAgIFRpbSBIb3J0b24gIDx0aW1vdGh5
X2hvcnRvbkBhcHBsZS5jb20+CisKKyAgICAgICAgVHJhY2twYWQgYW5kIE1vdXNlIHNjcm9sbCBl
dmVudHMgb24gaVBhZCBvbmx5IGZpcmUgInBvaW50ZXJtb3ZlIiAtLSBub3QgIndoZWVsIgorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjEwMDcxCisgICAg
ICAgIDxyZGFyOi8vcHJvYmxlbS81NDYxNjg1Mz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICAqIHd0Zi9QbGF0Zm9ybUVuYWJsZUNvY29hLmg6CisgICAg
ICAgIEVuYWJsZSB3aGVlbCBldmVudCByZWdpb25zIG9uIGlPUyArIG1hY0NhdGFseXN0LgorCiAy
MDIwLTEyLTAzICBBZGFtIFJvYmVuICA8YXJvYmVuQGFwcGxlLmNvbT4KIAogICAgICAgICBBZG9w
dCBGQUxMQkFDS19QTEFURk9STQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9n
IGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDdhZTI4OTMwYjc0ZmJmZDczMDFkNjhm
OWIxYjBiY2Y3OGE4NmM5ZjcuLjI2MGFkY2Y1Y2Y1NGQ1Mzg1ZWU1ODQxNTE5YjExM2QzNGM5ZWVl
YWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMSBAQAorMjAyMC0xMi0xMCAgVGltIEhvcnRvbiAg
PHRpbW90aHlfaG9ydG9uQGFwcGxlLmNvbT4KKworICAgICAgICBUcmFja3BhZCBhbmQgTW91c2Ug
c2Nyb2xsIGV2ZW50cyBvbiBpUGFkIG9ubHkgZmlyZSAicG9pbnRlcm1vdmUiIC0tIG5vdCAid2hl
ZWwiCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTAw
NzEKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzU0NjE2ODUzPgorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogcGFnZS9FdmVudEhhbmRsZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjpoYW5kbGVXaGVlbEV2ZW50SW50ZXJuYWwp
OgorICAgICAgICBGaXggYSBtaW5vciBsb2dpYyBlcnJvciB3aGVuIFdIRUVMX0VWRU5UX0xBVENI
SU5HIGlzIG9mZjsgYWxsb3dTY3JvbGxpbmcKKyAgICAgICAgd291bGQgYWx3YXlzIGJlIHRydWUs
IGV2ZW4gaWYgdGhlIHNldCBvZiBwcm9jZXNzaW5nIHN0ZXBzIGRvZXMgbm90IGluY2x1ZGUgYW55
IHNjcm9sbGluZyBzdGVwcy4KKworICAgICAgICAqIHJlbmRlcmluZy9FdmVudFJlZ2lvbi5oOgor
ICAgICAgICAoV2ViQ29yZTo6RXZlbnRSZWdpb246OmVuY29kZSBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpFdmVudFJlZ2lvbjo6ZGVjb2RlKToKKyAgICAgICAgRW5jb2RlL2RlY29kZSB0aGUg
d2hlZWwgYW5kIHBhc3NpdmUgd2hlZWwgZXZlbnQgcmVnaW9ucy4KKwogMjAyMC0xMi0wNCAgUGVu
ZyBMaXUgIDxwZW5nLmxpdTZAYXBwbGUuY29tPgogCiAgICAgICAgIFtNU0VdIE1vdmUgdHJhY2sg
YnVmZmVyIG1hbmFnZW1lbnQgZnJvbSBTb3VyY2VCdWZmZXIgdG8gU291cmNlQnVmZmVyUHJpdmF0
ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZwppbmRleCA2M2YzNDI5MDgyM2IxYzQ4Yzc3MWEzYzRmMzg1MmNhMjIzNTNlNDRkLi44
NjBkYmMzYTk2MDBiZjM0MTlkZmUzOTJmOTAzODVmYTcyNjgwYWRmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDYxIEBACisyMDIwLTEyLTEwICBUaW0gSG9ydG9uICA8dGltb3RoeV9ob3J0b25AYXBwbGUu
Y29tPgorCisgICAgICAgIFRyYWNrcGFkIGFuZCBNb3VzZSBzY3JvbGwgZXZlbnRzIG9uIGlQYWQg
b25seSBmaXJlICJwb2ludGVybW92ZSIgLS0gbm90ICJ3aGVlbCIKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxMDA3MQorICAgICAgICA8cmRhcjovL3By
b2JsZW0vNTQ2MTY4NTM+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgKiBQbGF0Zm9ybS9zcGkvaW9zL1VJS2l0U1BJLmg6CisgICAgICAgIEFkZCBzb21l
IFNQSS4KKworICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3SW50ZXJuYWwu
aDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2lvcy9XS1dlYlZpZXdJT1MuaDoKKyAgICAgICAg
KiBVSVByb2Nlc3MvQVBJL2lvcy9XS1dlYlZpZXdJT1MubW06CisgICAgICAgICgtW1dLV2ViVmll
dyBfc2V0dXBTY3JvbGxBbmRDb250ZW50Vmlld3NdKToKKyAgICAgICAgRW5hYmxlIGFzeW5jIFVJ
U2Nyb2xsRXZlbnQgaGFuZGxpbmcgZm9yIFdLU2Nyb2xsVmlldy4KKworICAgICAgICAoLVtXS1dl
YlZpZXcgX3Njcm9sbFZpZXc6YXN5bmNocm9ub3VzbHlIYW5kbGVTY3JvbGxFdmVudDpjb21wbGV0
aW9uOl0pOgorICAgICAgICBBZG9wdCBuZXcgVUlLaXQgU1BJIHRvIGFzeW5jaHJvbm91c2x5IGRl
ZmVyIFVJU2Nyb2xsRXZlbnRzLgorICAgICAgICBXZSBwYXNzIHRoZW0gdG8gdGhlIFdlYiBDb250
ZW50IHByb2Nlc3MsIHdoZXJlIHRoZXkgYXJlIHByb2Nlc3NlZCAKKyAgICAgICAgKm9ubHkqIGZv
ciBldmVudCBoYW5kbGluZywgbm90IGZvciBzY3JvbGxpbmcuCisKKyAgICAgICAgSWYgdGhlIGV2
ZW50IGlzIG5vdCBwcmV2ZW50YWJsZSwgd2Ugd2lsbCBzeW5jaHJvbm91c2x5IHJlcGx5IHRoYXQg
aXQgd2FzCisgICAgICAgIG5vdCBoYW5kbGVkOyBpZiBpdCBpcyBwcmV2ZW50YWJsZSwgb3Igd2Ug
ZG9uJ3QgeWV0IGtub3cgaWYgaXQgd2lsbCBiZSwKKyAgICAgICAgd2UnbGwgd2FpdCB0byBoZWFy
IGJhY2sgZnJvbSB0aGUgV2ViIENvbnRlbnQgcHJvY2VzcyBiZWZvcmUgcmVwbHlpbmcuCisKKyAg
ICAgICAgVUlLaXQgd2lsbCB3YWl0IHVudGlsIG91ciByZXBseSB0byBhcHBseSB0aGUgVUlTY3Jv
bGxFdmVudCB0byB0aGUgVUlTY3JvbGxWaWV3LgorCisgICAgICAgICogVUlQcm9jZXNzL1BhZ2VD
bGllbnQuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL2lvcy9SZW1vdGVM
YXllclRyZWVWaWV3cy5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvaW9z
L1JlbW90ZUxheWVyVHJlZVZpZXdzLm1tOgorICAgICAgICAoV2ViS2l0OjpldmVudExpc3RlbmVy
VHlwZXNBdFBvaW50KToKKyAgICAgICAgRXhwb3NlIGEgbWVjaGFuaXNtIGZvciByZXRyaWV2aW5n
IHRoZSBldmVudCBsaXN0ZW5lciB0eXBlcyBhdCBhIGdpdmVuIHBvaW50LAorICAgICAgICBzaW1p
bGFyIHRvIHRoZSBleGlzdGluZyBtZWNoYW5pc20gZm9yIHRvdWNoIGV2ZW50IGxpc3RlbmVycy4K
KworICAgICAgICAoLVtXS0NoaWxkU2Nyb2xsVmlldyBpbml0V2l0aEZyYW1lOl0pOgorICAgICAg
ICBFbmFibGUgYXN5bmMgVUlTY3JvbGxFdmVudCBoYW5kbGluZyBmb3IgV0tDaGlsZFNjcm9sbFZp
ZXcuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL2lvcy9TY3JvbGxpbmdU
cmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlSU9TLmg6CisgICAgICAgICogVUlQcm9jZXNzL1JlbW90
ZUxheWVyVHJlZS9pb3MvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZUlPUy5tbToK
KyAgICAgICAgKC1bV0tTY3JvbGxpbmdOb2RlU2Nyb2xsVmlld0RlbGVnYXRlIF9zY3JvbGxWaWV3
OmFzeW5jaHJvbm91c2x5SGFuZGxlU2Nyb2xsRXZlbnQ6Y29tcGxldGlvbjpdKToKKyAgICAgICAg
KFdlYktpdDo6U2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZUlPUzo6aGFuZGxlQXN5
bmNocm9ub3VzUHJldmVudGFibGVTY3JvbGxFdmVudCk6CisgICAgICAgIFBsdW1iIGFzeW5jIHNj
cm9sbCBldmVudHMgZm9yIHN1Yi1zY3JvbGxhYmxlIHJlZ2lvbnMgdGhyb3VnaCBQYWdlQ2xpZW50
CisgICAgICAgIHRvIFdLV2ViVmlldzsgd2UgZG9uJ3QgYWN0dWFsbHkgY2FyZSB3aGljaCBVSVNj
cm9sbFZpZXcgdGhleSdyZSBoYW5kZWQgdG8sCisgICAgICAgIHNpbmNlIHdlIHJlLWhpdC10ZXN0
IG91cnNlbHZlcy4KKworICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmRpc3BhdGNoV2hlZWxFdmVudFdpdGhvdXRTY3Jv
bGxpbmcpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaDoKKyAgICAgICAgKiBV
SVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLmg6CisgICAgICAgICogVUlQcm9jZXNzL2lv
cy9QYWdlQ2xpZW50SW1wbElPUy5tbToKKyAgICAgICAgKFdlYktpdDo6UGFnZUNsaWVudEltcGw6
OmhhbmRsZUFzeW5jaHJvbm91c1ByZXZlbnRhYmxlU2Nyb2xsRXZlbnQpOgorICAgICAgICAqIFdl
YlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6
d2hlZWxFdmVudCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmRpc3BhdGNoV2hlZWxFdmVu
dFdpdGhvdXRTY3JvbGxpbmcpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdl
Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW46CisK
IDIwMjAtMTItMDQgIFBlbmcgTGl1ICA8cGVuZy5saXU2QGFwcGxlLmNvbT4KIAogICAgICAgICBb
TVNFXSBNb3ZlIHRyYWNrIGJ1ZmZlciBtYW5hZ2VtZW50IGZyb20gU291cmNlQnVmZmVyIHRvIFNv
dXJjZUJ1ZmZlclByaXZhdGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtRW5h
YmxlQ29jb2EuaCBiL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtRW5hYmxlQ29jb2EuaAppbmRleCA1
YWRkYTg4NmVhMGU2NzY3ZjVmNzkwOTk4YjZhYjgxZTgxN2IwNmQ0Li41NTFiYjIxYzQyZGRlYzc0
MDM5M2RkMjZiNWY1YzU2NDliMjk3NTM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9QbGF0
Zm9ybUVuYWJsZUNvY29hLmgKKysrIGIvU291cmNlL1dURi93dGYvUGxhdGZvcm1FbmFibGVDb2Nv
YS5oCkBAIC02MzMsMyArNjMzLDcgQEAKICNpZiAhZGVmaW5lZChFTkFCTEVfU0VUX1dFQkNPTlRF
TlRfUFJPQ0VTU19JTkZPUk1BVElPTl9JTl9ORVRXT1JLX1BST0NFU1MpICYmIFBMQVRGT1JNKE1B
QykgJiYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+IDEyMDAwMAogI2RlZmluZSBF
TkFCTEVfU0VUX1dFQkNPTlRFTlRfUFJPQ0VTU19JTkZPUk1BVElPTl9JTl9ORVRXT1JLX1BST0NF
U1MgMQogI2VuZGlmCisKKyNpZiAhZGVmaW5lZChFTkFCTEVfV0hFRUxfRVZFTlRfUkVHSU9OUykg
JiYgKFBMQVRGT1JNKElPUykgfHwgUExBVEZPUk0oTUFDQ0FUQUxZU1QpKQorI2RlZmluZSBFTkFC
TEVfV0hFRUxfRVZFTlRfUkVHSU9OUyAxCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5k
bGVyLmNwcAppbmRleCA2YWJkZGIyNTYzZTkwNTFmOTRmMGVjODg2YjQ5OGFmYzdmNzFiNzg5Li5m
MDQwOTIwNzVlMDJmZTU5MzA2NDY5YmE5N2Q5MjYyZmM3ODY0YTE2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFn
ZS9FdmVudEhhbmRsZXIuY3BwCkBAIC0yOTA1LDEwICsyOTA1LDEzIEBAIGJvb2wgRXZlbnRIYW5k
bGVyOjpoYW5kbGVXaGVlbEV2ZW50SW50ZXJuYWwoY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50JiBl
dmVudCwgT3B0CiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIGJvb2wgaGFuZGxlZEV2ZW50
ID0gZmFsc2U7Ci0gICAgYm9vbCBhbGxvd1Njcm9sbGluZyA9IHRydWU7CisgICAgYm9vbCBhbGxv
d1Njcm9sbGluZyA9IG1fY3VycmVudFdoZWVsRXZlbnRBbGxvd3NTY3JvbGxpbmc7CisKICNpZiBF
TkFCTEUoV0hFRUxfRVZFTlRfTEFUQ0hJTkcpCi0gICAgYWxsb3dTY3JvbGxpbmcgPSBtX2N1cnJl
bnRXaGVlbEV2ZW50QWxsb3dzU2Nyb2xsaW5nICYmIG1fZnJhbWUucGFnZSgpLT5zY3JvbGxMYXRj
aGluZ0NvbnRyb2xsZXIoKS5sYXRjaGluZ0FsbG93c1Njcm9sbGluZ0luRnJhbWUobV9mcmFtZSwg
c2Nyb2xsYWJsZUFyZWEpOworICAgIGlmIChhbGxvd1Njcm9sbGluZykKKyAgICAgICAgYWxsb3dT
Y3JvbGxpbmcgPSBtX2ZyYW1lLnBhZ2UoKS0+c2Nyb2xsTGF0Y2hpbmdDb250cm9sbGVyKCkubGF0
Y2hpbmdBbGxvd3NTY3JvbGxpbmdJbkZyYW1lKG1fZnJhbWUsIHNjcm9sbGFibGVBcmVhKTsKICNl
bmRpZgorCiAgICAgaWYgKGFsbG93U2Nyb2xsaW5nKSB7CiAgICAgICAgIC8vIEZJWE1FOiBwcm9j
ZXNzV2hlZWxFdmVudEZvclNjcm9sbGluZygpIGlzIG9ubHkgY2FsbGVkIGZvciBGcmFtZVZpZXcg
c2Nyb2xsaW5nLCBub3Qgb3ZlcmZsb3cgc2Nyb2xsaW5nLCB3aGljaCBpcyBjb25mdXNpbmcuCiAg
ICAgICAgIGhhbmRsZWRFdmVudCA9IHByb2Nlc3NXaGVlbEV2ZW50Rm9yU2Nyb2xsaW5nKGV2ZW50
LCBzY3JvbGxhYmxlQXJlYSwgaGFuZGxpbmcpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL0V2ZW50UmVnaW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvRXZlbnRS
ZWdpb24uaAppbmRleCA2YzRmYWU2MzM3MjViN2U2ZThiZmQ5ZGVhOTg1OTE1YzgxMGM5NWZiLi4y
ZmY1ZTkzNjJmNmY0MjZmNzY5Yjk2YzliOGEyYTMxMzc4YzRmNzE4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvRXZlbnRSZWdpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvRXZlbnRSZWdpb24uaApAQCAtODIsNyArODIsNyBAQCBwdWJsaWM6CiAjZW5kaWYK
IAogI2lmIEVOQUJMRShXSEVFTF9FVkVOVF9SRUdJT05TKQotICAgIE9wdGlvblNldDxFdmVudExp
c3RlbmVyUmVnaW9uVHlwZT4gZXZlbnRMaXN0ZW5lclJlZ2lvblR5cGVzRm9yUG9pbnQoY29uc3Qg
SW50UG9pbnQmKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBPcHRpb25TZXQ8RXZlbnRMaXN0
ZW5lclJlZ2lvblR5cGU+IGV2ZW50TGlzdGVuZXJSZWdpb25UeXBlc0ZvclBvaW50KGNvbnN0IElu
dFBvaW50JikgY29uc3Q7CiAgICAgY29uc3QgUmVnaW9uJiBldmVudExpc3RlbmVyUmVnaW9uRm9y
VHlwZShFdmVudExpc3RlbmVyUmVnaW9uVHlwZSkgY29uc3Q7CiAjZW5kaWYKIApAQCAtMTI1LDYg
KzEyNSwxMCBAQCB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPgogdm9pZCBFdmVudFJlZ2lvbjo6ZW5j
b2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0CiB7CiAgICAgZW5jb2RlciA8PCBtX3JlZ2lvbjsK
KyNpZiBFTkFCTEUoV0hFRUxfRVZFTlRfUkVHSU9OUykKKyAgICBlbmNvZGVyIDw8IG1fd2hlZWxF
dmVudExpc3RlbmVyUmVnaW9uOworICAgIGVuY29kZXIgPDwgbV9ub25QYXNzaXZlV2hlZWxFdmVu
dExpc3RlbmVyUmVnaW9uOworI2VuZGlmCiAjaWYgRU5BQkxFKFRPVUNIX0FDVElPTl9SRUdJT05T
KQogICAgIGVuY29kZXIgPDwgbV90b3VjaEFjdGlvblJlZ2lvbnM7CiAjZW5kaWYKQEAgLTE0NCw2
ICsxNDgsMjIgQEAgT3B0aW9uYWw8RXZlbnRSZWdpb24+IEV2ZW50UmVnaW9uOjpkZWNvZGUoRGVj
b2RlciYgZGVjb2RlcikKICAgICBFdmVudFJlZ2lvbiBldmVudFJlZ2lvbjsKICAgICBldmVudFJl
Z2lvbi5tX3JlZ2lvbiA9IFdURk1vdmUoKnJlZ2lvbik7CiAKKyNpZiBFTkFCTEUoV0hFRUxfRVZF
TlRfUkVHSU9OUykKKyAgICBPcHRpb25hbDxSZWdpb24+IHdoZWVsRXZlbnRMaXN0ZW5lclJlZ2lv
bjsKKyAgICBkZWNvZGVyID4+IHdoZWVsRXZlbnRMaXN0ZW5lclJlZ2lvbjsKKyAgICBpZiAoIXdo
ZWVsRXZlbnRMaXN0ZW5lclJlZ2lvbikKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKwor
ICAgIGV2ZW50UmVnaW9uLm1fd2hlZWxFdmVudExpc3RlbmVyUmVnaW9uID0gV1RGTW92ZSgqd2hl
ZWxFdmVudExpc3RlbmVyUmVnaW9uKTsKKworICAgIE9wdGlvbmFsPFJlZ2lvbj4gbm9uUGFzc2l2
ZVdoZWVsRXZlbnRMaXN0ZW5lclJlZ2lvbjsKKyAgICBkZWNvZGVyID4+IG5vblBhc3NpdmVXaGVl
bEV2ZW50TGlzdGVuZXJSZWdpb247CisgICAgaWYgKCFub25QYXNzaXZlV2hlZWxFdmVudExpc3Rl
bmVyUmVnaW9uKQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAgZXZlbnRSZWdp
b24ubV9ub25QYXNzaXZlV2hlZWxFdmVudExpc3RlbmVyUmVnaW9uID0gV1RGTW92ZSgqbm9uUGFz
c2l2ZVdoZWVsRXZlbnRMaXN0ZW5lclJlZ2lvbik7CisjZW5kaWYKKwogI2lmIEVOQUJMRShUT1VD
SF9BQ1RJT05fUkVHSU9OUykKICAgICBPcHRpb25hbDxWZWN0b3I8UmVnaW9uPj4gdG91Y2hBY3Rp
b25SZWdpb25zOwogICAgIGRlY29kZXIgPj4gdG91Y2hBY3Rpb25SZWdpb25zOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9zcGkvaW9zL1VJS2l0U1BJLmggYi9Tb3VyY2UvV2Vi
S2l0L1BsYXRmb3JtL3NwaS9pb3MvVUlLaXRTUEkuaAppbmRleCAyNDE3Nzg5ZGJjMmZhOWVmYzhh
NDUyZTU5NDdlNThhMjY0NWYxNjc2Li5lMDhiMDk3YzEwNmFiMjE2MDEwMjljNDk5Nzc1NTE5OGJj
ODBmOGViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL3NwaS9pb3MvVUlLaXRT
UEkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL3NwaS9pb3MvVUlLaXRTUEkuaApAQCAt
NjIsNiArNjIsOCBAQAogI2ltcG9ydCA8VUlLaXQvVUlQcmVzZW50YXRpb25Db250cm9sbGVyX1By
aXZhdGUuaD4KICNpbXBvcnQgPFVJS2l0L1VJUmVzcG9uZGVyX1ByaXZhdGUuaD4KICNpbXBvcnQg
PFVJS2l0L1VJU2NlbmVfUHJpdmF0ZS5oPgorI2ltcG9ydCA8VUlLaXQvVUlTY3JvbGxFdmVudF9Q
cml2YXRlLmg+CisjaW1wb3J0IDxVSUtpdC9VSVNjcm9sbFZpZXdfRm9yV2ViS2l0T25seS5oPgog
I2ltcG9ydCA8VUlLaXQvVUlTY3JvbGxWaWV3X1ByaXZhdGUuaD4KICNpbXBvcnQgPFVJS2l0L1VJ
U3RyaW5nRHJhd2luZ19Qcml2YXRlLmg+CiAjaW1wb3J0IDxVSUtpdC9VSVRhYmxlVmlld0NlbGxf
UHJpdmF0ZS5oPgpAQCAtNDE2LDggKzQxOCwyNyBAQCB0eXBlZGVmIGVudW0gewogQHByb3BlcnR5
IChub25hdG9taWMsIGdldHRlcj1faW5kaWNhdG9ySW5zZXRBZGp1c3RtZW50QmVoYXZpb3IsIHNl
dHRlcj1fc2V0SW5kaWNhdG9ySW5zZXRBZGp1c3RtZW50QmVoYXZpb3I6KSBVSVNjcm9sbFZpZXdJ
bmRpY2F0b3JJbnNldEFkanVzdG1lbnRCZWhhdmlvciBpbmRpY2F0b3JJbnNldEFkanVzdG1lbnRC
ZWhhdmlvcjsKIEBwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSkgVUlFZGdlSW5zZXRzIF9z
eXN0ZW1Db250ZW50SW5zZXQ7CiBAcHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHkpIFVJRWRn
ZUluc2V0cyBfZWZmZWN0aXZlQ29udGVudEluc2V0OworQHByb3BlcnR5IChub25hdG9taWMsIGdl
dHRlcj1fYWxsb3dzQXN5bmNTY3JvbGxFdmVudCwgc2V0dGVyPV9zZXRBbGxvd3NBc3luY1Njcm9s
bEV2ZW50OikgQk9PTCBfYWxsb3dzQXN5bmNTY3JvbGxFdmVudDsKIEBlbmQKIAordHlwZWRlZiBO
U19FTlVNKE5TVUludGVnZXIsIFVJU2Nyb2xsUGhhc2UpIHsKKyAgICBVSVNjcm9sbFBoYXNlTm9u
ZSwKKyAgICBVSVNjcm9sbFBoYXNlTWF5QmVnaW4sCisgICAgVUlTY3JvbGxQaGFzZUJlZ2FuLAor
ICAgIFVJU2Nyb2xsUGhhc2VDaGFuZ2VkLAorICAgIFVJU2Nyb2xsUGhhc2VFbmRlZCwKKyAgICBV
SVNjcm9sbFBoYXNlQ2FuY2VsbGVkCit9OworCitAaW50ZXJmYWNlIFVJU2Nyb2xsRXZlbnQgOiBV
SUV2ZW50CisKK0Bwcm9wZXJ0eSAoYXNzaWduLCByZWFkb25seSkgVUlTY3JvbGxQaGFzZSBwaGFz
ZTsKKy0gKENHUG9pbnQpbG9jYXRpb25JblZpZXc6KFVJVmlldyAqKXZpZXc7CistIChDR1ZlY3Rv
cilfYWRqdXN0ZWRBY2NlbGVyYXRlZERlbHRhSW5WaWV3OihVSVZpZXcgKil2aWV3OworCitAZW5k
CisKKwogQGludGVyZmFjZSBOU1N0cmluZyAoVUlLaXREZXRhaWxzKQogLSAoQ0dTaXplKV9sZWdh
Y3lfc2l6ZVdpdGhGb250OihVSUZvbnQgKilmb250IGZvcldpZHRoOihDR0Zsb2F0KXdpZHRoIGxp
bmVCcmVha01vZGU6KE5TTGluZUJyZWFrTW9kZSlsaW5lQnJlYWtNb2RlOwogLSAoQ0dTaXplKV9s
ZWdhY3lfc2l6ZVdpdGhGb250OihVSUZvbnQgKilmb250IG1pbkZvbnRTaXplOihDR0Zsb2F0KW1p
bkZvbnRTaXplIGFjdHVhbEZvbnRTaXplOihDR0Zsb2F0ICopYWN0dWFsRm9udFNpemUgZm9yV2lk
dGg6KENHRmxvYXQpd2lkdGggbGluZUJyZWFrTW9kZTooTlNMaW5lQnJlYWtNb2RlKWxpbmVCcmVh
a01vZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tX
ZWJWaWV3SW50ZXJuYWwuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dl
YlZpZXdJbnRlcm5hbC5oCmluZGV4IGMwNWFkNzI0ZWQyMDM5MjFmNWViZWU0NzE3NTE1Nzk4MzM5
ZDYyZGIuLjMxZjgxY2UwZTllNGZlMjdlMmNlMTU5ZjlmMGQ0N2Q4OTlkNGZjOWMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdJbnRlcm5hbC5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdJbnRlcm5h
bC5oCkBAIC0yMjksNiArMjI5LDggQEAgY2xhc3MgVmlld0dlc3R1cmVDb250cm9sbGVyOwogICAg
IEJPT0wgX2hhc1NjaGVkdWxlZFZpc2libGVSZWN0VXBkYXRlOwogICAgIEJPT0wgX3Zpc2libGVD
b250ZW50UmVjdFVwZGF0ZVNjaGVkdWxlZEZyb21TY3JvbGxWaWV3SW5TdGFibGVTdGF0ZTsKIAor
ICAgIE9wdGlvbmFsPGJvb2w+IF9jdXJyZW50U2Nyb2xsR2VzdHVyZVdhc0luaXRpYWxseVByZXZl
bnRlZDsKKwogICAgIF9XS0RyYWdJbnRlcmFjdGlvblBvbGljeSBfZHJhZ0ludGVyYWN0aW9uUG9s
aWN5OwogCiAgICAgLy8gRm9yIHJlbGVhc2UtbG9nZ2luZyBmb3IgPHJkYXI6Ly9wcm9ibGVtLzM5
MjgxMjY5Pi4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9pb3MvV0tX
ZWJWaWV3SU9TLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvaW9zL1dLV2ViVmlld0lP
Uy5oCmluZGV4IGY3ZTJlMzMxZDFhMjRhZDE2ZmFiYTgyYzc3ODJiMzhiMWVmNDk5NWEuLjZmYTlj
YmYwMjFhOWRjYzQzNDQ5NjljZWVjNDc3MDUxOGEzYzhjODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9pb3MvV0tXZWJWaWV3SU9TLmgKKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL2lvcy9XS1dlYlZpZXdJT1MuaApAQCAtMjUsNiArMjUsOCBAQAogCiAj
aW1wb3J0ICJXS1dlYlZpZXdJbnRlcm5hbC5oIgogCitAY2xhc3MgVUlTY3JvbGxFdmVudDsKKwog
I2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAKIEBpbnRlcmZhY2UgV0tXZWJWaWV3IChXS1ZpZXdJ
bnRlcm5hbElPUykKQEAgLTEyNSw2ICsxMjcsMTMgQEAKIC0gKFdlYkNvcmU6OkZsb2F0U2l6ZSlh
Y3RpdmVWaWV3TGF5b3V0U2l6ZTooY29uc3QgQ0dSZWN0Jilib3VuZHM7CiAtICh2b2lkKV91cGRh
dGVTY3JvbGxWaWV3SW5zZXRBZGp1c3RtZW50QmVoYXZpb3I7CiAKKy0gKEJPT0wpX2VmZmVjdGl2
ZUFwcGVhcmFuY2VJc0Rhcms7CistIChCT09MKV9lZmZlY3RpdmVVc2VySW50ZXJmYWNlTGV2ZWxJ
c0VsZXZhdGVkOworCisjaWYgSEFWRShVSVNDUk9MTFZJRVdfQVNZTkNIUk9OT1VTX1NDUk9MTF9F
VkVOVF9IQU5ETElORykKKy0gKHZvaWQpX3Njcm9sbFZpZXc6KFVJU2Nyb2xsVmlldyAqKXNjcm9s
bFZpZXcgYXN5bmNocm9ub3VzbHlIYW5kbGVTY3JvbGxFdmVudDooVUlTY3JvbGxFdmVudCAqKXNj
cm9sbEV2ZW50IGNvbXBsZXRpb246KHZvaWQgKF4pKEJPT0wgaGFuZGxlZCkpY29tcGxldGlvbjsK
KyNlbmRpZgorCiBAcHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHkpIFdLUGFzc3dvcmRWaWV3
ICpfcGFzc3dvcmRWaWV3OwogQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5KSBXS1dlYlZp
ZXdDb250ZW50UHJvdmlkZXJSZWdpc3RyeSAqX2NvbnRlbnRQcm92aWRlclJlZ2lzdHJ5OwogQHBy
b3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5KSBXS1NlbGVjdGlvbkdyYW51bGFyaXR5IF9zZWxl
Y3Rpb25HcmFudWxhcml0eTsKQEAgLTEzNyw5ICsxNDYsNiBAQAogQHByb3BlcnR5IChub25hdG9t
aWMsIHJlYWRvbmx5LCBnZXR0ZXI9X2lzUmV0YWluaW5nQWN0aXZlRm9jdXNlZFN0YXRlKSBCT09M
IF9yZXRhaW5pbmdBY3RpdmVGb2N1c2VkU3RhdGU7CiBAcHJvcGVydHkgKG5vbmF0b21pYywgcmVh
ZG9ubHkpIGludDMyX3QgX2RldmljZU9yaWVudGF0aW9uOwogCi0tIChCT09MKV9lZmZlY3RpdmVB
cHBlYXJhbmNlSXNEYXJrOwotLSAoQk9PTClfZWZmZWN0aXZlVXNlckludGVyZmFjZUxldmVsSXNF
bGV2YXRlZDsKLQogQGVuZAogCiAjZW5kaWYgLy8gUExBVEZPUk0oSU9TX0ZBTUlMWSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9pb3MvV0tXZWJWaWV3SU9TLm1tIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2lvcy9XS1dlYlZpZXdJT1MubW0KaW5kZXggNGI3
NjYyYTE2NDU5NGRlNmU0M2ZlNDQ0NDhlMDkyMzdkNzJiZWYzMi4uYzA5ZjkzYmRiZjEyMTgyYzI3
MGNiMzI3NTk2ZDAyMTk3NWM1OWI2OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL2lvcy9XS1dlYlZpZXdJT1MubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL2lvcy9XS1dlYlZpZXdJT1MubW0KQEAgLTI5LDkgKzI5LDExIEBACiAjaWYgUExBVEZPUk0o
SU9TX0ZBTUlMWSkKIAogI2ltcG9ydCAiRnJvbnRCb2FyZFNlcnZpY2VzU1BJLmgiCisjaW1wb3J0
ICJOYXRpdmVXZWJXaGVlbEV2ZW50LmgiCiAjaW1wb3J0ICJOYXZpZ2F0aW9uU3RhdGUuaCIKICNp
bXBvcnQgIlJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJveHkuaCIKICNpbXBvcnQgIlJlbW90
ZUxheWVyVHJlZVNjcm9sbGluZ1BlcmZvcm1hbmNlRGF0YS5oIgorI2ltcG9ydCAiUmVtb3RlTGF5
ZXJUcmVlVmlld3MuaCIKICNpbXBvcnQgIlJlbW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yUHJveHku
aCIKICNpbXBvcnQgIlZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eS5oIgogI2ltcG9ydCAiVmll
d0dlc3R1cmVDb250cm9sbGVyLmgiCkBAIC0xMzksNiArMTQxLDEwIEBAIC0gKHZvaWQpX3NldHVw
U2Nyb2xsQW5kQ29udGVudFZpZXdzCiAgICAgW19zY3JvbGxWaWV3IHNldEludGVybmFsRGVsZWdh
dGU6c2VsZl07CiAgICAgW19zY3JvbGxWaWV3IHNldEJvdW5jZXNab29tOllFU107CiAKKyNpZiBI
QVZFKFVJU0NST0xMVklFV19BU1lOQ0hST05PVVNfU0NST0xMX0VWRU5UX0hBTkRMSU5HKQorICAg
IFtfc2Nyb2xsVmlldyBfc2V0QWxsb3dzQXN5bmNTY3JvbGxFdmVudDpZRVNdOworI2VuZGlmCisK
ICAgICBpZiAoW19zY3JvbGxWaWV3IHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoX3NldEF2
b2lkc0p1bXBPbkludGVycnVwdGVkQm91bmNlOildKSB7CiAgICAgICAgIFtfc2Nyb2xsVmlldyBz
ZXRUcmFja3NJbW1lZGlhdGVseVdoaWxlRGVjZWxlcmF0aW5nOk5PXTsKICAgICAgICAgW19zY3Jv
bGxWaWV3IF9zZXRBdm9pZHNKdW1wT25JbnRlcnJ1cHRlZEJvdW5jZTpZRVNdOwpAQCAtMTU5MCw2
ICsxNTk2LDYwIEBAIC0gKENHUG9pbnQpX3Njcm9sbFZpZXc6KFVJU2Nyb2xsVmlldyAqKXNjcm9s
bFZpZXcgYWRqdXN0ZWRPZmZzZXRGb3JPZmZzZXQ6KENHUG9pCiAgICAgcmV0dXJuIGFkanVzdGVk
Q29udGVudE9mZnNldDsKIH0KIAorI2lmIEhBVkUoVUlTQ1JPTExWSUVXX0FTWU5DSFJPTk9VU19T
Q1JPTExfRVZFTlRfSEFORExJTkcpCistICh2b2lkKV9zY3JvbGxWaWV3OihVSVNjcm9sbFZpZXcg
KilzY3JvbGxWaWV3IGFzeW5jaHJvbm91c2x5SGFuZGxlU2Nyb2xsRXZlbnQ6KFVJU2Nyb2xsRXZl
bnQgKilzY3JvbGxFdmVudCBjb21wbGV0aW9uOih2b2lkICheKShCT09MIGhhbmRsZWQpKWNvbXBs
ZXRpb24KK3sKKyAgICBXZWJDb3JlOjpJbnRQb2ludCBzY3JvbGxMb2NhdGlvbiA9IFdlYkNvcmU6
OnJvdW5kZWRJbnRQb2ludChbc2Nyb2xsRXZlbnQgbG9jYXRpb25JblZpZXc6X2NvbnRlbnRWaWV3
LmdldCgpXSk7CisKKyAgICBhdXRvIGV2ZW50TGlzdGVuZXJzID0gV2ViS2l0OjpldmVudExpc3Rl
bmVyVHlwZXNBdFBvaW50KF9jb250ZW50Vmlldy5nZXQoKSwgc2Nyb2xsTG9jYXRpb24pOworICAg
IGJvb2wgaGFzUGFzc2l2ZVdoZWVsSGFuZGxlcnMgPSBldmVudExpc3RlbmVycy5jb250YWlucyhX
ZWJDb3JlOjpFdmVudExpc3RlbmVyUmVnaW9uVHlwZTo6V2hlZWwpOworICAgIGJvb2wgaGFzTm9u
UGFzc2l2ZVdoZWVsSGFuZGxlcnMgPSBldmVudExpc3RlbmVycy5jb250YWlucyhXZWJDb3JlOjpF
dmVudExpc3RlbmVyUmVnaW9uVHlwZTo6Tm9uUGFzc2l2ZVdoZWVsKTsKKworICAgIGlmICghaGFz
UGFzc2l2ZVdoZWVsSGFuZGxlcnMgJiYgIWhhc05vblBhc3NpdmVXaGVlbEhhbmRsZXJzKSB7Cisg
ICAgICAgIGNvbXBsZXRpb24oTk8pOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgaWYg
KHNjcm9sbEV2ZW50LnBoYXNlID09IFVJU2Nyb2xsUGhhc2VNYXlCZWdpbikgeworICAgICAgICBj
b21wbGV0aW9uKE5PKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGJvb2wgaXNGaXJz
dEV2ZW50SW5HZXN0dXJlID0gc2Nyb2xsRXZlbnQucGhhc2UgPT0gVUlTY3JvbGxQaGFzZUJlZ2Fu
OworICAgIGlmIChpc0ZpcnN0RXZlbnRJbkdlc3R1cmUpCisgICAgICAgIF9jdXJyZW50U2Nyb2xs
R2VzdHVyZVdhc0luaXRpYWxseVByZXZlbnRlZCA9IFdURjo6bnVsbG9wdDsKKworICAgIGJvb2wg
aXNQcmV2ZW50YWJsZSA9IGhhc05vblBhc3NpdmVXaGVlbEhhbmRsZXJzICYmIF9jdXJyZW50U2Ny
b2xsR2VzdHVyZVdhc0luaXRpYWxseVByZXZlbnRlZC52YWx1ZU9yKGlzRmlyc3RFdmVudEluR2Vz
dHVyZSk7CisgICAgQ0dWZWN0b3IgZGVsdGEgPSBbc2Nyb2xsRXZlbnQgX2FkanVzdGVkQWNjZWxl
cmF0ZWREZWx0YUluVmlldzpfY29udGVudFZpZXcuZ2V0KCldOworCisgICAgV2ViS2l0OjpXZWJX
aGVlbEV2ZW50IGV2ZW50ID0geworICAgICAgICBXZWJLaXQ6OldlYkV2ZW50OjpXaGVlbCwKKyAg
ICAgICAgc2Nyb2xsTG9jYXRpb24sCisgICAgICAgIHNjcm9sbExvY2F0aW9uLAorICAgICAgICBX
ZWJDb3JlOjpGbG9hdFNpemUoZGVsdGEuZHgsIGRlbHRhLmR5KSwKKyAgICAgICAgeyB9LCAvLyB3
aGVlbFRpY2tzCisgICAgICAgIFdlYktpdDo6TmF0aXZlV2ViV2hlZWxFdmVudDo6R3JhbnVsYXJp
dHk6OlNjcm9sbEJ5UGl4ZWxXaGVlbEV2ZW50LAorICAgICAgICB7IH0sIC8vIG1vZGlmaWVycwor
ICAgICAgICBNb25vdG9uaWNUaW1lOjpmcm9tUmF3U2Vjb25kcyhzY3JvbGxFdmVudC50aW1lc3Rh
bXApLmFwcHJveGltYXRlV2FsbFRpbWUoKQorICAgIH07CisKKyAgICBfcGFnZS0+ZGlzcGF0Y2hX
aGVlbEV2ZW50V2l0aG91dFNjcm9sbGluZyhldmVudCwgaXNGaXJzdEV2ZW50SW5HZXN0dXJlLCBo
YXNOb25QYXNzaXZlV2hlZWxIYW5kbGVycywgW3dlYWtTZWxmID0gV2Vha09iakNQdHI8V0tXZWJW
aWV3PihzZWxmKSwgc3Ryb25nQ29tcGxldGlvbiA9IG1ha2VCbG9ja1B0cihjb21wbGV0aW9uKSwg
aXNQcmV2ZW50YWJsZSwgaXNGaXJzdEV2ZW50SW5HZXN0dXJlXShib29sIGhhbmRsZWQpIHsKKyAg
ICAgICAgYXV0byBzdHJvbmdTZWxmID0gd2Vha1NlbGYuZ2V0KCk7CisgICAgICAgIGlmICghc3Ry
b25nU2VsZikKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBpZiAoaXNQcmV2ZW50YWJs
ZSkgeworICAgICAgICAgICAgaWYgKGlzRmlyc3RFdmVudEluR2VzdHVyZSkKKyAgICAgICAgICAg
ICAgICBzdHJvbmdTZWxmLT5fY3VycmVudFNjcm9sbEdlc3R1cmVXYXNJbml0aWFsbHlQcmV2ZW50
ZWQgPSBoYW5kbGVkOworICAgICAgICAgICAgc3Ryb25nQ29tcGxldGlvbihoYW5kbGVkKTsKKyAg
ICAgICAgfQorICAgIH0pOworCisgICAgaWYgKCFpc1ByZXZlbnRhYmxlKQorICAgICAgICBjb21w
bGV0aW9uKGZhbHNlKTsKK30KKyNlbmRpZiAvLyBIQVZFKFVJU0NST0xMVklFV19BU1lOQ0hST05P
VVNfU0NST0xMX0VWRU5UX0hBTkRMSU5HKQorCiAtICh2b2lkKXNjcm9sbFZpZXdEaWRTY3JvbGw6
KFVJU2Nyb2xsVmlldyAqKXNjcm9sbFZpZXcKIHsKICAgICBpZiAoIVtzZWxmIHVzZXNTdGFuZGFy
ZENvbnRlbnRWaWV3XSAmJiBbX2N1c3RvbUNvbnRlbnRWaWV3IHJlc3BvbmRzVG9TZWxlY3RvcjpA
c2VsZWN0b3Iod2ViX3Njcm9sbFZpZXdEaWRTY3JvbGw6KV0pCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9QYWdlQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Q
YWdlQ2xpZW50LmgKaW5kZXggYzRjNzE4NzRhMTBkYTliNTQxZmVlMjgyMDgwOGMxZTUwZDNmYTky
Yi4uMTZhZWI2NmNkZDBiMzBiZWY5ODYzODM4NTM4MWNkMTNhYzJiZmUzOSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGFnZUNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1BhZ2VDbGllbnQuaApAQCAtNjQsNiArNjQsOCBAQCBPQkpDX0NMQVNTIE5TTWVu
dTsKIE9CSkNfQ0xBU1MgTlNTZXQ7CiBPQkpDX0NMQVNTIE5TVGV4dEFsdGVybmF0aXZlczsKIE9C
SkNfQ0xBU1MgVUlHZXN0dXJlUmVjb2duaXplcjsKK09CSkNfQ0xBU1MgVUlTY3JvbGxFdmVudDsK
K09CSkNfQ0xBU1MgVUlTY3JvbGxWaWV3OwogT0JKQ19DTEFTUyBfV0tSZW1vdGVPYmplY3RSZWdp
c3RyeTsKIAogI2lmIFVTRShBUFBLSVQpCkBAIC00NjYsNiArNDY4LDEwIEBAIHB1YmxpYzoKICAg
ICB2aXJ0dWFsIHZvaWQgZGlzYWJsZUluc3BlY3Rvck5vZGVTZWFyY2goKSA9IDA7CiAKICAgICB2
aXJ0dWFsIHZvaWQgaGFuZGxlQXV0b2NvcnJlY3Rpb25Db250ZXh0KGNvbnN0IFdlYkF1dG9jb3Jy
ZWN0aW9uQ29udGV4dCYpID0gMDsKKworI2lmIEhBVkUoVUlTQ1JPTExWSUVXX0FTWU5DSFJPTk9V
U19TQ1JPTExfRVZFTlRfSEFORExJTkcpCisgICAgdmlydHVhbCB2b2lkIGhhbmRsZUFzeW5jaHJv
bm91c1ByZXZlbnRhYmxlU2Nyb2xsRXZlbnQoVUlTY3JvbGxWaWV3ICosIFVJU2Nyb2xsRXZlbnQg
Kiwgdm9pZCAoXmNvbXBsZXRpb24pKEJPT0wgaGFuZGxlZCkpID0gMDsKKyNlbmRpZgogI2VuZGlm
CiAKICAgICAvLyBBdXhpbGlhcnkgQ2xpZW50IENyZWF0aW9uCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvaW9zL1JlbW90ZUxheWVyVHJlZVZpZXdz
LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvaW9zL1JlbW90ZUxh
eWVyVHJlZVZpZXdzLmgKaW5kZXggMzNhMTQ2MTBiOGFmYmNjOTY2Zjk4MjZlN2I0NTM2MzdhNmI5
ZDU2ZS4uMmI4ZDBhYjBlZWI5MWQ0ZjFmMTE4NjZiOTQxOTZkYTFmM2NiYWQxYyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL2lvcy9SZW1vdGVMYXll
clRyZWVWaWV3cy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJl
ZS9pb3MvUmVtb3RlTGF5ZXJUcmVlVmlld3MuaApAQCAtNzEsNiArNzEsOCBAQCBuYW1lc3BhY2Ug
V2ViS2l0IHsKIE9wdGlvblNldDxXZWJDb3JlOjpUb3VjaEFjdGlvbj4gdG91Y2hBY3Rpb25zRm9y
UG9pbnQoVUlWaWV3ICpyb290VmlldywgY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmKTsKIFVJU2Ny
b2xsVmlldyAqZmluZEFjdGluZ1Njcm9sbFBhcmVudChVSVNjcm9sbFZpZXcgKiwgY29uc3QgUmVt
b3RlTGF5ZXJUcmVlSG9zdCYpOwogCitPcHRpb25TZXQ8V2ViQ29yZTo6RXZlbnRMaXN0ZW5lclJl
Z2lvblR5cGU+IGV2ZW50TGlzdGVuZXJUeXBlc0F0UG9pbnQoVUlWaWV3ICpyb290VmlldywgY29u
c3QgV2ViQ29yZTo6SW50UG9pbnQmKTsKKwogI2lmIEVOQUJMRShFRElUQUJMRV9SRUdJT04pCiBi
b29sIG1heUNvbnRhaW5FZGl0YWJsZUVsZW1lbnRzSW5SZWN0KFVJVmlldyAqcm9vdFZpZXcsIGNv
bnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYpOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvaW9zL1JlbW90ZUxheWVyVHJlZVZpZXdzLm1t
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL2lvcy9SZW1vdGVMYXll
clRyZWVWaWV3cy5tbQppbmRleCAxMWJiMDFiMzcyY2U2OTdiNmU2M2E0M2U2YTQ2ZGY4MjQzY2Fk
YzM4Li5hOGZhNmZmNmZhMmFkMGU3YzRhNGMzNTNmYWE3ZWE2YThhMmQ1MjM3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvaW9zL1JlbW90ZUxheWVy
VHJlZVZpZXdzLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJl
ZS9pb3MvUmVtb3RlTGF5ZXJUcmVlVmlld3MubW0KQEAgLTIwNSw2ICsyMDUsMzYgQEAgT3B0aW9u
U2V0PFdlYkNvcmU6OlRvdWNoQWN0aW9uPiB0b3VjaEFjdGlvbnNGb3JQb2ludChVSVZpZXcgKnJv
b3RWaWV3LCBjb25zdCBXZWIKICAgICByZXR1cm4gbm9kZS0+ZXZlbnRSZWdpb24oKS50b3VjaEFj
dGlvbnNGb3JQb2ludChXZWJDb3JlOjpJbnRQb2ludChoaXRWaWV3UG9pbnQpKTsKIH0KIAorI2lm
IEVOQUJMRShXSEVFTF9FVkVOVF9SRUdJT05TKQorT3B0aW9uU2V0PFdlYkNvcmU6OkV2ZW50TGlz
dGVuZXJSZWdpb25UeXBlPiBldmVudExpc3RlbmVyVHlwZXNBdFBvaW50KFVJVmlldyAqcm9vdFZp
ZXcsIGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBwb2ludCkKK3sKKyAgICBWZWN0b3I8VUlWaWV3
ICosIDE2PiB2aWV3c0F0UG9pbnQ7CisgICAgY29sbGVjdERlc2NlbmRhbnRWaWV3c0F0UG9pbnQo
dmlld3NBdFBvaW50LCByb290VmlldywgcG9pbnQsIG5pbCk7CisKKyAgICBpZiAodmlld3NBdFBv
aW50LmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIHsgfTsKKworICAgIFVJVmlldyAqaGl0Vmll
dyA9IG5pbDsKKyAgICBmb3IgKGF1dG8gKnZpZXcgOiBXVEY6Om1ha2VSZXZlcnNlZFJhbmdlKHZp
ZXdzQXRQb2ludCkpIHsKKyAgICAgICAgaWYgKFt2aWV3IGlzS2luZE9mQ2xhc3M6W1dLQ29tcG9z
aXRpbmdWaWV3IGNsYXNzXV0pIHsKKyAgICAgICAgICAgIGhpdFZpZXcgPSB2aWV3OworICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBpZiAoIWhpdFZpZXcpCisgICAg
ICAgIHJldHVybiB7IH07CisKKyAgICBDR1BvaW50IGhpdFZpZXdQb2ludCA9IFtoaXRWaWV3IGNv
bnZlcnRQb2ludDpwb2ludCBmcm9tVmlldzpyb290Vmlld107CisKKyAgICBhdXRvKiBub2RlID0g
UmVtb3RlTGF5ZXJUcmVlTm9kZTo6Zm9yQ0FMYXllcihoaXRWaWV3LmxheWVyKTsKKyAgICBpZiAo
IW5vZGUpCisgICAgICAgIHJldHVybiB7IH07CisKKyAgICByZXR1cm4gbm9kZS0+ZXZlbnRSZWdp
b24oKS5ldmVudExpc3RlbmVyUmVnaW9uVHlwZXNGb3JQb2ludChXZWJDb3JlOjpJbnRQb2ludCho
aXRWaWV3UG9pbnQpKTsKK30KKyNlbmRpZgorCiBVSVNjcm9sbFZpZXcgKmZpbmRBY3RpbmdTY3Jv
bGxQYXJlbnQoVUlTY3JvbGxWaWV3ICpzY3JvbGxWaWV3LCBjb25zdCBSZW1vdGVMYXllclRyZWVI
b3N0JiBob3N0KQogewogICAgIEhhc2hTZXQ8V2ViQ29yZTo6R3JhcGhpY3NMYXllcjo6UGxhdGZv
cm1MYXllcklEPiBzY3JvbGxlcnNUb1NraXA7CkBAIC00MDQsNiArNDM0LDEwIEBAIC0gKGluc3Rh
bmNldHlwZSlpbml0V2l0aEZyYW1lOihDR1JlY3QpZnJhbWUKICAgICBzZWxmLmNvbnRlbnRJbnNl
dEFkanVzdG1lbnRCZWhhdmlvciA9IFVJU2Nyb2xsVmlld0NvbnRlbnRJbnNldEFkanVzdG1lbnRO
ZXZlcjsKICNlbmRpZgogCisjaWYgSEFWRShVSVNDUk9MTFZJRVdfQVNZTkNIUk9OT1VTX1NDUk9M
TF9FVkVOVF9IQU5ETElORykKKyAgICBbc2VsZiBfc2V0QWxsb3dzQXN5bmNTY3JvbGxFdmVudDpZ
RVNdOworI2VuZGlmCisKICAgICByZXR1cm4gc2VsZjsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL2lvcy9TY3JvbGxpbmdUcmVlU2Nyb2xs
aW5nTm9kZURlbGVnYXRlSU9TLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXll
clRyZWUvaW9zL1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVJT1MuaAppbmRleCAz
MTA1MDJjOGE2NDRjZGZmOGM1ZjMyNjgyZDcwMzRlZWFlMjExNWFkLi45ZTVkOGIwMzU4MWZhZTBh
MWNlMTkwZjI2N2I1ZGI4OTJiYWRjNDJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9SZW1vdGVMYXllclRyZWUvaW9zL1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdh
dGVJT1MuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvaW9z
L1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVJT1MuaApAQCAtNjUsNiArNjUsMTAg
QEAgcHVibGljOgogCiAgICAgdm9pZCByZXBvc2l0aW9uU2Nyb2xsaW5nTGF5ZXJzKCk7CiAKKyNp
ZiBIQVZFKFVJU0NST0xMVklFV19BU1lOQ0hST05PVVNfU0NST0xMX0VWRU5UX0hBTkRMSU5HKQor
ICAgIHZvaWQgaGFuZGxlQXN5bmNocm9ub3VzUHJldmVudGFibGVTY3JvbGxFdmVudChVSVNjcm9s
bFZpZXcgKiwgVUlTY3JvbGxFdmVudCAqLCB2b2lkICheY29tcGxldGlvbikoQk9PTCBoYW5kbGVk
KSk7CisjZW5kaWYKKwogICAgIE9wdGlvblNldDxXZWJDb3JlOjpUb3VjaEFjdGlvbj4gYWN0aXZl
VG91Y2hBY3Rpb25zKCkgY29uc3QgeyByZXR1cm4gbV9hY3RpdmVUb3VjaEFjdGlvbnM7IH0KICAg
ICB2b2lkIGNvbXB1dGVBY3RpdmVUb3VjaEFjdGlvbnNGb3JHZXN0dXJlUmVjb2duaXplcihVSUdl
c3R1cmVSZWNvZ25pemVyKik7CiAgICAgdm9pZCBjbGVhckFjdGl2ZVRvdWNoQWN0aW9ucygpIHsg
bV9hY3RpdmVUb3VjaEFjdGlvbnMgPSB7IH07IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9pb3MvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVE
ZWxlZ2F0ZUlPUy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9p
b3MvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZUlPUy5tbQppbmRleCBhYjM3NDcy
MGEzMjg0N2Y3ZTVjYzU3YmJjNTc5NzRkMWUzMDQ2NTBmLi42ZTA4MTc2ZDUxM2U5OTNmZmEyN2E5
ZjEyNTA5OTM5ZmQ1N2MzMjdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9S
ZW1vdGVMYXllclRyZWUvaW9zL1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVJT1Mu
bW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL2lvcy9TY3Jv
bGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlSU9TLm1tCkBAIC0xNzYsNiArMTc2LDEzIEBA
IC0gKENHUG9pbnQpX3Njcm9sbFZpZXc6KFVJU2Nyb2xsVmlldyAqKXNjcm9sbFZpZXcgYWRqdXN0
ZWRPZmZzZXRGb3JPZmZzZXQ6KENHUG9pCiAgICAgcmV0dXJuIGFkanVzdGVkQ29udGVudE9mZnNl
dDsKIH0KIAorI2lmIEhBVkUoVUlTQ1JPTExWSUVXX0FTWU5DSFJPTk9VU19TQ1JPTExfRVZFTlRf
SEFORExJTkcpCistICh2b2lkKV9zY3JvbGxWaWV3OihVSVNjcm9sbFZpZXcgKilzY3JvbGxWaWV3
IGFzeW5jaHJvbm91c2x5SGFuZGxlU2Nyb2xsRXZlbnQ6KFVJU2Nyb2xsRXZlbnQgKilzY3JvbGxF
dmVudCBjb21wbGV0aW9uOih2b2lkICheKShCT09MIGhhbmRsZWQpKWNvbXBsZXRpb24KK3sKKyAg
ICBfc2Nyb2xsaW5nVHJlZU5vZGVEZWxlZ2F0ZS0+aGFuZGxlQXN5bmNocm9ub3VzUHJldmVudGFi
bGVTY3JvbGxFdmVudChzY3JvbGxWaWV3LCBzY3JvbGxFdmVudCwgY29tcGxldGlvbik7Cit9Cisj
ZW5kaWYKKwogLSAodm9pZClzY3JvbGxWaWV3V2lsbEJlZ2luWm9vbWluZzooVUlTY3JvbGxWaWV3
ICopc2Nyb2xsVmlldyB3aXRoVmlldzooVUlWaWV3ICopdmlldwogewogICAgIFtzZWxmIGNhbmNl
bFBvaW50ZXJzRm9yR2VzdHVyZVJlY29nbml6ZXI6c2Nyb2xsVmlldy5waW5jaEdlc3R1cmVSZWNv
Z25pemVyXTsKQEAgLTI5OCw2ICszMDUsMTQgQEAgdm9pZCBTY3JvbGxpbmdUcmVlU2Nyb2xsaW5n
Tm9kZURlbGVnYXRlSU9TOjpjb21taXRTdGF0ZUFmdGVyQ2hpbGRyZW4oY29uc3QgU2Nyb2wKICAg
ICB9CiB9CiAKKyNpZiBIQVZFKFVJU0NST0xMVklFV19BU1lOQ0hST05PVVNfU0NST0xMX0VWRU5U
X0hBTkRMSU5HKQordm9pZCBTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlSU9TOjpo
YW5kbGVBc3luY2hyb25vdXNQcmV2ZW50YWJsZVNjcm9sbEV2ZW50KFVJU2Nyb2xsVmlldyAqc2Ny
b2xsVmlldywgVUlTY3JvbGxFdmVudCAqc2Nyb2xsRXZlbnQsIHZvaWQgKF5jb21wbGV0aW9uKShC
T09MIGhhbmRsZWQpKQoreworICAgIGF1dG8mIHNjcm9sbGluZ0Nvb3JkaW5hdG9yUHJveHkgPSBk
b3duY2FzdDxXZWJLaXQ6OlJlbW90ZVNjcm9sbGluZ1RyZWU+KHNjcm9sbGluZ1RyZWUoKSkuc2Ny
b2xsaW5nQ29vcmRpbmF0b3JQcm94eSgpOworICAgIHNjcm9sbGluZ0Nvb3JkaW5hdG9yUHJveHku
d2ViUGFnZVByb3h5KCkucGFnZUNsaWVudCgpLmhhbmRsZUFzeW5jaHJvbm91c1ByZXZlbnRhYmxl
U2Nyb2xsRXZlbnQoc2Nyb2xsVmlldywgc2Nyb2xsRXZlbnQsIGNvbXBsZXRpb24pOworfQorI2Vu
ZGlmCisKIHZvaWQgU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZUlPUzo6cmVwb3Np
dGlvblNjcm9sbGluZ0xheWVycygpCiB7CiAgICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05T
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAppbmRleCBjYzFiYmI0YTRh
YWI4MmQxMWRjNjZhYzJlNDFhZmNhZmUwY2U3ODgzLi4yYjRkODM4YjVjN2JjMDEzNWRjZmQxYjU0
ZjQ2NWIzNTFjNjFiNDcwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQ
YWdlUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5j
cHAKQEAgLTI2MzcsNiArMjYzNywxMSBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6Zmx1c2hQZW5kaW5n
TW91c2VFdmVudENhbGxiYWNrcygpCiAgICAgbV9jYWxsYmFja0hhbmRsZXJzQWZ0ZXJQcm9jZXNz
aW5nUGVuZGluZ01vdXNlRXZlbnRzLmNsZWFyKCk7CiB9CiAKK3ZvaWQgV2ViUGFnZVByb3h5Ojpk
aXNwYXRjaFdoZWVsRXZlbnRXaXRob3V0U2Nyb2xsaW5nKGNvbnN0IFdlYldoZWVsRXZlbnQmIGV2
ZW50LCBib29sIGlzRmlyc3RFdmVudEluR2VzdHVyZSwgYm9vbCBoYXNOb25QYXNzaXZlV2hlZWxI
YW5kbGVycywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxl
cikKK3sKKyAgICBzZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OldlYlBhZ2U6OkRpc3BhdGNo
V2hlZWxFdmVudFdpdGhvdXRTY3JvbGxpbmcoZXZlbnQsIGlzRmlyc3RFdmVudEluR2VzdHVyZSwg
aGFzTm9uUGFzc2l2ZVdoZWVsSGFuZGxlcnMpLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7
Cit9CisKIHZvaWQgV2ViUGFnZVByb3h5OjpoYW5kbGVXaGVlbEV2ZW50KGNvbnN0IE5hdGl2ZVdl
YldoZWVsRXZlbnQmIGV2ZW50KQogewogI2lmIEVOQUJMRShBU1lOQ19TQ1JPTExJTkcpICYmIFBM
QVRGT1JNKENPQ09BKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFn
ZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAppbmRleCA5
OGU4NjM2ZThlYjYwY2Q0YTA0YmIwOGE4ZjlmMTBiZjc5OWIyYjdlLi5lNjM2YzRmMjVhN2MxZGEz
OGRhOTIxMDgzYmY1ZjMyNDdmMjYzMTBiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJQYWdlUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdl
UHJveHkuaApAQCAtMTgzNSw2ICsxODM1LDggQEAgcHVibGljOgogICAgIHZvaWQgY3JlYXRlQXBw
SGlnaGxpZ2h0SW5TZWxlY3RlZFJhbmdlKENyZWF0ZU5ld0dyb3VwRm9ySGlnaGxpZ2h0KTsKICNl
bmRpZgogCisgICAgdm9pZCBkaXNwYXRjaFdoZWVsRXZlbnRXaXRob3V0U2Nyb2xsaW5nKGNvbnN0
IFdlYldoZWVsRXZlbnQmLCBib29sIGlzRmlyc3RFdmVudEluR2VzdHVyZSwgYm9vbCBoYXNOb25Q
YXNzaXZlV2hlZWxIYW5kbGVycywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7CisK
IHByaXZhdGU6CiAgICAgV2ViUGFnZVByb3h5KFBhZ2VDbGllbnQmLCBXZWJQcm9jZXNzUHJveHkm
LCBSZWY8QVBJOjpQYWdlQ29uZmlndXJhdGlvbj4mJik7CiAgICAgdm9pZCBwbGF0Zm9ybUluaXRp
YWxpemUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9QYWdlQ2xp
ZW50SW1wbElPUy5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBs
SU9TLmgKaW5kZXggYmUwMzAxZmI3Y2IxOGJhYzdjZGUzOTBlZDNjZjFhODU1NWI5OGQ3ZC4uYzVk
YWMwNWJiZjM1MTJlNjEyMjE3NGM1YjQ2NDA2NDFmNzVmZmRjZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLmgKKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLmgKQEAgLTI3MSw2ICsyNzEsMTAg
QEAgcHJpdmF0ZToKIAogICAgIHZvaWQgc2hvd0RpY3RhdGlvbkFsdGVybmF0aXZlVUkoY29uc3Qg
V2ViQ29yZTo6RmxvYXRSZWN0JiwgV2ViQ29yZTo6RGljdGF0aW9uQ29udGV4dCkgZmluYWw7CiAK
KyNpZiBIQVZFKFVJU0NST0xMVklFV19BU1lOQ0hST05PVVNfU0NST0xMX0VWRU5UX0hBTkRMSU5H
KQorICAgIHZvaWQgaGFuZGxlQXN5bmNocm9ub3VzUHJldmVudGFibGVTY3JvbGxFdmVudChVSVNj
cm9sbFZpZXcgKiwgVUlTY3JvbGxFdmVudCAqLCB2b2lkICheY29tcGxldGlvbikoQk9PTCBoYW5k
bGVkKSkgZmluYWw7CisjZW5kaWYKKwogICAgIFdlYWtPYmpDUHRyPFdLQ29udGVudFZpZXc+IG1f
Y29udGVudFZpZXc7CiAgICAgUmV0YWluUHRyPFdLRWRpdG9yVW5kb1RhcmdldD4gbV91bmRvVGFy
Z2V0OwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9QYWdlQ2xp
ZW50SW1wbElPUy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1w
bElPUy5tbQppbmRleCBiNmFiOTYyYjczMzQzOTIzMmJmN2RkOTJjOTZhNmIyMTJjMWE4NmQyLi4x
MTlmMWZhZmNkYTc2NDk5NTdmMTBjOTFmYjZjNzZjZDhiZGI1ZGE0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJT1MubW0KKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLm1tCkBAIC05NjEsNiArOTYx
LDEzIEBAIHZvaWQgUGFnZUNsaWVudEltcGw6OnNldE1vdXNlRXZlbnRQb2xpY3koV2ViQ29yZTo6
TW91c2VFdmVudFBvbGljeSBwb2xpY3kpCiAjZW5kaWYKIH0KIAorI2lmIEhBVkUoVUlTQ1JPTExW
SUVXX0FTWU5DSFJPTk9VU19TQ1JPTExfRVZFTlRfSEFORExJTkcpCit2b2lkIFBhZ2VDbGllbnRJ
bXBsOjpoYW5kbGVBc3luY2hyb25vdXNQcmV2ZW50YWJsZVNjcm9sbEV2ZW50KFVJU2Nyb2xsVmll
dyAqc2Nyb2xsVmlldywgVUlTY3JvbGxFdmVudCAqc2Nyb2xsRXZlbnQsIHZvaWQgKF5jb21wbGV0
aW9uKShCT09MIGhhbmRsZWQpKQoreworICAgIFttX3dlYlZpZXcgX3Njcm9sbFZpZXc6c2Nyb2xs
VmlldyBhc3luY2hyb25vdXNseUhhbmRsZVNjcm9sbEV2ZW50OnNjcm9sbEV2ZW50IGNvbXBsZXRp
b246Y29tcGxldGlvbl07Cit9CisjZW5kaWYKKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKICNl
bmRpZiAvLyBQTEFURk9STShJT1NfRkFNSUxZKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJQYWdlLmNwcAppbmRleCBjNDQ2MzhmZWQ3YmQzOGQ2MWU5NjZjY2ZlMDM0MTI2
MzQ2NDI2Y2ZiLi5mN2FkOTJkN2Q5MTk2ZjkwM2FhNTcxNjhiZjk1MzJiZGFlMWE0ZTE4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcApAQCAtMjg2NCw3
ICsyODY0LDcgQEAgc3RhdGljIGJvb2wgaGFuZGxlV2hlZWxFdmVudChjb25zdCBXZWJXaGVlbEV2
ZW50JiB3aGVlbEV2ZW50LCBQYWdlKiBwYWdlLCBPcHRpb24KICAgICByZXR1cm4gcGFnZS0+dXNl
cklucHV0QnJpZGdlKCkuaGFuZGxlV2hlZWxFdmVudChwbGF0Zm9ybVdoZWVsRXZlbnQsIHByb2Nl
c3NpbmdTdGVwcyk7CiB9CiAKLXZvaWQgV2ViUGFnZTo6d2hlZWxFdmVudChjb25zdCBXZWJXaGVl
bEV2ZW50JiB3aGVlbEV2ZW50LCBPcHRpb25TZXQ8V2hlZWxFdmVudFByb2Nlc3NpbmdTdGVwcz4g
cHJvY2Vzc2luZ1N0ZXBzKQorYm9vbCBXZWJQYWdlOjp3aGVlbEV2ZW50KGNvbnN0IFdlYldoZWVs
RXZlbnQmIHdoZWVsRXZlbnQsIE9wdGlvblNldDxXaGVlbEV2ZW50UHJvY2Vzc2luZ1N0ZXBzPiBw
cm9jZXNzaW5nU3RlcHMpCiB7CiAgICAgbV91c2VyQWN0aXZpdHkuaW1wdWxzZSgpOwogCkBAIC0y
ODc0LDYgKzI4NzQsMjIgQEAgdm9pZCBXZWJQYWdlOjp3aGVlbEV2ZW50KGNvbnN0IFdlYldoZWVs
RXZlbnQmIHdoZWVsRXZlbnQsIE9wdGlvblNldDxXaGVlbEV2ZW50UHIKIAogICAgIGlmIChwcm9j
ZXNzaW5nU3RlcHMuY29udGFpbnMoV2hlZWxFdmVudFByb2Nlc3NpbmdTdGVwczo6TWFpblRocmVh
ZEZvclNjcm9sbGluZykpCiAgICAgICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGlk
UmVjZWl2ZUV2ZW50KHN0YXRpY19jYXN0PHVpbnQzMl90Pih3aGVlbEV2ZW50LnR5cGUoKSksIGhh
bmRsZWQpKTsKKworICAgIHJldHVybiBoYW5kbGVkOworfQorCit2b2lkIFdlYlBhZ2U6OmRpc3Bh
dGNoV2hlZWxFdmVudFdpdGhvdXRTY3JvbGxpbmcoY29uc3QgV2ViV2hlZWxFdmVudCYgd2hlZWxF
dmVudCwgYm9vbCBpc0ZpcnN0RXZlbnRJbkdlc3R1cmUsIGJvb2wgaGFzTm9uUGFzc2l2ZVdoZWVs
SGFuZGxlcnMsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRs
ZXIpCit7CisgICAgaWYgKGlzRmlyc3RFdmVudEluR2VzdHVyZSkKKyAgICAgICAgbV9jdXJyZW50
U2Nyb2xsR2VzdHVyZVdhc0luaXRpYWxseVByZXZlbnRlZCA9IFdURjo6bnVsbG9wdDsKKworICAg
IGJvb2wgaXNQcmV2ZW50YWJsZSA9IGhhc05vblBhc3NpdmVXaGVlbEhhbmRsZXJzICYmIG1fY3Vy
cmVudFNjcm9sbEdlc3R1cmVXYXNJbml0aWFsbHlQcmV2ZW50ZWQudmFsdWVPcihpc0ZpcnN0RXZl
bnRJbkdlc3R1cmUpOworICAgIGJvb2wgaGFuZGxlZCA9IHRoaXMtPndoZWVsRXZlbnQod2hlZWxF
dmVudCwgeyBpc1ByZXZlbnRhYmxlID8gV2hlZWxFdmVudFByb2Nlc3NpbmdTdGVwczo6TWFpblRo
cmVhZEZvckJsb2NraW5nRE9NRXZlbnREaXNwYXRjaCA6IFdoZWVsRXZlbnRQcm9jZXNzaW5nU3Rl
cHM6Ok1haW5UaHJlYWRGb3JOb25CbG9ja2luZ0RPTUV2ZW50RGlzcGF0Y2ggfSk7CisKKyAgICBp
ZiAoIW1fY3VycmVudFNjcm9sbEdlc3R1cmVXYXNJbml0aWFsbHlQcmV2ZW50ZWQpCisgICAgICAg
IG1fY3VycmVudFNjcm9sbEdlc3R1cmVXYXNJbml0aWFsbHlQcmV2ZW50ZWQgPSBpc1ByZXZlbnRh
YmxlID8gaGFuZGxlZCA6IGZhbHNlOworCisgICAgY29tcGxldGlvbkhhbmRsZXIoaGFuZGxlZCk7
CiB9CiAKIHN0YXRpYyBib29sIGhhbmRsZUtleUV2ZW50KGNvbnN0IFdlYktleWJvYXJkRXZlbnQm
IGtleWJvYXJkRXZlbnQsIFBhZ2UqIHBhZ2UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJQYWdlLmgKaW5kZXggZTA0ZTNhOGIyZDE3OGNjODQ5NWQ0NWJhZjgxZjM3ZGFlZmJi
N2I3MC4uMjA4Zjc1ZDRlMTE0YmJmMzJkYWUzYjAxZmE5MThjNTFjNGZmNDI5OCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaApAQCAtMTAxMyw3ICsxMDEzLDcg
QEAgcHVibGljOgogICAgIHZvaWQgY29udGV4dE1lbnVTaG93aW5nKCkgeyBtX2lzU2hvd2luZ0Nv
bnRleHRNZW51ID0gdHJ1ZTsgfQogI2VuZGlmCiAKLSAgICB2b2lkIHdoZWVsRXZlbnQoY29uc3Qg
V2ViV2hlZWxFdmVudCYsIE9wdGlvblNldDxXZWJDb3JlOjpXaGVlbEV2ZW50UHJvY2Vzc2luZ1N0
ZXBzPik7CisgICAgYm9vbCB3aGVlbEV2ZW50KGNvbnN0IFdlYldoZWVsRXZlbnQmLCBPcHRpb25T
ZXQ8V2ViQ29yZTo6V2hlZWxFdmVudFByb2Nlc3NpbmdTdGVwcz4pOwogCiAgICAgdm9pZCB3aGVl
bEV2ZW50SGFuZGxlcnNDaGFuZ2VkKGJvb2wpOwogICAgIHZvaWQgcmVjb21wdXRlU2hvcnRDaXJj
dWl0SG9yaXpvbnRhbFdoZWVsRXZlbnRzU3RhdGUoKTsKQEAgLTEzNzEsNiArMTM3MSw4IEBAIHB1
YmxpYzoKICAgICBib29sIGNyZWF0ZUFwcEhpZ2hsaWdodEluU2VsZWN0ZWRSYW5nZShDcmVhdGVO
ZXdHcm91cEZvckhpZ2hsaWdodCk7CiAjZW5kaWYKIAorICAgIHZvaWQgZGlzcGF0Y2hXaGVlbEV2
ZW50V2l0aG91dFNjcm9sbGluZyhjb25zdCBXZWJXaGVlbEV2ZW50JiwgYm9vbCBpc0ZpcnN0RXZl
bnRJbkdlc3R1cmUsIGJvb2wgaGFzTm9uUGFzc2l2ZVdoZWVsSGFuZGxlcnMsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoYm9vbCk+JiYpOworCiBwcml2YXRlOgogICAgIFdlYlBhZ2UoV2ViQ29yZTo6
UGFnZUlkZW50aWZpZXIsIFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMmJik7CiAKQEAgLTIxODEs
NiArMjE4Myw4IEBAIHByaXZhdGU6CiAjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKQogICAgIHN0ZDo6
dW5pcXVlX3B0cjxSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk+IG1fcmVtb3RlUmVuZGVyaW5n
QmFja2VuZFByb3h5OwogI2VuZGlmCisKKyAgICBPcHRpb25hbDxib29sPiBtX2N1cnJlbnRTY3Jv
bGxHZXN0dXJlV2FzSW5pdGlhbGx5UHJldmVudGVkOwogfTsKIAogI2lmICFQTEFURk9STShJT1Nf
RkFNSUxZKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
UGFnZS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBh
Z2UubWVzc2FnZXMuaW4KaW5kZXggODY0YzZlODE5YWM2OWMyMDFhZjQ2ZmQ1MGM2YWUyZDY1Zjg0
Y2NmOS4uZjA4Y2FhMGVkMWNhODFiMmI3MzNmZTE3YjU4ZmIxYjhiYTUzM2Q1YiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgor
KysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmlu
CkBAIC02MjEsNCArNjIxLDUgQEAgR2VuZXJhdGVTeW50aGV0aWNFZGl0aW5nQ29tbWFuZChlbnVt
OnVpbnQ4X3QgV2ViS2l0OjpTeW50aGV0aWNFZGl0aW5nQ29tbWFuZFR5cGUKICAgICBDcmVhdGVB
cHBIaWdobGlnaHRJblNlbGVjdGVkUmFuZ2UoZW51bTpib29sIFdlYktpdDo6Q3JlYXRlTmV3R3Jv
dXBGb3JIaWdobGlnaHQgY3JlYXRlTmV3R3JvdXApCiAjZW5kaWYKIAorICAgIERpc3BhdGNoV2hl
ZWxFdmVudFdpdGhvdXRTY3JvbGxpbmcoV2ViS2l0OjpXZWJXaGVlbEV2ZW50IGV2ZW50LCBib29s
IGlzRmlyc3RFdmVudEluR2VzdHVyZSwgYm9vbCBoYXNOb25QYXNzaXZlV2hlZWxIYW5kbGVycykg
LT4gKGJvb2wgaGFuZGxlZCkgQXN5bmMKIH0KZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBi
L1Rvb2xzL0NoYW5nZUxvZwppbmRleCA0MDQ1NTdlYzRkN2QyZThmNWUwMGM3NjAzZTkzODdjY2Nk
YWE2ZjNhLi5hYWU4NDdkZTJiN2NjYzhjYjc5ODI1NDVjNDM0NDk0OTdjZjY3YmQwIDEwMDY0NAot
LS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjIg
QEAKKzIwMjAtMTItMTAgIFRpbSBIb3J0b24gIDx0aW1vdGh5X2hvcnRvbkBhcHBsZS5jb20+CisK
KyAgICAgICAgVHJhY2twYWQgYW5kIE1vdXNlIHNjcm9sbCBldmVudHMgb24gaVBhZCBvbmx5IGZp
cmUgInBvaW50ZXJtb3ZlIiAtLSBub3QgIndoZWVsIgorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjEwMDcxCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS81
NDYxNjg1Mz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvaW9zL1dLU2Nyb2xsVmlld1Rlc3RzLm1tOgorICAgICAg
ICAoLVtXS1VJU2Nyb2xsRXZlbnQgaW5pdFdpdGhQaGFzZTpsb2NhdGlvbjpkZWx0YTpdKToKKyAg
ICAgICAgKC1bV0tVSVNjcm9sbEV2ZW50IHBoYXNlXSk6CisgICAgICAgICgtW1dLVUlTY3JvbGxF
dmVudCBsb2NhdGlvbkluVmlldzpdKToKKyAgICAgICAgKC1bV0tVSVNjcm9sbEV2ZW50IF9hZGp1
c3RlZEFjY2VsZXJhdGVkRGVsdGFJblZpZXc6XSk6CisgICAgICAgIChURVNUKToKKyAgICAgICAg
KiBUZXN0V2ViS2l0QVBJL2lvcy9VSUtpdFNQSS5oOgorICAgICAgICBBZGQgYSB2ZXJ5IHNpbXBs
ZSB0ZXN0IHRoYXQgZGlyZWN0bHkgY2FsbHMgdGhlIG5ldyBVSVNjcm9sbFZpZXdEZWxlZ2F0ZSBT
UEkKKyAgICAgICAgYW5kIHZlcmlmaWVzIHRoYXQgb25seSB0aGUgZmlyc3QgZXZlbnQgaXMgcHJl
dmVudGFibGUgKHVubGVzcyB0aGUgZmlyc3QgZXZlbnQKKyAgICAgICAgaXMgcHJldmVudGVkLCBp
biB3aGljaCBjYXNlIGFsbCBzdWJzZXF1ZW50IGV2ZW50cyBhcmUgcHJldmVudGFibGUpLgorCiAy
MDIwLTEyLTAzICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CiAK
ICAgICAgICAgSW50cm9kdWNlIG5ldyBkb3dubG9hZCBTUEkKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvaW9zL1dLU2Nyb2xsVmlld1Rlc3RzLm1tIGIvVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9pb3MvV0tTY3JvbGxWaWV3VGVzdHMubW0KaW5kZXggMGUyYTFjOWVjNTE5
YzdkZGRhNTZhMTlhYjRhMDE1NzhkNTBlNWVkNi4uMDNkNmFiZDhiNjNjMDhkNjE2NTc3M2Q0M2Iw
MWZjNWMyMjcxMjAzNCAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9pb3Mv
V0tTY3JvbGxWaWV3VGVzdHMubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9pb3Mv
V0tTY3JvbGxWaWV3VGVzdHMubW0KQEAgLTI5LDggKzI5LDUzIEBACiAKICNpbXBvcnQgIlBsYXRm
b3JtVXRpbGl0aWVzLmgiCiAjaW1wb3J0ICJUZXN0V0tXZWJWaWV3LmgiCisjaW1wb3J0ICJVSUtp
dFNQSS5oIgogI2ltcG9ydCA8V2ViS2l0L1dLV2ViVmlld1ByaXZhdGUuaD4KIAorI2lmIEhBVkUo
VUlTQ1JPTExWSUVXX0FTWU5DSFJPTk9VU19TQ1JPTExfRVZFTlRfSEFORExJTkcpCitAaW50ZXJm
YWNlIFdLVUlTY3JvbGxFdmVudCA6IFVJU2Nyb2xsRXZlbnQKKworLSAoaW5zdGFuY2V0eXBlKWlu
aXRXaXRoUGhhc2U6KFVJU2Nyb2xsUGhhc2UpcGhhc2UgbG9jYXRpb246KENHUG9pbnQpbG9jYXRp
b24gZGVsdGE6KENHVmVjdG9yKWRlbHRhOworCitAZW5kCisKK0BpbXBsZW1lbnRhdGlvbiBXS1VJ
U2Nyb2xsRXZlbnQgeworICAgIFVJU2Nyb2xsUGhhc2UgX3BoYXNlOworICAgIENHUG9pbnQgX2xv
Y2F0aW9uOworICAgIENHVmVjdG9yIF9kZWx0YTsKK30KKworLSAoaW5zdGFuY2V0eXBlKWluaXRX
aXRoUGhhc2U6KFVJU2Nyb2xsUGhhc2UpcGhhc2UgbG9jYXRpb246KENHUG9pbnQpbG9jYXRpb24g
ZGVsdGE6KENHVmVjdG9yKWRlbHRhCit7CisgICAgc2VsZiA9IFtzdXBlciBpbml0XTsKKyAgICBp
ZiAoIXNlbGYpCisgICAgICAgIHJldHVybiBuaWw7CisKKyAgICBfcGhhc2UgPSBwaGFzZTsKKyAg
ICBfbG9jYXRpb24gPSBsb2NhdGlvbjsKKyAgICBfZGVsdGEgPSBkZWx0YTsKKworICAgIHJldHVy
biBzZWxmOworfQorCistIChVSVNjcm9sbFBoYXNlKXBoYXNlCit7CisgICAgcmV0dXJuIF9waGFz
ZTsKK30KKworLSAoQ0dQb2ludClsb2NhdGlvbkluVmlldzooVUlWaWV3ICopdmlldworeworICAg
IHJldHVybiBfbG9jYXRpb247Cit9CisKKy0gKENHVmVjdG9yKV9hZGp1c3RlZEFjY2VsZXJhdGVk
RGVsdGFJblZpZXc6KFVJVmlldyAqKXZpZXcKK3sKKyAgICByZXR1cm4gX2RlbHRhOworfQorCitA
ZW5kCisjZW5kaWYgLy8gSEFWRShVSVNDUk9MTFZJRVdfQVNZTkNIUk9OT1VTX1NDUk9MTF9FVkVO
VF9IQU5ETElORykKKwogc3RhdGljIHZvaWQgdHJhdmVyc2VMYXllclRyZWUoQ0FMYXllciAqbGF5
ZXIsIHZvaWQoXmJsb2NrKShDQUxheWVyICopKQogewogICAgIGZvciAoQ0FMYXllciAqY2hpbGQg
aW4gbGF5ZXIuc3VibGF5ZXJzKQpAQCAtNzEsNCArMTE2LDg2IEBAIFRFU1QoV0tTY3JvbGxWaWV3
VGVzdHMsIFBvc2l0aW9uRml4ZWRMYXllckFmdGVyU2Nyb2xsaW5nKQogICAgIEVYUEVDVF9UUlVF
KGZvdW5kTGF5ZXJGb3JGaXhlZE5hdmlnYXRpb25CYXIpOwogfQogCisjaWYgSEFWRShVSVNDUk9M
TFZJRVdfQVNZTkNIUk9OT1VTX1NDUk9MTF9FVkVOVF9IQU5ETElORykKK1RFU1QoV0tTY3JvbGxW
aWV3VGVzdHMsIEFzeW5jaHJvbm91c1doZWVsRXZlbnRIYW5kbGluZykKK3sKKyAgICBhdXRvIHdl
YlZpZXcgPSBhZG9wdE5TKFtbVGVzdFdLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpDR1Jl
Y3RNYWtlKDAsIDAsIDMyMCwgNTAwKV0pOworICAgIFt3ZWJWaWV3IHN5bmNocm9ub3VzbHlMb2Fk
SFRNTFN0cmluZzpAIiIKKyAgICAgICAgIjxzdHlsZT4jc2Nyb2xsYWJsZSB7IHdpZHRoOiAyMDBw
eDsgaGVpZ2h0OiAyMDBweDsgfTwvc3R5bGU+IgorICAgICAgICAiPGRpdiBpZD0nc2Nyb2xsYWJs
ZSc+PC9kaXY+IgorICAgICAgICAiPHNjcmlwdD53aW5kb3cucHJldmVudERlZmF1bHRPblNjcm9s
bEV2ZW50cyA9IGZhbHNlOyIKKyAgICAgICAgImRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdzY3Jv
bGxhYmxlJykuYWRkRXZlbnRMaXN0ZW5lcignd2hlZWwnLCAiCisgICAgICAgICJmdW5jdGlvbiAo
ZSkgeyIKKyAgICAgICAgIiAgIHdpbmRvdy5sYXN0V2hlZWxFdmVudCA9IGU7IgorICAgICAgICAi
ICAgaWYgKHdpbmRvdy5wcmV2ZW50RGVmYXVsdE9uU2Nyb2xsRXZlbnRzKSIKKyAgICAgICAgIiAg
ICAgICBlLnByZXZlbnREZWZhdWx0KCk7IgorICAgICAgICAifSk8L3NjcmlwdD4iXTsKKyAgICBb
d2ViVmlldyB3YWl0Rm9yTmV4dFByZXNlbnRhdGlvblVwZGF0ZV07CisKKyAgICBfX2Jsb2NrIGJv
b2wgZG9uZTsKKyAgICBfX2Jsb2NrIGJvb2wgd2FzSGFuZGxlZDsKKworICAgIGF1dG8gc3luY2hy
b25vdXNseUhhbmRsZVNjcm9sbEV2ZW50ID0gXihVSVNjcm9sbFBoYXNlIHBoYXNlLCBDR1BvaW50
IGxvY2F0aW9uLCBDR1ZlY3RvciBkZWx0YSkgeworICAgICAgICBkb25lID0gZmFsc2U7CisgICAg
ICAgIGF1dG8gZXZlbnQgPSBhZG9wdE5TKFtbV0tVSVNjcm9sbEV2ZW50IGFsbG9jXSBpbml0V2l0
aFBoYXNlOnBoYXNlIGxvY2F0aW9uOmxvY2F0aW9uIGRlbHRhOmRlbHRhXSk7CisgICAgICAgIFt3
ZWJWaWV3IF9zY3JvbGxWaWV3Olt3ZWJWaWV3IHNjcm9sbFZpZXddIGFzeW5jaHJvbm91c2x5SGFu
ZGxlU2Nyb2xsRXZlbnQ6ZXZlbnQuZ2V0KCkgY29tcGxldGlvbjpeKEJPT0wgaGFuZGxlZCkgewor
ICAgICAgICAgICAgd2FzSGFuZGxlZCA9IGhhbmRsZWQ7CisgICAgICAgICAgICBkb25lID0gdHJ1
ZTsKKyAgICAgICAgfV07CisgICAgICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmZG9uZSk7
CisgICAgfTsKKworICAgIC8vIERvbid0IHByZXZlbnREZWZhdWx0KCkgYXQgYWxsLgorICAgIHN5
bmNocm9ub3VzbHlIYW5kbGVTY3JvbGxFdmVudChVSVNjcm9sbFBoYXNlTWF5QmVnaW4sIENHUG9p
bnRNYWtlKDEwMCwgMTAwKSwgQ0dWZWN0b3JNYWtlKDAsIDApKTsKKyAgICBFWFBFQ1RfRkFMU0Uo
d2FzSGFuZGxlZCk7CisgICAgc3luY2hyb25vdXNseUhhbmRsZVNjcm9sbEV2ZW50KFVJU2Nyb2xs
UGhhc2VCZWdhbiwgQ0dQb2ludE1ha2UoMTAwLCAxMDApLCBDR1ZlY3Rvck1ha2UoMCwgMTApKTsK
KyAgICBFWFBFQ1RfRkFMU0Uod2FzSGFuZGxlZCk7CisgICAgRVhQRUNUX1RSVUUoW1t3ZWJWaWV3
IG9iamVjdEJ5RXZhbHVhdGluZ0phdmFTY3JpcHQ6QCJ3aW5kb3cubGFzdFdoZWVsRXZlbnQuY2Fu
Y2VsYWJsZSJdIGludFZhbHVlXSk7CisgICAgRVhQRUNUX0VRKC0xMCwgW1t3ZWJWaWV3IG9iamVj
dEJ5RXZhbHVhdGluZ0phdmFTY3JpcHQ6QCJ3aW5kb3cubGFzdFdoZWVsRXZlbnQuZGVsdGFZIl0g
aW50VmFsdWVdKTsKKyAgICBzeW5jaHJvbm91c2x5SGFuZGxlU2Nyb2xsRXZlbnQoVUlTY3JvbGxQ
aGFzZUNoYW5nZWQsIENHUG9pbnRNYWtlKDEwMCwgMTAwKSwgQ0dWZWN0b3JNYWtlKDAsIDEwKSk7
CisgICAgRVhQRUNUX0ZBTFNFKHdhc0hhbmRsZWQpOworICAgIHN5bmNocm9ub3VzbHlIYW5kbGVT
Y3JvbGxFdmVudChVSVNjcm9sbFBoYXNlRW5kZWQsIENHUG9pbnRNYWtlKDEwMCwgMTAwKSwgQ0dW
ZWN0b3JNYWtlKDAsIDApKTsKKyAgICBFWFBFQ1RfRkFMU0Uod2FzSGFuZGxlZCk7CisKKyAgICAv
LyBwcmV2ZW50RGVmYXVsdCgpIG9uIGFsbCBldmVudHMuCisgICAgW3dlYlZpZXcgc3RyaW5nQnlF
dmFsdWF0aW5nSmF2YVNjcmlwdDpAIndpbmRvdy5wcmV2ZW50RGVmYXVsdE9uU2Nyb2xsRXZlbnRz
ID0gdHJ1ZTsiXTsKKyAgICBzeW5jaHJvbm91c2x5SGFuZGxlU2Nyb2xsRXZlbnQoVUlTY3JvbGxQ
aGFzZU1heUJlZ2luLCBDR1BvaW50TWFrZSgxMDAsIDEwMCksIENHVmVjdG9yTWFrZSgwLCAwKSk7
CisgICAgRVhQRUNUX0ZBTFNFKHdhc0hhbmRsZWQpOworICAgIHN5bmNocm9ub3VzbHlIYW5kbGVT
Y3JvbGxFdmVudChVSVNjcm9sbFBoYXNlQmVnYW4sIENHUG9pbnRNYWtlKDEwMCwgMTAwKSwgQ0dW
ZWN0b3JNYWtlKDAsIDEwKSk7CisgICAgRVhQRUNUX1RSVUUod2FzSGFuZGxlZCk7CisgICAgc3lu
Y2hyb25vdXNseUhhbmRsZVNjcm9sbEV2ZW50KFVJU2Nyb2xsUGhhc2VDaGFuZ2VkLCBDR1BvaW50
TWFrZSgxMDAsIDEwMCksIENHVmVjdG9yTWFrZSgwLCAxMCkpOworICAgIEVYUEVDVF9UUlVFKHdh
c0hhbmRsZWQpOworICAgIHN5bmNocm9ub3VzbHlIYW5kbGVTY3JvbGxFdmVudChVSVNjcm9sbFBo
YXNlRW5kZWQsIENHUG9pbnRNYWtlKDEwMCwgMTAwKSwgQ0dWZWN0b3JNYWtlKDAsIDApKTsKKyAg
ICBFWFBFQ1RfRkFMU0Uod2FzSGFuZGxlZCk7CisKKyAgICAvLyBwcmV2ZW50RGVmYXVsdCgpIG9u
IGFsbCBidXQgdGhlIGJlZ2luIGV2ZW50OyBpdCB3aWxsIGJlIGlnbm9yZWQuCisgICAgW3dlYlZp
ZXcgc3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpAIndpbmRvdy5wcmV2ZW50RGVmYXVsdE9u
U2Nyb2xsRXZlbnRzID0gZmFsc2U7Il07CisgICAgc3luY2hyb25vdXNseUhhbmRsZVNjcm9sbEV2
ZW50KFVJU2Nyb2xsUGhhc2VNYXlCZWdpbiwgQ0dQb2ludE1ha2UoMTAwLCAxMDApLCBDR1ZlY3Rv
ck1ha2UoMCwgMCkpOworICAgIEVYUEVDVF9GQUxTRSh3YXNIYW5kbGVkKTsKKyAgICBzeW5jaHJv
bm91c2x5SGFuZGxlU2Nyb2xsRXZlbnQoVUlTY3JvbGxQaGFzZUJlZ2FuLCBDR1BvaW50TWFrZSgx
MDAsIDEwMCksIENHVmVjdG9yTWFrZSgwLCAxMCkpOworICAgIEVYUEVDVF9UUlVFKFtbd2ViVmll
dyBvYmplY3RCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OkAid2luZG93Lmxhc3RXaGVlbEV2ZW50LmNh
bmNlbGFibGUiXSBpbnRWYWx1ZV0pOworICAgIEVYUEVDVF9GQUxTRSh3YXNIYW5kbGVkKTsKKyAg
ICBbd2ViVmlldyBzdHJpbmdCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OkAid2luZG93LnByZXZlbnRE
ZWZhdWx0T25TY3JvbGxFdmVudHMgPSB0cnVlOyJdOworICAgIHN5bmNocm9ub3VzbHlIYW5kbGVT
Y3JvbGxFdmVudChVSVNjcm9sbFBoYXNlQ2hhbmdlZCwgQ0dQb2ludE1ha2UoMTAwLCAxMDApLCBD
R1ZlY3Rvck1ha2UoMCwgMTApKTsKKyAgICBFWFBFQ1RfRkFMU0Uod2FzSGFuZGxlZCk7CisgICAg
RVhQRUNUX0ZBTFNFKFtbd2ViVmlldyBvYmplY3RCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OkAid2lu
ZG93Lmxhc3RXaGVlbEV2ZW50LmNhbmNlbGFibGUiXSBpbnRWYWx1ZV0pOworICAgIHN5bmNocm9u
b3VzbHlIYW5kbGVTY3JvbGxFdmVudChVSVNjcm9sbFBoYXNlRW5kZWQsIENHUG9pbnRNYWtlKDEw
MCwgMTAwKSwgQ0dWZWN0b3JNYWtlKDAsIDApKTsKKyAgICBFWFBFQ1RfRkFMU0Uod2FzSGFuZGxl
ZCk7CisKKyAgICAvLyBwcmV2ZW50RGVmYXVsdCgpIG9uIHRoZSBiZWdpbiBldmVudCwgYW5kIHNv
bWUgc3Vic2VxdWVudCBldmVudHMuCisgICAgW3dlYlZpZXcgc3RyaW5nQnlFdmFsdWF0aW5nSmF2
YVNjcmlwdDpAIndpbmRvdy5wcmV2ZW50RGVmYXVsdE9uU2Nyb2xsRXZlbnRzID0gdHJ1ZTsiXTsK
KyAgICBzeW5jaHJvbm91c2x5SGFuZGxlU2Nyb2xsRXZlbnQoVUlTY3JvbGxQaGFzZU1heUJlZ2lu
LCBDR1BvaW50TWFrZSgxMDAsIDEwMCksIENHVmVjdG9yTWFrZSgwLCAwKSk7CisgICAgRVhQRUNU
X0ZBTFNFKHdhc0hhbmRsZWQpOworICAgIHN5bmNocm9ub3VzbHlIYW5kbGVTY3JvbGxFdmVudChV
SVNjcm9sbFBoYXNlQmVnYW4sIENHUG9pbnRNYWtlKDEwMCwgMTAwKSwgQ0dWZWN0b3JNYWtlKDAs
IDEwKSk7CisgICAgRVhQRUNUX1RSVUUod2FzSGFuZGxlZCk7CisgICAgc3luY2hyb25vdXNseUhh
bmRsZVNjcm9sbEV2ZW50KFVJU2Nyb2xsUGhhc2VDaGFuZ2VkLCBDR1BvaW50TWFrZSgxMDAsIDEw
MCksIENHVmVjdG9yTWFrZSgwLCAxMCkpOworICAgIEVYUEVDVF9UUlVFKHdhc0hhbmRsZWQpOwor
ICAgIFt3ZWJWaWV3IHN0cmluZ0J5RXZhbHVhdGluZ0phdmFTY3JpcHQ6QCJ3aW5kb3cucHJldmVu
dERlZmF1bHRPblNjcm9sbEV2ZW50cyA9IGZhbHNlOyJdOworICAgIHN5bmNocm9ub3VzbHlIYW5k
bGVTY3JvbGxFdmVudChVSVNjcm9sbFBoYXNlQ2hhbmdlZCwgQ0dQb2ludE1ha2UoMTAwLCAxMDAp
LCBDR1ZlY3Rvck1ha2UoMCwgMTApKTsKKyAgICBFWFBFQ1RfRkFMU0Uod2FzSGFuZGxlZCk7Cisg
ICAgc3luY2hyb25vdXNseUhhbmRsZVNjcm9sbEV2ZW50KFVJU2Nyb2xsUGhhc2VFbmRlZCwgQ0dQ
b2ludE1ha2UoMTAwLCAxMDApLCBDR1ZlY3Rvck1ha2UoMCwgMCkpOworICAgIEVYUEVDVF9GQUxT
RSh3YXNIYW5kbGVkKTsKK30KKyNlbmRpZiAvLyBIQVZFKFVJU0NST0xMVklFV19BU1lOQ0hST05P
VVNfU0NST0xMX0VWRU5UX0hBTkRMSU5HKQorCiAjZW5kaWYgLy8gUExBVEZPUk0oSU9TX0ZBTUlM
WSkKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvaW9zL1VJS2l0U1BJLmggYi9Ub29s
cy9UZXN0V2ViS2l0QVBJL2lvcy9VSUtpdFNQSS5oCmluZGV4IGRkNWFlY2VjOTA1NDI5YzlhMDI1
YzUyYzEwZjc0NDU3OTJmODQ5MGYuLmI1M2VhNTYwZjg0YTdkYzI4ZTc0N2VlZmNlZTU1YTUzOGU2
ZWRkMTkgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvaW9zL1VJS2l0U1BJLmgKKysr
IGIvVG9vbHMvVGVzdFdlYktpdEFQSS9pb3MvVUlLaXRTUEkuaApAQCAtMzcsNiArMzcsOCBAQAog
I2ltcG9ydCA8VUlLaXQvVUlLZXlib2FyZF9Qcml2YXRlLmg+CiAjaW1wb3J0IDxVSUtpdC9VSVJl
c3BvbmRlcl9Qcml2YXRlLmg+CiAjaW1wb3J0IDxVSUtpdC9VSVNjcmVlbl9Qcml2YXRlLmg+Cisj
aW1wb3J0IDxVSUtpdC9VSVNjcm9sbEV2ZW50X1ByaXZhdGUuaD4KKyNpbXBvcnQgPFVJS2l0L1VJ
U2Nyb2xsVmlld19Gb3JXZWJLaXRPbmx5Lmg+CiAjaW1wb3J0IDxVSUtpdC9VSVNjcm9sbFZpZXdf
UHJpdmF0ZS5oPgogI2ltcG9ydCA8VUlLaXQvVUlUZXh0QXV0b2ZpbGxTdWdnZXN0aW9uLmg+CiAj
aW1wb3J0IDxVSUtpdC9VSVRleHRJbnB1dE11bHRpRG9jdW1lbnQuaD4KQEAgLTI0MCw2ICsyNDIs
MTMgQEAgSUdOT1JFX1dBUk5JTkdTX0VORAogQHByb3BlcnR5IChub25hdG9taWMsIGdldHRlcj1f
aXNBdXRvbWF0aWNDb250ZW50T2Zmc2V0QWRqdXN0bWVudEVuYWJsZWQsIHNldHRlcj1fc2V0QXV0
b21hdGljQ29udGVudE9mZnNldEFkanVzdG1lbnRFbmFibGVkOikgQk9PTCBpc0F1dG9tYXRpY0Nv
bnRlbnRPZmZzZXRBZGp1c3RtZW50RW5hYmxlZDsKIEBlbmQKIAorQGludGVyZmFjZSBVSVNjcm9s
bEV2ZW50IDogVUlFdmVudAorQGVuZAorCitAaW50ZXJmYWNlIE5TT2JqZWN0IChVSVNjcm9sbFZp
ZXdEZWxlZ2F0ZV9Gb3JXZWJLaXRPbmx5KQorLSAodm9pZClfc2Nyb2xsVmlldzooVUlTY3JvbGxW
aWV3ICopc2Nyb2xsVmlldyBhc3luY2hyb25vdXNseUhhbmRsZVNjcm9sbEV2ZW50OihVSVNjcm9s
bEV2ZW50ICopc2Nyb2xsRXZlbnQgY29tcGxldGlvbjoodm9pZCAoXikoQk9PTCBoYW5kbGVkKSlj
b21wbGV0aW9uOworQGVuZAorCiAjZW5kaWYgLy8gVVNFKEFQUExFX0lOVEVSTkFMX1NESykKIAog
I2RlZmluZSBVSVdLRG9jdW1lbnRSZXF1ZXN0TWFya2VkVGV4dFJlY3RzICgxIDw8IDUpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>415951</attachid>
            <date>2020-12-10 17:27:55 -0800</date>
            <delta_ts>2020-12-11 00:42:57 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-210071-20201210172754.patch</filename>
            <type>text/plain</type>
            <size>41705</size>
            <attacher name="Tim Horton">thorton</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcwNDM1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDMzZTNhZjVkNGY3MmUxNDlhYTYyNTBi
Y2M4YmNlODgxODhlNTM5OTEuLjkxMTBhNDU3MTdkOWEwNzQ5NmI0YTRmNGE5ZmYyMmU4MTI3YmQw
ZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMjAtMTItMTAgIFRpbSBIb3J0b24gIDx0aW1vdGh5
X2hvcnRvbkBhcHBsZS5jb20+CisKKyAgICAgICAgVHJhY2twYWQgYW5kIE1vdXNlIHNjcm9sbCBl
dmVudHMgb24gaVBhZCBvbmx5IGZpcmUgInBvaW50ZXJtb3ZlIiAtLSBub3QgIndoZWVsIgorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjEwMDcxCisgICAg
ICAgIDxyZGFyOi8vcHJvYmxlbS81NDYxNjg1Mz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICAqIHd0Zi9QbGF0Zm9ybUVuYWJsZUNvY29hLmg6CisgICAg
ICAgIEVuYWJsZSB3aGVlbCBldmVudCByZWdpb25zIG9uIGlPUyArIG1hY0NhdGFseXN0LgorCiAy
MDIwLTEyLTAzICBBZGFtIFJvYmVuICA8YXJvYmVuQGFwcGxlLmNvbT4KIAogICAgICAgICBBZG9w
dCBGQUxMQkFDS19QTEFURk9STQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9n
IGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDdhZTI4OTMwYjc0ZmJmZDczMDFkNjhm
OWIxYjBiY2Y3OGE4NmM5ZjcuLjI2MGFkY2Y1Y2Y1NGQ1Mzg1ZWU1ODQxNTE5YjExM2QzNGM5ZWVl
YWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMSBAQAorMjAyMC0xMi0xMCAgVGltIEhvcnRvbiAg
PHRpbW90aHlfaG9ydG9uQGFwcGxlLmNvbT4KKworICAgICAgICBUcmFja3BhZCBhbmQgTW91c2Ug
c2Nyb2xsIGV2ZW50cyBvbiBpUGFkIG9ubHkgZmlyZSAicG9pbnRlcm1vdmUiIC0tIG5vdCAid2hl
ZWwiCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTAw
NzEKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzU0NjE2ODUzPgorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogcGFnZS9FdmVudEhhbmRsZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjpoYW5kbGVXaGVlbEV2ZW50SW50ZXJuYWwp
OgorICAgICAgICBGaXggYSBtaW5vciBsb2dpYyBlcnJvciB3aGVuIFdIRUVMX0VWRU5UX0xBVENI
SU5HIGlzIG9mZjsgYWxsb3dTY3JvbGxpbmcKKyAgICAgICAgd291bGQgYWx3YXlzIGJlIHRydWUs
IGV2ZW4gaWYgdGhlIHNldCBvZiBwcm9jZXNzaW5nIHN0ZXBzIGRvZXMgbm90IGluY2x1ZGUgYW55
IHNjcm9sbGluZyBzdGVwcy4KKworICAgICAgICAqIHJlbmRlcmluZy9FdmVudFJlZ2lvbi5oOgor
ICAgICAgICAoV2ViQ29yZTo6RXZlbnRSZWdpb246OmVuY29kZSBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpFdmVudFJlZ2lvbjo6ZGVjb2RlKToKKyAgICAgICAgRW5jb2RlL2RlY29kZSB0aGUg
d2hlZWwgYW5kIHBhc3NpdmUgd2hlZWwgZXZlbnQgcmVnaW9ucy4KKwogMjAyMC0xMi0wNCAgUGVu
ZyBMaXUgIDxwZW5nLmxpdTZAYXBwbGUuY29tPgogCiAgICAgICAgIFtNU0VdIE1vdmUgdHJhY2sg
YnVmZmVyIG1hbmFnZW1lbnQgZnJvbSBTb3VyY2VCdWZmZXIgdG8gU291cmNlQnVmZmVyUHJpdmF0
ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZwppbmRleCA2M2YzNDI5MDgyM2IxYzQ4Yzc3MWEzYzRmMzg1MmNhMjIzNTNlNDRkLi4x
NGM5MDI4MzBiMWIxMmQyNTJjMWJhYmIyZGZmZTQ1YjRlNDQ1ODUzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDY3IEBACisyMDIwLTEyLTEwICBUaW0gSG9ydG9uICA8dGltb3RoeV9ob3J0b25AYXBwbGUu
Y29tPgorCisgICAgICAgIFRyYWNrcGFkIGFuZCBNb3VzZSBzY3JvbGwgZXZlbnRzIG9uIGlQYWQg
b25seSBmaXJlICJwb2ludGVybW92ZSIgLS0gbm90ICJ3aGVlbCIKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxMDA3MQorICAgICAgICA8cmRhcjovL3By
b2JsZW0vNTQ2MTY4NTM+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgKiBQbGF0Zm9ybS9zcGkvaW9zL1VJS2l0U1BJLmg6CisgICAgICAgIEFkZCBzb21l
IFNQSS4KKworICAgICAgICAqIFNoYXJlZC9pb3MvV2ViSU9TRXZlbnRGYWN0b3J5Lmg6CisgICAg
ICAgICogU2hhcmVkL2lvcy9XZWJJT1NFdmVudEZhY3RvcnkubW06CisgICAgICAgICh0b1dlYlBo
YXNlKToKKyAgICAgICAgKFdlYklPU0V2ZW50RmFjdG9yeTo6Y3JlYXRlV2ViV2hlZWxFdmVudCk6
CisgICAgICAgIEFkZCBhIFVJU2Nyb2xsRXZlbnQtPldlYldoZWVsRXZlbnQgY29udmVyc2lvbiBo
ZWxwZXIuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld0ludGVybmFs
Lmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9pb3MvV0tXZWJWaWV3SU9TLmg6CisgICAgICAg
ICogVUlQcm9jZXNzL0FQSS9pb3MvV0tXZWJWaWV3SU9TLm1tOgorICAgICAgICAoLVtXS1dlYlZp
ZXcgX3NldHVwU2Nyb2xsQW5kQ29udGVudFZpZXdzXSk6CisgICAgICAgIEVuYWJsZSBhc3luYyBV
SVNjcm9sbEV2ZW50IGhhbmRsaW5nIGZvciBXS1Njcm9sbFZpZXcuCisKKyAgICAgICAgKC1bV0tX
ZWJWaWV3IF9zY3JvbGxWaWV3OmFzeW5jaHJvbm91c2x5SGFuZGxlU2Nyb2xsRXZlbnQ6Y29tcGxl
dGlvbjpdKToKKyAgICAgICAgQWRvcHQgbmV3IFVJS2l0IFNQSSB0byBhc3luY2hyb25vdXNseSBk
ZWZlciBVSVNjcm9sbEV2ZW50cy4KKyAgICAgICAgV2UgcGFzcyB0aGVtIHRvIHRoZSBXZWIgQ29u
dGVudCBwcm9jZXNzLCB3aGVyZSB0aGV5IGFyZSBwcm9jZXNzZWQgCisgICAgICAgICpvbmx5KiBm
b3IgZXZlbnQgaGFuZGxpbmcsIG5vdCBmb3Igc2Nyb2xsaW5nLgorCisgICAgICAgIElmIHRoZSBl
dmVudCBpcyBub3QgcHJldmVudGFibGUsIHdlIHdpbGwgc3luY2hyb25vdXNseSByZXBseSB0aGF0
IGl0IHdhcworICAgICAgICBub3QgaGFuZGxlZDsgaWYgaXQgaXMgcHJldmVudGFibGUsIG9yIHdl
IGRvbid0IHlldCBrbm93IGlmIGl0IHdpbGwgYmUsCisgICAgICAgIHdlJ2xsIHdhaXQgdG8gaGVh
ciBiYWNrIGZyb20gdGhlIFdlYiBDb250ZW50IHByb2Nlc3MgYmVmb3JlIHJlcGx5aW5nLgorCisg
ICAgICAgIFVJS2l0IHdpbGwgd2FpdCB1bnRpbCBvdXIgcmVwbHkgdG8gYXBwbHkgdGhlIFVJU2Ny
b2xsRXZlbnQgdG8gdGhlIFVJU2Nyb2xsVmlldy4KKworICAgICAgICAqIFVJUHJvY2Vzcy9QYWdl
Q2xpZW50Lmg6CisgICAgICAgICogVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9pb3MvUmVtb3Rl
TGF5ZXJUcmVlVmlld3MuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL2lv
cy9SZW1vdGVMYXllclRyZWVWaWV3cy5tbToKKyAgICAgICAgKFdlYktpdDo6ZXZlbnRMaXN0ZW5l
clR5cGVzQXRQb2ludCk6CisgICAgICAgIEV4cG9zZSBhIG1lY2hhbmlzbSBmb3IgcmV0cmlldmlu
ZyB0aGUgZXZlbnQgbGlzdGVuZXIgdHlwZXMgYXQgYSBnaXZlbiBwb2ludCwKKyAgICAgICAgc2lt
aWxhciB0byB0aGUgZXhpc3RpbmcgbWVjaGFuaXNtIGZvciB0b3VjaCBldmVudCBsaXN0ZW5lcnMu
CisKKyAgICAgICAgKC1bV0tDaGlsZFNjcm9sbFZpZXcgaW5pdFdpdGhGcmFtZTpdKToKKyAgICAg
ICAgRW5hYmxlIGFzeW5jIFVJU2Nyb2xsRXZlbnQgaGFuZGxpbmcgZm9yIFdLQ2hpbGRTY3JvbGxW
aWV3LgorCisgICAgICAgICogVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9pb3MvU2Nyb2xsaW5n
VHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZUlPUy5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9SZW1v
dGVMYXllclRyZWUvaW9zL1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVJT1MubW06
CisgICAgICAgICgtW1dLU2Nyb2xsaW5nTm9kZVNjcm9sbFZpZXdEZWxlZ2F0ZSBfc2Nyb2xsVmll
dzphc3luY2hyb25vdXNseUhhbmRsZVNjcm9sbEV2ZW50OmNvbXBsZXRpb246XSk6CisgICAgICAg
IChXZWJLaXQ6OlNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVJT1M6OmhhbmRsZUFz
eW5jaHJvbm91c1ByZXZlbnRhYmxlU2Nyb2xsRXZlbnQpOgorICAgICAgICBQbHVtYiBhc3luYyBz
Y3JvbGwgZXZlbnRzIGZvciBzdWItc2Nyb2xsYWJsZSByZWdpb25zIHRocm91Z2ggUGFnZUNsaWVu
dAorICAgICAgICB0byBXS1dlYlZpZXc7IHdlIGRvbid0IGFjdHVhbGx5IGNhcmUgd2hpY2ggVUlT
Y3JvbGxWaWV3IHRoZXkncmUgaGFuZGVkIHRvLAorICAgICAgICBzaW5jZSB3ZSByZS1oaXQtdGVz
dCBvdXJzZWx2ZXMuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpkaXNwYXRjaFdoZWVsRXZlbnRXaXRob3V0U2Ny
b2xsaW5nKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5Lmg6CisgICAgICAgICog
VUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9p
b3MvUGFnZUNsaWVudEltcGxJT1MubW06CisgICAgICAgIChXZWJLaXQ6OlBhZ2VDbGllbnRJbXBs
OjpoYW5kbGVBc3luY2hyb25vdXNQcmV2ZW50YWJsZVNjcm9sbEV2ZW50KToKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6
OndoZWVsRXZlbnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpkaXNwYXRjaFdoZWVsRXZl
bnRXaXRob3V0U2Nyb2xsaW5nKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFn
ZS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluOgor
CiAyMDIwLTEyLTA0ICBQZW5nIExpdSAgPHBlbmcubGl1NkBhcHBsZS5jb20+CiAKICAgICAgICAg
W01TRV0gTW92ZSB0cmFjayBidWZmZXIgbWFuYWdlbWVudCBmcm9tIFNvdXJjZUJ1ZmZlciB0byBT
b3VyY2VCdWZmZXJQcml2YXRlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybUVu
YWJsZUNvY29hLmggYi9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybUVuYWJsZUNvY29hLmgKaW5kZXgg
NWFkZGE4ODZlYTBlNjc2N2Y1Zjc5MDk5OGI2YWI4MWU4MTdiMDZkNC4uNmIwZWY5NWE3ZjU5ZDhk
MWZlNTRmNDRiNDgxYzNmN2M0ODI3ZTRlYyAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvUGxh
dGZvcm1FbmFibGVDb2NvYS5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtRW5hYmxlQ29j
b2EuaApAQCAtNTIyLDcgKzUyMiw3IEBACiAjZGVmaW5lIEVOQUJMRV9UT1VDSF9BQ1RJT05fUkVH
SU9OUyAxCiAjZW5kaWYKIAotI2lmICFkZWZpbmVkKEVOQUJMRV9XSEVFTF9FVkVOVF9SRUdJT05T
KSAmJiBQTEFURk9STShNQUMpCisjaWYgIWRlZmluZWQoRU5BQkxFX1dIRUVMX0VWRU5UX1JFR0lP
TlMpICYmIChQTEFURk9STShNQUMpIHx8IFBMQVRGT1JNKElPUykgfHwgUExBVEZPUk0oTUFDQ0FU
QUxZU1QpKQogI2RlZmluZSBFTkFCTEVfV0hFRUxfRVZFTlRfUkVHSU9OUyAxCiAjZW5kaWYKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwCmluZGV4IDZhYmRkYjI1NjNlOTA1MWY5NGYw
ZWM4ODZiNDk4YWZjN2Y3MWI3ODkuLmYwNDA5MjA3NWUwMmZlNTkzMDY0NjliYTk3ZDkyNjJmYzc4
NjRhMTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAKQEAgLTI5MDUsMTAgKzI5
MDUsMTMgQEAgYm9vbCBFdmVudEhhbmRsZXI6OmhhbmRsZVdoZWVsRXZlbnRJbnRlcm5hbChjb25z
dCBQbGF0Zm9ybVdoZWVsRXZlbnQmIGV2ZW50LCBPcHQKICAgICAgICAgcmV0dXJuIGZhbHNlOwog
CiAgICAgYm9vbCBoYW5kbGVkRXZlbnQgPSBmYWxzZTsKLSAgICBib29sIGFsbG93U2Nyb2xsaW5n
ID0gdHJ1ZTsKKyAgICBib29sIGFsbG93U2Nyb2xsaW5nID0gbV9jdXJyZW50V2hlZWxFdmVudEFs
bG93c1Njcm9sbGluZzsKKwogI2lmIEVOQUJMRShXSEVFTF9FVkVOVF9MQVRDSElORykKLSAgICBh
bGxvd1Njcm9sbGluZyA9IG1fY3VycmVudFdoZWVsRXZlbnRBbGxvd3NTY3JvbGxpbmcgJiYgbV9m
cmFtZS5wYWdlKCktPnNjcm9sbExhdGNoaW5nQ29udHJvbGxlcigpLmxhdGNoaW5nQWxsb3dzU2Ny
b2xsaW5nSW5GcmFtZShtX2ZyYW1lLCBzY3JvbGxhYmxlQXJlYSk7CisgICAgaWYgKGFsbG93U2Ny
b2xsaW5nKQorICAgICAgICBhbGxvd1Njcm9sbGluZyA9IG1fZnJhbWUucGFnZSgpLT5zY3JvbGxM
YXRjaGluZ0NvbnRyb2xsZXIoKS5sYXRjaGluZ0FsbG93c1Njcm9sbGluZ0luRnJhbWUobV9mcmFt
ZSwgc2Nyb2xsYWJsZUFyZWEpOwogI2VuZGlmCisKICAgICBpZiAoYWxsb3dTY3JvbGxpbmcpIHsK
ICAgICAgICAgLy8gRklYTUU6IHByb2Nlc3NXaGVlbEV2ZW50Rm9yU2Nyb2xsaW5nKCkgaXMgb25s
eSBjYWxsZWQgZm9yIEZyYW1lVmlldyBzY3JvbGxpbmcsIG5vdCBvdmVyZmxvdyBzY3JvbGxpbmcs
IHdoaWNoIGlzIGNvbmZ1c2luZy4KICAgICAgICAgaGFuZGxlZEV2ZW50ID0gcHJvY2Vzc1doZWVs
RXZlbnRGb3JTY3JvbGxpbmcoZXZlbnQsIHNjcm9sbGFibGVBcmVhLCBoYW5kbGluZyk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5oIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9FdmVudEhhbmRsZXIuaAppbmRleCBhZDhhODNhNTdkNmQwYjYwNzE4YmU3MDA2MDA2
MDVjZDIxNTJhMGIwLi41MTUzZjU1ZjBlOWQzN2YxOTg4OGQxODRkZGE0YjIyM2RiMzFiNTM0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmgKQEAgLTM0Niw2ICszNDYsMTAgQEAgcHVibGlj
OgogCiAgICAgV0VCQ09SRV9FWFBPUlQgT3B0aW9uYWw8Q3Vyc29yPiBzZWxlY3RDdXJzb3IoY29u
c3QgSGl0VGVzdFJlc3VsdCYsIGJvb2wgc2hpZnRLZXkpOwogCisjaWYgRU5BQkxFKEtJTkVUSUNf
U0NST0xMSU5HKQorICAgIE9wdGlvbmFsPFdoZWVsU2Nyb2xsR2VzdHVyZVN0YXRlPiB3aGVlbFNj
cm9sbEdlc3R1cmVTdGF0ZSgpIGNvbnN0IHsgcmV0dXJuIG1fd2hlZWxTY3JvbGxHZXN0dXJlU3Rh
dGU7IH0KKyNlbmRpZgorCiAjaWYgRU5BQkxFKERSQUdfU1VQUE9SVCkKICAgICBFbGVtZW50KiBk
cmFnZ2luZ0VsZW1lbnQoKSBjb25zdDsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL0V2ZW50UmVnaW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvRXZl
bnRSZWdpb24uaAppbmRleCA2YzRmYWU2MzM3MjViN2U2ZThiZmQ5ZGVhOTg1OTE1YzgxMGM5NWZi
Li4yZmY1ZTkzNjJmNmY0MjZmNzY5Yjk2YzliOGEyYTMxMzc4YzRmNzE4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvRXZlbnRSZWdpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvRXZlbnRSZWdpb24uaApAQCAtODIsNyArODIsNyBAQCBwdWJsaWM6CiAjZW5k
aWYKIAogI2lmIEVOQUJMRShXSEVFTF9FVkVOVF9SRUdJT05TKQotICAgIE9wdGlvblNldDxFdmVu
dExpc3RlbmVyUmVnaW9uVHlwZT4gZXZlbnRMaXN0ZW5lclJlZ2lvblR5cGVzRm9yUG9pbnQoY29u
c3QgSW50UG9pbnQmKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBPcHRpb25TZXQ8RXZlbnRM
aXN0ZW5lclJlZ2lvblR5cGU+IGV2ZW50TGlzdGVuZXJSZWdpb25UeXBlc0ZvclBvaW50KGNvbnN0
IEludFBvaW50JikgY29uc3Q7CiAgICAgY29uc3QgUmVnaW9uJiBldmVudExpc3RlbmVyUmVnaW9u
Rm9yVHlwZShFdmVudExpc3RlbmVyUmVnaW9uVHlwZSkgY29uc3Q7CiAjZW5kaWYKIApAQCAtMTI1
LDYgKzEyNSwxMCBAQCB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPgogdm9pZCBFdmVudFJlZ2lvbjo6
ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0CiB7CiAgICAgZW5jb2RlciA8PCBtX3JlZ2lv
bjsKKyNpZiBFTkFCTEUoV0hFRUxfRVZFTlRfUkVHSU9OUykKKyAgICBlbmNvZGVyIDw8IG1fd2hl
ZWxFdmVudExpc3RlbmVyUmVnaW9uOworICAgIGVuY29kZXIgPDwgbV9ub25QYXNzaXZlV2hlZWxF
dmVudExpc3RlbmVyUmVnaW9uOworI2VuZGlmCiAjaWYgRU5BQkxFKFRPVUNIX0FDVElPTl9SRUdJ
T05TKQogICAgIGVuY29kZXIgPDwgbV90b3VjaEFjdGlvblJlZ2lvbnM7CiAjZW5kaWYKQEAgLTE0
NCw2ICsxNDgsMjIgQEAgT3B0aW9uYWw8RXZlbnRSZWdpb24+IEV2ZW50UmVnaW9uOjpkZWNvZGUo
RGVjb2RlciYgZGVjb2RlcikKICAgICBFdmVudFJlZ2lvbiBldmVudFJlZ2lvbjsKICAgICBldmVu
dFJlZ2lvbi5tX3JlZ2lvbiA9IFdURk1vdmUoKnJlZ2lvbik7CiAKKyNpZiBFTkFCTEUoV0hFRUxf
RVZFTlRfUkVHSU9OUykKKyAgICBPcHRpb25hbDxSZWdpb24+IHdoZWVsRXZlbnRMaXN0ZW5lclJl
Z2lvbjsKKyAgICBkZWNvZGVyID4+IHdoZWVsRXZlbnRMaXN0ZW5lclJlZ2lvbjsKKyAgICBpZiAo
IXdoZWVsRXZlbnRMaXN0ZW5lclJlZ2lvbikKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsK
KworICAgIGV2ZW50UmVnaW9uLm1fd2hlZWxFdmVudExpc3RlbmVyUmVnaW9uID0gV1RGTW92ZSgq
d2hlZWxFdmVudExpc3RlbmVyUmVnaW9uKTsKKworICAgIE9wdGlvbmFsPFJlZ2lvbj4gbm9uUGFz
c2l2ZVdoZWVsRXZlbnRMaXN0ZW5lclJlZ2lvbjsKKyAgICBkZWNvZGVyID4+IG5vblBhc3NpdmVX
aGVlbEV2ZW50TGlzdGVuZXJSZWdpb247CisgICAgaWYgKCFub25QYXNzaXZlV2hlZWxFdmVudExp
c3RlbmVyUmVnaW9uKQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAgZXZlbnRS
ZWdpb24ubV9ub25QYXNzaXZlV2hlZWxFdmVudExpc3RlbmVyUmVnaW9uID0gV1RGTW92ZSgqbm9u
UGFzc2l2ZVdoZWVsRXZlbnRMaXN0ZW5lclJlZ2lvbik7CisjZW5kaWYKKwogI2lmIEVOQUJMRShU
T1VDSF9BQ1RJT05fUkVHSU9OUykKICAgICBPcHRpb25hbDxWZWN0b3I8UmVnaW9uPj4gdG91Y2hB
Y3Rpb25SZWdpb25zOwogICAgIGRlY29kZXIgPj4gdG91Y2hBY3Rpb25SZWdpb25zOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9zcGkvaW9zL1VJS2l0U1BJLmggYi9Tb3VyY2Uv
V2ViS2l0L1BsYXRmb3JtL3NwaS9pb3MvVUlLaXRTUEkuaAppbmRleCAyNDE3Nzg5ZGJjMmZhOWVm
YzhhNDUyZTU5NDdlNThhMjY0NWYxNjc2Li5lMDhiMDk3YzEwNmFiMjE2MDEwMjljNDk5Nzc1NTE5
OGJjODBmOGViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL3NwaS9pb3MvVUlL
aXRTUEkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL3NwaS9pb3MvVUlLaXRTUEkuaApA
QCAtNjIsNiArNjIsOCBAQAogI2ltcG9ydCA8VUlLaXQvVUlQcmVzZW50YXRpb25Db250cm9sbGVy
X1ByaXZhdGUuaD4KICNpbXBvcnQgPFVJS2l0L1VJUmVzcG9uZGVyX1ByaXZhdGUuaD4KICNpbXBv
cnQgPFVJS2l0L1VJU2NlbmVfUHJpdmF0ZS5oPgorI2ltcG9ydCA8VUlLaXQvVUlTY3JvbGxFdmVu
dF9Qcml2YXRlLmg+CisjaW1wb3J0IDxVSUtpdC9VSVNjcm9sbFZpZXdfRm9yV2ViS2l0T25seS5o
PgogI2ltcG9ydCA8VUlLaXQvVUlTY3JvbGxWaWV3X1ByaXZhdGUuaD4KICNpbXBvcnQgPFVJS2l0
L1VJU3RyaW5nRHJhd2luZ19Qcml2YXRlLmg+CiAjaW1wb3J0IDxVSUtpdC9VSVRhYmxlVmlld0Nl
bGxfUHJpdmF0ZS5oPgpAQCAtNDE2LDggKzQxOCwyNyBAQCB0eXBlZGVmIGVudW0gewogQHByb3Bl
cnR5IChub25hdG9taWMsIGdldHRlcj1faW5kaWNhdG9ySW5zZXRBZGp1c3RtZW50QmVoYXZpb3Is
IHNldHRlcj1fc2V0SW5kaWNhdG9ySW5zZXRBZGp1c3RtZW50QmVoYXZpb3I6KSBVSVNjcm9sbFZp
ZXdJbmRpY2F0b3JJbnNldEFkanVzdG1lbnRCZWhhdmlvciBpbmRpY2F0b3JJbnNldEFkanVzdG1l
bnRCZWhhdmlvcjsKIEBwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSkgVUlFZGdlSW5zZXRz
IF9zeXN0ZW1Db250ZW50SW5zZXQ7CiBAcHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHkpIFVJ
RWRnZUluc2V0cyBfZWZmZWN0aXZlQ29udGVudEluc2V0OworQHByb3BlcnR5IChub25hdG9taWMs
IGdldHRlcj1fYWxsb3dzQXN5bmNTY3JvbGxFdmVudCwgc2V0dGVyPV9zZXRBbGxvd3NBc3luY1Nj
cm9sbEV2ZW50OikgQk9PTCBfYWxsb3dzQXN5bmNTY3JvbGxFdmVudDsKIEBlbmQKIAordHlwZWRl
ZiBOU19FTlVNKE5TVUludGVnZXIsIFVJU2Nyb2xsUGhhc2UpIHsKKyAgICBVSVNjcm9sbFBoYXNl
Tm9uZSwKKyAgICBVSVNjcm9sbFBoYXNlTWF5QmVnaW4sCisgICAgVUlTY3JvbGxQaGFzZUJlZ2Fu
LAorICAgIFVJU2Nyb2xsUGhhc2VDaGFuZ2VkLAorICAgIFVJU2Nyb2xsUGhhc2VFbmRlZCwKKyAg
ICBVSVNjcm9sbFBoYXNlQ2FuY2VsbGVkCit9OworCitAaW50ZXJmYWNlIFVJU2Nyb2xsRXZlbnQg
OiBVSUV2ZW50CisKK0Bwcm9wZXJ0eSAoYXNzaWduLCByZWFkb25seSkgVUlTY3JvbGxQaGFzZSBw
aGFzZTsKKy0gKENHUG9pbnQpbG9jYXRpb25JblZpZXc6KFVJVmlldyAqKXZpZXc7CistIChDR1Zl
Y3RvcilfYWRqdXN0ZWRBY2NlbGVyYXRlZERlbHRhSW5WaWV3OihVSVZpZXcgKil2aWV3OworCitA
ZW5kCisKKwogQGludGVyZmFjZSBOU1N0cmluZyAoVUlLaXREZXRhaWxzKQogLSAoQ0dTaXplKV9s
ZWdhY3lfc2l6ZVdpdGhGb250OihVSUZvbnQgKilmb250IGZvcldpZHRoOihDR0Zsb2F0KXdpZHRo
IGxpbmVCcmVha01vZGU6KE5TTGluZUJyZWFrTW9kZSlsaW5lQnJlYWtNb2RlOwogLSAoQ0dTaXpl
KV9sZWdhY3lfc2l6ZVdpdGhGb250OihVSUZvbnQgKilmb250IG1pbkZvbnRTaXplOihDR0Zsb2F0
KW1pbkZvbnRTaXplIGFjdHVhbEZvbnRTaXplOihDR0Zsb2F0ICopYWN0dWFsRm9udFNpemUgZm9y
V2lkdGg6KENHRmxvYXQpd2lkdGggbGluZUJyZWFrTW9kZTooTlNMaW5lQnJlYWtNb2RlKWxpbmVC
cmVha01vZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9pb3MvV2ViSU9TRXZl
bnRGYWN0b3J5LmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9pb3MvV2ViSU9TRXZlbnRGYWN0b3J5
LmgKaW5kZXggMWU3ODhlNjBhNzZjNTVlZTQ5NTk1MTVlZWQxYWYyYjhhNDFlMjg3Yi4uZGVjNzM4
YzY1OGFlOTQ3MzY1MTg3ODc0MDY3MWFiYTIxNjE5MWRjNiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9TaGFyZWQvaW9zL1dlYklPU0V2ZW50RmFjdG9yeS5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL2lvcy9XZWJJT1NFdmVudEZhY3RvcnkuaApAQCAtMjksMTMgKzI5LDE3IEBACiAKICNp
bXBvcnQgIldlYktleWJvYXJkRXZlbnQuaCIKICNpbXBvcnQgIldlYk1vdXNlRXZlbnQuaCIKKyNp
bXBvcnQgIldlYldoZWVsRXZlbnQuaCIKICNpbXBvcnQgPFVJS2l0L1VJS2l0Lmg+CiAjaW1wb3J0
IDxXZWJDb3JlL1dlYkV2ZW50Lmg+CiAKK09CSkNfQ0xBU1MgVUlTY3JvbGxFdmVudDsKKwogY2xh
c3MgV2ViSU9TRXZlbnRGYWN0b3J5IHsKIHB1YmxpYzoKICAgICBzdGF0aWMgV2ViS2l0OjpXZWJL
ZXlib2FyZEV2ZW50IGNyZWF0ZVdlYktleWJvYXJkRXZlbnQoOjpXZWJFdmVudCAqLCBib29sIGhh
bmRsZWRCeUlucHV0TWV0aG9kKTsKICAgICBzdGF0aWMgV2ViS2l0OjpXZWJNb3VzZUV2ZW50IGNy
ZWF0ZVdlYk1vdXNlRXZlbnQoOjpXZWJFdmVudCAqKTsKKyAgICBzdGF0aWMgV2ViS2l0OjpXZWJX
aGVlbEV2ZW50IGNyZWF0ZVdlYldoZWVsRXZlbnQoVUlTY3JvbGxFdmVudCAqLCBVSVZpZXcgKmNv
bnRlbnRWaWV3KTsKIAogICAgIHN0YXRpYyBVSUtleU1vZGlmaWVyRmxhZ3MgdG9VSUtleU1vZGlm
aWVyRmxhZ3MoT3B0aW9uU2V0PFdlYktpdDo6V2ViRXZlbnQ6Ok1vZGlmaWVyPik7CiB9OwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvaW9zL1dlYklPU0V2ZW50RmFjdG9yeS5tbSBi
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL2lvcy9XZWJJT1NFdmVudEZhY3RvcnkubW0KaW5kZXggOWQw
YTA5NzY3YzM3YzhjZTg0NzkyZjU3ZDY2ODkzZmU1YTkyMmFkZS4uMjljODE4ZDIxMmU4NjExNGY2
NzJiOTcxZTI5ZmVlMWJkMzYwYzk1OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQv
aW9zL1dlYklPU0V2ZW50RmFjdG9yeS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9pb3Mv
V2ViSU9TRXZlbnRGYWN0b3J5Lm1tCkBAIC0yOCw2ICsyOCw3IEBACiAKICNpZiBQTEFURk9STShJ
T1NfRkFNSUxZKQogCisjaW1wb3J0ICJVSUtpdFNQSS5oIgogI2ltcG9ydCA8V2ViQ29yZS9LZXlF
dmVudENvZGVzSU9TLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1BsYXRmb3JtRXZlbnRGYWN0b3J5SU9T
Lmg+CiAKQEAgLTEzMCw0ICsxMzEsMzYgQEAgV2ViS2l0OjpXZWJNb3VzZUV2ZW50IFdlYklPU0V2
ZW50RmFjdG9yeTo6Y3JlYXRlV2ViTW91c2VFdmVudCg6OldlYkV2ZW50ICpldmVudCkKICAgICBy
ZXR1cm4gV2ViS2l0OjpXZWJNb3VzZUV2ZW50KHR5cGUsIGJ1dHRvbiwgYnV0dG9ucywgcG9zaXRp
b24sIHBvc2l0aW9uLCBkZWx0YVgsIGRlbHRhWSwgZGVsdGFaLCBjbGlja0NvdW50LCBPcHRpb25T
ZXQ8V2ViS2l0OjpXZWJFdmVudDo6TW9kaWZpZXI+IHsgfSwgV2FsbFRpbWU6OmZyb21SYXdTZWNv
bmRzKHRpbWVzdGFtcCkpOwogfQogCitzdGF0aWMgV2ViS2l0OjpXZWJXaGVlbEV2ZW50OjpQaGFz
ZSB0b1dlYlBoYXNlKFVJU2Nyb2xsUGhhc2UgcGhhc2UpCit7CisgICAgc3dpdGNoIChwaGFzZSkg
eworICAgIGNhc2UgVUlTY3JvbGxQaGFzZU5vbmU6CisgICAgICAgIHJldHVybiBXZWJLaXQ6Oldl
YldoZWVsRXZlbnQ6OlBoYXNlTm9uZTsKKyAgICBjYXNlIFVJU2Nyb2xsUGhhc2VNYXlCZWdpbjoK
KyAgICAgICAgcmV0dXJuIFdlYktpdDo6V2ViV2hlZWxFdmVudDo6UGhhc2VNYXlCZWdpbjsKKyAg
ICBjYXNlIFVJU2Nyb2xsUGhhc2VCZWdhbjoKKyAgICAgICAgcmV0dXJuIFdlYktpdDo6V2ViV2hl
ZWxFdmVudDo6UGhhc2VCZWdhbjsKKyAgICBjYXNlIFVJU2Nyb2xsUGhhc2VDaGFuZ2VkOgorICAg
ICAgICByZXR1cm4gV2ViS2l0OjpXZWJXaGVlbEV2ZW50OjpQaGFzZUNoYW5nZWQ7CisgICAgY2Fz
ZSBVSVNjcm9sbFBoYXNlRW5kZWQ6CisgICAgICAgIHJldHVybiBXZWJLaXQ6OldlYldoZWVsRXZl
bnQ6OlBoYXNlRW5kZWQ7CisgICAgY2FzZSBVSVNjcm9sbFBoYXNlQ2FuY2VsbGVkOgorICAgICAg
ICByZXR1cm4gV2ViS2l0OjpXZWJXaGVlbEV2ZW50OjpQaGFzZUNhbmNlbGxlZDsKKyAgICBkZWZh
dWx0OgorICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgcmV0dXJuIFdlYktp
dDo6V2ViV2hlZWxFdmVudDo6UGhhc2VOb25lOworICAgIH0KK30KKworV2ViS2l0OjpXZWJXaGVl
bEV2ZW50IFdlYklPU0V2ZW50RmFjdG9yeTo6Y3JlYXRlV2ViV2hlZWxFdmVudChVSVNjcm9sbEV2
ZW50ICpldmVudCwgVUlWaWV3ICpjb250ZW50VmlldykKK3sKKyAgICBXZWJDb3JlOjpJbnRQb2lu
dCBzY3JvbGxMb2NhdGlvbiA9IFdlYkNvcmU6OnJvdW5kZWRJbnRQb2ludChbZXZlbnQgbG9jYXRp
b25JblZpZXc6Y29udGVudFZpZXddKTsKKyAgICBDR1ZlY3RvciBkZWx0YVZlY3RvciA9IFtldmVu
dCBfYWRqdXN0ZWRBY2NlbGVyYXRlZERlbHRhSW5WaWV3OmNvbnRlbnRWaWV3XTsKKyAgICBXZWJD
b3JlOjpGbG9hdFNpemUgZGVsdGEoZGVsdGFWZWN0b3IuZHgsIGRlbHRhVmVjdG9yLmR5KTsKKwor
ICAgIHJldHVybiB7CisgICAgICAgIFdlYktpdDo6V2ViRXZlbnQ6OldoZWVsLCBzY3JvbGxMb2Nh
dGlvbiwgc2Nyb2xsTG9jYXRpb24sIGRlbHRhLCB7IH0gLyogd2hlZWxUaWNrcyAqLywgV2ViS2l0
OjpXZWJXaGVlbEV2ZW50OjpHcmFudWxhcml0eTo6U2Nyb2xsQnlQaXhlbFdoZWVsRXZlbnQsIGZh
bHNlLCB0b1dlYlBoYXNlKGV2ZW50LnBoYXNlKSwgV2ViS2l0OjpXZWJXaGVlbEV2ZW50OjpQaGFz
ZU5vbmUsIHRydWUsIDEsIGRlbHRhLCB7IH0sIE1vbm90b25pY1RpbWU6OmZyb21SYXdTZWNvbmRz
KGV2ZW50LnRpbWVzdGFtcCkuYXBwcm94aW1hdGVXYWxsVGltZSgpCisgICAgfTsKK30KKwogI2Vu
ZGlmIC8vIFBMQVRGT1JNKElPU19GQU1JTFkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3SW50ZXJuYWwuaCBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdJbnRlcm5hbC5oCmluZGV4IGMwNWFkNzI0ZWQyMDM5
MjFmNWViZWU0NzE3NTE1Nzk4MzM5ZDYyZGIuLjMxZjgxY2UwZTllNGZlMjdlMmNlMTU5ZjlmMGQ0
N2Q4OTlkNGZjOWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2Nv
YS9XS1dlYlZpZXdJbnRlcm5hbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9D
b2NvYS9XS1dlYlZpZXdJbnRlcm5hbC5oCkBAIC0yMjksNiArMjI5LDggQEAgY2xhc3MgVmlld0dl
c3R1cmVDb250cm9sbGVyOwogICAgIEJPT0wgX2hhc1NjaGVkdWxlZFZpc2libGVSZWN0VXBkYXRl
OwogICAgIEJPT0wgX3Zpc2libGVDb250ZW50UmVjdFVwZGF0ZVNjaGVkdWxlZEZyb21TY3JvbGxW
aWV3SW5TdGFibGVTdGF0ZTsKIAorICAgIE9wdGlvbmFsPGJvb2w+IF9jdXJyZW50U2Nyb2xsR2Vz
dHVyZVdhc0luaXRpYWxseVByZXZlbnRlZDsKKwogICAgIF9XS0RyYWdJbnRlcmFjdGlvblBvbGlj
eSBfZHJhZ0ludGVyYWN0aW9uUG9saWN5OwogCiAgICAgLy8gRm9yIHJlbGVhc2UtbG9nZ2luZyBm
b3IgPHJkYXI6Ly9wcm9ibGVtLzM5MjgxMjY5Pi4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9pb3MvV0tXZWJWaWV3SU9TLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvaW9zL1dLV2ViVmlld0lPUy5oCmluZGV4IGY3ZTJlMzMxZDFhMjRhZDE2ZmFiYTgyYzc3
ODJiMzhiMWVmNDk5NWEuLjZmYTljYmYwMjFhOWRjYzQzNDQ5NjljZWVjNDc3MDUxOGEzYzhjODEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9pb3MvV0tXZWJWaWV3SU9T
LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2lvcy9XS1dlYlZpZXdJT1MuaApA
QCAtMjUsNiArMjUsOCBAQAogCiAjaW1wb3J0ICJXS1dlYlZpZXdJbnRlcm5hbC5oIgogCitAY2xh
c3MgVUlTY3JvbGxFdmVudDsKKwogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAKIEBpbnRlcmZh
Y2UgV0tXZWJWaWV3IChXS1ZpZXdJbnRlcm5hbElPUykKQEAgLTEyNSw2ICsxMjcsMTMgQEAKIC0g
KFdlYkNvcmU6OkZsb2F0U2l6ZSlhY3RpdmVWaWV3TGF5b3V0U2l6ZTooY29uc3QgQ0dSZWN0Jili
b3VuZHM7CiAtICh2b2lkKV91cGRhdGVTY3JvbGxWaWV3SW5zZXRBZGp1c3RtZW50QmVoYXZpb3I7
CiAKKy0gKEJPT0wpX2VmZmVjdGl2ZUFwcGVhcmFuY2VJc0Rhcms7CistIChCT09MKV9lZmZlY3Rp
dmVVc2VySW50ZXJmYWNlTGV2ZWxJc0VsZXZhdGVkOworCisjaWYgSEFWRShVSVNDUk9MTFZJRVdf
QVNZTkNIUk9OT1VTX1NDUk9MTF9FVkVOVF9IQU5ETElORykKKy0gKHZvaWQpX3Njcm9sbFZpZXc6
KFVJU2Nyb2xsVmlldyAqKXNjcm9sbFZpZXcgYXN5bmNocm9ub3VzbHlIYW5kbGVTY3JvbGxFdmVu
dDooVUlTY3JvbGxFdmVudCAqKXNjcm9sbEV2ZW50IGNvbXBsZXRpb246KHZvaWQgKF4pKEJPT0wg
aGFuZGxlZCkpY29tcGxldGlvbjsKKyNlbmRpZgorCiBAcHJvcGVydHkgKG5vbmF0b21pYywgcmVh
ZG9ubHkpIFdLUGFzc3dvcmRWaWV3ICpfcGFzc3dvcmRWaWV3OwogQHByb3BlcnR5IChub25hdG9t
aWMsIHJlYWRvbmx5KSBXS1dlYlZpZXdDb250ZW50UHJvdmlkZXJSZWdpc3RyeSAqX2NvbnRlbnRQ
cm92aWRlclJlZ2lzdHJ5OwogQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5KSBXS1NlbGVj
dGlvbkdyYW51bGFyaXR5IF9zZWxlY3Rpb25HcmFudWxhcml0eTsKQEAgLTEzNyw5ICsxNDYsNiBA
QAogQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5LCBnZXR0ZXI9X2lzUmV0YWluaW5nQWN0
aXZlRm9jdXNlZFN0YXRlKSBCT09MIF9yZXRhaW5pbmdBY3RpdmVGb2N1c2VkU3RhdGU7CiBAcHJv
cGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHkpIGludDMyX3QgX2RldmljZU9yaWVudGF0aW9uOwog
Ci0tIChCT09MKV9lZmZlY3RpdmVBcHBlYXJhbmNlSXNEYXJrOwotLSAoQk9PTClfZWZmZWN0aXZl
VXNlckludGVyZmFjZUxldmVsSXNFbGV2YXRlZDsKLQogQGVuZAogCiAjZW5kaWYgLy8gUExBVEZP
Uk0oSU9TX0ZBTUlMWSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9p
b3MvV0tXZWJWaWV3SU9TLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2lvcy9XS1dl
YlZpZXdJT1MubW0KaW5kZXggNGI3NjYyYTE2NDU5NGRlNmU0M2ZlNDQ0NDhlMDkyMzdkNzJiZWYz
Mi4uZTljNWQyMjllNGUxZjNmYjM0OGMyYmI2ZmJkOThjNTk1ODU0OGIyNiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2lvcy9XS1dlYlZpZXdJT1MubW0KKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2lvcy9XS1dlYlZpZXdJT1MubW0KQEAgLTI5LDkgKzI5
LDExIEBACiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKIAogI2ltcG9ydCAiRnJvbnRCb2FyZFNl
cnZpY2VzU1BJLmgiCisjaW1wb3J0ICJOYXRpdmVXZWJXaGVlbEV2ZW50LmgiCiAjaW1wb3J0ICJO
YXZpZ2F0aW9uU3RhdGUuaCIKICNpbXBvcnQgIlJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJv
eHkuaCIKICNpbXBvcnQgIlJlbW90ZUxheWVyVHJlZVNjcm9sbGluZ1BlcmZvcm1hbmNlRGF0YS5o
IgorI2ltcG9ydCAiUmVtb3RlTGF5ZXJUcmVlVmlld3MuaCIKICNpbXBvcnQgIlJlbW90ZVNjcm9s
bGluZ0Nvb3JkaW5hdG9yUHJveHkuaCIKICNpbXBvcnQgIlZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQ
cm94eS5oIgogI2ltcG9ydCAiVmlld0dlc3R1cmVDb250cm9sbGVyLmgiCkBAIC00Nyw2ICs0OSw3
IEBACiAjaW1wb3J0ICJXS1dlYlZpZXdQcml2YXRlLmgiCiAjaW1wb3J0ICJXS1dlYlZpZXdQcml2
YXRlRm9yVGVzdGluZ0lPUy5oIgogI2ltcG9ydCAiV2ViQmFja0ZvcndhcmRMaXN0LmgiCisjaW1w
b3J0ICJXZWJJT1NFdmVudEZhY3RvcnkuaCIKICNpbXBvcnQgIldlYlBhZ2VQcm94eS5oIgogI2lt
cG9ydCAiX1dLQWN0aXZhdGVkRWxlbWVudEluZm9JbnRlcm5hbC5oIgogI2ltcG9ydCA8V2ViQ29y
ZS9HcmFwaGljc0NvbnRleHRDRy5oPgpAQCAtMTM5LDYgKzE0MiwxMCBAQCAtICh2b2lkKV9zZXR1
cFNjcm9sbEFuZENvbnRlbnRWaWV3cwogICAgIFtfc2Nyb2xsVmlldyBzZXRJbnRlcm5hbERlbGVn
YXRlOnNlbGZdOwogICAgIFtfc2Nyb2xsVmlldyBzZXRCb3VuY2VzWm9vbTpZRVNdOwogCisjaWYg
SEFWRShVSVNDUk9MTFZJRVdfQVNZTkNIUk9OT1VTX1NDUk9MTF9FVkVOVF9IQU5ETElORykKKyAg
ICBbX3Njcm9sbFZpZXcgX3NldEFsbG93c0FzeW5jU2Nyb2xsRXZlbnQ6WUVTXTsKKyNlbmRpZgor
CiAgICAgaWYgKFtfc2Nyb2xsVmlldyByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKF9zZXRB
dm9pZHNKdW1wT25JbnRlcnJ1cHRlZEJvdW5jZTopXSkgewogICAgICAgICBbX3Njcm9sbFZpZXcg
c2V0VHJhY2tzSW1tZWRpYXRlbHlXaGlsZURlY2VsZXJhdGluZzpOT107CiAgICAgICAgIFtfc2Ny
b2xsVmlldyBfc2V0QXZvaWRzSnVtcE9uSW50ZXJydXB0ZWRCb3VuY2U6WUVTXTsKQEAgLTE1OTAs
NiArMTU5Nyw0NyBAQCAtIChDR1BvaW50KV9zY3JvbGxWaWV3OihVSVNjcm9sbFZpZXcgKilzY3Jv
bGxWaWV3IGFkanVzdGVkT2Zmc2V0Rm9yT2Zmc2V0OihDR1BvaQogICAgIHJldHVybiBhZGp1c3Rl
ZENvbnRlbnRPZmZzZXQ7CiB9CiAKKyNpZiBIQVZFKFVJU0NST0xMVklFV19BU1lOQ0hST05PVVNf
U0NST0xMX0VWRU5UX0hBTkRMSU5HKQorLSAodm9pZClfc2Nyb2xsVmlldzooVUlTY3JvbGxWaWV3
ICopc2Nyb2xsVmlldyBhc3luY2hyb25vdXNseUhhbmRsZVNjcm9sbEV2ZW50OihVSVNjcm9sbEV2
ZW50ICopc2Nyb2xsRXZlbnQgY29tcGxldGlvbjoodm9pZCAoXikoQk9PTCBoYW5kbGVkKSljb21w
bGV0aW9uCit7CisgICAgaWYgKHNjcm9sbEV2ZW50LnBoYXNlID09IFVJU2Nyb2xsUGhhc2VNYXlC
ZWdpbikgeworICAgICAgICBjb21wbGV0aW9uKE5PKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0K
KworICAgIFdlYkNvcmU6OkludFBvaW50IHNjcm9sbExvY2F0aW9uID0gV2ViQ29yZTo6cm91bmRl
ZEludFBvaW50KFtzY3JvbGxFdmVudCBsb2NhdGlvbkluVmlldzpfY29udGVudFZpZXcuZ2V0KCld
KTsKKyAgICBhdXRvIGV2ZW50TGlzdGVuZXJzID0gV2ViS2l0OjpldmVudExpc3RlbmVyVHlwZXNB
dFBvaW50KF9jb250ZW50Vmlldy5nZXQoKSwgc2Nyb2xsTG9jYXRpb24pOworICAgIGJvb2wgaGFz
V2hlZWxIYW5kbGVycyA9IGV2ZW50TGlzdGVuZXJzLmNvbnRhaW5zKFdlYkNvcmU6OkV2ZW50TGlz
dGVuZXJSZWdpb25UeXBlOjpXaGVlbCk7CisgICAgaWYgKCFoYXNXaGVlbEhhbmRsZXJzKSB7Cisg
ICAgICAgIGNvbXBsZXRpb24oTk8pOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgYm9v
bCBpc0ZpcnN0RXZlbnRJbkdlc3R1cmUgPSBzY3JvbGxFdmVudC5waGFzZSA9PSBVSVNjcm9sbFBo
YXNlQmVnYW47CisgICAgaWYgKGlzRmlyc3RFdmVudEluR2VzdHVyZSkKKyAgICAgICAgX2N1cnJl
bnRTY3JvbGxHZXN0dXJlV2FzSW5pdGlhbGx5UHJldmVudGVkID0gV1RGOjpudWxsb3B0OworCisg
ICAgYm9vbCBoYXNBY3RpdmVXaGVlbEhhbmRsZXJzID0gZXZlbnRMaXN0ZW5lcnMuY29udGFpbnMo
V2ViQ29yZTo6RXZlbnRMaXN0ZW5lclJlZ2lvblR5cGU6Ok5vblBhc3NpdmVXaGVlbCk7CisgICAg
Ym9vbCBpc0NhbmNlbGFibGUgPSBoYXNBY3RpdmVXaGVlbEhhbmRsZXJzICYmIF9jdXJyZW50U2Ny
b2xsR2VzdHVyZVdhc0luaXRpYWxseVByZXZlbnRlZC52YWx1ZU9yKGlzRmlyc3RFdmVudEluR2Vz
dHVyZSk7CisgICAgYXV0byBldmVudCA9IFdlYklPU0V2ZW50RmFjdG9yeTo6Y3JlYXRlV2ViV2hl
ZWxFdmVudChzY3JvbGxFdmVudCwgX2NvbnRlbnRWaWV3LmdldCgpKTsKKworICAgIF9wYWdlLT5k
aXNwYXRjaFdoZWVsRXZlbnRXaXRob3V0U2Nyb2xsaW5nKGV2ZW50LCBbd2Vha1NlbGYgPSBXZWFr
T2JqQ1B0cjxXS1dlYlZpZXc+KHNlbGYpLCBzdHJvbmdDb21wbGV0aW9uID0gbWFrZUJsb2NrUHRy
KGNvbXBsZXRpb24pLCBpc0NhbmNlbGFibGUsIGlzRmlyc3RFdmVudEluR2VzdHVyZV0oYm9vbCBo
YW5kbGVkKSB7CisgICAgICAgIGF1dG8gc3Ryb25nU2VsZiA9IHdlYWtTZWxmLmdldCgpOworICAg
ICAgICBpZiAoIXN0cm9uZ1NlbGYpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgaWYg
KGlzQ2FuY2VsYWJsZSkgeworICAgICAgICAgICAgaWYgKGlzRmlyc3RFdmVudEluR2VzdHVyZSkK
KyAgICAgICAgICAgICAgICBzdHJvbmdTZWxmLT5fY3VycmVudFNjcm9sbEdlc3R1cmVXYXNJbml0
aWFsbHlQcmV2ZW50ZWQgPSBoYW5kbGVkOworICAgICAgICAgICAgc3Ryb25nQ29tcGxldGlvbiho
YW5kbGVkKTsKKyAgICAgICAgfQorICAgIH0pOworCisgICAgaWYgKCFpc0NhbmNlbGFibGUpCisg
ICAgICAgIGNvbXBsZXRpb24oTk8pOworfQorI2VuZGlmIC8vIEhBVkUoVUlTQ1JPTExWSUVXX0FT
WU5DSFJPTk9VU19TQ1JPTExfRVZFTlRfSEFORExJTkcpCisKIC0gKHZvaWQpc2Nyb2xsVmlld0Rp
ZFNjcm9sbDooVUlTY3JvbGxWaWV3ICopc2Nyb2xsVmlldwogewogICAgIGlmICghW3NlbGYgdXNl
c1N0YW5kYXJkQ29udGVudFZpZXddICYmIFtfY3VzdG9tQ29udGVudFZpZXcgcmVzcG9uZHNUb1Nl
bGVjdG9yOkBzZWxlY3Rvcih3ZWJfc2Nyb2xsVmlld0RpZFNjcm9sbDopXSkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BhZ2VDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1BhZ2VDbGllbnQuaAppbmRleCBjNGM3MTg3NGExMGRhOWI1NDFmZWUyODIwODA4YzFl
NTBkM2ZhOTJiLi5jNzdkMGExMGE5NmM5NzJmMTFjY2M0MTQ2NmYyZmMyNjczNjM4MzVmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QYWdlQ2xpZW50LmgKKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvUGFnZUNsaWVudC5oCkBAIC02NCw2ICs2NCw4IEBAIE9CSkNfQ0xB
U1MgTlNNZW51OwogT0JKQ19DTEFTUyBOU1NldDsKIE9CSkNfQ0xBU1MgTlNUZXh0QWx0ZXJuYXRp
dmVzOwogT0JKQ19DTEFTUyBVSUdlc3R1cmVSZWNvZ25pemVyOworT0JKQ19DTEFTUyBVSVNjcm9s
bEV2ZW50OworT0JKQ19DTEFTUyBVSVNjcm9sbFZpZXc7CiBPQkpDX0NMQVNTIF9XS1JlbW90ZU9i
amVjdFJlZ2lzdHJ5OwogCiAjaWYgVVNFKEFQUEtJVCkKQEAgLTQ2Niw2ICs0NjgsMTAgQEAgcHVi
bGljOgogICAgIHZpcnR1YWwgdm9pZCBkaXNhYmxlSW5zcGVjdG9yTm9kZVNlYXJjaCgpID0gMDsK
IAogICAgIHZpcnR1YWwgdm9pZCBoYW5kbGVBdXRvY29ycmVjdGlvbkNvbnRleHQoY29uc3QgV2Vi
QXV0b2NvcnJlY3Rpb25Db250ZXh0JikgPSAwOworCisjaWYgSEFWRShVSVNDUk9MTFZJRVdfQVNZ
TkNIUk9OT1VTX1NDUk9MTF9FVkVOVF9IQU5ETElORykKKyAgICB2aXJ0dWFsIHZvaWQgaGFuZGxl
QXN5bmNocm9ub3VzQ2FuY2VsYWJsZVNjcm9sbEV2ZW50KFVJU2Nyb2xsVmlldyAqLCBVSVNjcm9s
bEV2ZW50ICosIHZvaWQgKF5jb21wbGV0aW9uKShCT09MIGhhbmRsZWQpKSA9IDA7CisjZW5kaWYK
ICNlbmRpZgogCiAgICAgLy8gQXV4aWxpYXJ5IENsaWVudCBDcmVhdGlvbgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL2lvcy9SZW1vdGVMYXllclRy
ZWVWaWV3cy5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL2lvcy9S
ZW1vdGVMYXllclRyZWVWaWV3cy5oCmluZGV4IDMzYTE0NjEwYjhhZmJjYzk2NmY5ODI2ZTdiNDUz
NjM3YTZiOWQ1NmUuLjJiOGQwYWIwZWViOTFkNGYxZjExODY2Yjk0MTk2ZGExZjNjYmFkMWMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9pb3MvUmVt
b3RlTGF5ZXJUcmVlVmlld3MuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVM
YXllclRyZWUvaW9zL1JlbW90ZUxheWVyVHJlZVZpZXdzLmgKQEAgLTcxLDYgKzcxLDggQEAgbmFt
ZXNwYWNlIFdlYktpdCB7CiBPcHRpb25TZXQ8V2ViQ29yZTo6VG91Y2hBY3Rpb24+IHRvdWNoQWN0
aW9uc0ZvclBvaW50KFVJVmlldyAqcm9vdFZpZXcsIGNvbnN0IFdlYkNvcmU6OkludFBvaW50Jik7
CiBVSVNjcm9sbFZpZXcgKmZpbmRBY3RpbmdTY3JvbGxQYXJlbnQoVUlTY3JvbGxWaWV3ICosIGNv
bnN0IFJlbW90ZUxheWVyVHJlZUhvc3QmKTsKIAorT3B0aW9uU2V0PFdlYkNvcmU6OkV2ZW50TGlz
dGVuZXJSZWdpb25UeXBlPiBldmVudExpc3RlbmVyVHlwZXNBdFBvaW50KFVJVmlldyAqcm9vdFZp
ZXcsIGNvbnN0IFdlYkNvcmU6OkludFBvaW50Jik7CisKICNpZiBFTkFCTEUoRURJVEFCTEVfUkVH
SU9OKQogYm9vbCBtYXlDb250YWluRWRpdGFibGVFbGVtZW50c0luUmVjdChVSVZpZXcgKnJvb3RW
aWV3LCBjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmKTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL2lvcy9SZW1vdGVMYXllclRyZWVW
aWV3cy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9pb3MvUmVt
b3RlTGF5ZXJUcmVlVmlld3MubW0KaW5kZXggMTFiYjAxYjM3MmNlNjk3YjZlNjNhNDNlNmE0NmRm
ODI0M2NhZGMzOC4uYThmYTZmZjZmYTJhZDBlN2M0YTRjMzUzZmFhN2VhNmE4YTJkNTIzNyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL2lvcy9SZW1v
dGVMYXllclRyZWVWaWV3cy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVM
YXllclRyZWUvaW9zL1JlbW90ZUxheWVyVHJlZVZpZXdzLm1tCkBAIC0yMDUsNiArMjA1LDM2IEBA
IE9wdGlvblNldDxXZWJDb3JlOjpUb3VjaEFjdGlvbj4gdG91Y2hBY3Rpb25zRm9yUG9pbnQoVUlW
aWV3ICpyb290VmlldywgY29uc3QgV2ViCiAgICAgcmV0dXJuIG5vZGUtPmV2ZW50UmVnaW9uKCku
dG91Y2hBY3Rpb25zRm9yUG9pbnQoV2ViQ29yZTo6SW50UG9pbnQoaGl0Vmlld1BvaW50KSk7CiB9
CiAKKyNpZiBFTkFCTEUoV0hFRUxfRVZFTlRfUkVHSU9OUykKK09wdGlvblNldDxXZWJDb3JlOjpF
dmVudExpc3RlbmVyUmVnaW9uVHlwZT4gZXZlbnRMaXN0ZW5lclR5cGVzQXRQb2ludChVSVZpZXcg
KnJvb3RWaWV3LCBjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgcG9pbnQpCit7CisgICAgVmVjdG9y
PFVJVmlldyAqLCAxNj4gdmlld3NBdFBvaW50OworICAgIGNvbGxlY3REZXNjZW5kYW50Vmlld3NB
dFBvaW50KHZpZXdzQXRQb2ludCwgcm9vdFZpZXcsIHBvaW50LCBuaWwpOworCisgICAgaWYgKHZp
ZXdzQXRQb2ludC5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybiB7IH07CisKKyAgICBVSVZpZXcg
KmhpdFZpZXcgPSBuaWw7CisgICAgZm9yIChhdXRvICp2aWV3IDogV1RGOjptYWtlUmV2ZXJzZWRS
YW5nZSh2aWV3c0F0UG9pbnQpKSB7CisgICAgICAgIGlmIChbdmlldyBpc0tpbmRPZkNsYXNzOltX
S0NvbXBvc2l0aW5nVmlldyBjbGFzc11dKSB7CisgICAgICAgICAgICBoaXRWaWV3ID0gdmlldzsK
KyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgfQorCisgICAgaWYgKCFoaXRWaWV3
KQorICAgICAgICByZXR1cm4geyB9OworCisgICAgQ0dQb2ludCBoaXRWaWV3UG9pbnQgPSBbaGl0
VmlldyBjb252ZXJ0UG9pbnQ6cG9pbnQgZnJvbVZpZXc6cm9vdFZpZXddOworCisgICAgYXV0byog
bm9kZSA9IFJlbW90ZUxheWVyVHJlZU5vZGU6OmZvckNBTGF5ZXIoaGl0Vmlldy5sYXllcik7Cisg
ICAgaWYgKCFub2RlKQorICAgICAgICByZXR1cm4geyB9OworCisgICAgcmV0dXJuIG5vZGUtPmV2
ZW50UmVnaW9uKCkuZXZlbnRMaXN0ZW5lclJlZ2lvblR5cGVzRm9yUG9pbnQoV2ViQ29yZTo6SW50
UG9pbnQoaGl0Vmlld1BvaW50KSk7Cit9CisjZW5kaWYKKwogVUlTY3JvbGxWaWV3ICpmaW5kQWN0
aW5nU2Nyb2xsUGFyZW50KFVJU2Nyb2xsVmlldyAqc2Nyb2xsVmlldywgY29uc3QgUmVtb3RlTGF5
ZXJUcmVlSG9zdCYgaG9zdCkKIHsKICAgICBIYXNoU2V0PFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXI6
OlBsYXRmb3JtTGF5ZXJJRD4gc2Nyb2xsZXJzVG9Ta2lwOwpAQCAtNDA0LDYgKzQzNCwxMCBAQCAt
IChpbnN0YW5jZXR5cGUpaW5pdFdpdGhGcmFtZTooQ0dSZWN0KWZyYW1lCiAgICAgc2VsZi5jb250
ZW50SW5zZXRBZGp1c3RtZW50QmVoYXZpb3IgPSBVSVNjcm9sbFZpZXdDb250ZW50SW5zZXRBZGp1
c3RtZW50TmV2ZXI7CiAjZW5kaWYKIAorI2lmIEhBVkUoVUlTQ1JPTExWSUVXX0FTWU5DSFJPTk9V
U19TQ1JPTExfRVZFTlRfSEFORExJTkcpCisgICAgW3NlbGYgX3NldEFsbG93c0FzeW5jU2Nyb2xs
RXZlbnQ6WUVTXTsKKyNlbmRpZgorCiAgICAgcmV0dXJuIHNlbGY7CiB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9pb3MvU2Nyb2xsaW5nVHJl
ZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZUlPUy5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVt
b3RlTGF5ZXJUcmVlL2lvcy9TY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlSU9TLmgK
aW5kZXggMzEwNTAyYzhhNjQ0Y2RmZjhjNWYzMjY4MmQ3MDM0ZWVhZTIxMTVhZC4uZmIyNzBhOWEz
MmM0ZGMyM2IxNjMxMzVjNTRlNjQ0MzFlNmMxMzMwMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL2lvcy9TY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9k
ZURlbGVnYXRlSU9TLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJU
cmVlL2lvcy9TY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlSU9TLmgKQEAgLTY1LDYg
KzY1LDEwIEBAIHB1YmxpYzoKIAogICAgIHZvaWQgcmVwb3NpdGlvblNjcm9sbGluZ0xheWVycygp
OwogCisjaWYgSEFWRShVSVNDUk9MTFZJRVdfQVNZTkNIUk9OT1VTX1NDUk9MTF9FVkVOVF9IQU5E
TElORykKKyAgICB2b2lkIGhhbmRsZUFzeW5jaHJvbm91c0NhbmNlbGFibGVTY3JvbGxFdmVudChV
SVNjcm9sbFZpZXcgKiwgVUlTY3JvbGxFdmVudCAqLCB2b2lkICheY29tcGxldGlvbikoQk9PTCBo
YW5kbGVkKSk7CisjZW5kaWYKKwogICAgIE9wdGlvblNldDxXZWJDb3JlOjpUb3VjaEFjdGlvbj4g
YWN0aXZlVG91Y2hBY3Rpb25zKCkgY29uc3QgeyByZXR1cm4gbV9hY3RpdmVUb3VjaEFjdGlvbnM7
IH0KICAgICB2b2lkIGNvbXB1dGVBY3RpdmVUb3VjaEFjdGlvbnNGb3JHZXN0dXJlUmVjb2duaXpl
cihVSUdlc3R1cmVSZWNvZ25pemVyKik7CiAgICAgdm9pZCBjbGVhckFjdGl2ZVRvdWNoQWN0aW9u
cygpIHsgbV9hY3RpdmVUb3VjaEFjdGlvbnMgPSB7IH07IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9pb3MvU2Nyb2xsaW5nVHJlZVNjcm9sbGlu
Z05vZGVEZWxlZ2F0ZUlPUy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxheWVy
VHJlZS9pb3MvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZUlPUy5tbQppbmRleCBh
YjM3NDcyMGEzMjg0N2Y3ZTVjYzU3YmJjNTc5NzRkMWUzMDQ2NTBmLi5kZmJmN2E0ZGJjZDNlMDVh
NzdmZDUxZDIyMzAwZTY2MjAzOGVmYjg3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9SZW1vdGVMYXllclRyZWUvaW9zL1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdh
dGVJT1MubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL2lv
cy9TY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlSU9TLm1tCkBAIC0xNzYsNiArMTc2
LDEzIEBAIC0gKENHUG9pbnQpX3Njcm9sbFZpZXc6KFVJU2Nyb2xsVmlldyAqKXNjcm9sbFZpZXcg
YWRqdXN0ZWRPZmZzZXRGb3JPZmZzZXQ6KENHUG9pCiAgICAgcmV0dXJuIGFkanVzdGVkQ29udGVu
dE9mZnNldDsKIH0KIAorI2lmIEhBVkUoVUlTQ1JPTExWSUVXX0FTWU5DSFJPTk9VU19TQ1JPTExf
RVZFTlRfSEFORExJTkcpCistICh2b2lkKV9zY3JvbGxWaWV3OihVSVNjcm9sbFZpZXcgKilzY3Jv
bGxWaWV3IGFzeW5jaHJvbm91c2x5SGFuZGxlU2Nyb2xsRXZlbnQ6KFVJU2Nyb2xsRXZlbnQgKilz
Y3JvbGxFdmVudCBjb21wbGV0aW9uOih2b2lkICheKShCT09MIGhhbmRsZWQpKWNvbXBsZXRpb24K
K3sKKyAgICBfc2Nyb2xsaW5nVHJlZU5vZGVEZWxlZ2F0ZS0+aGFuZGxlQXN5bmNocm9ub3VzQ2Fu
Y2VsYWJsZVNjcm9sbEV2ZW50KHNjcm9sbFZpZXcsIHNjcm9sbEV2ZW50LCBjb21wbGV0aW9uKTsK
K30KKyNlbmRpZgorCiAtICh2b2lkKXNjcm9sbFZpZXdXaWxsQmVnaW5ab29taW5nOihVSVNjcm9s
bFZpZXcgKilzY3JvbGxWaWV3IHdpdGhWaWV3OihVSVZpZXcgKil2aWV3CiB7CiAgICAgW3NlbGYg
Y2FuY2VsUG9pbnRlcnNGb3JHZXN0dXJlUmVjb2duaXplcjpzY3JvbGxWaWV3LnBpbmNoR2VzdHVy
ZVJlY29nbml6ZXJdOwpAQCAtMjk4LDYgKzMwNSwxNCBAQCB2b2lkIFNjcm9sbGluZ1RyZWVTY3Jv
bGxpbmdOb2RlRGVsZWdhdGVJT1M6OmNvbW1pdFN0YXRlQWZ0ZXJDaGlsZHJlbihjb25zdCBTY3Jv
bAogICAgIH0KIH0KIAorI2lmIEhBVkUoVUlTQ1JPTExWSUVXX0FTWU5DSFJPTk9VU19TQ1JPTExf
RVZFTlRfSEFORExJTkcpCit2b2lkIFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVJ
T1M6OmhhbmRsZUFzeW5jaHJvbm91c0NhbmNlbGFibGVTY3JvbGxFdmVudChVSVNjcm9sbFZpZXcg
KnNjcm9sbFZpZXcsIFVJU2Nyb2xsRXZlbnQgKnNjcm9sbEV2ZW50LCB2b2lkICheY29tcGxldGlv
bikoQk9PTCBoYW5kbGVkKSkKK3sKKyAgICBhdXRvJiBzY3JvbGxpbmdDb29yZGluYXRvclByb3h5
ID0gZG93bmNhc3Q8V2ViS2l0OjpSZW1vdGVTY3JvbGxpbmdUcmVlPihzY3JvbGxpbmdUcmVlKCkp
LnNjcm9sbGluZ0Nvb3JkaW5hdG9yUHJveHkoKTsKKyAgICBzY3JvbGxpbmdDb29yZGluYXRvclBy
b3h5LndlYlBhZ2VQcm94eSgpLnBhZ2VDbGllbnQoKS5oYW5kbGVBc3luY2hyb25vdXNDYW5jZWxh
YmxlU2Nyb2xsRXZlbnQoc2Nyb2xsVmlldywgc2Nyb2xsRXZlbnQsIGNvbXBsZXRpb24pOworfQor
I2VuZGlmCisKIHZvaWQgU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZUlPUzo6cmVw
b3NpdGlvblNjcm9sbGluZ0xheWVycygpCiB7CiAgICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJ
T05TCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3Bw
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAppbmRleCBjYzFiYmI0
YTRhYWI4MmQxMWRjNjZhYzJlNDFhZmNhZmUwY2U3ODgzLi5iMjk5NmJlYWJjOTU5ODRmYjk4ZTQ0
ZTVlNmIyYTA1NWEzNzk3NmRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJQYWdlUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94
eS5jcHAKQEAgLTI2MzcsNiArMjYzNywxMSBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6Zmx1c2hQZW5k
aW5nTW91c2VFdmVudENhbGxiYWNrcygpCiAgICAgbV9jYWxsYmFja0hhbmRsZXJzQWZ0ZXJQcm9j
ZXNzaW5nUGVuZGluZ01vdXNlRXZlbnRzLmNsZWFyKCk7CiB9CiAKK3ZvaWQgV2ViUGFnZVByb3h5
OjpkaXNwYXRjaFdoZWVsRXZlbnRXaXRob3V0U2Nyb2xsaW5nKGNvbnN0IFdlYldoZWVsRXZlbnQm
IGV2ZW50LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVy
KQoreworICAgIHNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6V2ViUGFnZTo6RGlzcGF0Y2hX
aGVlbEV2ZW50V2l0aG91dFNjcm9sbGluZyhldmVudCksIFdURk1vdmUoY29tcGxldGlvbkhhbmRs
ZXIpKTsKK30KKwogdm9pZCBXZWJQYWdlUHJveHk6OmhhbmRsZVdoZWVsRXZlbnQoY29uc3QgTmF0
aXZlV2ViV2hlZWxFdmVudCYgZXZlbnQpCiB7CiAjaWYgRU5BQkxFKEFTWU5DX1NDUk9MTElORykg
JiYgUExBVEZPUk0oQ09DT0EpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJQYWdlUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCmlu
ZGV4IDk4ZTg2MzZlOGViNjBjZDRhMDRiYjA4YThmOWYxMGJmNzk5YjJiN2UuLmYxMmZhZDQ2OWM4
ZWFjYTMwZjk1YWY0ZjcwYjEzOTY4OTM2MGQzZTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YlBhZ2VQcm94eS5oCkBAIC0xODM1LDYgKzE4MzUsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBjcmVh
dGVBcHBIaWdobGlnaHRJblNlbGVjdGVkUmFuZ2UoQ3JlYXRlTmV3R3JvdXBGb3JIaWdobGlnaHQp
OwogI2VuZGlmCiAKKyAgICB2b2lkIGRpc3BhdGNoV2hlZWxFdmVudFdpdGhvdXRTY3JvbGxpbmco
Y29uc3QgV2ViV2hlZWxFdmVudCYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpOwor
CiBwcml2YXRlOgogICAgIFdlYlBhZ2VQcm94eShQYWdlQ2xpZW50JiwgV2ViUHJvY2Vzc1Byb3h5
JiwgUmVmPEFQSTo6UGFnZUNvbmZpZ3VyYXRpb24+JiYpOwogICAgIHZvaWQgcGxhdGZvcm1Jbml0
aWFsaXplKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvUGFnZUNs
aWVudEltcGxJT1MuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1w
bElPUy5oCmluZGV4IGJlMDMwMWZiN2NiMThiYWM3Y2RlMzkwZWQzY2YxYTg1NTViOThkN2QuLjhm
ZDhkYzM1OGQzMzE5MWVjMzY2MWNmMmE4ZmU0Y2Q3NGI3NzE1ZTQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5oCkBAIC0yNzEsNiArMjcxLDEw
IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIHNob3dEaWN0YXRpb25BbHRlcm5hdGl2ZVVJKGNvbnN0
IFdlYkNvcmU6OkZsb2F0UmVjdCYsIFdlYkNvcmU6OkRpY3RhdGlvbkNvbnRleHQpIGZpbmFsOwog
CisjaWYgSEFWRShVSVNDUk9MTFZJRVdfQVNZTkNIUk9OT1VTX1NDUk9MTF9FVkVOVF9IQU5ETElO
RykKKyAgICB2b2lkIGhhbmRsZUFzeW5jaHJvbm91c0NhbmNlbGFibGVTY3JvbGxFdmVudChVSVNj
cm9sbFZpZXcgKiwgVUlTY3JvbGxFdmVudCAqLCB2b2lkICheY29tcGxldGlvbikoQk9PTCBoYW5k
bGVkKSkgZmluYWw7CisjZW5kaWYKKwogICAgIFdlYWtPYmpDUHRyPFdLQ29udGVudFZpZXc+IG1f
Y29udGVudFZpZXc7CiAgICAgUmV0YWluUHRyPFdLRWRpdG9yVW5kb1RhcmdldD4gbV91bmRvVGFy
Z2V0OwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9QYWdlQ2xp
ZW50SW1wbElPUy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1w
bElPUy5tbQppbmRleCBiNmFiOTYyYjczMzQzOTIzMmJmN2RkOTJjOTZhNmIyMTJjMWE4NmQyLi40
MWJjNTc0YTJjZjUxMTdiNDQ1M2QyZWVmZjlmMTM1ZjQwYzZhN2Y3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJT1MubW0KKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLm1tCkBAIC05NjEsNiArOTYx
LDEzIEBAIHZvaWQgUGFnZUNsaWVudEltcGw6OnNldE1vdXNlRXZlbnRQb2xpY3koV2ViQ29yZTo6
TW91c2VFdmVudFBvbGljeSBwb2xpY3kpCiAjZW5kaWYKIH0KIAorI2lmIEhBVkUoVUlTQ1JPTExW
SUVXX0FTWU5DSFJPTk9VU19TQ1JPTExfRVZFTlRfSEFORExJTkcpCit2b2lkIFBhZ2VDbGllbnRJ
bXBsOjpoYW5kbGVBc3luY2hyb25vdXNDYW5jZWxhYmxlU2Nyb2xsRXZlbnQoVUlTY3JvbGxWaWV3
ICpzY3JvbGxWaWV3LCBVSVNjcm9sbEV2ZW50ICpzY3JvbGxFdmVudCwgdm9pZCAoXmNvbXBsZXRp
b24pKEJPT0wgaGFuZGxlZCkpCit7CisgICAgW21fd2ViVmlldyBfc2Nyb2xsVmlldzpzY3JvbGxW
aWV3IGFzeW5jaHJvbm91c2x5SGFuZGxlU2Nyb2xsRXZlbnQ6c2Nyb2xsRXZlbnQgY29tcGxldGlv
bjpjb21wbGV0aW9uXTsKK30KKyNlbmRpZgorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKIAogI2Vu
ZGlmIC8vIFBMQVRGT1JNKElPU19GQU1JTFkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYlBhZ2UuY3BwCmluZGV4IGM0NDYzOGZlZDdiZDM4ZDYxZTk2NmNjZmUwMzQxMjYz
NDY0MjZjZmIuLmI5ZGU2MzFhM2VjMTM5MjYyYzUwMjdkNGJhZjkyMTA4NmZhMzZjYmMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCkBAIC0yODY0LDcg
KzI4NjQsNyBAQCBzdGF0aWMgYm9vbCBoYW5kbGVXaGVlbEV2ZW50KGNvbnN0IFdlYldoZWVsRXZl
bnQmIHdoZWVsRXZlbnQsIFBhZ2UqIHBhZ2UsIE9wdGlvbgogICAgIHJldHVybiBwYWdlLT51c2Vy
SW5wdXRCcmlkZ2UoKS5oYW5kbGVXaGVlbEV2ZW50KHBsYXRmb3JtV2hlZWxFdmVudCwgcHJvY2Vz
c2luZ1N0ZXBzKTsKIH0KIAotdm9pZCBXZWJQYWdlOjp3aGVlbEV2ZW50KGNvbnN0IFdlYldoZWVs
RXZlbnQmIHdoZWVsRXZlbnQsIE9wdGlvblNldDxXaGVlbEV2ZW50UHJvY2Vzc2luZ1N0ZXBzPiBw
cm9jZXNzaW5nU3RlcHMpCitib29sIFdlYlBhZ2U6OndoZWVsRXZlbnQoY29uc3QgV2ViV2hlZWxF
dmVudCYgd2hlZWxFdmVudCwgT3B0aW9uU2V0PFdoZWVsRXZlbnRQcm9jZXNzaW5nU3RlcHM+IHBy
b2Nlc3NpbmdTdGVwcykKIHsKICAgICBtX3VzZXJBY3Rpdml0eS5pbXB1bHNlKCk7CiAKQEAgLTI4
NzQsNiArMjg3NCwxNiBAQCB2b2lkIFdlYlBhZ2U6OndoZWVsRXZlbnQoY29uc3QgV2ViV2hlZWxF
dmVudCYgd2hlZWxFdmVudCwgT3B0aW9uU2V0PFdoZWVsRXZlbnRQcgogCiAgICAgaWYgKHByb2Nl
c3NpbmdTdGVwcy5jb250YWlucyhXaGVlbEV2ZW50UHJvY2Vzc2luZ1N0ZXBzOjpNYWluVGhyZWFk
Rm9yU2Nyb2xsaW5nKSkKICAgICAgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEaWRS
ZWNlaXZlRXZlbnQoc3RhdGljX2Nhc3Q8dWludDMyX3Q+KHdoZWVsRXZlbnQudHlwZSgpKSwgaGFu
ZGxlZCkpOworCisgICAgcmV0dXJuIGhhbmRsZWQ7Cit9CisKK3ZvaWQgV2ViUGFnZTo6ZGlzcGF0
Y2hXaGVlbEV2ZW50V2l0aG91dFNjcm9sbGluZyhjb25zdCBXZWJXaGVlbEV2ZW50JiB3aGVlbEV2
ZW50LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQor
eworICAgIGF1dG8gZ2VzdHVyZVN0YXRlID0gbV9wYWdlLT5tYWluRnJhbWUoKS5ldmVudEhhbmRs
ZXIoKS53aGVlbFNjcm9sbEdlc3R1cmVTdGF0ZSgpOworICAgIGJvb2wgaXNDYW5jZWxhYmxlID0g
IWdlc3R1cmVTdGF0ZSB8fCBnZXN0dXJlU3RhdGUgPT0gV2hlZWxTY3JvbGxHZXN0dXJlU3RhdGU6
OkJsb2NraW5nOworICAgIGJvb2wgaGFuZGxlZCA9IHRoaXMtPndoZWVsRXZlbnQod2hlZWxFdmVu
dCwgeyBpc0NhbmNlbGFibGUgPyBXaGVlbEV2ZW50UHJvY2Vzc2luZ1N0ZXBzOjpNYWluVGhyZWFk
Rm9yQmxvY2tpbmdET01FdmVudERpc3BhdGNoIDogV2hlZWxFdmVudFByb2Nlc3NpbmdTdGVwczo6
TWFpblRocmVhZEZvck5vbkJsb2NraW5nRE9NRXZlbnREaXNwYXRjaCB9KTsKKyAgICBjb21wbGV0
aW9uSGFuZGxlcihoYW5kbGVkKTsKIH0KIAogc3RhdGljIGJvb2wgaGFuZGxlS2V5RXZlbnQoY29u
c3QgV2ViS2V5Ym9hcmRFdmVudCYga2V5Ym9hcmRFdmVudCwgUGFnZSogcGFnZSkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaCBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAppbmRleCBlMDRlM2E4YjJkMTc4Y2M4
NDk1ZDQ1YmFmODFmMzdkYWVmYmI3YjcwLi4wN2E5NmYzOTE5OTY1MWFlYzg3MDVlYjUxZmEwMThk
MTcwOWNjYmViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJQYWdlLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5o
CkBAIC0xMDEzLDcgKzEwMTMsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBjb250ZXh0TWVudVNob3dp
bmcoKSB7IG1faXNTaG93aW5nQ29udGV4dE1lbnUgPSB0cnVlOyB9CiAjZW5kaWYKIAotICAgIHZv
aWQgd2hlZWxFdmVudChjb25zdCBXZWJXaGVlbEV2ZW50JiwgT3B0aW9uU2V0PFdlYkNvcmU6Oldo
ZWVsRXZlbnRQcm9jZXNzaW5nU3RlcHM+KTsKKyAgICBib29sIHdoZWVsRXZlbnQoY29uc3QgV2Vi
V2hlZWxFdmVudCYsIE9wdGlvblNldDxXZWJDb3JlOjpXaGVlbEV2ZW50UHJvY2Vzc2luZ1N0ZXBz
Pik7CiAKICAgICB2b2lkIHdoZWVsRXZlbnRIYW5kbGVyc0NoYW5nZWQoYm9vbCk7CiAgICAgdm9p
ZCByZWNvbXB1dGVTaG9ydENpcmN1aXRIb3Jpem9udGFsV2hlZWxFdmVudHNTdGF0ZSgpOwpAQCAt
MTM3MSw2ICsxMzcxLDggQEAgcHVibGljOgogICAgIGJvb2wgY3JlYXRlQXBwSGlnaGxpZ2h0SW5T
ZWxlY3RlZFJhbmdlKENyZWF0ZU5ld0dyb3VwRm9ySGlnaGxpZ2h0KTsKICNlbmRpZgogCisgICAg
dm9pZCBkaXNwYXRjaFdoZWVsRXZlbnRXaXRob3V0U2Nyb2xsaW5nKGNvbnN0IFdlYldoZWVsRXZl
bnQmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsKKwogcHJpdmF0ZToKICAgICBX
ZWJQYWdlKFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJz
JiYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQ
YWdlLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFn
ZS5tZXNzYWdlcy5pbgppbmRleCA4NjRjNmU4MTlhYzY5YzIwMWFmNDZmZDUwYzZhZTJkNjVmODRj
Y2Y5Li5jZDQ5Zjc2ZGUyZTE3M2E3YjlmMDNmNTIzZDJjMTQwN2JlMzYzNWViIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCisr
KyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4K
QEAgLTYyMSw0ICs2MjEsNSBAQCBHZW5lcmF0ZVN5bnRoZXRpY0VkaXRpbmdDb21tYW5kKGVudW06
dWludDhfdCBXZWJLaXQ6OlN5bnRoZXRpY0VkaXRpbmdDb21tYW5kVHlwZQogICAgIENyZWF0ZUFw
cEhpZ2hsaWdodEluU2VsZWN0ZWRSYW5nZShlbnVtOmJvb2wgV2ViS2l0OjpDcmVhdGVOZXdHcm91
cEZvckhpZ2hsaWdodCBjcmVhdGVOZXdHcm91cCkKICNlbmRpZgogCisgICAgRGlzcGF0Y2hXaGVl
bEV2ZW50V2l0aG91dFNjcm9sbGluZyhXZWJLaXQ6OldlYldoZWVsRXZlbnQgZXZlbnQpIC0+IChi
b29sIGhhbmRsZWQpIEFzeW5jCiB9CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29s
cy9DaGFuZ2VMb2cKaW5kZXggNDA0NTU3ZWM0ZDdkMmU4ZjVlMDBjNzYwM2U5Mzg3Y2NjZGFhNmYz
YS4uYWFlODQ3ZGUyYjdjY2M4Y2I3OTgyNTQ1YzQzNDQ5NDk3Y2Y2N2JkMCAxMDA2NDQKLS0tIGEv
VG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIyIEBACisy
MDIwLTEyLTEwICBUaW0gSG9ydG9uICA8dGltb3RoeV9ob3J0b25AYXBwbGUuY29tPgorCisgICAg
ICAgIFRyYWNrcGFkIGFuZCBNb3VzZSBzY3JvbGwgZXZlbnRzIG9uIGlQYWQgb25seSBmaXJlICJw
b2ludGVybW92ZSIgLS0gbm90ICJ3aGVlbCIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTIxMDA3MQorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNTQ2MTY4
NTM+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBU
ZXN0V2ViS2l0QVBJL1Rlc3RzL2lvcy9XS1Njcm9sbFZpZXdUZXN0cy5tbToKKyAgICAgICAgKC1b
V0tVSVNjcm9sbEV2ZW50IGluaXRXaXRoUGhhc2U6bG9jYXRpb246ZGVsdGE6XSk6CisgICAgICAg
ICgtW1dLVUlTY3JvbGxFdmVudCBwaGFzZV0pOgorICAgICAgICAoLVtXS1VJU2Nyb2xsRXZlbnQg
bG9jYXRpb25JblZpZXc6XSk6CisgICAgICAgICgtW1dLVUlTY3JvbGxFdmVudCBfYWRqdXN0ZWRB
Y2NlbGVyYXRlZERlbHRhSW5WaWV3Ol0pOgorICAgICAgICAoVEVTVCk6CisgICAgICAgICogVGVz
dFdlYktpdEFQSS9pb3MvVUlLaXRTUEkuaDoKKyAgICAgICAgQWRkIGEgdmVyeSBzaW1wbGUgdGVz
dCB0aGF0IGRpcmVjdGx5IGNhbGxzIHRoZSBuZXcgVUlTY3JvbGxWaWV3RGVsZWdhdGUgU1BJCisg
ICAgICAgIGFuZCB2ZXJpZmllcyB0aGF0IG9ubHkgdGhlIGZpcnN0IGV2ZW50IGlzIHByZXZlbnRh
YmxlICh1bmxlc3MgdGhlIGZpcnN0IGV2ZW50CisgICAgICAgIGlzIHByZXZlbnRlZCwgaW4gd2hp
Y2ggY2FzZSBhbGwgc3Vic2VxdWVudCBldmVudHMgYXJlIHByZXZlbnRhYmxlKS4KKwogMjAyMC0x
Mi0wMyAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgogCiAgICAg
ICAgIEludHJvZHVjZSBuZXcgZG93bmxvYWQgU1BJCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL2lvcy9XS1Njcm9sbFZpZXdUZXN0cy5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvaW9zL1dLU2Nyb2xsVmlld1Rlc3RzLm1tCmluZGV4IDBlMmExYzllYzUxOWM3ZGRk
YTU2YTE5YWI0YTAxNTc4ZDUwZTVlZDYuLjgxZGJhYjRmYTY0MTI2OWE5ODdhM2JlNmUzYTAxZjgw
Mzg2YmQ4YWEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvaW9zL1dLU2Ny
b2xsVmlld1Rlc3RzLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvaW9zL1dLU2Ny
b2xsVmlld1Rlc3RzLm1tCkBAIC0yOSw4ICsyOSw1MyBAQAogCiAjaW1wb3J0ICJQbGF0Zm9ybVV0
aWxpdGllcy5oIgogI2ltcG9ydCAiVGVzdFdLV2ViVmlldy5oIgorI2ltcG9ydCAiVUlLaXRTUEku
aCIKICNpbXBvcnQgPFdlYktpdC9XS1dlYlZpZXdQcml2YXRlLmg+CiAKKyNpZiBIQVZFKFVJU0NS
T0xMVklFV19BU1lOQ0hST05PVVNfU0NST0xMX0VWRU5UX0hBTkRMSU5HKQorQGludGVyZmFjZSBX
S1VJU2Nyb2xsRXZlbnQgOiBVSVNjcm9sbEV2ZW50CisKKy0gKGluc3RhbmNldHlwZSlpbml0V2l0
aFBoYXNlOihVSVNjcm9sbFBoYXNlKXBoYXNlIGxvY2F0aW9uOihDR1BvaW50KWxvY2F0aW9uIGRl
bHRhOihDR1ZlY3RvcilkZWx0YTsKKworQGVuZAorCitAaW1wbGVtZW50YXRpb24gV0tVSVNjcm9s
bEV2ZW50IHsKKyAgICBVSVNjcm9sbFBoYXNlIF9waGFzZTsKKyAgICBDR1BvaW50IF9sb2NhdGlv
bjsKKyAgICBDR1ZlY3RvciBfZGVsdGE7Cit9CisKKy0gKGluc3RhbmNldHlwZSlpbml0V2l0aFBo
YXNlOihVSVNjcm9sbFBoYXNlKXBoYXNlIGxvY2F0aW9uOihDR1BvaW50KWxvY2F0aW9uIGRlbHRh
OihDR1ZlY3RvcilkZWx0YQoreworICAgIHNlbGYgPSBbc3VwZXIgaW5pdF07CisgICAgaWYgKCFz
ZWxmKQorICAgICAgICByZXR1cm4gbmlsOworCisgICAgX3BoYXNlID0gcGhhc2U7CisgICAgX2xv
Y2F0aW9uID0gbG9jYXRpb247CisgICAgX2RlbHRhID0gZGVsdGE7CisKKyAgICByZXR1cm4gc2Vs
ZjsKK30KKworLSAoVUlTY3JvbGxQaGFzZSlwaGFzZQoreworICAgIHJldHVybiBfcGhhc2U7Cit9
CisKKy0gKENHUG9pbnQpbG9jYXRpb25JblZpZXc6KFVJVmlldyAqKXZpZXcKK3sKKyAgICByZXR1
cm4gX2xvY2F0aW9uOworfQorCistIChDR1ZlY3RvcilfYWRqdXN0ZWRBY2NlbGVyYXRlZERlbHRh
SW5WaWV3OihVSVZpZXcgKil2aWV3Cit7CisgICAgcmV0dXJuIF9kZWx0YTsKK30KKworQGVuZAor
I2VuZGlmIC8vIEhBVkUoVUlTQ1JPTExWSUVXX0FTWU5DSFJPTk9VU19TQ1JPTExfRVZFTlRfSEFO
RExJTkcpCisKIHN0YXRpYyB2b2lkIHRyYXZlcnNlTGF5ZXJUcmVlKENBTGF5ZXIgKmxheWVyLCB2
b2lkKF5ibG9jaykoQ0FMYXllciAqKSkKIHsKICAgICBmb3IgKENBTGF5ZXIgKmNoaWxkIGluIGxh
eWVyLnN1YmxheWVycykKQEAgLTcxLDQgKzExNiw4NiBAQCBURVNUKFdLU2Nyb2xsVmlld1Rlc3Rz
LCBQb3NpdGlvbkZpeGVkTGF5ZXJBZnRlclNjcm9sbGluZykKICAgICBFWFBFQ1RfVFJVRShmb3Vu
ZExheWVyRm9yRml4ZWROYXZpZ2F0aW9uQmFyKTsKIH0KIAorI2lmIEhBVkUoVUlTQ1JPTExWSUVX
X0FTWU5DSFJPTk9VU19TQ1JPTExfRVZFTlRfSEFORExJTkcpCitURVNUKFdLU2Nyb2xsVmlld1Rl
c3RzLCBBc3luY2hyb25vdXNXaGVlbEV2ZW50SGFuZGxpbmcpCit7CisgICAgYXV0byB3ZWJWaWV3
ID0gYWRvcHROUyhbW1Rlc3RXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6Q0dSZWN0TWFr
ZSgwLCAwLCAzMjAsIDUwMCldKTsKKyAgICBbd2ViVmlldyBzeW5jaHJvbm91c2x5TG9hZEhUTUxT
dHJpbmc6QCIiCisgICAgICAgICI8c3R5bGU+I2hhbmRsZXIgeyB3aWR0aDogMjAwcHg7IGhlaWdo
dDogMjAwcHg7IH08L3N0eWxlPiIKKyAgICAgICAgIjxkaXYgaWQ9J2hhbmRsZXInPjwvZGl2PiIK
KyAgICAgICAgIjxzY3JpcHQ+d2luZG93LnByZXZlbnREZWZhdWx0T25TY3JvbGxFdmVudHMgPSBm
YWxzZTsiCisgICAgICAgICJkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnaGFuZGxlcicpLmFkZEV2
ZW50TGlzdGVuZXIoJ3doZWVsJywgIgorICAgICAgICAiZnVuY3Rpb24gKGUpIHsiCisgICAgICAg
ICIgICB3aW5kb3cubGFzdFdoZWVsRXZlbnQgPSBlOyIKKyAgICAgICAgIiAgIGlmICh3aW5kb3cu
cHJldmVudERlZmF1bHRPblNjcm9sbEV2ZW50cykiCisgICAgICAgICIgICAgICAgZS5wcmV2ZW50
RGVmYXVsdCgpOyIKKyAgICAgICAgIn0pPC9zY3JpcHQ+Il07CisgICAgW3dlYlZpZXcgd2FpdEZv
ck5leHRQcmVzZW50YXRpb25VcGRhdGVdOworCisgICAgX19ibG9jayBib29sIGRvbmU7CisgICAg
X19ibG9jayBib29sIHdhc0hhbmRsZWQ7CisKKyAgICBhdXRvIHN5bmNocm9ub3VzbHlIYW5kbGVT
Y3JvbGxFdmVudCA9IF4oVUlTY3JvbGxQaGFzZSBwaGFzZSwgQ0dQb2ludCBsb2NhdGlvbiwgQ0dW
ZWN0b3IgZGVsdGEpIHsKKyAgICAgICAgZG9uZSA9IGZhbHNlOworICAgICAgICBhdXRvIGV2ZW50
ID0gYWRvcHROUyhbW1dLVUlTY3JvbGxFdmVudCBhbGxvY10gaW5pdFdpdGhQaGFzZTpwaGFzZSBs
b2NhdGlvbjpsb2NhdGlvbiBkZWx0YTpkZWx0YV0pOworICAgICAgICBbd2ViVmlldyBfc2Nyb2xs
Vmlldzpbd2ViVmlldyBzY3JvbGxWaWV3XSBhc3luY2hyb25vdXNseUhhbmRsZVNjcm9sbEV2ZW50
OmV2ZW50LmdldCgpIGNvbXBsZXRpb246XihCT09MIGhhbmRsZWQpIHsKKyAgICAgICAgICAgIHdh
c0hhbmRsZWQgPSBoYW5kbGVkOworICAgICAgICAgICAgZG9uZSA9IHRydWU7CisgICAgICAgIH1d
OworICAgICAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmRvbmUpOworICAgIH07CisKKyAg
ICAvLyBEb24ndCBwcmV2ZW50RGVmYXVsdCgpIGF0IGFsbC4KKyAgICBzeW5jaHJvbm91c2x5SGFu
ZGxlU2Nyb2xsRXZlbnQoVUlTY3JvbGxQaGFzZU1heUJlZ2luLCBDR1BvaW50TWFrZSgxMDAsIDEw
MCksIENHVmVjdG9yTWFrZSgwLCAwKSk7CisgICAgRVhQRUNUX0ZBTFNFKHdhc0hhbmRsZWQpOwor
ICAgIHN5bmNocm9ub3VzbHlIYW5kbGVTY3JvbGxFdmVudChVSVNjcm9sbFBoYXNlQmVnYW4sIENH
UG9pbnRNYWtlKDEwMCwgMTAwKSwgQ0dWZWN0b3JNYWtlKDAsIDEwKSk7CisgICAgRVhQRUNUX0ZB
TFNFKHdhc0hhbmRsZWQpOworICAgIEVYUEVDVF9UUlVFKFtbd2ViVmlldyBvYmplY3RCeUV2YWx1
YXRpbmdKYXZhU2NyaXB0OkAid2luZG93Lmxhc3RXaGVlbEV2ZW50LmNhbmNlbGFibGUiXSBpbnRW
YWx1ZV0pOworICAgIEVYUEVDVF9FUSgtMTAsIFtbd2ViVmlldyBvYmplY3RCeUV2YWx1YXRpbmdK
YXZhU2NyaXB0OkAid2luZG93Lmxhc3RXaGVlbEV2ZW50LmRlbHRhWSJdIGludFZhbHVlXSk7Cisg
ICAgc3luY2hyb25vdXNseUhhbmRsZVNjcm9sbEV2ZW50KFVJU2Nyb2xsUGhhc2VDaGFuZ2VkLCBD
R1BvaW50TWFrZSgxMDAsIDEwMCksIENHVmVjdG9yTWFrZSgwLCAxMCkpOworICAgIEVYUEVDVF9G
QUxTRSh3YXNIYW5kbGVkKTsKKyAgICBzeW5jaHJvbm91c2x5SGFuZGxlU2Nyb2xsRXZlbnQoVUlT
Y3JvbGxQaGFzZUVuZGVkLCBDR1BvaW50TWFrZSgxMDAsIDEwMCksIENHVmVjdG9yTWFrZSgwLCAw
KSk7CisgICAgRVhQRUNUX0ZBTFNFKHdhc0hhbmRsZWQpOworCisgICAgLy8gcHJldmVudERlZmF1
bHQoKSBvbiBhbGwgZXZlbnRzLgorICAgIFt3ZWJWaWV3IHN0cmluZ0J5RXZhbHVhdGluZ0phdmFT
Y3JpcHQ6QCJ3aW5kb3cucHJldmVudERlZmF1bHRPblNjcm9sbEV2ZW50cyA9IHRydWU7Il07Cisg
ICAgc3luY2hyb25vdXNseUhhbmRsZVNjcm9sbEV2ZW50KFVJU2Nyb2xsUGhhc2VNYXlCZWdpbiwg
Q0dQb2ludE1ha2UoMTAwLCAxMDApLCBDR1ZlY3Rvck1ha2UoMCwgMCkpOworICAgIEVYUEVDVF9G
QUxTRSh3YXNIYW5kbGVkKTsKKyAgICBzeW5jaHJvbm91c2x5SGFuZGxlU2Nyb2xsRXZlbnQoVUlT
Y3JvbGxQaGFzZUJlZ2FuLCBDR1BvaW50TWFrZSgxMDAsIDEwMCksIENHVmVjdG9yTWFrZSgwLCAx
MCkpOworICAgIEVYUEVDVF9UUlVFKHdhc0hhbmRsZWQpOworICAgIHN5bmNocm9ub3VzbHlIYW5k
bGVTY3JvbGxFdmVudChVSVNjcm9sbFBoYXNlQ2hhbmdlZCwgQ0dQb2ludE1ha2UoMTAwLCAxMDAp
LCBDR1ZlY3Rvck1ha2UoMCwgMTApKTsKKyAgICBFWFBFQ1RfVFJVRSh3YXNIYW5kbGVkKTsKKyAg
ICBzeW5jaHJvbm91c2x5SGFuZGxlU2Nyb2xsRXZlbnQoVUlTY3JvbGxQaGFzZUVuZGVkLCBDR1Bv
aW50TWFrZSgxMDAsIDEwMCksIENHVmVjdG9yTWFrZSgwLCAwKSk7CisgICAgRVhQRUNUX0ZBTFNF
KHdhc0hhbmRsZWQpOworCisgICAgLy8gcHJldmVudERlZmF1bHQoKSBvbiBhbGwgYnV0IHRoZSBi
ZWdpbiBldmVudDsgaXQgd2lsbCBiZSBpZ25vcmVkLgorICAgIFt3ZWJWaWV3IHN0cmluZ0J5RXZh
bHVhdGluZ0phdmFTY3JpcHQ6QCJ3aW5kb3cucHJldmVudERlZmF1bHRPblNjcm9sbEV2ZW50cyA9
IGZhbHNlOyJdOworICAgIHN5bmNocm9ub3VzbHlIYW5kbGVTY3JvbGxFdmVudChVSVNjcm9sbFBo
YXNlTWF5QmVnaW4sIENHUG9pbnRNYWtlKDEwMCwgMTAwKSwgQ0dWZWN0b3JNYWtlKDAsIDApKTsK
KyAgICBFWFBFQ1RfRkFMU0Uod2FzSGFuZGxlZCk7CisgICAgc3luY2hyb25vdXNseUhhbmRsZVNj
cm9sbEV2ZW50KFVJU2Nyb2xsUGhhc2VCZWdhbiwgQ0dQb2ludE1ha2UoMTAwLCAxMDApLCBDR1Zl
Y3Rvck1ha2UoMCwgMTApKTsKKyAgICBFWFBFQ1RfVFJVRShbW3dlYlZpZXcgb2JqZWN0QnlFdmFs
dWF0aW5nSmF2YVNjcmlwdDpAIndpbmRvdy5sYXN0V2hlZWxFdmVudC5jYW5jZWxhYmxlIl0gaW50
VmFsdWVdKTsKKyAgICBFWFBFQ1RfRkFMU0Uod2FzSGFuZGxlZCk7CisgICAgW3dlYlZpZXcgc3Ry
aW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpAIndpbmRvdy5wcmV2ZW50RGVmYXVsdE9uU2Nyb2xs
RXZlbnRzID0gdHJ1ZTsiXTsKKyAgICBzeW5jaHJvbm91c2x5SGFuZGxlU2Nyb2xsRXZlbnQoVUlT
Y3JvbGxQaGFzZUNoYW5nZWQsIENHUG9pbnRNYWtlKDEwMCwgMTAwKSwgQ0dWZWN0b3JNYWtlKDAs
IDEwKSk7CisgICAgRVhQRUNUX0ZBTFNFKHdhc0hhbmRsZWQpOworICAgIEVYUEVDVF9GQUxTRShb
W3dlYlZpZXcgb2JqZWN0QnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpAIndpbmRvdy5sYXN0V2hlZWxF
dmVudC5jYW5jZWxhYmxlIl0gaW50VmFsdWVdKTsKKyAgICBzeW5jaHJvbm91c2x5SGFuZGxlU2Ny
b2xsRXZlbnQoVUlTY3JvbGxQaGFzZUVuZGVkLCBDR1BvaW50TWFrZSgxMDAsIDEwMCksIENHVmVj
dG9yTWFrZSgwLCAwKSk7CisgICAgRVhQRUNUX0ZBTFNFKHdhc0hhbmRsZWQpOworCisgICAgLy8g
cHJldmVudERlZmF1bHQoKSBvbiB0aGUgYmVnaW4gZXZlbnQsIGFuZCBzb21lIHN1YnNlcXVlbnQg
ZXZlbnRzLgorICAgIFt3ZWJWaWV3IHN0cmluZ0J5RXZhbHVhdGluZ0phdmFTY3JpcHQ6QCJ3aW5k
b3cucHJldmVudERlZmF1bHRPblNjcm9sbEV2ZW50cyA9IHRydWU7Il07CisgICAgc3luY2hyb25v
dXNseUhhbmRsZVNjcm9sbEV2ZW50KFVJU2Nyb2xsUGhhc2VNYXlCZWdpbiwgQ0dQb2ludE1ha2Uo
MTAwLCAxMDApLCBDR1ZlY3Rvck1ha2UoMCwgMCkpOworICAgIEVYUEVDVF9GQUxTRSh3YXNIYW5k
bGVkKTsKKyAgICBzeW5jaHJvbm91c2x5SGFuZGxlU2Nyb2xsRXZlbnQoVUlTY3JvbGxQaGFzZUJl
Z2FuLCBDR1BvaW50TWFrZSgxMDAsIDEwMCksIENHVmVjdG9yTWFrZSgwLCAxMCkpOworICAgIEVY
UEVDVF9UUlVFKHdhc0hhbmRsZWQpOworICAgIHN5bmNocm9ub3VzbHlIYW5kbGVTY3JvbGxFdmVu
dChVSVNjcm9sbFBoYXNlQ2hhbmdlZCwgQ0dQb2ludE1ha2UoMTAwLCAxMDApLCBDR1ZlY3Rvck1h
a2UoMCwgMTApKTsKKyAgICBFWFBFQ1RfVFJVRSh3YXNIYW5kbGVkKTsKKyAgICBbd2ViVmlldyBz
dHJpbmdCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OkAid2luZG93LnByZXZlbnREZWZhdWx0T25TY3Jv
bGxFdmVudHMgPSBmYWxzZTsiXTsKKyAgICBzeW5jaHJvbm91c2x5SGFuZGxlU2Nyb2xsRXZlbnQo
VUlTY3JvbGxQaGFzZUNoYW5nZWQsIENHUG9pbnRNYWtlKDEwMCwgMTAwKSwgQ0dWZWN0b3JNYWtl
KDAsIDEwKSk7CisgICAgRVhQRUNUX0ZBTFNFKHdhc0hhbmRsZWQpOworICAgIHN5bmNocm9ub3Vz
bHlIYW5kbGVTY3JvbGxFdmVudChVSVNjcm9sbFBoYXNlRW5kZWQsIENHUG9pbnRNYWtlKDEwMCwg
MTAwKSwgQ0dWZWN0b3JNYWtlKDAsIDApKTsKKyAgICBFWFBFQ1RfRkFMU0Uod2FzSGFuZGxlZCk7
Cit9CisjZW5kaWYgLy8gSEFWRShVSVNDUk9MTFZJRVdfQVNZTkNIUk9OT1VTX1NDUk9MTF9FVkVO
VF9IQU5ETElORykKKwogI2VuZGlmIC8vIFBMQVRGT1JNKElPU19GQU1JTFkpCmRpZmYgLS1naXQg
YS9Ub29scy9UZXN0V2ViS2l0QVBJL2lvcy9VSUtpdFNQSS5oIGIvVG9vbHMvVGVzdFdlYktpdEFQ
SS9pb3MvVUlLaXRTUEkuaAppbmRleCBkZDVhZWNlYzkwNTQyOWM5YTAyNWM1MmMxMGY3NDQ1Nzky
Zjg0OTBmLi5iNTNlYTU2MGY4NGE3ZGMyOGU3NDdlZWZjZWU1NWE1MzhlNmVkZDE5IDEwMDY0NAot
LS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL2lvcy9VSUtpdFNQSS5oCisrKyBiL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvaW9zL1VJS2l0U1BJLmgKQEAgLTM3LDYgKzM3LDggQEAKICNpbXBvcnQgPFVJS2l0
L1VJS2V5Ym9hcmRfUHJpdmF0ZS5oPgogI2ltcG9ydCA8VUlLaXQvVUlSZXNwb25kZXJfUHJpdmF0
ZS5oPgogI2ltcG9ydCA8VUlLaXQvVUlTY3JlZW5fUHJpdmF0ZS5oPgorI2ltcG9ydCA8VUlLaXQv
VUlTY3JvbGxFdmVudF9Qcml2YXRlLmg+CisjaW1wb3J0IDxVSUtpdC9VSVNjcm9sbFZpZXdfRm9y
V2ViS2l0T25seS5oPgogI2ltcG9ydCA8VUlLaXQvVUlTY3JvbGxWaWV3X1ByaXZhdGUuaD4KICNp
bXBvcnQgPFVJS2l0L1VJVGV4dEF1dG9maWxsU3VnZ2VzdGlvbi5oPgogI2ltcG9ydCA8VUlLaXQv
VUlUZXh0SW5wdXRNdWx0aURvY3VtZW50Lmg+CkBAIC0yNDAsNiArMjQyLDEzIEBAIElHTk9SRV9X
QVJOSU5HU19FTkQKIEBwcm9wZXJ0eSAobm9uYXRvbWljLCBnZXR0ZXI9X2lzQXV0b21hdGljQ29u
dGVudE9mZnNldEFkanVzdG1lbnRFbmFibGVkLCBzZXR0ZXI9X3NldEF1dG9tYXRpY0NvbnRlbnRP
ZmZzZXRBZGp1c3RtZW50RW5hYmxlZDopIEJPT0wgaXNBdXRvbWF0aWNDb250ZW50T2Zmc2V0QWRq
dXN0bWVudEVuYWJsZWQ7CiBAZW5kCiAKK0BpbnRlcmZhY2UgVUlTY3JvbGxFdmVudCA6IFVJRXZl
bnQKK0BlbmQKKworQGludGVyZmFjZSBOU09iamVjdCAoVUlTY3JvbGxWaWV3RGVsZWdhdGVfRm9y
V2ViS2l0T25seSkKKy0gKHZvaWQpX3Njcm9sbFZpZXc6KFVJU2Nyb2xsVmlldyAqKXNjcm9sbFZp
ZXcgYXN5bmNocm9ub3VzbHlIYW5kbGVTY3JvbGxFdmVudDooVUlTY3JvbGxFdmVudCAqKXNjcm9s
bEV2ZW50IGNvbXBsZXRpb246KHZvaWQgKF4pKEJPT0wgaGFuZGxlZCkpY29tcGxldGlvbjsKK0Bl
bmQKKwogI2VuZGlmIC8vIFVTRShBUFBMRV9JTlRFUk5BTF9TREspCiAKICNkZWZpbmUgVUlXS0Rv
Y3VtZW50UmVxdWVzdE1hcmtlZFRleHRSZWN0cyAoMSA8PCA1KQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>415975</attachid>
            <date>2020-12-11 00:42:59 -0800</date>
            <delta_ts>2020-12-11 14:01:34 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-210071-20201211004258.patch</filename>
            <type>text/plain</type>
            <size>41782</size>
            <attacher name="Tim Horton">thorton</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcwNDM1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDMzZTNhZjVkNGY3MmUxNDlhYTYyNTBi
Y2M4YmNlODgxODhlNTM5OTEuLjkxMTBhNDU3MTdkOWEwNzQ5NmI0YTRmNGE5ZmYyMmU4MTI3YmQw
ZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMjAtMTItMTAgIFRpbSBIb3J0b24gIDx0aW1vdGh5
X2hvcnRvbkBhcHBsZS5jb20+CisKKyAgICAgICAgVHJhY2twYWQgYW5kIE1vdXNlIHNjcm9sbCBl
dmVudHMgb24gaVBhZCBvbmx5IGZpcmUgInBvaW50ZXJtb3ZlIiAtLSBub3QgIndoZWVsIgorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjEwMDcxCisgICAg
ICAgIDxyZGFyOi8vcHJvYmxlbS81NDYxNjg1Mz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICAqIHd0Zi9QbGF0Zm9ybUVuYWJsZUNvY29hLmg6CisgICAg
ICAgIEVuYWJsZSB3aGVlbCBldmVudCByZWdpb25zIG9uIGlPUyArIG1hY0NhdGFseXN0LgorCiAy
MDIwLTEyLTAzICBBZGFtIFJvYmVuICA8YXJvYmVuQGFwcGxlLmNvbT4KIAogICAgICAgICBBZG9w
dCBGQUxMQkFDS19QTEFURk9STQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9n
IGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDdhZTI4OTMwYjc0ZmJmZDczMDFkNjhm
OWIxYjBiY2Y3OGE4NmM5ZjcuLjI2MGFkY2Y1Y2Y1NGQ1Mzg1ZWU1ODQxNTE5YjExM2QzNGM5ZWVl
YWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMSBAQAorMjAyMC0xMi0xMCAgVGltIEhvcnRvbiAg
PHRpbW90aHlfaG9ydG9uQGFwcGxlLmNvbT4KKworICAgICAgICBUcmFja3BhZCBhbmQgTW91c2Ug
c2Nyb2xsIGV2ZW50cyBvbiBpUGFkIG9ubHkgZmlyZSAicG9pbnRlcm1vdmUiIC0tIG5vdCAid2hl
ZWwiCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTAw
NzEKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzU0NjE2ODUzPgorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogcGFnZS9FdmVudEhhbmRsZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjpoYW5kbGVXaGVlbEV2ZW50SW50ZXJuYWwp
OgorICAgICAgICBGaXggYSBtaW5vciBsb2dpYyBlcnJvciB3aGVuIFdIRUVMX0VWRU5UX0xBVENI
SU5HIGlzIG9mZjsgYWxsb3dTY3JvbGxpbmcKKyAgICAgICAgd291bGQgYWx3YXlzIGJlIHRydWUs
IGV2ZW4gaWYgdGhlIHNldCBvZiBwcm9jZXNzaW5nIHN0ZXBzIGRvZXMgbm90IGluY2x1ZGUgYW55
IHNjcm9sbGluZyBzdGVwcy4KKworICAgICAgICAqIHJlbmRlcmluZy9FdmVudFJlZ2lvbi5oOgor
ICAgICAgICAoV2ViQ29yZTo6RXZlbnRSZWdpb246OmVuY29kZSBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpFdmVudFJlZ2lvbjo6ZGVjb2RlKToKKyAgICAgICAgRW5jb2RlL2RlY29kZSB0aGUg
d2hlZWwgYW5kIHBhc3NpdmUgd2hlZWwgZXZlbnQgcmVnaW9ucy4KKwogMjAyMC0xMi0wNCAgUGVu
ZyBMaXUgIDxwZW5nLmxpdTZAYXBwbGUuY29tPgogCiAgICAgICAgIFtNU0VdIE1vdmUgdHJhY2sg
YnVmZmVyIG1hbmFnZW1lbnQgZnJvbSBTb3VyY2VCdWZmZXIgdG8gU291cmNlQnVmZmVyUHJpdmF0
ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZwppbmRleCA2M2YzNDI5MDgyM2IxYzQ4Yzc3MWEzYzRmMzg1MmNhMjIzNTNlNDRkLi4x
NGM5MDI4MzBiMWIxMmQyNTJjMWJhYmIyZGZmZTQ1YjRlNDQ1ODUzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDY3IEBACisyMDIwLTEyLTEwICBUaW0gSG9ydG9uICA8dGltb3RoeV9ob3J0b25AYXBwbGUu
Y29tPgorCisgICAgICAgIFRyYWNrcGFkIGFuZCBNb3VzZSBzY3JvbGwgZXZlbnRzIG9uIGlQYWQg
b25seSBmaXJlICJwb2ludGVybW92ZSIgLS0gbm90ICJ3aGVlbCIKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxMDA3MQorICAgICAgICA8cmRhcjovL3By
b2JsZW0vNTQ2MTY4NTM+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgKiBQbGF0Zm9ybS9zcGkvaW9zL1VJS2l0U1BJLmg6CisgICAgICAgIEFkZCBzb21l
IFNQSS4KKworICAgICAgICAqIFNoYXJlZC9pb3MvV2ViSU9TRXZlbnRGYWN0b3J5Lmg6CisgICAg
ICAgICogU2hhcmVkL2lvcy9XZWJJT1NFdmVudEZhY3RvcnkubW06CisgICAgICAgICh0b1dlYlBo
YXNlKToKKyAgICAgICAgKFdlYklPU0V2ZW50RmFjdG9yeTo6Y3JlYXRlV2ViV2hlZWxFdmVudCk6
CisgICAgICAgIEFkZCBhIFVJU2Nyb2xsRXZlbnQtPldlYldoZWVsRXZlbnQgY29udmVyc2lvbiBo
ZWxwZXIuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld0ludGVybmFs
Lmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9pb3MvV0tXZWJWaWV3SU9TLmg6CisgICAgICAg
ICogVUlQcm9jZXNzL0FQSS9pb3MvV0tXZWJWaWV3SU9TLm1tOgorICAgICAgICAoLVtXS1dlYlZp
ZXcgX3NldHVwU2Nyb2xsQW5kQ29udGVudFZpZXdzXSk6CisgICAgICAgIEVuYWJsZSBhc3luYyBV
SVNjcm9sbEV2ZW50IGhhbmRsaW5nIGZvciBXS1Njcm9sbFZpZXcuCisKKyAgICAgICAgKC1bV0tX
ZWJWaWV3IF9zY3JvbGxWaWV3OmFzeW5jaHJvbm91c2x5SGFuZGxlU2Nyb2xsRXZlbnQ6Y29tcGxl
dGlvbjpdKToKKyAgICAgICAgQWRvcHQgbmV3IFVJS2l0IFNQSSB0byBhc3luY2hyb25vdXNseSBk
ZWZlciBVSVNjcm9sbEV2ZW50cy4KKyAgICAgICAgV2UgcGFzcyB0aGVtIHRvIHRoZSBXZWIgQ29u
dGVudCBwcm9jZXNzLCB3aGVyZSB0aGV5IGFyZSBwcm9jZXNzZWQgCisgICAgICAgICpvbmx5KiBm
b3IgZXZlbnQgaGFuZGxpbmcsIG5vdCBmb3Igc2Nyb2xsaW5nLgorCisgICAgICAgIElmIHRoZSBl
dmVudCBpcyBub3QgcHJldmVudGFibGUsIHdlIHdpbGwgc3luY2hyb25vdXNseSByZXBseSB0aGF0
IGl0IHdhcworICAgICAgICBub3QgaGFuZGxlZDsgaWYgaXQgaXMgcHJldmVudGFibGUsIG9yIHdl
IGRvbid0IHlldCBrbm93IGlmIGl0IHdpbGwgYmUsCisgICAgICAgIHdlJ2xsIHdhaXQgdG8gaGVh
ciBiYWNrIGZyb20gdGhlIFdlYiBDb250ZW50IHByb2Nlc3MgYmVmb3JlIHJlcGx5aW5nLgorCisg
ICAgICAgIFVJS2l0IHdpbGwgd2FpdCB1bnRpbCBvdXIgcmVwbHkgdG8gYXBwbHkgdGhlIFVJU2Ny
b2xsRXZlbnQgdG8gdGhlIFVJU2Nyb2xsVmlldy4KKworICAgICAgICAqIFVJUHJvY2Vzcy9QYWdl
Q2xpZW50Lmg6CisgICAgICAgICogVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9pb3MvUmVtb3Rl
TGF5ZXJUcmVlVmlld3MuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL2lv
cy9SZW1vdGVMYXllclRyZWVWaWV3cy5tbToKKyAgICAgICAgKFdlYktpdDo6ZXZlbnRMaXN0ZW5l
clR5cGVzQXRQb2ludCk6CisgICAgICAgIEV4cG9zZSBhIG1lY2hhbmlzbSBmb3IgcmV0cmlldmlu
ZyB0aGUgZXZlbnQgbGlzdGVuZXIgdHlwZXMgYXQgYSBnaXZlbiBwb2ludCwKKyAgICAgICAgc2lt
aWxhciB0byB0aGUgZXhpc3RpbmcgbWVjaGFuaXNtIGZvciB0b3VjaCBldmVudCBsaXN0ZW5lcnMu
CisKKyAgICAgICAgKC1bV0tDaGlsZFNjcm9sbFZpZXcgaW5pdFdpdGhGcmFtZTpdKToKKyAgICAg
ICAgRW5hYmxlIGFzeW5jIFVJU2Nyb2xsRXZlbnQgaGFuZGxpbmcgZm9yIFdLQ2hpbGRTY3JvbGxW
aWV3LgorCisgICAgICAgICogVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9pb3MvU2Nyb2xsaW5n
VHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZUlPUy5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9SZW1v
dGVMYXllclRyZWUvaW9zL1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVJT1MubW06
CisgICAgICAgICgtW1dLU2Nyb2xsaW5nTm9kZVNjcm9sbFZpZXdEZWxlZ2F0ZSBfc2Nyb2xsVmll
dzphc3luY2hyb25vdXNseUhhbmRsZVNjcm9sbEV2ZW50OmNvbXBsZXRpb246XSk6CisgICAgICAg
IChXZWJLaXQ6OlNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVJT1M6OmhhbmRsZUFz
eW5jaHJvbm91c1ByZXZlbnRhYmxlU2Nyb2xsRXZlbnQpOgorICAgICAgICBQbHVtYiBhc3luYyBz
Y3JvbGwgZXZlbnRzIGZvciBzdWItc2Nyb2xsYWJsZSByZWdpb25zIHRocm91Z2ggUGFnZUNsaWVu
dAorICAgICAgICB0byBXS1dlYlZpZXc7IHdlIGRvbid0IGFjdHVhbGx5IGNhcmUgd2hpY2ggVUlT
Y3JvbGxWaWV3IHRoZXkncmUgaGFuZGVkIHRvLAorICAgICAgICBzaW5jZSB3ZSByZS1oaXQtdGVz
dCBvdXJzZWx2ZXMuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpkaXNwYXRjaFdoZWVsRXZlbnRXaXRob3V0U2Ny
b2xsaW5nKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5Lmg6CisgICAgICAgICog
VUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9p
b3MvUGFnZUNsaWVudEltcGxJT1MubW06CisgICAgICAgIChXZWJLaXQ6OlBhZ2VDbGllbnRJbXBs
OjpoYW5kbGVBc3luY2hyb25vdXNQcmV2ZW50YWJsZVNjcm9sbEV2ZW50KToKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6
OndoZWVsRXZlbnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpkaXNwYXRjaFdoZWVsRXZl
bnRXaXRob3V0U2Nyb2xsaW5nKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFn
ZS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluOgor
CiAyMDIwLTEyLTA0ICBQZW5nIExpdSAgPHBlbmcubGl1NkBhcHBsZS5jb20+CiAKICAgICAgICAg
W01TRV0gTW92ZSB0cmFjayBidWZmZXIgbWFuYWdlbWVudCBmcm9tIFNvdXJjZUJ1ZmZlciB0byBT
b3VyY2VCdWZmZXJQcml2YXRlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybUVu
YWJsZUNvY29hLmggYi9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybUVuYWJsZUNvY29hLmgKaW5kZXgg
NWFkZGE4ODZlYTBlNjc2N2Y1Zjc5MDk5OGI2YWI4MWU4MTdiMDZkNC4uNmIwZWY5NWE3ZjU5ZDhk
MWZlNTRmNDRiNDgxYzNmN2M0ODI3ZTRlYyAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvUGxh
dGZvcm1FbmFibGVDb2NvYS5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtRW5hYmxlQ29j
b2EuaApAQCAtNTIyLDcgKzUyMiw3IEBACiAjZGVmaW5lIEVOQUJMRV9UT1VDSF9BQ1RJT05fUkVH
SU9OUyAxCiAjZW5kaWYKIAotI2lmICFkZWZpbmVkKEVOQUJMRV9XSEVFTF9FVkVOVF9SRUdJT05T
KSAmJiBQTEFURk9STShNQUMpCisjaWYgIWRlZmluZWQoRU5BQkxFX1dIRUVMX0VWRU5UX1JFR0lP
TlMpICYmIChQTEFURk9STShNQUMpIHx8IFBMQVRGT1JNKElPUykgfHwgUExBVEZPUk0oTUFDQ0FU
QUxZU1QpKQogI2RlZmluZSBFTkFCTEVfV0hFRUxfRVZFTlRfUkVHSU9OUyAxCiAjZW5kaWYKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwCmluZGV4IDZhYmRkYjI1NjNlOTA1MWY5NGYw
ZWM4ODZiNDk4YWZjN2Y3MWI3ODkuLmYwNDA5MjA3NWUwMmZlNTkzMDY0NjliYTk3ZDkyNjJmYzc4
NjRhMTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAKQEAgLTI5MDUsMTAgKzI5
MDUsMTMgQEAgYm9vbCBFdmVudEhhbmRsZXI6OmhhbmRsZVdoZWVsRXZlbnRJbnRlcm5hbChjb25z
dCBQbGF0Zm9ybVdoZWVsRXZlbnQmIGV2ZW50LCBPcHQKICAgICAgICAgcmV0dXJuIGZhbHNlOwog
CiAgICAgYm9vbCBoYW5kbGVkRXZlbnQgPSBmYWxzZTsKLSAgICBib29sIGFsbG93U2Nyb2xsaW5n
ID0gdHJ1ZTsKKyAgICBib29sIGFsbG93U2Nyb2xsaW5nID0gbV9jdXJyZW50V2hlZWxFdmVudEFs
bG93c1Njcm9sbGluZzsKKwogI2lmIEVOQUJMRShXSEVFTF9FVkVOVF9MQVRDSElORykKLSAgICBh
bGxvd1Njcm9sbGluZyA9IG1fY3VycmVudFdoZWVsRXZlbnRBbGxvd3NTY3JvbGxpbmcgJiYgbV9m
cmFtZS5wYWdlKCktPnNjcm9sbExhdGNoaW5nQ29udHJvbGxlcigpLmxhdGNoaW5nQWxsb3dzU2Ny
b2xsaW5nSW5GcmFtZShtX2ZyYW1lLCBzY3JvbGxhYmxlQXJlYSk7CisgICAgaWYgKGFsbG93U2Ny
b2xsaW5nKQorICAgICAgICBhbGxvd1Njcm9sbGluZyA9IG1fZnJhbWUucGFnZSgpLT5zY3JvbGxM
YXRjaGluZ0NvbnRyb2xsZXIoKS5sYXRjaGluZ0FsbG93c1Njcm9sbGluZ0luRnJhbWUobV9mcmFt
ZSwgc2Nyb2xsYWJsZUFyZWEpOwogI2VuZGlmCisKICAgICBpZiAoYWxsb3dTY3JvbGxpbmcpIHsK
ICAgICAgICAgLy8gRklYTUU6IHByb2Nlc3NXaGVlbEV2ZW50Rm9yU2Nyb2xsaW5nKCkgaXMgb25s
eSBjYWxsZWQgZm9yIEZyYW1lVmlldyBzY3JvbGxpbmcsIG5vdCBvdmVyZmxvdyBzY3JvbGxpbmcs
IHdoaWNoIGlzIGNvbmZ1c2luZy4KICAgICAgICAgaGFuZGxlZEV2ZW50ID0gcHJvY2Vzc1doZWVs
RXZlbnRGb3JTY3JvbGxpbmcoZXZlbnQsIHNjcm9sbGFibGVBcmVhLCBoYW5kbGluZyk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5oIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9FdmVudEhhbmRsZXIuaAppbmRleCBhZDhhODNhNTdkNmQwYjYwNzE4YmU3MDA2MDA2
MDVjZDIxNTJhMGIwLi41MTUzZjU1ZjBlOWQzN2YxOTg4OGQxODRkZGE0YjIyM2RiMzFiNTM0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmgKQEAgLTM0Niw2ICszNDYsMTAgQEAgcHVibGlj
OgogCiAgICAgV0VCQ09SRV9FWFBPUlQgT3B0aW9uYWw8Q3Vyc29yPiBzZWxlY3RDdXJzb3IoY29u
c3QgSGl0VGVzdFJlc3VsdCYsIGJvb2wgc2hpZnRLZXkpOwogCisjaWYgRU5BQkxFKEtJTkVUSUNf
U0NST0xMSU5HKQorICAgIE9wdGlvbmFsPFdoZWVsU2Nyb2xsR2VzdHVyZVN0YXRlPiB3aGVlbFNj
cm9sbEdlc3R1cmVTdGF0ZSgpIGNvbnN0IHsgcmV0dXJuIG1fd2hlZWxTY3JvbGxHZXN0dXJlU3Rh
dGU7IH0KKyNlbmRpZgorCiAjaWYgRU5BQkxFKERSQUdfU1VQUE9SVCkKICAgICBFbGVtZW50KiBk
cmFnZ2luZ0VsZW1lbnQoKSBjb25zdDsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL0V2ZW50UmVnaW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvRXZl
bnRSZWdpb24uaAppbmRleCA2YzRmYWU2MzM3MjViN2U2ZThiZmQ5ZGVhOTg1OTE1YzgxMGM5NWZi
Li4yZmY1ZTkzNjJmNmY0MjZmNzY5Yjk2YzliOGEyYTMxMzc4YzRmNzE4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvRXZlbnRSZWdpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvRXZlbnRSZWdpb24uaApAQCAtODIsNyArODIsNyBAQCBwdWJsaWM6CiAjZW5k
aWYKIAogI2lmIEVOQUJMRShXSEVFTF9FVkVOVF9SRUdJT05TKQotICAgIE9wdGlvblNldDxFdmVu
dExpc3RlbmVyUmVnaW9uVHlwZT4gZXZlbnRMaXN0ZW5lclJlZ2lvblR5cGVzRm9yUG9pbnQoY29u
c3QgSW50UG9pbnQmKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBPcHRpb25TZXQ8RXZlbnRM
aXN0ZW5lclJlZ2lvblR5cGU+IGV2ZW50TGlzdGVuZXJSZWdpb25UeXBlc0ZvclBvaW50KGNvbnN0
IEludFBvaW50JikgY29uc3Q7CiAgICAgY29uc3QgUmVnaW9uJiBldmVudExpc3RlbmVyUmVnaW9u
Rm9yVHlwZShFdmVudExpc3RlbmVyUmVnaW9uVHlwZSkgY29uc3Q7CiAjZW5kaWYKIApAQCAtMTI1
LDYgKzEyNSwxMCBAQCB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPgogdm9pZCBFdmVudFJlZ2lvbjo6
ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0CiB7CiAgICAgZW5jb2RlciA8PCBtX3JlZ2lv
bjsKKyNpZiBFTkFCTEUoV0hFRUxfRVZFTlRfUkVHSU9OUykKKyAgICBlbmNvZGVyIDw8IG1fd2hl
ZWxFdmVudExpc3RlbmVyUmVnaW9uOworICAgIGVuY29kZXIgPDwgbV9ub25QYXNzaXZlV2hlZWxF
dmVudExpc3RlbmVyUmVnaW9uOworI2VuZGlmCiAjaWYgRU5BQkxFKFRPVUNIX0FDVElPTl9SRUdJ
T05TKQogICAgIGVuY29kZXIgPDwgbV90b3VjaEFjdGlvblJlZ2lvbnM7CiAjZW5kaWYKQEAgLTE0
NCw2ICsxNDgsMjIgQEAgT3B0aW9uYWw8RXZlbnRSZWdpb24+IEV2ZW50UmVnaW9uOjpkZWNvZGUo
RGVjb2RlciYgZGVjb2RlcikKICAgICBFdmVudFJlZ2lvbiBldmVudFJlZ2lvbjsKICAgICBldmVu
dFJlZ2lvbi5tX3JlZ2lvbiA9IFdURk1vdmUoKnJlZ2lvbik7CiAKKyNpZiBFTkFCTEUoV0hFRUxf
RVZFTlRfUkVHSU9OUykKKyAgICBPcHRpb25hbDxSZWdpb24+IHdoZWVsRXZlbnRMaXN0ZW5lclJl
Z2lvbjsKKyAgICBkZWNvZGVyID4+IHdoZWVsRXZlbnRMaXN0ZW5lclJlZ2lvbjsKKyAgICBpZiAo
IXdoZWVsRXZlbnRMaXN0ZW5lclJlZ2lvbikKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsK
KworICAgIGV2ZW50UmVnaW9uLm1fd2hlZWxFdmVudExpc3RlbmVyUmVnaW9uID0gV1RGTW92ZSgq
d2hlZWxFdmVudExpc3RlbmVyUmVnaW9uKTsKKworICAgIE9wdGlvbmFsPFJlZ2lvbj4gbm9uUGFz
c2l2ZVdoZWVsRXZlbnRMaXN0ZW5lclJlZ2lvbjsKKyAgICBkZWNvZGVyID4+IG5vblBhc3NpdmVX
aGVlbEV2ZW50TGlzdGVuZXJSZWdpb247CisgICAgaWYgKCFub25QYXNzaXZlV2hlZWxFdmVudExp
c3RlbmVyUmVnaW9uKQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAgZXZlbnRS
ZWdpb24ubV9ub25QYXNzaXZlV2hlZWxFdmVudExpc3RlbmVyUmVnaW9uID0gV1RGTW92ZSgqbm9u
UGFzc2l2ZVdoZWVsRXZlbnRMaXN0ZW5lclJlZ2lvbik7CisjZW5kaWYKKwogI2lmIEVOQUJMRShU
T1VDSF9BQ1RJT05fUkVHSU9OUykKICAgICBPcHRpb25hbDxWZWN0b3I8UmVnaW9uPj4gdG91Y2hB
Y3Rpb25SZWdpb25zOwogICAgIGRlY29kZXIgPj4gdG91Y2hBY3Rpb25SZWdpb25zOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9zcGkvaW9zL1VJS2l0U1BJLmggYi9Tb3VyY2Uv
V2ViS2l0L1BsYXRmb3JtL3NwaS9pb3MvVUlLaXRTUEkuaAppbmRleCAyNDE3Nzg5ZGJjMmZhOWVm
YzhhNDUyZTU5NDdlNThhMjY0NWYxNjc2Li5lMDhiMDk3YzEwNmFiMjE2MDEwMjljNDk5Nzc1NTE5
OGJjODBmOGViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL3NwaS9pb3MvVUlL
aXRTUEkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL3NwaS9pb3MvVUlLaXRTUEkuaApA
QCAtNjIsNiArNjIsOCBAQAogI2ltcG9ydCA8VUlLaXQvVUlQcmVzZW50YXRpb25Db250cm9sbGVy
X1ByaXZhdGUuaD4KICNpbXBvcnQgPFVJS2l0L1VJUmVzcG9uZGVyX1ByaXZhdGUuaD4KICNpbXBv
cnQgPFVJS2l0L1VJU2NlbmVfUHJpdmF0ZS5oPgorI2ltcG9ydCA8VUlLaXQvVUlTY3JvbGxFdmVu
dF9Qcml2YXRlLmg+CisjaW1wb3J0IDxVSUtpdC9VSVNjcm9sbFZpZXdfRm9yV2ViS2l0T25seS5o
PgogI2ltcG9ydCA8VUlLaXQvVUlTY3JvbGxWaWV3X1ByaXZhdGUuaD4KICNpbXBvcnQgPFVJS2l0
L1VJU3RyaW5nRHJhd2luZ19Qcml2YXRlLmg+CiAjaW1wb3J0IDxVSUtpdC9VSVRhYmxlVmlld0Nl
bGxfUHJpdmF0ZS5oPgpAQCAtNDE2LDggKzQxOCwyNyBAQCB0eXBlZGVmIGVudW0gewogQHByb3Bl
cnR5IChub25hdG9taWMsIGdldHRlcj1faW5kaWNhdG9ySW5zZXRBZGp1c3RtZW50QmVoYXZpb3Is
IHNldHRlcj1fc2V0SW5kaWNhdG9ySW5zZXRBZGp1c3RtZW50QmVoYXZpb3I6KSBVSVNjcm9sbFZp
ZXdJbmRpY2F0b3JJbnNldEFkanVzdG1lbnRCZWhhdmlvciBpbmRpY2F0b3JJbnNldEFkanVzdG1l
bnRCZWhhdmlvcjsKIEBwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSkgVUlFZGdlSW5zZXRz
IF9zeXN0ZW1Db250ZW50SW5zZXQ7CiBAcHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHkpIFVJ
RWRnZUluc2V0cyBfZWZmZWN0aXZlQ29udGVudEluc2V0OworQHByb3BlcnR5IChub25hdG9taWMs
IGdldHRlcj1fYWxsb3dzQXN5bmNTY3JvbGxFdmVudCwgc2V0dGVyPV9zZXRBbGxvd3NBc3luY1Nj
cm9sbEV2ZW50OikgQk9PTCBfYWxsb3dzQXN5bmNTY3JvbGxFdmVudDsKIEBlbmQKIAordHlwZWRl
ZiBOU19FTlVNKE5TVUludGVnZXIsIFVJU2Nyb2xsUGhhc2UpIHsKKyAgICBVSVNjcm9sbFBoYXNl
Tm9uZSwKKyAgICBVSVNjcm9sbFBoYXNlTWF5QmVnaW4sCisgICAgVUlTY3JvbGxQaGFzZUJlZ2Fu
LAorICAgIFVJU2Nyb2xsUGhhc2VDaGFuZ2VkLAorICAgIFVJU2Nyb2xsUGhhc2VFbmRlZCwKKyAg
ICBVSVNjcm9sbFBoYXNlQ2FuY2VsbGVkCit9OworCitAaW50ZXJmYWNlIFVJU2Nyb2xsRXZlbnQg
OiBVSUV2ZW50CisKK0Bwcm9wZXJ0eSAoYXNzaWduLCByZWFkb25seSkgVUlTY3JvbGxQaGFzZSBw
aGFzZTsKKy0gKENHUG9pbnQpbG9jYXRpb25JblZpZXc6KFVJVmlldyAqKXZpZXc7CistIChDR1Zl
Y3RvcilfYWRqdXN0ZWRBY2NlbGVyYXRlZERlbHRhSW5WaWV3OihVSVZpZXcgKil2aWV3OworCitA
ZW5kCisKKwogQGludGVyZmFjZSBOU1N0cmluZyAoVUlLaXREZXRhaWxzKQogLSAoQ0dTaXplKV9s
ZWdhY3lfc2l6ZVdpdGhGb250OihVSUZvbnQgKilmb250IGZvcldpZHRoOihDR0Zsb2F0KXdpZHRo
IGxpbmVCcmVha01vZGU6KE5TTGluZUJyZWFrTW9kZSlsaW5lQnJlYWtNb2RlOwogLSAoQ0dTaXpl
KV9sZWdhY3lfc2l6ZVdpdGhGb250OihVSUZvbnQgKilmb250IG1pbkZvbnRTaXplOihDR0Zsb2F0
KW1pbkZvbnRTaXplIGFjdHVhbEZvbnRTaXplOihDR0Zsb2F0ICopYWN0dWFsRm9udFNpemUgZm9y
V2lkdGg6KENHRmxvYXQpd2lkdGggbGluZUJyZWFrTW9kZTooTlNMaW5lQnJlYWtNb2RlKWxpbmVC
cmVha01vZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9pb3MvV2ViSU9TRXZl
bnRGYWN0b3J5LmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9pb3MvV2ViSU9TRXZlbnRGYWN0b3J5
LmgKaW5kZXggMWU3ODhlNjBhNzZjNTVlZTQ5NTk1MTVlZWQxYWYyYjhhNDFlMjg3Yi4uZGVjNzM4
YzY1OGFlOTQ3MzY1MTg3ODc0MDY3MWFiYTIxNjE5MWRjNiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9TaGFyZWQvaW9zL1dlYklPU0V2ZW50RmFjdG9yeS5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL2lvcy9XZWJJT1NFdmVudEZhY3RvcnkuaApAQCAtMjksMTMgKzI5LDE3IEBACiAKICNp
bXBvcnQgIldlYktleWJvYXJkRXZlbnQuaCIKICNpbXBvcnQgIldlYk1vdXNlRXZlbnQuaCIKKyNp
bXBvcnQgIldlYldoZWVsRXZlbnQuaCIKICNpbXBvcnQgPFVJS2l0L1VJS2l0Lmg+CiAjaW1wb3J0
IDxXZWJDb3JlL1dlYkV2ZW50Lmg+CiAKK09CSkNfQ0xBU1MgVUlTY3JvbGxFdmVudDsKKwogY2xh
c3MgV2ViSU9TRXZlbnRGYWN0b3J5IHsKIHB1YmxpYzoKICAgICBzdGF0aWMgV2ViS2l0OjpXZWJL
ZXlib2FyZEV2ZW50IGNyZWF0ZVdlYktleWJvYXJkRXZlbnQoOjpXZWJFdmVudCAqLCBib29sIGhh
bmRsZWRCeUlucHV0TWV0aG9kKTsKICAgICBzdGF0aWMgV2ViS2l0OjpXZWJNb3VzZUV2ZW50IGNy
ZWF0ZVdlYk1vdXNlRXZlbnQoOjpXZWJFdmVudCAqKTsKKyAgICBzdGF0aWMgV2ViS2l0OjpXZWJX
aGVlbEV2ZW50IGNyZWF0ZVdlYldoZWVsRXZlbnQoVUlTY3JvbGxFdmVudCAqLCBVSVZpZXcgKmNv
bnRlbnRWaWV3KTsKIAogICAgIHN0YXRpYyBVSUtleU1vZGlmaWVyRmxhZ3MgdG9VSUtleU1vZGlm
aWVyRmxhZ3MoT3B0aW9uU2V0PFdlYktpdDo6V2ViRXZlbnQ6Ok1vZGlmaWVyPik7CiB9OwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvaW9zL1dlYklPU0V2ZW50RmFjdG9yeS5tbSBi
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL2lvcy9XZWJJT1NFdmVudEZhY3RvcnkubW0KaW5kZXggOWQw
YTA5NzY3YzM3YzhjZTg0NzkyZjU3ZDY2ODkzZmU1YTkyMmFkZS4uMjljODE4ZDIxMmU4NjExNGY2
NzJiOTcxZTI5ZmVlMWJkMzYwYzk1OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQv
aW9zL1dlYklPU0V2ZW50RmFjdG9yeS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9pb3Mv
V2ViSU9TRXZlbnRGYWN0b3J5Lm1tCkBAIC0yOCw2ICsyOCw3IEBACiAKICNpZiBQTEFURk9STShJ
T1NfRkFNSUxZKQogCisjaW1wb3J0ICJVSUtpdFNQSS5oIgogI2ltcG9ydCA8V2ViQ29yZS9LZXlF
dmVudENvZGVzSU9TLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1BsYXRmb3JtRXZlbnRGYWN0b3J5SU9T
Lmg+CiAKQEAgLTEzMCw0ICsxMzEsMzYgQEAgV2ViS2l0OjpXZWJNb3VzZUV2ZW50IFdlYklPU0V2
ZW50RmFjdG9yeTo6Y3JlYXRlV2ViTW91c2VFdmVudCg6OldlYkV2ZW50ICpldmVudCkKICAgICBy
ZXR1cm4gV2ViS2l0OjpXZWJNb3VzZUV2ZW50KHR5cGUsIGJ1dHRvbiwgYnV0dG9ucywgcG9zaXRp
b24sIHBvc2l0aW9uLCBkZWx0YVgsIGRlbHRhWSwgZGVsdGFaLCBjbGlja0NvdW50LCBPcHRpb25T
ZXQ8V2ViS2l0OjpXZWJFdmVudDo6TW9kaWZpZXI+IHsgfSwgV2FsbFRpbWU6OmZyb21SYXdTZWNv
bmRzKHRpbWVzdGFtcCkpOwogfQogCitzdGF0aWMgV2ViS2l0OjpXZWJXaGVlbEV2ZW50OjpQaGFz
ZSB0b1dlYlBoYXNlKFVJU2Nyb2xsUGhhc2UgcGhhc2UpCit7CisgICAgc3dpdGNoIChwaGFzZSkg
eworICAgIGNhc2UgVUlTY3JvbGxQaGFzZU5vbmU6CisgICAgICAgIHJldHVybiBXZWJLaXQ6Oldl
YldoZWVsRXZlbnQ6OlBoYXNlTm9uZTsKKyAgICBjYXNlIFVJU2Nyb2xsUGhhc2VNYXlCZWdpbjoK
KyAgICAgICAgcmV0dXJuIFdlYktpdDo6V2ViV2hlZWxFdmVudDo6UGhhc2VNYXlCZWdpbjsKKyAg
ICBjYXNlIFVJU2Nyb2xsUGhhc2VCZWdhbjoKKyAgICAgICAgcmV0dXJuIFdlYktpdDo6V2ViV2hl
ZWxFdmVudDo6UGhhc2VCZWdhbjsKKyAgICBjYXNlIFVJU2Nyb2xsUGhhc2VDaGFuZ2VkOgorICAg
ICAgICByZXR1cm4gV2ViS2l0OjpXZWJXaGVlbEV2ZW50OjpQaGFzZUNoYW5nZWQ7CisgICAgY2Fz
ZSBVSVNjcm9sbFBoYXNlRW5kZWQ6CisgICAgICAgIHJldHVybiBXZWJLaXQ6OldlYldoZWVsRXZl
bnQ6OlBoYXNlRW5kZWQ7CisgICAgY2FzZSBVSVNjcm9sbFBoYXNlQ2FuY2VsbGVkOgorICAgICAg
ICByZXR1cm4gV2ViS2l0OjpXZWJXaGVlbEV2ZW50OjpQaGFzZUNhbmNlbGxlZDsKKyAgICBkZWZh
dWx0OgorICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgcmV0dXJuIFdlYktp
dDo6V2ViV2hlZWxFdmVudDo6UGhhc2VOb25lOworICAgIH0KK30KKworV2ViS2l0OjpXZWJXaGVl
bEV2ZW50IFdlYklPU0V2ZW50RmFjdG9yeTo6Y3JlYXRlV2ViV2hlZWxFdmVudChVSVNjcm9sbEV2
ZW50ICpldmVudCwgVUlWaWV3ICpjb250ZW50VmlldykKK3sKKyAgICBXZWJDb3JlOjpJbnRQb2lu
dCBzY3JvbGxMb2NhdGlvbiA9IFdlYkNvcmU6OnJvdW5kZWRJbnRQb2ludChbZXZlbnQgbG9jYXRp
b25JblZpZXc6Y29udGVudFZpZXddKTsKKyAgICBDR1ZlY3RvciBkZWx0YVZlY3RvciA9IFtldmVu
dCBfYWRqdXN0ZWRBY2NlbGVyYXRlZERlbHRhSW5WaWV3OmNvbnRlbnRWaWV3XTsKKyAgICBXZWJD
b3JlOjpGbG9hdFNpemUgZGVsdGEoZGVsdGFWZWN0b3IuZHgsIGRlbHRhVmVjdG9yLmR5KTsKKwor
ICAgIHJldHVybiB7CisgICAgICAgIFdlYktpdDo6V2ViRXZlbnQ6OldoZWVsLCBzY3JvbGxMb2Nh
dGlvbiwgc2Nyb2xsTG9jYXRpb24sIGRlbHRhLCB7IH0gLyogd2hlZWxUaWNrcyAqLywgV2ViS2l0
OjpXZWJXaGVlbEV2ZW50OjpHcmFudWxhcml0eTo6U2Nyb2xsQnlQaXhlbFdoZWVsRXZlbnQsIGZh
bHNlLCB0b1dlYlBoYXNlKGV2ZW50LnBoYXNlKSwgV2ViS2l0OjpXZWJXaGVlbEV2ZW50OjpQaGFz
ZU5vbmUsIHRydWUsIDEsIGRlbHRhLCB7IH0sIE1vbm90b25pY1RpbWU6OmZyb21SYXdTZWNvbmRz
KGV2ZW50LnRpbWVzdGFtcCkuYXBwcm94aW1hdGVXYWxsVGltZSgpCisgICAgfTsKK30KKwogI2Vu
ZGlmIC8vIFBMQVRGT1JNKElPU19GQU1JTFkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3SW50ZXJuYWwuaCBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdJbnRlcm5hbC5oCmluZGV4IGMwNWFkNzI0ZWQyMDM5
MjFmNWViZWU0NzE3NTE1Nzk4MzM5ZDYyZGIuLjMxZjgxY2UwZTllNGZlMjdlMmNlMTU5ZjlmMGQ0
N2Q4OTlkNGZjOWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2Nv
YS9XS1dlYlZpZXdJbnRlcm5hbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9D
b2NvYS9XS1dlYlZpZXdJbnRlcm5hbC5oCkBAIC0yMjksNiArMjI5LDggQEAgY2xhc3MgVmlld0dl
c3R1cmVDb250cm9sbGVyOwogICAgIEJPT0wgX2hhc1NjaGVkdWxlZFZpc2libGVSZWN0VXBkYXRl
OwogICAgIEJPT0wgX3Zpc2libGVDb250ZW50UmVjdFVwZGF0ZVNjaGVkdWxlZEZyb21TY3JvbGxW
aWV3SW5TdGFibGVTdGF0ZTsKIAorICAgIE9wdGlvbmFsPGJvb2w+IF9jdXJyZW50U2Nyb2xsR2Vz
dHVyZVdhc0luaXRpYWxseVByZXZlbnRlZDsKKwogICAgIF9XS0RyYWdJbnRlcmFjdGlvblBvbGlj
eSBfZHJhZ0ludGVyYWN0aW9uUG9saWN5OwogCiAgICAgLy8gRm9yIHJlbGVhc2UtbG9nZ2luZyBm
b3IgPHJkYXI6Ly9wcm9ibGVtLzM5MjgxMjY5Pi4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9pb3MvV0tXZWJWaWV3SU9TLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvaW9zL1dLV2ViVmlld0lPUy5oCmluZGV4IGY3ZTJlMzMxZDFhMjRhZDE2ZmFiYTgyYzc3
ODJiMzhiMWVmNDk5NWEuLjZmYTljYmYwMjFhOWRjYzQzNDQ5NjljZWVjNDc3MDUxOGEzYzhjODEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9pb3MvV0tXZWJWaWV3SU9T
LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2lvcy9XS1dlYlZpZXdJT1MuaApA
QCAtMjUsNiArMjUsOCBAQAogCiAjaW1wb3J0ICJXS1dlYlZpZXdJbnRlcm5hbC5oIgogCitAY2xh
c3MgVUlTY3JvbGxFdmVudDsKKwogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAKIEBpbnRlcmZh
Y2UgV0tXZWJWaWV3IChXS1ZpZXdJbnRlcm5hbElPUykKQEAgLTEyNSw2ICsxMjcsMTMgQEAKIC0g
KFdlYkNvcmU6OkZsb2F0U2l6ZSlhY3RpdmVWaWV3TGF5b3V0U2l6ZTooY29uc3QgQ0dSZWN0Jili
b3VuZHM7CiAtICh2b2lkKV91cGRhdGVTY3JvbGxWaWV3SW5zZXRBZGp1c3RtZW50QmVoYXZpb3I7
CiAKKy0gKEJPT0wpX2VmZmVjdGl2ZUFwcGVhcmFuY2VJc0Rhcms7CistIChCT09MKV9lZmZlY3Rp
dmVVc2VySW50ZXJmYWNlTGV2ZWxJc0VsZXZhdGVkOworCisjaWYgSEFWRShVSVNDUk9MTFZJRVdf
QVNZTkNIUk9OT1VTX1NDUk9MTF9FVkVOVF9IQU5ETElORykKKy0gKHZvaWQpX3Njcm9sbFZpZXc6
KFVJU2Nyb2xsVmlldyAqKXNjcm9sbFZpZXcgYXN5bmNocm9ub3VzbHlIYW5kbGVTY3JvbGxFdmVu
dDooVUlTY3JvbGxFdmVudCAqKXNjcm9sbEV2ZW50IGNvbXBsZXRpb246KHZvaWQgKF4pKEJPT0wg
aGFuZGxlZCkpY29tcGxldGlvbjsKKyNlbmRpZgorCiBAcHJvcGVydHkgKG5vbmF0b21pYywgcmVh
ZG9ubHkpIFdLUGFzc3dvcmRWaWV3ICpfcGFzc3dvcmRWaWV3OwogQHByb3BlcnR5IChub25hdG9t
aWMsIHJlYWRvbmx5KSBXS1dlYlZpZXdDb250ZW50UHJvdmlkZXJSZWdpc3RyeSAqX2NvbnRlbnRQ
cm92aWRlclJlZ2lzdHJ5OwogQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5KSBXS1NlbGVj
dGlvbkdyYW51bGFyaXR5IF9zZWxlY3Rpb25HcmFudWxhcml0eTsKQEAgLTEzNyw5ICsxNDYsNiBA
QAogQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5LCBnZXR0ZXI9X2lzUmV0YWluaW5nQWN0
aXZlRm9jdXNlZFN0YXRlKSBCT09MIF9yZXRhaW5pbmdBY3RpdmVGb2N1c2VkU3RhdGU7CiBAcHJv
cGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHkpIGludDMyX3QgX2RldmljZU9yaWVudGF0aW9uOwog
Ci0tIChCT09MKV9lZmZlY3RpdmVBcHBlYXJhbmNlSXNEYXJrOwotLSAoQk9PTClfZWZmZWN0aXZl
VXNlckludGVyZmFjZUxldmVsSXNFbGV2YXRlZDsKLQogQGVuZAogCiAjZW5kaWYgLy8gUExBVEZP
Uk0oSU9TX0ZBTUlMWSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9p
b3MvV0tXZWJWaWV3SU9TLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2lvcy9XS1dl
YlZpZXdJT1MubW0KaW5kZXggNGI3NjYyYTE2NDU5NGRlNmU0M2ZlNDQ0NDhlMDkyMzdkNzJiZWYz
Mi4uZTljNWQyMjllNGUxZjNmYjM0OGMyYmI2ZmJkOThjNTk1ODU0OGIyNiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2lvcy9XS1dlYlZpZXdJT1MubW0KKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2lvcy9XS1dlYlZpZXdJT1MubW0KQEAgLTI5LDkgKzI5
LDExIEBACiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKIAogI2ltcG9ydCAiRnJvbnRCb2FyZFNl
cnZpY2VzU1BJLmgiCisjaW1wb3J0ICJOYXRpdmVXZWJXaGVlbEV2ZW50LmgiCiAjaW1wb3J0ICJO
YXZpZ2F0aW9uU3RhdGUuaCIKICNpbXBvcnQgIlJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJv
eHkuaCIKICNpbXBvcnQgIlJlbW90ZUxheWVyVHJlZVNjcm9sbGluZ1BlcmZvcm1hbmNlRGF0YS5o
IgorI2ltcG9ydCAiUmVtb3RlTGF5ZXJUcmVlVmlld3MuaCIKICNpbXBvcnQgIlJlbW90ZVNjcm9s
bGluZ0Nvb3JkaW5hdG9yUHJveHkuaCIKICNpbXBvcnQgIlZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQ
cm94eS5oIgogI2ltcG9ydCAiVmlld0dlc3R1cmVDb250cm9sbGVyLmgiCkBAIC00Nyw2ICs0OSw3
IEBACiAjaW1wb3J0ICJXS1dlYlZpZXdQcml2YXRlLmgiCiAjaW1wb3J0ICJXS1dlYlZpZXdQcml2
YXRlRm9yVGVzdGluZ0lPUy5oIgogI2ltcG9ydCAiV2ViQmFja0ZvcndhcmRMaXN0LmgiCisjaW1w
b3J0ICJXZWJJT1NFdmVudEZhY3RvcnkuaCIKICNpbXBvcnQgIldlYlBhZ2VQcm94eS5oIgogI2lt
cG9ydCAiX1dLQWN0aXZhdGVkRWxlbWVudEluZm9JbnRlcm5hbC5oIgogI2ltcG9ydCA8V2ViQ29y
ZS9HcmFwaGljc0NvbnRleHRDRy5oPgpAQCAtMTM5LDYgKzE0MiwxMCBAQCAtICh2b2lkKV9zZXR1
cFNjcm9sbEFuZENvbnRlbnRWaWV3cwogICAgIFtfc2Nyb2xsVmlldyBzZXRJbnRlcm5hbERlbGVn
YXRlOnNlbGZdOwogICAgIFtfc2Nyb2xsVmlldyBzZXRCb3VuY2VzWm9vbTpZRVNdOwogCisjaWYg
SEFWRShVSVNDUk9MTFZJRVdfQVNZTkNIUk9OT1VTX1NDUk9MTF9FVkVOVF9IQU5ETElORykKKyAg
ICBbX3Njcm9sbFZpZXcgX3NldEFsbG93c0FzeW5jU2Nyb2xsRXZlbnQ6WUVTXTsKKyNlbmRpZgor
CiAgICAgaWYgKFtfc2Nyb2xsVmlldyByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKF9zZXRB
dm9pZHNKdW1wT25JbnRlcnJ1cHRlZEJvdW5jZTopXSkgewogICAgICAgICBbX3Njcm9sbFZpZXcg
c2V0VHJhY2tzSW1tZWRpYXRlbHlXaGlsZURlY2VsZXJhdGluZzpOT107CiAgICAgICAgIFtfc2Ny
b2xsVmlldyBfc2V0QXZvaWRzSnVtcE9uSW50ZXJydXB0ZWRCb3VuY2U6WUVTXTsKQEAgLTE1OTAs
NiArMTU5Nyw0NyBAQCAtIChDR1BvaW50KV9zY3JvbGxWaWV3OihVSVNjcm9sbFZpZXcgKilzY3Jv
bGxWaWV3IGFkanVzdGVkT2Zmc2V0Rm9yT2Zmc2V0OihDR1BvaQogICAgIHJldHVybiBhZGp1c3Rl
ZENvbnRlbnRPZmZzZXQ7CiB9CiAKKyNpZiBIQVZFKFVJU0NST0xMVklFV19BU1lOQ0hST05PVVNf
U0NST0xMX0VWRU5UX0hBTkRMSU5HKQorLSAodm9pZClfc2Nyb2xsVmlldzooVUlTY3JvbGxWaWV3
ICopc2Nyb2xsVmlldyBhc3luY2hyb25vdXNseUhhbmRsZVNjcm9sbEV2ZW50OihVSVNjcm9sbEV2
ZW50ICopc2Nyb2xsRXZlbnQgY29tcGxldGlvbjoodm9pZCAoXikoQk9PTCBoYW5kbGVkKSljb21w
bGV0aW9uCit7CisgICAgaWYgKHNjcm9sbEV2ZW50LnBoYXNlID09IFVJU2Nyb2xsUGhhc2VNYXlC
ZWdpbikgeworICAgICAgICBjb21wbGV0aW9uKE5PKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0K
KworICAgIFdlYkNvcmU6OkludFBvaW50IHNjcm9sbExvY2F0aW9uID0gV2ViQ29yZTo6cm91bmRl
ZEludFBvaW50KFtzY3JvbGxFdmVudCBsb2NhdGlvbkluVmlldzpfY29udGVudFZpZXcuZ2V0KCld
KTsKKyAgICBhdXRvIGV2ZW50TGlzdGVuZXJzID0gV2ViS2l0OjpldmVudExpc3RlbmVyVHlwZXNB
dFBvaW50KF9jb250ZW50Vmlldy5nZXQoKSwgc2Nyb2xsTG9jYXRpb24pOworICAgIGJvb2wgaGFz
V2hlZWxIYW5kbGVycyA9IGV2ZW50TGlzdGVuZXJzLmNvbnRhaW5zKFdlYkNvcmU6OkV2ZW50TGlz
dGVuZXJSZWdpb25UeXBlOjpXaGVlbCk7CisgICAgaWYgKCFoYXNXaGVlbEhhbmRsZXJzKSB7Cisg
ICAgICAgIGNvbXBsZXRpb24oTk8pOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgYm9v
bCBpc0ZpcnN0RXZlbnRJbkdlc3R1cmUgPSBzY3JvbGxFdmVudC5waGFzZSA9PSBVSVNjcm9sbFBo
YXNlQmVnYW47CisgICAgaWYgKGlzRmlyc3RFdmVudEluR2VzdHVyZSkKKyAgICAgICAgX2N1cnJl
bnRTY3JvbGxHZXN0dXJlV2FzSW5pdGlhbGx5UHJldmVudGVkID0gV1RGOjpudWxsb3B0OworCisg
ICAgYm9vbCBoYXNBY3RpdmVXaGVlbEhhbmRsZXJzID0gZXZlbnRMaXN0ZW5lcnMuY29udGFpbnMo
V2ViQ29yZTo6RXZlbnRMaXN0ZW5lclJlZ2lvblR5cGU6Ok5vblBhc3NpdmVXaGVlbCk7CisgICAg
Ym9vbCBpc0NhbmNlbGFibGUgPSBoYXNBY3RpdmVXaGVlbEhhbmRsZXJzICYmIF9jdXJyZW50U2Ny
b2xsR2VzdHVyZVdhc0luaXRpYWxseVByZXZlbnRlZC52YWx1ZU9yKGlzRmlyc3RFdmVudEluR2Vz
dHVyZSk7CisgICAgYXV0byBldmVudCA9IFdlYklPU0V2ZW50RmFjdG9yeTo6Y3JlYXRlV2ViV2hl
ZWxFdmVudChzY3JvbGxFdmVudCwgX2NvbnRlbnRWaWV3LmdldCgpKTsKKworICAgIF9wYWdlLT5k
aXNwYXRjaFdoZWVsRXZlbnRXaXRob3V0U2Nyb2xsaW5nKGV2ZW50LCBbd2Vha1NlbGYgPSBXZWFr
T2JqQ1B0cjxXS1dlYlZpZXc+KHNlbGYpLCBzdHJvbmdDb21wbGV0aW9uID0gbWFrZUJsb2NrUHRy
KGNvbXBsZXRpb24pLCBpc0NhbmNlbGFibGUsIGlzRmlyc3RFdmVudEluR2VzdHVyZV0oYm9vbCBo
YW5kbGVkKSB7CisgICAgICAgIGF1dG8gc3Ryb25nU2VsZiA9IHdlYWtTZWxmLmdldCgpOworICAg
ICAgICBpZiAoIXN0cm9uZ1NlbGYpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgaWYg
KGlzQ2FuY2VsYWJsZSkgeworICAgICAgICAgICAgaWYgKGlzRmlyc3RFdmVudEluR2VzdHVyZSkK
KyAgICAgICAgICAgICAgICBzdHJvbmdTZWxmLT5fY3VycmVudFNjcm9sbEdlc3R1cmVXYXNJbml0
aWFsbHlQcmV2ZW50ZWQgPSBoYW5kbGVkOworICAgICAgICAgICAgc3Ryb25nQ29tcGxldGlvbiho
YW5kbGVkKTsKKyAgICAgICAgfQorICAgIH0pOworCisgICAgaWYgKCFpc0NhbmNlbGFibGUpCisg
ICAgICAgIGNvbXBsZXRpb24oTk8pOworfQorI2VuZGlmIC8vIEhBVkUoVUlTQ1JPTExWSUVXX0FT
WU5DSFJPTk9VU19TQ1JPTExfRVZFTlRfSEFORExJTkcpCisKIC0gKHZvaWQpc2Nyb2xsVmlld0Rp
ZFNjcm9sbDooVUlTY3JvbGxWaWV3ICopc2Nyb2xsVmlldwogewogICAgIGlmICghW3NlbGYgdXNl
c1N0YW5kYXJkQ29udGVudFZpZXddICYmIFtfY3VzdG9tQ29udGVudFZpZXcgcmVzcG9uZHNUb1Nl
bGVjdG9yOkBzZWxlY3Rvcih3ZWJfc2Nyb2xsVmlld0RpZFNjcm9sbDopXSkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BhZ2VDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1BhZ2VDbGllbnQuaAppbmRleCBjNGM3MTg3NGExMGRhOWI1NDFmZWUyODIwODA4YzFl
NTBkM2ZhOTJiLi5jNzdkMGExMGE5NmM5NzJmMTFjY2M0MTQ2NmYyZmMyNjczNjM4MzVmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QYWdlQ2xpZW50LmgKKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvUGFnZUNsaWVudC5oCkBAIC02NCw2ICs2NCw4IEBAIE9CSkNfQ0xB
U1MgTlNNZW51OwogT0JKQ19DTEFTUyBOU1NldDsKIE9CSkNfQ0xBU1MgTlNUZXh0QWx0ZXJuYXRp
dmVzOwogT0JKQ19DTEFTUyBVSUdlc3R1cmVSZWNvZ25pemVyOworT0JKQ19DTEFTUyBVSVNjcm9s
bEV2ZW50OworT0JKQ19DTEFTUyBVSVNjcm9sbFZpZXc7CiBPQkpDX0NMQVNTIF9XS1JlbW90ZU9i
amVjdFJlZ2lzdHJ5OwogCiAjaWYgVVNFKEFQUEtJVCkKQEAgLTQ2Niw2ICs0NjgsMTAgQEAgcHVi
bGljOgogICAgIHZpcnR1YWwgdm9pZCBkaXNhYmxlSW5zcGVjdG9yTm9kZVNlYXJjaCgpID0gMDsK
IAogICAgIHZpcnR1YWwgdm9pZCBoYW5kbGVBdXRvY29ycmVjdGlvbkNvbnRleHQoY29uc3QgV2Vi
QXV0b2NvcnJlY3Rpb25Db250ZXh0JikgPSAwOworCisjaWYgSEFWRShVSVNDUk9MTFZJRVdfQVNZ
TkNIUk9OT1VTX1NDUk9MTF9FVkVOVF9IQU5ETElORykKKyAgICB2aXJ0dWFsIHZvaWQgaGFuZGxl
QXN5bmNocm9ub3VzQ2FuY2VsYWJsZVNjcm9sbEV2ZW50KFVJU2Nyb2xsVmlldyAqLCBVSVNjcm9s
bEV2ZW50ICosIHZvaWQgKF5jb21wbGV0aW9uKShCT09MIGhhbmRsZWQpKSA9IDA7CisjZW5kaWYK
ICNlbmRpZgogCiAgICAgLy8gQXV4aWxpYXJ5IENsaWVudCBDcmVhdGlvbgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL2lvcy9SZW1vdGVMYXllclRy
ZWVWaWV3cy5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL2lvcy9S
ZW1vdGVMYXllclRyZWVWaWV3cy5oCmluZGV4IDMzYTE0NjEwYjhhZmJjYzk2NmY5ODI2ZTdiNDUz
NjM3YTZiOWQ1NmUuLjJiOGQwYWIwZWViOTFkNGYxZjExODY2Yjk0MTk2ZGExZjNjYmFkMWMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9pb3MvUmVt
b3RlTGF5ZXJUcmVlVmlld3MuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVM
YXllclRyZWUvaW9zL1JlbW90ZUxheWVyVHJlZVZpZXdzLmgKQEAgLTcxLDYgKzcxLDggQEAgbmFt
ZXNwYWNlIFdlYktpdCB7CiBPcHRpb25TZXQ8V2ViQ29yZTo6VG91Y2hBY3Rpb24+IHRvdWNoQWN0
aW9uc0ZvclBvaW50KFVJVmlldyAqcm9vdFZpZXcsIGNvbnN0IFdlYkNvcmU6OkludFBvaW50Jik7
CiBVSVNjcm9sbFZpZXcgKmZpbmRBY3RpbmdTY3JvbGxQYXJlbnQoVUlTY3JvbGxWaWV3ICosIGNv
bnN0IFJlbW90ZUxheWVyVHJlZUhvc3QmKTsKIAorT3B0aW9uU2V0PFdlYkNvcmU6OkV2ZW50TGlz
dGVuZXJSZWdpb25UeXBlPiBldmVudExpc3RlbmVyVHlwZXNBdFBvaW50KFVJVmlldyAqcm9vdFZp
ZXcsIGNvbnN0IFdlYkNvcmU6OkludFBvaW50Jik7CisKICNpZiBFTkFCTEUoRURJVEFCTEVfUkVH
SU9OKQogYm9vbCBtYXlDb250YWluRWRpdGFibGVFbGVtZW50c0luUmVjdChVSVZpZXcgKnJvb3RW
aWV3LCBjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmKTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL2lvcy9SZW1vdGVMYXllclRyZWVW
aWV3cy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9pb3MvUmVt
b3RlTGF5ZXJUcmVlVmlld3MubW0KaW5kZXggMTFiYjAxYjM3MmNlNjk3YjZlNjNhNDNlNmE0NmRm
ODI0M2NhZGMzOC4uYThmYTZmZjZmYTJhZDBlN2M0YTRjMzUzZmFhN2VhNmE4YTJkNTIzNyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL2lvcy9SZW1v
dGVMYXllclRyZWVWaWV3cy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVM
YXllclRyZWUvaW9zL1JlbW90ZUxheWVyVHJlZVZpZXdzLm1tCkBAIC0yMDUsNiArMjA1LDM2IEBA
IE9wdGlvblNldDxXZWJDb3JlOjpUb3VjaEFjdGlvbj4gdG91Y2hBY3Rpb25zRm9yUG9pbnQoVUlW
aWV3ICpyb290VmlldywgY29uc3QgV2ViCiAgICAgcmV0dXJuIG5vZGUtPmV2ZW50UmVnaW9uKCku
dG91Y2hBY3Rpb25zRm9yUG9pbnQoV2ViQ29yZTo6SW50UG9pbnQoaGl0Vmlld1BvaW50KSk7CiB9
CiAKKyNpZiBFTkFCTEUoV0hFRUxfRVZFTlRfUkVHSU9OUykKK09wdGlvblNldDxXZWJDb3JlOjpF
dmVudExpc3RlbmVyUmVnaW9uVHlwZT4gZXZlbnRMaXN0ZW5lclR5cGVzQXRQb2ludChVSVZpZXcg
KnJvb3RWaWV3LCBjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgcG9pbnQpCit7CisgICAgVmVjdG9y
PFVJVmlldyAqLCAxNj4gdmlld3NBdFBvaW50OworICAgIGNvbGxlY3REZXNjZW5kYW50Vmlld3NB
dFBvaW50KHZpZXdzQXRQb2ludCwgcm9vdFZpZXcsIHBvaW50LCBuaWwpOworCisgICAgaWYgKHZp
ZXdzQXRQb2ludC5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybiB7IH07CisKKyAgICBVSVZpZXcg
KmhpdFZpZXcgPSBuaWw7CisgICAgZm9yIChhdXRvICp2aWV3IDogV1RGOjptYWtlUmV2ZXJzZWRS
YW5nZSh2aWV3c0F0UG9pbnQpKSB7CisgICAgICAgIGlmIChbdmlldyBpc0tpbmRPZkNsYXNzOltX
S0NvbXBvc2l0aW5nVmlldyBjbGFzc11dKSB7CisgICAgICAgICAgICBoaXRWaWV3ID0gdmlldzsK
KyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgfQorCisgICAgaWYgKCFoaXRWaWV3
KQorICAgICAgICByZXR1cm4geyB9OworCisgICAgQ0dQb2ludCBoaXRWaWV3UG9pbnQgPSBbaGl0
VmlldyBjb252ZXJ0UG9pbnQ6cG9pbnQgZnJvbVZpZXc6cm9vdFZpZXddOworCisgICAgYXV0byog
bm9kZSA9IFJlbW90ZUxheWVyVHJlZU5vZGU6OmZvckNBTGF5ZXIoaGl0Vmlldy5sYXllcik7Cisg
ICAgaWYgKCFub2RlKQorICAgICAgICByZXR1cm4geyB9OworCisgICAgcmV0dXJuIG5vZGUtPmV2
ZW50UmVnaW9uKCkuZXZlbnRMaXN0ZW5lclJlZ2lvblR5cGVzRm9yUG9pbnQoV2ViQ29yZTo6SW50
UG9pbnQoaGl0Vmlld1BvaW50KSk7Cit9CisjZW5kaWYKKwogVUlTY3JvbGxWaWV3ICpmaW5kQWN0
aW5nU2Nyb2xsUGFyZW50KFVJU2Nyb2xsVmlldyAqc2Nyb2xsVmlldywgY29uc3QgUmVtb3RlTGF5
ZXJUcmVlSG9zdCYgaG9zdCkKIHsKICAgICBIYXNoU2V0PFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXI6
OlBsYXRmb3JtTGF5ZXJJRD4gc2Nyb2xsZXJzVG9Ta2lwOwpAQCAtNDA0LDYgKzQzNCwxMCBAQCAt
IChpbnN0YW5jZXR5cGUpaW5pdFdpdGhGcmFtZTooQ0dSZWN0KWZyYW1lCiAgICAgc2VsZi5jb250
ZW50SW5zZXRBZGp1c3RtZW50QmVoYXZpb3IgPSBVSVNjcm9sbFZpZXdDb250ZW50SW5zZXRBZGp1
c3RtZW50TmV2ZXI7CiAjZW5kaWYKIAorI2lmIEhBVkUoVUlTQ1JPTExWSUVXX0FTWU5DSFJPTk9V
U19TQ1JPTExfRVZFTlRfSEFORExJTkcpCisgICAgW3NlbGYgX3NldEFsbG93c0FzeW5jU2Nyb2xs
RXZlbnQ6WUVTXTsKKyNlbmRpZgorCiAgICAgcmV0dXJuIHNlbGY7CiB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9pb3MvU2Nyb2xsaW5nVHJl
ZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZUlPUy5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVt
b3RlTGF5ZXJUcmVlL2lvcy9TY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlSU9TLmgK
aW5kZXggMzEwNTAyYzhhNjQ0Y2RmZjhjNWYzMjY4MmQ3MDM0ZWVhZTIxMTVhZC4uZmIyNzBhOWEz
MmM0ZGMyM2IxNjMxMzVjNTRlNjQ0MzFlNmMxMzMwMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL2lvcy9TY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9k
ZURlbGVnYXRlSU9TLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJU
cmVlL2lvcy9TY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlSU9TLmgKQEAgLTY1LDYg
KzY1LDEwIEBAIHB1YmxpYzoKIAogICAgIHZvaWQgcmVwb3NpdGlvblNjcm9sbGluZ0xheWVycygp
OwogCisjaWYgSEFWRShVSVNDUk9MTFZJRVdfQVNZTkNIUk9OT1VTX1NDUk9MTF9FVkVOVF9IQU5E
TElORykKKyAgICB2b2lkIGhhbmRsZUFzeW5jaHJvbm91c0NhbmNlbGFibGVTY3JvbGxFdmVudChV
SVNjcm9sbFZpZXcgKiwgVUlTY3JvbGxFdmVudCAqLCB2b2lkICheY29tcGxldGlvbikoQk9PTCBo
YW5kbGVkKSk7CisjZW5kaWYKKwogICAgIE9wdGlvblNldDxXZWJDb3JlOjpUb3VjaEFjdGlvbj4g
YWN0aXZlVG91Y2hBY3Rpb25zKCkgY29uc3QgeyByZXR1cm4gbV9hY3RpdmVUb3VjaEFjdGlvbnM7
IH0KICAgICB2b2lkIGNvbXB1dGVBY3RpdmVUb3VjaEFjdGlvbnNGb3JHZXN0dXJlUmVjb2duaXpl
cihVSUdlc3R1cmVSZWNvZ25pemVyKik7CiAgICAgdm9pZCBjbGVhckFjdGl2ZVRvdWNoQWN0aW9u
cygpIHsgbV9hY3RpdmVUb3VjaEFjdGlvbnMgPSB7IH07IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9pb3MvU2Nyb2xsaW5nVHJlZVNjcm9sbGlu
Z05vZGVEZWxlZ2F0ZUlPUy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxheWVy
VHJlZS9pb3MvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZUlPUy5tbQppbmRleCBh
YjM3NDcyMGEzMjg0N2Y3ZTVjYzU3YmJjNTc5NzRkMWUzMDQ2NTBmLi5kZmJmN2E0ZGJjZDNlMDVh
NzdmZDUxZDIyMzAwZTY2MjAzOGVmYjg3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9SZW1vdGVMYXllclRyZWUvaW9zL1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdh
dGVJT1MubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL2lv
cy9TY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlSU9TLm1tCkBAIC0xNzYsNiArMTc2
LDEzIEBAIC0gKENHUG9pbnQpX3Njcm9sbFZpZXc6KFVJU2Nyb2xsVmlldyAqKXNjcm9sbFZpZXcg
YWRqdXN0ZWRPZmZzZXRGb3JPZmZzZXQ6KENHUG9pCiAgICAgcmV0dXJuIGFkanVzdGVkQ29udGVu
dE9mZnNldDsKIH0KIAorI2lmIEhBVkUoVUlTQ1JPTExWSUVXX0FTWU5DSFJPTk9VU19TQ1JPTExf
RVZFTlRfSEFORExJTkcpCistICh2b2lkKV9zY3JvbGxWaWV3OihVSVNjcm9sbFZpZXcgKilzY3Jv
bGxWaWV3IGFzeW5jaHJvbm91c2x5SGFuZGxlU2Nyb2xsRXZlbnQ6KFVJU2Nyb2xsRXZlbnQgKilz
Y3JvbGxFdmVudCBjb21wbGV0aW9uOih2b2lkICheKShCT09MIGhhbmRsZWQpKWNvbXBsZXRpb24K
K3sKKyAgICBfc2Nyb2xsaW5nVHJlZU5vZGVEZWxlZ2F0ZS0+aGFuZGxlQXN5bmNocm9ub3VzQ2Fu
Y2VsYWJsZVNjcm9sbEV2ZW50KHNjcm9sbFZpZXcsIHNjcm9sbEV2ZW50LCBjb21wbGV0aW9uKTsK
K30KKyNlbmRpZgorCiAtICh2b2lkKXNjcm9sbFZpZXdXaWxsQmVnaW5ab29taW5nOihVSVNjcm9s
bFZpZXcgKilzY3JvbGxWaWV3IHdpdGhWaWV3OihVSVZpZXcgKil2aWV3CiB7CiAgICAgW3NlbGYg
Y2FuY2VsUG9pbnRlcnNGb3JHZXN0dXJlUmVjb2duaXplcjpzY3JvbGxWaWV3LnBpbmNoR2VzdHVy
ZVJlY29nbml6ZXJdOwpAQCAtMjk4LDYgKzMwNSwxNCBAQCB2b2lkIFNjcm9sbGluZ1RyZWVTY3Jv
bGxpbmdOb2RlRGVsZWdhdGVJT1M6OmNvbW1pdFN0YXRlQWZ0ZXJDaGlsZHJlbihjb25zdCBTY3Jv
bAogICAgIH0KIH0KIAorI2lmIEhBVkUoVUlTQ1JPTExWSUVXX0FTWU5DSFJPTk9VU19TQ1JPTExf
RVZFTlRfSEFORExJTkcpCit2b2lkIFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVJ
T1M6OmhhbmRsZUFzeW5jaHJvbm91c0NhbmNlbGFibGVTY3JvbGxFdmVudChVSVNjcm9sbFZpZXcg
KnNjcm9sbFZpZXcsIFVJU2Nyb2xsRXZlbnQgKnNjcm9sbEV2ZW50LCB2b2lkICheY29tcGxldGlv
bikoQk9PTCBoYW5kbGVkKSkKK3sKKyAgICBhdXRvJiBzY3JvbGxpbmdDb29yZGluYXRvclByb3h5
ID0gZG93bmNhc3Q8V2ViS2l0OjpSZW1vdGVTY3JvbGxpbmdUcmVlPihzY3JvbGxpbmdUcmVlKCkp
LnNjcm9sbGluZ0Nvb3JkaW5hdG9yUHJveHkoKTsKKyAgICBzY3JvbGxpbmdDb29yZGluYXRvclBy
b3h5LndlYlBhZ2VQcm94eSgpLnBhZ2VDbGllbnQoKS5oYW5kbGVBc3luY2hyb25vdXNDYW5jZWxh
YmxlU2Nyb2xsRXZlbnQoc2Nyb2xsVmlldywgc2Nyb2xsRXZlbnQsIGNvbXBsZXRpb24pOworfQor
I2VuZGlmCisKIHZvaWQgU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZUlPUzo6cmVw
b3NpdGlvblNjcm9sbGluZ0xheWVycygpCiB7CiAgICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJ
T05TCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3Bw
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAppbmRleCBjYzFiYmI0
YTRhYWI4MmQxMWRjNjZhYzJlNDFhZmNhZmUwY2U3ODgzLi5iMjk5NmJlYWJjOTU5ODRmYjk4ZTQ0
ZTVlNmIyYTA1NWEzNzk3NmRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJQYWdlUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94
eS5jcHAKQEAgLTI2MzcsNiArMjYzNywxMSBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6Zmx1c2hQZW5k
aW5nTW91c2VFdmVudENhbGxiYWNrcygpCiAgICAgbV9jYWxsYmFja0hhbmRsZXJzQWZ0ZXJQcm9j
ZXNzaW5nUGVuZGluZ01vdXNlRXZlbnRzLmNsZWFyKCk7CiB9CiAKK3ZvaWQgV2ViUGFnZVByb3h5
OjpkaXNwYXRjaFdoZWVsRXZlbnRXaXRob3V0U2Nyb2xsaW5nKGNvbnN0IFdlYldoZWVsRXZlbnQm
IGV2ZW50LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVy
KQoreworICAgIHNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6V2ViUGFnZTo6RGlzcGF0Y2hX
aGVlbEV2ZW50V2l0aG91dFNjcm9sbGluZyhldmVudCksIFdURk1vdmUoY29tcGxldGlvbkhhbmRs
ZXIpKTsKK30KKwogdm9pZCBXZWJQYWdlUHJveHk6OmhhbmRsZVdoZWVsRXZlbnQoY29uc3QgTmF0
aXZlV2ViV2hlZWxFdmVudCYgZXZlbnQpCiB7CiAjaWYgRU5BQkxFKEFTWU5DX1NDUk9MTElORykg
JiYgUExBVEZPUk0oQ09DT0EpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJQYWdlUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCmlu
ZGV4IDk4ZTg2MzZlOGViNjBjZDRhMDRiYjA4YThmOWYxMGJmNzk5YjJiN2UuLmYxMmZhZDQ2OWM4
ZWFjYTMwZjk1YWY0ZjcwYjEzOTY4OTM2MGQzZTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YlBhZ2VQcm94eS5oCkBAIC0xODM1LDYgKzE4MzUsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBjcmVh
dGVBcHBIaWdobGlnaHRJblNlbGVjdGVkUmFuZ2UoQ3JlYXRlTmV3R3JvdXBGb3JIaWdobGlnaHQp
OwogI2VuZGlmCiAKKyAgICB2b2lkIGRpc3BhdGNoV2hlZWxFdmVudFdpdGhvdXRTY3JvbGxpbmco
Y29uc3QgV2ViV2hlZWxFdmVudCYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpOwor
CiBwcml2YXRlOgogICAgIFdlYlBhZ2VQcm94eShQYWdlQ2xpZW50JiwgV2ViUHJvY2Vzc1Byb3h5
JiwgUmVmPEFQSTo6UGFnZUNvbmZpZ3VyYXRpb24+JiYpOwogICAgIHZvaWQgcGxhdGZvcm1Jbml0
aWFsaXplKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvUGFnZUNs
aWVudEltcGxJT1MuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1w
bElPUy5oCmluZGV4IGJlMDMwMWZiN2NiMThiYWM3Y2RlMzkwZWQzY2YxYTg1NTViOThkN2QuLjhm
ZDhkYzM1OGQzMzE5MWVjMzY2MWNmMmE4ZmU0Y2Q3NGI3NzE1ZTQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5oCkBAIC0yNzEsNiArMjcxLDEw
IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIHNob3dEaWN0YXRpb25BbHRlcm5hdGl2ZVVJKGNvbnN0
IFdlYkNvcmU6OkZsb2F0UmVjdCYsIFdlYkNvcmU6OkRpY3RhdGlvbkNvbnRleHQpIGZpbmFsOwog
CisjaWYgSEFWRShVSVNDUk9MTFZJRVdfQVNZTkNIUk9OT1VTX1NDUk9MTF9FVkVOVF9IQU5ETElO
RykKKyAgICB2b2lkIGhhbmRsZUFzeW5jaHJvbm91c0NhbmNlbGFibGVTY3JvbGxFdmVudChVSVNj
cm9sbFZpZXcgKiwgVUlTY3JvbGxFdmVudCAqLCB2b2lkICheY29tcGxldGlvbikoQk9PTCBoYW5k
bGVkKSkgZmluYWw7CisjZW5kaWYKKwogICAgIFdlYWtPYmpDUHRyPFdLQ29udGVudFZpZXc+IG1f
Y29udGVudFZpZXc7CiAgICAgUmV0YWluUHRyPFdLRWRpdG9yVW5kb1RhcmdldD4gbV91bmRvVGFy
Z2V0OwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9QYWdlQ2xp
ZW50SW1wbElPUy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1w
bElPUy5tbQppbmRleCBiNmFiOTYyYjczMzQzOTIzMmJmN2RkOTJjOTZhNmIyMTJjMWE4NmQyLi40
MWJjNTc0YTJjZjUxMTdiNDQ1M2QyZWVmZjlmMTM1ZjQwYzZhN2Y3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJT1MubW0KKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLm1tCkBAIC05NjEsNiArOTYx
LDEzIEBAIHZvaWQgUGFnZUNsaWVudEltcGw6OnNldE1vdXNlRXZlbnRQb2xpY3koV2ViQ29yZTo6
TW91c2VFdmVudFBvbGljeSBwb2xpY3kpCiAjZW5kaWYKIH0KIAorI2lmIEhBVkUoVUlTQ1JPTExW
SUVXX0FTWU5DSFJPTk9VU19TQ1JPTExfRVZFTlRfSEFORExJTkcpCit2b2lkIFBhZ2VDbGllbnRJ
bXBsOjpoYW5kbGVBc3luY2hyb25vdXNDYW5jZWxhYmxlU2Nyb2xsRXZlbnQoVUlTY3JvbGxWaWV3
ICpzY3JvbGxWaWV3LCBVSVNjcm9sbEV2ZW50ICpzY3JvbGxFdmVudCwgdm9pZCAoXmNvbXBsZXRp
b24pKEJPT0wgaGFuZGxlZCkpCit7CisgICAgW21fd2ViVmlldyBfc2Nyb2xsVmlldzpzY3JvbGxW
aWV3IGFzeW5jaHJvbm91c2x5SGFuZGxlU2Nyb2xsRXZlbnQ6c2Nyb2xsRXZlbnQgY29tcGxldGlv
bjpjb21wbGV0aW9uXTsKK30KKyNlbmRpZgorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKIAogI2Vu
ZGlmIC8vIFBMQVRGT1JNKElPU19GQU1JTFkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYlBhZ2UuY3BwCmluZGV4IGM0NDYzOGZlZDdiZDM4ZDYxZTk2NmNjZmUwMzQxMjYz
NDY0MjZjZmIuLjg2YTNkMjk2MTA3Yzk1YmE5NjQ1YmY1MjFhOWVmZTFjNjQxMDU5NjUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCkBAIC0yODY0LDcg
KzI4NjQsNyBAQCBzdGF0aWMgYm9vbCBoYW5kbGVXaGVlbEV2ZW50KGNvbnN0IFdlYldoZWVsRXZl
bnQmIHdoZWVsRXZlbnQsIFBhZ2UqIHBhZ2UsIE9wdGlvbgogICAgIHJldHVybiBwYWdlLT51c2Vy
SW5wdXRCcmlkZ2UoKS5oYW5kbGVXaGVlbEV2ZW50KHBsYXRmb3JtV2hlZWxFdmVudCwgcHJvY2Vz
c2luZ1N0ZXBzKTsKIH0KIAotdm9pZCBXZWJQYWdlOjp3aGVlbEV2ZW50KGNvbnN0IFdlYldoZWVs
RXZlbnQmIHdoZWVsRXZlbnQsIE9wdGlvblNldDxXaGVlbEV2ZW50UHJvY2Vzc2luZ1N0ZXBzPiBw
cm9jZXNzaW5nU3RlcHMpCitib29sIFdlYlBhZ2U6OndoZWVsRXZlbnQoY29uc3QgV2ViV2hlZWxF
dmVudCYgd2hlZWxFdmVudCwgT3B0aW9uU2V0PFdoZWVsRXZlbnRQcm9jZXNzaW5nU3RlcHM+IHBy
b2Nlc3NpbmdTdGVwcykKIHsKICAgICBtX3VzZXJBY3Rpdml0eS5pbXB1bHNlKCk7CiAKQEAgLTI4
NzQsNiArMjg3NCwyMCBAQCB2b2lkIFdlYlBhZ2U6OndoZWVsRXZlbnQoY29uc3QgV2ViV2hlZWxF
dmVudCYgd2hlZWxFdmVudCwgT3B0aW9uU2V0PFdoZWVsRXZlbnRQcgogCiAgICAgaWYgKHByb2Nl
c3NpbmdTdGVwcy5jb250YWlucyhXaGVlbEV2ZW50UHJvY2Vzc2luZ1N0ZXBzOjpNYWluVGhyZWFk
Rm9yU2Nyb2xsaW5nKSkKICAgICAgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEaWRS
ZWNlaXZlRXZlbnQoc3RhdGljX2Nhc3Q8dWludDMyX3Q+KHdoZWVsRXZlbnQudHlwZSgpKSwgaGFu
ZGxlZCkpOworCisgICAgcmV0dXJuIGhhbmRsZWQ7Cit9CisKK3ZvaWQgV2ViUGFnZTo6ZGlzcGF0
Y2hXaGVlbEV2ZW50V2l0aG91dFNjcm9sbGluZyhjb25zdCBXZWJXaGVlbEV2ZW50JiB3aGVlbEV2
ZW50LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQor
eworI2lmIEVOQUJMRShLSU5FVElDX1NDUk9MTElORykKKyAgICBhdXRvIGdlc3R1cmVTdGF0ZSA9
IG1fcGFnZS0+bWFpbkZyYW1lKCkuZXZlbnRIYW5kbGVyKCkud2hlZWxTY3JvbGxHZXN0dXJlU3Rh
dGUoKTsKKyAgICBib29sIGlzQ2FuY2VsYWJsZSA9ICFnZXN0dXJlU3RhdGUgfHwgZ2VzdHVyZVN0
YXRlID09IFdoZWVsU2Nyb2xsR2VzdHVyZVN0YXRlOjpCbG9ja2luZzsKKyNlbHNlCisgICAgYm9v
bCBpc0NhbmNlbGFibGUgPSB0cnVlOworI2VuZGlmCisgICAgYm9vbCBoYW5kbGVkID0gdGhpcy0+
d2hlZWxFdmVudCh3aGVlbEV2ZW50LCB7IGlzQ2FuY2VsYWJsZSA/IFdoZWVsRXZlbnRQcm9jZXNz
aW5nU3RlcHM6Ok1haW5UaHJlYWRGb3JCbG9ja2luZ0RPTUV2ZW50RGlzcGF0Y2ggOiBXaGVlbEV2
ZW50UHJvY2Vzc2luZ1N0ZXBzOjpNYWluVGhyZWFkRm9yTm9uQmxvY2tpbmdET01FdmVudERpc3Bh
dGNoIH0pOworICAgIGNvbXBsZXRpb25IYW5kbGVyKGhhbmRsZWQpOwogfQogCiBzdGF0aWMgYm9v
bCBoYW5kbGVLZXlFdmVudChjb25zdCBXZWJLZXlib2FyZEV2ZW50JiBrZXlib2FyZEV2ZW50LCBQ
YWdlKiBwYWdlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViUGFnZS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCmlu
ZGV4IGUwNGUzYThiMmQxNzhjYzg0OTVkNDViYWY4MWYzN2RhZWZiYjdiNzAuLjA3YTk2ZjM5MTk5
NjUxYWVjODcwNWViNTFmYTAxOGQxNzA5Y2NiZWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUGFnZS9XZWJQYWdlLmgKQEAgLTEwMTMsNyArMTAxMyw3IEBAIHB1YmxpYzoKICAgICB2
b2lkIGNvbnRleHRNZW51U2hvd2luZygpIHsgbV9pc1Nob3dpbmdDb250ZXh0TWVudSA9IHRydWU7
IH0KICNlbmRpZgogCi0gICAgdm9pZCB3aGVlbEV2ZW50KGNvbnN0IFdlYldoZWVsRXZlbnQmLCBP
cHRpb25TZXQ8V2ViQ29yZTo6V2hlZWxFdmVudFByb2Nlc3NpbmdTdGVwcz4pOworICAgIGJvb2wg
d2hlZWxFdmVudChjb25zdCBXZWJXaGVlbEV2ZW50JiwgT3B0aW9uU2V0PFdlYkNvcmU6OldoZWVs
RXZlbnRQcm9jZXNzaW5nU3RlcHM+KTsKIAogICAgIHZvaWQgd2hlZWxFdmVudEhhbmRsZXJzQ2hh
bmdlZChib29sKTsKICAgICB2b2lkIHJlY29tcHV0ZVNob3J0Q2lyY3VpdEhvcml6b250YWxXaGVl
bEV2ZW50c1N0YXRlKCk7CkBAIC0xMzcxLDYgKzEzNzEsOCBAQCBwdWJsaWM6CiAgICAgYm9vbCBj
cmVhdGVBcHBIaWdobGlnaHRJblNlbGVjdGVkUmFuZ2UoQ3JlYXRlTmV3R3JvdXBGb3JIaWdobGln
aHQpOwogI2VuZGlmCiAKKyAgICB2b2lkIGRpc3BhdGNoV2hlZWxFdmVudFdpdGhvdXRTY3JvbGxp
bmcoY29uc3QgV2ViV2hlZWxFdmVudCYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYp
OworCiBwcml2YXRlOgogICAgIFdlYlBhZ2UoV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIFdlYlBh
Z2VDcmVhdGlvblBhcmFtZXRlcnMmJik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCmluZGV4IDg2NGM2ZTgxOWFjNjljMjAx
YWY0NmZkNTBjNmFlMmQ2NWY4NGNjZjkuLmNkNDlmNzZkZTJlMTczYTdiOWYwM2Y1MjNkMmMxNDA3
YmUzNjM1ZWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YlBhZ2UubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViUGFnZS5tZXNzYWdlcy5pbgpAQCAtNjIxLDQgKzYyMSw1IEBAIEdlbmVyYXRlU3ludGhldGlj
RWRpdGluZ0NvbW1hbmQoZW51bTp1aW50OF90IFdlYktpdDo6U3ludGhldGljRWRpdGluZ0NvbW1h
bmRUeXBlCiAgICAgQ3JlYXRlQXBwSGlnaGxpZ2h0SW5TZWxlY3RlZFJhbmdlKGVudW06Ym9vbCBX
ZWJLaXQ6OkNyZWF0ZU5ld0dyb3VwRm9ySGlnaGxpZ2h0IGNyZWF0ZU5ld0dyb3VwKQogI2VuZGlm
CiAKKyAgICBEaXNwYXRjaFdoZWVsRXZlbnRXaXRob3V0U2Nyb2xsaW5nKFdlYktpdDo6V2ViV2hl
ZWxFdmVudCBldmVudCkgLT4gKGJvb2wgaGFuZGxlZCkgQXN5bmMKIH0KZGlmZiAtLWdpdCBhL1Rv
b2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCA0MDQ1NTdlYzRkN2QyZThmNWUw
MGM3NjAzZTkzODdjY2NkYWE2ZjNhLi5hYWU4NDdkZTJiN2NjYzhjYjc5ODI1NDVjNDM0NDk0OTdj
ZjY3YmQwIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMjIgQEAKKzIwMjAtMTItMTAgIFRpbSBIb3J0b24gIDx0aW1vdGh5X2hvcnRv
bkBhcHBsZS5jb20+CisKKyAgICAgICAgVHJhY2twYWQgYW5kIE1vdXNlIHNjcm9sbCBldmVudHMg
b24gaVBhZCBvbmx5IGZpcmUgInBvaW50ZXJtb3ZlIiAtLSBub3QgIndoZWVsIgorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjEwMDcxCisgICAgICAgIDxy
ZGFyOi8vcHJvYmxlbS81NDYxNjg1Mz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvaW9zL1dLU2Nyb2xsVmlld1Rl
c3RzLm1tOgorICAgICAgICAoLVtXS1VJU2Nyb2xsRXZlbnQgaW5pdFdpdGhQaGFzZTpsb2NhdGlv
bjpkZWx0YTpdKToKKyAgICAgICAgKC1bV0tVSVNjcm9sbEV2ZW50IHBoYXNlXSk6CisgICAgICAg
ICgtW1dLVUlTY3JvbGxFdmVudCBsb2NhdGlvbkluVmlldzpdKToKKyAgICAgICAgKC1bV0tVSVNj
cm9sbEV2ZW50IF9hZGp1c3RlZEFjY2VsZXJhdGVkRGVsdGFJblZpZXc6XSk6CisgICAgICAgIChU
RVNUKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL2lvcy9VSUtpdFNQSS5oOgorICAgICAgICBB
ZGQgYSB2ZXJ5IHNpbXBsZSB0ZXN0IHRoYXQgZGlyZWN0bHkgY2FsbHMgdGhlIG5ldyBVSVNjcm9s
bFZpZXdEZWxlZ2F0ZSBTUEkKKyAgICAgICAgYW5kIHZlcmlmaWVzIHRoYXQgb25seSB0aGUgZmly
c3QgZXZlbnQgaXMgcHJldmVudGFibGUgKHVubGVzcyB0aGUgZmlyc3QgZXZlbnQKKyAgICAgICAg
aXMgcHJldmVudGVkLCBpbiB3aGljaCBjYXNlIGFsbCBzdWJzZXF1ZW50IGV2ZW50cyBhcmUgcHJl
dmVudGFibGUpLgorCiAyMDIwLTEyLTAzICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2Vu
QHdlYmtpdC5vcmc+CiAKICAgICAgICAgSW50cm9kdWNlIG5ldyBkb3dubG9hZCBTUEkKZGlmZiAt
LWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvaW9zL1dLU2Nyb2xsVmlld1Rlc3RzLm1t
IGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9pb3MvV0tTY3JvbGxWaWV3VGVzdHMubW0KaW5k
ZXggMGUyYTFjOWVjNTE5YzdkZGRhNTZhMTlhYjRhMDE1NzhkNTBlNWVkNi4uODFkYmFiNGZhNjQx
MjY5YTk4N2EzYmU2ZTNhMDFmODAzODZiZDhhYSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9pb3MvV0tTY3JvbGxWaWV3VGVzdHMubW0KKysrIGIvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9pb3MvV0tTY3JvbGxWaWV3VGVzdHMubW0KQEAgLTI5LDggKzI5LDUzIEBACiAK
ICNpbXBvcnQgIlBsYXRmb3JtVXRpbGl0aWVzLmgiCiAjaW1wb3J0ICJUZXN0V0tXZWJWaWV3Lmgi
CisjaW1wb3J0ICJVSUtpdFNQSS5oIgogI2ltcG9ydCA8V2ViS2l0L1dLV2ViVmlld1ByaXZhdGUu
aD4KIAorI2lmIEhBVkUoVUlTQ1JPTExWSUVXX0FTWU5DSFJPTk9VU19TQ1JPTExfRVZFTlRfSEFO
RExJTkcpCitAaW50ZXJmYWNlIFdLVUlTY3JvbGxFdmVudCA6IFVJU2Nyb2xsRXZlbnQKKworLSAo
aW5zdGFuY2V0eXBlKWluaXRXaXRoUGhhc2U6KFVJU2Nyb2xsUGhhc2UpcGhhc2UgbG9jYXRpb246
KENHUG9pbnQpbG9jYXRpb24gZGVsdGE6KENHVmVjdG9yKWRlbHRhOworCitAZW5kCisKK0BpbXBs
ZW1lbnRhdGlvbiBXS1VJU2Nyb2xsRXZlbnQgeworICAgIFVJU2Nyb2xsUGhhc2UgX3BoYXNlOwor
ICAgIENHUG9pbnQgX2xvY2F0aW9uOworICAgIENHVmVjdG9yIF9kZWx0YTsKK30KKworLSAoaW5z
dGFuY2V0eXBlKWluaXRXaXRoUGhhc2U6KFVJU2Nyb2xsUGhhc2UpcGhhc2UgbG9jYXRpb246KENH
UG9pbnQpbG9jYXRpb24gZGVsdGE6KENHVmVjdG9yKWRlbHRhCit7CisgICAgc2VsZiA9IFtzdXBl
ciBpbml0XTsKKyAgICBpZiAoIXNlbGYpCisgICAgICAgIHJldHVybiBuaWw7CisKKyAgICBfcGhh
c2UgPSBwaGFzZTsKKyAgICBfbG9jYXRpb24gPSBsb2NhdGlvbjsKKyAgICBfZGVsdGEgPSBkZWx0
YTsKKworICAgIHJldHVybiBzZWxmOworfQorCistIChVSVNjcm9sbFBoYXNlKXBoYXNlCit7Cisg
ICAgcmV0dXJuIF9waGFzZTsKK30KKworLSAoQ0dQb2ludClsb2NhdGlvbkluVmlldzooVUlWaWV3
ICopdmlldworeworICAgIHJldHVybiBfbG9jYXRpb247Cit9CisKKy0gKENHVmVjdG9yKV9hZGp1
c3RlZEFjY2VsZXJhdGVkRGVsdGFJblZpZXc6KFVJVmlldyAqKXZpZXcKK3sKKyAgICByZXR1cm4g
X2RlbHRhOworfQorCitAZW5kCisjZW5kaWYgLy8gSEFWRShVSVNDUk9MTFZJRVdfQVNZTkNIUk9O
T1VTX1NDUk9MTF9FVkVOVF9IQU5ETElORykKKwogc3RhdGljIHZvaWQgdHJhdmVyc2VMYXllclRy
ZWUoQ0FMYXllciAqbGF5ZXIsIHZvaWQoXmJsb2NrKShDQUxheWVyICopKQogewogICAgIGZvciAo
Q0FMYXllciAqY2hpbGQgaW4gbGF5ZXIuc3VibGF5ZXJzKQpAQCAtNzEsNCArMTE2LDg2IEBAIFRF
U1QoV0tTY3JvbGxWaWV3VGVzdHMsIFBvc2l0aW9uRml4ZWRMYXllckFmdGVyU2Nyb2xsaW5nKQog
ICAgIEVYUEVDVF9UUlVFKGZvdW5kTGF5ZXJGb3JGaXhlZE5hdmlnYXRpb25CYXIpOwogfQogCisj
aWYgSEFWRShVSVNDUk9MTFZJRVdfQVNZTkNIUk9OT1VTX1NDUk9MTF9FVkVOVF9IQU5ETElORykK
K1RFU1QoV0tTY3JvbGxWaWV3VGVzdHMsIEFzeW5jaHJvbm91c1doZWVsRXZlbnRIYW5kbGluZykK
K3sKKyAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbVGVzdFdLV2ViVmlldyBhbGxvY10gaW5p
dFdpdGhGcmFtZTpDR1JlY3RNYWtlKDAsIDAsIDMyMCwgNTAwKV0pOworICAgIFt3ZWJWaWV3IHN5
bmNocm9ub3VzbHlMb2FkSFRNTFN0cmluZzpAIiIKKyAgICAgICAgIjxzdHlsZT4jaGFuZGxlciB7
IHdpZHRoOiAyMDBweDsgaGVpZ2h0OiAyMDBweDsgfTwvc3R5bGU+IgorICAgICAgICAiPGRpdiBp
ZD0naGFuZGxlcic+PC9kaXY+IgorICAgICAgICAiPHNjcmlwdD53aW5kb3cucHJldmVudERlZmF1
bHRPblNjcm9sbEV2ZW50cyA9IGZhbHNlOyIKKyAgICAgICAgImRvY3VtZW50LmdldEVsZW1lbnRC
eUlkKCdoYW5kbGVyJykuYWRkRXZlbnRMaXN0ZW5lcignd2hlZWwnLCAiCisgICAgICAgICJmdW5j
dGlvbiAoZSkgeyIKKyAgICAgICAgIiAgIHdpbmRvdy5sYXN0V2hlZWxFdmVudCA9IGU7IgorICAg
ICAgICAiICAgaWYgKHdpbmRvdy5wcmV2ZW50RGVmYXVsdE9uU2Nyb2xsRXZlbnRzKSIKKyAgICAg
ICAgIiAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7IgorICAgICAgICAifSk8L3NjcmlwdD4iXTsK
KyAgICBbd2ViVmlldyB3YWl0Rm9yTmV4dFByZXNlbnRhdGlvblVwZGF0ZV07CisKKyAgICBfX2Js
b2NrIGJvb2wgZG9uZTsKKyAgICBfX2Jsb2NrIGJvb2wgd2FzSGFuZGxlZDsKKworICAgIGF1dG8g
c3luY2hyb25vdXNseUhhbmRsZVNjcm9sbEV2ZW50ID0gXihVSVNjcm9sbFBoYXNlIHBoYXNlLCBD
R1BvaW50IGxvY2F0aW9uLCBDR1ZlY3RvciBkZWx0YSkgeworICAgICAgICBkb25lID0gZmFsc2U7
CisgICAgICAgIGF1dG8gZXZlbnQgPSBhZG9wdE5TKFtbV0tVSVNjcm9sbEV2ZW50IGFsbG9jXSBp
bml0V2l0aFBoYXNlOnBoYXNlIGxvY2F0aW9uOmxvY2F0aW9uIGRlbHRhOmRlbHRhXSk7CisgICAg
ICAgIFt3ZWJWaWV3IF9zY3JvbGxWaWV3Olt3ZWJWaWV3IHNjcm9sbFZpZXddIGFzeW5jaHJvbm91
c2x5SGFuZGxlU2Nyb2xsRXZlbnQ6ZXZlbnQuZ2V0KCkgY29tcGxldGlvbjpeKEJPT0wgaGFuZGxl
ZCkgeworICAgICAgICAgICAgd2FzSGFuZGxlZCA9IGhhbmRsZWQ7CisgICAgICAgICAgICBkb25l
ID0gdHJ1ZTsKKyAgICAgICAgfV07CisgICAgICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigm
ZG9uZSk7CisgICAgfTsKKworICAgIC8vIERvbid0IHByZXZlbnREZWZhdWx0KCkgYXQgYWxsLgor
ICAgIHN5bmNocm9ub3VzbHlIYW5kbGVTY3JvbGxFdmVudChVSVNjcm9sbFBoYXNlTWF5QmVnaW4s
IENHUG9pbnRNYWtlKDEwMCwgMTAwKSwgQ0dWZWN0b3JNYWtlKDAsIDApKTsKKyAgICBFWFBFQ1Rf
RkFMU0Uod2FzSGFuZGxlZCk7CisgICAgc3luY2hyb25vdXNseUhhbmRsZVNjcm9sbEV2ZW50KFVJ
U2Nyb2xsUGhhc2VCZWdhbiwgQ0dQb2ludE1ha2UoMTAwLCAxMDApLCBDR1ZlY3Rvck1ha2UoMCwg
MTApKTsKKyAgICBFWFBFQ1RfRkFMU0Uod2FzSGFuZGxlZCk7CisgICAgRVhQRUNUX1RSVUUoW1t3
ZWJWaWV3IG9iamVjdEJ5RXZhbHVhdGluZ0phdmFTY3JpcHQ6QCJ3aW5kb3cubGFzdFdoZWVsRXZl
bnQuY2FuY2VsYWJsZSJdIGludFZhbHVlXSk7CisgICAgRVhQRUNUX0VRKC0xMCwgW1t3ZWJWaWV3
IG9iamVjdEJ5RXZhbHVhdGluZ0phdmFTY3JpcHQ6QCJ3aW5kb3cubGFzdFdoZWVsRXZlbnQuZGVs
dGFZIl0gaW50VmFsdWVdKTsKKyAgICBzeW5jaHJvbm91c2x5SGFuZGxlU2Nyb2xsRXZlbnQoVUlT
Y3JvbGxQaGFzZUNoYW5nZWQsIENHUG9pbnRNYWtlKDEwMCwgMTAwKSwgQ0dWZWN0b3JNYWtlKDAs
IDEwKSk7CisgICAgRVhQRUNUX0ZBTFNFKHdhc0hhbmRsZWQpOworICAgIHN5bmNocm9ub3VzbHlI
YW5kbGVTY3JvbGxFdmVudChVSVNjcm9sbFBoYXNlRW5kZWQsIENHUG9pbnRNYWtlKDEwMCwgMTAw
KSwgQ0dWZWN0b3JNYWtlKDAsIDApKTsKKyAgICBFWFBFQ1RfRkFMU0Uod2FzSGFuZGxlZCk7CisK
KyAgICAvLyBwcmV2ZW50RGVmYXVsdCgpIG9uIGFsbCBldmVudHMuCisgICAgW3dlYlZpZXcgc3Ry
aW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpAIndpbmRvdy5wcmV2ZW50RGVmYXVsdE9uU2Nyb2xs
RXZlbnRzID0gdHJ1ZTsiXTsKKyAgICBzeW5jaHJvbm91c2x5SGFuZGxlU2Nyb2xsRXZlbnQoVUlT
Y3JvbGxQaGFzZU1heUJlZ2luLCBDR1BvaW50TWFrZSgxMDAsIDEwMCksIENHVmVjdG9yTWFrZSgw
LCAwKSk7CisgICAgRVhQRUNUX0ZBTFNFKHdhc0hhbmRsZWQpOworICAgIHN5bmNocm9ub3VzbHlI
YW5kbGVTY3JvbGxFdmVudChVSVNjcm9sbFBoYXNlQmVnYW4sIENHUG9pbnRNYWtlKDEwMCwgMTAw
KSwgQ0dWZWN0b3JNYWtlKDAsIDEwKSk7CisgICAgRVhQRUNUX1RSVUUod2FzSGFuZGxlZCk7Cisg
ICAgc3luY2hyb25vdXNseUhhbmRsZVNjcm9sbEV2ZW50KFVJU2Nyb2xsUGhhc2VDaGFuZ2VkLCBD
R1BvaW50TWFrZSgxMDAsIDEwMCksIENHVmVjdG9yTWFrZSgwLCAxMCkpOworICAgIEVYUEVDVF9U
UlVFKHdhc0hhbmRsZWQpOworICAgIHN5bmNocm9ub3VzbHlIYW5kbGVTY3JvbGxFdmVudChVSVNj
cm9sbFBoYXNlRW5kZWQsIENHUG9pbnRNYWtlKDEwMCwgMTAwKSwgQ0dWZWN0b3JNYWtlKDAsIDAp
KTsKKyAgICBFWFBFQ1RfRkFMU0Uod2FzSGFuZGxlZCk7CisKKyAgICAvLyBwcmV2ZW50RGVmYXVs
dCgpIG9uIGFsbCBidXQgdGhlIGJlZ2luIGV2ZW50OyBpdCB3aWxsIGJlIGlnbm9yZWQuCisgICAg
W3dlYlZpZXcgc3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpAIndpbmRvdy5wcmV2ZW50RGVm
YXVsdE9uU2Nyb2xsRXZlbnRzID0gZmFsc2U7Il07CisgICAgc3luY2hyb25vdXNseUhhbmRsZVNj
cm9sbEV2ZW50KFVJU2Nyb2xsUGhhc2VNYXlCZWdpbiwgQ0dQb2ludE1ha2UoMTAwLCAxMDApLCBD
R1ZlY3Rvck1ha2UoMCwgMCkpOworICAgIEVYUEVDVF9GQUxTRSh3YXNIYW5kbGVkKTsKKyAgICBz
eW5jaHJvbm91c2x5SGFuZGxlU2Nyb2xsRXZlbnQoVUlTY3JvbGxQaGFzZUJlZ2FuLCBDR1BvaW50
TWFrZSgxMDAsIDEwMCksIENHVmVjdG9yTWFrZSgwLCAxMCkpOworICAgIEVYUEVDVF9UUlVFKFtb
d2ViVmlldyBvYmplY3RCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OkAid2luZG93Lmxhc3RXaGVlbEV2
ZW50LmNhbmNlbGFibGUiXSBpbnRWYWx1ZV0pOworICAgIEVYUEVDVF9GQUxTRSh3YXNIYW5kbGVk
KTsKKyAgICBbd2ViVmlldyBzdHJpbmdCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OkAid2luZG93LnBy
ZXZlbnREZWZhdWx0T25TY3JvbGxFdmVudHMgPSB0cnVlOyJdOworICAgIHN5bmNocm9ub3VzbHlI
YW5kbGVTY3JvbGxFdmVudChVSVNjcm9sbFBoYXNlQ2hhbmdlZCwgQ0dQb2ludE1ha2UoMTAwLCAx
MDApLCBDR1ZlY3Rvck1ha2UoMCwgMTApKTsKKyAgICBFWFBFQ1RfRkFMU0Uod2FzSGFuZGxlZCk7
CisgICAgRVhQRUNUX0ZBTFNFKFtbd2ViVmlldyBvYmplY3RCeUV2YWx1YXRpbmdKYXZhU2NyaXB0
OkAid2luZG93Lmxhc3RXaGVlbEV2ZW50LmNhbmNlbGFibGUiXSBpbnRWYWx1ZV0pOworICAgIHN5
bmNocm9ub3VzbHlIYW5kbGVTY3JvbGxFdmVudChVSVNjcm9sbFBoYXNlRW5kZWQsIENHUG9pbnRN
YWtlKDEwMCwgMTAwKSwgQ0dWZWN0b3JNYWtlKDAsIDApKTsKKyAgICBFWFBFQ1RfRkFMU0Uod2Fz
SGFuZGxlZCk7CisKKyAgICAvLyBwcmV2ZW50RGVmYXVsdCgpIG9uIHRoZSBiZWdpbiBldmVudCwg
YW5kIHNvbWUgc3Vic2VxdWVudCBldmVudHMuCisgICAgW3dlYlZpZXcgc3RyaW5nQnlFdmFsdWF0
aW5nSmF2YVNjcmlwdDpAIndpbmRvdy5wcmV2ZW50RGVmYXVsdE9uU2Nyb2xsRXZlbnRzID0gdHJ1
ZTsiXTsKKyAgICBzeW5jaHJvbm91c2x5SGFuZGxlU2Nyb2xsRXZlbnQoVUlTY3JvbGxQaGFzZU1h
eUJlZ2luLCBDR1BvaW50TWFrZSgxMDAsIDEwMCksIENHVmVjdG9yTWFrZSgwLCAwKSk7CisgICAg
RVhQRUNUX0ZBTFNFKHdhc0hhbmRsZWQpOworICAgIHN5bmNocm9ub3VzbHlIYW5kbGVTY3JvbGxF
dmVudChVSVNjcm9sbFBoYXNlQmVnYW4sIENHUG9pbnRNYWtlKDEwMCwgMTAwKSwgQ0dWZWN0b3JN
YWtlKDAsIDEwKSk7CisgICAgRVhQRUNUX1RSVUUod2FzSGFuZGxlZCk7CisgICAgc3luY2hyb25v
dXNseUhhbmRsZVNjcm9sbEV2ZW50KFVJU2Nyb2xsUGhhc2VDaGFuZ2VkLCBDR1BvaW50TWFrZSgx
MDAsIDEwMCksIENHVmVjdG9yTWFrZSgwLCAxMCkpOworICAgIEVYUEVDVF9UUlVFKHdhc0hhbmRs
ZWQpOworICAgIFt3ZWJWaWV3IHN0cmluZ0J5RXZhbHVhdGluZ0phdmFTY3JpcHQ6QCJ3aW5kb3cu
cHJldmVudERlZmF1bHRPblNjcm9sbEV2ZW50cyA9IGZhbHNlOyJdOworICAgIHN5bmNocm9ub3Vz
bHlIYW5kbGVTY3JvbGxFdmVudChVSVNjcm9sbFBoYXNlQ2hhbmdlZCwgQ0dQb2ludE1ha2UoMTAw
LCAxMDApLCBDR1ZlY3Rvck1ha2UoMCwgMTApKTsKKyAgICBFWFBFQ1RfRkFMU0Uod2FzSGFuZGxl
ZCk7CisgICAgc3luY2hyb25vdXNseUhhbmRsZVNjcm9sbEV2ZW50KFVJU2Nyb2xsUGhhc2VFbmRl
ZCwgQ0dQb2ludE1ha2UoMTAwLCAxMDApLCBDR1ZlY3Rvck1ha2UoMCwgMCkpOworICAgIEVYUEVD
VF9GQUxTRSh3YXNIYW5kbGVkKTsKK30KKyNlbmRpZiAvLyBIQVZFKFVJU0NST0xMVklFV19BU1lO
Q0hST05PVVNfU0NST0xMX0VWRU5UX0hBTkRMSU5HKQorCiAjZW5kaWYgLy8gUExBVEZPUk0oSU9T
X0ZBTUlMWSkKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvaW9zL1VJS2l0U1BJLmgg
Yi9Ub29scy9UZXN0V2ViS2l0QVBJL2lvcy9VSUtpdFNQSS5oCmluZGV4IGRkNWFlY2VjOTA1NDI5
YzlhMDI1YzUyYzEwZjc0NDU3OTJmODQ5MGYuLmI1M2VhNTYwZjg0YTdkYzI4ZTc0N2VlZmNlZTU1
YTUzOGU2ZWRkMTkgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvaW9zL1VJS2l0U1BJ
LmgKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9pb3MvVUlLaXRTUEkuaApAQCAtMzcsNiArMzcs
OCBAQAogI2ltcG9ydCA8VUlLaXQvVUlLZXlib2FyZF9Qcml2YXRlLmg+CiAjaW1wb3J0IDxVSUtp
dC9VSVJlc3BvbmRlcl9Qcml2YXRlLmg+CiAjaW1wb3J0IDxVSUtpdC9VSVNjcmVlbl9Qcml2YXRl
Lmg+CisjaW1wb3J0IDxVSUtpdC9VSVNjcm9sbEV2ZW50X1ByaXZhdGUuaD4KKyNpbXBvcnQgPFVJ
S2l0L1VJU2Nyb2xsVmlld19Gb3JXZWJLaXRPbmx5Lmg+CiAjaW1wb3J0IDxVSUtpdC9VSVNjcm9s
bFZpZXdfUHJpdmF0ZS5oPgogI2ltcG9ydCA8VUlLaXQvVUlUZXh0QXV0b2ZpbGxTdWdnZXN0aW9u
Lmg+CiAjaW1wb3J0IDxVSUtpdC9VSVRleHRJbnB1dE11bHRpRG9jdW1lbnQuaD4KQEAgLTI0MCw2
ICsyNDIsMTMgQEAgSUdOT1JFX1dBUk5JTkdTX0VORAogQHByb3BlcnR5IChub25hdG9taWMsIGdl
dHRlcj1faXNBdXRvbWF0aWNDb250ZW50T2Zmc2V0QWRqdXN0bWVudEVuYWJsZWQsIHNldHRlcj1f
c2V0QXV0b21hdGljQ29udGVudE9mZnNldEFkanVzdG1lbnRFbmFibGVkOikgQk9PTCBpc0F1dG9t
YXRpY0NvbnRlbnRPZmZzZXRBZGp1c3RtZW50RW5hYmxlZDsKIEBlbmQKIAorQGludGVyZmFjZSBV
SVNjcm9sbEV2ZW50IDogVUlFdmVudAorQGVuZAorCitAaW50ZXJmYWNlIE5TT2JqZWN0IChVSVNj
cm9sbFZpZXdEZWxlZ2F0ZV9Gb3JXZWJLaXRPbmx5KQorLSAodm9pZClfc2Nyb2xsVmlldzooVUlT
Y3JvbGxWaWV3ICopc2Nyb2xsVmlldyBhc3luY2hyb25vdXNseUhhbmRsZVNjcm9sbEV2ZW50OihV
SVNjcm9sbEV2ZW50ICopc2Nyb2xsRXZlbnQgY29tcGxldGlvbjoodm9pZCAoXikoQk9PTCBoYW5k
bGVkKSljb21wbGV0aW9uOworQGVuZAorCiAjZW5kaWYgLy8gVVNFKEFQUExFX0lOVEVSTkFMX1NE
SykKIAogI2RlZmluZSBVSVdLRG9jdW1lbnRSZXF1ZXN0TWFya2VkVGV4dFJlY3RzICgxIDw8IDUp
Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>416045</attachid>
            <date>2020-12-11 14:01:36 -0800</date>
            <delta_ts>2020-12-11 14:59:50 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-210071-20201211140135.patch</filename>
            <type>text/plain</type>
            <size>42256</size>
            <attacher name="Tim Horton">thorton</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcwNDM1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDMzZTNhZjVkNGY3MmUxNDlhYTYyNTBi
Y2M4YmNlODgxODhlNTM5OTEuLjU2ZWQzZDJkZTU1Mzg3NjAzYWViZjk0MDY0NGVmY2RkNmY2ZTRk
NjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMjAtMTItMTAgIFRpbSBIb3J0b24gIDx0aW1vdGh5
X2hvcnRvbkBhcHBsZS5jb20+CisKKyAgICAgICAgVHJhY2twYWQgYW5kIE1vdXNlIHNjcm9sbCBl
dmVudHMgb24gaVBhZCBvbmx5IGZpcmUgInBvaW50ZXJtb3ZlIiAtLSBub3QgIndoZWVsIgorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjEwMDcxCisgICAg
ICAgIDxyZGFyOi8vcHJvYmxlbS81NDYxNjg1Mz4KKworICAgICAgICBSZXZpZXdlZCBieSBTaW1v
biBGcmFzZXIuCisKKyAgICAgICAgKiB3dGYvUGxhdGZvcm1FbmFibGVDb2NvYS5oOgorICAgICAg
ICBFbmFibGUgd2hlZWwgZXZlbnQgcmVnaW9ucyBvbiBpT1MgKyBtYWNDYXRhbHlzdC4KKwogMjAy
MC0xMi0wMyAgQWRhbSBSb2JlbiAgPGFyb2JlbkBhcHBsZS5jb20+CiAKICAgICAgICAgQWRvcHQg
RkFMTEJBQ0tfUExBVEZPUk0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBi
L1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA3YWUyODkzMGI3NGZiZmQ3MzAxZDY4Zjli
MWIwYmNmNzhhODZjOWY3Li5mNTk3ZDY2ZGJkYTVlMjkzYjdmMTQ3NTcxZjExNzBjMTZjNTU2MWM1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNv
cmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjEgQEAKKzIwMjAtMTItMTAgIFRpbSBIb3J0b24gIDx0
aW1vdGh5X2hvcnRvbkBhcHBsZS5jb20+CisKKyAgICAgICAgVHJhY2twYWQgYW5kIE1vdXNlIHNj
cm9sbCBldmVudHMgb24gaVBhZCBvbmx5IGZpcmUgInBvaW50ZXJtb3ZlIiAtLSBub3QgIndoZWVs
IgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjEwMDcx
CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS81NDYxNjg1Mz4KKworICAgICAgICBSZXZpZXdlZCBi
eSBTaW1vbiBGcmFzZXIuCisKKyAgICAgICAgKiBwYWdlL0V2ZW50SGFuZGxlci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpFdmVudEhhbmRsZXI6OmhhbmRsZVdoZWVsRXZlbnRJbnRlcm5hbCk6Cisg
ICAgICAgIEZpeCBhIG1pbm9yIGxvZ2ljIGVycm9yIHdoZW4gV0hFRUxfRVZFTlRfTEFUQ0hJTkcg
aXMgb2ZmOyBhbGxvd1Njcm9sbGluZworICAgICAgICB3b3VsZCBhbHdheXMgYmUgdHJ1ZSwgZXZl
biBpZiB0aGUgc2V0IG9mIHByb2Nlc3Npbmcgc3RlcHMgZG9lcyBub3QgaW5jbHVkZSBhbnkgc2Ny
b2xsaW5nIHN0ZXBzLgorCisgICAgICAgICogcmVuZGVyaW5nL0V2ZW50UmVnaW9uLmg6CisgICAg
ICAgIChXZWJDb3JlOjpFdmVudFJlZ2lvbjo6ZW5jb2RlIGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6OkV2ZW50UmVnaW9uOjpkZWNvZGUpOgorICAgICAgICBFbmNvZGUvZGVjb2RlIHRoZSB3aGVl
bCBhbmQgcGFzc2l2ZSB3aGVlbCBldmVudCByZWdpb25zLgorCiAyMDIwLTEyLTA0ICBQZW5nIExp
dSAgPHBlbmcubGl1NkBhcHBsZS5jb20+CiAKICAgICAgICAgW01TRV0gTW92ZSB0cmFjayBidWZm
ZXIgbWFuYWdlbWVudCBmcm9tIFNvdXJjZUJ1ZmZlciB0byBTb3VyY2VCdWZmZXJQcml2YXRlCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdl
TG9nCmluZGV4IDYzZjM0MjkwODIzYjFjNDhjNzcxYTNjNGYzODUyY2EyMjM1M2U0NGQuLjk1ZmJh
NDc3Zjc3ZmU2MjUxYTBiMTg0Y2ExZDA3NmJjNTRkNDM3NmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
NjcgQEAKKzIwMjAtMTItMTAgIFRpbSBIb3J0b24gIDx0aW1vdGh5X2hvcnRvbkBhcHBsZS5jb20+
CisKKyAgICAgICAgVHJhY2twYWQgYW5kIE1vdXNlIHNjcm9sbCBldmVudHMgb24gaVBhZCBvbmx5
IGZpcmUgInBvaW50ZXJtb3ZlIiAtLSBub3QgIndoZWVsIgorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjEwMDcxCisgICAgICAgIDxyZGFyOi8vcHJvYmxl
bS81NDYxNjg1Mz4KKworICAgICAgICBSZXZpZXdlZCBieSBTaW1vbiBGcmFzZXIuCisKKyAgICAg
ICAgKiBQbGF0Zm9ybS9zcGkvaW9zL1VJS2l0U1BJLmg6CisgICAgICAgIEFkZCBzb21lIFNQSS4K
KworICAgICAgICAqIFNoYXJlZC9pb3MvV2ViSU9TRXZlbnRGYWN0b3J5Lmg6CisgICAgICAgICog
U2hhcmVkL2lvcy9XZWJJT1NFdmVudEZhY3RvcnkubW06CisgICAgICAgICh0b1dlYlBoYXNlKToK
KyAgICAgICAgKFdlYklPU0V2ZW50RmFjdG9yeTo6Y3JlYXRlV2ViV2hlZWxFdmVudCk6CisgICAg
ICAgIEFkZCBhIFVJU2Nyb2xsRXZlbnQtPldlYldoZWVsRXZlbnQgY29udmVyc2lvbiBoZWxwZXIu
CisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld0ludGVybmFsLmg6Cisg
ICAgICAgICogVUlQcm9jZXNzL0FQSS9pb3MvV0tXZWJWaWV3SU9TLmg6CisgICAgICAgICogVUlQ
cm9jZXNzL0FQSS9pb3MvV0tXZWJWaWV3SU9TLm1tOgorICAgICAgICAoLVtXS1dlYlZpZXcgX3Nl
dHVwU2Nyb2xsQW5kQ29udGVudFZpZXdzXSk6CisgICAgICAgIEVuYWJsZSBhc3luYyBVSVNjcm9s
bEV2ZW50IGhhbmRsaW5nIGZvciBXS1Njcm9sbFZpZXcuCisKKyAgICAgICAgKC1bV0tXZWJWaWV3
IF9zY3JvbGxWaWV3OmFzeW5jaHJvbm91c2x5SGFuZGxlU2Nyb2xsRXZlbnQ6Y29tcGxldGlvbjpd
KToKKyAgICAgICAgQWRvcHQgbmV3IFVJS2l0IFNQSSB0byBhc3luY2hyb25vdXNseSBkZWZlciBV
SVNjcm9sbEV2ZW50cy4KKyAgICAgICAgV2UgcGFzcyB0aGVtIHRvIHRoZSBXZWIgQ29udGVudCBw
cm9jZXNzLCB3aGVyZSB0aGV5IGFyZSBwcm9jZXNzZWQgCisgICAgICAgICpvbmx5KiBmb3IgZXZl
bnQgaGFuZGxpbmcsIG5vdCBmb3Igc2Nyb2xsaW5nLgorCisgICAgICAgIElmIHRoZSBldmVudCBp
cyBub3QgY2FuY2VsYWJsZSwgd2Ugd2lsbCBzeW5jaHJvbm91c2x5IHJlcGx5IHRoYXQgaXQgd2Fz
CisgICAgICAgIG5vdCBoYW5kbGVkOyBpZiBpdCBpcyBjYW5jZWxhYmxlLCBvciB3ZSBkb24ndCB5
ZXQga25vdyBpZiBpdCB3aWxsIGJlLAorICAgICAgICB3ZSdsbCB3YWl0IHRvIGhlYXIgYmFjayBm
cm9tIHRoZSBXZWIgQ29udGVudCBwcm9jZXNzIGJlZm9yZSByZXBseWluZy4KKworICAgICAgICBV
SUtpdCB3aWxsIHdhaXQgdW50aWwgb3VyIHJlcGx5IHRvIGFwcGx5IHRoZSBVSVNjcm9sbEV2ZW50
IHRvIHRoZSBVSVNjcm9sbFZpZXcuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvUGFnZUNsaWVudC5o
OgorICAgICAgICAqIFVJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvaW9zL1JlbW90ZUxheWVyVHJl
ZVZpZXdzLmg6CisgICAgICAgICogVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9pb3MvUmVtb3Rl
TGF5ZXJUcmVlVmlld3MubW06CisgICAgICAgIChXZWJLaXQ6OmV2ZW50TGlzdGVuZXJUeXBlc0F0
UG9pbnQpOgorICAgICAgICBFeHBvc2UgYSBtZWNoYW5pc20gZm9yIHJldHJpZXZpbmcgdGhlIGV2
ZW50IGxpc3RlbmVyIHR5cGVzIGF0IGEgZ2l2ZW4gcG9pbnQsCisgICAgICAgIHNpbWlsYXIgdG8g
dGhlIGV4aXN0aW5nIG1lY2hhbmlzbSBmb3IgdG91Y2ggZXZlbnQgbGlzdGVuZXJzLgorCisgICAg
ICAgICgtW1dLQ2hpbGRTY3JvbGxWaWV3IGluaXRXaXRoRnJhbWU6XSk6CisgICAgICAgIEVuYWJs
ZSBhc3luYyBVSVNjcm9sbEV2ZW50IGhhbmRsaW5nIGZvciBXS0NoaWxkU2Nyb2xsVmlldy4KKwor
ICAgICAgICAqIFVJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvaW9zL1Njcm9sbGluZ1RyZWVTY3Jv
bGxpbmdOb2RlRGVsZWdhdGVJT1MuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvUmVtb3RlTGF5ZXJU
cmVlL2lvcy9TY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlSU9TLm1tOgorICAgICAg
ICAoLVtXS1Njcm9sbGluZ05vZGVTY3JvbGxWaWV3RGVsZWdhdGUgX3Njcm9sbFZpZXc6YXN5bmNo
cm9ub3VzbHlIYW5kbGVTY3JvbGxFdmVudDpjb21wbGV0aW9uOl0pOgorICAgICAgICAoV2ViS2l0
OjpTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlSU9TOjpoYW5kbGVBc3luY2hyb25v
dXNDYW5jZWxhYmxlU2Nyb2xsRXZlbnQpOgorICAgICAgICBQbHVtYiBhc3luYyBzY3JvbGwgZXZl
bnRzIGZvciBzdWItc2Nyb2xsYWJsZSByZWdpb25zIHRocm91Z2ggUGFnZUNsaWVudAorICAgICAg
ICB0byBXS1dlYlZpZXc7IHdlIGRvbid0IGFjdHVhbGx5IGNhcmUgd2hpY2ggVUlTY3JvbGxWaWV3
IHRoZXkncmUgaGFuZGVkIHRvLAorICAgICAgICBzaW5jZSB3ZSByZS1oaXQtdGVzdCBvdXJzZWx2
ZXMuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoKKyAgICAgICAgKFdl
YktpdDo6V2ViUGFnZVByb3h5OjpkaXNwYXRjaFdoZWVsRXZlbnRXaXRob3V0U2Nyb2xsaW5nKToK
KyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNz
L2lvcy9QYWdlQ2xpZW50SW1wbElPUy5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvUGFnZUNs
aWVudEltcGxJT1MubW06CisgICAgICAgIChXZWJLaXQ6OlBhZ2VDbGllbnRJbXBsOjpoYW5kbGVB
c3luY2hyb25vdXNDYW5jZWxhYmxlU2Nyb2xsRXZlbnQpOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJQYWdlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6d2hlZWxFdmVu
dCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmRpc3BhdGNoV2hlZWxFdmVudFdpdGhvdXRT
Y3JvbGxpbmcpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmg6CisgICAg
ICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW46CisKIDIwMjAtMTIt
MDQgIFBlbmcgTGl1ICA8cGVuZy5saXU2QGFwcGxlLmNvbT4KIAogICAgICAgICBbTVNFXSBNb3Zl
IHRyYWNrIGJ1ZmZlciBtYW5hZ2VtZW50IGZyb20gU291cmNlQnVmZmVyIHRvIFNvdXJjZUJ1ZmZl
clByaXZhdGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtRW5hYmxlQ29jb2Eu
aCBiL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtRW5hYmxlQ29jb2EuaAppbmRleCA1YWRkYTg4NmVh
MGU2NzY3ZjVmNzkwOTk4YjZhYjgxZTgxN2IwNmQ0Li42YjBlZjk1YTdmNTlkOGQxZmU1NGY0NGI0
ODFjM2Y3YzQ4MjdlNGVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybUVuYWJs
ZUNvY29hLmgKKysrIGIvU291cmNlL1dURi93dGYvUGxhdGZvcm1FbmFibGVDb2NvYS5oCkBAIC01
MjIsNyArNTIyLDcgQEAKICNkZWZpbmUgRU5BQkxFX1RPVUNIX0FDVElPTl9SRUdJT05TIDEKICNl
bmRpZgogCi0jaWYgIWRlZmluZWQoRU5BQkxFX1dIRUVMX0VWRU5UX1JFR0lPTlMpICYmIFBMQVRG
T1JNKE1BQykKKyNpZiAhZGVmaW5lZChFTkFCTEVfV0hFRUxfRVZFTlRfUkVHSU9OUykgJiYgKFBM
QVRGT1JNKE1BQykgfHwgUExBVEZPUk0oSU9TKSB8fCBQTEFURk9STShNQUNDQVRBTFlTVCkpCiAj
ZGVmaW5lIEVOQUJMRV9XSEVFTF9FVkVOVF9SRUdJT05TIDEKICNlbmRpZgogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL0V2ZW50SGFuZGxlci5jcHAKaW5kZXggNmFiZGRiMjU2M2U5MDUxZjk0ZjBlYzg4NmI0OThh
ZmM3ZjcxYjc4OS4uZjA0MDkyMDc1ZTAyZmU1OTMwNjQ2OWJhOTdkOTI2MmZjNzg2NGExNiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcApAQCAtMjkwNSwxMCArMjkwNSwxMyBAQCBi
b29sIEV2ZW50SGFuZGxlcjo6aGFuZGxlV2hlZWxFdmVudEludGVybmFsKGNvbnN0IFBsYXRmb3Jt
V2hlZWxFdmVudCYgZXZlbnQsIE9wdAogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBib29s
IGhhbmRsZWRFdmVudCA9IGZhbHNlOwotICAgIGJvb2wgYWxsb3dTY3JvbGxpbmcgPSB0cnVlOwor
ICAgIGJvb2wgYWxsb3dTY3JvbGxpbmcgPSBtX2N1cnJlbnRXaGVlbEV2ZW50QWxsb3dzU2Nyb2xs
aW5nOworCiAjaWYgRU5BQkxFKFdIRUVMX0VWRU5UX0xBVENISU5HKQotICAgIGFsbG93U2Nyb2xs
aW5nID0gbV9jdXJyZW50V2hlZWxFdmVudEFsbG93c1Njcm9sbGluZyAmJiBtX2ZyYW1lLnBhZ2Uo
KS0+c2Nyb2xsTGF0Y2hpbmdDb250cm9sbGVyKCkubGF0Y2hpbmdBbGxvd3NTY3JvbGxpbmdJbkZy
YW1lKG1fZnJhbWUsIHNjcm9sbGFibGVBcmVhKTsKKyAgICBpZiAoYWxsb3dTY3JvbGxpbmcpCisg
ICAgICAgIGFsbG93U2Nyb2xsaW5nID0gbV9mcmFtZS5wYWdlKCktPnNjcm9sbExhdGNoaW5nQ29u
dHJvbGxlcigpLmxhdGNoaW5nQWxsb3dzU2Nyb2xsaW5nSW5GcmFtZShtX2ZyYW1lLCBzY3JvbGxh
YmxlQXJlYSk7CiAjZW5kaWYKKwogICAgIGlmIChhbGxvd1Njcm9sbGluZykgewogICAgICAgICAv
LyBGSVhNRTogcHJvY2Vzc1doZWVsRXZlbnRGb3JTY3JvbGxpbmcoKSBpcyBvbmx5IGNhbGxlZCBm
b3IgRnJhbWVWaWV3IHNjcm9sbGluZywgbm90IG92ZXJmbG93IHNjcm9sbGluZywgd2hpY2ggaXMg
Y29uZnVzaW5nLgogICAgICAgICBoYW5kbGVkRXZlbnQgPSBwcm9jZXNzV2hlZWxFdmVudEZvclNj
cm9sbGluZyhldmVudCwgc2Nyb2xsYWJsZUFyZWEsIGhhbmRsaW5nKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2
ZW50SGFuZGxlci5oCmluZGV4IGFkOGE4M2E1N2Q2ZDBiNjA3MThiZTcwMDYwMDYwNWNkMjE1MmEw
YjAuLjUxNTNmNTVmMGU5ZDM3ZjE5ODg4ZDE4NGRkYTRiMjIzZGIzMWI1MzQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9FdmVudEhhbmRsZXIuaApAQCAtMzQ2LDYgKzM0NiwxMCBAQCBwdWJsaWM6CiAKICAgICBX
RUJDT1JFX0VYUE9SVCBPcHRpb25hbDxDdXJzb3I+IHNlbGVjdEN1cnNvcihjb25zdCBIaXRUZXN0
UmVzdWx0JiwgYm9vbCBzaGlmdEtleSk7CiAKKyNpZiBFTkFCTEUoS0lORVRJQ19TQ1JPTExJTkcp
CisgICAgT3B0aW9uYWw8V2hlZWxTY3JvbGxHZXN0dXJlU3RhdGU+IHdoZWVsU2Nyb2xsR2VzdHVy
ZVN0YXRlKCkgY29uc3QgeyByZXR1cm4gbV93aGVlbFNjcm9sbEdlc3R1cmVTdGF0ZTsgfQorI2Vu
ZGlmCisKICNpZiBFTkFCTEUoRFJBR19TVVBQT1JUKQogICAgIEVsZW1lbnQqIGRyYWdnaW5nRWxl
bWVudCgpIGNvbnN0OwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvRXZlbnRSZWdpb24uaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9FdmVudFJlZ2lvbi5o
CmluZGV4IDZjNGZhZTYzMzcyNWI3ZTZlOGJmZDlkZWE5ODU5MTVjODEwYzk1ZmIuLjJmZjVlOTM2
MmY2ZjQyNmY3NjliOTZjOWI4YTJhMzEzNzhjNGY3MTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9FdmVudFJlZ2lvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9FdmVudFJlZ2lvbi5oCkBAIC04Miw3ICs4Miw3IEBAIHB1YmxpYzoKICNlbmRpZgogCiAjaWYg
RU5BQkxFKFdIRUVMX0VWRU5UX1JFR0lPTlMpCi0gICAgT3B0aW9uU2V0PEV2ZW50TGlzdGVuZXJS
ZWdpb25UeXBlPiBldmVudExpc3RlbmVyUmVnaW9uVHlwZXNGb3JQb2ludChjb25zdCBJbnRQb2lu
dCYpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIE9wdGlvblNldDxFdmVudExpc3RlbmVyUmVn
aW9uVHlwZT4gZXZlbnRMaXN0ZW5lclJlZ2lvblR5cGVzRm9yUG9pbnQoY29uc3QgSW50UG9pbnQm
KSBjb25zdDsKICAgICBjb25zdCBSZWdpb24mIGV2ZW50TGlzdGVuZXJSZWdpb25Gb3JUeXBlKEV2
ZW50TGlzdGVuZXJSZWdpb25UeXBlKSBjb25zdDsKICNlbmRpZgogCkBAIC0xMjUsNiArMTI1LDEw
IEBAIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+CiB2b2lkIEV2ZW50UmVnaW9uOjplbmNvZGUoRW5j
b2RlciYgZW5jb2RlcikgY29uc3QKIHsKICAgICBlbmNvZGVyIDw8IG1fcmVnaW9uOworI2lmIEVO
QUJMRShXSEVFTF9FVkVOVF9SRUdJT05TKQorICAgIGVuY29kZXIgPDwgbV93aGVlbEV2ZW50TGlz
dGVuZXJSZWdpb247CisgICAgZW5jb2RlciA8PCBtX25vblBhc3NpdmVXaGVlbEV2ZW50TGlzdGVu
ZXJSZWdpb247CisjZW5kaWYKICNpZiBFTkFCTEUoVE9VQ0hfQUNUSU9OX1JFR0lPTlMpCiAgICAg
ZW5jb2RlciA8PCBtX3RvdWNoQWN0aW9uUmVnaW9uczsKICNlbmRpZgpAQCAtMTQ0LDYgKzE0OCwy
MiBAQCBPcHRpb25hbDxFdmVudFJlZ2lvbj4gRXZlbnRSZWdpb246OmRlY29kZShEZWNvZGVyJiBk
ZWNvZGVyKQogICAgIEV2ZW50UmVnaW9uIGV2ZW50UmVnaW9uOwogICAgIGV2ZW50UmVnaW9uLm1f
cmVnaW9uID0gV1RGTW92ZSgqcmVnaW9uKTsKIAorI2lmIEVOQUJMRShXSEVFTF9FVkVOVF9SRUdJ
T05TKQorICAgIE9wdGlvbmFsPFJlZ2lvbj4gd2hlZWxFdmVudExpc3RlbmVyUmVnaW9uOworICAg
IGRlY29kZXIgPj4gd2hlZWxFdmVudExpc3RlbmVyUmVnaW9uOworICAgIGlmICghd2hlZWxFdmVu
dExpc3RlbmVyUmVnaW9uKQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAgZXZl
bnRSZWdpb24ubV93aGVlbEV2ZW50TGlzdGVuZXJSZWdpb24gPSBXVEZNb3ZlKCp3aGVlbEV2ZW50
TGlzdGVuZXJSZWdpb24pOworCisgICAgT3B0aW9uYWw8UmVnaW9uPiBub25QYXNzaXZlV2hlZWxF
dmVudExpc3RlbmVyUmVnaW9uOworICAgIGRlY29kZXIgPj4gbm9uUGFzc2l2ZVdoZWVsRXZlbnRM
aXN0ZW5lclJlZ2lvbjsKKyAgICBpZiAoIW5vblBhc3NpdmVXaGVlbEV2ZW50TGlzdGVuZXJSZWdp
b24pCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICBldmVudFJlZ2lvbi5tX25v
blBhc3NpdmVXaGVlbEV2ZW50TGlzdGVuZXJSZWdpb24gPSBXVEZNb3ZlKCpub25QYXNzaXZlV2hl
ZWxFdmVudExpc3RlbmVyUmVnaW9uKTsKKyNlbmRpZgorCiAjaWYgRU5BQkxFKFRPVUNIX0FDVElP
Tl9SRUdJT05TKQogICAgIE9wdGlvbmFsPFZlY3RvcjxSZWdpb24+PiB0b3VjaEFjdGlvblJlZ2lv
bnM7CiAgICAgZGVjb2RlciA+PiB0b3VjaEFjdGlvblJlZ2lvbnM7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1BsYXRmb3JtL3NwaS9pb3MvVUlLaXRTUEkuaCBiL1NvdXJjZS9XZWJLaXQvUGxh
dGZvcm0vc3BpL2lvcy9VSUtpdFNQSS5oCmluZGV4IDI0MTc3ODlkYmMyZmE5ZWZjOGE0NTJlNTk0
N2U1OGEyNjQ1ZjE2NzYuLmUwOGIwOTdjMTA2YWIyMTYwMTAyOWM0OTk3NzU1MTk4YmM4MGY4ZWIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vc3BpL2lvcy9VSUtpdFNQSS5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vc3BpL2lvcy9VSUtpdFNQSS5oCkBAIC02Miw2ICs2
Miw4IEBACiAjaW1wb3J0IDxVSUtpdC9VSVByZXNlbnRhdGlvbkNvbnRyb2xsZXJfUHJpdmF0ZS5o
PgogI2ltcG9ydCA8VUlLaXQvVUlSZXNwb25kZXJfUHJpdmF0ZS5oPgogI2ltcG9ydCA8VUlLaXQv
VUlTY2VuZV9Qcml2YXRlLmg+CisjaW1wb3J0IDxVSUtpdC9VSVNjcm9sbEV2ZW50X1ByaXZhdGUu
aD4KKyNpbXBvcnQgPFVJS2l0L1VJU2Nyb2xsVmlld19Gb3JXZWJLaXRPbmx5Lmg+CiAjaW1wb3J0
IDxVSUtpdC9VSVNjcm9sbFZpZXdfUHJpdmF0ZS5oPgogI2ltcG9ydCA8VUlLaXQvVUlTdHJpbmdE
cmF3aW5nX1ByaXZhdGUuaD4KICNpbXBvcnQgPFVJS2l0L1VJVGFibGVWaWV3Q2VsbF9Qcml2YXRl
Lmg+CkBAIC00MTYsOCArNDE4LDI3IEBAIHR5cGVkZWYgZW51bSB7CiBAcHJvcGVydHkgKG5vbmF0
b21pYywgZ2V0dGVyPV9pbmRpY2F0b3JJbnNldEFkanVzdG1lbnRCZWhhdmlvciwgc2V0dGVyPV9z
ZXRJbmRpY2F0b3JJbnNldEFkanVzdG1lbnRCZWhhdmlvcjopIFVJU2Nyb2xsVmlld0luZGljYXRv
ckluc2V0QWRqdXN0bWVudEJlaGF2aW9yIGluZGljYXRvckluc2V0QWRqdXN0bWVudEJlaGF2aW9y
OwogQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5KSBVSUVkZ2VJbnNldHMgX3N5c3RlbUNv
bnRlbnRJbnNldDsKIEBwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSkgVUlFZGdlSW5zZXRz
IF9lZmZlY3RpdmVDb250ZW50SW5zZXQ7CitAcHJvcGVydHkgKG5vbmF0b21pYywgZ2V0dGVyPV9h
bGxvd3NBc3luY1Njcm9sbEV2ZW50LCBzZXR0ZXI9X3NldEFsbG93c0FzeW5jU2Nyb2xsRXZlbnQ6
KSBCT09MIF9hbGxvd3NBc3luY1Njcm9sbEV2ZW50OwogQGVuZAogCit0eXBlZGVmIE5TX0VOVU0o
TlNVSW50ZWdlciwgVUlTY3JvbGxQaGFzZSkgeworICAgIFVJU2Nyb2xsUGhhc2VOb25lLAorICAg
IFVJU2Nyb2xsUGhhc2VNYXlCZWdpbiwKKyAgICBVSVNjcm9sbFBoYXNlQmVnYW4sCisgICAgVUlT
Y3JvbGxQaGFzZUNoYW5nZWQsCisgICAgVUlTY3JvbGxQaGFzZUVuZGVkLAorICAgIFVJU2Nyb2xs
UGhhc2VDYW5jZWxsZWQKK307CisKK0BpbnRlcmZhY2UgVUlTY3JvbGxFdmVudCA6IFVJRXZlbnQK
KworQHByb3BlcnR5IChhc3NpZ24sIHJlYWRvbmx5KSBVSVNjcm9sbFBoYXNlIHBoYXNlOworLSAo
Q0dQb2ludClsb2NhdGlvbkluVmlldzooVUlWaWV3ICopdmlldzsKKy0gKENHVmVjdG9yKV9hZGp1
c3RlZEFjY2VsZXJhdGVkRGVsdGFJblZpZXc6KFVJVmlldyAqKXZpZXc7CisKK0BlbmQKKworCiBA
aW50ZXJmYWNlIE5TU3RyaW5nIChVSUtpdERldGFpbHMpCiAtIChDR1NpemUpX2xlZ2FjeV9zaXpl
V2l0aEZvbnQ6KFVJRm9udCAqKWZvbnQgZm9yV2lkdGg6KENHRmxvYXQpd2lkdGggbGluZUJyZWFr
TW9kZTooTlNMaW5lQnJlYWtNb2RlKWxpbmVCcmVha01vZGU7CiAtIChDR1NpemUpX2xlZ2FjeV9z
aXplV2l0aEZvbnQ6KFVJRm9udCAqKWZvbnQgbWluRm9udFNpemU6KENHRmxvYXQpbWluRm9udFNp
emUgYWN0dWFsRm9udFNpemU6KENHRmxvYXQgKilhY3R1YWxGb250U2l6ZSBmb3JXaWR0aDooQ0dG
bG9hdCl3aWR0aCBsaW5lQnJlYWtNb2RlOihOU0xpbmVCcmVha01vZGUpbGluZUJyZWFrTW9kZTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL2lvcy9XZWJJT1NFdmVudEZhY3Rvcnku
aCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL2lvcy9XZWJJT1NFdmVudEZhY3RvcnkuaAppbmRleCAx
ZTc4OGU2MGE3NmM1NWVlNDk1OTUxNWVlZDFhZjJiOGE0MWUyODdiLi5kZWM3MzhjNjU4YWU5NDcz
NjUxODc4NzQwNjcxYWJhMjE2MTkxZGM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9pb3MvV2ViSU9TRXZlbnRGYWN0b3J5LmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvaW9z
L1dlYklPU0V2ZW50RmFjdG9yeS5oCkBAIC0yOSwxMyArMjksMTcgQEAKIAogI2ltcG9ydCAiV2Vi
S2V5Ym9hcmRFdmVudC5oIgogI2ltcG9ydCAiV2ViTW91c2VFdmVudC5oIgorI2ltcG9ydCAiV2Vi
V2hlZWxFdmVudC5oIgogI2ltcG9ydCA8VUlLaXQvVUlLaXQuaD4KICNpbXBvcnQgPFdlYkNvcmUv
V2ViRXZlbnQuaD4KIAorT0JKQ19DTEFTUyBVSVNjcm9sbEV2ZW50OworCiBjbGFzcyBXZWJJT1NF
dmVudEZhY3RvcnkgewogcHVibGljOgogICAgIHN0YXRpYyBXZWJLaXQ6OldlYktleWJvYXJkRXZl
bnQgY3JlYXRlV2ViS2V5Ym9hcmRFdmVudCg6OldlYkV2ZW50ICosIGJvb2wgaGFuZGxlZEJ5SW5w
dXRNZXRob2QpOwogICAgIHN0YXRpYyBXZWJLaXQ6OldlYk1vdXNlRXZlbnQgY3JlYXRlV2ViTW91
c2VFdmVudCg6OldlYkV2ZW50ICopOworICAgIHN0YXRpYyBXZWJLaXQ6OldlYldoZWVsRXZlbnQg
Y3JlYXRlV2ViV2hlZWxFdmVudChVSVNjcm9sbEV2ZW50ICosIFVJVmlldyAqY29udGVudFZpZXcp
OwogCiAgICAgc3RhdGljIFVJS2V5TW9kaWZpZXJGbGFncyB0b1VJS2V5TW9kaWZpZXJGbGFncyhP
cHRpb25TZXQ8V2ViS2l0OjpXZWJFdmVudDo6TW9kaWZpZXI+KTsKIH07CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9pb3MvV2ViSU9TRXZlbnRGYWN0b3J5Lm1tIGIvU291cmNlL1dl
YktpdC9TaGFyZWQvaW9zL1dlYklPU0V2ZW50RmFjdG9yeS5tbQppbmRleCA5ZDBhMDk3NjdjMzdj
OGNlODQ3OTJmNTdkNjY4OTNmZTVhOTIyYWRlLi4wODU2MGQ0YTBhYWMyYWVlYjQ4MjI1NzQ0N2Rh
Y2NmOTJmNDJlZDZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9pb3MvV2ViSU9T
RXZlbnRGYWN0b3J5Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL2lvcy9XZWJJT1NFdmVu
dEZhY3RvcnkubW0KQEAgLTI4LDYgKzI4LDcgQEAKIAogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkp
CiAKKyNpbXBvcnQgIlVJS2l0U1BJLmgiCiAjaW1wb3J0IDxXZWJDb3JlL0tleUV2ZW50Q29kZXNJ
T1MuaD4KICNpbXBvcnQgPFdlYkNvcmUvUGxhdGZvcm1FdmVudEZhY3RvcnlJT1MuaD4KIApAQCAt
MTMwLDQgKzEzMSw0OSBAQCBXZWJLaXQ6OldlYk1vdXNlRXZlbnQgV2ViSU9TRXZlbnRGYWN0b3J5
OjpjcmVhdGVXZWJNb3VzZUV2ZW50KDo6V2ViRXZlbnQgKmV2ZW50KQogICAgIHJldHVybiBXZWJL
aXQ6OldlYk1vdXNlRXZlbnQodHlwZSwgYnV0dG9uLCBidXR0b25zLCBwb3NpdGlvbiwgcG9zaXRp
b24sIGRlbHRhWCwgZGVsdGFZLCBkZWx0YVosIGNsaWNrQ291bnQsIE9wdGlvblNldDxXZWJLaXQ6
OldlYkV2ZW50OjpNb2RpZmllcj4geyB9LCBXYWxsVGltZTo6ZnJvbVJhd1NlY29uZHModGltZXN0
YW1wKSk7CiB9CiAKK3N0YXRpYyBXZWJLaXQ6OldlYldoZWVsRXZlbnQ6OlBoYXNlIHRvV2ViUGhh
c2UoVUlTY3JvbGxQaGFzZSBwaGFzZSkKK3sKKyAgICBzd2l0Y2ggKHBoYXNlKSB7CisgICAgY2Fz
ZSBVSVNjcm9sbFBoYXNlTm9uZToKKyAgICAgICAgcmV0dXJuIFdlYktpdDo6V2ViV2hlZWxFdmVu
dDo6UGhhc2VOb25lOworICAgIGNhc2UgVUlTY3JvbGxQaGFzZU1heUJlZ2luOgorICAgICAgICBy
ZXR1cm4gV2ViS2l0OjpXZWJXaGVlbEV2ZW50OjpQaGFzZU1heUJlZ2luOworICAgIGNhc2UgVUlT
Y3JvbGxQaGFzZUJlZ2FuOgorICAgICAgICByZXR1cm4gV2ViS2l0OjpXZWJXaGVlbEV2ZW50OjpQ
aGFzZUJlZ2FuOworICAgIGNhc2UgVUlTY3JvbGxQaGFzZUNoYW5nZWQ6CisgICAgICAgIHJldHVy
biBXZWJLaXQ6OldlYldoZWVsRXZlbnQ6OlBoYXNlQ2hhbmdlZDsKKyAgICBjYXNlIFVJU2Nyb2xs
UGhhc2VFbmRlZDoKKyAgICAgICAgcmV0dXJuIFdlYktpdDo6V2ViV2hlZWxFdmVudDo6UGhhc2VF
bmRlZDsKKyAgICBjYXNlIFVJU2Nyb2xsUGhhc2VDYW5jZWxsZWQ6CisgICAgICAgIHJldHVybiBX
ZWJLaXQ6OldlYldoZWVsRXZlbnQ6OlBoYXNlQ2FuY2VsbGVkOworICAgIGRlZmF1bHQ6CisgICAg
ICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICByZXR1cm4gV2ViS2l0OjpXZWJXaGVl
bEV2ZW50OjpQaGFzZU5vbmU7CisgICAgfQorfQorCitXZWJLaXQ6OldlYldoZWVsRXZlbnQgV2Vi
SU9TRXZlbnRGYWN0b3J5OjpjcmVhdGVXZWJXaGVlbEV2ZW50KFVJU2Nyb2xsRXZlbnQgKmV2ZW50
LCBVSVZpZXcgKmNvbnRlbnRWaWV3KQoreworICAgIFdlYkNvcmU6OkludFBvaW50IHNjcm9sbExv
Y2F0aW9uID0gV2ViQ29yZTo6cm91bmRlZEludFBvaW50KFtldmVudCBsb2NhdGlvbkluVmlldzpj
b250ZW50Vmlld10pOworICAgIENHVmVjdG9yIGRlbHRhVmVjdG9yID0gW2V2ZW50IF9hZGp1c3Rl
ZEFjY2VsZXJhdGVkRGVsdGFJblZpZXc6Y29udGVudFZpZXddOworICAgIFdlYkNvcmU6OkZsb2F0
U2l6ZSBkZWx0YShkZWx0YVZlY3Rvci5keCwgZGVsdGFWZWN0b3IuZHkpOworCisgICAgcmV0dXJu
IHsKKyAgICAgICAgV2ViS2l0OjpXZWJFdmVudDo6V2hlZWwsCisgICAgICAgIHNjcm9sbExvY2F0
aW9uLAorICAgICAgICBzY3JvbGxMb2NhdGlvbiwKKyAgICAgICAgZGVsdGEsCisgICAgICAgIHsg
fSAvKiB3aGVlbFRpY2tzICovLAorICAgICAgICBXZWJLaXQ6OldlYldoZWVsRXZlbnQ6OkdyYW51
bGFyaXR5OjpTY3JvbGxCeVBpeGVsV2hlZWxFdmVudCwKKyAgICAgICAgZmFsc2UsCisgICAgICAg
IHRvV2ViUGhhc2UoZXZlbnQucGhhc2UpLAorICAgICAgICBXZWJLaXQ6OldlYldoZWVsRXZlbnQ6
OlBoYXNlTm9uZSwKKyAgICAgICAgdHJ1ZSwKKyAgICAgICAgMSwKKyAgICAgICAgZGVsdGEsCisg
ICAgICAgIHsgfSwKKyAgICAgICAgTW9ub3RvbmljVGltZTo6ZnJvbVJhd1NlY29uZHMoZXZlbnQu
dGltZXN0YW1wKS5hcHByb3hpbWF0ZVdhbGxUaW1lKCkKKyAgICB9OworfQorCiAjZW5kaWYgLy8g
UExBVEZPUk0oSU9TX0ZBTUlMWSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9Db2NvYS9XS1dlYlZpZXdJbnRlcm5hbC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0NvY29hL1dLV2ViVmlld0ludGVybmFsLmgKaW5kZXggYzA1YWQ3MjRlZDIwMzkyMWY1ZWJl
ZTQ3MTc1MTU3OTgzMzlkNjJkYi4uNjkyNjJkNzY5MDZhYjA0NGFkYjJjM2JkYmUzY2I1MDk3YWQ2
ODAzNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vi
Vmlld0ludGVybmFsLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dL
V2ViVmlld0ludGVybmFsLmgKQEAgLTY1LDYgKzY1LDEwIEBAIG5hbWVzcGFjZSBBUEkgewogY2xh
c3MgQXR0YWNobWVudDsKIH0KIAorbmFtZXNwYWNlIFdlYkNvcmUgeworZW51bSBjbGFzcyBXaGVl
bFNjcm9sbEdlc3R1cmVTdGF0ZSA6IHVpbnQ4X3Q7Cit9CisKIG5hbWVzcGFjZSBXZWJLaXQgewog
ZW51bSBjbGFzcyBDb250aW51ZVVuc2FmZUxvYWQgOiBib29sOwogY2xhc3MgSWNvbkxvYWRpbmdE
ZWxlZ2F0ZTsKQEAgLTIyOSw2ICsyMzMsOCBAQCBjbGFzcyBWaWV3R2VzdHVyZUNvbnRyb2xsZXI7
CiAgICAgQk9PTCBfaGFzU2NoZWR1bGVkVmlzaWJsZVJlY3RVcGRhdGU7CiAgICAgQk9PTCBfdmlz
aWJsZUNvbnRlbnRSZWN0VXBkYXRlU2NoZWR1bGVkRnJvbVNjcm9sbFZpZXdJblN0YWJsZVN0YXRl
OwogCisgICAgT3B0aW9uYWw8V2ViQ29yZTo6V2hlZWxTY3JvbGxHZXN0dXJlU3RhdGU+IF9jdXJy
ZW50U2Nyb2xsR2VzdHVyZVN0YXRlOworCiAgICAgX1dLRHJhZ0ludGVyYWN0aW9uUG9saWN5IF9k
cmFnSW50ZXJhY3Rpb25Qb2xpY3k7CiAKICAgICAvLyBGb3IgcmVsZWFzZS1sb2dnaW5nIGZvciA8
cmRhcjovL3Byb2JsZW0vMzkyODEyNjk+LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL2lvcy9XS1dlYlZpZXdJT1MuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9pb3MvV0tXZWJWaWV3SU9TLmgKaW5kZXggZjdlMmUzMzFkMWEyNGFkMTZmYWJhODJjNzc4MmIz
OGIxZWY0OTk1YS4uNmZhOWNiZjAyMWE5ZGNjNDM0NDk2OWNlZWM0NzcwNTE4YTNjOGM4MSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2lvcy9XS1dlYlZpZXdJT1MuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvaW9zL1dLV2ViVmlld0lPUy5oCkBAIC0y
NSw2ICsyNSw4IEBACiAKICNpbXBvcnQgIldLV2ViVmlld0ludGVybmFsLmgiCiAKK0BjbGFzcyBV
SVNjcm9sbEV2ZW50OworCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKIAogQGludGVyZmFjZSBX
S1dlYlZpZXcgKFdLVmlld0ludGVybmFsSU9TKQpAQCAtMTI1LDYgKzEyNywxMyBAQAogLSAoV2Vi
Q29yZTo6RmxvYXRTaXplKWFjdGl2ZVZpZXdMYXlvdXRTaXplOihjb25zdCBDR1JlY3QmKWJvdW5k
czsKIC0gKHZvaWQpX3VwZGF0ZVNjcm9sbFZpZXdJbnNldEFkanVzdG1lbnRCZWhhdmlvcjsKIAor
LSAoQk9PTClfZWZmZWN0aXZlQXBwZWFyYW5jZUlzRGFyazsKKy0gKEJPT0wpX2VmZmVjdGl2ZVVz
ZXJJbnRlcmZhY2VMZXZlbElzRWxldmF0ZWQ7CisKKyNpZiBIQVZFKFVJU0NST0xMVklFV19BU1lO
Q0hST05PVVNfU0NST0xMX0VWRU5UX0hBTkRMSU5HKQorLSAodm9pZClfc2Nyb2xsVmlldzooVUlT
Y3JvbGxWaWV3ICopc2Nyb2xsVmlldyBhc3luY2hyb25vdXNseUhhbmRsZVNjcm9sbEV2ZW50OihV
SVNjcm9sbEV2ZW50ICopc2Nyb2xsRXZlbnQgY29tcGxldGlvbjoodm9pZCAoXikoQk9PTCBoYW5k
bGVkKSljb21wbGV0aW9uOworI2VuZGlmCisKIEBwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25s
eSkgV0tQYXNzd29yZFZpZXcgKl9wYXNzd29yZFZpZXc7CiBAcHJvcGVydHkgKG5vbmF0b21pYywg
cmVhZG9ubHkpIFdLV2ViVmlld0NvbnRlbnRQcm92aWRlclJlZ2lzdHJ5ICpfY29udGVudFByb3Zp
ZGVyUmVnaXN0cnk7CiBAcHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHkpIFdLU2VsZWN0aW9u
R3JhbnVsYXJpdHkgX3NlbGVjdGlvbkdyYW51bGFyaXR5OwpAQCAtMTM3LDkgKzE0Niw2IEBACiBA
cHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHksIGdldHRlcj1faXNSZXRhaW5pbmdBY3RpdmVG
b2N1c2VkU3RhdGUpIEJPT0wgX3JldGFpbmluZ0FjdGl2ZUZvY3VzZWRTdGF0ZTsKIEBwcm9wZXJ0
eSAobm9uYXRvbWljLCByZWFkb25seSkgaW50MzJfdCBfZGV2aWNlT3JpZW50YXRpb247CiAKLS0g
KEJPT0wpX2VmZmVjdGl2ZUFwcGVhcmFuY2VJc0Rhcms7Ci0tIChCT09MKV9lZmZlY3RpdmVVc2Vy
SW50ZXJmYWNlTGV2ZWxJc0VsZXZhdGVkOwotCiBAZW5kCiAKICNlbmRpZiAvLyBQTEFURk9STShJ
T1NfRkFNSUxZKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2lvcy9X
S1dlYlZpZXdJT1MubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvaW9zL1dLV2ViVmll
d0lPUy5tbQppbmRleCA0Yjc2NjJhMTY0NTk0ZGU2ZTQzZmU0NDQ0OGUwOTIzN2Q3MmJlZjMyLi5m
OWVjYWM2N2FiMGFiZjVjNzAxM2U1Y2I2YzllNTU2MjZjMjI3MTliIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvaW9zL1dLV2ViVmlld0lPUy5tbQorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvaW9zL1dLV2ViVmlld0lPUy5tbQpAQCAtMjksOSArMjksMTEg
QEAKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogCiAjaW1wb3J0ICJGcm9udEJvYXJkU2Vydmlj
ZXNTUEkuaCIKKyNpbXBvcnQgIk5hdGl2ZVdlYldoZWVsRXZlbnQuaCIKICNpbXBvcnQgIk5hdmln
YXRpb25TdGF0ZS5oIgogI2ltcG9ydCAiUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94eS5o
IgogI2ltcG9ydCAiUmVtb3RlTGF5ZXJUcmVlU2Nyb2xsaW5nUGVyZm9ybWFuY2VEYXRhLmgiCisj
aW1wb3J0ICJSZW1vdGVMYXllclRyZWVWaWV3cy5oIgogI2ltcG9ydCAiUmVtb3RlU2Nyb2xsaW5n
Q29vcmRpbmF0b3JQcm94eS5oIgogI2ltcG9ydCAiVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5
LmgiCiAjaW1wb3J0ICJWaWV3R2VzdHVyZUNvbnRyb2xsZXIuaCIKQEAgLTQ3LDYgKzQ5LDcgQEAK
ICNpbXBvcnQgIldLV2ViVmlld1ByaXZhdGUuaCIKICNpbXBvcnQgIldLV2ViVmlld1ByaXZhdGVG
b3JUZXN0aW5nSU9TLmgiCiAjaW1wb3J0ICJXZWJCYWNrRm9yd2FyZExpc3QuaCIKKyNpbXBvcnQg
IldlYklPU0V2ZW50RmFjdG9yeS5oIgogI2ltcG9ydCAiV2ViUGFnZVByb3h5LmgiCiAjaW1wb3J0
ICJfV0tBY3RpdmF0ZWRFbGVtZW50SW5mb0ludGVybmFsLmgiCiAjaW1wb3J0IDxXZWJDb3JlL0dy
YXBoaWNzQ29udGV4dENHLmg+CkBAIC0xMzksNiArMTQyLDEwIEBAIC0gKHZvaWQpX3NldHVwU2Ny
b2xsQW5kQ29udGVudFZpZXdzCiAgICAgW19zY3JvbGxWaWV3IHNldEludGVybmFsRGVsZWdhdGU6
c2VsZl07CiAgICAgW19zY3JvbGxWaWV3IHNldEJvdW5jZXNab29tOllFU107CiAKKyNpZiBIQVZF
KFVJU0NST0xMVklFV19BU1lOQ0hST05PVVNfU0NST0xMX0VWRU5UX0hBTkRMSU5HKQorICAgIFtf
c2Nyb2xsVmlldyBfc2V0QWxsb3dzQXN5bmNTY3JvbGxFdmVudDpZRVNdOworI2VuZGlmCisKICAg
ICBpZiAoW19zY3JvbGxWaWV3IHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoX3NldEF2b2lk
c0p1bXBPbkludGVycnVwdGVkQm91bmNlOildKSB7CiAgICAgICAgIFtfc2Nyb2xsVmlldyBzZXRU
cmFja3NJbW1lZGlhdGVseVdoaWxlRGVjZWxlcmF0aW5nOk5PXTsKICAgICAgICAgW19zY3JvbGxW
aWV3IF9zZXRBdm9pZHNKdW1wT25JbnRlcnJ1cHRlZEJvdW5jZTpZRVNdOwpAQCAtMTU5MCw2ICsx
NTk3LDQ5IEBAIC0gKENHUG9pbnQpX3Njcm9sbFZpZXc6KFVJU2Nyb2xsVmlldyAqKXNjcm9sbFZp
ZXcgYWRqdXN0ZWRPZmZzZXRGb3JPZmZzZXQ6KENHUG9pCiAgICAgcmV0dXJuIGFkanVzdGVkQ29u
dGVudE9mZnNldDsKIH0KIAorI2lmIEhBVkUoVUlTQ1JPTExWSUVXX0FTWU5DSFJPTk9VU19TQ1JP
TExfRVZFTlRfSEFORExJTkcpCistICh2b2lkKV9zY3JvbGxWaWV3OihVSVNjcm9sbFZpZXcgKilz
Y3JvbGxWaWV3IGFzeW5jaHJvbm91c2x5SGFuZGxlU2Nyb2xsRXZlbnQ6KFVJU2Nyb2xsRXZlbnQg
KilzY3JvbGxFdmVudCBjb21wbGV0aW9uOih2b2lkICheKShCT09MIGhhbmRsZWQpKWNvbXBsZXRp
b24KK3sKKyAgICBpZiAoc2Nyb2xsRXZlbnQucGhhc2UgPT0gVUlTY3JvbGxQaGFzZU1heUJlZ2lu
KSB7CisgICAgICAgIGNvbXBsZXRpb24oTk8pOworICAgICAgICByZXR1cm47CisgICAgfQorCisg
ICAgV2ViQ29yZTo6SW50UG9pbnQgc2Nyb2xsTG9jYXRpb24gPSBXZWJDb3JlOjpyb3VuZGVkSW50
UG9pbnQoW3Njcm9sbEV2ZW50IGxvY2F0aW9uSW5WaWV3Ol9jb250ZW50Vmlldy5nZXQoKV0pOwor
ICAgIGF1dG8gZXZlbnRMaXN0ZW5lcnMgPSBXZWJLaXQ6OmV2ZW50TGlzdGVuZXJUeXBlc0F0UG9p
bnQoX2NvbnRlbnRWaWV3LmdldCgpLCBzY3JvbGxMb2NhdGlvbik7CisgICAgYm9vbCBoYXNXaGVl
bEhhbmRsZXJzID0gZXZlbnRMaXN0ZW5lcnMuY29udGFpbnMoV2ViQ29yZTo6RXZlbnRMaXN0ZW5l
clJlZ2lvblR5cGU6OldoZWVsKTsKKyAgICBpZiAoIWhhc1doZWVsSGFuZGxlcnMpIHsKKyAgICAg
ICAgY29tcGxldGlvbihOTyk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBib29sIGlz
Rmlyc3RFdmVudEluR2VzdHVyZSA9IHNjcm9sbEV2ZW50LnBoYXNlID09IFVJU2Nyb2xsUGhhc2VC
ZWdhbjsKKyAgICBpZiAoaXNGaXJzdEV2ZW50SW5HZXN0dXJlKQorICAgICAgICBfY3VycmVudFNj
cm9sbEdlc3R1cmVTdGF0ZSA9IFdURjo6bnVsbG9wdDsKKworICAgIGJvb2wgaGFzQWN0aXZlV2hl
ZWxIYW5kbGVycyA9IGV2ZW50TGlzdGVuZXJzLmNvbnRhaW5zKFdlYkNvcmU6OkV2ZW50TGlzdGVu
ZXJSZWdpb25UeXBlOjpOb25QYXNzaXZlV2hlZWwpOworICAgIGJvb2wgaXNDYW5jZWxhYmxlID0g
aGFzQWN0aXZlV2hlZWxIYW5kbGVycyAmJiAoIV9jdXJyZW50U2Nyb2xsR2VzdHVyZVN0YXRlIHx8
IF9jdXJyZW50U2Nyb2xsR2VzdHVyZVN0YXRlID09IFdlYkNvcmU6OldoZWVsU2Nyb2xsR2VzdHVy
ZVN0YXRlOjpCbG9ja2luZyk7CisgICAgYXV0byBldmVudCA9IFdlYklPU0V2ZW50RmFjdG9yeTo6
Y3JlYXRlV2ViV2hlZWxFdmVudChzY3JvbGxFdmVudCwgX2NvbnRlbnRWaWV3LmdldCgpKTsKKwor
ICAgIF9wYWdlLT5kaXNwYXRjaFdoZWVsRXZlbnRXaXRob3V0U2Nyb2xsaW5nKGV2ZW50LCBbd2Vh
a1NlbGYgPSBXZWFrT2JqQ1B0cjxXS1dlYlZpZXc+KHNlbGYpLCBzdHJvbmdDb21wbGV0aW9uID0g
bWFrZUJsb2NrUHRyKGNvbXBsZXRpb24pLCBpc0NhbmNlbGFibGUsIGlzRmlyc3RFdmVudEluR2Vz
dHVyZV0oYm9vbCBoYW5kbGVkKSB7CisgICAgICAgIGF1dG8gc3Ryb25nU2VsZiA9IHdlYWtTZWxm
LmdldCgpOworICAgICAgICBpZiAoIXN0cm9uZ1NlbGYpIHsKKyAgICAgICAgICAgIHN0cm9uZ0Nv
bXBsZXRpb24oTk8pOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAg
aWYgKGlzQ2FuY2VsYWJsZSkgeworICAgICAgICAgICAgaWYgKGlzRmlyc3RFdmVudEluR2VzdHVy
ZSkKKyAgICAgICAgICAgICAgICBzdHJvbmdTZWxmLT5fY3VycmVudFNjcm9sbEdlc3R1cmVTdGF0
ZSA9IGhhbmRsZWQgPyBXZWJDb3JlOjpXaGVlbFNjcm9sbEdlc3R1cmVTdGF0ZTo6QmxvY2tpbmcg
OiBXZWJDb3JlOjpXaGVlbFNjcm9sbEdlc3R1cmVTdGF0ZTo6Tm9uQmxvY2tpbmc7CisgICAgICAg
ICAgICBzdHJvbmdDb21wbGV0aW9uKGhhbmRsZWQpOworICAgICAgICB9CisgICAgfSk7CisKKyAg
ICBpZiAoIWlzQ2FuY2VsYWJsZSkKKyAgICAgICAgY29tcGxldGlvbihOTyk7Cit9CisjZW5kaWYg
Ly8gSEFWRShVSVNDUk9MTFZJRVdfQVNZTkNIUk9OT1VTX1NDUk9MTF9FVkVOVF9IQU5ETElORykK
KwogLSAodm9pZClzY3JvbGxWaWV3RGlkU2Nyb2xsOihVSVNjcm9sbFZpZXcgKilzY3JvbGxWaWV3
CiB7CiAgICAgaWYgKCFbc2VsZiB1c2VzU3RhbmRhcmRDb250ZW50Vmlld10gJiYgW19jdXN0b21D
b250ZW50VmlldyByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKHdlYl9zY3JvbGxWaWV3RGlk
U2Nyb2xsOildKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGFnZUNsaWVu
dC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGFnZUNsaWVudC5oCmluZGV4IGM0YzcxODc0
YTEwZGE5YjU0MWZlZTI4MjA4MDhjMWU1MGQzZmE5MmIuLmM3N2QwYTEwYTk2Yzk3MmYxMWNjYzQx
NDY2ZjJmYzI2NzM2MzgzNWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Bh
Z2VDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QYWdlQ2xpZW50LmgKQEAg
LTY0LDYgKzY0LDggQEAgT0JKQ19DTEFTUyBOU01lbnU7CiBPQkpDX0NMQVNTIE5TU2V0OwogT0JK
Q19DTEFTUyBOU1RleHRBbHRlcm5hdGl2ZXM7CiBPQkpDX0NMQVNTIFVJR2VzdHVyZVJlY29nbml6
ZXI7CitPQkpDX0NMQVNTIFVJU2Nyb2xsRXZlbnQ7CitPQkpDX0NMQVNTIFVJU2Nyb2xsVmlldzsK
IE9CSkNfQ0xBU1MgX1dLUmVtb3RlT2JqZWN0UmVnaXN0cnk7CiAKICNpZiBVU0UoQVBQS0lUKQpA
QCAtNDY2LDYgKzQ2OCwxMCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGRpc2FibGVJbnNw
ZWN0b3JOb2RlU2VhcmNoKCkgPSAwOwogCiAgICAgdmlydHVhbCB2b2lkIGhhbmRsZUF1dG9jb3Jy
ZWN0aW9uQ29udGV4dChjb25zdCBXZWJBdXRvY29ycmVjdGlvbkNvbnRleHQmKSA9IDA7CisKKyNp
ZiBIQVZFKFVJU0NST0xMVklFV19BU1lOQ0hST05PVVNfU0NST0xMX0VWRU5UX0hBTkRMSU5HKQor
ICAgIHZpcnR1YWwgdm9pZCBoYW5kbGVBc3luY2hyb25vdXNDYW5jZWxhYmxlU2Nyb2xsRXZlbnQo
VUlTY3JvbGxWaWV3ICosIFVJU2Nyb2xsRXZlbnQgKiwgdm9pZCAoXmNvbXBsZXRpb24pKEJPT0wg
aGFuZGxlZCkpID0gMDsKKyNlbmRpZgogI2VuZGlmCiAKICAgICAvLyBBdXhpbGlhcnkgQ2xpZW50
IENyZWF0aW9uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXll
clRyZWUvaW9zL1JlbW90ZUxheWVyVHJlZVZpZXdzLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9SZW1vdGVMYXllclRyZWUvaW9zL1JlbW90ZUxheWVyVHJlZVZpZXdzLmgKaW5kZXggMzNhMTQ2
MTBiOGFmYmNjOTY2Zjk4MjZlN2I0NTM2MzdhNmI5ZDU2ZS4uMmI4ZDBhYjBlZWI5MWQ0ZjFmMTE4
NjZiOTQxOTZkYTFmM2NiYWQxYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
UmVtb3RlTGF5ZXJUcmVlL2lvcy9SZW1vdGVMYXllclRyZWVWaWV3cy5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9pb3MvUmVtb3RlTGF5ZXJUcmVlVmlld3Mu
aApAQCAtNzEsNiArNzEsOCBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIE9wdGlvblNldDxXZWJDb3Jl
OjpUb3VjaEFjdGlvbj4gdG91Y2hBY3Rpb25zRm9yUG9pbnQoVUlWaWV3ICpyb290VmlldywgY29u
c3QgV2ViQ29yZTo6SW50UG9pbnQmKTsKIFVJU2Nyb2xsVmlldyAqZmluZEFjdGluZ1Njcm9sbFBh
cmVudChVSVNjcm9sbFZpZXcgKiwgY29uc3QgUmVtb3RlTGF5ZXJUcmVlSG9zdCYpOwogCitPcHRp
b25TZXQ8V2ViQ29yZTo6RXZlbnRMaXN0ZW5lclJlZ2lvblR5cGU+IGV2ZW50TGlzdGVuZXJUeXBl
c0F0UG9pbnQoVUlWaWV3ICpyb290VmlldywgY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmKTsKKwog
I2lmIEVOQUJMRShFRElUQUJMRV9SRUdJT04pCiBib29sIG1heUNvbnRhaW5FZGl0YWJsZUVsZW1l
bnRzSW5SZWN0KFVJVmlldyAqcm9vdFZpZXcsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYpOwog
I2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRy
ZWUvaW9zL1JlbW90ZUxheWVyVHJlZVZpZXdzLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
UmVtb3RlTGF5ZXJUcmVlL2lvcy9SZW1vdGVMYXllclRyZWVWaWV3cy5tbQppbmRleCAxMWJiMDFi
MzcyY2U2OTdiNmU2M2E0M2U2YTQ2ZGY4MjQzY2FkYzM4Li5hOGZhNmZmNmZhMmFkMGU3YzRhNGMz
NTNmYWE3ZWE2YThhMmQ1MjM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9S
ZW1vdGVMYXllclRyZWUvaW9zL1JlbW90ZUxheWVyVHJlZVZpZXdzLm1tCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9pb3MvUmVtb3RlTGF5ZXJUcmVlVmlld3Mu
bW0KQEAgLTIwNSw2ICsyMDUsMzYgQEAgT3B0aW9uU2V0PFdlYkNvcmU6OlRvdWNoQWN0aW9uPiB0
b3VjaEFjdGlvbnNGb3JQb2ludChVSVZpZXcgKnJvb3RWaWV3LCBjb25zdCBXZWIKICAgICByZXR1
cm4gbm9kZS0+ZXZlbnRSZWdpb24oKS50b3VjaEFjdGlvbnNGb3JQb2ludChXZWJDb3JlOjpJbnRQ
b2ludChoaXRWaWV3UG9pbnQpKTsKIH0KIAorI2lmIEVOQUJMRShXSEVFTF9FVkVOVF9SRUdJT05T
KQorT3B0aW9uU2V0PFdlYkNvcmU6OkV2ZW50TGlzdGVuZXJSZWdpb25UeXBlPiBldmVudExpc3Rl
bmVyVHlwZXNBdFBvaW50KFVJVmlldyAqcm9vdFZpZXcsIGNvbnN0IFdlYkNvcmU6OkludFBvaW50
JiBwb2ludCkKK3sKKyAgICBWZWN0b3I8VUlWaWV3ICosIDE2PiB2aWV3c0F0UG9pbnQ7CisgICAg
Y29sbGVjdERlc2NlbmRhbnRWaWV3c0F0UG9pbnQodmlld3NBdFBvaW50LCByb290VmlldywgcG9p
bnQsIG5pbCk7CisKKyAgICBpZiAodmlld3NBdFBvaW50LmlzRW1wdHkoKSkKKyAgICAgICAgcmV0
dXJuIHsgfTsKKworICAgIFVJVmlldyAqaGl0VmlldyA9IG5pbDsKKyAgICBmb3IgKGF1dG8gKnZp
ZXcgOiBXVEY6Om1ha2VSZXZlcnNlZFJhbmdlKHZpZXdzQXRQb2ludCkpIHsKKyAgICAgICAgaWYg
KFt2aWV3IGlzS2luZE9mQ2xhc3M6W1dLQ29tcG9zaXRpbmdWaWV3IGNsYXNzXV0pIHsKKyAgICAg
ICAgICAgIGhpdFZpZXcgPSB2aWV3OworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAg
ICB9CisKKyAgICBpZiAoIWhpdFZpZXcpCisgICAgICAgIHJldHVybiB7IH07CisKKyAgICBDR1Bv
aW50IGhpdFZpZXdQb2ludCA9IFtoaXRWaWV3IGNvbnZlcnRQb2ludDpwb2ludCBmcm9tVmlldzpy
b290Vmlld107CisKKyAgICBhdXRvKiBub2RlID0gUmVtb3RlTGF5ZXJUcmVlTm9kZTo6Zm9yQ0FM
YXllcihoaXRWaWV3LmxheWVyKTsKKyAgICBpZiAoIW5vZGUpCisgICAgICAgIHJldHVybiB7IH07
CisKKyAgICByZXR1cm4gbm9kZS0+ZXZlbnRSZWdpb24oKS5ldmVudExpc3RlbmVyUmVnaW9uVHlw
ZXNGb3JQb2ludChXZWJDb3JlOjpJbnRQb2ludChoaXRWaWV3UG9pbnQpKTsKK30KKyNlbmRpZgor
CiBVSVNjcm9sbFZpZXcgKmZpbmRBY3RpbmdTY3JvbGxQYXJlbnQoVUlTY3JvbGxWaWV3ICpzY3Jv
bGxWaWV3LCBjb25zdCBSZW1vdGVMYXllclRyZWVIb3N0JiBob3N0KQogewogICAgIEhhc2hTZXQ8
V2ViQ29yZTo6R3JhcGhpY3NMYXllcjo6UGxhdGZvcm1MYXllcklEPiBzY3JvbGxlcnNUb1NraXA7
CkBAIC00MDQsNiArNDM0LDEwIEBAIC0gKGluc3RhbmNldHlwZSlpbml0V2l0aEZyYW1lOihDR1Jl
Y3QpZnJhbWUKICAgICBzZWxmLmNvbnRlbnRJbnNldEFkanVzdG1lbnRCZWhhdmlvciA9IFVJU2Ny
b2xsVmlld0NvbnRlbnRJbnNldEFkanVzdG1lbnROZXZlcjsKICNlbmRpZgogCisjaWYgSEFWRShV
SVNDUk9MTFZJRVdfQVNZTkNIUk9OT1VTX1NDUk9MTF9FVkVOVF9IQU5ETElORykKKyAgICBbc2Vs
ZiBfc2V0QWxsb3dzQXN5bmNTY3JvbGxFdmVudDpZRVNdOworI2VuZGlmCisKICAgICByZXR1cm4g
c2VsZjsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5
ZXJUcmVlL2lvcy9TY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlSU9TLmggYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvaW9zL1Njcm9sbGluZ1RyZWVTY3Jv
bGxpbmdOb2RlRGVsZWdhdGVJT1MuaAppbmRleCAzMTA1MDJjOGE2NDRjZGZmOGM1ZjMyNjgyZDcw
MzRlZWFlMjExNWFkLi5mYjI3MGE5YTMyYzRkYzIzYjE2MzEzNWM1NGU2NDQzMWU2YzEzMzAwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvaW9zL1Nj
cm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVJT1MuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvaW9zL1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2Rl
RGVsZWdhdGVJT1MuaApAQCAtNjUsNiArNjUsMTAgQEAgcHVibGljOgogCiAgICAgdm9pZCByZXBv
c2l0aW9uU2Nyb2xsaW5nTGF5ZXJzKCk7CiAKKyNpZiBIQVZFKFVJU0NST0xMVklFV19BU1lOQ0hS
T05PVVNfU0NST0xMX0VWRU5UX0hBTkRMSU5HKQorICAgIHZvaWQgaGFuZGxlQXN5bmNocm9ub3Vz
Q2FuY2VsYWJsZVNjcm9sbEV2ZW50KFVJU2Nyb2xsVmlldyAqLCBVSVNjcm9sbEV2ZW50ICosIHZv
aWQgKF5jb21wbGV0aW9uKShCT09MIGhhbmRsZWQpKTsKKyNlbmRpZgorCiAgICAgT3B0aW9uU2V0
PFdlYkNvcmU6OlRvdWNoQWN0aW9uPiBhY3RpdmVUb3VjaEFjdGlvbnMoKSBjb25zdCB7IHJldHVy
biBtX2FjdGl2ZVRvdWNoQWN0aW9uczsgfQogICAgIHZvaWQgY29tcHV0ZUFjdGl2ZVRvdWNoQWN0
aW9uc0Zvckdlc3R1cmVSZWNvZ25pemVyKFVJR2VzdHVyZVJlY29nbml6ZXIqKTsKICAgICB2b2lk
IGNsZWFyQWN0aXZlVG91Y2hBY3Rpb25zKCkgeyBtX2FjdGl2ZVRvdWNoQWN0aW9ucyA9IHsgfTsg
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL2lv
cy9TY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlSU9TLm1tIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL2lvcy9TY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9k
ZURlbGVnYXRlSU9TLm1tCmluZGV4IGFiMzc0NzIwYTMyODQ3ZjdlNWNjNTdiYmM1Nzk3NGQxZTMw
NDY1MGYuLmRmYmY3YTRkYmNkM2UwNWE3N2ZkNTFkMjIzMDBlNjYyMDM4ZWZiODcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9pb3MvU2Nyb2xsaW5n
VHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZUlPUy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9SZW1vdGVMYXllclRyZWUvaW9zL1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdh
dGVJT1MubW0KQEAgLTE3Niw2ICsxNzYsMTMgQEAgLSAoQ0dQb2ludClfc2Nyb2xsVmlldzooVUlT
Y3JvbGxWaWV3ICopc2Nyb2xsVmlldyBhZGp1c3RlZE9mZnNldEZvck9mZnNldDooQ0dQb2kKICAg
ICByZXR1cm4gYWRqdXN0ZWRDb250ZW50T2Zmc2V0OwogfQogCisjaWYgSEFWRShVSVNDUk9MTFZJ
RVdfQVNZTkNIUk9OT1VTX1NDUk9MTF9FVkVOVF9IQU5ETElORykKKy0gKHZvaWQpX3Njcm9sbFZp
ZXc6KFVJU2Nyb2xsVmlldyAqKXNjcm9sbFZpZXcgYXN5bmNocm9ub3VzbHlIYW5kbGVTY3JvbGxF
dmVudDooVUlTY3JvbGxFdmVudCAqKXNjcm9sbEV2ZW50IGNvbXBsZXRpb246KHZvaWQgKF4pKEJP
T0wgaGFuZGxlZCkpY29tcGxldGlvbgoreworICAgIF9zY3JvbGxpbmdUcmVlTm9kZURlbGVnYXRl
LT5oYW5kbGVBc3luY2hyb25vdXNDYW5jZWxhYmxlU2Nyb2xsRXZlbnQoc2Nyb2xsVmlldywgc2Ny
b2xsRXZlbnQsIGNvbXBsZXRpb24pOworfQorI2VuZGlmCisKIC0gKHZvaWQpc2Nyb2xsVmlld1dp
bGxCZWdpblpvb21pbmc6KFVJU2Nyb2xsVmlldyAqKXNjcm9sbFZpZXcgd2l0aFZpZXc6KFVJVmll
dyAqKXZpZXcKIHsKICAgICBbc2VsZiBjYW5jZWxQb2ludGVyc0Zvckdlc3R1cmVSZWNvZ25pemVy
OnNjcm9sbFZpZXcucGluY2hHZXN0dXJlUmVjb2duaXplcl07CkBAIC0yOTgsNiArMzA1LDE0IEBA
IHZvaWQgU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZUlPUzo6Y29tbWl0U3RhdGVB
ZnRlckNoaWxkcmVuKGNvbnN0IFNjcm9sCiAgICAgfQogfQogCisjaWYgSEFWRShVSVNDUk9MTFZJ
RVdfQVNZTkNIUk9OT1VTX1NDUk9MTF9FVkVOVF9IQU5ETElORykKK3ZvaWQgU2Nyb2xsaW5nVHJl
ZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZUlPUzo6aGFuZGxlQXN5bmNocm9ub3VzQ2FuY2VsYWJsZVNj
cm9sbEV2ZW50KFVJU2Nyb2xsVmlldyAqc2Nyb2xsVmlldywgVUlTY3JvbGxFdmVudCAqc2Nyb2xs
RXZlbnQsIHZvaWQgKF5jb21wbGV0aW9uKShCT09MIGhhbmRsZWQpKQoreworICAgIGF1dG8mIHNj
cm9sbGluZ0Nvb3JkaW5hdG9yUHJveHkgPSBkb3duY2FzdDxXZWJLaXQ6OlJlbW90ZVNjcm9sbGlu
Z1RyZWU+KHNjcm9sbGluZ1RyZWUoKSkuc2Nyb2xsaW5nQ29vcmRpbmF0b3JQcm94eSgpOworICAg
IHNjcm9sbGluZ0Nvb3JkaW5hdG9yUHJveHkud2ViUGFnZVByb3h5KCkucGFnZUNsaWVudCgpLmhh
bmRsZUFzeW5jaHJvbm91c0NhbmNlbGFibGVTY3JvbGxFdmVudChzY3JvbGxWaWV3LCBzY3JvbGxF
dmVudCwgY29tcGxldGlvbik7Cit9CisjZW5kaWYKKwogdm9pZCBTY3JvbGxpbmdUcmVlU2Nyb2xs
aW5nTm9kZURlbGVnYXRlSU9TOjpyZXBvc2l0aW9uU2Nyb2xsaW5nTGF5ZXJzKCkKIHsKICAgICBC
RUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdl
UHJveHkuY3BwCmluZGV4IGNjMWJiYjRhNGFhYjgyZDExZGM2NmFjMmU0MWFmY2FmZTBjZTc4ODMu
LmIyOTk2YmVhYmM5NTk4NGZiOThlNDRlNWU2YjJhMDU1YTM3OTc2ZGUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcApAQCAtMjYzNyw2ICsyNjM3LDExIEBAIHZvaWQg
V2ViUGFnZVByb3h5OjpmbHVzaFBlbmRpbmdNb3VzZUV2ZW50Q2FsbGJhY2tzKCkKICAgICBtX2Nh
bGxiYWNrSGFuZGxlcnNBZnRlclByb2Nlc3NpbmdQZW5kaW5nTW91c2VFdmVudHMuY2xlYXIoKTsK
IH0KIAordm9pZCBXZWJQYWdlUHJveHk6OmRpc3BhdGNoV2hlZWxFdmVudFdpdGhvdXRTY3JvbGxp
bmcoY29uc3QgV2ViV2hlZWxFdmVudCYgZXZlbnQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9v
bCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgc2VuZFdpdGhBc3luY1JlcGx5KE1lc3Nh
Z2VzOjpXZWJQYWdlOjpEaXNwYXRjaFdoZWVsRXZlbnRXaXRob3V0U2Nyb2xsaW5nKGV2ZW50KSwg
V1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOworfQorCiB2b2lkIFdlYlBhZ2VQcm94eTo6aGFu
ZGxlV2hlZWxFdmVudChjb25zdCBOYXRpdmVXZWJXaGVlbEV2ZW50JiBldmVudCkKIHsKICNpZiBF
TkFCTEUoQVNZTkNfU0NST0xMSU5HKSAmJiBQTEFURk9STShDT0NPQSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViUGFnZVByb3h5LmgKaW5kZXggOThlODYzNmU4ZWI2MGNkNGEwNGJiMDhhOGY5ZjEw
YmY3OTliMmI3ZS4uZjEyZmFkNDY5YzhlYWNhMzBmOTVhZjRmNzBiMTM5Njg5MzYwZDNlMiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKQEAgLTE4MzUsNiArMTgzNSw4IEBA
IHB1YmxpYzoKICAgICB2b2lkIGNyZWF0ZUFwcEhpZ2hsaWdodEluU2VsZWN0ZWRSYW5nZShDcmVh
dGVOZXdHcm91cEZvckhpZ2hsaWdodCk7CiAjZW5kaWYKIAorICAgIHZvaWQgZGlzcGF0Y2hXaGVl
bEV2ZW50V2l0aG91dFNjcm9sbGluZyhjb25zdCBXZWJXaGVlbEV2ZW50JiwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChib29sKT4mJik7CisKIHByaXZhdGU6CiAgICAgV2ViUGFnZVByb3h5KFBhZ2VD
bGllbnQmLCBXZWJQcm9jZXNzUHJveHkmLCBSZWY8QVBJOjpQYWdlQ29uZmlndXJhdGlvbj4mJik7
CiAgICAgdm9pZCBwbGF0Zm9ybUluaXRpYWxpemUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5oIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLmgKaW5kZXggYmUwMzAxZmI3Y2IxOGJhYzdjZGUz
OTBlZDNjZjFhODU1NWI5OGQ3ZC4uOGZkOGRjMzU4ZDMzMTkxZWMzNjYxY2YyYThmZTRjZDc0Yjc3
MTVlNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJ
bXBsSU9TLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBs
SU9TLmgKQEAgLTI3MSw2ICsyNzEsMTAgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgc2hvd0RpY3Rh
dGlvbkFsdGVybmF0aXZlVUkoY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiwgV2ViQ29yZTo6RGlj
dGF0aW9uQ29udGV4dCkgZmluYWw7CiAKKyNpZiBIQVZFKFVJU0NST0xMVklFV19BU1lOQ0hST05P
VVNfU0NST0xMX0VWRU5UX0hBTkRMSU5HKQorICAgIHZvaWQgaGFuZGxlQXN5bmNocm9ub3VzQ2Fu
Y2VsYWJsZVNjcm9sbEV2ZW50KFVJU2Nyb2xsVmlldyAqLCBVSVNjcm9sbEV2ZW50ICosIHZvaWQg
KF5jb21wbGV0aW9uKShCT09MIGhhbmRsZWQpKSBmaW5hbDsKKyNlbmRpZgorCiAgICAgV2Vha09i
akNQdHI8V0tDb250ZW50Vmlldz4gbV9jb250ZW50VmlldzsKICAgICBSZXRhaW5QdHI8V0tFZGl0
b3JVbmRvVGFyZ2V0PiBtX3VuZG9UYXJnZXQ7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLm1tIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLm1tCmluZGV4IGI2YWI5NjJiNzMzNDM5MjMyYmY3
ZGQ5MmM5NmE2YjIxMmMxYTg2ZDIuLjQxYmM1NzRhMmNmNTExN2I0NDUzZDJlZWZmOWYxMzVmNDBj
NmE3ZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50
SW1wbElPUy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvUGFnZUNsaWVudElt
cGxJT1MubW0KQEAgLTk2MSw2ICs5NjEsMTMgQEAgdm9pZCBQYWdlQ2xpZW50SW1wbDo6c2V0TW91
c2VFdmVudFBvbGljeShXZWJDb3JlOjpNb3VzZUV2ZW50UG9saWN5IHBvbGljeSkKICNlbmRpZgog
fQogCisjaWYgSEFWRShVSVNDUk9MTFZJRVdfQVNZTkNIUk9OT1VTX1NDUk9MTF9FVkVOVF9IQU5E
TElORykKK3ZvaWQgUGFnZUNsaWVudEltcGw6OmhhbmRsZUFzeW5jaHJvbm91c0NhbmNlbGFibGVT
Y3JvbGxFdmVudChVSVNjcm9sbFZpZXcgKnNjcm9sbFZpZXcsIFVJU2Nyb2xsRXZlbnQgKnNjcm9s
bEV2ZW50LCB2b2lkICheY29tcGxldGlvbikoQk9PTCBoYW5kbGVkKSkKK3sKKyAgICBbbV93ZWJW
aWV3IF9zY3JvbGxWaWV3OnNjcm9sbFZpZXcgYXN5bmNocm9ub3VzbHlIYW5kbGVTY3JvbGxFdmVu
dDpzY3JvbGxFdmVudCBjb21wbGV0aW9uOmNvbXBsZXRpb25dOworfQorI2VuZGlmCisKIH0gLy8g
bmFtZXNwYWNlIFdlYktpdAogCiAjZW5kaWYgLy8gUExBVEZPUk0oSU9TX0ZBTUlMWSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKaW5kZXggYzQ0NjM4ZmVk
N2JkMzhkNjFlOTY2Y2NmZTAzNDEyNjM0NjQyNmNmYi4uODZhM2QyOTYxMDdjOTViYTk2NDViZjUy
MWE5ZWZlMWM2NDEwNTk2NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViUGFnZS5jcHAKQEAgLTI4NjQsNyArMjg2NCw3IEBAIHN0YXRpYyBib29sIGhhbmRsZVdoZWVs
RXZlbnQoY29uc3QgV2ViV2hlZWxFdmVudCYgd2hlZWxFdmVudCwgUGFnZSogcGFnZSwgT3B0aW9u
CiAgICAgcmV0dXJuIHBhZ2UtPnVzZXJJbnB1dEJyaWRnZSgpLmhhbmRsZVdoZWVsRXZlbnQocGxh
dGZvcm1XaGVlbEV2ZW50LCBwcm9jZXNzaW5nU3RlcHMpOwogfQogCi12b2lkIFdlYlBhZ2U6Ondo
ZWVsRXZlbnQoY29uc3QgV2ViV2hlZWxFdmVudCYgd2hlZWxFdmVudCwgT3B0aW9uU2V0PFdoZWVs
RXZlbnRQcm9jZXNzaW5nU3RlcHM+IHByb2Nlc3NpbmdTdGVwcykKK2Jvb2wgV2ViUGFnZTo6d2hl
ZWxFdmVudChjb25zdCBXZWJXaGVlbEV2ZW50JiB3aGVlbEV2ZW50LCBPcHRpb25TZXQ8V2hlZWxF
dmVudFByb2Nlc3NpbmdTdGVwcz4gcHJvY2Vzc2luZ1N0ZXBzKQogewogICAgIG1fdXNlckFjdGl2
aXR5LmltcHVsc2UoKTsKIApAQCAtMjg3NCw2ICsyODc0LDIwIEBAIHZvaWQgV2ViUGFnZTo6d2hl
ZWxFdmVudChjb25zdCBXZWJXaGVlbEV2ZW50JiB3aGVlbEV2ZW50LCBPcHRpb25TZXQ8V2hlZWxF
dmVudFByCiAKICAgICBpZiAocHJvY2Vzc2luZ1N0ZXBzLmNvbnRhaW5zKFdoZWVsRXZlbnRQcm9j
ZXNzaW5nU3RlcHM6Ok1haW5UaHJlYWRGb3JTY3JvbGxpbmcpKQogICAgICAgICBzZW5kKE1lc3Nh
Z2VzOjpXZWJQYWdlUHJveHk6OkRpZFJlY2VpdmVFdmVudChzdGF0aWNfY2FzdDx1aW50MzJfdD4o
d2hlZWxFdmVudC50eXBlKCkpLCBoYW5kbGVkKSk7CisKKyAgICByZXR1cm4gaGFuZGxlZDsKK30K
Kwordm9pZCBXZWJQYWdlOjpkaXNwYXRjaFdoZWVsRXZlbnRXaXRob3V0U2Nyb2xsaW5nKGNvbnN0
IFdlYldoZWVsRXZlbnQmIHdoZWVsRXZlbnQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+
JiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisjaWYgRU5BQkxFKEtJTkVUSUNfU0NST0xMSU5HKQor
ICAgIGF1dG8gZ2VzdHVyZVN0YXRlID0gbV9wYWdlLT5tYWluRnJhbWUoKS5ldmVudEhhbmRsZXIo
KS53aGVlbFNjcm9sbEdlc3R1cmVTdGF0ZSgpOworICAgIGJvb2wgaXNDYW5jZWxhYmxlID0gIWdl
c3R1cmVTdGF0ZSB8fCBnZXN0dXJlU3RhdGUgPT0gV2hlZWxTY3JvbGxHZXN0dXJlU3RhdGU6OkJs
b2NraW5nOworI2Vsc2UKKyAgICBib29sIGlzQ2FuY2VsYWJsZSA9IHRydWU7CisjZW5kaWYKKyAg
ICBib29sIGhhbmRsZWQgPSB0aGlzLT53aGVlbEV2ZW50KHdoZWVsRXZlbnQsIHsgaXNDYW5jZWxh
YmxlID8gV2hlZWxFdmVudFByb2Nlc3NpbmdTdGVwczo6TWFpblRocmVhZEZvckJsb2NraW5nRE9N
RXZlbnREaXNwYXRjaCA6IFdoZWVsRXZlbnRQcm9jZXNzaW5nU3RlcHM6Ok1haW5UaHJlYWRGb3JO
b25CbG9ja2luZ0RPTUV2ZW50RGlzcGF0Y2ggfSk7CisgICAgY29tcGxldGlvbkhhbmRsZXIoaGFu
ZGxlZCk7CiB9CiAKIHN0YXRpYyBib29sIGhhbmRsZUtleUV2ZW50KGNvbnN0IFdlYktleWJvYXJk
RXZlbnQmIGtleWJvYXJkRXZlbnQsIFBhZ2UqIHBhZ2UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUGFnZS9XZWJQYWdlLmgKaW5kZXggZTA0ZTNhOGIyZDE3OGNjODQ5NWQ0NWJhZjgxZjM3
ZGFlZmJiN2I3MC4uMDdhOTZmMzkxOTk2NTFhZWM4NzA1ZWI1MWZhMDE4ZDE3MDljY2JlYiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaApAQCAtMTAxMyw3ICsx
MDEzLDcgQEAgcHVibGljOgogICAgIHZvaWQgY29udGV4dE1lbnVTaG93aW5nKCkgeyBtX2lzU2hv
d2luZ0NvbnRleHRNZW51ID0gdHJ1ZTsgfQogI2VuZGlmCiAKLSAgICB2b2lkIHdoZWVsRXZlbnQo
Y29uc3QgV2ViV2hlZWxFdmVudCYsIE9wdGlvblNldDxXZWJDb3JlOjpXaGVlbEV2ZW50UHJvY2Vz
c2luZ1N0ZXBzPik7CisgICAgYm9vbCB3aGVlbEV2ZW50KGNvbnN0IFdlYldoZWVsRXZlbnQmLCBP
cHRpb25TZXQ8V2ViQ29yZTo6V2hlZWxFdmVudFByb2Nlc3NpbmdTdGVwcz4pOwogCiAgICAgdm9p
ZCB3aGVlbEV2ZW50SGFuZGxlcnNDaGFuZ2VkKGJvb2wpOwogICAgIHZvaWQgcmVjb21wdXRlU2hv
cnRDaXJjdWl0SG9yaXpvbnRhbFdoZWVsRXZlbnRzU3RhdGUoKTsKQEAgLTEzNzEsNiArMTM3MSw4
IEBAIHB1YmxpYzoKICAgICBib29sIGNyZWF0ZUFwcEhpZ2hsaWdodEluU2VsZWN0ZWRSYW5nZShD
cmVhdGVOZXdHcm91cEZvckhpZ2hsaWdodCk7CiAjZW5kaWYKIAorICAgIHZvaWQgZGlzcGF0Y2hX
aGVlbEV2ZW50V2l0aG91dFNjcm9sbGluZyhjb25zdCBXZWJXaGVlbEV2ZW50JiwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChib29sKT4mJik7CisKIHByaXZhdGU6CiAgICAgV2ViUGFnZShXZWJDb3Jl
OjpQYWdlSWRlbnRpZmllciwgV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycyYmKTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5p
biBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4K
aW5kZXggODY0YzZlODE5YWM2OWMyMDFhZjQ2ZmQ1MGM2YWUyZDY1Zjg0Y2NmOS4uY2Q0OWY3NmRl
MmUxNzNhN2I5ZjAzZjUyM2QyYzE0MDdiZTM2MzVlYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCkBAIC02MjEsNCArNjIx
LDUgQEAgR2VuZXJhdGVTeW50aGV0aWNFZGl0aW5nQ29tbWFuZChlbnVtOnVpbnQ4X3QgV2ViS2l0
OjpTeW50aGV0aWNFZGl0aW5nQ29tbWFuZFR5cGUKICAgICBDcmVhdGVBcHBIaWdobGlnaHRJblNl
bGVjdGVkUmFuZ2UoZW51bTpib29sIFdlYktpdDo6Q3JlYXRlTmV3R3JvdXBGb3JIaWdobGlnaHQg
Y3JlYXRlTmV3R3JvdXApCiAjZW5kaWYKIAorICAgIERpc3BhdGNoV2hlZWxFdmVudFdpdGhvdXRT
Y3JvbGxpbmcoV2ViS2l0OjpXZWJXaGVlbEV2ZW50IGV2ZW50KSAtPiAoYm9vbCBoYW5kbGVkKSBB
c3luYwogfQpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmlu
ZGV4IDQwNDU1N2VjNGQ3ZDJlOGY1ZTAwYzc2MDNlOTM4N2NjY2RhYTZmM2EuLjY3ZjU2MjZlMzQ0
MzA2NDEyYWY4YWNlYTViZjQxMjQ1Mzc5ODExMjEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxv
ZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMiBAQAorMjAyMC0xMi0xMCAgVGlt
IEhvcnRvbiAgPHRpbW90aHlfaG9ydG9uQGFwcGxlLmNvbT4KKworICAgICAgICBUcmFja3BhZCBh
bmQgTW91c2Ugc2Nyb2xsIGV2ZW50cyBvbiBpUGFkIG9ubHkgZmlyZSAicG9pbnRlcm1vdmUiIC0t
IG5vdCAid2hlZWwiCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0yMTAwNzEKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzU0NjE2ODUzPgorCisgICAgICAg
IFJldmlld2VkIGJ5IFNpbW9uIEZyYXNlci4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVz
dHMvaW9zL1dLU2Nyb2xsVmlld1Rlc3RzLm1tOgorICAgICAgICAoLVtXS1VJU2Nyb2xsRXZlbnQg
aW5pdFdpdGhQaGFzZTpsb2NhdGlvbjpkZWx0YTpdKToKKyAgICAgICAgKC1bV0tVSVNjcm9sbEV2
ZW50IHBoYXNlXSk6CisgICAgICAgICgtW1dLVUlTY3JvbGxFdmVudCBsb2NhdGlvbkluVmlldzpd
KToKKyAgICAgICAgKC1bV0tVSVNjcm9sbEV2ZW50IF9hZGp1c3RlZEFjY2VsZXJhdGVkRGVsdGFJ
blZpZXc6XSk6CisgICAgICAgIChURVNUKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL2lvcy9V
SUtpdFNQSS5oOgorICAgICAgICBBZGQgYSB2ZXJ5IHNpbXBsZSB0ZXN0IHRoYXQgZGlyZWN0bHkg
Y2FsbHMgdGhlIG5ldyBVSVNjcm9sbFZpZXdEZWxlZ2F0ZSBTUEkKKyAgICAgICAgYW5kIHZlcmlm
aWVzIHRoYXQgb25seSB0aGUgZmlyc3QgZXZlbnQgaXMgY2FuY2VsYWJsZSAodW5sZXNzIHRoZSBm
aXJzdCBldmVudAorICAgICAgICBpcyBjYW5jZWxlZCwgaW4gd2hpY2ggY2FzZSBhbGwgc3Vic2Vx
dWVudCBldmVudHMgYXJlIGNhbmNlbGFibGUpLgorCiAyMDIwLTEyLTAzICBBbGV4IENocmlzdGVu
c2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CiAKICAgICAgICAgSW50cm9kdWNlIG5ldyBk
b3dubG9hZCBTUEkKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvaW9zL1dL
U2Nyb2xsVmlld1Rlc3RzLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9pb3MvV0tTY3Jv
bGxWaWV3VGVzdHMubW0KaW5kZXggMGUyYTFjOWVjNTE5YzdkZGRhNTZhMTlhYjRhMDE1NzhkNTBl
NWVkNi4uODFkYmFiNGZhNjQxMjY5YTk4N2EzYmU2ZTNhMDFmODAzODZiZDhhYSAxMDA2NDQKLS0t
IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9pb3MvV0tTY3JvbGxWaWV3VGVzdHMubW0KKysr
IGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9pb3MvV0tTY3JvbGxWaWV3VGVzdHMubW0KQEAg
LTI5LDggKzI5LDUzIEBACiAKICNpbXBvcnQgIlBsYXRmb3JtVXRpbGl0aWVzLmgiCiAjaW1wb3J0
ICJUZXN0V0tXZWJWaWV3LmgiCisjaW1wb3J0ICJVSUtpdFNQSS5oIgogI2ltcG9ydCA8V2ViS2l0
L1dLV2ViVmlld1ByaXZhdGUuaD4KIAorI2lmIEhBVkUoVUlTQ1JPTExWSUVXX0FTWU5DSFJPTk9V
U19TQ1JPTExfRVZFTlRfSEFORExJTkcpCitAaW50ZXJmYWNlIFdLVUlTY3JvbGxFdmVudCA6IFVJ
U2Nyb2xsRXZlbnQKKworLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoUGhhc2U6KFVJU2Nyb2xsUGhh
c2UpcGhhc2UgbG9jYXRpb246KENHUG9pbnQpbG9jYXRpb24gZGVsdGE6KENHVmVjdG9yKWRlbHRh
OworCitAZW5kCisKK0BpbXBsZW1lbnRhdGlvbiBXS1VJU2Nyb2xsRXZlbnQgeworICAgIFVJU2Ny
b2xsUGhhc2UgX3BoYXNlOworICAgIENHUG9pbnQgX2xvY2F0aW9uOworICAgIENHVmVjdG9yIF9k
ZWx0YTsKK30KKworLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoUGhhc2U6KFVJU2Nyb2xsUGhhc2Up
cGhhc2UgbG9jYXRpb246KENHUG9pbnQpbG9jYXRpb24gZGVsdGE6KENHVmVjdG9yKWRlbHRhCit7
CisgICAgc2VsZiA9IFtzdXBlciBpbml0XTsKKyAgICBpZiAoIXNlbGYpCisgICAgICAgIHJldHVy
biBuaWw7CisKKyAgICBfcGhhc2UgPSBwaGFzZTsKKyAgICBfbG9jYXRpb24gPSBsb2NhdGlvbjsK
KyAgICBfZGVsdGEgPSBkZWx0YTsKKworICAgIHJldHVybiBzZWxmOworfQorCistIChVSVNjcm9s
bFBoYXNlKXBoYXNlCit7CisgICAgcmV0dXJuIF9waGFzZTsKK30KKworLSAoQ0dQb2ludClsb2Nh
dGlvbkluVmlldzooVUlWaWV3ICopdmlldworeworICAgIHJldHVybiBfbG9jYXRpb247Cit9CisK
Ky0gKENHVmVjdG9yKV9hZGp1c3RlZEFjY2VsZXJhdGVkRGVsdGFJblZpZXc6KFVJVmlldyAqKXZp
ZXcKK3sKKyAgICByZXR1cm4gX2RlbHRhOworfQorCitAZW5kCisjZW5kaWYgLy8gSEFWRShVSVND
Uk9MTFZJRVdfQVNZTkNIUk9OT1VTX1NDUk9MTF9FVkVOVF9IQU5ETElORykKKwogc3RhdGljIHZv
aWQgdHJhdmVyc2VMYXllclRyZWUoQ0FMYXllciAqbGF5ZXIsIHZvaWQoXmJsb2NrKShDQUxheWVy
ICopKQogewogICAgIGZvciAoQ0FMYXllciAqY2hpbGQgaW4gbGF5ZXIuc3VibGF5ZXJzKQpAQCAt
NzEsNCArMTE2LDg2IEBAIFRFU1QoV0tTY3JvbGxWaWV3VGVzdHMsIFBvc2l0aW9uRml4ZWRMYXll
ckFmdGVyU2Nyb2xsaW5nKQogICAgIEVYUEVDVF9UUlVFKGZvdW5kTGF5ZXJGb3JGaXhlZE5hdmln
YXRpb25CYXIpOwogfQogCisjaWYgSEFWRShVSVNDUk9MTFZJRVdfQVNZTkNIUk9OT1VTX1NDUk9M
TF9FVkVOVF9IQU5ETElORykKK1RFU1QoV0tTY3JvbGxWaWV3VGVzdHMsIEFzeW5jaHJvbm91c1do
ZWVsRXZlbnRIYW5kbGluZykKK3sKKyAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbVGVzdFdL
V2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpDR1JlY3RNYWtlKDAsIDAsIDMyMCwgNTAwKV0p
OworICAgIFt3ZWJWaWV3IHN5bmNocm9ub3VzbHlMb2FkSFRNTFN0cmluZzpAIiIKKyAgICAgICAg
IjxzdHlsZT4jaGFuZGxlciB7IHdpZHRoOiAyMDBweDsgaGVpZ2h0OiAyMDBweDsgfTwvc3R5bGU+
IgorICAgICAgICAiPGRpdiBpZD0naGFuZGxlcic+PC9kaXY+IgorICAgICAgICAiPHNjcmlwdD53
aW5kb3cucHJldmVudERlZmF1bHRPblNjcm9sbEV2ZW50cyA9IGZhbHNlOyIKKyAgICAgICAgImRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKCdoYW5kbGVyJykuYWRkRXZlbnRMaXN0ZW5lcignd2hlZWwn
LCAiCisgICAgICAgICJmdW5jdGlvbiAoZSkgeyIKKyAgICAgICAgIiAgIHdpbmRvdy5sYXN0V2hl
ZWxFdmVudCA9IGU7IgorICAgICAgICAiICAgaWYgKHdpbmRvdy5wcmV2ZW50RGVmYXVsdE9uU2Ny
b2xsRXZlbnRzKSIKKyAgICAgICAgIiAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7IgorICAgICAg
ICAifSk8L3NjcmlwdD4iXTsKKyAgICBbd2ViVmlldyB3YWl0Rm9yTmV4dFByZXNlbnRhdGlvblVw
ZGF0ZV07CisKKyAgICBfX2Jsb2NrIGJvb2wgZG9uZTsKKyAgICBfX2Jsb2NrIGJvb2wgd2FzSGFu
ZGxlZDsKKworICAgIGF1dG8gc3luY2hyb25vdXNseUhhbmRsZVNjcm9sbEV2ZW50ID0gXihVSVNj
cm9sbFBoYXNlIHBoYXNlLCBDR1BvaW50IGxvY2F0aW9uLCBDR1ZlY3RvciBkZWx0YSkgeworICAg
ICAgICBkb25lID0gZmFsc2U7CisgICAgICAgIGF1dG8gZXZlbnQgPSBhZG9wdE5TKFtbV0tVSVNj
cm9sbEV2ZW50IGFsbG9jXSBpbml0V2l0aFBoYXNlOnBoYXNlIGxvY2F0aW9uOmxvY2F0aW9uIGRl
bHRhOmRlbHRhXSk7CisgICAgICAgIFt3ZWJWaWV3IF9zY3JvbGxWaWV3Olt3ZWJWaWV3IHNjcm9s
bFZpZXddIGFzeW5jaHJvbm91c2x5SGFuZGxlU2Nyb2xsRXZlbnQ6ZXZlbnQuZ2V0KCkgY29tcGxl
dGlvbjpeKEJPT0wgaGFuZGxlZCkgeworICAgICAgICAgICAgd2FzSGFuZGxlZCA9IGhhbmRsZWQ7
CisgICAgICAgICAgICBkb25lID0gdHJ1ZTsKKyAgICAgICAgfV07CisgICAgICAgIFRlc3RXZWJL
aXRBUEk6OlV0aWw6OnJ1bigmZG9uZSk7CisgICAgfTsKKworICAgIC8vIERvbid0IHByZXZlbnRE
ZWZhdWx0KCkgYXQgYWxsLgorICAgIHN5bmNocm9ub3VzbHlIYW5kbGVTY3JvbGxFdmVudChVSVNj
cm9sbFBoYXNlTWF5QmVnaW4sIENHUG9pbnRNYWtlKDEwMCwgMTAwKSwgQ0dWZWN0b3JNYWtlKDAs
IDApKTsKKyAgICBFWFBFQ1RfRkFMU0Uod2FzSGFuZGxlZCk7CisgICAgc3luY2hyb25vdXNseUhh
bmRsZVNjcm9sbEV2ZW50KFVJU2Nyb2xsUGhhc2VCZWdhbiwgQ0dQb2ludE1ha2UoMTAwLCAxMDAp
LCBDR1ZlY3Rvck1ha2UoMCwgMTApKTsKKyAgICBFWFBFQ1RfRkFMU0Uod2FzSGFuZGxlZCk7Cisg
ICAgRVhQRUNUX1RSVUUoW1t3ZWJWaWV3IG9iamVjdEJ5RXZhbHVhdGluZ0phdmFTY3JpcHQ6QCJ3
aW5kb3cubGFzdFdoZWVsRXZlbnQuY2FuY2VsYWJsZSJdIGludFZhbHVlXSk7CisgICAgRVhQRUNU
X0VRKC0xMCwgW1t3ZWJWaWV3IG9iamVjdEJ5RXZhbHVhdGluZ0phdmFTY3JpcHQ6QCJ3aW5kb3cu
bGFzdFdoZWVsRXZlbnQuZGVsdGFZIl0gaW50VmFsdWVdKTsKKyAgICBzeW5jaHJvbm91c2x5SGFu
ZGxlU2Nyb2xsRXZlbnQoVUlTY3JvbGxQaGFzZUNoYW5nZWQsIENHUG9pbnRNYWtlKDEwMCwgMTAw
KSwgQ0dWZWN0b3JNYWtlKDAsIDEwKSk7CisgICAgRVhQRUNUX0ZBTFNFKHdhc0hhbmRsZWQpOwor
ICAgIHN5bmNocm9ub3VzbHlIYW5kbGVTY3JvbGxFdmVudChVSVNjcm9sbFBoYXNlRW5kZWQsIENH
UG9pbnRNYWtlKDEwMCwgMTAwKSwgQ0dWZWN0b3JNYWtlKDAsIDApKTsKKyAgICBFWFBFQ1RfRkFM
U0Uod2FzSGFuZGxlZCk7CisKKyAgICAvLyBwcmV2ZW50RGVmYXVsdCgpIG9uIGFsbCBldmVudHMu
CisgICAgW3dlYlZpZXcgc3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpAIndpbmRvdy5wcmV2
ZW50RGVmYXVsdE9uU2Nyb2xsRXZlbnRzID0gdHJ1ZTsiXTsKKyAgICBzeW5jaHJvbm91c2x5SGFu
ZGxlU2Nyb2xsRXZlbnQoVUlTY3JvbGxQaGFzZU1heUJlZ2luLCBDR1BvaW50TWFrZSgxMDAsIDEw
MCksIENHVmVjdG9yTWFrZSgwLCAwKSk7CisgICAgRVhQRUNUX0ZBTFNFKHdhc0hhbmRsZWQpOwor
ICAgIHN5bmNocm9ub3VzbHlIYW5kbGVTY3JvbGxFdmVudChVSVNjcm9sbFBoYXNlQmVnYW4sIENH
UG9pbnRNYWtlKDEwMCwgMTAwKSwgQ0dWZWN0b3JNYWtlKDAsIDEwKSk7CisgICAgRVhQRUNUX1RS
VUUod2FzSGFuZGxlZCk7CisgICAgc3luY2hyb25vdXNseUhhbmRsZVNjcm9sbEV2ZW50KFVJU2Ny
b2xsUGhhc2VDaGFuZ2VkLCBDR1BvaW50TWFrZSgxMDAsIDEwMCksIENHVmVjdG9yTWFrZSgwLCAx
MCkpOworICAgIEVYUEVDVF9UUlVFKHdhc0hhbmRsZWQpOworICAgIHN5bmNocm9ub3VzbHlIYW5k
bGVTY3JvbGxFdmVudChVSVNjcm9sbFBoYXNlRW5kZWQsIENHUG9pbnRNYWtlKDEwMCwgMTAwKSwg
Q0dWZWN0b3JNYWtlKDAsIDApKTsKKyAgICBFWFBFQ1RfRkFMU0Uod2FzSGFuZGxlZCk7CisKKyAg
ICAvLyBwcmV2ZW50RGVmYXVsdCgpIG9uIGFsbCBidXQgdGhlIGJlZ2luIGV2ZW50OyBpdCB3aWxs
IGJlIGlnbm9yZWQuCisgICAgW3dlYlZpZXcgc3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpA
IndpbmRvdy5wcmV2ZW50RGVmYXVsdE9uU2Nyb2xsRXZlbnRzID0gZmFsc2U7Il07CisgICAgc3lu
Y2hyb25vdXNseUhhbmRsZVNjcm9sbEV2ZW50KFVJU2Nyb2xsUGhhc2VNYXlCZWdpbiwgQ0dQb2lu
dE1ha2UoMTAwLCAxMDApLCBDR1ZlY3Rvck1ha2UoMCwgMCkpOworICAgIEVYUEVDVF9GQUxTRSh3
YXNIYW5kbGVkKTsKKyAgICBzeW5jaHJvbm91c2x5SGFuZGxlU2Nyb2xsRXZlbnQoVUlTY3JvbGxQ
aGFzZUJlZ2FuLCBDR1BvaW50TWFrZSgxMDAsIDEwMCksIENHVmVjdG9yTWFrZSgwLCAxMCkpOwor
ICAgIEVYUEVDVF9UUlVFKFtbd2ViVmlldyBvYmplY3RCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OkAi
d2luZG93Lmxhc3RXaGVlbEV2ZW50LmNhbmNlbGFibGUiXSBpbnRWYWx1ZV0pOworICAgIEVYUEVD
VF9GQUxTRSh3YXNIYW5kbGVkKTsKKyAgICBbd2ViVmlldyBzdHJpbmdCeUV2YWx1YXRpbmdKYXZh
U2NyaXB0OkAid2luZG93LnByZXZlbnREZWZhdWx0T25TY3JvbGxFdmVudHMgPSB0cnVlOyJdOwor
ICAgIHN5bmNocm9ub3VzbHlIYW5kbGVTY3JvbGxFdmVudChVSVNjcm9sbFBoYXNlQ2hhbmdlZCwg
Q0dQb2ludE1ha2UoMTAwLCAxMDApLCBDR1ZlY3Rvck1ha2UoMCwgMTApKTsKKyAgICBFWFBFQ1Rf
RkFMU0Uod2FzSGFuZGxlZCk7CisgICAgRVhQRUNUX0ZBTFNFKFtbd2ViVmlldyBvYmplY3RCeUV2
YWx1YXRpbmdKYXZhU2NyaXB0OkAid2luZG93Lmxhc3RXaGVlbEV2ZW50LmNhbmNlbGFibGUiXSBp
bnRWYWx1ZV0pOworICAgIHN5bmNocm9ub3VzbHlIYW5kbGVTY3JvbGxFdmVudChVSVNjcm9sbFBo
YXNlRW5kZWQsIENHUG9pbnRNYWtlKDEwMCwgMTAwKSwgQ0dWZWN0b3JNYWtlKDAsIDApKTsKKyAg
ICBFWFBFQ1RfRkFMU0Uod2FzSGFuZGxlZCk7CisKKyAgICAvLyBwcmV2ZW50RGVmYXVsdCgpIG9u
IHRoZSBiZWdpbiBldmVudCwgYW5kIHNvbWUgc3Vic2VxdWVudCBldmVudHMuCisgICAgW3dlYlZp
ZXcgc3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpAIndpbmRvdy5wcmV2ZW50RGVmYXVsdE9u
U2Nyb2xsRXZlbnRzID0gdHJ1ZTsiXTsKKyAgICBzeW5jaHJvbm91c2x5SGFuZGxlU2Nyb2xsRXZl
bnQoVUlTY3JvbGxQaGFzZU1heUJlZ2luLCBDR1BvaW50TWFrZSgxMDAsIDEwMCksIENHVmVjdG9y
TWFrZSgwLCAwKSk7CisgICAgRVhQRUNUX0ZBTFNFKHdhc0hhbmRsZWQpOworICAgIHN5bmNocm9u
b3VzbHlIYW5kbGVTY3JvbGxFdmVudChVSVNjcm9sbFBoYXNlQmVnYW4sIENHUG9pbnRNYWtlKDEw
MCwgMTAwKSwgQ0dWZWN0b3JNYWtlKDAsIDEwKSk7CisgICAgRVhQRUNUX1RSVUUod2FzSGFuZGxl
ZCk7CisgICAgc3luY2hyb25vdXNseUhhbmRsZVNjcm9sbEV2ZW50KFVJU2Nyb2xsUGhhc2VDaGFu
Z2VkLCBDR1BvaW50TWFrZSgxMDAsIDEwMCksIENHVmVjdG9yTWFrZSgwLCAxMCkpOworICAgIEVY
UEVDVF9UUlVFKHdhc0hhbmRsZWQpOworICAgIFt3ZWJWaWV3IHN0cmluZ0J5RXZhbHVhdGluZ0ph
dmFTY3JpcHQ6QCJ3aW5kb3cucHJldmVudERlZmF1bHRPblNjcm9sbEV2ZW50cyA9IGZhbHNlOyJd
OworICAgIHN5bmNocm9ub3VzbHlIYW5kbGVTY3JvbGxFdmVudChVSVNjcm9sbFBoYXNlQ2hhbmdl
ZCwgQ0dQb2ludE1ha2UoMTAwLCAxMDApLCBDR1ZlY3Rvck1ha2UoMCwgMTApKTsKKyAgICBFWFBF
Q1RfRkFMU0Uod2FzSGFuZGxlZCk7CisgICAgc3luY2hyb25vdXNseUhhbmRsZVNjcm9sbEV2ZW50
KFVJU2Nyb2xsUGhhc2VFbmRlZCwgQ0dQb2ludE1ha2UoMTAwLCAxMDApLCBDR1ZlY3Rvck1ha2Uo
MCwgMCkpOworICAgIEVYUEVDVF9GQUxTRSh3YXNIYW5kbGVkKTsKK30KKyNlbmRpZiAvLyBIQVZF
KFVJU0NST0xMVklFV19BU1lOQ0hST05PVVNfU0NST0xMX0VWRU5UX0hBTkRMSU5HKQorCiAjZW5k
aWYgLy8gUExBVEZPUk0oSU9TX0ZBTUlMWSkKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvaW9zL1VJS2l0U1BJLmggYi9Ub29scy9UZXN0V2ViS2l0QVBJL2lvcy9VSUtpdFNQSS5oCmlu
ZGV4IGRkNWFlY2VjOTA1NDI5YzlhMDI1YzUyYzEwZjc0NDU3OTJmODQ5MGYuLmI1M2VhNTYwZjg0
YTdkYzI4ZTc0N2VlZmNlZTU1YTUzOGU2ZWRkMTkgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvaW9zL1VJS2l0U1BJLmgKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9pb3MvVUlLaXRT
UEkuaApAQCAtMzcsNiArMzcsOCBAQAogI2ltcG9ydCA8VUlLaXQvVUlLZXlib2FyZF9Qcml2YXRl
Lmg+CiAjaW1wb3J0IDxVSUtpdC9VSVJlc3BvbmRlcl9Qcml2YXRlLmg+CiAjaW1wb3J0IDxVSUtp
dC9VSVNjcmVlbl9Qcml2YXRlLmg+CisjaW1wb3J0IDxVSUtpdC9VSVNjcm9sbEV2ZW50X1ByaXZh
dGUuaD4KKyNpbXBvcnQgPFVJS2l0L1VJU2Nyb2xsVmlld19Gb3JXZWJLaXRPbmx5Lmg+CiAjaW1w
b3J0IDxVSUtpdC9VSVNjcm9sbFZpZXdfUHJpdmF0ZS5oPgogI2ltcG9ydCA8VUlLaXQvVUlUZXh0
QXV0b2ZpbGxTdWdnZXN0aW9uLmg+CiAjaW1wb3J0IDxVSUtpdC9VSVRleHRJbnB1dE11bHRpRG9j
dW1lbnQuaD4KQEAgLTI0MCw2ICsyNDIsMTMgQEAgSUdOT1JFX1dBUk5JTkdTX0VORAogQHByb3Bl
cnR5IChub25hdG9taWMsIGdldHRlcj1faXNBdXRvbWF0aWNDb250ZW50T2Zmc2V0QWRqdXN0bWVu
dEVuYWJsZWQsIHNldHRlcj1fc2V0QXV0b21hdGljQ29udGVudE9mZnNldEFkanVzdG1lbnRFbmFi
bGVkOikgQk9PTCBpc0F1dG9tYXRpY0NvbnRlbnRPZmZzZXRBZGp1c3RtZW50RW5hYmxlZDsKIEBl
bmQKIAorQGludGVyZmFjZSBVSVNjcm9sbEV2ZW50IDogVUlFdmVudAorQGVuZAorCitAaW50ZXJm
YWNlIE5TT2JqZWN0IChVSVNjcm9sbFZpZXdEZWxlZ2F0ZV9Gb3JXZWJLaXRPbmx5KQorLSAodm9p
ZClfc2Nyb2xsVmlldzooVUlTY3JvbGxWaWV3ICopc2Nyb2xsVmlldyBhc3luY2hyb25vdXNseUhh
bmRsZVNjcm9sbEV2ZW50OihVSVNjcm9sbEV2ZW50ICopc2Nyb2xsRXZlbnQgY29tcGxldGlvbjoo
dm9pZCAoXikoQk9PTCBoYW5kbGVkKSljb21wbGV0aW9uOworQGVuZAorCiAjZW5kaWYgLy8gVVNF
KEFQUExFX0lOVEVSTkFMX1NESykKIAogI2RlZmluZSBVSVdLRG9jdW1lbnRSZXF1ZXN0TWFya2Vk
VGV4dFJlY3RzICgxIDw8IDUpCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>