<?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>125604</bug_id>
          
          <creation_ts>2013-12-11 15:05:09 -0800</creation_ts>
          <short_desc>[wk2] Handle pinch-to-zoom gesture</short_desc>
          <delta_ts>2013-12-14 20:37:02 -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></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>bdakin</cc>
    
    <cc>buildbot</cc>
    
    <cc>commit-queue</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>glenn</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>mitz</cc>
    
    <cc>mkwst</cc>
    
    <cc>rniwa</cc>
    
    <cc>sam</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>958938</commentid>
    <comment_count>0</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2013-12-11 15:05:09 -0800</bug_when>
    <thetext>For live magnification gestures.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>958962</commentid>
    <comment_count>1</comment_count>
      <attachid>219013</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2013-12-11 16:29:12 -0800</bug_when>
    <thetext>Created attachment 219013
take 1</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>958967</commentid>
    <comment_count>2</comment_count>
      <attachid>219017</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2013-12-11 16:39:47 -0800</bug_when>
    <thetext>Created attachment 219017
maybe take 2 will apply</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>958969</commentid>
    <comment_count>3</comment_count>
      <attachid>219013</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2013-12-11 16:43:51 -0800</bug_when>
    <thetext>Comment on attachment 219013
take 1

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

&gt; Source/WebKit2/UIProcess/API/Cocoa/WKViewPrivate.h:80
&gt; +@property (readwrite) BOOL shouldHandleMagnificationGesture;

This should probably be _shouldHandleMagnificationGesture.

&gt; Source/WebKit2/UIProcess/API/mac/WKView.mm:236
&gt; +    std::unique_ptr&lt;ViewGestureController&gt; _gestureController;

It might be better for this to be stored on the WebPageProxy instead.  I&apos;m not 100% sure though, since it might not be generally useful outside of this WKView implementation.

&gt; Source/WebKit2/UIProcess/ViewGestureController.cpp:129
&gt; +    double newMagnification = MAX(m_magnification, 1);

Please use std::max() here (unless there is a good reason not to).

&gt; Source/WebKit2/UIProcess/ViewGestureController.h:39
&gt; +    static std::unique_ptr&lt;ViewGestureController&gt; create(WebPageProxy*);

You can just remove this and use std::make_unique&lt;ViewGestureController&gt;(page) instead.

&gt; Source/WebKit2/UIProcess/ViewGestureController.h:70
&gt; +    WebPageProxy* m_webPageProxy;

This should be a WebPageProxy&amp;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>958972</commentid>
    <comment_count>4</comment_count>
      <attachid>219017</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2013-12-11 16:57:14 -0800</bug_when>
    <thetext>Comment on attachment 219017
maybe take 2 will apply

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

&gt; Source/WebKit2/WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.mm:727
&gt; +    PlatformCALayer* renderViewLayer = static_cast&lt;GraphicsLayerCA*&gt;(renderView-&gt;layer()-&gt;backing()-&gt;graphicsLayer())-&gt;platformCALayer();
&gt; +    renderViewLayer-&gt;setTransform(transform);
&gt; +    renderViewLayer-&gt;setAnchorPoint(FloatPoint3D());
&gt; +    renderViewLayer-&gt;setPosition(FloatPoint3D());

Ew

&gt; Source/WebKit2/WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.mm:743
&gt; +    if (m_transientZoomScale != m_webPage-&gt;pageScaleFactor())
&gt; +       static_cast&lt;GraphicsLayerCA*&gt;(renderView-&gt;layer()-&gt;backing()-&gt;graphicsLayer())-&gt;platformCALayer()-&gt;setTransform(TransformationMatrix());

What about your clobbering of anchor point and position?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>958977</commentid>
    <comment_count>5</comment_count>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2013-12-11 17:06:45 -0800</bug_when>
    <thetext>(In reply to comment #3)
&gt; (From update of attachment 219013 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=219013&amp;action=review
&gt; 
&gt; &gt; Source/WebKit2/UIProcess/API/Cocoa/WKViewPrivate.h:80
&gt; &gt; +@property (readwrite) BOOL shouldHandleMagnificationGesture;
&gt; 
&gt; This should probably be _shouldHandleMagnificationGesture.

We don’t use underscores for properties. I suggest using something like

@property (readwrite, getter=_shouldHandleMagnificationGesture, setter=_setShouldHandleMagnificationGesture:) BOOL shouldHandleMagnificationGesture;

&gt; 
&gt; &gt; Source/WebKit2/UIProcess/API/mac/WKView.mm:236
&gt; &gt; +    std::unique_ptr&lt;ViewGestureController&gt; _gestureController;
&gt; 
&gt; It might be better for this to be stored on the WebPageProxy instead.  I&apos;m not 100% sure though, since it might not be generally useful outside of this WKView implementation.

I think this should go on the WKView. It’s Mac specific code that is also NSView specific.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>958979</commentid>
    <comment_count>6</comment_count>
      <attachid>219017</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-12-11 17:11:27 -0800</bug_when>
    <thetext>Comment on attachment 219017
maybe take 2 will apply

Attachment 219017 did not pass mac-wk2-ews (mac-wk2):
Output: http://webkit-queues.appspot.com/results/48098101</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>958981</commentid>
    <comment_count>7</comment_count>
      <attachid>219017</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-12-11 17:17:50 -0800</bug_when>
    <thetext>Comment on attachment 219017
maybe take 2 will apply

Attachment 219017 did not pass mac-ews (mac):
Output: http://webkit-queues.appspot.com/results/48078099</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>958983</commentid>
    <comment_count>8</comment_count>
    <who name="">mitz</who>
    <bug_when>2013-12-11 17:18:52 -0800</bug_when>
    <thetext>(In reply to comment #5)
&gt; (In reply to comment #3)
&gt; &gt; (From update of attachment 219013 [details] [details])
&gt; &gt; View in context: https://bugs.webkit.org/attachment.cgi?id=219013&amp;action=review
&gt; &gt; 
&gt; &gt; &gt; Source/WebKit2/UIProcess/API/Cocoa/WKViewPrivate.h:80
&gt; &gt; &gt; +@property (readwrite) BOOL shouldHandleMagnificationGesture;
&gt; &gt; 
&gt; &gt; This should probably be _shouldHandleMagnificationGesture.
&gt; 
&gt; We don’t use underscores for properties.

I think we should use underscores for the names of private properties, so that we are free to introduce public properties with the same names (except for the underscores) with different semantics while maintaining source compatibility.

It’s true that when doing this, the default setter has a non-conventional name, so we should explicitly specify setter=_setShouldHandleMagnificationGesture.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>958986</commentid>
    <comment_count>9</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2013-12-11 17:36:38 -0800</bug_when>
    <thetext>(In reply to comment #4)
&gt; (From update of attachment 219017 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=219017&amp;action=review
&gt; 
&gt; &gt; Source/WebKit2/WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.mm:727
&gt; &gt; +    PlatformCALayer* renderViewLayer = static_cast&lt;GraphicsLayerCA*&gt;(renderView-&gt;layer()-&gt;backing()-&gt;graphicsLayer())-&gt;platformCALayer();
&gt; &gt; +    renderViewLayer-&gt;setTransform(transform);
&gt; &gt; +    renderViewLayer-&gt;setAnchorPoint(FloatPoint3D());
&gt; &gt; +    renderViewLayer-&gt;setPosition(FloatPoint3D());
&gt; 
&gt; Ew

smfr suggests trying mucking with the GraphicsLayer and flushing just that layer, so I&apos;m going to try that.

&gt; &gt; Source/WebKit2/WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.mm:743
&gt; &gt; +    if (m_transientZoomScale != m_webPage-&gt;pageScaleFactor())
&gt; &gt; +       static_cast&lt;GraphicsLayerCA*&gt;(renderView-&gt;layer()-&gt;backing()-&gt;graphicsLayer())-&gt;platformCALayer()-&gt;setTransform(TransformationMatrix());
&gt; 
&gt; What about your clobbering of anchor point and position?

They get restored magically when I scalePage() IIRC.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>958988</commentid>
    <comment_count>10</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2013-12-11 17:37:24 -0800</bug_when>
    <thetext>(In reply to comment #5)
&gt; (In reply to comment #3)
&gt; &gt; 
&gt; &gt; &gt; Source/WebKit2/UIProcess/API/mac/WKView.mm:236
&gt; &gt; &gt; +    std::unique_ptr&lt;ViewGestureController&gt; _gestureController;
&gt; &gt; 
&gt; &gt; It might be better for this to be stored on the WebPageProxy instead.  I&apos;m not 100% sure though, since it might not be generally useful outside of this WKView implementation.
&gt; 
&gt; I think this should go on the WKView. It’s Mac specific code that is also NSView specific.

There&apos;s actually nothing Mac or NSView specific about ViewGestureController.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>958994</commentid>
    <comment_count>11</comment_count>
      <attachid>219023</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2013-12-11 18:06:52 -0800</bug_when>
    <thetext>Created attachment 219023
address review comments (except GraphicsLayer bit)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>958997</commentid>
    <comment_count>12</comment_count>
      <attachid>219023</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2013-12-11 18:08:30 -0800</bug_when>
    <thetext>Comment on attachment 219023
address review comments (except GraphicsLayer bit)

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

&gt; Source/WebKit2/UIProcess/mac/TiledCoreAnimationDrawingAreaProxy.mm:161
&gt; +void TiledCoreAnimationDrawingAreaProxy::endTransientZoom(double scale, FloatPoint origin)

smfr also mentioned that this should probably be &quot;commit&quot; since it does apply the pageScale</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>959255</commentid>
    <comment_count>13</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2013-12-12 11:12:14 -0800</bug_when>
    <thetext>(In reply to comment #9)
&gt; (In reply to comment #4)
&gt; &gt; (From update of attachment 219017 [details] [details])
&gt; &gt; View in context: https://bugs.webkit.org/attachment.cgi?id=219017&amp;action=review
&gt; &gt; 
&gt; &gt; &gt; Source/WebKit2/WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.mm:727
&gt; &gt; &gt; +    PlatformCALayer* renderViewLayer = static_cast&lt;GraphicsLayerCA*&gt;(renderView-&gt;layer()-&gt;backing()-&gt;graphicsLayer())-&gt;platformCALayer();
&gt; &gt; &gt; +    renderViewLayer-&gt;setTransform(transform);
&gt; &gt; &gt; +    renderViewLayer-&gt;setAnchorPoint(FloatPoint3D());
&gt; &gt; &gt; +    renderViewLayer-&gt;setPosition(FloatPoint3D());
&gt; &gt; 
&gt; &gt; Ew
&gt; 
&gt; smfr suggests trying mucking with the GraphicsLayer and flushing just that layer, so I&apos;m going to try that.

This goes very poorly because it causes the tile cache layer to be informed that its bounds are changing, leading to it marking itself for revalidateTiles (and also hitting a bunch of asserts).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>959277</commentid>
    <comment_count>14</comment_count>
      <attachid>219023</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2013-12-12 11:50:08 -0800</bug_when>
    <thetext>Comment on attachment 219023
address review comments (except GraphicsLayer bit)

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

r=me with some renaming.

&gt; Source/WebCore/WebCore.xcodeproj/project.pbxproj:475
&gt; +		0FA24D7A162DF91900A3F4C0 /* GraphicsLayerUpdater.h in Headers */ = {isa = PBXBuildFile; fileRef = 0FA24D78162DF91900A3F4C0 /* GraphicsLayerUpdater.h */; settings = {ATTRIBUTES = (Private, ); }; };

Why?

&gt; Source/WebCore/WebCore.xcodeproj/project.pbxproj:1476
&gt; +		49AF2D6914435D050016A784 /* DisplayRefreshMonitor.h in Headers */ = {isa = PBXBuildFile; fileRef = 49AF2D6814435D050016A784 /* DisplayRefreshMonitor.h */; settings = {ATTRIBUTES = (Private, ); }; };

Why?

&gt; Source/WebKit2/ChangeLog:12
&gt; +        Add ViewGestureController off of WKView, which currently only handles

&quot;off of&quot;

&gt; Source/WebKit2/ChangeLog:14
&gt; +        and origin and such, and forwards relevant events on to the DrawingArea

&quot;and such&quot;

&gt; Source/WebKit2/UIProcess/API/Cocoa/WKViewPrivate.h:98
&gt; +- (void)_setShouldHandleMagnificationGesture:(BOOL)flag;

flag -&gt; shouldHandle ?

&gt; Source/WebKit2/UIProcess/API/mac/WKView.mm:236
&gt; +    std::unique_ptr&lt;ViewGestureController&gt; _gestureController;

Any reason not to just have one by value?

&gt; Source/WebKit2/UIProcess/DrawingAreaProxy.h:75
&gt; +    virtual void endTransientZoom(double scale, WebCore::FloatPoint origin) { }

commitZoom?

&gt; Source/WebKit2/UIProcess/ViewGestureController.cpp:75
&gt; +FloatPoint ViewGestureController::scaledMagnificationOrigin(FloatPoint origin, double scale)

const FloatPoint&amp;?

&gt; Source/WebKit2/UIProcess/ViewGestureController.cpp:84
&gt; +void ViewGestureController::didBeginTransientZoom(FloatRect visibleContentRect)

const FloatRect&amp;

&gt; Source/WebKit2/UIProcess/ViewGestureController.cpp:91
&gt; +void ViewGestureController::handleMagnificationGesture(double scale, FloatPoint origin)

const FloatPoint&amp;?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>959294</commentid>
    <comment_count>15</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2013-12-12 12:19:26 -0800</bug_when>
    <thetext>(In reply to comment #14)
&gt; (From update of attachment 219023 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=219023&amp;action=review
&gt; 
&gt; const FloatPoint&amp;?
&gt; 
&gt; &gt; Source/WebKit2/UIProcess/ViewGestureController.cpp:84
&gt; &gt; +void ViewGestureController::didBeginTransientZoom(FloatRect visibleContentRect)
&gt; 
&gt; const FloatRect&amp;
&gt; 
&gt; &gt; Source/WebKit2/UIProcess/ViewGestureController.cpp:91
&gt; &gt; +void ViewGestureController::handleMagnificationGesture(double scale, FloatPoint origin)
&gt; 
&gt; const FloatPoint&amp;?

Anders says no because they fit in a register :|</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>959346</commentid>
    <comment_count>16</comment_count>
      <attachid>219023</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2013-12-12 14:43:11 -0800</bug_when>
    <thetext>Comment on attachment 219023
address review comments (except GraphicsLayer bit)

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

&gt; Source/WebKit2/UIProcess/API/Cocoa/WKViewPrivate.h:97
&gt; +- (BOOL)_shouldHandleMagnificationGesture;

anders/mitz say allowsMagnification

they also want a method to adjust the magnification (setMagnification:centeredAtPoint:)
and (magnification) property</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>959347</commentid>
    <comment_count>17</comment_count>
      <attachid>219023</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2013-12-12 14:43:14 -0800</bug_when>
    <thetext>Comment on attachment 219023
address review comments (except GraphicsLayer bit)

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

&gt; Source/WebKit2/UIProcess/API/Cocoa/WKViewPrivate.h:97
&gt; +- (BOOL)_shouldHandleMagnificationGesture;

anders/mitz say allowsMagnification

they also want a method to adjust the magnification (setMagnification:centeredAtPoint:)
and (magnification) property</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>959348</commentid>
    <comment_count>18</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2013-12-12 14:44:16 -0800</bug_when>
    <thetext>(In reply to comment #17)
&gt; (From update of attachment 219023 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=219023&amp;action=review
&gt; 
&gt; &gt; Source/WebKit2/UIProcess/API/Cocoa/WKViewPrivate.h:97
&gt; &gt; +- (BOOL)_shouldHandleMagnificationGesture;
&gt; 
&gt; anders/mitz say allowsMagnification
&gt; 
&gt; they also want a method to adjust the magnification (setMagnification:centeredAtPoint:)
&gt; and (magnification) property
 (which uses the center as the origin)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>959349</commentid>
    <comment_count>19</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2013-12-12 14:47:19 -0800</bug_when>
    <thetext>(In reply to comment #17)
&gt; (From update of attachment 219023 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=219023&amp;action=review
&gt; 
&gt; &gt; Source/WebKit2/UIProcess/API/Cocoa/WKViewPrivate.h:97
&gt; &gt; +- (BOOL)_shouldHandleMagnificationGesture;
&gt; 
&gt; anders/mitz say allowsMagnification

and should use target conditionals to not appear on iOS</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>959387</commentid>
    <comment_count>20</comment_count>
      <attachid>219132</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2013-12-12 15:58:56 -0800</bug_when>
    <thetext>Created attachment 219132
take 4 - addressing lots of review comments</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>959403</commentid>
    <comment_count>21</comment_count>
      <attachid>219132</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2013-12-12 16:40:55 -0800</bug_when>
    <thetext>Comment on attachment 219132
take 4 - addressing lots of review comments

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

&gt; Source/WebCore/WebCore.exp.in:780
&gt; +__ZN7WebCore20TransformationMatrix9translateEdd
&gt; +__ZN7WebCore20TransformationMatrix5scaleEd

these should be swapped</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>959409</commentid>
    <comment_count>22</comment_count>
      <attachid>219132</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2013-12-12 17:02:06 -0800</bug_when>
    <thetext>Comment on attachment 219132
take 4 - addressing lots of review comments

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

&gt; Source/WebKit2/UIProcess/API/mac/WKView.mm:3302
&gt; +- (void)setMagnification:(double)magnification
&gt; +{
&gt; +    FloatPoint viewCenter(NSMidX([self bounds]), NSMidY([self bounds]));
&gt; +    _data-&gt;_page-&gt;scalePage(magnification, roundedIntPoint(viewCenter));
&gt; +}

Seems weird to arbitrarily zoom to the center.

&gt; Source/WebKit2/UIProcess/mac/ViewGestureController.h:68
&gt; +    double m_magnification;
&gt; +    WebCore::FloatPoint m_magnificationOrigin;
&gt; +    WebCore::FloatRect m_visibleContentRect;
&gt; +    bool m_visibleContentRectIsValid;
&gt; +
&gt; +    WebPageProxy&amp; m_webPageProxy;

Re-order to save (tiny) space.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>959410</commentid>
    <comment_count>23</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2013-12-12 17:09:12 -0800</bug_when>
    <thetext>(In reply to comment #22)
&gt; (From update of attachment 219132 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=219132&amp;action=review
&gt; 
&gt; &gt; Source/WebKit2/UIProcess/API/mac/WKView.mm:3302
&gt; &gt; +- (void)setMagnification:(double)magnification
&gt; &gt; +{
&gt; &gt; +    FloatPoint viewCenter(NSMidX([self bounds]), NSMidY([self bounds]));
&gt; &gt; +    _data-&gt;_page-&gt;scalePage(magnification, roundedIntPoint(viewCenter));
&gt; &gt; +}
&gt; 
&gt; Seems weird to arbitrarily zoom to the center.

I dunno. At first thought I assumed 0,0 was right, but:

a) NSScrollView uses the center
b) Imagine if Cmd-+ used this. Wouldn&apos;t it seem most reasonable if it zoomed to the center?

&gt; &gt; Source/WebKit2/UIProcess/mac/ViewGestureController.h:68
&gt; &gt; +    double m_magnification;
&gt; &gt; +    WebCore::FloatPoint m_magnificationOrigin;
&gt; &gt; +    WebCore::FloatRect m_visibleContentRect;
&gt; &gt; +    bool m_visibleContentRectIsValid;
&gt; &gt; +
&gt; &gt; +    WebPageProxy&amp; m_webPageProxy;
&gt; 
&gt; Re-order to save (tiny) space.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>959413</commentid>
    <comment_count>24</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2013-12-12 17:33:47 -0800</bug_when>
    <thetext>http://trac.webkit.org/changeset/160520</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>959611</commentid>
    <comment_count>25</comment_count>
      <attachid>219178</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2013-12-13 11:50:48 -0800</bug_when>
    <thetext>Created attachment 219178
tiny mistake - not forwarding the event to superclasses if disabled</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>959612</commentid>
    <comment_count>26</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2013-12-13 11:51:04 -0800</bug_when>
    <thetext>reopen for tiny followup patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>959616</commentid>
    <comment_count>27</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2013-12-13 12:13:12 -0800</bug_when>
    <thetext>http://trac.webkit.org/changeset/160554</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>959898</commentid>
    <comment_count>28</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2013-12-14 20:37:02 -0800</bug_when>
    <thetext>&lt;rdar://problem/15664239&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>219013</attachid>
            <date>2013-12-11 16:29:12 -0800</date>
            <delta_ts>2013-12-11 18:06:52 -0800</delta_ts>
            <desc>take 1</desc>
            <filename>zoom.diff</filename>
            <type>text/plain</type>
            <size>49038</size>
            <attacher name="Tim Horton">thorton</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCAyMDIzOTUwLi42MDk1NzcyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjAg
QEAKKzIwMTMtMTItMTEgIFRpbSBIb3J0b24gIDx0aW1vdGh5X2hvcnRvbkBhcHBsZS5jb20+CisK
KyAgICAgICAgW3drMl0gSGFuZGxlIHBpbmNoLXRvLXpvb20gZ2VzdHVyZQorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTI1NjA0CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJDb3JlLmV4cC5pbjoKKyAg
ICAgICAgRXhwb3J0IHNvbWUgVHJhbnNmb3JtYXRpb25NYXRyaXggZnVuY3Rpb25zLgorCisgICAg
ICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICBNYWtlIHNv
bWUgaGVhZGVycyBwcml2YXRlIHNvIHRoYXQgUmVuZGVyTGF5ZXJDb21wb3NpdG9yL0JhY2tpbmcg
Y2FuIGJlIHVzZWQgZnJvbSBXZWJLaXQyLgorCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxh
eWVyQ29tcG9zaXRvci5oOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXJDb21wb3NpdG9y
OjpsYXllckZvckNvbnRlbnRTaGFkb3cpOgorICAgICAgICBBZGQgYSBnZXR0ZXIgZm9yIHRoZSBj
b250ZW50IHNoYWRvdyBsYXllci4KKwogMjAxMy0xMi0wOSAgQW5kcmVhcyBLbGluZyAgPGFrbGlu
Z0BhcHBsZS5jb20+CiAKICAgICAgICAgUkVHUkVTU0lPTihyMTYwMjYwKTogTWVtb3J5IHByZXNz
dXJlIHNpZ25hbCBjYXVzZXMgd2ViIHByb2Nlc3MgdG8gaGFuZy4KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4K
aW5kZXggMzEzZGE3YS4uM2E2ODc5YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS5leHAuaW4KKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4KQEAgLTc3Niw2ICs3
NzYsOCBAQCBfX1pON1dlYkNvcmUyMFJlc291cmNlUmVzcG9uc2VCYXNlMjBzZXRTdWdnZXN0ZWRG
aWxlbmFtZUVSS04zV1RGNlN0cmluZ0UKIF9fWk43V2ViQ29yZTIwUmVzb3VyY2VSZXNwb25zZUJh
c2UyNHNldEV4cGVjdGVkQ29udGVudExlbmd0aEV4CiBfX1pON1dlYkNvcmUyMFJlc291cmNlUmVz
cG9uc2VCYXNlNnNldFVSTEVSS05TXzNVUkxFCiBfX1pON1dlYkNvcmUyMFJlc291cmNlUmVzcG9u
c2VCYXNlQzJFdgorX19aTjdXZWJDb3JlMjBUcmFuc2Zvcm1hdGlvbk1hdHJpeDl0cmFuc2xhdGVF
ZGQKK19fWk43V2ViQ29yZTIwVHJhbnNmb3JtYXRpb25NYXRyaXg1c2NhbGVFZAogX19aTjdXZWJD
b3JlMjBVc2VyR2VzdHVyZUluZGljYXRvcjdzX3N0YXRlRQogX19aTjdXZWJDb3JlMjBVc2VyR2Vz
dHVyZUluZGljYXRvckMxRU5TXzI2UHJvY2Vzc2luZ1VzZXJHZXN0dXJlU3RhdGVFCiBfX1pON1dl
YkNvcmUyMFVzZXJHZXN0dXJlSW5kaWNhdG9yRDFFdgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDI2OTE0ZDUuLmVkZmY4MTQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
QEAgLTQ3Miw3ICs0NzIsNyBAQAogCQkwRjYwNUFFQzE1Rjk0ODQ4MDA0REYwQzAgLyogU2Nyb2xs
aW5nQ29uc3RyYWludHMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMEY2MDVBRUExNUY5NDg0ODAwNERGMEMwIC8qIFNjcm9sbGluZ0NvbnN0cmFpbnRz
LmNwcCAqLzsgfTsKIAkJMEY2MDVBRUQxNUY5NDg0ODAwNERGMEMwIC8qIFNjcm9sbGluZ0NvbnN0
cmFpbnRzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAw
RjYwNUFFQjE1Rjk0ODQ4MDA0REYwQzAgLyogU2Nyb2xsaW5nQ29uc3RyYWludHMuaCAqLzsgfTsK
IAkJMEZBMjRENzkxNjJERjkxOTAwQTNGNEMwIC8qIEdyYXBoaWNzTGF5ZXJVcGRhdGVyLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGQTI0RDc3MTYy
REY5MTkwMEEzRjRDMCAvKiBHcmFwaGljc0xheWVyVXBkYXRlci5jcHAgKi87IH07Ci0JCTBGQTI0
RDdBMTYyREY5MTkwMEEzRjRDMCAvKiBHcmFwaGljc0xheWVyVXBkYXRlci5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZBMjRENzgxNjJERjkxOTAwQTNG
NEMwIC8qIEdyYXBoaWNzTGF5ZXJVcGRhdGVyLmggKi87IH07CisJCTBGQTI0RDdBMTYyREY5MTkw
MEEzRjRDMCAvKiBHcmFwaGljc0xheWVyVXBkYXRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZBMjRENzgxNjJERjkxOTAwQTNGNEMwIC8qIEdyYXBo
aWNzTGF5ZXJVcGRhdGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKIAkJMEZBODhFQkQxNkE4RDFCRDAwRjk5OTg0IC8qIFNjcm9sbGluZ1N0YXRlU2Ny
b2xsaW5nTm9kZU1hYy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDBGQTg4RUJDMTZBOEQxQkQwMEY5OTk4NCAvKiBTY3JvbGxpbmdTdGF0ZVNjcm9sbGlu
Z05vZGVNYWMubW0gKi87IH07CiAJCTBGQjg4OTBBMTY3RDJGQTEwMDEwQ0RBNSAvKiBTY3JvbGxp
bmdUcmVlU3RpY2t5Tm9kZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMEZCODg5MDgxNjdEMkZBMTAwMTBDREE1IC8qIFNjcm9sbGluZ1RyZWVTdGlja3lO
b2RlLmggKi87IH07CiAJCTBGQjg4OTBCMTY3RDJGQTEwMDEwQ0RBNSAvKiBTY3JvbGxpbmdUcmVl
U3RpY2t5Tm9kZS5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDBGQjg4OTA5MTY3RDJGQTEwMDEwQ0RBNSAvKiBTY3JvbGxpbmdUcmVlU3RpY2t5Tm9kZS5t
bSAqLzsgfTsKQEAgLTE0NzEsNyArMTQ3MSw3IEBACiAJCTQ5QUUyRDhGMTM0RUU1MEMwMDcyOTIw
QSAvKiBDU1NDYWxjdWxhdGlvblZhbHVlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA0OUFFMkQ4RDEzNEVFNTBDMDA3MjkyMEEgLyogQ1NTQ2FsY3VsYXRp
b25WYWx1ZS5oICovOyB9OwogCQk0OUFFMkQ5NjEzNEVFNUY5MDA3MjkyMEEgLyogQ2FsY3VsYXRp
b25WYWx1ZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA0OUFFMkQ5NDEzNEVFNUY5MDA3MjkyMEEgLyogQ2FsY3VsYXRpb25WYWx1ZS5jcHAgKi87IH07
CiAJCTQ5QUUyRDk3MTM0RUU1RjkwMDcyOTIwQSAvKiBDYWxjdWxhdGlvblZhbHVlLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0OUFFMkQ5NTEzNEVFNUY5
MDA3MjkyMEEgLyogQ2FsY3VsYXRpb25WYWx1ZS5oICovOyB9OwotCQk0OUFGMkQ2OTE0NDM1RDA1
MDAxNkE3ODQgLyogRGlzcGxheVJlZnJlc2hNb25pdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0OUFGMkQ2ODE0NDM1RDA1MDAxNkE3ODQgLyogRGlz
cGxheVJlZnJlc2hNb25pdG9yLmggKi87IH07CisJCTQ5QUYyRDY5MTQ0MzVEMDUwMDE2QTc4NCAv
KiBEaXNwbGF5UmVmcmVzaE1vbml0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDQ5QUYyRDY4MTQ0MzVEMDUwMDE2QTc4NCAvKiBEaXNwbGF5UmVmcmVz
aE1vbml0b3IuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwogCQk0OUFGMkQ2QzE0NDM1RDIxMDAxNkE3ODQgLyogRGlzcGxheVJlZnJlc2hNb25pdG9yTWFj
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ5QUYy
RDZCMTQ0MzVEMjEwMDE2QTc4NCAvKiBEaXNwbGF5UmVmcmVzaE1vbml0b3JNYWMuY3BwICovOyB9
OwogCQk0OUIzNzYwQzE1QzZDNjg0MDA1OTEzMUQgLyogQXJyYXlWYWx1ZS5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0OUIzNzYwQTE1QzZDNjg0MDA1
OTEzMUQgLyogQXJyYXlWYWx1ZS5jcHAgKi87IH07CiAJCTQ5QjM3NjBEMTVDNkM2ODQwMDU5MTMx
RCAvKiBBcnJheVZhbHVlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA0OUIzNzYwQjE1QzZDNjg0MDA1OTEzMUQgLyogQXJyYXlWYWx1ZS5oICovOyB9OwpA
QCAtNTI2OSw2ICs1MjY5LDcgQEAKIAkJQzUyNzhCMEMxN0YyMTJFQTAwM0EyOTk4IC8qIFBsYXRm
b3JtUGFzdGVib2FyZElPUy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEM1Mjc4QjBCMTdGMjEyRUEwMDNBMjk5OCAvKiBQbGF0Zm9ybVBhc3RlYm9hcmRJ
T1MubW0gKi87IH07CiAJCUM1NDQyNzRCMTFBNTdFN0EwMDYzQTc0OSAvKiBET01TdHJpbmdMaXN0
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDNTQ0Mjc0
OTExQTU3RTdBMDA2M0E3NDkgLyogRE9NU3RyaW5nTGlzdC5oICovOyB9OwogCQlDNTU2MTBGMTEx
QTcwNEVCMDBCODJEMjcgLyogRE9NU3RyaW5nTGlzdC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDNTU2MTBGMDExQTcwNEVCMDBCODJEMjcgLyogRE9N
U3RyaW5nTGlzdC5jcHAgKi87IH07CisJCUM1NUM3QkExMTcxOEFGQkEwMDEzMjdFNCAvKiBSZW5k
ZXJUaGVtZUlPUy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEM1NUM3QkEwMTcxOEFGQkEwMDEzMjdFNCAvKiBSZW5kZXJUaGVtZUlPUy5tbSAqLzsgfTsK
IAkJQzU1RTM4QkYxMDA0MEQ1RDAwQTU2QkRCIC8qIFN0b3JhZ2VOYW1lc3BhY2VJbXBsLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDNTVFMzhCQjEwMDQw
RDVEMDBBNTZCREIgLyogU3RvcmFnZU5hbWVzcGFjZUltcGwuaCAqLzsgfTsKIAkJQzU1RTM4QzAx
MDA0MEQ1RDAwQTU2QkRCIC8qIFN0b3JhZ2VOYW1lc3BhY2VJbXBsLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEM1NUUzOEJDMTAwNDBENUQwMEE1NkJE
QiAvKiBTdG9yYWdlTmFtZXNwYWNlSW1wbC5jcHAgKi87IH07CiAJCUM1NzJFRTFGMTIwMUM5QkMw
MDdEOEY4MiAvKiBKU0lEQkluZGV4LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBDNTcyRUUxRDEyMDFDOUJDMDA3RDhGODIgLyogSlNJREJJbmRleC5oICov
OyB9OwpAQCAtNTQ0Nyw4ICs1NDQ4LDYgQEAKIAkJQ0U3QjJEQjUxNTg2QUJBRDAwOThCM0ZBIC8q
IFRleHRBbHRlcm5hdGl2ZVdpdGhSYW5nZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gQ0U3QjJEQjExNTg2QUJBRDAwOThCM0ZBIC8qIFRleHRBbHRlcm5h
dGl2ZVdpdGhSYW5nZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CiAJCUNFN0IyREI2MTU4NkFCQUQwMDk4QjNGQSAvKiBUZXh0QWx0ZXJuYXRpdmVXaXRo
UmFuZ2UubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBD
RTdCMkRCMjE1ODZBQkFEMDA5OEIzRkEgLyogVGV4dEFsdGVybmF0aXZlV2l0aFJhbmdlLm1tICov
OyB9OwogCQlDRTk1MjA4QTE4MTFCNDc1MDA3QTUzOTIgLyogV2ViU2FmZUluY3JlbWVudGFsU3dl
ZXBlcklPUy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
QzJDNENCMUQxNjFBMTMxMjAwRDIxNERBIC8qIFdlYlNhZmVJbmNyZW1lbnRhbFN3ZWVwZXJJT1Mu
aCAqLzsgfTsKLQkJRkVEMTNENTIwQ0VBOTQ5NzAwRDg5NDY2IC8qIFJlbmRlclRoZW1lSU9TLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRUQxM0Q1MDBD
RUE5NDk3MDBEODk0NjYgLyogUmVuZGVyVGhlbWVJT1MuaCAqLzsgfTsKLQkJQzU1QzdCQTExNzE4
QUZCQTAwMTMyN0U0IC8qIFJlbmRlclRoZW1lSU9TLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzU1QzdCQTAxNzE4QUZCQTAwMTMyN0U0IC8qIFJlbmRl
clRoZW1lSU9TLm1tICovOyB9OwogCQlDRUNBREZDNjE1Mzc3OEZGMDBFMzcwNjggLyogRGljdGF0
aW9uQWx0ZXJuYXRpdmUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQ0VDQURGQzIxNTM3NzhGRjAwRTM3MDY4IC8qIERpY3RhdGlvbkFsdGVybmF0aXZl
LmNwcCAqLzsgfTsKIAkJQ0VDQURGQzcxNTM3NzhGRjAwRTM3MDY4IC8qIERpY3RhdGlvbkFsdGVy
bmF0aXZlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBD
RUNBREZDMzE1Mzc3OEZGMDBFMzcwNjggLyogRGljdGF0aW9uQWx0ZXJuYXRpdmUuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlDRUNBREZDODE1Mzc3
OEZGMDBFMzcwNjggLyogRGljdGF0aW9uQ29tbWFuZC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRUNBREZDNDE1Mzc3OEZGMDBFMzcwNjggLyogRGlj
dGF0aW9uQ29tbWFuZC5jcHAgKi87IH07CkBAIC02MzI1LDYgKzYzMjQsNyBAQAogCQlGRUJDNUYz
MTE2QkQwQ0MzMDA2NTlCRDMgLyogRGF0YWJhc2VCYXNlLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFQkM1RjJGMTZCRDBDQzMwMDY1OUJEMyAvKiBE
YXRhYmFzZUJhc2UuY3BwICovOyB9OwogCQlGRUJDNUYzMjE2QkQwQ0MzMDA2NTlCRDMgLyogRGF0
YWJhc2VCYXNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBGRUJDNUYzMDE2QkQwQ0MzMDA2NTlCRDMgLyogRGF0YWJhc2VCYXNlLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRkVEMTNEM0EwQ0VBOTM0NjAw
RDg5NDY2IC8qIEVkaXRvcklPUy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEZFRDEzRDM5MENFQTkzNDYwMEQ4OTQ2NiAvKiBFZGl0b3JJT1MubW0gKi87
IH07CisJCUZFRDEzRDUyMENFQTk0OTcwMEQ4OTQ2NiAvKiBSZW5kZXJUaGVtZUlPUy5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkVEMTNENTAwQ0VBOTQ5
NzAwRDg5NDY2IC8qIFJlbmRlclRoZW1lSU9TLmggKi87IH07CiAJCUZFRDQ4MzkwQ0VENjZDMzI1
NUY3MkM1OSAvKiBNYXRoTUxTZWxlY3RFbGVtZW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY3NUEwNTlBRjE3MEQ4RkFBNUI4Q0FCRSAvKiBNYXRo
TUxTZWxlY3RFbGVtZW50LmNwcCAqLzsgfTsKIAkJRkVEQkZGMTYxODJCN0E4RDAwMTdGQTY0IC8q
IEJyZWFrcG9pbnRJRC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gRkVEQkZGMTQxODJCN0E4RDAwMTdGQTY0IC8qIEJyZWFrcG9pbnRJRC5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUZFREVGODQxMTY3OTcx
MDgwMDBFNDQ0QSAvKiBEYXRhYmFzZVN0cmF0ZWd5LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFREVGODNGMTY3OTcxMDgwMDBFNDQ0QSAvKiBEYXRh
YmFzZVN0cmF0ZWd5LmNwcCAqLzsgfTsKQEAgLTEyMzQ3LDYgKzEyMzQ3LDcgQEAKIAkJQzU0NDI3
NDkxMUE1N0U3QTAwNjNBNzQ5IC8qIERPTVN0cmluZ0xpc3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gRE9NU3RyaW5nTGlzdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQlDNTQ0Mjc0QTExQTU3RTdBMDA2M0E3NDkgLyogRE9NU3RyaW5nTGlzdC5pZGwgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSB0ZXh0OyBwYXRoID0gRE9NU3RyaW5nTGlzdC5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCUM1NTYxMEYwMTFBNzA0RUIwMEI4MkQyNyAvKiBET01TdHJpbmdMaXN0LmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IERPTVN0cmluZ0xpc3QuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDNTVDN0JBMDE3MThBRkJBMDAxMzI3RTQgLyog
UmVuZGVyVGhlbWVJT1MubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGgg
PSBSZW5kZXJUaGVtZUlPUy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzU1RTM4
QkIxMDA0MEQ1RDAwQTU2QkRCIC8qIFN0b3JhZ2VOYW1lc3BhY2VJbXBsLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFN0b3JhZ2VOYW1lc3BhY2VJbXBsLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCUM1NUUzOEJDMTAwNDBENUQwMEE1NkJEQiAvKiBTdG9yYWdlTmFt
ZXNwYWNlSW1wbC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTdG9y
YWdlTmFtZXNwYWNlSW1wbC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUM1NzJF
RTFEMTIwMUM5QkMwMDdEOEY4MiAvKiBKU0lEQkluZGV4LmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IEpTSURCSW5kZXguaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAg
LTEyNTc2LDggKzEyNTc3LDYgQEAKIAkJQ0U3QjJEQjAxNTg2QUJBRDAwOThCM0ZBIC8qIEFsdGVy
bmF0aXZlVGV4dFVJQ29udHJvbGxlci5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNw
cDsgbmFtZSA9IEFsdGVybmF0aXZlVGV4dFVJQ29udHJvbGxlci5tbTsgcGF0aCA9IG1hYy9BbHRl
cm5hdGl2ZVRleHRVSUNvbnRyb2xsZXIubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUNFN0IyREIxMTU4NkFCQUQwMDk4QjNGQSAvKiBUZXh0QWx0ZXJuYXRpdmVXaXRoUmFuZ2UuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gVGV4dEFsdGVybmF0aXZlV2l0aFJhbmdl
Lmg7IHBhdGggPSBtYWMvVGV4dEFsdGVybmF0aXZlV2l0aFJhbmdlLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCUNFN0IyREIyMTU4NkFCQUQwMDk4QjNGQSAvKiBUZXh0QWx0ZXJuYXRp
dmVXaXRoUmFuZ2UubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IG5hbWUgPSBU
ZXh0QWx0ZXJuYXRpdmVXaXRoUmFuZ2UubW07IHBhdGggPSBtYWMvVGV4dEFsdGVybmF0aXZlV2l0
aFJhbmdlLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlGRUQxM0Q1MDBDRUE5NDk3
MDBEODk0NjYgLyogUmVuZGVyVGhlbWVJT1MuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gUmVuZGVyVGhlbWVJT1MuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQzU1
QzdCQTAxNzE4QUZCQTAwMTMyN0U0IC8qIFJlbmRlclRoZW1lSU9TLm1tICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gUmVuZGVyVGhlbWVJT1MubW07IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCUNFQ0FERkMyMTUzNzc4RkYwMEUzNzA2OCAvKiBEaWN0YXRpb25B
bHRlcm5hdGl2ZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBEaWN0
YXRpb25BbHRlcm5hdGl2ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNFQ0FE
RkMzMTUzNzc4RkYwMEUzNzA2OCAvKiBEaWN0YXRpb25BbHRlcm5hdGl2ZS5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBEaWN0YXRpb25BbHRlcm5hdGl2ZS5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlDRUNBREZDNDE1Mzc3OEZGMDBFMzcwNjggLyogRGljdGF0aW9u
Q29tbWFuZC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBEaWN0YXRp
b25Db21tYW5kLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTEzNTQ5LDYgKzEz
NTQ4LDcgQEAKIAkJRkVCQzVGMkYxNkJEMENDMzAwNjU5QkQzIC8qIERhdGFiYXNlQmFzZS5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBEYXRhYmFzZUJhc2UuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGRUJDNUYzMDE2QkQwQ0MzMDA2NTlCRDMgLyog
RGF0YWJhc2VCYXNlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERhdGFiYXNl
QmFzZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGRUQxM0QzOTBDRUE5MzQ2MDBE
ODk0NjYgLyogRWRpdG9ySU9TLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBw
YXRoID0gRWRpdG9ySU9TLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlGRUQxM0Q1
MDBDRUE5NDk3MDBEODk0NjYgLyogUmVuZGVyVGhlbWVJT1MuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gUmVuZGVyVGhlbWVJT1MuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJRkVEQkZGMTQxODJCN0E4RDAwMTdGQTY0IC8qIEJyZWFrcG9pbnRJRC5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBCcmVha3BvaW50SUQuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJRkVERUY4M0YxNjc5NzEwODAwMEU0NDRBIC8qIERhdGFiYXNlU3RyYXRl
Z3kuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRGF0YWJhc2VTdHJh
dGVneS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUZFREVGODQwMTY3OTcxMDgw
MDBFNDQ0QSAvKiBEYXRhYmFzZVN0cmF0ZWd5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IERhdGFiYXNlU3RyYXRlZ3kuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckNvbXBvc2l0b3Iu
aCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckNvbXBvc2l0b3IuaAppbmRl
eCAyNjE2YTc2Li5lMTdhNDY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyTGF5ZXJDb21wb3NpdG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckxheWVyQ29tcG9zaXRvci5oCkBAIC0yNjMsNiArMjYzLDcgQEAgcHVibGljOgogICAgIEdy
YXBoaWNzTGF5ZXIqIGxheWVyRm9yU2Nyb2xsQ29ybmVyKCkgY29uc3QgeyByZXR1cm4gbV9sYXll
ckZvclNjcm9sbENvcm5lci5nZXQoKTsgfQogI2lmIEVOQUJMRShSVUJCRVJfQkFORElORykKICAg
ICBHcmFwaGljc0xheWVyKiBsYXllckZvck92ZXJoYW5nQXJlYXMoKSBjb25zdCB7IHJldHVybiBt
X2xheWVyRm9yT3ZlcmhhbmdBcmVhcy5nZXQoKTsgfQorICAgIEdyYXBoaWNzTGF5ZXIqIGxheWVy
Rm9yQ29udGVudFNoYWRvdygpIGNvbnN0IHsgcmV0dXJuIG1fY29udGVudFNoYWRvd0xheWVyLmdl
dCgpOyB9CiAKICAgICBHcmFwaGljc0xheWVyKiB1cGRhdGVMYXllckZvclRvcE92ZXJoYW5nQXJl
YShib29sIHdhbnRzTGF5ZXIpOwogICAgIEdyYXBoaWNzTGF5ZXIqIHVwZGF0ZUxheWVyRm9yQm90
dG9tT3ZlcmhhbmdBcmVhKGJvb2wgd2FudHNMYXllcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggMmZhMDkyMy4u
YjllZDQ4OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEwNiBAQAorMjAxMy0xMi0xMSAgVGltIEhv
cnRvbiAgPHRpbW90aHlfaG9ydG9uQGFwcGxlLmNvbT4KKworICAgICAgICBbd2syXSBIYW5kbGUg
cGluY2gtdG8tem9vbSBnZXN0dXJlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xMjU2MDQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBBZGQgdGhlIGNvbmNlcHQgb2YgYSAidHJhbnNpZW50IiB6b29tIHRvIERy
YXdpbmdBcmVhLCB3aGljaCBpcyBhIHpvb20KKyAgICAgICAgdGhhdCBhZmZlY3RzIHRoZSBjb250
ZW50LCBidXQgZG9lcyBub3QgY2F1c2UgcmVwYWludCwgYXMgd291bGQgYmUgdXNlZAorICAgICAg
ICBmb3IgYSBsaXZlIHBpbmNoLXpvb20gZ2VzdHVyZS4KKworICAgICAgICBBZGQgVmlld0dlc3R1
cmVDb250cm9sbGVyIG9mZiBvZiBXS1ZpZXcsIHdoaWNoIGN1cnJlbnRseSBvbmx5IGhhbmRsZXMK
KyAgICAgICAgbWFnbmlmaWNhdGlvbiBnZXN0dXJlcywgYW5kIGtlZXBzIHRyYWNrIG9mIHRoZSBj
dXJyZW50IGdlc3R1cmUncyBzY2FsZQorICAgICAgICBhbmQgb3JpZ2luIGFuZCBzdWNoLCBhbmQg
Zm9yd2FyZHMgcmVsZXZhbnQgZXZlbnRzIG9uIHRvIHRoZSBEcmF3aW5nQXJlYQorICAgICAgICB2
aWEgdGhlIHRyYW5zaWVudCB6b29tIG1lY2hhbmlzbS4KKworICAgICAgICAqIERlcml2ZWRTb3Vy
Y2VzLm1ha2U6CisgICAgICAgIEFkZCBWaWV3R2VzdHVyZUNvbnRyb2xsZXIgdG8gdGhlIGxpc3Qg
b2YgbWVzc2FnZSByZWNlaXZlcnMuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dL
Vmlld1ByaXZhdGUuaDoKKyAgICAgICAgQWRkIHNob3VsZEhhbmRsZU1hZ25pZmljYXRpb25HZXN0
dXJlIHByb3BlcnR5LCB3aGljaCBjb250cm9scyB3aGV0aGVyIFdLVmlldyB3aWxsCisgICAgICAg
IGF0dGVtcHQgdG8gaGFuZGxlIG1hZ25pZnlXaXRoRXZlbnQ6LgorCisgICAgICAgICogVUlQcm9j
ZXNzL0FQSS9tYWMvV0tWaWV3Lm1tOgorICAgICAgICAoLVtXS1ZpZXcgd2FpdEZvckFzeW5jRHJh
d2luZ0FyZWFTaXplVXBkYXRlXSk6CisgICAgICAgIEZpeCBhIHR5cG8uCisKKyAgICAgICAgKC1b
V0tWaWV3IF9lbnN1cmVHZXN0dXJlQ29udHJvbGxlcl0pOgorICAgICAgICBDcmVhdGUgb3VyIFZp
ZXdHZXN0dXJlQ29udHJvbGxlciBpZiBpdCBkb2Vzbid0IGFscmVhZHkgZXhpc3QuCisKKyAgICAg
ICAgKC1bV0tWaWV3IHNldFNob3VsZEhhbmRsZU1hZ25pZmljYXRpb25HZXN0dXJlOl0pOgorICAg
ICAgICAoLVtXS1ZpZXcgc2hvdWxkSGFuZGxlTWFnbmlmaWNhdGlvbkdlc3R1cmVdKToKKyAgICAg
ICAgR2V0L3NldCBzaG91bGRIYW5kbGVNYWduaWZpY2F0aW9uR2VzdHVyZS4KKworICAgICAgICAo
LVtXS1ZpZXcgbWFnbmlmeVdpdGhFdmVudDpdKToKKyAgICAgICAgKC1bV0tWaWV3IGVuZEdlc3R1
cmVXaXRoRXZlbnQ6XSk6CisgICAgICAgIEZvcndhcmQgZ2VzdHVyZSBtZXRob2RzIHRvIFZpZXdH
ZXN0dXJlQ29udHJvbGxlci4KKworICAgICAgICAqIFVJUHJvY2Vzcy9WaWV3R2VzdHVyZUNvbnRy
b2xsZXIuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6Vmlld0dlc3R1cmVDb250cm9sbGVy
OjpjcmVhdGUpOgorICAgICAgICAoV2ViS2l0OjpWaWV3R2VzdHVyZUNvbnRyb2xsZXI6OlZpZXdH
ZXN0dXJlQ29udHJvbGxlcik6CisgICAgICAgIChXZWJLaXQ6OlZpZXdHZXN0dXJlQ29udHJvbGxl
cjo6flZpZXdHZXN0dXJlQ29udHJvbGxlcik6CisgICAgICAgIChXZWJLaXQ6OnJlc2lzdGFuY2VG
b3JEZWx0YSk6CisgICAgICAgIENvbXB1dGUgYSByZXNpc3RhbmNlIGZhY3Rvciwgd2hpY2ggbWFr
ZXMgaXQgZmVlbCAiaGFyZCIgdG8gem9vbSBvdXQgcGFzdAorICAgICAgICBzY2FsZT0xLCBhbmQg
YWNjZWxlcmF0ZXMgc2NhbGluZyBvdXQgYmVmb3JlIHlvdSBoaXQgc2NhbGU9MS4KKworICAgICAg
ICAoV2ViS2l0OjpWaWV3R2VzdHVyZUNvbnRyb2xsZXI6OnNjYWxlZE1hZ25pZmljYXRpb25Pcmln
aW4pOgorICAgICAgICBDb21wdXRlIHRoZSBvcmlnaW4gb2YgdGhlIG1hZ25pZmljYXRpb24gZ2Vz
dHVyZSB3aXRoIHRoZSB0cmFuc2llbnQgem9vbSB1bmFwcGxpZWQuCisKKyAgICAgICAgKFdlYktp
dDo6Vmlld0dlc3R1cmVDb250cm9sbGVyOjpoYW5kbGVNYWduaWZpY2F0aW9uR2VzdHVyZSk6Cisg
ICAgICAgIFRoZSBmaXJzdCBtYWduaWZpY2F0aW9uIGdlc3R1cmUgd2lsbCBzZW5kIGEgbWVzc2Fn
ZSB0byB0aGUgV2ViUHJvY2VzcworICAgICAgICB0byByZXRyaWV2ZSB0aGUgdmlzaWJsZSBjb250
ZW50IHJlY3QuIFN1YnNlcXVlbnQgZ2VzdHVyZXMgd2lsbAorICAgICAgICBoYW5kIHRoZSBuZXcg
bWFnbmlmaWNhdGlvbiBhbmQgb3JpZ2luIHRvIHRoZSBEcmF3aW5nQXJlYSB0byBhcHBseS4KKwor
ICAgICAgICAoV2ViS2l0OjpWaWV3R2VzdHVyZUNvbnRyb2xsZXI6OmRpZEJlZ2luVHJhbnNpZW50
Wm9vbSk6CisgICAgICAgIENhbGxiYWNrIGZyb20gdGhlIFdlYlByb2Nlc3MsIHdpdGggdGhlIGN1
cnJlbnQgdmlzaWJsZSBjb250ZW50IHJlY3QuCisgICAgICAgIFN1YnNlcXVlbnQgbWFnbmlmaWNh
dGlvbiBnZXN0dXJlcyB3aWxsIGZvcndhcmQgdGhlIHNjYWxlIGFuZCBvcmlnaW4gdG8gdGhlIERy
YXdpbmdBcmVhLgorICAgICAgICAKKyAgICAgICAgKFdlYktpdDo6Vmlld0dlc3R1cmVDb250cm9s
bGVyOjplbmRNYWduaWZpY2F0aW9uR2VzdHVyZSk6CisgICAgICAgIENvbW1pdCB0aGUgY3VycmVu
dCB0cmFuc2llbnQgc2NhbGUgYXMgdGhlIGFjdHVhbCBwYWdlIHNjYWxlLCB3aGljaCB3aWxsIGNh
dXNlCisgICAgICAgIGEgcmVwYWludCBhbmQgYnJpbmcgaW4gYWxsIHRoZSB0aWxlcy4KKworICAg
ICAgICAoV2ViS2l0OjpWaWV3R2VzdHVyZUNvbnRyb2xsZXI6OmVuZEFjdGl2ZUdlc3R1cmUpOgor
ICAgICAgICBJZiB3ZSBoYXZlIGFuIGFjdGl2ZSBnZXN0dXJlLCBjYWxsIGl0cyBlbmQgZnVuY3Rp
b24uCisKKyAgICAgICAgKiBVSVByb2Nlc3MvVmlld0dlc3R1cmVDb250cm9sbGVyLmg6IEFkZGVk
LgorICAgICAgICAqIFVJUHJvY2Vzcy9WaWV3R2VzdHVyZUNvbnRyb2xsZXIubWVzc2FnZXMuaW46
IEFkZGVkLgorCisgICAgICAgICogV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgor
ICAgICAgICBBZGQgbmV3IGZpbGVzLgorCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL21h
Yy9UaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYS5oOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
V2ViUGFnZS9tYWMvVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWEubW06CisgICAgICAgIChX
ZWJLaXQ6OlRpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhOjpiZWdpblRyYW5zaWVudFpvb20p
OgorICAgICAgICBDYWxsIGJhY2sgdG8gVmlld0dlc3R1cmVDb250cm9sbGVyIHdpdGggdGhlIHZp
c2libGVDb250ZW50UmVjdC4KKworICAgICAgICAoV2ViS2l0OjpUaWxlZENvcmVBbmltYXRpb25E
cmF3aW5nQXJlYTo6YWRqdXN0VHJhbnNpZW50Wm9vbSk6CisgICAgICAgIFNjYWxlIGFuZCB0cmFu
c2xhdGUgdGhlIFJlbmRlclZpZXcncyBQbGF0Zm9ybUNBTGF5ZXIuCisgICAgICAgIFJlYWNoaW5n
IGludG8gdGhlIGxheWVyIHRyZWUgbGlrZSB0aGlzIGlzIHNjYXJ5LCB3ZSBzaG91bGQgY29uc2lk
ZXIKKyAgICAgICAgdGVhY2hpbmcgUmVuZGVyTGF5ZXJDb21wb3NpdG9yIGFib3V0IHRyYW5zaWVu
dCB6b29tLgorICAgICAgICBIaWRlIHRoZSBjb250ZW50IHNoYWRvdyBsYXllciBmb3Igbm93Lgor
CisgICAgICAgIChXZWJLaXQ6OlRpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhOjplbmRUcmFu
c2llbnRab29tKToKKyAgICAgICAgQ2xlYXIgb3VyIGN1c3RvbSB0cmFuc2Zvcm0gb24gdGhlIFJl
bmRlclZpZXcncyBsYXllciwgYW5kCisgICAgICAgIGNoYW5nZSB0aGUgYWN0dWFsIHBhZ2Ugc2Nh
bGUsIGNhdXNpbmcgYSByZXBhaW50LgorICAgICAgICBVbi1oaWRlIHRoZSBzaGFkb3cgbGF5ZXIu
CisKKyAgICAgICAgKiBVSVByb2Nlc3MvRHJhd2luZ0FyZWFQcm94eS5oOgorICAgICAgICAoV2Vi
S2l0OjpEcmF3aW5nQXJlYVByb3h5OjpiZWdpblRyYW5zaWVudFpvb20pOgorICAgICAgICAoV2Vi
S2l0OjpEcmF3aW5nQXJlYVByb3h5OjphZGp1c3RUcmFuc2llbnRab29tKToKKyAgICAgICAgKFdl
YktpdDo6RHJhd2luZ0FyZWFQcm94eTo6ZW5kVHJhbnNpZW50Wm9vbSk6CisgICAgICAgICogVUlQ
cm9jZXNzL21hYy9UaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYVByb3h5Lmg6CisgICAgICAg
ICogVUlQcm9jZXNzL21hYy9UaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYVByb3h5Lm1tOgor
ICAgICAgICAoV2ViS2l0OjpUaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYVByb3h5OjpiZWdp
blRyYW5zaWVudFpvb20pOgorICAgICAgICAoV2ViS2l0OjpUaWxlZENvcmVBbmltYXRpb25EcmF3
aW5nQXJlYVByb3h5OjphZGp1c3RUcmFuc2llbnRab29tKToKKyAgICAgICAgKFdlYktpdDo6VGls
ZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWFQcm94eTo6ZW5kVHJhbnNpZW50Wm9vbSk6CisgICAg
ICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL0RyYXdpbmdBcmVhLmg6CisgICAgICAgIChXZWJLaXQ6
OkRyYXdpbmdBcmVhOjpiZWdpblRyYW5zaWVudFpvb20pOgorICAgICAgICAoV2ViS2l0OjpEcmF3
aW5nQXJlYTo6YWRqdXN0VHJhbnNpZW50Wm9vbSk6CisgICAgICAgIChXZWJLaXQ6OkRyYXdpbmdB
cmVhOjplbmRUcmFuc2llbnRab29tKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvRHJh
d2luZ0FyZWEubWVzc2FnZXMuaW46CisgICAgICAgIEdlbmVyaWMgcGx1bWJpbmcgZm9yIHtiZWdp
biwgYWRqdXN0LCBlbmR9VHJhbnNpZW50Wm9vbS4KKwogMjAxMy0xMi0wOSAgUnl1YW4gQ2hvaSAg
PHJ5dWFuLmNob2lAc2Ftc3VuZy5jb20+CiAKICAgICAgICAgW0VGTF1bV0syXSBMYXlvdXRUZXN0
cyBhcmUgYnJva2VuIGFmdGVyIHIxNjAzMDEKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0Rl
cml2ZWRTb3VyY2VzLm1ha2UgYi9Tb3VyY2UvV2ViS2l0Mi9EZXJpdmVkU291cmNlcy5tYWtlCmlu
ZGV4IDI4OTJjZjguLmE2NWFkNzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0Rlcml2ZWRT
b3VyY2VzLm1ha2UKKysrIGIvU291cmNlL1dlYktpdDIvRGVyaXZlZFNvdXJjZXMubWFrZQpAQCAt
ODksNiArODksNyBAQCBNRVNTQUdFX1JFQ0VJVkVSUyA9IFwKICAgICBTZWNJdGVtU2hpbVByb3h5
IFwKICAgICBTdG9yYWdlQXJlYU1hcCBcCiAgICAgU3RvcmFnZU1hbmFnZXIgXAorICAgIFZpZXdH
ZXN0dXJlQ29udHJvbGxlciBcCiAgICAgV2ViQXBwbGljYXRpb25DYWNoZU1hbmFnZXIgXAogICAg
IFdlYkFwcGxpY2F0aW9uQ2FjaGVNYW5hZ2VyUHJveHkgXAogICAgIFdlYkNvbm5lY3Rpb24gXApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1ZpZXdQcml2
YXRlLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLVmlld1ByaXZhdGUu
aAppbmRleCA4YzBmZWE5Li5lMGQ2NzIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL0NvY29hL1dLVmlld1ByaXZhdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL0NvY29hL1dLVmlld1ByaXZhdGUuaApAQCAtNzcsNiArNzcsNyBAQCB0eXBlZGVm
IGVudW0gewogQHByb3BlcnR5IChyZWFkd3JpdGUpIEJPT0wgc2hvdWxkQ2xpcFRvVmlzaWJsZVJl
Y3Q7CiBAcHJvcGVydHkgKHJlYWR3cml0ZSkgQk9PTCBzaG91bGRFeHBhbmRUb1ZpZXdIZWlnaHRG
b3JBdXRvTGF5b3V0OwogQHByb3BlcnR5IChyZWFkb25seSwgZ2V0dGVyPWlzVXNpbmdVSVNpZGVD
b21wb3NpdGluZykgQk9PTCB1c2luZ1VJU2lkZUNvbXBvc2l0aW5nOworQHByb3BlcnR5IChyZWFk
d3JpdGUpIEJPT0wgc2hvdWxkSGFuZGxlTWFnbmlmaWNhdGlvbkdlc3R1cmU7CiAKIEBwcm9wZXJ0
eShjb3B5LCBub25hdG9taWMpIE5TQ29sb3IgKnVuZGVybGF5Q29sb3I7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvbWFjL1dLVmlldy5tbSBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvbWFjL1dLVmlldy5tbQppbmRleCA4NWM1ZWE4Li5hMGM5MDRhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL21hYy9XS1ZpZXcubW0KKysr
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9tYWMvV0tWaWV3Lm1tCkBAIC00OSw2ICs0
OSw3IEBACiAjaW1wb3J0ICJUZXh0Q2hlY2tlci5oIgogI2ltcG9ydCAiVGV4dENoZWNrZXJTdGF0
ZS5oIgogI2ltcG9ydCAiVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWFQcm94eS5oIgorI2lt
cG9ydCAiVmlld0dlc3R1cmVDb250cm9sbGVyLmgiCiAjaW1wb3J0ICJXS0FQSUNhc3QuaCIKICNp
bXBvcnQgIldLRnVsbFNjcmVlbldpbmRvd0NvbnRyb2xsZXIuaCIKICNpbXBvcnQgIldLUHJpbnRp
bmdWaWV3LmgiCkBAIC0yMzEsNiArMjMyLDkgQEAgc3RydWN0IFdLVmlld0ludGVycHJldEtleUV2
ZW50c1BhcmFtZXRlcnMgewogICAgIE5TUmVjdCBfY29udGVudFByZXBhcmF0aW9uUmVjdDsKICAg
ICBCT09MIF91c2VDb250ZW50UHJlcGFyYXRpb25SZWN0Rm9yVmlzaWJsZVJlY3Q7CiAgICAgQk9P
TCBfd2luZG93T2NjbHVzaW9uRGV0ZWN0aW9uRW5hYmxlZDsKKworICAgIHN0ZDo6dW5pcXVlX3B0
cjxWaWV3R2VzdHVyZUNvbnRyb2xsZXI+IF9nZXN0dXJlQ29udHJvbGxlcjsKKyAgICBCT09MIF9z
aG91bGRIYW5kbGVNYWduaWZpY2F0aW9uR2VzdHVyZTsKIH0KIAogQGVuZApAQCAtMzIzNCw3ICsz
MjM4LDcgQEAgc3RhdGljIE5TU3RyaW5nICpwYXRoV2l0aFVuaXF1ZUZpbGVuYW1lRm9yUGF0aChO
U1N0cmluZyAqcGF0aCkKIC0gKHZvaWQpd2FpdEZvckFzeW5jRHJhd2luZ0FyZWFTaXplVXBkYXRl
CiB7CiAgICAgaWYgKERyYXdpbmdBcmVhUHJveHkqIGRyYXdpbmdBcmVhID0gX2RhdGEtPl9wYWdl
LT5kcmF3aW5nQXJlYSgpKSB7Ci0gICAgICAgIC8vIElmIGEgZ2VvbWV0cnkgdXBkYXRlIGlzIHN0
aWxsIHBlbmRpbmcgdGhlbiB0aGUgYWN0aW9uIG9mIHJlY2lldmluZyB0aGUKKyAgICAgICAgLy8g
SWYgYSBnZW9tZXRyeSB1cGRhdGUgaXMgc3RpbGwgcGVuZGluZyB0aGVuIHRoZSBhY3Rpb24gb2Yg
cmVjZWl2aW5nIHRoZQogICAgICAgICAvLyBmaXJzdCBnZW9tZXRyeSB1cGRhdGUgbWF5IHJlc3Vs
dCBpbiBhbm90aGVyIHVwZGF0ZSBiZWluZyBzY2hlZHVsZWQgLQogICAgICAgICAvLyB3ZSBzaG91
bGQgd2FpdCBmb3IgdGhpcyB0byBjb21wbGV0ZSB0b28uCiAgICAgICAgIGRyYXdpbmdBcmVhLT53
YWl0Rm9yUG9zc2libGVHZW9tZXRyeVVwZGF0ZShEcmF3aW5nQXJlYVByb3h5OjpkaWRVcGRhdGVC
YWNraW5nU3RvcmVTdGF0ZVRpbWVvdXQgKiAwLjUpOwpAQCAtMzI1MCw2ICszMjU0LDQyIEBAIHN0
YXRpYyBOU1N0cmluZyAqcGF0aFdpdGhVbmlxdWVGaWxlbmFtZUZvclBhdGgoTlNTdHJpbmcgKnBh
dGgpCiAgICAgcmV0dXJuIE5POwogfQogCistICh2b2lkKV9lbnN1cmVHZXN0dXJlQ29udHJvbGxl
cgoreworICAgIGlmIChfZGF0YS0+X2dlc3R1cmVDb250cm9sbGVyKQorICAgICAgICByZXR1cm47
CisKKyAgICBfZGF0YS0+X2dlc3R1cmVDb250cm9sbGVyID0gVmlld0dlc3R1cmVDb250cm9sbGVy
OjpjcmVhdGUoX2RhdGEtPl9wYWdlLmdldCgpKTsKK30KKworLSAodm9pZClzZXRTaG91bGRIYW5k
bGVNYWduaWZpY2F0aW9uR2VzdHVyZTooQk9PTClzaG91bGRIYW5kbGVNYWduaWZpY2F0aW9uR2Vz
dHVyZQoreworICAgIF9kYXRhLT5fc2hvdWxkSGFuZGxlTWFnbmlmaWNhdGlvbkdlc3R1cmUgPSBz
aG91bGRIYW5kbGVNYWduaWZpY2F0aW9uR2VzdHVyZTsKK30KKworLSAoQk9PTClzaG91bGRIYW5k
bGVNYWduaWZpY2F0aW9uR2VzdHVyZQoreworICAgIHJldHVybiBfZGF0YS0+X3Nob3VsZEhhbmRs
ZU1hZ25pZmljYXRpb25HZXN0dXJlOworfQorCistICh2b2lkKW1hZ25pZnlXaXRoRXZlbnQ6KE5T
RXZlbnQgKilldmVudAoreworICAgIGlmICghX2RhdGEtPl9zaG91bGRIYW5kbGVNYWduaWZpY2F0
aW9uR2VzdHVyZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgW3NlbGYgX2Vuc3VyZUdlc3R1cmVD
b250cm9sbGVyXTsKKworICAgIF9kYXRhLT5fZ2VzdHVyZUNvbnRyb2xsZXItPmhhbmRsZU1hZ25p
ZmljYXRpb25HZXN0dXJlKGV2ZW50Lm1hZ25pZmljYXRpb24sIFtzZWxmIGNvbnZlcnRQb2ludDpl
dmVudC5sb2NhdGlvbkluV2luZG93IGZyb21WaWV3Om5pbF0pOworfQorCistKHZvaWQpZW5kR2Vz
dHVyZVdpdGhFdmVudDooTlNFdmVudCAqKWV2ZW50Cit7CisgICAgaWYgKCFfZGF0YS0+X2dlc3R1
cmVDb250cm9sbGVyKQorICAgICAgICByZXR1cm47CisKKyAgICBfZGF0YS0+X2dlc3R1cmVDb250
cm9sbGVyLT5lbmRBY3RpdmVHZXN0dXJlKCk7Cit9CisKIEBlbmQKIAogQGltcGxlbWVudGF0aW9u
IFdLUmVzcG9uZGVyQ2hhaW5TaW5rCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvRHJhd2luZ0FyZWFQcm94eS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0RyYXdpbmdB
cmVhUHJveHkuaAppbmRleCAzMzRkZjM3Li4wNzY1OWNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvRHJhd2luZ0FyZWFQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9EcmF3aW5nQXJlYVByb3h5LmgKQEAgLTcwLDYgKzcwLDEwIEBAIHB1YmxpYzoKICAg
ICB2aXJ0dWFsIHZvaWQgY29sb3JTcGFjZURpZENoYW5nZSgpIHsgfQogICAgIHZpcnR1YWwgdm9p
ZCBtaW5pbXVtTGF5b3V0U2l6ZURpZENoYW5nZSgpIHsgfQogCisgICAgdmlydHVhbCB2b2lkIGJl
Z2luVHJhbnNpZW50Wm9vbSgpIHsgfQorICAgIHZpcnR1YWwgdm9pZCBhZGp1c3RUcmFuc2llbnRa
b29tKGRvdWJsZSBzY2FsZSwgV2ViQ29yZTo6RmxvYXRQb2ludCBvcmlnaW4pIHsgfQorICAgIHZp
cnR1YWwgdm9pZCBlbmRUcmFuc2llbnRab29tKGRvdWJsZSBzY2FsZSwgV2ViQ29yZTo6RmxvYXRQ
b2ludCBvcmlnaW4pIHsgfQorCiBwcm90ZWN0ZWQ6CiAgICAgZXhwbGljaXQgRHJhd2luZ0FyZWFQ
cm94eShEcmF3aW5nQXJlYVR5cGUsIFdlYlBhZ2VQcm94eSopOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvVmlld0dlc3R1cmVDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9WaWV3R2VzdHVyZUNvbnRyb2xsZXIuY3BwCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAuLjMxZGI3ZGUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvVmlld0dlc3R1cmVDb250cm9sbGVyLmNwcApAQCAtMCwwICsxLDE1
MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAq
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNpbXBvcnQgImNvbmZpZy5oIgorI2ltcG9ydCAiVmlld0dlc3R1
cmVDb250cm9sbGVyLmgiCisKKyNpbXBvcnQgIlZpZXdHZXN0dXJlQ29udHJvbGxlck1lc3NhZ2Vz
LmgiCisjaW1wb3J0ICJXZWJQYWdlUHJveHkuaCIKKyNpbXBvcnQgIldlYlByb2Nlc3NQcm94eS5o
IgorCit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKKworc3RhdGljIGNvbnN0IENHRmxvYXQgbWlu
TWFnbmlmaWNhdGlvbiA9IDAuNzU7CitzdGF0aWMgY29uc3QgQ0dGbG9hdCBtYXhNYWduaWZpY2F0
aW9uID0gMzsKKworc3RhdGljIGNvbnN0IENHRmxvYXQgem9vbU91dEJvb3N0ID0gMS42Oworc3Rh
dGljIGNvbnN0IENHRmxvYXQgem9vbU91dFJlc2lzdGFuY2UgPSAwLjEwOworCituYW1lc3BhY2Ug
V2ViS2l0IHsKKworc3RkOjp1bmlxdWVfcHRyPFZpZXdHZXN0dXJlQ29udHJvbGxlcj4gVmlld0dl
c3R1cmVDb250cm9sbGVyOjpjcmVhdGUoV2ViUGFnZVByb3h5KiB3ZWJQYWdlUHJveHkpCit7Cisg
ICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8Vmlld0dlc3R1cmVDb250cm9sbGVyPih3ZWJQYWdl
UHJveHkpOworfQorCitWaWV3R2VzdHVyZUNvbnRyb2xsZXI6OlZpZXdHZXN0dXJlQ29udHJvbGxl
cihXZWJQYWdlUHJveHkqIHdlYlBhZ2VQcm94eSkKKyAgICA6IG1fYWN0aXZlR2VzdHVyZVR5cGUo
Vmlld0dlc3R1cmVUeXBlOjpOb25lKQorICAgICwgbV92aXNpYmxlQ29udGVudFJlY3RJc1ZhbGlk
KGZhbHNlKQorICAgICwgbV93ZWJQYWdlUHJveHkod2ViUGFnZVByb3h5KQoreworICAgIG1fd2Vi
UGFnZVByb3h5LT5wcm9jZXNzKCkuYWRkTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpWaWV3R2Vz
dHVyZUNvbnRyb2xsZXI6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgbV93ZWJQYWdlUHJveHktPnBh
Z2VJRCgpLCB0aGlzKTsKK30KKworVmlld0dlc3R1cmVDb250cm9sbGVyOjp+Vmlld0dlc3R1cmVD
b250cm9sbGVyKCkKK3sKKyAgICBtX3dlYlBhZ2VQcm94eS0+cHJvY2VzcygpLnJlbW92ZU1lc3Nh
Z2VSZWNlaXZlcihNZXNzYWdlczo6Vmlld0dlc3R1cmVDb250cm9sbGVyOjptZXNzYWdlUmVjZWl2
ZXJOYW1lKCksIG1fd2ViUGFnZVByb3h5LT5wYWdlSUQoKSk7Cit9CisKK3N0YXRpYyBkb3VibGUg
cmVzaXN0YW5jZUZvckRlbHRhKGRvdWJsZSBkZWx0YVNjYWxlLCBkb3VibGUgY3VycmVudFNjYWxl
KQoreworICAgIC8vIFpvb20gaW4gd2l0aCBubyBhY2NlbGVyYXRpb24uCisgICAgLy8gRklYTUU6
IFNob3VsZCBoYXZlIHJlc2lzdGFuY2Ugd2hlbiB6b29taW5nIGluIHBhc3QgdGhlIGxpbWl0Lgor
ICAgIGlmIChkZWx0YVNjYWxlID4gMCkKKyAgICAgICAgcmV0dXJuIDE7CisKKyAgICAvLyBab29t
IG91dCB3aXRoIHNsaWdodCBhY2NlbGVyYXRpb24sIHVudGlsIHdlIHJlYWNoIHVuaXQgc2NhbGUu
CisgICAgaWYgKGN1cnJlbnRTY2FsZSA+IDEpCisgICAgICAgIHJldHVybiB6b29tT3V0Qm9vc3Q7
CisKKyAgICAvLyBCZXlvbmQgc2NhbGU9MSwgcmVzaXN0IHpvb21pbmcgb3V0LgorICAgIGRvdWJs
ZSBzY2FsZURpc3RhbmNlID0gbWluTWFnbmlmaWNhdGlvbiAtIGN1cnJlbnRTY2FsZTsKKyAgICBk
b3VibGUgc2NhbGVQZXJjZW50ID0gc3RkOjptaW4oc3RkOjptYXgoc2NhbGVEaXN0YW5jZSAvIG1p
bk1hZ25pZmljYXRpb24sIDAuKSwgMS4pOworICAgIGRvdWJsZSByZXNpc3RhbmNlID0gem9vbU91
dFJlc2lzdGFuY2UgKyBzY2FsZVBlcmNlbnQgKiAoMC4wMSAtIHpvb21PdXRSZXNpc3RhbmNlKTsK
KworICAgIHJldHVybiByZXNpc3RhbmNlOworfQorCitGbG9hdFBvaW50IFZpZXdHZXN0dXJlQ29u
dHJvbGxlcjo6c2NhbGVkTWFnbmlmaWNhdGlvbk9yaWdpbihGbG9hdFBvaW50IG9yaWdpbiwgZG91
YmxlIHNjYWxlKQoreworICAgIEZsb2F0UG9pbnQgc2NhbGVkTWFnbmlmaWNhdGlvbk9yaWdpbihv
cmlnaW4pOworICAgIHNjYWxlZE1hZ25pZmljYXRpb25PcmlnaW4ubW92ZUJ5KG1fdmlzaWJsZUNv
bnRlbnRSZWN0LmxvY2F0aW9uKCkpOworICAgIGZsb2F0IG1hZ25pZmljYXRpb25PcmlnaW5TY2Fs
ZSA9IDEgLSAoc2NhbGUgLyBtX3dlYlBhZ2VQcm94eS0+cGFnZVNjYWxlRmFjdG9yKCkpOworICAg
IHNjYWxlZE1hZ25pZmljYXRpb25PcmlnaW4uc2NhbGUobWFnbmlmaWNhdGlvbk9yaWdpblNjYWxl
LCBtYWduaWZpY2F0aW9uT3JpZ2luU2NhbGUpOworICAgIHJldHVybiBzY2FsZWRNYWduaWZpY2F0
aW9uT3JpZ2luOworfQorCit2b2lkIFZpZXdHZXN0dXJlQ29udHJvbGxlcjo6ZGlkQmVnaW5UcmFu
c2llbnRab29tKEZsb2F0UmVjdCB2aXNpYmxlQ29udGVudFJlY3QpCit7CisgICAgbV9hY3RpdmVH
ZXN0dXJlVHlwZSA9IFZpZXdHZXN0dXJlVHlwZTo6TWFnbmlmaWNhdGlvbjsKKyAgICBtX3Zpc2li
bGVDb250ZW50UmVjdCA9IHZpc2libGVDb250ZW50UmVjdDsKKyAgICBtX3Zpc2libGVDb250ZW50
UmVjdElzVmFsaWQgPSB0cnVlOworfQorCit2b2lkIFZpZXdHZXN0dXJlQ29udHJvbGxlcjo6aGFu
ZGxlTWFnbmlmaWNhdGlvbkdlc3R1cmUoZG91YmxlIHNjYWxlLCBGbG9hdFBvaW50IG9yaWdpbikK
K3sKKyAgICBBU1NFUlQobV9hY3RpdmVHZXN0dXJlVHlwZSA9PSBWaWV3R2VzdHVyZVR5cGU6Ok5v
bmUKKyAgICAgICAgICAgfHwgbV9hY3RpdmVHZXN0dXJlVHlwZSA9PSBWaWV3R2VzdHVyZVR5cGU6
Ok1hZ25pZmljYXRpb24pOworCisgICAgaWYgKG1fYWN0aXZlR2VzdHVyZVR5cGUgPT0gVmlld0dl
c3R1cmVUeXBlOjpOb25lKSB7CisgICAgICAgIC8vIEZJWE1FOiBXZSBkcm9wIHRoZSBmaXJzdCBm
cmFtZSBvZiB0aGUgZ2VzdHVyZSBvbiB0aGUgZmxvb3IsIGJlY2F1c2Ugd2UgZG9uJ3QgaGF2ZSB0
aGUgdmlzaWJsZSBjb250ZW50IGJvdW5kcyB5ZXQuCisgICAgICAgIG1fbWFnbmlmaWNhdGlvbiA9
IG1fd2ViUGFnZVByb3h5LT5wYWdlU2NhbGVGYWN0b3IoKTsKKyAgICAgICAgbV93ZWJQYWdlUHJv
eHktPmRyYXdpbmdBcmVhKCktPmJlZ2luVHJhbnNpZW50Wm9vbSgpOworICAgICAgICByZXR1cm47
CisgICAgfQorCisgICAgLy8gV2UncmUgc3RpbGwgd2FpdGluZyBmb3IgdGhlIERpZEJlZ2luVHJh
bnNpZW50Wm9vbSBjYWxsYmFjay4KKyAgICBpZiAoIW1fdmlzaWJsZUNvbnRlbnRSZWN0SXNWYWxp
ZCkKKyAgICAgICAgcmV0dXJuOworCisgICAgZG91YmxlIHNjYWxlV2l0aFJlc2lzdGFuY2UgPSBy
ZXNpc3RhbmNlRm9yRGVsdGEoc2NhbGUsIG1fbWFnbmlmaWNhdGlvbikgKiBzY2FsZTsKKworICAg
IG1fbWFnbmlmaWNhdGlvbiArPSBtX21hZ25pZmljYXRpb24gKiBzY2FsZVdpdGhSZXNpc3RhbmNl
OworICAgIG1fbWFnbmlmaWNhdGlvbiA9IHN0ZDo6bWluKHN0ZDo6bWF4KG1fbWFnbmlmaWNhdGlv
biwgbWluTWFnbmlmaWNhdGlvbiksIG1heE1hZ25pZmljYXRpb24pOworCisgICAgbV9tYWduaWZp
Y2F0aW9uT3JpZ2luID0gb3JpZ2luOworCisgICAgbV93ZWJQYWdlUHJveHktPmRyYXdpbmdBcmVh
KCktPmFkanVzdFRyYW5zaWVudFpvb20obV9tYWduaWZpY2F0aW9uLCBzY2FsZWRNYWduaWZpY2F0
aW9uT3JpZ2luKG9yaWdpbiwgbV9tYWduaWZpY2F0aW9uKSk7CisKKyAgICBtX2FjdGl2ZUdlc3R1
cmVUeXBlID0gVmlld0dlc3R1cmVUeXBlOjpNYWduaWZpY2F0aW9uOworfQorCit2b2lkIFZpZXdH
ZXN0dXJlQ29udHJvbGxlcjo6ZW5kTWFnbmlmaWNhdGlvbkdlc3R1cmUoKQoreworICAgIEFTU0VS
VChtX2FjdGl2ZUdlc3R1cmVUeXBlID09IFZpZXdHZXN0dXJlVHlwZTo6TWFnbmlmaWNhdGlvbik7
CisKKyAgICAvLyBGSVhNRTogU2hvdWxkIHJ1YmJlci1iYW5kIGJhY2sgd2hlbiB6b29tZWQgaW4g
b3Igb3V0IHBhc3QgdGhlIGxpbWl0LgorICAgIGRvdWJsZSBuZXdNYWduaWZpY2F0aW9uID0gTUFY
KG1fbWFnbmlmaWNhdGlvbiwgMSk7CisKKyAgICBGbG9hdFBvaW50IHNjYWxlZE9yaWdpbiA9IHNj
YWxlZE1hZ25pZmljYXRpb25PcmlnaW4obV9tYWduaWZpY2F0aW9uT3JpZ2luLCBuZXdNYWduaWZp
Y2F0aW9uKTsKKyAgICBzY2FsZWRPcmlnaW4ubW92ZUJ5KC1tX3Zpc2libGVDb250ZW50UmVjdC5s
b2NhdGlvbigpKTsKKworICAgIG1fd2ViUGFnZVByb3h5LT5kcmF3aW5nQXJlYSgpLT5lbmRUcmFu
c2llbnRab29tKG5ld01hZ25pZmljYXRpb24sIC1zY2FsZWRPcmlnaW4pOworfQorCit2b2lkIFZp
ZXdHZXN0dXJlQ29udHJvbGxlcjo6ZW5kQWN0aXZlR2VzdHVyZSgpCit7CisgICAgc3dpdGNoICht
X2FjdGl2ZUdlc3R1cmVUeXBlKSB7CisgICAgY2FzZSBWaWV3R2VzdHVyZVR5cGU6Ok5vbmU6Cisg
ICAgICAgIGJyZWFrOworICAgIGNhc2UgVmlld0dlc3R1cmVUeXBlOjpNYWduaWZpY2F0aW9uOgor
ICAgICAgICBlbmRNYWduaWZpY2F0aW9uR2VzdHVyZSgpOworICAgIH0KKworICAgIG1fdmlzaWJs
ZUNvbnRlbnRSZWN0SXNWYWxpZCA9IGZhbHNlOworICAgIG1fYWN0aXZlR2VzdHVyZVR5cGUgPSBW
aWV3R2VzdHVyZVR5cGU6Ok5vbmU7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1ZpZXdHZXN0dXJlQ29udHJvbGxlci5oIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1ZpZXdHZXN0dXJlQ29udHJvbGxlci5oCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNjY2MwMmMKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvVmlld0dlc3R1cmVDb250cm9sbGVyLmgKQEAgLTAsMCAr
MSw3NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
KyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisg
KiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgVmlld0dlc3R1cmVDb250cm9sbGVyX2gKKyNk
ZWZpbmUgVmlld0dlc3R1cmVDb250cm9sbGVyX2gKKworI2luY2x1ZGUgIk1lc3NhZ2VSZWNlaXZl
ci5oIgorI2luY2x1ZGUgPFdlYkNvcmUvRmxvYXRSZWN0Lmg+CisKK25hbWVzcGFjZSBXZWJLaXQg
eworCitjbGFzcyBXZWJQYWdlUHJveHk7CisKK2NsYXNzIFZpZXdHZXN0dXJlQ29udHJvbGxlciA6
IHByaXZhdGUgQ29yZUlQQzo6TWVzc2FnZVJlY2VpdmVyIHsKKyAgICBXVEZfTUFLRV9OT05DT1BZ
QUJMRShWaWV3R2VzdHVyZUNvbnRyb2xsZXIpOworcHVibGljOgorICAgIHN0YXRpYyBzdGQ6OnVu
aXF1ZV9wdHI8Vmlld0dlc3R1cmVDb250cm9sbGVyPiBjcmVhdGUoV2ViUGFnZVByb3h5Kik7CisK
KyAgICBWaWV3R2VzdHVyZUNvbnRyb2xsZXIoV2ViUGFnZVByb3h5Kik7CisgICAgflZpZXdHZXN0
dXJlQ29udHJvbGxlcigpOworCisgICAgdm9pZCBoYW5kbGVNYWduaWZpY2F0aW9uR2VzdHVyZShk
b3VibGUgc2NhbGUsIFdlYkNvcmU6OkZsb2F0UG9pbnQgb3JpZ2luKTsKKworICAgIHZvaWQgZW5k
QWN0aXZlR2VzdHVyZSgpOworCisgICAgZW51bSBjbGFzcyBWaWV3R2VzdHVyZVR5cGUgeworICAg
ICAgICBOb25lLAorICAgICAgICBNYWduaWZpY2F0aW9uLAorICAgIH07CisKK3ByaXZhdGU6Cisg
ICAgLy8gQ29yZUlQQzo6TWVzc2FnZVJlY2VpdmVyLgorICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNl
aXZlTWVzc2FnZShDb3JlSVBDOjpDb25uZWN0aW9uKiwgQ29yZUlQQzo6TWVzc2FnZURlY29kZXIm
KSBPVkVSUklERTsKKworICAgIC8vIE1lc3NhZ2UgaGFuZGxlcnMuCisgICAgdm9pZCBkaWRCZWdp
blRyYW5zaWVudFpvb20oV2ViQ29yZTo6RmxvYXRSZWN0IHZpc2libGVDb250ZW50Qm91bmRzKTsK
KworICAgIHZvaWQgZW5kTWFnbmlmaWNhdGlvbkdlc3R1cmUoKTsKKyAgICBXZWJDb3JlOjpGbG9h
dFBvaW50IHNjYWxlZE1hZ25pZmljYXRpb25PcmlnaW4oV2ViQ29yZTo6RmxvYXRQb2ludCBvcmln
aW4sIGRvdWJsZSBzY2FsZSk7CisKKyAgICBWaWV3R2VzdHVyZVR5cGUgbV9hY3RpdmVHZXN0dXJl
VHlwZTsKKworICAgIGRvdWJsZSBtX21hZ25pZmljYXRpb247CisgICAgV2ViQ29yZTo6RmxvYXRQ
b2ludCBtX21hZ25pZmljYXRpb25PcmlnaW47CisgICAgV2ViQ29yZTo6RmxvYXRSZWN0IG1fdmlz
aWJsZUNvbnRlbnRSZWN0OworICAgIGJvb2wgbV92aXNpYmxlQ29udGVudFJlY3RJc1ZhbGlkOwor
CisgICAgV2ViUGFnZVByb3h5KiBtX3dlYlBhZ2VQcm94eTsKK307CisKK30gLy8gbmFtZXNwYWNl
IFdlYktpdAorCisjZW5kaWYgLy8gVmlld0dlc3R1cmVDb250cm9sbGVyX2gKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9WaWV3R2VzdHVyZUNvbnRyb2xsZXIubWVzc2FnZXMu
aW4gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvVmlld0dlc3R1cmVDb250cm9sbGVyLm1lc3Nh
Z2VzLmluCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmMzYzk3ZjUKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvVmlld0dlc3R1cmVDb250cm9s
bGVyLm1lc3NhZ2VzLmluCkBAIC0wLDAgKzEsMjUgQEAKKyMgQ29weXJpZ2h0IChDKSAyMDEzIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworIyBhcmUgbWV0OgorIyAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgMi4gIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisj
ICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisjICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorIworIyBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFO
RAorIyBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorIyBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisjIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SCisjIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwKKyMgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IKKyMgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIKKyMgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwKKyMgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
KyMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKworbWVzc2FnZXMgLT4gVmlld0dlc3R1cmVDb250cm9sbGVyIHsKKyAg
ICBEaWRCZWdpblRyYW5zaWVudFpvb20oV2ViQ29yZTo6RmxvYXRSZWN0IHZpc2libGVDb250ZW50
Qm91bmRzKQorfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9UaWxl
ZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvbWFjL1RpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhUHJveHkuaAppbmRleCBjYjgzNTVm
Li5mMWRkMzM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1RpbGVk
Q29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvbWFjL1RpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhUHJveHkuaApAQCAtNTAsNiAr
NTAsMTAgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgZXhpdEFjY2VsZXJhdGVkQ29tcG9z
aXRpbmdNb2RlKHVpbnQ2NF90IGJhY2tpbmdTdG9yZVN0YXRlSUQsIGNvbnN0IFVwZGF0ZUluZm8m
KSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlQWNjZWxlcmF0ZWRDb21wb3NpdGlu
Z01vZGUodWludDY0X3QgYmFja2luZ1N0b3JlU3RhdGVJRCwgY29uc3QgTGF5ZXJUcmVlQ29udGV4
dCYpIE9WRVJSSURFOwogCisgICAgdmlydHVhbCB2b2lkIGJlZ2luVHJhbnNpZW50Wm9vbSgpIE9W
RVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBhZGp1c3RUcmFuc2llbnRab29tKGRvdWJsZSBzY2Fs
ZSwgV2ViQ29yZTo6RmxvYXRQb2ludCBvcmlnaW4pIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9p
ZCBlbmRUcmFuc2llbnRab29tKGRvdWJsZSBzY2FsZSwgV2ViQ29yZTo6RmxvYXRQb2ludCBvcmln
aW4pIE9WRVJSSURFOworCiAgICAgLy8gTWVzc2FnZSBoYW5kbGVycy4KICAgICB2aXJ0dWFsIHZv
aWQgZGlkVXBkYXRlR2VvbWV0cnkoKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgaW50cmlu
c2ljQ29udGVudFNpemVEaWRDaGFuZ2UoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgbmV3SW50cmlu
c2ljQ29udGVudFNpemUpIE9WRVJSSURFOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL21hYy9UaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYVByb3h5Lm1tIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL21hYy9UaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYVByb3h5
Lm1tCmluZGV4IDExMmYwYWEuLjUzNGI1ODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9tYWMvVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWFQcm94eS5tbQorKysgYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1RpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVh
UHJveHkubW0KQEAgLTE0OCw2ICsxNDgsMjEgQEAgdm9pZCBUaWxlZENvcmVBbmltYXRpb25EcmF3
aW5nQXJlYVByb3h5OjpzZW5kVXBkYXRlR2VvbWV0cnkoKQogICAgIG1faXNXYWl0aW5nRm9yRGlk
VXBkYXRlR2VvbWV0cnkgPSB0cnVlOwogfQogCit2b2lkIFRpbGVkQ29yZUFuaW1hdGlvbkRyYXdp
bmdBcmVhUHJveHk6OmJlZ2luVHJhbnNpZW50Wm9vbSgpCit7CisgICAgbV93ZWJQYWdlUHJveHkt
PnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpEcmF3aW5nQXJlYTo6QmVnaW5UcmFuc2llbnRab29t
KCksIG1fd2ViUGFnZVByb3h5LT5wYWdlSUQoKSk7Cit9CisKK3ZvaWQgVGlsZWRDb3JlQW5pbWF0
aW9uRHJhd2luZ0FyZWFQcm94eTo6YWRqdXN0VHJhbnNpZW50Wm9vbShkb3VibGUgc2NhbGUsIEZs
b2F0UG9pbnQgb3JpZ2luKQoreworICAgIG1fd2ViUGFnZVByb3h5LT5wcm9jZXNzKCkuc2VuZChN
ZXNzYWdlczo6RHJhd2luZ0FyZWE6OkFkanVzdFRyYW5zaWVudFpvb20oc2NhbGUsIG9yaWdpbiks
IG1fd2ViUGFnZVByb3h5LT5wYWdlSUQoKSk7Cit9CisKK3ZvaWQgVGlsZWRDb3JlQW5pbWF0aW9u
RHJhd2luZ0FyZWFQcm94eTo6ZW5kVHJhbnNpZW50Wm9vbShkb3VibGUgc2NhbGUsIEZsb2F0UG9p
bnQgb3JpZ2luKQoreworICAgIG1fd2ViUGFnZVByb3h5LT5wcm9jZXNzKCkuc2VuZChNZXNzYWdl
czo6RHJhd2luZ0FyZWE6OkVuZFRyYW5zaWVudFpvb20oc2NhbGUsIG9yaWdpbiksIG1fd2ViUGFn
ZVByb3h5LT5wYWdlSUQoKSk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAogCiAjZW5kaWYg
Ly8gIVBMQVRGT1JNKElPUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYktpdDIueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJLaXQyL1dlYktpdDIueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagppbmRleCBjOWUwMTc0ZS4uNTM4YjU0ZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMzQ1LDYgKzM0
NSwxMCBAQAogCQkyOUNENTVBQjEyOEUyOTRGMDAxMzNDODUgLyogV0tBY2Nlc3NpYmlsaXR5V2Vi
UGFnZU9iamVjdC5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDI5Q0Q1NUE5MTI4RTI5NEYwMDEzM0M4NSAvKiBXS0FjY2Vzc2liaWxpdHlXZWJQYWdlT2Jq
ZWN0Lm1tICovOyB9OwogCQkyOUQ1NURGMTE2MUJGOUYxMDAzMUEyRTMgLyogV2ViUGFnZUdyb3Vw
UHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMjlENTVERUYxNjFCRjlGMTAwMzFBMkUzIC8qIFdlYlBhZ2VHcm91cFBy
b3h5TWVzc2FnZVJlY2VpdmVyLmNwcCAqLzsgfTsKIAkJMjlENTVERjIxNjFCRjlGMTAwMzFBMkUz
IC8qIFdlYlBhZ2VHcm91cFByb3h5TWVzc2FnZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDI5RDU1REYwMTYxQkY5RjEwMDMxQTJFMyAvKiBXZWJQYWdl
R3JvdXBQcm94eU1lc3NhZ2VzLmggKi87IH07CisJCTJEMTI1QzVFMTg1N0VBMDUwMDNCQTNDQiAv
KiBWaWV3R2VzdHVyZUNvbnRyb2xsZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDJEMTI1QzVDMTg1N0VBMDUwMDNCQTNDQiAvKiBWaWV3R2VzdHVyZUNv
bnRyb2xsZXIuaCAqLzsgfTsKKwkJMkQxMjVDNUYxODU3RUEwNTAwM0JBM0NCIC8qIFZpZXdHZXN0
dXJlQ29udHJvbGxlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAyRDEyNUM1RDE4NTdFQTA1MDAzQkEzQ0IgLyogVmlld0dlc3R1cmVDb250cm9sbGVy
LmNwcCAqLzsgfTsKKwkJMkQxQjVENUQxODU4NjlDODAwNkM2NTk2IC8qIFZpZXdHZXN0dXJlQ29u
dHJvbGxlck1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAyRDFCNUQ1QjE4NTg2OUM4MDA2QzY1OTYgLyogVmlld0dlc3R1cmVD
b250cm9sbGVyTWVzc2FnZVJlY2VpdmVyLmNwcCAqLzsgfTsKKwkJMkQxQjVENUUxODU4NjlDODAw
NkM2NTk2IC8qIFZpZXdHZXN0dXJlQ29udHJvbGxlck1lc3NhZ2VzLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyRDFCNUQ1QzE4NTg2OUM4MDA2QzY1OTYg
LyogVmlld0dlc3R1cmVDb250cm9sbGVyTWVzc2FnZXMuaCAqLzsgfTsKIAkJMkQyQURGMDkxNjM2
MkRENTAwMTk3RTQ3IC8qIFBERlBsdWdpblRleHRBbm5vdGF0aW9uLm1tIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkQyQURGMDYxNjM2MkRDNzAwMTk3RTQ3
IC8qIFBERlBsdWdpblRleHRBbm5vdGF0aW9uLm1tICovOyB9OwogCQkyRDJBREYwQjE2MzYyRERC
MDAxOTdFNDcgLyogUERGUGx1Z2luQW5ub3RhdGlvbi5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJEMkFERjAzMTYzNjI0MzUwMDE5N0U0NyAvKiBQREZQ
bHVnaW5Bbm5vdGF0aW9uLm1tICovOyB9OwogCQkyRDJBREYxMDE2MzY0RDgyMDAxOTdFNDcgLyog
UERGUGx1Z2luQ2hvaWNlQW5ub3RhdGlvbi5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDJEMkFERjBFMTYzNjREODIwMDE5N0U0NyAvKiBQREZQbHVnaW5D
aG9pY2VBbm5vdGF0aW9uLm1tICovOyB9OwpAQCAtMTg3OCw2ICsxODgyLDExIEBACiAJCTI5RDU1
REVFMTYxQkY4NzgwMDMxQTJFMyAvKiBXZWJQYWdlR3JvdXBQcm94eS5tZXNzYWdlcy5pbiAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGgg
PSBXZWJQYWdlR3JvdXBQcm94eS5tZXNzYWdlcy5pbjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJMjlENTVERUYxNjFCRjlGMTAwMzFBMkUzIC8qIFdlYlBhZ2VHcm91cFByb3h5TWVzc2Fn
ZVJlY2VpdmVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYlBh
Z2VHcm91cFByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJMjlENTVERjAxNjFCRjlGMTAwMzFBMkUzIC8qIFdlYlBhZ2VHcm91cFByb3h5TWVzc2Fn
ZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViUGFnZUdyb3VwUHJveHlN
ZXNzYWdlcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkyRDEyNUM1QzE4NTdFQTA1
MDAzQkEzQ0IgLyogVmlld0dlc3R1cmVDb250cm9sbGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFZpZXdHZXN0dXJlQ29udHJvbGxlci5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQkyRDEyNUM1RDE4NTdFQTA1MDAzQkEzQ0IgLyogVmlld0dlc3R1cmVDb250cm9s
bGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFZpZXdHZXN0dXJl
Q29udHJvbGxlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTJEMUI1RDVBMTg1
ODY1OTkwMDZDNjU5NiAvKiBWaWV3R2VzdHVyZUNvbnRyb2xsZXIubWVzc2FnZXMuaW4gKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0g
Vmlld0dlc3R1cmVDb250cm9sbGVyLm1lc3NhZ2VzLmluOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQkyRDFCNUQ1QjE4NTg2OUM4MDA2QzY1OTYgLyogVmlld0dlc3R1cmVDb250cm9sbGVy
TWVzc2FnZVJlY2VpdmVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IFZpZXdHZXN0dXJlQ29udHJvbGxlck1lc3NhZ2VSZWNlaXZlci5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTJEMUI1RDVDMTg1ODY5QzgwMDZDNjU5NiAvKiBWaWV3R2VzdHVyZUNv
bnRyb2xsZXJNZXNzYWdlcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBWaWV3
R2VzdHVyZUNvbnRyb2xsZXJNZXNzYWdlcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQkyRDJBREYwMjE2MzYyNDM1MDAxOTdFNDcgLyogUERGUGx1Z2luQW5ub3RhdGlvbi5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBQREZQbHVnaW5Bbm5vdGF0aW9uLmg7IHBhdGgg
PSBQREYvUERGUGx1Z2luQW5ub3RhdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQkyRDJBREYwMzE2MzYyNDM1MDAxOTdFNDcgLyogUERGUGx1Z2luQW5ub3RhdGlvbi5tbSAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgbmFtZSA9IFBERlBsdWdpbkFubm90YXRpb24u
bW07IHBhdGggPSBQREYvUERGUGx1Z2luQW5ub3RhdGlvbi5tbTsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJMkQyQURGMDUxNjM2MkRDNzAwMTk3RTQ3IC8qIFBERlBsdWdpblRleHRBbm5v
dGF0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFBERlBsdWdpblRleHRB
bm5vdGF0aW9uLmg7IHBhdGggPSBQREYvUERGUGx1Z2luVGV4dEFubm90YXRpb24uaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTQ0NDQsNiArNDQ1Myw5IEBACiAJCQkJMUFBNDE3Qzkx
MkMwMENDQTAwMkJFNjdCIC8qIFRleHRDaGVja2VyLmggKi8sCiAJCQkJMUJCNDE3QzkxMkMwMEND
QTAwMkJFNjdCIC8qIFRleHRDaGVja2VyQ29tcGxldGlvbi5jcHAgKi8sCiAJCQkJMUNDNDE3Qzkx
MkMwMENDQTAwMkJFNjdCIC8qIFRleHRDaGVja2VyQ29tcGxldGlvbi5oICovLAorCQkJCTJEMTI1
QzVDMTg1N0VBMDUwMDNCQTNDQiAvKiBWaWV3R2VzdHVyZUNvbnRyb2xsZXIuaCAqLywKKwkJCQky
RDEyNUM1RDE4NTdFQTA1MDAzQkEzQ0IgLyogVmlld0dlc3R1cmVDb250cm9sbGVyLmNwcCAqLywK
KwkJCQkyRDFCNUQ1QTE4NTg2NTk5MDA2QzY1OTYgLyogVmlld0dlc3R1cmVDb250cm9sbGVyLm1l
c3NhZ2VzLmluICovLAogCQkJCTFBMEYyOUUxMTIwQjQ0NDIwMDUzRDFCOSAvKiBWaXNpdGVkTGlu
a1Byb3ZpZGVyLmNwcCAqLywKIAkJCQkxQTBGMjlFMjEyMEI0NDQyMDA1M0QxQjkgLyogVmlzaXRl
ZExpbmtQcm92aWRlci5oICovLAogCQkJCTUxMkUzNTIwMTMwQjU1MDEwMEFCRDE5QSAvKiBXZWJB
cHBsaWNhdGlvbkNhY2hlTWFuYWdlclByb3h5LmNwcCAqLywKQEAgLTU0MTQsNiArNTQyNiw4IEBA
CiAJCQkJMUEzMzRERUMxNkRFOEY4ODAwNkE4RTM4IC8qIFN0b3JhZ2VBcmVhTWFwTWVzc2FnZXMu
aCAqLywKIAkJCQkxQUIzMUE5NDE2QkM2ODgxMDBGNkRCQzkgLyogU3RvcmFnZU1hbmFnZXJNZXNz
YWdlUmVjZWl2ZXIuY3BwICovLAogCQkJCTFBQjMxQTk1MTZCQzY4ODEwMEY2REJDOSAvKiBTdG9y
YWdlTWFuYWdlck1lc3NhZ2VzLmggKi8sCisJCQkJMkQxQjVENUIxODU4NjlDODAwNkM2NTk2IC8q
IFZpZXdHZXN0dXJlQ29udHJvbGxlck1lc3NhZ2VSZWNlaXZlci5jcHAgKi8sCisJCQkJMkQxQjVE
NUMxODU4NjlDODAwNkM2NTk2IC8qIFZpZXdHZXN0dXJlQ29udHJvbGxlck1lc3NhZ2VzLmggKi8s
CiAJCQkJNTEyRTM1NjgxMzBCNTdGMDAwQUJEMTlBIC8qIFdlYkFwcGxpY2F0aW9uQ2FjaGVNYW5h
Z2VyTWVzc2FnZVJlY2VpdmVyLmNwcCAqLywKIAkJCQk1MTJFMzU2OTEzMEI1N0YwMDBBQkQxOUEg
LyogV2ViQXBwbGljYXRpb25DYWNoZU1hbmFnZXJNZXNzYWdlcy5oICovLAogCQkJCTUxMkUzNUY2
MTMwQjY0MkUwMEFCRDE5QSAvKiBXZWJBcHBsaWNhdGlvbkNhY2hlTWFuYWdlclByb3h5TWVzc2Fn
ZVJlY2VpdmVyLmNwcCAqLywKQEAgLTU3MDYsNiArNTcyMCw3IEBACiAJCQkJMUEyNEI1RjMxMUY1
MzFFODAwQzM4MjY5IC8qIE1hY2hVdGlsaXRpZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBMjMy
OTAzMTYyQzg2NzMwMEQ4MkY3QSAvKiBNZXNzYWdlRGVjb2Rlci5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJNTFGQ0IxODYxN0JCRkUwMzAwMzk0Q0Q4IC8qIEFzeW5jaHJvbm91c05ldHdvcmtMb2FkZXJD
bGllbnQuaCBpbiBIZWFkZXJzICovLAorCQkJCTJEMUI1RDVFMTg1ODY5QzgwMDZDNjU5NiAvKiBW
aWV3R2VzdHVyZUNvbnRyb2xsZXJNZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUEyMzI4
RkYxNjJDODY2QTAwRDgyRjdBIC8qIE1lc3NhZ2VFbmNvZGVyLmggaW4gSGVhZGVycyAqLywKIAkJ
CQkxQUM0QzgyOTE2Qjg3NkE5MDA2OURDQ0QgLyogTWVzc2FnZUZsYWdzLmggaW4gSGVhZGVycyAq
LywKIAkJCQkxQUUwMEQ2QzE4MzI3QzEyMDAwODdERDcgLyogU3RyaW5nUmVmZXJlbmNlLmggaW4g
SGVhZGVycyAqLywKQEAgLTU5NTAsNiArNTk2NSw3IEBACiAJCQkJQkM5QkE1MDUxNjk3QzQ1MzAw
RTQ0NjE2IC8qIFdlYktpdDJJbml0aWFsaXplLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzU5NTM0
MjEwRkMwNDUyMDA5OEY4MkQgLyogV2ViTG9hZGVyQ2xpZW50LmggaW4gSGVhZGVycyAqLywKIAkJ
CQkzM0QzQTNDMjEzMzk2MEIwMDA3MDlCRTQgLyogV2ViTWVkaWFDYWNoZU1hbmFnZXIuaCBpbiBI
ZWFkZXJzICovLAorCQkJCTJEMTI1QzVFMTg1N0VBMDUwMDNCQTNDQiAvKiBWaWV3R2VzdHVyZUNv
bnRyb2xsZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTMzRDNBM0M5MTMzOTYxNzkwMDcwOUJFNCAv
KiBXZWJNZWRpYUNhY2hlTWFuYWdlck1lc3NhZ2VzLmggaW4gSGVhZGVycyAqLywKIAkJCQkzN0M0
QzA4RDE4MTRBQzVDMDAzNjg4QjkgLyogV0tCYWNrRm9yd2FyZExpc3QuaCBpbiBIZWFkZXJzICov
LAogCQkJCTM3MUExOTQyMTgyNEQyOTMwMEYzMkE1RSAvKiBXS05TRGljdGlvbmFyeS5oIGluIEhl
YWRlcnMgKi8sCkBAIC03MjA3LDYgKzcyMjMsNyBAQAogCQkJCUJDRDM2NzVDMTQ4QzI2QzAwMDQ0
N0U4NyAvKiBXZWJDb25uZWN0aW9uVG9VSVByb2Nlc3MuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
QkM0QTYyQTcxNDc0NEVDNzAwNkM2ODFBIC8qIFdlYkNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJQkM4MjgzNjUxNkIzNTRGNjAwQTI3OEZFIC8qIFdlYkNvbnRl
bnRQcm9jZXNzTWFpbi5tbSBpbiBTb3VyY2VzICovLAorCQkJCTJEMTI1QzVGMTg1N0VBMDUwMDNC
QTNDQiAvKiBWaWV3R2VzdHVyZUNvbnRyb2xsZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQkM4
MjgzOTkxNkI0OERDMDAwQTI3OEZFIC8qIFdlYkNvbnRlbnRTZXJ2aWNlRW50cnlQb2ludC5tbSBp
biBTb3VyY2VzICovLAogCQkJCUJDQjlFMjQ0MTEyMERBQ0EwMEExMzdFMCAvKiBXZWJDb250ZXh0
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTMxQTUwNUY5MTY4MDAyNTUwMEE5MzBFQiAvKiBXZWJD
b250ZXh0Q2xpZW50LmNwcCBpbiBTb3VyY2VzICovLApAQCAtNzQ3MSw2ICs3NDg4LDcgQEAKIAkJ
CQlCQ0JBQUNFQzE0NTIyNUUzMDA1M0Y4MkYgLyogV0tQcm9jZXNzR3JvdXAubW0gaW4gU291cmNl
cyAqLywKIAkJCQk1MTJGNThGQjEyQTg4QTU0MDA2Mjk1MzAgLyogV0tQcm90ZWN0aW9uU3BhY2Uu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMzc5NDg0MDgxNTBDNEI5NzAwRTUyQ0U5IC8qIFdLUmVu
ZGVyTGF5ZXIuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMkQxQjVENUQxODU4NjlDODAwNkM2NTk2
IC8qIFZpZXdHZXN0dXJlQ29udHJvbGxlck1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQkzNzYwODgyMjE1MDQxNEY3MDBGQzgyQzcgLyogV0tSZW5kZXJPYmplY3QuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJMzMzNjc2M0ExMzBDOTlEQzAwNkM5REUyIC8qIFdLUmVzb3VyY2VD
YWNoZU1hbmFnZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRjYzNDQ0NUMxMkE4ODVFOTAwMDYx
MkQ4IC8qIFdLU2VjdXJpdHlPcmlnaW4uY3BwIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvRHJhd2luZ0FyZWEuaCBiL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9EcmF3aW5nQXJlYS5oCmluZGV4IGFlNThkYjYuLmY2
Njg3MjIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvRHJh
d2luZ0FyZWEuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvRHJhd2lu
Z0FyZWEuaApAQCAtMTI2LDYgKzEyNiwxMCBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCB1
cGRhdGVHZW9tZXRyeShjb25zdCBXZWJDb3JlOjpJbnRTaXplJiB2aWV3U2l6ZSwgY29uc3QgV2Vi
Q29yZTo6SW50U2l6ZSYgbGF5ZXJQb3NpdGlvbikgeyB9CiAgICAgdmlydHVhbCB2b2lkIHNldERl
dmljZVNjYWxlRmFjdG9yKGZsb2F0KSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgc2V0Q29sb3JTcGFj
ZShjb25zdCBDb2xvclNwYWNlRGF0YSYpIHsgfQorCisgICAgdmlydHVhbCB2b2lkIGJlZ2luVHJh
bnNpZW50Wm9vbSgpIHsgfQorICAgIHZpcnR1YWwgdm9pZCBhZGp1c3RUcmFuc2llbnRab29tKGRv
dWJsZSBzY2FsZSwgV2ViQ29yZTo6RmxvYXRQb2ludCBvcmlnaW4pIHsgfQorICAgIHZpcnR1YWwg
dm9pZCBlbmRUcmFuc2llbnRab29tKGRvdWJsZSBzY2FsZSwgV2ViQ29yZTo6RmxvYXRQb2ludCBv
cmlnaW4pIHsgfQogI2VuZGlmCiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYlBhZ2UvRHJhd2luZ0FyZWEubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYlBhZ2UvRHJhd2luZ0FyZWEubWVzc2FnZXMuaW4KaW5kZXggNjY0MWQ1MS4u
YjE0Y2JmZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Ry
YXdpbmdBcmVhLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
UGFnZS9EcmF3aW5nQXJlYS5tZXNzYWdlcy5pbgpAQCAtMzAsNSArMzAsOSBAQCBtZXNzYWdlcyAt
PiBEcmF3aW5nQXJlYSBMZWdhY3lSZWNlaXZlciB7CiAgICAgVXBkYXRlR2VvbWV0cnkoV2ViQ29y
ZTo6SW50U2l6ZSB2aWV3U2l6ZSwgV2ViQ29yZTo6SW50U2l6ZSBsYXllclBvc2l0aW9uKQogICAg
IFNldERldmljZVNjYWxlRmFjdG9yKGZsb2F0IGRldmljZVNjYWxlRmFjdG9yKQogICAgIFNldENv
bG9yU3BhY2UoV2ViS2l0OjpDb2xvclNwYWNlRGF0YSBjb2xvclNwYWNlKQorICAgIAorICAgIEJl
Z2luVHJhbnNpZW50Wm9vbSgpCisgICAgQWRqdXN0VHJhbnNpZW50Wm9vbShkb3VibGUgc2NhbGUs
IFdlYkNvcmU6OkZsb2F0UG9pbnQgb3JpZ2luKQorICAgIEVuZFRyYW5zaWVudFpvb20oZG91Ymxl
IHNjYWxlLCBXZWJDb3JlOjpGbG9hdFBvaW50IG9yaWdpbikKICNlbmRpZgogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9UaWxlZENvcmVBbmltYXRp
b25EcmF3aW5nQXJlYS5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9U
aWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYS5oCmluZGV4IDY0N2U1YWMuLjNmNTNmMjkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvVGlsZWRDb3Jl
QW5pbWF0aW9uRHJhd2luZ0FyZWEuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YlBhZ2UvbWFjL1RpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhLmgKQEAgLTEwNCw2ICsxMDQs
MTAgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgc2V0TGF5ZXJIb3N0aW5nTW9kZSh1aW50
MzJfdCkgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIHNldENvbG9yU3BhY2UoY29uc3QgQ29s
b3JTcGFjZURhdGEmKSBPVkVSUklERTsKIAorICAgIHZpcnR1YWwgdm9pZCBiZWdpblRyYW5zaWVu
dFpvb20oKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgYWRqdXN0VHJhbnNpZW50Wm9vbShk
b3VibGUgc2NhbGUsIFdlYkNvcmU6OkZsb2F0UG9pbnQgb3JpZ2luKSBPVkVSUklERTsKKyAgICB2
aXJ0dWFsIHZvaWQgZW5kVHJhbnNpZW50Wm9vbShkb3VibGUgc2NhbGUsIFdlYkNvcmU6OkZsb2F0
UG9pbnQgb3JpZ2luKSBPVkVSUklERTsKKwogICAgIHZvaWQgdXBkYXRlTGF5ZXJIb3N0aW5nQ29u
dGV4dCgpOwogCiAgICAgdm9pZCBzZXRSb290Q29tcG9zaXRpbmdMYXllcihDQUxheWVyICopOwpA
QCAtMTQzLDYgKzE0Nyw4IEBAIHByaXZhdGU6CiAgICAgV2ViQ29yZTo6SW50U2l6ZSBtX2xhc3RT
ZW50SW50cmluc2ljQ29udGVudFNpemU7CiAgICAgV2ViQ29yZTo6VGltZXI8VGlsZWRDb3JlQW5p
bWF0aW9uRHJhd2luZ0FyZWE+IG1fdXBkYXRlSW50cmluc2ljQ29udGVudFNpemVUaW1lcjsKICAg
ICBib29sIG1faW5VcGRhdGVHZW9tZXRyeTsKKworICAgIGRvdWJsZSBtX3RyYW5zaWVudFpvb21T
Y2FsZTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9UaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJl
YS5tbSBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvVGlsZWRDb3JlQW5p
bWF0aW9uRHJhd2luZ0FyZWEubW0KaW5kZXggNzcyOTQ3My4uNDA1OWQ2ZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9UaWxlZENvcmVBbmltYXRpb25E
cmF3aW5nQXJlYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFj
L1RpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhLm1tCkBAIC0zMiw2ICszMiw3IEBACiAjaW1w
b3J0ICJEcmF3aW5nQXJlYVByb3h5TWVzc2FnZXMuaCIKICNpbXBvcnQgIkxheWVySG9zdGluZ0Nv
bnRleHQuaCIKICNpbXBvcnQgIkxheWVyVHJlZUNvbnRleHQuaCIKKyNpbXBvcnQgIlZpZXdHZXN0
dXJlQ29udHJvbGxlck1lc3NhZ2VzLmgiCiAjaW1wb3J0ICJXZWJGcmFtZS5oIgogI2ltcG9ydCAi
V2ViUGFnZS5oIgogI2ltcG9ydCAiV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycy5oIgpAQCAtNDMs
NiArNDQsOCBAQAogI2ltcG9ydCA8V2ViQ29yZS9HcmFwaGljc0xheWVyQ0EuaD4KICNpbXBvcnQg
PFdlYkNvcmUvTWFpbkZyYW1lLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1BhZ2UuaD4KKyNpbXBvcnQg
PFdlYkNvcmUvUmVuZGVyTGF5ZXJCYWNraW5nLmg+CisjaW1wb3J0IDxXZWJDb3JlL1JlbmRlckxh
eWVyQ29tcG9zaXRvci5oPgogI2ltcG9ydCA8V2ViQ29yZS9SZW5kZXJWaWV3Lmg+CiAjaW1wb3J0
IDxXZWJDb3JlL1NldHRpbmdzLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1RpbGVkQmFja2luZy5oPgpA
QCAtNjk3LDYgKzcwMCw1NCBAQCBib29sIFRpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhOjpz
aG91bGRVc2VUaWxlZEJhY2tpbmdGb3JGcmFtZVZpZXcoY29uc3QgRnJhbQogICAgIHJldHVybiBm
cmFtZVZpZXcgJiYgZnJhbWVWaWV3LT5mcmFtZSgpLmlzTWFpbkZyYW1lKCk7CiB9CiAKK3ZvaWQg
VGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWE6OmJlZ2luVHJhbnNpZW50Wm9vbSgpCit7Cisg
ICAgRmxvYXRSZWN0IHZpc2libGVDb250ZW50UmVjdCA9IG1fd2ViUGFnZS0+Y29yZVBhZ2UoKS0+
bWFpbkZyYW1lKCkudmlldygpLT52aXNpYmxlQ29udGVudFJlY3QoU2Nyb2xsYWJsZUFyZWE6Oklu
Y2x1ZGVTY3JvbGxiYXJzKTsKKyAgICBtX3dlYlBhZ2UtPnNlbmQoTWVzc2FnZXM6OlZpZXdHZXN0
dXJlQ29udHJvbGxlcjo6RGlkQmVnaW5UcmFuc2llbnRab29tKHZpc2libGVDb250ZW50UmVjdCkp
OworfQorCit2b2lkIFRpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhOjphZGp1c3RUcmFuc2ll
bnRab29tKGRvdWJsZSBzY2FsZSwgRmxvYXRQb2ludCBvcmlnaW4pCit7CisgICAgLy8gRklYTUU6
IFNjcm9sbGJhcnMgc2hvdWxkIHN0YXkgaW4tcGxhY2UgYW5kIGNoYW5nZSBoZWlnaHQgd2hpbGUg
em9vbWluZy4KKyAgICAvLyBGSVhNRTogS2VlcCBhcm91bmQgcGFnZVNjYWxlPTEgdGlsZXMgc28g
d2UgY2FuIHpvb20gb3V0IHdpdGhvdXQgZ2Fwcy4KKyAgICAvLyBGSVhNRTogQnJpbmcgaW4gdW5w
YXJlbnRlZC1idXQtcGFpbnRlZCB0aWxlcyB3aGVuIHpvb21pbmcgb3V0LCB0byBmaWxsIGluIGFu
eSBnYXBzLgorCisgICAgaWYgKCFtX3Jvb3RMYXllcikKKyAgICAgICAgcmV0dXJuOworCisgICAg
UmVuZGVyVmlldyogcmVuZGVyVmlldyA9IG1fd2ViUGFnZS0+Y29yZVBhZ2UoKS0+bWFpbkZyYW1l
KCkudmlldygpLT5yZW5kZXJWaWV3KCk7CisKKyAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCB0cmFu
c2Zvcm07CisgICAgdHJhbnNmb3JtLnRyYW5zbGF0ZShvcmlnaW4ueCgpLCBvcmlnaW4ueSgpKTsK
KyAgICB0cmFuc2Zvcm0uc2NhbGUoc2NhbGUpOworCisgICAgUGxhdGZvcm1DQUxheWVyKiByZW5k
ZXJWaWV3TGF5ZXIgPSBzdGF0aWNfY2FzdDxHcmFwaGljc0xheWVyQ0EqPihyZW5kZXJWaWV3LT5s
YXllcigpLT5iYWNraW5nKCktPmdyYXBoaWNzTGF5ZXIoKSktPnBsYXRmb3JtQ0FMYXllcigpOwor
ICAgIHJlbmRlclZpZXdMYXllci0+c2V0VHJhbnNmb3JtKHRyYW5zZm9ybSk7CisgICAgcmVuZGVy
Vmlld0xheWVyLT5zZXRBbmNob3JQb2ludChGbG9hdFBvaW50M0QoKSk7CisgICAgcmVuZGVyVmll
d0xheWVyLT5zZXRQb3NpdGlvbihGbG9hdFBvaW50M0QoKSk7CisKKyAgICAvLyBGSVhNRTogV2Ug
c2hvdWxkIHRyYW5zZm9ybSB0aGUgc2hhZG93IGxheWVyIGFzIHdlbGwsIGluc3RlYWQgb2YgaGlk
aW5nIGl0LgorICAgIFBsYXRmb3JtQ0FMYXllciogc2hhZG93TGF5ZXIgPSBzdGF0aWNfY2FzdDxH
cmFwaGljc0xheWVyQ0EqPihyZW5kZXJWaWV3LT5jb21wb3NpdG9yKCkubGF5ZXJGb3JDb250ZW50
U2hhZG93KCkpLT5wbGF0Zm9ybUNBTGF5ZXIoKTsKKyAgICBzaGFkb3dMYXllci0+c2V0SGlkZGVu
KHRydWUpOworCisgICAgbV90cmFuc2llbnRab29tU2NhbGUgPSBzY2FsZTsKK30KKwordm9pZCBU
aWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYTo6ZW5kVHJhbnNpZW50Wm9vbShkb3VibGUgc2Nh
bGUsIEZsb2F0UG9pbnQgb3JpZ2luKQoreworICAgIFJlbmRlclZpZXcqIHJlbmRlclZpZXcgPSBt
X3dlYlBhZ2UtPmNvcmVQYWdlKCktPm1haW5GcmFtZSgpLnZpZXcoKS0+cmVuZGVyVmlldygpOwor
CisgICAgLy8gSWYgdGhlIHBhZ2Ugc2NhbGUgaXMgYWxyZWFkeSB0aGUgdGFyZ2V0IHNjYWxlLCBz
Y2FsZVBhZ2UoKSB3aWxsIHNob3J0LWNpcmN1aXQKKyAgICAvLyBhbmQgbm90IGFwcGx5IHRoZSB0
cmFuc2Zvcm0sIHNvIHdlIGNhbid0IGNsZWFyIGl0LgorICAgIGlmIChtX3RyYW5zaWVudFpvb21T
Y2FsZSAhPSBtX3dlYlBhZ2UtPnBhZ2VTY2FsZUZhY3RvcigpKQorICAgICAgIHN0YXRpY19jYXN0
PEdyYXBoaWNzTGF5ZXJDQSo+KHJlbmRlclZpZXctPmxheWVyKCktPmJhY2tpbmcoKS0+Z3JhcGhp
Y3NMYXllcigpKS0+cGxhdGZvcm1DQUxheWVyKCktPnNldFRyYW5zZm9ybShUcmFuc2Zvcm1hdGlv
bk1hdHJpeCgpKTsKKworICAgIFBsYXRmb3JtQ0FMYXllciogc2hhZG93TGF5ZXIgPSBzdGF0aWNf
Y2FzdDxHcmFwaGljc0xheWVyQ0EqPihyZW5kZXJWaWV3LT5jb21wb3NpdG9yKCkubGF5ZXJGb3JD
b250ZW50U2hhZG93KCkpLT5wbGF0Zm9ybUNBTGF5ZXIoKTsKKyAgICBzaGFkb3dMYXllci0+c2V0
SGlkZGVuKGZhbHNlKTsKKworICAgIG1fd2ViUGFnZS0+c2NhbGVQYWdlKHNjYWxlLCByb3VuZGVk
SW50UG9pbnQob3JpZ2luKSk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAogCiAjZW5kaWYg
Ly8gIVBMQVRGT1JNKElPUykK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>219017</attachid>
            <date>2013-12-11 16:39:47 -0800</date>
            <delta_ts>2013-12-11 18:06:52 -0800</delta_ts>
            <desc>maybe take 2 will apply</desc>
            <filename>zoom.diff</filename>
            <type>text/plain</type>
            <size>41011</size>
            <attacher name="Tim Horton">thorton</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA1ZmRjMjdjLi40N2QyYTBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjAg
QEAKKzIwMTMtMTItMTEgIFRpbSBIb3J0b24gIDx0aW1vdGh5X2hvcnRvbkBhcHBsZS5jb20+CisK
KyAgICAgICAgW3drMl0gSGFuZGxlIHBpbmNoLXRvLXpvb20gZ2VzdHVyZQorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTI1NjA0CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJDb3JlLmV4cC5pbjoKKyAg
ICAgICAgRXhwb3J0IHNvbWUgVHJhbnNmb3JtYXRpb25NYXRyaXggZnVuY3Rpb25zLgorCisgICAg
ICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICBNYWtlIHNv
bWUgaGVhZGVycyBwcml2YXRlIHNvIHRoYXQgUmVuZGVyTGF5ZXJDb21wb3NpdG9yL0JhY2tpbmcg
Y2FuIGJlIHVzZWQgZnJvbSBXZWJLaXQyLgorCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxh
eWVyQ29tcG9zaXRvci5oOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXJDb21wb3NpdG9y
OjpsYXllckZvckNvbnRlbnRTaGFkb3cpOgorICAgICAgICBBZGQgYSBnZXR0ZXIgZm9yIHRoZSBj
b250ZW50IHNoYWRvdyBsYXllci4KKwogMjAxMy0xMi0xMSAgRGF2aWQgS2lsemVyICA8ZGRraWx6
ZXJAYXBwbGUuY29tPgogCiAgICAgICAgIERlZmluZSBtX2hhc0JhZFBhcmVudCBpbiBJbmxpbmVC
b3ggaWYgZGVmaW5lZChBRERSRVNTX1NBTklUSVpFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUuZXhwLmluIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4KaW5kZXgg
Y2E3YmRhZS4uYzM4OGY5NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAu
aW4KKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4KQEAgLTc3Niw2ICs3NzYsOCBA
QCBfX1pON1dlYkNvcmUyMFJlc291cmNlUmVzcG9uc2VCYXNlMjBzZXRTdWdnZXN0ZWRGaWxlbmFt
ZUVSS04zV1RGNlN0cmluZ0UKIF9fWk43V2ViQ29yZTIwUmVzb3VyY2VSZXNwb25zZUJhc2UyNHNl
dEV4cGVjdGVkQ29udGVudExlbmd0aEV4CiBfX1pON1dlYkNvcmUyMFJlc291cmNlUmVzcG9uc2VC
YXNlNnNldFVSTEVSS05TXzNVUkxFCiBfX1pON1dlYkNvcmUyMFJlc291cmNlUmVzcG9uc2VCYXNl
QzJFdgorX19aTjdXZWJDb3JlMjBUcmFuc2Zvcm1hdGlvbk1hdHJpeDl0cmFuc2xhdGVFZGQKK19f
Wk43V2ViQ29yZTIwVHJhbnNmb3JtYXRpb25NYXRyaXg1c2NhbGVFZAogX19aTjdXZWJDb3JlMjBV
c2VyR2VzdHVyZUluZGljYXRvcjdzX3N0YXRlRQogX19aTjdXZWJDb3JlMjBVc2VyR2VzdHVyZUlu
ZGljYXRvckMxRU5TXzI2UHJvY2Vzc2luZ1VzZXJHZXN0dXJlU3RhdGVFCiBfX1pON1dlYkNvcmUy
MFVzZXJHZXN0dXJlSW5kaWNhdG9yRDFFdgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDFhMjNhYzkuLjg4ODQ5MWYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTQ3
Miw3ICs0NzIsNyBAQAogCQkwRjYwNUFFQzE1Rjk0ODQ4MDA0REYwQzAgLyogU2Nyb2xsaW5nQ29u
c3RyYWludHMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMEY2MDVBRUExNUY5NDg0ODAwNERGMEMwIC8qIFNjcm9sbGluZ0NvbnN0cmFpbnRzLmNwcCAq
LzsgfTsKIAkJMEY2MDVBRUQxNUY5NDg0ODAwNERGMEMwIC8qIFNjcm9sbGluZ0NvbnN0cmFpbnRz
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjYwNUFF
QjE1Rjk0ODQ4MDA0REYwQzAgLyogU2Nyb2xsaW5nQ29uc3RyYWludHMuaCAqLzsgfTsKIAkJMEZB
MjRENzkxNjJERjkxOTAwQTNGNEMwIC8qIEdyYXBoaWNzTGF5ZXJVcGRhdGVyLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGQTI0RDc3MTYyREY5MTkw
MEEzRjRDMCAvKiBHcmFwaGljc0xheWVyVXBkYXRlci5jcHAgKi87IH07Ci0JCTBGQTI0RDdBMTYy
REY5MTkwMEEzRjRDMCAvKiBHcmFwaGljc0xheWVyVXBkYXRlci5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZBMjRENzgxNjJERjkxOTAwQTNGNEMwIC8q
IEdyYXBoaWNzTGF5ZXJVcGRhdGVyLmggKi87IH07CisJCTBGQTI0RDdBMTYyREY5MTkwMEEzRjRD
MCAvKiBHcmFwaGljc0xheWVyVXBkYXRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMEZBMjRENzgxNjJERjkxOTAwQTNGNEMwIC8qIEdyYXBoaWNzTGF5
ZXJVcGRhdGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKIAkJMEZBODhFQkQxNkE4RDFCRDAwRjk5OTg0IC8qIFNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5n
Tm9kZU1hYy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDBGQTg4RUJDMTZBOEQxQkQwMEY5OTk4NCAvKiBTY3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05vZGVN
YWMubW0gKi87IH07CiAJCTBGQjg4OTBBMTY3RDJGQTEwMDEwQ0RBNSAvKiBTY3JvbGxpbmdUcmVl
U3RpY2t5Tm9kZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMEZCODg5MDgxNjdEMkZBMTAwMTBDREE1IC8qIFNjcm9sbGluZ1RyZWVTdGlja3lOb2RlLmgg
Ki87IH07CiAJCTBGQjg4OTBCMTY3RDJGQTEwMDEwQ0RBNSAvKiBTY3JvbGxpbmdUcmVlU3RpY2t5
Tm9kZS5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBG
Qjg4OTA5MTY3RDJGQTEwMDEwQ0RBNSAvKiBTY3JvbGxpbmdUcmVlU3RpY2t5Tm9kZS5tbSAqLzsg
fTsKQEAgLTE0NzMsNyArMTQ3Myw3IEBACiAJCTQ5QUUyRDhGMTM0RUU1MEMwMDcyOTIwQSAvKiBD
U1NDYWxjdWxhdGlvblZhbHVlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA0OUFFMkQ4RDEzNEVFNTBDMDA3MjkyMEEgLyogQ1NTQ2FsY3VsYXRpb25WYWx1
ZS5oICovOyB9OwogCQk0OUFFMkQ5NjEzNEVFNUY5MDA3MjkyMEEgLyogQ2FsY3VsYXRpb25WYWx1
ZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0OUFF
MkQ5NDEzNEVFNUY5MDA3MjkyMEEgLyogQ2FsY3VsYXRpb25WYWx1ZS5jcHAgKi87IH07CiAJCTQ5
QUUyRDk3MTM0RUU1RjkwMDcyOTIwQSAvKiBDYWxjdWxhdGlvblZhbHVlLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0OUFFMkQ5NTEzNEVFNUY5MDA3Mjky
MEEgLyogQ2FsY3VsYXRpb25WYWx1ZS5oICovOyB9OwotCQk0OUFGMkQ2OTE0NDM1RDA1MDAxNkE3
ODQgLyogRGlzcGxheVJlZnJlc2hNb25pdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA0OUFGMkQ2ODE0NDM1RDA1MDAxNkE3ODQgLyogRGlzcGxheVJl
ZnJlc2hNb25pdG9yLmggKi87IH07CisJCTQ5QUYyRDY5MTQ0MzVEMDUwMDE2QTc4NCAvKiBEaXNw
bGF5UmVmcmVzaE1vbml0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDQ5QUYyRDY4MTQ0MzVEMDUwMDE2QTc4NCAvKiBEaXNwbGF5UmVmcmVzaE1vbml0
b3IuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0
OUFGMkQ2QzE0NDM1RDIxMDAxNkE3ODQgLyogRGlzcGxheVJlZnJlc2hNb25pdG9yTWFjLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ5QUYyRDZCMTQ0
MzVEMjEwMDE2QTc4NCAvKiBEaXNwbGF5UmVmcmVzaE1vbml0b3JNYWMuY3BwICovOyB9OwogCQk0
OUIzNzYwQzE1QzZDNjg0MDA1OTEzMUQgLyogQXJyYXlWYWx1ZS5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0OUIzNzYwQTE1QzZDNjg0MDA1OTEzMUQg
LyogQXJyYXlWYWx1ZS5jcHAgKi87IH07CiAJCTQ5QjM3NjBEMTVDNkM2ODQwMDU5MTMxRCAvKiBB
cnJheVZhbHVlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA0OUIzNzYwQjE1QzZDNjg0MDA1OTEzMUQgLyogQXJyYXlWYWx1ZS5oICovOyB9OwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5oIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5oCmluZGV4IDI2
MTZhNzYuLmUxN2E0NjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJMYXllckNvbXBvc2l0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
TGF5ZXJDb21wb3NpdG9yLmgKQEAgLTI2Myw2ICsyNjMsNyBAQCBwdWJsaWM6CiAgICAgR3JhcGhp
Y3NMYXllciogbGF5ZXJGb3JTY3JvbGxDb3JuZXIoKSBjb25zdCB7IHJldHVybiBtX2xheWVyRm9y
U2Nyb2xsQ29ybmVyLmdldCgpOyB9CiAjaWYgRU5BQkxFKFJVQkJFUl9CQU5ESU5HKQogICAgIEdy
YXBoaWNzTGF5ZXIqIGxheWVyRm9yT3ZlcmhhbmdBcmVhcygpIGNvbnN0IHsgcmV0dXJuIG1fbGF5
ZXJGb3JPdmVyaGFuZ0FyZWFzLmdldCgpOyB9CisgICAgR3JhcGhpY3NMYXllciogbGF5ZXJGb3JD
b250ZW50U2hhZG93KCkgY29uc3QgeyByZXR1cm4gbV9jb250ZW50U2hhZG93TGF5ZXIuZ2V0KCk7
IH0KIAogICAgIEdyYXBoaWNzTGF5ZXIqIHVwZGF0ZUxheWVyRm9yVG9wT3ZlcmhhbmdBcmVhKGJv
b2wgd2FudHNMYXllcik7CiAgICAgR3JhcGhpY3NMYXllciogdXBkYXRlTGF5ZXJGb3JCb3R0b21P
dmVyaGFuZ0FyZWEoYm9vbCB3YW50c0xheWVyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCAzOTc3NzMzLi45NzEz
ZTg3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dl
YktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTA2IEBACisyMDEzLTEyLTExICBUaW0gSG9ydG9u
ICA8dGltb3RoeV9ob3J0b25AYXBwbGUuY29tPgorCisgICAgICAgIFt3azJdIEhhbmRsZSBwaW5j
aC10by16b29tIGdlc3R1cmUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTEyNTYwNAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIEFkZCB0aGUgY29uY2VwdCBvZiBhICJ0cmFuc2llbnQiIHpvb20gdG8gRHJhd2lu
Z0FyZWEsIHdoaWNoIGlzIGEgem9vbQorICAgICAgICB0aGF0IGFmZmVjdHMgdGhlIGNvbnRlbnQs
IGJ1dCBkb2VzIG5vdCBjYXVzZSByZXBhaW50LCBhcyB3b3VsZCBiZSB1c2VkCisgICAgICAgIGZv
ciBhIGxpdmUgcGluY2gtem9vbSBnZXN0dXJlLgorCisgICAgICAgIEFkZCBWaWV3R2VzdHVyZUNv
bnRyb2xsZXIgb2ZmIG9mIFdLVmlldywgd2hpY2ggY3VycmVudGx5IG9ubHkgaGFuZGxlcworICAg
ICAgICBtYWduaWZpY2F0aW9uIGdlc3R1cmVzLCBhbmQga2VlcHMgdHJhY2sgb2YgdGhlIGN1cnJl
bnQgZ2VzdHVyZSdzIHNjYWxlCisgICAgICAgIGFuZCBvcmlnaW4gYW5kIHN1Y2gsIGFuZCBmb3J3
YXJkcyByZWxldmFudCBldmVudHMgb24gdG8gdGhlIERyYXdpbmdBcmVhCisgICAgICAgIHZpYSB0
aGUgdHJhbnNpZW50IHpvb20gbWVjaGFuaXNtLgorCisgICAgICAgICogRGVyaXZlZFNvdXJjZXMu
bWFrZToKKyAgICAgICAgQWRkIFZpZXdHZXN0dXJlQ29udHJvbGxlciB0byB0aGUgbGlzdCBvZiBt
ZXNzYWdlIHJlY2VpdmVycy4KKworICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tWaWV3
UHJpdmF0ZS5oOgorICAgICAgICBBZGQgc2hvdWxkSGFuZGxlTWFnbmlmaWNhdGlvbkdlc3R1cmUg
cHJvcGVydHksIHdoaWNoIGNvbnRyb2xzIHdoZXRoZXIgV0tWaWV3IHdpbGwKKyAgICAgICAgYXR0
ZW1wdCB0byBoYW5kbGUgbWFnbmlmeVdpdGhFdmVudDouCisKKyAgICAgICAgKiBVSVByb2Nlc3Mv
QVBJL21hYy9XS1ZpZXcubW06CisgICAgICAgICgtW1dLVmlldyB3YWl0Rm9yQXN5bmNEcmF3aW5n
QXJlYVNpemVVcGRhdGVdKToKKyAgICAgICAgRml4IGEgdHlwby4KKworICAgICAgICAoLVtXS1Zp
ZXcgX2Vuc3VyZUdlc3R1cmVDb250cm9sbGVyXSk6CisgICAgICAgIENyZWF0ZSBvdXIgVmlld0dl
c3R1cmVDb250cm9sbGVyIGlmIGl0IGRvZXNuJ3QgYWxyZWFkeSBleGlzdC4KKworICAgICAgICAo
LVtXS1ZpZXcgc2V0U2hvdWxkSGFuZGxlTWFnbmlmaWNhdGlvbkdlc3R1cmU6XSk6CisgICAgICAg
ICgtW1dLVmlldyBzaG91bGRIYW5kbGVNYWduaWZpY2F0aW9uR2VzdHVyZV0pOgorICAgICAgICBH
ZXQvc2V0IHNob3VsZEhhbmRsZU1hZ25pZmljYXRpb25HZXN0dXJlLgorCisgICAgICAgICgtW1dL
VmlldyBtYWduaWZ5V2l0aEV2ZW50Ol0pOgorICAgICAgICAoLVtXS1ZpZXcgZW5kR2VzdHVyZVdp
dGhFdmVudDpdKToKKyAgICAgICAgRm9yd2FyZCBnZXN0dXJlIG1ldGhvZHMgdG8gVmlld0dlc3R1
cmVDb250cm9sbGVyLgorCisgICAgICAgICogVUlQcm9jZXNzL1ZpZXdHZXN0dXJlQ29udHJvbGxl
ci5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpWaWV3R2VzdHVyZUNvbnRyb2xsZXI6OmNy
ZWF0ZSk6CisgICAgICAgIChXZWJLaXQ6OlZpZXdHZXN0dXJlQ29udHJvbGxlcjo6Vmlld0dlc3R1
cmVDb250cm9sbGVyKToKKyAgICAgICAgKFdlYktpdDo6Vmlld0dlc3R1cmVDb250cm9sbGVyOjp+
Vmlld0dlc3R1cmVDb250cm9sbGVyKToKKyAgICAgICAgKFdlYktpdDo6cmVzaXN0YW5jZUZvckRl
bHRhKToKKyAgICAgICAgQ29tcHV0ZSBhIHJlc2lzdGFuY2UgZmFjdG9yLCB3aGljaCBtYWtlcyBp
dCBmZWVsICJoYXJkIiB0byB6b29tIG91dCBwYXN0CisgICAgICAgIHNjYWxlPTEsIGFuZCBhY2Nl
bGVyYXRlcyBzY2FsaW5nIG91dCBiZWZvcmUgeW91IGhpdCBzY2FsZT0xLgorCisgICAgICAgIChX
ZWJLaXQ6OlZpZXdHZXN0dXJlQ29udHJvbGxlcjo6c2NhbGVkTWFnbmlmaWNhdGlvbk9yaWdpbik6
CisgICAgICAgIENvbXB1dGUgdGhlIG9yaWdpbiBvZiB0aGUgbWFnbmlmaWNhdGlvbiBnZXN0dXJl
IHdpdGggdGhlIHRyYW5zaWVudCB6b29tIHVuYXBwbGllZC4KKworICAgICAgICAoV2ViS2l0OjpW
aWV3R2VzdHVyZUNvbnRyb2xsZXI6OmhhbmRsZU1hZ25pZmljYXRpb25HZXN0dXJlKToKKyAgICAg
ICAgVGhlIGZpcnN0IG1hZ25pZmljYXRpb24gZ2VzdHVyZSB3aWxsIHNlbmQgYSBtZXNzYWdlIHRv
IHRoZSBXZWJQcm9jZXNzCisgICAgICAgIHRvIHJldHJpZXZlIHRoZSB2aXNpYmxlIGNvbnRlbnQg
cmVjdC4gU3Vic2VxdWVudCBnZXN0dXJlcyB3aWxsCisgICAgICAgIGhhbmQgdGhlIG5ldyBtYWdu
aWZpY2F0aW9uIGFuZCBvcmlnaW4gdG8gdGhlIERyYXdpbmdBcmVhIHRvIGFwcGx5LgorCisgICAg
ICAgIChXZWJLaXQ6OlZpZXdHZXN0dXJlQ29udHJvbGxlcjo6ZGlkQmVnaW5UcmFuc2llbnRab29t
KToKKyAgICAgICAgQ2FsbGJhY2sgZnJvbSB0aGUgV2ViUHJvY2Vzcywgd2l0aCB0aGUgY3VycmVu
dCB2aXNpYmxlIGNvbnRlbnQgcmVjdC4KKyAgICAgICAgU3Vic2VxdWVudCBtYWduaWZpY2F0aW9u
IGdlc3R1cmVzIHdpbGwgZm9yd2FyZCB0aGUgc2NhbGUgYW5kIG9yaWdpbiB0byB0aGUgRHJhd2lu
Z0FyZWEuCisgICAgICAgIAorICAgICAgICAoV2ViS2l0OjpWaWV3R2VzdHVyZUNvbnRyb2xsZXI6
OmVuZE1hZ25pZmljYXRpb25HZXN0dXJlKToKKyAgICAgICAgQ29tbWl0IHRoZSBjdXJyZW50IHRy
YW5zaWVudCBzY2FsZSBhcyB0aGUgYWN0dWFsIHBhZ2Ugc2NhbGUsIHdoaWNoIHdpbGwgY2F1c2UK
KyAgICAgICAgYSByZXBhaW50IGFuZCBicmluZyBpbiBhbGwgdGhlIHRpbGVzLgorCisgICAgICAg
IChXZWJLaXQ6OlZpZXdHZXN0dXJlQ29udHJvbGxlcjo6ZW5kQWN0aXZlR2VzdHVyZSk6CisgICAg
ICAgIElmIHdlIGhhdmUgYW4gYWN0aXZlIGdlc3R1cmUsIGNhbGwgaXRzIGVuZCBmdW5jdGlvbi4K
KworICAgICAgICAqIFVJUHJvY2Vzcy9WaWV3R2VzdHVyZUNvbnRyb2xsZXIuaDogQWRkZWQuCisg
ICAgICAgICogVUlQcm9jZXNzL1ZpZXdHZXN0dXJlQ29udHJvbGxlci5tZXNzYWdlcy5pbjogQWRk
ZWQuCisKKyAgICAgICAgKiBXZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAg
ICAgIEFkZCBuZXcgZmlsZXMuCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1Rp
bGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQ
YWdlL21hYy9UaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYS5tbToKKyAgICAgICAgKFdlYktp
dDo6VGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWE6OmJlZ2luVHJhbnNpZW50Wm9vbSk6Cisg
ICAgICAgIENhbGwgYmFjayB0byBWaWV3R2VzdHVyZUNvbnRyb2xsZXIgd2l0aCB0aGUgdmlzaWJs
ZUNvbnRlbnRSZWN0LgorCisgICAgICAgIChXZWJLaXQ6OlRpbGVkQ29yZUFuaW1hdGlvbkRyYXdp
bmdBcmVhOjphZGp1c3RUcmFuc2llbnRab29tKToKKyAgICAgICAgU2NhbGUgYW5kIHRyYW5zbGF0
ZSB0aGUgUmVuZGVyVmlldydzIFBsYXRmb3JtQ0FMYXllci4KKyAgICAgICAgUmVhY2hpbmcgaW50
byB0aGUgbGF5ZXIgdHJlZSBsaWtlIHRoaXMgaXMgc2NhcnksIHdlIHNob3VsZCBjb25zaWRlcgor
ICAgICAgICB0ZWFjaGluZyBSZW5kZXJMYXllckNvbXBvc2l0b3IgYWJvdXQgdHJhbnNpZW50IHpv
b20uCisgICAgICAgIEhpZGUgdGhlIGNvbnRlbnQgc2hhZG93IGxheWVyIGZvciBub3cuCisKKyAg
ICAgICAgKFdlYktpdDo6VGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWE6OmVuZFRyYW5zaWVu
dFpvb20pOgorICAgICAgICBDbGVhciBvdXIgY3VzdG9tIHRyYW5zZm9ybSBvbiB0aGUgUmVuZGVy
VmlldydzIGxheWVyLCBhbmQKKyAgICAgICAgY2hhbmdlIHRoZSBhY3R1YWwgcGFnZSBzY2FsZSwg
Y2F1c2luZyBhIHJlcGFpbnQuCisgICAgICAgIFVuLWhpZGUgdGhlIHNoYWRvdyBsYXllci4KKwor
ICAgICAgICAqIFVJUHJvY2Vzcy9EcmF3aW5nQXJlYVByb3h5Lmg6CisgICAgICAgIChXZWJLaXQ6
OkRyYXdpbmdBcmVhUHJveHk6OmJlZ2luVHJhbnNpZW50Wm9vbSk6CisgICAgICAgIChXZWJLaXQ6
OkRyYXdpbmdBcmVhUHJveHk6OmFkanVzdFRyYW5zaWVudFpvb20pOgorICAgICAgICAoV2ViS2l0
OjpEcmF3aW5nQXJlYVByb3h5OjplbmRUcmFuc2llbnRab29tKToKKyAgICAgICAgKiBVSVByb2Nl
c3MvbWFjL1RpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhUHJveHkuaDoKKyAgICAgICAgKiBV
SVByb2Nlc3MvbWFjL1RpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhUHJveHkubW06CisgICAg
ICAgIChXZWJLaXQ6OlRpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhUHJveHk6OmJlZ2luVHJh
bnNpZW50Wm9vbSk6CisgICAgICAgIChXZWJLaXQ6OlRpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdB
cmVhUHJveHk6OmFkanVzdFRyYW5zaWVudFpvb20pOgorICAgICAgICAoV2ViS2l0OjpUaWxlZENv
cmVBbmltYXRpb25EcmF3aW5nQXJlYVByb3h5OjplbmRUcmFuc2llbnRab29tKToKKyAgICAgICAg
KiBXZWJQcm9jZXNzL1dlYlBhZ2UvRHJhd2luZ0FyZWEuaDoKKyAgICAgICAgKFdlYktpdDo6RHJh
d2luZ0FyZWE6OmJlZ2luVHJhbnNpZW50Wm9vbSk6CisgICAgICAgIChXZWJLaXQ6OkRyYXdpbmdB
cmVhOjphZGp1c3RUcmFuc2llbnRab29tKToKKyAgICAgICAgKFdlYktpdDo6RHJhd2luZ0FyZWE6
OmVuZFRyYW5zaWVudFpvb20pOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9EcmF3aW5n
QXJlYS5tZXNzYWdlcy5pbjoKKyAgICAgICAgR2VuZXJpYyBwbHVtYmluZyBmb3Ige2JlZ2luLCBh
ZGp1c3QsIGVuZH1UcmFuc2llbnRab29tLgorCiAyMDEzLTEyLTExICBBbmRlcnMgQ2FybHNzb24g
IDxhbmRlcnNjYUBhcHBsZS5jb20+CiAKICAgICAgICAgTWVzc2FnZVJlY2VpdmVyTWFwIHNob3Vs
ZCB0YWtlIE1lc3NhZ2VSZWNlaXZlciBvYmplY3RzIGJ5IHJlZmVyZW5jZQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvRGVyaXZlZFNvdXJjZXMubWFrZSBiL1NvdXJjZS9XZWJLaXQyL0Rlcml2
ZWRTb3VyY2VzLm1ha2UKaW5kZXggMjg5MmNmOC4uYTY1YWQ3MSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvRGVyaXZlZFNvdXJjZXMubWFrZQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9EZXJpdmVk
U291cmNlcy5tYWtlCkBAIC04OSw2ICs4OSw3IEBAIE1FU1NBR0VfUkVDRUlWRVJTID0gXAogICAg
IFNlY0l0ZW1TaGltUHJveHkgXAogICAgIFN0b3JhZ2VBcmVhTWFwIFwKICAgICBTdG9yYWdlTWFu
YWdlciBcCisgICAgVmlld0dlc3R1cmVDb250cm9sbGVyIFwKICAgICBXZWJBcHBsaWNhdGlvbkNh
Y2hlTWFuYWdlciBcCiAgICAgV2ViQXBwbGljYXRpb25DYWNoZU1hbmFnZXJQcm94eSBcCiAgICAg
V2ViQ29ubmVjdGlvbiBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L0NvY29hL1dLVmlld1ByaXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29j
b2EvV0tWaWV3UHJpdmF0ZS5oCmluZGV4IDhjMGZlYTkuLmUwZDY3MjIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tWaWV3UHJpdmF0ZS5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tWaWV3UHJpdmF0ZS5oCkBAIC03Nyw2
ICs3Nyw3IEBAIHR5cGVkZWYgZW51bSB7CiBAcHJvcGVydHkgKHJlYWR3cml0ZSkgQk9PTCBzaG91
bGRDbGlwVG9WaXNpYmxlUmVjdDsKIEBwcm9wZXJ0eSAocmVhZHdyaXRlKSBCT09MIHNob3VsZEV4
cGFuZFRvVmlld0hlaWdodEZvckF1dG9MYXlvdXQ7CiBAcHJvcGVydHkgKHJlYWRvbmx5LCBnZXR0
ZXI9aXNVc2luZ1VJU2lkZUNvbXBvc2l0aW5nKSBCT09MIHVzaW5nVUlTaWRlQ29tcG9zaXRpbmc7
CitAcHJvcGVydHkgKHJlYWR3cml0ZSkgQk9PTCBzaG91bGRIYW5kbGVNYWduaWZpY2F0aW9uR2Vz
dHVyZTsKIAogQHByb3BlcnR5KGNvcHksIG5vbmF0b21pYykgTlNDb2xvciAqdW5kZXJsYXlDb2xv
cjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9tYWMvV0tWaWV3
Lm1tIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9tYWMvV0tWaWV3Lm1tCmluZGV4IDg1
YzVlYTguLmEwYzkwNGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
bWFjL1dLVmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL21hYy9XS1Zp
ZXcubW0KQEAgLTQ5LDYgKzQ5LDcgQEAKICNpbXBvcnQgIlRleHRDaGVja2VyLmgiCiAjaW1wb3J0
ICJUZXh0Q2hlY2tlclN0YXRlLmgiCiAjaW1wb3J0ICJUaWxlZENvcmVBbmltYXRpb25EcmF3aW5n
QXJlYVByb3h5LmgiCisjaW1wb3J0ICJWaWV3R2VzdHVyZUNvbnRyb2xsZXIuaCIKICNpbXBvcnQg
IldLQVBJQ2FzdC5oIgogI2ltcG9ydCAiV0tGdWxsU2NyZWVuV2luZG93Q29udHJvbGxlci5oIgog
I2ltcG9ydCAiV0tQcmludGluZ1ZpZXcuaCIKQEAgLTIzMSw2ICsyMzIsOSBAQCBzdHJ1Y3QgV0tW
aWV3SW50ZXJwcmV0S2V5RXZlbnRzUGFyYW1ldGVycyB7CiAgICAgTlNSZWN0IF9jb250ZW50UHJl
cGFyYXRpb25SZWN0OwogICAgIEJPT0wgX3VzZUNvbnRlbnRQcmVwYXJhdGlvblJlY3RGb3JWaXNp
YmxlUmVjdDsKICAgICBCT09MIF93aW5kb3dPY2NsdXNpb25EZXRlY3Rpb25FbmFibGVkOworCisg
ICAgc3RkOjp1bmlxdWVfcHRyPFZpZXdHZXN0dXJlQ29udHJvbGxlcj4gX2dlc3R1cmVDb250cm9s
bGVyOworICAgIEJPT0wgX3Nob3VsZEhhbmRsZU1hZ25pZmljYXRpb25HZXN0dXJlOwogfQogCiBA
ZW5kCkBAIC0zMjM0LDcgKzMyMzgsNyBAQCBzdGF0aWMgTlNTdHJpbmcgKnBhdGhXaXRoVW5pcXVl
RmlsZW5hbWVGb3JQYXRoKE5TU3RyaW5nICpwYXRoKQogLSAodm9pZCl3YWl0Rm9yQXN5bmNEcmF3
aW5nQXJlYVNpemVVcGRhdGUKIHsKICAgICBpZiAoRHJhd2luZ0FyZWFQcm94eSogZHJhd2luZ0Fy
ZWEgPSBfZGF0YS0+X3BhZ2UtPmRyYXdpbmdBcmVhKCkpIHsKLSAgICAgICAgLy8gSWYgYSBnZW9t
ZXRyeSB1cGRhdGUgaXMgc3RpbGwgcGVuZGluZyB0aGVuIHRoZSBhY3Rpb24gb2YgcmVjaWV2aW5n
IHRoZQorICAgICAgICAvLyBJZiBhIGdlb21ldHJ5IHVwZGF0ZSBpcyBzdGlsbCBwZW5kaW5nIHRo
ZW4gdGhlIGFjdGlvbiBvZiByZWNlaXZpbmcgdGhlCiAgICAgICAgIC8vIGZpcnN0IGdlb21ldHJ5
IHVwZGF0ZSBtYXkgcmVzdWx0IGluIGFub3RoZXIgdXBkYXRlIGJlaW5nIHNjaGVkdWxlZCAtCiAg
ICAgICAgIC8vIHdlIHNob3VsZCB3YWl0IGZvciB0aGlzIHRvIGNvbXBsZXRlIHRvby4KICAgICAg
ICAgZHJhd2luZ0FyZWEtPndhaXRGb3JQb3NzaWJsZUdlb21ldHJ5VXBkYXRlKERyYXdpbmdBcmVh
UHJveHk6OmRpZFVwZGF0ZUJhY2tpbmdTdG9yZVN0YXRlVGltZW91dCAqIDAuNSk7CkBAIC0zMjUw
LDYgKzMyNTQsNDIgQEAgc3RhdGljIE5TU3RyaW5nICpwYXRoV2l0aFVuaXF1ZUZpbGVuYW1lRm9y
UGF0aChOU1N0cmluZyAqcGF0aCkKICAgICByZXR1cm4gTk87CiB9CiAKKy0gKHZvaWQpX2Vuc3Vy
ZUdlc3R1cmVDb250cm9sbGVyCit7CisgICAgaWYgKF9kYXRhLT5fZ2VzdHVyZUNvbnRyb2xsZXIp
CisgICAgICAgIHJldHVybjsKKworICAgIF9kYXRhLT5fZ2VzdHVyZUNvbnRyb2xsZXIgPSBWaWV3
R2VzdHVyZUNvbnRyb2xsZXI6OmNyZWF0ZShfZGF0YS0+X3BhZ2UuZ2V0KCkpOworfQorCistICh2
b2lkKXNldFNob3VsZEhhbmRsZU1hZ25pZmljYXRpb25HZXN0dXJlOihCT09MKXNob3VsZEhhbmRs
ZU1hZ25pZmljYXRpb25HZXN0dXJlCit7CisgICAgX2RhdGEtPl9zaG91bGRIYW5kbGVNYWduaWZp
Y2F0aW9uR2VzdHVyZSA9IHNob3VsZEhhbmRsZU1hZ25pZmljYXRpb25HZXN0dXJlOworfQorCist
IChCT09MKXNob3VsZEhhbmRsZU1hZ25pZmljYXRpb25HZXN0dXJlCit7CisgICAgcmV0dXJuIF9k
YXRhLT5fc2hvdWxkSGFuZGxlTWFnbmlmaWNhdGlvbkdlc3R1cmU7Cit9CisKKy0gKHZvaWQpbWFn
bmlmeVdpdGhFdmVudDooTlNFdmVudCAqKWV2ZW50Cit7CisgICAgaWYgKCFfZGF0YS0+X3Nob3Vs
ZEhhbmRsZU1hZ25pZmljYXRpb25HZXN0dXJlKQorICAgICAgICByZXR1cm47CisKKyAgICBbc2Vs
ZiBfZW5zdXJlR2VzdHVyZUNvbnRyb2xsZXJdOworCisgICAgX2RhdGEtPl9nZXN0dXJlQ29udHJv
bGxlci0+aGFuZGxlTWFnbmlmaWNhdGlvbkdlc3R1cmUoZXZlbnQubWFnbmlmaWNhdGlvbiwgW3Nl
bGYgY29udmVydFBvaW50OmV2ZW50LmxvY2F0aW9uSW5XaW5kb3cgZnJvbVZpZXc6bmlsXSk7Cit9
CisKKy0odm9pZCllbmRHZXN0dXJlV2l0aEV2ZW50OihOU0V2ZW50ICopZXZlbnQKK3sKKyAgICBp
ZiAoIV9kYXRhLT5fZ2VzdHVyZUNvbnRyb2xsZXIpCisgICAgICAgIHJldHVybjsKKworICAgIF9k
YXRhLT5fZ2VzdHVyZUNvbnRyb2xsZXItPmVuZEFjdGl2ZUdlc3R1cmUoKTsKK30KKwogQGVuZAog
CiBAaW1wbGVtZW50YXRpb24gV0tSZXNwb25kZXJDaGFpblNpbmsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9EcmF3aW5nQXJlYVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvRHJhd2luZ0FyZWFQcm94eS5oCmluZGV4IDMzNGRmMzcuLjA3NjU5Y2QgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9EcmF3aW5nQXJlYVByb3h5LmgKKysrIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0RyYXdpbmdBcmVhUHJveHkuaApAQCAtNzAsNiArNzAs
MTAgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBjb2xvclNwYWNlRGlkQ2hhbmdlKCkgeyB9
CiAgICAgdmlydHVhbCB2b2lkIG1pbmltdW1MYXlvdXRTaXplRGlkQ2hhbmdlKCkgeyB9CiAKKyAg
ICB2aXJ0dWFsIHZvaWQgYmVnaW5UcmFuc2llbnRab29tKCkgeyB9CisgICAgdmlydHVhbCB2b2lk
IGFkanVzdFRyYW5zaWVudFpvb20oZG91YmxlIHNjYWxlLCBXZWJDb3JlOjpGbG9hdFBvaW50IG9y
aWdpbikgeyB9CisgICAgdmlydHVhbCB2b2lkIGVuZFRyYW5zaWVudFpvb20oZG91YmxlIHNjYWxl
LCBXZWJDb3JlOjpGbG9hdFBvaW50IG9yaWdpbikgeyB9CisKIHByb3RlY3RlZDoKICAgICBleHBs
aWNpdCBEcmF3aW5nQXJlYVByb3h5KERyYXdpbmdBcmVhVHlwZSwgV2ViUGFnZVByb3h5Kik7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9WaWV3R2VzdHVyZUNvbnRyb2xs
ZXIuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1ZpZXdHZXN0dXJlQ29udHJvbGxlci5j
cHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjliMDY2ZgotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9WaWV3R2VzdHVyZUNvbnRyb2xsZXIu
Y3BwCkBAIC0wLDAgKzEsMTQ5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisg
KiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICog
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAiY29uZmlnLmgiCisj
aW1wb3J0ICJWaWV3R2VzdHVyZUNvbnRyb2xsZXIuaCIKKworI2ltcG9ydCAiVmlld0dlc3R1cmVD
b250cm9sbGVyTWVzc2FnZXMuaCIKKyNpbXBvcnQgIldlYlBhZ2VQcm94eS5oIgorI2ltcG9ydCAi
V2ViUHJvY2Vzc1Byb3h5LmgiCisKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOworCitzdGF0aWMg
Y29uc3QgQ0dGbG9hdCBtaW5NYWduaWZpY2F0aW9uID0gMC43NTsKK3N0YXRpYyBjb25zdCBDR0Zs
b2F0IG1heE1hZ25pZmljYXRpb24gPSAzOworCitzdGF0aWMgY29uc3QgQ0dGbG9hdCB6b29tT3V0
Qm9vc3QgPSAxLjY7CitzdGF0aWMgY29uc3QgQ0dGbG9hdCB6b29tT3V0UmVzaXN0YW5jZSA9IDAu
MTA7CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitzdGQ6OnVuaXF1ZV9wdHI8Vmlld0dlc3R1cmVD
b250cm9sbGVyPiBWaWV3R2VzdHVyZUNvbnRyb2xsZXI6OmNyZWF0ZShXZWJQYWdlUHJveHkqIHdl
YlBhZ2VQcm94eSkKK3sKKyAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxWaWV3R2VzdHVyZUNv
bnRyb2xsZXI+KHdlYlBhZ2VQcm94eSk7Cit9CisKK1ZpZXdHZXN0dXJlQ29udHJvbGxlcjo6Vmll
d0dlc3R1cmVDb250cm9sbGVyKFdlYlBhZ2VQcm94eSogd2ViUGFnZVByb3h5KQorICAgIDogbV9h
Y3RpdmVHZXN0dXJlVHlwZShWaWV3R2VzdHVyZVR5cGU6Ok5vbmUpCisgICAgLCBtX3Zpc2libGVD
b250ZW50UmVjdElzVmFsaWQoZmFsc2UpCisgICAgLCBtX3dlYlBhZ2VQcm94eSh3ZWJQYWdlUHJv
eHkpCit7CisgICAgbV93ZWJQYWdlUHJveHktPnByb2Nlc3MoKS5hZGRNZXNzYWdlUmVjZWl2ZXIo
TWVzc2FnZXM6OlZpZXdHZXN0dXJlQ29udHJvbGxlcjo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBt
X3dlYlBhZ2VQcm94eS0+cGFnZUlEKCksIHRoaXMpOworfQorCitWaWV3R2VzdHVyZUNvbnRyb2xs
ZXI6On5WaWV3R2VzdHVyZUNvbnRyb2xsZXIoKQoreworICAgIG1fd2ViUGFnZVByb3h5LT5wcm9j
ZXNzKCkucmVtb3ZlTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpWaWV3R2VzdHVyZUNvbnRyb2xs
ZXI6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgbV93ZWJQYWdlUHJveHktPnBhZ2VJRCgpKTsKK30K
Kworc3RhdGljIGRvdWJsZSByZXNpc3RhbmNlRm9yRGVsdGEoZG91YmxlIGRlbHRhU2NhbGUsIGRv
dWJsZSBjdXJyZW50U2NhbGUpCit7CisgICAgLy8gWm9vbSBpbiB3aXRoIG5vIGFjY2VsZXJhdGlv
bi4KKyAgICAvLyBGSVhNRTogU2hvdWxkIGhhdmUgcmVzaXN0YW5jZSB3aGVuIHpvb21pbmcgaW4g
cGFzdCB0aGUgbGltaXQuCisgICAgaWYgKGRlbHRhU2NhbGUgPiAwKQorICAgICAgICByZXR1cm4g
MTsKKworICAgIC8vIFpvb20gb3V0IHdpdGggc2xpZ2h0IGFjY2VsZXJhdGlvbiwgdW50aWwgd2Ug
cmVhY2ggdW5pdCBzY2FsZS4KKyAgICBpZiAoY3VycmVudFNjYWxlID4gMSkKKyAgICAgICAgcmV0
dXJuIHpvb21PdXRCb29zdDsKKworICAgIC8vIEJleW9uZCBzY2FsZT0xLCByZXNpc3Qgem9vbWlu
ZyBvdXQuCisgICAgZG91YmxlIHNjYWxlRGlzdGFuY2UgPSBtaW5NYWduaWZpY2F0aW9uIC0gY3Vy
cmVudFNjYWxlOworICAgIGRvdWJsZSBzY2FsZVBlcmNlbnQgPSBzdGQ6Om1pbihzdGQ6Om1heChz
Y2FsZURpc3RhbmNlIC8gbWluTWFnbmlmaWNhdGlvbiwgMC4pLCAxLik7CisgICAgZG91YmxlIHJl
c2lzdGFuY2UgPSB6b29tT3V0UmVzaXN0YW5jZSArIHNjYWxlUGVyY2VudCAqICgwLjAxIC0gem9v
bU91dFJlc2lzdGFuY2UpOworCisgICAgcmV0dXJuIHJlc2lzdGFuY2U7Cit9CisKK0Zsb2F0UG9p
bnQgVmlld0dlc3R1cmVDb250cm9sbGVyOjpzY2FsZWRNYWduaWZpY2F0aW9uT3JpZ2luKEZsb2F0
UG9pbnQgb3JpZ2luLCBkb3VibGUgc2NhbGUpCit7CisgICAgRmxvYXRQb2ludCBzY2FsZWRNYWdu
aWZpY2F0aW9uT3JpZ2luKG9yaWdpbik7CisgICAgc2NhbGVkTWFnbmlmaWNhdGlvbk9yaWdpbi5t
b3ZlQnkobV92aXNpYmxlQ29udGVudFJlY3QubG9jYXRpb24oKSk7CisgICAgZmxvYXQgbWFnbmlm
aWNhdGlvbk9yaWdpblNjYWxlID0gMSAtIChzY2FsZSAvIG1fd2ViUGFnZVByb3h5LT5wYWdlU2Nh
bGVGYWN0b3IoKSk7CisgICAgc2NhbGVkTWFnbmlmaWNhdGlvbk9yaWdpbi5zY2FsZShtYWduaWZp
Y2F0aW9uT3JpZ2luU2NhbGUsIG1hZ25pZmljYXRpb25PcmlnaW5TY2FsZSk7CisgICAgcmV0dXJu
IHNjYWxlZE1hZ25pZmljYXRpb25PcmlnaW47Cit9CisKK3ZvaWQgVmlld0dlc3R1cmVDb250cm9s
bGVyOjpkaWRCZWdpblRyYW5zaWVudFpvb20oRmxvYXRSZWN0IHZpc2libGVDb250ZW50UmVjdCkK
K3sKKyAgICBtX2FjdGl2ZUdlc3R1cmVUeXBlID0gVmlld0dlc3R1cmVUeXBlOjpNYWduaWZpY2F0
aW9uOworICAgIG1fdmlzaWJsZUNvbnRlbnRSZWN0ID0gdmlzaWJsZUNvbnRlbnRSZWN0OworICAg
IG1fdmlzaWJsZUNvbnRlbnRSZWN0SXNWYWxpZCA9IHRydWU7Cit9CisKK3ZvaWQgVmlld0dlc3R1
cmVDb250cm9sbGVyOjpoYW5kbGVNYWduaWZpY2F0aW9uR2VzdHVyZShkb3VibGUgc2NhbGUsIEZs
b2F0UG9pbnQgb3JpZ2luKQoreworICAgIEFTU0VSVChtX2FjdGl2ZUdlc3R1cmVUeXBlID09IFZp
ZXdHZXN0dXJlVHlwZTo6Tm9uZSB8fCBtX2FjdGl2ZUdlc3R1cmVUeXBlID09IFZpZXdHZXN0dXJl
VHlwZTo6TWFnbmlmaWNhdGlvbik7CisKKyAgICBpZiAobV9hY3RpdmVHZXN0dXJlVHlwZSA9PSBW
aWV3R2VzdHVyZVR5cGU6Ok5vbmUpIHsKKyAgICAgICAgLy8gRklYTUU6IFdlIGRyb3AgdGhlIGZp
cnN0IGZyYW1lIG9mIHRoZSBnZXN0dXJlIG9uIHRoZSBmbG9vciwgYmVjYXVzZSB3ZSBkb24ndCBo
YXZlIHRoZSB2aXNpYmxlIGNvbnRlbnQgYm91bmRzIHlldC4KKyAgICAgICAgbV9tYWduaWZpY2F0
aW9uID0gbV93ZWJQYWdlUHJveHktPnBhZ2VTY2FsZUZhY3RvcigpOworICAgICAgICBtX3dlYlBh
Z2VQcm94eS0+ZHJhd2luZ0FyZWEoKS0+YmVnaW5UcmFuc2llbnRab29tKCk7CisgICAgICAgIHJl
dHVybjsKKyAgICB9CisKKyAgICAvLyBXZSdyZSBzdGlsbCB3YWl0aW5nIGZvciB0aGUgRGlkQmVn
aW5UcmFuc2llbnRab29tIGNhbGxiYWNrLgorICAgIGlmICghbV92aXNpYmxlQ29udGVudFJlY3RJ
c1ZhbGlkKQorICAgICAgICByZXR1cm47CisKKyAgICBkb3VibGUgc2NhbGVXaXRoUmVzaXN0YW5j
ZSA9IHJlc2lzdGFuY2VGb3JEZWx0YShzY2FsZSwgbV9tYWduaWZpY2F0aW9uKSAqIHNjYWxlOwor
CisgICAgbV9tYWduaWZpY2F0aW9uICs9IG1fbWFnbmlmaWNhdGlvbiAqIHNjYWxlV2l0aFJlc2lz
dGFuY2U7CisgICAgbV9tYWduaWZpY2F0aW9uID0gc3RkOjptaW4oc3RkOjptYXgobV9tYWduaWZp
Y2F0aW9uLCBtaW5NYWduaWZpY2F0aW9uKSwgbWF4TWFnbmlmaWNhdGlvbik7CisKKyAgICBtX21h
Z25pZmljYXRpb25PcmlnaW4gPSBvcmlnaW47CisKKyAgICBtX3dlYlBhZ2VQcm94eS0+ZHJhd2lu
Z0FyZWEoKS0+YWRqdXN0VHJhbnNpZW50Wm9vbShtX21hZ25pZmljYXRpb24sIHNjYWxlZE1hZ25p
ZmljYXRpb25PcmlnaW4ob3JpZ2luLCBtX21hZ25pZmljYXRpb24pKTsKKworICAgIG1fYWN0aXZl
R2VzdHVyZVR5cGUgPSBWaWV3R2VzdHVyZVR5cGU6Ok1hZ25pZmljYXRpb247Cit9CisKK3ZvaWQg
Vmlld0dlc3R1cmVDb250cm9sbGVyOjplbmRNYWduaWZpY2F0aW9uR2VzdHVyZSgpCit7CisgICAg
QVNTRVJUKG1fYWN0aXZlR2VzdHVyZVR5cGUgPT0gVmlld0dlc3R1cmVUeXBlOjpNYWduaWZpY2F0
aW9uKTsKKworICAgIC8vIEZJWE1FOiBTaG91bGQgcnViYmVyLWJhbmQgYmFjayB3aGVuIHpvb21l
ZCBpbiBvciBvdXQgcGFzdCB0aGUgbGltaXQuCisgICAgZG91YmxlIG5ld01hZ25pZmljYXRpb24g
PSBzdGQ6Om1heChtX21hZ25pZmljYXRpb24sIDEuKTsKKworICAgIEZsb2F0UG9pbnQgc2NhbGVk
T3JpZ2luID0gc2NhbGVkTWFnbmlmaWNhdGlvbk9yaWdpbihtX21hZ25pZmljYXRpb25PcmlnaW4s
IG5ld01hZ25pZmljYXRpb24pOworICAgIHNjYWxlZE9yaWdpbi5tb3ZlQnkoLW1fdmlzaWJsZUNv
bnRlbnRSZWN0LmxvY2F0aW9uKCkpOworCisgICAgbV93ZWJQYWdlUHJveHktPmRyYXdpbmdBcmVh
KCktPmVuZFRyYW5zaWVudFpvb20obmV3TWFnbmlmaWNhdGlvbiwgLXNjYWxlZE9yaWdpbik7Cit9
CisKK3ZvaWQgVmlld0dlc3R1cmVDb250cm9sbGVyOjplbmRBY3RpdmVHZXN0dXJlKCkKK3sKKyAg
ICBzd2l0Y2ggKG1fYWN0aXZlR2VzdHVyZVR5cGUpIHsKKyAgICBjYXNlIFZpZXdHZXN0dXJlVHlw
ZTo6Tm9uZToKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBWaWV3R2VzdHVyZVR5cGU6Ok1hZ25p
ZmljYXRpb246CisgICAgICAgIGVuZE1hZ25pZmljYXRpb25HZXN0dXJlKCk7CisgICAgfQorCisg
ICAgbV92aXNpYmxlQ29udGVudFJlY3RJc1ZhbGlkID0gZmFsc2U7CisgICAgbV9hY3RpdmVHZXN0
dXJlVHlwZSA9IFZpZXdHZXN0dXJlVHlwZTo6Tm9uZTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2Vi
S2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvVmlld0dlc3R1cmVDb250
cm9sbGVyLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvVmlld0dlc3R1cmVDb250cm9sbGVy
LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2NjYzAyYwotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9WaWV3R2VzdHVyZUNvbnRyb2xsZXIu
aApAQCAtMCwwICsxLDc1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBWaWV3R2VzdHVyZUNvbnRy
b2xsZXJfaAorI2RlZmluZSBWaWV3R2VzdHVyZUNvbnRyb2xsZXJfaAorCisjaW5jbHVkZSAiTWVz
c2FnZVJlY2VpdmVyLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9GbG9hdFJlY3QuaD4KKworbmFtZXNw
YWNlIFdlYktpdCB7CisKK2NsYXNzIFdlYlBhZ2VQcm94eTsKKworY2xhc3MgVmlld0dlc3R1cmVD
b250cm9sbGVyIDogcHJpdmF0ZSBDb3JlSVBDOjpNZXNzYWdlUmVjZWl2ZXIgeworICAgIFdURl9N
QUtFX05PTkNPUFlBQkxFKFZpZXdHZXN0dXJlQ29udHJvbGxlcik7CitwdWJsaWM6CisgICAgc3Rh
dGljIHN0ZDo6dW5pcXVlX3B0cjxWaWV3R2VzdHVyZUNvbnRyb2xsZXI+IGNyZWF0ZShXZWJQYWdl
UHJveHkqKTsKKworICAgIFZpZXdHZXN0dXJlQ29udHJvbGxlcihXZWJQYWdlUHJveHkqKTsKKyAg
ICB+Vmlld0dlc3R1cmVDb250cm9sbGVyKCk7CisKKyAgICB2b2lkIGhhbmRsZU1hZ25pZmljYXRp
b25HZXN0dXJlKGRvdWJsZSBzY2FsZSwgV2ViQ29yZTo6RmxvYXRQb2ludCBvcmlnaW4pOworCisg
ICAgdm9pZCBlbmRBY3RpdmVHZXN0dXJlKCk7CisKKyAgICBlbnVtIGNsYXNzIFZpZXdHZXN0dXJl
VHlwZSB7CisgICAgICAgIE5vbmUsCisgICAgICAgIE1hZ25pZmljYXRpb24sCisgICAgfTsKKwor
cHJpdmF0ZToKKyAgICAvLyBDb3JlSVBDOjpNZXNzYWdlUmVjZWl2ZXIuCisgICAgdmlydHVhbCB2
b2lkIGRpZFJlY2VpdmVNZXNzYWdlKENvcmVJUEM6OkNvbm5lY3Rpb24qLCBDb3JlSVBDOjpNZXNz
YWdlRGVjb2RlciYpIE9WRVJSSURFOworCisgICAgLy8gTWVzc2FnZSBoYW5kbGVycy4KKyAgICB2
b2lkIGRpZEJlZ2luVHJhbnNpZW50Wm9vbShXZWJDb3JlOjpGbG9hdFJlY3QgdmlzaWJsZUNvbnRl
bnRCb3VuZHMpOworCisgICAgdm9pZCBlbmRNYWduaWZpY2F0aW9uR2VzdHVyZSgpOworICAgIFdl
YkNvcmU6OkZsb2F0UG9pbnQgc2NhbGVkTWFnbmlmaWNhdGlvbk9yaWdpbihXZWJDb3JlOjpGbG9h
dFBvaW50IG9yaWdpbiwgZG91YmxlIHNjYWxlKTsKKworICAgIFZpZXdHZXN0dXJlVHlwZSBtX2Fj
dGl2ZUdlc3R1cmVUeXBlOworCisgICAgZG91YmxlIG1fbWFnbmlmaWNhdGlvbjsKKyAgICBXZWJD
b3JlOjpGbG9hdFBvaW50IG1fbWFnbmlmaWNhdGlvbk9yaWdpbjsKKyAgICBXZWJDb3JlOjpGbG9h
dFJlY3QgbV92aXNpYmxlQ29udGVudFJlY3Q7CisgICAgYm9vbCBtX3Zpc2libGVDb250ZW50UmVj
dElzVmFsaWQ7CisKKyAgICBXZWJQYWdlUHJveHkqIG1fd2ViUGFnZVByb3h5OworfTsKKworfSAv
LyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBWaWV3R2VzdHVyZUNvbnRyb2xsZXJfaApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1ZpZXdHZXN0dXJlQ29udHJvbGxl
ci5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9WaWV3R2VzdHVyZUNvbnRy
b2xsZXIubWVzc2FnZXMuaW4KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzNj
OTdmNQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9WaWV3R2Vz
dHVyZUNvbnRyb2xsZXIubWVzc2FnZXMuaW4KQEAgLTAsMCArMSwyNSBAQAorIyBDb3B5cmlnaHQg
KEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisjIGFyZSBtZXQ6CisjIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAyLiAg
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyMgICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisjCisjIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycgQU5ECisjIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisjIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyMg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IKKyMgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAorIyBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUgor
IyBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUgorIyBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLAorIyBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQorIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCittZXNzYWdlcyAtPiBWaWV3R2VzdHVyZUNvbnRy
b2xsZXIgeworICAgIERpZEJlZ2luVHJhbnNpZW50Wm9vbShXZWJDb3JlOjpGbG9hdFJlY3Qgdmlz
aWJsZUNvbnRlbnRCb3VuZHMpCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvbWFjL1RpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhUHJveHkuaCBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9tYWMvVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWFQcm94eS5oCmlu
ZGV4IGNiODM1NWYuLmYxZGQzMzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9tYWMvVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWFQcm94eS5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9tYWMvVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWFQcm94eS5o
CkBAIC01MCw2ICs1MCwxMCBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCBleGl0QWNjZWxl
cmF0ZWRDb21wb3NpdGluZ01vZGUodWludDY0X3QgYmFja2luZ1N0b3JlU3RhdGVJRCwgY29uc3Qg
VXBkYXRlSW5mbyYpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVBY2NlbGVyYXRl
ZENvbXBvc2l0aW5nTW9kZSh1aW50NjRfdCBiYWNraW5nU3RvcmVTdGF0ZUlELCBjb25zdCBMYXll
clRyZWVDb250ZXh0JikgT1ZFUlJJREU7CiAKKyAgICB2aXJ0dWFsIHZvaWQgYmVnaW5UcmFuc2ll
bnRab29tKCkgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIGFkanVzdFRyYW5zaWVudFpvb20o
ZG91YmxlIHNjYWxlLCBXZWJDb3JlOjpGbG9hdFBvaW50IG9yaWdpbikgT1ZFUlJJREU7CisgICAg
dmlydHVhbCB2b2lkIGVuZFRyYW5zaWVudFpvb20oZG91YmxlIHNjYWxlLCBXZWJDb3JlOjpGbG9h
dFBvaW50IG9yaWdpbikgT1ZFUlJJREU7CisKICAgICAvLyBNZXNzYWdlIGhhbmRsZXJzLgogICAg
IHZpcnR1YWwgdm9pZCBkaWRVcGRhdGVHZW9tZXRyeSgpIE9WRVJSSURFOwogICAgIHZpcnR1YWwg
dm9pZCBpbnRyaW5zaWNDb250ZW50U2l6ZURpZENoYW5nZShjb25zdCBXZWJDb3JlOjpJbnRTaXpl
JiBuZXdJbnRyaW5zaWNDb250ZW50U2l6ZSkgT1ZFUlJJREU7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1RpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhUHJveHku
bW0gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1RpbGVkQ29yZUFuaW1hdGlvbkRyYXdp
bmdBcmVhUHJveHkubW0KaW5kZXggMTEyZjBhYS4uNTM0YjU4MyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL21hYy9UaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYVByb3h5
Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvVGlsZWRDb3JlQW5pbWF0aW9u
RHJhd2luZ0FyZWFQcm94eS5tbQpAQCAtMTQ4LDYgKzE0OCwyMSBAQCB2b2lkIFRpbGVkQ29yZUFu
aW1hdGlvbkRyYXdpbmdBcmVhUHJveHk6OnNlbmRVcGRhdGVHZW9tZXRyeSgpCiAgICAgbV9pc1dh
aXRpbmdGb3JEaWRVcGRhdGVHZW9tZXRyeSA9IHRydWU7CiB9CiAKK3ZvaWQgVGlsZWRDb3JlQW5p
bWF0aW9uRHJhd2luZ0FyZWFQcm94eTo6YmVnaW5UcmFuc2llbnRab29tKCkKK3sKKyAgICBtX3dl
YlBhZ2VQcm94eS0+cHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OkRyYXdpbmdBcmVhOjpCZWdpblRy
YW5zaWVudFpvb20oKSwgbV93ZWJQYWdlUHJveHktPnBhZ2VJRCgpKTsKK30KKwordm9pZCBUaWxl
ZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYVByb3h5OjphZGp1c3RUcmFuc2llbnRab29tKGRvdWJs
ZSBzY2FsZSwgRmxvYXRQb2ludCBvcmlnaW4pCit7CisgICAgbV93ZWJQYWdlUHJveHktPnByb2Nl
c3MoKS5zZW5kKE1lc3NhZ2VzOjpEcmF3aW5nQXJlYTo6QWRqdXN0VHJhbnNpZW50Wm9vbShzY2Fs
ZSwgb3JpZ2luKSwgbV93ZWJQYWdlUHJveHktPnBhZ2VJRCgpKTsKK30KKwordm9pZCBUaWxlZENv
cmVBbmltYXRpb25EcmF3aW5nQXJlYVByb3h5OjplbmRUcmFuc2llbnRab29tKGRvdWJsZSBzY2Fs
ZSwgRmxvYXRQb2ludCBvcmlnaW4pCit7CisgICAgbV93ZWJQYWdlUHJveHktPnByb2Nlc3MoKS5z
ZW5kKE1lc3NhZ2VzOjpEcmF3aW5nQXJlYTo6RW5kVHJhbnNpZW50Wm9vbShzY2FsZSwgb3JpZ2lu
KSwgbV93ZWJQYWdlUHJveHktPnBhZ2VJRCgpKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0
CiAKICNlbmRpZiAvLyAhUExBVEZPUk0oSU9TKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
V2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYktpdDIvV2ViS2l0
Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGYxMDVjNjUuLmU3ZDRiN2IgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAg
LTM1Miw2ICszNTIsMTAgQEAKIAkJMjlDRDU1QUIxMjhFMjk0RjAwMTMzQzg1IC8qIFdLQWNjZXNz
aWJpbGl0eVdlYlBhZ2VPYmplY3QubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAyOUNENTVBOTEyOEUyOTRGMDAxMzNDODUgLyogV0tBY2Nlc3NpYmlsaXR5
V2ViUGFnZU9iamVjdC5tbSAqLzsgfTsKIAkJMjlENTVERjExNjFCRjlGMTAwMzFBMkUzIC8qIFdl
YlBhZ2VHcm91cFByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDI5RDU1REVGMTYxQkY5RjEwMDMxQTJFMyAvKiBXZWJQ
YWdlR3JvdXBQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAgKi87IH07CiAJCTI5RDU1REYyMTYxQkY5
RjEwMDMxQTJFMyAvKiBXZWJQYWdlR3JvdXBQcm94eU1lc3NhZ2VzLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyOUQ1NURGMDE2MUJGOUYxMDAzMUEyRTMg
LyogV2ViUGFnZUdyb3VwUHJveHlNZXNzYWdlcy5oICovOyB9OworCQkyRDEyNUM1RTE4NTdFQTA1
MDAzQkEzQ0IgLyogVmlld0dlc3R1cmVDb250cm9sbGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyRDEyNUM1QzE4NTdFQTA1MDAzQkEzQ0IgLyogVmll
d0dlc3R1cmVDb250cm9sbGVyLmggKi87IH07CisJCTJEMTI1QzVGMTg1N0VBMDUwMDNCQTNDQiAv
KiBWaWV3R2VzdHVyZUNvbnRyb2xsZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMkQxMjVDNUQxODU3RUEwNTAwM0JBM0NCIC8qIFZpZXdHZXN0dXJl
Q29udHJvbGxlci5jcHAgKi87IH07CisJCTJEMUI1RDVEMTg1ODY5QzgwMDZDNjU5NiAvKiBWaWV3
R2VzdHVyZUNvbnRyb2xsZXJNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkQxQjVENUIxODU4NjlDODAwNkM2NTk2IC8qIFZp
ZXdHZXN0dXJlQ29udHJvbGxlck1lc3NhZ2VSZWNlaXZlci5jcHAgKi87IH07CisJCTJEMUI1RDVF
MTg1ODY5QzgwMDZDNjU5NiAvKiBWaWV3R2VzdHVyZUNvbnRyb2xsZXJNZXNzYWdlcy5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkQxQjVENUMxODU4NjlD
ODAwNkM2NTk2IC8qIFZpZXdHZXN0dXJlQ29udHJvbGxlck1lc3NhZ2VzLmggKi87IH07CiAJCTJE
MkFERjA5MTYzNjJERDUwMDE5N0U0NyAvKiBQREZQbHVnaW5UZXh0QW5ub3RhdGlvbi5tbSBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJEMkFERjA2MTYzNjJE
QzcwMDE5N0U0NyAvKiBQREZQbHVnaW5UZXh0QW5ub3RhdGlvbi5tbSAqLzsgfTsKIAkJMkQyQURG
MEIxNjM2MkREQjAwMTk3RTQ3IC8qIFBERlBsdWdpbkFubm90YXRpb24ubW0gaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyRDJBREYwMzE2MzYyNDM1MDAxOTdF
NDcgLyogUERGUGx1Z2luQW5ub3RhdGlvbi5tbSAqLzsgfTsKIAkJMkQyQURGMTAxNjM2NEQ4MjAw
MTk3RTQ3IC8qIFBERlBsdWdpbkNob2ljZUFubm90YXRpb24ubW0gaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyRDJBREYwRTE2MzY0RDgyMDAxOTdFNDcgLyog
UERGUGx1Z2luQ2hvaWNlQW5ub3RhdGlvbi5tbSAqLzsgfTsKQEAgLTE4OTAsNiArMTg5NCwxMSBA
QAogCQkyOUQ1NURFRTE2MUJGODc4MDAzMUEyRTMgLyogV2ViUGFnZUdyb3VwUHJveHkubWVzc2Fn
ZXMuaW4gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0
ZXh0OyBwYXRoID0gV2ViUGFnZUdyb3VwUHJveHkubWVzc2FnZXMuaW47IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTI5RDU1REVGMTYxQkY5RjEwMDMxQTJFMyAvKiBXZWJQYWdlR3JvdXBQ
cm94eU1lc3NhZ2VSZWNlaXZlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBXZWJQYWdlR3JvdXBQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTI5RDU1REYwMTYxQkY5RjEwMDMxQTJFMyAvKiBXZWJQYWdlR3JvdXBQ
cm94eU1lc3NhZ2VzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYlBhZ2VH
cm91cFByb3h5TWVzc2FnZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMkQxMjVD
NUMxODU3RUEwNTAwM0JBM0NCIC8qIFZpZXdHZXN0dXJlQ29udHJvbGxlci5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBWaWV3R2VzdHVyZUNvbnRyb2xsZXIuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMkQxMjVDNUQxODU3RUEwNTAwM0JBM0NCIC8qIFZpZXdHZXN0
dXJlQ29udHJvbGxlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBW
aWV3R2VzdHVyZUNvbnRyb2xsZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQky
RDFCNUQ1QTE4NTg2NTk5MDA2QzY1OTYgLyogVmlld0dlc3R1cmVDb250cm9sbGVyLm1lc3NhZ2Vz
LmluICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4
dDsgcGF0aCA9IFZpZXdHZXN0dXJlQ29udHJvbGxlci5tZXNzYWdlcy5pbjsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJMkQxQjVENUIxODU4NjlDODAwNkM2NTk2IC8qIFZpZXdHZXN0dXJl
Q29udHJvbGxlck1lc3NhZ2VSZWNlaXZlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBWaWV3R2VzdHVyZUNvbnRyb2xsZXJNZXNzYWdlUmVjZWl2ZXIuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQkyRDFCNUQ1QzE4NTg2OUM4MDA2QzY1OTYgLyogVmll
d0dlc3R1cmVDb250cm9sbGVyTWVzc2FnZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gVmlld0dlc3R1cmVDb250cm9sbGVyTWVzc2FnZXMuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJMkQyQURGMDIxNjM2MjQzNTAwMTk3RTQ3IC8qIFBERlBsdWdpbkFubm90YXRp
b24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gUERGUGx1Z2luQW5ub3RhdGlv
bi5oOyBwYXRoID0gUERGL1BERlBsdWdpbkFubm90YXRpb24uaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJMkQyQURGMDMxNjM2MjQzNTAwMTk3RTQ3IC8qIFBERlBsdWdpbkFubm90YXRp
b24ubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IG5hbWUgPSBQREZQbHVnaW5B
bm5vdGF0aW9uLm1tOyBwYXRoID0gUERGL1BERlBsdWdpbkFubm90YXRpb24ubW07IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTJEMkFERjA1MTYzNjJEQzcwMDE5N0U0NyAvKiBQREZQbHVn
aW5UZXh0QW5ub3RhdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBQREZQ
bHVnaW5UZXh0QW5ub3RhdGlvbi5oOyBwYXRoID0gUERGL1BERlBsdWdpblRleHRBbm5vdGF0aW9u
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC00NDYxLDYgKzQ0NzAsOSBAQAogCQkJ
CTFBQTQxN0M5MTJDMDBDQ0EwMDJCRTY3QiAvKiBUZXh0Q2hlY2tlci5oICovLAogCQkJCTFCQjQx
N0M5MTJDMDBDQ0EwMDJCRTY3QiAvKiBUZXh0Q2hlY2tlckNvbXBsZXRpb24uY3BwICovLAogCQkJ
CTFDQzQxN0M5MTJDMDBDQ0EwMDJCRTY3QiAvKiBUZXh0Q2hlY2tlckNvbXBsZXRpb24uaCAqLywK
KwkJCQkyRDEyNUM1QzE4NTdFQTA1MDAzQkEzQ0IgLyogVmlld0dlc3R1cmVDb250cm9sbGVyLmgg
Ki8sCisJCQkJMkQxMjVDNUQxODU3RUEwNTAwM0JBM0NCIC8qIFZpZXdHZXN0dXJlQ29udHJvbGxl
ci5jcHAgKi8sCisJCQkJMkQxQjVENUExODU4NjU5OTAwNkM2NTk2IC8qIFZpZXdHZXN0dXJlQ29u
dHJvbGxlci5tZXNzYWdlcy5pbiAqLywKIAkJCQkxQTBGMjlFMTEyMEI0NDQyMDA1M0QxQjkgLyog
VmlzaXRlZExpbmtQcm92aWRlci5jcHAgKi8sCiAJCQkJMUEwRjI5RTIxMjBCNDQ0MjAwNTNEMUI5
IC8qIFZpc2l0ZWRMaW5rUHJvdmlkZXIuaCAqLywKIAkJCQk1MTJFMzUyMDEzMEI1NTAxMDBBQkQx
OUEgLyogV2ViQXBwbGljYXRpb25DYWNoZU1hbmFnZXJQcm94eS5jcHAgKi8sCkBAIC01NDI5LDYg
KzU0NDEsOCBAQAogCQkJCTFBMzM0REVDMTZERThGODgwMDZBOEUzOCAvKiBTdG9yYWdlQXJlYU1h
cE1lc3NhZ2VzLmggKi8sCiAJCQkJMUFCMzFBOTQxNkJDNjg4MTAwRjZEQkM5IC8qIFN0b3JhZ2VN
YW5hZ2VyTWVzc2FnZVJlY2VpdmVyLmNwcCAqLywKIAkJCQkxQUIzMUE5NTE2QkM2ODgxMDBGNkRC
QzkgLyogU3RvcmFnZU1hbmFnZXJNZXNzYWdlcy5oICovLAorCQkJCTJEMUI1RDVCMTg1ODY5Qzgw
MDZDNjU5NiAvKiBWaWV3R2VzdHVyZUNvbnRyb2xsZXJNZXNzYWdlUmVjZWl2ZXIuY3BwICovLAor
CQkJCTJEMUI1RDVDMTg1ODY5QzgwMDZDNjU5NiAvKiBWaWV3R2VzdHVyZUNvbnRyb2xsZXJNZXNz
YWdlcy5oICovLAogCQkJCTUxMkUzNTY4MTMwQjU3RjAwMEFCRDE5QSAvKiBXZWJBcHBsaWNhdGlv
bkNhY2hlTWFuYWdlck1lc3NhZ2VSZWNlaXZlci5jcHAgKi8sCiAJCQkJNTEyRTM1NjkxMzBCNTdG
MDAwQUJEMTlBIC8qIFdlYkFwcGxpY2F0aW9uQ2FjaGVNYW5hZ2VyTWVzc2FnZXMuaCAqLywKIAkJ
CQk1MTJFMzVGNjEzMEI2NDJFMDBBQkQxOUEgLyogV2ViQXBwbGljYXRpb25DYWNoZU1hbmFnZXJQ
cm94eU1lc3NhZ2VSZWNlaXZlci5jcHAgKi8sCkBAIC01NzIxLDYgKzU3MzUsNyBAQAogCQkJCTFB
MjRCNUYzMTFGNTMxRTgwMEMzODI2OSAvKiBNYWNoVXRpbGl0aWVzLmggaW4gSGVhZGVycyAqLywK
IAkJCQkxQTIzMjkwMzE2MkM4NjczMDBEODJGN0EgLyogTWVzc2FnZURlY29kZXIuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTUxRkNCMTg2MTdCQkZFMDMwMDM5NENEOCAvKiBBc3luY2hyb25vdXNOZXR3
b3JrTG9hZGVyQ2xpZW50LmggaW4gSGVhZGVycyAqLywKKwkJCQkyRDFCNUQ1RTE4NTg2OUM4MDA2
QzY1OTYgLyogVmlld0dlc3R1cmVDb250cm9sbGVyTWVzc2FnZXMuaCBpbiBIZWFkZXJzICovLAog
CQkJCTFBMjMyOEZGMTYyQzg2NkEwMEQ4MkY3QSAvKiBNZXNzYWdlRW5jb2Rlci5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJMUFDNEM4MjkxNkI4NzZBOTAwNjlEQ0NEIC8qIE1lc3NhZ2VGbGFncy5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJMUFFMDBENkMxODMyN0MxMjAwMDg3REQ3IC8qIFN0cmluZ1JlZmVy
ZW5jZS5oIGluIEhlYWRlcnMgKi8sCkBAIC01OTY2LDYgKzU5ODEsNyBAQAogCQkJCUJDOUJBNTA1
MTY5N0M0NTMwMEU0NDYxNiAvKiBXZWJLaXQySW5pdGlhbGl6ZS5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJQkM1OTUzNDIxMEZDMDQ1MjAwOThGODJEIC8qIFdlYkxvYWRlckNsaWVudC5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJMzNEM0EzQzIxMzM5NjBCMDAwNzA5QkU0IC8qIFdlYk1lZGlhQ2FjaGVNYW5h
Z2VyLmggaW4gSGVhZGVycyAqLywKKwkJCQkyRDEyNUM1RTE4NTdFQTA1MDAzQkEzQ0IgLyogVmll
d0dlc3R1cmVDb250cm9sbGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQkzM0QzQTNDOTEzMzk2MTc5
MDA3MDlCRTQgLyogV2ViTWVkaWFDYWNoZU1hbmFnZXJNZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJMzdDNEMwOEQxODE0QUM1QzAwMzY4OEI5IC8qIFdLQmFja0ZvcndhcmRMaXN0LmggaW4g
SGVhZGVycyAqLywKIAkJCQkzNzFBMTk0MjE4MjREMjkzMDBGMzJBNUUgLyogV0tOU0RpY3Rpb25h
cnkuaCBpbiBIZWFkZXJzICovLApAQCAtNzIyOCw2ICs3MjQ0LDcgQEAKIAkJCQlCQ0QzNjc1QzE0
OEMyNkMwMDA0NDdFODcgLyogV2ViQ29ubmVjdGlvblRvVUlQcm9jZXNzLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCUJDNEE2MkE3MTQ3NDRFQzcwMDZDNjgxQSAvKiBXZWJDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUJDODI4MzY1MTZCMzU0RjYwMEEyNzhGRSAv
KiBXZWJDb250ZW50UHJvY2Vzc01haW4ubW0gaW4gU291cmNlcyAqLywKKwkJCQkyRDEyNUM1RjE4
NTdFQTA1MDAzQkEzQ0IgLyogVmlld0dlc3R1cmVDb250cm9sbGVyLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCUJDODI4Mzk5MTZCNDhEQzAwMEEyNzhGRSAvKiBXZWJDb250ZW50U2VydmljZUVudHJ5
UG9pbnQubW0gaW4gU291cmNlcyAqLywKIAkJCQlCQ0I5RTI0NDExMjBEQUNBMDBBMTM3RTAgLyog
V2ViQ29udGV4dC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkzMUE1MDVGOTE2ODAwMjU1MDBBOTMw
RUIgLyogV2ViQ29udGV4dENsaWVudC5jcHAgaW4gU291cmNlcyAqLywKQEAgLTc0OTAsNiArNzUw
Nyw3IEBACiAJCQkJQkNCQUFDRUMxNDUyMjVFMzAwNTNGODJGIC8qIFdLUHJvY2Vzc0dyb3VwLm1t
IGluIFNvdXJjZXMgKi8sCiAJCQkJNTEyRjU4RkIxMkE4OEE1NDAwNjI5NTMwIC8qIFdLUHJvdGVj
dGlvblNwYWNlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTM3OTQ4NDA4MTUwQzRCOTcwMEU1MkNF
OSAvKiBXS1JlbmRlckxheWVyLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTJEMUI1RDVEMTg1ODY5
QzgwMDZDNjU5NiAvKiBWaWV3R2VzdHVyZUNvbnRyb2xsZXJNZXNzYWdlUmVjZWl2ZXIuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJMzc2MDg4MjIxNTA0MTRGNzAwRkM4MkM3IC8qIFdLUmVuZGVyT2Jq
ZWN0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTMzMzY3NjNBMTMwQzk5REMwMDZDOURFMiAvKiBX
S1Jlc291cmNlQ2FjaGVNYW5hZ2VyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUY2MzQ0NDVDMTJB
ODg1RTkwMDA2MTJEOCAvKiBXS1NlY3VyaXR5T3JpZ2luLmNwcCBpbiBTb3VyY2VzICovLApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0RyYXdpbmdBcmVhLmgg
Yi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvRHJhd2luZ0FyZWEuaAppbmRleCBh
ZTU4ZGI2Li5mNjY4NzIyMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJQYWdlL0RyYXdpbmdBcmVhLmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQ
YWdlL0RyYXdpbmdBcmVhLmgKQEAgLTEyNiw2ICsxMjYsMTAgQEAgcHJpdmF0ZToKICAgICB2aXJ0
dWFsIHZvaWQgdXBkYXRlR2VvbWV0cnkoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgdmlld1NpemUs
IGNvbnN0IFdlYkNvcmU6OkludFNpemUmIGxheWVyUG9zaXRpb24pIHsgfQogICAgIHZpcnR1YWwg
dm9pZCBzZXREZXZpY2VTY2FsZUZhY3RvcihmbG9hdCkgeyB9CiAgICAgdmlydHVhbCB2b2lkIHNl
dENvbG9yU3BhY2UoY29uc3QgQ29sb3JTcGFjZURhdGEmKSB7IH0KKworICAgIHZpcnR1YWwgdm9p
ZCBiZWdpblRyYW5zaWVudFpvb20oKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgYWRqdXN0VHJhbnNp
ZW50Wm9vbShkb3VibGUgc2NhbGUsIFdlYkNvcmU6OkZsb2F0UG9pbnQgb3JpZ2luKSB7IH0KKyAg
ICB2aXJ0dWFsIHZvaWQgZW5kVHJhbnNpZW50Wm9vbShkb3VibGUgc2NhbGUsIFdlYkNvcmU6OkZs
b2F0UG9pbnQgb3JpZ2luKSB7IH0KICNlbmRpZgogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0RyYXdpbmdBcmVhLm1lc3NhZ2VzLmluIGIvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0RyYXdpbmdBcmVhLm1lc3NhZ2VzLmluCmluZGV4
IDY2NDFkNTEuLmIxNGNiZmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViUGFnZS9EcmF3aW5nQXJlYS5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYlBhZ2UvRHJhd2luZ0FyZWEubWVzc2FnZXMuaW4KQEAgLTMwLDUgKzMwLDkgQEAg
bWVzc2FnZXMgLT4gRHJhd2luZ0FyZWEgTGVnYWN5UmVjZWl2ZXIgewogICAgIFVwZGF0ZUdlb21l
dHJ5KFdlYkNvcmU6OkludFNpemUgdmlld1NpemUsIFdlYkNvcmU6OkludFNpemUgbGF5ZXJQb3Np
dGlvbikKICAgICBTZXREZXZpY2VTY2FsZUZhY3RvcihmbG9hdCBkZXZpY2VTY2FsZUZhY3RvcikK
ICAgICBTZXRDb2xvclNwYWNlKFdlYktpdDo6Q29sb3JTcGFjZURhdGEgY29sb3JTcGFjZSkKKyAg
ICAKKyAgICBCZWdpblRyYW5zaWVudFpvb20oKQorICAgIEFkanVzdFRyYW5zaWVudFpvb20oZG91
YmxlIHNjYWxlLCBXZWJDb3JlOjpGbG9hdFBvaW50IG9yaWdpbikKKyAgICBFbmRUcmFuc2llbnRa
b29tKGRvdWJsZSBzY2FsZSwgV2ViQ29yZTo6RmxvYXRQb2ludCBvcmlnaW4pCiAjZW5kaWYKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvVGlsZWRD
b3JlQW5pbWF0aW9uRHJhd2luZ0FyZWEuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
UGFnZS9tYWMvVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWEuaAppbmRleCA2NDdlNWFjLi4z
ZjUzZjI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFj
L1RpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhLmgKKysrIGIvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJQYWdlL21hYy9UaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYS5oCkBAIC0x
MDQsNiArMTA0LDEwIEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIHNldExheWVySG9zdGlu
Z01vZGUodWludDMyX3QpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBzZXRDb2xvclNwYWNl
KGNvbnN0IENvbG9yU3BhY2VEYXRhJikgT1ZFUlJJREU7CiAKKyAgICB2aXJ0dWFsIHZvaWQgYmVn
aW5UcmFuc2llbnRab29tKCkgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIGFkanVzdFRyYW5z
aWVudFpvb20oZG91YmxlIHNjYWxlLCBXZWJDb3JlOjpGbG9hdFBvaW50IG9yaWdpbikgT1ZFUlJJ
REU7CisgICAgdmlydHVhbCB2b2lkIGVuZFRyYW5zaWVudFpvb20oZG91YmxlIHNjYWxlLCBXZWJD
b3JlOjpGbG9hdFBvaW50IG9yaWdpbikgT1ZFUlJJREU7CisKICAgICB2b2lkIHVwZGF0ZUxheWVy
SG9zdGluZ0NvbnRleHQoKTsKIAogICAgIHZvaWQgc2V0Um9vdENvbXBvc2l0aW5nTGF5ZXIoQ0FM
YXllciAqKTsKQEAgLTE0Myw2ICsxNDcsOCBAQCBwcml2YXRlOgogICAgIFdlYkNvcmU6OkludFNp
emUgbV9sYXN0U2VudEludHJpbnNpY0NvbnRlbnRTaXplOwogICAgIFdlYkNvcmU6OlRpbWVyPFRp
bGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhPiBtX3VwZGF0ZUludHJpbnNpY0NvbnRlbnRTaXpl
VGltZXI7CiAgICAgYm9vbCBtX2luVXBkYXRlR2VvbWV0cnk7CisKKyAgICBkb3VibGUgbV90cmFu
c2llbnRab29tU2NhbGU7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvVGlsZWRDb3JlQW5pbWF0aW9u
RHJhd2luZ0FyZWEubW0gYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1Rp
bGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhLm1tCmluZGV4IDc3Mjk0NzMuLjQwNTlkNmUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvVGlsZWRDb3Jl
QW5pbWF0aW9uRHJhd2luZ0FyZWEubW0KKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJQYWdlL21hYy9UaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYS5tbQpAQCAtMzIsNiArMzIs
NyBAQAogI2ltcG9ydCAiRHJhd2luZ0FyZWFQcm94eU1lc3NhZ2VzLmgiCiAjaW1wb3J0ICJMYXll
ckhvc3RpbmdDb250ZXh0LmgiCiAjaW1wb3J0ICJMYXllclRyZWVDb250ZXh0LmgiCisjaW1wb3J0
ICJWaWV3R2VzdHVyZUNvbnRyb2xsZXJNZXNzYWdlcy5oIgogI2ltcG9ydCAiV2ViRnJhbWUuaCIK
ICNpbXBvcnQgIldlYlBhZ2UuaCIKICNpbXBvcnQgIldlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMu
aCIKQEAgLTQzLDYgKzQ0LDggQEAKICNpbXBvcnQgPFdlYkNvcmUvR3JhcGhpY3NMYXllckNBLmg+
CiAjaW1wb3J0IDxXZWJDb3JlL01haW5GcmFtZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9QYWdlLmg+
CisjaW1wb3J0IDxXZWJDb3JlL1JlbmRlckxheWVyQmFja2luZy5oPgorI2ltcG9ydCA8V2ViQ29y
ZS9SZW5kZXJMYXllckNvbXBvc2l0b3IuaD4KICNpbXBvcnQgPFdlYkNvcmUvUmVuZGVyVmlldy5o
PgogI2ltcG9ydCA8V2ViQ29yZS9TZXR0aW5ncy5oPgogI2ltcG9ydCA8V2ViQ29yZS9UaWxlZEJh
Y2tpbmcuaD4KQEAgLTY5Nyw2ICs3MDAsNTQgQEAgYm9vbCBUaWxlZENvcmVBbmltYXRpb25EcmF3
aW5nQXJlYTo6c2hvdWxkVXNlVGlsZWRCYWNraW5nRm9yRnJhbWVWaWV3KGNvbnN0IEZyYW0KICAg
ICByZXR1cm4gZnJhbWVWaWV3ICYmIGZyYW1lVmlldy0+ZnJhbWUoKS5pc01haW5GcmFtZSgpOwog
fQogCit2b2lkIFRpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhOjpiZWdpblRyYW5zaWVudFpv
b20oKQoreworICAgIEZsb2F0UmVjdCB2aXNpYmxlQ29udGVudFJlY3QgPSBtX3dlYlBhZ2UtPmNv
cmVQYWdlKCktPm1haW5GcmFtZSgpLnZpZXcoKS0+dmlzaWJsZUNvbnRlbnRSZWN0KFNjcm9sbGFi
bGVBcmVhOjpJbmNsdWRlU2Nyb2xsYmFycyk7CisgICAgbV93ZWJQYWdlLT5zZW5kKE1lc3NhZ2Vz
OjpWaWV3R2VzdHVyZUNvbnRyb2xsZXI6OkRpZEJlZ2luVHJhbnNpZW50Wm9vbSh2aXNpYmxlQ29u
dGVudFJlY3QpKTsKK30KKwordm9pZCBUaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYTo6YWRq
dXN0VHJhbnNpZW50Wm9vbShkb3VibGUgc2NhbGUsIEZsb2F0UG9pbnQgb3JpZ2luKQoreworICAg
IC8vIEZJWE1FOiBTY3JvbGxiYXJzIHNob3VsZCBzdGF5IGluLXBsYWNlIGFuZCBjaGFuZ2UgaGVp
Z2h0IHdoaWxlIHpvb21pbmcuCisgICAgLy8gRklYTUU6IEtlZXAgYXJvdW5kIHBhZ2VTY2FsZT0x
IHRpbGVzIHNvIHdlIGNhbiB6b29tIG91dCB3aXRob3V0IGdhcHMuCisgICAgLy8gRklYTUU6IEJy
aW5nIGluIHVucGFyZW50ZWQtYnV0LXBhaW50ZWQgdGlsZXMgd2hlbiB6b29taW5nIG91dCwgdG8g
ZmlsbCBpbiBhbnkgZ2Fwcy4KKworICAgIGlmICghbV9yb290TGF5ZXIpCisgICAgICAgIHJldHVy
bjsKKworICAgIFJlbmRlclZpZXcqIHJlbmRlclZpZXcgPSBtX3dlYlBhZ2UtPmNvcmVQYWdlKCkt
Pm1haW5GcmFtZSgpLnZpZXcoKS0+cmVuZGVyVmlldygpOworCisgICAgVHJhbnNmb3JtYXRpb25N
YXRyaXggdHJhbnNmb3JtOworICAgIHRyYW5zZm9ybS50cmFuc2xhdGUob3JpZ2luLngoKSwgb3Jp
Z2luLnkoKSk7CisgICAgdHJhbnNmb3JtLnNjYWxlKHNjYWxlKTsKKworICAgIFBsYXRmb3JtQ0FM
YXllciogcmVuZGVyVmlld0xheWVyID0gc3RhdGljX2Nhc3Q8R3JhcGhpY3NMYXllckNBKj4ocmVu
ZGVyVmlldy0+bGF5ZXIoKS0+YmFja2luZygpLT5ncmFwaGljc0xheWVyKCkpLT5wbGF0Zm9ybUNB
TGF5ZXIoKTsKKyAgICByZW5kZXJWaWV3TGF5ZXItPnNldFRyYW5zZm9ybSh0cmFuc2Zvcm0pOwor
ICAgIHJlbmRlclZpZXdMYXllci0+c2V0QW5jaG9yUG9pbnQoRmxvYXRQb2ludDNEKCkpOworICAg
IHJlbmRlclZpZXdMYXllci0+c2V0UG9zaXRpb24oRmxvYXRQb2ludDNEKCkpOworCisgICAgLy8g
RklYTUU6IFdlIHNob3VsZCB0cmFuc2Zvcm0gdGhlIHNoYWRvdyBsYXllciBhcyB3ZWxsLCBpbnN0
ZWFkIG9mIGhpZGluZyBpdC4KKyAgICBQbGF0Zm9ybUNBTGF5ZXIqIHNoYWRvd0xheWVyID0gc3Rh
dGljX2Nhc3Q8R3JhcGhpY3NMYXllckNBKj4ocmVuZGVyVmlldy0+Y29tcG9zaXRvcigpLmxheWVy
Rm9yQ29udGVudFNoYWRvdygpKS0+cGxhdGZvcm1DQUxheWVyKCk7CisgICAgc2hhZG93TGF5ZXIt
PnNldEhpZGRlbih0cnVlKTsKKworICAgIG1fdHJhbnNpZW50Wm9vbVNjYWxlID0gc2NhbGU7Cit9
CisKK3ZvaWQgVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWE6OmVuZFRyYW5zaWVudFpvb20o
ZG91YmxlIHNjYWxlLCBGbG9hdFBvaW50IG9yaWdpbikKK3sKKyAgICBSZW5kZXJWaWV3KiByZW5k
ZXJWaWV3ID0gbV93ZWJQYWdlLT5jb3JlUGFnZSgpLT5tYWluRnJhbWUoKS52aWV3KCktPnJlbmRl
clZpZXcoKTsKKworICAgIC8vIElmIHRoZSBwYWdlIHNjYWxlIGlzIGFscmVhZHkgdGhlIHRhcmdl
dCBzY2FsZSwgc2NhbGVQYWdlKCkgd2lsbCBzaG9ydC1jaXJjdWl0CisgICAgLy8gYW5kIG5vdCBh
cHBseSB0aGUgdHJhbnNmb3JtLCBzbyB3ZSBjYW4ndCBjbGVhciBpdC4KKyAgICBpZiAobV90cmFu
c2llbnRab29tU2NhbGUgIT0gbV93ZWJQYWdlLT5wYWdlU2NhbGVGYWN0b3IoKSkKKyAgICAgICBz
dGF0aWNfY2FzdDxHcmFwaGljc0xheWVyQ0EqPihyZW5kZXJWaWV3LT5sYXllcigpLT5iYWNraW5n
KCktPmdyYXBoaWNzTGF5ZXIoKSktPnBsYXRmb3JtQ0FMYXllcigpLT5zZXRUcmFuc2Zvcm0oVHJh
bnNmb3JtYXRpb25NYXRyaXgoKSk7CisKKyAgICBQbGF0Zm9ybUNBTGF5ZXIqIHNoYWRvd0xheWVy
ID0gc3RhdGljX2Nhc3Q8R3JhcGhpY3NMYXllckNBKj4ocmVuZGVyVmlldy0+Y29tcG9zaXRvcigp
LmxheWVyRm9yQ29udGVudFNoYWRvdygpKS0+cGxhdGZvcm1DQUxheWVyKCk7CisgICAgc2hhZG93
TGF5ZXItPnNldEhpZGRlbihmYWxzZSk7CisKKyAgICBtX3dlYlBhZ2UtPnNjYWxlUGFnZShzY2Fs
ZSwgcm91bmRlZEludFBvaW50KG9yaWdpbikpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQK
IAogI2VuZGlmIC8vICFQTEFURk9STShJT1MpCg==
</data>
<flag name="commit-queue"
          id="242610"
          type_id="3"
          status="-"
          setter="buildbot"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>219023</attachid>
            <date>2013-12-11 18:06:52 -0800</date>
            <delta_ts>2013-12-12 15:58:56 -0800</delta_ts>
            <desc>address review comments (except GraphicsLayer bit)</desc>
            <filename>zoom.diff</filename>
            <type>text/plain</type>
            <size>40660</size>
            <attacher name="Tim Horton">thorton</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA1ZmRjMjdjLi40N2QyYTBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjAg
QEAKKzIwMTMtMTItMTEgIFRpbSBIb3J0b24gIDx0aW1vdGh5X2hvcnRvbkBhcHBsZS5jb20+CisK
KyAgICAgICAgW3drMl0gSGFuZGxlIHBpbmNoLXRvLXpvb20gZ2VzdHVyZQorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTI1NjA0CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJDb3JlLmV4cC5pbjoKKyAg
ICAgICAgRXhwb3J0IHNvbWUgVHJhbnNmb3JtYXRpb25NYXRyaXggZnVuY3Rpb25zLgorCisgICAg
ICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICBNYWtlIHNv
bWUgaGVhZGVycyBwcml2YXRlIHNvIHRoYXQgUmVuZGVyTGF5ZXJDb21wb3NpdG9yL0JhY2tpbmcg
Y2FuIGJlIHVzZWQgZnJvbSBXZWJLaXQyLgorCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxh
eWVyQ29tcG9zaXRvci5oOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXJDb21wb3NpdG9y
OjpsYXllckZvckNvbnRlbnRTaGFkb3cpOgorICAgICAgICBBZGQgYSBnZXR0ZXIgZm9yIHRoZSBj
b250ZW50IHNoYWRvdyBsYXllci4KKwogMjAxMy0xMi0xMSAgRGF2aWQgS2lsemVyICA8ZGRraWx6
ZXJAYXBwbGUuY29tPgogCiAgICAgICAgIERlZmluZSBtX2hhc0JhZFBhcmVudCBpbiBJbmxpbmVC
b3ggaWYgZGVmaW5lZChBRERSRVNTX1NBTklUSVpFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUuZXhwLmluIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4KaW5kZXgg
Y2E3YmRhZS4uYzM4OGY5NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAu
aW4KKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4KQEAgLTc3Niw2ICs3NzYsOCBA
QCBfX1pON1dlYkNvcmUyMFJlc291cmNlUmVzcG9uc2VCYXNlMjBzZXRTdWdnZXN0ZWRGaWxlbmFt
ZUVSS04zV1RGNlN0cmluZ0UKIF9fWk43V2ViQ29yZTIwUmVzb3VyY2VSZXNwb25zZUJhc2UyNHNl
dEV4cGVjdGVkQ29udGVudExlbmd0aEV4CiBfX1pON1dlYkNvcmUyMFJlc291cmNlUmVzcG9uc2VC
YXNlNnNldFVSTEVSS05TXzNVUkxFCiBfX1pON1dlYkNvcmUyMFJlc291cmNlUmVzcG9uc2VCYXNl
QzJFdgorX19aTjdXZWJDb3JlMjBUcmFuc2Zvcm1hdGlvbk1hdHJpeDl0cmFuc2xhdGVFZGQKK19f
Wk43V2ViQ29yZTIwVHJhbnNmb3JtYXRpb25NYXRyaXg1c2NhbGVFZAogX19aTjdXZWJDb3JlMjBV
c2VyR2VzdHVyZUluZGljYXRvcjdzX3N0YXRlRQogX19aTjdXZWJDb3JlMjBVc2VyR2VzdHVyZUlu
ZGljYXRvckMxRU5TXzI2UHJvY2Vzc2luZ1VzZXJHZXN0dXJlU3RhdGVFCiBfX1pON1dlYkNvcmUy
MFVzZXJHZXN0dXJlSW5kaWNhdG9yRDFFdgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDFhMjNhYzkuLjg4ODQ5MWYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTQ3
Miw3ICs0NzIsNyBAQAogCQkwRjYwNUFFQzE1Rjk0ODQ4MDA0REYwQzAgLyogU2Nyb2xsaW5nQ29u
c3RyYWludHMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMEY2MDVBRUExNUY5NDg0ODAwNERGMEMwIC8qIFNjcm9sbGluZ0NvbnN0cmFpbnRzLmNwcCAq
LzsgfTsKIAkJMEY2MDVBRUQxNUY5NDg0ODAwNERGMEMwIC8qIFNjcm9sbGluZ0NvbnN0cmFpbnRz
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjYwNUFF
QjE1Rjk0ODQ4MDA0REYwQzAgLyogU2Nyb2xsaW5nQ29uc3RyYWludHMuaCAqLzsgfTsKIAkJMEZB
MjRENzkxNjJERjkxOTAwQTNGNEMwIC8qIEdyYXBoaWNzTGF5ZXJVcGRhdGVyLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGQTI0RDc3MTYyREY5MTkw
MEEzRjRDMCAvKiBHcmFwaGljc0xheWVyVXBkYXRlci5jcHAgKi87IH07Ci0JCTBGQTI0RDdBMTYy
REY5MTkwMEEzRjRDMCAvKiBHcmFwaGljc0xheWVyVXBkYXRlci5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZBMjRENzgxNjJERjkxOTAwQTNGNEMwIC8q
IEdyYXBoaWNzTGF5ZXJVcGRhdGVyLmggKi87IH07CisJCTBGQTI0RDdBMTYyREY5MTkwMEEzRjRD
MCAvKiBHcmFwaGljc0xheWVyVXBkYXRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMEZBMjRENzgxNjJERjkxOTAwQTNGNEMwIC8qIEdyYXBoaWNzTGF5
ZXJVcGRhdGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKIAkJMEZBODhFQkQxNkE4RDFCRDAwRjk5OTg0IC8qIFNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5n
Tm9kZU1hYy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDBGQTg4RUJDMTZBOEQxQkQwMEY5OTk4NCAvKiBTY3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05vZGVN
YWMubW0gKi87IH07CiAJCTBGQjg4OTBBMTY3RDJGQTEwMDEwQ0RBNSAvKiBTY3JvbGxpbmdUcmVl
U3RpY2t5Tm9kZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMEZCODg5MDgxNjdEMkZBMTAwMTBDREE1IC8qIFNjcm9sbGluZ1RyZWVTdGlja3lOb2RlLmgg
Ki87IH07CiAJCTBGQjg4OTBCMTY3RDJGQTEwMDEwQ0RBNSAvKiBTY3JvbGxpbmdUcmVlU3RpY2t5
Tm9kZS5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBG
Qjg4OTA5MTY3RDJGQTEwMDEwQ0RBNSAvKiBTY3JvbGxpbmdUcmVlU3RpY2t5Tm9kZS5tbSAqLzsg
fTsKQEAgLTE0NzMsNyArMTQ3Myw3IEBACiAJCTQ5QUUyRDhGMTM0RUU1MEMwMDcyOTIwQSAvKiBD
U1NDYWxjdWxhdGlvblZhbHVlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA0OUFFMkQ4RDEzNEVFNTBDMDA3MjkyMEEgLyogQ1NTQ2FsY3VsYXRpb25WYWx1
ZS5oICovOyB9OwogCQk0OUFFMkQ5NjEzNEVFNUY5MDA3MjkyMEEgLyogQ2FsY3VsYXRpb25WYWx1
ZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0OUFF
MkQ5NDEzNEVFNUY5MDA3MjkyMEEgLyogQ2FsY3VsYXRpb25WYWx1ZS5jcHAgKi87IH07CiAJCTQ5
QUUyRDk3MTM0RUU1RjkwMDcyOTIwQSAvKiBDYWxjdWxhdGlvblZhbHVlLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0OUFFMkQ5NTEzNEVFNUY5MDA3Mjky
MEEgLyogQ2FsY3VsYXRpb25WYWx1ZS5oICovOyB9OwotCQk0OUFGMkQ2OTE0NDM1RDA1MDAxNkE3
ODQgLyogRGlzcGxheVJlZnJlc2hNb25pdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA0OUFGMkQ2ODE0NDM1RDA1MDAxNkE3ODQgLyogRGlzcGxheVJl
ZnJlc2hNb25pdG9yLmggKi87IH07CisJCTQ5QUYyRDY5MTQ0MzVEMDUwMDE2QTc4NCAvKiBEaXNw
bGF5UmVmcmVzaE1vbml0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDQ5QUYyRDY4MTQ0MzVEMDUwMDE2QTc4NCAvKiBEaXNwbGF5UmVmcmVzaE1vbml0
b3IuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0
OUFGMkQ2QzE0NDM1RDIxMDAxNkE3ODQgLyogRGlzcGxheVJlZnJlc2hNb25pdG9yTWFjLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ5QUYyRDZCMTQ0
MzVEMjEwMDE2QTc4NCAvKiBEaXNwbGF5UmVmcmVzaE1vbml0b3JNYWMuY3BwICovOyB9OwogCQk0
OUIzNzYwQzE1QzZDNjg0MDA1OTEzMUQgLyogQXJyYXlWYWx1ZS5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0OUIzNzYwQTE1QzZDNjg0MDA1OTEzMUQg
LyogQXJyYXlWYWx1ZS5jcHAgKi87IH07CiAJCTQ5QjM3NjBEMTVDNkM2ODQwMDU5MTMxRCAvKiBB
cnJheVZhbHVlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA0OUIzNzYwQjE1QzZDNjg0MDA1OTEzMUQgLyogQXJyYXlWYWx1ZS5oICovOyB9OwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5oIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5oCmluZGV4IDI2
MTZhNzYuLmUxN2E0NjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJMYXllckNvbXBvc2l0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
TGF5ZXJDb21wb3NpdG9yLmgKQEAgLTI2Myw2ICsyNjMsNyBAQCBwdWJsaWM6CiAgICAgR3JhcGhp
Y3NMYXllciogbGF5ZXJGb3JTY3JvbGxDb3JuZXIoKSBjb25zdCB7IHJldHVybiBtX2xheWVyRm9y
U2Nyb2xsQ29ybmVyLmdldCgpOyB9CiAjaWYgRU5BQkxFKFJVQkJFUl9CQU5ESU5HKQogICAgIEdy
YXBoaWNzTGF5ZXIqIGxheWVyRm9yT3ZlcmhhbmdBcmVhcygpIGNvbnN0IHsgcmV0dXJuIG1fbGF5
ZXJGb3JPdmVyaGFuZ0FyZWFzLmdldCgpOyB9CisgICAgR3JhcGhpY3NMYXllciogbGF5ZXJGb3JD
b250ZW50U2hhZG93KCkgY29uc3QgeyByZXR1cm4gbV9jb250ZW50U2hhZG93TGF5ZXIuZ2V0KCk7
IH0KIAogICAgIEdyYXBoaWNzTGF5ZXIqIHVwZGF0ZUxheWVyRm9yVG9wT3ZlcmhhbmdBcmVhKGJv
b2wgd2FudHNMYXllcik7CiAgICAgR3JhcGhpY3NMYXllciogdXBkYXRlTGF5ZXJGb3JCb3R0b21P
dmVyaGFuZ0FyZWEoYm9vbCB3YW50c0xheWVyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCAzOTc3NzMzLi45NzEz
ZTg3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dl
YktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTA2IEBACisyMDEzLTEyLTExICBUaW0gSG9ydG9u
ICA8dGltb3RoeV9ob3J0b25AYXBwbGUuY29tPgorCisgICAgICAgIFt3azJdIEhhbmRsZSBwaW5j
aC10by16b29tIGdlc3R1cmUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTEyNTYwNAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIEFkZCB0aGUgY29uY2VwdCBvZiBhICJ0cmFuc2llbnQiIHpvb20gdG8gRHJhd2lu
Z0FyZWEsIHdoaWNoIGlzIGEgem9vbQorICAgICAgICB0aGF0IGFmZmVjdHMgdGhlIGNvbnRlbnQs
IGJ1dCBkb2VzIG5vdCBjYXVzZSByZXBhaW50LCBhcyB3b3VsZCBiZSB1c2VkCisgICAgICAgIGZv
ciBhIGxpdmUgcGluY2gtem9vbSBnZXN0dXJlLgorCisgICAgICAgIEFkZCBWaWV3R2VzdHVyZUNv
bnRyb2xsZXIgb2ZmIG9mIFdLVmlldywgd2hpY2ggY3VycmVudGx5IG9ubHkgaGFuZGxlcworICAg
ICAgICBtYWduaWZpY2F0aW9uIGdlc3R1cmVzLCBhbmQga2VlcHMgdHJhY2sgb2YgdGhlIGN1cnJl
bnQgZ2VzdHVyZSdzIHNjYWxlCisgICAgICAgIGFuZCBvcmlnaW4gYW5kIHN1Y2gsIGFuZCBmb3J3
YXJkcyByZWxldmFudCBldmVudHMgb24gdG8gdGhlIERyYXdpbmdBcmVhCisgICAgICAgIHZpYSB0
aGUgdHJhbnNpZW50IHpvb20gbWVjaGFuaXNtLgorCisgICAgICAgICogRGVyaXZlZFNvdXJjZXMu
bWFrZToKKyAgICAgICAgQWRkIFZpZXdHZXN0dXJlQ29udHJvbGxlciB0byB0aGUgbGlzdCBvZiBt
ZXNzYWdlIHJlY2VpdmVycy4KKworICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tWaWV3
UHJpdmF0ZS5oOgorICAgICAgICBBZGQgc2hvdWxkSGFuZGxlTWFnbmlmaWNhdGlvbkdlc3R1cmUg
cHJvcGVydHksIHdoaWNoIGNvbnRyb2xzIHdoZXRoZXIgV0tWaWV3IHdpbGwKKyAgICAgICAgYXR0
ZW1wdCB0byBoYW5kbGUgbWFnbmlmeVdpdGhFdmVudDouCisKKyAgICAgICAgKiBVSVByb2Nlc3Mv
QVBJL21hYy9XS1ZpZXcubW06CisgICAgICAgICgtW1dLVmlldyB3YWl0Rm9yQXN5bmNEcmF3aW5n
QXJlYVNpemVVcGRhdGVdKToKKyAgICAgICAgRml4IGEgdHlwby4KKworICAgICAgICAoLVtXS1Zp
ZXcgX2Vuc3VyZUdlc3R1cmVDb250cm9sbGVyXSk6CisgICAgICAgIENyZWF0ZSBvdXIgVmlld0dl
c3R1cmVDb250cm9sbGVyIGlmIGl0IGRvZXNuJ3QgYWxyZWFkeSBleGlzdC4KKworICAgICAgICAo
LVtXS1ZpZXcgc2V0U2hvdWxkSGFuZGxlTWFnbmlmaWNhdGlvbkdlc3R1cmU6XSk6CisgICAgICAg
ICgtW1dLVmlldyBzaG91bGRIYW5kbGVNYWduaWZpY2F0aW9uR2VzdHVyZV0pOgorICAgICAgICBH
ZXQvc2V0IHNob3VsZEhhbmRsZU1hZ25pZmljYXRpb25HZXN0dXJlLgorCisgICAgICAgICgtW1dL
VmlldyBtYWduaWZ5V2l0aEV2ZW50Ol0pOgorICAgICAgICAoLVtXS1ZpZXcgZW5kR2VzdHVyZVdp
dGhFdmVudDpdKToKKyAgICAgICAgRm9yd2FyZCBnZXN0dXJlIG1ldGhvZHMgdG8gVmlld0dlc3R1
cmVDb250cm9sbGVyLgorCisgICAgICAgICogVUlQcm9jZXNzL1ZpZXdHZXN0dXJlQ29udHJvbGxl
ci5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpWaWV3R2VzdHVyZUNvbnRyb2xsZXI6OmNy
ZWF0ZSk6CisgICAgICAgIChXZWJLaXQ6OlZpZXdHZXN0dXJlQ29udHJvbGxlcjo6Vmlld0dlc3R1
cmVDb250cm9sbGVyKToKKyAgICAgICAgKFdlYktpdDo6Vmlld0dlc3R1cmVDb250cm9sbGVyOjp+
Vmlld0dlc3R1cmVDb250cm9sbGVyKToKKyAgICAgICAgKFdlYktpdDo6cmVzaXN0YW5jZUZvckRl
bHRhKToKKyAgICAgICAgQ29tcHV0ZSBhIHJlc2lzdGFuY2UgZmFjdG9yLCB3aGljaCBtYWtlcyBp
dCBmZWVsICJoYXJkIiB0byB6b29tIG91dCBwYXN0CisgICAgICAgIHNjYWxlPTEsIGFuZCBhY2Nl
bGVyYXRlcyBzY2FsaW5nIG91dCBiZWZvcmUgeW91IGhpdCBzY2FsZT0xLgorCisgICAgICAgIChX
ZWJLaXQ6OlZpZXdHZXN0dXJlQ29udHJvbGxlcjo6c2NhbGVkTWFnbmlmaWNhdGlvbk9yaWdpbik6
CisgICAgICAgIENvbXB1dGUgdGhlIG9yaWdpbiBvZiB0aGUgbWFnbmlmaWNhdGlvbiBnZXN0dXJl
IHdpdGggdGhlIHRyYW5zaWVudCB6b29tIHVuYXBwbGllZC4KKworICAgICAgICAoV2ViS2l0OjpW
aWV3R2VzdHVyZUNvbnRyb2xsZXI6OmhhbmRsZU1hZ25pZmljYXRpb25HZXN0dXJlKToKKyAgICAg
ICAgVGhlIGZpcnN0IG1hZ25pZmljYXRpb24gZ2VzdHVyZSB3aWxsIHNlbmQgYSBtZXNzYWdlIHRv
IHRoZSBXZWJQcm9jZXNzCisgICAgICAgIHRvIHJldHJpZXZlIHRoZSB2aXNpYmxlIGNvbnRlbnQg
cmVjdC4gU3Vic2VxdWVudCBnZXN0dXJlcyB3aWxsCisgICAgICAgIGhhbmQgdGhlIG5ldyBtYWdu
aWZpY2F0aW9uIGFuZCBvcmlnaW4gdG8gdGhlIERyYXdpbmdBcmVhIHRvIGFwcGx5LgorCisgICAg
ICAgIChXZWJLaXQ6OlZpZXdHZXN0dXJlQ29udHJvbGxlcjo6ZGlkQmVnaW5UcmFuc2llbnRab29t
KToKKyAgICAgICAgQ2FsbGJhY2sgZnJvbSB0aGUgV2ViUHJvY2Vzcywgd2l0aCB0aGUgY3VycmVu
dCB2aXNpYmxlIGNvbnRlbnQgcmVjdC4KKyAgICAgICAgU3Vic2VxdWVudCBtYWduaWZpY2F0aW9u
IGdlc3R1cmVzIHdpbGwgZm9yd2FyZCB0aGUgc2NhbGUgYW5kIG9yaWdpbiB0byB0aGUgRHJhd2lu
Z0FyZWEuCisgICAgICAgIAorICAgICAgICAoV2ViS2l0OjpWaWV3R2VzdHVyZUNvbnRyb2xsZXI6
OmVuZE1hZ25pZmljYXRpb25HZXN0dXJlKToKKyAgICAgICAgQ29tbWl0IHRoZSBjdXJyZW50IHRy
YW5zaWVudCBzY2FsZSBhcyB0aGUgYWN0dWFsIHBhZ2Ugc2NhbGUsIHdoaWNoIHdpbGwgY2F1c2UK
KyAgICAgICAgYSByZXBhaW50IGFuZCBicmluZyBpbiBhbGwgdGhlIHRpbGVzLgorCisgICAgICAg
IChXZWJLaXQ6OlZpZXdHZXN0dXJlQ29udHJvbGxlcjo6ZW5kQWN0aXZlR2VzdHVyZSk6CisgICAg
ICAgIElmIHdlIGhhdmUgYW4gYWN0aXZlIGdlc3R1cmUsIGNhbGwgaXRzIGVuZCBmdW5jdGlvbi4K
KworICAgICAgICAqIFVJUHJvY2Vzcy9WaWV3R2VzdHVyZUNvbnRyb2xsZXIuaDogQWRkZWQuCisg
ICAgICAgICogVUlQcm9jZXNzL1ZpZXdHZXN0dXJlQ29udHJvbGxlci5tZXNzYWdlcy5pbjogQWRk
ZWQuCisKKyAgICAgICAgKiBXZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAg
ICAgIEFkZCBuZXcgZmlsZXMuCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1Rp
bGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQ
YWdlL21hYy9UaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYS5tbToKKyAgICAgICAgKFdlYktp
dDo6VGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWE6OmJlZ2luVHJhbnNpZW50Wm9vbSk6Cisg
ICAgICAgIENhbGwgYmFjayB0byBWaWV3R2VzdHVyZUNvbnRyb2xsZXIgd2l0aCB0aGUgdmlzaWJs
ZUNvbnRlbnRSZWN0LgorCisgICAgICAgIChXZWJLaXQ6OlRpbGVkQ29yZUFuaW1hdGlvbkRyYXdp
bmdBcmVhOjphZGp1c3RUcmFuc2llbnRab29tKToKKyAgICAgICAgU2NhbGUgYW5kIHRyYW5zbGF0
ZSB0aGUgUmVuZGVyVmlldydzIFBsYXRmb3JtQ0FMYXllci4KKyAgICAgICAgUmVhY2hpbmcgaW50
byB0aGUgbGF5ZXIgdHJlZSBsaWtlIHRoaXMgaXMgc2NhcnksIHdlIHNob3VsZCBjb25zaWRlcgor
ICAgICAgICB0ZWFjaGluZyBSZW5kZXJMYXllckNvbXBvc2l0b3IgYWJvdXQgdHJhbnNpZW50IHpv
b20uCisgICAgICAgIEhpZGUgdGhlIGNvbnRlbnQgc2hhZG93IGxheWVyIGZvciBub3cuCisKKyAg
ICAgICAgKFdlYktpdDo6VGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWE6OmVuZFRyYW5zaWVu
dFpvb20pOgorICAgICAgICBDbGVhciBvdXIgY3VzdG9tIHRyYW5zZm9ybSBvbiB0aGUgUmVuZGVy
VmlldydzIGxheWVyLCBhbmQKKyAgICAgICAgY2hhbmdlIHRoZSBhY3R1YWwgcGFnZSBzY2FsZSwg
Y2F1c2luZyBhIHJlcGFpbnQuCisgICAgICAgIFVuLWhpZGUgdGhlIHNoYWRvdyBsYXllci4KKwor
ICAgICAgICAqIFVJUHJvY2Vzcy9EcmF3aW5nQXJlYVByb3h5Lmg6CisgICAgICAgIChXZWJLaXQ6
OkRyYXdpbmdBcmVhUHJveHk6OmJlZ2luVHJhbnNpZW50Wm9vbSk6CisgICAgICAgIChXZWJLaXQ6
OkRyYXdpbmdBcmVhUHJveHk6OmFkanVzdFRyYW5zaWVudFpvb20pOgorICAgICAgICAoV2ViS2l0
OjpEcmF3aW5nQXJlYVByb3h5OjplbmRUcmFuc2llbnRab29tKToKKyAgICAgICAgKiBVSVByb2Nl
c3MvbWFjL1RpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhUHJveHkuaDoKKyAgICAgICAgKiBV
SVByb2Nlc3MvbWFjL1RpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhUHJveHkubW06CisgICAg
ICAgIChXZWJLaXQ6OlRpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhUHJveHk6OmJlZ2luVHJh
bnNpZW50Wm9vbSk6CisgICAgICAgIChXZWJLaXQ6OlRpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdB
cmVhUHJveHk6OmFkanVzdFRyYW5zaWVudFpvb20pOgorICAgICAgICAoV2ViS2l0OjpUaWxlZENv
cmVBbmltYXRpb25EcmF3aW5nQXJlYVByb3h5OjplbmRUcmFuc2llbnRab29tKToKKyAgICAgICAg
KiBXZWJQcm9jZXNzL1dlYlBhZ2UvRHJhd2luZ0FyZWEuaDoKKyAgICAgICAgKFdlYktpdDo6RHJh
d2luZ0FyZWE6OmJlZ2luVHJhbnNpZW50Wm9vbSk6CisgICAgICAgIChXZWJLaXQ6OkRyYXdpbmdB
cmVhOjphZGp1c3RUcmFuc2llbnRab29tKToKKyAgICAgICAgKFdlYktpdDo6RHJhd2luZ0FyZWE6
OmVuZFRyYW5zaWVudFpvb20pOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9EcmF3aW5n
QXJlYS5tZXNzYWdlcy5pbjoKKyAgICAgICAgR2VuZXJpYyBwbHVtYmluZyBmb3Ige2JlZ2luLCBh
ZGp1c3QsIGVuZH1UcmFuc2llbnRab29tLgorCiAyMDEzLTEyLTExICBBbmRlcnMgQ2FybHNzb24g
IDxhbmRlcnNjYUBhcHBsZS5jb20+CiAKICAgICAgICAgTWVzc2FnZVJlY2VpdmVyTWFwIHNob3Vs
ZCB0YWtlIE1lc3NhZ2VSZWNlaXZlciBvYmplY3RzIGJ5IHJlZmVyZW5jZQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvRGVyaXZlZFNvdXJjZXMubWFrZSBiL1NvdXJjZS9XZWJLaXQyL0Rlcml2
ZWRTb3VyY2VzLm1ha2UKaW5kZXggMjg5MmNmOC4uYTY1YWQ3MSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvRGVyaXZlZFNvdXJjZXMubWFrZQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9EZXJpdmVk
U291cmNlcy5tYWtlCkBAIC04OSw2ICs4OSw3IEBAIE1FU1NBR0VfUkVDRUlWRVJTID0gXAogICAg
IFNlY0l0ZW1TaGltUHJveHkgXAogICAgIFN0b3JhZ2VBcmVhTWFwIFwKICAgICBTdG9yYWdlTWFu
YWdlciBcCisgICAgVmlld0dlc3R1cmVDb250cm9sbGVyIFwKICAgICBXZWJBcHBsaWNhdGlvbkNh
Y2hlTWFuYWdlciBcCiAgICAgV2ViQXBwbGljYXRpb25DYWNoZU1hbmFnZXJQcm94eSBcCiAgICAg
V2ViQ29ubmVjdGlvbiBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L0NvY29hL1dLVmlld1ByaXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29j
b2EvV0tWaWV3UHJpdmF0ZS5oCmluZGV4IDhjMGZlYTkuLjZlNjg0MGQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tWaWV3UHJpdmF0ZS5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tWaWV3UHJpdmF0ZS5oCkBAIC05NCw2
ICs5NCw5IEBAIHR5cGVkZWYgZW51bSB7CiAtICh2b2lkKWZvcmNlQXN5bmNEcmF3aW5nQXJlYVNp
emVVcGRhdGU6KE5TU2l6ZSlzaXplOwogLSAodm9pZCl3YWl0Rm9yQXN5bmNEcmF3aW5nQXJlYVNp
emVVcGRhdGU7CiAKKy0gKEJPT0wpX3Nob3VsZEhhbmRsZU1hZ25pZmljYXRpb25HZXN0dXJlOwor
LSAodm9pZClfc2V0U2hvdWxkSGFuZGxlTWFnbmlmaWNhdGlvbkdlc3R1cmU6KEJPT0wpZmxhZzsK
KwogI2VuZGlmCiAKIEBlbmQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvbWFjL1dLVmlldy5tbSBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvbWFjL1dLVmll
dy5tbQppbmRleCA4NWM1ZWE4Li41MmU1NDRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL21hYy9XS1ZpZXcubW0KKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9tYWMvV0tWaWV3Lm1tCkBAIC00OSw2ICs0OSw3IEBACiAjaW1wb3J0ICJUZXh0Q2hlY2tl
ci5oIgogI2ltcG9ydCAiVGV4dENoZWNrZXJTdGF0ZS5oIgogI2ltcG9ydCAiVGlsZWRDb3JlQW5p
bWF0aW9uRHJhd2luZ0FyZWFQcm94eS5oIgorI2ltcG9ydCAiVmlld0dlc3R1cmVDb250cm9sbGVy
LmgiCiAjaW1wb3J0ICJXS0FQSUNhc3QuaCIKICNpbXBvcnQgIldLRnVsbFNjcmVlbldpbmRvd0Nv
bnRyb2xsZXIuaCIKICNpbXBvcnQgIldLUHJpbnRpbmdWaWV3LmgiCkBAIC0yMzEsNiArMjMyLDkg
QEAgc3RydWN0IFdLVmlld0ludGVycHJldEtleUV2ZW50c1BhcmFtZXRlcnMgewogICAgIE5TUmVj
dCBfY29udGVudFByZXBhcmF0aW9uUmVjdDsKICAgICBCT09MIF91c2VDb250ZW50UHJlcGFyYXRp
b25SZWN0Rm9yVmlzaWJsZVJlY3Q7CiAgICAgQk9PTCBfd2luZG93T2NjbHVzaW9uRGV0ZWN0aW9u
RW5hYmxlZDsKKworICAgIHN0ZDo6dW5pcXVlX3B0cjxWaWV3R2VzdHVyZUNvbnRyb2xsZXI+IF9n
ZXN0dXJlQ29udHJvbGxlcjsKKyAgICBCT09MIF9zaG91bGRIYW5kbGVNYWduaWZpY2F0aW9uR2Vz
dHVyZTsKIH0KIAogQGVuZApAQCAtMzIzNCw3ICszMjM4LDcgQEAgc3RhdGljIE5TU3RyaW5nICpw
YXRoV2l0aFVuaXF1ZUZpbGVuYW1lRm9yUGF0aChOU1N0cmluZyAqcGF0aCkKIC0gKHZvaWQpd2Fp
dEZvckFzeW5jRHJhd2luZ0FyZWFTaXplVXBkYXRlCiB7CiAgICAgaWYgKERyYXdpbmdBcmVhUHJv
eHkqIGRyYXdpbmdBcmVhID0gX2RhdGEtPl9wYWdlLT5kcmF3aW5nQXJlYSgpKSB7Ci0gICAgICAg
IC8vIElmIGEgZ2VvbWV0cnkgdXBkYXRlIGlzIHN0aWxsIHBlbmRpbmcgdGhlbiB0aGUgYWN0aW9u
IG9mIHJlY2lldmluZyB0aGUKKyAgICAgICAgLy8gSWYgYSBnZW9tZXRyeSB1cGRhdGUgaXMgc3Rp
bGwgcGVuZGluZyB0aGVuIHRoZSBhY3Rpb24gb2YgcmVjZWl2aW5nIHRoZQogICAgICAgICAvLyBm
aXJzdCBnZW9tZXRyeSB1cGRhdGUgbWF5IHJlc3VsdCBpbiBhbm90aGVyIHVwZGF0ZSBiZWluZyBz
Y2hlZHVsZWQgLQogICAgICAgICAvLyB3ZSBzaG91bGQgd2FpdCBmb3IgdGhpcyB0byBjb21wbGV0
ZSB0b28uCiAgICAgICAgIGRyYXdpbmdBcmVhLT53YWl0Rm9yUG9zc2libGVHZW9tZXRyeVVwZGF0
ZShEcmF3aW5nQXJlYVByb3h5OjpkaWRVcGRhdGVCYWNraW5nU3RvcmVTdGF0ZVRpbWVvdXQgKiAw
LjUpOwpAQCAtMzI1MCw2ICszMjU0LDQyIEBAIHN0YXRpYyBOU1N0cmluZyAqcGF0aFdpdGhVbmlx
dWVGaWxlbmFtZUZvclBhdGgoTlNTdHJpbmcgKnBhdGgpCiAgICAgcmV0dXJuIE5POwogfQogCist
ICh2b2lkKV9lbnN1cmVHZXN0dXJlQ29udHJvbGxlcgoreworICAgIGlmIChfZGF0YS0+X2dlc3R1
cmVDb250cm9sbGVyKQorICAgICAgICByZXR1cm47CisKKyAgICBfZGF0YS0+X2dlc3R1cmVDb250
cm9sbGVyID0gc3RkOjptYWtlX3VuaXF1ZTxWaWV3R2VzdHVyZUNvbnRyb2xsZXI+KCpfZGF0YS0+
X3BhZ2UpOworfQorCistICh2b2lkKV9zZXRTaG91bGRIYW5kbGVNYWduaWZpY2F0aW9uR2VzdHVy
ZTooQk9PTClzaG91bGRIYW5kbGVNYWduaWZpY2F0aW9uR2VzdHVyZQoreworICAgIF9kYXRhLT5f
c2hvdWxkSGFuZGxlTWFnbmlmaWNhdGlvbkdlc3R1cmUgPSBzaG91bGRIYW5kbGVNYWduaWZpY2F0
aW9uR2VzdHVyZTsKK30KKworLSAoQk9PTClfc2hvdWxkSGFuZGxlTWFnbmlmaWNhdGlvbkdlc3R1
cmUKK3sKKyAgICByZXR1cm4gX2RhdGEtPl9zaG91bGRIYW5kbGVNYWduaWZpY2F0aW9uR2VzdHVy
ZTsKK30KKworLSAodm9pZCltYWduaWZ5V2l0aEV2ZW50OihOU0V2ZW50ICopZXZlbnQKK3sKKyAg
ICBpZiAoIV9kYXRhLT5fc2hvdWxkSGFuZGxlTWFnbmlmaWNhdGlvbkdlc3R1cmUpCisgICAgICAg
IHJldHVybjsKKworICAgIFtzZWxmIF9lbnN1cmVHZXN0dXJlQ29udHJvbGxlcl07CisKKyAgICBf
ZGF0YS0+X2dlc3R1cmVDb250cm9sbGVyLT5oYW5kbGVNYWduaWZpY2F0aW9uR2VzdHVyZShldmVu
dC5tYWduaWZpY2F0aW9uLCBbc2VsZiBjb252ZXJ0UG9pbnQ6ZXZlbnQubG9jYXRpb25JbldpbmRv
dyBmcm9tVmlldzpuaWxdKTsKK30KKworLSh2b2lkKWVuZEdlc3R1cmVXaXRoRXZlbnQ6KE5TRXZl
bnQgKilldmVudAoreworICAgIGlmICghX2RhdGEtPl9nZXN0dXJlQ29udHJvbGxlcikKKyAgICAg
ICAgcmV0dXJuOworCisgICAgX2RhdGEtPl9nZXN0dXJlQ29udHJvbGxlci0+ZW5kQWN0aXZlR2Vz
dHVyZSgpOworfQorCiBAZW5kCiAKIEBpbXBsZW1lbnRhdGlvbiBXS1Jlc3BvbmRlckNoYWluU2lu
awpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0RyYXdpbmdBcmVhUHJveHku
aCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9EcmF3aW5nQXJlYVByb3h5LmgKaW5kZXggMzM0
ZGYzNy4uMDc2NTljZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0RyYXdp
bmdBcmVhUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvRHJhd2luZ0FyZWFQ
cm94eS5oCkBAIC03MCw2ICs3MCwxMCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGNvbG9y
U3BhY2VEaWRDaGFuZ2UoKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgbWluaW11bUxheW91dFNpemVE
aWRDaGFuZ2UoKSB7IH0KIAorICAgIHZpcnR1YWwgdm9pZCBiZWdpblRyYW5zaWVudFpvb20oKSB7
IH0KKyAgICB2aXJ0dWFsIHZvaWQgYWRqdXN0VHJhbnNpZW50Wm9vbShkb3VibGUgc2NhbGUsIFdl
YkNvcmU6OkZsb2F0UG9pbnQgb3JpZ2luKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZW5kVHJhbnNp
ZW50Wm9vbShkb3VibGUgc2NhbGUsIFdlYkNvcmU6OkZsb2F0UG9pbnQgb3JpZ2luKSB7IH0KKwog
cHJvdGVjdGVkOgogICAgIGV4cGxpY2l0IERyYXdpbmdBcmVhUHJveHkoRHJhd2luZ0FyZWFUeXBl
LCBXZWJQYWdlUHJveHkqKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L1ZpZXdHZXN0dXJlQ29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvVmll
d0dlc3R1cmVDb250cm9sbGVyLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
Li43MmZmYTMyCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1Zp
ZXdHZXN0dXJlQ29udHJvbGxlci5jcHAKQEAgLTAsMCArMSwxNDQgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
aW1wb3J0ICJjb25maWcuaCIKKyNpbXBvcnQgIlZpZXdHZXN0dXJlQ29udHJvbGxlci5oIgorCisj
aW1wb3J0ICJWaWV3R2VzdHVyZUNvbnRyb2xsZXJNZXNzYWdlcy5oIgorI2ltcG9ydCAiV2ViUGFn
ZVByb3h5LmgiCisjaW1wb3J0ICJXZWJQcm9jZXNzUHJveHkuaCIKKwordXNpbmcgbmFtZXNwYWNl
IFdlYkNvcmU7CisKK3N0YXRpYyBjb25zdCBDR0Zsb2F0IG1pbk1hZ25pZmljYXRpb24gPSAwLjc1
Oworc3RhdGljIGNvbnN0IENHRmxvYXQgbWF4TWFnbmlmaWNhdGlvbiA9IDM7CisKK3N0YXRpYyBj
b25zdCBDR0Zsb2F0IHpvb21PdXRCb29zdCA9IDEuNjsKK3N0YXRpYyBjb25zdCBDR0Zsb2F0IHpv
b21PdXRSZXNpc3RhbmNlID0gMC4xMDsKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK1ZpZXdHZXN0
dXJlQ29udHJvbGxlcjo6Vmlld0dlc3R1cmVDb250cm9sbGVyKFdlYlBhZ2VQcm94eSYgd2ViUGFn
ZVByb3h5KQorICAgIDogbV9hY3RpdmVHZXN0dXJlVHlwZShWaWV3R2VzdHVyZVR5cGU6Ok5vbmUp
CisgICAgLCBtX3Zpc2libGVDb250ZW50UmVjdElzVmFsaWQoZmFsc2UpCisgICAgLCBtX3dlYlBh
Z2VQcm94eSh3ZWJQYWdlUHJveHkpCit7CisgICAgbV93ZWJQYWdlUHJveHkucHJvY2VzcygpLmFk
ZE1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6Vmlld0dlc3R1cmVDb250cm9sbGVyOjptZXNzYWdl
UmVjZWl2ZXJOYW1lKCksIG1fd2ViUGFnZVByb3h5LnBhZ2VJRCgpLCAqdGhpcyk7Cit9CisKK1Zp
ZXdHZXN0dXJlQ29udHJvbGxlcjo6flZpZXdHZXN0dXJlQ29udHJvbGxlcigpCit7CisgICAgbV93
ZWJQYWdlUHJveHkucHJvY2VzcygpLnJlbW92ZU1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6Vmll
d0dlc3R1cmVDb250cm9sbGVyOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1fd2ViUGFnZVByb3h5
LnBhZ2VJRCgpKTsKK30KKworc3RhdGljIGRvdWJsZSByZXNpc3RhbmNlRm9yRGVsdGEoZG91Ymxl
IGRlbHRhU2NhbGUsIGRvdWJsZSBjdXJyZW50U2NhbGUpCit7CisgICAgLy8gWm9vbSBpbiB3aXRo
IG5vIGFjY2VsZXJhdGlvbi4KKyAgICAvLyBGSVhNRTogU2hvdWxkIGhhdmUgcmVzaXN0YW5jZSB3
aGVuIHpvb21pbmcgaW4gcGFzdCB0aGUgbGltaXQuCisgICAgaWYgKGRlbHRhU2NhbGUgPiAwKQor
ICAgICAgICByZXR1cm4gMTsKKworICAgIC8vIFpvb20gb3V0IHdpdGggc2xpZ2h0IGFjY2VsZXJh
dGlvbiwgdW50aWwgd2UgcmVhY2ggdW5pdCBzY2FsZS4KKyAgICBpZiAoY3VycmVudFNjYWxlID4g
MSkKKyAgICAgICAgcmV0dXJuIHpvb21PdXRCb29zdDsKKworICAgIC8vIEJleW9uZCBzY2FsZT0x
LCByZXNpc3Qgem9vbWluZyBvdXQuCisgICAgZG91YmxlIHNjYWxlRGlzdGFuY2UgPSBtaW5NYWdu
aWZpY2F0aW9uIC0gY3VycmVudFNjYWxlOworICAgIGRvdWJsZSBzY2FsZVBlcmNlbnQgPSBzdGQ6
Om1pbihzdGQ6Om1heChzY2FsZURpc3RhbmNlIC8gbWluTWFnbmlmaWNhdGlvbiwgMC4pLCAxLik7
CisgICAgZG91YmxlIHJlc2lzdGFuY2UgPSB6b29tT3V0UmVzaXN0YW5jZSArIHNjYWxlUGVyY2Vu
dCAqICgwLjAxIC0gem9vbU91dFJlc2lzdGFuY2UpOworCisgICAgcmV0dXJuIHJlc2lzdGFuY2U7
Cit9CisKK0Zsb2F0UG9pbnQgVmlld0dlc3R1cmVDb250cm9sbGVyOjpzY2FsZWRNYWduaWZpY2F0
aW9uT3JpZ2luKEZsb2F0UG9pbnQgb3JpZ2luLCBkb3VibGUgc2NhbGUpCit7CisgICAgRmxvYXRQ
b2ludCBzY2FsZWRNYWduaWZpY2F0aW9uT3JpZ2luKG9yaWdpbik7CisgICAgc2NhbGVkTWFnbmlm
aWNhdGlvbk9yaWdpbi5tb3ZlQnkobV92aXNpYmxlQ29udGVudFJlY3QubG9jYXRpb24oKSk7Cisg
ICAgZmxvYXQgbWFnbmlmaWNhdGlvbk9yaWdpblNjYWxlID0gMSAtIChzY2FsZSAvIG1fd2ViUGFn
ZVByb3h5LnBhZ2VTY2FsZUZhY3RvcigpKTsKKyAgICBzY2FsZWRNYWduaWZpY2F0aW9uT3JpZ2lu
LnNjYWxlKG1hZ25pZmljYXRpb25PcmlnaW5TY2FsZSwgbWFnbmlmaWNhdGlvbk9yaWdpblNjYWxl
KTsKKyAgICByZXR1cm4gc2NhbGVkTWFnbmlmaWNhdGlvbk9yaWdpbjsKK30KKwordm9pZCBWaWV3
R2VzdHVyZUNvbnRyb2xsZXI6OmRpZEJlZ2luVHJhbnNpZW50Wm9vbShGbG9hdFJlY3QgdmlzaWJs
ZUNvbnRlbnRSZWN0KQoreworICAgIG1fYWN0aXZlR2VzdHVyZVR5cGUgPSBWaWV3R2VzdHVyZVR5
cGU6Ok1hZ25pZmljYXRpb247CisgICAgbV92aXNpYmxlQ29udGVudFJlY3QgPSB2aXNpYmxlQ29u
dGVudFJlY3Q7CisgICAgbV92aXNpYmxlQ29udGVudFJlY3RJc1ZhbGlkID0gdHJ1ZTsKK30KKwor
dm9pZCBWaWV3R2VzdHVyZUNvbnRyb2xsZXI6OmhhbmRsZU1hZ25pZmljYXRpb25HZXN0dXJlKGRv
dWJsZSBzY2FsZSwgRmxvYXRQb2ludCBvcmlnaW4pCit7CisgICAgQVNTRVJUKG1fYWN0aXZlR2Vz
dHVyZVR5cGUgPT0gVmlld0dlc3R1cmVUeXBlOjpOb25lIHx8IG1fYWN0aXZlR2VzdHVyZVR5cGUg
PT0gVmlld0dlc3R1cmVUeXBlOjpNYWduaWZpY2F0aW9uKTsKKworICAgIGlmIChtX2FjdGl2ZUdl
c3R1cmVUeXBlID09IFZpZXdHZXN0dXJlVHlwZTo6Tm9uZSkgeworICAgICAgICAvLyBGSVhNRTog
V2UgZHJvcCB0aGUgZmlyc3QgZnJhbWUgb2YgdGhlIGdlc3R1cmUgb24gdGhlIGZsb29yLCBiZWNh
dXNlIHdlIGRvbid0IGhhdmUgdGhlIHZpc2libGUgY29udGVudCBib3VuZHMgeWV0LgorICAgICAg
ICBtX21hZ25pZmljYXRpb24gPSBtX3dlYlBhZ2VQcm94eS5wYWdlU2NhbGVGYWN0b3IoKTsKKyAg
ICAgICAgbV93ZWJQYWdlUHJveHkuZHJhd2luZ0FyZWEoKS0+YmVnaW5UcmFuc2llbnRab29tKCk7
CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICAvLyBXZSdyZSBzdGlsbCB3YWl0aW5nIGZv
ciB0aGUgRGlkQmVnaW5UcmFuc2llbnRab29tIGNhbGxiYWNrLgorICAgIGlmICghbV92aXNpYmxl
Q29udGVudFJlY3RJc1ZhbGlkKQorICAgICAgICByZXR1cm47CisKKyAgICBkb3VibGUgc2NhbGVX
aXRoUmVzaXN0YW5jZSA9IHJlc2lzdGFuY2VGb3JEZWx0YShzY2FsZSwgbV9tYWduaWZpY2F0aW9u
KSAqIHNjYWxlOworCisgICAgbV9tYWduaWZpY2F0aW9uICs9IG1fbWFnbmlmaWNhdGlvbiAqIHNj
YWxlV2l0aFJlc2lzdGFuY2U7CisgICAgbV9tYWduaWZpY2F0aW9uID0gc3RkOjptaW4oc3RkOjpt
YXgobV9tYWduaWZpY2F0aW9uLCBtaW5NYWduaWZpY2F0aW9uKSwgbWF4TWFnbmlmaWNhdGlvbik7
CisKKyAgICBtX21hZ25pZmljYXRpb25PcmlnaW4gPSBvcmlnaW47CisKKyAgICBtX3dlYlBhZ2VQ
cm94eS5kcmF3aW5nQXJlYSgpLT5hZGp1c3RUcmFuc2llbnRab29tKG1fbWFnbmlmaWNhdGlvbiwg
c2NhbGVkTWFnbmlmaWNhdGlvbk9yaWdpbihvcmlnaW4sIG1fbWFnbmlmaWNhdGlvbikpOworCisg
ICAgbV9hY3RpdmVHZXN0dXJlVHlwZSA9IFZpZXdHZXN0dXJlVHlwZTo6TWFnbmlmaWNhdGlvbjsK
K30KKwordm9pZCBWaWV3R2VzdHVyZUNvbnRyb2xsZXI6OmVuZE1hZ25pZmljYXRpb25HZXN0dXJl
KCkKK3sKKyAgICBBU1NFUlQobV9hY3RpdmVHZXN0dXJlVHlwZSA9PSBWaWV3R2VzdHVyZVR5cGU6
Ok1hZ25pZmljYXRpb24pOworCisgICAgLy8gRklYTUU6IFNob3VsZCBydWJiZXItYmFuZCBiYWNr
IHdoZW4gem9vbWVkIGluIG9yIG91dCBwYXN0IHRoZSBsaW1pdC4KKyAgICBkb3VibGUgbmV3TWFn
bmlmaWNhdGlvbiA9IHN0ZDo6bWF4KG1fbWFnbmlmaWNhdGlvbiwgMS4pOworCisgICAgRmxvYXRQ
b2ludCBzY2FsZWRPcmlnaW4gPSBzY2FsZWRNYWduaWZpY2F0aW9uT3JpZ2luKG1fbWFnbmlmaWNh
dGlvbk9yaWdpbiwgbmV3TWFnbmlmaWNhdGlvbik7CisgICAgc2NhbGVkT3JpZ2luLm1vdmVCeSgt
bV92aXNpYmxlQ29udGVudFJlY3QubG9jYXRpb24oKSk7CisKKyAgICBtX3dlYlBhZ2VQcm94eS5k
cmF3aW5nQXJlYSgpLT5lbmRUcmFuc2llbnRab29tKG5ld01hZ25pZmljYXRpb24sIC1zY2FsZWRP
cmlnaW4pOworfQorCit2b2lkIFZpZXdHZXN0dXJlQ29udHJvbGxlcjo6ZW5kQWN0aXZlR2VzdHVy
ZSgpCit7CisgICAgc3dpdGNoIChtX2FjdGl2ZUdlc3R1cmVUeXBlKSB7CisgICAgY2FzZSBWaWV3
R2VzdHVyZVR5cGU6Ok5vbmU6CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgVmlld0dlc3R1cmVU
eXBlOjpNYWduaWZpY2F0aW9uOgorICAgICAgICBlbmRNYWduaWZpY2F0aW9uR2VzdHVyZSgpOwor
ICAgIH0KKworICAgIG1fdmlzaWJsZUNvbnRlbnRSZWN0SXNWYWxpZCA9IGZhbHNlOworICAgIG1f
YWN0aXZlR2VzdHVyZVR5cGUgPSBWaWV3R2VzdHVyZVR5cGU6Ok5vbmU7Cit9CisKK30gLy8gbmFt
ZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1ZpZXdH
ZXN0dXJlQ29udHJvbGxlci5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1ZpZXdHZXN0dXJl
Q29udHJvbGxlci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhhYWMyNzEK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvVmlld0dlc3R1cmVD
b250cm9sbGVyLmgKQEAgLTAsMCArMSw3MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MK
KyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgor
ICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgVmlld0dl
c3R1cmVDb250cm9sbGVyX2gKKyNkZWZpbmUgVmlld0dlc3R1cmVDb250cm9sbGVyX2gKKworI2lu
Y2x1ZGUgIk1lc3NhZ2VSZWNlaXZlci5oIgorI2luY2x1ZGUgPFdlYkNvcmUvRmxvYXRSZWN0Lmg+
CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBXZWJQYWdlUHJveHk7CisKK2NsYXNzIFZp
ZXdHZXN0dXJlQ29udHJvbGxlciA6IHByaXZhdGUgQ29yZUlQQzo6TWVzc2FnZVJlY2VpdmVyIHsK
KyAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShWaWV3R2VzdHVyZUNvbnRyb2xsZXIpOworcHVibGlj
OgorICAgIFZpZXdHZXN0dXJlQ29udHJvbGxlcihXZWJQYWdlUHJveHkmKTsKKyAgICB+Vmlld0dl
c3R1cmVDb250cm9sbGVyKCk7CisKKyAgICB2b2lkIGhhbmRsZU1hZ25pZmljYXRpb25HZXN0dXJl
KGRvdWJsZSBzY2FsZSwgV2ViQ29yZTo6RmxvYXRQb2ludCBvcmlnaW4pOworCisgICAgdm9pZCBl
bmRBY3RpdmVHZXN0dXJlKCk7CisKKyAgICBlbnVtIGNsYXNzIFZpZXdHZXN0dXJlVHlwZSB7Cisg
ICAgICAgIE5vbmUsCisgICAgICAgIE1hZ25pZmljYXRpb24sCisgICAgfTsKKworcHJpdmF0ZToK
KyAgICAvLyBDb3JlSVBDOjpNZXNzYWdlUmVjZWl2ZXIuCisgICAgdmlydHVhbCB2b2lkIGRpZFJl
Y2VpdmVNZXNzYWdlKENvcmVJUEM6OkNvbm5lY3Rpb24qLCBDb3JlSVBDOjpNZXNzYWdlRGVjb2Rl
ciYpIE9WRVJSSURFOworCisgICAgLy8gTWVzc2FnZSBoYW5kbGVycy4KKyAgICB2b2lkIGRpZEJl
Z2luVHJhbnNpZW50Wm9vbShXZWJDb3JlOjpGbG9hdFJlY3QgdmlzaWJsZUNvbnRlbnRCb3VuZHMp
OworCisgICAgdm9pZCBlbmRNYWduaWZpY2F0aW9uR2VzdHVyZSgpOworICAgIFdlYkNvcmU6OkZs
b2F0UG9pbnQgc2NhbGVkTWFnbmlmaWNhdGlvbk9yaWdpbihXZWJDb3JlOjpGbG9hdFBvaW50IG9y
aWdpbiwgZG91YmxlIHNjYWxlKTsKKworICAgIFZpZXdHZXN0dXJlVHlwZSBtX2FjdGl2ZUdlc3R1
cmVUeXBlOworCisgICAgZG91YmxlIG1fbWFnbmlmaWNhdGlvbjsKKyAgICBXZWJDb3JlOjpGbG9h
dFBvaW50IG1fbWFnbmlmaWNhdGlvbk9yaWdpbjsKKyAgICBXZWJDb3JlOjpGbG9hdFJlY3QgbV92
aXNpYmxlQ29udGVudFJlY3Q7CisgICAgYm9vbCBtX3Zpc2libGVDb250ZW50UmVjdElzVmFsaWQ7
CisKKyAgICBXZWJQYWdlUHJveHkmIG1fd2ViUGFnZVByb3h5OworfTsKKworfSAvLyBuYW1lc3Bh
Y2UgV2ViS2l0CisKKyNlbmRpZiAvLyBWaWV3R2VzdHVyZUNvbnRyb2xsZXJfaApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1ZpZXdHZXN0dXJlQ29udHJvbGxlci5tZXNzYWdl
cy5pbiBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9WaWV3R2VzdHVyZUNvbnRyb2xsZXIubWVz
c2FnZXMuaW4KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzNjOTdmNQotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9WaWV3R2VzdHVyZUNvbnRy
b2xsZXIubWVzc2FnZXMuaW4KQEAgLTAsMCArMSwyNSBAQAorIyBDb3B5cmlnaHQgKEMpIDIwMTMg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisjIGFyZSBtZXQ6CisjIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAyLiAgUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyMgICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisjCisjIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycg
QU5ECisjIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisjIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyMgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IKKyMgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAorIyBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUgorIyBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUgorIyBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLAorIyBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQorIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorCittZXNzYWdlcyAtPiBWaWV3R2VzdHVyZUNvbnRyb2xsZXIgewor
ICAgIERpZEJlZ2luVHJhbnNpZW50Wm9vbShXZWJDb3JlOjpGbG9hdFJlY3QgdmlzaWJsZUNvbnRl
bnRCb3VuZHMpCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1Rp
bGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9tYWMvVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWFQcm94eS5oCmluZGV4IGNiODM1
NWYuLmYxZGQzMzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvVGls
ZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWFQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9tYWMvVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWFQcm94eS5oCkBAIC01MCw2
ICs1MCwxMCBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCBleGl0QWNjZWxlcmF0ZWRDb21w
b3NpdGluZ01vZGUodWludDY0X3QgYmFja2luZ1N0b3JlU3RhdGVJRCwgY29uc3QgVXBkYXRlSW5m
byYpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVBY2NlbGVyYXRlZENvbXBvc2l0
aW5nTW9kZSh1aW50NjRfdCBiYWNraW5nU3RvcmVTdGF0ZUlELCBjb25zdCBMYXllclRyZWVDb250
ZXh0JikgT1ZFUlJJREU7CiAKKyAgICB2aXJ0dWFsIHZvaWQgYmVnaW5UcmFuc2llbnRab29tKCkg
T1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIGFkanVzdFRyYW5zaWVudFpvb20oZG91YmxlIHNj
YWxlLCBXZWJDb3JlOjpGbG9hdFBvaW50IG9yaWdpbikgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2
b2lkIGVuZFRyYW5zaWVudFpvb20oZG91YmxlIHNjYWxlLCBXZWJDb3JlOjpGbG9hdFBvaW50IG9y
aWdpbikgT1ZFUlJJREU7CisKICAgICAvLyBNZXNzYWdlIGhhbmRsZXJzLgogICAgIHZpcnR1YWwg
dm9pZCBkaWRVcGRhdGVHZW9tZXRyeSgpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBpbnRy
aW5zaWNDb250ZW50U2l6ZURpZENoYW5nZShjb25zdCBXZWJDb3JlOjpJbnRTaXplJiBuZXdJbnRy
aW5zaWNDb250ZW50U2l6ZSkgT1ZFUlJJREU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvbWFjL1RpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhUHJveHkubW0gYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1RpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhUHJv
eHkubW0KaW5kZXggMTEyZjBhYS4uNTM0YjU4MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL21hYy9UaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYVByb3h5Lm1tCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0Fy
ZWFQcm94eS5tbQpAQCAtMTQ4LDYgKzE0OCwyMSBAQCB2b2lkIFRpbGVkQ29yZUFuaW1hdGlvbkRy
YXdpbmdBcmVhUHJveHk6OnNlbmRVcGRhdGVHZW9tZXRyeSgpCiAgICAgbV9pc1dhaXRpbmdGb3JE
aWRVcGRhdGVHZW9tZXRyeSA9IHRydWU7CiB9CiAKK3ZvaWQgVGlsZWRDb3JlQW5pbWF0aW9uRHJh
d2luZ0FyZWFQcm94eTo6YmVnaW5UcmFuc2llbnRab29tKCkKK3sKKyAgICBtX3dlYlBhZ2VQcm94
eS0+cHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OkRyYXdpbmdBcmVhOjpCZWdpblRyYW5zaWVudFpv
b20oKSwgbV93ZWJQYWdlUHJveHktPnBhZ2VJRCgpKTsKK30KKwordm9pZCBUaWxlZENvcmVBbmlt
YXRpb25EcmF3aW5nQXJlYVByb3h5OjphZGp1c3RUcmFuc2llbnRab29tKGRvdWJsZSBzY2FsZSwg
RmxvYXRQb2ludCBvcmlnaW4pCit7CisgICAgbV93ZWJQYWdlUHJveHktPnByb2Nlc3MoKS5zZW5k
KE1lc3NhZ2VzOjpEcmF3aW5nQXJlYTo6QWRqdXN0VHJhbnNpZW50Wm9vbShzY2FsZSwgb3JpZ2lu
KSwgbV93ZWJQYWdlUHJveHktPnBhZ2VJRCgpKTsKK30KKwordm9pZCBUaWxlZENvcmVBbmltYXRp
b25EcmF3aW5nQXJlYVByb3h5OjplbmRUcmFuc2llbnRab29tKGRvdWJsZSBzY2FsZSwgRmxvYXRQ
b2ludCBvcmlnaW4pCit7CisgICAgbV93ZWJQYWdlUHJveHktPnByb2Nlc3MoKS5zZW5kKE1lc3Nh
Z2VzOjpEcmF3aW5nQXJlYTo6RW5kVHJhbnNpZW50Wm9vbShzY2FsZSwgb3JpZ2luKSwgbV93ZWJQ
YWdlUHJveHktPnBhZ2VJRCgpKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKICNlbmRp
ZiAvLyAhUExBVEZPUk0oSU9TKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViS2l0Mi54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGYxMDVjNjUuLmU3ZDRiN2IgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTM1Miw2ICsz
NTIsMTAgQEAKIAkJMjlDRDU1QUIxMjhFMjk0RjAwMTMzQzg1IC8qIFdLQWNjZXNzaWJpbGl0eVdl
YlBhZ2VPYmplY3QubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAyOUNENTVBOTEyOEUyOTRGMDAxMzNDODUgLyogV0tBY2Nlc3NpYmlsaXR5V2ViUGFnZU9i
amVjdC5tbSAqLzsgfTsKIAkJMjlENTVERjExNjFCRjlGMTAwMzFBMkUzIC8qIFdlYlBhZ2VHcm91
cFByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDI5RDU1REVGMTYxQkY5RjEwMDMxQTJFMyAvKiBXZWJQYWdlR3JvdXBQ
cm94eU1lc3NhZ2VSZWNlaXZlci5jcHAgKi87IH07CiAJCTI5RDU1REYyMTYxQkY5RjEwMDMxQTJF
MyAvKiBXZWJQYWdlR3JvdXBQcm94eU1lc3NhZ2VzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyOUQ1NURGMDE2MUJGOUYxMDAzMUEyRTMgLyogV2ViUGFn
ZUdyb3VwUHJveHlNZXNzYWdlcy5oICovOyB9OworCQkyRDEyNUM1RTE4NTdFQTA1MDAzQkEzQ0Ig
LyogVmlld0dlc3R1cmVDb250cm9sbGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAyRDEyNUM1QzE4NTdFQTA1MDAzQkEzQ0IgLyogVmlld0dlc3R1cmVD
b250cm9sbGVyLmggKi87IH07CisJCTJEMTI1QzVGMTg1N0VBMDUwMDNCQTNDQiAvKiBWaWV3R2Vz
dHVyZUNvbnRyb2xsZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMkQxMjVDNUQxODU3RUEwNTAwM0JBM0NCIC8qIFZpZXdHZXN0dXJlQ29udHJvbGxl
ci5jcHAgKi87IH07CisJCTJEMUI1RDVEMTg1ODY5QzgwMDZDNjU5NiAvKiBWaWV3R2VzdHVyZUNv
bnRyb2xsZXJNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMkQxQjVENUIxODU4NjlDODAwNkM2NTk2IC8qIFZpZXdHZXN0dXJl
Q29udHJvbGxlck1lc3NhZ2VSZWNlaXZlci5jcHAgKi87IH07CisJCTJEMUI1RDVFMTg1ODY5Qzgw
MDZDNjU5NiAvKiBWaWV3R2VzdHVyZUNvbnRyb2xsZXJNZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkQxQjVENUMxODU4NjlDODAwNkM2NTk2
IC8qIFZpZXdHZXN0dXJlQ29udHJvbGxlck1lc3NhZ2VzLmggKi87IH07CiAJCTJEMkFERjA5MTYz
NjJERDUwMDE5N0U0NyAvKiBQREZQbHVnaW5UZXh0QW5ub3RhdGlvbi5tbSBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJEMkFERjA2MTYzNjJEQzcwMDE5N0U0
NyAvKiBQREZQbHVnaW5UZXh0QW5ub3RhdGlvbi5tbSAqLzsgfTsKIAkJMkQyQURGMEIxNjM2MkRE
QjAwMTk3RTQ3IC8qIFBERlBsdWdpbkFubm90YXRpb24ubW0gaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyRDJBREYwMzE2MzYyNDM1MDAxOTdFNDcgLyogUERG
UGx1Z2luQW5ub3RhdGlvbi5tbSAqLzsgfTsKIAkJMkQyQURGMTAxNjM2NEQ4MjAwMTk3RTQ3IC8q
IFBERlBsdWdpbkNob2ljZUFubm90YXRpb24ubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAyRDJBREYwRTE2MzY0RDgyMDAxOTdFNDcgLyogUERGUGx1Z2lu
Q2hvaWNlQW5ub3RhdGlvbi5tbSAqLzsgfTsKQEAgLTE4OTAsNiArMTg5NCwxMSBAQAogCQkyOUQ1
NURFRTE2MUJGODc4MDAzMUEyRTMgLyogV2ViUGFnZUdyb3VwUHJveHkubWVzc2FnZXMuaW4gKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRo
ID0gV2ViUGFnZUdyb3VwUHJveHkubWVzc2FnZXMuaW47IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTI5RDU1REVGMTYxQkY5RjEwMDMxQTJFMyAvKiBXZWJQYWdlR3JvdXBQcm94eU1lc3Nh
Z2VSZWNlaXZlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJQ
YWdlR3JvdXBQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTI5RDU1REYwMTYxQkY5RjEwMDMxQTJFMyAvKiBXZWJQYWdlR3JvdXBQcm94eU1lc3Nh
Z2VzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYlBhZ2VHcm91cFByb3h5
TWVzc2FnZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMkQxMjVDNUMxODU3RUEw
NTAwM0JBM0NCIC8qIFZpZXdHZXN0dXJlQ29udHJvbGxlci5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBWaWV3R2VzdHVyZUNvbnRyb2xsZXIuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJMkQxMjVDNUQxODU3RUEwNTAwM0JBM0NCIC8qIFZpZXdHZXN0dXJlQ29udHJv
bGxlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBWaWV3R2VzdHVy
ZUNvbnRyb2xsZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkyRDFCNUQ1QTE4
NTg2NTk5MDA2QzY1OTYgLyogVmlld0dlc3R1cmVDb250cm9sbGVyLm1lc3NhZ2VzLmluICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9
IFZpZXdHZXN0dXJlQ29udHJvbGxlci5tZXNzYWdlcy5pbjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJMkQxQjVENUIxODU4NjlDODAwNkM2NTk2IC8qIFZpZXdHZXN0dXJlQ29udHJvbGxl
ck1lc3NhZ2VSZWNlaXZlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBWaWV3R2VzdHVyZUNvbnRyb2xsZXJNZXNzYWdlUmVjZWl2ZXIuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQkyRDFCNUQ1QzE4NTg2OUM4MDA2QzY1OTYgLyogVmlld0dlc3R1cmVD
b250cm9sbGVyTWVzc2FnZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVmll
d0dlc3R1cmVDb250cm9sbGVyTWVzc2FnZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJMkQyQURGMDIxNjM2MjQzNTAwMTk3RTQ3IC8qIFBERlBsdWdpbkFubm90YXRpb24uaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gUERGUGx1Z2luQW5ub3RhdGlvbi5oOyBwYXRo
ID0gUERGL1BERlBsdWdpbkFubm90YXRpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJMkQyQURGMDMxNjM2MjQzNTAwMTk3RTQ3IC8qIFBERlBsdWdpbkFubm90YXRpb24ubW0gKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IG5hbWUgPSBQREZQbHVnaW5Bbm5vdGF0aW9u
Lm1tOyBwYXRoID0gUERGL1BERlBsdWdpbkFubm90YXRpb24ubW07IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTJEMkFERjA1MTYzNjJEQzcwMDE5N0U0NyAvKiBQREZQbHVnaW5UZXh0QW5u
b3RhdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBQREZQbHVnaW5UZXh0
QW5ub3RhdGlvbi5oOyBwYXRoID0gUERGL1BERlBsdWdpblRleHRBbm5vdGF0aW9uLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC00NDYxLDYgKzQ0NzAsOSBAQAogCQkJCTFBQTQxN0M5
MTJDMDBDQ0EwMDJCRTY3QiAvKiBUZXh0Q2hlY2tlci5oICovLAogCQkJCTFCQjQxN0M5MTJDMDBD
Q0EwMDJCRTY3QiAvKiBUZXh0Q2hlY2tlckNvbXBsZXRpb24uY3BwICovLAogCQkJCTFDQzQxN0M5
MTJDMDBDQ0EwMDJCRTY3QiAvKiBUZXh0Q2hlY2tlckNvbXBsZXRpb24uaCAqLywKKwkJCQkyRDEy
NUM1QzE4NTdFQTA1MDAzQkEzQ0IgLyogVmlld0dlc3R1cmVDb250cm9sbGVyLmggKi8sCisJCQkJ
MkQxMjVDNUQxODU3RUEwNTAwM0JBM0NCIC8qIFZpZXdHZXN0dXJlQ29udHJvbGxlci5jcHAgKi8s
CisJCQkJMkQxQjVENUExODU4NjU5OTAwNkM2NTk2IC8qIFZpZXdHZXN0dXJlQ29udHJvbGxlci5t
ZXNzYWdlcy5pbiAqLywKIAkJCQkxQTBGMjlFMTEyMEI0NDQyMDA1M0QxQjkgLyogVmlzaXRlZExp
bmtQcm92aWRlci5jcHAgKi8sCiAJCQkJMUEwRjI5RTIxMjBCNDQ0MjAwNTNEMUI5IC8qIFZpc2l0
ZWRMaW5rUHJvdmlkZXIuaCAqLywKIAkJCQk1MTJFMzUyMDEzMEI1NTAxMDBBQkQxOUEgLyogV2Vi
QXBwbGljYXRpb25DYWNoZU1hbmFnZXJQcm94eS5jcHAgKi8sCkBAIC01NDI5LDYgKzU0NDEsOCBA
QAogCQkJCTFBMzM0REVDMTZERThGODgwMDZBOEUzOCAvKiBTdG9yYWdlQXJlYU1hcE1lc3NhZ2Vz
LmggKi8sCiAJCQkJMUFCMzFBOTQxNkJDNjg4MTAwRjZEQkM5IC8qIFN0b3JhZ2VNYW5hZ2VyTWVz
c2FnZVJlY2VpdmVyLmNwcCAqLywKIAkJCQkxQUIzMUE5NTE2QkM2ODgxMDBGNkRCQzkgLyogU3Rv
cmFnZU1hbmFnZXJNZXNzYWdlcy5oICovLAorCQkJCTJEMUI1RDVCMTg1ODY5QzgwMDZDNjU5NiAv
KiBWaWV3R2VzdHVyZUNvbnRyb2xsZXJNZXNzYWdlUmVjZWl2ZXIuY3BwICovLAorCQkJCTJEMUI1
RDVDMTg1ODY5QzgwMDZDNjU5NiAvKiBWaWV3R2VzdHVyZUNvbnRyb2xsZXJNZXNzYWdlcy5oICov
LAogCQkJCTUxMkUzNTY4MTMwQjU3RjAwMEFCRDE5QSAvKiBXZWJBcHBsaWNhdGlvbkNhY2hlTWFu
YWdlck1lc3NhZ2VSZWNlaXZlci5jcHAgKi8sCiAJCQkJNTEyRTM1NjkxMzBCNTdGMDAwQUJEMTlB
IC8qIFdlYkFwcGxpY2F0aW9uQ2FjaGVNYW5hZ2VyTWVzc2FnZXMuaCAqLywKIAkJCQk1MTJFMzVG
NjEzMEI2NDJFMDBBQkQxOUEgLyogV2ViQXBwbGljYXRpb25DYWNoZU1hbmFnZXJQcm94eU1lc3Nh
Z2VSZWNlaXZlci5jcHAgKi8sCkBAIC01NzIxLDYgKzU3MzUsNyBAQAogCQkJCTFBMjRCNUYzMTFG
NTMxRTgwMEMzODI2OSAvKiBNYWNoVXRpbGl0aWVzLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQTIz
MjkwMzE2MkM4NjczMDBEODJGN0EgLyogTWVzc2FnZURlY29kZXIuaCBpbiBIZWFkZXJzICovLAog
CQkJCTUxRkNCMTg2MTdCQkZFMDMwMDM5NENEOCAvKiBBc3luY2hyb25vdXNOZXR3b3JrTG9hZGVy
Q2xpZW50LmggaW4gSGVhZGVycyAqLywKKwkJCQkyRDFCNUQ1RTE4NTg2OUM4MDA2QzY1OTYgLyog
Vmlld0dlc3R1cmVDb250cm9sbGVyTWVzc2FnZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBMjMy
OEZGMTYyQzg2NkEwMEQ4MkY3QSAvKiBNZXNzYWdlRW5jb2Rlci5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJMUFDNEM4MjkxNkI4NzZBOTAwNjlEQ0NEIC8qIE1lc3NhZ2VGbGFncy5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJMUFFMDBENkMxODMyN0MxMjAwMDg3REQ3IC8qIFN0cmluZ1JlZmVyZW5jZS5oIGlu
IEhlYWRlcnMgKi8sCkBAIC01OTY2LDYgKzU5ODEsNyBAQAogCQkJCUJDOUJBNTA1MTY5N0M0NTMw
MEU0NDYxNiAvKiBXZWJLaXQySW5pdGlhbGl6ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkM1OTUz
NDIxMEZDMDQ1MjAwOThGODJEIC8qIFdlYkxvYWRlckNsaWVudC5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJMzNEM0EzQzIxMzM5NjBCMDAwNzA5QkU0IC8qIFdlYk1lZGlhQ2FjaGVNYW5hZ2VyLmggaW4g
SGVhZGVycyAqLywKKwkJCQkyRDEyNUM1RTE4NTdFQTA1MDAzQkEzQ0IgLyogVmlld0dlc3R1cmVD
b250cm9sbGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQkzM0QzQTNDOTEzMzk2MTc5MDA3MDlCRTQg
LyogV2ViTWVkaWFDYWNoZU1hbmFnZXJNZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMzdD
NEMwOEQxODE0QUM1QzAwMzY4OEI5IC8qIFdLQmFja0ZvcndhcmRMaXN0LmggaW4gSGVhZGVycyAq
LywKIAkJCQkzNzFBMTk0MjE4MjREMjkzMDBGMzJBNUUgLyogV0tOU0RpY3Rpb25hcnkuaCBpbiBI
ZWFkZXJzICovLApAQCAtNzIyOCw2ICs3MjQ0LDcgQEAKIAkJCQlCQ0QzNjc1QzE0OEMyNkMwMDA0
NDdFODcgLyogV2ViQ29ubmVjdGlvblRvVUlQcm9jZXNzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CUJDNEE2MkE3MTQ3NDRFQzcwMDZDNjgxQSAvKiBXZWJDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCUJDODI4MzY1MTZCMzU0RjYwMEEyNzhGRSAvKiBXZWJDb250
ZW50UHJvY2Vzc01haW4ubW0gaW4gU291cmNlcyAqLywKKwkJCQkyRDEyNUM1RjE4NTdFQTA1MDAz
QkEzQ0IgLyogVmlld0dlc3R1cmVDb250cm9sbGVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUJD
ODI4Mzk5MTZCNDhEQzAwMEEyNzhGRSAvKiBXZWJDb250ZW50U2VydmljZUVudHJ5UG9pbnQubW0g
aW4gU291cmNlcyAqLywKIAkJCQlCQ0I5RTI0NDExMjBEQUNBMDBBMTM3RTAgLyogV2ViQ29udGV4
dC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkzMUE1MDVGOTE2ODAwMjU1MDBBOTMwRUIgLyogV2Vi
Q29udGV4dENsaWVudC5jcHAgaW4gU291cmNlcyAqLywKQEAgLTc0OTAsNiArNzUwNyw3IEBACiAJ
CQkJQkNCQUFDRUMxNDUyMjVFMzAwNTNGODJGIC8qIFdLUHJvY2Vzc0dyb3VwLm1tIGluIFNvdXJj
ZXMgKi8sCiAJCQkJNTEyRjU4RkIxMkE4OEE1NDAwNjI5NTMwIC8qIFdLUHJvdGVjdGlvblNwYWNl
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTM3OTQ4NDA4MTUwQzRCOTcwMEU1MkNFOSAvKiBXS1Jl
bmRlckxheWVyLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTJEMUI1RDVEMTg1ODY5QzgwMDZDNjU5
NiAvKiBWaWV3R2VzdHVyZUNvbnRyb2xsZXJNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJMzc2MDg4MjIxNTA0MTRGNzAwRkM4MkM3IC8qIFdLUmVuZGVyT2JqZWN0LmNwcCBp
biBTb3VyY2VzICovLAogCQkJCTMzMzY3NjNBMTMwQzk5REMwMDZDOURFMiAvKiBXS1Jlc291cmNl
Q2FjaGVNYW5hZ2VyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUY2MzQ0NDVDMTJBODg1RTkwMDA2
MTJEOCAvKiBXS1NlY3VyaXR5T3JpZ2luLmNwcCBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0RyYXdpbmdBcmVhLmggYi9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvRHJhd2luZ0FyZWEuaAppbmRleCBhZTU4ZGI2Li5m
NjY4NzIyMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Ry
YXdpbmdBcmVhLmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0RyYXdp
bmdBcmVhLmgKQEAgLTEyNiw2ICsxMjYsMTAgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQg
dXBkYXRlR2VvbWV0cnkoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgdmlld1NpemUsIGNvbnN0IFdl
YkNvcmU6OkludFNpemUmIGxheWVyUG9zaXRpb24pIHsgfQogICAgIHZpcnR1YWwgdm9pZCBzZXRE
ZXZpY2VTY2FsZUZhY3RvcihmbG9hdCkgeyB9CiAgICAgdmlydHVhbCB2b2lkIHNldENvbG9yU3Bh
Y2UoY29uc3QgQ29sb3JTcGFjZURhdGEmKSB7IH0KKworICAgIHZpcnR1YWwgdm9pZCBiZWdpblRy
YW5zaWVudFpvb20oKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgYWRqdXN0VHJhbnNpZW50Wm9vbShk
b3VibGUgc2NhbGUsIFdlYkNvcmU6OkZsb2F0UG9pbnQgb3JpZ2luKSB7IH0KKyAgICB2aXJ0dWFs
IHZvaWQgZW5kVHJhbnNpZW50Wm9vbShkb3VibGUgc2NhbGUsIFdlYkNvcmU6OkZsb2F0UG9pbnQg
b3JpZ2luKSB7IH0KICNlbmRpZgogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJQYWdlL0RyYXdpbmdBcmVhLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJQYWdlL0RyYXdpbmdBcmVhLm1lc3NhZ2VzLmluCmluZGV4IDY2NDFkNTEu
LmIxNGNiZmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9E
cmF3aW5nQXJlYS5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YlBhZ2UvRHJhd2luZ0FyZWEubWVzc2FnZXMuaW4KQEAgLTMwLDUgKzMwLDkgQEAgbWVzc2FnZXMg
LT4gRHJhd2luZ0FyZWEgTGVnYWN5UmVjZWl2ZXIgewogICAgIFVwZGF0ZUdlb21ldHJ5KFdlYkNv
cmU6OkludFNpemUgdmlld1NpemUsIFdlYkNvcmU6OkludFNpemUgbGF5ZXJQb3NpdGlvbikKICAg
ICBTZXREZXZpY2VTY2FsZUZhY3RvcihmbG9hdCBkZXZpY2VTY2FsZUZhY3RvcikKICAgICBTZXRD
b2xvclNwYWNlKFdlYktpdDo6Q29sb3JTcGFjZURhdGEgY29sb3JTcGFjZSkKKyAgICAKKyAgICBC
ZWdpblRyYW5zaWVudFpvb20oKQorICAgIEFkanVzdFRyYW5zaWVudFpvb20oZG91YmxlIHNjYWxl
LCBXZWJDb3JlOjpGbG9hdFBvaW50IG9yaWdpbikKKyAgICBFbmRUcmFuc2llbnRab29tKGRvdWJs
ZSBzY2FsZSwgV2ViQ29yZTo6RmxvYXRQb2ludCBvcmlnaW4pCiAjZW5kaWYKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvVGlsZWRDb3JlQW5pbWF0
aW9uRHJhd2luZ0FyZWEuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMv
VGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWEuaAppbmRleCA2NDdlNWFjLi4zZjUzZjI5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1RpbGVkQ29y
ZUFuaW1hdGlvbkRyYXdpbmdBcmVhLmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJQYWdlL21hYy9UaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYS5oCkBAIC0xMDQsNiArMTA0
LDEwIEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIHNldExheWVySG9zdGluZ01vZGUodWlu
dDMyX3QpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBzZXRDb2xvclNwYWNlKGNvbnN0IENv
bG9yU3BhY2VEYXRhJikgT1ZFUlJJREU7CiAKKyAgICB2aXJ0dWFsIHZvaWQgYmVnaW5UcmFuc2ll
bnRab29tKCkgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIGFkanVzdFRyYW5zaWVudFpvb20o
ZG91YmxlIHNjYWxlLCBXZWJDb3JlOjpGbG9hdFBvaW50IG9yaWdpbikgT1ZFUlJJREU7CisgICAg
dmlydHVhbCB2b2lkIGVuZFRyYW5zaWVudFpvb20oZG91YmxlIHNjYWxlLCBXZWJDb3JlOjpGbG9h
dFBvaW50IG9yaWdpbikgT1ZFUlJJREU7CisKICAgICB2b2lkIHVwZGF0ZUxheWVySG9zdGluZ0Nv
bnRleHQoKTsKIAogICAgIHZvaWQgc2V0Um9vdENvbXBvc2l0aW5nTGF5ZXIoQ0FMYXllciAqKTsK
QEAgLTE0Myw2ICsxNDcsOCBAQCBwcml2YXRlOgogICAgIFdlYkNvcmU6OkludFNpemUgbV9sYXN0
U2VudEludHJpbnNpY0NvbnRlbnRTaXplOwogICAgIFdlYkNvcmU6OlRpbWVyPFRpbGVkQ29yZUFu
aW1hdGlvbkRyYXdpbmdBcmVhPiBtX3VwZGF0ZUludHJpbnNpY0NvbnRlbnRTaXplVGltZXI7CiAg
ICAgYm9vbCBtX2luVXBkYXRlR2VvbWV0cnk7CisKKyAgICBkb3VibGUgbV90cmFuc2llbnRab29t
U2NhbGU7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0Fy
ZWEubW0gYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1RpbGVkQ29yZUFu
aW1hdGlvbkRyYXdpbmdBcmVhLm1tCmluZGV4IDc3Mjk0NzMuLjQwNTlkNmUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvVGlsZWRDb3JlQW5pbWF0aW9u
RHJhd2luZ0FyZWEubW0KKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21h
Yy9UaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYS5tbQpAQCAtMzIsNiArMzIsNyBAQAogI2lt
cG9ydCAiRHJhd2luZ0FyZWFQcm94eU1lc3NhZ2VzLmgiCiAjaW1wb3J0ICJMYXllckhvc3RpbmdD
b250ZXh0LmgiCiAjaW1wb3J0ICJMYXllclRyZWVDb250ZXh0LmgiCisjaW1wb3J0ICJWaWV3R2Vz
dHVyZUNvbnRyb2xsZXJNZXNzYWdlcy5oIgogI2ltcG9ydCAiV2ViRnJhbWUuaCIKICNpbXBvcnQg
IldlYlBhZ2UuaCIKICNpbXBvcnQgIldlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuaCIKQEAgLTQz
LDYgKzQ0LDggQEAKICNpbXBvcnQgPFdlYkNvcmUvR3JhcGhpY3NMYXllckNBLmg+CiAjaW1wb3J0
IDxXZWJDb3JlL01haW5GcmFtZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9QYWdlLmg+CisjaW1wb3J0
IDxXZWJDb3JlL1JlbmRlckxheWVyQmFja2luZy5oPgorI2ltcG9ydCA8V2ViQ29yZS9SZW5kZXJM
YXllckNvbXBvc2l0b3IuaD4KICNpbXBvcnQgPFdlYkNvcmUvUmVuZGVyVmlldy5oPgogI2ltcG9y
dCA8V2ViQ29yZS9TZXR0aW5ncy5oPgogI2ltcG9ydCA8V2ViQ29yZS9UaWxlZEJhY2tpbmcuaD4K
QEAgLTY5Nyw2ICs3MDAsNTQgQEAgYm9vbCBUaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYTo6
c2hvdWxkVXNlVGlsZWRCYWNraW5nRm9yRnJhbWVWaWV3KGNvbnN0IEZyYW0KICAgICByZXR1cm4g
ZnJhbWVWaWV3ICYmIGZyYW1lVmlldy0+ZnJhbWUoKS5pc01haW5GcmFtZSgpOwogfQogCit2b2lk
IFRpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhOjpiZWdpblRyYW5zaWVudFpvb20oKQorewor
ICAgIEZsb2F0UmVjdCB2aXNpYmxlQ29udGVudFJlY3QgPSBtX3dlYlBhZ2UtPmNvcmVQYWdlKCkt
Pm1haW5GcmFtZSgpLnZpZXcoKS0+dmlzaWJsZUNvbnRlbnRSZWN0KFNjcm9sbGFibGVBcmVhOjpJ
bmNsdWRlU2Nyb2xsYmFycyk7CisgICAgbV93ZWJQYWdlLT5zZW5kKE1lc3NhZ2VzOjpWaWV3R2Vz
dHVyZUNvbnRyb2xsZXI6OkRpZEJlZ2luVHJhbnNpZW50Wm9vbSh2aXNpYmxlQ29udGVudFJlY3Qp
KTsKK30KKwordm9pZCBUaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYTo6YWRqdXN0VHJhbnNp
ZW50Wm9vbShkb3VibGUgc2NhbGUsIEZsb2F0UG9pbnQgb3JpZ2luKQoreworICAgIC8vIEZJWE1F
OiBTY3JvbGxiYXJzIHNob3VsZCBzdGF5IGluLXBsYWNlIGFuZCBjaGFuZ2UgaGVpZ2h0IHdoaWxl
IHpvb21pbmcuCisgICAgLy8gRklYTUU6IEtlZXAgYXJvdW5kIHBhZ2VTY2FsZT0xIHRpbGVzIHNv
IHdlIGNhbiB6b29tIG91dCB3aXRob3V0IGdhcHMuCisgICAgLy8gRklYTUU6IEJyaW5nIGluIHVu
cGFyZW50ZWQtYnV0LXBhaW50ZWQgdGlsZXMgd2hlbiB6b29taW5nIG91dCwgdG8gZmlsbCBpbiBh
bnkgZ2Fwcy4KKworICAgIGlmICghbV9yb290TGF5ZXIpCisgICAgICAgIHJldHVybjsKKworICAg
IFJlbmRlclZpZXcqIHJlbmRlclZpZXcgPSBtX3dlYlBhZ2UtPmNvcmVQYWdlKCktPm1haW5GcmFt
ZSgpLnZpZXcoKS0+cmVuZGVyVmlldygpOworCisgICAgVHJhbnNmb3JtYXRpb25NYXRyaXggdHJh
bnNmb3JtOworICAgIHRyYW5zZm9ybS50cmFuc2xhdGUob3JpZ2luLngoKSwgb3JpZ2luLnkoKSk7
CisgICAgdHJhbnNmb3JtLnNjYWxlKHNjYWxlKTsKKworICAgIFBsYXRmb3JtQ0FMYXllciogcmVu
ZGVyVmlld0xheWVyID0gc3RhdGljX2Nhc3Q8R3JhcGhpY3NMYXllckNBKj4ocmVuZGVyVmlldy0+
bGF5ZXIoKS0+YmFja2luZygpLT5ncmFwaGljc0xheWVyKCkpLT5wbGF0Zm9ybUNBTGF5ZXIoKTsK
KyAgICByZW5kZXJWaWV3TGF5ZXItPnNldFRyYW5zZm9ybSh0cmFuc2Zvcm0pOworICAgIHJlbmRl
clZpZXdMYXllci0+c2V0QW5jaG9yUG9pbnQoRmxvYXRQb2ludDNEKCkpOworICAgIHJlbmRlclZp
ZXdMYXllci0+c2V0UG9zaXRpb24oRmxvYXRQb2ludDNEKCkpOworCisgICAgLy8gRklYTUU6IFdl
IHNob3VsZCB0cmFuc2Zvcm0gdGhlIHNoYWRvdyBsYXllciBhcyB3ZWxsLCBpbnN0ZWFkIG9mIGhp
ZGluZyBpdC4KKyAgICBQbGF0Zm9ybUNBTGF5ZXIqIHNoYWRvd0xheWVyID0gc3RhdGljX2Nhc3Q8
R3JhcGhpY3NMYXllckNBKj4ocmVuZGVyVmlldy0+Y29tcG9zaXRvcigpLmxheWVyRm9yQ29udGVu
dFNoYWRvdygpKS0+cGxhdGZvcm1DQUxheWVyKCk7CisgICAgc2hhZG93TGF5ZXItPnNldEhpZGRl
bih0cnVlKTsKKworICAgIG1fdHJhbnNpZW50Wm9vbVNjYWxlID0gc2NhbGU7Cit9CisKK3ZvaWQg
VGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWE6OmVuZFRyYW5zaWVudFpvb20oZG91YmxlIHNj
YWxlLCBGbG9hdFBvaW50IG9yaWdpbikKK3sKKyAgICBSZW5kZXJWaWV3KiByZW5kZXJWaWV3ID0g
bV93ZWJQYWdlLT5jb3JlUGFnZSgpLT5tYWluRnJhbWUoKS52aWV3KCktPnJlbmRlclZpZXcoKTsK
KworICAgIC8vIElmIHRoZSBwYWdlIHNjYWxlIGlzIGFscmVhZHkgdGhlIHRhcmdldCBzY2FsZSwg
c2NhbGVQYWdlKCkgd2lsbCBzaG9ydC1jaXJjdWl0CisgICAgLy8gYW5kIG5vdCBhcHBseSB0aGUg
dHJhbnNmb3JtLCBzbyB3ZSBjYW4ndCBjbGVhciBpdC4KKyAgICBpZiAobV90cmFuc2llbnRab29t
U2NhbGUgIT0gbV93ZWJQYWdlLT5wYWdlU2NhbGVGYWN0b3IoKSkKKyAgICAgICBzdGF0aWNfY2Fz
dDxHcmFwaGljc0xheWVyQ0EqPihyZW5kZXJWaWV3LT5sYXllcigpLT5iYWNraW5nKCktPmdyYXBo
aWNzTGF5ZXIoKSktPnBsYXRmb3JtQ0FMYXllcigpLT5zZXRUcmFuc2Zvcm0oVHJhbnNmb3JtYXRp
b25NYXRyaXgoKSk7CisKKyAgICBQbGF0Zm9ybUNBTGF5ZXIqIHNoYWRvd0xheWVyID0gc3RhdGlj
X2Nhc3Q8R3JhcGhpY3NMYXllckNBKj4ocmVuZGVyVmlldy0+Y29tcG9zaXRvcigpLmxheWVyRm9y
Q29udGVudFNoYWRvdygpKS0+cGxhdGZvcm1DQUxheWVyKCk7CisgICAgc2hhZG93TGF5ZXItPnNl
dEhpZGRlbihmYWxzZSk7CisKKyAgICBtX3dlYlBhZ2UtPnNjYWxlUGFnZShzY2FsZSwgcm91bmRl
ZEludFBvaW50KG9yaWdpbikpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKIAogI2VuZGlm
IC8vICFQTEFURk9STShJT1MpCg==
</data>
<flag name="review"
          id="242616"
          type_id="1"
          status="+"
          setter="simon.fraser"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>219132</attachid>
            <date>2013-12-12 15:58:56 -0800</date>
            <delta_ts>2013-12-12 17:02:06 -0800</delta_ts>
            <desc>take 4 - addressing lots of review comments</desc>
            <filename>zoom.diff</filename>
            <type>text/plain</type>
            <size>42980</size>
            <attacher name="Tim Horton">thorton</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA1ZmRjMjdjLi5hNGViYTQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjAg
QEAKKzIwMTMtMTItMTIgIFRpbSBIb3J0b24gIDx0aW1vdGh5X2hvcnRvbkBhcHBsZS5jb20+CisK
KyAgICAgICAgW3drMl0gSGFuZGxlIHBpbmNoLXRvLXpvb20gZ2VzdHVyZQorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTI1NjA0CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJDb3JlLmV4cC5pbjoKKyAg
ICAgICAgRXhwb3J0IHNvbWUgVHJhbnNmb3JtYXRpb25NYXRyaXggZnVuY3Rpb25zLgorCisgICAg
ICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICBNYWtlIHNv
bWUgaGVhZGVycyBwcml2YXRlIHNvIHRoYXQgUmVuZGVyTGF5ZXJDb21wb3NpdG9yL0JhY2tpbmcg
Y2FuIGJlIHVzZWQgZnJvbSBXZWJLaXQyLgorCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxh
eWVyQ29tcG9zaXRvci5oOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXJDb21wb3NpdG9y
OjpsYXllckZvckNvbnRlbnRTaGFkb3cpOgorICAgICAgICBBZGQgYSBnZXR0ZXIgZm9yIHRoZSBj
b250ZW50IHNoYWRvdyBsYXllci4KKwogMjAxMy0xMi0xMSAgRGF2aWQgS2lsemVyICA8ZGRraWx6
ZXJAYXBwbGUuY29tPgogCiAgICAgICAgIERlZmluZSBtX2hhc0JhZFBhcmVudCBpbiBJbmxpbmVC
b3ggaWYgZGVmaW5lZChBRERSRVNTX1NBTklUSVpFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUuZXhwLmluIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4KaW5kZXgg
Y2E3YmRhZS4uYzM4OGY5NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAu
aW4KKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4KQEAgLTc3Niw2ICs3NzYsOCBA
QCBfX1pON1dlYkNvcmUyMFJlc291cmNlUmVzcG9uc2VCYXNlMjBzZXRTdWdnZXN0ZWRGaWxlbmFt
ZUVSS04zV1RGNlN0cmluZ0UKIF9fWk43V2ViQ29yZTIwUmVzb3VyY2VSZXNwb25zZUJhc2UyNHNl
dEV4cGVjdGVkQ29udGVudExlbmd0aEV4CiBfX1pON1dlYkNvcmUyMFJlc291cmNlUmVzcG9uc2VC
YXNlNnNldFVSTEVSS05TXzNVUkxFCiBfX1pON1dlYkNvcmUyMFJlc291cmNlUmVzcG9uc2VCYXNl
QzJFdgorX19aTjdXZWJDb3JlMjBUcmFuc2Zvcm1hdGlvbk1hdHJpeDl0cmFuc2xhdGVFZGQKK19f
Wk43V2ViQ29yZTIwVHJhbnNmb3JtYXRpb25NYXRyaXg1c2NhbGVFZAogX19aTjdXZWJDb3JlMjBV
c2VyR2VzdHVyZUluZGljYXRvcjdzX3N0YXRlRQogX19aTjdXZWJDb3JlMjBVc2VyR2VzdHVyZUlu
ZGljYXRvckMxRU5TXzI2UHJvY2Vzc2luZ1VzZXJHZXN0dXJlU3RhdGVFCiBfX1pON1dlYkNvcmUy
MFVzZXJHZXN0dXJlSW5kaWNhdG9yRDFFdgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDFhMjNhYzkuLjg4ODQ5MWYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTQ3
Miw3ICs0NzIsNyBAQAogCQkwRjYwNUFFQzE1Rjk0ODQ4MDA0REYwQzAgLyogU2Nyb2xsaW5nQ29u
c3RyYWludHMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMEY2MDVBRUExNUY5NDg0ODAwNERGMEMwIC8qIFNjcm9sbGluZ0NvbnN0cmFpbnRzLmNwcCAq
LzsgfTsKIAkJMEY2MDVBRUQxNUY5NDg0ODAwNERGMEMwIC8qIFNjcm9sbGluZ0NvbnN0cmFpbnRz
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjYwNUFF
QjE1Rjk0ODQ4MDA0REYwQzAgLyogU2Nyb2xsaW5nQ29uc3RyYWludHMuaCAqLzsgfTsKIAkJMEZB
MjRENzkxNjJERjkxOTAwQTNGNEMwIC8qIEdyYXBoaWNzTGF5ZXJVcGRhdGVyLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGQTI0RDc3MTYyREY5MTkw
MEEzRjRDMCAvKiBHcmFwaGljc0xheWVyVXBkYXRlci5jcHAgKi87IH07Ci0JCTBGQTI0RDdBMTYy
REY5MTkwMEEzRjRDMCAvKiBHcmFwaGljc0xheWVyVXBkYXRlci5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZBMjRENzgxNjJERjkxOTAwQTNGNEMwIC8q
IEdyYXBoaWNzTGF5ZXJVcGRhdGVyLmggKi87IH07CisJCTBGQTI0RDdBMTYyREY5MTkwMEEzRjRD
MCAvKiBHcmFwaGljc0xheWVyVXBkYXRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMEZBMjRENzgxNjJERjkxOTAwQTNGNEMwIC8qIEdyYXBoaWNzTGF5
ZXJVcGRhdGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKIAkJMEZBODhFQkQxNkE4RDFCRDAwRjk5OTg0IC8qIFNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5n
Tm9kZU1hYy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDBGQTg4RUJDMTZBOEQxQkQwMEY5OTk4NCAvKiBTY3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05vZGVN
YWMubW0gKi87IH07CiAJCTBGQjg4OTBBMTY3RDJGQTEwMDEwQ0RBNSAvKiBTY3JvbGxpbmdUcmVl
U3RpY2t5Tm9kZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMEZCODg5MDgxNjdEMkZBMTAwMTBDREE1IC8qIFNjcm9sbGluZ1RyZWVTdGlja3lOb2RlLmgg
Ki87IH07CiAJCTBGQjg4OTBCMTY3RDJGQTEwMDEwQ0RBNSAvKiBTY3JvbGxpbmdUcmVlU3RpY2t5
Tm9kZS5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBG
Qjg4OTA5MTY3RDJGQTEwMDEwQ0RBNSAvKiBTY3JvbGxpbmdUcmVlU3RpY2t5Tm9kZS5tbSAqLzsg
fTsKQEAgLTE0NzMsNyArMTQ3Myw3IEBACiAJCTQ5QUUyRDhGMTM0RUU1MEMwMDcyOTIwQSAvKiBD
U1NDYWxjdWxhdGlvblZhbHVlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA0OUFFMkQ4RDEzNEVFNTBDMDA3MjkyMEEgLyogQ1NTQ2FsY3VsYXRpb25WYWx1
ZS5oICovOyB9OwogCQk0OUFFMkQ5NjEzNEVFNUY5MDA3MjkyMEEgLyogQ2FsY3VsYXRpb25WYWx1
ZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0OUFF
MkQ5NDEzNEVFNUY5MDA3MjkyMEEgLyogQ2FsY3VsYXRpb25WYWx1ZS5jcHAgKi87IH07CiAJCTQ5
QUUyRDk3MTM0RUU1RjkwMDcyOTIwQSAvKiBDYWxjdWxhdGlvblZhbHVlLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0OUFFMkQ5NTEzNEVFNUY5MDA3Mjky
MEEgLyogQ2FsY3VsYXRpb25WYWx1ZS5oICovOyB9OwotCQk0OUFGMkQ2OTE0NDM1RDA1MDAxNkE3
ODQgLyogRGlzcGxheVJlZnJlc2hNb25pdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA0OUFGMkQ2ODE0NDM1RDA1MDAxNkE3ODQgLyogRGlzcGxheVJl
ZnJlc2hNb25pdG9yLmggKi87IH07CisJCTQ5QUYyRDY5MTQ0MzVEMDUwMDE2QTc4NCAvKiBEaXNw
bGF5UmVmcmVzaE1vbml0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDQ5QUYyRDY4MTQ0MzVEMDUwMDE2QTc4NCAvKiBEaXNwbGF5UmVmcmVzaE1vbml0
b3IuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0
OUFGMkQ2QzE0NDM1RDIxMDAxNkE3ODQgLyogRGlzcGxheVJlZnJlc2hNb25pdG9yTWFjLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ5QUYyRDZCMTQ0
MzVEMjEwMDE2QTc4NCAvKiBEaXNwbGF5UmVmcmVzaE1vbml0b3JNYWMuY3BwICovOyB9OwogCQk0
OUIzNzYwQzE1QzZDNjg0MDA1OTEzMUQgLyogQXJyYXlWYWx1ZS5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0OUIzNzYwQTE1QzZDNjg0MDA1OTEzMUQg
LyogQXJyYXlWYWx1ZS5jcHAgKi87IH07CiAJCTQ5QjM3NjBEMTVDNkM2ODQwMDU5MTMxRCAvKiBB
cnJheVZhbHVlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA0OUIzNzYwQjE1QzZDNjg0MDA1OTEzMUQgLyogQXJyYXlWYWx1ZS5oICovOyB9OwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5oIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5oCmluZGV4IDI2
MTZhNzYuLmUxN2E0NjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJMYXllckNvbXBvc2l0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
TGF5ZXJDb21wb3NpdG9yLmgKQEAgLTI2Myw2ICsyNjMsNyBAQCBwdWJsaWM6CiAgICAgR3JhcGhp
Y3NMYXllciogbGF5ZXJGb3JTY3JvbGxDb3JuZXIoKSBjb25zdCB7IHJldHVybiBtX2xheWVyRm9y
U2Nyb2xsQ29ybmVyLmdldCgpOyB9CiAjaWYgRU5BQkxFKFJVQkJFUl9CQU5ESU5HKQogICAgIEdy
YXBoaWNzTGF5ZXIqIGxheWVyRm9yT3ZlcmhhbmdBcmVhcygpIGNvbnN0IHsgcmV0dXJuIG1fbGF5
ZXJGb3JPdmVyaGFuZ0FyZWFzLmdldCgpOyB9CisgICAgR3JhcGhpY3NMYXllciogbGF5ZXJGb3JD
b250ZW50U2hhZG93KCkgY29uc3QgeyByZXR1cm4gbV9jb250ZW50U2hhZG93TGF5ZXIuZ2V0KCk7
IH0KIAogICAgIEdyYXBoaWNzTGF5ZXIqIHVwZGF0ZUxheWVyRm9yVG9wT3ZlcmhhbmdBcmVhKGJv
b2wgd2FudHNMYXllcik7CiAgICAgR3JhcGhpY3NMYXllciogdXBkYXRlTGF5ZXJGb3JCb3R0b21P
dmVyaGFuZ0FyZWEoYm9vbCB3YW50c0xheWVyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCAzOTc3NzMzLi45MmI4
NjBhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dl
YktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTExIEBACisyMDEzLTEyLTEyICBUaW0gSG9ydG9u
ICA8dGltb3RoeV9ob3J0b25AYXBwbGUuY29tPgorCisgICAgICAgIFt3azJdIEhhbmRsZSBwaW5j
aC10by16b29tIGdlc3R1cmUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTEyNTYwNAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIEFkZCB0aGUgY29uY2VwdCBvZiBhICJ0cmFuc2llbnQiIHpvb20gdG8gRHJhd2lu
Z0FyZWEsIHdoaWNoIGlzIGEgem9vbQorICAgICAgICB0aGF0IGFmZmVjdHMgdGhlIGNvbnRlbnQs
IGJ1dCBkb2VzIG5vdCBjYXVzZSByZXBhaW50LCBhcyB3b3VsZCBiZSB1c2VkCisgICAgICAgIGZv
ciBhIGxpdmUgcGluY2gtem9vbSBnZXN0dXJlLgorCisgICAgICAgIEFkZCBWaWV3R2VzdHVyZUNv
bnRyb2xsZXIsIHdoaWNoIGN1cnJlbnRseSBvbmx5IGhhbmRsZXMgbWFnbmlmaWNhdGlvbiAKKyAg
ICAgICAgZ2VzdHVyZXMsIGFuZCBrZWVwcyB0cmFjayBvZiB0aGUgY3VycmVudCBnZXN0dXJlJ3Mg
c2NhbGUgYW5kIG9yaWdpbiwgYW5kCisgICAgICAgIGZvcndhcmRzIHJlbGV2YW50IGV2ZW50cyBv
biB0byB0aGUgRHJhd2luZ0FyZWEgdmlhIHRoZSB0cmFuc2llbnQgem9vbSBtZWNoYW5pc20uCisK
KyAgICAgICAgKiBEZXJpdmVkU291cmNlcy5tYWtlOgorICAgICAgICBBZGQgVmlld0dlc3R1cmVD
b250cm9sbGVyIHRvIHRoZSBsaXN0IG9mIG1lc3NhZ2UgcmVjZWl2ZXJzLgorCisgICAgICAgICog
VUlQcm9jZXNzL0FQSS9Db2NvYS9XS1ZpZXdQcml2YXRlLmg6CisgICAgICAgIEFkZCBzaG91bGRI
YW5kbGVNYWduaWZpY2F0aW9uR2VzdHVyZSBwcm9wZXJ0eSwgd2hpY2ggY29udHJvbHMgd2hldGhl
ciBXS1ZpZXcgd2lsbAorICAgICAgICBhdHRlbXB0IHRvIGhhbmRsZSBtYWduaWZ5V2l0aEV2ZW50
Oi4KKworICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvbWFjL1dLVmlldy5tbToKKyAgICAgICAgKC1b
V0tWaWV3IHdhaXRGb3JBc3luY0RyYXdpbmdBcmVhU2l6ZVVwZGF0ZV0pOgorICAgICAgICBGaXgg
YSB0eXBvLgorCisgICAgICAgICgtW1dLVmlldyBfZW5zdXJlR2VzdHVyZUNvbnRyb2xsZXJdKToK
KyAgICAgICAgQ3JlYXRlIG91ciBWaWV3R2VzdHVyZUNvbnRyb2xsZXIgaWYgaXQgZG9lc24ndCBh
bHJlYWR5IGV4aXN0LgorCisgICAgICAgICgtW1dLVmlldyBzZXRBbGxvd3NNYWduaWZpY2F0aW9u
Ol0pOgorICAgICAgICAoLVtXS1ZpZXcgYWxsb3dzTWFnbmlmaWNhdGlvbl0pOgorICAgICAgICBT
UEkgdG8gZW5hYmxlL2Rpc2FibGUgaGFuZGxpbmcgdGhlIG1hZ25pZmljYXRpb24gZ2VzdHVyZS4K
KworICAgICAgICAoLVtXS1ZpZXcgc2V0TWFnbmlmaWNhdGlvbjpjZW50ZXJlZEF0UG9pbnQ6XSk6
CisgICAgICAgICgtW1dLVmlldyBzZXRNYWduaWZpY2F0aW9uOl0pOgorICAgICAgICAoLVtXS1Zp
ZXcgbWFnbmlmaWNhdGlvbl0pOgorICAgICAgICBBZGp1c3Qgb3IgcmV0cmlldmUgdGhlIGN1cnJl
bnQgcGFnZSBzY2FsZS4KKyAgICAgICAgVGhlIHZhcmlhbnQgb2Ygc2V0TWFnbmlmaWNhdGlvbiB0
aGF0IGRvZXMgbm90IHRha2UgYW4gb3JpZ2luIHVzZXMgdGhlIHZpZXcncyBjZW50ZXIuCisKKyAg
ICAgICAgKC1bV0tWaWV3IG1hZ25pZnlXaXRoRXZlbnQ6XSk6CisgICAgICAgICgtW1dLVmlldyBl
bmRHZXN0dXJlV2l0aEV2ZW50Ol0pOgorICAgICAgICBGb3J3YXJkIGdlc3R1cmUgbWV0aG9kcyB0
byBWaWV3R2VzdHVyZUNvbnRyb2xsZXIuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvbWFjL1ZpZXdH
ZXN0dXJlQ29udHJvbGxlci5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpWaWV3R2VzdHVy
ZUNvbnRyb2xsZXI6OmNyZWF0ZSk6CisgICAgICAgIChXZWJLaXQ6OlZpZXdHZXN0dXJlQ29udHJv
bGxlcjo6Vmlld0dlc3R1cmVDb250cm9sbGVyKToKKyAgICAgICAgKFdlYktpdDo6Vmlld0dlc3R1
cmVDb250cm9sbGVyOjp+Vmlld0dlc3R1cmVDb250cm9sbGVyKToKKyAgICAgICAgKFdlYktpdDo6
cmVzaXN0YW5jZUZvckRlbHRhKToKKyAgICAgICAgQ29tcHV0ZSBhIHJlc2lzdGFuY2UgZmFjdG9y
LCB3aGljaCBtYWtlcyBpdCBmZWVsICJoYXJkIiB0byB6b29tIG91dCBwYXN0CisgICAgICAgIHNj
YWxlPTEsIGFuZCBhY2NlbGVyYXRlcyBzY2FsaW5nIG91dCBiZWZvcmUgeW91IGhpdCBzY2FsZT0x
LgorCisgICAgICAgIChXZWJLaXQ6OlZpZXdHZXN0dXJlQ29udHJvbGxlcjo6c2NhbGVkTWFnbmlm
aWNhdGlvbk9yaWdpbik6CisgICAgICAgIENvbXB1dGUgdGhlIG9yaWdpbiBvZiB0aGUgbWFnbmlm
aWNhdGlvbiBnZXN0dXJlIHdpdGggdGhlIHRyYW5zaWVudCB6b29tIHVuYXBwbGllZC4KKworICAg
ICAgICAoV2ViS2l0OjpWaWV3R2VzdHVyZUNvbnRyb2xsZXI6OmhhbmRsZU1hZ25pZmljYXRpb25H
ZXN0dXJlKToKKyAgICAgICAgVGhlIGZpcnN0IG1hZ25pZmljYXRpb24gZ2VzdHVyZSB3aWxsIHNl
bmQgYSBtZXNzYWdlIHRvIHRoZSBXZWJQcm9jZXNzCisgICAgICAgIHRvIHJldHJpZXZlIHRoZSB2
aXNpYmxlIGNvbnRlbnQgcmVjdC4gU3Vic2VxdWVudCBnZXN0dXJlcyB3aWxsCisgICAgICAgIGhh
bmQgdGhlIG5ldyBtYWduaWZpY2F0aW9uIGFuZCBvcmlnaW4gdG8gdGhlIERyYXdpbmdBcmVhIHRv
IGFwcGx5LgorCisgICAgICAgIChXZWJLaXQ6OlZpZXdHZXN0dXJlQ29udHJvbGxlcjo6ZGlkQmVn
aW5UcmFuc2llbnRab29tKToKKyAgICAgICAgQ2FsbGJhY2sgZnJvbSB0aGUgV2ViUHJvY2Vzcywg
d2l0aCB0aGUgY3VycmVudCB2aXNpYmxlIGNvbnRlbnQgcmVjdC4KKyAgICAgICAgU3Vic2VxdWVu
dCBtYWduaWZpY2F0aW9uIGdlc3R1cmVzIHdpbGwgZm9yd2FyZCB0aGUgc2NhbGUgYW5kIG9yaWdp
biB0byB0aGUgRHJhd2luZ0FyZWEuCisgICAgICAgIAorICAgICAgICAoV2ViS2l0OjpWaWV3R2Vz
dHVyZUNvbnRyb2xsZXI6OmVuZE1hZ25pZmljYXRpb25HZXN0dXJlKToKKyAgICAgICAgQ29tbWl0
IHRoZSBjdXJyZW50IHRyYW5zaWVudCBzY2FsZSBhcyB0aGUgYWN0dWFsIHBhZ2Ugc2NhbGUsIHdo
aWNoIHdpbGwgY2F1c2UKKyAgICAgICAgYSByZXBhaW50IGFuZCBicmluZyBpbiBhbGwgdGhlIHRp
bGVzLgorCisgICAgICAgIChXZWJLaXQ6OlZpZXdHZXN0dXJlQ29udHJvbGxlcjo6ZW5kQWN0aXZl
R2VzdHVyZSk6CisgICAgICAgIElmIHdlIGhhdmUgYW4gYWN0aXZlIGdlc3R1cmUsIGNhbGwgaXRz
IGVuZCBmdW5jdGlvbi4KKworICAgICAgICAqIFVJUHJvY2Vzcy9tYWMvVmlld0dlc3R1cmVDb250
cm9sbGVyLmg6IEFkZGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9tYWMvVmlld0dlc3R1cmVDb250
cm9sbGVyLm1lc3NhZ2VzLmluOiBBZGRlZC4KKworICAgICAgICAqIFdlYktpdDIueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgQWRkIG5ldyBmaWxlcy4KKworICAgICAgICAqIFdl
YlByb2Nlc3MvV2ViUGFnZS9tYWMvVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWEuaDoKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1RpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdB
cmVhLm1tOgorICAgICAgICAoV2ViS2l0OjpUaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYTo6
YmVnaW5UcmFuc2llbnRab29tKToKKyAgICAgICAgQ2FsbCBiYWNrIHRvIFZpZXdHZXN0dXJlQ29u
dHJvbGxlciB3aXRoIHRoZSB2aXNpYmxlQ29udGVudFJlY3QuCisKKyAgICAgICAgKFdlYktpdDo6
VGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWE6OmFkanVzdFRyYW5zaWVudFpvb20pOgorICAg
ICAgICBTY2FsZSBhbmQgdHJhbnNsYXRlIHRoZSBSZW5kZXJWaWV3J3MgUGxhdGZvcm1DQUxheWVy
LgorICAgICAgICBSZWFjaGluZyBpbnRvIHRoZSBsYXllciB0cmVlIGxpa2UgdGhpcyBpcyBzY2Fy
eSwgd2Ugc2hvdWxkIGNvbnNpZGVyCisgICAgICAgIHRlYWNoaW5nIFJlbmRlckxheWVyQ29tcG9z
aXRvciBhYm91dCB0cmFuc2llbnQgem9vbS4KKyAgICAgICAgSGlkZSB0aGUgY29udGVudCBzaGFk
b3cgbGF5ZXIgZm9yIG5vdy4KKworICAgICAgICAoV2ViS2l0OjpUaWxlZENvcmVBbmltYXRpb25E
cmF3aW5nQXJlYTo6Y29tbWl0VHJhbnNpZW50Wm9vbSk6CisgICAgICAgIENsZWFyIG91ciBjdXN0
b20gdHJhbnNmb3JtIG9uIHRoZSBSZW5kZXJWaWV3J3MgbGF5ZXIsIGFuZAorICAgICAgICBjaGFu
Z2UgdGhlIGFjdHVhbCBwYWdlIHNjYWxlLCBjYXVzaW5nIGEgcmVwYWludC4KKyAgICAgICAgVW4t
aGlkZSB0aGUgc2hhZG93IGxheWVyLgorCisgICAgICAgICogVUlQcm9jZXNzL0RyYXdpbmdBcmVh
UHJveHkuaDoKKyAgICAgICAgKFdlYktpdDo6RHJhd2luZ0FyZWFQcm94eTo6YmVnaW5UcmFuc2ll
bnRab29tKToKKyAgICAgICAgKFdlYktpdDo6RHJhd2luZ0FyZWFQcm94eTo6YWRqdXN0VHJhbnNp
ZW50Wm9vbSk6CisgICAgICAgIChXZWJLaXQ6OkRyYXdpbmdBcmVhUHJveHk6OmNvbW1pdFRyYW5z
aWVudFpvb20pOgorICAgICAgICAqIFVJUHJvY2Vzcy9tYWMvVGlsZWRDb3JlQW5pbWF0aW9uRHJh
d2luZ0FyZWFQcm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9tYWMvVGlsZWRDb3JlQW5pbWF0
aW9uRHJhd2luZ0FyZWFQcm94eS5tbToKKyAgICAgICAgKFdlYktpdDo6VGlsZWRDb3JlQW5pbWF0
aW9uRHJhd2luZ0FyZWFQcm94eTo6YmVnaW5UcmFuc2llbnRab29tKToKKyAgICAgICAgKFdlYktp
dDo6VGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWFQcm94eTo6YWRqdXN0VHJhbnNpZW50Wm9v
bSk6CisgICAgICAgIChXZWJLaXQ6OlRpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhUHJveHk6
OmNvbW1pdFRyYW5zaWVudFpvb20pOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9EcmF3
aW5nQXJlYS5oOgorICAgICAgICAoV2ViS2l0OjpEcmF3aW5nQXJlYTo6YmVnaW5UcmFuc2llbnRa
b29tKToKKyAgICAgICAgKFdlYktpdDo6RHJhd2luZ0FyZWE6OmFkanVzdFRyYW5zaWVudFpvb20p
OgorICAgICAgICAoV2ViS2l0OjpEcmF3aW5nQXJlYTo6Y29tbWl0VHJhbnNpZW50Wm9vbSk6Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL0RyYXdpbmdBcmVhLm1lc3NhZ2VzLmluOgorICAg
ICAgICBHZW5lcmljIHBsdW1iaW5nIGZvciB7YmVnaW4sIGFkanVzdCwgZW5kfVRyYW5zaWVudFpv
b20uCisKIDIwMTMtMTItMTEgIEFuZGVycyBDYXJsc3NvbiAgPGFuZGVyc2NhQGFwcGxlLmNvbT4K
IAogICAgICAgICBNZXNzYWdlUmVjZWl2ZXJNYXAgc2hvdWxkIHRha2UgTWVzc2FnZVJlY2VpdmVy
IG9iamVjdHMgYnkgcmVmZXJlbmNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9EZXJpdmVk
U291cmNlcy5tYWtlIGIvU291cmNlL1dlYktpdDIvRGVyaXZlZFNvdXJjZXMubWFrZQppbmRleCAy
ODkyY2Y4Li5hNjVhZDcxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9EZXJpdmVkU291cmNl
cy5tYWtlCisrKyBiL1NvdXJjZS9XZWJLaXQyL0Rlcml2ZWRTb3VyY2VzLm1ha2UKQEAgLTg5LDYg
Kzg5LDcgQEAgTUVTU0FHRV9SRUNFSVZFUlMgPSBcCiAgICAgU2VjSXRlbVNoaW1Qcm94eSBcCiAg
ICAgU3RvcmFnZUFyZWFNYXAgXAogICAgIFN0b3JhZ2VNYW5hZ2VyIFwKKyAgICBWaWV3R2VzdHVy
ZUNvbnRyb2xsZXIgXAogICAgIFdlYkFwcGxpY2F0aW9uQ2FjaGVNYW5hZ2VyIFwKICAgICBXZWJB
cHBsaWNhdGlvbkNhY2hlTWFuYWdlclByb3h5IFwKICAgICBXZWJDb25uZWN0aW9uIFwKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tWaWV3UHJpdmF0ZS5o
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1ZpZXdQcml2YXRlLmgKaW5k
ZXggOGMwZmVhOS4uNmYxZmQyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9Db2NvYS9XS1ZpZXdQcml2YXRlLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9Db2NvYS9XS1ZpZXdQcml2YXRlLmgKQEAgLTc3LDYgKzc3LDggQEAgdHlwZWRlZiBlbnVt
IHsKIEBwcm9wZXJ0eSAocmVhZHdyaXRlKSBCT09MIHNob3VsZENsaXBUb1Zpc2libGVSZWN0Owog
QHByb3BlcnR5IChyZWFkd3JpdGUpIEJPT0wgc2hvdWxkRXhwYW5kVG9WaWV3SGVpZ2h0Rm9yQXV0
b0xheW91dDsKIEBwcm9wZXJ0eSAocmVhZG9ubHksIGdldHRlcj1pc1VzaW5nVUlTaWRlQ29tcG9z
aXRpbmcpIEJPT0wgdXNpbmdVSVNpZGVDb21wb3NpdGluZzsKK0Bwcm9wZXJ0eSAocmVhZHdyaXRl
KSBCT09MIGFsbG93c01hZ25pZmljYXRpb247CitAcHJvcGVydHkgKHJlYWR3cml0ZSkgZG91Ymxl
IG1hZ25pZmljYXRpb247CiAKIEBwcm9wZXJ0eShjb3B5LCBub25hdG9taWMpIE5TQ29sb3IgKnVu
ZGVybGF5Q29sb3I7CiAKQEAgLTk0LDYgKzk2LDggQEAgdHlwZWRlZiBlbnVtIHsKIC0gKHZvaWQp
Zm9yY2VBc3luY0RyYXdpbmdBcmVhU2l6ZVVwZGF0ZTooTlNTaXplKXNpemU7CiAtICh2b2lkKXdh
aXRGb3JBc3luY0RyYXdpbmdBcmVhU2l6ZVVwZGF0ZTsKIAorLSAodm9pZClzZXRNYWduaWZpY2F0
aW9uOihkb3VibGUpbWFnbmlmaWNhdGlvbiBjZW50ZXJlZEF0UG9pbnQ6KE5TUG9pbnQpcG9pbnQ7
CisKICNlbmRpZgogCiBAZW5kCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL21hYy9XS1ZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL21hYy9XS1Zp
ZXcubW0KaW5kZXggODVjNWVhOC4uNzc5MzU4NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9tYWMvV0tWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvbWFjL1dLVmlldy5tbQpAQCAtNDksNiArNDksNyBAQAogI2ltcG9ydCAiVGV4dENoZWNr
ZXIuaCIKICNpbXBvcnQgIlRleHRDaGVja2VyU3RhdGUuaCIKICNpbXBvcnQgIlRpbGVkQ29yZUFu
aW1hdGlvbkRyYXdpbmdBcmVhUHJveHkuaCIKKyNpbXBvcnQgIlZpZXdHZXN0dXJlQ29udHJvbGxl
ci5oIgogI2ltcG9ydCAiV0tBUElDYXN0LmgiCiAjaW1wb3J0ICJXS0Z1bGxTY3JlZW5XaW5kb3dD
b250cm9sbGVyLmgiCiAjaW1wb3J0ICJXS1ByaW50aW5nVmlldy5oIgpAQCAtMjMxLDYgKzIzMiw5
IEBAIHN0cnVjdCBXS1ZpZXdJbnRlcnByZXRLZXlFdmVudHNQYXJhbWV0ZXJzIHsKICAgICBOU1Jl
Y3QgX2NvbnRlbnRQcmVwYXJhdGlvblJlY3Q7CiAgICAgQk9PTCBfdXNlQ29udGVudFByZXBhcmF0
aW9uUmVjdEZvclZpc2libGVSZWN0OwogICAgIEJPT0wgX3dpbmRvd09jY2x1c2lvbkRldGVjdGlv
bkVuYWJsZWQ7CisKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8Vmlld0dlc3R1cmVDb250cm9sbGVyPiBf
Z2VzdHVyZUNvbnRyb2xsZXI7CisgICAgQk9PTCBfYWxsb3dzTWFnbmlmaWNhdGlvbjsKIH0KIAog
QGVuZApAQCAtMzIzNCw3ICszMjM4LDcgQEAgc3RhdGljIE5TU3RyaW5nICpwYXRoV2l0aFVuaXF1
ZUZpbGVuYW1lRm9yUGF0aChOU1N0cmluZyAqcGF0aCkKIC0gKHZvaWQpd2FpdEZvckFzeW5jRHJh
d2luZ0FyZWFTaXplVXBkYXRlCiB7CiAgICAgaWYgKERyYXdpbmdBcmVhUHJveHkqIGRyYXdpbmdB
cmVhID0gX2RhdGEtPl9wYWdlLT5kcmF3aW5nQXJlYSgpKSB7Ci0gICAgICAgIC8vIElmIGEgZ2Vv
bWV0cnkgdXBkYXRlIGlzIHN0aWxsIHBlbmRpbmcgdGhlbiB0aGUgYWN0aW9uIG9mIHJlY2lldmlu
ZyB0aGUKKyAgICAgICAgLy8gSWYgYSBnZW9tZXRyeSB1cGRhdGUgaXMgc3RpbGwgcGVuZGluZyB0
aGVuIHRoZSBhY3Rpb24gb2YgcmVjZWl2aW5nIHRoZQogICAgICAgICAvLyBmaXJzdCBnZW9tZXRy
eSB1cGRhdGUgbWF5IHJlc3VsdCBpbiBhbm90aGVyIHVwZGF0ZSBiZWluZyBzY2hlZHVsZWQgLQog
ICAgICAgICAvLyB3ZSBzaG91bGQgd2FpdCBmb3IgdGhpcyB0byBjb21wbGV0ZSB0b28uCiAgICAg
ICAgIGRyYXdpbmdBcmVhLT53YWl0Rm9yUG9zc2libGVHZW9tZXRyeVVwZGF0ZShEcmF3aW5nQXJl
YVByb3h5OjpkaWRVcGRhdGVCYWNraW5nU3RvcmVTdGF0ZVRpbWVvdXQgKiAwLjUpOwpAQCAtMzI1
MCw2ICszMjU0LDU4IEBAIHN0YXRpYyBOU1N0cmluZyAqcGF0aFdpdGhVbmlxdWVGaWxlbmFtZUZv
clBhdGgoTlNTdHJpbmcgKnBhdGgpCiAgICAgcmV0dXJuIE5POwogfQogCistICh2b2lkKV9lbnN1
cmVHZXN0dXJlQ29udHJvbGxlcgoreworICAgIGlmIChfZGF0YS0+X2dlc3R1cmVDb250cm9sbGVy
KQorICAgICAgICByZXR1cm47CisKKyAgICBfZGF0YS0+X2dlc3R1cmVDb250cm9sbGVyID0gc3Rk
OjptYWtlX3VuaXF1ZTxWaWV3R2VzdHVyZUNvbnRyb2xsZXI+KCpfZGF0YS0+X3BhZ2UpOworfQor
CistICh2b2lkKXNldEFsbG93c01hZ25pZmljYXRpb246KEJPT0wpYWxsb3dzTWFnbmlmaWNhdGlv
bgoreworICAgIF9kYXRhLT5fYWxsb3dzTWFnbmlmaWNhdGlvbiA9IGFsbG93c01hZ25pZmljYXRp
b247Cit9CisKKy0gKEJPT0wpYWxsb3dzTWFnbmlmaWNhdGlvbgoreworICAgIHJldHVybiBfZGF0
YS0+X2FsbG93c01hZ25pZmljYXRpb247Cit9CisKKy0gKHZvaWQpbWFnbmlmeVdpdGhFdmVudDoo
TlNFdmVudCAqKWV2ZW50Cit7CisgICAgaWYgKCFfZGF0YS0+X2FsbG93c01hZ25pZmljYXRpb24p
CisgICAgICAgIHJldHVybjsKKworICAgIFtzZWxmIF9lbnN1cmVHZXN0dXJlQ29udHJvbGxlcl07
CisKKyAgICBfZGF0YS0+X2dlc3R1cmVDb250cm9sbGVyLT5oYW5kbGVNYWduaWZpY2F0aW9uR2Vz
dHVyZShldmVudC5tYWduaWZpY2F0aW9uLCBbc2VsZiBjb252ZXJ0UG9pbnQ6ZXZlbnQubG9jYXRp
b25JbldpbmRvdyBmcm9tVmlldzpuaWxdKTsKK30KKworLSh2b2lkKWVuZEdlc3R1cmVXaXRoRXZl
bnQ6KE5TRXZlbnQgKilldmVudAoreworICAgIGlmICghX2RhdGEtPl9nZXN0dXJlQ29udHJvbGxl
cikKKyAgICAgICAgcmV0dXJuOworCisgICAgX2RhdGEtPl9nZXN0dXJlQ29udHJvbGxlci0+ZW5k
QWN0aXZlR2VzdHVyZSgpOworfQorCistICh2b2lkKXNldE1hZ25pZmljYXRpb246KGRvdWJsZSlt
YWduaWZpY2F0aW9uIGNlbnRlcmVkQXRQb2ludDooTlNQb2ludClwb2ludAoreworICAgIF9kYXRh
LT5fcGFnZS0+c2NhbGVQYWdlKG1hZ25pZmljYXRpb24sIHJvdW5kZWRJbnRQb2ludChwb2ludCkp
OworfQorCistICh2b2lkKXNldE1hZ25pZmljYXRpb246KGRvdWJsZSltYWduaWZpY2F0aW9uCit7
CisgICAgRmxvYXRQb2ludCB2aWV3Q2VudGVyKE5TTWlkWChbc2VsZiBib3VuZHNdKSwgTlNNaWRZ
KFtzZWxmIGJvdW5kc10pKTsKKyAgICBfZGF0YS0+X3BhZ2UtPnNjYWxlUGFnZShtYWduaWZpY2F0
aW9uLCByb3VuZGVkSW50UG9pbnQodmlld0NlbnRlcikpOworfQorCistIChkb3VibGUpbWFnbmlm
aWNhdGlvbgoreworICAgIHJldHVybiBfZGF0YS0+X3BhZ2UtPnBhZ2VTY2FsZUZhY3RvcigpOwor
fQorCiBAZW5kCiAKIEBpbXBsZW1lbnRhdGlvbiBXS1Jlc3BvbmRlckNoYWluU2luawpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0RyYXdpbmdBcmVhUHJveHkuaCBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9EcmF3aW5nQXJlYVByb3h5LmgKaW5kZXggMzM0ZGYzNy4uMzRi
NWJmNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0RyYXdpbmdBcmVhUHJv
eHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvRHJhd2luZ0FyZWFQcm94eS5oCkBA
IC03MCw2ICs3MCwxMCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGNvbG9yU3BhY2VEaWRD
aGFuZ2UoKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgbWluaW11bUxheW91dFNpemVEaWRDaGFuZ2Uo
KSB7IH0KIAorICAgIHZpcnR1YWwgdm9pZCBiZWdpblRyYW5zaWVudFpvb20oKSB7IH0KKyAgICB2
aXJ0dWFsIHZvaWQgYWRqdXN0VHJhbnNpZW50Wm9vbShkb3VibGUgc2NhbGUsIFdlYkNvcmU6OkZs
b2F0UG9pbnQgb3JpZ2luKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgY29tbWl0VHJhbnNpZW50Wm9v
bShkb3VibGUgc2NhbGUsIFdlYkNvcmU6OkZsb2F0UG9pbnQgb3JpZ2luKSB7IH0KKwogcHJvdGVj
dGVkOgogICAgIGV4cGxpY2l0IERyYXdpbmdBcmVhUHJveHkoRHJhd2luZ0FyZWFUeXBlLCBXZWJQ
YWdlUHJveHkqKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9U
aWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvbWFjL1RpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhUHJveHkuaAppbmRleCBjYjgz
NTVmLi44ZTNhNTc4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1Rp
bGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvbWFjL1RpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhUHJveHkuaApAQCAtNTAs
NiArNTAsMTAgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgZXhpdEFjY2VsZXJhdGVkQ29t
cG9zaXRpbmdNb2RlKHVpbnQ2NF90IGJhY2tpbmdTdG9yZVN0YXRlSUQsIGNvbnN0IFVwZGF0ZUlu
Zm8mKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlQWNjZWxlcmF0ZWRDb21wb3Np
dGluZ01vZGUodWludDY0X3QgYmFja2luZ1N0b3JlU3RhdGVJRCwgY29uc3QgTGF5ZXJUcmVlQ29u
dGV4dCYpIE9WRVJSSURFOwogCisgICAgdmlydHVhbCB2b2lkIGJlZ2luVHJhbnNpZW50Wm9vbSgp
IE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBhZGp1c3RUcmFuc2llbnRab29tKGRvdWJsZSBz
Y2FsZSwgV2ViQ29yZTo6RmxvYXRQb2ludCBvcmlnaW4pIE9WRVJSSURFOworICAgIHZpcnR1YWwg
dm9pZCBjb21taXRUcmFuc2llbnRab29tKGRvdWJsZSBzY2FsZSwgV2ViQ29yZTo6RmxvYXRQb2lu
dCBvcmlnaW4pIE9WRVJSSURFOworCiAgICAgLy8gTWVzc2FnZSBoYW5kbGVycy4KICAgICB2aXJ0
dWFsIHZvaWQgZGlkVXBkYXRlR2VvbWV0cnkoKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQg
aW50cmluc2ljQ29udGVudFNpemVEaWRDaGFuZ2UoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgbmV3
SW50cmluc2ljQ29udGVudFNpemUpIE9WRVJSSURFOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL21hYy9UaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYVByb3h5Lm1tIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9UaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJl
YVByb3h5Lm1tCmluZGV4IDExMmYwYWEuLjZjNzBjMzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9tYWMvVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWFQcm94eS5tbQor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1RpbGVkQ29yZUFuaW1hdGlvbkRyYXdp
bmdBcmVhUHJveHkubW0KQEAgLTE0OCw2ICsxNDgsMjEgQEAgdm9pZCBUaWxlZENvcmVBbmltYXRp
b25EcmF3aW5nQXJlYVByb3h5OjpzZW5kVXBkYXRlR2VvbWV0cnkoKQogICAgIG1faXNXYWl0aW5n
Rm9yRGlkVXBkYXRlR2VvbWV0cnkgPSB0cnVlOwogfQogCit2b2lkIFRpbGVkQ29yZUFuaW1hdGlv
bkRyYXdpbmdBcmVhUHJveHk6OmJlZ2luVHJhbnNpZW50Wm9vbSgpCit7CisgICAgbV93ZWJQYWdl
UHJveHktPnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpEcmF3aW5nQXJlYTo6QmVnaW5UcmFuc2ll
bnRab29tKCksIG1fd2ViUGFnZVByb3h5LT5wYWdlSUQoKSk7Cit9CisKK3ZvaWQgVGlsZWRDb3Jl
QW5pbWF0aW9uRHJhd2luZ0FyZWFQcm94eTo6YWRqdXN0VHJhbnNpZW50Wm9vbShkb3VibGUgc2Nh
bGUsIEZsb2F0UG9pbnQgb3JpZ2luKQoreworICAgIG1fd2ViUGFnZVByb3h5LT5wcm9jZXNzKCku
c2VuZChNZXNzYWdlczo6RHJhd2luZ0FyZWE6OkFkanVzdFRyYW5zaWVudFpvb20oc2NhbGUsIG9y
aWdpbiksIG1fd2ViUGFnZVByb3h5LT5wYWdlSUQoKSk7Cit9CisKK3ZvaWQgVGlsZWRDb3JlQW5p
bWF0aW9uRHJhd2luZ0FyZWFQcm94eTo6Y29tbWl0VHJhbnNpZW50Wm9vbShkb3VibGUgc2NhbGUs
IEZsb2F0UG9pbnQgb3JpZ2luKQoreworICAgIG1fd2ViUGFnZVByb3h5LT5wcm9jZXNzKCkuc2Vu
ZChNZXNzYWdlczo6RHJhd2luZ0FyZWE6OkNvbW1pdFRyYW5zaWVudFpvb20oc2NhbGUsIG9yaWdp
biksIG1fd2ViUGFnZVByb3h5LT5wYWdlSUQoKSk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYktp
dAogCiAjZW5kaWYgLy8gIVBMQVRGT1JNKElPUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9tYWMvVmlld0dlc3R1cmVDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9tYWMvVmlld0dlc3R1cmVDb250cm9sbGVyLmNwcApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwLi5lNGMzNzYwCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL21hYy9WaWV3R2VzdHVyZUNvbnRyb2xsZXIuY3BwCkBAIC0wLDAgKzEs
MTQ0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgor
ICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAq
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAiY29uZmlnLmgiCisjaW1wb3J0ICJWaWV3R2Vz
dHVyZUNvbnRyb2xsZXIuaCIKKworI2ltcG9ydCAiVmlld0dlc3R1cmVDb250cm9sbGVyTWVzc2Fn
ZXMuaCIKKyNpbXBvcnQgIldlYlBhZ2VQcm94eS5oIgorI2ltcG9ydCAiV2ViUHJvY2Vzc1Byb3h5
LmgiCisKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOworCitzdGF0aWMgY29uc3QgQ0dGbG9hdCBt
aW5NYWduaWZpY2F0aW9uID0gMC43NTsKK3N0YXRpYyBjb25zdCBDR0Zsb2F0IG1heE1hZ25pZmlj
YXRpb24gPSAzOworCitzdGF0aWMgY29uc3QgQ0dGbG9hdCB6b29tT3V0Qm9vc3QgPSAxLjY7Citz
dGF0aWMgY29uc3QgQ0dGbG9hdCB6b29tT3V0UmVzaXN0YW5jZSA9IDAuMTA7CisKK25hbWVzcGFj
ZSBXZWJLaXQgeworCitWaWV3R2VzdHVyZUNvbnRyb2xsZXI6OlZpZXdHZXN0dXJlQ29udHJvbGxl
cihXZWJQYWdlUHJveHkmIHdlYlBhZ2VQcm94eSkKKyAgICA6IG1fYWN0aXZlR2VzdHVyZVR5cGUo
Vmlld0dlc3R1cmVUeXBlOjpOb25lKQorICAgICwgbV92aXNpYmxlQ29udGVudFJlY3RJc1ZhbGlk
KGZhbHNlKQorICAgICwgbV93ZWJQYWdlUHJveHkod2ViUGFnZVByb3h5KQoreworICAgIG1fd2Vi
UGFnZVByb3h5LnByb2Nlc3MoKS5hZGRNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OlZpZXdHZXN0
dXJlQ29udHJvbGxlcjo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtX3dlYlBhZ2VQcm94eS5wYWdl
SUQoKSwgKnRoaXMpOworfQorCitWaWV3R2VzdHVyZUNvbnRyb2xsZXI6On5WaWV3R2VzdHVyZUNv
bnRyb2xsZXIoKQoreworICAgIG1fd2ViUGFnZVByb3h5LnByb2Nlc3MoKS5yZW1vdmVNZXNzYWdl
UmVjZWl2ZXIoTWVzc2FnZXM6OlZpZXdHZXN0dXJlQ29udHJvbGxlcjo6bWVzc2FnZVJlY2VpdmVy
TmFtZSgpLCBtX3dlYlBhZ2VQcm94eS5wYWdlSUQoKSk7Cit9CisKK3N0YXRpYyBkb3VibGUgcmVz
aXN0YW5jZUZvckRlbHRhKGRvdWJsZSBkZWx0YVNjYWxlLCBkb3VibGUgY3VycmVudFNjYWxlKQor
eworICAgIC8vIFpvb20gaW4gd2l0aCBubyBhY2NlbGVyYXRpb24uCisgICAgLy8gRklYTUU6IFNo
b3VsZCBoYXZlIHJlc2lzdGFuY2Ugd2hlbiB6b29taW5nIGluIHBhc3QgdGhlIGxpbWl0LgorICAg
IGlmIChkZWx0YVNjYWxlID4gMCkKKyAgICAgICAgcmV0dXJuIDE7CisKKyAgICAvLyBab29tIG91
dCB3aXRoIHNsaWdodCBhY2NlbGVyYXRpb24sIHVudGlsIHdlIHJlYWNoIHVuaXQgc2NhbGUuCisg
ICAgaWYgKGN1cnJlbnRTY2FsZSA+IDEpCisgICAgICAgIHJldHVybiB6b29tT3V0Qm9vc3Q7CisK
KyAgICAvLyBCZXlvbmQgc2NhbGU9MSwgcmVzaXN0IHpvb21pbmcgb3V0LgorICAgIGRvdWJsZSBz
Y2FsZURpc3RhbmNlID0gbWluTWFnbmlmaWNhdGlvbiAtIGN1cnJlbnRTY2FsZTsKKyAgICBkb3Vi
bGUgc2NhbGVQZXJjZW50ID0gc3RkOjptaW4oc3RkOjptYXgoc2NhbGVEaXN0YW5jZSAvIG1pbk1h
Z25pZmljYXRpb24sIDAuKSwgMS4pOworICAgIGRvdWJsZSByZXNpc3RhbmNlID0gem9vbU91dFJl
c2lzdGFuY2UgKyBzY2FsZVBlcmNlbnQgKiAoMC4wMSAtIHpvb21PdXRSZXNpc3RhbmNlKTsKKwor
ICAgIHJldHVybiByZXNpc3RhbmNlOworfQorCitGbG9hdFBvaW50IFZpZXdHZXN0dXJlQ29udHJv
bGxlcjo6c2NhbGVkTWFnbmlmaWNhdGlvbk9yaWdpbihGbG9hdFBvaW50IG9yaWdpbiwgZG91Ymxl
IHNjYWxlKQoreworICAgIEZsb2F0UG9pbnQgc2NhbGVkTWFnbmlmaWNhdGlvbk9yaWdpbihvcmln
aW4pOworICAgIHNjYWxlZE1hZ25pZmljYXRpb25PcmlnaW4ubW92ZUJ5KG1fdmlzaWJsZUNvbnRl
bnRSZWN0LmxvY2F0aW9uKCkpOworICAgIGZsb2F0IG1hZ25pZmljYXRpb25PcmlnaW5TY2FsZSA9
IDEgLSAoc2NhbGUgLyBtX3dlYlBhZ2VQcm94eS5wYWdlU2NhbGVGYWN0b3IoKSk7CisgICAgc2Nh
bGVkTWFnbmlmaWNhdGlvbk9yaWdpbi5zY2FsZShtYWduaWZpY2F0aW9uT3JpZ2luU2NhbGUsIG1h
Z25pZmljYXRpb25PcmlnaW5TY2FsZSk7CisgICAgcmV0dXJuIHNjYWxlZE1hZ25pZmljYXRpb25P
cmlnaW47Cit9CisKK3ZvaWQgVmlld0dlc3R1cmVDb250cm9sbGVyOjpkaWRCZWdpblRyYW5zaWVu
dFpvb20oRmxvYXRSZWN0IHZpc2libGVDb250ZW50UmVjdCkKK3sKKyAgICBtX2FjdGl2ZUdlc3R1
cmVUeXBlID0gVmlld0dlc3R1cmVUeXBlOjpNYWduaWZpY2F0aW9uOworICAgIG1fdmlzaWJsZUNv
bnRlbnRSZWN0ID0gdmlzaWJsZUNvbnRlbnRSZWN0OworICAgIG1fdmlzaWJsZUNvbnRlbnRSZWN0
SXNWYWxpZCA9IHRydWU7Cit9CisKK3ZvaWQgVmlld0dlc3R1cmVDb250cm9sbGVyOjpoYW5kbGVN
YWduaWZpY2F0aW9uR2VzdHVyZShkb3VibGUgc2NhbGUsIEZsb2F0UG9pbnQgb3JpZ2luKQorewor
ICAgIEFTU0VSVChtX2FjdGl2ZUdlc3R1cmVUeXBlID09IFZpZXdHZXN0dXJlVHlwZTo6Tm9uZSB8
fCBtX2FjdGl2ZUdlc3R1cmVUeXBlID09IFZpZXdHZXN0dXJlVHlwZTo6TWFnbmlmaWNhdGlvbik7
CisKKyAgICBpZiAobV9hY3RpdmVHZXN0dXJlVHlwZSA9PSBWaWV3R2VzdHVyZVR5cGU6Ok5vbmUp
IHsKKyAgICAgICAgLy8gRklYTUU6IFdlIGRyb3AgdGhlIGZpcnN0IGZyYW1lIG9mIHRoZSBnZXN0
dXJlIG9uIHRoZSBmbG9vciwgYmVjYXVzZSB3ZSBkb24ndCBoYXZlIHRoZSB2aXNpYmxlIGNvbnRl
bnQgYm91bmRzIHlldC4KKyAgICAgICAgbV9tYWduaWZpY2F0aW9uID0gbV93ZWJQYWdlUHJveHku
cGFnZVNjYWxlRmFjdG9yKCk7CisgICAgICAgIG1fd2ViUGFnZVByb3h5LmRyYXdpbmdBcmVhKCkt
PmJlZ2luVHJhbnNpZW50Wm9vbSgpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgLy8g
V2UncmUgc3RpbGwgd2FpdGluZyBmb3IgdGhlIERpZEJlZ2luVHJhbnNpZW50Wm9vbSBjYWxsYmFj
ay4KKyAgICBpZiAoIW1fdmlzaWJsZUNvbnRlbnRSZWN0SXNWYWxpZCkKKyAgICAgICAgcmV0dXJu
OworCisgICAgZG91YmxlIHNjYWxlV2l0aFJlc2lzdGFuY2UgPSByZXNpc3RhbmNlRm9yRGVsdGEo
c2NhbGUsIG1fbWFnbmlmaWNhdGlvbikgKiBzY2FsZTsKKworICAgIG1fbWFnbmlmaWNhdGlvbiAr
PSBtX21hZ25pZmljYXRpb24gKiBzY2FsZVdpdGhSZXNpc3RhbmNlOworICAgIG1fbWFnbmlmaWNh
dGlvbiA9IHN0ZDo6bWluKHN0ZDo6bWF4KG1fbWFnbmlmaWNhdGlvbiwgbWluTWFnbmlmaWNhdGlv
biksIG1heE1hZ25pZmljYXRpb24pOworCisgICAgbV9tYWduaWZpY2F0aW9uT3JpZ2luID0gb3Jp
Z2luOworCisgICAgbV93ZWJQYWdlUHJveHkuZHJhd2luZ0FyZWEoKS0+YWRqdXN0VHJhbnNpZW50
Wm9vbShtX21hZ25pZmljYXRpb24sIHNjYWxlZE1hZ25pZmljYXRpb25PcmlnaW4ob3JpZ2luLCBt
X21hZ25pZmljYXRpb24pKTsKKworICAgIG1fYWN0aXZlR2VzdHVyZVR5cGUgPSBWaWV3R2VzdHVy
ZVR5cGU6Ok1hZ25pZmljYXRpb247Cit9CisKK3ZvaWQgVmlld0dlc3R1cmVDb250cm9sbGVyOjpl
bmRNYWduaWZpY2F0aW9uR2VzdHVyZSgpCit7CisgICAgQVNTRVJUKG1fYWN0aXZlR2VzdHVyZVR5
cGUgPT0gVmlld0dlc3R1cmVUeXBlOjpNYWduaWZpY2F0aW9uKTsKKworICAgIC8vIEZJWE1FOiBT
aG91bGQgcnViYmVyLWJhbmQgYmFjayB3aGVuIHpvb21lZCBpbiBvciBvdXQgcGFzdCB0aGUgbGlt
aXQuCisgICAgZG91YmxlIG5ld01hZ25pZmljYXRpb24gPSBzdGQ6Om1heChtX21hZ25pZmljYXRp
b24sIDEuKTsKKworICAgIEZsb2F0UG9pbnQgc2NhbGVkT3JpZ2luID0gc2NhbGVkTWFnbmlmaWNh
dGlvbk9yaWdpbihtX21hZ25pZmljYXRpb25PcmlnaW4sIG5ld01hZ25pZmljYXRpb24pOworICAg
IHNjYWxlZE9yaWdpbi5tb3ZlQnkoLW1fdmlzaWJsZUNvbnRlbnRSZWN0LmxvY2F0aW9uKCkpOwor
CisgICAgbV93ZWJQYWdlUHJveHkuZHJhd2luZ0FyZWEoKS0+Y29tbWl0VHJhbnNpZW50Wm9vbShu
ZXdNYWduaWZpY2F0aW9uLCAtc2NhbGVkT3JpZ2luKTsKK30KKwordm9pZCBWaWV3R2VzdHVyZUNv
bnRyb2xsZXI6OmVuZEFjdGl2ZUdlc3R1cmUoKQoreworICAgIHN3aXRjaCAobV9hY3RpdmVHZXN0
dXJlVHlwZSkgeworICAgIGNhc2UgVmlld0dlc3R1cmVUeXBlOjpOb25lOgorICAgICAgICBicmVh
azsKKyAgICBjYXNlIFZpZXdHZXN0dXJlVHlwZTo6TWFnbmlmaWNhdGlvbjoKKyAgICAgICAgZW5k
TWFnbmlmaWNhdGlvbkdlc3R1cmUoKTsKKyAgICB9CisKKyAgICBtX3Zpc2libGVDb250ZW50UmVj
dElzVmFsaWQgPSBmYWxzZTsKKyAgICBtX2FjdGl2ZUdlc3R1cmVUeXBlID0gVmlld0dlc3R1cmVU
eXBlOjpOb25lOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvVmlld0dlc3R1cmVDb250cm9sbGVyLmggYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1ZpZXdHZXN0dXJlQ29udHJvbGxlci5oCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhhYWMyNzEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1ZpZXdHZXN0dXJlQ29udHJvbGxlci5oCkBAIC0wLDAg
KzEsNzMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
CisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgor
ICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFZpZXdHZXN0dXJlQ29udHJvbGxlcl9oCisj
ZGVmaW5lIFZpZXdHZXN0dXJlQ29udHJvbGxlcl9oCisKKyNpbmNsdWRlICJNZXNzYWdlUmVjZWl2
ZXIuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL0Zsb2F0UmVjdC5oPgorCituYW1lc3BhY2UgV2ViS2l0
IHsKKworY2xhc3MgV2ViUGFnZVByb3h5OworCitjbGFzcyBWaWV3R2VzdHVyZUNvbnRyb2xsZXIg
OiBwcml2YXRlIENvcmVJUEM6Ok1lc3NhZ2VSZWNlaXZlciB7CisgICAgV1RGX01BS0VfTk9OQ09Q
WUFCTEUoVmlld0dlc3R1cmVDb250cm9sbGVyKTsKK3B1YmxpYzoKKyAgICBWaWV3R2VzdHVyZUNv
bnRyb2xsZXIoV2ViUGFnZVByb3h5Jik7CisgICAgflZpZXdHZXN0dXJlQ29udHJvbGxlcigpOwor
CisgICAgdm9pZCBoYW5kbGVNYWduaWZpY2F0aW9uR2VzdHVyZShkb3VibGUgc2NhbGUsIFdlYkNv
cmU6OkZsb2F0UG9pbnQgb3JpZ2luKTsKKworICAgIHZvaWQgZW5kQWN0aXZlR2VzdHVyZSgpOwor
CisgICAgZW51bSBjbGFzcyBWaWV3R2VzdHVyZVR5cGUgeworICAgICAgICBOb25lLAorICAgICAg
ICBNYWduaWZpY2F0aW9uLAorICAgIH07CisKK3ByaXZhdGU6CisgICAgLy8gQ29yZUlQQzo6TWVz
c2FnZVJlY2VpdmVyLgorICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZShDb3JlSVBD
OjpDb25uZWN0aW9uKiwgQ29yZUlQQzo6TWVzc2FnZURlY29kZXImKSBPVkVSUklERTsKKworICAg
IC8vIE1lc3NhZ2UgaGFuZGxlcnMuCisgICAgdm9pZCBkaWRCZWdpblRyYW5zaWVudFpvb20oV2Vi
Q29yZTo6RmxvYXRSZWN0IHZpc2libGVDb250ZW50Qm91bmRzKTsKKworICAgIHZvaWQgZW5kTWFn
bmlmaWNhdGlvbkdlc3R1cmUoKTsKKyAgICBXZWJDb3JlOjpGbG9hdFBvaW50IHNjYWxlZE1hZ25p
ZmljYXRpb25PcmlnaW4oV2ViQ29yZTo6RmxvYXRQb2ludCBvcmlnaW4sIGRvdWJsZSBzY2FsZSk7
CisKKyAgICBWaWV3R2VzdHVyZVR5cGUgbV9hY3RpdmVHZXN0dXJlVHlwZTsKKworICAgIGRvdWJs
ZSBtX21hZ25pZmljYXRpb247CisgICAgV2ViQ29yZTo6RmxvYXRQb2ludCBtX21hZ25pZmljYXRp
b25PcmlnaW47CisgICAgV2ViQ29yZTo6RmxvYXRSZWN0IG1fdmlzaWJsZUNvbnRlbnRSZWN0Owor
ICAgIGJvb2wgbV92aXNpYmxlQ29udGVudFJlY3RJc1ZhbGlkOworCisgICAgV2ViUGFnZVByb3h5
JiBtX3dlYlBhZ2VQcm94eTsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYg
Ly8gVmlld0dlc3R1cmVDb250cm9sbGVyX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9tYWMvVmlld0dlc3R1cmVDb250cm9sbGVyLm1lc3NhZ2VzLmluIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL21hYy9WaWV3R2VzdHVyZUNvbnRyb2xsZXIubWVzc2FnZXMuaW4KbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzNjOTdmNQotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvVmlld0dlc3R1cmVDb250cm9sbGVyLm1l
c3NhZ2VzLmluCkBAIC0wLDAgKzEsMjUgQEAKKyMgQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworIyBh
cmUgbWV0OgorIyAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgMi4gIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisjICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORAorIyBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBUSEUgSU1QTElFRAorIyBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisjIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
CisjIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwKKyMgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IKKyMgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIKKyMgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwKKyMgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyMgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKworbWVzc2FnZXMgLT4gVmlld0dlc3R1cmVDb250cm9sbGVyIHsKKyAgICBEaWRC
ZWdpblRyYW5zaWVudFpvb20oV2ViQ29yZTo6RmxvYXRSZWN0IHZpc2libGVDb250ZW50Qm91bmRz
KQorfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qIGIvU291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCmluZGV4IGYxMDVjNjUuLjUzMWYwMmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dl
YktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJL
aXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTM1Miw2ICszNTIsMTAgQEAKIAkJMjlD
RDU1QUIxMjhFMjk0RjAwMTMzQzg1IC8qIFdLQWNjZXNzaWJpbGl0eVdlYlBhZ2VPYmplY3QubW0g
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyOUNENTVBOTEy
OEUyOTRGMDAxMzNDODUgLyogV0tBY2Nlc3NpYmlsaXR5V2ViUGFnZU9iamVjdC5tbSAqLzsgfTsK
IAkJMjlENTVERjExNjFCRjlGMTAwMzFBMkUzIC8qIFdlYlBhZ2VHcm91cFByb3h5TWVzc2FnZVJl
Y2VpdmVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDI5RDU1REVGMTYxQkY5RjEwMDMxQTJFMyAvKiBXZWJQYWdlR3JvdXBQcm94eU1lc3NhZ2VSZWNl
aXZlci5jcHAgKi87IH07CiAJCTI5RDU1REYyMTYxQkY5RjEwMDMxQTJFMyAvKiBXZWJQYWdlR3Jv
dXBQcm94eU1lc3NhZ2VzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAyOUQ1NURGMDE2MUJGOUYxMDAzMUEyRTMgLyogV2ViUGFnZUdyb3VwUHJveHlNZXNz
YWdlcy5oICovOyB9OworCQkyRDEyNUM1RTE4NTdFQTA1MDAzQkEzQ0IgLyogVmlld0dlc3R1cmVD
b250cm9sbGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAyRDEyNUM1QzE4NTdFQTA1MDAzQkEzQ0IgLyogVmlld0dlc3R1cmVDb250cm9sbGVyLmggKi87
IH07CisJCTJEMTI1QzVGMTg1N0VBMDUwMDNCQTNDQiAvKiBWaWV3R2VzdHVyZUNvbnRyb2xsZXIu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkQxMjVD
NUQxODU3RUEwNTAwM0JBM0NCIC8qIFZpZXdHZXN0dXJlQ29udHJvbGxlci5jcHAgKi87IH07CisJ
CTJEMUI1RDVEMTg1ODY5QzgwMDZDNjU5NiAvKiBWaWV3R2VzdHVyZUNvbnRyb2xsZXJNZXNzYWdl
UmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMkQxQjVENUIxODU4NjlDODAwNkM2NTk2IC8qIFZpZXdHZXN0dXJlQ29udHJvbGxlck1lc3Nh
Z2VSZWNlaXZlci5jcHAgKi87IH07CisJCTJEMUI1RDVFMTg1ODY5QzgwMDZDNjU5NiAvKiBWaWV3
R2VzdHVyZUNvbnRyb2xsZXJNZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMkQxQjVENUMxODU4NjlDODAwNkM2NTk2IC8qIFZpZXdHZXN0dXJl
Q29udHJvbGxlck1lc3NhZ2VzLmggKi87IH07CiAJCTJEMkFERjA5MTYzNjJERDUwMDE5N0U0NyAv
KiBQREZQbHVnaW5UZXh0QW5ub3RhdGlvbi5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDJEMkFERjA2MTYzNjJEQzcwMDE5N0U0NyAvKiBQREZQbHVnaW5U
ZXh0QW5ub3RhdGlvbi5tbSAqLzsgfTsKIAkJMkQyQURGMEIxNjM2MkREQjAwMTk3RTQ3IC8qIFBE
RlBsdWdpbkFubm90YXRpb24ubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAyRDJBREYwMzE2MzYyNDM1MDAxOTdFNDcgLyogUERGUGx1Z2luQW5ub3RhdGlv
bi5tbSAqLzsgfTsKIAkJMkQyQURGMTAxNjM2NEQ4MjAwMTk3RTQ3IC8qIFBERlBsdWdpbkNob2lj
ZUFubm90YXRpb24ubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAyRDJBREYwRTE2MzY0RDgyMDAxOTdFNDcgLyogUERGUGx1Z2luQ2hvaWNlQW5ub3RhdGlv
bi5tbSAqLzsgfTsKQEAgLTE4OTAsNiArMTg5NCwxMSBAQAogCQkyOUQ1NURFRTE2MUJGODc4MDAz
MUEyRTMgLyogV2ViUGFnZUdyb3VwUHJveHkubWVzc2FnZXMuaW4gKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gV2ViUGFnZUdyb3Vw
UHJveHkubWVzc2FnZXMuaW47IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTI5RDU1REVG
MTYxQkY5RjEwMDMxQTJFMyAvKiBXZWJQYWdlR3JvdXBQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJQYWdlR3JvdXBQcm94eU1l
c3NhZ2VSZWNlaXZlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTI5RDU1REYw
MTYxQkY5RjEwMDMxQTJFMyAvKiBXZWJQYWdlR3JvdXBQcm94eU1lc3NhZ2VzLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYlBhZ2VHcm91cFByb3h5TWVzc2FnZXMuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMkQxMjVDNUMxODU3RUEwNTAwM0JBM0NCIC8qIFZp
ZXdHZXN0dXJlQ29udHJvbGxlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBW
aWV3R2VzdHVyZUNvbnRyb2xsZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMkQx
MjVDNUQxODU3RUEwNTAwM0JBM0NCIC8qIFZpZXdHZXN0dXJlQ29udHJvbGxlci5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBWaWV3R2VzdHVyZUNvbnRyb2xsZXIuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkyRDFCNUQ1QTE4NTg2NTk5MDA2QzY1OTYg
LyogVmlld0dlc3R1cmVDb250cm9sbGVyLm1lc3NhZ2VzLmluICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFZpZXdHZXN0dXJlQ29u
dHJvbGxlci5tZXNzYWdlcy5pbjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMkQxQjVE
NUIxODU4NjlDODAwNkM2NTk2IC8qIFZpZXdHZXN0dXJlQ29udHJvbGxlck1lc3NhZ2VSZWNlaXZl
ci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBWaWV3R2VzdHVyZUNv
bnRyb2xsZXJNZXNzYWdlUmVjZWl2ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQkyRDFCNUQ1QzE4NTg2OUM4MDA2QzY1OTYgLyogVmlld0dlc3R1cmVDb250cm9sbGVyTWVzc2Fn
ZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVmlld0dlc3R1cmVDb250cm9s
bGVyTWVzc2FnZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMkQyQURGMDIxNjM2
MjQzNTAwMTk3RTQ3IC8qIFBERlBsdWdpbkFubm90YXRpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBuYW1lID0gUERGUGx1Z2luQW5ub3RhdGlvbi5oOyBwYXRoID0gUERGL1BERlBsdWdp
bkFubm90YXRpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMkQyQURGMDMxNjM2
MjQzNTAwMTk3RTQ3IC8qIFBERlBsdWdpbkFubm90YXRpb24ubW0gKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5vYmpjcHA7IG5hbWUgPSBQREZQbHVnaW5Bbm5vdGF0aW9uLm1tOyBwYXRoID0gUERG
L1BERlBsdWdpbkFubm90YXRpb24ubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTJE
MkFERjA1MTYzNjJEQzcwMDE5N0U0NyAvKiBQREZQbHVnaW5UZXh0QW5ub3RhdGlvbi5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBQREZQbHVnaW5UZXh0QW5ub3RhdGlvbi5oOyBw
YXRoID0gUERGL1BERlBsdWdpblRleHRBbm5vdGF0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CkBAIC01MjUxLDYgKzUyNjAsOSBAQAogCQkJCTFBQTQxN0VEMTJDMDBEODcwMDJCRTY3
QiAvKiBUZXh0Q2hlY2tlck1hYy5tbSAqLywKIAkJCQkxQUYwNUQ4NTE0Njg4MzQ4MDA4QjFFODEg
LyogVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWFQcm94eS5oICovLAogCQkJCTFBRjA1RDg0
MTQ2ODgzNDgwMDhCMUU4MSAvKiBUaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYVByb3h5Lm1t
ICovLAorCQkJCTJEMTI1QzVDMTg1N0VBMDUwMDNCQTNDQiAvKiBWaWV3R2VzdHVyZUNvbnRyb2xs
ZXIuaCAqLywKKwkJCQkyRDEyNUM1RDE4NTdFQTA1MDAzQkEzQ0IgLyogVmlld0dlc3R1cmVDb250
cm9sbGVyLmNwcCAqLywKKwkJCQkyRDFCNUQ1QTE4NTg2NTk5MDA2QzY1OTYgLyogVmlld0dlc3R1
cmVDb250cm9sbGVyLm1lc3NhZ2VzLmluICovLAogCQkJCTcyOEU4NkVGMTc5NTE4OEMwMDg3ODc5
RSAvKiBXZWJDb2xvclBpY2tlck1hYy5oICovLAogCQkJCTcyOEU4NkYwMTc5NTE4OEMwMDg3ODc5
RSAvKiBXZWJDb2xvclBpY2tlck1hYy5tbSAqLywKIAkJCQkxQTFDNjQ4NjExRjQxNUI3MDA1NTND
MTkgLyogV2ViQ29udGV4dE1hYy5tbSAqLywKQEAgLTU0MjksNiArNTQ0MSw4IEBACiAJCQkJMUEz
MzRERUMxNkRFOEY4ODAwNkE4RTM4IC8qIFN0b3JhZ2VBcmVhTWFwTWVzc2FnZXMuaCAqLywKIAkJ
CQkxQUIzMUE5NDE2QkM2ODgxMDBGNkRCQzkgLyogU3RvcmFnZU1hbmFnZXJNZXNzYWdlUmVjZWl2
ZXIuY3BwICovLAogCQkJCTFBQjMxQTk1MTZCQzY4ODEwMEY2REJDOSAvKiBTdG9yYWdlTWFuYWdl
ck1lc3NhZ2VzLmggKi8sCisJCQkJMkQxQjVENUIxODU4NjlDODAwNkM2NTk2IC8qIFZpZXdHZXN0
dXJlQ29udHJvbGxlck1lc3NhZ2VSZWNlaXZlci5jcHAgKi8sCisJCQkJMkQxQjVENUMxODU4NjlD
ODAwNkM2NTk2IC8qIFZpZXdHZXN0dXJlQ29udHJvbGxlck1lc3NhZ2VzLmggKi8sCiAJCQkJNTEy
RTM1NjgxMzBCNTdGMDAwQUJEMTlBIC8qIFdlYkFwcGxpY2F0aW9uQ2FjaGVNYW5hZ2VyTWVzc2Fn
ZVJlY2VpdmVyLmNwcCAqLywKIAkJCQk1MTJFMzU2OTEzMEI1N0YwMDBBQkQxOUEgLyogV2ViQXBw
bGljYXRpb25DYWNoZU1hbmFnZXJNZXNzYWdlcy5oICovLAogCQkJCTUxMkUzNUY2MTMwQjY0MkUw
MEFCRDE5QSAvKiBXZWJBcHBsaWNhdGlvbkNhY2hlTWFuYWdlclByb3h5TWVzc2FnZVJlY2VpdmVy
LmNwcCAqLywKQEAgLTU3MjEsNiArNTczNSw3IEBACiAJCQkJMUEyNEI1RjMxMUY1MzFFODAwQzM4
MjY5IC8qIE1hY2hVdGlsaXRpZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBMjMyOTAzMTYyQzg2
NzMwMEQ4MkY3QSAvKiBNZXNzYWdlRGVjb2Rlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTFGQ0Ix
ODYxN0JCRkUwMzAwMzk0Q0Q4IC8qIEFzeW5jaHJvbm91c05ldHdvcmtMb2FkZXJDbGllbnQuaCBp
biBIZWFkZXJzICovLAorCQkJCTJEMUI1RDVFMTg1ODY5QzgwMDZDNjU5NiAvKiBWaWV3R2VzdHVy
ZUNvbnRyb2xsZXJNZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUEyMzI4RkYxNjJDODY2
QTAwRDgyRjdBIC8qIE1lc3NhZ2VFbmNvZGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQUM0Qzgy
OTE2Qjg3NkE5MDA2OURDQ0QgLyogTWVzc2FnZUZsYWdzLmggaW4gSGVhZGVycyAqLywKIAkJCQkx
QUUwMEQ2QzE4MzI3QzEyMDAwODdERDcgLyogU3RyaW5nUmVmZXJlbmNlLmggaW4gSGVhZGVycyAq
LywKQEAgLTU5NjYsNiArNTk4MSw3IEBACiAJCQkJQkM5QkE1MDUxNjk3QzQ1MzAwRTQ0NjE2IC8q
IFdlYktpdDJJbml0aWFsaXplLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzU5NTM0MjEwRkMwNDUy
MDA5OEY4MkQgLyogV2ViTG9hZGVyQ2xpZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQkzM0QzQTND
MjEzMzk2MEIwMDA3MDlCRTQgLyogV2ViTWVkaWFDYWNoZU1hbmFnZXIuaCBpbiBIZWFkZXJzICov
LAorCQkJCTJEMTI1QzVFMTg1N0VBMDUwMDNCQTNDQiAvKiBWaWV3R2VzdHVyZUNvbnRyb2xsZXIu
aCBpbiBIZWFkZXJzICovLAogCQkJCTMzRDNBM0M5MTMzOTYxNzkwMDcwOUJFNCAvKiBXZWJNZWRp
YUNhY2hlTWFuYWdlck1lc3NhZ2VzLmggaW4gSGVhZGVycyAqLywKIAkJCQkzN0M0QzA4RDE4MTRB
QzVDMDAzNjg4QjkgLyogV0tCYWNrRm9yd2FyZExpc3QuaCBpbiBIZWFkZXJzICovLAogCQkJCTM3
MUExOTQyMTgyNEQyOTMwMEYzMkE1RSAvKiBXS05TRGljdGlvbmFyeS5oIGluIEhlYWRlcnMgKi8s
CkBAIC03MjI4LDYgKzcyNDQsNyBAQAogCQkJCUJDRDM2NzVDMTQ4QzI2QzAwMDQ0N0U4NyAvKiBX
ZWJDb25uZWN0aW9uVG9VSVByb2Nlc3MuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQkM0QTYyQTcx
NDc0NEVDNzAwNkM2ODFBIC8qIFdlYkNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJQkM4MjgzNjUxNkIzNTRGNjAwQTI3OEZFIC8qIFdlYkNvbnRlbnRQcm9jZXNz
TWFpbi5tbSBpbiBTb3VyY2VzICovLAorCQkJCTJEMTI1QzVGMTg1N0VBMDUwMDNCQTNDQiAvKiBW
aWV3R2VzdHVyZUNvbnRyb2xsZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQkM4MjgzOTkxNkI0
OERDMDAwQTI3OEZFIC8qIFdlYkNvbnRlbnRTZXJ2aWNlRW50cnlQb2ludC5tbSBpbiBTb3VyY2Vz
ICovLAogCQkJCUJDQjlFMjQ0MTEyMERBQ0EwMEExMzdFMCAvKiBXZWJDb250ZXh0LmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCTMxQTUwNUY5MTY4MDAyNTUwMEE5MzBFQiAvKiBXZWJDb250ZXh0Q2xp
ZW50LmNwcCBpbiBTb3VyY2VzICovLApAQCAtNzQ5MCw2ICs3NTA3LDcgQEAKIAkJCQlCQ0JBQUNF
QzE0NTIyNUUzMDA1M0Y4MkYgLyogV0tQcm9jZXNzR3JvdXAubW0gaW4gU291cmNlcyAqLywKIAkJ
CQk1MTJGNThGQjEyQTg4QTU0MDA2Mjk1MzAgLyogV0tQcm90ZWN0aW9uU3BhY2UuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJMzc5NDg0MDgxNTBDNEI5NzAwRTUyQ0U5IC8qIFdLUmVuZGVyTGF5ZXIu
Y3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMkQxQjVENUQxODU4NjlDODAwNkM2NTk2IC8qIFZpZXdH
ZXN0dXJlQ29udHJvbGxlck1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkz
NzYwODgyMjE1MDQxNEY3MDBGQzgyQzcgLyogV0tSZW5kZXJPYmplY3QuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJMzMzNjc2M0ExMzBDOTlEQzAwNkM5REUyIC8qIFdLUmVzb3VyY2VDYWNoZU1hbmFn
ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRjYzNDQ0NUMxMkE4ODVFOTAwMDYxMkQ4IC8qIFdL
U2VjdXJpdHlPcmlnaW4uY3BwIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvRHJhd2luZ0FyZWEuaCBiL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViUGFnZS9EcmF3aW5nQXJlYS5oCmluZGV4IGFlNThkYjYuLjYyZGVhZTcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9EcmF3aW5nQXJlYS5o
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9EcmF3aW5nQXJlYS5oCkBA
IC0xMjYsNiArMTI2LDEwIEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZUdlb21l
dHJ5KGNvbnN0IFdlYkNvcmU6OkludFNpemUmIHZpZXdTaXplLCBjb25zdCBXZWJDb3JlOjpJbnRT
aXplJiBsYXllclBvc2l0aW9uKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgc2V0RGV2aWNlU2NhbGVG
YWN0b3IoZmxvYXQpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBzZXRDb2xvclNwYWNlKGNvbnN0IENv
bG9yU3BhY2VEYXRhJikgeyB9CisKKyAgICB2aXJ0dWFsIHZvaWQgYmVnaW5UcmFuc2llbnRab29t
KCkgeyB9CisgICAgdmlydHVhbCB2b2lkIGFkanVzdFRyYW5zaWVudFpvb20oZG91YmxlIHNjYWxl
LCBXZWJDb3JlOjpGbG9hdFBvaW50IG9yaWdpbikgeyB9CisgICAgdmlydHVhbCB2b2lkIGNvbW1p
dFRyYW5zaWVudFpvb20oZG91YmxlIHNjYWxlLCBXZWJDb3JlOjpGbG9hdFBvaW50IG9yaWdpbikg
eyB9CiAjZW5kaWYKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViUGFnZS9EcmF3aW5nQXJlYS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViUGFnZS9EcmF3aW5nQXJlYS5tZXNzYWdlcy5pbgppbmRleCA2NjQxZDUxLi42ZDhlZmFi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvRHJhd2luZ0Fy
ZWEubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Ry
YXdpbmdBcmVhLm1lc3NhZ2VzLmluCkBAIC0zMCw1ICszMCw5IEBAIG1lc3NhZ2VzIC0+IERyYXdp
bmdBcmVhIExlZ2FjeVJlY2VpdmVyIHsKICAgICBVcGRhdGVHZW9tZXRyeShXZWJDb3JlOjpJbnRT
aXplIHZpZXdTaXplLCBXZWJDb3JlOjpJbnRTaXplIGxheWVyUG9zaXRpb24pCiAgICAgU2V0RGV2
aWNlU2NhbGVGYWN0b3IoZmxvYXQgZGV2aWNlU2NhbGVGYWN0b3IpCiAgICAgU2V0Q29sb3JTcGFj
ZShXZWJLaXQ6OkNvbG9yU3BhY2VEYXRhIGNvbG9yU3BhY2UpCisgICAgCisgICAgQmVnaW5UcmFu
c2llbnRab29tKCkKKyAgICBBZGp1c3RUcmFuc2llbnRab29tKGRvdWJsZSBzY2FsZSwgV2ViQ29y
ZTo6RmxvYXRQb2ludCBvcmlnaW4pCisgICAgQ29tbWl0VHJhbnNpZW50Wm9vbShkb3VibGUgc2Nh
bGUsIFdlYkNvcmU6OkZsb2F0UG9pbnQgb3JpZ2luKQogI2VuZGlmCiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1RpbGVkQ29yZUFuaW1hdGlvbkRy
YXdpbmdBcmVhLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1RpbGVk
Q29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhLmgKaW5kZXggNjQ3ZTVhYy4uMDdjNzRjYSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9UaWxlZENvcmVBbmlt
YXRpb25EcmF3aW5nQXJlYS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFn
ZS9tYWMvVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWEuaApAQCAtMTA0LDYgKzEwNCwxMCBA
QCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCBzZXRMYXllckhvc3RpbmdNb2RlKHVpbnQzMl90
KSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0Q29sb3JTcGFjZShjb25zdCBDb2xvclNw
YWNlRGF0YSYpIE9WRVJSSURFOwogCisgICAgdmlydHVhbCB2b2lkIGJlZ2luVHJhbnNpZW50Wm9v
bSgpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBhZGp1c3RUcmFuc2llbnRab29tKGRvdWJs
ZSBzY2FsZSwgV2ViQ29yZTo6RmxvYXRQb2ludCBvcmlnaW4pIE9WRVJSSURFOworICAgIHZpcnR1
YWwgdm9pZCBjb21taXRUcmFuc2llbnRab29tKGRvdWJsZSBzY2FsZSwgV2ViQ29yZTo6RmxvYXRQ
b2ludCBvcmlnaW4pIE9WRVJSSURFOworCiAgICAgdm9pZCB1cGRhdGVMYXllckhvc3RpbmdDb250
ZXh0KCk7CiAKICAgICB2b2lkIHNldFJvb3RDb21wb3NpdGluZ0xheWVyKENBTGF5ZXIgKik7CkBA
IC0xNDMsNiArMTQ3LDggQEAgcHJpdmF0ZToKICAgICBXZWJDb3JlOjpJbnRTaXplIG1fbGFzdFNl
bnRJbnRyaW5zaWNDb250ZW50U2l6ZTsKICAgICBXZWJDb3JlOjpUaW1lcjxUaWxlZENvcmVBbmlt
YXRpb25EcmF3aW5nQXJlYT4gbV91cGRhdGVJbnRyaW5zaWNDb250ZW50U2l6ZVRpbWVyOwogICAg
IGJvb2wgbV9pblVwZGF0ZUdlb21ldHJ5OworCisgICAgZG91YmxlIG1fdHJhbnNpZW50Wm9vbVNj
YWxlOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1RpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVh
Lm1tIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9UaWxlZENvcmVBbmlt
YXRpb25EcmF3aW5nQXJlYS5tbQppbmRleCA3NzI5NDczLi40NjRiMjliIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1RpbGVkQ29yZUFuaW1hdGlvbkRy
YXdpbmdBcmVhLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMv
VGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWEubW0KQEAgLTMyLDYgKzMyLDcgQEAKICNpbXBv
cnQgIkRyYXdpbmdBcmVhUHJveHlNZXNzYWdlcy5oIgogI2ltcG9ydCAiTGF5ZXJIb3N0aW5nQ29u
dGV4dC5oIgogI2ltcG9ydCAiTGF5ZXJUcmVlQ29udGV4dC5oIgorI2ltcG9ydCAiVmlld0dlc3R1
cmVDb250cm9sbGVyTWVzc2FnZXMuaCIKICNpbXBvcnQgIldlYkZyYW1lLmgiCiAjaW1wb3J0ICJX
ZWJQYWdlLmgiCiAjaW1wb3J0ICJXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmgiCkBAIC00Myw2
ICs0NCw4IEBACiAjaW1wb3J0IDxXZWJDb3JlL0dyYXBoaWNzTGF5ZXJDQS5oPgogI2ltcG9ydCA8
V2ViQ29yZS9NYWluRnJhbWUuaD4KICNpbXBvcnQgPFdlYkNvcmUvUGFnZS5oPgorI2ltcG9ydCA8
V2ViQ29yZS9SZW5kZXJMYXllckJhY2tpbmcuaD4KKyNpbXBvcnQgPFdlYkNvcmUvUmVuZGVyTGF5
ZXJDb21wb3NpdG9yLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1JlbmRlclZpZXcuaD4KICNpbXBvcnQg
PFdlYkNvcmUvU2V0dGluZ3MuaD4KICNpbXBvcnQgPFdlYkNvcmUvVGlsZWRCYWNraW5nLmg+CkBA
IC02OTcsNiArNzAwLDU0IEBAIGJvb2wgVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWE6OnNo
b3VsZFVzZVRpbGVkQmFja2luZ0ZvckZyYW1lVmlldyhjb25zdCBGcmFtCiAgICAgcmV0dXJuIGZy
YW1lVmlldyAmJiBmcmFtZVZpZXctPmZyYW1lKCkuaXNNYWluRnJhbWUoKTsKIH0KIAordm9pZCBU
aWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYTo6YmVnaW5UcmFuc2llbnRab29tKCkKK3sKKyAg
ICBGbG9hdFJlY3QgdmlzaWJsZUNvbnRlbnRSZWN0ID0gbV93ZWJQYWdlLT5jb3JlUGFnZSgpLT5t
YWluRnJhbWUoKS52aWV3KCktPnZpc2libGVDb250ZW50UmVjdChTY3JvbGxhYmxlQXJlYTo6SW5j
bHVkZVNjcm9sbGJhcnMpOworICAgIG1fd2ViUGFnZS0+c2VuZChNZXNzYWdlczo6Vmlld0dlc3R1
cmVDb250cm9sbGVyOjpEaWRCZWdpblRyYW5zaWVudFpvb20odmlzaWJsZUNvbnRlbnRSZWN0KSk7
Cit9CisKK3ZvaWQgVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWE6OmFkanVzdFRyYW5zaWVu
dFpvb20oZG91YmxlIHNjYWxlLCBGbG9hdFBvaW50IG9yaWdpbikKK3sKKyAgICAvLyBGSVhNRTog
U2Nyb2xsYmFycyBzaG91bGQgc3RheSBpbi1wbGFjZSBhbmQgY2hhbmdlIGhlaWdodCB3aGlsZSB6
b29taW5nLgorICAgIC8vIEZJWE1FOiBLZWVwIGFyb3VuZCBwYWdlU2NhbGU9MSB0aWxlcyBzbyB3
ZSBjYW4gem9vbSBvdXQgd2l0aG91dCBnYXBzLgorICAgIC8vIEZJWE1FOiBCcmluZyBpbiB1bnBh
cmVudGVkLWJ1dC1wYWludGVkIHRpbGVzIHdoZW4gem9vbWluZyBvdXQsIHRvIGZpbGwgaW4gYW55
IGdhcHMuCisKKyAgICBpZiAoIW1fcm9vdExheWVyKQorICAgICAgICByZXR1cm47CisKKyAgICBS
ZW5kZXJWaWV3KiByZW5kZXJWaWV3ID0gbV93ZWJQYWdlLT5jb3JlUGFnZSgpLT5tYWluRnJhbWUo
KS52aWV3KCktPnJlbmRlclZpZXcoKTsKKworICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IHRyYW5z
Zm9ybTsKKyAgICB0cmFuc2Zvcm0udHJhbnNsYXRlKG9yaWdpbi54KCksIG9yaWdpbi55KCkpOwor
ICAgIHRyYW5zZm9ybS5zY2FsZShzY2FsZSk7CisKKyAgICBQbGF0Zm9ybUNBTGF5ZXIqIHJlbmRl
clZpZXdMYXllciA9IHN0YXRpY19jYXN0PEdyYXBoaWNzTGF5ZXJDQSo+KHJlbmRlclZpZXctPmxh
eWVyKCktPmJhY2tpbmcoKS0+Z3JhcGhpY3NMYXllcigpKS0+cGxhdGZvcm1DQUxheWVyKCk7Cisg
ICAgcmVuZGVyVmlld0xheWVyLT5zZXRUcmFuc2Zvcm0odHJhbnNmb3JtKTsKKyAgICByZW5kZXJW
aWV3TGF5ZXItPnNldEFuY2hvclBvaW50KEZsb2F0UG9pbnQzRCgpKTsKKyAgICByZW5kZXJWaWV3
TGF5ZXItPnNldFBvc2l0aW9uKEZsb2F0UG9pbnQzRCgpKTsKKworICAgIC8vIEZJWE1FOiBXZSBz
aG91bGQgdHJhbnNmb3JtIHRoZSBzaGFkb3cgbGF5ZXIgYXMgd2VsbCwgaW5zdGVhZCBvZiBoaWRp
bmcgaXQuCisgICAgUGxhdGZvcm1DQUxheWVyKiBzaGFkb3dMYXllciA9IHN0YXRpY19jYXN0PEdy
YXBoaWNzTGF5ZXJDQSo+KHJlbmRlclZpZXctPmNvbXBvc2l0b3IoKS5sYXllckZvckNvbnRlbnRT
aGFkb3coKSktPnBsYXRmb3JtQ0FMYXllcigpOworICAgIHNoYWRvd0xheWVyLT5zZXRIaWRkZW4o
dHJ1ZSk7CisKKyAgICBtX3RyYW5zaWVudFpvb21TY2FsZSA9IHNjYWxlOworfQorCit2b2lkIFRp
bGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhOjpjb21taXRUcmFuc2llbnRab29tKGRvdWJsZSBz
Y2FsZSwgRmxvYXRQb2ludCBvcmlnaW4pCit7CisgICAgUmVuZGVyVmlldyogcmVuZGVyVmlldyA9
IG1fd2ViUGFnZS0+Y29yZVBhZ2UoKS0+bWFpbkZyYW1lKCkudmlldygpLT5yZW5kZXJWaWV3KCk7
CisKKyAgICAvLyBJZiB0aGUgcGFnZSBzY2FsZSBpcyBhbHJlYWR5IHRoZSB0YXJnZXQgc2NhbGUs
IHNjYWxlUGFnZSgpIHdpbGwgc2hvcnQtY2lyY3VpdAorICAgIC8vIGFuZCBub3QgYXBwbHkgdGhl
IHRyYW5zZm9ybSwgc28gd2UgY2FuJ3QgY2xlYXIgaXQuCisgICAgaWYgKG1fdHJhbnNpZW50Wm9v
bVNjYWxlICE9IG1fd2ViUGFnZS0+cGFnZVNjYWxlRmFjdG9yKCkpCisgICAgICAgc3RhdGljX2Nh
c3Q8R3JhcGhpY3NMYXllckNBKj4ocmVuZGVyVmlldy0+bGF5ZXIoKS0+YmFja2luZygpLT5ncmFw
aGljc0xheWVyKCkpLT5wbGF0Zm9ybUNBTGF5ZXIoKS0+c2V0VHJhbnNmb3JtKFRyYW5zZm9ybWF0
aW9uTWF0cml4KCkpOworCisgICAgUGxhdGZvcm1DQUxheWVyKiBzaGFkb3dMYXllciA9IHN0YXRp
Y19jYXN0PEdyYXBoaWNzTGF5ZXJDQSo+KHJlbmRlclZpZXctPmNvbXBvc2l0b3IoKS5sYXllckZv
ckNvbnRlbnRTaGFkb3coKSktPnBsYXRmb3JtQ0FMYXllcigpOworICAgIHNoYWRvd0xheWVyLT5z
ZXRIaWRkZW4oZmFsc2UpOworCisgICAgbV93ZWJQYWdlLT5zY2FsZVBhZ2Uoc2NhbGUsIHJvdW5k
ZWRJbnRQb2ludChvcmlnaW4pKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKICNlbmRp
ZiAvLyAhUExBVEZPUk0oSU9TKQpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMv
Q2hhbmdlTG9nCmluZGV4IGMxMDU3MGIuLmJjYWUyN2MgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5n
ZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBAQAorMjAxMy0xMi0xMiAg
VGltIEhvcnRvbiAgPHRpbW90aHlfaG9ydG9uQGFwcGxlLmNvbT4KKworICAgICAgICBbd2syXSBI
YW5kbGUgcGluY2gtdG8tem9vbSBnZXN0dXJlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xMjU2MDQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICAqIE1pbmlCcm93c2VyL21hYy9XSzJCcm93c2VyV2luZG93Q29u
dHJvbGxlci5tOgorICAgICAgICAoLVtXSzJCcm93c2VyV2luZG93Q29udHJvbGxlciBhd2FrZUZy
b21OaWJdKToKKyAgICAgICAgRW5hYmxlIGhhbmRsaW5nIG9mIHRoZSBtYWduaWZpY2F0aW9uIGdl
c3R1cmUgaW4gTWluaWJyb3dzZXIgV2ViS2l0MiB3aW5kb3dzLgorCiAyMDEzLTEyLTExICBNeWxl
cyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CiAKICAgICAgICAgY2hlY2std2Vi
a2l0LXN0eWxlIGNhbid0IGRldGVybWluZSBpZiBhIGNvbW1hIGlzIHBhcnQgb2YgYW4gaW5pdGlh
bGl6YXRpb24gbGlzdApkaWZmIC0tZ2l0IGEvVG9vbHMvTWluaUJyb3dzZXIvbWFjL1dLMkJyb3dz
ZXJXaW5kb3dDb250cm9sbGVyLm0gYi9Ub29scy9NaW5pQnJvd3Nlci9tYWMvV0syQnJvd3Nlcldp
bmRvd0NvbnRyb2xsZXIubQppbmRleCBjZDg3NzEwLi42NTdjOTFmIDEwMDY0NAotLS0gYS9Ub29s
cy9NaW5pQnJvd3Nlci9tYWMvV0syQnJvd3NlcldpbmRvd0NvbnRyb2xsZXIubQorKysgYi9Ub29s
cy9NaW5pQnJvd3Nlci9tYWMvV0syQnJvd3NlcldpbmRvd0NvbnRyb2xsZXIubQpAQCAtNTAzLDYg
KzUwMyw4IEBAIC0gKHZvaWQpYXdha2VGcm9tTmliCiB7CiAgICAgX3dlYlZpZXcgPSBbW1dLVmll
dyBhbGxvY10gaW5pdFdpdGhGcmFtZTpbY29udGFpbmVyVmlldyBib3VuZHNdIHByb2Nlc3NHcm91
cDpfcHJvY2Vzc0dyb3VwIGJyb3dzaW5nQ29udGV4dEdyb3VwOl9icm93c2luZ0NvbnRleHRHcm91
cF07CiAKKyAgICBfd2ViVmlldy5hbGxvd3NNYWduaWZpY2F0aW9uID0gWUVTOworCiAgICAgW193
ZWJWaWV3IHNldEF1dG9yZXNpemluZ01hc2s6KE5TVmlld1dpZHRoU2l6YWJsZSB8IE5TVmlld0hl
aWdodFNpemFibGUpXTsKICAgICBbY29udGFpbmVyVmlldyBhZGRTdWJ2aWV3Ol93ZWJWaWV3XTsK
IAo=
</data>
<flag name="review"
          id="242721"
          type_id="1"
          status="+"
          setter="simon.fraser"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>219178</attachid>
            <date>2013-12-13 11:50:48 -0800</date>
            <delta_ts>2013-12-13 12:09:44 -0800</delta_ts>
            <desc>tiny mistake - not forwarding the event to superclasses if disabled</desc>
            <filename>forward.diff</filename>
            <type>text/plain</type>
            <size>1574</size>
            <attacher name="Tim Horton">thorton</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwppbmRleCA1NTA2NmIzLi4wMDFhYjg0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUg
QEAKKzIwMTMtMTItMTMgIFRpbSBIb3J0b24gIDx0aW1vdGh5X2hvcnRvbkBhcHBsZS5jb20+CisK
KyAgICAgICAgW3drMl0gSGFuZGxlIHBpbmNoLXRvLXpvb20gZ2VzdHVyZQorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTI1NjA0CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL21hYy9X
S1ZpZXcubW06CisgICAgICAgICgtW1dLVmlldyBtYWduaWZ5V2l0aEV2ZW50Ol0pOgorICAgICAg
ICAoLVtXS1ZpZXcgZW5kR2VzdHVyZVdpdGhFdmVudDpdKToKKyAgICAgICAgRm9yd2FyZCB0aGUg
ZXZlbnQgdXAgdGhlIGNoYWluIGlmIHdlJ3JlIG5vdCBnb2luZyB0byBoYW5kbGUgaXQuCisKIDIw
MTMtMTItMTMgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgogCiAg
ICAgICAgIFtHVEtdIEFkZCBhIHVuaXQgdGVzdHMgdG8gV2ViS2l0MiB0byB0ZXN0IG5vZGUgbmFt
ZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvbWFjL1dLVmlldy5t
bSBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvbWFjL1dLVmlldy5tbQppbmRleCA3Nzkz
NTg2Li5mZjdjMzMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL21h
Yy9XS1ZpZXcubW0KKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9tYWMvV0tWaWV3
Lm1tCkBAIC0zMjc0LDggKzMyNzQsMTAgQEAgc3RhdGljIE5TU3RyaW5nICpwYXRoV2l0aFVuaXF1
ZUZpbGVuYW1lRm9yUGF0aChOU1N0cmluZyAqcGF0aCkKIAogLSAodm9pZCltYWduaWZ5V2l0aEV2
ZW50OihOU0V2ZW50ICopZXZlbnQKIHsKLSAgICBpZiAoIV9kYXRhLT5fYWxsb3dzTWFnbmlmaWNh
dGlvbikKKyAgICBpZiAoIV9kYXRhLT5fYWxsb3dzTWFnbmlmaWNhdGlvbikgeworICAgICAgICBb
c3VwZXIgbWFnbmlmeVdpdGhFdmVudDpldmVudF07CiAgICAgICAgIHJldHVybjsKKyAgICB9CiAK
ICAgICBbc2VsZiBfZW5zdXJlR2VzdHVyZUNvbnRyb2xsZXJdOwogCkBAIC0zMjg0LDggKzMyODYs
MTAgQEAgc3RhdGljIE5TU3RyaW5nICpwYXRoV2l0aFVuaXF1ZUZpbGVuYW1lRm9yUGF0aChOU1N0
cmluZyAqcGF0aCkKIAogLSh2b2lkKWVuZEdlc3R1cmVXaXRoRXZlbnQ6KE5TRXZlbnQgKilldmVu
dAogewotICAgIGlmICghX2RhdGEtPl9nZXN0dXJlQ29udHJvbGxlcikKKyAgICBpZiAoIV9kYXRh
LT5fZ2VzdHVyZUNvbnRyb2xsZXIpIHsKKyAgICAgICAgW3N1cGVyIGVuZEdlc3R1cmVXaXRoRXZl
bnQ6ZXZlbnRdOwogICAgICAgICByZXR1cm47CisgICAgfQogCiAgICAgX2RhdGEtPl9nZXN0dXJl
Q29udHJvbGxlci0+ZW5kQWN0aXZlR2VzdHVyZSgpOwogfQo=
</data>
<flag name="review"
          id="242773"
          type_id="1"
          status="+"
          setter="sam"
    />
          </attachment>
      

    </bug>

</bugzilla>