<?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>133162</bug_id>
          
          <creation_ts>2014-05-21 17:57:52 -0700</creation_ts>
          <short_desc>[iOS][WK2] Add support for minimal-ui viewports</short_desc>
          <delta_ts>2014-05-22 21:14:56 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Benjamin Poulain">benjamin</reporter>
          <assigned_to name="Benjamin Poulain">benjamin</assigned_to>
          <cc>allan.jensen</cc>
    
    <cc>commit-queue</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>glenn</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>kangil.han</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>macpherson</cc>
    
    <cc>menard</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>thorton</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1010856</commentid>
    <comment_count>0</comment_count>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2014-05-21 17:57:52 -0700</bug_when>
    <thetext>[iOS][WK2] Add support for minimal-ui viewports</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1010858</commentid>
    <comment_count>1</comment_count>
      <attachid>231846</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2014-05-21 18:15:37 -0700</bug_when>
    <thetext>Created attachment 231846
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1010861</commentid>
    <comment_count>2</comment_count>
      <attachid>231846</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2014-05-21 18:26:09 -0700</bug_when>
    <thetext>Comment on attachment 231846
Patch

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

&gt; Source/WebCore/ChangeLog:20
&gt; +        When the first frame is rendered, the WebKit layer calls pageWillRenderFirstFrame() which freeze

freezes

&gt; Source/WebKit2/ChangeLog:8
&gt; +        In the WebKit2 layers, we have two part to minimal-ui.

two parts

&gt; Source/WebKit2/ChangeLog:10
&gt; +         An other part is freezing the state on the first frame.

Another

&gt; Source/WebCore/page/ViewportConfiguration.h:86
&gt; +    void pageWillRenderFirstFrame();

&quot;frame&quot; is ambiguous (with Frame/iframe).  Maybe didFirstRender or something? Can you just leverage a layout milestone?

&gt; Source/WebCore/page/ViewportConfiguration.h:118
&gt; +    bool m_firstFrameCommited;

Name should be consistent with pageWillRenderFirstFrame. &quot;Committing&quot; is a WK2/compositing notion, and should not be used here.

&gt; Source/WebKit2/UIProcess/API/Cocoa/WKWebViewPrivate.h:103
&gt; +@property (nonatomic, setter=_setLargestUnobscuredSizeOverride:) CGSize _largestUnobscuredSizeOverride;

Not sure what override means.

&gt; Source/WebKit2/UIProcess/WebPageProxy.h:602
&gt; +    void setLargestUnobscuredSize(const WebCore::FloatSize&amp;);

largest -&gt; maximum?

&gt; Source/WebKit2/WebProcess/WebPage/ios/WebPageIOS.mm:1930
&gt; +    if (m_hasRenderedContentAfterDidCommitLoad)
&gt; +        return;
&gt; +
&gt; +    m_hasRenderedContentAfterDidCommitLoad = true;
&gt; +    m_viewportConfiguration.pageWillRenderFirstFrame();

Don&apos;t really like this statefulness in another place. We should use layout milestones for this.

&gt; Source/WebKit2/WebProcess/WebPage/mac/RemoteLayerTreeDrawingArea.mm:249
&gt; +    m_webPage-&gt;willFlushLayers();
&gt; +
&gt;      m_webPage-&gt;layoutIfNeeded();

I think you should call willFlush after layoutIfNeeded (in case it tries to query layout).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1010862</commentid>
    <comment_count>3</comment_count>
      <attachid>231846</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2014-05-21 18:27:37 -0700</bug_when>
    <thetext>Comment on attachment 231846
Patch

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

&gt; Source/WebCore/ChangeLog:14
&gt; +        Initialy, the page is initialized with resetMinimalUI() and start with a normal layout.

typo &quot;initially&quot;

&gt; Source/WebKit2/ChangeLog:8
&gt; +        In the WebKit2 layers, we have two part to minimal-ui.

typo &quot;parts&quot;

&gt; Source/WebKit2/ChangeLog:10
&gt; +         An other part is freezing the state on the first frame.

typo &quot;another&quot;

&gt; Source/WebCore/page/ViewportConfiguration.cpp:117
&gt; +void ViewportConfiguration::pageWillRenderFirstFrame()

I have already registered my objection to this part :D</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1010870</commentid>
    <comment_count>4</comment_count>
      <attachid>231849</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2014-05-21 19:43:24 -0700</bug_when>
    <thetext>Created attachment 231849
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1010872</commentid>
    <comment_count>5</comment_count>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2014-05-21 20:04:08 -0700</bug_when>
    <thetext>&lt;rdar://problem/16283914&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1011113</commentid>
    <comment_count>6</comment_count>
      <attachid>231930</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2014-05-22 18:56:33 -0700</bug_when>
    <thetext>Created attachment 231930
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1011129</commentid>
    <comment_count>7</comment_count>
      <attachid>231933</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2014-05-22 20:03:35 -0700</bug_when>
    <thetext>Created attachment 231933
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1011135</commentid>
    <comment_count>8</comment_count>
      <attachid>231933</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2014-05-22 20:24:49 -0700</bug_when>
    <thetext>Comment on attachment 231933
Patch

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

&gt; Source/WebCore/ChangeLog:14
&gt; +        Initially, the page is initialized with resetMinimalUI() and start with a normal layout.

starts with

&gt; Source/WebCore/ChangeLog:18
&gt; +        layout size. Any layout after that take into account the minimal-ui.

takes minimal-ui into account.

&gt; Source/WebCore/page/ViewportConfiguration.cpp:120
&gt; +    if (m_pageDidFinishDocumentLoad)
&gt; +        return;

No point having these lines.

&gt; Source/WebCore/page/ViewportConfiguration.cpp:286
&gt;  int ViewportConfiguration::layoutWidth() const

This should return LayoutUnits at some point?

&gt; Source/WebKit2/UIProcess/API/Cocoa/WKWebViewPrivate.h:99
&gt; +// Define the smallest size a page take with a regular.

With a regular what?

&gt; Source/WebKit2/WebProcess/WebPage/WebPage.h:253
&gt; +    void didFinishDocumentLoad(WebFrame*);
&gt;      void didFinishLoad(WebFrame*);

What&apos;s the difference? Is the first like DOMContentLoaded?

&gt; Source/WebKit2/WebProcess/WebPage/ios/WebPageIOS.mm:1992
&gt;      resetTextAutosizingBeforeLayoutIfNeeded(m_viewportConfiguration.minimumLayoutSize(), minimumLayoutSize);
&gt; +    resetTextAutosizingBeforeLayoutIfNeeded(m_viewportConfiguration.minimumLayoutSizeForMinimalUI(), minimumLayoutSizeForMinimalUI);

Do we have to call resetTextAutosizingBeforeLayoutIfNeeded twice?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1011144</commentid>
    <comment_count>9</comment_count>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2014-05-22 21:02:26 -0700</bug_when>
    <thetext>Thanks for the review!

(In reply to comment #8)
&gt; &gt; Source/WebCore/page/ViewportConfiguration.cpp:286
&gt; &gt;  int ViewportConfiguration::layoutWidth() const
&gt; 
&gt; This should return LayoutUnits at some point?

No idea. Do we plan to support non-integer document sizes?

&gt; &gt; Source/WebKit2/WebProcess/WebPage/WebPage.h:253
&gt; &gt; +    void didFinishDocumentLoad(WebFrame*);
&gt; &gt;      void didFinishLoad(WebFrame*);
&gt; 
&gt; What&apos;s the difference? Is the first like DOMContentLoaded?

Exactly :)
 
&gt; &gt; Source/WebKit2/WebProcess/WebPage/ios/WebPageIOS.mm:1992
&gt; &gt;      resetTextAutosizingBeforeLayoutIfNeeded(m_viewportConfiguration.minimumLayoutSize(), minimumLayoutSize);
&gt; &gt; +    resetTextAutosizingBeforeLayoutIfNeeded(m_viewportConfiguration.minimumLayoutSizeForMinimalUI(), minimumLayoutSizeForMinimalUI);
&gt; 
&gt; Do we have to call resetTextAutosizingBeforeLayoutIfNeeded twice?

We could add some code to do it, but it should not matter much, the layout on resize is so expensive this will be negligible.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1011149</commentid>
    <comment_count>10</comment_count>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2014-05-22 21:14:56 -0700</bug_when>
    <thetext>Committed r169245: &lt;http://trac.webkit.org/changeset/169245&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>231846</attachid>
            <date>2014-05-21 18:15:37 -0700</date>
            <delta_ts>2014-05-21 19:43:21 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-133162-20140521181511.patch</filename>
            <type>text/plain</type>
            <size>62210</size>
            <attacher name="Benjamin Poulain">benjamin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTY5MDY4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDA3ODcxZjM3ODlhNzFh
NTcxZTI2ODY1ZjQ2MzgyMDFiY2VkYjFjNy4uNWVlNGQ0MTRkOWE3YzU1NDdlYjNhNGY3NmEzYTYx
NWY0ZjJmNjhlNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYwIEBACisyMDE0LTA1LTIxICBCZW5q
YW1pbiBQb3VsYWluICA8YnBvdWxhaW5AYXBwbGUuY29tPgorCisgICAgICAgIFtpT1NdW1dLMl0g
QWRkIHN1cHBvcnQgZm9yIG1pbmltYWwtdWkgdmlld3BvcnRzCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzMxNjIKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgc3VwcG9ydCBmb3IgbWluaW1hbC11aSBk
aXJlY3RseSBpbnRvIHRoZSBWaWV3cG9ydCBjb25maWd1cmF0aW9uLgorCisgICAgICAgIFZpZXdw
b3J0Q29uZmlndXJhdGlvbiBrbm93cyBhYm91dCB0d28ga2luZHMgb2YgbGF5b3V0IHNpemUgaW4g
c2Nyb2xsdmlldyBjb29yZGluYXRlczoKKyAgICAgICAgLW5vcm1hbCBzaXplCisgICAgICAgIC1t
aW5pbWFsIHVpIHNpemUuCisKKyAgICAgICAgSW5pdGlhbHksIHRoZSBwYWdlIGlzIGluaXRpYWxp
emVkIHdpdGggcmVzZXRNaW5pbWFsVUkoKSBhbmQgc3RhcnQgd2l0aCBhIG5vcm1hbCBsYXlvdXQu
CisKKyAgICAgICAgQXQgYW55IHRpbWUgYmVmb3JlIHRoZSBmaXJzdCBmcmFtZSBpcyByZW5kZXJl
ZCwgdGhlIFdlYiBwYWdlIGNhbiB1cGRhdGUgaXRzIHZpZXdwb3J0IG1ldGEgdGFnCisgICAgICAg
IHRvIGluY2x1ZGUgbWluaW1hbC11aS4gVGhlIHZpZXdwb3J0IGNvbmZpZ3VyYXRpb24gaXMgdXBk
YXRlZCBpbW1lZGlhdGVseSB0byByZWZsZWN0IHRoZSBtaW5pbWFsLXVpCisgICAgICAgIGxheW91
dCBzaXplLiBBbnkgbGF5b3V0IGFmdGVyIHRoYXQgdGFrZSBpbnRvIGFjY291bnQgdGhlIG1pbmlt
YWwtdWkuCisKKyAgICAgICAgV2hlbiB0aGUgZmlyc3QgZnJhbWUgaXMgcmVuZGVyZWQsIHRoZSBX
ZWJLaXQgbGF5ZXIgY2FsbHMgcGFnZVdpbGxSZW5kZXJGaXJzdEZyYW1lKCkgd2hpY2ggZnJlZXpl
CisgICAgICAgIHRoZSBzdGF0ZSB0byBub3JtYWwgb3IgbWluaW1hbC11aS4gVGhpcyBpcyBjb25z
aXN0ZW50IHdpdGggdGhlIFdlYktpdDEgcnVsZXMgZm9yIG1pbmltYWwtdWkuCisKKyAgICAgICAg
KiBXZWJDb3JlLmV4cC5pbjoKKyAgICAgICAgKiBjc3MvTGVuZ3RoRnVuY3Rpb25zLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6Om1pbmltdW1WYWx1ZUZvckxlbmd0aCk6CisgICAgICAgIChXZWJDb3Jl
OjpmbG9hdFZhbHVlRm9yTGVuZ3RoKToKKyAgICAgICAgKiBjc3MvU3R5bGVSZXNvbHZlci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVJlc29sdmVyOjp2aWV3cG9ydFBlcmNlbnRhZ2VWYWx1
ZSk6CisgICAgICAgICogZG9tL1ZpZXdwb3J0QXJndW1lbnRzLmg6CisgICAgICAgIChXZWJDb3Jl
OjpWaWV3cG9ydEFyZ3VtZW50czo6b3BlcmF0b3I9PSk6CisgICAgICAgICogcGFnZS9GcmFtZVZp
ZXcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVWaWV3OjpzZXRWaWV3cG9ydFNpemVGb3JD
U1NWaWV3cG9ydFVuaXRzKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lVmlldzo6dmlld3BvcnRT
aXplRm9yQ1NTVmlld3BvcnRVbml0cyk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZVZpZXc6OnNl
dFZpZXdwb3J0U2l6ZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpGcmFtZVZpZXc6OnZp
ZXdwb3J0U2l6ZSk6IERlbGV0ZWQuCisgICAgICAgICogcGFnZS9GcmFtZVZpZXcuaDoKKyAgICAg
ICAgKiBwYWdlL1ZpZXdwb3J0Q29uZmlndXJhdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpW
aWV3cG9ydENvbmZpZ3VyYXRpb246OlZpZXdwb3J0Q29uZmlndXJhdGlvbik6CisgICAgICAgIChX
ZWJDb3JlOjpWaWV3cG9ydENvbmZpZ3VyYXRpb246OnNldE1pbmltdW1MYXlvdXRTaXplKToKKyAg
ICAgICAgKFdlYkNvcmU6OlZpZXdwb3J0Q29uZmlndXJhdGlvbjo6c2V0TWluaW11bUxheW91dFNp
emVGb3JNaW5pbWFsVUkpOgorICAgICAgICAoV2ViQ29yZTo6Vmlld3BvcnRDb25maWd1cmF0aW9u
OjphY3RpdmVNaW5pbXVtTGF5b3V0U2l6ZUluU2Nyb2xsVmlld0Nvb3JkaW5hdGVzKToKKyAgICAg
ICAgKFdlYkNvcmU6OlZpZXdwb3J0Q29uZmlndXJhdGlvbjo6cmVzZXRNaW5pbWFsVUkpOgorICAg
ICAgICAoV2ViQ29yZTo6Vmlld3BvcnRDb25maWd1cmF0aW9uOjpwYWdlV2lsbFJlbmRlckZpcnN0
RnJhbWUpOgorICAgICAgICAoV2ViQ29yZTo6Vmlld3BvcnRDb25maWd1cmF0aW9uOjppbml0aWFs
U2NhbGUpOgorICAgICAgICAoV2ViQ29yZTo6Vmlld3BvcnRDb25maWd1cmF0aW9uOjptaW5pbXVt
U2NhbGUpOgorICAgICAgICAoV2ViQ29yZTo6Vmlld3BvcnRDb25maWd1cmF0aW9uOjp1cGRhdGVD
b25maWd1cmF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlZpZXdwb3J0Q29uZmlndXJhdGlvbjo6
bGF5b3V0V2lkdGgpOgorICAgICAgICAoV2ViQ29yZTo6Vmlld3BvcnRDb25maWd1cmF0aW9uOjps
YXlvdXRIZWlnaHQpOgorICAgICAgICAoV2ViQ29yZTo6Vmlld3BvcnRDb25maWd1cmF0aW9uOjpk
ZXNjcmlwdGlvbik6CisgICAgICAgICogcGFnZS9WaWV3cG9ydENvbmZpZ3VyYXRpb24uaDoKKyAg
ICAgICAgKFdlYkNvcmU6OlZpZXdwb3J0Q29uZmlndXJhdGlvbjo6bWluaW11bUxheW91dFNpemVG
b3JNaW5pbWFsVUkpOgorICAgICAgICAoV2ViQ29yZTo6Vmlld3BvcnRDb25maWd1cmF0aW9uOjp1
c2VzTWluaW1hbFVJKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVmlldy5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJWaWV3Ojp2aWV3cG9ydFNpemVGb3JDU1NWaWV3cG9ydFVuaXRz
KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclZpZXc6OnZpZXdwb3J0U2l6ZSk6IERlbGV0ZWQu
CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclZpZXcuaDoKKwogMjAxNC0wNS0xOSAgQmV0aCBE
YWtpbiAgPGJkYWtpbkBhcHBsZS5jb20+CiAKICAgICAgICAgU2Nyb2xsYmFycyBkaXNwbGF5IGlu
Y29ycmVjdGx5IGFmdGVyIHN3aXRjaGluZyBiZXR3ZWVuIGZhc3QgYW5kIHNsb3cgc2Nyb2xsaW5n
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdDIv
Q2hhbmdlTG9nCmluZGV4IGY0YTk0MDA1MzcyN2JhNWIyZTQxMWFjODIwZGE1Y2IyZTYyNzc3N2Eu
LmFkZDA0YTk4YmQzNDEyZDMyNmU5MjE0ZWJlMTIxZmYwYWYwMTYzODQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAg
LTEsMyArMSw2MCBAQAorMjAxNC0wNS0yMSAgQmVuamFtaW4gUG91bGFpbiAgPGJwb3VsYWluQGFw
cGxlLmNvbT4KKworICAgICAgICBbaU9TXVtXSzJdIEFkZCBzdXBwb3J0IGZvciBtaW5pbWFsLXVp
IHZpZXdwb3J0cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTMzMTYyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgSW4gdGhlIFdlYktpdDIgbGF5ZXJzLCB3ZSBoYXZlIHR3byBwYXJ0IHRvIG1pbmltYWwtdWku
CisgICAgICAgIC1JbiBXZWJQYWdlLCB3ZSBuZWVkIHRvIGdldCB0aGUgdmFsdWVzIGZyb20gdGhl
IFVJUHJvY2VzcyBhbmQgc2V0dXAgdGhlIFZpZXdwb3J0Q29uZmlndXJhdGlvbi4KKyAgICAgICAg
IEFuIG90aGVyIHBhcnQgaXMgZnJlZXppbmcgdGhlIHN0YXRlIG9uIHRoZSBmaXJzdCBmcmFtZS4K
KyAgICAgICAgLUluIHRoZSBVSVByb2Nlc3MsIHdlIG5lZWQgdG8gZ2V0IHRoZSByaWdodCBpbmZv
cm1hdGlvbiBmb3IgbGF5b3V0IGFuZCBzdHlsaW5nLCBhbmQgd2UgbmVlZCB0byB0ZWxsCisgICAg
ICAgICB0aGUgVUkgY2xpZW50cyBhYm91dCBtaW5pbWFsLXVpIGNoYW5nZXMuCisKKyAgICAgICAg
KiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLVUlEZWxlZ2F0ZVByaXZhdGUuaDoKKyAgICAgICAgKiBV
SVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF9z
ZXRVc2VzTWluaW1hbFVJOl0pOgorICAgICAgICAoLVtXS1dlYlZpZXcgX3VzZXNNaW5pbWFsVUld
KToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF9kaWRDb21taXRMYXllclRyZWU6V2ViS2l0OjpdKToK
KyAgICAgICAgKC1bV0tXZWJWaWV3IF9mcmFtZU9yQm91bmRzQ2hhbmdlZF0pOgorICAgICAgICAo
LVtXS1dlYlZpZXcgX21pbmltdW1MYXlvdXRTaXplT3ZlcnJpZGVdKToKKyAgICAgICAgKC1bV0tX
ZWJWaWV3IF9zZXRNaW5pbXVtTGF5b3V0U2l6ZU92ZXJyaWRlOl0pOgorICAgICAgICAoLVtXS1dl
YlZpZXcgX21pbmltdW1MYXlvdXRTaXplT3ZlcnJpZGVGb3JNaW5pbWFsVUldKToKKyAgICAgICAg
KC1bV0tXZWJWaWV3IF9zZXRNaW5pbXVtTGF5b3V0U2l6ZU92ZXJyaWRlRm9yTWluaW1hbFVJOl0p
OgorICAgICAgICAoLVtXS1dlYlZpZXcgX2xhcmdlc3RVbm9ic2N1cmVkU2l6ZU92ZXJyaWRlXSk6
CisgICAgICAgICgtW1dLV2ViVmlldyBfc2V0TGFyZ2VzdFVub2JzY3VyZWRTaXplT3ZlcnJpZGU6
XSk6CisgICAgICAgICgtW1dLV2ViVmlldyBfYmVnaW5BbmltYXRlZFJlc2l6ZVdpdGhVcGRhdGVz
Ol0pOgorICAgICAgICAoc2V0Vmlld3BvcnRDb25maWd1cmF0aW9uTWluaW11bUxheW91dFNpemUp
OiBEZWxldGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3SW50ZXJu
YWwuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld1ByaXZhdGUuaDoK
KyAgICAgICAgKiBVSVByb2Nlc3MvUGFnZUNsaWVudC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9X
ZWJQYWdlUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2Vz
LmluOgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJT1MuaDoKKyAgICAg
ICAgKiBVSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLm1tOgorICAgICAgICAoV2ViS2l0
OjpQYWdlQ2xpZW50SW1wbDo6c2V0VXNlc01pbmltYWxVSSk6CisgICAgICAgICogVUlQcm9jZXNz
L2lvcy9XZWJQYWdlUHJveHlJT1MubW06CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6
ZHluYW1pY1ZpZXdwb3J0U2l6ZVVwZGF0ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94
eTo6c2V0Vmlld3BvcnRDb25maWd1cmF0aW9uTWluaW11bUxheW91dFNpemVGb3JNaW5pbWFsVUkp
OgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnNldExhcmdlc3RVbm9ic2N1cmVkU2l6
ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6c2V0VXNlc01pbmltYWxVSSk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6c2V0TWluaW11bUxheW91dFNpemVGb3JNaW5p
bWFsVUkpOiBEZWxldGVkLgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNw
cDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6V2ViUGFnZSk6CisgICAgICAgIChXZWJLaXQ6
OldlYlBhZ2U6OmRpZENvbW1pdExvYWQpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJQYWdlLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMu
aW46CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQYWdlOjpzZXRWaWV3cG9ydENvbmZpZ3VyYXRpb25NaW5pbXVtTGF5
b3V0U2l6ZUZvck1pbmltYWxVSSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnNldExhcmdl
c3RVbm9ic2N1cmVkU2l6ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OndpbGxGbHVzaExh
eWVycyk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmR5bmFtaWNWaWV3cG9ydFNpemVVcGRh
dGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjp2aWV3cG9ydENvbmZpZ3VyYXRpb25DaGFu
Z2VkKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6dXBkYXRlVmlld3BvcnRTaXplRm9yQ1NT
Vmlld3BvcnRVbml0cyk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnNldE1pbmltdW1MYXlv
dXRTaXplRm9yTWluaW1hbFVJKTogRGVsZXRlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBh
Z2UvbWFjL1JlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhLm1tOgorICAgICAgICAoV2ViS2l0OjpS
ZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYTo6Zmx1c2hMYXllcnMpOgorCiAyMDE0LTA1LTE5ICBC
ZW5qYW1pbiBQb3VsYWluICA8YnBvdWxhaW5AYXBwbGUuY29tPgogCiAgICAgICAgIFtpT1NdW1dL
Ml0gV2hlbiBhIHBhZ2UgcmVsYXlvdXQgb24gZHluYW1pYyByZXNpemUsIGtlZXAgdGhlIHNhbWUg
cmVsYXRpdmUgd2lkdGggaW4gdmlldwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS5leHAuaW4gYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgppbmRleCA3OTc1MTM2MDVk
NzAyZTBiOTU4OGJiNmE3ZjYzYWIzNmYwOTE3ZmE2Li5lYzNjYWIyZTUyNTU3MGVlNmUyYWQzZWJh
MmJiMzAxMjg4ZDdiOTZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5p
bgorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgpAQCAtOTA2LDYgKzkwNiw3IEBA
IF9fWk43V2ViQ29yZTIxVXNlckNvbnRlbnRDb250cm9sbGVyMzRyZW1vdmVVc2VyTWVzc2FnZUhh
bmRsZXJEZXNjcmlwdG9yRVJOU18yOFVzCiBfX1pON1dlYkNvcmUyMVVzZXJDb250ZW50Q29udHJv
bGxlcjZjcmVhdGVFdgogX19aTjdXZWJDb3JlMjFVc2VyQ29udGVudENvbnRyb2xsZXJEMUV2CiBf
X1pON1dlYkNvcmUyMVVzZXJDb250ZW50VVJMUGF0dGVybjVwYXJzZUVSS04zV1RGNlN0cmluZ0UK
K19fWk43V2ViQ29yZTIxVmlld3BvcnRDb25maWd1cmF0aW9uMTRyZXNldE1pbmltYWxVSUV2CiBf
X1pON1dlYkNvcmUyMVZpZXdwb3J0Q29uZmlndXJhdGlvbjE1c2V0Q29udGVudHNTaXplRVJLTlNf
N0ludFNpemVFCiBfX1pON1dlYkNvcmUyMVZpZXdwb3J0Q29uZmlndXJhdGlvbjE3d2VicGFnZVBh
cmFtZXRlcnNFdgogX19aTjdXZWJDb3JlMjFWaWV3cG9ydENvbmZpZ3VyYXRpb24yMHNldE1pbmlt
dW1MYXlvdXRTaXplRVJLTlNfOUZsb2F0U2l6ZUUKQEAgLTkxNCw2ICs5MTUsOCBAQCBfX1pON1dl
YkNvcmUyMVZpZXdwb3J0Q29uZmlndXJhdGlvbjIxeGh0bWxNb2JpbGVQYXJhbWV0ZXJzRXYKIF9f
Wk43V2ViQ29yZTIxVmlld3BvcnRDb25maWd1cmF0aW9uMjJ0ZXh0RG9jdW1lbnRQYXJhbWV0ZXJz
RXYKIF9fWk43V2ViQ29yZTIxVmlld3BvcnRDb25maWd1cmF0aW9uMjNpbWFnZURvY3VtZW50UGFy
YW1ldGVyc0V2CiBfX1pON1dlYkNvcmUyMVZpZXdwb3J0Q29uZmlndXJhdGlvbjIzc2V0RGVmYXVs
dENvbmZpZ3VyYXRpb25FUktOUzBfMTBQYXJhbWV0ZXJzRQorX19aTjdXZWJDb3JlMjFWaWV3cG9y
dENvbmZpZ3VyYXRpb24yNHBhZ2VXaWxsUmVuZGVyRmlyc3RGcmFtZUV2CitfX1pON1dlYkNvcmUy
MVZpZXdwb3J0Q29uZmlndXJhdGlvbjMyc2V0TWluaW11bUxheW91dFNpemVGb3JNaW5pbWFsVUlF
UktOU185RmxvYXRTaXplRQogX19aTjdXZWJDb3JlMjFWaWV3cG9ydENvbmZpZ3VyYXRpb25DMUV2
CiBfX1pON1dlYkNvcmUyMVdpbmRvd3NMYXRpbjFFbmNvZGluZ0V2CiBfX1pON1dlYkNvcmUyMWNy
ZWF0ZUNGVVJMRnJvbUJ1ZmZlckVQS2NtUEs3X19DRlVSTApAQCAtMTM2MSw3ICsxMzY0LDYgQEAg
X19aTjdXZWJDb3JlOUZyYW1lVmlldzE0c2V0TmVlZHNMYXlvdXRFdgogX19aTjdXZWJDb3JlOUZy
YW1lVmlldzE0c2V0VHJhbnNwYXJlbnRFYgogX19aTjdXZWJDb3JlOUZyYW1lVmlldzE1c2V0Rm9v
dGVySGVpZ2h0RWkKIF9fWk43V2ViQ29yZTlGcmFtZVZpZXcxNXNldEhlYWRlckhlaWdodEVpCi1f
X1pON1dlYkNvcmU5RnJhbWVWaWV3MTVzZXRWaWV3cG9ydFNpemVFTlNfN0ludFNpemVFCiBfX1pO
N1dlYkNvcmU5RnJhbWVWaWV3MTZzZXRQYWludEJlaGF2aW9yRWoKIF9fWk43V2ViQ29yZTlGcmFt
ZVZpZXcxN2FkZFNjcm9sbGFibGVBcmVhRVBOU18xNFNjcm9sbGFibGVBcmVhRQogX19aTjdXZWJD
b3JlOUZyYW1lVmlldzE3cGFpbnRDb250cm9sVGludHNFdgpAQCAtMTM4Niw2ICsxMzg4LDcgQEAg
X19aTjdXZWJDb3JlOUZyYW1lVmlldzI2YWRqdXN0VGlsZWRCYWNraW5nQ292ZXJhZ2VFdgogX19a
TjdXZWJDb3JlOUZyYW1lVmlldzI5c2V0QXV0b1NpemVGaXhlZE1pbmltdW1IZWlnaHRFaQogX19a
TjdXZWJDb3JlOUZyYW1lVmlldzI5c2V0U2hvdWxkVXBkYXRlV2hpbGVPZmZzY3JlZW5FYgogX19a
TjdXZWJDb3JlOUZyYW1lVmlldzMxc2V0VmlzdWFsVXBkYXRlc0FsbG93ZWRCeUNsaWVudEViCitf
X1pON1dlYkNvcmU5RnJhbWVWaWV3MzRzZXRWaWV3cG9ydFNpemVGb3JDU1NWaWV3cG9ydFVuaXRz
RU5TXzdJbnRTaXplRQogX19aTjdXZWJDb3JlOUZyYW1lVmlldzM3c2V0U2Nyb2xsaW5nUGVyZm9y
bWFuY2VMb2dnaW5nRW5hYmxlZEViCiBfX1pON1dlYkNvcmU5RnJhbWVWaWV3Mzd1cGRhdGVMYXlv
dXRBbmRTdHlsZUlmTmVlZGVkUmVjdXJzaXZlRXYKIF9fWk43V2ViQ29yZTlGcmFtZVZpZXczOHNj
cm9sbFBvc2l0aW9uQ2hhbmdlZFZpYVBsYXRmb3JtV2lkZ2V0RVJLTlNfOEludFBvaW50RVMzXwpA
QCAtMTc5Miw2ICsxNzk1LDcgQEAgX19aTks3V2ViQ29yZTIxVXNlckNvbnRlbnRVUkxQYXR0ZXJu
N21hdGNoZXNFUktOU18zVVJMRQogX19aTks3V2ViQ29yZTIxVmlld3BvcnRDb25maWd1cmF0aW9u
MTBsYXlvdXRTaXplRXYKIF9fWk5LN1dlYkNvcmUyMVZpZXdwb3J0Q29uZmlndXJhdGlvbjEyaW5p
dGlhbFNjYWxlRXYKIF9fWk5LN1dlYkNvcmUyMVZpZXdwb3J0Q29uZmlndXJhdGlvbjEybWluaW11
bVNjYWxlRXYKK19fWk5LN1dlYkNvcmUyMVZpZXdwb3J0Q29uZmlndXJhdGlvbjQ2YWN0aXZlTWlu
aW11bUxheW91dFNpemVJblNjcm9sbFZpZXdDb29yZGluYXRlc0V2CiBfX1pOSzdXZWJDb3JlMjJX
aGVlbEV2ZW50RGVsdGFUcmFja2VyMzBkb21pbmFudFNjcm9sbEdlc3R1cmVEaXJlY3Rpb25Fdgog
X19aTks3V2ViQ29yZTIzQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UxMW1heGltdW1TaXplRXYKIF9f
Wk5LN1dlYkNvcmUyM0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlMjBhdXRoZW50aWNhdGlvbkNsaWVu
dEV2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvTGVuZ3RoRnVuY3Rpb25zLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2Nzcy9MZW5ndGhGdW5jdGlvbnMuY3BwCmluZGV4IDJmYTk0ZTIwNzE2
MTVjNTUwNDZiMGI0NzRiOGI2YzRhNmY2MWViYmYuLjU2NDAwZDQ2MDc2ZWRjNzEyODM3NDhhNTU3
ZmUyMTA3MDJjNmM3YmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9MZW5ndGhGdW5j
dGlvbnMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9MZW5ndGhGdW5jdGlvbnMuY3BwCkBA
IC01NCwyMSArNTQsMjEgQEAgTGF5b3V0VW5pdCBtaW5pbXVtVmFsdWVGb3JMZW5ndGgoY29uc3Qg
TGVuZ3RoJiBsZW5ndGgsIExheW91dFVuaXQgbWF4aW11bVZhbHVlLAogICAgICAgICByZXR1cm4g
bGVuZ3RoLm5vbk5hbkNhbGN1bGF0ZWRWYWx1ZShtYXhpbXVtVmFsdWUpOwogICAgIGNhc2UgVmll
d3BvcnRQZXJjZW50YWdlV2lkdGg6CiAgICAgICAgIGlmIChyZW5kZXJWaWV3KQotICAgICAgICAg
ICAgcmV0dXJuIExheW91dFVuaXQocmVuZGVyVmlldy0+dmlld3BvcnRTaXplKCkud2lkdGgoKSAq
IGxlbmd0aC52aWV3cG9ydFBlcmNlbnRhZ2VMZW5ndGgoKSAvIDEwMC4wZik7CisgICAgICAgICAg
ICByZXR1cm4gTGF5b3V0VW5pdChyZW5kZXJWaWV3LT52aWV3cG9ydFNpemVGb3JDU1NWaWV3cG9y
dFVuaXRzKCkud2lkdGgoKSAqIGxlbmd0aC52aWV3cG9ydFBlcmNlbnRhZ2VMZW5ndGgoKSAvIDEw
MC4wZik7CiAgICAgICAgIHJldHVybiAwOwogICAgIGNhc2UgVmlld3BvcnRQZXJjZW50YWdlSGVp
Z2h0OgogICAgICAgICBpZiAocmVuZGVyVmlldykKLSAgICAgICAgICAgIHJldHVybiBMYXlvdXRV
bml0KHJlbmRlclZpZXctPnZpZXdwb3J0U2l6ZSgpLmhlaWdodCgpICogbGVuZ3RoLnZpZXdwb3J0
UGVyY2VudGFnZUxlbmd0aCgpIC8gMTAwLjBmKTsKKyAgICAgICAgICAgIHJldHVybiBMYXlvdXRV
bml0KHJlbmRlclZpZXctPnZpZXdwb3J0U2l6ZUZvckNTU1ZpZXdwb3J0VW5pdHMoKS5oZWlnaHQo
KSAqIGxlbmd0aC52aWV3cG9ydFBlcmNlbnRhZ2VMZW5ndGgoKSAvIDEwMC4wZik7CiAgICAgICAg
IHJldHVybiAwOwogICAgIGNhc2UgVmlld3BvcnRQZXJjZW50YWdlTWluOgogICAgICAgICBpZiAo
cmVuZGVyVmlldykgewotICAgICAgICAgICAgSW50U2l6ZSB2aWV3cG9ydFNpemUgPSByZW5kZXJW
aWV3LT52aWV3cG9ydFNpemUoKTsKKyAgICAgICAgICAgIEludFNpemUgdmlld3BvcnRTaXplID0g
cmVuZGVyVmlldy0+dmlld3BvcnRTaXplRm9yQ1NTVmlld3BvcnRVbml0cygpOwogICAgICAgICAg
ICAgcmV0dXJuIExheW91dFVuaXQoc3RkOjptaW4odmlld3BvcnRTaXplLndpZHRoKCksIHZpZXdw
b3J0U2l6ZS5oZWlnaHQoKSkgKiBsZW5ndGgudmlld3BvcnRQZXJjZW50YWdlTGVuZ3RoKCkgLyAx
MDAuMGYpOwogICAgICAgICB9CiAgICAgICAgIHJldHVybiAwOwogICAgIGNhc2UgVmlld3BvcnRQ
ZXJjZW50YWdlTWF4OgogICAgICAgICBpZiAocmVuZGVyVmlldykgewotICAgICAgICAgICAgSW50
U2l6ZSB2aWV3cG9ydFNpemUgPSByZW5kZXJWaWV3LT52aWV3cG9ydFNpemUoKTsKKyAgICAgICAg
ICAgIEludFNpemUgdmlld3BvcnRTaXplID0gcmVuZGVyVmlldy0+dmlld3BvcnRTaXplRm9yQ1NT
Vmlld3BvcnRVbml0cygpOwogICAgICAgICAgICAgcmV0dXJuIExheW91dFVuaXQoc3RkOjptYXgo
dmlld3BvcnRTaXplLndpZHRoKCksIHZpZXdwb3J0U2l6ZS5oZWlnaHQoKSkgKiBsZW5ndGgudmll
d3BvcnRQZXJjZW50YWdlTGVuZ3RoKCkgLyAxMDAuMGYpOwogICAgICAgICB9CiAgICAgICAgIHJl
dHVybiAwOwpAQCAtMTMyLDIxICsxMzIsMjEgQEAgZmxvYXQgZmxvYXRWYWx1ZUZvckxlbmd0aChj
b25zdCBMZW5ndGgmIGxlbmd0aCwgTGF5b3V0VW5pdCBtYXhpbXVtVmFsdWUsIFJlbmRlclYKICAg
ICAgICAgcmV0dXJuIGxlbmd0aC5ub25OYW5DYWxjdWxhdGVkVmFsdWUobWF4aW11bVZhbHVlKTsg
ICAgICAgICAgICAgICAgCiAgICAgY2FzZSBWaWV3cG9ydFBlcmNlbnRhZ2VXaWR0aDoKICAgICAg
ICAgaWYgKHJlbmRlclZpZXcpCi0gICAgICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8aW50Pihy
ZW5kZXJWaWV3LT52aWV3cG9ydFNpemUoKS53aWR0aCgpICogbGVuZ3RoLnZpZXdwb3J0UGVyY2Vu
dGFnZUxlbmd0aCgpIC8gMTAwLjBmKTsKKyAgICAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxp
bnQ+KHJlbmRlclZpZXctPnZpZXdwb3J0U2l6ZUZvckNTU1ZpZXdwb3J0VW5pdHMoKS53aWR0aCgp
ICogbGVuZ3RoLnZpZXdwb3J0UGVyY2VudGFnZUxlbmd0aCgpIC8gMTAwLjBmKTsKICAgICAgICAg
cmV0dXJuIDA7CiAgICAgY2FzZSBWaWV3cG9ydFBlcmNlbnRhZ2VIZWlnaHQ6CiAgICAgICAgIGlm
IChyZW5kZXJWaWV3KQotICAgICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGludD4ocmVuZGVy
Vmlldy0+dmlld3BvcnRTaXplKCkuaGVpZ2h0KCkgKiBsZW5ndGgudmlld3BvcnRQZXJjZW50YWdl
TGVuZ3RoKCkgLyAxMDAuMGYpOworICAgICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGludD4o
cmVuZGVyVmlldy0+dmlld3BvcnRTaXplRm9yQ1NTVmlld3BvcnRVbml0cygpLmhlaWdodCgpICog
bGVuZ3RoLnZpZXdwb3J0UGVyY2VudGFnZUxlbmd0aCgpIC8gMTAwLjBmKTsKICAgICAgICAgcmV0
dXJuIDA7CiAgICAgY2FzZSBWaWV3cG9ydFBlcmNlbnRhZ2VNaW46CiAgICAgICAgIGlmIChyZW5k
ZXJWaWV3KSB7Ci0gICAgICAgICAgICBJbnRTaXplIHZpZXdwb3J0U2l6ZSA9IHJlbmRlclZpZXct
PnZpZXdwb3J0U2l6ZSgpOworICAgICAgICAgICAgSW50U2l6ZSB2aWV3cG9ydFNpemUgPSByZW5k
ZXJWaWV3LT52aWV3cG9ydFNpemVGb3JDU1NWaWV3cG9ydFVuaXRzKCk7CiAgICAgICAgICAgICBy
ZXR1cm4gc3RhdGljX2Nhc3Q8aW50PihzdGQ6Om1pbih2aWV3cG9ydFNpemUud2lkdGgoKSwgdmll
d3BvcnRTaXplLmhlaWdodCgpKSAqIGxlbmd0aC52aWV3cG9ydFBlcmNlbnRhZ2VMZW5ndGgoKSAv
IDEwMC4wZik7CiAgICAgICAgIH0KICAgICAgICAgcmV0dXJuIDA7CiAgICAgY2FzZSBWaWV3cG9y
dFBlcmNlbnRhZ2VNYXg6CiAgICAgICAgIGlmIChyZW5kZXJWaWV3KSB7Ci0gICAgICAgICAgICBJ
bnRTaXplIHZpZXdwb3J0U2l6ZSA9IHJlbmRlclZpZXctPnZpZXdwb3J0U2l6ZSgpOworICAgICAg
ICAgICAgSW50U2l6ZSB2aWV3cG9ydFNpemUgPSByZW5kZXJWaWV3LT52aWV3cG9ydFNpemVGb3JD
U1NWaWV3cG9ydFVuaXRzKCk7CiAgICAgICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8aW50Pihz
dGQ6Om1heCh2aWV3cG9ydFNpemUud2lkdGgoKSwgdmlld3BvcnRTaXplLmhlaWdodCgpKSAqIGxl
bmd0aC52aWV3cG9ydFBlcmNlbnRhZ2VMZW5ndGgoKSAvIDEwMC4wZik7CiAgICAgICAgIH0KICAg
ICAgICAgcmV0dXJuIDA7CkBAIC0xNzgsMjEgKzE3OCwyMSBAQCBmbG9hdCBmbG9hdFZhbHVlRm9y
TGVuZ3RoKGNvbnN0IExlbmd0aCYgbGVuZ3RoLCBmbG9hdCBtYXhpbXVtVmFsdWUsIFJlbmRlclZp
ZXcqCiAgICAgICAgIHJldHVybiBsZW5ndGgubm9uTmFuQ2FsY3VsYXRlZFZhbHVlKG1heGltdW1W
YWx1ZSk7CiAgICAgY2FzZSBWaWV3cG9ydFBlcmNlbnRhZ2VXaWR0aDoKICAgICAgICAgaWYgKHJl
bmRlclZpZXcpCi0gICAgICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8aW50PihyZW5kZXJWaWV3
LT52aWV3cG9ydFNpemUoKS53aWR0aCgpICogbGVuZ3RoLnZpZXdwb3J0UGVyY2VudGFnZUxlbmd0
aCgpIC8gMTAwLjBmKTsKKyAgICAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxpbnQ+KHJlbmRl
clZpZXctPnZpZXdwb3J0U2l6ZUZvckNTU1ZpZXdwb3J0VW5pdHMoKS53aWR0aCgpICogbGVuZ3Ro
LnZpZXdwb3J0UGVyY2VudGFnZUxlbmd0aCgpIC8gMTAwLjBmKTsKICAgICAgICAgcmV0dXJuIDA7
CiAgICAgY2FzZSBWaWV3cG9ydFBlcmNlbnRhZ2VIZWlnaHQ6CiAgICAgICAgIGlmIChyZW5kZXJW
aWV3KQotICAgICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGludD4ocmVuZGVyVmlldy0+dmll
d3BvcnRTaXplKCkuaGVpZ2h0KCkgKiBsZW5ndGgudmlld3BvcnRQZXJjZW50YWdlTGVuZ3RoKCkg
LyAxMDAuMGYpOworICAgICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGludD4ocmVuZGVyVmll
dy0+dmlld3BvcnRTaXplRm9yQ1NTVmlld3BvcnRVbml0cygpLmhlaWdodCgpICogbGVuZ3RoLnZp
ZXdwb3J0UGVyY2VudGFnZUxlbmd0aCgpIC8gMTAwLjBmKTsKICAgICAgICAgcmV0dXJuIDA7CiAg
ICAgY2FzZSBWaWV3cG9ydFBlcmNlbnRhZ2VNaW46CiAgICAgICAgIGlmIChyZW5kZXJWaWV3KSB7
Ci0gICAgICAgICAgICBJbnRTaXplIHZpZXdwb3J0U2l6ZSA9IHJlbmRlclZpZXctPnZpZXdwb3J0
U2l6ZSgpOworICAgICAgICAgICAgSW50U2l6ZSB2aWV3cG9ydFNpemUgPSByZW5kZXJWaWV3LT52
aWV3cG9ydFNpemVGb3JDU1NWaWV3cG9ydFVuaXRzKCk7CiAgICAgICAgICAgICByZXR1cm4gc3Rh
dGljX2Nhc3Q8aW50PihzdGQ6Om1pbih2aWV3cG9ydFNpemUud2lkdGgoKSwgdmlld3BvcnRTaXpl
LmhlaWdodCgpKSAqIGxlbmd0aC52aWV3cG9ydFBlcmNlbnRhZ2VMZW5ndGgoKSAvIDEwMC4wZik7
CiAgICAgICAgIH0KICAgICAgICAgcmV0dXJuIDA7CiAgICAgY2FzZSBWaWV3cG9ydFBlcmNlbnRh
Z2VNYXg6CiAgICAgICAgIGlmIChyZW5kZXJWaWV3KSB7Ci0gICAgICAgICAgICBJbnRTaXplIHZp
ZXdwb3J0U2l6ZSA9IHJlbmRlclZpZXctPnZpZXdwb3J0U2l6ZSgpOworICAgICAgICAgICAgSW50
U2l6ZSB2aWV3cG9ydFNpemUgPSByZW5kZXJWaWV3LT52aWV3cG9ydFNpemVGb3JDU1NWaWV3cG9y
dFVuaXRzKCk7CiAgICAgICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8aW50PihzdGQ6Om1heCh2
aWV3cG9ydFNpemUud2lkdGgoKSwgdmlld3BvcnRTaXplLmhlaWdodCgpKSAqIGxlbmd0aC52aWV3
cG9ydFBlcmNlbnRhZ2VMZW5ndGgoKSAvIDEwMC4wZik7CiAgICAgICAgIH0KICAgICAgICAgcmV0
dXJuIDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5jcHAKaW5kZXggOGJiMzNjN2Q0ZWZi
NTA0NjYxOGEzMWJjMGQ1ZGExYWMxZmU2ZjE4Ni4uYTJlOWI2NzJkMmYxYzQ1NzgyNmZmYjY2Y2Rj
ZWQ0ZTkyYzY2ZGIzOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVyLmNwcApAQCAtMzYx
Niw4ICszNjE2LDggQEAgU3R5bGVSZXNvbHZlcjo6TWF0Y2hlZFByb3BlcnRpZXM6On5NYXRjaGVk
UHJvcGVydGllcygpCiAKIGludCBTdHlsZVJlc29sdmVyOjp2aWV3cG9ydFBlcmNlbnRhZ2VWYWx1
ZShDU1NQcmltaXRpdmVWYWx1ZSYgdW5pdCwgaW50IHBlcmNlbnRhZ2UpCiB7Ci0gICAgaW50IHZp
ZXdQb3J0SGVpZ2h0ID0gZG9jdW1lbnQoKS5yZW5kZXJWaWV3KCktPnZpZXdwb3J0U2l6ZSgpLmhl
aWdodCgpICogcGVyY2VudGFnZSAvIDEwMC4wZjsKLSAgICBpbnQgdmlld1BvcnRXaWR0aCA9IGRv
Y3VtZW50KCkucmVuZGVyVmlldygpLT52aWV3cG9ydFNpemUoKS53aWR0aCgpICogcGVyY2VudGFn
ZSAvIDEwMC4wZjsKKyAgICBpbnQgdmlld1BvcnRIZWlnaHQgPSBkb2N1bWVudCgpLnJlbmRlclZp
ZXcoKS0+dmlld3BvcnRTaXplRm9yQ1NTVmlld3BvcnRVbml0cygpLmhlaWdodCgpICogcGVyY2Vu
dGFnZSAvIDEwMC4wZjsKKyAgICBpbnQgdmlld1BvcnRXaWR0aCA9IGRvY3VtZW50KCkucmVuZGVy
VmlldygpLT52aWV3cG9ydFNpemVGb3JDU1NWaWV3cG9ydFVuaXRzKCkud2lkdGgoKSAqIHBlcmNl
bnRhZ2UgLyAxMDAuMGY7CiAKICAgICBpZiAodW5pdC5pc1ZpZXdwb3J0UGVyY2VudGFnZUhlaWdo
dCgpKQogICAgICAgICByZXR1cm4gdmlld1BvcnRIZWlnaHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vVmlld3BvcnRBcmd1bWVudHMuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9WaWV3
cG9ydEFyZ3VtZW50cy5oCmluZGV4IDc3MDA3OTAxNzI3NzRiZmNiNTU5NDhiMWU5MzVlZTY3YWMz
NjgwYmUuLmEwMTgxNTI3NTA3MGQ3NzE4MzlkOWZjNGM3Mzc5MTgwMDQ1NTZlMzIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9WaWV3cG9ydEFyZ3VtZW50cy5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9WaWV3cG9ydEFyZ3VtZW50cy5oCkBAIC0xMTUsMTAgKzExNSw2IEBAIHN0cnVj
dCBWaWV3cG9ydEFyZ3VtZW50cyB7CiAgICAgewogICAgICAgICAvLyBVc2VkIGZvciBmaWd1cmlu
ZyBvdXQgd2hldGhlciB0byByZXNldCB0aGUgdmlld3BvcnQgb3Igbm90LAogICAgICAgICAvLyB0
aHVzIHdlIGFyZSBub3QgdGFraW5nIHR5cGUgaW50byBhY2NvdW50LgotI2lmIFBMQVRGT1JNKElP
UykKLSAgICAgICAgLy8gV2UgaWdub3JlIG1pbmltYWxVSSBmb3IgdGhlIHNhbWUgcmVhc29uIC0t
IGl0IGlzIGEgaGlnaGVyLWxldmVsCi0gICAgICAgIC8vIHByb3BlcnR5IHRoYXQgZG9lc24ndCBh
ZmZlY3QgdGhlIGFjdHVhbCB2aWV3cG9ydC4KLSNlbmRpZgogICAgICAgICByZXR1cm4gd2lkdGgg
PT0gb3RoZXIud2lkdGgKICAgICAgICAgICAgICYmIG1pbldpZHRoID09IG90aGVyLm1pbldpZHRo
CiAgICAgICAgICAgICAmJiBtYXhXaWR0aCA9PSBvdGhlci5tYXhXaWR0aApAQCAtMTI5LDYgKzEy
NSw5IEBAIHN0cnVjdCBWaWV3cG9ydEFyZ3VtZW50cyB7CiAgICAgICAgICAgICAmJiBtaW5ab29t
ID09IG90aGVyLm1pblpvb20KICAgICAgICAgICAgICYmIG1heFpvb20gPT0gb3RoZXIubWF4Wm9v
bQogICAgICAgICAgICAgJiYgdXNlclpvb20gPT0gb3RoZXIudXNlclpvb20KKyNpZiBQTEFURk9S
TShJT1MpCisgICAgICAgICAgICAmJiBtaW5pbWFsVUkgPT0gb3RoZXIubWluaW1hbFVJCisjZW5k
aWYKICAgICAgICAgICAgICYmIG9yaWVudGF0aW9uID09IG90aGVyLm9yaWVudGF0aW9uOwogICAg
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwCmluZGV4IGYxZThlNzIzYmNlMjQ0ZTUyMGQy
ZTM4NmUzODQ0MTNmMTEzYzI3ZjAuLmRhYmE3NjdjZjE5YmFkNzUyYjBmNjZmMTBlOWZiYTZlNGZh
YTBkMWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAKQEAgLTQzOTgsNyArNDM5OCw3IEBA
IHZvaWQgRnJhbWVWaWV3OjpzZXRFeHBvc2VkUmVjdChGbG9hdFJlY3QgZXhwb3NlZFJlY3QpCiAg
ICAgICAgIHZpZXctPmNvbXBvc2l0b3IoKS5zY2hlZHVsZUxheWVyRmx1c2goZmFsc2UgLyogY2Fu
VGhyb3R0bGUgKi8pOwogfQogICAgIAotdm9pZCBGcmFtZVZpZXc6OnNldFZpZXdwb3J0U2l6ZShJ
bnRTaXplIHNpemUpCit2b2lkIEZyYW1lVmlldzo6c2V0Vmlld3BvcnRTaXplRm9yQ1NTVmlld3Bv
cnRVbml0cyhJbnRTaXplIHNpemUpCiB7CiAgICAgaWYgKG1faGFzT3ZlcnJpZGVWaWV3cG9ydFNp
emUgJiYgbV9vdmVycmlkZVZpZXdwb3J0U2l6ZSA9PSBzaXplKQogICAgICAgICByZXR1cm47CkBA
IC00NDEwLDcgKzQ0MTAsNyBAQCB2b2lkIEZyYW1lVmlldzo6c2V0Vmlld3BvcnRTaXplKEludFNp
emUgc2l6ZSkKICAgICAgICAgZG9jdW1lbnQtPnN0eWxlUmVzb2x2ZXJDaGFuZ2VkKERlZmVyUmVj
YWxjU3R5bGUpOwogfQogICAgIAotSW50U2l6ZSBGcmFtZVZpZXc6OnZpZXdwb3J0U2l6ZSgpIGNv
bnN0CitJbnRTaXplIEZyYW1lVmlldzo6dmlld3BvcnRTaXplRm9yQ1NTVmlld3BvcnRVbml0cygp
IGNvbnN0CiB7CiAgICAgaWYgKG1faGFzT3ZlcnJpZGVWaWV3cG9ydFNpemUpCiAgICAgICAgIHJl
dHVybiBtX292ZXJyaWRlVmlld3BvcnRTaXplOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGFnZS9GcmFtZVZpZXcuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmgKaW5kZXgg
OTMzOGI4NGU4OWJjZDc4NDJhOGExZDg5YWNlY2ExOGRjMDM3NjQ2MC4uNGUwNDQzZjc0OTM2OWM5
OGZiMTg0MjMxZTY1NDMxYTU2YzYzZGU1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9GcmFtZVZpZXcuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5oCkBAIC0y
MjAsOCArMjIwLDggQEAgcHVibGljOgogCiAgICAgdm9pZCBhZGp1c3RWaWV3U2l6ZSgpOwogICAg
IAotICAgIHZvaWQgc2V0Vmlld3BvcnRTaXplKEludFNpemUpOwotICAgIEludFNpemUgdmlld3Bv
cnRTaXplKCkgY29uc3Q7CisgICAgdm9pZCBzZXRWaWV3cG9ydFNpemVGb3JDU1NWaWV3cG9ydFVu
aXRzKEludFNpemUpOworICAgIEludFNpemUgdmlld3BvcnRTaXplRm9yQ1NTVmlld3BvcnRVbml0
cygpIGNvbnN0OwogICAgIAogICAgIHZpcnR1YWwgSW50UmVjdCB3aW5kb3dDbGlwUmVjdChib29s
IGNsaXBUb0NvbnRlbnRzID0gdHJ1ZSkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgSW50UmVjdCB3aW5k
b3dDbGlwUmVjdEZvckZyYW1lT3duZXIoY29uc3QgSFRNTEZyYW1lT3duZXJFbGVtZW50KiwgYm9v
bCBjbGlwVG9MYXllckNvbnRlbnRzKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvVmlld3BvcnRDb25maWd1cmF0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvVmll
d3BvcnRDb25maWd1cmF0aW9uLmNwcAppbmRleCBhOWU4ZjNiMGI5YWEwNWYyMGMzMGFjYmY4NTdi
MGJkOGQ2ZjJhYmUwLi45NWVjOWU2ODM4M2VhYzJlZjE4ZGU4MmIzZGNhMTVjYjJhZTM5NTMyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1ZpZXdwb3J0Q29uZmlndXJhdGlvbi5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9WaWV3cG9ydENvbmZpZ3VyYXRpb24uY3BwCkBAIC00
Niw2ICs0Niw5IEBAIHN0YXRpYyBib29sIGNvbnN0cmFpbnRzQXJlQWxsUmVsYXRpdmUoY29uc3Qg
Vmlld3BvcnRDb25maWd1cmF0aW9uOjpQYXJhbWV0ZXJzJiBjCiAKIFZpZXdwb3J0Q29uZmlndXJh
dGlvbjo6Vmlld3BvcnRDb25maWd1cmF0aW9uKCkKICAgICA6IG1fbWluaW11bUxheW91dFNpemUo
MTAyNCwgNzY4KQorICAgICwgbV9taW5pbXVtTGF5b3V0U2l6ZUZvck1pbmltYWxVSShtX21pbmlt
dW1MYXlvdXRTaXplKQorICAgICwgbV91c2VzTWluaW1hbFVJKGZhbHNlKQorICAgICwgbV9maXJz
dEZyYW1lQ29tbWl0ZWQoZmFsc2UpCiB7CiAgICAgLy8gU2V0dXAgYSByZWFzb25hYmxlIGRlZmF1
bHQgY29uZmlndXJhdGlvbiB0byBhdm9pZCBjb21wdXRpbmcgaW5maW5pdGUgc2NhbGUvc2l6ZXMu
CiAgICAgLy8gVGhvc2UgYXJlIHRoZSBvcmlnaW5hbCBpUGhvbmUgY29uZmlndXJhdGlvbi4KQEAg
LTc5LDcgKzgyLDIxIEBAIHZvaWQgVmlld3BvcnRDb25maWd1cmF0aW9uOjpzZXRNaW5pbXVtTGF5
b3V0U2l6ZShjb25zdCBGbG9hdFNpemUmIG1pbmltdW1MYXlvdXRTCiAgICAgICAgIHJldHVybjsK
IAogICAgIG1fbWluaW11bUxheW91dFNpemUgPSBtaW5pbXVtTGF5b3V0U2l6ZTsKLSAgICB1cGRh
dGVDb25maWd1cmF0aW9uKCk7Cit9CisKK3ZvaWQgVmlld3BvcnRDb25maWd1cmF0aW9uOjpzZXRN
aW5pbXVtTGF5b3V0U2l6ZUZvck1pbmltYWxVSShjb25zdCBGbG9hdFNpemUmIG1pbmltdW1MYXlv
dXRTaXplRm9yTWluaW1hbFVJKQoreworICAgIGlmIChtX21pbmltdW1MYXlvdXRTaXplRm9yTWlu
aW1hbFVJID09IG1pbmltdW1MYXlvdXRTaXplRm9yTWluaW1hbFVJKQorICAgICAgICByZXR1cm47
CisKKyAgICBtX21pbmltdW1MYXlvdXRTaXplRm9yTWluaW1hbFVJID0gbWluaW11bUxheW91dFNp
emVGb3JNaW5pbWFsVUk7Cit9CisKK2NvbnN0IEZsb2F0U2l6ZSYgVmlld3BvcnRDb25maWd1cmF0
aW9uOjphY3RpdmVNaW5pbXVtTGF5b3V0U2l6ZUluU2Nyb2xsVmlld0Nvb3JkaW5hdGVzKCkgY29u
c3QKK3sKKyAgICBpZiAobV91c2VzTWluaW1hbFVJKQorICAgICAgICByZXR1cm4gbV9taW5pbXVt
TGF5b3V0U2l6ZUZvck1pbmltYWxVSTsKKyAgICByZXR1cm4gbV9taW5pbXVtTGF5b3V0U2l6ZTsK
IH0KIAogdm9pZCBWaWV3cG9ydENvbmZpZ3VyYXRpb246OnNldFZpZXdwb3J0QXJndW1lbnRzKGNv
bnN0IFZpZXdwb3J0QXJndW1lbnRzJiB2aWV3cG9ydEFyZ3VtZW50cykKQEAgLTkxLDYgKzEwOCwy
MCBAQCB2b2lkIFZpZXdwb3J0Q29uZmlndXJhdGlvbjo6c2V0Vmlld3BvcnRBcmd1bWVudHMoY29u
c3QgVmlld3BvcnRBcmd1bWVudHMmIHZpZXdwbwogICAgIHVwZGF0ZUNvbmZpZ3VyYXRpb24oKTsK
IH0KIAordm9pZCBWaWV3cG9ydENvbmZpZ3VyYXRpb246OnJlc2V0TWluaW1hbFVJKCkKK3sKKyAg
ICBtX3VzZXNNaW5pbWFsVUkgPSBmYWxzZTsKKyAgICBtX2ZpcnN0RnJhbWVDb21taXRlZCA9IGZh
bHNlOworfQorCit2b2lkIFZpZXdwb3J0Q29uZmlndXJhdGlvbjo6cGFnZVdpbGxSZW5kZXJGaXJz
dEZyYW1lKCkKK3sKKyAgICBpZiAobV9maXJzdEZyYW1lQ29tbWl0ZWQpCisgICAgICAgIHJldHVy
bjsKKworICAgIG1fZmlyc3RGcmFtZUNvbW1pdGVkID0gdHJ1ZTsKK30KKwogSW50U2l6ZSBWaWV3
cG9ydENvbmZpZ3VyYXRpb246OmxheW91dFNpemUoKSBjb25zdAogewogICAgIHJldHVybiBJbnRT
aXplKGxheW91dFdpZHRoKCksIGxheW91dEhlaWdodCgpKTsKQEAgLTEwNywxNSArMTM4LDE2IEBA
IGRvdWJsZSBWaWV3cG9ydENvbmZpZ3VyYXRpb246OmluaXRpYWxTY2FsZSgpIGNvbnN0CiAKICAg
ICAvLyBJZiBub3QsIGl0IGlzIHVwIHRvIHVzIHRvIGRldGVybWluZSB0aGUgaW5pdGlhbCBzY2Fs
ZS4KICAgICAvLyBXZSB3YW50IGEgc2NhbGUgc21hbGwgZW5vdWdoIHRvIGZpdCB0aGUgZG9jdW1l
bnQgd2lkdGgtd2lzZS4KKyAgICBjb25zdCBGbG9hdFNpemUmIG1pbmltdW1MYXlvdXRTaXplID0g
YWN0aXZlTWluaW11bUxheW91dFNpemVJblNjcm9sbFZpZXdDb29yZGluYXRlcygpOwogICAgIGRv
dWJsZSB3aWR0aCA9IG1fY29udGVudFNpemUud2lkdGgoKSA+IDAgPyBtX2NvbnRlbnRTaXplLndp
ZHRoKCkgOiBsYXlvdXRXaWR0aCgpOwogICAgIGRvdWJsZSBpbml0aWFsU2NhbGUgPSAwOwogICAg
IGlmICh3aWR0aCA+IDApCi0gICAgICAgIGluaXRpYWxTY2FsZSA9IG1fbWluaW11bUxheW91dFNp
emUud2lkdGgoKSAvIHdpZHRoOworICAgICAgICBpbml0aWFsU2NhbGUgPSBtaW5pbXVtTGF5b3V0
U2l6ZS53aWR0aCgpIC8gd2lkdGg7CiAKICAgICAvLyBQcmV2ZW50IHRoZSBpbnRpYWwgc2NhbGUg
ZnJvbSBzaHJpbmtpbmcgdG8gYSBoZWlnaHQgc21hbGxlciB0aGFuIG91ciB2aWV3J3MgbWluaW11
bSBoZWlnaHQuCiAgICAgZG91YmxlIGhlaWdodCA9IG1fY29udGVudFNpemUuaGVpZ2h0KCkgPiAw
ID8gbV9jb250ZW50U2l6ZS5oZWlnaHQoKSA6IGxheW91dEhlaWdodCgpOwotICAgIGlmIChoZWln
aHQgPiAwICYmIGhlaWdodCAqIGluaXRpYWxTY2FsZSA8IG1fbWluaW11bUxheW91dFNpemUuaGVp
Z2h0KCkpCi0gICAgICAgIGluaXRpYWxTY2FsZSA9IG1fbWluaW11bUxheW91dFNpemUuaGVpZ2h0
KCkgLyBoZWlnaHQ7CisgICAgaWYgKGhlaWdodCA+IDAgJiYgaGVpZ2h0ICogaW5pdGlhbFNjYWxl
IDwgbWluaW11bUxheW91dFNpemUuaGVpZ2h0KCkpCisgICAgICAgIGluaXRpYWxTY2FsZSA9IG1p
bmltdW1MYXlvdXRTaXplLmhlaWdodCgpIC8gaGVpZ2h0OwogICAgIHJldHVybiBzdGQ6Om1pbihz
dGQ6Om1heChpbml0aWFsU2NhbGUsIG1fY29uZmlndXJhdGlvbi5taW5pbXVtU2NhbGUpLCBtX2Nv
bmZpZ3VyYXRpb24ubWF4aW11bVNjYWxlKTsKIH0KIApAQCAtMTI4LDEzICsxNjAsMTQgQEAgZG91
YmxlIFZpZXdwb3J0Q29uZmlndXJhdGlvbjo6bWluaW11bVNjYWxlKCkgY29uc3QKICAgICAvLyBJ
ZiBub3QsIHdlIHN0aWxsIG5lZWQgdG8gc2FuaXR5IGNoZWNrIG91ciB2YWx1ZS4KICAgICBkb3Vi
bGUgbWluaW11bVNjYWxlID0gbV9jb25maWd1cmF0aW9uLm1pbmltdW1TY2FsZTsKIAorICAgIGNv
bnN0IEZsb2F0U2l6ZSYgbWluaW11bUxheW91dFNpemUgPSBhY3RpdmVNaW5pbXVtTGF5b3V0U2l6
ZUluU2Nyb2xsVmlld0Nvb3JkaW5hdGVzKCk7CiAgICAgZG91YmxlIGNvbnRlbnRXaWR0aCA9IG1f
Y29udGVudFNpemUud2lkdGgoKTsKLSAgICBpZiAoY29udGVudFdpZHRoID4gMCAmJiBjb250ZW50
V2lkdGggKiBtaW5pbXVtU2NhbGUgPCBtX21pbmltdW1MYXlvdXRTaXplLndpZHRoKCkpCi0gICAg
ICAgIG1pbmltdW1TY2FsZSA9IG1fbWluaW11bUxheW91dFNpemUud2lkdGgoKSAvIGNvbnRlbnRX
aWR0aDsKKyAgICBpZiAoY29udGVudFdpZHRoID4gMCAmJiBjb250ZW50V2lkdGggKiBtaW5pbXVt
U2NhbGUgPCBtaW5pbXVtTGF5b3V0U2l6ZS53aWR0aCgpKQorICAgICAgICBtaW5pbXVtU2NhbGUg
PSBtaW5pbXVtTGF5b3V0U2l6ZS53aWR0aCgpIC8gY29udGVudFdpZHRoOwogCiAgICAgZG91Ymxl
IGNvbnRlbnRIZWlnaHQgPSBtX2NvbnRlbnRTaXplLmhlaWdodCgpOwotICAgIGlmIChjb250ZW50
SGVpZ2h0ID4gMCAmJiBjb250ZW50SGVpZ2h0ICogbWluaW11bVNjYWxlIDwgbV9taW5pbXVtTGF5
b3V0U2l6ZS5oZWlnaHQoKSkKLSAgICAgICAgbWluaW11bVNjYWxlID0gbV9taW5pbXVtTGF5b3V0
U2l6ZS5oZWlnaHQoKSAvIGNvbnRlbnRIZWlnaHQ7CisgICAgaWYgKGNvbnRlbnRIZWlnaHQgPiAw
ICYmIGNvbnRlbnRIZWlnaHQgKiBtaW5pbXVtU2NhbGUgPCBtaW5pbXVtTGF5b3V0U2l6ZS5oZWln
aHQoKSkKKyAgICAgICAgbWluaW11bVNjYWxlID0gbWluaW11bUxheW91dFNpemUuaGVpZ2h0KCkg
LyBjb250ZW50SGVpZ2h0OwogCiAgICAgbWluaW11bVNjYWxlID0gc3RkOjptaW4oc3RkOjptYXgo
bWluaW11bVNjYWxlLCBtX2NvbmZpZ3VyYXRpb24ubWluaW11bVNjYWxlKSwgbV9jb25maWd1cmF0
aW9uLm1heGltdW1TY2FsZSk7CiAKQEAgLTI0Myw3NiArMjc2LDgxIEBAIHZvaWQgVmlld3BvcnRD
b25maWd1cmF0aW9uOjp1cGRhdGVDb25maWd1cmF0aW9uKCkKIAogICAgIGlmICh2aWV3cG9ydEFy
Z3VtZW50VXNlclpvb21Jc1NldChtX3ZpZXdwb3J0QXJndW1lbnRzLnVzZXJab29tKSkKICAgICAg
ICAgbV9jb25maWd1cmF0aW9uLmFsbG93c1VzZXJTY2FsaW5nID0gbV92aWV3cG9ydEFyZ3VtZW50
cy51c2VyWm9vbSAhPSAwLjsKKworICAgIGlmICghbV9maXJzdEZyYW1lQ29tbWl0ZWQpCisgICAg
ICAgIG1fdXNlc01pbmltYWxVSSA9IG1fdmlld3BvcnRBcmd1bWVudHMubWluaW1hbFVJOwogfQog
CiBpbnQgVmlld3BvcnRDb25maWd1cmF0aW9uOjpsYXlvdXRXaWR0aCgpIGNvbnN0CiB7CiAgICAg
QVNTRVJUKCFjb25zdHJhaW50c0FyZUFsbFJlbGF0aXZlKG1fY29uZmlndXJhdGlvbikpOwogCisg
ICAgY29uc3QgRmxvYXRTaXplJiBtaW5pbXVtTGF5b3V0U2l6ZSA9IGFjdGl2ZU1pbmltdW1MYXlv
dXRTaXplSW5TY3JvbGxWaWV3Q29vcmRpbmF0ZXMoKTsKICAgICBpZiAobV9jb25maWd1cmF0aW9u
LndpZHRoSXNTZXQpIHsKICAgICAgICAgLy8gSWYgd2Ugc2NhbGUgdG8gZml0LCB0aGVuIGFjY2Vw
dCB0aGUgdmlld3BvcnQgd2lkdGggd2l0aCBzYW5pdHkgY2hlY2tpbmcuCiAgICAgICAgIGlmICgh
bV9jb25maWd1cmF0aW9uLmluaXRpYWxTY2FsZUlzU2V0KSB7CiAgICAgICAgICAgICBkb3VibGUg
bWF4aW11bVNjYWxlID0gdGhpcy0+bWF4aW11bVNjYWxlKCk7CiAgICAgICAgICAgICBkb3VibGUg
bWF4aW11bUNvbnRlbnRXaWR0aEluVmlld3BvcnRDb29yZGluYXRlID0gbWF4aW11bVNjYWxlICog
bV9jb25maWd1cmF0aW9uLndpZHRoOwotICAgICAgICAgICAgaWYgKG1heGltdW1Db250ZW50V2lk
dGhJblZpZXdwb3J0Q29vcmRpbmF0ZSA8IG1fbWluaW11bUxheW91dFNpemUud2lkdGgoKSkgewor
ICAgICAgICAgICAgaWYgKG1heGltdW1Db250ZW50V2lkdGhJblZpZXdwb3J0Q29vcmRpbmF0ZSA8
IG1pbmltdW1MYXlvdXRTaXplLndpZHRoKCkpIHsKICAgICAgICAgICAgICAgICAvLyBUaGUgY29u
dGVudCB6b29tZWQgdG8gbWF4U2NhbGUgZG9lcyBub3QgZml0IHRoZSB0aGUgdmlldy4gUmV0dXJu
IHRoZSBtaW5pbXVtIHdpZHRoCiAgICAgICAgICAgICAgICAgLy8gc2F0aXNmeWluZyB0aGUgY29u
c3RyYWludCBtYXhpbXVtU2NhbGUuCi0gICAgICAgICAgICAgICAgcmV0dXJuIHN0ZDo6cm91bmQo
bV9taW5pbXVtTGF5b3V0U2l6ZS53aWR0aCgpIC8gbWF4aW11bVNjYWxlKTsKKyAgICAgICAgICAg
ICAgICByZXR1cm4gc3RkOjpyb3VuZChtaW5pbXVtTGF5b3V0U2l6ZS53aWR0aCgpIC8gbWF4aW11
bVNjYWxlKTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIHJldHVybiBzdGQ6OnJvdW5kKG1f
Y29uZmlndXJhdGlvbi53aWR0aCk7CiAgICAgICAgIH0KIAogICAgICAgICAvLyBJZiBub3QsIG1h
a2Ugc3VyZSB0aGUgdmlld3BvcnQgd2lkdGggYW5kIGluaXRpYWwgc2NhbGUgY2FuIGNvLWV4aXN0
LgogICAgICAgICBkb3VibGUgaW5pdGlhbENvbnRlbnRXaWR0aEluVmlld3BvcnRDb29yZGluYXRl
ID0gbV9jb25maWd1cmF0aW9uLndpZHRoICogbV9jb25maWd1cmF0aW9uLmluaXRpYWxTY2FsZTsK
LSAgICAgICAgaWYgKGluaXRpYWxDb250ZW50V2lkdGhJblZpZXdwb3J0Q29vcmRpbmF0ZSA8IG1f
bWluaW11bUxheW91dFNpemUud2lkdGgoKSkgeworICAgICAgICBpZiAoaW5pdGlhbENvbnRlbnRX
aWR0aEluVmlld3BvcnRDb29yZGluYXRlIDwgbWluaW11bUxheW91dFNpemUud2lkdGgoKSkgewog
ICAgICAgICAgICAgLy8gVGhlIHNwZWNpZmllZCB3aWR0aCBkb2VzIG5vdCBmaXQgaW4gdmlld3Bv
cnQuIFJldHVybiB0aGUgbWluaW11bSB3aWR0aCB0aGF0IHNhdGlzZnkgdGhlIGluaXRpYWxTY2Fs
ZSBjb25zdHJhaW50LgotICAgICAgICAgICAgcmV0dXJuIHN0ZDo6cm91bmQobV9taW5pbXVtTGF5
b3V0U2l6ZS53aWR0aCgpIC8gbV9jb25maWd1cmF0aW9uLmluaXRpYWxTY2FsZSk7CisgICAgICAg
ICAgICByZXR1cm4gc3RkOjpyb3VuZChtaW5pbXVtTGF5b3V0U2l6ZS53aWR0aCgpIC8gbV9jb25m
aWd1cmF0aW9uLmluaXRpYWxTY2FsZSk7CiAgICAgICAgIH0KICAgICAgICAgcmV0dXJuIHN0ZDo6
cm91bmQobV9jb25maWd1cmF0aW9uLndpZHRoKTsKICAgICB9CiAKICAgICAvLyBJZiB0aGUgcGFn
ZSBoYXMgYSByZWFsIHNjYWxlLCB0aGVuIGp1c3QgcmV0dXJuIHRoZSBtaW5pbXVtIHNpemUgb3Zl
ciB0aGUgaW5pdGlhbCBzY2FsZS4KICAgICBpZiAobV9jb25maWd1cmF0aW9uLmluaXRpYWxTY2Fs
ZUlzU2V0ICYmICFtX2NvbmZpZ3VyYXRpb24uaGVpZ2h0SXNTZXQpCi0gICAgICAgIHJldHVybiBz
dGQ6OnJvdW5kKG1fbWluaW11bUxheW91dFNpemUud2lkdGgoKSAvIG1fY29uZmlndXJhdGlvbi5p
bml0aWFsU2NhbGUpOworICAgICAgICByZXR1cm4gc3RkOjpyb3VuZChtaW5pbXVtTGF5b3V0U2l6
ZS53aWR0aCgpIC8gbV9jb25maWd1cmF0aW9uLmluaXRpYWxTY2FsZSk7CiAKLSAgICBpZiAobV9t
aW5pbXVtTGF5b3V0U2l6ZS5oZWlnaHQoKSA+IDApCi0gICAgICAgIHJldHVybiBzdGQ6OnJvdW5k
KG1fbWluaW11bUxheW91dFNpemUud2lkdGgoKSAqIGxheW91dEhlaWdodCgpIC8gbV9taW5pbXVt
TGF5b3V0U2l6ZS5oZWlnaHQoKSk7Ci0gICAgcmV0dXJuIG1fbWluaW11bUxheW91dFNpemUud2lk
dGgoKTsKKyAgICBpZiAobWluaW11bUxheW91dFNpemUuaGVpZ2h0KCkgPiAwKQorICAgICAgICBy
ZXR1cm4gc3RkOjpyb3VuZChtaW5pbXVtTGF5b3V0U2l6ZS53aWR0aCgpICogbGF5b3V0SGVpZ2h0
KCkgLyBtaW5pbXVtTGF5b3V0U2l6ZS5oZWlnaHQoKSk7CisgICAgcmV0dXJuIG1pbmltdW1MYXlv
dXRTaXplLndpZHRoKCk7CiB9CiAKIGludCBWaWV3cG9ydENvbmZpZ3VyYXRpb246OmxheW91dEhl
aWdodCgpIGNvbnN0CiB7CiAgICAgQVNTRVJUKCFjb25zdHJhaW50c0FyZUFsbFJlbGF0aXZlKG1f
Y29uZmlndXJhdGlvbikpOwogCisgICAgY29uc3QgRmxvYXRTaXplJiBtaW5pbXVtTGF5b3V0U2l6
ZSA9IGFjdGl2ZU1pbmltdW1MYXlvdXRTaXplSW5TY3JvbGxWaWV3Q29vcmRpbmF0ZXMoKTsKICAg
ICBpZiAobV9jb25maWd1cmF0aW9uLmhlaWdodElzU2V0KSB7CiAgICAgICAgIC8vIElmIHdlIHNj
YWxlIHRvIGZpdCwgdGhlbiBhY2NlcHQgdGhlIHZpZXdwb3J0IGhlaWdodCB3aXRoIHNhbml0eSBj
aGVja2luZy4KICAgICAgICAgaWYgKCFtX2NvbmZpZ3VyYXRpb24uaW5pdGlhbFNjYWxlSXNTZXQp
IHsKICAgICAgICAgICAgIGRvdWJsZSBtYXhpbXVtU2NhbGUgPSB0aGlzLT5tYXhpbXVtU2NhbGUo
KTsKICAgICAgICAgICAgIGRvdWJsZSBtYXhpbXVtQ29udGVudEhlaWdodEluVmlld3BvcnRDb29y
ZGluYXRlID0gbWF4aW11bVNjYWxlICogbV9jb25maWd1cmF0aW9uLmhlaWdodDsKLSAgICAgICAg
ICAgIGlmIChtYXhpbXVtQ29udGVudEhlaWdodEluVmlld3BvcnRDb29yZGluYXRlIDwgbV9taW5p
bXVtTGF5b3V0U2l6ZS5oZWlnaHQoKSkgeworICAgICAgICAgICAgaWYgKG1heGltdW1Db250ZW50
SGVpZ2h0SW5WaWV3cG9ydENvb3JkaW5hdGUgPCBtaW5pbXVtTGF5b3V0U2l6ZS5oZWlnaHQoKSkg
ewogICAgICAgICAgICAgICAgIC8vIFRoZSBjb250ZW50IHpvb21lZCB0byBtYXhTY2FsZSBkb2Vz
IG5vdCBmaXQgdGhlIHRoZSB2aWV3LiBSZXR1cm4gdGhlIG1pbmltdW0gaGVpZ2h0IHRoYXQKICAg
ICAgICAgICAgICAgICAvLyBzYXRpc2Z5IHRoZSBjb25zdHJhaW50IG1heGltdW1TY2FsZS4KLSAg
ICAgICAgICAgICAgICByZXR1cm4gc3RkOjpyb3VuZChtX21pbmltdW1MYXlvdXRTaXplLmhlaWdo
dCgpIC8gbWF4aW11bVNjYWxlKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gc3RkOjpyb3VuZCht
aW5pbXVtTGF5b3V0U2l6ZS5oZWlnaHQoKSAvIG1heGltdW1TY2FsZSk7CiAgICAgICAgICAgICB9
CiAgICAgICAgICAgICByZXR1cm4gc3RkOjpyb3VuZChtX2NvbmZpZ3VyYXRpb24uaGVpZ2h0KTsK
ICAgICAgICAgfQogCiAgICAgICAgIC8vIElmIG5vdCwgbWFrZSBzdXJlIHRoZSB2aWV3cG9ydCB3
aWR0aCBhbmQgaW5pdGlhbCBzY2FsZSBjYW4gY28tZXhpc3QuCiAgICAgICAgIGRvdWJsZSBpbml0
aWFsQ29udGVudEhlaWdodEluVmlld3BvcnRDb29yZGluYXRlID0gbV9jb25maWd1cmF0aW9uLmhl
aWdodCAqIG1fY29uZmlndXJhdGlvbi5pbml0aWFsU2NhbGU7Ci0gICAgICAgIGlmIChpbml0aWFs
Q29udGVudEhlaWdodEluVmlld3BvcnRDb29yZGluYXRlIDwgbV9taW5pbXVtTGF5b3V0U2l6ZS5o
ZWlnaHQoKSkgeworICAgICAgICBpZiAoaW5pdGlhbENvbnRlbnRIZWlnaHRJblZpZXdwb3J0Q29v
cmRpbmF0ZSA8IG1pbmltdW1MYXlvdXRTaXplLmhlaWdodCgpKSB7CiAgICAgICAgICAgICAvLyBU
aGUgc3BlY2lmaWVkIHdpZHRoIGRvZXMgbm90IGZpdCBpbiB2aWV3cG9ydC4gUmV0dXJuIHRoZSBt
aW5pbXVtIGhlaWdodCB0aGF0IHNhdGlzZnkgdGhlIGluaXRpYWxTY2FsZSBjb25zdHJhaW50Lgot
ICAgICAgICAgICAgcmV0dXJuIHN0ZDo6cm91bmQobV9taW5pbXVtTGF5b3V0U2l6ZS5oZWlnaHQo
KSAvIG1fY29uZmlndXJhdGlvbi5pbml0aWFsU2NhbGUpOworICAgICAgICAgICAgcmV0dXJuIHN0
ZDo6cm91bmQobWluaW11bUxheW91dFNpemUuaGVpZ2h0KCkgLyBtX2NvbmZpZ3VyYXRpb24uaW5p
dGlhbFNjYWxlKTsKICAgICAgICAgfQogICAgICAgICByZXR1cm4gc3RkOjpyb3VuZChtX2NvbmZp
Z3VyYXRpb24uaGVpZ2h0KTsKICAgICB9CiAKICAgICAvLyBJZiB0aGUgcGFnZSBoYXMgYSByZWFs
IHNjYWxlLCB0aGVuIGp1c3QgcmV0dXJuIHRoZSBtaW5pbXVtIHNpemUgb3ZlciB0aGUgaW5pdGlh
bCBzY2FsZS4KICAgICBpZiAobV9jb25maWd1cmF0aW9uLmluaXRpYWxTY2FsZUlzU2V0ICYmICFt
X2NvbmZpZ3VyYXRpb24ud2lkdGhJc1NldCkKLSAgICAgICAgcmV0dXJuIHN0ZDo6cm91bmQobV9t
aW5pbXVtTGF5b3V0U2l6ZS5oZWlnaHQoKSAvIG1fY29uZmlndXJhdGlvbi5pbml0aWFsU2NhbGUp
OworICAgICAgICByZXR1cm4gc3RkOjpyb3VuZChtaW5pbXVtTGF5b3V0U2l6ZS5oZWlnaHQoKSAv
IG1fY29uZmlndXJhdGlvbi5pbml0aWFsU2NhbGUpOwogCi0gICAgaWYgKG1fbWluaW11bUxheW91
dFNpemUud2lkdGgoKSA+IDApCi0gICAgICAgIHJldHVybiBzdGQ6OnJvdW5kKG1fbWluaW11bUxh
eW91dFNpemUuaGVpZ2h0KCkgKiBsYXlvdXRXaWR0aCgpIC8gbV9taW5pbXVtTGF5b3V0U2l6ZS53
aWR0aCgpKTsKLSAgICByZXR1cm4gbV9taW5pbXVtTGF5b3V0U2l6ZS5oZWlnaHQoKTsKKyAgICBp
ZiAobWluaW11bUxheW91dFNpemUud2lkdGgoKSA+IDApCisgICAgICAgIHJldHVybiBzdGQ6OnJv
dW5kKG1pbmltdW1MYXlvdXRTaXplLmhlaWdodCgpICogbGF5b3V0V2lkdGgoKSAvIG1pbmltdW1M
YXlvdXRTaXplLndpZHRoKCkpOworICAgIHJldHVybiBtaW5pbXVtTGF5b3V0U2l6ZS5oZWlnaHQo
KTsKIH0KIAogI2lmbmRlZiBOREVCVUcKQEAgLTQzNSw2ICs0NzMsOCBAQCBDU3RyaW5nIFZpZXdw
b3J0Q29uZmlndXJhdGlvbjo6ZGVzY3JpcHRpb24oKSBjb25zdAogCiAgICAgZHVtcFByb3BlcnR5
KHRzLCAiY29udGVudFNpemUiLCBtX2NvbnRlbnRTaXplKTsKICAgICBkdW1wUHJvcGVydHkodHMs
ICJtaW5pbXVtTGF5b3V0U2l6ZSIsIG1fbWluaW11bUxheW91dFNpemUpOworICAgIGR1bXBQcm9w
ZXJ0eSh0cywgIm1pbmltdW1MYXlvdXRTaXplRm9yTWluaW1hbFVJIiwgbV9taW5pbXVtTGF5b3V0
U2l6ZUZvck1pbmltYWxVSSk7CisgICAgdHMgPDwgIih1c2VzIG1pbmltYWwgVUkgIiA8PCBtX3Vz
ZXNNaW5pbWFsVUkgPDwgIikiOwogCiAgICAgdHMgPDwgIlxuIjsKICAgICB0cy5pbmNyZWFzZUlu
ZGVudCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9WaWV3cG9ydENvbmZpZ3Vy
YXRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvVmlld3BvcnRDb25maWd1cmF0aW9uLmgKaW5k
ZXggZWFhNWJmNDQ4ZTA2MWY3Y2QwY2E3ZDdjYTkxY2U3MmRmNTY0OWU2Ny4uZTY4ZGEyOTkwNDU5
YjA0ZGI0MDliZDZhZDJhNDVmY2JjMmVmNThkMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGFnZS9WaWV3cG9ydENvbmZpZ3VyYXRpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1Zp
ZXdwb3J0Q29uZmlndXJhdGlvbi5oCkBAIC03NCwxNCArNzQsMjMgQEAgcHVibGljOgogICAgIGNv
bnN0IEZsb2F0U2l6ZSYgbWluaW11bUxheW91dFNpemUoKSBjb25zdCB7IHJldHVybiBtX21pbmlt
dW1MYXlvdXRTaXplOyB9CiAgICAgdm9pZCBzZXRNaW5pbXVtTGF5b3V0U2l6ZShjb25zdCBGbG9h
dFNpemUmKTsKIAorICAgIGNvbnN0IEZsb2F0U2l6ZSYgbWluaW11bUxheW91dFNpemVGb3JNaW5p
bWFsVUkoKSBjb25zdCB7IHJldHVybiBtX21pbmltdW1MYXlvdXRTaXplRm9yTWluaW1hbFVJLmlz
RW1wdHkoKSA/IG1fbWluaW11bUxheW91dFNpemUgOiBtX21pbmltdW1MYXlvdXRTaXplRm9yTWlu
aW1hbFVJOyB9CisgICAgdm9pZCBzZXRNaW5pbXVtTGF5b3V0U2l6ZUZvck1pbmltYWxVSShjb25z
dCBGbG9hdFNpemUmKTsKKworICAgIGNvbnN0IEZsb2F0U2l6ZSYgYWN0aXZlTWluaW11bUxheW91
dFNpemVJblNjcm9sbFZpZXdDb29yZGluYXRlcygpIGNvbnN0OworCiAgICAgY29uc3QgVmlld3Bv
cnRBcmd1bWVudHMmIHZpZXdwb3J0QXJndW1lbnRzKCkgY29uc3QgeyByZXR1cm4gbV92aWV3cG9y
dEFyZ3VtZW50czsgfQogICAgIHZvaWQgc2V0Vmlld3BvcnRBcmd1bWVudHMoY29uc3QgVmlld3Bv
cnRBcmd1bWVudHMmKTsKIAorICAgIHZvaWQgcmVzZXRNaW5pbWFsVUkoKTsKKyAgICB2b2lkIHBh
Z2VXaWxsUmVuZGVyRmlyc3RGcmFtZSgpOworCiAgICAgSW50U2l6ZSBsYXlvdXRTaXplKCkgY29u
c3Q7CiAgICAgZG91YmxlIGluaXRpYWxTY2FsZSgpIGNvbnN0OwogICAgIGRvdWJsZSBtaW5pbXVt
U2NhbGUoKSBjb25zdDsKICAgICBkb3VibGUgbWF4aW11bVNjYWxlKCkgY29uc3QgeyByZXR1cm4g
bV9jb25maWd1cmF0aW9uLm1heGltdW1TY2FsZTsgfQogICAgIGJvb2wgYWxsb3dzVXNlclNjYWxp
bmcoKSBjb25zdCB7IHJldHVybiBtX2NvbmZpZ3VyYXRpb24uYWxsb3dzVXNlclNjYWxpbmc7IH0K
KyAgICBib29sIHVzZXNNaW5pbWFsVUkoKSBjb25zdCB7IHJldHVybiBtX3VzZXNNaW5pbWFsVUk7
IH0KIAogICAgIHN0YXRpYyBQYXJhbWV0ZXJzIHdlYnBhZ2VQYXJhbWV0ZXJzKCk7CiAgICAgc3Rh
dGljIFBhcmFtZXRlcnMgdGV4dERvY3VtZW50UGFyYW1ldGVycygpOwpAQCAtMTAyLDcgKzExMSwx
MSBAQCBwcml2YXRlOgogICAgIFBhcmFtZXRlcnMgbV9kZWZhdWx0Q29uZmlndXJhdGlvbjsKICAg
ICBJbnRTaXplIG1fY29udGVudFNpemU7CiAgICAgRmxvYXRTaXplIG1fbWluaW11bUxheW91dFNp
emU7CisgICAgRmxvYXRTaXplIG1fbWluaW11bUxheW91dFNpemVGb3JNaW5pbWFsVUk7CiAgICAg
Vmlld3BvcnRBcmd1bWVudHMgbV92aWV3cG9ydEFyZ3VtZW50czsKKworICAgIGJvb2wgbV91c2Vz
TWluaW1hbFVJOworICAgIGJvb2wgbV9maXJzdEZyYW1lQ29tbWl0ZWQ7CiB9OwogCiB9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyVmlldy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVmlldy5jcHAKaW5k
ZXggZWRjYTFhYTRmZjUxYjExNzU1Y2JlNjgxYmQzNjA5ODFkNmZmOGM1Yi4uZTU0NDNkZmQ0NGI2
YmVhMDdkOTdhMGRjYjNkN2JjZDY4NzQ2YTdjNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlclZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJWaWV3LmNwcApAQCAtMTIwNyw5ICsxMjA3LDkgQEAgYm9vbCBSZW5kZXJWaWV3OjpzaG91
bGREaXNhYmxlTGF5b3V0U3RhdGVGb3JTdWJ0cmVlKFJlbmRlck9iamVjdCogcmVuZGVyZXIpIGNv
bnMKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLUludFNpemUgUmVuZGVyVmlldzo6dmlld3BvcnRT
aXplKCkgY29uc3QKK0ludFNpemUgUmVuZGVyVmlldzo6dmlld3BvcnRTaXplRm9yQ1NTVmlld3Bv
cnRVbml0cygpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIGZyYW1lVmlldygpLnZpZXdwb3J0U2l6ZSgp
OworICAgIHJldHVybiBmcmFtZVZpZXcoKS52aWV3cG9ydFNpemVGb3JDU1NWaWV3cG9ydFVuaXRz
KCk7CiB9CiAKIHZvaWQgUmVuZGVyVmlldzo6dXBkYXRlSGl0VGVzdFJlc3VsdChIaXRUZXN0UmVz
dWx0JiByZXN1bHQsIGNvbnN0IExheW91dFBvaW50JiBwb2ludCkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWaWV3LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyVmlldy5oCmluZGV4IGNhZGY3YmQ1ZTQwOGI2Zjk1NGY3Yzc2YTAzMTM2Njg0MGVh
NGYxNDkuLjEyNWExOWI4MTc2YjMyMjJiYWJjZjY4OThiOWU1ODI0MDc5MjgyNjMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWaWV3LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlclZpZXcuaApAQCAtMjA1LDcgKzIwNSw3IEBAIHB1YmxpYzoK
IAogICAgIEludGVydmFsQXJlbmEqIGludGVydmFsQXJlbmEoKTsKIAotICAgIEludFNpemUgdmll
d3BvcnRTaXplKCkgY29uc3Q7CisgICAgSW50U2l6ZSB2aWV3cG9ydFNpemVGb3JDU1NWaWV3cG9y
dFVuaXRzKCkgY29uc3Q7CiAKICAgICB2b2lkIHNldFJlbmRlclF1b3RlSGVhZChSZW5kZXJRdW90
ZSogaGVhZCkgeyBtX3JlbmRlclF1b3RlSGVhZCA9IGhlYWQ7IH0KICAgICBSZW5kZXJRdW90ZSog
cmVuZGVyUXVvdGVIZWFkKCkgY29uc3QgeyByZXR1cm4gbV9yZW5kZXJRdW90ZUhlYWQ7IH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tVSURlbGVnYXRl
UHJpdmF0ZS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1VJRGVsZWdh
dGVQcml2YXRlLmgKaW5kZXggMzlhOGY4NmRjNjFlMTk0ODIwYmRiYTQwMzgyNDZkMGEyNjI2OTlj
ZC4uZjNhY2YxNWU3ZTZjNTFiMDdmNTYzZDQzZWExODZiYmMwNjNiNTVjNiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1VJRGVsZWdhdGVQcml2YXRlLmgK
KysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1VJRGVsZWdhdGVQcml2
YXRlLmgKQEAgLTM2LDYgKzM2LDcgQEAKICNpZiBUQVJHRVRfT1NfSVBIT05FCiAtIChOU0FycmF5
ICopX3dlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgYWN0aW9uc0ZvckVsZW1lbnQ6KF9XS0Fj
dGl2YXRlZEVsZW1lbnRJbmZvICopZWxlbWVudCBkZWZhdWx0QWN0aW9uczooTlNBcnJheSAqKWRl
ZmF1bHRBY3Rpb25zOwogLSAodm9pZClfd2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldyBkaWRO
b3RIYW5kbGVUYXBBc0NsaWNrQXRQb2ludDooQ0dQb2ludClwb2ludDsKKy0gKHZvaWQpX3dlYlZp
ZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgdXNlc01pbmltYWxVSTooQk9PTCl3YW50TWluaW1hbFVJ
OwogI2VuZGlmCiAKIEBlbmQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvQ29jb2EvV0tXZWJWaWV3Lm1tIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2Nv
YS9XS1dlYlZpZXcubW0KaW5kZXggOGMzMDIyZjU3YzIyMGVmYWJkMmVhZmUzODA2YTEzNWQyYWE2
YWE1ZS4uNmRkNWFlMGY5NjRiNDNhNzYwZWMyYmExZDMyMjdjOWVhMjU2ZjUyNyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0KKysrIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0KQEAgLTQ4LDYg
KzQ4LDcgQEAKICNpbXBvcnQgIldLUHJlZmVyZW5jZXNJbnRlcm5hbC5oIgogI2ltcG9ydCAiV0tQ
cm9jZXNzUG9vbEludGVybmFsLmgiCiAjaW1wb3J0ICJXS1VJRGVsZWdhdGUuaCIKKyNpbXBvcnQg
IldLVUlEZWxlZ2F0ZVByaXZhdGUuaCIKICNpbXBvcnQgIldLVXNlckNvbnRlbnRDb250cm9sbGVy
SW50ZXJuYWwuaCIKICNpbXBvcnQgIldLV2ViVmlld0NvbmZpZ3VyYXRpb25JbnRlcm5hbC5oIgog
I2ltcG9ydCAiV0tXZWJWaWV3Q29udGVudFByb3ZpZGVyLmgiCkBAIC0xMzAsOSArMTMxLDEzIEBA
IFdLV2ViVmlldyogZnJvbVdlYlBhZ2VQcm94eShXZWJLaXQ6OldlYlBhZ2VQcm94eSYgcGFnZSkK
ICAgICBSZXRhaW5QdHI8V0tTY3JvbGxWaWV3PiBfc2Nyb2xsVmlldzsKICAgICBSZXRhaW5QdHI8
V0tDb250ZW50Vmlldz4gX2NvbnRlbnRWaWV3OwogCi0gICAgQk9PTCBfaGFzU3RhdGljTWluaW11
bUxheW91dFNpemU7CisgICAgQk9PTCBfb3ZlcnJpZGVzTWluaW11bUxheW91dFNpemU7CiAgICAg
Q0dTaXplIF9taW5pbXVtTGF5b3V0U2l6ZU92ZXJyaWRlOworICAgIEJPT0wgX292ZXJyaWRlc01p
bmltdW1MYXlvdXRTaXplRm9yTWluaW1hbFVJOwogICAgIENHU2l6ZSBfbWluaW11bUxheW91dFNp
emVPdmVycmlkZUZvck1pbmltYWxVSTsKKyAgICBCT09MIF9vdmVycmlkZXNMYXJnZXN0VW5vYnNj
dXJlZFNpemU7CisgICAgQ0dTaXplIF9sYXJnZXN0VW5vYnNjdXJlZFNpemVPdmVycmlkZTsKKyAg
ICBCT09MIF91c2VzTWluaW1hbFVJOwogICAgIENHUmVjdCBfaW5wdXRWaWV3Qm91bmRzOwogICAg
IENHRmxvYXQgX3ZpZXdwb3J0TWV0YVRhZ1dpZHRoOwogCkBAIC01MDksNiArNTE0LDE2IEBAIHN0
YXRpYyBDR0Zsb2F0IGNvbnRlbnRab29tU2NhbGUoV0tXZWJWaWV3KiB3ZWJWaWV3KQogICAgIFtf
c2Nyb2xsVmlldyBzZXRCYWNrZ3JvdW5kQ29sb3I6dWlCYWNrZ3JvdW5kQ29sb3IuZ2V0KCldOwog
fQogCistICh2b2lkKV9zZXRVc2VzTWluaW1hbFVJOihCT09MKXVzZXNNaW5pbWFsVUkKK3sKKyAg
ICBfdXNlc01pbmltYWxVSSA9IHVzZXNNaW5pbWFsVUk7Cit9CisKKy0gKEJPT0wpX3VzZXNNaW5p
bWFsVUkKK3sKKyAgICByZXR1cm4gX3VzZXNNaW5pbWFsVUk7Cit9CisKIC0gKHZvaWQpX2RpZENv
bW1pdExvYWRGb3JNYWluRnJhbWUKIHsKICAgICBfbmVlZHNSZXNldFZpZXdTdGF0ZUFmdGVyQ29t
bWl0TG9hZEZvck1haW5GcmFtZSA9IFlFUzsKQEAgLTUzOCw2ICs1NTMsMTEgQEAgc3RhdGljIENH
RmxvYXQgY29udGVudFpvb21TY2FsZShXS1dlYlZpZXcqIHdlYlZpZXcpCiAKICAgICBpZiAoX25l
ZWRzUmVzZXRWaWV3U3RhdGVBZnRlckNvbW1pdExvYWRGb3JNYWluRnJhbWUpIHsKICAgICAgICAg
X25lZWRzUmVzZXRWaWV3U3RhdGVBZnRlckNvbW1pdExvYWRGb3JNYWluRnJhbWUgPSBOTzsKKwor
ICAgICAgICBhdXRvIGRlbGVnYXRlID0gX3VpRGVsZWdhdGUtPmRlbGVnYXRlKCk7CisgICAgICAg
IGlmIChbZGVsZWdhdGUgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3Rvcihfd2ViVmlldzp1c2Vz
TWluaW1hbFVJOildKQorICAgICAgICAgICAgW3N0YXRpY19jYXN0PGlkIDxXS1VJRGVsZWdhdGVQ
cml2YXRlPj4oZGVsZWdhdGUuZ2V0KCkpIF93ZWJWaWV3OnNlbGYgdXNlc01pbmltYWxVSTpfdXNl
c01pbmltYWxVSV07CisKICAgICAgICAgW19zY3JvbGxWaWV3IHNldENvbnRlbnRPZmZzZXQ6Q0dQ
b2ludE1ha2UoLV9vYnNjdXJlZEluc2V0cy5sZWZ0LCAtX29ic2N1cmVkSW5zZXRzLnRvcCldOwog
ICAgIH0KIH0KQEAgLTkwOCwxNyArOTI4LDE4IEBAIHN0YXRpYyBXZWJDb3JlOjpGbG9hdFBvaW50
IGNvbnN0cmFpbkNvbnRlbnRPZmZzZXQoV2ViQ29yZTo6RmxvYXRQb2ludCBjb250ZW50T2ZmCiAg
ICAgW19jb250ZW50VmlldyBkaWRab29tVG9TY2FsZTpzY2FsZV07CiB9CiAKLXN0YXRpYyBpbmxp
bmUgdm9pZCBzZXRWaWV3cG9ydENvbmZpZ3VyYXRpb25NaW5pbXVtTGF5b3V0U2l6ZShXZWJLaXQ6
OldlYlBhZ2VQcm94eSYgcGFnZSwgY29uc3QgQ0dTaXplJiBzaXplKQotewotICAgIHBhZ2Uuc2V0
Vmlld3BvcnRDb25maWd1cmF0aW9uTWluaW11bUxheW91dFNpemUoV2ViQ29yZTo6RmxvYXRTaXpl
KHNpemUpKTsKLX0KLQogLSAodm9pZClfZnJhbWVPckJvdW5kc0NoYW5nZWQKIHsKICAgICBDR1Jl
Y3QgYm91bmRzID0gc2VsZi5ib3VuZHM7CisgICAgaWYgKCFfaXNBbmltYXRpbmdSZXNpemUpIHsK
KyAgICAgICAgaWYgKCFfb3ZlcnJpZGVzTWluaW11bUxheW91dFNpemUpCisgICAgICAgICAgICBf
cGFnZS0+c2V0Vmlld3BvcnRDb25maWd1cmF0aW9uTWluaW11bUxheW91dFNpemUoV2ViQ29yZTo6
RmxvYXRTaXplKGJvdW5kcy5zaXplKSk7CisgICAgICAgIGlmICghX292ZXJyaWRlc01pbmltdW1M
YXlvdXRTaXplRm9yTWluaW1hbFVJKQorICAgICAgICAgICAgX3BhZ2UtPnNldFZpZXdwb3J0Q29u
ZmlndXJhdGlvbk1pbmltdW1MYXlvdXRTaXplRm9yTWluaW1hbFVJKFdlYkNvcmU6OkZsb2F0U2l6
ZShib3VuZHMuc2l6ZSkpOworICAgICAgICBpZiAoIV9vdmVycmlkZXNMYXJnZXN0VW5vYnNjdXJl
ZFNpemUpCisgICAgICAgICAgICBfcGFnZS0+c2V0TGFyZ2VzdFVub2JzY3VyZWRTaXplKFdlYkNv
cmU6OkZsb2F0U2l6ZShib3VuZHMuc2l6ZSkpOworICAgIH0KIAotICAgIGlmICghX2hhc1N0YXRp
Y01pbmltdW1MYXlvdXRTaXplICYmICFfaXNBbmltYXRpbmdSZXNpemUpCi0gICAgICAgIHNldFZp
ZXdwb3J0Q29uZmlndXJhdGlvbk1pbmltdW1MYXlvdXRTaXplKCpfcGFnZSwgYm91bmRzLnNpemUp
OwogICAgIFtfc2Nyb2xsVmlldyBzZXRGcmFtZTpib3VuZHNdOwogICAgIFtfY29udGVudFZpZXcg
c2V0TWluaW11bVNpemU6Ym91bmRzLnNpemVdOwogICAgIFtfY3VzdG9tQ29udGVudFZpZXcgd2Vi
X3NldE1pbmltdW1TaXplOmJvdW5kcy5zaXplXTsKQEAgLTE0NzYsMjggKzE0OTcsMzAgQEAgc3Rh
dGljIGlubGluZSBXZWJLaXQ6OkZpbmRPcHRpb25zIHRvRmluZE9wdGlvbnMoX1dLRmluZE9wdGlv
bnMgd2tGaW5kT3B0aW9ucykKIAogLSAoQ0dTaXplKV9taW5pbXVtTGF5b3V0U2l6ZU92ZXJyaWRl
CiB7Ci0gICAgQVNTRVJUKF9oYXNTdGF0aWNNaW5pbXVtTGF5b3V0U2l6ZSk7CisgICAgQVNTRVJU
KF9vdmVycmlkZXNNaW5pbXVtTGF5b3V0U2l6ZSk7CiAgICAgcmV0dXJuIF9taW5pbXVtTGF5b3V0
U2l6ZU92ZXJyaWRlOwogfQogCiAtICh2b2lkKV9zZXRNaW5pbXVtTGF5b3V0U2l6ZU92ZXJyaWRl
OihDR1NpemUpbWluaW11bUxheW91dFNpemVPdmVycmlkZQogewotICAgIF9oYXNTdGF0aWNNaW5p
bXVtTGF5b3V0U2l6ZSA9IFlFUzsKKyAgICBfb3ZlcnJpZGVzTWluaW11bUxheW91dFNpemUgPSBZ
RVM7CiAgICAgX21pbmltdW1MYXlvdXRTaXplT3ZlcnJpZGUgPSBtaW5pbXVtTGF5b3V0U2l6ZU92
ZXJyaWRlOwogICAgIGlmICghX2lzQW5pbWF0aW5nUmVzaXplKQotICAgICAgICBzZXRWaWV3cG9y
dENvbmZpZ3VyYXRpb25NaW5pbXVtTGF5b3V0U2l6ZSgqX3BhZ2UsIG1pbmltdW1MYXlvdXRTaXpl
T3ZlcnJpZGUpOworICAgICAgICBfcGFnZS0+c2V0Vmlld3BvcnRDb25maWd1cmF0aW9uTWluaW11
bUxheW91dFNpemUoV2ViQ29yZTo6RmxvYXRTaXplKG1pbmltdW1MYXlvdXRTaXplT3ZlcnJpZGUp
KTsKIH0KIAogLSAoQ0dTaXplKV9taW5pbXVtTGF5b3V0U2l6ZU92ZXJyaWRlRm9yTWluaW1hbFVJ
CiB7CisgICAgQVNTRVJUKF9vdmVycmlkZXNNaW5pbXVtTGF5b3V0U2l6ZUZvck1pbmltYWxVSSk7
CiAgICAgcmV0dXJuIF9taW5pbXVtTGF5b3V0U2l6ZU92ZXJyaWRlRm9yTWluaW1hbFVJOwogfQog
CiAtICh2b2lkKV9zZXRNaW5pbXVtTGF5b3V0U2l6ZU92ZXJyaWRlRm9yTWluaW1hbFVJOihDR1Np
emUpc2l6ZQogeworICAgIF9vdmVycmlkZXNNaW5pbXVtTGF5b3V0U2l6ZUZvck1pbmltYWxVSSA9
IFlFUzsKICAgICBfbWluaW11bUxheW91dFNpemVPdmVycmlkZUZvck1pbmltYWxVSSA9IHNpemU7
CiAgICAgaWYgKCFfaXNBbmltYXRpbmdSZXNpemUpCi0gICAgICAgIF9wYWdlLT5zZXRNaW5pbXVt
TGF5b3V0U2l6ZUZvck1pbmltYWxVSShXZWJDb3JlOjpGbG9hdFNpemUoc2l6ZSkpOworICAgICAg
ICBfcGFnZS0+c2V0Vmlld3BvcnRDb25maWd1cmF0aW9uTWluaW11bUxheW91dFNpemVGb3JNaW5p
bWFsVUkoV2ViQ29yZTo6RmxvYXRTaXplKHNpemUpKTsKIH0KIAogLSAoVUlFZGdlSW5zZXRzKV9v
YnNjdXJlZEluc2V0cwpAQCAtMTUyMCw2ICsxNTQzLDI0IEBAIHN0YXRpYyBpbmxpbmUgV2ViS2l0
OjpGaW5kT3B0aW9ucyB0b0ZpbmRPcHRpb25zKF9XS0ZpbmRPcHRpb25zIHdrRmluZE9wdGlvbnMp
CiAgICAgW3NlbGYgX3VwZGF0ZVZpc2libGVDb250ZW50UmVjdHNdOwogfQogCistIChDR1NpemUp
X2xhcmdlc3RVbm9ic2N1cmVkU2l6ZU92ZXJyaWRlCit7CisgICAgQVNTRVJUKF9vdmVycmlkZXNM
YXJnZXN0VW5vYnNjdXJlZFNpemUpOworICAgIHJldHVybiBfbGFyZ2VzdFVub2JzY3VyZWRTaXpl
T3ZlcnJpZGU7Cit9CisKKy0gKHZvaWQpX3NldExhcmdlc3RVbm9ic2N1cmVkU2l6ZU92ZXJyaWRl
OihDR1NpemUpc2l6ZQoreworICAgIEFTU0VSVChzaXplLndpZHRoIDw9IHNlbGYuYm91bmRzLnNp
emUud2lkdGggJiYgc2l6ZS5oZWlnaHQgPD0gc2VsZi5ib3VuZHMuc2l6ZS5oZWlnaHQpOworICAg
IF9vdmVycmlkZXNMYXJnZXN0VW5vYnNjdXJlZFNpemUgPSBZRVM7CisgICAgaWYgKENHU2l6ZUVx
dWFsVG9TaXplKF9sYXJnZXN0VW5vYnNjdXJlZFNpemVPdmVycmlkZSwgc2l6ZSkpCisgICAgICAg
IHJldHVybjsKKworICAgIF9sYXJnZXN0VW5vYnNjdXJlZFNpemVPdmVycmlkZSA9IHNpemU7Cisg
ICAgaWYgKCFfaXNBbmltYXRpbmdSZXNpemUpCisgICAgICAgIF9wYWdlLT5zZXRMYXJnZXN0VW5v
YnNjdXJlZFNpemUoV2ViQ29yZTo6RmxvYXRTaXplKHNpemUpKTsKK30KKwogLSAodm9pZClfc2V0
QmFja2dyb3VuZEV4dGVuZHNCZXlvbmRQYWdlOihCT09MKWJhY2tncm91bmRFeHRlbmRzCiB7CiAg
ICAgX3BhZ2UtPnNldEJhY2tncm91bmRFeHRlbmRzQmV5b25kUGFnZShiYWNrZ3JvdW5kRXh0ZW5k
cyk7CkBAIC0xNTUyLDEzICsxNTkzLDcgQEAgc3RhdGljIGlubGluZSBXZWJLaXQ6OkZpbmRPcHRp
b25zIHRvRmluZE9wdGlvbnMoX1dLRmluZE9wdGlvbnMgd2tGaW5kT3B0aW9ucykKICAgICBfcmVz
aXplQW5pbWF0aW9uVmlldyA9IGFkb3B0TlMoW1tVSVZpZXcgYWxsb2NdIGluaXRdKTsKICAgICBb
X3Njcm9sbFZpZXcgaW5zZXJ0U3VidmlldzpfcmVzaXplQW5pbWF0aW9uVmlldy5nZXQoKSBhdElu
ZGV4OmluZGV4T2ZDb250ZW50Vmlld107CiAgICAgW19yZXNpemVBbmltYXRpb25WaWV3IGFkZFN1
YnZpZXc6X2NvbnRlbnRWaWV3LmdldCgpXTsKLQotICAgIENHUmVjdCBvbGRCb3VuZHMgPSBzZWxm
LmJvdW5kczsKLSAgICBDR1NpemUgb2xkTWluaW11bUxheW91dFNpemUgPSBvbGRCb3VuZHMuc2l6
ZTsKLSAgICBpZiAoX2hhc1N0YXRpY01pbmltdW1MYXlvdXRTaXplKQotICAgICAgICBvbGRNaW5p
bXVtTGF5b3V0U2l6ZSA9IF9taW5pbXVtTGF5b3V0U2l6ZU92ZXJyaWRlOwogICAgIFdlYkNvcmU6
OkZsb2F0UmVjdCBvbGRVbm9ic2N1cmVkQ29udGVudFJlY3QgPSBfcGFnZS0+dW5vYnNjdXJlZENv
bnRlbnRSZWN0KCk7Ci0gICAgVUlFZGdlSW5zZXRzIG9sZEluc2V0cyA9IF9vYnNjdXJlZEluc2V0
czsKIAogICAgIHVwZGF0ZUJsb2NrKCk7CiAKQEAgLTE1NjcsMTMgKzE2MDIsNiBAQCBzdGF0aWMg
aW5saW5lIFdlYktpdDo6RmluZE9wdGlvbnMgdG9GaW5kT3B0aW9ucyhfV0tGaW5kT3B0aW9ucyB3
a0ZpbmRPcHRpb25zKQogCiAgICAgQ0dSZWN0IG5ld0JvdW5kcyA9IHNlbGYuYm91bmRzOwogICAg
IENHU2l6ZSBuZXdNaW5pbXVtTGF5b3V0U2l6ZSA9IG5ld0JvdW5kcy5zaXplOwotICAgIGlmIChf
aGFzU3RhdGljTWluaW11bUxheW91dFNpemUpCi0gICAgICAgIG5ld01pbmltdW1MYXlvdXRTaXpl
ID0gX21pbmltdW1MYXlvdXRTaXplT3ZlcnJpZGU7Ci0KLSAgICBpZiAoQ0dTaXplRXF1YWxUb1Np
emUobmV3TWluaW11bUxheW91dFNpemUsIG9sZE1pbmltdW1MYXlvdXRTaXplKQotICAgICAgICAm
JiBDR1JlY3RFcXVhbFRvUmVjdChuZXdCb3VuZHMsIG9sZEJvdW5kcykKLSAgICAgICAgJiYgVUlF
ZGdlSW5zZXRzRXF1YWxUb0VkZ2VJbnNldHMob2xkSW5zZXRzLCBfb2JzY3VyZWRJbnNldHMpKQot
ICAgICAgICByZXR1cm47CiAKICAgICBDR1NpemUgY29udGVudFNpemVJbkNvbnRlbnRWaWV3Q29v
cmRpbmF0ZXMgPSBbX2NvbnRlbnRWaWV3IGJvdW5kc10uc2l6ZTsKICAgICBbX3Njcm9sbFZpZXcg
c2V0TWluaW11bVpvb21TY2FsZTpzdGQ6Om1pbihuZXdNaW5pbXVtTGF5b3V0U2l6ZS53aWR0aCAv
IGNvbnRlbnRTaXplSW5Db250ZW50Vmlld0Nvb3JkaW5hdGVzLndpZHRoLCBbX3Njcm9sbFZpZXcg
bWluaW11bVpvb21TY2FsZV0pXTsKQEAgLTE2MjAsNyArMTY0OCwxOSBAQCBzdGF0aWMgaW5saW5l
IFdlYktpdDo6RmluZE9wdGlvbnMgdG9GaW5kT3B0aW9ucyhfV0tGaW5kT3B0aW9ucyB3a0ZpbmRP
cHRpb25zKQogICAgIENHUmVjdCB2aXNpYmxlUmVjdEluQ29udGVudENvb3JkaW5hdGVzID0gW3Nl
bGYgY29udmVydFJlY3Q6bmV3Qm91bmRzIHRvVmlldzpfY29udGVudFZpZXcuZ2V0KCldOwogICAg
IENHUmVjdCB1bm9ic2N1cmVkUmVjdEluQ29udGVudENvb3JkaW5hdGVzID0gW3NlbGYgY29udmVy
dFJlY3Q6ZnV0dXJlVW5vYnNjdXJlZFJlY3RJblNlbGZDb29yZGluYXRlcyB0b1ZpZXc6X2NvbnRl
bnRWaWV3LmdldCgpXTsKIAotICAgIF9wYWdlLT5keW5hbWljVmlld3BvcnRTaXplVXBkYXRlKFdl
YkNvcmU6OkZsb2F0U2l6ZShuZXdNaW5pbXVtTGF5b3V0U2l6ZS53aWR0aCwgbmV3TWluaW11bUxh
eW91dFNpemUuaGVpZ2h0KSwgdmlzaWJsZVJlY3RJbkNvbnRlbnRDb29yZGluYXRlcywgdW5vYnNj
dXJlZFJlY3RJbkNvbnRlbnRDb29yZGluYXRlcywgZnV0dXJlVW5vYnNjdXJlZFJlY3RJblNlbGZD
b29yZGluYXRlcywgdGFyZ2V0U2NhbGUpOworICAgIENHU2l6ZSBtaW5pbXVtTGF5b3V0U2l6ZSA9
IG5ld0JvdW5kcy5zaXplOworICAgIGlmIChfb3ZlcnJpZGVzTWluaW11bUxheW91dFNpemUpCisg
ICAgICAgIG1pbmltdW1MYXlvdXRTaXplID0gX21pbmltdW1MYXlvdXRTaXplT3ZlcnJpZGU7CisK
KyAgICBDR1NpemUgbWluaW11bUxheW91dFNpemVGb3JNaW5pbWFsVUkgPSBtaW5pbXVtTGF5b3V0
U2l6ZTsKKyAgICBpZiAoX292ZXJyaWRlc01pbmltdW1MYXlvdXRTaXplRm9yTWluaW1hbFVJKQor
ICAgICAgICBtaW5pbXVtTGF5b3V0U2l6ZUZvck1pbmltYWxVSSA9IF9taW5pbXVtTGF5b3V0U2l6
ZU92ZXJyaWRlRm9yTWluaW1hbFVJOworCisgICAgQ0dTaXplIGxhcmdlc3RVbm9ic2N1cmVkU2l6
ZSA9IG5ld0JvdW5kcy5zaXplOworICAgIGlmIChfb3ZlcnJpZGVzTGFyZ2VzdFVub2JzY3VyZWRT
aXplKQorICAgICAgICBsYXJnZXN0VW5vYnNjdXJlZFNpemUgPSBfbGFyZ2VzdFVub2JzY3VyZWRT
aXplT3ZlcnJpZGU7CisKKyAgICBfcGFnZS0+ZHluYW1pY1ZpZXdwb3J0U2l6ZVVwZGF0ZShXZWJD
b3JlOjpGbG9hdFNpemUobWluaW11bUxheW91dFNpemUpLCBXZWJDb3JlOjpGbG9hdFNpemUobWlu
aW11bUxheW91dFNpemVGb3JNaW5pbWFsVUkpLCBXZWJDb3JlOjpGbG9hdFNpemUobGFyZ2VzdFVu
b2JzY3VyZWRTaXplKSwgdmlzaWJsZVJlY3RJbkNvbnRlbnRDb29yZGluYXRlcywgdW5vYnNjdXJl
ZFJlY3RJbkNvbnRlbnRDb29yZGluYXRlcywgZnV0dXJlVW5vYnNjdXJlZFJlY3RJblNlbGZDb29y
ZGluYXRlcywgdGFyZ2V0U2NhbGUpOwogfQogCiAtICh2b2lkKV9lbmRBbmltYXRlZFJlc2l6ZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdJ
bnRlcm5hbC5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdJ
bnRlcm5hbC5oCmluZGV4IGU1Y2U0MjdlZjM2ZTVlODQyZWY4N2QxZWRiMzc0MWRkNmMxMGRjYzIu
LmFiNmE0MDczMWM4ZWJjNzMwMzk2ZDY2OTEyZDJkMzdkNmM5ZmJkMTkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3SW50ZXJuYWwuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld0ludGVybmFsLmgK
QEAgLTU4LDYgKzU4LDkgQEAgc3RydWN0IFZpZXdTbmFwc2hvdDsKIH0KIAogI2lmIFBMQVRGT1JN
KElPUykKKworQHByb3BlcnR5IChub25hdG9taWMsIHNldHRlcj1fc2V0VXNlc01pbmltYWxVSTop
IEJPT0wgX3VzZXNNaW5pbWFsVUk7CisKIC0gKHZvaWQpX2RpZENvbW1pdExvYWRGb3JNYWluRnJh
bWU7CiAtICh2b2lkKV9kaWRDb21taXRMYXllclRyZWU6KGNvbnN0IFdlYktpdDo6UmVtb3RlTGF5
ZXJUcmVlVHJhbnNhY3Rpb24mKWxheWVyVHJlZVRyYW5zYWN0aW9uOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld1ByaXZhdGUuaCBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3UHJpdmF0ZS5oCmluZGV4
IGFmOTQ2ZmVlMDc1ZjMyYWVkYWE3NzY1ZTEyNGRkZTA5ODQ1MGE4NGQuLmE4NTJhNDdkNDg5MTE5
ZDM4MzBhMmJjYTEyZGU5MWI3MThkMjYzNjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3UHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3UHJpdmF0ZS5oCkBAIC05NSw4ICs5NSwxNCBA
QCB0eXBlZGVmIE5TX09QVElPTlMoTlNVSW50ZWdlciwgX1dLRmluZE9wdGlvbnMpIHsKIC0gKHZv
aWQpX2Nsb3NlOwogCiAjaWYgVEFSR0VUX09TX0lQSE9ORQorLy8gRGVmaW5lIHRoZSBzbWFsbGVz
dCBzaXplIGEgcGFnZSB0YWtlIHdpdGggYSByZWd1bGFyLgogQHByb3BlcnR5IChub25hdG9taWMs
IHNldHRlcj1fc2V0TWluaW11bUxheW91dFNpemVPdmVycmlkZTopIENHU2l6ZSBfbWluaW11bUxh
eW91dFNpemVPdmVycmlkZTsKKy8vIERlZmluZSB0aGUgc21hbGxlc3Qgc2l6ZSBhIHBhZ2UgdGFr
ZSB3aXRoIHRoZSBtaW5tYWwtdWkgdmlld3BvcnQuCiBAcHJvcGVydHkgKG5vbmF0b21pYywgc2V0
dGVyPV9zZXRNaW5pbXVtTGF5b3V0U2l6ZU92ZXJyaWRlRm9yTWluaW1hbFVJOikgQ0dTaXplIF9t
aW5pbXVtTGF5b3V0U2l6ZU92ZXJyaWRlRm9yTWluaW1hbFVJOworLy8gRGVmaW5lIHRoZSBsYXJn
ZXN0IHNpemUgdGhlIHVub2JzY3VyZWQgYXJlYSBjYW4gZ2V0IGZvciB0aGUgY3VycmVudCB2aWV3
IGJvdW5kcy4gVGhpcyB2YWx1ZSBpcyB1c2VkIHRvIGRlZmluZSB2aWV3cG9ydCB1bml0cy4KK0Bw
cm9wZXJ0eSAobm9uYXRvbWljLCBzZXR0ZXI9X3NldExhcmdlc3RVbm9ic2N1cmVkU2l6ZU92ZXJy
aWRlOikgQ0dTaXplIF9sYXJnZXN0VW5vYnNjdXJlZFNpemVPdmVycmlkZTsKKworQHByb3BlcnR5
IChub25hdG9taWMsIHJlYWRvbmx5KSBCT09MIF91c2VzTWluaW1hbFVJOwogCiAvLyBEZWZpbmUg
dGhlIGluc2V0IG9mIHRoZSBzY3JvbGx2aWV3IHVudXNhYmxlIGJ5IHRoZSB3ZWIgcGFnZS4KIEBw
cm9wZXJ0eSAobm9uYXRvbWljLCBzZXR0ZXI9X3NldE9ic2N1cmVkSW5zZXRzOikgVUlFZGdlSW5z
ZXRzIF9vYnNjdXJlZEluc2V0czsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9QYWdlQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGFnZUNsaWVudC5oCmlu
ZGV4IGVjYjc4OTI5OGNjZWM2YzA4N2MxMzAwNjY1NTA4NjUyMWMwNDkxYWQuLjU1NmUyODdhZDcy
NGNiYmUzZGU2OTBhMjhlNGYyYjcyZTU1NGU4OWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9QYWdlQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1Bh
Z2VDbGllbnQuaApAQCAtMjU3LDYgKzI1Nyw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQg
c2hvd1BsYXliYWNrVGFyZ2V0UGlja2VyKGJvb2wgaGFzVmlkZW8sIGNvbnN0IFdlYkNvcmU6Oklu
dFJlY3QmIGVsZW1lbnRSZWN0KSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHpvb21Ub1JlY3QoV2Vi
Q29yZTo6RmxvYXRSZWN0LCBkb3VibGUgbWluaW11bVNjYWxlLCBkb3VibGUgbWF4aW11bVNjYWxl
KSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRpZENoYW5nZVZpZXdwb3J0TWV0YVRhZ1dpZHRoKGZs
b2F0KSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHNldFVzZXNNaW5pbWFsVUkoYm9vbCkgPSAwOwog
ICAgIHZpcnR1YWwgZG91YmxlIG1pbmltdW1ab29tU2NhbGUoKSBjb25zdCA9IDA7CiAgICAgdmly
dHVhbCBXZWJDb3JlOjpGbG9hdFNpemUgY29udGVudHNTaXplKCkgY29uc3QgPSAwOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmggYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKaW5kZXggNmY5MDFiMDNjMDE3MDM3Mzkx
MTk1OWMzMzQ5NzQ1NDliNjE5MzNhMy4uMDZlYzM5ODczNDZlM2M5MjBhZTNlOTE4Njg3MDAwNTVj
ZmY5YTk4MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94
eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaApAQCAtNTk1
LDEwICs1OTUsMTEgQEAgcHVibGljOgogICAgIGVudW0gY2xhc3MgVW5vYnNjdXJlZFJlY3RDb25z
dHJhaW50IHsgQ29uc3RyYWluZWRUb0RvY3VtZW50UmVjdCwgVW5jb25zdHJhaW5lZCB9OwogICAg
IFdlYkNvcmU6OkZsb2F0UmVjdCBjb21wdXRlQ3VzdG9tRml4ZWRQb3NpdGlvblJlY3QoY29uc3Qg
V2ViQ29yZTo6RmxvYXRSZWN0JiB1bm9ic2N1cmVkQ29udGVudFJlY3QsIGRvdWJsZSBkaXNwbGF5
ZWRDb250ZW50U2NhbGUsIFVub2JzY3VyZWRSZWN0Q29uc3RyYWludCA9IFVub2JzY3VyZWRSZWN0
Q29uc3RyYWludDo6VW5jb25zdHJhaW5lZCkgY29uc3Q7CiAKLSAgICB2b2lkIGR5bmFtaWNWaWV3
cG9ydFNpemVVcGRhdGUoY29uc3QgV2ViQ29yZTo6RmxvYXRTaXplJiBtaW5pbXVtTGF5b3V0U2l6
ZSwgY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiB0YXJnZXRFeHBvc2VkQ29udGVudFJlY3QsIGNv
bnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYgdGFyZ2V0VW5vYnNjdXJlZFJlY3QsIGNvbnN0IFdlYkNv
cmU6OkZsb2F0UmVjdCYgdGFyZ2V0VW5vYnNjdXJlZFJlY3RJblNjcm9sbFZpZXdDb29yZGluYXRl
cywgZG91YmxlIHRhcmdldFNjYWxlKTsKKyAgICB2b2lkIGR5bmFtaWNWaWV3cG9ydFNpemVVcGRh
dGUoY29uc3QgV2ViQ29yZTo6RmxvYXRTaXplJiBtaW5pbXVtTGF5b3V0U2l6ZSwgY29uc3QgV2Vi
Q29yZTo6RmxvYXRTaXplJiBtaW5pbXVtTGF5b3V0U2l6ZUZvck1pbmltYWxVSSwgY29uc3QgV2Vi
Q29yZTo6RmxvYXRTaXplJiBsYXJnZXN0VW5vYnNjdXJlZFNpemUsIGNvbnN0IFdlYkNvcmU6OkZs
b2F0UmVjdCYgdGFyZ2V0RXhwb3NlZENvbnRlbnRSZWN0LCBjb25zdCBXZWJDb3JlOjpGbG9hdFJl
Y3QmIHRhcmdldFVub2JzY3VyZWRSZWN0LCBjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmIHRhcmdl
dFVub2JzY3VyZWRSZWN0SW5TY3JvbGxWaWV3Q29vcmRpbmF0ZXMsIGRvdWJsZSB0YXJnZXRTY2Fs
ZSk7CiAgICAgCiAgICAgdm9pZCBzZXRWaWV3cG9ydENvbmZpZ3VyYXRpb25NaW5pbXVtTGF5b3V0
U2l6ZShjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUmKTsKLSAgICB2b2lkIHNldE1pbmltdW1MYXlv
dXRTaXplRm9yTWluaW1hbFVJKGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYpOworICAgIHZvaWQg
c2V0Vmlld3BvcnRDb25maWd1cmF0aW9uTWluaW11bUxheW91dFNpemVGb3JNaW5pbWFsVUkoY29u
c3QgV2ViQ29yZTo6RmxvYXRTaXplJik7CisgICAgdm9pZCBzZXRMYXJnZXN0VW5vYnNjdXJlZFNp
emUoY29uc3QgV2ViQ29yZTo6RmxvYXRTaXplJik7CiAgICAgdm9pZCBkaWRDb21taXRMYXllclRy
ZWUoY29uc3QgV2ViS2l0OjpSZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbiYpOwogCiAgICAgdm9p
ZCBzZWxlY3RXaXRoR2VzdHVyZShjb25zdCBXZWJDb3JlOjpJbnRQb2ludCwgV2ViQ29yZTo6VGV4
dEdyYW51bGFyaXR5LCB1aW50MzJfdCBnZXN0dXJlVHlwZSwgdWludDMyX3QgZ2VzdHVyZVN0YXRl
LCBQYXNzUmVmUHRyPEdlc3R1cmVDYWxsYmFjaz4pOwpAQCAtNjMzLDYgKzYzNCw3IEBAIHB1Ymxp
YzoKICAgICB2b2lkIGNvbW1pdFBvdGVudGlhbFRhcEZhaWxlZCgpOwogICAgIHZvaWQgZGlkTm90
SGFuZGxlVGFwQXNDbGljayhjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYpOwogICAgIHZvaWQgdmll
d3BvcnRNZXRhVGFnV2lkdGhEaWRDaGFuZ2UoZmxvYXQgd2lkdGgpOworICAgIHZvaWQgc2V0VXNl
c01pbmltYWxVSShib29sKTsKICNlbmRpZgogCiAgICAgY29uc3QgRWRpdG9yU3RhdGUmIGVkaXRv
clN0YXRlKCkgY29uc3QgeyByZXR1cm4gbV9lZGl0b3JTdGF0ZTsgfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4KaW5kZXggNTMwZjY2MzUw
ZWEyNTU5ZWJlNWU0ZDhiZGY5Y2UzMjllMTgyZjk0YS4uOTYyNjA5OGUyNzc2N2VkNzNkMDliYWUy
NThmNzgyOTk1NWQ0M2E5OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dl
YlBhZ2VQcm94eS5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2Vi
UGFnZVByb3h5Lm1lc3NhZ2VzLmluCkBAIC0xNzIsNiArMTcyLDcgQEAgbWVzc2FnZXMgLT4gV2Vi
UGFnZVByb3h5IHsKICAgICBDb21taXRQb3RlbnRpYWxUYXBGYWlsZWQoKQogICAgIERpZE5vdEhh
bmRsZVRhcEFzQ2xpY2soV2ViQ29yZTo6SW50UG9pbnQgcG9pbnQpCiAgICAgVmlld3BvcnRNZXRh
VGFnV2lkdGhEaWRDaGFuZ2UoZmxvYXQgd2lkdGgpCisgICAgU2V0VXNlc01pbmltYWxVSShib29s
IHVzZXNNaW5pbWFsVUkpCiAjZW5kaWYKICNpZiBQTEFURk9STShHVEspCiAgICAgUHJpbnRGaW5p
c2hlZENhbGxiYWNrKFdlYkNvcmU6OlJlc291cmNlRXJyb3IgZXJyb3IsIHVpbnQ2NF90IGNhbGxi
YWNrSUQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1BhZ2VDbGll
bnRJbXBsSU9TLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBs
SU9TLmgKaW5kZXggOGE1MzZjNWUxOTM4NDcxZTBhYzA2MTQ0OWY4MTlmZjkzYjFhZGMwOS4uNDcz
YmI0MjY1NzI2MTIwZWJmNWU4MzU1NzMyMWRjZjRjZjE2ZDE5NCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJT1MuaApAQCAtMTIzLDYgKzEyMyw3
IEBAIHByaXZhdGU6CiAKICAgICB2aXJ0dWFsIGJvb2wgaGFuZGxlUnVuT3BlblBhbmVsKFdlYlBh
Z2VQcm94eSosIFdlYkZyYW1lUHJveHkqLCBXZWJPcGVuUGFuZWxQYXJhbWV0ZXJzKiwgV2ViT3Bl
blBhbmVsUmVzdWx0TGlzdGVuZXJQcm94eSopIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCBk
aWRDaGFuZ2VWaWV3cG9ydE1ldGFUYWdXaWR0aChmbG9hdCkgb3ZlcnJpZGU7CisgICAgdmlydHVh
bCB2b2lkIHNldFVzZXNNaW5pbWFsVUkoYm9vbCkgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCBkb3Vi
bGUgbWluaW11bVpvb21TY2FsZSgpIGNvbnN0IG92ZXJyaWRlOwogICAgIHZpcnR1YWwgV2ViQ29y
ZTo6RmxvYXRTaXplIGNvbnRlbnRzU2l6ZSgpIGNvbnN0IG92ZXJyaWRlOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLm1tIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5tbQppbmRleCA1MmI1
ZGE1MGFjMzY3ZjE2NzEzOGRlNTBmNjQzZDczMDZmMGI5NmExLi5mZTEwMTdjNjRmMjEyZThjMWRi
NzkzODdmNWM4ZWJkMzU2ZTM0NWNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9pb3MvUGFnZUNsaWVudEltcGxJT1MubW0KQEAgLTE4Nyw2ICsxODcsMTEgQEAgdm9pZCBQYWdl
Q2xpZW50SW1wbDo6ZGlkQ2hhbmdlVmlld3BvcnRNZXRhVGFnV2lkdGgoZmxvYXQgbmV3V2lkdGgp
CiAgICAgW21fd2ViVmlldyBfc2V0Vmlld3BvcnRNZXRhVGFnV2lkdGg6bmV3V2lkdGhdOwogfQog
Cit2b2lkIFBhZ2VDbGllbnRJbXBsOjpzZXRVc2VzTWluaW1hbFVJKGJvb2wgdXNlc01pbmltYWxV
SSkKK3sKKyAgICBbbV93ZWJWaWV3IF9zZXRVc2VzTWluaW1hbFVJOnVzZXNNaW5pbWFsVUldOwor
fQorCiBkb3VibGUgUGFnZUNsaWVudEltcGw6Om1pbmltdW1ab29tU2NhbGUoKSBjb25zdAogewog
ICAgIGlmIChVSVNjcm9sbFZpZXcgKnNjcm9sbGVyID0gW21fd2ViVmlldyBzY3JvbGxWaWV3XSkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9T
Lm1tIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9XZWJQYWdlUHJveHlJT1MubW0KaW5k
ZXggNjQxMDA3MDMwOTNkMjIyMzE2ZTUxZDQwNGU4ZDZiMDc4ZTcxNDJhMS4uMGJhY2FlNjcxZjgz
NGI1NjcyYjZiMGUzY2Y1YjlkYjQ3NjhlZDAyNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL2lvcy9XZWJQYWdlUHJveHlJT1MubW0KKysrIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL2lvcy9XZWJQYWdlUHJveHlJT1MubW0KQEAgLTIzNSw5ICsyMzUsOSBAQCBXZWJDb3Jl
OjpGbG9hdFJlY3QgV2ViUGFnZVByb3h5Ojpjb21wdXRlQ3VzdG9tRml4ZWRQb3NpdGlvblJlY3Qo
Y29uc3QgRmxvYXRSZWN0JgogICAgIHJldHVybiBGcmFtZVZpZXc6OnJlY3RGb3JWaWV3cG9ydENv
bnN0cmFpbmVkT2JqZWN0cyhlbmNsb3NpbmdMYXlvdXRSZWN0KGNvbnN0cmFpbmVkVW5vYnNjdXJl
ZFJlY3QpLCByb3VuZGVkTGF5b3V0U2l6ZShjb250ZW50c1NpemUpLCBkaXNwbGF5ZWRDb250ZW50
U2NhbGUsIGZhbHNlLCBTdGlja1RvVmlld3BvcnRCb3VuZHMpOwogfQogCi12b2lkIFdlYlBhZ2VQ
cm94eTo6ZHluYW1pY1ZpZXdwb3J0U2l6ZVVwZGF0ZShjb25zdCBGbG9hdFNpemUmIG1pbmltdW1M
YXlvdXRTaXplLCBjb25zdCBGbG9hdFJlY3QmIHRhcmdldEV4cG9zZWRDb250ZW50UmVjdCwgY29u
c3QgRmxvYXRSZWN0JiB0YXJnZXRVbm9ic2N1cmVkUmVjdCwgY29uc3QgRmxvYXRSZWN0JiB0YXJn
ZXRVbm9ic2N1cmVkUmVjdEluU2Nyb2xsVmlld0Nvb3JkaW5hdGVzLCAgZG91YmxlIHRhcmdldFNj
YWxlKQordm9pZCBXZWJQYWdlUHJveHk6OmR5bmFtaWNWaWV3cG9ydFNpemVVcGRhdGUoY29uc3Qg
RmxvYXRTaXplJiBtaW5pbXVtTGF5b3V0U2l6ZSwgY29uc3QgV2ViQ29yZTo6RmxvYXRTaXplJiBt
aW5pbXVtTGF5b3V0U2l6ZUZvck1pbmltYWxVSSwgY29uc3QgV2ViQ29yZTo6RmxvYXRTaXplJiBs
YXJnZXN0VW5vYnNjdXJlZFNpemUsIGNvbnN0IEZsb2F0UmVjdCYgdGFyZ2V0RXhwb3NlZENvbnRl
bnRSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHRhcmdldFVub2JzY3VyZWRSZWN0LCBjb25zdCBGbG9h
dFJlY3QmIHRhcmdldFVub2JzY3VyZWRSZWN0SW5TY3JvbGxWaWV3Q29vcmRpbmF0ZXMsICBkb3Vi
bGUgdGFyZ2V0U2NhbGUpCiB7Ci0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdl
OjpEeW5hbWljVmlld3BvcnRTaXplVXBkYXRlKG1pbmltdW1MYXlvdXRTaXplLCB0YXJnZXRFeHBv
c2VkQ29udGVudFJlY3QsIHRhcmdldFVub2JzY3VyZWRSZWN0LCB0YXJnZXRVbm9ic2N1cmVkUmVj
dEluU2Nyb2xsVmlld0Nvb3JkaW5hdGVzLCB0YXJnZXRTY2FsZSksIG1fcGFnZUlEKTsKKyAgICBt
X3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkR5bmFtaWNWaWV3cG9ydFNpemVVcGRh
dGUobWluaW11bUxheW91dFNpemUsIG1pbmltdW1MYXlvdXRTaXplRm9yTWluaW1hbFVJLCBsYXJn
ZXN0VW5vYnNjdXJlZFNpemUsIHRhcmdldEV4cG9zZWRDb250ZW50UmVjdCwgdGFyZ2V0VW5vYnNj
dXJlZFJlY3QsIHRhcmdldFVub2JzY3VyZWRSZWN0SW5TY3JvbGxWaWV3Q29vcmRpbmF0ZXMsIHRh
cmdldFNjYWxlKSwgbV9wYWdlSUQpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0Vmlld3Bv
cnRDb25maWd1cmF0aW9uTWluaW11bUxheW91dFNpemUoY29uc3QgV2ViQ29yZTo6RmxvYXRTaXpl
JiBzaXplKQpAQCAtMjQ1LDkgKzI0NSwxNCBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0Vmlld3Bv
cnRDb25maWd1cmF0aW9uTWluaW11bUxheW91dFNpemUoY29uc3QgV2ViQ29yZTo6RmxvYQogICAg
IG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0Vmlld3BvcnRDb25maWd1cmF0
aW9uTWluaW11bUxheW91dFNpemUoc2l6ZSksIG1fcGFnZUlEKTsKIH0KIAotdm9pZCBXZWJQYWdl
UHJveHk6OnNldE1pbmltdW1MYXlvdXRTaXplRm9yTWluaW1hbFVJKGNvbnN0IFdlYkNvcmU6OkZs
b2F0U2l6ZSYgc2l6ZSkKK3ZvaWQgV2ViUGFnZVByb3h5OjpzZXRWaWV3cG9ydENvbmZpZ3VyYXRp
b25NaW5pbXVtTGF5b3V0U2l6ZUZvck1pbmltYWxVSShjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUm
IHNpemUpCiB7Ci0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRNaW5p
bXVtTGF5b3V0U2l6ZUZvck1pbmltYWxVSShzaXplKSwgbV9wYWdlSUQpOworICAgIG1fcHJvY2Vz
cy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0Vmlld3BvcnRDb25maWd1cmF0aW9uTWluaW11
bUxheW91dFNpemVGb3JNaW5pbWFsVUkoc2l6ZSksIG1fcGFnZUlEKTsKK30KKwordm9pZCBXZWJQ
YWdlUHJveHk6OnNldExhcmdlc3RVbm9ic2N1cmVkU2l6ZShjb25zdCBXZWJDb3JlOjpGbG9hdFNp
emUmIHNpemUpCit7CisgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRM
YXJnZXN0VW5vYnNjdXJlZFNpemUoc2l6ZSksIG1fcGFnZUlEKTsKIH0KIAogdm9pZCBXZWJQYWdl
UHJveHk6OmRpZENvbW1pdExheWVyVHJlZShjb25zdCBXZWJLaXQ6OlJlbW90ZUxheWVyVHJlZVRy
YW5zYWN0aW9uJiBsYXllclRyZWVUcmFuc2FjdGlvbikKQEAgLTY0OSw2ICs2NTQsMTEgQEAgdm9p
ZCBXZWJQYWdlUHJveHk6OnZpZXdwb3J0TWV0YVRhZ1dpZHRoRGlkQ2hhbmdlKGZsb2F0IHdpZHRo
KQogICAgIG1fcGFnZUNsaWVudC5kaWRDaGFuZ2VWaWV3cG9ydE1ldGFUYWdXaWR0aCh3aWR0aCk7
CiB9CiAKK3ZvaWQgV2ViUGFnZVByb3h5OjpzZXRVc2VzTWluaW1hbFVJKGJvb2wgdXNlc01pbmlt
YWxVSSkKK3sKKyAgICBtX3BhZ2VDbGllbnQuc2V0VXNlc01pbmltYWxVSSh1c2VzTWluaW1hbFVJ
KTsKK30KKwogI2lmIFVTRShRVUlDS19MT09LKQogICAgIAogdm9pZCBXZWJQYWdlUHJveHk6OmRp
ZFN0YXJ0TG9hZEZvclF1aWNrTG9va0RvY3VtZW50SW5NYWluRnJhbWUoY29uc3QgU3RyaW5nJiBm
aWxlTmFtZSwgY29uc3QgU3RyaW5nJiB1dGkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViUGFnZS5jcHAKaW5kZXggZjAwMDA2Y2RjOTU1NDhmNDg0NjYwOTBkYjZlMDNk
YmExYWRmOGNmNy4uMTgwZmQ3Y2FiNDMwNjFiMmJlYjU3NGJlZTU1NmQ5ZWNhOWQzOTg1NyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcApAQCAtMjk0
LDYgKzI5NCw3IEBAIFdlYlBhZ2U6OldlYlBhZ2UodWludDY0X3QgcGFnZUlELCBjb25zdCBXZWJQ
YWdlQ3JlYXRpb25QYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzKQogICAgICwgbV9oYXNSZWNlaXZlZFZp
c2libGVDb250ZW50UmVjdHNBZnRlckRpZENvbW1pdExvYWQoZmFsc2UpCiAgICAgLCBtX3NjYWxl
V2FzU2V0QnlVSVByb2Nlc3MoZmFsc2UpCiAgICAgLCBtX3VzZXJIYXNDaGFuZ2VkUGFnZVNjYWxl
RmFjdG9yKGZhbHNlKQorICAgICwgbV9oYXNSZW5kZXJlZENvbnRlbnRBZnRlckRpZENvbW1pdExv
YWQoZmFsc2UpCiAgICAgLCBtX3VzZXJJc0ludGVyYWN0aW5nKGZhbHNlKQogICAgICwgbV9zY3Jl
ZW5TaXplKHBhcmFtZXRlcnMuc2NyZWVuU2l6ZSkKICAgICAsIG1fYXZhaWxhYmxlU2NyZWVuU2l6
ZShwYXJhbWV0ZXJzLmF2YWlsYWJsZVNjcmVlblNpemUpCkBAIC00MzAyLDEwICs0MzAzLDEyIEBA
IHZvaWQgV2ViUGFnZTo6ZGlkQ29tbWl0TG9hZChXZWJGcmFtZSogZnJhbWUpCiAjaWYgUExBVEZP
Uk0oSU9TKQogICAgIG1faGFzUmVjZWl2ZWRWaXNpYmxlQ29udGVudFJlY3RzQWZ0ZXJEaWRDb21t
aXRMb2FkID0gZmFsc2U7CiAgICAgbV91c2VySGFzQ2hhbmdlZFBhZ2VTY2FsZUZhY3RvciA9IGZh
bHNlOworICAgIG1faGFzUmVuZGVyZWRDb250ZW50QWZ0ZXJEaWRDb21taXRMb2FkID0gZmFsc2U7
CiAKICAgICBXZWJQcm9jZXNzOjpzaGFyZWQoKS5ldmVudERpc3BhdGNoZXIoKS5jbGVhclF1ZXVl
ZFRvdWNoRXZlbnRzRm9yUGFnZSgqdGhpcyk7CiAKICAgICByZXNldFZpZXdwb3J0RGVmYXVsdENv
bmZpZ3VyYXRpb24oZnJhbWUpOworICAgIG1fdmlld3BvcnRDb25maWd1cmF0aW9uLnJlc2V0TWlu
aW1hbFVJKCk7CiAgICAgbV92aWV3cG9ydENvbmZpZ3VyYXRpb24uc2V0Vmlld3BvcnRBcmd1bWVu
dHMoVmlld3BvcnRBcmd1bWVudHMoKSk7CiAgICAgbV92aWV3cG9ydENvbmZpZ3VyYXRpb24uc2V0
Q29udGVudHNTaXplKEludFNpemUoKSk7CiAgICAgdmlld3BvcnRDb25maWd1cmF0aW9uQ2hhbmdl
ZCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBh
Z2UuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKaW5kZXgg
MjRhZjJkY2ZjMTg3YjdmZmI0MDBhZjFiY2U5OWI5ZDQyMmY0OGU3Mi4uZjdjMjFhNGE0OWRlNThl
ZmE0YmYzMzM3Mzc4Zjc2MzBjMmYzZjRkOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViUGFnZS5oCkBAIC03MDYsOCArNzA2LDkgQEAgcHVibGljOgogCiAjaWYgUExB
VEZPUk0oSU9TKQogICAgIHZvaWQgc2V0Vmlld3BvcnRDb25maWd1cmF0aW9uTWluaW11bUxheW91
dFNpemUoY29uc3QgV2ViQ29yZTo6RmxvYXRTaXplJik7Ci0gICAgdm9pZCBzZXRNaW5pbXVtTGF5
b3V0U2l6ZUZvck1pbmltYWxVSShjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUmKTsKLSAgICB2b2lk
IGR5bmFtaWNWaWV3cG9ydFNpemVVcGRhdGUoY29uc3QgV2ViQ29yZTo6RmxvYXRTaXplJiBtaW5p
bXVtTGF5b3V0U2l6ZSwgY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiB0YXJnZXRFeHBvc2VkQ29u
dGVudFJlY3QsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYgdGFyZ2V0VW5vYnNjdXJlZFJlY3Qs
IGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYgdGFyZ2V0VW5vYnNjdXJlZFJlY3RJblNjcm9sbFZp
ZXdDb29yZGluYXRlcywgZG91YmxlIHNjYWxlKTsKKyAgICB2b2lkIHNldFZpZXdwb3J0Q29uZmln
dXJhdGlvbk1pbmltdW1MYXlvdXRTaXplRm9yTWluaW1hbFVJKGNvbnN0IFdlYkNvcmU6OkZsb2F0
U2l6ZSYpOworICAgIHZvaWQgc2V0TGFyZ2VzdFVub2JzY3VyZWRTaXplKGNvbnN0IFdlYkNvcmU6
OkZsb2F0U2l6ZSYpOworICAgIHZvaWQgZHluYW1pY1ZpZXdwb3J0U2l6ZVVwZGF0ZShjb25zdCBX
ZWJDb3JlOjpGbG9hdFNpemUmIG1pbmltdW1MYXlvdXRTaXplLCBjb25zdCBXZWJDb3JlOjpGbG9h
dFNpemUmIG1pbmltdW1MYXlvdXRTaXplRm9yTWluaW1hbFVJLCBjb25zdCBXZWJDb3JlOjpGbG9h
dFNpemUmIGxhcmdlc3RVbm9ic2N1cmVkU2l6ZSwgY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiB0
YXJnZXRFeHBvc2VkQ29udGVudFJlY3QsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYgdGFyZ2V0
VW5vYnNjdXJlZFJlY3QsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYgdGFyZ2V0VW5vYnNjdXJl
ZFJlY3RJblNjcm9sbFZpZXdDb29yZGluYXRlcywgZG91YmxlIHNjYWxlKTsKICAgICB2b2lkIHVw
ZGF0ZVZpc2libGVDb250ZW50UmVjdHMoY29uc3QgVmlzaWJsZUNvbnRlbnRSZWN0VXBkYXRlSW5m
byYpOwogICAgIGJvb2wgc2NhbGVXYXNTZXRCeVVJUHJvY2VzcygpIGNvbnN0IHsgcmV0dXJuIG1f
c2NhbGVXYXNTZXRCeVVJUHJvY2VzczsgfQogICAgIHZvaWQgd2lsbFN0YXJ0VXNlclRyaWdnZXJl
ZFpvb21pbmcoKTsKQEAgLTcxNyw2ICs3MTgsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCB6b29tVG9S
ZWN0KFdlYkNvcmU6OkZsb2F0UmVjdCwgZG91YmxlIG1pbmltdW1TY2FsZSwgZG91YmxlIG1heGlt
dW1TY2FsZSk7CiAgICAgdm9pZCBkaXNwYXRjaFRvdWNoRXZlbnQoY29uc3QgV2ViVG91Y2hFdmVu
dCYsIGJvb2wmIGhhbmRsZWQpOwogICAgIHZvaWQgY29tcGxldGVQZW5kaW5nU3ludGhldGljQ2xp
Y2tGb3JDb250ZW50Q2hhbmdlT2JzZXJ2ZXIoKTsKKyAgICB2b2lkIHdpbGxGbHVzaExheWVycygp
OwogI2VuZGlmCiAKICNpZiBQTEFURk9STShHVEspICYmIFVTRShURVhUVVJFX01BUFBFUl9HTCkK
QEAgLTgxNSw2ICs4MTcsNyBAQCBwcml2YXRlOgogI2lmIFBMQVRGT1JNKElPUykKICAgICB2b2lk
IHJlc2V0Vmlld3BvcnREZWZhdWx0Q29uZmlndXJhdGlvbihXZWJGcmFtZSogbWFpbkZyYW1lKTsK
ICAgICB2b2lkIHZpZXdwb3J0Q29uZmlndXJhdGlvbkNoYW5nZWQoKTsKKyAgICB2b2lkIHVwZGF0
ZVZpZXdwb3J0U2l6ZUZvckNTU1ZpZXdwb3J0VW5pdHMoKTsKIAogICAgIHN0YXRpYyB2b2lkIGNv
bnZlcnRTZWxlY3Rpb25SZWN0c1RvUm9vdFZpZXcoV2ViQ29yZTo6RnJhbWVWaWV3KiwgVmVjdG9y
PFdlYkNvcmU6OlNlbGVjdGlvblJlY3Q+Jik7CiAgICAgUGFzc1JlZlB0cjxXZWJDb3JlOjpSYW5n
ZT4gcmFuZ2VGb3JXZWJTZWxlY3Rpb25BdFBvc2l0aW9uKGNvbnN0IFdlYkNvcmU6OkludFBvaW50
JiwgY29uc3QgV2ViQ29yZTo6VmlzaWJsZVBvc2l0aW9uJiwgU2VsZWN0aW9uRmxhZ3MmKTsKQEAg
LTExOTEsMTIgKzExOTQsMTMgQEAgcHJpdmF0ZToKICAgICBib29sIG1faGFzUmVjZWl2ZWRWaXNp
YmxlQ29udGVudFJlY3RzQWZ0ZXJEaWRDb21taXRMb2FkOwogICAgIGJvb2wgbV9zY2FsZVdhc1Nl
dEJ5VUlQcm9jZXNzOwogICAgIGJvb2wgbV91c2VySGFzQ2hhbmdlZFBhZ2VTY2FsZUZhY3RvcjsK
KyAgICBib29sIG1faGFzUmVuZGVyZWRDb250ZW50QWZ0ZXJEaWRDb21taXRMb2FkOwogICAgIGJv
b2wgbV91c2VySXNJbnRlcmFjdGluZzsKICAgICBXZWJDb3JlOjpGbG9hdFNpemUgbV9zY3JlZW5T
aXplOwogICAgIFdlYkNvcmU6OkZsb2F0U2l6ZSBtX2F2YWlsYWJsZVNjcmVlblNpemU7CiAgICAg
UmVmUHRyPFdlYkNvcmU6OlJhbmdlPiBtX2N1cnJlbnRCbG9ja1NlbGVjdGlvbjsKICAgICBXZWJD
b3JlOjpJbnRTaXplIG1fYmxvY2tTZWxlY3Rpb25EZXNpcmVkU2l6ZTsKLSAgICBXZWJDb3JlOjpG
bG9hdFNpemUgbV9taW5pbXVtTGF5b3V0U2l6ZUZvck1pbmltYWxVSTsKKyAgICBXZWJDb3JlOjpG
bG9hdFNpemUgbV9sYXJnZXN0VW5vYnNjdXJlZFNpemU7CiAgICAgYm9vbCBtX2luRHluYW1pY1Np
emVVcGRhdGU7CiAgICAgSGFzaE1hcDxzdGQ6OnBhaXI8V2ViQ29yZTo6SW50U2l6ZSwgZG91Ymxl
PiwgV2ViQ29yZTo6SW50UG9pbnQ+IG1fZHluYW1pY1NpemVVcGRhdGVIaXN0b3J5OwogICAgIFJl
ZlB0cjxXZWJDb3JlOjpOb2RlPiBtX3BlbmRpbmdTeW50aGV0aWNDbGlja05vZGU7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5p
biBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmlu
CmluZGV4IDQyODZiNTU3ZWUxODJkYjQyYjY0OGJmNTUzYzY2MTQxMTM4NjU0NjQuLjk2MmQ4M2Qx
YmQwNDA4OTRjYmJlNTRiNTlhYTYwMzYxMzI2ZDc5MGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCkBAIC00NCw4ICs0
NCw5IEBAIG1lc3NhZ2VzIC0+IFdlYlBhZ2UgTGVnYWN5UmVjZWl2ZXIgewogICAgIFdoZWVsRXZl
bnRTeW5jRm9yVGVzdGluZyhXZWJLaXQ6OldlYldoZWVsRXZlbnQgZXZlbnQpIC0+IChib29sIGhh
bmRsZWQpCiAjaWYgUExBVEZPUk0oSU9TKQogICAgIFNldFZpZXdwb3J0Q29uZmlndXJhdGlvbk1p
bmltdW1MYXlvdXRTaXplKFdlYkNvcmU6OkZsb2F0U2l6ZSBzaXplKQotICAgIFNldE1pbmltdW1M
YXlvdXRTaXplRm9yTWluaW1hbFVJKFdlYkNvcmU6OkZsb2F0U2l6ZSBzaXplKQotICAgIER5bmFt
aWNWaWV3cG9ydFNpemVVcGRhdGUoV2ViQ29yZTo6RmxvYXRTaXplIG1pbmltdW1MYXlvdXRTaXpl
LCBXZWJDb3JlOjpGbG9hdFJlY3QgdGFyZ2V0RXhwb3NlZENvbnRlbnRSZWN0LCBXZWJDb3JlOjpG
bG9hdFJlY3QgdGFyZ2V0VW5vYnNjdXJlZFJlY3QsIFdlYkNvcmU6OkZsb2F0UmVjdCB0YXJnZXRV
bm9ic2N1cmVkUmVjdEluU2Nyb2xsVmlld0Nvb3JkaW5hdGVzLCBkb3VibGUgc2NhbGUpCisgICAg
U2V0Vmlld3BvcnRDb25maWd1cmF0aW9uTWluaW11bUxheW91dFNpemVGb3JNaW5pbWFsVUkoV2Vi
Q29yZTo6RmxvYXRTaXplIHNpemUpCisgICAgU2V0TGFyZ2VzdFVub2JzY3VyZWRTaXplKFdlYkNv
cmU6OkZsb2F0U2l6ZSBzaXplKQorICAgIER5bmFtaWNWaWV3cG9ydFNpemVVcGRhdGUoV2ViQ29y
ZTo6RmxvYXRTaXplIG1pbmltdW1MYXlvdXRTaXplLCBXZWJDb3JlOjpGbG9hdFNpemUgbWluaW11
bUxheW91dFNpemVGb3JNaW5pbWFsVUksICBXZWJDb3JlOjpGbG9hdFNpemUgbGFyZ2VzdFVub2Jz
Y3VyZWRTaXplLCBXZWJDb3JlOjpGbG9hdFJlY3QgdGFyZ2V0RXhwb3NlZENvbnRlbnRSZWN0LCBX
ZWJDb3JlOjpGbG9hdFJlY3QgdGFyZ2V0VW5vYnNjdXJlZFJlY3QsIFdlYkNvcmU6OkZsb2F0UmVj
dCB0YXJnZXRVbm9ic2N1cmVkUmVjdEluU2Nyb2xsVmlld0Nvb3JkaW5hdGVzLCBkb3VibGUgc2Nh
bGUpCiAKICAgICBIYW5kbGVUYXAoV2ViQ29yZTo6SW50UG9pbnQgcG9pbnQpCiAgICAgUG90ZW50
aWFsVGFwQXRQb3NpdGlvbih1aW50NjRfdCByZXF1ZXN0SUQsIFdlYkNvcmU6OkZsb2F0UG9pbnQg
cG9pbnQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9z
L1dlYlBhZ2VJT1MubW0gYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dl
YlBhZ2VJT1MubW0KaW5kZXggNjM0YzNmOTUzZWE4M2NlY2U2OTA3ZTI0MjViNDIxNGYyNDM4MWQ4
YS4uZjEyZWVjODg3ZGE0YTI2ZTVmNjcxZDJjODkyOGRjZTNmZGM1NWZiZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbQpAQCAt
MTkwMywxOCArMTkwMywzNSBAQCB2b2lkIFdlYlBhZ2U6OnNldFZpZXdwb3J0Q29uZmlndXJhdGlv
bk1pbmltdW1MYXlvdXRTaXplKGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSkKICAgICB2aWV3cG9ydENv
bmZpZ3VyYXRpb25DaGFuZ2VkKCk7CiB9CiAKLXZvaWQgV2ViUGFnZTo6c2V0TWluaW11bUxheW91
dFNpemVGb3JNaW5pbWFsVUkoY29uc3QgRmxvYXRTaXplJiBzaXplKQordm9pZCBXZWJQYWdlOjpz
ZXRWaWV3cG9ydENvbmZpZ3VyYXRpb25NaW5pbXVtTGF5b3V0U2l6ZUZvck1pbmltYWxVSShjb25z
dCBGbG9hdFNpemUmIHNpemUpCiB7Ci0gICAgcmVzZXRUZXh0QXV0b3NpemluZ0JlZm9yZUxheW91
dElmTmVlZGVkKG1fbWluaW11bUxheW91dFNpemVGb3JNaW5pbWFsVUksIHNpemUpOwotICAgIG1f
bWluaW11bUxheW91dFNpemVGb3JNaW5pbWFsVUkgPSBzaXplOworICAgIHJlc2V0VGV4dEF1dG9z
aXppbmdCZWZvcmVMYXlvdXRJZk5lZWRlZChtX3ZpZXdwb3J0Q29uZmlndXJhdGlvbi5taW5pbXVt
TGF5b3V0U2l6ZUZvck1pbmltYWxVSSgpLCBzaXplKTsKKyAgICBtX3ZpZXdwb3J0Q29uZmlndXJh
dGlvbi5zZXRNaW5pbXVtTGF5b3V0U2l6ZUZvck1pbmltYWxVSShzaXplKTsKICAgICB2aWV3cG9y
dENvbmZpZ3VyYXRpb25DaGFuZ2VkKCk7CiB9CiAKK3ZvaWQgV2ViUGFnZTo6c2V0TGFyZ2VzdFVu
b2JzY3VyZWRTaXplKGNvbnN0IEZsb2F0U2l6ZSYgbGFyZ2VzdFVub2JzY3VyZWRTaXplKQorewor
ICAgIG1fbGFyZ2VzdFVub2JzY3VyZWRTaXplID0gbGFyZ2VzdFVub2JzY3VyZWRTaXplOworICAg
IHVwZGF0ZVZpZXdwb3J0U2l6ZUZvckNTU1ZpZXdwb3J0VW5pdHMoKTsKK30KKwogc3RhdGljIGlu
bGluZSBib29sIHdpdGhpbkVwc2lsb24oZmxvYXQgYSwgZmxvYXQgYikKIHsKICAgICByZXR1cm4g
ZmFicyhhIC0gYikgPCBzdGQ6Om51bWVyaWNfbGltaXRzPGZsb2F0Pjo6ZXBzaWxvbigpOwogfQog
Cit2b2lkIFdlYlBhZ2U6OndpbGxGbHVzaExheWVycygpCit7CisgICAgaWYgKG1faGFzUmVuZGVy
ZWRDb250ZW50QWZ0ZXJEaWRDb21taXRMb2FkKQorICAgICAgICByZXR1cm47CisKKyAgICBtX2hh
c1JlbmRlcmVkQ29udGVudEFmdGVyRGlkQ29tbWl0TG9hZCA9IHRydWU7CisgICAgbV92aWV3cG9y
dENvbmZpZ3VyYXRpb24ucGFnZVdpbGxSZW5kZXJGaXJzdEZyYW1lKCk7CisKKyAgICBzZW5kKE1l
c3NhZ2VzOjpXZWJQYWdlUHJveHk6OlNldFVzZXNNaW5pbWFsVUkobV92aWV3cG9ydENvbmZpZ3Vy
YXRpb24udXNlc01pbmltYWxVSSgpKSk7Cit9CisKIHZvaWQgV2ViUGFnZTo6cmVzZXRUZXh0QXV0
b3NpemluZ0JlZm9yZUxheW91dElmTmVlZGVkKGNvbnN0IEZsb2F0U2l6ZSYgb2xkU2l6ZSwgY29u
c3QgRmxvYXRTaXplJiBuZXdTaXplKQogewogICAgIGlmIChvbGRTaXplLndpZHRoKCkgPT0gbmV3
U2l6ZS53aWR0aCgpKQpAQCAtMTkyOCw3ICsxOTQ1LDcgQEAgdm9pZCBXZWJQYWdlOjpyZXNldFRl
eHRBdXRvc2l6aW5nQmVmb3JlTGF5b3V0SWZOZWVkZWQoY29uc3QgRmxvYXRTaXplJiBvbGRTaXpl
LAogICAgIH0KIH0KIAotdm9pZCBXZWJQYWdlOjpkeW5hbWljVmlld3BvcnRTaXplVXBkYXRlKGNv
bnN0IEZsb2F0U2l6ZSYgbWluaW11bUxheW91dFNpemUsIGNvbnN0IEZsb2F0UmVjdCYgdGFyZ2V0
RXhwb3NlZENvbnRlbnRSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHRhcmdldFVub2JzY3VyZWRSZWN0
LCBjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmIHRhcmdldFVub2JzY3VyZWRSZWN0SW5TY3JvbGxW
aWV3Q29vcmRpbmF0ZXMsIGRvdWJsZSB0YXJnZXRTY2FsZSkKK3ZvaWQgV2ViUGFnZTo6ZHluYW1p
Y1ZpZXdwb3J0U2l6ZVVwZGF0ZShjb25zdCBGbG9hdFNpemUmIG1pbmltdW1MYXlvdXRTaXplLCBj
b25zdCBGbG9hdFNpemUmIG1pbmltdW1MYXlvdXRTaXplRm9yTWluaW1hbFVJLCBjb25zdCBXZWJD
b3JlOjpGbG9hdFNpemUmIGxhcmdlc3RVbm9ic2N1cmVkU2l6ZSwgY29uc3QgRmxvYXRSZWN0JiB0
YXJnZXRFeHBvc2VkQ29udGVudFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgdGFyZ2V0VW5vYnNjdXJl
ZFJlY3QsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYgdGFyZ2V0VW5vYnNjdXJlZFJlY3RJblNj
cm9sbFZpZXdDb29yZGluYXRlcywgZG91YmxlIHRhcmdldFNjYWxlKQogewogICAgIFRlbXBvcmFy
eUNoYW5nZTxib29sPiBkeW5hbWljU2l6ZVVwZGF0ZUd1YXJkKG1faW5EeW5hbWljU2l6ZVVwZGF0
ZSwgdHJ1ZSk7CiAgICAgLy8gRklYTUU6IHRoaXMgZG9lcyBub3QgaGFuZGxlIHRoZSBjYXNlcyB3
aGVyZSB0aGUgY29udGVudCB3b3VsZCBjaGFuZ2UgdGhlIGNvbnRlbnQgc2l6ZSBvciBzY3JvbGwg
cG9zaXRpb24gZnJvbSBKYXZhU2NyaXB0LgpAQCAtMTk2Nyw5ICsxOTg0LDE0IEBAIHZvaWQgV2Vi
UGFnZTo6ZHluYW1pY1ZpZXdwb3J0U2l6ZVVwZGF0ZShjb25zdCBGbG9hdFNpemUmIG1pbmltdW1M
YXlvdXRTaXplLCBjb25zCiAgICAgfQogCiAgICAgcmVzZXRUZXh0QXV0b3NpemluZ0JlZm9yZUxh
eW91dElmTmVlZGVkKG1fdmlld3BvcnRDb25maWd1cmF0aW9uLm1pbmltdW1MYXlvdXRTaXplKCks
IG1pbmltdW1MYXlvdXRTaXplKTsKKyAgICByZXNldFRleHRBdXRvc2l6aW5nQmVmb3JlTGF5b3V0
SWZOZWVkZWQobV92aWV3cG9ydENvbmZpZ3VyYXRpb24ubWluaW11bUxheW91dFNpemVGb3JNaW5p
bWFsVUkoKSwgbWluaW11bUxheW91dFNpemVGb3JNaW5pbWFsVUkpOwogICAgIG1fdmlld3BvcnRD
b25maWd1cmF0aW9uLnNldE1pbmltdW1MYXlvdXRTaXplKG1pbmltdW1MYXlvdXRTaXplKTsKKyAg
ICBtX3ZpZXdwb3J0Q29uZmlndXJhdGlvbi5zZXRNaW5pbXVtTGF5b3V0U2l6ZUZvck1pbmltYWxV
SShtaW5pbXVtTGF5b3V0U2l6ZUZvck1pbmltYWxVSSk7CiAgICAgSW50U2l6ZSBuZXdMYXlvdXRT
aXplID0gbV92aWV3cG9ydENvbmZpZ3VyYXRpb24ubGF5b3V0U2l6ZSgpOworCiAgICAgc2V0Rml4
ZWRMYXlvdXRTaXplKG5ld0xheW91dFNpemUpOworICAgIHNldExhcmdlc3RVbm9ic2N1cmVkU2l6
ZShsYXJnZXN0VW5vYnNjdXJlZFNpemUpOworCiAgICAgZnJhbWVWaWV3LnVwZGF0ZUxheW91dEFu
ZFN0eWxlSWZOZWVkZWRSZWN1cnNpdmUoKTsKIAogICAgIEludFNpemUgbmV3Q29udGVudFNpemUg
PSBmcmFtZVZpZXcuY29udGVudHNTaXplKCk7CkBAIC0yMTQwLDE0ICsyMTYyLDEyIEBAIHZvaWQg
V2ViUGFnZTo6dmlld3BvcnRDb25maWd1cmF0aW9uQ2hhbmdlZCgpCiAKICAgICBtX3BhZ2UtPnNl
dFpvb21lZE91dFBhZ2VTY2FsZUZhY3RvcihtX3ZpZXdwb3J0Q29uZmlndXJhdGlvbi5taW5pbXVt
U2NhbGUoKSk7CiAKKyAgICB1cGRhdGVWaWV3cG9ydFNpemVGb3JDU1NWaWV3cG9ydFVuaXRzKCk7
CisKICAgICBGcmFtZVZpZXcmIGZyYW1lVmlldyA9ICptYWluRnJhbWVWaWV3KCk7Ci0gICAgRmxv
YXRTaXplIHZpZXdwb3J0U2l6ZSA9ICFtX21pbmltdW1MYXlvdXRTaXplRm9yTWluaW1hbFVJLmlz
RW1wdHkoKSA/IG1fbWluaW11bUxheW91dFNpemVGb3JNaW5pbWFsVUkgOiBtX3ZpZXdwb3J0Q29u
ZmlndXJhdGlvbi5taW5pbXVtTGF5b3V0U2l6ZSgpOwotICAgIHZpZXdwb3J0U2l6ZS5zY2FsZSgx
IC8gaW5pdGlhbFNjYWxlKTsKLSAgICBmcmFtZVZpZXcuc2V0Vmlld3BvcnRTaXplKHJvdW5kZWRJ
bnRTaXplKHZpZXdwb3J0U2l6ZSkpOwotICAgIAogICAgIEludFBvaW50IHNjcm9sbFBvc2l0aW9u
ID0gZnJhbWVWaWV3LnNjcm9sbFBvc2l0aW9uKCk7CiAgICAgaWYgKCFtX2hhc1JlY2VpdmVkVmlz
aWJsZUNvbnRlbnRSZWN0c0FmdGVyRGlkQ29tbWl0TG9hZCkgewotICAgICAgICBGbG9hdFNpemUg
bWluaW11bUxheW91dFNpemVJblNjcm9sbFZpZXdDb29yZGluYXRlcyA9IG1fdmlld3BvcnRDb25m
aWd1cmF0aW9uLm1pbmltdW1MYXlvdXRTaXplKCk7CisgICAgICAgIEZsb2F0U2l6ZSBtaW5pbXVt
TGF5b3V0U2l6ZUluU2Nyb2xsVmlld0Nvb3JkaW5hdGVzID0gbV92aWV3cG9ydENvbmZpZ3VyYXRp
b24uYWN0aXZlTWluaW11bUxheW91dFNpemVJblNjcm9sbFZpZXdDb29yZGluYXRlcygpOwogICAg
ICAgICBtaW5pbXVtTGF5b3V0U2l6ZUluU2Nyb2xsVmlld0Nvb3JkaW5hdGVzLnNjYWxlKDEgLyBz
Y2FsZSk7CiAgICAgICAgIEludFNpemUgbWluaW11bUxheW91dFNpemVJbkRvY3VtZW50Q29vcmRp
bmF0ZXMgPSByb3VuZGVkSW50U2l6ZShtaW5pbXVtTGF5b3V0U2l6ZUluU2Nyb2xsVmlld0Nvb3Jk
aW5hdGVzKTsKICAgICAgICAgSW50UmVjdCB1bm9ic2N1cmVkQ29udGVudFJlY3Qoc2Nyb2xsUG9z
aXRpb24sIG1pbmltdW1MYXlvdXRTaXplSW5Eb2N1bWVudENvb3JkaW5hdGVzKTsKQEAgLTIxNjQs
MTAgKzIxODQsMjEgQEAgdm9pZCBXZWJQYWdlOjp2aWV3cG9ydENvbmZpZ3VyYXRpb25DaGFuZ2Vk
KCkKICAgICAgICAgLy8gVGhpcyB0YWtlcyBzY2FsZSBpbnRvIGFjY291bnQsIHNvIGRvIGFmdGVy
IHRoZSBzY2FsZSBjaGFuZ2UuCiAgICAgICAgIGZyYW1lVmlldy5zZXRDdXN0b21GaXhlZFBvc2l0
aW9uTGF5b3V0UmVjdChlbmNsb3NpbmdJbnRSZWN0KGZyYW1lVmlldy52aWV3cG9ydENvbnN0cmFp
bmVkT2JqZWN0c1JlY3QoKSkpOwogCi0gICAgICAgIGZyYW1lVmlldy5zZXRDdXN0b21TaXplRm9y
UmVzaXplRXZlbnQoZXhwYW5kZWRJbnRTaXplKG1fdmlld3BvcnRDb25maWd1cmF0aW9uLm1pbmlt
dW1MYXlvdXRTaXplKCkpKTsKKyAgICAgICAgZnJhbWVWaWV3LnNldEN1c3RvbVNpemVGb3JSZXNp
emVFdmVudChleHBhbmRlZEludFNpemUobV92aWV3cG9ydENvbmZpZ3VyYXRpb24uYWN0aXZlTWlu
aW11bUxheW91dFNpemVJblNjcm9sbFZpZXdDb29yZGluYXRlcygpKSk7CiAgICAgfQogfQogCit2
b2lkIFdlYlBhZ2U6OnVwZGF0ZVZpZXdwb3J0U2l6ZUZvckNTU1ZpZXdwb3J0VW5pdHMoKQorewor
ICAgIEZsb2F0U2l6ZSBsYXJnZXN0VW5vYnNjdXJlZFJlY3QgPSBtX2xhcmdlc3RVbm9ic2N1cmVk
U2l6ZTsKKyAgICBpZiAobGFyZ2VzdFVub2JzY3VyZWRSZWN0LmlzRW1wdHkoKSkKKyAgICAgICAg
bGFyZ2VzdFVub2JzY3VyZWRSZWN0ID0gbV92aWV3cG9ydENvbmZpZ3VyYXRpb24ubWluaW11bUxh
eW91dFNpemVGb3JNaW5pbWFsVUkoKTsKKworICAgIEZyYW1lVmlldyYgZnJhbWVWaWV3ID0gKm1h
aW5GcmFtZVZpZXcoKTsKKyAgICBsYXJnZXN0VW5vYnNjdXJlZFJlY3Quc2NhbGUoMSAvIG1fdmll
d3BvcnRDb25maWd1cmF0aW9uLmluaXRpYWxTY2FsZSgpKTsKKyAgICBmcmFtZVZpZXcuc2V0Vmll
d3BvcnRTaXplRm9yQ1NTVmlld3BvcnRVbml0cyhyb3VuZGVkSW50U2l6ZShsYXJnZXN0VW5vYnNj
dXJlZFJlY3QpKTsKK30KKwogdm9pZCBXZWJQYWdlOjphcHBsaWNhdGlvbldpbGxSZXNpZ25BY3Rp
dmUoKQogewogICAgIFtbTlNOb3RpZmljYXRpb25DZW50ZXIgZGVmYXVsdENlbnRlcl0gcG9zdE5v
dGlmaWNhdGlvbk5hbWU6V2ViVUlBcHBsaWNhdGlvbldpbGxSZXNpZ25BY3RpdmVOb3RpZmljYXRp
b24gb2JqZWN0Om5pbF07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YlBhZ2UvbWFjL1JlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhLm1tIGIvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9SZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYS5tbQppbmRl
eCA5ZjVmN2MxYTFkMTIxNjlmNjI5YTY1ZTljODBlNDE2M2U1ODZiYzA5Li4xYzdiNGJkMTQ2ZGE2
Y2Q3ZGQ5ZWRmNzE2ZTIwZTc1NDBlNTM3ZjU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1JlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhLm1tCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvUmVtb3RlTGF5ZXJUcmVlRHJh
d2luZ0FyZWEubW0KQEAgLTI0NCw2ICsyNDQsOCBAQCB2b2lkIFJlbW90ZUxheWVyVHJlZURyYXdp
bmdBcmVhOjpmbHVzaExheWVycygpCiAKICAgICBSRUxFQVNFX0FTU0VSVCghbV9wZW5kaW5nQmFj
a2luZ1N0b3JlRmx1c2hlciB8fCBtX3BlbmRpbmdCYWNraW5nU3RvcmVGbHVzaGVyLT5oYXNGbHVz
aGVkKCkpOwogCisgICAgbV93ZWJQYWdlLT53aWxsRmx1c2hMYXllcnMoKTsKKwogICAgIG1fd2Vi
UGFnZS0+bGF5b3V0SWZOZWVkZWQoKTsKIAogICAgIEZsb2F0UmVjdCB2aXNpYmxlUmVjdChGbG9h
dFBvaW50KCksIG1fdmlld1NpemUpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>231849</attachid>
            <date>2014-05-21 19:43:24 -0700</date>
            <delta_ts>2014-05-22 18:56:28 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-133162-20140521194258.patch</filename>
            <type>text/plain</type>
            <size>62215</size>
            <attacher name="Benjamin Poulain">benjamin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTY5MTgxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOGM0NWI3YzAxNzZmOTBm
NmM4MTY1ODA1ZGE3M2UwZjU0ZWQ5ZWQxNS4uYTVlMTlmNjlmNmJkOWY3N2M1MmM3ZDc4NWEzOGNj
ZDg2YzI3OGFlMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYwIEBACisyMDE0LTA1LTIxICBCZW5q
YW1pbiBQb3VsYWluICA8YnBvdWxhaW5AYXBwbGUuY29tPgorCisgICAgICAgIFtpT1NdW1dLMl0g
QWRkIHN1cHBvcnQgZm9yIG1pbmltYWwtdWkgdmlld3BvcnRzCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzMxNjIKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgc3VwcG9ydCBmb3IgbWluaW1hbC11aSBk
aXJlY3RseSBpbnRvIHRoZSBWaWV3cG9ydCBjb25maWd1cmF0aW9uLgorCisgICAgICAgIFZpZXdw
b3J0Q29uZmlndXJhdGlvbiBrbm93cyBhYm91dCB0d28ga2luZHMgb2YgbGF5b3V0IHNpemUgaW4g
c2Nyb2xsdmlldyBjb29yZGluYXRlczoKKyAgICAgICAgLW5vcm1hbCBzaXplCisgICAgICAgIC1t
aW5pbWFsIHVpIHNpemUuCisKKyAgICAgICAgSW5pdGlhbGx5LCB0aGUgcGFnZSBpcyBpbml0aWFs
aXplZCB3aXRoIHJlc2V0TWluaW1hbFVJKCkgYW5kIHN0YXJ0IHdpdGggYSBub3JtYWwgbGF5b3V0
LgorCisgICAgICAgIEF0IGFueSB0aW1lIGJlZm9yZSB0aGUgZmlyc3QgZnJhbWUgaXMgcmVuZGVy
ZWQsIHRoZSBXZWIgcGFnZSBjYW4gdXBkYXRlIGl0cyB2aWV3cG9ydCBtZXRhIHRhZworICAgICAg
ICB0byBpbmNsdWRlIG1pbmltYWwtdWkuIFRoZSB2aWV3cG9ydCBjb25maWd1cmF0aW9uIGlzIHVw
ZGF0ZWQgaW1tZWRpYXRlbHkgdG8gcmVmbGVjdCB0aGUgbWluaW1hbC11aQorICAgICAgICBsYXlv
dXQgc2l6ZS4gQW55IGxheW91dCBhZnRlciB0aGF0IHRha2UgaW50byBhY2NvdW50IHRoZSBtaW5p
bWFsLXVpLgorCisgICAgICAgIFdoZW4gdGhlIGZpcnN0IGZyYW1lIGlzIHJlbmRlcmVkLCB0aGUg
V2ViS2l0IGxheWVyIGNhbGxzIHBhZ2VXaWxsUmVuZGVyRmlyc3RGcmFtZSgpIHdoaWNoIGZyZWV6
ZXMKKyAgICAgICAgdGhlIHN0YXRlIHRvIG5vcm1hbCBvciBtaW5pbWFsLXVpLiBUaGlzIGlzIGNv
bnNpc3RlbnQgd2l0aCB0aGUgV2ViS2l0MSBydWxlcyBmb3IgbWluaW1hbC11aS4KKworICAgICAg
ICAqIFdlYkNvcmUuZXhwLmluOgorICAgICAgICAqIGNzcy9MZW5ndGhGdW5jdGlvbnMuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6bWluaW11bVZhbHVlRm9yTGVuZ3RoKToKKyAgICAgICAgKFdlYkNv
cmU6OmZsb2F0VmFsdWVGb3JMZW5ndGgpOgorICAgICAgICAqIGNzcy9TdHlsZVJlc29sdmVyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUmVzb2x2ZXI6OnZpZXdwb3J0UGVyY2VudGFnZVZh
bHVlKToKKyAgICAgICAgKiBkb20vVmlld3BvcnRBcmd1bWVudHMuaDoKKyAgICAgICAgKFdlYkNv
cmU6OlZpZXdwb3J0QXJndW1lbnRzOjpvcGVyYXRvcj09KToKKyAgICAgICAgKiBwYWdlL0ZyYW1l
Vmlldy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZVZpZXc6OnNldFZpZXdwb3J0U2l6ZUZv
ckNTU1ZpZXdwb3J0VW5pdHMpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVWaWV3Ojp2aWV3cG9y
dFNpemVGb3JDU1NWaWV3cG9ydFVuaXRzKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lVmlldzo6
c2V0Vmlld3BvcnRTaXplKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lVmlldzo6
dmlld3BvcnRTaXplKTogRGVsZXRlZC4KKyAgICAgICAgKiBwYWdlL0ZyYW1lVmlldy5oOgorICAg
ICAgICAqIHBhZ2UvVmlld3BvcnRDb25maWd1cmF0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlZpZXdwb3J0Q29uZmlndXJhdGlvbjo6Vmlld3BvcnRDb25maWd1cmF0aW9uKToKKyAgICAgICAg
KFdlYkNvcmU6OlZpZXdwb3J0Q29uZmlndXJhdGlvbjo6c2V0TWluaW11bUxheW91dFNpemUpOgor
ICAgICAgICAoV2ViQ29yZTo6Vmlld3BvcnRDb25maWd1cmF0aW9uOjpzZXRNaW5pbXVtTGF5b3V0
U2l6ZUZvck1pbmltYWxVSSk6CisgICAgICAgIChXZWJDb3JlOjpWaWV3cG9ydENvbmZpZ3VyYXRp
b246OmFjdGl2ZU1pbmltdW1MYXlvdXRTaXplSW5TY3JvbGxWaWV3Q29vcmRpbmF0ZXMpOgorICAg
ICAgICAoV2ViQ29yZTo6Vmlld3BvcnRDb25maWd1cmF0aW9uOjpyZXNldE1pbmltYWxVSSk6Cisg
ICAgICAgIChXZWJDb3JlOjpWaWV3cG9ydENvbmZpZ3VyYXRpb246OnBhZ2VXaWxsUmVuZGVyRmly
c3RGcmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpWaWV3cG9ydENvbmZpZ3VyYXRpb246OmluaXRp
YWxTY2FsZSk6CisgICAgICAgIChXZWJDb3JlOjpWaWV3cG9ydENvbmZpZ3VyYXRpb246Om1pbmlt
dW1TY2FsZSk6CisgICAgICAgIChXZWJDb3JlOjpWaWV3cG9ydENvbmZpZ3VyYXRpb246OnVwZGF0
ZUNvbmZpZ3VyYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6Vmlld3BvcnRDb25maWd1cmF0aW9u
OjpsYXlvdXRXaWR0aCk6CisgICAgICAgIChXZWJDb3JlOjpWaWV3cG9ydENvbmZpZ3VyYXRpb246
OmxheW91dEhlaWdodCk6CisgICAgICAgIChXZWJDb3JlOjpWaWV3cG9ydENvbmZpZ3VyYXRpb246
OmRlc2NyaXB0aW9uKToKKyAgICAgICAgKiBwYWdlL1ZpZXdwb3J0Q29uZmlndXJhdGlvbi5oOgor
ICAgICAgICAoV2ViQ29yZTo6Vmlld3BvcnRDb25maWd1cmF0aW9uOjptaW5pbXVtTGF5b3V0U2l6
ZUZvck1pbmltYWxVSSk6CisgICAgICAgIChXZWJDb3JlOjpWaWV3cG9ydENvbmZpZ3VyYXRpb246
OnVzZXNNaW5pbWFsVUkpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJWaWV3LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlclZpZXc6OnZpZXdwb3J0U2l6ZUZvckNTU1ZpZXdwb3J0VW5p
dHMpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVmlldzo6dmlld3BvcnRTaXplKTogRGVsZXRl
ZC4KKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVmlldy5oOgorCiAyMDE0LTA1LTIxICBEZWFu
IEphY2tzb24gIDxkaW5vQGFwcGxlLmNvbT4KIAogICAgICAgICBbaU9TXSBVcGRhdGUgc29tZSBv
ZiB0aGUgbWVkaWEgY29udHJvbHMgYnV0dG9ucyB0byBiZSBiaWdnZXIKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCBh
MDdmYzU4NTQzMzAzNTM1MjBiMDIxNjVkNWJmMTU4OTc1MjcyYjRjLi5kNDgxNjNkZmQyYzViMjdk
MWU2Y2U2MDU1YTU2ODlhNjNjZGViYTIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFu
Z2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNjAgQEAKKzIw
MTQtMDUtMjEgIEJlbmphbWluIFBvdWxhaW4gIDxicG91bGFpbkBhcHBsZS5jb20+CisKKyAgICAg
ICAgW2lPU11bV0syXSBBZGQgc3VwcG9ydCBmb3IgbWluaW1hbC11aSB2aWV3cG9ydHMKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzMzE2MgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEluIHRoZSBXZWJLaXQy
IGxheWVycywgd2UgaGF2ZSB0d28gcGFydHMgdG8gbWluaW1hbC11aS4KKyAgICAgICAgLUluIFdl
YlBhZ2UsIHdlIG5lZWQgdG8gZ2V0IHRoZSB2YWx1ZXMgZnJvbSB0aGUgVUlQcm9jZXNzIGFuZCBz
ZXR1cCB0aGUgVmlld3BvcnRDb25maWd1cmF0aW9uLgorICAgICAgICAgQW5vdGhlciBwYXJ0IGlz
IGZyZWV6aW5nIHRoZSBzdGF0ZSBvbiB0aGUgZmlyc3QgZnJhbWUuCisgICAgICAgIC1JbiB0aGUg
VUlQcm9jZXNzLCB3ZSBuZWVkIHRvIGdldCB0aGUgcmlnaHQgaW5mb3JtYXRpb24gZm9yIGxheW91
dCBhbmQgc3R5bGluZywgYW5kIHdlIG5lZWQgdG8gdGVsbAorICAgICAgICAgdGhlIFVJIGNsaWVu
dHMgYWJvdXQgbWluaW1hbC11aSBjaGFuZ2VzLgorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9D
b2NvYS9XS1VJRGVsZWdhdGVQcml2YXRlLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2Nv
YS9XS1dlYlZpZXcubW06CisgICAgICAgICgtW1dLV2ViVmlldyBfc2V0VXNlc01pbmltYWxVSTpd
KToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF91c2VzTWluaW1hbFVJXSk6CisgICAgICAgICgtW1dL
V2ViVmlldyBfZGlkQ29tbWl0TGF5ZXJUcmVlOldlYktpdDo6XSk6CisgICAgICAgICgtW1dLV2Vi
VmlldyBfZnJhbWVPckJvdW5kc0NoYW5nZWRdKToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF9taW5p
bXVtTGF5b3V0U2l6ZU92ZXJyaWRlXSk6CisgICAgICAgICgtW1dLV2ViVmlldyBfc2V0TWluaW11
bUxheW91dFNpemVPdmVycmlkZTpdKToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF9taW5pbXVtTGF5
b3V0U2l6ZU92ZXJyaWRlRm9yTWluaW1hbFVJXSk6CisgICAgICAgICgtW1dLV2ViVmlldyBfc2V0
TWluaW11bUxheW91dFNpemVPdmVycmlkZUZvck1pbmltYWxVSTpdKToKKyAgICAgICAgKC1bV0tX
ZWJWaWV3IF9sYXJnZXN0VW5vYnNjdXJlZFNpemVPdmVycmlkZV0pOgorICAgICAgICAoLVtXS1dl
YlZpZXcgX3NldE1heGltdW1Vbm9ic2N1cmVkU2l6ZU92ZXJyaWRlOl0pOgorICAgICAgICAoLVtX
S1dlYlZpZXcgX2JlZ2luQW5pbWF0ZWRSZXNpemVXaXRoVXBkYXRlczpdKToKKyAgICAgICAgKHNl
dFZpZXdwb3J0Q29uZmlndXJhdGlvbk1pbmltdW1MYXlvdXRTaXplKTogRGVsZXRlZC4KKyAgICAg
ICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld0ludGVybmFsLmg6CisgICAgICAgICog
VUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdQcml2YXRlLmg6CisgICAgICAgICogVUlQcm9j
ZXNzL1BhZ2VDbGllbnQuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5Lmg6Cisg
ICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBV
SVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLmg6CisgICAgICAgICogVUlQcm9jZXNzL2lv
cy9QYWdlQ2xpZW50SW1wbElPUy5tbToKKyAgICAgICAgKFdlYktpdDo6UGFnZUNsaWVudEltcGw6
OnNldFVzZXNNaW5pbWFsVUkpOgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5
SU9TLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmR5bmFtaWNWaWV3cG9ydFNp
emVVcGRhdGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnNldFZpZXdwb3J0Q29u
ZmlndXJhdGlvbk1pbmltdW1MYXlvdXRTaXplRm9yTWluaW1hbFVJKToKKyAgICAgICAgKFdlYktp
dDo6V2ViUGFnZVByb3h5OjpzZXRNYXhpbXVtVW5vYnNjdXJlZFNpemUpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQYWdlUHJveHk6OnNldFVzZXNNaW5pbWFsVUkpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQYWdlUHJveHk6OnNldE1pbmltdW1MYXlvdXRTaXplRm9yTWluaW1hbFVJKTogRGVsZXRlZC4K
KyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHA6CisgICAgICAgIChXZWJL
aXQ6OldlYlBhZ2U6OldlYlBhZ2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpkaWRDb21t
aXRMb2FkKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oOgorICAgICAg
ICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluOgorICAgICAgICAqIFdl
YlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbToKKyAgICAgICAgKFdlYktpdDo6V2Vi
UGFnZTo6c2V0Vmlld3BvcnRDb25maWd1cmF0aW9uTWluaW11bUxheW91dFNpemVGb3JNaW5pbWFs
VUkpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpzZXRNYXhpbXVtVW5vYnNjdXJlZFNpemUp
OgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjp3aWxsRmx1c2hMYXllcnMpOgorICAgICAgICAo
V2ViS2l0OjpXZWJQYWdlOjpkeW5hbWljVmlld3BvcnRTaXplVXBkYXRlKToKKyAgICAgICAgKFdl
YktpdDo6V2ViUGFnZTo6dmlld3BvcnRDb25maWd1cmF0aW9uQ2hhbmdlZCk6CisgICAgICAgIChX
ZWJLaXQ6OldlYlBhZ2U6OnVwZGF0ZVZpZXdwb3J0U2l6ZUZvckNTU1ZpZXdwb3J0VW5pdHMpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpzZXRNaW5pbXVtTGF5b3V0U2l6ZUZvck1pbmltYWxV
SSk6IERlbGV0ZWQuCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9SZW1vdGVMYXll
clRyZWVEcmF3aW5nQXJlYS5tbToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTGF5ZXJUcmVlRHJh
d2luZ0FyZWE6OmZsdXNoTGF5ZXJzKToKKwogMjAxNC0wNS0yMSAgT2xpdmVyIEh1bnQgIDxvbGl2
ZXJAYXBwbGUuY29tPgogCiAgICAgICAgIE9ubHkgZW5hYmxlIHNhbmRib3ggZXh0ZW5zaW9ucyBv
biBtYWMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbiBiL1NvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCmluZGV4IDk5YmViNGFjZDc3MjgyMzI4ODAzYTNkNGJk
MjFiNWQ2YzU0ODkzZGYuLmU2NjZlODBhMTA4MDM3ZTBiOWZlYmM1MWQ4MDk1MWQ0ZDhlYjU1ZGQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUuZXhwLmluCkBAIC05MDYsNiArOTA2LDggQEAgX19aTjdXZWJDb3JlMjFV
c2VyQ29udGVudENvbnRyb2xsZXIzNHJlbW92ZVVzZXJNZXNzYWdlSGFuZGxlckRlc2NyaXB0b3JF
Uk5TXzI4VXMKIF9fWk43V2ViQ29yZTIxVXNlckNvbnRlbnRDb250cm9sbGVyNmNyZWF0ZUV2CiBf
X1pON1dlYkNvcmUyMVVzZXJDb250ZW50Q29udHJvbGxlckQxRXYKIF9fWk43V2ViQ29yZTIxVXNl
ckNvbnRlbnRVUkxQYXR0ZXJuNXBhcnNlRVJLTjNXVEY2U3RyaW5nRQorX19aTjdXZWJDb3JlMjFW
aWV3cG9ydENvbmZpZ3VyYXRpb24xNGRpZEZpcnN0UmVuZGVyRXYKK19fWk43V2ViQ29yZTIxVmll
d3BvcnRDb25maWd1cmF0aW9uMTRyZXNldE1pbmltYWxVSUV2CiBfX1pON1dlYkNvcmUyMVZpZXdw
b3J0Q29uZmlndXJhdGlvbjE1c2V0Q29udGVudHNTaXplRVJLTlNfN0ludFNpemVFCiBfX1pON1dl
YkNvcmUyMVZpZXdwb3J0Q29uZmlndXJhdGlvbjE3d2VicGFnZVBhcmFtZXRlcnNFdgogX19aTjdX
ZWJDb3JlMjFWaWV3cG9ydENvbmZpZ3VyYXRpb24yMHNldE1pbmltdW1MYXlvdXRTaXplRVJLTlNf
OUZsb2F0U2l6ZUUKQEAgLTkxNCw2ICs5MTYsNyBAQCBfX1pON1dlYkNvcmUyMVZpZXdwb3J0Q29u
ZmlndXJhdGlvbjIxeGh0bWxNb2JpbGVQYXJhbWV0ZXJzRXYKIF9fWk43V2ViQ29yZTIxVmlld3Bv
cnRDb25maWd1cmF0aW9uMjJ0ZXh0RG9jdW1lbnRQYXJhbWV0ZXJzRXYKIF9fWk43V2ViQ29yZTIx
Vmlld3BvcnRDb25maWd1cmF0aW9uMjNpbWFnZURvY3VtZW50UGFyYW1ldGVyc0V2CiBfX1pON1dl
YkNvcmUyMVZpZXdwb3J0Q29uZmlndXJhdGlvbjIzc2V0RGVmYXVsdENvbmZpZ3VyYXRpb25FUktO
UzBfMTBQYXJhbWV0ZXJzRQorX19aTjdXZWJDb3JlMjFWaWV3cG9ydENvbmZpZ3VyYXRpb24zMnNl
dE1pbmltdW1MYXlvdXRTaXplRm9yTWluaW1hbFVJRVJLTlNfOUZsb2F0U2l6ZUUKIF9fWk43V2Vi
Q29yZTIxVmlld3BvcnRDb25maWd1cmF0aW9uQzFFdgogX19aTjdXZWJDb3JlMjFXaW5kb3dzTGF0
aW4xRW5jb2RpbmdFdgogX19aTjdXZWJDb3JlMjFjcmVhdGVDRlVSTEZyb21CdWZmZXJFUEtjbVBL
N19fQ0ZVUkwKQEAgLTEzNjEsNyArMTM2NCw2IEBAIF9fWk43V2ViQ29yZTlGcmFtZVZpZXcxNHNl
dE5lZWRzTGF5b3V0RXYKIF9fWk43V2ViQ29yZTlGcmFtZVZpZXcxNHNldFRyYW5zcGFyZW50RWIK
IF9fWk43V2ViQ29yZTlGcmFtZVZpZXcxNXNldEZvb3RlckhlaWdodEVpCiBfX1pON1dlYkNvcmU5
RnJhbWVWaWV3MTVzZXRIZWFkZXJIZWlnaHRFaQotX19aTjdXZWJDb3JlOUZyYW1lVmlldzE1c2V0
Vmlld3BvcnRTaXplRU5TXzdJbnRTaXplRQogX19aTjdXZWJDb3JlOUZyYW1lVmlldzE2c2V0UGFp
bnRCZWhhdmlvckVqCiBfX1pON1dlYkNvcmU5RnJhbWVWaWV3MTdhZGRTY3JvbGxhYmxlQXJlYUVQ
TlNfMTRTY3JvbGxhYmxlQXJlYUUKIF9fWk43V2ViQ29yZTlGcmFtZVZpZXcxN3BhaW50Q29udHJv
bFRpbnRzRXYKQEAgLTEzODYsNiArMTM4OCw3IEBAIF9fWk43V2ViQ29yZTlGcmFtZVZpZXcyNmFk
anVzdFRpbGVkQmFja2luZ0NvdmVyYWdlRXYKIF9fWk43V2ViQ29yZTlGcmFtZVZpZXcyOXNldEF1
dG9TaXplRml4ZWRNaW5pbXVtSGVpZ2h0RWkKIF9fWk43V2ViQ29yZTlGcmFtZVZpZXcyOXNldFNo
b3VsZFVwZGF0ZVdoaWxlT2Zmc2NyZWVuRWIKIF9fWk43V2ViQ29yZTlGcmFtZVZpZXczMXNldFZp
c3VhbFVwZGF0ZXNBbGxvd2VkQnlDbGllbnRFYgorX19aTjdXZWJDb3JlOUZyYW1lVmlldzM0c2V0
Vmlld3BvcnRTaXplRm9yQ1NTVmlld3BvcnRVbml0c0VOU183SW50U2l6ZUUKIF9fWk43V2ViQ29y
ZTlGcmFtZVZpZXczN3NldFNjcm9sbGluZ1BlcmZvcm1hbmNlTG9nZ2luZ0VuYWJsZWRFYgogX19a
TjdXZWJDb3JlOUZyYW1lVmlldzM3dXBkYXRlTGF5b3V0QW5kU3R5bGVJZk5lZWRlZFJlY3Vyc2l2
ZUV2CiBfX1pON1dlYkNvcmU5RnJhbWVWaWV3MzhzY3JvbGxQb3NpdGlvbkNoYW5nZWRWaWFQbGF0
Zm9ybVdpZGdldEVSS05TXzhJbnRQb2ludEVTM18KQEAgLTE3OTIsNiArMTc5NSw3IEBAIF9fWk5L
N1dlYkNvcmUyMVVzZXJDb250ZW50VVJMUGF0dGVybjdtYXRjaGVzRVJLTlNfM1VSTEUKIF9fWk5L
N1dlYkNvcmUyMVZpZXdwb3J0Q29uZmlndXJhdGlvbjEwbGF5b3V0U2l6ZUV2CiBfX1pOSzdXZWJD
b3JlMjFWaWV3cG9ydENvbmZpZ3VyYXRpb24xMmluaXRpYWxTY2FsZUV2CiBfX1pOSzdXZWJDb3Jl
MjFWaWV3cG9ydENvbmZpZ3VyYXRpb24xMm1pbmltdW1TY2FsZUV2CitfX1pOSzdXZWJDb3JlMjFW
aWV3cG9ydENvbmZpZ3VyYXRpb240NmFjdGl2ZU1pbmltdW1MYXlvdXRTaXplSW5TY3JvbGxWaWV3
Q29vcmRpbmF0ZXNFdgogX19aTks3V2ViQ29yZTIyV2hlZWxFdmVudERlbHRhVHJhY2tlcjMwZG9t
aW5hbnRTY3JvbGxHZXN0dXJlRGlyZWN0aW9uRXYKIF9fWk5LN1dlYkNvcmUyM0FwcGxpY2F0aW9u
Q2FjaGVTdG9yYWdlMTFtYXhpbXVtU2l6ZUV2CiBfX1pOSzdXZWJDb3JlMjNBdXRoZW50aWNhdGlv
bkNoYWxsZW5nZTIwYXV0aGVudGljYXRpb25DbGllbnRFdgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvY3NzL0xlbmd0aEZ1bmN0aW9ucy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvTGVuZ3Ro
RnVuY3Rpb25zLmNwcAppbmRleCAyZmE5NGUyMDcxNjE1YzU1MDQ2YjBiNDc0YjhiNmM0YTZmNjFl
YmJmLi41NjQwMGQ0NjA3NmVkYzcxMjgzNzQ4YTU1N2ZlMjEwNzAyYzZjN2JjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9jc3MvTGVuZ3RoRnVuY3Rpb25zLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9jc3MvTGVuZ3RoRnVuY3Rpb25zLmNwcApAQCAtNTQsMjEgKzU0LDIxIEBAIExheW91dFVu
aXQgbWluaW11bVZhbHVlRm9yTGVuZ3RoKGNvbnN0IExlbmd0aCYgbGVuZ3RoLCBMYXlvdXRVbml0
IG1heGltdW1WYWx1ZSwKICAgICAgICAgcmV0dXJuIGxlbmd0aC5ub25OYW5DYWxjdWxhdGVkVmFs
dWUobWF4aW11bVZhbHVlKTsKICAgICBjYXNlIFZpZXdwb3J0UGVyY2VudGFnZVdpZHRoOgogICAg
ICAgICBpZiAocmVuZGVyVmlldykKLSAgICAgICAgICAgIHJldHVybiBMYXlvdXRVbml0KHJlbmRl
clZpZXctPnZpZXdwb3J0U2l6ZSgpLndpZHRoKCkgKiBsZW5ndGgudmlld3BvcnRQZXJjZW50YWdl
TGVuZ3RoKCkgLyAxMDAuMGYpOworICAgICAgICAgICAgcmV0dXJuIExheW91dFVuaXQocmVuZGVy
Vmlldy0+dmlld3BvcnRTaXplRm9yQ1NTVmlld3BvcnRVbml0cygpLndpZHRoKCkgKiBsZW5ndGgu
dmlld3BvcnRQZXJjZW50YWdlTGVuZ3RoKCkgLyAxMDAuMGYpOwogICAgICAgICByZXR1cm4gMDsK
ICAgICBjYXNlIFZpZXdwb3J0UGVyY2VudGFnZUhlaWdodDoKICAgICAgICAgaWYgKHJlbmRlclZp
ZXcpCi0gICAgICAgICAgICByZXR1cm4gTGF5b3V0VW5pdChyZW5kZXJWaWV3LT52aWV3cG9ydFNp
emUoKS5oZWlnaHQoKSAqIGxlbmd0aC52aWV3cG9ydFBlcmNlbnRhZ2VMZW5ndGgoKSAvIDEwMC4w
Zik7CisgICAgICAgICAgICByZXR1cm4gTGF5b3V0VW5pdChyZW5kZXJWaWV3LT52aWV3cG9ydFNp
emVGb3JDU1NWaWV3cG9ydFVuaXRzKCkuaGVpZ2h0KCkgKiBsZW5ndGgudmlld3BvcnRQZXJjZW50
YWdlTGVuZ3RoKCkgLyAxMDAuMGYpOwogICAgICAgICByZXR1cm4gMDsKICAgICBjYXNlIFZpZXdw
b3J0UGVyY2VudGFnZU1pbjoKICAgICAgICAgaWYgKHJlbmRlclZpZXcpIHsKLSAgICAgICAgICAg
IEludFNpemUgdmlld3BvcnRTaXplID0gcmVuZGVyVmlldy0+dmlld3BvcnRTaXplKCk7CisgICAg
ICAgICAgICBJbnRTaXplIHZpZXdwb3J0U2l6ZSA9IHJlbmRlclZpZXctPnZpZXdwb3J0U2l6ZUZv
ckNTU1ZpZXdwb3J0VW5pdHMoKTsKICAgICAgICAgICAgIHJldHVybiBMYXlvdXRVbml0KHN0ZDo6
bWluKHZpZXdwb3J0U2l6ZS53aWR0aCgpLCB2aWV3cG9ydFNpemUuaGVpZ2h0KCkpICogbGVuZ3Ro
LnZpZXdwb3J0UGVyY2VudGFnZUxlbmd0aCgpIC8gMTAwLjBmKTsKICAgICAgICAgfQogICAgICAg
ICByZXR1cm4gMDsKICAgICBjYXNlIFZpZXdwb3J0UGVyY2VudGFnZU1heDoKICAgICAgICAgaWYg
KHJlbmRlclZpZXcpIHsKLSAgICAgICAgICAgIEludFNpemUgdmlld3BvcnRTaXplID0gcmVuZGVy
Vmlldy0+dmlld3BvcnRTaXplKCk7CisgICAgICAgICAgICBJbnRTaXplIHZpZXdwb3J0U2l6ZSA9
IHJlbmRlclZpZXctPnZpZXdwb3J0U2l6ZUZvckNTU1ZpZXdwb3J0VW5pdHMoKTsKICAgICAgICAg
ICAgIHJldHVybiBMYXlvdXRVbml0KHN0ZDo6bWF4KHZpZXdwb3J0U2l6ZS53aWR0aCgpLCB2aWV3
cG9ydFNpemUuaGVpZ2h0KCkpICogbGVuZ3RoLnZpZXdwb3J0UGVyY2VudGFnZUxlbmd0aCgpIC8g
MTAwLjBmKTsKICAgICAgICAgfQogICAgICAgICByZXR1cm4gMDsKQEAgLTEzMiwyMSArMTMyLDIx
IEBAIGZsb2F0IGZsb2F0VmFsdWVGb3JMZW5ndGgoY29uc3QgTGVuZ3RoJiBsZW5ndGgsIExheW91
dFVuaXQgbWF4aW11bVZhbHVlLCBSZW5kZXJWCiAgICAgICAgIHJldHVybiBsZW5ndGgubm9uTmFu
Q2FsY3VsYXRlZFZhbHVlKG1heGltdW1WYWx1ZSk7ICAgICAgICAgICAgICAgIAogICAgIGNhc2Ug
Vmlld3BvcnRQZXJjZW50YWdlV2lkdGg6CiAgICAgICAgIGlmIChyZW5kZXJWaWV3KQotICAgICAg
ICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGludD4ocmVuZGVyVmlldy0+dmlld3BvcnRTaXplKCku
d2lkdGgoKSAqIGxlbmd0aC52aWV3cG9ydFBlcmNlbnRhZ2VMZW5ndGgoKSAvIDEwMC4wZik7Cisg
ICAgICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8aW50PihyZW5kZXJWaWV3LT52aWV3cG9ydFNp
emVGb3JDU1NWaWV3cG9ydFVuaXRzKCkud2lkdGgoKSAqIGxlbmd0aC52aWV3cG9ydFBlcmNlbnRh
Z2VMZW5ndGgoKSAvIDEwMC4wZik7CiAgICAgICAgIHJldHVybiAwOwogICAgIGNhc2UgVmlld3Bv
cnRQZXJjZW50YWdlSGVpZ2h0OgogICAgICAgICBpZiAocmVuZGVyVmlldykKLSAgICAgICAgICAg
IHJldHVybiBzdGF0aWNfY2FzdDxpbnQ+KHJlbmRlclZpZXctPnZpZXdwb3J0U2l6ZSgpLmhlaWdo
dCgpICogbGVuZ3RoLnZpZXdwb3J0UGVyY2VudGFnZUxlbmd0aCgpIC8gMTAwLjBmKTsKKyAgICAg
ICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxpbnQ+KHJlbmRlclZpZXctPnZpZXdwb3J0U2l6ZUZv
ckNTU1ZpZXdwb3J0VW5pdHMoKS5oZWlnaHQoKSAqIGxlbmd0aC52aWV3cG9ydFBlcmNlbnRhZ2VM
ZW5ndGgoKSAvIDEwMC4wZik7CiAgICAgICAgIHJldHVybiAwOwogICAgIGNhc2UgVmlld3BvcnRQ
ZXJjZW50YWdlTWluOgogICAgICAgICBpZiAocmVuZGVyVmlldykgewotICAgICAgICAgICAgSW50
U2l6ZSB2aWV3cG9ydFNpemUgPSByZW5kZXJWaWV3LT52aWV3cG9ydFNpemUoKTsKKyAgICAgICAg
ICAgIEludFNpemUgdmlld3BvcnRTaXplID0gcmVuZGVyVmlldy0+dmlld3BvcnRTaXplRm9yQ1NT
Vmlld3BvcnRVbml0cygpOwogICAgICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGludD4oc3Rk
OjptaW4odmlld3BvcnRTaXplLndpZHRoKCksIHZpZXdwb3J0U2l6ZS5oZWlnaHQoKSkgKiBsZW5n
dGgudmlld3BvcnRQZXJjZW50YWdlTGVuZ3RoKCkgLyAxMDAuMGYpOwogICAgICAgICB9CiAgICAg
ICAgIHJldHVybiAwOwogICAgIGNhc2UgVmlld3BvcnRQZXJjZW50YWdlTWF4OgogICAgICAgICBp
ZiAocmVuZGVyVmlldykgewotICAgICAgICAgICAgSW50U2l6ZSB2aWV3cG9ydFNpemUgPSByZW5k
ZXJWaWV3LT52aWV3cG9ydFNpemUoKTsKKyAgICAgICAgICAgIEludFNpemUgdmlld3BvcnRTaXpl
ID0gcmVuZGVyVmlldy0+dmlld3BvcnRTaXplRm9yQ1NTVmlld3BvcnRVbml0cygpOwogICAgICAg
ICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGludD4oc3RkOjptYXgodmlld3BvcnRTaXplLndpZHRo
KCksIHZpZXdwb3J0U2l6ZS5oZWlnaHQoKSkgKiBsZW5ndGgudmlld3BvcnRQZXJjZW50YWdlTGVu
Z3RoKCkgLyAxMDAuMGYpOwogICAgICAgICB9CiAgICAgICAgIHJldHVybiAwOwpAQCAtMTc4LDIx
ICsxNzgsMjEgQEAgZmxvYXQgZmxvYXRWYWx1ZUZvckxlbmd0aChjb25zdCBMZW5ndGgmIGxlbmd0
aCwgZmxvYXQgbWF4aW11bVZhbHVlLCBSZW5kZXJWaWV3KgogICAgICAgICByZXR1cm4gbGVuZ3Ro
Lm5vbk5hbkNhbGN1bGF0ZWRWYWx1ZShtYXhpbXVtVmFsdWUpOwogICAgIGNhc2UgVmlld3BvcnRQ
ZXJjZW50YWdlV2lkdGg6CiAgICAgICAgIGlmIChyZW5kZXJWaWV3KQotICAgICAgICAgICAgcmV0
dXJuIHN0YXRpY19jYXN0PGludD4ocmVuZGVyVmlldy0+dmlld3BvcnRTaXplKCkud2lkdGgoKSAq
IGxlbmd0aC52aWV3cG9ydFBlcmNlbnRhZ2VMZW5ndGgoKSAvIDEwMC4wZik7CisgICAgICAgICAg
ICByZXR1cm4gc3RhdGljX2Nhc3Q8aW50PihyZW5kZXJWaWV3LT52aWV3cG9ydFNpemVGb3JDU1NW
aWV3cG9ydFVuaXRzKCkud2lkdGgoKSAqIGxlbmd0aC52aWV3cG9ydFBlcmNlbnRhZ2VMZW5ndGgo
KSAvIDEwMC4wZik7CiAgICAgICAgIHJldHVybiAwOwogICAgIGNhc2UgVmlld3BvcnRQZXJjZW50
YWdlSGVpZ2h0OgogICAgICAgICBpZiAocmVuZGVyVmlldykKLSAgICAgICAgICAgIHJldHVybiBz
dGF0aWNfY2FzdDxpbnQ+KHJlbmRlclZpZXctPnZpZXdwb3J0U2l6ZSgpLmhlaWdodCgpICogbGVu
Z3RoLnZpZXdwb3J0UGVyY2VudGFnZUxlbmd0aCgpIC8gMTAwLjBmKTsKKyAgICAgICAgICAgIHJl
dHVybiBzdGF0aWNfY2FzdDxpbnQ+KHJlbmRlclZpZXctPnZpZXdwb3J0U2l6ZUZvckNTU1ZpZXdw
b3J0VW5pdHMoKS5oZWlnaHQoKSAqIGxlbmd0aC52aWV3cG9ydFBlcmNlbnRhZ2VMZW5ndGgoKSAv
IDEwMC4wZik7CiAgICAgICAgIHJldHVybiAwOwogICAgIGNhc2UgVmlld3BvcnRQZXJjZW50YWdl
TWluOgogICAgICAgICBpZiAocmVuZGVyVmlldykgewotICAgICAgICAgICAgSW50U2l6ZSB2aWV3
cG9ydFNpemUgPSByZW5kZXJWaWV3LT52aWV3cG9ydFNpemUoKTsKKyAgICAgICAgICAgIEludFNp
emUgdmlld3BvcnRTaXplID0gcmVuZGVyVmlldy0+dmlld3BvcnRTaXplRm9yQ1NTVmlld3BvcnRV
bml0cygpOwogICAgICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGludD4oc3RkOjptaW4odmll
d3BvcnRTaXplLndpZHRoKCksIHZpZXdwb3J0U2l6ZS5oZWlnaHQoKSkgKiBsZW5ndGgudmlld3Bv
cnRQZXJjZW50YWdlTGVuZ3RoKCkgLyAxMDAuMGYpOwogICAgICAgICB9CiAgICAgICAgIHJldHVy
biAwOwogICAgIGNhc2UgVmlld3BvcnRQZXJjZW50YWdlTWF4OgogICAgICAgICBpZiAocmVuZGVy
VmlldykgewotICAgICAgICAgICAgSW50U2l6ZSB2aWV3cG9ydFNpemUgPSByZW5kZXJWaWV3LT52
aWV3cG9ydFNpemUoKTsKKyAgICAgICAgICAgIEludFNpemUgdmlld3BvcnRTaXplID0gcmVuZGVy
Vmlldy0+dmlld3BvcnRTaXplRm9yQ1NTVmlld3BvcnRVbml0cygpOwogICAgICAgICAgICAgcmV0
dXJuIHN0YXRpY19jYXN0PGludD4oc3RkOjptYXgodmlld3BvcnRTaXplLndpZHRoKCksIHZpZXdw
b3J0U2l6ZS5oZWlnaHQoKSkgKiBsZW5ndGgudmlld3BvcnRQZXJjZW50YWdlTGVuZ3RoKCkgLyAx
MDAuMGYpOwogICAgICAgICB9CiAgICAgICAgIHJldHVybiAwOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxl
UmVzb2x2ZXIuY3BwCmluZGV4IDhiYjMzYzdkNGVmYjUwNDY2MThhMzFiYzBkNWRhMWFjMWZlNmYx
ODYuLmEyZTliNjcyZDJmMWM0NTc4MjZmZmI2NmNkY2VkNGU5MmM2NmRiMzggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9jc3MvU3R5bGVSZXNvbHZlci5jcHAKQEAgLTM2MTYsOCArMzYxNiw4IEBAIFN0eWxlUmVzb2x2
ZXI6Ok1hdGNoZWRQcm9wZXJ0aWVzOjp+TWF0Y2hlZFByb3BlcnRpZXMoKQogCiBpbnQgU3R5bGVS
ZXNvbHZlcjo6dmlld3BvcnRQZXJjZW50YWdlVmFsdWUoQ1NTUHJpbWl0aXZlVmFsdWUmIHVuaXQs
IGludCBwZXJjZW50YWdlKQogewotICAgIGludCB2aWV3UG9ydEhlaWdodCA9IGRvY3VtZW50KCku
cmVuZGVyVmlldygpLT52aWV3cG9ydFNpemUoKS5oZWlnaHQoKSAqIHBlcmNlbnRhZ2UgLyAxMDAu
MGY7Ci0gICAgaW50IHZpZXdQb3J0V2lkdGggPSBkb2N1bWVudCgpLnJlbmRlclZpZXcoKS0+dmll
d3BvcnRTaXplKCkud2lkdGgoKSAqIHBlcmNlbnRhZ2UgLyAxMDAuMGY7CisgICAgaW50IHZpZXdQ
b3J0SGVpZ2h0ID0gZG9jdW1lbnQoKS5yZW5kZXJWaWV3KCktPnZpZXdwb3J0U2l6ZUZvckNTU1Zp
ZXdwb3J0VW5pdHMoKS5oZWlnaHQoKSAqIHBlcmNlbnRhZ2UgLyAxMDAuMGY7CisgICAgaW50IHZp
ZXdQb3J0V2lkdGggPSBkb2N1bWVudCgpLnJlbmRlclZpZXcoKS0+dmlld3BvcnRTaXplRm9yQ1NT
Vmlld3BvcnRVbml0cygpLndpZHRoKCkgKiBwZXJjZW50YWdlIC8gMTAwLjBmOwogCiAgICAgaWYg
KHVuaXQuaXNWaWV3cG9ydFBlcmNlbnRhZ2VIZWlnaHQoKSkKICAgICAgICAgcmV0dXJuIHZpZXdQ
b3J0SGVpZ2h0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1ZpZXdwb3J0QXJndW1l
bnRzLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vVmlld3BvcnRBcmd1bWVudHMuaAppbmRleCA3NzAw
NzkwMTcyNzc0YmZjYjU1OTQ4YjFlOTM1ZWU2N2FjMzY4MGJlLi5hMDE4MTUyNzUwNzBkNzcxODM5
ZDlmYzRjNzM3OTE4MDA0NTU2ZTMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vVmll
d3BvcnRBcmd1bWVudHMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vVmlld3BvcnRBcmd1bWVu
dHMuaApAQCAtMTE1LDEwICsxMTUsNiBAQCBzdHJ1Y3QgVmlld3BvcnRBcmd1bWVudHMgewogICAg
IHsKICAgICAgICAgLy8gVXNlZCBmb3IgZmlndXJpbmcgb3V0IHdoZXRoZXIgdG8gcmVzZXQgdGhl
IHZpZXdwb3J0IG9yIG5vdCwKICAgICAgICAgLy8gdGh1cyB3ZSBhcmUgbm90IHRha2luZyB0eXBl
IGludG8gYWNjb3VudC4KLSNpZiBQTEFURk9STShJT1MpCi0gICAgICAgIC8vIFdlIGlnbm9yZSBt
aW5pbWFsVUkgZm9yIHRoZSBzYW1lIHJlYXNvbiAtLSBpdCBpcyBhIGhpZ2hlci1sZXZlbAotICAg
ICAgICAvLyBwcm9wZXJ0eSB0aGF0IGRvZXNuJ3QgYWZmZWN0IHRoZSBhY3R1YWwgdmlld3BvcnQu
Ci0jZW5kaWYKICAgICAgICAgcmV0dXJuIHdpZHRoID09IG90aGVyLndpZHRoCiAgICAgICAgICAg
ICAmJiBtaW5XaWR0aCA9PSBvdGhlci5taW5XaWR0aAogICAgICAgICAgICAgJiYgbWF4V2lkdGgg
PT0gb3RoZXIubWF4V2lkdGgKQEAgLTEyOSw2ICsxMjUsOSBAQCBzdHJ1Y3QgVmlld3BvcnRBcmd1
bWVudHMgewogICAgICAgICAgICAgJiYgbWluWm9vbSA9PSBvdGhlci5taW5ab29tCiAgICAgICAg
ICAgICAmJiBtYXhab29tID09IG90aGVyLm1heFpvb20KICAgICAgICAgICAgICYmIHVzZXJab29t
ID09IG90aGVyLnVzZXJab29tCisjaWYgUExBVEZPUk0oSU9TKQorICAgICAgICAgICAgJiYgbWlu
aW1hbFVJID09IG90aGVyLm1pbmltYWxVSQorI2VuZGlmCiAgICAgICAgICAgICAmJiBvcmllbnRh
dGlvbiA9PSBvdGhlci5vcmllbnRhdGlvbjsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3
LmNwcAppbmRleCBmMWU4ZTcyM2JjZTI0NGU1MjBkMmUzODZlMzg0NDEzZjExM2MyN2YwLi5kYWJh
NzY3Y2YxOWJhZDc1MmIwZjY2ZjEwZTlmYmE2ZTRmYWEwZDFjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFt
ZVZpZXcuY3BwCkBAIC00Mzk4LDcgKzQzOTgsNyBAQCB2b2lkIEZyYW1lVmlldzo6c2V0RXhwb3Nl
ZFJlY3QoRmxvYXRSZWN0IGV4cG9zZWRSZWN0KQogICAgICAgICB2aWV3LT5jb21wb3NpdG9yKCku
c2NoZWR1bGVMYXllckZsdXNoKGZhbHNlIC8qIGNhblRocm90dGxlICovKTsKIH0KICAgICAKLXZv
aWQgRnJhbWVWaWV3OjpzZXRWaWV3cG9ydFNpemUoSW50U2l6ZSBzaXplKQordm9pZCBGcmFtZVZp
ZXc6OnNldFZpZXdwb3J0U2l6ZUZvckNTU1ZpZXdwb3J0VW5pdHMoSW50U2l6ZSBzaXplKQogewog
ICAgIGlmIChtX2hhc092ZXJyaWRlVmlld3BvcnRTaXplICYmIG1fb3ZlcnJpZGVWaWV3cG9ydFNp
emUgPT0gc2l6ZSkKICAgICAgICAgcmV0dXJuOwpAQCAtNDQxMCw3ICs0NDEwLDcgQEAgdm9pZCBG
cmFtZVZpZXc6OnNldFZpZXdwb3J0U2l6ZShJbnRTaXplIHNpemUpCiAgICAgICAgIGRvY3VtZW50
LT5zdHlsZVJlc29sdmVyQ2hhbmdlZChEZWZlclJlY2FsY1N0eWxlKTsKIH0KICAgICAKLUludFNp
emUgRnJhbWVWaWV3Ojp2aWV3cG9ydFNpemUoKSBjb25zdAorSW50U2l6ZSBGcmFtZVZpZXc6OnZp
ZXdwb3J0U2l6ZUZvckNTU1ZpZXdwb3J0VW5pdHMoKSBjb25zdAogewogICAgIGlmIChtX2hhc092
ZXJyaWRlVmlld3BvcnRTaXplKQogICAgICAgICByZXR1cm4gbV9vdmVycmlkZVZpZXdwb3J0U2l6
ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmggYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5oCmluZGV4IDkzMzhiODRlODliY2Q3ODQyYThhMWQ4OWFj
ZWNhMThkYzAzNzY0NjAuLjRlMDQ0M2Y3NDkzNjljOThmYjE4NDIzMWU2NTQzMWE1NmM2M2RlNWYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuaApAQCAtMjIwLDggKzIyMCw4IEBAIHB1YmxpYzoKIAog
ICAgIHZvaWQgYWRqdXN0Vmlld1NpemUoKTsKICAgICAKLSAgICB2b2lkIHNldFZpZXdwb3J0U2l6
ZShJbnRTaXplKTsKLSAgICBJbnRTaXplIHZpZXdwb3J0U2l6ZSgpIGNvbnN0OworICAgIHZvaWQg
c2V0Vmlld3BvcnRTaXplRm9yQ1NTVmlld3BvcnRVbml0cyhJbnRTaXplKTsKKyAgICBJbnRTaXpl
IHZpZXdwb3J0U2l6ZUZvckNTU1ZpZXdwb3J0VW5pdHMoKSBjb25zdDsKICAgICAKICAgICB2aXJ0
dWFsIEludFJlY3Qgd2luZG93Q2xpcFJlY3QoYm9vbCBjbGlwVG9Db250ZW50cyA9IHRydWUpIGNv
bnN0IG92ZXJyaWRlOwogICAgIEludFJlY3Qgd2luZG93Q2xpcFJlY3RGb3JGcmFtZU93bmVyKGNv
bnN0IEhUTUxGcmFtZU93bmVyRWxlbWVudCosIGJvb2wgY2xpcFRvTGF5ZXJDb250ZW50cykgY29u
c3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1ZpZXdwb3J0Q29uZmlndXJhdGlv
bi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1ZpZXdwb3J0Q29uZmlndXJhdGlvbi5jcHAKaW5k
ZXggYTllOGYzYjBiOWFhMDVmMjBjMzBhY2JmODU3YjBiZDhkNmYyYWJlMC4uMjI3OWQ2OGFlNTUz
ODhlODM3NGE4NmRkMzdkMjAzMzI1MjQ2N2ZkMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGFnZS9WaWV3cG9ydENvbmZpZ3VyYXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
Vmlld3BvcnRDb25maWd1cmF0aW9uLmNwcApAQCAtNDYsNiArNDYsOSBAQCBzdGF0aWMgYm9vbCBj
b25zdHJhaW50c0FyZUFsbFJlbGF0aXZlKGNvbnN0IFZpZXdwb3J0Q29uZmlndXJhdGlvbjo6UGFy
YW1ldGVycyYgYwogCiBWaWV3cG9ydENvbmZpZ3VyYXRpb246OlZpZXdwb3J0Q29uZmlndXJhdGlv
bigpCiAgICAgOiBtX21pbmltdW1MYXlvdXRTaXplKDEwMjQsIDc2OCkKKyAgICAsIG1fbWluaW11
bUxheW91dFNpemVGb3JNaW5pbWFsVUkobV9taW5pbXVtTGF5b3V0U2l6ZSkKKyAgICAsIG1fdXNl
c01pbmltYWxVSShmYWxzZSkKKyAgICAsIG1fZmlyc3RGcmFtZVJlbmRlcmVkKGZhbHNlKQogewog
ICAgIC8vIFNldHVwIGEgcmVhc29uYWJsZSBkZWZhdWx0IGNvbmZpZ3VyYXRpb24gdG8gYXZvaWQg
Y29tcHV0aW5nIGluZmluaXRlIHNjYWxlL3NpemVzLgogICAgIC8vIFRob3NlIGFyZSB0aGUgb3Jp
Z2luYWwgaVBob25lIGNvbmZpZ3VyYXRpb24uCkBAIC03OSw3ICs4MiwyMSBAQCB2b2lkIFZpZXdw
b3J0Q29uZmlndXJhdGlvbjo6c2V0TWluaW11bUxheW91dFNpemUoY29uc3QgRmxvYXRTaXplJiBt
aW5pbXVtTGF5b3V0UwogICAgICAgICByZXR1cm47CiAKICAgICBtX21pbmltdW1MYXlvdXRTaXpl
ID0gbWluaW11bUxheW91dFNpemU7Ci0gICAgdXBkYXRlQ29uZmlndXJhdGlvbigpOworfQorCit2
b2lkIFZpZXdwb3J0Q29uZmlndXJhdGlvbjo6c2V0TWluaW11bUxheW91dFNpemVGb3JNaW5pbWFs
VUkoY29uc3QgRmxvYXRTaXplJiBtaW5pbXVtTGF5b3V0U2l6ZUZvck1pbmltYWxVSSkKK3sKKyAg
ICBpZiAobV9taW5pbXVtTGF5b3V0U2l6ZUZvck1pbmltYWxVSSA9PSBtaW5pbXVtTGF5b3V0U2l6
ZUZvck1pbmltYWxVSSkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9taW5pbXVtTGF5b3V0U2l6
ZUZvck1pbmltYWxVSSA9IG1pbmltdW1MYXlvdXRTaXplRm9yTWluaW1hbFVJOworfQorCitjb25z
dCBGbG9hdFNpemUmIFZpZXdwb3J0Q29uZmlndXJhdGlvbjo6YWN0aXZlTWluaW11bUxheW91dFNp
emVJblNjcm9sbFZpZXdDb29yZGluYXRlcygpIGNvbnN0Cit7CisgICAgaWYgKG1fdXNlc01pbmlt
YWxVSSkKKyAgICAgICAgcmV0dXJuIG1fbWluaW11bUxheW91dFNpemVGb3JNaW5pbWFsVUk7Cisg
ICAgcmV0dXJuIG1fbWluaW11bUxheW91dFNpemU7CiB9CiAKIHZvaWQgVmlld3BvcnRDb25maWd1
cmF0aW9uOjpzZXRWaWV3cG9ydEFyZ3VtZW50cyhjb25zdCBWaWV3cG9ydEFyZ3VtZW50cyYgdmll
d3BvcnRBcmd1bWVudHMpCkBAIC05MSw2ICsxMDgsMjAgQEAgdm9pZCBWaWV3cG9ydENvbmZpZ3Vy
YXRpb246OnNldFZpZXdwb3J0QXJndW1lbnRzKGNvbnN0IFZpZXdwb3J0QXJndW1lbnRzJiB2aWV3
cG8KICAgICB1cGRhdGVDb25maWd1cmF0aW9uKCk7CiB9CiAKK3ZvaWQgVmlld3BvcnRDb25maWd1
cmF0aW9uOjpyZXNldE1pbmltYWxVSSgpCit7CisgICAgbV91c2VzTWluaW1hbFVJID0gZmFsc2U7
CisgICAgbV9maXJzdEZyYW1lUmVuZGVyZWQgPSBmYWxzZTsKK30KKwordm9pZCBWaWV3cG9ydENv
bmZpZ3VyYXRpb246OmRpZEZpcnN0UmVuZGVyKCkKK3sKKyAgICBpZiAobV9maXJzdEZyYW1lUmVu
ZGVyZWQpCisgICAgICAgIHJldHVybjsKKworICAgIG1fZmlyc3RGcmFtZVJlbmRlcmVkID0gdHJ1
ZTsKK30KKwogSW50U2l6ZSBWaWV3cG9ydENvbmZpZ3VyYXRpb246OmxheW91dFNpemUoKSBjb25z
dAogewogICAgIHJldHVybiBJbnRTaXplKGxheW91dFdpZHRoKCksIGxheW91dEhlaWdodCgpKTsK
QEAgLTEwNywxNSArMTM4LDE2IEBAIGRvdWJsZSBWaWV3cG9ydENvbmZpZ3VyYXRpb246OmluaXRp
YWxTY2FsZSgpIGNvbnN0CiAKICAgICAvLyBJZiBub3QsIGl0IGlzIHVwIHRvIHVzIHRvIGRldGVy
bWluZSB0aGUgaW5pdGlhbCBzY2FsZS4KICAgICAvLyBXZSB3YW50IGEgc2NhbGUgc21hbGwgZW5v
dWdoIHRvIGZpdCB0aGUgZG9jdW1lbnQgd2lkdGgtd2lzZS4KKyAgICBjb25zdCBGbG9hdFNpemUm
IG1pbmltdW1MYXlvdXRTaXplID0gYWN0aXZlTWluaW11bUxheW91dFNpemVJblNjcm9sbFZpZXdD
b29yZGluYXRlcygpOwogICAgIGRvdWJsZSB3aWR0aCA9IG1fY29udGVudFNpemUud2lkdGgoKSA+
IDAgPyBtX2NvbnRlbnRTaXplLndpZHRoKCkgOiBsYXlvdXRXaWR0aCgpOwogICAgIGRvdWJsZSBp
bml0aWFsU2NhbGUgPSAwOwogICAgIGlmICh3aWR0aCA+IDApCi0gICAgICAgIGluaXRpYWxTY2Fs
ZSA9IG1fbWluaW11bUxheW91dFNpemUud2lkdGgoKSAvIHdpZHRoOworICAgICAgICBpbml0aWFs
U2NhbGUgPSBtaW5pbXVtTGF5b3V0U2l6ZS53aWR0aCgpIC8gd2lkdGg7CiAKICAgICAvLyBQcmV2
ZW50IHRoZSBpbnRpYWwgc2NhbGUgZnJvbSBzaHJpbmtpbmcgdG8gYSBoZWlnaHQgc21hbGxlciB0
aGFuIG91ciB2aWV3J3MgbWluaW11bSBoZWlnaHQuCiAgICAgZG91YmxlIGhlaWdodCA9IG1fY29u
dGVudFNpemUuaGVpZ2h0KCkgPiAwID8gbV9jb250ZW50U2l6ZS5oZWlnaHQoKSA6IGxheW91dEhl
aWdodCgpOwotICAgIGlmIChoZWlnaHQgPiAwICYmIGhlaWdodCAqIGluaXRpYWxTY2FsZSA8IG1f
bWluaW11bUxheW91dFNpemUuaGVpZ2h0KCkpCi0gICAgICAgIGluaXRpYWxTY2FsZSA9IG1fbWlu
aW11bUxheW91dFNpemUuaGVpZ2h0KCkgLyBoZWlnaHQ7CisgICAgaWYgKGhlaWdodCA+IDAgJiYg
aGVpZ2h0ICogaW5pdGlhbFNjYWxlIDwgbWluaW11bUxheW91dFNpemUuaGVpZ2h0KCkpCisgICAg
ICAgIGluaXRpYWxTY2FsZSA9IG1pbmltdW1MYXlvdXRTaXplLmhlaWdodCgpIC8gaGVpZ2h0Owog
ICAgIHJldHVybiBzdGQ6Om1pbihzdGQ6Om1heChpbml0aWFsU2NhbGUsIG1fY29uZmlndXJhdGlv
bi5taW5pbXVtU2NhbGUpLCBtX2NvbmZpZ3VyYXRpb24ubWF4aW11bVNjYWxlKTsKIH0KIApAQCAt
MTI4LDEzICsxNjAsMTQgQEAgZG91YmxlIFZpZXdwb3J0Q29uZmlndXJhdGlvbjo6bWluaW11bVNj
YWxlKCkgY29uc3QKICAgICAvLyBJZiBub3QsIHdlIHN0aWxsIG5lZWQgdG8gc2FuaXR5IGNoZWNr
IG91ciB2YWx1ZS4KICAgICBkb3VibGUgbWluaW11bVNjYWxlID0gbV9jb25maWd1cmF0aW9uLm1p
bmltdW1TY2FsZTsKIAorICAgIGNvbnN0IEZsb2F0U2l6ZSYgbWluaW11bUxheW91dFNpemUgPSBh
Y3RpdmVNaW5pbXVtTGF5b3V0U2l6ZUluU2Nyb2xsVmlld0Nvb3JkaW5hdGVzKCk7CiAgICAgZG91
YmxlIGNvbnRlbnRXaWR0aCA9IG1fY29udGVudFNpemUud2lkdGgoKTsKLSAgICBpZiAoY29udGVu
dFdpZHRoID4gMCAmJiBjb250ZW50V2lkdGggKiBtaW5pbXVtU2NhbGUgPCBtX21pbmltdW1MYXlv
dXRTaXplLndpZHRoKCkpCi0gICAgICAgIG1pbmltdW1TY2FsZSA9IG1fbWluaW11bUxheW91dFNp
emUud2lkdGgoKSAvIGNvbnRlbnRXaWR0aDsKKyAgICBpZiAoY29udGVudFdpZHRoID4gMCAmJiBj
b250ZW50V2lkdGggKiBtaW5pbXVtU2NhbGUgPCBtaW5pbXVtTGF5b3V0U2l6ZS53aWR0aCgpKQor
ICAgICAgICBtaW5pbXVtU2NhbGUgPSBtaW5pbXVtTGF5b3V0U2l6ZS53aWR0aCgpIC8gY29udGVu
dFdpZHRoOwogCiAgICAgZG91YmxlIGNvbnRlbnRIZWlnaHQgPSBtX2NvbnRlbnRTaXplLmhlaWdo
dCgpOwotICAgIGlmIChjb250ZW50SGVpZ2h0ID4gMCAmJiBjb250ZW50SGVpZ2h0ICogbWluaW11
bVNjYWxlIDwgbV9taW5pbXVtTGF5b3V0U2l6ZS5oZWlnaHQoKSkKLSAgICAgICAgbWluaW11bVNj
YWxlID0gbV9taW5pbXVtTGF5b3V0U2l6ZS5oZWlnaHQoKSAvIGNvbnRlbnRIZWlnaHQ7CisgICAg
aWYgKGNvbnRlbnRIZWlnaHQgPiAwICYmIGNvbnRlbnRIZWlnaHQgKiBtaW5pbXVtU2NhbGUgPCBt
aW5pbXVtTGF5b3V0U2l6ZS5oZWlnaHQoKSkKKyAgICAgICAgbWluaW11bVNjYWxlID0gbWluaW11
bUxheW91dFNpemUuaGVpZ2h0KCkgLyBjb250ZW50SGVpZ2h0OwogCiAgICAgbWluaW11bVNjYWxl
ID0gc3RkOjptaW4oc3RkOjptYXgobWluaW11bVNjYWxlLCBtX2NvbmZpZ3VyYXRpb24ubWluaW11
bVNjYWxlKSwgbV9jb25maWd1cmF0aW9uLm1heGltdW1TY2FsZSk7CiAKQEAgLTI0Myw3NiArMjc2
LDgxIEBAIHZvaWQgVmlld3BvcnRDb25maWd1cmF0aW9uOjp1cGRhdGVDb25maWd1cmF0aW9uKCkK
IAogICAgIGlmICh2aWV3cG9ydEFyZ3VtZW50VXNlclpvb21Jc1NldChtX3ZpZXdwb3J0QXJndW1l
bnRzLnVzZXJab29tKSkKICAgICAgICAgbV9jb25maWd1cmF0aW9uLmFsbG93c1VzZXJTY2FsaW5n
ID0gbV92aWV3cG9ydEFyZ3VtZW50cy51c2VyWm9vbSAhPSAwLjsKKworICAgIGlmICghbV9maXJz
dEZyYW1lUmVuZGVyZWQpCisgICAgICAgIG1fdXNlc01pbmltYWxVSSA9IG1fdmlld3BvcnRBcmd1
bWVudHMubWluaW1hbFVJOwogfQogCiBpbnQgVmlld3BvcnRDb25maWd1cmF0aW9uOjpsYXlvdXRX
aWR0aCgpIGNvbnN0CiB7CiAgICAgQVNTRVJUKCFjb25zdHJhaW50c0FyZUFsbFJlbGF0aXZlKG1f
Y29uZmlndXJhdGlvbikpOwogCisgICAgY29uc3QgRmxvYXRTaXplJiBtaW5pbXVtTGF5b3V0U2l6
ZSA9IGFjdGl2ZU1pbmltdW1MYXlvdXRTaXplSW5TY3JvbGxWaWV3Q29vcmRpbmF0ZXMoKTsKICAg
ICBpZiAobV9jb25maWd1cmF0aW9uLndpZHRoSXNTZXQpIHsKICAgICAgICAgLy8gSWYgd2Ugc2Nh
bGUgdG8gZml0LCB0aGVuIGFjY2VwdCB0aGUgdmlld3BvcnQgd2lkdGggd2l0aCBzYW5pdHkgY2hl
Y2tpbmcuCiAgICAgICAgIGlmICghbV9jb25maWd1cmF0aW9uLmluaXRpYWxTY2FsZUlzU2V0KSB7
CiAgICAgICAgICAgICBkb3VibGUgbWF4aW11bVNjYWxlID0gdGhpcy0+bWF4aW11bVNjYWxlKCk7
CiAgICAgICAgICAgICBkb3VibGUgbWF4aW11bUNvbnRlbnRXaWR0aEluVmlld3BvcnRDb29yZGlu
YXRlID0gbWF4aW11bVNjYWxlICogbV9jb25maWd1cmF0aW9uLndpZHRoOwotICAgICAgICAgICAg
aWYgKG1heGltdW1Db250ZW50V2lkdGhJblZpZXdwb3J0Q29vcmRpbmF0ZSA8IG1fbWluaW11bUxh
eW91dFNpemUud2lkdGgoKSkgeworICAgICAgICAgICAgaWYgKG1heGltdW1Db250ZW50V2lkdGhJ
blZpZXdwb3J0Q29vcmRpbmF0ZSA8IG1pbmltdW1MYXlvdXRTaXplLndpZHRoKCkpIHsKICAgICAg
ICAgICAgICAgICAvLyBUaGUgY29udGVudCB6b29tZWQgdG8gbWF4U2NhbGUgZG9lcyBub3QgZml0
IHRoZSB0aGUgdmlldy4gUmV0dXJuIHRoZSBtaW5pbXVtIHdpZHRoCiAgICAgICAgICAgICAgICAg
Ly8gc2F0aXNmeWluZyB0aGUgY29uc3RyYWludCBtYXhpbXVtU2NhbGUuCi0gICAgICAgICAgICAg
ICAgcmV0dXJuIHN0ZDo6cm91bmQobV9taW5pbXVtTGF5b3V0U2l6ZS53aWR0aCgpIC8gbWF4aW11
bVNjYWxlKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gc3RkOjpyb3VuZChtaW5pbXVtTGF5b3V0
U2l6ZS53aWR0aCgpIC8gbWF4aW11bVNjYWxlKTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAg
IHJldHVybiBzdGQ6OnJvdW5kKG1fY29uZmlndXJhdGlvbi53aWR0aCk7CiAgICAgICAgIH0KIAog
ICAgICAgICAvLyBJZiBub3QsIG1ha2Ugc3VyZSB0aGUgdmlld3BvcnQgd2lkdGggYW5kIGluaXRp
YWwgc2NhbGUgY2FuIGNvLWV4aXN0LgogICAgICAgICBkb3VibGUgaW5pdGlhbENvbnRlbnRXaWR0
aEluVmlld3BvcnRDb29yZGluYXRlID0gbV9jb25maWd1cmF0aW9uLndpZHRoICogbV9jb25maWd1
cmF0aW9uLmluaXRpYWxTY2FsZTsKLSAgICAgICAgaWYgKGluaXRpYWxDb250ZW50V2lkdGhJblZp
ZXdwb3J0Q29vcmRpbmF0ZSA8IG1fbWluaW11bUxheW91dFNpemUud2lkdGgoKSkgeworICAgICAg
ICBpZiAoaW5pdGlhbENvbnRlbnRXaWR0aEluVmlld3BvcnRDb29yZGluYXRlIDwgbWluaW11bUxh
eW91dFNpemUud2lkdGgoKSkgewogICAgICAgICAgICAgLy8gVGhlIHNwZWNpZmllZCB3aWR0aCBk
b2VzIG5vdCBmaXQgaW4gdmlld3BvcnQuIFJldHVybiB0aGUgbWluaW11bSB3aWR0aCB0aGF0IHNh
dGlzZnkgdGhlIGluaXRpYWxTY2FsZSBjb25zdHJhaW50LgotICAgICAgICAgICAgcmV0dXJuIHN0
ZDo6cm91bmQobV9taW5pbXVtTGF5b3V0U2l6ZS53aWR0aCgpIC8gbV9jb25maWd1cmF0aW9uLmlu
aXRpYWxTY2FsZSk7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpyb3VuZChtaW5pbXVtTGF5b3V0
U2l6ZS53aWR0aCgpIC8gbV9jb25maWd1cmF0aW9uLmluaXRpYWxTY2FsZSk7CiAgICAgICAgIH0K
ICAgICAgICAgcmV0dXJuIHN0ZDo6cm91bmQobV9jb25maWd1cmF0aW9uLndpZHRoKTsKICAgICB9
CiAKICAgICAvLyBJZiB0aGUgcGFnZSBoYXMgYSByZWFsIHNjYWxlLCB0aGVuIGp1c3QgcmV0dXJu
IHRoZSBtaW5pbXVtIHNpemUgb3ZlciB0aGUgaW5pdGlhbCBzY2FsZS4KICAgICBpZiAobV9jb25m
aWd1cmF0aW9uLmluaXRpYWxTY2FsZUlzU2V0ICYmICFtX2NvbmZpZ3VyYXRpb24uaGVpZ2h0SXNT
ZXQpCi0gICAgICAgIHJldHVybiBzdGQ6OnJvdW5kKG1fbWluaW11bUxheW91dFNpemUud2lkdGgo
KSAvIG1fY29uZmlndXJhdGlvbi5pbml0aWFsU2NhbGUpOworICAgICAgICByZXR1cm4gc3RkOjpy
b3VuZChtaW5pbXVtTGF5b3V0U2l6ZS53aWR0aCgpIC8gbV9jb25maWd1cmF0aW9uLmluaXRpYWxT
Y2FsZSk7CiAKLSAgICBpZiAobV9taW5pbXVtTGF5b3V0U2l6ZS5oZWlnaHQoKSA+IDApCi0gICAg
ICAgIHJldHVybiBzdGQ6OnJvdW5kKG1fbWluaW11bUxheW91dFNpemUud2lkdGgoKSAqIGxheW91
dEhlaWdodCgpIC8gbV9taW5pbXVtTGF5b3V0U2l6ZS5oZWlnaHQoKSk7Ci0gICAgcmV0dXJuIG1f
bWluaW11bUxheW91dFNpemUud2lkdGgoKTsKKyAgICBpZiAobWluaW11bUxheW91dFNpemUuaGVp
Z2h0KCkgPiAwKQorICAgICAgICByZXR1cm4gc3RkOjpyb3VuZChtaW5pbXVtTGF5b3V0U2l6ZS53
aWR0aCgpICogbGF5b3V0SGVpZ2h0KCkgLyBtaW5pbXVtTGF5b3V0U2l6ZS5oZWlnaHQoKSk7Cisg
ICAgcmV0dXJuIG1pbmltdW1MYXlvdXRTaXplLndpZHRoKCk7CiB9CiAKIGludCBWaWV3cG9ydENv
bmZpZ3VyYXRpb246OmxheW91dEhlaWdodCgpIGNvbnN0CiB7CiAgICAgQVNTRVJUKCFjb25zdHJh
aW50c0FyZUFsbFJlbGF0aXZlKG1fY29uZmlndXJhdGlvbikpOwogCisgICAgY29uc3QgRmxvYXRT
aXplJiBtaW5pbXVtTGF5b3V0U2l6ZSA9IGFjdGl2ZU1pbmltdW1MYXlvdXRTaXplSW5TY3JvbGxW
aWV3Q29vcmRpbmF0ZXMoKTsKICAgICBpZiAobV9jb25maWd1cmF0aW9uLmhlaWdodElzU2V0KSB7
CiAgICAgICAgIC8vIElmIHdlIHNjYWxlIHRvIGZpdCwgdGhlbiBhY2NlcHQgdGhlIHZpZXdwb3J0
IGhlaWdodCB3aXRoIHNhbml0eSBjaGVja2luZy4KICAgICAgICAgaWYgKCFtX2NvbmZpZ3VyYXRp
b24uaW5pdGlhbFNjYWxlSXNTZXQpIHsKICAgICAgICAgICAgIGRvdWJsZSBtYXhpbXVtU2NhbGUg
PSB0aGlzLT5tYXhpbXVtU2NhbGUoKTsKICAgICAgICAgICAgIGRvdWJsZSBtYXhpbXVtQ29udGVu
dEhlaWdodEluVmlld3BvcnRDb29yZGluYXRlID0gbWF4aW11bVNjYWxlICogbV9jb25maWd1cmF0
aW9uLmhlaWdodDsKLSAgICAgICAgICAgIGlmIChtYXhpbXVtQ29udGVudEhlaWdodEluVmlld3Bv
cnRDb29yZGluYXRlIDwgbV9taW5pbXVtTGF5b3V0U2l6ZS5oZWlnaHQoKSkgeworICAgICAgICAg
ICAgaWYgKG1heGltdW1Db250ZW50SGVpZ2h0SW5WaWV3cG9ydENvb3JkaW5hdGUgPCBtaW5pbXVt
TGF5b3V0U2l6ZS5oZWlnaHQoKSkgewogICAgICAgICAgICAgICAgIC8vIFRoZSBjb250ZW50IHpv
b21lZCB0byBtYXhTY2FsZSBkb2VzIG5vdCBmaXQgdGhlIHRoZSB2aWV3LiBSZXR1cm4gdGhlIG1p
bmltdW0gaGVpZ2h0IHRoYXQKICAgICAgICAgICAgICAgICAvLyBzYXRpc2Z5IHRoZSBjb25zdHJh
aW50IG1heGltdW1TY2FsZS4KLSAgICAgICAgICAgICAgICByZXR1cm4gc3RkOjpyb3VuZChtX21p
bmltdW1MYXlvdXRTaXplLmhlaWdodCgpIC8gbWF4aW11bVNjYWxlKTsKKyAgICAgICAgICAgICAg
ICByZXR1cm4gc3RkOjpyb3VuZChtaW5pbXVtTGF5b3V0U2l6ZS5oZWlnaHQoKSAvIG1heGltdW1T
Y2FsZSk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICByZXR1cm4gc3RkOjpyb3VuZChtX2Nv
bmZpZ3VyYXRpb24uaGVpZ2h0KTsKICAgICAgICAgfQogCiAgICAgICAgIC8vIElmIG5vdCwgbWFr
ZSBzdXJlIHRoZSB2aWV3cG9ydCB3aWR0aCBhbmQgaW5pdGlhbCBzY2FsZSBjYW4gY28tZXhpc3Qu
CiAgICAgICAgIGRvdWJsZSBpbml0aWFsQ29udGVudEhlaWdodEluVmlld3BvcnRDb29yZGluYXRl
ID0gbV9jb25maWd1cmF0aW9uLmhlaWdodCAqIG1fY29uZmlndXJhdGlvbi5pbml0aWFsU2NhbGU7
Ci0gICAgICAgIGlmIChpbml0aWFsQ29udGVudEhlaWdodEluVmlld3BvcnRDb29yZGluYXRlIDwg
bV9taW5pbXVtTGF5b3V0U2l6ZS5oZWlnaHQoKSkgeworICAgICAgICBpZiAoaW5pdGlhbENvbnRl
bnRIZWlnaHRJblZpZXdwb3J0Q29vcmRpbmF0ZSA8IG1pbmltdW1MYXlvdXRTaXplLmhlaWdodCgp
KSB7CiAgICAgICAgICAgICAvLyBUaGUgc3BlY2lmaWVkIHdpZHRoIGRvZXMgbm90IGZpdCBpbiB2
aWV3cG9ydC4gUmV0dXJuIHRoZSBtaW5pbXVtIGhlaWdodCB0aGF0IHNhdGlzZnkgdGhlIGluaXRp
YWxTY2FsZSBjb25zdHJhaW50LgotICAgICAgICAgICAgcmV0dXJuIHN0ZDo6cm91bmQobV9taW5p
bXVtTGF5b3V0U2l6ZS5oZWlnaHQoKSAvIG1fY29uZmlndXJhdGlvbi5pbml0aWFsU2NhbGUpOwor
ICAgICAgICAgICAgcmV0dXJuIHN0ZDo6cm91bmQobWluaW11bUxheW91dFNpemUuaGVpZ2h0KCkg
LyBtX2NvbmZpZ3VyYXRpb24uaW5pdGlhbFNjYWxlKTsKICAgICAgICAgfQogICAgICAgICByZXR1
cm4gc3RkOjpyb3VuZChtX2NvbmZpZ3VyYXRpb24uaGVpZ2h0KTsKICAgICB9CiAKICAgICAvLyBJ
ZiB0aGUgcGFnZSBoYXMgYSByZWFsIHNjYWxlLCB0aGVuIGp1c3QgcmV0dXJuIHRoZSBtaW5pbXVt
IHNpemUgb3ZlciB0aGUgaW5pdGlhbCBzY2FsZS4KICAgICBpZiAobV9jb25maWd1cmF0aW9uLmlu
aXRpYWxTY2FsZUlzU2V0ICYmICFtX2NvbmZpZ3VyYXRpb24ud2lkdGhJc1NldCkKLSAgICAgICAg
cmV0dXJuIHN0ZDo6cm91bmQobV9taW5pbXVtTGF5b3V0U2l6ZS5oZWlnaHQoKSAvIG1fY29uZmln
dXJhdGlvbi5pbml0aWFsU2NhbGUpOworICAgICAgICByZXR1cm4gc3RkOjpyb3VuZChtaW5pbXVt
TGF5b3V0U2l6ZS5oZWlnaHQoKSAvIG1fY29uZmlndXJhdGlvbi5pbml0aWFsU2NhbGUpOwogCi0g
ICAgaWYgKG1fbWluaW11bUxheW91dFNpemUud2lkdGgoKSA+IDApCi0gICAgICAgIHJldHVybiBz
dGQ6OnJvdW5kKG1fbWluaW11bUxheW91dFNpemUuaGVpZ2h0KCkgKiBsYXlvdXRXaWR0aCgpIC8g
bV9taW5pbXVtTGF5b3V0U2l6ZS53aWR0aCgpKTsKLSAgICByZXR1cm4gbV9taW5pbXVtTGF5b3V0
U2l6ZS5oZWlnaHQoKTsKKyAgICBpZiAobWluaW11bUxheW91dFNpemUud2lkdGgoKSA+IDApCisg
ICAgICAgIHJldHVybiBzdGQ6OnJvdW5kKG1pbmltdW1MYXlvdXRTaXplLmhlaWdodCgpICogbGF5
b3V0V2lkdGgoKSAvIG1pbmltdW1MYXlvdXRTaXplLndpZHRoKCkpOworICAgIHJldHVybiBtaW5p
bXVtTGF5b3V0U2l6ZS5oZWlnaHQoKTsKIH0KIAogI2lmbmRlZiBOREVCVUcKQEAgLTQzNSw2ICs0
NzMsOCBAQCBDU3RyaW5nIFZpZXdwb3J0Q29uZmlndXJhdGlvbjo6ZGVzY3JpcHRpb24oKSBjb25z
dAogCiAgICAgZHVtcFByb3BlcnR5KHRzLCAiY29udGVudFNpemUiLCBtX2NvbnRlbnRTaXplKTsK
ICAgICBkdW1wUHJvcGVydHkodHMsICJtaW5pbXVtTGF5b3V0U2l6ZSIsIG1fbWluaW11bUxheW91
dFNpemUpOworICAgIGR1bXBQcm9wZXJ0eSh0cywgIm1pbmltdW1MYXlvdXRTaXplRm9yTWluaW1h
bFVJIiwgbV9taW5pbXVtTGF5b3V0U2l6ZUZvck1pbmltYWxVSSk7CisgICAgdHMgPDwgIih1c2Vz
IG1pbmltYWwgVUkgIiA8PCBtX3VzZXNNaW5pbWFsVUkgPDwgIikiOwogCiAgICAgdHMgPDwgIlxu
IjsKICAgICB0cy5pbmNyZWFzZUluZGVudCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGFnZS9WaWV3cG9ydENvbmZpZ3VyYXRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvVmlld3Bv
cnRDb25maWd1cmF0aW9uLmgKaW5kZXggZWFhNWJmNDQ4ZTA2MWY3Y2QwY2E3ZDdjYTkxY2U3MmRm
NTY0OWU2Ny4uMTNjMDhmMzhjODc4ODU3YjI3OGZmYWQ3YzU0MWFlNDAyNTc0YTg4NSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9WaWV3cG9ydENvbmZpZ3VyYXRpb24uaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL1ZpZXdwb3J0Q29uZmlndXJhdGlvbi5oCkBAIC03NCwxNCArNzQs
MjMgQEAgcHVibGljOgogICAgIGNvbnN0IEZsb2F0U2l6ZSYgbWluaW11bUxheW91dFNpemUoKSBj
b25zdCB7IHJldHVybiBtX21pbmltdW1MYXlvdXRTaXplOyB9CiAgICAgdm9pZCBzZXRNaW5pbXVt
TGF5b3V0U2l6ZShjb25zdCBGbG9hdFNpemUmKTsKIAorICAgIGNvbnN0IEZsb2F0U2l6ZSYgbWlu
aW11bUxheW91dFNpemVGb3JNaW5pbWFsVUkoKSBjb25zdCB7IHJldHVybiBtX21pbmltdW1MYXlv
dXRTaXplRm9yTWluaW1hbFVJLmlzRW1wdHkoKSA/IG1fbWluaW11bUxheW91dFNpemUgOiBtX21p
bmltdW1MYXlvdXRTaXplRm9yTWluaW1hbFVJOyB9CisgICAgdm9pZCBzZXRNaW5pbXVtTGF5b3V0
U2l6ZUZvck1pbmltYWxVSShjb25zdCBGbG9hdFNpemUmKTsKKworICAgIGNvbnN0IEZsb2F0U2l6
ZSYgYWN0aXZlTWluaW11bUxheW91dFNpemVJblNjcm9sbFZpZXdDb29yZGluYXRlcygpIGNvbnN0
OworCiAgICAgY29uc3QgVmlld3BvcnRBcmd1bWVudHMmIHZpZXdwb3J0QXJndW1lbnRzKCkgY29u
c3QgeyByZXR1cm4gbV92aWV3cG9ydEFyZ3VtZW50czsgfQogICAgIHZvaWQgc2V0Vmlld3BvcnRB
cmd1bWVudHMoY29uc3QgVmlld3BvcnRBcmd1bWVudHMmKTsKIAorICAgIHZvaWQgcmVzZXRNaW5p
bWFsVUkoKTsKKyAgICB2b2lkIGRpZEZpcnN0UmVuZGVyKCk7CisKICAgICBJbnRTaXplIGxheW91
dFNpemUoKSBjb25zdDsKICAgICBkb3VibGUgaW5pdGlhbFNjYWxlKCkgY29uc3Q7CiAgICAgZG91
YmxlIG1pbmltdW1TY2FsZSgpIGNvbnN0OwogICAgIGRvdWJsZSBtYXhpbXVtU2NhbGUoKSBjb25z
dCB7IHJldHVybiBtX2NvbmZpZ3VyYXRpb24ubWF4aW11bVNjYWxlOyB9CiAgICAgYm9vbCBhbGxv
d3NVc2VyU2NhbGluZygpIGNvbnN0IHsgcmV0dXJuIG1fY29uZmlndXJhdGlvbi5hbGxvd3NVc2Vy
U2NhbGluZzsgfQorICAgIGJvb2wgdXNlc01pbmltYWxVSSgpIGNvbnN0IHsgcmV0dXJuIG1fdXNl
c01pbmltYWxVSTsgfQogCiAgICAgc3RhdGljIFBhcmFtZXRlcnMgd2VicGFnZVBhcmFtZXRlcnMo
KTsKICAgICBzdGF0aWMgUGFyYW1ldGVycyB0ZXh0RG9jdW1lbnRQYXJhbWV0ZXJzKCk7CkBAIC0x
MDIsNyArMTExLDExIEBAIHByaXZhdGU6CiAgICAgUGFyYW1ldGVycyBtX2RlZmF1bHRDb25maWd1
cmF0aW9uOwogICAgIEludFNpemUgbV9jb250ZW50U2l6ZTsKICAgICBGbG9hdFNpemUgbV9taW5p
bXVtTGF5b3V0U2l6ZTsKKyAgICBGbG9hdFNpemUgbV9taW5pbXVtTGF5b3V0U2l6ZUZvck1pbmlt
YWxVSTsKICAgICBWaWV3cG9ydEFyZ3VtZW50cyBtX3ZpZXdwb3J0QXJndW1lbnRzOworCisgICAg
Ym9vbCBtX3VzZXNNaW5pbWFsVUk7CisgICAgYm9vbCBtX2ZpcnN0RnJhbWVSZW5kZXJlZDsKIH07
CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJWaWV3LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJW
aWV3LmNwcAppbmRleCA1ZDdkNDFhNTliZGEzNzY4OWZkYWU4ZjM2NWM2YWZkMGYxMWU2NDFkLi41
NmM5ODhjYzUyODA5ODIwZGM2ODFlY2M5YzhlZWJkZTE1ZjE4NjhkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVmlldy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlclZpZXcuY3BwCkBAIC0xMTg2LDkgKzExODYsOSBAQCBib29sIFJlbmRl
clZpZXc6OnNob3VsZERpc2FibGVMYXlvdXRTdGF0ZUZvclN1YnRyZWUoUmVuZGVyT2JqZWN0KiBy
ZW5kZXJlcikgY29ucwogICAgIHJldHVybiBmYWxzZTsKIH0KIAotSW50U2l6ZSBSZW5kZXJWaWV3
Ojp2aWV3cG9ydFNpemUoKSBjb25zdAorSW50U2l6ZSBSZW5kZXJWaWV3Ojp2aWV3cG9ydFNpemVG
b3JDU1NWaWV3cG9ydFVuaXRzKCkgY29uc3QKIHsKLSAgICByZXR1cm4gZnJhbWVWaWV3KCkudmll
d3BvcnRTaXplKCk7CisgICAgcmV0dXJuIGZyYW1lVmlldygpLnZpZXdwb3J0U2l6ZUZvckNTU1Zp
ZXdwb3J0VW5pdHMoKTsKIH0KIAogdm9pZCBSZW5kZXJWaWV3Ojp1cGRhdGVIaXRUZXN0UmVzdWx0
KEhpdFRlc3RSZXN1bHQmIHJlc3VsdCwgY29uc3QgTGF5b3V0UG9pbnQmIHBvaW50KQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclZpZXcuaCBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJWaWV3LmgKaW5kZXggY2FkZjdiZDVlNDA4YjZmOTU0ZjdjNzZh
MDMxMzY2ODQwZWE0ZjE0OS4uMTI1YTE5YjgxNzZiMzIyMmJhYmNmNjg5OGI5ZTU4MjQwNzkyODI2
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclZpZXcuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVmlldy5oCkBAIC0yMDUsNyArMjA1LDcg
QEAgcHVibGljOgogCiAgICAgSW50ZXJ2YWxBcmVuYSogaW50ZXJ2YWxBcmVuYSgpOwogCi0gICAg
SW50U2l6ZSB2aWV3cG9ydFNpemUoKSBjb25zdDsKKyAgICBJbnRTaXplIHZpZXdwb3J0U2l6ZUZv
ckNTU1ZpZXdwb3J0VW5pdHMoKSBjb25zdDsKIAogICAgIHZvaWQgc2V0UmVuZGVyUXVvdGVIZWFk
KFJlbmRlclF1b3RlKiBoZWFkKSB7IG1fcmVuZGVyUXVvdGVIZWFkID0gaGVhZDsgfQogICAgIFJl
bmRlclF1b3RlKiByZW5kZXJRdW90ZUhlYWQoKSBjb25zdCB7IHJldHVybiBtX3JlbmRlclF1b3Rl
SGVhZDsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9X
S1VJRGVsZWdhdGVQcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29h
L1dLVUlEZWxlZ2F0ZVByaXZhdGUuaAppbmRleCAzOWE4Zjg2ZGM2MWUxOTQ4MjBiZGJhNDAzODI0
NmQwYTI2MjY5OWNkLi5mM2FjZjE1ZTdlNmM1MWIwN2Y1NjNkNDNlYTE4NmJiYzA2M2I1NWM2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLVUlEZWxlZ2F0
ZVByaXZhdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLVUlE
ZWxlZ2F0ZVByaXZhdGUuaApAQCAtMzYsNiArMzYsNyBAQAogI2lmIFRBUkdFVF9PU19JUEhPTkUK
IC0gKE5TQXJyYXkgKilfd2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldyBhY3Rpb25zRm9yRWxl
bWVudDooX1dLQWN0aXZhdGVkRWxlbWVudEluZm8gKillbGVtZW50IGRlZmF1bHRBY3Rpb25zOihO
U0FycmF5ICopZGVmYXVsdEFjdGlvbnM7CiAtICh2b2lkKV93ZWJWaWV3OihXS1dlYlZpZXcgKil3
ZWJWaWV3IGRpZE5vdEhhbmRsZVRhcEFzQ2xpY2tBdFBvaW50OihDR1BvaW50KXBvaW50OworLSAo
dm9pZClfd2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldyB1c2VzTWluaW1hbFVJOihCT09MKXdh
bnRNaW5pbWFsVUk7CiAjZW5kaWYKIAogQGVuZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQppbmRleCBmMGM3MDE3ZmUwODhhYzBhZjE3MjlhMWQ2
YmZmMzM3ZDU0NzZiZTA2Li5lNTQxMWQ2ZjRjZDJjMTFiMmEwNzI2NmMyOTM5YmZkYzI2NGJlMzRi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmll
dy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5t
bQpAQCAtNDgsNiArNDgsNyBAQAogI2ltcG9ydCAiV0tQcmVmZXJlbmNlc0ludGVybmFsLmgiCiAj
aW1wb3J0ICJXS1Byb2Nlc3NQb29sSW50ZXJuYWwuaCIKICNpbXBvcnQgIldLVUlEZWxlZ2F0ZS5o
IgorI2ltcG9ydCAiV0tVSURlbGVnYXRlUHJpdmF0ZS5oIgogI2ltcG9ydCAiV0tVc2VyQ29udGVu
dENvbnRyb2xsZXJJbnRlcm5hbC5oIgogI2ltcG9ydCAiV0tXZWJWaWV3Q29uZmlndXJhdGlvbklu
dGVybmFsLmgiCiAjaW1wb3J0ICJXS1dlYlZpZXdDb250ZW50UHJvdmlkZXIuaCIKQEAgLTEzNCw5
ICsxMzUsMTMgQEAgV0tXZWJWaWV3KiBmcm9tV2ViUGFnZVByb3h5KFdlYktpdDo6V2ViUGFnZVBy
b3h5JiBwYWdlKQogICAgIFJldGFpblB0cjxXS1Njcm9sbFZpZXc+IF9zY3JvbGxWaWV3OwogICAg
IFJldGFpblB0cjxXS0NvbnRlbnRWaWV3PiBfY29udGVudFZpZXc7CiAKLSAgICBCT09MIF9oYXNT
dGF0aWNNaW5pbXVtTGF5b3V0U2l6ZTsKKyAgICBCT09MIF9vdmVycmlkZXNNaW5pbXVtTGF5b3V0
U2l6ZTsKICAgICBDR1NpemUgX21pbmltdW1MYXlvdXRTaXplT3ZlcnJpZGU7CisgICAgQk9PTCBf
b3ZlcnJpZGVzTWluaW11bUxheW91dFNpemVGb3JNaW5pbWFsVUk7CiAgICAgQ0dTaXplIF9taW5p
bXVtTGF5b3V0U2l6ZU92ZXJyaWRlRm9yTWluaW1hbFVJOworICAgIEJPT0wgX292ZXJyaWRlc01h
eGltdW1Vbm9ic2N1cmVkU2l6ZTsKKyAgICBDR1NpemUgX21heGltdW1Vbm9ic2N1cmVkU2l6ZU92
ZXJyaWRlOworICAgIEJPT0wgX3VzZXNNaW5pbWFsVUk7CiAgICAgQ0dSZWN0IF9pbnB1dFZpZXdC
b3VuZHM7CiAgICAgQ0dGbG9hdCBfdmlld3BvcnRNZXRhVGFnV2lkdGg7CiAKQEAgLTUxNiw2ICs1
MjEsMTYgQEAgc3RhdGljIENHRmxvYXQgY29udGVudFpvb21TY2FsZShXS1dlYlZpZXcqIHdlYlZp
ZXcpCiAgICAgW19zY3JvbGxWaWV3IHNldEJhY2tncm91bmRDb2xvcjp1aUJhY2tncm91bmRDb2xv
ci5nZXQoKV07CiB9CiAKKy0gKHZvaWQpX3NldFVzZXNNaW5pbWFsVUk6KEJPT0wpdXNlc01pbmlt
YWxVSQoreworICAgIF91c2VzTWluaW1hbFVJID0gdXNlc01pbmltYWxVSTsKK30KKworLSAoQk9P
TClfdXNlc01pbmltYWxVSQoreworICAgIHJldHVybiBfdXNlc01pbmltYWxVSTsKK30KKwogLSAo
dm9pZClfZGlkQ29tbWl0TG9hZEZvck1haW5GcmFtZQogewogICAgIF9uZWVkc1Jlc2V0Vmlld1N0
YXRlQWZ0ZXJDb21taXRMb2FkRm9yTWFpbkZyYW1lID0gWUVTOwpAQCAtNTQ1LDYgKzU2MCwxMSBA
QCBzdGF0aWMgQ0dGbG9hdCBjb250ZW50Wm9vbVNjYWxlKFdLV2ViVmlldyogd2ViVmlldykKIAog
ICAgIGlmIChfbmVlZHNSZXNldFZpZXdTdGF0ZUFmdGVyQ29tbWl0TG9hZEZvck1haW5GcmFtZSkg
ewogICAgICAgICBfbmVlZHNSZXNldFZpZXdTdGF0ZUFmdGVyQ29tbWl0TG9hZEZvck1haW5GcmFt
ZSA9IE5POworCisgICAgICAgIGF1dG8gZGVsZWdhdGUgPSBfdWlEZWxlZ2F0ZS0+ZGVsZWdhdGUo
KTsKKyAgICAgICAgaWYgKFtkZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKF93
ZWJWaWV3OnVzZXNNaW5pbWFsVUk6KV0pCisgICAgICAgICAgICBbc3RhdGljX2Nhc3Q8aWQgPFdL
VUlEZWxlZ2F0ZVByaXZhdGU+PihkZWxlZ2F0ZS5nZXQoKSkgX3dlYlZpZXc6c2VsZiB1c2VzTWlu
aW1hbFVJOl91c2VzTWluaW1hbFVJXTsKKwogICAgICAgICBbX3Njcm9sbFZpZXcgc2V0Q29udGVu
dE9mZnNldDpDR1BvaW50TWFrZSgtX29ic2N1cmVkSW5zZXRzLmxlZnQsIC1fb2JzY3VyZWRJbnNl
dHMudG9wKV07CiAgICAgfQogfQpAQCAtOTI2LDE3ICs5NDYsMTggQEAgc3RhdGljIFdlYkNvcmU6
OkZsb2F0UG9pbnQgY29uc3RyYWluQ29udGVudE9mZnNldChXZWJDb3JlOjpGbG9hdFBvaW50IGNv
bnRlbnRPZmYKICAgICBbX2NvbnRlbnRWaWV3IGRpZFpvb21Ub1NjYWxlOnNjYWxlXTsKIH0KIAot
c3RhdGljIGlubGluZSB2b2lkIHNldFZpZXdwb3J0Q29uZmlndXJhdGlvbk1pbmltdW1MYXlvdXRT
aXplKFdlYktpdDo6V2ViUGFnZVByb3h5JiBwYWdlLCBjb25zdCBDR1NpemUmIHNpemUpCi17Ci0g
ICAgcGFnZS5zZXRWaWV3cG9ydENvbmZpZ3VyYXRpb25NaW5pbXVtTGF5b3V0U2l6ZShXZWJDb3Jl
OjpGbG9hdFNpemUoc2l6ZSkpOwotfQotCiAtICh2b2lkKV9mcmFtZU9yQm91bmRzQ2hhbmdlZAog
ewogICAgIENHUmVjdCBib3VuZHMgPSBzZWxmLmJvdW5kczsKKyAgICBpZiAoIV9pc0FuaW1hdGlu
Z1Jlc2l6ZSkgeworICAgICAgICBpZiAoIV9vdmVycmlkZXNNaW5pbXVtTGF5b3V0U2l6ZSkKKyAg
ICAgICAgICAgIF9wYWdlLT5zZXRWaWV3cG9ydENvbmZpZ3VyYXRpb25NaW5pbXVtTGF5b3V0U2l6
ZShXZWJDb3JlOjpGbG9hdFNpemUoYm91bmRzLnNpemUpKTsKKyAgICAgICAgaWYgKCFfb3ZlcnJp
ZGVzTWluaW11bUxheW91dFNpemVGb3JNaW5pbWFsVUkpCisgICAgICAgICAgICBfcGFnZS0+c2V0
Vmlld3BvcnRDb25maWd1cmF0aW9uTWluaW11bUxheW91dFNpemVGb3JNaW5pbWFsVUkoV2ViQ29y
ZTo6RmxvYXRTaXplKGJvdW5kcy5zaXplKSk7CisgICAgICAgIGlmICghX292ZXJyaWRlc01heGlt
dW1Vbm9ic2N1cmVkU2l6ZSkKKyAgICAgICAgICAgIF9wYWdlLT5zZXRNYXhpbXVtVW5vYnNjdXJl
ZFNpemUoV2ViQ29yZTo6RmxvYXRTaXplKGJvdW5kcy5zaXplKSk7CisgICAgfQogCi0gICAgaWYg
KCFfaGFzU3RhdGljTWluaW11bUxheW91dFNpemUgJiYgIV9pc0FuaW1hdGluZ1Jlc2l6ZSkKLSAg
ICAgICAgc2V0Vmlld3BvcnRDb25maWd1cmF0aW9uTWluaW11bUxheW91dFNpemUoKl9wYWdlLCBi
b3VuZHMuc2l6ZSk7CiAgICAgW19zY3JvbGxWaWV3IHNldEZyYW1lOmJvdW5kc107CiAgICAgW19j
b250ZW50VmlldyBzZXRNaW5pbXVtU2l6ZTpib3VuZHMuc2l6ZV07CiAgICAgW19jdXN0b21Db250
ZW50VmlldyB3ZWJfc2V0TWluaW11bVNpemU6Ym91bmRzLnNpemVdOwpAQCAtMTQ5NCwyOCArMTUx
NSwzMCBAQCBzdGF0aWMgaW5saW5lIFdlYktpdDo6RmluZE9wdGlvbnMgdG9GaW5kT3B0aW9ucyhf
V0tGaW5kT3B0aW9ucyB3a0ZpbmRPcHRpb25zKQogCiAtIChDR1NpemUpX21pbmltdW1MYXlvdXRT
aXplT3ZlcnJpZGUKIHsKLSAgICBBU1NFUlQoX2hhc1N0YXRpY01pbmltdW1MYXlvdXRTaXplKTsK
KyAgICBBU1NFUlQoX292ZXJyaWRlc01pbmltdW1MYXlvdXRTaXplKTsKICAgICByZXR1cm4gX21p
bmltdW1MYXlvdXRTaXplT3ZlcnJpZGU7CiB9CiAKIC0gKHZvaWQpX3NldE1pbmltdW1MYXlvdXRT
aXplT3ZlcnJpZGU6KENHU2l6ZSltaW5pbXVtTGF5b3V0U2l6ZU92ZXJyaWRlCiB7Ci0gICAgX2hh
c1N0YXRpY01pbmltdW1MYXlvdXRTaXplID0gWUVTOworICAgIF9vdmVycmlkZXNNaW5pbXVtTGF5
b3V0U2l6ZSA9IFlFUzsKICAgICBfbWluaW11bUxheW91dFNpemVPdmVycmlkZSA9IG1pbmltdW1M
YXlvdXRTaXplT3ZlcnJpZGU7CiAgICAgaWYgKCFfaXNBbmltYXRpbmdSZXNpemUpCi0gICAgICAg
IHNldFZpZXdwb3J0Q29uZmlndXJhdGlvbk1pbmltdW1MYXlvdXRTaXplKCpfcGFnZSwgbWluaW11
bUxheW91dFNpemVPdmVycmlkZSk7CisgICAgICAgIF9wYWdlLT5zZXRWaWV3cG9ydENvbmZpZ3Vy
YXRpb25NaW5pbXVtTGF5b3V0U2l6ZShXZWJDb3JlOjpGbG9hdFNpemUobWluaW11bUxheW91dFNp
emVPdmVycmlkZSkpOwogfQogCiAtIChDR1NpemUpX21pbmltdW1MYXlvdXRTaXplT3ZlcnJpZGVG
b3JNaW5pbWFsVUkKIHsKKyAgICBBU1NFUlQoX292ZXJyaWRlc01pbmltdW1MYXlvdXRTaXplRm9y
TWluaW1hbFVJKTsKICAgICByZXR1cm4gX21pbmltdW1MYXlvdXRTaXplT3ZlcnJpZGVGb3JNaW5p
bWFsVUk7CiB9CiAKIC0gKHZvaWQpX3NldE1pbmltdW1MYXlvdXRTaXplT3ZlcnJpZGVGb3JNaW5p
bWFsVUk6KENHU2l6ZSlzaXplCiB7CisgICAgX292ZXJyaWRlc01pbmltdW1MYXlvdXRTaXplRm9y
TWluaW1hbFVJID0gWUVTOwogICAgIF9taW5pbXVtTGF5b3V0U2l6ZU92ZXJyaWRlRm9yTWluaW1h
bFVJID0gc2l6ZTsKICAgICBpZiAoIV9pc0FuaW1hdGluZ1Jlc2l6ZSkKLSAgICAgICAgX3BhZ2Ut
PnNldE1pbmltdW1MYXlvdXRTaXplRm9yTWluaW1hbFVJKFdlYkNvcmU6OkZsb2F0U2l6ZShzaXpl
KSk7CisgICAgICAgIF9wYWdlLT5zZXRWaWV3cG9ydENvbmZpZ3VyYXRpb25NaW5pbXVtTGF5b3V0
U2l6ZUZvck1pbmltYWxVSShXZWJDb3JlOjpGbG9hdFNpemUoc2l6ZSkpOwogfQogCiAtIChVSUVk
Z2VJbnNldHMpX29ic2N1cmVkSW5zZXRzCkBAIC0xNTM4LDYgKzE1NjEsMjQgQEAgc3RhdGljIGlu
bGluZSBXZWJLaXQ6OkZpbmRPcHRpb25zIHRvRmluZE9wdGlvbnMoX1dLRmluZE9wdGlvbnMgd2tG
aW5kT3B0aW9ucykKICAgICBbc2VsZiBfdXBkYXRlVmlzaWJsZUNvbnRlbnRSZWN0c107CiB9CiAK
Ky0gKENHU2l6ZSlfbWF4aW11bVVub2JzY3VyZWRTaXplT3ZlcnJpZGUKK3sKKyAgICBBU1NFUlQo
X292ZXJyaWRlc01heGltdW1Vbm9ic2N1cmVkU2l6ZSk7CisgICAgcmV0dXJuIF9tYXhpbXVtVW5v
YnNjdXJlZFNpemVPdmVycmlkZTsKK30KKworLSAodm9pZClfc2V0TWF4aW11bVVub2JzY3VyZWRT
aXplT3ZlcnJpZGU6KENHU2l6ZSlzaXplCit7CisgICAgQVNTRVJUKHNpemUud2lkdGggPD0gc2Vs
Zi5ib3VuZHMuc2l6ZS53aWR0aCAmJiBzaXplLmhlaWdodCA8PSBzZWxmLmJvdW5kcy5zaXplLmhl
aWdodCk7CisgICAgX292ZXJyaWRlc01heGltdW1Vbm9ic2N1cmVkU2l6ZSA9IFlFUzsKKyAgICBp
ZiAoQ0dTaXplRXF1YWxUb1NpemUoX21heGltdW1Vbm9ic2N1cmVkU2l6ZU92ZXJyaWRlLCBzaXpl
KSkKKyAgICAgICAgcmV0dXJuOworCisgICAgX21heGltdW1Vbm9ic2N1cmVkU2l6ZU92ZXJyaWRl
ID0gc2l6ZTsKKyAgICBpZiAoIV9pc0FuaW1hdGluZ1Jlc2l6ZSkKKyAgICAgICAgX3BhZ2UtPnNl
dE1heGltdW1Vbm9ic2N1cmVkU2l6ZShXZWJDb3JlOjpGbG9hdFNpemUoc2l6ZSkpOworfQorCiAt
ICh2b2lkKV9zZXRCYWNrZ3JvdW5kRXh0ZW5kc0JleW9uZFBhZ2U6KEJPT0wpYmFja2dyb3VuZEV4
dGVuZHMKIHsKICAgICBfcGFnZS0+c2V0QmFja2dyb3VuZEV4dGVuZHNCZXlvbmRQYWdlKGJhY2tn
cm91bmRFeHRlbmRzKTsKQEAgLTE1NzAsMTMgKzE2MTEsNyBAQCBzdGF0aWMgaW5saW5lIFdlYktp
dDo6RmluZE9wdGlvbnMgdG9GaW5kT3B0aW9ucyhfV0tGaW5kT3B0aW9ucyB3a0ZpbmRPcHRpb25z
KQogICAgIF9yZXNpemVBbmltYXRpb25WaWV3ID0gYWRvcHROUyhbW1VJVmlldyBhbGxvY10gaW5p
dF0pOwogICAgIFtfc2Nyb2xsVmlldyBpbnNlcnRTdWJ2aWV3Ol9yZXNpemVBbmltYXRpb25WaWV3
LmdldCgpIGF0SW5kZXg6aW5kZXhPZkNvbnRlbnRWaWV3XTsKICAgICBbX3Jlc2l6ZUFuaW1hdGlv
blZpZXcgYWRkU3VidmlldzpfY29udGVudFZpZXcuZ2V0KCldOwotCi0gICAgQ0dSZWN0IG9sZEJv
dW5kcyA9IHNlbGYuYm91bmRzOwotICAgIENHU2l6ZSBvbGRNaW5pbXVtTGF5b3V0U2l6ZSA9IG9s
ZEJvdW5kcy5zaXplOwotICAgIGlmIChfaGFzU3RhdGljTWluaW11bUxheW91dFNpemUpCi0gICAg
ICAgIG9sZE1pbmltdW1MYXlvdXRTaXplID0gX21pbmltdW1MYXlvdXRTaXplT3ZlcnJpZGU7CiAg
ICAgV2ViQ29yZTo6RmxvYXRSZWN0IG9sZFVub2JzY3VyZWRDb250ZW50UmVjdCA9IF9wYWdlLT51
bm9ic2N1cmVkQ29udGVudFJlY3QoKTsKLSAgICBVSUVkZ2VJbnNldHMgb2xkSW5zZXRzID0gX29i
c2N1cmVkSW5zZXRzOwogCiAgICAgdXBkYXRlQmxvY2soKTsKIApAQCAtMTU4NSwxMyArMTYyMCw2
IEBAIHN0YXRpYyBpbmxpbmUgV2ViS2l0OjpGaW5kT3B0aW9ucyB0b0ZpbmRPcHRpb25zKF9XS0Zp
bmRPcHRpb25zIHdrRmluZE9wdGlvbnMpCiAKICAgICBDR1JlY3QgbmV3Qm91bmRzID0gc2VsZi5i
b3VuZHM7CiAgICAgQ0dTaXplIG5ld01pbmltdW1MYXlvdXRTaXplID0gbmV3Qm91bmRzLnNpemU7
Ci0gICAgaWYgKF9oYXNTdGF0aWNNaW5pbXVtTGF5b3V0U2l6ZSkKLSAgICAgICAgbmV3TWluaW11
bUxheW91dFNpemUgPSBfbWluaW11bUxheW91dFNpemVPdmVycmlkZTsKLQotICAgIGlmIChDR1Np
emVFcXVhbFRvU2l6ZShuZXdNaW5pbXVtTGF5b3V0U2l6ZSwgb2xkTWluaW11bUxheW91dFNpemUp
Ci0gICAgICAgICYmIENHUmVjdEVxdWFsVG9SZWN0KG5ld0JvdW5kcywgb2xkQm91bmRzKQotICAg
ICAgICAmJiBVSUVkZ2VJbnNldHNFcXVhbFRvRWRnZUluc2V0cyhvbGRJbnNldHMsIF9vYnNjdXJl
ZEluc2V0cykpCi0gICAgICAgIHJldHVybjsKIAogICAgIENHU2l6ZSBjb250ZW50U2l6ZUluQ29u
dGVudFZpZXdDb29yZGluYXRlcyA9IFtfY29udGVudFZpZXcgYm91bmRzXS5zaXplOwogICAgIFtf
c2Nyb2xsVmlldyBzZXRNaW5pbXVtWm9vbVNjYWxlOnN0ZDo6bWluKG5ld01pbmltdW1MYXlvdXRT
aXplLndpZHRoIC8gY29udGVudFNpemVJbkNvbnRlbnRWaWV3Q29vcmRpbmF0ZXMud2lkdGgsIFtf
c2Nyb2xsVmlldyBtaW5pbXVtWm9vbVNjYWxlXSldOwpAQCAtMTYzOCw3ICsxNjY2LDE5IEBAIHN0
YXRpYyBpbmxpbmUgV2ViS2l0OjpGaW5kT3B0aW9ucyB0b0ZpbmRPcHRpb25zKF9XS0ZpbmRPcHRp
b25zIHdrRmluZE9wdGlvbnMpCiAgICAgQ0dSZWN0IHZpc2libGVSZWN0SW5Db250ZW50Q29vcmRp
bmF0ZXMgPSBbc2VsZiBjb252ZXJ0UmVjdDpuZXdCb3VuZHMgdG9WaWV3Ol9jb250ZW50Vmlldy5n
ZXQoKV07CiAgICAgQ0dSZWN0IHVub2JzY3VyZWRSZWN0SW5Db250ZW50Q29vcmRpbmF0ZXMgPSBb
c2VsZiBjb252ZXJ0UmVjdDpmdXR1cmVVbm9ic2N1cmVkUmVjdEluU2VsZkNvb3JkaW5hdGVzIHRv
VmlldzpfY29udGVudFZpZXcuZ2V0KCldOwogCi0gICAgX3BhZ2UtPmR5bmFtaWNWaWV3cG9ydFNp
emVVcGRhdGUoV2ViQ29yZTo6RmxvYXRTaXplKG5ld01pbmltdW1MYXlvdXRTaXplLndpZHRoLCBu
ZXdNaW5pbXVtTGF5b3V0U2l6ZS5oZWlnaHQpLCB2aXNpYmxlUmVjdEluQ29udGVudENvb3JkaW5h
dGVzLCB1bm9ic2N1cmVkUmVjdEluQ29udGVudENvb3JkaW5hdGVzLCBmdXR1cmVVbm9ic2N1cmVk
UmVjdEluU2VsZkNvb3JkaW5hdGVzLCB0YXJnZXRTY2FsZSk7CisgICAgQ0dTaXplIG1pbmltdW1M
YXlvdXRTaXplID0gbmV3Qm91bmRzLnNpemU7CisgICAgaWYgKF9vdmVycmlkZXNNaW5pbXVtTGF5
b3V0U2l6ZSkKKyAgICAgICAgbWluaW11bUxheW91dFNpemUgPSBfbWluaW11bUxheW91dFNpemVP
dmVycmlkZTsKKworICAgIENHU2l6ZSBtaW5pbXVtTGF5b3V0U2l6ZUZvck1pbmltYWxVSSA9IG1p
bmltdW1MYXlvdXRTaXplOworICAgIGlmIChfb3ZlcnJpZGVzTWluaW11bUxheW91dFNpemVGb3JN
aW5pbWFsVUkpCisgICAgICAgIG1pbmltdW1MYXlvdXRTaXplRm9yTWluaW1hbFVJID0gX21pbmlt
dW1MYXlvdXRTaXplT3ZlcnJpZGVGb3JNaW5pbWFsVUk7CisKKyAgICBDR1NpemUgbWF4aW11bVVu
b2JzY3VyZWRTaXplID0gbmV3Qm91bmRzLnNpemU7CisgICAgaWYgKF9vdmVycmlkZXNNYXhpbXVt
VW5vYnNjdXJlZFNpemUpCisgICAgICAgIG1heGltdW1Vbm9ic2N1cmVkU2l6ZSA9IF9tYXhpbXVt
VW5vYnNjdXJlZFNpemVPdmVycmlkZTsKKworICAgIF9wYWdlLT5keW5hbWljVmlld3BvcnRTaXpl
VXBkYXRlKFdlYkNvcmU6OkZsb2F0U2l6ZShtaW5pbXVtTGF5b3V0U2l6ZSksIFdlYkNvcmU6OkZs
b2F0U2l6ZShtaW5pbXVtTGF5b3V0U2l6ZUZvck1pbmltYWxVSSksIFdlYkNvcmU6OkZsb2F0U2l6
ZShtYXhpbXVtVW5vYnNjdXJlZFNpemUpLCB2aXNpYmxlUmVjdEluQ29udGVudENvb3JkaW5hdGVz
LCB1bm9ic2N1cmVkUmVjdEluQ29udGVudENvb3JkaW5hdGVzLCBmdXR1cmVVbm9ic2N1cmVkUmVj
dEluU2VsZkNvb3JkaW5hdGVzLCB0YXJnZXRTY2FsZSk7CiB9CiAKIC0gKHZvaWQpX2VuZEFuaW1h
dGVkUmVzaXplCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29h
L1dLV2ViVmlld0ludGVybmFsLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29h
L1dLV2ViVmlld0ludGVybmFsLmgKaW5kZXggYzBhZTZmOTUxZDMzYjVhYTNkZjc0MThhN2IzYjMz
ZDA1MGJiYWUwNy4uMWIwZDQ2N2U1MDQzZmEwODYwYTcyYWIxMGVjZDVjNmY0NGUzMmFjMyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdJbnRl
cm5hbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3
SW50ZXJuYWwuaApAQCAtNjEsNiArNjEsOSBAQCBzdHJ1Y3QgVmlld1NuYXBzaG90OwogfQogCiAj
aWYgUExBVEZPUk0oSU9TKQorCitAcHJvcGVydHkgKG5vbmF0b21pYywgc2V0dGVyPV9zZXRVc2Vz
TWluaW1hbFVJOikgQk9PTCBfdXNlc01pbmltYWxVSTsKKwogLSAodm9pZClfZGlkQ29tbWl0TG9h
ZEZvck1haW5GcmFtZTsKIC0gKHZvaWQpX2RpZENvbW1pdExheWVyVHJlZTooY29uc3QgV2ViS2l0
OjpSZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbiYpbGF5ZXJUcmVlVHJhbnNhY3Rpb247CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3UHJp
dmF0ZS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdQcml2
YXRlLmgKaW5kZXggYWY5NDZmZWUwNzVmMzJhZWRhYTc3NjVlMTI0ZGRlMDk4NDUwYTg0ZC4uMzAx
NzZiMDA2NzM5MGQ1OTBhY2I2NTI4ZWY2NmU2Y2MxNmRkYzMwMSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdQcml2YXRlLmgKKysrIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdQcml2YXRlLmgKQEAgLTk1
LDggKzk1LDE0IEBAIHR5cGVkZWYgTlNfT1BUSU9OUyhOU1VJbnRlZ2VyLCBfV0tGaW5kT3B0aW9u
cykgewogLSAodm9pZClfY2xvc2U7CiAKICNpZiBUQVJHRVRfT1NfSVBIT05FCisvLyBEZWZpbmUg
dGhlIHNtYWxsZXN0IHNpemUgYSBwYWdlIHRha2Ugd2l0aCBhIHJlZ3VsYXIuCiBAcHJvcGVydHkg
KG5vbmF0b21pYywgc2V0dGVyPV9zZXRNaW5pbXVtTGF5b3V0U2l6ZU92ZXJyaWRlOikgQ0dTaXpl
IF9taW5pbXVtTGF5b3V0U2l6ZU92ZXJyaWRlOworLy8gRGVmaW5lIHRoZSBzbWFsbGVzdCBzaXpl
IGEgcGFnZSB0YWtlIHdpdGggdGhlIG1pbm1hbC11aSB2aWV3cG9ydC4KIEBwcm9wZXJ0eSAobm9u
YXRvbWljLCBzZXR0ZXI9X3NldE1pbmltdW1MYXlvdXRTaXplT3ZlcnJpZGVGb3JNaW5pbWFsVUk6
KSBDR1NpemUgX21pbmltdW1MYXlvdXRTaXplT3ZlcnJpZGVGb3JNaW5pbWFsVUk7CisvLyBEZWZp
bmUgdGhlIGxhcmdlc3Qgc2l6ZSB0aGUgdW5vYnNjdXJlZCBhcmVhIGNhbiBnZXQgZm9yIHRoZSBj
dXJyZW50IHZpZXcgYm91bmRzLiBUaGlzIHZhbHVlIGlzIHVzZWQgdG8gZGVmaW5lIHZpZXdwb3J0
IHVuaXRzLgorQHByb3BlcnR5IChub25hdG9taWMsIHNldHRlcj1fc2V0TWF4aW11bVVub2JzY3Vy
ZWRTaXplT3ZlcnJpZGU6KSBDR1NpemUgX21heGltdW1Vbm9ic2N1cmVkU2l6ZU92ZXJyaWRlOwor
CitAcHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHkpIEJPT0wgX3VzZXNNaW5pbWFsVUk7CiAK
IC8vIERlZmluZSB0aGUgaW5zZXQgb2YgdGhlIHNjcm9sbHZpZXcgdW51c2FibGUgYnkgdGhlIHdl
YiBwYWdlLgogQHByb3BlcnR5IChub25hdG9taWMsIHNldHRlcj1fc2V0T2JzY3VyZWRJbnNldHM6
KSBVSUVkZ2VJbnNldHMgX29ic2N1cmVkSW5zZXRzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL1BhZ2VDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QYWdl
Q2xpZW50LmgKaW5kZXggOThkMDE2ZmIzM2QzNjkyMDdlMDk2ZDQ2ZGUxNmIxYzc3ZThmNmVkYy4u
NjVmMjdiNDgyMjNkNGJjYThkMjk5MGNhMDFhY2FkYzQ4MjFmZmZlZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BhZ2VDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvUGFnZUNsaWVudC5oCkBAIC0yNTcsNiArMjU3LDcgQEAgcHVibGljOgogICAgIHZp
cnR1YWwgdm9pZCBzaG93UGxheWJhY2tUYXJnZXRQaWNrZXIoYm9vbCBoYXNWaWRlbywgY29uc3Qg
V2ViQ29yZTo6SW50UmVjdCYgZWxlbWVudFJlY3QpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgem9v
bVRvUmVjdChXZWJDb3JlOjpGbG9hdFJlY3QsIGRvdWJsZSBtaW5pbXVtU2NhbGUsIGRvdWJsZSBt
YXhpbXVtU2NhbGUpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGlkQ2hhbmdlVmlld3BvcnRNZXRh
VGFnV2lkdGgoZmxvYXQpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0VXNlc01pbmltYWxVSShi
b29sKSA9IDA7CiAgICAgdmlydHVhbCBkb3VibGUgbWluaW11bVpvb21TY2FsZSgpIGNvbnN0ID0g
MDsKICAgICB2aXJ0dWFsIFdlYkNvcmU6OkZsb2F0U2l6ZSBjb250ZW50c1NpemUoKSBjb25zdCA9
IDA7CiAgICAgdmlydHVhbCB2b2lkIGRpZEZpbmlzaERyYXdpbmdQYWdlc1RvUERGKGNvbnN0IElQ
Qzo6RGF0YVJlZmVyZW5jZSYpID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9XZWJQYWdlUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJv
eHkuaAppbmRleCBmYjI0ODA0MzYyN2JlNWNjNzZmZDc2NTczZjFjNzRiYzExZTg3ODBhLi41Mjk4
NTE5YzE1ZjgzMGVjNTllYzZmMGJmZGI2OWIxYjRjMmUwNDQ0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL1dlYlBhZ2VQcm94eS5oCkBAIC01OTUsMTAgKzU5NSwxMSBAQCBwdWJsaWM6CiAgICAg
ZW51bSBjbGFzcyBVbm9ic2N1cmVkUmVjdENvbnN0cmFpbnQgeyBDb25zdHJhaW5lZFRvRG9jdW1l
bnRSZWN0LCBVbmNvbnN0cmFpbmVkIH07CiAgICAgV2ViQ29yZTo6RmxvYXRSZWN0IGNvbXB1dGVD
dXN0b21GaXhlZFBvc2l0aW9uUmVjdChjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmIHVub2JzY3Vy
ZWRDb250ZW50UmVjdCwgZG91YmxlIGRpc3BsYXllZENvbnRlbnRTY2FsZSwgVW5vYnNjdXJlZFJl
Y3RDb25zdHJhaW50ID0gVW5vYnNjdXJlZFJlY3RDb25zdHJhaW50OjpVbmNvbnN0cmFpbmVkKSBj
b25zdDsKIAotICAgIHZvaWQgZHluYW1pY1ZpZXdwb3J0U2l6ZVVwZGF0ZShjb25zdCBXZWJDb3Jl
OjpGbG9hdFNpemUmIG1pbmltdW1MYXlvdXRTaXplLCBjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3Qm
IHRhcmdldEV4cG9zZWRDb250ZW50UmVjdCwgY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiB0YXJn
ZXRVbm9ic2N1cmVkUmVjdCwgY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiB0YXJnZXRVbm9ic2N1
cmVkUmVjdEluU2Nyb2xsVmlld0Nvb3JkaW5hdGVzLCBkb3VibGUgdGFyZ2V0U2NhbGUpOworICAg
IHZvaWQgZHluYW1pY1ZpZXdwb3J0U2l6ZVVwZGF0ZShjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUm
IG1pbmltdW1MYXlvdXRTaXplLCBjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUmIG1pbmltdW1MYXlv
dXRTaXplRm9yTWluaW1hbFVJLCBjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUmIG1heGltdW1Vbm9i
c2N1cmVkU2l6ZSwgY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiB0YXJnZXRFeHBvc2VkQ29udGVu
dFJlY3QsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYgdGFyZ2V0VW5vYnNjdXJlZFJlY3QsIGNv
bnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYgdGFyZ2V0VW5vYnNjdXJlZFJlY3RJblNjcm9sbFZpZXdD
b29yZGluYXRlcywgZG91YmxlIHRhcmdldFNjYWxlKTsKICAgICAKICAgICB2b2lkIHNldFZpZXdw
b3J0Q29uZmlndXJhdGlvbk1pbmltdW1MYXlvdXRTaXplKGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6
ZSYpOwotICAgIHZvaWQgc2V0TWluaW11bUxheW91dFNpemVGb3JNaW5pbWFsVUkoY29uc3QgV2Vi
Q29yZTo6RmxvYXRTaXplJik7CisgICAgdm9pZCBzZXRWaWV3cG9ydENvbmZpZ3VyYXRpb25NaW5p
bXVtTGF5b3V0U2l6ZUZvck1pbmltYWxVSShjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUmKTsKKyAg
ICB2b2lkIHNldE1heGltdW1Vbm9ic2N1cmVkU2l6ZShjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUm
KTsKICAgICB2b2lkIGRpZENvbW1pdExheWVyVHJlZShjb25zdCBXZWJLaXQ6OlJlbW90ZUxheWVy
VHJlZVRyYW5zYWN0aW9uJik7CiAKICAgICB2b2lkIHNlbGVjdFdpdGhHZXN0dXJlKGNvbnN0IFdl
YkNvcmU6OkludFBvaW50LCBXZWJDb3JlOjpUZXh0R3JhbnVsYXJpdHksIHVpbnQzMl90IGdlc3R1
cmVUeXBlLCB1aW50MzJfdCBnZXN0dXJlU3RhdGUsIFBhc3NSZWZQdHI8R2VzdHVyZUNhbGxiYWNr
Pik7CkBAIC02MzQsNiArNjM1LDcgQEAgcHVibGljOgogICAgIHZvaWQgZGlkTm90SGFuZGxlVGFw
QXNDbGljayhjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYpOwogICAgIHZvaWQgdmlld3BvcnRNZXRh
VGFnV2lkdGhEaWRDaGFuZ2UoZmxvYXQgd2lkdGgpOwogICAgIHZvaWQgZGlkRmluaXNoRHJhd2lu
Z1BhZ2VzVG9QREYoY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJik7CisgICAgdm9pZCBzZXRVc2Vz
TWluaW1hbFVJKGJvb2wpOwogI2VuZGlmCiAKICAgICBjb25zdCBFZGl0b3JTdGF0ZSYgZWRpdG9y
U3RhdGUoKSBjb25zdCB7IHJldHVybiBtX2VkaXRvclN0YXRlOyB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbgppbmRleCBlN2JmNWE0YTQ4
MWY0YzE3MzJkYzBjMDUzMWQ1M2RiYWJjYjg2YTM3Li5lM2E0NDNlZDc1YmRiODVjZmE5ZjA4M2Qz
MzcwYTZlZjRkN2IxYTE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2Vi
UGFnZVByb3h5Lm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQ
YWdlUHJveHkubWVzc2FnZXMuaW4KQEAgLTE3Miw2ICsxNzIsNyBAQCBtZXNzYWdlcyAtPiBXZWJQ
YWdlUHJveHkgewogICAgIENvbW1pdFBvdGVudGlhbFRhcEZhaWxlZCgpCiAgICAgRGlkTm90SGFu
ZGxlVGFwQXNDbGljayhXZWJDb3JlOjpJbnRQb2ludCBwb2ludCkKICAgICBWaWV3cG9ydE1ldGFU
YWdXaWR0aERpZENoYW5nZShmbG9hdCB3aWR0aCkKKyAgICBTZXRVc2VzTWluaW1hbFVJKGJvb2wg
dXNlc01pbmltYWxVSSkKICAgICBEaWRGaW5pc2hEcmF3aW5nUGFnZXNUb1BERihJUEM6OkRhdGFS
ZWZlcmVuY2UgcGRmRGF0YSkKICNlbmRpZgogI2lmIFBMQVRGT1JNKEdUSykKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJT1MuaCBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJT1MuaAppbmRleCBiYTFlNWU2
YTlkZjBiOWM0NzkyYWU3MGIyMjlmZjgxOTY1Mjc4YzM5Li5jYWJmN2UwY2Y2ZjA5ZmVmYjc2ZDcx
OTcyY2NkNWQzM2M5YjQ0OWY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
aW9zL1BhZ2VDbGllbnRJbXBsSU9TLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lv
cy9QYWdlQ2xpZW50SW1wbElPUy5oCkBAIC0xMjMsNiArMTIzLDcgQEAgcHJpdmF0ZToKIAogICAg
IHZpcnR1YWwgYm9vbCBoYW5kbGVSdW5PcGVuUGFuZWwoV2ViUGFnZVByb3h5KiwgV2ViRnJhbWVQ
cm94eSosIFdlYk9wZW5QYW5lbFBhcmFtZXRlcnMqLCBXZWJPcGVuUGFuZWxSZXN1bHRMaXN0ZW5l
clByb3h5Kikgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIGRpZENoYW5nZVZpZXdwb3J0TWV0
YVRhZ1dpZHRoKGZsb2F0KSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0VXNlc01pbmlt
YWxVSShib29sKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIGRvdWJsZSBtaW5pbXVtWm9vbVNjYWxl
KCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCBXZWJDb3JlOjpGbG9hdFNpemUgY29udGVu
dHNTaXplKCkgY29uc3Qgb3ZlcnJpZGU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJT1MubW0gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLm1tCmluZGV4IDI2ZDlkYTA4NTRhMjJlOThhMWFkYjVl
YTZmOGMyYjBjM2JlYzFhZmYuLjI2MmRhZTdmNWU2ZGExOTI4N2Q2Yjg4ZWRkNTVmNDUwMzIxYmRm
M2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvUGFnZUNsaWVudElt
cGxJT1MubW0KKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1w
bElPUy5tbQpAQCAtMTg5LDYgKzE4OSwxMSBAQCB2b2lkIFBhZ2VDbGllbnRJbXBsOjpkaWRDaGFu
Z2VWaWV3cG9ydE1ldGFUYWdXaWR0aChmbG9hdCBuZXdXaWR0aCkKICAgICBbbV93ZWJWaWV3IF9z
ZXRWaWV3cG9ydE1ldGFUYWdXaWR0aDpuZXdXaWR0aF07CiB9CiAKK3ZvaWQgUGFnZUNsaWVudElt
cGw6OnNldFVzZXNNaW5pbWFsVUkoYm9vbCB1c2VzTWluaW1hbFVJKQoreworICAgIFttX3dlYlZp
ZXcgX3NldFVzZXNNaW5pbWFsVUk6dXNlc01pbmltYWxVSV07Cit9CisKIGRvdWJsZSBQYWdlQ2xp
ZW50SW1wbDo6bWluaW11bVpvb21TY2FsZSgpIGNvbnN0CiB7CiAgICAgaWYgKFVJU2Nyb2xsVmll
dyAqc2Nyb2xsZXIgPSBbbV93ZWJWaWV3IHNjcm9sbFZpZXddKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL2lvcy9XZWJQYWdlUHJveHlJT1MubW0gYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlPUy5tbQppbmRleCAzMDg4ZTI5MWMyNWRmNzkx
Y2E2MWIzN2RhZDEwNTlhNmY3NDg0NTFkLi5kMzU1MTUxMWMxNGMxYjZkMDBkNWVhMjE2NTZjYjk1
YWU0MzJiOWY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1dlYlBh
Z2VQcm94eUlPUy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1dlYlBhZ2VQ
cm94eUlPUy5tbQpAQCAtMjM1LDkgKzIzNSw5IEBAIFdlYkNvcmU6OkZsb2F0UmVjdCBXZWJQYWdl
UHJveHk6OmNvbXB1dGVDdXN0b21GaXhlZFBvc2l0aW9uUmVjdChjb25zdCBGbG9hdFJlY3QmCiAg
ICAgcmV0dXJuIEZyYW1lVmlldzo6cmVjdEZvclZpZXdwb3J0Q29uc3RyYWluZWRPYmplY3RzKGVu
Y2xvc2luZ0xheW91dFJlY3QoY29uc3RyYWluZWRVbm9ic2N1cmVkUmVjdCksIHJvdW5kZWRMYXlv
dXRTaXplKGNvbnRlbnRzU2l6ZSksIGRpc3BsYXllZENvbnRlbnRTY2FsZSwgZmFsc2UsIFN0aWNr
VG9WaWV3cG9ydEJvdW5kcyk7CiB9CiAKLXZvaWQgV2ViUGFnZVByb3h5OjpkeW5hbWljVmlld3Bv
cnRTaXplVXBkYXRlKGNvbnN0IEZsb2F0U2l6ZSYgbWluaW11bUxheW91dFNpemUsIGNvbnN0IEZs
b2F0UmVjdCYgdGFyZ2V0RXhwb3NlZENvbnRlbnRSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHRhcmdl
dFVub2JzY3VyZWRSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHRhcmdldFVub2JzY3VyZWRSZWN0SW5T
Y3JvbGxWaWV3Q29vcmRpbmF0ZXMsICBkb3VibGUgdGFyZ2V0U2NhbGUpCit2b2lkIFdlYlBhZ2VQ
cm94eTo6ZHluYW1pY1ZpZXdwb3J0U2l6ZVVwZGF0ZShjb25zdCBGbG9hdFNpemUmIG1pbmltdW1M
YXlvdXRTaXplLCBjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUmIG1pbmltdW1MYXlvdXRTaXplRm9y
TWluaW1hbFVJLCBjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUmIG1heGltdW1Vbm9ic2N1cmVkU2l6
ZSwgY29uc3QgRmxvYXRSZWN0JiB0YXJnZXRFeHBvc2VkQ29udGVudFJlY3QsIGNvbnN0IEZsb2F0
UmVjdCYgdGFyZ2V0VW5vYnNjdXJlZFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgdGFyZ2V0VW5vYnNj
dXJlZFJlY3RJblNjcm9sbFZpZXdDb29yZGluYXRlcywgIGRvdWJsZSB0YXJnZXRTY2FsZSkKIHsK
LSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkR5bmFtaWNWaWV3cG9ydFNp
emVVcGRhdGUobWluaW11bUxheW91dFNpemUsIHRhcmdldEV4cG9zZWRDb250ZW50UmVjdCwgdGFy
Z2V0VW5vYnNjdXJlZFJlY3QsIHRhcmdldFVub2JzY3VyZWRSZWN0SW5TY3JvbGxWaWV3Q29vcmRp
bmF0ZXMsIHRhcmdldFNjYWxlKSwgbV9wYWdlSUQpOworICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNz
YWdlczo6V2ViUGFnZTo6RHluYW1pY1ZpZXdwb3J0U2l6ZVVwZGF0ZShtaW5pbXVtTGF5b3V0U2l6
ZSwgbWluaW11bUxheW91dFNpemVGb3JNaW5pbWFsVUksIG1heGltdW1Vbm9ic2N1cmVkU2l6ZSwg
dGFyZ2V0RXhwb3NlZENvbnRlbnRSZWN0LCB0YXJnZXRVbm9ic2N1cmVkUmVjdCwgdGFyZ2V0VW5v
YnNjdXJlZFJlY3RJblNjcm9sbFZpZXdDb29yZGluYXRlcywgdGFyZ2V0U2NhbGUpLCBtX3BhZ2VJ
RCk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpzZXRWaWV3cG9ydENvbmZpZ3VyYXRpb25NaW5p
bXVtTGF5b3V0U2l6ZShjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUmIHNpemUpCkBAIC0yNDUsOSAr
MjQ1LDE0IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpzZXRWaWV3cG9ydENvbmZpZ3VyYXRpb25NaW5p
bXVtTGF5b3V0U2l6ZShjb25zdCBXZWJDb3JlOjpGbG9hCiAgICAgbV9wcm9jZXNzLT5zZW5kKE1l
c3NhZ2VzOjpXZWJQYWdlOjpTZXRWaWV3cG9ydENvbmZpZ3VyYXRpb25NaW5pbXVtTGF5b3V0U2l6
ZShzaXplKSwgbV9wYWdlSUQpOwogfQogCi12b2lkIFdlYlBhZ2VQcm94eTo6c2V0TWluaW11bUxh
eW91dFNpemVGb3JNaW5pbWFsVUkoY29uc3QgV2ViQ29yZTo6RmxvYXRTaXplJiBzaXplKQordm9p
ZCBXZWJQYWdlUHJveHk6OnNldFZpZXdwb3J0Q29uZmlndXJhdGlvbk1pbmltdW1MYXlvdXRTaXpl
Rm9yTWluaW1hbFVJKGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYgc2l6ZSkKIHsKLSAgICBtX3By
b2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNldE1pbmltdW1MYXlvdXRTaXplRm9yTWlu
aW1hbFVJKHNpemUpLCBtX3BhZ2VJRCk7CisgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpX
ZWJQYWdlOjpTZXRWaWV3cG9ydENvbmZpZ3VyYXRpb25NaW5pbXVtTGF5b3V0U2l6ZUZvck1pbmlt
YWxVSShzaXplKSwgbV9wYWdlSUQpOworfQorCit2b2lkIFdlYlBhZ2VQcm94eTo6c2V0TWF4aW11
bVVub2JzY3VyZWRTaXplKGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYgc2l6ZSkKK3sKKyAgICBt
X3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNldE1heGltdW1Vbm9ic2N1cmVkU2l6
ZShzaXplKSwgbV9wYWdlSUQpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkQ29tbWl0TGF5
ZXJUcmVlKGNvbnN0IFdlYktpdDo6UmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb24mIGxheWVyVHJl
ZVRyYW5zYWN0aW9uKQpAQCAtNjQ5LDYgKzY1NCwxMSBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6dmll
d3BvcnRNZXRhVGFnV2lkdGhEaWRDaGFuZ2UoZmxvYXQgd2lkdGgpCiAgICAgbV9wYWdlQ2xpZW50
LmRpZENoYW5nZVZpZXdwb3J0TWV0YVRhZ1dpZHRoKHdpZHRoKTsKIH0KIAordm9pZCBXZWJQYWdl
UHJveHk6OnNldFVzZXNNaW5pbWFsVUkoYm9vbCB1c2VzTWluaW1hbFVJKQoreworICAgIG1fcGFn
ZUNsaWVudC5zZXRVc2VzTWluaW1hbFVJKHVzZXNNaW5pbWFsVUkpOworfQorCiB2b2lkIFdlYlBh
Z2VQcm94eTo6ZGlkRmluaXNoRHJhd2luZ1BhZ2VzVG9QREYoY29uc3QgSVBDOjpEYXRhUmVmZXJl
bmNlJiBwZGZEYXRhKQogewogICAgIG1fcGFnZUNsaWVudC5kaWRGaW5pc2hEcmF3aW5nUGFnZXNU
b1BERihwZGZEYXRhKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJQYWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQ
YWdlLmNwcAppbmRleCBlYzhhOTYyM2NiNjUyODY1NWNjODJlZjQwZTUxZWJiYWUzYjY1YTFlLi4x
ZDk0YTg5YmNiYjc0Mzk0YWE2ZGMyZjRlYzdhYzZkZmRiMjNlMTI3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKKysrIGIvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCkBAIC0yOTQsNiArMjk0LDcgQEAg
V2ViUGFnZTo6V2ViUGFnZSh1aW50NjRfdCBwYWdlSUQsIGNvbnN0IFdlYlBhZ2VDcmVhdGlvblBh
cmFtZXRlcnMmIHBhcmFtZXRlcnMpCiAgICAgLCBtX2hhc1JlY2VpdmVkVmlzaWJsZUNvbnRlbnRS
ZWN0c0FmdGVyRGlkQ29tbWl0TG9hZChmYWxzZSkKICAgICAsIG1fc2NhbGVXYXNTZXRCeVVJUHJv
Y2VzcyhmYWxzZSkKICAgICAsIG1fdXNlckhhc0NoYW5nZWRQYWdlU2NhbGVGYWN0b3IoZmFsc2Up
CisgICAgLCBtX2hhc1JlbmRlcmVkQ29udGVudEFmdGVyRGlkQ29tbWl0TG9hZChmYWxzZSkKICAg
ICAsIG1fdXNlcklzSW50ZXJhY3RpbmcoZmFsc2UpCiAgICAgLCBtX3NjcmVlblNpemUocGFyYW1l
dGVycy5zY3JlZW5TaXplKQogICAgICwgbV9hdmFpbGFibGVTY3JlZW5TaXplKHBhcmFtZXRlcnMu
YXZhaWxhYmxlU2NyZWVuU2l6ZSkKQEAgLTQzMTIsMTAgKzQzMTMsMTIgQEAgdm9pZCBXZWJQYWdl
OjpkaWRDb21taXRMb2FkKFdlYkZyYW1lKiBmcmFtZSkKICNpZiBQTEFURk9STShJT1MpCiAgICAg
bV9oYXNSZWNlaXZlZFZpc2libGVDb250ZW50UmVjdHNBZnRlckRpZENvbW1pdExvYWQgPSBmYWxz
ZTsKICAgICBtX3VzZXJIYXNDaGFuZ2VkUGFnZVNjYWxlRmFjdG9yID0gZmFsc2U7CisgICAgbV9o
YXNSZW5kZXJlZENvbnRlbnRBZnRlckRpZENvbW1pdExvYWQgPSBmYWxzZTsKIAogICAgIFdlYlBy
b2Nlc3M6OnNoYXJlZCgpLmV2ZW50RGlzcGF0Y2hlcigpLmNsZWFyUXVldWVkVG91Y2hFdmVudHNG
b3JQYWdlKCp0aGlzKTsKIAogICAgIHJlc2V0Vmlld3BvcnREZWZhdWx0Q29uZmlndXJhdGlvbihm
cmFtZSk7CisgICAgbV92aWV3cG9ydENvbmZpZ3VyYXRpb24ucmVzZXRNaW5pbWFsVUkoKTsKICAg
ICBtX3ZpZXdwb3J0Q29uZmlndXJhdGlvbi5zZXRWaWV3cG9ydEFyZ3VtZW50cyhWaWV3cG9ydEFy
Z3VtZW50cygpKTsKICAgICBtX3ZpZXdwb3J0Q29uZmlndXJhdGlvbi5zZXRDb250ZW50c1NpemUo
SW50U2l6ZSgpKTsKICAgICB2aWV3cG9ydENvbmZpZ3VyYXRpb25DaGFuZ2VkKCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oIGIvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAppbmRleCAyOWY2YWZlNjc1NDNk
NmRjMDg4ZDBiNzYzNDYxNmUyOTYwZmM2Y2E1Li41NWRiYmU5ODM0MjUwMmRhZDE4NTIzODY3ZWE3
NTg5NGQ5NGIyYjU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViUGFnZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQ
YWdlLmgKQEAgLTcxMiw4ICs3MTIsOSBAQCBwdWJsaWM6CiAKICNpZiBQTEFURk9STShJT1MpCiAg
ICAgdm9pZCBzZXRWaWV3cG9ydENvbmZpZ3VyYXRpb25NaW5pbXVtTGF5b3V0U2l6ZShjb25zdCBX
ZWJDb3JlOjpGbG9hdFNpemUmKTsKLSAgICB2b2lkIHNldE1pbmltdW1MYXlvdXRTaXplRm9yTWlu
aW1hbFVJKGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYpOwotICAgIHZvaWQgZHluYW1pY1ZpZXdw
b3J0U2l6ZVVwZGF0ZShjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUmIG1pbmltdW1MYXlvdXRTaXpl
LCBjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmIHRhcmdldEV4cG9zZWRDb250ZW50UmVjdCwgY29u
c3QgV2ViQ29yZTo6RmxvYXRSZWN0JiB0YXJnZXRVbm9ic2N1cmVkUmVjdCwgY29uc3QgV2ViQ29y
ZTo6RmxvYXRSZWN0JiB0YXJnZXRVbm9ic2N1cmVkUmVjdEluU2Nyb2xsVmlld0Nvb3JkaW5hdGVz
LCBkb3VibGUgc2NhbGUpOworICAgIHZvaWQgc2V0Vmlld3BvcnRDb25maWd1cmF0aW9uTWluaW11
bUxheW91dFNpemVGb3JNaW5pbWFsVUkoY29uc3QgV2ViQ29yZTo6RmxvYXRTaXplJik7CisgICAg
dm9pZCBzZXRNYXhpbXVtVW5vYnNjdXJlZFNpemUoY29uc3QgV2ViQ29yZTo6RmxvYXRTaXplJik7
CisgICAgdm9pZCBkeW5hbWljVmlld3BvcnRTaXplVXBkYXRlKGNvbnN0IFdlYkNvcmU6OkZsb2F0
U2l6ZSYgbWluaW11bUxheW91dFNpemUsIGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYgbWluaW11
bUxheW91dFNpemVGb3JNaW5pbWFsVUksIGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYgbWF4aW11
bVVub2JzY3VyZWRTaXplLCBjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmIHRhcmdldEV4cG9zZWRD
b250ZW50UmVjdCwgY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiB0YXJnZXRVbm9ic2N1cmVkUmVj
dCwgY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiB0YXJnZXRVbm9ic2N1cmVkUmVjdEluU2Nyb2xs
Vmlld0Nvb3JkaW5hdGVzLCBkb3VibGUgc2NhbGUpOwogICAgIHZvaWQgdXBkYXRlVmlzaWJsZUNv
bnRlbnRSZWN0cyhjb25zdCBWaXNpYmxlQ29udGVudFJlY3RVcGRhdGVJbmZvJik7CiAgICAgYm9v
bCBzY2FsZVdhc1NldEJ5VUlQcm9jZXNzKCkgY29uc3QgeyByZXR1cm4gbV9zY2FsZVdhc1NldEJ5
VUlQcm9jZXNzOyB9CiAgICAgdm9pZCB3aWxsU3RhcnRVc2VyVHJpZ2dlcmVkWm9vbWluZygpOwpA
QCAtNzIzLDYgKzcyNCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHpvb21Ub1JlY3QoV2ViQ29yZTo6
RmxvYXRSZWN0LCBkb3VibGUgbWluaW11bVNjYWxlLCBkb3VibGUgbWF4aW11bVNjYWxlKTsKICAg
ICB2b2lkIGRpc3BhdGNoVG91Y2hFdmVudChjb25zdCBXZWJUb3VjaEV2ZW50JiwgYm9vbCYgaGFu
ZGxlZCk7CiAgICAgdm9pZCBjb21wbGV0ZVBlbmRpbmdTeW50aGV0aWNDbGlja0ZvckNvbnRlbnRD
aGFuZ2VPYnNlcnZlcigpOworICAgIHZvaWQgd2lsbEZsdXNoTGF5ZXJzKCk7CiAjZW5kaWYKIAog
I2lmIFBMQVRGT1JNKEdUSykgJiYgVVNFKFRFWFRVUkVfTUFQUEVSX0dMKQpAQCAtODIxLDYgKzgy
Myw3IEBAIHByaXZhdGU6CiAjaWYgUExBVEZPUk0oSU9TKQogICAgIHZvaWQgcmVzZXRWaWV3cG9y
dERlZmF1bHRDb25maWd1cmF0aW9uKFdlYkZyYW1lKiBtYWluRnJhbWUpOwogICAgIHZvaWQgdmll
d3BvcnRDb25maWd1cmF0aW9uQ2hhbmdlZCgpOworICAgIHZvaWQgdXBkYXRlVmlld3BvcnRTaXpl
Rm9yQ1NTVmlld3BvcnRVbml0cygpOwogCiAgICAgc3RhdGljIHZvaWQgY29udmVydFNlbGVjdGlv
blJlY3RzVG9Sb290VmlldyhXZWJDb3JlOjpGcmFtZVZpZXcqLCBWZWN0b3I8V2ViQ29yZTo6U2Vs
ZWN0aW9uUmVjdD4mKTsKICAgICBQYXNzUmVmUHRyPFdlYkNvcmU6OlJhbmdlPiByYW5nZUZvcldl
YlNlbGVjdGlvbkF0UG9zaXRpb24oY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmLCBjb25zdCBXZWJD
b3JlOjpWaXNpYmxlUG9zaXRpb24mLCBTZWxlY3Rpb25GbGFncyYpOwpAQCAtMTE5NywxMiArMTIw
MCwxMyBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9oYXNSZWNlaXZlZFZpc2libGVDb250ZW50UmVj
dHNBZnRlckRpZENvbW1pdExvYWQ7CiAgICAgYm9vbCBtX3NjYWxlV2FzU2V0QnlVSVByb2Nlc3M7
CiAgICAgYm9vbCBtX3VzZXJIYXNDaGFuZ2VkUGFnZVNjYWxlRmFjdG9yOworICAgIGJvb2wgbV9o
YXNSZW5kZXJlZENvbnRlbnRBZnRlckRpZENvbW1pdExvYWQ7CiAgICAgYm9vbCBtX3VzZXJJc0lu
dGVyYWN0aW5nOwogICAgIFdlYkNvcmU6OkZsb2F0U2l6ZSBtX3NjcmVlblNpemU7CiAgICAgV2Vi
Q29yZTo6RmxvYXRTaXplIG1fYXZhaWxhYmxlU2NyZWVuU2l6ZTsKICAgICBSZWZQdHI8V2ViQ29y
ZTo6UmFuZ2U+IG1fY3VycmVudEJsb2NrU2VsZWN0aW9uOwogICAgIFdlYkNvcmU6OkludFNpemUg
bV9ibG9ja1NlbGVjdGlvbkRlc2lyZWRTaXplOwotICAgIFdlYkNvcmU6OkZsb2F0U2l6ZSBtX21p
bmltdW1MYXlvdXRTaXplRm9yTWluaW1hbFVJOworICAgIFdlYkNvcmU6OkZsb2F0U2l6ZSBtX21h
eGltdW1Vbm9ic2N1cmVkU2l6ZTsKICAgICBib29sIG1faW5EeW5hbWljU2l6ZVVwZGF0ZTsKICAg
ICBIYXNoTWFwPHN0ZDo6cGFpcjxXZWJDb3JlOjpJbnRTaXplLCBkb3VibGU+LCBXZWJDb3JlOjpJ
bnRQb2ludD4gbV9keW5hbWljU2l6ZVVwZGF0ZUhpc3Rvcnk7CiAgICAgUmVmUHRyPFdlYkNvcmU6
Ok5vZGU+IG1fcGVuZGluZ1N5bnRoZXRpY0NsaWNrTm9kZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluIGIvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4KaW5kZXggMWMxY2Ni
MDg4MjZmMTQwMmQzYWFmYzFkNDg0MTcwZWQyOGUzZDI3YS4uYTFjY2QxYmVkMmExMDAyNTAyYmE4
MjlmY2Q1OTZhYmU3NGYzY2Q0ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4KQEAgLTQ0LDggKzQ0LDkgQEAgbWVzc2Fn
ZXMgLT4gV2ViUGFnZSBMZWdhY3lSZWNlaXZlciB7CiAgICAgV2hlZWxFdmVudFN5bmNGb3JUZXN0
aW5nKFdlYktpdDo6V2ViV2hlZWxFdmVudCBldmVudCkgLT4gKGJvb2wgaGFuZGxlZCkKICNpZiBQ
TEFURk9STShJT1MpCiAgICAgU2V0Vmlld3BvcnRDb25maWd1cmF0aW9uTWluaW11bUxheW91dFNp
emUoV2ViQ29yZTo6RmxvYXRTaXplIHNpemUpCi0gICAgU2V0TWluaW11bUxheW91dFNpemVGb3JN
aW5pbWFsVUkoV2ViQ29yZTo6RmxvYXRTaXplIHNpemUpCi0gICAgRHluYW1pY1ZpZXdwb3J0U2l6
ZVVwZGF0ZShXZWJDb3JlOjpGbG9hdFNpemUgbWluaW11bUxheW91dFNpemUsIFdlYkNvcmU6OkZs
b2F0UmVjdCB0YXJnZXRFeHBvc2VkQ29udGVudFJlY3QsIFdlYkNvcmU6OkZsb2F0UmVjdCB0YXJn
ZXRVbm9ic2N1cmVkUmVjdCwgV2ViQ29yZTo6RmxvYXRSZWN0IHRhcmdldFVub2JzY3VyZWRSZWN0
SW5TY3JvbGxWaWV3Q29vcmRpbmF0ZXMsIGRvdWJsZSBzY2FsZSkKKyAgICBTZXRWaWV3cG9ydENv
bmZpZ3VyYXRpb25NaW5pbXVtTGF5b3V0U2l6ZUZvck1pbmltYWxVSShXZWJDb3JlOjpGbG9hdFNp
emUgc2l6ZSkKKyAgICBTZXRNYXhpbXVtVW5vYnNjdXJlZFNpemUoV2ViQ29yZTo6RmxvYXRTaXpl
IHNpemUpCisgICAgRHluYW1pY1ZpZXdwb3J0U2l6ZVVwZGF0ZShXZWJDb3JlOjpGbG9hdFNpemUg
bWluaW11bUxheW91dFNpemUsIFdlYkNvcmU6OkZsb2F0U2l6ZSBtaW5pbXVtTGF5b3V0U2l6ZUZv
ck1pbmltYWxVSSwgIFdlYkNvcmU6OkZsb2F0U2l6ZSBtYXhpbXVtVW5vYnNjdXJlZFNpemUsIFdl
YkNvcmU6OkZsb2F0UmVjdCB0YXJnZXRFeHBvc2VkQ29udGVudFJlY3QsIFdlYkNvcmU6OkZsb2F0
UmVjdCB0YXJnZXRVbm9ic2N1cmVkUmVjdCwgV2ViQ29yZTo6RmxvYXRSZWN0IHRhcmdldFVub2Jz
Y3VyZWRSZWN0SW5TY3JvbGxWaWV3Q29vcmRpbmF0ZXMsIGRvdWJsZSBzY2FsZSkKIAogICAgIEhh
bmRsZVRhcChXZWJDb3JlOjpJbnRQb2ludCBwb2ludCkKICAgICBQb3RlbnRpYWxUYXBBdFBvc2l0
aW9uKHVpbnQ2NF90IHJlcXVlc3RJRCwgV2ViQ29yZTo6RmxvYXRQb2ludCBwb2ludCkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5t
bSBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbQpp
bmRleCA3ODJhMTM4ZjcyYzU2Y2M0YjdlNzYzMGY2MmIwZTMwYzcyNjkyNzEwLi5iMWM5ODIyZDc2
OGIyOTI5OGRhOTJmZjY1YzNiYTUxMzYxOTkxN2QxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0KKysrIGIvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tCkBAIC0xOTA1LDE4ICsxOTA1
LDM1IEBAIHZvaWQgV2ViUGFnZTo6c2V0Vmlld3BvcnRDb25maWd1cmF0aW9uTWluaW11bUxheW91
dFNpemUoY29uc3QgRmxvYXRTaXplJiBzaXplKQogICAgIHZpZXdwb3J0Q29uZmlndXJhdGlvbkNo
YW5nZWQoKTsKIH0KIAotdm9pZCBXZWJQYWdlOjpzZXRNaW5pbXVtTGF5b3V0U2l6ZUZvck1pbmlt
YWxVSShjb25zdCBGbG9hdFNpemUmIHNpemUpCit2b2lkIFdlYlBhZ2U6OnNldFZpZXdwb3J0Q29u
ZmlndXJhdGlvbk1pbmltdW1MYXlvdXRTaXplRm9yTWluaW1hbFVJKGNvbnN0IEZsb2F0U2l6ZSYg
c2l6ZSkKIHsKLSAgICByZXNldFRleHRBdXRvc2l6aW5nQmVmb3JlTGF5b3V0SWZOZWVkZWQobV9t
aW5pbXVtTGF5b3V0U2l6ZUZvck1pbmltYWxVSSwgc2l6ZSk7Ci0gICAgbV9taW5pbXVtTGF5b3V0
U2l6ZUZvck1pbmltYWxVSSA9IHNpemU7CisgICAgcmVzZXRUZXh0QXV0b3NpemluZ0JlZm9yZUxh
eW91dElmTmVlZGVkKG1fdmlld3BvcnRDb25maWd1cmF0aW9uLm1pbmltdW1MYXlvdXRTaXplRm9y
TWluaW1hbFVJKCksIHNpemUpOworICAgIG1fdmlld3BvcnRDb25maWd1cmF0aW9uLnNldE1pbmlt
dW1MYXlvdXRTaXplRm9yTWluaW1hbFVJKHNpemUpOwogICAgIHZpZXdwb3J0Q29uZmlndXJhdGlv
bkNoYW5nZWQoKTsKIH0KIAordm9pZCBXZWJQYWdlOjpzZXRNYXhpbXVtVW5vYnNjdXJlZFNpemUo
Y29uc3QgRmxvYXRTaXplJiBtYXhpbXVtVW5vYnNjdXJlZFNpemUpCit7CisgICAgbV9tYXhpbXVt
VW5vYnNjdXJlZFNpemUgPSBtYXhpbXVtVW5vYnNjdXJlZFNpemU7CisgICAgdXBkYXRlVmlld3Bv
cnRTaXplRm9yQ1NTVmlld3BvcnRVbml0cygpOworfQorCiBzdGF0aWMgaW5saW5lIGJvb2wgd2l0
aGluRXBzaWxvbihmbG9hdCBhLCBmbG9hdCBiKQogewogICAgIHJldHVybiBmYWJzKGEgLSBiKSA8
IHN0ZDo6bnVtZXJpY19saW1pdHM8ZmxvYXQ+OjplcHNpbG9uKCk7CiB9CiAKK3ZvaWQgV2ViUGFn
ZTo6d2lsbEZsdXNoTGF5ZXJzKCkKK3sKKyAgICBpZiAobV9oYXNSZW5kZXJlZENvbnRlbnRBZnRl
ckRpZENvbW1pdExvYWQpCisgICAgICAgIHJldHVybjsKKworICAgIG1faGFzUmVuZGVyZWRDb250
ZW50QWZ0ZXJEaWRDb21taXRMb2FkID0gdHJ1ZTsKKyAgICBtX3ZpZXdwb3J0Q29uZmlndXJhdGlv
bi5kaWRGaXJzdFJlbmRlcigpOworCisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpT
ZXRVc2VzTWluaW1hbFVJKG1fdmlld3BvcnRDb25maWd1cmF0aW9uLnVzZXNNaW5pbWFsVUkoKSkp
OworfQorCiB2b2lkIFdlYlBhZ2U6OnJlc2V0VGV4dEF1dG9zaXppbmdCZWZvcmVMYXlvdXRJZk5l
ZWRlZChjb25zdCBGbG9hdFNpemUmIG9sZFNpemUsIGNvbnN0IEZsb2F0U2l6ZSYgbmV3U2l6ZSkK
IHsKICAgICBpZiAob2xkU2l6ZS53aWR0aCgpID09IG5ld1NpemUud2lkdGgoKSkKQEAgLTE5MzAs
NyArMTk0Nyw3IEBAIHZvaWQgV2ViUGFnZTo6cmVzZXRUZXh0QXV0b3NpemluZ0JlZm9yZUxheW91
dElmTmVlZGVkKGNvbnN0IEZsb2F0U2l6ZSYgb2xkU2l6ZSwKICAgICB9CiB9CiAKLXZvaWQgV2Vi
UGFnZTo6ZHluYW1pY1ZpZXdwb3J0U2l6ZVVwZGF0ZShjb25zdCBGbG9hdFNpemUmIG1pbmltdW1M
YXlvdXRTaXplLCBjb25zdCBGbG9hdFJlY3QmIHRhcmdldEV4cG9zZWRDb250ZW50UmVjdCwgY29u
c3QgRmxvYXRSZWN0JiB0YXJnZXRVbm9ic2N1cmVkUmVjdCwgY29uc3QgV2ViQ29yZTo6RmxvYXRS
ZWN0JiB0YXJnZXRVbm9ic2N1cmVkUmVjdEluU2Nyb2xsVmlld0Nvb3JkaW5hdGVzLCBkb3VibGUg
dGFyZ2V0U2NhbGUpCit2b2lkIFdlYlBhZ2U6OmR5bmFtaWNWaWV3cG9ydFNpemVVcGRhdGUoY29u
c3QgRmxvYXRTaXplJiBtaW5pbXVtTGF5b3V0U2l6ZSwgY29uc3QgRmxvYXRTaXplJiBtaW5pbXVt
TGF5b3V0U2l6ZUZvck1pbmltYWxVSSwgY29uc3QgV2ViQ29yZTo6RmxvYXRTaXplJiBtYXhpbXVt
VW5vYnNjdXJlZFNpemUsIGNvbnN0IEZsb2F0UmVjdCYgdGFyZ2V0RXhwb3NlZENvbnRlbnRSZWN0
LCBjb25zdCBGbG9hdFJlY3QmIHRhcmdldFVub2JzY3VyZWRSZWN0LCBjb25zdCBXZWJDb3JlOjpG
bG9hdFJlY3QmIHRhcmdldFVub2JzY3VyZWRSZWN0SW5TY3JvbGxWaWV3Q29vcmRpbmF0ZXMsIGRv
dWJsZSB0YXJnZXRTY2FsZSkKIHsKICAgICBUZW1wb3JhcnlDaGFuZ2U8Ym9vbD4gZHluYW1pY1Np
emVVcGRhdGVHdWFyZChtX2luRHluYW1pY1NpemVVcGRhdGUsIHRydWUpOwogICAgIC8vIEZJWE1F
OiB0aGlzIGRvZXMgbm90IGhhbmRsZSB0aGUgY2FzZXMgd2hlcmUgdGhlIGNvbnRlbnQgd291bGQg
Y2hhbmdlIHRoZSBjb250ZW50IHNpemUgb3Igc2Nyb2xsIHBvc2l0aW9uIGZyb20gSmF2YVNjcmlw
dC4KQEAgLTE5NjksOSArMTk4NiwxNCBAQCB2b2lkIFdlYlBhZ2U6OmR5bmFtaWNWaWV3cG9ydFNp
emVVcGRhdGUoY29uc3QgRmxvYXRTaXplJiBtaW5pbXVtTGF5b3V0U2l6ZSwgY29ucwogICAgIH0K
IAogICAgIHJlc2V0VGV4dEF1dG9zaXppbmdCZWZvcmVMYXlvdXRJZk5lZWRlZChtX3ZpZXdwb3J0
Q29uZmlndXJhdGlvbi5taW5pbXVtTGF5b3V0U2l6ZSgpLCBtaW5pbXVtTGF5b3V0U2l6ZSk7Cisg
ICAgcmVzZXRUZXh0QXV0b3NpemluZ0JlZm9yZUxheW91dElmTmVlZGVkKG1fdmlld3BvcnRDb25m
aWd1cmF0aW9uLm1pbmltdW1MYXlvdXRTaXplRm9yTWluaW1hbFVJKCksIG1pbmltdW1MYXlvdXRT
aXplRm9yTWluaW1hbFVJKTsKICAgICBtX3ZpZXdwb3J0Q29uZmlndXJhdGlvbi5zZXRNaW5pbXVt
TGF5b3V0U2l6ZShtaW5pbXVtTGF5b3V0U2l6ZSk7CisgICAgbV92aWV3cG9ydENvbmZpZ3VyYXRp
b24uc2V0TWluaW11bUxheW91dFNpemVGb3JNaW5pbWFsVUkobWluaW11bUxheW91dFNpemVGb3JN
aW5pbWFsVUkpOwogICAgIEludFNpemUgbmV3TGF5b3V0U2l6ZSA9IG1fdmlld3BvcnRDb25maWd1
cmF0aW9uLmxheW91dFNpemUoKTsKKwogICAgIHNldEZpeGVkTGF5b3V0U2l6ZShuZXdMYXlvdXRT
aXplKTsKKyAgICBzZXRNYXhpbXVtVW5vYnNjdXJlZFNpemUobWF4aW11bVVub2JzY3VyZWRTaXpl
KTsKKwogICAgIGZyYW1lVmlldy51cGRhdGVMYXlvdXRBbmRTdHlsZUlmTmVlZGVkUmVjdXJzaXZl
KCk7CiAKICAgICBJbnRTaXplIG5ld0NvbnRlbnRTaXplID0gZnJhbWVWaWV3LmNvbnRlbnRzU2l6
ZSgpOwpAQCAtMjE0MiwxNCArMjE2NCwxMiBAQCB2b2lkIFdlYlBhZ2U6OnZpZXdwb3J0Q29uZmln
dXJhdGlvbkNoYW5nZWQoKQogCiAgICAgbV9wYWdlLT5zZXRab29tZWRPdXRQYWdlU2NhbGVGYWN0
b3IobV92aWV3cG9ydENvbmZpZ3VyYXRpb24ubWluaW11bVNjYWxlKCkpOwogCisgICAgdXBkYXRl
Vmlld3BvcnRTaXplRm9yQ1NTVmlld3BvcnRVbml0cygpOworCiAgICAgRnJhbWVWaWV3JiBmcmFt
ZVZpZXcgPSAqbWFpbkZyYW1lVmlldygpOwotICAgIEZsb2F0U2l6ZSB2aWV3cG9ydFNpemUgPSAh
bV9taW5pbXVtTGF5b3V0U2l6ZUZvck1pbmltYWxVSS5pc0VtcHR5KCkgPyBtX21pbmltdW1MYXlv
dXRTaXplRm9yTWluaW1hbFVJIDogbV92aWV3cG9ydENvbmZpZ3VyYXRpb24ubWluaW11bUxheW91
dFNpemUoKTsKLSAgICB2aWV3cG9ydFNpemUuc2NhbGUoMSAvIGluaXRpYWxTY2FsZSk7Ci0gICAg
ZnJhbWVWaWV3LnNldFZpZXdwb3J0U2l6ZShyb3VuZGVkSW50U2l6ZSh2aWV3cG9ydFNpemUpKTsK
LSAgICAKICAgICBJbnRQb2ludCBzY3JvbGxQb3NpdGlvbiA9IGZyYW1lVmlldy5zY3JvbGxQb3Np
dGlvbigpOwogICAgIGlmICghbV9oYXNSZWNlaXZlZFZpc2libGVDb250ZW50UmVjdHNBZnRlckRp
ZENvbW1pdExvYWQpIHsKLSAgICAgICAgRmxvYXRTaXplIG1pbmltdW1MYXlvdXRTaXplSW5TY3Jv
bGxWaWV3Q29vcmRpbmF0ZXMgPSBtX3ZpZXdwb3J0Q29uZmlndXJhdGlvbi5taW5pbXVtTGF5b3V0
U2l6ZSgpOworICAgICAgICBGbG9hdFNpemUgbWluaW11bUxheW91dFNpemVJblNjcm9sbFZpZXdD
b29yZGluYXRlcyA9IG1fdmlld3BvcnRDb25maWd1cmF0aW9uLmFjdGl2ZU1pbmltdW1MYXlvdXRT
aXplSW5TY3JvbGxWaWV3Q29vcmRpbmF0ZXMoKTsKICAgICAgICAgbWluaW11bUxheW91dFNpemVJ
blNjcm9sbFZpZXdDb29yZGluYXRlcy5zY2FsZSgxIC8gc2NhbGUpOwogICAgICAgICBJbnRTaXpl
IG1pbmltdW1MYXlvdXRTaXplSW5Eb2N1bWVudENvb3JkaW5hdGVzID0gcm91bmRlZEludFNpemUo
bWluaW11bUxheW91dFNpemVJblNjcm9sbFZpZXdDb29yZGluYXRlcyk7CiAgICAgICAgIEludFJl
Y3QgdW5vYnNjdXJlZENvbnRlbnRSZWN0KHNjcm9sbFBvc2l0aW9uLCBtaW5pbXVtTGF5b3V0U2l6
ZUluRG9jdW1lbnRDb29yZGluYXRlcyk7CkBAIC0yMTY2LDEwICsyMTg2LDIxIEBAIHZvaWQgV2Vi
UGFnZTo6dmlld3BvcnRDb25maWd1cmF0aW9uQ2hhbmdlZCgpCiAgICAgICAgIC8vIFRoaXMgdGFr
ZXMgc2NhbGUgaW50byBhY2NvdW50LCBzbyBkbyBhZnRlciB0aGUgc2NhbGUgY2hhbmdlLgogICAg
ICAgICBmcmFtZVZpZXcuc2V0Q3VzdG9tRml4ZWRQb3NpdGlvbkxheW91dFJlY3QoZW5jbG9zaW5n
SW50UmVjdChmcmFtZVZpZXcudmlld3BvcnRDb25zdHJhaW5lZE9iamVjdHNSZWN0KCkpKTsKIAot
ICAgICAgICBmcmFtZVZpZXcuc2V0Q3VzdG9tU2l6ZUZvclJlc2l6ZUV2ZW50KGV4cGFuZGVkSW50
U2l6ZShtX3ZpZXdwb3J0Q29uZmlndXJhdGlvbi5taW5pbXVtTGF5b3V0U2l6ZSgpKSk7CisgICAg
ICAgIGZyYW1lVmlldy5zZXRDdXN0b21TaXplRm9yUmVzaXplRXZlbnQoZXhwYW5kZWRJbnRTaXpl
KG1fdmlld3BvcnRDb25maWd1cmF0aW9uLmFjdGl2ZU1pbmltdW1MYXlvdXRTaXplSW5TY3JvbGxW
aWV3Q29vcmRpbmF0ZXMoKSkpOwogICAgIH0KIH0KIAordm9pZCBXZWJQYWdlOjp1cGRhdGVWaWV3
cG9ydFNpemVGb3JDU1NWaWV3cG9ydFVuaXRzKCkKK3sKKyAgICBGbG9hdFNpemUgbGFyZ2VzdFVu
b2JzY3VyZWRSZWN0ID0gbV9tYXhpbXVtVW5vYnNjdXJlZFNpemU7CisgICAgaWYgKGxhcmdlc3RV
bm9ic2N1cmVkUmVjdC5pc0VtcHR5KCkpCisgICAgICAgIGxhcmdlc3RVbm9ic2N1cmVkUmVjdCA9
IG1fdmlld3BvcnRDb25maWd1cmF0aW9uLm1pbmltdW1MYXlvdXRTaXplRm9yTWluaW1hbFVJKCk7
CisKKyAgICBGcmFtZVZpZXcmIGZyYW1lVmlldyA9ICptYWluRnJhbWVWaWV3KCk7CisgICAgbGFy
Z2VzdFVub2JzY3VyZWRSZWN0LnNjYWxlKDEgLyBtX3ZpZXdwb3J0Q29uZmlndXJhdGlvbi5pbml0
aWFsU2NhbGUoKSk7CisgICAgZnJhbWVWaWV3LnNldFZpZXdwb3J0U2l6ZUZvckNTU1ZpZXdwb3J0
VW5pdHMocm91bmRlZEludFNpemUobGFyZ2VzdFVub2JzY3VyZWRSZWN0KSk7Cit9CisKIHZvaWQg
V2ViUGFnZTo6YXBwbGljYXRpb25XaWxsUmVzaWduQWN0aXZlKCkKIHsKICAgICBbW05TTm90aWZp
Y2F0aW9uQ2VudGVyIGRlZmF1bHRDZW50ZXJdIHBvc3ROb3RpZmljYXRpb25OYW1lOldlYlVJQXBw
bGljYXRpb25XaWxsUmVzaWduQWN0aXZlTm90aWZpY2F0aW9uIG9iamVjdDpuaWxdOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9SZW1vdGVMYXllclRy
ZWVEcmF3aW5nQXJlYS5tbSBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMv
UmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWEubW0KaW5kZXggOWY1ZjdjMWExZDEyMTY5ZjYyOWE2
NWU5YzgwZTQxNjNlNTg2YmMwOS4uM2E4NTlhODlkNTg5N2E0YzRjZmE2YTMyZjdmNzFlOWE4NWUy
NTMzNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9S
ZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYlBhZ2UvbWFjL1JlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhLm1tCkBAIC0yNDYsNiAr
MjQ2LDggQEAgdm9pZCBSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYTo6Zmx1c2hMYXllcnMoKQog
CiAgICAgbV93ZWJQYWdlLT5sYXlvdXRJZk5lZWRlZCgpOwogCisgICAgbV93ZWJQYWdlLT53aWxs
Rmx1c2hMYXllcnMoKTsKKwogICAgIEZsb2F0UmVjdCB2aXNpYmxlUmVjdChGbG9hdFBvaW50KCks
IG1fdmlld1NpemUpOwogICAgIHZpc2libGVSZWN0LmludGVyc2VjdChtX3Njcm9sbGVkRXhwb3Nl
ZFJlY3QpOwogICAgIG1fd2ViUGFnZS0+cGFnZU92ZXJsYXlDb250cm9sbGVyKCkuZmx1c2hQYWdl
T3ZlcmxheUxheWVycyh2aXNpYmxlUmVjdCk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>231930</attachid>
            <date>2014-05-22 18:56:33 -0700</date>
            <delta_ts>2014-05-22 20:03:30 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-133162-20140522185605.patch</filename>
            <type>text/plain</type>
            <size>63834</size>
            <attacher name="Benjamin Poulain">benjamin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTY5MTgxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOGM0NWI3YzAxNzZmOTBm
NmM4MTY1ODA1ZGE3M2UwZjU0ZWQ5ZWQxNS4uOWE4MTZmMWIwNzIyY2E4MGMyYTk5NTQyYTdmYzVi
NDE5ODNjOTVlMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU3IEBACisyMDE0LTA1LTIxICBCZW5q
YW1pbiBQb3VsYWluICA8YnBvdWxhaW5AYXBwbGUuY29tPgorCisgICAgICAgIFtpT1NdW1dLMl0g
QWRkIHN1cHBvcnQgZm9yIG1pbmltYWwtdWkgdmlld3BvcnRzCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzMxNjIKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgc3VwcG9ydCBmb3IgbWluaW1hbC11aSBk
aXJlY3RseSBpbnRvIHRoZSBWaWV3cG9ydCBjb25maWd1cmF0aW9uLgorCisgICAgICAgIFZpZXdw
b3J0Q29uZmlndXJhdGlvbiBrbm93cyBhYm91dCB0d28ga2luZHMgb2YgbGF5b3V0IHNpemUgaW4g
c2Nyb2xsdmlldyBjb29yZGluYXRlczoKKyAgICAgICAgLW5vcm1hbCBzaXplCisgICAgICAgIC1t
aW5pbWFsIHVpIHNpemUuCisKKyAgICAgICAgSW5pdGlhbGx5LCB0aGUgcGFnZSBpcyBpbml0aWFs
aXplZCB3aXRoIHJlc2V0TWluaW1hbFVJKCkgYW5kIHN0YXJ0IHdpdGggYSBub3JtYWwgbGF5b3V0
LgorCisgICAgICAgIEF0IGFueSB0aW1lIGJlZm9yZSB0aGUgbWFpbiByZXNvdXJjZSBpcyBsb2Fk
ZWQsIHRoZSBXZWIgcGFnZSBjYW4gdXBkYXRlIGl0cyB2aWV3cG9ydCBtZXRhIHRhZworICAgICAg
ICB0byBpbmNsdWRlIG1pbmltYWwtdWkuIFRoZSB2aWV3cG9ydCBjb25maWd1cmF0aW9uIGlzIHVw
ZGF0ZWQgaW1tZWRpYXRlbHkgdG8gcmVmbGVjdCB0aGUgbWluaW1hbC11aQorICAgICAgICBsYXlv
dXQgc2l6ZS4gQW55IGxheW91dCBhZnRlciB0aGF0IHRha2UgaW50byBhY2NvdW50IHRoZSBtaW5p
bWFsLXVpLgorCisgICAgICAgICogV2ViQ29yZS5leHAuaW46CisgICAgICAgICogY3NzL0xlbmd0
aEZ1bmN0aW9ucy5jcHA6CisgICAgICAgIChXZWJDb3JlOjptaW5pbXVtVmFsdWVGb3JMZW5ndGgp
OgorICAgICAgICAoV2ViQ29yZTo6ZmxvYXRWYWx1ZUZvckxlbmd0aCk6CisgICAgICAgICogY3Nz
L1N0eWxlUmVzb2x2ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVSZXNvbHZlcjo6dmll
d3BvcnRQZXJjZW50YWdlVmFsdWUpOgorICAgICAgICAqIGRvbS9WaWV3cG9ydEFyZ3VtZW50cy5o
OgorICAgICAgICAoV2ViQ29yZTo6Vmlld3BvcnRBcmd1bWVudHM6Om9wZXJhdG9yPT0pOgorICAg
ICAgICAqIHBhZ2UvRnJhbWVWaWV3LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lVmlldzo6
c2V0Vmlld3BvcnRTaXplRm9yQ1NTVmlld3BvcnRVbml0cyk6CisgICAgICAgIChXZWJDb3JlOjpG
cmFtZVZpZXc6OnZpZXdwb3J0U2l6ZUZvckNTU1ZpZXdwb3J0VW5pdHMpOgorICAgICAgICAoV2Vi
Q29yZTo6RnJhbWVWaWV3OjpzZXRWaWV3cG9ydFNpemUpOiBEZWxldGVkLgorICAgICAgICAoV2Vi
Q29yZTo6RnJhbWVWaWV3Ojp2aWV3cG9ydFNpemUpOiBEZWxldGVkLgorICAgICAgICAqIHBhZ2Uv
RnJhbWVWaWV3Lmg6CisgICAgICAgICogcGFnZS9WaWV3cG9ydENvbmZpZ3VyYXRpb24uY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Vmlld3BvcnRDb25maWd1cmF0aW9uOjpWaWV3cG9ydENvbmZpZ3Vy
YXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6Vmlld3BvcnRDb25maWd1cmF0aW9uOjpzZXRNaW5p
bXVtTGF5b3V0U2l6ZSk6CisgICAgICAgIChXZWJDb3JlOjpWaWV3cG9ydENvbmZpZ3VyYXRpb246
OnNldE1pbmltdW1MYXlvdXRTaXplRm9yTWluaW1hbFVJKToKKyAgICAgICAgKFdlYkNvcmU6OlZp
ZXdwb3J0Q29uZmlndXJhdGlvbjo6YWN0aXZlTWluaW11bUxheW91dFNpemVJblNjcm9sbFZpZXdD
b29yZGluYXRlcyk6CisgICAgICAgIChXZWJDb3JlOjpWaWV3cG9ydENvbmZpZ3VyYXRpb246OnJl
c2V0TWluaW1hbFVJKToKKyAgICAgICAgKFdlYkNvcmU6OlZpZXdwb3J0Q29uZmlndXJhdGlvbjo6
cGFnZVdpbGxSZW5kZXJGaXJzdEZyYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OlZpZXdwb3J0Q29u
ZmlndXJhdGlvbjo6aW5pdGlhbFNjYWxlKToKKyAgICAgICAgKFdlYkNvcmU6OlZpZXdwb3J0Q29u
ZmlndXJhdGlvbjo6bWluaW11bVNjYWxlKToKKyAgICAgICAgKFdlYkNvcmU6OlZpZXdwb3J0Q29u
ZmlndXJhdGlvbjo6dXBkYXRlQ29uZmlndXJhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpWaWV3
cG9ydENvbmZpZ3VyYXRpb246OmxheW91dFdpZHRoKToKKyAgICAgICAgKFdlYkNvcmU6OlZpZXdw
b3J0Q29uZmlndXJhdGlvbjo6bGF5b3V0SGVpZ2h0KToKKyAgICAgICAgKFdlYkNvcmU6OlZpZXdw
b3J0Q29uZmlndXJhdGlvbjo6ZGVzY3JpcHRpb24pOgorICAgICAgICAqIHBhZ2UvVmlld3BvcnRD
b25maWd1cmF0aW9uLmg6CisgICAgICAgIChXZWJDb3JlOjpWaWV3cG9ydENvbmZpZ3VyYXRpb246
Om1pbmltdW1MYXlvdXRTaXplRm9yTWluaW1hbFVJKToKKyAgICAgICAgKFdlYkNvcmU6OlZpZXdw
b3J0Q29uZmlndXJhdGlvbjo6dXNlc01pbmltYWxVSSk6CisgICAgICAgICogcmVuZGVyaW5nL1Jl
bmRlclZpZXcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVmlldzo6dmlld3BvcnRTaXpl
Rm9yQ1NTVmlld3BvcnRVbml0cyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJWaWV3Ojp2aWV3
cG9ydFNpemUpOiBEZWxldGVkLgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJWaWV3Lmg6CisK
IDIwMTQtMDUtMjEgIERlYW4gSmFja3NvbiAgPGRpbm9AYXBwbGUuY29tPgogCiAgICAgICAgIFtp
T1NdIFVwZGF0ZSBzb21lIG9mIHRoZSBtZWRpYSBjb250cm9scyBidXR0b25zIHRvIGJlIGJpZ2dl
cgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdDIv
Q2hhbmdlTG9nCmluZGV4IGEwN2ZjNTg1NDMzMDM1MzUyMGIwMjE2NWQ1YmYxNTg5NzUyNzJiNGMu
LjAxMWRhYTVmODQ2MTAxYTU2NjQ5NmZjYTlhMmJiNGZlNDUyOWNhMWQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAg
LTEsMyArMSw2MCBAQAorMjAxNC0wNS0yMSAgQmVuamFtaW4gUG91bGFpbiAgPGJwb3VsYWluQGFw
cGxlLmNvbT4KKworICAgICAgICBbaU9TXVtXSzJdIEFkZCBzdXBwb3J0IGZvciBtaW5pbWFsLXVp
IHZpZXdwb3J0cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTMzMTYyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgSW4gdGhlIFdlYktpdDIgbGF5ZXJzLCB3ZSBoYXZlIHR3byBwYXJ0cyB0byBtaW5pbWFsLXVp
LgorICAgICAgICAtSW4gV2ViUGFnZSwgd2UgbmVlZCB0byBnZXQgdGhlIHZhbHVlcyBmcm9tIHRo
ZSBVSVByb2Nlc3MgYW5kIHNldHVwIHRoZSBWaWV3cG9ydENvbmZpZ3VyYXRpb24uCisgICAgICAg
ICBBbm90aGVyIHBhcnQgaXMgZnJlZXppbmcgdGhlIHN0YXRlIG9uIHBhZ2UgbG9hZC4KKyAgICAg
ICAgLUluIHRoZSBVSVByb2Nlc3MsIHdlIG5lZWQgdG8gZ2V0IHRoZSByaWdodCBpbmZvcm1hdGlv
biBmb3IgbGF5b3V0IGFuZCBzdHlsaW5nLCBhbmQgd2UgbmVlZCB0byB0ZWxsCisgICAgICAgICB0
aGUgVUkgY2xpZW50cyBhYm91dCBtaW5pbWFsLXVpIGNoYW5nZXMuCisKKyAgICAgICAgKiBVSVBy
b2Nlc3MvQVBJL0NvY29hL1dLVUlEZWxlZ2F0ZVByaXZhdGUuaDoKKyAgICAgICAgKiBVSVByb2Nl
c3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF9zZXRVc2Vz
TWluaW1hbFVJOl0pOgorICAgICAgICAoLVtXS1dlYlZpZXcgX3VzZXNNaW5pbWFsVUldKToKKyAg
ICAgICAgKC1bV0tXZWJWaWV3IF9kaWRDb21taXRMYXllclRyZWU6V2ViS2l0OjpdKToKKyAgICAg
ICAgKC1bV0tXZWJWaWV3IF9mcmFtZU9yQm91bmRzQ2hhbmdlZF0pOgorICAgICAgICAoLVtXS1dl
YlZpZXcgX21pbmltdW1MYXlvdXRTaXplT3ZlcnJpZGVdKToKKyAgICAgICAgKC1bV0tXZWJWaWV3
IF9zZXRNaW5pbXVtTGF5b3V0U2l6ZU92ZXJyaWRlOl0pOgorICAgICAgICAoLVtXS1dlYlZpZXcg
X21pbmltdW1MYXlvdXRTaXplT3ZlcnJpZGVGb3JNaW5pbWFsVUldKToKKyAgICAgICAgKC1bV0tX
ZWJWaWV3IF9zZXRNaW5pbXVtTGF5b3V0U2l6ZU92ZXJyaWRlRm9yTWluaW1hbFVJOl0pOgorICAg
ICAgICAoLVtXS1dlYlZpZXcgX2xhcmdlc3RVbm9ic2N1cmVkU2l6ZU92ZXJyaWRlXSk6CisgICAg
ICAgICgtW1dLV2ViVmlldyBfc2V0TWF4aW11bVVub2JzY3VyZWRTaXplT3ZlcnJpZGU6XSk6Cisg
ICAgICAgICgtW1dLV2ViVmlldyBfYmVnaW5BbmltYXRlZFJlc2l6ZVdpdGhVcGRhdGVzOl0pOgor
ICAgICAgICAoc2V0Vmlld3BvcnRDb25maWd1cmF0aW9uTWluaW11bUxheW91dFNpemUpOiBEZWxl
dGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3SW50ZXJuYWwuaDoK
KyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld1ByaXZhdGUuaDoKKyAgICAg
ICAgKiBVSVByb2Nlc3MvUGFnZUNsaWVudC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdl
UHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJT1MuaDoKKyAgICAgICAgKiBV
SVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLm1tOgorICAgICAgICAoV2ViS2l0OjpQYWdl
Q2xpZW50SW1wbDo6c2V0VXNlc01pbmltYWxVSSk6CisgICAgICAgICogVUlQcm9jZXNzL2lvcy9X
ZWJQYWdlUHJveHlJT1MubW06CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZHluYW1p
Y1ZpZXdwb3J0U2l6ZVVwZGF0ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6c2V0
Vmlld3BvcnRDb25maWd1cmF0aW9uTWluaW11bUxheW91dFNpemVGb3JNaW5pbWFsVUkpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnNldE1heGltdW1Vbm9ic2N1cmVkU2l6ZSk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6c2V0VXNlc01pbmltYWxVSSk6CisgICAgICAg
IChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6c2V0TWluaW11bUxheW91dFNpemVGb3JNaW5pbWFsVUkp
OiBEZWxldGVkLgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6V2ViUGFnZTo6V2ViUGFnZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBh
Z2U6OmRpZENvbW1pdExvYWQpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdl
Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW46Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tOgorICAgICAgICAo
V2ViS2l0OjpXZWJQYWdlOjpzZXRWaWV3cG9ydENvbmZpZ3VyYXRpb25NaW5pbXVtTGF5b3V0U2l6
ZUZvck1pbmltYWxVSSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnNldE1heGltdW1Vbm9i
c2N1cmVkU2l6ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OndpbGxGbHVzaExheWVycyk6
CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmR5bmFtaWNWaWV3cG9ydFNpemVVcGRhdGUpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjp2aWV3cG9ydENvbmZpZ3VyYXRpb25DaGFuZ2VkKToK
KyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6dXBkYXRlVmlld3BvcnRTaXplRm9yQ1NTVmlld3Bv
cnRVbml0cyk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnNldE1pbmltdW1MYXlvdXRTaXpl
Rm9yTWluaW1hbFVJKTogRGVsZXRlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvbWFj
L1JlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhLm1tOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVM
YXllclRyZWVEcmF3aW5nQXJlYTo6Zmx1c2hMYXllcnMpOgorCiAyMDE0LTA1LTIxICBPbGl2ZXIg
SHVudCAgPG9saXZlckBhcHBsZS5jb20+CiAKICAgICAgICAgT25seSBlbmFibGUgc2FuZGJveCBl
eHRlbnNpb25zIG9uIG1hYy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhw
LmluIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4KaW5kZXggOTliZWI0YWNkNzcyODIz
Mjg4MDNhM2Q0YmQyMWI1ZDZjNTQ4OTNkZi4uMGMwYzczODkzNDUyOWUxMTZlYzU3NWQ4MzU1YjU5
YzliODM2ODc1MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4KKysr
IGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4KQEAgLTkwNiwxNCArOTA2LDE3IEBAIF9f
Wk43V2ViQ29yZTIxVXNlckNvbnRlbnRDb250cm9sbGVyMzRyZW1vdmVVc2VyTWVzc2FnZUhhbmRs
ZXJEZXNjcmlwdG9yRVJOU18yOFVzCiBfX1pON1dlYkNvcmUyMVVzZXJDb250ZW50Q29udHJvbGxl
cjZjcmVhdGVFdgogX19aTjdXZWJDb3JlMjFVc2VyQ29udGVudENvbnRyb2xsZXJEMUV2CiBfX1pO
N1dlYkNvcmUyMVVzZXJDb250ZW50VVJMUGF0dGVybjVwYXJzZUVSS04zV1RGNlN0cmluZ0UKK19f
Wk43V2ViQ29yZTIxVmlld3BvcnRDb25maWd1cmF0aW9uMTRyZXNldE1pbmltYWxVSUV2CiBfX1pO
N1dlYkNvcmUyMVZpZXdwb3J0Q29uZmlndXJhdGlvbjE1c2V0Q29udGVudHNTaXplRVJLTlNfN0lu
dFNpemVFCiBfX1pON1dlYkNvcmUyMVZpZXdwb3J0Q29uZmlndXJhdGlvbjE3d2VicGFnZVBhcmFt
ZXRlcnNFdgogX19aTjdXZWJDb3JlMjFWaWV3cG9ydENvbmZpZ3VyYXRpb24yMHNldE1pbmltdW1M
YXlvdXRTaXplRVJLTlNfOUZsb2F0U2l6ZUUKIF9fWk43V2ViQ29yZTIxVmlld3BvcnRDb25maWd1
cmF0aW9uMjBzZXRWaWV3cG9ydEFyZ3VtZW50c0VSS05TXzE3Vmlld3BvcnRBcmd1bWVudHNFCitf
X1pON1dlYkNvcmUyMVZpZXdwb3J0Q29uZmlndXJhdGlvbjIxZGlkRmluaXNoRG9jdW1lbnRMb2Fk
RXYKIF9fWk43V2ViQ29yZTIxVmlld3BvcnRDb25maWd1cmF0aW9uMjF4aHRtbE1vYmlsZVBhcmFt
ZXRlcnNFdgogX19aTjdXZWJDb3JlMjFWaWV3cG9ydENvbmZpZ3VyYXRpb24yMnRleHREb2N1bWVu
dFBhcmFtZXRlcnNFdgogX19aTjdXZWJDb3JlMjFWaWV3cG9ydENvbmZpZ3VyYXRpb24yM2ltYWdl
RG9jdW1lbnRQYXJhbWV0ZXJzRXYKIF9fWk43V2ViQ29yZTIxVmlld3BvcnRDb25maWd1cmF0aW9u
MjNzZXREZWZhdWx0Q29uZmlndXJhdGlvbkVSS05TMF8xMFBhcmFtZXRlcnNFCitfX1pON1dlYkNv
cmUyMVZpZXdwb3J0Q29uZmlndXJhdGlvbjMyc2V0TWluaW11bUxheW91dFNpemVGb3JNaW5pbWFs
VUlFUktOU185RmxvYXRTaXplRQogX19aTjdXZWJDb3JlMjFWaWV3cG9ydENvbmZpZ3VyYXRpb25D
MUV2CiBfX1pON1dlYkNvcmUyMVdpbmRvd3NMYXRpbjFFbmNvZGluZ0V2CiBfX1pON1dlYkNvcmUy
MWNyZWF0ZUNGVVJMRnJvbUJ1ZmZlckVQS2NtUEs3X19DRlVSTApAQCAtMTM2MSw3ICsxMzY0LDYg
QEAgX19aTjdXZWJDb3JlOUZyYW1lVmlldzE0c2V0TmVlZHNMYXlvdXRFdgogX19aTjdXZWJDb3Jl
OUZyYW1lVmlldzE0c2V0VHJhbnNwYXJlbnRFYgogX19aTjdXZWJDb3JlOUZyYW1lVmlldzE1c2V0
Rm9vdGVySGVpZ2h0RWkKIF9fWk43V2ViQ29yZTlGcmFtZVZpZXcxNXNldEhlYWRlckhlaWdodEVp
Ci1fX1pON1dlYkNvcmU5RnJhbWVWaWV3MTVzZXRWaWV3cG9ydFNpemVFTlNfN0ludFNpemVFCiBf
X1pON1dlYkNvcmU5RnJhbWVWaWV3MTZzZXRQYWludEJlaGF2aW9yRWoKIF9fWk43V2ViQ29yZTlG
cmFtZVZpZXcxN2FkZFNjcm9sbGFibGVBcmVhRVBOU18xNFNjcm9sbGFibGVBcmVhRQogX19aTjdX
ZWJDb3JlOUZyYW1lVmlldzE3cGFpbnRDb250cm9sVGludHNFdgpAQCAtMTM4Niw2ICsxMzg4LDcg
QEAgX19aTjdXZWJDb3JlOUZyYW1lVmlldzI2YWRqdXN0VGlsZWRCYWNraW5nQ292ZXJhZ2VFdgog
X19aTjdXZWJDb3JlOUZyYW1lVmlldzI5c2V0QXV0b1NpemVGaXhlZE1pbmltdW1IZWlnaHRFaQog
X19aTjdXZWJDb3JlOUZyYW1lVmlldzI5c2V0U2hvdWxkVXBkYXRlV2hpbGVPZmZzY3JlZW5FYgog
X19aTjdXZWJDb3JlOUZyYW1lVmlldzMxc2V0VmlzdWFsVXBkYXRlc0FsbG93ZWRCeUNsaWVudEVi
CitfX1pON1dlYkNvcmU5RnJhbWVWaWV3MzRzZXRWaWV3cG9ydFNpemVGb3JDU1NWaWV3cG9ydFVu
aXRzRU5TXzdJbnRTaXplRQogX19aTjdXZWJDb3JlOUZyYW1lVmlldzM3c2V0U2Nyb2xsaW5nUGVy
Zm9ybWFuY2VMb2dnaW5nRW5hYmxlZEViCiBfX1pON1dlYkNvcmU5RnJhbWVWaWV3Mzd1cGRhdGVM
YXlvdXRBbmRTdHlsZUlmTmVlZGVkUmVjdXJzaXZlRXYKIF9fWk43V2ViQ29yZTlGcmFtZVZpZXcz
OHNjcm9sbFBvc2l0aW9uQ2hhbmdlZFZpYVBsYXRmb3JtV2lkZ2V0RVJLTlNfOEludFBvaW50RVMz
XwpAQCAtMTc5Miw2ICsxNzk1LDcgQEAgX19aTks3V2ViQ29yZTIxVXNlckNvbnRlbnRVUkxQYXR0
ZXJuN21hdGNoZXNFUktOU18zVVJMRQogX19aTks3V2ViQ29yZTIxVmlld3BvcnRDb25maWd1cmF0
aW9uMTBsYXlvdXRTaXplRXYKIF9fWk5LN1dlYkNvcmUyMVZpZXdwb3J0Q29uZmlndXJhdGlvbjEy
aW5pdGlhbFNjYWxlRXYKIF9fWk5LN1dlYkNvcmUyMVZpZXdwb3J0Q29uZmlndXJhdGlvbjEybWlu
aW11bVNjYWxlRXYKK19fWk5LN1dlYkNvcmUyMVZpZXdwb3J0Q29uZmlndXJhdGlvbjQ2YWN0aXZl
TWluaW11bUxheW91dFNpemVJblNjcm9sbFZpZXdDb29yZGluYXRlc0V2CiBfX1pOSzdXZWJDb3Jl
MjJXaGVlbEV2ZW50RGVsdGFUcmFja2VyMzBkb21pbmFudFNjcm9sbEdlc3R1cmVEaXJlY3Rpb25F
dgogX19aTks3V2ViQ29yZTIzQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UxMW1heGltdW1TaXplRXYK
IF9fWk5LN1dlYkNvcmUyM0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlMjBhdXRoZW50aWNhdGlvbkNs
aWVudEV2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvTGVuZ3RoRnVuY3Rpb25zLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9MZW5ndGhGdW5jdGlvbnMuY3BwCmluZGV4IDJmYTk0ZTIw
NzE2MTVjNTUwNDZiMGI0NzRiOGI2YzRhNmY2MWViYmYuLjU2NDAwZDQ2MDc2ZWRjNzEyODM3NDhh
NTU3ZmUyMTA3MDJjNmM3YmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9MZW5ndGhG
dW5jdGlvbnMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9MZW5ndGhGdW5jdGlvbnMuY3Bw
CkBAIC01NCwyMSArNTQsMjEgQEAgTGF5b3V0VW5pdCBtaW5pbXVtVmFsdWVGb3JMZW5ndGgoY29u
c3QgTGVuZ3RoJiBsZW5ndGgsIExheW91dFVuaXQgbWF4aW11bVZhbHVlLAogICAgICAgICByZXR1
cm4gbGVuZ3RoLm5vbk5hbkNhbGN1bGF0ZWRWYWx1ZShtYXhpbXVtVmFsdWUpOwogICAgIGNhc2Ug
Vmlld3BvcnRQZXJjZW50YWdlV2lkdGg6CiAgICAgICAgIGlmIChyZW5kZXJWaWV3KQotICAgICAg
ICAgICAgcmV0dXJuIExheW91dFVuaXQocmVuZGVyVmlldy0+dmlld3BvcnRTaXplKCkud2lkdGgo
KSAqIGxlbmd0aC52aWV3cG9ydFBlcmNlbnRhZ2VMZW5ndGgoKSAvIDEwMC4wZik7CisgICAgICAg
ICAgICByZXR1cm4gTGF5b3V0VW5pdChyZW5kZXJWaWV3LT52aWV3cG9ydFNpemVGb3JDU1NWaWV3
cG9ydFVuaXRzKCkud2lkdGgoKSAqIGxlbmd0aC52aWV3cG9ydFBlcmNlbnRhZ2VMZW5ndGgoKSAv
IDEwMC4wZik7CiAgICAgICAgIHJldHVybiAwOwogICAgIGNhc2UgVmlld3BvcnRQZXJjZW50YWdl
SGVpZ2h0OgogICAgICAgICBpZiAocmVuZGVyVmlldykKLSAgICAgICAgICAgIHJldHVybiBMYXlv
dXRVbml0KHJlbmRlclZpZXctPnZpZXdwb3J0U2l6ZSgpLmhlaWdodCgpICogbGVuZ3RoLnZpZXdw
b3J0UGVyY2VudGFnZUxlbmd0aCgpIC8gMTAwLjBmKTsKKyAgICAgICAgICAgIHJldHVybiBMYXlv
dXRVbml0KHJlbmRlclZpZXctPnZpZXdwb3J0U2l6ZUZvckNTU1ZpZXdwb3J0VW5pdHMoKS5oZWln
aHQoKSAqIGxlbmd0aC52aWV3cG9ydFBlcmNlbnRhZ2VMZW5ndGgoKSAvIDEwMC4wZik7CiAgICAg
ICAgIHJldHVybiAwOwogICAgIGNhc2UgVmlld3BvcnRQZXJjZW50YWdlTWluOgogICAgICAgICBp
ZiAocmVuZGVyVmlldykgewotICAgICAgICAgICAgSW50U2l6ZSB2aWV3cG9ydFNpemUgPSByZW5k
ZXJWaWV3LT52aWV3cG9ydFNpemUoKTsKKyAgICAgICAgICAgIEludFNpemUgdmlld3BvcnRTaXpl
ID0gcmVuZGVyVmlldy0+dmlld3BvcnRTaXplRm9yQ1NTVmlld3BvcnRVbml0cygpOwogICAgICAg
ICAgICAgcmV0dXJuIExheW91dFVuaXQoc3RkOjptaW4odmlld3BvcnRTaXplLndpZHRoKCksIHZp
ZXdwb3J0U2l6ZS5oZWlnaHQoKSkgKiBsZW5ndGgudmlld3BvcnRQZXJjZW50YWdlTGVuZ3RoKCkg
LyAxMDAuMGYpOwogICAgICAgICB9CiAgICAgICAgIHJldHVybiAwOwogICAgIGNhc2UgVmlld3Bv
cnRQZXJjZW50YWdlTWF4OgogICAgICAgICBpZiAocmVuZGVyVmlldykgewotICAgICAgICAgICAg
SW50U2l6ZSB2aWV3cG9ydFNpemUgPSByZW5kZXJWaWV3LT52aWV3cG9ydFNpemUoKTsKKyAgICAg
ICAgICAgIEludFNpemUgdmlld3BvcnRTaXplID0gcmVuZGVyVmlldy0+dmlld3BvcnRTaXplRm9y
Q1NTVmlld3BvcnRVbml0cygpOwogICAgICAgICAgICAgcmV0dXJuIExheW91dFVuaXQoc3RkOjpt
YXgodmlld3BvcnRTaXplLndpZHRoKCksIHZpZXdwb3J0U2l6ZS5oZWlnaHQoKSkgKiBsZW5ndGgu
dmlld3BvcnRQZXJjZW50YWdlTGVuZ3RoKCkgLyAxMDAuMGYpOwogICAgICAgICB9CiAgICAgICAg
IHJldHVybiAwOwpAQCAtMTMyLDIxICsxMzIsMjEgQEAgZmxvYXQgZmxvYXRWYWx1ZUZvckxlbmd0
aChjb25zdCBMZW5ndGgmIGxlbmd0aCwgTGF5b3V0VW5pdCBtYXhpbXVtVmFsdWUsIFJlbmRlclYK
ICAgICAgICAgcmV0dXJuIGxlbmd0aC5ub25OYW5DYWxjdWxhdGVkVmFsdWUobWF4aW11bVZhbHVl
KTsgICAgICAgICAgICAgICAgCiAgICAgY2FzZSBWaWV3cG9ydFBlcmNlbnRhZ2VXaWR0aDoKICAg
ICAgICAgaWYgKHJlbmRlclZpZXcpCi0gICAgICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8aW50
PihyZW5kZXJWaWV3LT52aWV3cG9ydFNpemUoKS53aWR0aCgpICogbGVuZ3RoLnZpZXdwb3J0UGVy
Y2VudGFnZUxlbmd0aCgpIC8gMTAwLjBmKTsKKyAgICAgICAgICAgIHJldHVybiBzdGF0aWNfY2Fz
dDxpbnQ+KHJlbmRlclZpZXctPnZpZXdwb3J0U2l6ZUZvckNTU1ZpZXdwb3J0VW5pdHMoKS53aWR0
aCgpICogbGVuZ3RoLnZpZXdwb3J0UGVyY2VudGFnZUxlbmd0aCgpIC8gMTAwLjBmKTsKICAgICAg
ICAgcmV0dXJuIDA7CiAgICAgY2FzZSBWaWV3cG9ydFBlcmNlbnRhZ2VIZWlnaHQ6CiAgICAgICAg
IGlmIChyZW5kZXJWaWV3KQotICAgICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGludD4ocmVu
ZGVyVmlldy0+dmlld3BvcnRTaXplKCkuaGVpZ2h0KCkgKiBsZW5ndGgudmlld3BvcnRQZXJjZW50
YWdlTGVuZ3RoKCkgLyAxMDAuMGYpOworICAgICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGlu
dD4ocmVuZGVyVmlldy0+dmlld3BvcnRTaXplRm9yQ1NTVmlld3BvcnRVbml0cygpLmhlaWdodCgp
ICogbGVuZ3RoLnZpZXdwb3J0UGVyY2VudGFnZUxlbmd0aCgpIC8gMTAwLjBmKTsKICAgICAgICAg
cmV0dXJuIDA7CiAgICAgY2FzZSBWaWV3cG9ydFBlcmNlbnRhZ2VNaW46CiAgICAgICAgIGlmIChy
ZW5kZXJWaWV3KSB7Ci0gICAgICAgICAgICBJbnRTaXplIHZpZXdwb3J0U2l6ZSA9IHJlbmRlclZp
ZXctPnZpZXdwb3J0U2l6ZSgpOworICAgICAgICAgICAgSW50U2l6ZSB2aWV3cG9ydFNpemUgPSBy
ZW5kZXJWaWV3LT52aWV3cG9ydFNpemVGb3JDU1NWaWV3cG9ydFVuaXRzKCk7CiAgICAgICAgICAg
ICByZXR1cm4gc3RhdGljX2Nhc3Q8aW50PihzdGQ6Om1pbih2aWV3cG9ydFNpemUud2lkdGgoKSwg
dmlld3BvcnRTaXplLmhlaWdodCgpKSAqIGxlbmd0aC52aWV3cG9ydFBlcmNlbnRhZ2VMZW5ndGgo
KSAvIDEwMC4wZik7CiAgICAgICAgIH0KICAgICAgICAgcmV0dXJuIDA7CiAgICAgY2FzZSBWaWV3
cG9ydFBlcmNlbnRhZ2VNYXg6CiAgICAgICAgIGlmIChyZW5kZXJWaWV3KSB7Ci0gICAgICAgICAg
ICBJbnRTaXplIHZpZXdwb3J0U2l6ZSA9IHJlbmRlclZpZXctPnZpZXdwb3J0U2l6ZSgpOworICAg
ICAgICAgICAgSW50U2l6ZSB2aWV3cG9ydFNpemUgPSByZW5kZXJWaWV3LT52aWV3cG9ydFNpemVG
b3JDU1NWaWV3cG9ydFVuaXRzKCk7CiAgICAgICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8aW50
PihzdGQ6Om1heCh2aWV3cG9ydFNpemUud2lkdGgoKSwgdmlld3BvcnRTaXplLmhlaWdodCgpKSAq
IGxlbmd0aC52aWV3cG9ydFBlcmNlbnRhZ2VMZW5ndGgoKSAvIDEwMC4wZik7CiAgICAgICAgIH0K
ICAgICAgICAgcmV0dXJuIDA7CkBAIC0xNzgsMjEgKzE3OCwyMSBAQCBmbG9hdCBmbG9hdFZhbHVl
Rm9yTGVuZ3RoKGNvbnN0IExlbmd0aCYgbGVuZ3RoLCBmbG9hdCBtYXhpbXVtVmFsdWUsIFJlbmRl
clZpZXcqCiAgICAgICAgIHJldHVybiBsZW5ndGgubm9uTmFuQ2FsY3VsYXRlZFZhbHVlKG1heGlt
dW1WYWx1ZSk7CiAgICAgY2FzZSBWaWV3cG9ydFBlcmNlbnRhZ2VXaWR0aDoKICAgICAgICAgaWYg
KHJlbmRlclZpZXcpCi0gICAgICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8aW50PihyZW5kZXJW
aWV3LT52aWV3cG9ydFNpemUoKS53aWR0aCgpICogbGVuZ3RoLnZpZXdwb3J0UGVyY2VudGFnZUxl
bmd0aCgpIC8gMTAwLjBmKTsKKyAgICAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxpbnQ+KHJl
bmRlclZpZXctPnZpZXdwb3J0U2l6ZUZvckNTU1ZpZXdwb3J0VW5pdHMoKS53aWR0aCgpICogbGVu
Z3RoLnZpZXdwb3J0UGVyY2VudGFnZUxlbmd0aCgpIC8gMTAwLjBmKTsKICAgICAgICAgcmV0dXJu
IDA7CiAgICAgY2FzZSBWaWV3cG9ydFBlcmNlbnRhZ2VIZWlnaHQ6CiAgICAgICAgIGlmIChyZW5k
ZXJWaWV3KQotICAgICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGludD4ocmVuZGVyVmlldy0+
dmlld3BvcnRTaXplKCkuaGVpZ2h0KCkgKiBsZW5ndGgudmlld3BvcnRQZXJjZW50YWdlTGVuZ3Ro
KCkgLyAxMDAuMGYpOworICAgICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGludD4ocmVuZGVy
Vmlldy0+dmlld3BvcnRTaXplRm9yQ1NTVmlld3BvcnRVbml0cygpLmhlaWdodCgpICogbGVuZ3Ro
LnZpZXdwb3J0UGVyY2VudGFnZUxlbmd0aCgpIC8gMTAwLjBmKTsKICAgICAgICAgcmV0dXJuIDA7
CiAgICAgY2FzZSBWaWV3cG9ydFBlcmNlbnRhZ2VNaW46CiAgICAgICAgIGlmIChyZW5kZXJWaWV3
KSB7Ci0gICAgICAgICAgICBJbnRTaXplIHZpZXdwb3J0U2l6ZSA9IHJlbmRlclZpZXctPnZpZXdw
b3J0U2l6ZSgpOworICAgICAgICAgICAgSW50U2l6ZSB2aWV3cG9ydFNpemUgPSByZW5kZXJWaWV3
LT52aWV3cG9ydFNpemVGb3JDU1NWaWV3cG9ydFVuaXRzKCk7CiAgICAgICAgICAgICByZXR1cm4g
c3RhdGljX2Nhc3Q8aW50PihzdGQ6Om1pbih2aWV3cG9ydFNpemUud2lkdGgoKSwgdmlld3BvcnRT
aXplLmhlaWdodCgpKSAqIGxlbmd0aC52aWV3cG9ydFBlcmNlbnRhZ2VMZW5ndGgoKSAvIDEwMC4w
Zik7CiAgICAgICAgIH0KICAgICAgICAgcmV0dXJuIDA7CiAgICAgY2FzZSBWaWV3cG9ydFBlcmNl
bnRhZ2VNYXg6CiAgICAgICAgIGlmIChyZW5kZXJWaWV3KSB7Ci0gICAgICAgICAgICBJbnRTaXpl
IHZpZXdwb3J0U2l6ZSA9IHJlbmRlclZpZXctPnZpZXdwb3J0U2l6ZSgpOworICAgICAgICAgICAg
SW50U2l6ZSB2aWV3cG9ydFNpemUgPSByZW5kZXJWaWV3LT52aWV3cG9ydFNpemVGb3JDU1NWaWV3
cG9ydFVuaXRzKCk7CiAgICAgICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8aW50PihzdGQ6Om1h
eCh2aWV3cG9ydFNpemUud2lkdGgoKSwgdmlld3BvcnRTaXplLmhlaWdodCgpKSAqIGxlbmd0aC52
aWV3cG9ydFBlcmNlbnRhZ2VMZW5ndGgoKSAvIDEwMC4wZik7CiAgICAgICAgIH0KICAgICAgICAg
cmV0dXJuIDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5jcHAKaW5kZXggOGJiMzNjN2Q0
ZWZiNTA0NjYxOGEzMWJjMGQ1ZGExYWMxZmU2ZjE4Ni4uYTJlOWI2NzJkMmYxYzQ1NzgyNmZmYjY2
Y2RjZWQ0ZTkyYzY2ZGIzOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVz
b2x2ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVyLmNwcApAQCAt
MzYxNiw4ICszNjE2LDggQEAgU3R5bGVSZXNvbHZlcjo6TWF0Y2hlZFByb3BlcnRpZXM6On5NYXRj
aGVkUHJvcGVydGllcygpCiAKIGludCBTdHlsZVJlc29sdmVyOjp2aWV3cG9ydFBlcmNlbnRhZ2VW
YWx1ZShDU1NQcmltaXRpdmVWYWx1ZSYgdW5pdCwgaW50IHBlcmNlbnRhZ2UpCiB7Ci0gICAgaW50
IHZpZXdQb3J0SGVpZ2h0ID0gZG9jdW1lbnQoKS5yZW5kZXJWaWV3KCktPnZpZXdwb3J0U2l6ZSgp
LmhlaWdodCgpICogcGVyY2VudGFnZSAvIDEwMC4wZjsKLSAgICBpbnQgdmlld1BvcnRXaWR0aCA9
IGRvY3VtZW50KCkucmVuZGVyVmlldygpLT52aWV3cG9ydFNpemUoKS53aWR0aCgpICogcGVyY2Vu
dGFnZSAvIDEwMC4wZjsKKyAgICBpbnQgdmlld1BvcnRIZWlnaHQgPSBkb2N1bWVudCgpLnJlbmRl
clZpZXcoKS0+dmlld3BvcnRTaXplRm9yQ1NTVmlld3BvcnRVbml0cygpLmhlaWdodCgpICogcGVy
Y2VudGFnZSAvIDEwMC4wZjsKKyAgICBpbnQgdmlld1BvcnRXaWR0aCA9IGRvY3VtZW50KCkucmVu
ZGVyVmlldygpLT52aWV3cG9ydFNpemVGb3JDU1NWaWV3cG9ydFVuaXRzKCkud2lkdGgoKSAqIHBl
cmNlbnRhZ2UgLyAxMDAuMGY7CiAKICAgICBpZiAodW5pdC5pc1ZpZXdwb3J0UGVyY2VudGFnZUhl
aWdodCgpKQogICAgICAgICByZXR1cm4gdmlld1BvcnRIZWlnaHQ7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vVmlld3BvcnRBcmd1bWVudHMuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9W
aWV3cG9ydEFyZ3VtZW50cy5oCmluZGV4IDc3MDA3OTAxNzI3NzRiZmNiNTU5NDhiMWU5MzVlZTY3
YWMzNjgwYmUuLmEwMTgxNTI3NTA3MGQ3NzE4MzlkOWZjNGM3Mzc5MTgwMDQ1NTZlMzIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9WaWV3cG9ydEFyZ3VtZW50cy5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9WaWV3cG9ydEFyZ3VtZW50cy5oCkBAIC0xMTUsMTAgKzExNSw2IEBAIHN0
cnVjdCBWaWV3cG9ydEFyZ3VtZW50cyB7CiAgICAgewogICAgICAgICAvLyBVc2VkIGZvciBmaWd1
cmluZyBvdXQgd2hldGhlciB0byByZXNldCB0aGUgdmlld3BvcnQgb3Igbm90LAogICAgICAgICAv
LyB0aHVzIHdlIGFyZSBub3QgdGFraW5nIHR5cGUgaW50byBhY2NvdW50LgotI2lmIFBMQVRGT1JN
KElPUykKLSAgICAgICAgLy8gV2UgaWdub3JlIG1pbmltYWxVSSBmb3IgdGhlIHNhbWUgcmVhc29u
IC0tIGl0IGlzIGEgaGlnaGVyLWxldmVsCi0gICAgICAgIC8vIHByb3BlcnR5IHRoYXQgZG9lc24n
dCBhZmZlY3QgdGhlIGFjdHVhbCB2aWV3cG9ydC4KLSNlbmRpZgogICAgICAgICByZXR1cm4gd2lk
dGggPT0gb3RoZXIud2lkdGgKICAgICAgICAgICAgICYmIG1pbldpZHRoID09IG90aGVyLm1pbldp
ZHRoCiAgICAgICAgICAgICAmJiBtYXhXaWR0aCA9PSBvdGhlci5tYXhXaWR0aApAQCAtMTI5LDYg
KzEyNSw5IEBAIHN0cnVjdCBWaWV3cG9ydEFyZ3VtZW50cyB7CiAgICAgICAgICAgICAmJiBtaW5a
b29tID09IG90aGVyLm1pblpvb20KICAgICAgICAgICAgICYmIG1heFpvb20gPT0gb3RoZXIubWF4
Wm9vbQogICAgICAgICAgICAgJiYgdXNlclpvb20gPT0gb3RoZXIudXNlclpvb20KKyNpZiBQTEFU
Rk9STShJT1MpCisgICAgICAgICAgICAmJiBtaW5pbWFsVUkgPT0gb3RoZXIubWluaW1hbFVJCisj
ZW5kaWYKICAgICAgICAgICAgICYmIG9yaWVudGF0aW9uID09IG90aGVyLm9yaWVudGF0aW9uOwog
ICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwCmluZGV4IGYxZThlNzIzYmNlMjQ0ZTUy
MGQyZTM4NmUzODQ0MTNmMTEzYzI3ZjAuLmRhYmE3NjdjZjE5YmFkNzUyYjBmNjZmMTBlOWZiYTZl
NGZhYTBkMWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAKQEAgLTQzOTgsNyArNDM5OCw3
IEBAIHZvaWQgRnJhbWVWaWV3OjpzZXRFeHBvc2VkUmVjdChGbG9hdFJlY3QgZXhwb3NlZFJlY3Qp
CiAgICAgICAgIHZpZXctPmNvbXBvc2l0b3IoKS5zY2hlZHVsZUxheWVyRmx1c2goZmFsc2UgLyog
Y2FuVGhyb3R0bGUgKi8pOwogfQogICAgIAotdm9pZCBGcmFtZVZpZXc6OnNldFZpZXdwb3J0U2l6
ZShJbnRTaXplIHNpemUpCit2b2lkIEZyYW1lVmlldzo6c2V0Vmlld3BvcnRTaXplRm9yQ1NTVmll
d3BvcnRVbml0cyhJbnRTaXplIHNpemUpCiB7CiAgICAgaWYgKG1faGFzT3ZlcnJpZGVWaWV3cG9y
dFNpemUgJiYgbV9vdmVycmlkZVZpZXdwb3J0U2l6ZSA9PSBzaXplKQogICAgICAgICByZXR1cm47
CkBAIC00NDEwLDcgKzQ0MTAsNyBAQCB2b2lkIEZyYW1lVmlldzo6c2V0Vmlld3BvcnRTaXplKElu
dFNpemUgc2l6ZSkKICAgICAgICAgZG9jdW1lbnQtPnN0eWxlUmVzb2x2ZXJDaGFuZ2VkKERlZmVy
UmVjYWxjU3R5bGUpOwogfQogICAgIAotSW50U2l6ZSBGcmFtZVZpZXc6OnZpZXdwb3J0U2l6ZSgp
IGNvbnN0CitJbnRTaXplIEZyYW1lVmlldzo6dmlld3BvcnRTaXplRm9yQ1NTVmlld3BvcnRVbml0
cygpIGNvbnN0CiB7CiAgICAgaWYgKG1faGFzT3ZlcnJpZGVWaWV3cG9ydFNpemUpCiAgICAgICAg
IHJldHVybiBtX292ZXJyaWRlVmlld3BvcnRTaXplOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGFnZS9GcmFtZVZpZXcuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmgKaW5k
ZXggOTMzOGI4NGU4OWJjZDc4NDJhOGExZDg5YWNlY2ExOGRjMDM3NjQ2MC4uNGUwNDQzZjc0OTM2
OWM5OGZiMTg0MjMxZTY1NDMxYTU2YzYzZGU1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGFnZS9GcmFtZVZpZXcuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5oCkBA
IC0yMjAsOCArMjIwLDggQEAgcHVibGljOgogCiAgICAgdm9pZCBhZGp1c3RWaWV3U2l6ZSgpOwog
ICAgIAotICAgIHZvaWQgc2V0Vmlld3BvcnRTaXplKEludFNpemUpOwotICAgIEludFNpemUgdmll
d3BvcnRTaXplKCkgY29uc3Q7CisgICAgdm9pZCBzZXRWaWV3cG9ydFNpemVGb3JDU1NWaWV3cG9y
dFVuaXRzKEludFNpemUpOworICAgIEludFNpemUgdmlld3BvcnRTaXplRm9yQ1NTVmlld3BvcnRV
bml0cygpIGNvbnN0OwogICAgIAogICAgIHZpcnR1YWwgSW50UmVjdCB3aW5kb3dDbGlwUmVjdChi
b29sIGNsaXBUb0NvbnRlbnRzID0gdHJ1ZSkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgSW50UmVjdCB3
aW5kb3dDbGlwUmVjdEZvckZyYW1lT3duZXIoY29uc3QgSFRNTEZyYW1lT3duZXJFbGVtZW50Kiwg
Ym9vbCBjbGlwVG9MYXllckNvbnRlbnRzKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvVmlld3BvcnRDb25maWd1cmF0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
Vmlld3BvcnRDb25maWd1cmF0aW9uLmNwcAppbmRleCBhOWU4ZjNiMGI5YWEwNWYyMGMzMGFjYmY4
NTdiMGJkOGQ2ZjJhYmUwLi41YTIzYjdjMzNkZmFhNjk5NzAyMGViOTIxODYyMjEzZjgwZmE2NTM4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1ZpZXdwb3J0Q29uZmlndXJhdGlvbi5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9WaWV3cG9ydENvbmZpZ3VyYXRpb24uY3BwCkBA
IC00Niw2ICs0Niw5IEBAIHN0YXRpYyBib29sIGNvbnN0cmFpbnRzQXJlQWxsUmVsYXRpdmUoY29u
c3QgVmlld3BvcnRDb25maWd1cmF0aW9uOjpQYXJhbWV0ZXJzJiBjCiAKIFZpZXdwb3J0Q29uZmln
dXJhdGlvbjo6Vmlld3BvcnRDb25maWd1cmF0aW9uKCkKICAgICA6IG1fbWluaW11bUxheW91dFNp
emUoMTAyNCwgNzY4KQorICAgICwgbV9taW5pbXVtTGF5b3V0U2l6ZUZvck1pbmltYWxVSShtX21p
bmltdW1MYXlvdXRTaXplKQorICAgICwgbV91c2VzTWluaW1hbFVJKGZhbHNlKQorICAgICwgbV9w
YWdlRGlkRmluaXNoRG9jdW1lbnRMb2FkKGZhbHNlKQogewogICAgIC8vIFNldHVwIGEgcmVhc29u
YWJsZSBkZWZhdWx0IGNvbmZpZ3VyYXRpb24gdG8gYXZvaWQgY29tcHV0aW5nIGluZmluaXRlIHNj
YWxlL3NpemVzLgogICAgIC8vIFRob3NlIGFyZSB0aGUgb3JpZ2luYWwgaVBob25lIGNvbmZpZ3Vy
YXRpb24uCkBAIC03OSw3ICs4MiwyMSBAQCB2b2lkIFZpZXdwb3J0Q29uZmlndXJhdGlvbjo6c2V0
TWluaW11bUxheW91dFNpemUoY29uc3QgRmxvYXRTaXplJiBtaW5pbXVtTGF5b3V0UwogICAgICAg
ICByZXR1cm47CiAKICAgICBtX21pbmltdW1MYXlvdXRTaXplID0gbWluaW11bUxheW91dFNpemU7
Ci0gICAgdXBkYXRlQ29uZmlndXJhdGlvbigpOworfQorCit2b2lkIFZpZXdwb3J0Q29uZmlndXJh
dGlvbjo6c2V0TWluaW11bUxheW91dFNpemVGb3JNaW5pbWFsVUkoY29uc3QgRmxvYXRTaXplJiBt
aW5pbXVtTGF5b3V0U2l6ZUZvck1pbmltYWxVSSkKK3sKKyAgICBpZiAobV9taW5pbXVtTGF5b3V0
U2l6ZUZvck1pbmltYWxVSSA9PSBtaW5pbXVtTGF5b3V0U2l6ZUZvck1pbmltYWxVSSkKKyAgICAg
ICAgcmV0dXJuOworCisgICAgbV9taW5pbXVtTGF5b3V0U2l6ZUZvck1pbmltYWxVSSA9IG1pbmlt
dW1MYXlvdXRTaXplRm9yTWluaW1hbFVJOworfQorCitjb25zdCBGbG9hdFNpemUmIFZpZXdwb3J0
Q29uZmlndXJhdGlvbjo6YWN0aXZlTWluaW11bUxheW91dFNpemVJblNjcm9sbFZpZXdDb29yZGlu
YXRlcygpIGNvbnN0Cit7CisgICAgaWYgKG1fdXNlc01pbmltYWxVSSkKKyAgICAgICAgcmV0dXJu
IG1fbWluaW11bUxheW91dFNpemVGb3JNaW5pbWFsVUk7CisgICAgcmV0dXJuIG1fbWluaW11bUxh
eW91dFNpemU7CiB9CiAKIHZvaWQgVmlld3BvcnRDb25maWd1cmF0aW9uOjpzZXRWaWV3cG9ydEFy
Z3VtZW50cyhjb25zdCBWaWV3cG9ydEFyZ3VtZW50cyYgdmlld3BvcnRBcmd1bWVudHMpCkBAIC05
MSw2ICsxMDgsMjAgQEAgdm9pZCBWaWV3cG9ydENvbmZpZ3VyYXRpb246OnNldFZpZXdwb3J0QXJn
dW1lbnRzKGNvbnN0IFZpZXdwb3J0QXJndW1lbnRzJiB2aWV3cG8KICAgICB1cGRhdGVDb25maWd1
cmF0aW9uKCk7CiB9CiAKK3ZvaWQgVmlld3BvcnRDb25maWd1cmF0aW9uOjpyZXNldE1pbmltYWxV
SSgpCit7CisgICAgbV91c2VzTWluaW1hbFVJID0gZmFsc2U7CisgICAgbV9wYWdlRGlkRmluaXNo
RG9jdW1lbnRMb2FkID0gZmFsc2U7Cit9CisKK3ZvaWQgVmlld3BvcnRDb25maWd1cmF0aW9uOjpk
aWRGaW5pc2hEb2N1bWVudExvYWQoKQoreworICAgIGlmIChtX3BhZ2VEaWRGaW5pc2hEb2N1bWVu
dExvYWQpCisgICAgICAgIHJldHVybjsKKworICAgIG1fcGFnZURpZEZpbmlzaERvY3VtZW50TG9h
ZCA9IHRydWU7Cit9CisKIEludFNpemUgVmlld3BvcnRDb25maWd1cmF0aW9uOjpsYXlvdXRTaXpl
KCkgY29uc3QKIHsKICAgICByZXR1cm4gSW50U2l6ZShsYXlvdXRXaWR0aCgpLCBsYXlvdXRIZWln
aHQoKSk7CkBAIC0xMDcsMTUgKzEzOCwxNiBAQCBkb3VibGUgVmlld3BvcnRDb25maWd1cmF0aW9u
Ojppbml0aWFsU2NhbGUoKSBjb25zdAogCiAgICAgLy8gSWYgbm90LCBpdCBpcyB1cCB0byB1cyB0
byBkZXRlcm1pbmUgdGhlIGluaXRpYWwgc2NhbGUuCiAgICAgLy8gV2Ugd2FudCBhIHNjYWxlIHNt
YWxsIGVub3VnaCB0byBmaXQgdGhlIGRvY3VtZW50IHdpZHRoLXdpc2UuCisgICAgY29uc3QgRmxv
YXRTaXplJiBtaW5pbXVtTGF5b3V0U2l6ZSA9IGFjdGl2ZU1pbmltdW1MYXlvdXRTaXplSW5TY3Jv
bGxWaWV3Q29vcmRpbmF0ZXMoKTsKICAgICBkb3VibGUgd2lkdGggPSBtX2NvbnRlbnRTaXplLndp
ZHRoKCkgPiAwID8gbV9jb250ZW50U2l6ZS53aWR0aCgpIDogbGF5b3V0V2lkdGgoKTsKICAgICBk
b3VibGUgaW5pdGlhbFNjYWxlID0gMDsKICAgICBpZiAod2lkdGggPiAwKQotICAgICAgICBpbml0
aWFsU2NhbGUgPSBtX21pbmltdW1MYXlvdXRTaXplLndpZHRoKCkgLyB3aWR0aDsKKyAgICAgICAg
aW5pdGlhbFNjYWxlID0gbWluaW11bUxheW91dFNpemUud2lkdGgoKSAvIHdpZHRoOwogCiAgICAg
Ly8gUHJldmVudCB0aGUgaW50aWFsIHNjYWxlIGZyb20gc2hyaW5raW5nIHRvIGEgaGVpZ2h0IHNt
YWxsZXIgdGhhbiBvdXIgdmlldydzIG1pbmltdW0gaGVpZ2h0LgogICAgIGRvdWJsZSBoZWlnaHQg
PSBtX2NvbnRlbnRTaXplLmhlaWdodCgpID4gMCA/IG1fY29udGVudFNpemUuaGVpZ2h0KCkgOiBs
YXlvdXRIZWlnaHQoKTsKLSAgICBpZiAoaGVpZ2h0ID4gMCAmJiBoZWlnaHQgKiBpbml0aWFsU2Nh
bGUgPCBtX21pbmltdW1MYXlvdXRTaXplLmhlaWdodCgpKQotICAgICAgICBpbml0aWFsU2NhbGUg
PSBtX21pbmltdW1MYXlvdXRTaXplLmhlaWdodCgpIC8gaGVpZ2h0OworICAgIGlmIChoZWlnaHQg
PiAwICYmIGhlaWdodCAqIGluaXRpYWxTY2FsZSA8IG1pbmltdW1MYXlvdXRTaXplLmhlaWdodCgp
KQorICAgICAgICBpbml0aWFsU2NhbGUgPSBtaW5pbXVtTGF5b3V0U2l6ZS5oZWlnaHQoKSAvIGhl
aWdodDsKICAgICByZXR1cm4gc3RkOjptaW4oc3RkOjptYXgoaW5pdGlhbFNjYWxlLCBtX2NvbmZp
Z3VyYXRpb24ubWluaW11bVNjYWxlKSwgbV9jb25maWd1cmF0aW9uLm1heGltdW1TY2FsZSk7CiB9
CiAKQEAgLTEyOCwxMyArMTYwLDE0IEBAIGRvdWJsZSBWaWV3cG9ydENvbmZpZ3VyYXRpb246Om1p
bmltdW1TY2FsZSgpIGNvbnN0CiAgICAgLy8gSWYgbm90LCB3ZSBzdGlsbCBuZWVkIHRvIHNhbml0
eSBjaGVjayBvdXIgdmFsdWUuCiAgICAgZG91YmxlIG1pbmltdW1TY2FsZSA9IG1fY29uZmlndXJh
dGlvbi5taW5pbXVtU2NhbGU7CiAKKyAgICBjb25zdCBGbG9hdFNpemUmIG1pbmltdW1MYXlvdXRT
aXplID0gYWN0aXZlTWluaW11bUxheW91dFNpemVJblNjcm9sbFZpZXdDb29yZGluYXRlcygpOwog
ICAgIGRvdWJsZSBjb250ZW50V2lkdGggPSBtX2NvbnRlbnRTaXplLndpZHRoKCk7Ci0gICAgaWYg
KGNvbnRlbnRXaWR0aCA+IDAgJiYgY29udGVudFdpZHRoICogbWluaW11bVNjYWxlIDwgbV9taW5p
bXVtTGF5b3V0U2l6ZS53aWR0aCgpKQotICAgICAgICBtaW5pbXVtU2NhbGUgPSBtX21pbmltdW1M
YXlvdXRTaXplLndpZHRoKCkgLyBjb250ZW50V2lkdGg7CisgICAgaWYgKGNvbnRlbnRXaWR0aCA+
IDAgJiYgY29udGVudFdpZHRoICogbWluaW11bVNjYWxlIDwgbWluaW11bUxheW91dFNpemUud2lk
dGgoKSkKKyAgICAgICAgbWluaW11bVNjYWxlID0gbWluaW11bUxheW91dFNpemUud2lkdGgoKSAv
IGNvbnRlbnRXaWR0aDsKIAogICAgIGRvdWJsZSBjb250ZW50SGVpZ2h0ID0gbV9jb250ZW50U2l6
ZS5oZWlnaHQoKTsKLSAgICBpZiAoY29udGVudEhlaWdodCA+IDAgJiYgY29udGVudEhlaWdodCAq
IG1pbmltdW1TY2FsZSA8IG1fbWluaW11bUxheW91dFNpemUuaGVpZ2h0KCkpCi0gICAgICAgIG1p
bmltdW1TY2FsZSA9IG1fbWluaW11bUxheW91dFNpemUuaGVpZ2h0KCkgLyBjb250ZW50SGVpZ2h0
OworICAgIGlmIChjb250ZW50SGVpZ2h0ID4gMCAmJiBjb250ZW50SGVpZ2h0ICogbWluaW11bVNj
YWxlIDwgbWluaW11bUxheW91dFNpemUuaGVpZ2h0KCkpCisgICAgICAgIG1pbmltdW1TY2FsZSA9
IG1pbmltdW1MYXlvdXRTaXplLmhlaWdodCgpIC8gY29udGVudEhlaWdodDsKIAogICAgIG1pbmlt
dW1TY2FsZSA9IHN0ZDo6bWluKHN0ZDo6bWF4KG1pbmltdW1TY2FsZSwgbV9jb25maWd1cmF0aW9u
Lm1pbmltdW1TY2FsZSksIG1fY29uZmlndXJhdGlvbi5tYXhpbXVtU2NhbGUpOwogCkBAIC0yNDMs
NzYgKzI3Niw4MyBAQCB2b2lkIFZpZXdwb3J0Q29uZmlndXJhdGlvbjo6dXBkYXRlQ29uZmlndXJh
dGlvbigpCiAKICAgICBpZiAodmlld3BvcnRBcmd1bWVudFVzZXJab29tSXNTZXQobV92aWV3cG9y
dEFyZ3VtZW50cy51c2VyWm9vbSkpCiAgICAgICAgIG1fY29uZmlndXJhdGlvbi5hbGxvd3NVc2Vy
U2NhbGluZyA9IG1fdmlld3BvcnRBcmd1bWVudHMudXNlclpvb20gIT0gMC47CisKKyNpZiBQTEFU
Rk9STShJT1MpCisgICAgaWYgKCFtX3BhZ2VEaWRGaW5pc2hEb2N1bWVudExvYWQpCisgICAgICAg
IG1fdXNlc01pbmltYWxVSSA9IG1fdXNlc01pbmltYWxVSSB8fCBtX3ZpZXdwb3J0QXJndW1lbnRz
Lm1pbmltYWxVSTsKKyNlbmRpZgogfQogCiBpbnQgVmlld3BvcnRDb25maWd1cmF0aW9uOjpsYXlv
dXRXaWR0aCgpIGNvbnN0CiB7CiAgICAgQVNTRVJUKCFjb25zdHJhaW50c0FyZUFsbFJlbGF0aXZl
KG1fY29uZmlndXJhdGlvbikpOwogCisgICAgY29uc3QgRmxvYXRTaXplJiBtaW5pbXVtTGF5b3V0
U2l6ZSA9IGFjdGl2ZU1pbmltdW1MYXlvdXRTaXplSW5TY3JvbGxWaWV3Q29vcmRpbmF0ZXMoKTsK
ICAgICBpZiAobV9jb25maWd1cmF0aW9uLndpZHRoSXNTZXQpIHsKICAgICAgICAgLy8gSWYgd2Ug
c2NhbGUgdG8gZml0LCB0aGVuIGFjY2VwdCB0aGUgdmlld3BvcnQgd2lkdGggd2l0aCBzYW5pdHkg
Y2hlY2tpbmcuCiAgICAgICAgIGlmICghbV9jb25maWd1cmF0aW9uLmluaXRpYWxTY2FsZUlzU2V0
KSB7CiAgICAgICAgICAgICBkb3VibGUgbWF4aW11bVNjYWxlID0gdGhpcy0+bWF4aW11bVNjYWxl
KCk7CiAgICAgICAgICAgICBkb3VibGUgbWF4aW11bUNvbnRlbnRXaWR0aEluVmlld3BvcnRDb29y
ZGluYXRlID0gbWF4aW11bVNjYWxlICogbV9jb25maWd1cmF0aW9uLndpZHRoOwotICAgICAgICAg
ICAgaWYgKG1heGltdW1Db250ZW50V2lkdGhJblZpZXdwb3J0Q29vcmRpbmF0ZSA8IG1fbWluaW11
bUxheW91dFNpemUud2lkdGgoKSkgeworICAgICAgICAgICAgaWYgKG1heGltdW1Db250ZW50V2lk
dGhJblZpZXdwb3J0Q29vcmRpbmF0ZSA8IG1pbmltdW1MYXlvdXRTaXplLndpZHRoKCkpIHsKICAg
ICAgICAgICAgICAgICAvLyBUaGUgY29udGVudCB6b29tZWQgdG8gbWF4U2NhbGUgZG9lcyBub3Qg
Zml0IHRoZSB0aGUgdmlldy4gUmV0dXJuIHRoZSBtaW5pbXVtIHdpZHRoCiAgICAgICAgICAgICAg
ICAgLy8gc2F0aXNmeWluZyB0aGUgY29uc3RyYWludCBtYXhpbXVtU2NhbGUuCi0gICAgICAgICAg
ICAgICAgcmV0dXJuIHN0ZDo6cm91bmQobV9taW5pbXVtTGF5b3V0U2l6ZS53aWR0aCgpIC8gbWF4
aW11bVNjYWxlKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gc3RkOjpyb3VuZChtaW5pbXVtTGF5
b3V0U2l6ZS53aWR0aCgpIC8gbWF4aW11bVNjYWxlKTsKICAgICAgICAgICAgIH0KICAgICAgICAg
ICAgIHJldHVybiBzdGQ6OnJvdW5kKG1fY29uZmlndXJhdGlvbi53aWR0aCk7CiAgICAgICAgIH0K
IAogICAgICAgICAvLyBJZiBub3QsIG1ha2Ugc3VyZSB0aGUgdmlld3BvcnQgd2lkdGggYW5kIGlu
aXRpYWwgc2NhbGUgY2FuIGNvLWV4aXN0LgogICAgICAgICBkb3VibGUgaW5pdGlhbENvbnRlbnRX
aWR0aEluVmlld3BvcnRDb29yZGluYXRlID0gbV9jb25maWd1cmF0aW9uLndpZHRoICogbV9jb25m
aWd1cmF0aW9uLmluaXRpYWxTY2FsZTsKLSAgICAgICAgaWYgKGluaXRpYWxDb250ZW50V2lkdGhJ
blZpZXdwb3J0Q29vcmRpbmF0ZSA8IG1fbWluaW11bUxheW91dFNpemUud2lkdGgoKSkgeworICAg
ICAgICBpZiAoaW5pdGlhbENvbnRlbnRXaWR0aEluVmlld3BvcnRDb29yZGluYXRlIDwgbWluaW11
bUxheW91dFNpemUud2lkdGgoKSkgewogICAgICAgICAgICAgLy8gVGhlIHNwZWNpZmllZCB3aWR0
aCBkb2VzIG5vdCBmaXQgaW4gdmlld3BvcnQuIFJldHVybiB0aGUgbWluaW11bSB3aWR0aCB0aGF0
IHNhdGlzZnkgdGhlIGluaXRpYWxTY2FsZSBjb25zdHJhaW50LgotICAgICAgICAgICAgcmV0dXJu
IHN0ZDo6cm91bmQobV9taW5pbXVtTGF5b3V0U2l6ZS53aWR0aCgpIC8gbV9jb25maWd1cmF0aW9u
LmluaXRpYWxTY2FsZSk7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpyb3VuZChtaW5pbXVtTGF5
b3V0U2l6ZS53aWR0aCgpIC8gbV9jb25maWd1cmF0aW9uLmluaXRpYWxTY2FsZSk7CiAgICAgICAg
IH0KICAgICAgICAgcmV0dXJuIHN0ZDo6cm91bmQobV9jb25maWd1cmF0aW9uLndpZHRoKTsKICAg
ICB9CiAKICAgICAvLyBJZiB0aGUgcGFnZSBoYXMgYSByZWFsIHNjYWxlLCB0aGVuIGp1c3QgcmV0
dXJuIHRoZSBtaW5pbXVtIHNpemUgb3ZlciB0aGUgaW5pdGlhbCBzY2FsZS4KICAgICBpZiAobV9j
b25maWd1cmF0aW9uLmluaXRpYWxTY2FsZUlzU2V0ICYmICFtX2NvbmZpZ3VyYXRpb24uaGVpZ2h0
SXNTZXQpCi0gICAgICAgIHJldHVybiBzdGQ6OnJvdW5kKG1fbWluaW11bUxheW91dFNpemUud2lk
dGgoKSAvIG1fY29uZmlndXJhdGlvbi5pbml0aWFsU2NhbGUpOworICAgICAgICByZXR1cm4gc3Rk
Ojpyb3VuZChtaW5pbXVtTGF5b3V0U2l6ZS53aWR0aCgpIC8gbV9jb25maWd1cmF0aW9uLmluaXRp
YWxTY2FsZSk7CiAKLSAgICBpZiAobV9taW5pbXVtTGF5b3V0U2l6ZS5oZWlnaHQoKSA+IDApCi0g
ICAgICAgIHJldHVybiBzdGQ6OnJvdW5kKG1fbWluaW11bUxheW91dFNpemUud2lkdGgoKSAqIGxh
eW91dEhlaWdodCgpIC8gbV9taW5pbXVtTGF5b3V0U2l6ZS5oZWlnaHQoKSk7Ci0gICAgcmV0dXJu
IG1fbWluaW11bUxheW91dFNpemUud2lkdGgoKTsKKyAgICBpZiAobWluaW11bUxheW91dFNpemUu
aGVpZ2h0KCkgPiAwKQorICAgICAgICByZXR1cm4gc3RkOjpyb3VuZChtaW5pbXVtTGF5b3V0U2l6
ZS53aWR0aCgpICogbGF5b3V0SGVpZ2h0KCkgLyBtaW5pbXVtTGF5b3V0U2l6ZS5oZWlnaHQoKSk7
CisgICAgcmV0dXJuIG1pbmltdW1MYXlvdXRTaXplLndpZHRoKCk7CiB9CiAKIGludCBWaWV3cG9y
dENvbmZpZ3VyYXRpb246OmxheW91dEhlaWdodCgpIGNvbnN0CiB7CiAgICAgQVNTRVJUKCFjb25z
dHJhaW50c0FyZUFsbFJlbGF0aXZlKG1fY29uZmlndXJhdGlvbikpOwogCisgICAgY29uc3QgRmxv
YXRTaXplJiBtaW5pbXVtTGF5b3V0U2l6ZSA9IGFjdGl2ZU1pbmltdW1MYXlvdXRTaXplSW5TY3Jv
bGxWaWV3Q29vcmRpbmF0ZXMoKTsKICAgICBpZiAobV9jb25maWd1cmF0aW9uLmhlaWdodElzU2V0
KSB7CiAgICAgICAgIC8vIElmIHdlIHNjYWxlIHRvIGZpdCwgdGhlbiBhY2NlcHQgdGhlIHZpZXdw
b3J0IGhlaWdodCB3aXRoIHNhbml0eSBjaGVja2luZy4KICAgICAgICAgaWYgKCFtX2NvbmZpZ3Vy
YXRpb24uaW5pdGlhbFNjYWxlSXNTZXQpIHsKICAgICAgICAgICAgIGRvdWJsZSBtYXhpbXVtU2Nh
bGUgPSB0aGlzLT5tYXhpbXVtU2NhbGUoKTsKICAgICAgICAgICAgIGRvdWJsZSBtYXhpbXVtQ29u
dGVudEhlaWdodEluVmlld3BvcnRDb29yZGluYXRlID0gbWF4aW11bVNjYWxlICogbV9jb25maWd1
cmF0aW9uLmhlaWdodDsKLSAgICAgICAgICAgIGlmIChtYXhpbXVtQ29udGVudEhlaWdodEluVmll
d3BvcnRDb29yZGluYXRlIDwgbV9taW5pbXVtTGF5b3V0U2l6ZS5oZWlnaHQoKSkgeworICAgICAg
ICAgICAgaWYgKG1heGltdW1Db250ZW50SGVpZ2h0SW5WaWV3cG9ydENvb3JkaW5hdGUgPCBtaW5p
bXVtTGF5b3V0U2l6ZS5oZWlnaHQoKSkgewogICAgICAgICAgICAgICAgIC8vIFRoZSBjb250ZW50
IHpvb21lZCB0byBtYXhTY2FsZSBkb2VzIG5vdCBmaXQgdGhlIHRoZSB2aWV3LiBSZXR1cm4gdGhl
IG1pbmltdW0gaGVpZ2h0IHRoYXQKICAgICAgICAgICAgICAgICAvLyBzYXRpc2Z5IHRoZSBjb25z
dHJhaW50IG1heGltdW1TY2FsZS4KLSAgICAgICAgICAgICAgICByZXR1cm4gc3RkOjpyb3VuZCht
X21pbmltdW1MYXlvdXRTaXplLmhlaWdodCgpIC8gbWF4aW11bVNjYWxlKTsKKyAgICAgICAgICAg
ICAgICByZXR1cm4gc3RkOjpyb3VuZChtaW5pbXVtTGF5b3V0U2l6ZS5oZWlnaHQoKSAvIG1heGlt
dW1TY2FsZSk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICByZXR1cm4gc3RkOjpyb3VuZCht
X2NvbmZpZ3VyYXRpb24uaGVpZ2h0KTsKICAgICAgICAgfQogCiAgICAgICAgIC8vIElmIG5vdCwg
bWFrZSBzdXJlIHRoZSB2aWV3cG9ydCB3aWR0aCBhbmQgaW5pdGlhbCBzY2FsZSBjYW4gY28tZXhp
c3QuCiAgICAgICAgIGRvdWJsZSBpbml0aWFsQ29udGVudEhlaWdodEluVmlld3BvcnRDb29yZGlu
YXRlID0gbV9jb25maWd1cmF0aW9uLmhlaWdodCAqIG1fY29uZmlndXJhdGlvbi5pbml0aWFsU2Nh
bGU7Ci0gICAgICAgIGlmIChpbml0aWFsQ29udGVudEhlaWdodEluVmlld3BvcnRDb29yZGluYXRl
IDwgbV9taW5pbXVtTGF5b3V0U2l6ZS5oZWlnaHQoKSkgeworICAgICAgICBpZiAoaW5pdGlhbENv
bnRlbnRIZWlnaHRJblZpZXdwb3J0Q29vcmRpbmF0ZSA8IG1pbmltdW1MYXlvdXRTaXplLmhlaWdo
dCgpKSB7CiAgICAgICAgICAgICAvLyBUaGUgc3BlY2lmaWVkIHdpZHRoIGRvZXMgbm90IGZpdCBp
biB2aWV3cG9ydC4gUmV0dXJuIHRoZSBtaW5pbXVtIGhlaWdodCB0aGF0IHNhdGlzZnkgdGhlIGlu
aXRpYWxTY2FsZSBjb25zdHJhaW50LgotICAgICAgICAgICAgcmV0dXJuIHN0ZDo6cm91bmQobV9t
aW5pbXVtTGF5b3V0U2l6ZS5oZWlnaHQoKSAvIG1fY29uZmlndXJhdGlvbi5pbml0aWFsU2NhbGUp
OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6cm91bmQobWluaW11bUxheW91dFNpemUuaGVpZ2h0
KCkgLyBtX2NvbmZpZ3VyYXRpb24uaW5pdGlhbFNjYWxlKTsKICAgICAgICAgfQogICAgICAgICBy
ZXR1cm4gc3RkOjpyb3VuZChtX2NvbmZpZ3VyYXRpb24uaGVpZ2h0KTsKICAgICB9CiAKICAgICAv
LyBJZiB0aGUgcGFnZSBoYXMgYSByZWFsIHNjYWxlLCB0aGVuIGp1c3QgcmV0dXJuIHRoZSBtaW5p
bXVtIHNpemUgb3ZlciB0aGUgaW5pdGlhbCBzY2FsZS4KICAgICBpZiAobV9jb25maWd1cmF0aW9u
LmluaXRpYWxTY2FsZUlzU2V0ICYmICFtX2NvbmZpZ3VyYXRpb24ud2lkdGhJc1NldCkKLSAgICAg
ICAgcmV0dXJuIHN0ZDo6cm91bmQobV9taW5pbXVtTGF5b3V0U2l6ZS5oZWlnaHQoKSAvIG1fY29u
ZmlndXJhdGlvbi5pbml0aWFsU2NhbGUpOworICAgICAgICByZXR1cm4gc3RkOjpyb3VuZChtaW5p
bXVtTGF5b3V0U2l6ZS5oZWlnaHQoKSAvIG1fY29uZmlndXJhdGlvbi5pbml0aWFsU2NhbGUpOwog
Ci0gICAgaWYgKG1fbWluaW11bUxheW91dFNpemUud2lkdGgoKSA+IDApCi0gICAgICAgIHJldHVy
biBzdGQ6OnJvdW5kKG1fbWluaW11bUxheW91dFNpemUuaGVpZ2h0KCkgKiBsYXlvdXRXaWR0aCgp
IC8gbV9taW5pbXVtTGF5b3V0U2l6ZS53aWR0aCgpKTsKLSAgICByZXR1cm4gbV9taW5pbXVtTGF5
b3V0U2l6ZS5oZWlnaHQoKTsKKyAgICBpZiAobWluaW11bUxheW91dFNpemUud2lkdGgoKSA+IDAp
CisgICAgICAgIHJldHVybiBzdGQ6OnJvdW5kKG1pbmltdW1MYXlvdXRTaXplLmhlaWdodCgpICog
bGF5b3V0V2lkdGgoKSAvIG1pbmltdW1MYXlvdXRTaXplLndpZHRoKCkpOworICAgIHJldHVybiBt
aW5pbXVtTGF5b3V0U2l6ZS5oZWlnaHQoKTsKIH0KIAogI2lmbmRlZiBOREVCVUcKQEAgLTQzNSw2
ICs0NzUsOCBAQCBDU3RyaW5nIFZpZXdwb3J0Q29uZmlndXJhdGlvbjo6ZGVzY3JpcHRpb24oKSBj
b25zdAogCiAgICAgZHVtcFByb3BlcnR5KHRzLCAiY29udGVudFNpemUiLCBtX2NvbnRlbnRTaXpl
KTsKICAgICBkdW1wUHJvcGVydHkodHMsICJtaW5pbXVtTGF5b3V0U2l6ZSIsIG1fbWluaW11bUxh
eW91dFNpemUpOworICAgIGR1bXBQcm9wZXJ0eSh0cywgIm1pbmltdW1MYXlvdXRTaXplRm9yTWlu
aW1hbFVJIiwgbV9taW5pbXVtTGF5b3V0U2l6ZUZvck1pbmltYWxVSSk7CisgICAgdHMgPDwgIih1
c2VzIG1pbmltYWwgVUkgIiA8PCBtX3VzZXNNaW5pbWFsVUkgPDwgIikiOwogCiAgICAgdHMgPDwg
IlxuIjsKICAgICB0cy5pbmNyZWFzZUluZGVudCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGFnZS9WaWV3cG9ydENvbmZpZ3VyYXRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvVmll
d3BvcnRDb25maWd1cmF0aW9uLmgKaW5kZXggZWFhNWJmNDQ4ZTA2MWY3Y2QwY2E3ZDdjYTkxY2U3
MmRmNTY0OWU2Ny4uYzIyNmIwM2UxZmMzMzRlZWIxMWZkZTc1MTljZDBiMWQzMTYyZWM5ZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9WaWV3cG9ydENvbmZpZ3VyYXRpb24uaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1ZpZXdwb3J0Q29uZmlndXJhdGlvbi5oCkBAIC03NCwxNCAr
NzQsMjMgQEAgcHVibGljOgogICAgIGNvbnN0IEZsb2F0U2l6ZSYgbWluaW11bUxheW91dFNpemUo
KSBjb25zdCB7IHJldHVybiBtX21pbmltdW1MYXlvdXRTaXplOyB9CiAgICAgdm9pZCBzZXRNaW5p
bXVtTGF5b3V0U2l6ZShjb25zdCBGbG9hdFNpemUmKTsKIAorICAgIGNvbnN0IEZsb2F0U2l6ZSYg
bWluaW11bUxheW91dFNpemVGb3JNaW5pbWFsVUkoKSBjb25zdCB7IHJldHVybiBtX21pbmltdW1M
YXlvdXRTaXplRm9yTWluaW1hbFVJLmlzRW1wdHkoKSA/IG1fbWluaW11bUxheW91dFNpemUgOiBt
X21pbmltdW1MYXlvdXRTaXplRm9yTWluaW1hbFVJOyB9CisgICAgdm9pZCBzZXRNaW5pbXVtTGF5
b3V0U2l6ZUZvck1pbmltYWxVSShjb25zdCBGbG9hdFNpemUmKTsKKworICAgIGNvbnN0IEZsb2F0
U2l6ZSYgYWN0aXZlTWluaW11bUxheW91dFNpemVJblNjcm9sbFZpZXdDb29yZGluYXRlcygpIGNv
bnN0OworCiAgICAgY29uc3QgVmlld3BvcnRBcmd1bWVudHMmIHZpZXdwb3J0QXJndW1lbnRzKCkg
Y29uc3QgeyByZXR1cm4gbV92aWV3cG9ydEFyZ3VtZW50czsgfQogICAgIHZvaWQgc2V0Vmlld3Bv
cnRBcmd1bWVudHMoY29uc3QgVmlld3BvcnRBcmd1bWVudHMmKTsKIAorICAgIHZvaWQgcmVzZXRN
aW5pbWFsVUkoKTsKKyAgICB2b2lkIGRpZEZpbmlzaERvY3VtZW50TG9hZCgpOworCiAgICAgSW50
U2l6ZSBsYXlvdXRTaXplKCkgY29uc3Q7CiAgICAgZG91YmxlIGluaXRpYWxTY2FsZSgpIGNvbnN0
OwogICAgIGRvdWJsZSBtaW5pbXVtU2NhbGUoKSBjb25zdDsKICAgICBkb3VibGUgbWF4aW11bVNj
YWxlKCkgY29uc3QgeyByZXR1cm4gbV9jb25maWd1cmF0aW9uLm1heGltdW1TY2FsZTsgfQogICAg
IGJvb2wgYWxsb3dzVXNlclNjYWxpbmcoKSBjb25zdCB7IHJldHVybiBtX2NvbmZpZ3VyYXRpb24u
YWxsb3dzVXNlclNjYWxpbmc7IH0KKyAgICBib29sIHVzZXNNaW5pbWFsVUkoKSBjb25zdCB7IHJl
dHVybiBtX3VzZXNNaW5pbWFsVUk7IH0KIAogICAgIHN0YXRpYyBQYXJhbWV0ZXJzIHdlYnBhZ2VQ
YXJhbWV0ZXJzKCk7CiAgICAgc3RhdGljIFBhcmFtZXRlcnMgdGV4dERvY3VtZW50UGFyYW1ldGVy
cygpOwpAQCAtMTAyLDcgKzExMSwxMSBAQCBwcml2YXRlOgogICAgIFBhcmFtZXRlcnMgbV9kZWZh
dWx0Q29uZmlndXJhdGlvbjsKICAgICBJbnRTaXplIG1fY29udGVudFNpemU7CiAgICAgRmxvYXRT
aXplIG1fbWluaW11bUxheW91dFNpemU7CisgICAgRmxvYXRTaXplIG1fbWluaW11bUxheW91dFNp
emVGb3JNaW5pbWFsVUk7CiAgICAgVmlld3BvcnRBcmd1bWVudHMgbV92aWV3cG9ydEFyZ3VtZW50
czsKKworICAgIGJvb2wgbV91c2VzTWluaW1hbFVJOworICAgIGJvb2wgbV9wYWdlRGlkRmluaXNo
RG9jdW1lbnRMb2FkOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclZpZXcuY3BwIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlclZpZXcuY3BwCmluZGV4IDVkN2Q0MWE1OWJkYTM3Njg5ZmRhZThmMzY1
YzZhZmQwZjExZTY0MWQuLjU2Yzk4OGNjNTI4MDk4MjBkYzY4MWVjYzljOGVlYmRlMTVmMTg2OGQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWaWV3LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVmlldy5jcHAKQEAgLTExODYsOSArMTE4
Niw5IEBAIGJvb2wgUmVuZGVyVmlldzo6c2hvdWxkRGlzYWJsZUxheW91dFN0YXRlRm9yU3VidHJl
ZShSZW5kZXJPYmplY3QqIHJlbmRlcmVyKSBjb25zCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1J
bnRTaXplIFJlbmRlclZpZXc6OnZpZXdwb3J0U2l6ZSgpIGNvbnN0CitJbnRTaXplIFJlbmRlclZp
ZXc6OnZpZXdwb3J0U2l6ZUZvckNTU1ZpZXdwb3J0VW5pdHMoKSBjb25zdAogewotICAgIHJldHVy
biBmcmFtZVZpZXcoKS52aWV3cG9ydFNpemUoKTsKKyAgICByZXR1cm4gZnJhbWVWaWV3KCkudmll
d3BvcnRTaXplRm9yQ1NTVmlld3BvcnRVbml0cygpOwogfQogCiB2b2lkIFJlbmRlclZpZXc6OnVw
ZGF0ZUhpdFRlc3RSZXN1bHQoSGl0VGVzdFJlc3VsdCYgcmVzdWx0LCBjb25zdCBMYXlvdXRQb2lu
dCYgcG9pbnQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVmll
dy5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclZpZXcuaAppbmRleCBjYWRmN2Jk
NWU0MDhiNmY5NTRmN2M3NmEwMzEzNjY4NDBlYTRmMTQ5Li4xMjVhMTliODE3NmIzMjIyYmFiY2Y2
ODk4YjllNTgyNDA3OTI4MjYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyVmlldy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWaWV3LmgK
QEAgLTIwNSw3ICsyMDUsNyBAQCBwdWJsaWM6CiAKICAgICBJbnRlcnZhbEFyZW5hKiBpbnRlcnZh
bEFyZW5hKCk7CiAKLSAgICBJbnRTaXplIHZpZXdwb3J0U2l6ZSgpIGNvbnN0OworICAgIEludFNp
emUgdmlld3BvcnRTaXplRm9yQ1NTVmlld3BvcnRVbml0cygpIGNvbnN0OwogCiAgICAgdm9pZCBz
ZXRSZW5kZXJRdW90ZUhlYWQoUmVuZGVyUXVvdGUqIGhlYWQpIHsgbV9yZW5kZXJRdW90ZUhlYWQg
PSBoZWFkOyB9CiAgICAgUmVuZGVyUXVvdGUqIHJlbmRlclF1b3RlSGVhZCgpIGNvbnN0IHsgcmV0
dXJuIG1fcmVuZGVyUXVvdGVIZWFkOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL0NvY29hL1dLVUlEZWxlZ2F0ZVByaXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvQ29jb2EvV0tVSURlbGVnYXRlUHJpdmF0ZS5oCmluZGV4IDM5YThmODZkYzYx
ZTE5NDgyMGJkYmE0MDM4MjQ2ZDBhMjYyNjk5Y2QuLmYzYWNmMTVlN2U2YzUxYjA3ZjU2M2Q0M2Vh
MTg2YmJjMDYzYjU1YzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
Q29jb2EvV0tVSURlbGVnYXRlUHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvQ29jb2EvV0tVSURlbGVnYXRlUHJpdmF0ZS5oCkBAIC0zNiw2ICszNiw3IEBACiAjaWYg
VEFSR0VUX09TX0lQSE9ORQogLSAoTlNBcnJheSAqKV93ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJW
aWV3IGFjdGlvbnNGb3JFbGVtZW50OihfV0tBY3RpdmF0ZWRFbGVtZW50SW5mbyAqKWVsZW1lbnQg
ZGVmYXVsdEFjdGlvbnM6KE5TQXJyYXkgKilkZWZhdWx0QWN0aW9uczsKIC0gKHZvaWQpX3dlYlZp
ZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgZGlkTm90SGFuZGxlVGFwQXNDbGlja0F0UG9pbnQ6KENH
UG9pbnQpcG9pbnQ7CistICh2b2lkKV93ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IHVzZXNN
aW5pbWFsVUk6KEJPT0wpd2FudE1pbmltYWxVSTsKICNlbmRpZgogCiBAZW5kCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbSBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCmluZGV4IGYwYzcwMTdm
ZTA4OGFjMGFmMTcyOWExZDZiZmYzMzdkNTQ3NmJlMDYuLmIwZDQ1MDEyNWQ5ZjRlYzFhOTk5NGM3
ODEyMWU0NGIwMWU3MmU5NjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvQ29jb2EvV0tXZWJWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
Q29jb2EvV0tXZWJWaWV3Lm1tCkBAIC00OCw2ICs0OCw3IEBACiAjaW1wb3J0ICJXS1ByZWZlcmVu
Y2VzSW50ZXJuYWwuaCIKICNpbXBvcnQgIldLUHJvY2Vzc1Bvb2xJbnRlcm5hbC5oIgogI2ltcG9y
dCAiV0tVSURlbGVnYXRlLmgiCisjaW1wb3J0ICJXS1VJRGVsZWdhdGVQcml2YXRlLmgiCiAjaW1w
b3J0ICJXS1VzZXJDb250ZW50Q29udHJvbGxlckludGVybmFsLmgiCiAjaW1wb3J0ICJXS1dlYlZp
ZXdDb25maWd1cmF0aW9uSW50ZXJuYWwuaCIKICNpbXBvcnQgIldLV2ViVmlld0NvbnRlbnRQcm92
aWRlci5oIgpAQCAtMTM0LDkgKzEzNSwxNCBAQCBXS1dlYlZpZXcqIGZyb21XZWJQYWdlUHJveHko
V2ViS2l0OjpXZWJQYWdlUHJveHkmIHBhZ2UpCiAgICAgUmV0YWluUHRyPFdLU2Nyb2xsVmlldz4g
X3Njcm9sbFZpZXc7CiAgICAgUmV0YWluUHRyPFdLQ29udGVudFZpZXc+IF9jb250ZW50VmlldzsK
IAotICAgIEJPT0wgX2hhc1N0YXRpY01pbmltdW1MYXlvdXRTaXplOworICAgIEJPT0wgX292ZXJy
aWRlc01pbmltdW1MYXlvdXRTaXplOwogICAgIENHU2l6ZSBfbWluaW11bUxheW91dFNpemVPdmVy
cmlkZTsKKyAgICBCT09MIF9vdmVycmlkZXNNaW5pbXVtTGF5b3V0U2l6ZUZvck1pbmltYWxVSTsK
ICAgICBDR1NpemUgX21pbmltdW1MYXlvdXRTaXplT3ZlcnJpZGVGb3JNaW5pbWFsVUk7CisgICAg
Qk9PTCBfb3ZlcnJpZGVzTWF4aW11bVVub2JzY3VyZWRTaXplOworICAgIENHU2l6ZSBfbWF4aW11
bVVub2JzY3VyZWRTaXplT3ZlcnJpZGU7CisgICAgQk9PTCBfdXNlc01pbmltYWxVSTsKKyAgICBC
T09MIF9uZWVkc1RvTm90aWZ5RGVsZWdhdGVBYm91dE1pbmltYWxVSTsKICAgICBDR1JlY3QgX2lu
cHV0Vmlld0JvdW5kczsKICAgICBDR0Zsb2F0IF92aWV3cG9ydE1ldGFUYWdXaWR0aDsKIApAQCAt
NTE2LDkgKzUyMiwyMSBAQCBzdGF0aWMgQ0dGbG9hdCBjb250ZW50Wm9vbVNjYWxlKFdLV2ViVmll
dyogd2ViVmlldykKICAgICBbX3Njcm9sbFZpZXcgc2V0QmFja2dyb3VuZENvbG9yOnVpQmFja2dy
b3VuZENvbG9yLmdldCgpXTsKIH0KIAorLSAodm9pZClfc2V0VXNlc01pbmltYWxVSTooQk9PTCl1
c2VzTWluaW1hbFVJCit7CisgICAgX3VzZXNNaW5pbWFsVUkgPSB1c2VzTWluaW1hbFVJOworICAg
IF9uZWVkc1RvTm90aWZ5RGVsZWdhdGVBYm91dE1pbmltYWxVSSA9IFlFUzsKK30KKworLSAoQk9P
TClfdXNlc01pbmltYWxVSQoreworICAgIHJldHVybiBfdXNlc01pbmltYWxVSTsKK30KKwogLSAo
dm9pZClfZGlkQ29tbWl0TG9hZEZvck1haW5GcmFtZQogewogICAgIF9uZWVkc1Jlc2V0Vmlld1N0
YXRlQWZ0ZXJDb21taXRMb2FkRm9yTWFpbkZyYW1lID0gWUVTOworICAgIF91c2VzTWluaW1hbFVJ
ID0gTk87CiB9CiAKIC0gKHZvaWQpX2RpZENvbW1pdExheWVyVHJlZTooY29uc3QgV2ViS2l0OjpS
ZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbiYpbGF5ZXJUcmVlVHJhbnNhY3Rpb24KQEAgLTU0Myw2
ICs1NjEsMTQgQEAgc3RhdGljIENHRmxvYXQgY29udGVudFpvb21TY2FsZShXS1dlYlZpZXcqIHdl
YlZpZXcpCiAgICAgaWYgKF9nZXN0dXJlQ29udHJvbGxlcikKICAgICAgICAgX2dlc3R1cmVDb250
cm9sbGVyLT5zZXRSZW5kZXJUcmVlU2l6ZShsYXllclRyZWVUcmFuc2FjdGlvbi5yZW5kZXJUcmVl
U2l6ZSgpKTsKIAorICAgIGlmIChfbmVlZHNUb05vdGlmeURlbGVnYXRlQWJvdXRNaW5pbWFsVUkg
fHwgX25lZWRzUmVzZXRWaWV3U3RhdGVBZnRlckNvbW1pdExvYWRGb3JNYWluRnJhbWUpIHsKKyAg
ICAgICAgX25lZWRzVG9Ob3RpZnlEZWxlZ2F0ZUFib3V0TWluaW1hbFVJID0gTk87CisKKyAgICAg
ICAgYXV0byBkZWxlZ2F0ZSA9IF91aURlbGVnYXRlLT5kZWxlZ2F0ZSgpOworICAgICAgICBpZiAo
W2RlbGVnYXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoX3dlYlZpZXc6dXNlc01pbmlt
YWxVSTopXSkKKyAgICAgICAgICAgIFtzdGF0aWNfY2FzdDxpZCA8V0tVSURlbGVnYXRlUHJpdmF0
ZT4+KGRlbGVnYXRlLmdldCgpKSBfd2ViVmlldzpzZWxmIHVzZXNNaW5pbWFsVUk6X3VzZXNNaW5p
bWFsVUldOworICAgIH0KKwogICAgIGlmIChfbmVlZHNSZXNldFZpZXdTdGF0ZUFmdGVyQ29tbWl0
TG9hZEZvck1haW5GcmFtZSkgewogICAgICAgICBfbmVlZHNSZXNldFZpZXdTdGF0ZUFmdGVyQ29t
bWl0TG9hZEZvck1haW5GcmFtZSA9IE5POwogICAgICAgICBbX3Njcm9sbFZpZXcgc2V0Q29udGVu
dE9mZnNldDpDR1BvaW50TWFrZSgtX29ic2N1cmVkSW5zZXRzLmxlZnQsIC1fb2JzY3VyZWRJbnNl
dHMudG9wKV07CkBAIC05MjYsMTcgKzk1MiwxOCBAQCBzdGF0aWMgV2ViQ29yZTo6RmxvYXRQb2lu
dCBjb25zdHJhaW5Db250ZW50T2Zmc2V0KFdlYkNvcmU6OkZsb2F0UG9pbnQgY29udGVudE9mZgog
ICAgIFtfY29udGVudFZpZXcgZGlkWm9vbVRvU2NhbGU6c2NhbGVdOwogfQogCi1zdGF0aWMgaW5s
aW5lIHZvaWQgc2V0Vmlld3BvcnRDb25maWd1cmF0aW9uTWluaW11bUxheW91dFNpemUoV2ViS2l0
OjpXZWJQYWdlUHJveHkmIHBhZ2UsIGNvbnN0IENHU2l6ZSYgc2l6ZSkKLXsKLSAgICBwYWdlLnNl
dFZpZXdwb3J0Q29uZmlndXJhdGlvbk1pbmltdW1MYXlvdXRTaXplKFdlYkNvcmU6OkZsb2F0U2l6
ZShzaXplKSk7Ci19Ci0KIC0gKHZvaWQpX2ZyYW1lT3JCb3VuZHNDaGFuZ2VkCiB7CiAgICAgQ0dS
ZWN0IGJvdW5kcyA9IHNlbGYuYm91bmRzOworICAgIGlmICghX2lzQW5pbWF0aW5nUmVzaXplKSB7
CisgICAgICAgIGlmICghX292ZXJyaWRlc01pbmltdW1MYXlvdXRTaXplKQorICAgICAgICAgICAg
X3BhZ2UtPnNldFZpZXdwb3J0Q29uZmlndXJhdGlvbk1pbmltdW1MYXlvdXRTaXplKFdlYkNvcmU6
OkZsb2F0U2l6ZShib3VuZHMuc2l6ZSkpOworICAgICAgICBpZiAoIV9vdmVycmlkZXNNaW5pbXVt
TGF5b3V0U2l6ZUZvck1pbmltYWxVSSkKKyAgICAgICAgICAgIF9wYWdlLT5zZXRWaWV3cG9ydENv
bmZpZ3VyYXRpb25NaW5pbXVtTGF5b3V0U2l6ZUZvck1pbmltYWxVSShXZWJDb3JlOjpGbG9hdFNp
emUoYm91bmRzLnNpemUpKTsKKyAgICAgICAgaWYgKCFfb3ZlcnJpZGVzTWF4aW11bVVub2JzY3Vy
ZWRTaXplKQorICAgICAgICAgICAgX3BhZ2UtPnNldE1heGltdW1Vbm9ic2N1cmVkU2l6ZShXZWJD
b3JlOjpGbG9hdFNpemUoYm91bmRzLnNpemUpKTsKKyAgICB9CiAKLSAgICBpZiAoIV9oYXNTdGF0
aWNNaW5pbXVtTGF5b3V0U2l6ZSAmJiAhX2lzQW5pbWF0aW5nUmVzaXplKQotICAgICAgICBzZXRW
aWV3cG9ydENvbmZpZ3VyYXRpb25NaW5pbXVtTGF5b3V0U2l6ZSgqX3BhZ2UsIGJvdW5kcy5zaXpl
KTsKICAgICBbX3Njcm9sbFZpZXcgc2V0RnJhbWU6Ym91bmRzXTsKICAgICBbX2NvbnRlbnRWaWV3
IHNldE1pbmltdW1TaXplOmJvdW5kcy5zaXplXTsKICAgICBbX2N1c3RvbUNvbnRlbnRWaWV3IHdl
Yl9zZXRNaW5pbXVtU2l6ZTpib3VuZHMuc2l6ZV07CkBAIC0xNDk0LDI4ICsxNTIxLDMwIEBAIHN0
YXRpYyBpbmxpbmUgV2ViS2l0OjpGaW5kT3B0aW9ucyB0b0ZpbmRPcHRpb25zKF9XS0ZpbmRPcHRp
b25zIHdrRmluZE9wdGlvbnMpCiAKIC0gKENHU2l6ZSlfbWluaW11bUxheW91dFNpemVPdmVycmlk
ZQogewotICAgIEFTU0VSVChfaGFzU3RhdGljTWluaW11bUxheW91dFNpemUpOworICAgIEFTU0VS
VChfb3ZlcnJpZGVzTWluaW11bUxheW91dFNpemUpOwogICAgIHJldHVybiBfbWluaW11bUxheW91
dFNpemVPdmVycmlkZTsKIH0KIAogLSAodm9pZClfc2V0TWluaW11bUxheW91dFNpemVPdmVycmlk
ZTooQ0dTaXplKW1pbmltdW1MYXlvdXRTaXplT3ZlcnJpZGUKIHsKLSAgICBfaGFzU3RhdGljTWlu
aW11bUxheW91dFNpemUgPSBZRVM7CisgICAgX292ZXJyaWRlc01pbmltdW1MYXlvdXRTaXplID0g
WUVTOwogICAgIF9taW5pbXVtTGF5b3V0U2l6ZU92ZXJyaWRlID0gbWluaW11bUxheW91dFNpemVP
dmVycmlkZTsKICAgICBpZiAoIV9pc0FuaW1hdGluZ1Jlc2l6ZSkKLSAgICAgICAgc2V0Vmlld3Bv
cnRDb25maWd1cmF0aW9uTWluaW11bUxheW91dFNpemUoKl9wYWdlLCBtaW5pbXVtTGF5b3V0U2l6
ZU92ZXJyaWRlKTsKKyAgICAgICAgX3BhZ2UtPnNldFZpZXdwb3J0Q29uZmlndXJhdGlvbk1pbmlt
dW1MYXlvdXRTaXplKFdlYkNvcmU6OkZsb2F0U2l6ZShtaW5pbXVtTGF5b3V0U2l6ZU92ZXJyaWRl
KSk7CiB9CiAKIC0gKENHU2l6ZSlfbWluaW11bUxheW91dFNpemVPdmVycmlkZUZvck1pbmltYWxV
SQogeworICAgIEFTU0VSVChfb3ZlcnJpZGVzTWluaW11bUxheW91dFNpemVGb3JNaW5pbWFsVUkp
OwogICAgIHJldHVybiBfbWluaW11bUxheW91dFNpemVPdmVycmlkZUZvck1pbmltYWxVSTsKIH0K
IAogLSAodm9pZClfc2V0TWluaW11bUxheW91dFNpemVPdmVycmlkZUZvck1pbmltYWxVSTooQ0dT
aXplKXNpemUKIHsKKyAgICBfb3ZlcnJpZGVzTWluaW11bUxheW91dFNpemVGb3JNaW5pbWFsVUkg
PSBZRVM7CiAgICAgX21pbmltdW1MYXlvdXRTaXplT3ZlcnJpZGVGb3JNaW5pbWFsVUkgPSBzaXpl
OwogICAgIGlmICghX2lzQW5pbWF0aW5nUmVzaXplKQotICAgICAgICBfcGFnZS0+c2V0TWluaW11
bUxheW91dFNpemVGb3JNaW5pbWFsVUkoV2ViQ29yZTo6RmxvYXRTaXplKHNpemUpKTsKKyAgICAg
ICAgX3BhZ2UtPnNldFZpZXdwb3J0Q29uZmlndXJhdGlvbk1pbmltdW1MYXlvdXRTaXplRm9yTWlu
aW1hbFVJKFdlYkNvcmU6OkZsb2F0U2l6ZShzaXplKSk7CiB9CiAKIC0gKFVJRWRnZUluc2V0cylf
b2JzY3VyZWRJbnNldHMKQEAgLTE1MzgsNiArMTU2NywyNCBAQCBzdGF0aWMgaW5saW5lIFdlYktp
dDo6RmluZE9wdGlvbnMgdG9GaW5kT3B0aW9ucyhfV0tGaW5kT3B0aW9ucyB3a0ZpbmRPcHRpb25z
KQogICAgIFtzZWxmIF91cGRhdGVWaXNpYmxlQ29udGVudFJlY3RzXTsKIH0KIAorLSAoQ0dTaXpl
KV9tYXhpbXVtVW5vYnNjdXJlZFNpemVPdmVycmlkZQoreworICAgIEFTU0VSVChfb3ZlcnJpZGVz
TWF4aW11bVVub2JzY3VyZWRTaXplKTsKKyAgICByZXR1cm4gX21heGltdW1Vbm9ic2N1cmVkU2l6
ZU92ZXJyaWRlOworfQorCistICh2b2lkKV9zZXRNYXhpbXVtVW5vYnNjdXJlZFNpemVPdmVycmlk
ZTooQ0dTaXplKXNpemUKK3sKKyAgICBBU1NFUlQoc2l6ZS53aWR0aCA8PSBzZWxmLmJvdW5kcy5z
aXplLndpZHRoICYmIHNpemUuaGVpZ2h0IDw9IHNlbGYuYm91bmRzLnNpemUuaGVpZ2h0KTsKKyAg
ICBfb3ZlcnJpZGVzTWF4aW11bVVub2JzY3VyZWRTaXplID0gWUVTOworICAgIGlmIChDR1NpemVF
cXVhbFRvU2l6ZShfbWF4aW11bVVub2JzY3VyZWRTaXplT3ZlcnJpZGUsIHNpemUpKQorICAgICAg
ICByZXR1cm47CisKKyAgICBfbWF4aW11bVVub2JzY3VyZWRTaXplT3ZlcnJpZGUgPSBzaXplOwor
ICAgIGlmICghX2lzQW5pbWF0aW5nUmVzaXplKQorICAgICAgICBfcGFnZS0+c2V0TWF4aW11bVVu
b2JzY3VyZWRTaXplKFdlYkNvcmU6OkZsb2F0U2l6ZShzaXplKSk7Cit9CisKIC0gKHZvaWQpX3Nl
dEJhY2tncm91bmRFeHRlbmRzQmV5b25kUGFnZTooQk9PTCliYWNrZ3JvdW5kRXh0ZW5kcwogewog
ICAgIF9wYWdlLT5zZXRCYWNrZ3JvdW5kRXh0ZW5kc0JleW9uZFBhZ2UoYmFja2dyb3VuZEV4dGVu
ZHMpOwpAQCAtMTU3MCwxMyArMTYxNyw3IEBAIHN0YXRpYyBpbmxpbmUgV2ViS2l0OjpGaW5kT3B0
aW9ucyB0b0ZpbmRPcHRpb25zKF9XS0ZpbmRPcHRpb25zIHdrRmluZE9wdGlvbnMpCiAgICAgX3Jl
c2l6ZUFuaW1hdGlvblZpZXcgPSBhZG9wdE5TKFtbVUlWaWV3IGFsbG9jXSBpbml0XSk7CiAgICAg
W19zY3JvbGxWaWV3IGluc2VydFN1YnZpZXc6X3Jlc2l6ZUFuaW1hdGlvblZpZXcuZ2V0KCkgYXRJ
bmRleDppbmRleE9mQ29udGVudFZpZXddOwogICAgIFtfcmVzaXplQW5pbWF0aW9uVmlldyBhZGRT
dWJ2aWV3Ol9jb250ZW50Vmlldy5nZXQoKV07Ci0KLSAgICBDR1JlY3Qgb2xkQm91bmRzID0gc2Vs
Zi5ib3VuZHM7Ci0gICAgQ0dTaXplIG9sZE1pbmltdW1MYXlvdXRTaXplID0gb2xkQm91bmRzLnNp
emU7Ci0gICAgaWYgKF9oYXNTdGF0aWNNaW5pbXVtTGF5b3V0U2l6ZSkKLSAgICAgICAgb2xkTWlu
aW11bUxheW91dFNpemUgPSBfbWluaW11bUxheW91dFNpemVPdmVycmlkZTsKICAgICBXZWJDb3Jl
OjpGbG9hdFJlY3Qgb2xkVW5vYnNjdXJlZENvbnRlbnRSZWN0ID0gX3BhZ2UtPnVub2JzY3VyZWRD
b250ZW50UmVjdCgpOwotICAgIFVJRWRnZUluc2V0cyBvbGRJbnNldHMgPSBfb2JzY3VyZWRJbnNl
dHM7CiAKICAgICB1cGRhdGVCbG9jaygpOwogCkBAIC0xNTg1LDEzICsxNjI2LDYgQEAgc3RhdGlj
IGlubGluZSBXZWJLaXQ6OkZpbmRPcHRpb25zIHRvRmluZE9wdGlvbnMoX1dLRmluZE9wdGlvbnMg
d2tGaW5kT3B0aW9ucykKIAogICAgIENHUmVjdCBuZXdCb3VuZHMgPSBzZWxmLmJvdW5kczsKICAg
ICBDR1NpemUgbmV3TWluaW11bUxheW91dFNpemUgPSBuZXdCb3VuZHMuc2l6ZTsKLSAgICBpZiAo
X2hhc1N0YXRpY01pbmltdW1MYXlvdXRTaXplKQotICAgICAgICBuZXdNaW5pbXVtTGF5b3V0U2l6
ZSA9IF9taW5pbXVtTGF5b3V0U2l6ZU92ZXJyaWRlOwotCi0gICAgaWYgKENHU2l6ZUVxdWFsVG9T
aXplKG5ld01pbmltdW1MYXlvdXRTaXplLCBvbGRNaW5pbXVtTGF5b3V0U2l6ZSkKLSAgICAgICAg
JiYgQ0dSZWN0RXF1YWxUb1JlY3QobmV3Qm91bmRzLCBvbGRCb3VuZHMpCi0gICAgICAgICYmIFVJ
RWRnZUluc2V0c0VxdWFsVG9FZGdlSW5zZXRzKG9sZEluc2V0cywgX29ic2N1cmVkSW5zZXRzKSkK
LSAgICAgICAgcmV0dXJuOwogCiAgICAgQ0dTaXplIGNvbnRlbnRTaXplSW5Db250ZW50Vmlld0Nv
b3JkaW5hdGVzID0gW19jb250ZW50VmlldyBib3VuZHNdLnNpemU7CiAgICAgW19zY3JvbGxWaWV3
IHNldE1pbmltdW1ab29tU2NhbGU6c3RkOjptaW4obmV3TWluaW11bUxheW91dFNpemUud2lkdGgg
LyBjb250ZW50U2l6ZUluQ29udGVudFZpZXdDb29yZGluYXRlcy53aWR0aCwgW19zY3JvbGxWaWV3
IG1pbmltdW1ab29tU2NhbGVdKV07CkBAIC0xNjM4LDcgKzE2NzIsMTkgQEAgc3RhdGljIGlubGlu
ZSBXZWJLaXQ6OkZpbmRPcHRpb25zIHRvRmluZE9wdGlvbnMoX1dLRmluZE9wdGlvbnMgd2tGaW5k
T3B0aW9ucykKICAgICBDR1JlY3QgdmlzaWJsZVJlY3RJbkNvbnRlbnRDb29yZGluYXRlcyA9IFtz
ZWxmIGNvbnZlcnRSZWN0Om5ld0JvdW5kcyB0b1ZpZXc6X2NvbnRlbnRWaWV3LmdldCgpXTsKICAg
ICBDR1JlY3QgdW5vYnNjdXJlZFJlY3RJbkNvbnRlbnRDb29yZGluYXRlcyA9IFtzZWxmIGNvbnZl
cnRSZWN0OmZ1dHVyZVVub2JzY3VyZWRSZWN0SW5TZWxmQ29vcmRpbmF0ZXMgdG9WaWV3Ol9jb250
ZW50Vmlldy5nZXQoKV07CiAKLSAgICBfcGFnZS0+ZHluYW1pY1ZpZXdwb3J0U2l6ZVVwZGF0ZShX
ZWJDb3JlOjpGbG9hdFNpemUobmV3TWluaW11bUxheW91dFNpemUud2lkdGgsIG5ld01pbmltdW1M
YXlvdXRTaXplLmhlaWdodCksIHZpc2libGVSZWN0SW5Db250ZW50Q29vcmRpbmF0ZXMsIHVub2Jz
Y3VyZWRSZWN0SW5Db250ZW50Q29vcmRpbmF0ZXMsIGZ1dHVyZVVub2JzY3VyZWRSZWN0SW5TZWxm
Q29vcmRpbmF0ZXMsIHRhcmdldFNjYWxlKTsKKyAgICBDR1NpemUgbWluaW11bUxheW91dFNpemUg
PSBuZXdCb3VuZHMuc2l6ZTsKKyAgICBpZiAoX292ZXJyaWRlc01pbmltdW1MYXlvdXRTaXplKQor
ICAgICAgICBtaW5pbXVtTGF5b3V0U2l6ZSA9IF9taW5pbXVtTGF5b3V0U2l6ZU92ZXJyaWRlOwor
CisgICAgQ0dTaXplIG1pbmltdW1MYXlvdXRTaXplRm9yTWluaW1hbFVJID0gbWluaW11bUxheW91
dFNpemU7CisgICAgaWYgKF9vdmVycmlkZXNNaW5pbXVtTGF5b3V0U2l6ZUZvck1pbmltYWxVSSkK
KyAgICAgICAgbWluaW11bUxheW91dFNpemVGb3JNaW5pbWFsVUkgPSBfbWluaW11bUxheW91dFNp
emVPdmVycmlkZUZvck1pbmltYWxVSTsKKworICAgIENHU2l6ZSBtYXhpbXVtVW5vYnNjdXJlZFNp
emUgPSBuZXdCb3VuZHMuc2l6ZTsKKyAgICBpZiAoX292ZXJyaWRlc01heGltdW1Vbm9ic2N1cmVk
U2l6ZSkKKyAgICAgICAgbWF4aW11bVVub2JzY3VyZWRTaXplID0gX21heGltdW1Vbm9ic2N1cmVk
U2l6ZU92ZXJyaWRlOworCisgICAgX3BhZ2UtPmR5bmFtaWNWaWV3cG9ydFNpemVVcGRhdGUoV2Vi
Q29yZTo6RmxvYXRTaXplKG1pbmltdW1MYXlvdXRTaXplKSwgV2ViQ29yZTo6RmxvYXRTaXplKG1p
bmltdW1MYXlvdXRTaXplRm9yTWluaW1hbFVJKSwgV2ViQ29yZTo6RmxvYXRTaXplKG1heGltdW1V
bm9ic2N1cmVkU2l6ZSksIHZpc2libGVSZWN0SW5Db250ZW50Q29vcmRpbmF0ZXMsIHVub2JzY3Vy
ZWRSZWN0SW5Db250ZW50Q29vcmRpbmF0ZXMsIGZ1dHVyZVVub2JzY3VyZWRSZWN0SW5TZWxmQ29v
cmRpbmF0ZXMsIHRhcmdldFNjYWxlKTsKIH0KIAogLSAodm9pZClfZW5kQW5pbWF0ZWRSZXNpemUK
QEAgLTE3MzEsNiArMTc3NywxNSBAQCBzdGF0aWMgaW5saW5lIFdlYktpdDo6RmluZE9wdGlvbnMg
dG9GaW5kT3B0aW9ucyhfV0tGaW5kT3B0aW9ucyB3a0ZpbmRPcHRpb25zKQogICAgIH0pOwogfQog
CistICh2b2lkKV9vdmVycmlkZUxheW91dFBhcmFtZXRlcnNXaXRoTWluaW11bUxheW91dFNpemU6
KENHU2l6ZSltaW5pbXVtTGF5b3V0U2l6ZSBtaW5pbXVtTGF5b3V0U2l6ZUZvck1pbmltYWxVSToo
Q0dTaXplKW1pbmltdW1MYXlvdXRTaXplRm9yTWluaW1hbFVJIG1heGltdW1Vbm9ic2N1cmVkU2l6
ZU92ZXJyaWRlOihDR1NpemUpbWF4aW11bVVub2JzY3VyZWRTaXplT3ZlcnJpZGUKK3sKKyAgICAv
LyBGSVhNRTogQWZ0ZXIgU2FmYXJpIGlzIHVwZGF0ZWQgdG8gdXNlIHRoaXMgZnVuY3Rpb24gaW5z
dGVhZCBvZiBzZXR0aW5nIHRoZSBwYXJhbWV0ZXJzIHNlcGFyYXRlbHksIHdlIHNob3VsZCByZW1v
dmUKKyAgICAvLyB0aGUgaW5kaXZpZHVhbCBzZXR0ZXJzIGFuZCBzZW5kIGEgc2luZ2xlIG1lc3Nh
Z2UgdG8gc2VuZCBldmVyeXRoaW5nIGF0IG9uY2UgdG8gdGhlIFdlYlByb2Nlc3MuCisgICAgc2Vs
Zi5fbWluaW11bUxheW91dFNpemVPdmVycmlkZSA9IG1pbmltdW1MYXlvdXRTaXplOworICAgIHNl
bGYuX21pbmltdW1MYXlvdXRTaXplT3ZlcnJpZGVGb3JNaW5pbWFsVUkgPSBtaW5pbXVtTGF5b3V0
U2l6ZUZvck1pbmltYWxVSTsKKyAgICBzZWxmLl9tYXhpbXVtVW5vYnNjdXJlZFNpemVPdmVycmlk
ZSA9IG1heGltdW1Vbm9ic2N1cmVkU2l6ZU92ZXJyaWRlOworfQorCiAtIChVSVZpZXcgKilfdmll
d0ZvckZpbmRVSQogewogICAgIHJldHVybiBbc2VsZiB2aWV3Rm9yWm9vbWluZ0luU2Nyb2xsVmll
dzpbc2VsZiBzY3JvbGxWaWV3XV07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL0NvY29hL1dLV2ViVmlld0ludGVybmFsLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL0NvY29hL1dLV2ViVmlld0ludGVybmFsLmgKaW5kZXggYzBhZTZmOTUxZDMzYjVhYTNk
Zjc0MThhN2IzYjMzZDA1MGJiYWUwNy4uMWIwZDQ2N2U1MDQzZmEwODYwYTcyYWIxMGVjZDVjNmY0
NGUzMmFjMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9X
S1dlYlZpZXdJbnRlcm5hbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29j
b2EvV0tXZWJWaWV3SW50ZXJuYWwuaApAQCAtNjEsNiArNjEsOSBAQCBzdHJ1Y3QgVmlld1NuYXBz
aG90OwogfQogCiAjaWYgUExBVEZPUk0oSU9TKQorCitAcHJvcGVydHkgKG5vbmF0b21pYywgc2V0
dGVyPV9zZXRVc2VzTWluaW1hbFVJOikgQk9PTCBfdXNlc01pbmltYWxVSTsKKwogLSAodm9pZClf
ZGlkQ29tbWl0TG9hZEZvck1haW5GcmFtZTsKIC0gKHZvaWQpX2RpZENvbW1pdExheWVyVHJlZToo
Y29uc3QgV2ViS2l0OjpSZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbiYpbGF5ZXJUcmVlVHJhbnNh
Y3Rpb247CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2Ev
V0tXZWJWaWV3UHJpdmF0ZS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9X
S1dlYlZpZXdQcml2YXRlLmgKaW5kZXggYWY5NDZmZWUwNzVmMzJhZWRhYTc3NjVlMTI0ZGRlMDk4
NDUwYTg0ZC4uMmM0MjY1ODNiMWZlNGQxYTYwNjdhNDIzYTZhM2VjZDc4ZDUzMDM1MiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdQcml2YXRl
LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdQcml2
YXRlLmgKQEAgLTk1LDggKzk1LDE1IEBAIHR5cGVkZWYgTlNfT1BUSU9OUyhOU1VJbnRlZ2VyLCBf
V0tGaW5kT3B0aW9ucykgewogLSAodm9pZClfY2xvc2U7CiAKICNpZiBUQVJHRVRfT1NfSVBIT05F
CisvLyBERVJFQ0FURUQ6IFRoZSBzZXR0ZXJzIG9mIHRoZSB0aHJlZSBmb2xsb3dpbmcgZnVuY3Rp
b24gYXJlIGRlcHJlY2F0ZWQsIHBsZWFzZSB1c2Ugb3ZlcnJpZGVMYXlvdXRQYXJhbWV0ZXJzLgor
Ly8gRGVmaW5lIHRoZSBzbWFsbGVzdCBzaXplIGEgcGFnZSB0YWtlIHdpdGggYSByZWd1bGFyLgog
QHByb3BlcnR5IChub25hdG9taWMsIHNldHRlcj1fc2V0TWluaW11bUxheW91dFNpemVPdmVycmlk
ZTopIENHU2l6ZSBfbWluaW11bUxheW91dFNpemVPdmVycmlkZTsKKy8vIERlZmluZSB0aGUgc21h
bGxlc3Qgc2l6ZSBhIHBhZ2UgdGFrZSB3aXRoIHRoZSBtaW5tYWwtdWkgdmlld3BvcnQuCiBAcHJv
cGVydHkgKG5vbmF0b21pYywgc2V0dGVyPV9zZXRNaW5pbXVtTGF5b3V0U2l6ZU92ZXJyaWRlRm9y
TWluaW1hbFVJOikgQ0dTaXplIF9taW5pbXVtTGF5b3V0U2l6ZU92ZXJyaWRlRm9yTWluaW1hbFVJ
OworLy8gRGVmaW5lIHRoZSBsYXJnZXN0IHNpemUgdGhlIHVub2JzY3VyZWQgYXJlYSBjYW4gZ2V0
IGZvciB0aGUgY3VycmVudCB2aWV3IGJvdW5kcy4gVGhpcyB2YWx1ZSBpcyB1c2VkIHRvIGRlZmlu
ZSB2aWV3cG9ydCB1bml0cy4KK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCBzZXR0ZXI9X3NldE1heGlt
dW1Vbm9ic2N1cmVkU2l6ZU92ZXJyaWRlOikgQ0dTaXplIF9tYXhpbXVtVW5vYnNjdXJlZFNpemVP
dmVycmlkZTsKKworQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5KSBCT09MIF91c2VzTWlu
aW1hbFVJOwogCiAvLyBEZWZpbmUgdGhlIGluc2V0IG9mIHRoZSBzY3JvbGx2aWV3IHVudXNhYmxl
IGJ5IHRoZSB3ZWIgcGFnZS4KIEBwcm9wZXJ0eSAobm9uYXRvbWljLCBzZXR0ZXI9X3NldE9ic2N1
cmVkSW5zZXRzOikgVUlFZGdlSW5zZXRzIF9vYnNjdXJlZEluc2V0czsKQEAgLTEyMyw2ICsxMzAs
OCBAQCB0eXBlZGVmIE5TX09QVElPTlMoTlNVSW50ZWdlciwgX1dLRmluZE9wdGlvbnMpIHsKIAog
LSAodm9pZClfc25hcHNob3RSZWN0OihDR1JlY3QpcmVjdEluVmlld0Nvb3JkaW5hdGVzIGludG9J
bWFnZU9mV2lkdGg6KENHRmxvYXQpaW1hZ2VXaWR0aCBjb21wbGV0aW9uSGFuZGxlcjoodm9pZChe
KShDR0ltYWdlUmVmKSljb21wbGV0aW9uSGFuZGxlcjsKIAorLSAodm9pZClfb3ZlcnJpZGVMYXlv
dXRQYXJhbWV0ZXJzV2l0aE1pbmltdW1MYXlvdXRTaXplOihDR1NpemUpbWluaW11bUxheW91dFNp
emUgbWluaW11bUxheW91dFNpemVGb3JNaW5pbWFsVUk6KENHU2l6ZSltaW5pbXVtTGF5b3V0U2l6
ZUZvck1pbmltYWxVSSBtYXhpbXVtVW5vYnNjdXJlZFNpemVPdmVycmlkZTooQ0dTaXplKW1heGlt
dW1Vbm9ic2N1cmVkU2l6ZU92ZXJyaWRlOworCiAtIChVSVZpZXcgKilfdmlld0ZvckZpbmRVSTsK
IAogLy8gRklYTUU6IFJlbW92ZSB0aGlzIG9uY2Ugbm9ib2R5IHVzZXMgaXQuCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGFnZUNsaWVudC5oIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL1BhZ2VDbGllbnQuaAppbmRleCA5OGQwMTZmYjMzZDM2OTIwN2UwOTZkNDZkZTE2
YjFjNzdlOGY2ZWRjLi42NWYyN2I0ODIyM2Q0YmNhOGQyOTkwY2EwMWFjYWRjNDgyMWZmZmVmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGFnZUNsaWVudC5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QYWdlQ2xpZW50LmgKQEAgLTI1Nyw2ICsyNTcsNyBAQCBw
dWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHNob3dQbGF5YmFja1RhcmdldFBpY2tlcihib29sIGhh
c1ZpZGVvLCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBlbGVtZW50UmVjdCkgPSAwOwogICAgIHZp
cnR1YWwgdm9pZCB6b29tVG9SZWN0KFdlYkNvcmU6OkZsb2F0UmVjdCwgZG91YmxlIG1pbmltdW1T
Y2FsZSwgZG91YmxlIG1heGltdW1TY2FsZSkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkaWRDaGFu
Z2VWaWV3cG9ydE1ldGFUYWdXaWR0aChmbG9hdCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBzZXRV
c2VzTWluaW1hbFVJKGJvb2wpID0gMDsKICAgICB2aXJ0dWFsIGRvdWJsZSBtaW5pbXVtWm9vbVNj
YWxlKCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgV2ViQ29yZTo6RmxvYXRTaXplIGNvbnRlbnRz
U2l6ZSgpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGlkRmluaXNoRHJhd2luZ1BhZ2Vz
VG9QREYoY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJikgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL1dlYlBhZ2VQcm94eS5oCmluZGV4IGZiMjQ4MDQzNjI3YmU1Y2M3NmZkNzY1NzNmMWM3NGJj
MTFlODc4MGEuLjUyOTg1MTljMTVmODMwZWM1OWVjNmYwYmZkYjY5YjFiNGMyZTA0NDQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKQEAgLTU5NSwxMCArNTk1LDExIEBA
IHB1YmxpYzoKICAgICBlbnVtIGNsYXNzIFVub2JzY3VyZWRSZWN0Q29uc3RyYWludCB7IENvbnN0
cmFpbmVkVG9Eb2N1bWVudFJlY3QsIFVuY29uc3RyYWluZWQgfTsKICAgICBXZWJDb3JlOjpGbG9h
dFJlY3QgY29tcHV0ZUN1c3RvbUZpeGVkUG9zaXRpb25SZWN0KGNvbnN0IFdlYkNvcmU6OkZsb2F0
UmVjdCYgdW5vYnNjdXJlZENvbnRlbnRSZWN0LCBkb3VibGUgZGlzcGxheWVkQ29udGVudFNjYWxl
LCBVbm9ic2N1cmVkUmVjdENvbnN0cmFpbnQgPSBVbm9ic2N1cmVkUmVjdENvbnN0cmFpbnQ6OlVu
Y29uc3RyYWluZWQpIGNvbnN0OwogCi0gICAgdm9pZCBkeW5hbWljVmlld3BvcnRTaXplVXBkYXRl
KGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYgbWluaW11bUxheW91dFNpemUsIGNvbnN0IFdlYkNv
cmU6OkZsb2F0UmVjdCYgdGFyZ2V0RXhwb3NlZENvbnRlbnRSZWN0LCBjb25zdCBXZWJDb3JlOjpG
bG9hdFJlY3QmIHRhcmdldFVub2JzY3VyZWRSZWN0LCBjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3Qm
IHRhcmdldFVub2JzY3VyZWRSZWN0SW5TY3JvbGxWaWV3Q29vcmRpbmF0ZXMsIGRvdWJsZSB0YXJn
ZXRTY2FsZSk7CisgICAgdm9pZCBkeW5hbWljVmlld3BvcnRTaXplVXBkYXRlKGNvbnN0IFdlYkNv
cmU6OkZsb2F0U2l6ZSYgbWluaW11bUxheW91dFNpemUsIGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6
ZSYgbWluaW11bUxheW91dFNpemVGb3JNaW5pbWFsVUksIGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6
ZSYgbWF4aW11bVVub2JzY3VyZWRTaXplLCBjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmIHRhcmdl
dEV4cG9zZWRDb250ZW50UmVjdCwgY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiB0YXJnZXRVbm9i
c2N1cmVkUmVjdCwgY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiB0YXJnZXRVbm9ic2N1cmVkUmVj
dEluU2Nyb2xsVmlld0Nvb3JkaW5hdGVzLCBkb3VibGUgdGFyZ2V0U2NhbGUpOwogICAgIAogICAg
IHZvaWQgc2V0Vmlld3BvcnRDb25maWd1cmF0aW9uTWluaW11bUxheW91dFNpemUoY29uc3QgV2Vi
Q29yZTo6RmxvYXRTaXplJik7Ci0gICAgdm9pZCBzZXRNaW5pbXVtTGF5b3V0U2l6ZUZvck1pbmlt
YWxVSShjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUmKTsKKyAgICB2b2lkIHNldFZpZXdwb3J0Q29u
ZmlndXJhdGlvbk1pbmltdW1MYXlvdXRTaXplRm9yTWluaW1hbFVJKGNvbnN0IFdlYkNvcmU6OkZs
b2F0U2l6ZSYpOworICAgIHZvaWQgc2V0TWF4aW11bVVub2JzY3VyZWRTaXplKGNvbnN0IFdlYkNv
cmU6OkZsb2F0U2l6ZSYpOwogICAgIHZvaWQgZGlkQ29tbWl0TGF5ZXJUcmVlKGNvbnN0IFdlYktp
dDo6UmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb24mKTsKIAogICAgIHZvaWQgc2VsZWN0V2l0aEdl
c3R1cmUoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQsIFdlYkNvcmU6OlRleHRHcmFudWxhcml0eSwg
dWludDMyX3QgZ2VzdHVyZVR5cGUsIHVpbnQzMl90IGdlc3R1cmVTdGF0ZSwgUGFzc1JlZlB0cjxH
ZXN0dXJlQ2FsbGJhY2s+KTsKQEAgLTYzNCw2ICs2MzUsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBk
aWROb3RIYW5kbGVUYXBBc0NsaWNrKGNvbnN0IFdlYkNvcmU6OkludFBvaW50Jik7CiAgICAgdm9p
ZCB2aWV3cG9ydE1ldGFUYWdXaWR0aERpZENoYW5nZShmbG9hdCB3aWR0aCk7CiAgICAgdm9pZCBk
aWRGaW5pc2hEcmF3aW5nUGFnZXNUb1BERihjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmKTsKKyAg
ICB2b2lkIHNldFVzZXNNaW5pbWFsVUkoYm9vbCk7CiAjZW5kaWYKIAogICAgIGNvbnN0IEVkaXRv
clN0YXRlJiBlZGl0b3JTdGF0ZSgpIGNvbnN0IHsgcmV0dXJuIG1fZWRpdG9yU3RhdGU7IH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMu
aW4gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluCmlu
ZGV4IGU3YmY1YTRhNDgxZjRjMTczMmRjMGMwNTMxZDUzZGJhYmNiODZhMzcuLmUzYTQ0M2VkNzVi
ZGI4NWNmYTlmMDgzZDMzNzBhNmVmNGQ3YjFhMTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbgpAQCAtMTcyLDYgKzE3Miw3IEBAIG1l
c3NhZ2VzIC0+IFdlYlBhZ2VQcm94eSB7CiAgICAgQ29tbWl0UG90ZW50aWFsVGFwRmFpbGVkKCkK
ICAgICBEaWROb3RIYW5kbGVUYXBBc0NsaWNrKFdlYkNvcmU6OkludFBvaW50IHBvaW50KQogICAg
IFZpZXdwb3J0TWV0YVRhZ1dpZHRoRGlkQ2hhbmdlKGZsb2F0IHdpZHRoKQorICAgIFNldFVzZXNN
aW5pbWFsVUkoYm9vbCB1c2VzTWluaW1hbFVJKQogICAgIERpZEZpbmlzaERyYXdpbmdQYWdlc1Rv
UERGKElQQzo6RGF0YVJlZmVyZW5jZSBwZGZEYXRhKQogI2VuZGlmCiAjaWYgUExBVEZPUk0oR1RL
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1w
bElPUy5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5o
CmluZGV4IGJhMWU1ZTZhOWRmMGI5YzQ3OTJhZTcwYjIyOWZmODE5NjUyNzhjMzkuLmNhYmY3ZTBj
ZjZmMDlmZWZiNzZkNzE5NzJjY2Q1ZDMzYzliNDQ5ZjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJT1MuaAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLmgKQEAgLTEyMyw2ICsxMjMsNyBAQCBw
cml2YXRlOgogCiAgICAgdmlydHVhbCBib29sIGhhbmRsZVJ1bk9wZW5QYW5lbChXZWJQYWdlUHJv
eHkqLCBXZWJGcmFtZVByb3h5KiwgV2ViT3BlblBhbmVsUGFyYW1ldGVycyosIFdlYk9wZW5QYW5l
bFJlc3VsdExpc3RlbmVyUHJveHkqKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgZGlkQ2hh
bmdlVmlld3BvcnRNZXRhVGFnV2lkdGgoZmxvYXQpIG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9p
ZCBzZXRVc2VzTWluaW1hbFVJKGJvb2wpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgZG91YmxlIG1p
bmltdW1ab29tU2NhbGUoKSBjb25zdCBvdmVycmlkZTsKICAgICB2aXJ0dWFsIFdlYkNvcmU6OkZs
b2F0U2l6ZSBjb250ZW50c1NpemUoKSBjb25zdCBvdmVycmlkZTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5tbSBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJT1MubW0KaW5kZXggMjZkOWRhMDg1
NGEyMmU5OGExYWRiNWVhNmY4YzJiMGMzYmVjMWFmZi4uMjYyZGFlN2Y1ZTZkYTE5Mjg3ZDZiODhl
ZGQ1NWY0NTAzMjFiZGYzZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lv
cy9QYWdlQ2xpZW50SW1wbElPUy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9z
L1BhZ2VDbGllbnRJbXBsSU9TLm1tCkBAIC0xODksNiArMTg5LDExIEBAIHZvaWQgUGFnZUNsaWVu
dEltcGw6OmRpZENoYW5nZVZpZXdwb3J0TWV0YVRhZ1dpZHRoKGZsb2F0IG5ld1dpZHRoKQogICAg
IFttX3dlYlZpZXcgX3NldFZpZXdwb3J0TWV0YVRhZ1dpZHRoOm5ld1dpZHRoXTsKIH0KIAordm9p
ZCBQYWdlQ2xpZW50SW1wbDo6c2V0VXNlc01pbmltYWxVSShib29sIHVzZXNNaW5pbWFsVUkpCit7
CisgICAgW21fd2ViVmlldyBfc2V0VXNlc01pbmltYWxVSTp1c2VzTWluaW1hbFVJXTsKK30KKwog
ZG91YmxlIFBhZ2VDbGllbnRJbXBsOjptaW5pbXVtWm9vbVNjYWxlKCkgY29uc3QKIHsKICAgICBp
ZiAoVUlTY3JvbGxWaWV3ICpzY3JvbGxlciA9IFttX3dlYlZpZXcgc2Nyb2xsVmlld10pCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlPUy5tbSBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9TLm1tCmluZGV4IDMw
ODhlMjkxYzI1ZGY3OTFjYTYxYjM3ZGFkMTA1OWE2Zjc0ODQ1MWQuLmQzNTUxNTExYzE0YzFiNmQw
MGQ1ZWEyMTY1NmNiOTVhZTQzMmI5ZjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9TLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9pb3MvV2ViUGFnZVByb3h5SU9TLm1tCkBAIC0yMzUsOSArMjM1LDkgQEAgV2ViQ29yZTo6Rmxv
YXRSZWN0IFdlYlBhZ2VQcm94eTo6Y29tcHV0ZUN1c3RvbUZpeGVkUG9zaXRpb25SZWN0KGNvbnN0
IEZsb2F0UmVjdCYKICAgICByZXR1cm4gRnJhbWVWaWV3OjpyZWN0Rm9yVmlld3BvcnRDb25zdHJh
aW5lZE9iamVjdHMoZW5jbG9zaW5nTGF5b3V0UmVjdChjb25zdHJhaW5lZFVub2JzY3VyZWRSZWN0
KSwgcm91bmRlZExheW91dFNpemUoY29udGVudHNTaXplKSwgZGlzcGxheWVkQ29udGVudFNjYWxl
LCBmYWxzZSwgU3RpY2tUb1ZpZXdwb3J0Qm91bmRzKTsKIH0KIAotdm9pZCBXZWJQYWdlUHJveHk6
OmR5bmFtaWNWaWV3cG9ydFNpemVVcGRhdGUoY29uc3QgRmxvYXRTaXplJiBtaW5pbXVtTGF5b3V0
U2l6ZSwgY29uc3QgRmxvYXRSZWN0JiB0YXJnZXRFeHBvc2VkQ29udGVudFJlY3QsIGNvbnN0IEZs
b2F0UmVjdCYgdGFyZ2V0VW5vYnNjdXJlZFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgdGFyZ2V0VW5v
YnNjdXJlZFJlY3RJblNjcm9sbFZpZXdDb29yZGluYXRlcywgIGRvdWJsZSB0YXJnZXRTY2FsZSkK
K3ZvaWQgV2ViUGFnZVByb3h5OjpkeW5hbWljVmlld3BvcnRTaXplVXBkYXRlKGNvbnN0IEZsb2F0
U2l6ZSYgbWluaW11bUxheW91dFNpemUsIGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYgbWluaW11
bUxheW91dFNpemVGb3JNaW5pbWFsVUksIGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYgbWF4aW11
bVVub2JzY3VyZWRTaXplLCBjb25zdCBGbG9hdFJlY3QmIHRhcmdldEV4cG9zZWRDb250ZW50UmVj
dCwgY29uc3QgRmxvYXRSZWN0JiB0YXJnZXRVbm9ic2N1cmVkUmVjdCwgY29uc3QgRmxvYXRSZWN0
JiB0YXJnZXRVbm9ic2N1cmVkUmVjdEluU2Nyb2xsVmlld0Nvb3JkaW5hdGVzLCAgZG91YmxlIHRh
cmdldFNjYWxlKQogewotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6RHlu
YW1pY1ZpZXdwb3J0U2l6ZVVwZGF0ZShtaW5pbXVtTGF5b3V0U2l6ZSwgdGFyZ2V0RXhwb3NlZENv
bnRlbnRSZWN0LCB0YXJnZXRVbm9ic2N1cmVkUmVjdCwgdGFyZ2V0VW5vYnNjdXJlZFJlY3RJblNj
cm9sbFZpZXdDb29yZGluYXRlcywgdGFyZ2V0U2NhbGUpLCBtX3BhZ2VJRCk7CisgICAgbV9wcm9j
ZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpEeW5hbWljVmlld3BvcnRTaXplVXBkYXRlKG1p
bmltdW1MYXlvdXRTaXplLCBtaW5pbXVtTGF5b3V0U2l6ZUZvck1pbmltYWxVSSwgbWF4aW11bVVu
b2JzY3VyZWRTaXplLCB0YXJnZXRFeHBvc2VkQ29udGVudFJlY3QsIHRhcmdldFVub2JzY3VyZWRS
ZWN0LCB0YXJnZXRVbm9ic2N1cmVkUmVjdEluU2Nyb2xsVmlld0Nvb3JkaW5hdGVzLCB0YXJnZXRT
Y2FsZSksIG1fcGFnZUlEKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OnNldFZpZXdwb3J0Q29u
ZmlndXJhdGlvbk1pbmltdW1MYXlvdXRTaXplKGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYgc2l6
ZSkKQEAgLTI0NSw5ICsyNDUsMTQgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnNldFZpZXdwb3J0Q29u
ZmlndXJhdGlvbk1pbmltdW1MYXlvdXRTaXplKGNvbnN0IFdlYkNvcmU6OkZsb2EKICAgICBtX3By
b2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNldFZpZXdwb3J0Q29uZmlndXJhdGlvbk1p
bmltdW1MYXlvdXRTaXplKHNpemUpLCBtX3BhZ2VJRCk7CiB9CiAKLXZvaWQgV2ViUGFnZVByb3h5
OjpzZXRNaW5pbXVtTGF5b3V0U2l6ZUZvck1pbmltYWxVSShjb25zdCBXZWJDb3JlOjpGbG9hdFNp
emUmIHNpemUpCit2b2lkIFdlYlBhZ2VQcm94eTo6c2V0Vmlld3BvcnRDb25maWd1cmF0aW9uTWlu
aW11bUxheW91dFNpemVGb3JNaW5pbWFsVUkoY29uc3QgV2ViQ29yZTo6RmxvYXRTaXplJiBzaXpl
KQogewotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0TWluaW11bUxh
eW91dFNpemVGb3JNaW5pbWFsVUkoc2l6ZSksIG1fcGFnZUlEKTsKKyAgICBtX3Byb2Nlc3MtPnNl
bmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNldFZpZXdwb3J0Q29uZmlndXJhdGlvbk1pbmltdW1MYXlv
dXRTaXplRm9yTWluaW1hbFVJKHNpemUpLCBtX3BhZ2VJRCk7Cit9CisKK3ZvaWQgV2ViUGFnZVBy
b3h5OjpzZXRNYXhpbXVtVW5vYnNjdXJlZFNpemUoY29uc3QgV2ViQ29yZTo6RmxvYXRTaXplJiBz
aXplKQoreworICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0TWF4aW11
bVVub2JzY3VyZWRTaXplKHNpemUpLCBtX3BhZ2VJRCk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5
OjpkaWRDb21taXRMYXllclRyZWUoY29uc3QgV2ViS2l0OjpSZW1vdGVMYXllclRyZWVUcmFuc2Fj
dGlvbiYgbGF5ZXJUcmVlVHJhbnNhY3Rpb24pCkBAIC02NDksNiArNjU0LDExIEBAIHZvaWQgV2Vi
UGFnZVByb3h5Ojp2aWV3cG9ydE1ldGFUYWdXaWR0aERpZENoYW5nZShmbG9hdCB3aWR0aCkKICAg
ICBtX3BhZ2VDbGllbnQuZGlkQ2hhbmdlVmlld3BvcnRNZXRhVGFnV2lkdGgod2lkdGgpOwogfQog
Cit2b2lkIFdlYlBhZ2VQcm94eTo6c2V0VXNlc01pbmltYWxVSShib29sIHVzZXNNaW5pbWFsVUkp
Cit7CisgICAgbV9wYWdlQ2xpZW50LnNldFVzZXNNaW5pbWFsVUkodXNlc01pbmltYWxVSSk7Cit9
CisKIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRGaW5pc2hEcmF3aW5nUGFnZXNUb1BERihjb25zdCBJ
UEM6OkRhdGFSZWZlcmVuY2UmIHBkZkRhdGEpCiB7CiAgICAgbV9wYWdlQ2xpZW50LmRpZEZpbmlz
aERyYXdpbmdQYWdlc1RvUERGKHBkZkRhdGEpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50
LmNwcAppbmRleCAxYmYxMzNhYzI4Y2ZhNDI4MTk5NTUyZjQwMDI2ODlmZWRmN2RhZWRiLi41NmUz
YWYyZjZhOGI1NzIwYWFhYjJkNzhlNmE0Nzg4NzIzMmNlZWI1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1l
TG9hZGVyQ2xpZW50LmNwcApAQCAtNDk5LDYgKzQ5OSw4IEBAIHZvaWQgV2ViRnJhbWVMb2FkZXJD
bGllbnQ6OmRpc3BhdGNoRGlkRmluaXNoRG9jdW1lbnRMb2FkKCkKICAgICBpZiAoIXdlYlBhZ2Up
CiAgICAgICAgIHJldHVybjsKIAorICAgIHdlYlBhZ2UtPmRpZEZpbmlzaERvY3VtZW50TG9hZCht
X2ZyYW1lKTsKKwogICAgIFJlZlB0cjxBUEk6Ok9iamVjdD4gdXNlckRhdGE7CiAKICAgICAvLyBO
b3RpZnkgdGhlIGJ1bmRsZSBjbGllbnQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViUGFnZS5jcHAKaW5kZXggZWM4YTk2MjNjYjY1Mjg2NTVjYzgyZWY0MGU1MWViYmFl
M2I2NWExZS4uZTUxZTdiMGIwNTM4NWZiM2YyYTY1NmI3NWU5NjMzOTQzZWMyZjA2ZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcApAQCAtNDMxNiw2
ICs0MzE2LDcgQEAgdm9pZCBXZWJQYWdlOjpkaWRDb21taXRMb2FkKFdlYkZyYW1lKiBmcmFtZSkK
ICAgICBXZWJQcm9jZXNzOjpzaGFyZWQoKS5ldmVudERpc3BhdGNoZXIoKS5jbGVhclF1ZXVlZFRv
dWNoRXZlbnRzRm9yUGFnZSgqdGhpcyk7CiAKICAgICByZXNldFZpZXdwb3J0RGVmYXVsdENvbmZp
Z3VyYXRpb24oZnJhbWUpOworICAgIG1fdmlld3BvcnRDb25maWd1cmF0aW9uLnJlc2V0TWluaW1h
bFVJKCk7CiAgICAgbV92aWV3cG9ydENvbmZpZ3VyYXRpb24uc2V0Vmlld3BvcnRBcmd1bWVudHMo
Vmlld3BvcnRBcmd1bWVudHMoKSk7CiAgICAgbV92aWV3cG9ydENvbmZpZ3VyYXRpb24uc2V0Q29u
dGVudHNTaXplKEludFNpemUoKSk7CiAgICAgdmlld3BvcnRDb25maWd1cmF0aW9uQ2hhbmdlZCgp
OwpAQCAtNDMzMCw2ICs0MzMxLDE2IEBAIHZvaWQgV2ViUGFnZTo6ZGlkQ29tbWl0TG9hZChXZWJG
cmFtZSogZnJhbWUpCiAgICAgdXBkYXRlTWFpbkZyYW1lU2Nyb2xsT2Zmc2V0UGlubmluZygpOwog
fQogCit2b2lkIFdlYlBhZ2U6OmRpZEZpbmlzaERvY3VtZW50TG9hZChXZWJGcmFtZSogZnJhbWUp
Cit7CisjaWYgUExBVEZPUk0oSU9TKQorICAgIGlmICghZnJhbWUtPmlzTWFpbkZyYW1lKCkpCisg
ICAgICAgIHJldHVybjsKKworICAgIG1fdmlld3BvcnRDb25maWd1cmF0aW9uLmRpZEZpbmlzaERv
Y3VtZW50TG9hZCgpOworI2VuZGlmIC8vIFBMQVRGT1JNKElPUykKK30KKwogdm9pZCBXZWJQYWdl
OjpkaWRGaW5pc2hMb2FkKFdlYkZyYW1lKiBmcmFtZSkKIHsKICNpZiBFTkFCTEUoUFJJTUFSWV9T
TkFQU0hPVFRFRF9QTFVHSU5fSEVVUklTVElDKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJQYWdlLmgKaW5kZXggMjlmNmFmZTY3NTQzZDZkYzA4OGQwYjc2MzQ2MTZlMjk2
MGZjNmNhNS4uNzA3ZTdjMmViMjczMTQ2OTc3Y2IwYjM0NWZjMDc3OGU0Nzc4YzI4NSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCkBAIC0yNDksNiArMjQ5
LDcgQEAgcHVibGljOgogICAgIHZvaWQgZGlkU3RhcnRQYWdlVHJhbnNpdGlvbigpOwogICAgIHZv
aWQgZGlkQ29tcGxldGVQYWdlVHJhbnNpdGlvbigpOwogICAgIHZvaWQgZGlkQ29tbWl0TG9hZChX
ZWJGcmFtZSopOworICAgIHZvaWQgZGlkRmluaXNoRG9jdW1lbnRMb2FkKFdlYkZyYW1lKik7CiAg
ICAgdm9pZCBkaWRGaW5pc2hMb2FkKFdlYkZyYW1lKik7CiAgICAgdm9pZCBzaG93KCk7CiAgICAg
U3RyaW5nIHVzZXJBZ2VudCgpIGNvbnN0IHsgcmV0dXJuIG1fdXNlckFnZW50OyB9CkBAIC03MTIs
OCArNzEzLDkgQEAgcHVibGljOgogCiAjaWYgUExBVEZPUk0oSU9TKQogICAgIHZvaWQgc2V0Vmll
d3BvcnRDb25maWd1cmF0aW9uTWluaW11bUxheW91dFNpemUoY29uc3QgV2ViQ29yZTo6RmxvYXRT
aXplJik7Ci0gICAgdm9pZCBzZXRNaW5pbXVtTGF5b3V0U2l6ZUZvck1pbmltYWxVSShjb25zdCBX
ZWJDb3JlOjpGbG9hdFNpemUmKTsKLSAgICB2b2lkIGR5bmFtaWNWaWV3cG9ydFNpemVVcGRhdGUo
Y29uc3QgV2ViQ29yZTo6RmxvYXRTaXplJiBtaW5pbXVtTGF5b3V0U2l6ZSwgY29uc3QgV2ViQ29y
ZTo6RmxvYXRSZWN0JiB0YXJnZXRFeHBvc2VkQ29udGVudFJlY3QsIGNvbnN0IFdlYkNvcmU6OkZs
b2F0UmVjdCYgdGFyZ2V0VW5vYnNjdXJlZFJlY3QsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYg
dGFyZ2V0VW5vYnNjdXJlZFJlY3RJblNjcm9sbFZpZXdDb29yZGluYXRlcywgZG91YmxlIHNjYWxl
KTsKKyAgICB2b2lkIHNldFZpZXdwb3J0Q29uZmlndXJhdGlvbk1pbmltdW1MYXlvdXRTaXplRm9y
TWluaW1hbFVJKGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYpOworICAgIHZvaWQgc2V0TWF4aW11
bVVub2JzY3VyZWRTaXplKGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYpOworICAgIHZvaWQgZHlu
YW1pY1ZpZXdwb3J0U2l6ZVVwZGF0ZShjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUmIG1pbmltdW1M
YXlvdXRTaXplLCBjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUmIG1pbmltdW1MYXlvdXRTaXplRm9y
TWluaW1hbFVJLCBjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUmIG1heGltdW1Vbm9ic2N1cmVkU2l6
ZSwgY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiB0YXJnZXRFeHBvc2VkQ29udGVudFJlY3QsIGNv
bnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYgdGFyZ2V0VW5vYnNjdXJlZFJlY3QsIGNvbnN0IFdlYkNv
cmU6OkZsb2F0UmVjdCYgdGFyZ2V0VW5vYnNjdXJlZFJlY3RJblNjcm9sbFZpZXdDb29yZGluYXRl
cywgZG91YmxlIHNjYWxlKTsKICAgICB2b2lkIHVwZGF0ZVZpc2libGVDb250ZW50UmVjdHMoY29u
c3QgVmlzaWJsZUNvbnRlbnRSZWN0VXBkYXRlSW5mbyYpOwogICAgIGJvb2wgc2NhbGVXYXNTZXRC
eVVJUHJvY2VzcygpIGNvbnN0IHsgcmV0dXJuIG1fc2NhbGVXYXNTZXRCeVVJUHJvY2VzczsgfQog
ICAgIHZvaWQgd2lsbFN0YXJ0VXNlclRyaWdnZXJlZFpvb21pbmcoKTsKQEAgLTgyMSw2ICs4MjMs
NyBAQCBwcml2YXRlOgogI2lmIFBMQVRGT1JNKElPUykKICAgICB2b2lkIHJlc2V0Vmlld3BvcnRE
ZWZhdWx0Q29uZmlndXJhdGlvbihXZWJGcmFtZSogbWFpbkZyYW1lKTsKICAgICB2b2lkIHZpZXdw
b3J0Q29uZmlndXJhdGlvbkNoYW5nZWQoKTsKKyAgICB2b2lkIHVwZGF0ZVZpZXdwb3J0U2l6ZUZv
ckNTU1ZpZXdwb3J0VW5pdHMoKTsKIAogICAgIHN0YXRpYyB2b2lkIGNvbnZlcnRTZWxlY3Rpb25S
ZWN0c1RvUm9vdFZpZXcoV2ViQ29yZTo6RnJhbWVWaWV3KiwgVmVjdG9yPFdlYkNvcmU6OlNlbGVj
dGlvblJlY3Q+Jik7CiAgICAgUGFzc1JlZlB0cjxXZWJDb3JlOjpSYW5nZT4gcmFuZ2VGb3JXZWJT
ZWxlY3Rpb25BdFBvc2l0aW9uKGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiwgY29uc3QgV2ViQ29y
ZTo6VmlzaWJsZVBvc2l0aW9uJiwgU2VsZWN0aW9uRmxhZ3MmKTsKQEAgLTEyMDIsNyArMTIwNSw3
IEBAIHByaXZhdGU6CiAgICAgV2ViQ29yZTo6RmxvYXRTaXplIG1fYXZhaWxhYmxlU2NyZWVuU2l6
ZTsKICAgICBSZWZQdHI8V2ViQ29yZTo6UmFuZ2U+IG1fY3VycmVudEJsb2NrU2VsZWN0aW9uOwog
ICAgIFdlYkNvcmU6OkludFNpemUgbV9ibG9ja1NlbGVjdGlvbkRlc2lyZWRTaXplOwotICAgIFdl
YkNvcmU6OkZsb2F0U2l6ZSBtX21pbmltdW1MYXlvdXRTaXplRm9yTWluaW1hbFVJOworICAgIFdl
YkNvcmU6OkZsb2F0U2l6ZSBtX21heGltdW1Vbm9ic2N1cmVkU2l6ZTsKICAgICBib29sIG1faW5E
eW5hbWljU2l6ZVVwZGF0ZTsKICAgICBIYXNoTWFwPHN0ZDo6cGFpcjxXZWJDb3JlOjpJbnRTaXpl
LCBkb3VibGU+LCBXZWJDb3JlOjpJbnRQb2ludD4gbV9keW5hbWljU2l6ZVVwZGF0ZUhpc3Rvcnk7
CiAgICAgUmVmUHRyPFdlYkNvcmU6Ok5vZGU+IG1fcGVuZGluZ1N5bnRoZXRpY0NsaWNrTm9kZTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1l
c3NhZ2VzLmluIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVz
c2FnZXMuaW4KaW5kZXggMWMxY2NiMDg4MjZmMTQwMmQzYWFmYzFkNDg0MTcwZWQyOGUzZDI3YS4u
YTFjY2QxYmVkMmExMDAyNTAyYmE4MjlmY2Q1OTZhYmU3NGYzY2Q0ZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4KKysrIGIv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4KQEAg
LTQ0LDggKzQ0LDkgQEAgbWVzc2FnZXMgLT4gV2ViUGFnZSBMZWdhY3lSZWNlaXZlciB7CiAgICAg
V2hlZWxFdmVudFN5bmNGb3JUZXN0aW5nKFdlYktpdDo6V2ViV2hlZWxFdmVudCBldmVudCkgLT4g
KGJvb2wgaGFuZGxlZCkKICNpZiBQTEFURk9STShJT1MpCiAgICAgU2V0Vmlld3BvcnRDb25maWd1
cmF0aW9uTWluaW11bUxheW91dFNpemUoV2ViQ29yZTo6RmxvYXRTaXplIHNpemUpCi0gICAgU2V0
TWluaW11bUxheW91dFNpemVGb3JNaW5pbWFsVUkoV2ViQ29yZTo6RmxvYXRTaXplIHNpemUpCi0g
ICAgRHluYW1pY1ZpZXdwb3J0U2l6ZVVwZGF0ZShXZWJDb3JlOjpGbG9hdFNpemUgbWluaW11bUxh
eW91dFNpemUsIFdlYkNvcmU6OkZsb2F0UmVjdCB0YXJnZXRFeHBvc2VkQ29udGVudFJlY3QsIFdl
YkNvcmU6OkZsb2F0UmVjdCB0YXJnZXRVbm9ic2N1cmVkUmVjdCwgV2ViQ29yZTo6RmxvYXRSZWN0
IHRhcmdldFVub2JzY3VyZWRSZWN0SW5TY3JvbGxWaWV3Q29vcmRpbmF0ZXMsIGRvdWJsZSBzY2Fs
ZSkKKyAgICBTZXRWaWV3cG9ydENvbmZpZ3VyYXRpb25NaW5pbXVtTGF5b3V0U2l6ZUZvck1pbmlt
YWxVSShXZWJDb3JlOjpGbG9hdFNpemUgc2l6ZSkKKyAgICBTZXRNYXhpbXVtVW5vYnNjdXJlZFNp
emUoV2ViQ29yZTo6RmxvYXRTaXplIHNpemUpCisgICAgRHluYW1pY1ZpZXdwb3J0U2l6ZVVwZGF0
ZShXZWJDb3JlOjpGbG9hdFNpemUgbWluaW11bUxheW91dFNpemUsIFdlYkNvcmU6OkZsb2F0U2l6
ZSBtaW5pbXVtTGF5b3V0U2l6ZUZvck1pbmltYWxVSSwgIFdlYkNvcmU6OkZsb2F0U2l6ZSBtYXhp
bXVtVW5vYnNjdXJlZFNpemUsIFdlYkNvcmU6OkZsb2F0UmVjdCB0YXJnZXRFeHBvc2VkQ29udGVu
dFJlY3QsIFdlYkNvcmU6OkZsb2F0UmVjdCB0YXJnZXRVbm9ic2N1cmVkUmVjdCwgV2ViQ29yZTo6
RmxvYXRSZWN0IHRhcmdldFVub2JzY3VyZWRSZWN0SW5TY3JvbGxWaWV3Q29vcmRpbmF0ZXMsIGRv
dWJsZSBzY2FsZSkKIAogICAgIEhhbmRsZVRhcChXZWJDb3JlOjpJbnRQb2ludCBwb2ludCkKICAg
ICBQb3RlbnRpYWxUYXBBdFBvc2l0aW9uKHVpbnQ2NF90IHJlcXVlc3RJRCwgV2ViQ29yZTo6Rmxv
YXRQb2ludCBwb2ludCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
UGFnZS9pb3MvV2ViUGFnZUlPUy5tbSBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFn
ZS9pb3MvV2ViUGFnZUlPUy5tbQppbmRleCA3ODJhMTM4ZjcyYzU2Y2M0YjdlNzYzMGY2MmIwZTMw
YzcyNjkyNzEwLi5jZDA3NGQwYTNjZmQwZDY4ZjRlMjE4YTE2MWQyZGQzNGM0MDU5ZmY3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1Mu
bW0KKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9T
Lm1tCkBAIC0xMjcsMTAgKzEyNywxNCBAQCBGbG9hdFNpemUgV2ViUGFnZTo6YXZhaWxhYmxlU2Ny
ZWVuU2l6ZSgpIGNvbnN0CiB2b2lkIFdlYlBhZ2U6OnZpZXdwb3J0UHJvcGVydGllc0RpZENoYW5n
ZShjb25zdCBWaWV3cG9ydEFyZ3VtZW50cyYgdmlld3BvcnRBcmd1bWVudHMpCiB7CiAgICAgZmxv
YXQgb2xkV2lkdGggPSBtX3ZpZXdwb3J0Q29uZmlndXJhdGlvbi52aWV3cG9ydEFyZ3VtZW50cygp
LndpZHRoOworICAgIGJvb2wgd2FzVXNpbmdNaW5pbWFsVUkgPSBtX3ZpZXdwb3J0Q29uZmlndXJh
dGlvbi51c2VzTWluaW1hbFVJKCk7CiAKICAgICBtX3ZpZXdwb3J0Q29uZmlndXJhdGlvbi5zZXRW
aWV3cG9ydEFyZ3VtZW50cyh2aWV3cG9ydEFyZ3VtZW50cyk7CiAgICAgdmlld3BvcnRDb25maWd1
cmF0aW9uQ2hhbmdlZCgpOwogCisgICAgaWYgKHdhc1VzaW5nTWluaW1hbFVJICE9IG1fdmlld3Bv
cnRDb25maWd1cmF0aW9uLnVzZXNNaW5pbWFsVUkoKSkKKyAgICAgICAgc2VuZChNZXNzYWdlczo6
V2ViUGFnZVByb3h5OjpTZXRVc2VzTWluaW1hbFVJKG1fdmlld3BvcnRDb25maWd1cmF0aW9uLnVz
ZXNNaW5pbWFsVUkoKSkpOworCiAgICAgaWYgKG9sZFdpZHRoICE9IHZpZXdwb3J0QXJndW1lbnRz
LndpZHRoKQogICAgICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlZpZXdwb3J0TWV0
YVRhZ1dpZHRoRGlkQ2hhbmdlKHZpZXdwb3J0QXJndW1lbnRzLndpZHRoKSk7CiB9CkBAIC0xOTA1
LDEzICsxOTA5LDE5IEBAIHZvaWQgV2ViUGFnZTo6c2V0Vmlld3BvcnRDb25maWd1cmF0aW9uTWlu
aW11bUxheW91dFNpemUoY29uc3QgRmxvYXRTaXplJiBzaXplKQogICAgIHZpZXdwb3J0Q29uZmln
dXJhdGlvbkNoYW5nZWQoKTsKIH0KIAotdm9pZCBXZWJQYWdlOjpzZXRNaW5pbXVtTGF5b3V0U2l6
ZUZvck1pbmltYWxVSShjb25zdCBGbG9hdFNpemUmIHNpemUpCit2b2lkIFdlYlBhZ2U6OnNldFZp
ZXdwb3J0Q29uZmlndXJhdGlvbk1pbmltdW1MYXlvdXRTaXplRm9yTWluaW1hbFVJKGNvbnN0IEZs
b2F0U2l6ZSYgc2l6ZSkKIHsKLSAgICByZXNldFRleHRBdXRvc2l6aW5nQmVmb3JlTGF5b3V0SWZO
ZWVkZWQobV9taW5pbXVtTGF5b3V0U2l6ZUZvck1pbmltYWxVSSwgc2l6ZSk7Ci0gICAgbV9taW5p
bXVtTGF5b3V0U2l6ZUZvck1pbmltYWxVSSA9IHNpemU7CisgICAgcmVzZXRUZXh0QXV0b3Npemlu
Z0JlZm9yZUxheW91dElmTmVlZGVkKG1fdmlld3BvcnRDb25maWd1cmF0aW9uLm1pbmltdW1MYXlv
dXRTaXplRm9yTWluaW1hbFVJKCksIHNpemUpOworICAgIG1fdmlld3BvcnRDb25maWd1cmF0aW9u
LnNldE1pbmltdW1MYXlvdXRTaXplRm9yTWluaW1hbFVJKHNpemUpOwogICAgIHZpZXdwb3J0Q29u
ZmlndXJhdGlvbkNoYW5nZWQoKTsKIH0KIAordm9pZCBXZWJQYWdlOjpzZXRNYXhpbXVtVW5vYnNj
dXJlZFNpemUoY29uc3QgRmxvYXRTaXplJiBtYXhpbXVtVW5vYnNjdXJlZFNpemUpCit7CisgICAg
bV9tYXhpbXVtVW5vYnNjdXJlZFNpemUgPSBtYXhpbXVtVW5vYnNjdXJlZFNpemU7CisgICAgdXBk
YXRlVmlld3BvcnRTaXplRm9yQ1NTVmlld3BvcnRVbml0cygpOworfQorCiBzdGF0aWMgaW5saW5l
IGJvb2wgd2l0aGluRXBzaWxvbihmbG9hdCBhLCBmbG9hdCBiKQogewogICAgIHJldHVybiBmYWJz
KGEgLSBiKSA8IHN0ZDo6bnVtZXJpY19saW1pdHM8ZmxvYXQ+OjplcHNpbG9uKCk7CkBAIC0xOTMw
LDcgKzE5NDAsNyBAQCB2b2lkIFdlYlBhZ2U6OnJlc2V0VGV4dEF1dG9zaXppbmdCZWZvcmVMYXlv
dXRJZk5lZWRlZChjb25zdCBGbG9hdFNpemUmIG9sZFNpemUsCiAgICAgfQogfQogCi12b2lkIFdl
YlBhZ2U6OmR5bmFtaWNWaWV3cG9ydFNpemVVcGRhdGUoY29uc3QgRmxvYXRTaXplJiBtaW5pbXVt
TGF5b3V0U2l6ZSwgY29uc3QgRmxvYXRSZWN0JiB0YXJnZXRFeHBvc2VkQ29udGVudFJlY3QsIGNv
bnN0IEZsb2F0UmVjdCYgdGFyZ2V0VW5vYnNjdXJlZFJlY3QsIGNvbnN0IFdlYkNvcmU6OkZsb2F0
UmVjdCYgdGFyZ2V0VW5vYnNjdXJlZFJlY3RJblNjcm9sbFZpZXdDb29yZGluYXRlcywgZG91Ymxl
IHRhcmdldFNjYWxlKQordm9pZCBXZWJQYWdlOjpkeW5hbWljVmlld3BvcnRTaXplVXBkYXRlKGNv
bnN0IEZsb2F0U2l6ZSYgbWluaW11bUxheW91dFNpemUsIGNvbnN0IEZsb2F0U2l6ZSYgbWluaW11
bUxheW91dFNpemVGb3JNaW5pbWFsVUksIGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYgbWF4aW11
bVVub2JzY3VyZWRTaXplLCBjb25zdCBGbG9hdFJlY3QmIHRhcmdldEV4cG9zZWRDb250ZW50UmVj
dCwgY29uc3QgRmxvYXRSZWN0JiB0YXJnZXRVbm9ic2N1cmVkUmVjdCwgY29uc3QgV2ViQ29yZTo6
RmxvYXRSZWN0JiB0YXJnZXRVbm9ic2N1cmVkUmVjdEluU2Nyb2xsVmlld0Nvb3JkaW5hdGVzLCBk
b3VibGUgdGFyZ2V0U2NhbGUpCiB7CiAgICAgVGVtcG9yYXJ5Q2hhbmdlPGJvb2w+IGR5bmFtaWNT
aXplVXBkYXRlR3VhcmQobV9pbkR5bmFtaWNTaXplVXBkYXRlLCB0cnVlKTsKICAgICAvLyBGSVhN
RTogdGhpcyBkb2VzIG5vdCBoYW5kbGUgdGhlIGNhc2VzIHdoZXJlIHRoZSBjb250ZW50IHdvdWxk
IGNoYW5nZSB0aGUgY29udGVudCBzaXplIG9yIHNjcm9sbCBwb3NpdGlvbiBmcm9tIEphdmFTY3Jp
cHQuCkBAIC0xOTY5LDkgKzE5NzksMTQgQEAgdm9pZCBXZWJQYWdlOjpkeW5hbWljVmlld3BvcnRT
aXplVXBkYXRlKGNvbnN0IEZsb2F0U2l6ZSYgbWluaW11bUxheW91dFNpemUsIGNvbnMKICAgICB9
CiAKICAgICByZXNldFRleHRBdXRvc2l6aW5nQmVmb3JlTGF5b3V0SWZOZWVkZWQobV92aWV3cG9y
dENvbmZpZ3VyYXRpb24ubWluaW11bUxheW91dFNpemUoKSwgbWluaW11bUxheW91dFNpemUpOwor
ICAgIHJlc2V0VGV4dEF1dG9zaXppbmdCZWZvcmVMYXlvdXRJZk5lZWRlZChtX3ZpZXdwb3J0Q29u
ZmlndXJhdGlvbi5taW5pbXVtTGF5b3V0U2l6ZUZvck1pbmltYWxVSSgpLCBtaW5pbXVtTGF5b3V0
U2l6ZUZvck1pbmltYWxVSSk7CiAgICAgbV92aWV3cG9ydENvbmZpZ3VyYXRpb24uc2V0TWluaW11
bUxheW91dFNpemUobWluaW11bUxheW91dFNpemUpOworICAgIG1fdmlld3BvcnRDb25maWd1cmF0
aW9uLnNldE1pbmltdW1MYXlvdXRTaXplRm9yTWluaW1hbFVJKG1pbmltdW1MYXlvdXRTaXplRm9y
TWluaW1hbFVJKTsKICAgICBJbnRTaXplIG5ld0xheW91dFNpemUgPSBtX3ZpZXdwb3J0Q29uZmln
dXJhdGlvbi5sYXlvdXRTaXplKCk7CisKICAgICBzZXRGaXhlZExheW91dFNpemUobmV3TGF5b3V0
U2l6ZSk7CisgICAgc2V0TWF4aW11bVVub2JzY3VyZWRTaXplKG1heGltdW1Vbm9ic2N1cmVkU2l6
ZSk7CisKICAgICBmcmFtZVZpZXcudXBkYXRlTGF5b3V0QW5kU3R5bGVJZk5lZWRlZFJlY3Vyc2l2
ZSgpOwogCiAgICAgSW50U2l6ZSBuZXdDb250ZW50U2l6ZSA9IGZyYW1lVmlldy5jb250ZW50c1Np
emUoKTsKQEAgLTIxNDIsMTQgKzIxNTcsMTIgQEAgdm9pZCBXZWJQYWdlOjp2aWV3cG9ydENvbmZp
Z3VyYXRpb25DaGFuZ2VkKCkKIAogICAgIG1fcGFnZS0+c2V0Wm9vbWVkT3V0UGFnZVNjYWxlRmFj
dG9yKG1fdmlld3BvcnRDb25maWd1cmF0aW9uLm1pbmltdW1TY2FsZSgpKTsKIAorICAgIHVwZGF0
ZVZpZXdwb3J0U2l6ZUZvckNTU1ZpZXdwb3J0VW5pdHMoKTsKKwogICAgIEZyYW1lVmlldyYgZnJh
bWVWaWV3ID0gKm1haW5GcmFtZVZpZXcoKTsKLSAgICBGbG9hdFNpemUgdmlld3BvcnRTaXplID0g
IW1fbWluaW11bUxheW91dFNpemVGb3JNaW5pbWFsVUkuaXNFbXB0eSgpID8gbV9taW5pbXVtTGF5
b3V0U2l6ZUZvck1pbmltYWxVSSA6IG1fdmlld3BvcnRDb25maWd1cmF0aW9uLm1pbmltdW1MYXlv
dXRTaXplKCk7Ci0gICAgdmlld3BvcnRTaXplLnNjYWxlKDEgLyBpbml0aWFsU2NhbGUpOwotICAg
IGZyYW1lVmlldy5zZXRWaWV3cG9ydFNpemUocm91bmRlZEludFNpemUodmlld3BvcnRTaXplKSk7
Ci0gICAgCiAgICAgSW50UG9pbnQgc2Nyb2xsUG9zaXRpb24gPSBmcmFtZVZpZXcuc2Nyb2xsUG9z
aXRpb24oKTsKICAgICBpZiAoIW1faGFzUmVjZWl2ZWRWaXNpYmxlQ29udGVudFJlY3RzQWZ0ZXJE
aWRDb21taXRMb2FkKSB7Ci0gICAgICAgIEZsb2F0U2l6ZSBtaW5pbXVtTGF5b3V0U2l6ZUluU2Ny
b2xsVmlld0Nvb3JkaW5hdGVzID0gbV92aWV3cG9ydENvbmZpZ3VyYXRpb24ubWluaW11bUxheW91
dFNpemUoKTsKKyAgICAgICAgRmxvYXRTaXplIG1pbmltdW1MYXlvdXRTaXplSW5TY3JvbGxWaWV3
Q29vcmRpbmF0ZXMgPSBtX3ZpZXdwb3J0Q29uZmlndXJhdGlvbi5hY3RpdmVNaW5pbXVtTGF5b3V0
U2l6ZUluU2Nyb2xsVmlld0Nvb3JkaW5hdGVzKCk7CiAgICAgICAgIG1pbmltdW1MYXlvdXRTaXpl
SW5TY3JvbGxWaWV3Q29vcmRpbmF0ZXMuc2NhbGUoMSAvIHNjYWxlKTsKICAgICAgICAgSW50U2l6
ZSBtaW5pbXVtTGF5b3V0U2l6ZUluRG9jdW1lbnRDb29yZGluYXRlcyA9IHJvdW5kZWRJbnRTaXpl
KG1pbmltdW1MYXlvdXRTaXplSW5TY3JvbGxWaWV3Q29vcmRpbmF0ZXMpOwogICAgICAgICBJbnRS
ZWN0IHVub2JzY3VyZWRDb250ZW50UmVjdChzY3JvbGxQb3NpdGlvbiwgbWluaW11bUxheW91dFNp
emVJbkRvY3VtZW50Q29vcmRpbmF0ZXMpOwpAQCAtMjE2NiwxMCArMjE3OSwyMSBAQCB2b2lkIFdl
YlBhZ2U6OnZpZXdwb3J0Q29uZmlndXJhdGlvbkNoYW5nZWQoKQogICAgICAgICAvLyBUaGlzIHRh
a2VzIHNjYWxlIGludG8gYWNjb3VudCwgc28gZG8gYWZ0ZXIgdGhlIHNjYWxlIGNoYW5nZS4KICAg
ICAgICAgZnJhbWVWaWV3LnNldEN1c3RvbUZpeGVkUG9zaXRpb25MYXlvdXRSZWN0KGVuY2xvc2lu
Z0ludFJlY3QoZnJhbWVWaWV3LnZpZXdwb3J0Q29uc3RyYWluZWRPYmplY3RzUmVjdCgpKSk7CiAK
LSAgICAgICAgZnJhbWVWaWV3LnNldEN1c3RvbVNpemVGb3JSZXNpemVFdmVudChleHBhbmRlZElu
dFNpemUobV92aWV3cG9ydENvbmZpZ3VyYXRpb24ubWluaW11bUxheW91dFNpemUoKSkpOworICAg
ICAgICBmcmFtZVZpZXcuc2V0Q3VzdG9tU2l6ZUZvclJlc2l6ZUV2ZW50KGV4cGFuZGVkSW50U2l6
ZShtX3ZpZXdwb3J0Q29uZmlndXJhdGlvbi5hY3RpdmVNaW5pbXVtTGF5b3V0U2l6ZUluU2Nyb2xs
Vmlld0Nvb3JkaW5hdGVzKCkpKTsKICAgICB9CiB9CiAKK3ZvaWQgV2ViUGFnZTo6dXBkYXRlVmll
d3BvcnRTaXplRm9yQ1NTVmlld3BvcnRVbml0cygpCit7CisgICAgRmxvYXRTaXplIGxhcmdlc3RV
bm9ic2N1cmVkUmVjdCA9IG1fbWF4aW11bVVub2JzY3VyZWRTaXplOworICAgIGlmIChsYXJnZXN0
VW5vYnNjdXJlZFJlY3QuaXNFbXB0eSgpKQorICAgICAgICBsYXJnZXN0VW5vYnNjdXJlZFJlY3Qg
PSBtX3ZpZXdwb3J0Q29uZmlndXJhdGlvbi5taW5pbXVtTGF5b3V0U2l6ZUZvck1pbmltYWxVSSgp
OworCisgICAgRnJhbWVWaWV3JiBmcmFtZVZpZXcgPSAqbWFpbkZyYW1lVmlldygpOworICAgIGxh
cmdlc3RVbm9ic2N1cmVkUmVjdC5zY2FsZSgxIC8gbV92aWV3cG9ydENvbmZpZ3VyYXRpb24uaW5p
dGlhbFNjYWxlKCkpOworICAgIGZyYW1lVmlldy5zZXRWaWV3cG9ydFNpemVGb3JDU1NWaWV3cG9y
dFVuaXRzKHJvdW5kZWRJbnRTaXplKGxhcmdlc3RVbm9ic2N1cmVkUmVjdCkpOworfQorCiB2b2lk
IFdlYlBhZ2U6OmFwcGxpY2F0aW9uV2lsbFJlc2lnbkFjdGl2ZSgpCiB7CiAgICAgW1tOU05vdGlm
aWNhdGlvbkNlbnRlciBkZWZhdWx0Q2VudGVyXSBwb3N0Tm90aWZpY2F0aW9uTmFtZTpXZWJVSUFw
cGxpY2F0aW9uV2lsbFJlc2lnbkFjdGl2ZU5vdGlmaWNhdGlvbiBvYmplY3Q6bmlsXTsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>231933</attachid>
            <date>2014-05-22 20:03:35 -0700</date>
            <delta_ts>2014-05-22 20:24:49 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-133162-20140522200307.patch</filename>
            <type>text/plain</type>
            <size>63948</size>
            <attacher name="Benjamin Poulain">benjamin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTY5MjM5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjcwNGU1M2YzMGZhMjZm
Mzc5ZGRjN2Y2ZDNmYjQxNTczMjUxNjhiNi4uZTYxOGFhMDU2NzE3NGI1ZWViYjkxZjJiYjFkNzZi
YjMzYjBmNjYwYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU3IEBACisyMDE0LTA1LTIxICBCZW5q
YW1pbiBQb3VsYWluICA8YnBvdWxhaW5AYXBwbGUuY29tPgorCisgICAgICAgIFtpT1NdW1dLMl0g
QWRkIHN1cHBvcnQgZm9yIG1pbmltYWwtdWkgdmlld3BvcnRzCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzMxNjIKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgc3VwcG9ydCBmb3IgbWluaW1hbC11aSBk
aXJlY3RseSBpbnRvIHRoZSBWaWV3cG9ydCBjb25maWd1cmF0aW9uLgorCisgICAgICAgIFZpZXdw
b3J0Q29uZmlndXJhdGlvbiBrbm93cyBhYm91dCB0d28ga2luZHMgb2YgbGF5b3V0IHNpemUgaW4g
c2Nyb2xsdmlldyBjb29yZGluYXRlczoKKyAgICAgICAgLW5vcm1hbCBzaXplCisgICAgICAgIC1t
aW5pbWFsIHVpIHNpemUuCisKKyAgICAgICAgSW5pdGlhbGx5LCB0aGUgcGFnZSBpcyBpbml0aWFs
aXplZCB3aXRoIHJlc2V0TWluaW1hbFVJKCkgYW5kIHN0YXJ0IHdpdGggYSBub3JtYWwgbGF5b3V0
LgorCisgICAgICAgIEF0IGFueSB0aW1lIGJlZm9yZSB0aGUgbWFpbiByZXNvdXJjZSBpcyBsb2Fk
ZWQsIHRoZSBXZWIgcGFnZSBjYW4gdXBkYXRlIGl0cyB2aWV3cG9ydCBtZXRhIHRhZworICAgICAg
ICB0byBpbmNsdWRlIG1pbmltYWwtdWkuIFRoZSB2aWV3cG9ydCBjb25maWd1cmF0aW9uIGlzIHVw
ZGF0ZWQgaW1tZWRpYXRlbHkgdG8gcmVmbGVjdCB0aGUgbWluaW1hbC11aQorICAgICAgICBsYXlv
dXQgc2l6ZS4gQW55IGxheW91dCBhZnRlciB0aGF0IHRha2UgaW50byBhY2NvdW50IHRoZSBtaW5p
bWFsLXVpLgorCisgICAgICAgICogV2ViQ29yZS5leHAuaW46CisgICAgICAgICogY3NzL0xlbmd0
aEZ1bmN0aW9ucy5jcHA6CisgICAgICAgIChXZWJDb3JlOjptaW5pbXVtVmFsdWVGb3JMZW5ndGgp
OgorICAgICAgICAoV2ViQ29yZTo6ZmxvYXRWYWx1ZUZvckxlbmd0aCk6CisgICAgICAgICogY3Nz
L1N0eWxlUmVzb2x2ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVSZXNvbHZlcjo6dmll
d3BvcnRQZXJjZW50YWdlVmFsdWUpOgorICAgICAgICAqIGRvbS9WaWV3cG9ydEFyZ3VtZW50cy5o
OgorICAgICAgICAoV2ViQ29yZTo6Vmlld3BvcnRBcmd1bWVudHM6Om9wZXJhdG9yPT0pOgorICAg
ICAgICAqIHBhZ2UvRnJhbWVWaWV3LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lVmlldzo6
c2V0Vmlld3BvcnRTaXplRm9yQ1NTVmlld3BvcnRVbml0cyk6CisgICAgICAgIChXZWJDb3JlOjpG
cmFtZVZpZXc6OnZpZXdwb3J0U2l6ZUZvckNTU1ZpZXdwb3J0VW5pdHMpOgorICAgICAgICAoV2Vi
Q29yZTo6RnJhbWVWaWV3OjpzZXRWaWV3cG9ydFNpemUpOiBEZWxldGVkLgorICAgICAgICAoV2Vi
Q29yZTo6RnJhbWVWaWV3Ojp2aWV3cG9ydFNpemUpOiBEZWxldGVkLgorICAgICAgICAqIHBhZ2Uv
RnJhbWVWaWV3Lmg6CisgICAgICAgICogcGFnZS9WaWV3cG9ydENvbmZpZ3VyYXRpb24uY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Vmlld3BvcnRDb25maWd1cmF0aW9uOjpWaWV3cG9ydENvbmZpZ3Vy
YXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6Vmlld3BvcnRDb25maWd1cmF0aW9uOjpzZXRNaW5p
bXVtTGF5b3V0U2l6ZSk6CisgICAgICAgIChXZWJDb3JlOjpWaWV3cG9ydENvbmZpZ3VyYXRpb246
OnNldE1pbmltdW1MYXlvdXRTaXplRm9yTWluaW1hbFVJKToKKyAgICAgICAgKFdlYkNvcmU6OlZp
ZXdwb3J0Q29uZmlndXJhdGlvbjo6YWN0aXZlTWluaW11bUxheW91dFNpemVJblNjcm9sbFZpZXdD
b29yZGluYXRlcyk6CisgICAgICAgIChXZWJDb3JlOjpWaWV3cG9ydENvbmZpZ3VyYXRpb246OnJl
c2V0TWluaW1hbFVJKToKKyAgICAgICAgKFdlYkNvcmU6OlZpZXdwb3J0Q29uZmlndXJhdGlvbjo6
cGFnZVdpbGxSZW5kZXJGaXJzdEZyYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OlZpZXdwb3J0Q29u
ZmlndXJhdGlvbjo6aW5pdGlhbFNjYWxlKToKKyAgICAgICAgKFdlYkNvcmU6OlZpZXdwb3J0Q29u
ZmlndXJhdGlvbjo6bWluaW11bVNjYWxlKToKKyAgICAgICAgKFdlYkNvcmU6OlZpZXdwb3J0Q29u
ZmlndXJhdGlvbjo6dXBkYXRlQ29uZmlndXJhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpWaWV3
cG9ydENvbmZpZ3VyYXRpb246OmxheW91dFdpZHRoKToKKyAgICAgICAgKFdlYkNvcmU6OlZpZXdw
b3J0Q29uZmlndXJhdGlvbjo6bGF5b3V0SGVpZ2h0KToKKyAgICAgICAgKFdlYkNvcmU6OlZpZXdw
b3J0Q29uZmlndXJhdGlvbjo6ZGVzY3JpcHRpb24pOgorICAgICAgICAqIHBhZ2UvVmlld3BvcnRD
b25maWd1cmF0aW9uLmg6CisgICAgICAgIChXZWJDb3JlOjpWaWV3cG9ydENvbmZpZ3VyYXRpb246
Om1pbmltdW1MYXlvdXRTaXplRm9yTWluaW1hbFVJKToKKyAgICAgICAgKFdlYkNvcmU6OlZpZXdw
b3J0Q29uZmlndXJhdGlvbjo6dXNlc01pbmltYWxVSSk6CisgICAgICAgICogcmVuZGVyaW5nL1Jl
bmRlclZpZXcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVmlldzo6dmlld3BvcnRTaXpl
Rm9yQ1NTVmlld3BvcnRVbml0cyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJWaWV3Ojp2aWV3
cG9ydFNpemUpOiBEZWxldGVkLgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJWaWV3Lmg6CisK
IDIwMTQtMDUtMjIgIEFuZHJlYXMgS2xpbmcgIDxha2xpbmdAYXBwbGUuY29tPgogCiAgICAgICAg
IFtpT1MgV2ViS2l0Ml0gV2ViIHByb2Nlc3Mgc2hvdWxkIHRyeSB0byBzaHJpbmsgaXRzIG1lbW9y
eSBmb290cHJpbnQgd2hlbiBnb2luZyBpbnRvIGJhY2tncm91bmQuCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggYWUz
OGVjMjRmNjZlNGNlOGVjMmZhOWQ2MDI1NWE3YTljYmMxODY2Yy4uNzIzMWZhZTc0OWM5MGZlOTU4
Y2Y3ZTliNDY4OGVkNzI3Nzc4Mjc3YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdl
TG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYwIEBACisyMDE0
LTA1LTIxICBCZW5qYW1pbiBQb3VsYWluICA8YnBvdWxhaW5AYXBwbGUuY29tPgorCisgICAgICAg
IFtpT1NdW1dLMl0gQWRkIHN1cHBvcnQgZm9yIG1pbmltYWwtdWkgdmlld3BvcnRzCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzMxNjIKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbiB0aGUgV2ViS2l0MiBs
YXllcnMsIHdlIGhhdmUgdHdvIHBhcnRzIHRvIG1pbmltYWwtdWkuCisgICAgICAgIC1JbiBXZWJQ
YWdlLCB3ZSBuZWVkIHRvIGdldCB0aGUgdmFsdWVzIGZyb20gdGhlIFVJUHJvY2VzcyBhbmQgc2V0
dXAgdGhlIFZpZXdwb3J0Q29uZmlndXJhdGlvbi4KKyAgICAgICAgIEFub3RoZXIgcGFydCBpcyBm
cmVlemluZyB0aGUgc3RhdGUgb24gcGFnZSBsb2FkLgorICAgICAgICAtSW4gdGhlIFVJUHJvY2Vz
cywgd2UgbmVlZCB0byBnZXQgdGhlIHJpZ2h0IGluZm9ybWF0aW9uIGZvciBsYXlvdXQgYW5kIHN0
eWxpbmcsIGFuZCB3ZSBuZWVkIHRvIHRlbGwKKyAgICAgICAgIHRoZSBVSSBjbGllbnRzIGFib3V0
IG1pbmltYWwtdWkgY2hhbmdlcy4KKworICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tV
SURlbGVnYXRlUHJpdmF0ZS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJW
aWV3Lm1tOgorICAgICAgICAoLVtXS1dlYlZpZXcgX3NldFVzZXNNaW5pbWFsVUk6XSk6CisgICAg
ICAgICgtW1dLV2ViVmlldyBfdXNlc01pbmltYWxVSV0pOgorICAgICAgICAoLVtXS1dlYlZpZXcg
X2RpZENvbW1pdExheWVyVHJlZTpXZWJLaXQ6Ol0pOgorICAgICAgICAoLVtXS1dlYlZpZXcgX2Zy
YW1lT3JCb3VuZHNDaGFuZ2VkXSk6CisgICAgICAgICgtW1dLV2ViVmlldyBfbWluaW11bUxheW91
dFNpemVPdmVycmlkZV0pOgorICAgICAgICAoLVtXS1dlYlZpZXcgX3NldE1pbmltdW1MYXlvdXRT
aXplT3ZlcnJpZGU6XSk6CisgICAgICAgICgtW1dLV2ViVmlldyBfbWluaW11bUxheW91dFNpemVP
dmVycmlkZUZvck1pbmltYWxVSV0pOgorICAgICAgICAoLVtXS1dlYlZpZXcgX3NldE1pbmltdW1M
YXlvdXRTaXplT3ZlcnJpZGVGb3JNaW5pbWFsVUk6XSk6CisgICAgICAgICgtW1dLV2ViVmlldyBf
bGFyZ2VzdFVub2JzY3VyZWRTaXplT3ZlcnJpZGVdKToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF9z
ZXRNYXhpbXVtVW5vYnNjdXJlZFNpemVPdmVycmlkZTpdKToKKyAgICAgICAgKC1bV0tXZWJWaWV3
IF9iZWdpbkFuaW1hdGVkUmVzaXplV2l0aFVwZGF0ZXM6XSk6CisgICAgICAgIChzZXRWaWV3cG9y
dENvbmZpZ3VyYXRpb25NaW5pbXVtTGF5b3V0U2l6ZSk6IERlbGV0ZWQuCisgICAgICAgICogVUlQ
cm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdJbnRlcm5hbC5oOgorICAgICAgICAqIFVJUHJvY2Vz
cy9BUEkvQ29jb2EvV0tXZWJWaWV3UHJpdmF0ZS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9QYWdl
Q2xpZW50Lmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oOgorICAgICAgICAq
IFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW46CisgICAgICAgICogVUlQcm9jZXNz
L2lvcy9QYWdlQ2xpZW50SW1wbElPUy5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvUGFnZUNs
aWVudEltcGxJT1MubW06CisgICAgICAgIChXZWJLaXQ6OlBhZ2VDbGllbnRJbXBsOjpzZXRVc2Vz
TWluaW1hbFVJKToKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlPUy5tbToK
KyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpkeW5hbWljVmlld3BvcnRTaXplVXBkYXRl
KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpzZXRWaWV3cG9ydENvbmZpZ3VyYXRp
b25NaW5pbXVtTGF5b3V0U2l6ZUZvck1pbmltYWxVSSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBh
Z2VQcm94eTo6c2V0TWF4aW11bVVub2JzY3VyZWRTaXplKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
UGFnZVByb3h5OjpzZXRVc2VzTWluaW1hbFVJKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVBy
b3h5OjpzZXRNaW5pbXVtTGF5b3V0U2l6ZUZvck1pbmltYWxVSSk6IERlbGV0ZWQuCisgICAgICAg
ICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQ
YWdlOjpXZWJQYWdlKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6ZGlkQ29tbWl0TG9hZCk6
CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaDoKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBXZWJQcm9jZXNz
L1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW06CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnNl
dFZpZXdwb3J0Q29uZmlndXJhdGlvbk1pbmltdW1MYXlvdXRTaXplRm9yTWluaW1hbFVJKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViUGFnZTo6c2V0TWF4aW11bVVub2JzY3VyZWRTaXplKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViUGFnZTo6d2lsbEZsdXNoTGF5ZXJzKToKKyAgICAgICAgKFdlYktpdDo6
V2ViUGFnZTo6ZHluYW1pY1ZpZXdwb3J0U2l6ZVVwZGF0ZSk6CisgICAgICAgIChXZWJLaXQ6Oldl
YlBhZ2U6OnZpZXdwb3J0Q29uZmlndXJhdGlvbkNoYW5nZWQpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQYWdlOjp1cGRhdGVWaWV3cG9ydFNpemVGb3JDU1NWaWV3cG9ydFVuaXRzKToKKyAgICAgICAg
KFdlYktpdDo6V2ViUGFnZTo6c2V0TWluaW11bUxheW91dFNpemVGb3JNaW5pbWFsVUkpOiBEZWxl
dGVkLgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9tYWMvUmVtb3RlTGF5ZXJUcmVlRHJh
d2luZ0FyZWEubW06CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVh
OjpmbHVzaExheWVycyk6CisKIDIwMTQtMDUtMjIgIEJlbmphbWluIFBvdWxhaW4gIDxicG91bGFp
bkBhcHBsZS5jb20+CiAKICAgICAgICAgRG8gbm90IGZvcmNlIGEgbGF5b3V0IHdoZW4gY2hhbmdp
bmcgdGhlIEZpeGVkTGF5b3V0U2l6ZSBpbiBXZWJQYWdlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLmV4cC5pbiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCmluZGV4
IGExNjczMzcxNGU3N2RiNWJjMTgzMzRlNmNkY2YxMTkwMTQxODI3ZWUuLmJmMjVhZTAwODBiZmUz
NGFjNWRiMmQyY2M3ZjhiNjBiOTIzNjk0ODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dl
YkNvcmUuZXhwLmluCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCkBAIC05MDgs
MTQgKzkwOCwxNyBAQCBfX1pON1dlYkNvcmUyMVVzZXJDb250ZW50Q29udHJvbGxlcjM0cmVtb3Zl
VXNlck1lc3NhZ2VIYW5kbGVyRGVzY3JpcHRvckVSTlNfMjhVcwogX19aTjdXZWJDb3JlMjFVc2Vy
Q29udGVudENvbnRyb2xsZXI2Y3JlYXRlRXYKIF9fWk43V2ViQ29yZTIxVXNlckNvbnRlbnRDb250
cm9sbGVyRDFFdgogX19aTjdXZWJDb3JlMjFVc2VyQ29udGVudFVSTFBhdHRlcm41cGFyc2VFUktO
M1dURjZTdHJpbmdFCitfX1pON1dlYkNvcmUyMVZpZXdwb3J0Q29uZmlndXJhdGlvbjE0cmVzZXRN
aW5pbWFsVUlFdgogX19aTjdXZWJDb3JlMjFWaWV3cG9ydENvbmZpZ3VyYXRpb24xNXNldENvbnRl
bnRzU2l6ZUVSS05TXzdJbnRTaXplRQogX19aTjdXZWJDb3JlMjFWaWV3cG9ydENvbmZpZ3VyYXRp
b24xN3dlYnBhZ2VQYXJhbWV0ZXJzRXYKIF9fWk43V2ViQ29yZTIxVmlld3BvcnRDb25maWd1cmF0
aW9uMjBzZXRNaW5pbXVtTGF5b3V0U2l6ZUVSS05TXzlGbG9hdFNpemVFCiBfX1pON1dlYkNvcmUy
MVZpZXdwb3J0Q29uZmlndXJhdGlvbjIwc2V0Vmlld3BvcnRBcmd1bWVudHNFUktOU18xN1ZpZXdw
b3J0QXJndW1lbnRzRQorX19aTjdXZWJDb3JlMjFWaWV3cG9ydENvbmZpZ3VyYXRpb24yMWRpZEZp
bmlzaERvY3VtZW50TG9hZEV2CiBfX1pON1dlYkNvcmUyMVZpZXdwb3J0Q29uZmlndXJhdGlvbjIx
eGh0bWxNb2JpbGVQYXJhbWV0ZXJzRXYKIF9fWk43V2ViQ29yZTIxVmlld3BvcnRDb25maWd1cmF0
aW9uMjJ0ZXh0RG9jdW1lbnRQYXJhbWV0ZXJzRXYKIF9fWk43V2ViQ29yZTIxVmlld3BvcnRDb25m
aWd1cmF0aW9uMjNpbWFnZURvY3VtZW50UGFyYW1ldGVyc0V2CiBfX1pON1dlYkNvcmUyMVZpZXdw
b3J0Q29uZmlndXJhdGlvbjIzc2V0RGVmYXVsdENvbmZpZ3VyYXRpb25FUktOUzBfMTBQYXJhbWV0
ZXJzRQorX19aTjdXZWJDb3JlMjFWaWV3cG9ydENvbmZpZ3VyYXRpb24zMnNldE1pbmltdW1MYXlv
dXRTaXplRm9yTWluaW1hbFVJRVJLTlNfOUZsb2F0U2l6ZUUKIF9fWk43V2ViQ29yZTIxVmlld3Bv
cnRDb25maWd1cmF0aW9uQzFFdgogX19aTjdXZWJDb3JlMjFXaW5kb3dzTGF0aW4xRW5jb2RpbmdF
dgogX19aTjdXZWJDb3JlMjFjcmVhdGVDRlVSTEZyb21CdWZmZXJFUEtjbVBLN19fQ0ZVUkwKQEAg
LTEzNjMsNyArMTM2Niw2IEBAIF9fWk43V2ViQ29yZTlGcmFtZVZpZXcxNHNldE5lZWRzTGF5b3V0
RXYKIF9fWk43V2ViQ29yZTlGcmFtZVZpZXcxNHNldFRyYW5zcGFyZW50RWIKIF9fWk43V2ViQ29y
ZTlGcmFtZVZpZXcxNXNldEZvb3RlckhlaWdodEVpCiBfX1pON1dlYkNvcmU5RnJhbWVWaWV3MTVz
ZXRIZWFkZXJIZWlnaHRFaQotX19aTjdXZWJDb3JlOUZyYW1lVmlldzE1c2V0Vmlld3BvcnRTaXpl
RU5TXzdJbnRTaXplRQogX19aTjdXZWJDb3JlOUZyYW1lVmlldzE2c2V0UGFpbnRCZWhhdmlvckVq
CiBfX1pON1dlYkNvcmU5RnJhbWVWaWV3MTdhZGRTY3JvbGxhYmxlQXJlYUVQTlNfMTRTY3JvbGxh
YmxlQXJlYUUKIF9fWk43V2ViQ29yZTlGcmFtZVZpZXcxN3BhaW50Q29udHJvbFRpbnRzRXYKQEAg
LTEzODgsNiArMTM5MCw3IEBAIF9fWk43V2ViQ29yZTlGcmFtZVZpZXcyNmFkanVzdFRpbGVkQmFj
a2luZ0NvdmVyYWdlRXYKIF9fWk43V2ViQ29yZTlGcmFtZVZpZXcyOXNldEF1dG9TaXplRml4ZWRN
aW5pbXVtSGVpZ2h0RWkKIF9fWk43V2ViQ29yZTlGcmFtZVZpZXcyOXNldFNob3VsZFVwZGF0ZVdo
aWxlT2Zmc2NyZWVuRWIKIF9fWk43V2ViQ29yZTlGcmFtZVZpZXczMXNldFZpc3VhbFVwZGF0ZXNB
bGxvd2VkQnlDbGllbnRFYgorX19aTjdXZWJDb3JlOUZyYW1lVmlldzM0c2V0Vmlld3BvcnRTaXpl
Rm9yQ1NTVmlld3BvcnRVbml0c0VOU183SW50U2l6ZUUKIF9fWk43V2ViQ29yZTlGcmFtZVZpZXcz
N3NldFNjcm9sbGluZ1BlcmZvcm1hbmNlTG9nZ2luZ0VuYWJsZWRFYgogX19aTjdXZWJDb3JlOUZy
YW1lVmlldzM3dXBkYXRlTGF5b3V0QW5kU3R5bGVJZk5lZWRlZFJlY3Vyc2l2ZUV2CiBfX1pON1dl
YkNvcmU5RnJhbWVWaWV3MzhzY3JvbGxQb3NpdGlvbkNoYW5nZWRWaWFQbGF0Zm9ybVdpZGdldEVS
S05TXzhJbnRQb2ludEVTM18KQEAgLTE3OTUsNiArMTc5OCw3IEBAIF9fWk5LN1dlYkNvcmUyMVVz
ZXJDb250ZW50VVJMUGF0dGVybjdtYXRjaGVzRVJLTlNfM1VSTEUKIF9fWk5LN1dlYkNvcmUyMVZp
ZXdwb3J0Q29uZmlndXJhdGlvbjEwbGF5b3V0U2l6ZUV2CiBfX1pOSzdXZWJDb3JlMjFWaWV3cG9y
dENvbmZpZ3VyYXRpb24xMmluaXRpYWxTY2FsZUV2CiBfX1pOSzdXZWJDb3JlMjFWaWV3cG9ydENv
bmZpZ3VyYXRpb24xMm1pbmltdW1TY2FsZUV2CitfX1pOSzdXZWJDb3JlMjFWaWV3cG9ydENvbmZp
Z3VyYXRpb240NmFjdGl2ZU1pbmltdW1MYXlvdXRTaXplSW5TY3JvbGxWaWV3Q29vcmRpbmF0ZXNF
dgogX19aTks3V2ViQ29yZTIyV2hlZWxFdmVudERlbHRhVHJhY2tlcjMwZG9taW5hbnRTY3JvbGxH
ZXN0dXJlRGlyZWN0aW9uRXYKIF9fWk5LN1dlYkNvcmUyM0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdl
MTFtYXhpbXVtU2l6ZUV2CiBfX1pOSzdXZWJDb3JlMjNBdXRoZW50aWNhdGlvbkNoYWxsZW5nZTIw
YXV0aGVudGljYXRpb25DbGllbnRFdgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0xl
bmd0aEZ1bmN0aW9ucy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvTGVuZ3RoRnVuY3Rpb25zLmNw
cAppbmRleCAyZmE5NGUyMDcxNjE1YzU1MDQ2YjBiNDc0YjhiNmM0YTZmNjFlYmJmLi41NjQwMGQ0
NjA3NmVkYzcxMjgzNzQ4YTU1N2ZlMjEwNzAyYzZjN2JjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9jc3MvTGVuZ3RoRnVuY3Rpb25zLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvTGVu
Z3RoRnVuY3Rpb25zLmNwcApAQCAtNTQsMjEgKzU0LDIxIEBAIExheW91dFVuaXQgbWluaW11bVZh
bHVlRm9yTGVuZ3RoKGNvbnN0IExlbmd0aCYgbGVuZ3RoLCBMYXlvdXRVbml0IG1heGltdW1WYWx1
ZSwKICAgICAgICAgcmV0dXJuIGxlbmd0aC5ub25OYW5DYWxjdWxhdGVkVmFsdWUobWF4aW11bVZh
bHVlKTsKICAgICBjYXNlIFZpZXdwb3J0UGVyY2VudGFnZVdpZHRoOgogICAgICAgICBpZiAocmVu
ZGVyVmlldykKLSAgICAgICAgICAgIHJldHVybiBMYXlvdXRVbml0KHJlbmRlclZpZXctPnZpZXdw
b3J0U2l6ZSgpLndpZHRoKCkgKiBsZW5ndGgudmlld3BvcnRQZXJjZW50YWdlTGVuZ3RoKCkgLyAx
MDAuMGYpOworICAgICAgICAgICAgcmV0dXJuIExheW91dFVuaXQocmVuZGVyVmlldy0+dmlld3Bv
cnRTaXplRm9yQ1NTVmlld3BvcnRVbml0cygpLndpZHRoKCkgKiBsZW5ndGgudmlld3BvcnRQZXJj
ZW50YWdlTGVuZ3RoKCkgLyAxMDAuMGYpOwogICAgICAgICByZXR1cm4gMDsKICAgICBjYXNlIFZp
ZXdwb3J0UGVyY2VudGFnZUhlaWdodDoKICAgICAgICAgaWYgKHJlbmRlclZpZXcpCi0gICAgICAg
ICAgICByZXR1cm4gTGF5b3V0VW5pdChyZW5kZXJWaWV3LT52aWV3cG9ydFNpemUoKS5oZWlnaHQo
KSAqIGxlbmd0aC52aWV3cG9ydFBlcmNlbnRhZ2VMZW5ndGgoKSAvIDEwMC4wZik7CisgICAgICAg
ICAgICByZXR1cm4gTGF5b3V0VW5pdChyZW5kZXJWaWV3LT52aWV3cG9ydFNpemVGb3JDU1NWaWV3
cG9ydFVuaXRzKCkuaGVpZ2h0KCkgKiBsZW5ndGgudmlld3BvcnRQZXJjZW50YWdlTGVuZ3RoKCkg
LyAxMDAuMGYpOwogICAgICAgICByZXR1cm4gMDsKICAgICBjYXNlIFZpZXdwb3J0UGVyY2VudGFn
ZU1pbjoKICAgICAgICAgaWYgKHJlbmRlclZpZXcpIHsKLSAgICAgICAgICAgIEludFNpemUgdmll
d3BvcnRTaXplID0gcmVuZGVyVmlldy0+dmlld3BvcnRTaXplKCk7CisgICAgICAgICAgICBJbnRT
aXplIHZpZXdwb3J0U2l6ZSA9IHJlbmRlclZpZXctPnZpZXdwb3J0U2l6ZUZvckNTU1ZpZXdwb3J0
VW5pdHMoKTsKICAgICAgICAgICAgIHJldHVybiBMYXlvdXRVbml0KHN0ZDo6bWluKHZpZXdwb3J0
U2l6ZS53aWR0aCgpLCB2aWV3cG9ydFNpemUuaGVpZ2h0KCkpICogbGVuZ3RoLnZpZXdwb3J0UGVy
Y2VudGFnZUxlbmd0aCgpIC8gMTAwLjBmKTsKICAgICAgICAgfQogICAgICAgICByZXR1cm4gMDsK
ICAgICBjYXNlIFZpZXdwb3J0UGVyY2VudGFnZU1heDoKICAgICAgICAgaWYgKHJlbmRlclZpZXcp
IHsKLSAgICAgICAgICAgIEludFNpemUgdmlld3BvcnRTaXplID0gcmVuZGVyVmlldy0+dmlld3Bv
cnRTaXplKCk7CisgICAgICAgICAgICBJbnRTaXplIHZpZXdwb3J0U2l6ZSA9IHJlbmRlclZpZXct
PnZpZXdwb3J0U2l6ZUZvckNTU1ZpZXdwb3J0VW5pdHMoKTsKICAgICAgICAgICAgIHJldHVybiBM
YXlvdXRVbml0KHN0ZDo6bWF4KHZpZXdwb3J0U2l6ZS53aWR0aCgpLCB2aWV3cG9ydFNpemUuaGVp
Z2h0KCkpICogbGVuZ3RoLnZpZXdwb3J0UGVyY2VudGFnZUxlbmd0aCgpIC8gMTAwLjBmKTsKICAg
ICAgICAgfQogICAgICAgICByZXR1cm4gMDsKQEAgLTEzMiwyMSArMTMyLDIxIEBAIGZsb2F0IGZs
b2F0VmFsdWVGb3JMZW5ndGgoY29uc3QgTGVuZ3RoJiBsZW5ndGgsIExheW91dFVuaXQgbWF4aW11
bVZhbHVlLCBSZW5kZXJWCiAgICAgICAgIHJldHVybiBsZW5ndGgubm9uTmFuQ2FsY3VsYXRlZFZh
bHVlKG1heGltdW1WYWx1ZSk7ICAgICAgICAgICAgICAgIAogICAgIGNhc2UgVmlld3BvcnRQZXJj
ZW50YWdlV2lkdGg6CiAgICAgICAgIGlmIChyZW5kZXJWaWV3KQotICAgICAgICAgICAgcmV0dXJu
IHN0YXRpY19jYXN0PGludD4ocmVuZGVyVmlldy0+dmlld3BvcnRTaXplKCkud2lkdGgoKSAqIGxl
bmd0aC52aWV3cG9ydFBlcmNlbnRhZ2VMZW5ndGgoKSAvIDEwMC4wZik7CisgICAgICAgICAgICBy
ZXR1cm4gc3RhdGljX2Nhc3Q8aW50PihyZW5kZXJWaWV3LT52aWV3cG9ydFNpemVGb3JDU1NWaWV3
cG9ydFVuaXRzKCkud2lkdGgoKSAqIGxlbmd0aC52aWV3cG9ydFBlcmNlbnRhZ2VMZW5ndGgoKSAv
IDEwMC4wZik7CiAgICAgICAgIHJldHVybiAwOwogICAgIGNhc2UgVmlld3BvcnRQZXJjZW50YWdl
SGVpZ2h0OgogICAgICAgICBpZiAocmVuZGVyVmlldykKLSAgICAgICAgICAgIHJldHVybiBzdGF0
aWNfY2FzdDxpbnQ+KHJlbmRlclZpZXctPnZpZXdwb3J0U2l6ZSgpLmhlaWdodCgpICogbGVuZ3Ro
LnZpZXdwb3J0UGVyY2VudGFnZUxlbmd0aCgpIC8gMTAwLjBmKTsKKyAgICAgICAgICAgIHJldHVy
biBzdGF0aWNfY2FzdDxpbnQ+KHJlbmRlclZpZXctPnZpZXdwb3J0U2l6ZUZvckNTU1ZpZXdwb3J0
VW5pdHMoKS5oZWlnaHQoKSAqIGxlbmd0aC52aWV3cG9ydFBlcmNlbnRhZ2VMZW5ndGgoKSAvIDEw
MC4wZik7CiAgICAgICAgIHJldHVybiAwOwogICAgIGNhc2UgVmlld3BvcnRQZXJjZW50YWdlTWlu
OgogICAgICAgICBpZiAocmVuZGVyVmlldykgewotICAgICAgICAgICAgSW50U2l6ZSB2aWV3cG9y
dFNpemUgPSByZW5kZXJWaWV3LT52aWV3cG9ydFNpemUoKTsKKyAgICAgICAgICAgIEludFNpemUg
dmlld3BvcnRTaXplID0gcmVuZGVyVmlldy0+dmlld3BvcnRTaXplRm9yQ1NTVmlld3BvcnRVbml0
cygpOwogICAgICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGludD4oc3RkOjptaW4odmlld3Bv
cnRTaXplLndpZHRoKCksIHZpZXdwb3J0U2l6ZS5oZWlnaHQoKSkgKiBsZW5ndGgudmlld3BvcnRQ
ZXJjZW50YWdlTGVuZ3RoKCkgLyAxMDAuMGYpOwogICAgICAgICB9CiAgICAgICAgIHJldHVybiAw
OwogICAgIGNhc2UgVmlld3BvcnRQZXJjZW50YWdlTWF4OgogICAgICAgICBpZiAocmVuZGVyVmll
dykgewotICAgICAgICAgICAgSW50U2l6ZSB2aWV3cG9ydFNpemUgPSByZW5kZXJWaWV3LT52aWV3
cG9ydFNpemUoKTsKKyAgICAgICAgICAgIEludFNpemUgdmlld3BvcnRTaXplID0gcmVuZGVyVmll
dy0+dmlld3BvcnRTaXplRm9yQ1NTVmlld3BvcnRVbml0cygpOwogICAgICAgICAgICAgcmV0dXJu
IHN0YXRpY19jYXN0PGludD4oc3RkOjptYXgodmlld3BvcnRTaXplLndpZHRoKCksIHZpZXdwb3J0
U2l6ZS5oZWlnaHQoKSkgKiBsZW5ndGgudmlld3BvcnRQZXJjZW50YWdlTGVuZ3RoKCkgLyAxMDAu
MGYpOwogICAgICAgICB9CiAgICAgICAgIHJldHVybiAwOwpAQCAtMTc4LDIxICsxNzgsMjEgQEAg
ZmxvYXQgZmxvYXRWYWx1ZUZvckxlbmd0aChjb25zdCBMZW5ndGgmIGxlbmd0aCwgZmxvYXQgbWF4
aW11bVZhbHVlLCBSZW5kZXJWaWV3KgogICAgICAgICByZXR1cm4gbGVuZ3RoLm5vbk5hbkNhbGN1
bGF0ZWRWYWx1ZShtYXhpbXVtVmFsdWUpOwogICAgIGNhc2UgVmlld3BvcnRQZXJjZW50YWdlV2lk
dGg6CiAgICAgICAgIGlmIChyZW5kZXJWaWV3KQotICAgICAgICAgICAgcmV0dXJuIHN0YXRpY19j
YXN0PGludD4ocmVuZGVyVmlldy0+dmlld3BvcnRTaXplKCkud2lkdGgoKSAqIGxlbmd0aC52aWV3
cG9ydFBlcmNlbnRhZ2VMZW5ndGgoKSAvIDEwMC4wZik7CisgICAgICAgICAgICByZXR1cm4gc3Rh
dGljX2Nhc3Q8aW50PihyZW5kZXJWaWV3LT52aWV3cG9ydFNpemVGb3JDU1NWaWV3cG9ydFVuaXRz
KCkud2lkdGgoKSAqIGxlbmd0aC52aWV3cG9ydFBlcmNlbnRhZ2VMZW5ndGgoKSAvIDEwMC4wZik7
CiAgICAgICAgIHJldHVybiAwOwogICAgIGNhc2UgVmlld3BvcnRQZXJjZW50YWdlSGVpZ2h0Ogog
ICAgICAgICBpZiAocmVuZGVyVmlldykKLSAgICAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxp
bnQ+KHJlbmRlclZpZXctPnZpZXdwb3J0U2l6ZSgpLmhlaWdodCgpICogbGVuZ3RoLnZpZXdwb3J0
UGVyY2VudGFnZUxlbmd0aCgpIC8gMTAwLjBmKTsKKyAgICAgICAgICAgIHJldHVybiBzdGF0aWNf
Y2FzdDxpbnQ+KHJlbmRlclZpZXctPnZpZXdwb3J0U2l6ZUZvckNTU1ZpZXdwb3J0VW5pdHMoKS5o
ZWlnaHQoKSAqIGxlbmd0aC52aWV3cG9ydFBlcmNlbnRhZ2VMZW5ndGgoKSAvIDEwMC4wZik7CiAg
ICAgICAgIHJldHVybiAwOwogICAgIGNhc2UgVmlld3BvcnRQZXJjZW50YWdlTWluOgogICAgICAg
ICBpZiAocmVuZGVyVmlldykgewotICAgICAgICAgICAgSW50U2l6ZSB2aWV3cG9ydFNpemUgPSBy
ZW5kZXJWaWV3LT52aWV3cG9ydFNpemUoKTsKKyAgICAgICAgICAgIEludFNpemUgdmlld3BvcnRT
aXplID0gcmVuZGVyVmlldy0+dmlld3BvcnRTaXplRm9yQ1NTVmlld3BvcnRVbml0cygpOwogICAg
ICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGludD4oc3RkOjptaW4odmlld3BvcnRTaXplLndp
ZHRoKCksIHZpZXdwb3J0U2l6ZS5oZWlnaHQoKSkgKiBsZW5ndGgudmlld3BvcnRQZXJjZW50YWdl
TGVuZ3RoKCkgLyAxMDAuMGYpOwogICAgICAgICB9CiAgICAgICAgIHJldHVybiAwOwogICAgIGNh
c2UgVmlld3BvcnRQZXJjZW50YWdlTWF4OgogICAgICAgICBpZiAocmVuZGVyVmlldykgewotICAg
ICAgICAgICAgSW50U2l6ZSB2aWV3cG9ydFNpemUgPSByZW5kZXJWaWV3LT52aWV3cG9ydFNpemUo
KTsKKyAgICAgICAgICAgIEludFNpemUgdmlld3BvcnRTaXplID0gcmVuZGVyVmlldy0+dmlld3Bv
cnRTaXplRm9yQ1NTVmlld3BvcnRVbml0cygpOwogICAgICAgICAgICAgcmV0dXJuIHN0YXRpY19j
YXN0PGludD4oc3RkOjptYXgodmlld3BvcnRTaXplLndpZHRoKCksIHZpZXdwb3J0U2l6ZS5oZWln
aHQoKSkgKiBsZW5ndGgudmlld3BvcnRQZXJjZW50YWdlTGVuZ3RoKCkgLyAxMDAuMGYpOwogICAg
ICAgICB9CiAgICAgICAgIHJldHVybiAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3Nz
L1N0eWxlUmVzb2x2ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIuY3Bw
CmluZGV4IDhiYjMzYzdkNGVmYjUwNDY2MThhMzFiYzBkNWRhMWFjMWZlNmYxODYuLmEyZTliNjcy
ZDJmMWM0NTc4MjZmZmI2NmNkY2VkNGU5MmM2NmRiMzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2Nzcy9TdHlsZVJlc29sdmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVS
ZXNvbHZlci5jcHAKQEAgLTM2MTYsOCArMzYxNiw4IEBAIFN0eWxlUmVzb2x2ZXI6Ok1hdGNoZWRQ
cm9wZXJ0aWVzOjp+TWF0Y2hlZFByb3BlcnRpZXMoKQogCiBpbnQgU3R5bGVSZXNvbHZlcjo6dmll
d3BvcnRQZXJjZW50YWdlVmFsdWUoQ1NTUHJpbWl0aXZlVmFsdWUmIHVuaXQsIGludCBwZXJjZW50
YWdlKQogewotICAgIGludCB2aWV3UG9ydEhlaWdodCA9IGRvY3VtZW50KCkucmVuZGVyVmlldygp
LT52aWV3cG9ydFNpemUoKS5oZWlnaHQoKSAqIHBlcmNlbnRhZ2UgLyAxMDAuMGY7Ci0gICAgaW50
IHZpZXdQb3J0V2lkdGggPSBkb2N1bWVudCgpLnJlbmRlclZpZXcoKS0+dmlld3BvcnRTaXplKCku
d2lkdGgoKSAqIHBlcmNlbnRhZ2UgLyAxMDAuMGY7CisgICAgaW50IHZpZXdQb3J0SGVpZ2h0ID0g
ZG9jdW1lbnQoKS5yZW5kZXJWaWV3KCktPnZpZXdwb3J0U2l6ZUZvckNTU1ZpZXdwb3J0VW5pdHMo
KS5oZWlnaHQoKSAqIHBlcmNlbnRhZ2UgLyAxMDAuMGY7CisgICAgaW50IHZpZXdQb3J0V2lkdGgg
PSBkb2N1bWVudCgpLnJlbmRlclZpZXcoKS0+dmlld3BvcnRTaXplRm9yQ1NTVmlld3BvcnRVbml0
cygpLndpZHRoKCkgKiBwZXJjZW50YWdlIC8gMTAwLjBmOwogCiAgICAgaWYgKHVuaXQuaXNWaWV3
cG9ydFBlcmNlbnRhZ2VIZWlnaHQoKSkKICAgICAgICAgcmV0dXJuIHZpZXdQb3J0SGVpZ2h0Owpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1ZpZXdwb3J0QXJndW1lbnRzLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vVmlld3BvcnRBcmd1bWVudHMuaAppbmRleCA3NzAwNzkwMTcyNzc0YmZj
YjU1OTQ4YjFlOTM1ZWU2N2FjMzY4MGJlLi5hMDE4MTUyNzUwNzBkNzcxODM5ZDlmYzRjNzM3OTE4
MDA0NTU2ZTMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vVmlld3BvcnRBcmd1bWVu
dHMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vVmlld3BvcnRBcmd1bWVudHMuaApAQCAtMTE1
LDEwICsxMTUsNiBAQCBzdHJ1Y3QgVmlld3BvcnRBcmd1bWVudHMgewogICAgIHsKICAgICAgICAg
Ly8gVXNlZCBmb3IgZmlndXJpbmcgb3V0IHdoZXRoZXIgdG8gcmVzZXQgdGhlIHZpZXdwb3J0IG9y
IG5vdCwKICAgICAgICAgLy8gdGh1cyB3ZSBhcmUgbm90IHRha2luZyB0eXBlIGludG8gYWNjb3Vu
dC4KLSNpZiBQTEFURk9STShJT1MpCi0gICAgICAgIC8vIFdlIGlnbm9yZSBtaW5pbWFsVUkgZm9y
IHRoZSBzYW1lIHJlYXNvbiAtLSBpdCBpcyBhIGhpZ2hlci1sZXZlbAotICAgICAgICAvLyBwcm9w
ZXJ0eSB0aGF0IGRvZXNuJ3QgYWZmZWN0IHRoZSBhY3R1YWwgdmlld3BvcnQuCi0jZW5kaWYKICAg
ICAgICAgcmV0dXJuIHdpZHRoID09IG90aGVyLndpZHRoCiAgICAgICAgICAgICAmJiBtaW5XaWR0
aCA9PSBvdGhlci5taW5XaWR0aAogICAgICAgICAgICAgJiYgbWF4V2lkdGggPT0gb3RoZXIubWF4
V2lkdGgKQEAgLTEyOSw2ICsxMjUsOSBAQCBzdHJ1Y3QgVmlld3BvcnRBcmd1bWVudHMgewogICAg
ICAgICAgICAgJiYgbWluWm9vbSA9PSBvdGhlci5taW5ab29tCiAgICAgICAgICAgICAmJiBtYXha
b29tID09IG90aGVyLm1heFpvb20KICAgICAgICAgICAgICYmIHVzZXJab29tID09IG90aGVyLnVz
ZXJab29tCisjaWYgUExBVEZPUk0oSU9TKQorICAgICAgICAgICAgJiYgbWluaW1hbFVJID09IG90
aGVyLm1pbmltYWxVSQorI2VuZGlmCiAgICAgICAgICAgICAmJiBvcmllbnRhdGlvbiA9PSBvdGhl
ci5vcmllbnRhdGlvbjsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
RnJhbWVWaWV3LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcAppbmRleCBm
MWU4ZTcyM2JjZTI0NGU1MjBkMmUzODZlMzg0NDEzZjExM2MyN2YwLi5kYWJhNzY3Y2YxOWJhZDc1
MmIwZjY2ZjEwZTlmYmE2ZTRmYWEwZDFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L0ZyYW1lVmlldy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwCkBA
IC00Mzk4LDcgKzQzOTgsNyBAQCB2b2lkIEZyYW1lVmlldzo6c2V0RXhwb3NlZFJlY3QoRmxvYXRS
ZWN0IGV4cG9zZWRSZWN0KQogICAgICAgICB2aWV3LT5jb21wb3NpdG9yKCkuc2NoZWR1bGVMYXll
ckZsdXNoKGZhbHNlIC8qIGNhblRocm90dGxlICovKTsKIH0KICAgICAKLXZvaWQgRnJhbWVWaWV3
OjpzZXRWaWV3cG9ydFNpemUoSW50U2l6ZSBzaXplKQordm9pZCBGcmFtZVZpZXc6OnNldFZpZXdw
b3J0U2l6ZUZvckNTU1ZpZXdwb3J0VW5pdHMoSW50U2l6ZSBzaXplKQogewogICAgIGlmIChtX2hh
c092ZXJyaWRlVmlld3BvcnRTaXplICYmIG1fb3ZlcnJpZGVWaWV3cG9ydFNpemUgPT0gc2l6ZSkK
ICAgICAgICAgcmV0dXJuOwpAQCAtNDQxMCw3ICs0NDEwLDcgQEAgdm9pZCBGcmFtZVZpZXc6OnNl
dFZpZXdwb3J0U2l6ZShJbnRTaXplIHNpemUpCiAgICAgICAgIGRvY3VtZW50LT5zdHlsZVJlc29s
dmVyQ2hhbmdlZChEZWZlclJlY2FsY1N0eWxlKTsKIH0KICAgICAKLUludFNpemUgRnJhbWVWaWV3
Ojp2aWV3cG9ydFNpemUoKSBjb25zdAorSW50U2l6ZSBGcmFtZVZpZXc6OnZpZXdwb3J0U2l6ZUZv
ckNTU1ZpZXdwb3J0VW5pdHMoKSBjb25zdAogewogICAgIGlmIChtX2hhc092ZXJyaWRlVmlld3Bv
cnRTaXplKQogICAgICAgICByZXR1cm4gbV9vdmVycmlkZVZpZXdwb3J0U2l6ZTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L0ZyYW1lVmlldy5oCmluZGV4IDkzMzhiODRlODliY2Q3ODQyYThhMWQ4OWFjZWNhMThkYzAzNzY0
NjAuLjRlMDQ0M2Y3NDkzNjljOThmYjE4NDIzMWU2NTQzMWE1NmM2M2RlNWYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFn
ZS9GcmFtZVZpZXcuaApAQCAtMjIwLDggKzIyMCw4IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgYWRq
dXN0Vmlld1NpemUoKTsKICAgICAKLSAgICB2b2lkIHNldFZpZXdwb3J0U2l6ZShJbnRTaXplKTsK
LSAgICBJbnRTaXplIHZpZXdwb3J0U2l6ZSgpIGNvbnN0OworICAgIHZvaWQgc2V0Vmlld3BvcnRT
aXplRm9yQ1NTVmlld3BvcnRVbml0cyhJbnRTaXplKTsKKyAgICBJbnRTaXplIHZpZXdwb3J0U2l6
ZUZvckNTU1ZpZXdwb3J0VW5pdHMoKSBjb25zdDsKICAgICAKICAgICB2aXJ0dWFsIEludFJlY3Qg
d2luZG93Q2xpcFJlY3QoYm9vbCBjbGlwVG9Db250ZW50cyA9IHRydWUpIGNvbnN0IG92ZXJyaWRl
OwogICAgIEludFJlY3Qgd2luZG93Q2xpcFJlY3RGb3JGcmFtZU93bmVyKGNvbnN0IEhUTUxGcmFt
ZU93bmVyRWxlbWVudCosIGJvb2wgY2xpcFRvTGF5ZXJDb250ZW50cykgY29uc3Q7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1ZpZXdwb3J0Q29uZmlndXJhdGlvbi5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL1ZpZXdwb3J0Q29uZmlndXJhdGlvbi5jcHAKaW5kZXggYTllOGYzYjBi
OWFhMDVmMjBjMzBhY2JmODU3YjBiZDhkNmYyYWJlMC4uNWEyM2I3YzMzZGZhYTY5OTcwMjBlYjky
MTg2MjIxM2Y4MGZhNjUzOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9WaWV3cG9y
dENvbmZpZ3VyYXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvVmlld3BvcnRDb25m
aWd1cmF0aW9uLmNwcApAQCAtNDYsNiArNDYsOSBAQCBzdGF0aWMgYm9vbCBjb25zdHJhaW50c0Fy
ZUFsbFJlbGF0aXZlKGNvbnN0IFZpZXdwb3J0Q29uZmlndXJhdGlvbjo6UGFyYW1ldGVycyYgYwog
CiBWaWV3cG9ydENvbmZpZ3VyYXRpb246OlZpZXdwb3J0Q29uZmlndXJhdGlvbigpCiAgICAgOiBt
X21pbmltdW1MYXlvdXRTaXplKDEwMjQsIDc2OCkKKyAgICAsIG1fbWluaW11bUxheW91dFNpemVG
b3JNaW5pbWFsVUkobV9taW5pbXVtTGF5b3V0U2l6ZSkKKyAgICAsIG1fdXNlc01pbmltYWxVSShm
YWxzZSkKKyAgICAsIG1fcGFnZURpZEZpbmlzaERvY3VtZW50TG9hZChmYWxzZSkKIHsKICAgICAv
LyBTZXR1cCBhIHJlYXNvbmFibGUgZGVmYXVsdCBjb25maWd1cmF0aW9uIHRvIGF2b2lkIGNvbXB1
dGluZyBpbmZpbml0ZSBzY2FsZS9zaXplcy4KICAgICAvLyBUaG9zZSBhcmUgdGhlIG9yaWdpbmFs
IGlQaG9uZSBjb25maWd1cmF0aW9uLgpAQCAtNzksNyArODIsMjEgQEAgdm9pZCBWaWV3cG9ydENv
bmZpZ3VyYXRpb246OnNldE1pbmltdW1MYXlvdXRTaXplKGNvbnN0IEZsb2F0U2l6ZSYgbWluaW11
bUxheW91dFMKICAgICAgICAgcmV0dXJuOwogCiAgICAgbV9taW5pbXVtTGF5b3V0U2l6ZSA9IG1p
bmltdW1MYXlvdXRTaXplOwotICAgIHVwZGF0ZUNvbmZpZ3VyYXRpb24oKTsKK30KKwordm9pZCBW
aWV3cG9ydENvbmZpZ3VyYXRpb246OnNldE1pbmltdW1MYXlvdXRTaXplRm9yTWluaW1hbFVJKGNv
bnN0IEZsb2F0U2l6ZSYgbWluaW11bUxheW91dFNpemVGb3JNaW5pbWFsVUkpCit7CisgICAgaWYg
KG1fbWluaW11bUxheW91dFNpemVGb3JNaW5pbWFsVUkgPT0gbWluaW11bUxheW91dFNpemVGb3JN
aW5pbWFsVUkpCisgICAgICAgIHJldHVybjsKKworICAgIG1fbWluaW11bUxheW91dFNpemVGb3JN
aW5pbWFsVUkgPSBtaW5pbXVtTGF5b3V0U2l6ZUZvck1pbmltYWxVSTsKK30KKworY29uc3QgRmxv
YXRTaXplJiBWaWV3cG9ydENvbmZpZ3VyYXRpb246OmFjdGl2ZU1pbmltdW1MYXlvdXRTaXplSW5T
Y3JvbGxWaWV3Q29vcmRpbmF0ZXMoKSBjb25zdAoreworICAgIGlmIChtX3VzZXNNaW5pbWFsVUkp
CisgICAgICAgIHJldHVybiBtX21pbmltdW1MYXlvdXRTaXplRm9yTWluaW1hbFVJOworICAgIHJl
dHVybiBtX21pbmltdW1MYXlvdXRTaXplOwogfQogCiB2b2lkIFZpZXdwb3J0Q29uZmlndXJhdGlv
bjo6c2V0Vmlld3BvcnRBcmd1bWVudHMoY29uc3QgVmlld3BvcnRBcmd1bWVudHMmIHZpZXdwb3J0
QXJndW1lbnRzKQpAQCAtOTEsNiArMTA4LDIwIEBAIHZvaWQgVmlld3BvcnRDb25maWd1cmF0aW9u
OjpzZXRWaWV3cG9ydEFyZ3VtZW50cyhjb25zdCBWaWV3cG9ydEFyZ3VtZW50cyYgdmlld3BvCiAg
ICAgdXBkYXRlQ29uZmlndXJhdGlvbigpOwogfQogCit2b2lkIFZpZXdwb3J0Q29uZmlndXJhdGlv
bjo6cmVzZXRNaW5pbWFsVUkoKQoreworICAgIG1fdXNlc01pbmltYWxVSSA9IGZhbHNlOworICAg
IG1fcGFnZURpZEZpbmlzaERvY3VtZW50TG9hZCA9IGZhbHNlOworfQorCit2b2lkIFZpZXdwb3J0
Q29uZmlndXJhdGlvbjo6ZGlkRmluaXNoRG9jdW1lbnRMb2FkKCkKK3sKKyAgICBpZiAobV9wYWdl
RGlkRmluaXNoRG9jdW1lbnRMb2FkKQorICAgICAgICByZXR1cm47CisKKyAgICBtX3BhZ2VEaWRG
aW5pc2hEb2N1bWVudExvYWQgPSB0cnVlOworfQorCiBJbnRTaXplIFZpZXdwb3J0Q29uZmlndXJh
dGlvbjo6bGF5b3V0U2l6ZSgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIEludFNpemUobGF5b3V0V2lk
dGgoKSwgbGF5b3V0SGVpZ2h0KCkpOwpAQCAtMTA3LDE1ICsxMzgsMTYgQEAgZG91YmxlIFZpZXdw
b3J0Q29uZmlndXJhdGlvbjo6aW5pdGlhbFNjYWxlKCkgY29uc3QKIAogICAgIC8vIElmIG5vdCwg
aXQgaXMgdXAgdG8gdXMgdG8gZGV0ZXJtaW5lIHRoZSBpbml0aWFsIHNjYWxlLgogICAgIC8vIFdl
IHdhbnQgYSBzY2FsZSBzbWFsbCBlbm91Z2ggdG8gZml0IHRoZSBkb2N1bWVudCB3aWR0aC13aXNl
LgorICAgIGNvbnN0IEZsb2F0U2l6ZSYgbWluaW11bUxheW91dFNpemUgPSBhY3RpdmVNaW5pbXVt
TGF5b3V0U2l6ZUluU2Nyb2xsVmlld0Nvb3JkaW5hdGVzKCk7CiAgICAgZG91YmxlIHdpZHRoID0g
bV9jb250ZW50U2l6ZS53aWR0aCgpID4gMCA/IG1fY29udGVudFNpemUud2lkdGgoKSA6IGxheW91
dFdpZHRoKCk7CiAgICAgZG91YmxlIGluaXRpYWxTY2FsZSA9IDA7CiAgICAgaWYgKHdpZHRoID4g
MCkKLSAgICAgICAgaW5pdGlhbFNjYWxlID0gbV9taW5pbXVtTGF5b3V0U2l6ZS53aWR0aCgpIC8g
d2lkdGg7CisgICAgICAgIGluaXRpYWxTY2FsZSA9IG1pbmltdW1MYXlvdXRTaXplLndpZHRoKCkg
LyB3aWR0aDsKIAogICAgIC8vIFByZXZlbnQgdGhlIGludGlhbCBzY2FsZSBmcm9tIHNocmlua2lu
ZyB0byBhIGhlaWdodCBzbWFsbGVyIHRoYW4gb3VyIHZpZXcncyBtaW5pbXVtIGhlaWdodC4KICAg
ICBkb3VibGUgaGVpZ2h0ID0gbV9jb250ZW50U2l6ZS5oZWlnaHQoKSA+IDAgPyBtX2NvbnRlbnRT
aXplLmhlaWdodCgpIDogbGF5b3V0SGVpZ2h0KCk7Ci0gICAgaWYgKGhlaWdodCA+IDAgJiYgaGVp
Z2h0ICogaW5pdGlhbFNjYWxlIDwgbV9taW5pbXVtTGF5b3V0U2l6ZS5oZWlnaHQoKSkKLSAgICAg
ICAgaW5pdGlhbFNjYWxlID0gbV9taW5pbXVtTGF5b3V0U2l6ZS5oZWlnaHQoKSAvIGhlaWdodDsK
KyAgICBpZiAoaGVpZ2h0ID4gMCAmJiBoZWlnaHQgKiBpbml0aWFsU2NhbGUgPCBtaW5pbXVtTGF5
b3V0U2l6ZS5oZWlnaHQoKSkKKyAgICAgICAgaW5pdGlhbFNjYWxlID0gbWluaW11bUxheW91dFNp
emUuaGVpZ2h0KCkgLyBoZWlnaHQ7CiAgICAgcmV0dXJuIHN0ZDo6bWluKHN0ZDo6bWF4KGluaXRp
YWxTY2FsZSwgbV9jb25maWd1cmF0aW9uLm1pbmltdW1TY2FsZSksIG1fY29uZmlndXJhdGlvbi5t
YXhpbXVtU2NhbGUpOwogfQogCkBAIC0xMjgsMTMgKzE2MCwxNCBAQCBkb3VibGUgVmlld3BvcnRD
b25maWd1cmF0aW9uOjptaW5pbXVtU2NhbGUoKSBjb25zdAogICAgIC8vIElmIG5vdCwgd2Ugc3Rp
bGwgbmVlZCB0byBzYW5pdHkgY2hlY2sgb3VyIHZhbHVlLgogICAgIGRvdWJsZSBtaW5pbXVtU2Nh
bGUgPSBtX2NvbmZpZ3VyYXRpb24ubWluaW11bVNjYWxlOwogCisgICAgY29uc3QgRmxvYXRTaXpl
JiBtaW5pbXVtTGF5b3V0U2l6ZSA9IGFjdGl2ZU1pbmltdW1MYXlvdXRTaXplSW5TY3JvbGxWaWV3
Q29vcmRpbmF0ZXMoKTsKICAgICBkb3VibGUgY29udGVudFdpZHRoID0gbV9jb250ZW50U2l6ZS53
aWR0aCgpOwotICAgIGlmIChjb250ZW50V2lkdGggPiAwICYmIGNvbnRlbnRXaWR0aCAqIG1pbmlt
dW1TY2FsZSA8IG1fbWluaW11bUxheW91dFNpemUud2lkdGgoKSkKLSAgICAgICAgbWluaW11bVNj
YWxlID0gbV9taW5pbXVtTGF5b3V0U2l6ZS53aWR0aCgpIC8gY29udGVudFdpZHRoOworICAgIGlm
IChjb250ZW50V2lkdGggPiAwICYmIGNvbnRlbnRXaWR0aCAqIG1pbmltdW1TY2FsZSA8IG1pbmlt
dW1MYXlvdXRTaXplLndpZHRoKCkpCisgICAgICAgIG1pbmltdW1TY2FsZSA9IG1pbmltdW1MYXlv
dXRTaXplLndpZHRoKCkgLyBjb250ZW50V2lkdGg7CiAKICAgICBkb3VibGUgY29udGVudEhlaWdo
dCA9IG1fY29udGVudFNpemUuaGVpZ2h0KCk7Ci0gICAgaWYgKGNvbnRlbnRIZWlnaHQgPiAwICYm
IGNvbnRlbnRIZWlnaHQgKiBtaW5pbXVtU2NhbGUgPCBtX21pbmltdW1MYXlvdXRTaXplLmhlaWdo
dCgpKQotICAgICAgICBtaW5pbXVtU2NhbGUgPSBtX21pbmltdW1MYXlvdXRTaXplLmhlaWdodCgp
IC8gY29udGVudEhlaWdodDsKKyAgICBpZiAoY29udGVudEhlaWdodCA+IDAgJiYgY29udGVudEhl
aWdodCAqIG1pbmltdW1TY2FsZSA8IG1pbmltdW1MYXlvdXRTaXplLmhlaWdodCgpKQorICAgICAg
ICBtaW5pbXVtU2NhbGUgPSBtaW5pbXVtTGF5b3V0U2l6ZS5oZWlnaHQoKSAvIGNvbnRlbnRIZWln
aHQ7CiAKICAgICBtaW5pbXVtU2NhbGUgPSBzdGQ6Om1pbihzdGQ6Om1heChtaW5pbXVtU2NhbGUs
IG1fY29uZmlndXJhdGlvbi5taW5pbXVtU2NhbGUpLCBtX2NvbmZpZ3VyYXRpb24ubWF4aW11bVNj
YWxlKTsKIApAQCAtMjQzLDc2ICsyNzYsODMgQEAgdm9pZCBWaWV3cG9ydENvbmZpZ3VyYXRpb246
OnVwZGF0ZUNvbmZpZ3VyYXRpb24oKQogCiAgICAgaWYgKHZpZXdwb3J0QXJndW1lbnRVc2VyWm9v
bUlzU2V0KG1fdmlld3BvcnRBcmd1bWVudHMudXNlclpvb20pKQogICAgICAgICBtX2NvbmZpZ3Vy
YXRpb24uYWxsb3dzVXNlclNjYWxpbmcgPSBtX3ZpZXdwb3J0QXJndW1lbnRzLnVzZXJab29tICE9
IDAuOworCisjaWYgUExBVEZPUk0oSU9TKQorICAgIGlmICghbV9wYWdlRGlkRmluaXNoRG9jdW1l
bnRMb2FkKQorICAgICAgICBtX3VzZXNNaW5pbWFsVUkgPSBtX3VzZXNNaW5pbWFsVUkgfHwgbV92
aWV3cG9ydEFyZ3VtZW50cy5taW5pbWFsVUk7CisjZW5kaWYKIH0KIAogaW50IFZpZXdwb3J0Q29u
ZmlndXJhdGlvbjo6bGF5b3V0V2lkdGgoKSBjb25zdAogewogICAgIEFTU0VSVCghY29uc3RyYWlu
dHNBcmVBbGxSZWxhdGl2ZShtX2NvbmZpZ3VyYXRpb24pKTsKIAorICAgIGNvbnN0IEZsb2F0U2l6
ZSYgbWluaW11bUxheW91dFNpemUgPSBhY3RpdmVNaW5pbXVtTGF5b3V0U2l6ZUluU2Nyb2xsVmll
d0Nvb3JkaW5hdGVzKCk7CiAgICAgaWYgKG1fY29uZmlndXJhdGlvbi53aWR0aElzU2V0KSB7CiAg
ICAgICAgIC8vIElmIHdlIHNjYWxlIHRvIGZpdCwgdGhlbiBhY2NlcHQgdGhlIHZpZXdwb3J0IHdp
ZHRoIHdpdGggc2FuaXR5IGNoZWNraW5nLgogICAgICAgICBpZiAoIW1fY29uZmlndXJhdGlvbi5p
bml0aWFsU2NhbGVJc1NldCkgewogICAgICAgICAgICAgZG91YmxlIG1heGltdW1TY2FsZSA9IHRo
aXMtPm1heGltdW1TY2FsZSgpOwogICAgICAgICAgICAgZG91YmxlIG1heGltdW1Db250ZW50V2lk
dGhJblZpZXdwb3J0Q29vcmRpbmF0ZSA9IG1heGltdW1TY2FsZSAqIG1fY29uZmlndXJhdGlvbi53
aWR0aDsKLSAgICAgICAgICAgIGlmIChtYXhpbXVtQ29udGVudFdpZHRoSW5WaWV3cG9ydENvb3Jk
aW5hdGUgPCBtX21pbmltdW1MYXlvdXRTaXplLndpZHRoKCkpIHsKKyAgICAgICAgICAgIGlmICht
YXhpbXVtQ29udGVudFdpZHRoSW5WaWV3cG9ydENvb3JkaW5hdGUgPCBtaW5pbXVtTGF5b3V0U2l6
ZS53aWR0aCgpKSB7CiAgICAgICAgICAgICAgICAgLy8gVGhlIGNvbnRlbnQgem9vbWVkIHRvIG1h
eFNjYWxlIGRvZXMgbm90IGZpdCB0aGUgdGhlIHZpZXcuIFJldHVybiB0aGUgbWluaW11bSB3aWR0
aAogICAgICAgICAgICAgICAgIC8vIHNhdGlzZnlpbmcgdGhlIGNvbnN0cmFpbnQgbWF4aW11bVNj
YWxlLgotICAgICAgICAgICAgICAgIHJldHVybiBzdGQ6OnJvdW5kKG1fbWluaW11bUxheW91dFNp
emUud2lkdGgoKSAvIG1heGltdW1TY2FsZSk7CisgICAgICAgICAgICAgICAgcmV0dXJuIHN0ZDo6
cm91bmQobWluaW11bUxheW91dFNpemUud2lkdGgoKSAvIG1heGltdW1TY2FsZSk7CiAgICAgICAg
ICAgICB9CiAgICAgICAgICAgICByZXR1cm4gc3RkOjpyb3VuZChtX2NvbmZpZ3VyYXRpb24ud2lk
dGgpOwogICAgICAgICB9CiAKICAgICAgICAgLy8gSWYgbm90LCBtYWtlIHN1cmUgdGhlIHZpZXdw
b3J0IHdpZHRoIGFuZCBpbml0aWFsIHNjYWxlIGNhbiBjby1leGlzdC4KICAgICAgICAgZG91Ymxl
IGluaXRpYWxDb250ZW50V2lkdGhJblZpZXdwb3J0Q29vcmRpbmF0ZSA9IG1fY29uZmlndXJhdGlv
bi53aWR0aCAqIG1fY29uZmlndXJhdGlvbi5pbml0aWFsU2NhbGU7Ci0gICAgICAgIGlmIChpbml0
aWFsQ29udGVudFdpZHRoSW5WaWV3cG9ydENvb3JkaW5hdGUgPCBtX21pbmltdW1MYXlvdXRTaXpl
LndpZHRoKCkpIHsKKyAgICAgICAgaWYgKGluaXRpYWxDb250ZW50V2lkdGhJblZpZXdwb3J0Q29v
cmRpbmF0ZSA8IG1pbmltdW1MYXlvdXRTaXplLndpZHRoKCkpIHsKICAgICAgICAgICAgIC8vIFRo
ZSBzcGVjaWZpZWQgd2lkdGggZG9lcyBub3QgZml0IGluIHZpZXdwb3J0LiBSZXR1cm4gdGhlIG1p
bmltdW0gd2lkdGggdGhhdCBzYXRpc2Z5IHRoZSBpbml0aWFsU2NhbGUgY29uc3RyYWludC4KLSAg
ICAgICAgICAgIHJldHVybiBzdGQ6OnJvdW5kKG1fbWluaW11bUxheW91dFNpemUud2lkdGgoKSAv
IG1fY29uZmlndXJhdGlvbi5pbml0aWFsU2NhbGUpOworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6
cm91bmQobWluaW11bUxheW91dFNpemUud2lkdGgoKSAvIG1fY29uZmlndXJhdGlvbi5pbml0aWFs
U2NhbGUpOwogICAgICAgICB9CiAgICAgICAgIHJldHVybiBzdGQ6OnJvdW5kKG1fY29uZmlndXJh
dGlvbi53aWR0aCk7CiAgICAgfQogCiAgICAgLy8gSWYgdGhlIHBhZ2UgaGFzIGEgcmVhbCBzY2Fs
ZSwgdGhlbiBqdXN0IHJldHVybiB0aGUgbWluaW11bSBzaXplIG92ZXIgdGhlIGluaXRpYWwgc2Nh
bGUuCiAgICAgaWYgKG1fY29uZmlndXJhdGlvbi5pbml0aWFsU2NhbGVJc1NldCAmJiAhbV9jb25m
aWd1cmF0aW9uLmhlaWdodElzU2V0KQotICAgICAgICByZXR1cm4gc3RkOjpyb3VuZChtX21pbmlt
dW1MYXlvdXRTaXplLndpZHRoKCkgLyBtX2NvbmZpZ3VyYXRpb24uaW5pdGlhbFNjYWxlKTsKKyAg
ICAgICAgcmV0dXJuIHN0ZDo6cm91bmQobWluaW11bUxheW91dFNpemUud2lkdGgoKSAvIG1fY29u
ZmlndXJhdGlvbi5pbml0aWFsU2NhbGUpOwogCi0gICAgaWYgKG1fbWluaW11bUxheW91dFNpemUu
aGVpZ2h0KCkgPiAwKQotICAgICAgICByZXR1cm4gc3RkOjpyb3VuZChtX21pbmltdW1MYXlvdXRT
aXplLndpZHRoKCkgKiBsYXlvdXRIZWlnaHQoKSAvIG1fbWluaW11bUxheW91dFNpemUuaGVpZ2h0
KCkpOwotICAgIHJldHVybiBtX21pbmltdW1MYXlvdXRTaXplLndpZHRoKCk7CisgICAgaWYgKG1p
bmltdW1MYXlvdXRTaXplLmhlaWdodCgpID4gMCkKKyAgICAgICAgcmV0dXJuIHN0ZDo6cm91bmQo
bWluaW11bUxheW91dFNpemUud2lkdGgoKSAqIGxheW91dEhlaWdodCgpIC8gbWluaW11bUxheW91
dFNpemUuaGVpZ2h0KCkpOworICAgIHJldHVybiBtaW5pbXVtTGF5b3V0U2l6ZS53aWR0aCgpOwog
fQogCiBpbnQgVmlld3BvcnRDb25maWd1cmF0aW9uOjpsYXlvdXRIZWlnaHQoKSBjb25zdAogewog
ICAgIEFTU0VSVCghY29uc3RyYWludHNBcmVBbGxSZWxhdGl2ZShtX2NvbmZpZ3VyYXRpb24pKTsK
IAorICAgIGNvbnN0IEZsb2F0U2l6ZSYgbWluaW11bUxheW91dFNpemUgPSBhY3RpdmVNaW5pbXVt
TGF5b3V0U2l6ZUluU2Nyb2xsVmlld0Nvb3JkaW5hdGVzKCk7CiAgICAgaWYgKG1fY29uZmlndXJh
dGlvbi5oZWlnaHRJc1NldCkgewogICAgICAgICAvLyBJZiB3ZSBzY2FsZSB0byBmaXQsIHRoZW4g
YWNjZXB0IHRoZSB2aWV3cG9ydCBoZWlnaHQgd2l0aCBzYW5pdHkgY2hlY2tpbmcuCiAgICAgICAg
IGlmICghbV9jb25maWd1cmF0aW9uLmluaXRpYWxTY2FsZUlzU2V0KSB7CiAgICAgICAgICAgICBk
b3VibGUgbWF4aW11bVNjYWxlID0gdGhpcy0+bWF4aW11bVNjYWxlKCk7CiAgICAgICAgICAgICBk
b3VibGUgbWF4aW11bUNvbnRlbnRIZWlnaHRJblZpZXdwb3J0Q29vcmRpbmF0ZSA9IG1heGltdW1T
Y2FsZSAqIG1fY29uZmlndXJhdGlvbi5oZWlnaHQ7Ci0gICAgICAgICAgICBpZiAobWF4aW11bUNv
bnRlbnRIZWlnaHRJblZpZXdwb3J0Q29vcmRpbmF0ZSA8IG1fbWluaW11bUxheW91dFNpemUuaGVp
Z2h0KCkpIHsKKyAgICAgICAgICAgIGlmIChtYXhpbXVtQ29udGVudEhlaWdodEluVmlld3BvcnRD
b29yZGluYXRlIDwgbWluaW11bUxheW91dFNpemUuaGVpZ2h0KCkpIHsKICAgICAgICAgICAgICAg
ICAvLyBUaGUgY29udGVudCB6b29tZWQgdG8gbWF4U2NhbGUgZG9lcyBub3QgZml0IHRoZSB0aGUg
dmlldy4gUmV0dXJuIHRoZSBtaW5pbXVtIGhlaWdodCB0aGF0CiAgICAgICAgICAgICAgICAgLy8g
c2F0aXNmeSB0aGUgY29uc3RyYWludCBtYXhpbXVtU2NhbGUuCi0gICAgICAgICAgICAgICAgcmV0
dXJuIHN0ZDo6cm91bmQobV9taW5pbXVtTGF5b3V0U2l6ZS5oZWlnaHQoKSAvIG1heGltdW1TY2Fs
ZSk7CisgICAgICAgICAgICAgICAgcmV0dXJuIHN0ZDo6cm91bmQobWluaW11bUxheW91dFNpemUu
aGVpZ2h0KCkgLyBtYXhpbXVtU2NhbGUpOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgcmV0
dXJuIHN0ZDo6cm91bmQobV9jb25maWd1cmF0aW9uLmhlaWdodCk7CiAgICAgICAgIH0KIAogICAg
ICAgICAvLyBJZiBub3QsIG1ha2Ugc3VyZSB0aGUgdmlld3BvcnQgd2lkdGggYW5kIGluaXRpYWwg
c2NhbGUgY2FuIGNvLWV4aXN0LgogICAgICAgICBkb3VibGUgaW5pdGlhbENvbnRlbnRIZWlnaHRJ
blZpZXdwb3J0Q29vcmRpbmF0ZSA9IG1fY29uZmlndXJhdGlvbi5oZWlnaHQgKiBtX2NvbmZpZ3Vy
YXRpb24uaW5pdGlhbFNjYWxlOwotICAgICAgICBpZiAoaW5pdGlhbENvbnRlbnRIZWlnaHRJblZp
ZXdwb3J0Q29vcmRpbmF0ZSA8IG1fbWluaW11bUxheW91dFNpemUuaGVpZ2h0KCkpIHsKKyAgICAg
ICAgaWYgKGluaXRpYWxDb250ZW50SGVpZ2h0SW5WaWV3cG9ydENvb3JkaW5hdGUgPCBtaW5pbXVt
TGF5b3V0U2l6ZS5oZWlnaHQoKSkgewogICAgICAgICAgICAgLy8gVGhlIHNwZWNpZmllZCB3aWR0
aCBkb2VzIG5vdCBmaXQgaW4gdmlld3BvcnQuIFJldHVybiB0aGUgbWluaW11bSBoZWlnaHQgdGhh
dCBzYXRpc2Z5IHRoZSBpbml0aWFsU2NhbGUgY29uc3RyYWludC4KLSAgICAgICAgICAgIHJldHVy
biBzdGQ6OnJvdW5kKG1fbWluaW11bUxheW91dFNpemUuaGVpZ2h0KCkgLyBtX2NvbmZpZ3VyYXRp
b24uaW5pdGlhbFNjYWxlKTsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6OnJvdW5kKG1pbmltdW1M
YXlvdXRTaXplLmhlaWdodCgpIC8gbV9jb25maWd1cmF0aW9uLmluaXRpYWxTY2FsZSk7CiAgICAg
ICAgIH0KICAgICAgICAgcmV0dXJuIHN0ZDo6cm91bmQobV9jb25maWd1cmF0aW9uLmhlaWdodCk7
CiAgICAgfQogCiAgICAgLy8gSWYgdGhlIHBhZ2UgaGFzIGEgcmVhbCBzY2FsZSwgdGhlbiBqdXN0
IHJldHVybiB0aGUgbWluaW11bSBzaXplIG92ZXIgdGhlIGluaXRpYWwgc2NhbGUuCiAgICAgaWYg
KG1fY29uZmlndXJhdGlvbi5pbml0aWFsU2NhbGVJc1NldCAmJiAhbV9jb25maWd1cmF0aW9uLndp
ZHRoSXNTZXQpCi0gICAgICAgIHJldHVybiBzdGQ6OnJvdW5kKG1fbWluaW11bUxheW91dFNpemUu
aGVpZ2h0KCkgLyBtX2NvbmZpZ3VyYXRpb24uaW5pdGlhbFNjYWxlKTsKKyAgICAgICAgcmV0dXJu
IHN0ZDo6cm91bmQobWluaW11bUxheW91dFNpemUuaGVpZ2h0KCkgLyBtX2NvbmZpZ3VyYXRpb24u
aW5pdGlhbFNjYWxlKTsKIAotICAgIGlmIChtX21pbmltdW1MYXlvdXRTaXplLndpZHRoKCkgPiAw
KQotICAgICAgICByZXR1cm4gc3RkOjpyb3VuZChtX21pbmltdW1MYXlvdXRTaXplLmhlaWdodCgp
ICogbGF5b3V0V2lkdGgoKSAvIG1fbWluaW11bUxheW91dFNpemUud2lkdGgoKSk7Ci0gICAgcmV0
dXJuIG1fbWluaW11bUxheW91dFNpemUuaGVpZ2h0KCk7CisgICAgaWYgKG1pbmltdW1MYXlvdXRT
aXplLndpZHRoKCkgPiAwKQorICAgICAgICByZXR1cm4gc3RkOjpyb3VuZChtaW5pbXVtTGF5b3V0
U2l6ZS5oZWlnaHQoKSAqIGxheW91dFdpZHRoKCkgLyBtaW5pbXVtTGF5b3V0U2l6ZS53aWR0aCgp
KTsKKyAgICByZXR1cm4gbWluaW11bUxheW91dFNpemUuaGVpZ2h0KCk7CiB9CiAKICNpZm5kZWYg
TkRFQlVHCkBAIC00MzUsNiArNDc1LDggQEAgQ1N0cmluZyBWaWV3cG9ydENvbmZpZ3VyYXRpb246
OmRlc2NyaXB0aW9uKCkgY29uc3QKIAogICAgIGR1bXBQcm9wZXJ0eSh0cywgImNvbnRlbnRTaXpl
IiwgbV9jb250ZW50U2l6ZSk7CiAgICAgZHVtcFByb3BlcnR5KHRzLCAibWluaW11bUxheW91dFNp
emUiLCBtX21pbmltdW1MYXlvdXRTaXplKTsKKyAgICBkdW1wUHJvcGVydHkodHMsICJtaW5pbXVt
TGF5b3V0U2l6ZUZvck1pbmltYWxVSSIsIG1fbWluaW11bUxheW91dFNpemVGb3JNaW5pbWFsVUkp
OworICAgIHRzIDw8ICIodXNlcyBtaW5pbWFsIFVJICIgPDwgbV91c2VzTWluaW1hbFVJIDw8ICIp
IjsKIAogICAgIHRzIDw8ICJcbiI7CiAgICAgdHMuaW5jcmVhc2VJbmRlbnQoKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvVmlld3BvcnRDb25maWd1cmF0aW9uLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL1ZpZXdwb3J0Q29uZmlndXJhdGlvbi5oCmluZGV4IGVhYTViZjQ0OGUwNjFm
N2NkMGNhN2Q3Y2E5MWNlNzJkZjU2NDllNjcuLmMyMjZiMDNlMWZjMzM0ZWViMTFmZGU3NTE5Y2Qw
YjFkMzE2MmVjOWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvVmlld3BvcnRDb25m
aWd1cmF0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9WaWV3cG9ydENvbmZpZ3VyYXRp
b24uaApAQCAtNzQsMTQgKzc0LDIzIEBAIHB1YmxpYzoKICAgICBjb25zdCBGbG9hdFNpemUmIG1p
bmltdW1MYXlvdXRTaXplKCkgY29uc3QgeyByZXR1cm4gbV9taW5pbXVtTGF5b3V0U2l6ZTsgfQog
ICAgIHZvaWQgc2V0TWluaW11bUxheW91dFNpemUoY29uc3QgRmxvYXRTaXplJik7CiAKKyAgICBj
b25zdCBGbG9hdFNpemUmIG1pbmltdW1MYXlvdXRTaXplRm9yTWluaW1hbFVJKCkgY29uc3QgeyBy
ZXR1cm4gbV9taW5pbXVtTGF5b3V0U2l6ZUZvck1pbmltYWxVSS5pc0VtcHR5KCkgPyBtX21pbmlt
dW1MYXlvdXRTaXplIDogbV9taW5pbXVtTGF5b3V0U2l6ZUZvck1pbmltYWxVSTsgfQorICAgIHZv
aWQgc2V0TWluaW11bUxheW91dFNpemVGb3JNaW5pbWFsVUkoY29uc3QgRmxvYXRTaXplJik7CisK
KyAgICBjb25zdCBGbG9hdFNpemUmIGFjdGl2ZU1pbmltdW1MYXlvdXRTaXplSW5TY3JvbGxWaWV3
Q29vcmRpbmF0ZXMoKSBjb25zdDsKKwogICAgIGNvbnN0IFZpZXdwb3J0QXJndW1lbnRzJiB2aWV3
cG9ydEFyZ3VtZW50cygpIGNvbnN0IHsgcmV0dXJuIG1fdmlld3BvcnRBcmd1bWVudHM7IH0KICAg
ICB2b2lkIHNldFZpZXdwb3J0QXJndW1lbnRzKGNvbnN0IFZpZXdwb3J0QXJndW1lbnRzJik7CiAK
KyAgICB2b2lkIHJlc2V0TWluaW1hbFVJKCk7CisgICAgdm9pZCBkaWRGaW5pc2hEb2N1bWVudExv
YWQoKTsKKwogICAgIEludFNpemUgbGF5b3V0U2l6ZSgpIGNvbnN0OwogICAgIGRvdWJsZSBpbml0
aWFsU2NhbGUoKSBjb25zdDsKICAgICBkb3VibGUgbWluaW11bVNjYWxlKCkgY29uc3Q7CiAgICAg
ZG91YmxlIG1heGltdW1TY2FsZSgpIGNvbnN0IHsgcmV0dXJuIG1fY29uZmlndXJhdGlvbi5tYXhp
bXVtU2NhbGU7IH0KICAgICBib29sIGFsbG93c1VzZXJTY2FsaW5nKCkgY29uc3QgeyByZXR1cm4g
bV9jb25maWd1cmF0aW9uLmFsbG93c1VzZXJTY2FsaW5nOyB9CisgICAgYm9vbCB1c2VzTWluaW1h
bFVJKCkgY29uc3QgeyByZXR1cm4gbV91c2VzTWluaW1hbFVJOyB9CiAKICAgICBzdGF0aWMgUGFy
YW1ldGVycyB3ZWJwYWdlUGFyYW1ldGVycygpOwogICAgIHN0YXRpYyBQYXJhbWV0ZXJzIHRleHRE
b2N1bWVudFBhcmFtZXRlcnMoKTsKQEAgLTEwMiw3ICsxMTEsMTEgQEAgcHJpdmF0ZToKICAgICBQ
YXJhbWV0ZXJzIG1fZGVmYXVsdENvbmZpZ3VyYXRpb247CiAgICAgSW50U2l6ZSBtX2NvbnRlbnRT
aXplOwogICAgIEZsb2F0U2l6ZSBtX21pbmltdW1MYXlvdXRTaXplOworICAgIEZsb2F0U2l6ZSBt
X21pbmltdW1MYXlvdXRTaXplRm9yTWluaW1hbFVJOwogICAgIFZpZXdwb3J0QXJndW1lbnRzIG1f
dmlld3BvcnRBcmd1bWVudHM7CisKKyAgICBib29sIG1fdXNlc01pbmltYWxVSTsKKyAgICBib29s
IG1fcGFnZURpZEZpbmlzaERvY3VtZW50TG9hZDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWaWV3LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWaWV3LmNwcAppbmRleCA1ZDdkNDFhNTli
ZGEzNzY4OWZkYWU4ZjM2NWM2YWZkMGYxMWU2NDFkLi41NmM5ODhjYzUyODA5ODIwZGM2ODFlY2M5
YzhlZWJkZTE1ZjE4NjhkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyVmlldy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclZpZXcuY3Bw
CkBAIC0xMTg2LDkgKzExODYsOSBAQCBib29sIFJlbmRlclZpZXc6OnNob3VsZERpc2FibGVMYXlv
dXRTdGF0ZUZvclN1YnRyZWUoUmVuZGVyT2JqZWN0KiByZW5kZXJlcikgY29ucwogICAgIHJldHVy
biBmYWxzZTsKIH0KIAotSW50U2l6ZSBSZW5kZXJWaWV3Ojp2aWV3cG9ydFNpemUoKSBjb25zdAor
SW50U2l6ZSBSZW5kZXJWaWV3Ojp2aWV3cG9ydFNpemVGb3JDU1NWaWV3cG9ydFVuaXRzKCkgY29u
c3QKIHsKLSAgICByZXR1cm4gZnJhbWVWaWV3KCkudmlld3BvcnRTaXplKCk7CisgICAgcmV0dXJu
IGZyYW1lVmlldygpLnZpZXdwb3J0U2l6ZUZvckNTU1ZpZXdwb3J0VW5pdHMoKTsKIH0KIAogdm9p
ZCBSZW5kZXJWaWV3Ojp1cGRhdGVIaXRUZXN0UmVzdWx0KEhpdFRlc3RSZXN1bHQmIHJlc3VsdCwg
Y29uc3QgTGF5b3V0UG9pbnQmIHBvaW50KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlclZpZXcuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWaWV3
LmgKaW5kZXggY2FkZjdiZDVlNDA4YjZmOTU0ZjdjNzZhMDMxMzY2ODQwZWE0ZjE0OS4uMTI1YTE5
YjgxNzZiMzIyMmJhYmNmNjg5OGI5ZTU4MjQwNzkyODI2MyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlclZpZXcuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyVmlldy5oCkBAIC0yMDUsNyArMjA1LDcgQEAgcHVibGljOgogCiAgICAgSW50ZXJ2
YWxBcmVuYSogaW50ZXJ2YWxBcmVuYSgpOwogCi0gICAgSW50U2l6ZSB2aWV3cG9ydFNpemUoKSBj
b25zdDsKKyAgICBJbnRTaXplIHZpZXdwb3J0U2l6ZUZvckNTU1ZpZXdwb3J0VW5pdHMoKSBjb25z
dDsKIAogICAgIHZvaWQgc2V0UmVuZGVyUXVvdGVIZWFkKFJlbmRlclF1b3RlKiBoZWFkKSB7IG1f
cmVuZGVyUXVvdGVIZWFkID0gaGVhZDsgfQogICAgIFJlbmRlclF1b3RlKiByZW5kZXJRdW90ZUhl
YWQoKSBjb25zdCB7IHJldHVybiBtX3JlbmRlclF1b3RlSGVhZDsgfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1VJRGVsZWdhdGVQcml2YXRlLmggYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLVUlEZWxlZ2F0ZVByaXZhdGUuaApp
bmRleCAzOWE4Zjg2ZGM2MWUxOTQ4MjBiZGJhNDAzODI0NmQwYTI2MjY5OWNkLi5mM2FjZjE1ZTdl
NmM1MWIwN2Y1NjNkNDNlYTE4NmJiYzA2M2I1NWM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLVUlEZWxlZ2F0ZVByaXZhdGUuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLVUlEZWxlZ2F0ZVByaXZhdGUuaApAQCAtMzYs
NiArMzYsNyBAQAogI2lmIFRBUkdFVF9PU19JUEhPTkUKIC0gKE5TQXJyYXkgKilfd2ViVmlldzoo
V0tXZWJWaWV3ICopd2ViVmlldyBhY3Rpb25zRm9yRWxlbWVudDooX1dLQWN0aXZhdGVkRWxlbWVu
dEluZm8gKillbGVtZW50IGRlZmF1bHRBY3Rpb25zOihOU0FycmF5ICopZGVmYXVsdEFjdGlvbnM7
CiAtICh2b2lkKV93ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IGRpZE5vdEhhbmRsZVRhcEFz
Q2xpY2tBdFBvaW50OihDR1BvaW50KXBvaW50OworLSAodm9pZClfd2ViVmlldzooV0tXZWJWaWV3
ICopd2ViVmlldyB1c2VzTWluaW1hbFVJOihCT09MKXdhbnRNaW5pbWFsVUk7CiAjZW5kaWYKIAog
QGVuZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dl
YlZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5t
bQppbmRleCBiYWM4NzBhZDFhZWQ3MTI1YmIwNmU3ZjE5YTVmNzcyOTJkZjUxNjQ0Li42NmU1YjA3
ZGExN2I5OTNhNjFiMWEzNzVlYjE3MTYyYzViN2FjY2ZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQpAQCAtNDgsNiArNDgsNyBAQAogI2lt
cG9ydCAiV0tQcmVmZXJlbmNlc0ludGVybmFsLmgiCiAjaW1wb3J0ICJXS1Byb2Nlc3NQb29sSW50
ZXJuYWwuaCIKICNpbXBvcnQgIldLVUlEZWxlZ2F0ZS5oIgorI2ltcG9ydCAiV0tVSURlbGVnYXRl
UHJpdmF0ZS5oIgogI2ltcG9ydCAiV0tVc2VyQ29udGVudENvbnRyb2xsZXJJbnRlcm5hbC5oIgog
I2ltcG9ydCAiV0tXZWJWaWV3Q29uZmlndXJhdGlvbkludGVybmFsLmgiCiAjaW1wb3J0ICJXS1dl
YlZpZXdDb250ZW50UHJvdmlkZXIuaCIKQEAgLTEzNSw5ICsxMzYsMTQgQEAgV0tXZWJWaWV3KiBm
cm9tV2ViUGFnZVByb3h5KFdlYktpdDo6V2ViUGFnZVByb3h5JiBwYWdlKQogICAgIFJldGFpblB0
cjxXS1Njcm9sbFZpZXc+IF9zY3JvbGxWaWV3OwogICAgIFJldGFpblB0cjxXS0NvbnRlbnRWaWV3
PiBfY29udGVudFZpZXc7CiAKLSAgICBCT09MIF9oYXNTdGF0aWNNaW5pbXVtTGF5b3V0U2l6ZTsK
KyAgICBCT09MIF9vdmVycmlkZXNNaW5pbXVtTGF5b3V0U2l6ZTsKICAgICBDR1NpemUgX21pbmlt
dW1MYXlvdXRTaXplT3ZlcnJpZGU7CisgICAgQk9PTCBfb3ZlcnJpZGVzTWluaW11bUxheW91dFNp
emVGb3JNaW5pbWFsVUk7CiAgICAgQ0dTaXplIF9taW5pbXVtTGF5b3V0U2l6ZU92ZXJyaWRlRm9y
TWluaW1hbFVJOworICAgIEJPT0wgX292ZXJyaWRlc01heGltdW1Vbm9ic2N1cmVkU2l6ZTsKKyAg
ICBDR1NpemUgX21heGltdW1Vbm9ic2N1cmVkU2l6ZU92ZXJyaWRlOworICAgIEJPT0wgX3VzZXNN
aW5pbWFsVUk7CisgICAgQk9PTCBfbmVlZHNUb05vdGlmeURlbGVnYXRlQWJvdXRNaW5pbWFsVUk7
CiAgICAgQ0dSZWN0IF9pbnB1dFZpZXdCb3VuZHM7CiAgICAgQ0dGbG9hdCBfdmlld3BvcnRNZXRh
VGFnV2lkdGg7CiAKQEAgLTUxOSw5ICs1MjUsMjEgQEAgc3RhdGljIENHRmxvYXQgY29udGVudFpv
b21TY2FsZShXS1dlYlZpZXcqIHdlYlZpZXcpCiAgICAgW19zY3JvbGxWaWV3IHNldEJhY2tncm91
bmRDb2xvcjp1aUJhY2tncm91bmRDb2xvci5nZXQoKV07CiB9CiAKKy0gKHZvaWQpX3NldFVzZXNN
aW5pbWFsVUk6KEJPT0wpdXNlc01pbmltYWxVSQoreworICAgIF91c2VzTWluaW1hbFVJID0gdXNl
c01pbmltYWxVSTsKKyAgICBfbmVlZHNUb05vdGlmeURlbGVnYXRlQWJvdXRNaW5pbWFsVUkgPSBZ
RVM7Cit9CisKKy0gKEJPT0wpX3VzZXNNaW5pbWFsVUkKK3sKKyAgICByZXR1cm4gX3VzZXNNaW5p
bWFsVUk7Cit9CisKIC0gKHZvaWQpX2RpZENvbW1pdExvYWRGb3JNYWluRnJhbWUKIHsKICAgICBf
bmVlZHNSZXNldFZpZXdTdGF0ZUFmdGVyQ29tbWl0TG9hZEZvck1haW5GcmFtZSA9IFlFUzsKKyAg
ICBfdXNlc01pbmltYWxVSSA9IE5POwogfQogCiAtICh2b2lkKV9kaWRDb21taXRMYXllclRyZWU6
KGNvbnN0IFdlYktpdDo6UmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb24mKWxheWVyVHJlZVRyYW5z
YWN0aW9uCkBAIC01NDYsNiArNTY0LDE0IEBAIHN0YXRpYyBDR0Zsb2F0IGNvbnRlbnRab29tU2Nh
bGUoV0tXZWJWaWV3KiB3ZWJWaWV3KQogICAgIGlmIChfZ2VzdHVyZUNvbnRyb2xsZXIpCiAgICAg
ICAgIF9nZXN0dXJlQ29udHJvbGxlci0+c2V0UmVuZGVyVHJlZVNpemUobGF5ZXJUcmVlVHJhbnNh
Y3Rpb24ucmVuZGVyVHJlZVNpemUoKSk7CiAKKyAgICBpZiAoX25lZWRzVG9Ob3RpZnlEZWxlZ2F0
ZUFib3V0TWluaW1hbFVJIHx8IF9uZWVkc1Jlc2V0Vmlld1N0YXRlQWZ0ZXJDb21taXRMb2FkRm9y
TWFpbkZyYW1lKSB7CisgICAgICAgIF9uZWVkc1RvTm90aWZ5RGVsZWdhdGVBYm91dE1pbmltYWxV
SSA9IE5POworCisgICAgICAgIGF1dG8gZGVsZWdhdGUgPSBfdWlEZWxlZ2F0ZS0+ZGVsZWdhdGUo
KTsKKyAgICAgICAgaWYgKFtkZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKF93
ZWJWaWV3OnVzZXNNaW5pbWFsVUk6KV0pCisgICAgICAgICAgICBbc3RhdGljX2Nhc3Q8aWQgPFdL
VUlEZWxlZ2F0ZVByaXZhdGU+PihkZWxlZ2F0ZS5nZXQoKSkgX3dlYlZpZXc6c2VsZiB1c2VzTWlu
aW1hbFVJOl91c2VzTWluaW1hbFVJXTsKKyAgICB9CisKICAgICBpZiAoX25lZWRzUmVzZXRWaWV3
U3RhdGVBZnRlckNvbW1pdExvYWRGb3JNYWluRnJhbWUpIHsKICAgICAgICAgX25lZWRzUmVzZXRW
aWV3U3RhdGVBZnRlckNvbW1pdExvYWRGb3JNYWluRnJhbWUgPSBOTzsKICAgICAgICAgW19zY3Jv
bGxWaWV3IHNldENvbnRlbnRPZmZzZXQ6Q0dQb2ludE1ha2UoLV9vYnNjdXJlZEluc2V0cy5sZWZ0
LCAtX29ic2N1cmVkSW5zZXRzLnRvcCldOwpAQCAtOTI5LDE3ICs5NTUsMTggQEAgc3RhdGljIFdl
YkNvcmU6OkZsb2F0UG9pbnQgY29uc3RyYWluQ29udGVudE9mZnNldChXZWJDb3JlOjpGbG9hdFBv
aW50IGNvbnRlbnRPZmYKICAgICBbX2NvbnRlbnRWaWV3IGRpZFpvb21Ub1NjYWxlOnNjYWxlXTsK
IH0KIAotc3RhdGljIGlubGluZSB2b2lkIHNldFZpZXdwb3J0Q29uZmlndXJhdGlvbk1pbmltdW1M
YXlvdXRTaXplKFdlYktpdDo6V2ViUGFnZVByb3h5JiBwYWdlLCBjb25zdCBDR1NpemUmIHNpemUp
Ci17Ci0gICAgcGFnZS5zZXRWaWV3cG9ydENvbmZpZ3VyYXRpb25NaW5pbXVtTGF5b3V0U2l6ZShX
ZWJDb3JlOjpGbG9hdFNpemUoc2l6ZSkpOwotfQotCiAtICh2b2lkKV9mcmFtZU9yQm91bmRzQ2hh
bmdlZAogewogICAgIENHUmVjdCBib3VuZHMgPSBzZWxmLmJvdW5kczsKKyAgICBpZiAoIV9pc0Fu
aW1hdGluZ1Jlc2l6ZSkgeworICAgICAgICBpZiAoIV9vdmVycmlkZXNNaW5pbXVtTGF5b3V0U2l6
ZSkKKyAgICAgICAgICAgIF9wYWdlLT5zZXRWaWV3cG9ydENvbmZpZ3VyYXRpb25NaW5pbXVtTGF5
b3V0U2l6ZShXZWJDb3JlOjpGbG9hdFNpemUoYm91bmRzLnNpemUpKTsKKyAgICAgICAgaWYgKCFf
b3ZlcnJpZGVzTWluaW11bUxheW91dFNpemVGb3JNaW5pbWFsVUkpCisgICAgICAgICAgICBfcGFn
ZS0+c2V0Vmlld3BvcnRDb25maWd1cmF0aW9uTWluaW11bUxheW91dFNpemVGb3JNaW5pbWFsVUko
V2ViQ29yZTo6RmxvYXRTaXplKGJvdW5kcy5zaXplKSk7CisgICAgICAgIGlmICghX292ZXJyaWRl
c01heGltdW1Vbm9ic2N1cmVkU2l6ZSkKKyAgICAgICAgICAgIF9wYWdlLT5zZXRNYXhpbXVtVW5v
YnNjdXJlZFNpemUoV2ViQ29yZTo6RmxvYXRTaXplKGJvdW5kcy5zaXplKSk7CisgICAgfQogCi0g
ICAgaWYgKCFfaGFzU3RhdGljTWluaW11bUxheW91dFNpemUgJiYgIV9pc0FuaW1hdGluZ1Jlc2l6
ZSkKLSAgICAgICAgc2V0Vmlld3BvcnRDb25maWd1cmF0aW9uTWluaW11bUxheW91dFNpemUoKl9w
YWdlLCBib3VuZHMuc2l6ZSk7CiAgICAgW19zY3JvbGxWaWV3IHNldEZyYW1lOmJvdW5kc107CiAg
ICAgW19jb250ZW50VmlldyBzZXRNaW5pbXVtU2l6ZTpib3VuZHMuc2l6ZV07CiAgICAgW19jdXN0
b21Db250ZW50VmlldyB3ZWJfc2V0TWluaW11bVNpemU6Ym91bmRzLnNpemVdOwpAQCAtMTUwNywy
OCArMTUzNCwzMCBAQCBzdGF0aWMgaW5saW5lIFdlYktpdDo6RmluZE9wdGlvbnMgdG9GaW5kT3B0
aW9ucyhfV0tGaW5kT3B0aW9ucyB3a0ZpbmRPcHRpb25zKQogCiAtIChDR1NpemUpX21pbmltdW1M
YXlvdXRTaXplT3ZlcnJpZGUKIHsKLSAgICBBU1NFUlQoX2hhc1N0YXRpY01pbmltdW1MYXlvdXRT
aXplKTsKKyAgICBBU1NFUlQoX292ZXJyaWRlc01pbmltdW1MYXlvdXRTaXplKTsKICAgICByZXR1
cm4gX21pbmltdW1MYXlvdXRTaXplT3ZlcnJpZGU7CiB9CiAKIC0gKHZvaWQpX3NldE1pbmltdW1M
YXlvdXRTaXplT3ZlcnJpZGU6KENHU2l6ZSltaW5pbXVtTGF5b3V0U2l6ZU92ZXJyaWRlCiB7Ci0g
ICAgX2hhc1N0YXRpY01pbmltdW1MYXlvdXRTaXplID0gWUVTOworICAgIF9vdmVycmlkZXNNaW5p
bXVtTGF5b3V0U2l6ZSA9IFlFUzsKICAgICBfbWluaW11bUxheW91dFNpemVPdmVycmlkZSA9IG1p
bmltdW1MYXlvdXRTaXplT3ZlcnJpZGU7CiAgICAgaWYgKCFfaXNBbmltYXRpbmdSZXNpemUpCi0g
ICAgICAgIHNldFZpZXdwb3J0Q29uZmlndXJhdGlvbk1pbmltdW1MYXlvdXRTaXplKCpfcGFnZSwg
bWluaW11bUxheW91dFNpemVPdmVycmlkZSk7CisgICAgICAgIF9wYWdlLT5zZXRWaWV3cG9ydENv
bmZpZ3VyYXRpb25NaW5pbXVtTGF5b3V0U2l6ZShXZWJDb3JlOjpGbG9hdFNpemUobWluaW11bUxh
eW91dFNpemVPdmVycmlkZSkpOwogfQogCiAtIChDR1NpemUpX21pbmltdW1MYXlvdXRTaXplT3Zl
cnJpZGVGb3JNaW5pbWFsVUkKIHsKKyAgICBBU1NFUlQoX292ZXJyaWRlc01pbmltdW1MYXlvdXRT
aXplRm9yTWluaW1hbFVJKTsKICAgICByZXR1cm4gX21pbmltdW1MYXlvdXRTaXplT3ZlcnJpZGVG
b3JNaW5pbWFsVUk7CiB9CiAKIC0gKHZvaWQpX3NldE1pbmltdW1MYXlvdXRTaXplT3ZlcnJpZGVG
b3JNaW5pbWFsVUk6KENHU2l6ZSlzaXplCiB7CisgICAgX292ZXJyaWRlc01pbmltdW1MYXlvdXRT
aXplRm9yTWluaW1hbFVJID0gWUVTOwogICAgIF9taW5pbXVtTGF5b3V0U2l6ZU92ZXJyaWRlRm9y
TWluaW1hbFVJID0gc2l6ZTsKICAgICBpZiAoIV9pc0FuaW1hdGluZ1Jlc2l6ZSkKLSAgICAgICAg
X3BhZ2UtPnNldE1pbmltdW1MYXlvdXRTaXplRm9yTWluaW1hbFVJKFdlYkNvcmU6OkZsb2F0U2l6
ZShzaXplKSk7CisgICAgICAgIF9wYWdlLT5zZXRWaWV3cG9ydENvbmZpZ3VyYXRpb25NaW5pbXVt
TGF5b3V0U2l6ZUZvck1pbmltYWxVSShXZWJDb3JlOjpGbG9hdFNpemUoc2l6ZSkpOwogfQogCiAt
IChVSUVkZ2VJbnNldHMpX29ic2N1cmVkSW5zZXRzCkBAIC0xNTUxLDYgKzE1ODAsMjQgQEAgc3Rh
dGljIGlubGluZSBXZWJLaXQ6OkZpbmRPcHRpb25zIHRvRmluZE9wdGlvbnMoX1dLRmluZE9wdGlv
bnMgd2tGaW5kT3B0aW9ucykKICAgICBbc2VsZiBfdXBkYXRlVmlzaWJsZUNvbnRlbnRSZWN0c107
CiB9CiAKKy0gKENHU2l6ZSlfbWF4aW11bVVub2JzY3VyZWRTaXplT3ZlcnJpZGUKK3sKKyAgICBB
U1NFUlQoX292ZXJyaWRlc01heGltdW1Vbm9ic2N1cmVkU2l6ZSk7CisgICAgcmV0dXJuIF9tYXhp
bXVtVW5vYnNjdXJlZFNpemVPdmVycmlkZTsKK30KKworLSAodm9pZClfc2V0TWF4aW11bVVub2Jz
Y3VyZWRTaXplT3ZlcnJpZGU6KENHU2l6ZSlzaXplCit7CisgICAgQVNTRVJUKHNpemUud2lkdGgg
PD0gc2VsZi5ib3VuZHMuc2l6ZS53aWR0aCAmJiBzaXplLmhlaWdodCA8PSBzZWxmLmJvdW5kcy5z
aXplLmhlaWdodCk7CisgICAgX292ZXJyaWRlc01heGltdW1Vbm9ic2N1cmVkU2l6ZSA9IFlFUzsK
KyAgICBpZiAoQ0dTaXplRXF1YWxUb1NpemUoX21heGltdW1Vbm9ic2N1cmVkU2l6ZU92ZXJyaWRl
LCBzaXplKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgX21heGltdW1Vbm9ic2N1cmVkU2l6ZU92
ZXJyaWRlID0gc2l6ZTsKKyAgICBpZiAoIV9pc0FuaW1hdGluZ1Jlc2l6ZSkKKyAgICAgICAgX3Bh
Z2UtPnNldE1heGltdW1Vbm9ic2N1cmVkU2l6ZShXZWJDb3JlOjpGbG9hdFNpemUoc2l6ZSkpOwor
fQorCiAtICh2b2lkKV9zZXRCYWNrZ3JvdW5kRXh0ZW5kc0JleW9uZFBhZ2U6KEJPT0wpYmFja2dy
b3VuZEV4dGVuZHMKIHsKICAgICBfcGFnZS0+c2V0QmFja2dyb3VuZEV4dGVuZHNCZXlvbmRQYWdl
KGJhY2tncm91bmRFeHRlbmRzKTsKQEAgLTE1ODMsMTMgKzE2MzAsNyBAQCBzdGF0aWMgaW5saW5l
IFdlYktpdDo6RmluZE9wdGlvbnMgdG9GaW5kT3B0aW9ucyhfV0tGaW5kT3B0aW9ucyB3a0ZpbmRP
cHRpb25zKQogICAgIF9yZXNpemVBbmltYXRpb25WaWV3ID0gYWRvcHROUyhbW1VJVmlldyBhbGxv
Y10gaW5pdF0pOwogICAgIFtfc2Nyb2xsVmlldyBpbnNlcnRTdWJ2aWV3Ol9yZXNpemVBbmltYXRp
b25WaWV3LmdldCgpIGF0SW5kZXg6aW5kZXhPZkNvbnRlbnRWaWV3XTsKICAgICBbX3Jlc2l6ZUFu
aW1hdGlvblZpZXcgYWRkU3VidmlldzpfY29udGVudFZpZXcuZ2V0KCldOwotCi0gICAgQ0dSZWN0
IG9sZEJvdW5kcyA9IHNlbGYuYm91bmRzOwotICAgIENHU2l6ZSBvbGRNaW5pbXVtTGF5b3V0U2l6
ZSA9IG9sZEJvdW5kcy5zaXplOwotICAgIGlmIChfaGFzU3RhdGljTWluaW11bUxheW91dFNpemUp
Ci0gICAgICAgIG9sZE1pbmltdW1MYXlvdXRTaXplID0gX21pbmltdW1MYXlvdXRTaXplT3ZlcnJp
ZGU7CiAgICAgV2ViQ29yZTo6RmxvYXRSZWN0IG9sZFVub2JzY3VyZWRDb250ZW50UmVjdCA9IF9w
YWdlLT51bm9ic2N1cmVkQ29udGVudFJlY3QoKTsKLSAgICBVSUVkZ2VJbnNldHMgb2xkSW5zZXRz
ID0gX29ic2N1cmVkSW5zZXRzOwogCiAgICAgdXBkYXRlQmxvY2soKTsKIApAQCAtMTU5OCwxMyAr
MTYzOSw2IEBAIHN0YXRpYyBpbmxpbmUgV2ViS2l0OjpGaW5kT3B0aW9ucyB0b0ZpbmRPcHRpb25z
KF9XS0ZpbmRPcHRpb25zIHdrRmluZE9wdGlvbnMpCiAKICAgICBDR1JlY3QgbmV3Qm91bmRzID0g
c2VsZi5ib3VuZHM7CiAgICAgQ0dTaXplIG5ld01pbmltdW1MYXlvdXRTaXplID0gbmV3Qm91bmRz
LnNpemU7Ci0gICAgaWYgKF9oYXNTdGF0aWNNaW5pbXVtTGF5b3V0U2l6ZSkKLSAgICAgICAgbmV3
TWluaW11bUxheW91dFNpemUgPSBfbWluaW11bUxheW91dFNpemVPdmVycmlkZTsKLQotICAgIGlm
IChDR1NpemVFcXVhbFRvU2l6ZShuZXdNaW5pbXVtTGF5b3V0U2l6ZSwgb2xkTWluaW11bUxheW91
dFNpemUpCi0gICAgICAgICYmIENHUmVjdEVxdWFsVG9SZWN0KG5ld0JvdW5kcywgb2xkQm91bmRz
KQotICAgICAgICAmJiBVSUVkZ2VJbnNldHNFcXVhbFRvRWRnZUluc2V0cyhvbGRJbnNldHMsIF9v
YnNjdXJlZEluc2V0cykpCi0gICAgICAgIHJldHVybjsKIAogICAgIENHU2l6ZSBjb250ZW50U2l6
ZUluQ29udGVudFZpZXdDb29yZGluYXRlcyA9IFtfY29udGVudFZpZXcgYm91bmRzXS5zaXplOwog
ICAgIFtfc2Nyb2xsVmlldyBzZXRNaW5pbXVtWm9vbVNjYWxlOnN0ZDo6bWluKG5ld01pbmltdW1M
YXlvdXRTaXplLndpZHRoIC8gY29udGVudFNpemVJbkNvbnRlbnRWaWV3Q29vcmRpbmF0ZXMud2lk
dGgsIFtfc2Nyb2xsVmlldyBtaW5pbXVtWm9vbVNjYWxlXSldOwpAQCAtMTY1MSw3ICsxNjg1LDE5
IEBAIHN0YXRpYyBpbmxpbmUgV2ViS2l0OjpGaW5kT3B0aW9ucyB0b0ZpbmRPcHRpb25zKF9XS0Zp
bmRPcHRpb25zIHdrRmluZE9wdGlvbnMpCiAgICAgQ0dSZWN0IHZpc2libGVSZWN0SW5Db250ZW50
Q29vcmRpbmF0ZXMgPSBbc2VsZiBjb252ZXJ0UmVjdDpuZXdCb3VuZHMgdG9WaWV3Ol9jb250ZW50
Vmlldy5nZXQoKV07CiAgICAgQ0dSZWN0IHVub2JzY3VyZWRSZWN0SW5Db250ZW50Q29vcmRpbmF0
ZXMgPSBbc2VsZiBjb252ZXJ0UmVjdDpmdXR1cmVVbm9ic2N1cmVkUmVjdEluU2VsZkNvb3JkaW5h
dGVzIHRvVmlldzpfY29udGVudFZpZXcuZ2V0KCldOwogCi0gICAgX3BhZ2UtPmR5bmFtaWNWaWV3
cG9ydFNpemVVcGRhdGUoV2ViQ29yZTo6RmxvYXRTaXplKG5ld01pbmltdW1MYXlvdXRTaXplLndp
ZHRoLCBuZXdNaW5pbXVtTGF5b3V0U2l6ZS5oZWlnaHQpLCB2aXNpYmxlUmVjdEluQ29udGVudENv
b3JkaW5hdGVzLCB1bm9ic2N1cmVkUmVjdEluQ29udGVudENvb3JkaW5hdGVzLCBmdXR1cmVVbm9i
c2N1cmVkUmVjdEluU2VsZkNvb3JkaW5hdGVzLCB0YXJnZXRTY2FsZSk7CisgICAgQ0dTaXplIG1p
bmltdW1MYXlvdXRTaXplID0gbmV3Qm91bmRzLnNpemU7CisgICAgaWYgKF9vdmVycmlkZXNNaW5p
bXVtTGF5b3V0U2l6ZSkKKyAgICAgICAgbWluaW11bUxheW91dFNpemUgPSBfbWluaW11bUxheW91
dFNpemVPdmVycmlkZTsKKworICAgIENHU2l6ZSBtaW5pbXVtTGF5b3V0U2l6ZUZvck1pbmltYWxV
SSA9IG1pbmltdW1MYXlvdXRTaXplOworICAgIGlmIChfb3ZlcnJpZGVzTWluaW11bUxheW91dFNp
emVGb3JNaW5pbWFsVUkpCisgICAgICAgIG1pbmltdW1MYXlvdXRTaXplRm9yTWluaW1hbFVJID0g
X21pbmltdW1MYXlvdXRTaXplT3ZlcnJpZGVGb3JNaW5pbWFsVUk7CisKKyAgICBDR1NpemUgbWF4
aW11bVVub2JzY3VyZWRTaXplID0gbmV3Qm91bmRzLnNpemU7CisgICAgaWYgKF9vdmVycmlkZXNN
YXhpbXVtVW5vYnNjdXJlZFNpemUpCisgICAgICAgIG1heGltdW1Vbm9ic2N1cmVkU2l6ZSA9IF9t
YXhpbXVtVW5vYnNjdXJlZFNpemVPdmVycmlkZTsKKworICAgIF9wYWdlLT5keW5hbWljVmlld3Bv
cnRTaXplVXBkYXRlKFdlYkNvcmU6OkZsb2F0U2l6ZShtaW5pbXVtTGF5b3V0U2l6ZSksIFdlYkNv
cmU6OkZsb2F0U2l6ZShtaW5pbXVtTGF5b3V0U2l6ZUZvck1pbmltYWxVSSksIFdlYkNvcmU6OkZs
b2F0U2l6ZShtYXhpbXVtVW5vYnNjdXJlZFNpemUpLCB2aXNpYmxlUmVjdEluQ29udGVudENvb3Jk
aW5hdGVzLCB1bm9ic2N1cmVkUmVjdEluQ29udGVudENvb3JkaW5hdGVzLCBmdXR1cmVVbm9ic2N1
cmVkUmVjdEluU2VsZkNvb3JkaW5hdGVzLCB0YXJnZXRTY2FsZSk7CiB9CiAKIC0gKHZvaWQpX2Vu
ZEFuaW1hdGVkUmVzaXplCkBAIC0xNzQ0LDYgKzE3OTAsMTUgQEAgc3RhdGljIGlubGluZSBXZWJL
aXQ6OkZpbmRPcHRpb25zIHRvRmluZE9wdGlvbnMoX1dLRmluZE9wdGlvbnMgd2tGaW5kT3B0aW9u
cykKICAgICB9KTsKIH0KIAorLSAodm9pZClfb3ZlcnJpZGVMYXlvdXRQYXJhbWV0ZXJzV2l0aE1p
bmltdW1MYXlvdXRTaXplOihDR1NpemUpbWluaW11bUxheW91dFNpemUgbWluaW11bUxheW91dFNp
emVGb3JNaW5pbWFsVUk6KENHU2l6ZSltaW5pbXVtTGF5b3V0U2l6ZUZvck1pbmltYWxVSSBtYXhp
bXVtVW5vYnNjdXJlZFNpemVPdmVycmlkZTooQ0dTaXplKW1heGltdW1Vbm9ic2N1cmVkU2l6ZU92
ZXJyaWRlCit7CisgICAgLy8gRklYTUU6IEFmdGVyIFNhZmFyaSBpcyB1cGRhdGVkIHRvIHVzZSB0
aGlzIGZ1bmN0aW9uIGluc3RlYWQgb2Ygc2V0dGluZyB0aGUgcGFyYW1ldGVycyBzZXBhcmF0ZWx5
LCB3ZSBzaG91bGQgcmVtb3ZlCisgICAgLy8gdGhlIGluZGl2aWR1YWwgc2V0dGVycyBhbmQgc2Vu
ZCBhIHNpbmdsZSBtZXNzYWdlIHRvIHNlbmQgZXZlcnl0aGluZyBhdCBvbmNlIHRvIHRoZSBXZWJQ
cm9jZXNzLgorICAgIHNlbGYuX21pbmltdW1MYXlvdXRTaXplT3ZlcnJpZGUgPSBtaW5pbXVtTGF5
b3V0U2l6ZTsKKyAgICBzZWxmLl9taW5pbXVtTGF5b3V0U2l6ZU92ZXJyaWRlRm9yTWluaW1hbFVJ
ID0gbWluaW11bUxheW91dFNpemVGb3JNaW5pbWFsVUk7CisgICAgc2VsZi5fbWF4aW11bVVub2Jz
Y3VyZWRTaXplT3ZlcnJpZGUgPSBtYXhpbXVtVW5vYnNjdXJlZFNpemVPdmVycmlkZTsKK30KKwog
LSAoVUlWaWV3ICopX3ZpZXdGb3JGaW5kVUkKIHsKICAgICByZXR1cm4gW3NlbGYgdmlld0Zvclpv
b21pbmdJblNjcm9sbFZpZXc6W3NlbGYgc2Nyb2xsVmlld11dOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdJbnRlcm5hbC5oIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdJbnRlcm5hbC5oCmluZGV4IGMw
YWU2Zjk1MWQzM2I1YWEzZGY3NDE4YTdiM2IzM2QwNTBiYmFlMDcuLjFiMGQ0NjdlNTA0M2ZhMDg2
MGE3MmFiMTBlY2Q1YzZmNDRlMzJhYzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3SW50ZXJuYWwuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld0ludGVybmFsLmgKQEAgLTYxLDYgKzYxLDkgQEAg
c3RydWN0IFZpZXdTbmFwc2hvdDsKIH0KIAogI2lmIFBMQVRGT1JNKElPUykKKworQHByb3BlcnR5
IChub25hdG9taWMsIHNldHRlcj1fc2V0VXNlc01pbmltYWxVSTopIEJPT0wgX3VzZXNNaW5pbWFs
VUk7CisKIC0gKHZvaWQpX2RpZENvbW1pdExvYWRGb3JNYWluRnJhbWU7CiAtICh2b2lkKV9kaWRD
b21taXRMYXllclRyZWU6KGNvbnN0IFdlYktpdDo6UmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb24m
KWxheWVyVHJlZVRyYW5zYWN0aW9uOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld1ByaXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3UHJpdmF0ZS5oCmluZGV4IGFmOTQ2ZmVlMDc1ZjMyYWVk
YWE3NzY1ZTEyNGRkZTA5ODQ1MGE4NGQuLjJjNDI2NTgzYjFmZTRkMWE2MDY3YTQyM2E2YTNlY2Q3
OGQ1MzAzNTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2Ev
V0tXZWJWaWV3UHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29j
b2EvV0tXZWJWaWV3UHJpdmF0ZS5oCkBAIC05NSw4ICs5NSwxNSBAQCB0eXBlZGVmIE5TX09QVElP
TlMoTlNVSW50ZWdlciwgX1dLRmluZE9wdGlvbnMpIHsKIC0gKHZvaWQpX2Nsb3NlOwogCiAjaWYg
VEFSR0VUX09TX0lQSE9ORQorLy8gREVSRUNBVEVEOiBUaGUgc2V0dGVycyBvZiB0aGUgdGhyZWUg
Zm9sbG93aW5nIGZ1bmN0aW9uIGFyZSBkZXByZWNhdGVkLCBwbGVhc2UgdXNlIG92ZXJyaWRlTGF5
b3V0UGFyYW1ldGVycy4KKy8vIERlZmluZSB0aGUgc21hbGxlc3Qgc2l6ZSBhIHBhZ2UgdGFrZSB3
aXRoIGEgcmVndWxhci4KIEBwcm9wZXJ0eSAobm9uYXRvbWljLCBzZXR0ZXI9X3NldE1pbmltdW1M
YXlvdXRTaXplT3ZlcnJpZGU6KSBDR1NpemUgX21pbmltdW1MYXlvdXRTaXplT3ZlcnJpZGU7Cisv
LyBEZWZpbmUgdGhlIHNtYWxsZXN0IHNpemUgYSBwYWdlIHRha2Ugd2l0aCB0aGUgbWlubWFsLXVp
IHZpZXdwb3J0LgogQHByb3BlcnR5IChub25hdG9taWMsIHNldHRlcj1fc2V0TWluaW11bUxheW91
dFNpemVPdmVycmlkZUZvck1pbmltYWxVSTopIENHU2l6ZSBfbWluaW11bUxheW91dFNpemVPdmVy
cmlkZUZvck1pbmltYWxVSTsKKy8vIERlZmluZSB0aGUgbGFyZ2VzdCBzaXplIHRoZSB1bm9ic2N1
cmVkIGFyZWEgY2FuIGdldCBmb3IgdGhlIGN1cnJlbnQgdmlldyBib3VuZHMuIFRoaXMgdmFsdWUg
aXMgdXNlZCB0byBkZWZpbmUgdmlld3BvcnQgdW5pdHMuCitAcHJvcGVydHkgKG5vbmF0b21pYywg
c2V0dGVyPV9zZXRNYXhpbXVtVW5vYnNjdXJlZFNpemVPdmVycmlkZTopIENHU2l6ZSBfbWF4aW11
bVVub2JzY3VyZWRTaXplT3ZlcnJpZGU7CisKK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25s
eSkgQk9PTCBfdXNlc01pbmltYWxVSTsKIAogLy8gRGVmaW5lIHRoZSBpbnNldCBvZiB0aGUgc2Ny
b2xsdmlldyB1bnVzYWJsZSBieSB0aGUgd2ViIHBhZ2UuCiBAcHJvcGVydHkgKG5vbmF0b21pYywg
c2V0dGVyPV9zZXRPYnNjdXJlZEluc2V0czopIFVJRWRnZUluc2V0cyBfb2JzY3VyZWRJbnNldHM7
CkBAIC0xMjMsNiArMTMwLDggQEAgdHlwZWRlZiBOU19PUFRJT05TKE5TVUludGVnZXIsIF9XS0Zp
bmRPcHRpb25zKSB7CiAKIC0gKHZvaWQpX3NuYXBzaG90UmVjdDooQ0dSZWN0KXJlY3RJblZpZXdD
b29yZGluYXRlcyBpbnRvSW1hZ2VPZldpZHRoOihDR0Zsb2F0KWltYWdlV2lkdGggY29tcGxldGlv
bkhhbmRsZXI6KHZvaWQoXikoQ0dJbWFnZVJlZikpY29tcGxldGlvbkhhbmRsZXI7CiAKKy0gKHZv
aWQpX292ZXJyaWRlTGF5b3V0UGFyYW1ldGVyc1dpdGhNaW5pbXVtTGF5b3V0U2l6ZTooQ0dTaXpl
KW1pbmltdW1MYXlvdXRTaXplIG1pbmltdW1MYXlvdXRTaXplRm9yTWluaW1hbFVJOihDR1NpemUp
bWluaW11bUxheW91dFNpemVGb3JNaW5pbWFsVUkgbWF4aW11bVVub2JzY3VyZWRTaXplT3ZlcnJp
ZGU6KENHU2l6ZSltYXhpbXVtVW5vYnNjdXJlZFNpemVPdmVycmlkZTsKKwogLSAoVUlWaWV3ICop
X3ZpZXdGb3JGaW5kVUk7CiAKIC8vIEZJWE1FOiBSZW1vdmUgdGhpcyBvbmNlIG5vYm9keSB1c2Vz
IGl0LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BhZ2VDbGllbnQuaCBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QYWdlQ2xpZW50LmgKaW5kZXggOThkMDE2ZmIzM2Qz
NjkyMDdlMDk2ZDQ2ZGUxNmIxYzc3ZThmNmVkYy4uNjVmMjdiNDgyMjNkNGJjYThkMjk5MGNhMDFh
Y2FkYzQ4MjFmZmZlZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BhZ2VD
bGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGFnZUNsaWVudC5oCkBAIC0y
NTcsNiArMjU3LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBzaG93UGxheWJhY2tUYXJn
ZXRQaWNrZXIoYm9vbCBoYXNWaWRlbywgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgZWxlbWVudFJl
Y3QpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgem9vbVRvUmVjdChXZWJDb3JlOjpGbG9hdFJlY3Qs
IGRvdWJsZSBtaW5pbXVtU2NhbGUsIGRvdWJsZSBtYXhpbXVtU2NhbGUpID0gMDsKICAgICB2aXJ0
dWFsIHZvaWQgZGlkQ2hhbmdlVmlld3BvcnRNZXRhVGFnV2lkdGgoZmxvYXQpID0gMDsKKyAgICB2
aXJ0dWFsIHZvaWQgc2V0VXNlc01pbmltYWxVSShib29sKSA9IDA7CiAgICAgdmlydHVhbCBkb3Vi
bGUgbWluaW11bVpvb21TY2FsZSgpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIFdlYkNvcmU6OkZs
b2F0U2l6ZSBjb250ZW50c1NpemUoKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRpZEZp
bmlzaERyYXdpbmdQYWdlc1RvUERGKGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYpID0gMDsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaCBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAppbmRleCA2ZGE4ZDMyNTg3N2VhNWZl
OGE4MWYxNDc3NzJjZmE1YjQ0ZTRkMWFiLi5kZjUwNWMyOTAwMjU4YjY3NDQyYWZlYzNhNDA3MjI2
ZWJlMDhiOWUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVBy
b3h5LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCkBAIC01
OTUsMTAgKzU5NSwxMSBAQCBwdWJsaWM6CiAgICAgZW51bSBjbGFzcyBVbm9ic2N1cmVkUmVjdENv
bnN0cmFpbnQgeyBDb25zdHJhaW5lZFRvRG9jdW1lbnRSZWN0LCBVbmNvbnN0cmFpbmVkIH07CiAg
ICAgV2ViQ29yZTo6RmxvYXRSZWN0IGNvbXB1dGVDdXN0b21GaXhlZFBvc2l0aW9uUmVjdChjb25z
dCBXZWJDb3JlOjpGbG9hdFJlY3QmIHVub2JzY3VyZWRDb250ZW50UmVjdCwgZG91YmxlIGRpc3Bs
YXllZENvbnRlbnRTY2FsZSwgVW5vYnNjdXJlZFJlY3RDb25zdHJhaW50ID0gVW5vYnNjdXJlZFJl
Y3RDb25zdHJhaW50OjpVbmNvbnN0cmFpbmVkKSBjb25zdDsKIAotICAgIHZvaWQgZHluYW1pY1Zp
ZXdwb3J0U2l6ZVVwZGF0ZShjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUmIG1pbmltdW1MYXlvdXRT
aXplLCBjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmIHRhcmdldEV4cG9zZWRDb250ZW50UmVjdCwg
Y29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiB0YXJnZXRVbm9ic2N1cmVkUmVjdCwgY29uc3QgV2Vi
Q29yZTo6RmxvYXRSZWN0JiB0YXJnZXRVbm9ic2N1cmVkUmVjdEluU2Nyb2xsVmlld0Nvb3JkaW5h
dGVzLCBkb3VibGUgdGFyZ2V0U2NhbGUpOworICAgIHZvaWQgZHluYW1pY1ZpZXdwb3J0U2l6ZVVw
ZGF0ZShjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUmIG1pbmltdW1MYXlvdXRTaXplLCBjb25zdCBX
ZWJDb3JlOjpGbG9hdFNpemUmIG1pbmltdW1MYXlvdXRTaXplRm9yTWluaW1hbFVJLCBjb25zdCBX
ZWJDb3JlOjpGbG9hdFNpemUmIG1heGltdW1Vbm9ic2N1cmVkU2l6ZSwgY29uc3QgV2ViQ29yZTo6
RmxvYXRSZWN0JiB0YXJnZXRFeHBvc2VkQ29udGVudFJlY3QsIGNvbnN0IFdlYkNvcmU6OkZsb2F0
UmVjdCYgdGFyZ2V0VW5vYnNjdXJlZFJlY3QsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYgdGFy
Z2V0VW5vYnNjdXJlZFJlY3RJblNjcm9sbFZpZXdDb29yZGluYXRlcywgZG91YmxlIHRhcmdldFNj
YWxlKTsKICAgICAKICAgICB2b2lkIHNldFZpZXdwb3J0Q29uZmlndXJhdGlvbk1pbmltdW1MYXlv
dXRTaXplKGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYpOwotICAgIHZvaWQgc2V0TWluaW11bUxh
eW91dFNpemVGb3JNaW5pbWFsVUkoY29uc3QgV2ViQ29yZTo6RmxvYXRTaXplJik7CisgICAgdm9p
ZCBzZXRWaWV3cG9ydENvbmZpZ3VyYXRpb25NaW5pbXVtTGF5b3V0U2l6ZUZvck1pbmltYWxVSShj
b25zdCBXZWJDb3JlOjpGbG9hdFNpemUmKTsKKyAgICB2b2lkIHNldE1heGltdW1Vbm9ic2N1cmVk
U2l6ZShjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUmKTsKICAgICB2b2lkIGRpZENvbW1pdExheWVy
VHJlZShjb25zdCBXZWJLaXQ6OlJlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uJik7CiAKICAgICB2
b2lkIHNlbGVjdFdpdGhHZXN0dXJlKGNvbnN0IFdlYkNvcmU6OkludFBvaW50LCBXZWJDb3JlOjpU
ZXh0R3JhbnVsYXJpdHksIHVpbnQzMl90IGdlc3R1cmVUeXBlLCB1aW50MzJfdCBnZXN0dXJlU3Rh
dGUsIFBhc3NSZWZQdHI8R2VzdHVyZUNhbGxiYWNrPik7CkBAIC02MzMsNiArNjM0LDcgQEAgcHVi
bGljOgogICAgIHZvaWQgY29tbWl0UG90ZW50aWFsVGFwRmFpbGVkKCk7CiAgICAgdm9pZCBkaWRO
b3RIYW5kbGVUYXBBc0NsaWNrKGNvbnN0IFdlYkNvcmU6OkludFBvaW50Jik7CiAgICAgdm9pZCB2
aWV3cG9ydE1ldGFUYWdXaWR0aERpZENoYW5nZShmbG9hdCB3aWR0aCk7CisgICAgdm9pZCBzZXRV
c2VzTWluaW1hbFVJKGJvb2wpOwogICAgIHZvaWQgZGlkRmluaXNoRHJhd2luZ1BhZ2VzVG9QREYo
Y29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJik7CiAgICAgdm9pZCBjb250ZW50U2l6ZUNhdGVnb3J5
RGlkQ2hhbmdlKGNvbnN0IFN0cmluZyYgY29udGVudFNpemVDYXRlZ29yeSk7CiAjZW5kaWYKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMu
aW4gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluCmlu
ZGV4IGU3YmY1YTRhNDgxZjRjMTczMmRjMGMwNTMxZDUzZGJhYmNiODZhMzcuLmUzYTQ0M2VkNzVi
ZGI4NWNmYTlmMDgzZDMzNzBhNmVmNGQ3YjFhMTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbgpAQCAtMTcyLDYgKzE3Miw3IEBAIG1l
c3NhZ2VzIC0+IFdlYlBhZ2VQcm94eSB7CiAgICAgQ29tbWl0UG90ZW50aWFsVGFwRmFpbGVkKCkK
ICAgICBEaWROb3RIYW5kbGVUYXBBc0NsaWNrKFdlYkNvcmU6OkludFBvaW50IHBvaW50KQogICAg
IFZpZXdwb3J0TWV0YVRhZ1dpZHRoRGlkQ2hhbmdlKGZsb2F0IHdpZHRoKQorICAgIFNldFVzZXNN
aW5pbWFsVUkoYm9vbCB1c2VzTWluaW1hbFVJKQogICAgIERpZEZpbmlzaERyYXdpbmdQYWdlc1Rv
UERGKElQQzo6RGF0YVJlZmVyZW5jZSBwZGZEYXRhKQogI2VuZGlmCiAjaWYgUExBVEZPUk0oR1RL
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1w
bElPUy5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5o
CmluZGV4IGJhMWU1ZTZhOWRmMGI5YzQ3OTJhZTcwYjIyOWZmODE5NjUyNzhjMzkuLmNhYmY3ZTBj
ZjZmMDlmZWZiNzZkNzE5NzJjY2Q1ZDMzYzliNDQ5ZjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJT1MuaAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLmgKQEAgLTEyMyw2ICsxMjMsNyBAQCBw
cml2YXRlOgogCiAgICAgdmlydHVhbCBib29sIGhhbmRsZVJ1bk9wZW5QYW5lbChXZWJQYWdlUHJv
eHkqLCBXZWJGcmFtZVByb3h5KiwgV2ViT3BlblBhbmVsUGFyYW1ldGVycyosIFdlYk9wZW5QYW5l
bFJlc3VsdExpc3RlbmVyUHJveHkqKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgZGlkQ2hh
bmdlVmlld3BvcnRNZXRhVGFnV2lkdGgoZmxvYXQpIG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9p
ZCBzZXRVc2VzTWluaW1hbFVJKGJvb2wpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgZG91YmxlIG1p
bmltdW1ab29tU2NhbGUoKSBjb25zdCBvdmVycmlkZTsKICAgICB2aXJ0dWFsIFdlYkNvcmU6OkZs
b2F0U2l6ZSBjb250ZW50c1NpemUoKSBjb25zdCBvdmVycmlkZTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5tbSBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJT1MubW0KaW5kZXggMjZkOWRhMDg1
NGEyMmU5OGExYWRiNWVhNmY4YzJiMGMzYmVjMWFmZi4uMjYyZGFlN2Y1ZTZkYTE5Mjg3ZDZiODhl
ZGQ1NWY0NTAzMjFiZGYzZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lv
cy9QYWdlQ2xpZW50SW1wbElPUy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9z
L1BhZ2VDbGllbnRJbXBsSU9TLm1tCkBAIC0xODksNiArMTg5LDExIEBAIHZvaWQgUGFnZUNsaWVu
dEltcGw6OmRpZENoYW5nZVZpZXdwb3J0TWV0YVRhZ1dpZHRoKGZsb2F0IG5ld1dpZHRoKQogICAg
IFttX3dlYlZpZXcgX3NldFZpZXdwb3J0TWV0YVRhZ1dpZHRoOm5ld1dpZHRoXTsKIH0KIAordm9p
ZCBQYWdlQ2xpZW50SW1wbDo6c2V0VXNlc01pbmltYWxVSShib29sIHVzZXNNaW5pbWFsVUkpCit7
CisgICAgW21fd2ViVmlldyBfc2V0VXNlc01pbmltYWxVSTp1c2VzTWluaW1hbFVJXTsKK30KKwog
ZG91YmxlIFBhZ2VDbGllbnRJbXBsOjptaW5pbXVtWm9vbVNjYWxlKCkgY29uc3QKIHsKICAgICBp
ZiAoVUlTY3JvbGxWaWV3ICpzY3JvbGxlciA9IFttX3dlYlZpZXcgc2Nyb2xsVmlld10pCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlPUy5tbSBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9TLm1tCmluZGV4IDE2
OTZjYzBiMmEwNzY2M2YyN2NlM2QxMzdjZmJlY2Q3OTMzMWM5NTEuLjVmYjE5OTNmZjA4Y2EyMTBm
MzViOWUwMWRlNmQ5NjQ5YWJjMzMwMzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9TLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9pb3MvV2ViUGFnZVByb3h5SU9TLm1tCkBAIC0yMzUsOSArMjM1LDkgQEAgV2ViQ29yZTo6Rmxv
YXRSZWN0IFdlYlBhZ2VQcm94eTo6Y29tcHV0ZUN1c3RvbUZpeGVkUG9zaXRpb25SZWN0KGNvbnN0
IEZsb2F0UmVjdCYKICAgICByZXR1cm4gRnJhbWVWaWV3OjpyZWN0Rm9yVmlld3BvcnRDb25zdHJh
aW5lZE9iamVjdHMoZW5jbG9zaW5nTGF5b3V0UmVjdChjb25zdHJhaW5lZFVub2JzY3VyZWRSZWN0
KSwgcm91bmRlZExheW91dFNpemUoY29udGVudHNTaXplKSwgZGlzcGxheWVkQ29udGVudFNjYWxl
LCBmYWxzZSwgU3RpY2tUb1ZpZXdwb3J0Qm91bmRzKTsKIH0KIAotdm9pZCBXZWJQYWdlUHJveHk6
OmR5bmFtaWNWaWV3cG9ydFNpemVVcGRhdGUoY29uc3QgRmxvYXRTaXplJiBtaW5pbXVtTGF5b3V0
U2l6ZSwgY29uc3QgRmxvYXRSZWN0JiB0YXJnZXRFeHBvc2VkQ29udGVudFJlY3QsIGNvbnN0IEZs
b2F0UmVjdCYgdGFyZ2V0VW5vYnNjdXJlZFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgdGFyZ2V0VW5v
YnNjdXJlZFJlY3RJblNjcm9sbFZpZXdDb29yZGluYXRlcywgIGRvdWJsZSB0YXJnZXRTY2FsZSkK
K3ZvaWQgV2ViUGFnZVByb3h5OjpkeW5hbWljVmlld3BvcnRTaXplVXBkYXRlKGNvbnN0IEZsb2F0
U2l6ZSYgbWluaW11bUxheW91dFNpemUsIGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYgbWluaW11
bUxheW91dFNpemVGb3JNaW5pbWFsVUksIGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYgbWF4aW11
bVVub2JzY3VyZWRTaXplLCBjb25zdCBGbG9hdFJlY3QmIHRhcmdldEV4cG9zZWRDb250ZW50UmVj
dCwgY29uc3QgRmxvYXRSZWN0JiB0YXJnZXRVbm9ic2N1cmVkUmVjdCwgY29uc3QgRmxvYXRSZWN0
JiB0YXJnZXRVbm9ic2N1cmVkUmVjdEluU2Nyb2xsVmlld0Nvb3JkaW5hdGVzLCAgZG91YmxlIHRh
cmdldFNjYWxlKQogewotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6RHlu
YW1pY1ZpZXdwb3J0U2l6ZVVwZGF0ZShtaW5pbXVtTGF5b3V0U2l6ZSwgdGFyZ2V0RXhwb3NlZENv
bnRlbnRSZWN0LCB0YXJnZXRVbm9ic2N1cmVkUmVjdCwgdGFyZ2V0VW5vYnNjdXJlZFJlY3RJblNj
cm9sbFZpZXdDb29yZGluYXRlcywgdGFyZ2V0U2NhbGUpLCBtX3BhZ2VJRCk7CisgICAgbV9wcm9j
ZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpEeW5hbWljVmlld3BvcnRTaXplVXBkYXRlKG1p
bmltdW1MYXlvdXRTaXplLCBtaW5pbXVtTGF5b3V0U2l6ZUZvck1pbmltYWxVSSwgbWF4aW11bVVu
b2JzY3VyZWRTaXplLCB0YXJnZXRFeHBvc2VkQ29udGVudFJlY3QsIHRhcmdldFVub2JzY3VyZWRS
ZWN0LCB0YXJnZXRVbm9ic2N1cmVkUmVjdEluU2Nyb2xsVmlld0Nvb3JkaW5hdGVzLCB0YXJnZXRT
Y2FsZSksIG1fcGFnZUlEKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OnNldFZpZXdwb3J0Q29u
ZmlndXJhdGlvbk1pbmltdW1MYXlvdXRTaXplKGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYgc2l6
ZSkKQEAgLTI0NSw5ICsyNDUsMTQgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnNldFZpZXdwb3J0Q29u
ZmlndXJhdGlvbk1pbmltdW1MYXlvdXRTaXplKGNvbnN0IFdlYkNvcmU6OkZsb2EKICAgICBtX3By
b2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNldFZpZXdwb3J0Q29uZmlndXJhdGlvbk1p
bmltdW1MYXlvdXRTaXplKHNpemUpLCBtX3BhZ2VJRCk7CiB9CiAKLXZvaWQgV2ViUGFnZVByb3h5
OjpzZXRNaW5pbXVtTGF5b3V0U2l6ZUZvck1pbmltYWxVSShjb25zdCBXZWJDb3JlOjpGbG9hdFNp
emUmIHNpemUpCit2b2lkIFdlYlBhZ2VQcm94eTo6c2V0Vmlld3BvcnRDb25maWd1cmF0aW9uTWlu
aW11bUxheW91dFNpemVGb3JNaW5pbWFsVUkoY29uc3QgV2ViQ29yZTo6RmxvYXRTaXplJiBzaXpl
KQogewotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0TWluaW11bUxh
eW91dFNpemVGb3JNaW5pbWFsVUkoc2l6ZSksIG1fcGFnZUlEKTsKKyAgICBtX3Byb2Nlc3MtPnNl
bmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNldFZpZXdwb3J0Q29uZmlndXJhdGlvbk1pbmltdW1MYXlv
dXRTaXplRm9yTWluaW1hbFVJKHNpemUpLCBtX3BhZ2VJRCk7Cit9CisKK3ZvaWQgV2ViUGFnZVBy
b3h5OjpzZXRNYXhpbXVtVW5vYnNjdXJlZFNpemUoY29uc3QgV2ViQ29yZTo6RmxvYXRTaXplJiBz
aXplKQoreworICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0TWF4aW11
bVVub2JzY3VyZWRTaXplKHNpemUpLCBtX3BhZ2VJRCk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5
OjpkaWRDb21taXRMYXllclRyZWUoY29uc3QgV2ViS2l0OjpSZW1vdGVMYXllclRyZWVUcmFuc2Fj
dGlvbiYgbGF5ZXJUcmVlVHJhbnNhY3Rpb24pCkBAIC02NDksNiArNjU0LDExIEBAIHZvaWQgV2Vi
UGFnZVByb3h5Ojp2aWV3cG9ydE1ldGFUYWdXaWR0aERpZENoYW5nZShmbG9hdCB3aWR0aCkKICAg
ICBtX3BhZ2VDbGllbnQuZGlkQ2hhbmdlVmlld3BvcnRNZXRhVGFnV2lkdGgod2lkdGgpOwogfQog
Cit2b2lkIFdlYlBhZ2VQcm94eTo6c2V0VXNlc01pbmltYWxVSShib29sIHVzZXNNaW5pbWFsVUkp
Cit7CisgICAgbV9wYWdlQ2xpZW50LnNldFVzZXNNaW5pbWFsVUkodXNlc01pbmltYWxVSSk7Cit9
CisKIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRGaW5pc2hEcmF3aW5nUGFnZXNUb1BERihjb25zdCBJ
UEM6OkRhdGFSZWZlcmVuY2UmIHBkZkRhdGEpCiB7CiAgICAgbV9wYWdlQ2xpZW50LmRpZEZpbmlz
aERyYXdpbmdQYWdlc1RvUERGKHBkZkRhdGEpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50
LmNwcAppbmRleCAxYmYxMzNhYzI4Y2ZhNDI4MTk5NTUyZjQwMDI2ODlmZWRmN2RhZWRiLi41NmUz
YWYyZjZhOGI1NzIwYWFhYjJkNzhlNmE0Nzg4NzIzMmNlZWI1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1l
TG9hZGVyQ2xpZW50LmNwcApAQCAtNDk5LDYgKzQ5OSw4IEBAIHZvaWQgV2ViRnJhbWVMb2FkZXJD
bGllbnQ6OmRpc3BhdGNoRGlkRmluaXNoRG9jdW1lbnRMb2FkKCkKICAgICBpZiAoIXdlYlBhZ2Up
CiAgICAgICAgIHJldHVybjsKIAorICAgIHdlYlBhZ2UtPmRpZEZpbmlzaERvY3VtZW50TG9hZCht
X2ZyYW1lKTsKKwogICAgIFJlZlB0cjxBUEk6Ok9iamVjdD4gdXNlckRhdGE7CiAKICAgICAvLyBO
b3RpZnkgdGhlIGJ1bmRsZSBjbGllbnQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViUGFnZS5jcHAKaW5kZXggYmI3OWRjNmViZjUxYmI4YjliYjg0ZDc2NTZkNzA0NzJl
ZjEyMGUwYy4uMDM2MmY5NWE1Y2RjZDQwM2E1ODIxMWNhNTFjN2JlODZjNTBhMjljNiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcApAQCAtNDMxMyw2
ICs0MzEzLDcgQEAgdm9pZCBXZWJQYWdlOjpkaWRDb21taXRMb2FkKFdlYkZyYW1lKiBmcmFtZSkK
ICAgICBXZWJQcm9jZXNzOjpzaGFyZWQoKS5ldmVudERpc3BhdGNoZXIoKS5jbGVhclF1ZXVlZFRv
dWNoRXZlbnRzRm9yUGFnZSgqdGhpcyk7CiAKICAgICByZXNldFZpZXdwb3J0RGVmYXVsdENvbmZp
Z3VyYXRpb24oZnJhbWUpOworICAgIG1fdmlld3BvcnRDb25maWd1cmF0aW9uLnJlc2V0TWluaW1h
bFVJKCk7CiAgICAgbV92aWV3cG9ydENvbmZpZ3VyYXRpb24uc2V0Vmlld3BvcnRBcmd1bWVudHMo
Vmlld3BvcnRBcmd1bWVudHMoKSk7CiAgICAgbV92aWV3cG9ydENvbmZpZ3VyYXRpb24uc2V0Q29u
dGVudHNTaXplKEludFNpemUoKSk7CiAgICAgdmlld3BvcnRDb25maWd1cmF0aW9uQ2hhbmdlZCgp
OwpAQCAtNDMyNyw2ICs0MzI4LDE2IEBAIHZvaWQgV2ViUGFnZTo6ZGlkQ29tbWl0TG9hZChXZWJG
cmFtZSogZnJhbWUpCiAgICAgdXBkYXRlTWFpbkZyYW1lU2Nyb2xsT2Zmc2V0UGlubmluZygpOwog
fQogCit2b2lkIFdlYlBhZ2U6OmRpZEZpbmlzaERvY3VtZW50TG9hZChXZWJGcmFtZSogZnJhbWUp
Cit7CisjaWYgUExBVEZPUk0oSU9TKQorICAgIGlmICghZnJhbWUtPmlzTWFpbkZyYW1lKCkpCisg
ICAgICAgIHJldHVybjsKKworICAgIG1fdmlld3BvcnRDb25maWd1cmF0aW9uLmRpZEZpbmlzaERv
Y3VtZW50TG9hZCgpOworI2VuZGlmIC8vIFBMQVRGT1JNKElPUykKK30KKwogdm9pZCBXZWJQYWdl
OjpkaWRGaW5pc2hMb2FkKFdlYkZyYW1lKiBmcmFtZSkKIHsKICNpZiBFTkFCTEUoUFJJTUFSWV9T
TkFQU0hPVFRFRF9QTFVHSU5fSEVVUklTVElDKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJQYWdlLmgKaW5kZXggYjIyM2NkYTkwMTA1NWMwMTJlODI3MjJhMTJlN2MxODBk
MzQ3MzRmMC4uOGJkOTI0YjZjOTFmMDYzNDkxODdiM2RlYjdjZWQ3MDMxMTg0NmJjZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCkBAIC0yNDksNiArMjQ5
LDcgQEAgcHVibGljOgogICAgIHZvaWQgZGlkU3RhcnRQYWdlVHJhbnNpdGlvbigpOwogICAgIHZv
aWQgZGlkQ29tcGxldGVQYWdlVHJhbnNpdGlvbigpOwogICAgIHZvaWQgZGlkQ29tbWl0TG9hZChX
ZWJGcmFtZSopOworICAgIHZvaWQgZGlkRmluaXNoRG9jdW1lbnRMb2FkKFdlYkZyYW1lKik7CiAg
ICAgdm9pZCBkaWRGaW5pc2hMb2FkKFdlYkZyYW1lKik7CiAgICAgdm9pZCBzaG93KCk7CiAgICAg
U3RyaW5nIHVzZXJBZ2VudCgpIGNvbnN0IHsgcmV0dXJuIG1fdXNlckFnZW50OyB9CkBAIC03MTMs
OCArNzE0LDkgQEAgcHVibGljOgogCiAjaWYgUExBVEZPUk0oSU9TKQogICAgIHZvaWQgc2V0Vmll
d3BvcnRDb25maWd1cmF0aW9uTWluaW11bUxheW91dFNpemUoY29uc3QgV2ViQ29yZTo6RmxvYXRT
aXplJik7Ci0gICAgdm9pZCBzZXRNaW5pbXVtTGF5b3V0U2l6ZUZvck1pbmltYWxVSShjb25zdCBX
ZWJDb3JlOjpGbG9hdFNpemUmKTsKLSAgICB2b2lkIGR5bmFtaWNWaWV3cG9ydFNpemVVcGRhdGUo
Y29uc3QgV2ViQ29yZTo6RmxvYXRTaXplJiBtaW5pbXVtTGF5b3V0U2l6ZSwgY29uc3QgV2ViQ29y
ZTo6RmxvYXRSZWN0JiB0YXJnZXRFeHBvc2VkQ29udGVudFJlY3QsIGNvbnN0IFdlYkNvcmU6OkZs
b2F0UmVjdCYgdGFyZ2V0VW5vYnNjdXJlZFJlY3QsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYg
dGFyZ2V0VW5vYnNjdXJlZFJlY3RJblNjcm9sbFZpZXdDb29yZGluYXRlcywgZG91YmxlIHNjYWxl
KTsKKyAgICB2b2lkIHNldFZpZXdwb3J0Q29uZmlndXJhdGlvbk1pbmltdW1MYXlvdXRTaXplRm9y
TWluaW1hbFVJKGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYpOworICAgIHZvaWQgc2V0TWF4aW11
bVVub2JzY3VyZWRTaXplKGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYpOworICAgIHZvaWQgZHlu
YW1pY1ZpZXdwb3J0U2l6ZVVwZGF0ZShjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUmIG1pbmltdW1M
YXlvdXRTaXplLCBjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUmIG1pbmltdW1MYXlvdXRTaXplRm9y
TWluaW1hbFVJLCBjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUmIG1heGltdW1Vbm9ic2N1cmVkU2l6
ZSwgY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiB0YXJnZXRFeHBvc2VkQ29udGVudFJlY3QsIGNv
bnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYgdGFyZ2V0VW5vYnNjdXJlZFJlY3QsIGNvbnN0IFdlYkNv
cmU6OkZsb2F0UmVjdCYgdGFyZ2V0VW5vYnNjdXJlZFJlY3RJblNjcm9sbFZpZXdDb29yZGluYXRl
cywgZG91YmxlIHNjYWxlKTsKICAgICB2b2lkIHVwZGF0ZVZpc2libGVDb250ZW50UmVjdHMoY29u
c3QgVmlzaWJsZUNvbnRlbnRSZWN0VXBkYXRlSW5mbyYpOwogICAgIGJvb2wgc2NhbGVXYXNTZXRC
eVVJUHJvY2VzcygpIGNvbnN0IHsgcmV0dXJuIG1fc2NhbGVXYXNTZXRCeVVJUHJvY2VzczsgfQog
ICAgIHZvaWQgd2lsbFN0YXJ0VXNlclRyaWdnZXJlZFpvb21pbmcoKTsKQEAgLTgyMiw2ICs4MjQs
NyBAQCBwcml2YXRlOgogI2lmIFBMQVRGT1JNKElPUykKICAgICB2b2lkIHJlc2V0Vmlld3BvcnRE
ZWZhdWx0Q29uZmlndXJhdGlvbihXZWJGcmFtZSogbWFpbkZyYW1lKTsKICAgICB2b2lkIHZpZXdw
b3J0Q29uZmlndXJhdGlvbkNoYW5nZWQoKTsKKyAgICB2b2lkIHVwZGF0ZVZpZXdwb3J0U2l6ZUZv
ckNTU1ZpZXdwb3J0VW5pdHMoKTsKIAogICAgIHN0YXRpYyB2b2lkIGNvbnZlcnRTZWxlY3Rpb25S
ZWN0c1RvUm9vdFZpZXcoV2ViQ29yZTo6RnJhbWVWaWV3KiwgVmVjdG9yPFdlYkNvcmU6OlNlbGVj
dGlvblJlY3Q+Jik7CiAgICAgUGFzc1JlZlB0cjxXZWJDb3JlOjpSYW5nZT4gcmFuZ2VGb3JXZWJT
ZWxlY3Rpb25BdFBvc2l0aW9uKGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiwgY29uc3QgV2ViQ29y
ZTo6VmlzaWJsZVBvc2l0aW9uJiwgU2VsZWN0aW9uRmxhZ3MmKTsKQEAgLTEyMDMsNyArMTIwNiw3
IEBAIHByaXZhdGU6CiAgICAgV2ViQ29yZTo6RmxvYXRTaXplIG1fYXZhaWxhYmxlU2NyZWVuU2l6
ZTsKICAgICBSZWZQdHI8V2ViQ29yZTo6UmFuZ2U+IG1fY3VycmVudEJsb2NrU2VsZWN0aW9uOwog
ICAgIFdlYkNvcmU6OkludFNpemUgbV9ibG9ja1NlbGVjdGlvbkRlc2lyZWRTaXplOwotICAgIFdl
YkNvcmU6OkZsb2F0U2l6ZSBtX21pbmltdW1MYXlvdXRTaXplRm9yTWluaW1hbFVJOworICAgIFdl
YkNvcmU6OkZsb2F0U2l6ZSBtX21heGltdW1Vbm9ic2N1cmVkU2l6ZTsKICAgICBib29sIG1faW5E
eW5hbWljU2l6ZVVwZGF0ZTsKICAgICBIYXNoTWFwPHN0ZDo6cGFpcjxXZWJDb3JlOjpJbnRTaXpl
LCBkb3VibGU+LCBXZWJDb3JlOjpJbnRQb2ludD4gbV9keW5hbWljU2l6ZVVwZGF0ZUhpc3Rvcnk7
CiAgICAgUmVmUHRyPFdlYkNvcmU6Ok5vZGU+IG1fcGVuZGluZ1N5bnRoZXRpY0NsaWNrTm9kZTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1l
c3NhZ2VzLmluIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVz
c2FnZXMuaW4KaW5kZXggYWFjYjJmNmI2ZjgyNTA5NmUwNjBiNDUzYjY4NTIzMmVhMWY2NGFhMy4u
MTI4ZWFjNjRhNzE5YzMxMmMxZTFlMzMxNWJmMjhhMzA0YWI3ZTM2MSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4KKysrIGIv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4KQEAg
LTQ0LDggKzQ0LDkgQEAgbWVzc2FnZXMgLT4gV2ViUGFnZSBMZWdhY3lSZWNlaXZlciB7CiAgICAg
V2hlZWxFdmVudFN5bmNGb3JUZXN0aW5nKFdlYktpdDo6V2ViV2hlZWxFdmVudCBldmVudCkgLT4g
KGJvb2wgaGFuZGxlZCkKICNpZiBQTEFURk9STShJT1MpCiAgICAgU2V0Vmlld3BvcnRDb25maWd1
cmF0aW9uTWluaW11bUxheW91dFNpemUoV2ViQ29yZTo6RmxvYXRTaXplIHNpemUpCi0gICAgU2V0
TWluaW11bUxheW91dFNpemVGb3JNaW5pbWFsVUkoV2ViQ29yZTo6RmxvYXRTaXplIHNpemUpCi0g
ICAgRHluYW1pY1ZpZXdwb3J0U2l6ZVVwZGF0ZShXZWJDb3JlOjpGbG9hdFNpemUgbWluaW11bUxh
eW91dFNpemUsIFdlYkNvcmU6OkZsb2F0UmVjdCB0YXJnZXRFeHBvc2VkQ29udGVudFJlY3QsIFdl
YkNvcmU6OkZsb2F0UmVjdCB0YXJnZXRVbm9ic2N1cmVkUmVjdCwgV2ViQ29yZTo6RmxvYXRSZWN0
IHRhcmdldFVub2JzY3VyZWRSZWN0SW5TY3JvbGxWaWV3Q29vcmRpbmF0ZXMsIGRvdWJsZSBzY2Fs
ZSkKKyAgICBTZXRWaWV3cG9ydENvbmZpZ3VyYXRpb25NaW5pbXVtTGF5b3V0U2l6ZUZvck1pbmlt
YWxVSShXZWJDb3JlOjpGbG9hdFNpemUgc2l6ZSkKKyAgICBTZXRNYXhpbXVtVW5vYnNjdXJlZFNp
emUoV2ViQ29yZTo6RmxvYXRTaXplIHNpemUpCisgICAgRHluYW1pY1ZpZXdwb3J0U2l6ZVVwZGF0
ZShXZWJDb3JlOjpGbG9hdFNpemUgbWluaW11bUxheW91dFNpemUsIFdlYkNvcmU6OkZsb2F0U2l6
ZSBtaW5pbXVtTGF5b3V0U2l6ZUZvck1pbmltYWxVSSwgIFdlYkNvcmU6OkZsb2F0U2l6ZSBtYXhp
bXVtVW5vYnNjdXJlZFNpemUsIFdlYkNvcmU6OkZsb2F0UmVjdCB0YXJnZXRFeHBvc2VkQ29udGVu
dFJlY3QsIFdlYkNvcmU6OkZsb2F0UmVjdCB0YXJnZXRVbm9ic2N1cmVkUmVjdCwgV2ViQ29yZTo6
RmxvYXRSZWN0IHRhcmdldFVub2JzY3VyZWRSZWN0SW5TY3JvbGxWaWV3Q29vcmRpbmF0ZXMsIGRv
dWJsZSBzY2FsZSkKIAogICAgIEhhbmRsZVRhcChXZWJDb3JlOjpJbnRQb2ludCBwb2ludCkKICAg
ICBQb3RlbnRpYWxUYXBBdFBvc2l0aW9uKHVpbnQ2NF90IHJlcXVlc3RJRCwgV2ViQ29yZTo6Rmxv
YXRQb2ludCBwb2ludCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
UGFnZS9pb3MvV2ViUGFnZUlPUy5tbSBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFn
ZS9pb3MvV2ViUGFnZUlPUy5tbQppbmRleCAwYmEwYmVmMDkyMmU2NzVhZDQ4ZDAxOGFjYzkwMTY1
YmU3NDg5OWVmLi43ODcyZGEyYTEwN2ZlNDAyMDVhMzQyMGU3NjVlMGZkM2NiNzg2ZTUyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1Mu
bW0KKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9T
Lm1tCkBAIC0xMjgsMTAgKzEyOCwxNCBAQCBGbG9hdFNpemUgV2ViUGFnZTo6YXZhaWxhYmxlU2Ny
ZWVuU2l6ZSgpIGNvbnN0CiB2b2lkIFdlYlBhZ2U6OnZpZXdwb3J0UHJvcGVydGllc0RpZENoYW5n
ZShjb25zdCBWaWV3cG9ydEFyZ3VtZW50cyYgdmlld3BvcnRBcmd1bWVudHMpCiB7CiAgICAgZmxv
YXQgb2xkV2lkdGggPSBtX3ZpZXdwb3J0Q29uZmlndXJhdGlvbi52aWV3cG9ydEFyZ3VtZW50cygp
LndpZHRoOworICAgIGJvb2wgd2FzVXNpbmdNaW5pbWFsVUkgPSBtX3ZpZXdwb3J0Q29uZmlndXJh
dGlvbi51c2VzTWluaW1hbFVJKCk7CiAKICAgICBtX3ZpZXdwb3J0Q29uZmlndXJhdGlvbi5zZXRW
aWV3cG9ydEFyZ3VtZW50cyh2aWV3cG9ydEFyZ3VtZW50cyk7CiAgICAgdmlld3BvcnRDb25maWd1
cmF0aW9uQ2hhbmdlZCgpOwogCisgICAgaWYgKHdhc1VzaW5nTWluaW1hbFVJICE9IG1fdmlld3Bv
cnRDb25maWd1cmF0aW9uLnVzZXNNaW5pbWFsVUkoKSkKKyAgICAgICAgc2VuZChNZXNzYWdlczo6
V2ViUGFnZVByb3h5OjpTZXRVc2VzTWluaW1hbFVJKG1fdmlld3BvcnRDb25maWd1cmF0aW9uLnVz
ZXNNaW5pbWFsVUkoKSkpOworCiAgICAgaWYgKG9sZFdpZHRoICE9IHZpZXdwb3J0QXJndW1lbnRz
LndpZHRoKQogICAgICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlZpZXdwb3J0TWV0
YVRhZ1dpZHRoRGlkQ2hhbmdlKHZpZXdwb3J0QXJndW1lbnRzLndpZHRoKSk7CiB9CkBAIC0xOTE1
LDEzICsxOTE5LDE5IEBAIHZvaWQgV2ViUGFnZTo6c2V0Vmlld3BvcnRDb25maWd1cmF0aW9uTWlu
aW11bUxheW91dFNpemUoY29uc3QgRmxvYXRTaXplJiBzaXplKQogICAgIHZpZXdwb3J0Q29uZmln
dXJhdGlvbkNoYW5nZWQoKTsKIH0KIAotdm9pZCBXZWJQYWdlOjpzZXRNaW5pbXVtTGF5b3V0U2l6
ZUZvck1pbmltYWxVSShjb25zdCBGbG9hdFNpemUmIHNpemUpCit2b2lkIFdlYlBhZ2U6OnNldFZp
ZXdwb3J0Q29uZmlndXJhdGlvbk1pbmltdW1MYXlvdXRTaXplRm9yTWluaW1hbFVJKGNvbnN0IEZs
b2F0U2l6ZSYgc2l6ZSkKIHsKLSAgICByZXNldFRleHRBdXRvc2l6aW5nQmVmb3JlTGF5b3V0SWZO
ZWVkZWQobV9taW5pbXVtTGF5b3V0U2l6ZUZvck1pbmltYWxVSSwgc2l6ZSk7Ci0gICAgbV9taW5p
bXVtTGF5b3V0U2l6ZUZvck1pbmltYWxVSSA9IHNpemU7CisgICAgcmVzZXRUZXh0QXV0b3Npemlu
Z0JlZm9yZUxheW91dElmTmVlZGVkKG1fdmlld3BvcnRDb25maWd1cmF0aW9uLm1pbmltdW1MYXlv
dXRTaXplRm9yTWluaW1hbFVJKCksIHNpemUpOworICAgIG1fdmlld3BvcnRDb25maWd1cmF0aW9u
LnNldE1pbmltdW1MYXlvdXRTaXplRm9yTWluaW1hbFVJKHNpemUpOwogICAgIHZpZXdwb3J0Q29u
ZmlndXJhdGlvbkNoYW5nZWQoKTsKIH0KIAordm9pZCBXZWJQYWdlOjpzZXRNYXhpbXVtVW5vYnNj
dXJlZFNpemUoY29uc3QgRmxvYXRTaXplJiBtYXhpbXVtVW5vYnNjdXJlZFNpemUpCit7CisgICAg
bV9tYXhpbXVtVW5vYnNjdXJlZFNpemUgPSBtYXhpbXVtVW5vYnNjdXJlZFNpemU7CisgICAgdXBk
YXRlVmlld3BvcnRTaXplRm9yQ1NTVmlld3BvcnRVbml0cygpOworfQorCiBzdGF0aWMgaW5saW5l
IGJvb2wgd2l0aGluRXBzaWxvbihmbG9hdCBhLCBmbG9hdCBiKQogewogICAgIHJldHVybiBmYWJz
KGEgLSBiKSA8IHN0ZDo6bnVtZXJpY19saW1pdHM8ZmxvYXQ+OjplcHNpbG9uKCk7CkBAIC0xOTQw
LDcgKzE5NTAsNyBAQCB2b2lkIFdlYlBhZ2U6OnJlc2V0VGV4dEF1dG9zaXppbmdCZWZvcmVMYXlv
dXRJZk5lZWRlZChjb25zdCBGbG9hdFNpemUmIG9sZFNpemUsCiAgICAgfQogfQogCi12b2lkIFdl
YlBhZ2U6OmR5bmFtaWNWaWV3cG9ydFNpemVVcGRhdGUoY29uc3QgRmxvYXRTaXplJiBtaW5pbXVt
TGF5b3V0U2l6ZSwgY29uc3QgRmxvYXRSZWN0JiB0YXJnZXRFeHBvc2VkQ29udGVudFJlY3QsIGNv
bnN0IEZsb2F0UmVjdCYgdGFyZ2V0VW5vYnNjdXJlZFJlY3QsIGNvbnN0IFdlYkNvcmU6OkZsb2F0
UmVjdCYgdGFyZ2V0VW5vYnNjdXJlZFJlY3RJblNjcm9sbFZpZXdDb29yZGluYXRlcywgZG91Ymxl
IHRhcmdldFNjYWxlKQordm9pZCBXZWJQYWdlOjpkeW5hbWljVmlld3BvcnRTaXplVXBkYXRlKGNv
bnN0IEZsb2F0U2l6ZSYgbWluaW11bUxheW91dFNpemUsIGNvbnN0IEZsb2F0U2l6ZSYgbWluaW11
bUxheW91dFNpemVGb3JNaW5pbWFsVUksIGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYgbWF4aW11
bVVub2JzY3VyZWRTaXplLCBjb25zdCBGbG9hdFJlY3QmIHRhcmdldEV4cG9zZWRDb250ZW50UmVj
dCwgY29uc3QgRmxvYXRSZWN0JiB0YXJnZXRVbm9ic2N1cmVkUmVjdCwgY29uc3QgV2ViQ29yZTo6
RmxvYXRSZWN0JiB0YXJnZXRVbm9ic2N1cmVkUmVjdEluU2Nyb2xsVmlld0Nvb3JkaW5hdGVzLCBk
b3VibGUgdGFyZ2V0U2NhbGUpCiB7CiAgICAgVGVtcG9yYXJ5Q2hhbmdlPGJvb2w+IGR5bmFtaWNT
aXplVXBkYXRlR3VhcmQobV9pbkR5bmFtaWNTaXplVXBkYXRlLCB0cnVlKTsKICAgICAvLyBGSVhN
RTogdGhpcyBkb2VzIG5vdCBoYW5kbGUgdGhlIGNhc2VzIHdoZXJlIHRoZSBjb250ZW50IHdvdWxk
IGNoYW5nZSB0aGUgY29udGVudCBzaXplIG9yIHNjcm9sbCBwb3NpdGlvbiBmcm9tIEphdmFTY3Jp
cHQuCkBAIC0xOTc5LDkgKzE5ODksMTQgQEAgdm9pZCBXZWJQYWdlOjpkeW5hbWljVmlld3BvcnRT
aXplVXBkYXRlKGNvbnN0IEZsb2F0U2l6ZSYgbWluaW11bUxheW91dFNpemUsIGNvbnMKICAgICB9
CiAKICAgICByZXNldFRleHRBdXRvc2l6aW5nQmVmb3JlTGF5b3V0SWZOZWVkZWQobV92aWV3cG9y
dENvbmZpZ3VyYXRpb24ubWluaW11bUxheW91dFNpemUoKSwgbWluaW11bUxheW91dFNpemUpOwor
ICAgIHJlc2V0VGV4dEF1dG9zaXppbmdCZWZvcmVMYXlvdXRJZk5lZWRlZChtX3ZpZXdwb3J0Q29u
ZmlndXJhdGlvbi5taW5pbXVtTGF5b3V0U2l6ZUZvck1pbmltYWxVSSgpLCBtaW5pbXVtTGF5b3V0
U2l6ZUZvck1pbmltYWxVSSk7CiAgICAgbV92aWV3cG9ydENvbmZpZ3VyYXRpb24uc2V0TWluaW11
bUxheW91dFNpemUobWluaW11bUxheW91dFNpemUpOworICAgIG1fdmlld3BvcnRDb25maWd1cmF0
aW9uLnNldE1pbmltdW1MYXlvdXRTaXplRm9yTWluaW1hbFVJKG1pbmltdW1MYXlvdXRTaXplRm9y
TWluaW1hbFVJKTsKICAgICBJbnRTaXplIG5ld0xheW91dFNpemUgPSBtX3ZpZXdwb3J0Q29uZmln
dXJhdGlvbi5sYXlvdXRTaXplKCk7CisKICAgICBzZXRGaXhlZExheW91dFNpemUobmV3TGF5b3V0
U2l6ZSk7CisgICAgc2V0TWF4aW11bVVub2JzY3VyZWRTaXplKG1heGltdW1Vbm9ic2N1cmVkU2l6
ZSk7CisKICAgICBmcmFtZVZpZXcudXBkYXRlTGF5b3V0QW5kU3R5bGVJZk5lZWRlZFJlY3Vyc2l2
ZSgpOwogCiAgICAgSW50U2l6ZSBuZXdDb250ZW50U2l6ZSA9IGZyYW1lVmlldy5jb250ZW50c1Np
emUoKTsKQEAgLTIxNTIsMTQgKzIxNjcsMTIgQEAgdm9pZCBXZWJQYWdlOjp2aWV3cG9ydENvbmZp
Z3VyYXRpb25DaGFuZ2VkKCkKIAogICAgIG1fcGFnZS0+c2V0Wm9vbWVkT3V0UGFnZVNjYWxlRmFj
dG9yKG1fdmlld3BvcnRDb25maWd1cmF0aW9uLm1pbmltdW1TY2FsZSgpKTsKIAorICAgIHVwZGF0
ZVZpZXdwb3J0U2l6ZUZvckNTU1ZpZXdwb3J0VW5pdHMoKTsKKwogICAgIEZyYW1lVmlldyYgZnJh
bWVWaWV3ID0gKm1haW5GcmFtZVZpZXcoKTsKLSAgICBGbG9hdFNpemUgdmlld3BvcnRTaXplID0g
IW1fbWluaW11bUxheW91dFNpemVGb3JNaW5pbWFsVUkuaXNFbXB0eSgpID8gbV9taW5pbXVtTGF5
b3V0U2l6ZUZvck1pbmltYWxVSSA6IG1fdmlld3BvcnRDb25maWd1cmF0aW9uLm1pbmltdW1MYXlv
dXRTaXplKCk7Ci0gICAgdmlld3BvcnRTaXplLnNjYWxlKDEgLyBpbml0aWFsU2NhbGUpOwotICAg
IGZyYW1lVmlldy5zZXRWaWV3cG9ydFNpemUocm91bmRlZEludFNpemUodmlld3BvcnRTaXplKSk7
Ci0gICAgCiAgICAgSW50UG9pbnQgc2Nyb2xsUG9zaXRpb24gPSBmcmFtZVZpZXcuc2Nyb2xsUG9z
aXRpb24oKTsKICAgICBpZiAoIW1faGFzUmVjZWl2ZWRWaXNpYmxlQ29udGVudFJlY3RzQWZ0ZXJE
aWRDb21taXRMb2FkKSB7Ci0gICAgICAgIEZsb2F0U2l6ZSBtaW5pbXVtTGF5b3V0U2l6ZUluU2Ny
b2xsVmlld0Nvb3JkaW5hdGVzID0gbV92aWV3cG9ydENvbmZpZ3VyYXRpb24ubWluaW11bUxheW91
dFNpemUoKTsKKyAgICAgICAgRmxvYXRTaXplIG1pbmltdW1MYXlvdXRTaXplSW5TY3JvbGxWaWV3
Q29vcmRpbmF0ZXMgPSBtX3ZpZXdwb3J0Q29uZmlndXJhdGlvbi5hY3RpdmVNaW5pbXVtTGF5b3V0
U2l6ZUluU2Nyb2xsVmlld0Nvb3JkaW5hdGVzKCk7CiAgICAgICAgIG1pbmltdW1MYXlvdXRTaXpl
SW5TY3JvbGxWaWV3Q29vcmRpbmF0ZXMuc2NhbGUoMSAvIHNjYWxlKTsKICAgICAgICAgSW50U2l6
ZSBtaW5pbXVtTGF5b3V0U2l6ZUluRG9jdW1lbnRDb29yZGluYXRlcyA9IHJvdW5kZWRJbnRTaXpl
KG1pbmltdW1MYXlvdXRTaXplSW5TY3JvbGxWaWV3Q29vcmRpbmF0ZXMpOwogICAgICAgICBJbnRS
ZWN0IHVub2JzY3VyZWRDb250ZW50UmVjdChzY3JvbGxQb3NpdGlvbiwgbWluaW11bUxheW91dFNp
emVJbkRvY3VtZW50Q29vcmRpbmF0ZXMpOwpAQCAtMjE3NiwxMCArMjE4OSwyMSBAQCB2b2lkIFdl
YlBhZ2U6OnZpZXdwb3J0Q29uZmlndXJhdGlvbkNoYW5nZWQoKQogICAgICAgICAvLyBUaGlzIHRh
a2VzIHNjYWxlIGludG8gYWNjb3VudCwgc28gZG8gYWZ0ZXIgdGhlIHNjYWxlIGNoYW5nZS4KICAg
ICAgICAgZnJhbWVWaWV3LnNldEN1c3RvbUZpeGVkUG9zaXRpb25MYXlvdXRSZWN0KGVuY2xvc2lu
Z0ludFJlY3QoZnJhbWVWaWV3LnZpZXdwb3J0Q29uc3RyYWluZWRPYmplY3RzUmVjdCgpKSk7CiAK
LSAgICAgICAgZnJhbWVWaWV3LnNldEN1c3RvbVNpemVGb3JSZXNpemVFdmVudChleHBhbmRlZElu
dFNpemUobV92aWV3cG9ydENvbmZpZ3VyYXRpb24ubWluaW11bUxheW91dFNpemUoKSkpOworICAg
ICAgICBmcmFtZVZpZXcuc2V0Q3VzdG9tU2l6ZUZvclJlc2l6ZUV2ZW50KGV4cGFuZGVkSW50U2l6
ZShtX3ZpZXdwb3J0Q29uZmlndXJhdGlvbi5hY3RpdmVNaW5pbXVtTGF5b3V0U2l6ZUluU2Nyb2xs
Vmlld0Nvb3JkaW5hdGVzKCkpKTsKICAgICB9CiB9CiAKK3ZvaWQgV2ViUGFnZTo6dXBkYXRlVmll
d3BvcnRTaXplRm9yQ1NTVmlld3BvcnRVbml0cygpCit7CisgICAgRmxvYXRTaXplIGxhcmdlc3RV
bm9ic2N1cmVkUmVjdCA9IG1fbWF4aW11bVVub2JzY3VyZWRTaXplOworICAgIGlmIChsYXJnZXN0
VW5vYnNjdXJlZFJlY3QuaXNFbXB0eSgpKQorICAgICAgICBsYXJnZXN0VW5vYnNjdXJlZFJlY3Qg
PSBtX3ZpZXdwb3J0Q29uZmlndXJhdGlvbi5taW5pbXVtTGF5b3V0U2l6ZUZvck1pbmltYWxVSSgp
OworCisgICAgRnJhbWVWaWV3JiBmcmFtZVZpZXcgPSAqbWFpbkZyYW1lVmlldygpOworICAgIGxh
cmdlc3RVbm9ic2N1cmVkUmVjdC5zY2FsZSgxIC8gbV92aWV3cG9ydENvbmZpZ3VyYXRpb24uaW5p
dGlhbFNjYWxlKCkpOworICAgIGZyYW1lVmlldy5zZXRWaWV3cG9ydFNpemVGb3JDU1NWaWV3cG9y
dFVuaXRzKHJvdW5kZWRJbnRTaXplKGxhcmdlc3RVbm9ic2N1cmVkUmVjdCkpOworfQorCiB2b2lk
IFdlYlBhZ2U6OmFwcGxpY2F0aW9uV2lsbFJlc2lnbkFjdGl2ZSgpCiB7CiAgICAgW1tOU05vdGlm
aWNhdGlvbkNlbnRlciBkZWZhdWx0Q2VudGVyXSBwb3N0Tm90aWZpY2F0aW9uTmFtZTpXZWJVSUFw
cGxpY2F0aW9uV2lsbFJlc2lnbkFjdGl2ZU5vdGlmaWNhdGlvbiBvYmplY3Q6bmlsXTsK
</data>
<flag name="review"
          id="256397"
          type_id="1"
          status="+"
          setter="simon.fraser"
    />
          </attachment>
      

    </bug>

</bugzilla>