<?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>129146</bug_id>
          
          <creation_ts>2014-02-21 02:48:52 -0800</creation_ts>
          <short_desc>WebKit2 View Gestures (Smart Magnification): Support for iOS</short_desc>
          <delta_ts>2014-03-01 21:22:42 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit2</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Tim Horton">thorton</reporter>
          <assigned_to name="Tim Horton">thorton</assigned_to>
          <cc>andersca</cc>
    
    <cc>benjamin</cc>
    
    <cc>commit-queue</cc>
    
    <cc>mitz</cc>
    
    <cc>mkwst</cc>
    
    <cc>sam</cc>
    
    <cc>simon.fraser</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>983165</commentid>
    <comment_count>0</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2014-02-21 02:48:52 -0800</bug_when>
    <thetext>&lt;rdar://problem/16032668&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>983333</commentid>
    <comment_count>1</comment_count>
      <attachid>224899</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2014-02-21 13:52:39 -0800</bug_when>
    <thetext>Created attachment 224899
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>983346</commentid>
    <comment_count>2</comment_count>
      <attachid>224902</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2014-02-21 13:59:52 -0800</bug_when>
    <thetext>Created attachment 224902
rebase</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>983347</commentid>
    <comment_count>3</comment_count>
      <attachid>224903</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2014-02-21 14:01:07 -0800</bug_when>
    <thetext>Created attachment 224903
rebase</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>983348</commentid>
    <comment_count>4</comment_count>
      <attachid>224904</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2014-02-21 14:03:23 -0800</bug_when>
    <thetext>Created attachment 224904
zomgrebase</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>983350</commentid>
    <comment_count>5</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-02-21 14:05:56 -0800</bug_when>
    <thetext>Attachment 224904 did not pass style-queue:


ERROR: Source/WebKit2/UIProcess/mac/ViewGestureController.h:96:  The parameter name &quot;scrollView&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Total errors found: 1 in 16 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>984165</commentid>
    <comment_count>6</comment_count>
      <attachid>224904</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2014-02-24 19:54:20 -0800</bug_when>
    <thetext>Comment on attachment 224904
zomgrebase

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

&gt; Source/WebKit2/UIProcess/API/ios/WKContentView.mm:330
&gt; +    [_interactionView _setDoubleTapGestureRecognizer:recognizer];

Nope!

&gt; Source/WebKit2/UIProcess/API/ios/WKViewIOS.mm:137
&gt; +    toImpl([_contentView _pageRef])-&gt;setShouldRecordNavigationSnapshots(allowsBackForwardNavigationGestures);

Space after [. This is now [_contentView page]-&gt;

&gt; Source/WebKit2/UIProcess/API/ios/WKViewIOS.mm:262
&gt; +    WebPageProxy *webPageProxy = toImpl([_contentView _pageRef]);

Changed.

&gt; Source/WebKit2/UIProcess/API/ios/WKViewIOS.mm:265
&gt; +    UIGestureRecognizer *recognizer = _gestureController-&gt;installSmartMagnificationHandler(_contentView.get(), _scrollView.get());

Odd that we call it magnification not zoom.

&gt; Source/WebKit2/UIProcess/mac/ViewGestureController.h:164
&gt; +    RetainPtr&lt;WKSmartMagnificationGestureController&gt; m_smartMagnificationGestureController;
&gt; +    RetainPtr&lt;UIScrollView&gt; m_smartMagnificationScrollView;
&gt; +    RetainPtr&lt;UIView&gt; m_smartMagnificationTargetView;

Who owns the gesture controller? Are we creating ref cycles here?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>984168</commentid>
    <comment_count>7</comment_count>
      <attachid>224904</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2014-02-24 19:56:34 -0800</bug_when>
    <thetext>Comment on attachment 224904
zomgrebase

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

I&apos;d like to discuss if there is a way to untangle stuff if you have 5 minutes.

&gt; Source/WebKit2/UIProcess/API/Cocoa/WKWebView.mm:175
&gt; +#if PLATFORM(IOS)
&gt; +    _gestureController = std::make_unique&lt;WebKit::ViewGestureController&gt;(*_page);
&gt; +
&gt; +    UIGestureRecognizer *recognizer = _gestureController-&gt;installSmartMagnificationHandler(_contentView.get(), _scrollView.get());
&gt; +    [_contentView _setDoubleTapGestureRecognizer:recognizer];
&gt; +#endif
&gt; +

I don&apos;t think this is the right place. Why would the smart magnification know anything about the scrollview?

&gt; Source/WebKit2/UIProcess/API/Cocoa/WKWebView.mm:475
&gt; +

Blank line.

&gt; Source/WebKit2/UIProcess/API/ios/WKContentView.mm:332
&gt; +- (void)_setDoubleTapGestureRecognizer:(UIGestureRecognizer *)recognizer
&gt; +{
&gt; +    [_interactionView _setDoubleTapGestureRecognizer:recognizer];
&gt; +}
&gt; +

You can remove this, no _interactionView anymore :)

&gt; Source/WebKit2/UIProcess/API/ios/WKContentViewInternal.h:79
&gt; +- (void)_setDoubleTapGestureRecognizer:(UIGestureRecognizer *)recognizer;

This is the wrong header. WKContentViewInternal is/was for API used from bellow (WebPageProxy, PageClient, etc). WKContentView.h is the API for WKView/WKWebView.

&gt; Source/WebKit2/UIProcess/API/ios/WKViewIOS.mm:33
&gt; -#import &quot;WKContentView.h&quot;
&gt; +#import &quot;WKContentViewInternal.h&quot;

Nope, see above.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>984179</commentid>
    <comment_count>8</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2014-02-24 20:56:42 -0800</bug_when>
    <thetext>(In reply to comment #7)
&gt; (From update of attachment 224904 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=224904&amp;action=review
&gt; 
&gt; I&apos;d like to discuss if there is a way to untangle stuff if you have 5 minutes.

I think we have a plan.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>984509</commentid>
    <comment_count>9</comment_count>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2014-02-25 15:12:11 -0800</bug_when>
    <thetext>Something I forgot to mention, you will need to call [WKContentView willStartUserTriggeredZoom] before starting the animation. That way the future WebProcess scale update will not force the initial zoom on the page.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>984842</commentid>
    <comment_count>10</comment_count>
      <attachid>225278</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2014-02-26 12:17:26 -0800</bug_when>
    <thetext>Created attachment 225278
new approach</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>984897</commentid>
    <comment_count>11</comment_count>
      <attachid>225295</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2014-02-26 14:07:22 -0800</bug_when>
    <thetext>Created attachment 225295
fix mac build</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>984935</commentid>
    <comment_count>12</comment_count>
      <attachid>225295</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2014-02-26 15:22:16 -0800</bug_when>
    <thetext>Comment on attachment 225295
fix mac build

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

&gt; Source/WebKit2/UIProcess/API/Cocoa/WKWebView.mm:325
&gt; +- (RetainPtr&lt;CGImageRef&gt;)_takeViewSnapshot
&gt; +{
&gt; +    // FIXME: We should be able to use acquire an IOSurface directly, instead of going to CGImage here and back in ViewSnapshotStore.
&gt; +    UIGraphicsBeginImageContextWithOptions(self.bounds.size, YES, self.window.screen.scale);
&gt; +    [self drawViewHierarchyInRect:[self bounds] afterScreenUpdates:NO];
&gt; +    UIImage *image = UIGraphicsGetImageFromCurrentImageContext();
&gt; +    UIGraphicsEndImageContext();
&gt; +    return image.CGImage;
&gt; +}

Let&apos;s fix everything at once, otherwise it is just ugly.

&gt; Source/WebKit2/UIProcess/API/Cocoa/WKWebView.mm:331
&gt; +    const double maximumZoomDuration = 0.4;
&gt; +    const double minimumZoomDuration = 0.1;
&gt; +    const double zoomDurationFactor = 0.3;

I think Darin would prefer no const here.

&gt; Source/WebKit2/UIProcess/API/Cocoa/WKWebView.mm:341
&gt; +    WebCore::FloatSize scrollViewSize([_scrollView bounds].size);

You could move this bellow, just before it is needed.
Shouldn&apos;t the type be CGSize or something?

I don&apos;t think the scrollview&apos;s bounds is ever correct when you want to show something. You should use the unobscuredRect.

Fun fact, the unobscuredRect can change in response to the zoom. This means the centering is not strictly correct. This is also wrong on WebKit1.

&gt; Source/WebKit2/UIProcess/API/Cocoa/WKWebView.mm:343
&gt; +    double currentScaleFactor = [_scrollView zoomScale];
&gt; +    double relativeScale = scale / currentScaleFactor;

Shouldn&apos;t those be CGFloat?

&gt; Source/WebKit2/UIProcess/API/Cocoa/WKWebView.mm:346
&gt; +    WebCore::FloatRect targetRectInScrollView = [_scrollView convertRect:targetRect fromView:_contentView.get()];
&gt; +    WebCore::FloatRect scaledTargetRectInScrollView = targetRectInScrollView;

CGRect?

I prefer the name to say in which coordinate system the rect is. For example, targetRectInScrollViewCoordinate.

&gt; Source/WebKit2/UIProcess/API/Cocoa/WKWebView.mm:347
&gt; +    scaledTargetRectInScrollView.scale(relativeScale, relativeScale);

targetRectInScrollViewAfterZoom or something like that?

&gt; Source/WebKit2/UIProcess/API/Cocoa/WKWebView.mm:356
&gt; +    if (scaledTargetRectInScrollView.width() &gt; scrollViewSize.width())
&gt; +        zoomCenter.setX(origin.x());
&gt; +    if (scaledTargetRectInScrollView.height() &gt; scrollViewSize.height())
&gt; +        zoomCenter.setY(origin.y());

I think you should use the unobscured rect here.

&gt; Source/WebKit2/UIProcess/API/Cocoa/WKWebView.mm:365
&gt; +    contentOffset = contentOffset.expandedTo(WebCore::FloatPoint());

???

&gt; Source/WebKit2/UIProcess/API/Cocoa/WKWebView.mm:373
&gt; +    WebCore::FloatSize scrollViewSize([_scrollView bounds].size);
&gt; +    WebCore::FloatSize contentSize([_scrollView contentSize]);
&gt; +    WebCore::FloatPoint currentContentOffset([_scrollView contentOffset]);

I think you should use unobscuredRect for the scrollViewSize and currentContentOffset, and use WKContentView&apos;s size instead of [_scrollView contentSize] instead.

&gt; Source/WebKit2/UIProcess/API/Cocoa/WKWebView.mm:376
&gt; +    WebCore::FloatPoint originInScrollView([_scrollView convertPoint:origin fromView:_contentView.get()]);
&gt; +    WebCore::FloatRect targetRectInScrollView([_scrollView convertRect:targetRect fromView:_contentView.get()]);

inScrollViewCoordinates.

&gt; Source/WebKit2/UIProcess/API/Cocoa/WKWebView.mm:399
&gt; +    float scrollDistance = (currentContentOffset - newContentOffset).diagonalLength();

float? :)

&gt; Source/WebKit2/UIProcess/API/Cocoa/WKWebView.mm:420
&gt; +    CGSize scrollViewSize = [_scrollView bounds].size;

[_scrollView bounds] is probably incorrect.

&gt; Source/WebKit2/UIProcess/API/Cocoa/WKWebView.mm:452
&gt; +    if (!layerTreeTransaction.scaleWasSetByUIProcess() &amp;&amp; ![_scrollView isZooming] &amp;&amp; ![_scrollView isZoomBouncing] &amp;&amp; ![_scrollView _isAnimatingZoom])

Sorry!

&gt; Source/WebKit2/UIProcess/ios/SmartMagnificationController.mm:50
&gt; +static const CGFloat smartMagnificationPanScrollThresholdZoomedOut = 60;
&gt; +static const CGFloat smartMagnificationPanScrollThresholdIPhone = 100;
&gt; +static const CGFloat smartMagnificationPanScrollThresholdIPad = 150;
&gt; +static const CGFloat smartMagnificationElementPadding = 0.05;
&gt; +
&gt; +static const double smartMagnificationMaximumScale = 1.6;
&gt; +static const double smartMagnificationMinimumScale = 0;

CGFloat and double?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>984970</commentid>
    <comment_count>13</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2014-02-26 16:11:43 -0800</bug_when>
    <thetext>(In reply to comment #12)
&gt; (From update of attachment 225295 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=225295&amp;action=review
&gt; 
&gt; &gt; Source/WebKit2/UIProcess/API/Cocoa/WKWebView.mm:365
&gt; &gt; +    contentOffset = contentOffset.expandedTo(WebCore::FloatPoint());
&gt; 
&gt; ???

This is basically point clamping. We do it in a bunch of places.

&gt; &gt; Source/WebKit2/UIProcess/API/Cocoa/WKWebView.mm:373
&gt; &gt; +    WebCore::FloatSize scrollViewSize([_scrollView bounds].size);
&gt; &gt; +    WebCore::FloatSize contentSize([_scrollView contentSize]);
&gt; &gt; +    WebCore::FloatPoint currentContentOffset([_scrollView contentOffset]);
&gt; 
&gt; I think you should use unobscuredRect for the scrollViewSize and currentContentOffset, and use WKContentView&apos;s size instead of [_scrollView contentSize] instead.

Is the offset I send to setContentOffset the same as the origin of the unobscuredRect? I think not, I think it&apos;s the actual scroll view content offset. So I&apos;ll have to move the new content offset by the difference between unobscuredRect and scrollView contentOffset?

&gt; &gt; Source/WebKit2/UIProcess/API/Cocoa/WKWebView.mm:399
&gt; &gt; +    float scrollDistance = (currentContentOffset - newContentOffset).diagonalLength();
&gt; 
&gt; float? :)

Is the return type of that function :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>985011</commentid>
    <comment_count>14</comment_count>
      <attachid>225328</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2014-02-26 17:26:30 -0800</bug_when>
    <thetext>Created attachment 225328
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>985012</commentid>
    <comment_count>15</comment_count>
      <attachid>225329</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2014-02-26 17:30:19 -0800</bug_when>
    <thetext>Created attachment 225329
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>985432</commentid>
    <comment_count>16</comment_count>
      <attachid>225329</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2014-02-27 18:20:28 -0800</bug_when>
    <thetext>Comment on attachment 225329
patch

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

&gt; Source/WebKit2/UIProcess/API/Cocoa/WKWebView.mm:359
&gt; +    [_contentView willStartUserTriggeredZoom];
&gt; +    [_scrollView _zoomToCenter:point scale:scale duration:duration];

Should this check if &quot;scale != [_scrollview zoomScale]&quot;? If not at runtime, an assertion would be useful. 
Otherwise, if you call [WKContentView willStartUserTriggeredZoom] and stay at the initialScale, the scale will be wrong on load or rotation.

&gt; Source/WebKit2/UIProcess/API/Cocoa/WKWebView.mm:370
&gt; +    CGSize targetRectSizeInScrollViewCoordinatesAfterZoom = [_scrollView convertRect:targetRect fromView:_contentView.get()].size;
&gt; +    targetRectSizeInScrollViewCoordinatesAfterZoom.width *= relativeScale;
&gt; +    targetRectSizeInScrollViewCoordinatesAfterZoom.height *= relativeScale;

I think this is no longer good. Now all the other computation are done in content coordinates. I think this rect is in the wrong coordinate system.

&gt; Source/WebKit2/UIProcess/API/Cocoa/WKWebView.mm:384
&gt; +static WebCore::FloatPoint constrainContentOffset(WebCore::FloatPoint contentOffset, WebCore::FloatSize contentSize, WebCore::FloatSize scrollViewSize)

Maybe rename scrollViewSize to unobscuredSomethingSomething?

&gt; Source/WebKit2/UIProcess/API/Cocoa/WKWebView.mm:399
&gt; +    WebCore::FloatPoint originInScrollViewCoordinates([_scrollView convertPoint:origin fromView:_contentView.get()]);
&gt; +    WebCore::FloatRect targetRectInScrollViewCoordinates([_scrollView convertRect:targetRect fromView:_contentView.get()]);

I think this may be incorrect too now. Previously you were comparing to scrollview size, which is why you needed this conversion.
Now you are comparing to unobscuredContentRect, which is content coordinate.

You can either get unobscuredRect in WKWebView coordinates and compare to that, or do the centering in content coordinates.

&gt; Source/WebKit2/UIProcess/API/Cocoa/WKWebView.mm:442
&gt; +    if (![_scrollView isScrollEnabled] || ![_scrollView isZoomEnabled])
&gt; +        return false;

Not sure we need this, we don&apos;t support it anywhere else.

We can add them everywhere if that becomes needed.

&gt; Source/WebKit2/UIProcess/API/ios/WKViewIOS.mm:231
&gt; +    _contentView = adoptNS([[WKContentView alloc] initWithFrame:bounds context:*toImpl(contextRef) configuration:std::move(webPageConfiguration) webView:nullptr]);

ahahahahah

&gt; Source/WebKit2/UIProcess/ios/SmartMagnificationController.mm:79
&gt; +    if (frameHandlesMagnificationGesture)
&gt; +        return;

Why does the WebProcess call us back if frameHandlesMagnificationGesture is false? Shouldn&apos;t it just ignore the handleSmartMagnificationGesture()?

&gt; Source/WebKit2/WebProcess/WebPage/ViewGestureGeometryCollector.cpp:83
&gt; +    HitTestResult hitTestResult = HitTestResult(originInContentsSpace);

Do we need the fancy iOS hit testing here? No clue what WebKit1 does.

&gt; Source/WebKit2/WebProcess/WebPage/ViewGestureGeometryCollector.cpp:87
&gt; +    if (Node *node = hitTestResult.innerNode()) {

Node*
Maybe const too?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>985433</commentid>
    <comment_count>17</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2014-02-27 18:25:54 -0800</bug_when>
    <thetext>Thanks, Ben! I&apos;ll fix things + do more testing.

(In reply to comment #16)
&gt; (From update of attachment 225329 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=225329&amp;action=review
&gt; 
&gt; &gt; Source/WebKit2/UIProcess/API/Cocoa/WKWebView.mm:359
&gt; &gt; +    [_contentView willStartUserTriggeredZoom];
&gt; &gt; +    [_scrollView _zoomToCenter:point scale:scale duration:duration];
&gt; 
&gt; Should this check if &quot;scale != [_scrollview zoomScale]&quot;? If not at runtime, an assertion would be useful. 
&gt; Otherwise, if you call [WKContentView willStartUserTriggeredZoom] and stay at the initialScale, the scale will be wrong on load or rotation.

Oh! Interesting. I&apos;ll do something like that.

&gt; &gt; Source/WebKit2/UIProcess/API/Cocoa/WKWebView.mm:442
&gt; &gt; +    if (![_scrollView isScrollEnabled] || ![_scrollView isZoomEnabled])
&gt; &gt; +        return false;
&gt; 
&gt; Not sure we need this, we don&apos;t support it anywhere else.
&gt; 
&gt; We can add them everywhere if that becomes needed.

OK, that&apos;s fine. I was just matching WK1 (ish).

&gt; &gt; Source/WebKit2/UIProcess/API/ios/WKViewIOS.mm:231
&gt; &gt; +    _contentView = adoptNS([[WKContentView alloc] initWithFrame:bounds context:*toImpl(contextRef) configuration:std::move(webPageConfiguration) webView:nullptr]);
&gt; 
&gt; ahahahahah

Yeah :|

&gt; &gt; Source/WebKit2/UIProcess/ios/SmartMagnificationController.mm:79
&gt; &gt; +    if (frameHandlesMagnificationGesture)
&gt; &gt; +        return;
&gt; 
&gt; Why does the WebProcess call us back if frameHandlesMagnificationGesture is false? Shouldn&apos;t it just ignore the handleSmartMagnificationGesture()?

That&apos;s a pretty good idea :D

&gt; &gt; Source/WebKit2/WebProcess/WebPage/ViewGestureGeometryCollector.cpp:83
&gt; &gt; +    HitTestResult hitTestResult = HitTestResult(originInContentsSpace);
&gt; 
&gt; Do we need the fancy iOS hit testing here? No clue what WebKit1 does.

I believe this is equivalent to what WebKit1 does.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>986055</commentid>
    <comment_count>18</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2014-03-01 21:22:42 -0800</bug_when>
    <thetext>http://trac.webkit.org/changeset/164937</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>224899</attachid>
            <date>2014-02-21 13:52:39 -0800</date>
            <delta_ts>2014-02-21 13:59:52 -0800</delta_ts>
            <desc>patch</desc>
            <filename>doubletap.diff</filename>
            <type>text/plain</type>
            <size>45341</size>
            <attacher name="Tim Horton">thorton</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA5NDUyYzRjLi42YWU2NzIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQg
QEAKKzIwMTQtMDItMjEgIFRpbSBIb3J0b24gIDx0aW1vdGh5X2hvcnRvbkBhcHBsZS5jb20+CisK
KyAgICAgICAgV2ViS2l0MiBWaWV3IEdlc3R1cmVzIChTbWFydCBNYWduaWZpY2F0aW9uKTogU3Vw
cG9ydCBmb3IgaU9TCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xMjkxNDYKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzE2MDMyNjY4PgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViQ29yZS5leHAuaW46
CisgICAgICAgIEFkZCBhbiBleHBvcnQuCisKIDIwMTQtMDItMjEgIEFuZHJlaSBCdWN1ciAgPGFi
dWN1ckBhZG9iZS5jb20+CiAKICAgICAgICAgW0NTUyBSZWdpb25zXSBSZWdpb25zIGRvbid0IHBh
aW50IGNvcnJlY3RseSBpbiBuZXctbXVsdGljb2wgZWxlbWVudHMKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4K
aW5kZXggOTg0ZTE4ZS4uNDZjZGE0MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS5leHAuaW4KKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4KQEAgLTE4MzcsNiAr
MTgzNyw3IEBAIF9fWk5LN1dlYkNvcmU5RmxvYXRRdWFkMTFib3VuZGluZ0JveEV2CiBfX1pOSzdX
ZWJDb3JlOUZsb2F0UmVjdDEwaW50ZXJzZWN0c0VSS1MwXwogX19aTks3V2ViQ29yZTlGbG9hdFJl
Y3RjdjZDR1JlY3RFdgogX19aTks3V2ViQ29yZTlGbG9hdFNpemU2aXNaZXJvRXYKK19fWk5LN1dl
YkNvcmU5RmxvYXRTaXplMTRkaWFnb25hbExlbmd0aEV2CiBfX1pOSzdXZWJDb3JlOUZyYW1lVHJl
ZTEwY2hpbGRDb3VudEV2CiBfX1pOSzdXZWJDb3JlOUZyYW1lVHJlZTEydHJhdmVyc2VOZXh0RVBL
TlNfNUZyYW1lRQogX19aTks3V2ViQ29yZTlGcmFtZVRyZWUxNGlzRGVzY2VuZGFudE9mRVBLTlNf
NUZyYW1lRQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIvU291cmNlL1dl
YktpdDIvQ2hhbmdlTG9nCmluZGV4IGQ1YWUxM2IuLmQzMGM1N2MgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw4NSBAQAorMjAxNC0wMi0yMSAgVGltIEhvcnRvbiAgPHRpbW90aHlfaG9ydG9uQGFwcGxl
LmNvbT4KKworICAgICAgICBXZWJLaXQyIFZpZXcgR2VzdHVyZXMgKFNtYXJ0IE1hZ25pZmljYXRp
b24pOiBTdXBwb3J0IGZvciBpT1MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTEyOTE0NgorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMTYwMzI2Njg+CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBVSVByb2Nl
c3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbToKKyAgICAgICAgKC1bV0tXZWJWaWV3IGluaXRXaXRo
RnJhbWU6Y29uZmlndXJhdGlvbjpdKToKKyAgICAgICAgQWx3YXlzIGhhdmUgYSBWaWV3R2VzdHVy
ZUNvbnRyb2xsZXIsIHRvIGhhbmRsZSBkb3VibGUtdGFwIGdlc3R1cmVzLgorCisgICAgICAgICgt
W1dLV2ViVmlldyBjb250ZW50VmlldzpkaWRDb21taXRMYXllclRyZWU6V2ViS2l0OjpdKToKKyAg
ICAgICAgRG9uJ3QgcmVwbGFjZSB0aGUgem9vbSBzY2FsZSBpZiB3ZSdyZSBjdXJyZW50bHkgYW5p
bWF0aW5nLgorCisgICAgICAgICgtW1dLV2ViVmlldyBzZXRBbGxvd3NCYWNrRm9yd2FyZE5hdmln
YXRpb25HZXN0dXJlczpdKToKKyAgICAgICAgSW5zdGFsbCBhbmQgdW5pbnN0YWxsIHRoZSBzd2lw
ZSBoYW5kbGVyIGluc3RlYWQgb2YgZGVzdHJveWluZyB0aGUgZ2VzdHVyZSBjb250cm9sbGVyLgor
CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9pb3MvV0tDb250ZW50Vmlldy5tbToKKyAgICAgICAg
KC1bV0tDb250ZW50VmlldyBfc2V0RG91YmxlVGFwR2VzdHVyZVJlY29nbml6ZXI6XSk6CisgICAg
ICAgICogVUlQcm9jZXNzL0FQSS9pb3MvV0tDb250ZW50Vmlld0ludGVybmFsLmg6CisgICAgICAg
ICogVUlQcm9jZXNzL0FQSS9pb3MvV0tJbnRlcmFjdGlvblZpZXcuaDoKKyAgICAgICAgKiBVSVBy
b2Nlc3MvQVBJL2lvcy9XS0ludGVyYWN0aW9uVmlldy5tbToKKyAgICAgICAgKC1bV0tJbnRlcmFj
dGlvblZpZXcgaW5pdFdpdGhGcmFtZTpdKToKKyAgICAgICAgKC1bV0tJbnRlcmFjdGlvblZpZXcg
ZGVhbGxvY10pOgorICAgICAgICAoLVtXS0ludGVyYWN0aW9uVmlldyBnZXN0dXJlUmVjb2duaXpl
clNob3VsZEJlZ2luOl0pOgorICAgICAgICAoLVtXS0ludGVyYWN0aW9uVmlldyBfc2V0RG91Ymxl
VGFwR2VzdHVyZVJlY29nbml6ZXI6XSk6CisgICAgICAgIFJlbW92ZSBleGlzdGluZyB1bnVzZWQg
ZG91YmxlLXRhcCBnZXN0dXJlIHJlY29nbml6ZXIgY29kZS4KKyAgICAgICAgUGx1bWIgdGhlIGRv
dWJsZS10YXAgZ2VzdHVyZSByZWNvZ25pemVyIGRvd24gZnJvbSBWaWV3R2VzdHVyZUNvbnRyb2xs
ZXIsCisgICAgICAgIHNvIHdlIGNhbiBtYWtlIHRoZSBzaW5nbGUgdGFwIGdlc3R1cmUgcmVjb2du
aXplciBibG9jayBvbiBpdCBmYWlsaW5nLgorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9pb3Mv
V0tWaWV3SU9TLm1tOgorICAgICAgICAoLVtXS1ZpZXcgc2V0QWxsb3dzQmFja0ZvcndhcmROYXZp
Z2F0aW9uR2VzdHVyZXM6XSk6CisgICAgICAgIEluc3RhbGwgYW5kIHVuaW5zdGFsbCB0aGUgc3dp
cGUgaGFuZGxlciBpbnN0ZWFkIG9mIGRlc3Ryb3lpbmcgdGhlIGdlc3R1cmUgY29udHJvbGxlci4K
KworICAgICAgICAoLVtXS1ZpZXcgY29udGVudFZpZXc6ZGlkQ29tbWl0TGF5ZXJUcmVlOl0pOgor
ICAgICAgICBEb24ndCByZXBsYWNlIHRoZSB6b29tIHNjYWxlIGlmIHdlJ3JlIGN1cnJlbnRseSBh
bmltYXRpbmcuCisKKyAgICAgICAgKC1bV0tWaWV3IF9jb21tb25Jbml0aWFsaXphdGlvbldpdGhD
b250ZXh0UmVmOnBhZ2VHcm91cFJlZjpyZWxhdGVkVG9QYWdlOl0pOgorICAgICAgICBBbHdheXMg
aGF2ZSBhIFZpZXdHZXN0dXJlQ29udHJvbGxlciwgdG8gaGFuZGxlIGRvdWJsZS10YXAgZ2VzdHVy
ZXMuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1ZpZXdHZXN0dXJlQ29udHJvbGxlcklPUy5t
bToKKyAgICAgICAgKC1bV0tTd2lwZVRyYW5zaXRpb25Db250cm9sbGVyIGluaXRXaXRoVmlld0dl
c3R1cmVDb250cm9sbGVyOldlYktpdDo6Z2VzdHVyZVJlY29nbml6ZXJWaWV3Ol0pOgorICAgICAg
ICAoLVtXS1NtYXJ0TWFnbmlmaWNhdGlvbkdlc3R1cmVDb250cm9sbGVyIGluaXRXaXRoVmlld0dl
c3R1cmVDb250cm9sbGVyOldlYktpdDo6Z2VzdHVyZVJlY29nbml6ZXJWaWV3Ol0pOgorICAgICAg
ICAoLVtXS1NtYXJ0TWFnbmlmaWNhdGlvbkdlc3R1cmVDb250cm9sbGVyIGRvdWJsZVRhcFJlY29n
bml6ZWQ6XSk6CisgICAgICAgICgtW1dLU21hcnRNYWduaWZpY2F0aW9uR2VzdHVyZUNvbnRyb2xs
ZXIgZG91YmxlVGFwUmVjb2duaXplcl0pOgorICAgICAgICAoV2ViS2l0OjpWaWV3R2VzdHVyZUNv
bnRyb2xsZXI6OlZpZXdHZXN0dXJlQ29udHJvbGxlcik6CisgICAgICAgIChXZWJLaXQ6OlZpZXdH
ZXN0dXJlQ29udHJvbGxlcjo6flZpZXdHZXN0dXJlQ29udHJvbGxlcik6CisgICAgICAgIChXZWJL
aXQ6OlZpZXdHZXN0dXJlQ29udHJvbGxlcjo6dW5pbnN0YWxsU3dpcGVIYW5kbGVyKToKKyAgICAg
ICAgKFdlYktpdDo6Vmlld0dlc3R1cmVDb250cm9sbGVyOjppbnN0YWxsU21hcnRNYWduaWZpY2F0
aW9uSGFuZGxlcik6CisgICAgICAgIChXZWJLaXQ6OlZpZXdHZXN0dXJlQ29udHJvbGxlcjo6aGFu
ZGxlU21hcnRNYWduaWZpY2F0aW9uR2VzdHVyZSk6CisgICAgICAgIChXZWJLaXQ6OnNob3VsZFBh
blNjcm9sbEZvclNjYWxlKToKKyAgICAgICAgKFdlYktpdDo6ZHVyYXRpb25Gb3Jab29tVG9TY2Fs
ZSk6CisgICAgICAgIChXZWJLaXQ6Onpvb21Ub0NlbnRlckF0U2NhbGUpOgorICAgICAgICAoV2Vi
S2l0OjpWaWV3R2VzdHVyZUNvbnRyb2xsZXI6OnNtYXJ0TWFnbmlmaWNhdGlvblpvb21Ub1Rhcmdl
dCk6CisgICAgICAgIChXZWJLaXQ6OmNvbnN0cmFpbkNvbnRlbnRPZmZzZXQpOgorICAgICAgICAo
V2ViS2l0OjpWaWV3R2VzdHVyZUNvbnRyb2xsZXI6OnNtYXJ0TWFnbmlmaWNhdGlvblNjcm9sbFRv
VGFyZ2V0KToKKyAgICAgICAgKFdlYktpdDo6Vmlld0dlc3R1cmVDb250cm9sbGVyOjpkaWRDb2xs
ZWN0R2VvbWV0cnlGb3JTbWFydE1hZ25pZmljYXRpb25HZXN0dXJlKToKKyAgICAgICAgQWRkIGFu
IGltcGxlbWVudGF0aW9uIG9mIGRvdWJsZS10YXAgZm9yIGlPUy4KKyAgICAgICAgQ3VycmVudGx5
IHZlcnkgbGl0dGxlIGNvZGUgaXMgc2hhcmVkIHdpdGggTWFjIChqdXN0IHRoZSBXZWJQcm9jZXNz
IHNpZGUpLAorICAgICAgICBidXQgdGhlIGFtb3VudCBvZiBzaGFyZWQgbG9naWMgc2hvdWxkIGlu
Y3JlYXNlIGFzIHRpbWUgZ29lcyBvbi4KKyAgICAgICAgVGhpcyBzaG91bGQgbWF0Y2ggV2ViS2l0
MSBiZWhhdmlvciBmYWlybHkgY2xvc2VseS4KKworICAgICAgICAqIFVJUHJvY2Vzcy9tYWMvVmll
d0dlc3R1cmVDb250cm9sbGVyLmg6CisgICAgICAgICogVUlQcm9jZXNzL21hYy9WaWV3R2VzdHVy
ZUNvbnRyb2xsZXIubWVzc2FnZXMuaW46CisgICAgICAgICogVUlQcm9jZXNzL21hYy9WaWV3R2Vz
dHVyZUNvbnRyb2xsZXJNYWMubW06CisgICAgICAgIChXZWJLaXQ6OlZpZXdHZXN0dXJlQ29udHJv
bGxlcjo6ZGlkQ29sbGVjdEdlb21ldHJ5Rm9yU21hcnRNYWduaWZpY2F0aW9uR2VzdHVyZSk6Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1ZpZXdHZXN0dXJlR2VvbWV0cnlDb2xsZWN0b3Iu
Y3BwOgorICAgICAgICBJbmNsdWRlIHRoZSBwYXJ0cyBvZiBWaWV3R2VzdHVyZUdlb21ldHJ5Q29s
bGVjdG9yIG5lZWRlZCBvbiBpT1MuCisKKyAgICAgICAgKFdlYktpdDo6Vmlld0dlc3R1cmVHZW9t
ZXRyeUNvbGxlY3Rvcjo6Vmlld0dlc3R1cmVHZW9tZXRyeUNvbGxlY3Rvcik6CisgICAgICAgIChX
ZWJLaXQ6OlZpZXdHZXN0dXJlR2VvbWV0cnlDb2xsZWN0b3I6OmNvbGxlY3RHZW9tZXRyeUZvclNt
YXJ0TWFnbmlmaWNhdGlvbkdlc3R1cmUpOgorICAgICAgICBVc2Ugd2luZG93VG9Db250ZW50cyBp
bnN0ZWFkIG9mIG1hbnVhbGx5IGFwcGx5aW5nIHRoZSBzY3JvbGwsIGJlY2F1c2UgaXQgZG9lcyB0
aGUgcmlnaHQgdGhpbmcgb24gaU9TLgorCisgICAgICAgIChXZWJLaXQ6OlZpZXdHZXN0dXJlR2Vv
bWV0cnlDb2xsZWN0b3I6OmNvbGxlY3RHZW9tZXRyeUZvck1hZ25pZmljYXRpb25HZXN0dXJlKToK
KyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvVmlld0dlc3R1cmVHZW9tZXRyeUNvbGxlY3Rv
ci5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9WaWV3R2VzdHVyZUdlb21ldHJ5Q29s
bGVjdG9yLm1lc3NhZ2VzLmluOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdl
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6V2ViUGFnZSk6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaDoKKyAgICAgICAgS2VlcCBhIHZpZXdHZXN0dXJlR2Vv
bWV0cnlDb2xsZWN0b3Igb24gYWxsIFBMQVRGT1JNKENPQ09BKSBwb3J0cy4KKwogMjAxNC0wMi0y
MCAgWmFsYW4gQnVqdGFzICA8emFsYW5AYXBwbGUuY29tPgogCiAgICAgICAgIFJlbW92ZSByZWR1
bmRhbnQgZGV2aWNlU2NhbGVGYWN0b3IoKSBmdW5jdGlvbnMgYW5kIG1ha2UgY2FsbGVycyB1c2Ug
RG9jdW1lbnQ6OmRldmljZVNjYWxlRmFjdG9yKCkgd2hlbiBhY2Nlc3NpYmxlLgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0gYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQppbmRleCBmMjQ5Mzdj
Li5lMGNmMTU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29h
L1dLV2ViVmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dL
V2ViVmlldy5tbQpAQCAtMTY2LDYgKzE2NiwxMyBAQAogCiAgICAgX3BhZ2UtPnNldFVJQ2xpZW50
KHN0ZDo6bWFrZV91bmlxdWU8V2ViS2l0OjpVSUNsaWVudD4oc2VsZikpOwogCisjaWYgUExBVEZP
Uk0oSU9TKQorICAgIF9nZXN0dXJlQ29udHJvbGxlciA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViS2l0
OjpWaWV3R2VzdHVyZUNvbnRyb2xsZXI+KCpfcGFnZSk7CisKKyAgICBVSUdlc3R1cmVSZWNvZ25p
emVyICpyZWNvZ25pemVyID0gX2dlc3R1cmVDb250cm9sbGVyLT5pbnN0YWxsU21hcnRNYWduaWZp
Y2F0aW9uSGFuZGxlcihfY29udGVudFZpZXcuZ2V0KCksIF9zY3JvbGxWaWV3LmdldCgpKTsKKyAg
ICBbX2NvbnRlbnRWaWV3IF9zZXREb3VibGVUYXBHZXN0dXJlUmVjb2duaXplcjpyZWNvZ25pemVy
XTsKKyNlbmRpZgorCiAgICAgcmV0dXJuIHNlbGY7CiB9CiAKQEAgLTMyMiw3ICszMjksNyBAQAog
ICAgIFtfc2Nyb2xsVmlldyBzZXRNaW5pbXVtWm9vbVNjYWxlOmxheWVyVHJlZVRyYW5zYWN0aW9u
Lm1pbmltdW1TY2FsZUZhY3RvcigpXTsKICAgICBbX3Njcm9sbFZpZXcgc2V0TWF4aW11bVpvb21T
Y2FsZTpsYXllclRyZWVUcmFuc2FjdGlvbi5tYXhpbXVtU2NhbGVGYWN0b3IoKV07CiAgICAgW19z
Y3JvbGxWaWV3IHNldFpvb21FbmFibGVkOmxheWVyVHJlZVRyYW5zYWN0aW9uLmFsbG93c1VzZXJT
Y2FsaW5nKCldOwotICAgIGlmICghW19zY3JvbGxWaWV3IGlzWm9vbWluZ10gJiYgIVtfc2Nyb2xs
VmlldyBpc1pvb21Cb3VuY2luZ10pCisgICAgaWYgKCFbX3Njcm9sbFZpZXcgaXNab29taW5nXSAm
JiAhW19zY3JvbGxWaWV3IGlzWm9vbUJvdW5jaW5nXSAmJiAhW19zY3JvbGxWaWV3IF9pc0FuaW1h
dGluZ1pvb21dKQogICAgICAgICBbX3Njcm9sbFZpZXcgc2V0Wm9vbVNjYWxlOmxheWVyVHJlZVRy
YW5zYWN0aW9uLnBhZ2VTY2FsZUZhY3RvcigpXTsKIAogICAgIGlmIChfZ2VzdHVyZUNvbnRyb2xs
ZXIpCkBAIC00NTksMTUgKzQ2NiwxMyBAQAogCiAgICAgX2FsbG93c0JhY2tGb3J3YXJkTmF2aWdh
dGlvbkdlc3R1cmVzID0gYWxsb3dzQmFja0ZvcndhcmROYXZpZ2F0aW9uR2VzdHVyZXM7CiAKLSAg
ICBpZiAoYWxsb3dzQmFja0ZvcndhcmROYXZpZ2F0aW9uR2VzdHVyZXMpIHsKLSAgICAgICAgaWYg
KCFfZ2VzdHVyZUNvbnRyb2xsZXIpIHsKLSAgICAgICAgICAgIF9nZXN0dXJlQ29udHJvbGxlciA9
IHN0ZDo6bWFrZV91bmlxdWU8V2ViS2l0OjpWaWV3R2VzdHVyZUNvbnRyb2xsZXI+KCpfcGFnZSk7
Ci0gICAgICAgICAgICBfZ2VzdHVyZUNvbnRyb2xsZXItPmluc3RhbGxTd2lwZUhhbmRsZXIoc2Vs
ZiwgW3NlbGYgc2Nyb2xsVmlld10pOwotICAgICAgICB9Ci0gICAgfSBlbHNlCi0gICAgICAgIF9n
ZXN0dXJlQ29udHJvbGxlciA9IG51bGxwdHI7CisgICAgaWYgKGFsbG93c0JhY2tGb3J3YXJkTmF2
aWdhdGlvbkdlc3R1cmVzKQorICAgICAgICBfZ2VzdHVyZUNvbnRyb2xsZXItPmluc3RhbGxTd2lw
ZUhhbmRsZXIoc2VsZiwgW3NlbGYgc2Nyb2xsVmlld10pOworICAgIGVsc2UKKyAgICAgICAgX2dl
c3R1cmVDb250cm9sbGVyLT51bmluc3RhbGxTd2lwZUhhbmRsZXIoKTsKIAogICAgIF9wYWdlLT5z
ZXRTaG91bGRSZWNvcmROYXZpZ2F0aW9uU25hcHNob3RzKGFsbG93c0JhY2tGb3J3YXJkTmF2aWdh
dGlvbkdlc3R1cmVzKTsKKwogfQogCiAtIChCT09MKWFsbG93c0JhY2tGb3J3YXJkTmF2aWdhdGlv
bkdlc3R1cmVzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2lvcy9X
S0NvbnRlbnRWaWV3Lm1tIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9pb3MvV0tDb250
ZW50Vmlldy5tbQppbmRleCBiNzE2YjUwLi4zYTYyNGJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL2lvcy9XS0NvbnRlbnRWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvaW9zL1dLQ29udGVudFZpZXcubW0KQEAgLTMyMCw0ICszMjAsOSBA
QCB1c2luZyBuYW1lc3BhY2UgV2ViS2l0OwogICAgIHJldHVybiBbX2RlbGVnYXRlIHRha2VWaWV3
U25hcHNob3RGb3JDb250ZW50VmlldzpzZWxmXTsKIH0KIAorLSAodm9pZClfc2V0RG91YmxlVGFw
R2VzdHVyZVJlY29nbml6ZXI6KFVJR2VzdHVyZVJlY29nbml6ZXIgKilyZWNvZ25pemVyCit7Cisg
ICAgW19pbnRlcmFjdGlvblZpZXcgX3NldERvdWJsZVRhcEdlc3R1cmVSZWNvZ25pemVyOnJlY29n
bml6ZXJdOworfQorCiBAZW5kCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJuYWwuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvaW9zL1dLQ29udGVudFZpZXdJbnRlcm5hbC5oCmluZGV4IDUyNDdkY2IuLmQ4Nzg0NWUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvaW9zL1dLQ29udGVudFZp
ZXdJbnRlcm5hbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvaW9zL1dLQ29u
dGVudFZpZXdJbnRlcm5hbC5oCkBAIC03NCw0ICs3NCw2IEBAIHN0cnVjdCBJbnRlcmFjdGlvbklu
Zm9ybWF0aW9uQXRQb3NpdGlvbjsKIAogLSAoUmV0YWluUHRyPENHSW1hZ2VSZWY+KV90YWtlVmll
d1NuYXBzaG90OwogCistICh2b2lkKV9zZXREb3VibGVUYXBHZXN0dXJlUmVjb2duaXplcjooVUlH
ZXN0dXJlUmVjb2duaXplciAqKXJlY29nbml6ZXI7CisKIEBlbmQKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvaW9zL1dLSW50ZXJhY3Rpb25WaWV3LmggYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2lvcy9XS0ludGVyYWN0aW9uVmlldy5oCmluZGV4IDYxNDVm
NTAuLjA5ZDdiN2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvaW9z
L1dLSW50ZXJhY3Rpb25WaWV3LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9p
b3MvV0tJbnRlcmFjdGlvblZpZXcuaApAQCAtNzAsNSArNzAsOCBAQCBzdHJ1Y3QgSW50ZXJhY3Rp
b25JbmZvcm1hdGlvbkF0UG9zaXRpb247CiAtICh2b2lkKV93aWxsU3RhcnRTY3JvbGxpbmdPclpv
b21pbmc7CiAtICh2b2lkKV93aWxsU3RhcnRVc2VyVHJpZ2dlcmVkU2Nyb2xsaW5nT3Jab29taW5n
OwogLSAodm9pZClfZGlkRW5kU2Nyb2xsaW5nT3Jab29taW5nOworCistICh2b2lkKV9zZXREb3Vi
bGVUYXBHZXN0dXJlUmVjb2duaXplcjooVUlHZXN0dXJlUmVjb2duaXplciAqKXJlY29nbml6ZXI7
CisKIEBwcm9wZXJ0eSAocmVhZG9ubHksIG5vbmF0b21pYykgV2ViS2l0OjpJbnRlcmFjdGlvbklu
Zm9ybWF0aW9uQXRQb3NpdGlvbiBwb3NpdGlvbkluZm9ybWF0aW9uOwogQGVuZApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9pb3MvV0tJbnRlcmFjdGlvblZpZXcubW0g
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2lvcy9XS0ludGVyYWN0aW9uVmlldy5tbQpp
bmRleCA3MTBlMmU0Li5mYzA1NjU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL2lvcy9XS0ludGVyYWN0aW9uVmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL2lvcy9XS0ludGVyYWN0aW9uVmlldy5tbQpAQCAtMTU0LDkgKzE1NCwxMSBAQCBz
dHJ1Y3QgV0tBdXRvQ29ycmVjdGlvbkRhdGF7CiAgICAgUmV0YWluUHRyPFVJVGFwR2VzdHVyZVJl
Y29nbml6ZXI+IF9zaW5nbGVUYXBHZXN0dXJlUmVjb2duaXplcjsKICAgICBSZXRhaW5QdHI8X1VJ
V2ViSGlnaGxpZ2h0TG9uZ1ByZXNzR2VzdHVyZVJlY29nbml6ZXI+IF9oaWdobGlnaHRMb25nUHJl
c3NHZXN0dXJlUmVjb2duaXplcjsKICAgICBSZXRhaW5QdHI8VUlMb25nUHJlc3NHZXN0dXJlUmVj
b2duaXplcj4gX2xvbmdQcmVzc0dlc3R1cmVSZWNvZ25pemVyOwotICAgIFJldGFpblB0cjxVSVRh
cEdlc3R1cmVSZWNvZ25pemVyPiBfZG91YmxlVGFwR2VzdHVyZVJlY29nbml6ZXI7CiAgICAgUmV0
YWluUHRyPFVJVGFwR2VzdHVyZVJlY29nbml6ZXI+IF90d29GaW5nZXJEb3VibGVUYXBHZXN0dXJl
UmVjb2duaXplcjsKICAgICBSZXRhaW5QdHI8VUlQYW5HZXN0dXJlUmVjb2duaXplcj4gX3R3b0Zp
bmdlclBhbkdlc3R1cmVSZWNvZ25pemVyOworI2lmbmRlZiBBU1NFUlRfRElTQUJMRUQKKyAgICBi
b29sIF9oYXNTZXREb3VibGVUYXBHZXN0dXJlUmVjb2duaXplcjsKKyNlbmRpZgogCiAgICAgUmV0
YWluUHRyPFVJV0tUZXh0SW50ZXJhY3Rpb25Bc3Npc3RhbnQ+IF90ZXh0U2VsZWN0aW9uQXNzaXN0
YW50OwogICAgIFJldGFpblB0cjxVSVdLU2VsZWN0aW9uQXNzaXN0YW50PiBfd2ViU2VsZWN0aW9u
QXNzaXN0YW50OwpAQCAtMTk0LDEyICsxOTYsNiBAQCBzdHJ1Y3QgV0tBdXRvQ29ycmVjdGlvbkRh
dGF7CiAgICAgICAgIFtfc2luZ2xlVGFwR2VzdHVyZVJlY29nbml6ZXIgc2V0RGVsZWdhdGU6c2Vs
Zl07CiAgICAgICAgIFtzZWxmIGFkZEdlc3R1cmVSZWNvZ25pemVyOl9zaW5nbGVUYXBHZXN0dXJl
UmVjb2duaXplci5nZXQoKV07CiAKLSAgICAgICAgX2RvdWJsZVRhcEdlc3R1cmVSZWNvZ25pemVy
ID0gYWRvcHROUyhbW1VJVGFwR2VzdHVyZVJlY29nbml6ZXIgYWxsb2NdIGluaXRXaXRoVGFyZ2V0
OnNlbGYgYWN0aW9uOkBzZWxlY3RvcihfZG91YmxlVGFwUmVjb2duaXplZDopXSk7Ci0gICAgICAg
IFtfZG91YmxlVGFwR2VzdHVyZVJlY29nbml6ZXIgc2V0TnVtYmVyT2ZUYXBzUmVxdWlyZWQ6Ml07
Ci0gICAgICAgIFtfZG91YmxlVGFwR2VzdHVyZVJlY29nbml6ZXIgc2V0RGVsZWdhdGU6c2VsZl07
Ci0gICAgICAgIFtzZWxmIGFkZEdlc3R1cmVSZWNvZ25pemVyOl9kb3VibGVUYXBHZXN0dXJlUmVj
b2duaXplci5nZXQoKV07Ci0gICAgICAgIFtfc2luZ2xlVGFwR2VzdHVyZVJlY29nbml6ZXIgcmVx
dWlyZU90aGVyR2VzdHVyZVRvRmFpbDpfZG91YmxlVGFwR2VzdHVyZVJlY29nbml6ZXIuZ2V0KCld
OwotCiAgICAgICAgIF9oaWdobGlnaHRMb25nUHJlc3NHZXN0dXJlUmVjb2duaXplciA9IGFkb3B0
TlMoW1tfVUlXZWJIaWdobGlnaHRMb25nUHJlc3NHZXN0dXJlUmVjb2duaXplciBhbGxvY10gaW5p
dFdpdGhUYXJnZXQ6c2VsZiBhY3Rpb246QHNlbGVjdG9yKF9oaWdobGlnaHRMb25nUHJlc3NSZWNv
Z25pemVkOildKTsKICAgICAgICAgW19oaWdobGlnaHRMb25nUHJlc3NHZXN0dXJlUmVjb2duaXpl
ciBzZXREZWxheTpoaWdobGlnaHREZWxheV07CiAgICAgICAgIFtfaGlnaGxpZ2h0TG9uZ1ByZXNz
R2VzdHVyZVJlY29nbml6ZXIgc2V0RGVsZWdhdGU6c2VsZl07CkBAIC0yMzUsNyArMjMxLDYgQEAg
c3RydWN0IFdLQXV0b0NvcnJlY3Rpb25EYXRhewogICAgIF9hY3Rpb25TaGVldEFzc2lzdGFudCA9
IG5pbDsKICAgICBbX3RvdWNoRXZlbnRHZXN0dXJlUmVjb2duaXplciBzZXREZWxlZ2F0ZTpuaWxd
OwogICAgIFtfc2luZ2xlVGFwR2VzdHVyZVJlY29nbml6ZXIgc2V0RGVsZWdhdGU6bmlsXTsKLSAg
ICBbX2RvdWJsZVRhcEdlc3R1cmVSZWNvZ25pemVyIHNldERlbGVnYXRlOm5pbF07CiAgICAgW19o
aWdobGlnaHRMb25nUHJlc3NHZXN0dXJlUmVjb2duaXplciBzZXREZWxlZ2F0ZTpuaWxdOwogICAg
IFtfbG9uZ1ByZXNzR2VzdHVyZVJlY29nbml6ZXIgc2V0RGVsZWdhdGU6bmlsXTsKICAgICBbX3R3
b0ZpbmdlclBhbkdlc3R1cmVSZWNvZ25pemVyIHNldERlbGVnYXRlOm5pbF07CkBAIC01MDAsNyAr
NDk1LDYgQEAgc3RhdGljIGlubGluZSBib29sIGlzU2FtZVBhaXIoVUlHZXN0dXJlUmVjb2duaXpl
ciAqYSwgVUlHZXN0dXJlUmVjb2duaXplciAqYiwgVUkKICAgICBDR1BvaW50IHBvaW50ID0gW2dl
c3R1cmVSZWNvZ25pemVyIGxvY2F0aW9uSW5WaWV3OnNlbGZdOwogCiAgICAgaWYgKGdlc3R1cmVS
ZWNvZ25pemVyID09IF9oaWdobGlnaHRMb25nUHJlc3NHZXN0dXJlUmVjb2duaXplcgotICAgICAg
ICB8fCBnZXN0dXJlUmVjb2duaXplciA9PSBfZG91YmxlVGFwR2VzdHVyZVJlY29nbml6ZXIKICAg
ICAgICAgfHwgZ2VzdHVyZVJlY29nbml6ZXIgPT0gX3R3b0ZpbmdlckRvdWJsZVRhcEdlc3R1cmVS
ZWNvZ25pemVyCiAgICAgICAgIHx8IGdlc3R1cmVSZWNvZ25pemVyID09IF9zaW5nbGVUYXBHZXN0
dXJlUmVjb2duaXplcikgewogCkBAIC02NDIsMTEgKzYzNiw2IEBAIHN0YXRpYyBpbmxpbmUgYm9v
bCBpc1NhbWVQYWlyKFVJR2VzdHVyZVJlY29nbml6ZXIgKmEsIFVJR2VzdHVyZVJlY29nbml6ZXIg
KmIsIFVJCiAgICAgW3NlbGYgX2F0dGVtcHRDbGlja0F0TG9jYXRpb246W2dlc3R1cmVSZWNvZ25p
emVyIGxvY2F0aW9uXV07CiB9CiAKLS0gKHZvaWQpX2RvdWJsZVRhcFJlY29nbml6ZWQ6KFVJVGFw
R2VzdHVyZVJlY29nbml6ZXIgKilnZXN0dXJlUmVjb2duaXplcgotewotICAgIC8vIEZJWE1FOiBB
ZGQgaW1wbGVtZW50YXRpb24uCi19Ci0KIC0gKHZvaWQpX3R3b0ZpbmdlckRvdWJsZVRhcFJlY29n
bml6ZWQ6KFVJVGFwR2VzdHVyZVJlY29nbml6ZXIgKilnZXN0dXJlUmVjb2duaXplcgogewogICAg
IC8vIEZJWE1FOiBBZGQgaW1wbGVtZW50YXRpb24uCkBAIC03MTgsNiArNzA3LDE2IEBAIHN0YXRp
YyBpbmxpbmUgYm9vbCBpc1NhbWVQYWlyKFVJR2VzdHVyZVJlY29nbml6ZXIgKmEsIFVJR2VzdHVy
ZVJlY29nbml6ZXIgKmIsIFVJCiAgICAgW190ZXh0U2VsZWN0aW9uQXNzaXN0YW50IGRpZEVuZFNj
cm9sbGluZ092ZXJmbG93XTsKIH0KIAorLSAodm9pZClfc2V0RG91YmxlVGFwR2VzdHVyZVJlY29n
bml6ZXI6KFVJR2VzdHVyZVJlY29nbml6ZXIgKilyZWNvZ25pemVyCit7CisjaWZuZGVmIEFTU0VS
VF9ESVNBQkxFRAorICAgIEFTU0VSVCghX2hhc1NldERvdWJsZVRhcEdlc3R1cmVSZWNvZ25pemVy
KTsKKyAgICBfaGFzU2V0RG91YmxlVGFwR2VzdHVyZVJlY29nbml6ZXIgPSB0cnVlOworI2VuZGlm
CisKKyAgICBbX3NpbmdsZVRhcEdlc3R1cmVSZWNvZ25pemVyIHJlcXVpcmVPdGhlckdlc3R1cmVU
b0ZhaWw6cmVjb2duaXplcl07Cit9CisKIC0gKFVJVmlldyAqKWlucHV0QWNjZXNzb3J5Vmlldwog
ewogICAgIGlmICghX2lzRWRpdGFibGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL2lvcy9XS1ZpZXdJT1MubW0gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L2lvcy9XS1ZpZXdJT1MubW0KaW5kZXggODI5MTk5ZS4uZWIxZjdlZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9pb3MvV0tWaWV3SU9TLm1tCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvaW9zL1dLVmlld0lPUy5tbQpAQCAtMzAsNyArMzAsNyBAQAog
I2ltcG9ydCAiVmlld0dlc3R1cmVDb250cm9sbGVyLmgiCiAjaW1wb3J0ICJXZWJQYWdlUHJveHku
aCIKICNpbXBvcnQgIldLQnJvd3NpbmdDb250ZXh0R3JvdXBQcml2YXRlLmgiCi0jaW1wb3J0ICJX
S0NvbnRlbnRWaWV3LmgiCisjaW1wb3J0ICJXS0NvbnRlbnRWaWV3SW50ZXJuYWwuaCIKICNpbXBv
cnQgIldLUHJvY2Vzc0dyb3VwUHJpdmF0ZS5oIgogI2ltcG9ydCAiV0tTY3JvbGxWaWV3LmgiCiAj
aW1wb3J0ICJXS0FQSUNhc3QuaCIKQEAgLTEyOCwxOCArMTI4LDEzIEBAIHVzaW5nIG5hbWVzcGFj
ZSBXZWJLaXQ7CiAgICAgICAgIHJldHVybjsKIAogICAgIF9hbGxvd3NCYWNrRm9yd2FyZE5hdmln
YXRpb25HZXN0dXJlcyA9IGFsbG93c0JhY2tGb3J3YXJkTmF2aWdhdGlvbkdlc3R1cmVzOwotICAg
IAotICAgIFdlYlBhZ2VQcm94eSAqd2ViUGFnZVByb3h5ID0gdG9JbXBsKFtfY29udGVudFZpZXcg
X3BhZ2VSZWZdKTsKLSAgICAKLSAgICBpZiAoYWxsb3dzQmFja0ZvcndhcmROYXZpZ2F0aW9uR2Vz
dHVyZXMpIHsKLSAgICAgICAgaWYgKCFfZ2VzdHVyZUNvbnRyb2xsZXIpIHsKLSAgICAgICAgICAg
IF9nZXN0dXJlQ29udHJvbGxlciA9IHN0ZDo6bWFrZV91bmlxdWU8Vmlld0dlc3R1cmVDb250cm9s
bGVyPigqd2ViUGFnZVByb3h5KTsKLSAgICAgICAgICAgIF9nZXN0dXJlQ29udHJvbGxlci0+aW5z
dGFsbFN3aXBlSGFuZGxlcihzZWxmLCBbc2VsZiBzY3JvbGxWaWV3XSk7Ci0gICAgICAgIH0KLSAg
ICB9IGVsc2UKLSAgICAgICAgX2dlc3R1cmVDb250cm9sbGVyID0gbnVsbHB0cjsKLSAgICAKLSAg
ICB3ZWJQYWdlUHJveHktPnNldFNob3VsZFJlY29yZE5hdmlnYXRpb25TbmFwc2hvdHMoYWxsb3dz
QmFja0ZvcndhcmROYXZpZ2F0aW9uR2VzdHVyZXMpOworCisgICAgaWYgKGFsbG93c0JhY2tGb3J3
YXJkTmF2aWdhdGlvbkdlc3R1cmVzKQorICAgICAgICBfZ2VzdHVyZUNvbnRyb2xsZXItPmluc3Rh
bGxTd2lwZUhhbmRsZXIoc2VsZiwgW3NlbGYgc2Nyb2xsVmlld10pOworICAgIGVsc2UKKyAgICAg
ICAgX2dlc3R1cmVDb250cm9sbGVyLT51bmluc3RhbGxTd2lwZUhhbmRsZXIoKTsKKworICAgIHRv
SW1wbChbX2NvbnRlbnRWaWV3IF9wYWdlUmVmXSktPnNldFNob3VsZFJlY29yZE5hdmlnYXRpb25T
bmFwc2hvdHMoYWxsb3dzQmFja0ZvcndhcmROYXZpZ2F0aW9uR2VzdHVyZXMpOwogfQogCiAtIChC
T09MKWFsbG93c0JhY2tGb3J3YXJkTmF2aWdhdGlvbkdlc3R1cmVzCkBAIC0xNTksNyArMTU0LDcg
QEAgdXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKICAgICBbX3Njcm9sbFZpZXcgc2V0TWluaW11bVpv
b21TY2FsZTpsYXllclRyZWVUcmFuc2FjdGlvbi5taW5pbXVtU2NhbGVGYWN0b3IoKV07CiAgICAg
W19zY3JvbGxWaWV3IHNldE1heGltdW1ab29tU2NhbGU6bGF5ZXJUcmVlVHJhbnNhY3Rpb24ubWF4
aW11bVNjYWxlRmFjdG9yKCldOwogICAgIFtfc2Nyb2xsVmlldyBzZXRab29tRW5hYmxlZDpsYXll
clRyZWVUcmFuc2FjdGlvbi5hbGxvd3NVc2VyU2NhbGluZygpXTsKLSAgICBpZiAoIVtfc2Nyb2xs
VmlldyBpc1pvb21pbmddICYmICFbX3Njcm9sbFZpZXcgaXNab29tQm91bmNpbmddKQorICAgIGlm
ICghW19zY3JvbGxWaWV3IGlzWm9vbWluZ10gJiYgIVtfc2Nyb2xsVmlldyBpc1pvb21Cb3VuY2lu
Z10gJiYgIVtfc2Nyb2xsVmlldyBfaXNBbmltYXRpbmdab29tXSkKICAgICAgICAgW19zY3JvbGxW
aWV3IHNldFpvb21TY2FsZTpsYXllclRyZWVUcmFuc2FjdGlvbi5wYWdlU2NhbGVGYWN0b3IoKV07
CiAgICAgCiAgICAgaWYgKF9nZXN0dXJlQ29udHJvbGxlcikKQEAgLTI2Myw2ICsyNTgsMTIgQEAg
dXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKICAgICBbY2VudGVyIGFkZE9ic2VydmVyOnNlbGYgc2Vs
ZWN0b3I6QHNlbGVjdG9yKF9rZXlib2FyZERpZENoYW5nZUZyYW1lOikgbmFtZTpVSUtleWJvYXJk
RGlkQ2hhbmdlRnJhbWVOb3RpZmljYXRpb24gb2JqZWN0Om5pbF07CiAgICAgW2NlbnRlciBhZGRP
YnNlcnZlcjpzZWxmIHNlbGVjdG9yOkBzZWxlY3Rvcihfa2V5Ym9hcmRXaWxsU2hvdzopIG5hbWU6
VUlLZXlib2FyZFdpbGxTaG93Tm90aWZpY2F0aW9uIG9iamVjdDpuaWxdOwogICAgIFtjZW50ZXIg
YWRkT2JzZXJ2ZXI6c2VsZiBzZWxlY3RvcjpAc2VsZWN0b3IoX2tleWJvYXJkV2lsbEhpZGU6KSBu
YW1lOlVJS2V5Ym9hcmRXaWxsSGlkZU5vdGlmaWNhdGlvbiBvYmplY3Q6bmlsXTsKKworICAgIFdl
YlBhZ2VQcm94eSAqd2ViUGFnZVByb3h5ID0gdG9JbXBsKFtfY29udGVudFZpZXcgX3BhZ2VSZWZd
KTsKKyAgICBfZ2VzdHVyZUNvbnRyb2xsZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFZpZXdHZXN0dXJl
Q29udHJvbGxlcj4oKndlYlBhZ2VQcm94eSk7CisKKyAgICBVSUdlc3R1cmVSZWNvZ25pemVyICpy
ZWNvZ25pemVyID0gX2dlc3R1cmVDb250cm9sbGVyLT5pbnN0YWxsU21hcnRNYWduaWZpY2F0aW9u
SGFuZGxlcihfY29udGVudFZpZXcuZ2V0KCksIF9zY3JvbGxWaWV3LmdldCgpKTsKKyAgICBbX2Nv
bnRlbnRWaWV3IF9zZXREb3VibGVUYXBHZXN0dXJlUmVjb2duaXplcjpyZWNvZ25pemVyXTsKIH0K
IAogLSAodm9pZClfZnJhbWVPckJvdW5kc0NoYW5nZWQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9pb3MvVmlld0dlc3R1cmVDb250cm9sbGVySU9TLm1tIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL2lvcy9WaWV3R2VzdHVyZUNvbnRyb2xsZXJJT1MubW0KaW5kZXggMmUw
M2IwMS4uOGNhNjlhMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9W
aWV3R2VzdHVyZUNvbnRyb2xsZXJJT1MubW0KKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L2lvcy9WaWV3R2VzdHVyZUNvbnRyb2xsZXJJT1MubW0KQEAgLTM1LDcgKzM1LDEwIEBACiAjaW1w
b3J0ICJXZWJQYWdlUHJveHkuaCIKICNpbXBvcnQgIldlYlByb2Nlc3NQcm94eS5oIgogI2ltcG9y
dCA8UXVhcnR6Q29yZS9RdWFydHpDb3JlLmg+CisjaW1wb3J0IDxVSUtpdC9VSURldmljZV9Qcml2
YXRlLmg+CisjaW1wb3J0IDxVSUtpdC9VSUtpdC5oPgogI2ltcG9ydCA8VUlLaXQvVUlTY3JlZW5F
ZGdlUGFuR2VzdHVyZVJlY29nbml6ZXIuaD4KKyNpbXBvcnQgPFVJS2l0L1VJU2Nyb2xsVmlld19Q
cml2YXRlLmg+CiAjaW1wb3J0IDxVSUtpdC9VSVZpZXdDb250cm9sbGVyVHJhbnNpdGlvbmluZ19Q
cml2YXRlLmg+CiAjaW1wb3J0IDxVSUtpdC9VSVdlYlRvdWNoRXZlbnRzR2VzdHVyZVJlY29nbml6
ZXIuaD4KICNpbXBvcnQgPFVJS2l0L19VSU5hdmlnYXRpb25JbnRlcmFjdGl2ZVRyYW5zaXRpb24u
aD4KQEAgLTQ4LDYgKzUxLDE5IEBACiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCitzdGF0
aWMgY29uc3QgQ0dGbG9hdCBzbWFydE1hZ25pZmljYXRpb25QYW5TY3JvbGxUaHJlc2hvbGRab29t
ZWRPdXQgPSA2MDsKK3N0YXRpYyBjb25zdCBDR0Zsb2F0IHNtYXJ0TWFnbmlmaWNhdGlvblBhblNj
cm9sbFRocmVzaG9sZElQaG9uZSA9IDEwMDsKK3N0YXRpYyBjb25zdCBDR0Zsb2F0IHNtYXJ0TWFn
bmlmaWNhdGlvblBhblNjcm9sbFRocmVzaG9sZElQYWQgPSAxNTA7CitzdGF0aWMgY29uc3QgQ0dG
bG9hdCBzbWFydE1hZ25pZmljYXRpb25FbGVtZW50UGFkZGluZyA9IDAuMDU7CisKK3N0YXRpYyBj
b25zdCBmbG9hdCBzbWFydE1hZ25pZmljYXRpb25TY2FsZURlbHRhVGhyZXNob2xkRm9yUGFuU2Ny
b2xsID0gMC4wMjsKKworc3RhdGljIGNvbnN0IGRvdWJsZSBzbWFydE1hZ25pZmljYXRpb25NYXhp
bXVtU2NhbGUgPSAxLjY7CitzdGF0aWMgY29uc3QgZG91YmxlIHNtYXJ0TWFnbmlmaWNhdGlvbk1p
bmltdW1TY2FsZSA9IDA7CisKK3N0YXRpYyBjb25zdCBmbG9hdCBzd2lwZVNuYXBzaG90UmVtb3Zh
bFJlbmRlclRyZWVTaXplVGFyZ2V0RnJhY3Rpb24gPSAwLjU7CitzdGF0aWMgY29uc3Qgc3RkOjpj
aHJvbm86OnNlY29uZHMgc3dpcGVTbmFwc2hvdFJlbW92YWxXYXRjaGRvZ0R1cmF0aW9uID0gM19z
OworCiBAaW50ZXJmYWNlIFdLU3dpcGVUcmFuc2l0aW9uQ29udHJvbGxlciA6IE5TT2JqZWN0IDxf
VUlOYXZpZ2F0aW9uSW50ZXJhY3RpdmVUcmFuc2l0aW9uQmFzZURlbGVnYXRlPgogLSAoaW5zdGFu
Y2V0eXBlKWluaXRXaXRoVmlld0dlc3R1cmVDb250cm9sbGVyOihXZWJLaXQ6OlZpZXdHZXN0dXJl
Q29udHJvbGxlciopZ2VzdHVyZUNvbnRyb2xsZXIgZ2VzdHVyZVJlY29nbml6ZXJWaWV3OihVSVZp
ZXcgKilnZXN0dXJlUmVjb2duaXplclZpZXc7CiBAZW5kCkBAIC01OSwyMiArNzUsMTkgQEAgdXNp
bmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAgICAgUmV0YWluUHRyPF9VSU5hdmlnYXRpb25JbnRlcmFj
dGl2ZVRyYW5zaXRpb25CYXNlPiBfZm9yd2FyZFRyYW5zaXRpb25Db250cm9sbGVyOwogfQogCi1z
dGF0aWMgY29uc3QgZmxvYXQgc3dpcGVTbmFwc2hvdFJlbW92YWxSZW5kZXJUcmVlU2l6ZVRhcmdl
dEZyYWN0aW9uID0gMC41Owotc3RhdGljIGNvbnN0IHN0ZDo6Y2hyb25vOjpzZWNvbmRzIHN3aXBl
U25hcHNob3RSZW1vdmFsV2F0Y2hkb2dEdXJhdGlvbiA9IDNfczsKLQogLSAoaW5zdGFuY2V0eXBl
KWluaXRXaXRoVmlld0dlc3R1cmVDb250cm9sbGVyOihXZWJLaXQ6OlZpZXdHZXN0dXJlQ29udHJv
bGxlciopZ2VzdHVyZUNvbnRyb2xsZXIgZ2VzdHVyZVJlY29nbml6ZXJWaWV3OihVSVZpZXcgKiln
ZXN0dXJlUmVjb2duaXplclZpZXcKIHsKLSAgICBzZWxmID0gW3N1cGVyIGluaXRdOwotICAgIGlm
IChzZWxmKSB7Ci0gICAgICAgIF9nZXN0dXJlQ29udHJvbGxlciA9IGdlc3R1cmVDb250cm9sbGVy
OworICAgIGlmICghKHNlbGYgPSBbc3VwZXIgaW5pdF0pKQorICAgICAgICByZXR1cm4gbmlsOwog
Ci0gICAgICAgIF9iYWNrVHJhbnNpdGlvbkNvbnRyb2xsZXIgPSBhZG9wdE5TKFtfVUlOYXZpZ2F0
aW9uSW50ZXJhY3RpdmVUcmFuc2l0aW9uQmFzZSBhbGxvY10pOwotICAgICAgICBfYmFja1RyYW5z
aXRpb25Db250cm9sbGVyID0gW19iYWNrVHJhbnNpdGlvbkNvbnRyb2xsZXIgaW5pdFdpdGhHZXN0
dXJlUmVjb2duaXplclZpZXc6Z2VzdHVyZVJlY29nbml6ZXJWaWV3IGFuaW1hdG9yOm5pbCBkZWxl
Z2F0ZTpzZWxmXTsKLSAgICAgICAgCi0gICAgICAgIF9mb3J3YXJkVHJhbnNpdGlvbkNvbnRyb2xs
ZXIgPSBhZG9wdE5TKFtfVUlOYXZpZ2F0aW9uSW50ZXJhY3RpdmVUcmFuc2l0aW9uQmFzZSBhbGxv
Y10pOwotICAgICAgICBfZm9yd2FyZFRyYW5zaXRpb25Db250cm9sbGVyID0gW19mb3J3YXJkVHJh
bnNpdGlvbkNvbnRyb2xsZXIgaW5pdFdpdGhHZXN0dXJlUmVjb2duaXplclZpZXc6Z2VzdHVyZVJl
Y29nbml6ZXJWaWV3IGFuaW1hdG9yOm5pbCBkZWxlZ2F0ZTpzZWxmXTsKLSAgICAgICAgW19mb3J3
YXJkVHJhbnNpdGlvbkNvbnRyb2xsZXIgc2V0U2hvdWxkUmV2ZXJzZVRyYW5zbGF0aW9uOllFU107
Ci0gICAgfQorICAgIF9nZXN0dXJlQ29udHJvbGxlciA9IGdlc3R1cmVDb250cm9sbGVyOworCisg
ICAgX2JhY2tUcmFuc2l0aW9uQ29udHJvbGxlciA9IGFkb3B0TlMoW19VSU5hdmlnYXRpb25JbnRl
cmFjdGl2ZVRyYW5zaXRpb25CYXNlIGFsbG9jXSk7CisgICAgX2JhY2tUcmFuc2l0aW9uQ29udHJv
bGxlciA9IFtfYmFja1RyYW5zaXRpb25Db250cm9sbGVyIGluaXRXaXRoR2VzdHVyZVJlY29nbml6
ZXJWaWV3Omdlc3R1cmVSZWNvZ25pemVyVmlldyBhbmltYXRvcjpuaWwgZGVsZWdhdGU6c2VsZl07
CisgICAgCisgICAgX2ZvcndhcmRUcmFuc2l0aW9uQ29udHJvbGxlciA9IGFkb3B0TlMoW19VSU5h
dmlnYXRpb25JbnRlcmFjdGl2ZVRyYW5zaXRpb25CYXNlIGFsbG9jXSk7CisgICAgX2ZvcndhcmRU
cmFuc2l0aW9uQ29udHJvbGxlciA9IFtfZm9yd2FyZFRyYW5zaXRpb25Db250cm9sbGVyIGluaXRX
aXRoR2VzdHVyZVJlY29nbml6ZXJWaWV3Omdlc3R1cmVSZWNvZ25pemVyVmlldyBhbmltYXRvcjpu
aWwgZGVsZWdhdGU6c2VsZl07CisgICAgW19mb3J3YXJkVHJhbnNpdGlvbkNvbnRyb2xsZXIgc2V0
U2hvdWxkUmV2ZXJzZVRyYW5zbGF0aW9uOllFU107CiAgICAgcmV0dXJuIHNlbGY7CiB9CiAKQEAg
LTExOSw2ICsxMzIsNDUgQEAgc3RhdGljIGNvbnN0IHN0ZDo6Y2hyb25vOjpzZWNvbmRzIHN3aXBl
U25hcHNob3RSZW1vdmFsV2F0Y2hkb2dEdXJhdGlvbiA9IDNfczsKIAogQGVuZAogCitAaW50ZXJm
YWNlIFdLU21hcnRNYWduaWZpY2F0aW9uR2VzdHVyZUNvbnRyb2xsZXIgOiBOU09iamVjdCA8VUlH
ZXN0dXJlUmVjb2duaXplckRlbGVnYXRlPgorLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoVmlld0dl
c3R1cmVDb250cm9sbGVyOihXZWJLaXQ6OlZpZXdHZXN0dXJlQ29udHJvbGxlciopZ2VzdHVyZUNv
bnRyb2xsZXIgZ2VzdHVyZVJlY29nbml6ZXJWaWV3OihVSVZpZXcgKilnZXN0dXJlUmVjb2duaXpl
clZpZXc7CistIChVSUdlc3R1cmVSZWNvZ25pemVyICopZG91YmxlVGFwUmVjb2duaXplcjsKK0Bl
bmQKKworQGltcGxlbWVudGF0aW9uIFdLU21hcnRNYWduaWZpY2F0aW9uR2VzdHVyZUNvbnRyb2xs
ZXIKK3sKKyAgICBXZWJLaXQ6OlZpZXdHZXN0dXJlQ29udHJvbGxlciAqX2dlc3R1cmVDb250cm9s
bGVyOworICAgIFJldGFpblB0cjxVSVRhcEdlc3R1cmVSZWNvZ25pemVyPiBfZG91YmxlVGFwUmVj
b2duaXplcjsKKyAgICBSZXRhaW5QdHI8VUlWaWV3PiBfZ2VzdHVyZVJlY29nbml6ZXJWaWV3Owor
fQorCistIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhWaWV3R2VzdHVyZUNvbnRyb2xsZXI6KFdlYktp
dDo6Vmlld0dlc3R1cmVDb250cm9sbGVyKilnZXN0dXJlQ29udHJvbGxlciBnZXN0dXJlUmVjb2du
aXplclZpZXc6KFVJVmlldyAqKWdlc3R1cmVSZWNvZ25pemVyVmlldworeworICAgIGlmICghKHNl
bGYgPSBbc3VwZXIgaW5pdF0pKQorICAgICAgICByZXR1cm4gbmlsOworCisgICAgX2dlc3R1cmVD
b250cm9sbGVyID0gZ2VzdHVyZUNvbnRyb2xsZXI7CisgICAgX2dlc3R1cmVSZWNvZ25pemVyVmll
dyA9IGdlc3R1cmVSZWNvZ25pemVyVmlldzsKKyAgICBfZG91YmxlVGFwUmVjb2duaXplciA9IGFk
b3B0TlMoW1tVSVRhcEdlc3R1cmVSZWNvZ25pemVyIGFsbG9jXSBpbml0V2l0aFRhcmdldDpzZWxm
IGFjdGlvbjpAc2VsZWN0b3IoZG91YmxlVGFwUmVjb2duaXplZDopXSk7CisgICAgW19kb3VibGVU
YXBSZWNvZ25pemVyIHNldE51bWJlck9mVGFwc1JlcXVpcmVkOjJdOworICAgIFtfZG91YmxlVGFw
UmVjb2duaXplciBzZXREZWxlZ2F0ZTpzZWxmXTsKKyAgICBbZ2VzdHVyZVJlY29nbml6ZXJWaWV3
IGFkZEdlc3R1cmVSZWNvZ25pemVyOl9kb3VibGVUYXBSZWNvZ25pemVyLmdldCgpXTsKKworICAg
IHJldHVybiBzZWxmOworfQorCistICh2b2lkKWRvdWJsZVRhcFJlY29nbml6ZWQ6KFVJVGFwR2Vz
dHVyZVJlY29nbml6ZXIgKilnZXN0dXJlUmVjb2duaXplcgoreworICAgIF9nZXN0dXJlQ29udHJv
bGxlci0+aGFuZGxlU21hcnRNYWduaWZpY2F0aW9uR2VzdHVyZShbZ2VzdHVyZVJlY29nbml6ZXIg
bG9jYXRpb25JblZpZXc6X2dlc3R1cmVSZWNvZ25pemVyVmlldy5nZXQoKV0pOworfQorCistIChV
SUdlc3R1cmVSZWNvZ25pemVyICopZG91YmxlVGFwUmVjb2duaXplcgoreworICAgIHJldHVybiBf
ZG91YmxlVGFwUmVjb2duaXplci5nZXQoKTsKK30KKworQGVuZAorCiBuYW1lc3BhY2UgV2ViS2l0
IHsKIAogVmlld0dlc3R1cmVDb250cm9sbGVyOjpWaWV3R2VzdHVyZUNvbnRyb2xsZXIoV2ViUGFn
ZVByb3h5JiB3ZWJQYWdlUHJveHkpCkBAIC0xMjcsMTAgKzE3OSwxMiBAQCBWaWV3R2VzdHVyZUNv
bnRyb2xsZXI6OlZpZXdHZXN0dXJlQ29udHJvbGxlcihXZWJQYWdlUHJveHkmIHdlYlBhZ2VQcm94
eSkKICAgICAsIG1fc3dpcGVXYXRjaGRvZ1RpbWVyKHRoaXMsICZWaWV3R2VzdHVyZUNvbnRyb2xs
ZXI6OnN3aXBlU25hcHNob3RXYXRjaGRvZ1RpbWVyRmlyZWQpCiAgICAgLCBtX3RhcmdldFJlbmRl
clRyZWVTaXplKDApCiB7CisgICAgbV93ZWJQYWdlUHJveHkucHJvY2VzcygpLmFkZE1lc3NhZ2VS
ZWNlaXZlcihNZXNzYWdlczo6Vmlld0dlc3R1cmVDb250cm9sbGVyOjptZXNzYWdlUmVjZWl2ZXJO
YW1lKCksIG1fd2ViUGFnZVByb3h5LnBhZ2VJRCgpLCAqdGhpcyk7CiB9CiAKIFZpZXdHZXN0dXJl
Q29udHJvbGxlcjo6flZpZXdHZXN0dXJlQ29udHJvbGxlcigpCiB7CisgICAgbV93ZWJQYWdlUHJv
eHkucHJvY2VzcygpLnJlbW92ZU1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6Vmlld0dlc3R1cmVD
b250cm9sbGVyOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1fd2ViUGFnZVByb3h5LnBhZ2VJRCgp
KTsKIH0KIAogdm9pZCBWaWV3R2VzdHVyZUNvbnRyb2xsZXI6Omluc3RhbGxTd2lwZUhhbmRsZXIo
VUlWaWV3ICpnZXN0dXJlUmVjb2duaXplclZpZXcsIFVJVmlldyAqc3dpcGluZ1ZpZXcpCkBAIC0x
NDAsNiArMTk0LDE0IEBAIHZvaWQgVmlld0dlc3R1cmVDb250cm9sbGVyOjppbnN0YWxsU3dpcGVI
YW5kbGVyKFVJVmlldyAqZ2VzdHVyZVJlY29nbml6ZXJWaWV3LCBVCiAgICAgbV9saXZlU3dpcGVW
aWV3ID0gc3dpcGluZ1ZpZXc7CiB9CiAKK3ZvaWQgVmlld0dlc3R1cmVDb250cm9sbGVyOjp1bmlu
c3RhbGxTd2lwZUhhbmRsZXIoKQoreworICAgIEFTU0VSVChtX3N3aXBlSW50ZXJhY3RpdmVUcmFu
c2l0aW9uRGVsZWdhdGUpOworICAgIEFTU0VSVChtX2FjdGl2ZUdlc3R1cmVUeXBlICE9IFZpZXdH
ZXN0dXJlVHlwZTo6U3dpcGUpOworICAgIG1fc3dpcGVJbnRlcmFjdGl2ZVRyYW5zaXRpb25EZWxl
Z2F0ZSA9IG51bGxwdHI7CisgICAgbV9saXZlU3dpcGVWaWV3ID0gbnVsbHB0cjsKK30KKwogdm9p
ZCBWaWV3R2VzdHVyZUNvbnRyb2xsZXI6OmJlZ2luU3dpcGVHZXN0dXJlKF9VSU5hdmlnYXRpb25J
bnRlcmFjdGl2ZVRyYW5zaXRpb25CYXNlICp0cmFuc2l0aW9uLCBTd2lwZURpcmVjdGlvbiBkaXJl
Y3Rpb24pCiB7CiAgICAgaWYgKG1fYWN0aXZlR2VzdHVyZVR5cGUgIT0gVmlld0dlc3R1cmVUeXBl
OjpOb25lKQpAQCAtMjczLDQgKzMzNSwxNzUgQEAgdm9pZCBWaWV3R2VzdHVyZUNvbnRyb2xsZXI6
OnJlbW92ZVN3aXBlU25hcHNob3QoKQogICAgIG1fYWN0aXZlR2VzdHVyZVR5cGUgPSBWaWV3R2Vz
dHVyZVR5cGU6Ok5vbmU7CiB9CiAKK1VJR2VzdHVyZVJlY29nbml6ZXIgKlZpZXdHZXN0dXJlQ29u
dHJvbGxlcjo6aW5zdGFsbFNtYXJ0TWFnbmlmaWNhdGlvbkhhbmRsZXIoVUlWaWV3ICp0YXJnZXRW
aWV3LCBVSVNjcm9sbFZpZXcgKnNjcm9sbFZpZXcpCit7CisgICAgQVNTRVJUKCFtX3NtYXJ0TWFn
bmlmaWNhdGlvbkdlc3R1cmVDb250cm9sbGVyKTsKKyAgICBtX3NtYXJ0TWFnbmlmaWNhdGlvbkdl
c3R1cmVDb250cm9sbGVyID0gYWRvcHROUyhbW1dLU21hcnRNYWduaWZpY2F0aW9uR2VzdHVyZUNv
bnRyb2xsZXIgYWxsb2NdIGluaXRXaXRoVmlld0dlc3R1cmVDb250cm9sbGVyOnRoaXMgZ2VzdHVy
ZVJlY29nbml6ZXJWaWV3OnRhcmdldFZpZXddKTsKKyAgICBtX3NtYXJ0TWFnbmlmaWNhdGlvblNj
cm9sbFZpZXcgPSBzY3JvbGxWaWV3OworICAgIG1fc21hcnRNYWduaWZpY2F0aW9uVGFyZ2V0Vmll
dyA9IHRhcmdldFZpZXc7CisKKyAgICByZXR1cm4gW21fc21hcnRNYWduaWZpY2F0aW9uR2VzdHVy
ZUNvbnRyb2xsZXIgZG91YmxlVGFwUmVjb2duaXplcl07Cit9CisKK3ZvaWQgVmlld0dlc3R1cmVD
b250cm9sbGVyOjpoYW5kbGVTbWFydE1hZ25pZmljYXRpb25HZXN0dXJlKEZsb2F0UG9pbnQgb3Jp
Z2luKQoreworICAgIGlmIChtX2FjdGl2ZUdlc3R1cmVUeXBlICE9IFZpZXdHZXN0dXJlVHlwZTo6
Tm9uZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV93ZWJQYWdlUHJveHkucHJvY2VzcygpLnNl
bmQoTWVzc2FnZXM6OlZpZXdHZXN0dXJlR2VvbWV0cnlDb2xsZWN0b3I6OkNvbGxlY3RHZW9tZXRy
eUZvclNtYXJ0TWFnbmlmaWNhdGlvbkdlc3R1cmUob3JpZ2luKSwgbV93ZWJQYWdlUHJveHkucGFn
ZUlEKCkpOworfQorCitzdGF0aWMgYm9vbCBzaG91bGRQYW5TY3JvbGxGb3JTY2FsZShkb3VibGUg
ZnJvbVNjYWxlLCBkb3VibGUgdG9TY2FsZSkKK3sKKyAgICByZXR1cm4gZmFicyh0b1NjYWxlIC0g
ZnJvbVNjYWxlKSA8IHNtYXJ0TWFnbmlmaWNhdGlvblNjYWxlRGVsdGFUaHJlc2hvbGRGb3JQYW5T
Y3JvbGw7Cit9CisKK3N0YXRpYyBDRlRpbWVJbnRlcnZhbCBkdXJhdGlvbkZvclpvb21Ub1NjYWxl
KGRvdWJsZSBmcm9tU2NhbGUsIGRvdWJsZSB0b1NjYWxlKQoreworICAgIGNvbnN0IGRvdWJsZSBt
YXhpbXVtWm9vbUR1cmF0aW9uID0gMC40OworICAgIGNvbnN0IGRvdWJsZSBtaW5pbXVtWm9vbUR1
cmF0aW9uID0gMC4xOworICAgIGNvbnN0IGRvdWJsZSB6b29tRHVyYXRpb25GYWN0b3IgPSAwLjM7
CisKKyAgICByZXR1cm4gc3RkOjptaW4oZmFicyhsb2coZnJvbVNjYWxlKSAtIGxvZyh0b1NjYWxl
KSkgKiB6b29tRHVyYXRpb25GYWN0b3IgKyBtaW5pbXVtWm9vbUR1cmF0aW9uLCBtYXhpbXVtWm9v
bUR1cmF0aW9uKTsKK30KKworc3RhdGljIGJvb2wgem9vbVRvQ2VudGVyQXRTY2FsZShGbG9hdFBv
aW50IG9yaWdpbiwgZG91YmxlIHNjYWxlLCBVSVNjcm9sbFZpZXcgKnNjcm9sbFZpZXcpCit7Cisg
ICAgaWYgKCFbc2Nyb2xsVmlldyBpc1pvb21FbmFibGVkXSkKKyAgICAgICAgcmV0dXJuIGZhbHNl
OworCisgICAgQ0ZUaW1lSW50ZXJ2YWwgZHVyYXRpb24gPSBkdXJhdGlvbkZvclpvb21Ub1NjYWxl
KFtzY3JvbGxWaWV3IHpvb21TY2FsZV0sIHNjYWxlKTsKKyAgICBbc2Nyb2xsVmlldyBfem9vbVRv
Q2VudGVyOm9yaWdpbiBzY2FsZTpzY2FsZSBkdXJhdGlvbjpkdXJhdGlvbl07CisKKyAgICByZXR1
cm4gdHJ1ZTsKK30KKworYm9vbCBWaWV3R2VzdHVyZUNvbnRyb2xsZXI6OnNtYXJ0TWFnbmlmaWNh
dGlvblpvb21Ub1RhcmdldChkb3VibGUgc2NhbGUsIEZsb2F0UmVjdCB0YXJnZXRSZWN0LCBGbG9h
dFBvaW50IG9yaWdpbikKK3sKKyAgICBGbG9hdFNpemUgc2Nyb2xsVmlld1NpemUoW21fc21hcnRN
YWduaWZpY2F0aW9uU2Nyb2xsVmlldyBib3VuZHNdLnNpemUpOworICAgIGRvdWJsZSBjdXJyZW50
U2NhbGVGYWN0b3IgPSBtX3dlYlBhZ2VQcm94eS5wYWdlU2NhbGVGYWN0b3IoKTsKKyAgICBkb3Vi
bGUgcmVsYXRpdmVTY2FsZSA9IHNjYWxlIC8gY3VycmVudFNjYWxlRmFjdG9yOworCisgICAgRmxv
YXRSZWN0IHNjcm9sbFZpZXdUYXJnZXRSZWN0ID0gW21fc21hcnRNYWduaWZpY2F0aW9uU2Nyb2xs
VmlldyBjb252ZXJ0UmVjdDp0YXJnZXRSZWN0IGZyb21WaWV3Om1fc21hcnRNYWduaWZpY2F0aW9u
VGFyZ2V0Vmlldy5nZXQoKV07CisgICAgRmxvYXRSZWN0IHNjYWxlZFNjcm9sbFZpZXdUYXJnZXRS
ZWN0ID0gc2Nyb2xsVmlld1RhcmdldFJlY3Q7CisgICAgc2NhbGVkU2Nyb2xsVmlld1RhcmdldFJl
Y3Quc2NhbGUocmVsYXRpdmVTY2FsZSwgcmVsYXRpdmVTY2FsZSk7CisKKyAgICAvLyBDZW50ZXIg
dGhlIHRhcmdldCByZWN0IGluIHRoZSBzY3JvbGwgdmlldy4KKyAgICAvLyBJZiB0aGUgdGFyZ2V0
IGRvZXNuJ3QgZml0IGluIHRoZSBzY3JvbGwgdmlldywgY2VudGVyIG9uIHRoZSBnZXN0dXJlIGxv
Y2F0aW9uIGluc3RlYWQuCisgICAgRmxvYXRQb2ludCB6b29tQ2VudGVyID0gdGFyZ2V0UmVjdC5j
ZW50ZXIoKTsKKworICAgIGlmIChzY2FsZWRTY3JvbGxWaWV3VGFyZ2V0UmVjdC53aWR0aCgpID4g
c2Nyb2xsVmlld1NpemUud2lkdGgoKSkKKyAgICAgICAgem9vbUNlbnRlci5zZXRYKG9yaWdpbi54
KCkpOworICAgIGlmIChzY2FsZWRTY3JvbGxWaWV3VGFyZ2V0UmVjdC5oZWlnaHQoKSA+IHNjcm9s
bFZpZXdTaXplLmhlaWdodCgpKQorICAgICAgICB6b29tQ2VudGVyLnNldFkob3JpZ2luLnkoKSk7
CisKKyAgICBpZiAoem9vbVRvQ2VudGVyQXRTY2FsZSh6b29tQ2VudGVyLCBzY2FsZSwgbV9zbWFy
dE1hZ25pZmljYXRpb25TY3JvbGxWaWV3LmdldCgpKSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisK
KyAgICByZXR1cm4gZmFsc2U7Cit9CisKK3N0YXRpYyBGbG9hdFBvaW50IGNvbnN0cmFpbkNvbnRl
bnRPZmZzZXQoRmxvYXRQb2ludCBjb250ZW50T2Zmc2V0LCBGbG9hdFNpemUgY29udGVudFNpemUs
IEZsb2F0U2l6ZSBzY3JvbGxWaWV3U2l6ZSkKK3sKKyAgICBGbG9hdFNpemUgbWF4aW11bUNvbnRl
bnRPZmZzZXQgPSBjb250ZW50U2l6ZSAtIHNjcm9sbFZpZXdTaXplOworICAgIGNvbnRlbnRPZmZz
ZXQgPSBjb250ZW50T2Zmc2V0LnNocnVua1RvKEZsb2F0UG9pbnQobWF4aW11bUNvbnRlbnRPZmZz
ZXQud2lkdGgoKSwgbWF4aW11bUNvbnRlbnRPZmZzZXQuaGVpZ2h0KCkpKTsKKyAgICBjb250ZW50
T2Zmc2V0ID0gY29udGVudE9mZnNldC5leHBhbmRlZFRvKEZsb2F0UG9pbnQoKSk7CisgICAgcmV0
dXJuIGNvbnRlbnRPZmZzZXQ7Cit9CisKK2Jvb2wgVmlld0dlc3R1cmVDb250cm9sbGVyOjpzbWFy
dE1hZ25pZmljYXRpb25TY3JvbGxUb1RhcmdldChGbG9hdFJlY3QgdGFyZ2V0UmVjdCwgRmxvYXRQ
b2ludCBvcmlnaW4pCit7CisgICAgaWYgKCFbbV9zbWFydE1hZ25pZmljYXRpb25TY3JvbGxWaWV3
IGlzU2Nyb2xsRW5hYmxlZF0pCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIEZsb2F0U2l6
ZSBzY3JvbGxWaWV3U2l6ZShbbV9zbWFydE1hZ25pZmljYXRpb25TY3JvbGxWaWV3IGJvdW5kc10u
c2l6ZSk7CisgICAgRmxvYXRTaXplIGNvbnRlbnRTaXplKFttX3NtYXJ0TWFnbmlmaWNhdGlvblNj
cm9sbFZpZXcgY29udGVudFNpemVdKTsKKyAgICBGbG9hdFBvaW50IGN1cnJlbnRDb250ZW50T2Zm
c2V0KFttX3NtYXJ0TWFnbmlmaWNhdGlvblNjcm9sbFZpZXcgY29udGVudE9mZnNldF0pOworCisg
ICAgRmxvYXRQb2ludCBzY3JvbGxWaWV3T3JpZ2luKFttX3NtYXJ0TWFnbmlmaWNhdGlvblNjcm9s
bFZpZXcgY29udmVydFBvaW50Om9yaWdpbiBmcm9tVmlldzptX3NtYXJ0TWFnbmlmaWNhdGlvblRh
cmdldFZpZXcuZ2V0KCldKTsKKyAgICBGbG9hdFJlY3Qgc2Nyb2xsVmlld1RhcmdldFJlY3QoW21f
c21hcnRNYWduaWZpY2F0aW9uU2Nyb2xsVmlldyBjb252ZXJ0UmVjdDp0YXJnZXRSZWN0IGZyb21W
aWV3Om1fc21hcnRNYWduaWZpY2F0aW9uVGFyZ2V0Vmlldy5nZXQoKV0pOworCisgICAgLy8gQ2Vu
dGVyIHRoZSB0YXJnZXQgcmVjdCBpbiB0aGUgc2Nyb2xsIHZpZXcuCisgICAgLy8gSWYgdGhlIHRh
cmdldCBkb2Vzbid0IGZpdCBpbiB0aGUgc2Nyb2xsIHZpZXcsIGNlbnRlciBvbiB0aGUgZ2VzdHVy
ZSBsb2NhdGlvbiBpbnN0ZWFkLgorICAgIEZsb2F0UG9pbnQgbmV3Q29udGVudE9mZnNldDsKKyAg
ICBpZiAoc2Nyb2xsVmlld1RhcmdldFJlY3Qud2lkdGgoKSA8PSBzY3JvbGxWaWV3U2l6ZS53aWR0
aCgpKQorICAgICAgICBuZXdDb250ZW50T2Zmc2V0LnNldFgoc2Nyb2xsVmlld1RhcmdldFJlY3Qu
eCgpIC0gKHNjcm9sbFZpZXdTaXplLndpZHRoKCkgLSBzY3JvbGxWaWV3VGFyZ2V0UmVjdC53aWR0
aCgpKSAvIDIpOworICAgIGVsc2UKKyAgICAgICAgbmV3Q29udGVudE9mZnNldC5zZXRYKHNjcm9s
bFZpZXdPcmlnaW4ueCgpIC0gc2Nyb2xsVmlld1NpemUud2lkdGgoKSAvIDIpOworICAgIGlmIChz
Y3JvbGxWaWV3VGFyZ2V0UmVjdC5oZWlnaHQoKSA8PSBzY3JvbGxWaWV3U2l6ZS5oZWlnaHQoKSkK
KyAgICAgICAgbmV3Q29udGVudE9mZnNldC5zZXRZKHNjcm9sbFZpZXdUYXJnZXRSZWN0LnkoKSAt
IChzY3JvbGxWaWV3U2l6ZS5oZWlnaHQoKSAtIHNjcm9sbFZpZXdUYXJnZXRSZWN0LmhlaWdodCgp
KSAvIDIpOworICAgIGVsc2UKKyAgICAgICAgbmV3Q29udGVudE9mZnNldC5zZXRZKHNjcm9sbFZp
ZXdPcmlnaW4ueSgpIC0gc2Nyb2xsVmlld1NpemUuaGVpZ2h0KCkgLyAyKTsKKyAgICBuZXdDb250
ZW50T2Zmc2V0ID0gY29uc3RyYWluQ29udGVudE9mZnNldChuZXdDb250ZW50T2Zmc2V0LCBjb250
ZW50U2l6ZSwgc2Nyb2xsVmlld1NpemUpOworCisgICAgaWYgKGN1cnJlbnRDb250ZW50T2Zmc2V0
ID09IG5ld0NvbnRlbnRPZmZzZXQpIHsKKyAgICAgICAgaWYgKHNjcm9sbFZpZXdUYXJnZXRSZWN0
LndpZHRoKCkgPiBzY3JvbGxWaWV3U2l6ZS53aWR0aCgpKQorICAgICAgICAgICAgbmV3Q29udGVu
dE9mZnNldC5zZXRYKHNjcm9sbFZpZXdPcmlnaW4ueCgpIC0gc2Nyb2xsVmlld1NpemUud2lkdGgo
KSAvIDIpOworICAgICAgICBpZiAoc2Nyb2xsVmlld1RhcmdldFJlY3QuaGVpZ2h0KCkgPiBzY3Jv
bGxWaWV3U2l6ZS5oZWlnaHQoKSkKKyAgICAgICAgICAgIG5ld0NvbnRlbnRPZmZzZXQuc2V0WShz
Y3JvbGxWaWV3T3JpZ2luLnkoKSAtIHNjcm9sbFZpZXdTaXplLmhlaWdodCgpIC8gMik7CisgICAg
ICAgIG5ld0NvbnRlbnRPZmZzZXQgPSBjb25zdHJhaW5Db250ZW50T2Zmc2V0KG5ld0NvbnRlbnRP
ZmZzZXQsIGNvbnRlbnRTaXplLCBzY3JvbGxWaWV3U2l6ZSk7CisgICAgfQorCisgICAgRmxvYXRS
ZWN0IGluc2V0U2Nyb2xsVmlld1JlY3QgPSBVSUVkZ2VJbnNldHNJbnNldFJlY3QoW21fc21hcnRN
YWduaWZpY2F0aW9uU2Nyb2xsVmlldyBib3VuZHNdLCBbbV9zbWFydE1hZ25pZmljYXRpb25TY3Jv
bGxWaWV3IGNvbnRlbnRJbnNldF0pOworCisgICAgZmxvYXQgc2Nyb2xsRGlzdGFuY2UgPSAoY3Vy
cmVudENvbnRlbnRPZmZzZXQgLSBuZXdDb250ZW50T2Zmc2V0KS5kaWFnb25hbExlbmd0aCgpOwor
CisgICAgLy8gSWYgdGhlIGNvbnRlbnQgYWxyZWFkeSBmaXRzIGluIHRoZSBzY3JvbGwgdmlldyBh
bmQgd2UncmUgYWxyZWFkeSB6b29tZWQgaW4gdG8gdGhlIHRhcmdldCBzY2FsZSwKKyAgICAvLyBp
dCBpcyBtb3N0IGxpa2VseSB0aGF0IHRoZSB1c2VyIGludGVuZGVkIHRvIHNjcm9sbCwgc28gdXNl
IGEgc21hbGwgZGlzdGFuY2UgdGhyZXNob2xkIHRvIGluaXRpYXRlIHBhbm5pbmcuCisgICAgaWYg
KGNvbnRlbnRTaXplLndpZHRoKCkgPD0gaW5zZXRTY3JvbGxWaWV3UmVjdC53aWR0aCgpKSB7Cisg
ICAgICAgIGlmIChzY3JvbGxEaXN0YW5jZSA8IHNtYXJ0TWFnbmlmaWNhdGlvblBhblNjcm9sbFRo
cmVzaG9sZFpvb21lZE91dCkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9IGVsc2Ug
aWYgKFVJQ3VycmVudFVzZXJJbnRlcmZhY2VJZGlvbUlzUGFkKCkpIHsKKyAgICAgICAgaWYgKHNj
cm9sbERpc3RhbmNlIDwgc21hcnRNYWduaWZpY2F0aW9uUGFuU2Nyb2xsVGhyZXNob2xkSVBhZCkK
KyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9IGVsc2UgaWYgKHNjcm9sbERpc3RhbmNl
IDwgc21hcnRNYWduaWZpY2F0aW9uUGFuU2Nyb2xsVGhyZXNob2xkSVBob25lKQorICAgICAgICBy
ZXR1cm4gZmFsc2U7CisKKyAgICBbbV9zbWFydE1hZ25pZmljYXRpb25TY3JvbGxWaWV3IHNldENv
bnRlbnRPZmZzZXQ6bmV3Q29udGVudE9mZnNldCBhbmltYXRlZDpZRVNdOworICAgIHJldHVybiB0
cnVlOworfQorCit2b2lkIFZpZXdHZXN0dXJlQ29udHJvbGxlcjo6ZGlkQ29sbGVjdEdlb21ldHJ5
Rm9yU21hcnRNYWduaWZpY2F0aW9uR2VzdHVyZShGbG9hdFBvaW50IG9yaWdpbiwgRmxvYXRSZWN0
IHRhcmdldFJlY3QsIEZsb2F0UmVjdCB2aXNpYmxlQ29udGVudFJlY3QsIGJvb2wgaXNSZXBsYWNl
ZEVsZW1lbnQsIGJvb2wgZnJhbWVIYW5kbGVzTWFnbmlmaWNhdGlvbkdlc3R1cmUsIGRvdWJsZSB2
aWV3cG9ydE1pbmltdW1TY2FsZSwgZG91YmxlIHZpZXdwb3J0TWF4aW11bVNjYWxlKQoreworICAg
IGlmIChmcmFtZUhhbmRsZXNNYWduaWZpY2F0aW9uR2VzdHVyZSkKKyAgICAgICAgcmV0dXJuOwor
CisgICAgZG91YmxlIGN1cnJlbnRTY2FsZUZhY3RvciA9IG1fd2ViUGFnZVByb3h5LnBhZ2VTY2Fs
ZUZhY3RvcigpOworCisgICAgaWYgKHRhcmdldFJlY3QuaXNFbXB0eSgpKSB7CisgICAgICAgIC8v
IEZJWE1FOiBJZiB3ZSBkb24ndCB6b29tLCBzZW5kIHRoZSB0YXAgYWxvbmcgdG8gdGV4dCBzZWxl
Y3Rpb24gKHNlZSA8cmRhcjovL3Byb2JsZW0vNjgxMDM0ND4pLgorICAgICAgICB6b29tVG9DZW50
ZXJBdFNjYWxlKG9yaWdpbiwgdmlld3BvcnRNaW5pbXVtU2NhbGUsIG1fc21hcnRNYWduaWZpY2F0
aW9uU2Nyb2xsVmlldy5nZXQoKSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBkb3Vi
bGUgbWF4aW11bVNjYWxlID0gc3RkOjptaW4odmlld3BvcnRNYXhpbXVtU2NhbGUsIHNtYXJ0TWFn
bmlmaWNhdGlvbk1heGltdW1TY2FsZSk7CisgICAgZG91YmxlIG1pbmltdW1TY2FsZSA9IHN0ZDo6
bWF4KHZpZXdwb3J0TWluaW11bVNjYWxlLCBzbWFydE1hZ25pZmljYXRpb25NaW5pbXVtU2NhbGUp
OworCisgICAgZG91YmxlIHBhZGRlZEN1cnJlbnRTY2FsZUZhY3RvciA9IG1fd2ViUGFnZVByb3h5
LnBhZ2VTY2FsZUZhY3RvcigpICogKDEgLSBzbWFydE1hZ25pZmljYXRpb25FbGVtZW50UGFkZGlu
Zyk7CisKKyAgICBkb3VibGUgaG9yaXpvbnRhbFNjYWxlID0gcGFkZGVkQ3VycmVudFNjYWxlRmFj
dG9yICogKHZpc2libGVDb250ZW50UmVjdC53aWR0aCgpIC8gdGFyZ2V0UmVjdC53aWR0aCgpKTsK
KyAgICBkb3VibGUgdmVydGljYWxTY2FsZSA9IHBhZGRlZEN1cnJlbnRTY2FsZUZhY3RvciAqICh2
aXNpYmxlQ29udGVudFJlY3QuaGVpZ2h0KCkgLyB0YXJnZXRSZWN0LmhlaWdodCgpKTsKKworICAg
IGhvcml6b250YWxTY2FsZSA9IHN0ZDo6bWluKHN0ZDo6bWF4KGhvcml6b250YWxTY2FsZSwgbWlu
aW11bVNjYWxlKSwgbWF4aW11bVNjYWxlKTsKKyAgICB2ZXJ0aWNhbFNjYWxlID0gc3RkOjptaW4o
c3RkOjptYXgodmVydGljYWxTY2FsZSwgbWluaW11bVNjYWxlKSwgbWF4aW11bVNjYWxlKTsKKwor
ICAgIC8vIEZvciByZXBsYWNlZCBlbGVtZW50cyBsaWtlIGltYWdlcywgd2Ugd2FudCB0byBmaXQg
dGhlIHdob2xlIGVsZW1lbnQKKyAgICAvLyBpbiB0aGUgdmlldywgc28gc2NhbGUgaXQgZG93biBl
bm91Z2ggdG8gbWFrZSBib3RoIGRpbWVuc2lvbnMgZml0IGlmIHBvc3NpYmxlLgorICAgIC8vIEZv
ciBvdGhlciBlbGVtZW50cywgdHJ5IHRvIGZpdCB0aGVtIGhvcml6b250YWxseS4KKyAgICBkb3Vi
bGUgdGFyZ2V0U2NhbGUgPSBpc1JlcGxhY2VkRWxlbWVudCA/IHN0ZDo6bWluKGhvcml6b250YWxT
Y2FsZSwgdmVydGljYWxTY2FsZSkgOiBob3Jpem9udGFsU2NhbGU7CisKKyAgICAvLyBGSVhNRTog
Q2hlY2sgaWYgdGV4dCBzZWxlY3Rpb24gd2FudHMgdG8gY29uc3VtZSB0aGUgZG91YmxlIHRhcCBi
ZWZvcmUgd2UgYXR0ZW1wdCBtYWduaWZpY2F0aW9uLgorCisgICAgaWYgKHNob3VsZFBhblNjcm9s
bEZvclNjYWxlKGN1cnJlbnRTY2FsZUZhY3RvciwgdGFyZ2V0U2NhbGUpKSB7CisgICAgICAgIGlm
IChzbWFydE1hZ25pZmljYXRpb25TY3JvbGxUb1RhcmdldCh0YXJnZXRSZWN0LCBvcmlnaW4pKQor
ICAgICAgICAgICAgcmV0dXJuOworICAgIH0gZWxzZSBpZiAodGFyZ2V0U2NhbGUgIT0gY3VycmVu
dFNjYWxlRmFjdG9yKSB7CisgICAgICAgIGlmIChzbWFydE1hZ25pZmljYXRpb25ab29tVG9UYXJn
ZXQodGFyZ2V0U2NhbGUsIHRhcmdldFJlY3QsIG9yaWdpbikpCisgICAgICAgICAgICByZXR1cm47
CisgICAgfQorCisgICAgLy8gRklYTUU6IElmIHdlIHN0aWxsIGRvbid0IHpvb20sIHNlbmQgdGhl
IHRhcCBhbG9uZyB0byB0ZXh0IHNlbGVjdGlvbiAoc2VlIDxyZGFyOi8vcHJvYmxlbS82ODEwMzQ0
PikuCisgICAgem9vbVRvQ2VudGVyQXRTY2FsZShvcmlnaW4sIHZpZXdwb3J0TWluaW11bVNjYWxl
LCBtX3NtYXJ0TWFnbmlmaWNhdGlvblNjcm9sbFZpZXcuZ2V0KCkpOworfQorCiB9IC8vIG5hbWVz
cGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvVmll
d0dlc3R1cmVDb250cm9sbGVyLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1ZpZXdH
ZXN0dXJlQ29udHJvbGxlci5oCmluZGV4IGM2NDljNjEuLjk3YWNlZDUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvVmlld0dlc3R1cmVDb250cm9sbGVyLmgKKysrIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9WaWV3R2VzdHVyZUNvbnRyb2xsZXIuaApAQCAt
MzQsNyArMzQsMTAgQEAKIE9CSkNfQ0xBU1MgQ0FMYXllcjsKIAogI2lmIFBMQVRGT1JNKElPUykK
K09CSkNfQ0xBU1MgVUlHZXN0dXJlUmVjb2duaXplcjsKK09CSkNfQ0xBU1MgVUlTY3JvbGxWaWV3
OwogT0JKQ19DTEFTUyBVSVZpZXc7CitPQkpDX0NMQVNTIFdLU21hcnRNYWduaWZpY2F0aW9uR2Vz
dHVyZUNvbnRyb2xsZXI7CiBPQkpDX0NMQVNTIFdLU3dpcGVUcmFuc2l0aW9uQ29udHJvbGxlcjsK
IE9CSkNfQ0xBU1MgX1VJVmlld0NvbnRyb2xsZXJUcmFuc2l0aW9uQ29udGV4dDsKIE9CSkNfQ0xB
U1MgX1VJTmF2aWdhdGlvbkludGVyYWN0aXZlVHJhbnNpdGlvbkJhc2U7CkBAIC01OCw4ICs2MSw4
IEBAIHB1YmxpYzoKICAgICAgICAgTm9uZSwKICNpZiAhUExBVEZPUk0oSU9TKQogICAgICAgICBN
YWduaWZpY2F0aW9uLAotICAgICAgICBTbWFydE1hZ25pZmljYXRpb24sCiAjZW5kaWYKKyAgICAg
ICAgU21hcnRNYWduaWZpY2F0aW9uLAogICAgICAgICBTd2lwZQogICAgIH07CiAgICAgCkBAIC03
MywxMSArNzYsMTIgQEAgcHVibGljOgogICAgICAgICBSaWdodAogICAgIH07CiAgICAgCisgICAg
dm9pZCBoYW5kbGVTbWFydE1hZ25pZmljYXRpb25HZXN0dXJlKFdlYkNvcmU6OkZsb2F0UG9pbnQg
b3JpZ2luKTsKKwogI2lmICFQTEFURk9STShJT1MpCiAgICAgZG91YmxlIG1hZ25pZmljYXRpb24o
KSBjb25zdDsKIAogICAgIHZvaWQgaGFuZGxlTWFnbmlmaWNhdGlvbkdlc3R1cmUoZG91YmxlIHNj
YWxlLCBXZWJDb3JlOjpGbG9hdFBvaW50IG9yaWdpbik7Ci0gICAgdm9pZCBoYW5kbGVTbWFydE1h
Z25pZmljYXRpb25HZXN0dXJlKFdlYkNvcmU6OkZsb2F0UG9pbnQgb3JpZ2luKTsKIAogICAgIGJv
b2wgaGFuZGxlU2Nyb2xsV2hlZWxFdmVudChOU0V2ZW50ICopOwogICAgIHZvaWQgd2hlZWxFdmVu
dFdhc05vdEhhbmRsZWRCeVdlYkNvcmUoTlNFdmVudCAqKTsKQEAgLTg4LDYgKzkyLDggQEAgcHVi
bGljOgogICAgIHZvaWQgZW5kQWN0aXZlR2VzdHVyZSgpOwogI2Vsc2UKICAgICB2b2lkIGluc3Rh
bGxTd2lwZUhhbmRsZXIoVUlWaWV3ICpnZXN0dXJlUmVjb2duaXplclZpZXcsIFVJVmlldyAqc3dp
cGluZ1ZpZXcpOworICAgIHZvaWQgdW5pbnN0YWxsU3dpcGVIYW5kbGVyKCk7CisgICAgVUlHZXN0
dXJlUmVjb2duaXplciAqaW5zdGFsbFNtYXJ0TWFnbmlmaWNhdGlvbkhhbmRsZXIoVUlWaWV3ICp0
YXJnZXRWaWV3LCBVSVNjcm9sbFZpZXcgKnNjcm9sbFZpZXcpOwogICAgIGJvb2wgY2FuU3dpcGVJ
bkRpcmVjdGlvbihTd2lwZURpcmVjdGlvbik7CiAgICAgdm9pZCBiZWdpblN3aXBlR2VzdHVyZShf
VUlOYXZpZ2F0aW9uSW50ZXJhY3RpdmVUcmFuc2l0aW9uQmFzZSAqLCBTd2lwZURpcmVjdGlvbik7
CiAgICAgdm9pZCBlbmRTd2lwZUdlc3R1cmUoV2ViQmFja0ZvcndhcmRMaXN0SXRlbSogdGFyZ2V0
SXRlbSwgX1VJVmlld0NvbnRyb2xsZXJUcmFuc2l0aW9uQ29udGV4dCAqLCBib29sIGNhbmNlbGxl
ZCk7CkBAIC0xMDEsMTAgKzEwNywxNCBAQCBwcml2YXRlOgogICAgIHZvaWQgcmVtb3ZlU3dpcGVT
bmFwc2hvdCgpOwogICAgIHZvaWQgc3dpcGVTbmFwc2hvdFdhdGNoZG9nVGltZXJGaXJlZChXZWJD
b3JlOjpUaW1lcjxWaWV3R2VzdHVyZUNvbnRyb2xsZXI+Kik7CiAKLSNpZiAhUExBVEZPUk0oSU9T
KQogICAgIC8vIE1lc3NhZ2UgaGFuZGxlcnMuCisgICAgdm9pZCBkaWRDb2xsZWN0R2VvbWV0cnlG
b3JTbWFydE1hZ25pZmljYXRpb25HZXN0dXJlKFdlYkNvcmU6OkZsb2F0UG9pbnQgb3JpZ2luLCBX
ZWJDb3JlOjpGbG9hdFJlY3QgcmVuZGVyUmVjdCwgV2ViQ29yZTo6RmxvYXRSZWN0IHZpc2libGVD
b250ZW50Qm91bmRzLCBib29sIGlzUmVwbGFjZWRFbGVtZW50LCBib29sIGZyYW1lSGFuZGxlc01h
Z25pZmljYXRpb25HZXN0dXJlLCBkb3VibGUgdmlld3BvcnRNaW5pbXVtU2NhbGUsIGRvdWJsZSB2
aWV3cG9ydE1heGltdW1TY2FsZSk7CisKKyNpZiBQTEFURk9STShJT1MpCisgICAgYm9vbCBzbWFy
dE1hZ25pZmljYXRpb25ab29tVG9UYXJnZXQoZG91YmxlIG1hZ25pZmljYXRpb24sIFdlYkNvcmU6
OkZsb2F0UmVjdCB0YXJnZXRSZWN0LCBXZWJDb3JlOjpGbG9hdFBvaW50IG9yaWdpbik7CisgICAg
Ym9vbCBzbWFydE1hZ25pZmljYXRpb25TY3JvbGxUb1RhcmdldChXZWJDb3JlOjpGbG9hdFJlY3Qg
dGFyZ2V0UmVjdCwgV2ViQ29yZTo6RmxvYXRQb2ludCBvcmlnaW4pOworI2Vsc2UKICAgICB2b2lk
IGRpZENvbGxlY3RHZW9tZXRyeUZvck1hZ25pZmljYXRpb25HZXN0dXJlKFdlYkNvcmU6OkZsb2F0
UmVjdCB2aXNpYmxlQ29udGVudEJvdW5kcywgYm9vbCBmcmFtZUhhbmRsZXNNYWduaWZpY2F0aW9u
R2VzdHVyZSk7Ci0gICAgdm9pZCBkaWRDb2xsZWN0R2VvbWV0cnlGb3JTbWFydE1hZ25pZmljYXRp
b25HZXN0dXJlKFdlYkNvcmU6OkZsb2F0UG9pbnQgb3JpZ2luLCBXZWJDb3JlOjpGbG9hdFJlY3Qg
cmVuZGVyUmVjdCwgV2ViQ29yZTo6RmxvYXRSZWN0IHZpc2libGVDb250ZW50Qm91bmRzLCBib29s
IGlzUmVwbGFjZWRFbGVtZW50LCBib29sIGZyYW1lSGFuZGxlc01hZ25pZmljYXRpb25HZXN0dXJl
KTsKICAgICB2b2lkIGRpZEhpdFJlbmRlclRyZWVTaXplVGhyZXNob2xkKCk7CiAKICAgICB2b2lk
IGVuZE1hZ25pZmljYXRpb25HZXN0dXJlKCk7CkBAIC0xNDksNiArMTU5LDkgQEAgcHJpdmF0ZToK
ICAgICBSZXRhaW5QdHI8VUlWaWV3PiBtX3NuYXBzaG90VmlldzsKICAgICBSZXRhaW5QdHI8VUlW
aWV3PiBtX3RyYW5zaXRpb25Db250YWluZXJWaWV3OwogICAgIFJldGFpblB0cjxXS1N3aXBlVHJh
bnNpdGlvbkNvbnRyb2xsZXI+IG1fc3dpcGVJbnRlcmFjdGl2ZVRyYW5zaXRpb25EZWxlZ2F0ZTsK
KyAgICBSZXRhaW5QdHI8V0tTbWFydE1hZ25pZmljYXRpb25HZXN0dXJlQ29udHJvbGxlcj4gbV9z
bWFydE1hZ25pZmljYXRpb25HZXN0dXJlQ29udHJvbGxlcjsKKyAgICBSZXRhaW5QdHI8VUlTY3Jv
bGxWaWV3PiBtX3NtYXJ0TWFnbmlmaWNhdGlvblNjcm9sbFZpZXc7CisgICAgUmV0YWluUHRyPFVJ
Vmlldz4gbV9zbWFydE1hZ25pZmljYXRpb25UYXJnZXRWaWV3OwogICAgIHVpbnQ2NF90IG1fdGFy
Z2V0UmVuZGVyVHJlZVNpemU7CiAjZW5kaWYKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvbWFjL1ZpZXdHZXN0dXJlQ29udHJvbGxlci5tZXNzYWdlcy5pbiBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvVmlld0dlc3R1cmVDb250cm9sbGVyLm1lc3NhZ2VzLmlu
CmluZGV4IGEwYjU4YzAuLjgyOTIzMDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9tYWMvVmlld0dlc3R1cmVDb250cm9sbGVyLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9tYWMvVmlld0dlc3R1cmVDb250cm9sbGVyLm1lc3NhZ2VzLmluCkBA
IC0yMSw5ICsyMSwxMSBAQAogIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogCiBtZXNzYWdlcyAtPiBWaWV3R2VzdHVy
ZUNvbnRyb2xsZXIgeworICAgIERpZENvbGxlY3RHZW9tZXRyeUZvclNtYXJ0TWFnbmlmaWNhdGlv
bkdlc3R1cmUoV2ViQ29yZTo6RmxvYXRQb2ludCBvcmlnaW4sIFdlYkNvcmU6OkZsb2F0UmVjdCBy
ZW5kZXJSZWN0LCBXZWJDb3JlOjpGbG9hdFJlY3QgdmlzaWJsZUNvbnRlbnRCb3VuZHMsIGJvb2wg
aXNSZXBsYWNlZEVsZW1lbnQsIGJvb2wgZnJhbWVIYW5kbGVzTWFnbmlmaWNhdGlvbkdlc3R1cmUs
IGRvdWJsZSB2aWV3cG9ydE1pbmltdW1TY2FsZSwgZG91YmxlIHZpZXdwb3J0TWF4aW11bVNjYWxl
KQorCiAjaWYgIVBMQVRGT1JNKElPUykKICAgICBEaWRDb2xsZWN0R2VvbWV0cnlGb3JNYWduaWZp
Y2F0aW9uR2VzdHVyZShXZWJDb3JlOjpGbG9hdFJlY3QgdmlzaWJsZUNvbnRlbnRCb3VuZHMsIGJv
b2wgZnJhbWVIYW5kbGVzTWFnbmlmaWNhdGlvbkdlc3R1cmUpCi0gICAgRGlkQ29sbGVjdEdlb21l
dHJ5Rm9yU21hcnRNYWduaWZpY2F0aW9uR2VzdHVyZShXZWJDb3JlOjpGbG9hdFBvaW50IG9yaWdp
biwgV2ViQ29yZTo6RmxvYXRSZWN0IHJlbmRlclJlY3QsIFdlYkNvcmU6OkZsb2F0UmVjdCB2aXNp
YmxlQ29udGVudEJvdW5kcywgYm9vbCBpc1JlcGxhY2VkRWxlbWVudCwgYm9vbCBmcmFtZUhhbmRs
ZXNNYWduaWZpY2F0aW9uR2VzdHVyZSkKKwogICAgIERpZEhpdFJlbmRlclRyZWVTaXplVGhyZXNo
b2xkKCkKICNlbmRpZgogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21h
Yy9WaWV3R2VzdHVyZUNvbnRyb2xsZXJNYWMubW0gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
bWFjL1ZpZXdHZXN0dXJlQ29udHJvbGxlck1hYy5tbQppbmRleCBhMmU0MjFlLi4xYWExNzU2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1ZpZXdHZXN0dXJlQ29udHJv
bGxlck1hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1ZpZXdHZXN0dXJl
Q29udHJvbGxlck1hYy5tbQpAQCAtMjA1LDEzICsyMDUsMTUgQEAgc3RhdGljIGZsb2F0IG1heGlt
dW1SZWN0YW5nbGVDb21wb25lbnREZWx0YShGbG9hdFJlY3QgYSwgRmxvYXRSZWN0IGIpCiAgICAg
cmV0dXJuIHN0ZDo6bWF4KGZhYnMoYS54KCkgLSBiLngoKSksIHN0ZDo6bWF4KGZhYnMoYS55KCkg
LSBiLnkoKSksIHN0ZDo6bWF4KGZhYnMoYS53aWR0aCgpIC0gYi53aWR0aCgpKSwgZmFicyhhLmhl
aWdodCgpIC0gYi5oZWlnaHQoKSkpKSk7CiB9CiAKLXZvaWQgVmlld0dlc3R1cmVDb250cm9sbGVy
OjpkaWRDb2xsZWN0R2VvbWV0cnlGb3JTbWFydE1hZ25pZmljYXRpb25HZXN0dXJlKEZsb2F0UG9p
bnQgb3JpZ2luLCBGbG9hdFJlY3QgcmVuZGVyUmVjdCwgRmxvYXRSZWN0IHZpc2libGVDb250ZW50
UmVjdCwgYm9vbCBpc1JlcGxhY2VkRWxlbWVudCwgYm9vbCBmcmFtZUhhbmRsZXNNYWduaWZpY2F0
aW9uR2VzdHVyZSkKK3ZvaWQgVmlld0dlc3R1cmVDb250cm9sbGVyOjpkaWRDb2xsZWN0R2VvbWV0
cnlGb3JTbWFydE1hZ25pZmljYXRpb25HZXN0dXJlKEZsb2F0UG9pbnQgb3JpZ2luLCBGbG9hdFJl
Y3QgcmVuZGVyUmVjdCwgRmxvYXRSZWN0IHZpc2libGVDb250ZW50UmVjdCwgYm9vbCBpc1JlcGxh
Y2VkRWxlbWVudCwgYm9vbCBmcmFtZUhhbmRsZXNNYWduaWZpY2F0aW9uR2VzdHVyZSwgZG91Ymxl
IHZpZXdwb3J0TWluaW11bVNjYWxlLCBkb3VibGUgdmlld3BvcnRNYXhpbXVtU2NhbGUpCiB7CiAg
ICAgaWYgKGZyYW1lSGFuZGxlc01hZ25pZmljYXRpb25HZXN0dXJlKQogICAgICAgICByZXR1cm47
CiAKICAgICBkb3VibGUgY3VycmVudFNjYWxlRmFjdG9yID0gbV93ZWJQYWdlUHJveHkucGFnZVNj
YWxlRmFjdG9yKCk7CiAKKyAgICAvLyBGSVhNRTogQWRvcHQgKGJ5IHNoYXJpbmcpIHRoZSBWaWV3
R2VzdHVyZUNvbnRyb2xsZXJJT1MgaGV1cmlzdGljcy4KKwogICAgIEZsb2F0UmVjdCB1bnNjYWxl
ZFRhcmdldFJlY3QgPSByZW5kZXJSZWN0OwogICAgIHVuc2NhbGVkVGFyZ2V0UmVjdC5zY2FsZSgx
IC8gY3VycmVudFNjYWxlRmFjdG9yKTsKICAgICB1bnNjYWxlZFRhcmdldFJlY3QuaW5mbGF0ZVgo
dW5zY2FsZWRUYXJnZXRSZWN0LndpZHRoKCkgKiBzbWFydE1hZ25pZmljYXRpb25FbGVtZW50UGFk
ZGluZyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvVmll
d0dlc3R1cmVHZW9tZXRyeUNvbGxlY3Rvci5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYlBhZ2UvVmlld0dlc3R1cmVHZW9tZXRyeUNvbGxlY3Rvci5jcHAKaW5kZXggZGQ0ZGJiMi4u
ODI3MjFkNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1Zp
ZXdHZXN0dXJlR2VvbWV0cnlDb2xsZWN0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViUGFnZS9WaWV3R2VzdHVyZUdlb21ldHJ5Q29sbGVjdG9yLmNwcApAQCAtMjYsMTQg
KzI2LDEzIEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiVmlld0dlc3R1cmVHZW9t
ZXRyeUNvbGxlY3Rvci5oIgogCi0jaWYgIVBMQVRGT1JNKElPUykKLQogI2luY2x1ZGUgIlZpZXdH
ZXN0dXJlQ29udHJvbGxlck1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiVmlld0dlc3R1cmVHZW9tZXRy
eUNvbGxlY3Rvck1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgi
CiAjaW5jbHVkZSAiV2ViRnJhbWUuaCIKICNpbmNsdWRlICJXZWJQYWdlLmgiCiAjaW5jbHVkZSAi
V2ViUHJvY2Vzcy5oIgorI2luY2x1ZGUgPFdlYkNvcmUvRnJhbWUuaD4KICNpbmNsdWRlIDxXZWJD
b3JlL0ZyYW1lVmlldy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvSGl0VGVzdFJlc3VsdC5oPgogI2lu
Y2x1ZGUgPFdlYkNvcmUvUmVuZGVyVmlldy5oPgpAQCAtNDQsOCArNDMsMTAgQEAgbmFtZXNwYWNl
IFdlYktpdCB7CiAKIFZpZXdHZXN0dXJlR2VvbWV0cnlDb2xsZWN0b3I6OlZpZXdHZXN0dXJlR2Vv
bWV0cnlDb2xsZWN0b3IoV2ViUGFnZSYgd2ViUGFnZSkKICAgICA6IG1fd2ViUGFnZSh3ZWJQYWdl
KQorI2lmIFBMQVRGT1JNKE1BQykKICAgICAsIG1fcmVuZGVyVHJlZVNpemVOb3RpZmljYXRpb25U
aHJlc2hvbGQoMCkKICAgICAsIG1fcmVuZGVyVHJlZVNpemVOb3RpZmljYXRpb25UaW1lcihSdW5M
b29wOjptYWluKCksIHRoaXMsICZWaWV3R2VzdHVyZUdlb21ldHJ5Q29sbGVjdG9yOjpyZW5kZXJU
cmVlU2l6ZU5vdGlmaWNhdGlvblRpbWVyRmlyZWQpCisjZW5kaWYKIHsKICAgICBXZWJQcm9jZXNz
OjpzaGFyZWQoKS5hZGRNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OlZpZXdHZXN0dXJlR2VvbWV0
cnlDb2xsZWN0b3I6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgbV93ZWJQYWdlLnBhZ2VJRCgpLCAq
dGhpcyk7CiB9CkBAIC01NSwzMCArNTYsNDIgQEAgVmlld0dlc3R1cmVHZW9tZXRyeUNvbGxlY3Rv
cjo6flZpZXdHZXN0dXJlR2VvbWV0cnlDb2xsZWN0b3IoKQogICAgIFdlYlByb2Nlc3M6OnNoYXJl
ZCgpLnJlbW92ZU1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6Vmlld0dlc3R1cmVHZW9tZXRyeUNv
bGxlY3Rvcjo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtX3dlYlBhZ2UucGFnZUlEKCkpOwogfQog
Ci12b2lkIFZpZXdHZXN0dXJlR2VvbWV0cnlDb2xsZWN0b3I6OmNvbGxlY3RHZW9tZXRyeUZvck1h
Z25pZmljYXRpb25HZXN0dXJlKCkKLXsKLSAgICBGbG9hdFJlY3QgdmlzaWJsZUNvbnRlbnRSZWN0
ID0gbV93ZWJQYWdlLm1haW5GcmFtZVZpZXcoKS0+dmlzaWJsZUNvbnRlbnRSZWN0SW5jbHVkaW5n
U2Nyb2xsYmFycygpOwotICAgIGJvb2wgZnJhbWVIYW5kbGVzTWFnbmlmaWNhdGlvbkdlc3R1cmUg
PSBtX3dlYlBhZ2UubWFpbldlYkZyYW1lKCktPmhhbmRsZXNQYWdlU2NhbGVHZXN0dXJlKCk7Ci0g
ICAgbV93ZWJQYWdlLnNlbmQoTWVzc2FnZXM6OlZpZXdHZXN0dXJlQ29udHJvbGxlcjo6RGlkQ29s
bGVjdEdlb21ldHJ5Rm9yTWFnbmlmaWNhdGlvbkdlc3R1cmUodmlzaWJsZUNvbnRlbnRSZWN0LCBm
cmFtZUhhbmRsZXNNYWduaWZpY2F0aW9uR2VzdHVyZSkpOwotfQotCiB2b2lkIFZpZXdHZXN0dXJl
R2VvbWV0cnlDb2xsZWN0b3I6OmNvbGxlY3RHZW9tZXRyeUZvclNtYXJ0TWFnbmlmaWNhdGlvbkdl
c3R1cmUoRmxvYXRQb2ludCBvcmlnaW4pCiB7CiAgICAgRmxvYXRSZWN0IHZpc2libGVDb250ZW50
UmVjdCA9IG1fd2ViUGFnZS5tYWluRnJhbWVWaWV3KCktPnZpc2libGVDb250ZW50UmVjdEluY2x1
ZGluZ1Njcm9sbGJhcnMoKTsKICAgICBib29sIGZyYW1lSGFuZGxlc01hZ25pZmljYXRpb25HZXN0
dXJlID0gbV93ZWJQYWdlLm1haW5XZWJGcmFtZSgpLT5oYW5kbGVzUGFnZVNjYWxlR2VzdHVyZSgp
OwogCi0gICAgRmxvYXRQb2ludCBzY3JvbGxlZE9yaWdpbiA9IG9yaWdpbjsKLSAgICBzY3JvbGxl
ZE9yaWdpbi5tb3ZlQnkobV93ZWJQYWdlLm1haW5GcmFtZVZpZXcoKS0+c2Nyb2xsUG9zaXRpb24o
KSk7Ci0KICAgICBIaXRUZXN0UmVxdWVzdCByZXF1ZXN0KEhpdFRlc3RSZXF1ZXN0OjpSZWFkT25s
eSB8IEhpdFRlc3RSZXF1ZXN0OjpBY3RpdmUgfCBIaXRUZXN0UmVxdWVzdDo6RGlzYWxsb3dTaGFk
b3dDb250ZW50KTsKLSAgICBIaXRUZXN0UmVzdWx0IGhpdFRlc3RSZXN1bHQgPSBIaXRUZXN0UmVz
dWx0KHNjcm9sbGVkT3JpZ2luKTsKKyAgICBJbnRQb2ludCBvcmlnaW5JbkNvbnRlbnRzU3BhY2Ug
PSBtX3dlYlBhZ2UubWFpbkZyYW1lVmlldygpLT53aW5kb3dUb0NvbnRlbnRzKHJvdW5kZWRJbnRQ
b2ludChvcmlnaW4pKTsKKyAgICBIaXRUZXN0UmVzdWx0IGhpdFRlc3RSZXN1bHQgPSBIaXRUZXN0
UmVzdWx0KG9yaWdpbkluQ29udGVudHNTcGFjZSk7CisKICAgICBtX3dlYlBhZ2UubWFpbkZyYW1l
VmlldygpLT5yZW5kZXJWaWV3KCktPmhpdFRlc3QocmVxdWVzdCwgaGl0VGVzdFJlc3VsdCk7CiAK
LSAgICBpZiAoaGl0VGVzdFJlc3VsdC5pbm5lck5vZGUoKSkgeworICAgIGlmIChOb2RlICpub2Rl
ID0gaGl0VGVzdFJlc3VsdC5pbm5lck5vZGUoKSkgewogICAgICAgICBib29sIGlzUmVwbGFjZWQ7
Ci0gICAgICAgIEZsb2F0UmVjdCByZW5kZXJSZWN0ID0gaGl0VGVzdFJlc3VsdC5pbm5lck5vZGUo
KS0+cmVuZGVyUmVjdCgmaXNSZXBsYWNlZCk7Ci0gICAgICAgIG1fd2ViUGFnZS5zZW5kKE1lc3Nh
Z2VzOjpWaWV3R2VzdHVyZUNvbnRyb2xsZXI6OkRpZENvbGxlY3RHZW9tZXRyeUZvclNtYXJ0TWFn
bmlmaWNhdGlvbkdlc3R1cmUob3JpZ2luLCByZW5kZXJSZWN0LCB2aXNpYmxlQ29udGVudFJlY3Qs
IGlzUmVwbGFjZWQsIGZyYW1lSGFuZGxlc01hZ25pZmljYXRpb25HZXN0dXJlKSk7CisgICAgICAg
IEZsb2F0UmVjdCByZW5kZXJSZWN0ID0gbm9kZS0+cmVuZGVyUmVjdCgmaXNSZXBsYWNlZCk7CisK
KyNpZiBQTEFURk9STShNQUMpCisgICAgICAgIGRvdWJsZSB2aWV3cG9ydE1pbmltdW1TY2FsZSA9
IDA7CisgICAgICAgIGRvdWJsZSB2aWV3cG9ydE1heGltdW1TY2FsZSA9IHN0ZDo6bnVtZXJpY19s
aW1pdHM8ZG91YmxlPjo6bWF4KCk7CisjZWxzZQorICAgICAgICBkb3VibGUgdmlld3BvcnRNaW5p
bXVtU2NhbGUgPSBtX3dlYlBhZ2UubWluaW11bVBhZ2VTY2FsZUZhY3RvcigpOworICAgICAgICBk
b3VibGUgdmlld3BvcnRNYXhpbXVtU2NhbGUgPSBtX3dlYlBhZ2UubWF4aW11bVBhZ2VTY2FsZUZh
Y3RvcigpOworI2VuZGlmCisKKyAgICAgICAgbV93ZWJQYWdlLnNlbmQoTWVzc2FnZXM6OlZpZXdH
ZXN0dXJlQ29udHJvbGxlcjo6RGlkQ29sbGVjdEdlb21ldHJ5Rm9yU21hcnRNYWduaWZpY2F0aW9u
R2VzdHVyZShvcmlnaW4sIHJlbmRlclJlY3QsIHZpc2libGVDb250ZW50UmVjdCwgaXNSZXBsYWNl
ZCwgZnJhbWVIYW5kbGVzTWFnbmlmaWNhdGlvbkdlc3R1cmUsIHZpZXdwb3J0TWluaW11bVNjYWxl
LCB2aWV3cG9ydE1heGltdW1TY2FsZSkpOworICAgICAgICByZXR1cm47CiAgICAgfQorCisgICAg
bV93ZWJQYWdlLnNlbmQoTWVzc2FnZXM6OlZpZXdHZXN0dXJlQ29udHJvbGxlcjo6RGlkQ29sbGVj
dEdlb21ldHJ5Rm9yU21hcnRNYWduaWZpY2F0aW9uR2VzdHVyZShGbG9hdFBvaW50KCksIEZsb2F0
UmVjdCgpLCBGbG9hdFJlY3QoKSwgZmFsc2UsIGZyYW1lSGFuZGxlc01hZ25pZmljYXRpb25HZXN0
dXJlLCAwLCAwKSk7Cit9CisKKyNpZiBQTEFURk9STShNQUMpCit2b2lkIFZpZXdHZXN0dXJlR2Vv
bWV0cnlDb2xsZWN0b3I6OmNvbGxlY3RHZW9tZXRyeUZvck1hZ25pZmljYXRpb25HZXN0dXJlKCkK
K3sKKyAgICBGbG9hdFJlY3QgdmlzaWJsZUNvbnRlbnRSZWN0ID0gbV93ZWJQYWdlLm1haW5GcmFt
ZVZpZXcoKS0+dmlzaWJsZUNvbnRlbnRSZWN0SW5jbHVkaW5nU2Nyb2xsYmFycygpOworICAgIGJv
b2wgZnJhbWVIYW5kbGVzTWFnbmlmaWNhdGlvbkdlc3R1cmUgPSBtX3dlYlBhZ2UubWFpbldlYkZy
YW1lKCktPmhhbmRsZXNQYWdlU2NhbGVHZXN0dXJlKCk7CisgICAgbV93ZWJQYWdlLnNlbmQoTWVz
c2FnZXM6OlZpZXdHZXN0dXJlQ29udHJvbGxlcjo6RGlkQ29sbGVjdEdlb21ldHJ5Rm9yTWFnbmlm
aWNhdGlvbkdlc3R1cmUodmlzaWJsZUNvbnRlbnRSZWN0LCBmcmFtZUhhbmRsZXNNYWduaWZpY2F0
aW9uR2VzdHVyZSkpOwogfQogCiB2b2lkIFZpZXdHZXN0dXJlR2VvbWV0cnlDb2xsZWN0b3I6Om1h
aW5GcmFtZURpZExheW91dCgpCkBAIC05Myw3ICsxMDYsNyBAQCB2b2lkIFZpZXdHZXN0dXJlR2Vv
bWV0cnlDb2xsZWN0b3I6OnJlbmRlclRyZWVTaXplTm90aWZpY2F0aW9uVGltZXJGaXJlZCgpCiB7
CiAgICAgbV93ZWJQYWdlLnNlbmQoTWVzc2FnZXM6OlZpZXdHZXN0dXJlQ29udHJvbGxlcjo6RGlk
SGl0UmVuZGVyVHJlZVNpemVUaHJlc2hvbGQoKSk7CiB9CisjZW5kaWYKIAogfSAvLyBuYW1lc3Bh
Y2UgV2ViS2l0CiAKLSNlbmRpZiAvLyAhUExBVEZPUk0oSU9TKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1ZpZXdHZXN0dXJlR2VvbWV0cnlDb2xsZWN0b3Iu
aCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9WaWV3R2VzdHVyZUdlb21ldHJ5
Q29sbGVjdG9yLmgKaW5kZXggYTMwODhlYS4uZTM4NmNmNyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1ZpZXdHZXN0dXJlR2VvbWV0cnlDb2xsZWN0b3IuaAor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvVmlld0dlc3R1cmVHZW9tZXRy
eUNvbGxlY3Rvci5oCkBAIC0yNiw4ICsyNiw2IEBACiAjaWZuZGVmIFZpZXdHZXN0dXJlR2VvbWV0
cnlDb2xsZWN0b3JfaAogI2RlZmluZSBWaWV3R2VzdHVyZUdlb21ldHJ5Q29sbGVjdG9yX2gKIAot
I2lmICFQTEFURk9STShJT1MpCi0KICNpbmNsdWRlICJNZXNzYWdlUmVjZWl2ZXIuaCIKICNpbmNs
dWRlIDx3dGYvUnVuTG9vcC5oPgogCkBAIC01MSwyMCArNDksMjMgQEAgcHJpdmF0ZToKICAgICB2
aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uKiwgSVBDOjpNZXNz
YWdlRGVjb2RlciYpIG92ZXJyaWRlOwogCiAgICAgLy8gTWVzc2FnZSBoYW5kbGVycy4KLSAgICB2
b2lkIGNvbGxlY3RHZW9tZXRyeUZvck1hZ25pZmljYXRpb25HZXN0dXJlKCk7CiAgICAgdm9pZCBj
b2xsZWN0R2VvbWV0cnlGb3JTbWFydE1hZ25pZmljYXRpb25HZXN0dXJlKFdlYkNvcmU6OkZsb2F0
UG9pbnQgb3JpZ2luKTsKKworI2lmIFBMQVRGT1JNKE1BQykKKyAgICB2b2lkIGNvbGxlY3RHZW9t
ZXRyeUZvck1hZ25pZmljYXRpb25HZXN0dXJlKCk7CiAgICAgdm9pZCBzZXRSZW5kZXJUcmVlU2l6
ZU5vdGlmaWNhdGlvblRocmVzaG9sZCh1aW50NjRfdCBzaXplKSB7IG1fcmVuZGVyVHJlZVNpemVO
b3RpZmljYXRpb25UaHJlc2hvbGQgPSBzaXplOyB9CiAKICAgICB2b2lkIHJlbmRlclRyZWVTaXpl
Tm90aWZpY2F0aW9uVGltZXJGaXJlZCgpOworI2VuZGlmCiAKICAgICBXZWJQYWdlJiBtX3dlYlBh
Z2U7CiAKKyNpZiBQTEFURk9STShNQUMpCiAgICAgdWludDY0X3QgbV9yZW5kZXJUcmVlU2l6ZU5v
dGlmaWNhdGlvblRocmVzaG9sZDsKICAgICBSdW5Mb29wOjpUaW1lcjxWaWV3R2VzdHVyZUdlb21l
dHJ5Q29sbGVjdG9yPiBtX3JlbmRlclRyZWVTaXplTm90aWZpY2F0aW9uVGltZXI7CisjZW5kaWYK
IH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAogCi0jZW5kaWYgLy8gIVBMQVRGT1JNKElPUykK
LQogI2VuZGlmIC8vIFZpZXdHZXN0dXJlR2VvbWV0cnlDb2xsZWN0b3IKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9WaWV3R2VzdHVyZUdlb21ldHJ5Q29sbGVj
dG9yLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1ZpZXdH
ZXN0dXJlR2VvbWV0cnlDb2xsZWN0b3IubWVzc2FnZXMuaW4KaW5kZXggZWZkMDUxZi4uMDQ3MjA5
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1ZpZXdHZXN0
dXJlR2VvbWV0cnlDb2xsZWN0b3IubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJQYWdlL1ZpZXdHZXN0dXJlR2VvbWV0cnlDb2xsZWN0b3IubWVzc2FnZXMuaW4K
QEAgLTIwLDE0ICsyMCwxMiBAQAogIyBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQogIyBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgogCi0jaWYgIVBMQVRGT1JNKElPUykKLQogbWVzc2FnZXMgLT4gVmlld0dlc3R1cmVHZW9tZXRy
eUNvbGxlY3RvciB7CisgICAgQ29sbGVjdEdlb21ldHJ5Rm9yU21hcnRNYWduaWZpY2F0aW9uR2Vz
dHVyZShXZWJDb3JlOjpGbG9hdFBvaW50IG9yaWdpbikKIAotQ29sbGVjdEdlb21ldHJ5Rm9yTWFn
bmlmaWNhdGlvbkdlc3R1cmUoKQotQ29sbGVjdEdlb21ldHJ5Rm9yU21hcnRNYWduaWZpY2F0aW9u
R2VzdHVyZShXZWJDb3JlOjpGbG9hdFBvaW50IG9yaWdpbikKLQotU2V0UmVuZGVyVHJlZVNpemVO
b3RpZmljYXRpb25UaHJlc2hvbGQodWludDY0X3Qgc2l6ZSkKLX0KKyNpZiAhUExBVEZPUk0oSU9T
KQorICAgIENvbGxlY3RHZW9tZXRyeUZvck1hZ25pZmljYXRpb25HZXN0dXJlKCkKIAorICAgIFNl
dFJlbmRlclRyZWVTaXplTm90aWZpY2F0aW9uVGhyZXNob2xkKHVpbnQ2NF90IHNpemUpCiAjZW5k
aWYKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQ
YWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcApp
bmRleCBiMjUzYzA3Li4wN2IzYzIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYlBhZ2UuY3BwCkBAIC0yNTEsOSArMjUxLDcgQEAgV2ViUGFnZTo6V2ViUGFnZSh1
aW50NjRfdCBwYWdlSUQsIGNvbnN0IFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMmIHBhcmFtZXRl
cnMpCiAgICAgLCBtX3BkZlBsdWdpbkVuYWJsZWQoZmFsc2UpCiAgICAgLCBtX2hhc0NhY2hlZFdp
bmRvd0ZyYW1lKGZhbHNlKQogICAgICwgbV9rZXlib2FyZEV2ZW50QmVpbmdJbnRlcnByZXRlZCgw
KQotI2lmICFQTEFURk9STShJT1MpCiAgICAgLCBtX3ZpZXdHZXN0dXJlR2VvbWV0cnlDb2xsZWN0
b3IoKnRoaXMpCi0jZW5kaWYKICNlbGlmIFBMQVRGT1JNKEdUSykgJiYgSEFWRShBQ0NFU1NJQklM
SVRZKQogICAgICwgbV9hY2Nlc3NpYmlsaXR5T2JqZWN0KDApCiAjZW5kaWYKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmggYi9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCmluZGV4IGFhNGFjMmMuLjU0Zjg2ZWEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgK
KysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaApAQCAtOTcy
LDkgKzk3Miw3IEBAIHByaXZhdGU6CiAKICAgICBXZWJDb3JlOjpLZXlib2FyZEV2ZW50KiBtX2tl
eWJvYXJkRXZlbnRCZWluZ0ludGVycHJldGVkOwogCi0jaWYgIVBMQVRGT1JNKElPUykKICAgICBW
aWV3R2VzdHVyZUdlb21ldHJ5Q29sbGVjdG9yIG1fdmlld0dlc3R1cmVHZW9tZXRyeUNvbGxlY3Rv
cjsKLSNlbmRpZgogCiAjZWxpZiBIQVZFKEFDQ0VTU0lCSUxJVFkpICYmIChQTEFURk9STShHVEsp
IHx8IFBMQVRGT1JNKEVGTCkpCiAgICAgR1JlZlB0cjxXZWJQYWdlQWNjZXNzaWJpbGl0eU9iamVj
dD4gbV9hY2Nlc3NpYmlsaXR5T2JqZWN0Owo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>224902</attachid>
            <date>2014-02-21 13:59:52 -0800</date>
            <delta_ts>2014-02-21 14:01:07 -0800</delta_ts>
            <desc>rebase</desc>
            <filename>doubletap.diff</filename>
            <type>text/plain</type>
            <size>48495</size>
            <attacher name="Tim Horton">thorton</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA5NzlhMGE1Li40ZTZhMDk1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQg
QEAKKzIwMTQtMDItMjEgIFRpbSBIb3J0b24gIDx0aW1vdGh5X2hvcnRvbkBhcHBsZS5jb20+CisK
KyAgICAgICAgV2ViS2l0MiBWaWV3IEdlc3R1cmVzIChTbWFydCBNYWduaWZpY2F0aW9uKTogU3Vw
cG9ydCBmb3IgaU9TCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xMjkxNDYKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzE2MDMyNjY4PgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViQ29yZS5leHAuaW46
CisgICAgICAgIEFkZCBhbiBleHBvcnQuCisKIDIwMTQtMDItMjEgIEJlbmphbWluIFBvdWxhaW4g
IDxicG91bGFpbkBhcHBsZS5jb20+CiAKICAgICAgICAgJ21vdXNlZW50ZXInIG1vdXNlIGNvbXBh
dCBldmVudCBub3QgZmlyZWQgd2hlbiBsaXN0ZW5lcnMgZm9yIHRvdWNoIGV2ZW50cwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4gYi9Tb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLmV4cC5pbgppbmRleCA5ODRlMThlLi40NmNkYTQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLmV4cC5pbgorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgpA
QCAtMTgzNyw2ICsxODM3LDcgQEAgX19aTks3V2ViQ29yZTlGbG9hdFF1YWQxMWJvdW5kaW5nQm94
RXYKIF9fWk5LN1dlYkNvcmU5RmxvYXRSZWN0MTBpbnRlcnNlY3RzRVJLUzBfCiBfX1pOSzdXZWJD
b3JlOUZsb2F0UmVjdGN2NkNHUmVjdEV2CiBfX1pOSzdXZWJDb3JlOUZsb2F0U2l6ZTZpc1plcm9F
dgorX19aTks3V2ViQ29yZTlGbG9hdFNpemUxNGRpYWdvbmFsTGVuZ3RoRXYKIF9fWk5LN1dlYkNv
cmU5RnJhbWVUcmVlMTBjaGlsZENvdW50RXYKIF9fWk5LN1dlYkNvcmU5RnJhbWVUcmVlMTJ0cmF2
ZXJzZU5leHRFUEtOU181RnJhbWVFCiBfX1pOSzdXZWJDb3JlOUZyYW1lVHJlZTE0aXNEZXNjZW5k
YW50T2ZFUEtOU181RnJhbWVFCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3Vi
cmVzb3VyY2VMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnJlc291cmNlTG9h
ZGVyLmNwcAppbmRleCA0MzZlMzE0Li40YjU0NmFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9TdWJyZXNvdXJjZUxvYWRlci5jcHAKQEAgLTI2MCw3ICsyNjAsNyBAQCB2b2lkIFN1YnJlc291
cmNlTG9hZGVyOjpkaWRSZWNlaXZlRGF0YU9yQnVmZmVyKGNvbnN0IGNoYXIqIGRhdGEsIGludCBs
ZW5ndGgsIFBhcwogICAgIGlmIChtX3Jlc291cmNlLT5yZXNwb25zZSgpLmh0dHBTdGF0dXNDb2Rl
KCkgPj0gNDAwICYmICFtX3Jlc291cmNlLT5zaG91bGRJZ25vcmVIVFRQU3RhdHVzQ29kZUVycm9y
cygpKQogICAgICAgICByZXR1cm47CiAgICAgQVNTRVJUKCFtX3Jlc291cmNlLT5yZXNvdXJjZVRv
UmV2YWxpZGF0ZSgpKTsKLSAgICBBU1NFUlQoIW1fcmVzb3VyY2UtPmVycm9yT2NjdXJyZWQoKSk7
CisgICAgLy9BU1NFUlQoIW1fcmVzb3VyY2UtPmVycm9yT2NjdXJyZWQoKSk7CiAgICAgQVNTRVJU
KG1fc3RhdGUgPT0gSW5pdGlhbGl6ZWQpOwogICAgIC8vIFJlZmVyZW5jZSB0aGUgb2JqZWN0IGlu
IHRoaXMgbWV0aG9kIHNpbmNlIHRoZSBhZGRpdGlvbmFsIHByb2Nlc3NpbmcgY2FuIGRvCiAgICAg
Ly8gYW55dGhpbmcgaW5jbHVkaW5nIHJlbW92aW5nIHRoZSBsYXN0IHJlZmVyZW5jZSB0byB0aGlz
IG9iamVjdDsgb25lIGV4YW1wbGUgb2YgdGhpcyBpcyAzMjY2MjE2LgpAQCAtMjk0LDcgKzI5NCw3
IEBAIHZvaWQgU3VicmVzb3VyY2VMb2FkZXI6OmRpZEZpbmlzaExvYWRpbmcoZG91YmxlIGZpbmlz
aFRpbWUpCiAgICAgICAgIHJldHVybjsKICAgICBBU1NFUlQoIXJlYWNoZWRUZXJtaW5hbFN0YXRl
KCkpOwogICAgIEFTU0VSVCghbV9yZXNvdXJjZS0+cmVzb3VyY2VUb1JldmFsaWRhdGUoKSk7Ci0g
ICAgQVNTRVJUKCFtX3Jlc291cmNlLT5lcnJvck9jY3VycmVkKCkpOworICAgIC8vQVNTRVJUKCFt
X3Jlc291cmNlLT5lcnJvck9jY3VycmVkKCkpOwogICAgIExPRyhSZXNvdXJjZUxvYWRpbmcsICJS
ZWNlaXZlZCAnJXMnLiIsIG1fcmVzb3VyY2UtPnVybCgpLnN0cmluZygpLmxhdGluMSgpLmRhdGEo
KSk7CiAKICAgICBSZWY8U3VicmVzb3VyY2VMb2FkZXI+IHByb3RlY3QoKnRoaXMpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuaAppbmRleCBlZjBiYzY2Li42
NmQyMDU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVz
b3VyY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2Uu
aApAQCAtMTg2LDcgKzE4Niw3IEBAIHB1YmxpYzoKICAgICAKICAgICB2b2lkIGNsZWFyTG9hZGVy
KCk7CiAKLSAgICBSZXNvdXJjZUJ1ZmZlciogcmVzb3VyY2VCdWZmZXIoKSBjb25zdCB7IEFTU0VS
VCghbV9wdXJnZWFibGVEYXRhKTsgcmV0dXJuIG1fZGF0YS5nZXQoKTsgfQorICAgIFJlc291cmNl
QnVmZmVyKiByZXNvdXJjZUJ1ZmZlcigpIGNvbnN0IHsgLypBU1NFUlQoIW1fcHVyZ2VhYmxlRGF0
YSk7Ki8gcmV0dXJuIG1fZGF0YS5nZXQoKTsgfQogCiAgICAgdmlydHVhbCB2b2lkIHdpbGxTZW5k
UmVxdWVzdChSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJikgeyBtX3Jl
cXVlc3RlZEZyb21OZXR3b3JraW5nTGF5ZXIgPSB0cnVlOyB9CiAgICAgdmlydHVhbCB2b2lkIHJl
c3BvbnNlUmVjZWl2ZWQoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vVGltZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
VGltZXIuY3BwCmluZGV4IGE4NzM3MzAuLmEzYTg3M2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL1RpbWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9UaW1l
ci5jcHAKQEAgLTIzOSwxMSArMjM5LDExIEBAIGRvdWJsZSBUaW1lckJhc2U6Om5leHRGaXJlSW50
ZXJ2YWwoKSBjb25zdAogCiBpbmxpbmUgdm9pZCBUaW1lckJhc2U6OmNoZWNrSGVhcEluZGV4KCkg
Y29uc3QKIHsKLSAgICBBU1NFUlQodGltZXJIZWFwKCkgPT0gdGhyZWFkR2xvYmFsVGltZXJIZWFw
KCkpOwotICAgIEFTU0VSVCghdGltZXJIZWFwKCkuaXNFbXB0eSgpKTsKLSAgICBBU1NFUlQobV9o
ZWFwSW5kZXggPj0gMCk7Ci0gICAgQVNTRVJUKG1faGVhcEluZGV4IDwgc3RhdGljX2Nhc3Q8aW50
Pih0aW1lckhlYXAoKS5zaXplKCkpKTsKLSAgICBBU1NFUlQodGltZXJIZWFwKClbbV9oZWFwSW5k
ZXhdID09IHRoaXMpOworICAgIC8vQVNTRVJUKHRpbWVySGVhcCgpID09IHRocmVhZEdsb2JhbFRp
bWVySGVhcCgpKTsKKyAgICAvL0FTU0VSVCghdGltZXJIZWFwKCkuaXNFbXB0eSgpKTsKKyAgICAv
L0FTU0VSVChtX2hlYXBJbmRleCA+PSAwKTsKKyAgICAvL0FTU0VSVChtX2hlYXBJbmRleCA8IHN0
YXRpY19jYXN0PGludD4odGltZXJIZWFwKCkuc2l6ZSgpKSk7CisgICAgLy9BU1NFUlQodGltZXJI
ZWFwKClbbV9oZWFwSW5kZXhdID09IHRoaXMpOwogfQogCiBpbmxpbmUgdm9pZCBUaW1lckJhc2U6
OmNoZWNrQ29uc2lzdGVuY3koKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWFjL0xhbmd1YWdlLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL0xhbmd1
YWdlLm1tCmluZGV4IDFhZmNjMzcuLjhkYTI1OWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21hYy9MYW5ndWFnZS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
YWMvTGFuZ3VhZ2UubW0KQEAgLTgzLDcgKzgzLDcgQEAgVmVjdG9yPFN0cmluZz4gcGxhdGZvcm1V
c2VyUHJlZmVycmVkTGFuZ3VhZ2VzKCkKIHsKICAgICBERUZJTkVfU1RBVElDX0xPQ0FMKFZlY3Rv
cjxTdHJpbmc+LCB1c2VyUHJlZmVycmVkTGFuZ3VhZ2VzLCAoKSk7CiAKLSAgICBBU1NFUlQoaXNN
YWluVGhyZWFkKCkpOworICAgIC8vQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKIAogICAgIEJFR0lO
X0JMT0NLX09CSkNfRVhDRVBUSU9OUzsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ2hh
bmdlTG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4IDA5MjlmYmIuLmM0MTQzYTUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSw4NSBAQAorMjAxNC0wMi0yMSAgVGltIEhvcnRvbiAgPHRp
bW90aHlfaG9ydG9uQGFwcGxlLmNvbT4KKworICAgICAgICBXZWJLaXQyIFZpZXcgR2VzdHVyZXMg
KFNtYXJ0IE1hZ25pZmljYXRpb24pOiBTdXBwb3J0IGZvciBpT1MKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyOTE0NgorICAgICAgICA8cmRhcjovL3By
b2JsZW0vMTYwMzI2Njg+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbToKKyAgICAgICAgKC1b
V0tXZWJWaWV3IGluaXRXaXRoRnJhbWU6Y29uZmlndXJhdGlvbjpdKToKKyAgICAgICAgQWx3YXlz
IGhhdmUgYSBWaWV3R2VzdHVyZUNvbnRyb2xsZXIsIHRvIGhhbmRsZSBkb3VibGUtdGFwIGdlc3R1
cmVzLgorCisgICAgICAgICgtW1dLV2ViVmlldyBjb250ZW50VmlldzpkaWRDb21taXRMYXllclRy
ZWU6V2ViS2l0OjpdKToKKyAgICAgICAgRG9uJ3QgcmVwbGFjZSB0aGUgem9vbSBzY2FsZSBpZiB3
ZSdyZSBjdXJyZW50bHkgYW5pbWF0aW5nLgorCisgICAgICAgICgtW1dLV2ViVmlldyBzZXRBbGxv
d3NCYWNrRm9yd2FyZE5hdmlnYXRpb25HZXN0dXJlczpdKToKKyAgICAgICAgSW5zdGFsbCBhbmQg
dW5pbnN0YWxsIHRoZSBzd2lwZSBoYW5kbGVyIGluc3RlYWQgb2YgZGVzdHJveWluZyB0aGUgZ2Vz
dHVyZSBjb250cm9sbGVyLgorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9pb3MvV0tDb250ZW50
Vmlldy5tbToKKyAgICAgICAgKC1bV0tDb250ZW50VmlldyBfc2V0RG91YmxlVGFwR2VzdHVyZVJl
Y29nbml6ZXI6XSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9pb3MvV0tDb250ZW50Vmlld0lu
dGVybmFsLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9pb3MvV0tJbnRlcmFjdGlvblZpZXcu
aDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2lvcy9XS0ludGVyYWN0aW9uVmlldy5tbToKKyAg
ICAgICAgKC1bV0tJbnRlcmFjdGlvblZpZXcgaW5pdFdpdGhGcmFtZTpdKToKKyAgICAgICAgKC1b
V0tJbnRlcmFjdGlvblZpZXcgZGVhbGxvY10pOgorICAgICAgICAoLVtXS0ludGVyYWN0aW9uVmll
dyBnZXN0dXJlUmVjb2duaXplclNob3VsZEJlZ2luOl0pOgorICAgICAgICAoLVtXS0ludGVyYWN0
aW9uVmlldyBfc2V0RG91YmxlVGFwR2VzdHVyZVJlY29nbml6ZXI6XSk6CisgICAgICAgIFJlbW92
ZSBleGlzdGluZyB1bnVzZWQgZG91YmxlLXRhcCBnZXN0dXJlIHJlY29nbml6ZXIgY29kZS4KKyAg
ICAgICAgUGx1bWIgdGhlIGRvdWJsZS10YXAgZ2VzdHVyZSByZWNvZ25pemVyIGRvd24gZnJvbSBW
aWV3R2VzdHVyZUNvbnRyb2xsZXIsCisgICAgICAgIHNvIHdlIGNhbiBtYWtlIHRoZSBzaW5nbGUg
dGFwIGdlc3R1cmUgcmVjb2duaXplciBibG9jayBvbiBpdCBmYWlsaW5nLgorCisgICAgICAgICog
VUlQcm9jZXNzL0FQSS9pb3MvV0tWaWV3SU9TLm1tOgorICAgICAgICAoLVtXS1ZpZXcgc2V0QWxs
b3dzQmFja0ZvcndhcmROYXZpZ2F0aW9uR2VzdHVyZXM6XSk6CisgICAgICAgIEluc3RhbGwgYW5k
IHVuaW5zdGFsbCB0aGUgc3dpcGUgaGFuZGxlciBpbnN0ZWFkIG9mIGRlc3Ryb3lpbmcgdGhlIGdl
c3R1cmUgY29udHJvbGxlci4KKworICAgICAgICAoLVtXS1ZpZXcgY29udGVudFZpZXc6ZGlkQ29t
bWl0TGF5ZXJUcmVlOl0pOgorICAgICAgICBEb24ndCByZXBsYWNlIHRoZSB6b29tIHNjYWxlIGlm
IHdlJ3JlIGN1cnJlbnRseSBhbmltYXRpbmcuCisKKyAgICAgICAgKC1bV0tWaWV3IF9jb21tb25J
bml0aWFsaXphdGlvbldpdGhDb250ZXh0UmVmOnBhZ2VHcm91cFJlZjpyZWxhdGVkVG9QYWdlOl0p
OgorICAgICAgICBBbHdheXMgaGF2ZSBhIFZpZXdHZXN0dXJlQ29udHJvbGxlciwgdG8gaGFuZGxl
IGRvdWJsZS10YXAgZ2VzdHVyZXMuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1ZpZXdHZXN0
dXJlQ29udHJvbGxlcklPUy5tbToKKyAgICAgICAgKC1bV0tTd2lwZVRyYW5zaXRpb25Db250cm9s
bGVyIGluaXRXaXRoVmlld0dlc3R1cmVDb250cm9sbGVyOldlYktpdDo6Z2VzdHVyZVJlY29nbml6
ZXJWaWV3Ol0pOgorICAgICAgICAoLVtXS1NtYXJ0TWFnbmlmaWNhdGlvbkdlc3R1cmVDb250cm9s
bGVyIGluaXRXaXRoVmlld0dlc3R1cmVDb250cm9sbGVyOldlYktpdDo6Z2VzdHVyZVJlY29nbml6
ZXJWaWV3Ol0pOgorICAgICAgICAoLVtXS1NtYXJ0TWFnbmlmaWNhdGlvbkdlc3R1cmVDb250cm9s
bGVyIGRvdWJsZVRhcFJlY29nbml6ZWQ6XSk6CisgICAgICAgICgtW1dLU21hcnRNYWduaWZpY2F0
aW9uR2VzdHVyZUNvbnRyb2xsZXIgZG91YmxlVGFwUmVjb2duaXplcl0pOgorICAgICAgICAoV2Vi
S2l0OjpWaWV3R2VzdHVyZUNvbnRyb2xsZXI6OlZpZXdHZXN0dXJlQ29udHJvbGxlcik6CisgICAg
ICAgIChXZWJLaXQ6OlZpZXdHZXN0dXJlQ29udHJvbGxlcjo6flZpZXdHZXN0dXJlQ29udHJvbGxl
cik6CisgICAgICAgIChXZWJLaXQ6OlZpZXdHZXN0dXJlQ29udHJvbGxlcjo6dW5pbnN0YWxsU3dp
cGVIYW5kbGVyKToKKyAgICAgICAgKFdlYktpdDo6Vmlld0dlc3R1cmVDb250cm9sbGVyOjppbnN0
YWxsU21hcnRNYWduaWZpY2F0aW9uSGFuZGxlcik6CisgICAgICAgIChXZWJLaXQ6OlZpZXdHZXN0
dXJlQ29udHJvbGxlcjo6aGFuZGxlU21hcnRNYWduaWZpY2F0aW9uR2VzdHVyZSk6CisgICAgICAg
IChXZWJLaXQ6OnNob3VsZFBhblNjcm9sbEZvclNjYWxlKToKKyAgICAgICAgKFdlYktpdDo6ZHVy
YXRpb25Gb3Jab29tVG9TY2FsZSk6CisgICAgICAgIChXZWJLaXQ6Onpvb21Ub0NlbnRlckF0U2Nh
bGUpOgorICAgICAgICAoV2ViS2l0OjpWaWV3R2VzdHVyZUNvbnRyb2xsZXI6OnNtYXJ0TWFnbmlm
aWNhdGlvblpvb21Ub1RhcmdldCk6CisgICAgICAgIChXZWJLaXQ6OmNvbnN0cmFpbkNvbnRlbnRP
ZmZzZXQpOgorICAgICAgICAoV2ViS2l0OjpWaWV3R2VzdHVyZUNvbnRyb2xsZXI6OnNtYXJ0TWFn
bmlmaWNhdGlvblNjcm9sbFRvVGFyZ2V0KToKKyAgICAgICAgKFdlYktpdDo6Vmlld0dlc3R1cmVD
b250cm9sbGVyOjpkaWRDb2xsZWN0R2VvbWV0cnlGb3JTbWFydE1hZ25pZmljYXRpb25HZXN0dXJl
KToKKyAgICAgICAgQWRkIGFuIGltcGxlbWVudGF0aW9uIG9mIGRvdWJsZS10YXAgZm9yIGlPUy4K
KyAgICAgICAgQ3VycmVudGx5IHZlcnkgbGl0dGxlIGNvZGUgaXMgc2hhcmVkIHdpdGggTWFjIChq
dXN0IHRoZSBXZWJQcm9jZXNzIHNpZGUpLAorICAgICAgICBidXQgdGhlIGFtb3VudCBvZiBzaGFy
ZWQgbG9naWMgc2hvdWxkIGluY3JlYXNlIGFzIHRpbWUgZ29lcyBvbi4KKyAgICAgICAgVGhpcyBz
aG91bGQgbWF0Y2ggV2ViS2l0MSBiZWhhdmlvciBmYWlybHkgY2xvc2VseS4KKworICAgICAgICAq
IFVJUHJvY2Vzcy9tYWMvVmlld0dlc3R1cmVDb250cm9sbGVyLmg6CisgICAgICAgICogVUlQcm9j
ZXNzL21hYy9WaWV3R2VzdHVyZUNvbnRyb2xsZXIubWVzc2FnZXMuaW46CisgICAgICAgICogVUlQ
cm9jZXNzL21hYy9WaWV3R2VzdHVyZUNvbnRyb2xsZXJNYWMubW06CisgICAgICAgIChXZWJLaXQ6
OlZpZXdHZXN0dXJlQ29udHJvbGxlcjo6ZGlkQ29sbGVjdEdlb21ldHJ5Rm9yU21hcnRNYWduaWZp
Y2F0aW9uR2VzdHVyZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1ZpZXdHZXN0dXJl
R2VvbWV0cnlDb2xsZWN0b3IuY3BwOgorICAgICAgICBJbmNsdWRlIHRoZSBwYXJ0cyBvZiBWaWV3
R2VzdHVyZUdlb21ldHJ5Q29sbGVjdG9yIG5lZWRlZCBvbiBpT1MuCisKKyAgICAgICAgKFdlYktp
dDo6Vmlld0dlc3R1cmVHZW9tZXRyeUNvbGxlY3Rvcjo6Vmlld0dlc3R1cmVHZW9tZXRyeUNvbGxl
Y3Rvcik6CisgICAgICAgIChXZWJLaXQ6OlZpZXdHZXN0dXJlR2VvbWV0cnlDb2xsZWN0b3I6OmNv
bGxlY3RHZW9tZXRyeUZvclNtYXJ0TWFnbmlmaWNhdGlvbkdlc3R1cmUpOgorICAgICAgICBVc2Ug
d2luZG93VG9Db250ZW50cyBpbnN0ZWFkIG9mIG1hbnVhbGx5IGFwcGx5aW5nIHRoZSBzY3JvbGws
IGJlY2F1c2UgaXQgZG9lcyB0aGUgcmlnaHQgdGhpbmcgb24gaU9TLgorCisgICAgICAgIChXZWJL
aXQ6OlZpZXdHZXN0dXJlR2VvbWV0cnlDb2xsZWN0b3I6OmNvbGxlY3RHZW9tZXRyeUZvck1hZ25p
ZmljYXRpb25HZXN0dXJlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvVmlld0dlc3R1
cmVHZW9tZXRyeUNvbGxlY3Rvci5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9WaWV3
R2VzdHVyZUdlb21ldHJ5Q29sbGVjdG9yLm1lc3NhZ2VzLmluOgorICAgICAgICAqIFdlYlByb2Nl
c3MvV2ViUGFnZS9XZWJQYWdlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6V2ViUGFn
ZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaDoKKyAgICAgICAgS2Vl
cCBhIHZpZXdHZXN0dXJlR2VvbWV0cnlDb2xsZWN0b3Igb24gYWxsIFBMQVRGT1JNKENPQ09BKSBw
b3J0cy4KKwogMjAxNC0wMi0yMSAgQW5kZXJzIENhcmxzc29uICA8YW5kZXJzY2FAYXBwbGUuY29t
PgogCiAgICAgICAgIE1ha2Ugc3VyZSB0byBpbnZva2UgdGhlIGNvbXBsZXRpb24gaGFuZGxlciBm
b3IgSlMgYWxlcnRzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0Nv
Y29hL1dLV2ViVmlldy5tbSBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tX
ZWJWaWV3Lm1tCmluZGV4IGYyNDkzN2MuLmUwY2YxNTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCkBAIC0xNjYsNiArMTY2LDEzIEBACiAK
ICAgICBfcGFnZS0+c2V0VUlDbGllbnQoc3RkOjptYWtlX3VuaXF1ZTxXZWJLaXQ6OlVJQ2xpZW50
PihzZWxmKSk7CiAKKyNpZiBQTEFURk9STShJT1MpCisgICAgX2dlc3R1cmVDb250cm9sbGVyID0g
c3RkOjptYWtlX3VuaXF1ZTxXZWJLaXQ6OlZpZXdHZXN0dXJlQ29udHJvbGxlcj4oKl9wYWdlKTsK
KworICAgIFVJR2VzdHVyZVJlY29nbml6ZXIgKnJlY29nbml6ZXIgPSBfZ2VzdHVyZUNvbnRyb2xs
ZXItPmluc3RhbGxTbWFydE1hZ25pZmljYXRpb25IYW5kbGVyKF9jb250ZW50Vmlldy5nZXQoKSwg
X3Njcm9sbFZpZXcuZ2V0KCkpOworICAgIFtfY29udGVudFZpZXcgX3NldERvdWJsZVRhcEdlc3R1
cmVSZWNvZ25pemVyOnJlY29nbml6ZXJdOworI2VuZGlmCisKICAgICByZXR1cm4gc2VsZjsKIH0K
IApAQCAtMzIyLDcgKzMyOSw3IEBACiAgICAgW19zY3JvbGxWaWV3IHNldE1pbmltdW1ab29tU2Nh
bGU6bGF5ZXJUcmVlVHJhbnNhY3Rpb24ubWluaW11bVNjYWxlRmFjdG9yKCldOwogICAgIFtfc2Ny
b2xsVmlldyBzZXRNYXhpbXVtWm9vbVNjYWxlOmxheWVyVHJlZVRyYW5zYWN0aW9uLm1heGltdW1T
Y2FsZUZhY3RvcigpXTsKICAgICBbX3Njcm9sbFZpZXcgc2V0Wm9vbUVuYWJsZWQ6bGF5ZXJUcmVl
VHJhbnNhY3Rpb24uYWxsb3dzVXNlclNjYWxpbmcoKV07Ci0gICAgaWYgKCFbX3Njcm9sbFZpZXcg
aXNab29taW5nXSAmJiAhW19zY3JvbGxWaWV3IGlzWm9vbUJvdW5jaW5nXSkKKyAgICBpZiAoIVtf
c2Nyb2xsVmlldyBpc1pvb21pbmddICYmICFbX3Njcm9sbFZpZXcgaXNab29tQm91bmNpbmddICYm
ICFbX3Njcm9sbFZpZXcgX2lzQW5pbWF0aW5nWm9vbV0pCiAgICAgICAgIFtfc2Nyb2xsVmlldyBz
ZXRab29tU2NhbGU6bGF5ZXJUcmVlVHJhbnNhY3Rpb24ucGFnZVNjYWxlRmFjdG9yKCldOwogCiAg
ICAgaWYgKF9nZXN0dXJlQ29udHJvbGxlcikKQEAgLTQ1OSwxNSArNDY2LDEzIEBACiAKICAgICBf
YWxsb3dzQmFja0ZvcndhcmROYXZpZ2F0aW9uR2VzdHVyZXMgPSBhbGxvd3NCYWNrRm9yd2FyZE5h
dmlnYXRpb25HZXN0dXJlczsKIAotICAgIGlmIChhbGxvd3NCYWNrRm9yd2FyZE5hdmlnYXRpb25H
ZXN0dXJlcykgewotICAgICAgICBpZiAoIV9nZXN0dXJlQ29udHJvbGxlcikgewotICAgICAgICAg
ICAgX2dlc3R1cmVDb250cm9sbGVyID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJLaXQ6OlZpZXdHZXN0
dXJlQ29udHJvbGxlcj4oKl9wYWdlKTsKLSAgICAgICAgICAgIF9nZXN0dXJlQ29udHJvbGxlci0+
aW5zdGFsbFN3aXBlSGFuZGxlcihzZWxmLCBbc2VsZiBzY3JvbGxWaWV3XSk7Ci0gICAgICAgIH0K
LSAgICB9IGVsc2UKLSAgICAgICAgX2dlc3R1cmVDb250cm9sbGVyID0gbnVsbHB0cjsKKyAgICBp
ZiAoYWxsb3dzQmFja0ZvcndhcmROYXZpZ2F0aW9uR2VzdHVyZXMpCisgICAgICAgIF9nZXN0dXJl
Q29udHJvbGxlci0+aW5zdGFsbFN3aXBlSGFuZGxlcihzZWxmLCBbc2VsZiBzY3JvbGxWaWV3XSk7
CisgICAgZWxzZQorICAgICAgICBfZ2VzdHVyZUNvbnRyb2xsZXItPnVuaW5zdGFsbFN3aXBlSGFu
ZGxlcigpOwogCiAgICAgX3BhZ2UtPnNldFNob3VsZFJlY29yZE5hdmlnYXRpb25TbmFwc2hvdHMo
YWxsb3dzQmFja0ZvcndhcmROYXZpZ2F0aW9uR2VzdHVyZXMpOworCiB9CiAKIC0gKEJPT0wpYWxs
b3dzQmFja0ZvcndhcmROYXZpZ2F0aW9uR2VzdHVyZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvaW9zL1dLQ29udGVudFZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL2lvcy9XS0NvbnRlbnRWaWV3Lm1tCmluZGV4IGI3MTZiNTAuLjNhNjI0YmQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvaW9zL1dLQ29udGVudFZp
ZXcubW0KKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9pb3MvV0tDb250ZW50Vmll
dy5tbQpAQCAtMzIwLDQgKzMyMCw5IEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7CiAgICAgcmV0
dXJuIFtfZGVsZWdhdGUgdGFrZVZpZXdTbmFwc2hvdEZvckNvbnRlbnRWaWV3OnNlbGZdOwogfQog
CistICh2b2lkKV9zZXREb3VibGVUYXBHZXN0dXJlUmVjb2duaXplcjooVUlHZXN0dXJlUmVjb2du
aXplciAqKXJlY29nbml6ZXIKK3sKKyAgICBbX2ludGVyYWN0aW9uVmlldyBfc2V0RG91YmxlVGFw
R2VzdHVyZVJlY29nbml6ZXI6cmVjb2duaXplcl07Cit9CisKIEBlbmQKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvaW9zL1dLQ29udGVudFZpZXdJbnRlcm5hbC5oIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9pb3MvV0tDb250ZW50Vmlld0ludGVybmFsLmgK
aW5kZXggNTI0N2RjYi4uZDg3ODQ1ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9pb3MvV0tDb250ZW50Vmlld0ludGVybmFsLmgKKysrIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9pb3MvV0tDb250ZW50Vmlld0ludGVybmFsLmgKQEAgLTc0LDQgKzc0LDYg
QEAgc3RydWN0IEludGVyYWN0aW9uSW5mb3JtYXRpb25BdFBvc2l0aW9uOwogCiAtIChSZXRhaW5Q
dHI8Q0dJbWFnZVJlZj4pX3Rha2VWaWV3U25hcHNob3Q7CiAKKy0gKHZvaWQpX3NldERvdWJsZVRh
cEdlc3R1cmVSZWNvZ25pemVyOihVSUdlc3R1cmVSZWNvZ25pemVyICopcmVjb2duaXplcjsKKwog
QGVuZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9pb3MvV0tJbnRl
cmFjdGlvblZpZXcuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvaW9zL1dLSW50ZXJh
Y3Rpb25WaWV3LmgKaW5kZXggNjE0NWY1MC4uMDlkN2I3ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9pb3MvV0tJbnRlcmFjdGlvblZpZXcuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2lvcy9XS0ludGVyYWN0aW9uVmlldy5oCkBAIC03MCw1ICs3
MCw4IEBAIHN0cnVjdCBJbnRlcmFjdGlvbkluZm9ybWF0aW9uQXRQb3NpdGlvbjsKIC0gKHZvaWQp
X3dpbGxTdGFydFNjcm9sbGluZ09yWm9vbWluZzsKIC0gKHZvaWQpX3dpbGxTdGFydFVzZXJUcmln
Z2VyZWRTY3JvbGxpbmdPclpvb21pbmc7CiAtICh2b2lkKV9kaWRFbmRTY3JvbGxpbmdPclpvb21p
bmc7CisKKy0gKHZvaWQpX3NldERvdWJsZVRhcEdlc3R1cmVSZWNvZ25pemVyOihVSUdlc3R1cmVS
ZWNvZ25pemVyICopcmVjb2duaXplcjsKKwogQHByb3BlcnR5IChyZWFkb25seSwgbm9uYXRvbWlj
KSBXZWJLaXQ6OkludGVyYWN0aW9uSW5mb3JtYXRpb25BdFBvc2l0aW9uIHBvc2l0aW9uSW5mb3Jt
YXRpb247CiBAZW5kCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2lv
cy9XS0ludGVyYWN0aW9uVmlldy5tbSBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvaW9z
L1dLSW50ZXJhY3Rpb25WaWV3Lm1tCmluZGV4IDcxMGUyZTQuLmZjMDU2NTUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvaW9zL1dLSW50ZXJhY3Rpb25WaWV3Lm1tCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvaW9zL1dLSW50ZXJhY3Rpb25WaWV3Lm1t
CkBAIC0xNTQsOSArMTU0LDExIEBAIHN0cnVjdCBXS0F1dG9Db3JyZWN0aW9uRGF0YXsKICAgICBS
ZXRhaW5QdHI8VUlUYXBHZXN0dXJlUmVjb2duaXplcj4gX3NpbmdsZVRhcEdlc3R1cmVSZWNvZ25p
emVyOwogICAgIFJldGFpblB0cjxfVUlXZWJIaWdobGlnaHRMb25nUHJlc3NHZXN0dXJlUmVjb2du
aXplcj4gX2hpZ2hsaWdodExvbmdQcmVzc0dlc3R1cmVSZWNvZ25pemVyOwogICAgIFJldGFpblB0
cjxVSUxvbmdQcmVzc0dlc3R1cmVSZWNvZ25pemVyPiBfbG9uZ1ByZXNzR2VzdHVyZVJlY29nbml6
ZXI7Ci0gICAgUmV0YWluUHRyPFVJVGFwR2VzdHVyZVJlY29nbml6ZXI+IF9kb3VibGVUYXBHZXN0
dXJlUmVjb2duaXplcjsKICAgICBSZXRhaW5QdHI8VUlUYXBHZXN0dXJlUmVjb2duaXplcj4gX3R3
b0ZpbmdlckRvdWJsZVRhcEdlc3R1cmVSZWNvZ25pemVyOwogICAgIFJldGFpblB0cjxVSVBhbkdl
c3R1cmVSZWNvZ25pemVyPiBfdHdvRmluZ2VyUGFuR2VzdHVyZVJlY29nbml6ZXI7CisjaWZuZGVm
IEFTU0VSVF9ESVNBQkxFRAorICAgIGJvb2wgX2hhc1NldERvdWJsZVRhcEdlc3R1cmVSZWNvZ25p
emVyOworI2VuZGlmCiAKICAgICBSZXRhaW5QdHI8VUlXS1RleHRJbnRlcmFjdGlvbkFzc2lzdGFu
dD4gX3RleHRTZWxlY3Rpb25Bc3Npc3RhbnQ7CiAgICAgUmV0YWluUHRyPFVJV0tTZWxlY3Rpb25B
c3Npc3RhbnQ+IF93ZWJTZWxlY3Rpb25Bc3Npc3RhbnQ7CkBAIC0xOTQsMTIgKzE5Niw2IEBAIHN0
cnVjdCBXS0F1dG9Db3JyZWN0aW9uRGF0YXsKICAgICAgICAgW19zaW5nbGVUYXBHZXN0dXJlUmVj
b2duaXplciBzZXREZWxlZ2F0ZTpzZWxmXTsKICAgICAgICAgW3NlbGYgYWRkR2VzdHVyZVJlY29n
bml6ZXI6X3NpbmdsZVRhcEdlc3R1cmVSZWNvZ25pemVyLmdldCgpXTsKIAotICAgICAgICBfZG91
YmxlVGFwR2VzdHVyZVJlY29nbml6ZXIgPSBhZG9wdE5TKFtbVUlUYXBHZXN0dXJlUmVjb2duaXpl
ciBhbGxvY10gaW5pdFdpdGhUYXJnZXQ6c2VsZiBhY3Rpb246QHNlbGVjdG9yKF9kb3VibGVUYXBS
ZWNvZ25pemVkOildKTsKLSAgICAgICAgW19kb3VibGVUYXBHZXN0dXJlUmVjb2duaXplciBzZXRO
dW1iZXJPZlRhcHNSZXF1aXJlZDoyXTsKLSAgICAgICAgW19kb3VibGVUYXBHZXN0dXJlUmVjb2du
aXplciBzZXREZWxlZ2F0ZTpzZWxmXTsKLSAgICAgICAgW3NlbGYgYWRkR2VzdHVyZVJlY29nbml6
ZXI6X2RvdWJsZVRhcEdlc3R1cmVSZWNvZ25pemVyLmdldCgpXTsKLSAgICAgICAgW19zaW5nbGVU
YXBHZXN0dXJlUmVjb2duaXplciByZXF1aXJlT3RoZXJHZXN0dXJlVG9GYWlsOl9kb3VibGVUYXBH
ZXN0dXJlUmVjb2duaXplci5nZXQoKV07Ci0KICAgICAgICAgX2hpZ2hsaWdodExvbmdQcmVzc0dl
c3R1cmVSZWNvZ25pemVyID0gYWRvcHROUyhbW19VSVdlYkhpZ2hsaWdodExvbmdQcmVzc0dlc3R1
cmVSZWNvZ25pemVyIGFsbG9jXSBpbml0V2l0aFRhcmdldDpzZWxmIGFjdGlvbjpAc2VsZWN0b3Io
X2hpZ2hsaWdodExvbmdQcmVzc1JlY29nbml6ZWQ6KV0pOwogICAgICAgICBbX2hpZ2hsaWdodExv
bmdQcmVzc0dlc3R1cmVSZWNvZ25pemVyIHNldERlbGF5OmhpZ2hsaWdodERlbGF5XTsKICAgICAg
ICAgW19oaWdobGlnaHRMb25nUHJlc3NHZXN0dXJlUmVjb2duaXplciBzZXREZWxlZ2F0ZTpzZWxm
XTsKQEAgLTIzNSw3ICsyMzEsNiBAQCBzdHJ1Y3QgV0tBdXRvQ29ycmVjdGlvbkRhdGF7CiAgICAg
X2FjdGlvblNoZWV0QXNzaXN0YW50ID0gbmlsOwogICAgIFtfdG91Y2hFdmVudEdlc3R1cmVSZWNv
Z25pemVyIHNldERlbGVnYXRlOm5pbF07CiAgICAgW19zaW5nbGVUYXBHZXN0dXJlUmVjb2duaXpl
ciBzZXREZWxlZ2F0ZTpuaWxdOwotICAgIFtfZG91YmxlVGFwR2VzdHVyZVJlY29nbml6ZXIgc2V0
RGVsZWdhdGU6bmlsXTsKICAgICBbX2hpZ2hsaWdodExvbmdQcmVzc0dlc3R1cmVSZWNvZ25pemVy
IHNldERlbGVnYXRlOm5pbF07CiAgICAgW19sb25nUHJlc3NHZXN0dXJlUmVjb2duaXplciBzZXRE
ZWxlZ2F0ZTpuaWxdOwogICAgIFtfdHdvRmluZ2VyUGFuR2VzdHVyZVJlY29nbml6ZXIgc2V0RGVs
ZWdhdGU6bmlsXTsKQEAgLTUwMCw3ICs0OTUsNiBAQCBzdGF0aWMgaW5saW5lIGJvb2wgaXNTYW1l
UGFpcihVSUdlc3R1cmVSZWNvZ25pemVyICphLCBVSUdlc3R1cmVSZWNvZ25pemVyICpiLCBVSQog
ICAgIENHUG9pbnQgcG9pbnQgPSBbZ2VzdHVyZVJlY29nbml6ZXIgbG9jYXRpb25JblZpZXc6c2Vs
Zl07CiAKICAgICBpZiAoZ2VzdHVyZVJlY29nbml6ZXIgPT0gX2hpZ2hsaWdodExvbmdQcmVzc0dl
c3R1cmVSZWNvZ25pemVyCi0gICAgICAgIHx8IGdlc3R1cmVSZWNvZ25pemVyID09IF9kb3VibGVU
YXBHZXN0dXJlUmVjb2duaXplcgogICAgICAgICB8fCBnZXN0dXJlUmVjb2duaXplciA9PSBfdHdv
RmluZ2VyRG91YmxlVGFwR2VzdHVyZVJlY29nbml6ZXIKICAgICAgICAgfHwgZ2VzdHVyZVJlY29n
bml6ZXIgPT0gX3NpbmdsZVRhcEdlc3R1cmVSZWNvZ25pemVyKSB7CiAKQEAgLTY0MiwxMSArNjM2
LDYgQEAgc3RhdGljIGlubGluZSBib29sIGlzU2FtZVBhaXIoVUlHZXN0dXJlUmVjb2duaXplciAq
YSwgVUlHZXN0dXJlUmVjb2duaXplciAqYiwgVUkKICAgICBbc2VsZiBfYXR0ZW1wdENsaWNrQXRM
b2NhdGlvbjpbZ2VzdHVyZVJlY29nbml6ZXIgbG9jYXRpb25dXTsKIH0KIAotLSAodm9pZClfZG91
YmxlVGFwUmVjb2duaXplZDooVUlUYXBHZXN0dXJlUmVjb2duaXplciAqKWdlc3R1cmVSZWNvZ25p
emVyCi17Ci0gICAgLy8gRklYTUU6IEFkZCBpbXBsZW1lbnRhdGlvbi4KLX0KLQogLSAodm9pZClf
dHdvRmluZ2VyRG91YmxlVGFwUmVjb2duaXplZDooVUlUYXBHZXN0dXJlUmVjb2duaXplciAqKWdl
c3R1cmVSZWNvZ25pemVyCiB7CiAgICAgLy8gRklYTUU6IEFkZCBpbXBsZW1lbnRhdGlvbi4KQEAg
LTcxOCw2ICs3MDcsMTYgQEAgc3RhdGljIGlubGluZSBib29sIGlzU2FtZVBhaXIoVUlHZXN0dXJl
UmVjb2duaXplciAqYSwgVUlHZXN0dXJlUmVjb2duaXplciAqYiwgVUkKICAgICBbX3RleHRTZWxl
Y3Rpb25Bc3Npc3RhbnQgZGlkRW5kU2Nyb2xsaW5nT3ZlcmZsb3ddOwogfQogCistICh2b2lkKV9z
ZXREb3VibGVUYXBHZXN0dXJlUmVjb2duaXplcjooVUlHZXN0dXJlUmVjb2duaXplciAqKXJlY29n
bml6ZXIKK3sKKyNpZm5kZWYgQVNTRVJUX0RJU0FCTEVECisgICAgQVNTRVJUKCFfaGFzU2V0RG91
YmxlVGFwR2VzdHVyZVJlY29nbml6ZXIpOworICAgIF9oYXNTZXREb3VibGVUYXBHZXN0dXJlUmVj
b2duaXplciA9IHRydWU7CisjZW5kaWYKKworICAgIFtfc2luZ2xlVGFwR2VzdHVyZVJlY29nbml6
ZXIgcmVxdWlyZU90aGVyR2VzdHVyZVRvRmFpbDpyZWNvZ25pemVyXTsKK30KKwogLSAoVUlWaWV3
ICopaW5wdXRBY2Nlc3NvcnlWaWV3CiB7CiAgICAgaWYgKCFfaXNFZGl0YWJsZSkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvaW9zL1dLVmlld0lPUy5tbSBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvaW9zL1dLVmlld0lPUy5tbQppbmRleCA4MjkxOTllLi5l
YjFmN2VmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2lvcy9XS1Zp
ZXdJT1MubW0KKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9pb3MvV0tWaWV3SU9T
Lm1tCkBAIC0zMCw3ICszMCw3IEBACiAjaW1wb3J0ICJWaWV3R2VzdHVyZUNvbnRyb2xsZXIuaCIK
ICNpbXBvcnQgIldlYlBhZ2VQcm94eS5oIgogI2ltcG9ydCAiV0tCcm93c2luZ0NvbnRleHRHcm91
cFByaXZhdGUuaCIKLSNpbXBvcnQgIldLQ29udGVudFZpZXcuaCIKKyNpbXBvcnQgIldLQ29udGVu
dFZpZXdJbnRlcm5hbC5oIgogI2ltcG9ydCAiV0tQcm9jZXNzR3JvdXBQcml2YXRlLmgiCiAjaW1w
b3J0ICJXS1Njcm9sbFZpZXcuaCIKICNpbXBvcnQgIldLQVBJQ2FzdC5oIgpAQCAtMTI4LDE4ICsx
MjgsMTMgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKICAgICAgICAgcmV0dXJuOwogCiAgICAg
X2FsbG93c0JhY2tGb3J3YXJkTmF2aWdhdGlvbkdlc3R1cmVzID0gYWxsb3dzQmFja0ZvcndhcmRO
YXZpZ2F0aW9uR2VzdHVyZXM7Ci0gICAgCi0gICAgV2ViUGFnZVByb3h5ICp3ZWJQYWdlUHJveHkg
PSB0b0ltcGwoW19jb250ZW50VmlldyBfcGFnZVJlZl0pOwotICAgIAotICAgIGlmIChhbGxvd3NC
YWNrRm9yd2FyZE5hdmlnYXRpb25HZXN0dXJlcykgewotICAgICAgICBpZiAoIV9nZXN0dXJlQ29u
dHJvbGxlcikgewotICAgICAgICAgICAgX2dlc3R1cmVDb250cm9sbGVyID0gc3RkOjptYWtlX3Vu
aXF1ZTxWaWV3R2VzdHVyZUNvbnRyb2xsZXI+KCp3ZWJQYWdlUHJveHkpOwotICAgICAgICAgICAg
X2dlc3R1cmVDb250cm9sbGVyLT5pbnN0YWxsU3dpcGVIYW5kbGVyKHNlbGYsIFtzZWxmIHNjcm9s
bFZpZXddKTsKLSAgICAgICAgfQotICAgIH0gZWxzZQotICAgICAgICBfZ2VzdHVyZUNvbnRyb2xs
ZXIgPSBudWxscHRyOwotICAgIAotICAgIHdlYlBhZ2VQcm94eS0+c2V0U2hvdWxkUmVjb3JkTmF2
aWdhdGlvblNuYXBzaG90cyhhbGxvd3NCYWNrRm9yd2FyZE5hdmlnYXRpb25HZXN0dXJlcyk7CisK
KyAgICBpZiAoYWxsb3dzQmFja0ZvcndhcmROYXZpZ2F0aW9uR2VzdHVyZXMpCisgICAgICAgIF9n
ZXN0dXJlQ29udHJvbGxlci0+aW5zdGFsbFN3aXBlSGFuZGxlcihzZWxmLCBbc2VsZiBzY3JvbGxW
aWV3XSk7CisgICAgZWxzZQorICAgICAgICBfZ2VzdHVyZUNvbnRyb2xsZXItPnVuaW5zdGFsbFN3
aXBlSGFuZGxlcigpOworCisgICAgdG9JbXBsKFtfY29udGVudFZpZXcgX3BhZ2VSZWZdKS0+c2V0
U2hvdWxkUmVjb3JkTmF2aWdhdGlvblNuYXBzaG90cyhhbGxvd3NCYWNrRm9yd2FyZE5hdmlnYXRp
b25HZXN0dXJlcyk7CiB9CiAKIC0gKEJPT0wpYWxsb3dzQmFja0ZvcndhcmROYXZpZ2F0aW9uR2Vz
dHVyZXMKQEAgLTE1OSw3ICsxNTQsNyBAQCB1c2luZyBuYW1lc3BhY2UgV2ViS2l0OwogICAgIFtf
c2Nyb2xsVmlldyBzZXRNaW5pbXVtWm9vbVNjYWxlOmxheWVyVHJlZVRyYW5zYWN0aW9uLm1pbmlt
dW1TY2FsZUZhY3RvcigpXTsKICAgICBbX3Njcm9sbFZpZXcgc2V0TWF4aW11bVpvb21TY2FsZTps
YXllclRyZWVUcmFuc2FjdGlvbi5tYXhpbXVtU2NhbGVGYWN0b3IoKV07CiAgICAgW19zY3JvbGxW
aWV3IHNldFpvb21FbmFibGVkOmxheWVyVHJlZVRyYW5zYWN0aW9uLmFsbG93c1VzZXJTY2FsaW5n
KCldOwotICAgIGlmICghW19zY3JvbGxWaWV3IGlzWm9vbWluZ10gJiYgIVtfc2Nyb2xsVmlldyBp
c1pvb21Cb3VuY2luZ10pCisgICAgaWYgKCFbX3Njcm9sbFZpZXcgaXNab29taW5nXSAmJiAhW19z
Y3JvbGxWaWV3IGlzWm9vbUJvdW5jaW5nXSAmJiAhW19zY3JvbGxWaWV3IF9pc0FuaW1hdGluZ1pv
b21dKQogICAgICAgICBbX3Njcm9sbFZpZXcgc2V0Wm9vbVNjYWxlOmxheWVyVHJlZVRyYW5zYWN0
aW9uLnBhZ2VTY2FsZUZhY3RvcigpXTsKICAgICAKICAgICBpZiAoX2dlc3R1cmVDb250cm9sbGVy
KQpAQCAtMjYzLDYgKzI1OCwxMiBAQCB1c2luZyBuYW1lc3BhY2UgV2ViS2l0OwogICAgIFtjZW50
ZXIgYWRkT2JzZXJ2ZXI6c2VsZiBzZWxlY3RvcjpAc2VsZWN0b3IoX2tleWJvYXJkRGlkQ2hhbmdl
RnJhbWU6KSBuYW1lOlVJS2V5Ym9hcmREaWRDaGFuZ2VGcmFtZU5vdGlmaWNhdGlvbiBvYmplY3Q6
bmlsXTsKICAgICBbY2VudGVyIGFkZE9ic2VydmVyOnNlbGYgc2VsZWN0b3I6QHNlbGVjdG9yKF9r
ZXlib2FyZFdpbGxTaG93OikgbmFtZTpVSUtleWJvYXJkV2lsbFNob3dOb3RpZmljYXRpb24gb2Jq
ZWN0Om5pbF07CiAgICAgW2NlbnRlciBhZGRPYnNlcnZlcjpzZWxmIHNlbGVjdG9yOkBzZWxlY3Rv
cihfa2V5Ym9hcmRXaWxsSGlkZTopIG5hbWU6VUlLZXlib2FyZFdpbGxIaWRlTm90aWZpY2F0aW9u
IG9iamVjdDpuaWxdOworCisgICAgV2ViUGFnZVByb3h5ICp3ZWJQYWdlUHJveHkgPSB0b0ltcGwo
W19jb250ZW50VmlldyBfcGFnZVJlZl0pOworICAgIF9nZXN0dXJlQ29udHJvbGxlciA9IHN0ZDo6
bWFrZV91bmlxdWU8Vmlld0dlc3R1cmVDb250cm9sbGVyPigqd2ViUGFnZVByb3h5KTsKKworICAg
IFVJR2VzdHVyZVJlY29nbml6ZXIgKnJlY29nbml6ZXIgPSBfZ2VzdHVyZUNvbnRyb2xsZXItPmlu
c3RhbGxTbWFydE1hZ25pZmljYXRpb25IYW5kbGVyKF9jb250ZW50Vmlldy5nZXQoKSwgX3Njcm9s
bFZpZXcuZ2V0KCkpOworICAgIFtfY29udGVudFZpZXcgX3NldERvdWJsZVRhcEdlc3R1cmVSZWNv
Z25pemVyOnJlY29nbml6ZXJdOwogfQogCiAtICh2b2lkKV9mcmFtZU9yQm91bmRzQ2hhbmdlZApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9WaWV3R2VzdHVyZUNvbnRy
b2xsZXJJT1MubW0gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1ZpZXdHZXN0dXJlQ29u
dHJvbGxlcklPUy5tbQppbmRleCAyZTAzYjAxLi43ZTdiMjQyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1ZpZXdHZXN0dXJlQ29udHJvbGxlcklPUy5tbQorKysgYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1ZpZXdHZXN0dXJlQ29udHJvbGxlcklPUy5tbQpA
QCAtMzUsNyArMzUsMTAgQEAKICNpbXBvcnQgIldlYlBhZ2VQcm94eS5oIgogI2ltcG9ydCAiV2Vi
UHJvY2Vzc1Byb3h5LmgiCiAjaW1wb3J0IDxRdWFydHpDb3JlL1F1YXJ0ekNvcmUuaD4KKyNpbXBv
cnQgPFVJS2l0L1VJRGV2aWNlX1ByaXZhdGUuaD4KKyNpbXBvcnQgPFVJS2l0L1VJS2l0Lmg+CiAj
aW1wb3J0IDxVSUtpdC9VSVNjcmVlbkVkZ2VQYW5HZXN0dXJlUmVjb2duaXplci5oPgorI2ltcG9y
dCA8VUlLaXQvVUlTY3JvbGxWaWV3X1ByaXZhdGUuaD4KICNpbXBvcnQgPFVJS2l0L1VJVmlld0Nv
bnRyb2xsZXJUcmFuc2l0aW9uaW5nX1ByaXZhdGUuaD4KICNpbXBvcnQgPFVJS2l0L1VJV2ViVG91
Y2hFdmVudHNHZXN0dXJlUmVjb2duaXplci5oPgogI2ltcG9ydCA8VUlLaXQvX1VJTmF2aWdhdGlv
bkludGVyYWN0aXZlVHJhbnNpdGlvbi5oPgpAQCAtNDgsNiArNTEsMTkgQEAKIAogdXNpbmcgbmFt
ZXNwYWNlIFdlYkNvcmU7CiAKK3N0YXRpYyBjb25zdCBDR0Zsb2F0IHNtYXJ0TWFnbmlmaWNhdGlv
blBhblNjcm9sbFRocmVzaG9sZFpvb21lZE91dCA9IDYwOworc3RhdGljIGNvbnN0IENHRmxvYXQg
c21hcnRNYWduaWZpY2F0aW9uUGFuU2Nyb2xsVGhyZXNob2xkSVBob25lID0gMTAwOworc3RhdGlj
IGNvbnN0IENHRmxvYXQgc21hcnRNYWduaWZpY2F0aW9uUGFuU2Nyb2xsVGhyZXNob2xkSVBhZCA9
IDE1MDsKK3N0YXRpYyBjb25zdCBDR0Zsb2F0IHNtYXJ0TWFnbmlmaWNhdGlvbkVsZW1lbnRQYWRk
aW5nID0gMC4wNTsKKworc3RhdGljIGNvbnN0IGZsb2F0IHNtYXJ0TWFnbmlmaWNhdGlvblNjYWxl
RGVsdGFUaHJlc2hvbGRGb3JQYW5TY3JvbGwgPSAwLjAyOworCitzdGF0aWMgY29uc3QgZG91Ymxl
IHNtYXJ0TWFnbmlmaWNhdGlvbk1heGltdW1TY2FsZSA9IDEuNjsKK3N0YXRpYyBjb25zdCBkb3Vi
bGUgc21hcnRNYWduaWZpY2F0aW9uTWluaW11bVNjYWxlID0gMDsKKworc3RhdGljIGNvbnN0IGZs
b2F0IHN3aXBlU25hcHNob3RSZW1vdmFsUmVuZGVyVHJlZVNpemVUYXJnZXRGcmFjdGlvbiA9IDAu
NTsKK3N0YXRpYyBjb25zdCBzdGQ6OmNocm9ubzo6c2Vjb25kcyBzd2lwZVNuYXBzaG90UmVtb3Zh
bFdhdGNoZG9nRHVyYXRpb24gPSAzX3M7CisKIEBpbnRlcmZhY2UgV0tTd2lwZVRyYW5zaXRpb25D
b250cm9sbGVyIDogTlNPYmplY3QgPF9VSU5hdmlnYXRpb25JbnRlcmFjdGl2ZVRyYW5zaXRpb25C
YXNlRGVsZWdhdGU+CiAtIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhWaWV3R2VzdHVyZUNvbnRyb2xs
ZXI6KFdlYktpdDo6Vmlld0dlc3R1cmVDb250cm9sbGVyKilnZXN0dXJlQ29udHJvbGxlciBnZXN0
dXJlUmVjb2duaXplclZpZXc6KFVJVmlldyAqKWdlc3R1cmVSZWNvZ25pemVyVmlldzsKIEBlbmQK
QEAgLTU5LDIyICs3NSwxOSBAQCB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKICAgICBSZXRhaW5Q
dHI8X1VJTmF2aWdhdGlvbkludGVyYWN0aXZlVHJhbnNpdGlvbkJhc2U+IF9mb3J3YXJkVHJhbnNp
dGlvbkNvbnRyb2xsZXI7CiB9CiAKLXN0YXRpYyBjb25zdCBmbG9hdCBzd2lwZVNuYXBzaG90UmVt
b3ZhbFJlbmRlclRyZWVTaXplVGFyZ2V0RnJhY3Rpb24gPSAwLjU7Ci1zdGF0aWMgY29uc3Qgc3Rk
OjpjaHJvbm86OnNlY29uZHMgc3dpcGVTbmFwc2hvdFJlbW92YWxXYXRjaGRvZ0R1cmF0aW9uID0g
M19zOwotCiAtIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhWaWV3R2VzdHVyZUNvbnRyb2xsZXI6KFdl
YktpdDo6Vmlld0dlc3R1cmVDb250cm9sbGVyKilnZXN0dXJlQ29udHJvbGxlciBnZXN0dXJlUmVj
b2duaXplclZpZXc6KFVJVmlldyAqKWdlc3R1cmVSZWNvZ25pemVyVmlldwogewotICAgIHNlbGYg
PSBbc3VwZXIgaW5pdF07Ci0gICAgaWYgKHNlbGYpIHsKLSAgICAgICAgX2dlc3R1cmVDb250cm9s
bGVyID0gZ2VzdHVyZUNvbnRyb2xsZXI7CisgICAgaWYgKCEoc2VsZiA9IFtzdXBlciBpbml0XSkp
CisgICAgICAgIHJldHVybiBuaWw7CiAKLSAgICAgICAgX2JhY2tUcmFuc2l0aW9uQ29udHJvbGxl
ciA9IGFkb3B0TlMoW19VSU5hdmlnYXRpb25JbnRlcmFjdGl2ZVRyYW5zaXRpb25CYXNlIGFsbG9j
XSk7Ci0gICAgICAgIF9iYWNrVHJhbnNpdGlvbkNvbnRyb2xsZXIgPSBbX2JhY2tUcmFuc2l0aW9u
Q29udHJvbGxlciBpbml0V2l0aEdlc3R1cmVSZWNvZ25pemVyVmlldzpnZXN0dXJlUmVjb2duaXpl
clZpZXcgYW5pbWF0b3I6bmlsIGRlbGVnYXRlOnNlbGZdOwotICAgICAgICAKLSAgICAgICAgX2Zv
cndhcmRUcmFuc2l0aW9uQ29udHJvbGxlciA9IGFkb3B0TlMoW19VSU5hdmlnYXRpb25JbnRlcmFj
dGl2ZVRyYW5zaXRpb25CYXNlIGFsbG9jXSk7Ci0gICAgICAgIF9mb3J3YXJkVHJhbnNpdGlvbkNv
bnRyb2xsZXIgPSBbX2ZvcndhcmRUcmFuc2l0aW9uQ29udHJvbGxlciBpbml0V2l0aEdlc3R1cmVS
ZWNvZ25pemVyVmlldzpnZXN0dXJlUmVjb2duaXplclZpZXcgYW5pbWF0b3I6bmlsIGRlbGVnYXRl
OnNlbGZdOwotICAgICAgICBbX2ZvcndhcmRUcmFuc2l0aW9uQ29udHJvbGxlciBzZXRTaG91bGRS
ZXZlcnNlVHJhbnNsYXRpb246WUVTXTsKLSAgICB9CisgICAgX2dlc3R1cmVDb250cm9sbGVyID0g
Z2VzdHVyZUNvbnRyb2xsZXI7CisKKyAgICBfYmFja1RyYW5zaXRpb25Db250cm9sbGVyID0gYWRv
cHROUyhbX1VJTmF2aWdhdGlvbkludGVyYWN0aXZlVHJhbnNpdGlvbkJhc2UgYWxsb2NdKTsKKyAg
ICBfYmFja1RyYW5zaXRpb25Db250cm9sbGVyID0gW19iYWNrVHJhbnNpdGlvbkNvbnRyb2xsZXIg
aW5pdFdpdGhHZXN0dXJlUmVjb2duaXplclZpZXc6Z2VzdHVyZVJlY29nbml6ZXJWaWV3IGFuaW1h
dG9yOm5pbCBkZWxlZ2F0ZTpzZWxmXTsKKworICAgIF9mb3J3YXJkVHJhbnNpdGlvbkNvbnRyb2xs
ZXIgPSBhZG9wdE5TKFtfVUlOYXZpZ2F0aW9uSW50ZXJhY3RpdmVUcmFuc2l0aW9uQmFzZSBhbGxv
Y10pOworICAgIF9mb3J3YXJkVHJhbnNpdGlvbkNvbnRyb2xsZXIgPSBbX2ZvcndhcmRUcmFuc2l0
aW9uQ29udHJvbGxlciBpbml0V2l0aEdlc3R1cmVSZWNvZ25pemVyVmlldzpnZXN0dXJlUmVjb2du
aXplclZpZXcgYW5pbWF0b3I6bmlsIGRlbGVnYXRlOnNlbGZdOworICAgIFtfZm9yd2FyZFRyYW5z
aXRpb25Db250cm9sbGVyIHNldFNob3VsZFJldmVyc2VUcmFuc2xhdGlvbjpZRVNdOwogICAgIHJl
dHVybiBzZWxmOwogfQogCkBAIC0xMTksNiArMTMyLDQ1IEBAIHN0YXRpYyBjb25zdCBzdGQ6OmNo
cm9ubzo6c2Vjb25kcyBzd2lwZVNuYXBzaG90UmVtb3ZhbFdhdGNoZG9nRHVyYXRpb24gPSAzX3M7
CiAKIEBlbmQKIAorQGludGVyZmFjZSBXS1NtYXJ0TWFnbmlmaWNhdGlvbkdlc3R1cmVDb250cm9s
bGVyIDogTlNPYmplY3QgPFVJR2VzdHVyZVJlY29nbml6ZXJEZWxlZ2F0ZT4KKy0gKGluc3RhbmNl
dHlwZSlpbml0V2l0aFZpZXdHZXN0dXJlQ29udHJvbGxlcjooV2ViS2l0OjpWaWV3R2VzdHVyZUNv
bnRyb2xsZXIqKWdlc3R1cmVDb250cm9sbGVyIGdlc3R1cmVSZWNvZ25pemVyVmlldzooVUlWaWV3
ICopZ2VzdHVyZVJlY29nbml6ZXJWaWV3OworLSAoVUlHZXN0dXJlUmVjb2duaXplciAqKWRvdWJs
ZVRhcFJlY29nbml6ZXI7CitAZW5kCisKK0BpbXBsZW1lbnRhdGlvbiBXS1NtYXJ0TWFnbmlmaWNh
dGlvbkdlc3R1cmVDb250cm9sbGVyCit7CisgICAgV2ViS2l0OjpWaWV3R2VzdHVyZUNvbnRyb2xs
ZXIgKl9nZXN0dXJlQ29udHJvbGxlcjsKKyAgICBSZXRhaW5QdHI8VUlUYXBHZXN0dXJlUmVjb2du
aXplcj4gX2RvdWJsZVRhcFJlY29nbml6ZXI7CisgICAgUmV0YWluUHRyPFVJVmlldz4gX2dlc3R1
cmVSZWNvZ25pemVyVmlldzsKK30KKworLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoVmlld0dlc3R1
cmVDb250cm9sbGVyOihXZWJLaXQ6OlZpZXdHZXN0dXJlQ29udHJvbGxlciopZ2VzdHVyZUNvbnRy
b2xsZXIgZ2VzdHVyZVJlY29nbml6ZXJWaWV3OihVSVZpZXcgKilnZXN0dXJlUmVjb2duaXplclZp
ZXcKK3sKKyAgICBpZiAoIShzZWxmID0gW3N1cGVyIGluaXRdKSkKKyAgICAgICAgcmV0dXJuIG5p
bDsKKworICAgIF9nZXN0dXJlQ29udHJvbGxlciA9IGdlc3R1cmVDb250cm9sbGVyOworICAgIF9n
ZXN0dXJlUmVjb2duaXplclZpZXcgPSBnZXN0dXJlUmVjb2duaXplclZpZXc7CisgICAgX2RvdWJs
ZVRhcFJlY29nbml6ZXIgPSBhZG9wdE5TKFtbVUlUYXBHZXN0dXJlUmVjb2duaXplciBhbGxvY10g
aW5pdFdpdGhUYXJnZXQ6c2VsZiBhY3Rpb246QHNlbGVjdG9yKGRvdWJsZVRhcFJlY29nbml6ZWQ6
KV0pOworICAgIFtfZG91YmxlVGFwUmVjb2duaXplciBzZXROdW1iZXJPZlRhcHNSZXF1aXJlZDoy
XTsKKyAgICBbX2RvdWJsZVRhcFJlY29nbml6ZXIgc2V0RGVsZWdhdGU6c2VsZl07CisgICAgW2dl
c3R1cmVSZWNvZ25pemVyVmlldyBhZGRHZXN0dXJlUmVjb2duaXplcjpfZG91YmxlVGFwUmVjb2du
aXplci5nZXQoKV07CisKKyAgICByZXR1cm4gc2VsZjsKK30KKworLSAodm9pZClkb3VibGVUYXBS
ZWNvZ25pemVkOihVSVRhcEdlc3R1cmVSZWNvZ25pemVyICopZ2VzdHVyZVJlY29nbml6ZXIKK3sK
KyAgICBfZ2VzdHVyZUNvbnRyb2xsZXItPmhhbmRsZVNtYXJ0TWFnbmlmaWNhdGlvbkdlc3R1cmUo
W2dlc3R1cmVSZWNvZ25pemVyIGxvY2F0aW9uSW5WaWV3Ol9nZXN0dXJlUmVjb2duaXplclZpZXcu
Z2V0KCldKTsKK30KKworLSAoVUlHZXN0dXJlUmVjb2duaXplciAqKWRvdWJsZVRhcFJlY29nbml6
ZXIKK3sKKyAgICByZXR1cm4gX2RvdWJsZVRhcFJlY29nbml6ZXIuZ2V0KCk7Cit9CisKK0BlbmQK
KwogbmFtZXNwYWNlIFdlYktpdCB7CiAKIFZpZXdHZXN0dXJlQ29udHJvbGxlcjo6Vmlld0dlc3R1
cmVDb250cm9sbGVyKFdlYlBhZ2VQcm94eSYgd2ViUGFnZVByb3h5KQpAQCAtMTI3LDEwICsxNzks
MTIgQEAgVmlld0dlc3R1cmVDb250cm9sbGVyOjpWaWV3R2VzdHVyZUNvbnRyb2xsZXIoV2ViUGFn
ZVByb3h5JiB3ZWJQYWdlUHJveHkpCiAgICAgLCBtX3N3aXBlV2F0Y2hkb2dUaW1lcih0aGlzLCAm
Vmlld0dlc3R1cmVDb250cm9sbGVyOjpzd2lwZVNuYXBzaG90V2F0Y2hkb2dUaW1lckZpcmVkKQog
ICAgICwgbV90YXJnZXRSZW5kZXJUcmVlU2l6ZSgwKQogeworICAgIG1fd2ViUGFnZVByb3h5LnBy
b2Nlc3MoKS5hZGRNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OlZpZXdHZXN0dXJlQ29udHJvbGxl
cjo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtX3dlYlBhZ2VQcm94eS5wYWdlSUQoKSwgKnRoaXMp
OwogfQogCiBWaWV3R2VzdHVyZUNvbnRyb2xsZXI6On5WaWV3R2VzdHVyZUNvbnRyb2xsZXIoKQog
eworICAgIG1fd2ViUGFnZVByb3h5LnByb2Nlc3MoKS5yZW1vdmVNZXNzYWdlUmVjZWl2ZXIoTWVz
c2FnZXM6OlZpZXdHZXN0dXJlQ29udHJvbGxlcjo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtX3dl
YlBhZ2VQcm94eS5wYWdlSUQoKSk7CiB9CiAKIHZvaWQgVmlld0dlc3R1cmVDb250cm9sbGVyOjpp
bnN0YWxsU3dpcGVIYW5kbGVyKFVJVmlldyAqZ2VzdHVyZVJlY29nbml6ZXJWaWV3LCBVSVZpZXcg
KnN3aXBpbmdWaWV3KQpAQCAtMTQwLDYgKzE5NCwxNCBAQCB2b2lkIFZpZXdHZXN0dXJlQ29udHJv
bGxlcjo6aW5zdGFsbFN3aXBlSGFuZGxlcihVSVZpZXcgKmdlc3R1cmVSZWNvZ25pemVyVmlldywg
VQogICAgIG1fbGl2ZVN3aXBlVmlldyA9IHN3aXBpbmdWaWV3OwogfQogCit2b2lkIFZpZXdHZXN0
dXJlQ29udHJvbGxlcjo6dW5pbnN0YWxsU3dpcGVIYW5kbGVyKCkKK3sKKyAgICBBU1NFUlQobV9z
d2lwZUludGVyYWN0aXZlVHJhbnNpdGlvbkRlbGVnYXRlKTsKKyAgICBBU1NFUlQobV9hY3RpdmVH
ZXN0dXJlVHlwZSAhPSBWaWV3R2VzdHVyZVR5cGU6OlN3aXBlKTsKKyAgICBtX3N3aXBlSW50ZXJh
Y3RpdmVUcmFuc2l0aW9uRGVsZWdhdGUgPSBudWxscHRyOworICAgIG1fbGl2ZVN3aXBlVmlldyA9
IG51bGxwdHI7Cit9CisKIHZvaWQgVmlld0dlc3R1cmVDb250cm9sbGVyOjpiZWdpblN3aXBlR2Vz
dHVyZShfVUlOYXZpZ2F0aW9uSW50ZXJhY3RpdmVUcmFuc2l0aW9uQmFzZSAqdHJhbnNpdGlvbiwg
U3dpcGVEaXJlY3Rpb24gZGlyZWN0aW9uKQogewogICAgIGlmIChtX2FjdGl2ZUdlc3R1cmVUeXBl
ICE9IFZpZXdHZXN0dXJlVHlwZTo6Tm9uZSkKQEAgLTI3Myw0ICszMzUsMTc1IEBAIHZvaWQgVmll
d0dlc3R1cmVDb250cm9sbGVyOjpyZW1vdmVTd2lwZVNuYXBzaG90KCkKICAgICBtX2FjdGl2ZUdl
c3R1cmVUeXBlID0gVmlld0dlc3R1cmVUeXBlOjpOb25lOwogfQogCitVSUdlc3R1cmVSZWNvZ25p
emVyICpWaWV3R2VzdHVyZUNvbnRyb2xsZXI6Omluc3RhbGxTbWFydE1hZ25pZmljYXRpb25IYW5k
bGVyKFVJVmlldyAqdGFyZ2V0VmlldywgVUlTY3JvbGxWaWV3ICpzY3JvbGxWaWV3KQoreworICAg
IEFTU0VSVCghbV9zbWFydE1hZ25pZmljYXRpb25HZXN0dXJlQ29udHJvbGxlcik7CisgICAgbV9z
bWFydE1hZ25pZmljYXRpb25HZXN0dXJlQ29udHJvbGxlciA9IGFkb3B0TlMoW1tXS1NtYXJ0TWFn
bmlmaWNhdGlvbkdlc3R1cmVDb250cm9sbGVyIGFsbG9jXSBpbml0V2l0aFZpZXdHZXN0dXJlQ29u
dHJvbGxlcjp0aGlzIGdlc3R1cmVSZWNvZ25pemVyVmlldzp0YXJnZXRWaWV3XSk7CisgICAgbV9z
bWFydE1hZ25pZmljYXRpb25TY3JvbGxWaWV3ID0gc2Nyb2xsVmlldzsKKyAgICBtX3NtYXJ0TWFn
bmlmaWNhdGlvblRhcmdldFZpZXcgPSB0YXJnZXRWaWV3OworCisgICAgcmV0dXJuIFttX3NtYXJ0
TWFnbmlmaWNhdGlvbkdlc3R1cmVDb250cm9sbGVyIGRvdWJsZVRhcFJlY29nbml6ZXJdOworfQor
Cit2b2lkIFZpZXdHZXN0dXJlQ29udHJvbGxlcjo6aGFuZGxlU21hcnRNYWduaWZpY2F0aW9uR2Vz
dHVyZShGbG9hdFBvaW50IG9yaWdpbikKK3sKKyAgICBpZiAobV9hY3RpdmVHZXN0dXJlVHlwZSAh
PSBWaWV3R2VzdHVyZVR5cGU6Ok5vbmUpCisgICAgICAgIHJldHVybjsKKworICAgIG1fd2ViUGFn
ZVByb3h5LnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpWaWV3R2VzdHVyZUdlb21ldHJ5Q29sbGVj
dG9yOjpDb2xsZWN0R2VvbWV0cnlGb3JTbWFydE1hZ25pZmljYXRpb25HZXN0dXJlKG9yaWdpbiks
IG1fd2ViUGFnZVByb3h5LnBhZ2VJRCgpKTsKK30KKworc3RhdGljIGJvb2wgc2hvdWxkUGFuU2Ny
b2xsRm9yU2NhbGUoZG91YmxlIGZyb21TY2FsZSwgZG91YmxlIHRvU2NhbGUpCit7CisgICAgcmV0
dXJuIGZhYnModG9TY2FsZSAtIGZyb21TY2FsZSkgPCBzbWFydE1hZ25pZmljYXRpb25TY2FsZURl
bHRhVGhyZXNob2xkRm9yUGFuU2Nyb2xsOworfQorCitzdGF0aWMgQ0ZUaW1lSW50ZXJ2YWwgZHVy
YXRpb25Gb3Jab29tVG9TY2FsZShkb3VibGUgZnJvbVNjYWxlLCBkb3VibGUgdG9TY2FsZSkKK3sK
KyAgICBjb25zdCBkb3VibGUgbWF4aW11bVpvb21EdXJhdGlvbiA9IDAuNDsKKyAgICBjb25zdCBk
b3VibGUgbWluaW11bVpvb21EdXJhdGlvbiA9IDAuMTsKKyAgICBjb25zdCBkb3VibGUgem9vbUR1
cmF0aW9uRmFjdG9yID0gMC4zOworCisgICAgcmV0dXJuIHN0ZDo6bWluKGZhYnMobG9nKGZyb21T
Y2FsZSkgLSBsb2codG9TY2FsZSkpICogem9vbUR1cmF0aW9uRmFjdG9yICsgbWluaW11bVpvb21E
dXJhdGlvbiwgbWF4aW11bVpvb21EdXJhdGlvbik7Cit9CisKK3N0YXRpYyBib29sIHpvb21Ub0Nl
bnRlckF0U2NhbGUoRmxvYXRQb2ludCBvcmlnaW4sIGRvdWJsZSBzY2FsZSwgVUlTY3JvbGxWaWV3
ICpzY3JvbGxWaWV3KQoreworICAgIGlmICghW3Njcm9sbFZpZXcgaXNab29tRW5hYmxlZF0pCisg
ICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIENGVGltZUludGVydmFsIGR1cmF0aW9uID0gZHVy
YXRpb25Gb3Jab29tVG9TY2FsZShbc2Nyb2xsVmlldyB6b29tU2NhbGVdLCBzY2FsZSk7CisgICAg
W3Njcm9sbFZpZXcgX3pvb21Ub0NlbnRlcjpvcmlnaW4gc2NhbGU6c2NhbGUgZHVyYXRpb246ZHVy
YXRpb25dOworCisgICAgcmV0dXJuIHRydWU7Cit9CisKK2Jvb2wgVmlld0dlc3R1cmVDb250cm9s
bGVyOjpzbWFydE1hZ25pZmljYXRpb25ab29tVG9UYXJnZXQoZG91YmxlIHNjYWxlLCBGbG9hdFJl
Y3QgdGFyZ2V0UmVjdCwgRmxvYXRQb2ludCBvcmlnaW4pCit7CisgICAgRmxvYXRTaXplIHNjcm9s
bFZpZXdTaXplKFttX3NtYXJ0TWFnbmlmaWNhdGlvblNjcm9sbFZpZXcgYm91bmRzXS5zaXplKTsK
KyAgICBkb3VibGUgY3VycmVudFNjYWxlRmFjdG9yID0gbV93ZWJQYWdlUHJveHkucGFnZVNjYWxl
RmFjdG9yKCk7CisgICAgZG91YmxlIHJlbGF0aXZlU2NhbGUgPSBzY2FsZSAvIGN1cnJlbnRTY2Fs
ZUZhY3RvcjsKKworICAgIEZsb2F0UmVjdCBzY3JvbGxWaWV3VGFyZ2V0UmVjdCA9IFttX3NtYXJ0
TWFnbmlmaWNhdGlvblNjcm9sbFZpZXcgY29udmVydFJlY3Q6dGFyZ2V0UmVjdCBmcm9tVmlldzpt
X3NtYXJ0TWFnbmlmaWNhdGlvblRhcmdldFZpZXcuZ2V0KCldOworICAgIEZsb2F0UmVjdCBzY2Fs
ZWRTY3JvbGxWaWV3VGFyZ2V0UmVjdCA9IHNjcm9sbFZpZXdUYXJnZXRSZWN0OworICAgIHNjYWxl
ZFNjcm9sbFZpZXdUYXJnZXRSZWN0LnNjYWxlKHJlbGF0aXZlU2NhbGUsIHJlbGF0aXZlU2NhbGUp
OworCisgICAgLy8gQ2VudGVyIHRoZSB0YXJnZXQgcmVjdCBpbiB0aGUgc2Nyb2xsIHZpZXcuCisg
ICAgLy8gSWYgdGhlIHRhcmdldCBkb2Vzbid0IGZpdCBpbiB0aGUgc2Nyb2xsIHZpZXcsIGNlbnRl
ciBvbiB0aGUgZ2VzdHVyZSBsb2NhdGlvbiBpbnN0ZWFkLgorICAgIEZsb2F0UG9pbnQgem9vbUNl
bnRlciA9IHRhcmdldFJlY3QuY2VudGVyKCk7CisKKyAgICBpZiAoc2NhbGVkU2Nyb2xsVmlld1Rh
cmdldFJlY3Qud2lkdGgoKSA+IHNjcm9sbFZpZXdTaXplLndpZHRoKCkpCisgICAgICAgIHpvb21D
ZW50ZXIuc2V0WChvcmlnaW4ueCgpKTsKKyAgICBpZiAoc2NhbGVkU2Nyb2xsVmlld1RhcmdldFJl
Y3QuaGVpZ2h0KCkgPiBzY3JvbGxWaWV3U2l6ZS5oZWlnaHQoKSkKKyAgICAgICAgem9vbUNlbnRl
ci5zZXRZKG9yaWdpbi55KCkpOworCisgICAgaWYgKHpvb21Ub0NlbnRlckF0U2NhbGUoem9vbUNl
bnRlciwgc2NhbGUsIG1fc21hcnRNYWduaWZpY2F0aW9uU2Nyb2xsVmlldy5nZXQoKSkpCisgICAg
ICAgIHJldHVybiB0cnVlOworCisgICAgcmV0dXJuIGZhbHNlOworfQorCitzdGF0aWMgRmxvYXRQ
b2ludCBjb25zdHJhaW5Db250ZW50T2Zmc2V0KEZsb2F0UG9pbnQgY29udGVudE9mZnNldCwgRmxv
YXRTaXplIGNvbnRlbnRTaXplLCBGbG9hdFNpemUgc2Nyb2xsVmlld1NpemUpCit7CisgICAgRmxv
YXRTaXplIG1heGltdW1Db250ZW50T2Zmc2V0ID0gY29udGVudFNpemUgLSBzY3JvbGxWaWV3U2l6
ZTsKKyAgICBjb250ZW50T2Zmc2V0ID0gY29udGVudE9mZnNldC5zaHJ1bmtUbyhGbG9hdFBvaW50
KG1heGltdW1Db250ZW50T2Zmc2V0LndpZHRoKCksIG1heGltdW1Db250ZW50T2Zmc2V0LmhlaWdo
dCgpKSk7CisgICAgY29udGVudE9mZnNldCA9IGNvbnRlbnRPZmZzZXQuZXhwYW5kZWRUbyhGbG9h
dFBvaW50KCkpOworICAgIHJldHVybiBjb250ZW50T2Zmc2V0OworfQorCitib29sIFZpZXdHZXN0
dXJlQ29udHJvbGxlcjo6c21hcnRNYWduaWZpY2F0aW9uU2Nyb2xsVG9UYXJnZXQoRmxvYXRSZWN0
IHRhcmdldFJlY3QsIEZsb2F0UG9pbnQgb3JpZ2luKQoreworICAgIGlmICghW21fc21hcnRNYWdu
aWZpY2F0aW9uU2Nyb2xsVmlldyBpc1Njcm9sbEVuYWJsZWRdKQorICAgICAgICByZXR1cm4gZmFs
c2U7CisKKyAgICBGbG9hdFNpemUgc2Nyb2xsVmlld1NpemUoW21fc21hcnRNYWduaWZpY2F0aW9u
U2Nyb2xsVmlldyBib3VuZHNdLnNpemUpOworICAgIEZsb2F0U2l6ZSBjb250ZW50U2l6ZShbbV9z
bWFydE1hZ25pZmljYXRpb25TY3JvbGxWaWV3IGNvbnRlbnRTaXplXSk7CisgICAgRmxvYXRQb2lu
dCBjdXJyZW50Q29udGVudE9mZnNldChbbV9zbWFydE1hZ25pZmljYXRpb25TY3JvbGxWaWV3IGNv
bnRlbnRPZmZzZXRdKTsKKworICAgIEZsb2F0UG9pbnQgc2Nyb2xsVmlld09yaWdpbihbbV9zbWFy
dE1hZ25pZmljYXRpb25TY3JvbGxWaWV3IGNvbnZlcnRQb2ludDpvcmlnaW4gZnJvbVZpZXc6bV9z
bWFydE1hZ25pZmljYXRpb25UYXJnZXRWaWV3LmdldCgpXSk7CisgICAgRmxvYXRSZWN0IHNjcm9s
bFZpZXdUYXJnZXRSZWN0KFttX3NtYXJ0TWFnbmlmaWNhdGlvblNjcm9sbFZpZXcgY29udmVydFJl
Y3Q6dGFyZ2V0UmVjdCBmcm9tVmlldzptX3NtYXJ0TWFnbmlmaWNhdGlvblRhcmdldFZpZXcuZ2V0
KCldKTsKKworICAgIC8vIENlbnRlciB0aGUgdGFyZ2V0IHJlY3QgaW4gdGhlIHNjcm9sbCB2aWV3
LgorICAgIC8vIElmIHRoZSB0YXJnZXQgZG9lc24ndCBmaXQgaW4gdGhlIHNjcm9sbCB2aWV3LCBj
ZW50ZXIgb24gdGhlIGdlc3R1cmUgbG9jYXRpb24gaW5zdGVhZC4KKyAgICBGbG9hdFBvaW50IG5l
d0NvbnRlbnRPZmZzZXQ7CisgICAgaWYgKHNjcm9sbFZpZXdUYXJnZXRSZWN0LndpZHRoKCkgPD0g
c2Nyb2xsVmlld1NpemUud2lkdGgoKSkKKyAgICAgICAgbmV3Q29udGVudE9mZnNldC5zZXRYKHNj
cm9sbFZpZXdUYXJnZXRSZWN0LngoKSAtIChzY3JvbGxWaWV3U2l6ZS53aWR0aCgpIC0gc2Nyb2xs
Vmlld1RhcmdldFJlY3Qud2lkdGgoKSkgLyAyKTsKKyAgICBlbHNlCisgICAgICAgIG5ld0NvbnRl
bnRPZmZzZXQuc2V0WChzY3JvbGxWaWV3T3JpZ2luLngoKSAtIHNjcm9sbFZpZXdTaXplLndpZHRo
KCkgLyAyKTsKKyAgICBpZiAoc2Nyb2xsVmlld1RhcmdldFJlY3QuaGVpZ2h0KCkgPD0gc2Nyb2xs
Vmlld1NpemUuaGVpZ2h0KCkpCisgICAgICAgIG5ld0NvbnRlbnRPZmZzZXQuc2V0WShzY3JvbGxW
aWV3VGFyZ2V0UmVjdC55KCkgLSAoc2Nyb2xsVmlld1NpemUuaGVpZ2h0KCkgLSBzY3JvbGxWaWV3
VGFyZ2V0UmVjdC5oZWlnaHQoKSkgLyAyKTsKKyAgICBlbHNlCisgICAgICAgIG5ld0NvbnRlbnRP
ZmZzZXQuc2V0WShzY3JvbGxWaWV3T3JpZ2luLnkoKSAtIHNjcm9sbFZpZXdTaXplLmhlaWdodCgp
IC8gMik7CisgICAgbmV3Q29udGVudE9mZnNldCA9IGNvbnN0cmFpbkNvbnRlbnRPZmZzZXQobmV3
Q29udGVudE9mZnNldCwgY29udGVudFNpemUsIHNjcm9sbFZpZXdTaXplKTsKKworICAgIGlmIChj
dXJyZW50Q29udGVudE9mZnNldCA9PSBuZXdDb250ZW50T2Zmc2V0KSB7CisgICAgICAgIGlmIChz
Y3JvbGxWaWV3VGFyZ2V0UmVjdC53aWR0aCgpID4gc2Nyb2xsVmlld1NpemUud2lkdGgoKSkKKyAg
ICAgICAgICAgIG5ld0NvbnRlbnRPZmZzZXQuc2V0WChzY3JvbGxWaWV3T3JpZ2luLngoKSAtIHNj
cm9sbFZpZXdTaXplLndpZHRoKCkgLyAyKTsKKyAgICAgICAgaWYgKHNjcm9sbFZpZXdUYXJnZXRS
ZWN0LmhlaWdodCgpID4gc2Nyb2xsVmlld1NpemUuaGVpZ2h0KCkpCisgICAgICAgICAgICBuZXdD
b250ZW50T2Zmc2V0LnNldFkoc2Nyb2xsVmlld09yaWdpbi55KCkgLSBzY3JvbGxWaWV3U2l6ZS5o
ZWlnaHQoKSAvIDIpOworICAgICAgICBuZXdDb250ZW50T2Zmc2V0ID0gY29uc3RyYWluQ29udGVu
dE9mZnNldChuZXdDb250ZW50T2Zmc2V0LCBjb250ZW50U2l6ZSwgc2Nyb2xsVmlld1NpemUpOwor
ICAgIH0KKworICAgIEZsb2F0UmVjdCBpbnNldFNjcm9sbFZpZXdSZWN0ID0gVUlFZGdlSW5zZXRz
SW5zZXRSZWN0KFttX3NtYXJ0TWFnbmlmaWNhdGlvblNjcm9sbFZpZXcgYm91bmRzXSwgW21fc21h
cnRNYWduaWZpY2F0aW9uU2Nyb2xsVmlldyBjb250ZW50SW5zZXRdKTsKKworICAgIGZsb2F0IHNj
cm9sbERpc3RhbmNlID0gKGN1cnJlbnRDb250ZW50T2Zmc2V0IC0gbmV3Q29udGVudE9mZnNldCku
ZGlhZ29uYWxMZW5ndGgoKTsKKworICAgIC8vIElmIHRoZSBjb250ZW50IGFscmVhZHkgZml0cyBp
biB0aGUgc2Nyb2xsIHZpZXcgYW5kIHdlJ3JlIGFscmVhZHkgem9vbWVkIGluIHRvIHRoZSB0YXJn
ZXQgc2NhbGUsCisgICAgLy8gaXQgaXMgbW9zdCBsaWtlbHkgdGhhdCB0aGUgdXNlciBpbnRlbmRl
ZCB0byBzY3JvbGwsIHNvIHVzZSBhIHNtYWxsIGRpc3RhbmNlIHRocmVzaG9sZCB0byBpbml0aWF0
ZSBwYW5uaW5nLgorICAgIGlmIChjb250ZW50U2l6ZS53aWR0aCgpIDw9IGluc2V0U2Nyb2xsVmll
d1JlY3Qud2lkdGgoKSkgeworICAgICAgICBpZiAoc2Nyb2xsRGlzdGFuY2UgPCBzbWFydE1hZ25p
ZmljYXRpb25QYW5TY3JvbGxUaHJlc2hvbGRab29tZWRPdXQpCisgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7CisgICAgfSBlbHNlIGlmIChVSUN1cnJlbnRVc2VySW50ZXJmYWNlSWRpb21Jc1BhZCgp
KSB7CisgICAgICAgIGlmIChzY3JvbGxEaXN0YW5jZSA8IHNtYXJ0TWFnbmlmaWNhdGlvblBhblNj
cm9sbFRocmVzaG9sZElQYWQpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfSBlbHNl
IGlmIChzY3JvbGxEaXN0YW5jZSA8IHNtYXJ0TWFnbmlmaWNhdGlvblBhblNjcm9sbFRocmVzaG9s
ZElQaG9uZSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgW21fc21hcnRNYWduaWZpY2F0
aW9uU2Nyb2xsVmlldyBzZXRDb250ZW50T2Zmc2V0Om5ld0NvbnRlbnRPZmZzZXQgYW5pbWF0ZWQ6
WUVTXTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwordm9pZCBWaWV3R2VzdHVyZUNvbnRyb2xsZXI6
OmRpZENvbGxlY3RHZW9tZXRyeUZvclNtYXJ0TWFnbmlmaWNhdGlvbkdlc3R1cmUoRmxvYXRQb2lu
dCBvcmlnaW4sIEZsb2F0UmVjdCB0YXJnZXRSZWN0LCBGbG9hdFJlY3QgdmlzaWJsZUNvbnRlbnRS
ZWN0LCBib29sIGlzUmVwbGFjZWRFbGVtZW50LCBib29sIGZyYW1lSGFuZGxlc01hZ25pZmljYXRp
b25HZXN0dXJlLCBkb3VibGUgdmlld3BvcnRNaW5pbXVtU2NhbGUsIGRvdWJsZSB2aWV3cG9ydE1h
eGltdW1TY2FsZSkKK3sKKyAgICBpZiAoZnJhbWVIYW5kbGVzTWFnbmlmaWNhdGlvbkdlc3R1cmUp
CisgICAgICAgIHJldHVybjsKKworICAgIGRvdWJsZSBjdXJyZW50U2NhbGVGYWN0b3IgPSBtX3dl
YlBhZ2VQcm94eS5wYWdlU2NhbGVGYWN0b3IoKTsKKworICAgIGlmICh0YXJnZXRSZWN0LmlzRW1w
dHkoKSkgeworICAgICAgICAvLyBGSVhNRTogSWYgd2UgZG9uJ3Qgem9vbSwgc2VuZCB0aGUgdGFw
IGFsb25nIHRvIHRleHQgc2VsZWN0aW9uIChzZWUgPHJkYXI6Ly9wcm9ibGVtLzY4MTAzNDQ+KS4K
KyAgICAgICAgem9vbVRvQ2VudGVyQXRTY2FsZShvcmlnaW4sIHZpZXdwb3J0TWluaW11bVNjYWxl
LCBtX3NtYXJ0TWFnbmlmaWNhdGlvblNjcm9sbFZpZXcuZ2V0KCkpOworICAgICAgICByZXR1cm47
CisgICAgfQorCisgICAgZG91YmxlIG1heGltdW1TY2FsZSA9IHN0ZDo6bWluKHZpZXdwb3J0TWF4
aW11bVNjYWxlLCBzbWFydE1hZ25pZmljYXRpb25NYXhpbXVtU2NhbGUpOworICAgIGRvdWJsZSBt
aW5pbXVtU2NhbGUgPSBzdGQ6Om1heCh2aWV3cG9ydE1pbmltdW1TY2FsZSwgc21hcnRNYWduaWZp
Y2F0aW9uTWluaW11bVNjYWxlKTsKKworICAgIGRvdWJsZSBwYWRkZWRDdXJyZW50U2NhbGVGYWN0
b3IgPSBtX3dlYlBhZ2VQcm94eS5wYWdlU2NhbGVGYWN0b3IoKSAqICgxIC0gc21hcnRNYWduaWZp
Y2F0aW9uRWxlbWVudFBhZGRpbmcpOworCisgICAgZG91YmxlIGhvcml6b250YWxTY2FsZSA9IHBh
ZGRlZEN1cnJlbnRTY2FsZUZhY3RvciAqICh2aXNpYmxlQ29udGVudFJlY3Qud2lkdGgoKSAvIHRh
cmdldFJlY3Qud2lkdGgoKSk7CisgICAgZG91YmxlIHZlcnRpY2FsU2NhbGUgPSBwYWRkZWRDdXJy
ZW50U2NhbGVGYWN0b3IgKiAodmlzaWJsZUNvbnRlbnRSZWN0LmhlaWdodCgpIC8gdGFyZ2V0UmVj
dC5oZWlnaHQoKSk7CisKKyAgICBob3Jpem9udGFsU2NhbGUgPSBzdGQ6Om1pbihzdGQ6Om1heCho
b3Jpem9udGFsU2NhbGUsIG1pbmltdW1TY2FsZSksIG1heGltdW1TY2FsZSk7CisgICAgdmVydGlj
YWxTY2FsZSA9IHN0ZDo6bWluKHN0ZDo6bWF4KHZlcnRpY2FsU2NhbGUsIG1pbmltdW1TY2FsZSks
IG1heGltdW1TY2FsZSk7CisKKyAgICAvLyBGb3IgcmVwbGFjZWQgZWxlbWVudHMgbGlrZSBpbWFn
ZXMsIHdlIHdhbnQgdG8gZml0IHRoZSB3aG9sZSBlbGVtZW50CisgICAgLy8gaW4gdGhlIHZpZXcs
IHNvIHNjYWxlIGl0IGRvd24gZW5vdWdoIHRvIG1ha2UgYm90aCBkaW1lbnNpb25zIGZpdCBpZiBw
b3NzaWJsZS4KKyAgICAvLyBGb3Igb3RoZXIgZWxlbWVudHMsIHRyeSB0byBmaXQgdGhlbSBob3Jp
em9udGFsbHkuCisgICAgZG91YmxlIHRhcmdldFNjYWxlID0gaXNSZXBsYWNlZEVsZW1lbnQgPyBz
dGQ6Om1pbihob3Jpem9udGFsU2NhbGUsIHZlcnRpY2FsU2NhbGUpIDogaG9yaXpvbnRhbFNjYWxl
OworCisgICAgLy8gRklYTUU6IENoZWNrIGlmIHRleHQgc2VsZWN0aW9uIHdhbnRzIHRvIGNvbnN1
bWUgdGhlIGRvdWJsZSB0YXAgYmVmb3JlIHdlIGF0dGVtcHQgbWFnbmlmaWNhdGlvbi4KKworICAg
IGlmIChzaG91bGRQYW5TY3JvbGxGb3JTY2FsZShjdXJyZW50U2NhbGVGYWN0b3IsIHRhcmdldFNj
YWxlKSkgeworICAgICAgICBpZiAoc21hcnRNYWduaWZpY2F0aW9uU2Nyb2xsVG9UYXJnZXQodGFy
Z2V0UmVjdCwgb3JpZ2luKSkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICB9IGVsc2UgaWYgKHRh
cmdldFNjYWxlICE9IGN1cnJlbnRTY2FsZUZhY3RvcikgeworICAgICAgICBpZiAoc21hcnRNYWdu
aWZpY2F0aW9uWm9vbVRvVGFyZ2V0KHRhcmdldFNjYWxlLCB0YXJnZXRSZWN0LCBvcmlnaW4pKQor
ICAgICAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIC8vIEZJWE1FOiBJZiB3ZSBzdGlsbCBk
b24ndCB6b29tLCBzZW5kIHRoZSB0YXAgYWxvbmcgdG8gdGV4dCBzZWxlY3Rpb24gKHNlZSA8cmRh
cjovL3Byb2JsZW0vNjgxMDM0ND4pLgorICAgIHpvb21Ub0NlbnRlckF0U2NhbGUob3JpZ2luLCB2
aWV3cG9ydE1pbmltdW1TY2FsZSwgbV9zbWFydE1hZ25pZmljYXRpb25TY3JvbGxWaWV3LmdldCgp
KTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvbWFjL1ZpZXdHZXN0dXJlQ29udHJvbGxlci5oIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL21hYy9WaWV3R2VzdHVyZUNvbnRyb2xsZXIuaAppbmRleCBjNjQ5YzYxLi45N2Fj
ZWQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1ZpZXdHZXN0dXJl
Q29udHJvbGxlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvVmlld0dlc3R1
cmVDb250cm9sbGVyLmgKQEAgLTM0LDcgKzM0LDEwIEBACiBPQkpDX0NMQVNTIENBTGF5ZXI7CiAK
ICNpZiBQTEFURk9STShJT1MpCitPQkpDX0NMQVNTIFVJR2VzdHVyZVJlY29nbml6ZXI7CitPQkpD
X0NMQVNTIFVJU2Nyb2xsVmlldzsKIE9CSkNfQ0xBU1MgVUlWaWV3OworT0JKQ19DTEFTUyBXS1Nt
YXJ0TWFnbmlmaWNhdGlvbkdlc3R1cmVDb250cm9sbGVyOwogT0JKQ19DTEFTUyBXS1N3aXBlVHJh
bnNpdGlvbkNvbnRyb2xsZXI7CiBPQkpDX0NMQVNTIF9VSVZpZXdDb250cm9sbGVyVHJhbnNpdGlv
bkNvbnRleHQ7CiBPQkpDX0NMQVNTIF9VSU5hdmlnYXRpb25JbnRlcmFjdGl2ZVRyYW5zaXRpb25C
YXNlOwpAQCAtNTgsOCArNjEsOCBAQCBwdWJsaWM6CiAgICAgICAgIE5vbmUsCiAjaWYgIVBMQVRG
T1JNKElPUykKICAgICAgICAgTWFnbmlmaWNhdGlvbiwKLSAgICAgICAgU21hcnRNYWduaWZpY2F0
aW9uLAogI2VuZGlmCisgICAgICAgIFNtYXJ0TWFnbmlmaWNhdGlvbiwKICAgICAgICAgU3dpcGUK
ICAgICB9OwogICAgIApAQCAtNzMsMTEgKzc2LDEyIEBAIHB1YmxpYzoKICAgICAgICAgUmlnaHQK
ICAgICB9OwogICAgIAorICAgIHZvaWQgaGFuZGxlU21hcnRNYWduaWZpY2F0aW9uR2VzdHVyZShX
ZWJDb3JlOjpGbG9hdFBvaW50IG9yaWdpbik7CisKICNpZiAhUExBVEZPUk0oSU9TKQogICAgIGRv
dWJsZSBtYWduaWZpY2F0aW9uKCkgY29uc3Q7CiAKICAgICB2b2lkIGhhbmRsZU1hZ25pZmljYXRp
b25HZXN0dXJlKGRvdWJsZSBzY2FsZSwgV2ViQ29yZTo6RmxvYXRQb2ludCBvcmlnaW4pOwotICAg
IHZvaWQgaGFuZGxlU21hcnRNYWduaWZpY2F0aW9uR2VzdHVyZShXZWJDb3JlOjpGbG9hdFBvaW50
IG9yaWdpbik7CiAKICAgICBib29sIGhhbmRsZVNjcm9sbFdoZWVsRXZlbnQoTlNFdmVudCAqKTsK
ICAgICB2b2lkIHdoZWVsRXZlbnRXYXNOb3RIYW5kbGVkQnlXZWJDb3JlKE5TRXZlbnQgKik7CkBA
IC04OCw2ICs5Miw4IEBAIHB1YmxpYzoKICAgICB2b2lkIGVuZEFjdGl2ZUdlc3R1cmUoKTsKICNl
bHNlCiAgICAgdm9pZCBpbnN0YWxsU3dpcGVIYW5kbGVyKFVJVmlldyAqZ2VzdHVyZVJlY29nbml6
ZXJWaWV3LCBVSVZpZXcgKnN3aXBpbmdWaWV3KTsKKyAgICB2b2lkIHVuaW5zdGFsbFN3aXBlSGFu
ZGxlcigpOworICAgIFVJR2VzdHVyZVJlY29nbml6ZXIgKmluc3RhbGxTbWFydE1hZ25pZmljYXRp
b25IYW5kbGVyKFVJVmlldyAqdGFyZ2V0VmlldywgVUlTY3JvbGxWaWV3ICpzY3JvbGxWaWV3KTsK
ICAgICBib29sIGNhblN3aXBlSW5EaXJlY3Rpb24oU3dpcGVEaXJlY3Rpb24pOwogICAgIHZvaWQg
YmVnaW5Td2lwZUdlc3R1cmUoX1VJTmF2aWdhdGlvbkludGVyYWN0aXZlVHJhbnNpdGlvbkJhc2Ug
KiwgU3dpcGVEaXJlY3Rpb24pOwogICAgIHZvaWQgZW5kU3dpcGVHZXN0dXJlKFdlYkJhY2tGb3J3
YXJkTGlzdEl0ZW0qIHRhcmdldEl0ZW0sIF9VSVZpZXdDb250cm9sbGVyVHJhbnNpdGlvbkNvbnRl
eHQgKiwgYm9vbCBjYW5jZWxsZWQpOwpAQCAtMTAxLDEwICsxMDcsMTQgQEAgcHJpdmF0ZToKICAg
ICB2b2lkIHJlbW92ZVN3aXBlU25hcHNob3QoKTsKICAgICB2b2lkIHN3aXBlU25hcHNob3RXYXRj
aGRvZ1RpbWVyRmlyZWQoV2ViQ29yZTo6VGltZXI8Vmlld0dlc3R1cmVDb250cm9sbGVyPiopOwog
Ci0jaWYgIVBMQVRGT1JNKElPUykKICAgICAvLyBNZXNzYWdlIGhhbmRsZXJzLgorICAgIHZvaWQg
ZGlkQ29sbGVjdEdlb21ldHJ5Rm9yU21hcnRNYWduaWZpY2F0aW9uR2VzdHVyZShXZWJDb3JlOjpG
bG9hdFBvaW50IG9yaWdpbiwgV2ViQ29yZTo6RmxvYXRSZWN0IHJlbmRlclJlY3QsIFdlYkNvcmU6
OkZsb2F0UmVjdCB2aXNpYmxlQ29udGVudEJvdW5kcywgYm9vbCBpc1JlcGxhY2VkRWxlbWVudCwg
Ym9vbCBmcmFtZUhhbmRsZXNNYWduaWZpY2F0aW9uR2VzdHVyZSwgZG91YmxlIHZpZXdwb3J0TWlu
aW11bVNjYWxlLCBkb3VibGUgdmlld3BvcnRNYXhpbXVtU2NhbGUpOworCisjaWYgUExBVEZPUk0o
SU9TKQorICAgIGJvb2wgc21hcnRNYWduaWZpY2F0aW9uWm9vbVRvVGFyZ2V0KGRvdWJsZSBtYWdu
aWZpY2F0aW9uLCBXZWJDb3JlOjpGbG9hdFJlY3QgdGFyZ2V0UmVjdCwgV2ViQ29yZTo6RmxvYXRQ
b2ludCBvcmlnaW4pOworICAgIGJvb2wgc21hcnRNYWduaWZpY2F0aW9uU2Nyb2xsVG9UYXJnZXQo
V2ViQ29yZTo6RmxvYXRSZWN0IHRhcmdldFJlY3QsIFdlYkNvcmU6OkZsb2F0UG9pbnQgb3JpZ2lu
KTsKKyNlbHNlCiAgICAgdm9pZCBkaWRDb2xsZWN0R2VvbWV0cnlGb3JNYWduaWZpY2F0aW9uR2Vz
dHVyZShXZWJDb3JlOjpGbG9hdFJlY3QgdmlzaWJsZUNvbnRlbnRCb3VuZHMsIGJvb2wgZnJhbWVI
YW5kbGVzTWFnbmlmaWNhdGlvbkdlc3R1cmUpOwotICAgIHZvaWQgZGlkQ29sbGVjdEdlb21ldHJ5
Rm9yU21hcnRNYWduaWZpY2F0aW9uR2VzdHVyZShXZWJDb3JlOjpGbG9hdFBvaW50IG9yaWdpbiwg
V2ViQ29yZTo6RmxvYXRSZWN0IHJlbmRlclJlY3QsIFdlYkNvcmU6OkZsb2F0UmVjdCB2aXNpYmxl
Q29udGVudEJvdW5kcywgYm9vbCBpc1JlcGxhY2VkRWxlbWVudCwgYm9vbCBmcmFtZUhhbmRsZXNN
YWduaWZpY2F0aW9uR2VzdHVyZSk7CiAgICAgdm9pZCBkaWRIaXRSZW5kZXJUcmVlU2l6ZVRocmVz
aG9sZCgpOwogCiAgICAgdm9pZCBlbmRNYWduaWZpY2F0aW9uR2VzdHVyZSgpOwpAQCAtMTQ5LDYg
KzE1OSw5IEBAIHByaXZhdGU6CiAgICAgUmV0YWluUHRyPFVJVmlldz4gbV9zbmFwc2hvdFZpZXc7
CiAgICAgUmV0YWluUHRyPFVJVmlldz4gbV90cmFuc2l0aW9uQ29udGFpbmVyVmlldzsKICAgICBS
ZXRhaW5QdHI8V0tTd2lwZVRyYW5zaXRpb25Db250cm9sbGVyPiBtX3N3aXBlSW50ZXJhY3RpdmVU
cmFuc2l0aW9uRGVsZWdhdGU7CisgICAgUmV0YWluUHRyPFdLU21hcnRNYWduaWZpY2F0aW9uR2Vz
dHVyZUNvbnRyb2xsZXI+IG1fc21hcnRNYWduaWZpY2F0aW9uR2VzdHVyZUNvbnRyb2xsZXI7Cisg
ICAgUmV0YWluUHRyPFVJU2Nyb2xsVmlldz4gbV9zbWFydE1hZ25pZmljYXRpb25TY3JvbGxWaWV3
OworICAgIFJldGFpblB0cjxVSVZpZXc+IG1fc21hcnRNYWduaWZpY2F0aW9uVGFyZ2V0VmlldzsK
ICAgICB1aW50NjRfdCBtX3RhcmdldFJlbmRlclRyZWVTaXplOwogI2VuZGlmCiB9OwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9WaWV3R2VzdHVyZUNvbnRyb2xsZXIu
bWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1ZpZXdHZXN0dXJlQ29u
dHJvbGxlci5tZXNzYWdlcy5pbgppbmRleCBhMGI1OGMwLi44MjkyMzA2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1ZpZXdHZXN0dXJlQ29udHJvbGxlci5tZXNzYWdl
cy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1ZpZXdHZXN0dXJlQ29udHJv
bGxlci5tZXNzYWdlcy5pbgpAQCAtMjEsOSArMjEsMTEgQEAKICMgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KIAogbWVz
c2FnZXMgLT4gVmlld0dlc3R1cmVDb250cm9sbGVyIHsKKyAgICBEaWRDb2xsZWN0R2VvbWV0cnlG
b3JTbWFydE1hZ25pZmljYXRpb25HZXN0dXJlKFdlYkNvcmU6OkZsb2F0UG9pbnQgb3JpZ2luLCBX
ZWJDb3JlOjpGbG9hdFJlY3QgcmVuZGVyUmVjdCwgV2ViQ29yZTo6RmxvYXRSZWN0IHZpc2libGVD
b250ZW50Qm91bmRzLCBib29sIGlzUmVwbGFjZWRFbGVtZW50LCBib29sIGZyYW1lSGFuZGxlc01h
Z25pZmljYXRpb25HZXN0dXJlLCBkb3VibGUgdmlld3BvcnRNaW5pbXVtU2NhbGUsIGRvdWJsZSB2
aWV3cG9ydE1heGltdW1TY2FsZSkKKwogI2lmICFQTEFURk9STShJT1MpCiAgICAgRGlkQ29sbGVj
dEdlb21ldHJ5Rm9yTWFnbmlmaWNhdGlvbkdlc3R1cmUoV2ViQ29yZTo6RmxvYXRSZWN0IHZpc2li
bGVDb250ZW50Qm91bmRzLCBib29sIGZyYW1lSGFuZGxlc01hZ25pZmljYXRpb25HZXN0dXJlKQot
ICAgIERpZENvbGxlY3RHZW9tZXRyeUZvclNtYXJ0TWFnbmlmaWNhdGlvbkdlc3R1cmUoV2ViQ29y
ZTo6RmxvYXRQb2ludCBvcmlnaW4sIFdlYkNvcmU6OkZsb2F0UmVjdCByZW5kZXJSZWN0LCBXZWJD
b3JlOjpGbG9hdFJlY3QgdmlzaWJsZUNvbnRlbnRCb3VuZHMsIGJvb2wgaXNSZXBsYWNlZEVsZW1l
bnQsIGJvb2wgZnJhbWVIYW5kbGVzTWFnbmlmaWNhdGlvbkdlc3R1cmUpCisKICAgICBEaWRIaXRS
ZW5kZXJUcmVlU2l6ZVRocmVzaG9sZCgpCiAjZW5kaWYKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9tYWMvVmlld0dlc3R1cmVDb250cm9sbGVyTWFjLm1tIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL21hYy9WaWV3R2VzdHVyZUNvbnRyb2xsZXJNYWMubW0KaW5kZXgg
YTJlNDIxZS4uMWFhMTc1NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21h
Yy9WaWV3R2VzdHVyZUNvbnRyb2xsZXJNYWMubW0KKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL21hYy9WaWV3R2VzdHVyZUNvbnRyb2xsZXJNYWMubW0KQEAgLTIwNSwxMyArMjA1LDE1IEBA
IHN0YXRpYyBmbG9hdCBtYXhpbXVtUmVjdGFuZ2xlQ29tcG9uZW50RGVsdGEoRmxvYXRSZWN0IGEs
IEZsb2F0UmVjdCBiKQogICAgIHJldHVybiBzdGQ6Om1heChmYWJzKGEueCgpIC0gYi54KCkpLCBz
dGQ6Om1heChmYWJzKGEueSgpIC0gYi55KCkpLCBzdGQ6Om1heChmYWJzKGEud2lkdGgoKSAtIGIu
d2lkdGgoKSksIGZhYnMoYS5oZWlnaHQoKSAtIGIuaGVpZ2h0KCkpKSkpOwogfQogCi12b2lkIFZp
ZXdHZXN0dXJlQ29udHJvbGxlcjo6ZGlkQ29sbGVjdEdlb21ldHJ5Rm9yU21hcnRNYWduaWZpY2F0
aW9uR2VzdHVyZShGbG9hdFBvaW50IG9yaWdpbiwgRmxvYXRSZWN0IHJlbmRlclJlY3QsIEZsb2F0
UmVjdCB2aXNpYmxlQ29udGVudFJlY3QsIGJvb2wgaXNSZXBsYWNlZEVsZW1lbnQsIGJvb2wgZnJh
bWVIYW5kbGVzTWFnbmlmaWNhdGlvbkdlc3R1cmUpCit2b2lkIFZpZXdHZXN0dXJlQ29udHJvbGxl
cjo6ZGlkQ29sbGVjdEdlb21ldHJ5Rm9yU21hcnRNYWduaWZpY2F0aW9uR2VzdHVyZShGbG9hdFBv
aW50IG9yaWdpbiwgRmxvYXRSZWN0IHJlbmRlclJlY3QsIEZsb2F0UmVjdCB2aXNpYmxlQ29udGVu
dFJlY3QsIGJvb2wgaXNSZXBsYWNlZEVsZW1lbnQsIGJvb2wgZnJhbWVIYW5kbGVzTWFnbmlmaWNh
dGlvbkdlc3R1cmUsIGRvdWJsZSB2aWV3cG9ydE1pbmltdW1TY2FsZSwgZG91YmxlIHZpZXdwb3J0
TWF4aW11bVNjYWxlKQogewogICAgIGlmIChmcmFtZUhhbmRsZXNNYWduaWZpY2F0aW9uR2VzdHVy
ZSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgZG91YmxlIGN1cnJlbnRTY2FsZUZhY3RvciA9IG1f
d2ViUGFnZVByb3h5LnBhZ2VTY2FsZUZhY3RvcigpOwogCisgICAgLy8gRklYTUU6IEFkb3B0IChi
eSBzaGFyaW5nKSB0aGUgVmlld0dlc3R1cmVDb250cm9sbGVySU9TIGhldXJpc3RpY3MuCisKICAg
ICBGbG9hdFJlY3QgdW5zY2FsZWRUYXJnZXRSZWN0ID0gcmVuZGVyUmVjdDsKICAgICB1bnNjYWxl
ZFRhcmdldFJlY3Quc2NhbGUoMSAvIGN1cnJlbnRTY2FsZUZhY3Rvcik7CiAgICAgdW5zY2FsZWRU
YXJnZXRSZWN0LmluZmxhdGVYKHVuc2NhbGVkVGFyZ2V0UmVjdC53aWR0aCgpICogc21hcnRNYWdu
aWZpY2F0aW9uRWxlbWVudFBhZGRpbmcpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJQYWdlL1ZpZXdHZXN0dXJlR2VvbWV0cnlDb2xsZWN0b3IuY3BwIGIvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1ZpZXdHZXN0dXJlR2VvbWV0cnlDb2xsZWN0b3Iu
Y3BwCmluZGV4IGRkNGRiYjIuLjgyNzIxZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViUGFnZS9WaWV3R2VzdHVyZUdlb21ldHJ5Q29sbGVjdG9yLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvVmlld0dlc3R1cmVHZW9tZXRyeUNvbGxl
Y3Rvci5jcHAKQEAgLTI2LDE0ICsyNiwxMyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1
ZGUgIlZpZXdHZXN0dXJlR2VvbWV0cnlDb2xsZWN0b3IuaCIKIAotI2lmICFQTEFURk9STShJT1Mp
Ci0KICNpbmNsdWRlICJWaWV3R2VzdHVyZUNvbnRyb2xsZXJNZXNzYWdlcy5oIgogI2luY2x1ZGUg
IlZpZXdHZXN0dXJlR2VvbWV0cnlDb2xsZWN0b3JNZXNzYWdlcy5oIgogI2luY2x1ZGUgIldlYkNv
cmVBcmd1bWVudENvZGVycy5oIgogI2luY2x1ZGUgIldlYkZyYW1lLmgiCiAjaW5jbHVkZSAiV2Vi
UGFnZS5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3MuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL0ZyYW1l
Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9GcmFtZVZpZXcuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0hp
dFRlc3RSZXN1bHQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1JlbmRlclZpZXcuaD4KQEAgLTQ0LDgg
KzQzLDEwIEBAIG5hbWVzcGFjZSBXZWJLaXQgewogCiBWaWV3R2VzdHVyZUdlb21ldHJ5Q29sbGVj
dG9yOjpWaWV3R2VzdHVyZUdlb21ldHJ5Q29sbGVjdG9yKFdlYlBhZ2UmIHdlYlBhZ2UpCiAgICAg
OiBtX3dlYlBhZ2Uod2ViUGFnZSkKKyNpZiBQTEFURk9STShNQUMpCiAgICAgLCBtX3JlbmRlclRy
ZWVTaXplTm90aWZpY2F0aW9uVGhyZXNob2xkKDApCiAgICAgLCBtX3JlbmRlclRyZWVTaXplTm90
aWZpY2F0aW9uVGltZXIoUnVuTG9vcDo6bWFpbigpLCB0aGlzLCAmVmlld0dlc3R1cmVHZW9tZXRy
eUNvbGxlY3Rvcjo6cmVuZGVyVHJlZVNpemVOb3RpZmljYXRpb25UaW1lckZpcmVkKQorI2VuZGlm
CiB7CiAgICAgV2ViUHJvY2Vzczo6c2hhcmVkKCkuYWRkTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2Vz
OjpWaWV3R2VzdHVyZUdlb21ldHJ5Q29sbGVjdG9yOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1f
d2ViUGFnZS5wYWdlSUQoKSwgKnRoaXMpOwogfQpAQCAtNTUsMzAgKzU2LDQyIEBAIFZpZXdHZXN0
dXJlR2VvbWV0cnlDb2xsZWN0b3I6On5WaWV3R2VzdHVyZUdlb21ldHJ5Q29sbGVjdG9yKCkKICAg
ICBXZWJQcm9jZXNzOjpzaGFyZWQoKS5yZW1vdmVNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OlZp
ZXdHZXN0dXJlR2VvbWV0cnlDb2xsZWN0b3I6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgbV93ZWJQ
YWdlLnBhZ2VJRCgpKTsKIH0KIAotdm9pZCBWaWV3R2VzdHVyZUdlb21ldHJ5Q29sbGVjdG9yOjpj
b2xsZWN0R2VvbWV0cnlGb3JNYWduaWZpY2F0aW9uR2VzdHVyZSgpCi17Ci0gICAgRmxvYXRSZWN0
IHZpc2libGVDb250ZW50UmVjdCA9IG1fd2ViUGFnZS5tYWluRnJhbWVWaWV3KCktPnZpc2libGVD
b250ZW50UmVjdEluY2x1ZGluZ1Njcm9sbGJhcnMoKTsKLSAgICBib29sIGZyYW1lSGFuZGxlc01h
Z25pZmljYXRpb25HZXN0dXJlID0gbV93ZWJQYWdlLm1haW5XZWJGcmFtZSgpLT5oYW5kbGVzUGFn
ZVNjYWxlR2VzdHVyZSgpOwotICAgIG1fd2ViUGFnZS5zZW5kKE1lc3NhZ2VzOjpWaWV3R2VzdHVy
ZUNvbnRyb2xsZXI6OkRpZENvbGxlY3RHZW9tZXRyeUZvck1hZ25pZmljYXRpb25HZXN0dXJlKHZp
c2libGVDb250ZW50UmVjdCwgZnJhbWVIYW5kbGVzTWFnbmlmaWNhdGlvbkdlc3R1cmUpKTsKLX0K
LQogdm9pZCBWaWV3R2VzdHVyZUdlb21ldHJ5Q29sbGVjdG9yOjpjb2xsZWN0R2VvbWV0cnlGb3JT
bWFydE1hZ25pZmljYXRpb25HZXN0dXJlKEZsb2F0UG9pbnQgb3JpZ2luKQogewogICAgIEZsb2F0
UmVjdCB2aXNpYmxlQ29udGVudFJlY3QgPSBtX3dlYlBhZ2UubWFpbkZyYW1lVmlldygpLT52aXNp
YmxlQ29udGVudFJlY3RJbmNsdWRpbmdTY3JvbGxiYXJzKCk7CiAgICAgYm9vbCBmcmFtZUhhbmRs
ZXNNYWduaWZpY2F0aW9uR2VzdHVyZSA9IG1fd2ViUGFnZS5tYWluV2ViRnJhbWUoKS0+aGFuZGxl
c1BhZ2VTY2FsZUdlc3R1cmUoKTsKIAotICAgIEZsb2F0UG9pbnQgc2Nyb2xsZWRPcmlnaW4gPSBv
cmlnaW47Ci0gICAgc2Nyb2xsZWRPcmlnaW4ubW92ZUJ5KG1fd2ViUGFnZS5tYWluRnJhbWVWaWV3
KCktPnNjcm9sbFBvc2l0aW9uKCkpOwotCiAgICAgSGl0VGVzdFJlcXVlc3QgcmVxdWVzdChIaXRU
ZXN0UmVxdWVzdDo6UmVhZE9ubHkgfCBIaXRUZXN0UmVxdWVzdDo6QWN0aXZlIHwgSGl0VGVzdFJl
cXVlc3Q6OkRpc2FsbG93U2hhZG93Q29udGVudCk7Ci0gICAgSGl0VGVzdFJlc3VsdCBoaXRUZXN0
UmVzdWx0ID0gSGl0VGVzdFJlc3VsdChzY3JvbGxlZE9yaWdpbik7CisgICAgSW50UG9pbnQgb3Jp
Z2luSW5Db250ZW50c1NwYWNlID0gbV93ZWJQYWdlLm1haW5GcmFtZVZpZXcoKS0+d2luZG93VG9D
b250ZW50cyhyb3VuZGVkSW50UG9pbnQob3JpZ2luKSk7CisgICAgSGl0VGVzdFJlc3VsdCBoaXRU
ZXN0UmVzdWx0ID0gSGl0VGVzdFJlc3VsdChvcmlnaW5JbkNvbnRlbnRzU3BhY2UpOworCiAgICAg
bV93ZWJQYWdlLm1haW5GcmFtZVZpZXcoKS0+cmVuZGVyVmlldygpLT5oaXRUZXN0KHJlcXVlc3Qs
IGhpdFRlc3RSZXN1bHQpOwogCi0gICAgaWYgKGhpdFRlc3RSZXN1bHQuaW5uZXJOb2RlKCkpIHsK
KyAgICBpZiAoTm9kZSAqbm9kZSA9IGhpdFRlc3RSZXN1bHQuaW5uZXJOb2RlKCkpIHsKICAgICAg
ICAgYm9vbCBpc1JlcGxhY2VkOwotICAgICAgICBGbG9hdFJlY3QgcmVuZGVyUmVjdCA9IGhpdFRl
c3RSZXN1bHQuaW5uZXJOb2RlKCktPnJlbmRlclJlY3QoJmlzUmVwbGFjZWQpOwotICAgICAgICBt
X3dlYlBhZ2Uuc2VuZChNZXNzYWdlczo6Vmlld0dlc3R1cmVDb250cm9sbGVyOjpEaWRDb2xsZWN0
R2VvbWV0cnlGb3JTbWFydE1hZ25pZmljYXRpb25HZXN0dXJlKG9yaWdpbiwgcmVuZGVyUmVjdCwg
dmlzaWJsZUNvbnRlbnRSZWN0LCBpc1JlcGxhY2VkLCBmcmFtZUhhbmRsZXNNYWduaWZpY2F0aW9u
R2VzdHVyZSkpOworICAgICAgICBGbG9hdFJlY3QgcmVuZGVyUmVjdCA9IG5vZGUtPnJlbmRlclJl
Y3QoJmlzUmVwbGFjZWQpOworCisjaWYgUExBVEZPUk0oTUFDKQorICAgICAgICBkb3VibGUgdmll
d3BvcnRNaW5pbXVtU2NhbGUgPSAwOworICAgICAgICBkb3VibGUgdmlld3BvcnRNYXhpbXVtU2Nh
bGUgPSBzdGQ6Om51bWVyaWNfbGltaXRzPGRvdWJsZT46Om1heCgpOworI2Vsc2UKKyAgICAgICAg
ZG91YmxlIHZpZXdwb3J0TWluaW11bVNjYWxlID0gbV93ZWJQYWdlLm1pbmltdW1QYWdlU2NhbGVG
YWN0b3IoKTsKKyAgICAgICAgZG91YmxlIHZpZXdwb3J0TWF4aW11bVNjYWxlID0gbV93ZWJQYWdl
Lm1heGltdW1QYWdlU2NhbGVGYWN0b3IoKTsKKyNlbmRpZgorCisgICAgICAgIG1fd2ViUGFnZS5z
ZW5kKE1lc3NhZ2VzOjpWaWV3R2VzdHVyZUNvbnRyb2xsZXI6OkRpZENvbGxlY3RHZW9tZXRyeUZv
clNtYXJ0TWFnbmlmaWNhdGlvbkdlc3R1cmUob3JpZ2luLCByZW5kZXJSZWN0LCB2aXNpYmxlQ29u
dGVudFJlY3QsIGlzUmVwbGFjZWQsIGZyYW1lSGFuZGxlc01hZ25pZmljYXRpb25HZXN0dXJlLCB2
aWV3cG9ydE1pbmltdW1TY2FsZSwgdmlld3BvcnRNYXhpbXVtU2NhbGUpKTsKKyAgICAgICAgcmV0
dXJuOwogICAgIH0KKworICAgIG1fd2ViUGFnZS5zZW5kKE1lc3NhZ2VzOjpWaWV3R2VzdHVyZUNv
bnRyb2xsZXI6OkRpZENvbGxlY3RHZW9tZXRyeUZvclNtYXJ0TWFnbmlmaWNhdGlvbkdlc3R1cmUo
RmxvYXRQb2ludCgpLCBGbG9hdFJlY3QoKSwgRmxvYXRSZWN0KCksIGZhbHNlLCBmcmFtZUhhbmRs
ZXNNYWduaWZpY2F0aW9uR2VzdHVyZSwgMCwgMCkpOworfQorCisjaWYgUExBVEZPUk0oTUFDKQor
dm9pZCBWaWV3R2VzdHVyZUdlb21ldHJ5Q29sbGVjdG9yOjpjb2xsZWN0R2VvbWV0cnlGb3JNYWdu
aWZpY2F0aW9uR2VzdHVyZSgpCit7CisgICAgRmxvYXRSZWN0IHZpc2libGVDb250ZW50UmVjdCA9
IG1fd2ViUGFnZS5tYWluRnJhbWVWaWV3KCktPnZpc2libGVDb250ZW50UmVjdEluY2x1ZGluZ1Nj
cm9sbGJhcnMoKTsKKyAgICBib29sIGZyYW1lSGFuZGxlc01hZ25pZmljYXRpb25HZXN0dXJlID0g
bV93ZWJQYWdlLm1haW5XZWJGcmFtZSgpLT5oYW5kbGVzUGFnZVNjYWxlR2VzdHVyZSgpOworICAg
IG1fd2ViUGFnZS5zZW5kKE1lc3NhZ2VzOjpWaWV3R2VzdHVyZUNvbnRyb2xsZXI6OkRpZENvbGxl
Y3RHZW9tZXRyeUZvck1hZ25pZmljYXRpb25HZXN0dXJlKHZpc2libGVDb250ZW50UmVjdCwgZnJh
bWVIYW5kbGVzTWFnbmlmaWNhdGlvbkdlc3R1cmUpKTsKIH0KIAogdm9pZCBWaWV3R2VzdHVyZUdl
b21ldHJ5Q29sbGVjdG9yOjptYWluRnJhbWVEaWRMYXlvdXQoKQpAQCAtOTMsNyArMTA2LDcgQEAg
dm9pZCBWaWV3R2VzdHVyZUdlb21ldHJ5Q29sbGVjdG9yOjpyZW5kZXJUcmVlU2l6ZU5vdGlmaWNh
dGlvblRpbWVyRmlyZWQoKQogewogICAgIG1fd2ViUGFnZS5zZW5kKE1lc3NhZ2VzOjpWaWV3R2Vz
dHVyZUNvbnRyb2xsZXI6OkRpZEhpdFJlbmRlclRyZWVTaXplVGhyZXNob2xkKCkpOwogfQorI2Vu
ZGlmCiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAogCi0jZW5kaWYgLy8gIVBMQVRGT1JNKElPUykK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9WaWV3R2VzdHVy
ZUdlb21ldHJ5Q29sbGVjdG9yLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2Uv
Vmlld0dlc3R1cmVHZW9tZXRyeUNvbGxlY3Rvci5oCmluZGV4IGEzMDg4ZWEuLmUzODZjZjcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9WaWV3R2VzdHVyZUdl
b21ldHJ5Q29sbGVjdG9yLmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdl
L1ZpZXdHZXN0dXJlR2VvbWV0cnlDb2xsZWN0b3IuaApAQCAtMjYsOCArMjYsNiBAQAogI2lmbmRl
ZiBWaWV3R2VzdHVyZUdlb21ldHJ5Q29sbGVjdG9yX2gKICNkZWZpbmUgVmlld0dlc3R1cmVHZW9t
ZXRyeUNvbGxlY3Rvcl9oCiAKLSNpZiAhUExBVEZPUk0oSU9TKQotCiAjaW5jbHVkZSAiTWVzc2Fn
ZVJlY2VpdmVyLmgiCiAjaW5jbHVkZSA8d3RmL1J1bkxvb3AuaD4KIApAQCAtNTEsMjAgKzQ5LDIz
IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29u
bmVjdGlvbiosIElQQzo6TWVzc2FnZURlY29kZXImKSBvdmVycmlkZTsKIAogICAgIC8vIE1lc3Nh
Z2UgaGFuZGxlcnMuCi0gICAgdm9pZCBjb2xsZWN0R2VvbWV0cnlGb3JNYWduaWZpY2F0aW9uR2Vz
dHVyZSgpOwogICAgIHZvaWQgY29sbGVjdEdlb21ldHJ5Rm9yU21hcnRNYWduaWZpY2F0aW9uR2Vz
dHVyZShXZWJDb3JlOjpGbG9hdFBvaW50IG9yaWdpbik7CisKKyNpZiBQTEFURk9STShNQUMpCisg
ICAgdm9pZCBjb2xsZWN0R2VvbWV0cnlGb3JNYWduaWZpY2F0aW9uR2VzdHVyZSgpOwogICAgIHZv
aWQgc2V0UmVuZGVyVHJlZVNpemVOb3RpZmljYXRpb25UaHJlc2hvbGQodWludDY0X3Qgc2l6ZSkg
eyBtX3JlbmRlclRyZWVTaXplTm90aWZpY2F0aW9uVGhyZXNob2xkID0gc2l6ZTsgfQogCiAgICAg
dm9pZCByZW5kZXJUcmVlU2l6ZU5vdGlmaWNhdGlvblRpbWVyRmlyZWQoKTsKKyNlbmRpZgogCiAg
ICAgV2ViUGFnZSYgbV93ZWJQYWdlOwogCisjaWYgUExBVEZPUk0oTUFDKQogICAgIHVpbnQ2NF90
IG1fcmVuZGVyVHJlZVNpemVOb3RpZmljYXRpb25UaHJlc2hvbGQ7CiAgICAgUnVuTG9vcDo6VGlt
ZXI8Vmlld0dlc3R1cmVHZW9tZXRyeUNvbGxlY3Rvcj4gbV9yZW5kZXJUcmVlU2l6ZU5vdGlmaWNh
dGlvblRpbWVyOworI2VuZGlmCiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKIAotI2VuZGlm
IC8vICFQTEFURk9STShJT1MpCi0KICNlbmRpZiAvLyBWaWV3R2VzdHVyZUdlb21ldHJ5Q29sbGVj
dG9yCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvVmlld0dl
c3R1cmVHZW9tZXRyeUNvbGxlY3Rvci5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViUGFnZS9WaWV3R2VzdHVyZUdlb21ldHJ5Q29sbGVjdG9yLm1lc3NhZ2VzLmluCmlu
ZGV4IGVmZDA1MWYuLjA0NzIwOWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViUGFnZS9WaWV3R2VzdHVyZUdlb21ldHJ5Q29sbGVjdG9yLm1lc3NhZ2VzLmluCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9WaWV3R2VzdHVyZUdlb21ldHJ5Q29s
bGVjdG9yLm1lc3NhZ2VzLmluCkBAIC0yMCwxNCArMjAsMTIgQEAKICMgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKICMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KIAotI2lmICFQTEFURk9STShJT1MpCi0KIG1lc3NhZ2VzIC0+
IFZpZXdHZXN0dXJlR2VvbWV0cnlDb2xsZWN0b3IgeworICAgIENvbGxlY3RHZW9tZXRyeUZvclNt
YXJ0TWFnbmlmaWNhdGlvbkdlc3R1cmUoV2ViQ29yZTo6RmxvYXRQb2ludCBvcmlnaW4pCiAKLUNv
bGxlY3RHZW9tZXRyeUZvck1hZ25pZmljYXRpb25HZXN0dXJlKCkKLUNvbGxlY3RHZW9tZXRyeUZv
clNtYXJ0TWFnbmlmaWNhdGlvbkdlc3R1cmUoV2ViQ29yZTo6RmxvYXRQb2ludCBvcmlnaW4pCi0K
LVNldFJlbmRlclRyZWVTaXplTm90aWZpY2F0aW9uVGhyZXNob2xkKHVpbnQ2NF90IHNpemUpCi19
CisjaWYgIVBMQVRGT1JNKElPUykKKyAgICBDb2xsZWN0R2VvbWV0cnlGb3JNYWduaWZpY2F0aW9u
R2VzdHVyZSgpCiAKKyAgICBTZXRSZW5kZXJUcmVlU2l6ZU5vdGlmaWNhdGlvblRocmVzaG9sZCh1
aW50NjRfdCBzaXplKQogI2VuZGlmCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViUGFnZS5jcHAKaW5kZXggYjI1M2MwNy4uMDdiM2MyMSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcApAQCAtMjUxLDkgKzI1MSw3IEBA
IFdlYlBhZ2U6OldlYlBhZ2UodWludDY0X3QgcGFnZUlELCBjb25zdCBXZWJQYWdlQ3JlYXRpb25Q
YXJhbWV0ZXJzJiBwYXJhbWV0ZXJzKQogICAgICwgbV9wZGZQbHVnaW5FbmFibGVkKGZhbHNlKQog
ICAgICwgbV9oYXNDYWNoZWRXaW5kb3dGcmFtZShmYWxzZSkKICAgICAsIG1fa2V5Ym9hcmRFdmVu
dEJlaW5nSW50ZXJwcmV0ZWQoMCkKLSNpZiAhUExBVEZPUk0oSU9TKQogICAgICwgbV92aWV3R2Vz
dHVyZUdlb21ldHJ5Q29sbGVjdG9yKCp0aGlzKQotI2VuZGlmCiAjZWxpZiBQTEFURk9STShHVEsp
ICYmIEhBVkUoQUNDRVNTSUJJTElUWSkKICAgICAsIG1fYWNjZXNzaWJpbGl0eU9iamVjdCgwKQog
I2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
UGFnZS5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAppbmRl
eCBhYTRhYzJjLi41NGY4NmVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViUGFnZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFn
ZS9XZWJQYWdlLmgKQEAgLTk3Miw5ICs5NzIsNyBAQCBwcml2YXRlOgogCiAgICAgV2ViQ29yZTo6
S2V5Ym9hcmRFdmVudCogbV9rZXlib2FyZEV2ZW50QmVpbmdJbnRlcnByZXRlZDsKIAotI2lmICFQ
TEFURk9STShJT1MpCiAgICAgVmlld0dlc3R1cmVHZW9tZXRyeUNvbGxlY3RvciBtX3ZpZXdHZXN0
dXJlR2VvbWV0cnlDb2xsZWN0b3I7Ci0jZW5kaWYKIAogI2VsaWYgSEFWRShBQ0NFU1NJQklMSVRZ
KSAmJiAoUExBVEZPUk0oR1RLKSB8fCBQTEFURk9STShFRkwpKQogICAgIEdSZWZQdHI8V2ViUGFn
ZUFjY2Vzc2liaWxpdHlPYmplY3Q+IG1fYWNjZXNzaWJpbGl0eU9iamVjdDsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>224903</attachid>
            <date>2014-02-21 14:01:07 -0800</date>
            <delta_ts>2014-02-21 14:03:23 -0800</delta_ts>
            <desc>rebase</desc>
            <filename>doubletap.diff</filename>
            <type>text/plain</type>
            <size>45296</size>
            <attacher name="Tim Horton">thorton</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA5NzlhMGE1Li40ZTZhMDk1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQg
QEAKKzIwMTQtMDItMjEgIFRpbSBIb3J0b24gIDx0aW1vdGh5X2hvcnRvbkBhcHBsZS5jb20+CisK
KyAgICAgICAgV2ViS2l0MiBWaWV3IEdlc3R1cmVzIChTbWFydCBNYWduaWZpY2F0aW9uKTogU3Vw
cG9ydCBmb3IgaU9TCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xMjkxNDYKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzE2MDMyNjY4PgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViQ29yZS5leHAuaW46
CisgICAgICAgIEFkZCBhbiBleHBvcnQuCisKIDIwMTQtMDItMjEgIEJlbmphbWluIFBvdWxhaW4g
IDxicG91bGFpbkBhcHBsZS5jb20+CiAKICAgICAgICAgJ21vdXNlZW50ZXInIG1vdXNlIGNvbXBh
dCBldmVudCBub3QgZmlyZWQgd2hlbiBsaXN0ZW5lcnMgZm9yIHRvdWNoIGV2ZW50cwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4gYi9Tb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLmV4cC5pbgppbmRleCA5ODRlMThlLi40NmNkYTQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLmV4cC5pbgorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgpA
QCAtMTgzNyw2ICsxODM3LDcgQEAgX19aTks3V2ViQ29yZTlGbG9hdFF1YWQxMWJvdW5kaW5nQm94
RXYKIF9fWk5LN1dlYkNvcmU5RmxvYXRSZWN0MTBpbnRlcnNlY3RzRVJLUzBfCiBfX1pOSzdXZWJD
b3JlOUZsb2F0UmVjdGN2NkNHUmVjdEV2CiBfX1pOSzdXZWJDb3JlOUZsb2F0U2l6ZTZpc1plcm9F
dgorX19aTks3V2ViQ29yZTlGbG9hdFNpemUxNGRpYWdvbmFsTGVuZ3RoRXYKIF9fWk5LN1dlYkNv
cmU5RnJhbWVUcmVlMTBjaGlsZENvdW50RXYKIF9fWk5LN1dlYkNvcmU5RnJhbWVUcmVlMTJ0cmF2
ZXJzZU5leHRFUEtOU181RnJhbWVFCiBfX1pOSzdXZWJDb3JlOUZyYW1lVHJlZTE0aXNEZXNjZW5k
YW50T2ZFUEtOU181RnJhbWVFCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cg
Yi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggMDkyOWZiYi4uYzQxNDNhNSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDg1IEBACisyMDE0LTAyLTIxICBUaW0gSG9ydG9uICA8dGltb3RoeV9o
b3J0b25AYXBwbGUuY29tPgorCisgICAgICAgIFdlYktpdDIgVmlldyBHZXN0dXJlcyAoU21hcnQg
TWFnbmlmaWNhdGlvbik6IFN1cHBvcnQgZm9yIGlPUworICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTI5MTQ2CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8x
NjAzMjY2OD4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tOgorICAgICAgICAoLVtXS1dlYlZp
ZXcgaW5pdFdpdGhGcmFtZTpjb25maWd1cmF0aW9uOl0pOgorICAgICAgICBBbHdheXMgaGF2ZSBh
IFZpZXdHZXN0dXJlQ29udHJvbGxlciwgdG8gaGFuZGxlIGRvdWJsZS10YXAgZ2VzdHVyZXMuCisK
KyAgICAgICAgKC1bV0tXZWJWaWV3IGNvbnRlbnRWaWV3OmRpZENvbW1pdExheWVyVHJlZTpXZWJL
aXQ6Ol0pOgorICAgICAgICBEb24ndCByZXBsYWNlIHRoZSB6b29tIHNjYWxlIGlmIHdlJ3JlIGN1
cnJlbnRseSBhbmltYXRpbmcuCisKKyAgICAgICAgKC1bV0tXZWJWaWV3IHNldEFsbG93c0JhY2tG
b3J3YXJkTmF2aWdhdGlvbkdlc3R1cmVzOl0pOgorICAgICAgICBJbnN0YWxsIGFuZCB1bmluc3Rh
bGwgdGhlIHN3aXBlIGhhbmRsZXIgaW5zdGVhZCBvZiBkZXN0cm95aW5nIHRoZSBnZXN0dXJlIGNv
bnRyb2xsZXIuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2lvcy9XS0NvbnRlbnRWaWV3Lm1t
OgorICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IF9zZXREb3VibGVUYXBHZXN0dXJlUmVjb2duaXpl
cjpdKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJuYWwu
aDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2lvcy9XS0ludGVyYWN0aW9uVmlldy5oOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9BUEkvaW9zL1dLSW50ZXJhY3Rpb25WaWV3Lm1tOgorICAgICAgICAo
LVtXS0ludGVyYWN0aW9uVmlldyBpbml0V2l0aEZyYW1lOl0pOgorICAgICAgICAoLVtXS0ludGVy
YWN0aW9uVmlldyBkZWFsbG9jXSk6CisgICAgICAgICgtW1dLSW50ZXJhY3Rpb25WaWV3IGdlc3R1
cmVSZWNvZ25pemVyU2hvdWxkQmVnaW46XSk6CisgICAgICAgICgtW1dLSW50ZXJhY3Rpb25WaWV3
IF9zZXREb3VibGVUYXBHZXN0dXJlUmVjb2duaXplcjpdKToKKyAgICAgICAgUmVtb3ZlIGV4aXN0
aW5nIHVudXNlZCBkb3VibGUtdGFwIGdlc3R1cmUgcmVjb2duaXplciBjb2RlLgorICAgICAgICBQ
bHVtYiB0aGUgZG91YmxlLXRhcCBnZXN0dXJlIHJlY29nbml6ZXIgZG93biBmcm9tIFZpZXdHZXN0
dXJlQ29udHJvbGxlciwKKyAgICAgICAgc28gd2UgY2FuIG1ha2UgdGhlIHNpbmdsZSB0YXAgZ2Vz
dHVyZSByZWNvZ25pemVyIGJsb2NrIG9uIGl0IGZhaWxpbmcuCisKKyAgICAgICAgKiBVSVByb2Nl
c3MvQVBJL2lvcy9XS1ZpZXdJT1MubW06CisgICAgICAgICgtW1dLVmlldyBzZXRBbGxvd3NCYWNr
Rm9yd2FyZE5hdmlnYXRpb25HZXN0dXJlczpdKToKKyAgICAgICAgSW5zdGFsbCBhbmQgdW5pbnN0
YWxsIHRoZSBzd2lwZSBoYW5kbGVyIGluc3RlYWQgb2YgZGVzdHJveWluZyB0aGUgZ2VzdHVyZSBj
b250cm9sbGVyLgorCisgICAgICAgICgtW1dLVmlldyBjb250ZW50VmlldzpkaWRDb21taXRMYXll
clRyZWU6XSk6CisgICAgICAgIERvbid0IHJlcGxhY2UgdGhlIHpvb20gc2NhbGUgaWYgd2UncmUg
Y3VycmVudGx5IGFuaW1hdGluZy4KKworICAgICAgICAoLVtXS1ZpZXcgX2NvbW1vbkluaXRpYWxp
emF0aW9uV2l0aENvbnRleHRSZWY6cGFnZUdyb3VwUmVmOnJlbGF0ZWRUb1BhZ2U6XSk6CisgICAg
ICAgIEFsd2F5cyBoYXZlIGEgVmlld0dlc3R1cmVDb250cm9sbGVyLCB0byBoYW5kbGUgZG91Ymxl
LXRhcCBnZXN0dXJlcy4KKworICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvVmlld0dlc3R1cmVDb250
cm9sbGVySU9TLm1tOgorICAgICAgICAoLVtXS1N3aXBlVHJhbnNpdGlvbkNvbnRyb2xsZXIgaW5p
dFdpdGhWaWV3R2VzdHVyZUNvbnRyb2xsZXI6V2ViS2l0OjpnZXN0dXJlUmVjb2duaXplclZpZXc6
XSk6CisgICAgICAgICgtW1dLU21hcnRNYWduaWZpY2F0aW9uR2VzdHVyZUNvbnRyb2xsZXIgaW5p
dFdpdGhWaWV3R2VzdHVyZUNvbnRyb2xsZXI6V2ViS2l0OjpnZXN0dXJlUmVjb2duaXplclZpZXc6
XSk6CisgICAgICAgICgtW1dLU21hcnRNYWduaWZpY2F0aW9uR2VzdHVyZUNvbnRyb2xsZXIgZG91
YmxlVGFwUmVjb2duaXplZDpdKToKKyAgICAgICAgKC1bV0tTbWFydE1hZ25pZmljYXRpb25HZXN0
dXJlQ29udHJvbGxlciBkb3VibGVUYXBSZWNvZ25pemVyXSk6CisgICAgICAgIChXZWJLaXQ6OlZp
ZXdHZXN0dXJlQ29udHJvbGxlcjo6Vmlld0dlc3R1cmVDb250cm9sbGVyKToKKyAgICAgICAgKFdl
YktpdDo6Vmlld0dlc3R1cmVDb250cm9sbGVyOjp+Vmlld0dlc3R1cmVDb250cm9sbGVyKToKKyAg
ICAgICAgKFdlYktpdDo6Vmlld0dlc3R1cmVDb250cm9sbGVyOjp1bmluc3RhbGxTd2lwZUhhbmRs
ZXIpOgorICAgICAgICAoV2ViS2l0OjpWaWV3R2VzdHVyZUNvbnRyb2xsZXI6Omluc3RhbGxTbWFy
dE1hZ25pZmljYXRpb25IYW5kbGVyKToKKyAgICAgICAgKFdlYktpdDo6Vmlld0dlc3R1cmVDb250
cm9sbGVyOjpoYW5kbGVTbWFydE1hZ25pZmljYXRpb25HZXN0dXJlKToKKyAgICAgICAgKFdlYktp
dDo6c2hvdWxkUGFuU2Nyb2xsRm9yU2NhbGUpOgorICAgICAgICAoV2ViS2l0OjpkdXJhdGlvbkZv
clpvb21Ub1NjYWxlKToKKyAgICAgICAgKFdlYktpdDo6em9vbVRvQ2VudGVyQXRTY2FsZSk6Cisg
ICAgICAgIChXZWJLaXQ6OlZpZXdHZXN0dXJlQ29udHJvbGxlcjo6c21hcnRNYWduaWZpY2F0aW9u
Wm9vbVRvVGFyZ2V0KToKKyAgICAgICAgKFdlYktpdDo6Y29uc3RyYWluQ29udGVudE9mZnNldCk6
CisgICAgICAgIChXZWJLaXQ6OlZpZXdHZXN0dXJlQ29udHJvbGxlcjo6c21hcnRNYWduaWZpY2F0
aW9uU2Nyb2xsVG9UYXJnZXQpOgorICAgICAgICAoV2ViS2l0OjpWaWV3R2VzdHVyZUNvbnRyb2xs
ZXI6OmRpZENvbGxlY3RHZW9tZXRyeUZvclNtYXJ0TWFnbmlmaWNhdGlvbkdlc3R1cmUpOgorICAg
ICAgICBBZGQgYW4gaW1wbGVtZW50YXRpb24gb2YgZG91YmxlLXRhcCBmb3IgaU9TLgorICAgICAg
ICBDdXJyZW50bHkgdmVyeSBsaXR0bGUgY29kZSBpcyBzaGFyZWQgd2l0aCBNYWMgKGp1c3QgdGhl
IFdlYlByb2Nlc3Mgc2lkZSksCisgICAgICAgIGJ1dCB0aGUgYW1vdW50IG9mIHNoYXJlZCBsb2dp
YyBzaG91bGQgaW5jcmVhc2UgYXMgdGltZSBnb2VzIG9uLgorICAgICAgICBUaGlzIHNob3VsZCBt
YXRjaCBXZWJLaXQxIGJlaGF2aW9yIGZhaXJseSBjbG9zZWx5LgorCisgICAgICAgICogVUlQcm9j
ZXNzL21hYy9WaWV3R2VzdHVyZUNvbnRyb2xsZXIuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvbWFj
L1ZpZXdHZXN0dXJlQ29udHJvbGxlci5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBVSVByb2Nlc3Mv
bWFjL1ZpZXdHZXN0dXJlQ29udHJvbGxlck1hYy5tbToKKyAgICAgICAgKFdlYktpdDo6Vmlld0dl
c3R1cmVDb250cm9sbGVyOjpkaWRDb2xsZWN0R2VvbWV0cnlGb3JTbWFydE1hZ25pZmljYXRpb25H
ZXN0dXJlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvVmlld0dlc3R1cmVHZW9tZXRy
eUNvbGxlY3Rvci5jcHA6CisgICAgICAgIEluY2x1ZGUgdGhlIHBhcnRzIG9mIFZpZXdHZXN0dXJl
R2VvbWV0cnlDb2xsZWN0b3IgbmVlZGVkIG9uIGlPUy4KKworICAgICAgICAoV2ViS2l0OjpWaWV3
R2VzdHVyZUdlb21ldHJ5Q29sbGVjdG9yOjpWaWV3R2VzdHVyZUdlb21ldHJ5Q29sbGVjdG9yKToK
KyAgICAgICAgKFdlYktpdDo6Vmlld0dlc3R1cmVHZW9tZXRyeUNvbGxlY3Rvcjo6Y29sbGVjdEdl
b21ldHJ5Rm9yU21hcnRNYWduaWZpY2F0aW9uR2VzdHVyZSk6CisgICAgICAgIFVzZSB3aW5kb3dU
b0NvbnRlbnRzIGluc3RlYWQgb2YgbWFudWFsbHkgYXBwbHlpbmcgdGhlIHNjcm9sbCwgYmVjYXVz
ZSBpdCBkb2VzIHRoZSByaWdodCB0aGluZyBvbiBpT1MuCisKKyAgICAgICAgKFdlYktpdDo6Vmll
d0dlc3R1cmVHZW9tZXRyeUNvbGxlY3Rvcjo6Y29sbGVjdEdlb21ldHJ5Rm9yTWFnbmlmaWNhdGlv
bkdlc3R1cmUpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9WaWV3R2VzdHVyZUdlb21l
dHJ5Q29sbGVjdG9yLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1ZpZXdHZXN0dXJl
R2VvbWV0cnlDb2xsZWN0b3IubWVzc2FnZXMuaW46CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYlBhZ2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpXZWJQYWdlKToKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oOgorICAgICAgICBLZWVwIGEgdmll
d0dlc3R1cmVHZW9tZXRyeUNvbGxlY3RvciBvbiBhbGwgUExBVEZPUk0oQ09DT0EpIHBvcnRzLgor
CiAyMDE0LTAyLTIxICBBbmRlcnMgQ2FybHNzb24gIDxhbmRlcnNjYUBhcHBsZS5jb20+CiAKICAg
ICAgICAgTWFrZSBzdXJlIHRvIGludm9rZSB0aGUgY29tcGxldGlvbiBoYW5kbGVyIGZvciBKUyBh
bGVydHMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tX
ZWJWaWV3Lm1tIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcu
bW0KaW5kZXggZjI0OTM3Yy4uZTBjZjE1NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0KKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0KQEAgLTE2Niw2ICsxNjYsMTMgQEAKIAogICAgIF9w
YWdlLT5zZXRVSUNsaWVudChzdGQ6Om1ha2VfdW5pcXVlPFdlYktpdDo6VUlDbGllbnQ+KHNlbGYp
KTsKIAorI2lmIFBMQVRGT1JNKElPUykKKyAgICBfZ2VzdHVyZUNvbnRyb2xsZXIgPSBzdGQ6Om1h
a2VfdW5pcXVlPFdlYktpdDo6Vmlld0dlc3R1cmVDb250cm9sbGVyPigqX3BhZ2UpOworCisgICAg
VUlHZXN0dXJlUmVjb2duaXplciAqcmVjb2duaXplciA9IF9nZXN0dXJlQ29udHJvbGxlci0+aW5z
dGFsbFNtYXJ0TWFnbmlmaWNhdGlvbkhhbmRsZXIoX2NvbnRlbnRWaWV3LmdldCgpLCBfc2Nyb2xs
Vmlldy5nZXQoKSk7CisgICAgW19jb250ZW50VmlldyBfc2V0RG91YmxlVGFwR2VzdHVyZVJlY29n
bml6ZXI6cmVjb2duaXplcl07CisjZW5kaWYKKwogICAgIHJldHVybiBzZWxmOwogfQogCkBAIC0z
MjIsNyArMzI5LDcgQEAKICAgICBbX3Njcm9sbFZpZXcgc2V0TWluaW11bVpvb21TY2FsZTpsYXll
clRyZWVUcmFuc2FjdGlvbi5taW5pbXVtU2NhbGVGYWN0b3IoKV07CiAgICAgW19zY3JvbGxWaWV3
IHNldE1heGltdW1ab29tU2NhbGU6bGF5ZXJUcmVlVHJhbnNhY3Rpb24ubWF4aW11bVNjYWxlRmFj
dG9yKCldOwogICAgIFtfc2Nyb2xsVmlldyBzZXRab29tRW5hYmxlZDpsYXllclRyZWVUcmFuc2Fj
dGlvbi5hbGxvd3NVc2VyU2NhbGluZygpXTsKLSAgICBpZiAoIVtfc2Nyb2xsVmlldyBpc1pvb21p
bmddICYmICFbX3Njcm9sbFZpZXcgaXNab29tQm91bmNpbmddKQorICAgIGlmICghW19zY3JvbGxW
aWV3IGlzWm9vbWluZ10gJiYgIVtfc2Nyb2xsVmlldyBpc1pvb21Cb3VuY2luZ10gJiYgIVtfc2Ny
b2xsVmlldyBfaXNBbmltYXRpbmdab29tXSkKICAgICAgICAgW19zY3JvbGxWaWV3IHNldFpvb21T
Y2FsZTpsYXllclRyZWVUcmFuc2FjdGlvbi5wYWdlU2NhbGVGYWN0b3IoKV07CiAKICAgICBpZiAo
X2dlc3R1cmVDb250cm9sbGVyKQpAQCAtNDU5LDE1ICs0NjYsMTMgQEAKIAogICAgIF9hbGxvd3NC
YWNrRm9yd2FyZE5hdmlnYXRpb25HZXN0dXJlcyA9IGFsbG93c0JhY2tGb3J3YXJkTmF2aWdhdGlv
bkdlc3R1cmVzOwogCi0gICAgaWYgKGFsbG93c0JhY2tGb3J3YXJkTmF2aWdhdGlvbkdlc3R1cmVz
KSB7Ci0gICAgICAgIGlmICghX2dlc3R1cmVDb250cm9sbGVyKSB7Ci0gICAgICAgICAgICBfZ2Vz
dHVyZUNvbnRyb2xsZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYktpdDo6Vmlld0dlc3R1cmVDb250
cm9sbGVyPigqX3BhZ2UpOwotICAgICAgICAgICAgX2dlc3R1cmVDb250cm9sbGVyLT5pbnN0YWxs
U3dpcGVIYW5kbGVyKHNlbGYsIFtzZWxmIHNjcm9sbFZpZXddKTsKLSAgICAgICAgfQotICAgIH0g
ZWxzZQotICAgICAgICBfZ2VzdHVyZUNvbnRyb2xsZXIgPSBudWxscHRyOworICAgIGlmIChhbGxv
d3NCYWNrRm9yd2FyZE5hdmlnYXRpb25HZXN0dXJlcykKKyAgICAgICAgX2dlc3R1cmVDb250cm9s
bGVyLT5pbnN0YWxsU3dpcGVIYW5kbGVyKHNlbGYsIFtzZWxmIHNjcm9sbFZpZXddKTsKKyAgICBl
bHNlCisgICAgICAgIF9nZXN0dXJlQ29udHJvbGxlci0+dW5pbnN0YWxsU3dpcGVIYW5kbGVyKCk7
CiAKICAgICBfcGFnZS0+c2V0U2hvdWxkUmVjb3JkTmF2aWdhdGlvblNuYXBzaG90cyhhbGxvd3NC
YWNrRm9yd2FyZE5hdmlnYXRpb25HZXN0dXJlcyk7CisKIH0KIAogLSAoQk9PTClhbGxvd3NCYWNr
Rm9yd2FyZE5hdmlnYXRpb25HZXN0dXJlcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9pb3MvV0tDb250ZW50Vmlldy5tbSBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvaW9zL1dLQ29udGVudFZpZXcubW0KaW5kZXggYjcxNmI1MC4uM2E2MjRiZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9pb3MvV0tDb250ZW50Vmlldy5tbQor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2lvcy9XS0NvbnRlbnRWaWV3Lm1tCkBA
IC0zMjAsNCArMzIwLDkgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKICAgICByZXR1cm4gW19k
ZWxlZ2F0ZSB0YWtlVmlld1NuYXBzaG90Rm9yQ29udGVudFZpZXc6c2VsZl07CiB9CiAKKy0gKHZv
aWQpX3NldERvdWJsZVRhcEdlc3R1cmVSZWNvZ25pemVyOihVSUdlc3R1cmVSZWNvZ25pemVyICop
cmVjb2duaXplcgoreworICAgIFtfaW50ZXJhY3Rpb25WaWV3IF9zZXREb3VibGVUYXBHZXN0dXJl
UmVjb2duaXplcjpyZWNvZ25pemVyXTsKK30KKwogQGVuZApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9pb3MvV0tDb250ZW50Vmlld0ludGVybmFsLmggYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJuYWwuaAppbmRleCA1
MjQ3ZGNiLi5kODc4NDVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJuYWwuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJuYWwuaApAQCAtNzQsNCArNzQsNiBAQCBzdHJ1
Y3QgSW50ZXJhY3Rpb25JbmZvcm1hdGlvbkF0UG9zaXRpb247CiAKIC0gKFJldGFpblB0cjxDR0lt
YWdlUmVmPilfdGFrZVZpZXdTbmFwc2hvdDsKIAorLSAodm9pZClfc2V0RG91YmxlVGFwR2VzdHVy
ZVJlY29nbml6ZXI6KFVJR2VzdHVyZVJlY29nbml6ZXIgKilyZWNvZ25pemVyOworCiBAZW5kCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2lvcy9XS0ludGVyYWN0aW9u
Vmlldy5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9pb3MvV0tJbnRlcmFjdGlvblZp
ZXcuaAppbmRleCA2MTQ1ZjUwLi4wOWQ3YjdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL2lvcy9XS0ludGVyYWN0aW9uVmlldy5oCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvaW9zL1dLSW50ZXJhY3Rpb25WaWV3LmgKQEAgLTcwLDUgKzcwLDggQEAg
c3RydWN0IEludGVyYWN0aW9uSW5mb3JtYXRpb25BdFBvc2l0aW9uOwogLSAodm9pZClfd2lsbFN0
YXJ0U2Nyb2xsaW5nT3Jab29taW5nOwogLSAodm9pZClfd2lsbFN0YXJ0VXNlclRyaWdnZXJlZFNj
cm9sbGluZ09yWm9vbWluZzsKIC0gKHZvaWQpX2RpZEVuZFNjcm9sbGluZ09yWm9vbWluZzsKKwor
LSAodm9pZClfc2V0RG91YmxlVGFwR2VzdHVyZVJlY29nbml6ZXI6KFVJR2VzdHVyZVJlY29nbml6
ZXIgKilyZWNvZ25pemVyOworCiBAcHJvcGVydHkgKHJlYWRvbmx5LCBub25hdG9taWMpIFdlYktp
dDo6SW50ZXJhY3Rpb25JbmZvcm1hdGlvbkF0UG9zaXRpb24gcG9zaXRpb25JbmZvcm1hdGlvbjsK
IEBlbmQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvaW9zL1dLSW50
ZXJhY3Rpb25WaWV3Lm1tIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9pb3MvV0tJbnRl
cmFjdGlvblZpZXcubW0KaW5kZXggNzEwZTJlNC4uZmMwNTY1NSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9pb3MvV0tJbnRlcmFjdGlvblZpZXcubW0KKysrIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9pb3MvV0tJbnRlcmFjdGlvblZpZXcubW0KQEAgLTE1
NCw5ICsxNTQsMTEgQEAgc3RydWN0IFdLQXV0b0NvcnJlY3Rpb25EYXRhewogICAgIFJldGFpblB0
cjxVSVRhcEdlc3R1cmVSZWNvZ25pemVyPiBfc2luZ2xlVGFwR2VzdHVyZVJlY29nbml6ZXI7CiAg
ICAgUmV0YWluUHRyPF9VSVdlYkhpZ2hsaWdodExvbmdQcmVzc0dlc3R1cmVSZWNvZ25pemVyPiBf
aGlnaGxpZ2h0TG9uZ1ByZXNzR2VzdHVyZVJlY29nbml6ZXI7CiAgICAgUmV0YWluUHRyPFVJTG9u
Z1ByZXNzR2VzdHVyZVJlY29nbml6ZXI+IF9sb25nUHJlc3NHZXN0dXJlUmVjb2duaXplcjsKLSAg
ICBSZXRhaW5QdHI8VUlUYXBHZXN0dXJlUmVjb2duaXplcj4gX2RvdWJsZVRhcEdlc3R1cmVSZWNv
Z25pemVyOwogICAgIFJldGFpblB0cjxVSVRhcEdlc3R1cmVSZWNvZ25pemVyPiBfdHdvRmluZ2Vy
RG91YmxlVGFwR2VzdHVyZVJlY29nbml6ZXI7CiAgICAgUmV0YWluUHRyPFVJUGFuR2VzdHVyZVJl
Y29nbml6ZXI+IF90d29GaW5nZXJQYW5HZXN0dXJlUmVjb2duaXplcjsKKyNpZm5kZWYgQVNTRVJU
X0RJU0FCTEVECisgICAgYm9vbCBfaGFzU2V0RG91YmxlVGFwR2VzdHVyZVJlY29nbml6ZXI7Cisj
ZW5kaWYKIAogICAgIFJldGFpblB0cjxVSVdLVGV4dEludGVyYWN0aW9uQXNzaXN0YW50PiBfdGV4
dFNlbGVjdGlvbkFzc2lzdGFudDsKICAgICBSZXRhaW5QdHI8VUlXS1NlbGVjdGlvbkFzc2lzdGFu
dD4gX3dlYlNlbGVjdGlvbkFzc2lzdGFudDsKQEAgLTE5NCwxMiArMTk2LDYgQEAgc3RydWN0IFdL
QXV0b0NvcnJlY3Rpb25EYXRhewogICAgICAgICBbX3NpbmdsZVRhcEdlc3R1cmVSZWNvZ25pemVy
IHNldERlbGVnYXRlOnNlbGZdOwogICAgICAgICBbc2VsZiBhZGRHZXN0dXJlUmVjb2duaXplcjpf
c2luZ2xlVGFwR2VzdHVyZVJlY29nbml6ZXIuZ2V0KCldOwogCi0gICAgICAgIF9kb3VibGVUYXBH
ZXN0dXJlUmVjb2duaXplciA9IGFkb3B0TlMoW1tVSVRhcEdlc3R1cmVSZWNvZ25pemVyIGFsbG9j
XSBpbml0V2l0aFRhcmdldDpzZWxmIGFjdGlvbjpAc2VsZWN0b3IoX2RvdWJsZVRhcFJlY29nbml6
ZWQ6KV0pOwotICAgICAgICBbX2RvdWJsZVRhcEdlc3R1cmVSZWNvZ25pemVyIHNldE51bWJlck9m
VGFwc1JlcXVpcmVkOjJdOwotICAgICAgICBbX2RvdWJsZVRhcEdlc3R1cmVSZWNvZ25pemVyIHNl
dERlbGVnYXRlOnNlbGZdOwotICAgICAgICBbc2VsZiBhZGRHZXN0dXJlUmVjb2duaXplcjpfZG91
YmxlVGFwR2VzdHVyZVJlY29nbml6ZXIuZ2V0KCldOwotICAgICAgICBbX3NpbmdsZVRhcEdlc3R1
cmVSZWNvZ25pemVyIHJlcXVpcmVPdGhlckdlc3R1cmVUb0ZhaWw6X2RvdWJsZVRhcEdlc3R1cmVS
ZWNvZ25pemVyLmdldCgpXTsKLQogICAgICAgICBfaGlnaGxpZ2h0TG9uZ1ByZXNzR2VzdHVyZVJl
Y29nbml6ZXIgPSBhZG9wdE5TKFtbX1VJV2ViSGlnaGxpZ2h0TG9uZ1ByZXNzR2VzdHVyZVJlY29n
bml6ZXIgYWxsb2NdIGluaXRXaXRoVGFyZ2V0OnNlbGYgYWN0aW9uOkBzZWxlY3RvcihfaGlnaGxp
Z2h0TG9uZ1ByZXNzUmVjb2duaXplZDopXSk7CiAgICAgICAgIFtfaGlnaGxpZ2h0TG9uZ1ByZXNz
R2VzdHVyZVJlY29nbml6ZXIgc2V0RGVsYXk6aGlnaGxpZ2h0RGVsYXldOwogICAgICAgICBbX2hp
Z2hsaWdodExvbmdQcmVzc0dlc3R1cmVSZWNvZ25pemVyIHNldERlbGVnYXRlOnNlbGZdOwpAQCAt
MjM1LDcgKzIzMSw2IEBAIHN0cnVjdCBXS0F1dG9Db3JyZWN0aW9uRGF0YXsKICAgICBfYWN0aW9u
U2hlZXRBc3Npc3RhbnQgPSBuaWw7CiAgICAgW190b3VjaEV2ZW50R2VzdHVyZVJlY29nbml6ZXIg
c2V0RGVsZWdhdGU6bmlsXTsKICAgICBbX3NpbmdsZVRhcEdlc3R1cmVSZWNvZ25pemVyIHNldERl
bGVnYXRlOm5pbF07Ci0gICAgW19kb3VibGVUYXBHZXN0dXJlUmVjb2duaXplciBzZXREZWxlZ2F0
ZTpuaWxdOwogICAgIFtfaGlnaGxpZ2h0TG9uZ1ByZXNzR2VzdHVyZVJlY29nbml6ZXIgc2V0RGVs
ZWdhdGU6bmlsXTsKICAgICBbX2xvbmdQcmVzc0dlc3R1cmVSZWNvZ25pemVyIHNldERlbGVnYXRl
Om5pbF07CiAgICAgW190d29GaW5nZXJQYW5HZXN0dXJlUmVjb2duaXplciBzZXREZWxlZ2F0ZTpu
aWxdOwpAQCAtNTAwLDcgKzQ5NSw2IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBpc1NhbWVQYWlyKFVJ
R2VzdHVyZVJlY29nbml6ZXIgKmEsIFVJR2VzdHVyZVJlY29nbml6ZXIgKmIsIFVJCiAgICAgQ0dQ
b2ludCBwb2ludCA9IFtnZXN0dXJlUmVjb2duaXplciBsb2NhdGlvbkluVmlldzpzZWxmXTsKIAog
ICAgIGlmIChnZXN0dXJlUmVjb2duaXplciA9PSBfaGlnaGxpZ2h0TG9uZ1ByZXNzR2VzdHVyZVJl
Y29nbml6ZXIKLSAgICAgICAgfHwgZ2VzdHVyZVJlY29nbml6ZXIgPT0gX2RvdWJsZVRhcEdlc3R1
cmVSZWNvZ25pemVyCiAgICAgICAgIHx8IGdlc3R1cmVSZWNvZ25pemVyID09IF90d29GaW5nZXJE
b3VibGVUYXBHZXN0dXJlUmVjb2duaXplcgogICAgICAgICB8fCBnZXN0dXJlUmVjb2duaXplciA9
PSBfc2luZ2xlVGFwR2VzdHVyZVJlY29nbml6ZXIpIHsKIApAQCAtNjQyLDExICs2MzYsNiBAQCBz
dGF0aWMgaW5saW5lIGJvb2wgaXNTYW1lUGFpcihVSUdlc3R1cmVSZWNvZ25pemVyICphLCBVSUdl
c3R1cmVSZWNvZ25pemVyICpiLCBVSQogICAgIFtzZWxmIF9hdHRlbXB0Q2xpY2tBdExvY2F0aW9u
OltnZXN0dXJlUmVjb2duaXplciBsb2NhdGlvbl1dOwogfQogCi0tICh2b2lkKV9kb3VibGVUYXBS
ZWNvZ25pemVkOihVSVRhcEdlc3R1cmVSZWNvZ25pemVyICopZ2VzdHVyZVJlY29nbml6ZXIKLXsK
LSAgICAvLyBGSVhNRTogQWRkIGltcGxlbWVudGF0aW9uLgotfQotCiAtICh2b2lkKV90d29GaW5n
ZXJEb3VibGVUYXBSZWNvZ25pemVkOihVSVRhcEdlc3R1cmVSZWNvZ25pemVyICopZ2VzdHVyZVJl
Y29nbml6ZXIKIHsKICAgICAvLyBGSVhNRTogQWRkIGltcGxlbWVudGF0aW9uLgpAQCAtNzE4LDYg
KzcwNywxNiBAQCBzdGF0aWMgaW5saW5lIGJvb2wgaXNTYW1lUGFpcihVSUdlc3R1cmVSZWNvZ25p
emVyICphLCBVSUdlc3R1cmVSZWNvZ25pemVyICpiLCBVSQogICAgIFtfdGV4dFNlbGVjdGlvbkFz
c2lzdGFudCBkaWRFbmRTY3JvbGxpbmdPdmVyZmxvd107CiB9CiAKKy0gKHZvaWQpX3NldERvdWJs
ZVRhcEdlc3R1cmVSZWNvZ25pemVyOihVSUdlc3R1cmVSZWNvZ25pemVyICopcmVjb2duaXplcgor
eworI2lmbmRlZiBBU1NFUlRfRElTQUJMRUQKKyAgICBBU1NFUlQoIV9oYXNTZXREb3VibGVUYXBH
ZXN0dXJlUmVjb2duaXplcik7CisgICAgX2hhc1NldERvdWJsZVRhcEdlc3R1cmVSZWNvZ25pemVy
ID0gdHJ1ZTsKKyNlbmRpZgorCisgICAgW19zaW5nbGVUYXBHZXN0dXJlUmVjb2duaXplciByZXF1
aXJlT3RoZXJHZXN0dXJlVG9GYWlsOnJlY29nbml6ZXJdOworfQorCiAtIChVSVZpZXcgKilpbnB1
dEFjY2Vzc29yeVZpZXcKIHsKICAgICBpZiAoIV9pc0VkaXRhYmxlKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9pb3MvV0tWaWV3SU9TLm1tIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9pb3MvV0tWaWV3SU9TLm1tCmluZGV4IDgyOTE5OWUuLmViMWY3ZWYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvaW9zL1dLVmlld0lPUy5t
bQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2lvcy9XS1ZpZXdJT1MubW0KQEAg
LTMwLDcgKzMwLDcgQEAKICNpbXBvcnQgIlZpZXdHZXN0dXJlQ29udHJvbGxlci5oIgogI2ltcG9y
dCAiV2ViUGFnZVByb3h5LmgiCiAjaW1wb3J0ICJXS0Jyb3dzaW5nQ29udGV4dEdyb3VwUHJpdmF0
ZS5oIgotI2ltcG9ydCAiV0tDb250ZW50Vmlldy5oIgorI2ltcG9ydCAiV0tDb250ZW50Vmlld0lu
dGVybmFsLmgiCiAjaW1wb3J0ICJXS1Byb2Nlc3NHcm91cFByaXZhdGUuaCIKICNpbXBvcnQgIldL
U2Nyb2xsVmlldy5oIgogI2ltcG9ydCAiV0tBUElDYXN0LmgiCkBAIC0xMjgsMTggKzEyOCwxMyBA
QCB1c2luZyBuYW1lc3BhY2UgV2ViS2l0OwogICAgICAgICByZXR1cm47CiAKICAgICBfYWxsb3dz
QmFja0ZvcndhcmROYXZpZ2F0aW9uR2VzdHVyZXMgPSBhbGxvd3NCYWNrRm9yd2FyZE5hdmlnYXRp
b25HZXN0dXJlczsKLSAgICAKLSAgICBXZWJQYWdlUHJveHkgKndlYlBhZ2VQcm94eSA9IHRvSW1w
bChbX2NvbnRlbnRWaWV3IF9wYWdlUmVmXSk7Ci0gICAgCi0gICAgaWYgKGFsbG93c0JhY2tGb3J3
YXJkTmF2aWdhdGlvbkdlc3R1cmVzKSB7Ci0gICAgICAgIGlmICghX2dlc3R1cmVDb250cm9sbGVy
KSB7Ci0gICAgICAgICAgICBfZ2VzdHVyZUNvbnRyb2xsZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFZp
ZXdHZXN0dXJlQ29udHJvbGxlcj4oKndlYlBhZ2VQcm94eSk7Ci0gICAgICAgICAgICBfZ2VzdHVy
ZUNvbnRyb2xsZXItPmluc3RhbGxTd2lwZUhhbmRsZXIoc2VsZiwgW3NlbGYgc2Nyb2xsVmlld10p
OwotICAgICAgICB9Ci0gICAgfSBlbHNlCi0gICAgICAgIF9nZXN0dXJlQ29udHJvbGxlciA9IG51
bGxwdHI7Ci0gICAgCi0gICAgd2ViUGFnZVByb3h5LT5zZXRTaG91bGRSZWNvcmROYXZpZ2F0aW9u
U25hcHNob3RzKGFsbG93c0JhY2tGb3J3YXJkTmF2aWdhdGlvbkdlc3R1cmVzKTsKKworICAgIGlm
IChhbGxvd3NCYWNrRm9yd2FyZE5hdmlnYXRpb25HZXN0dXJlcykKKyAgICAgICAgX2dlc3R1cmVD
b250cm9sbGVyLT5pbnN0YWxsU3dpcGVIYW5kbGVyKHNlbGYsIFtzZWxmIHNjcm9sbFZpZXddKTsK
KyAgICBlbHNlCisgICAgICAgIF9nZXN0dXJlQ29udHJvbGxlci0+dW5pbnN0YWxsU3dpcGVIYW5k
bGVyKCk7CisKKyAgICB0b0ltcGwoW19jb250ZW50VmlldyBfcGFnZVJlZl0pLT5zZXRTaG91bGRS
ZWNvcmROYXZpZ2F0aW9uU25hcHNob3RzKGFsbG93c0JhY2tGb3J3YXJkTmF2aWdhdGlvbkdlc3R1
cmVzKTsKIH0KIAogLSAoQk9PTClhbGxvd3NCYWNrRm9yd2FyZE5hdmlnYXRpb25HZXN0dXJlcwpA
QCAtMTU5LDcgKzE1NCw3IEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7CiAgICAgW19zY3JvbGxW
aWV3IHNldE1pbmltdW1ab29tU2NhbGU6bGF5ZXJUcmVlVHJhbnNhY3Rpb24ubWluaW11bVNjYWxl
RmFjdG9yKCldOwogICAgIFtfc2Nyb2xsVmlldyBzZXRNYXhpbXVtWm9vbVNjYWxlOmxheWVyVHJl
ZVRyYW5zYWN0aW9uLm1heGltdW1TY2FsZUZhY3RvcigpXTsKICAgICBbX3Njcm9sbFZpZXcgc2V0
Wm9vbUVuYWJsZWQ6bGF5ZXJUcmVlVHJhbnNhY3Rpb24uYWxsb3dzVXNlclNjYWxpbmcoKV07Ci0g
ICAgaWYgKCFbX3Njcm9sbFZpZXcgaXNab29taW5nXSAmJiAhW19zY3JvbGxWaWV3IGlzWm9vbUJv
dW5jaW5nXSkKKyAgICBpZiAoIVtfc2Nyb2xsVmlldyBpc1pvb21pbmddICYmICFbX3Njcm9sbFZp
ZXcgaXNab29tQm91bmNpbmddICYmICFbX3Njcm9sbFZpZXcgX2lzQW5pbWF0aW5nWm9vbV0pCiAg
ICAgICAgIFtfc2Nyb2xsVmlldyBzZXRab29tU2NhbGU6bGF5ZXJUcmVlVHJhbnNhY3Rpb24ucGFn
ZVNjYWxlRmFjdG9yKCldOwogICAgIAogICAgIGlmIChfZ2VzdHVyZUNvbnRyb2xsZXIpCkBAIC0y
NjMsNiArMjU4LDEyIEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7CiAgICAgW2NlbnRlciBhZGRP
YnNlcnZlcjpzZWxmIHNlbGVjdG9yOkBzZWxlY3Rvcihfa2V5Ym9hcmREaWRDaGFuZ2VGcmFtZTop
IG5hbWU6VUlLZXlib2FyZERpZENoYW5nZUZyYW1lTm90aWZpY2F0aW9uIG9iamVjdDpuaWxdOwog
ICAgIFtjZW50ZXIgYWRkT2JzZXJ2ZXI6c2VsZiBzZWxlY3RvcjpAc2VsZWN0b3IoX2tleWJvYXJk
V2lsbFNob3c6KSBuYW1lOlVJS2V5Ym9hcmRXaWxsU2hvd05vdGlmaWNhdGlvbiBvYmplY3Q6bmls
XTsKICAgICBbY2VudGVyIGFkZE9ic2VydmVyOnNlbGYgc2VsZWN0b3I6QHNlbGVjdG9yKF9rZXli
b2FyZFdpbGxIaWRlOikgbmFtZTpVSUtleWJvYXJkV2lsbEhpZGVOb3RpZmljYXRpb24gb2JqZWN0
Om5pbF07CisKKyAgICBXZWJQYWdlUHJveHkgKndlYlBhZ2VQcm94eSA9IHRvSW1wbChbX2NvbnRl
bnRWaWV3IF9wYWdlUmVmXSk7CisgICAgX2dlc3R1cmVDb250cm9sbGVyID0gc3RkOjptYWtlX3Vu
aXF1ZTxWaWV3R2VzdHVyZUNvbnRyb2xsZXI+KCp3ZWJQYWdlUHJveHkpOworCisgICAgVUlHZXN0
dXJlUmVjb2duaXplciAqcmVjb2duaXplciA9IF9nZXN0dXJlQ29udHJvbGxlci0+aW5zdGFsbFNt
YXJ0TWFnbmlmaWNhdGlvbkhhbmRsZXIoX2NvbnRlbnRWaWV3LmdldCgpLCBfc2Nyb2xsVmlldy5n
ZXQoKSk7CisgICAgW19jb250ZW50VmlldyBfc2V0RG91YmxlVGFwR2VzdHVyZVJlY29nbml6ZXI6
cmVjb2duaXplcl07CiB9CiAKIC0gKHZvaWQpX2ZyYW1lT3JCb3VuZHNDaGFuZ2VkCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1ZpZXdHZXN0dXJlQ29udHJvbGxlcklP
Uy5tbSBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvVmlld0dlc3R1cmVDb250cm9sbGVy
SU9TLm1tCmluZGV4IDJlMDNiMDEuLjdlN2IyNDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9pb3MvVmlld0dlc3R1cmVDb250cm9sbGVySU9TLm1tCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9pb3MvVmlld0dlc3R1cmVDb250cm9sbGVySU9TLm1tCkBAIC0zNSw3
ICszNSwxMCBAQAogI2ltcG9ydCAiV2ViUGFnZVByb3h5LmgiCiAjaW1wb3J0ICJXZWJQcm9jZXNz
UHJveHkuaCIKICNpbXBvcnQgPFF1YXJ0ekNvcmUvUXVhcnR6Q29yZS5oPgorI2ltcG9ydCA8VUlL
aXQvVUlEZXZpY2VfUHJpdmF0ZS5oPgorI2ltcG9ydCA8VUlLaXQvVUlLaXQuaD4KICNpbXBvcnQg
PFVJS2l0L1VJU2NyZWVuRWRnZVBhbkdlc3R1cmVSZWNvZ25pemVyLmg+CisjaW1wb3J0IDxVSUtp
dC9VSVNjcm9sbFZpZXdfUHJpdmF0ZS5oPgogI2ltcG9ydCA8VUlLaXQvVUlWaWV3Q29udHJvbGxl
clRyYW5zaXRpb25pbmdfUHJpdmF0ZS5oPgogI2ltcG9ydCA8VUlLaXQvVUlXZWJUb3VjaEV2ZW50
c0dlc3R1cmVSZWNvZ25pemVyLmg+CiAjaW1wb3J0IDxVSUtpdC9fVUlOYXZpZ2F0aW9uSW50ZXJh
Y3RpdmVUcmFuc2l0aW9uLmg+CkBAIC00OCw2ICs1MSwxOSBAQAogCiB1c2luZyBuYW1lc3BhY2Ug
V2ViQ29yZTsKIAorc3RhdGljIGNvbnN0IENHRmxvYXQgc21hcnRNYWduaWZpY2F0aW9uUGFuU2Ny
b2xsVGhyZXNob2xkWm9vbWVkT3V0ID0gNjA7CitzdGF0aWMgY29uc3QgQ0dGbG9hdCBzbWFydE1h
Z25pZmljYXRpb25QYW5TY3JvbGxUaHJlc2hvbGRJUGhvbmUgPSAxMDA7CitzdGF0aWMgY29uc3Qg
Q0dGbG9hdCBzbWFydE1hZ25pZmljYXRpb25QYW5TY3JvbGxUaHJlc2hvbGRJUGFkID0gMTUwOwor
c3RhdGljIGNvbnN0IENHRmxvYXQgc21hcnRNYWduaWZpY2F0aW9uRWxlbWVudFBhZGRpbmcgPSAw
LjA1OworCitzdGF0aWMgY29uc3QgZmxvYXQgc21hcnRNYWduaWZpY2F0aW9uU2NhbGVEZWx0YVRo
cmVzaG9sZEZvclBhblNjcm9sbCA9IDAuMDI7CisKK3N0YXRpYyBjb25zdCBkb3VibGUgc21hcnRN
YWduaWZpY2F0aW9uTWF4aW11bVNjYWxlID0gMS42Oworc3RhdGljIGNvbnN0IGRvdWJsZSBzbWFy
dE1hZ25pZmljYXRpb25NaW5pbXVtU2NhbGUgPSAwOworCitzdGF0aWMgY29uc3QgZmxvYXQgc3dp
cGVTbmFwc2hvdFJlbW92YWxSZW5kZXJUcmVlU2l6ZVRhcmdldEZyYWN0aW9uID0gMC41Oworc3Rh
dGljIGNvbnN0IHN0ZDo6Y2hyb25vOjpzZWNvbmRzIHN3aXBlU25hcHNob3RSZW1vdmFsV2F0Y2hk
b2dEdXJhdGlvbiA9IDNfczsKKwogQGludGVyZmFjZSBXS1N3aXBlVHJhbnNpdGlvbkNvbnRyb2xs
ZXIgOiBOU09iamVjdCA8X1VJTmF2aWdhdGlvbkludGVyYWN0aXZlVHJhbnNpdGlvbkJhc2VEZWxl
Z2F0ZT4KIC0gKGluc3RhbmNldHlwZSlpbml0V2l0aFZpZXdHZXN0dXJlQ29udHJvbGxlcjooV2Vi
S2l0OjpWaWV3R2VzdHVyZUNvbnRyb2xsZXIqKWdlc3R1cmVDb250cm9sbGVyIGdlc3R1cmVSZWNv
Z25pemVyVmlldzooVUlWaWV3ICopZ2VzdHVyZVJlY29nbml6ZXJWaWV3OwogQGVuZApAQCAtNTks
MjIgKzc1LDE5IEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogICAgIFJldGFpblB0cjxfVUlO
YXZpZ2F0aW9uSW50ZXJhY3RpdmVUcmFuc2l0aW9uQmFzZT4gX2ZvcndhcmRUcmFuc2l0aW9uQ29u
dHJvbGxlcjsKIH0KIAotc3RhdGljIGNvbnN0IGZsb2F0IHN3aXBlU25hcHNob3RSZW1vdmFsUmVu
ZGVyVHJlZVNpemVUYXJnZXRGcmFjdGlvbiA9IDAuNTsKLXN0YXRpYyBjb25zdCBzdGQ6OmNocm9u
bzo6c2Vjb25kcyBzd2lwZVNuYXBzaG90UmVtb3ZhbFdhdGNoZG9nRHVyYXRpb24gPSAzX3M7Ci0K
IC0gKGluc3RhbmNldHlwZSlpbml0V2l0aFZpZXdHZXN0dXJlQ29udHJvbGxlcjooV2ViS2l0OjpW
aWV3R2VzdHVyZUNvbnRyb2xsZXIqKWdlc3R1cmVDb250cm9sbGVyIGdlc3R1cmVSZWNvZ25pemVy
VmlldzooVUlWaWV3ICopZ2VzdHVyZVJlY29nbml6ZXJWaWV3CiB7Ci0gICAgc2VsZiA9IFtzdXBl
ciBpbml0XTsKLSAgICBpZiAoc2VsZikgewotICAgICAgICBfZ2VzdHVyZUNvbnRyb2xsZXIgPSBn
ZXN0dXJlQ29udHJvbGxlcjsKKyAgICBpZiAoIShzZWxmID0gW3N1cGVyIGluaXRdKSkKKyAgICAg
ICAgcmV0dXJuIG5pbDsKIAotICAgICAgICBfYmFja1RyYW5zaXRpb25Db250cm9sbGVyID0gYWRv
cHROUyhbX1VJTmF2aWdhdGlvbkludGVyYWN0aXZlVHJhbnNpdGlvbkJhc2UgYWxsb2NdKTsKLSAg
ICAgICAgX2JhY2tUcmFuc2l0aW9uQ29udHJvbGxlciA9IFtfYmFja1RyYW5zaXRpb25Db250cm9s
bGVyIGluaXRXaXRoR2VzdHVyZVJlY29nbml6ZXJWaWV3Omdlc3R1cmVSZWNvZ25pemVyVmlldyBh
bmltYXRvcjpuaWwgZGVsZWdhdGU6c2VsZl07Ci0gICAgICAgIAotICAgICAgICBfZm9yd2FyZFRy
YW5zaXRpb25Db250cm9sbGVyID0gYWRvcHROUyhbX1VJTmF2aWdhdGlvbkludGVyYWN0aXZlVHJh
bnNpdGlvbkJhc2UgYWxsb2NdKTsKLSAgICAgICAgX2ZvcndhcmRUcmFuc2l0aW9uQ29udHJvbGxl
ciA9IFtfZm9yd2FyZFRyYW5zaXRpb25Db250cm9sbGVyIGluaXRXaXRoR2VzdHVyZVJlY29nbml6
ZXJWaWV3Omdlc3R1cmVSZWNvZ25pemVyVmlldyBhbmltYXRvcjpuaWwgZGVsZWdhdGU6c2VsZl07
Ci0gICAgICAgIFtfZm9yd2FyZFRyYW5zaXRpb25Db250cm9sbGVyIHNldFNob3VsZFJldmVyc2VU
cmFuc2xhdGlvbjpZRVNdOwotICAgIH0KKyAgICBfZ2VzdHVyZUNvbnRyb2xsZXIgPSBnZXN0dXJl
Q29udHJvbGxlcjsKKworICAgIF9iYWNrVHJhbnNpdGlvbkNvbnRyb2xsZXIgPSBhZG9wdE5TKFtf
VUlOYXZpZ2F0aW9uSW50ZXJhY3RpdmVUcmFuc2l0aW9uQmFzZSBhbGxvY10pOworICAgIF9iYWNr
VHJhbnNpdGlvbkNvbnRyb2xsZXIgPSBbX2JhY2tUcmFuc2l0aW9uQ29udHJvbGxlciBpbml0V2l0
aEdlc3R1cmVSZWNvZ25pemVyVmlldzpnZXN0dXJlUmVjb2duaXplclZpZXcgYW5pbWF0b3I6bmls
IGRlbGVnYXRlOnNlbGZdOworCisgICAgX2ZvcndhcmRUcmFuc2l0aW9uQ29udHJvbGxlciA9IGFk
b3B0TlMoW19VSU5hdmlnYXRpb25JbnRlcmFjdGl2ZVRyYW5zaXRpb25CYXNlIGFsbG9jXSk7Cisg
ICAgX2ZvcndhcmRUcmFuc2l0aW9uQ29udHJvbGxlciA9IFtfZm9yd2FyZFRyYW5zaXRpb25Db250
cm9sbGVyIGluaXRXaXRoR2VzdHVyZVJlY29nbml6ZXJWaWV3Omdlc3R1cmVSZWNvZ25pemVyVmll
dyBhbmltYXRvcjpuaWwgZGVsZWdhdGU6c2VsZl07CisgICAgW19mb3J3YXJkVHJhbnNpdGlvbkNv
bnRyb2xsZXIgc2V0U2hvdWxkUmV2ZXJzZVRyYW5zbGF0aW9uOllFU107CiAgICAgcmV0dXJuIHNl
bGY7CiB9CiAKQEAgLTExOSw2ICsxMzIsNDUgQEAgc3RhdGljIGNvbnN0IHN0ZDo6Y2hyb25vOjpz
ZWNvbmRzIHN3aXBlU25hcHNob3RSZW1vdmFsV2F0Y2hkb2dEdXJhdGlvbiA9IDNfczsKIAogQGVu
ZAogCitAaW50ZXJmYWNlIFdLU21hcnRNYWduaWZpY2F0aW9uR2VzdHVyZUNvbnRyb2xsZXIgOiBO
U09iamVjdCA8VUlHZXN0dXJlUmVjb2duaXplckRlbGVnYXRlPgorLSAoaW5zdGFuY2V0eXBlKWlu
aXRXaXRoVmlld0dlc3R1cmVDb250cm9sbGVyOihXZWJLaXQ6OlZpZXdHZXN0dXJlQ29udHJvbGxl
ciopZ2VzdHVyZUNvbnRyb2xsZXIgZ2VzdHVyZVJlY29nbml6ZXJWaWV3OihVSVZpZXcgKilnZXN0
dXJlUmVjb2duaXplclZpZXc7CistIChVSUdlc3R1cmVSZWNvZ25pemVyICopZG91YmxlVGFwUmVj
b2duaXplcjsKK0BlbmQKKworQGltcGxlbWVudGF0aW9uIFdLU21hcnRNYWduaWZpY2F0aW9uR2Vz
dHVyZUNvbnRyb2xsZXIKK3sKKyAgICBXZWJLaXQ6OlZpZXdHZXN0dXJlQ29udHJvbGxlciAqX2dl
c3R1cmVDb250cm9sbGVyOworICAgIFJldGFpblB0cjxVSVRhcEdlc3R1cmVSZWNvZ25pemVyPiBf
ZG91YmxlVGFwUmVjb2duaXplcjsKKyAgICBSZXRhaW5QdHI8VUlWaWV3PiBfZ2VzdHVyZVJlY29n
bml6ZXJWaWV3OworfQorCistIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhWaWV3R2VzdHVyZUNvbnRy
b2xsZXI6KFdlYktpdDo6Vmlld0dlc3R1cmVDb250cm9sbGVyKilnZXN0dXJlQ29udHJvbGxlciBn
ZXN0dXJlUmVjb2duaXplclZpZXc6KFVJVmlldyAqKWdlc3R1cmVSZWNvZ25pemVyVmlldworewor
ICAgIGlmICghKHNlbGYgPSBbc3VwZXIgaW5pdF0pKQorICAgICAgICByZXR1cm4gbmlsOworCisg
ICAgX2dlc3R1cmVDb250cm9sbGVyID0gZ2VzdHVyZUNvbnRyb2xsZXI7CisgICAgX2dlc3R1cmVS
ZWNvZ25pemVyVmlldyA9IGdlc3R1cmVSZWNvZ25pemVyVmlldzsKKyAgICBfZG91YmxlVGFwUmVj
b2duaXplciA9IGFkb3B0TlMoW1tVSVRhcEdlc3R1cmVSZWNvZ25pemVyIGFsbG9jXSBpbml0V2l0
aFRhcmdldDpzZWxmIGFjdGlvbjpAc2VsZWN0b3IoZG91YmxlVGFwUmVjb2duaXplZDopXSk7Cisg
ICAgW19kb3VibGVUYXBSZWNvZ25pemVyIHNldE51bWJlck9mVGFwc1JlcXVpcmVkOjJdOworICAg
IFtfZG91YmxlVGFwUmVjb2duaXplciBzZXREZWxlZ2F0ZTpzZWxmXTsKKyAgICBbZ2VzdHVyZVJl
Y29nbml6ZXJWaWV3IGFkZEdlc3R1cmVSZWNvZ25pemVyOl9kb3VibGVUYXBSZWNvZ25pemVyLmdl
dCgpXTsKKworICAgIHJldHVybiBzZWxmOworfQorCistICh2b2lkKWRvdWJsZVRhcFJlY29nbml6
ZWQ6KFVJVGFwR2VzdHVyZVJlY29nbml6ZXIgKilnZXN0dXJlUmVjb2duaXplcgoreworICAgIF9n
ZXN0dXJlQ29udHJvbGxlci0+aGFuZGxlU21hcnRNYWduaWZpY2F0aW9uR2VzdHVyZShbZ2VzdHVy
ZVJlY29nbml6ZXIgbG9jYXRpb25JblZpZXc6X2dlc3R1cmVSZWNvZ25pemVyVmlldy5nZXQoKV0p
OworfQorCistIChVSUdlc3R1cmVSZWNvZ25pemVyICopZG91YmxlVGFwUmVjb2duaXplcgorewor
ICAgIHJldHVybiBfZG91YmxlVGFwUmVjb2duaXplci5nZXQoKTsKK30KKworQGVuZAorCiBuYW1l
c3BhY2UgV2ViS2l0IHsKIAogVmlld0dlc3R1cmVDb250cm9sbGVyOjpWaWV3R2VzdHVyZUNvbnRy
b2xsZXIoV2ViUGFnZVByb3h5JiB3ZWJQYWdlUHJveHkpCkBAIC0xMjcsMTAgKzE3OSwxMiBAQCBW
aWV3R2VzdHVyZUNvbnRyb2xsZXI6OlZpZXdHZXN0dXJlQ29udHJvbGxlcihXZWJQYWdlUHJveHkm
IHdlYlBhZ2VQcm94eSkKICAgICAsIG1fc3dpcGVXYXRjaGRvZ1RpbWVyKHRoaXMsICZWaWV3R2Vz
dHVyZUNvbnRyb2xsZXI6OnN3aXBlU25hcHNob3RXYXRjaGRvZ1RpbWVyRmlyZWQpCiAgICAgLCBt
X3RhcmdldFJlbmRlclRyZWVTaXplKDApCiB7CisgICAgbV93ZWJQYWdlUHJveHkucHJvY2Vzcygp
LmFkZE1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6Vmlld0dlc3R1cmVDb250cm9sbGVyOjptZXNz
YWdlUmVjZWl2ZXJOYW1lKCksIG1fd2ViUGFnZVByb3h5LnBhZ2VJRCgpLCAqdGhpcyk7CiB9CiAK
IFZpZXdHZXN0dXJlQ29udHJvbGxlcjo6flZpZXdHZXN0dXJlQ29udHJvbGxlcigpCiB7CisgICAg
bV93ZWJQYWdlUHJveHkucHJvY2VzcygpLnJlbW92ZU1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6
Vmlld0dlc3R1cmVDb250cm9sbGVyOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1fd2ViUGFnZVBy
b3h5LnBhZ2VJRCgpKTsKIH0KIAogdm9pZCBWaWV3R2VzdHVyZUNvbnRyb2xsZXI6Omluc3RhbGxT
d2lwZUhhbmRsZXIoVUlWaWV3ICpnZXN0dXJlUmVjb2duaXplclZpZXcsIFVJVmlldyAqc3dpcGlu
Z1ZpZXcpCkBAIC0xNDAsNiArMTk0LDE0IEBAIHZvaWQgVmlld0dlc3R1cmVDb250cm9sbGVyOjpp
bnN0YWxsU3dpcGVIYW5kbGVyKFVJVmlldyAqZ2VzdHVyZVJlY29nbml6ZXJWaWV3LCBVCiAgICAg
bV9saXZlU3dpcGVWaWV3ID0gc3dpcGluZ1ZpZXc7CiB9CiAKK3ZvaWQgVmlld0dlc3R1cmVDb250
cm9sbGVyOjp1bmluc3RhbGxTd2lwZUhhbmRsZXIoKQoreworICAgIEFTU0VSVChtX3N3aXBlSW50
ZXJhY3RpdmVUcmFuc2l0aW9uRGVsZWdhdGUpOworICAgIEFTU0VSVChtX2FjdGl2ZUdlc3R1cmVU
eXBlICE9IFZpZXdHZXN0dXJlVHlwZTo6U3dpcGUpOworICAgIG1fc3dpcGVJbnRlcmFjdGl2ZVRy
YW5zaXRpb25EZWxlZ2F0ZSA9IG51bGxwdHI7CisgICAgbV9saXZlU3dpcGVWaWV3ID0gbnVsbHB0
cjsKK30KKwogdm9pZCBWaWV3R2VzdHVyZUNvbnRyb2xsZXI6OmJlZ2luU3dpcGVHZXN0dXJlKF9V
SU5hdmlnYXRpb25JbnRlcmFjdGl2ZVRyYW5zaXRpb25CYXNlICp0cmFuc2l0aW9uLCBTd2lwZURp
cmVjdGlvbiBkaXJlY3Rpb24pCiB7CiAgICAgaWYgKG1fYWN0aXZlR2VzdHVyZVR5cGUgIT0gVmll
d0dlc3R1cmVUeXBlOjpOb25lKQpAQCAtMjczLDQgKzMzNSwxNzUgQEAgdm9pZCBWaWV3R2VzdHVy
ZUNvbnRyb2xsZXI6OnJlbW92ZVN3aXBlU25hcHNob3QoKQogICAgIG1fYWN0aXZlR2VzdHVyZVR5
cGUgPSBWaWV3R2VzdHVyZVR5cGU6Ok5vbmU7CiB9CiAKK1VJR2VzdHVyZVJlY29nbml6ZXIgKlZp
ZXdHZXN0dXJlQ29udHJvbGxlcjo6aW5zdGFsbFNtYXJ0TWFnbmlmaWNhdGlvbkhhbmRsZXIoVUlW
aWV3ICp0YXJnZXRWaWV3LCBVSVNjcm9sbFZpZXcgKnNjcm9sbFZpZXcpCit7CisgICAgQVNTRVJU
KCFtX3NtYXJ0TWFnbmlmaWNhdGlvbkdlc3R1cmVDb250cm9sbGVyKTsKKyAgICBtX3NtYXJ0TWFn
bmlmaWNhdGlvbkdlc3R1cmVDb250cm9sbGVyID0gYWRvcHROUyhbW1dLU21hcnRNYWduaWZpY2F0
aW9uR2VzdHVyZUNvbnRyb2xsZXIgYWxsb2NdIGluaXRXaXRoVmlld0dlc3R1cmVDb250cm9sbGVy
OnRoaXMgZ2VzdHVyZVJlY29nbml6ZXJWaWV3OnRhcmdldFZpZXddKTsKKyAgICBtX3NtYXJ0TWFn
bmlmaWNhdGlvblNjcm9sbFZpZXcgPSBzY3JvbGxWaWV3OworICAgIG1fc21hcnRNYWduaWZpY2F0
aW9uVGFyZ2V0VmlldyA9IHRhcmdldFZpZXc7CisKKyAgICByZXR1cm4gW21fc21hcnRNYWduaWZp
Y2F0aW9uR2VzdHVyZUNvbnRyb2xsZXIgZG91YmxlVGFwUmVjb2duaXplcl07Cit9CisKK3ZvaWQg
Vmlld0dlc3R1cmVDb250cm9sbGVyOjpoYW5kbGVTbWFydE1hZ25pZmljYXRpb25HZXN0dXJlKEZs
b2F0UG9pbnQgb3JpZ2luKQoreworICAgIGlmIChtX2FjdGl2ZUdlc3R1cmVUeXBlICE9IFZpZXdH
ZXN0dXJlVHlwZTo6Tm9uZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV93ZWJQYWdlUHJveHku
cHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OlZpZXdHZXN0dXJlR2VvbWV0cnlDb2xsZWN0b3I6OkNv
bGxlY3RHZW9tZXRyeUZvclNtYXJ0TWFnbmlmaWNhdGlvbkdlc3R1cmUob3JpZ2luKSwgbV93ZWJQ
YWdlUHJveHkucGFnZUlEKCkpOworfQorCitzdGF0aWMgYm9vbCBzaG91bGRQYW5TY3JvbGxGb3JT
Y2FsZShkb3VibGUgZnJvbVNjYWxlLCBkb3VibGUgdG9TY2FsZSkKK3sKKyAgICByZXR1cm4gZmFi
cyh0b1NjYWxlIC0gZnJvbVNjYWxlKSA8IHNtYXJ0TWFnbmlmaWNhdGlvblNjYWxlRGVsdGFUaHJl
c2hvbGRGb3JQYW5TY3JvbGw7Cit9CisKK3N0YXRpYyBDRlRpbWVJbnRlcnZhbCBkdXJhdGlvbkZv
clpvb21Ub1NjYWxlKGRvdWJsZSBmcm9tU2NhbGUsIGRvdWJsZSB0b1NjYWxlKQoreworICAgIGNv
bnN0IGRvdWJsZSBtYXhpbXVtWm9vbUR1cmF0aW9uID0gMC40OworICAgIGNvbnN0IGRvdWJsZSBt
aW5pbXVtWm9vbUR1cmF0aW9uID0gMC4xOworICAgIGNvbnN0IGRvdWJsZSB6b29tRHVyYXRpb25G
YWN0b3IgPSAwLjM7CisKKyAgICByZXR1cm4gc3RkOjptaW4oZmFicyhsb2coZnJvbVNjYWxlKSAt
IGxvZyh0b1NjYWxlKSkgKiB6b29tRHVyYXRpb25GYWN0b3IgKyBtaW5pbXVtWm9vbUR1cmF0aW9u
LCBtYXhpbXVtWm9vbUR1cmF0aW9uKTsKK30KKworc3RhdGljIGJvb2wgem9vbVRvQ2VudGVyQXRT
Y2FsZShGbG9hdFBvaW50IG9yaWdpbiwgZG91YmxlIHNjYWxlLCBVSVNjcm9sbFZpZXcgKnNjcm9s
bFZpZXcpCit7CisgICAgaWYgKCFbc2Nyb2xsVmlldyBpc1pvb21FbmFibGVkXSkKKyAgICAgICAg
cmV0dXJuIGZhbHNlOworCisgICAgQ0ZUaW1lSW50ZXJ2YWwgZHVyYXRpb24gPSBkdXJhdGlvbkZv
clpvb21Ub1NjYWxlKFtzY3JvbGxWaWV3IHpvb21TY2FsZV0sIHNjYWxlKTsKKyAgICBbc2Nyb2xs
VmlldyBfem9vbVRvQ2VudGVyOm9yaWdpbiBzY2FsZTpzY2FsZSBkdXJhdGlvbjpkdXJhdGlvbl07
CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworYm9vbCBWaWV3R2VzdHVyZUNvbnRyb2xsZXI6OnNt
YXJ0TWFnbmlmaWNhdGlvblpvb21Ub1RhcmdldChkb3VibGUgc2NhbGUsIEZsb2F0UmVjdCB0YXJn
ZXRSZWN0LCBGbG9hdFBvaW50IG9yaWdpbikKK3sKKyAgICBGbG9hdFNpemUgc2Nyb2xsVmlld1Np
emUoW21fc21hcnRNYWduaWZpY2F0aW9uU2Nyb2xsVmlldyBib3VuZHNdLnNpemUpOworICAgIGRv
dWJsZSBjdXJyZW50U2NhbGVGYWN0b3IgPSBtX3dlYlBhZ2VQcm94eS5wYWdlU2NhbGVGYWN0b3Io
KTsKKyAgICBkb3VibGUgcmVsYXRpdmVTY2FsZSA9IHNjYWxlIC8gY3VycmVudFNjYWxlRmFjdG9y
OworCisgICAgRmxvYXRSZWN0IHNjcm9sbFZpZXdUYXJnZXRSZWN0ID0gW21fc21hcnRNYWduaWZp
Y2F0aW9uU2Nyb2xsVmlldyBjb252ZXJ0UmVjdDp0YXJnZXRSZWN0IGZyb21WaWV3Om1fc21hcnRN
YWduaWZpY2F0aW9uVGFyZ2V0Vmlldy5nZXQoKV07CisgICAgRmxvYXRSZWN0IHNjYWxlZFNjcm9s
bFZpZXdUYXJnZXRSZWN0ID0gc2Nyb2xsVmlld1RhcmdldFJlY3Q7CisgICAgc2NhbGVkU2Nyb2xs
Vmlld1RhcmdldFJlY3Quc2NhbGUocmVsYXRpdmVTY2FsZSwgcmVsYXRpdmVTY2FsZSk7CisKKyAg
ICAvLyBDZW50ZXIgdGhlIHRhcmdldCByZWN0IGluIHRoZSBzY3JvbGwgdmlldy4KKyAgICAvLyBJ
ZiB0aGUgdGFyZ2V0IGRvZXNuJ3QgZml0IGluIHRoZSBzY3JvbGwgdmlldywgY2VudGVyIG9uIHRo
ZSBnZXN0dXJlIGxvY2F0aW9uIGluc3RlYWQuCisgICAgRmxvYXRQb2ludCB6b29tQ2VudGVyID0g
dGFyZ2V0UmVjdC5jZW50ZXIoKTsKKworICAgIGlmIChzY2FsZWRTY3JvbGxWaWV3VGFyZ2V0UmVj
dC53aWR0aCgpID4gc2Nyb2xsVmlld1NpemUud2lkdGgoKSkKKyAgICAgICAgem9vbUNlbnRlci5z
ZXRYKG9yaWdpbi54KCkpOworICAgIGlmIChzY2FsZWRTY3JvbGxWaWV3VGFyZ2V0UmVjdC5oZWln
aHQoKSA+IHNjcm9sbFZpZXdTaXplLmhlaWdodCgpKQorICAgICAgICB6b29tQ2VudGVyLnNldFko
b3JpZ2luLnkoKSk7CisKKyAgICBpZiAoem9vbVRvQ2VudGVyQXRTY2FsZSh6b29tQ2VudGVyLCBz
Y2FsZSwgbV9zbWFydE1hZ25pZmljYXRpb25TY3JvbGxWaWV3LmdldCgpKSkKKyAgICAgICAgcmV0
dXJuIHRydWU7CisKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK3N0YXRpYyBGbG9hdFBvaW50IGNv
bnN0cmFpbkNvbnRlbnRPZmZzZXQoRmxvYXRQb2ludCBjb250ZW50T2Zmc2V0LCBGbG9hdFNpemUg
Y29udGVudFNpemUsIEZsb2F0U2l6ZSBzY3JvbGxWaWV3U2l6ZSkKK3sKKyAgICBGbG9hdFNpemUg
bWF4aW11bUNvbnRlbnRPZmZzZXQgPSBjb250ZW50U2l6ZSAtIHNjcm9sbFZpZXdTaXplOworICAg
IGNvbnRlbnRPZmZzZXQgPSBjb250ZW50T2Zmc2V0LnNocnVua1RvKEZsb2F0UG9pbnQobWF4aW11
bUNvbnRlbnRPZmZzZXQud2lkdGgoKSwgbWF4aW11bUNvbnRlbnRPZmZzZXQuaGVpZ2h0KCkpKTsK
KyAgICBjb250ZW50T2Zmc2V0ID0gY29udGVudE9mZnNldC5leHBhbmRlZFRvKEZsb2F0UG9pbnQo
KSk7CisgICAgcmV0dXJuIGNvbnRlbnRPZmZzZXQ7Cit9CisKK2Jvb2wgVmlld0dlc3R1cmVDb250
cm9sbGVyOjpzbWFydE1hZ25pZmljYXRpb25TY3JvbGxUb1RhcmdldChGbG9hdFJlY3QgdGFyZ2V0
UmVjdCwgRmxvYXRQb2ludCBvcmlnaW4pCit7CisgICAgaWYgKCFbbV9zbWFydE1hZ25pZmljYXRp
b25TY3JvbGxWaWV3IGlzU2Nyb2xsRW5hYmxlZF0pCisgICAgICAgIHJldHVybiBmYWxzZTsKKwor
ICAgIEZsb2F0U2l6ZSBzY3JvbGxWaWV3U2l6ZShbbV9zbWFydE1hZ25pZmljYXRpb25TY3JvbGxW
aWV3IGJvdW5kc10uc2l6ZSk7CisgICAgRmxvYXRTaXplIGNvbnRlbnRTaXplKFttX3NtYXJ0TWFn
bmlmaWNhdGlvblNjcm9sbFZpZXcgY29udGVudFNpemVdKTsKKyAgICBGbG9hdFBvaW50IGN1cnJl
bnRDb250ZW50T2Zmc2V0KFttX3NtYXJ0TWFnbmlmaWNhdGlvblNjcm9sbFZpZXcgY29udGVudE9m
ZnNldF0pOworCisgICAgRmxvYXRQb2ludCBzY3JvbGxWaWV3T3JpZ2luKFttX3NtYXJ0TWFnbmlm
aWNhdGlvblNjcm9sbFZpZXcgY29udmVydFBvaW50Om9yaWdpbiBmcm9tVmlldzptX3NtYXJ0TWFn
bmlmaWNhdGlvblRhcmdldFZpZXcuZ2V0KCldKTsKKyAgICBGbG9hdFJlY3Qgc2Nyb2xsVmlld1Rh
cmdldFJlY3QoW21fc21hcnRNYWduaWZpY2F0aW9uU2Nyb2xsVmlldyBjb252ZXJ0UmVjdDp0YXJn
ZXRSZWN0IGZyb21WaWV3Om1fc21hcnRNYWduaWZpY2F0aW9uVGFyZ2V0Vmlldy5nZXQoKV0pOwor
CisgICAgLy8gQ2VudGVyIHRoZSB0YXJnZXQgcmVjdCBpbiB0aGUgc2Nyb2xsIHZpZXcuCisgICAg
Ly8gSWYgdGhlIHRhcmdldCBkb2Vzbid0IGZpdCBpbiB0aGUgc2Nyb2xsIHZpZXcsIGNlbnRlciBv
biB0aGUgZ2VzdHVyZSBsb2NhdGlvbiBpbnN0ZWFkLgorICAgIEZsb2F0UG9pbnQgbmV3Q29udGVu
dE9mZnNldDsKKyAgICBpZiAoc2Nyb2xsVmlld1RhcmdldFJlY3Qud2lkdGgoKSA8PSBzY3JvbGxW
aWV3U2l6ZS53aWR0aCgpKQorICAgICAgICBuZXdDb250ZW50T2Zmc2V0LnNldFgoc2Nyb2xsVmll
d1RhcmdldFJlY3QueCgpIC0gKHNjcm9sbFZpZXdTaXplLndpZHRoKCkgLSBzY3JvbGxWaWV3VGFy
Z2V0UmVjdC53aWR0aCgpKSAvIDIpOworICAgIGVsc2UKKyAgICAgICAgbmV3Q29udGVudE9mZnNl
dC5zZXRYKHNjcm9sbFZpZXdPcmlnaW4ueCgpIC0gc2Nyb2xsVmlld1NpemUud2lkdGgoKSAvIDIp
OworICAgIGlmIChzY3JvbGxWaWV3VGFyZ2V0UmVjdC5oZWlnaHQoKSA8PSBzY3JvbGxWaWV3U2l6
ZS5oZWlnaHQoKSkKKyAgICAgICAgbmV3Q29udGVudE9mZnNldC5zZXRZKHNjcm9sbFZpZXdUYXJn
ZXRSZWN0LnkoKSAtIChzY3JvbGxWaWV3U2l6ZS5oZWlnaHQoKSAtIHNjcm9sbFZpZXdUYXJnZXRS
ZWN0LmhlaWdodCgpKSAvIDIpOworICAgIGVsc2UKKyAgICAgICAgbmV3Q29udGVudE9mZnNldC5z
ZXRZKHNjcm9sbFZpZXdPcmlnaW4ueSgpIC0gc2Nyb2xsVmlld1NpemUuaGVpZ2h0KCkgLyAyKTsK
KyAgICBuZXdDb250ZW50T2Zmc2V0ID0gY29uc3RyYWluQ29udGVudE9mZnNldChuZXdDb250ZW50
T2Zmc2V0LCBjb250ZW50U2l6ZSwgc2Nyb2xsVmlld1NpemUpOworCisgICAgaWYgKGN1cnJlbnRD
b250ZW50T2Zmc2V0ID09IG5ld0NvbnRlbnRPZmZzZXQpIHsKKyAgICAgICAgaWYgKHNjcm9sbFZp
ZXdUYXJnZXRSZWN0LndpZHRoKCkgPiBzY3JvbGxWaWV3U2l6ZS53aWR0aCgpKQorICAgICAgICAg
ICAgbmV3Q29udGVudE9mZnNldC5zZXRYKHNjcm9sbFZpZXdPcmlnaW4ueCgpIC0gc2Nyb2xsVmll
d1NpemUud2lkdGgoKSAvIDIpOworICAgICAgICBpZiAoc2Nyb2xsVmlld1RhcmdldFJlY3QuaGVp
Z2h0KCkgPiBzY3JvbGxWaWV3U2l6ZS5oZWlnaHQoKSkKKyAgICAgICAgICAgIG5ld0NvbnRlbnRP
ZmZzZXQuc2V0WShzY3JvbGxWaWV3T3JpZ2luLnkoKSAtIHNjcm9sbFZpZXdTaXplLmhlaWdodCgp
IC8gMik7CisgICAgICAgIG5ld0NvbnRlbnRPZmZzZXQgPSBjb25zdHJhaW5Db250ZW50T2Zmc2V0
KG5ld0NvbnRlbnRPZmZzZXQsIGNvbnRlbnRTaXplLCBzY3JvbGxWaWV3U2l6ZSk7CisgICAgfQor
CisgICAgRmxvYXRSZWN0IGluc2V0U2Nyb2xsVmlld1JlY3QgPSBVSUVkZ2VJbnNldHNJbnNldFJl
Y3QoW21fc21hcnRNYWduaWZpY2F0aW9uU2Nyb2xsVmlldyBib3VuZHNdLCBbbV9zbWFydE1hZ25p
ZmljYXRpb25TY3JvbGxWaWV3IGNvbnRlbnRJbnNldF0pOworCisgICAgZmxvYXQgc2Nyb2xsRGlz
dGFuY2UgPSAoY3VycmVudENvbnRlbnRPZmZzZXQgLSBuZXdDb250ZW50T2Zmc2V0KS5kaWFnb25h
bExlbmd0aCgpOworCisgICAgLy8gSWYgdGhlIGNvbnRlbnQgYWxyZWFkeSBmaXRzIGluIHRoZSBz
Y3JvbGwgdmlldyBhbmQgd2UncmUgYWxyZWFkeSB6b29tZWQgaW4gdG8gdGhlIHRhcmdldCBzY2Fs
ZSwKKyAgICAvLyBpdCBpcyBtb3N0IGxpa2VseSB0aGF0IHRoZSB1c2VyIGludGVuZGVkIHRvIHNj
cm9sbCwgc28gdXNlIGEgc21hbGwgZGlzdGFuY2UgdGhyZXNob2xkIHRvIGluaXRpYXRlIHBhbm5p
bmcuCisgICAgaWYgKGNvbnRlbnRTaXplLndpZHRoKCkgPD0gaW5zZXRTY3JvbGxWaWV3UmVjdC53
aWR0aCgpKSB7CisgICAgICAgIGlmIChzY3JvbGxEaXN0YW5jZSA8IHNtYXJ0TWFnbmlmaWNhdGlv
blBhblNjcm9sbFRocmVzaG9sZFpvb21lZE91dCkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
KyAgICB9IGVsc2UgaWYgKFVJQ3VycmVudFVzZXJJbnRlcmZhY2VJZGlvbUlzUGFkKCkpIHsKKyAg
ICAgICAgaWYgKHNjcm9sbERpc3RhbmNlIDwgc21hcnRNYWduaWZpY2F0aW9uUGFuU2Nyb2xsVGhy
ZXNob2xkSVBhZCkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9IGVsc2UgaWYgKHNj
cm9sbERpc3RhbmNlIDwgc21hcnRNYWduaWZpY2F0aW9uUGFuU2Nyb2xsVGhyZXNob2xkSVBob25l
KQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBbbV9zbWFydE1hZ25pZmljYXRpb25TY3Jv
bGxWaWV3IHNldENvbnRlbnRPZmZzZXQ6bmV3Q29udGVudE9mZnNldCBhbmltYXRlZDpZRVNdOwor
ICAgIHJldHVybiB0cnVlOworfQorCit2b2lkIFZpZXdHZXN0dXJlQ29udHJvbGxlcjo6ZGlkQ29s
bGVjdEdlb21ldHJ5Rm9yU21hcnRNYWduaWZpY2F0aW9uR2VzdHVyZShGbG9hdFBvaW50IG9yaWdp
biwgRmxvYXRSZWN0IHRhcmdldFJlY3QsIEZsb2F0UmVjdCB2aXNpYmxlQ29udGVudFJlY3QsIGJv
b2wgaXNSZXBsYWNlZEVsZW1lbnQsIGJvb2wgZnJhbWVIYW5kbGVzTWFnbmlmaWNhdGlvbkdlc3R1
cmUsIGRvdWJsZSB2aWV3cG9ydE1pbmltdW1TY2FsZSwgZG91YmxlIHZpZXdwb3J0TWF4aW11bVNj
YWxlKQoreworICAgIGlmIChmcmFtZUhhbmRsZXNNYWduaWZpY2F0aW9uR2VzdHVyZSkKKyAgICAg
ICAgcmV0dXJuOworCisgICAgZG91YmxlIGN1cnJlbnRTY2FsZUZhY3RvciA9IG1fd2ViUGFnZVBy
b3h5LnBhZ2VTY2FsZUZhY3RvcigpOworCisgICAgaWYgKHRhcmdldFJlY3QuaXNFbXB0eSgpKSB7
CisgICAgICAgIC8vIEZJWE1FOiBJZiB3ZSBkb24ndCB6b29tLCBzZW5kIHRoZSB0YXAgYWxvbmcg
dG8gdGV4dCBzZWxlY3Rpb24gKHNlZSA8cmRhcjovL3Byb2JsZW0vNjgxMDM0ND4pLgorICAgICAg
ICB6b29tVG9DZW50ZXJBdFNjYWxlKG9yaWdpbiwgdmlld3BvcnRNaW5pbXVtU2NhbGUsIG1fc21h
cnRNYWduaWZpY2F0aW9uU2Nyb2xsVmlldy5nZXQoKSk7CisgICAgICAgIHJldHVybjsKKyAgICB9
CisKKyAgICBkb3VibGUgbWF4aW11bVNjYWxlID0gc3RkOjptaW4odmlld3BvcnRNYXhpbXVtU2Nh
bGUsIHNtYXJ0TWFnbmlmaWNhdGlvbk1heGltdW1TY2FsZSk7CisgICAgZG91YmxlIG1pbmltdW1T
Y2FsZSA9IHN0ZDo6bWF4KHZpZXdwb3J0TWluaW11bVNjYWxlLCBzbWFydE1hZ25pZmljYXRpb25N
aW5pbXVtU2NhbGUpOworCisgICAgZG91YmxlIHBhZGRlZEN1cnJlbnRTY2FsZUZhY3RvciA9IG1f
d2ViUGFnZVByb3h5LnBhZ2VTY2FsZUZhY3RvcigpICogKDEgLSBzbWFydE1hZ25pZmljYXRpb25F
bGVtZW50UGFkZGluZyk7CisKKyAgICBkb3VibGUgaG9yaXpvbnRhbFNjYWxlID0gcGFkZGVkQ3Vy
cmVudFNjYWxlRmFjdG9yICogKHZpc2libGVDb250ZW50UmVjdC53aWR0aCgpIC8gdGFyZ2V0UmVj
dC53aWR0aCgpKTsKKyAgICBkb3VibGUgdmVydGljYWxTY2FsZSA9IHBhZGRlZEN1cnJlbnRTY2Fs
ZUZhY3RvciAqICh2aXNpYmxlQ29udGVudFJlY3QuaGVpZ2h0KCkgLyB0YXJnZXRSZWN0LmhlaWdo
dCgpKTsKKworICAgIGhvcml6b250YWxTY2FsZSA9IHN0ZDo6bWluKHN0ZDo6bWF4KGhvcml6b250
YWxTY2FsZSwgbWluaW11bVNjYWxlKSwgbWF4aW11bVNjYWxlKTsKKyAgICB2ZXJ0aWNhbFNjYWxl
ID0gc3RkOjptaW4oc3RkOjptYXgodmVydGljYWxTY2FsZSwgbWluaW11bVNjYWxlKSwgbWF4aW11
bVNjYWxlKTsKKworICAgIC8vIEZvciByZXBsYWNlZCBlbGVtZW50cyBsaWtlIGltYWdlcywgd2Ug
d2FudCB0byBmaXQgdGhlIHdob2xlIGVsZW1lbnQKKyAgICAvLyBpbiB0aGUgdmlldywgc28gc2Nh
bGUgaXQgZG93biBlbm91Z2ggdG8gbWFrZSBib3RoIGRpbWVuc2lvbnMgZml0IGlmIHBvc3NpYmxl
LgorICAgIC8vIEZvciBvdGhlciBlbGVtZW50cywgdHJ5IHRvIGZpdCB0aGVtIGhvcml6b250YWxs
eS4KKyAgICBkb3VibGUgdGFyZ2V0U2NhbGUgPSBpc1JlcGxhY2VkRWxlbWVudCA/IHN0ZDo6bWlu
KGhvcml6b250YWxTY2FsZSwgdmVydGljYWxTY2FsZSkgOiBob3Jpem9udGFsU2NhbGU7CisKKyAg
ICAvLyBGSVhNRTogQ2hlY2sgaWYgdGV4dCBzZWxlY3Rpb24gd2FudHMgdG8gY29uc3VtZSB0aGUg
ZG91YmxlIHRhcCBiZWZvcmUgd2UgYXR0ZW1wdCBtYWduaWZpY2F0aW9uLgorCisgICAgaWYgKHNo
b3VsZFBhblNjcm9sbEZvclNjYWxlKGN1cnJlbnRTY2FsZUZhY3RvciwgdGFyZ2V0U2NhbGUpKSB7
CisgICAgICAgIGlmIChzbWFydE1hZ25pZmljYXRpb25TY3JvbGxUb1RhcmdldCh0YXJnZXRSZWN0
LCBvcmlnaW4pKQorICAgICAgICAgICAgcmV0dXJuOworICAgIH0gZWxzZSBpZiAodGFyZ2V0U2Nh
bGUgIT0gY3VycmVudFNjYWxlRmFjdG9yKSB7CisgICAgICAgIGlmIChzbWFydE1hZ25pZmljYXRp
b25ab29tVG9UYXJnZXQodGFyZ2V0U2NhbGUsIHRhcmdldFJlY3QsIG9yaWdpbikpCisgICAgICAg
ICAgICByZXR1cm47CisgICAgfQorCisgICAgLy8gRklYTUU6IElmIHdlIHN0aWxsIGRvbid0IHpv
b20sIHNlbmQgdGhlIHRhcCBhbG9uZyB0byB0ZXh0IHNlbGVjdGlvbiAoc2VlIDxyZGFyOi8vcHJv
YmxlbS82ODEwMzQ0PikuCisgICAgem9vbVRvQ2VudGVyQXRTY2FsZShvcmlnaW4sIHZpZXdwb3J0
TWluaW11bVNjYWxlLCBtX3NtYXJ0TWFnbmlmaWNhdGlvblNjcm9sbFZpZXcuZ2V0KCkpOworfQor
CiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9tYWMvVmlld0dlc3R1cmVDb250cm9sbGVyLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvbWFjL1ZpZXdHZXN0dXJlQ29udHJvbGxlci5oCmluZGV4IGM2NDljNjEuLjk3YWNlZDUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvVmlld0dlc3R1cmVDb250cm9s
bGVyLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9WaWV3R2VzdHVyZUNvbnRy
b2xsZXIuaApAQCAtMzQsNyArMzQsMTAgQEAKIE9CSkNfQ0xBU1MgQ0FMYXllcjsKIAogI2lmIFBM
QVRGT1JNKElPUykKK09CSkNfQ0xBU1MgVUlHZXN0dXJlUmVjb2duaXplcjsKK09CSkNfQ0xBU1Mg
VUlTY3JvbGxWaWV3OwogT0JKQ19DTEFTUyBVSVZpZXc7CitPQkpDX0NMQVNTIFdLU21hcnRNYWdu
aWZpY2F0aW9uR2VzdHVyZUNvbnRyb2xsZXI7CiBPQkpDX0NMQVNTIFdLU3dpcGVUcmFuc2l0aW9u
Q29udHJvbGxlcjsKIE9CSkNfQ0xBU1MgX1VJVmlld0NvbnRyb2xsZXJUcmFuc2l0aW9uQ29udGV4
dDsKIE9CSkNfQ0xBU1MgX1VJTmF2aWdhdGlvbkludGVyYWN0aXZlVHJhbnNpdGlvbkJhc2U7CkBA
IC01OCw4ICs2MSw4IEBAIHB1YmxpYzoKICAgICAgICAgTm9uZSwKICNpZiAhUExBVEZPUk0oSU9T
KQogICAgICAgICBNYWduaWZpY2F0aW9uLAotICAgICAgICBTbWFydE1hZ25pZmljYXRpb24sCiAj
ZW5kaWYKKyAgICAgICAgU21hcnRNYWduaWZpY2F0aW9uLAogICAgICAgICBTd2lwZQogICAgIH07
CiAgICAgCkBAIC03MywxMSArNzYsMTIgQEAgcHVibGljOgogICAgICAgICBSaWdodAogICAgIH07
CiAgICAgCisgICAgdm9pZCBoYW5kbGVTbWFydE1hZ25pZmljYXRpb25HZXN0dXJlKFdlYkNvcmU6
OkZsb2F0UG9pbnQgb3JpZ2luKTsKKwogI2lmICFQTEFURk9STShJT1MpCiAgICAgZG91YmxlIG1h
Z25pZmljYXRpb24oKSBjb25zdDsKIAogICAgIHZvaWQgaGFuZGxlTWFnbmlmaWNhdGlvbkdlc3R1
cmUoZG91YmxlIHNjYWxlLCBXZWJDb3JlOjpGbG9hdFBvaW50IG9yaWdpbik7Ci0gICAgdm9pZCBo
YW5kbGVTbWFydE1hZ25pZmljYXRpb25HZXN0dXJlKFdlYkNvcmU6OkZsb2F0UG9pbnQgb3JpZ2lu
KTsKIAogICAgIGJvb2wgaGFuZGxlU2Nyb2xsV2hlZWxFdmVudChOU0V2ZW50ICopOwogICAgIHZv
aWQgd2hlZWxFdmVudFdhc05vdEhhbmRsZWRCeVdlYkNvcmUoTlNFdmVudCAqKTsKQEAgLTg4LDYg
KzkyLDggQEAgcHVibGljOgogICAgIHZvaWQgZW5kQWN0aXZlR2VzdHVyZSgpOwogI2Vsc2UKICAg
ICB2b2lkIGluc3RhbGxTd2lwZUhhbmRsZXIoVUlWaWV3ICpnZXN0dXJlUmVjb2duaXplclZpZXcs
IFVJVmlldyAqc3dpcGluZ1ZpZXcpOworICAgIHZvaWQgdW5pbnN0YWxsU3dpcGVIYW5kbGVyKCk7
CisgICAgVUlHZXN0dXJlUmVjb2duaXplciAqaW5zdGFsbFNtYXJ0TWFnbmlmaWNhdGlvbkhhbmRs
ZXIoVUlWaWV3ICp0YXJnZXRWaWV3LCBVSVNjcm9sbFZpZXcgKnNjcm9sbFZpZXcpOwogICAgIGJv
b2wgY2FuU3dpcGVJbkRpcmVjdGlvbihTd2lwZURpcmVjdGlvbik7CiAgICAgdm9pZCBiZWdpblN3
aXBlR2VzdHVyZShfVUlOYXZpZ2F0aW9uSW50ZXJhY3RpdmVUcmFuc2l0aW9uQmFzZSAqLCBTd2lw
ZURpcmVjdGlvbik7CiAgICAgdm9pZCBlbmRTd2lwZUdlc3R1cmUoV2ViQmFja0ZvcndhcmRMaXN0
SXRlbSogdGFyZ2V0SXRlbSwgX1VJVmlld0NvbnRyb2xsZXJUcmFuc2l0aW9uQ29udGV4dCAqLCBi
b29sIGNhbmNlbGxlZCk7CkBAIC0xMDEsMTAgKzEwNywxNCBAQCBwcml2YXRlOgogICAgIHZvaWQg
cmVtb3ZlU3dpcGVTbmFwc2hvdCgpOwogICAgIHZvaWQgc3dpcGVTbmFwc2hvdFdhdGNoZG9nVGlt
ZXJGaXJlZChXZWJDb3JlOjpUaW1lcjxWaWV3R2VzdHVyZUNvbnRyb2xsZXI+Kik7CiAKLSNpZiAh
UExBVEZPUk0oSU9TKQogICAgIC8vIE1lc3NhZ2UgaGFuZGxlcnMuCisgICAgdm9pZCBkaWRDb2xs
ZWN0R2VvbWV0cnlGb3JTbWFydE1hZ25pZmljYXRpb25HZXN0dXJlKFdlYkNvcmU6OkZsb2F0UG9p
bnQgb3JpZ2luLCBXZWJDb3JlOjpGbG9hdFJlY3QgcmVuZGVyUmVjdCwgV2ViQ29yZTo6RmxvYXRS
ZWN0IHZpc2libGVDb250ZW50Qm91bmRzLCBib29sIGlzUmVwbGFjZWRFbGVtZW50LCBib29sIGZy
YW1lSGFuZGxlc01hZ25pZmljYXRpb25HZXN0dXJlLCBkb3VibGUgdmlld3BvcnRNaW5pbXVtU2Nh
bGUsIGRvdWJsZSB2aWV3cG9ydE1heGltdW1TY2FsZSk7CisKKyNpZiBQTEFURk9STShJT1MpCisg
ICAgYm9vbCBzbWFydE1hZ25pZmljYXRpb25ab29tVG9UYXJnZXQoZG91YmxlIG1hZ25pZmljYXRp
b24sIFdlYkNvcmU6OkZsb2F0UmVjdCB0YXJnZXRSZWN0LCBXZWJDb3JlOjpGbG9hdFBvaW50IG9y
aWdpbik7CisgICAgYm9vbCBzbWFydE1hZ25pZmljYXRpb25TY3JvbGxUb1RhcmdldChXZWJDb3Jl
OjpGbG9hdFJlY3QgdGFyZ2V0UmVjdCwgV2ViQ29yZTo6RmxvYXRQb2ludCBvcmlnaW4pOworI2Vs
c2UKICAgICB2b2lkIGRpZENvbGxlY3RHZW9tZXRyeUZvck1hZ25pZmljYXRpb25HZXN0dXJlKFdl
YkNvcmU6OkZsb2F0UmVjdCB2aXNpYmxlQ29udGVudEJvdW5kcywgYm9vbCBmcmFtZUhhbmRsZXNN
YWduaWZpY2F0aW9uR2VzdHVyZSk7Ci0gICAgdm9pZCBkaWRDb2xsZWN0R2VvbWV0cnlGb3JTbWFy
dE1hZ25pZmljYXRpb25HZXN0dXJlKFdlYkNvcmU6OkZsb2F0UG9pbnQgb3JpZ2luLCBXZWJDb3Jl
OjpGbG9hdFJlY3QgcmVuZGVyUmVjdCwgV2ViQ29yZTo6RmxvYXRSZWN0IHZpc2libGVDb250ZW50
Qm91bmRzLCBib29sIGlzUmVwbGFjZWRFbGVtZW50LCBib29sIGZyYW1lSGFuZGxlc01hZ25pZmlj
YXRpb25HZXN0dXJlKTsKICAgICB2b2lkIGRpZEhpdFJlbmRlclRyZWVTaXplVGhyZXNob2xkKCk7
CiAKICAgICB2b2lkIGVuZE1hZ25pZmljYXRpb25HZXN0dXJlKCk7CkBAIC0xNDksNiArMTU5LDkg
QEAgcHJpdmF0ZToKICAgICBSZXRhaW5QdHI8VUlWaWV3PiBtX3NuYXBzaG90VmlldzsKICAgICBS
ZXRhaW5QdHI8VUlWaWV3PiBtX3RyYW5zaXRpb25Db250YWluZXJWaWV3OwogICAgIFJldGFpblB0
cjxXS1N3aXBlVHJhbnNpdGlvbkNvbnRyb2xsZXI+IG1fc3dpcGVJbnRlcmFjdGl2ZVRyYW5zaXRp
b25EZWxlZ2F0ZTsKKyAgICBSZXRhaW5QdHI8V0tTbWFydE1hZ25pZmljYXRpb25HZXN0dXJlQ29u
dHJvbGxlcj4gbV9zbWFydE1hZ25pZmljYXRpb25HZXN0dXJlQ29udHJvbGxlcjsKKyAgICBSZXRh
aW5QdHI8VUlTY3JvbGxWaWV3PiBtX3NtYXJ0TWFnbmlmaWNhdGlvblNjcm9sbFZpZXc7CisgICAg
UmV0YWluUHRyPFVJVmlldz4gbV9zbWFydE1hZ25pZmljYXRpb25UYXJnZXRWaWV3OwogICAgIHVp
bnQ2NF90IG1fdGFyZ2V0UmVuZGVyVHJlZVNpemU7CiAjZW5kaWYKIH07CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1ZpZXdHZXN0dXJlQ29udHJvbGxlci5tZXNzYWdl
cy5pbiBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvVmlld0dlc3R1cmVDb250cm9sbGVy
Lm1lc3NhZ2VzLmluCmluZGV4IGEwYjU4YzAuLjgyOTIzMDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9tYWMvVmlld0dlc3R1cmVDb250cm9sbGVyLm1lc3NhZ2VzLmluCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvVmlld0dlc3R1cmVDb250cm9sbGVyLm1l
c3NhZ2VzLmluCkBAIC0yMSw5ICsyMSwxMSBAQAogIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogCiBtZXNzYWdlcyAt
PiBWaWV3R2VzdHVyZUNvbnRyb2xsZXIgeworICAgIERpZENvbGxlY3RHZW9tZXRyeUZvclNtYXJ0
TWFnbmlmaWNhdGlvbkdlc3R1cmUoV2ViQ29yZTo6RmxvYXRQb2ludCBvcmlnaW4sIFdlYkNvcmU6
OkZsb2F0UmVjdCByZW5kZXJSZWN0LCBXZWJDb3JlOjpGbG9hdFJlY3QgdmlzaWJsZUNvbnRlbnRC
b3VuZHMsIGJvb2wgaXNSZXBsYWNlZEVsZW1lbnQsIGJvb2wgZnJhbWVIYW5kbGVzTWFnbmlmaWNh
dGlvbkdlc3R1cmUsIGRvdWJsZSB2aWV3cG9ydE1pbmltdW1TY2FsZSwgZG91YmxlIHZpZXdwb3J0
TWF4aW11bVNjYWxlKQorCiAjaWYgIVBMQVRGT1JNKElPUykKICAgICBEaWRDb2xsZWN0R2VvbWV0
cnlGb3JNYWduaWZpY2F0aW9uR2VzdHVyZShXZWJDb3JlOjpGbG9hdFJlY3QgdmlzaWJsZUNvbnRl
bnRCb3VuZHMsIGJvb2wgZnJhbWVIYW5kbGVzTWFnbmlmaWNhdGlvbkdlc3R1cmUpCi0gICAgRGlk
Q29sbGVjdEdlb21ldHJ5Rm9yU21hcnRNYWduaWZpY2F0aW9uR2VzdHVyZShXZWJDb3JlOjpGbG9h
dFBvaW50IG9yaWdpbiwgV2ViQ29yZTo6RmxvYXRSZWN0IHJlbmRlclJlY3QsIFdlYkNvcmU6OkZs
b2F0UmVjdCB2aXNpYmxlQ29udGVudEJvdW5kcywgYm9vbCBpc1JlcGxhY2VkRWxlbWVudCwgYm9v
bCBmcmFtZUhhbmRsZXNNYWduaWZpY2F0aW9uR2VzdHVyZSkKKwogICAgIERpZEhpdFJlbmRlclRy
ZWVTaXplVGhyZXNob2xkKCkKICNlbmRpZgogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL21hYy9WaWV3R2VzdHVyZUNvbnRyb2xsZXJNYWMubW0gYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvbWFjL1ZpZXdHZXN0dXJlQ29udHJvbGxlck1hYy5tbQppbmRleCBhMmU0MjFl
Li4xYWExNzU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1ZpZXdH
ZXN0dXJlQ29udHJvbGxlck1hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFj
L1ZpZXdHZXN0dXJlQ29udHJvbGxlck1hYy5tbQpAQCAtMjA1LDEzICsyMDUsMTUgQEAgc3RhdGlj
IGZsb2F0IG1heGltdW1SZWN0YW5nbGVDb21wb25lbnREZWx0YShGbG9hdFJlY3QgYSwgRmxvYXRS
ZWN0IGIpCiAgICAgcmV0dXJuIHN0ZDo6bWF4KGZhYnMoYS54KCkgLSBiLngoKSksIHN0ZDo6bWF4
KGZhYnMoYS55KCkgLSBiLnkoKSksIHN0ZDo6bWF4KGZhYnMoYS53aWR0aCgpIC0gYi53aWR0aCgp
KSwgZmFicyhhLmhlaWdodCgpIC0gYi5oZWlnaHQoKSkpKSk7CiB9CiAKLXZvaWQgVmlld0dlc3R1
cmVDb250cm9sbGVyOjpkaWRDb2xsZWN0R2VvbWV0cnlGb3JTbWFydE1hZ25pZmljYXRpb25HZXN0
dXJlKEZsb2F0UG9pbnQgb3JpZ2luLCBGbG9hdFJlY3QgcmVuZGVyUmVjdCwgRmxvYXRSZWN0IHZp
c2libGVDb250ZW50UmVjdCwgYm9vbCBpc1JlcGxhY2VkRWxlbWVudCwgYm9vbCBmcmFtZUhhbmRs
ZXNNYWduaWZpY2F0aW9uR2VzdHVyZSkKK3ZvaWQgVmlld0dlc3R1cmVDb250cm9sbGVyOjpkaWRD
b2xsZWN0R2VvbWV0cnlGb3JTbWFydE1hZ25pZmljYXRpb25HZXN0dXJlKEZsb2F0UG9pbnQgb3Jp
Z2luLCBGbG9hdFJlY3QgcmVuZGVyUmVjdCwgRmxvYXRSZWN0IHZpc2libGVDb250ZW50UmVjdCwg
Ym9vbCBpc1JlcGxhY2VkRWxlbWVudCwgYm9vbCBmcmFtZUhhbmRsZXNNYWduaWZpY2F0aW9uR2Vz
dHVyZSwgZG91YmxlIHZpZXdwb3J0TWluaW11bVNjYWxlLCBkb3VibGUgdmlld3BvcnRNYXhpbXVt
U2NhbGUpCiB7CiAgICAgaWYgKGZyYW1lSGFuZGxlc01hZ25pZmljYXRpb25HZXN0dXJlKQogICAg
ICAgICByZXR1cm47CiAKICAgICBkb3VibGUgY3VycmVudFNjYWxlRmFjdG9yID0gbV93ZWJQYWdl
UHJveHkucGFnZVNjYWxlRmFjdG9yKCk7CiAKKyAgICAvLyBGSVhNRTogQWRvcHQgKGJ5IHNoYXJp
bmcpIHRoZSBWaWV3R2VzdHVyZUNvbnRyb2xsZXJJT1MgaGV1cmlzdGljcy4KKwogICAgIEZsb2F0
UmVjdCB1bnNjYWxlZFRhcmdldFJlY3QgPSByZW5kZXJSZWN0OwogICAgIHVuc2NhbGVkVGFyZ2V0
UmVjdC5zY2FsZSgxIC8gY3VycmVudFNjYWxlRmFjdG9yKTsKICAgICB1bnNjYWxlZFRhcmdldFJl
Y3QuaW5mbGF0ZVgodW5zY2FsZWRUYXJnZXRSZWN0LndpZHRoKCkgKiBzbWFydE1hZ25pZmljYXRp
b25FbGVtZW50UGFkZGluZyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYlBhZ2UvVmlld0dlc3R1cmVHZW9tZXRyeUNvbGxlY3Rvci5jcHAgYi9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvVmlld0dlc3R1cmVHZW9tZXRyeUNvbGxlY3Rvci5jcHAKaW5k
ZXggZGQ0ZGJiMi4uODI3MjFkNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJQYWdlL1ZpZXdHZXN0dXJlR2VvbWV0cnlDb2xsZWN0b3IuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9WaWV3R2VzdHVyZUdlb21ldHJ5Q29sbGVjdG9yLmNw
cApAQCAtMjYsMTQgKzI2LDEzIEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiVmll
d0dlc3R1cmVHZW9tZXRyeUNvbGxlY3Rvci5oIgogCi0jaWYgIVBMQVRGT1JNKElPUykKLQogI2lu
Y2x1ZGUgIlZpZXdHZXN0dXJlQ29udHJvbGxlck1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiVmlld0dl
c3R1cmVHZW9tZXRyeUNvbGxlY3Rvck1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiV2ViQ29yZUFyZ3Vt
ZW50Q29kZXJzLmgiCiAjaW5jbHVkZSAiV2ViRnJhbWUuaCIKICNpbmNsdWRlICJXZWJQYWdlLmgi
CiAjaW5jbHVkZSAiV2ViUHJvY2Vzcy5oIgorI2luY2x1ZGUgPFdlYkNvcmUvRnJhbWUuaD4KICNp
bmNsdWRlIDxXZWJDb3JlL0ZyYW1lVmlldy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvSGl0VGVzdFJl
c3VsdC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUmVuZGVyVmlldy5oPgpAQCAtNDQsOCArNDMsMTAg
QEAgbmFtZXNwYWNlIFdlYktpdCB7CiAKIFZpZXdHZXN0dXJlR2VvbWV0cnlDb2xsZWN0b3I6OlZp
ZXdHZXN0dXJlR2VvbWV0cnlDb2xsZWN0b3IoV2ViUGFnZSYgd2ViUGFnZSkKICAgICA6IG1fd2Vi
UGFnZSh3ZWJQYWdlKQorI2lmIFBMQVRGT1JNKE1BQykKICAgICAsIG1fcmVuZGVyVHJlZVNpemVO
b3RpZmljYXRpb25UaHJlc2hvbGQoMCkKICAgICAsIG1fcmVuZGVyVHJlZVNpemVOb3RpZmljYXRp
b25UaW1lcihSdW5Mb29wOjptYWluKCksIHRoaXMsICZWaWV3R2VzdHVyZUdlb21ldHJ5Q29sbGVj
dG9yOjpyZW5kZXJUcmVlU2l6ZU5vdGlmaWNhdGlvblRpbWVyRmlyZWQpCisjZW5kaWYKIHsKICAg
ICBXZWJQcm9jZXNzOjpzaGFyZWQoKS5hZGRNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OlZpZXdH
ZXN0dXJlR2VvbWV0cnlDb2xsZWN0b3I6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgbV93ZWJQYWdl
LnBhZ2VJRCgpLCAqdGhpcyk7CiB9CkBAIC01NSwzMCArNTYsNDIgQEAgVmlld0dlc3R1cmVHZW9t
ZXRyeUNvbGxlY3Rvcjo6flZpZXdHZXN0dXJlR2VvbWV0cnlDb2xsZWN0b3IoKQogICAgIFdlYlBy
b2Nlc3M6OnNoYXJlZCgpLnJlbW92ZU1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6Vmlld0dlc3R1
cmVHZW9tZXRyeUNvbGxlY3Rvcjo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtX3dlYlBhZ2UucGFn
ZUlEKCkpOwogfQogCi12b2lkIFZpZXdHZXN0dXJlR2VvbWV0cnlDb2xsZWN0b3I6OmNvbGxlY3RH
ZW9tZXRyeUZvck1hZ25pZmljYXRpb25HZXN0dXJlKCkKLXsKLSAgICBGbG9hdFJlY3QgdmlzaWJs
ZUNvbnRlbnRSZWN0ID0gbV93ZWJQYWdlLm1haW5GcmFtZVZpZXcoKS0+dmlzaWJsZUNvbnRlbnRS
ZWN0SW5jbHVkaW5nU2Nyb2xsYmFycygpOwotICAgIGJvb2wgZnJhbWVIYW5kbGVzTWFnbmlmaWNh
dGlvbkdlc3R1cmUgPSBtX3dlYlBhZ2UubWFpbldlYkZyYW1lKCktPmhhbmRsZXNQYWdlU2NhbGVH
ZXN0dXJlKCk7Ci0gICAgbV93ZWJQYWdlLnNlbmQoTWVzc2FnZXM6OlZpZXdHZXN0dXJlQ29udHJv
bGxlcjo6RGlkQ29sbGVjdEdlb21ldHJ5Rm9yTWFnbmlmaWNhdGlvbkdlc3R1cmUodmlzaWJsZUNv
bnRlbnRSZWN0LCBmcmFtZUhhbmRsZXNNYWduaWZpY2F0aW9uR2VzdHVyZSkpOwotfQotCiB2b2lk
IFZpZXdHZXN0dXJlR2VvbWV0cnlDb2xsZWN0b3I6OmNvbGxlY3RHZW9tZXRyeUZvclNtYXJ0TWFn
bmlmaWNhdGlvbkdlc3R1cmUoRmxvYXRQb2ludCBvcmlnaW4pCiB7CiAgICAgRmxvYXRSZWN0IHZp
c2libGVDb250ZW50UmVjdCA9IG1fd2ViUGFnZS5tYWluRnJhbWVWaWV3KCktPnZpc2libGVDb250
ZW50UmVjdEluY2x1ZGluZ1Njcm9sbGJhcnMoKTsKICAgICBib29sIGZyYW1lSGFuZGxlc01hZ25p
ZmljYXRpb25HZXN0dXJlID0gbV93ZWJQYWdlLm1haW5XZWJGcmFtZSgpLT5oYW5kbGVzUGFnZVNj
YWxlR2VzdHVyZSgpOwogCi0gICAgRmxvYXRQb2ludCBzY3JvbGxlZE9yaWdpbiA9IG9yaWdpbjsK
LSAgICBzY3JvbGxlZE9yaWdpbi5tb3ZlQnkobV93ZWJQYWdlLm1haW5GcmFtZVZpZXcoKS0+c2Ny
b2xsUG9zaXRpb24oKSk7Ci0KICAgICBIaXRUZXN0UmVxdWVzdCByZXF1ZXN0KEhpdFRlc3RSZXF1
ZXN0OjpSZWFkT25seSB8IEhpdFRlc3RSZXF1ZXN0OjpBY3RpdmUgfCBIaXRUZXN0UmVxdWVzdDo6
RGlzYWxsb3dTaGFkb3dDb250ZW50KTsKLSAgICBIaXRUZXN0UmVzdWx0IGhpdFRlc3RSZXN1bHQg
PSBIaXRUZXN0UmVzdWx0KHNjcm9sbGVkT3JpZ2luKTsKKyAgICBJbnRQb2ludCBvcmlnaW5JbkNv
bnRlbnRzU3BhY2UgPSBtX3dlYlBhZ2UubWFpbkZyYW1lVmlldygpLT53aW5kb3dUb0NvbnRlbnRz
KHJvdW5kZWRJbnRQb2ludChvcmlnaW4pKTsKKyAgICBIaXRUZXN0UmVzdWx0IGhpdFRlc3RSZXN1
bHQgPSBIaXRUZXN0UmVzdWx0KG9yaWdpbkluQ29udGVudHNTcGFjZSk7CisKICAgICBtX3dlYlBh
Z2UubWFpbkZyYW1lVmlldygpLT5yZW5kZXJWaWV3KCktPmhpdFRlc3QocmVxdWVzdCwgaGl0VGVz
dFJlc3VsdCk7CiAKLSAgICBpZiAoaGl0VGVzdFJlc3VsdC5pbm5lck5vZGUoKSkgeworICAgIGlm
IChOb2RlICpub2RlID0gaGl0VGVzdFJlc3VsdC5pbm5lck5vZGUoKSkgewogICAgICAgICBib29s
IGlzUmVwbGFjZWQ7Ci0gICAgICAgIEZsb2F0UmVjdCByZW5kZXJSZWN0ID0gaGl0VGVzdFJlc3Vs
dC5pbm5lck5vZGUoKS0+cmVuZGVyUmVjdCgmaXNSZXBsYWNlZCk7Ci0gICAgICAgIG1fd2ViUGFn
ZS5zZW5kKE1lc3NhZ2VzOjpWaWV3R2VzdHVyZUNvbnRyb2xsZXI6OkRpZENvbGxlY3RHZW9tZXRy
eUZvclNtYXJ0TWFnbmlmaWNhdGlvbkdlc3R1cmUob3JpZ2luLCByZW5kZXJSZWN0LCB2aXNpYmxl
Q29udGVudFJlY3QsIGlzUmVwbGFjZWQsIGZyYW1lSGFuZGxlc01hZ25pZmljYXRpb25HZXN0dXJl
KSk7CisgICAgICAgIEZsb2F0UmVjdCByZW5kZXJSZWN0ID0gbm9kZS0+cmVuZGVyUmVjdCgmaXNS
ZXBsYWNlZCk7CisKKyNpZiBQTEFURk9STShNQUMpCisgICAgICAgIGRvdWJsZSB2aWV3cG9ydE1p
bmltdW1TY2FsZSA9IDA7CisgICAgICAgIGRvdWJsZSB2aWV3cG9ydE1heGltdW1TY2FsZSA9IHN0
ZDo6bnVtZXJpY19saW1pdHM8ZG91YmxlPjo6bWF4KCk7CisjZWxzZQorICAgICAgICBkb3VibGUg
dmlld3BvcnRNaW5pbXVtU2NhbGUgPSBtX3dlYlBhZ2UubWluaW11bVBhZ2VTY2FsZUZhY3Rvcigp
OworICAgICAgICBkb3VibGUgdmlld3BvcnRNYXhpbXVtU2NhbGUgPSBtX3dlYlBhZ2UubWF4aW11
bVBhZ2VTY2FsZUZhY3RvcigpOworI2VuZGlmCisKKyAgICAgICAgbV93ZWJQYWdlLnNlbmQoTWVz
c2FnZXM6OlZpZXdHZXN0dXJlQ29udHJvbGxlcjo6RGlkQ29sbGVjdEdlb21ldHJ5Rm9yU21hcnRN
YWduaWZpY2F0aW9uR2VzdHVyZShvcmlnaW4sIHJlbmRlclJlY3QsIHZpc2libGVDb250ZW50UmVj
dCwgaXNSZXBsYWNlZCwgZnJhbWVIYW5kbGVzTWFnbmlmaWNhdGlvbkdlc3R1cmUsIHZpZXdwb3J0
TWluaW11bVNjYWxlLCB2aWV3cG9ydE1heGltdW1TY2FsZSkpOworICAgICAgICByZXR1cm47CiAg
ICAgfQorCisgICAgbV93ZWJQYWdlLnNlbmQoTWVzc2FnZXM6OlZpZXdHZXN0dXJlQ29udHJvbGxl
cjo6RGlkQ29sbGVjdEdlb21ldHJ5Rm9yU21hcnRNYWduaWZpY2F0aW9uR2VzdHVyZShGbG9hdFBv
aW50KCksIEZsb2F0UmVjdCgpLCBGbG9hdFJlY3QoKSwgZmFsc2UsIGZyYW1lSGFuZGxlc01hZ25p
ZmljYXRpb25HZXN0dXJlLCAwLCAwKSk7Cit9CisKKyNpZiBQTEFURk9STShNQUMpCit2b2lkIFZp
ZXdHZXN0dXJlR2VvbWV0cnlDb2xsZWN0b3I6OmNvbGxlY3RHZW9tZXRyeUZvck1hZ25pZmljYXRp
b25HZXN0dXJlKCkKK3sKKyAgICBGbG9hdFJlY3QgdmlzaWJsZUNvbnRlbnRSZWN0ID0gbV93ZWJQ
YWdlLm1haW5GcmFtZVZpZXcoKS0+dmlzaWJsZUNvbnRlbnRSZWN0SW5jbHVkaW5nU2Nyb2xsYmFy
cygpOworICAgIGJvb2wgZnJhbWVIYW5kbGVzTWFnbmlmaWNhdGlvbkdlc3R1cmUgPSBtX3dlYlBh
Z2UubWFpbldlYkZyYW1lKCktPmhhbmRsZXNQYWdlU2NhbGVHZXN0dXJlKCk7CisgICAgbV93ZWJQ
YWdlLnNlbmQoTWVzc2FnZXM6OlZpZXdHZXN0dXJlQ29udHJvbGxlcjo6RGlkQ29sbGVjdEdlb21l
dHJ5Rm9yTWFnbmlmaWNhdGlvbkdlc3R1cmUodmlzaWJsZUNvbnRlbnRSZWN0LCBmcmFtZUhhbmRs
ZXNNYWduaWZpY2F0aW9uR2VzdHVyZSkpOwogfQogCiB2b2lkIFZpZXdHZXN0dXJlR2VvbWV0cnlD
b2xsZWN0b3I6Om1haW5GcmFtZURpZExheW91dCgpCkBAIC05Myw3ICsxMDYsNyBAQCB2b2lkIFZp
ZXdHZXN0dXJlR2VvbWV0cnlDb2xsZWN0b3I6OnJlbmRlclRyZWVTaXplTm90aWZpY2F0aW9uVGlt
ZXJGaXJlZCgpCiB7CiAgICAgbV93ZWJQYWdlLnNlbmQoTWVzc2FnZXM6OlZpZXdHZXN0dXJlQ29u
dHJvbGxlcjo6RGlkSGl0UmVuZGVyVHJlZVNpemVUaHJlc2hvbGQoKSk7CiB9CisjZW5kaWYKIAog
fSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKLSNlbmRpZiAvLyAhUExBVEZPUk0oSU9TKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1ZpZXdHZXN0dXJlR2VvbWV0
cnlDb2xsZWN0b3IuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9WaWV3R2Vz
dHVyZUdlb21ldHJ5Q29sbGVjdG9yLmgKaW5kZXggYTMwODhlYS4uZTM4NmNmNyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1ZpZXdHZXN0dXJlR2VvbWV0cnlD
b2xsZWN0b3IuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvVmlld0dl
c3R1cmVHZW9tZXRyeUNvbGxlY3Rvci5oCkBAIC0yNiw4ICsyNiw2IEBACiAjaWZuZGVmIFZpZXdH
ZXN0dXJlR2VvbWV0cnlDb2xsZWN0b3JfaAogI2RlZmluZSBWaWV3R2VzdHVyZUdlb21ldHJ5Q29s
bGVjdG9yX2gKIAotI2lmICFQTEFURk9STShJT1MpCi0KICNpbmNsdWRlICJNZXNzYWdlUmVjZWl2
ZXIuaCIKICNpbmNsdWRlIDx3dGYvUnVuTG9vcC5oPgogCkBAIC01MSwyMCArNDksMjMgQEAgcHJp
dmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9u
KiwgSVBDOjpNZXNzYWdlRGVjb2RlciYpIG92ZXJyaWRlOwogCiAgICAgLy8gTWVzc2FnZSBoYW5k
bGVycy4KLSAgICB2b2lkIGNvbGxlY3RHZW9tZXRyeUZvck1hZ25pZmljYXRpb25HZXN0dXJlKCk7
CiAgICAgdm9pZCBjb2xsZWN0R2VvbWV0cnlGb3JTbWFydE1hZ25pZmljYXRpb25HZXN0dXJlKFdl
YkNvcmU6OkZsb2F0UG9pbnQgb3JpZ2luKTsKKworI2lmIFBMQVRGT1JNKE1BQykKKyAgICB2b2lk
IGNvbGxlY3RHZW9tZXRyeUZvck1hZ25pZmljYXRpb25HZXN0dXJlKCk7CiAgICAgdm9pZCBzZXRS
ZW5kZXJUcmVlU2l6ZU5vdGlmaWNhdGlvblRocmVzaG9sZCh1aW50NjRfdCBzaXplKSB7IG1fcmVu
ZGVyVHJlZVNpemVOb3RpZmljYXRpb25UaHJlc2hvbGQgPSBzaXplOyB9CiAKICAgICB2b2lkIHJl
bmRlclRyZWVTaXplTm90aWZpY2F0aW9uVGltZXJGaXJlZCgpOworI2VuZGlmCiAKICAgICBXZWJQ
YWdlJiBtX3dlYlBhZ2U7CiAKKyNpZiBQTEFURk9STShNQUMpCiAgICAgdWludDY0X3QgbV9yZW5k
ZXJUcmVlU2l6ZU5vdGlmaWNhdGlvblRocmVzaG9sZDsKICAgICBSdW5Mb29wOjpUaW1lcjxWaWV3
R2VzdHVyZUdlb21ldHJ5Q29sbGVjdG9yPiBtX3JlbmRlclRyZWVTaXplTm90aWZpY2F0aW9uVGlt
ZXI7CisjZW5kaWYKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAogCi0jZW5kaWYgLy8gIVBM
QVRGT1JNKElPUykKLQogI2VuZGlmIC8vIFZpZXdHZXN0dXJlR2VvbWV0cnlDb2xsZWN0b3IKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9WaWV3R2VzdHVyZUdl
b21ldHJ5Q29sbGVjdG9yLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJQYWdlL1ZpZXdHZXN0dXJlR2VvbWV0cnlDb2xsZWN0b3IubWVzc2FnZXMuaW4KaW5kZXggZWZk
MDUxZi4uMDQ3MjA5YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1ZpZXdHZXN0dXJlR2VvbWV0cnlDb2xsZWN0b3IubWVzc2FnZXMuaW4KKysrIGIvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1ZpZXdHZXN0dXJlR2VvbWV0cnlDb2xsZWN0b3Iu
bWVzc2FnZXMuaW4KQEAgLTIwLDE0ICsyMCwxMiBAQAogIyBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQog
IyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgogCi0jaWYgIVBMQVRGT1JNKElPUykKLQogbWVzc2FnZXMgLT4gVmlld0dl
c3R1cmVHZW9tZXRyeUNvbGxlY3RvciB7CisgICAgQ29sbGVjdEdlb21ldHJ5Rm9yU21hcnRNYWdu
aWZpY2F0aW9uR2VzdHVyZShXZWJDb3JlOjpGbG9hdFBvaW50IG9yaWdpbikKIAotQ29sbGVjdEdl
b21ldHJ5Rm9yTWFnbmlmaWNhdGlvbkdlc3R1cmUoKQotQ29sbGVjdEdlb21ldHJ5Rm9yU21hcnRN
YWduaWZpY2F0aW9uR2VzdHVyZShXZWJDb3JlOjpGbG9hdFBvaW50IG9yaWdpbikKLQotU2V0UmVu
ZGVyVHJlZVNpemVOb3RpZmljYXRpb25UaHJlc2hvbGQodWludDY0X3Qgc2l6ZSkKLX0KKyNpZiAh
UExBVEZPUk0oSU9TKQorICAgIENvbGxlY3RHZW9tZXRyeUZvck1hZ25pZmljYXRpb25HZXN0dXJl
KCkKIAorICAgIFNldFJlbmRlclRyZWVTaXplTm90aWZpY2F0aW9uVGhyZXNob2xkKHVpbnQ2NF90
IHNpemUpCiAjZW5kaWYKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJQYWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJQYWdlLmNwcAppbmRleCBiMjUzYzA3Li4wN2IzYzIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCkBAIC0yNTEsOSArMjUxLDcgQEAgV2ViUGFn
ZTo6V2ViUGFnZSh1aW50NjRfdCBwYWdlSUQsIGNvbnN0IFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRl
cnMmIHBhcmFtZXRlcnMpCiAgICAgLCBtX3BkZlBsdWdpbkVuYWJsZWQoZmFsc2UpCiAgICAgLCBt
X2hhc0NhY2hlZFdpbmRvd0ZyYW1lKGZhbHNlKQogICAgICwgbV9rZXlib2FyZEV2ZW50QmVpbmdJ
bnRlcnByZXRlZCgwKQotI2lmICFQTEFURk9STShJT1MpCiAgICAgLCBtX3ZpZXdHZXN0dXJlR2Vv
bWV0cnlDb2xsZWN0b3IoKnRoaXMpCi0jZW5kaWYKICNlbGlmIFBMQVRGT1JNKEdUSykgJiYgSEFW
RShBQ0NFU1NJQklMSVRZKQogICAgICwgbV9hY2Nlc3NpYmlsaXR5T2JqZWN0KDApCiAjZW5kaWYK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgg
Yi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCmluZGV4IGFhNGFj
MmMuLjU0Zjg2ZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFn
ZS9XZWJQYWdlLmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBh
Z2UuaApAQCAtOTcyLDkgKzk3Miw3IEBAIHByaXZhdGU6CiAKICAgICBXZWJDb3JlOjpLZXlib2Fy
ZEV2ZW50KiBtX2tleWJvYXJkRXZlbnRCZWluZ0ludGVycHJldGVkOwogCi0jaWYgIVBMQVRGT1JN
KElPUykKICAgICBWaWV3R2VzdHVyZUdlb21ldHJ5Q29sbGVjdG9yIG1fdmlld0dlc3R1cmVHZW9t
ZXRyeUNvbGxlY3RvcjsKLSNlbmRpZgogCiAjZWxpZiBIQVZFKEFDQ0VTU0lCSUxJVFkpICYmIChQ
TEFURk9STShHVEspIHx8IFBMQVRGT1JNKEVGTCkpCiAgICAgR1JlZlB0cjxXZWJQYWdlQWNjZXNz
aWJpbGl0eU9iamVjdD4gbV9hY2Nlc3NpYmlsaXR5T2JqZWN0Owo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>224904</attachid>
            <date>2014-02-21 14:03:23 -0800</date>
            <delta_ts>2014-02-26 12:17:26 -0800</delta_ts>
            <desc>zomgrebase</desc>
            <filename>doubletap.diff</filename>
            <type>text/plain</type>
            <size>45391</size>
            <attacher name="Tim Horton">thorton</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA0ZjU5ZGFjLi4wMDJjNDY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQg
QEAKKzIwMTQtMDItMjEgIFRpbSBIb3J0b24gIDx0aW1vdGh5X2hvcnRvbkBhcHBsZS5jb20+CisK
KyAgICAgICAgV2ViS2l0MiBWaWV3IEdlc3R1cmVzIChTbWFydCBNYWduaWZpY2F0aW9uKTogU3Vw
cG9ydCBmb3IgaU9TCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xMjkxNDYKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzE2MDMyNjY4PgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViQ29yZS5leHAuaW46
CisgICAgICAgIEFkZCBhbiBleHBvcnQuCisKIDIwMTQtMDItMjEgIEVyaWMgQ2FybHNvbiAgPGVy
aWMuY2FybHNvbkBhcHBsZS5jb20+CiAKICAgICAgICAgRml4IFRpbWVSYW5nZXMgbGF5ZXJpbmcg
dmlvbGF0aW9ucwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4gYi9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgppbmRleCA4NDBjMTYzLi40MDc4NWE5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLmV4cC5pbgpAQCAtMTg0Myw2ICsxODQzLDcgQEAgX19aTks3V2ViQ29yZTlGbG9h
dFF1YWQxMWJvdW5kaW5nQm94RXYKIF9fWk5LN1dlYkNvcmU5RmxvYXRSZWN0MTBpbnRlcnNlY3Rz
RVJLUzBfCiBfX1pOSzdXZWJDb3JlOUZsb2F0UmVjdGN2NkNHUmVjdEV2CiBfX1pOSzdXZWJDb3Jl
OUZsb2F0U2l6ZTZpc1plcm9FdgorX19aTks3V2ViQ29yZTlGbG9hdFNpemUxNGRpYWdvbmFsTGVu
Z3RoRXYKIF9fWk5LN1dlYkNvcmU5RnJhbWVUcmVlMTBjaGlsZENvdW50RXYKIF9fWk5LN1dlYkNv
cmU5RnJhbWVUcmVlMTJ0cmF2ZXJzZU5leHRFUEtOU181RnJhbWVFCiBfX1pOSzdXZWJDb3JlOUZy
YW1lVHJlZTE0aXNEZXNjZW5kYW50T2ZFUEtOU181RnJhbWVFCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggY2E4MGQx
Zi4uZjEyNDAzZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDg1IEBACisyMDE0LTAyLTIxICBUaW0g
SG9ydG9uICA8dGltb3RoeV9ob3J0b25AYXBwbGUuY29tPgorCisgICAgICAgIFdlYktpdDIgVmll
dyBHZXN0dXJlcyAoU21hcnQgTWFnbmlmaWNhdGlvbik6IFN1cHBvcnQgZm9yIGlPUworICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTI5MTQ2CisgICAgICAg
IDxyZGFyOi8vcHJvYmxlbS8xNjAzMjY2OD4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tOgor
ICAgICAgICAoLVtXS1dlYlZpZXcgaW5pdFdpdGhGcmFtZTpjb25maWd1cmF0aW9uOl0pOgorICAg
ICAgICBBbHdheXMgaGF2ZSBhIFZpZXdHZXN0dXJlQ29udHJvbGxlciwgdG8gaGFuZGxlIGRvdWJs
ZS10YXAgZ2VzdHVyZXMuCisKKyAgICAgICAgKC1bV0tXZWJWaWV3IGNvbnRlbnRWaWV3OmRpZENv
bW1pdExheWVyVHJlZTpXZWJLaXQ6Ol0pOgorICAgICAgICBEb24ndCByZXBsYWNlIHRoZSB6b29t
IHNjYWxlIGlmIHdlJ3JlIGN1cnJlbnRseSBhbmltYXRpbmcuCisKKyAgICAgICAgKC1bV0tXZWJW
aWV3IHNldEFsbG93c0JhY2tGb3J3YXJkTmF2aWdhdGlvbkdlc3R1cmVzOl0pOgorICAgICAgICBJ
bnN0YWxsIGFuZCB1bmluc3RhbGwgdGhlIHN3aXBlIGhhbmRsZXIgaW5zdGVhZCBvZiBkZXN0cm95
aW5nIHRoZSBnZXN0dXJlIGNvbnRyb2xsZXIuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2lv
cy9XS0NvbnRlbnRWaWV3Lm1tOgorICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IF9zZXREb3VibGVU
YXBHZXN0dXJlUmVjb2duaXplcjpdKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2lvcy9XS0Nv
bnRlbnRWaWV3SW50ZXJuYWwuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2lvcy9XS0ludGVy
YWN0aW9uVmlldy5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvaW9zL1dLSW50ZXJhY3Rpb25W
aWV3Lm1tOgorICAgICAgICAoLVtXS0ludGVyYWN0aW9uVmlldyBpbml0V2l0aEZyYW1lOl0pOgor
ICAgICAgICAoLVtXS0ludGVyYWN0aW9uVmlldyBkZWFsbG9jXSk6CisgICAgICAgICgtW1dLSW50
ZXJhY3Rpb25WaWV3IGdlc3R1cmVSZWNvZ25pemVyU2hvdWxkQmVnaW46XSk6CisgICAgICAgICgt
W1dLSW50ZXJhY3Rpb25WaWV3IF9zZXREb3VibGVUYXBHZXN0dXJlUmVjb2duaXplcjpdKToKKyAg
ICAgICAgUmVtb3ZlIGV4aXN0aW5nIHVudXNlZCBkb3VibGUtdGFwIGdlc3R1cmUgcmVjb2duaXpl
ciBjb2RlLgorICAgICAgICBQbHVtYiB0aGUgZG91YmxlLXRhcCBnZXN0dXJlIHJlY29nbml6ZXIg
ZG93biBmcm9tIFZpZXdHZXN0dXJlQ29udHJvbGxlciwKKyAgICAgICAgc28gd2UgY2FuIG1ha2Ug
dGhlIHNpbmdsZSB0YXAgZ2VzdHVyZSByZWNvZ25pemVyIGJsb2NrIG9uIGl0IGZhaWxpbmcuCisK
KyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2lvcy9XS1ZpZXdJT1MubW06CisgICAgICAgICgtW1dL
VmlldyBzZXRBbGxvd3NCYWNrRm9yd2FyZE5hdmlnYXRpb25HZXN0dXJlczpdKToKKyAgICAgICAg
SW5zdGFsbCBhbmQgdW5pbnN0YWxsIHRoZSBzd2lwZSBoYW5kbGVyIGluc3RlYWQgb2YgZGVzdHJv
eWluZyB0aGUgZ2VzdHVyZSBjb250cm9sbGVyLgorCisgICAgICAgICgtW1dLVmlldyBjb250ZW50
VmlldzpkaWRDb21taXRMYXllclRyZWU6XSk6CisgICAgICAgIERvbid0IHJlcGxhY2UgdGhlIHpv
b20gc2NhbGUgaWYgd2UncmUgY3VycmVudGx5IGFuaW1hdGluZy4KKworICAgICAgICAoLVtXS1Zp
ZXcgX2NvbW1vbkluaXRpYWxpemF0aW9uV2l0aENvbnRleHRSZWY6cGFnZUdyb3VwUmVmOnJlbGF0
ZWRUb1BhZ2U6XSk6CisgICAgICAgIEFsd2F5cyBoYXZlIGEgVmlld0dlc3R1cmVDb250cm9sbGVy
LCB0byBoYW5kbGUgZG91YmxlLXRhcCBnZXN0dXJlcy4KKworICAgICAgICAqIFVJUHJvY2Vzcy9p
b3MvVmlld0dlc3R1cmVDb250cm9sbGVySU9TLm1tOgorICAgICAgICAoLVtXS1N3aXBlVHJhbnNp
dGlvbkNvbnRyb2xsZXIgaW5pdFdpdGhWaWV3R2VzdHVyZUNvbnRyb2xsZXI6V2ViS2l0OjpnZXN0
dXJlUmVjb2duaXplclZpZXc6XSk6CisgICAgICAgICgtW1dLU21hcnRNYWduaWZpY2F0aW9uR2Vz
dHVyZUNvbnRyb2xsZXIgaW5pdFdpdGhWaWV3R2VzdHVyZUNvbnRyb2xsZXI6V2ViS2l0OjpnZXN0
dXJlUmVjb2duaXplclZpZXc6XSk6CisgICAgICAgICgtW1dLU21hcnRNYWduaWZpY2F0aW9uR2Vz
dHVyZUNvbnRyb2xsZXIgZG91YmxlVGFwUmVjb2duaXplZDpdKToKKyAgICAgICAgKC1bV0tTbWFy
dE1hZ25pZmljYXRpb25HZXN0dXJlQ29udHJvbGxlciBkb3VibGVUYXBSZWNvZ25pemVyXSk6Cisg
ICAgICAgIChXZWJLaXQ6OlZpZXdHZXN0dXJlQ29udHJvbGxlcjo6Vmlld0dlc3R1cmVDb250cm9s
bGVyKToKKyAgICAgICAgKFdlYktpdDo6Vmlld0dlc3R1cmVDb250cm9sbGVyOjp+Vmlld0dlc3R1
cmVDb250cm9sbGVyKToKKyAgICAgICAgKFdlYktpdDo6Vmlld0dlc3R1cmVDb250cm9sbGVyOjp1
bmluc3RhbGxTd2lwZUhhbmRsZXIpOgorICAgICAgICAoV2ViS2l0OjpWaWV3R2VzdHVyZUNvbnRy
b2xsZXI6Omluc3RhbGxTbWFydE1hZ25pZmljYXRpb25IYW5kbGVyKToKKyAgICAgICAgKFdlYktp
dDo6Vmlld0dlc3R1cmVDb250cm9sbGVyOjpoYW5kbGVTbWFydE1hZ25pZmljYXRpb25HZXN0dXJl
KToKKyAgICAgICAgKFdlYktpdDo6c2hvdWxkUGFuU2Nyb2xsRm9yU2NhbGUpOgorICAgICAgICAo
V2ViS2l0OjpkdXJhdGlvbkZvclpvb21Ub1NjYWxlKToKKyAgICAgICAgKFdlYktpdDo6em9vbVRv
Q2VudGVyQXRTY2FsZSk6CisgICAgICAgIChXZWJLaXQ6OlZpZXdHZXN0dXJlQ29udHJvbGxlcjo6
c21hcnRNYWduaWZpY2F0aW9uWm9vbVRvVGFyZ2V0KToKKyAgICAgICAgKFdlYktpdDo6Y29uc3Ry
YWluQ29udGVudE9mZnNldCk6CisgICAgICAgIChXZWJLaXQ6OlZpZXdHZXN0dXJlQ29udHJvbGxl
cjo6c21hcnRNYWduaWZpY2F0aW9uU2Nyb2xsVG9UYXJnZXQpOgorICAgICAgICAoV2ViS2l0OjpW
aWV3R2VzdHVyZUNvbnRyb2xsZXI6OmRpZENvbGxlY3RHZW9tZXRyeUZvclNtYXJ0TWFnbmlmaWNh
dGlvbkdlc3R1cmUpOgorICAgICAgICBBZGQgYW4gaW1wbGVtZW50YXRpb24gb2YgZG91YmxlLXRh
cCBmb3IgaU9TLgorICAgICAgICBDdXJyZW50bHkgdmVyeSBsaXR0bGUgY29kZSBpcyBzaGFyZWQg
d2l0aCBNYWMgKGp1c3QgdGhlIFdlYlByb2Nlc3Mgc2lkZSksCisgICAgICAgIGJ1dCB0aGUgYW1v
dW50IG9mIHNoYXJlZCBsb2dpYyBzaG91bGQgaW5jcmVhc2UgYXMgdGltZSBnb2VzIG9uLgorICAg
ICAgICBUaGlzIHNob3VsZCBtYXRjaCBXZWJLaXQxIGJlaGF2aW9yIGZhaXJseSBjbG9zZWx5Lgor
CisgICAgICAgICogVUlQcm9jZXNzL21hYy9WaWV3R2VzdHVyZUNvbnRyb2xsZXIuaDoKKyAgICAg
ICAgKiBVSVByb2Nlc3MvbWFjL1ZpZXdHZXN0dXJlQ29udHJvbGxlci5tZXNzYWdlcy5pbjoKKyAg
ICAgICAgKiBVSVByb2Nlc3MvbWFjL1ZpZXdHZXN0dXJlQ29udHJvbGxlck1hYy5tbToKKyAgICAg
ICAgKFdlYktpdDo6Vmlld0dlc3R1cmVDb250cm9sbGVyOjpkaWRDb2xsZWN0R2VvbWV0cnlGb3JT
bWFydE1hZ25pZmljYXRpb25HZXN0dXJlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2Uv
Vmlld0dlc3R1cmVHZW9tZXRyeUNvbGxlY3Rvci5jcHA6CisgICAgICAgIEluY2x1ZGUgdGhlIHBh
cnRzIG9mIFZpZXdHZXN0dXJlR2VvbWV0cnlDb2xsZWN0b3IgbmVlZGVkIG9uIGlPUy4KKworICAg
ICAgICAoV2ViS2l0OjpWaWV3R2VzdHVyZUdlb21ldHJ5Q29sbGVjdG9yOjpWaWV3R2VzdHVyZUdl
b21ldHJ5Q29sbGVjdG9yKToKKyAgICAgICAgKFdlYktpdDo6Vmlld0dlc3R1cmVHZW9tZXRyeUNv
bGxlY3Rvcjo6Y29sbGVjdEdlb21ldHJ5Rm9yU21hcnRNYWduaWZpY2F0aW9uR2VzdHVyZSk6Cisg
ICAgICAgIFVzZSB3aW5kb3dUb0NvbnRlbnRzIGluc3RlYWQgb2YgbWFudWFsbHkgYXBwbHlpbmcg
dGhlIHNjcm9sbCwgYmVjYXVzZSBpdCBkb2VzIHRoZSByaWdodCB0aGluZyBvbiBpT1MuCisKKyAg
ICAgICAgKFdlYktpdDo6Vmlld0dlc3R1cmVHZW9tZXRyeUNvbGxlY3Rvcjo6Y29sbGVjdEdlb21l
dHJ5Rm9yTWFnbmlmaWNhdGlvbkdlc3R1cmUpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFn
ZS9WaWV3R2VzdHVyZUdlb21ldHJ5Q29sbGVjdG9yLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9X
ZWJQYWdlL1ZpZXdHZXN0dXJlR2VvbWV0cnlDb2xsZWN0b3IubWVzc2FnZXMuaW46CisgICAgICAg
ICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQ
YWdlOjpXZWJQYWdlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oOgor
ICAgICAgICBLZWVwIGEgdmlld0dlc3R1cmVHZW9tZXRyeUNvbGxlY3RvciBvbiBhbGwgUExBVEZP
Uk0oQ09DT0EpIHBvcnRzLgorCiAyMDE0LTAyLTIxICBFbnJpY2EgQ2FzdWNjaSAgPGVucmljYUBh
cHBsZS5jb20+CiAKICAgICAgICAgU3VwcG9ydCBXZWJTZWxlY3Rpb25zIGluIFdLMiBvbiBpT1Mu
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmll
dy5tbSBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCmlu
ZGV4IGYyNDkzN2MuLmUwY2YxNTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvQ29jb2EvV0tXZWJWaWV3Lm1tCkBAIC0xNjYsNiArMTY2LDEzIEBACiAKICAgICBfcGFnZS0+
c2V0VUlDbGllbnQoc3RkOjptYWtlX3VuaXF1ZTxXZWJLaXQ6OlVJQ2xpZW50PihzZWxmKSk7CiAK
KyNpZiBQTEFURk9STShJT1MpCisgICAgX2dlc3R1cmVDb250cm9sbGVyID0gc3RkOjptYWtlX3Vu
aXF1ZTxXZWJLaXQ6OlZpZXdHZXN0dXJlQ29udHJvbGxlcj4oKl9wYWdlKTsKKworICAgIFVJR2Vz
dHVyZVJlY29nbml6ZXIgKnJlY29nbml6ZXIgPSBfZ2VzdHVyZUNvbnRyb2xsZXItPmluc3RhbGxT
bWFydE1hZ25pZmljYXRpb25IYW5kbGVyKF9jb250ZW50Vmlldy5nZXQoKSwgX3Njcm9sbFZpZXcu
Z2V0KCkpOworICAgIFtfY29udGVudFZpZXcgX3NldERvdWJsZVRhcEdlc3R1cmVSZWNvZ25pemVy
OnJlY29nbml6ZXJdOworI2VuZGlmCisKICAgICByZXR1cm4gc2VsZjsKIH0KIApAQCAtMzIyLDcg
KzMyOSw3IEBACiAgICAgW19zY3JvbGxWaWV3IHNldE1pbmltdW1ab29tU2NhbGU6bGF5ZXJUcmVl
VHJhbnNhY3Rpb24ubWluaW11bVNjYWxlRmFjdG9yKCldOwogICAgIFtfc2Nyb2xsVmlldyBzZXRN
YXhpbXVtWm9vbVNjYWxlOmxheWVyVHJlZVRyYW5zYWN0aW9uLm1heGltdW1TY2FsZUZhY3Rvcigp
XTsKICAgICBbX3Njcm9sbFZpZXcgc2V0Wm9vbUVuYWJsZWQ6bGF5ZXJUcmVlVHJhbnNhY3Rpb24u
YWxsb3dzVXNlclNjYWxpbmcoKV07Ci0gICAgaWYgKCFbX3Njcm9sbFZpZXcgaXNab29taW5nXSAm
JiAhW19zY3JvbGxWaWV3IGlzWm9vbUJvdW5jaW5nXSkKKyAgICBpZiAoIVtfc2Nyb2xsVmlldyBp
c1pvb21pbmddICYmICFbX3Njcm9sbFZpZXcgaXNab29tQm91bmNpbmddICYmICFbX3Njcm9sbFZp
ZXcgX2lzQW5pbWF0aW5nWm9vbV0pCiAgICAgICAgIFtfc2Nyb2xsVmlldyBzZXRab29tU2NhbGU6
bGF5ZXJUcmVlVHJhbnNhY3Rpb24ucGFnZVNjYWxlRmFjdG9yKCldOwogCiAgICAgaWYgKF9nZXN0
dXJlQ29udHJvbGxlcikKQEAgLTQ1OSwxNSArNDY2LDEzIEBACiAKICAgICBfYWxsb3dzQmFja0Zv
cndhcmROYXZpZ2F0aW9uR2VzdHVyZXMgPSBhbGxvd3NCYWNrRm9yd2FyZE5hdmlnYXRpb25HZXN0
dXJlczsKIAotICAgIGlmIChhbGxvd3NCYWNrRm9yd2FyZE5hdmlnYXRpb25HZXN0dXJlcykgewot
ICAgICAgICBpZiAoIV9nZXN0dXJlQ29udHJvbGxlcikgewotICAgICAgICAgICAgX2dlc3R1cmVD
b250cm9sbGVyID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJLaXQ6OlZpZXdHZXN0dXJlQ29udHJvbGxl
cj4oKl9wYWdlKTsKLSAgICAgICAgICAgIF9nZXN0dXJlQ29udHJvbGxlci0+aW5zdGFsbFN3aXBl
SGFuZGxlcihzZWxmLCBbc2VsZiBzY3JvbGxWaWV3XSk7Ci0gICAgICAgIH0KLSAgICB9IGVsc2UK
LSAgICAgICAgX2dlc3R1cmVDb250cm9sbGVyID0gbnVsbHB0cjsKKyAgICBpZiAoYWxsb3dzQmFj
a0ZvcndhcmROYXZpZ2F0aW9uR2VzdHVyZXMpCisgICAgICAgIF9nZXN0dXJlQ29udHJvbGxlci0+
aW5zdGFsbFN3aXBlSGFuZGxlcihzZWxmLCBbc2VsZiBzY3JvbGxWaWV3XSk7CisgICAgZWxzZQor
ICAgICAgICBfZ2VzdHVyZUNvbnRyb2xsZXItPnVuaW5zdGFsbFN3aXBlSGFuZGxlcigpOwogCiAg
ICAgX3BhZ2UtPnNldFNob3VsZFJlY29yZE5hdmlnYXRpb25TbmFwc2hvdHMoYWxsb3dzQmFja0Zv
cndhcmROYXZpZ2F0aW9uR2VzdHVyZXMpOworCiB9CiAKIC0gKEJPT0wpYWxsb3dzQmFja0Zvcndh
cmROYXZpZ2F0aW9uR2VzdHVyZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvaW9zL1dLQ29udGVudFZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L2lvcy9XS0NvbnRlbnRWaWV3Lm1tCmluZGV4IGNkMTBjNDIuLmE2MTM5MGMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvaW9zL1dLQ29udGVudFZpZXcubW0KKysrIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9pb3MvV0tDb250ZW50Vmlldy5tbQpAQCAtMzI1
LDQgKzMyNSw5IEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7CiAgICAgcmV0dXJuIFtfZGVsZWdh
dGUgdGFrZVZpZXdTbmFwc2hvdEZvckNvbnRlbnRWaWV3OnNlbGZdOwogfQogCistICh2b2lkKV9z
ZXREb3VibGVUYXBHZXN0dXJlUmVjb2duaXplcjooVUlHZXN0dXJlUmVjb2duaXplciAqKXJlY29n
bml6ZXIKK3sKKyAgICBbX2ludGVyYWN0aW9uVmlldyBfc2V0RG91YmxlVGFwR2VzdHVyZVJlY29n
bml6ZXI6cmVjb2duaXplcl07Cit9CisKIEBlbmQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvaW9zL1dLQ29udGVudFZpZXdJbnRlcm5hbC5oIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9pb3MvV0tDb250ZW50Vmlld0ludGVybmFsLmgKaW5kZXggYTYxMThj
NS4uYWQ0Nzc2YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9pb3Mv
V0tDb250ZW50Vmlld0ludGVybmFsLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9pb3MvV0tDb250ZW50Vmlld0ludGVybmFsLmgKQEAgLTc2LDQgKzc2LDYgQEAgc3RydWN0IElu
dGVyYWN0aW9uSW5mb3JtYXRpb25BdFBvc2l0aW9uOwogCiAtIChSZXRhaW5QdHI8Q0dJbWFnZVJl
Zj4pX3Rha2VWaWV3U25hcHNob3Q7CiAKKy0gKHZvaWQpX3NldERvdWJsZVRhcEdlc3R1cmVSZWNv
Z25pemVyOihVSUdlc3R1cmVSZWNvZ25pemVyICopcmVjb2duaXplcjsKKwogQGVuZApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9pb3MvV0tJbnRlcmFjdGlvblZpZXcu
aCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvaW9zL1dLSW50ZXJhY3Rpb25WaWV3LmgK
aW5kZXggNjZmN2FlYS4uZmU5Y2RkZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9pb3MvV0tJbnRlcmFjdGlvblZpZXcuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL2lvcy9XS0ludGVyYWN0aW9uVmlldy5oCkBAIC03MSw1ICs3MSw4IEBAIHN0cnVj
dCBJbnRlcmFjdGlvbkluZm9ybWF0aW9uQXRQb3NpdGlvbjsKIC0gKHZvaWQpX3dpbGxTdGFydFVz
ZXJUcmlnZ2VyZWRTY3JvbGxpbmdPclpvb21pbmc7CiAtICh2b2lkKV9kaWRFbmRTY3JvbGxpbmdP
clpvb21pbmc7CiAtICh2b2lkKV9kaWRVcGRhdGVCbG9ja1NlbGVjdGlvbldpdGhUb3VjaDooV2Vi
S2l0OjpXS1NlbGVjdGlvblRvdWNoKXRvdWNoIHdpdGhGbGFnczooV2ViS2l0OjpXS1NlbGVjdGlv
bkZsYWdzKWZsYWdzIGdyb3dUaHJlc2hvbGQ6KENHRmxvYXQpZ3Jvd1RocmVzaG9sZCBzaHJpbmtU
aHJlc2hvbGQ6KENHRmxvYXQpc2hyaW5rVGhyZXNob2xkOworCistICh2b2lkKV9zZXREb3VibGVU
YXBHZXN0dXJlUmVjb2duaXplcjooVUlHZXN0dXJlUmVjb2duaXplciAqKXJlY29nbml6ZXI7CisK
IEBwcm9wZXJ0eSAocmVhZG9ubHksIG5vbmF0b21pYykgV2ViS2l0OjpJbnRlcmFjdGlvbkluZm9y
bWF0aW9uQXRQb3NpdGlvbiBwb3NpdGlvbkluZm9ybWF0aW9uOwogQGVuZApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9pb3MvV0tJbnRlcmFjdGlvblZpZXcubW0gYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2lvcy9XS0ludGVyYWN0aW9uVmlldy5tbQppbmRl
eCA2N2U2ZmZlLi44ZGE2ZjI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL2lvcy9XS0ludGVyYWN0aW9uVmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL2lvcy9XS0ludGVyYWN0aW9uVmlldy5tbQpAQCAtMTU0LDkgKzE1NCwxMSBAQCBzdHJ1
Y3QgV0tBdXRvQ29ycmVjdGlvbkRhdGF7CiAgICAgUmV0YWluUHRyPFVJVGFwR2VzdHVyZVJlY29n
bml6ZXI+IF9zaW5nbGVUYXBHZXN0dXJlUmVjb2duaXplcjsKICAgICBSZXRhaW5QdHI8X1VJV2Vi
SGlnaGxpZ2h0TG9uZ1ByZXNzR2VzdHVyZVJlY29nbml6ZXI+IF9oaWdobGlnaHRMb25nUHJlc3NH
ZXN0dXJlUmVjb2duaXplcjsKICAgICBSZXRhaW5QdHI8VUlMb25nUHJlc3NHZXN0dXJlUmVjb2du
aXplcj4gX2xvbmdQcmVzc0dlc3R1cmVSZWNvZ25pemVyOwotICAgIFJldGFpblB0cjxVSVRhcEdl
c3R1cmVSZWNvZ25pemVyPiBfZG91YmxlVGFwR2VzdHVyZVJlY29nbml6ZXI7CiAgICAgUmV0YWlu
UHRyPFVJVGFwR2VzdHVyZVJlY29nbml6ZXI+IF90d29GaW5nZXJEb3VibGVUYXBHZXN0dXJlUmVj
b2duaXplcjsKICAgICBSZXRhaW5QdHI8VUlQYW5HZXN0dXJlUmVjb2duaXplcj4gX3R3b0Zpbmdl
clBhbkdlc3R1cmVSZWNvZ25pemVyOworI2lmbmRlZiBBU1NFUlRfRElTQUJMRUQKKyAgICBib29s
IF9oYXNTZXREb3VibGVUYXBHZXN0dXJlUmVjb2duaXplcjsKKyNlbmRpZgogCiAgICAgUmV0YWlu
UHRyPFVJV0tUZXh0SW50ZXJhY3Rpb25Bc3Npc3RhbnQ+IF90ZXh0U2VsZWN0aW9uQXNzaXN0YW50
OwogICAgIFJldGFpblB0cjxVSVdLU2VsZWN0aW9uQXNzaXN0YW50PiBfd2ViU2VsZWN0aW9uQXNz
aXN0YW50OwpAQCAtMTk0LDEyICsxOTYsNiBAQCBzdHJ1Y3QgV0tBdXRvQ29ycmVjdGlvbkRhdGF7
CiAgICAgICAgIFtfc2luZ2xlVGFwR2VzdHVyZVJlY29nbml6ZXIgc2V0RGVsZWdhdGU6c2VsZl07
CiAgICAgICAgIFtzZWxmIGFkZEdlc3R1cmVSZWNvZ25pemVyOl9zaW5nbGVUYXBHZXN0dXJlUmVj
b2duaXplci5nZXQoKV07CiAKLSAgICAgICAgX2RvdWJsZVRhcEdlc3R1cmVSZWNvZ25pemVyID0g
YWRvcHROUyhbW1VJVGFwR2VzdHVyZVJlY29nbml6ZXIgYWxsb2NdIGluaXRXaXRoVGFyZ2V0OnNl
bGYgYWN0aW9uOkBzZWxlY3RvcihfZG91YmxlVGFwUmVjb2duaXplZDopXSk7Ci0gICAgICAgIFtf
ZG91YmxlVGFwR2VzdHVyZVJlY29nbml6ZXIgc2V0TnVtYmVyT2ZUYXBzUmVxdWlyZWQ6Ml07Ci0g
ICAgICAgIFtfZG91YmxlVGFwR2VzdHVyZVJlY29nbml6ZXIgc2V0RGVsZWdhdGU6c2VsZl07Ci0g
ICAgICAgIFtzZWxmIGFkZEdlc3R1cmVSZWNvZ25pemVyOl9kb3VibGVUYXBHZXN0dXJlUmVjb2du
aXplci5nZXQoKV07Ci0gICAgICAgIFtfc2luZ2xlVGFwR2VzdHVyZVJlY29nbml6ZXIgcmVxdWly
ZU90aGVyR2VzdHVyZVRvRmFpbDpfZG91YmxlVGFwR2VzdHVyZVJlY29nbml6ZXIuZ2V0KCldOwot
CiAgICAgICAgIF9oaWdobGlnaHRMb25nUHJlc3NHZXN0dXJlUmVjb2duaXplciA9IGFkb3B0TlMo
W1tfVUlXZWJIaWdobGlnaHRMb25nUHJlc3NHZXN0dXJlUmVjb2duaXplciBhbGxvY10gaW5pdFdp
dGhUYXJnZXQ6c2VsZiBhY3Rpb246QHNlbGVjdG9yKF9oaWdobGlnaHRMb25nUHJlc3NSZWNvZ25p
emVkOildKTsKICAgICAgICAgW19oaWdobGlnaHRMb25nUHJlc3NHZXN0dXJlUmVjb2duaXplciBz
ZXREZWxheTpoaWdobGlnaHREZWxheV07CiAgICAgICAgIFtfaGlnaGxpZ2h0TG9uZ1ByZXNzR2Vz
dHVyZVJlY29nbml6ZXIgc2V0RGVsZWdhdGU6c2VsZl07CkBAIC0yMzUsNyArMjMxLDYgQEAgc3Ry
dWN0IFdLQXV0b0NvcnJlY3Rpb25EYXRhewogICAgIF9hY3Rpb25TaGVldEFzc2lzdGFudCA9IG5p
bDsKICAgICBbX3RvdWNoRXZlbnRHZXN0dXJlUmVjb2duaXplciBzZXREZWxlZ2F0ZTpuaWxdOwog
ICAgIFtfc2luZ2xlVGFwR2VzdHVyZVJlY29nbml6ZXIgc2V0RGVsZWdhdGU6bmlsXTsKLSAgICBb
X2RvdWJsZVRhcEdlc3R1cmVSZWNvZ25pemVyIHNldERlbGVnYXRlOm5pbF07CiAgICAgW19oaWdo
bGlnaHRMb25nUHJlc3NHZXN0dXJlUmVjb2duaXplciBzZXREZWxlZ2F0ZTpuaWxdOwogICAgIFtf
bG9uZ1ByZXNzR2VzdHVyZVJlY29nbml6ZXIgc2V0RGVsZWdhdGU6bmlsXTsKICAgICBbX3R3b0Zp
bmdlclBhbkdlc3R1cmVSZWNvZ25pemVyIHNldERlbGVnYXRlOm5pbF07CkBAIC01MDAsNyArNDk1
LDYgQEAgc3RhdGljIGlubGluZSBib29sIGlzU2FtZVBhaXIoVUlHZXN0dXJlUmVjb2duaXplciAq
YSwgVUlHZXN0dXJlUmVjb2duaXplciAqYiwgVUkKICAgICBDR1BvaW50IHBvaW50ID0gW2dlc3R1
cmVSZWNvZ25pemVyIGxvY2F0aW9uSW5WaWV3OnNlbGZdOwogCiAgICAgaWYgKGdlc3R1cmVSZWNv
Z25pemVyID09IF9oaWdobGlnaHRMb25nUHJlc3NHZXN0dXJlUmVjb2duaXplcgotICAgICAgICB8
fCBnZXN0dXJlUmVjb2duaXplciA9PSBfZG91YmxlVGFwR2VzdHVyZVJlY29nbml6ZXIKICAgICAg
ICAgfHwgZ2VzdHVyZVJlY29nbml6ZXIgPT0gX3R3b0ZpbmdlckRvdWJsZVRhcEdlc3R1cmVSZWNv
Z25pemVyCiAgICAgICAgIHx8IGdlc3R1cmVSZWNvZ25pemVyID09IF9zaW5nbGVUYXBHZXN0dXJl
UmVjb2duaXplcikgewogCkBAIC02NDMsMTEgKzYzNyw2IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBp
c1NhbWVQYWlyKFVJR2VzdHVyZVJlY29nbml6ZXIgKmEsIFVJR2VzdHVyZVJlY29nbml6ZXIgKmIs
IFVJCiAgICAgW3NlbGYgX2F0dGVtcHRDbGlja0F0TG9jYXRpb246W2dlc3R1cmVSZWNvZ25pemVy
IGxvY2F0aW9uXV07CiB9CiAKLS0gKHZvaWQpX2RvdWJsZVRhcFJlY29nbml6ZWQ6KFVJVGFwR2Vz
dHVyZVJlY29nbml6ZXIgKilnZXN0dXJlUmVjb2duaXplcgotewotICAgIC8vIEZJWE1FOiBBZGQg
aW1wbGVtZW50YXRpb24uCi19Ci0KIC0gKHZvaWQpX3R3b0ZpbmdlckRvdWJsZVRhcFJlY29nbml6
ZWQ6KFVJVGFwR2VzdHVyZVJlY29nbml6ZXIgKilnZXN0dXJlUmVjb2duaXplcgogewogICAgIC8v
IEZJWE1FOiBBZGQgaW1wbGVtZW50YXRpb24uCkBAIC03MjQsNiArNzEzLDE2IEBAIHN0YXRpYyBp
bmxpbmUgYm9vbCBpc1NhbWVQYWlyKFVJR2VzdHVyZVJlY29nbml6ZXIgKmEsIFVJR2VzdHVyZVJl
Y29nbml6ZXIgKmIsIFVJCiAgICAgW190ZXh0U2VsZWN0aW9uQXNzaXN0YW50IGRpZEVuZFNjcm9s
bGluZ092ZXJmbG93XTsKIH0KIAorLSAodm9pZClfc2V0RG91YmxlVGFwR2VzdHVyZVJlY29nbml6
ZXI6KFVJR2VzdHVyZVJlY29nbml6ZXIgKilyZWNvZ25pemVyCit7CisjaWZuZGVmIEFTU0VSVF9E
SVNBQkxFRAorICAgIEFTU0VSVCghX2hhc1NldERvdWJsZVRhcEdlc3R1cmVSZWNvZ25pemVyKTsK
KyAgICBfaGFzU2V0RG91YmxlVGFwR2VzdHVyZVJlY29nbml6ZXIgPSB0cnVlOworI2VuZGlmCisK
KyAgICBbX3NpbmdsZVRhcEdlc3R1cmVSZWNvZ25pemVyIHJlcXVpcmVPdGhlckdlc3R1cmVUb0Zh
aWw6cmVjb2duaXplcl07Cit9CisKIC0gKFVJVmlldyAqKWlucHV0QWNjZXNzb3J5Vmlldwogewog
ICAgIGlmICghX2lzRWRpdGFibGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL2lvcy9XS1ZpZXdJT1MubW0gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2lv
cy9XS1ZpZXdJT1MubW0KaW5kZXggODI5MTk5ZS4uZWIxZjdlZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9pb3MvV0tWaWV3SU9TLm1tCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvaW9zL1dLVmlld0lPUy5tbQpAQCAtMzAsNyArMzAsNyBAQAogI2lt
cG9ydCAiVmlld0dlc3R1cmVDb250cm9sbGVyLmgiCiAjaW1wb3J0ICJXZWJQYWdlUHJveHkuaCIK
ICNpbXBvcnQgIldLQnJvd3NpbmdDb250ZXh0R3JvdXBQcml2YXRlLmgiCi0jaW1wb3J0ICJXS0Nv
bnRlbnRWaWV3LmgiCisjaW1wb3J0ICJXS0NvbnRlbnRWaWV3SW50ZXJuYWwuaCIKICNpbXBvcnQg
IldLUHJvY2Vzc0dyb3VwUHJpdmF0ZS5oIgogI2ltcG9ydCAiV0tTY3JvbGxWaWV3LmgiCiAjaW1w
b3J0ICJXS0FQSUNhc3QuaCIKQEAgLTEyOCwxOCArMTI4LDEzIEBAIHVzaW5nIG5hbWVzcGFjZSBX
ZWJLaXQ7CiAgICAgICAgIHJldHVybjsKIAogICAgIF9hbGxvd3NCYWNrRm9yd2FyZE5hdmlnYXRp
b25HZXN0dXJlcyA9IGFsbG93c0JhY2tGb3J3YXJkTmF2aWdhdGlvbkdlc3R1cmVzOwotICAgIAot
ICAgIFdlYlBhZ2VQcm94eSAqd2ViUGFnZVByb3h5ID0gdG9JbXBsKFtfY29udGVudFZpZXcgX3Bh
Z2VSZWZdKTsKLSAgICAKLSAgICBpZiAoYWxsb3dzQmFja0ZvcndhcmROYXZpZ2F0aW9uR2VzdHVy
ZXMpIHsKLSAgICAgICAgaWYgKCFfZ2VzdHVyZUNvbnRyb2xsZXIpIHsKLSAgICAgICAgICAgIF9n
ZXN0dXJlQ29udHJvbGxlciA9IHN0ZDo6bWFrZV91bmlxdWU8Vmlld0dlc3R1cmVDb250cm9sbGVy
Pigqd2ViUGFnZVByb3h5KTsKLSAgICAgICAgICAgIF9nZXN0dXJlQ29udHJvbGxlci0+aW5zdGFs
bFN3aXBlSGFuZGxlcihzZWxmLCBbc2VsZiBzY3JvbGxWaWV3XSk7Ci0gICAgICAgIH0KLSAgICB9
IGVsc2UKLSAgICAgICAgX2dlc3R1cmVDb250cm9sbGVyID0gbnVsbHB0cjsKLSAgICAKLSAgICB3
ZWJQYWdlUHJveHktPnNldFNob3VsZFJlY29yZE5hdmlnYXRpb25TbmFwc2hvdHMoYWxsb3dzQmFj
a0ZvcndhcmROYXZpZ2F0aW9uR2VzdHVyZXMpOworCisgICAgaWYgKGFsbG93c0JhY2tGb3J3YXJk
TmF2aWdhdGlvbkdlc3R1cmVzKQorICAgICAgICBfZ2VzdHVyZUNvbnRyb2xsZXItPmluc3RhbGxT
d2lwZUhhbmRsZXIoc2VsZiwgW3NlbGYgc2Nyb2xsVmlld10pOworICAgIGVsc2UKKyAgICAgICAg
X2dlc3R1cmVDb250cm9sbGVyLT51bmluc3RhbGxTd2lwZUhhbmRsZXIoKTsKKworICAgIHRvSW1w
bChbX2NvbnRlbnRWaWV3IF9wYWdlUmVmXSktPnNldFNob3VsZFJlY29yZE5hdmlnYXRpb25TbmFw
c2hvdHMoYWxsb3dzQmFja0ZvcndhcmROYXZpZ2F0aW9uR2VzdHVyZXMpOwogfQogCiAtIChCT09M
KWFsbG93c0JhY2tGb3J3YXJkTmF2aWdhdGlvbkdlc3R1cmVzCkBAIC0xNTksNyArMTU0LDcgQEAg
dXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKICAgICBbX3Njcm9sbFZpZXcgc2V0TWluaW11bVpvb21T
Y2FsZTpsYXllclRyZWVUcmFuc2FjdGlvbi5taW5pbXVtU2NhbGVGYWN0b3IoKV07CiAgICAgW19z
Y3JvbGxWaWV3IHNldE1heGltdW1ab29tU2NhbGU6bGF5ZXJUcmVlVHJhbnNhY3Rpb24ubWF4aW11
bVNjYWxlRmFjdG9yKCldOwogICAgIFtfc2Nyb2xsVmlldyBzZXRab29tRW5hYmxlZDpsYXllclRy
ZWVUcmFuc2FjdGlvbi5hbGxvd3NVc2VyU2NhbGluZygpXTsKLSAgICBpZiAoIVtfc2Nyb2xsVmll
dyBpc1pvb21pbmddICYmICFbX3Njcm9sbFZpZXcgaXNab29tQm91bmNpbmddKQorICAgIGlmICgh
W19zY3JvbGxWaWV3IGlzWm9vbWluZ10gJiYgIVtfc2Nyb2xsVmlldyBpc1pvb21Cb3VuY2luZ10g
JiYgIVtfc2Nyb2xsVmlldyBfaXNBbmltYXRpbmdab29tXSkKICAgICAgICAgW19zY3JvbGxWaWV3
IHNldFpvb21TY2FsZTpsYXllclRyZWVUcmFuc2FjdGlvbi5wYWdlU2NhbGVGYWN0b3IoKV07CiAg
ICAgCiAgICAgaWYgKF9nZXN0dXJlQ29udHJvbGxlcikKQEAgLTI2Myw2ICsyNTgsMTIgQEAgdXNp
bmcgbmFtZXNwYWNlIFdlYktpdDsKICAgICBbY2VudGVyIGFkZE9ic2VydmVyOnNlbGYgc2VsZWN0
b3I6QHNlbGVjdG9yKF9rZXlib2FyZERpZENoYW5nZUZyYW1lOikgbmFtZTpVSUtleWJvYXJkRGlk
Q2hhbmdlRnJhbWVOb3RpZmljYXRpb24gb2JqZWN0Om5pbF07CiAgICAgW2NlbnRlciBhZGRPYnNl
cnZlcjpzZWxmIHNlbGVjdG9yOkBzZWxlY3Rvcihfa2V5Ym9hcmRXaWxsU2hvdzopIG5hbWU6VUlL
ZXlib2FyZFdpbGxTaG93Tm90aWZpY2F0aW9uIG9iamVjdDpuaWxdOwogICAgIFtjZW50ZXIgYWRk
T2JzZXJ2ZXI6c2VsZiBzZWxlY3RvcjpAc2VsZWN0b3IoX2tleWJvYXJkV2lsbEhpZGU6KSBuYW1l
OlVJS2V5Ym9hcmRXaWxsSGlkZU5vdGlmaWNhdGlvbiBvYmplY3Q6bmlsXTsKKworICAgIFdlYlBh
Z2VQcm94eSAqd2ViUGFnZVByb3h5ID0gdG9JbXBsKFtfY29udGVudFZpZXcgX3BhZ2VSZWZdKTsK
KyAgICBfZ2VzdHVyZUNvbnRyb2xsZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFZpZXdHZXN0dXJlQ29u
dHJvbGxlcj4oKndlYlBhZ2VQcm94eSk7CisKKyAgICBVSUdlc3R1cmVSZWNvZ25pemVyICpyZWNv
Z25pemVyID0gX2dlc3R1cmVDb250cm9sbGVyLT5pbnN0YWxsU21hcnRNYWduaWZpY2F0aW9uSGFu
ZGxlcihfY29udGVudFZpZXcuZ2V0KCksIF9zY3JvbGxWaWV3LmdldCgpKTsKKyAgICBbX2NvbnRl
bnRWaWV3IF9zZXREb3VibGVUYXBHZXN0dXJlUmVjb2duaXplcjpyZWNvZ25pemVyXTsKIH0KIAog
LSAodm9pZClfZnJhbWVPckJvdW5kc0NoYW5nZWQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9pb3MvVmlld0dlc3R1cmVDb250cm9sbGVySU9TLm1tIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL2lvcy9WaWV3R2VzdHVyZUNvbnRyb2xsZXJJT1MubW0KaW5kZXggMmUwM2Iw
MS4uN2U3YjI0MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9WaWV3
R2VzdHVyZUNvbnRyb2xsZXJJT1MubW0KKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lv
cy9WaWV3R2VzdHVyZUNvbnRyb2xsZXJJT1MubW0KQEAgLTM1LDcgKzM1LDEwIEBACiAjaW1wb3J0
ICJXZWJQYWdlUHJveHkuaCIKICNpbXBvcnQgIldlYlByb2Nlc3NQcm94eS5oIgogI2ltcG9ydCA8
UXVhcnR6Q29yZS9RdWFydHpDb3JlLmg+CisjaW1wb3J0IDxVSUtpdC9VSURldmljZV9Qcml2YXRl
Lmg+CisjaW1wb3J0IDxVSUtpdC9VSUtpdC5oPgogI2ltcG9ydCA8VUlLaXQvVUlTY3JlZW5FZGdl
UGFuR2VzdHVyZVJlY29nbml6ZXIuaD4KKyNpbXBvcnQgPFVJS2l0L1VJU2Nyb2xsVmlld19Qcml2
YXRlLmg+CiAjaW1wb3J0IDxVSUtpdC9VSVZpZXdDb250cm9sbGVyVHJhbnNpdGlvbmluZ19Qcml2
YXRlLmg+CiAjaW1wb3J0IDxVSUtpdC9VSVdlYlRvdWNoRXZlbnRzR2VzdHVyZVJlY29nbml6ZXIu
aD4KICNpbXBvcnQgPFVJS2l0L19VSU5hdmlnYXRpb25JbnRlcmFjdGl2ZVRyYW5zaXRpb24uaD4K
QEAgLTQ4LDYgKzUxLDE5IEBACiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCitzdGF0aWMg
Y29uc3QgQ0dGbG9hdCBzbWFydE1hZ25pZmljYXRpb25QYW5TY3JvbGxUaHJlc2hvbGRab29tZWRP
dXQgPSA2MDsKK3N0YXRpYyBjb25zdCBDR0Zsb2F0IHNtYXJ0TWFnbmlmaWNhdGlvblBhblNjcm9s
bFRocmVzaG9sZElQaG9uZSA9IDEwMDsKK3N0YXRpYyBjb25zdCBDR0Zsb2F0IHNtYXJ0TWFnbmlm
aWNhdGlvblBhblNjcm9sbFRocmVzaG9sZElQYWQgPSAxNTA7CitzdGF0aWMgY29uc3QgQ0dGbG9h
dCBzbWFydE1hZ25pZmljYXRpb25FbGVtZW50UGFkZGluZyA9IDAuMDU7CisKK3N0YXRpYyBjb25z
dCBmbG9hdCBzbWFydE1hZ25pZmljYXRpb25TY2FsZURlbHRhVGhyZXNob2xkRm9yUGFuU2Nyb2xs
ID0gMC4wMjsKKworc3RhdGljIGNvbnN0IGRvdWJsZSBzbWFydE1hZ25pZmljYXRpb25NYXhpbXVt
U2NhbGUgPSAxLjY7CitzdGF0aWMgY29uc3QgZG91YmxlIHNtYXJ0TWFnbmlmaWNhdGlvbk1pbmlt
dW1TY2FsZSA9IDA7CisKK3N0YXRpYyBjb25zdCBmbG9hdCBzd2lwZVNuYXBzaG90UmVtb3ZhbFJl
bmRlclRyZWVTaXplVGFyZ2V0RnJhY3Rpb24gPSAwLjU7CitzdGF0aWMgY29uc3Qgc3RkOjpjaHJv
bm86OnNlY29uZHMgc3dpcGVTbmFwc2hvdFJlbW92YWxXYXRjaGRvZ0R1cmF0aW9uID0gM19zOwor
CiBAaW50ZXJmYWNlIFdLU3dpcGVUcmFuc2l0aW9uQ29udHJvbGxlciA6IE5TT2JqZWN0IDxfVUlO
YXZpZ2F0aW9uSW50ZXJhY3RpdmVUcmFuc2l0aW9uQmFzZURlbGVnYXRlPgogLSAoaW5zdGFuY2V0
eXBlKWluaXRXaXRoVmlld0dlc3R1cmVDb250cm9sbGVyOihXZWJLaXQ6OlZpZXdHZXN0dXJlQ29u
dHJvbGxlciopZ2VzdHVyZUNvbnRyb2xsZXIgZ2VzdHVyZVJlY29nbml6ZXJWaWV3OihVSVZpZXcg
KilnZXN0dXJlUmVjb2duaXplclZpZXc7CiBAZW5kCkBAIC01OSwyMiArNzUsMTkgQEAgdXNpbmcg
bmFtZXNwYWNlIFdlYkNvcmU7CiAgICAgUmV0YWluUHRyPF9VSU5hdmlnYXRpb25JbnRlcmFjdGl2
ZVRyYW5zaXRpb25CYXNlPiBfZm9yd2FyZFRyYW5zaXRpb25Db250cm9sbGVyOwogfQogCi1zdGF0
aWMgY29uc3QgZmxvYXQgc3dpcGVTbmFwc2hvdFJlbW92YWxSZW5kZXJUcmVlU2l6ZVRhcmdldEZy
YWN0aW9uID0gMC41Owotc3RhdGljIGNvbnN0IHN0ZDo6Y2hyb25vOjpzZWNvbmRzIHN3aXBlU25h
cHNob3RSZW1vdmFsV2F0Y2hkb2dEdXJhdGlvbiA9IDNfczsKLQogLSAoaW5zdGFuY2V0eXBlKWlu
aXRXaXRoVmlld0dlc3R1cmVDb250cm9sbGVyOihXZWJLaXQ6OlZpZXdHZXN0dXJlQ29udHJvbGxl
ciopZ2VzdHVyZUNvbnRyb2xsZXIgZ2VzdHVyZVJlY29nbml6ZXJWaWV3OihVSVZpZXcgKilnZXN0
dXJlUmVjb2duaXplclZpZXcKIHsKLSAgICBzZWxmID0gW3N1cGVyIGluaXRdOwotICAgIGlmIChz
ZWxmKSB7Ci0gICAgICAgIF9nZXN0dXJlQ29udHJvbGxlciA9IGdlc3R1cmVDb250cm9sbGVyOwor
ICAgIGlmICghKHNlbGYgPSBbc3VwZXIgaW5pdF0pKQorICAgICAgICByZXR1cm4gbmlsOwogCi0g
ICAgICAgIF9iYWNrVHJhbnNpdGlvbkNvbnRyb2xsZXIgPSBhZG9wdE5TKFtfVUlOYXZpZ2F0aW9u
SW50ZXJhY3RpdmVUcmFuc2l0aW9uQmFzZSBhbGxvY10pOwotICAgICAgICBfYmFja1RyYW5zaXRp
b25Db250cm9sbGVyID0gW19iYWNrVHJhbnNpdGlvbkNvbnRyb2xsZXIgaW5pdFdpdGhHZXN0dXJl
UmVjb2duaXplclZpZXc6Z2VzdHVyZVJlY29nbml6ZXJWaWV3IGFuaW1hdG9yOm5pbCBkZWxlZ2F0
ZTpzZWxmXTsKLSAgICAgICAgCi0gICAgICAgIF9mb3J3YXJkVHJhbnNpdGlvbkNvbnRyb2xsZXIg
PSBhZG9wdE5TKFtfVUlOYXZpZ2F0aW9uSW50ZXJhY3RpdmVUcmFuc2l0aW9uQmFzZSBhbGxvY10p
OwotICAgICAgICBfZm9yd2FyZFRyYW5zaXRpb25Db250cm9sbGVyID0gW19mb3J3YXJkVHJhbnNp
dGlvbkNvbnRyb2xsZXIgaW5pdFdpdGhHZXN0dXJlUmVjb2duaXplclZpZXc6Z2VzdHVyZVJlY29n
bml6ZXJWaWV3IGFuaW1hdG9yOm5pbCBkZWxlZ2F0ZTpzZWxmXTsKLSAgICAgICAgW19mb3J3YXJk
VHJhbnNpdGlvbkNvbnRyb2xsZXIgc2V0U2hvdWxkUmV2ZXJzZVRyYW5zbGF0aW9uOllFU107Ci0g
ICAgfQorICAgIF9nZXN0dXJlQ29udHJvbGxlciA9IGdlc3R1cmVDb250cm9sbGVyOworCisgICAg
X2JhY2tUcmFuc2l0aW9uQ29udHJvbGxlciA9IGFkb3B0TlMoW19VSU5hdmlnYXRpb25JbnRlcmFj
dGl2ZVRyYW5zaXRpb25CYXNlIGFsbG9jXSk7CisgICAgX2JhY2tUcmFuc2l0aW9uQ29udHJvbGxl
ciA9IFtfYmFja1RyYW5zaXRpb25Db250cm9sbGVyIGluaXRXaXRoR2VzdHVyZVJlY29nbml6ZXJW
aWV3Omdlc3R1cmVSZWNvZ25pemVyVmlldyBhbmltYXRvcjpuaWwgZGVsZWdhdGU6c2VsZl07CisK
KyAgICBfZm9yd2FyZFRyYW5zaXRpb25Db250cm9sbGVyID0gYWRvcHROUyhbX1VJTmF2aWdhdGlv
bkludGVyYWN0aXZlVHJhbnNpdGlvbkJhc2UgYWxsb2NdKTsKKyAgICBfZm9yd2FyZFRyYW5zaXRp
b25Db250cm9sbGVyID0gW19mb3J3YXJkVHJhbnNpdGlvbkNvbnRyb2xsZXIgaW5pdFdpdGhHZXN0
dXJlUmVjb2duaXplclZpZXc6Z2VzdHVyZVJlY29nbml6ZXJWaWV3IGFuaW1hdG9yOm5pbCBkZWxl
Z2F0ZTpzZWxmXTsKKyAgICBbX2ZvcndhcmRUcmFuc2l0aW9uQ29udHJvbGxlciBzZXRTaG91bGRS
ZXZlcnNlVHJhbnNsYXRpb246WUVTXTsKICAgICByZXR1cm4gc2VsZjsKIH0KIApAQCAtMTE5LDYg
KzEzMiw0NSBAQCBzdGF0aWMgY29uc3Qgc3RkOjpjaHJvbm86OnNlY29uZHMgc3dpcGVTbmFwc2hv
dFJlbW92YWxXYXRjaGRvZ0R1cmF0aW9uID0gM19zOwogCiBAZW5kCiAKK0BpbnRlcmZhY2UgV0tT
bWFydE1hZ25pZmljYXRpb25HZXN0dXJlQ29udHJvbGxlciA6IE5TT2JqZWN0IDxVSUdlc3R1cmVS
ZWNvZ25pemVyRGVsZWdhdGU+CistIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhWaWV3R2VzdHVyZUNv
bnRyb2xsZXI6KFdlYktpdDo6Vmlld0dlc3R1cmVDb250cm9sbGVyKilnZXN0dXJlQ29udHJvbGxl
ciBnZXN0dXJlUmVjb2duaXplclZpZXc6KFVJVmlldyAqKWdlc3R1cmVSZWNvZ25pemVyVmlldzsK
Ky0gKFVJR2VzdHVyZVJlY29nbml6ZXIgKilkb3VibGVUYXBSZWNvZ25pemVyOworQGVuZAorCitA
aW1wbGVtZW50YXRpb24gV0tTbWFydE1hZ25pZmljYXRpb25HZXN0dXJlQ29udHJvbGxlcgorewor
ICAgIFdlYktpdDo6Vmlld0dlc3R1cmVDb250cm9sbGVyICpfZ2VzdHVyZUNvbnRyb2xsZXI7Cisg
ICAgUmV0YWluUHRyPFVJVGFwR2VzdHVyZVJlY29nbml6ZXI+IF9kb3VibGVUYXBSZWNvZ25pemVy
OworICAgIFJldGFpblB0cjxVSVZpZXc+IF9nZXN0dXJlUmVjb2duaXplclZpZXc7Cit9CisKKy0g
KGluc3RhbmNldHlwZSlpbml0V2l0aFZpZXdHZXN0dXJlQ29udHJvbGxlcjooV2ViS2l0OjpWaWV3
R2VzdHVyZUNvbnRyb2xsZXIqKWdlc3R1cmVDb250cm9sbGVyIGdlc3R1cmVSZWNvZ25pemVyVmll
dzooVUlWaWV3ICopZ2VzdHVyZVJlY29nbml6ZXJWaWV3Cit7CisgICAgaWYgKCEoc2VsZiA9IFtz
dXBlciBpbml0XSkpCisgICAgICAgIHJldHVybiBuaWw7CisKKyAgICBfZ2VzdHVyZUNvbnRyb2xs
ZXIgPSBnZXN0dXJlQ29udHJvbGxlcjsKKyAgICBfZ2VzdHVyZVJlY29nbml6ZXJWaWV3ID0gZ2Vz
dHVyZVJlY29nbml6ZXJWaWV3OworICAgIF9kb3VibGVUYXBSZWNvZ25pemVyID0gYWRvcHROUyhb
W1VJVGFwR2VzdHVyZVJlY29nbml6ZXIgYWxsb2NdIGluaXRXaXRoVGFyZ2V0OnNlbGYgYWN0aW9u
OkBzZWxlY3Rvcihkb3VibGVUYXBSZWNvZ25pemVkOildKTsKKyAgICBbX2RvdWJsZVRhcFJlY29n
bml6ZXIgc2V0TnVtYmVyT2ZUYXBzUmVxdWlyZWQ6Ml07CisgICAgW19kb3VibGVUYXBSZWNvZ25p
emVyIHNldERlbGVnYXRlOnNlbGZdOworICAgIFtnZXN0dXJlUmVjb2duaXplclZpZXcgYWRkR2Vz
dHVyZVJlY29nbml6ZXI6X2RvdWJsZVRhcFJlY29nbml6ZXIuZ2V0KCldOworCisgICAgcmV0dXJu
IHNlbGY7Cit9CisKKy0gKHZvaWQpZG91YmxlVGFwUmVjb2duaXplZDooVUlUYXBHZXN0dXJlUmVj
b2duaXplciAqKWdlc3R1cmVSZWNvZ25pemVyCit7CisgICAgX2dlc3R1cmVDb250cm9sbGVyLT5o
YW5kbGVTbWFydE1hZ25pZmljYXRpb25HZXN0dXJlKFtnZXN0dXJlUmVjb2duaXplciBsb2NhdGlv
bkluVmlldzpfZ2VzdHVyZVJlY29nbml6ZXJWaWV3LmdldCgpXSk7Cit9CisKKy0gKFVJR2VzdHVy
ZVJlY29nbml6ZXIgKilkb3VibGVUYXBSZWNvZ25pemVyCit7CisgICAgcmV0dXJuIF9kb3VibGVU
YXBSZWNvZ25pemVyLmdldCgpOworfQorCitAZW5kCisKIG5hbWVzcGFjZSBXZWJLaXQgewogCiBW
aWV3R2VzdHVyZUNvbnRyb2xsZXI6OlZpZXdHZXN0dXJlQ29udHJvbGxlcihXZWJQYWdlUHJveHkm
IHdlYlBhZ2VQcm94eSkKQEAgLTEyNywxMCArMTc5LDEyIEBAIFZpZXdHZXN0dXJlQ29udHJvbGxl
cjo6Vmlld0dlc3R1cmVDb250cm9sbGVyKFdlYlBhZ2VQcm94eSYgd2ViUGFnZVByb3h5KQogICAg
ICwgbV9zd2lwZVdhdGNoZG9nVGltZXIodGhpcywgJlZpZXdHZXN0dXJlQ29udHJvbGxlcjo6c3dp
cGVTbmFwc2hvdFdhdGNoZG9nVGltZXJGaXJlZCkKICAgICAsIG1fdGFyZ2V0UmVuZGVyVHJlZVNp
emUoMCkKIHsKKyAgICBtX3dlYlBhZ2VQcm94eS5wcm9jZXNzKCkuYWRkTWVzc2FnZVJlY2VpdmVy
KE1lc3NhZ2VzOjpWaWV3R2VzdHVyZUNvbnRyb2xsZXI6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwg
bV93ZWJQYWdlUHJveHkucGFnZUlEKCksICp0aGlzKTsKIH0KIAogVmlld0dlc3R1cmVDb250cm9s
bGVyOjp+Vmlld0dlc3R1cmVDb250cm9sbGVyKCkKIHsKKyAgICBtX3dlYlBhZ2VQcm94eS5wcm9j
ZXNzKCkucmVtb3ZlTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpWaWV3R2VzdHVyZUNvbnRyb2xs
ZXI6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgbV93ZWJQYWdlUHJveHkucGFnZUlEKCkpOwogfQog
CiB2b2lkIFZpZXdHZXN0dXJlQ29udHJvbGxlcjo6aW5zdGFsbFN3aXBlSGFuZGxlcihVSVZpZXcg
Kmdlc3R1cmVSZWNvZ25pemVyVmlldywgVUlWaWV3ICpzd2lwaW5nVmlldykKQEAgLTE0MCw2ICsx
OTQsMTQgQEAgdm9pZCBWaWV3R2VzdHVyZUNvbnRyb2xsZXI6Omluc3RhbGxTd2lwZUhhbmRsZXIo
VUlWaWV3ICpnZXN0dXJlUmVjb2duaXplclZpZXcsIFUKICAgICBtX2xpdmVTd2lwZVZpZXcgPSBz
d2lwaW5nVmlldzsKIH0KIAordm9pZCBWaWV3R2VzdHVyZUNvbnRyb2xsZXI6OnVuaW5zdGFsbFN3
aXBlSGFuZGxlcigpCit7CisgICAgQVNTRVJUKG1fc3dpcGVJbnRlcmFjdGl2ZVRyYW5zaXRpb25E
ZWxlZ2F0ZSk7CisgICAgQVNTRVJUKG1fYWN0aXZlR2VzdHVyZVR5cGUgIT0gVmlld0dlc3R1cmVU
eXBlOjpTd2lwZSk7CisgICAgbV9zd2lwZUludGVyYWN0aXZlVHJhbnNpdGlvbkRlbGVnYXRlID0g
bnVsbHB0cjsKKyAgICBtX2xpdmVTd2lwZVZpZXcgPSBudWxscHRyOworfQorCiB2b2lkIFZpZXdH
ZXN0dXJlQ29udHJvbGxlcjo6YmVnaW5Td2lwZUdlc3R1cmUoX1VJTmF2aWdhdGlvbkludGVyYWN0
aXZlVHJhbnNpdGlvbkJhc2UgKnRyYW5zaXRpb24sIFN3aXBlRGlyZWN0aW9uIGRpcmVjdGlvbikK
IHsKICAgICBpZiAobV9hY3RpdmVHZXN0dXJlVHlwZSAhPSBWaWV3R2VzdHVyZVR5cGU6Ok5vbmUp
CkBAIC0yNzMsNCArMzM1LDE3NSBAQCB2b2lkIFZpZXdHZXN0dXJlQ29udHJvbGxlcjo6cmVtb3Zl
U3dpcGVTbmFwc2hvdCgpCiAgICAgbV9hY3RpdmVHZXN0dXJlVHlwZSA9IFZpZXdHZXN0dXJlVHlw
ZTo6Tm9uZTsKIH0KIAorVUlHZXN0dXJlUmVjb2duaXplciAqVmlld0dlc3R1cmVDb250cm9sbGVy
OjppbnN0YWxsU21hcnRNYWduaWZpY2F0aW9uSGFuZGxlcihVSVZpZXcgKnRhcmdldFZpZXcsIFVJ
U2Nyb2xsVmlldyAqc2Nyb2xsVmlldykKK3sKKyAgICBBU1NFUlQoIW1fc21hcnRNYWduaWZpY2F0
aW9uR2VzdHVyZUNvbnRyb2xsZXIpOworICAgIG1fc21hcnRNYWduaWZpY2F0aW9uR2VzdHVyZUNv
bnRyb2xsZXIgPSBhZG9wdE5TKFtbV0tTbWFydE1hZ25pZmljYXRpb25HZXN0dXJlQ29udHJvbGxl
ciBhbGxvY10gaW5pdFdpdGhWaWV3R2VzdHVyZUNvbnRyb2xsZXI6dGhpcyBnZXN0dXJlUmVjb2du
aXplclZpZXc6dGFyZ2V0Vmlld10pOworICAgIG1fc21hcnRNYWduaWZpY2F0aW9uU2Nyb2xsVmll
dyA9IHNjcm9sbFZpZXc7CisgICAgbV9zbWFydE1hZ25pZmljYXRpb25UYXJnZXRWaWV3ID0gdGFy
Z2V0VmlldzsKKworICAgIHJldHVybiBbbV9zbWFydE1hZ25pZmljYXRpb25HZXN0dXJlQ29udHJv
bGxlciBkb3VibGVUYXBSZWNvZ25pemVyXTsKK30KKwordm9pZCBWaWV3R2VzdHVyZUNvbnRyb2xs
ZXI6OmhhbmRsZVNtYXJ0TWFnbmlmaWNhdGlvbkdlc3R1cmUoRmxvYXRQb2ludCBvcmlnaW4pCit7
CisgICAgaWYgKG1fYWN0aXZlR2VzdHVyZVR5cGUgIT0gVmlld0dlc3R1cmVUeXBlOjpOb25lKQor
ICAgICAgICByZXR1cm47CisKKyAgICBtX3dlYlBhZ2VQcm94eS5wcm9jZXNzKCkuc2VuZChNZXNz
YWdlczo6Vmlld0dlc3R1cmVHZW9tZXRyeUNvbGxlY3Rvcjo6Q29sbGVjdEdlb21ldHJ5Rm9yU21h
cnRNYWduaWZpY2F0aW9uR2VzdHVyZShvcmlnaW4pLCBtX3dlYlBhZ2VQcm94eS5wYWdlSUQoKSk7
Cit9CisKK3N0YXRpYyBib29sIHNob3VsZFBhblNjcm9sbEZvclNjYWxlKGRvdWJsZSBmcm9tU2Nh
bGUsIGRvdWJsZSB0b1NjYWxlKQoreworICAgIHJldHVybiBmYWJzKHRvU2NhbGUgLSBmcm9tU2Nh
bGUpIDwgc21hcnRNYWduaWZpY2F0aW9uU2NhbGVEZWx0YVRocmVzaG9sZEZvclBhblNjcm9sbDsK
K30KKworc3RhdGljIENGVGltZUludGVydmFsIGR1cmF0aW9uRm9yWm9vbVRvU2NhbGUoZG91Ymxl
IGZyb21TY2FsZSwgZG91YmxlIHRvU2NhbGUpCit7CisgICAgY29uc3QgZG91YmxlIG1heGltdW1a
b29tRHVyYXRpb24gPSAwLjQ7CisgICAgY29uc3QgZG91YmxlIG1pbmltdW1ab29tRHVyYXRpb24g
PSAwLjE7CisgICAgY29uc3QgZG91YmxlIHpvb21EdXJhdGlvbkZhY3RvciA9IDAuMzsKKworICAg
IHJldHVybiBzdGQ6Om1pbihmYWJzKGxvZyhmcm9tU2NhbGUpIC0gbG9nKHRvU2NhbGUpKSAqIHpv
b21EdXJhdGlvbkZhY3RvciArIG1pbmltdW1ab29tRHVyYXRpb24sIG1heGltdW1ab29tRHVyYXRp
b24pOworfQorCitzdGF0aWMgYm9vbCB6b29tVG9DZW50ZXJBdFNjYWxlKEZsb2F0UG9pbnQgb3Jp
Z2luLCBkb3VibGUgc2NhbGUsIFVJU2Nyb2xsVmlldyAqc2Nyb2xsVmlldykKK3sKKyAgICBpZiAo
IVtzY3JvbGxWaWV3IGlzWm9vbUVuYWJsZWRdKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAg
ICBDRlRpbWVJbnRlcnZhbCBkdXJhdGlvbiA9IGR1cmF0aW9uRm9yWm9vbVRvU2NhbGUoW3Njcm9s
bFZpZXcgem9vbVNjYWxlXSwgc2NhbGUpOworICAgIFtzY3JvbGxWaWV3IF96b29tVG9DZW50ZXI6
b3JpZ2luIHNjYWxlOnNjYWxlIGR1cmF0aW9uOmR1cmF0aW9uXTsKKworICAgIHJldHVybiB0cnVl
OworfQorCitib29sIFZpZXdHZXN0dXJlQ29udHJvbGxlcjo6c21hcnRNYWduaWZpY2F0aW9uWm9v
bVRvVGFyZ2V0KGRvdWJsZSBzY2FsZSwgRmxvYXRSZWN0IHRhcmdldFJlY3QsIEZsb2F0UG9pbnQg
b3JpZ2luKQoreworICAgIEZsb2F0U2l6ZSBzY3JvbGxWaWV3U2l6ZShbbV9zbWFydE1hZ25pZmlj
YXRpb25TY3JvbGxWaWV3IGJvdW5kc10uc2l6ZSk7CisgICAgZG91YmxlIGN1cnJlbnRTY2FsZUZh
Y3RvciA9IG1fd2ViUGFnZVByb3h5LnBhZ2VTY2FsZUZhY3RvcigpOworICAgIGRvdWJsZSByZWxh
dGl2ZVNjYWxlID0gc2NhbGUgLyBjdXJyZW50U2NhbGVGYWN0b3I7CisKKyAgICBGbG9hdFJlY3Qg
c2Nyb2xsVmlld1RhcmdldFJlY3QgPSBbbV9zbWFydE1hZ25pZmljYXRpb25TY3JvbGxWaWV3IGNv
bnZlcnRSZWN0OnRhcmdldFJlY3QgZnJvbVZpZXc6bV9zbWFydE1hZ25pZmljYXRpb25UYXJnZXRW
aWV3LmdldCgpXTsKKyAgICBGbG9hdFJlY3Qgc2NhbGVkU2Nyb2xsVmlld1RhcmdldFJlY3QgPSBz
Y3JvbGxWaWV3VGFyZ2V0UmVjdDsKKyAgICBzY2FsZWRTY3JvbGxWaWV3VGFyZ2V0UmVjdC5zY2Fs
ZShyZWxhdGl2ZVNjYWxlLCByZWxhdGl2ZVNjYWxlKTsKKworICAgIC8vIENlbnRlciB0aGUgdGFy
Z2V0IHJlY3QgaW4gdGhlIHNjcm9sbCB2aWV3LgorICAgIC8vIElmIHRoZSB0YXJnZXQgZG9lc24n
dCBmaXQgaW4gdGhlIHNjcm9sbCB2aWV3LCBjZW50ZXIgb24gdGhlIGdlc3R1cmUgbG9jYXRpb24g
aW5zdGVhZC4KKyAgICBGbG9hdFBvaW50IHpvb21DZW50ZXIgPSB0YXJnZXRSZWN0LmNlbnRlcigp
OworCisgICAgaWYgKHNjYWxlZFNjcm9sbFZpZXdUYXJnZXRSZWN0LndpZHRoKCkgPiBzY3JvbGxW
aWV3U2l6ZS53aWR0aCgpKQorICAgICAgICB6b29tQ2VudGVyLnNldFgob3JpZ2luLngoKSk7Cisg
ICAgaWYgKHNjYWxlZFNjcm9sbFZpZXdUYXJnZXRSZWN0LmhlaWdodCgpID4gc2Nyb2xsVmlld1Np
emUuaGVpZ2h0KCkpCisgICAgICAgIHpvb21DZW50ZXIuc2V0WShvcmlnaW4ueSgpKTsKKworICAg
IGlmICh6b29tVG9DZW50ZXJBdFNjYWxlKHpvb21DZW50ZXIsIHNjYWxlLCBtX3NtYXJ0TWFnbmlm
aWNhdGlvblNjcm9sbFZpZXcuZ2V0KCkpKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAgIHJl
dHVybiBmYWxzZTsKK30KKworc3RhdGljIEZsb2F0UG9pbnQgY29uc3RyYWluQ29udGVudE9mZnNl
dChGbG9hdFBvaW50IGNvbnRlbnRPZmZzZXQsIEZsb2F0U2l6ZSBjb250ZW50U2l6ZSwgRmxvYXRT
aXplIHNjcm9sbFZpZXdTaXplKQoreworICAgIEZsb2F0U2l6ZSBtYXhpbXVtQ29udGVudE9mZnNl
dCA9IGNvbnRlbnRTaXplIC0gc2Nyb2xsVmlld1NpemU7CisgICAgY29udGVudE9mZnNldCA9IGNv
bnRlbnRPZmZzZXQuc2hydW5rVG8oRmxvYXRQb2ludChtYXhpbXVtQ29udGVudE9mZnNldC53aWR0
aCgpLCBtYXhpbXVtQ29udGVudE9mZnNldC5oZWlnaHQoKSkpOworICAgIGNvbnRlbnRPZmZzZXQg
PSBjb250ZW50T2Zmc2V0LmV4cGFuZGVkVG8oRmxvYXRQb2ludCgpKTsKKyAgICByZXR1cm4gY29u
dGVudE9mZnNldDsKK30KKworYm9vbCBWaWV3R2VzdHVyZUNvbnRyb2xsZXI6OnNtYXJ0TWFnbmlm
aWNhdGlvblNjcm9sbFRvVGFyZ2V0KEZsb2F0UmVjdCB0YXJnZXRSZWN0LCBGbG9hdFBvaW50IG9y
aWdpbikKK3sKKyAgICBpZiAoIVttX3NtYXJ0TWFnbmlmaWNhdGlvblNjcm9sbFZpZXcgaXNTY3Jv
bGxFbmFibGVkXSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgRmxvYXRTaXplIHNjcm9s
bFZpZXdTaXplKFttX3NtYXJ0TWFnbmlmaWNhdGlvblNjcm9sbFZpZXcgYm91bmRzXS5zaXplKTsK
KyAgICBGbG9hdFNpemUgY29udGVudFNpemUoW21fc21hcnRNYWduaWZpY2F0aW9uU2Nyb2xsVmll
dyBjb250ZW50U2l6ZV0pOworICAgIEZsb2F0UG9pbnQgY3VycmVudENvbnRlbnRPZmZzZXQoW21f
c21hcnRNYWduaWZpY2F0aW9uU2Nyb2xsVmlldyBjb250ZW50T2Zmc2V0XSk7CisKKyAgICBGbG9h
dFBvaW50IHNjcm9sbFZpZXdPcmlnaW4oW21fc21hcnRNYWduaWZpY2F0aW9uU2Nyb2xsVmlldyBj
b252ZXJ0UG9pbnQ6b3JpZ2luIGZyb21WaWV3Om1fc21hcnRNYWduaWZpY2F0aW9uVGFyZ2V0Vmll
dy5nZXQoKV0pOworICAgIEZsb2F0UmVjdCBzY3JvbGxWaWV3VGFyZ2V0UmVjdChbbV9zbWFydE1h
Z25pZmljYXRpb25TY3JvbGxWaWV3IGNvbnZlcnRSZWN0OnRhcmdldFJlY3QgZnJvbVZpZXc6bV9z
bWFydE1hZ25pZmljYXRpb25UYXJnZXRWaWV3LmdldCgpXSk7CisKKyAgICAvLyBDZW50ZXIgdGhl
IHRhcmdldCByZWN0IGluIHRoZSBzY3JvbGwgdmlldy4KKyAgICAvLyBJZiB0aGUgdGFyZ2V0IGRv
ZXNuJ3QgZml0IGluIHRoZSBzY3JvbGwgdmlldywgY2VudGVyIG9uIHRoZSBnZXN0dXJlIGxvY2F0
aW9uIGluc3RlYWQuCisgICAgRmxvYXRQb2ludCBuZXdDb250ZW50T2Zmc2V0OworICAgIGlmIChz
Y3JvbGxWaWV3VGFyZ2V0UmVjdC53aWR0aCgpIDw9IHNjcm9sbFZpZXdTaXplLndpZHRoKCkpCisg
ICAgICAgIG5ld0NvbnRlbnRPZmZzZXQuc2V0WChzY3JvbGxWaWV3VGFyZ2V0UmVjdC54KCkgLSAo
c2Nyb2xsVmlld1NpemUud2lkdGgoKSAtIHNjcm9sbFZpZXdUYXJnZXRSZWN0LndpZHRoKCkpIC8g
Mik7CisgICAgZWxzZQorICAgICAgICBuZXdDb250ZW50T2Zmc2V0LnNldFgoc2Nyb2xsVmlld09y
aWdpbi54KCkgLSBzY3JvbGxWaWV3U2l6ZS53aWR0aCgpIC8gMik7CisgICAgaWYgKHNjcm9sbFZp
ZXdUYXJnZXRSZWN0LmhlaWdodCgpIDw9IHNjcm9sbFZpZXdTaXplLmhlaWdodCgpKQorICAgICAg
ICBuZXdDb250ZW50T2Zmc2V0LnNldFkoc2Nyb2xsVmlld1RhcmdldFJlY3QueSgpIC0gKHNjcm9s
bFZpZXdTaXplLmhlaWdodCgpIC0gc2Nyb2xsVmlld1RhcmdldFJlY3QuaGVpZ2h0KCkpIC8gMik7
CisgICAgZWxzZQorICAgICAgICBuZXdDb250ZW50T2Zmc2V0LnNldFkoc2Nyb2xsVmlld09yaWdp
bi55KCkgLSBzY3JvbGxWaWV3U2l6ZS5oZWlnaHQoKSAvIDIpOworICAgIG5ld0NvbnRlbnRPZmZz
ZXQgPSBjb25zdHJhaW5Db250ZW50T2Zmc2V0KG5ld0NvbnRlbnRPZmZzZXQsIGNvbnRlbnRTaXpl
LCBzY3JvbGxWaWV3U2l6ZSk7CisKKyAgICBpZiAoY3VycmVudENvbnRlbnRPZmZzZXQgPT0gbmV3
Q29udGVudE9mZnNldCkgeworICAgICAgICBpZiAoc2Nyb2xsVmlld1RhcmdldFJlY3Qud2lkdGgo
KSA+IHNjcm9sbFZpZXdTaXplLndpZHRoKCkpCisgICAgICAgICAgICBuZXdDb250ZW50T2Zmc2V0
LnNldFgoc2Nyb2xsVmlld09yaWdpbi54KCkgLSBzY3JvbGxWaWV3U2l6ZS53aWR0aCgpIC8gMik7
CisgICAgICAgIGlmIChzY3JvbGxWaWV3VGFyZ2V0UmVjdC5oZWlnaHQoKSA+IHNjcm9sbFZpZXdT
aXplLmhlaWdodCgpKQorICAgICAgICAgICAgbmV3Q29udGVudE9mZnNldC5zZXRZKHNjcm9sbFZp
ZXdPcmlnaW4ueSgpIC0gc2Nyb2xsVmlld1NpemUuaGVpZ2h0KCkgLyAyKTsKKyAgICAgICAgbmV3
Q29udGVudE9mZnNldCA9IGNvbnN0cmFpbkNvbnRlbnRPZmZzZXQobmV3Q29udGVudE9mZnNldCwg
Y29udGVudFNpemUsIHNjcm9sbFZpZXdTaXplKTsKKyAgICB9CisKKyAgICBGbG9hdFJlY3QgaW5z
ZXRTY3JvbGxWaWV3UmVjdCA9IFVJRWRnZUluc2V0c0luc2V0UmVjdChbbV9zbWFydE1hZ25pZmlj
YXRpb25TY3JvbGxWaWV3IGJvdW5kc10sIFttX3NtYXJ0TWFnbmlmaWNhdGlvblNjcm9sbFZpZXcg
Y29udGVudEluc2V0XSk7CisKKyAgICBmbG9hdCBzY3JvbGxEaXN0YW5jZSA9IChjdXJyZW50Q29u
dGVudE9mZnNldCAtIG5ld0NvbnRlbnRPZmZzZXQpLmRpYWdvbmFsTGVuZ3RoKCk7CisKKyAgICAv
LyBJZiB0aGUgY29udGVudCBhbHJlYWR5IGZpdHMgaW4gdGhlIHNjcm9sbCB2aWV3IGFuZCB3ZSdy
ZSBhbHJlYWR5IHpvb21lZCBpbiB0byB0aGUgdGFyZ2V0IHNjYWxlLAorICAgIC8vIGl0IGlzIG1v
c3QgbGlrZWx5IHRoYXQgdGhlIHVzZXIgaW50ZW5kZWQgdG8gc2Nyb2xsLCBzbyB1c2UgYSBzbWFs
bCBkaXN0YW5jZSB0aHJlc2hvbGQgdG8gaW5pdGlhdGUgcGFubmluZy4KKyAgICBpZiAoY29udGVu
dFNpemUud2lkdGgoKSA8PSBpbnNldFNjcm9sbFZpZXdSZWN0LndpZHRoKCkpIHsKKyAgICAgICAg
aWYgKHNjcm9sbERpc3RhbmNlIDwgc21hcnRNYWduaWZpY2F0aW9uUGFuU2Nyb2xsVGhyZXNob2xk
Wm9vbWVkT3V0KQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0gZWxzZSBpZiAoVUlD
dXJyZW50VXNlckludGVyZmFjZUlkaW9tSXNQYWQoKSkgeworICAgICAgICBpZiAoc2Nyb2xsRGlz
dGFuY2UgPCBzbWFydE1hZ25pZmljYXRpb25QYW5TY3JvbGxUaHJlc2hvbGRJUGFkKQorICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0gZWxzZSBpZiAoc2Nyb2xsRGlzdGFuY2UgPCBzbWFy
dE1hZ25pZmljYXRpb25QYW5TY3JvbGxUaHJlc2hvbGRJUGhvbmUpCisgICAgICAgIHJldHVybiBm
YWxzZTsKKworICAgIFttX3NtYXJ0TWFnbmlmaWNhdGlvblNjcm9sbFZpZXcgc2V0Q29udGVudE9m
ZnNldDpuZXdDb250ZW50T2Zmc2V0IGFuaW1hdGVkOllFU107CisgICAgcmV0dXJuIHRydWU7Cit9
CisKK3ZvaWQgVmlld0dlc3R1cmVDb250cm9sbGVyOjpkaWRDb2xsZWN0R2VvbWV0cnlGb3JTbWFy
dE1hZ25pZmljYXRpb25HZXN0dXJlKEZsb2F0UG9pbnQgb3JpZ2luLCBGbG9hdFJlY3QgdGFyZ2V0
UmVjdCwgRmxvYXRSZWN0IHZpc2libGVDb250ZW50UmVjdCwgYm9vbCBpc1JlcGxhY2VkRWxlbWVu
dCwgYm9vbCBmcmFtZUhhbmRsZXNNYWduaWZpY2F0aW9uR2VzdHVyZSwgZG91YmxlIHZpZXdwb3J0
TWluaW11bVNjYWxlLCBkb3VibGUgdmlld3BvcnRNYXhpbXVtU2NhbGUpCit7CisgICAgaWYgKGZy
YW1lSGFuZGxlc01hZ25pZmljYXRpb25HZXN0dXJlKQorICAgICAgICByZXR1cm47CisKKyAgICBk
b3VibGUgY3VycmVudFNjYWxlRmFjdG9yID0gbV93ZWJQYWdlUHJveHkucGFnZVNjYWxlRmFjdG9y
KCk7CisKKyAgICBpZiAodGFyZ2V0UmVjdC5pc0VtcHR5KCkpIHsKKyAgICAgICAgLy8gRklYTUU6
IElmIHdlIGRvbid0IHpvb20sIHNlbmQgdGhlIHRhcCBhbG9uZyB0byB0ZXh0IHNlbGVjdGlvbiAo
c2VlIDxyZGFyOi8vcHJvYmxlbS82ODEwMzQ0PikuCisgICAgICAgIHpvb21Ub0NlbnRlckF0U2Nh
bGUob3JpZ2luLCB2aWV3cG9ydE1pbmltdW1TY2FsZSwgbV9zbWFydE1hZ25pZmljYXRpb25TY3Jv
bGxWaWV3LmdldCgpKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGRvdWJsZSBtYXhp
bXVtU2NhbGUgPSBzdGQ6Om1pbih2aWV3cG9ydE1heGltdW1TY2FsZSwgc21hcnRNYWduaWZpY2F0
aW9uTWF4aW11bVNjYWxlKTsKKyAgICBkb3VibGUgbWluaW11bVNjYWxlID0gc3RkOjptYXgodmll
d3BvcnRNaW5pbXVtU2NhbGUsIHNtYXJ0TWFnbmlmaWNhdGlvbk1pbmltdW1TY2FsZSk7CisKKyAg
ICBkb3VibGUgcGFkZGVkQ3VycmVudFNjYWxlRmFjdG9yID0gbV93ZWJQYWdlUHJveHkucGFnZVNj
YWxlRmFjdG9yKCkgKiAoMSAtIHNtYXJ0TWFnbmlmaWNhdGlvbkVsZW1lbnRQYWRkaW5nKTsKKwor
ICAgIGRvdWJsZSBob3Jpem9udGFsU2NhbGUgPSBwYWRkZWRDdXJyZW50U2NhbGVGYWN0b3IgKiAo
dmlzaWJsZUNvbnRlbnRSZWN0LndpZHRoKCkgLyB0YXJnZXRSZWN0LndpZHRoKCkpOworICAgIGRv
dWJsZSB2ZXJ0aWNhbFNjYWxlID0gcGFkZGVkQ3VycmVudFNjYWxlRmFjdG9yICogKHZpc2libGVD
b250ZW50UmVjdC5oZWlnaHQoKSAvIHRhcmdldFJlY3QuaGVpZ2h0KCkpOworCisgICAgaG9yaXpv
bnRhbFNjYWxlID0gc3RkOjptaW4oc3RkOjptYXgoaG9yaXpvbnRhbFNjYWxlLCBtaW5pbXVtU2Nh
bGUpLCBtYXhpbXVtU2NhbGUpOworICAgIHZlcnRpY2FsU2NhbGUgPSBzdGQ6Om1pbihzdGQ6Om1h
eCh2ZXJ0aWNhbFNjYWxlLCBtaW5pbXVtU2NhbGUpLCBtYXhpbXVtU2NhbGUpOworCisgICAgLy8g
Rm9yIHJlcGxhY2VkIGVsZW1lbnRzIGxpa2UgaW1hZ2VzLCB3ZSB3YW50IHRvIGZpdCB0aGUgd2hv
bGUgZWxlbWVudAorICAgIC8vIGluIHRoZSB2aWV3LCBzbyBzY2FsZSBpdCBkb3duIGVub3VnaCB0
byBtYWtlIGJvdGggZGltZW5zaW9ucyBmaXQgaWYgcG9zc2libGUuCisgICAgLy8gRm9yIG90aGVy
IGVsZW1lbnRzLCB0cnkgdG8gZml0IHRoZW0gaG9yaXpvbnRhbGx5LgorICAgIGRvdWJsZSB0YXJn
ZXRTY2FsZSA9IGlzUmVwbGFjZWRFbGVtZW50ID8gc3RkOjptaW4oaG9yaXpvbnRhbFNjYWxlLCB2
ZXJ0aWNhbFNjYWxlKSA6IGhvcml6b250YWxTY2FsZTsKKworICAgIC8vIEZJWE1FOiBDaGVjayBp
ZiB0ZXh0IHNlbGVjdGlvbiB3YW50cyB0byBjb25zdW1lIHRoZSBkb3VibGUgdGFwIGJlZm9yZSB3
ZSBhdHRlbXB0IG1hZ25pZmljYXRpb24uCisKKyAgICBpZiAoc2hvdWxkUGFuU2Nyb2xsRm9yU2Nh
bGUoY3VycmVudFNjYWxlRmFjdG9yLCB0YXJnZXRTY2FsZSkpIHsKKyAgICAgICAgaWYgKHNtYXJ0
TWFnbmlmaWNhdGlvblNjcm9sbFRvVGFyZ2V0KHRhcmdldFJlY3QsIG9yaWdpbikpCisgICAgICAg
ICAgICByZXR1cm47CisgICAgfSBlbHNlIGlmICh0YXJnZXRTY2FsZSAhPSBjdXJyZW50U2NhbGVG
YWN0b3IpIHsKKyAgICAgICAgaWYgKHNtYXJ0TWFnbmlmaWNhdGlvblpvb21Ub1RhcmdldCh0YXJn
ZXRTY2FsZSwgdGFyZ2V0UmVjdCwgb3JpZ2luKSkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICB9
CisKKyAgICAvLyBGSVhNRTogSWYgd2Ugc3RpbGwgZG9uJ3Qgem9vbSwgc2VuZCB0aGUgdGFwIGFs
b25nIHRvIHRleHQgc2VsZWN0aW9uIChzZWUgPHJkYXI6Ly9wcm9ibGVtLzY4MTAzNDQ+KS4KKyAg
ICB6b29tVG9DZW50ZXJBdFNjYWxlKG9yaWdpbiwgdmlld3BvcnRNaW5pbXVtU2NhbGUsIG1fc21h
cnRNYWduaWZpY2F0aW9uU2Nyb2xsVmlldy5nZXQoKSk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdl
YktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9WaWV3R2VzdHVy
ZUNvbnRyb2xsZXIuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvVmlld0dlc3R1cmVD
b250cm9sbGVyLmgKaW5kZXggYzY0OWM2MS4uOTdhY2VkNSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL21hYy9WaWV3R2VzdHVyZUNvbnRyb2xsZXIuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1ZpZXdHZXN0dXJlQ29udHJvbGxlci5oCkBAIC0zNCw3ICsz
NCwxMCBAQAogT0JKQ19DTEFTUyBDQUxheWVyOwogCiAjaWYgUExBVEZPUk0oSU9TKQorT0JKQ19D
TEFTUyBVSUdlc3R1cmVSZWNvZ25pemVyOworT0JKQ19DTEFTUyBVSVNjcm9sbFZpZXc7CiBPQkpD
X0NMQVNTIFVJVmlldzsKK09CSkNfQ0xBU1MgV0tTbWFydE1hZ25pZmljYXRpb25HZXN0dXJlQ29u
dHJvbGxlcjsKIE9CSkNfQ0xBU1MgV0tTd2lwZVRyYW5zaXRpb25Db250cm9sbGVyOwogT0JKQ19D
TEFTUyBfVUlWaWV3Q29udHJvbGxlclRyYW5zaXRpb25Db250ZXh0OwogT0JKQ19DTEFTUyBfVUlO
YXZpZ2F0aW9uSW50ZXJhY3RpdmVUcmFuc2l0aW9uQmFzZTsKQEAgLTU4LDggKzYxLDggQEAgcHVi
bGljOgogICAgICAgICBOb25lLAogI2lmICFQTEFURk9STShJT1MpCiAgICAgICAgIE1hZ25pZmlj
YXRpb24sCi0gICAgICAgIFNtYXJ0TWFnbmlmaWNhdGlvbiwKICNlbmRpZgorICAgICAgICBTbWFy
dE1hZ25pZmljYXRpb24sCiAgICAgICAgIFN3aXBlCiAgICAgfTsKICAgICAKQEAgLTczLDExICs3
NiwxMiBAQCBwdWJsaWM6CiAgICAgICAgIFJpZ2h0CiAgICAgfTsKICAgICAKKyAgICB2b2lkIGhh
bmRsZVNtYXJ0TWFnbmlmaWNhdGlvbkdlc3R1cmUoV2ViQ29yZTo6RmxvYXRQb2ludCBvcmlnaW4p
OworCiAjaWYgIVBMQVRGT1JNKElPUykKICAgICBkb3VibGUgbWFnbmlmaWNhdGlvbigpIGNvbnN0
OwogCiAgICAgdm9pZCBoYW5kbGVNYWduaWZpY2F0aW9uR2VzdHVyZShkb3VibGUgc2NhbGUsIFdl
YkNvcmU6OkZsb2F0UG9pbnQgb3JpZ2luKTsKLSAgICB2b2lkIGhhbmRsZVNtYXJ0TWFnbmlmaWNh
dGlvbkdlc3R1cmUoV2ViQ29yZTo6RmxvYXRQb2ludCBvcmlnaW4pOwogCiAgICAgYm9vbCBoYW5k
bGVTY3JvbGxXaGVlbEV2ZW50KE5TRXZlbnQgKik7CiAgICAgdm9pZCB3aGVlbEV2ZW50V2FzTm90
SGFuZGxlZEJ5V2ViQ29yZShOU0V2ZW50ICopOwpAQCAtODgsNiArOTIsOCBAQCBwdWJsaWM6CiAg
ICAgdm9pZCBlbmRBY3RpdmVHZXN0dXJlKCk7CiAjZWxzZQogICAgIHZvaWQgaW5zdGFsbFN3aXBl
SGFuZGxlcihVSVZpZXcgKmdlc3R1cmVSZWNvZ25pemVyVmlldywgVUlWaWV3ICpzd2lwaW5nVmll
dyk7CisgICAgdm9pZCB1bmluc3RhbGxTd2lwZUhhbmRsZXIoKTsKKyAgICBVSUdlc3R1cmVSZWNv
Z25pemVyICppbnN0YWxsU21hcnRNYWduaWZpY2F0aW9uSGFuZGxlcihVSVZpZXcgKnRhcmdldFZp
ZXcsIFVJU2Nyb2xsVmlldyAqc2Nyb2xsVmlldyk7CiAgICAgYm9vbCBjYW5Td2lwZUluRGlyZWN0
aW9uKFN3aXBlRGlyZWN0aW9uKTsKICAgICB2b2lkIGJlZ2luU3dpcGVHZXN0dXJlKF9VSU5hdmln
YXRpb25JbnRlcmFjdGl2ZVRyYW5zaXRpb25CYXNlICosIFN3aXBlRGlyZWN0aW9uKTsKICAgICB2
b2lkIGVuZFN3aXBlR2VzdHVyZShXZWJCYWNrRm9yd2FyZExpc3RJdGVtKiB0YXJnZXRJdGVtLCBf
VUlWaWV3Q29udHJvbGxlclRyYW5zaXRpb25Db250ZXh0ICosIGJvb2wgY2FuY2VsbGVkKTsKQEAg
LTEwMSwxMCArMTA3LDE0IEBAIHByaXZhdGU6CiAgICAgdm9pZCByZW1vdmVTd2lwZVNuYXBzaG90
KCk7CiAgICAgdm9pZCBzd2lwZVNuYXBzaG90V2F0Y2hkb2dUaW1lckZpcmVkKFdlYkNvcmU6OlRp
bWVyPFZpZXdHZXN0dXJlQ29udHJvbGxlcj4qKTsKIAotI2lmICFQTEFURk9STShJT1MpCiAgICAg
Ly8gTWVzc2FnZSBoYW5kbGVycy4KKyAgICB2b2lkIGRpZENvbGxlY3RHZW9tZXRyeUZvclNtYXJ0
TWFnbmlmaWNhdGlvbkdlc3R1cmUoV2ViQ29yZTo6RmxvYXRQb2ludCBvcmlnaW4sIFdlYkNvcmU6
OkZsb2F0UmVjdCByZW5kZXJSZWN0LCBXZWJDb3JlOjpGbG9hdFJlY3QgdmlzaWJsZUNvbnRlbnRC
b3VuZHMsIGJvb2wgaXNSZXBsYWNlZEVsZW1lbnQsIGJvb2wgZnJhbWVIYW5kbGVzTWFnbmlmaWNh
dGlvbkdlc3R1cmUsIGRvdWJsZSB2aWV3cG9ydE1pbmltdW1TY2FsZSwgZG91YmxlIHZpZXdwb3J0
TWF4aW11bVNjYWxlKTsKKworI2lmIFBMQVRGT1JNKElPUykKKyAgICBib29sIHNtYXJ0TWFnbmlm
aWNhdGlvblpvb21Ub1RhcmdldChkb3VibGUgbWFnbmlmaWNhdGlvbiwgV2ViQ29yZTo6RmxvYXRS
ZWN0IHRhcmdldFJlY3QsIFdlYkNvcmU6OkZsb2F0UG9pbnQgb3JpZ2luKTsKKyAgICBib29sIHNt
YXJ0TWFnbmlmaWNhdGlvblNjcm9sbFRvVGFyZ2V0KFdlYkNvcmU6OkZsb2F0UmVjdCB0YXJnZXRS
ZWN0LCBXZWJDb3JlOjpGbG9hdFBvaW50IG9yaWdpbik7CisjZWxzZQogICAgIHZvaWQgZGlkQ29s
bGVjdEdlb21ldHJ5Rm9yTWFnbmlmaWNhdGlvbkdlc3R1cmUoV2ViQ29yZTo6RmxvYXRSZWN0IHZp
c2libGVDb250ZW50Qm91bmRzLCBib29sIGZyYW1lSGFuZGxlc01hZ25pZmljYXRpb25HZXN0dXJl
KTsKLSAgICB2b2lkIGRpZENvbGxlY3RHZW9tZXRyeUZvclNtYXJ0TWFnbmlmaWNhdGlvbkdlc3R1
cmUoV2ViQ29yZTo6RmxvYXRQb2ludCBvcmlnaW4sIFdlYkNvcmU6OkZsb2F0UmVjdCByZW5kZXJS
ZWN0LCBXZWJDb3JlOjpGbG9hdFJlY3QgdmlzaWJsZUNvbnRlbnRCb3VuZHMsIGJvb2wgaXNSZXBs
YWNlZEVsZW1lbnQsIGJvb2wgZnJhbWVIYW5kbGVzTWFnbmlmaWNhdGlvbkdlc3R1cmUpOwogICAg
IHZvaWQgZGlkSGl0UmVuZGVyVHJlZVNpemVUaHJlc2hvbGQoKTsKIAogICAgIHZvaWQgZW5kTWFn
bmlmaWNhdGlvbkdlc3R1cmUoKTsKQEAgLTE0OSw2ICsxNTksOSBAQCBwcml2YXRlOgogICAgIFJl
dGFpblB0cjxVSVZpZXc+IG1fc25hcHNob3RWaWV3OwogICAgIFJldGFpblB0cjxVSVZpZXc+IG1f
dHJhbnNpdGlvbkNvbnRhaW5lclZpZXc7CiAgICAgUmV0YWluUHRyPFdLU3dpcGVUcmFuc2l0aW9u
Q29udHJvbGxlcj4gbV9zd2lwZUludGVyYWN0aXZlVHJhbnNpdGlvbkRlbGVnYXRlOworICAgIFJl
dGFpblB0cjxXS1NtYXJ0TWFnbmlmaWNhdGlvbkdlc3R1cmVDb250cm9sbGVyPiBtX3NtYXJ0TWFn
bmlmaWNhdGlvbkdlc3R1cmVDb250cm9sbGVyOworICAgIFJldGFpblB0cjxVSVNjcm9sbFZpZXc+
IG1fc21hcnRNYWduaWZpY2F0aW9uU2Nyb2xsVmlldzsKKyAgICBSZXRhaW5QdHI8VUlWaWV3PiBt
X3NtYXJ0TWFnbmlmaWNhdGlvblRhcmdldFZpZXc7CiAgICAgdWludDY0X3QgbV90YXJnZXRSZW5k
ZXJUcmVlU2l6ZTsKICNlbmRpZgogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9tYWMvVmlld0dlc3R1cmVDb250cm9sbGVyLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL21hYy9WaWV3R2VzdHVyZUNvbnRyb2xsZXIubWVzc2FnZXMuaW4KaW5kZXgg
YTBiNThjMC4uODI5MjMwNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21h
Yy9WaWV3R2VzdHVyZUNvbnRyb2xsZXIubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL21hYy9WaWV3R2VzdHVyZUNvbnRyb2xsZXIubWVzc2FnZXMuaW4KQEAgLTIxLDkg
KzIxLDExIEBACiAjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAKIG1lc3NhZ2VzIC0+IFZpZXdHZXN0dXJlQ29udHJv
bGxlciB7CisgICAgRGlkQ29sbGVjdEdlb21ldHJ5Rm9yU21hcnRNYWduaWZpY2F0aW9uR2VzdHVy
ZShXZWJDb3JlOjpGbG9hdFBvaW50IG9yaWdpbiwgV2ViQ29yZTo6RmxvYXRSZWN0IHJlbmRlclJl
Y3QsIFdlYkNvcmU6OkZsb2F0UmVjdCB2aXNpYmxlQ29udGVudEJvdW5kcywgYm9vbCBpc1JlcGxh
Y2VkRWxlbWVudCwgYm9vbCBmcmFtZUhhbmRsZXNNYWduaWZpY2F0aW9uR2VzdHVyZSwgZG91Ymxl
IHZpZXdwb3J0TWluaW11bVNjYWxlLCBkb3VibGUgdmlld3BvcnRNYXhpbXVtU2NhbGUpCisKICNp
ZiAhUExBVEZPUk0oSU9TKQogICAgIERpZENvbGxlY3RHZW9tZXRyeUZvck1hZ25pZmljYXRpb25H
ZXN0dXJlKFdlYkNvcmU6OkZsb2F0UmVjdCB2aXNpYmxlQ29udGVudEJvdW5kcywgYm9vbCBmcmFt
ZUhhbmRsZXNNYWduaWZpY2F0aW9uR2VzdHVyZSkKLSAgICBEaWRDb2xsZWN0R2VvbWV0cnlGb3JT
bWFydE1hZ25pZmljYXRpb25HZXN0dXJlKFdlYkNvcmU6OkZsb2F0UG9pbnQgb3JpZ2luLCBXZWJD
b3JlOjpGbG9hdFJlY3QgcmVuZGVyUmVjdCwgV2ViQ29yZTo6RmxvYXRSZWN0IHZpc2libGVDb250
ZW50Qm91bmRzLCBib29sIGlzUmVwbGFjZWRFbGVtZW50LCBib29sIGZyYW1lSGFuZGxlc01hZ25p
ZmljYXRpb25HZXN0dXJlKQorCiAgICAgRGlkSGl0UmVuZGVyVHJlZVNpemVUaHJlc2hvbGQoKQog
I2VuZGlmCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1ZpZXdH
ZXN0dXJlQ29udHJvbGxlck1hYy5tbSBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvVmll
d0dlc3R1cmVDb250cm9sbGVyTWFjLm1tCmluZGV4IGEyZTQyMWUuLjFhYTE3NTYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvVmlld0dlc3R1cmVDb250cm9sbGVyTWFj
Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvVmlld0dlc3R1cmVDb250cm9s
bGVyTWFjLm1tCkBAIC0yMDUsMTMgKzIwNSwxNSBAQCBzdGF0aWMgZmxvYXQgbWF4aW11bVJlY3Rh
bmdsZUNvbXBvbmVudERlbHRhKEZsb2F0UmVjdCBhLCBGbG9hdFJlY3QgYikKICAgICByZXR1cm4g
c3RkOjptYXgoZmFicyhhLngoKSAtIGIueCgpKSwgc3RkOjptYXgoZmFicyhhLnkoKSAtIGIueSgp
KSwgc3RkOjptYXgoZmFicyhhLndpZHRoKCkgLSBiLndpZHRoKCkpLCBmYWJzKGEuaGVpZ2h0KCkg
LSBiLmhlaWdodCgpKSkpKTsKIH0KIAotdm9pZCBWaWV3R2VzdHVyZUNvbnRyb2xsZXI6OmRpZENv
bGxlY3RHZW9tZXRyeUZvclNtYXJ0TWFnbmlmaWNhdGlvbkdlc3R1cmUoRmxvYXRQb2ludCBvcmln
aW4sIEZsb2F0UmVjdCByZW5kZXJSZWN0LCBGbG9hdFJlY3QgdmlzaWJsZUNvbnRlbnRSZWN0LCBi
b29sIGlzUmVwbGFjZWRFbGVtZW50LCBib29sIGZyYW1lSGFuZGxlc01hZ25pZmljYXRpb25HZXN0
dXJlKQordm9pZCBWaWV3R2VzdHVyZUNvbnRyb2xsZXI6OmRpZENvbGxlY3RHZW9tZXRyeUZvclNt
YXJ0TWFnbmlmaWNhdGlvbkdlc3R1cmUoRmxvYXRQb2ludCBvcmlnaW4sIEZsb2F0UmVjdCByZW5k
ZXJSZWN0LCBGbG9hdFJlY3QgdmlzaWJsZUNvbnRlbnRSZWN0LCBib29sIGlzUmVwbGFjZWRFbGVt
ZW50LCBib29sIGZyYW1lSGFuZGxlc01hZ25pZmljYXRpb25HZXN0dXJlLCBkb3VibGUgdmlld3Bv
cnRNaW5pbXVtU2NhbGUsIGRvdWJsZSB2aWV3cG9ydE1heGltdW1TY2FsZSkKIHsKICAgICBpZiAo
ZnJhbWVIYW5kbGVzTWFnbmlmaWNhdGlvbkdlc3R1cmUpCiAgICAgICAgIHJldHVybjsKIAogICAg
IGRvdWJsZSBjdXJyZW50U2NhbGVGYWN0b3IgPSBtX3dlYlBhZ2VQcm94eS5wYWdlU2NhbGVGYWN0
b3IoKTsKIAorICAgIC8vIEZJWE1FOiBBZG9wdCAoYnkgc2hhcmluZykgdGhlIFZpZXdHZXN0dXJl
Q29udHJvbGxlcklPUyBoZXVyaXN0aWNzLgorCiAgICAgRmxvYXRSZWN0IHVuc2NhbGVkVGFyZ2V0
UmVjdCA9IHJlbmRlclJlY3Q7CiAgICAgdW5zY2FsZWRUYXJnZXRSZWN0LnNjYWxlKDEgLyBjdXJy
ZW50U2NhbGVGYWN0b3IpOwogICAgIHVuc2NhbGVkVGFyZ2V0UmVjdC5pbmZsYXRlWCh1bnNjYWxl
ZFRhcmdldFJlY3Qud2lkdGgoKSAqIHNtYXJ0TWFnbmlmaWNhdGlvbkVsZW1lbnRQYWRkaW5nKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9WaWV3R2VzdHVy
ZUdlb21ldHJ5Q29sbGVjdG9yLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFn
ZS9WaWV3R2VzdHVyZUdlb21ldHJ5Q29sbGVjdG9yLmNwcAppbmRleCBkZDRkYmIyLi44MjcyMWQ1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvVmlld0dlc3R1
cmVHZW9tZXRyeUNvbGxlY3Rvci5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJQYWdlL1ZpZXdHZXN0dXJlR2VvbWV0cnlDb2xsZWN0b3IuY3BwCkBAIC0yNiwxNCArMjYsMTMg
QEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJWaWV3R2VzdHVyZUdlb21ldHJ5Q29s
bGVjdG9yLmgiCiAKLSNpZiAhUExBVEZPUk0oSU9TKQotCiAjaW5jbHVkZSAiVmlld0dlc3R1cmVD
b250cm9sbGVyTWVzc2FnZXMuaCIKICNpbmNsdWRlICJWaWV3R2VzdHVyZUdlb21ldHJ5Q29sbGVj
dG9yTWVzc2FnZXMuaCIKICNpbmNsdWRlICJXZWJDb3JlQXJndW1lbnRDb2RlcnMuaCIKICNpbmNs
dWRlICJXZWJGcmFtZS5oIgogI2luY2x1ZGUgIldlYlBhZ2UuaCIKICNpbmNsdWRlICJXZWJQcm9j
ZXNzLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9GcmFtZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRnJh
bWVWaWV3Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9IaXRUZXN0UmVzdWx0Lmg+CiAjaW5jbHVkZSA8
V2ViQ29yZS9SZW5kZXJWaWV3Lmg+CkBAIC00NCw4ICs0MywxMCBAQCBuYW1lc3BhY2UgV2ViS2l0
IHsKIAogVmlld0dlc3R1cmVHZW9tZXRyeUNvbGxlY3Rvcjo6Vmlld0dlc3R1cmVHZW9tZXRyeUNv
bGxlY3RvcihXZWJQYWdlJiB3ZWJQYWdlKQogICAgIDogbV93ZWJQYWdlKHdlYlBhZ2UpCisjaWYg
UExBVEZPUk0oTUFDKQogICAgICwgbV9yZW5kZXJUcmVlU2l6ZU5vdGlmaWNhdGlvblRocmVzaG9s
ZCgwKQogICAgICwgbV9yZW5kZXJUcmVlU2l6ZU5vdGlmaWNhdGlvblRpbWVyKFJ1bkxvb3A6Om1h
aW4oKSwgdGhpcywgJlZpZXdHZXN0dXJlR2VvbWV0cnlDb2xsZWN0b3I6OnJlbmRlclRyZWVTaXpl
Tm90aWZpY2F0aW9uVGltZXJGaXJlZCkKKyNlbmRpZgogewogICAgIFdlYlByb2Nlc3M6OnNoYXJl
ZCgpLmFkZE1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6Vmlld0dlc3R1cmVHZW9tZXRyeUNvbGxl
Y3Rvcjo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtX3dlYlBhZ2UucGFnZUlEKCksICp0aGlzKTsK
IH0KQEAgLTU1LDMwICs1Niw0MiBAQCBWaWV3R2VzdHVyZUdlb21ldHJ5Q29sbGVjdG9yOjp+Vmll
d0dlc3R1cmVHZW9tZXRyeUNvbGxlY3RvcigpCiAgICAgV2ViUHJvY2Vzczo6c2hhcmVkKCkucmVt
b3ZlTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpWaWV3R2VzdHVyZUdlb21ldHJ5Q29sbGVjdG9y
OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1fd2ViUGFnZS5wYWdlSUQoKSk7CiB9CiAKLXZvaWQg
Vmlld0dlc3R1cmVHZW9tZXRyeUNvbGxlY3Rvcjo6Y29sbGVjdEdlb21ldHJ5Rm9yTWFnbmlmaWNh
dGlvbkdlc3R1cmUoKQotewotICAgIEZsb2F0UmVjdCB2aXNpYmxlQ29udGVudFJlY3QgPSBtX3dl
YlBhZ2UubWFpbkZyYW1lVmlldygpLT52aXNpYmxlQ29udGVudFJlY3RJbmNsdWRpbmdTY3JvbGxi
YXJzKCk7Ci0gICAgYm9vbCBmcmFtZUhhbmRsZXNNYWduaWZpY2F0aW9uR2VzdHVyZSA9IG1fd2Vi
UGFnZS5tYWluV2ViRnJhbWUoKS0+aGFuZGxlc1BhZ2VTY2FsZUdlc3R1cmUoKTsKLSAgICBtX3dl
YlBhZ2Uuc2VuZChNZXNzYWdlczo6Vmlld0dlc3R1cmVDb250cm9sbGVyOjpEaWRDb2xsZWN0R2Vv
bWV0cnlGb3JNYWduaWZpY2F0aW9uR2VzdHVyZSh2aXNpYmxlQ29udGVudFJlY3QsIGZyYW1lSGFu
ZGxlc01hZ25pZmljYXRpb25HZXN0dXJlKSk7Ci19Ci0KIHZvaWQgVmlld0dlc3R1cmVHZW9tZXRy
eUNvbGxlY3Rvcjo6Y29sbGVjdEdlb21ldHJ5Rm9yU21hcnRNYWduaWZpY2F0aW9uR2VzdHVyZShG
bG9hdFBvaW50IG9yaWdpbikKIHsKICAgICBGbG9hdFJlY3QgdmlzaWJsZUNvbnRlbnRSZWN0ID0g
bV93ZWJQYWdlLm1haW5GcmFtZVZpZXcoKS0+dmlzaWJsZUNvbnRlbnRSZWN0SW5jbHVkaW5nU2Ny
b2xsYmFycygpOwogICAgIGJvb2wgZnJhbWVIYW5kbGVzTWFnbmlmaWNhdGlvbkdlc3R1cmUgPSBt
X3dlYlBhZ2UubWFpbldlYkZyYW1lKCktPmhhbmRsZXNQYWdlU2NhbGVHZXN0dXJlKCk7CiAKLSAg
ICBGbG9hdFBvaW50IHNjcm9sbGVkT3JpZ2luID0gb3JpZ2luOwotICAgIHNjcm9sbGVkT3JpZ2lu
Lm1vdmVCeShtX3dlYlBhZ2UubWFpbkZyYW1lVmlldygpLT5zY3JvbGxQb3NpdGlvbigpKTsKLQog
ICAgIEhpdFRlc3RSZXF1ZXN0IHJlcXVlc3QoSGl0VGVzdFJlcXVlc3Q6OlJlYWRPbmx5IHwgSGl0
VGVzdFJlcXVlc3Q6OkFjdGl2ZSB8IEhpdFRlc3RSZXF1ZXN0OjpEaXNhbGxvd1NoYWRvd0NvbnRl
bnQpOwotICAgIEhpdFRlc3RSZXN1bHQgaGl0VGVzdFJlc3VsdCA9IEhpdFRlc3RSZXN1bHQoc2Ny
b2xsZWRPcmlnaW4pOworICAgIEludFBvaW50IG9yaWdpbkluQ29udGVudHNTcGFjZSA9IG1fd2Vi
UGFnZS5tYWluRnJhbWVWaWV3KCktPndpbmRvd1RvQ29udGVudHMocm91bmRlZEludFBvaW50KG9y
aWdpbikpOworICAgIEhpdFRlc3RSZXN1bHQgaGl0VGVzdFJlc3VsdCA9IEhpdFRlc3RSZXN1bHQo
b3JpZ2luSW5Db250ZW50c1NwYWNlKTsKKwogICAgIG1fd2ViUGFnZS5tYWluRnJhbWVWaWV3KCkt
PnJlbmRlclZpZXcoKS0+aGl0VGVzdChyZXF1ZXN0LCBoaXRUZXN0UmVzdWx0KTsKIAotICAgIGlm
IChoaXRUZXN0UmVzdWx0LmlubmVyTm9kZSgpKSB7CisgICAgaWYgKE5vZGUgKm5vZGUgPSBoaXRU
ZXN0UmVzdWx0LmlubmVyTm9kZSgpKSB7CiAgICAgICAgIGJvb2wgaXNSZXBsYWNlZDsKLSAgICAg
ICAgRmxvYXRSZWN0IHJlbmRlclJlY3QgPSBoaXRUZXN0UmVzdWx0LmlubmVyTm9kZSgpLT5yZW5k
ZXJSZWN0KCZpc1JlcGxhY2VkKTsKLSAgICAgICAgbV93ZWJQYWdlLnNlbmQoTWVzc2FnZXM6OlZp
ZXdHZXN0dXJlQ29udHJvbGxlcjo6RGlkQ29sbGVjdEdlb21ldHJ5Rm9yU21hcnRNYWduaWZpY2F0
aW9uR2VzdHVyZShvcmlnaW4sIHJlbmRlclJlY3QsIHZpc2libGVDb250ZW50UmVjdCwgaXNSZXBs
YWNlZCwgZnJhbWVIYW5kbGVzTWFnbmlmaWNhdGlvbkdlc3R1cmUpKTsKKyAgICAgICAgRmxvYXRS
ZWN0IHJlbmRlclJlY3QgPSBub2RlLT5yZW5kZXJSZWN0KCZpc1JlcGxhY2VkKTsKKworI2lmIFBM
QVRGT1JNKE1BQykKKyAgICAgICAgZG91YmxlIHZpZXdwb3J0TWluaW11bVNjYWxlID0gMDsKKyAg
ICAgICAgZG91YmxlIHZpZXdwb3J0TWF4aW11bVNjYWxlID0gc3RkOjpudW1lcmljX2xpbWl0czxk
b3VibGU+OjptYXgoKTsKKyNlbHNlCisgICAgICAgIGRvdWJsZSB2aWV3cG9ydE1pbmltdW1TY2Fs
ZSA9IG1fd2ViUGFnZS5taW5pbXVtUGFnZVNjYWxlRmFjdG9yKCk7CisgICAgICAgIGRvdWJsZSB2
aWV3cG9ydE1heGltdW1TY2FsZSA9IG1fd2ViUGFnZS5tYXhpbXVtUGFnZVNjYWxlRmFjdG9yKCk7
CisjZW5kaWYKKworICAgICAgICBtX3dlYlBhZ2Uuc2VuZChNZXNzYWdlczo6Vmlld0dlc3R1cmVD
b250cm9sbGVyOjpEaWRDb2xsZWN0R2VvbWV0cnlGb3JTbWFydE1hZ25pZmljYXRpb25HZXN0dXJl
KG9yaWdpbiwgcmVuZGVyUmVjdCwgdmlzaWJsZUNvbnRlbnRSZWN0LCBpc1JlcGxhY2VkLCBmcmFt
ZUhhbmRsZXNNYWduaWZpY2F0aW9uR2VzdHVyZSwgdmlld3BvcnRNaW5pbXVtU2NhbGUsIHZpZXdw
b3J0TWF4aW11bVNjYWxlKSk7CisgICAgICAgIHJldHVybjsKICAgICB9CisKKyAgICBtX3dlYlBh
Z2Uuc2VuZChNZXNzYWdlczo6Vmlld0dlc3R1cmVDb250cm9sbGVyOjpEaWRDb2xsZWN0R2VvbWV0
cnlGb3JTbWFydE1hZ25pZmljYXRpb25HZXN0dXJlKEZsb2F0UG9pbnQoKSwgRmxvYXRSZWN0KCks
IEZsb2F0UmVjdCgpLCBmYWxzZSwgZnJhbWVIYW5kbGVzTWFnbmlmaWNhdGlvbkdlc3R1cmUsIDAs
IDApKTsKK30KKworI2lmIFBMQVRGT1JNKE1BQykKK3ZvaWQgVmlld0dlc3R1cmVHZW9tZXRyeUNv
bGxlY3Rvcjo6Y29sbGVjdEdlb21ldHJ5Rm9yTWFnbmlmaWNhdGlvbkdlc3R1cmUoKQoreworICAg
IEZsb2F0UmVjdCB2aXNpYmxlQ29udGVudFJlY3QgPSBtX3dlYlBhZ2UubWFpbkZyYW1lVmlldygp
LT52aXNpYmxlQ29udGVudFJlY3RJbmNsdWRpbmdTY3JvbGxiYXJzKCk7CisgICAgYm9vbCBmcmFt
ZUhhbmRsZXNNYWduaWZpY2F0aW9uR2VzdHVyZSA9IG1fd2ViUGFnZS5tYWluV2ViRnJhbWUoKS0+
aGFuZGxlc1BhZ2VTY2FsZUdlc3R1cmUoKTsKKyAgICBtX3dlYlBhZ2Uuc2VuZChNZXNzYWdlczo6
Vmlld0dlc3R1cmVDb250cm9sbGVyOjpEaWRDb2xsZWN0R2VvbWV0cnlGb3JNYWduaWZpY2F0aW9u
R2VzdHVyZSh2aXNpYmxlQ29udGVudFJlY3QsIGZyYW1lSGFuZGxlc01hZ25pZmljYXRpb25HZXN0
dXJlKSk7CiB9CiAKIHZvaWQgVmlld0dlc3R1cmVHZW9tZXRyeUNvbGxlY3Rvcjo6bWFpbkZyYW1l
RGlkTGF5b3V0KCkKQEAgLTkzLDcgKzEwNiw3IEBAIHZvaWQgVmlld0dlc3R1cmVHZW9tZXRyeUNv
bGxlY3Rvcjo6cmVuZGVyVHJlZVNpemVOb3RpZmljYXRpb25UaW1lckZpcmVkKCkKIHsKICAgICBt
X3dlYlBhZ2Uuc2VuZChNZXNzYWdlczo6Vmlld0dlc3R1cmVDb250cm9sbGVyOjpEaWRIaXRSZW5k
ZXJUcmVlU2l6ZVRocmVzaG9sZCgpKTsKIH0KKyNlbmRpZgogCiB9IC8vIG5hbWVzcGFjZSBXZWJL
aXQKIAotI2VuZGlmIC8vICFQTEFURk9STShJT1MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvVmlld0dlc3R1cmVHZW9tZXRyeUNvbGxlY3Rvci5oIGIvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1ZpZXdHZXN0dXJlR2VvbWV0cnlDb2xsZWN0
b3IuaAppbmRleCBhMzA4OGVhLi5lMzg2Y2Y3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYlBhZ2UvVmlld0dlc3R1cmVHZW9tZXRyeUNvbGxlY3Rvci5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9WaWV3R2VzdHVyZUdlb21ldHJ5Q29sbGVj
dG9yLmgKQEAgLTI2LDggKzI2LDYgQEAKICNpZm5kZWYgVmlld0dlc3R1cmVHZW9tZXRyeUNvbGxl
Y3Rvcl9oCiAjZGVmaW5lIFZpZXdHZXN0dXJlR2VvbWV0cnlDb2xsZWN0b3JfaAogCi0jaWYgIVBM
QVRGT1JNKElPUykKLQogI2luY2x1ZGUgIk1lc3NhZ2VSZWNlaXZlci5oIgogI2luY2x1ZGUgPHd0
Zi9SdW5Mb29wLmg+CiAKQEAgLTUxLDIwICs0OSwyMyBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwg
dm9pZCBkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24qLCBJUEM6Ok1lc3NhZ2VEZWNv
ZGVyJikgb3ZlcnJpZGU7CiAKICAgICAvLyBNZXNzYWdlIGhhbmRsZXJzLgotICAgIHZvaWQgY29s
bGVjdEdlb21ldHJ5Rm9yTWFnbmlmaWNhdGlvbkdlc3R1cmUoKTsKICAgICB2b2lkIGNvbGxlY3RH
ZW9tZXRyeUZvclNtYXJ0TWFnbmlmaWNhdGlvbkdlc3R1cmUoV2ViQ29yZTo6RmxvYXRQb2ludCBv
cmlnaW4pOworCisjaWYgUExBVEZPUk0oTUFDKQorICAgIHZvaWQgY29sbGVjdEdlb21ldHJ5Rm9y
TWFnbmlmaWNhdGlvbkdlc3R1cmUoKTsKICAgICB2b2lkIHNldFJlbmRlclRyZWVTaXplTm90aWZp
Y2F0aW9uVGhyZXNob2xkKHVpbnQ2NF90IHNpemUpIHsgbV9yZW5kZXJUcmVlU2l6ZU5vdGlmaWNh
dGlvblRocmVzaG9sZCA9IHNpemU7IH0KIAogICAgIHZvaWQgcmVuZGVyVHJlZVNpemVOb3RpZmlj
YXRpb25UaW1lckZpcmVkKCk7CisjZW5kaWYKIAogICAgIFdlYlBhZ2UmIG1fd2ViUGFnZTsKIAor
I2lmIFBMQVRGT1JNKE1BQykKICAgICB1aW50NjRfdCBtX3JlbmRlclRyZWVTaXplTm90aWZpY2F0
aW9uVGhyZXNob2xkOwogICAgIFJ1bkxvb3A6OlRpbWVyPFZpZXdHZXN0dXJlR2VvbWV0cnlDb2xs
ZWN0b3I+IG1fcmVuZGVyVHJlZVNpemVOb3RpZmljYXRpb25UaW1lcjsKKyNlbmRpZgogfTsKIAog
fSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKLSNlbmRpZiAvLyAhUExBVEZPUk0oSU9TKQotCiAjZW5k
aWYgLy8gVmlld0dlc3R1cmVHZW9tZXRyeUNvbGxlY3RvcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1ZpZXdHZXN0dXJlR2VvbWV0cnlDb2xsZWN0b3IubWVz
c2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvVmlld0dlc3R1cmVH
ZW9tZXRyeUNvbGxlY3Rvci5tZXNzYWdlcy5pbgppbmRleCBlZmQwNTFmLi4wNDcyMDlhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvVmlld0dlc3R1cmVHZW9t
ZXRyeUNvbGxlY3Rvci5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYlBhZ2UvVmlld0dlc3R1cmVHZW9tZXRyeUNvbGxlY3Rvci5tZXNzYWdlcy5pbgpAQCAtMjAs
MTQgKzIwLDEyIEBACiAjIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCiAjIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAKLSNp
ZiAhUExBVEZPUk0oSU9TKQotCiBtZXNzYWdlcyAtPiBWaWV3R2VzdHVyZUdlb21ldHJ5Q29sbGVj
dG9yIHsKKyAgICBDb2xsZWN0R2VvbWV0cnlGb3JTbWFydE1hZ25pZmljYXRpb25HZXN0dXJlKFdl
YkNvcmU6OkZsb2F0UG9pbnQgb3JpZ2luKQogCi1Db2xsZWN0R2VvbWV0cnlGb3JNYWduaWZpY2F0
aW9uR2VzdHVyZSgpCi1Db2xsZWN0R2VvbWV0cnlGb3JTbWFydE1hZ25pZmljYXRpb25HZXN0dXJl
KFdlYkNvcmU6OkZsb2F0UG9pbnQgb3JpZ2luKQotCi1TZXRSZW5kZXJUcmVlU2l6ZU5vdGlmaWNh
dGlvblRocmVzaG9sZCh1aW50NjRfdCBzaXplKQotfQorI2lmICFQTEFURk9STShJT1MpCisgICAg
Q29sbGVjdEdlb21ldHJ5Rm9yTWFnbmlmaWNhdGlvbkdlc3R1cmUoKQogCisgICAgU2V0UmVuZGVy
VHJlZVNpemVOb3RpZmljYXRpb25UaHJlc2hvbGQodWludDY0X3Qgc2l6ZSkKICNlbmRpZgorfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3Bw
IGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCmluZGV4IDVm
ZTMwMzkuLmFlZWFlYTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJQYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViUGFnZS5jcHAKQEAgLTI1MSw5ICsyNTEsNyBAQCBXZWJQYWdlOjpXZWJQYWdlKHVpbnQ2NF90
IHBhZ2VJRCwgY29uc3QgV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycyYgcGFyYW1ldGVycykKICAg
ICAsIG1fcGRmUGx1Z2luRW5hYmxlZChmYWxzZSkKICAgICAsIG1faGFzQ2FjaGVkV2luZG93RnJh
bWUoZmFsc2UpCiAgICAgLCBtX2tleWJvYXJkRXZlbnRCZWluZ0ludGVycHJldGVkKDApCi0jaWYg
IVBMQVRGT1JNKElPUykKICAgICAsIG1fdmlld0dlc3R1cmVHZW9tZXRyeUNvbGxlY3RvcigqdGhp
cykKLSNlbmRpZgogI2VsaWYgUExBVEZPUk0oR1RLKSAmJiBIQVZFKEFDQ0VTU0lCSUxJVFkpCiAg
ICAgLCBtX2FjY2Vzc2liaWxpdHlPYmplY3QoMCkKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaCBiL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKaW5kZXggODJkOTI2NC4uMjIzY2NkZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCkBAIC05ODAsOSArOTgw
LDcgQEAgcHJpdmF0ZToKIAogICAgIFdlYkNvcmU6OktleWJvYXJkRXZlbnQqIG1fa2V5Ym9hcmRF
dmVudEJlaW5nSW50ZXJwcmV0ZWQ7CiAKLSNpZiAhUExBVEZPUk0oSU9TKQogICAgIFZpZXdHZXN0
dXJlR2VvbWV0cnlDb2xsZWN0b3IgbV92aWV3R2VzdHVyZUdlb21ldHJ5Q29sbGVjdG9yOwotI2Vu
ZGlmCiAKICNlbGlmIEhBVkUoQUNDRVNTSUJJTElUWSkgJiYgKFBMQVRGT1JNKEdUSykgfHwgUExB
VEZPUk0oRUZMKSkKICAgICBHUmVmUHRyPFdlYlBhZ2VBY2Nlc3NpYmlsaXR5T2JqZWN0PiBtX2Fj
Y2Vzc2liaWxpdHlPYmplY3Q7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>225278</attachid>
            <date>2014-02-26 12:17:26 -0800</date>
            <delta_ts>2014-02-26 14:07:22 -0800</delta_ts>
            <desc>new approach</desc>
            <filename>doubletap.diff</filename>
            <type>text/plain</type>
            <size>54108</size>
            <attacher name="Tim Horton">thorton</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCAwNGJkYzE2Li40YWM2OWFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQg
QEAKKzIwMTQtMDItMjYgIFRpbSBIb3J0b24gIDx0aW1vdGh5X2hvcnRvbkBhcHBsZS5jb20+CisK
KyAgICAgICAgV2ViS2l0MiBWaWV3IEdlc3R1cmVzIChTbWFydCBNYWduaWZpY2F0aW9uKTogU3Vw
cG9ydCBmb3IgaU9TCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xMjkxNDYKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzE2MDMyNjY4PgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViQ29yZS5leHAuaW46
CisgICAgICAgIEFkZCBhbiBleHBvcnQuCisKIDIwMTQtMDItMjYgIEpvc2VwaCBQZWNvcmFybyAg
PHBlY29yYXJvQGFwcGxlLmNvbT4KIAogICAgICAgICBXZWIgSW5zcGVjdG9yOiBSZW1vdmUgY29u
c29sZS5wcm9maWxlcyBmcm9tIHdpbmRvdy5jb25zb2xlIEFQSQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS5leHAuaW4gYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgpp
bmRleCA2NzMxNTg1Li5lYThjZmE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
LmV4cC5pbgorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgpAQCAtMTg3NSw2ICsx
ODc1LDcgQEAgX19aTks3V2ViQ29yZTlGbG9hdFF1YWQxMWJvdW5kaW5nQm94RXYKIF9fWk5LN1dl
YkNvcmU5RmxvYXRSZWN0MTBpbnRlcnNlY3RzRVJLUzBfCiBfX1pOSzdXZWJDb3JlOUZsb2F0UmVj
dGN2NkNHUmVjdEV2CiBfX1pOSzdXZWJDb3JlOUZsb2F0U2l6ZTZpc1plcm9FdgorX19aTks3V2Vi
Q29yZTlGbG9hdFNpemUxNGRpYWdvbmFsTGVuZ3RoRXYKIF9fWk5LN1dlYkNvcmU5RnJhbWVUcmVl
MTBjaGlsZENvdW50RXYKIF9fWk5LN1dlYkNvcmU5RnJhbWVUcmVlMTJ0cmF2ZXJzZU5leHRFUEtO
U181RnJhbWVFCiBfX1pOSzdXZWJDb3JlOUZyYW1lVHJlZTE0aXNEZXNjZW5kYW50T2ZFUEtOU181
RnJhbWVFCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cKaW5kZXggM2NkODAwMS4uNTQyMzQ1OCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDkxIEBACisyMDE0LTAyLTI2ICBUaW0gSG9ydG9uICA8dGltb3RoeV9ob3J0b25AYXBwbGUu
Y29tPgorCisgICAgICAgIFdlYktpdDIgVmlldyBHZXN0dXJlcyAoU21hcnQgTWFnbmlmaWNhdGlv
bik6IFN1cHBvcnQgZm9yIGlPUworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTI5MTQ2CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8xNjAzMjY2OD4KKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgc3VwcG9y
dCBmb3IgZG91YmxlLXRhcCBzbWFydCBtYWduaWZpY2F0aW9uIG9uIGlPUy4KKworICAgICAgICAq
IERlcml2ZWRTb3VyY2VzLm1ha2U6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dl
YlZpZXcubW06CisgICAgICAgICgtW1dLV2ViVmlldyBpbml0V2l0aEZyYW1lOmNvbmZpZ3VyYXRp
b246XSk6CisgICAgICAgIFdLQ29udGVudFZpZXcgaXMgbm8gbG9uZ2VyIEFQSSwgc28gaXQgY2Fu
IGtub3cgYWJvdXQgV0tXZWJWaWV3CisgICAgICAgIGFuZCB3aWxsIGFsd2F5cyBoYXZlIG9uZS4K
KworICAgICAgICAoLVtXS1dlYlZpZXcgY29udGVudFZpZXc6ZGlkQ29tbWl0TGF5ZXJUcmVlOldl
YktpdDo6XSk6CisgICAgICAgIERvbid0IHJlcGxhY2UgdGhlIHpvb20gc2NhbGUgaWYgd2UncmUg
Y3VycmVudGx5IGFuaW1hdGluZy4KKworICAgICAgICAoLVtXS1dlYlZpZXcgX3Rha2VWaWV3U25h
cHNob3RdKToKKyAgICAgICAgUmVuYW1lLgorCisgICAgICAgICgtW1dLV2ViVmlldyBfem9vbVRv
UG9pbnQ6V2ViQ29yZTo6YXRTY2FsZTpdKToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF96b29tVG9S
ZWN0OldlYkNvcmU6OmF0U2NhbGU6b3JpZ2luOldlYkNvcmU6Ol0pOgorICAgICAgICAoY29uc3Ry
YWluQ29udGVudE9mZnNldCk6CisgICAgICAgICgtW1dLV2ViVmlldyBfc2Nyb2xsVG9SZWN0Oldl
YkNvcmU6Om9yaWdpbjpXZWJDb3JlOjptaW5pbXVtU2Nyb2xsRGlzdGFuY2U6XSk6CisgICAgICAg
ICgtW1dLV2ViVmlldyBfem9vbU91dFdpdGhPcmlnaW46XSk6CisgICAgICAgICgtW1dLV2ViVmll
dyBfem9vbVRvUmVjdDp3aXRoT3JpZ2luOmZpdEVudGlyZVJlY3Q6bWluaW11bVNjYWxlOm1heGlt
dW1TY2FsZTptaW5pbXVtU2Nyb2xsRGlzdGFuY2U6XSk6CisgICAgICAgIEFkZCBfem9vbVRvUmVj
dDp3aXRoT3JpZ2luOmZpdEVudGlyZVJlY3Q6bWluaW11bVNjYWxlOm1heGltdW1TY2FsZTptaW5p
bXVtU2Nyb2xsRGlzdGFuY2U6CisgICAgICAgIGFuZCBfem9vbU91dFdpdGhPcmlnaW46IGFzIGlu
dGVybmFsIEFQSSwgZm9yIHVzZSBieSBTbWFydE1hZ25pZmljYXRpb25Db250cm9sbGVyIHZpYSBX
S0NvbnRlbnRWaWV3LgorICAgICAgICBUaGVzZSB3aWxsIHVzZSBzb21lIGhldXJpc3RpY3MgdG8g
Z2VuZXJhbGx5IGNlbnRlciB0aGUgdGFyZ2V0IHJlY3QgaW4gdGhlIHZpZXcKKyAgICAgICAgaW4g
YSB3YXkgdGhhdCBzaG91bGQgbWF0Y2ggV2ViS2l0MSBmYWlybHkgY2xvc2VseS4KKworICAgICAg
ICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3SW50ZXJuYWwuaDoKKyAgICAgICAgRG9u
J3QgdXNlIHRoZSBXS0NvbnRlbnRWaWV3RGVsZWdhdGUgcHJvdG9jb2wgZm9yIHRoaW5ncyB0aGF0
IGRvbid0IGJlbG9uZyB0aGVyZS4KKworICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvU21hcnRNYWdu
aWZpY2F0aW9uQ29udHJvbGxlci5oOiBBZGRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1Nt
YXJ0TWFnbmlmaWNhdGlvbkNvbnRyb2xsZXIubWVzc2FnZXMuaW46IEFkZGVkLgorICAgICAgICAq
IFVJUHJvY2Vzcy9pb3MvU21hcnRNYWduaWZpY2F0aW9uQ29udHJvbGxlci5tbTogQWRkZWQuCisg
ICAgICAgIChXZWJLaXQ6OlNtYXJ0TWFnbmlmaWNhdGlvbkNvbnRyb2xsZXI6OlNtYXJ0TWFnbmlm
aWNhdGlvbkNvbnRyb2xsZXIpOgorICAgICAgICAoV2ViS2l0OjpTbWFydE1hZ25pZmljYXRpb25D
b250cm9sbGVyOjp+U21hcnRNYWduaWZpY2F0aW9uQ29udHJvbGxlcik6CisgICAgICAgIChXZWJL
aXQ6OlNtYXJ0TWFnbmlmaWNhdGlvbkNvbnRyb2xsZXI6OmhhbmRsZVNtYXJ0TWFnbmlmaWNhdGlv
bkdlc3R1cmUpOgorICAgICAgICAoV2ViS2l0OjpTbWFydE1hZ25pZmljYXRpb25Db250cm9sbGVy
OjpkaWRDb2xsZWN0R2VvbWV0cnlGb3JTbWFydE1hZ25pZmljYXRpb25HZXN0dXJlKToKKyAgICAg
ICAgU21hcnRNYWduaWZpY2F0aW9uQ29udHJvbGxlciBzaXRzIG9mZiBvZiBXS0NvbnRlbnRWaWV3
LCBhbmQgc2VuZHMvcmVjZWl2ZXMKKyAgICAgICAgbWVzc2FnZXMgdG8gdGhlIFdlYlByb2Nlc3Mg
dG8gZG8gdGhlIHNtYXJ0IG1hZ25pZmljYXRpb24gaGl0LXRlc3RpbmcuCisKKyAgICAgICAgKiBV
SVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXcuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1dL
Q29udGVudFZpZXcubW06CisgICAgICAgICgtW1dLQ29udGVudFZpZXcgaW5pdFdpdGhGcmFtZTpj
b250ZXh0OldlYktpdDo6Y29uZmlndXJhdGlvbjpXZWJLaXQ6OndlYlZpZXc6XSk6CisgICAgICAg
IEFzIGJlZm9yZSwgdGVhY2ggV0tDb250ZW50VmlldyBhYm91dCBpdHMgb3duaW5nIFdLV2ViVmll
dy4KKworICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IF90YWtlVmlld1NuYXBzaG90XSk6CisgICAg
ICAgIFJlbmFtZS4KKworICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IF96b29tVG9SZWN0OndpdGhP
cmlnaW46Zml0RW50aXJlUmVjdDptaW5pbXVtU2NhbGU6bWF4aW11bVNjYWxlOm1pbmltdW1TY3Jv
bGxEaXN0YW5jZTpdKToKKyAgICAgICAgKC1bV0tDb250ZW50VmlldyBfem9vbU91dFdpdGhPcmln
aW46XSk6CisgICAgICAgIEZvcndhcmQgX3pvb21Ub1JlY3Q6Ojo6OjogYW5kIF96b29tT3V0V2l0
aE9yaWdpbjogdG8gV0tXZWJWaWV3LgorCisgICAgICAgICogVUlQcm9jZXNzL2lvcy9XS0NvbnRl
bnRWaWV3SW50ZXJhY3Rpb24uaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1dLQ29udGVudFZp
ZXdJbnRlcmFjdGlvbi5tbToKKyAgICAgICAgKC1bV0tDb250ZW50VmlldyBzZXR1cEludGVyYWN0
aW9uXSk6CisgICAgICAgICgtW1dLQ29udGVudFZpZXcgX2RvdWJsZVRhcFJlY29nbml6ZWQ6XSk6
CisgICAgICAgICgtW1dLQ29udGVudFZpZXcgX3R3b0ZpbmdlckRvdWJsZVRhcFJlY29nbml6ZWQ6
XSk6CisgICAgICAgIEZvcndhcmQgZG91YmxlIHRhcCB0byB0aGUgU21hcnRNYWduaWZpY2F0aW9u
Q29udHJvbGxlci4KKworICAgICAgICAqIFVJUHJvY2Vzcy9tYWMvVmlld0dlc3R1cmVDb250cm9s
bGVyLmg6CisgICAgICAgICogVUlQcm9jZXNzL21hYy9WaWV3R2VzdHVyZUNvbnRyb2xsZXIubWVz
c2FnZXMuaW46CisgICAgICAgICogVUlQcm9jZXNzL21hYy9WaWV3R2VzdHVyZUNvbnRyb2xsZXJN
YWMubW06CisgICAgICAgIChXZWJLaXQ6OlZpZXdHZXN0dXJlQ29udHJvbGxlcjo6ZGlkQ29sbGVj
dEdlb21ldHJ5Rm9yU21hcnRNYWduaWZpY2F0aW9uR2VzdHVyZSk6CisgICAgICAgIFJldHJpZXZl
IHRoZSBtaW5pbXVtL21heGltdW0gdmlld3BvcnQgc2NhbGUgZnJvbSB0aGUgV2ViUHJvY2Vzcy4K
KworICAgICAgICAqIFdlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAg
QWRkIG5ldyBmaWxlcy4KKworICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9WaWV3R2VzdHVy
ZUdlb21ldHJ5Q29sbGVjdG9yLmNwcDoKKyAgICAgICAgKFdlYktpdDo6Vmlld0dlc3R1cmVHZW9t
ZXRyeUNvbGxlY3Rvcjo6Vmlld0dlc3R1cmVHZW9tZXRyeUNvbGxlY3Rvcik6CisgICAgICAgIChX
ZWJLaXQ6OlZpZXdHZXN0dXJlR2VvbWV0cnlDb2xsZWN0b3I6OmRpc3BhdGNoRGlkQ29sbGVjdEdl
b21ldHJ5Rm9yU21hcnRNYWduaWZpY2F0aW9uR2VzdHVyZSk6CisgICAgICAgIChXZWJLaXQ6OlZp
ZXdHZXN0dXJlR2VvbWV0cnlDb2xsZWN0b3I6OmNvbGxlY3RHZW9tZXRyeUZvclNtYXJ0TWFnbmlm
aWNhdGlvbkdlc3R1cmUpOgorICAgICAgICAoV2ViS2l0OjpWaWV3R2VzdHVyZUdlb21ldHJ5Q29s
bGVjdG9yOjpjb2xsZWN0R2VvbWV0cnlGb3JNYWduaWZpY2F0aW9uR2VzdHVyZSk6CisgICAgICAg
IEZhY3RvciBvdXQgY29kZSB0byBzZW5kIHRoZSBnZW9tZXRyeSBiYWNrIHRvIHRoZSBVSSBwcm9j
ZXNzLgorCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1ZpZXdHZXN0dXJlR2VvbWV0cnlD
b2xsZWN0b3IuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvVmlld0dlc3R1cmVHZW9t
ZXRyeUNvbGxlY3Rvci5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViUGFnZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OldlYlBhZ2UpOgorICAgICAg
ICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmg6CisgICAgICAgIFdlIHNob3VsZCBoYXZl
IGEgVmlld0dlc3R1cmVHZW9tZXRyeUNvbGxlY3RvciBvbiBpT1MgdG9vLgorCiAyMDE0LTAyLTI2
ICBTaW1vbiBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgogCiAgICAgICAgIEJ1aWxk
IGZpeDogQ29udGV4dE1lbnVDb250ZXh0RGF0YS4qIHNob3VsZCBub3QgYmUgaW4gdGhlIENvcHkg
RmlsZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0Rlcml2ZWRTb3VyY2VzLm1ha2UgYi9T
b3VyY2UvV2ViS2l0Mi9EZXJpdmVkU291cmNlcy5tYWtlCmluZGV4IGQ2M2QzNDMuLjQ0YTgyODYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0Rlcml2ZWRTb3VyY2VzLm1ha2UKKysrIGIvU291
cmNlL1dlYktpdDIvRGVyaXZlZFNvdXJjZXMubWFrZQpAQCAtOTMsNiArOTMsNyBAQCBNRVNTQUdF
X1JFQ0VJVkVSUyA9IFwKICAgICBSZW1vdGVTY3JvbGxpbmdDb29yZGluYXRvciBcCiAgICAgU2Vj
SXRlbVNoaW0gXAogICAgIFNlY0l0ZW1TaGltUHJveHkgXAorICAgIFNtYXJ0TWFnbmlmaWNhdGlv
bkNvbnRyb2xsZXIgXAogICAgIFN0b3JhZ2VBcmVhTWFwIFwKICAgICBTdG9yYWdlTWFuYWdlciBc
CiAgICAgVmlld0dlc3R1cmVDb250cm9sbGVyIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0KaW5kZXggYjhjNTEwNy4uOWVjYzIyZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0KKysr
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0KQEAgLTE0
Miw3ICsxNDIsNyBAQAogCiAgICAgW3NlbGYgYWRkU3Vidmlldzpfc2Nyb2xsVmlldy5nZXQoKV07
CiAKLSAgICBfY29udGVudFZpZXcgPSBhZG9wdE5TKFtbV0tDb250ZW50VmlldyBhbGxvY10gaW5p
dFdpdGhGcmFtZTpib3VuZHMgY29udGV4dDpjb250ZXh0IGNvbmZpZ3VyYXRpb246c3RkOjptb3Zl
KHdlYlBhZ2VDb25maWd1cmF0aW9uKV0pOworICAgIF9jb250ZW50VmlldyA9IGFkb3B0TlMoW1tX
S0NvbnRlbnRWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOmJvdW5kcyBjb250ZXh0OmNvbnRleHQg
Y29uZmlndXJhdGlvbjpzdGQ6Om1vdmUod2ViUGFnZUNvbmZpZ3VyYXRpb24pIHdlYlZpZXc6c2Vs
Zl0pOwogICAgIF9wYWdlID0gW19jb250ZW50VmlldyBwYWdlXTsKICAgICBbX2NvbnRlbnRWaWV3
IHNldERlbGVnYXRlOnNlbGZdOwogICAgIFtfY29udGVudFZpZXcgbGF5ZXJdLmFuY2hvclBvaW50
ID0gQ0dQb2ludFplcm87CkBAIC0zMjYsNyArMzI2LDcgQEAKICAgICBbX3Njcm9sbFZpZXcgc2V0
TWluaW11bVpvb21TY2FsZTpsYXllclRyZWVUcmFuc2FjdGlvbi5taW5pbXVtU2NhbGVGYWN0b3Io
KV07CiAgICAgW19zY3JvbGxWaWV3IHNldE1heGltdW1ab29tU2NhbGU6bGF5ZXJUcmVlVHJhbnNh
Y3Rpb24ubWF4aW11bVNjYWxlRmFjdG9yKCldOwogICAgIFtfc2Nyb2xsVmlldyBzZXRab29tRW5h
YmxlZDpsYXllclRyZWVUcmFuc2FjdGlvbi5hbGxvd3NVc2VyU2NhbGluZygpXTsKLSAgICBpZiAo
IWxheWVyVHJlZVRyYW5zYWN0aW9uLnNjYWxlV2FzU2V0QnlVSVByb2Nlc3MoKSAmJiAhW19zY3Jv
bGxWaWV3IGlzWm9vbWluZ10gJiYgIVtfc2Nyb2xsVmlldyBpc1pvb21Cb3VuY2luZ10pCisgICAg
aWYgKCFsYXllclRyZWVUcmFuc2FjdGlvbi5zY2FsZVdhc1NldEJ5VUlQcm9jZXNzKCkgJiYgIVtf
c2Nyb2xsVmlldyBpc1pvb21pbmddICYmICFbX3Njcm9sbFZpZXcgaXNab29tQm91bmNpbmddICYm
ICFbX3Njcm9sbFZpZXcgX2lzQW5pbWF0aW5nWm9vbV0pCiAgICAgICAgIFtfc2Nyb2xsVmlldyBz
ZXRab29tU2NhbGU6bGF5ZXJUcmVlVHJhbnNhY3Rpb24ucGFnZVNjYWxlRmFjdG9yKCldOwogCiAg
ICAgaWYgKF9nZXN0dXJlQ29udHJvbGxlcikKQEAgLTM0MCw3ICszNDAsNyBAQAogICAgIAogfQog
Ci0tIChSZXRhaW5QdHI8Q0dJbWFnZVJlZj4pdGFrZVZpZXdTbmFwc2hvdEZvckNvbnRlbnRWaWV3
OihXS0NvbnRlbnRWaWV3ICopY29udGVudFZpZXcKKy0gKFJldGFpblB0cjxDR0ltYWdlUmVmPilf
dGFrZVZpZXdTbmFwc2hvdAogewogICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgYmUgYWJsZSB0byB1
c2UgYWNxdWlyZSBhbiBJT1N1cmZhY2UgZGlyZWN0bHksIGluc3RlYWQgb2YgZ29pbmcgdG8gQ0dJ
bWFnZSBoZXJlIGFuZCBiYWNrIGluIFZpZXdTbmFwc2hvdFN0b3JlLgogICAgIFVJR3JhcGhpY3NC
ZWdpbkltYWdlQ29udGV4dFdpdGhPcHRpb25zKHNlbGYuYm91bmRzLnNpemUsIFlFUywgc2VsZi53
aW5kb3cuc2NyZWVuLnNjYWxlKTsKQEAgLTM1MCw2ICszNTAsMTE5IEBACiAgICAgcmV0dXJuIGlt
YWdlLkNHSW1hZ2U7CiB9CiAKKy0gKHZvaWQpX3pvb21Ub1BvaW50OihXZWJDb3JlOjpGbG9hdFBv
aW50KXBvaW50IGF0U2NhbGU6KGRvdWJsZSlzY2FsZQoreworICAgIGNvbnN0IGRvdWJsZSBtYXhp
bXVtWm9vbUR1cmF0aW9uID0gMC40OworICAgIGNvbnN0IGRvdWJsZSBtaW5pbXVtWm9vbUR1cmF0
aW9uID0gMC4xOworICAgIGNvbnN0IGRvdWJsZSB6b29tRHVyYXRpb25GYWN0b3IgPSAwLjM7CisK
KyAgICBDRlRpbWVJbnRlcnZhbCBkdXJhdGlvbiA9IHN0ZDo6bWluKGZhYnMobG9nKFtfc2Nyb2xs
VmlldyB6b29tU2NhbGVdKSAtIGxvZyhzY2FsZSkpICogem9vbUR1cmF0aW9uRmFjdG9yICsgbWlu
aW11bVpvb21EdXJhdGlvbiwgbWF4aW11bVpvb21EdXJhdGlvbik7CisKKyAgICBbX2NvbnRlbnRW
aWV3IHdpbGxTdGFydFVzZXJUcmlnZ2VyZWRab29tXTsKKyAgICBbX3Njcm9sbFZpZXcgX3pvb21U
b0NlbnRlcjpwb2ludCBzY2FsZTpzY2FsZSBkdXJhdGlvbjpkdXJhdGlvbl07Cit9CisKKy0gKHZv
aWQpX3pvb21Ub1JlY3Q6KFdlYkNvcmU6OkZsb2F0UmVjdCl0YXJnZXRSZWN0IGF0U2NhbGU6KGRv
dWJsZSlzY2FsZSBvcmlnaW46KFdlYkNvcmU6OkZsb2F0UG9pbnQpb3JpZ2luCit7CisgICAgV2Vi
Q29yZTo6RmxvYXRTaXplIHNjcm9sbFZpZXdTaXplKFtfc2Nyb2xsVmlldyBib3VuZHNdLnNpemUp
OworICAgIGRvdWJsZSBjdXJyZW50U2NhbGVGYWN0b3IgPSBbX3Njcm9sbFZpZXcgem9vbVNjYWxl
XTsKKyAgICBkb3VibGUgcmVsYXRpdmVTY2FsZSA9IHNjYWxlIC8gY3VycmVudFNjYWxlRmFjdG9y
OworCisgICAgV2ViQ29yZTo6RmxvYXRSZWN0IHRhcmdldFJlY3RJblNjcm9sbFZpZXcgPSBbX3Nj
cm9sbFZpZXcgY29udmVydFJlY3Q6dGFyZ2V0UmVjdCBmcm9tVmlldzpfY29udGVudFZpZXcuZ2V0
KCldOworICAgIFdlYkNvcmU6OkZsb2F0UmVjdCBzY2FsZWRUYXJnZXRSZWN0SW5TY3JvbGxWaWV3
ID0gdGFyZ2V0UmVjdEluU2Nyb2xsVmlldzsKKyAgICBzY2FsZWRUYXJnZXRSZWN0SW5TY3JvbGxW
aWV3LnNjYWxlKHJlbGF0aXZlU2NhbGUsIHJlbGF0aXZlU2NhbGUpOworCisgICAgLy8gQ2VudGVy
IHRoZSB0YXJnZXQgcmVjdCBpbiB0aGUgc2Nyb2xsIHZpZXcuCisgICAgLy8gSWYgdGhlIHRhcmdl
dCBkb2Vzbid0IGZpdCBpbiB0aGUgc2Nyb2xsIHZpZXcsIGNlbnRlciBvbiB0aGUgZ2VzdHVyZSBs
b2NhdGlvbiBpbnN0ZWFkLgorICAgIFdlYkNvcmU6OkZsb2F0UG9pbnQgem9vbUNlbnRlciA9IHRh
cmdldFJlY3QuY2VudGVyKCk7CisKKyAgICBpZiAoc2NhbGVkVGFyZ2V0UmVjdEluU2Nyb2xsVmll
dy53aWR0aCgpID4gc2Nyb2xsVmlld1NpemUud2lkdGgoKSkKKyAgICAgICAgem9vbUNlbnRlci5z
ZXRYKG9yaWdpbi54KCkpOworICAgIGlmIChzY2FsZWRUYXJnZXRSZWN0SW5TY3JvbGxWaWV3Lmhl
aWdodCgpID4gc2Nyb2xsVmlld1NpemUuaGVpZ2h0KCkpCisgICAgICAgIHpvb21DZW50ZXIuc2V0
WShvcmlnaW4ueSgpKTsKKworICAgIFtzZWxmIF96b29tVG9Qb2ludDp6b29tQ2VudGVyIGF0U2Nh
bGU6c2NhbGVdOworfQorCitzdGF0aWMgV2ViQ29yZTo6RmxvYXRQb2ludCBjb25zdHJhaW5Db250
ZW50T2Zmc2V0KFdlYkNvcmU6OkZsb2F0UG9pbnQgY29udGVudE9mZnNldCwgV2ViQ29yZTo6Rmxv
YXRTaXplIGNvbnRlbnRTaXplLCBXZWJDb3JlOjpGbG9hdFNpemUgc2Nyb2xsVmlld1NpemUpCit7
CisgICAgV2ViQ29yZTo6RmxvYXRTaXplIG1heGltdW1Db250ZW50T2Zmc2V0ID0gY29udGVudFNp
emUgLSBzY3JvbGxWaWV3U2l6ZTsKKyAgICBjb250ZW50T2Zmc2V0ID0gY29udGVudE9mZnNldC5z
aHJ1bmtUbyhXZWJDb3JlOjpGbG9hdFBvaW50KG1heGltdW1Db250ZW50T2Zmc2V0LndpZHRoKCks
IG1heGltdW1Db250ZW50T2Zmc2V0LmhlaWdodCgpKSk7CisgICAgY29udGVudE9mZnNldCA9IGNv
bnRlbnRPZmZzZXQuZXhwYW5kZWRUbyhXZWJDb3JlOjpGbG9hdFBvaW50KCkpOworICAgIHJldHVy
biBjb250ZW50T2Zmc2V0OworfQorCistIChCT09MKV9zY3JvbGxUb1JlY3Q6KFdlYkNvcmU6OkZs
b2F0UmVjdCl0YXJnZXRSZWN0IG9yaWdpbjooV2ViQ29yZTo6RmxvYXRQb2ludClvcmlnaW4gbWlu
aW11bVNjcm9sbERpc3RhbmNlOihDR0Zsb2F0KW1pbmltdW1TY3JvbGxEaXN0YW5jZQoreworICAg
IFdlYkNvcmU6OkZsb2F0U2l6ZSBzY3JvbGxWaWV3U2l6ZShbX3Njcm9sbFZpZXcgYm91bmRzXS5z
aXplKTsKKyAgICBXZWJDb3JlOjpGbG9hdFNpemUgY29udGVudFNpemUoW19zY3JvbGxWaWV3IGNv
bnRlbnRTaXplXSk7CisgICAgV2ViQ29yZTo6RmxvYXRQb2ludCBjdXJyZW50Q29udGVudE9mZnNl
dChbX3Njcm9sbFZpZXcgY29udGVudE9mZnNldF0pOworCisgICAgV2ViQ29yZTo6RmxvYXRQb2lu
dCBvcmlnaW5JblNjcm9sbFZpZXcoW19zY3JvbGxWaWV3IGNvbnZlcnRQb2ludDpvcmlnaW4gZnJv
bVZpZXc6X2NvbnRlbnRWaWV3LmdldCgpXSk7CisgICAgV2ViQ29yZTo6RmxvYXRSZWN0IHRhcmdl
dFJlY3RJblNjcm9sbFZpZXcoW19zY3JvbGxWaWV3IGNvbnZlcnRSZWN0OnRhcmdldFJlY3QgZnJv
bVZpZXc6X2NvbnRlbnRWaWV3LmdldCgpXSk7CisKKyAgICAvLyBDZW50ZXIgdGhlIHRhcmdldCBy
ZWN0IGluIHRoZSBzY3JvbGwgdmlldy4KKyAgICAvLyBJZiB0aGUgdGFyZ2V0IGRvZXNuJ3QgZml0
IGluIHRoZSBzY3JvbGwgdmlldywgY2VudGVyIG9uIHRoZSBnZXN0dXJlIGxvY2F0aW9uIGluc3Rl
YWQuCisgICAgV2ViQ29yZTo6RmxvYXRQb2ludCBuZXdDb250ZW50T2Zmc2V0OworICAgIGlmICh0
YXJnZXRSZWN0SW5TY3JvbGxWaWV3LndpZHRoKCkgPD0gc2Nyb2xsVmlld1NpemUud2lkdGgoKSkK
KyAgICAgICAgbmV3Q29udGVudE9mZnNldC5zZXRYKHRhcmdldFJlY3RJblNjcm9sbFZpZXcueCgp
IC0gKHNjcm9sbFZpZXdTaXplLndpZHRoKCkgLSB0YXJnZXRSZWN0SW5TY3JvbGxWaWV3LndpZHRo
KCkpIC8gMik7CisgICAgZWxzZQorICAgICAgICBuZXdDb250ZW50T2Zmc2V0LnNldFgob3JpZ2lu
SW5TY3JvbGxWaWV3LngoKSAtIHNjcm9sbFZpZXdTaXplLndpZHRoKCkgLyAyKTsKKyAgICBpZiAo
dGFyZ2V0UmVjdEluU2Nyb2xsVmlldy5oZWlnaHQoKSA8PSBzY3JvbGxWaWV3U2l6ZS5oZWlnaHQo
KSkKKyAgICAgICAgbmV3Q29udGVudE9mZnNldC5zZXRZKHRhcmdldFJlY3RJblNjcm9sbFZpZXcu
eSgpIC0gKHNjcm9sbFZpZXdTaXplLmhlaWdodCgpIC0gdGFyZ2V0UmVjdEluU2Nyb2xsVmlldy5o
ZWlnaHQoKSkgLyAyKTsKKyAgICBlbHNlCisgICAgICAgIG5ld0NvbnRlbnRPZmZzZXQuc2V0WShv
cmlnaW5JblNjcm9sbFZpZXcueSgpIC0gc2Nyb2xsVmlld1NpemUuaGVpZ2h0KCkgLyAyKTsKKyAg
ICBuZXdDb250ZW50T2Zmc2V0ID0gY29uc3RyYWluQ29udGVudE9mZnNldChuZXdDb250ZW50T2Zm
c2V0LCBjb250ZW50U2l6ZSwgc2Nyb2xsVmlld1NpemUpOworCisgICAgaWYgKGN1cnJlbnRDb250
ZW50T2Zmc2V0ID09IG5ld0NvbnRlbnRPZmZzZXQpIHsKKyAgICAgICAgaWYgKHRhcmdldFJlY3RJ
blNjcm9sbFZpZXcud2lkdGgoKSA+IHNjcm9sbFZpZXdTaXplLndpZHRoKCkpCisgICAgICAgICAg
ICBuZXdDb250ZW50T2Zmc2V0LnNldFgob3JpZ2luSW5TY3JvbGxWaWV3LngoKSAtIHNjcm9sbFZp
ZXdTaXplLndpZHRoKCkgLyAyKTsKKyAgICAgICAgaWYgKHRhcmdldFJlY3RJblNjcm9sbFZpZXcu
aGVpZ2h0KCkgPiBzY3JvbGxWaWV3U2l6ZS5oZWlnaHQoKSkKKyAgICAgICAgICAgIG5ld0NvbnRl
bnRPZmZzZXQuc2V0WShvcmlnaW5JblNjcm9sbFZpZXcueSgpIC0gc2Nyb2xsVmlld1NpemUuaGVp
Z2h0KCkgLyAyKTsKKyAgICAgICAgbmV3Q29udGVudE9mZnNldCA9IGNvbnN0cmFpbkNvbnRlbnRP
ZmZzZXQobmV3Q29udGVudE9mZnNldCwgY29udGVudFNpemUsIHNjcm9sbFZpZXdTaXplKTsKKyAg
ICB9CisKKyAgICBmbG9hdCBzY3JvbGxEaXN0YW5jZSA9IChjdXJyZW50Q29udGVudE9mZnNldCAt
IG5ld0NvbnRlbnRPZmZzZXQpLmRpYWdvbmFsTGVuZ3RoKCk7CisKKyAgICBpZiAoc2Nyb2xsRGlz
dGFuY2UgPCBtaW5pbXVtU2Nyb2xsRGlzdGFuY2UpCisgICAgICAgIHJldHVybiBmYWxzZTsKKwor
ICAgIFtfc2Nyb2xsVmlldyBzZXRDb250ZW50T2Zmc2V0Om5ld0NvbnRlbnRPZmZzZXQgYW5pbWF0
ZWQ6WUVTXTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworLSAodm9pZClfem9vbU91dFdpdGhPcmln
aW46KENHUG9pbnQpb3JpZ2luCit7CisgICAgW3NlbGYgX3pvb21Ub1BvaW50Om9yaWdpbiBhdFNj
YWxlOltfc2Nyb2xsVmlldyBtaW5pbXVtWm9vbVNjYWxlXV07Cit9CisKKy0gKEJPT0wpX3pvb21U
b1JlY3Q6KENHUmVjdCl0YXJnZXRSZWN0IHdpdGhPcmlnaW46KENHUG9pbnQpb3JpZ2luIGZpdEVu
dGlyZVJlY3Q6KEJPT0wpZml0RW50aXJlUmVjdCBtaW5pbXVtU2NhbGU6KGRvdWJsZSltaW5pbXVt
U2NhbGUgbWF4aW11bVNjYWxlOihkb3VibGUpbWF4aW11bVNjYWxlIG1pbmltdW1TY3JvbGxEaXN0
YW5jZTooQ0dGbG9hdCltaW5pbXVtU2Nyb2xsRGlzdGFuY2UKK3sKKyAgICBjb25zdCBmbG9hdCBt
YXhpbXVtU2NhbGVGYWN0b3JEZWx0YUZvclBhblNjcm9sbCA9IDAuMDI7CisKKyAgICBpZiAoIVtf
c2Nyb2xsVmlldyBpc1Njcm9sbEVuYWJsZWRdIHx8ICFbX3Njcm9sbFZpZXcgaXNab29tRW5hYmxl
ZF0pCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIENHU2l6ZSBzY3JvbGxWaWV3U2l6ZSA9
IFtfc2Nyb2xsVmlldyBib3VuZHNdLnNpemU7CisgICAgZG91YmxlIGhvcml6b250YWxTY2FsZSA9
IHNjcm9sbFZpZXdTaXplLndpZHRoIC8gdGFyZ2V0UmVjdC5zaXplLndpZHRoOworICAgIGRvdWJs
ZSB2ZXJ0aWNhbFNjYWxlID0gc2Nyb2xsVmlld1NpemUuaGVpZ2h0IC8gdGFyZ2V0UmVjdC5zaXpl
LmhlaWdodDsKKworICAgIGhvcml6b250YWxTY2FsZSA9IHN0ZDo6bWluKHN0ZDo6bWF4KGhvcml6
b250YWxTY2FsZSwgbWluaW11bVNjYWxlKSwgbWF4aW11bVNjYWxlKTsKKyAgICB2ZXJ0aWNhbFNj
YWxlID0gc3RkOjptaW4oc3RkOjptYXgodmVydGljYWxTY2FsZSwgbWluaW11bVNjYWxlKSwgbWF4
aW11bVNjYWxlKTsKKworICAgIGRvdWJsZSB0YXJnZXRTY2FsZSA9IGZpdEVudGlyZVJlY3QgPyBz
dGQ6Om1pbihob3Jpem9udGFsU2NhbGUsIHZlcnRpY2FsU2NhbGUpIDogaG9yaXpvbnRhbFNjYWxl
OworICAgIGRvdWJsZSBjdXJyZW50U2NhbGUgPSBbX3Njcm9sbFZpZXcgem9vbVNjYWxlXTsKKyAg
ICBpZiAoZmFicyh0YXJnZXRTY2FsZSAtIGN1cnJlbnRTY2FsZSkgPCBtYXhpbXVtU2NhbGVGYWN0
b3JEZWx0YUZvclBhblNjcm9sbCkgeworICAgICAgICBpZiAoW3NlbGYgX3Njcm9sbFRvUmVjdDp0
YXJnZXRSZWN0IG9yaWdpbjpvcmlnaW4gbWluaW11bVNjcm9sbERpc3RhbmNlOm1pbmltdW1TY3Jv
bGxEaXN0YW5jZV0pCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9IGVsc2UgaWYgKHRh
cmdldFNjYWxlICE9IGN1cnJlbnRTY2FsZSkgeworICAgICAgICBbc2VsZiBfem9vbVRvUmVjdDp0
YXJnZXRSZWN0IGF0U2NhbGU6dGFyZ2V0U2NhbGUgb3JpZ2luOm9yaWdpbl07CisgICAgICAgIHJl
dHVybiB0cnVlOworICAgIH0KKyAgICAKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKICNwcmFnbWEg
bWFyayAtIFVJU2Nyb2xsVmlld0RlbGVnYXRlCiAKIC0gKFVJVmlldyAqKXZpZXdGb3Jab29taW5n
SW5TY3JvbGxWaWV3OihVSVNjcm9sbFZpZXcgKilzY3JvbGxWaWV3CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld0ludGVybmFsLmggYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld0ludGVybmFsLmgKaW5kZXgg
MzE3NmI2Ny4uMWVkYzRkYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9Db2NvYS9XS1dlYlZpZXdJbnRlcm5hbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvQ29jb2EvV0tXZWJWaWV3SW50ZXJuYWwuaApAQCAtNTEsNiArNTEsMTEgQEAgY2xhc3Mg
V2ViUGFnZVByb3h5OwogQHBhY2thZ2UKICAgICBSZWZQdHI8V2ViS2l0OjpXZWJQYWdlUHJveHk+
IF9wYWdlOwogfQorCistIChSZXRhaW5QdHI8Q0dJbWFnZVJlZj4pX3Rha2VWaWV3U25hcHNob3Q7
CisKKy0gKEJPT0wpX3pvb21Ub1JlY3Q6KENHUmVjdCl0YXJnZXRSZWN0IHdpdGhPcmlnaW46KENH
UG9pbnQpb3JpZ2luIGZpdEVudGlyZVJlY3Q6KEJPT0wpZml0RW50aXJlUmVjdCBtaW5pbXVtU2Nh
bGU6KGRvdWJsZSltaW5pbXVtU2NhbGUgbWF4aW11bVNjYWxlOihkb3VibGUpbWF4aW11bVNjYWxl
IG1pbmltdW1TY3JvbGxEaXN0YW5jZTooQ0dGbG9hdCltaW5pbXVtU2Nyb2xsRGlzdGFuY2U7Cist
ICh2b2lkKV96b29tT3V0V2l0aE9yaWdpbjooQ0dQb2ludClvcmlnaW47CiBAZW5kCiAKICNlbmRp
ZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9TbWFydE1hZ25pZmlj
YXRpb25Db250cm9sbGVyLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1NtYXJ0TWFn
bmlmaWNhdGlvbkNvbnRyb2xsZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
Li45NjY4MTUxCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lv
cy9TbWFydE1hZ25pZmljYXRpb25Db250cm9sbGVyLmgKQEAgLTAsMCArMSw2MyBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxMywgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNpZm5kZWYgU21hcnRNYWduaWZpY2F0aW9uQ29udHJvbGxlcl9oCisjZGVm
aW5lIFNtYXJ0TWFnbmlmaWNhdGlvbkNvbnRyb2xsZXJfaAorCisjaW5jbHVkZSAiTWVzc2FnZVJl
Y2VpdmVyLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9GbG9hdFJlY3QuaD4KKyNpbmNsdWRlIDx3dGYv
UmV0YWluUHRyLmg+CisKK09CSkNfQ0xBU1MgV0tDb250ZW50VmlldzsKK09CSkNfQ0xBU1MgVUlT
Y3JvbGxWaWV3OworCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgV2ViUGFnZVByb3h5Owor
CitjbGFzcyBTbWFydE1hZ25pZmljYXRpb25Db250cm9sbGVyIDogcHJpdmF0ZSBJUEM6Ok1lc3Nh
Z2VSZWNlaXZlciB7CisgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoU21hcnRNYWduaWZpY2F0aW9u
Q29udHJvbGxlcik7CitwdWJsaWM6CisgICAgU21hcnRNYWduaWZpY2F0aW9uQ29udHJvbGxlcihX
S0NvbnRlbnRWaWV3ICopOworICAgIH5TbWFydE1hZ25pZmljYXRpb25Db250cm9sbGVyKCk7CisK
KyAgICB2b2lkIGhhbmRsZVNtYXJ0TWFnbmlmaWNhdGlvbkdlc3R1cmUoV2ViQ29yZTo6RmxvYXRQ
b2ludCBvcmlnaW4pOworICAgIHZvaWQgaGFuZGxlUmVzZXRNYWduaWZpY2F0aW9uR2VzdHVyZShX
ZWJDb3JlOjpGbG9hdFBvaW50IG9yaWdpbik7CisKK3ByaXZhdGU6CisgICAgLy8gSVBDOjpNZXNz
YWdlUmVjZWl2ZXIuCisgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29u
bmVjdGlvbiosIElQQzo6TWVzc2FnZURlY29kZXImKSBvdmVycmlkZTsKKworICAgIHZvaWQgZGlk
Q29sbGVjdEdlb21ldHJ5Rm9yU21hcnRNYWduaWZpY2F0aW9uR2VzdHVyZShXZWJDb3JlOjpGbG9h
dFBvaW50IG9yaWdpbiwgV2ViQ29yZTo6RmxvYXRSZWN0IHJlbmRlclJlY3QsIFdlYkNvcmU6OkZs
b2F0UmVjdCB2aXNpYmxlQ29udGVudEJvdW5kcywgYm9vbCBpc1JlcGxhY2VkRWxlbWVudCwgYm9v
bCBmcmFtZUhhbmRsZXNNYWduaWZpY2F0aW9uR2VzdHVyZSwgZG91YmxlIHZpZXdwb3J0TWluaW11
bVNjYWxlLCBkb3VibGUgdmlld3BvcnRNYXhpbXVtU2NhbGUpOworCisgICAgV2ViUGFnZVByb3h5
JiBtX3dlYlBhZ2VQcm94eTsKKyAgICBXS0NvbnRlbnRWaWV3ICptX2NvbnRlbnRWaWV3OworfTsK
KyAgICAKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gU21hcnRNYWduaWZpY2F0
aW9uQ29udHJvbGxlcl9oCisKKwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L2lvcy9TbWFydE1hZ25pZmljYXRpb25Db250cm9sbGVyLm1lc3NhZ2VzLmluIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL2lvcy9TbWFydE1hZ25pZmljYXRpb25Db250cm9sbGVyLm1lc3NhZ2Vz
LmluCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNjNTY5NmUKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1NtYXJ0TWFnbmlmaWNhdGlv
bkNvbnRyb2xsZXIubWVzc2FnZXMuaW4KQEAgLTAsMCArMSwyNSBAQAorIyBDb3B5cmlnaHQgKEMp
IDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMg
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisjIGFyZSBtZXQ6CisjIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAyLiAgUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyMgICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisjCisjIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycgQU5ECisjIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisjIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyMgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IKKyMgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAorIyBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUgorIyBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUgorIyBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLAorIyBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQorIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCittZXNzYWdlcyAtPiBTbWFydE1hZ25pZmljYXRpb25D
b250cm9sbGVyIHsKKyAgICBEaWRDb2xsZWN0R2VvbWV0cnlGb3JTbWFydE1hZ25pZmljYXRpb25H
ZXN0dXJlKFdlYkNvcmU6OkZsb2F0UG9pbnQgb3JpZ2luLCBXZWJDb3JlOjpGbG9hdFJlY3QgcmVu
ZGVyUmVjdCwgV2ViQ29yZTo6RmxvYXRSZWN0IHZpc2libGVDb250ZW50Qm91bmRzLCBib29sIGlz
UmVwbGFjZWRFbGVtZW50LCBib29sIGZyYW1lSGFuZGxlc01hZ25pZmljYXRpb25HZXN0dXJlLCBk
b3VibGUgdmlld3BvcnRNaW5pbXVtU2NhbGUsIGRvdWJsZSB2aWV3cG9ydE1heGltdW1TY2FsZSkK
K30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvU21hcnRNYWduaWZp
Y2F0aW9uQ29udHJvbGxlci5tbSBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvU21hcnRN
YWduaWZpY2F0aW9uQ29udHJvbGxlci5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwLi4yZjdhODQ3Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L2lvcy9TbWFydE1hZ25pZmljYXRpb25Db250cm9sbGVyLm1tCkBAIC0wLDAgKzEsMTEzIEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI2ltcG9ydCAiY29uZmlnLmgiCisjaW1wb3J0ICJTbWFydE1hZ25pZmljYXRp
b25Db250cm9sbGVyLmgiCisKKyNpbXBvcnQgIlNtYXJ0TWFnbmlmaWNhdGlvbkNvbnRyb2xsZXJN
ZXNzYWdlcy5oIgorI2ltcG9ydCAiVmlld0dlc3R1cmVHZW9tZXRyeUNvbGxlY3Rvck1lc3NhZ2Vz
LmgiCisjaW1wb3J0ICJXS0NvbnRlbnRWaWV3LmgiCisjaW1wb3J0ICJXS1Njcm9sbFZpZXcuaCIK
KyNpbXBvcnQgIldlYlBhZ2VHcm91cC5oIgorI2ltcG9ydCAiV2ViUGFnZU1lc3NhZ2VzLmgiCisj
aW1wb3J0ICJXZWJQYWdlUHJveHkuaCIKKyNpbXBvcnQgIldlYlByb2Nlc3NQcm94eS5oIgorI2lt
cG9ydCA8VUlLaXQvVUlLaXQuaD4KKyNpbXBvcnQgPFVJS2l0L1VJS2l0X1ByaXZhdGUuaD4KKwor
dXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKK3N0YXRpYyBjb25zdCBDR0Zsb2F0IHNtYXJ0TWFn
bmlmaWNhdGlvblBhblNjcm9sbFRocmVzaG9sZFpvb21lZE91dCA9IDYwOworc3RhdGljIGNvbnN0
IENHRmxvYXQgc21hcnRNYWduaWZpY2F0aW9uUGFuU2Nyb2xsVGhyZXNob2xkSVBob25lID0gMTAw
Oworc3RhdGljIGNvbnN0IENHRmxvYXQgc21hcnRNYWduaWZpY2F0aW9uUGFuU2Nyb2xsVGhyZXNo
b2xkSVBhZCA9IDE1MDsKK3N0YXRpYyBjb25zdCBDR0Zsb2F0IHNtYXJ0TWFnbmlmaWNhdGlvbkVs
ZW1lbnRQYWRkaW5nID0gMC4wNTsKKworc3RhdGljIGNvbnN0IGRvdWJsZSBzbWFydE1hZ25pZmlj
YXRpb25NYXhpbXVtU2NhbGUgPSAxLjY7CitzdGF0aWMgY29uc3QgZG91YmxlIHNtYXJ0TWFnbmlm
aWNhdGlvbk1pbmltdW1TY2FsZSA9IDA7CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitTbWFydE1h
Z25pZmljYXRpb25Db250cm9sbGVyOjpTbWFydE1hZ25pZmljYXRpb25Db250cm9sbGVyKFdLQ29u
dGVudFZpZXcgKmNvbnRlbnRWaWV3KQorICAgIDogbV93ZWJQYWdlUHJveHkoKmNvbnRlbnRWaWV3
LnBhZ2UpCisgICAgLCBtX2NvbnRlbnRWaWV3KGNvbnRlbnRWaWV3KQoreworICAgIG1fd2ViUGFn
ZVByb3h5LnByb2Nlc3MoKS5hZGRNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OlNtYXJ0TWFnbmlm
aWNhdGlvbkNvbnRyb2xsZXI6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgbV93ZWJQYWdlUHJveHku
cGFnZUlEKCksICp0aGlzKTsKK30KKworU21hcnRNYWduaWZpY2F0aW9uQ29udHJvbGxlcjo6flNt
YXJ0TWFnbmlmaWNhdGlvbkNvbnRyb2xsZXIoKQoreworICAgIG1fd2ViUGFnZVByb3h5LnByb2Nl
c3MoKS5yZW1vdmVNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OlNtYXJ0TWFnbmlmaWNhdGlvbkNv
bnRyb2xsZXI6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgbV93ZWJQYWdlUHJveHkucGFnZUlEKCkp
OworfQorCit2b2lkIFNtYXJ0TWFnbmlmaWNhdGlvbkNvbnRyb2xsZXI6OmhhbmRsZVNtYXJ0TWFn
bmlmaWNhdGlvbkdlc3R1cmUoRmxvYXRQb2ludCBvcmlnaW4pCit7CisgICAgbV93ZWJQYWdlUHJv
eHkucHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OlZpZXdHZXN0dXJlR2VvbWV0cnlDb2xsZWN0b3I6
OkNvbGxlY3RHZW9tZXRyeUZvclNtYXJ0TWFnbmlmaWNhdGlvbkdlc3R1cmUob3JpZ2luKSwgbV93
ZWJQYWdlUHJveHkucGFnZUlEKCkpOworfQorCit2b2lkIFNtYXJ0TWFnbmlmaWNhdGlvbkNvbnRy
b2xsZXI6OmhhbmRsZVJlc2V0TWFnbmlmaWNhdGlvbkdlc3R1cmUoRmxvYXRQb2ludCBvcmlnaW4p
Cit7CisgICAgW21fY29udGVudFZpZXcgX3pvb21PdXRXaXRoT3JpZ2luOm9yaWdpbl07Cit9CisK
K3ZvaWQgU21hcnRNYWduaWZpY2F0aW9uQ29udHJvbGxlcjo6ZGlkQ29sbGVjdEdlb21ldHJ5Rm9y
U21hcnRNYWduaWZpY2F0aW9uR2VzdHVyZShGbG9hdFBvaW50IG9yaWdpbiwgRmxvYXRSZWN0IHRh
cmdldFJlY3QsIEZsb2F0UmVjdCB2aXNpYmxlQ29udGVudFJlY3QsIGJvb2wgaXNSZXBsYWNlZEVs
ZW1lbnQsIGJvb2wgZnJhbWVIYW5kbGVzTWFnbmlmaWNhdGlvbkdlc3R1cmUsIGRvdWJsZSB2aWV3
cG9ydE1pbmltdW1TY2FsZSwgZG91YmxlIHZpZXdwb3J0TWF4aW11bVNjYWxlKQoreworICAgIGlm
IChmcmFtZUhhbmRsZXNNYWduaWZpY2F0aW9uR2VzdHVyZSkKKyAgICAgICAgcmV0dXJuOworCisg
ICAgaWYgKHRhcmdldFJlY3QuaXNFbXB0eSgpKSB7CisgICAgICAgIC8vIEZJWE1FOiBJZiB3ZSBk
b24ndCB6b29tLCBzZW5kIHRoZSB0YXAgYWxvbmcgdG8gdGV4dCBzZWxlY3Rpb24gKHNlZSA8cmRh
cjovL3Byb2JsZW0vNjgxMDM0ND4pLgorICAgICAgICBbbV9jb250ZW50VmlldyBfem9vbU91dFdp
dGhPcmlnaW46b3JpZ2luXTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIHRhcmdldFJl
Y3QuaW5mbGF0ZVgoc21hcnRNYWduaWZpY2F0aW9uRWxlbWVudFBhZGRpbmcgKiB0YXJnZXRSZWN0
LndpZHRoKCkpOworICAgIHRhcmdldFJlY3QuaW5mbGF0ZVkoc21hcnRNYWduaWZpY2F0aW9uRWxl
bWVudFBhZGRpbmcgKiB0YXJnZXRSZWN0LmhlaWdodCgpKTsKKworICAgIGRvdWJsZSBtYXhpbXVt
U2NhbGUgPSBzdGQ6Om1pbih2aWV3cG9ydE1heGltdW1TY2FsZSwgc21hcnRNYWduaWZpY2F0aW9u
TWF4aW11bVNjYWxlKTsKKyAgICBkb3VibGUgbWluaW11bVNjYWxlID0gc3RkOjptYXgodmlld3Bv
cnRNaW5pbXVtU2NhbGUsIHNtYXJ0TWFnbmlmaWNhdGlvbk1pbmltdW1TY2FsZSk7CisKKyAgICAv
LyBGSVhNRTogQ2hlY2sgaWYgdGV4dCBzZWxlY3Rpb24gd2FudHMgdG8gY29uc3VtZSB0aGUgZG91
YmxlIHRhcCBiZWZvcmUgd2UgYXR0ZW1wdCBtYWduaWZpY2F0aW9uLgorCisgICAgLy8gSWYgdGhl
IGNvbnRlbnQgYWxyZWFkeSBmaXRzIGluIHRoZSBzY3JvbGwgdmlldyBhbmQgd2UncmUgYWxyZWFk
eSB6b29tZWQgaW4gdG8gdGhlIHRhcmdldCBzY2FsZSwKKyAgICAvLyBpdCBpcyBtb3N0IGxpa2Vs
eSB0aGF0IHRoZSB1c2VyIGludGVuZGVkIHRvIHNjcm9sbCwgc28gdXNlIGEgc21hbGwgZGlzdGFu
Y2UgdGhyZXNob2xkIHRvIGluaXRpYXRlIHBhbm5pbmcuCisgICAgQ0dGbG9hdCBtaW5pbXVtU2Ny
b2xsRGlzdGFuY2U7CisgICAgaWYgKFttX2NvbnRlbnRWaWV3IGJvdW5kc10uc2l6ZS53aWR0aCA8
PSBtX3dlYlBhZ2VQcm94eS51bm9ic2N1cmVkQ29udGVudFJlY3QoKS53aWR0aCgpKQorICAgICAg
ICBtaW5pbXVtU2Nyb2xsRGlzdGFuY2UgPSBzbWFydE1hZ25pZmljYXRpb25QYW5TY3JvbGxUaHJl
c2hvbGRab29tZWRPdXQ7CisgICAgZWxzZSBpZiAoVUlDdXJyZW50VXNlckludGVyZmFjZUlkaW9t
SXNQYWQoKSkKKyAgICAgICAgbWluaW11bVNjcm9sbERpc3RhbmNlID0gc21hcnRNYWduaWZpY2F0
aW9uUGFuU2Nyb2xsVGhyZXNob2xkSVBhZDsKKyAgICBlbHNlCisgICAgICAgIG1pbmltdW1TY3Jv
bGxEaXN0YW5jZSA9IHNtYXJ0TWFnbmlmaWNhdGlvblBhblNjcm9sbFRocmVzaG9sZElQaG9uZTsK
KworICAgIC8vIEZvciByZXBsYWNlZCBlbGVtZW50cyBsaWtlIGltYWdlcywgd2Ugd2FudCB0byBm
aXQgdGhlIHdob2xlIGVsZW1lbnQKKyAgICAvLyBpbiB0aGUgdmlldywgc28gc2NhbGUgaXQgZG93
biBlbm91Z2ggdG8gbWFrZSBib3RoIGRpbWVuc2lvbnMgZml0IGlmIHBvc3NpYmxlLgorICAgIC8v
IEZvciBvdGhlciBlbGVtZW50cywgdHJ5IHRvIGZpdCB0aGVtIGhvcml6b250YWxseS4KKyAgICBp
ZiAoW21fY29udGVudFZpZXcgX3pvb21Ub1JlY3Q6dGFyZ2V0UmVjdCB3aXRoT3JpZ2luOm9yaWdp
biBmaXRFbnRpcmVSZWN0OmlzUmVwbGFjZWRFbGVtZW50IG1pbmltdW1TY2FsZTptaW5pbXVtU2Nh
bGUgbWF4aW11bVNjYWxlOm1heGltdW1TY2FsZSBtaW5pbXVtU2Nyb2xsRGlzdGFuY2U6bWluaW11
bVNjcm9sbERpc3RhbmNlXSkKKyAgICAgICAgcmV0dXJuOworCisgICAgLy8gRklYTUU6IElmIHdl
IHN0aWxsIGRvbid0IHpvb20sIHNlbmQgdGhlIHRhcCBhbG9uZyB0byB0ZXh0IHNlbGVjdGlvbiAo
c2VlIDxyZGFyOi8vcHJvYmxlbS82ODEwMzQ0PikuCisgICAgW21fY29udGVudFZpZXcgX3pvb21P
dXRXaXRoT3JpZ2luOm9yaWdpbl07Cit9CisgICAgCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlldy5oIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3LmgKaW5kZXggNWU5N2I2
My4uMTM4ZjIyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9XS0Nv
bnRlbnRWaWV3LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRW
aWV3LmgKQEAgLTMxLDYgKzMxLDcgQEAKICNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4KIAogQGNs
YXNzIFdLQ29udGVudFZpZXc7CitAY2xhc3MgV0tXZWJWaWV3OwogCiBuYW1lc3BhY2UgV2ViS2l0
IHsKIGNsYXNzIERyYXdpbmdBcmVhUHJveHk7CkBAIC00Niw5ICs0Nyw2IEBAIHN0cnVjdCBXZWJQ
YWdlQ29uZmlndXJhdGlvbjsKIEBwcm90b2NvbCBXS0NvbnRlbnRWaWV3RGVsZWdhdGUgPE5TT2Jq
ZWN0PgogLSAodm9pZCljb250ZW50Vmlld0RpZENvbW1pdExvYWRGb3JNYWluRnJhbWU6KFdLQ29u
dGVudFZpZXcgKiljb250ZW50VmlldzsKIC0gKHZvaWQpY29udGVudFZpZXc6KFdLQ29udGVudFZp
ZXcgKiljb250ZW50VmlldyBkaWRDb21taXRMYXllclRyZWU6KGNvbnN0IFdlYktpdDo6UmVtb3Rl
TGF5ZXJUcmVlVHJhbnNhY3Rpb24mKWxheWVyVHJlZVRyYW5zYWN0aW9uOwotCi0vLyBGSVhNRTog
VGhpcyBkb2Vzbid0IGJlbG9uZyBpbiBhICdkZWxlZ2F0ZScuCi0tIChSZXRhaW5QdHI8Q0dJbWFn
ZVJlZj4pdGFrZVZpZXdTbmFwc2hvdEZvckNvbnRlbnRWaWV3OihXS0NvbnRlbnRWaWV3ICopY29u
dGVudFZpZXc7CiBAZW5kCiAKIEBpbnRlcmZhY2UgV0tDb250ZW50VmlldyA6IFVJVmlldyB7CkBA
IC02Miw3ICs2MCw3IEBAIHN0cnVjdCBXZWJQYWdlQ29uZmlndXJhdGlvbjsKIEBwcm9wZXJ0eSAo
bm9uYXRvbWljLCByZWFkb25seSkgV2ViS2l0OjpXZWJQYWdlUHJveHkqIHBhZ2U7CiBAcHJvcGVy
dHkgKG5vbmF0b21pYywgcmVhZG9ubHkpIEJPT0wgaXNBc3Npc3RpbmdOb2RlOwogCi0tIChpbnN0
YW5jZXR5cGUpaW5pdFdpdGhGcmFtZTooQ0dSZWN0KWZyYW1lIGNvbnRleHQ6KFdlYktpdDo6V2Vi
Q29udGV4dCYpY29udGV4dCBjb25maWd1cmF0aW9uOihXZWJLaXQ6OldlYlBhZ2VDb25maWd1cmF0
aW9uKXdlYlBhZ2VDb25maWd1cmF0aW9uOworLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoRnJhbWU6
KENHUmVjdClmcmFtZSBjb250ZXh0OihXZWJLaXQ6OldlYkNvbnRleHQmKWNvbnRleHQgY29uZmln
dXJhdGlvbjooV2ViS2l0OjpXZWJQYWdlQ29uZmlndXJhdGlvbil3ZWJQYWdlQ29uZmlndXJhdGlv
biB3ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3OwogCiAtICh2b2lkKXNldE1pbmltdW1TaXpl
OihDR1NpemUpc2l6ZTsKIC0gKHZvaWQpc2V0TWluaW11bUxheW91dFNpemU6KENHU2l6ZSlzaXpl
OwpAQCAtODYsNCArODQsNyBAQCBzdHJ1Y3QgV2ViUGFnZUNvbmZpZ3VyYXRpb247CiAKIC0gKFJl
dGFpblB0cjxDR0ltYWdlUmVmPilfdGFrZVZpZXdTbmFwc2hvdDsKIAorLSAoQk9PTClfem9vbVRv
UmVjdDooQ0dSZWN0KXRhcmdldFJlY3Qgd2l0aE9yaWdpbjooQ0dQb2ludClvcmlnaW4gZml0RW50
aXJlUmVjdDooQk9PTClmaXRFbnRpcmVSZWN0IG1pbmltdW1TY2FsZTooZG91YmxlKW1pbmltdW1T
Y2FsZSBtYXhpbXVtU2NhbGU6KGRvdWJsZSltYXhpbXVtU2NhbGUgbWluaW11bVNjcm9sbERpc3Rh
bmNlOihDR0Zsb2F0KW1pbmltdW1TY3JvbGxEaXN0YW5jZTsKKy0gKHZvaWQpX3pvb21PdXRXaXRo
T3JpZ2luOihDR1BvaW50KW9yaWdpbjsKKwogQGVuZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3Lm1tIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL2lvcy9XS0NvbnRlbnRWaWV3Lm1tCmluZGV4IDVmODlmZmMuLjYzZjA0MjggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlldy5tbQorKysgYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXcubW0KQEAgLTI5LDYgKzI5
LDcgQEAKICNpbXBvcnQgIlBhZ2VDbGllbnRJbXBsSU9TLmgiCiAjaW1wb3J0ICJSZW1vdGVMYXll
clRyZWVEcmF3aW5nQXJlYVByb3h5LmgiCiAjaW1wb3J0ICJSZW1vdGVTY3JvbGxpbmdDb29yZGlu
YXRvclByb3h5LmgiCisjaW1wb3J0ICJTbWFydE1hZ25pZmljYXRpb25Db250cm9sbGVyLmgiCiAj
aW1wb3J0ICJXZWJLaXQySW5pdGlhbGl6ZS5oIgogI2ltcG9ydCAiV0tCcm93c2luZ0NvbnRleHRD
b250cm9sbGVySW50ZXJuYWwuaCIKICNpbXBvcnQgIldLQnJvd3NpbmdDb250ZXh0R3JvdXBQcml2
YXRlLmgiCkBAIC0zNiw2ICszNyw3IEBACiAjaW1wb3J0ICJXS1ByZWZlcmVuY2VzSW50ZXJuYWwu
aCIKICNpbXBvcnQgIldLUHJvY2Vzc0dyb3VwUHJpdmF0ZS5oIgogI2ltcG9ydCAiV0tQcm9jZXNz
UG9vbEludGVybmFsLmgiCisjaW1wb3J0ICJXS1dlYlZpZXdJbnRlcm5hbC5oIgogI2ltcG9ydCAi
V0tXZWJWaWV3Q29uZmlndXJhdGlvbi5oIgogI2ltcG9ydCAiV2ViQ29udGV4dC5oIgogI2ltcG9y
dCAiV2ViRnJhbWVQcm94eS5oIgpAQCAtNjAsOSArNjIsMTEgQEAgdXNpbmcgbmFtZXNwYWNlIFdl
YktpdDsKICAgICBSZXRhaW5QdHI8V0tCcm93c2luZ0NvbnRleHRDb250cm9sbGVyPiBfYnJvd3Np
bmdDb250ZXh0Q29udHJvbGxlcjsKIAogICAgIFJldGFpblB0cjxVSVZpZXc+IF9yb290Q29udGVu
dFZpZXc7CisKKyAgICBXS1dlYlZpZXcgKl93ZWJWaWV3OwogfQogCi0tIChpbnN0YW5jZXR5cGUp
aW5pdFdpdGhGcmFtZTooQ0dSZWN0KWZyYW1lIGNvbnRleHQ6KFdlYktpdDo6V2ViQ29udGV4dCYp
Y29udGV4dCBjb25maWd1cmF0aW9uOihXZWJLaXQ6OldlYlBhZ2VDb25maWd1cmF0aW9uKXdlYlBh
Z2VDb25maWd1cmF0aW9uCistIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhGcmFtZTooQ0dSZWN0KWZy
YW1lIGNvbnRleHQ6KFdlYktpdDo6V2ViQ29udGV4dCYpY29udGV4dCBjb25maWd1cmF0aW9uOihX
ZWJLaXQ6OldlYlBhZ2VDb25maWd1cmF0aW9uKXdlYlBhZ2VDb25maWd1cmF0aW9uIHdlYlZpZXc6
KFdLV2ViVmlldyAqKXdlYlZpZXcKIHsKICAgICBpZiAoIShzZWxmID0gW3N1cGVyIGluaXRXaXRo
RnJhbWU6ZnJhbWVdKSkKICAgICAgICAgcmV0dXJuIG5pbDsKQEAgLTc3LDYgKzgxLDggQEAgdXNp
bmcgbmFtZXNwYWNlIFdlYktpdDsKICAgICBfcGFnZS0+c2V0VXNlRml4ZWRMYXlvdXQodHJ1ZSk7
CiAgICAgX3BhZ2UtPnNldERlbGVnYXRlc1Njcm9sbGluZyh0cnVlKTsKIAorICAgIF93ZWJWaWV3
ID0gd2ViVmlldzsKKwogICAgIFdlYkNvbnRleHQ6OnN0YXRpc3RpY3MoKS53a1ZpZXdDb3VudCsr
OwogCiAgICAgX3Jvb3RDb250ZW50VmlldyA9IGFkb3B0TlMoW1tVSVZpZXcgYWxsb2NdIGluaXRd
KTsKQEAgLTI3Miw3ICsyNzgsMTcgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKIAogLSAoUmV0
YWluUHRyPENHSW1hZ2VSZWY+KV90YWtlVmlld1NuYXBzaG90CiB7Ci0gICAgcmV0dXJuIFtfZGVs
ZWdhdGUgdGFrZVZpZXdTbmFwc2hvdEZvckNvbnRlbnRWaWV3OnNlbGZdOworICAgIHJldHVybiBb
X3dlYlZpZXcgX3Rha2VWaWV3U25hcHNob3RdOworfQorCistIChCT09MKV96b29tVG9SZWN0OihD
R1JlY3QpdGFyZ2V0UmVjdCB3aXRoT3JpZ2luOihDR1BvaW50KW9yaWdpbiBmaXRFbnRpcmVSZWN0
OihCT09MKWZpdEVudGlyZVJlY3QgbWluaW11bVNjYWxlOihkb3VibGUpbWluaW11bVNjYWxlIG1h
eGltdW1TY2FsZTooZG91YmxlKW1heGltdW1TY2FsZSBtaW5pbXVtU2Nyb2xsRGlzdGFuY2U6KENH
RmxvYXQpbWluaW11bVNjcm9sbERpc3RhbmNlCit7CisgICAgcmV0dXJuIFtfd2ViVmlldyBfem9v
bVRvUmVjdDp0YXJnZXRSZWN0IHdpdGhPcmlnaW46b3JpZ2luIGZpdEVudGlyZVJlY3Q6Zml0RW50
aXJlUmVjdCBtaW5pbXVtU2NhbGU6bWluaW11bVNjYWxlIG1heGltdW1TY2FsZTptYXhpbXVtU2Nh
bGUgbWluaW11bVNjcm9sbERpc3RhbmNlOm1pbmltdW1TY3JvbGxEaXN0YW5jZV07Cit9CisKKy0g
KHZvaWQpX3pvb21PdXRXaXRoT3JpZ2luOihDR1BvaW50KW9yaWdpbgoreworICAgIHJldHVybiBb
X3dlYlZpZXcgX3pvb21PdXRXaXRoT3JpZ2luOm9yaWdpbl07CiB9CiAKIEBlbmQKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9u
LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlv
bi5oCmluZGV4IDRjNDY1NDQuLmQwOGNhZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLmgKKysrIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24uaApAQCAtNDYsNiArNDYs
NyBAQCBjbGFzcyBJbnRTaXplOwogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIGNsYXNzIE5hdGl2ZVdl
YlRvdWNoRXZlbnQ7CitjbGFzcyBTbWFydE1hZ25pZmljYXRpb25Db250cm9sbGVyOwogY2xhc3Mg
V2ViUGFnZVByb3h5Owogc3RydWN0IEFzc2lzdGVkTm9kZUluZm9ybWF0aW9uOwogc3RydWN0IElu
dGVyYWN0aW9uSW5mb3JtYXRpb25BdFBvc2l0aW9uOwpAQCAtOTMsNiArOTQsOCBAQCBzdHJ1Y3Qg
V0tBdXRvQ29ycmVjdGlvbkRhdGEgewogICAgIFJldGFpblB0cjxOU1N0cmluZz4gX21hcmtlZFRl
eHQ7CiAgICAgUmV0YWluUHRyPFdLQWN0aW9uU2hlZXRBc3Npc3RhbnQ+IF9hY3Rpb25TaGVldEFz
c2lzdGFudDsKIAorICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJLaXQ6OlNtYXJ0TWFnbmlmaWNhdGlv
bkNvbnRyb2xsZXI+IF9zbWFydE1hZ25pZmljYXRpb25Db250cm9sbGVyOworCiAgICAgaWQgPFVJ
VGV4dElucHV0RGVsZWdhdGU+IF9pbnB1dERlbGVnYXRlOwogCiAgICAgdWludDY0X3QgX2xhdGVz
dFRhcEhpZ2hsaWdodElEOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lv
cy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
aW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbQppbmRleCBjZmEzMzFiLi4wZDM5MTcwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRl
cmFjdGlvbi5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZp
ZXdJbnRlcmFjdGlvbi5tbQpAQCAtMjgsNiArMjgsNyBAQAogCiAjaW1wb3J0ICJOYXRpdmVXZWJL
ZXlib2FyZEV2ZW50LmgiCiAjaW1wb3J0ICJOYXRpdmVXZWJUb3VjaEV2ZW50LmgiCisjaW1wb3J0
ICJTbWFydE1hZ25pZmljYXRpb25Db250cm9sbGVyLmgiCiAjaW1wb3J0ICJXZWJFdmVudC5oIgog
I2ltcG9ydCAiV2ViSU9TRXZlbnRGYWN0b3J5LmgiCiAjaW1wb3J0ICJXZWJQYWdlTWVzc2FnZXMu
aCIKQEAgLTE0OCw2ICsxNDksMTIgQEAgc3RhdGljIGNvbnN0IGZsb2F0IHRhcEFuZEhvbGREZWxh
eSAgPSAwLjc1OwogICAgIFtzZWxmIGFkZEdlc3R1cmVSZWNvZ25pemVyOl9kb3VibGVUYXBHZXN0
dXJlUmVjb2duaXplci5nZXQoKV07CiAgICAgW19zaW5nbGVUYXBHZXN0dXJlUmVjb2duaXplciBy
ZXF1aXJlT3RoZXJHZXN0dXJlVG9GYWlsOl9kb3VibGVUYXBHZXN0dXJlUmVjb2duaXplci5nZXQo
KV07CiAKKyAgICBfdHdvRmluZ2VyRG91YmxlVGFwR2VzdHVyZVJlY29nbml6ZXIgPSBhZG9wdE5T
KFtbVUlUYXBHZXN0dXJlUmVjb2duaXplciBhbGxvY10gaW5pdFdpdGhUYXJnZXQ6c2VsZiBhY3Rp
b246QHNlbGVjdG9yKF90d29GaW5nZXJEb3VibGVUYXBSZWNvZ25pemVkOildKTsKKyAgICBbX3R3
b0ZpbmdlckRvdWJsZVRhcEdlc3R1cmVSZWNvZ25pemVyIHNldE51bWJlck9mVGFwc1JlcXVpcmVk
OjJdOworICAgIFtfdHdvRmluZ2VyRG91YmxlVGFwR2VzdHVyZVJlY29nbml6ZXIgc2V0TnVtYmVy
T2ZUb3VjaGVzUmVxdWlyZWQ6Ml07CisgICAgW190d29GaW5nZXJEb3VibGVUYXBHZXN0dXJlUmVj
b2duaXplciBzZXREZWxlZ2F0ZTpzZWxmXTsKKyAgICBbc2VsZiBhZGRHZXN0dXJlUmVjb2duaXpl
cjpfdHdvRmluZ2VyRG91YmxlVGFwR2VzdHVyZVJlY29nbml6ZXIuZ2V0KCldOworCiAgICAgX2hp
Z2hsaWdodExvbmdQcmVzc0dlc3R1cmVSZWNvZ25pemVyID0gYWRvcHROUyhbW19VSVdlYkhpZ2hs
aWdodExvbmdQcmVzc0dlc3R1cmVSZWNvZ25pemVyIGFsbG9jXSBpbml0V2l0aFRhcmdldDpzZWxm
IGFjdGlvbjpAc2VsZWN0b3IoX2hpZ2hsaWdodExvbmdQcmVzc1JlY29nbml6ZWQ6KV0pOwogICAg
IFtfaGlnaGxpZ2h0TG9uZ1ByZXNzR2VzdHVyZVJlY29nbml6ZXIgc2V0RGVsYXk6aGlnaGxpZ2h0
RGVsYXldOwogICAgIFtfaGlnaGxpZ2h0TG9uZ1ByZXNzR2VzdHVyZVJlY29nbml6ZXIgc2V0RGVs
ZWdhdGU6c2VsZl07CkBAIC0xNzEsNiArMTc4LDcgQEAgc3RhdGljIGNvbnN0IGZsb2F0IHRhcEFu
ZEhvbGREZWxheSAgPSAwLjc1OwogICAgIFtzZWxmIHVzZVNlbGVjdGlvbkFzc2lzdGFudFdpdGhN
b2RlOlVJV2ViU2VsZWN0aW9uTW9kZVdlYl07CiAgICAgCiAgICAgX2FjdGlvblNoZWV0QXNzaXN0
YW50ID0gYWRvcHROUyhbW1dLQWN0aW9uU2hlZXRBc3Npc3RhbnQgYWxsb2NdIGluaXRXaXRoVmll
dzpzZWxmXSk7CisgICAgX3NtYXJ0TWFnbmlmaWNhdGlvbkNvbnRyb2xsZXIgPSBzdGQ6Om1ha2Vf
dW5pcXVlPFNtYXJ0TWFnbmlmaWNhdGlvbkNvbnRyb2xsZXI+KHNlbGYpOwogfQogCiAtICh2b2lk
KWNsZWFudXBJbnRlcmFjdGlvbgpAQCAtNjA4LDEyICs2MTYsMTIgQEAgc3RhdGljIGlubGluZSBi
b29sIGlzU2FtZVBhaXIoVUlHZXN0dXJlUmVjb2duaXplciAqYSwgVUlHZXN0dXJlUmVjb2duaXpl
ciAqYiwgVUkKIAogLSAodm9pZClfZG91YmxlVGFwUmVjb2duaXplZDooVUlUYXBHZXN0dXJlUmVj
b2duaXplciAqKWdlc3R1cmVSZWNvZ25pemVyCiB7Ci0gICAgLy8gRklYTUU6IEFkZCBpbXBsZW1l
bnRhdGlvbi4KKyAgICBfc21hcnRNYWduaWZpY2F0aW9uQ29udHJvbGxlci0+aGFuZGxlU21hcnRN
YWduaWZpY2F0aW9uR2VzdHVyZShnZXN0dXJlUmVjb2duaXplci5sb2NhdGlvbik7CiB9CiAKIC0g
KHZvaWQpX3R3b0ZpbmdlckRvdWJsZVRhcFJlY29nbml6ZWQ6KFVJVGFwR2VzdHVyZVJlY29nbml6
ZXIgKilnZXN0dXJlUmVjb2duaXplcgogewotICAgIC8vIEZJWE1FOiBBZGQgaW1wbGVtZW50YXRp
b24uCisgICAgX3NtYXJ0TWFnbmlmaWNhdGlvbkNvbnRyb2xsZXItPmhhbmRsZVJlc2V0TWFnbmlm
aWNhdGlvbkdlc3R1cmUoZ2VzdHVyZVJlY29nbml6ZXIubG9jYXRpb24pOwogfQogCiAtICh2b2lk
KV90d29GaW5nZXJQYW5SZWNvZ25pemVkOihVSVBhbkdlc3R1cmVSZWNvZ25pemVyICopZ2VzdHVy
ZVJlY29nbml6ZXIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvVmll
d0dlc3R1cmVDb250cm9sbGVyLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1ZpZXdH
ZXN0dXJlQ29udHJvbGxlci5oCmluZGV4IGM2NDljNjEuLmE3YTBlODQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvVmlld0dlc3R1cmVDb250cm9sbGVyLmgKKysrIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9WaWV3R2VzdHVyZUNvbnRyb2xsZXIuaApAQCAt
MTA0LDcgKzEwNCw3IEBAIHByaXZhdGU6CiAjaWYgIVBMQVRGT1JNKElPUykKICAgICAvLyBNZXNz
YWdlIGhhbmRsZXJzLgogICAgIHZvaWQgZGlkQ29sbGVjdEdlb21ldHJ5Rm9yTWFnbmlmaWNhdGlv
bkdlc3R1cmUoV2ViQ29yZTo6RmxvYXRSZWN0IHZpc2libGVDb250ZW50Qm91bmRzLCBib29sIGZy
YW1lSGFuZGxlc01hZ25pZmljYXRpb25HZXN0dXJlKTsKLSAgICB2b2lkIGRpZENvbGxlY3RHZW9t
ZXRyeUZvclNtYXJ0TWFnbmlmaWNhdGlvbkdlc3R1cmUoV2ViQ29yZTo6RmxvYXRQb2ludCBvcmln
aW4sIFdlYkNvcmU6OkZsb2F0UmVjdCByZW5kZXJSZWN0LCBXZWJDb3JlOjpGbG9hdFJlY3Qgdmlz
aWJsZUNvbnRlbnRCb3VuZHMsIGJvb2wgaXNSZXBsYWNlZEVsZW1lbnQsIGJvb2wgZnJhbWVIYW5k
bGVzTWFnbmlmaWNhdGlvbkdlc3R1cmUpOworICAgIHZvaWQgZGlkQ29sbGVjdEdlb21ldHJ5Rm9y
U21hcnRNYWduaWZpY2F0aW9uR2VzdHVyZShXZWJDb3JlOjpGbG9hdFBvaW50IG9yaWdpbiwgV2Vi
Q29yZTo6RmxvYXRSZWN0IHJlbmRlclJlY3QsIFdlYkNvcmU6OkZsb2F0UmVjdCB2aXNpYmxlQ29u
dGVudEJvdW5kcywgYm9vbCBpc1JlcGxhY2VkRWxlbWVudCwgYm9vbCBmcmFtZUhhbmRsZXNNYWdu
aWZpY2F0aW9uR2VzdHVyZSwgZG91YmxlIHZpZXdwb3J0TWluaW11bVNjYWxlLCBkb3VibGUgdmll
d3BvcnRNYXhpbXVtU2NhbGUpOwogICAgIHZvaWQgZGlkSGl0UmVuZGVyVHJlZVNpemVUaHJlc2hv
bGQoKTsKIAogICAgIHZvaWQgZW5kTWFnbmlmaWNhdGlvbkdlc3R1cmUoKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvVmlld0dlc3R1cmVDb250cm9sbGVyLm1lc3Nh
Z2VzLmluIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9WaWV3R2VzdHVyZUNvbnRyb2xs
ZXIubWVzc2FnZXMuaW4KaW5kZXggYTBiNThjMC4uNjYwNDdkOSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL21hYy9WaWV3R2VzdHVyZUNvbnRyb2xsZXIubWVzc2FnZXMuaW4K
KysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9WaWV3R2VzdHVyZUNvbnRyb2xsZXIu
bWVzc2FnZXMuaW4KQEAgLTIzLDcgKzIzLDcgQEAKIG1lc3NhZ2VzIC0+IFZpZXdHZXN0dXJlQ29u
dHJvbGxlciB7CiAjaWYgIVBMQVRGT1JNKElPUykKICAgICBEaWRDb2xsZWN0R2VvbWV0cnlGb3JN
YWduaWZpY2F0aW9uR2VzdHVyZShXZWJDb3JlOjpGbG9hdFJlY3QgdmlzaWJsZUNvbnRlbnRCb3Vu
ZHMsIGJvb2wgZnJhbWVIYW5kbGVzTWFnbmlmaWNhdGlvbkdlc3R1cmUpCi0gICAgRGlkQ29sbGVj
dEdlb21ldHJ5Rm9yU21hcnRNYWduaWZpY2F0aW9uR2VzdHVyZShXZWJDb3JlOjpGbG9hdFBvaW50
IG9yaWdpbiwgV2ViQ29yZTo6RmxvYXRSZWN0IHJlbmRlclJlY3QsIFdlYkNvcmU6OkZsb2F0UmVj
dCB2aXNpYmxlQ29udGVudEJvdW5kcywgYm9vbCBpc1JlcGxhY2VkRWxlbWVudCwgYm9vbCBmcmFt
ZUhhbmRsZXNNYWduaWZpY2F0aW9uR2VzdHVyZSkKKyAgICBEaWRDb2xsZWN0R2VvbWV0cnlGb3JT
bWFydE1hZ25pZmljYXRpb25HZXN0dXJlKFdlYkNvcmU6OkZsb2F0UG9pbnQgb3JpZ2luLCBXZWJD
b3JlOjpGbG9hdFJlY3QgcmVuZGVyUmVjdCwgV2ViQ29yZTo6RmxvYXRSZWN0IHZpc2libGVDb250
ZW50Qm91bmRzLCBib29sIGlzUmVwbGFjZWRFbGVtZW50LCBib29sIGZyYW1lSGFuZGxlc01hZ25p
ZmljYXRpb25HZXN0dXJlLCBkb3VibGUgdmlld3BvcnRNaW5pbXVtU2NhbGUsIGRvdWJsZSB2aWV3
cG9ydE1heGltdW1TY2FsZSkKICAgICBEaWRIaXRSZW5kZXJUcmVlU2l6ZVRocmVzaG9sZCgpCiAj
ZW5kaWYKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvVmlld0dl
c3R1cmVDb250cm9sbGVyTWFjLm1tIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9WaWV3
R2VzdHVyZUNvbnRyb2xsZXJNYWMubW0KaW5kZXggYTJlNDIxZS4uNTQ4MzMwMSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9WaWV3R2VzdHVyZUNvbnRyb2xsZXJNYWMu
bW0KKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9WaWV3R2VzdHVyZUNvbnRyb2xs
ZXJNYWMubW0KQEAgLTIwNSw3ICsyMDUsNyBAQCBzdGF0aWMgZmxvYXQgbWF4aW11bVJlY3Rhbmds
ZUNvbXBvbmVudERlbHRhKEZsb2F0UmVjdCBhLCBGbG9hdFJlY3QgYikKICAgICByZXR1cm4gc3Rk
OjptYXgoZmFicyhhLngoKSAtIGIueCgpKSwgc3RkOjptYXgoZmFicyhhLnkoKSAtIGIueSgpKSwg
c3RkOjptYXgoZmFicyhhLndpZHRoKCkgLSBiLndpZHRoKCkpLCBmYWJzKGEuaGVpZ2h0KCkgLSBi
LmhlaWdodCgpKSkpKTsKIH0KIAotdm9pZCBWaWV3R2VzdHVyZUNvbnRyb2xsZXI6OmRpZENvbGxl
Y3RHZW9tZXRyeUZvclNtYXJ0TWFnbmlmaWNhdGlvbkdlc3R1cmUoRmxvYXRQb2ludCBvcmlnaW4s
IEZsb2F0UmVjdCByZW5kZXJSZWN0LCBGbG9hdFJlY3QgdmlzaWJsZUNvbnRlbnRSZWN0LCBib29s
IGlzUmVwbGFjZWRFbGVtZW50LCBib29sIGZyYW1lSGFuZGxlc01hZ25pZmljYXRpb25HZXN0dXJl
KQordm9pZCBWaWV3R2VzdHVyZUNvbnRyb2xsZXI6OmRpZENvbGxlY3RHZW9tZXRyeUZvclNtYXJ0
TWFnbmlmaWNhdGlvbkdlc3R1cmUoRmxvYXRQb2ludCBvcmlnaW4sIEZsb2F0UmVjdCByZW5kZXJS
ZWN0LCBGbG9hdFJlY3QgdmlzaWJsZUNvbnRlbnRSZWN0LCBib29sIGlzUmVwbGFjZWRFbGVtZW50
LCBib29sIGZyYW1lSGFuZGxlc01hZ25pZmljYXRpb25HZXN0dXJlLCBkb3VibGUgdmlld3BvcnRN
aW5pbXVtU2NhbGUsIGRvdWJsZSB2aWV3cG9ydE1heGltdW1TY2FsZSkKIHsKICAgICBpZiAoZnJh
bWVIYW5kbGVzTWFnbmlmaWNhdGlvbkdlc3R1cmUpCiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1Nv
dXJjZS9XZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA0NGEz
OGZhLi4yOTQxNDlkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCkBAIC01MTksOCArNTE5LDEyIEBACiAJCTJEQTk0NEJBMTg4NEVBM0Mw
MEVEODZEQiAvKiBXZWJQYWdlSU9TLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMkRBOTQ0QjYxODg0RUEzNTAwRUQ4NkRCIC8qIFdlYlBhZ2VJT1MubW0g
Ki87IH07CiAJCTJEQTk0NEJEMTg4NTExRTcwMEVEODZEQiAvKiBOZXR3b3JrUHJvY2Vzc0lPUy5t
bSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJEQTk0NEJD
MTg4NTExRTcwMEVEODZEQiAvKiBOZXR3b3JrUHJvY2Vzc0lPUy5tbSAqLzsgfTsKIAkJMkRBQ0U2
NEUxOEFEQkZGMDAwRTRDQTc2IC8qIFdLVGh1bWJuYWlsVmlld0ludGVybmFsLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyREFDRTY0RDE4QURCRkYwMDBF
NENBNzYgLyogV0tUaHVtYm5haWxWaWV3SW50ZXJuYWwuaCAqLzsgfTsKKwkJMkRBRjA2RDYxOEJE
MUE0NzAwODFDRUIxIC8qIFNtYXJ0TWFnbmlmaWNhdGlvbkNvbnRyb2xsZXIuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJEQUYwNkQ0MThCRDFBNDcwMDgx
Q0VCMSAvKiBTbWFydE1hZ25pZmljYXRpb25Db250cm9sbGVyLmggKi87IH07CisJCTJEQUYwNkQ3
MThCRDFBNDcwMDgxQ0VCMSAvKiBTbWFydE1hZ25pZmljYXRpb25Db250cm9sbGVyLm1tIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkRBRjA2RDUxOEJEMUE0
NzAwODFDRUIxIC8qIFNtYXJ0TWFnbmlmaWNhdGlvbkNvbnRyb2xsZXIubW0gKi87IH07CiAJCTJE
REUwQUZBMTgyOThDQzkwMEY5N0VBQSAvKiBSZW1vdGVMYXllclRyZWVQcm9wZXJ0eUFwcGxpZXIu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJEREUwQUY4
MTgyOThDQzkwMEY5N0VBQSAvKiBSZW1vdGVMYXllclRyZWVQcm9wZXJ0eUFwcGxpZXIuaCAqLzsg
fTsKIAkJMkRERTBBRkIxODI5OENDOTAwRjk3RUFBIC8qIFJlbW90ZUxheWVyVHJlZVByb3BlcnR5
QXBwbGllci5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDJEREUwQUY5MTgyOThDQzkwMEY5N0VBQSAvKiBSZW1vdGVMYXllclRyZWVQcm9wZXJ0eUFwcGxp
ZXIubW0gKi87IH07CisJCTJERTY5NDNEMThCRDJBNjgwMDVDMTVFNSAvKiBTbWFydE1hZ25pZmlj
YXRpb25Db250cm9sbGVyTWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJERTY5NDNCMThCRDJBNjgwMDVDMTVFNSAvKiBTbWFy
dE1hZ25pZmljYXRpb25Db250cm9sbGVyTWVzc2FnZVJlY2VpdmVyLmNwcCAqLzsgfTsKKwkJMkRF
Njk0M0UxOEJEMkE2ODAwNUMxNUU1IC8qIFNtYXJ0TWFnbmlmaWNhdGlvbkNvbnRyb2xsZXJNZXNz
YWdlcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkRF
Njk0M0MxOEJEMkE2ODAwNUMxNUU1IC8qIFNtYXJ0TWFnbmlmaWNhdGlvbkNvbnRyb2xsZXJNZXNz
YWdlcy5oICovOyB9OwogCQkyREY5NTkzQjE4QTQyNDEyMDA5Nzg1QTEgLyogVmlld0dlc3R1cmVD
b250cm9sbGVySU9TLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMkRGOTU5MzQxOEE0MjQxMjAwOTc4NUExIC8qIFZpZXdHZXN0dXJlQ29udHJvbGxlcklP
Uy5tbSAqLzsgfTsKIAkJMzEwOTk5NzMxNDZDNzVBMjAwMjlERUI5IC8qIFdlYk5vdGlmaWNhdGlv
bkNsaWVudC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAzMTA5OTk3MTE0NkM3NTlCMDAyOURFQjkgLyogV2ViTm90aWZpY2F0aW9uQ2xpZW50LmNwcCAq
LzsgfTsKIAkJMzEwOTk5QzcxNDZDOUUzRDAwMjlERUI5IC8qIFdlYk5vdGlmaWNhdGlvbkNsaWVu
dC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzEwOTk5
NjgxNDZDNzFGNTAwMjlERUI5IC8qIFdlYk5vdGlmaWNhdGlvbkNsaWVudC5oICovOyB9OwpAQCAt
MjI1Nyw4ICsyMjYxLDEzIEBACiAJCTJEQTk0NEI2MTg4NEVBMzUwMEVEODZEQiAvKiBXZWJQYWdl
SU9TLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBuYW1lID0gV2ViUGFnZUlP
Uy5tbTsgcGF0aCA9IGlvcy9XZWJQYWdlSU9TLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQkyREE5NDRCQzE4ODUxMUU3MDBFRDg2REIgLyogTmV0d29ya1Byb2Nlc3NJT1MubW0gKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IG5hbWUgPSBOZXR3b3JrUHJvY2Vzc0lPUy5t
bTsgcGF0aCA9IE5ldHdvcmtQcm9jZXNzL2lvcy9OZXR3b3JrUHJvY2Vzc0lPUy5tbTsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMkRBQ0U2NEQxOEFEQkZGMDAwRTRDQTc2IC8qIFdLVGh1
bWJuYWlsVmlld0ludGVybmFsLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdL
VGh1bWJuYWlsVmlld0ludGVybmFsLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTJE
QUYwNkQ0MThCRDFBNDcwMDgxQ0VCMSAvKiBTbWFydE1hZ25pZmljYXRpb25Db250cm9sbGVyLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFNtYXJ0TWFnbmlmaWNhdGlvbkNvbnRy
b2xsZXIuaDsgcGF0aCA9IGlvcy9TbWFydE1hZ25pZmljYXRpb25Db250cm9sbGVyLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTJEQUYwNkQ1MThCRDFBNDcwMDgxQ0VCMSAvKiBTbWFy
dE1hZ25pZmljYXRpb25Db250cm9sbGVyLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2Jq
Y3BwOyBuYW1lID0gU21hcnRNYWduaWZpY2F0aW9uQ29udHJvbGxlci5tbTsgcGF0aCA9IGlvcy9T
bWFydE1hZ25pZmljYXRpb25Db250cm9sbGVyLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQkyREFGMDZEODE4QkQyM0JBMDA4MUNFQjEgLyogU21hcnRNYWduaWZpY2F0aW9uQ29udHJv
bGxlci5tZXNzYWdlcy5pbiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IHRleHQ7IG5hbWUgPSBTbWFydE1hZ25pZmljYXRpb25Db250cm9sbGVyLm1lc3Nh
Z2VzLmluOyBwYXRoID0gaW9zL1NtYXJ0TWFnbmlmaWNhdGlvbkNvbnRyb2xsZXIubWVzc2FnZXMu
aW47IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTJEREUwQUY4MTgyOThDQzkwMEY5N0VB
QSAvKiBSZW1vdGVMYXllclRyZWVQcm9wZXJ0eUFwcGxpZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gUmVtb3RlTGF5ZXJUcmVlUHJvcGVydHlBcHBsaWVyLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTJEREUwQUY5MTgyOThDQzkwMEY5N0VBQSAvKiBSZW1vdGVM
YXllclRyZWVQcm9wZXJ0eUFwcGxpZXIubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpj
cHA7IHBhdGggPSBSZW1vdGVMYXllclRyZWVQcm9wZXJ0eUFwcGxpZXIubW07IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTJERTY5NDNCMThCRDJBNjgwMDVDMTVFNSAvKiBTbWFydE1hZ25p
ZmljYXRpb25Db250cm9sbGVyTWVzc2FnZVJlY2VpdmVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgbmFtZSA9IFNtYXJ0TWFnbmlmaWNhdGlvbkNvbnRyb2xsZXJNZXNzYWdlUmVj
ZWl2ZXIuY3BwOyBwYXRoID0gU21hcnRNYWduaWZpY2F0aW9uQ29udHJvbGxlck1lc3NhZ2VSZWNl
aXZlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTJERTY5NDNDMThCRDJBNjgw
MDVDMTVFNSAvKiBTbWFydE1hZ25pZmljYXRpb25Db250cm9sbGVyTWVzc2FnZXMuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gU21hcnRNYWduaWZpY2F0aW9uQ29udHJvbGxlck1l
c3NhZ2VzLmg7IHBhdGggPSBTbWFydE1hZ25pZmljYXRpb25Db250cm9sbGVyTWVzc2FnZXMuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMkRGOTU5MzQxOEE0MjQxMjAwOTc4NUExIC8q
IFZpZXdHZXN0dXJlQ29udHJvbGxlcklPUy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9i
amNwcDsgbmFtZSA9IFZpZXdHZXN0dXJlQ29udHJvbGxlcklPUy5tbTsgcGF0aCA9IGlvcy9WaWV3
R2VzdHVyZUNvbnRyb2xsZXJJT1MubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTMx
MDk5OTY4MTQ2QzcxRjUwMDI5REVCOSAvKiBXZWJOb3RpZmljYXRpb25DbGllbnQuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gV2ViTm90aWZpY2F0aW9uQ2xpZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTMxMDk5OTcxMTQ2Qzc1OUIwMDI5REVCOSAvKiBXZWJOb3RpZmljYXRpb25DbGllbnQu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2ViTm90aWZpY2F0aW9u
Q2xpZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTQyOTAsNiArNDI5OSw5
IEBACiAJCQkJMEZDQjRFMzcxOEJCRTA0NDAwMEZDRkM5IC8qIFBhZ2VDbGllbnRJbXBsSU9TLm1t
ICovLAogCQkJCTJEQTk0NEE5MTg4NEU5QkEwMEVEODZEQiAvKiBUZXh0Q2hlY2tlcklPUy5tbSAq
LywKIAkJCQkyREY5NTkzNDE4QTQyNDEyMDA5Nzg1QTEgLyogVmlld0dlc3R1cmVDb250cm9sbGVy
SU9TLm1tICovLAorCQkJCTJEQUYwNkQ0MThCRDFBNDcwMDgxQ0VCMSAvKiBTbWFydE1hZ25pZmlj
YXRpb25Db250cm9sbGVyLmggKi8sCisJCQkJMkRBRjA2RDUxOEJEMUE0NzAwODFDRUIxIC8qIFNt
YXJ0TWFnbmlmaWNhdGlvbkNvbnRyb2xsZXIubW0gKi8sCisJCQkJMkRBRjA2RDgxOEJEMjNCQTAw
ODFDRUIxIC8qIFNtYXJ0TWFnbmlmaWNhdGlvbkNvbnRyb2xsZXIubWVzc2FnZXMuaW4gKi8sCiAJ
CQkJMkRBOTQ0QUExODg0RTlCQTAwRUQ4NkRCIC8qIFdlYkluc3BlY3RvclByb3h5SU9TLm1tICov
LAogCQkJCTJEQTk0NEFCMTg4NEU5QkEwMEVEODZEQiAvKiBXZWJQYWdlUHJveHlJT1MubW0gKi8s
CiAJCQkJMkRBOTQ0QUMxODg0RTlCQTAwRUQ4NkRCIC8qIFdlYlByb2Nlc3NQcm94eUlPUy5tbSAq
LywKQEAgLTYwNzgsNiArNjA5MCw4IEBACiAJCQljaGlsZHJlbiA9ICgKIAkJCQkyRDgxOUI5RjE4
NjI4MDBFMDAxRjAzRDEgLyogVmlld0dlc3R1cmVHZW9tZXRyeUNvbGxlY3Rvck1lc3NhZ2VSZWNl
aXZlci5jcHAgKi8sCiAJCQkJMkQ4MTlCQTAxODYyODAwRTAwMUYwM0QxIC8qIFZpZXdHZXN0dXJl
R2VvbWV0cnlDb2xsZWN0b3JNZXNzYWdlcy5oICovLAorCQkJCTJERTY5NDNCMThCRDJBNjgwMDVD
MTVFNSAvKiBTbWFydE1hZ25pZmljYXRpb25Db250cm9sbGVyTWVzc2FnZVJlY2VpdmVyLmNwcCAq
LywKKwkJCQkyREU2OTQzQzE4QkQyQTY4MDA1QzE1RTUgLyogU21hcnRNYWduaWZpY2F0aW9uQ29u
dHJvbGxlck1lc3NhZ2VzLmggKi8sCiAJCQkJNTEyRjU4QTAxMkE4ODNBRDAwNjI5NTMwIC8qIEF1
dGhlbnRpY2F0aW9uTWFuYWdlck1lc3NhZ2VSZWNlaXZlci5jcHAgKi8sCiAJCQkJNTEyRjU4QTEx
MkE4ODNBRDAwNjI5NTMwIC8qIEF1dGhlbnRpY2F0aW9uTWFuYWdlck1lc3NhZ2VzLmggKi8sCiAJ
CQkJRTE3QUUyQzIxNkI5QzYzQTAwMUM0MkYxIC8qIGNvbS5hcHBsZS5XZWJLaXQuTmV0d29ya1By
b2Nlc3Muc2IgKi8sCkBAIC02MzkwLDYgKzY0MDQsNyBAQAogCQkJCTFGNjA0QkE4MTg4OUZBNzQw
MEVFMDM5NSAvKiBXS1JlbmRlcmluZ1Byb2dyZXNzRXZlbnRzLmggaW4gSGVhZGVycyAqLywKIAkJ
CQkxQTQyMkY4RjE4QjI5QzY0MDBEOENEOTYgLyogSGlzdG9yeUNsaWVudC5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJQkNCQUFDRUIxNDUyMjVFMzAwNTNGODJGIC8qIFdLUHJvY2Vzc0dyb3VwLmggaW4g
SGVhZGVycyAqLywKKwkJCQkyREFGMDZENjE4QkQxQTQ3MDA4MUNFQjEgLyogU21hcnRNYWduaWZp
Y2F0aW9uQ29udHJvbGxlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMzc3RUFENDgxN0UyQzc3QjAw
MkQxOTNEIC8qIFdLVXNlckNvbnRlbnRJbmplY3RlZEZyYW1lcy5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJQkM4Njk5QjUxMTZBQURBQTAwMkE5MjVCIC8qIFdLVmlldy5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJQkM4RjJGMkIxNjI3M0EyQzAwNUZBQ0I1IC8qIFdLV2ViUHJvY2Vzc1BsdWdJbkJyb3dzZXJD
b250ZXh0Q29udHJvbGxlci5oIGluIEhlYWRlcnMgKi8sCkBAIC02NjcxLDYgKzY2ODYsNyBAQAog
CQkJCTNGODdCOUMwMTU4OTQwRDgwMDkwRkY2MiAvKiBXZWJDb2xvclBpY2tlci5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJQkM0QTYyOTAxNDczMTJCRTAwNkM2ODFBIC8qIFdlYkNvbm5lY3Rpb24uaCBp
biBIZWFkZXJzICovLAogCQkJCTBGQ0I0RTU0MThCQkUwNDQwMDBGQ0ZDOSAvKiBXS1Njcm9sbFZp
ZXcuaCBpbiBIZWFkZXJzICovLAorCQkJCTJERTY5NDNFMThCRDJBNjgwMDVDMTVFNSAvKiBTbWFy
dE1hZ25pZmljYXRpb25Db250cm9sbGVyTWVzc2FnZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCUJD
NEE2MjkyMTQ3MzEyQkUwMDZDNjgxQSAvKiBXZWJDb25uZWN0aW9uQ2xpZW50LmggaW4gSGVhZGVy
cyAqLywKIAkJCQkxQTFGRUMxRDE2MjdCNDU3MDA3MDBGNkQgLyogV2ViQ29ubmVjdGlvbk1lc3Nh
Z2VzLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzRBNjJBODE0NzQ0RUM3MDA2QzY4MUEgLyogV2Vi
Q29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oIGluIEhlYWRlcnMgKi8sCkBAIC03ODE3LDYgKzc4MzMs
NyBAQAogCQkJCTkzRkM2N0JEMTJEM0NDRjIwMEE2MDYxMCAvKiBEZWNvZGVyQWRhcHRlci5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQlCQ0U4MUQ5ODEzMUFFMDIxMDAyNDE5MTAgLyogRGljdGlvbmFy
eVBvcHVwSW5mby5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1MTY3RUVBMTE3MDM3N0JGMDA3Njgx
Q0EgLyogRGlza0NhY2hlTW9uaXRvci5tbSBpbiBTb3VyY2VzICovLAorCQkJCTJEQUYwNkQ3MThC
RDFBNDcwMDgxQ0VCMSAvKiBTbWFydE1hZ25pZmljYXRpb25Db250cm9sbGVyLm1tIGluIFNvdXJj
ZXMgKi8sCiAJCQkJMkQ2Q0QxMUExODkwNThBNTAwRTVBNEEwIC8qIFZpZXdTbmFwc2hvdFN0b3Jl
Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJNTE4RThGMDcxNkIyMDkzNzAwRTkxNDI5IC8qIERvd25s
b2FkLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTJENDdCNTZDMTgxMDcxNEUwMDNBM0FFRSAvKiBS
ZW1vdGVMYXllckJhY2tpbmdTdG9yZS5tbSBpbiBTb3VyY2VzICovLApAQCAtODAxOSw2ICs4MDM2
LDcgQEAKIAkJCQkxQUIxNkFERDE2NDg1OTg0MDAyOTBENjIgLyogUmVtb3RlTGF5ZXJUcmVlRHJh
d2luZ0FyZWEubW0gaW4gU291cmNlcyAqLywKIAkJCQkxQUIxNkFFMTE2NDg2NTZEMDAyOTBENjIg
LyogUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94eS5tbSBpbiBTb3VyY2VzICovLAogCQkJ
CTBGNTk0NzlDMTg3QjNCNjAwMDQzNzg1NyAvKiBSZW1vdGVTY3JvbGxpbmdUcmVlLmNwcCBpbiBT
b3VyY2VzICovLAorCQkJCTJERTY5NDNEMThCRDJBNjgwMDVDMTVFNSAvKiBTbWFydE1hZ25pZmlj
YXRpb25Db250cm9sbGVyTWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTFB
QTNENzVCMTY1MUI0NEYwMDg3MTNEMCAvKiBSZW1vdGVMYXllclRyZWVIb3N0Lm1tIGluIFNvdXJj
ZXMgKi8sCiAJCQkJMUFGMUFDNkIxNjUxNzU5RTAwQzE3RDdGIC8qIFJlbW90ZUxheWVyVHJlZVRy
YW5zYWN0aW9uLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJRTFCNzg0NzMxNjNGMjUzRTAwMDdCNjky
IC8qIFJlbW90ZU5ldHdvcmtpbmdDb250ZXh0Lm1tIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvVmlld0dlc3R1cmVHZW9tZXRyeUNv
bGxlY3Rvci5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvVmlld0dlc3R1
cmVHZW9tZXRyeUNvbGxlY3Rvci5jcHAKaW5kZXggZGQ0ZGJiMi4uMTJhMWFmNyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1ZpZXdHZXN0dXJlR2VvbWV0cnlD
b2xsZWN0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9WaWV3
R2VzdHVyZUdlb21ldHJ5Q29sbGVjdG9yLmNwcApAQCAtMjYsMjYgKzI2LDM0IEBACiAjaW5jbHVk
ZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiVmlld0dlc3R1cmVHZW9tZXRyeUNvbGxlY3Rvci5oIgog
Ci0jaWYgIVBMQVRGT1JNKElPUykKLQotI2luY2x1ZGUgIlZpZXdHZXN0dXJlQ29udHJvbGxlck1l
c3NhZ2VzLmgiCiAjaW5jbHVkZSAiVmlld0dlc3R1cmVHZW9tZXRyeUNvbGxlY3Rvck1lc3NhZ2Vz
LmgiCiAjaW5jbHVkZSAiV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgiCiAjaW5jbHVkZSAiV2ViRnJh
bWUuaCIKICNpbmNsdWRlICJXZWJQYWdlLmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzcy5oIgorI2lu
Y2x1ZGUgPFdlYkNvcmUvRnJhbWUuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0ZyYW1lVmlldy5oPgog
I2luY2x1ZGUgPFdlYkNvcmUvSGl0VGVzdFJlc3VsdC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUmVu
ZGVyVmlldy5oPgogCisjaWYgUExBVEZPUk0oSU9TKQorI2luY2x1ZGUgIlNtYXJ0TWFnbmlmaWNh
dGlvbkNvbnRyb2xsZXJNZXNzYWdlcy5oIgorI2VuZGlmCisKKyNpZiBQTEFURk9STShNQUMpCisj
aW5jbHVkZSAiVmlld0dlc3R1cmVDb250cm9sbGVyTWVzc2FnZXMuaCIKKyNlbmRpZgorCiB1c2lu
ZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKIFZpZXdHZXN0dXJl
R2VvbWV0cnlDb2xsZWN0b3I6OlZpZXdHZXN0dXJlR2VvbWV0cnlDb2xsZWN0b3IoV2ViUGFnZSYg
d2ViUGFnZSkKICAgICA6IG1fd2ViUGFnZSh3ZWJQYWdlKQorI2lmIFBMQVRGT1JNKE1BQykKICAg
ICAsIG1fcmVuZGVyVHJlZVNpemVOb3RpZmljYXRpb25UaHJlc2hvbGQoMCkKICAgICAsIG1fcmVu
ZGVyVHJlZVNpemVOb3RpZmljYXRpb25UaW1lcihSdW5Mb29wOjptYWluKCksIHRoaXMsICZWaWV3
R2VzdHVyZUdlb21ldHJ5Q29sbGVjdG9yOjpyZW5kZXJUcmVlU2l6ZU5vdGlmaWNhdGlvblRpbWVy
RmlyZWQpCisjZW5kaWYKIHsKICAgICBXZWJQcm9jZXNzOjpzaGFyZWQoKS5hZGRNZXNzYWdlUmVj
ZWl2ZXIoTWVzc2FnZXM6OlZpZXdHZXN0dXJlR2VvbWV0cnlDb2xsZWN0b3I6Om1lc3NhZ2VSZWNl
aXZlck5hbWUoKSwgbV93ZWJQYWdlLnBhZ2VJRCgpLCAqdGhpcyk7CiB9CkBAIC01NSwxMSArNjMs
MTQgQEAgVmlld0dlc3R1cmVHZW9tZXRyeUNvbGxlY3Rvcjo6flZpZXdHZXN0dXJlR2VvbWV0cnlD
b2xsZWN0b3IoKQogICAgIFdlYlByb2Nlc3M6OnNoYXJlZCgpLnJlbW92ZU1lc3NhZ2VSZWNlaXZl
cihNZXNzYWdlczo6Vmlld0dlc3R1cmVHZW9tZXRyeUNvbGxlY3Rvcjo6bWVzc2FnZVJlY2VpdmVy
TmFtZSgpLCBtX3dlYlBhZ2UucGFnZUlEKCkpOwogfQogCi12b2lkIFZpZXdHZXN0dXJlR2VvbWV0
cnlDb2xsZWN0b3I6OmNvbGxlY3RHZW9tZXRyeUZvck1hZ25pZmljYXRpb25HZXN0dXJlKCkKK3Zv
aWQgVmlld0dlc3R1cmVHZW9tZXRyeUNvbGxlY3Rvcjo6ZGlzcGF0Y2hEaWRDb2xsZWN0R2VvbWV0
cnlGb3JTbWFydE1hZ25pZmljYXRpb25HZXN0dXJlKEZsb2F0UG9pbnQgb3JpZ2luLCBGbG9hdFJl
Y3QgdGFyZ2V0UmVjdCwgRmxvYXRSZWN0IHZpc2libGVDb250ZW50UmVjdCwgYm9vbCBpc1JlcGxh
Y2VkRWxlbWVudCwgYm9vbCBmcmFtZUhhbmRsZXNNYWduaWZpY2F0aW9uR2VzdHVyZSwgZG91Ymxl
IHZpZXdwb3J0TWluaW11bVNjYWxlLCBkb3VibGUgdmlld3BvcnRNYXhpbXVtU2NhbGUpCiB7Ci0g
ICAgRmxvYXRSZWN0IHZpc2libGVDb250ZW50UmVjdCA9IG1fd2ViUGFnZS5tYWluRnJhbWVWaWV3
KCktPnZpc2libGVDb250ZW50UmVjdEluY2x1ZGluZ1Njcm9sbGJhcnMoKTsKLSAgICBib29sIGZy
YW1lSGFuZGxlc01hZ25pZmljYXRpb25HZXN0dXJlID0gbV93ZWJQYWdlLm1haW5XZWJGcmFtZSgp
LT5oYW5kbGVzUGFnZVNjYWxlR2VzdHVyZSgpOwotICAgIG1fd2ViUGFnZS5zZW5kKE1lc3NhZ2Vz
OjpWaWV3R2VzdHVyZUNvbnRyb2xsZXI6OkRpZENvbGxlY3RHZW9tZXRyeUZvck1hZ25pZmljYXRp
b25HZXN0dXJlKHZpc2libGVDb250ZW50UmVjdCwgZnJhbWVIYW5kbGVzTWFnbmlmaWNhdGlvbkdl
c3R1cmUpKTsKKyNpZiBQTEFURk9STShNQUMpCisgICAgbV93ZWJQYWdlLnNlbmQoTWVzc2FnZXM6
OlZpZXdHZXN0dXJlQ29udHJvbGxlcjo6RGlkQ29sbGVjdEdlb21ldHJ5Rm9yU21hcnRNYWduaWZp
Y2F0aW9uR2VzdHVyZShvcmlnaW4sIHRhcmdldFJlY3QsIHZpc2libGVDb250ZW50UmVjdCwgaXNS
ZXBsYWNlZEVsZW1lbnQsIGZyYW1lSGFuZGxlc01hZ25pZmljYXRpb25HZXN0dXJlLCB2aWV3cG9y
dE1pbmltdW1TY2FsZSwgdmlld3BvcnRNYXhpbXVtU2NhbGUpKTsKKyNlbmRpZgorI2lmIFBMQVRG
T1JNKElPUykKKyAgICBtX3dlYlBhZ2Uuc2VuZChNZXNzYWdlczo6U21hcnRNYWduaWZpY2F0aW9u
Q29udHJvbGxlcjo6RGlkQ29sbGVjdEdlb21ldHJ5Rm9yU21hcnRNYWduaWZpY2F0aW9uR2VzdHVy
ZShvcmlnaW4sIHRhcmdldFJlY3QsIHZpc2libGVDb250ZW50UmVjdCwgaXNSZXBsYWNlZEVsZW1l
bnQsIGZyYW1lSGFuZGxlc01hZ25pZmljYXRpb25HZXN0dXJlLCB2aWV3cG9ydE1pbmltdW1TY2Fs
ZSwgdmlld3BvcnRNYXhpbXVtU2NhbGUpKTsKKyNlbmRpZgogfQogCiB2b2lkIFZpZXdHZXN0dXJl
R2VvbWV0cnlDb2xsZWN0b3I6OmNvbGxlY3RHZW9tZXRyeUZvclNtYXJ0TWFnbmlmaWNhdGlvbkdl
c3R1cmUoRmxvYXRQb2ludCBvcmlnaW4pCkBAIC02NywxOCArNzgsMzcgQEAgdm9pZCBWaWV3R2Vz
dHVyZUdlb21ldHJ5Q29sbGVjdG9yOjpjb2xsZWN0R2VvbWV0cnlGb3JTbWFydE1hZ25pZmljYXRp
b25HZXN0dXJlKEYKICAgICBGbG9hdFJlY3QgdmlzaWJsZUNvbnRlbnRSZWN0ID0gbV93ZWJQYWdl
Lm1haW5GcmFtZVZpZXcoKS0+dmlzaWJsZUNvbnRlbnRSZWN0SW5jbHVkaW5nU2Nyb2xsYmFycygp
OwogICAgIGJvb2wgZnJhbWVIYW5kbGVzTWFnbmlmaWNhdGlvbkdlc3R1cmUgPSBtX3dlYlBhZ2Uu
bWFpbldlYkZyYW1lKCktPmhhbmRsZXNQYWdlU2NhbGVHZXN0dXJlKCk7CiAKLSAgICBGbG9hdFBv
aW50IHNjcm9sbGVkT3JpZ2luID0gb3JpZ2luOwotICAgIHNjcm9sbGVkT3JpZ2luLm1vdmVCeSht
X3dlYlBhZ2UubWFpbkZyYW1lVmlldygpLT5zY3JvbGxQb3NpdGlvbigpKTsKLQogICAgIEhpdFRl
c3RSZXF1ZXN0IHJlcXVlc3QoSGl0VGVzdFJlcXVlc3Q6OlJlYWRPbmx5IHwgSGl0VGVzdFJlcXVl
c3Q6OkFjdGl2ZSB8IEhpdFRlc3RSZXF1ZXN0OjpEaXNhbGxvd1NoYWRvd0NvbnRlbnQpOwotICAg
IEhpdFRlc3RSZXN1bHQgaGl0VGVzdFJlc3VsdCA9IEhpdFRlc3RSZXN1bHQoc2Nyb2xsZWRPcmln
aW4pOworICAgIEludFBvaW50IG9yaWdpbkluQ29udGVudHNTcGFjZSA9IG1fd2ViUGFnZS5tYWlu
RnJhbWVWaWV3KCktPndpbmRvd1RvQ29udGVudHMocm91bmRlZEludFBvaW50KG9yaWdpbikpOwor
ICAgIEhpdFRlc3RSZXN1bHQgaGl0VGVzdFJlc3VsdCA9IEhpdFRlc3RSZXN1bHQob3JpZ2luSW5D
b250ZW50c1NwYWNlKTsKKwogICAgIG1fd2ViUGFnZS5tYWluRnJhbWVWaWV3KCktPnJlbmRlclZp
ZXcoKS0+aGl0VGVzdChyZXF1ZXN0LCBoaXRUZXN0UmVzdWx0KTsKIAotICAgIGlmIChoaXRUZXN0
UmVzdWx0LmlubmVyTm9kZSgpKSB7CisgICAgaWYgKE5vZGUgKm5vZGUgPSBoaXRUZXN0UmVzdWx0
LmlubmVyTm9kZSgpKSB7CiAgICAgICAgIGJvb2wgaXNSZXBsYWNlZDsKLSAgICAgICAgRmxvYXRS
ZWN0IHJlbmRlclJlY3QgPSBoaXRUZXN0UmVzdWx0LmlubmVyTm9kZSgpLT5yZW5kZXJSZWN0KCZp
c1JlcGxhY2VkKTsKLSAgICAgICAgbV93ZWJQYWdlLnNlbmQoTWVzc2FnZXM6OlZpZXdHZXN0dXJl
Q29udHJvbGxlcjo6RGlkQ29sbGVjdEdlb21ldHJ5Rm9yU21hcnRNYWduaWZpY2F0aW9uR2VzdHVy
ZShvcmlnaW4sIHJlbmRlclJlY3QsIHZpc2libGVDb250ZW50UmVjdCwgaXNSZXBsYWNlZCwgZnJh
bWVIYW5kbGVzTWFnbmlmaWNhdGlvbkdlc3R1cmUpKTsKKyAgICAgICAgRmxvYXRSZWN0IHJlbmRl
clJlY3QgPSBub2RlLT5yZW5kZXJSZWN0KCZpc1JlcGxhY2VkKTsKKworI2lmIFBMQVRGT1JNKE1B
QykKKyAgICAgICAgZG91YmxlIHZpZXdwb3J0TWluaW11bVNjYWxlID0gMDsKKyAgICAgICAgZG91
YmxlIHZpZXdwb3J0TWF4aW11bVNjYWxlID0gc3RkOjpudW1lcmljX2xpbWl0czxkb3VibGU+Ojpt
YXgoKTsKKyNlbHNlCisgICAgICAgIGRvdWJsZSB2aWV3cG9ydE1pbmltdW1TY2FsZSA9IG1fd2Vi
UGFnZS5taW5pbXVtUGFnZVNjYWxlRmFjdG9yKCk7CisgICAgICAgIGRvdWJsZSB2aWV3cG9ydE1h
eGltdW1TY2FsZSA9IG1fd2ViUGFnZS5tYXhpbXVtUGFnZVNjYWxlRmFjdG9yKCk7CisjZW5kaWYK
KworICAgICAgICBkaXNwYXRjaERpZENvbGxlY3RHZW9tZXRyeUZvclNtYXJ0TWFnbmlmaWNhdGlv
bkdlc3R1cmUob3JpZ2luLCByZW5kZXJSZWN0LCB2aXNpYmxlQ29udGVudFJlY3QsIGlzUmVwbGFj
ZWQsIGZyYW1lSGFuZGxlc01hZ25pZmljYXRpb25HZXN0dXJlLCB2aWV3cG9ydE1pbmltdW1TY2Fs
ZSwgdmlld3BvcnRNYXhpbXVtU2NhbGUpOworICAgICAgICByZXR1cm47CiAgICAgfQorCisgICAg
ZGlzcGF0Y2hEaWRDb2xsZWN0R2VvbWV0cnlGb3JTbWFydE1hZ25pZmljYXRpb25HZXN0dXJlKEZs
b2F0UG9pbnQoKSwgRmxvYXRSZWN0KCksIEZsb2F0UmVjdCgpLCBmYWxzZSwgZnJhbWVIYW5kbGVz
TWFnbmlmaWNhdGlvbkdlc3R1cmUsIDAsIDApOworfQorCisjaWYgUExBVEZPUk0oTUFDKQordm9p
ZCBWaWV3R2VzdHVyZUdlb21ldHJ5Q29sbGVjdG9yOjpjb2xsZWN0R2VvbWV0cnlGb3JNYWduaWZp
Y2F0aW9uR2VzdHVyZSgpCit7CisgICAgRmxvYXRSZWN0IHZpc2libGVDb250ZW50UmVjdCA9IG1f
d2ViUGFnZS5tYWluRnJhbWVWaWV3KCktPnZpc2libGVDb250ZW50UmVjdEluY2x1ZGluZ1Njcm9s
bGJhcnMoKTsKKyAgICBib29sIGZyYW1lSGFuZGxlc01hZ25pZmljYXRpb25HZXN0dXJlID0gbV93
ZWJQYWdlLm1haW5XZWJGcmFtZSgpLT5oYW5kbGVzUGFnZVNjYWxlR2VzdHVyZSgpOworICAgIG1f
d2ViUGFnZS5zZW5kKE1lc3NhZ2VzOjpWaWV3R2VzdHVyZUNvbnRyb2xsZXI6OkRpZENvbGxlY3RH
ZW9tZXRyeUZvck1hZ25pZmljYXRpb25HZXN0dXJlKHZpc2libGVDb250ZW50UmVjdCwgZnJhbWVI
YW5kbGVzTWFnbmlmaWNhdGlvbkdlc3R1cmUpKTsKIH0KIAogdm9pZCBWaWV3R2VzdHVyZUdlb21l
dHJ5Q29sbGVjdG9yOjptYWluRnJhbWVEaWRMYXlvdXQoKQpAQCAtOTMsNyArMTIzLDcgQEAgdm9p
ZCBWaWV3R2VzdHVyZUdlb21ldHJ5Q29sbGVjdG9yOjpyZW5kZXJUcmVlU2l6ZU5vdGlmaWNhdGlv
blRpbWVyRmlyZWQoKQogewogICAgIG1fd2ViUGFnZS5zZW5kKE1lc3NhZ2VzOjpWaWV3R2VzdHVy
ZUNvbnRyb2xsZXI6OkRpZEhpdFJlbmRlclRyZWVTaXplVGhyZXNob2xkKCkpOwogfQorI2VuZGlm
CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAogCi0jZW5kaWYgLy8gIVBMQVRGT1JNKElPUykKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9WaWV3R2VzdHVyZUdl
b21ldHJ5Q29sbGVjdG9yLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvVmll
d0dlc3R1cmVHZW9tZXRyeUNvbGxlY3Rvci5oCmluZGV4IGEzMDg4ZWEuLmUwNzUzMGUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9WaWV3R2VzdHVyZUdlb21l
dHJ5Q29sbGVjdG9yLmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1Zp
ZXdHZXN0dXJlR2VvbWV0cnlDb2xsZWN0b3IuaApAQCAtMjYsMTMgKzI2LDEyIEBACiAjaWZuZGVm
IFZpZXdHZXN0dXJlR2VvbWV0cnlDb2xsZWN0b3JfaAogI2RlZmluZSBWaWV3R2VzdHVyZUdlb21l
dHJ5Q29sbGVjdG9yX2gKIAotI2lmICFQTEFURk9STShJT1MpCi0KICNpbmNsdWRlICJNZXNzYWdl
UmVjZWl2ZXIuaCIKICNpbmNsdWRlIDx3dGYvUnVuTG9vcC5oPgogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiBjbGFzcyBGbG9hdFBvaW50OworY2xhc3MgRmxvYXRSZWN0OwogfQogCiBuYW1lc3BhY2Ug
V2ViS2l0IHsKQEAgLTUxLDIwICs1MCwyNSBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCBk
aWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24qLCBJUEM6Ok1lc3NhZ2VEZWNvZGVyJikg
b3ZlcnJpZGU7CiAKICAgICAvLyBNZXNzYWdlIGhhbmRsZXJzLgotICAgIHZvaWQgY29sbGVjdEdl
b21ldHJ5Rm9yTWFnbmlmaWNhdGlvbkdlc3R1cmUoKTsKICAgICB2b2lkIGNvbGxlY3RHZW9tZXRy
eUZvclNtYXJ0TWFnbmlmaWNhdGlvbkdlc3R1cmUoV2ViQ29yZTo6RmxvYXRQb2ludCBvcmlnaW4p
OworCisjaWYgUExBVEZPUk0oTUFDKQorICAgIHZvaWQgY29sbGVjdEdlb21ldHJ5Rm9yTWFnbmlm
aWNhdGlvbkdlc3R1cmUoKTsKICAgICB2b2lkIHNldFJlbmRlclRyZWVTaXplTm90aWZpY2F0aW9u
VGhyZXNob2xkKHVpbnQ2NF90IHNpemUpIHsgbV9yZW5kZXJUcmVlU2l6ZU5vdGlmaWNhdGlvblRo
cmVzaG9sZCA9IHNpemU7IH0KIAogICAgIHZvaWQgcmVuZGVyVHJlZVNpemVOb3RpZmljYXRpb25U
aW1lckZpcmVkKCk7CisjZW5kaWYKKworICAgIHZvaWQgZGlzcGF0Y2hEaWRDb2xsZWN0R2VvbWV0
cnlGb3JTbWFydE1hZ25pZmljYXRpb25HZXN0dXJlKFdlYkNvcmU6OkZsb2F0UG9pbnQgb3JpZ2lu
LCBXZWJDb3JlOjpGbG9hdFJlY3QgdGFyZ2V0UmVjdCwgV2ViQ29yZTo6RmxvYXRSZWN0IHZpc2li
bGVDb250ZW50UmVjdCwgYm9vbCBpc1JlcGxhY2VkRWxlbWVudCwgYm9vbCBmcmFtZUhhbmRsZXNN
YWduaWZpY2F0aW9uR2VzdHVyZSwgZG91YmxlIHZpZXdwb3J0TWluaW11bVNjYWxlLCBkb3VibGUg
dmlld3BvcnRNYXhpbXVtU2NhbGUpOwogCiAgICAgV2ViUGFnZSYgbV93ZWJQYWdlOwogCisjaWYg
UExBVEZPUk0oTUFDKQogICAgIHVpbnQ2NF90IG1fcmVuZGVyVHJlZVNpemVOb3RpZmljYXRpb25U
aHJlc2hvbGQ7CiAgICAgUnVuTG9vcDo6VGltZXI8Vmlld0dlc3R1cmVHZW9tZXRyeUNvbGxlY3Rv
cj4gbV9yZW5kZXJUcmVlU2l6ZU5vdGlmaWNhdGlvblRpbWVyOworI2VuZGlmCiB9OwogCiB9IC8v
IG5hbWVzcGFjZSBXZWJLaXQKIAotI2VuZGlmIC8vICFQTEFURk9STShJT1MpCi0KICNlbmRpZiAv
LyBWaWV3R2VzdHVyZUdlb21ldHJ5Q29sbGVjdG9yCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvVmlld0dlc3R1cmVHZW9tZXRyeUNvbGxlY3Rvci5tZXNzYWdl
cy5pbiBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9WaWV3R2VzdHVyZUdlb21l
dHJ5Q29sbGVjdG9yLm1lc3NhZ2VzLmluCmluZGV4IGVmZDA1MWYuLjA0NzIwOWEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9WaWV3R2VzdHVyZUdlb21ldHJ5
Q29sbGVjdG9yLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
UGFnZS9WaWV3R2VzdHVyZUdlb21ldHJ5Q29sbGVjdG9yLm1lc3NhZ2VzLmluCkBAIC0yMCwxNCAr
MjAsMTIgQEAKICMgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKICMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KIAotI2lmICFQ
TEFURk9STShJT1MpCi0KIG1lc3NhZ2VzIC0+IFZpZXdHZXN0dXJlR2VvbWV0cnlDb2xsZWN0b3Ig
eworICAgIENvbGxlY3RHZW9tZXRyeUZvclNtYXJ0TWFnbmlmaWNhdGlvbkdlc3R1cmUoV2ViQ29y
ZTo6RmxvYXRQb2ludCBvcmlnaW4pCiAKLUNvbGxlY3RHZW9tZXRyeUZvck1hZ25pZmljYXRpb25H
ZXN0dXJlKCkKLUNvbGxlY3RHZW9tZXRyeUZvclNtYXJ0TWFnbmlmaWNhdGlvbkdlc3R1cmUoV2Vi
Q29yZTo6RmxvYXRQb2ludCBvcmlnaW4pCi0KLVNldFJlbmRlclRyZWVTaXplTm90aWZpY2F0aW9u
VGhyZXNob2xkKHVpbnQ2NF90IHNpemUpCi19CisjaWYgIVBMQVRGT1JNKElPUykKKyAgICBDb2xs
ZWN0R2VvbWV0cnlGb3JNYWduaWZpY2F0aW9uR2VzdHVyZSgpCiAKKyAgICBTZXRSZW5kZXJUcmVl
U2l6ZU5vdGlmaWNhdGlvblRocmVzaG9sZCh1aW50NjRfdCBzaXplKQogI2VuZGlmCit9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAgYi9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKaW5kZXggZTI1ZTA2
My4uYjBiM2IxMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYlBhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQ
YWdlLmNwcApAQCAtMjUzLDkgKzI1Myw3IEBAIFdlYlBhZ2U6OldlYlBhZ2UodWludDY0X3QgcGFn
ZUlELCBjb25zdCBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzKQogICAgICwg
bV9wZGZQbHVnaW5FbmFibGVkKGZhbHNlKQogICAgICwgbV9oYXNDYWNoZWRXaW5kb3dGcmFtZShm
YWxzZSkKICAgICAsIG1fa2V5Ym9hcmRFdmVudEJlaW5nSW50ZXJwcmV0ZWQoMCkKLSNpZiAhUExB
VEZPUk0oSU9TKQogICAgICwgbV92aWV3R2VzdHVyZUdlb21ldHJ5Q29sbGVjdG9yKCp0aGlzKQot
I2VuZGlmCiAjZWxpZiBQTEFURk9STShHVEspICYmIEhBVkUoQUNDRVNTSUJJTElUWSkKICAgICAs
IG1fYWNjZXNzaWJpbGl0eU9iamVjdCgwKQogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAppbmRleCAxNzA1NmRkLi5hZmM4MGE0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKQEAgLTk5MCw5ICs5OTAsNyBA
QCBwcml2YXRlOgogCiAgICAgV2ViQ29yZTo6S2V5Ym9hcmRFdmVudCogbV9rZXlib2FyZEV2ZW50
QmVpbmdJbnRlcnByZXRlZDsKIAotI2lmICFQTEFURk9STShJT1MpCiAgICAgVmlld0dlc3R1cmVH
ZW9tZXRyeUNvbGxlY3RvciBtX3ZpZXdHZXN0dXJlR2VvbWV0cnlDb2xsZWN0b3I7Ci0jZW5kaWYK
IAogI2VsaWYgSEFWRShBQ0NFU1NJQklMSVRZKSAmJiAoUExBVEZPUk0oR1RLKSB8fCBQTEFURk9S
TShFRkwpKQogICAgIEdSZWZQdHI8V2ViUGFnZUFjY2Vzc2liaWxpdHlPYmplY3Q+IG1fYWNjZXNz
aWJpbGl0eU9iamVjdDsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>225295</attachid>
            <date>2014-02-26 14:07:22 -0800</date>
            <delta_ts>2014-02-26 17:26:30 -0800</delta_ts>
            <desc>fix mac build</desc>
            <filename>doubletap.diff</filename>
            <type>text/plain</type>
            <size>55058</size>
            <attacher name="Tim Horton">thorton</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBkNWQxOWQwLi44N2VmMjFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQg
QEAKKzIwMTQtMDItMjYgIFRpbSBIb3J0b24gIDx0aW1vdGh5X2hvcnRvbkBhcHBsZS5jb20+CisK
KyAgICAgICAgV2ViS2l0MiBWaWV3IEdlc3R1cmVzIChTbWFydCBNYWduaWZpY2F0aW9uKTogU3Vw
cG9ydCBmb3IgaU9TCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xMjkxNDYKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzE2MDMyNjY4PgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViQ29yZS5leHAuaW46
CisgICAgICAgIEFkZCBhbiBleHBvcnQuCisKIDIwMTQtMDItMjYgIEJlbSBKb25lcy1CZXkgIDxi
am9uZXNiZUBhZG9iZS5jb20+CiAKICAgICAgICAgW0NTUyBTaGFwZXNdIGluc2V0IGFuZCBpbnNl
dC1yZWN0YW5nbGUgdHJpZ2dlciBhc3NlcnQgd2l0aCByZXBsYWNlZCBlbGVtZW50IGFuZCBsYXJn
ZSBwZXJjZW50YWdlIGRpbWVuc2lvbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS5leHAuaW4gYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgppbmRleCA2MmU4YjJjLi45
NWEzNjBkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgorKysgYi9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgpAQCAtMTg3Niw2ICsxODc2LDcgQEAgX19aTks3
V2ViQ29yZTlGbG9hdFF1YWQxMWJvdW5kaW5nQm94RXYKIF9fWk5LN1dlYkNvcmU5RmxvYXRSZWN0
MTBpbnRlcnNlY3RzRVJLUzBfCiBfX1pOSzdXZWJDb3JlOUZsb2F0UmVjdGN2NkNHUmVjdEV2CiBf
X1pOSzdXZWJDb3JlOUZsb2F0U2l6ZTZpc1plcm9FdgorX19aTks3V2ViQ29yZTlGbG9hdFNpemUx
NGRpYWdvbmFsTGVuZ3RoRXYKIF9fWk5LN1dlYkNvcmU5RnJhbWVUcmVlMTBjaGlsZENvdW50RXYK
IF9fWk5LN1dlYkNvcmU5RnJhbWVUcmVlMTJ0cmF2ZXJzZU5leHRFUEtOU181RnJhbWVFCiBfX1pO
SzdXZWJDb3JlOUZyYW1lVHJlZTE0aXNEZXNjZW5kYW50T2ZFUEtOU181RnJhbWVFCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cK
aW5kZXggYTg5MzQ3YS4uOTk1M2QzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdl
TG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDkxIEBACisyMDE0
LTAyLTI2ICBUaW0gSG9ydG9uICA8dGltb3RoeV9ob3J0b25AYXBwbGUuY29tPgorCisgICAgICAg
IFdlYktpdDIgVmlldyBHZXN0dXJlcyAoU21hcnQgTWFnbmlmaWNhdGlvbik6IFN1cHBvcnQgZm9y
IGlPUworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTI5
MTQ2CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8xNjAzMjY2OD4KKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgc3VwcG9ydCBmb3IgZG91YmxlLXRh
cCBzbWFydCBtYWduaWZpY2F0aW9uIG9uIGlPUy4KKworICAgICAgICAqIERlcml2ZWRTb3VyY2Vz
Lm1ha2U6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW06CisgICAg
ICAgICgtW1dLV2ViVmlldyBpbml0V2l0aEZyYW1lOmNvbmZpZ3VyYXRpb246XSk6CisgICAgICAg
IFdLQ29udGVudFZpZXcgaXMgbm8gbG9uZ2VyIEFQSSwgc28gaXQgY2FuIGtub3cgYWJvdXQgV0tX
ZWJWaWV3CisgICAgICAgIGFuZCB3aWxsIGFsd2F5cyBoYXZlIG9uZS4KKworICAgICAgICAoLVtX
S1dlYlZpZXcgY29udGVudFZpZXc6ZGlkQ29tbWl0TGF5ZXJUcmVlOldlYktpdDo6XSk6CisgICAg
ICAgIERvbid0IHJlcGxhY2UgdGhlIHpvb20gc2NhbGUgaWYgd2UncmUgY3VycmVudGx5IGFuaW1h
dGluZy4KKworICAgICAgICAoLVtXS1dlYlZpZXcgX3Rha2VWaWV3U25hcHNob3RdKToKKyAgICAg
ICAgUmVuYW1lLgorCisgICAgICAgICgtW1dLV2ViVmlldyBfem9vbVRvUG9pbnQ6V2ViQ29yZTo6
YXRTY2FsZTpdKToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF96b29tVG9SZWN0OldlYkNvcmU6OmF0
U2NhbGU6b3JpZ2luOldlYkNvcmU6Ol0pOgorICAgICAgICAoY29uc3RyYWluQ29udGVudE9mZnNl
dCk6CisgICAgICAgICgtW1dLV2ViVmlldyBfc2Nyb2xsVG9SZWN0OldlYkNvcmU6Om9yaWdpbjpX
ZWJDb3JlOjptaW5pbXVtU2Nyb2xsRGlzdGFuY2U6XSk6CisgICAgICAgICgtW1dLV2ViVmlldyBf
em9vbU91dFdpdGhPcmlnaW46XSk6CisgICAgICAgICgtW1dLV2ViVmlldyBfem9vbVRvUmVjdDp3
aXRoT3JpZ2luOmZpdEVudGlyZVJlY3Q6bWluaW11bVNjYWxlOm1heGltdW1TY2FsZTptaW5pbXVt
U2Nyb2xsRGlzdGFuY2U6XSk6CisgICAgICAgIEFkZCBfem9vbVRvUmVjdDp3aXRoT3JpZ2luOmZp
dEVudGlyZVJlY3Q6bWluaW11bVNjYWxlOm1heGltdW1TY2FsZTptaW5pbXVtU2Nyb2xsRGlzdGFu
Y2U6CisgICAgICAgIGFuZCBfem9vbU91dFdpdGhPcmlnaW46IGFzIGludGVybmFsIEFQSSwgZm9y
IHVzZSBieSBTbWFydE1hZ25pZmljYXRpb25Db250cm9sbGVyIHZpYSBXS0NvbnRlbnRWaWV3Lgor
ICAgICAgICBUaGVzZSB3aWxsIHVzZSBzb21lIGhldXJpc3RpY3MgdG8gZ2VuZXJhbGx5IGNlbnRl
ciB0aGUgdGFyZ2V0IHJlY3QgaW4gdGhlIHZpZXcKKyAgICAgICAgaW4gYSB3YXkgdGhhdCBzaG91
bGQgbWF0Y2ggV2ViS2l0MSBmYWlybHkgY2xvc2VseS4KKworICAgICAgICAqIFVJUHJvY2Vzcy9B
UEkvQ29jb2EvV0tXZWJWaWV3SW50ZXJuYWwuaDoKKyAgICAgICAgRG9uJ3QgdXNlIHRoZSBXS0Nv
bnRlbnRWaWV3RGVsZWdhdGUgcHJvdG9jb2wgZm9yIHRoaW5ncyB0aGF0IGRvbid0IGJlbG9uZyB0
aGVyZS4KKworICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvU21hcnRNYWduaWZpY2F0aW9uQ29udHJv
bGxlci5oOiBBZGRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1NtYXJ0TWFnbmlmaWNhdGlv
bkNvbnRyb2xsZXIubWVzc2FnZXMuaW46IEFkZGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3Mv
U21hcnRNYWduaWZpY2F0aW9uQ29udHJvbGxlci5tbTogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6
OlNtYXJ0TWFnbmlmaWNhdGlvbkNvbnRyb2xsZXI6OlNtYXJ0TWFnbmlmaWNhdGlvbkNvbnRyb2xs
ZXIpOgorICAgICAgICAoV2ViS2l0OjpTbWFydE1hZ25pZmljYXRpb25Db250cm9sbGVyOjp+U21h
cnRNYWduaWZpY2F0aW9uQ29udHJvbGxlcik6CisgICAgICAgIChXZWJLaXQ6OlNtYXJ0TWFnbmlm
aWNhdGlvbkNvbnRyb2xsZXI6OmhhbmRsZVNtYXJ0TWFnbmlmaWNhdGlvbkdlc3R1cmUpOgorICAg
ICAgICAoV2ViS2l0OjpTbWFydE1hZ25pZmljYXRpb25Db250cm9sbGVyOjpkaWRDb2xsZWN0R2Vv
bWV0cnlGb3JTbWFydE1hZ25pZmljYXRpb25HZXN0dXJlKToKKyAgICAgICAgU21hcnRNYWduaWZp
Y2F0aW9uQ29udHJvbGxlciBzaXRzIG9mZiBvZiBXS0NvbnRlbnRWaWV3LCBhbmQgc2VuZHMvcmVj
ZWl2ZXMKKyAgICAgICAgbWVzc2FnZXMgdG8gdGhlIFdlYlByb2Nlc3MgdG8gZG8gdGhlIHNtYXJ0
IG1hZ25pZmljYXRpb24gaGl0LXRlc3RpbmcuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1dL
Q29udGVudFZpZXcuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXcubW06
CisgICAgICAgICgtW1dLQ29udGVudFZpZXcgaW5pdFdpdGhGcmFtZTpjb250ZXh0OldlYktpdDo6
Y29uZmlndXJhdGlvbjpXZWJLaXQ6OndlYlZpZXc6XSk6CisgICAgICAgIEFzIGJlZm9yZSwgdGVh
Y2ggV0tDb250ZW50VmlldyBhYm91dCBpdHMgb3duaW5nIFdLV2ViVmlldy4KKworICAgICAgICAo
LVtXS0NvbnRlbnRWaWV3IF90YWtlVmlld1NuYXBzaG90XSk6CisgICAgICAgIFJlbmFtZS4KKwor
ICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IF96b29tVG9SZWN0OndpdGhPcmlnaW46Zml0RW50aXJl
UmVjdDptaW5pbXVtU2NhbGU6bWF4aW11bVNjYWxlOm1pbmltdW1TY3JvbGxEaXN0YW5jZTpdKToK
KyAgICAgICAgKC1bV0tDb250ZW50VmlldyBfem9vbU91dFdpdGhPcmlnaW46XSk6CisgICAgICAg
IEZvcndhcmQgX3pvb21Ub1JlY3Q6Ojo6OjogYW5kIF96b29tT3V0V2l0aE9yaWdpbjogdG8gV0tX
ZWJWaWV3LgorCisgICAgICAgICogVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rp
b24uaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5t
bToKKyAgICAgICAgKC1bV0tDb250ZW50VmlldyBzZXR1cEludGVyYWN0aW9uXSk6CisgICAgICAg
ICgtW1dLQ29udGVudFZpZXcgX2RvdWJsZVRhcFJlY29nbml6ZWQ6XSk6CisgICAgICAgICgtW1dL
Q29udGVudFZpZXcgX3R3b0ZpbmdlckRvdWJsZVRhcFJlY29nbml6ZWQ6XSk6CisgICAgICAgIEZv
cndhcmQgZG91YmxlIHRhcCB0byB0aGUgU21hcnRNYWduaWZpY2F0aW9uQ29udHJvbGxlci4KKwor
ICAgICAgICAqIFVJUHJvY2Vzcy9tYWMvVmlld0dlc3R1cmVDb250cm9sbGVyLmg6CisgICAgICAg
ICogVUlQcm9jZXNzL21hYy9WaWV3R2VzdHVyZUNvbnRyb2xsZXIubWVzc2FnZXMuaW46CisgICAg
ICAgICogVUlQcm9jZXNzL21hYy9WaWV3R2VzdHVyZUNvbnRyb2xsZXJNYWMubW06CisgICAgICAg
IChXZWJLaXQ6OlZpZXdHZXN0dXJlQ29udHJvbGxlcjo6ZGlkQ29sbGVjdEdlb21ldHJ5Rm9yU21h
cnRNYWduaWZpY2F0aW9uR2VzdHVyZSk6CisgICAgICAgIFJldHJpZXZlIHRoZSBtaW5pbXVtL21h
eGltdW0gdmlld3BvcnQgc2NhbGUgZnJvbSB0aGUgV2ViUHJvY2Vzcy4KKworICAgICAgICAqIFdl
YktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgQWRkIG5ldyBmaWxlcy4K
KworICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9WaWV3R2VzdHVyZUdlb21ldHJ5Q29sbGVj
dG9yLmNwcDoKKyAgICAgICAgKFdlYktpdDo6Vmlld0dlc3R1cmVHZW9tZXRyeUNvbGxlY3Rvcjo6
Vmlld0dlc3R1cmVHZW9tZXRyeUNvbGxlY3Rvcik6CisgICAgICAgIChXZWJLaXQ6OlZpZXdHZXN0
dXJlR2VvbWV0cnlDb2xsZWN0b3I6OmRpc3BhdGNoRGlkQ29sbGVjdEdlb21ldHJ5Rm9yU21hcnRN
YWduaWZpY2F0aW9uR2VzdHVyZSk6CisgICAgICAgIChXZWJLaXQ6OlZpZXdHZXN0dXJlR2VvbWV0
cnlDb2xsZWN0b3I6OmNvbGxlY3RHZW9tZXRyeUZvclNtYXJ0TWFnbmlmaWNhdGlvbkdlc3R1cmUp
OgorICAgICAgICAoV2ViS2l0OjpWaWV3R2VzdHVyZUdlb21ldHJ5Q29sbGVjdG9yOjpjb2xsZWN0
R2VvbWV0cnlGb3JNYWduaWZpY2F0aW9uR2VzdHVyZSk6CisgICAgICAgIEZhY3RvciBvdXQgY29k
ZSB0byBzZW5kIHRoZSBnZW9tZXRyeSBiYWNrIHRvIHRoZSBVSSBwcm9jZXNzLgorCisgICAgICAg
ICogV2ViUHJvY2Vzcy9XZWJQYWdlL1ZpZXdHZXN0dXJlR2VvbWV0cnlDb2xsZWN0b3IuaDoKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvVmlld0dlc3R1cmVHZW9tZXRyeUNvbGxlY3Rvci5t
ZXNzYWdlcy5pbjoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OldlYlBhZ2UpOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJQYWdlLmg6CisgICAgICAgIFdlIHNob3VsZCBoYXZlIGEgVmlld0dlc3R1cmVH
ZW9tZXRyeUNvbGxlY3RvciBvbiBpT1MgdG9vLgorCiAyMDE0LTAyLTI2ICBQcmF0aWsgU29sYW5r
aSAgPHBzb2xhbmtpQGFwcGxlLmNvbT4KIAogICAgICAgICBbaU9TXVtXZWJLaXQyXSBBZG9wdCBT
UEkgZm9yIG1hbmFnaW5nIHRhYnMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0Rlcml2ZWRT
b3VyY2VzLm1ha2UgYi9Tb3VyY2UvV2ViS2l0Mi9EZXJpdmVkU291cmNlcy5tYWtlCmluZGV4IGQ2
M2QzNDMuLjQ0YTgyODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0Rlcml2ZWRTb3VyY2Vz
Lm1ha2UKKysrIGIvU291cmNlL1dlYktpdDIvRGVyaXZlZFNvdXJjZXMubWFrZQpAQCAtOTMsNiAr
OTMsNyBAQCBNRVNTQUdFX1JFQ0VJVkVSUyA9IFwKICAgICBSZW1vdGVTY3JvbGxpbmdDb29yZGlu
YXRvciBcCiAgICAgU2VjSXRlbVNoaW0gXAogICAgIFNlY0l0ZW1TaGltUHJveHkgXAorICAgIFNt
YXJ0TWFnbmlmaWNhdGlvbkNvbnRyb2xsZXIgXAogICAgIFN0b3JhZ2VBcmVhTWFwIFwKICAgICBT
dG9yYWdlTWFuYWdlciBcCiAgICAgVmlld0dlc3R1cmVDb250cm9sbGVyIFwKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0KaW5kZXggYjhjNTEwNy4u
ZTE2NDQ2YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9X
S1dlYlZpZXcubW0KKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dl
YlZpZXcubW0KQEAgLTE0Miw3ICsxNDIsNyBAQAogCiAgICAgW3NlbGYgYWRkU3Vidmlldzpfc2Ny
b2xsVmlldy5nZXQoKV07CiAKLSAgICBfY29udGVudFZpZXcgPSBhZG9wdE5TKFtbV0tDb250ZW50
VmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpib3VuZHMgY29udGV4dDpjb250ZXh0IGNvbmZpZ3Vy
YXRpb246c3RkOjptb3ZlKHdlYlBhZ2VDb25maWd1cmF0aW9uKV0pOworICAgIF9jb250ZW50Vmll
dyA9IGFkb3B0TlMoW1tXS0NvbnRlbnRWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOmJvdW5kcyBj
b250ZXh0OmNvbnRleHQgY29uZmlndXJhdGlvbjpzdGQ6Om1vdmUod2ViUGFnZUNvbmZpZ3VyYXRp
b24pIHdlYlZpZXc6c2VsZl0pOwogICAgIF9wYWdlID0gW19jb250ZW50VmlldyBwYWdlXTsKICAg
ICBbX2NvbnRlbnRWaWV3IHNldERlbGVnYXRlOnNlbGZdOwogICAgIFtfY29udGVudFZpZXcgbGF5
ZXJdLmFuY2hvclBvaW50ID0gQ0dQb2ludFplcm87CkBAIC0zMTQsNiArMzE0LDEyOSBAQAogICAg
IHJldHVybiBbX2NvbnRlbnRWaWV3IGJyb3dzaW5nQ29udGV4dENvbnRyb2xsZXJdOwogfQogCist
IChSZXRhaW5QdHI8Q0dJbWFnZVJlZj4pX3Rha2VWaWV3U25hcHNob3QKK3sKKyAgICAvLyBGSVhN
RTogV2Ugc2hvdWxkIGJlIGFibGUgdG8gdXNlIGFjcXVpcmUgYW4gSU9TdXJmYWNlIGRpcmVjdGx5
LCBpbnN0ZWFkIG9mIGdvaW5nIHRvIENHSW1hZ2UgaGVyZSBhbmQgYmFjayBpbiBWaWV3U25hcHNo
b3RTdG9yZS4KKyAgICBVSUdyYXBoaWNzQmVnaW5JbWFnZUNvbnRleHRXaXRoT3B0aW9ucyhzZWxm
LmJvdW5kcy5zaXplLCBZRVMsIHNlbGYud2luZG93LnNjcmVlbi5zY2FsZSk7CisgICAgW3NlbGYg
ZHJhd1ZpZXdIaWVyYXJjaHlJblJlY3Q6W3NlbGYgYm91bmRzXSBhZnRlclNjcmVlblVwZGF0ZXM6
Tk9dOworICAgIFVJSW1hZ2UgKmltYWdlID0gVUlHcmFwaGljc0dldEltYWdlRnJvbUN1cnJlbnRJ
bWFnZUNvbnRleHQoKTsKKyAgICBVSUdyYXBoaWNzRW5kSW1hZ2VDb250ZXh0KCk7CisgICAgcmV0
dXJuIGltYWdlLkNHSW1hZ2U7Cit9CisKKy0gKHZvaWQpX3pvb21Ub1BvaW50OihXZWJDb3JlOjpG
bG9hdFBvaW50KXBvaW50IGF0U2NhbGU6KGRvdWJsZSlzY2FsZQoreworICAgIGNvbnN0IGRvdWJs
ZSBtYXhpbXVtWm9vbUR1cmF0aW9uID0gMC40OworICAgIGNvbnN0IGRvdWJsZSBtaW5pbXVtWm9v
bUR1cmF0aW9uID0gMC4xOworICAgIGNvbnN0IGRvdWJsZSB6b29tRHVyYXRpb25GYWN0b3IgPSAw
LjM7CisKKyAgICBDRlRpbWVJbnRlcnZhbCBkdXJhdGlvbiA9IHN0ZDo6bWluKGZhYnMobG9nKFtf
c2Nyb2xsVmlldyB6b29tU2NhbGVdKSAtIGxvZyhzY2FsZSkpICogem9vbUR1cmF0aW9uRmFjdG9y
ICsgbWluaW11bVpvb21EdXJhdGlvbiwgbWF4aW11bVpvb21EdXJhdGlvbik7CisKKyAgICBbX2Nv
bnRlbnRWaWV3IHdpbGxTdGFydFVzZXJUcmlnZ2VyZWRab29tXTsKKyAgICBbX3Njcm9sbFZpZXcg
X3pvb21Ub0NlbnRlcjpwb2ludCBzY2FsZTpzY2FsZSBkdXJhdGlvbjpkdXJhdGlvbl07Cit9CisK
Ky0gKHZvaWQpX3pvb21Ub1JlY3Q6KFdlYkNvcmU6OkZsb2F0UmVjdCl0YXJnZXRSZWN0IGF0U2Nh
bGU6KGRvdWJsZSlzY2FsZSBvcmlnaW46KFdlYkNvcmU6OkZsb2F0UG9pbnQpb3JpZ2luCit7Cisg
ICAgV2ViQ29yZTo6RmxvYXRTaXplIHNjcm9sbFZpZXdTaXplKFtfc2Nyb2xsVmlldyBib3VuZHNd
LnNpemUpOworICAgIGRvdWJsZSBjdXJyZW50U2NhbGVGYWN0b3IgPSBbX3Njcm9sbFZpZXcgem9v
bVNjYWxlXTsKKyAgICBkb3VibGUgcmVsYXRpdmVTY2FsZSA9IHNjYWxlIC8gY3VycmVudFNjYWxl
RmFjdG9yOworCisgICAgV2ViQ29yZTo6RmxvYXRSZWN0IHRhcmdldFJlY3RJblNjcm9sbFZpZXcg
PSBbX3Njcm9sbFZpZXcgY29udmVydFJlY3Q6dGFyZ2V0UmVjdCBmcm9tVmlldzpfY29udGVudFZp
ZXcuZ2V0KCldOworICAgIFdlYkNvcmU6OkZsb2F0UmVjdCBzY2FsZWRUYXJnZXRSZWN0SW5TY3Jv
bGxWaWV3ID0gdGFyZ2V0UmVjdEluU2Nyb2xsVmlldzsKKyAgICBzY2FsZWRUYXJnZXRSZWN0SW5T
Y3JvbGxWaWV3LnNjYWxlKHJlbGF0aXZlU2NhbGUsIHJlbGF0aXZlU2NhbGUpOworCisgICAgLy8g
Q2VudGVyIHRoZSB0YXJnZXQgcmVjdCBpbiB0aGUgc2Nyb2xsIHZpZXcuCisgICAgLy8gSWYgdGhl
IHRhcmdldCBkb2Vzbid0IGZpdCBpbiB0aGUgc2Nyb2xsIHZpZXcsIGNlbnRlciBvbiB0aGUgZ2Vz
dHVyZSBsb2NhdGlvbiBpbnN0ZWFkLgorICAgIFdlYkNvcmU6OkZsb2F0UG9pbnQgem9vbUNlbnRl
ciA9IHRhcmdldFJlY3QuY2VudGVyKCk7CisKKyAgICBpZiAoc2NhbGVkVGFyZ2V0UmVjdEluU2Ny
b2xsVmlldy53aWR0aCgpID4gc2Nyb2xsVmlld1NpemUud2lkdGgoKSkKKyAgICAgICAgem9vbUNl
bnRlci5zZXRYKG9yaWdpbi54KCkpOworICAgIGlmIChzY2FsZWRUYXJnZXRSZWN0SW5TY3JvbGxW
aWV3LmhlaWdodCgpID4gc2Nyb2xsVmlld1NpemUuaGVpZ2h0KCkpCisgICAgICAgIHpvb21DZW50
ZXIuc2V0WShvcmlnaW4ueSgpKTsKKworICAgIFtzZWxmIF96b29tVG9Qb2ludDp6b29tQ2VudGVy
IGF0U2NhbGU6c2NhbGVdOworfQorCitzdGF0aWMgV2ViQ29yZTo6RmxvYXRQb2ludCBjb25zdHJh
aW5Db250ZW50T2Zmc2V0KFdlYkNvcmU6OkZsb2F0UG9pbnQgY29udGVudE9mZnNldCwgV2ViQ29y
ZTo6RmxvYXRTaXplIGNvbnRlbnRTaXplLCBXZWJDb3JlOjpGbG9hdFNpemUgc2Nyb2xsVmlld1Np
emUpCit7CisgICAgV2ViQ29yZTo6RmxvYXRTaXplIG1heGltdW1Db250ZW50T2Zmc2V0ID0gY29u
dGVudFNpemUgLSBzY3JvbGxWaWV3U2l6ZTsKKyAgICBjb250ZW50T2Zmc2V0ID0gY29udGVudE9m
ZnNldC5zaHJ1bmtUbyhXZWJDb3JlOjpGbG9hdFBvaW50KG1heGltdW1Db250ZW50T2Zmc2V0Lndp
ZHRoKCksIG1heGltdW1Db250ZW50T2Zmc2V0LmhlaWdodCgpKSk7CisgICAgY29udGVudE9mZnNl
dCA9IGNvbnRlbnRPZmZzZXQuZXhwYW5kZWRUbyhXZWJDb3JlOjpGbG9hdFBvaW50KCkpOworICAg
IHJldHVybiBjb250ZW50T2Zmc2V0OworfQorCistIChCT09MKV9zY3JvbGxUb1JlY3Q6KFdlYkNv
cmU6OkZsb2F0UmVjdCl0YXJnZXRSZWN0IG9yaWdpbjooV2ViQ29yZTo6RmxvYXRQb2ludClvcmln
aW4gbWluaW11bVNjcm9sbERpc3RhbmNlOihDR0Zsb2F0KW1pbmltdW1TY3JvbGxEaXN0YW5jZQor
eworICAgIFdlYkNvcmU6OkZsb2F0U2l6ZSBzY3JvbGxWaWV3U2l6ZShbX3Njcm9sbFZpZXcgYm91
bmRzXS5zaXplKTsKKyAgICBXZWJDb3JlOjpGbG9hdFNpemUgY29udGVudFNpemUoW19zY3JvbGxW
aWV3IGNvbnRlbnRTaXplXSk7CisgICAgV2ViQ29yZTo6RmxvYXRQb2ludCBjdXJyZW50Q29udGVu
dE9mZnNldChbX3Njcm9sbFZpZXcgY29udGVudE9mZnNldF0pOworCisgICAgV2ViQ29yZTo6Rmxv
YXRQb2ludCBvcmlnaW5JblNjcm9sbFZpZXcoW19zY3JvbGxWaWV3IGNvbnZlcnRQb2ludDpvcmln
aW4gZnJvbVZpZXc6X2NvbnRlbnRWaWV3LmdldCgpXSk7CisgICAgV2ViQ29yZTo6RmxvYXRSZWN0
IHRhcmdldFJlY3RJblNjcm9sbFZpZXcoW19zY3JvbGxWaWV3IGNvbnZlcnRSZWN0OnRhcmdldFJl
Y3QgZnJvbVZpZXc6X2NvbnRlbnRWaWV3LmdldCgpXSk7CisKKyAgICAvLyBDZW50ZXIgdGhlIHRh
cmdldCByZWN0IGluIHRoZSBzY3JvbGwgdmlldy4KKyAgICAvLyBJZiB0aGUgdGFyZ2V0IGRvZXNu
J3QgZml0IGluIHRoZSBzY3JvbGwgdmlldywgY2VudGVyIG9uIHRoZSBnZXN0dXJlIGxvY2F0aW9u
IGluc3RlYWQuCisgICAgV2ViQ29yZTo6RmxvYXRQb2ludCBuZXdDb250ZW50T2Zmc2V0OworICAg
IGlmICh0YXJnZXRSZWN0SW5TY3JvbGxWaWV3LndpZHRoKCkgPD0gc2Nyb2xsVmlld1NpemUud2lk
dGgoKSkKKyAgICAgICAgbmV3Q29udGVudE9mZnNldC5zZXRYKHRhcmdldFJlY3RJblNjcm9sbFZp
ZXcueCgpIC0gKHNjcm9sbFZpZXdTaXplLndpZHRoKCkgLSB0YXJnZXRSZWN0SW5TY3JvbGxWaWV3
LndpZHRoKCkpIC8gMik7CisgICAgZWxzZQorICAgICAgICBuZXdDb250ZW50T2Zmc2V0LnNldFgo
b3JpZ2luSW5TY3JvbGxWaWV3LngoKSAtIHNjcm9sbFZpZXdTaXplLndpZHRoKCkgLyAyKTsKKyAg
ICBpZiAodGFyZ2V0UmVjdEluU2Nyb2xsVmlldy5oZWlnaHQoKSA8PSBzY3JvbGxWaWV3U2l6ZS5o
ZWlnaHQoKSkKKyAgICAgICAgbmV3Q29udGVudE9mZnNldC5zZXRZKHRhcmdldFJlY3RJblNjcm9s
bFZpZXcueSgpIC0gKHNjcm9sbFZpZXdTaXplLmhlaWdodCgpIC0gdGFyZ2V0UmVjdEluU2Nyb2xs
Vmlldy5oZWlnaHQoKSkgLyAyKTsKKyAgICBlbHNlCisgICAgICAgIG5ld0NvbnRlbnRPZmZzZXQu
c2V0WShvcmlnaW5JblNjcm9sbFZpZXcueSgpIC0gc2Nyb2xsVmlld1NpemUuaGVpZ2h0KCkgLyAy
KTsKKyAgICBuZXdDb250ZW50T2Zmc2V0ID0gY29uc3RyYWluQ29udGVudE9mZnNldChuZXdDb250
ZW50T2Zmc2V0LCBjb250ZW50U2l6ZSwgc2Nyb2xsVmlld1NpemUpOworCisgICAgaWYgKGN1cnJl
bnRDb250ZW50T2Zmc2V0ID09IG5ld0NvbnRlbnRPZmZzZXQpIHsKKyAgICAgICAgaWYgKHRhcmdl
dFJlY3RJblNjcm9sbFZpZXcud2lkdGgoKSA+IHNjcm9sbFZpZXdTaXplLndpZHRoKCkpCisgICAg
ICAgICAgICBuZXdDb250ZW50T2Zmc2V0LnNldFgob3JpZ2luSW5TY3JvbGxWaWV3LngoKSAtIHNj
cm9sbFZpZXdTaXplLndpZHRoKCkgLyAyKTsKKyAgICAgICAgaWYgKHRhcmdldFJlY3RJblNjcm9s
bFZpZXcuaGVpZ2h0KCkgPiBzY3JvbGxWaWV3U2l6ZS5oZWlnaHQoKSkKKyAgICAgICAgICAgIG5l
d0NvbnRlbnRPZmZzZXQuc2V0WShvcmlnaW5JblNjcm9sbFZpZXcueSgpIC0gc2Nyb2xsVmlld1Np
emUuaGVpZ2h0KCkgLyAyKTsKKyAgICAgICAgbmV3Q29udGVudE9mZnNldCA9IGNvbnN0cmFpbkNv
bnRlbnRPZmZzZXQobmV3Q29udGVudE9mZnNldCwgY29udGVudFNpemUsIHNjcm9sbFZpZXdTaXpl
KTsKKyAgICB9CisKKyAgICBmbG9hdCBzY3JvbGxEaXN0YW5jZSA9IChjdXJyZW50Q29udGVudE9m
ZnNldCAtIG5ld0NvbnRlbnRPZmZzZXQpLmRpYWdvbmFsTGVuZ3RoKCk7CisKKyAgICBpZiAoc2Ny
b2xsRGlzdGFuY2UgPCBtaW5pbXVtU2Nyb2xsRGlzdGFuY2UpCisgICAgICAgIHJldHVybiBmYWxz
ZTsKKworICAgIFtfc2Nyb2xsVmlldyBzZXRDb250ZW50T2Zmc2V0Om5ld0NvbnRlbnRPZmZzZXQg
YW5pbWF0ZWQ6WUVTXTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworLSAodm9pZClfem9vbU91dFdp
dGhPcmlnaW46KENHUG9pbnQpb3JpZ2luCit7CisgICAgW3NlbGYgX3pvb21Ub1BvaW50Om9yaWdp
biBhdFNjYWxlOltfc2Nyb2xsVmlldyBtaW5pbXVtWm9vbVNjYWxlXV07Cit9CisKKy0gKEJPT0wp
X3pvb21Ub1JlY3Q6KENHUmVjdCl0YXJnZXRSZWN0IHdpdGhPcmlnaW46KENHUG9pbnQpb3JpZ2lu
IGZpdEVudGlyZVJlY3Q6KEJPT0wpZml0RW50aXJlUmVjdCBtaW5pbXVtU2NhbGU6KGRvdWJsZSlt
aW5pbXVtU2NhbGUgbWF4aW11bVNjYWxlOihkb3VibGUpbWF4aW11bVNjYWxlIG1pbmltdW1TY3Jv
bGxEaXN0YW5jZTooQ0dGbG9hdCltaW5pbXVtU2Nyb2xsRGlzdGFuY2UKK3sKKyAgICBjb25zdCBm
bG9hdCBtYXhpbXVtU2NhbGVGYWN0b3JEZWx0YUZvclBhblNjcm9sbCA9IDAuMDI7CisKKyAgICBp
ZiAoIVtfc2Nyb2xsVmlldyBpc1Njcm9sbEVuYWJsZWRdIHx8ICFbX3Njcm9sbFZpZXcgaXNab29t
RW5hYmxlZF0pCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIENHU2l6ZSBzY3JvbGxWaWV3
U2l6ZSA9IFtfc2Nyb2xsVmlldyBib3VuZHNdLnNpemU7CisgICAgZG91YmxlIGhvcml6b250YWxT
Y2FsZSA9IHNjcm9sbFZpZXdTaXplLndpZHRoIC8gdGFyZ2V0UmVjdC5zaXplLndpZHRoOworICAg
IGRvdWJsZSB2ZXJ0aWNhbFNjYWxlID0gc2Nyb2xsVmlld1NpemUuaGVpZ2h0IC8gdGFyZ2V0UmVj
dC5zaXplLmhlaWdodDsKKworICAgIGhvcml6b250YWxTY2FsZSA9IHN0ZDo6bWluKHN0ZDo6bWF4
KGhvcml6b250YWxTY2FsZSwgbWluaW11bVNjYWxlKSwgbWF4aW11bVNjYWxlKTsKKyAgICB2ZXJ0
aWNhbFNjYWxlID0gc3RkOjptaW4oc3RkOjptYXgodmVydGljYWxTY2FsZSwgbWluaW11bVNjYWxl
KSwgbWF4aW11bVNjYWxlKTsKKworICAgIGRvdWJsZSB0YXJnZXRTY2FsZSA9IGZpdEVudGlyZVJl
Y3QgPyBzdGQ6Om1pbihob3Jpem9udGFsU2NhbGUsIHZlcnRpY2FsU2NhbGUpIDogaG9yaXpvbnRh
bFNjYWxlOworICAgIGRvdWJsZSBjdXJyZW50U2NhbGUgPSBbX3Njcm9sbFZpZXcgem9vbVNjYWxl
XTsKKyAgICBpZiAoZmFicyh0YXJnZXRTY2FsZSAtIGN1cnJlbnRTY2FsZSkgPCBtYXhpbXVtU2Nh
bGVGYWN0b3JEZWx0YUZvclBhblNjcm9sbCkgeworICAgICAgICBpZiAoW3NlbGYgX3Njcm9sbFRv
UmVjdDp0YXJnZXRSZWN0IG9yaWdpbjpvcmlnaW4gbWluaW11bVNjcm9sbERpc3RhbmNlOm1pbmlt
dW1TY3JvbGxEaXN0YW5jZV0pCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9IGVsc2Ug
aWYgKHRhcmdldFNjYWxlICE9IGN1cnJlbnRTY2FsZSkgeworICAgICAgICBbc2VsZiBfem9vbVRv
UmVjdDp0YXJnZXRSZWN0IGF0U2NhbGU6dGFyZ2V0U2NhbGUgb3JpZ2luOm9yaWdpbl07CisgICAg
ICAgIHJldHVybiB0cnVlOworICAgIH0KKyAgICAKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKICNw
cmFnbWEgbWFyayBXS0NvbnRlbnRWaWV3RGVsZWdhdGUKIAogLSAodm9pZCljb250ZW50Vmlld0Rp
ZENvbW1pdExvYWRGb3JNYWluRnJhbWU6KFdLQ29udGVudFZpZXcgKiljb250ZW50VmlldwpAQCAt
MzI2LDcgKzQ0OSw3IEBACiAgICAgW19zY3JvbGxWaWV3IHNldE1pbmltdW1ab29tU2NhbGU6bGF5
ZXJUcmVlVHJhbnNhY3Rpb24ubWluaW11bVNjYWxlRmFjdG9yKCldOwogICAgIFtfc2Nyb2xsVmll
dyBzZXRNYXhpbXVtWm9vbVNjYWxlOmxheWVyVHJlZVRyYW5zYWN0aW9uLm1heGltdW1TY2FsZUZh
Y3RvcigpXTsKICAgICBbX3Njcm9sbFZpZXcgc2V0Wm9vbUVuYWJsZWQ6bGF5ZXJUcmVlVHJhbnNh
Y3Rpb24uYWxsb3dzVXNlclNjYWxpbmcoKV07Ci0gICAgaWYgKCFsYXllclRyZWVUcmFuc2FjdGlv
bi5zY2FsZVdhc1NldEJ5VUlQcm9jZXNzKCkgJiYgIVtfc2Nyb2xsVmlldyBpc1pvb21pbmddICYm
ICFbX3Njcm9sbFZpZXcgaXNab29tQm91bmNpbmddKQorICAgIGlmICghbGF5ZXJUcmVlVHJhbnNh
Y3Rpb24uc2NhbGVXYXNTZXRCeVVJUHJvY2VzcygpICYmICFbX3Njcm9sbFZpZXcgaXNab29taW5n
XSAmJiAhW19zY3JvbGxWaWV3IGlzWm9vbUJvdW5jaW5nXSAmJiAhW19zY3JvbGxWaWV3IF9pc0Fu
aW1hdGluZ1pvb21dKQogICAgICAgICBbX3Njcm9sbFZpZXcgc2V0Wm9vbVNjYWxlOmxheWVyVHJl
ZVRyYW5zYWN0aW9uLnBhZ2VTY2FsZUZhY3RvcigpXTsKIAogICAgIGlmIChfZ2VzdHVyZUNvbnRy
b2xsZXIpCkBAIC0zNDAsMTYgKzQ2Myw2IEBACiAgICAgCiB9CiAKLS0gKFJldGFpblB0cjxDR0lt
YWdlUmVmPil0YWtlVmlld1NuYXBzaG90Rm9yQ29udGVudFZpZXc6KFdLQ29udGVudFZpZXcgKilj
b250ZW50VmlldwotewotICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgYmUgYWJsZSB0byB1c2UgYWNx
dWlyZSBhbiBJT1N1cmZhY2UgZGlyZWN0bHksIGluc3RlYWQgb2YgZ29pbmcgdG8gQ0dJbWFnZSBo
ZXJlIGFuZCBiYWNrIGluIFZpZXdTbmFwc2hvdFN0b3JlLgotICAgIFVJR3JhcGhpY3NCZWdpbklt
YWdlQ29udGV4dFdpdGhPcHRpb25zKHNlbGYuYm91bmRzLnNpemUsIFlFUywgc2VsZi53aW5kb3cu
c2NyZWVuLnNjYWxlKTsKLSAgICBbc2VsZiBkcmF3Vmlld0hpZXJhcmNoeUluUmVjdDpbc2VsZiBi
b3VuZHNdIGFmdGVyU2NyZWVuVXBkYXRlczpOT107Ci0gICAgVUlJbWFnZSAqaW1hZ2UgPSBVSUdy
YXBoaWNzR2V0SW1hZ2VGcm9tQ3VycmVudEltYWdlQ29udGV4dCgpOwotICAgIFVJR3JhcGhpY3NF
bmRJbWFnZUNvbnRleHQoKTsKLSAgICByZXR1cm4gaW1hZ2UuQ0dJbWFnZTsKLX0KLQogI3ByYWdt
YSBtYXJrIC0gVUlTY3JvbGxWaWV3RGVsZWdhdGUKIAogLSAoVUlWaWV3ICopdmlld0Zvclpvb21p
bmdJblNjcm9sbFZpZXc6KFVJU2Nyb2xsVmlldyAqKXNjcm9sbFZpZXcKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3SW50ZXJuYWwuaCBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3SW50ZXJuYWwuaAppbmRl
eCAzMTc2YjY3Li4xY2NiYjQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL0NvY29hL1dLV2ViVmlld0ludGVybmFsLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdJbnRlcm5hbC5oCkBAIC01MSw2ICs1MSwxMyBAQCBjbGFz
cyBXZWJQYWdlUHJveHk7CiBAcGFja2FnZQogICAgIFJlZlB0cjxXZWJLaXQ6OldlYlBhZ2VQcm94
eT4gX3BhZ2U7CiB9CisKKyNpZiBQTEFURk9STShJT1MpCistIChSZXRhaW5QdHI8Q0dJbWFnZVJl
Zj4pX3Rha2VWaWV3U25hcHNob3Q7CisKKy0gKEJPT0wpX3pvb21Ub1JlY3Q6KENHUmVjdCl0YXJn
ZXRSZWN0IHdpdGhPcmlnaW46KENHUG9pbnQpb3JpZ2luIGZpdEVudGlyZVJlY3Q6KEJPT0wpZml0
RW50aXJlUmVjdCBtaW5pbXVtU2NhbGU6KGRvdWJsZSltaW5pbXVtU2NhbGUgbWF4aW11bVNjYWxl
Oihkb3VibGUpbWF4aW11bVNjYWxlIG1pbmltdW1TY3JvbGxEaXN0YW5jZTooQ0dGbG9hdCltaW5p
bXVtU2Nyb2xsRGlzdGFuY2U7CistICh2b2lkKV96b29tT3V0V2l0aE9yaWdpbjooQ0dQb2ludClv
cmlnaW47CisjZW5kaWYKIEBlbmQKIAogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvaW9zL1NtYXJ0TWFnbmlmaWNhdGlvbkNvbnRyb2xsZXIuaCBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9pb3MvU21hcnRNYWduaWZpY2F0aW9uQ29udHJvbGxlci5oCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFiMWQwOTgKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1NtYXJ0TWFnbmlmaWNhdGlvbkNvbnRyb2xs
ZXIuaApAQCAtMCwwICsxLDY1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzLCAyMDE0IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwor
ICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisg
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBTbWFydE1h
Z25pZmljYXRpb25Db250cm9sbGVyX2gKKyNkZWZpbmUgU21hcnRNYWduaWZpY2F0aW9uQ29udHJv
bGxlcl9oCisKKyNpZiBQTEFURk9STShJT1MpCisKKyNpbmNsdWRlICJNZXNzYWdlUmVjZWl2ZXIu
aCIKKyNpbmNsdWRlIDxXZWJDb3JlL0Zsb2F0UmVjdC5oPgorI2luY2x1ZGUgPHd0Zi9SZXRhaW5Q
dHIuaD4KKworT0JKQ19DTEFTUyBXS0NvbnRlbnRWaWV3OworT0JKQ19DTEFTUyBVSVNjcm9sbFZp
ZXc7CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBXZWJQYWdlUHJveHk7CisKK2NsYXNz
IFNtYXJ0TWFnbmlmaWNhdGlvbkNvbnRyb2xsZXIgOiBwcml2YXRlIElQQzo6TWVzc2FnZVJlY2Vp
dmVyIHsKKyAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShTbWFydE1hZ25pZmljYXRpb25Db250cm9s
bGVyKTsKK3B1YmxpYzoKKyAgICBTbWFydE1hZ25pZmljYXRpb25Db250cm9sbGVyKFdLQ29udGVu
dFZpZXcgKik7CisgICAgflNtYXJ0TWFnbmlmaWNhdGlvbkNvbnRyb2xsZXIoKTsKKworICAgIHZv
aWQgaGFuZGxlU21hcnRNYWduaWZpY2F0aW9uR2VzdHVyZShXZWJDb3JlOjpGbG9hdFBvaW50IG9y
aWdpbik7CisgICAgdm9pZCBoYW5kbGVSZXNldE1hZ25pZmljYXRpb25HZXN0dXJlKFdlYkNvcmU6
OkZsb2F0UG9pbnQgb3JpZ2luKTsKKworcHJpdmF0ZToKKyAgICAvLyBJUEM6Ok1lc3NhZ2VSZWNl
aXZlci4KKyAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9u
KiwgSVBDOjpNZXNzYWdlRGVjb2RlciYpIG92ZXJyaWRlOworCisgICAgdm9pZCBkaWRDb2xsZWN0
R2VvbWV0cnlGb3JTbWFydE1hZ25pZmljYXRpb25HZXN0dXJlKFdlYkNvcmU6OkZsb2F0UG9pbnQg
b3JpZ2luLCBXZWJDb3JlOjpGbG9hdFJlY3QgcmVuZGVyUmVjdCwgV2ViQ29yZTo6RmxvYXRSZWN0
IHZpc2libGVDb250ZW50Qm91bmRzLCBib29sIGlzUmVwbGFjZWRFbGVtZW50LCBib29sIGZyYW1l
SGFuZGxlc01hZ25pZmljYXRpb25HZXN0dXJlLCBkb3VibGUgdmlld3BvcnRNaW5pbXVtU2NhbGUs
IGRvdWJsZSB2aWV3cG9ydE1heGltdW1TY2FsZSk7CisKKyAgICBXZWJQYWdlUHJveHkmIG1fd2Vi
UGFnZVByb3h5OworICAgIFdLQ29udGVudFZpZXcgKm1fY29udGVudFZpZXc7Cit9OworICAgIAor
fSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBQTEFURk9STShJT1MpCisKKyNlbmRp
ZiAvLyBTbWFydE1hZ25pZmljYXRpb25Db250cm9sbGVyX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9pb3MvU21hcnRNYWduaWZpY2F0aW9uQ29udHJvbGxlci5tZXNzYWdl
cy5pbiBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvU21hcnRNYWduaWZpY2F0aW9uQ29u
dHJvbGxlci5tZXNzYWdlcy5pbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5k
Y2VlYjEzCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9T
bWFydE1hZ25pZmljYXRpb25Db250cm9sbGVyLm1lc3NhZ2VzLmluCkBAIC0wLDAgKzEsMjkgQEAK
KyMgQ29weXJpZ2h0IChDKSAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMK
KyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworIyBhcmUgbWV0OgorIyAxLiAgUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyMgMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisjICAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnIEFORAorIyBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorIyBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBV
UlBPU0UgQVJFCisjIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SCisjIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKKyMgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IKKyMgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIKKyMgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwK
KyMgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworI2lmIFBMQVRGT1JNKElP
UykKKworbWVzc2FnZXMgLT4gU21hcnRNYWduaWZpY2F0aW9uQ29udHJvbGxlciB7CisgICAgRGlk
Q29sbGVjdEdlb21ldHJ5Rm9yU21hcnRNYWduaWZpY2F0aW9uR2VzdHVyZShXZWJDb3JlOjpGbG9h
dFBvaW50IG9yaWdpbiwgV2ViQ29yZTo6RmxvYXRSZWN0IHJlbmRlclJlY3QsIFdlYkNvcmU6OkZs
b2F0UmVjdCB2aXNpYmxlQ29udGVudEJvdW5kcywgYm9vbCBpc1JlcGxhY2VkRWxlbWVudCwgYm9v
bCBmcmFtZUhhbmRsZXNNYWduaWZpY2F0aW9uR2VzdHVyZSwgZG91YmxlIHZpZXdwb3J0TWluaW11
bVNjYWxlLCBkb3VibGUgdmlld3BvcnRNYXhpbXVtU2NhbGUpCit9CisKKyNlbmRpZgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9TbWFydE1hZ25pZmljYXRpb25Db250
cm9sbGVyLm1tIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9TbWFydE1hZ25pZmljYXRp
b25Db250cm9sbGVyLm1tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmYwYThi
YzkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1NtYXJ0
TWFnbmlmaWNhdGlvbkNvbnRyb2xsZXIubW0KQEAgLTAsMCArMSwxMTcgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICog
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAq
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjaW1wb3J0ICJjb25maWcuaCIKKyNpbXBvcnQgIlNtYXJ0TWFnbmlmaWNhdGlvbkNvbnRyb2xs
ZXIuaCIKKworI2lmIFBMQVRGT1JNKElPUykKKworI2ltcG9ydCAiU21hcnRNYWduaWZpY2F0aW9u
Q29udHJvbGxlck1lc3NhZ2VzLmgiCisjaW1wb3J0ICJWaWV3R2VzdHVyZUdlb21ldHJ5Q29sbGVj
dG9yTWVzc2FnZXMuaCIKKyNpbXBvcnQgIldLQ29udGVudFZpZXcuaCIKKyNpbXBvcnQgIldLU2Ny
b2xsVmlldy5oIgorI2ltcG9ydCAiV2ViUGFnZUdyb3VwLmgiCisjaW1wb3J0ICJXZWJQYWdlTWVz
c2FnZXMuaCIKKyNpbXBvcnQgIldlYlBhZ2VQcm94eS5oIgorI2ltcG9ydCAiV2ViUHJvY2Vzc1By
b3h5LmgiCisjaW1wb3J0IDxVSUtpdC9VSUtpdC5oPgorI2ltcG9ydCA8VUlLaXQvVUlLaXRfUHJp
dmF0ZS5oPgorCit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKKworc3RhdGljIGNvbnN0IENHRmxv
YXQgc21hcnRNYWduaWZpY2F0aW9uUGFuU2Nyb2xsVGhyZXNob2xkWm9vbWVkT3V0ID0gNjA7Citz
dGF0aWMgY29uc3QgQ0dGbG9hdCBzbWFydE1hZ25pZmljYXRpb25QYW5TY3JvbGxUaHJlc2hvbGRJ
UGhvbmUgPSAxMDA7CitzdGF0aWMgY29uc3QgQ0dGbG9hdCBzbWFydE1hZ25pZmljYXRpb25QYW5T
Y3JvbGxUaHJlc2hvbGRJUGFkID0gMTUwOworc3RhdGljIGNvbnN0IENHRmxvYXQgc21hcnRNYWdu
aWZpY2F0aW9uRWxlbWVudFBhZGRpbmcgPSAwLjA1OworCitzdGF0aWMgY29uc3QgZG91YmxlIHNt
YXJ0TWFnbmlmaWNhdGlvbk1heGltdW1TY2FsZSA9IDEuNjsKK3N0YXRpYyBjb25zdCBkb3VibGUg
c21hcnRNYWduaWZpY2F0aW9uTWluaW11bVNjYWxlID0gMDsKKworbmFtZXNwYWNlIFdlYktpdCB7
CisKK1NtYXJ0TWFnbmlmaWNhdGlvbkNvbnRyb2xsZXI6OlNtYXJ0TWFnbmlmaWNhdGlvbkNvbnRy
b2xsZXIoV0tDb250ZW50VmlldyAqY29udGVudFZpZXcpCisgICAgOiBtX3dlYlBhZ2VQcm94eSgq
Y29udGVudFZpZXcucGFnZSkKKyAgICAsIG1fY29udGVudFZpZXcoY29udGVudFZpZXcpCit7Cisg
ICAgbV93ZWJQYWdlUHJveHkucHJvY2VzcygpLmFkZE1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6
U21hcnRNYWduaWZpY2F0aW9uQ29udHJvbGxlcjo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtX3dl
YlBhZ2VQcm94eS5wYWdlSUQoKSwgKnRoaXMpOworfQorCitTbWFydE1hZ25pZmljYXRpb25Db250
cm9sbGVyOjp+U21hcnRNYWduaWZpY2F0aW9uQ29udHJvbGxlcigpCit7CisgICAgbV93ZWJQYWdl
UHJveHkucHJvY2VzcygpLnJlbW92ZU1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6U21hcnRNYWdu
aWZpY2F0aW9uQ29udHJvbGxlcjo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtX3dlYlBhZ2VQcm94
eS5wYWdlSUQoKSk7Cit9CisKK3ZvaWQgU21hcnRNYWduaWZpY2F0aW9uQ29udHJvbGxlcjo6aGFu
ZGxlU21hcnRNYWduaWZpY2F0aW9uR2VzdHVyZShGbG9hdFBvaW50IG9yaWdpbikKK3sKKyAgICBt
X3dlYlBhZ2VQcm94eS5wcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6Vmlld0dlc3R1cmVHZW9tZXRy
eUNvbGxlY3Rvcjo6Q29sbGVjdEdlb21ldHJ5Rm9yU21hcnRNYWduaWZpY2F0aW9uR2VzdHVyZShv
cmlnaW4pLCBtX3dlYlBhZ2VQcm94eS5wYWdlSUQoKSk7Cit9CisKK3ZvaWQgU21hcnRNYWduaWZp
Y2F0aW9uQ29udHJvbGxlcjo6aGFuZGxlUmVzZXRNYWduaWZpY2F0aW9uR2VzdHVyZShGbG9hdFBv
aW50IG9yaWdpbikKK3sKKyAgICBbbV9jb250ZW50VmlldyBfem9vbU91dFdpdGhPcmlnaW46b3Jp
Z2luXTsKK30KKwordm9pZCBTbWFydE1hZ25pZmljYXRpb25Db250cm9sbGVyOjpkaWRDb2xsZWN0
R2VvbWV0cnlGb3JTbWFydE1hZ25pZmljYXRpb25HZXN0dXJlKEZsb2F0UG9pbnQgb3JpZ2luLCBG
bG9hdFJlY3QgdGFyZ2V0UmVjdCwgRmxvYXRSZWN0IHZpc2libGVDb250ZW50UmVjdCwgYm9vbCBp
c1JlcGxhY2VkRWxlbWVudCwgYm9vbCBmcmFtZUhhbmRsZXNNYWduaWZpY2F0aW9uR2VzdHVyZSwg
ZG91YmxlIHZpZXdwb3J0TWluaW11bVNjYWxlLCBkb3VibGUgdmlld3BvcnRNYXhpbXVtU2NhbGUp
Cit7CisgICAgaWYgKGZyYW1lSGFuZGxlc01hZ25pZmljYXRpb25HZXN0dXJlKQorICAgICAgICBy
ZXR1cm47CisKKyAgICBpZiAodGFyZ2V0UmVjdC5pc0VtcHR5KCkpIHsKKyAgICAgICAgLy8gRklY
TUU6IElmIHdlIGRvbid0IHpvb20sIHNlbmQgdGhlIHRhcCBhbG9uZyB0byB0ZXh0IHNlbGVjdGlv
biAoc2VlIDxyZGFyOi8vcHJvYmxlbS82ODEwMzQ0PikuCisgICAgICAgIFttX2NvbnRlbnRWaWV3
IF96b29tT3V0V2l0aE9yaWdpbjpvcmlnaW5dOworICAgICAgICByZXR1cm47CisgICAgfQorCisg
ICAgdGFyZ2V0UmVjdC5pbmZsYXRlWChzbWFydE1hZ25pZmljYXRpb25FbGVtZW50UGFkZGluZyAq
IHRhcmdldFJlY3Qud2lkdGgoKSk7CisgICAgdGFyZ2V0UmVjdC5pbmZsYXRlWShzbWFydE1hZ25p
ZmljYXRpb25FbGVtZW50UGFkZGluZyAqIHRhcmdldFJlY3QuaGVpZ2h0KCkpOworCisgICAgZG91
YmxlIG1heGltdW1TY2FsZSA9IHN0ZDo6bWluKHZpZXdwb3J0TWF4aW11bVNjYWxlLCBzbWFydE1h
Z25pZmljYXRpb25NYXhpbXVtU2NhbGUpOworICAgIGRvdWJsZSBtaW5pbXVtU2NhbGUgPSBzdGQ6
Om1heCh2aWV3cG9ydE1pbmltdW1TY2FsZSwgc21hcnRNYWduaWZpY2F0aW9uTWluaW11bVNjYWxl
KTsKKworICAgIC8vIEZJWE1FOiBDaGVjayBpZiB0ZXh0IHNlbGVjdGlvbiB3YW50cyB0byBjb25z
dW1lIHRoZSBkb3VibGUgdGFwIGJlZm9yZSB3ZSBhdHRlbXB0IG1hZ25pZmljYXRpb24uCisKKyAg
ICAvLyBJZiB0aGUgY29udGVudCBhbHJlYWR5IGZpdHMgaW4gdGhlIHNjcm9sbCB2aWV3IGFuZCB3
ZSdyZSBhbHJlYWR5IHpvb21lZCBpbiB0byB0aGUgdGFyZ2V0IHNjYWxlLAorICAgIC8vIGl0IGlz
IG1vc3QgbGlrZWx5IHRoYXQgdGhlIHVzZXIgaW50ZW5kZWQgdG8gc2Nyb2xsLCBzbyB1c2UgYSBz
bWFsbCBkaXN0YW5jZSB0aHJlc2hvbGQgdG8gaW5pdGlhdGUgcGFubmluZy4KKyAgICBDR0Zsb2F0
IG1pbmltdW1TY3JvbGxEaXN0YW5jZTsKKyAgICBpZiAoW21fY29udGVudFZpZXcgYm91bmRzXS5z
aXplLndpZHRoIDw9IG1fd2ViUGFnZVByb3h5LnVub2JzY3VyZWRDb250ZW50UmVjdCgpLndpZHRo
KCkpCisgICAgICAgIG1pbmltdW1TY3JvbGxEaXN0YW5jZSA9IHNtYXJ0TWFnbmlmaWNhdGlvblBh
blNjcm9sbFRocmVzaG9sZFpvb21lZE91dDsKKyAgICBlbHNlIGlmIChVSUN1cnJlbnRVc2VySW50
ZXJmYWNlSWRpb21Jc1BhZCgpKQorICAgICAgICBtaW5pbXVtU2Nyb2xsRGlzdGFuY2UgPSBzbWFy
dE1hZ25pZmljYXRpb25QYW5TY3JvbGxUaHJlc2hvbGRJUGFkOworICAgIGVsc2UKKyAgICAgICAg
bWluaW11bVNjcm9sbERpc3RhbmNlID0gc21hcnRNYWduaWZpY2F0aW9uUGFuU2Nyb2xsVGhyZXNo
b2xkSVBob25lOworCisgICAgLy8gRm9yIHJlcGxhY2VkIGVsZW1lbnRzIGxpa2UgaW1hZ2VzLCB3
ZSB3YW50IHRvIGZpdCB0aGUgd2hvbGUgZWxlbWVudAorICAgIC8vIGluIHRoZSB2aWV3LCBzbyBz
Y2FsZSBpdCBkb3duIGVub3VnaCB0byBtYWtlIGJvdGggZGltZW5zaW9ucyBmaXQgaWYgcG9zc2li
bGUuCisgICAgLy8gRm9yIG90aGVyIGVsZW1lbnRzLCB0cnkgdG8gZml0IHRoZW0gaG9yaXpvbnRh
bGx5LgorICAgIGlmIChbbV9jb250ZW50VmlldyBfem9vbVRvUmVjdDp0YXJnZXRSZWN0IHdpdGhP
cmlnaW46b3JpZ2luIGZpdEVudGlyZVJlY3Q6aXNSZXBsYWNlZEVsZW1lbnQgbWluaW11bVNjYWxl
Om1pbmltdW1TY2FsZSBtYXhpbXVtU2NhbGU6bWF4aW11bVNjYWxlIG1pbmltdW1TY3JvbGxEaXN0
YW5jZTptaW5pbXVtU2Nyb2xsRGlzdGFuY2VdKQorICAgICAgICByZXR1cm47CisKKyAgICAvLyBG
SVhNRTogSWYgd2Ugc3RpbGwgZG9uJ3Qgem9vbSwgc2VuZCB0aGUgdGFwIGFsb25nIHRvIHRleHQg
c2VsZWN0aW9uIChzZWUgPHJkYXI6Ly9wcm9ibGVtLzY4MTAzNDQ+KS4KKyAgICBbbV9jb250ZW50
VmlldyBfem9vbU91dFdpdGhPcmlnaW46b3JpZ2luXTsKK30KKyAgICAKK30gLy8gbmFtZXNwYWNl
IFdlYktpdAorCisjZW5kaWYgLy8gUExBVEZPUk0oSU9TKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvaW9zL1dLQ29udGVudFZpZXcuaAppbmRleCA1ZTk3YjYzLi4xMzhmMjJjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXcuaAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXcuaApAQCAtMzEsNiArMzEs
NyBAQAogI2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgogCiBAY2xhc3MgV0tDb250ZW50VmlldzsK
K0BjbGFzcyBXS1dlYlZpZXc7CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogY2xhc3MgRHJhd2luZ0Fy
ZWFQcm94eTsKQEAgLTQ2LDkgKzQ3LDYgQEAgc3RydWN0IFdlYlBhZ2VDb25maWd1cmF0aW9uOwog
QHByb3RvY29sIFdLQ29udGVudFZpZXdEZWxlZ2F0ZSA8TlNPYmplY3Q+CiAtICh2b2lkKWNvbnRl
bnRWaWV3RGlkQ29tbWl0TG9hZEZvck1haW5GcmFtZTooV0tDb250ZW50VmlldyAqKWNvbnRlbnRW
aWV3OwogLSAodm9pZCljb250ZW50VmlldzooV0tDb250ZW50VmlldyAqKWNvbnRlbnRWaWV3IGRp
ZENvbW1pdExheWVyVHJlZTooY29uc3QgV2ViS2l0OjpSZW1vdGVMYXllclRyZWVUcmFuc2FjdGlv
biYpbGF5ZXJUcmVlVHJhbnNhY3Rpb247Ci0KLS8vIEZJWE1FOiBUaGlzIGRvZXNuJ3QgYmVsb25n
IGluIGEgJ2RlbGVnYXRlJy4KLS0gKFJldGFpblB0cjxDR0ltYWdlUmVmPil0YWtlVmlld1NuYXBz
aG90Rm9yQ29udGVudFZpZXc6KFdLQ29udGVudFZpZXcgKiljb250ZW50VmlldzsKIEBlbmQKIAog
QGludGVyZmFjZSBXS0NvbnRlbnRWaWV3IDogVUlWaWV3IHsKQEAgLTYyLDcgKzYwLDcgQEAgc3Ry
dWN0IFdlYlBhZ2VDb25maWd1cmF0aW9uOwogQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5
KSBXZWJLaXQ6OldlYlBhZ2VQcm94eSogcGFnZTsKIEBwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFk
b25seSkgQk9PTCBpc0Fzc2lzdGluZ05vZGU7CiAKLS0gKGluc3RhbmNldHlwZSlpbml0V2l0aEZy
YW1lOihDR1JlY3QpZnJhbWUgY29udGV4dDooV2ViS2l0OjpXZWJDb250ZXh0Jiljb250ZXh0IGNv
bmZpZ3VyYXRpb246KFdlYktpdDo6V2ViUGFnZUNvbmZpZ3VyYXRpb24pd2ViUGFnZUNvbmZpZ3Vy
YXRpb247CistIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhGcmFtZTooQ0dSZWN0KWZyYW1lIGNvbnRl
eHQ6KFdlYktpdDo6V2ViQ29udGV4dCYpY29udGV4dCBjb25maWd1cmF0aW9uOihXZWJLaXQ6Oldl
YlBhZ2VDb25maWd1cmF0aW9uKXdlYlBhZ2VDb25maWd1cmF0aW9uIHdlYlZpZXc6KFdLV2ViVmll
dyAqKXdlYlZpZXc7CiAKIC0gKHZvaWQpc2V0TWluaW11bVNpemU6KENHU2l6ZSlzaXplOwogLSAo
dm9pZClzZXRNaW5pbXVtTGF5b3V0U2l6ZTooQ0dTaXplKXNpemU7CkBAIC04Niw0ICs4NCw3IEBA
IHN0cnVjdCBXZWJQYWdlQ29uZmlndXJhdGlvbjsKIAogLSAoUmV0YWluUHRyPENHSW1hZ2VSZWY+
KV90YWtlVmlld1NuYXBzaG90OwogCistIChCT09MKV96b29tVG9SZWN0OihDR1JlY3QpdGFyZ2V0
UmVjdCB3aXRoT3JpZ2luOihDR1BvaW50KW9yaWdpbiBmaXRFbnRpcmVSZWN0OihCT09MKWZpdEVu
dGlyZVJlY3QgbWluaW11bVNjYWxlOihkb3VibGUpbWluaW11bVNjYWxlIG1heGltdW1TY2FsZToo
ZG91YmxlKW1heGltdW1TY2FsZSBtaW5pbXVtU2Nyb2xsRGlzdGFuY2U6KENHRmxvYXQpbWluaW11
bVNjcm9sbERpc3RhbmNlOworLSAodm9pZClfem9vbU91dFdpdGhPcmlnaW46KENHUG9pbnQpb3Jp
Z2luOworCiBAZW5kCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1dL
Q29udGVudFZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZp
ZXcubW0KaW5kZXggNWY4OWZmYy4uNjNmMDQyOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9pb3MvV0tDb250ZW50Vmlldy5tbQpAQCAtMjksNiArMjksNyBAQAogI2ltcG9ydCAiUGFn
ZUNsaWVudEltcGxJT1MuaCIKICNpbXBvcnQgIlJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJv
eHkuaCIKICNpbXBvcnQgIlJlbW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yUHJveHkuaCIKKyNpbXBv
cnQgIlNtYXJ0TWFnbmlmaWNhdGlvbkNvbnRyb2xsZXIuaCIKICNpbXBvcnQgIldlYktpdDJJbml0
aWFsaXplLmgiCiAjaW1wb3J0ICJXS0Jyb3dzaW5nQ29udGV4dENvbnRyb2xsZXJJbnRlcm5hbC5o
IgogI2ltcG9ydCAiV0tCcm93c2luZ0NvbnRleHRHcm91cFByaXZhdGUuaCIKQEAgLTM2LDYgKzM3
LDcgQEAKICNpbXBvcnQgIldLUHJlZmVyZW5jZXNJbnRlcm5hbC5oIgogI2ltcG9ydCAiV0tQcm9j
ZXNzR3JvdXBQcml2YXRlLmgiCiAjaW1wb3J0ICJXS1Byb2Nlc3NQb29sSW50ZXJuYWwuaCIKKyNp
bXBvcnQgIldLV2ViVmlld0ludGVybmFsLmgiCiAjaW1wb3J0ICJXS1dlYlZpZXdDb25maWd1cmF0
aW9uLmgiCiAjaW1wb3J0ICJXZWJDb250ZXh0LmgiCiAjaW1wb3J0ICJXZWJGcmFtZVByb3h5Lmgi
CkBAIC02MCw5ICs2MiwxMSBAQCB1c2luZyBuYW1lc3BhY2UgV2ViS2l0OwogICAgIFJldGFpblB0
cjxXS0Jyb3dzaW5nQ29udGV4dENvbnRyb2xsZXI+IF9icm93c2luZ0NvbnRleHRDb250cm9sbGVy
OwogCiAgICAgUmV0YWluUHRyPFVJVmlldz4gX3Jvb3RDb250ZW50VmlldzsKKworICAgIFdLV2Vi
VmlldyAqX3dlYlZpZXc7CiB9CiAKLS0gKGluc3RhbmNldHlwZSlpbml0V2l0aEZyYW1lOihDR1Jl
Y3QpZnJhbWUgY29udGV4dDooV2ViS2l0OjpXZWJDb250ZXh0Jiljb250ZXh0IGNvbmZpZ3VyYXRp
b246KFdlYktpdDo6V2ViUGFnZUNvbmZpZ3VyYXRpb24pd2ViUGFnZUNvbmZpZ3VyYXRpb24KKy0g
KGluc3RhbmNldHlwZSlpbml0V2l0aEZyYW1lOihDR1JlY3QpZnJhbWUgY29udGV4dDooV2ViS2l0
OjpXZWJDb250ZXh0Jiljb250ZXh0IGNvbmZpZ3VyYXRpb246KFdlYktpdDo6V2ViUGFnZUNvbmZp
Z3VyYXRpb24pd2ViUGFnZUNvbmZpZ3VyYXRpb24gd2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmll
dwogewogICAgIGlmICghKHNlbGYgPSBbc3VwZXIgaW5pdFdpdGhGcmFtZTpmcmFtZV0pKQogICAg
ICAgICByZXR1cm4gbmlsOwpAQCAtNzcsNiArODEsOCBAQCB1c2luZyBuYW1lc3BhY2UgV2ViS2l0
OwogICAgIF9wYWdlLT5zZXRVc2VGaXhlZExheW91dCh0cnVlKTsKICAgICBfcGFnZS0+c2V0RGVs
ZWdhdGVzU2Nyb2xsaW5nKHRydWUpOwogCisgICAgX3dlYlZpZXcgPSB3ZWJWaWV3OworCiAgICAg
V2ViQ29udGV4dDo6c3RhdGlzdGljcygpLndrVmlld0NvdW50Kys7CiAKICAgICBfcm9vdENvbnRl
bnRWaWV3ID0gYWRvcHROUyhbW1VJVmlldyBhbGxvY10gaW5pdF0pOwpAQCAtMjcyLDcgKzI3OCwx
NyBAQCB1c2luZyBuYW1lc3BhY2UgV2ViS2l0OwogCiAtIChSZXRhaW5QdHI8Q0dJbWFnZVJlZj4p
X3Rha2VWaWV3U25hcHNob3QKIHsKLSAgICByZXR1cm4gW19kZWxlZ2F0ZSB0YWtlVmlld1NuYXBz
aG90Rm9yQ29udGVudFZpZXc6c2VsZl07CisgICAgcmV0dXJuIFtfd2ViVmlldyBfdGFrZVZpZXdT
bmFwc2hvdF07Cit9CisKKy0gKEJPT0wpX3pvb21Ub1JlY3Q6KENHUmVjdCl0YXJnZXRSZWN0IHdp
dGhPcmlnaW46KENHUG9pbnQpb3JpZ2luIGZpdEVudGlyZVJlY3Q6KEJPT0wpZml0RW50aXJlUmVj
dCBtaW5pbXVtU2NhbGU6KGRvdWJsZSltaW5pbXVtU2NhbGUgbWF4aW11bVNjYWxlOihkb3VibGUp
bWF4aW11bVNjYWxlIG1pbmltdW1TY3JvbGxEaXN0YW5jZTooQ0dGbG9hdCltaW5pbXVtU2Nyb2xs
RGlzdGFuY2UKK3sKKyAgICByZXR1cm4gW193ZWJWaWV3IF96b29tVG9SZWN0OnRhcmdldFJlY3Qg
d2l0aE9yaWdpbjpvcmlnaW4gZml0RW50aXJlUmVjdDpmaXRFbnRpcmVSZWN0IG1pbmltdW1TY2Fs
ZTptaW5pbXVtU2NhbGUgbWF4aW11bVNjYWxlOm1heGltdW1TY2FsZSBtaW5pbXVtU2Nyb2xsRGlz
dGFuY2U6bWluaW11bVNjcm9sbERpc3RhbmNlXTsKK30KKworLSAodm9pZClfem9vbU91dFdpdGhP
cmlnaW46KENHUG9pbnQpb3JpZ2luCit7CisgICAgcmV0dXJuIFtfd2ViVmlldyBfem9vbU91dFdp
dGhPcmlnaW46b3JpZ2luXTsKIH0KIAogQGVuZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24uaCBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLmgKaW5kZXggNGM0NjU0NC4u
ZDA4Y2FkOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9XS0NvbnRl
bnRWaWV3SW50ZXJhY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1dL
Q29udGVudFZpZXdJbnRlcmFjdGlvbi5oCkBAIC00Niw2ICs0Niw3IEBAIGNsYXNzIEludFNpemU7
CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogY2xhc3MgTmF0aXZlV2ViVG91Y2hFdmVudDsKK2NsYXNz
IFNtYXJ0TWFnbmlmaWNhdGlvbkNvbnRyb2xsZXI7CiBjbGFzcyBXZWJQYWdlUHJveHk7CiBzdHJ1
Y3QgQXNzaXN0ZWROb2RlSW5mb3JtYXRpb247CiBzdHJ1Y3QgSW50ZXJhY3Rpb25JbmZvcm1hdGlv
bkF0UG9zaXRpb247CkBAIC05Myw2ICs5NCw4IEBAIHN0cnVjdCBXS0F1dG9Db3JyZWN0aW9uRGF0
YSB7CiAgICAgUmV0YWluUHRyPE5TU3RyaW5nPiBfbWFya2VkVGV4dDsKICAgICBSZXRhaW5QdHI8
V0tBY3Rpb25TaGVldEFzc2lzdGFudD4gX2FjdGlvblNoZWV0QXNzaXN0YW50OwogCisgICAgc3Rk
Ojp1bmlxdWVfcHRyPFdlYktpdDo6U21hcnRNYWduaWZpY2F0aW9uQ29udHJvbGxlcj4gX3NtYXJ0
TWFnbmlmaWNhdGlvbkNvbnRyb2xsZXI7CisKICAgICBpZCA8VUlUZXh0SW5wdXREZWxlZ2F0ZT4g
X2lucHV0RGVsZWdhdGU7CiAKICAgICB1aW50NjRfdCBfbGF0ZXN0VGFwSGlnaGxpZ2h0SUQ7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRl
cmFjdGlvbi5tbSBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0lu
dGVyYWN0aW9uLm1tCmluZGV4IGNmYTMzMWIuLjBkMzkxNzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tCkBA
IC0yOCw2ICsyOCw3IEBACiAKICNpbXBvcnQgIk5hdGl2ZVdlYktleWJvYXJkRXZlbnQuaCIKICNp
bXBvcnQgIk5hdGl2ZVdlYlRvdWNoRXZlbnQuaCIKKyNpbXBvcnQgIlNtYXJ0TWFnbmlmaWNhdGlv
bkNvbnRyb2xsZXIuaCIKICNpbXBvcnQgIldlYkV2ZW50LmgiCiAjaW1wb3J0ICJXZWJJT1NFdmVu
dEZhY3RvcnkuaCIKICNpbXBvcnQgIldlYlBhZ2VNZXNzYWdlcy5oIgpAQCAtMTQ4LDYgKzE0OSwx
MiBAQCBzdGF0aWMgY29uc3QgZmxvYXQgdGFwQW5kSG9sZERlbGF5ICA9IDAuNzU7CiAgICAgW3Nl
bGYgYWRkR2VzdHVyZVJlY29nbml6ZXI6X2RvdWJsZVRhcEdlc3R1cmVSZWNvZ25pemVyLmdldCgp
XTsKICAgICBbX3NpbmdsZVRhcEdlc3R1cmVSZWNvZ25pemVyIHJlcXVpcmVPdGhlckdlc3R1cmVU
b0ZhaWw6X2RvdWJsZVRhcEdlc3R1cmVSZWNvZ25pemVyLmdldCgpXTsKIAorICAgIF90d29GaW5n
ZXJEb3VibGVUYXBHZXN0dXJlUmVjb2duaXplciA9IGFkb3B0TlMoW1tVSVRhcEdlc3R1cmVSZWNv
Z25pemVyIGFsbG9jXSBpbml0V2l0aFRhcmdldDpzZWxmIGFjdGlvbjpAc2VsZWN0b3IoX3R3b0Zp
bmdlckRvdWJsZVRhcFJlY29nbml6ZWQ6KV0pOworICAgIFtfdHdvRmluZ2VyRG91YmxlVGFwR2Vz
dHVyZVJlY29nbml6ZXIgc2V0TnVtYmVyT2ZUYXBzUmVxdWlyZWQ6Ml07CisgICAgW190d29GaW5n
ZXJEb3VibGVUYXBHZXN0dXJlUmVjb2duaXplciBzZXROdW1iZXJPZlRvdWNoZXNSZXF1aXJlZDoy
XTsKKyAgICBbX3R3b0ZpbmdlckRvdWJsZVRhcEdlc3R1cmVSZWNvZ25pemVyIHNldERlbGVnYXRl
OnNlbGZdOworICAgIFtzZWxmIGFkZEdlc3R1cmVSZWNvZ25pemVyOl90d29GaW5nZXJEb3VibGVU
YXBHZXN0dXJlUmVjb2duaXplci5nZXQoKV07CisKICAgICBfaGlnaGxpZ2h0TG9uZ1ByZXNzR2Vz
dHVyZVJlY29nbml6ZXIgPSBhZG9wdE5TKFtbX1VJV2ViSGlnaGxpZ2h0TG9uZ1ByZXNzR2VzdHVy
ZVJlY29nbml6ZXIgYWxsb2NdIGluaXRXaXRoVGFyZ2V0OnNlbGYgYWN0aW9uOkBzZWxlY3Rvcihf
aGlnaGxpZ2h0TG9uZ1ByZXNzUmVjb2duaXplZDopXSk7CiAgICAgW19oaWdobGlnaHRMb25nUHJl
c3NHZXN0dXJlUmVjb2duaXplciBzZXREZWxheTpoaWdobGlnaHREZWxheV07CiAgICAgW19oaWdo
bGlnaHRMb25nUHJlc3NHZXN0dXJlUmVjb2duaXplciBzZXREZWxlZ2F0ZTpzZWxmXTsKQEAgLTE3
MSw2ICsxNzgsNyBAQCBzdGF0aWMgY29uc3QgZmxvYXQgdGFwQW5kSG9sZERlbGF5ICA9IDAuNzU7
CiAgICAgW3NlbGYgdXNlU2VsZWN0aW9uQXNzaXN0YW50V2l0aE1vZGU6VUlXZWJTZWxlY3Rpb25N
b2RlV2ViXTsKICAgICAKICAgICBfYWN0aW9uU2hlZXRBc3Npc3RhbnQgPSBhZG9wdE5TKFtbV0tB
Y3Rpb25TaGVldEFzc2lzdGFudCBhbGxvY10gaW5pdFdpdGhWaWV3OnNlbGZdKTsKKyAgICBfc21h
cnRNYWduaWZpY2F0aW9uQ29udHJvbGxlciA9IHN0ZDo6bWFrZV91bmlxdWU8U21hcnRNYWduaWZp
Y2F0aW9uQ29udHJvbGxlcj4oc2VsZik7CiB9CiAKIC0gKHZvaWQpY2xlYW51cEludGVyYWN0aW9u
CkBAIC02MDgsMTIgKzYxNiwxMiBAQCBzdGF0aWMgaW5saW5lIGJvb2wgaXNTYW1lUGFpcihVSUdl
c3R1cmVSZWNvZ25pemVyICphLCBVSUdlc3R1cmVSZWNvZ25pemVyICpiLCBVSQogCiAtICh2b2lk
KV9kb3VibGVUYXBSZWNvZ25pemVkOihVSVRhcEdlc3R1cmVSZWNvZ25pemVyICopZ2VzdHVyZVJl
Y29nbml6ZXIKIHsKLSAgICAvLyBGSVhNRTogQWRkIGltcGxlbWVudGF0aW9uLgorICAgIF9zbWFy
dE1hZ25pZmljYXRpb25Db250cm9sbGVyLT5oYW5kbGVTbWFydE1hZ25pZmljYXRpb25HZXN0dXJl
KGdlc3R1cmVSZWNvZ25pemVyLmxvY2F0aW9uKTsKIH0KIAogLSAodm9pZClfdHdvRmluZ2VyRG91
YmxlVGFwUmVjb2duaXplZDooVUlUYXBHZXN0dXJlUmVjb2duaXplciAqKWdlc3R1cmVSZWNvZ25p
emVyCiB7Ci0gICAgLy8gRklYTUU6IEFkZCBpbXBsZW1lbnRhdGlvbi4KKyAgICBfc21hcnRNYWdu
aWZpY2F0aW9uQ29udHJvbGxlci0+aGFuZGxlUmVzZXRNYWduaWZpY2F0aW9uR2VzdHVyZShnZXN0
dXJlUmVjb2duaXplci5sb2NhdGlvbik7CiB9CiAKIC0gKHZvaWQpX3R3b0ZpbmdlclBhblJlY29n
bml6ZWQ6KFVJUGFuR2VzdHVyZVJlY29nbml6ZXIgKilnZXN0dXJlUmVjb2duaXplcgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9WaWV3R2VzdHVyZUNvbnRyb2xsZXIu
aCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvVmlld0dlc3R1cmVDb250cm9sbGVyLmgK
aW5kZXggYzY0OWM2MS4uYTdhMGU4NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL21hYy9WaWV3R2VzdHVyZUNvbnRyb2xsZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvbWFjL1ZpZXdHZXN0dXJlQ29udHJvbGxlci5oCkBAIC0xMDQsNyArMTA0LDcgQEAgcHJp
dmF0ZToKICNpZiAhUExBVEZPUk0oSU9TKQogICAgIC8vIE1lc3NhZ2UgaGFuZGxlcnMuCiAgICAg
dm9pZCBkaWRDb2xsZWN0R2VvbWV0cnlGb3JNYWduaWZpY2F0aW9uR2VzdHVyZShXZWJDb3JlOjpG
bG9hdFJlY3QgdmlzaWJsZUNvbnRlbnRCb3VuZHMsIGJvb2wgZnJhbWVIYW5kbGVzTWFnbmlmaWNh
dGlvbkdlc3R1cmUpOwotICAgIHZvaWQgZGlkQ29sbGVjdEdlb21ldHJ5Rm9yU21hcnRNYWduaWZp
Y2F0aW9uR2VzdHVyZShXZWJDb3JlOjpGbG9hdFBvaW50IG9yaWdpbiwgV2ViQ29yZTo6RmxvYXRS
ZWN0IHJlbmRlclJlY3QsIFdlYkNvcmU6OkZsb2F0UmVjdCB2aXNpYmxlQ29udGVudEJvdW5kcywg
Ym9vbCBpc1JlcGxhY2VkRWxlbWVudCwgYm9vbCBmcmFtZUhhbmRsZXNNYWduaWZpY2F0aW9uR2Vz
dHVyZSk7CisgICAgdm9pZCBkaWRDb2xsZWN0R2VvbWV0cnlGb3JTbWFydE1hZ25pZmljYXRpb25H
ZXN0dXJlKFdlYkNvcmU6OkZsb2F0UG9pbnQgb3JpZ2luLCBXZWJDb3JlOjpGbG9hdFJlY3QgcmVu
ZGVyUmVjdCwgV2ViQ29yZTo6RmxvYXRSZWN0IHZpc2libGVDb250ZW50Qm91bmRzLCBib29sIGlz
UmVwbGFjZWRFbGVtZW50LCBib29sIGZyYW1lSGFuZGxlc01hZ25pZmljYXRpb25HZXN0dXJlLCBk
b3VibGUgdmlld3BvcnRNaW5pbXVtU2NhbGUsIGRvdWJsZSB2aWV3cG9ydE1heGltdW1TY2FsZSk7
CiAgICAgdm9pZCBkaWRIaXRSZW5kZXJUcmVlU2l6ZVRocmVzaG9sZCgpOwogCiAgICAgdm9pZCBl
bmRNYWduaWZpY2F0aW9uR2VzdHVyZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL21hYy9WaWV3R2VzdHVyZUNvbnRyb2xsZXIubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvbWFjL1ZpZXdHZXN0dXJlQ29udHJvbGxlci5tZXNzYWdlcy5pbgppbmRl
eCBhMGI1OGMwLi42NjA0N2Q5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
bWFjL1ZpZXdHZXN0dXJlQ29udHJvbGxlci5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvbWFjL1ZpZXdHZXN0dXJlQ29udHJvbGxlci5tZXNzYWdlcy5pbgpAQCAtMjMs
NyArMjMsNyBAQAogbWVzc2FnZXMgLT4gVmlld0dlc3R1cmVDb250cm9sbGVyIHsKICNpZiAhUExB
VEZPUk0oSU9TKQogICAgIERpZENvbGxlY3RHZW9tZXRyeUZvck1hZ25pZmljYXRpb25HZXN0dXJl
KFdlYkNvcmU6OkZsb2F0UmVjdCB2aXNpYmxlQ29udGVudEJvdW5kcywgYm9vbCBmcmFtZUhhbmRs
ZXNNYWduaWZpY2F0aW9uR2VzdHVyZSkKLSAgICBEaWRDb2xsZWN0R2VvbWV0cnlGb3JTbWFydE1h
Z25pZmljYXRpb25HZXN0dXJlKFdlYkNvcmU6OkZsb2F0UG9pbnQgb3JpZ2luLCBXZWJDb3JlOjpG
bG9hdFJlY3QgcmVuZGVyUmVjdCwgV2ViQ29yZTo6RmxvYXRSZWN0IHZpc2libGVDb250ZW50Qm91
bmRzLCBib29sIGlzUmVwbGFjZWRFbGVtZW50LCBib29sIGZyYW1lSGFuZGxlc01hZ25pZmljYXRp
b25HZXN0dXJlKQorICAgIERpZENvbGxlY3RHZW9tZXRyeUZvclNtYXJ0TWFnbmlmaWNhdGlvbkdl
c3R1cmUoV2ViQ29yZTo6RmxvYXRQb2ludCBvcmlnaW4sIFdlYkNvcmU6OkZsb2F0UmVjdCByZW5k
ZXJSZWN0LCBXZWJDb3JlOjpGbG9hdFJlY3QgdmlzaWJsZUNvbnRlbnRCb3VuZHMsIGJvb2wgaXNS
ZXBsYWNlZEVsZW1lbnQsIGJvb2wgZnJhbWVIYW5kbGVzTWFnbmlmaWNhdGlvbkdlc3R1cmUsIGRv
dWJsZSB2aWV3cG9ydE1pbmltdW1TY2FsZSwgZG91YmxlIHZpZXdwb3J0TWF4aW11bVNjYWxlKQog
ICAgIERpZEhpdFJlbmRlclRyZWVTaXplVGhyZXNob2xkKCkKICNlbmRpZgogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9WaWV3R2VzdHVyZUNvbnRyb2xsZXJNYWMu
bW0gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1ZpZXdHZXN0dXJlQ29udHJvbGxlck1h
Yy5tbQppbmRleCBhMmU0MjFlLi41NDgzMzAxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvbWFjL1ZpZXdHZXN0dXJlQ29udHJvbGxlck1hYy5tbQorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvbWFjL1ZpZXdHZXN0dXJlQ29udHJvbGxlck1hYy5tbQpAQCAtMjA1LDcg
KzIwNSw3IEBAIHN0YXRpYyBmbG9hdCBtYXhpbXVtUmVjdGFuZ2xlQ29tcG9uZW50RGVsdGEoRmxv
YXRSZWN0IGEsIEZsb2F0UmVjdCBiKQogICAgIHJldHVybiBzdGQ6Om1heChmYWJzKGEueCgpIC0g
Yi54KCkpLCBzdGQ6Om1heChmYWJzKGEueSgpIC0gYi55KCkpLCBzdGQ6Om1heChmYWJzKGEud2lk
dGgoKSAtIGIud2lkdGgoKSksIGZhYnMoYS5oZWlnaHQoKSAtIGIuaGVpZ2h0KCkpKSkpOwogfQog
Ci12b2lkIFZpZXdHZXN0dXJlQ29udHJvbGxlcjo6ZGlkQ29sbGVjdEdlb21ldHJ5Rm9yU21hcnRN
YWduaWZpY2F0aW9uR2VzdHVyZShGbG9hdFBvaW50IG9yaWdpbiwgRmxvYXRSZWN0IHJlbmRlclJl
Y3QsIEZsb2F0UmVjdCB2aXNpYmxlQ29udGVudFJlY3QsIGJvb2wgaXNSZXBsYWNlZEVsZW1lbnQs
IGJvb2wgZnJhbWVIYW5kbGVzTWFnbmlmaWNhdGlvbkdlc3R1cmUpCit2b2lkIFZpZXdHZXN0dXJl
Q29udHJvbGxlcjo6ZGlkQ29sbGVjdEdlb21ldHJ5Rm9yU21hcnRNYWduaWZpY2F0aW9uR2VzdHVy
ZShGbG9hdFBvaW50IG9yaWdpbiwgRmxvYXRSZWN0IHJlbmRlclJlY3QsIEZsb2F0UmVjdCB2aXNp
YmxlQ29udGVudFJlY3QsIGJvb2wgaXNSZXBsYWNlZEVsZW1lbnQsIGJvb2wgZnJhbWVIYW5kbGVz
TWFnbmlmaWNhdGlvbkdlc3R1cmUsIGRvdWJsZSB2aWV3cG9ydE1pbmltdW1TY2FsZSwgZG91Ymxl
IHZpZXdwb3J0TWF4aW11bVNjYWxlKQogewogICAgIGlmIChmcmFtZUhhbmRsZXNNYWduaWZpY2F0
aW9uR2VzdHVyZSkKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
V2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYktpdDIvV2ViS2l0
Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGQzZDg4MTMuLjQwMDY2MTEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAg
LTUyMCw4ICs1MjAsMTIgQEAKIAkJMkRBOTQ0QkExODg0RUEzQzAwRUQ4NkRCIC8qIFdlYlBhZ2VJ
T1MubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyREE5
NDRCNjE4ODRFQTM1MDBFRDg2REIgLyogV2ViUGFnZUlPUy5tbSAqLzsgfTsKIAkJMkRBOTQ0QkQx
ODg1MTFFNzAwRUQ4NkRCIC8qIE5ldHdvcmtQcm9jZXNzSU9TLm1tIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkRBOTQ0QkMxODg1MTFFNzAwRUQ4NkRCIC8q
IE5ldHdvcmtQcm9jZXNzSU9TLm1tICovOyB9OwogCQkyREFDRTY0RTE4QURCRkYwMDBFNENBNzYg
LyogV0tUaHVtYm5haWxWaWV3SW50ZXJuYWwuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDJEQUNFNjREMThBREJGRjAwMEU0Q0E3NiAvKiBXS1RodW1ibmFp
bFZpZXdJbnRlcm5hbC5oICovOyB9OworCQkyREFGMDZENjE4QkQxQTQ3MDA4MUNFQjEgLyogU21h
cnRNYWduaWZpY2F0aW9uQ29udHJvbGxlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMkRBRjA2RDQxOEJEMUE0NzAwODFDRUIxIC8qIFNtYXJ0TWFnbmlm
aWNhdGlvbkNvbnRyb2xsZXIuaCAqLzsgfTsKKwkJMkRBRjA2RDcxOEJEMUE0NzAwODFDRUIxIC8q
IFNtYXJ0TWFnbmlmaWNhdGlvbkNvbnRyb2xsZXIubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyREFGMDZENTE4QkQxQTQ3MDA4MUNFQjEgLyogU21hcnRN
YWduaWZpY2F0aW9uQ29udHJvbGxlci5tbSAqLzsgfTsKIAkJMkRERTBBRkExODI5OENDOTAwRjk3
RUFBIC8qIFJlbW90ZUxheWVyVHJlZVByb3BlcnR5QXBwbGllci5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkRERTBBRjgxODI5OENDOTAwRjk3RUFBIC8q
IFJlbW90ZUxheWVyVHJlZVByb3BlcnR5QXBwbGllci5oICovOyB9OwogCQkyRERFMEFGQjE4Mjk4
Q0M5MDBGOTdFQUEgLyogUmVtb3RlTGF5ZXJUcmVlUHJvcGVydHlBcHBsaWVyLm1tIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkRERTBBRjkxODI5OENDOTAw
Rjk3RUFBIC8qIFJlbW90ZUxheWVyVHJlZVByb3BlcnR5QXBwbGllci5tbSAqLzsgfTsKKwkJMkRF
Njk0M0QxOEJEMkE2ODAwNUMxNUU1IC8qIFNtYXJ0TWFnbmlmaWNhdGlvbkNvbnRyb2xsZXJNZXNz
YWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMkRFNjk0M0IxOEJEMkE2ODAwNUMxNUU1IC8qIFNtYXJ0TWFnbmlmaWNhdGlvbkNvbnRy
b2xsZXJNZXNzYWdlUmVjZWl2ZXIuY3BwICovOyB9OworCQkyREU2OTQzRTE4QkQyQTY4MDA1QzE1
RTUgLyogU21hcnRNYWduaWZpY2F0aW9uQ29udHJvbGxlck1lc3NhZ2VzLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyREU2OTQzQzE4QkQyQTY4MDA1QzE1
RTUgLyogU21hcnRNYWduaWZpY2F0aW9uQ29udHJvbGxlck1lc3NhZ2VzLmggKi87IH07CiAJCTJE
Rjk1OTNCMThBNDI0MTIwMDk3ODVBMSAvKiBWaWV3R2VzdHVyZUNvbnRyb2xsZXJJT1MubW0gaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyREY5NTkzNDE4QTQy
NDEyMDA5Nzg1QTEgLyogVmlld0dlc3R1cmVDb250cm9sbGVySU9TLm1tICovOyB9OwogCQkzMTA5
OTk3MzE0NkM3NUEyMDAyOURFQjkgLyogV2ViTm90aWZpY2F0aW9uQ2xpZW50LmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDMxMDk5OTcxMTQ2Qzc1OUIw
MDI5REVCOSAvKiBXZWJOb3RpZmljYXRpb25DbGllbnQuY3BwICovOyB9OwogCQkzMTA5OTlDNzE0
NkM5RTNEMDAyOURFQjkgLyogV2ViTm90aWZpY2F0aW9uQ2xpZW50LmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzMTA5OTk2ODE0NkM3MUY1MDAyOURFQjkg
LyogV2ViTm90aWZpY2F0aW9uQ2xpZW50LmggKi87IH07CkBAIC0yMjU5LDggKzIyNjMsMTMgQEAK
IAkJMkRBOTQ0QjYxODg0RUEzNTAwRUQ4NkRCIC8qIFdlYlBhZ2VJT1MubW0gKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5vYmpjcHA7IG5hbWUgPSBXZWJQYWdlSU9TLm1tOyBwYXRoID0gaW9zL1dl
YlBhZ2VJT1MubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTJEQTk0NEJDMTg4NTEx
RTcwMEVEODZEQiAvKiBOZXR3b3JrUHJvY2Vzc0lPUy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLm9iamNwcDsgbmFtZSA9IE5ldHdvcmtQcm9jZXNzSU9TLm1tOyBwYXRoID0gTmV0d29ya1By
b2Nlc3MvaW9zL05ldHdvcmtQcm9jZXNzSU9TLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQkyREFDRTY0RDE4QURCRkYwMDBFNENBNzYgLyogV0tUaHVtYm5haWxWaWV3SW50ZXJuYWwu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0tUaHVtYm5haWxWaWV3SW50ZXJu
YWwuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMkRBRjA2RDQxOEJEMUE0NzAwODFD
RUIxIC8qIFNtYXJ0TWFnbmlmaWNhdGlvbkNvbnRyb2xsZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBuYW1lID0gU21hcnRNYWduaWZpY2F0aW9uQ29udHJvbGxlci5oOyBwYXRoID0gaW9z
L1NtYXJ0TWFnbmlmaWNhdGlvbkNvbnRyb2xsZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJMkRBRjA2RDUxOEJEMUE0NzAwODFDRUIxIC8qIFNtYXJ0TWFnbmlmaWNhdGlvbkNvbnRy
b2xsZXIubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IG5hbWUgPSBTbWFydE1h
Z25pZmljYXRpb25Db250cm9sbGVyLm1tOyBwYXRoID0gaW9zL1NtYXJ0TWFnbmlmaWNhdGlvbkNv
bnRyb2xsZXIubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTJEQUYwNkQ4MThCRDIz
QkEwMDgxQ0VCMSAvKiBTbWFydE1hZ25pZmljYXRpb25Db250cm9sbGVyLm1lc3NhZ2VzLmluICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgbmFt
ZSA9IFNtYXJ0TWFnbmlmaWNhdGlvbkNvbnRyb2xsZXIubWVzc2FnZXMuaW47IHBhdGggPSBpb3Mv
U21hcnRNYWduaWZpY2F0aW9uQ29udHJvbGxlci5tZXNzYWdlcy5pbjsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJMkRERTBBRjgxODI5OENDOTAwRjk3RUFBIC8qIFJlbW90ZUxheWVyVHJl
ZVByb3BlcnR5QXBwbGllci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZW1v
dGVMYXllclRyZWVQcm9wZXJ0eUFwcGxpZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJMkRERTBBRjkxODI5OENDOTAwRjk3RUFBIC8qIFJlbW90ZUxheWVyVHJlZVByb3BlcnR5QXBw
bGllci5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFJlbW90ZUxh
eWVyVHJlZVByb3BlcnR5QXBwbGllci5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
MkRFNjk0M0IxOEJEMkE2ODAwNUMxNUU1IC8qIFNtYXJ0TWFnbmlmaWNhdGlvbkNvbnRyb2xsZXJN
ZXNzYWdlUmVjZWl2ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0g
U21hcnRNYWduaWZpY2F0aW9uQ29udHJvbGxlck1lc3NhZ2VSZWNlaXZlci5jcHA7IHBhdGggPSBT
bWFydE1hZ25pZmljYXRpb25Db250cm9sbGVyTWVzc2FnZVJlY2VpdmVyLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMkRFNjk0M0MxOEJEMkE2ODAwNUMxNUU1IC8qIFNtYXJ0TWFn
bmlmaWNhdGlvbkNvbnRyb2xsZXJNZXNzYWdlcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IG5hbWUgPSBTbWFydE1hZ25pZmljYXRpb25Db250cm9sbGVyTWVzc2FnZXMuaDsgcGF0aCA9IFNt
YXJ0TWFnbmlmaWNhdGlvbkNvbnRyb2xsZXJNZXNzYWdlcy5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQkyREY5NTkzNDE4QTQyNDEyMDA5Nzg1QTEgLyogVmlld0dlc3R1cmVDb250cm9s
bGVySU9TLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBuYW1lID0gVmlld0dl
c3R1cmVDb250cm9sbGVySU9TLm1tOyBwYXRoID0gaW9zL1ZpZXdHZXN0dXJlQ29udHJvbGxlcklP
Uy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMzEwOTk5NjgxNDZDNzFGNTAwMjlE
RUI5IC8qIFdlYk5vdGlmaWNhdGlvbkNsaWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJOb3RpZmlj
YXRpb25DbGllbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMzEwOTk5NzExNDZD
NzU5QjAwMjlERUI5IC8qIFdlYk5vdGlmaWNhdGlvbkNsaWVudC5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJOb3RpZmljYXRpb25DbGllbnQuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwpAQCAtNDMwMCw2ICs0MzA5LDkgQEAKIAkJCQkwRkNCNEUzNzE4
QkJFMDQ0MDAwRkNGQzkgLyogUGFnZUNsaWVudEltcGxJT1MubW0gKi8sCiAJCQkJMkRBOTQ0QTkx
ODg0RTlCQTAwRUQ4NkRCIC8qIFRleHRDaGVja2VySU9TLm1tICovLAogCQkJCTJERjk1OTM0MThB
NDI0MTIwMDk3ODVBMSAvKiBWaWV3R2VzdHVyZUNvbnRyb2xsZXJJT1MubW0gKi8sCisJCQkJMkRB
RjA2RDQxOEJEMUE0NzAwODFDRUIxIC8qIFNtYXJ0TWFnbmlmaWNhdGlvbkNvbnRyb2xsZXIuaCAq
LywKKwkJCQkyREFGMDZENTE4QkQxQTQ3MDA4MUNFQjEgLyogU21hcnRNYWduaWZpY2F0aW9uQ29u
dHJvbGxlci5tbSAqLywKKwkJCQkyREFGMDZEODE4QkQyM0JBMDA4MUNFQjEgLyogU21hcnRNYWdu
aWZpY2F0aW9uQ29udHJvbGxlci5tZXNzYWdlcy5pbiAqLywKIAkJCQkyREE5NDRBQTE4ODRFOUJB
MDBFRDg2REIgLyogV2ViSW5zcGVjdG9yUHJveHlJT1MubW0gKi8sCiAJCQkJMkRBOTQ0QUIxODg0
RTlCQTAwRUQ4NkRCIC8qIFdlYlBhZ2VQcm94eUlPUy5tbSAqLywKIAkJCQkyREE5NDRBQzE4ODRF
OUJBMDBFRDg2REIgLyogV2ViUHJvY2Vzc1Byb3h5SU9TLm1tICovLApAQCAtNjA4OSw2ICs2MTAx
LDggQEAKIAkJCWNoaWxkcmVuID0gKAogCQkJCTJEODE5QjlGMTg2MjgwMEUwMDFGMDNEMSAvKiBW
aWV3R2VzdHVyZUdlb21ldHJ5Q29sbGVjdG9yTWVzc2FnZVJlY2VpdmVyLmNwcCAqLywKIAkJCQky
RDgxOUJBMDE4NjI4MDBFMDAxRjAzRDEgLyogVmlld0dlc3R1cmVHZW9tZXRyeUNvbGxlY3Rvck1l
c3NhZ2VzLmggKi8sCisJCQkJMkRFNjk0M0IxOEJEMkE2ODAwNUMxNUU1IC8qIFNtYXJ0TWFnbmlm
aWNhdGlvbkNvbnRyb2xsZXJNZXNzYWdlUmVjZWl2ZXIuY3BwICovLAorCQkJCTJERTY5NDNDMThC
RDJBNjgwMDVDMTVFNSAvKiBTbWFydE1hZ25pZmljYXRpb25Db250cm9sbGVyTWVzc2FnZXMuaCAq
LywKIAkJCQk1MTJGNThBMDEyQTg4M0FEMDA2Mjk1MzAgLyogQXV0aGVudGljYXRpb25NYW5hZ2Vy
TWVzc2FnZVJlY2VpdmVyLmNwcCAqLywKIAkJCQk1MTJGNThBMTEyQTg4M0FEMDA2Mjk1MzAgLyog
QXV0aGVudGljYXRpb25NYW5hZ2VyTWVzc2FnZXMuaCAqLywKIAkJCQlFMTdBRTJDMjE2QjlDNjNB
MDAxQzQyRjEgLyogY29tLmFwcGxlLldlYktpdC5OZXR3b3JrUHJvY2Vzcy5zYiAqLywKQEAgLTY0
MDEsNiArNjQxNSw3IEBACiAJCQkJMUY2MDRCQTgxODg5RkE3NDAwRUUwMzk1IC8qIFdLUmVuZGVy
aW5nUHJvZ3Jlc3NFdmVudHMuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBNDIyRjhGMThCMjlDNjQw
MEQ4Q0Q5NiAvKiBIaXN0b3J5Q2xpZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlCQ0JBQUNFQjE0
NTIyNUUzMDA1M0Y4MkYgLyogV0tQcm9jZXNzR3JvdXAuaCBpbiBIZWFkZXJzICovLAorCQkJCTJE
QUYwNkQ2MThCRDFBNDcwMDgxQ0VCMSAvKiBTbWFydE1hZ25pZmljYXRpb25Db250cm9sbGVyLmgg
aW4gSGVhZGVycyAqLywKIAkJCQkzNzdFQUQ0ODE3RTJDNzdCMDAyRDE5M0QgLyogV0tVc2VyQ29u
dGVudEluamVjdGVkRnJhbWVzLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzg2OTlCNTExNkFBREFB
MDAyQTkyNUIgLyogV0tWaWV3LmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzhGMkYyQjE2MjczQTJD
MDA1RkFDQjUgLyogV0tXZWJQcm9jZXNzUGx1Z0luQnJvd3NlckNvbnRleHRDb250cm9sbGVyLmgg
aW4gSGVhZGVycyAqLywKQEAgLTY2ODIsNiArNjY5Nyw3IEBACiAJCQkJM0Y4N0I5QzAxNTg5NDBE
ODAwOTBGRjYyIC8qIFdlYkNvbG9yUGlja2VyLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzRBNjI5
MDE0NzMxMkJFMDA2QzY4MUEgLyogV2ViQ29ubmVjdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
MEZDQjRFNTQxOEJCRTA0NDAwMEZDRkM5IC8qIFdLU2Nyb2xsVmlldy5oIGluIEhlYWRlcnMgKi8s
CisJCQkJMkRFNjk0M0UxOEJEMkE2ODAwNUMxNUU1IC8qIFNtYXJ0TWFnbmlmaWNhdGlvbkNvbnRy
b2xsZXJNZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkM0QTYyOTIxNDczMTJCRTAwNkM2
ODFBIC8qIFdlYkNvbm5lY3Rpb25DbGllbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBMUZFQzFE
MTYyN0I0NTcwMDcwMEY2RCAvKiBXZWJDb25uZWN0aW9uTWVzc2FnZXMuaCBpbiBIZWFkZXJzICov
LAogCQkJCUJDNEE2MkE4MTQ3NDRFQzcwMDZDNjgxQSAvKiBXZWJDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzLmggaW4gSGVhZGVycyAqLywKQEAgLTc4MjgsNiArNzg0NCw3IEBACiAJCQkJOTNGQzY3QkQx
MkQzQ0NGMjAwQTYwNjEwIC8qIERlY29kZXJBZGFwdGVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CUJDRTgxRDk4MTMxQUUwMjEwMDI0MTkxMCAvKiBEaWN0aW9uYXJ5UG9wdXBJbmZvLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCTUxNjdFRUExMTcwMzc3QkYwMDc2ODFDQSAvKiBEaXNrQ2FjaGVNb25p
dG9yLm1tIGluIFNvdXJjZXMgKi8sCisJCQkJMkRBRjA2RDcxOEJEMUE0NzAwODFDRUIxIC8qIFNt
YXJ0TWFnbmlmaWNhdGlvbkNvbnRyb2xsZXIubW0gaW4gU291cmNlcyAqLywKIAkJCQkyRDZDRDEx
QTE4OTA1OEE1MDBFNUE0QTAgLyogVmlld1NuYXBzaG90U3RvcmUubW0gaW4gU291cmNlcyAqLywK
IAkJCQk1MThFOEYwNzE2QjIwOTM3MDBFOTE0MjkgLyogRG93bmxvYWQuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJMkQ0N0I1NkMxODEwNzE0RTAwM0EzQUVFIC8qIFJlbW90ZUxheWVyQmFja2luZ1N0
b3JlLm1tIGluIFNvdXJjZXMgKi8sCkBAIC04MDMxLDYgKzgwNDgsNyBAQAogCQkJCTFBQjE2QURE
MTY0ODU5ODQwMDI5MEQ2MiAvKiBSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYS5tbSBpbiBTb3Vy
Y2VzICovLAogCQkJCTFBQjE2QUUxMTY0ODY1NkQwMDI5MEQ2MiAvKiBSZW1vdGVMYXllclRyZWVE
cmF3aW5nQXJlYVByb3h5Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMEY1OTQ3OUMxODdCM0I2MDAw
NDM3ODU3IC8qIFJlbW90ZVNjcm9sbGluZ1RyZWUuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMkRF
Njk0M0QxOEJEMkE2ODAwNUMxNUU1IC8qIFNtYXJ0TWFnbmlmaWNhdGlvbkNvbnRyb2xsZXJNZXNz
YWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMUFBM0Q3NUIxNjUxQjQ0RjAwODcx
M0QwIC8qIFJlbW90ZUxheWVyVHJlZUhvc3QubW0gaW4gU291cmNlcyAqLywKIAkJCQkxQUYxQUM2
QjE2NTE3NTlFMDBDMTdEN0YgLyogUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb24ubW0gaW4gU291
cmNlcyAqLywKIAkJCQlFMUI3ODQ3MzE2M0YyNTNFMDAwN0I2OTIgLyogUmVtb3RlTmV0d29ya2lu
Z0NvbnRleHQubW0gaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViUGFnZS9WaWV3R2VzdHVyZUdlb21ldHJ5Q29sbGVjdG9yLmNwcCBiL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9WaWV3R2VzdHVyZUdlb21ldHJ5Q29sbGVjdG9y
LmNwcAppbmRleCBkZDRkYmIyLi4xMmExYWY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYlBhZ2UvVmlld0dlc3R1cmVHZW9tZXRyeUNvbGxlY3Rvci5jcHAKKysrIGIv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1ZpZXdHZXN0dXJlR2VvbWV0cnlDb2xs
ZWN0b3IuY3BwCkBAIC0yNiwyNiArMjYsMzQgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNs
dWRlICJWaWV3R2VzdHVyZUdlb21ldHJ5Q29sbGVjdG9yLmgiCiAKLSNpZiAhUExBVEZPUk0oSU9T
KQotCi0jaW5jbHVkZSAiVmlld0dlc3R1cmVDb250cm9sbGVyTWVzc2FnZXMuaCIKICNpbmNsdWRl
ICJWaWV3R2VzdHVyZUdlb21ldHJ5Q29sbGVjdG9yTWVzc2FnZXMuaCIKICNpbmNsdWRlICJXZWJD
b3JlQXJndW1lbnRDb2RlcnMuaCIKICNpbmNsdWRlICJXZWJGcmFtZS5oIgogI2luY2x1ZGUgIldl
YlBhZ2UuaCIKICNpbmNsdWRlICJXZWJQcm9jZXNzLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9GcmFt
ZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRnJhbWVWaWV3Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9I
aXRUZXN0UmVzdWx0Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9SZW5kZXJWaWV3Lmg+CiAKKyNpZiBQ
TEFURk9STShJT1MpCisjaW5jbHVkZSAiU21hcnRNYWduaWZpY2F0aW9uQ29udHJvbGxlck1lc3Nh
Z2VzLmgiCisjZW5kaWYKKworI2lmIFBMQVRGT1JNKE1BQykKKyNpbmNsdWRlICJWaWV3R2VzdHVy
ZUNvbnRyb2xsZXJNZXNzYWdlcy5oIgorI2VuZGlmCisKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3Jl
OwogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogVmlld0dlc3R1cmVHZW9tZXRyeUNvbGxlY3Rvcjo6
Vmlld0dlc3R1cmVHZW9tZXRyeUNvbGxlY3RvcihXZWJQYWdlJiB3ZWJQYWdlKQogICAgIDogbV93
ZWJQYWdlKHdlYlBhZ2UpCisjaWYgUExBVEZPUk0oTUFDKQogICAgICwgbV9yZW5kZXJUcmVlU2l6
ZU5vdGlmaWNhdGlvblRocmVzaG9sZCgwKQogICAgICwgbV9yZW5kZXJUcmVlU2l6ZU5vdGlmaWNh
dGlvblRpbWVyKFJ1bkxvb3A6Om1haW4oKSwgdGhpcywgJlZpZXdHZXN0dXJlR2VvbWV0cnlDb2xs
ZWN0b3I6OnJlbmRlclRyZWVTaXplTm90aWZpY2F0aW9uVGltZXJGaXJlZCkKKyNlbmRpZgogewog
ICAgIFdlYlByb2Nlc3M6OnNoYXJlZCgpLmFkZE1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6Vmll
d0dlc3R1cmVHZW9tZXRyeUNvbGxlY3Rvcjo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtX3dlYlBh
Z2UucGFnZUlEKCksICp0aGlzKTsKIH0KQEAgLTU1LDExICs2MywxNCBAQCBWaWV3R2VzdHVyZUdl
b21ldHJ5Q29sbGVjdG9yOjp+Vmlld0dlc3R1cmVHZW9tZXRyeUNvbGxlY3RvcigpCiAgICAgV2Vi
UHJvY2Vzczo6c2hhcmVkKCkucmVtb3ZlTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpWaWV3R2Vz
dHVyZUdlb21ldHJ5Q29sbGVjdG9yOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1fd2ViUGFnZS5w
YWdlSUQoKSk7CiB9CiAKLXZvaWQgVmlld0dlc3R1cmVHZW9tZXRyeUNvbGxlY3Rvcjo6Y29sbGVj
dEdlb21ldHJ5Rm9yTWFnbmlmaWNhdGlvbkdlc3R1cmUoKQordm9pZCBWaWV3R2VzdHVyZUdlb21l
dHJ5Q29sbGVjdG9yOjpkaXNwYXRjaERpZENvbGxlY3RHZW9tZXRyeUZvclNtYXJ0TWFnbmlmaWNh
dGlvbkdlc3R1cmUoRmxvYXRQb2ludCBvcmlnaW4sIEZsb2F0UmVjdCB0YXJnZXRSZWN0LCBGbG9h
dFJlY3QgdmlzaWJsZUNvbnRlbnRSZWN0LCBib29sIGlzUmVwbGFjZWRFbGVtZW50LCBib29sIGZy
YW1lSGFuZGxlc01hZ25pZmljYXRpb25HZXN0dXJlLCBkb3VibGUgdmlld3BvcnRNaW5pbXVtU2Nh
bGUsIGRvdWJsZSB2aWV3cG9ydE1heGltdW1TY2FsZSkKIHsKLSAgICBGbG9hdFJlY3QgdmlzaWJs
ZUNvbnRlbnRSZWN0ID0gbV93ZWJQYWdlLm1haW5GcmFtZVZpZXcoKS0+dmlzaWJsZUNvbnRlbnRS
ZWN0SW5jbHVkaW5nU2Nyb2xsYmFycygpOwotICAgIGJvb2wgZnJhbWVIYW5kbGVzTWFnbmlmaWNh
dGlvbkdlc3R1cmUgPSBtX3dlYlBhZ2UubWFpbldlYkZyYW1lKCktPmhhbmRsZXNQYWdlU2NhbGVH
ZXN0dXJlKCk7Ci0gICAgbV93ZWJQYWdlLnNlbmQoTWVzc2FnZXM6OlZpZXdHZXN0dXJlQ29udHJv
bGxlcjo6RGlkQ29sbGVjdEdlb21ldHJ5Rm9yTWFnbmlmaWNhdGlvbkdlc3R1cmUodmlzaWJsZUNv
bnRlbnRSZWN0LCBmcmFtZUhhbmRsZXNNYWduaWZpY2F0aW9uR2VzdHVyZSkpOworI2lmIFBMQVRG
T1JNKE1BQykKKyAgICBtX3dlYlBhZ2Uuc2VuZChNZXNzYWdlczo6Vmlld0dlc3R1cmVDb250cm9s
bGVyOjpEaWRDb2xsZWN0R2VvbWV0cnlGb3JTbWFydE1hZ25pZmljYXRpb25HZXN0dXJlKG9yaWdp
biwgdGFyZ2V0UmVjdCwgdmlzaWJsZUNvbnRlbnRSZWN0LCBpc1JlcGxhY2VkRWxlbWVudCwgZnJh
bWVIYW5kbGVzTWFnbmlmaWNhdGlvbkdlc3R1cmUsIHZpZXdwb3J0TWluaW11bVNjYWxlLCB2aWV3
cG9ydE1heGltdW1TY2FsZSkpOworI2VuZGlmCisjaWYgUExBVEZPUk0oSU9TKQorICAgIG1fd2Vi
UGFnZS5zZW5kKE1lc3NhZ2VzOjpTbWFydE1hZ25pZmljYXRpb25Db250cm9sbGVyOjpEaWRDb2xs
ZWN0R2VvbWV0cnlGb3JTbWFydE1hZ25pZmljYXRpb25HZXN0dXJlKG9yaWdpbiwgdGFyZ2V0UmVj
dCwgdmlzaWJsZUNvbnRlbnRSZWN0LCBpc1JlcGxhY2VkRWxlbWVudCwgZnJhbWVIYW5kbGVzTWFn
bmlmaWNhdGlvbkdlc3R1cmUsIHZpZXdwb3J0TWluaW11bVNjYWxlLCB2aWV3cG9ydE1heGltdW1T
Y2FsZSkpOworI2VuZGlmCiB9CiAKIHZvaWQgVmlld0dlc3R1cmVHZW9tZXRyeUNvbGxlY3Rvcjo6
Y29sbGVjdEdlb21ldHJ5Rm9yU21hcnRNYWduaWZpY2F0aW9uR2VzdHVyZShGbG9hdFBvaW50IG9y
aWdpbikKQEAgLTY3LDE4ICs3OCwzNyBAQCB2b2lkIFZpZXdHZXN0dXJlR2VvbWV0cnlDb2xsZWN0
b3I6OmNvbGxlY3RHZW9tZXRyeUZvclNtYXJ0TWFnbmlmaWNhdGlvbkdlc3R1cmUoRgogICAgIEZs
b2F0UmVjdCB2aXNpYmxlQ29udGVudFJlY3QgPSBtX3dlYlBhZ2UubWFpbkZyYW1lVmlldygpLT52
aXNpYmxlQ29udGVudFJlY3RJbmNsdWRpbmdTY3JvbGxiYXJzKCk7CiAgICAgYm9vbCBmcmFtZUhh
bmRsZXNNYWduaWZpY2F0aW9uR2VzdHVyZSA9IG1fd2ViUGFnZS5tYWluV2ViRnJhbWUoKS0+aGFu
ZGxlc1BhZ2VTY2FsZUdlc3R1cmUoKTsKIAotICAgIEZsb2F0UG9pbnQgc2Nyb2xsZWRPcmlnaW4g
PSBvcmlnaW47Ci0gICAgc2Nyb2xsZWRPcmlnaW4ubW92ZUJ5KG1fd2ViUGFnZS5tYWluRnJhbWVW
aWV3KCktPnNjcm9sbFBvc2l0aW9uKCkpOwotCiAgICAgSGl0VGVzdFJlcXVlc3QgcmVxdWVzdChI
aXRUZXN0UmVxdWVzdDo6UmVhZE9ubHkgfCBIaXRUZXN0UmVxdWVzdDo6QWN0aXZlIHwgSGl0VGVz
dFJlcXVlc3Q6OkRpc2FsbG93U2hhZG93Q29udGVudCk7Ci0gICAgSGl0VGVzdFJlc3VsdCBoaXRU
ZXN0UmVzdWx0ID0gSGl0VGVzdFJlc3VsdChzY3JvbGxlZE9yaWdpbik7CisgICAgSW50UG9pbnQg
b3JpZ2luSW5Db250ZW50c1NwYWNlID0gbV93ZWJQYWdlLm1haW5GcmFtZVZpZXcoKS0+d2luZG93
VG9Db250ZW50cyhyb3VuZGVkSW50UG9pbnQob3JpZ2luKSk7CisgICAgSGl0VGVzdFJlc3VsdCBo
aXRUZXN0UmVzdWx0ID0gSGl0VGVzdFJlc3VsdChvcmlnaW5JbkNvbnRlbnRzU3BhY2UpOworCiAg
ICAgbV93ZWJQYWdlLm1haW5GcmFtZVZpZXcoKS0+cmVuZGVyVmlldygpLT5oaXRUZXN0KHJlcXVl
c3QsIGhpdFRlc3RSZXN1bHQpOwogCi0gICAgaWYgKGhpdFRlc3RSZXN1bHQuaW5uZXJOb2RlKCkp
IHsKKyAgICBpZiAoTm9kZSAqbm9kZSA9IGhpdFRlc3RSZXN1bHQuaW5uZXJOb2RlKCkpIHsKICAg
ICAgICAgYm9vbCBpc1JlcGxhY2VkOwotICAgICAgICBGbG9hdFJlY3QgcmVuZGVyUmVjdCA9IGhp
dFRlc3RSZXN1bHQuaW5uZXJOb2RlKCktPnJlbmRlclJlY3QoJmlzUmVwbGFjZWQpOwotICAgICAg
ICBtX3dlYlBhZ2Uuc2VuZChNZXNzYWdlczo6Vmlld0dlc3R1cmVDb250cm9sbGVyOjpEaWRDb2xs
ZWN0R2VvbWV0cnlGb3JTbWFydE1hZ25pZmljYXRpb25HZXN0dXJlKG9yaWdpbiwgcmVuZGVyUmVj
dCwgdmlzaWJsZUNvbnRlbnRSZWN0LCBpc1JlcGxhY2VkLCBmcmFtZUhhbmRsZXNNYWduaWZpY2F0
aW9uR2VzdHVyZSkpOworICAgICAgICBGbG9hdFJlY3QgcmVuZGVyUmVjdCA9IG5vZGUtPnJlbmRl
clJlY3QoJmlzUmVwbGFjZWQpOworCisjaWYgUExBVEZPUk0oTUFDKQorICAgICAgICBkb3VibGUg
dmlld3BvcnRNaW5pbXVtU2NhbGUgPSAwOworICAgICAgICBkb3VibGUgdmlld3BvcnRNYXhpbXVt
U2NhbGUgPSBzdGQ6Om51bWVyaWNfbGltaXRzPGRvdWJsZT46Om1heCgpOworI2Vsc2UKKyAgICAg
ICAgZG91YmxlIHZpZXdwb3J0TWluaW11bVNjYWxlID0gbV93ZWJQYWdlLm1pbmltdW1QYWdlU2Nh
bGVGYWN0b3IoKTsKKyAgICAgICAgZG91YmxlIHZpZXdwb3J0TWF4aW11bVNjYWxlID0gbV93ZWJQ
YWdlLm1heGltdW1QYWdlU2NhbGVGYWN0b3IoKTsKKyNlbmRpZgorCisgICAgICAgIGRpc3BhdGNo
RGlkQ29sbGVjdEdlb21ldHJ5Rm9yU21hcnRNYWduaWZpY2F0aW9uR2VzdHVyZShvcmlnaW4sIHJl
bmRlclJlY3QsIHZpc2libGVDb250ZW50UmVjdCwgaXNSZXBsYWNlZCwgZnJhbWVIYW5kbGVzTWFn
bmlmaWNhdGlvbkdlc3R1cmUsIHZpZXdwb3J0TWluaW11bVNjYWxlLCB2aWV3cG9ydE1heGltdW1T
Y2FsZSk7CisgICAgICAgIHJldHVybjsKICAgICB9CisKKyAgICBkaXNwYXRjaERpZENvbGxlY3RH
ZW9tZXRyeUZvclNtYXJ0TWFnbmlmaWNhdGlvbkdlc3R1cmUoRmxvYXRQb2ludCgpLCBGbG9hdFJl
Y3QoKSwgRmxvYXRSZWN0KCksIGZhbHNlLCBmcmFtZUhhbmRsZXNNYWduaWZpY2F0aW9uR2VzdHVy
ZSwgMCwgMCk7Cit9CisKKyNpZiBQTEFURk9STShNQUMpCit2b2lkIFZpZXdHZXN0dXJlR2VvbWV0
cnlDb2xsZWN0b3I6OmNvbGxlY3RHZW9tZXRyeUZvck1hZ25pZmljYXRpb25HZXN0dXJlKCkKK3sK
KyAgICBGbG9hdFJlY3QgdmlzaWJsZUNvbnRlbnRSZWN0ID0gbV93ZWJQYWdlLm1haW5GcmFtZVZp
ZXcoKS0+dmlzaWJsZUNvbnRlbnRSZWN0SW5jbHVkaW5nU2Nyb2xsYmFycygpOworICAgIGJvb2wg
ZnJhbWVIYW5kbGVzTWFnbmlmaWNhdGlvbkdlc3R1cmUgPSBtX3dlYlBhZ2UubWFpbldlYkZyYW1l
KCktPmhhbmRsZXNQYWdlU2NhbGVHZXN0dXJlKCk7CisgICAgbV93ZWJQYWdlLnNlbmQoTWVzc2Fn
ZXM6OlZpZXdHZXN0dXJlQ29udHJvbGxlcjo6RGlkQ29sbGVjdEdlb21ldHJ5Rm9yTWFnbmlmaWNh
dGlvbkdlc3R1cmUodmlzaWJsZUNvbnRlbnRSZWN0LCBmcmFtZUhhbmRsZXNNYWduaWZpY2F0aW9u
R2VzdHVyZSkpOwogfQogCiB2b2lkIFZpZXdHZXN0dXJlR2VvbWV0cnlDb2xsZWN0b3I6Om1haW5G
cmFtZURpZExheW91dCgpCkBAIC05Myw3ICsxMjMsNyBAQCB2b2lkIFZpZXdHZXN0dXJlR2VvbWV0
cnlDb2xsZWN0b3I6OnJlbmRlclRyZWVTaXplTm90aWZpY2F0aW9uVGltZXJGaXJlZCgpCiB7CiAg
ICAgbV93ZWJQYWdlLnNlbmQoTWVzc2FnZXM6OlZpZXdHZXN0dXJlQ29udHJvbGxlcjo6RGlkSGl0
UmVuZGVyVHJlZVNpemVUaHJlc2hvbGQoKSk7CiB9CisjZW5kaWYKIAogfSAvLyBuYW1lc3BhY2Ug
V2ViS2l0CiAKLSNlbmRpZiAvLyAhUExBVEZPUk0oSU9TKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1ZpZXdHZXN0dXJlR2VvbWV0cnlDb2xsZWN0b3IuaCBi
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9WaWV3R2VzdHVyZUdlb21ldHJ5Q29s
bGVjdG9yLmgKaW5kZXggYTMwODhlYS4uZTA3NTMwZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1ZpZXdHZXN0dXJlR2VvbWV0cnlDb2xsZWN0b3IuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvVmlld0dlc3R1cmVHZW9tZXRyeUNv
bGxlY3Rvci5oCkBAIC0yNiwxMyArMjYsMTIgQEAKICNpZm5kZWYgVmlld0dlc3R1cmVHZW9tZXRy
eUNvbGxlY3Rvcl9oCiAjZGVmaW5lIFZpZXdHZXN0dXJlR2VvbWV0cnlDb2xsZWN0b3JfaAogCi0j
aWYgIVBMQVRGT1JNKElPUykKLQogI2luY2x1ZGUgIk1lc3NhZ2VSZWNlaXZlci5oIgogI2luY2x1
ZGUgPHd0Zi9SdW5Mb29wLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIEZsb2F0UG9p
bnQ7CitjbGFzcyBGbG9hdFJlY3Q7CiB9CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtNTEsMjAg
KzUwLDI1IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQ
Qzo6Q29ubmVjdGlvbiosIElQQzo6TWVzc2FnZURlY29kZXImKSBvdmVycmlkZTsKIAogICAgIC8v
IE1lc3NhZ2UgaGFuZGxlcnMuCi0gICAgdm9pZCBjb2xsZWN0R2VvbWV0cnlGb3JNYWduaWZpY2F0
aW9uR2VzdHVyZSgpOwogICAgIHZvaWQgY29sbGVjdEdlb21ldHJ5Rm9yU21hcnRNYWduaWZpY2F0
aW9uR2VzdHVyZShXZWJDb3JlOjpGbG9hdFBvaW50IG9yaWdpbik7CisKKyNpZiBQTEFURk9STShN
QUMpCisgICAgdm9pZCBjb2xsZWN0R2VvbWV0cnlGb3JNYWduaWZpY2F0aW9uR2VzdHVyZSgpOwog
ICAgIHZvaWQgc2V0UmVuZGVyVHJlZVNpemVOb3RpZmljYXRpb25UaHJlc2hvbGQodWludDY0X3Qg
c2l6ZSkgeyBtX3JlbmRlclRyZWVTaXplTm90aWZpY2F0aW9uVGhyZXNob2xkID0gc2l6ZTsgfQog
CiAgICAgdm9pZCByZW5kZXJUcmVlU2l6ZU5vdGlmaWNhdGlvblRpbWVyRmlyZWQoKTsKKyNlbmRp
ZgorCisgICAgdm9pZCBkaXNwYXRjaERpZENvbGxlY3RHZW9tZXRyeUZvclNtYXJ0TWFnbmlmaWNh
dGlvbkdlc3R1cmUoV2ViQ29yZTo6RmxvYXRQb2ludCBvcmlnaW4sIFdlYkNvcmU6OkZsb2F0UmVj
dCB0YXJnZXRSZWN0LCBXZWJDb3JlOjpGbG9hdFJlY3QgdmlzaWJsZUNvbnRlbnRSZWN0LCBib29s
IGlzUmVwbGFjZWRFbGVtZW50LCBib29sIGZyYW1lSGFuZGxlc01hZ25pZmljYXRpb25HZXN0dXJl
LCBkb3VibGUgdmlld3BvcnRNaW5pbXVtU2NhbGUsIGRvdWJsZSB2aWV3cG9ydE1heGltdW1TY2Fs
ZSk7CiAKICAgICBXZWJQYWdlJiBtX3dlYlBhZ2U7CiAKKyNpZiBQTEFURk9STShNQUMpCiAgICAg
dWludDY0X3QgbV9yZW5kZXJUcmVlU2l6ZU5vdGlmaWNhdGlvblRocmVzaG9sZDsKICAgICBSdW5M
b29wOjpUaW1lcjxWaWV3R2VzdHVyZUdlb21ldHJ5Q29sbGVjdG9yPiBtX3JlbmRlclRyZWVTaXpl
Tm90aWZpY2F0aW9uVGltZXI7CisjZW5kaWYKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAog
Ci0jZW5kaWYgLy8gIVBMQVRGT1JNKElPUykKLQogI2VuZGlmIC8vIFZpZXdHZXN0dXJlR2VvbWV0
cnlDb2xsZWN0b3IKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFn
ZS9WaWV3R2VzdHVyZUdlb21ldHJ5Q29sbGVjdG9yLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1ZpZXdHZXN0dXJlR2VvbWV0cnlDb2xsZWN0b3IubWVzc2Fn
ZXMuaW4KaW5kZXggZWZkMDUxZi4uMDQ3MjA5YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJQYWdlL1ZpZXdHZXN0dXJlR2VvbWV0cnlDb2xsZWN0b3IubWVzc2FnZXMu
aW4KKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1ZpZXdHZXN0dXJlR2Vv
bWV0cnlDb2xsZWN0b3IubWVzc2FnZXMuaW4KQEAgLTIwLDE0ICsyMCwxMiBAQAogIyBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQogIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogCi0jaWYgIVBMQVRGT1JNKElPUykKLQogbWVz
c2FnZXMgLT4gVmlld0dlc3R1cmVHZW9tZXRyeUNvbGxlY3RvciB7CisgICAgQ29sbGVjdEdlb21l
dHJ5Rm9yU21hcnRNYWduaWZpY2F0aW9uR2VzdHVyZShXZWJDb3JlOjpGbG9hdFBvaW50IG9yaWdp
bikKIAotQ29sbGVjdEdlb21ldHJ5Rm9yTWFnbmlmaWNhdGlvbkdlc3R1cmUoKQotQ29sbGVjdEdl
b21ldHJ5Rm9yU21hcnRNYWduaWZpY2F0aW9uR2VzdHVyZShXZWJDb3JlOjpGbG9hdFBvaW50IG9y
aWdpbikKLQotU2V0UmVuZGVyVHJlZVNpemVOb3RpZmljYXRpb25UaHJlc2hvbGQodWludDY0X3Qg
c2l6ZSkKLX0KKyNpZiAhUExBVEZPUk0oSU9TKQorICAgIENvbGxlY3RHZW9tZXRyeUZvck1hZ25p
ZmljYXRpb25HZXN0dXJlKCkKIAorICAgIFNldFJlbmRlclRyZWVTaXplTm90aWZpY2F0aW9uVGhy
ZXNob2xkKHVpbnQ2NF90IHNpemUpCiAjZW5kaWYKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAppbmRleCBlMjVlMDYzLi5iMGIzYjEzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKKysrIGIv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCkBAIC0yNTMsOSAr
MjUzLDcgQEAgV2ViUGFnZTo6V2ViUGFnZSh1aW50NjRfdCBwYWdlSUQsIGNvbnN0IFdlYlBhZ2VD
cmVhdGlvblBhcmFtZXRlcnMmIHBhcmFtZXRlcnMpCiAgICAgLCBtX3BkZlBsdWdpbkVuYWJsZWQo
ZmFsc2UpCiAgICAgLCBtX2hhc0NhY2hlZFdpbmRvd0ZyYW1lKGZhbHNlKQogICAgICwgbV9rZXli
b2FyZEV2ZW50QmVpbmdJbnRlcnByZXRlZCgwKQotI2lmICFQTEFURk9STShJT1MpCiAgICAgLCBt
X3ZpZXdHZXN0dXJlR2VvbWV0cnlDb2xsZWN0b3IoKnRoaXMpCi0jZW5kaWYKICNlbGlmIFBMQVRG
T1JNKEdUSykgJiYgSEFWRShBQ0NFU1NJQklMSVRZKQogICAgICwgbV9hY2Nlc3NpYmlsaXR5T2Jq
ZWN0KDApCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJQYWdlLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFn
ZS5oCmluZGV4IDE3MDU2ZGQuLmFmYzgwYTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYlBhZ2UuaApAQCAtOTkwLDkgKzk5MCw3IEBAIHByaXZhdGU6CiAKICAgICBX
ZWJDb3JlOjpLZXlib2FyZEV2ZW50KiBtX2tleWJvYXJkRXZlbnRCZWluZ0ludGVycHJldGVkOwog
Ci0jaWYgIVBMQVRGT1JNKElPUykKICAgICBWaWV3R2VzdHVyZUdlb21ldHJ5Q29sbGVjdG9yIG1f
dmlld0dlc3R1cmVHZW9tZXRyeUNvbGxlY3RvcjsKLSNlbmRpZgogCiAjZWxpZiBIQVZFKEFDQ0VT
U0lCSUxJVFkpICYmIChQTEFURk9STShHVEspIHx8IFBMQVRGT1JNKEVGTCkpCiAgICAgR1JlZlB0
cjxXZWJQYWdlQWNjZXNzaWJpbGl0eU9iamVjdD4gbV9hY2Nlc3NpYmlsaXR5T2JqZWN0Owo=
</data>
<flag name="review"
          id="249422"
          type_id="1"
          status="-"
          setter="benjamin"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>225328</attachid>
            <date>2014-02-26 17:26:30 -0800</date>
            <delta_ts>2014-02-26 17:30:19 -0800</delta_ts>
            <desc>patch</desc>
            <filename>doubletap.diff</filename>
            <type>text/plain</type>
            <size>57815</size>
            <attacher name="Tim Horton">thorton</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCAyOWMzNTg5Li42M2M5ZmY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQg
QEAKKzIwMTQtMDItMjYgIFRpbSBIb3J0b24gIDx0aW1vdGh5X2hvcnRvbkBhcHBsZS5jb20+CisK
KyAgICAgICAgV2ViS2l0MiBWaWV3IEdlc3R1cmVzIChTbWFydCBNYWduaWZpY2F0aW9uKTogU3Vw
cG9ydCBmb3IgaU9TCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xMjkxNDYKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzE2MDMyNjY4PgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViQ29yZS5leHAuaW46
CisgICAgICAgIEFkZCBhbiBleHBvcnQuCisKIDIwMTQtMDItMjYgIERlYW4gSmFja3NvbiAgPGRp
bm9AYXBwbGUuY29tPgogCiAgICAgICAgIFtXZWJHTF0gT25seSBza2lwIGNvbnRleHQgZXJyb3Ig
cmV0cmlldmFsIGlmIGEgcGVuZGluZyBjb250ZXh0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLmV4cC5pbiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCmluZGV4IDc2
NGY0MzkuLmQ5YzRkZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmlu
CisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCkBAIC0xODg5LDYgKzE4ODksNyBA
QCBfX1pOSzdXZWJDb3JlOUZsb2F0UXVhZDExYm91bmRpbmdCb3hFdgogX19aTks3V2ViQ29yZTlG
bG9hdFJlY3QxMGludGVyc2VjdHNFUktTMF8KIF9fWk5LN1dlYkNvcmU5RmxvYXRSZWN0Y3Y2Q0dS
ZWN0RXYKIF9fWk5LN1dlYkNvcmU5RmxvYXRTaXplNmlzWmVyb0V2CitfX1pOSzdXZWJDb3JlOUZs
b2F0U2l6ZTE0ZGlhZ29uYWxMZW5ndGhFdgogX19aTks3V2ViQ29yZTlGcmFtZVRyZWUxMGNoaWxk
Q291bnRFdgogX19aTks3V2ViQ29yZTlGcmFtZVRyZWUxMnRyYXZlcnNlTmV4dEVQS05TXzVGcmFt
ZUUKIF9fWk5LN1dlYkNvcmU5RnJhbWVUcmVlMTRpc0Rlc2NlbmRhbnRPZkVQS05TXzVGcmFtZUUK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwppbmRleCBmNjNlNDNiLi5lNzE3NzI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsOTEg
QEAKKzIwMTQtMDItMjYgIFRpbSBIb3J0b24gIDx0aW1vdGh5X2hvcnRvbkBhcHBsZS5jb20+CisK
KyAgICAgICAgV2ViS2l0MiBWaWV3IEdlc3R1cmVzIChTbWFydCBNYWduaWZpY2F0aW9uKTogU3Vw
cG9ydCBmb3IgaU9TCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xMjkxNDYKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzE2MDMyNjY4PgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBzdXBwb3J0IGZvciBk
b3VibGUtdGFwIHNtYXJ0IG1hZ25pZmljYXRpb24gb24gaU9TLgorCisgICAgICAgICogRGVyaXZl
ZFNvdXJjZXMubWFrZToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5t
bToKKyAgICAgICAgKC1bV0tXZWJWaWV3IGluaXRXaXRoRnJhbWU6Y29uZmlndXJhdGlvbjpdKToK
KyAgICAgICAgV0tDb250ZW50VmlldyBpcyBubyBsb25nZXIgQVBJLCBzbyBpdCBjYW4ga25vdyBh
Ym91dCBXS1dlYlZpZXcKKyAgICAgICAgYW5kIHdpbGwgYWx3YXlzIGhhdmUgb25lLgorCisgICAg
ICAgICgtW1dLV2ViVmlldyBjb250ZW50VmlldzpkaWRDb21taXRMYXllclRyZWU6V2ViS2l0Ojpd
KToKKyAgICAgICAgRG9uJ3QgcmVwbGFjZSB0aGUgem9vbSBzY2FsZSBpZiB3ZSdyZSBjdXJyZW50
bHkgYW5pbWF0aW5nLgorCisgICAgICAgICgtW1dLV2ViVmlldyBfdGFrZVZpZXdTbmFwc2hvdF0p
OgorICAgICAgICBSZW5hbWUuCisKKyAgICAgICAgKC1bV0tXZWJWaWV3IF96b29tVG9Qb2ludDpX
ZWJDb3JlOjphdFNjYWxlOl0pOgorICAgICAgICAoLVtXS1dlYlZpZXcgX3pvb21Ub1JlY3Q6V2Vi
Q29yZTo6YXRTY2FsZTpvcmlnaW46V2ViQ29yZTo6XSk6CisgICAgICAgIChjb25zdHJhaW5Db250
ZW50T2Zmc2V0KToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF9zY3JvbGxUb1JlY3Q6V2ViQ29yZTo6
b3JpZ2luOldlYkNvcmU6Om1pbmltdW1TY3JvbGxEaXN0YW5jZTpdKToKKyAgICAgICAgKC1bV0tX
ZWJWaWV3IF96b29tT3V0V2l0aE9yaWdpbjpdKToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF96b29t
VG9SZWN0OndpdGhPcmlnaW46Zml0RW50aXJlUmVjdDptaW5pbXVtU2NhbGU6bWF4aW11bVNjYWxl
Om1pbmltdW1TY3JvbGxEaXN0YW5jZTpdKToKKyAgICAgICAgQWRkIF96b29tVG9SZWN0OndpdGhP
cmlnaW46Zml0RW50aXJlUmVjdDptaW5pbXVtU2NhbGU6bWF4aW11bVNjYWxlOm1pbmltdW1TY3Jv
bGxEaXN0YW5jZToKKyAgICAgICAgYW5kIF96b29tT3V0V2l0aE9yaWdpbjogYXMgaW50ZXJuYWwg
QVBJLCBmb3IgdXNlIGJ5IFNtYXJ0TWFnbmlmaWNhdGlvbkNvbnRyb2xsZXIgdmlhIFdLQ29udGVu
dFZpZXcuCisgICAgICAgIFRoZXNlIHdpbGwgdXNlIHNvbWUgaGV1cmlzdGljcyB0byBnZW5lcmFs
bHkgY2VudGVyIHRoZSB0YXJnZXQgcmVjdCBpbiB0aGUgdmlldworICAgICAgICBpbiBhIHdheSB0
aGF0IHNob3VsZCBtYXRjaCBXZWJLaXQxIGZhaXJseSBjbG9zZWx5LgorCisgICAgICAgICogVUlQ
cm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdJbnRlcm5hbC5oOgorICAgICAgICBEb24ndCB1c2Ug
dGhlIFdLQ29udGVudFZpZXdEZWxlZ2F0ZSBwcm90b2NvbCBmb3IgdGhpbmdzIHRoYXQgZG9uJ3Qg
YmVsb25nIHRoZXJlLgorCisgICAgICAgICogVUlQcm9jZXNzL2lvcy9TbWFydE1hZ25pZmljYXRp
b25Db250cm9sbGVyLmg6IEFkZGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvU21hcnRNYWdu
aWZpY2F0aW9uQ29udHJvbGxlci5tZXNzYWdlcy5pbjogQWRkZWQuCisgICAgICAgICogVUlQcm9j
ZXNzL2lvcy9TbWFydE1hZ25pZmljYXRpb25Db250cm9sbGVyLm1tOiBBZGRlZC4KKyAgICAgICAg
KFdlYktpdDo6U21hcnRNYWduaWZpY2F0aW9uQ29udHJvbGxlcjo6U21hcnRNYWduaWZpY2F0aW9u
Q29udHJvbGxlcik6CisgICAgICAgIChXZWJLaXQ6OlNtYXJ0TWFnbmlmaWNhdGlvbkNvbnRyb2xs
ZXI6On5TbWFydE1hZ25pZmljYXRpb25Db250cm9sbGVyKToKKyAgICAgICAgKFdlYktpdDo6U21h
cnRNYWduaWZpY2F0aW9uQ29udHJvbGxlcjo6aGFuZGxlU21hcnRNYWduaWZpY2F0aW9uR2VzdHVy
ZSk6CisgICAgICAgIChXZWJLaXQ6OlNtYXJ0TWFnbmlmaWNhdGlvbkNvbnRyb2xsZXI6OmRpZENv
bGxlY3RHZW9tZXRyeUZvclNtYXJ0TWFnbmlmaWNhdGlvbkdlc3R1cmUpOgorICAgICAgICBTbWFy
dE1hZ25pZmljYXRpb25Db250cm9sbGVyIHNpdHMgb2ZmIG9mIFdLQ29udGVudFZpZXcsIGFuZCBz
ZW5kcy9yZWNlaXZlcworICAgICAgICBtZXNzYWdlcyB0byB0aGUgV2ViUHJvY2VzcyB0byBkbyB0
aGUgc21hcnQgbWFnbmlmaWNhdGlvbiBoaXQtdGVzdGluZy4KKworICAgICAgICAqIFVJUHJvY2Vz
cy9pb3MvV0tDb250ZW50Vmlldy5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvV0tDb250ZW50
Vmlldy5tbToKKyAgICAgICAgKC1bV0tDb250ZW50VmlldyBpbml0V2l0aEZyYW1lOmNvbnRleHQ6
V2ViS2l0Ojpjb25maWd1cmF0aW9uOldlYktpdDo6d2ViVmlldzpdKToKKyAgICAgICAgQXMgYmVm
b3JlLCB0ZWFjaCBXS0NvbnRlbnRWaWV3IGFib3V0IGl0cyBvd25pbmcgV0tXZWJWaWV3LgorCisg
ICAgICAgICgtW1dLQ29udGVudFZpZXcgX3Rha2VWaWV3U25hcHNob3RdKToKKyAgICAgICAgUmVu
YW1lLgorCisgICAgICAgICgtW1dLQ29udGVudFZpZXcgX3pvb21Ub1JlY3Q6d2l0aE9yaWdpbjpm
aXRFbnRpcmVSZWN0Om1pbmltdW1TY2FsZTptYXhpbXVtU2NhbGU6bWluaW11bVNjcm9sbERpc3Rh
bmNlOl0pOgorICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IF96b29tT3V0V2l0aE9yaWdpbjpdKToK
KyAgICAgICAgRm9yd2FyZCBfem9vbVRvUmVjdDo6Ojo6OiBhbmQgX3pvb21PdXRXaXRoT3JpZ2lu
OiB0byBXS1dlYlZpZXcuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJ
bnRlcmFjdGlvbi5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVy
YWN0aW9uLm1tOgorICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IHNldHVwSW50ZXJhY3Rpb25dKToK
KyAgICAgICAgKC1bV0tDb250ZW50VmlldyBfZG91YmxlVGFwUmVjb2duaXplZDpdKToKKyAgICAg
ICAgKC1bV0tDb250ZW50VmlldyBfdHdvRmluZ2VyRG91YmxlVGFwUmVjb2duaXplZDpdKToKKyAg
ICAgICAgRm9yd2FyZCBkb3VibGUgdGFwIHRvIHRoZSBTbWFydE1hZ25pZmljYXRpb25Db250cm9s
bGVyLgorCisgICAgICAgICogVUlQcm9jZXNzL21hYy9WaWV3R2VzdHVyZUNvbnRyb2xsZXIuaDoK
KyAgICAgICAgKiBVSVByb2Nlc3MvbWFjL1ZpZXdHZXN0dXJlQ29udHJvbGxlci5tZXNzYWdlcy5p
bjoKKyAgICAgICAgKiBVSVByb2Nlc3MvbWFjL1ZpZXdHZXN0dXJlQ29udHJvbGxlck1hYy5tbToK
KyAgICAgICAgKFdlYktpdDo6Vmlld0dlc3R1cmVDb250cm9sbGVyOjpkaWRDb2xsZWN0R2VvbWV0
cnlGb3JTbWFydE1hZ25pZmljYXRpb25HZXN0dXJlKToKKyAgICAgICAgUmV0cmlldmUgdGhlIG1p
bmltdW0vbWF4aW11bSB2aWV3cG9ydCBzY2FsZSBmcm9tIHRoZSBXZWJQcm9jZXNzLgorCisgICAg
ICAgICogV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICBBZGQgbmV3
IGZpbGVzLgorCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1ZpZXdHZXN0dXJlR2VvbWV0
cnlDb2xsZWN0b3IuY3BwOgorICAgICAgICAoV2ViS2l0OjpWaWV3R2VzdHVyZUdlb21ldHJ5Q29s
bGVjdG9yOjpWaWV3R2VzdHVyZUdlb21ldHJ5Q29sbGVjdG9yKToKKyAgICAgICAgKFdlYktpdDo6
Vmlld0dlc3R1cmVHZW9tZXRyeUNvbGxlY3Rvcjo6ZGlzcGF0Y2hEaWRDb2xsZWN0R2VvbWV0cnlG
b3JTbWFydE1hZ25pZmljYXRpb25HZXN0dXJlKToKKyAgICAgICAgKFdlYktpdDo6Vmlld0dlc3R1
cmVHZW9tZXRyeUNvbGxlY3Rvcjo6Y29sbGVjdEdlb21ldHJ5Rm9yU21hcnRNYWduaWZpY2F0aW9u
R2VzdHVyZSk6CisgICAgICAgIChXZWJLaXQ6OlZpZXdHZXN0dXJlR2VvbWV0cnlDb2xsZWN0b3I6
OmNvbGxlY3RHZW9tZXRyeUZvck1hZ25pZmljYXRpb25HZXN0dXJlKToKKyAgICAgICAgRmFjdG9y
IG91dCBjb2RlIHRvIHNlbmQgdGhlIGdlb21ldHJ5IGJhY2sgdG8gdGhlIFVJIHByb2Nlc3MuCisK
KyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvVmlld0dlc3R1cmVHZW9tZXRyeUNvbGxlY3Rv
ci5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9WaWV3R2VzdHVyZUdlb21ldHJ5Q29s
bGVjdG9yLm1lc3NhZ2VzLmluOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdl
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6V2ViUGFnZSk6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaDoKKyAgICAgICAgV2Ugc2hvdWxkIGhhdmUgYSBWaWV3
R2VzdHVyZUdlb21ldHJ5Q29sbGVjdG9yIG9uIGlPUyB0b28uCisKIDIwMTQtMDItMjYgIEFuZGVy
cyBDYXJsc3NvbiAgPGFuZGVyc2NhQGFwcGxlLmNvbT4KIAogICAgICAgICBSZW5hbWUgV2ViVmlz
aXRlZExpbmtQcm92aWRlciB0byBWaXNpdGVkTGlua1RhYmxlQ29udHJvbGxlcgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvRGVyaXZlZFNvdXJjZXMubWFrZSBiL1NvdXJjZS9XZWJLaXQyL0Rl
cml2ZWRTb3VyY2VzLm1ha2UKaW5kZXggZDYzZDM0My4uNDRhODI4NiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvRGVyaXZlZFNvdXJjZXMubWFrZQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9EZXJp
dmVkU291cmNlcy5tYWtlCkBAIC05Myw2ICs5Myw3IEBAIE1FU1NBR0VfUkVDRUlWRVJTID0gXAog
ICAgIFJlbW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yIFwKICAgICBTZWNJdGVtU2hpbSBcCiAgICAg
U2VjSXRlbVNoaW1Qcm94eSBcCisgICAgU21hcnRNYWduaWZpY2F0aW9uQ29udHJvbGxlciBcCiAg
ICAgU3RvcmFnZUFyZWFNYXAgXAogICAgIFN0b3JhZ2VNYW5hZ2VyIFwKICAgICBWaWV3R2VzdHVy
ZUNvbnRyb2xsZXIgXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9D
b2NvYS9XS1dlYlZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dL
V2ViVmlldy5tbQppbmRleCBiOGM1MTA3Li43ZmMxNjU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQpAQCAtMTQyLDkgKzE0Miw4IEBACiAK
ICAgICBbc2VsZiBhZGRTdWJ2aWV3Ol9zY3JvbGxWaWV3LmdldCgpXTsKIAotICAgIF9jb250ZW50
VmlldyA9IGFkb3B0TlMoW1tXS0NvbnRlbnRWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOmJvdW5k
cyBjb250ZXh0OmNvbnRleHQgY29uZmlndXJhdGlvbjpzdGQ6Om1vdmUod2ViUGFnZUNvbmZpZ3Vy
YXRpb24pXSk7CisgICAgX2NvbnRlbnRWaWV3ID0gYWRvcHROUyhbW1dLQ29udGVudFZpZXcgYWxs
b2NdIGluaXRXaXRoRnJhbWU6Ym91bmRzIGNvbnRleHQ6Y29udGV4dCBjb25maWd1cmF0aW9uOnN0
ZDo6bW92ZSh3ZWJQYWdlQ29uZmlndXJhdGlvbikgd2ViVmlldzpzZWxmXSk7CiAgICAgX3BhZ2Ug
PSBbX2NvbnRlbnRWaWV3IHBhZ2VdOwotICAgIFtfY29udGVudFZpZXcgc2V0RGVsZWdhdGU6c2Vs
Zl07CiAgICAgW19jb250ZW50VmlldyBsYXllcl0uYW5jaG9yUG9pbnQgPSBDR1BvaW50WmVybzsK
ICAgICBbX2NvbnRlbnRWaWV3IHNldEZyYW1lOmJvdW5kc107CiAgICAgW19zY3JvbGxWaWV3IGFk
ZFN1YnZpZXc6X2NvbnRlbnRWaWV3LmdldCgpXTsKQEAgLTMxNCwxOSArMzEzLDE3IEBACiAgICAg
cmV0dXJuIFtfY29udGVudFZpZXcgYnJvd3NpbmdDb250ZXh0Q29udHJvbGxlcl07CiB9CiAKLSNw
cmFnbWEgbWFyayBXS0NvbnRlbnRWaWV3RGVsZWdhdGUKLQotLSAodm9pZCljb250ZW50Vmlld0Rp
ZENvbW1pdExvYWRGb3JNYWluRnJhbWU6KFdLQ29udGVudFZpZXcgKiljb250ZW50VmlldworLSAo
dm9pZClfZGlkQ29tbWl0TG9hZEZvck1haW5GcmFtZQogewogICAgIF9pc1dhaXRpbmdGb3JOZXdM
YXllclRyZWVBZnRlckRpZENvbW1pdExvYWQgPSBZRVM7CiB9CiAKLS0gKHZvaWQpY29udGVudFZp
ZXc6KFdLQ29udGVudFZpZXcgKiljb250ZW50VmlldyBkaWRDb21taXRMYXllclRyZWU6KGNvbnN0
IFdlYktpdDo6UmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb24mKWxheWVyVHJlZVRyYW5zYWN0aW9u
CistICh2b2lkKV9kaWRDb21taXRMYXllclRyZWU6KGNvbnN0IFdlYktpdDo6UmVtb3RlTGF5ZXJU
cmVlVHJhbnNhY3Rpb24mKWxheWVyVHJlZVRyYW5zYWN0aW9uCiB7CiAgICAgW19zY3JvbGxWaWV3
IHNldE1pbmltdW1ab29tU2NhbGU6bGF5ZXJUcmVlVHJhbnNhY3Rpb24ubWluaW11bVNjYWxlRmFj
dG9yKCldOwogICAgIFtfc2Nyb2xsVmlldyBzZXRNYXhpbXVtWm9vbVNjYWxlOmxheWVyVHJlZVRy
YW5zYWN0aW9uLm1heGltdW1TY2FsZUZhY3RvcigpXTsKICAgICBbX3Njcm9sbFZpZXcgc2V0Wm9v
bUVuYWJsZWQ6bGF5ZXJUcmVlVHJhbnNhY3Rpb24uYWxsb3dzVXNlclNjYWxpbmcoKV07Ci0gICAg
aWYgKCFsYXllclRyZWVUcmFuc2FjdGlvbi5zY2FsZVdhc1NldEJ5VUlQcm9jZXNzKCkgJiYgIVtf
c2Nyb2xsVmlldyBpc1pvb21pbmddICYmICFbX3Njcm9sbFZpZXcgaXNab29tQm91bmNpbmddKQor
ICAgIGlmICghbGF5ZXJUcmVlVHJhbnNhY3Rpb24uc2NhbGVXYXNTZXRCeVVJUHJvY2VzcygpICYm
ICFbX3Njcm9sbFZpZXcgaXNab29taW5nXSAmJiAhW19zY3JvbGxWaWV3IGlzWm9vbUJvdW5jaW5n
XSAmJiAhW19zY3JvbGxWaWV3IF9pc0FuaW1hdGluZ1pvb21dKQogICAgICAgICBbX3Njcm9sbFZp
ZXcgc2V0Wm9vbVNjYWxlOmxheWVyVHJlZVRyYW5zYWN0aW9uLnBhZ2VTY2FsZUZhY3RvcigpXTsK
IAogICAgIGlmIChfZ2VzdHVyZUNvbnRyb2xsZXIpCkBAIC0zNDAsNyArMzM3LDcgQEAKICAgICAK
IH0KIAotLSAoUmV0YWluUHRyPENHSW1hZ2VSZWY+KXRha2VWaWV3U25hcHNob3RGb3JDb250ZW50
VmlldzooV0tDb250ZW50VmlldyAqKWNvbnRlbnRWaWV3CistIChSZXRhaW5QdHI8Q0dJbWFnZVJl
Zj4pX3Rha2VWaWV3U25hcHNob3QKIHsKICAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIGJlIGFibGUg
dG8gdXNlIGFjcXVpcmUgYW4gSU9TdXJmYWNlIGRpcmVjdGx5LCBpbnN0ZWFkIG9mIGdvaW5nIHRv
IENHSW1hZ2UgaGVyZSBhbmQgYmFjayBpbiBWaWV3U25hcHNob3RTdG9yZS4KICAgICBVSUdyYXBo
aWNzQmVnaW5JbWFnZUNvbnRleHRXaXRoT3B0aW9ucyhzZWxmLmJvdW5kcy5zaXplLCBZRVMsIHNl
bGYud2luZG93LnNjcmVlbi5zY2FsZSk7CkBAIC0zNTAsNiArMzQ3LDEyMCBAQAogICAgIHJldHVy
biBpbWFnZS5DR0ltYWdlOwogfQogCistICh2b2lkKV96b29tVG9Qb2ludDooV2ViQ29yZTo6Rmxv
YXRQb2ludClwb2ludCBhdFNjYWxlOihkb3VibGUpc2NhbGUKK3sKKyAgICBkb3VibGUgbWF4aW11
bVpvb21EdXJhdGlvbiA9IDAuNDsKKyAgICBkb3VibGUgbWluaW11bVpvb21EdXJhdGlvbiA9IDAu
MTsKKyAgICBkb3VibGUgem9vbUR1cmF0aW9uRmFjdG9yID0gMC4zOworCisgICAgQ0ZUaW1lSW50
ZXJ2YWwgZHVyYXRpb24gPSBzdGQ6Om1pbihmYWJzKGxvZyhbX3Njcm9sbFZpZXcgem9vbVNjYWxl
XSkgLSBsb2coc2NhbGUpKSAqIHpvb21EdXJhdGlvbkZhY3RvciArIG1pbmltdW1ab29tRHVyYXRp
b24sIG1heGltdW1ab29tRHVyYXRpb24pOworCisgICAgW19jb250ZW50VmlldyB3aWxsU3RhcnRV
c2VyVHJpZ2dlcmVkWm9vbV07CisgICAgW19zY3JvbGxWaWV3IF96b29tVG9DZW50ZXI6cG9pbnQg
c2NhbGU6c2NhbGUgZHVyYXRpb246ZHVyYXRpb25dOworfQorCistICh2b2lkKV96b29tVG9SZWN0
OihXZWJDb3JlOjpGbG9hdFJlY3QpdGFyZ2V0UmVjdCBhdFNjYWxlOihkb3VibGUpc2NhbGUgb3Jp
Z2luOihXZWJDb3JlOjpGbG9hdFBvaW50KW9yaWdpbgoreworICAgIFdlYkNvcmU6OkZsb2F0U2l6
ZSB1bm9ic2N1cmVkQ29udGVudFNpemUgPSBfcGFnZS0+dW5vYnNjdXJlZENvbnRlbnRSZWN0KCku
c2l6ZSgpOworICAgIGRvdWJsZSBjdXJyZW50U2NhbGVGYWN0b3IgPSBbX3Njcm9sbFZpZXcgem9v
bVNjYWxlXTsKKyAgICBkb3VibGUgcmVsYXRpdmVTY2FsZSA9IHNjYWxlIC8gY3VycmVudFNjYWxl
RmFjdG9yOworCisgICAgQ0dTaXplIHRhcmdldFJlY3RTaXplSW5TY3JvbGxWaWV3Q29vcmRpbmF0
ZXNBZnRlclpvb20gPSBbX3Njcm9sbFZpZXcgY29udmVydFJlY3Q6dGFyZ2V0UmVjdCBmcm9tVmll
dzpfY29udGVudFZpZXcuZ2V0KCldLnNpemU7CisgICAgdGFyZ2V0UmVjdFNpemVJblNjcm9sbFZp
ZXdDb29yZGluYXRlc0FmdGVyWm9vbS53aWR0aCAqPSByZWxhdGl2ZVNjYWxlOworICAgIHRhcmdl
dFJlY3RTaXplSW5TY3JvbGxWaWV3Q29vcmRpbmF0ZXNBZnRlclpvb20uaGVpZ2h0ICo9IHJlbGF0
aXZlU2NhbGU7CisKKyAgICAvLyBDZW50ZXIgdGhlIHRhcmdldCByZWN0IGluIHRoZSBzY3JvbGwg
dmlldy4KKyAgICAvLyBJZiB0aGUgdGFyZ2V0IGRvZXNuJ3QgZml0IGluIHRoZSBzY3JvbGwgdmll
dywgY2VudGVyIG9uIHRoZSBnZXN0dXJlIGxvY2F0aW9uIGluc3RlYWQuCisgICAgV2ViQ29yZTo6
RmxvYXRQb2ludCB6b29tQ2VudGVyID0gdGFyZ2V0UmVjdC5jZW50ZXIoKTsKKworICAgIGlmICh0
YXJnZXRSZWN0U2l6ZUluU2Nyb2xsVmlld0Nvb3JkaW5hdGVzQWZ0ZXJab29tLndpZHRoID4gdW5v
YnNjdXJlZENvbnRlbnRTaXplLndpZHRoKCkpCisgICAgICAgIHpvb21DZW50ZXIuc2V0WChvcmln
aW4ueCgpKTsKKyAgICBpZiAodGFyZ2V0UmVjdFNpemVJblNjcm9sbFZpZXdDb29yZGluYXRlc0Fm
dGVyWm9vbS5oZWlnaHQgPiB1bm9ic2N1cmVkQ29udGVudFNpemUuaGVpZ2h0KCkpCisgICAgICAg
IHpvb21DZW50ZXIuc2V0WShvcmlnaW4ueSgpKTsKKworICAgIFtzZWxmIF96b29tVG9Qb2ludDp6
b29tQ2VudGVyIGF0U2NhbGU6c2NhbGVdOworfQorCitzdGF0aWMgV2ViQ29yZTo6RmxvYXRQb2lu
dCBjb25zdHJhaW5Db250ZW50T2Zmc2V0KFdlYkNvcmU6OkZsb2F0UG9pbnQgY29udGVudE9mZnNl
dCwgV2ViQ29yZTo6RmxvYXRTaXplIGNvbnRlbnRTaXplLCBXZWJDb3JlOjpGbG9hdFNpemUgc2Ny
b2xsVmlld1NpemUpCit7CisgICAgV2ViQ29yZTo6RmxvYXRTaXplIG1heGltdW1Db250ZW50T2Zm
c2V0ID0gY29udGVudFNpemUgLSBzY3JvbGxWaWV3U2l6ZTsKKyAgICBjb250ZW50T2Zmc2V0ID0g
Y29udGVudE9mZnNldC5zaHJ1bmtUbyhXZWJDb3JlOjpGbG9hdFBvaW50KG1heGltdW1Db250ZW50
T2Zmc2V0LndpZHRoKCksIG1heGltdW1Db250ZW50T2Zmc2V0LmhlaWdodCgpKSk7CisgICAgY29u
dGVudE9mZnNldCA9IGNvbnRlbnRPZmZzZXQuZXhwYW5kZWRUbyhXZWJDb3JlOjpGbG9hdFBvaW50
KCkpOworICAgIHJldHVybiBjb250ZW50T2Zmc2V0OworfQorCistIChCT09MKV9zY3JvbGxUb1Jl
Y3Q6KFdlYkNvcmU6OkZsb2F0UmVjdCl0YXJnZXRSZWN0IG9yaWdpbjooV2ViQ29yZTo6RmxvYXRQ
b2ludClvcmlnaW4gbWluaW11bVNjcm9sbERpc3RhbmNlOihDR0Zsb2F0KW1pbmltdW1TY3JvbGxE
aXN0YW5jZQoreworICAgIFdlYkNvcmU6OkZsb2F0UmVjdCB1bm9ic2N1cmVkQ29udGVudFJlY3Qg
PSBfcGFnZS0+dW5vYnNjdXJlZENvbnRlbnRSZWN0KCk7CisgICAgV2ViQ29yZTo6RmxvYXRQb2lu
dCB1bm9ic2N1cmVkQ29udGVudE9mZnNldCA9IHVub2JzY3VyZWRDb250ZW50UmVjdC5sb2NhdGlv
bigpOworICAgIFdlYkNvcmU6OkZsb2F0U2l6ZSBjb250ZW50U2l6ZShbX2NvbnRlbnRWaWV3IGJv
dW5kc10uc2l6ZSk7CisKKyAgICBXZWJDb3JlOjpGbG9hdFBvaW50IG9yaWdpbkluU2Nyb2xsVmll
d0Nvb3JkaW5hdGVzKFtfc2Nyb2xsVmlldyBjb252ZXJ0UG9pbnQ6b3JpZ2luIGZyb21WaWV3Ol9j
b250ZW50Vmlldy5nZXQoKV0pOworICAgIFdlYkNvcmU6OkZsb2F0UmVjdCB0YXJnZXRSZWN0SW5T
Y3JvbGxWaWV3Q29vcmRpbmF0ZXMoW19zY3JvbGxWaWV3IGNvbnZlcnRSZWN0OnRhcmdldFJlY3Qg
ZnJvbVZpZXc6X2NvbnRlbnRWaWV3LmdldCgpXSk7CisKKyAgICAvLyBDZW50ZXIgdGhlIHRhcmdl
dCByZWN0IGluIHRoZSBzY3JvbGwgdmlldy4KKyAgICAvLyBJZiB0aGUgdGFyZ2V0IGRvZXNuJ3Qg
Zml0IGluIHRoZSBzY3JvbGwgdmlldywgY2VudGVyIG9uIHRoZSBnZXN0dXJlIGxvY2F0aW9uIGlu
c3RlYWQuCisgICAgV2ViQ29yZTo6RmxvYXRQb2ludCBuZXdVbm9zYmN1cmVkQ29udGVudE9mZnNl
dDsKKyAgICBpZiAodGFyZ2V0UmVjdEluU2Nyb2xsVmlld0Nvb3JkaW5hdGVzLndpZHRoKCkgPD0g
dW5vYnNjdXJlZENvbnRlbnRSZWN0LndpZHRoKCkpCisgICAgICAgIG5ld1Vub3NiY3VyZWRDb250
ZW50T2Zmc2V0LnNldFgodGFyZ2V0UmVjdEluU2Nyb2xsVmlld0Nvb3JkaW5hdGVzLngoKSAtICh1
bm9ic2N1cmVkQ29udGVudFJlY3Qud2lkdGgoKSAtIHRhcmdldFJlY3RJblNjcm9sbFZpZXdDb29y
ZGluYXRlcy53aWR0aCgpKSAvIDIpOworICAgIGVsc2UKKyAgICAgICAgbmV3VW5vc2JjdXJlZENv
bnRlbnRPZmZzZXQuc2V0WChvcmlnaW5JblNjcm9sbFZpZXdDb29yZGluYXRlcy54KCkgLSB1bm9i
c2N1cmVkQ29udGVudFJlY3Qud2lkdGgoKSAvIDIpOworICAgIGlmICh0YXJnZXRSZWN0SW5TY3Jv
bGxWaWV3Q29vcmRpbmF0ZXMuaGVpZ2h0KCkgPD0gdW5vYnNjdXJlZENvbnRlbnRSZWN0LmhlaWdo
dCgpKQorICAgICAgICBuZXdVbm9zYmN1cmVkQ29udGVudE9mZnNldC5zZXRZKHRhcmdldFJlY3RJ
blNjcm9sbFZpZXdDb29yZGluYXRlcy55KCkgLSAodW5vYnNjdXJlZENvbnRlbnRSZWN0LmhlaWdo
dCgpIC0gdGFyZ2V0UmVjdEluU2Nyb2xsVmlld0Nvb3JkaW5hdGVzLmhlaWdodCgpKSAvIDIpOwor
ICAgIGVsc2UKKyAgICAgICAgbmV3VW5vc2JjdXJlZENvbnRlbnRPZmZzZXQuc2V0WShvcmlnaW5J
blNjcm9sbFZpZXdDb29yZGluYXRlcy55KCkgLSB1bm9ic2N1cmVkQ29udGVudFJlY3QuaGVpZ2h0
KCkgLyAyKTsKKyAgICBuZXdVbm9zYmN1cmVkQ29udGVudE9mZnNldCA9IGNvbnN0cmFpbkNvbnRl
bnRPZmZzZXQobmV3VW5vc2JjdXJlZENvbnRlbnRPZmZzZXQsIGNvbnRlbnRTaXplLCB1bm9ic2N1
cmVkQ29udGVudFJlY3Quc2l6ZSgpKTsKKworICAgIGlmICh1bm9ic2N1cmVkQ29udGVudE9mZnNl
dCA9PSBuZXdVbm9zYmN1cmVkQ29udGVudE9mZnNldCkgeworICAgICAgICBpZiAodGFyZ2V0UmVj
dEluU2Nyb2xsVmlld0Nvb3JkaW5hdGVzLndpZHRoKCkgPiB1bm9ic2N1cmVkQ29udGVudFJlY3Qu
d2lkdGgoKSkKKyAgICAgICAgICAgIG5ld1Vub3NiY3VyZWRDb250ZW50T2Zmc2V0LnNldFgob3Jp
Z2luSW5TY3JvbGxWaWV3Q29vcmRpbmF0ZXMueCgpIC0gdW5vYnNjdXJlZENvbnRlbnRSZWN0Lndp
ZHRoKCkgLyAyKTsKKyAgICAgICAgaWYgKHRhcmdldFJlY3RJblNjcm9sbFZpZXdDb29yZGluYXRl
cy5oZWlnaHQoKSA+IHVub2JzY3VyZWRDb250ZW50UmVjdC5oZWlnaHQoKSkKKyAgICAgICAgICAg
IG5ld1Vub3NiY3VyZWRDb250ZW50T2Zmc2V0LnNldFkob3JpZ2luSW5TY3JvbGxWaWV3Q29vcmRp
bmF0ZXMueSgpIC0gdW5vYnNjdXJlZENvbnRlbnRSZWN0LmhlaWdodCgpIC8gMik7CisgICAgICAg
IG5ld1Vub3NiY3VyZWRDb250ZW50T2Zmc2V0ID0gY29uc3RyYWluQ29udGVudE9mZnNldChuZXdV
bm9zYmN1cmVkQ29udGVudE9mZnNldCwgY29udGVudFNpemUsIHVub2JzY3VyZWRDb250ZW50UmVj
dC5zaXplKCkpOworICAgIH0KKworICAgIFdlYkNvcmU6OkZsb2F0U2l6ZSBjb250ZW50T2Zmc2V0
RGVsdGEgPSBuZXdVbm9zYmN1cmVkQ29udGVudE9mZnNldCAtIHVub2JzY3VyZWRDb250ZW50T2Zm
c2V0OworICAgIGZsb2F0IHNjcm9sbERpc3RhbmNlID0gY29udGVudE9mZnNldERlbHRhLmRpYWdv
bmFsTGVuZ3RoKCk7CisKKyAgICBpZiAoc2Nyb2xsRGlzdGFuY2UgPCBtaW5pbXVtU2Nyb2xsRGlz
dGFuY2UpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIFtfc2Nyb2xsVmlldyBzZXRDb250
ZW50T2Zmc2V0OihbX3Njcm9sbFZpZXcgY29udGVudE9mZnNldF0gKyBjb250ZW50T2Zmc2V0RGVs
dGEpIGFuaW1hdGVkOllFU107CisgICAgcmV0dXJuIHRydWU7Cit9CisKKy0gKHZvaWQpX3pvb21P
dXRXaXRoT3JpZ2luOihXZWJDb3JlOjpGbG9hdFBvaW50KW9yaWdpbgoreworICAgIFtzZWxmIF96
b29tVG9Qb2ludDpvcmlnaW4gYXRTY2FsZTpbX3Njcm9sbFZpZXcgbWluaW11bVpvb21TY2FsZV1d
OworfQorCistIChCT09MKV96b29tVG9SZWN0OihXZWJDb3JlOjpGbG9hdFJlY3QpdGFyZ2V0UmVj
dCB3aXRoT3JpZ2luOihXZWJDb3JlOjpGbG9hdFBvaW50KW9yaWdpbiBmaXRFbnRpcmVSZWN0OihC
T09MKWZpdEVudGlyZVJlY3QgbWluaW11bVNjYWxlOihkb3VibGUpbWluaW11bVNjYWxlIG1heGlt
dW1TY2FsZTooZG91YmxlKW1heGltdW1TY2FsZSBtaW5pbXVtU2Nyb2xsRGlzdGFuY2U6KENHRmxv
YXQpbWluaW11bVNjcm9sbERpc3RhbmNlCit7CisgICAgY29uc3QgZmxvYXQgbWF4aW11bVNjYWxl
RmFjdG9yRGVsdGFGb3JQYW5TY3JvbGwgPSAwLjAyOworCisgICAgaWYgKCFbX3Njcm9sbFZpZXcg
aXNTY3JvbGxFbmFibGVkXSB8fCAhW19zY3JvbGxWaWV3IGlzWm9vbUVuYWJsZWRdKQorICAgICAg
ICByZXR1cm4gZmFsc2U7CisKKyAgICBXZWJDb3JlOjpGbG9hdFNpemUgdW5vYnNjdXJlZENvbnRl
bnRTaXplID0gX3BhZ2UtPnVub2JzY3VyZWRDb250ZW50UmVjdCgpLnNpemUoKTsKKyAgICBkb3Vi
bGUgaG9yaXpvbnRhbFNjYWxlID0gdW5vYnNjdXJlZENvbnRlbnRTaXplLndpZHRoKCkgLyB0YXJn
ZXRSZWN0LndpZHRoKCk7CisgICAgZG91YmxlIHZlcnRpY2FsU2NhbGUgPSB1bm9ic2N1cmVkQ29u
dGVudFNpemUuaGVpZ2h0KCkgLyB0YXJnZXRSZWN0LmhlaWdodCgpOworCisgICAgaG9yaXpvbnRh
bFNjYWxlID0gc3RkOjptaW4oc3RkOjptYXgoaG9yaXpvbnRhbFNjYWxlLCBtaW5pbXVtU2NhbGUp
LCBtYXhpbXVtU2NhbGUpOworICAgIHZlcnRpY2FsU2NhbGUgPSBzdGQ6Om1pbihzdGQ6Om1heCh2
ZXJ0aWNhbFNjYWxlLCBtaW5pbXVtU2NhbGUpLCBtYXhpbXVtU2NhbGUpOworCisgICAgZG91Ymxl
IHRhcmdldFNjYWxlID0gZml0RW50aXJlUmVjdCA/IHN0ZDo6bWluKGhvcml6b250YWxTY2FsZSwg
dmVydGljYWxTY2FsZSkgOiBob3Jpem9udGFsU2NhbGU7CisgICAgZG91YmxlIGN1cnJlbnRTY2Fs
ZSA9IFtfc2Nyb2xsVmlldyB6b29tU2NhbGVdOworICAgIGlmIChmYWJzKHRhcmdldFNjYWxlIC0g
Y3VycmVudFNjYWxlKSA8IG1heGltdW1TY2FsZUZhY3RvckRlbHRhRm9yUGFuU2Nyb2xsKSB7Cisg
ICAgICAgIGlmIChbc2VsZiBfc2Nyb2xsVG9SZWN0OnRhcmdldFJlY3Qgb3JpZ2luOm9yaWdpbiBt
aW5pbXVtU2Nyb2xsRGlzdGFuY2U6bWluaW11bVNjcm9sbERpc3RhbmNlXSkKKyAgICAgICAgICAg
IHJldHVybiB0cnVlOworICAgIH0gZWxzZSBpZiAodGFyZ2V0U2NhbGUgIT0gY3VycmVudFNjYWxl
KSB7CisgICAgICAgIFtzZWxmIF96b29tVG9SZWN0OnRhcmdldFJlY3QgYXRTY2FsZTp0YXJnZXRT
Y2FsZSBvcmlnaW46b3JpZ2luXTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorICAgIAor
ICAgIHJldHVybiBmYWxzZTsKK30KKwogI3ByYWdtYSBtYXJrIC0gVUlTY3JvbGxWaWV3RGVsZWdh
dGUKIAogLSAoVUlWaWV3ICopdmlld0Zvclpvb21pbmdJblNjcm9sbFZpZXc6KFVJU2Nyb2xsVmll
dyAqKXNjcm9sbFZpZXcKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
Q29jb2EvV0tXZWJWaWV3SW50ZXJuYWwuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
Q29jb2EvV0tXZWJWaWV3SW50ZXJuYWwuaAppbmRleCAzMTc2YjY3Li5kOWZmMzUxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld0ludGVybmFs
LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdJbnRl
cm5hbC5oCkBAIC0zMSwxMSArMzEsMTIgQEAKIAogI2lmIFBMQVRGT1JNKElPUykKICNpbXBvcnQg
IldLQ29udGVudFZpZXcuaCIKKyNpbXBvcnQgPFdlYkNvcmUvRmxvYXRSZWN0Lmg+CiAjaW1wb3J0
IDxVSUtpdC9VSVNjcm9sbFZpZXdfUHJpdmF0ZS5oPgogI2VuZGlmCiAKICNpZiBQTEFURk9STShJ
T1MpCi0jZGVmaW5lIFdLX1dFQl9WSUVXX1BST1RPQ09MUyA8VUlTY3JvbGxWaWV3RGVsZWdhdGUs
IFdLQ29udGVudFZpZXdEZWxlZ2F0ZT4KKyNkZWZpbmUgV0tfV0VCX1ZJRVdfUFJPVE9DT0xTIDxV
SVNjcm9sbFZpZXdEZWxlZ2F0ZT4KICNlbmRpZgogCiAjaWYgIWRlZmluZWQoV0tfV0VCX1ZJRVdf
UFJPVE9DT0xTKQpAQCAtNTEsNiArNTIsMTYgQEAgY2xhc3MgV2ViUGFnZVByb3h5OwogQHBhY2th
Z2UKICAgICBSZWZQdHI8V2ViS2l0OjpXZWJQYWdlUHJveHk+IF9wYWdlOwogfQorCisjaWYgUExB
VEZPUk0oSU9TKQorLSAodm9pZClfZGlkQ29tbWl0TG9hZEZvck1haW5GcmFtZTsKKy0gKHZvaWQp
X2RpZENvbW1pdExheWVyVHJlZTooY29uc3QgV2ViS2l0OjpSZW1vdGVMYXllclRyZWVUcmFuc2Fj
dGlvbiYpbGF5ZXJUcmVlVHJhbnNhY3Rpb247CisKKy0gKFJldGFpblB0cjxDR0ltYWdlUmVmPilf
dGFrZVZpZXdTbmFwc2hvdDsKKworLSAoQk9PTClfem9vbVRvUmVjdDooV2ViQ29yZTo6RmxvYXRS
ZWN0KXRhcmdldFJlY3Qgd2l0aE9yaWdpbjooV2ViQ29yZTo6RmxvYXRQb2ludClvcmlnaW4gZml0
RW50aXJlUmVjdDooQk9PTClmaXRFbnRpcmVSZWN0IG1pbmltdW1TY2FsZTooZG91YmxlKW1pbmlt
dW1TY2FsZSBtYXhpbXVtU2NhbGU6KGRvdWJsZSltYXhpbXVtU2NhbGUgbWluaW11bVNjcm9sbERp
c3RhbmNlOihDR0Zsb2F0KW1pbmltdW1TY3JvbGxEaXN0YW5jZTsKKy0gKHZvaWQpX3pvb21PdXRX
aXRoT3JpZ2luOihXZWJDb3JlOjpGbG9hdFBvaW50KW9yaWdpbjsKKyNlbmRpZgogQGVuZAogCiAj
ZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvaW9zL1dLVmll
d0lPUy5tbSBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvaW9zL1dLVmlld0lPUy5tbQpp
bmRleCA1NGEzMjE1Li5hMTNmYTlkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL2lvcy9XS1ZpZXdJT1MubW0KKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9pb3MvV0tWaWV3SU9TLm1tCkBAIC0yMjgsNyArMjI4LDcgQEAgdXNpbmcgbmFtZXNwYWNlIFdl
YktpdDsKICAgICB3ZWJQYWdlQ29uZmlndXJhdGlvbi5wYWdlR3JvdXAgPSB0b0ltcGwocGFnZUdy
b3VwUmVmKTsKICAgICB3ZWJQYWdlQ29uZmlndXJhdGlvbi5yZWxhdGVkUGFnZSA9IHRvSW1wbChy
ZWxhdGVkUGFnZSk7CiAKLSAgICBfY29udGVudFZpZXcgPSBhZG9wdE5TKFtbV0tDb250ZW50Vmll
dyBhbGxvY10gaW5pdFdpdGhGcmFtZTpib3VuZHMgY29udGV4dDoqdG9JbXBsKGNvbnRleHRSZWYp
IGNvbmZpZ3VyYXRpb246c3RkOjptb3ZlKHdlYlBhZ2VDb25maWd1cmF0aW9uKV0pOworICAgIF9j
b250ZW50VmlldyA9IGFkb3B0TlMoW1tXS0NvbnRlbnRWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1l
OmJvdW5kcyBjb250ZXh0Oip0b0ltcGwoY29udGV4dFJlZikgY29uZmlndXJhdGlvbjpzdGQ6Om1v
dmUod2ViUGFnZUNvbmZpZ3VyYXRpb24pIHdlYlZpZXc6bnVsbHB0cl0pOwogCiAgICAgW1tfY29u
dGVudFZpZXcgbGF5ZXJdIHNldEFuY2hvclBvaW50OkNHUG9pbnRaZXJvXTsKICAgICBbX2NvbnRl
bnRWaWV3IHNldEZyYW1lOmJvdW5kc107CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvaW9zL1NtYXJ0TWFnbmlmaWNhdGlvbkNvbnRyb2xsZXIuaCBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9pb3MvU21hcnRNYWduaWZpY2F0aW9uQ29udHJvbGxlci5oCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFiMWQwOTgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1NtYXJ0TWFnbmlmaWNhdGlvbkNvbnRyb2xsZXIuaApA
QCAtMCwwICsxLDY1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzLCAyMDE0IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisg
KiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICog
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBTbWFydE1hZ25pZmlj
YXRpb25Db250cm9sbGVyX2gKKyNkZWZpbmUgU21hcnRNYWduaWZpY2F0aW9uQ29udHJvbGxlcl9o
CisKKyNpZiBQTEFURk9STShJT1MpCisKKyNpbmNsdWRlICJNZXNzYWdlUmVjZWl2ZXIuaCIKKyNp
bmNsdWRlIDxXZWJDb3JlL0Zsb2F0UmVjdC5oPgorI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4K
KworT0JKQ19DTEFTUyBXS0NvbnRlbnRWaWV3OworT0JKQ19DTEFTUyBVSVNjcm9sbFZpZXc7CisK
K25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBXZWJQYWdlUHJveHk7CisKK2NsYXNzIFNtYXJ0
TWFnbmlmaWNhdGlvbkNvbnRyb2xsZXIgOiBwcml2YXRlIElQQzo6TWVzc2FnZVJlY2VpdmVyIHsK
KyAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShTbWFydE1hZ25pZmljYXRpb25Db250cm9sbGVyKTsK
K3B1YmxpYzoKKyAgICBTbWFydE1hZ25pZmljYXRpb25Db250cm9sbGVyKFdLQ29udGVudFZpZXcg
Kik7CisgICAgflNtYXJ0TWFnbmlmaWNhdGlvbkNvbnRyb2xsZXIoKTsKKworICAgIHZvaWQgaGFu
ZGxlU21hcnRNYWduaWZpY2F0aW9uR2VzdHVyZShXZWJDb3JlOjpGbG9hdFBvaW50IG9yaWdpbik7
CisgICAgdm9pZCBoYW5kbGVSZXNldE1hZ25pZmljYXRpb25HZXN0dXJlKFdlYkNvcmU6OkZsb2F0
UG9pbnQgb3JpZ2luKTsKKworcHJpdmF0ZToKKyAgICAvLyBJUEM6Ok1lc3NhZ2VSZWNlaXZlci4K
KyAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uKiwgSVBD
OjpNZXNzYWdlRGVjb2RlciYpIG92ZXJyaWRlOworCisgICAgdm9pZCBkaWRDb2xsZWN0R2VvbWV0
cnlGb3JTbWFydE1hZ25pZmljYXRpb25HZXN0dXJlKFdlYkNvcmU6OkZsb2F0UG9pbnQgb3JpZ2lu
LCBXZWJDb3JlOjpGbG9hdFJlY3QgcmVuZGVyUmVjdCwgV2ViQ29yZTo6RmxvYXRSZWN0IHZpc2li
bGVDb250ZW50Qm91bmRzLCBib29sIGlzUmVwbGFjZWRFbGVtZW50LCBib29sIGZyYW1lSGFuZGxl
c01hZ25pZmljYXRpb25HZXN0dXJlLCBkb3VibGUgdmlld3BvcnRNaW5pbXVtU2NhbGUsIGRvdWJs
ZSB2aWV3cG9ydE1heGltdW1TY2FsZSk7CisKKyAgICBXZWJQYWdlUHJveHkmIG1fd2ViUGFnZVBy
b3h5OworICAgIFdLQ29udGVudFZpZXcgKm1fY29udGVudFZpZXc7Cit9OworICAgIAorfSAvLyBu
YW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBQTEFURk9STShJT1MpCisKKyNlbmRpZiAvLyBT
bWFydE1hZ25pZmljYXRpb25Db250cm9sbGVyX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9pb3MvU21hcnRNYWduaWZpY2F0aW9uQ29udHJvbGxlci5tZXNzYWdlcy5pbiBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvU21hcnRNYWduaWZpY2F0aW9uQ29udHJvbGxl
ci5tZXNzYWdlcy5pbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kY2VlYjEz
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9TbWFydE1h
Z25pZmljYXRpb25Db250cm9sbGVyLm1lc3NhZ2VzLmluCkBAIC0wLDAgKzEsMjkgQEAKKyMgQ29w
eXJpZ2h0IChDKSAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworIyBhcmUgbWV0OgorIyAxLiAgUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyMgMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisjICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisjICAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorIwor
IyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnIEFORAorIyBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorIyBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0Ug
QVJFCisjIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SCisjIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKKyMgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IKKyMgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIKKyMgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwKKyMgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKKyMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworI2lmIFBMQVRGT1JNKElPUykKKwor
bWVzc2FnZXMgLT4gU21hcnRNYWduaWZpY2F0aW9uQ29udHJvbGxlciB7CisgICAgRGlkQ29sbGVj
dEdlb21ldHJ5Rm9yU21hcnRNYWduaWZpY2F0aW9uR2VzdHVyZShXZWJDb3JlOjpGbG9hdFBvaW50
IG9yaWdpbiwgV2ViQ29yZTo6RmxvYXRSZWN0IHJlbmRlclJlY3QsIFdlYkNvcmU6OkZsb2F0UmVj
dCB2aXNpYmxlQ29udGVudEJvdW5kcywgYm9vbCBpc1JlcGxhY2VkRWxlbWVudCwgYm9vbCBmcmFt
ZUhhbmRsZXNNYWduaWZpY2F0aW9uR2VzdHVyZSwgZG91YmxlIHZpZXdwb3J0TWluaW11bVNjYWxl
LCBkb3VibGUgdmlld3BvcnRNYXhpbXVtU2NhbGUpCit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9TbWFydE1hZ25pZmljYXRpb25Db250cm9sbGVy
Lm1tIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9TbWFydE1hZ25pZmljYXRpb25Db250
cm9sbGVyLm1tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU4OGQ2OTUKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1NtYXJ0TWFnbmlm
aWNhdGlvbkNvbnRyb2xsZXIubW0KQEAgLTAsMCArMSwxMTcgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1w
b3J0ICJjb25maWcuaCIKKyNpbXBvcnQgIlNtYXJ0TWFnbmlmaWNhdGlvbkNvbnRyb2xsZXIuaCIK
KworI2lmIFBMQVRGT1JNKElPUykKKworI2ltcG9ydCAiU21hcnRNYWduaWZpY2F0aW9uQ29udHJv
bGxlck1lc3NhZ2VzLmgiCisjaW1wb3J0ICJWaWV3R2VzdHVyZUdlb21ldHJ5Q29sbGVjdG9yTWVz
c2FnZXMuaCIKKyNpbXBvcnQgIldLQ29udGVudFZpZXcuaCIKKyNpbXBvcnQgIldLU2Nyb2xsVmll
dy5oIgorI2ltcG9ydCAiV2ViUGFnZUdyb3VwLmgiCisjaW1wb3J0ICJXZWJQYWdlTWVzc2FnZXMu
aCIKKyNpbXBvcnQgIldlYlBhZ2VQcm94eS5oIgorI2ltcG9ydCAiV2ViUHJvY2Vzc1Byb3h5Lmgi
CisjaW1wb3J0IDxVSUtpdC9VSUtpdC5oPgorI2ltcG9ydCA8VUlLaXQvVUlLaXRfUHJpdmF0ZS5o
PgorCit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKKworc3RhdGljIGNvbnN0IGZsb2F0IHNtYXJ0
TWFnbmlmaWNhdGlvblBhblNjcm9sbFRocmVzaG9sZFpvb21lZE91dCA9IDYwOworc3RhdGljIGNv
bnN0IGZsb2F0IHNtYXJ0TWFnbmlmaWNhdGlvblBhblNjcm9sbFRocmVzaG9sZElQaG9uZSA9IDEw
MDsKK3N0YXRpYyBjb25zdCBmbG9hdCBzbWFydE1hZ25pZmljYXRpb25QYW5TY3JvbGxUaHJlc2hv
bGRJUGFkID0gMTUwOworc3RhdGljIGNvbnN0IGZsb2F0IHNtYXJ0TWFnbmlmaWNhdGlvbkVsZW1l
bnRQYWRkaW5nID0gMC4wNTsKKworc3RhdGljIGNvbnN0IGRvdWJsZSBzbWFydE1hZ25pZmljYXRp
b25NYXhpbXVtU2NhbGUgPSAxLjY7CitzdGF0aWMgY29uc3QgZG91YmxlIHNtYXJ0TWFnbmlmaWNh
dGlvbk1pbmltdW1TY2FsZSA9IDA7CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitTbWFydE1hZ25p
ZmljYXRpb25Db250cm9sbGVyOjpTbWFydE1hZ25pZmljYXRpb25Db250cm9sbGVyKFdLQ29udGVu
dFZpZXcgKmNvbnRlbnRWaWV3KQorICAgIDogbV93ZWJQYWdlUHJveHkoKmNvbnRlbnRWaWV3LnBh
Z2UpCisgICAgLCBtX2NvbnRlbnRWaWV3KGNvbnRlbnRWaWV3KQoreworICAgIG1fd2ViUGFnZVBy
b3h5LnByb2Nlc3MoKS5hZGRNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OlNtYXJ0TWFnbmlmaWNh
dGlvbkNvbnRyb2xsZXI6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgbV93ZWJQYWdlUHJveHkucGFn
ZUlEKCksICp0aGlzKTsKK30KKworU21hcnRNYWduaWZpY2F0aW9uQ29udHJvbGxlcjo6flNtYXJ0
TWFnbmlmaWNhdGlvbkNvbnRyb2xsZXIoKQoreworICAgIG1fd2ViUGFnZVByb3h5LnByb2Nlc3Mo
KS5yZW1vdmVNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OlNtYXJ0TWFnbmlmaWNhdGlvbkNvbnRy
b2xsZXI6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgbV93ZWJQYWdlUHJveHkucGFnZUlEKCkpOwor
fQorCit2b2lkIFNtYXJ0TWFnbmlmaWNhdGlvbkNvbnRyb2xsZXI6OmhhbmRsZVNtYXJ0TWFnbmlm
aWNhdGlvbkdlc3R1cmUoRmxvYXRQb2ludCBvcmlnaW4pCit7CisgICAgbV93ZWJQYWdlUHJveHku
cHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OlZpZXdHZXN0dXJlR2VvbWV0cnlDb2xsZWN0b3I6OkNv
bGxlY3RHZW9tZXRyeUZvclNtYXJ0TWFnbmlmaWNhdGlvbkdlc3R1cmUob3JpZ2luKSwgbV93ZWJQ
YWdlUHJveHkucGFnZUlEKCkpOworfQorCit2b2lkIFNtYXJ0TWFnbmlmaWNhdGlvbkNvbnRyb2xs
ZXI6OmhhbmRsZVJlc2V0TWFnbmlmaWNhdGlvbkdlc3R1cmUoRmxvYXRQb2ludCBvcmlnaW4pCit7
CisgICAgW21fY29udGVudFZpZXcgX3pvb21PdXRXaXRoT3JpZ2luOm9yaWdpbl07Cit9CisKK3Zv
aWQgU21hcnRNYWduaWZpY2F0aW9uQ29udHJvbGxlcjo6ZGlkQ29sbGVjdEdlb21ldHJ5Rm9yU21h
cnRNYWduaWZpY2F0aW9uR2VzdHVyZShGbG9hdFBvaW50IG9yaWdpbiwgRmxvYXRSZWN0IHRhcmdl
dFJlY3QsIEZsb2F0UmVjdCB2aXNpYmxlQ29udGVudFJlY3QsIGJvb2wgaXNSZXBsYWNlZEVsZW1l
bnQsIGJvb2wgZnJhbWVIYW5kbGVzTWFnbmlmaWNhdGlvbkdlc3R1cmUsIGRvdWJsZSB2aWV3cG9y
dE1pbmltdW1TY2FsZSwgZG91YmxlIHZpZXdwb3J0TWF4aW11bVNjYWxlKQoreworICAgIGlmIChm
cmFtZUhhbmRsZXNNYWduaWZpY2F0aW9uR2VzdHVyZSkKKyAgICAgICAgcmV0dXJuOworCisgICAg
aWYgKHRhcmdldFJlY3QuaXNFbXB0eSgpKSB7CisgICAgICAgIC8vIEZJWE1FOiBJZiB3ZSBkb24n
dCB6b29tLCBzZW5kIHRoZSB0YXAgYWxvbmcgdG8gdGV4dCBzZWxlY3Rpb24gKHNlZSA8cmRhcjov
L3Byb2JsZW0vNjgxMDM0ND4pLgorICAgICAgICBbbV9jb250ZW50VmlldyBfem9vbU91dFdpdGhP
cmlnaW46b3JpZ2luXTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIHRhcmdldFJlY3Qu
aW5mbGF0ZVgoc21hcnRNYWduaWZpY2F0aW9uRWxlbWVudFBhZGRpbmcgKiB0YXJnZXRSZWN0Lndp
ZHRoKCkpOworICAgIHRhcmdldFJlY3QuaW5mbGF0ZVkoc21hcnRNYWduaWZpY2F0aW9uRWxlbWVu
dFBhZGRpbmcgKiB0YXJnZXRSZWN0LmhlaWdodCgpKTsKKworICAgIGRvdWJsZSBtYXhpbXVtU2Nh
bGUgPSBzdGQ6Om1pbih2aWV3cG9ydE1heGltdW1TY2FsZSwgc21hcnRNYWduaWZpY2F0aW9uTWF4
aW11bVNjYWxlKTsKKyAgICBkb3VibGUgbWluaW11bVNjYWxlID0gc3RkOjptYXgodmlld3BvcnRN
aW5pbXVtU2NhbGUsIHNtYXJ0TWFnbmlmaWNhdGlvbk1pbmltdW1TY2FsZSk7CisKKyAgICAvLyBG
SVhNRTogQ2hlY2sgaWYgdGV4dCBzZWxlY3Rpb24gd2FudHMgdG8gY29uc3VtZSB0aGUgZG91Ymxl
IHRhcCBiZWZvcmUgd2UgYXR0ZW1wdCBtYWduaWZpY2F0aW9uLgorCisgICAgLy8gSWYgdGhlIGNv
bnRlbnQgYWxyZWFkeSBmaXRzIGluIHRoZSBzY3JvbGwgdmlldyBhbmQgd2UncmUgYWxyZWFkeSB6
b29tZWQgaW4gdG8gdGhlIHRhcmdldCBzY2FsZSwKKyAgICAvLyBpdCBpcyBtb3N0IGxpa2VseSB0
aGF0IHRoZSB1c2VyIGludGVuZGVkIHRvIHNjcm9sbCwgc28gdXNlIGEgc21hbGwgZGlzdGFuY2Ug
dGhyZXNob2xkIHRvIGluaXRpYXRlIHBhbm5pbmcuCisgICAgQ0dGbG9hdCBtaW5pbXVtU2Nyb2xs
RGlzdGFuY2U7CisgICAgaWYgKFttX2NvbnRlbnRWaWV3IGJvdW5kc10uc2l6ZS53aWR0aCA8PSBt
X3dlYlBhZ2VQcm94eS51bm9ic2N1cmVkQ29udGVudFJlY3QoKS53aWR0aCgpKQorICAgICAgICBt
aW5pbXVtU2Nyb2xsRGlzdGFuY2UgPSBzbWFydE1hZ25pZmljYXRpb25QYW5TY3JvbGxUaHJlc2hv
bGRab29tZWRPdXQ7CisgICAgZWxzZSBpZiAoVUlDdXJyZW50VXNlckludGVyZmFjZUlkaW9tSXNQ
YWQoKSkKKyAgICAgICAgbWluaW11bVNjcm9sbERpc3RhbmNlID0gc21hcnRNYWduaWZpY2F0aW9u
UGFuU2Nyb2xsVGhyZXNob2xkSVBhZDsKKyAgICBlbHNlCisgICAgICAgIG1pbmltdW1TY3JvbGxE
aXN0YW5jZSA9IHNtYXJ0TWFnbmlmaWNhdGlvblBhblNjcm9sbFRocmVzaG9sZElQaG9uZTsKKwor
ICAgIC8vIEZvciByZXBsYWNlZCBlbGVtZW50cyBsaWtlIGltYWdlcywgd2Ugd2FudCB0byBmaXQg
dGhlIHdob2xlIGVsZW1lbnQKKyAgICAvLyBpbiB0aGUgdmlldywgc28gc2NhbGUgaXQgZG93biBl
bm91Z2ggdG8gbWFrZSBib3RoIGRpbWVuc2lvbnMgZml0IGlmIHBvc3NpYmxlLgorICAgIC8vIEZv
ciBvdGhlciBlbGVtZW50cywgdHJ5IHRvIGZpdCB0aGVtIGhvcml6b250YWxseS4KKyAgICBpZiAo
W21fY29udGVudFZpZXcgX3pvb21Ub1JlY3Q6dGFyZ2V0UmVjdCB3aXRoT3JpZ2luOm9yaWdpbiBm
aXRFbnRpcmVSZWN0OmlzUmVwbGFjZWRFbGVtZW50IG1pbmltdW1TY2FsZTptaW5pbXVtU2NhbGUg
bWF4aW11bVNjYWxlOm1heGltdW1TY2FsZSBtaW5pbXVtU2Nyb2xsRGlzdGFuY2U6bWluaW11bVNj
cm9sbERpc3RhbmNlXSkKKyAgICAgICAgcmV0dXJuOworCisgICAgLy8gRklYTUU6IElmIHdlIHN0
aWxsIGRvbid0IHpvb20sIHNlbmQgdGhlIHRhcCBhbG9uZyB0byB0ZXh0IHNlbGVjdGlvbiAoc2Vl
IDxyZGFyOi8vcHJvYmxlbS82ODEwMzQ0PikuCisgICAgW21fY29udGVudFZpZXcgX3pvb21PdXRX
aXRoT3JpZ2luOm9yaWdpbl07Cit9CisgICAgCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2Vu
ZGlmIC8vIFBMQVRGT1JNKElPUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9pb3MvV0tDb250ZW50Vmlldy5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9XS0Nv
bnRlbnRWaWV3LmgKaW5kZXggNWU5N2I2My4uMDNiN2FhYyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3LmgKKysrIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3LmgKQEAgLTMxLDYgKzMxLDcgQEAKICNpbXBvcnQg
PHd0Zi9SZXRhaW5QdHIuaD4KIAogQGNsYXNzIFdLQ29udGVudFZpZXc7CitAY2xhc3MgV0tXZWJW
aWV3OwogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIGNsYXNzIERyYXdpbmdBcmVhUHJveHk7CkBAIC00
MywyNiArNDQsMTcgQEAgY2xhc3MgV2ViU2VjdXJpdHlPcmlnaW47CiBzdHJ1Y3QgV2ViUGFnZUNv
bmZpZ3VyYXRpb247CiB9CiAKLUBwcm90b2NvbCBXS0NvbnRlbnRWaWV3RGVsZWdhdGUgPE5TT2Jq
ZWN0PgotLSAodm9pZCljb250ZW50Vmlld0RpZENvbW1pdExvYWRGb3JNYWluRnJhbWU6KFdLQ29u
dGVudFZpZXcgKiljb250ZW50VmlldzsKLS0gKHZvaWQpY29udGVudFZpZXc6KFdLQ29udGVudFZp
ZXcgKiljb250ZW50VmlldyBkaWRDb21taXRMYXllclRyZWU6KGNvbnN0IFdlYktpdDo6UmVtb3Rl
TGF5ZXJUcmVlVHJhbnNhY3Rpb24mKWxheWVyVHJlZVRyYW5zYWN0aW9uOwotCi0vLyBGSVhNRTog
VGhpcyBkb2Vzbid0IGJlbG9uZyBpbiBhICdkZWxlZ2F0ZScuCi0tIChSZXRhaW5QdHI8Q0dJbWFn
ZVJlZj4pdGFrZVZpZXdTbmFwc2hvdEZvckNvbnRlbnRWaWV3OihXS0NvbnRlbnRWaWV3ICopY29u
dGVudFZpZXc7Ci1AZW5kCi0KIEBpbnRlcmZhY2UgV0tDb250ZW50VmlldyA6IFVJVmlldyB7CiBA
cGFja2FnZQogICAgIFJlZlB0cjxXZWJLaXQ6OldlYlBhZ2VQcm94eT4gX3BhZ2U7CiB9CiAKIEBw
cm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSkgV0tCcm93c2luZ0NvbnRleHRDb250cm9sbGVy
ICpicm93c2luZ0NvbnRleHRDb250cm9sbGVyOwotQHByb3BlcnR5IChub25hdG9taWMsIGFzc2ln
bikgaWQgPFdLQ29udGVudFZpZXdEZWxlZ2F0ZT4gZGVsZWdhdGU7CiAKIEBwcm9wZXJ0eSAobm9u
YXRvbWljLCByZWFkb25seSkgV2ViS2l0OjpXZWJQYWdlUHJveHkqIHBhZ2U7CiBAcHJvcGVydHkg
KG5vbmF0b21pYywgcmVhZG9ubHkpIEJPT0wgaXNBc3Npc3RpbmdOb2RlOwogCi0tIChpbnN0YW5j
ZXR5cGUpaW5pdFdpdGhGcmFtZTooQ0dSZWN0KWZyYW1lIGNvbnRleHQ6KFdlYktpdDo6V2ViQ29u
dGV4dCYpY29udGV4dCBjb25maWd1cmF0aW9uOihXZWJLaXQ6OldlYlBhZ2VDb25maWd1cmF0aW9u
KXdlYlBhZ2VDb25maWd1cmF0aW9uOworLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoRnJhbWU6KENH
UmVjdClmcmFtZSBjb250ZXh0OihXZWJLaXQ6OldlYkNvbnRleHQmKWNvbnRleHQgY29uZmlndXJh
dGlvbjooV2ViS2l0OjpXZWJQYWdlQ29uZmlndXJhdGlvbil3ZWJQYWdlQ29uZmlndXJhdGlvbiB3
ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3OwogCiAtICh2b2lkKXNldE1pbmltdW1TaXplOihD
R1NpemUpc2l6ZTsKIC0gKHZvaWQpc2V0TWluaW11bUxheW91dFNpemU6KENHU2l6ZSlzaXplOwpA
QCAtODYsNCArNzgsNyBAQCBzdHJ1Y3QgV2ViUGFnZUNvbmZpZ3VyYXRpb247CiAKIC0gKFJldGFp
blB0cjxDR0ltYWdlUmVmPilfdGFrZVZpZXdTbmFwc2hvdDsKIAorLSAoQk9PTClfem9vbVRvUmVj
dDooQ0dSZWN0KXRhcmdldFJlY3Qgd2l0aE9yaWdpbjooQ0dQb2ludClvcmlnaW4gZml0RW50aXJl
UmVjdDooQk9PTClmaXRFbnRpcmVSZWN0IG1pbmltdW1TY2FsZTooZG91YmxlKW1pbmltdW1TY2Fs
ZSBtYXhpbXVtU2NhbGU6KGRvdWJsZSltYXhpbXVtU2NhbGUgbWluaW11bVNjcm9sbERpc3RhbmNl
OihDR0Zsb2F0KW1pbmltdW1TY3JvbGxEaXN0YW5jZTsKKy0gKHZvaWQpX3pvb21PdXRXaXRoT3Jp
Z2luOihDR1BvaW50KW9yaWdpbjsKKwogQGVuZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3Lm1tIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L2lvcy9XS0NvbnRlbnRWaWV3Lm1tCmluZGV4IDVmODlmZmMuLjQzNTU5MDcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlldy5tbQorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXcubW0KQEAgLTI5LDYgKzI5LDcg
QEAKICNpbXBvcnQgIlBhZ2VDbGllbnRJbXBsSU9TLmgiCiAjaW1wb3J0ICJSZW1vdGVMYXllclRy
ZWVEcmF3aW5nQXJlYVByb3h5LmgiCiAjaW1wb3J0ICJSZW1vdGVTY3JvbGxpbmdDb29yZGluYXRv
clByb3h5LmgiCisjaW1wb3J0ICJTbWFydE1hZ25pZmljYXRpb25Db250cm9sbGVyLmgiCiAjaW1w
b3J0ICJXZWJLaXQySW5pdGlhbGl6ZS5oIgogI2ltcG9ydCAiV0tCcm93c2luZ0NvbnRleHRDb250
cm9sbGVySW50ZXJuYWwuaCIKICNpbXBvcnQgIldLQnJvd3NpbmdDb250ZXh0R3JvdXBQcml2YXRl
LmgiCkBAIC0zNiw2ICszNyw3IEBACiAjaW1wb3J0ICJXS1ByZWZlcmVuY2VzSW50ZXJuYWwuaCIK
ICNpbXBvcnQgIldLUHJvY2Vzc0dyb3VwUHJpdmF0ZS5oIgogI2ltcG9ydCAiV0tQcm9jZXNzUG9v
bEludGVybmFsLmgiCisjaW1wb3J0ICJXS1dlYlZpZXdJbnRlcm5hbC5oIgogI2ltcG9ydCAiV0tX
ZWJWaWV3Q29uZmlndXJhdGlvbi5oIgogI2ltcG9ydCAiV2ViQ29udGV4dC5oIgogI2ltcG9ydCAi
V2ViRnJhbWVQcm94eS5oIgpAQCAtNjAsOSArNjIsMTEgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYktp
dDsKICAgICBSZXRhaW5QdHI8V0tCcm93c2luZ0NvbnRleHRDb250cm9sbGVyPiBfYnJvd3NpbmdD
b250ZXh0Q29udHJvbGxlcjsKIAogICAgIFJldGFpblB0cjxVSVZpZXc+IF9yb290Q29udGVudFZp
ZXc7CisKKyAgICBXS1dlYlZpZXcgKl93ZWJWaWV3OwogfQogCi0tIChpbnN0YW5jZXR5cGUpaW5p
dFdpdGhGcmFtZTooQ0dSZWN0KWZyYW1lIGNvbnRleHQ6KFdlYktpdDo6V2ViQ29udGV4dCYpY29u
dGV4dCBjb25maWd1cmF0aW9uOihXZWJLaXQ6OldlYlBhZ2VDb25maWd1cmF0aW9uKXdlYlBhZ2VD
b25maWd1cmF0aW9uCistIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhGcmFtZTooQ0dSZWN0KWZyYW1l
IGNvbnRleHQ6KFdlYktpdDo6V2ViQ29udGV4dCYpY29udGV4dCBjb25maWd1cmF0aW9uOihXZWJL
aXQ6OldlYlBhZ2VDb25maWd1cmF0aW9uKXdlYlBhZ2VDb25maWd1cmF0aW9uIHdlYlZpZXc6KFdL
V2ViVmlldyAqKXdlYlZpZXcKIHsKICAgICBpZiAoIShzZWxmID0gW3N1cGVyIGluaXRXaXRoRnJh
bWU6ZnJhbWVdKSkKICAgICAgICAgcmV0dXJuIG5pbDsKQEAgLTc3LDYgKzgxLDggQEAgdXNpbmcg
bmFtZXNwYWNlIFdlYktpdDsKICAgICBfcGFnZS0+c2V0VXNlRml4ZWRMYXlvdXQodHJ1ZSk7CiAg
ICAgX3BhZ2UtPnNldERlbGVnYXRlc1Njcm9sbGluZyh0cnVlKTsKIAorICAgIF93ZWJWaWV3ID0g
d2ViVmlldzsKKwogICAgIFdlYkNvbnRleHQ6OnN0YXRpc3RpY3MoKS53a1ZpZXdDb3VudCsrOwog
CiAgICAgX3Jvb3RDb250ZW50VmlldyA9IGFkb3B0TlMoW1tVSVZpZXcgYWxsb2NdIGluaXRdKTsK
QEAgLTI0MSw5ICsyNDcsNyBAQCB1c2luZyBuYW1lc3BhY2UgV2ViS2l0OwogCiAtICh2b2lkKV9k
aWRDb21taXRMb2FkRm9yTWFpbkZyYW1lCiB7Ci0gICAgaWYgKFtfZGVsZWdhdGUgcmVzcG9uZHNU
b1NlbGVjdG9yOkBzZWxlY3Rvcihjb250ZW50Vmlld0RpZENvbW1pdExvYWRGb3JNYWluRnJhbWU6
KV0pCi0gICAgICAgIFtfZGVsZWdhdGUgY29udGVudFZpZXdEaWRDb21taXRMb2FkRm9yTWFpbkZy
YW1lOnNlbGZdOwotCisgICAgW193ZWJWaWV3IF9kaWRDb21taXRMb2FkRm9yTWFpbkZyYW1lXTsK
ICAgICBbc2VsZiBfc3RvcEFzc2lzdGluZ05vZGVdOwogfQogCkBAIC0yNTQsOCArMjU4LDcgQEAg
dXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKICAgICBbc2VsZiBzZXRCb3VuZHM6e0NHUG9pbnRaZXJv
LCBjb250ZW50c1NpemV9XTsKICAgICBbX3Jvb3RDb250ZW50VmlldyBzZXRGcmFtZTpDR1JlY3RN
YWtlKDAsIDAsIGNvbnRlbnRzU2l6ZS53aWR0aCwgY29udGVudHNTaXplLmhlaWdodCldOwogCi0g
ICAgaWYgKFtfZGVsZWdhdGUgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3Rvcihjb250ZW50Vmll
dzpkaWRDb21taXRMYXllclRyZWU6KV0pCi0gICAgICAgIFtfZGVsZWdhdGUgY29udGVudFZpZXc6
c2VsZiBkaWRDb21taXRMYXllclRyZWU6bGF5ZXJUcmVlVHJhbnNhY3Rpb25dOworICAgIFtfd2Vi
VmlldyBfZGlkQ29tbWl0TGF5ZXJUcmVlOmxheWVyVHJlZVRyYW5zYWN0aW9uXTsKIH0KIAogLSAo
dm9pZClfc2V0QWNjZWxlcmF0ZWRDb21wb3NpdGluZ1Jvb3RMYXllcjooQ0FMYXllciAqKXJvb3RM
YXllcgpAQCAtMjcyLDcgKzI3NSwxNyBAQCB1c2luZyBuYW1lc3BhY2UgV2ViS2l0OwogCiAtIChS
ZXRhaW5QdHI8Q0dJbWFnZVJlZj4pX3Rha2VWaWV3U25hcHNob3QKIHsKLSAgICByZXR1cm4gW19k
ZWxlZ2F0ZSB0YWtlVmlld1NuYXBzaG90Rm9yQ29udGVudFZpZXc6c2VsZl07CisgICAgcmV0dXJu
IFtfd2ViVmlldyBfdGFrZVZpZXdTbmFwc2hvdF07Cit9CisKKy0gKEJPT0wpX3pvb21Ub1JlY3Q6
KENHUmVjdCl0YXJnZXRSZWN0IHdpdGhPcmlnaW46KENHUG9pbnQpb3JpZ2luIGZpdEVudGlyZVJl
Y3Q6KEJPT0wpZml0RW50aXJlUmVjdCBtaW5pbXVtU2NhbGU6KGRvdWJsZSltaW5pbXVtU2NhbGUg
bWF4aW11bVNjYWxlOihkb3VibGUpbWF4aW11bVNjYWxlIG1pbmltdW1TY3JvbGxEaXN0YW5jZToo
Q0dGbG9hdCltaW5pbXVtU2Nyb2xsRGlzdGFuY2UKK3sKKyAgICByZXR1cm4gW193ZWJWaWV3IF96
b29tVG9SZWN0OnRhcmdldFJlY3Qgd2l0aE9yaWdpbjpvcmlnaW4gZml0RW50aXJlUmVjdDpmaXRF
bnRpcmVSZWN0IG1pbmltdW1TY2FsZTptaW5pbXVtU2NhbGUgbWF4aW11bVNjYWxlOm1heGltdW1T
Y2FsZSBtaW5pbXVtU2Nyb2xsRGlzdGFuY2U6bWluaW11bVNjcm9sbERpc3RhbmNlXTsKK30KKwor
LSAodm9pZClfem9vbU91dFdpdGhPcmlnaW46KENHUG9pbnQpb3JpZ2luCit7CisgICAgcmV0dXJu
IFtfd2ViVmlldyBfem9vbU91dFdpdGhPcmlnaW46b3JpZ2luXTsKIH0KIAogQGVuZApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rp
b24uaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0
aW9uLmgKaW5kZXggNGM0NjU0NC4uZDA4Y2FkOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24uaAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5oCkBAIC00Niw2ICs0
Niw3IEBAIGNsYXNzIEludFNpemU7CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogY2xhc3MgTmF0aXZl
V2ViVG91Y2hFdmVudDsKK2NsYXNzIFNtYXJ0TWFnbmlmaWNhdGlvbkNvbnRyb2xsZXI7CiBjbGFz
cyBXZWJQYWdlUHJveHk7CiBzdHJ1Y3QgQXNzaXN0ZWROb2RlSW5mb3JtYXRpb247CiBzdHJ1Y3Qg
SW50ZXJhY3Rpb25JbmZvcm1hdGlvbkF0UG9zaXRpb247CkBAIC05Myw2ICs5NCw4IEBAIHN0cnVj
dCBXS0F1dG9Db3JyZWN0aW9uRGF0YSB7CiAgICAgUmV0YWluUHRyPE5TU3RyaW5nPiBfbWFya2Vk
VGV4dDsKICAgICBSZXRhaW5QdHI8V0tBY3Rpb25TaGVldEFzc2lzdGFudD4gX2FjdGlvblNoZWV0
QXNzaXN0YW50OwogCisgICAgc3RkOjp1bmlxdWVfcHRyPFdlYktpdDo6U21hcnRNYWduaWZpY2F0
aW9uQ29udHJvbGxlcj4gX3NtYXJ0TWFnbmlmaWNhdGlvbkNvbnRyb2xsZXI7CisKICAgICBpZCA8
VUlUZXh0SW5wdXREZWxlZ2F0ZT4gX2lucHV0RGVsZWdhdGU7CiAKICAgICB1aW50NjRfdCBfbGF0
ZXN0VGFwSGlnaGxpZ2h0SUQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
aW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbSBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tCmluZGV4IGQyOWM1MjguLmZmMTNmNTYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0lu
dGVyYWN0aW9uLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50
Vmlld0ludGVyYWN0aW9uLm1tCkBAIC0yOCw2ICsyOCw3IEBACiAKICNpbXBvcnQgIk5hdGl2ZVdl
YktleWJvYXJkRXZlbnQuaCIKICNpbXBvcnQgIk5hdGl2ZVdlYlRvdWNoRXZlbnQuaCIKKyNpbXBv
cnQgIlNtYXJ0TWFnbmlmaWNhdGlvbkNvbnRyb2xsZXIuaCIKICNpbXBvcnQgIldlYkV2ZW50Lmgi
CiAjaW1wb3J0ICJXZWJJT1NFdmVudEZhY3RvcnkuaCIKICNpbXBvcnQgIldlYlBhZ2VNZXNzYWdl
cy5oIgpAQCAtMTQ4LDYgKzE0OSwxMiBAQCBzdGF0aWMgY29uc3QgZmxvYXQgdGFwQW5kSG9sZERl
bGF5ICA9IDAuNzU7CiAgICAgW3NlbGYgYWRkR2VzdHVyZVJlY29nbml6ZXI6X2RvdWJsZVRhcEdl
c3R1cmVSZWNvZ25pemVyLmdldCgpXTsKICAgICBbX3NpbmdsZVRhcEdlc3R1cmVSZWNvZ25pemVy
IHJlcXVpcmVPdGhlckdlc3R1cmVUb0ZhaWw6X2RvdWJsZVRhcEdlc3R1cmVSZWNvZ25pemVyLmdl
dCgpXTsKIAorICAgIF90d29GaW5nZXJEb3VibGVUYXBHZXN0dXJlUmVjb2duaXplciA9IGFkb3B0
TlMoW1tVSVRhcEdlc3R1cmVSZWNvZ25pemVyIGFsbG9jXSBpbml0V2l0aFRhcmdldDpzZWxmIGFj
dGlvbjpAc2VsZWN0b3IoX3R3b0ZpbmdlckRvdWJsZVRhcFJlY29nbml6ZWQ6KV0pOworICAgIFtf
dHdvRmluZ2VyRG91YmxlVGFwR2VzdHVyZVJlY29nbml6ZXIgc2V0TnVtYmVyT2ZUYXBzUmVxdWly
ZWQ6Ml07CisgICAgW190d29GaW5nZXJEb3VibGVUYXBHZXN0dXJlUmVjb2duaXplciBzZXROdW1i
ZXJPZlRvdWNoZXNSZXF1aXJlZDoyXTsKKyAgICBbX3R3b0ZpbmdlckRvdWJsZVRhcEdlc3R1cmVS
ZWNvZ25pemVyIHNldERlbGVnYXRlOnNlbGZdOworICAgIFtzZWxmIGFkZEdlc3R1cmVSZWNvZ25p
emVyOl90d29GaW5nZXJEb3VibGVUYXBHZXN0dXJlUmVjb2duaXplci5nZXQoKV07CisKICAgICBf
aGlnaGxpZ2h0TG9uZ1ByZXNzR2VzdHVyZVJlY29nbml6ZXIgPSBhZG9wdE5TKFtbX1VJV2ViSGln
aGxpZ2h0TG9uZ1ByZXNzR2VzdHVyZVJlY29nbml6ZXIgYWxsb2NdIGluaXRXaXRoVGFyZ2V0OnNl
bGYgYWN0aW9uOkBzZWxlY3RvcihfaGlnaGxpZ2h0TG9uZ1ByZXNzUmVjb2duaXplZDopXSk7CiAg
ICAgW19oaWdobGlnaHRMb25nUHJlc3NHZXN0dXJlUmVjb2duaXplciBzZXREZWxheTpoaWdobGln
aHREZWxheV07CiAgICAgW19oaWdobGlnaHRMb25nUHJlc3NHZXN0dXJlUmVjb2duaXplciBzZXRE
ZWxlZ2F0ZTpzZWxmXTsKQEAgLTE3MSw2ICsxNzgsNyBAQCBzdGF0aWMgY29uc3QgZmxvYXQgdGFw
QW5kSG9sZERlbGF5ICA9IDAuNzU7CiAgICAgW3NlbGYgdXNlU2VsZWN0aW9uQXNzaXN0YW50V2l0
aE1vZGU6VUlXZWJTZWxlY3Rpb25Nb2RlV2ViXTsKICAgICAKICAgICBfYWN0aW9uU2hlZXRBc3Np
c3RhbnQgPSBhZG9wdE5TKFtbV0tBY3Rpb25TaGVldEFzc2lzdGFudCBhbGxvY10gaW5pdFdpdGhW
aWV3OnNlbGZdKTsKKyAgICBfc21hcnRNYWduaWZpY2F0aW9uQ29udHJvbGxlciA9IHN0ZDo6bWFr
ZV91bmlxdWU8U21hcnRNYWduaWZpY2F0aW9uQ29udHJvbGxlcj4oc2VsZik7CiB9CiAKIC0gKHZv
aWQpY2xlYW51cEludGVyYWN0aW9uCkBAIC02MTAsMTIgKzYxOCwxMiBAQCBzdGF0aWMgaW5saW5l
IGJvb2wgaXNTYW1lUGFpcihVSUdlc3R1cmVSZWNvZ25pemVyICphLCBVSUdlc3R1cmVSZWNvZ25p
emVyICpiLCBVSQogCiAtICh2b2lkKV9kb3VibGVUYXBSZWNvZ25pemVkOihVSVRhcEdlc3R1cmVS
ZWNvZ25pemVyICopZ2VzdHVyZVJlY29nbml6ZXIKIHsKLSAgICAvLyBGSVhNRTogQWRkIGltcGxl
bWVudGF0aW9uLgorICAgIF9zbWFydE1hZ25pZmljYXRpb25Db250cm9sbGVyLT5oYW5kbGVTbWFy
dE1hZ25pZmljYXRpb25HZXN0dXJlKGdlc3R1cmVSZWNvZ25pemVyLmxvY2F0aW9uKTsKIH0KIAog
LSAodm9pZClfdHdvRmluZ2VyRG91YmxlVGFwUmVjb2duaXplZDooVUlUYXBHZXN0dXJlUmVjb2du
aXplciAqKWdlc3R1cmVSZWNvZ25pemVyCiB7Ci0gICAgLy8gRklYTUU6IEFkZCBpbXBsZW1lbnRh
dGlvbi4KKyAgICBfc21hcnRNYWduaWZpY2F0aW9uQ29udHJvbGxlci0+aGFuZGxlUmVzZXRNYWdu
aWZpY2F0aW9uR2VzdHVyZShnZXN0dXJlUmVjb2duaXplci5sb2NhdGlvbik7CiB9CiAKIC0gKHZv
aWQpX3R3b0ZpbmdlclBhblJlY29nbml6ZWQ6KFVJUGFuR2VzdHVyZVJlY29nbml6ZXIgKilnZXN0
dXJlUmVjb2duaXplcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9W
aWV3R2VzdHVyZUNvbnRyb2xsZXIuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvVmll
d0dlc3R1cmVDb250cm9sbGVyLmgKaW5kZXggYzY0OWM2MS4uYTdhMGU4NCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9WaWV3R2VzdHVyZUNvbnRyb2xsZXIuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1ZpZXdHZXN0dXJlQ29udHJvbGxlci5oCkBA
IC0xMDQsNyArMTA0LDcgQEAgcHJpdmF0ZToKICNpZiAhUExBVEZPUk0oSU9TKQogICAgIC8vIE1l
c3NhZ2UgaGFuZGxlcnMuCiAgICAgdm9pZCBkaWRDb2xsZWN0R2VvbWV0cnlGb3JNYWduaWZpY2F0
aW9uR2VzdHVyZShXZWJDb3JlOjpGbG9hdFJlY3QgdmlzaWJsZUNvbnRlbnRCb3VuZHMsIGJvb2wg
ZnJhbWVIYW5kbGVzTWFnbmlmaWNhdGlvbkdlc3R1cmUpOwotICAgIHZvaWQgZGlkQ29sbGVjdEdl
b21ldHJ5Rm9yU21hcnRNYWduaWZpY2F0aW9uR2VzdHVyZShXZWJDb3JlOjpGbG9hdFBvaW50IG9y
aWdpbiwgV2ViQ29yZTo6RmxvYXRSZWN0IHJlbmRlclJlY3QsIFdlYkNvcmU6OkZsb2F0UmVjdCB2
aXNpYmxlQ29udGVudEJvdW5kcywgYm9vbCBpc1JlcGxhY2VkRWxlbWVudCwgYm9vbCBmcmFtZUhh
bmRsZXNNYWduaWZpY2F0aW9uR2VzdHVyZSk7CisgICAgdm9pZCBkaWRDb2xsZWN0R2VvbWV0cnlG
b3JTbWFydE1hZ25pZmljYXRpb25HZXN0dXJlKFdlYkNvcmU6OkZsb2F0UG9pbnQgb3JpZ2luLCBX
ZWJDb3JlOjpGbG9hdFJlY3QgcmVuZGVyUmVjdCwgV2ViQ29yZTo6RmxvYXRSZWN0IHZpc2libGVD
b250ZW50Qm91bmRzLCBib29sIGlzUmVwbGFjZWRFbGVtZW50LCBib29sIGZyYW1lSGFuZGxlc01h
Z25pZmljYXRpb25HZXN0dXJlLCBkb3VibGUgdmlld3BvcnRNaW5pbXVtU2NhbGUsIGRvdWJsZSB2
aWV3cG9ydE1heGltdW1TY2FsZSk7CiAgICAgdm9pZCBkaWRIaXRSZW5kZXJUcmVlU2l6ZVRocmVz
aG9sZCgpOwogCiAgICAgdm9pZCBlbmRNYWduaWZpY2F0aW9uR2VzdHVyZSgpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9WaWV3R2VzdHVyZUNvbnRyb2xsZXIubWVz
c2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1ZpZXdHZXN0dXJlQ29udHJv
bGxlci5tZXNzYWdlcy5pbgppbmRleCBhMGI1OGMwLi42NjA0N2Q5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1ZpZXdHZXN0dXJlQ29udHJvbGxlci5tZXNzYWdlcy5p
bgorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1ZpZXdHZXN0dXJlQ29udHJvbGxl
ci5tZXNzYWdlcy5pbgpAQCAtMjMsNyArMjMsNyBAQAogbWVzc2FnZXMgLT4gVmlld0dlc3R1cmVD
b250cm9sbGVyIHsKICNpZiAhUExBVEZPUk0oSU9TKQogICAgIERpZENvbGxlY3RHZW9tZXRyeUZv
ck1hZ25pZmljYXRpb25HZXN0dXJlKFdlYkNvcmU6OkZsb2F0UmVjdCB2aXNpYmxlQ29udGVudEJv
dW5kcywgYm9vbCBmcmFtZUhhbmRsZXNNYWduaWZpY2F0aW9uR2VzdHVyZSkKLSAgICBEaWRDb2xs
ZWN0R2VvbWV0cnlGb3JTbWFydE1hZ25pZmljYXRpb25HZXN0dXJlKFdlYkNvcmU6OkZsb2F0UG9p
bnQgb3JpZ2luLCBXZWJDb3JlOjpGbG9hdFJlY3QgcmVuZGVyUmVjdCwgV2ViQ29yZTo6RmxvYXRS
ZWN0IHZpc2libGVDb250ZW50Qm91bmRzLCBib29sIGlzUmVwbGFjZWRFbGVtZW50LCBib29sIGZy
YW1lSGFuZGxlc01hZ25pZmljYXRpb25HZXN0dXJlKQorICAgIERpZENvbGxlY3RHZW9tZXRyeUZv
clNtYXJ0TWFnbmlmaWNhdGlvbkdlc3R1cmUoV2ViQ29yZTo6RmxvYXRQb2ludCBvcmlnaW4sIFdl
YkNvcmU6OkZsb2F0UmVjdCByZW5kZXJSZWN0LCBXZWJDb3JlOjpGbG9hdFJlY3QgdmlzaWJsZUNv
bnRlbnRCb3VuZHMsIGJvb2wgaXNSZXBsYWNlZEVsZW1lbnQsIGJvb2wgZnJhbWVIYW5kbGVzTWFn
bmlmaWNhdGlvbkdlc3R1cmUsIGRvdWJsZSB2aWV3cG9ydE1pbmltdW1TY2FsZSwgZG91YmxlIHZp
ZXdwb3J0TWF4aW11bVNjYWxlKQogICAgIERpZEhpdFJlbmRlclRyZWVTaXplVGhyZXNob2xkKCkK
ICNlbmRpZgogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9WaWV3
R2VzdHVyZUNvbnRyb2xsZXJNYWMubW0gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1Zp
ZXdHZXN0dXJlQ29udHJvbGxlck1hYy5tbQppbmRleCBhMmU0MjFlLi41NDgzMzAxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1ZpZXdHZXN0dXJlQ29udHJvbGxlck1h
Yy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1ZpZXdHZXN0dXJlQ29udHJv
bGxlck1hYy5tbQpAQCAtMjA1LDcgKzIwNSw3IEBAIHN0YXRpYyBmbG9hdCBtYXhpbXVtUmVjdGFu
Z2xlQ29tcG9uZW50RGVsdGEoRmxvYXRSZWN0IGEsIEZsb2F0UmVjdCBiKQogICAgIHJldHVybiBz
dGQ6Om1heChmYWJzKGEueCgpIC0gYi54KCkpLCBzdGQ6Om1heChmYWJzKGEueSgpIC0gYi55KCkp
LCBzdGQ6Om1heChmYWJzKGEud2lkdGgoKSAtIGIud2lkdGgoKSksIGZhYnMoYS5oZWlnaHQoKSAt
IGIuaGVpZ2h0KCkpKSkpOwogfQogCi12b2lkIFZpZXdHZXN0dXJlQ29udHJvbGxlcjo6ZGlkQ29s
bGVjdEdlb21ldHJ5Rm9yU21hcnRNYWduaWZpY2F0aW9uR2VzdHVyZShGbG9hdFBvaW50IG9yaWdp
biwgRmxvYXRSZWN0IHJlbmRlclJlY3QsIEZsb2F0UmVjdCB2aXNpYmxlQ29udGVudFJlY3QsIGJv
b2wgaXNSZXBsYWNlZEVsZW1lbnQsIGJvb2wgZnJhbWVIYW5kbGVzTWFnbmlmaWNhdGlvbkdlc3R1
cmUpCit2b2lkIFZpZXdHZXN0dXJlQ29udHJvbGxlcjo6ZGlkQ29sbGVjdEdlb21ldHJ5Rm9yU21h
cnRNYWduaWZpY2F0aW9uR2VzdHVyZShGbG9hdFBvaW50IG9yaWdpbiwgRmxvYXRSZWN0IHJlbmRl
clJlY3QsIEZsb2F0UmVjdCB2aXNpYmxlQ29udGVudFJlY3QsIGJvb2wgaXNSZXBsYWNlZEVsZW1l
bnQsIGJvb2wgZnJhbWVIYW5kbGVzTWFnbmlmaWNhdGlvbkdlc3R1cmUsIGRvdWJsZSB2aWV3cG9y
dE1pbmltdW1TY2FsZSwgZG91YmxlIHZpZXdwb3J0TWF4aW11bVNjYWxlKQogewogICAgIGlmIChm
cmFtZUhhbmRsZXNNYWduaWZpY2F0aW9uR2VzdHVyZSkKICAgICAgICAgcmV0dXJuOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIv
U291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDdj
ZWZmYTMuLjJiNmMzMWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYktpdDIueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKQEAgLTUyMCw4ICs1MjAsMTIgQEAKIAkJMkRBOTQ0QkExODg0RUEz
QzAwRUQ4NkRCIC8qIFdlYlBhZ2VJT1MubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAyREE5NDRCNjE4ODRFQTM1MDBFRDg2REIgLyogV2ViUGFnZUlPUy5t
bSAqLzsgfTsKIAkJMkRBOTQ0QkQxODg1MTFFNzAwRUQ4NkRCIC8qIE5ldHdvcmtQcm9jZXNzSU9T
Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkRBOTQ0
QkMxODg1MTFFNzAwRUQ4NkRCIC8qIE5ldHdvcmtQcm9jZXNzSU9TLm1tICovOyB9OwogCQkyREFD
RTY0RTE4QURCRkYwMDBFNENBNzYgLyogV0tUaHVtYm5haWxWaWV3SW50ZXJuYWwuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJEQUNFNjREMThBREJGRjAw
MEU0Q0E3NiAvKiBXS1RodW1ibmFpbFZpZXdJbnRlcm5hbC5oICovOyB9OworCQkyREFGMDZENjE4
QkQxQTQ3MDA4MUNFQjEgLyogU21hcnRNYWduaWZpY2F0aW9uQ29udHJvbGxlci5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkRBRjA2RDQxOEJEMUE0NzAw
ODFDRUIxIC8qIFNtYXJ0TWFnbmlmaWNhdGlvbkNvbnRyb2xsZXIuaCAqLzsgfTsKKwkJMkRBRjA2
RDcxOEJEMUE0NzAwODFDRUIxIC8qIFNtYXJ0TWFnbmlmaWNhdGlvbkNvbnRyb2xsZXIubW0gaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyREFGMDZENTE4QkQx
QTQ3MDA4MUNFQjEgLyogU21hcnRNYWduaWZpY2F0aW9uQ29udHJvbGxlci5tbSAqLzsgfTsKIAkJ
MkRERTBBRkExODI5OENDOTAwRjk3RUFBIC8qIFJlbW90ZUxheWVyVHJlZVByb3BlcnR5QXBwbGll
ci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkRERTBB
RjgxODI5OENDOTAwRjk3RUFBIC8qIFJlbW90ZUxheWVyVHJlZVByb3BlcnR5QXBwbGllci5oICov
OyB9OwogCQkyRERFMEFGQjE4Mjk4Q0M5MDBGOTdFQUEgLyogUmVtb3RlTGF5ZXJUcmVlUHJvcGVy
dHlBcHBsaWVyLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMkRERTBBRjkxODI5OENDOTAwRjk3RUFBIC8qIFJlbW90ZUxheWVyVHJlZVByb3BlcnR5QXBw
bGllci5tbSAqLzsgfTsKKwkJMkRFNjk0M0QxOEJEMkE2ODAwNUMxNUU1IC8qIFNtYXJ0TWFnbmlm
aWNhdGlvbkNvbnRyb2xsZXJNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkRFNjk0M0IxOEJEMkE2ODAwNUMxNUU1IC8qIFNt
YXJ0TWFnbmlmaWNhdGlvbkNvbnRyb2xsZXJNZXNzYWdlUmVjZWl2ZXIuY3BwICovOyB9OworCQky
REU2OTQzRTE4QkQyQTY4MDA1QzE1RTUgLyogU21hcnRNYWduaWZpY2F0aW9uQ29udHJvbGxlck1l
c3NhZ2VzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAy
REU2OTQzQzE4QkQyQTY4MDA1QzE1RTUgLyogU21hcnRNYWduaWZpY2F0aW9uQ29udHJvbGxlck1l
c3NhZ2VzLmggKi87IH07CiAJCTJERjk1OTNCMThBNDI0MTIwMDk3ODVBMSAvKiBWaWV3R2VzdHVy
ZUNvbnRyb2xsZXJJT1MubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAyREY5NTkzNDE4QTQyNDEyMDA5Nzg1QTEgLyogVmlld0dlc3R1cmVDb250cm9sbGVy
SU9TLm1tICovOyB9OwogCQkzMTA5OTk3MzE0NkM3NUEyMDAyOURFQjkgLyogV2ViTm90aWZpY2F0
aW9uQ2xpZW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDMxMDk5OTcxMTQ2Qzc1OUIwMDI5REVCOSAvKiBXZWJOb3RpZmljYXRpb25DbGllbnQuY3Bw
ICovOyB9OwogCQkzMTA5OTlDNzE0NkM5RTNEMDAyOURFQjkgLyogV2ViTm90aWZpY2F0aW9uQ2xp
ZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzMTA5
OTk2ODE0NkM3MUY1MDAyOURFQjkgLyogV2ViTm90aWZpY2F0aW9uQ2xpZW50LmggKi87IH07CkBA
IC0yMjU5LDggKzIyNjMsMTMgQEAKIAkJMkRBOTQ0QjYxODg0RUEzNTAwRUQ4NkRCIC8qIFdlYlBh
Z2VJT1MubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IG5hbWUgPSBXZWJQYWdl
SU9TLm1tOyBwYXRoID0gaW9zL1dlYlBhZ2VJT1MubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTJEQTk0NEJDMTg4NTExRTcwMEVEODZEQiAvKiBOZXR3b3JrUHJvY2Vzc0lPUy5tbSAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgbmFtZSA9IE5ldHdvcmtQcm9jZXNzSU9T
Lm1tOyBwYXRoID0gTmV0d29ya1Byb2Nlc3MvaW9zL05ldHdvcmtQcm9jZXNzSU9TLm1tOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkyREFDRTY0RDE4QURCRkYwMDBFNENBNzYgLyogV0tU
aHVtYm5haWxWaWV3SW50ZXJuYWwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
V0tUaHVtYm5haWxWaWV3SW50ZXJuYWwuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
MkRBRjA2RDQxOEJEMUE0NzAwODFDRUIxIC8qIFNtYXJ0TWFnbmlmaWNhdGlvbkNvbnRyb2xsZXIu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gU21hcnRNYWduaWZpY2F0aW9uQ29u
dHJvbGxlci5oOyBwYXRoID0gaW9zL1NtYXJ0TWFnbmlmaWNhdGlvbkNvbnRyb2xsZXIuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMkRBRjA2RDUxOEJEMUE0NzAwODFDRUIxIC8qIFNt
YXJ0TWFnbmlmaWNhdGlvbkNvbnRyb2xsZXIubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5v
YmpjcHA7IG5hbWUgPSBTbWFydE1hZ25pZmljYXRpb25Db250cm9sbGVyLm1tOyBwYXRoID0gaW9z
L1NtYXJ0TWFnbmlmaWNhdGlvbkNvbnRyb2xsZXIubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTJEQUYwNkQ4MThCRDIzQkEwMDgxQ0VCMSAvKiBTbWFydE1hZ25pZmljYXRpb25Db250
cm9sbGVyLm1lc3NhZ2VzLmluICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93
bkZpbGVUeXBlID0gdGV4dDsgbmFtZSA9IFNtYXJ0TWFnbmlmaWNhdGlvbkNvbnRyb2xsZXIubWVz
c2FnZXMuaW47IHBhdGggPSBpb3MvU21hcnRNYWduaWZpY2F0aW9uQ29udHJvbGxlci5tZXNzYWdl
cy5pbjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMkRERTBBRjgxODI5OENDOTAwRjk3
RUFBIC8qIFJlbW90ZUxheWVyVHJlZVByb3BlcnR5QXBwbGllci5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBSZW1vdGVMYXllclRyZWVQcm9wZXJ0eUFwcGxpZXIuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMkRERTBBRjkxODI5OENDOTAwRjk3RUFBIC8qIFJlbW90
ZUxheWVyVHJlZVByb3BlcnR5QXBwbGllci5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9i
amNwcDsgcGF0aCA9IFJlbW90ZUxheWVyVHJlZVByb3BlcnR5QXBwbGllci5tbTsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMkRFNjk0M0IxOEJEMkE2ODAwNUMxNUU1IC8qIFNtYXJ0TWFn
bmlmaWNhdGlvbkNvbnRyb2xsZXJNZXNzYWdlUmVjZWl2ZXIuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBuYW1lID0gU21hcnRNYWduaWZpY2F0aW9uQ29udHJvbGxlck1lc3NhZ2VS
ZWNlaXZlci5jcHA7IHBhdGggPSBTbWFydE1hZ25pZmljYXRpb25Db250cm9sbGVyTWVzc2FnZVJl
Y2VpdmVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMkRFNjk0M0MxOEJEMkE2
ODAwNUMxNUU1IC8qIFNtYXJ0TWFnbmlmaWNhdGlvbkNvbnRyb2xsZXJNZXNzYWdlcy5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBTbWFydE1hZ25pZmljYXRpb25Db250cm9sbGVy
TWVzc2FnZXMuaDsgcGF0aCA9IFNtYXJ0TWFnbmlmaWNhdGlvbkNvbnRyb2xsZXJNZXNzYWdlcy5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkyREY5NTkzNDE4QTQyNDEyMDA5Nzg1QTEg
LyogVmlld0dlc3R1cmVDb250cm9sbGVySU9TLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
b2JqY3BwOyBuYW1lID0gVmlld0dlc3R1cmVDb250cm9sbGVySU9TLm1tOyBwYXRoID0gaW9zL1Zp
ZXdHZXN0dXJlQ29udHJvbGxlcklPUy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
MzEwOTk5NjgxNDZDNzFGNTAwMjlERUI5IC8qIFdlYk5vdGlmaWNhdGlvbkNsaWVudC5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBXZWJOb3RpZmljYXRpb25DbGllbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJMzEwOTk5NzExNDZDNzU5QjAwMjlERUI5IC8qIFdlYk5vdGlmaWNhdGlvbkNsaWVu
dC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJOb3RpZmljYXRp
b25DbGllbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNDMwMCw2ICs0MzA5
LDkgQEAKIAkJCQkwRkNCNEUzNzE4QkJFMDQ0MDAwRkNGQzkgLyogUGFnZUNsaWVudEltcGxJT1Mu
bW0gKi8sCiAJCQkJMkRBOTQ0QTkxODg0RTlCQTAwRUQ4NkRCIC8qIFRleHRDaGVja2VySU9TLm1t
ICovLAogCQkJCTJERjk1OTM0MThBNDI0MTIwMDk3ODVBMSAvKiBWaWV3R2VzdHVyZUNvbnRyb2xs
ZXJJT1MubW0gKi8sCisJCQkJMkRBRjA2RDQxOEJEMUE0NzAwODFDRUIxIC8qIFNtYXJ0TWFnbmlm
aWNhdGlvbkNvbnRyb2xsZXIuaCAqLywKKwkJCQkyREFGMDZENTE4QkQxQTQ3MDA4MUNFQjEgLyog
U21hcnRNYWduaWZpY2F0aW9uQ29udHJvbGxlci5tbSAqLywKKwkJCQkyREFGMDZEODE4QkQyM0JB
MDA4MUNFQjEgLyogU21hcnRNYWduaWZpY2F0aW9uQ29udHJvbGxlci5tZXNzYWdlcy5pbiAqLywK
IAkJCQkyREE5NDRBQTE4ODRFOUJBMDBFRDg2REIgLyogV2ViSW5zcGVjdG9yUHJveHlJT1MubW0g
Ki8sCiAJCQkJMkRBOTQ0QUIxODg0RTlCQTAwRUQ4NkRCIC8qIFdlYlBhZ2VQcm94eUlPUy5tbSAq
LywKIAkJCQkyREE5NDRBQzE4ODRFOUJBMDBFRDg2REIgLyogV2ViUHJvY2Vzc1Byb3h5SU9TLm1t
ICovLApAQCAtNjA4OSw2ICs2MTAxLDggQEAKIAkJCWNoaWxkcmVuID0gKAogCQkJCTJEODE5QjlG
MTg2MjgwMEUwMDFGMDNEMSAvKiBWaWV3R2VzdHVyZUdlb21ldHJ5Q29sbGVjdG9yTWVzc2FnZVJl
Y2VpdmVyLmNwcCAqLywKIAkJCQkyRDgxOUJBMDE4NjI4MDBFMDAxRjAzRDEgLyogVmlld0dlc3R1
cmVHZW9tZXRyeUNvbGxlY3Rvck1lc3NhZ2VzLmggKi8sCisJCQkJMkRFNjk0M0IxOEJEMkE2ODAw
NUMxNUU1IC8qIFNtYXJ0TWFnbmlmaWNhdGlvbkNvbnRyb2xsZXJNZXNzYWdlUmVjZWl2ZXIuY3Bw
ICovLAorCQkJCTJERTY5NDNDMThCRDJBNjgwMDVDMTVFNSAvKiBTbWFydE1hZ25pZmljYXRpb25D
b250cm9sbGVyTWVzc2FnZXMuaCAqLywKIAkJCQk1MTJGNThBMDEyQTg4M0FEMDA2Mjk1MzAgLyog
QXV0aGVudGljYXRpb25NYW5hZ2VyTWVzc2FnZVJlY2VpdmVyLmNwcCAqLywKIAkJCQk1MTJGNThB
MTEyQTg4M0FEMDA2Mjk1MzAgLyogQXV0aGVudGljYXRpb25NYW5hZ2VyTWVzc2FnZXMuaCAqLywK
IAkJCQlFMTdBRTJDMjE2QjlDNjNBMDAxQzQyRjEgLyogY29tLmFwcGxlLldlYktpdC5OZXR3b3Jr
UHJvY2Vzcy5zYiAqLywKQEAgLTY0MDEsNiArNjQxNSw3IEBACiAJCQkJMUY2MDRCQTgxODg5RkE3
NDAwRUUwMzk1IC8qIFdLUmVuZGVyaW5nUHJvZ3Jlc3NFdmVudHMuaCBpbiBIZWFkZXJzICovLAog
CQkJCTFBNDIyRjhGMThCMjlDNjQwMEQ4Q0Q5NiAvKiBIaXN0b3J5Q2xpZW50LmggaW4gSGVhZGVy
cyAqLywKIAkJCQlCQ0JBQUNFQjE0NTIyNUUzMDA1M0Y4MkYgLyogV0tQcm9jZXNzR3JvdXAuaCBp
biBIZWFkZXJzICovLAorCQkJCTJEQUYwNkQ2MThCRDFBNDcwMDgxQ0VCMSAvKiBTbWFydE1hZ25p
ZmljYXRpb25Db250cm9sbGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQkzNzdFQUQ0ODE3RTJDNzdC
MDAyRDE5M0QgLyogV0tVc2VyQ29udGVudEluamVjdGVkRnJhbWVzLmggaW4gSGVhZGVycyAqLywK
IAkJCQlCQzg2OTlCNTExNkFBREFBMDAyQTkyNUIgLyogV0tWaWV3LmggaW4gSGVhZGVycyAqLywK
IAkJCQlCQzhGMkYyQjE2MjczQTJDMDA1RkFDQjUgLyogV0tXZWJQcm9jZXNzUGx1Z0luQnJvd3Nl
ckNvbnRleHRDb250cm9sbGVyLmggaW4gSGVhZGVycyAqLywKQEAgLTY2ODIsNiArNjY5Nyw3IEBA
CiAJCQkJM0Y4N0I5QzAxNTg5NDBEODAwOTBGRjYyIC8qIFdlYkNvbG9yUGlja2VyLmggaW4gSGVh
ZGVycyAqLywKIAkJCQlCQzRBNjI5MDE0NzMxMkJFMDA2QzY4MUEgLyogV2ViQ29ubmVjdGlvbi5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJMEZDQjRFNTQxOEJCRTA0NDAwMEZDRkM5IC8qIFdLU2Nyb2xs
Vmlldy5oIGluIEhlYWRlcnMgKi8sCisJCQkJMkRFNjk0M0UxOEJEMkE2ODAwNUMxNUU1IC8qIFNt
YXJ0TWFnbmlmaWNhdGlvbkNvbnRyb2xsZXJNZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
QkM0QTYyOTIxNDczMTJCRTAwNkM2ODFBIC8qIFdlYkNvbm5lY3Rpb25DbGllbnQuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTFBMUZFQzFEMTYyN0I0NTcwMDcwMEY2RCAvKiBXZWJDb25uZWN0aW9uTWVz
c2FnZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDNEE2MkE4MTQ3NDRFQzcwMDZDNjgxQSAvKiBX
ZWJDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmggaW4gSGVhZGVycyAqLywKQEAgLTc4MjgsNiArNzg0
NCw3IEBACiAJCQkJOTNGQzY3QkQxMkQzQ0NGMjAwQTYwNjEwIC8qIERlY29kZXJBZGFwdGVyLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCUJDRTgxRDk4MTMxQUUwMjEwMDI0MTkxMCAvKiBEaWN0aW9u
YXJ5UG9wdXBJbmZvLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTUxNjdFRUExMTcwMzc3QkYwMDc2
ODFDQSAvKiBEaXNrQ2FjaGVNb25pdG9yLm1tIGluIFNvdXJjZXMgKi8sCisJCQkJMkRBRjA2RDcx
OEJEMUE0NzAwODFDRUIxIC8qIFNtYXJ0TWFnbmlmaWNhdGlvbkNvbnRyb2xsZXIubW0gaW4gU291
cmNlcyAqLywKIAkJCQkyRDZDRDExQTE4OTA1OEE1MDBFNUE0QTAgLyogVmlld1NuYXBzaG90U3Rv
cmUubW0gaW4gU291cmNlcyAqLywKIAkJCQk1MThFOEYwNzE2QjIwOTM3MDBFOTE0MjkgLyogRG93
bmxvYWQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMkQ0N0I1NkMxODEwNzE0RTAwM0EzQUVFIC8q
IFJlbW90ZUxheWVyQmFja2luZ1N0b3JlLm1tIGluIFNvdXJjZXMgKi8sCkBAIC04MDMxLDYgKzgw
NDgsNyBAQAogCQkJCTFBQjE2QUREMTY0ODU5ODQwMDI5MEQ2MiAvKiBSZW1vdGVMYXllclRyZWVE
cmF3aW5nQXJlYS5tbSBpbiBTb3VyY2VzICovLAogCQkJCTFBQjE2QUUxMTY0ODY1NkQwMDI5MEQ2
MiAvKiBSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVByb3h5Lm1tIGluIFNvdXJjZXMgKi8sCiAJ
CQkJMEY1OTQ3OUMxODdCM0I2MDAwNDM3ODU3IC8qIFJlbW90ZVNjcm9sbGluZ1RyZWUuY3BwIGlu
IFNvdXJjZXMgKi8sCisJCQkJMkRFNjk0M0QxOEJEMkE2ODAwNUMxNUU1IC8qIFNtYXJ0TWFnbmlm
aWNhdGlvbkNvbnRyb2xsZXJNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
MUFBM0Q3NUIxNjUxQjQ0RjAwODcxM0QwIC8qIFJlbW90ZUxheWVyVHJlZUhvc3QubW0gaW4gU291
cmNlcyAqLywKIAkJCQkxQUYxQUM2QjE2NTE3NTlFMDBDMTdEN0YgLyogUmVtb3RlTGF5ZXJUcmVl
VHJhbnNhY3Rpb24ubW0gaW4gU291cmNlcyAqLywKIAkJCQlFMUI3ODQ3MzE2M0YyNTNFMDAwN0I2
OTIgLyogUmVtb3RlTmV0d29ya2luZ0NvbnRleHQubW0gaW4gU291cmNlcyAqLywKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9WaWV3R2VzdHVyZUdlb21ldHJ5
Q29sbGVjdG9yLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9WaWV3R2Vz
dHVyZUdlb21ldHJ5Q29sbGVjdG9yLmNwcAppbmRleCBkZDRkYmIyLi4xMmExYWY3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvVmlld0dlc3R1cmVHZW9tZXRy
eUNvbGxlY3Rvci5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1Zp
ZXdHZXN0dXJlR2VvbWV0cnlDb2xsZWN0b3IuY3BwCkBAIC0yNiwyNiArMjYsMzQgQEAKICNpbmNs
dWRlICJjb25maWcuaCIKICNpbmNsdWRlICJWaWV3R2VzdHVyZUdlb21ldHJ5Q29sbGVjdG9yLmgi
CiAKLSNpZiAhUExBVEZPUk0oSU9TKQotCi0jaW5jbHVkZSAiVmlld0dlc3R1cmVDb250cm9sbGVy
TWVzc2FnZXMuaCIKICNpbmNsdWRlICJWaWV3R2VzdHVyZUdlb21ldHJ5Q29sbGVjdG9yTWVzc2Fn
ZXMuaCIKICNpbmNsdWRlICJXZWJDb3JlQXJndW1lbnRDb2RlcnMuaCIKICNpbmNsdWRlICJXZWJG
cmFtZS5oIgogI2luY2x1ZGUgIldlYlBhZ2UuaCIKICNpbmNsdWRlICJXZWJQcm9jZXNzLmgiCisj
aW5jbHVkZSA8V2ViQ29yZS9GcmFtZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRnJhbWVWaWV3Lmg+
CiAjaW5jbHVkZSA8V2ViQ29yZS9IaXRUZXN0UmVzdWx0Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9S
ZW5kZXJWaWV3Lmg+CiAKKyNpZiBQTEFURk9STShJT1MpCisjaW5jbHVkZSAiU21hcnRNYWduaWZp
Y2F0aW9uQ29udHJvbGxlck1lc3NhZ2VzLmgiCisjZW5kaWYKKworI2lmIFBMQVRGT1JNKE1BQykK
KyNpbmNsdWRlICJWaWV3R2VzdHVyZUNvbnRyb2xsZXJNZXNzYWdlcy5oIgorI2VuZGlmCisKIHVz
aW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogVmlld0dlc3R1
cmVHZW9tZXRyeUNvbGxlY3Rvcjo6Vmlld0dlc3R1cmVHZW9tZXRyeUNvbGxlY3RvcihXZWJQYWdl
JiB3ZWJQYWdlKQogICAgIDogbV93ZWJQYWdlKHdlYlBhZ2UpCisjaWYgUExBVEZPUk0oTUFDKQog
ICAgICwgbV9yZW5kZXJUcmVlU2l6ZU5vdGlmaWNhdGlvblRocmVzaG9sZCgwKQogICAgICwgbV9y
ZW5kZXJUcmVlU2l6ZU5vdGlmaWNhdGlvblRpbWVyKFJ1bkxvb3A6Om1haW4oKSwgdGhpcywgJlZp
ZXdHZXN0dXJlR2VvbWV0cnlDb2xsZWN0b3I6OnJlbmRlclRyZWVTaXplTm90aWZpY2F0aW9uVGlt
ZXJGaXJlZCkKKyNlbmRpZgogewogICAgIFdlYlByb2Nlc3M6OnNoYXJlZCgpLmFkZE1lc3NhZ2VS
ZWNlaXZlcihNZXNzYWdlczo6Vmlld0dlc3R1cmVHZW9tZXRyeUNvbGxlY3Rvcjo6bWVzc2FnZVJl
Y2VpdmVyTmFtZSgpLCBtX3dlYlBhZ2UucGFnZUlEKCksICp0aGlzKTsKIH0KQEAgLTU1LDExICs2
MywxNCBAQCBWaWV3R2VzdHVyZUdlb21ldHJ5Q29sbGVjdG9yOjp+Vmlld0dlc3R1cmVHZW9tZXRy
eUNvbGxlY3RvcigpCiAgICAgV2ViUHJvY2Vzczo6c2hhcmVkKCkucmVtb3ZlTWVzc2FnZVJlY2Vp
dmVyKE1lc3NhZ2VzOjpWaWV3R2VzdHVyZUdlb21ldHJ5Q29sbGVjdG9yOjptZXNzYWdlUmVjZWl2
ZXJOYW1lKCksIG1fd2ViUGFnZS5wYWdlSUQoKSk7CiB9CiAKLXZvaWQgVmlld0dlc3R1cmVHZW9t
ZXRyeUNvbGxlY3Rvcjo6Y29sbGVjdEdlb21ldHJ5Rm9yTWFnbmlmaWNhdGlvbkdlc3R1cmUoKQor
dm9pZCBWaWV3R2VzdHVyZUdlb21ldHJ5Q29sbGVjdG9yOjpkaXNwYXRjaERpZENvbGxlY3RHZW9t
ZXRyeUZvclNtYXJ0TWFnbmlmaWNhdGlvbkdlc3R1cmUoRmxvYXRQb2ludCBvcmlnaW4sIEZsb2F0
UmVjdCB0YXJnZXRSZWN0LCBGbG9hdFJlY3QgdmlzaWJsZUNvbnRlbnRSZWN0LCBib29sIGlzUmVw
bGFjZWRFbGVtZW50LCBib29sIGZyYW1lSGFuZGxlc01hZ25pZmljYXRpb25HZXN0dXJlLCBkb3Vi
bGUgdmlld3BvcnRNaW5pbXVtU2NhbGUsIGRvdWJsZSB2aWV3cG9ydE1heGltdW1TY2FsZSkKIHsK
LSAgICBGbG9hdFJlY3QgdmlzaWJsZUNvbnRlbnRSZWN0ID0gbV93ZWJQYWdlLm1haW5GcmFtZVZp
ZXcoKS0+dmlzaWJsZUNvbnRlbnRSZWN0SW5jbHVkaW5nU2Nyb2xsYmFycygpOwotICAgIGJvb2wg
ZnJhbWVIYW5kbGVzTWFnbmlmaWNhdGlvbkdlc3R1cmUgPSBtX3dlYlBhZ2UubWFpbldlYkZyYW1l
KCktPmhhbmRsZXNQYWdlU2NhbGVHZXN0dXJlKCk7Ci0gICAgbV93ZWJQYWdlLnNlbmQoTWVzc2Fn
ZXM6OlZpZXdHZXN0dXJlQ29udHJvbGxlcjo6RGlkQ29sbGVjdEdlb21ldHJ5Rm9yTWFnbmlmaWNh
dGlvbkdlc3R1cmUodmlzaWJsZUNvbnRlbnRSZWN0LCBmcmFtZUhhbmRsZXNNYWduaWZpY2F0aW9u
R2VzdHVyZSkpOworI2lmIFBMQVRGT1JNKE1BQykKKyAgICBtX3dlYlBhZ2Uuc2VuZChNZXNzYWdl
czo6Vmlld0dlc3R1cmVDb250cm9sbGVyOjpEaWRDb2xsZWN0R2VvbWV0cnlGb3JTbWFydE1hZ25p
ZmljYXRpb25HZXN0dXJlKG9yaWdpbiwgdGFyZ2V0UmVjdCwgdmlzaWJsZUNvbnRlbnRSZWN0LCBp
c1JlcGxhY2VkRWxlbWVudCwgZnJhbWVIYW5kbGVzTWFnbmlmaWNhdGlvbkdlc3R1cmUsIHZpZXdw
b3J0TWluaW11bVNjYWxlLCB2aWV3cG9ydE1heGltdW1TY2FsZSkpOworI2VuZGlmCisjaWYgUExB
VEZPUk0oSU9TKQorICAgIG1fd2ViUGFnZS5zZW5kKE1lc3NhZ2VzOjpTbWFydE1hZ25pZmljYXRp
b25Db250cm9sbGVyOjpEaWRDb2xsZWN0R2VvbWV0cnlGb3JTbWFydE1hZ25pZmljYXRpb25HZXN0
dXJlKG9yaWdpbiwgdGFyZ2V0UmVjdCwgdmlzaWJsZUNvbnRlbnRSZWN0LCBpc1JlcGxhY2VkRWxl
bWVudCwgZnJhbWVIYW5kbGVzTWFnbmlmaWNhdGlvbkdlc3R1cmUsIHZpZXdwb3J0TWluaW11bVNj
YWxlLCB2aWV3cG9ydE1heGltdW1TY2FsZSkpOworI2VuZGlmCiB9CiAKIHZvaWQgVmlld0dlc3R1
cmVHZW9tZXRyeUNvbGxlY3Rvcjo6Y29sbGVjdEdlb21ldHJ5Rm9yU21hcnRNYWduaWZpY2F0aW9u
R2VzdHVyZShGbG9hdFBvaW50IG9yaWdpbikKQEAgLTY3LDE4ICs3OCwzNyBAQCB2b2lkIFZpZXdH
ZXN0dXJlR2VvbWV0cnlDb2xsZWN0b3I6OmNvbGxlY3RHZW9tZXRyeUZvclNtYXJ0TWFnbmlmaWNh
dGlvbkdlc3R1cmUoRgogICAgIEZsb2F0UmVjdCB2aXNpYmxlQ29udGVudFJlY3QgPSBtX3dlYlBh
Z2UubWFpbkZyYW1lVmlldygpLT52aXNpYmxlQ29udGVudFJlY3RJbmNsdWRpbmdTY3JvbGxiYXJz
KCk7CiAgICAgYm9vbCBmcmFtZUhhbmRsZXNNYWduaWZpY2F0aW9uR2VzdHVyZSA9IG1fd2ViUGFn
ZS5tYWluV2ViRnJhbWUoKS0+aGFuZGxlc1BhZ2VTY2FsZUdlc3R1cmUoKTsKIAotICAgIEZsb2F0
UG9pbnQgc2Nyb2xsZWRPcmlnaW4gPSBvcmlnaW47Ci0gICAgc2Nyb2xsZWRPcmlnaW4ubW92ZUJ5
KG1fd2ViUGFnZS5tYWluRnJhbWVWaWV3KCktPnNjcm9sbFBvc2l0aW9uKCkpOwotCiAgICAgSGl0
VGVzdFJlcXVlc3QgcmVxdWVzdChIaXRUZXN0UmVxdWVzdDo6UmVhZE9ubHkgfCBIaXRUZXN0UmVx
dWVzdDo6QWN0aXZlIHwgSGl0VGVzdFJlcXVlc3Q6OkRpc2FsbG93U2hhZG93Q29udGVudCk7Ci0g
ICAgSGl0VGVzdFJlc3VsdCBoaXRUZXN0UmVzdWx0ID0gSGl0VGVzdFJlc3VsdChzY3JvbGxlZE9y
aWdpbik7CisgICAgSW50UG9pbnQgb3JpZ2luSW5Db250ZW50c1NwYWNlID0gbV93ZWJQYWdlLm1h
aW5GcmFtZVZpZXcoKS0+d2luZG93VG9Db250ZW50cyhyb3VuZGVkSW50UG9pbnQob3JpZ2luKSk7
CisgICAgSGl0VGVzdFJlc3VsdCBoaXRUZXN0UmVzdWx0ID0gSGl0VGVzdFJlc3VsdChvcmlnaW5J
bkNvbnRlbnRzU3BhY2UpOworCiAgICAgbV93ZWJQYWdlLm1haW5GcmFtZVZpZXcoKS0+cmVuZGVy
VmlldygpLT5oaXRUZXN0KHJlcXVlc3QsIGhpdFRlc3RSZXN1bHQpOwogCi0gICAgaWYgKGhpdFRl
c3RSZXN1bHQuaW5uZXJOb2RlKCkpIHsKKyAgICBpZiAoTm9kZSAqbm9kZSA9IGhpdFRlc3RSZXN1
bHQuaW5uZXJOb2RlKCkpIHsKICAgICAgICAgYm9vbCBpc1JlcGxhY2VkOwotICAgICAgICBGbG9h
dFJlY3QgcmVuZGVyUmVjdCA9IGhpdFRlc3RSZXN1bHQuaW5uZXJOb2RlKCktPnJlbmRlclJlY3Qo
JmlzUmVwbGFjZWQpOwotICAgICAgICBtX3dlYlBhZ2Uuc2VuZChNZXNzYWdlczo6Vmlld0dlc3R1
cmVDb250cm9sbGVyOjpEaWRDb2xsZWN0R2VvbWV0cnlGb3JTbWFydE1hZ25pZmljYXRpb25HZXN0
dXJlKG9yaWdpbiwgcmVuZGVyUmVjdCwgdmlzaWJsZUNvbnRlbnRSZWN0LCBpc1JlcGxhY2VkLCBm
cmFtZUhhbmRsZXNNYWduaWZpY2F0aW9uR2VzdHVyZSkpOworICAgICAgICBGbG9hdFJlY3QgcmVu
ZGVyUmVjdCA9IG5vZGUtPnJlbmRlclJlY3QoJmlzUmVwbGFjZWQpOworCisjaWYgUExBVEZPUk0o
TUFDKQorICAgICAgICBkb3VibGUgdmlld3BvcnRNaW5pbXVtU2NhbGUgPSAwOworICAgICAgICBk
b3VibGUgdmlld3BvcnRNYXhpbXVtU2NhbGUgPSBzdGQ6Om51bWVyaWNfbGltaXRzPGRvdWJsZT46
Om1heCgpOworI2Vsc2UKKyAgICAgICAgZG91YmxlIHZpZXdwb3J0TWluaW11bVNjYWxlID0gbV93
ZWJQYWdlLm1pbmltdW1QYWdlU2NhbGVGYWN0b3IoKTsKKyAgICAgICAgZG91YmxlIHZpZXdwb3J0
TWF4aW11bVNjYWxlID0gbV93ZWJQYWdlLm1heGltdW1QYWdlU2NhbGVGYWN0b3IoKTsKKyNlbmRp
ZgorCisgICAgICAgIGRpc3BhdGNoRGlkQ29sbGVjdEdlb21ldHJ5Rm9yU21hcnRNYWduaWZpY2F0
aW9uR2VzdHVyZShvcmlnaW4sIHJlbmRlclJlY3QsIHZpc2libGVDb250ZW50UmVjdCwgaXNSZXBs
YWNlZCwgZnJhbWVIYW5kbGVzTWFnbmlmaWNhdGlvbkdlc3R1cmUsIHZpZXdwb3J0TWluaW11bVNj
YWxlLCB2aWV3cG9ydE1heGltdW1TY2FsZSk7CisgICAgICAgIHJldHVybjsKICAgICB9CisKKyAg
ICBkaXNwYXRjaERpZENvbGxlY3RHZW9tZXRyeUZvclNtYXJ0TWFnbmlmaWNhdGlvbkdlc3R1cmUo
RmxvYXRQb2ludCgpLCBGbG9hdFJlY3QoKSwgRmxvYXRSZWN0KCksIGZhbHNlLCBmcmFtZUhhbmRs
ZXNNYWduaWZpY2F0aW9uR2VzdHVyZSwgMCwgMCk7Cit9CisKKyNpZiBQTEFURk9STShNQUMpCit2
b2lkIFZpZXdHZXN0dXJlR2VvbWV0cnlDb2xsZWN0b3I6OmNvbGxlY3RHZW9tZXRyeUZvck1hZ25p
ZmljYXRpb25HZXN0dXJlKCkKK3sKKyAgICBGbG9hdFJlY3QgdmlzaWJsZUNvbnRlbnRSZWN0ID0g
bV93ZWJQYWdlLm1haW5GcmFtZVZpZXcoKS0+dmlzaWJsZUNvbnRlbnRSZWN0SW5jbHVkaW5nU2Ny
b2xsYmFycygpOworICAgIGJvb2wgZnJhbWVIYW5kbGVzTWFnbmlmaWNhdGlvbkdlc3R1cmUgPSBt
X3dlYlBhZ2UubWFpbldlYkZyYW1lKCktPmhhbmRsZXNQYWdlU2NhbGVHZXN0dXJlKCk7CisgICAg
bV93ZWJQYWdlLnNlbmQoTWVzc2FnZXM6OlZpZXdHZXN0dXJlQ29udHJvbGxlcjo6RGlkQ29sbGVj
dEdlb21ldHJ5Rm9yTWFnbmlmaWNhdGlvbkdlc3R1cmUodmlzaWJsZUNvbnRlbnRSZWN0LCBmcmFt
ZUhhbmRsZXNNYWduaWZpY2F0aW9uR2VzdHVyZSkpOwogfQogCiB2b2lkIFZpZXdHZXN0dXJlR2Vv
bWV0cnlDb2xsZWN0b3I6Om1haW5GcmFtZURpZExheW91dCgpCkBAIC05Myw3ICsxMjMsNyBAQCB2
b2lkIFZpZXdHZXN0dXJlR2VvbWV0cnlDb2xsZWN0b3I6OnJlbmRlclRyZWVTaXplTm90aWZpY2F0
aW9uVGltZXJGaXJlZCgpCiB7CiAgICAgbV93ZWJQYWdlLnNlbmQoTWVzc2FnZXM6OlZpZXdHZXN0
dXJlQ29udHJvbGxlcjo6RGlkSGl0UmVuZGVyVHJlZVNpemVUaHJlc2hvbGQoKSk7CiB9CisjZW5k
aWYKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKLSNlbmRpZiAvLyAhUExBVEZPUk0oSU9TKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1ZpZXdHZXN0dXJl
R2VvbWV0cnlDb2xsZWN0b3IuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9W
aWV3R2VzdHVyZUdlb21ldHJ5Q29sbGVjdG9yLmgKaW5kZXggYTMwODhlYS4uZTA3NTMwZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1ZpZXdHZXN0dXJlR2Vv
bWV0cnlDb2xsZWN0b3IuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2Uv
Vmlld0dlc3R1cmVHZW9tZXRyeUNvbGxlY3Rvci5oCkBAIC0yNiwxMyArMjYsMTIgQEAKICNpZm5k
ZWYgVmlld0dlc3R1cmVHZW9tZXRyeUNvbGxlY3Rvcl9oCiAjZGVmaW5lIFZpZXdHZXN0dXJlR2Vv
bWV0cnlDb2xsZWN0b3JfaAogCi0jaWYgIVBMQVRGT1JNKElPUykKLQogI2luY2x1ZGUgIk1lc3Nh
Z2VSZWNlaXZlci5oIgogI2luY2x1ZGUgPHd0Zi9SdW5Mb29wLmg+CiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIGNsYXNzIEZsb2F0UG9pbnQ7CitjbGFzcyBGbG9hdFJlY3Q7CiB9CiAKIG5hbWVzcGFj
ZSBXZWJLaXQgewpAQCAtNTEsMjAgKzUwLDI1IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lk
IGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiosIElQQzo6TWVzc2FnZURlY29kZXIm
KSBvdmVycmlkZTsKIAogICAgIC8vIE1lc3NhZ2UgaGFuZGxlcnMuCi0gICAgdm9pZCBjb2xsZWN0
R2VvbWV0cnlGb3JNYWduaWZpY2F0aW9uR2VzdHVyZSgpOwogICAgIHZvaWQgY29sbGVjdEdlb21l
dHJ5Rm9yU21hcnRNYWduaWZpY2F0aW9uR2VzdHVyZShXZWJDb3JlOjpGbG9hdFBvaW50IG9yaWdp
bik7CisKKyNpZiBQTEFURk9STShNQUMpCisgICAgdm9pZCBjb2xsZWN0R2VvbWV0cnlGb3JNYWdu
aWZpY2F0aW9uR2VzdHVyZSgpOwogICAgIHZvaWQgc2V0UmVuZGVyVHJlZVNpemVOb3RpZmljYXRp
b25UaHJlc2hvbGQodWludDY0X3Qgc2l6ZSkgeyBtX3JlbmRlclRyZWVTaXplTm90aWZpY2F0aW9u
VGhyZXNob2xkID0gc2l6ZTsgfQogCiAgICAgdm9pZCByZW5kZXJUcmVlU2l6ZU5vdGlmaWNhdGlv
blRpbWVyRmlyZWQoKTsKKyNlbmRpZgorCisgICAgdm9pZCBkaXNwYXRjaERpZENvbGxlY3RHZW9t
ZXRyeUZvclNtYXJ0TWFnbmlmaWNhdGlvbkdlc3R1cmUoV2ViQ29yZTo6RmxvYXRQb2ludCBvcmln
aW4sIFdlYkNvcmU6OkZsb2F0UmVjdCB0YXJnZXRSZWN0LCBXZWJDb3JlOjpGbG9hdFJlY3Qgdmlz
aWJsZUNvbnRlbnRSZWN0LCBib29sIGlzUmVwbGFjZWRFbGVtZW50LCBib29sIGZyYW1lSGFuZGxl
c01hZ25pZmljYXRpb25HZXN0dXJlLCBkb3VibGUgdmlld3BvcnRNaW5pbXVtU2NhbGUsIGRvdWJs
ZSB2aWV3cG9ydE1heGltdW1TY2FsZSk7CiAKICAgICBXZWJQYWdlJiBtX3dlYlBhZ2U7CiAKKyNp
ZiBQTEFURk9STShNQUMpCiAgICAgdWludDY0X3QgbV9yZW5kZXJUcmVlU2l6ZU5vdGlmaWNhdGlv
blRocmVzaG9sZDsKICAgICBSdW5Mb29wOjpUaW1lcjxWaWV3R2VzdHVyZUdlb21ldHJ5Q29sbGVj
dG9yPiBtX3JlbmRlclRyZWVTaXplTm90aWZpY2F0aW9uVGltZXI7CisjZW5kaWYKIH07CiAKIH0g
Ly8gbmFtZXNwYWNlIFdlYktpdAogCi0jZW5kaWYgLy8gIVBMQVRGT1JNKElPUykKLQogI2VuZGlm
IC8vIFZpZXdHZXN0dXJlR2VvbWV0cnlDb2xsZWN0b3IKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9WaWV3R2VzdHVyZUdlb21ldHJ5Q29sbGVjdG9yLm1lc3Nh
Z2VzLmluIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1ZpZXdHZXN0dXJlR2Vv
bWV0cnlDb2xsZWN0b3IubWVzc2FnZXMuaW4KaW5kZXggZWZkMDUxZi4uMDQ3MjA5YSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1ZpZXdHZXN0dXJlR2VvbWV0
cnlDb2xsZWN0b3IubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJQYWdlL1ZpZXdHZXN0dXJlR2VvbWV0cnlDb2xsZWN0b3IubWVzc2FnZXMuaW4KQEAgLTIwLDE0
ICsyMCwxMiBAQAogIyBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQogIyBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogCi0jaWYg
IVBMQVRGT1JNKElPUykKLQogbWVzc2FnZXMgLT4gVmlld0dlc3R1cmVHZW9tZXRyeUNvbGxlY3Rv
ciB7CisgICAgQ29sbGVjdEdlb21ldHJ5Rm9yU21hcnRNYWduaWZpY2F0aW9uR2VzdHVyZShXZWJD
b3JlOjpGbG9hdFBvaW50IG9yaWdpbikKIAotQ29sbGVjdEdlb21ldHJ5Rm9yTWFnbmlmaWNhdGlv
bkdlc3R1cmUoKQotQ29sbGVjdEdlb21ldHJ5Rm9yU21hcnRNYWduaWZpY2F0aW9uR2VzdHVyZShX
ZWJDb3JlOjpGbG9hdFBvaW50IG9yaWdpbikKLQotU2V0UmVuZGVyVHJlZVNpemVOb3RpZmljYXRp
b25UaHJlc2hvbGQodWludDY0X3Qgc2l6ZSkKLX0KKyNpZiAhUExBVEZPUk0oSU9TKQorICAgIENv
bGxlY3RHZW9tZXRyeUZvck1hZ25pZmljYXRpb25HZXN0dXJlKCkKIAorICAgIFNldFJlbmRlclRy
ZWVTaXplTm90aWZpY2F0aW9uVGhyZXNob2xkKHVpbnQ2NF90IHNpemUpCiAjZW5kaWYKK30KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcCBi
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAppbmRleCBmZGJm
ZmNhLi4zYzg2ZGY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YlBhZ2UuY3BwCkBAIC0yNTQsOSArMjU0LDcgQEAgV2ViUGFnZTo6V2ViUGFnZSh1aW50NjRfdCBw
YWdlSUQsIGNvbnN0IFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMmIHBhcmFtZXRlcnMpCiAgICAg
LCBtX3BkZlBsdWdpbkVuYWJsZWQoZmFsc2UpCiAgICAgLCBtX2hhc0NhY2hlZFdpbmRvd0ZyYW1l
KGZhbHNlKQogICAgICwgbV9rZXlib2FyZEV2ZW50QmVpbmdJbnRlcnByZXRlZCgwKQotI2lmICFQ
TEFURk9STShJT1MpCiAgICAgLCBtX3ZpZXdHZXN0dXJlR2VvbWV0cnlDb2xsZWN0b3IoKnRoaXMp
Ci0jZW5kaWYKICNlbGlmIFBMQVRGT1JNKEdUSykgJiYgSEFWRShBQ0NFU1NJQklMSVRZKQogICAg
ICwgbV9hY2Nlc3NpYmlsaXR5T2JqZWN0KDApCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCmluZGV4IDE3MDU2ZGQuLmFmYzgwYTQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKKysrIGIvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaApAQCAtOTkwLDkgKzk5MCw3
IEBAIHByaXZhdGU6CiAKICAgICBXZWJDb3JlOjpLZXlib2FyZEV2ZW50KiBtX2tleWJvYXJkRXZl
bnRCZWluZ0ludGVycHJldGVkOwogCi0jaWYgIVBMQVRGT1JNKElPUykKICAgICBWaWV3R2VzdHVy
ZUdlb21ldHJ5Q29sbGVjdG9yIG1fdmlld0dlc3R1cmVHZW9tZXRyeUNvbGxlY3RvcjsKLSNlbmRp
ZgogCiAjZWxpZiBIQVZFKEFDQ0VTU0lCSUxJVFkpICYmIChQTEFURk9STShHVEspIHx8IFBMQVRG
T1JNKEVGTCkpCiAgICAgR1JlZlB0cjxXZWJQYWdlQWNjZXNzaWJpbGl0eU9iamVjdD4gbV9hY2Nl
c3NpYmlsaXR5T2JqZWN0Owo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>225329</attachid>
            <date>2014-02-26 17:30:19 -0800</date>
            <delta_ts>2014-02-27 18:20:28 -0800</delta_ts>
            <desc>patch</desc>
            <filename>doubletap.diff</filename>
            <type>text/plain</type>
            <size>57807</size>
            <attacher name="Tim Horton">thorton</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCAyOWMzNTg5Li42M2M5ZmY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQg
QEAKKzIwMTQtMDItMjYgIFRpbSBIb3J0b24gIDx0aW1vdGh5X2hvcnRvbkBhcHBsZS5jb20+CisK
KyAgICAgICAgV2ViS2l0MiBWaWV3IEdlc3R1cmVzIChTbWFydCBNYWduaWZpY2F0aW9uKTogU3Vw
cG9ydCBmb3IgaU9TCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xMjkxNDYKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzE2MDMyNjY4PgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViQ29yZS5leHAuaW46
CisgICAgICAgIEFkZCBhbiBleHBvcnQuCisKIDIwMTQtMDItMjYgIERlYW4gSmFja3NvbiAgPGRp
bm9AYXBwbGUuY29tPgogCiAgICAgICAgIFtXZWJHTF0gT25seSBza2lwIGNvbnRleHQgZXJyb3Ig
cmV0cmlldmFsIGlmIGEgcGVuZGluZyBjb250ZXh0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLmV4cC5pbiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCmluZGV4IDc2
NGY0MzkuLmQ5YzRkZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmlu
CisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCkBAIC0xODg5LDYgKzE4ODksNyBA
QCBfX1pOSzdXZWJDb3JlOUZsb2F0UXVhZDExYm91bmRpbmdCb3hFdgogX19aTks3V2ViQ29yZTlG
bG9hdFJlY3QxMGludGVyc2VjdHNFUktTMF8KIF9fWk5LN1dlYkNvcmU5RmxvYXRSZWN0Y3Y2Q0dS
ZWN0RXYKIF9fWk5LN1dlYkNvcmU5RmxvYXRTaXplNmlzWmVyb0V2CitfX1pOSzdXZWJDb3JlOUZs
b2F0U2l6ZTE0ZGlhZ29uYWxMZW5ndGhFdgogX19aTks3V2ViQ29yZTlGcmFtZVRyZWUxMGNoaWxk
Q291bnRFdgogX19aTks3V2ViQ29yZTlGcmFtZVRyZWUxMnRyYXZlcnNlTmV4dEVQS05TXzVGcmFt
ZUUKIF9fWk5LN1dlYkNvcmU5RnJhbWVUcmVlMTRpc0Rlc2NlbmRhbnRPZkVQS05TXzVGcmFtZUUK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwppbmRleCBmNjNlNDNiLi5lNzE3NzI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsOTEg
QEAKKzIwMTQtMDItMjYgIFRpbSBIb3J0b24gIDx0aW1vdGh5X2hvcnRvbkBhcHBsZS5jb20+CisK
KyAgICAgICAgV2ViS2l0MiBWaWV3IEdlc3R1cmVzIChTbWFydCBNYWduaWZpY2F0aW9uKTogU3Vw
cG9ydCBmb3IgaU9TCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xMjkxNDYKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzE2MDMyNjY4PgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBzdXBwb3J0IGZvciBk
b3VibGUtdGFwIHNtYXJ0IG1hZ25pZmljYXRpb24gb24gaU9TLgorCisgICAgICAgICogRGVyaXZl
ZFNvdXJjZXMubWFrZToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5t
bToKKyAgICAgICAgKC1bV0tXZWJWaWV3IGluaXRXaXRoRnJhbWU6Y29uZmlndXJhdGlvbjpdKToK
KyAgICAgICAgV0tDb250ZW50VmlldyBpcyBubyBsb25nZXIgQVBJLCBzbyBpdCBjYW4ga25vdyBh
Ym91dCBXS1dlYlZpZXcKKyAgICAgICAgYW5kIHdpbGwgYWx3YXlzIGhhdmUgb25lLgorCisgICAg
ICAgICgtW1dLV2ViVmlldyBjb250ZW50VmlldzpkaWRDb21taXRMYXllclRyZWU6V2ViS2l0Ojpd
KToKKyAgICAgICAgRG9uJ3QgcmVwbGFjZSB0aGUgem9vbSBzY2FsZSBpZiB3ZSdyZSBjdXJyZW50
bHkgYW5pbWF0aW5nLgorCisgICAgICAgICgtW1dLV2ViVmlldyBfdGFrZVZpZXdTbmFwc2hvdF0p
OgorICAgICAgICBSZW5hbWUuCisKKyAgICAgICAgKC1bV0tXZWJWaWV3IF96b29tVG9Qb2ludDpX
ZWJDb3JlOjphdFNjYWxlOl0pOgorICAgICAgICAoLVtXS1dlYlZpZXcgX3pvb21Ub1JlY3Q6V2Vi
Q29yZTo6YXRTY2FsZTpvcmlnaW46V2ViQ29yZTo6XSk6CisgICAgICAgIChjb25zdHJhaW5Db250
ZW50T2Zmc2V0KToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF9zY3JvbGxUb1JlY3Q6V2ViQ29yZTo6
b3JpZ2luOldlYkNvcmU6Om1pbmltdW1TY3JvbGxEaXN0YW5jZTpdKToKKyAgICAgICAgKC1bV0tX
ZWJWaWV3IF96b29tT3V0V2l0aE9yaWdpbjpdKToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF96b29t
VG9SZWN0OndpdGhPcmlnaW46Zml0RW50aXJlUmVjdDptaW5pbXVtU2NhbGU6bWF4aW11bVNjYWxl
Om1pbmltdW1TY3JvbGxEaXN0YW5jZTpdKToKKyAgICAgICAgQWRkIF96b29tVG9SZWN0OndpdGhP
cmlnaW46Zml0RW50aXJlUmVjdDptaW5pbXVtU2NhbGU6bWF4aW11bVNjYWxlOm1pbmltdW1TY3Jv
bGxEaXN0YW5jZToKKyAgICAgICAgYW5kIF96b29tT3V0V2l0aE9yaWdpbjogYXMgaW50ZXJuYWwg
QVBJLCBmb3IgdXNlIGJ5IFNtYXJ0TWFnbmlmaWNhdGlvbkNvbnRyb2xsZXIgdmlhIFdLQ29udGVu
dFZpZXcuCisgICAgICAgIFRoZXNlIHdpbGwgdXNlIHNvbWUgaGV1cmlzdGljcyB0byBnZW5lcmFs
bHkgY2VudGVyIHRoZSB0YXJnZXQgcmVjdCBpbiB0aGUgdmlldworICAgICAgICBpbiBhIHdheSB0
aGF0IHNob3VsZCBtYXRjaCBXZWJLaXQxIGZhaXJseSBjbG9zZWx5LgorCisgICAgICAgICogVUlQ
cm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdJbnRlcm5hbC5oOgorICAgICAgICBEb24ndCB1c2Ug
dGhlIFdLQ29udGVudFZpZXdEZWxlZ2F0ZSBwcm90b2NvbCBmb3IgdGhpbmdzIHRoYXQgZG9uJ3Qg
YmVsb25nIHRoZXJlLgorCisgICAgICAgICogVUlQcm9jZXNzL2lvcy9TbWFydE1hZ25pZmljYXRp
b25Db250cm9sbGVyLmg6IEFkZGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvU21hcnRNYWdu
aWZpY2F0aW9uQ29udHJvbGxlci5tZXNzYWdlcy5pbjogQWRkZWQuCisgICAgICAgICogVUlQcm9j
ZXNzL2lvcy9TbWFydE1hZ25pZmljYXRpb25Db250cm9sbGVyLm1tOiBBZGRlZC4KKyAgICAgICAg
KFdlYktpdDo6U21hcnRNYWduaWZpY2F0aW9uQ29udHJvbGxlcjo6U21hcnRNYWduaWZpY2F0aW9u
Q29udHJvbGxlcik6CisgICAgICAgIChXZWJLaXQ6OlNtYXJ0TWFnbmlmaWNhdGlvbkNvbnRyb2xs
ZXI6On5TbWFydE1hZ25pZmljYXRpb25Db250cm9sbGVyKToKKyAgICAgICAgKFdlYktpdDo6U21h
cnRNYWduaWZpY2F0aW9uQ29udHJvbGxlcjo6aGFuZGxlU21hcnRNYWduaWZpY2F0aW9uR2VzdHVy
ZSk6CisgICAgICAgIChXZWJLaXQ6OlNtYXJ0TWFnbmlmaWNhdGlvbkNvbnRyb2xsZXI6OmRpZENv
bGxlY3RHZW9tZXRyeUZvclNtYXJ0TWFnbmlmaWNhdGlvbkdlc3R1cmUpOgorICAgICAgICBTbWFy
dE1hZ25pZmljYXRpb25Db250cm9sbGVyIHNpdHMgb2ZmIG9mIFdLQ29udGVudFZpZXcsIGFuZCBz
ZW5kcy9yZWNlaXZlcworICAgICAgICBtZXNzYWdlcyB0byB0aGUgV2ViUHJvY2VzcyB0byBkbyB0
aGUgc21hcnQgbWFnbmlmaWNhdGlvbiBoaXQtdGVzdGluZy4KKworICAgICAgICAqIFVJUHJvY2Vz
cy9pb3MvV0tDb250ZW50Vmlldy5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvV0tDb250ZW50
Vmlldy5tbToKKyAgICAgICAgKC1bV0tDb250ZW50VmlldyBpbml0V2l0aEZyYW1lOmNvbnRleHQ6
V2ViS2l0Ojpjb25maWd1cmF0aW9uOldlYktpdDo6d2ViVmlldzpdKToKKyAgICAgICAgQXMgYmVm
b3JlLCB0ZWFjaCBXS0NvbnRlbnRWaWV3IGFib3V0IGl0cyBvd25pbmcgV0tXZWJWaWV3LgorCisg
ICAgICAgICgtW1dLQ29udGVudFZpZXcgX3Rha2VWaWV3U25hcHNob3RdKToKKyAgICAgICAgUmVu
YW1lLgorCisgICAgICAgICgtW1dLQ29udGVudFZpZXcgX3pvb21Ub1JlY3Q6d2l0aE9yaWdpbjpm
aXRFbnRpcmVSZWN0Om1pbmltdW1TY2FsZTptYXhpbXVtU2NhbGU6bWluaW11bVNjcm9sbERpc3Rh
bmNlOl0pOgorICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IF96b29tT3V0V2l0aE9yaWdpbjpdKToK
KyAgICAgICAgRm9yd2FyZCBfem9vbVRvUmVjdDo6Ojo6OiBhbmQgX3pvb21PdXRXaXRoT3JpZ2lu
OiB0byBXS1dlYlZpZXcuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJ
bnRlcmFjdGlvbi5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVy
YWN0aW9uLm1tOgorICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IHNldHVwSW50ZXJhY3Rpb25dKToK
KyAgICAgICAgKC1bV0tDb250ZW50VmlldyBfZG91YmxlVGFwUmVjb2duaXplZDpdKToKKyAgICAg
ICAgKC1bV0tDb250ZW50VmlldyBfdHdvRmluZ2VyRG91YmxlVGFwUmVjb2duaXplZDpdKToKKyAg
ICAgICAgRm9yd2FyZCBkb3VibGUgdGFwIHRvIHRoZSBTbWFydE1hZ25pZmljYXRpb25Db250cm9s
bGVyLgorCisgICAgICAgICogVUlQcm9jZXNzL21hYy9WaWV3R2VzdHVyZUNvbnRyb2xsZXIuaDoK
KyAgICAgICAgKiBVSVByb2Nlc3MvbWFjL1ZpZXdHZXN0dXJlQ29udHJvbGxlci5tZXNzYWdlcy5p
bjoKKyAgICAgICAgKiBVSVByb2Nlc3MvbWFjL1ZpZXdHZXN0dXJlQ29udHJvbGxlck1hYy5tbToK
KyAgICAgICAgKFdlYktpdDo6Vmlld0dlc3R1cmVDb250cm9sbGVyOjpkaWRDb2xsZWN0R2VvbWV0
cnlGb3JTbWFydE1hZ25pZmljYXRpb25HZXN0dXJlKToKKyAgICAgICAgUmV0cmlldmUgdGhlIG1p
bmltdW0vbWF4aW11bSB2aWV3cG9ydCBzY2FsZSBmcm9tIHRoZSBXZWJQcm9jZXNzLgorCisgICAg
ICAgICogV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICBBZGQgbmV3
IGZpbGVzLgorCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1ZpZXdHZXN0dXJlR2VvbWV0
cnlDb2xsZWN0b3IuY3BwOgorICAgICAgICAoV2ViS2l0OjpWaWV3R2VzdHVyZUdlb21ldHJ5Q29s
bGVjdG9yOjpWaWV3R2VzdHVyZUdlb21ldHJ5Q29sbGVjdG9yKToKKyAgICAgICAgKFdlYktpdDo6
Vmlld0dlc3R1cmVHZW9tZXRyeUNvbGxlY3Rvcjo6ZGlzcGF0Y2hEaWRDb2xsZWN0R2VvbWV0cnlG
b3JTbWFydE1hZ25pZmljYXRpb25HZXN0dXJlKToKKyAgICAgICAgKFdlYktpdDo6Vmlld0dlc3R1
cmVHZW9tZXRyeUNvbGxlY3Rvcjo6Y29sbGVjdEdlb21ldHJ5Rm9yU21hcnRNYWduaWZpY2F0aW9u
R2VzdHVyZSk6CisgICAgICAgIChXZWJLaXQ6OlZpZXdHZXN0dXJlR2VvbWV0cnlDb2xsZWN0b3I6
OmNvbGxlY3RHZW9tZXRyeUZvck1hZ25pZmljYXRpb25HZXN0dXJlKToKKyAgICAgICAgRmFjdG9y
IG91dCBjb2RlIHRvIHNlbmQgdGhlIGdlb21ldHJ5IGJhY2sgdG8gdGhlIFVJIHByb2Nlc3MuCisK
KyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvVmlld0dlc3R1cmVHZW9tZXRyeUNvbGxlY3Rv
ci5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9WaWV3R2VzdHVyZUdlb21ldHJ5Q29s
bGVjdG9yLm1lc3NhZ2VzLmluOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdl
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6V2ViUGFnZSk6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaDoKKyAgICAgICAgV2Ugc2hvdWxkIGhhdmUgYSBWaWV3
R2VzdHVyZUdlb21ldHJ5Q29sbGVjdG9yIG9uIGlPUyB0b28uCisKIDIwMTQtMDItMjYgIEFuZGVy
cyBDYXJsc3NvbiAgPGFuZGVyc2NhQGFwcGxlLmNvbT4KIAogICAgICAgICBSZW5hbWUgV2ViVmlz
aXRlZExpbmtQcm92aWRlciB0byBWaXNpdGVkTGlua1RhYmxlQ29udHJvbGxlcgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvRGVyaXZlZFNvdXJjZXMubWFrZSBiL1NvdXJjZS9XZWJLaXQyL0Rl
cml2ZWRTb3VyY2VzLm1ha2UKaW5kZXggZDYzZDM0My4uNDRhODI4NiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvRGVyaXZlZFNvdXJjZXMubWFrZQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9EZXJp
dmVkU291cmNlcy5tYWtlCkBAIC05Myw2ICs5Myw3IEBAIE1FU1NBR0VfUkVDRUlWRVJTID0gXAog
ICAgIFJlbW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yIFwKICAgICBTZWNJdGVtU2hpbSBcCiAgICAg
U2VjSXRlbVNoaW1Qcm94eSBcCisgICAgU21hcnRNYWduaWZpY2F0aW9uQ29udHJvbGxlciBcCiAg
ICAgU3RvcmFnZUFyZWFNYXAgXAogICAgIFN0b3JhZ2VNYW5hZ2VyIFwKICAgICBWaWV3R2VzdHVy
ZUNvbnRyb2xsZXIgXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9D
b2NvYS9XS1dlYlZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dL
V2ViVmlldy5tbQppbmRleCBiOGM1MTA3Li41ZTZhMjgyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQpAQCAtMTQyLDkgKzE0Miw4IEBACiAK
ICAgICBbc2VsZiBhZGRTdWJ2aWV3Ol9zY3JvbGxWaWV3LmdldCgpXTsKIAotICAgIF9jb250ZW50
VmlldyA9IGFkb3B0TlMoW1tXS0NvbnRlbnRWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOmJvdW5k
cyBjb250ZXh0OmNvbnRleHQgY29uZmlndXJhdGlvbjpzdGQ6Om1vdmUod2ViUGFnZUNvbmZpZ3Vy
YXRpb24pXSk7CisgICAgX2NvbnRlbnRWaWV3ID0gYWRvcHROUyhbW1dLQ29udGVudFZpZXcgYWxs
b2NdIGluaXRXaXRoRnJhbWU6Ym91bmRzIGNvbnRleHQ6Y29udGV4dCBjb25maWd1cmF0aW9uOnN0
ZDo6bW92ZSh3ZWJQYWdlQ29uZmlndXJhdGlvbikgd2ViVmlldzpzZWxmXSk7CiAgICAgX3BhZ2Ug
PSBbX2NvbnRlbnRWaWV3IHBhZ2VdOwotICAgIFtfY29udGVudFZpZXcgc2V0RGVsZWdhdGU6c2Vs
Zl07CiAgICAgW19jb250ZW50VmlldyBsYXllcl0uYW5jaG9yUG9pbnQgPSBDR1BvaW50WmVybzsK
ICAgICBbX2NvbnRlbnRWaWV3IHNldEZyYW1lOmJvdW5kc107CiAgICAgW19zY3JvbGxWaWV3IGFk
ZFN1YnZpZXc6X2NvbnRlbnRWaWV3LmdldCgpXTsKQEAgLTMxNCwxOSArMzEzLDE3IEBACiAgICAg
cmV0dXJuIFtfY29udGVudFZpZXcgYnJvd3NpbmdDb250ZXh0Q29udHJvbGxlcl07CiB9CiAKLSNw
cmFnbWEgbWFyayBXS0NvbnRlbnRWaWV3RGVsZWdhdGUKLQotLSAodm9pZCljb250ZW50Vmlld0Rp
ZENvbW1pdExvYWRGb3JNYWluRnJhbWU6KFdLQ29udGVudFZpZXcgKiljb250ZW50VmlldworLSAo
dm9pZClfZGlkQ29tbWl0TG9hZEZvck1haW5GcmFtZQogewogICAgIF9pc1dhaXRpbmdGb3JOZXdM
YXllclRyZWVBZnRlckRpZENvbW1pdExvYWQgPSBZRVM7CiB9CiAKLS0gKHZvaWQpY29udGVudFZp
ZXc6KFdLQ29udGVudFZpZXcgKiljb250ZW50VmlldyBkaWRDb21taXRMYXllclRyZWU6KGNvbnN0
IFdlYktpdDo6UmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb24mKWxheWVyVHJlZVRyYW5zYWN0aW9u
CistICh2b2lkKV9kaWRDb21taXRMYXllclRyZWU6KGNvbnN0IFdlYktpdDo6UmVtb3RlTGF5ZXJU
cmVlVHJhbnNhY3Rpb24mKWxheWVyVHJlZVRyYW5zYWN0aW9uCiB7CiAgICAgW19zY3JvbGxWaWV3
IHNldE1pbmltdW1ab29tU2NhbGU6bGF5ZXJUcmVlVHJhbnNhY3Rpb24ubWluaW11bVNjYWxlRmFj
dG9yKCldOwogICAgIFtfc2Nyb2xsVmlldyBzZXRNYXhpbXVtWm9vbVNjYWxlOmxheWVyVHJlZVRy
YW5zYWN0aW9uLm1heGltdW1TY2FsZUZhY3RvcigpXTsKICAgICBbX3Njcm9sbFZpZXcgc2V0Wm9v
bUVuYWJsZWQ6bGF5ZXJUcmVlVHJhbnNhY3Rpb24uYWxsb3dzVXNlclNjYWxpbmcoKV07Ci0gICAg
aWYgKCFsYXllclRyZWVUcmFuc2FjdGlvbi5zY2FsZVdhc1NldEJ5VUlQcm9jZXNzKCkgJiYgIVtf
c2Nyb2xsVmlldyBpc1pvb21pbmddICYmICFbX3Njcm9sbFZpZXcgaXNab29tQm91bmNpbmddKQor
ICAgIGlmICghbGF5ZXJUcmVlVHJhbnNhY3Rpb24uc2NhbGVXYXNTZXRCeVVJUHJvY2VzcygpICYm
ICFbX3Njcm9sbFZpZXcgaXNab29taW5nXSAmJiAhW19zY3JvbGxWaWV3IGlzWm9vbUJvdW5jaW5n
XSAmJiAhW19zY3JvbGxWaWV3IF9pc0FuaW1hdGluZ1pvb21dKQogICAgICAgICBbX3Njcm9sbFZp
ZXcgc2V0Wm9vbVNjYWxlOmxheWVyVHJlZVRyYW5zYWN0aW9uLnBhZ2VTY2FsZUZhY3RvcigpXTsK
IAogICAgIGlmIChfZ2VzdHVyZUNvbnRyb2xsZXIpCkBAIC0zNDAsNyArMzM3LDcgQEAKICAgICAK
IH0KIAotLSAoUmV0YWluUHRyPENHSW1hZ2VSZWY+KXRha2VWaWV3U25hcHNob3RGb3JDb250ZW50
VmlldzooV0tDb250ZW50VmlldyAqKWNvbnRlbnRWaWV3CistIChSZXRhaW5QdHI8Q0dJbWFnZVJl
Zj4pX3Rha2VWaWV3U25hcHNob3QKIHsKICAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIGJlIGFibGUg
dG8gdXNlIGFjcXVpcmUgYW4gSU9TdXJmYWNlIGRpcmVjdGx5LCBpbnN0ZWFkIG9mIGdvaW5nIHRv
IENHSW1hZ2UgaGVyZSBhbmQgYmFjayBpbiBWaWV3U25hcHNob3RTdG9yZS4KICAgICBVSUdyYXBo
aWNzQmVnaW5JbWFnZUNvbnRleHRXaXRoT3B0aW9ucyhzZWxmLmJvdW5kcy5zaXplLCBZRVMsIHNl
bGYud2luZG93LnNjcmVlbi5zY2FsZSk7CkBAIC0zNTAsNiArMzQ3LDEyMCBAQAogICAgIHJldHVy
biBpbWFnZS5DR0ltYWdlOwogfQogCistICh2b2lkKV96b29tVG9Qb2ludDooV2ViQ29yZTo6Rmxv
YXRQb2ludClwb2ludCBhdFNjYWxlOihkb3VibGUpc2NhbGUKK3sKKyAgICBkb3VibGUgbWF4aW11
bVpvb21EdXJhdGlvbiA9IDAuNDsKKyAgICBkb3VibGUgbWluaW11bVpvb21EdXJhdGlvbiA9IDAu
MTsKKyAgICBkb3VibGUgem9vbUR1cmF0aW9uRmFjdG9yID0gMC4zOworCisgICAgQ0ZUaW1lSW50
ZXJ2YWwgZHVyYXRpb24gPSBzdGQ6Om1pbihmYWJzKGxvZyhbX3Njcm9sbFZpZXcgem9vbVNjYWxl
XSkgLSBsb2coc2NhbGUpKSAqIHpvb21EdXJhdGlvbkZhY3RvciArIG1pbmltdW1ab29tRHVyYXRp
b24sIG1heGltdW1ab29tRHVyYXRpb24pOworCisgICAgW19jb250ZW50VmlldyB3aWxsU3RhcnRV
c2VyVHJpZ2dlcmVkWm9vbV07CisgICAgW19zY3JvbGxWaWV3IF96b29tVG9DZW50ZXI6cG9pbnQg
c2NhbGU6c2NhbGUgZHVyYXRpb246ZHVyYXRpb25dOworfQorCistICh2b2lkKV96b29tVG9SZWN0
OihXZWJDb3JlOjpGbG9hdFJlY3QpdGFyZ2V0UmVjdCBhdFNjYWxlOihkb3VibGUpc2NhbGUgb3Jp
Z2luOihXZWJDb3JlOjpGbG9hdFBvaW50KW9yaWdpbgoreworICAgIFdlYkNvcmU6OkZsb2F0U2l6
ZSB1bm9ic2N1cmVkQ29udGVudFNpemUgPSBfcGFnZS0+dW5vYnNjdXJlZENvbnRlbnRSZWN0KCku
c2l6ZSgpOworICAgIGRvdWJsZSBjdXJyZW50U2NhbGVGYWN0b3IgPSBbX3Njcm9sbFZpZXcgem9v
bVNjYWxlXTsKKyAgICBkb3VibGUgcmVsYXRpdmVTY2FsZSA9IHNjYWxlIC8gY3VycmVudFNjYWxl
RmFjdG9yOworCisgICAgQ0dTaXplIHRhcmdldFJlY3RTaXplSW5TY3JvbGxWaWV3Q29vcmRpbmF0
ZXNBZnRlclpvb20gPSBbX3Njcm9sbFZpZXcgY29udmVydFJlY3Q6dGFyZ2V0UmVjdCBmcm9tVmll
dzpfY29udGVudFZpZXcuZ2V0KCldLnNpemU7CisgICAgdGFyZ2V0UmVjdFNpemVJblNjcm9sbFZp
ZXdDb29yZGluYXRlc0FmdGVyWm9vbS53aWR0aCAqPSByZWxhdGl2ZVNjYWxlOworICAgIHRhcmdl
dFJlY3RTaXplSW5TY3JvbGxWaWV3Q29vcmRpbmF0ZXNBZnRlclpvb20uaGVpZ2h0ICo9IHJlbGF0
aXZlU2NhbGU7CisKKyAgICAvLyBDZW50ZXIgdGhlIHRhcmdldCByZWN0IGluIHRoZSBzY3JvbGwg
dmlldy4KKyAgICAvLyBJZiB0aGUgdGFyZ2V0IGRvZXNuJ3QgZml0IGluIHRoZSBzY3JvbGwgdmll
dywgY2VudGVyIG9uIHRoZSBnZXN0dXJlIGxvY2F0aW9uIGluc3RlYWQuCisgICAgV2ViQ29yZTo6
RmxvYXRQb2ludCB6b29tQ2VudGVyID0gdGFyZ2V0UmVjdC5jZW50ZXIoKTsKKworICAgIGlmICh0
YXJnZXRSZWN0U2l6ZUluU2Nyb2xsVmlld0Nvb3JkaW5hdGVzQWZ0ZXJab29tLndpZHRoID4gdW5v
YnNjdXJlZENvbnRlbnRTaXplLndpZHRoKCkpCisgICAgICAgIHpvb21DZW50ZXIuc2V0WChvcmln
aW4ueCgpKTsKKyAgICBpZiAodGFyZ2V0UmVjdFNpemVJblNjcm9sbFZpZXdDb29yZGluYXRlc0Fm
dGVyWm9vbS5oZWlnaHQgPiB1bm9ic2N1cmVkQ29udGVudFNpemUuaGVpZ2h0KCkpCisgICAgICAg
IHpvb21DZW50ZXIuc2V0WShvcmlnaW4ueSgpKTsKKworICAgIFtzZWxmIF96b29tVG9Qb2ludDp6
b29tQ2VudGVyIGF0U2NhbGU6c2NhbGVdOworfQorCitzdGF0aWMgV2ViQ29yZTo6RmxvYXRQb2lu
dCBjb25zdHJhaW5Db250ZW50T2Zmc2V0KFdlYkNvcmU6OkZsb2F0UG9pbnQgY29udGVudE9mZnNl
dCwgV2ViQ29yZTo6RmxvYXRTaXplIGNvbnRlbnRTaXplLCBXZWJDb3JlOjpGbG9hdFNpemUgc2Ny
b2xsVmlld1NpemUpCit7CisgICAgV2ViQ29yZTo6RmxvYXRTaXplIG1heGltdW1Db250ZW50T2Zm
c2V0ID0gY29udGVudFNpemUgLSBzY3JvbGxWaWV3U2l6ZTsKKyAgICBjb250ZW50T2Zmc2V0ID0g
Y29udGVudE9mZnNldC5zaHJ1bmtUbyhXZWJDb3JlOjpGbG9hdFBvaW50KG1heGltdW1Db250ZW50
T2Zmc2V0LndpZHRoKCksIG1heGltdW1Db250ZW50T2Zmc2V0LmhlaWdodCgpKSk7CisgICAgY29u
dGVudE9mZnNldCA9IGNvbnRlbnRPZmZzZXQuZXhwYW5kZWRUbyhXZWJDb3JlOjpGbG9hdFBvaW50
KCkpOworICAgIHJldHVybiBjb250ZW50T2Zmc2V0OworfQorCistIChCT09MKV9zY3JvbGxUb1Jl
Y3Q6KFdlYkNvcmU6OkZsb2F0UmVjdCl0YXJnZXRSZWN0IG9yaWdpbjooV2ViQ29yZTo6RmxvYXRQ
b2ludClvcmlnaW4gbWluaW11bVNjcm9sbERpc3RhbmNlOihmbG9hdCltaW5pbXVtU2Nyb2xsRGlz
dGFuY2UKK3sKKyAgICBXZWJDb3JlOjpGbG9hdFJlY3QgdW5vYnNjdXJlZENvbnRlbnRSZWN0ID0g
X3BhZ2UtPnVub2JzY3VyZWRDb250ZW50UmVjdCgpOworICAgIFdlYkNvcmU6OkZsb2F0UG9pbnQg
dW5vYnNjdXJlZENvbnRlbnRPZmZzZXQgPSB1bm9ic2N1cmVkQ29udGVudFJlY3QubG9jYXRpb24o
KTsKKyAgICBXZWJDb3JlOjpGbG9hdFNpemUgY29udGVudFNpemUoW19jb250ZW50VmlldyBib3Vu
ZHNdLnNpemUpOworCisgICAgV2ViQ29yZTo6RmxvYXRQb2ludCBvcmlnaW5JblNjcm9sbFZpZXdD
b29yZGluYXRlcyhbX3Njcm9sbFZpZXcgY29udmVydFBvaW50Om9yaWdpbiBmcm9tVmlldzpfY29u
dGVudFZpZXcuZ2V0KCldKTsKKyAgICBXZWJDb3JlOjpGbG9hdFJlY3QgdGFyZ2V0UmVjdEluU2Ny
b2xsVmlld0Nvb3JkaW5hdGVzKFtfc2Nyb2xsVmlldyBjb252ZXJ0UmVjdDp0YXJnZXRSZWN0IGZy
b21WaWV3Ol9jb250ZW50Vmlldy5nZXQoKV0pOworCisgICAgLy8gQ2VudGVyIHRoZSB0YXJnZXQg
cmVjdCBpbiB0aGUgc2Nyb2xsIHZpZXcuCisgICAgLy8gSWYgdGhlIHRhcmdldCBkb2Vzbid0IGZp
dCBpbiB0aGUgc2Nyb2xsIHZpZXcsIGNlbnRlciBvbiB0aGUgZ2VzdHVyZSBsb2NhdGlvbiBpbnN0
ZWFkLgorICAgIFdlYkNvcmU6OkZsb2F0UG9pbnQgbmV3VW5vc2JjdXJlZENvbnRlbnRPZmZzZXQ7
CisgICAgaWYgKHRhcmdldFJlY3RJblNjcm9sbFZpZXdDb29yZGluYXRlcy53aWR0aCgpIDw9IHVu
b2JzY3VyZWRDb250ZW50UmVjdC53aWR0aCgpKQorICAgICAgICBuZXdVbm9zYmN1cmVkQ29udGVu
dE9mZnNldC5zZXRYKHRhcmdldFJlY3RJblNjcm9sbFZpZXdDb29yZGluYXRlcy54KCkgLSAodW5v
YnNjdXJlZENvbnRlbnRSZWN0LndpZHRoKCkgLSB0YXJnZXRSZWN0SW5TY3JvbGxWaWV3Q29vcmRp
bmF0ZXMud2lkdGgoKSkgLyAyKTsKKyAgICBlbHNlCisgICAgICAgIG5ld1Vub3NiY3VyZWRDb250
ZW50T2Zmc2V0LnNldFgob3JpZ2luSW5TY3JvbGxWaWV3Q29vcmRpbmF0ZXMueCgpIC0gdW5vYnNj
dXJlZENvbnRlbnRSZWN0LndpZHRoKCkgLyAyKTsKKyAgICBpZiAodGFyZ2V0UmVjdEluU2Nyb2xs
Vmlld0Nvb3JkaW5hdGVzLmhlaWdodCgpIDw9IHVub2JzY3VyZWRDb250ZW50UmVjdC5oZWlnaHQo
KSkKKyAgICAgICAgbmV3VW5vc2JjdXJlZENvbnRlbnRPZmZzZXQuc2V0WSh0YXJnZXRSZWN0SW5T
Y3JvbGxWaWV3Q29vcmRpbmF0ZXMueSgpIC0gKHVub2JzY3VyZWRDb250ZW50UmVjdC5oZWlnaHQo
KSAtIHRhcmdldFJlY3RJblNjcm9sbFZpZXdDb29yZGluYXRlcy5oZWlnaHQoKSkgLyAyKTsKKyAg
ICBlbHNlCisgICAgICAgIG5ld1Vub3NiY3VyZWRDb250ZW50T2Zmc2V0LnNldFkob3JpZ2luSW5T
Y3JvbGxWaWV3Q29vcmRpbmF0ZXMueSgpIC0gdW5vYnNjdXJlZENvbnRlbnRSZWN0LmhlaWdodCgp
IC8gMik7CisgICAgbmV3VW5vc2JjdXJlZENvbnRlbnRPZmZzZXQgPSBjb25zdHJhaW5Db250ZW50
T2Zmc2V0KG5ld1Vub3NiY3VyZWRDb250ZW50T2Zmc2V0LCBjb250ZW50U2l6ZSwgdW5vYnNjdXJl
ZENvbnRlbnRSZWN0LnNpemUoKSk7CisKKyAgICBpZiAodW5vYnNjdXJlZENvbnRlbnRPZmZzZXQg
PT0gbmV3VW5vc2JjdXJlZENvbnRlbnRPZmZzZXQpIHsKKyAgICAgICAgaWYgKHRhcmdldFJlY3RJ
blNjcm9sbFZpZXdDb29yZGluYXRlcy53aWR0aCgpID4gdW5vYnNjdXJlZENvbnRlbnRSZWN0Lndp
ZHRoKCkpCisgICAgICAgICAgICBuZXdVbm9zYmN1cmVkQ29udGVudE9mZnNldC5zZXRYKG9yaWdp
bkluU2Nyb2xsVmlld0Nvb3JkaW5hdGVzLngoKSAtIHVub2JzY3VyZWRDb250ZW50UmVjdC53aWR0
aCgpIC8gMik7CisgICAgICAgIGlmICh0YXJnZXRSZWN0SW5TY3JvbGxWaWV3Q29vcmRpbmF0ZXMu
aGVpZ2h0KCkgPiB1bm9ic2N1cmVkQ29udGVudFJlY3QuaGVpZ2h0KCkpCisgICAgICAgICAgICBu
ZXdVbm9zYmN1cmVkQ29udGVudE9mZnNldC5zZXRZKG9yaWdpbkluU2Nyb2xsVmlld0Nvb3JkaW5h
dGVzLnkoKSAtIHVub2JzY3VyZWRDb250ZW50UmVjdC5oZWlnaHQoKSAvIDIpOworICAgICAgICBu
ZXdVbm9zYmN1cmVkQ29udGVudE9mZnNldCA9IGNvbnN0cmFpbkNvbnRlbnRPZmZzZXQobmV3VW5v
c2JjdXJlZENvbnRlbnRPZmZzZXQsIGNvbnRlbnRTaXplLCB1bm9ic2N1cmVkQ29udGVudFJlY3Qu
c2l6ZSgpKTsKKyAgICB9CisKKyAgICBXZWJDb3JlOjpGbG9hdFNpemUgY29udGVudE9mZnNldERl
bHRhID0gbmV3VW5vc2JjdXJlZENvbnRlbnRPZmZzZXQgLSB1bm9ic2N1cmVkQ29udGVudE9mZnNl
dDsKKyAgICBmbG9hdCBzY3JvbGxEaXN0YW5jZSA9IGNvbnRlbnRPZmZzZXREZWx0YS5kaWFnb25h
bExlbmd0aCgpOworCisgICAgaWYgKHNjcm9sbERpc3RhbmNlIDwgbWluaW11bVNjcm9sbERpc3Rh
bmNlKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBbX3Njcm9sbFZpZXcgc2V0Q29udGVu
dE9mZnNldDooW19zY3JvbGxWaWV3IGNvbnRlbnRPZmZzZXRdICsgY29udGVudE9mZnNldERlbHRh
KSBhbmltYXRlZDpZRVNdOworICAgIHJldHVybiB0cnVlOworfQorCistICh2b2lkKV96b29tT3V0
V2l0aE9yaWdpbjooV2ViQ29yZTo6RmxvYXRQb2ludClvcmlnaW4KK3sKKyAgICBbc2VsZiBfem9v
bVRvUG9pbnQ6b3JpZ2luIGF0U2NhbGU6W19zY3JvbGxWaWV3IG1pbmltdW1ab29tU2NhbGVdXTsK
K30KKworLSAoQk9PTClfem9vbVRvUmVjdDooV2ViQ29yZTo6RmxvYXRSZWN0KXRhcmdldFJlY3Qg
d2l0aE9yaWdpbjooV2ViQ29yZTo6RmxvYXRQb2ludClvcmlnaW4gZml0RW50aXJlUmVjdDooQk9P
TClmaXRFbnRpcmVSZWN0IG1pbmltdW1TY2FsZTooZG91YmxlKW1pbmltdW1TY2FsZSBtYXhpbXVt
U2NhbGU6KGRvdWJsZSltYXhpbXVtU2NhbGUgbWluaW11bVNjcm9sbERpc3RhbmNlOihmbG9hdClt
aW5pbXVtU2Nyb2xsRGlzdGFuY2UKK3sKKyAgICBjb25zdCBmbG9hdCBtYXhpbXVtU2NhbGVGYWN0
b3JEZWx0YUZvclBhblNjcm9sbCA9IDAuMDI7CisKKyAgICBpZiAoIVtfc2Nyb2xsVmlldyBpc1Nj
cm9sbEVuYWJsZWRdIHx8ICFbX3Njcm9sbFZpZXcgaXNab29tRW5hYmxlZF0pCisgICAgICAgIHJl
dHVybiBmYWxzZTsKKworICAgIFdlYkNvcmU6OkZsb2F0U2l6ZSB1bm9ic2N1cmVkQ29udGVudFNp
emUgPSBfcGFnZS0+dW5vYnNjdXJlZENvbnRlbnRSZWN0KCkuc2l6ZSgpOworICAgIGRvdWJsZSBo
b3Jpem9udGFsU2NhbGUgPSB1bm9ic2N1cmVkQ29udGVudFNpemUud2lkdGgoKSAvIHRhcmdldFJl
Y3Qud2lkdGgoKTsKKyAgICBkb3VibGUgdmVydGljYWxTY2FsZSA9IHVub2JzY3VyZWRDb250ZW50
U2l6ZS5oZWlnaHQoKSAvIHRhcmdldFJlY3QuaGVpZ2h0KCk7CisKKyAgICBob3Jpem9udGFsU2Nh
bGUgPSBzdGQ6Om1pbihzdGQ6Om1heChob3Jpem9udGFsU2NhbGUsIG1pbmltdW1TY2FsZSksIG1h
eGltdW1TY2FsZSk7CisgICAgdmVydGljYWxTY2FsZSA9IHN0ZDo6bWluKHN0ZDo6bWF4KHZlcnRp
Y2FsU2NhbGUsIG1pbmltdW1TY2FsZSksIG1heGltdW1TY2FsZSk7CisKKyAgICBkb3VibGUgdGFy
Z2V0U2NhbGUgPSBmaXRFbnRpcmVSZWN0ID8gc3RkOjptaW4oaG9yaXpvbnRhbFNjYWxlLCB2ZXJ0
aWNhbFNjYWxlKSA6IGhvcml6b250YWxTY2FsZTsKKyAgICBkb3VibGUgY3VycmVudFNjYWxlID0g
W19zY3JvbGxWaWV3IHpvb21TY2FsZV07CisgICAgaWYgKGZhYnModGFyZ2V0U2NhbGUgLSBjdXJy
ZW50U2NhbGUpIDwgbWF4aW11bVNjYWxlRmFjdG9yRGVsdGFGb3JQYW5TY3JvbGwpIHsKKyAgICAg
ICAgaWYgKFtzZWxmIF9zY3JvbGxUb1JlY3Q6dGFyZ2V0UmVjdCBvcmlnaW46b3JpZ2luIG1pbmlt
dW1TY3JvbGxEaXN0YW5jZTptaW5pbXVtU2Nyb2xsRGlzdGFuY2VdKQorICAgICAgICAgICAgcmV0
dXJuIHRydWU7CisgICAgfSBlbHNlIGlmICh0YXJnZXRTY2FsZSAhPSBjdXJyZW50U2NhbGUpIHsK
KyAgICAgICAgW3NlbGYgX3pvb21Ub1JlY3Q6dGFyZ2V0UmVjdCBhdFNjYWxlOnRhcmdldFNjYWxl
IG9yaWdpbjpvcmlnaW5dOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisgICAgCisgICAg
cmV0dXJuIGZhbHNlOworfQorCiAjcHJhZ21hIG1hcmsgLSBVSVNjcm9sbFZpZXdEZWxlZ2F0ZQog
CiAtIChVSVZpZXcgKil2aWV3Rm9yWm9vbWluZ0luU2Nyb2xsVmlldzooVUlTY3JvbGxWaWV3ICop
c2Nyb2xsVmlldwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2Nv
YS9XS1dlYlZpZXdJbnRlcm5hbC5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2Nv
YS9XS1dlYlZpZXdJbnRlcm5hbC5oCmluZGV4IDMxNzZiNjcuLjlmNGJmMjcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3SW50ZXJuYWwuaAor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld0ludGVybmFs
LmgKQEAgLTMxLDExICszMSwxMiBAQAogCiAjaWYgUExBVEZPUk0oSU9TKQogI2ltcG9ydCAiV0tD
b250ZW50Vmlldy5oIgorI2ltcG9ydCA8V2ViQ29yZS9GbG9hdFJlY3QuaD4KICNpbXBvcnQgPFVJ
S2l0L1VJU2Nyb2xsVmlld19Qcml2YXRlLmg+CiAjZW5kaWYKIAogI2lmIFBMQVRGT1JNKElPUykK
LSNkZWZpbmUgV0tfV0VCX1ZJRVdfUFJPVE9DT0xTIDxVSVNjcm9sbFZpZXdEZWxlZ2F0ZSwgV0tD
b250ZW50Vmlld0RlbGVnYXRlPgorI2RlZmluZSBXS19XRUJfVklFV19QUk9UT0NPTFMgPFVJU2Ny
b2xsVmlld0RlbGVnYXRlPgogI2VuZGlmCiAKICNpZiAhZGVmaW5lZChXS19XRUJfVklFV19QUk9U
T0NPTFMpCkBAIC01MSw2ICs1MiwxNiBAQCBjbGFzcyBXZWJQYWdlUHJveHk7CiBAcGFja2FnZQog
ICAgIFJlZlB0cjxXZWJLaXQ6OldlYlBhZ2VQcm94eT4gX3BhZ2U7CiB9CisKKyNpZiBQTEFURk9S
TShJT1MpCistICh2b2lkKV9kaWRDb21taXRMb2FkRm9yTWFpbkZyYW1lOworLSAodm9pZClfZGlk
Q29tbWl0TGF5ZXJUcmVlOihjb25zdCBXZWJLaXQ6OlJlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9u
JilsYXllclRyZWVUcmFuc2FjdGlvbjsKKworLSAoUmV0YWluUHRyPENHSW1hZ2VSZWY+KV90YWtl
Vmlld1NuYXBzaG90OworCistIChCT09MKV96b29tVG9SZWN0OihXZWJDb3JlOjpGbG9hdFJlY3Qp
dGFyZ2V0UmVjdCB3aXRoT3JpZ2luOihXZWJDb3JlOjpGbG9hdFBvaW50KW9yaWdpbiBmaXRFbnRp
cmVSZWN0OihCT09MKWZpdEVudGlyZVJlY3QgbWluaW11bVNjYWxlOihkb3VibGUpbWluaW11bVNj
YWxlIG1heGltdW1TY2FsZTooZG91YmxlKW1heGltdW1TY2FsZSBtaW5pbXVtU2Nyb2xsRGlzdGFu
Y2U6KGZsb2F0KW1pbmltdW1TY3JvbGxEaXN0YW5jZTsKKy0gKHZvaWQpX3pvb21PdXRXaXRoT3Jp
Z2luOihXZWJDb3JlOjpGbG9hdFBvaW50KW9yaWdpbjsKKyNlbmRpZgogQGVuZAogCiAjZW5kaWYK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvaW9zL1dLVmlld0lPUy5t
bSBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvaW9zL1dLVmlld0lPUy5tbQppbmRleCA1
NGEzMjE1Li5hMTNmYTlkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L2lvcy9XS1ZpZXdJT1MubW0KKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9pb3Mv
V0tWaWV3SU9TLm1tCkBAIC0yMjgsNyArMjI4LDcgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYktpdDsK
ICAgICB3ZWJQYWdlQ29uZmlndXJhdGlvbi5wYWdlR3JvdXAgPSB0b0ltcGwocGFnZUdyb3VwUmVm
KTsKICAgICB3ZWJQYWdlQ29uZmlndXJhdGlvbi5yZWxhdGVkUGFnZSA9IHRvSW1wbChyZWxhdGVk
UGFnZSk7CiAKLSAgICBfY29udGVudFZpZXcgPSBhZG9wdE5TKFtbV0tDb250ZW50VmlldyBhbGxv
Y10gaW5pdFdpdGhGcmFtZTpib3VuZHMgY29udGV4dDoqdG9JbXBsKGNvbnRleHRSZWYpIGNvbmZp
Z3VyYXRpb246c3RkOjptb3ZlKHdlYlBhZ2VDb25maWd1cmF0aW9uKV0pOworICAgIF9jb250ZW50
VmlldyA9IGFkb3B0TlMoW1tXS0NvbnRlbnRWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOmJvdW5k
cyBjb250ZXh0Oip0b0ltcGwoY29udGV4dFJlZikgY29uZmlndXJhdGlvbjpzdGQ6Om1vdmUod2Vi
UGFnZUNvbmZpZ3VyYXRpb24pIHdlYlZpZXc6bnVsbHB0cl0pOwogCiAgICAgW1tfY29udGVudFZp
ZXcgbGF5ZXJdIHNldEFuY2hvclBvaW50OkNHUG9pbnRaZXJvXTsKICAgICBbX2NvbnRlbnRWaWV3
IHNldEZyYW1lOmJvdW5kc107CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
aW9zL1NtYXJ0TWFnbmlmaWNhdGlvbkNvbnRyb2xsZXIuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9pb3MvU21hcnRNYWduaWZpY2F0aW9uQ29udHJvbGxlci5oCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAuLmFiMWQwOTgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvaW9zL1NtYXJ0TWFnbmlmaWNhdGlvbkNvbnRyb2xsZXIuaApAQCAtMCww
ICsxLDY1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzLCAyMDE0IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBTbWFydE1hZ25pZmljYXRpb25D
b250cm9sbGVyX2gKKyNkZWZpbmUgU21hcnRNYWduaWZpY2F0aW9uQ29udHJvbGxlcl9oCisKKyNp
ZiBQTEFURk9STShJT1MpCisKKyNpbmNsdWRlICJNZXNzYWdlUmVjZWl2ZXIuaCIKKyNpbmNsdWRl
IDxXZWJDb3JlL0Zsb2F0UmVjdC5oPgorI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KKworT0JK
Q19DTEFTUyBXS0NvbnRlbnRWaWV3OworT0JKQ19DTEFTUyBVSVNjcm9sbFZpZXc7CisKK25hbWVz
cGFjZSBXZWJLaXQgeworCitjbGFzcyBXZWJQYWdlUHJveHk7CisKK2NsYXNzIFNtYXJ0TWFnbmlm
aWNhdGlvbkNvbnRyb2xsZXIgOiBwcml2YXRlIElQQzo6TWVzc2FnZVJlY2VpdmVyIHsKKyAgICBX
VEZfTUFLRV9OT05DT1BZQUJMRShTbWFydE1hZ25pZmljYXRpb25Db250cm9sbGVyKTsKK3B1Ymxp
YzoKKyAgICBTbWFydE1hZ25pZmljYXRpb25Db250cm9sbGVyKFdLQ29udGVudFZpZXcgKik7Cisg
ICAgflNtYXJ0TWFnbmlmaWNhdGlvbkNvbnRyb2xsZXIoKTsKKworICAgIHZvaWQgaGFuZGxlU21h
cnRNYWduaWZpY2F0aW9uR2VzdHVyZShXZWJDb3JlOjpGbG9hdFBvaW50IG9yaWdpbik7CisgICAg
dm9pZCBoYW5kbGVSZXNldE1hZ25pZmljYXRpb25HZXN0dXJlKFdlYkNvcmU6OkZsb2F0UG9pbnQg
b3JpZ2luKTsKKworcHJpdmF0ZToKKyAgICAvLyBJUEM6Ok1lc3NhZ2VSZWNlaXZlci4KKyAgICB2
aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uKiwgSVBDOjpNZXNz
YWdlRGVjb2RlciYpIG92ZXJyaWRlOworCisgICAgdm9pZCBkaWRDb2xsZWN0R2VvbWV0cnlGb3JT
bWFydE1hZ25pZmljYXRpb25HZXN0dXJlKFdlYkNvcmU6OkZsb2F0UG9pbnQgb3JpZ2luLCBXZWJD
b3JlOjpGbG9hdFJlY3QgcmVuZGVyUmVjdCwgV2ViQ29yZTo6RmxvYXRSZWN0IHZpc2libGVDb250
ZW50Qm91bmRzLCBib29sIGlzUmVwbGFjZWRFbGVtZW50LCBib29sIGZyYW1lSGFuZGxlc01hZ25p
ZmljYXRpb25HZXN0dXJlLCBkb3VibGUgdmlld3BvcnRNaW5pbXVtU2NhbGUsIGRvdWJsZSB2aWV3
cG9ydE1heGltdW1TY2FsZSk7CisKKyAgICBXZWJQYWdlUHJveHkmIG1fd2ViUGFnZVByb3h5Owor
ICAgIFdLQ29udGVudFZpZXcgKm1fY29udGVudFZpZXc7Cit9OworICAgIAorfSAvLyBuYW1lc3Bh
Y2UgV2ViS2l0CisKKyNlbmRpZiAvLyBQTEFURk9STShJT1MpCisKKyNlbmRpZiAvLyBTbWFydE1h
Z25pZmljYXRpb25Db250cm9sbGVyX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9pb3MvU21hcnRNYWduaWZpY2F0aW9uQ29udHJvbGxlci5tZXNzYWdlcy5pbiBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvU21hcnRNYWduaWZpY2F0aW9uQ29udHJvbGxlci5tZXNz
YWdlcy5pbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kY2VlYjEzCi0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9TbWFydE1hZ25pZmlj
YXRpb25Db250cm9sbGVyLm1lc3NhZ2VzLmluCkBAIC0wLDAgKzEsMjkgQEAKKyMgQ29weXJpZ2h0
IChDKSAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworIyBhcmUgbWV0OgorIyAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgMi4g
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisjICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisjICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorIworIyBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnIEFORAorIyBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorIyBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisj
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SCisjIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKKyMgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IK
KyMgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIKKyMgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwKKyMgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKKyMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworI2lmIFBMQVRGT1JNKElPUykKKworbWVzc2Fn
ZXMgLT4gU21hcnRNYWduaWZpY2F0aW9uQ29udHJvbGxlciB7CisgICAgRGlkQ29sbGVjdEdlb21l
dHJ5Rm9yU21hcnRNYWduaWZpY2F0aW9uR2VzdHVyZShXZWJDb3JlOjpGbG9hdFBvaW50IG9yaWdp
biwgV2ViQ29yZTo6RmxvYXRSZWN0IHJlbmRlclJlY3QsIFdlYkNvcmU6OkZsb2F0UmVjdCB2aXNp
YmxlQ29udGVudEJvdW5kcywgYm9vbCBpc1JlcGxhY2VkRWxlbWVudCwgYm9vbCBmcmFtZUhhbmRs
ZXNNYWduaWZpY2F0aW9uR2VzdHVyZSwgZG91YmxlIHZpZXdwb3J0TWluaW11bVNjYWxlLCBkb3Vi
bGUgdmlld3BvcnRNYXhpbXVtU2NhbGUpCit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL2lvcy9TbWFydE1hZ25pZmljYXRpb25Db250cm9sbGVyLm1tIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9TbWFydE1hZ25pZmljYXRpb25Db250cm9sbGVy
Lm1tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjMwNTMwZTQKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1NtYXJ0TWFnbmlmaWNhdGlv
bkNvbnRyb2xsZXIubW0KQEAgLTAsMCArMSwxMTcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0ICJj
b25maWcuaCIKKyNpbXBvcnQgIlNtYXJ0TWFnbmlmaWNhdGlvbkNvbnRyb2xsZXIuaCIKKworI2lm
IFBMQVRGT1JNKElPUykKKworI2ltcG9ydCAiU21hcnRNYWduaWZpY2F0aW9uQ29udHJvbGxlck1l
c3NhZ2VzLmgiCisjaW1wb3J0ICJWaWV3R2VzdHVyZUdlb21ldHJ5Q29sbGVjdG9yTWVzc2FnZXMu
aCIKKyNpbXBvcnQgIldLQ29udGVudFZpZXcuaCIKKyNpbXBvcnQgIldLU2Nyb2xsVmlldy5oIgor
I2ltcG9ydCAiV2ViUGFnZUdyb3VwLmgiCisjaW1wb3J0ICJXZWJQYWdlTWVzc2FnZXMuaCIKKyNp
bXBvcnQgIldlYlBhZ2VQcm94eS5oIgorI2ltcG9ydCAiV2ViUHJvY2Vzc1Byb3h5LmgiCisjaW1w
b3J0IDxVSUtpdC9VSUtpdC5oPgorI2ltcG9ydCA8VUlLaXQvVUlLaXRfUHJpdmF0ZS5oPgorCit1
c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKKworc3RhdGljIGNvbnN0IGZsb2F0IHNtYXJ0TWFnbmlm
aWNhdGlvblBhblNjcm9sbFRocmVzaG9sZFpvb21lZE91dCA9IDYwOworc3RhdGljIGNvbnN0IGZs
b2F0IHNtYXJ0TWFnbmlmaWNhdGlvblBhblNjcm9sbFRocmVzaG9sZElQaG9uZSA9IDEwMDsKK3N0
YXRpYyBjb25zdCBmbG9hdCBzbWFydE1hZ25pZmljYXRpb25QYW5TY3JvbGxUaHJlc2hvbGRJUGFk
ID0gMTUwOworc3RhdGljIGNvbnN0IGZsb2F0IHNtYXJ0TWFnbmlmaWNhdGlvbkVsZW1lbnRQYWRk
aW5nID0gMC4wNTsKKworc3RhdGljIGNvbnN0IGRvdWJsZSBzbWFydE1hZ25pZmljYXRpb25NYXhp
bXVtU2NhbGUgPSAxLjY7CitzdGF0aWMgY29uc3QgZG91YmxlIHNtYXJ0TWFnbmlmaWNhdGlvbk1p
bmltdW1TY2FsZSA9IDA7CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitTbWFydE1hZ25pZmljYXRp
b25Db250cm9sbGVyOjpTbWFydE1hZ25pZmljYXRpb25Db250cm9sbGVyKFdLQ29udGVudFZpZXcg
KmNvbnRlbnRWaWV3KQorICAgIDogbV93ZWJQYWdlUHJveHkoKmNvbnRlbnRWaWV3LnBhZ2UpCisg
ICAgLCBtX2NvbnRlbnRWaWV3KGNvbnRlbnRWaWV3KQoreworICAgIG1fd2ViUGFnZVByb3h5LnBy
b2Nlc3MoKS5hZGRNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OlNtYXJ0TWFnbmlmaWNhdGlvbkNv
bnRyb2xsZXI6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgbV93ZWJQYWdlUHJveHkucGFnZUlEKCks
ICp0aGlzKTsKK30KKworU21hcnRNYWduaWZpY2F0aW9uQ29udHJvbGxlcjo6flNtYXJ0TWFnbmlm
aWNhdGlvbkNvbnRyb2xsZXIoKQoreworICAgIG1fd2ViUGFnZVByb3h5LnByb2Nlc3MoKS5yZW1v
dmVNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OlNtYXJ0TWFnbmlmaWNhdGlvbkNvbnRyb2xsZXI6
Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgbV93ZWJQYWdlUHJveHkucGFnZUlEKCkpOworfQorCit2
b2lkIFNtYXJ0TWFnbmlmaWNhdGlvbkNvbnRyb2xsZXI6OmhhbmRsZVNtYXJ0TWFnbmlmaWNhdGlv
bkdlc3R1cmUoRmxvYXRQb2ludCBvcmlnaW4pCit7CisgICAgbV93ZWJQYWdlUHJveHkucHJvY2Vz
cygpLnNlbmQoTWVzc2FnZXM6OlZpZXdHZXN0dXJlR2VvbWV0cnlDb2xsZWN0b3I6OkNvbGxlY3RH
ZW9tZXRyeUZvclNtYXJ0TWFnbmlmaWNhdGlvbkdlc3R1cmUob3JpZ2luKSwgbV93ZWJQYWdlUHJv
eHkucGFnZUlEKCkpOworfQorCit2b2lkIFNtYXJ0TWFnbmlmaWNhdGlvbkNvbnRyb2xsZXI6Omhh
bmRsZVJlc2V0TWFnbmlmaWNhdGlvbkdlc3R1cmUoRmxvYXRQb2ludCBvcmlnaW4pCit7CisgICAg
W21fY29udGVudFZpZXcgX3pvb21PdXRXaXRoT3JpZ2luOm9yaWdpbl07Cit9CisKK3ZvaWQgU21h
cnRNYWduaWZpY2F0aW9uQ29udHJvbGxlcjo6ZGlkQ29sbGVjdEdlb21ldHJ5Rm9yU21hcnRNYWdu
aWZpY2F0aW9uR2VzdHVyZShGbG9hdFBvaW50IG9yaWdpbiwgRmxvYXRSZWN0IHRhcmdldFJlY3Qs
IEZsb2F0UmVjdCB2aXNpYmxlQ29udGVudFJlY3QsIGJvb2wgaXNSZXBsYWNlZEVsZW1lbnQsIGJv
b2wgZnJhbWVIYW5kbGVzTWFnbmlmaWNhdGlvbkdlc3R1cmUsIGRvdWJsZSB2aWV3cG9ydE1pbmlt
dW1TY2FsZSwgZG91YmxlIHZpZXdwb3J0TWF4aW11bVNjYWxlKQoreworICAgIGlmIChmcmFtZUhh
bmRsZXNNYWduaWZpY2F0aW9uR2VzdHVyZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKHRh
cmdldFJlY3QuaXNFbXB0eSgpKSB7CisgICAgICAgIC8vIEZJWE1FOiBJZiB3ZSBkb24ndCB6b29t
LCBzZW5kIHRoZSB0YXAgYWxvbmcgdG8gdGV4dCBzZWxlY3Rpb24gKHNlZSA8cmRhcjovL3Byb2Js
ZW0vNjgxMDM0ND4pLgorICAgICAgICBbbV9jb250ZW50VmlldyBfem9vbU91dFdpdGhPcmlnaW46
b3JpZ2luXTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIHRhcmdldFJlY3QuaW5mbGF0
ZVgoc21hcnRNYWduaWZpY2F0aW9uRWxlbWVudFBhZGRpbmcgKiB0YXJnZXRSZWN0LndpZHRoKCkp
OworICAgIHRhcmdldFJlY3QuaW5mbGF0ZVkoc21hcnRNYWduaWZpY2F0aW9uRWxlbWVudFBhZGRp
bmcgKiB0YXJnZXRSZWN0LmhlaWdodCgpKTsKKworICAgIGRvdWJsZSBtYXhpbXVtU2NhbGUgPSBz
dGQ6Om1pbih2aWV3cG9ydE1heGltdW1TY2FsZSwgc21hcnRNYWduaWZpY2F0aW9uTWF4aW11bVNj
YWxlKTsKKyAgICBkb3VibGUgbWluaW11bVNjYWxlID0gc3RkOjptYXgodmlld3BvcnRNaW5pbXVt
U2NhbGUsIHNtYXJ0TWFnbmlmaWNhdGlvbk1pbmltdW1TY2FsZSk7CisKKyAgICAvLyBGSVhNRTog
Q2hlY2sgaWYgdGV4dCBzZWxlY3Rpb24gd2FudHMgdG8gY29uc3VtZSB0aGUgZG91YmxlIHRhcCBi
ZWZvcmUgd2UgYXR0ZW1wdCBtYWduaWZpY2F0aW9uLgorCisgICAgLy8gSWYgdGhlIGNvbnRlbnQg
YWxyZWFkeSBmaXRzIGluIHRoZSBzY3JvbGwgdmlldyBhbmQgd2UncmUgYWxyZWFkeSB6b29tZWQg
aW4gdG8gdGhlIHRhcmdldCBzY2FsZSwKKyAgICAvLyBpdCBpcyBtb3N0IGxpa2VseSB0aGF0IHRo
ZSB1c2VyIGludGVuZGVkIHRvIHNjcm9sbCwgc28gdXNlIGEgc21hbGwgZGlzdGFuY2UgdGhyZXNo
b2xkIHRvIGluaXRpYXRlIHBhbm5pbmcuCisgICAgZmxvYXQgbWluaW11bVNjcm9sbERpc3RhbmNl
OworICAgIGlmIChbbV9jb250ZW50VmlldyBib3VuZHNdLnNpemUud2lkdGggPD0gbV93ZWJQYWdl
UHJveHkudW5vYnNjdXJlZENvbnRlbnRSZWN0KCkud2lkdGgoKSkKKyAgICAgICAgbWluaW11bVNj
cm9sbERpc3RhbmNlID0gc21hcnRNYWduaWZpY2F0aW9uUGFuU2Nyb2xsVGhyZXNob2xkWm9vbWVk
T3V0OworICAgIGVsc2UgaWYgKFVJQ3VycmVudFVzZXJJbnRlcmZhY2VJZGlvbUlzUGFkKCkpCisg
ICAgICAgIG1pbmltdW1TY3JvbGxEaXN0YW5jZSA9IHNtYXJ0TWFnbmlmaWNhdGlvblBhblNjcm9s
bFRocmVzaG9sZElQYWQ7CisgICAgZWxzZQorICAgICAgICBtaW5pbXVtU2Nyb2xsRGlzdGFuY2Ug
PSBzbWFydE1hZ25pZmljYXRpb25QYW5TY3JvbGxUaHJlc2hvbGRJUGhvbmU7CisKKyAgICAvLyBG
b3IgcmVwbGFjZWQgZWxlbWVudHMgbGlrZSBpbWFnZXMsIHdlIHdhbnQgdG8gZml0IHRoZSB3aG9s
ZSBlbGVtZW50CisgICAgLy8gaW4gdGhlIHZpZXcsIHNvIHNjYWxlIGl0IGRvd24gZW5vdWdoIHRv
IG1ha2UgYm90aCBkaW1lbnNpb25zIGZpdCBpZiBwb3NzaWJsZS4KKyAgICAvLyBGb3Igb3RoZXIg
ZWxlbWVudHMsIHRyeSB0byBmaXQgdGhlbSBob3Jpem9udGFsbHkuCisgICAgaWYgKFttX2NvbnRl
bnRWaWV3IF96b29tVG9SZWN0OnRhcmdldFJlY3Qgd2l0aE9yaWdpbjpvcmlnaW4gZml0RW50aXJl
UmVjdDppc1JlcGxhY2VkRWxlbWVudCBtaW5pbXVtU2NhbGU6bWluaW11bVNjYWxlIG1heGltdW1T
Y2FsZTptYXhpbXVtU2NhbGUgbWluaW11bVNjcm9sbERpc3RhbmNlOm1pbmltdW1TY3JvbGxEaXN0
YW5jZV0pCisgICAgICAgIHJldHVybjsKKworICAgIC8vIEZJWE1FOiBJZiB3ZSBzdGlsbCBkb24n
dCB6b29tLCBzZW5kIHRoZSB0YXAgYWxvbmcgdG8gdGV4dCBzZWxlY3Rpb24gKHNlZSA8cmRhcjov
L3Byb2JsZW0vNjgxMDM0ND4pLgorICAgIFttX2NvbnRlbnRWaWV3IF96b29tT3V0V2l0aE9yaWdp
bjpvcmlnaW5dOworfQorICAgIAorfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBQ
TEFURk9STShJT1MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1dL
Q29udGVudFZpZXcuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmll
dy5oCmluZGV4IDVlOTdiNjMuLjAzYjdhYWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlldy5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9pb3MvV0tDb250ZW50Vmlldy5oCkBAIC0zMSw2ICszMSw3IEBACiAjaW1wb3J0IDx3dGYvUmV0
YWluUHRyLmg+CiAKIEBjbGFzcyBXS0NvbnRlbnRWaWV3OworQGNsYXNzIFdLV2ViVmlldzsKIAog
bmFtZXNwYWNlIFdlYktpdCB7CiBjbGFzcyBEcmF3aW5nQXJlYVByb3h5OwpAQCAtNDMsMjYgKzQ0
LDE3IEBAIGNsYXNzIFdlYlNlY3VyaXR5T3JpZ2luOwogc3RydWN0IFdlYlBhZ2VDb25maWd1cmF0
aW9uOwogfQogCi1AcHJvdG9jb2wgV0tDb250ZW50Vmlld0RlbGVnYXRlIDxOU09iamVjdD4KLS0g
KHZvaWQpY29udGVudFZpZXdEaWRDb21taXRMb2FkRm9yTWFpbkZyYW1lOihXS0NvbnRlbnRWaWV3
ICopY29udGVudFZpZXc7Ci0tICh2b2lkKWNvbnRlbnRWaWV3OihXS0NvbnRlbnRWaWV3ICopY29u
dGVudFZpZXcgZGlkQ29tbWl0TGF5ZXJUcmVlOihjb25zdCBXZWJLaXQ6OlJlbW90ZUxheWVyVHJl
ZVRyYW5zYWN0aW9uJilsYXllclRyZWVUcmFuc2FjdGlvbjsKLQotLy8gRklYTUU6IFRoaXMgZG9l
c24ndCBiZWxvbmcgaW4gYSAnZGVsZWdhdGUnLgotLSAoUmV0YWluUHRyPENHSW1hZ2VSZWY+KXRh
a2VWaWV3U25hcHNob3RGb3JDb250ZW50VmlldzooV0tDb250ZW50VmlldyAqKWNvbnRlbnRWaWV3
OwotQGVuZAotCiBAaW50ZXJmYWNlIFdLQ29udGVudFZpZXcgOiBVSVZpZXcgewogQHBhY2thZ2UK
ICAgICBSZWZQdHI8V2ViS2l0OjpXZWJQYWdlUHJveHk+IF9wYWdlOwogfQogCiBAcHJvcGVydHkg
KG5vbmF0b21pYywgcmVhZG9ubHkpIFdLQnJvd3NpbmdDb250ZXh0Q29udHJvbGxlciAqYnJvd3Np
bmdDb250ZXh0Q29udHJvbGxlcjsKLUBwcm9wZXJ0eSAobm9uYXRvbWljLCBhc3NpZ24pIGlkIDxX
S0NvbnRlbnRWaWV3RGVsZWdhdGU+IGRlbGVnYXRlOwogCiBAcHJvcGVydHkgKG5vbmF0b21pYywg
cmVhZG9ubHkpIFdlYktpdDo6V2ViUGFnZVByb3h5KiBwYWdlOwogQHByb3BlcnR5IChub25hdG9t
aWMsIHJlYWRvbmx5KSBCT09MIGlzQXNzaXN0aW5nTm9kZTsKIAotLSAoaW5zdGFuY2V0eXBlKWlu
aXRXaXRoRnJhbWU6KENHUmVjdClmcmFtZSBjb250ZXh0OihXZWJLaXQ6OldlYkNvbnRleHQmKWNv
bnRleHQgY29uZmlndXJhdGlvbjooV2ViS2l0OjpXZWJQYWdlQ29uZmlndXJhdGlvbil3ZWJQYWdl
Q29uZmlndXJhdGlvbjsKKy0gKGluc3RhbmNldHlwZSlpbml0V2l0aEZyYW1lOihDR1JlY3QpZnJh
bWUgY29udGV4dDooV2ViS2l0OjpXZWJDb250ZXh0Jiljb250ZXh0IGNvbmZpZ3VyYXRpb246KFdl
YktpdDo6V2ViUGFnZUNvbmZpZ3VyYXRpb24pd2ViUGFnZUNvbmZpZ3VyYXRpb24gd2ViVmlldzoo
V0tXZWJWaWV3ICopd2ViVmlldzsKIAogLSAodm9pZClzZXRNaW5pbXVtU2l6ZTooQ0dTaXplKXNp
emU7CiAtICh2b2lkKXNldE1pbmltdW1MYXlvdXRTaXplOihDR1NpemUpc2l6ZTsKQEAgLTg2LDQg
Kzc4LDcgQEAgc3RydWN0IFdlYlBhZ2VDb25maWd1cmF0aW9uOwogCiAtIChSZXRhaW5QdHI8Q0dJ
bWFnZVJlZj4pX3Rha2VWaWV3U25hcHNob3Q7CiAKKy0gKEJPT0wpX3pvb21Ub1JlY3Q6KENHUmVj
dCl0YXJnZXRSZWN0IHdpdGhPcmlnaW46KENHUG9pbnQpb3JpZ2luIGZpdEVudGlyZVJlY3Q6KEJP
T0wpZml0RW50aXJlUmVjdCBtaW5pbXVtU2NhbGU6KGRvdWJsZSltaW5pbXVtU2NhbGUgbWF4aW11
bVNjYWxlOihkb3VibGUpbWF4aW11bVNjYWxlIG1pbmltdW1TY3JvbGxEaXN0YW5jZTooQ0dGbG9h
dCltaW5pbXVtU2Nyb2xsRGlzdGFuY2U7CistICh2b2lkKV96b29tT3V0V2l0aE9yaWdpbjooQ0dQ
b2ludClvcmlnaW47CisKIEBlbmQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9pb3MvV0tDb250ZW50Vmlldy5tbSBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvV0tD
b250ZW50Vmlldy5tbQppbmRleCA1Zjg5ZmZjLi40MzU1OTA3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXcubW0KKysrIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3Lm1tCkBAIC0yOSw2ICsyOSw3IEBACiAjaW1w
b3J0ICJQYWdlQ2xpZW50SW1wbElPUy5oIgogI2ltcG9ydCAiUmVtb3RlTGF5ZXJUcmVlRHJhd2lu
Z0FyZWFQcm94eS5oIgogI2ltcG9ydCAiUmVtb3RlU2Nyb2xsaW5nQ29vcmRpbmF0b3JQcm94eS5o
IgorI2ltcG9ydCAiU21hcnRNYWduaWZpY2F0aW9uQ29udHJvbGxlci5oIgogI2ltcG9ydCAiV2Vi
S2l0MkluaXRpYWxpemUuaCIKICNpbXBvcnQgIldLQnJvd3NpbmdDb250ZXh0Q29udHJvbGxlcklu
dGVybmFsLmgiCiAjaW1wb3J0ICJXS0Jyb3dzaW5nQ29udGV4dEdyb3VwUHJpdmF0ZS5oIgpAQCAt
MzYsNiArMzcsNyBAQAogI2ltcG9ydCAiV0tQcmVmZXJlbmNlc0ludGVybmFsLmgiCiAjaW1wb3J0
ICJXS1Byb2Nlc3NHcm91cFByaXZhdGUuaCIKICNpbXBvcnQgIldLUHJvY2Vzc1Bvb2xJbnRlcm5h
bC5oIgorI2ltcG9ydCAiV0tXZWJWaWV3SW50ZXJuYWwuaCIKICNpbXBvcnQgIldLV2ViVmlld0Nv
bmZpZ3VyYXRpb24uaCIKICNpbXBvcnQgIldlYkNvbnRleHQuaCIKICNpbXBvcnQgIldlYkZyYW1l
UHJveHkuaCIKQEAgLTYwLDkgKzYyLDExIEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7CiAgICAg
UmV0YWluUHRyPFdLQnJvd3NpbmdDb250ZXh0Q29udHJvbGxlcj4gX2Jyb3dzaW5nQ29udGV4dENv
bnRyb2xsZXI7CiAKICAgICBSZXRhaW5QdHI8VUlWaWV3PiBfcm9vdENvbnRlbnRWaWV3OworCisg
ICAgV0tXZWJWaWV3ICpfd2ViVmlldzsKIH0KIAotLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoRnJh
bWU6KENHUmVjdClmcmFtZSBjb250ZXh0OihXZWJLaXQ6OldlYkNvbnRleHQmKWNvbnRleHQgY29u
ZmlndXJhdGlvbjooV2ViS2l0OjpXZWJQYWdlQ29uZmlndXJhdGlvbil3ZWJQYWdlQ29uZmlndXJh
dGlvbgorLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoRnJhbWU6KENHUmVjdClmcmFtZSBjb250ZXh0
OihXZWJLaXQ6OldlYkNvbnRleHQmKWNvbnRleHQgY29uZmlndXJhdGlvbjooV2ViS2l0OjpXZWJQ
YWdlQ29uZmlndXJhdGlvbil3ZWJQYWdlQ29uZmlndXJhdGlvbiB3ZWJWaWV3OihXS1dlYlZpZXcg
Kil3ZWJWaWV3CiB7CiAgICAgaWYgKCEoc2VsZiA9IFtzdXBlciBpbml0V2l0aEZyYW1lOmZyYW1l
XSkpCiAgICAgICAgIHJldHVybiBuaWw7CkBAIC03Nyw2ICs4MSw4IEBAIHVzaW5nIG5hbWVzcGFj
ZSBXZWJLaXQ7CiAgICAgX3BhZ2UtPnNldFVzZUZpeGVkTGF5b3V0KHRydWUpOwogICAgIF9wYWdl
LT5zZXREZWxlZ2F0ZXNTY3JvbGxpbmcodHJ1ZSk7CiAKKyAgICBfd2ViVmlldyA9IHdlYlZpZXc7
CisKICAgICBXZWJDb250ZXh0OjpzdGF0aXN0aWNzKCkud2tWaWV3Q291bnQrKzsKIAogICAgIF9y
b290Q29udGVudFZpZXcgPSBhZG9wdE5TKFtbVUlWaWV3IGFsbG9jXSBpbml0XSk7CkBAIC0yNDEs
OSArMjQ3LDcgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKIAogLSAodm9pZClfZGlkQ29tbWl0
TG9hZEZvck1haW5GcmFtZQogewotICAgIGlmIChbX2RlbGVnYXRlIHJlc3BvbmRzVG9TZWxlY3Rv
cjpAc2VsZWN0b3IoY29udGVudFZpZXdEaWRDb21taXRMb2FkRm9yTWFpbkZyYW1lOildKQotICAg
ICAgICBbX2RlbGVnYXRlIGNvbnRlbnRWaWV3RGlkQ29tbWl0TG9hZEZvck1haW5GcmFtZTpzZWxm
XTsKLQorICAgIFtfd2ViVmlldyBfZGlkQ29tbWl0TG9hZEZvck1haW5GcmFtZV07CiAgICAgW3Nl
bGYgX3N0b3BBc3Npc3RpbmdOb2RlXTsKIH0KIApAQCAtMjU0LDggKzI1OCw3IEBAIHVzaW5nIG5h
bWVzcGFjZSBXZWJLaXQ7CiAgICAgW3NlbGYgc2V0Qm91bmRzOntDR1BvaW50WmVybywgY29udGVu
dHNTaXplfV07CiAgICAgW19yb290Q29udGVudFZpZXcgc2V0RnJhbWU6Q0dSZWN0TWFrZSgwLCAw
LCBjb250ZW50c1NpemUud2lkdGgsIGNvbnRlbnRzU2l6ZS5oZWlnaHQpXTsKIAotICAgIGlmIChb
X2RlbGVnYXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoY29udGVudFZpZXc6ZGlkQ29t
bWl0TGF5ZXJUcmVlOildKQotICAgICAgICBbX2RlbGVnYXRlIGNvbnRlbnRWaWV3OnNlbGYgZGlk
Q29tbWl0TGF5ZXJUcmVlOmxheWVyVHJlZVRyYW5zYWN0aW9uXTsKKyAgICBbX3dlYlZpZXcgX2Rp
ZENvbW1pdExheWVyVHJlZTpsYXllclRyZWVUcmFuc2FjdGlvbl07CiB9CiAKIC0gKHZvaWQpX3Nl
dEFjY2VsZXJhdGVkQ29tcG9zaXRpbmdSb290TGF5ZXI6KENBTGF5ZXIgKilyb290TGF5ZXIKQEAg
LTI3Miw3ICsyNzUsMTcgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKIAogLSAoUmV0YWluUHRy
PENHSW1hZ2VSZWY+KV90YWtlVmlld1NuYXBzaG90CiB7Ci0gICAgcmV0dXJuIFtfZGVsZWdhdGUg
dGFrZVZpZXdTbmFwc2hvdEZvckNvbnRlbnRWaWV3OnNlbGZdOworICAgIHJldHVybiBbX3dlYlZp
ZXcgX3Rha2VWaWV3U25hcHNob3RdOworfQorCistIChCT09MKV96b29tVG9SZWN0OihDR1JlY3Qp
dGFyZ2V0UmVjdCB3aXRoT3JpZ2luOihDR1BvaW50KW9yaWdpbiBmaXRFbnRpcmVSZWN0OihCT09M
KWZpdEVudGlyZVJlY3QgbWluaW11bVNjYWxlOihkb3VibGUpbWluaW11bVNjYWxlIG1heGltdW1T
Y2FsZTooZG91YmxlKW1heGltdW1TY2FsZSBtaW5pbXVtU2Nyb2xsRGlzdGFuY2U6KENHRmxvYXQp
bWluaW11bVNjcm9sbERpc3RhbmNlCit7CisgICAgcmV0dXJuIFtfd2ViVmlldyBfem9vbVRvUmVj
dDp0YXJnZXRSZWN0IHdpdGhPcmlnaW46b3JpZ2luIGZpdEVudGlyZVJlY3Q6Zml0RW50aXJlUmVj
dCBtaW5pbXVtU2NhbGU6bWluaW11bVNjYWxlIG1heGltdW1TY2FsZTptYXhpbXVtU2NhbGUgbWlu
aW11bVNjcm9sbERpc3RhbmNlOm1pbmltdW1TY3JvbGxEaXN0YW5jZV07Cit9CisKKy0gKHZvaWQp
X3pvb21PdXRXaXRoT3JpZ2luOihDR1BvaW50KW9yaWdpbgoreworICAgIHJldHVybiBbX3dlYlZp
ZXcgX3pvb21PdXRXaXRoT3JpZ2luOm9yaWdpbl07CiB9CiAKIEBlbmQKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLmggYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5oCmlu
ZGV4IDRjNDY1NDQuLmQwOGNhZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24uaApAQCAtNDYsNiArNDYsNyBAQCBj
bGFzcyBJbnRTaXplOwogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIGNsYXNzIE5hdGl2ZVdlYlRvdWNo
RXZlbnQ7CitjbGFzcyBTbWFydE1hZ25pZmljYXRpb25Db250cm9sbGVyOwogY2xhc3MgV2ViUGFn
ZVByb3h5Owogc3RydWN0IEFzc2lzdGVkTm9kZUluZm9ybWF0aW9uOwogc3RydWN0IEludGVyYWN0
aW9uSW5mb3JtYXRpb25BdFBvc2l0aW9uOwpAQCAtOTMsNiArOTQsOCBAQCBzdHJ1Y3QgV0tBdXRv
Q29ycmVjdGlvbkRhdGEgewogICAgIFJldGFpblB0cjxOU1N0cmluZz4gX21hcmtlZFRleHQ7CiAg
ICAgUmV0YWluUHRyPFdLQWN0aW9uU2hlZXRBc3Npc3RhbnQ+IF9hY3Rpb25TaGVldEFzc2lzdGFu
dDsKIAorICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJLaXQ6OlNtYXJ0TWFnbmlmaWNhdGlvbkNvbnRy
b2xsZXI+IF9zbWFydE1hZ25pZmljYXRpb25Db250cm9sbGVyOworCiAgICAgaWQgPFVJVGV4dElu
cHV0RGVsZWdhdGU+IF9pbnB1dERlbGVnYXRlOwogCiAgICAgdWludDY0X3QgX2xhdGVzdFRhcEhp
Z2hsaWdodElEOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9XS0Nv
bnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1dL
Q29udGVudFZpZXdJbnRlcmFjdGlvbi5tbQppbmRleCBkMjljNTI4Li5mZjEzZjU2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlv
bi5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRl
cmFjdGlvbi5tbQpAQCAtMjgsNiArMjgsNyBAQAogCiAjaW1wb3J0ICJOYXRpdmVXZWJLZXlib2Fy
ZEV2ZW50LmgiCiAjaW1wb3J0ICJOYXRpdmVXZWJUb3VjaEV2ZW50LmgiCisjaW1wb3J0ICJTbWFy
dE1hZ25pZmljYXRpb25Db250cm9sbGVyLmgiCiAjaW1wb3J0ICJXZWJFdmVudC5oIgogI2ltcG9y
dCAiV2ViSU9TRXZlbnRGYWN0b3J5LmgiCiAjaW1wb3J0ICJXZWJQYWdlTWVzc2FnZXMuaCIKQEAg
LTE0OCw2ICsxNDksMTIgQEAgc3RhdGljIGNvbnN0IGZsb2F0IHRhcEFuZEhvbGREZWxheSAgPSAw
Ljc1OwogICAgIFtzZWxmIGFkZEdlc3R1cmVSZWNvZ25pemVyOl9kb3VibGVUYXBHZXN0dXJlUmVj
b2duaXplci5nZXQoKV07CiAgICAgW19zaW5nbGVUYXBHZXN0dXJlUmVjb2duaXplciByZXF1aXJl
T3RoZXJHZXN0dXJlVG9GYWlsOl9kb3VibGVUYXBHZXN0dXJlUmVjb2duaXplci5nZXQoKV07CiAK
KyAgICBfdHdvRmluZ2VyRG91YmxlVGFwR2VzdHVyZVJlY29nbml6ZXIgPSBhZG9wdE5TKFtbVUlU
YXBHZXN0dXJlUmVjb2duaXplciBhbGxvY10gaW5pdFdpdGhUYXJnZXQ6c2VsZiBhY3Rpb246QHNl
bGVjdG9yKF90d29GaW5nZXJEb3VibGVUYXBSZWNvZ25pemVkOildKTsKKyAgICBbX3R3b0Zpbmdl
ckRvdWJsZVRhcEdlc3R1cmVSZWNvZ25pemVyIHNldE51bWJlck9mVGFwc1JlcXVpcmVkOjJdOwor
ICAgIFtfdHdvRmluZ2VyRG91YmxlVGFwR2VzdHVyZVJlY29nbml6ZXIgc2V0TnVtYmVyT2ZUb3Vj
aGVzUmVxdWlyZWQ6Ml07CisgICAgW190d29GaW5nZXJEb3VibGVUYXBHZXN0dXJlUmVjb2duaXpl
ciBzZXREZWxlZ2F0ZTpzZWxmXTsKKyAgICBbc2VsZiBhZGRHZXN0dXJlUmVjb2duaXplcjpfdHdv
RmluZ2VyRG91YmxlVGFwR2VzdHVyZVJlY29nbml6ZXIuZ2V0KCldOworCiAgICAgX2hpZ2hsaWdo
dExvbmdQcmVzc0dlc3R1cmVSZWNvZ25pemVyID0gYWRvcHROUyhbW19VSVdlYkhpZ2hsaWdodExv
bmdQcmVzc0dlc3R1cmVSZWNvZ25pemVyIGFsbG9jXSBpbml0V2l0aFRhcmdldDpzZWxmIGFjdGlv
bjpAc2VsZWN0b3IoX2hpZ2hsaWdodExvbmdQcmVzc1JlY29nbml6ZWQ6KV0pOwogICAgIFtfaGln
aGxpZ2h0TG9uZ1ByZXNzR2VzdHVyZVJlY29nbml6ZXIgc2V0RGVsYXk6aGlnaGxpZ2h0RGVsYXld
OwogICAgIFtfaGlnaGxpZ2h0TG9uZ1ByZXNzR2VzdHVyZVJlY29nbml6ZXIgc2V0RGVsZWdhdGU6
c2VsZl07CkBAIC0xNzEsNiArMTc4LDcgQEAgc3RhdGljIGNvbnN0IGZsb2F0IHRhcEFuZEhvbGRE
ZWxheSAgPSAwLjc1OwogICAgIFtzZWxmIHVzZVNlbGVjdGlvbkFzc2lzdGFudFdpdGhNb2RlOlVJ
V2ViU2VsZWN0aW9uTW9kZVdlYl07CiAgICAgCiAgICAgX2FjdGlvblNoZWV0QXNzaXN0YW50ID0g
YWRvcHROUyhbW1dLQWN0aW9uU2hlZXRBc3Npc3RhbnQgYWxsb2NdIGluaXRXaXRoVmlldzpzZWxm
XSk7CisgICAgX3NtYXJ0TWFnbmlmaWNhdGlvbkNvbnRyb2xsZXIgPSBzdGQ6Om1ha2VfdW5pcXVl
PFNtYXJ0TWFnbmlmaWNhdGlvbkNvbnRyb2xsZXI+KHNlbGYpOwogfQogCiAtICh2b2lkKWNsZWFu
dXBJbnRlcmFjdGlvbgpAQCAtNjEwLDEyICs2MTgsMTIgQEAgc3RhdGljIGlubGluZSBib29sIGlz
U2FtZVBhaXIoVUlHZXN0dXJlUmVjb2duaXplciAqYSwgVUlHZXN0dXJlUmVjb2duaXplciAqYiwg
VUkKIAogLSAodm9pZClfZG91YmxlVGFwUmVjb2duaXplZDooVUlUYXBHZXN0dXJlUmVjb2duaXpl
ciAqKWdlc3R1cmVSZWNvZ25pemVyCiB7Ci0gICAgLy8gRklYTUU6IEFkZCBpbXBsZW1lbnRhdGlv
bi4KKyAgICBfc21hcnRNYWduaWZpY2F0aW9uQ29udHJvbGxlci0+aGFuZGxlU21hcnRNYWduaWZp
Y2F0aW9uR2VzdHVyZShnZXN0dXJlUmVjb2duaXplci5sb2NhdGlvbik7CiB9CiAKIC0gKHZvaWQp
X3R3b0ZpbmdlckRvdWJsZVRhcFJlY29nbml6ZWQ6KFVJVGFwR2VzdHVyZVJlY29nbml6ZXIgKiln
ZXN0dXJlUmVjb2duaXplcgogewotICAgIC8vIEZJWE1FOiBBZGQgaW1wbGVtZW50YXRpb24uCisg
ICAgX3NtYXJ0TWFnbmlmaWNhdGlvbkNvbnRyb2xsZXItPmhhbmRsZVJlc2V0TWFnbmlmaWNhdGlv
bkdlc3R1cmUoZ2VzdHVyZVJlY29nbml6ZXIubG9jYXRpb24pOwogfQogCiAtICh2b2lkKV90d29G
aW5nZXJQYW5SZWNvZ25pemVkOihVSVBhbkdlc3R1cmVSZWNvZ25pemVyICopZ2VzdHVyZVJlY29n
bml6ZXIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvVmlld0dlc3R1
cmVDb250cm9sbGVyLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1ZpZXdHZXN0dXJl
Q29udHJvbGxlci5oCmluZGV4IGM2NDljNjEuLmE3YTBlODQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9tYWMvVmlld0dlc3R1cmVDb250cm9sbGVyLmgKKysrIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL21hYy9WaWV3R2VzdHVyZUNvbnRyb2xsZXIuaApAQCAtMTA0LDcg
KzEwNCw3IEBAIHByaXZhdGU6CiAjaWYgIVBMQVRGT1JNKElPUykKICAgICAvLyBNZXNzYWdlIGhh
bmRsZXJzLgogICAgIHZvaWQgZGlkQ29sbGVjdEdlb21ldHJ5Rm9yTWFnbmlmaWNhdGlvbkdlc3R1
cmUoV2ViQ29yZTo6RmxvYXRSZWN0IHZpc2libGVDb250ZW50Qm91bmRzLCBib29sIGZyYW1lSGFu
ZGxlc01hZ25pZmljYXRpb25HZXN0dXJlKTsKLSAgICB2b2lkIGRpZENvbGxlY3RHZW9tZXRyeUZv
clNtYXJ0TWFnbmlmaWNhdGlvbkdlc3R1cmUoV2ViQ29yZTo6RmxvYXRQb2ludCBvcmlnaW4sIFdl
YkNvcmU6OkZsb2F0UmVjdCByZW5kZXJSZWN0LCBXZWJDb3JlOjpGbG9hdFJlY3QgdmlzaWJsZUNv
bnRlbnRCb3VuZHMsIGJvb2wgaXNSZXBsYWNlZEVsZW1lbnQsIGJvb2wgZnJhbWVIYW5kbGVzTWFn
bmlmaWNhdGlvbkdlc3R1cmUpOworICAgIHZvaWQgZGlkQ29sbGVjdEdlb21ldHJ5Rm9yU21hcnRN
YWduaWZpY2F0aW9uR2VzdHVyZShXZWJDb3JlOjpGbG9hdFBvaW50IG9yaWdpbiwgV2ViQ29yZTo6
RmxvYXRSZWN0IHJlbmRlclJlY3QsIFdlYkNvcmU6OkZsb2F0UmVjdCB2aXNpYmxlQ29udGVudEJv
dW5kcywgYm9vbCBpc1JlcGxhY2VkRWxlbWVudCwgYm9vbCBmcmFtZUhhbmRsZXNNYWduaWZpY2F0
aW9uR2VzdHVyZSwgZG91YmxlIHZpZXdwb3J0TWluaW11bVNjYWxlLCBkb3VibGUgdmlld3BvcnRN
YXhpbXVtU2NhbGUpOwogICAgIHZvaWQgZGlkSGl0UmVuZGVyVHJlZVNpemVUaHJlc2hvbGQoKTsK
IAogICAgIHZvaWQgZW5kTWFnbmlmaWNhdGlvbkdlc3R1cmUoKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvVmlld0dlc3R1cmVDb250cm9sbGVyLm1lc3NhZ2VzLmlu
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9WaWV3R2VzdHVyZUNvbnRyb2xsZXIubWVz
c2FnZXMuaW4KaW5kZXggYTBiNThjMC4uNjYwNDdkOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL21hYy9WaWV3R2VzdHVyZUNvbnRyb2xsZXIubWVzc2FnZXMuaW4KKysrIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9WaWV3R2VzdHVyZUNvbnRyb2xsZXIubWVzc2Fn
ZXMuaW4KQEAgLTIzLDcgKzIzLDcgQEAKIG1lc3NhZ2VzIC0+IFZpZXdHZXN0dXJlQ29udHJvbGxl
ciB7CiAjaWYgIVBMQVRGT1JNKElPUykKICAgICBEaWRDb2xsZWN0R2VvbWV0cnlGb3JNYWduaWZp
Y2F0aW9uR2VzdHVyZShXZWJDb3JlOjpGbG9hdFJlY3QgdmlzaWJsZUNvbnRlbnRCb3VuZHMsIGJv
b2wgZnJhbWVIYW5kbGVzTWFnbmlmaWNhdGlvbkdlc3R1cmUpCi0gICAgRGlkQ29sbGVjdEdlb21l
dHJ5Rm9yU21hcnRNYWduaWZpY2F0aW9uR2VzdHVyZShXZWJDb3JlOjpGbG9hdFBvaW50IG9yaWdp
biwgV2ViQ29yZTo6RmxvYXRSZWN0IHJlbmRlclJlY3QsIFdlYkNvcmU6OkZsb2F0UmVjdCB2aXNp
YmxlQ29udGVudEJvdW5kcywgYm9vbCBpc1JlcGxhY2VkRWxlbWVudCwgYm9vbCBmcmFtZUhhbmRs
ZXNNYWduaWZpY2F0aW9uR2VzdHVyZSkKKyAgICBEaWRDb2xsZWN0R2VvbWV0cnlGb3JTbWFydE1h
Z25pZmljYXRpb25HZXN0dXJlKFdlYkNvcmU6OkZsb2F0UG9pbnQgb3JpZ2luLCBXZWJDb3JlOjpG
bG9hdFJlY3QgcmVuZGVyUmVjdCwgV2ViQ29yZTo6RmxvYXRSZWN0IHZpc2libGVDb250ZW50Qm91
bmRzLCBib29sIGlzUmVwbGFjZWRFbGVtZW50LCBib29sIGZyYW1lSGFuZGxlc01hZ25pZmljYXRp
b25HZXN0dXJlLCBkb3VibGUgdmlld3BvcnRNaW5pbXVtU2NhbGUsIGRvdWJsZSB2aWV3cG9ydE1h
eGltdW1TY2FsZSkKICAgICBEaWRIaXRSZW5kZXJUcmVlU2l6ZVRocmVzaG9sZCgpCiAjZW5kaWYK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvVmlld0dlc3R1cmVD
b250cm9sbGVyTWFjLm1tIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9WaWV3R2VzdHVy
ZUNvbnRyb2xsZXJNYWMubW0KaW5kZXggYTJlNDIxZS4uNTQ4MzMwMSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9WaWV3R2VzdHVyZUNvbnRyb2xsZXJNYWMubW0KKysr
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9WaWV3R2VzdHVyZUNvbnRyb2xsZXJNYWMu
bW0KQEAgLTIwNSw3ICsyMDUsNyBAQCBzdGF0aWMgZmxvYXQgbWF4aW11bVJlY3RhbmdsZUNvbXBv
bmVudERlbHRhKEZsb2F0UmVjdCBhLCBGbG9hdFJlY3QgYikKICAgICByZXR1cm4gc3RkOjptYXgo
ZmFicyhhLngoKSAtIGIueCgpKSwgc3RkOjptYXgoZmFicyhhLnkoKSAtIGIueSgpKSwgc3RkOjpt
YXgoZmFicyhhLndpZHRoKCkgLSBiLndpZHRoKCkpLCBmYWJzKGEuaGVpZ2h0KCkgLSBiLmhlaWdo
dCgpKSkpKTsKIH0KIAotdm9pZCBWaWV3R2VzdHVyZUNvbnRyb2xsZXI6OmRpZENvbGxlY3RHZW9t
ZXRyeUZvclNtYXJ0TWFnbmlmaWNhdGlvbkdlc3R1cmUoRmxvYXRQb2ludCBvcmlnaW4sIEZsb2F0
UmVjdCByZW5kZXJSZWN0LCBGbG9hdFJlY3QgdmlzaWJsZUNvbnRlbnRSZWN0LCBib29sIGlzUmVw
bGFjZWRFbGVtZW50LCBib29sIGZyYW1lSGFuZGxlc01hZ25pZmljYXRpb25HZXN0dXJlKQordm9p
ZCBWaWV3R2VzdHVyZUNvbnRyb2xsZXI6OmRpZENvbGxlY3RHZW9tZXRyeUZvclNtYXJ0TWFnbmlm
aWNhdGlvbkdlc3R1cmUoRmxvYXRQb2ludCBvcmlnaW4sIEZsb2F0UmVjdCByZW5kZXJSZWN0LCBG
bG9hdFJlY3QgdmlzaWJsZUNvbnRlbnRSZWN0LCBib29sIGlzUmVwbGFjZWRFbGVtZW50LCBib29s
IGZyYW1lSGFuZGxlc01hZ25pZmljYXRpb25HZXN0dXJlLCBkb3VibGUgdmlld3BvcnRNaW5pbXVt
U2NhbGUsIGRvdWJsZSB2aWV3cG9ydE1heGltdW1TY2FsZSkKIHsKICAgICBpZiAoZnJhbWVIYW5k
bGVzTWFnbmlmaWNhdGlvbkdlc3R1cmUpCiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9X
ZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA3Y2VmZmEzLi4y
YjZjMzFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCkBAIC01MjAsOCArNTIwLDEyIEBACiAJCTJEQTk0NEJBMTg4NEVBM0MwMEVEODZE
QiAvKiBXZWJQYWdlSU9TLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMkRBOTQ0QjYxODg0RUEzNTAwRUQ4NkRCIC8qIFdlYlBhZ2VJT1MubW0gKi87IH07
CiAJCTJEQTk0NEJEMTg4NTExRTcwMEVEODZEQiAvKiBOZXR3b3JrUHJvY2Vzc0lPUy5tbSBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJEQTk0NEJDMTg4NTEx
RTcwMEVEODZEQiAvKiBOZXR3b3JrUHJvY2Vzc0lPUy5tbSAqLzsgfTsKIAkJMkRBQ0U2NEUxOEFE
QkZGMDAwRTRDQTc2IC8qIFdLVGh1bWJuYWlsVmlld0ludGVybmFsLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyREFDRTY0RDE4QURCRkYwMDBFNENBNzYg
LyogV0tUaHVtYm5haWxWaWV3SW50ZXJuYWwuaCAqLzsgfTsKKwkJMkRBRjA2RDYxOEJEMUE0NzAw
ODFDRUIxIC8qIFNtYXJ0TWFnbmlmaWNhdGlvbkNvbnRyb2xsZXIuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJEQUYwNkQ0MThCRDFBNDcwMDgxQ0VCMSAv
KiBTbWFydE1hZ25pZmljYXRpb25Db250cm9sbGVyLmggKi87IH07CisJCTJEQUYwNkQ3MThCRDFB
NDcwMDgxQ0VCMSAvKiBTbWFydE1hZ25pZmljYXRpb25Db250cm9sbGVyLm1tIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkRBRjA2RDUxOEJEMUE0NzAwODFD
RUIxIC8qIFNtYXJ0TWFnbmlmaWNhdGlvbkNvbnRyb2xsZXIubW0gKi87IH07CiAJCTJEREUwQUZB
MTgyOThDQzkwMEY5N0VBQSAvKiBSZW1vdGVMYXllclRyZWVQcm9wZXJ0eUFwcGxpZXIuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJEREUwQUY4MTgyOThD
QzkwMEY5N0VBQSAvKiBSZW1vdGVMYXllclRyZWVQcm9wZXJ0eUFwcGxpZXIuaCAqLzsgfTsKIAkJ
MkRERTBBRkIxODI5OENDOTAwRjk3RUFBIC8qIFJlbW90ZUxheWVyVHJlZVByb3BlcnR5QXBwbGll
ci5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJEREUw
QUY5MTgyOThDQzkwMEY5N0VBQSAvKiBSZW1vdGVMYXllclRyZWVQcm9wZXJ0eUFwcGxpZXIubW0g
Ki87IH07CisJCTJERTY5NDNEMThCRDJBNjgwMDVDMTVFNSAvKiBTbWFydE1hZ25pZmljYXRpb25D
b250cm9sbGVyTWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDJERTY5NDNCMThCRDJBNjgwMDVDMTVFNSAvKiBTbWFydE1hZ25p
ZmljYXRpb25Db250cm9sbGVyTWVzc2FnZVJlY2VpdmVyLmNwcCAqLzsgfTsKKwkJMkRFNjk0M0Ux
OEJEMkE2ODAwNUMxNUU1IC8qIFNtYXJ0TWFnbmlmaWNhdGlvbkNvbnRyb2xsZXJNZXNzYWdlcy5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkRFNjk0M0Mx
OEJEMkE2ODAwNUMxNUU1IC8qIFNtYXJ0TWFnbmlmaWNhdGlvbkNvbnRyb2xsZXJNZXNzYWdlcy5o
ICovOyB9OwogCQkyREY5NTkzQjE4QTQyNDEyMDA5Nzg1QTEgLyogVmlld0dlc3R1cmVDb250cm9s
bGVySU9TLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MkRGOTU5MzQxOEE0MjQxMjAwOTc4NUExIC8qIFZpZXdHZXN0dXJlQ29udHJvbGxlcklPUy5tbSAq
LzsgfTsKIAkJMzEwOTk5NzMxNDZDNzVBMjAwMjlERUI5IC8qIFdlYk5vdGlmaWNhdGlvbkNsaWVu
dC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzMTA5
OTk3MTE0NkM3NTlCMDAyOURFQjkgLyogV2ViTm90aWZpY2F0aW9uQ2xpZW50LmNwcCAqLzsgfTsK
IAkJMzEwOTk5QzcxNDZDOUUzRDAwMjlERUI5IC8qIFdlYk5vdGlmaWNhdGlvbkNsaWVudC5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzEwOTk5NjgxNDZD
NzFGNTAwMjlERUI5IC8qIFdlYk5vdGlmaWNhdGlvbkNsaWVudC5oICovOyB9OwpAQCAtMjI1OSw4
ICsyMjYzLDEzIEBACiAJCTJEQTk0NEI2MTg4NEVBMzUwMEVEODZEQiAvKiBXZWJQYWdlSU9TLm1t
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBuYW1lID0gV2ViUGFnZUlPUy5tbTsg
cGF0aCA9IGlvcy9XZWJQYWdlSU9TLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQky
REE5NDRCQzE4ODUxMUU3MDBFRDg2REIgLyogTmV0d29ya1Byb2Nlc3NJT1MubW0gKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IG5hbWUgPSBOZXR3b3JrUHJvY2Vzc0lPUy5tbTsgcGF0
aCA9IE5ldHdvcmtQcm9jZXNzL2lvcy9OZXR3b3JrUHJvY2Vzc0lPUy5tbTsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJMkRBQ0U2NEQxOEFEQkZGMDAwRTRDQTc2IC8qIFdLVGh1bWJuYWls
Vmlld0ludGVybmFsLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdLVGh1bWJu
YWlsVmlld0ludGVybmFsLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTJEQUYwNkQ0
MThCRDFBNDcwMDgxQ0VCMSAvKiBTbWFydE1hZ25pZmljYXRpb25Db250cm9sbGVyLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFNtYXJ0TWFnbmlmaWNhdGlvbkNvbnRyb2xsZXIu
aDsgcGF0aCA9IGlvcy9TbWFydE1hZ25pZmljYXRpb25Db250cm9sbGVyLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTJEQUYwNkQ1MThCRDFBNDcwMDgxQ0VCMSAvKiBTbWFydE1hZ25p
ZmljYXRpb25Db250cm9sbGVyLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBu
YW1lID0gU21hcnRNYWduaWZpY2F0aW9uQ29udHJvbGxlci5tbTsgcGF0aCA9IGlvcy9TbWFydE1h
Z25pZmljYXRpb25Db250cm9sbGVyLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQky
REFGMDZEODE4QkQyM0JBMDA4MUNFQjEgLyogU21hcnRNYWduaWZpY2F0aW9uQ29udHJvbGxlci5t
ZXNzYWdlcy5pbiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHRleHQ7IG5hbWUgPSBTbWFydE1hZ25pZmljYXRpb25Db250cm9sbGVyLm1lc3NhZ2VzLmlu
OyBwYXRoID0gaW9zL1NtYXJ0TWFnbmlmaWNhdGlvbkNvbnRyb2xsZXIubWVzc2FnZXMuaW47IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTJEREUwQUY4MTgyOThDQzkwMEY5N0VBQSAvKiBS
ZW1vdGVMYXllclRyZWVQcm9wZXJ0eUFwcGxpZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gUmVtb3RlTGF5ZXJUcmVlUHJvcGVydHlBcHBsaWVyLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTJEREUwQUY5MTgyOThDQzkwMEY5N0VBQSAvKiBSZW1vdGVMYXllclRy
ZWVQcm9wZXJ0eUFwcGxpZXIubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBh
dGggPSBSZW1vdGVMYXllclRyZWVQcm9wZXJ0eUFwcGxpZXIubW07IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTJERTY5NDNCMThCRDJBNjgwMDVDMTVFNSAvKiBTbWFydE1hZ25pZmljYXRp
b25Db250cm9sbGVyTWVzc2FnZVJlY2VpdmVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgbmFtZSA9IFNtYXJ0TWFnbmlmaWNhdGlvbkNvbnRyb2xsZXJNZXNzYWdlUmVjZWl2ZXIu
Y3BwOyBwYXRoID0gU21hcnRNYWduaWZpY2F0aW9uQ29udHJvbGxlck1lc3NhZ2VSZWNlaXZlci5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTJERTY5NDNDMThCRDJBNjgwMDVDMTVF
NSAvKiBTbWFydE1hZ25pZmljYXRpb25Db250cm9sbGVyTWVzc2FnZXMuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBuYW1lID0gU21hcnRNYWduaWZpY2F0aW9uQ29udHJvbGxlck1lc3NhZ2Vz
Lmg7IHBhdGggPSBTbWFydE1hZ25pZmljYXRpb25Db250cm9sbGVyTWVzc2FnZXMuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMkRGOTU5MzQxOEE0MjQxMjAwOTc4NUExIC8qIFZpZXdH
ZXN0dXJlQ29udHJvbGxlcklPUy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsg
bmFtZSA9IFZpZXdHZXN0dXJlQ29udHJvbGxlcklPUy5tbTsgcGF0aCA9IGlvcy9WaWV3R2VzdHVy
ZUNvbnRyb2xsZXJJT1MubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTMxMDk5OTY4
MTQ2QzcxRjUwMDI5REVCOSAvKiBXZWJOb3RpZmljYXRpb25DbGllbnQuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gV2ViTm90aWZpY2F0aW9uQ2xpZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTMxMDk5OTcxMTQ2Qzc1OUIwMDI5REVCOSAvKiBXZWJOb3RpZmljYXRpb25DbGllbnQuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2ViTm90aWZpY2F0aW9uQ2xpZW50
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTQzMDAsNiArNDMwOSw5IEBACiAJ
CQkJMEZDQjRFMzcxOEJCRTA0NDAwMEZDRkM5IC8qIFBhZ2VDbGllbnRJbXBsSU9TLm1tICovLAog
CQkJCTJEQTk0NEE5MTg4NEU5QkEwMEVEODZEQiAvKiBUZXh0Q2hlY2tlcklPUy5tbSAqLywKIAkJ
CQkyREY5NTkzNDE4QTQyNDEyMDA5Nzg1QTEgLyogVmlld0dlc3R1cmVDb250cm9sbGVySU9TLm1t
ICovLAorCQkJCTJEQUYwNkQ0MThCRDFBNDcwMDgxQ0VCMSAvKiBTbWFydE1hZ25pZmljYXRpb25D
b250cm9sbGVyLmggKi8sCisJCQkJMkRBRjA2RDUxOEJEMUE0NzAwODFDRUIxIC8qIFNtYXJ0TWFn
bmlmaWNhdGlvbkNvbnRyb2xsZXIubW0gKi8sCisJCQkJMkRBRjA2RDgxOEJEMjNCQTAwODFDRUIx
IC8qIFNtYXJ0TWFnbmlmaWNhdGlvbkNvbnRyb2xsZXIubWVzc2FnZXMuaW4gKi8sCiAJCQkJMkRB
OTQ0QUExODg0RTlCQTAwRUQ4NkRCIC8qIFdlYkluc3BlY3RvclByb3h5SU9TLm1tICovLAogCQkJ
CTJEQTk0NEFCMTg4NEU5QkEwMEVEODZEQiAvKiBXZWJQYWdlUHJveHlJT1MubW0gKi8sCiAJCQkJ
MkRBOTQ0QUMxODg0RTlCQTAwRUQ4NkRCIC8qIFdlYlByb2Nlc3NQcm94eUlPUy5tbSAqLywKQEAg
LTYwODksNiArNjEwMSw4IEBACiAJCQljaGlsZHJlbiA9ICgKIAkJCQkyRDgxOUI5RjE4NjI4MDBF
MDAxRjAzRDEgLyogVmlld0dlc3R1cmVHZW9tZXRyeUNvbGxlY3Rvck1lc3NhZ2VSZWNlaXZlci5j
cHAgKi8sCiAJCQkJMkQ4MTlCQTAxODYyODAwRTAwMUYwM0QxIC8qIFZpZXdHZXN0dXJlR2VvbWV0
cnlDb2xsZWN0b3JNZXNzYWdlcy5oICovLAorCQkJCTJERTY5NDNCMThCRDJBNjgwMDVDMTVFNSAv
KiBTbWFydE1hZ25pZmljYXRpb25Db250cm9sbGVyTWVzc2FnZVJlY2VpdmVyLmNwcCAqLywKKwkJ
CQkyREU2OTQzQzE4QkQyQTY4MDA1QzE1RTUgLyogU21hcnRNYWduaWZpY2F0aW9uQ29udHJvbGxl
ck1lc3NhZ2VzLmggKi8sCiAJCQkJNTEyRjU4QTAxMkE4ODNBRDAwNjI5NTMwIC8qIEF1dGhlbnRp
Y2F0aW9uTWFuYWdlck1lc3NhZ2VSZWNlaXZlci5jcHAgKi8sCiAJCQkJNTEyRjU4QTExMkE4ODNB
RDAwNjI5NTMwIC8qIEF1dGhlbnRpY2F0aW9uTWFuYWdlck1lc3NhZ2VzLmggKi8sCiAJCQkJRTE3
QUUyQzIxNkI5QzYzQTAwMUM0MkYxIC8qIGNvbS5hcHBsZS5XZWJLaXQuTmV0d29ya1Byb2Nlc3Mu
c2IgKi8sCkBAIC02NDAxLDYgKzY0MTUsNyBAQAogCQkJCTFGNjA0QkE4MTg4OUZBNzQwMEVFMDM5
NSAvKiBXS1JlbmRlcmluZ1Byb2dyZXNzRXZlbnRzLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQTQy
MkY4RjE4QjI5QzY0MDBEOENEOTYgLyogSGlzdG9yeUNsaWVudC5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJQkNCQUFDRUIxNDUyMjVFMzAwNTNGODJGIC8qIFdLUHJvY2Vzc0dyb3VwLmggaW4gSGVhZGVy
cyAqLywKKwkJCQkyREFGMDZENjE4QkQxQTQ3MDA4MUNFQjEgLyogU21hcnRNYWduaWZpY2F0aW9u
Q29udHJvbGxlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMzc3RUFENDgxN0UyQzc3QjAwMkQxOTNE
IC8qIFdLVXNlckNvbnRlbnRJbmplY3RlZEZyYW1lcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkM4
Njk5QjUxMTZBQURBQTAwMkE5MjVCIC8qIFdLVmlldy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkM4
RjJGMkIxNjI3M0EyQzAwNUZBQ0I1IC8qIFdLV2ViUHJvY2Vzc1BsdWdJbkJyb3dzZXJDb250ZXh0
Q29udHJvbGxlci5oIGluIEhlYWRlcnMgKi8sCkBAIC02NjgyLDYgKzY2OTcsNyBAQAogCQkJCTNG
ODdCOUMwMTU4OTQwRDgwMDkwRkY2MiAvKiBXZWJDb2xvclBpY2tlci5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJQkM0QTYyOTAxNDczMTJCRTAwNkM2ODFBIC8qIFdlYkNvbm5lY3Rpb24uaCBpbiBIZWFk
ZXJzICovLAogCQkJCTBGQ0I0RTU0MThCQkUwNDQwMDBGQ0ZDOSAvKiBXS1Njcm9sbFZpZXcuaCBp
biBIZWFkZXJzICovLAorCQkJCTJERTY5NDNFMThCRDJBNjgwMDVDMTVFNSAvKiBTbWFydE1hZ25p
ZmljYXRpb25Db250cm9sbGVyTWVzc2FnZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDNEE2Mjky
MTQ3MzEyQkUwMDZDNjgxQSAvKiBXZWJDb25uZWN0aW9uQ2xpZW50LmggaW4gSGVhZGVycyAqLywK
IAkJCQkxQTFGRUMxRDE2MjdCNDU3MDA3MDBGNkQgLyogV2ViQ29ubmVjdGlvbk1lc3NhZ2VzLmgg
aW4gSGVhZGVycyAqLywKIAkJCQlCQzRBNjJBODE0NzQ0RUM3MDA2QzY4MUEgLyogV2ViQ29ubmVj
dGlvblRvV2ViUHJvY2Vzcy5oIGluIEhlYWRlcnMgKi8sCkBAIC03ODI4LDYgKzc4NDQsNyBAQAog
CQkJCTkzRkM2N0JEMTJEM0NDRjIwMEE2MDYxMCAvKiBEZWNvZGVyQWRhcHRlci5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQlCQ0U4MUQ5ODEzMUFFMDIxMDAyNDE5MTAgLyogRGljdGlvbmFyeVBvcHVw
SW5mby5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1MTY3RUVBMTE3MDM3N0JGMDA3NjgxQ0EgLyog
RGlza0NhY2hlTW9uaXRvci5tbSBpbiBTb3VyY2VzICovLAorCQkJCTJEQUYwNkQ3MThCRDFBNDcw
MDgxQ0VCMSAvKiBTbWFydE1hZ25pZmljYXRpb25Db250cm9sbGVyLm1tIGluIFNvdXJjZXMgKi8s
CiAJCQkJMkQ2Q0QxMUExODkwNThBNTAwRTVBNEEwIC8qIFZpZXdTbmFwc2hvdFN0b3JlLm1tIGlu
IFNvdXJjZXMgKi8sCiAJCQkJNTE4RThGMDcxNkIyMDkzNzAwRTkxNDI5IC8qIERvd25sb2FkLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCTJENDdCNTZDMTgxMDcxNEUwMDNBM0FFRSAvKiBSZW1vdGVM
YXllckJhY2tpbmdTdG9yZS5tbSBpbiBTb3VyY2VzICovLApAQCAtODAzMSw2ICs4MDQ4LDcgQEAK
IAkJCQkxQUIxNkFERDE2NDg1OTg0MDAyOTBENjIgLyogUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0Fy
ZWEubW0gaW4gU291cmNlcyAqLywKIAkJCQkxQUIxNkFFMTE2NDg2NTZEMDAyOTBENjIgLyogUmVt
b3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94eS5tbSBpbiBTb3VyY2VzICovLAogCQkJCTBGNTk0
NzlDMTg3QjNCNjAwMDQzNzg1NyAvKiBSZW1vdGVTY3JvbGxpbmdUcmVlLmNwcCBpbiBTb3VyY2Vz
ICovLAorCQkJCTJERTY5NDNEMThCRDJBNjgwMDVDMTVFNSAvKiBTbWFydE1hZ25pZmljYXRpb25D
b250cm9sbGVyTWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTFBQTNENzVC
MTY1MUI0NEYwMDg3MTNEMCAvKiBSZW1vdGVMYXllclRyZWVIb3N0Lm1tIGluIFNvdXJjZXMgKi8s
CiAJCQkJMUFGMUFDNkIxNjUxNzU5RTAwQzE3RDdGIC8qIFJlbW90ZUxheWVyVHJlZVRyYW5zYWN0
aW9uLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJRTFCNzg0NzMxNjNGMjUzRTAwMDdCNjkyIC8qIFJl
bW90ZU5ldHdvcmtpbmdDb250ZXh0Lm1tIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvVmlld0dlc3R1cmVHZW9tZXRyeUNvbGxlY3Rv
ci5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvVmlld0dlc3R1cmVHZW9t
ZXRyeUNvbGxlY3Rvci5jcHAKaW5kZXggZGQ0ZGJiMi4uMTJhMWFmNyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1ZpZXdHZXN0dXJlR2VvbWV0cnlDb2xsZWN0
b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9WaWV3R2VzdHVy
ZUdlb21ldHJ5Q29sbGVjdG9yLmNwcApAQCAtMjYsMjYgKzI2LDM0IEBACiAjaW5jbHVkZSAiY29u
ZmlnLmgiCiAjaW5jbHVkZSAiVmlld0dlc3R1cmVHZW9tZXRyeUNvbGxlY3Rvci5oIgogCi0jaWYg
IVBMQVRGT1JNKElPUykKLQotI2luY2x1ZGUgIlZpZXdHZXN0dXJlQ29udHJvbGxlck1lc3NhZ2Vz
LmgiCiAjaW5jbHVkZSAiVmlld0dlc3R1cmVHZW9tZXRyeUNvbGxlY3Rvck1lc3NhZ2VzLmgiCiAj
aW5jbHVkZSAiV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgiCiAjaW5jbHVkZSAiV2ViRnJhbWUuaCIK
ICNpbmNsdWRlICJXZWJQYWdlLmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzcy5oIgorI2luY2x1ZGUg
PFdlYkNvcmUvRnJhbWUuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0ZyYW1lVmlldy5oPgogI2luY2x1
ZGUgPFdlYkNvcmUvSGl0VGVzdFJlc3VsdC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUmVuZGVyVmll
dy5oPgogCisjaWYgUExBVEZPUk0oSU9TKQorI2luY2x1ZGUgIlNtYXJ0TWFnbmlmaWNhdGlvbkNv
bnRyb2xsZXJNZXNzYWdlcy5oIgorI2VuZGlmCisKKyNpZiBQTEFURk9STShNQUMpCisjaW5jbHVk
ZSAiVmlld0dlc3R1cmVDb250cm9sbGVyTWVzc2FnZXMuaCIKKyNlbmRpZgorCiB1c2luZyBuYW1l
c3BhY2UgV2ViQ29yZTsKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKIFZpZXdHZXN0dXJlR2VvbWV0
cnlDb2xsZWN0b3I6OlZpZXdHZXN0dXJlR2VvbWV0cnlDb2xsZWN0b3IoV2ViUGFnZSYgd2ViUGFn
ZSkKICAgICA6IG1fd2ViUGFnZSh3ZWJQYWdlKQorI2lmIFBMQVRGT1JNKE1BQykKICAgICAsIG1f
cmVuZGVyVHJlZVNpemVOb3RpZmljYXRpb25UaHJlc2hvbGQoMCkKICAgICAsIG1fcmVuZGVyVHJl
ZVNpemVOb3RpZmljYXRpb25UaW1lcihSdW5Mb29wOjptYWluKCksIHRoaXMsICZWaWV3R2VzdHVy
ZUdlb21ldHJ5Q29sbGVjdG9yOjpyZW5kZXJUcmVlU2l6ZU5vdGlmaWNhdGlvblRpbWVyRmlyZWQp
CisjZW5kaWYKIHsKICAgICBXZWJQcm9jZXNzOjpzaGFyZWQoKS5hZGRNZXNzYWdlUmVjZWl2ZXIo
TWVzc2FnZXM6OlZpZXdHZXN0dXJlR2VvbWV0cnlDb2xsZWN0b3I6Om1lc3NhZ2VSZWNlaXZlck5h
bWUoKSwgbV93ZWJQYWdlLnBhZ2VJRCgpLCAqdGhpcyk7CiB9CkBAIC01NSwxMSArNjMsMTQgQEAg
Vmlld0dlc3R1cmVHZW9tZXRyeUNvbGxlY3Rvcjo6flZpZXdHZXN0dXJlR2VvbWV0cnlDb2xsZWN0
b3IoKQogICAgIFdlYlByb2Nlc3M6OnNoYXJlZCgpLnJlbW92ZU1lc3NhZ2VSZWNlaXZlcihNZXNz
YWdlczo6Vmlld0dlc3R1cmVHZW9tZXRyeUNvbGxlY3Rvcjo6bWVzc2FnZVJlY2VpdmVyTmFtZSgp
LCBtX3dlYlBhZ2UucGFnZUlEKCkpOwogfQogCi12b2lkIFZpZXdHZXN0dXJlR2VvbWV0cnlDb2xs
ZWN0b3I6OmNvbGxlY3RHZW9tZXRyeUZvck1hZ25pZmljYXRpb25HZXN0dXJlKCkKK3ZvaWQgVmll
d0dlc3R1cmVHZW9tZXRyeUNvbGxlY3Rvcjo6ZGlzcGF0Y2hEaWRDb2xsZWN0R2VvbWV0cnlGb3JT
bWFydE1hZ25pZmljYXRpb25HZXN0dXJlKEZsb2F0UG9pbnQgb3JpZ2luLCBGbG9hdFJlY3QgdGFy
Z2V0UmVjdCwgRmxvYXRSZWN0IHZpc2libGVDb250ZW50UmVjdCwgYm9vbCBpc1JlcGxhY2VkRWxl
bWVudCwgYm9vbCBmcmFtZUhhbmRsZXNNYWduaWZpY2F0aW9uR2VzdHVyZSwgZG91YmxlIHZpZXdw
b3J0TWluaW11bVNjYWxlLCBkb3VibGUgdmlld3BvcnRNYXhpbXVtU2NhbGUpCiB7Ci0gICAgRmxv
YXRSZWN0IHZpc2libGVDb250ZW50UmVjdCA9IG1fd2ViUGFnZS5tYWluRnJhbWVWaWV3KCktPnZp
c2libGVDb250ZW50UmVjdEluY2x1ZGluZ1Njcm9sbGJhcnMoKTsKLSAgICBib29sIGZyYW1lSGFu
ZGxlc01hZ25pZmljYXRpb25HZXN0dXJlID0gbV93ZWJQYWdlLm1haW5XZWJGcmFtZSgpLT5oYW5k
bGVzUGFnZVNjYWxlR2VzdHVyZSgpOwotICAgIG1fd2ViUGFnZS5zZW5kKE1lc3NhZ2VzOjpWaWV3
R2VzdHVyZUNvbnRyb2xsZXI6OkRpZENvbGxlY3RHZW9tZXRyeUZvck1hZ25pZmljYXRpb25HZXN0
dXJlKHZpc2libGVDb250ZW50UmVjdCwgZnJhbWVIYW5kbGVzTWFnbmlmaWNhdGlvbkdlc3R1cmUp
KTsKKyNpZiBQTEFURk9STShNQUMpCisgICAgbV93ZWJQYWdlLnNlbmQoTWVzc2FnZXM6OlZpZXdH
ZXN0dXJlQ29udHJvbGxlcjo6RGlkQ29sbGVjdEdlb21ldHJ5Rm9yU21hcnRNYWduaWZpY2F0aW9u
R2VzdHVyZShvcmlnaW4sIHRhcmdldFJlY3QsIHZpc2libGVDb250ZW50UmVjdCwgaXNSZXBsYWNl
ZEVsZW1lbnQsIGZyYW1lSGFuZGxlc01hZ25pZmljYXRpb25HZXN0dXJlLCB2aWV3cG9ydE1pbmlt
dW1TY2FsZSwgdmlld3BvcnRNYXhpbXVtU2NhbGUpKTsKKyNlbmRpZgorI2lmIFBMQVRGT1JNKElP
UykKKyAgICBtX3dlYlBhZ2Uuc2VuZChNZXNzYWdlczo6U21hcnRNYWduaWZpY2F0aW9uQ29udHJv
bGxlcjo6RGlkQ29sbGVjdEdlb21ldHJ5Rm9yU21hcnRNYWduaWZpY2F0aW9uR2VzdHVyZShvcmln
aW4sIHRhcmdldFJlY3QsIHZpc2libGVDb250ZW50UmVjdCwgaXNSZXBsYWNlZEVsZW1lbnQsIGZy
YW1lSGFuZGxlc01hZ25pZmljYXRpb25HZXN0dXJlLCB2aWV3cG9ydE1pbmltdW1TY2FsZSwgdmll
d3BvcnRNYXhpbXVtU2NhbGUpKTsKKyNlbmRpZgogfQogCiB2b2lkIFZpZXdHZXN0dXJlR2VvbWV0
cnlDb2xsZWN0b3I6OmNvbGxlY3RHZW9tZXRyeUZvclNtYXJ0TWFnbmlmaWNhdGlvbkdlc3R1cmUo
RmxvYXRQb2ludCBvcmlnaW4pCkBAIC02NywxOCArNzgsMzcgQEAgdm9pZCBWaWV3R2VzdHVyZUdl
b21ldHJ5Q29sbGVjdG9yOjpjb2xsZWN0R2VvbWV0cnlGb3JTbWFydE1hZ25pZmljYXRpb25HZXN0
dXJlKEYKICAgICBGbG9hdFJlY3QgdmlzaWJsZUNvbnRlbnRSZWN0ID0gbV93ZWJQYWdlLm1haW5G
cmFtZVZpZXcoKS0+dmlzaWJsZUNvbnRlbnRSZWN0SW5jbHVkaW5nU2Nyb2xsYmFycygpOwogICAg
IGJvb2wgZnJhbWVIYW5kbGVzTWFnbmlmaWNhdGlvbkdlc3R1cmUgPSBtX3dlYlBhZ2UubWFpbldl
YkZyYW1lKCktPmhhbmRsZXNQYWdlU2NhbGVHZXN0dXJlKCk7CiAKLSAgICBGbG9hdFBvaW50IHNj
cm9sbGVkT3JpZ2luID0gb3JpZ2luOwotICAgIHNjcm9sbGVkT3JpZ2luLm1vdmVCeShtX3dlYlBh
Z2UubWFpbkZyYW1lVmlldygpLT5zY3JvbGxQb3NpdGlvbigpKTsKLQogICAgIEhpdFRlc3RSZXF1
ZXN0IHJlcXVlc3QoSGl0VGVzdFJlcXVlc3Q6OlJlYWRPbmx5IHwgSGl0VGVzdFJlcXVlc3Q6OkFj
dGl2ZSB8IEhpdFRlc3RSZXF1ZXN0OjpEaXNhbGxvd1NoYWRvd0NvbnRlbnQpOwotICAgIEhpdFRl
c3RSZXN1bHQgaGl0VGVzdFJlc3VsdCA9IEhpdFRlc3RSZXN1bHQoc2Nyb2xsZWRPcmlnaW4pOwor
ICAgIEludFBvaW50IG9yaWdpbkluQ29udGVudHNTcGFjZSA9IG1fd2ViUGFnZS5tYWluRnJhbWVW
aWV3KCktPndpbmRvd1RvQ29udGVudHMocm91bmRlZEludFBvaW50KG9yaWdpbikpOworICAgIEhp
dFRlc3RSZXN1bHQgaGl0VGVzdFJlc3VsdCA9IEhpdFRlc3RSZXN1bHQob3JpZ2luSW5Db250ZW50
c1NwYWNlKTsKKwogICAgIG1fd2ViUGFnZS5tYWluRnJhbWVWaWV3KCktPnJlbmRlclZpZXcoKS0+
aGl0VGVzdChyZXF1ZXN0LCBoaXRUZXN0UmVzdWx0KTsKIAotICAgIGlmIChoaXRUZXN0UmVzdWx0
LmlubmVyTm9kZSgpKSB7CisgICAgaWYgKE5vZGUgKm5vZGUgPSBoaXRUZXN0UmVzdWx0LmlubmVy
Tm9kZSgpKSB7CiAgICAgICAgIGJvb2wgaXNSZXBsYWNlZDsKLSAgICAgICAgRmxvYXRSZWN0IHJl
bmRlclJlY3QgPSBoaXRUZXN0UmVzdWx0LmlubmVyTm9kZSgpLT5yZW5kZXJSZWN0KCZpc1JlcGxh
Y2VkKTsKLSAgICAgICAgbV93ZWJQYWdlLnNlbmQoTWVzc2FnZXM6OlZpZXdHZXN0dXJlQ29udHJv
bGxlcjo6RGlkQ29sbGVjdEdlb21ldHJ5Rm9yU21hcnRNYWduaWZpY2F0aW9uR2VzdHVyZShvcmln
aW4sIHJlbmRlclJlY3QsIHZpc2libGVDb250ZW50UmVjdCwgaXNSZXBsYWNlZCwgZnJhbWVIYW5k
bGVzTWFnbmlmaWNhdGlvbkdlc3R1cmUpKTsKKyAgICAgICAgRmxvYXRSZWN0IHJlbmRlclJlY3Qg
PSBub2RlLT5yZW5kZXJSZWN0KCZpc1JlcGxhY2VkKTsKKworI2lmIFBMQVRGT1JNKE1BQykKKyAg
ICAgICAgZG91YmxlIHZpZXdwb3J0TWluaW11bVNjYWxlID0gMDsKKyAgICAgICAgZG91YmxlIHZp
ZXdwb3J0TWF4aW11bVNjYWxlID0gc3RkOjpudW1lcmljX2xpbWl0czxkb3VibGU+OjptYXgoKTsK
KyNlbHNlCisgICAgICAgIGRvdWJsZSB2aWV3cG9ydE1pbmltdW1TY2FsZSA9IG1fd2ViUGFnZS5t
aW5pbXVtUGFnZVNjYWxlRmFjdG9yKCk7CisgICAgICAgIGRvdWJsZSB2aWV3cG9ydE1heGltdW1T
Y2FsZSA9IG1fd2ViUGFnZS5tYXhpbXVtUGFnZVNjYWxlRmFjdG9yKCk7CisjZW5kaWYKKworICAg
ICAgICBkaXNwYXRjaERpZENvbGxlY3RHZW9tZXRyeUZvclNtYXJ0TWFnbmlmaWNhdGlvbkdlc3R1
cmUob3JpZ2luLCByZW5kZXJSZWN0LCB2aXNpYmxlQ29udGVudFJlY3QsIGlzUmVwbGFjZWQsIGZy
YW1lSGFuZGxlc01hZ25pZmljYXRpb25HZXN0dXJlLCB2aWV3cG9ydE1pbmltdW1TY2FsZSwgdmll
d3BvcnRNYXhpbXVtU2NhbGUpOworICAgICAgICByZXR1cm47CiAgICAgfQorCisgICAgZGlzcGF0
Y2hEaWRDb2xsZWN0R2VvbWV0cnlGb3JTbWFydE1hZ25pZmljYXRpb25HZXN0dXJlKEZsb2F0UG9p
bnQoKSwgRmxvYXRSZWN0KCksIEZsb2F0UmVjdCgpLCBmYWxzZSwgZnJhbWVIYW5kbGVzTWFnbmlm
aWNhdGlvbkdlc3R1cmUsIDAsIDApOworfQorCisjaWYgUExBVEZPUk0oTUFDKQordm9pZCBWaWV3
R2VzdHVyZUdlb21ldHJ5Q29sbGVjdG9yOjpjb2xsZWN0R2VvbWV0cnlGb3JNYWduaWZpY2F0aW9u
R2VzdHVyZSgpCit7CisgICAgRmxvYXRSZWN0IHZpc2libGVDb250ZW50UmVjdCA9IG1fd2ViUGFn
ZS5tYWluRnJhbWVWaWV3KCktPnZpc2libGVDb250ZW50UmVjdEluY2x1ZGluZ1Njcm9sbGJhcnMo
KTsKKyAgICBib29sIGZyYW1lSGFuZGxlc01hZ25pZmljYXRpb25HZXN0dXJlID0gbV93ZWJQYWdl
Lm1haW5XZWJGcmFtZSgpLT5oYW5kbGVzUGFnZVNjYWxlR2VzdHVyZSgpOworICAgIG1fd2ViUGFn
ZS5zZW5kKE1lc3NhZ2VzOjpWaWV3R2VzdHVyZUNvbnRyb2xsZXI6OkRpZENvbGxlY3RHZW9tZXRy
eUZvck1hZ25pZmljYXRpb25HZXN0dXJlKHZpc2libGVDb250ZW50UmVjdCwgZnJhbWVIYW5kbGVz
TWFnbmlmaWNhdGlvbkdlc3R1cmUpKTsKIH0KIAogdm9pZCBWaWV3R2VzdHVyZUdlb21ldHJ5Q29s
bGVjdG9yOjptYWluRnJhbWVEaWRMYXlvdXQoKQpAQCAtOTMsNyArMTIzLDcgQEAgdm9pZCBWaWV3
R2VzdHVyZUdlb21ldHJ5Q29sbGVjdG9yOjpyZW5kZXJUcmVlU2l6ZU5vdGlmaWNhdGlvblRpbWVy
RmlyZWQoKQogewogICAgIG1fd2ViUGFnZS5zZW5kKE1lc3NhZ2VzOjpWaWV3R2VzdHVyZUNvbnRy
b2xsZXI6OkRpZEhpdFJlbmRlclRyZWVTaXplVGhyZXNob2xkKCkpOwogfQorI2VuZGlmCiAKIH0g
Ly8gbmFtZXNwYWNlIFdlYktpdAogCi0jZW5kaWYgLy8gIVBMQVRGT1JNKElPUykKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9WaWV3R2VzdHVyZUdlb21ldHJ5
Q29sbGVjdG9yLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvVmlld0dlc3R1
cmVHZW9tZXRyeUNvbGxlY3Rvci5oCmluZGV4IGEzMDg4ZWEuLmUwNzUzMGUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9WaWV3R2VzdHVyZUdlb21ldHJ5Q29s
bGVjdG9yLmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1ZpZXdHZXN0
dXJlR2VvbWV0cnlDb2xsZWN0b3IuaApAQCAtMjYsMTMgKzI2LDEyIEBACiAjaWZuZGVmIFZpZXdH
ZXN0dXJlR2VvbWV0cnlDb2xsZWN0b3JfaAogI2RlZmluZSBWaWV3R2VzdHVyZUdlb21ldHJ5Q29s
bGVjdG9yX2gKIAotI2lmICFQTEFURk9STShJT1MpCi0KICNpbmNsdWRlICJNZXNzYWdlUmVjZWl2
ZXIuaCIKICNpbmNsdWRlIDx3dGYvUnVuTG9vcC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBj
bGFzcyBGbG9hdFBvaW50OworY2xhc3MgRmxvYXRSZWN0OwogfQogCiBuYW1lc3BhY2UgV2ViS2l0
IHsKQEAgLTUxLDIwICs1MCwyNSBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNl
aXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24qLCBJUEM6Ok1lc3NhZ2VEZWNvZGVyJikgb3ZlcnJp
ZGU7CiAKICAgICAvLyBNZXNzYWdlIGhhbmRsZXJzLgotICAgIHZvaWQgY29sbGVjdEdlb21ldHJ5
Rm9yTWFnbmlmaWNhdGlvbkdlc3R1cmUoKTsKICAgICB2b2lkIGNvbGxlY3RHZW9tZXRyeUZvclNt
YXJ0TWFnbmlmaWNhdGlvbkdlc3R1cmUoV2ViQ29yZTo6RmxvYXRQb2ludCBvcmlnaW4pOworCisj
aWYgUExBVEZPUk0oTUFDKQorICAgIHZvaWQgY29sbGVjdEdlb21ldHJ5Rm9yTWFnbmlmaWNhdGlv
bkdlc3R1cmUoKTsKICAgICB2b2lkIHNldFJlbmRlclRyZWVTaXplTm90aWZpY2F0aW9uVGhyZXNo
b2xkKHVpbnQ2NF90IHNpemUpIHsgbV9yZW5kZXJUcmVlU2l6ZU5vdGlmaWNhdGlvblRocmVzaG9s
ZCA9IHNpemU7IH0KIAogICAgIHZvaWQgcmVuZGVyVHJlZVNpemVOb3RpZmljYXRpb25UaW1lckZp
cmVkKCk7CisjZW5kaWYKKworICAgIHZvaWQgZGlzcGF0Y2hEaWRDb2xsZWN0R2VvbWV0cnlGb3JT
bWFydE1hZ25pZmljYXRpb25HZXN0dXJlKFdlYkNvcmU6OkZsb2F0UG9pbnQgb3JpZ2luLCBXZWJD
b3JlOjpGbG9hdFJlY3QgdGFyZ2V0UmVjdCwgV2ViQ29yZTo6RmxvYXRSZWN0IHZpc2libGVDb250
ZW50UmVjdCwgYm9vbCBpc1JlcGxhY2VkRWxlbWVudCwgYm9vbCBmcmFtZUhhbmRsZXNNYWduaWZp
Y2F0aW9uR2VzdHVyZSwgZG91YmxlIHZpZXdwb3J0TWluaW11bVNjYWxlLCBkb3VibGUgdmlld3Bv
cnRNYXhpbXVtU2NhbGUpOwogCiAgICAgV2ViUGFnZSYgbV93ZWJQYWdlOwogCisjaWYgUExBVEZP
Uk0oTUFDKQogICAgIHVpbnQ2NF90IG1fcmVuZGVyVHJlZVNpemVOb3RpZmljYXRpb25UaHJlc2hv
bGQ7CiAgICAgUnVuTG9vcDo6VGltZXI8Vmlld0dlc3R1cmVHZW9tZXRyeUNvbGxlY3Rvcj4gbV9y
ZW5kZXJUcmVlU2l6ZU5vdGlmaWNhdGlvblRpbWVyOworI2VuZGlmCiB9OwogCiB9IC8vIG5hbWVz
cGFjZSBXZWJLaXQKIAotI2VuZGlmIC8vICFQTEFURk9STShJT1MpCi0KICNlbmRpZiAvLyBWaWV3
R2VzdHVyZUdlb21ldHJ5Q29sbGVjdG9yCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYlBhZ2UvVmlld0dlc3R1cmVHZW9tZXRyeUNvbGxlY3Rvci5tZXNzYWdlcy5pbiBi
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9WaWV3R2VzdHVyZUdlb21ldHJ5Q29s
bGVjdG9yLm1lc3NhZ2VzLmluCmluZGV4IGVmZDA1MWYuLjA0NzIwOWEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9WaWV3R2VzdHVyZUdlb21ldHJ5Q29sbGVj
dG9yLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9W
aWV3R2VzdHVyZUdlb21ldHJ5Q29sbGVjdG9yLm1lc3NhZ2VzLmluCkBAIC0yMCwxNCArMjAsMTIg
QEAKICMgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKICMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KIAotI2lmICFQTEFURk9S
TShJT1MpCi0KIG1lc3NhZ2VzIC0+IFZpZXdHZXN0dXJlR2VvbWV0cnlDb2xsZWN0b3IgeworICAg
IENvbGxlY3RHZW9tZXRyeUZvclNtYXJ0TWFnbmlmaWNhdGlvbkdlc3R1cmUoV2ViQ29yZTo6Rmxv
YXRQb2ludCBvcmlnaW4pCiAKLUNvbGxlY3RHZW9tZXRyeUZvck1hZ25pZmljYXRpb25HZXN0dXJl
KCkKLUNvbGxlY3RHZW9tZXRyeUZvclNtYXJ0TWFnbmlmaWNhdGlvbkdlc3R1cmUoV2ViQ29yZTo6
RmxvYXRQb2ludCBvcmlnaW4pCi0KLVNldFJlbmRlclRyZWVTaXplTm90aWZpY2F0aW9uVGhyZXNo
b2xkKHVpbnQ2NF90IHNpemUpCi19CisjaWYgIVBMQVRGT1JNKElPUykKKyAgICBDb2xsZWN0R2Vv
bWV0cnlGb3JNYWduaWZpY2F0aW9uR2VzdHVyZSgpCiAKKyAgICBTZXRSZW5kZXJUcmVlU2l6ZU5v
dGlmaWNhdGlvblRocmVzaG9sZCh1aW50NjRfdCBzaXplKQogI2VuZGlmCit9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAgYi9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKaW5kZXggZmRiZmZjYS4uM2M4
NmRmOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBh
Z2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNw
cApAQCAtMjU0LDkgKzI1NCw3IEBAIFdlYlBhZ2U6OldlYlBhZ2UodWludDY0X3QgcGFnZUlELCBj
b25zdCBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzKQogICAgICwgbV9wZGZQ
bHVnaW5FbmFibGVkKGZhbHNlKQogICAgICwgbV9oYXNDYWNoZWRXaW5kb3dGcmFtZShmYWxzZSkK
ICAgICAsIG1fa2V5Ym9hcmRFdmVudEJlaW5nSW50ZXJwcmV0ZWQoMCkKLSNpZiAhUExBVEZPUk0o
SU9TKQogICAgICwgbV92aWV3R2VzdHVyZUdlb21ldHJ5Q29sbGVjdG9yKCp0aGlzKQotI2VuZGlm
CiAjZWxpZiBQTEFURk9STShHVEspICYmIEhBVkUoQUNDRVNTSUJJTElUWSkKICAgICAsIG1fYWNj
ZXNzaWJpbGl0eU9iamVjdCgwKQogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYlBhZ2UuaAppbmRleCAxNzA1NmRkLi5hZmM4MGE0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKQEAgLTk5MCw5ICs5OTAsNyBAQCBwcml2
YXRlOgogCiAgICAgV2ViQ29yZTo6S2V5Ym9hcmRFdmVudCogbV9rZXlib2FyZEV2ZW50QmVpbmdJ
bnRlcnByZXRlZDsKIAotI2lmICFQTEFURk9STShJT1MpCiAgICAgVmlld0dlc3R1cmVHZW9tZXRy
eUNvbGxlY3RvciBtX3ZpZXdHZXN0dXJlR2VvbWV0cnlDb2xsZWN0b3I7Ci0jZW5kaWYKIAogI2Vs
aWYgSEFWRShBQ0NFU1NJQklMSVRZKSAmJiAoUExBVEZPUk0oR1RLKSB8fCBQTEFURk9STShFRkwp
KQogICAgIEdSZWZQdHI8V2ViUGFnZUFjY2Vzc2liaWxpdHlPYmplY3Q+IG1fYWNjZXNzaWJpbGl0
eU9iamVjdDsK
</data>
<flag name="review"
          id="249454"
          type_id="1"
          status="+"
          setter="benjamin"
    />
          </attachment>
      

    </bug>

</bugzilla>