<?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>133159</bug_id>
          
          <creation_ts>2014-05-21 15:34:04 -0700</creation_ts>
          <short_desc>viewStateDidChange should always fully update ViewState</short_desc>
          <delta_ts>2014-05-29 14:51:03 -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>WebKit2</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>ASSIGNED</bug_status>
          <resolution></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="Gavin Barraclough">barraclough</reporter>
          <assigned_to name="Gavin Barraclough">barraclough</assigned_to>
          <cc>berto</cc>
    
    <cc>bshafiei</cc>
    
    <cc>bunhere</cc>
    
    <cc>cgarcia</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>commit-queue</cc>
    
    <cc>gustavo</cc>
    
    <cc>luiz</cc>
    
    <cc>mrobinson</cc>
    
    <cc>noam</cc>
    
    <cc>sam</cc>
    
    <cc>sergio</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>zeno</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1010842</commentid>
    <comment_count>0</comment_count>
    <who name="Gavin Barraclough">barraclough</who>
    <bug_when>2014-05-21 15:34:04 -0700</bug_when>
    <thetext>Currently WebPageProxy::viewStateDidChange is passed a mask of bits to update.

This has the following negative consequences:
 – WKWebView implicitly requires more detailed knowledge of the internal implementation of the PageClient.
 – Updates may unnecessarily be split over multiple IPC messages.
 – In order to support partial updates we make multiple virtual function calls to PageClient, which then makes duplicate objc calls.

Better to just always update the entire ViewState.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1011851</commentid>
    <comment_count>1</comment_count>
      <attachid>232099</attachid>
    <who name="Gavin Barraclough">barraclough</who>
    <bug_when>2014-05-26 17:50:50 -0700</bug_when>
    <thetext>Created attachment 232099
Fix</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1011852</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-05-26 17:52:31 -0700</bug_when>
    <thetext>Thanks for the patch. If this patch contains new public API please make sure it follows the guidelines for new WebKit2 GTK+ API. See http://trac.webkit.org/wiki/WebKitGTK/AddingNewWebKit2API</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1011853</commentid>
    <comment_count>3</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2014-05-26 17:59:58 -0700</bug_when>
    <thetext>Look good to me, but I would like Anders to review it as well.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1011854</commentid>
    <comment_count>4</comment_count>
      <attachid>232100</attachid>
    <who name="Gavin Barraclough">barraclough</who>
    <bug_when>2014-05-26 18:00:34 -0700</bug_when>
    <thetext>Created attachment 232100
gtk/efl fix</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1011905</commentid>
    <comment_count>5</comment_count>
      <attachid>232100</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2014-05-27 00:06:48 -0700</bug_when>
    <thetext>Comment on attachment 232100
gtk/efl fix

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

Thanks for fixing the GTK+ port too.

&gt; Source/WebKit2/UIProcess/API/gtk/PageClientImpl.cpp:110
&gt; +    if (webkitWebViewBaseIsFocused(WEBKIT_WEB_VIEW_BASE(m_viewWidget)))
&gt; +        viewState |= ViewState::IsFocused;
&gt; +    if (webkitWebViewBaseIsInWindowActive(WEBKIT_WEB_VIEW_BASE(m_viewWidget)))
&gt; +        viewState |= ViewState::WindowIsActive;
&gt; +    if (webkitWebViewBaseIsInWindow(WEBKIT_WEB_VIEW_BASE(m_viewWidget)))
&gt; +        viewState |= ViewState::IsInWindow;
&gt; +    if (webkitWebViewBaseIsVisible(WEBKIT_WEB_VIEW_BASE(m_viewWidget)))

Now that all these are in the same function, I would use a local variable to avoid casting all the time.
WebKitWebViewBase* webView = WEBKIT_WEB_VIEW_BASE(m_viewWidget);

if (webkitWebViewBaseIsFocused(webView))
....

I think it also improves a bit the readability.

&gt; Source/WebKit2/UIProcess/API/gtk/PageClientImpl.h:70
&gt; +    bool isViewVisible();

Why re-adding this as non-virtual?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1012310</commentid>
    <comment_count>6</comment_count>
      <attachid>232100</attachid>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2014-05-28 16:04:25 -0700</bug_when>
    <thetext>Comment on attachment 232100
gtk/efl fix

This looks really great, but please address the comments from Carlos.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1012329</commentid>
    <comment_count>7</comment_count>
    <who name="Gavin Barraclough">barraclough</who>
    <bug_when>2014-05-28 18:17:03 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; (From update of attachment 232100 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=232100&amp;action=review
&gt; 
&gt; Thanks for fixing the GTK+ port too.
&gt; 
&gt; &gt; Source/WebKit2/UIProcess/API/gtk/PageClientImpl.cpp:110
&gt; &gt; +    if (webkitWebViewBaseIsFocused(WEBKIT_WEB_VIEW_BASE(m_viewWidget)))
&gt; &gt; +        viewState |= ViewState::IsFocused;
&gt; &gt; +    if (webkitWebViewBaseIsInWindowActive(WEBKIT_WEB_VIEW_BASE(m_viewWidget)))
&gt; &gt; +        viewState |= ViewState::WindowIsActive;
&gt; &gt; +    if (webkitWebViewBaseIsInWindow(WEBKIT_WEB_VIEW_BASE(m_viewWidget)))
&gt; &gt; +        viewState |= ViewState::IsInWindow;
&gt; &gt; +    if (webkitWebViewBaseIsVisible(WEBKIT_WEB_VIEW_BASE(m_viewWidget)))
&gt; 
&gt; Now that all these are in the same function, I would use a local variable to avoid casting all the time.
&gt; WebKitWebViewBase* webView = WEBKIT_WEB_VIEW_BASE(m_viewWidget);
&gt; 
&gt; if (webkitWebViewBaseIsFocused(webView))
&gt; ....
&gt; 
&gt; I think it also improves a bit the readability.
&gt; 

Ah – yes, good point. Done.

&gt; &gt; Source/WebKit2/UIProcess/API/gtk/PageClientImpl.h:70
&gt; &gt; +    bool isViewVisible();
&gt; 
&gt; Why re-adding this as non-virtual?

Ooops, remnants of a partial refactor – that&apos;s gone now, removed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1012339</commentid>
    <comment_count>8</comment_count>
    <who name="Gavin Barraclough">barraclough</who>
    <bug_when>2014-05-28 18:42:06 -0700</bug_when>
    <thetext>Transmitting file data .................
Committed revision 169439.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1012491</commentid>
    <comment_count>9</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2014-05-29 13:48:25 -0700</bug_when>
    <thetext>&lt;rdar://problem/17069364&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1012499</commentid>
    <comment_count>10</comment_count>
    <who name="Babak Shafiei">bshafiei</who>
    <bug_when>2014-05-29 14:50:33 -0700</bug_when>
    <thetext>Roll out on trunk in https://trac.webkit.org/r169465</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>232099</attachid>
            <date>2014-05-26 17:50:50 -0700</date>
            <delta_ts>2014-05-26 18:00:34 -0700</delta_ts>
            <desc>Fix</desc>
            <filename>133159.1.patch</filename>
            <type>text/plain</type>
            <size>33430</size>
            <attacher name="Gavin Barraclough">barraclough</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDE2OTM2MikKKysrIFNvdXJjZS9XZWJLaXQyL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEwNiBAQAorMjAxNC0wNS0yNiAgR2F2aW4g
QmFycmFjbG91Z2ggIDxiYXJhY2xvdWdoQGFwcGxlLmNvbT4KKworICAgICAgICB2aWV3U3RhdGVE
aWRDaGFuZ2Ugc2hvdWxkIGFsd2F5cyBmdWxseSB1cGRhdGUgVmlld1N0YXRlCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzMxNTkKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBDdXJyZW50bHkgV2ViUGFnZVBy
b3h5Ojp2aWV3U3RhdGVEaWRDaGFuZ2UgaXMgcGFzc2VkIGEgbWFzayBvZiBiaXRzIHRvIHVwZGF0
ZS4KKworICAgICAgICBUaGlzIGhhcyB0aGUgZm9sbG93aW5nIG5lZ2F0aXZlIGNvbnNlcXVlbmNl
czoKKyAgICAgICAgIOKAkyBXS1dlYlZpZXcgaW1wbGljaXRseSByZXF1aXJlcyBtb3JlIGRldGFp
bGVkIGtub3dsZWRnZSBvZiB0aGUgaW50ZXJuYWwgaW1wbGVtZW50YXRpb24gb2YgdGhlIFBhZ2VD
bGllbnQuCisgICAgICAgICDigJMgVXBkYXRlcyBtYXkgdW5uZWNlc3NhcmlseSBiZSBzcGxpdCBv
dmVyIG11bHRpcGxlIElQQyBtZXNzYWdlcy4KKyAgICAgICAgIOKAkyBJbiBvcmRlciB0byBzdXBw
b3J0IHBhcnRpYWwgdXBkYXRlcyB3ZSBtYWtlIG11bHRpcGxlIHZpcnR1YWwgZnVuY3Rpb24gY2Fs
bHMgdG8gUGFnZUNsaWVudCwgd2hpY2ggdGhlbiBtYWtlcyBkdXBsaWNhdGUgb2JqYyBjYWxscy4K
KworICAgICAgICBCZXR0ZXIgdG8ganVzdCBhbHdheXMgdXBkYXRlIHRoZSBlbnRpcmUgVmlld1N0
YXRlLgorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW06CisgICAg
ICAgICgtW1dLV2ViVmlldyBkaWRNb3ZlVG9XaW5kb3ddKToKKyAgICAgICAgICAgIC0gcmVtb3Zl
ZCBhcmd1bWVudCB0byB2aWV3U3RhdGVEaWRDaGFuZ2UuCisgICAgICAgICogVUlQcm9jZXNzL0FQ
SS9ndGsvUGFnZUNsaWVudEltcGwuY3BwOgorICAgICAgICAoV2ViS2l0OjpQYWdlQ2xpZW50SW1w
bDo6dmlld1N0YXRlKToKKyAgICAgICAgKFdlYktpdDo6UGFnZUNsaWVudEltcGw6OmlzVmlld1dp
bmRvd0FjdGl2ZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OlBhZ2VDbGllbnRJbXBsOjpp
c1ZpZXdGb2N1c2VkKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6UGFnZUNsaWVudEltcGw6
OmlzVmlld1Zpc2libGUpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpQYWdlQ2xpZW50SW1w
bDo6aXNWaWV3SW5XaW5kb3cpOiBEZWxldGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3Rr
L1BhZ2VDbGllbnRJbXBsLmg6CisgICAgICAgICAgICAtIG1lcmdlZCBpc1ZpZXdXaW5kb3dBY3Rp
dmUvaXNWaWV3Rm9jdXNlZC9pc1ZpZXdWaXNpYmxlL2lzVmlld0luV2luZG93IHRvIHZpZXdTdGF0
ZS4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL21hYy9XS1ZpZXcubW06CisgICAgICAgICgtW1dL
VmlldyBiZWNvbWVGaXJzdFJlc3BvbmRlcl0pOgorICAgICAgICAoLVtXS1ZpZXcgcmVzaWduRmly
c3RSZXNwb25kZXJdKToKKyAgICAgICAgKC1bV0tWaWV3IHZpZXdEaWRNb3ZlVG9XaW5kb3ddKToK
KyAgICAgICAgKC1bV0tWaWV3IF93aW5kb3dEaWRCZWNvbWVLZXk6XSk6CisgICAgICAgICgtW1dL
VmlldyBfd2luZG93RGlkUmVzaWduS2V5Ol0pOgorICAgICAgICAoLVtXS1ZpZXcgX3dpbmRvd0Rp
ZE1pbmlhdHVyaXplOl0pOgorICAgICAgICAoLVtXS1ZpZXcgX3dpbmRvd0RpZERlbWluaWF0dXJp
emU6XSk6CisgICAgICAgICgtW1dLVmlldyBfd2luZG93RGlkT3JkZXJPZmZTY3JlZW46XSk6Cisg
ICAgICAgICgtW1dLVmlldyBfd2luZG93RGlkT3JkZXJPblNjcmVlbjpdKToKKyAgICAgICAgKC1b
V0tWaWV3IF93aW5kb3dEaWRDaGFuZ2VPY2NsdXNpb25TdGF0ZTpdKToKKyAgICAgICAgKC1bV0tW
aWV3IHZpZXdEaWRIaWRlXSk6CisgICAgICAgICgtW1dLVmlldyB2aWV3RGlkVW5oaWRlXSk6Cisg
ICAgICAgICgtW1dLVmlldyBfYWN0aXZlU3BhY2VEaWRDaGFuZ2U6XSk6CisgICAgICAgICgtW1dL
VmlldyBfc2V0VGh1bWJuYWlsVmlldzpdKToKKyAgICAgICAgKC1bV0tWaWV3IGVuZERlZmVycmlu
Z1ZpZXdJbldpbmRvd0NoYW5nZXNdKToKKyAgICAgICAgKC1bV0tWaWV3IGVuZERlZmVycmluZ1Zp
ZXdJbldpbmRvd0NoYW5nZXNTeW5jXSk6CisgICAgICAgICAgICAtIHJlbW92ZWQgYXJndW1lbnQg
dG8gdmlld1N0YXRlRGlkQ2hhbmdlLgorICAgICAgICAqIFVJUHJvY2Vzcy9Db29yZGluYXRlZEdy
YXBoaWNzL1dlYlZpZXcuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3Ojp2aWV3U3RhdGUp
OgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3Ojppc1ZpZXdXaW5kb3dBY3RpdmUpOiBEZWxldGVk
LgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3Ojppc1ZpZXdGb2N1c2VkKTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYktpdDo6V2ViVmlldzo6aXNWaWV3VmlzaWJsZSk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJLaXQ6OldlYlZpZXc6OmlzVmlld0luV2luZG93KTogRGVsZXRlZC4KKyAgICAgICAgKiBV
SVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9XZWJWaWV3Lmg6CisgICAgICAgICAgICAtIG1l
cmdlZCBpc1ZpZXdXaW5kb3dBY3RpdmUvaXNWaWV3Rm9jdXNlZC9pc1ZpZXdWaXNpYmxlL2lzVmll
d0luV2luZG93IHRvIHZpZXdTdGF0ZS4KKyAgICAgICAgKiBVSVByb2Nlc3MvUGFnZUNsaWVudC5o
OgorICAgICAgICAoV2ViS2l0OjpQYWdlQ2xpZW50Ojppc1ZpZXdWaXNpYmxlT3JPY2NsdWRlZCk6
IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OlBhZ2VDbGllbnQ6OmlzVmlzdWFsbHlJZGxlKTog
RGVsZXRlZC4KKyAgICAgICAgICAgIC0gbWVyZ2VkIGlzVmlld1Zpc2libGVPck9jY2x1ZGVkL2lz
VmlzdWFsbHlJZGxlIHRvIHN1YmNsYXNzIHZpZXdTdGF0ZSBtZXRob2RzLgorICAgICAgICAqIFVJ
UHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6
OldlYlBhZ2VQcm94eSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6cmVhdHRhY2hU
b1dlYlByb2Nlc3MpOgorICAgICAgICAgICAgLSB1cGRhdGVWaWV3U3RhdGUgLT4gUGFnZUNsaWVu
dDo6dmlld1N0YXRlCisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6dmlld1N0YXRlRGlk
Q2hhbmdlKToKKyAgICAgICAgICAgIC0gYXJndW1lbnQgcmVtb3ZlZDsgdXBkYXRlVmlld1N0YXRl
IC0+IFBhZ2VDbGllbnQ6OnZpZXdTdGF0ZS4KKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5
OjpzZXRDdXJzb3IpOgorICAgICAgICAgICAgLSBjYWxsIGlzVmlld1dpbmRvd0FjdGl2ZSBvbiBX
ZWJQYWdlUHJveHksIHJhdGhlciB0aGFuIFBhZ2VDbGllbnQuCisgICAgICAgIChXZWJLaXQ6Oldl
YlBhZ2VQcm94eTo6dXBkYXRlQmFja2luZ1N0b3JlRGlzY2FyZGFibGVTdGF0ZSk6CisgICAgICAg
ICAgICAtIGNhbGwgaXNWaWV3V2luZG93QWN0aXZlIG9uIFdlYlBhZ2VQcm94eSwgcmF0aGVyIHRo
YW4gUGFnZUNsaWVudC4KKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5Ojp1cGRhdGVWaWV3
U3RhdGUpOiBEZWxldGVkLgorICAgICAgICAgICAgLSByZW1vdmVkIC0gdmlld1N0YXRlIG1ldGhv
ZCBtb3ZlZCB0byBQYWdlQ2xpZW50LgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHku
aDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5Ojppc1ZpZXdXaW5kb3dBY3RpdmUpOgor
ICAgICAgICAgICAgLSBhZGRlZCBtaXNzaW5nIGltcGxlbWVudGF0aW9uLgorICAgICAgICAoV2Vi
S2l0OjpXZWJQYWdlUHJveHk6OmlzVmlld1Zpc2libGUpOgorICAgICAgICAgICAgLSByZW1vdmVk
IGFyZ3VtZW50IHRvIHZpZXdTdGF0ZURpZENoYW5nZS4KKyAgICAgICAgKiBVSVByb2Nlc3MvV2Vi
UHJvY2Vzc1Byb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Byb3h5Ojp3aW5k
b3dTZXJ2ZXJDb25uZWN0aW9uU3RhdGVDaGFuZ2VkKToKKyAgICAgICAgICAgIC0gcmVtb3ZlZCBh
cmd1bWVudCB0byB2aWV3U3RhdGVEaWRDaGFuZ2UuCisgICAgICAgICogVUlQcm9jZXNzL2lvcy9Q
YWdlQ2xpZW50SW1wbElPUy5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvUGFnZUNsaWVudElt
cGxJT1MubW06CisgICAgICAgIChXZWJLaXQ6OlBhZ2VDbGllbnRJbXBsOjp2aWV3U3RhdGUpOgor
ICAgICAgICAoV2ViS2l0OjpQYWdlQ2xpZW50SW1wbDo6aXNWaWV3V2luZG93QWN0aXZlKTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYktpdDo6UGFnZUNsaWVudEltcGw6OmlzVmlld0ZvY3VzZWQpOiBE
ZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpQYWdlQ2xpZW50SW1wbDo6aXNWaWV3VmlzaWJsZSk6
IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OlBhZ2VDbGllbnRJbXBsOjppc1ZpZXdJbldpbmRv
dyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OlBhZ2VDbGllbnRJbXBsOjppc1ZpZXdWaXNp
YmxlT3JPY2NsdWRlZCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OlBhZ2VDbGllbnRJbXBs
Ojppc1Zpc3VhbGx5SWRsZSk6IERlbGV0ZWQuCisgICAgICAgICAgICAtIG1lcmdlZCBpc1ZpZXdX
aW5kb3dBY3RpdmUvaXNWaWV3Rm9jdXNlZC9pc1ZpZXdWaXNpYmxlL2lzVmlld0luV2luZG93IHRv
IHZpZXdTdGF0ZS4KKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXcubW06Cisg
ICAgICAgICgtW1dLQ29udGVudFZpZXcgZGlkTW92ZVRvV2luZG93XSk6CisgICAgICAgICgtW1dL
Q29udGVudFZpZXcgX2FwcGxpY2F0aW9uRGlkRW50ZXJCYWNrZ3JvdW5kOl0pOgorICAgICAgICAo
LVtXS0NvbnRlbnRWaWV3IF9hcHBsaWNhdGlvbldpbGxFbnRlckZvcmVncm91bmQ6XSk6CisgICAg
ICAgICAgICAtIHJlbW92ZWQgYXJndW1lbnQgdG8gdmlld1N0YXRlRGlkQ2hhbmdlLgorICAgICAg
ICAqIFVJUHJvY2Vzcy9tYWMvUGFnZUNsaWVudEltcGwuaDoKKyAgICAgICAgKiBVSVByb2Nlc3Mv
bWFjL1BhZ2VDbGllbnRJbXBsLm1tOgorICAgICAgICAoV2ViS2l0OjpQYWdlQ2xpZW50SW1wbDo6
dmlld1N0YXRlKToKKyAgICAgICAgKFdlYktpdDo6UGFnZUNsaWVudEltcGw6OnNob3dDb3JyZWN0
aW9uUGFuZWwpOgorICAgICAgICAoV2ViS2l0OjpQYWdlQ2xpZW50SW1wbDo6c2hvd0RpY3RhdGlv
bkFsdGVybmF0aXZlVUkpOgorICAgICAgICAoV2ViS2l0OjpQYWdlQ2xpZW50SW1wbDo6aXNWaWV3
V2luZG93QWN0aXZlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6UGFnZUNsaWVudEltcGw6
OmlzVmlld0ZvY3VzZWQpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpQYWdlQ2xpZW50SW1w
bDo6aXNWaWV3VmlzaWJsZU9yT2NjbHVkZWQpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpQ
YWdlQ2xpZW50SW1wbDo6aXNWaXN1YWxseUlkbGUpOiBEZWxldGVkLgorICAgICAgICAgICAgLSBt
ZXJnZWQgaXNWaWV3V2luZG93QWN0aXZlL2lzVmlld0ZvY3VzZWQvaXNWaWV3VmlzaWJsZS9pc1Zp
ZXdJbldpbmRvdyB0byB2aWV3U3RhdGUuCisKIDIwMTQtMDUtMjIgIEdhdmluIEJhcnJhY2xvdWdo
ICA8YmFyYWNsb3VnaEBhcHBsZS5jb20+CiAKICAgICAgICAgQWRkIFVJIHByb2Nlc3Mgd2F0Y2hk
b2cgb24gaU9TIHRvIGVuc3VyZSBXZWJQcm9jZXNzIGNvbm5lY3Rpb25zIGNsb3NlCkluZGV4OiBT
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGFnZUNsaWVudC5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9QYWdlQ2xpZW50LmgJKHJldmlzaW9uIDE2OTM2MikKKysrIFNv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QYWdlQ2xpZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTMy
LDYgKzMyLDcgQEAKICNpbmNsdWRlICJXZWJQb3B1cE1lbnVQcm94eS5oIgogI2luY2x1ZGUgPFdl
YkNvcmUvQWx0ZXJuYXRpdmVUZXh0Q2xpZW50Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9FZGl0b3JD
bGllbnQuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1ZpZXdTdGF0ZS5oPgogI2luY2x1ZGUgPHd0Zi9G
b3J3YXJkLmg+CiAKICNpZiBQTEFURk9STShDT0NPQSkKQEAgLTEwMCwyMyArMTAxLDEyIEBAIHB1
YmxpYzoKICAgICAvLyBSZXR1cm4gdGhlIHNpemUgb2YgdGhlIHZpZXcgdGhlIHBhZ2UgaXMgYXNz
b2NpYXRlZCB3aXRoLgogICAgIHZpcnR1YWwgV2ViQ29yZTo6SW50U2l6ZSB2aWV3U2l6ZSgpID0g
MDsKIAotICAgIC8vIFJldHVybiB3aGV0aGVyIHRoZSB2aWV3J3MgY29udGFpbmluZyB3aW5kb3cg
aXMgYWN0aXZlLgotICAgIHZpcnR1YWwgYm9vbCBpc1ZpZXdXaW5kb3dBY3RpdmUoKSA9IDA7Ci0K
LSAgICAvLyBSZXR1cm4gd2hldGhlciB0aGUgdmlldyBpcyBmb2N1c2VkLgotICAgIHZpcnR1YWwg
Ym9vbCBpc1ZpZXdGb2N1c2VkKCkgPSAwOwotCi0gICAgLy8gUmV0dXJuIHdoZXRoZXIgdGhlIHZp
ZXcgaXMgdmlzaWJsZS4KLSAgICB2aXJ0dWFsIGJvb2wgaXNWaWV3VmlzaWJsZSgpID0gMDsKLQot
ICAgIC8vIFJldHVybiB3aGV0aGVyIHRoZSB2aWV3IGlzIHZpc2libGUsIG9yIG9jY2x1ZGVkIGJ5
IGFub3RoZXIgd2luZG93LgotICAgIHZpcnR1YWwgYm9vbCBpc1ZpZXdWaXNpYmxlT3JPY2NsdWRl
ZCgpIHsgcmV0dXJuIGlzVmlld1Zpc2libGUoKTsgfQotCisjaWYgUExBVEZPUk0oTUFDKQogICAg
IC8vIFJldHVybiB3aGV0aGVyIHRoZSB2aWV3IGlzIGluIGEgd2luZG93LgogICAgIHZpcnR1YWwg
Ym9vbCBpc1ZpZXdJbldpbmRvdygpID0gMDsKKyNlbmRpZgogCi0gICAgLy8gUmV0dXJuIHdoZXRo
ZXIgdGhlIHZpZXcgaXMgdmlzdWFsbHkgaWRsZS4KLSAgICB2aXJ0dWFsIGJvb2wgaXNWaXN1YWxs
eUlkbGUoKSB7IHJldHVybiAhaXNWaWV3VmlzaWJsZSgpOyB9CisgICAgdmlydHVhbCBXZWJDb3Jl
OjpWaWV3U3RhdGU6OkZsYWdzIHZpZXdTdGF0ZSgpID0gMDsKIAogICAgIC8vIFJldHVybiB0aGUg
bGF5ZXIgaG9zdGluZyBtb2RlIGZvciB0aGUgdmlldy4KICAgICB2aXJ0dWFsIExheWVySG9zdGlu
Z01vZGUgdmlld0xheWVySG9zdGluZ01vZGUoKSB7IHJldHVybiBMYXllckhvc3RpbmdNb2RlOjpJ
blByb2Nlc3M7IH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHku
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHku
Y3BwCShyZXZpc2lvbiAxNjkzNjIpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFn
ZVByb3h5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjcwLDcgKzI3MCw3IEBAIFdlYlBhZ2VQcm94
eTo6V2ViUGFnZVByb3h5KFBhZ2VDbGllbnQmIHAKICAgICAsIG1fdXNlckFnZW50KHN0YW5kYXJk
VXNlckFnZW50KCkpCiAgICAgLCBtX2dlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RNYW5hZ2Vy
KCp0aGlzKQogICAgICwgbV9ub3RpZmljYXRpb25QZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIoKnRo
aXMpCi0gICAgLCBtX3ZpZXdTdGF0ZShWaWV3U3RhdGU6Ok5vRmxhZ3MpCisgICAgLCBtX3ZpZXdT
dGF0ZShtX3BhZ2VDbGllbnQudmlld1N0YXRlKCkpCiAjaWYgUExBVEZPUk0oSU9TKQogICAgICwg
bV9hY3Rpdml0eVRva2VuKG51bGxwdHIpCiAjZW5kaWYKQEAgLTM2NSw4ICszNjUsNyBAQCBXZWJQ
YWdlUHJveHk6OldlYlBhZ2VQcm94eShQYWdlQ2xpZW50JiBwCiAgICAgICAgICAgICBtX3VzZXJD
b250ZW50Q29udHJvbGxlci0+YWRkUHJvY2VzcyhtX3Byb2Nlc3MuZ2V0KCkpOwogICAgICAgICBt
X3Zpc2l0ZWRMaW5rUHJvdmlkZXItPmFkZFByb2Nlc3MobV9wcm9jZXNzLmdldCgpKTsKICAgICB9
Ci0KLSAgICB1cGRhdGVWaWV3U3RhdGUoKTsKKyAgICAKICAgICB1cGRhdGVBY3Rpdml0eVRva2Vu
KCk7CiAgICAgCiAjaWYgSEFWRShPVVRfT0ZfUFJPQ0VTU19MQVlFUl9IT1NUSU5HKQpAQCAtNTI1
LDcgKzUyNCw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpyZWF0dGFjaFRvV2ViUHJvY2VzcygKICAg
ICBBU1NFUlQoIWlzVmFsaWQoKSk7CiAgICAgQVNTRVJUKG1fcHJvY2Vzcy0+c3RhdGUoKSA9PSBX
ZWJQcm9jZXNzUHJveHk6OlN0YXRlOjpUZXJtaW5hdGVkKTsKIAotICAgIHVwZGF0ZVZpZXdTdGF0
ZSgpOworICAgIG1fdmlld1N0YXRlID0gbV9wYWdlQ2xpZW50LnZpZXdTdGF0ZSgpOwogICAgIHVw
ZGF0ZUFjdGl2aXR5VG9rZW4oKTsKICAgICAKICAgICBtX2lzVmFsaWQgPSB0cnVlOwpAQCAtMTA1
NCwzNiArMTA1MywxNSBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6cmVxdWVzdFNjcm9sbChjb25zdCBG
CiAgICAgbV9wYWdlQ2xpZW50LnJlcXVlc3RTY3JvbGwoc2Nyb2xsUG9zaXRpb24sIGlzUHJvZ3Jh
bW1hdGljU2Nyb2xsKTsKIH0KIAotdm9pZCBXZWJQYWdlUHJveHk6OnVwZGF0ZVZpZXdTdGF0ZShW
aWV3U3RhdGU6OkZsYWdzIGZsYWdzVG9VcGRhdGUpCi17Ci0gICAgbV92aWV3U3RhdGUgJj0gfmZs
YWdzVG9VcGRhdGU7Ci0gICAgaWYgKGZsYWdzVG9VcGRhdGUgJiBWaWV3U3RhdGU6OklzRm9jdXNl
ZCAmJiBtX3BhZ2VDbGllbnQuaXNWaWV3Rm9jdXNlZCgpKQotICAgICAgICBtX3ZpZXdTdGF0ZSB8
PSBWaWV3U3RhdGU6OklzRm9jdXNlZDsKLSAgICBpZiAoZmxhZ3NUb1VwZGF0ZSAmIFZpZXdTdGF0
ZTo6V2luZG93SXNBY3RpdmUgJiYgbV9wYWdlQ2xpZW50LmlzVmlld1dpbmRvd0FjdGl2ZSgpKQot
ICAgICAgICBtX3ZpZXdTdGF0ZSB8PSBWaWV3U3RhdGU6OldpbmRvd0lzQWN0aXZlOwotICAgIGlm
IChmbGFnc1RvVXBkYXRlICYgVmlld1N0YXRlOjpJc1Zpc2libGUgJiYgbV9wYWdlQ2xpZW50Lmlz
Vmlld1Zpc2libGUoKSkKLSAgICAgICAgbV92aWV3U3RhdGUgfD0gVmlld1N0YXRlOjpJc1Zpc2li
bGU7Ci0gICAgaWYgKGZsYWdzVG9VcGRhdGUgJiBWaWV3U3RhdGU6OklzVmlzaWJsZU9yT2NjbHVk
ZWQgJiYgbV9wYWdlQ2xpZW50LmlzVmlld1Zpc2libGVPck9jY2x1ZGVkKCkpCi0gICAgICAgIG1f
dmlld1N0YXRlIHw9IFZpZXdTdGF0ZTo6SXNWaXNpYmxlT3JPY2NsdWRlZDsKLSAgICBpZiAoZmxh
Z3NUb1VwZGF0ZSAmIFZpZXdTdGF0ZTo6SXNJbldpbmRvdyAmJiBtX3BhZ2VDbGllbnQuaXNWaWV3
SW5XaW5kb3coKSkKLSAgICAgICAgbV92aWV3U3RhdGUgfD0gVmlld1N0YXRlOjpJc0luV2luZG93
OwotICAgIGlmIChmbGFnc1RvVXBkYXRlICYgVmlld1N0YXRlOjpJc1Zpc3VhbGx5SWRsZSAmJiBt
X3BhZ2VDbGllbnQuaXNWaXN1YWxseUlkbGUoKSkKLSAgICAgICAgbV92aWV3U3RhdGUgfD0gVmll
d1N0YXRlOjpJc1Zpc3VhbGx5SWRsZTsKLX0KLQotdm9pZCBXZWJQYWdlUHJveHk6OnZpZXdTdGF0
ZURpZENoYW5nZShWaWV3U3RhdGU6OkZsYWdzIG1heUhhdmVDaGFuZ2VkLCBXYW50c1JlcGx5T3JO
b3Qgd2FudHNSZXBseSkKK3ZvaWQgV2ViUGFnZVByb3h5Ojp2aWV3U3RhdGVEaWRDaGFuZ2UoV2Fu
dHNSZXBseU9yTm90IHdhbnRzUmVwbHkpCiB7CiAgICAgaWYgKCFpc1ZhbGlkKCkpCiAgICAgICAg
IHJldHVybjsKIAotICAgIC8vIElmIHRoZSB2aXNpYmlsaXR5IHN0YXRlIG1heSBoYXZlIGNoYW5n
ZWQsIHRoZW4gc28gbWF5IHRoZSB2aXN1YWxseSBpZGxlICYgb2NjbHVkZWQgYWdub3N0aWMgc3Rh
dGUuCi0gICAgaWYgKG1heUhhdmVDaGFuZ2VkICYgVmlld1N0YXRlOjpJc1Zpc2libGUpCi0gICAg
ICAgIG1heUhhdmVDaGFuZ2VkIHw9IFZpZXdTdGF0ZTo6SXNWaXNpYmxlT3JPY2NsdWRlZCB8IFZp
ZXdTdGF0ZTo6SXNWaXN1YWxseUlkbGU7Ci0KICAgICAvLyBSZWNvcmQgdGhlIHByaW9yIHZpZXcg
c3RhdGUsIHVwZGF0ZSB0aGUgZmxhZ3MgdGhhdCBtYXkgaGF2ZSBjaGFuZ2VkLAogICAgIC8vIGFu
ZCBjaGVjayB3aGljaCBmbGFncyBoYXZlIGFjdHVhbGx5IGNoYW5nZWQuCiAgICAgVmlld1N0YXRl
OjpGbGFncyBwcmV2aW91c1ZpZXdTdGF0ZSA9IG1fdmlld1N0YXRlOwotICAgIHVwZGF0ZVZpZXdT
dGF0ZShtYXlIYXZlQ2hhbmdlZCk7CisgICAgbV92aWV3U3RhdGUgPSBtX3BhZ2VDbGllbnQudmll
d1N0YXRlKCk7CiAgICAgVmlld1N0YXRlOjpGbGFncyBjaGFuZ2VkID0gbV92aWV3U3RhdGUgXiBw
cmV2aW91c1ZpZXdTdGF0ZTsKIAogICAgIGlmIChjaGFuZ2VkKQpAQCAtMTEwMSw3ICsxMDc5LDcg
QEAgdm9pZCBXZWJQYWdlUHJveHk6OnZpZXdTdGF0ZURpZENoYW5nZShWaQogICAgIGlmICgoY2hh
bmdlZCAmIFZpZXdTdGF0ZTo6SXNWaXNpYmxlKSAmJiAhaXNWaWV3VmlzaWJsZSgpKQogICAgICAg
ICBtX3Byb2Nlc3MtPnJlc3BvbnNpdmVuZXNzVGltZXIoKS0+c3RvcCgpOwogCi0gICAgaWYgKCht
YXlIYXZlQ2hhbmdlZCAmIFZpZXdTdGF0ZTo6SXNJbldpbmRvdykgJiYgKG1fdmlld1N0YXRlICYg
Vmlld1N0YXRlOjpJc0luV2luZG93KSkgeworICAgIGlmICgoY2hhbmdlZCAmIFZpZXdTdGF0ZTo6
SXNJbldpbmRvdykgJiYgKG1fdmlld1N0YXRlICYgVmlld1N0YXRlOjpJc0luV2luZG93KSkgewog
ICAgICAgICBMYXllckhvc3RpbmdNb2RlIGxheWVySG9zdGluZ01vZGUgPSBtX3BhZ2VDbGllbnQu
dmlld0xheWVySG9zdGluZ01vZGUoKTsKICAgICAgICAgaWYgKG1fbGF5ZXJIb3N0aW5nTW9kZSAh
PSBsYXllckhvc3RpbmdNb2RlKSB7CiAgICAgICAgICAgICBtX2xheWVySG9zdGluZ01vZGUgPSBs
YXllckhvc3RpbmdNb2RlOwpAQCAtMTEwOSw3ICsxMDg3LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6
OnZpZXdTdGF0ZURpZENoYW5nZShWaQogICAgICAgICB9CiAgICAgfQogCi0gICAgaWYgKChtYXlI
YXZlQ2hhbmdlZCAmIFZpZXdTdGF0ZTo6SXNJbldpbmRvdykgJiYgIShtX3ZpZXdTdGF0ZSAmIFZp
ZXdTdGF0ZTo6SXNJbldpbmRvdykpIHsKKyAgICBpZiAoKGNoYW5nZWQgJiBWaWV3U3RhdGU6Oklz
SW5XaW5kb3cpICYmICEobV92aWV3U3RhdGUgJiBWaWV3U3RhdGU6OklzSW5XaW5kb3cpKSB7CiAj
aWYgRU5BQkxFKElOUFVUX1RZUEVfQ09MT1JfUE9QT1ZFUikKICAgICAgICAgLy8gV2hlbiBsZWF2
aW5nIHRoZSBjdXJyZW50IHBhZ2UsIGNsb3NlIHRoZSBwb3BvdmVyIGNvbG9yIHdlbGwuCiAgICAg
ICAgIGlmIChtX2NvbG9yUGlja2VyKQpAQCAtMzgwNSw3ICszNzgzLDcgQEAgdm9pZCBXZWJQYWdl
UHJveHk6OnNldEN1cnNvcihjb25zdCBXZWJDbwogewogICAgIC8vIFRoZSBXZWIgcHJvY2VzcyBt
YXkgaGF2ZSBhc2tlZCB0byBjaGFuZ2UgdGhlIGN1cnNvciB3aGVuIHRoZSB2aWV3IHdhcyBpbiBh
biBhY3RpdmUgd2luZG93LCBidXQKICAgICAvLyBpZiBpdCBpcyBubyBsb25nZXIgaW4gYSB3aW5k
b3cgb3IgdGhlIHdpbmRvdyBpcyBub3QgYWN0aXZlLCB0aGVuIHRoZSBjdXJzb3Igc2hvdWxkIG5v
dCBjaGFuZ2UuCi0gICAgaWYgKG1fcGFnZUNsaWVudC5pc1ZpZXdXaW5kb3dBY3RpdmUoKSkKKyAg
ICBpZiAoaXNWaWV3V2luZG93QWN0aXZlKCkpCiAgICAgICAgIG1fcGFnZUNsaWVudC5zZXRDdXJz
b3IoY3Vyc29yKTsKIH0KIApAQCAtNDY4OSw3ICs0NjY3LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6
OnVwZGF0ZUJhY2tpbmdTdG9yZURpcwogICAgIGlmICghbV9wcm9jZXNzLT5yZXNwb25zaXZlbmVz
c1RpbWVyKCktPmlzUmVzcG9uc2l2ZSgpKQogICAgICAgICBpc0Rpc2NhcmRhYmxlID0gZmFsc2U7
CiAgICAgZWxzZQotICAgICAgICBpc0Rpc2NhcmRhYmxlID0gIW1fcGFnZUNsaWVudC5pc1ZpZXdX
aW5kb3dBY3RpdmUoKSB8fCAhaXNWaWV3VmlzaWJsZSgpOworICAgICAgICBpc0Rpc2NhcmRhYmxl
ID0gIWlzVmlld1dpbmRvd0FjdGl2ZSgpIHx8ICFpc1ZpZXdWaXNpYmxlKCk7CiAKICAgICBtX2Ry
YXdpbmdBcmVhLT5zZXRCYWNraW5nU3RvcmVJc0Rpc2NhcmRhYmxlKGlzRGlzY2FyZGFibGUpOwog
fQpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAkocmV2aXNpb24g
MTY5MzYyKQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC01NjgsMTUgKzU2OCwxNSBAQCBwdWJsaWM6CiAgICAgYm9vbCBkZWxlZ2F0
ZXNTY3JvbGxpbmcoKSBjb25zdCB7IHJldHVybiBtX2RlbGVnYXRlc1Njcm9sbGluZzsgfQogCiAg
ICAgZW51bSBjbGFzcyBXYW50c1JlcGx5T3JOb3QgeyBEb2VzTm90V2FudFJlcGx5LCBEb2VzV2Fu
dFJlcGx5IH07Ci0gICAgdm9pZCB2aWV3U3RhdGVEaWRDaGFuZ2UoV2ViQ29yZTo6Vmlld1N0YXRl
OjpGbGFncyBtYXlIYXZlQ2hhbmdlZCwgV2FudHNSZXBseU9yTm90ID0gV2FudHNSZXBseU9yTm90
OjpEb2VzTm90V2FudFJlcGx5KTsKKyAgICB2b2lkIHZpZXdTdGF0ZURpZENoYW5nZShXYW50c1Jl
cGx5T3JOb3QgPSBXYW50c1JlcGx5T3JOb3Q6OkRvZXNOb3RXYW50UmVwbHkpOwogICAgIGJvb2wg
aXNJbldpbmRvdygpIGNvbnN0IHsgcmV0dXJuIG1fdmlld1N0YXRlICYgV2ViQ29yZTo6Vmlld1N0
YXRlOjpJc0luV2luZG93OyB9CiAgICAgdm9pZCB3YWl0Rm9yRGlkVXBkYXRlVmlld1N0YXRlKCk7
CiAKICAgICB2b2lkIGxheWVySG9zdGluZ01vZGVEaWRDaGFuZ2UoKTsKIAogICAgIFdlYkNvcmU6
OkludFNpemUgdmlld1NpemUoKSBjb25zdDsKKyAgICBib29sIGlzVmlld1dpbmRvd0FjdGl2ZSgp
IGNvbnN0IHsgcmV0dXJuIG1fdmlld1N0YXRlICYgV2ViQ29yZTo6Vmlld1N0YXRlOjpXaW5kb3dJ
c0FjdGl2ZTsgfQogICAgIGJvb2wgaXNWaWV3VmlzaWJsZSgpIGNvbnN0IHsgcmV0dXJuIG1fdmll
d1N0YXRlICYgV2ViQ29yZTo6Vmlld1N0YXRlOjpJc1Zpc2libGU7IH0KLSAgICBib29sIGlzVmll
d1dpbmRvd0FjdGl2ZSgpIGNvbnN0OwogICAgIGJvb2wgaXNQcm9jZXNzU3VwcHJlc3NpYmxlKCkg
Y29uc3Q7CiAKICAgICB2b2lkIGFkZE1JTUVUeXBlV2l0aEN1c3RvbUNvbnRlbnRQcm92aWRlcihj
b25zdCBTdHJpbmcmIG1pbWVUeXBlKTsKQEAgLTExMDIsNyArMTEwMiw2IEBAIHByaXZhdGU6CiAg
ICAgV2ViUGFnZVByb3h5KFBhZ2VDbGllbnQmLCBXZWJQcm9jZXNzUHJveHkmLCB1aW50NjRfdCBw
YWdlSUQsIGNvbnN0IFdlYlBhZ2VDb25maWd1cmF0aW9uJik7CiAgICAgdm9pZCBwbGF0Zm9ybUlu
aXRpYWxpemUoKTsKIAotICAgIHZvaWQgdXBkYXRlVmlld1N0YXRlKFdlYkNvcmU6OlZpZXdTdGF0
ZTo6RmxhZ3MgZmxhZ3NUb1VwZGF0ZSA9IFdlYkNvcmU6OlZpZXdTdGF0ZTo6QWxsRmxhZ3MpOwog
ICAgIHZvaWQgdXBkYXRlQWN0aXZpdHlUb2tlbigpOwogICAgICAgICAKICAgICB2b2lkIHJlc2V0
U3RhdGUoKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHku
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJv
eHkuY3BwCShyZXZpc2lvbiAxNjkzNjIpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2Vi
UHJvY2Vzc1Byb3h5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjY5LDcgKzY2OSw3IEBAIHZvaWQg
V2ViUHJvY2Vzc1Byb3h5OjpyZWxlYXNlUGFnZUNhY2hlKCkKIHZvaWQgV2ViUHJvY2Vzc1Byb3h5
Ojp3aW5kb3dTZXJ2ZXJDb25uZWN0aW9uU3RhdGVDaGFuZ2VkKCkKIHsKICAgICBmb3IgKGNvbnN0
IGF1dG8mIHBhZ2UgOiBtX3BhZ2VNYXAudmFsdWVzKCkpCi0gICAgICAgIHBhZ2UtPnZpZXdTdGF0
ZURpZENoYW5nZShWaWV3U3RhdGU6OklzVmlzdWFsbHlJZGxlKTsKKyAgICAgICAgcGFnZS0+dmll
d1N0YXRlRGlkQ2hhbmdlKCk7CiB9CiAKIHZvaWQgV2ViUHJvY2Vzc1Byb3h5OjpyZXF1ZXN0VGVy
bWluYXRpb24oKQpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dl
YlZpZXcubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2Nv
YS9XS1dlYlZpZXcubW0JKHJldmlzaW9uIDE2OTM2MikKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC05MTgsNyArOTE4
LDcgQEAgLSAoQk9PTClfem9vbVRvUmVjdDooV2ViQ29yZTo6RmxvYXRSZWN0KQogCiAtICh2b2lk
KWRpZE1vdmVUb1dpbmRvdwogewotICAgIF9wYWdlLT52aWV3U3RhdGVEaWRDaGFuZ2UoV2ViQ29y
ZTo6Vmlld1N0YXRlOjpJc0luV2luZG93KTsKKyAgICBfcGFnZS0+dmlld1N0YXRlRGlkQ2hhbmdl
KCk7CiB9CiAKICNwcmFnbWEgbWFyayAtIFVJU2Nyb2xsVmlld0RlbGVnYXRlCkluZGV4OiBTb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9QYWdlQ2xpZW50SW1wbC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvUGFnZUNsaWVudEltcGwuY3Bw
CShyZXZpc2lvbiAxNjkzNjIpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9Q
YWdlQ2xpZW50SW1wbC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTk3LDI2ICs5NywyNCBAQCBXZWJD
b3JlOjpJbnRTaXplIFBhZ2VDbGllbnRJbXBsOjp2aWV3U2l6CiAgICAgcmV0dXJuIEludFNpemUo
YWxsb2NhdGlvbi53aWR0aCwgYWxsb2NhdGlvbi5oZWlnaHQpOwogfQogCi1ib29sIFBhZ2VDbGll
bnRJbXBsOjppc1ZpZXdXaW5kb3dBY3RpdmUoKQorVmlld1N0YXRlOjpGbGFncyBQYWdlQ2xpZW50
SW1wbDo6dmlld1N0YXRlKCkKIHsKLSAgICByZXR1cm4gd2Via2l0V2ViVmlld0Jhc2VJc0luV2lu
ZG93QWN0aXZlKFdFQktJVF9XRUJfVklFV19CQVNFKG1fdmlld1dpZGdldCkpOworICAgIFZpZXdT
dGF0ZTo6RmxhZ3Mgdmlld1N0YXRlID0gVmlld1N0YXRlOjpOb0ZsYWdzOworICAgIAorICAgIGlm
ICh3ZWJraXRXZWJWaWV3QmFzZUlzRm9jdXNlZChXRUJLSVRfV0VCX1ZJRVdfQkFTRShtX3ZpZXdX
aWRnZXQpKSkKKyAgICAgICAgdmlld1N0YXRlIHw9IFZpZXdTdGF0ZTo6SXNGb2N1c2VkOworICAg
IGlmICh3ZWJraXRXZWJWaWV3QmFzZUlzSW5XaW5kb3dBY3RpdmUoV0VCS0lUX1dFQl9WSUVXX0JB
U0UobV92aWV3V2lkZ2V0KSkpCisgICAgICAgIHZpZXdTdGF0ZSB8PSBWaWV3U3RhdGU6OldpbmRv
d0lzQWN0aXZlOworICAgIGlmICh3ZWJraXRXZWJWaWV3QmFzZUlzSW5XaW5kb3coV0VCS0lUX1dF
Ql9WSUVXX0JBU0UobV92aWV3V2lkZ2V0KSkpCisgICAgICAgIHZpZXdTdGF0ZSB8PSBWaWV3U3Rh
dGU6OklzSW5XaW5kb3c7CisgICAgaWYgKHdlYmtpdFdlYlZpZXdCYXNlSXNWaXNpYmxlKFdFQktJ
VF9XRUJfVklFV19CQVNFKG1fdmlld1dpZGdldCkpKQorICAgICAgICB2aWV3U3RhdGUgfD0gKFZp
ZXdTdGF0ZTo6SXNWaXNpYmxlIHwgVmlld1N0YXRlOjpJc1Zpc2libGVPck9jY2x1ZGVkKTsKKyAg
ICBlbHNlCisgICAgICAgIHZpZXdTdGF0ZSB8PSBWaWV3U3RhdGU6OklzVmlzdWFsbHlJZGxlOwor
ICAgIAorICAgIHJldHVybiB2aWV3U3RhdGU7CiB9Ci0KLWJvb2wgUGFnZUNsaWVudEltcGw6Omlz
Vmlld0ZvY3VzZWQoKQotewotICAgIHJldHVybiB3ZWJraXRXZWJWaWV3QmFzZUlzRm9jdXNlZChX
RUJLSVRfV0VCX1ZJRVdfQkFTRShtX3ZpZXdXaWRnZXQpKTsKLX0KLQotYm9vbCBQYWdlQ2xpZW50
SW1wbDo6aXNWaWV3VmlzaWJsZSgpCi17Ci0gICAgcmV0dXJuIHdlYmtpdFdlYlZpZXdCYXNlSXNW
aXNpYmxlKFdFQktJVF9XRUJfVklFV19CQVNFKG1fdmlld1dpZGdldCkpOwotfQotCi1ib29sIFBh
Z2VDbGllbnRJbXBsOjppc1ZpZXdJbldpbmRvdygpCi17Ci0gICAgcmV0dXJuIHdlYmtpdFdlYlZp
ZXdCYXNlSXNJbldpbmRvdyhXRUJLSVRfV0VCX1ZJRVdfQkFTRShtX3ZpZXdXaWRnZXQpKTsKLX0K
LQorICAgIAogdm9pZCBQYWdlQ2xpZW50SW1wbDo6UGFnZUNsaWVudEltcGw6OnByb2Nlc3NEaWRF
eGl0KCkKIHsKICAgICBub3RJbXBsZW1lbnRlZCgpOwpJbmRleDogU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9ndGsvUGFnZUNsaWVudEltcGwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9QYWdlQ2xpZW50SW1wbC5oCShyZXZpc2lvbiAxNjkzNjIp
CisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9QYWdlQ2xpZW50SW1wbC5oCSh3
b3JraW5nIGNvcHkpCkBAIC02NywxMCArNjcsOCBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9p
ZCBzY3JvbGxWaWV3KGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIHNjcm9sbFJlY3QsIGNvbnN0IFdl
YkNvcmU6OkludFNpemUmIHNjcm9sbE9mZnNldCkgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lk
IHJlcXVlc3RTY3JvbGwoY29uc3QgV2ViQ29yZTo6RmxvYXRQb2ludCYgc2Nyb2xsUG9zaXRpb24s
IGJvb2wgaXNQcm9ncmFtbWF0aWNTY3JvbGwpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgV2ViQ29y
ZTo6SW50U2l6ZSB2aWV3U2l6ZSgpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgYm9vbCBpc1ZpZXdX
aW5kb3dBY3RpdmUoKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIGJvb2wgaXNWaWV3Rm9jdXNlZCgp
IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgYm9vbCBpc1ZpZXdWaXNpYmxlKCkgb3ZlcnJpZGU7Ci0g
ICAgdmlydHVhbCBib29sIGlzVmlld0luV2luZG93KCkgb3ZlcnJpZGU7CisgICAgYm9vbCBpc1Zp
ZXdWaXNpYmxlKCk7CisgICAgdmlydHVhbCBXZWJDb3JlOjpWaWV3U3RhdGU6OkZsYWdzIHZpZXdT
dGF0ZSgpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCBwcm9jZXNzRGlkRXhpdCgpIG92ZXJy
aWRlOwogICAgIHZpcnR1YWwgdm9pZCBkaWRSZWxhdW5jaFByb2Nlc3MoKSBvdmVycmlkZTsKICAg
ICB2aXJ0dWFsIHZvaWQgcGFnZUNsb3NlZCgpIG92ZXJyaWRlOwpJbmRleDogU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9tYWMvV0tWaWV3Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvbWFjL1dLVmlldy5tbQkocmV2aXNpb24gMTY5MzYyKQorKysgU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9tYWMvV0tWaWV3Lm1tCSh3b3JraW5nIGNvcHkpCkBA
IC0zNTMsNyArMzUzLDcgQEAgLSAoQk9PTCliZWNvbWVGaXJzdFJlc3BvbmRlcgogICAgIF9kYXRh
LT5faW5CZWNvbWVGaXJzdFJlc3BvbmRlciA9IHRydWU7CiAgICAgCiAgICAgW3NlbGYgX3VwZGF0
ZVNlY3VyZUlucHV0U3RhdGVdOwotICAgIF9kYXRhLT5fcGFnZS0+dmlld1N0YXRlRGlkQ2hhbmdl
KFZpZXdTdGF0ZTo6SXNGb2N1c2VkKTsKKyAgICBfZGF0YS0+X3BhZ2UtPnZpZXdTdGF0ZURpZENo
YW5nZSgpOwogCiAgICAgX2RhdGEtPl9pbkJlY29tZUZpcnN0UmVzcG9uZGVyID0gZmFsc2U7CiAg
ICAgCkBAIC0zODUsNyArMzg1LDcgQEAgLSAoQk9PTClyZXNpZ25GaXJzdFJlc3BvbmRlcgogICAg
IGlmICghX2RhdGEtPl9wYWdlLT5tYWludGFpbnNJbmFjdGl2ZVNlbGVjdGlvbigpKQogICAgICAg
ICBfZGF0YS0+X3BhZ2UtPmNsZWFyU2VsZWN0aW9uKCk7CiAgICAgCi0gICAgX2RhdGEtPl9wYWdl
LT52aWV3U3RhdGVEaWRDaGFuZ2UoVmlld1N0YXRlOjpJc0ZvY3VzZWQpOworICAgIF9kYXRhLT5f
cGFnZS0+dmlld1N0YXRlRGlkQ2hhbmdlKCk7CiAKICAgICBfZGF0YS0+X2luUmVzaWduRmlyc3RS
ZXNwb25kZXIgPSBmYWxzZTsKIApAQCAtMjQ0OCwxMiArMjQ0OCw5IEBAIC0gKHZvaWQpdmlld0Rp
ZE1vdmVUb1dpbmRvdwogICAgIGlmIChbc2VsZiB3aW5kb3ddKSB7CiAgICAgICAgIFtzZWxmIGRv
V2luZG93RGlkQ2hhbmdlU2NyZWVuXTsKIAotICAgICAgICBWaWV3U3RhdGU6OkZsYWdzIHZpZXdT
dGF0ZUNoYW5nZXMgPSBWaWV3U3RhdGU6OldpbmRvd0lzQWN0aXZlIHwgVmlld1N0YXRlOjpJc1Zp
c2libGU7CiAgICAgICAgIGlmIChbc2VsZiBpc0RlZmVycmluZ1ZpZXdJbldpbmRvd0NoYW5nZXNd
KQogICAgICAgICAgICAgX2RhdGEtPl92aWV3SW5XaW5kb3dDaGFuZ2VXYXNEZWZlcnJlZCA9IFlF
UzsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgdmlld1N0YXRlQ2hhbmdlcyB8PSBWaWV3U3Rh
dGU6OklzSW5XaW5kb3c7Ci0gICAgICAgIF9kYXRhLT5fcGFnZS0+dmlld1N0YXRlRGlkQ2hhbmdl
KHZpZXdTdGF0ZUNoYW5nZXMpOworICAgICAgICBfZGF0YS0+X3BhZ2UtPnZpZXdTdGF0ZURpZENo
YW5nZSgpOwogCiAgICAgICAgIFtzZWxmIF91cGRhdGVXaW5kb3dBbmRWaWV3RnJhbWVzXTsKIApA
QCAtMjQ2NiwxMiArMjQ2Myw5IEBAIC0gKHZvaWQpdmlld0RpZE1vdmVUb1dpbmRvdwogCiAgICAg
ICAgIFtzZWxmIF9hY2Nlc3NpYmlsaXR5UmVnaXN0ZXJVSVByb2Nlc3NUb2tlbnNdOwogICAgIH0g
ZWxzZSB7Ci0gICAgICAgIFZpZXdTdGF0ZTo6RmxhZ3Mgdmlld1N0YXRlQ2hhbmdlcyA9IFZpZXdT
dGF0ZTo6V2luZG93SXNBY3RpdmUgfCBWaWV3U3RhdGU6OklzVmlzaWJsZTsKICAgICAgICAgaWYg
KFtzZWxmIGlzRGVmZXJyaW5nVmlld0luV2luZG93Q2hhbmdlc10pCiAgICAgICAgICAgICBfZGF0
YS0+X3ZpZXdJbldpbmRvd0NoYW5nZVdhc0RlZmVycmVkID0gWUVTOwotICAgICAgICBlbHNlCi0g
ICAgICAgICAgICB2aWV3U3RhdGVDaGFuZ2VzIHw9IFZpZXdTdGF0ZTo6SXNJbldpbmRvdzsKLSAg
ICAgICAgX2RhdGEtPl9wYWdlLT52aWV3U3RhdGVEaWRDaGFuZ2Uodmlld1N0YXRlQ2hhbmdlcyk7
CisgICAgICAgIF9kYXRhLT5fcGFnZS0+dmlld1N0YXRlRGlkQ2hhbmdlKCk7CiAKICAgICAgICAg
W05TRXZlbnQgcmVtb3ZlTW9uaXRvcjpfZGF0YS0+X2ZsYWdzQ2hhbmdlZEV2ZW50TW9uaXRvcl07
CiAgICAgICAgIF9kYXRhLT5fZmxhZ3NDaGFuZ2VkRXZlbnRNb25pdG9yID0gbmlsOwpAQCAtMjQ5
Miw3ICsyNDg2LDcgQEAgLSAodm9pZClfd2luZG93RGlkQmVjb21lS2V5OihOU05vdGlmaWNhdAog
ICAgIE5TV2luZG93ICprZXlXaW5kb3cgPSBbbm90aWZpY2F0aW9uIG9iamVjdF07CiAgICAgaWYg
KGtleVdpbmRvdyA9PSBbc2VsZiB3aW5kb3ddIHx8IGtleVdpbmRvdyA9PSBbW3NlbGYgd2luZG93
XSBhdHRhY2hlZFNoZWV0XSkgewogICAgICAgICBbc2VsZiBfdXBkYXRlU2VjdXJlSW5wdXRTdGF0
ZV07Ci0gICAgICAgIF9kYXRhLT5fcGFnZS0+dmlld1N0YXRlRGlkQ2hhbmdlKFZpZXdTdGF0ZTo6
V2luZG93SXNBY3RpdmUpOworICAgICAgICBfZGF0YS0+X3BhZ2UtPnZpZXdTdGF0ZURpZENoYW5n
ZSgpOwogICAgIH0KIH0KIApAQCAtMjUxMSwxOCArMjUwNSwxOCBAQCAtICh2b2lkKV93aW5kb3dE
aWRSZXNpZ25LZXk6KE5TTm90aWZpY2F0CiAgICAgTlNXaW5kb3cgKmZvcm1lcktleVdpbmRvdyA9
IFtub3RpZmljYXRpb24gb2JqZWN0XTsKICAgICBpZiAoZm9ybWVyS2V5V2luZG93ID09IFtzZWxm
IHdpbmRvd10gfHwgZm9ybWVyS2V5V2luZG93ID09IFtbc2VsZiB3aW5kb3ddIGF0dGFjaGVkU2hl
ZXRdKSB7CiAgICAgICAgIFtzZWxmIF91cGRhdGVTZWN1cmVJbnB1dFN0YXRlXTsKLSAgICAgICAg
X2RhdGEtPl9wYWdlLT52aWV3U3RhdGVEaWRDaGFuZ2UoVmlld1N0YXRlOjpXaW5kb3dJc0FjdGl2
ZSk7CisgICAgICAgIF9kYXRhLT5fcGFnZS0+dmlld1N0YXRlRGlkQ2hhbmdlKCk7CiAgICAgfQog
fQogCiAtICh2b2lkKV93aW5kb3dEaWRNaW5pYXR1cml6ZTooTlNOb3RpZmljYXRpb24gKilub3Rp
ZmljYXRpb24KIHsKLSAgICBfZGF0YS0+X3BhZ2UtPnZpZXdTdGF0ZURpZENoYW5nZShWaWV3U3Rh
dGU6OklzVmlzaWJsZSk7CisgICAgX2RhdGEtPl9wYWdlLT52aWV3U3RhdGVEaWRDaGFuZ2UoKTsK
IH0KIAogLSAodm9pZClfd2luZG93RGlkRGVtaW5pYXR1cml6ZTooTlNOb3RpZmljYXRpb24gKilu
b3RpZmljYXRpb24KIHsKLSAgICBfZGF0YS0+X3BhZ2UtPnZpZXdTdGF0ZURpZENoYW5nZShWaWV3
U3RhdGU6OklzVmlzaWJsZSk7CisgICAgX2RhdGEtPl9wYWdlLT52aWV3U3RhdGVEaWRDaGFuZ2Uo
KTsKIH0KIAogLSAodm9pZClfd2luZG93RGlkTW92ZTooTlNOb3RpZmljYXRpb24gKilub3RpZmlj
YXRpb24KQEAgLTI1MzcsMTIgKzI1MzEsMTIgQEAgLSAodm9pZClfd2luZG93RGlkUmVzaXplOihO
U05vdGlmaWNhdGlvbgogCiAtICh2b2lkKV93aW5kb3dEaWRPcmRlck9mZlNjcmVlbjooTlNOb3Rp
ZmljYXRpb24gKilub3RpZmljYXRpb24KIHsKLSAgICBfZGF0YS0+X3BhZ2UtPnZpZXdTdGF0ZURp
ZENoYW5nZShWaWV3U3RhdGU6OklzVmlzaWJsZSB8IFZpZXdTdGF0ZTo6V2luZG93SXNBY3RpdmUp
OworICAgIF9kYXRhLT5fcGFnZS0+dmlld1N0YXRlRGlkQ2hhbmdlKCk7CiB9CiAKIC0gKHZvaWQp
X3dpbmRvd0RpZE9yZGVyT25TY3JlZW46KE5TTm90aWZpY2F0aW9uICopbm90aWZpY2F0aW9uCiB7
Ci0gICAgX2RhdGEtPl9wYWdlLT52aWV3U3RhdGVEaWRDaGFuZ2UoVmlld1N0YXRlOjpJc1Zpc2li
bGUgfCBWaWV3U3RhdGU6OldpbmRvd0lzQWN0aXZlKTsKKyAgICBfZGF0YS0+X3BhZ2UtPnZpZXdT
dGF0ZURpZENoYW5nZSgpOwogfQogCiAtICh2b2lkKV93aW5kb3dEaWRDaGFuZ2VCYWNraW5nUHJv
cGVydGllczooTlNOb3RpZmljYXRpb24gKilub3RpZmljYXRpb24KQEAgLTI1NTgsNyArMjU1Miw3
IEBAIC0gKHZvaWQpX3dpbmRvd0RpZENoYW5nZUJhY2tpbmdQcm9wZXJ0aWUKICNpZiBfX01BQ19P
U19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwOTAKIC0gKHZvaWQpX3dpbmRvd0RpZENoYW5n
ZU9jY2x1c2lvblN0YXRlOihOU05vdGlmaWNhdGlvbiAqKW5vdGlmaWNhdGlvbgogewotICAgIF9k
YXRhLT5fcGFnZS0+dmlld1N0YXRlRGlkQ2hhbmdlKFZpZXdTdGF0ZTo6SXNWaXNpYmxlKTsKKyAg
ICBfZGF0YS0+X3BhZ2UtPnZpZXdTdGF0ZURpZENoYW5nZSgpOwogfQogI2VuZGlmCiAKQEAgLTI1
ODIsMTIgKzI1NzYsMTIgQEAgLSAoQk9PTCltb3VzZURvd25DYW5Nb3ZlV2luZG93CiAKIC0gKHZv
aWQpdmlld0RpZEhpZGUKIHsKLSAgICBfZGF0YS0+X3BhZ2UtPnZpZXdTdGF0ZURpZENoYW5nZShW
aWV3U3RhdGU6OklzVmlzaWJsZSk7CisgICAgX2RhdGEtPl9wYWdlLT52aWV3U3RhdGVEaWRDaGFu
Z2UoKTsKIH0KIAogLSAodm9pZCl2aWV3RGlkVW5oaWRlCiB7Ci0gICAgX2RhdGEtPl9wYWdlLT52
aWV3U3RhdGVEaWRDaGFuZ2UoVmlld1N0YXRlOjpJc1Zpc2libGUpOworICAgIF9kYXRhLT5fcGFn
ZS0+dmlld1N0YXRlRGlkQ2hhbmdlKCk7CiB9CiAKIC0gKHZvaWQpdmlld0RpZENoYW5nZUJhY2tp
bmdQcm9wZXJ0aWVzCkBAIC0yNjAzLDcgKzI1OTcsNyBAQCAtICh2b2lkKXZpZXdEaWRDaGFuZ2VC
YWNraW5nUHJvcGVydGllcwogCiAtICh2b2lkKV9hY3RpdmVTcGFjZURpZENoYW5nZTooTlNOb3Rp
ZmljYXRpb24gKilub3RpZmljYXRpb24KIHsKLSAgICBfZGF0YS0+X3BhZ2UtPnZpZXdTdGF0ZURp
ZENoYW5nZShWaWV3U3RhdGU6OklzVmlzaWJsZSk7CisgICAgX2RhdGEtPl9wYWdlLT52aWV3U3Rh
dGVEaWRDaGFuZ2UoKTsKIH0KIAogLSAodm9pZClfYWNjZXNzaWJpbGl0eVJlZ2lzdGVyVUlQcm9j
ZXNzVG9rZW5zCkBAIC0zNDkwLDcgKzM0ODQsNyBAQCAtICh2b2lkKV9zZXRUaHVtYm5haWxWaWV3
OihfV0tUaHVtYm5haWxWCiAgICAgZWxzZQogICAgICAgICBbc2VsZiBfc2V0QWNjZWxlcmF0ZWRD
b21wb3NpdGluZ01vZGVSb290TGF5ZXI6X2RhdGEtPl9yb290TGF5ZXIuZ2V0KCldOwogCi0gICAg
X2RhdGEtPl9wYWdlLT52aWV3U3RhdGVEaWRDaGFuZ2UoVmlld1N0YXRlOjpXaW5kb3dJc0FjdGl2
ZSB8IFZpZXdTdGF0ZTo6SXNJbldpbmRvdyB8IFZpZXdTdGF0ZTo6SXNWaXNpYmxlKTsKKyAgICBf
ZGF0YS0+X3BhZ2UtPnZpZXdTdGF0ZURpZENoYW5nZSgpOwogfQogCiAtIChfV0tUaHVtYm5haWxW
aWV3ICopX3RodW1ibmFpbFZpZXcKQEAgLTM3NDgsNyArMzc0Miw3IEBAIC0gKHZvaWQpZW5kRGVm
ZXJyaW5nVmlld0luV2luZG93Q2hhbmdlcwogICAgIF9kYXRhLT5fc2hvdWxkRGVmZXJWaWV3SW5X
aW5kb3dDaGFuZ2VzID0gTk87CiAKICAgICBpZiAoX2RhdGEtPl92aWV3SW5XaW5kb3dDaGFuZ2VX
YXNEZWZlcnJlZCkgewotICAgICAgICBfZGF0YS0+X3BhZ2UtPnZpZXdTdGF0ZURpZENoYW5nZShW
aWV3U3RhdGU6OklzSW5XaW5kb3cpOworICAgICAgICBfZGF0YS0+X3BhZ2UtPnZpZXdTdGF0ZURp
ZENoYW5nZSgpOwogICAgICAgICBfZGF0YS0+X3ZpZXdJbldpbmRvd0NoYW5nZVdhc0RlZmVycmVk
ID0gTk87CiAgICAgfQogfQpAQCAtMzc2Niw3ICszNzYwLDcgQEAgLSAodm9pZCllbmREZWZlcnJp
bmdWaWV3SW5XaW5kb3dDaGFuZ2VzUwogICAgIF9kYXRhLT5fc2hvdWxkRGVmZXJWaWV3SW5XaW5k
b3dDaGFuZ2VzID0gTk87CiAKICAgICBpZiAoX2RhdGEtPl92aWV3SW5XaW5kb3dDaGFuZ2VXYXNE
ZWZlcnJlZCkgewotICAgICAgICBfZGF0YS0+X3BhZ2UtPnZpZXdTdGF0ZURpZENoYW5nZShWaWV3
U3RhdGU6OklzSW5XaW5kb3csIGhhc1BlbmRpbmdWaWV3SW5XaW5kb3dDaGFuZ2UgPyBXZWJQYWdl
UHJveHk6OldhbnRzUmVwbHlPck5vdDo6RG9lc1dhbnRSZXBseSA6IFdlYlBhZ2VQcm94eTo6V2Fu
dHNSZXBseU9yTm90OjpEb2VzTm90V2FudFJlcGx5KTsKKyAgICAgICAgX2RhdGEtPl9wYWdlLT52
aWV3U3RhdGVEaWRDaGFuZ2UoaGFzUGVuZGluZ1ZpZXdJbldpbmRvd0NoYW5nZSA/IFdlYlBhZ2VQ
cm94eTo6V2FudHNSZXBseU9yTm90OjpEb2VzV2FudFJlcGx5IDogV2ViUGFnZVByb3h5OjpXYW50
c1JlcGx5T3JOb3Q6OkRvZXNOb3RXYW50UmVwbHkpOwogICAgICAgICBfZGF0YS0+X3ZpZXdJbldp
bmRvd0NoYW5nZVdhc0RlZmVycmVkID0gTk87CiAgICAgfQogCkluZGV4OiBTb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9XZWJWaWV3LmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9XZWJWaWV3LmNw
cAkocmV2aXNpb24gMTY5MzYyKQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Nvb3JkaW5h
dGVkR3JhcGhpY3MvV2ViVmlldy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEyNiw2ICsxMjYsMjEg
QEAgdm9pZCBXZWJWaWV3OjpzZXRWaXNpYmxlKGJvb2wgdmlzaWJsZSkKICAgICAgICAgZHJhd2lu
Z0FyZWEtPnZpc2liaWxpdHlEaWRDaGFuZ2UoKTsKIH0KIAorVmlld1N0YXRlOjpGbGFncyBXZWJW
aWV3Ojp2aWV3U3RhdGUoKQoreworICAgIFZpZXdTdGF0ZTo6RmxhZ3Mgdmlld1N0YXRlID0gVmll
d1N0YXRlOjpJc0luV2luZG93IHwgVmlld1N0YXRlOjpXaW5kb3dJc0FjdGl2ZTsKKyAgICAKKyAg
ICBpZiAoaXNGb2N1c2VkKCkpCisgICAgICAgIHZpZXdTdGF0ZSB8PSBWaWV3U3RhdGU6OklzRm9j
dXNlZDsKKyAgICAKKyAgICBpZiAoaXNWaXNpYmxlKCkpCisgICAgICAgIHZpZXdTdGF0ZSB8PSAo
Vmlld1N0YXRlOjpJc1Zpc2libGUgfCBWaWV3U3RhdGU6OklzVmlzaWJsZU9yT2NjbHVkZWQpOwor
ICAgIGVsc2UKKyAgICAgICAgdmlld1N0YXRlIHw9IFZpZXdTdGF0ZTo6SXNWaXN1YWxseUlkbGU7
CisgICAgCisgICAgcmV0dXJuIHZpZXdTdGF0ZTsKK30KKyAgICAKIHZvaWQgV2ViVmlldzo6c2V0
VXNlclZpZXdwb3J0VHJhbnNsYXRpb24oZG91YmxlIHR4LCBkb3VibGUgdHkpCiB7CiAgICAgbV91
c2VyVmlld3BvcnRUcmFuc2Zvcm0gPSBUcmFuc2Zvcm1hdGlvbk1hdHJpeCgpLnRyYW5zbGF0ZSh0
eCwgdHkpOwpAQCAtMzIzLDI4ICszMzgsNiBAQCBib29sIFdlYlZpZXc6OmlzQWN0aXZlKCkgY29u
c3QKICAgICByZXR1cm4gc2NlbmUtPmlzQWN0aXZlKCk7CiB9CiAKLWJvb2wgV2ViVmlldzo6aXNW
aWV3V2luZG93QWN0aXZlKCkKLXsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotICAgIHJldHVybiB0
cnVlOwotfQotCi1ib29sIFdlYlZpZXc6OmlzVmlld0ZvY3VzZWQoKQotewotICAgIHJldHVybiBp
c0ZvY3VzZWQoKTsKLX0KLQotYm9vbCBXZWJWaWV3Ojppc1ZpZXdWaXNpYmxlKCkKLXsKLSAgICBy
ZXR1cm4gaXNWaXNpYmxlKCk7Ci19Ci0KLWJvb2wgV2ViVmlldzo6aXNWaWV3SW5XaW5kb3coKQot
ewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci0gICAgcmV0dXJuIHRydWU7Ci19Ci0KIHZvaWQgV2Vi
Vmlldzo6cHJvY2Vzc0RpZEV4aXQoKQogewogICAgIG1fY2xpZW50LndlYlByb2Nlc3NDcmFzaGVk
KHRoaXMsIG1fcGFnZS0+dXJsQXRQcm9jZXNzRXhpdCgpKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL1dlYlZpZXcuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9XZWJWaWV3LmgJKHJl
dmlzaW9uIDE2OTM2MikKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db29yZGluYXRlZEdy
YXBoaWNzL1dlYlZpZXcuaAkod29ya2luZyBjb3B5KQpAQCAtMTM1LDEwICsxMzUsNyBAQCBwcm90
ZWN0ZWQ6CiAKICAgICB2aXJ0dWFsIFdlYkNvcmU6OkludFNpemUgdmlld1NpemUoKSBvdmVycmlk
ZTsKIAotICAgIHZpcnR1YWwgYm9vbCBpc1ZpZXdXaW5kb3dBY3RpdmUoKSBvdmVycmlkZTsKLSAg
ICB2aXJ0dWFsIGJvb2wgaXNWaWV3Rm9jdXNlZCgpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgYm9v
bCBpc1ZpZXdWaXNpYmxlKCkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBib29sIGlzVmlld0luV2lu
ZG93KCkgb3ZlcnJpZGU7CisgICAgdmlydHVhbCBXZWJDb3JlOjpWaWV3U3RhdGU6OkZsYWdzIHZp
ZXdTdGF0ZSgpIG92ZXJyaWRlOwogCiAgICAgdmlydHVhbCB2b2lkIHByb2Nlc3NEaWRFeGl0KCkg
b3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIGRpZFJlbGF1bmNoUHJvY2VzcygpIG92ZXJyaWRl
OwpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvUGFnZUNsaWVudElt
cGxJT1MuaAkocmV2aXNpb24gMTY5MzYyKQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lv
cy9QYWdlQ2xpZW50SW1wbElPUy5oCSh3b3JraW5nIGNvcHkpCkBAIC01NSwxMiArNTUsOCBAQCBw
cml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCBzY3JvbGxWaWV3KGNvbnN0IFdlYkNvcmU6OkludFJl
Y3QmIHNjcm9sbFJlY3QsIGNvbnN0IFdlYkNvcmU6OkludFNpemUmIHNjcm9sbE9mZnNldCkgb3Zl
cnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIHJlcXVlc3RTY3JvbGwoY29uc3QgV2ViQ29yZTo6Rmxv
YXRQb2ludCYgc2Nyb2xsUG9zaXRpb24sIGJvb2wgaXNQcm9ncmFtbWF0aWNTY3JvbGwpIG92ZXJy
aWRlOwogICAgIHZpcnR1YWwgV2ViQ29yZTo6SW50U2l6ZSB2aWV3U2l6ZSgpIG92ZXJyaWRlOwot
ICAgIHZpcnR1YWwgYm9vbCBpc1ZpZXdXaW5kb3dBY3RpdmUoKSBvdmVycmlkZTsKLSAgICB2aXJ0
dWFsIGJvb2wgaXNWaWV3Rm9jdXNlZCgpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgYm9vbCBpc1Zp
ZXdWaXNpYmxlKCkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBib29sIGlzVmlld0luV2luZG93KCkg
b3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBib29sIGlzVmlld1Zpc2libGVPck9jY2x1ZGVkKCkgb3Zl
cnJpZGU7Ci0gICAgdmlydHVhbCBib29sIGlzVmlzdWFsbHlJZGxlKCkgb3ZlcnJpZGU7CisgICAg
dmlydHVhbCBXZWJDb3JlOjpWaWV3U3RhdGU6OkZsYWdzIHZpZXdTdGF0ZSgpIG92ZXJyaWRlOwor
ICAgICAgICAKICAgICB2aXJ0dWFsIHZvaWQgcHJvY2Vzc0RpZEV4aXQoKSBvdmVycmlkZTsKICAg
ICB2aXJ0dWFsIHZvaWQgZGlkUmVsYXVuY2hQcm9jZXNzKCkgb3ZlcnJpZGU7CiAgICAgdmlydHVh
bCB2b2lkIHBhZ2VDbG9zZWQoKSBvdmVycmlkZTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJT1MubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5tbQkocmV2aXNpb24gMTY5MzYyKQor
KysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5tbQkod29y
a2luZyBjb3B5KQpAQCAtMTEwLDM4ICsxMTAsMjUgQEAgSW50U2l6ZSBQYWdlQ2xpZW50SW1wbDo6
dmlld1NpemUoKQogICAgIHJldHVybiBJbnRTaXplKG1fY29udGVudFZpZXcuYm91bmRzLnNpemUp
OwogfQogCi1ib29sIFBhZ2VDbGllbnRJbXBsOjppc1ZpZXdXaW5kb3dBY3RpdmUoKQorLy8gRklY
TUU6IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzMwOTgKK1ZpZXdT
dGF0ZTo6RmxhZ3MgUGFnZUNsaWVudEltcGw6OnZpZXdTdGF0ZSgpCiB7Ci0gICAgLy8gRklYTUU6
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzMwOTgKLSAgICByZXR1
cm4gaXNWaWV3VmlzaWJsZSgpOwotfQotCi1ib29sIFBhZ2VDbGllbnRJbXBsOjppc1ZpZXdGb2N1
c2VkKCkKLXsKLSAgICAvLyBGSVhNRTogaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTEzMzA5OAotICAgIHJldHVybiBpc1ZpZXdXaW5kb3dBY3RpdmUoKTsKLX0KLQotYm9v
bCBQYWdlQ2xpZW50SW1wbDo6aXNWaWV3VmlzaWJsZSgpCi17Ci0gICAgcmV0dXJuIFttX3dlYlZp
ZXcgd2luZG93XSAmJiBbVUlBcHBsaWNhdGlvbiBzaGFyZWRBcHBsaWNhdGlvbl0uYXBwbGljYXRp
b25TdGF0ZSAhPSBVSUFwcGxpY2F0aW9uU3RhdGVCYWNrZ3JvdW5kOwotfQotCi1ib29sIFBhZ2VD
bGllbnRJbXBsOjppc1ZpZXdJbldpbmRvdygpCi17Ci0gICAgcmV0dXJuIFttX3dlYlZpZXcgd2lu
ZG93XTsKLX0KLQotYm9vbCBQYWdlQ2xpZW50SW1wbDo6aXNWaWV3VmlzaWJsZU9yT2NjbHVkZWQo
KQotewotICAgIHJldHVybiBpc1ZpZXdWaXNpYmxlKCk7Ci19Ci0KLWJvb2wgUGFnZUNsaWVudElt
cGw6OmlzVmlzdWFsbHlJZGxlKCkKLXsKLSAgICByZXR1cm4gIWlzVmlld1Zpc2libGUoKTsKKyAg
ICBWaWV3U3RhdGU6OkZsYWdzIHZpZXdTdGF0ZSA9IFZpZXdTdGF0ZTo6Tm9GbGFnczsKKyAgICAK
KyAgICBib29sIGlzSW5XaW5kb3cgPSBbbV93ZWJWaWV3IHdpbmRvd107CisgICAgYm9vbCBpc1Zp
c2libGUgPSBpc0luV2luZG93ICYmIFtVSUFwcGxpY2F0aW9uIHNoYXJlZEFwcGxpY2F0aW9uXS5h
cHBsaWNhdGlvblN0YXRlICE9IFVJQXBwbGljYXRpb25TdGF0ZUJhY2tncm91bmQ7CisgICAgCisg
ICAgaWYgKGlzSW5XaW5kb3cpCisgICAgICAgIHZpZXdTdGF0ZSB8PSBWaWV3U3RhdGU6OklzSW5X
aW5kb3c7CisgICAgCisgICAgaWYgKGlzVmlzaWJsZSkKKyAgICAgICAgdmlld1N0YXRlIHw9IFZp
ZXdTdGF0ZTo6V2luZG93SXNBY3RpdmUgfCBWaWV3U3RhdGU6OklzRm9jdXNlZCB8IFZpZXdTdGF0
ZTo6SXNWaXNpYmxlIHwgVmlld1N0YXRlOjpJc1Zpc2libGVPck9jY2x1ZGVkOworICAgIGVsc2UK
KyAgICAgICAgdmlld1N0YXRlIHw9IFZpZXdTdGF0ZTo6SXNWaXN1YWxseUlkbGU7CisgICAgCisg
ICAgcmV0dXJuIHZpZXdTdGF0ZTsKIH0KLQorICAgIAogdm9pZCBQYWdlQ2xpZW50SW1wbDo6cHJv
Y2Vzc0RpZEV4aXQoKQogewogICAgIFttX2NvbnRlbnRWaWV3IF9wcm9jZXNzRGlkRXhpdF07Cklu
ZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXcubW0KPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3Lm1tCShy
ZXZpc2lvbiAxNjkzNjIpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1dLQ29udGVu
dFZpZXcubW0JKHdvcmtpbmcgY29weSkKQEAgLTI1MCw3ICsyNTAsNyBAQCAtICh2b2lkKWRpZE1v
dmVUb1dpbmRvdwogewogICAgIGlmIChzZWxmLndpbmRvdykKICAgICAgICAgW3NlbGYgX3VwZGF0
ZUZvclNjcmVlbjpzZWxmLndpbmRvdy5zY3JlZW5dOwotICAgIF9wYWdlLT52aWV3U3RhdGVEaWRD
aGFuZ2UoVmlld1N0YXRlOjpBbGxGbGFncyk7CisgICAgX3BhZ2UtPnZpZXdTdGF0ZURpZENoYW5n
ZSgpOwogfQogCiAtIChXS0Jyb3dzaW5nQ29udGV4dENvbnRyb2xsZXIgKilicm93c2luZ0NvbnRl
eHRDb250cm9sbGVyCkBAIC00NTEsMTMgKzQ1MSwxMyBAQCAtICh2b2lkKV9hcHBsaWNhdGlvbldp
bGxSZXNpZ25BY3RpdmU6KE5TCiAKIC0gKHZvaWQpX2FwcGxpY2F0aW9uRGlkRW50ZXJCYWNrZ3Jv
dW5kOihOU05vdGlmaWNhdGlvbiopbm90aWZpY2F0aW9uCiB7Ci0gICAgX3BhZ2UtPnZpZXdTdGF0
ZURpZENoYW5nZShWaWV3U3RhdGU6OkFsbEZsYWdzICYgflZpZXdTdGF0ZTo6SXNJbldpbmRvdyk7
CisgICAgX3BhZ2UtPnZpZXdTdGF0ZURpZENoYW5nZSgpOwogfQogCiAtICh2b2lkKV9hcHBsaWNh
dGlvbldpbGxFbnRlckZvcmVncm91bmQ6KE5TTm90aWZpY2F0aW9uKilub3RpZmljYXRpb24KIHsK
ICAgICBfcGFnZS0+YXBwbGljYXRpb25XaWxsRW50ZXJGb3JlZ3JvdW5kKCk7Ci0gICAgX3BhZ2Ut
PnZpZXdTdGF0ZURpZENoYW5nZShWaWV3U3RhdGU6OkFsbEZsYWdzICYgflZpZXdTdGF0ZTo6SXNJ
bldpbmRvdyk7CisgICAgX3BhZ2UtPnZpZXdTdGF0ZURpZENoYW5nZSgpOwogfQogCiAtICh2b2lk
KV9hcHBsaWNhdGlvbkRpZEJlY29tZUFjdGl2ZTooTlNOb3RpZmljYXRpb24qKW5vdGlmaWNhdGlv
bgpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9QYWdlQ2xpZW50SW1wbC5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvUGFnZUNsaWVudEltcGwu
aAkocmV2aXNpb24gMTY5MzYyKQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9QYWdl
Q2xpZW50SW1wbC5oCSh3b3JraW5nIGNvcHkpCkBAIC02NSwxMiArNjUsMTAgQEAgcHJpdmF0ZToK
ICAgICB2aXJ0dWFsIHZvaWQgcmVxdWVzdFNjcm9sbChjb25zdCBXZWJDb3JlOjpGbG9hdFBvaW50
JiBzY3JvbGxQb3NpdGlvbiwgYm9vbCBpc1Byb2dyYW1tYXRpY1Njcm9sbCk7CiAKICAgICB2aXJ0
dWFsIFdlYkNvcmU6OkludFNpemUgdmlld1NpemUoKTsKLSAgICB2aXJ0dWFsIGJvb2wgaXNWaWV3
V2luZG93QWN0aXZlKCk7Ci0gICAgdmlydHVhbCBib29sIGlzVmlld0ZvY3VzZWQoKTsKLSAgICB2
aXJ0dWFsIGJvb2wgaXNWaWV3VmlzaWJsZSgpOwotICAgIHZpcnR1YWwgYm9vbCBpc1ZpZXdWaXNp
YmxlT3JPY2NsdWRlZCgpOworICAgIGJvb2wgaXNWaWV3VmlzaWJsZSgpOwogICAgIHZpcnR1YWwg
Ym9vbCBpc1ZpZXdJbldpbmRvdygpOwotICAgIHZpcnR1YWwgYm9vbCBpc1Zpc3VhbGx5SWRsZSgp
OworICAgIHZpcnR1YWwgV2ViQ29yZTo6Vmlld1N0YXRlOjpGbGFncyB2aWV3U3RhdGUoKSBvdmVy
cmlkZTsKKyAgICAgICAgCiAgICAgdmlydHVhbCBMYXllckhvc3RpbmdNb2RlIHZpZXdMYXllckhv
c3RpbmdNb2RlKCkgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCBDb2xvclNwYWNlRGF0YSBjb2xvclNw
YWNlKCkgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIHNldEFjY2VsZXJhdGVkQ29tcG9zaXRp
bmdSb290TGF5ZXIoTGF5ZXJPclZpZXcgKikgb3ZlcnJpZGU7CkluZGV4OiBTb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvbWFjL1BhZ2VDbGllbnRJbXBsLm1tCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9tYWMvUGFnZUNsaWVudEltcGwubW0JKHJldmlzaW9uIDE2OTM2MikK
KysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvUGFnZUNsaWVudEltcGwubW0JKHdvcmtp
bmcgY29weSkKQEAgLTE5MCwxNyArMTkwLDYgQEAgTlNWaWV3ICpQYWdlQ2xpZW50SW1wbDo6YWN0
aXZlVmlldygpIGNvbgogI2VuZGlmCiB9CiAKLWJvb2wgUGFnZUNsaWVudEltcGw6OmlzVmlld1dp
bmRvd0FjdGl2ZSgpCi17Ci0gICAgTlNXaW5kb3cgKmFjdGl2ZVZpZXdXaW5kb3cgPSBhY3RpdmVW
aWV3KCkud2luZG93OwotICAgIHJldHVybiBhY3RpdmVWaWV3V2luZG93LmlzS2V5V2luZG93IHx8
IFtOU0FwcCBrZXlXaW5kb3ddID09IGFjdGl2ZVZpZXdXaW5kb3c7Ci19Ci0KLWJvb2wgUGFnZUNs
aWVudEltcGw6OmlzVmlld0ZvY3VzZWQoKQotewotICAgIHJldHVybiBbbV93a1ZpZXcgX2lzRm9j
dXNlZF07Ci19Ci0KIHZvaWQgUGFnZUNsaWVudEltcGw6Om1ha2VGaXJzdFJlc3BvbmRlcigpCiB7
CiAgICAgIFtbbV93a1ZpZXcgd2luZG93XSBtYWtlRmlyc3RSZXNwb25kZXI6bV93a1ZpZXddOwpA
QCAtMjM1LDIxICsyMjQsMzQgQEAgYm9vbCBQYWdlQ2xpZW50SW1wbDo6aXNWaWV3VmlzaWJsZSgp
CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgUGFnZUNsaWVudEltcGw6OmlzVmlld1Zpc2li
bGVPck9jY2x1ZGVkKCkKLXsKLSAgICByZXR1cm4gYWN0aXZlVmlldygpLndpbmRvdy5pc1Zpc2li
bGU7Ci19Ci0KIGJvb2wgUGFnZUNsaWVudEltcGw6OmlzVmlld0luV2luZG93KCkKIHsKICAgICBy
ZXR1cm4gYWN0aXZlVmlldygpLndpbmRvdzsKIH0KIAotYm9vbCBQYWdlQ2xpZW50SW1wbDo6aXNW
aXN1YWxseUlkbGUoKQorVmlld1N0YXRlOjpGbGFncyBQYWdlQ2xpZW50SW1wbDo6dmlld1N0YXRl
KCkKIHsKLSAgICByZXR1cm4gV2luZG93U2VydmVyQ29ubmVjdGlvbjo6c2hhcmVkKCkuYXBwbGlj
YXRpb25XaW5kb3dNb2RpZmljYXRpb25zSGF2ZVN0b3BwZWQoKSB8fCAhaXNWaWV3VmlzaWJsZSgp
OworICAgIFZpZXdTdGF0ZTo6RmxhZ3Mgdmlld1N0YXRlID0gVmlld1N0YXRlOjpOb0ZsYWdzOwor
ICAgIAorICAgIE5TV2luZG93ICphY3RpdmVWaWV3V2luZG93ID0gYWN0aXZlVmlldygpLndpbmRv
dzsKKyAgICBib29sIGlzVmlzaWJsZSA9IGlzVmlld1Zpc2libGUoKTsKKyAgICAKKyAgICBpZiAo
YWN0aXZlVmlld1dpbmRvdykKKyAgICAgICAgdmlld1N0YXRlIHw9IFZpZXdTdGF0ZTo6SXNJbldp
bmRvdzsKKyAgICBpZiAoYWN0aXZlVmlld1dpbmRvdy5pc0tleVdpbmRvdyB8fCBbTlNBcHAga2V5
V2luZG93XSA9PSBhY3RpdmVWaWV3V2luZG93KQorICAgICAgICB2aWV3U3RhdGUgfD0gVmlld1N0
YXRlOjpXaW5kb3dJc0FjdGl2ZTsKKyAgICBpZiAoW21fd2tWaWV3IF9pc0ZvY3VzZWRdKQorICAg
ICAgICB2aWV3U3RhdGUgfD0gVmlld1N0YXRlOjpJc0ZvY3VzZWQ7CisgICAgaWYgKGlzVmlzaWJs
ZSkKKyAgICAgICAgdmlld1N0YXRlIHw9IFZpZXdTdGF0ZTo6SXNWaXNpYmxlOworICAgIGlmIChh
Y3RpdmVWaWV3V2luZG93LmlzVmlzaWJsZSkKKyAgICAgICAgdmlld1N0YXRlIHw9IFZpZXdTdGF0
ZTo6SXNWaXNpYmxlT3JPY2NsdWRlZDsKKyAgICBpZiAoIWlzVmlzaWJsZSB8fCBXaW5kb3dTZXJ2
ZXJDb25uZWN0aW9uOjpzaGFyZWQoKS5hcHBsaWNhdGlvbldpbmRvd01vZGlmaWNhdGlvbnNIYXZl
U3RvcHBlZCgpKQorICAgICAgICB2aWV3U3RhdGUgfD0gVmlld1N0YXRlOjpJc1Zpc3VhbGx5SWRs
ZTsKKyAgICAKKyAgICByZXR1cm4gdmlld1N0YXRlOwogfQotCisgICAgCiBMYXllckhvc3RpbmdN
b2RlIFBhZ2VDbGllbnRJbXBsOjp2aWV3TGF5ZXJIb3N0aW5nTW9kZSgpCiB7CiAjaWYgSEFWRShP
VVRfT0ZfUFJPQ0VTU19MQVlFUl9IT1NUSU5HKQpAQCAtNTQwLDggKzU0Miw5IEBAIHZvaWQgUGFn
ZUNsaWVudEltcGw6OmRpc21pc3NEaWN0aW9uYXJ5TG8KIHZvaWQgUGFnZUNsaWVudEltcGw6OnNo
b3dDb3JyZWN0aW9uUGFuZWwoQWx0ZXJuYXRpdmVUZXh0VHlwZSB0eXBlLCBjb25zdCBGbG9hdFJl
Y3QmIGJvdW5kaW5nQm94T2ZSZXBsYWNlZFN0cmluZywgY29uc3QgU3RyaW5nJiByZXBsYWNlZFN0
cmluZywgY29uc3QgU3RyaW5nJiByZXBsYWNlbWVudFN0cmluZywgY29uc3QgVmVjdG9yPFN0cmlu
Zz4mIGFsdGVybmF0aXZlUmVwbGFjZW1lbnRTdHJpbmdzKQogewogI2lmIFVTRShBVVRPQ09SUkVD
VElPTl9QQU5FTCkKLSAgICBpZiAoIWlzVmlld1Zpc2libGUoKSB8fCAhaXNWaWV3SW5XaW5kb3co
KSkKKyAgICBpZiAoIWlzVmlld1Zpc2libGUoKSkKICAgICAgICAgcmV0dXJuOworICAgIEFTU0VS
VChpc1ZpZXdJbldpbmRvdygpKTsKICAgICBtX2NvcnJlY3Rpb25QYW5lbC5zaG93KG1fd2tWaWV3
LCB0eXBlLCBib3VuZGluZ0JveE9mUmVwbGFjZWRTdHJpbmcsIHJlcGxhY2VkU3RyaW5nLCByZXBs
YWNlbWVudFN0cmluZywgYWx0ZXJuYXRpdmVSZXBsYWNlbWVudFN0cmluZ3MpOwogI2VuZGlmCiB9
CkBAIC02MjAsOCArNjIzLDkgQEAgdm9pZCBQYWdlQ2xpZW50SW1wbDo6cmVtb3ZlRGljdGF0aW9u
QWx0ZQogCiB2b2lkIFBhZ2VDbGllbnRJbXBsOjpzaG93RGljdGF0aW9uQWx0ZXJuYXRpdmVVSShj
b25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmIGJvdW5kaW5nQm94T2ZEaWN0YXRlZFRleHQsIHVpbnQ2
NF90IGRpY3RhdGlvbkNvbnRleHQpCiB7Ci0gICAgaWYgKCFpc1ZpZXdWaXNpYmxlKCkgfHwgIWlz
Vmlld0luV2luZG93KCkpCisgICAgaWYgKCFpc1ZpZXdWaXNpYmxlKCkpCiAgICAgICAgIHJldHVy
bjsKKyAgICBBU1NFUlQoaXNWaWV3SW5XaW5kb3coKSk7CiAgICAgbV9hbHRlcm5hdGl2ZVRleHRV
SUNvbnRyb2xsZXItPnNob3dBbHRlcm5hdGl2ZXMobV93a1ZpZXcsIGJvdW5kaW5nQm94T2ZEaWN0
YXRlZFRleHQsIGRpY3RhdGlvbkNvbnRleHQsIF4oTlNTdHJpbmcqIGFjY2VwdGVkQWx0ZXJuYXRp
dmUpewogICAgICAgICBbbV93a1ZpZXcgaGFuZGxlQWNjZXB0ZWRBbHRlcm5hdGl2ZVRleHQ6YWNj
ZXB0ZWRBbHRlcm5hdGl2ZV07CiAgICAgfSk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>232100</attachid>
            <date>2014-05-26 18:00:34 -0700</date>
            <delta_ts>2014-05-28 16:04:24 -0700</delta_ts>
            <desc>gtk/efl fix</desc>
            <filename>133159.2.patch</filename>
            <type>text/plain</type>
            <size>37412</size>
            <attacher name="Gavin Barraclough">barraclough</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDE2OTM2MikKKysrIFNvdXJjZS9XZWJLaXQyL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEwNiBAQAorMjAxNC0wNS0yNiAgR2F2aW4g
QmFycmFjbG91Z2ggIDxiYXJhY2xvdWdoQGFwcGxlLmNvbT4KKworICAgICAgICB2aWV3U3RhdGVE
aWRDaGFuZ2Ugc2hvdWxkIGFsd2F5cyBmdWxseSB1cGRhdGUgVmlld1N0YXRlCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzMxNTkKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBDdXJyZW50bHkgV2ViUGFnZVBy
b3h5Ojp2aWV3U3RhdGVEaWRDaGFuZ2UgaXMgcGFzc2VkIGEgbWFzayBvZiBiaXRzIHRvIHVwZGF0
ZS4KKworICAgICAgICBUaGlzIGhhcyB0aGUgZm9sbG93aW5nIG5lZ2F0aXZlIGNvbnNlcXVlbmNl
czoKKyAgICAgICAgIOKAkyBXS1dlYlZpZXcgaW1wbGljaXRseSByZXF1aXJlcyBtb3JlIGRldGFp
bGVkIGtub3dsZWRnZSBvZiB0aGUgaW50ZXJuYWwgaW1wbGVtZW50YXRpb24gb2YgdGhlIFBhZ2VD
bGllbnQuCisgICAgICAgICDigJMgVXBkYXRlcyBtYXkgdW5uZWNlc3NhcmlseSBiZSBzcGxpdCBv
dmVyIG11bHRpcGxlIElQQyBtZXNzYWdlcy4KKyAgICAgICAgIOKAkyBJbiBvcmRlciB0byBzdXBw
b3J0IHBhcnRpYWwgdXBkYXRlcyB3ZSBtYWtlIG11bHRpcGxlIHZpcnR1YWwgZnVuY3Rpb24gY2Fs
bHMgdG8gUGFnZUNsaWVudCwgd2hpY2ggdGhlbiBtYWtlcyBkdXBsaWNhdGUgb2JqYyBjYWxscy4K
KworICAgICAgICBCZXR0ZXIgdG8ganVzdCBhbHdheXMgdXBkYXRlIHRoZSBlbnRpcmUgVmlld1N0
YXRlLgorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW06CisgICAg
ICAgICgtW1dLV2ViVmlldyBkaWRNb3ZlVG9XaW5kb3ddKToKKyAgICAgICAgICAgIC0gcmVtb3Zl
ZCBhcmd1bWVudCB0byB2aWV3U3RhdGVEaWRDaGFuZ2UuCisgICAgICAgICogVUlQcm9jZXNzL0FQ
SS9ndGsvUGFnZUNsaWVudEltcGwuY3BwOgorICAgICAgICAoV2ViS2l0OjpQYWdlQ2xpZW50SW1w
bDo6dmlld1N0YXRlKToKKyAgICAgICAgKFdlYktpdDo6UGFnZUNsaWVudEltcGw6OmlzVmlld1dp
bmRvd0FjdGl2ZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OlBhZ2VDbGllbnRJbXBsOjpp
c1ZpZXdGb2N1c2VkKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6UGFnZUNsaWVudEltcGw6
OmlzVmlld1Zpc2libGUpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpQYWdlQ2xpZW50SW1w
bDo6aXNWaWV3SW5XaW5kb3cpOiBEZWxldGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3Rr
L1BhZ2VDbGllbnRJbXBsLmg6CisgICAgICAgICAgICAtIG1lcmdlZCBpc1ZpZXdXaW5kb3dBY3Rp
dmUvaXNWaWV3Rm9jdXNlZC9pc1ZpZXdWaXNpYmxlL2lzVmlld0luV2luZG93IHRvIHZpZXdTdGF0
ZS4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL21hYy9XS1ZpZXcubW06CisgICAgICAgICgtW1dL
VmlldyBiZWNvbWVGaXJzdFJlc3BvbmRlcl0pOgorICAgICAgICAoLVtXS1ZpZXcgcmVzaWduRmly
c3RSZXNwb25kZXJdKToKKyAgICAgICAgKC1bV0tWaWV3IHZpZXdEaWRNb3ZlVG9XaW5kb3ddKToK
KyAgICAgICAgKC1bV0tWaWV3IF93aW5kb3dEaWRCZWNvbWVLZXk6XSk6CisgICAgICAgICgtW1dL
VmlldyBfd2luZG93RGlkUmVzaWduS2V5Ol0pOgorICAgICAgICAoLVtXS1ZpZXcgX3dpbmRvd0Rp
ZE1pbmlhdHVyaXplOl0pOgorICAgICAgICAoLVtXS1ZpZXcgX3dpbmRvd0RpZERlbWluaWF0dXJp
emU6XSk6CisgICAgICAgICgtW1dLVmlldyBfd2luZG93RGlkT3JkZXJPZmZTY3JlZW46XSk6Cisg
ICAgICAgICgtW1dLVmlldyBfd2luZG93RGlkT3JkZXJPblNjcmVlbjpdKToKKyAgICAgICAgKC1b
V0tWaWV3IF93aW5kb3dEaWRDaGFuZ2VPY2NsdXNpb25TdGF0ZTpdKToKKyAgICAgICAgKC1bV0tW
aWV3IHZpZXdEaWRIaWRlXSk6CisgICAgICAgICgtW1dLVmlldyB2aWV3RGlkVW5oaWRlXSk6Cisg
ICAgICAgICgtW1dLVmlldyBfYWN0aXZlU3BhY2VEaWRDaGFuZ2U6XSk6CisgICAgICAgICgtW1dL
VmlldyBfc2V0VGh1bWJuYWlsVmlldzpdKToKKyAgICAgICAgKC1bV0tWaWV3IGVuZERlZmVycmlu
Z1ZpZXdJbldpbmRvd0NoYW5nZXNdKToKKyAgICAgICAgKC1bV0tWaWV3IGVuZERlZmVycmluZ1Zp
ZXdJbldpbmRvd0NoYW5nZXNTeW5jXSk6CisgICAgICAgICAgICAtIHJlbW92ZWQgYXJndW1lbnQg
dG8gdmlld1N0YXRlRGlkQ2hhbmdlLgorICAgICAgICAqIFVJUHJvY2Vzcy9Db29yZGluYXRlZEdy
YXBoaWNzL1dlYlZpZXcuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3Ojp2aWV3U3RhdGUp
OgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3Ojppc1ZpZXdXaW5kb3dBY3RpdmUpOiBEZWxldGVk
LgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3Ojppc1ZpZXdGb2N1c2VkKTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYktpdDo6V2ViVmlldzo6aXNWaWV3VmlzaWJsZSk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJLaXQ6OldlYlZpZXc6OmlzVmlld0luV2luZG93KTogRGVsZXRlZC4KKyAgICAgICAgKiBV
SVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9XZWJWaWV3Lmg6CisgICAgICAgICAgICAtIG1l
cmdlZCBpc1ZpZXdXaW5kb3dBY3RpdmUvaXNWaWV3Rm9jdXNlZC9pc1ZpZXdWaXNpYmxlL2lzVmll
d0luV2luZG93IHRvIHZpZXdTdGF0ZS4KKyAgICAgICAgKiBVSVByb2Nlc3MvUGFnZUNsaWVudC5o
OgorICAgICAgICAoV2ViS2l0OjpQYWdlQ2xpZW50Ojppc1ZpZXdWaXNpYmxlT3JPY2NsdWRlZCk6
IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OlBhZ2VDbGllbnQ6OmlzVmlzdWFsbHlJZGxlKTog
RGVsZXRlZC4KKyAgICAgICAgICAgIC0gbWVyZ2VkIGlzVmlld1Zpc2libGVPck9jY2x1ZGVkL2lz
VmlzdWFsbHlJZGxlIHRvIHN1YmNsYXNzIHZpZXdTdGF0ZSBtZXRob2RzLgorICAgICAgICAqIFVJ
UHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6
OldlYlBhZ2VQcm94eSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6cmVhdHRhY2hU
b1dlYlByb2Nlc3MpOgorICAgICAgICAgICAgLSB1cGRhdGVWaWV3U3RhdGUgLT4gUGFnZUNsaWVu
dDo6dmlld1N0YXRlCisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6dmlld1N0YXRlRGlk
Q2hhbmdlKToKKyAgICAgICAgICAgIC0gYXJndW1lbnQgcmVtb3ZlZDsgdXBkYXRlVmlld1N0YXRl
IC0+IFBhZ2VDbGllbnQ6OnZpZXdTdGF0ZS4KKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5
OjpzZXRDdXJzb3IpOgorICAgICAgICAgICAgLSBjYWxsIGlzVmlld1dpbmRvd0FjdGl2ZSBvbiBX
ZWJQYWdlUHJveHksIHJhdGhlciB0aGFuIFBhZ2VDbGllbnQuCisgICAgICAgIChXZWJLaXQ6Oldl
YlBhZ2VQcm94eTo6dXBkYXRlQmFja2luZ1N0b3JlRGlzY2FyZGFibGVTdGF0ZSk6CisgICAgICAg
ICAgICAtIGNhbGwgaXNWaWV3V2luZG93QWN0aXZlIG9uIFdlYlBhZ2VQcm94eSwgcmF0aGVyIHRo
YW4gUGFnZUNsaWVudC4KKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5Ojp1cGRhdGVWaWV3
U3RhdGUpOiBEZWxldGVkLgorICAgICAgICAgICAgLSByZW1vdmVkIC0gdmlld1N0YXRlIG1ldGhv
ZCBtb3ZlZCB0byBQYWdlQ2xpZW50LgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHku
aDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5Ojppc1ZpZXdXaW5kb3dBY3RpdmUpOgor
ICAgICAgICAgICAgLSBhZGRlZCBtaXNzaW5nIGltcGxlbWVudGF0aW9uLgorICAgICAgICAoV2Vi
S2l0OjpXZWJQYWdlUHJveHk6OmlzVmlld1Zpc2libGUpOgorICAgICAgICAgICAgLSByZW1vdmVk
IGFyZ3VtZW50IHRvIHZpZXdTdGF0ZURpZENoYW5nZS4KKyAgICAgICAgKiBVSVByb2Nlc3MvV2Vi
UHJvY2Vzc1Byb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Byb3h5Ojp3aW5k
b3dTZXJ2ZXJDb25uZWN0aW9uU3RhdGVDaGFuZ2VkKToKKyAgICAgICAgICAgIC0gcmVtb3ZlZCBh
cmd1bWVudCB0byB2aWV3U3RhdGVEaWRDaGFuZ2UuCisgICAgICAgICogVUlQcm9jZXNzL2lvcy9Q
YWdlQ2xpZW50SW1wbElPUy5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvUGFnZUNsaWVudElt
cGxJT1MubW06CisgICAgICAgIChXZWJLaXQ6OlBhZ2VDbGllbnRJbXBsOjp2aWV3U3RhdGUpOgor
ICAgICAgICAoV2ViS2l0OjpQYWdlQ2xpZW50SW1wbDo6aXNWaWV3V2luZG93QWN0aXZlKTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYktpdDo6UGFnZUNsaWVudEltcGw6OmlzVmlld0ZvY3VzZWQpOiBE
ZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpQYWdlQ2xpZW50SW1wbDo6aXNWaWV3VmlzaWJsZSk6
IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OlBhZ2VDbGllbnRJbXBsOjppc1ZpZXdJbldpbmRv
dyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OlBhZ2VDbGllbnRJbXBsOjppc1ZpZXdWaXNp
YmxlT3JPY2NsdWRlZCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OlBhZ2VDbGllbnRJbXBs
Ojppc1Zpc3VhbGx5SWRsZSk6IERlbGV0ZWQuCisgICAgICAgICAgICAtIG1lcmdlZCBpc1ZpZXdX
aW5kb3dBY3RpdmUvaXNWaWV3Rm9jdXNlZC9pc1ZpZXdWaXNpYmxlL2lzVmlld0luV2luZG93IHRv
IHZpZXdTdGF0ZS4KKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXcubW06Cisg
ICAgICAgICgtW1dLQ29udGVudFZpZXcgZGlkTW92ZVRvV2luZG93XSk6CisgICAgICAgICgtW1dL
Q29udGVudFZpZXcgX2FwcGxpY2F0aW9uRGlkRW50ZXJCYWNrZ3JvdW5kOl0pOgorICAgICAgICAo
LVtXS0NvbnRlbnRWaWV3IF9hcHBsaWNhdGlvbldpbGxFbnRlckZvcmVncm91bmQ6XSk6CisgICAg
ICAgICAgICAtIHJlbW92ZWQgYXJndW1lbnQgdG8gdmlld1N0YXRlRGlkQ2hhbmdlLgorICAgICAg
ICAqIFVJUHJvY2Vzcy9tYWMvUGFnZUNsaWVudEltcGwuaDoKKyAgICAgICAgKiBVSVByb2Nlc3Mv
bWFjL1BhZ2VDbGllbnRJbXBsLm1tOgorICAgICAgICAoV2ViS2l0OjpQYWdlQ2xpZW50SW1wbDo6
dmlld1N0YXRlKToKKyAgICAgICAgKFdlYktpdDo6UGFnZUNsaWVudEltcGw6OnNob3dDb3JyZWN0
aW9uUGFuZWwpOgorICAgICAgICAoV2ViS2l0OjpQYWdlQ2xpZW50SW1wbDo6c2hvd0RpY3RhdGlv
bkFsdGVybmF0aXZlVUkpOgorICAgICAgICAoV2ViS2l0OjpQYWdlQ2xpZW50SW1wbDo6aXNWaWV3
V2luZG93QWN0aXZlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6UGFnZUNsaWVudEltcGw6
OmlzVmlld0ZvY3VzZWQpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpQYWdlQ2xpZW50SW1w
bDo6aXNWaWV3VmlzaWJsZU9yT2NjbHVkZWQpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpQ
YWdlQ2xpZW50SW1wbDo6aXNWaXN1YWxseUlkbGUpOiBEZWxldGVkLgorICAgICAgICAgICAgLSBt
ZXJnZWQgaXNWaWV3V2luZG93QWN0aXZlL2lzVmlld0ZvY3VzZWQvaXNWaWV3VmlzaWJsZS9pc1Zp
ZXdJbldpbmRvdyB0byB2aWV3U3RhdGUuCisKIDIwMTQtMDUtMjIgIEdhdmluIEJhcnJhY2xvdWdo
ICA8YmFyYWNsb3VnaEBhcHBsZS5jb20+CiAKICAgICAgICAgQWRkIFVJIHByb2Nlc3Mgd2F0Y2hk
b2cgb24gaU9TIHRvIGVuc3VyZSBXZWJQcm9jZXNzIGNvbm5lY3Rpb25zIGNsb3NlCkluZGV4OiBT
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGFnZUNsaWVudC5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9QYWdlQ2xpZW50LmgJKHJldmlzaW9uIDE2OTM2MikKKysrIFNv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QYWdlQ2xpZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTMy
LDYgKzMyLDcgQEAKICNpbmNsdWRlICJXZWJQb3B1cE1lbnVQcm94eS5oIgogI2luY2x1ZGUgPFdl
YkNvcmUvQWx0ZXJuYXRpdmVUZXh0Q2xpZW50Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9FZGl0b3JD
bGllbnQuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1ZpZXdTdGF0ZS5oPgogI2luY2x1ZGUgPHd0Zi9G
b3J3YXJkLmg+CiAKICNpZiBQTEFURk9STShDT0NPQSkKQEAgLTEwMCwyMyArMTAxLDEyIEBAIHB1
YmxpYzoKICAgICAvLyBSZXR1cm4gdGhlIHNpemUgb2YgdGhlIHZpZXcgdGhlIHBhZ2UgaXMgYXNz
b2NpYXRlZCB3aXRoLgogICAgIHZpcnR1YWwgV2ViQ29yZTo6SW50U2l6ZSB2aWV3U2l6ZSgpID0g
MDsKIAotICAgIC8vIFJldHVybiB3aGV0aGVyIHRoZSB2aWV3J3MgY29udGFpbmluZyB3aW5kb3cg
aXMgYWN0aXZlLgotICAgIHZpcnR1YWwgYm9vbCBpc1ZpZXdXaW5kb3dBY3RpdmUoKSA9IDA7Ci0K
LSAgICAvLyBSZXR1cm4gd2hldGhlciB0aGUgdmlldyBpcyBmb2N1c2VkLgotICAgIHZpcnR1YWwg
Ym9vbCBpc1ZpZXdGb2N1c2VkKCkgPSAwOwotCi0gICAgLy8gUmV0dXJuIHdoZXRoZXIgdGhlIHZp
ZXcgaXMgdmlzaWJsZS4KLSAgICB2aXJ0dWFsIGJvb2wgaXNWaWV3VmlzaWJsZSgpID0gMDsKLQot
ICAgIC8vIFJldHVybiB3aGV0aGVyIHRoZSB2aWV3IGlzIHZpc2libGUsIG9yIG9jY2x1ZGVkIGJ5
IGFub3RoZXIgd2luZG93LgotICAgIHZpcnR1YWwgYm9vbCBpc1ZpZXdWaXNpYmxlT3JPY2NsdWRl
ZCgpIHsgcmV0dXJuIGlzVmlld1Zpc2libGUoKTsgfQotCisjaWYgUExBVEZPUk0oTUFDKQogICAg
IC8vIFJldHVybiB3aGV0aGVyIHRoZSB2aWV3IGlzIGluIGEgd2luZG93LgogICAgIHZpcnR1YWwg
Ym9vbCBpc1ZpZXdJbldpbmRvdygpID0gMDsKKyNlbmRpZgogCi0gICAgLy8gUmV0dXJuIHdoZXRo
ZXIgdGhlIHZpZXcgaXMgdmlzdWFsbHkgaWRsZS4KLSAgICB2aXJ0dWFsIGJvb2wgaXNWaXN1YWxs
eUlkbGUoKSB7IHJldHVybiAhaXNWaWV3VmlzaWJsZSgpOyB9CisgICAgdmlydHVhbCBXZWJDb3Jl
OjpWaWV3U3RhdGU6OkZsYWdzIHZpZXdTdGF0ZSgpID0gMDsKIAogICAgIC8vIFJldHVybiB0aGUg
bGF5ZXIgaG9zdGluZyBtb2RlIGZvciB0aGUgdmlldy4KICAgICB2aXJ0dWFsIExheWVySG9zdGlu
Z01vZGUgdmlld0xheWVySG9zdGluZ01vZGUoKSB7IHJldHVybiBMYXllckhvc3RpbmdNb2RlOjpJ
blByb2Nlc3M7IH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHku
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHku
Y3BwCShyZXZpc2lvbiAxNjkzNjIpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFn
ZVByb3h5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjcwLDcgKzI3MCw3IEBAIFdlYlBhZ2VQcm94
eTo6V2ViUGFnZVByb3h5KFBhZ2VDbGllbnQmIHAKICAgICAsIG1fdXNlckFnZW50KHN0YW5kYXJk
VXNlckFnZW50KCkpCiAgICAgLCBtX2dlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RNYW5hZ2Vy
KCp0aGlzKQogICAgICwgbV9ub3RpZmljYXRpb25QZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIoKnRo
aXMpCi0gICAgLCBtX3ZpZXdTdGF0ZShWaWV3U3RhdGU6Ok5vRmxhZ3MpCisgICAgLCBtX3ZpZXdT
dGF0ZShtX3BhZ2VDbGllbnQudmlld1N0YXRlKCkpCiAjaWYgUExBVEZPUk0oSU9TKQogICAgICwg
bV9hY3Rpdml0eVRva2VuKG51bGxwdHIpCiAjZW5kaWYKQEAgLTM2NSw4ICszNjUsNyBAQCBXZWJQ
YWdlUHJveHk6OldlYlBhZ2VQcm94eShQYWdlQ2xpZW50JiBwCiAgICAgICAgICAgICBtX3VzZXJD
b250ZW50Q29udHJvbGxlci0+YWRkUHJvY2VzcyhtX3Byb2Nlc3MuZ2V0KCkpOwogICAgICAgICBt
X3Zpc2l0ZWRMaW5rUHJvdmlkZXItPmFkZFByb2Nlc3MobV9wcm9jZXNzLmdldCgpKTsKICAgICB9
Ci0KLSAgICB1cGRhdGVWaWV3U3RhdGUoKTsKKyAgICAKICAgICB1cGRhdGVBY3Rpdml0eVRva2Vu
KCk7CiAgICAgCiAjaWYgSEFWRShPVVRfT0ZfUFJPQ0VTU19MQVlFUl9IT1NUSU5HKQpAQCAtNTI1
LDcgKzUyNCw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpyZWF0dGFjaFRvV2ViUHJvY2VzcygKICAg
ICBBU1NFUlQoIWlzVmFsaWQoKSk7CiAgICAgQVNTRVJUKG1fcHJvY2Vzcy0+c3RhdGUoKSA9PSBX
ZWJQcm9jZXNzUHJveHk6OlN0YXRlOjpUZXJtaW5hdGVkKTsKIAotICAgIHVwZGF0ZVZpZXdTdGF0
ZSgpOworICAgIG1fdmlld1N0YXRlID0gbV9wYWdlQ2xpZW50LnZpZXdTdGF0ZSgpOwogICAgIHVw
ZGF0ZUFjdGl2aXR5VG9rZW4oKTsKICAgICAKICAgICBtX2lzVmFsaWQgPSB0cnVlOwpAQCAtMTA1
NCwzNiArMTA1MywxNSBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6cmVxdWVzdFNjcm9sbChjb25zdCBG
CiAgICAgbV9wYWdlQ2xpZW50LnJlcXVlc3RTY3JvbGwoc2Nyb2xsUG9zaXRpb24sIGlzUHJvZ3Jh
bW1hdGljU2Nyb2xsKTsKIH0KIAotdm9pZCBXZWJQYWdlUHJveHk6OnVwZGF0ZVZpZXdTdGF0ZShW
aWV3U3RhdGU6OkZsYWdzIGZsYWdzVG9VcGRhdGUpCi17Ci0gICAgbV92aWV3U3RhdGUgJj0gfmZs
YWdzVG9VcGRhdGU7Ci0gICAgaWYgKGZsYWdzVG9VcGRhdGUgJiBWaWV3U3RhdGU6OklzRm9jdXNl
ZCAmJiBtX3BhZ2VDbGllbnQuaXNWaWV3Rm9jdXNlZCgpKQotICAgICAgICBtX3ZpZXdTdGF0ZSB8
PSBWaWV3U3RhdGU6OklzRm9jdXNlZDsKLSAgICBpZiAoZmxhZ3NUb1VwZGF0ZSAmIFZpZXdTdGF0
ZTo6V2luZG93SXNBY3RpdmUgJiYgbV9wYWdlQ2xpZW50LmlzVmlld1dpbmRvd0FjdGl2ZSgpKQot
ICAgICAgICBtX3ZpZXdTdGF0ZSB8PSBWaWV3U3RhdGU6OldpbmRvd0lzQWN0aXZlOwotICAgIGlm
IChmbGFnc1RvVXBkYXRlICYgVmlld1N0YXRlOjpJc1Zpc2libGUgJiYgbV9wYWdlQ2xpZW50Lmlz
Vmlld1Zpc2libGUoKSkKLSAgICAgICAgbV92aWV3U3RhdGUgfD0gVmlld1N0YXRlOjpJc1Zpc2li
bGU7Ci0gICAgaWYgKGZsYWdzVG9VcGRhdGUgJiBWaWV3U3RhdGU6OklzVmlzaWJsZU9yT2NjbHVk
ZWQgJiYgbV9wYWdlQ2xpZW50LmlzVmlld1Zpc2libGVPck9jY2x1ZGVkKCkpCi0gICAgICAgIG1f
dmlld1N0YXRlIHw9IFZpZXdTdGF0ZTo6SXNWaXNpYmxlT3JPY2NsdWRlZDsKLSAgICBpZiAoZmxh
Z3NUb1VwZGF0ZSAmIFZpZXdTdGF0ZTo6SXNJbldpbmRvdyAmJiBtX3BhZ2VDbGllbnQuaXNWaWV3
SW5XaW5kb3coKSkKLSAgICAgICAgbV92aWV3U3RhdGUgfD0gVmlld1N0YXRlOjpJc0luV2luZG93
OwotICAgIGlmIChmbGFnc1RvVXBkYXRlICYgVmlld1N0YXRlOjpJc1Zpc3VhbGx5SWRsZSAmJiBt
X3BhZ2VDbGllbnQuaXNWaXN1YWxseUlkbGUoKSkKLSAgICAgICAgbV92aWV3U3RhdGUgfD0gVmll
d1N0YXRlOjpJc1Zpc3VhbGx5SWRsZTsKLX0KLQotdm9pZCBXZWJQYWdlUHJveHk6OnZpZXdTdGF0
ZURpZENoYW5nZShWaWV3U3RhdGU6OkZsYWdzIG1heUhhdmVDaGFuZ2VkLCBXYW50c1JlcGx5T3JO
b3Qgd2FudHNSZXBseSkKK3ZvaWQgV2ViUGFnZVByb3h5Ojp2aWV3U3RhdGVEaWRDaGFuZ2UoV2Fu
dHNSZXBseU9yTm90IHdhbnRzUmVwbHkpCiB7CiAgICAgaWYgKCFpc1ZhbGlkKCkpCiAgICAgICAg
IHJldHVybjsKIAotICAgIC8vIElmIHRoZSB2aXNpYmlsaXR5IHN0YXRlIG1heSBoYXZlIGNoYW5n
ZWQsIHRoZW4gc28gbWF5IHRoZSB2aXN1YWxseSBpZGxlICYgb2NjbHVkZWQgYWdub3N0aWMgc3Rh
dGUuCi0gICAgaWYgKG1heUhhdmVDaGFuZ2VkICYgVmlld1N0YXRlOjpJc1Zpc2libGUpCi0gICAg
ICAgIG1heUhhdmVDaGFuZ2VkIHw9IFZpZXdTdGF0ZTo6SXNWaXNpYmxlT3JPY2NsdWRlZCB8IFZp
ZXdTdGF0ZTo6SXNWaXN1YWxseUlkbGU7Ci0KICAgICAvLyBSZWNvcmQgdGhlIHByaW9yIHZpZXcg
c3RhdGUsIHVwZGF0ZSB0aGUgZmxhZ3MgdGhhdCBtYXkgaGF2ZSBjaGFuZ2VkLAogICAgIC8vIGFu
ZCBjaGVjayB3aGljaCBmbGFncyBoYXZlIGFjdHVhbGx5IGNoYW5nZWQuCiAgICAgVmlld1N0YXRl
OjpGbGFncyBwcmV2aW91c1ZpZXdTdGF0ZSA9IG1fdmlld1N0YXRlOwotICAgIHVwZGF0ZVZpZXdT
dGF0ZShtYXlIYXZlQ2hhbmdlZCk7CisgICAgbV92aWV3U3RhdGUgPSBtX3BhZ2VDbGllbnQudmll
d1N0YXRlKCk7CiAgICAgVmlld1N0YXRlOjpGbGFncyBjaGFuZ2VkID0gbV92aWV3U3RhdGUgXiBw
cmV2aW91c1ZpZXdTdGF0ZTsKIAogICAgIGlmIChjaGFuZ2VkKQpAQCAtMTEwMSw3ICsxMDc5LDcg
QEAgdm9pZCBXZWJQYWdlUHJveHk6OnZpZXdTdGF0ZURpZENoYW5nZShWaQogICAgIGlmICgoY2hh
bmdlZCAmIFZpZXdTdGF0ZTo6SXNWaXNpYmxlKSAmJiAhaXNWaWV3VmlzaWJsZSgpKQogICAgICAg
ICBtX3Byb2Nlc3MtPnJlc3BvbnNpdmVuZXNzVGltZXIoKS0+c3RvcCgpOwogCi0gICAgaWYgKCht
YXlIYXZlQ2hhbmdlZCAmIFZpZXdTdGF0ZTo6SXNJbldpbmRvdykgJiYgKG1fdmlld1N0YXRlICYg
Vmlld1N0YXRlOjpJc0luV2luZG93KSkgeworICAgIGlmICgoY2hhbmdlZCAmIFZpZXdTdGF0ZTo6
SXNJbldpbmRvdykgJiYgKG1fdmlld1N0YXRlICYgVmlld1N0YXRlOjpJc0luV2luZG93KSkgewog
ICAgICAgICBMYXllckhvc3RpbmdNb2RlIGxheWVySG9zdGluZ01vZGUgPSBtX3BhZ2VDbGllbnQu
dmlld0xheWVySG9zdGluZ01vZGUoKTsKICAgICAgICAgaWYgKG1fbGF5ZXJIb3N0aW5nTW9kZSAh
PSBsYXllckhvc3RpbmdNb2RlKSB7CiAgICAgICAgICAgICBtX2xheWVySG9zdGluZ01vZGUgPSBs
YXllckhvc3RpbmdNb2RlOwpAQCAtMTEwOSw3ICsxMDg3LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6
OnZpZXdTdGF0ZURpZENoYW5nZShWaQogICAgICAgICB9CiAgICAgfQogCi0gICAgaWYgKChtYXlI
YXZlQ2hhbmdlZCAmIFZpZXdTdGF0ZTo6SXNJbldpbmRvdykgJiYgIShtX3ZpZXdTdGF0ZSAmIFZp
ZXdTdGF0ZTo6SXNJbldpbmRvdykpIHsKKyAgICBpZiAoKGNoYW5nZWQgJiBWaWV3U3RhdGU6Oklz
SW5XaW5kb3cpICYmICEobV92aWV3U3RhdGUgJiBWaWV3U3RhdGU6OklzSW5XaW5kb3cpKSB7CiAj
aWYgRU5BQkxFKElOUFVUX1RZUEVfQ09MT1JfUE9QT1ZFUikKICAgICAgICAgLy8gV2hlbiBsZWF2
aW5nIHRoZSBjdXJyZW50IHBhZ2UsIGNsb3NlIHRoZSBwb3BvdmVyIGNvbG9yIHdlbGwuCiAgICAg
ICAgIGlmIChtX2NvbG9yUGlja2VyKQpAQCAtMzgwNSw3ICszNzgzLDcgQEAgdm9pZCBXZWJQYWdl
UHJveHk6OnNldEN1cnNvcihjb25zdCBXZWJDbwogewogICAgIC8vIFRoZSBXZWIgcHJvY2VzcyBt
YXkgaGF2ZSBhc2tlZCB0byBjaGFuZ2UgdGhlIGN1cnNvciB3aGVuIHRoZSB2aWV3IHdhcyBpbiBh
biBhY3RpdmUgd2luZG93LCBidXQKICAgICAvLyBpZiBpdCBpcyBubyBsb25nZXIgaW4gYSB3aW5k
b3cgb3IgdGhlIHdpbmRvdyBpcyBub3QgYWN0aXZlLCB0aGVuIHRoZSBjdXJzb3Igc2hvdWxkIG5v
dCBjaGFuZ2UuCi0gICAgaWYgKG1fcGFnZUNsaWVudC5pc1ZpZXdXaW5kb3dBY3RpdmUoKSkKKyAg
ICBpZiAoaXNWaWV3V2luZG93QWN0aXZlKCkpCiAgICAgICAgIG1fcGFnZUNsaWVudC5zZXRDdXJz
b3IoY3Vyc29yKTsKIH0KIApAQCAtNDY4OSw3ICs0NjY3LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6
OnVwZGF0ZUJhY2tpbmdTdG9yZURpcwogICAgIGlmICghbV9wcm9jZXNzLT5yZXNwb25zaXZlbmVz
c1RpbWVyKCktPmlzUmVzcG9uc2l2ZSgpKQogICAgICAgICBpc0Rpc2NhcmRhYmxlID0gZmFsc2U7
CiAgICAgZWxzZQotICAgICAgICBpc0Rpc2NhcmRhYmxlID0gIW1fcGFnZUNsaWVudC5pc1ZpZXdX
aW5kb3dBY3RpdmUoKSB8fCAhaXNWaWV3VmlzaWJsZSgpOworICAgICAgICBpc0Rpc2NhcmRhYmxl
ID0gIWlzVmlld1dpbmRvd0FjdGl2ZSgpIHx8ICFpc1ZpZXdWaXNpYmxlKCk7CiAKICAgICBtX2Ry
YXdpbmdBcmVhLT5zZXRCYWNraW5nU3RvcmVJc0Rpc2NhcmRhYmxlKGlzRGlzY2FyZGFibGUpOwog
fQpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAkocmV2aXNpb24g
MTY5MzYyKQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC01NjgsMTUgKzU2OCwxNSBAQCBwdWJsaWM6CiAgICAgYm9vbCBkZWxlZ2F0
ZXNTY3JvbGxpbmcoKSBjb25zdCB7IHJldHVybiBtX2RlbGVnYXRlc1Njcm9sbGluZzsgfQogCiAg
ICAgZW51bSBjbGFzcyBXYW50c1JlcGx5T3JOb3QgeyBEb2VzTm90V2FudFJlcGx5LCBEb2VzV2Fu
dFJlcGx5IH07Ci0gICAgdm9pZCB2aWV3U3RhdGVEaWRDaGFuZ2UoV2ViQ29yZTo6Vmlld1N0YXRl
OjpGbGFncyBtYXlIYXZlQ2hhbmdlZCwgV2FudHNSZXBseU9yTm90ID0gV2FudHNSZXBseU9yTm90
OjpEb2VzTm90V2FudFJlcGx5KTsKKyAgICB2b2lkIHZpZXdTdGF0ZURpZENoYW5nZShXYW50c1Jl
cGx5T3JOb3QgPSBXYW50c1JlcGx5T3JOb3Q6OkRvZXNOb3RXYW50UmVwbHkpOwogICAgIGJvb2wg
aXNJbldpbmRvdygpIGNvbnN0IHsgcmV0dXJuIG1fdmlld1N0YXRlICYgV2ViQ29yZTo6Vmlld1N0
YXRlOjpJc0luV2luZG93OyB9CiAgICAgdm9pZCB3YWl0Rm9yRGlkVXBkYXRlVmlld1N0YXRlKCk7
CiAKICAgICB2b2lkIGxheWVySG9zdGluZ01vZGVEaWRDaGFuZ2UoKTsKIAogICAgIFdlYkNvcmU6
OkludFNpemUgdmlld1NpemUoKSBjb25zdDsKKyAgICBib29sIGlzVmlld1dpbmRvd0FjdGl2ZSgp
IGNvbnN0IHsgcmV0dXJuIG1fdmlld1N0YXRlICYgV2ViQ29yZTo6Vmlld1N0YXRlOjpXaW5kb3dJ
c0FjdGl2ZTsgfQogICAgIGJvb2wgaXNWaWV3VmlzaWJsZSgpIGNvbnN0IHsgcmV0dXJuIG1fdmll
d1N0YXRlICYgV2ViQ29yZTo6Vmlld1N0YXRlOjpJc1Zpc2libGU7IH0KLSAgICBib29sIGlzVmll
d1dpbmRvd0FjdGl2ZSgpIGNvbnN0OwogICAgIGJvb2wgaXNQcm9jZXNzU3VwcHJlc3NpYmxlKCkg
Y29uc3Q7CiAKICAgICB2b2lkIGFkZE1JTUVUeXBlV2l0aEN1c3RvbUNvbnRlbnRQcm92aWRlcihj
b25zdCBTdHJpbmcmIG1pbWVUeXBlKTsKQEAgLTExMDIsNyArMTEwMiw2IEBAIHByaXZhdGU6CiAg
ICAgV2ViUGFnZVByb3h5KFBhZ2VDbGllbnQmLCBXZWJQcm9jZXNzUHJveHkmLCB1aW50NjRfdCBw
YWdlSUQsIGNvbnN0IFdlYlBhZ2VDb25maWd1cmF0aW9uJik7CiAgICAgdm9pZCBwbGF0Zm9ybUlu
aXRpYWxpemUoKTsKIAotICAgIHZvaWQgdXBkYXRlVmlld1N0YXRlKFdlYkNvcmU6OlZpZXdTdGF0
ZTo6RmxhZ3MgZmxhZ3NUb1VwZGF0ZSA9IFdlYkNvcmU6OlZpZXdTdGF0ZTo6QWxsRmxhZ3MpOwog
ICAgIHZvaWQgdXBkYXRlQWN0aXZpdHlUb2tlbigpOwogICAgICAgICAKICAgICB2b2lkIHJlc2V0
U3RhdGUoKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHku
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJv
eHkuY3BwCShyZXZpc2lvbiAxNjkzNjIpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2Vi
UHJvY2Vzc1Byb3h5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjY5LDcgKzY2OSw3IEBAIHZvaWQg
V2ViUHJvY2Vzc1Byb3h5OjpyZWxlYXNlUGFnZUNhY2hlKCkKIHZvaWQgV2ViUHJvY2Vzc1Byb3h5
Ojp3aW5kb3dTZXJ2ZXJDb25uZWN0aW9uU3RhdGVDaGFuZ2VkKCkKIHsKICAgICBmb3IgKGNvbnN0
IGF1dG8mIHBhZ2UgOiBtX3BhZ2VNYXAudmFsdWVzKCkpCi0gICAgICAgIHBhZ2UtPnZpZXdTdGF0
ZURpZENoYW5nZShWaWV3U3RhdGU6OklzVmlzdWFsbHlJZGxlKTsKKyAgICAgICAgcGFnZS0+dmll
d1N0YXRlRGlkQ2hhbmdlKCk7CiB9CiAKIHZvaWQgV2ViUHJvY2Vzc1Byb3h5OjpyZXF1ZXN0VGVy
bWluYXRpb24oKQpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dl
YlZpZXcubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2Nv
YS9XS1dlYlZpZXcubW0JKHJldmlzaW9uIDE2OTM2MikKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC05MTgsNyArOTE4
LDcgQEAgLSAoQk9PTClfem9vbVRvUmVjdDooV2ViQ29yZTo6RmxvYXRSZWN0KQogCiAtICh2b2lk
KWRpZE1vdmVUb1dpbmRvdwogewotICAgIF9wYWdlLT52aWV3U3RhdGVEaWRDaGFuZ2UoV2ViQ29y
ZTo6Vmlld1N0YXRlOjpJc0luV2luZG93KTsKKyAgICBfcGFnZS0+dmlld1N0YXRlRGlkQ2hhbmdl
KCk7CiB9CiAKICNwcmFnbWEgbWFyayAtIFVJU2Nyb2xsVmlld0RlbGVnYXRlCkluZGV4OiBTb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9QYWdlQ2xpZW50SW1wbC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvUGFnZUNsaWVudEltcGwuY3Bw
CShyZXZpc2lvbiAxNjkzNjIpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9Q
YWdlQ2xpZW50SW1wbC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTk3LDI2ICs5NywyNCBAQCBXZWJD
b3JlOjpJbnRTaXplIFBhZ2VDbGllbnRJbXBsOjp2aWV3U2l6CiAgICAgcmV0dXJuIEludFNpemUo
YWxsb2NhdGlvbi53aWR0aCwgYWxsb2NhdGlvbi5oZWlnaHQpOwogfQogCi1ib29sIFBhZ2VDbGll
bnRJbXBsOjppc1ZpZXdXaW5kb3dBY3RpdmUoKQorVmlld1N0YXRlOjpGbGFncyBQYWdlQ2xpZW50
SW1wbDo6dmlld1N0YXRlKCkKIHsKLSAgICByZXR1cm4gd2Via2l0V2ViVmlld0Jhc2VJc0luV2lu
ZG93QWN0aXZlKFdFQktJVF9XRUJfVklFV19CQVNFKG1fdmlld1dpZGdldCkpOworICAgIFZpZXdT
dGF0ZTo6RmxhZ3Mgdmlld1N0YXRlID0gVmlld1N0YXRlOjpOb0ZsYWdzOworICAgIAorICAgIGlm
ICh3ZWJraXRXZWJWaWV3QmFzZUlzRm9jdXNlZChXRUJLSVRfV0VCX1ZJRVdfQkFTRShtX3ZpZXdX
aWRnZXQpKSkKKyAgICAgICAgdmlld1N0YXRlIHw9IFZpZXdTdGF0ZTo6SXNGb2N1c2VkOworICAg
IGlmICh3ZWJraXRXZWJWaWV3QmFzZUlzSW5XaW5kb3dBY3RpdmUoV0VCS0lUX1dFQl9WSUVXX0JB
U0UobV92aWV3V2lkZ2V0KSkpCisgICAgICAgIHZpZXdTdGF0ZSB8PSBWaWV3U3RhdGU6OldpbmRv
d0lzQWN0aXZlOworICAgIGlmICh3ZWJraXRXZWJWaWV3QmFzZUlzSW5XaW5kb3coV0VCS0lUX1dF
Ql9WSUVXX0JBU0UobV92aWV3V2lkZ2V0KSkpCisgICAgICAgIHZpZXdTdGF0ZSB8PSBWaWV3U3Rh
dGU6OklzSW5XaW5kb3c7CisgICAgaWYgKHdlYmtpdFdlYlZpZXdCYXNlSXNWaXNpYmxlKFdFQktJ
VF9XRUJfVklFV19CQVNFKG1fdmlld1dpZGdldCkpKQorICAgICAgICB2aWV3U3RhdGUgfD0gKFZp
ZXdTdGF0ZTo6SXNWaXNpYmxlIHwgVmlld1N0YXRlOjpJc1Zpc2libGVPck9jY2x1ZGVkKTsKKyAg
ICBlbHNlCisgICAgICAgIHZpZXdTdGF0ZSB8PSBWaWV3U3RhdGU6OklzVmlzdWFsbHlJZGxlOwor
ICAgIAorICAgIHJldHVybiB2aWV3U3RhdGU7CiB9Ci0KLWJvb2wgUGFnZUNsaWVudEltcGw6Omlz
Vmlld0ZvY3VzZWQoKQotewotICAgIHJldHVybiB3ZWJraXRXZWJWaWV3QmFzZUlzRm9jdXNlZChX
RUJLSVRfV0VCX1ZJRVdfQkFTRShtX3ZpZXdXaWRnZXQpKTsKLX0KLQotYm9vbCBQYWdlQ2xpZW50
SW1wbDo6aXNWaWV3VmlzaWJsZSgpCi17Ci0gICAgcmV0dXJuIHdlYmtpdFdlYlZpZXdCYXNlSXNW
aXNpYmxlKFdFQktJVF9XRUJfVklFV19CQVNFKG1fdmlld1dpZGdldCkpOwotfQotCi1ib29sIFBh
Z2VDbGllbnRJbXBsOjppc1ZpZXdJbldpbmRvdygpCi17Ci0gICAgcmV0dXJuIHdlYmtpdFdlYlZp
ZXdCYXNlSXNJbldpbmRvdyhXRUJLSVRfV0VCX1ZJRVdfQkFTRShtX3ZpZXdXaWRnZXQpKTsKLX0K
LQorICAgIAogdm9pZCBQYWdlQ2xpZW50SW1wbDo6UGFnZUNsaWVudEltcGw6OnByb2Nlc3NEaWRF
eGl0KCkKIHsKICAgICBub3RJbXBsZW1lbnRlZCgpOwpJbmRleDogU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9ndGsvUGFnZUNsaWVudEltcGwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9QYWdlQ2xpZW50SW1wbC5oCShyZXZpc2lvbiAxNjkzNjIp
CisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9QYWdlQ2xpZW50SW1wbC5oCSh3
b3JraW5nIGNvcHkpCkBAIC02NywxMCArNjcsOCBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9p
ZCBzY3JvbGxWaWV3KGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIHNjcm9sbFJlY3QsIGNvbnN0IFdl
YkNvcmU6OkludFNpemUmIHNjcm9sbE9mZnNldCkgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lk
IHJlcXVlc3RTY3JvbGwoY29uc3QgV2ViQ29yZTo6RmxvYXRQb2ludCYgc2Nyb2xsUG9zaXRpb24s
IGJvb2wgaXNQcm9ncmFtbWF0aWNTY3JvbGwpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgV2ViQ29y
ZTo6SW50U2l6ZSB2aWV3U2l6ZSgpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgYm9vbCBpc1ZpZXdX
aW5kb3dBY3RpdmUoKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIGJvb2wgaXNWaWV3Rm9jdXNlZCgp
IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgYm9vbCBpc1ZpZXdWaXNpYmxlKCkgb3ZlcnJpZGU7Ci0g
ICAgdmlydHVhbCBib29sIGlzVmlld0luV2luZG93KCkgb3ZlcnJpZGU7CisgICAgYm9vbCBpc1Zp
ZXdWaXNpYmxlKCk7CisgICAgdmlydHVhbCBXZWJDb3JlOjpWaWV3U3RhdGU6OkZsYWdzIHZpZXdT
dGF0ZSgpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCBwcm9jZXNzRGlkRXhpdCgpIG92ZXJy
aWRlOwogICAgIHZpcnR1YWwgdm9pZCBkaWRSZWxhdW5jaFByb2Nlc3MoKSBvdmVycmlkZTsKICAg
ICB2aXJ0dWFsIHZvaWQgcGFnZUNsb3NlZCgpIG92ZXJyaWRlOwpJbmRleDogU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlld0Jhc2UuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdCYXNlLmNwcAko
cmV2aXNpb24gMTY5MzYyKQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2Vi
S2l0V2ViVmlld0Jhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNzAsNyArMTcwLDcgQEAgc3Rh
dGljIGdib29sZWFuIHRvcGxldmVsV2luZG93Rm9jdXNJbkV2ZQogICAgIFdlYktpdFdlYlZpZXdC
YXNlUHJpdmF0ZSogcHJpdiA9IHdlYlZpZXdCYXNlLT5wcml2OwogICAgIGlmICghcHJpdi0+aXNJ
bldpbmRvd0FjdGl2ZSkgewogICAgICAgICBwcml2LT5pc0luV2luZG93QWN0aXZlID0gdHJ1ZTsK
LSAgICAgICAgcHJpdi0+cGFnZVByb3h5LT52aWV3U3RhdGVEaWRDaGFuZ2UoVmlld1N0YXRlOjpX
aW5kb3dJc0FjdGl2ZSk7CisgICAgICAgIHByaXYtPnBhZ2VQcm94eS0+dmlld1N0YXRlRGlkQ2hh
bmdlKCk7CiAgICAgfQogCiAgICAgcmV0dXJuIEZBTFNFOwpAQCAtMTgxLDcgKzE4MSw3IEBAIHN0
YXRpYyBnYm9vbGVhbiB0b3BsZXZlbFdpbmRvd0ZvY3VzT3V0RXYKICAgICBXZWJLaXRXZWJWaWV3
QmFzZVByaXZhdGUqIHByaXYgPSB3ZWJWaWV3QmFzZS0+cHJpdjsKICAgICBpZiAocHJpdi0+aXNJ
bldpbmRvd0FjdGl2ZSkgewogICAgICAgICBwcml2LT5pc0luV2luZG93QWN0aXZlID0gZmFsc2U7
Ci0gICAgICAgIHByaXYtPnBhZ2VQcm94eS0+dmlld1N0YXRlRGlkQ2hhbmdlKFZpZXdTdGF0ZTo6
V2luZG93SXNBY3RpdmUpOworICAgICAgICBwcml2LT5wYWdlUHJveHktPnZpZXdTdGF0ZURpZENo
YW5nZSgpOwogICAgIH0KIAogICAgIHJldHVybiBGQUxTRTsKQEAgLTE5Myw3ICsxOTMsNyBAQCBz
dGF0aWMgZ2Jvb2xlYW4gdG9wbGV2ZWxXaW5kb3dWaXNpYmlsaXR5CiAgICAgYm9vbCBpc1dpbmRv
d1Zpc2libGUgPSB2aXNpYmlsaXR5RXZlbnQtPnN0YXRlICE9IEdES19WSVNJQklMSVRZX0ZVTExZ
X09CU0NVUkVEOwogICAgIGlmIChwcml2LT5pc1dpbmRvd1Zpc2libGUgIT0gaXNXaW5kb3dWaXNp
YmxlKSB7CiAgICAgICAgIHByaXYtPmlzV2luZG93VmlzaWJsZSA9IGlzV2luZG93VmlzaWJsZTsK
LSAgICAgICAgcHJpdi0+cGFnZVByb3h5LT52aWV3U3RhdGVEaWRDaGFuZ2UoVmlld1N0YXRlOjpJ
c1Zpc2libGUpOworICAgICAgICBwcml2LT5wYWdlUHJveHktPnZpZXdTdGF0ZURpZENoYW5nZSgp
OwogICAgIH0KIAogICAgIHJldHVybiBGQUxTRTsKQEAgLTIyMyw3ICsyMjMsNyBAQCBzdGF0aWMg
dm9pZCB3ZWJraXRXZWJWaWV3QmFzZVNldFRvcGxldmVsCiAgICAgfQogCiAgICAgcHJpdi0+dG9w
bGV2ZWxPblNjcmVlbldpbmRvdyA9IHdpbmRvdzsKLSAgICBwcml2LT5wYWdlUHJveHktPnZpZXdT
dGF0ZURpZENoYW5nZShWaWV3U3RhdGU6OklzSW5XaW5kb3cpOworICAgIHByaXYtPnBhZ2VQcm94
eS0+dmlld1N0YXRlRGlkQ2hhbmdlKCk7CiAgICAgaWYgKCFwcml2LT50b3BsZXZlbE9uU2NyZWVu
V2luZG93KQogICAgICAgICByZXR1cm47CiAKQEAgLTU2NCw3ICs1NjQsNyBAQCBzdGF0aWMgdm9p
ZCB3ZWJraXRXZWJWaWV3QmFzZU1hcChHdGtXaWRnCiAgICAgV2ViS2l0V2ViVmlld0Jhc2VQcml2
YXRlKiBwcml2ID0gd2ViVmlld0Jhc2UtPnByaXY7CiAgICAgaWYgKCFwcml2LT5pc1Zpc2libGUp
IHsKICAgICAgICAgcHJpdi0+aXNWaXNpYmxlID0gdHJ1ZTsKLSAgICAgICAgcHJpdi0+cGFnZVBy
b3h5LT52aWV3U3RhdGVEaWRDaGFuZ2UoVmlld1N0YXRlOjpJc1Zpc2libGUpOworICAgICAgICBw
cml2LT5wYWdlUHJveHktPnZpZXdTdGF0ZURpZENoYW5nZSgpOwogICAgIH0KIAogICAgIGlmICgh
cHJpdi0+bmVlZHNSZXNpemVPbk1hcCkKQEAgLTU4Myw3ICs1ODMsNyBAQCBzdGF0aWMgdm9pZCB3
ZWJraXRXZWJWaWV3QmFzZVVubWFwKEd0a1dpCiAgICAgV2ViS2l0V2ViVmlld0Jhc2VQcml2YXRl
KiBwcml2ID0gV0VCS0lUX1dFQl9WSUVXX0JBU0Uod2lkZ2V0KS0+cHJpdjsKICAgICBpZiAocHJp
di0+aXNWaXNpYmxlKSB7CiAgICAgICAgIHByaXYtPmlzVmlzaWJsZSA9IGZhbHNlOwotICAgICAg
ICBwcml2LT5wYWdlUHJveHktPnZpZXdTdGF0ZURpZENoYW5nZShWaWV3U3RhdGU6OklzVmlzaWJs
ZSk7CisgICAgICAgIHByaXYtPnBhZ2VQcm94eS0+dmlld1N0YXRlRGlkQ2hhbmdlKCk7CiAgICAg
fQogfQogCkBAIC0xMTI0LDcgKzExMjQsNiBAQCB2b2lkIHdlYmtpdFdlYlZpZXdCYXNlU2V0Rm9j
dXMoV2ViS2l0V2ViCiAgICAgaWYgKHByaXYtPmlzRm9jdXNlZCA9PSBmb2N1c2VkKQogICAgICAg
ICByZXR1cm47CiAKLSAgICB1bnNpZ25lZCB2aWV3U3RhdGVGbGFncyA9IFZpZXdTdGF0ZTo6SXNG
b2N1c2VkOwogICAgIHByaXYtPmlzRm9jdXNlZCA9IGZvY3VzZWQ7CiAKICAgICAvLyBJZiB0aGUg
dmlldyBoYXMgcmVjZWl2ZWQgdGhlIGZvY3VzIGFuZCB0aGUgd2luZG93IGlzIG5vdCBhY3RpdmUK
QEAgLTExMzIsMTEgKzExMzEsOSBAQCB2b2lkIHdlYmtpdFdlYlZpZXdCYXNlU2V0Rm9jdXMoV2Vi
S2l0V2ViCiAgICAgLy8gdG9wbGV2ZWwgd2luZG93IGlzIGEgR1RLX1dJTkRPV19QT1BVUCBhbmQg
dGhlIGZvY3VzIGhhcyBiZWVuCiAgICAgLy8gc2V0IHByb2dyYW1hdGljYWxseSBsaWtlIFdlYktp
dFRlc3RSdW5uZXIgZG9lcywgYmVjYXVzZSBQT1BVUAogICAgIC8vIGNhbid0IGJlIGZvY3VzZWQu
Ci0gICAgaWYgKHByaXYtPmlzRm9jdXNlZCAmJiAhcHJpdi0+aXNJbldpbmRvd0FjdGl2ZSkgewor
ICAgIGlmIChwcml2LT5pc0ZvY3VzZWQgJiYgIXByaXYtPmlzSW5XaW5kb3dBY3RpdmUpCiAgICAg
ICAgIHByaXYtPmlzSW5XaW5kb3dBY3RpdmUgPSB0cnVlOwotICAgICAgICB2aWV3U3RhdGVGbGFn
cyB8PSBWaWV3U3RhdGU6OldpbmRvd0lzQWN0aXZlOwotICAgIH0KLSAgICBwcml2LT5wYWdlUHJv
eHktPnZpZXdTdGF0ZURpZENoYW5nZSh2aWV3U3RhdGVGbGFncyk7CisgICAgcHJpdi0+cGFnZVBy
b3h5LT52aWV3U3RhdGVEaWRDaGFuZ2UoKTsKIH0KIAogYm9vbCB3ZWJraXRXZWJWaWV3QmFzZUlz
SW5XaW5kb3dBY3RpdmUoV2ViS2l0V2ViVmlld0Jhc2UqIHdlYlZpZXdCYXNlKQpJbmRleDogU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9tYWMvV0tWaWV3Lm1tCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvbWFjL1dLVmlldy5tbQkocmV2aXNpb24gMTY5MzYy
KQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9tYWMvV0tWaWV3Lm1tCSh3b3JraW5n
IGNvcHkpCkBAIC0zNTMsNyArMzUzLDcgQEAgLSAoQk9PTCliZWNvbWVGaXJzdFJlc3BvbmRlcgog
ICAgIF9kYXRhLT5faW5CZWNvbWVGaXJzdFJlc3BvbmRlciA9IHRydWU7CiAgICAgCiAgICAgW3Nl
bGYgX3VwZGF0ZVNlY3VyZUlucHV0U3RhdGVdOwotICAgIF9kYXRhLT5fcGFnZS0+dmlld1N0YXRl
RGlkQ2hhbmdlKFZpZXdTdGF0ZTo6SXNGb2N1c2VkKTsKKyAgICBfZGF0YS0+X3BhZ2UtPnZpZXdT
dGF0ZURpZENoYW5nZSgpOwogCiAgICAgX2RhdGEtPl9pbkJlY29tZUZpcnN0UmVzcG9uZGVyID0g
ZmFsc2U7CiAgICAgCkBAIC0zODUsNyArMzg1LDcgQEAgLSAoQk9PTClyZXNpZ25GaXJzdFJlc3Bv
bmRlcgogICAgIGlmICghX2RhdGEtPl9wYWdlLT5tYWludGFpbnNJbmFjdGl2ZVNlbGVjdGlvbigp
KQogICAgICAgICBfZGF0YS0+X3BhZ2UtPmNsZWFyU2VsZWN0aW9uKCk7CiAgICAgCi0gICAgX2Rh
dGEtPl9wYWdlLT52aWV3U3RhdGVEaWRDaGFuZ2UoVmlld1N0YXRlOjpJc0ZvY3VzZWQpOworICAg
IF9kYXRhLT5fcGFnZS0+dmlld1N0YXRlRGlkQ2hhbmdlKCk7CiAKICAgICBfZGF0YS0+X2luUmVz
aWduRmlyc3RSZXNwb25kZXIgPSBmYWxzZTsKIApAQCAtMjQ0OCwxMiArMjQ0OCw5IEBAIC0gKHZv
aWQpdmlld0RpZE1vdmVUb1dpbmRvdwogICAgIGlmIChbc2VsZiB3aW5kb3ddKSB7CiAgICAgICAg
IFtzZWxmIGRvV2luZG93RGlkQ2hhbmdlU2NyZWVuXTsKIAotICAgICAgICBWaWV3U3RhdGU6OkZs
YWdzIHZpZXdTdGF0ZUNoYW5nZXMgPSBWaWV3U3RhdGU6OldpbmRvd0lzQWN0aXZlIHwgVmlld1N0
YXRlOjpJc1Zpc2libGU7CiAgICAgICAgIGlmIChbc2VsZiBpc0RlZmVycmluZ1ZpZXdJbldpbmRv
d0NoYW5nZXNdKQogICAgICAgICAgICAgX2RhdGEtPl92aWV3SW5XaW5kb3dDaGFuZ2VXYXNEZWZl
cnJlZCA9IFlFUzsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgdmlld1N0YXRlQ2hhbmdlcyB8
PSBWaWV3U3RhdGU6OklzSW5XaW5kb3c7Ci0gICAgICAgIF9kYXRhLT5fcGFnZS0+dmlld1N0YXRl
RGlkQ2hhbmdlKHZpZXdTdGF0ZUNoYW5nZXMpOworICAgICAgICBfZGF0YS0+X3BhZ2UtPnZpZXdT
dGF0ZURpZENoYW5nZSgpOwogCiAgICAgICAgIFtzZWxmIF91cGRhdGVXaW5kb3dBbmRWaWV3RnJh
bWVzXTsKIApAQCAtMjQ2NiwxMiArMjQ2Myw5IEBAIC0gKHZvaWQpdmlld0RpZE1vdmVUb1dpbmRv
dwogCiAgICAgICAgIFtzZWxmIF9hY2Nlc3NpYmlsaXR5UmVnaXN0ZXJVSVByb2Nlc3NUb2tlbnNd
OwogICAgIH0gZWxzZSB7Ci0gICAgICAgIFZpZXdTdGF0ZTo6RmxhZ3Mgdmlld1N0YXRlQ2hhbmdl
cyA9IFZpZXdTdGF0ZTo6V2luZG93SXNBY3RpdmUgfCBWaWV3U3RhdGU6OklzVmlzaWJsZTsKICAg
ICAgICAgaWYgKFtzZWxmIGlzRGVmZXJyaW5nVmlld0luV2luZG93Q2hhbmdlc10pCiAgICAgICAg
ICAgICBfZGF0YS0+X3ZpZXdJbldpbmRvd0NoYW5nZVdhc0RlZmVycmVkID0gWUVTOwotICAgICAg
ICBlbHNlCi0gICAgICAgICAgICB2aWV3U3RhdGVDaGFuZ2VzIHw9IFZpZXdTdGF0ZTo6SXNJbldp
bmRvdzsKLSAgICAgICAgX2RhdGEtPl9wYWdlLT52aWV3U3RhdGVEaWRDaGFuZ2Uodmlld1N0YXRl
Q2hhbmdlcyk7CisgICAgICAgIF9kYXRhLT5fcGFnZS0+dmlld1N0YXRlRGlkQ2hhbmdlKCk7CiAK
ICAgICAgICAgW05TRXZlbnQgcmVtb3ZlTW9uaXRvcjpfZGF0YS0+X2ZsYWdzQ2hhbmdlZEV2ZW50
TW9uaXRvcl07CiAgICAgICAgIF9kYXRhLT5fZmxhZ3NDaGFuZ2VkRXZlbnRNb25pdG9yID0gbmls
OwpAQCAtMjQ5Miw3ICsyNDg2LDcgQEAgLSAodm9pZClfd2luZG93RGlkQmVjb21lS2V5OihOU05v
dGlmaWNhdAogICAgIE5TV2luZG93ICprZXlXaW5kb3cgPSBbbm90aWZpY2F0aW9uIG9iamVjdF07
CiAgICAgaWYgKGtleVdpbmRvdyA9PSBbc2VsZiB3aW5kb3ddIHx8IGtleVdpbmRvdyA9PSBbW3Nl
bGYgd2luZG93XSBhdHRhY2hlZFNoZWV0XSkgewogICAgICAgICBbc2VsZiBfdXBkYXRlU2VjdXJl
SW5wdXRTdGF0ZV07Ci0gICAgICAgIF9kYXRhLT5fcGFnZS0+dmlld1N0YXRlRGlkQ2hhbmdlKFZp
ZXdTdGF0ZTo6V2luZG93SXNBY3RpdmUpOworICAgICAgICBfZGF0YS0+X3BhZ2UtPnZpZXdTdGF0
ZURpZENoYW5nZSgpOwogICAgIH0KIH0KIApAQCAtMjUxMSwxOCArMjUwNSwxOCBAQCAtICh2b2lk
KV93aW5kb3dEaWRSZXNpZ25LZXk6KE5TTm90aWZpY2F0CiAgICAgTlNXaW5kb3cgKmZvcm1lcktl
eVdpbmRvdyA9IFtub3RpZmljYXRpb24gb2JqZWN0XTsKICAgICBpZiAoZm9ybWVyS2V5V2luZG93
ID09IFtzZWxmIHdpbmRvd10gfHwgZm9ybWVyS2V5V2luZG93ID09IFtbc2VsZiB3aW5kb3ddIGF0
dGFjaGVkU2hlZXRdKSB7CiAgICAgICAgIFtzZWxmIF91cGRhdGVTZWN1cmVJbnB1dFN0YXRlXTsK
LSAgICAgICAgX2RhdGEtPl9wYWdlLT52aWV3U3RhdGVEaWRDaGFuZ2UoVmlld1N0YXRlOjpXaW5k
b3dJc0FjdGl2ZSk7CisgICAgICAgIF9kYXRhLT5fcGFnZS0+dmlld1N0YXRlRGlkQ2hhbmdlKCk7
CiAgICAgfQogfQogCiAtICh2b2lkKV93aW5kb3dEaWRNaW5pYXR1cml6ZTooTlNOb3RpZmljYXRp
b24gKilub3RpZmljYXRpb24KIHsKLSAgICBfZGF0YS0+X3BhZ2UtPnZpZXdTdGF0ZURpZENoYW5n
ZShWaWV3U3RhdGU6OklzVmlzaWJsZSk7CisgICAgX2RhdGEtPl9wYWdlLT52aWV3U3RhdGVEaWRD
aGFuZ2UoKTsKIH0KIAogLSAodm9pZClfd2luZG93RGlkRGVtaW5pYXR1cml6ZTooTlNOb3RpZmlj
YXRpb24gKilub3RpZmljYXRpb24KIHsKLSAgICBfZGF0YS0+X3BhZ2UtPnZpZXdTdGF0ZURpZENo
YW5nZShWaWV3U3RhdGU6OklzVmlzaWJsZSk7CisgICAgX2RhdGEtPl9wYWdlLT52aWV3U3RhdGVE
aWRDaGFuZ2UoKTsKIH0KIAogLSAodm9pZClfd2luZG93RGlkTW92ZTooTlNOb3RpZmljYXRpb24g
Kilub3RpZmljYXRpb24KQEAgLTI1MzcsMTIgKzI1MzEsMTIgQEAgLSAodm9pZClfd2luZG93RGlk
UmVzaXplOihOU05vdGlmaWNhdGlvbgogCiAtICh2b2lkKV93aW5kb3dEaWRPcmRlck9mZlNjcmVl
bjooTlNOb3RpZmljYXRpb24gKilub3RpZmljYXRpb24KIHsKLSAgICBfZGF0YS0+X3BhZ2UtPnZp
ZXdTdGF0ZURpZENoYW5nZShWaWV3U3RhdGU6OklzVmlzaWJsZSB8IFZpZXdTdGF0ZTo6V2luZG93
SXNBY3RpdmUpOworICAgIF9kYXRhLT5fcGFnZS0+dmlld1N0YXRlRGlkQ2hhbmdlKCk7CiB9CiAK
IC0gKHZvaWQpX3dpbmRvd0RpZE9yZGVyT25TY3JlZW46KE5TTm90aWZpY2F0aW9uICopbm90aWZp
Y2F0aW9uCiB7Ci0gICAgX2RhdGEtPl9wYWdlLT52aWV3U3RhdGVEaWRDaGFuZ2UoVmlld1N0YXRl
OjpJc1Zpc2libGUgfCBWaWV3U3RhdGU6OldpbmRvd0lzQWN0aXZlKTsKKyAgICBfZGF0YS0+X3Bh
Z2UtPnZpZXdTdGF0ZURpZENoYW5nZSgpOwogfQogCiAtICh2b2lkKV93aW5kb3dEaWRDaGFuZ2VC
YWNraW5nUHJvcGVydGllczooTlNOb3RpZmljYXRpb24gKilub3RpZmljYXRpb24KQEAgLTI1NTgs
NyArMjU1Miw3IEBAIC0gKHZvaWQpX3dpbmRvd0RpZENoYW5nZUJhY2tpbmdQcm9wZXJ0aWUKICNp
ZiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwOTAKIC0gKHZvaWQpX3dpbmRv
d0RpZENoYW5nZU9jY2x1c2lvblN0YXRlOihOU05vdGlmaWNhdGlvbiAqKW5vdGlmaWNhdGlvbgog
ewotICAgIF9kYXRhLT5fcGFnZS0+dmlld1N0YXRlRGlkQ2hhbmdlKFZpZXdTdGF0ZTo6SXNWaXNp
YmxlKTsKKyAgICBfZGF0YS0+X3BhZ2UtPnZpZXdTdGF0ZURpZENoYW5nZSgpOwogfQogI2VuZGlm
CiAKQEAgLTI1ODIsMTIgKzI1NzYsMTIgQEAgLSAoQk9PTCltb3VzZURvd25DYW5Nb3ZlV2luZG93
CiAKIC0gKHZvaWQpdmlld0RpZEhpZGUKIHsKLSAgICBfZGF0YS0+X3BhZ2UtPnZpZXdTdGF0ZURp
ZENoYW5nZShWaWV3U3RhdGU6OklzVmlzaWJsZSk7CisgICAgX2RhdGEtPl9wYWdlLT52aWV3U3Rh
dGVEaWRDaGFuZ2UoKTsKIH0KIAogLSAodm9pZCl2aWV3RGlkVW5oaWRlCiB7Ci0gICAgX2RhdGEt
Pl9wYWdlLT52aWV3U3RhdGVEaWRDaGFuZ2UoVmlld1N0YXRlOjpJc1Zpc2libGUpOworICAgIF9k
YXRhLT5fcGFnZS0+dmlld1N0YXRlRGlkQ2hhbmdlKCk7CiB9CiAKIC0gKHZvaWQpdmlld0RpZENo
YW5nZUJhY2tpbmdQcm9wZXJ0aWVzCkBAIC0yNjAzLDcgKzI1OTcsNyBAQCAtICh2b2lkKXZpZXdE
aWRDaGFuZ2VCYWNraW5nUHJvcGVydGllcwogCiAtICh2b2lkKV9hY3RpdmVTcGFjZURpZENoYW5n
ZTooTlNOb3RpZmljYXRpb24gKilub3RpZmljYXRpb24KIHsKLSAgICBfZGF0YS0+X3BhZ2UtPnZp
ZXdTdGF0ZURpZENoYW5nZShWaWV3U3RhdGU6OklzVmlzaWJsZSk7CisgICAgX2RhdGEtPl9wYWdl
LT52aWV3U3RhdGVEaWRDaGFuZ2UoKTsKIH0KIAogLSAodm9pZClfYWNjZXNzaWJpbGl0eVJlZ2lz
dGVyVUlQcm9jZXNzVG9rZW5zCkBAIC0zNDkwLDcgKzM0ODQsNyBAQCAtICh2b2lkKV9zZXRUaHVt
Ym5haWxWaWV3OihfV0tUaHVtYm5haWxWCiAgICAgZWxzZQogICAgICAgICBbc2VsZiBfc2V0QWNj
ZWxlcmF0ZWRDb21wb3NpdGluZ01vZGVSb290TGF5ZXI6X2RhdGEtPl9yb290TGF5ZXIuZ2V0KCld
OwogCi0gICAgX2RhdGEtPl9wYWdlLT52aWV3U3RhdGVEaWRDaGFuZ2UoVmlld1N0YXRlOjpXaW5k
b3dJc0FjdGl2ZSB8IFZpZXdTdGF0ZTo6SXNJbldpbmRvdyB8IFZpZXdTdGF0ZTo6SXNWaXNpYmxl
KTsKKyAgICBfZGF0YS0+X3BhZ2UtPnZpZXdTdGF0ZURpZENoYW5nZSgpOwogfQogCiAtIChfV0tU
aHVtYm5haWxWaWV3ICopX3RodW1ibmFpbFZpZXcKQEAgLTM3NDgsNyArMzc0Miw3IEBAIC0gKHZv
aWQpZW5kRGVmZXJyaW5nVmlld0luV2luZG93Q2hhbmdlcwogICAgIF9kYXRhLT5fc2hvdWxkRGVm
ZXJWaWV3SW5XaW5kb3dDaGFuZ2VzID0gTk87CiAKICAgICBpZiAoX2RhdGEtPl92aWV3SW5XaW5k
b3dDaGFuZ2VXYXNEZWZlcnJlZCkgewotICAgICAgICBfZGF0YS0+X3BhZ2UtPnZpZXdTdGF0ZURp
ZENoYW5nZShWaWV3U3RhdGU6OklzSW5XaW5kb3cpOworICAgICAgICBfZGF0YS0+X3BhZ2UtPnZp
ZXdTdGF0ZURpZENoYW5nZSgpOwogICAgICAgICBfZGF0YS0+X3ZpZXdJbldpbmRvd0NoYW5nZVdh
c0RlZmVycmVkID0gTk87CiAgICAgfQogfQpAQCAtMzc2Niw3ICszNzYwLDcgQEAgLSAodm9pZCll
bmREZWZlcnJpbmdWaWV3SW5XaW5kb3dDaGFuZ2VzUwogICAgIF9kYXRhLT5fc2hvdWxkRGVmZXJW
aWV3SW5XaW5kb3dDaGFuZ2VzID0gTk87CiAKICAgICBpZiAoX2RhdGEtPl92aWV3SW5XaW5kb3dD
aGFuZ2VXYXNEZWZlcnJlZCkgewotICAgICAgICBfZGF0YS0+X3BhZ2UtPnZpZXdTdGF0ZURpZENo
YW5nZShWaWV3U3RhdGU6OklzSW5XaW5kb3csIGhhc1BlbmRpbmdWaWV3SW5XaW5kb3dDaGFuZ2Ug
PyBXZWJQYWdlUHJveHk6OldhbnRzUmVwbHlPck5vdDo6RG9lc1dhbnRSZXBseSA6IFdlYlBhZ2VQ
cm94eTo6V2FudHNSZXBseU9yTm90OjpEb2VzTm90V2FudFJlcGx5KTsKKyAgICAgICAgX2RhdGEt
Pl9wYWdlLT52aWV3U3RhdGVEaWRDaGFuZ2UoaGFzUGVuZGluZ1ZpZXdJbldpbmRvd0NoYW5nZSA/
IFdlYlBhZ2VQcm94eTo6V2FudHNSZXBseU9yTm90OjpEb2VzV2FudFJlcGx5IDogV2ViUGFnZVBy
b3h5OjpXYW50c1JlcGx5T3JOb3Q6OkRvZXNOb3RXYW50UmVwbHkpOwogICAgICAgICBfZGF0YS0+
X3ZpZXdJbldpbmRvd0NoYW5nZVdhc0RlZmVycmVkID0gTk87CiAgICAgfQogCkluZGV4OiBTb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9XZWJWaWV3LmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9X
ZWJWaWV3LmNwcAkocmV2aXNpb24gMTY5MzYyKQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0Nvb3JkaW5hdGVkR3JhcGhpY3MvV2ViVmlldy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTkyLDcg
KzkyLDcgQEAgdm9pZCBXZWJWaWV3OjpzZXRBY3RpdmUoYm9vbCBhY3RpdmUpCiAgICAgICAgIHJl
dHVybjsKIAogICAgIHNjZW5lLT5zZXRBY3RpdmUoYWN0aXZlKTsKLSAgICBtX3BhZ2UtPnZpZXdT
dGF0ZURpZENoYW5nZShWaWV3U3RhdGU6OldpbmRvd0lzQWN0aXZlKTsKKyAgICBtX3BhZ2UtPnZp
ZXdTdGF0ZURpZENoYW5nZSgpOwogfQogCiB2b2lkIFdlYlZpZXc6OnNldFNpemUoY29uc3QgV2Vi
Q29yZTo6SW50U2l6ZSYgc2l6ZSkKQEAgLTExMSw3ICsxMTEsNyBAQCB2b2lkIFdlYlZpZXc6OnNl
dEZvY3VzZWQoYm9vbCBmb2N1c2VkKQogICAgICAgICByZXR1cm47CiAKICAgICBtX2ZvY3VzZWQg
PSBmb2N1c2VkOwotICAgIG1fcGFnZS0+dmlld1N0YXRlRGlkQ2hhbmdlKFZpZXdTdGF0ZTo6SXNG
b2N1c2VkIHwgVmlld1N0YXRlOjpXaW5kb3dJc0FjdGl2ZSk7CisgICAgbV9wYWdlLT52aWV3U3Rh
dGVEaWRDaGFuZ2UoKTsKIH0KIAogdm9pZCBXZWJWaWV3OjpzZXRWaXNpYmxlKGJvb2wgdmlzaWJs
ZSkKQEAgLTEyMCwxMiArMTIwLDI3IEBAIHZvaWQgV2ViVmlldzo6c2V0VmlzaWJsZShib29sIHZp
c2libGUpCiAgICAgICAgIHJldHVybjsKIAogICAgIG1fdmlzaWJsZSA9IHZpc2libGU7Ci0gICAg
bV9wYWdlLT52aWV3U3RhdGVEaWRDaGFuZ2UoVmlld1N0YXRlOjpJc1Zpc2libGUpOworICAgIG1f
cGFnZS0+dmlld1N0YXRlRGlkQ2hhbmdlKCk7CiAKICAgICBpZiAoQ29vcmRpbmF0ZWREcmF3aW5n
QXJlYVByb3h5KiBkcmF3aW5nQXJlYSA9IHN0YXRpY19jYXN0PENvb3JkaW5hdGVkRHJhd2luZ0Fy
ZWFQcm94eSo+KHBhZ2UoKS0+ZHJhd2luZ0FyZWEoKSkpCiAgICAgICAgIGRyYXdpbmdBcmVhLT52
aXNpYmlsaXR5RGlkQ2hhbmdlKCk7CiB9CiAKK1ZpZXdTdGF0ZTo6RmxhZ3MgV2ViVmlldzo6dmll
d1N0YXRlKCkKK3sKKyAgICBWaWV3U3RhdGU6OkZsYWdzIHZpZXdTdGF0ZSA9IFZpZXdTdGF0ZTo6
SXNJbldpbmRvdyB8IFZpZXdTdGF0ZTo6V2luZG93SXNBY3RpdmU7CisgICAgCisgICAgaWYgKGlz
Rm9jdXNlZCgpKQorICAgICAgICB2aWV3U3RhdGUgfD0gVmlld1N0YXRlOjpJc0ZvY3VzZWQ7Cisg
ICAgCisgICAgaWYgKGlzVmlzaWJsZSgpKQorICAgICAgICB2aWV3U3RhdGUgfD0gKFZpZXdTdGF0
ZTo6SXNWaXNpYmxlIHwgVmlld1N0YXRlOjpJc1Zpc2libGVPck9jY2x1ZGVkKTsKKyAgICBlbHNl
CisgICAgICAgIHZpZXdTdGF0ZSB8PSBWaWV3U3RhdGU6OklzVmlzdWFsbHlJZGxlOworICAgIAor
ICAgIHJldHVybiB2aWV3U3RhdGU7Cit9CisgICAgCiB2b2lkIFdlYlZpZXc6OnNldFVzZXJWaWV3
cG9ydFRyYW5zbGF0aW9uKGRvdWJsZSB0eCwgZG91YmxlIHR5KQogewogICAgIG1fdXNlclZpZXdw
b3J0VHJhbnNmb3JtID0gVHJhbnNmb3JtYXRpb25NYXRyaXgoKS50cmFuc2xhdGUodHgsIHR5KTsK
QEAgLTMyMywyOCArMzM4LDYgQEAgYm9vbCBXZWJWaWV3Ojppc0FjdGl2ZSgpIGNvbnN0CiAgICAg
cmV0dXJuIHNjZW5lLT5pc0FjdGl2ZSgpOwogfQogCi1ib29sIFdlYlZpZXc6OmlzVmlld1dpbmRv
d0FjdGl2ZSgpCi17Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLSAgICByZXR1cm4gdHJ1ZTsKLX0K
LQotYm9vbCBXZWJWaWV3Ojppc1ZpZXdGb2N1c2VkKCkKLXsKLSAgICByZXR1cm4gaXNGb2N1c2Vk
KCk7Ci19Ci0KLWJvb2wgV2ViVmlldzo6aXNWaWV3VmlzaWJsZSgpCi17Ci0gICAgcmV0dXJuIGlz
VmlzaWJsZSgpOwotfQotCi1ib29sIFdlYlZpZXc6OmlzVmlld0luV2luZG93KCkKLXsKLSAgICBu
b3RJbXBsZW1lbnRlZCgpOwotICAgIHJldHVybiB0cnVlOwotfQotCiB2b2lkIFdlYlZpZXc6OnBy
b2Nlc3NEaWRFeGl0KCkKIHsKICAgICBtX2NsaWVudC53ZWJQcm9jZXNzQ3Jhc2hlZCh0aGlzLCBt
X3BhZ2UtPnVybEF0UHJvY2Vzc0V4aXQoKSk7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9XZWJWaWV3LmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvV2ViVmlldy5oCShyZXZpc2lvbiAx
NjkzNjIpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9X
ZWJWaWV3LmgJKHdvcmtpbmcgY29weSkKQEAgLTEzNSwxMCArMTM1LDcgQEAgcHJvdGVjdGVkOgog
CiAgICAgdmlydHVhbCBXZWJDb3JlOjpJbnRTaXplIHZpZXdTaXplKCkgb3ZlcnJpZGU7CiAKLSAg
ICB2aXJ0dWFsIGJvb2wgaXNWaWV3V2luZG93QWN0aXZlKCkgb3ZlcnJpZGU7Ci0gICAgdmlydHVh
bCBib29sIGlzVmlld0ZvY3VzZWQoKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIGJvb2wgaXNWaWV3
VmlzaWJsZSgpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgYm9vbCBpc1ZpZXdJbldpbmRvdygpIG92
ZXJyaWRlOworICAgIHZpcnR1YWwgV2ViQ29yZTo6Vmlld1N0YXRlOjpGbGFncyB2aWV3U3RhdGUo
KSBvdmVycmlkZTsKIAogICAgIHZpcnR1YWwgdm9pZCBwcm9jZXNzRGlkRXhpdCgpIG92ZXJyaWRl
OwogICAgIHZpcnR1YWwgdm9pZCBkaWRSZWxhdW5jaFByb2Nlc3MoKSBvdmVycmlkZTsKSW5kZXg6
IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJT1MuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLmgJ
KHJldmlzaW9uIDE2OTM2MikKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvUGFnZUNs
aWVudEltcGxJT1MuaAkod29ya2luZyBjb3B5KQpAQCAtNTUsMTIgKzU1LDggQEAgcHJpdmF0ZToK
ICAgICB2aXJ0dWFsIHZvaWQgc2Nyb2xsVmlldyhjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBzY3Jv
bGxSZWN0LCBjb25zdCBXZWJDb3JlOjpJbnRTaXplJiBzY3JvbGxPZmZzZXQpIG92ZXJyaWRlOwog
ICAgIHZpcnR1YWwgdm9pZCByZXF1ZXN0U2Nyb2xsKGNvbnN0IFdlYkNvcmU6OkZsb2F0UG9pbnQm
IHNjcm9sbFBvc2l0aW9uLCBib29sIGlzUHJvZ3JhbW1hdGljU2Nyb2xsKSBvdmVycmlkZTsKICAg
ICB2aXJ0dWFsIFdlYkNvcmU6OkludFNpemUgdmlld1NpemUoKSBvdmVycmlkZTsKLSAgICB2aXJ0
dWFsIGJvb2wgaXNWaWV3V2luZG93QWN0aXZlKCkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBib29s
IGlzVmlld0ZvY3VzZWQoKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIGJvb2wgaXNWaWV3VmlzaWJs
ZSgpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgYm9vbCBpc1ZpZXdJbldpbmRvdygpIG92ZXJyaWRl
OwotICAgIHZpcnR1YWwgYm9vbCBpc1ZpZXdWaXNpYmxlT3JPY2NsdWRlZCgpIG92ZXJyaWRlOwot
ICAgIHZpcnR1YWwgYm9vbCBpc1Zpc3VhbGx5SWRsZSgpIG92ZXJyaWRlOworICAgIHZpcnR1YWwg
V2ViQ29yZTo6Vmlld1N0YXRlOjpGbGFncyB2aWV3U3RhdGUoKSBvdmVycmlkZTsKKyAgICAgICAg
CiAgICAgdmlydHVhbCB2b2lkIHByb2Nlc3NEaWRFeGl0KCkgb3ZlcnJpZGU7CiAgICAgdmlydHVh
bCB2b2lkIGRpZFJlbGF1bmNoUHJvY2VzcygpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCBw
YWdlQ2xvc2VkKCkgb3ZlcnJpZGU7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9z
L1BhZ2VDbGllbnRJbXBsSU9TLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJT1MubW0JKHJldmlzaW9uIDE2OTM2MikKKysrIFNvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJT1MubW0JKHdvcmtpbmcgY29w
eSkKQEAgLTExMCwzOCArMTEwLDI1IEBAIEludFNpemUgUGFnZUNsaWVudEltcGw6OnZpZXdTaXpl
KCkKICAgICByZXR1cm4gSW50U2l6ZShtX2NvbnRlbnRWaWV3LmJvdW5kcy5zaXplKTsKIH0KIAot
Ym9vbCBQYWdlQ2xpZW50SW1wbDo6aXNWaWV3V2luZG93QWN0aXZlKCkKKy8vIEZJWE1FOiBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTMzMDk4CitWaWV3U3RhdGU6OkZs
YWdzIFBhZ2VDbGllbnRJbXBsOjp2aWV3U3RhdGUoKQogewotICAgIC8vIEZJWE1FOiBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTMzMDk4Ci0gICAgcmV0dXJuIGlzVmll
d1Zpc2libGUoKTsKLX0KLQotYm9vbCBQYWdlQ2xpZW50SW1wbDo6aXNWaWV3Rm9jdXNlZCgpCi17
Ci0gICAgLy8gRklYTUU6IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
MzMwOTgKLSAgICByZXR1cm4gaXNWaWV3V2luZG93QWN0aXZlKCk7Ci19Ci0KLWJvb2wgUGFnZUNs
aWVudEltcGw6OmlzVmlld1Zpc2libGUoKQotewotICAgIHJldHVybiBbbV93ZWJWaWV3IHdpbmRv
d10gJiYgW1VJQXBwbGljYXRpb24gc2hhcmVkQXBwbGljYXRpb25dLmFwcGxpY2F0aW9uU3RhdGUg
IT0gVUlBcHBsaWNhdGlvblN0YXRlQmFja2dyb3VuZDsKLX0KLQotYm9vbCBQYWdlQ2xpZW50SW1w
bDo6aXNWaWV3SW5XaW5kb3coKQotewotICAgIHJldHVybiBbbV93ZWJWaWV3IHdpbmRvd107Ci19
Ci0KLWJvb2wgUGFnZUNsaWVudEltcGw6OmlzVmlld1Zpc2libGVPck9jY2x1ZGVkKCkKLXsKLSAg
ICByZXR1cm4gaXNWaWV3VmlzaWJsZSgpOwotfQotCi1ib29sIFBhZ2VDbGllbnRJbXBsOjppc1Zp
c3VhbGx5SWRsZSgpCi17Ci0gICAgcmV0dXJuICFpc1ZpZXdWaXNpYmxlKCk7CisgICAgVmlld1N0
YXRlOjpGbGFncyB2aWV3U3RhdGUgPSBWaWV3U3RhdGU6Ok5vRmxhZ3M7CisgICAgCisgICAgYm9v
bCBpc0luV2luZG93ID0gW21fd2ViVmlldyB3aW5kb3ddOworICAgIGJvb2wgaXNWaXNpYmxlID0g
aXNJbldpbmRvdyAmJiBbVUlBcHBsaWNhdGlvbiBzaGFyZWRBcHBsaWNhdGlvbl0uYXBwbGljYXRp
b25TdGF0ZSAhPSBVSUFwcGxpY2F0aW9uU3RhdGVCYWNrZ3JvdW5kOworICAgIAorICAgIGlmIChp
c0luV2luZG93KQorICAgICAgICB2aWV3U3RhdGUgfD0gVmlld1N0YXRlOjpJc0luV2luZG93Owor
ICAgIAorICAgIGlmIChpc1Zpc2libGUpCisgICAgICAgIHZpZXdTdGF0ZSB8PSBWaWV3U3RhdGU6
OldpbmRvd0lzQWN0aXZlIHwgVmlld1N0YXRlOjpJc0ZvY3VzZWQgfCBWaWV3U3RhdGU6OklzVmlz
aWJsZSB8IFZpZXdTdGF0ZTo6SXNWaXNpYmxlT3JPY2NsdWRlZDsKKyAgICBlbHNlCisgICAgICAg
IHZpZXdTdGF0ZSB8PSBWaWV3U3RhdGU6OklzVmlzdWFsbHlJZGxlOworICAgIAorICAgIHJldHVy
biB2aWV3U3RhdGU7CiB9Ci0KKyAgICAKIHZvaWQgUGFnZUNsaWVudEltcGw6OnByb2Nlc3NEaWRF
eGl0KCkKIHsKICAgICBbbV9jb250ZW50VmlldyBfcHJvY2Vzc0RpZEV4aXRdOwpJbmRleDogU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3Lm1tCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlldy5tbQkocmV2aXNpb24g
MTY5MzYyKQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3Lm1t
CSh3b3JraW5nIGNvcHkpCkBAIC0yNTAsNyArMjUwLDcgQEAgLSAodm9pZClkaWRNb3ZlVG9XaW5k
b3cKIHsKICAgICBpZiAoc2VsZi53aW5kb3cpCiAgICAgICAgIFtzZWxmIF91cGRhdGVGb3JTY3Jl
ZW46c2VsZi53aW5kb3cuc2NyZWVuXTsKLSAgICBfcGFnZS0+dmlld1N0YXRlRGlkQ2hhbmdlKFZp
ZXdTdGF0ZTo6QWxsRmxhZ3MpOworICAgIF9wYWdlLT52aWV3U3RhdGVEaWRDaGFuZ2UoKTsKIH0K
IAogLSAoV0tCcm93c2luZ0NvbnRleHRDb250cm9sbGVyICopYnJvd3NpbmdDb250ZXh0Q29udHJv
bGxlcgpAQCAtNDUxLDEzICs0NTEsMTMgQEAgLSAodm9pZClfYXBwbGljYXRpb25XaWxsUmVzaWdu
QWN0aXZlOihOUwogCiAtICh2b2lkKV9hcHBsaWNhdGlvbkRpZEVudGVyQmFja2dyb3VuZDooTlNO
b3RpZmljYXRpb24qKW5vdGlmaWNhdGlvbgogewotICAgIF9wYWdlLT52aWV3U3RhdGVEaWRDaGFu
Z2UoVmlld1N0YXRlOjpBbGxGbGFncyAmIH5WaWV3U3RhdGU6OklzSW5XaW5kb3cpOworICAgIF9w
YWdlLT52aWV3U3RhdGVEaWRDaGFuZ2UoKTsKIH0KIAogLSAodm9pZClfYXBwbGljYXRpb25XaWxs
RW50ZXJGb3JlZ3JvdW5kOihOU05vdGlmaWNhdGlvbiopbm90aWZpY2F0aW9uCiB7CiAgICAgX3Bh
Z2UtPmFwcGxpY2F0aW9uV2lsbEVudGVyRm9yZWdyb3VuZCgpOwotICAgIF9wYWdlLT52aWV3U3Rh
dGVEaWRDaGFuZ2UoVmlld1N0YXRlOjpBbGxGbGFncyAmIH5WaWV3U3RhdGU6OklzSW5XaW5kb3cp
OworICAgIF9wYWdlLT52aWV3U3RhdGVEaWRDaGFuZ2UoKTsKIH0KIAogLSAodm9pZClfYXBwbGlj
YXRpb25EaWRCZWNvbWVBY3RpdmU6KE5TTm90aWZpY2F0aW9uKilub3RpZmljYXRpb24KSW5kZXg6
IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvUGFnZUNsaWVudEltcGwuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1BhZ2VDbGllbnRJbXBsLmgJKHJldmlz
aW9uIDE2OTM2MikKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvUGFnZUNsaWVudElt
cGwuaAkod29ya2luZyBjb3B5KQpAQCAtNjUsMTIgKzY1LDEwIEBAIHByaXZhdGU6CiAgICAgdmly
dHVhbCB2b2lkIHJlcXVlc3RTY3JvbGwoY29uc3QgV2ViQ29yZTo6RmxvYXRQb2ludCYgc2Nyb2xs
UG9zaXRpb24sIGJvb2wgaXNQcm9ncmFtbWF0aWNTY3JvbGwpOwogCiAgICAgdmlydHVhbCBXZWJD
b3JlOjpJbnRTaXplIHZpZXdTaXplKCk7Ci0gICAgdmlydHVhbCBib29sIGlzVmlld1dpbmRvd0Fj
dGl2ZSgpOwotICAgIHZpcnR1YWwgYm9vbCBpc1ZpZXdGb2N1c2VkKCk7Ci0gICAgdmlydHVhbCBi
b29sIGlzVmlld1Zpc2libGUoKTsKLSAgICB2aXJ0dWFsIGJvb2wgaXNWaWV3VmlzaWJsZU9yT2Nj
bHVkZWQoKTsKKyAgICBib29sIGlzVmlld1Zpc2libGUoKTsKICAgICB2aXJ0dWFsIGJvb2wgaXNW
aWV3SW5XaW5kb3coKTsKLSAgICB2aXJ0dWFsIGJvb2wgaXNWaXN1YWxseUlkbGUoKTsKKyAgICB2
aXJ0dWFsIFdlYkNvcmU6OlZpZXdTdGF0ZTo6RmxhZ3Mgdmlld1N0YXRlKCkgb3ZlcnJpZGU7Cisg
ICAgICAgIAogICAgIHZpcnR1YWwgTGF5ZXJIb3N0aW5nTW9kZSB2aWV3TGF5ZXJIb3N0aW5nTW9k
ZSgpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgQ29sb3JTcGFjZURhdGEgY29sb3JTcGFjZSgpIG92
ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCBzZXRBY2NlbGVyYXRlZENvbXBvc2l0aW5nUm9vdExh
eWVyKExheWVyT3JWaWV3ICopIG92ZXJyaWRlOwpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL21hYy9QYWdlQ2xpZW50SW1wbC5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvbWFjL1BhZ2VDbGllbnRJbXBsLm1tCShyZXZpc2lvbiAxNjkzNjIpCisrKyBTb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1BhZ2VDbGllbnRJbXBsLm1tCSh3b3JraW5nIGNvcHkp
CkBAIC0xOTAsMTcgKzE5MCw2IEBAIE5TVmlldyAqUGFnZUNsaWVudEltcGw6OmFjdGl2ZVZpZXco
KSBjb24KICNlbmRpZgogfQogCi1ib29sIFBhZ2VDbGllbnRJbXBsOjppc1ZpZXdXaW5kb3dBY3Rp
dmUoKQotewotICAgIE5TV2luZG93ICphY3RpdmVWaWV3V2luZG93ID0gYWN0aXZlVmlldygpLndp
bmRvdzsKLSAgICByZXR1cm4gYWN0aXZlVmlld1dpbmRvdy5pc0tleVdpbmRvdyB8fCBbTlNBcHAg
a2V5V2luZG93XSA9PSBhY3RpdmVWaWV3V2luZG93OwotfQotCi1ib29sIFBhZ2VDbGllbnRJbXBs
Ojppc1ZpZXdGb2N1c2VkKCkKLXsKLSAgICByZXR1cm4gW21fd2tWaWV3IF9pc0ZvY3VzZWRdOwot
fQotCiB2b2lkIFBhZ2VDbGllbnRJbXBsOjptYWtlRmlyc3RSZXNwb25kZXIoKQogewogICAgICBb
W21fd2tWaWV3IHdpbmRvd10gbWFrZUZpcnN0UmVzcG9uZGVyOm1fd2tWaWV3XTsKQEAgLTIzNSwy
MSArMjI0LDM0IEBAIGJvb2wgUGFnZUNsaWVudEltcGw6OmlzVmlld1Zpc2libGUoKQogICAgIHJl
dHVybiB0cnVlOwogfQogCi1ib29sIFBhZ2VDbGllbnRJbXBsOjppc1ZpZXdWaXNpYmxlT3JPY2Ns
dWRlZCgpCi17Ci0gICAgcmV0dXJuIGFjdGl2ZVZpZXcoKS53aW5kb3cuaXNWaXNpYmxlOwotfQot
CiBib29sIFBhZ2VDbGllbnRJbXBsOjppc1ZpZXdJbldpbmRvdygpCiB7CiAgICAgcmV0dXJuIGFj
dGl2ZVZpZXcoKS53aW5kb3c7CiB9CiAKLWJvb2wgUGFnZUNsaWVudEltcGw6OmlzVmlzdWFsbHlJ
ZGxlKCkKK1ZpZXdTdGF0ZTo6RmxhZ3MgUGFnZUNsaWVudEltcGw6OnZpZXdTdGF0ZSgpCiB7Ci0g
ICAgcmV0dXJuIFdpbmRvd1NlcnZlckNvbm5lY3Rpb246OnNoYXJlZCgpLmFwcGxpY2F0aW9uV2lu
ZG93TW9kaWZpY2F0aW9uc0hhdmVTdG9wcGVkKCkgfHwgIWlzVmlld1Zpc2libGUoKTsKKyAgICBW
aWV3U3RhdGU6OkZsYWdzIHZpZXdTdGF0ZSA9IFZpZXdTdGF0ZTo6Tm9GbGFnczsKKyAgICAKKyAg
ICBOU1dpbmRvdyAqYWN0aXZlVmlld1dpbmRvdyA9IGFjdGl2ZVZpZXcoKS53aW5kb3c7CisgICAg
Ym9vbCBpc1Zpc2libGUgPSBpc1ZpZXdWaXNpYmxlKCk7CisgICAgCisgICAgaWYgKGFjdGl2ZVZp
ZXdXaW5kb3cpCisgICAgICAgIHZpZXdTdGF0ZSB8PSBWaWV3U3RhdGU6OklzSW5XaW5kb3c7Cisg
ICAgaWYgKGFjdGl2ZVZpZXdXaW5kb3cuaXNLZXlXaW5kb3cgfHwgW05TQXBwIGtleVdpbmRvd10g
PT0gYWN0aXZlVmlld1dpbmRvdykKKyAgICAgICAgdmlld1N0YXRlIHw9IFZpZXdTdGF0ZTo6V2lu
ZG93SXNBY3RpdmU7CisgICAgaWYgKFttX3drVmlldyBfaXNGb2N1c2VkXSkKKyAgICAgICAgdmll
d1N0YXRlIHw9IFZpZXdTdGF0ZTo6SXNGb2N1c2VkOworICAgIGlmIChpc1Zpc2libGUpCisgICAg
ICAgIHZpZXdTdGF0ZSB8PSBWaWV3U3RhdGU6OklzVmlzaWJsZTsKKyAgICBpZiAoYWN0aXZlVmll
d1dpbmRvdy5pc1Zpc2libGUpCisgICAgICAgIHZpZXdTdGF0ZSB8PSBWaWV3U3RhdGU6OklzVmlz
aWJsZU9yT2NjbHVkZWQ7CisgICAgaWYgKCFpc1Zpc2libGUgfHwgV2luZG93U2VydmVyQ29ubmVj
dGlvbjo6c2hhcmVkKCkuYXBwbGljYXRpb25XaW5kb3dNb2RpZmljYXRpb25zSGF2ZVN0b3BwZWQo
KSkKKyAgICAgICAgdmlld1N0YXRlIHw9IFZpZXdTdGF0ZTo6SXNWaXN1YWxseUlkbGU7CisgICAg
CisgICAgcmV0dXJuIHZpZXdTdGF0ZTsKIH0KLQorICAgIAogTGF5ZXJIb3N0aW5nTW9kZSBQYWdl
Q2xpZW50SW1wbDo6dmlld0xheWVySG9zdGluZ01vZGUoKQogewogI2lmIEhBVkUoT1VUX09GX1BS
T0NFU1NfTEFZRVJfSE9TVElORykKQEAgLTU0MCw4ICs1NDIsOSBAQCB2b2lkIFBhZ2VDbGllbnRJ
bXBsOjpkaXNtaXNzRGljdGlvbmFyeUxvCiB2b2lkIFBhZ2VDbGllbnRJbXBsOjpzaG93Q29ycmVj
dGlvblBhbmVsKEFsdGVybmF0aXZlVGV4dFR5cGUgdHlwZSwgY29uc3QgRmxvYXRSZWN0JiBib3Vu
ZGluZ0JveE9mUmVwbGFjZWRTdHJpbmcsIGNvbnN0IFN0cmluZyYgcmVwbGFjZWRTdHJpbmcsIGNv
bnN0IFN0cmluZyYgcmVwbGFjZW1lbnRTdHJpbmcsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBhbHRl
cm5hdGl2ZVJlcGxhY2VtZW50U3RyaW5ncykKIHsKICNpZiBVU0UoQVVUT0NPUlJFQ1RJT05fUEFO
RUwpCi0gICAgaWYgKCFpc1ZpZXdWaXNpYmxlKCkgfHwgIWlzVmlld0luV2luZG93KCkpCisgICAg
aWYgKCFpc1ZpZXdWaXNpYmxlKCkpCiAgICAgICAgIHJldHVybjsKKyAgICBBU1NFUlQoaXNWaWV3
SW5XaW5kb3coKSk7CiAgICAgbV9jb3JyZWN0aW9uUGFuZWwuc2hvdyhtX3drVmlldywgdHlwZSwg
Ym91bmRpbmdCb3hPZlJlcGxhY2VkU3RyaW5nLCByZXBsYWNlZFN0cmluZywgcmVwbGFjZW1lbnRT
dHJpbmcsIGFsdGVybmF0aXZlUmVwbGFjZW1lbnRTdHJpbmdzKTsKICNlbmRpZgogfQpAQCAtNjIw
LDggKzYyMyw5IEBAIHZvaWQgUGFnZUNsaWVudEltcGw6OnJlbW92ZURpY3RhdGlvbkFsdGUKIAog
dm9pZCBQYWdlQ2xpZW50SW1wbDo6c2hvd0RpY3RhdGlvbkFsdGVybmF0aXZlVUkoY29uc3QgV2Vi
Q29yZTo6RmxvYXRSZWN0JiBib3VuZGluZ0JveE9mRGljdGF0ZWRUZXh0LCB1aW50NjRfdCBkaWN0
YXRpb25Db250ZXh0KQogewotICAgIGlmICghaXNWaWV3VmlzaWJsZSgpIHx8ICFpc1ZpZXdJbldp
bmRvdygpKQorICAgIGlmICghaXNWaWV3VmlzaWJsZSgpKQogICAgICAgICByZXR1cm47CisgICAg
QVNTRVJUKGlzVmlld0luV2luZG93KCkpOwogICAgIG1fYWx0ZXJuYXRpdmVUZXh0VUlDb250cm9s
bGVyLT5zaG93QWx0ZXJuYXRpdmVzKG1fd2tWaWV3LCBib3VuZGluZ0JveE9mRGljdGF0ZWRUZXh0
LCBkaWN0YXRpb25Db250ZXh0LCBeKE5TU3RyaW5nKiBhY2NlcHRlZEFsdGVybmF0aXZlKXsKICAg
ICAgICAgW21fd2tWaWV3IGhhbmRsZUFjY2VwdGVkQWx0ZXJuYXRpdmVUZXh0OmFjY2VwdGVkQWx0
ZXJuYXRpdmVdOwogICAgIH0pOwo=
</data>
<flag name="review"
          id="256578"
          type_id="1"
          status="+"
          setter="andersca"
    />
          </attachment>
      

    </bug>

</bugzilla>