<?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>74605</bug_id>
          
          <creation_ts>2011-12-15 06:37:24 -0800</creation_ts>
          <short_desc>[GTK] Simplify loader client WebKit2 GTK+ API</short_desc>
          <delta_ts>2012-01-03 08:05:21 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit2</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>Linux</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>Gtk</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Carlos Garcia Campos">cgarcia</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>gustavo</cc>
    
    <cc>mrobinson</cc>
    
    <cc>pnormand</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>521867</commentid>
    <comment_count>0</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2011-12-15 06:37:24 -0800</bug_when>
    <thetext>The initial idea of the loader client object exposed in the API was mainly to reduce the amount of signals of WebView. During the webkitgtk hackfest we were discussing the current API and agreed on moving to simpler API adding just two signals to WebView and making the current loader client private.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>521874</commentid>
    <comment_count>1</comment_count>
      <attachid>119424</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2011-12-15 06:53:08 -0800</bug_when>
    <thetext>Created attachment 119424
Patch

The code is simpler and the API easier to use. Now we also have only one condition for load finish. The patch doesn&apos;t include previous status in load-status-changed callback as agreed during the hackfest, because Martin has some doubts about it, it&apos;s better to add it later if we finally decide it&apos;s useful than remve it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>521876</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-12-15 06:55:39 -0800</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>521914</commentid>
    <comment_count>3</comment_count>
      <attachid>119424</attachid>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2011-12-15 08:29:43 -0800</bug_when>
    <thetext>Comment on attachment 119424
Patch

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

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitWebView.cpp:316
&gt; +     * @status: the #WebKitLoadStatus

I prefer @event: the #WebKitLoadEvent here. See below.

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitWebView.h:71
&gt; +} WebKitLoadStatus;

So I think this should be renamed to  WebKitLoadEvent since WEBKIT_LOAD_REDIRECTED is not really a status, but something that happened to us.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>522045</commentid>
    <comment_count>4</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2011-12-15 10:47:26 -0800</bug_when>
    <thetext>(In reply to comment #3)
&gt; &gt; Source/WebKit2/UIProcess/API/gtk/WebKitWebView.h:71
&gt; &gt; +} WebKitLoadStatus;
&gt; 
&gt; So I think this should be renamed to  WebKitLoadEvent since WEBKIT_LOAD_REDIRECTED is not really a status, but something that happened to us.

hmm, good point!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>522083</commentid>
    <comment_count>5</comment_count>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2011-12-15 11:10:11 -0800</bug_when>
    <thetext>(In reply to comment #4)
&gt; (In reply to comment #3)
&gt; &gt; &gt; Source/WebKit2/UIProcess/API/gtk/WebKitWebView.h:71
&gt; &gt; &gt; +} WebKitLoadStatus;
&gt; &gt; 
&gt; &gt; So I think this should be renamed to  WebKitLoadEvent since WEBKIT_LOAD_REDIRECTED is not really a status, but something that happened to us.
&gt; 
&gt; hmm, good point!

I guess we can go two ways here: try to make the enum represent a status or an events For instance if we used events, they enum values would be something like:

WEBKIT_LOAD_STARTED_PROVISIONAL
WEBKIT_LOAD_REDIRECTED
WEBKIT_LOAD_COMMITTED
WEBKIT_LOAD_FINISHED

and the argument names would be something like previous_load_event instead of previous_load_status.

If we think of them as states we would have:

WEBKIT_LOAD_PROVISIONAL
WEBKIT_LOAD_REDIRECTING
WEBKIT_LOAD_COMMITTED
WEBKIT_LOAD_FINISHED

Personally, I prefer the &apos;event&apos; structure because that&apos;s the interface that the C API gives us and I think it more closely matches what&apos;s happening within WebCore.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>522736</commentid>
    <comment_count>6</comment_count>
    <who name="Gustavo Noronha (kov)">gustavo</who>
    <bug_when>2011-12-16 06:22:15 -0800</bug_when>
    <thetext>That&apos;s a great approach, Martin, I agree with you!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>527169</commentid>
    <comment_count>7</comment_count>
      <attachid>120538</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2011-12-26 02:12:18 -0800</bug_when>
    <thetext>Created attachment 120538
Updated patch

Renamed WebKitLoadStatus to WebKitLoadEvent. I also renamed load-status-changed signal as load-changed to avoid the word &apos;status&apos; and for consistency with load-failed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>527170</commentid>
    <comment_count>8</comment_count>
      <attachid>120539</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2011-12-26 02:15:05 -0800</bug_when>
    <thetext>Created attachment 120539
I forgot to include Tools/ChangeLog in previous patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>528754</commentid>
    <comment_count>9</comment_count>
      <attachid>120539</attachid>
    <who name="Gustavo Noronha (kov)">gustavo</who>
    <bug_when>2012-01-03 06:55:23 -0800</bug_when>
    <thetext>Comment on attachment 120539
I forgot to include Tools/ChangeLog in previous patch

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

OK, looks good to me

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitWebView.h:57
&gt; + * fail for transport issues such as not being able to

s/for/due to/ sounds better I think</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>528776</commentid>
    <comment_count>10</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2012-01-03 08:05:21 -0800</bug_when>
    <thetext>Committed r103938: &lt;http://trac.webkit.org/changeset/103938&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>119424</attachid>
            <date>2011-12-15 06:53:08 -0800</date>
            <delta_ts>2011-12-26 02:12:18 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>wk2-new-loader-client.diff</filename>
            <type>text/plain</type>
            <size>63553</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwppbmRleCAwMjgzZWJmLi5kNDdlNGU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNzQg
QEAKKzIwMTEtMTItMTUgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29t
PgorCisgICAgICAgIFtHVEtdIFNpbXBsaWZ5IGxvYWRlciBjbGllbnQgV2ViS2l0MiBHVEsrIEFQ
SQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzQ2MDUK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZW1vdmUg
V2ViS2l0V2ViTG9hZGVyQ2xpZW50IGZyb20gcHVibGljIEFQSSBrZWVwaW5nIGl0IGFzIGEKKyAg
ICAgICAgcHJpdmF0ZSBvYmplY3QuIExvYWRpbmcgQVBJIGhhcyBiZWVuIHJlZHVjZWQgdG8gdHdv
IHNpZ25hbHMgaW4KKyAgICAgICAgV2ViS2l0V2ViVmlldy4KKworICAgICAgICAqIFVJUHJvY2Vz
cy9BUEkvZ3RrL1dlYktpdERlZmluZXMuaDogUmVtb3ZlIGZvcndhcmQgZGVsY2FyYXRpb25zCisg
ICAgICAgIHRoYXQgYXJlIG5vIGxvbmdlciBuZWVkZWQuCisgICAgICAgICogVUlQcm9jZXNzL0FQ
SS9ndGsvV2ViS2l0V2ViTG9hZGVyQ2xpZW50LmNwcDoKKyAgICAgICAgKGRpZFN0YXJ0UHJvdmlz
aW9uYWxMb2FkRm9yRnJhbWUpOiBFbWl0CisgICAgICAgIFdlYktpdFdlYlZpZXc6OmxvYWQtc3Rh
dHVzLWNoYW5nZWQgc2lnbmFsIHdpdGggUHJpdmlzaW9uYWwKKyAgICAgICAgc3RhdHVzLgorICAg
ICAgICAoZGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0Rm9yUHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUp
OiBFbWl0CisgICAgICAgIFdlYktpdFdlYlZpZXc6OmxvYWQtc3RhdHVzLWNoYW5nZWQgc2lnbmFs
IHdpdGggUmVkaXJlY3RlZCBzdGF0dXMuCisgICAgICAgIChkaWRGYWlsUHJvdmlzaW9uYWxMb2Fk
V2l0aEVycm9yRm9yRnJhbWUpOiBFbWl0CisgICAgICAgIFdlYktpdFdlYlZpZXc6OmxvYWQtZmFp
bGVkIHNpZ25hbCB3aXRoIFByb3Zpc2lvbmFsIHN0YXR1cy4KKyAgICAgICAgKGRpZENvbW1pdExv
YWRGb3JGcmFtZSk6IEVtaXQgV2ViS2l0V2ViVmlldzo6bG9hZC1zdGF0dXMtY2hhbmdlZAorICAg
ICAgICBzaWduYWwgd2l0aCBDb21taXR0ZWQgc3RhdHVzLgorICAgICAgICAoZGlkRmluaXNoTG9h
ZEZvckZyYW1lKTogRW1pdCBXZWJLaXRXZWJWaWV3Ojpsb2FkLXN0YXR1cy1jaGFuZ2VkCisgICAg
ICAgIHNpZ25hbCB3aXRoIEZpbmlzaGVkIHN0YXR1cy4KKyAgICAgICAgKGRpZEZhaWxMb2FkV2l0
aEVycm9yRm9yRnJhbWUpOiBFbWl0CisgICAgICAgICBXZWJLaXRXZWJWaWV3Ojpsb2FkLWZhaWxl
ZCBzaWduYWwgd2l0aCBDb21taXR0ZWQgc3RhdHVzLgorICAgICAgICAod2Via2l0X3dlYl9sb2Fk
ZXJfY2xpZW50X2luaXQpOgorICAgICAgICAod2Via2l0X3dlYl9sb2FkZXJfY2xpZW50X2NsYXNz
X2luaXQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYkxvYWRlckNsaWVu
dC5oOiBSZW1vdmUgcHVibGljIEFQSSBhbmQKKyAgICAgICAgbW92ZSBwcml2YXRlIEFQSSBoZXJl
LgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYkxvYWRlckNsaWVudFByaXZh
dGUuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3
LmNwcDoKKyAgICAgICAgKHdlYmtpdFdlYlZpZXdMb2FkRmFpbCk6IERlZmF1bHQgaW1wbGVtZW50
YXRpb24gb2YKKyAgICAgICAgV2ViS2l0V2ViVmlldzo6bG9hZC1mYWlsZWQgc2lnbmFsIHRvIHNo
b3cgYSBjdXN0b20gZXJyb3IgcGFnZS4KKyAgICAgICAgKHdlYmtpdF93ZWJfdmlld19jbGFzc19p
bml0KTogQWRkIGxvYWQtc3RhdHVzLWNoYW5nZWQgYW5kCisgICAgICAgIGxvYWQtZmFpbGVkIHNp
Z25hbHMuCisgICAgICAgICh3ZWJraXRXZWJWaWV3TG9hZFN0YXR1c0NoYW5nZWQpOiBFbWl0Cisg
ICAgICAgIFdlYktpdFdlYlZpZXc6OmxvYWQtc3RhdHVzLWNoYW5nZWQgd2l0aCB0aGUgZ2l2ZW4g
c3RhdHVzLgorICAgICAgICAod2Via2l0V2ViVmlld0xvYWRGYWlsZWQpOiBFbWl0IFdlYktpdFdl
YlZpZXc6OmxvYWQtZmFpbGVkIHNpZ25hbAorICAgICAgICB3aXRoIHRoZSBnaXZlbiBzdGF0dXMs
IGZhaWxpbmcgdXJpIGFuZCBlcnJvci4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9XZWJL
aXRXZWJWaWV3Lmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlld1By
aXZhdGUuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9kb2NzL3dlYmtpdDJndGstZG9j
cy5zZ21sOiBSZW1vdmUgbG9hZGVyCisgICAgICAgIGNsaWVudCBzZWN0aW9uLgorICAgICAgICAq
IFVJUHJvY2Vzcy9BUEkvZ3RrL2RvY3Mvd2Via2l0Mmd0ay1zZWN0aW9ucy50eHQ6IFJlbW92ZSBs
b2FkZXIKKyAgICAgICAgY2xpZW50IHN5bWJvbHMuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9n
dGsvZG9jcy93ZWJraXQyZ3RrLnR5cGVzOiBSZW1vdmUKKyAgICAgICAgd2Via2l0X3dlYl9sb2Fk
ZXJfY2xpZW50X2dldF90eXBlLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL3Rlc3RzL0xv
YWRUcmFja2luZ1Rlc3QuY3BwOgorICAgICAgICAobG9hZFN0YXR1c0NoYW5nZWRDYWxsYmFjayk6
CisgICAgICAgIChsb2FkRmFpbGVkQ2FsbGJhY2spOgorICAgICAgICAoTG9hZFRyYWNraW5nVGVz
dDo6TG9hZFRyYWNraW5nVGVzdCk6CisgICAgICAgIChMb2FkVHJhY2tpbmdUZXN0Ojp+TG9hZFRy
YWNraW5nVGVzdCk6CisgICAgICAgIChMb2FkVHJhY2tpbmdUZXN0Ojpwcm92aXNpb25hbExvYWRT
dGFydGVkKToKKyAgICAgICAgKExvYWRUcmFja2luZ1Rlc3Q6OnByb3Zpc2lvbmFsTG9hZFJlY2Vp
dmVkU2VydmVyUmVkaXJlY3QpOgorICAgICAgICAoTG9hZFRyYWNraW5nVGVzdDo6cHJvdmlzaW9u
YWxMb2FkRmFpbGVkKToKKyAgICAgICAgKExvYWRUcmFja2luZ1Rlc3Q6OmxvYWRDb21taXR0ZWQp
OgorICAgICAgICAoTG9hZFRyYWNraW5nVGVzdDo6bG9hZEZpbmlzaGVkKToKKyAgICAgICAgKExv
YWRUcmFja2luZ1Rlc3Q6OmxvYWRGYWlsZWQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3Rr
L3Rlc3RzL0xvYWRUcmFja2luZ1Rlc3QuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay90
ZXN0cy9UZXN0V2ViS2l0V2ViTG9hZGVyQ2xpZW50LmNwcDoKKyAgICAgICAgKHRlc3RMb2FkaW5n
RXJyb3IpOgorICAgICAgICAoTG9hZFN0b3BUcmFja2luZ1Rlc3Q6OmxvYWRDb21taXR0ZWQpOgor
ICAgICAgICAoTG9hZFN0b3BUcmFja2luZ1Rlc3Q6OmxvYWRGYWlsZWQpOgorICAgICAgICAodGVz
dExvYWRDYW5jZWxsZWQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL3Rlc3RzL1Rlc3RX
ZWJLaXRXZWJWaWV3LmNwcDoKKyAgICAgICAgKGJlZm9yZUFsbCk6CisgICAgICAgICogVUlQcm9j
ZXNzL0FQSS9ndGsvd2Via2l0Mi5oOiBSZW1vdmUgbG9hZGVyIGNsaWVudCBoZWFkZXIuCisgICAg
ICAgICogVUlQcm9jZXNzL0FQSS9ndGsvd2Via2l0Mm1hcnNoYWwubGlzdDoKKwogMjAxMS0xMi0x
NSAgQWxleGFuZGVyIEbDpnLDuHkgIDxhaGZAMHg5MC5kaz4KIAogICAgICAgICBbUXRdIHIxMDI4
NDkgYnJva2UgdGhlIFF0IGJ1aWxkIG9uIE1hYyBPUyBYLgpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hh
bmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IGI3MzY3ZTEuLjc2MDYzNmUgMTAwNjQ0Ci0t
LSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBA
QAorMjAxMS0xMi0xNSAgQ2FybG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+
CisKKyAgICAgICAgW0dUS10gU2ltcGxpZnkgbG9hZGVyIGNsaWVudCBXZWJLaXQyIEdUSysgQVBJ
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03NDYwNQor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogZ3RrL2dl
bmVyYXRlLWd0a2RvYzoKKyAgICAgICAgKGdldF93ZWJraXQyX29wdGlvbnMpOiBJZ25vcmUgV2Vi
S2l0V2ViTG9hZGVyQ2xpZW50IHNpbmNlIGl0J3Mgbm93CisgICAgICAgIHByaXZhdGUgQVBJLgor
CiAyMDExLTEyLTE1ICBBbGV4YW5kZXIgRsOmcsO4eSAgPGFoZkAweDkwLmRrPgogCiAgICAgICAg
IFtRdF0gUXRXZWJLaXQgZmFpbHMgdG8gYnVpbGQgb24gTWFjIE9TIFggYWZ0ZXIgcjEwMjc3Ngpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0RGVmaW5l
cy5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0RGVmaW5lcy5oCmlu
ZGV4IGRjMzNkYmMuLjc5YjMzODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvZ3RrL1dlYktpdERlZmluZXMuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL2d0ay9XZWJLaXREZWZpbmVzLmgKQEAgLTMwLDEyICszMCw2IEBACiAjaWZuZGVmIFdlYktp
dERlZmluZXNfaAogI2RlZmluZSBXZWJLaXREZWZpbmVzX2gKIAotdHlwZWRlZiBzdHJ1Y3QgX1dl
YktpdFdlYlZpZXcgV2ViS2l0V2ViVmlldzsKLXR5cGVkZWYgc3RydWN0IF9XZWJLaXRXZWJWaWV3
Q2xhc3MgV2ViS2l0V2ViVmlld0NsYXNzOwotCi10eXBlZGVmIHN0cnVjdCBfV2ViS2l0V2ViTG9h
ZGVyQ2xpZW50ICAgICAgICBXZWJLaXRXZWJMb2FkZXJDbGllbnQ7Ci10eXBlZGVmIHN0cnVjdCBf
V2ViS2l0V2ViTG9hZGVyQ2xpZW50Q2xhc3MgICBXZWJLaXRXZWJMb2FkZXJDbGllbnRDbGFzczsK
LQogI2luY2x1ZGUgPGdsaWIuaD4KIAogI2lmZGVmIEdfT1NfV0lOMzIKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYkxvYWRlckNsaWVudC5jcHAg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJMb2FkZXJDbGllbnQu
Y3BwCmluZGV4IDZjZWM0NmYuLjc1N2U5OTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYkxvYWRlckNsaWVudC5jcHAKKysrIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViTG9hZGVyQ2xpZW50LmNwcApAQCAtMjIs
MzMgKzIyLDEzIEBACiAjaW5jbHVkZSAiV2ViS2l0V2ViTG9hZGVyQ2xpZW50LmgiCiAKICNpbmNs
dWRlICJXZWJLaXRCYWNrRm9yd2FyZExpc3RQcml2YXRlLmgiCi0jaW5jbHVkZSAiV2ViS2l0RXJy
b3IuaCIKLSNpbmNsdWRlICJXZWJLaXRNYXJzaGFsLmgiCi0jaW5jbHVkZSAiV2ViS2l0UHJpdmF0
ZS5oIgotI2luY2x1ZGUgIldlYktpdFdlYkxvYWRlckNsaWVudFByaXZhdGUuaCIKLSNpbmNsdWRl
ICJXZWJLaXRXZWJWaWV3LmgiCiAjaW5jbHVkZSAiV2ViS2l0V2ViVmlld1ByaXZhdGUuaCIKLSNp
bmNsdWRlICJXZWJLaXRXZWJWaWV3QmFzZVByaXZhdGUuaCIKICNpbmNsdWRlIDx3dGYvZ29iamVj
dC9HT3duUHRyLmg+Ci0jaW5jbHVkZSA8d3RmL2dvYmplY3QvR1JlZlB0ci5oPgogI2luY2x1ZGUg
PHd0Zi90ZXh0L0NTdHJpbmcuaD4KIAordXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKIHVzaW5nIG5h
bWVzcGFjZSBXZWJDb3JlOwogCi1lbnVtIHsKLSAgICBQUk9WSVNJT05BTF9MT0FEX1NUQVJURUQs
Ci0gICAgUFJPVklTSU9OQUxfTE9BRF9SRUNFSVZFRF9TRVJWRVJfUkVESVJFQ1QsCi0gICAgUFJP
VklTSU9OQUxfTE9BRF9GQUlMRUQsCi0KLSAgICBMT0FEX0NPTU1JVFRFRCwKLSAgICBMT0FEX0ZJ
TklTSEVELAotICAgIExPQURfRkFJTEVELAotCi0gICAgTEFTVF9TSUdOQUwKLX07Ci0KLXN0YXRp
YyBndWludCBzaWduYWxzW0xBU1RfU0lHTkFMXSA9IHsgMCwgfTsKLQogR19ERUZJTkVfVFlQRShX
ZWJLaXRXZWJMb2FkZXJDbGllbnQsIHdlYmtpdF93ZWJfbG9hZGVyX2NsaWVudCwgR19UWVBFX09C
SkVDVCkKIAogc3RhdGljIHZvaWQgZGlkU3RhcnRQcm92aXNpb25hbExvYWRGb3JGcmFtZShXS1Bh
Z2VSZWYgcGFnZSwgV0tGcmFtZVJlZiBmcmFtZSwgV0tUeXBlUmVmIHVzZXJEYXRhLCBjb25zdCB2
b2lkKiBjbGllbnRJbmZvKQpAQCAtNTYsMTAgKzM2LDcgQEAgc3RhdGljIHZvaWQgZGlkU3RhcnRQ
cm92aXNpb25hbExvYWRGb3JGcmFtZShXS1BhZ2VSZWYgcGFnZSwgV0tGcmFtZVJlZiBmcmFtZSwg
V0sKICAgICBpZiAoIVdLRnJhbWVJc01haW5GcmFtZShmcmFtZSkpCiAgICAgICAgIHJldHVybjsK
IAotICAgIGdib29sZWFuIHJldHVyblZhbHVlOwotICAgIFdlYktpdFdlYlZpZXcqIHdlYlZpZXcg
PSBXRUJLSVRfV0VCX1ZJRVcodG9JbXBsKHBhZ2UpLT52aWV3V2lkZ2V0KCkpOwotICAgIHdlYmtp
dFdlYlZpZXdVcGRhdGVVUkkod2ViVmlldyk7Ci0gICAgZ19zaWduYWxfZW1pdChXRUJLSVRfV0VC
X0xPQURFUl9DTElFTlQoY2xpZW50SW5mbyksIHNpZ25hbHNbUFJPVklTSU9OQUxfTE9BRF9TVEFS
VEVEXSwgMCwgd2ViVmlldywgJnJldHVyblZhbHVlKTsKKyAgICB3ZWJraXRXZWJWaWV3TG9hZFN0
YXR1c0NoYW5nZWQoV0VCS0lUX1dFQl9WSUVXKHRvSW1wbChwYWdlKS0+dmlld1dpZGdldCgpKSwg
V0VCS0lUX0xPQURfUFJPVklTSU9OQUwpOwogfQogCiBzdGF0aWMgdm9pZCBkaWRSZWNlaXZlU2Vy
dmVyUmVkaXJlY3RGb3JQcm92aXNpb25hbExvYWRGb3JGcmFtZShXS1BhZ2VSZWYgcGFnZSwgV0tG
cmFtZVJlZiBmcmFtZSwgV0tUeXBlUmVmIHVzZXJEYXRhLCBjb25zdCB2b2lkKiBjbGllbnRJbmZv
KQpAQCAtNjcsMTAgKzQ0LDcgQEAgc3RhdGljIHZvaWQgZGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0
Rm9yUHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUoV0tQYWdlUmVmIHBhZ2UsIFcKICAgICBpZiAoIVdL
RnJhbWVJc01haW5GcmFtZShmcmFtZSkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGdib29sZWFu
IHJldHVyblZhbHVlOwotICAgIFdlYktpdFdlYlZpZXcqIHdlYlZpZXcgPSBXRUJLSVRfV0VCX1ZJ
RVcodG9JbXBsKHBhZ2UpLT52aWV3V2lkZ2V0KCkpOwotICAgIHdlYmtpdFdlYlZpZXdVcGRhdGVV
Ukkod2ViVmlldyk7Ci0gICAgZ19zaWduYWxfZW1pdChXRUJLSVRfV0VCX0xPQURFUl9DTElFTlQo
Y2xpZW50SW5mbyksIHNpZ25hbHNbUFJPVklTSU9OQUxfTE9BRF9SRUNFSVZFRF9TRVJWRVJfUkVE
SVJFQ1RdLCAwLCB3ZWJWaWV3LCAmcmV0dXJuVmFsdWUpOworICAgIHdlYmtpdFdlYlZpZXdMb2Fk
U3RhdHVzQ2hhbmdlZChXRUJLSVRfV0VCX1ZJRVcodG9JbXBsKHBhZ2UpLT52aWV3V2lkZ2V0KCkp
LCBXRUJLSVRfTE9BRF9SRURJUkVDVEVEKTsKIH0KIAogc3RhdGljIHZvaWQgZGlkRmFpbFByb3Zp
c2lvbmFsTG9hZFdpdGhFcnJvckZvckZyYW1lKFdLUGFnZVJlZiBwYWdlLCBXS0ZyYW1lUmVmIGZy
YW1lLCBXS0Vycm9yUmVmIGVycm9yLCBXS1R5cGVSZWYgdXNlckRhdGEsIGNvbnN0IHZvaWQqIGNs
aWVudEluZm8pCkBAIC04MiwxMCArNTYsOCBAQCBzdGF0aWMgdm9pZCBkaWRGYWlsUHJvdmlzaW9u
YWxMb2FkV2l0aEVycm9yRm9yRnJhbWUoV0tQYWdlUmVmIHBhZ2UsIFdLRnJhbWVSZWYgZgogICAg
IEdPd25QdHI8R0Vycm9yPiB3ZWJFcnJvcihnX2Vycm9yX25ld19saXRlcmFsKGdfcXVhcmtfZnJv
bV9zdHJpbmcocmVzb3VyY2VFcnJvci5kb21haW4oKS51dGY4KCkuZGF0YSgpKSwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNvdXJjZUVycm9yLmVy
cm9yQ29kZSgpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHJlc291cmNlRXJyb3IubG9jYWxpemVkRGVzY3JpcHRpb24oKS51dGY4KCkuZGF0YSgpKSk7
Ci0gICAgZ2Jvb2xlYW4gcmV0dXJuVmFsdWU7Ci0gICAgV2ViS2l0V2ViVmlldyogd2ViVmlldyA9
IFdFQktJVF9XRUJfVklFVyh0b0ltcGwocGFnZSktPnZpZXdXaWRnZXQoKSk7Ci0gICAgZ19zaWdu
YWxfZW1pdChXRUJLSVRfV0VCX0xPQURFUl9DTElFTlQoY2xpZW50SW5mbyksIHNpZ25hbHNbUFJP
VklTSU9OQUxfTE9BRF9GQUlMRURdLCAwLCB3ZWJWaWV3LCByZXNvdXJjZUVycm9yLmZhaWxpbmdV
UkwoKS51dGY4KCkuZGF0YSgpLAotICAgICAgICAgICAgICAgICAgd2ViRXJyb3IuZ2V0KCksICZy
ZXR1cm5WYWx1ZSk7CisgICAgd2Via2l0V2ViVmlld0xvYWRGYWlsZWQoV0VCS0lUX1dFQl9WSUVX
KHRvSW1wbChwYWdlKS0+dmlld1dpZGdldCgpKSwgV0VCS0lUX0xPQURfUFJPVklTSU9OQUwsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzb3VyY2VFcnJvci5mYWlsaW5nVVJMKCkudXRm
OCgpLmRhdGEoKSwgd2ViRXJyb3IuZ2V0KCkpOwogfQogCiBzdGF0aWMgdm9pZCBkaWRDb21taXRM
b2FkRm9yRnJhbWUoV0tQYWdlUmVmIHBhZ2UsIFdLRnJhbWVSZWYgZnJhbWUsIFdLVHlwZVJlZiB1
c2VyRGF0YSwgY29uc3Qgdm9pZCogY2xpZW50SW5mbykKQEAgLTkzLDEwICs2NSw3IEBAIHN0YXRp
YyB2b2lkIGRpZENvbW1pdExvYWRGb3JGcmFtZShXS1BhZ2VSZWYgcGFnZSwgV0tGcmFtZVJlZiBm
cmFtZSwgV0tUeXBlUmVmIHVzCiAgICAgaWYgKCFXS0ZyYW1lSXNNYWluRnJhbWUoZnJhbWUpKQog
ICAgICAgICByZXR1cm47CiAKLSAgICBnYm9vbGVhbiByZXR1cm5WYWx1ZTsKLSAgICBXZWJLaXRX
ZWJWaWV3KiB3ZWJWaWV3ID0gV0VCS0lUX1dFQl9WSUVXKHRvSW1wbChwYWdlKS0+dmlld1dpZGdl
dCgpKTsKLSAgICB3ZWJraXRXZWJWaWV3VXBkYXRlVVJJKHdlYlZpZXcpOwotICAgIGdfc2lnbmFs
X2VtaXQoV0VCS0lUX1dFQl9MT0FERVJfQ0xJRU5UKGNsaWVudEluZm8pLCBzaWduYWxzW0xPQURf
Q09NTUlUVEVEXSwgMCwgd2ViVmlldywgICZyZXR1cm5WYWx1ZSk7CisgICAgd2Via2l0V2ViVmll
d0xvYWRTdGF0dXNDaGFuZ2VkKFdFQktJVF9XRUJfVklFVyh0b0ltcGwocGFnZSktPnZpZXdXaWRn
ZXQoKSksIFdFQktJVF9MT0FEX0NPTU1JVFRFRCk7CiB9CiAKIHN0YXRpYyB2b2lkIGRpZEZpbmlz
aExvYWRGb3JGcmFtZShXS1BhZ2VSZWYgcGFnZSwgV0tGcmFtZVJlZiBmcmFtZSwgV0tUeXBlUmVm
IHVzZXJEYXRhLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKQpAQCAtMTA0LDkgKzczLDcgQEAgc3Rh
dGljIHZvaWQgZGlkRmluaXNoTG9hZEZvckZyYW1lKFdLUGFnZVJlZiBwYWdlLCBXS0ZyYW1lUmVm
IGZyYW1lLCBXS1R5cGVSZWYgdXMKICAgICBpZiAoIVdLRnJhbWVJc01haW5GcmFtZShmcmFtZSkp
CiAgICAgICAgIHJldHVybjsKIAotICAgIGdib29sZWFuIHJldHVyblZhbHVlOwotICAgIFdlYktp
dFdlYlZpZXcqIHdlYlZpZXcgPSBXRUJLSVRfV0VCX1ZJRVcodG9JbXBsKHBhZ2UpLT52aWV3V2lk
Z2V0KCkpOwotICAgIGdfc2lnbmFsX2VtaXQoV0VCS0lUX1dFQl9MT0FERVJfQ0xJRU5UKGNsaWVu
dEluZm8pLCBzaWduYWxzW0xPQURfRklOSVNIRURdLCAwLCB3ZWJWaWV3LCAmcmV0dXJuVmFsdWUp
OworICAgIHdlYmtpdFdlYlZpZXdMb2FkU3RhdHVzQ2hhbmdlZChXRUJLSVRfV0VCX1ZJRVcodG9J
bXBsKHBhZ2UpLT52aWV3V2lkZ2V0KCkpLCBXRUJLSVRfTE9BRF9GSU5JU0hFRCk7CiB9CiAKIHN0
YXRpYyB2b2lkIGRpZEZhaWxMb2FkV2l0aEVycm9yRm9yRnJhbWUoV0tQYWdlUmVmIHBhZ2UsIFdL
RnJhbWVSZWYgZnJhbWUsIFdLRXJyb3JSZWYgZXJyb3IsIFdLVHlwZVJlZiwgY29uc3Qgdm9pZCog
Y2xpZW50SW5mbykKQEAgLTExOCwxMCArODUsOCBAQCBzdGF0aWMgdm9pZCBkaWRGYWlsTG9hZFdp
dGhFcnJvckZvckZyYW1lKFdLUGFnZVJlZiBwYWdlLCBXS0ZyYW1lUmVmIGZyYW1lLCBXS0Vycgog
ICAgIEdPd25QdHI8R0Vycm9yPiB3ZWJFcnJvcihnX2Vycm9yX25ld19saXRlcmFsKGdfcXVhcmtf
ZnJvbV9zdHJpbmcocmVzb3VyY2VFcnJvci5kb21haW4oKS51dGY4KCkuZGF0YSgpKSwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNvdXJjZUVycm9y
LmVycm9yQ29kZSgpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHJlc291cmNlRXJyb3IubG9jYWxpemVkRGVzY3JpcHRpb24oKS51dGY4KCkuZGF0YSgp
KSk7Ci0gICAgZ2Jvb2xlYW4gcmV0dXJuVmFsdWU7Ci0gICAgV2ViS2l0V2ViVmlldyogd2ViVmll
dyA9IFdFQktJVF9XRUJfVklFVyh0b0ltcGwocGFnZSktPnZpZXdXaWRnZXQoKSk7Ci0gICAgZ19z
aWduYWxfZW1pdChXRUJLSVRfV0VCX0xPQURFUl9DTElFTlQoY2xpZW50SW5mbyksIHNpZ25hbHNb
TE9BRF9GQUlMRURdLCAwLCB3ZWJWaWV3LAotICAgICAgICAgICAgICAgICAgcmVzb3VyY2VFcnJv
ci5mYWlsaW5nVVJMKCkudXRmOCgpLmRhdGEoKSwgd2ViRXJyb3IuZ2V0KCksICZyZXR1cm5WYWx1
ZSk7CisgICAgd2Via2l0V2ViVmlld0xvYWRGYWlsZWQoV0VCS0lUX1dFQl9WSUVXKHRvSW1wbChw
YWdlKS0+dmlld1dpZGdldCgpKSwgV0VCS0lUX0xPQURfQ09NTUlUVEVELAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHJlc291cmNlRXJyb3IuZmFpbGluZ1VSTCgpLnV0ZjgoKS5kYXRhKCks
IHdlYkVycm9yLmdldCgpKTsKIH0KIAogc3RhdGljIHZvaWQgZGlkU2FtZURvY3VtZW50TmF2aWdh
dGlvbkZvckZyYW1lKFdLUGFnZVJlZiBwYWdlLCBXS0ZyYW1lUmVmIGZyYW1lLCBXS1NhbWVEb2N1
bWVudE5hdmlnYXRpb25UeXBlLCBXS1R5cGVSZWYsIGNvbnN0IHZvaWQqKQpAQCAtMTg3LDE3OSAr
MTUyLDEwIEBAIHZvaWQgd2Via2l0V2ViTG9hZGVyQ2xpZW50QXR0YWNoTG9hZGVyQ2xpZW50VG9Q
YWdlKFdlYktpdFdlYkxvYWRlckNsaWVudCogbG9hZGVyCiAgICAgV0tQYWdlU2V0UGFnZUxvYWRl
ckNsaWVudCh3a1BhZ2UsICZ3a0xvYWRlckNsaWVudCk7CiB9CiAKLXN0YXRpYyBnYm9vbGVhbiB3
ZWJraXRXZWJMb2FkZXJDbGllbnRMb2FkRmFpbGVkKFdlYktpdFdlYkxvYWRlckNsaWVudCogY2xp
ZW50LCBXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3LCBjb25zdCBnY2hhciogZmFpbGluZ1VSSSwgR0Vy
cm9yKiBlcnJvcikKLXsKLSAgICBpZiAoZ19lcnJvcl9tYXRjaGVzKGVycm9yLCBXRUJLSVRfTkVU
V09SS19FUlJPUiwgV0VCS0lUX05FVFdPUktfRVJST1JfQ0FOQ0VMTEVEKQotICAgICAgICB8fCBn
X2Vycm9yX21hdGNoZXMoZXJyb3IsIFdFQktJVF9QT0xJQ1lfRVJST1IsIFdFQktJVF9QT0xJQ1lf
RVJST1JfRlJBTUVfTE9BRF9JTlRFUlJVUFRFRF9CWV9QT0xJQ1lfQ0hBTkdFKQotICAgICAgICB8
fCBnX2Vycm9yX21hdGNoZXMoZXJyb3IsIFdFQktJVF9QTFVHSU5fRVJST1IsIFdFQktJVF9QTFVH
SU5fRVJST1JfV0lMTF9IQU5ETEVfTE9BRCkpCi0gICAgICAgIHJldHVybiBGQUxTRTsKLQotICAg
IEdPd25QdHI8Y2hhcj4gaHRtbFN0cmluZyhnX3N0cmR1cF9wcmludGYoIjxodG1sPjxib2R5PiVz
PC9ib2R5PjwvaHRtbD4iLCBlcnJvci0+bWVzc2FnZSkpOwotICAgIHdlYmtpdF93ZWJfdmlld19s
b2FkX2FsdGVybmF0ZV9odG1sKHdlYlZpZXcsIGh0bWxTdHJpbmcuZ2V0KCksIDAsIGZhaWxpbmdV
UkkpOwotCi0gICAgcmV0dXJuIFRSVUU7Ci19Ci0KLXN0YXRpYyB2b2lkIHdlYmtpdF93ZWJfbG9h
ZGVyX2NsaWVudF9pbml0KFdlYktpdFdlYkxvYWRlckNsaWVudCogY2xpZW50KQorc3RhdGljIHZv
aWQgd2Via2l0X3dlYl9sb2FkZXJfY2xpZW50X2luaXQoV2ViS2l0V2ViTG9hZGVyQ2xpZW50KikK
IHsKIH0KIAotc3RhdGljIHZvaWQgd2Via2l0X3dlYl9sb2FkZXJfY2xpZW50X2NsYXNzX2luaXQo
V2ViS2l0V2ViTG9hZGVyQ2xpZW50Q2xhc3MqIGNsaWVudENsYXNzKQorc3RhdGljIHZvaWQgd2Vi
a2l0X3dlYl9sb2FkZXJfY2xpZW50X2NsYXNzX2luaXQoV2ViS2l0V2ViTG9hZGVyQ2xpZW50Q2xh
c3MqKQogewotICAgIEdPYmplY3RDbGFzcyogb2JqZWN0Q2xhc3MgPSBHX09CSkVDVF9DTEFTUyhj
bGllbnRDbGFzcyk7Ci0gICAgY2xpZW50Q2xhc3MtPnByb3Zpc2lvbmFsX2xvYWRfZmFpbGVkID0g
d2Via2l0V2ViTG9hZGVyQ2xpZW50TG9hZEZhaWxlZDsKLSAgICBjbGllbnRDbGFzcy0+bG9hZF9m
YWlsZWQgPSB3ZWJraXRXZWJMb2FkZXJDbGllbnRMb2FkRmFpbGVkOwotCi0gICAgLyoqCi0gICAg
ICogV2ViS2l0V2ViTG9hZGVyQ2xpZW50Ojpwcm92aXNpb25hbC1sb2FkLXN0YXJ0ZWQ6Ci0gICAg
ICogQGxvYWRlcl9jbGllbnQ6IHRoZSAjV2ViS2l0V2ViTG9hZGVyQ2xpZW50Ci0gICAgICogQHdl
Yl92aWV3OiB0aGUgI1dlYktpdFdlYlZpZXcgYXNzb2NpYXRlZCB3aXRoIHRoaXMgZXZlbnQKLSAg
ICAgKgotICAgICAqIFRoaXMgc2lnbmFsIGlzIGVtaXR0ZWQgd2hlbiBuZXcgbG9hZCByZXF1ZXN0
IGlzIG1hZGUuCi0gICAgICogTm8gZGF0YSBoYXMgYmVlbiByZWNlaXZlZCB5ZXQsIGVtcHR5IHN0
cnVjdHVyZXMgaGF2ZQotICAgICAqIGJlZW4gYWxsb2NhdGVkIHRvIHBlcmZvcm0gdGhlIGxvYWQ7
IHRoZSBsb2FkIG1heSBzdGlsbAotICAgICAqIGZhaWwgZm9yIHRyYW5zcG9ydCBpc3N1ZXMgc3Vj
aCBhcyBub3QgYmVpbmcgYWJsZSB0bwotICAgICAqIHJlc29sdmUgYSBuYW1lLCBvciBjb25uZWN0
IHRvIGEgcG9ydC4KLSAgICAgKgotICAgICAqIFJldHVybnM6ICVUUlVFIHRvIHN0b3Agb3RoZXIg
aGFuZGxlcnMgZnJvbSBiZWluZyBpbnZva2VkIGZvciB0aGUgZXZlbnQuCi0gICAgICogICAlRkFM
U0UgdG8gcHJvcGFnYXRlIHRoZSBldmVudCBmdXJ0aGVyLgotICAgICAqLwotICAgIHNpZ25hbHNb
UFJPVklTSU9OQUxfTE9BRF9TVEFSVEVEXSA9Ci0gICAgICAgIGdfc2lnbmFsX25ldygicHJvdmlz
aW9uYWwtbG9hZC1zdGFydGVkIiwKLSAgICAgICAgICAgICAgICAgICAgIEdfVFlQRV9GUk9NX0NM
QVNTKG9iamVjdENsYXNzKSwKLSAgICAgICAgICAgICAgICAgICAgIEdfU0lHTkFMX1JVTl9MQVNU
LAotICAgICAgICAgICAgICAgICAgICAgR19TVFJVQ1RfT0ZGU0VUKFdlYktpdFdlYkxvYWRlckNs
aWVudENsYXNzLCBwcm92aXNpb25hbF9sb2FkX3N0YXJ0ZWQpLAotICAgICAgICAgICAgICAgICAg
ICAgZ19zaWduYWxfYWNjdW11bGF0b3JfdHJ1ZV9oYW5kbGVkLCBOVUxMLAotICAgICAgICAgICAg
ICAgICAgICAgd2Via2l0X21hcnNoYWxfQk9PTEVBTl9fT0JKRUNULAotICAgICAgICAgICAgICAg
ICAgICAgR19UWVBFX0JPT0xFQU4sIDEsCi0gICAgICAgICAgICAgICAgICAgICBXRUJLSVRfVFlQ
RV9XRUJfVklFVyk7Ci0KLSAgICAvKioKLSAgICAgKiBXZWJLaXRXZWJMb2FkZXJDbGllbnQ6OnBy
b3Zpc2lvbmFsLWxvYWQtcmVjZWl2ZWQtc2VydmVyLXJlZGlyZWN0OgotICAgICAqIEBsb2FkZXJf
Y2xpZW50OiB0aGUgI1dlYktpdFdlYkxvYWRlckNsaWVudAotICAgICAqIEB3ZWJfdmlldzogdGhl
ICNXZWJLaXRXZWJWaWV3IGFzc29jaWF0ZWQgd2l0aCB0aGlzIGV2ZW50Ci0gICAgICoKLSAgICAg
KiBUaGlzIHNpZ25hbCBpcyBlbWl0dGVkIHdoZW4gYSBwcm92aXNpb25hbCBkYXRhIHNvdXJjZQot
ICAgICAqIHJlY2VpdmVzIGEgc2VydmVyIHJlZGlyZWN0LgotICAgICAqCi0gICAgICogVGhpcyBz
aWduYWwgaXMgZW1pdHRlZCBhZnRlciAjV2ViS2l0V2ViTG9hZGVyQ2xpZW50Ojpwcm92aXNpb25h
bC1sb2FkLXN0YXJ0ZWQuCi0gICAgICoKLSAgICAgKiBSZXR1cm5zOiAlVFJVRSB0byBzdG9wIG90
aGVyIGhhbmRsZXJzIGZyb20gYmVpbmcgaW52b2tlZCBmb3IgdGhlIGV2ZW50LgotICAgICAqICAg
JUZBTFNFIHRvIHByb3BhZ2F0ZSB0aGUgZXZlbnQgZnVydGhlci4KLSAgICAgKi8KLSAgICBzaWdu
YWxzW1BST1ZJU0lPTkFMX0xPQURfUkVDRUlWRURfU0VSVkVSX1JFRElSRUNUXSA9Ci0gICAgICAg
IGdfc2lnbmFsX25ldygicHJvdmlzaW9uYWwtbG9hZC1yZWNlaXZlZC1zZXJ2ZXItcmVkaXJlY3Qi
LAotICAgICAgICAgICAgICAgICAgICAgR19UWVBFX0ZST01fQ0xBU1Mob2JqZWN0Q2xhc3MpLAot
ICAgICAgICAgICAgICAgICAgICAgR19TSUdOQUxfUlVOX0xBU1QsCi0gICAgICAgICAgICAgICAg
ICAgICBHX1NUUlVDVF9PRkZTRVQoV2ViS2l0V2ViTG9hZGVyQ2xpZW50Q2xhc3MsIHByb3Zpc2lv
bmFsX2xvYWRfcmVjZWl2ZWRfc2VydmVyX3JlZGlyZWN0KSwKLSAgICAgICAgICAgICAgICAgICAg
IGdfc2lnbmFsX2FjY3VtdWxhdG9yX3RydWVfaGFuZGxlZCwgTlVMTCwKLSAgICAgICAgICAgICAg
ICAgICAgIHdlYmtpdF9tYXJzaGFsX0JPT0xFQU5fX09CSkVDVCwKLSAgICAgICAgICAgICAgICAg
ICAgIEdfVFlQRV9CT09MRUFOLCAxLAotICAgICAgICAgICAgICAgICAgICAgV0VCS0lUX1RZUEVf
V0VCX1ZJRVcpOwotCi0gICAgLyoqCi0gICAgICogV2ViS2l0V2ViTG9hZGVyQ2xpZW50Ojpwcm92
aXNpb25hbC1sb2FkLWZhaWxlZDoKLSAgICAgKiBAbG9hZGVyX2NsaWVudDogdGhlICNXZWJLaXRX
ZWJMb2FkZXJDbGllbnQKLSAgICAgKiBAd2ViX3ZpZXc6IHRoZSAjV2ViS2l0V2ViVmlldyBhc3Nv
Y2lhdGVkIHdpdGggdGhpcyBldmVudAotICAgICAqIEBlcnJvcjogdGhlICNHRXJyb3IgdGhhdCB3
YXMgdHJpZ2dlcmVkCi0gICAgICoKLSAgICAgKiBUaGlzIHNpZ25hbCBpcyBlbWl0dGVkIHdoZW4g
YW4gZXJyb3Igb2NjdXJzIHdoZW4gc3RhcnRpbmcgdG8KLSAgICAgKiBsb2FkIGRhdGEgZm9yIGEg
cGFnZS4gQnkgZGVmYXVsdCwgaWYgdGhlIHNpZ25hbCBpcyBub3QgaGFuZGxlZCwKLSAgICAgKiBh
IHN0b2NrIGVycm9yIHBhZ2Ugd2lsbCBiZSBkaXNwbGF5ZWQuIFlvdSBuZWVkIHRvIGhhbmRsZSB0
aGUgc2lnbmFsCi0gICAgICogaWYgeW91IHdhbnQgdG8gcHJvdmlkZSB5b3VyIG93biBlcnJvciBw
YWdlLiBUaGlzIHNpZ25hbCBmaW5pc2hlcyB0aGUKLSAgICAgKiBsb2FkIHNvIG5vIG90aGVyIHNp
Z25hbHMgd2lsbCBiZSBlbWl0dGVkIGFmdGVyIHRoaXMgb25lLgotICAgICAqCi0gICAgICogVGhp
cyBzaWduYWwgaXMgZW1pdHRlZCBhZnRlciAjV2ViS2l0V2ViTG9hZGVyQ2xpZW50Ojpwcm92aXNp
b25hbC1sb2FkLXN0YXJ0ZWQuCi0gICAgICoKLSAgICAgKiBSZXR1cm5zOiAlVFJVRSB0byBzdG9w
IG90aGVyIGhhbmRsZXJzIGZyb20gYmVpbmcgaW52b2tlZCBmb3IgdGhlIGV2ZW50LgotICAgICAq
ICAgJUZBTFNFIHRvIHByb3BhZ2F0ZSB0aGUgZXZlbnQgZnVydGhlci4KLSAgICAgKi8KLSAgICBz
aWduYWxzW1BST1ZJU0lPTkFMX0xPQURfRkFJTEVEXSA9Ci0gICAgICAgIGdfc2lnbmFsX25ldygi
cHJvdmlzaW9uYWwtbG9hZC1mYWlsZWQiLAotICAgICAgICAgICAgICAgICAgICAgR19UWVBFX0ZS
T01fQ0xBU1Mob2JqZWN0Q2xhc3MpLAotICAgICAgICAgICAgICAgICAgICAgR19TSUdOQUxfUlVO
X0xBU1QsCi0gICAgICAgICAgICAgICAgICAgICBHX1NUUlVDVF9PRkZTRVQoV2ViS2l0V2ViTG9h
ZGVyQ2xpZW50Q2xhc3MsIHByb3Zpc2lvbmFsX2xvYWRfZmFpbGVkKSwKLSAgICAgICAgICAgICAg
ICAgICAgIGdfc2lnbmFsX2FjY3VtdWxhdG9yX3RydWVfaGFuZGxlZCwgTlVMTCwKLSAgICAgICAg
ICAgICAgICAgICAgIHdlYmtpdF9tYXJzaGFsX0JPT0xFQU5fX09CSkVDVF9TVFJJTkdfUE9JTlRF
UiwKLSAgICAgICAgICAgICAgICAgICAgIEdfVFlQRV9CT09MRUFOLCAzLAotICAgICAgICAgICAg
ICAgICAgICAgV0VCS0lUX1RZUEVfV0VCX1ZJRVcsCi0gICAgICAgICAgICAgICAgICAgICBHX1RZ
UEVfU1RSSU5HLAotICAgICAgICAgICAgICAgICAgICAgR19UWVBFX1BPSU5URVIpOwotCi0gICAg
LyoqCi0gICAgICogV2ViS2l0V2ViTG9hZGVyQ2xpZW50Ojpsb2FkLWNvbW1pdHRlZDoKLSAgICAg
KiBAbG9hZGVyX2NsaWVudDogdGhlICNXZWJLaXRXZWJMb2FkZXJDbGllbnQKLSAgICAgKiBAd2Vi
X3ZpZXc6IHRoZSAjV2ViS2l0V2ViVmlldyBhc3NvY2lhdGVkIHdpdGggdGhpcyBldmVudAotICAg
ICAqCi0gICAgICogVGhpcyBzaWduYWwgaXMgZW1pdHRlZCB3aGVuIGNvbnRlbnQgc3RhcnRzIGFy
cml2aW5nIGZvciBhIHBhZ2UgbG9hZC4KLSAgICAgKiBUaGUgbmVjZXNzYXJ5IHRyYW5zcG9ydCBy
ZXF1aXJlbWVudHMgYXJlIHN0YWJpbGlzaGVkLCBhbmQgdGhlCi0gICAgICogbG9hZCBpcyBiZWlu
ZyBwZXJmb3JtZWQuCi0gICAgICoKLSAgICAgKiBUaGlzIHNpZ25hbCBpcyBlbWl0dGVkIGFmdGVy
ICNXZWJLaXRXZWJMb2FkZXJDbGllbnQ6OnByb3Zpc2lvbmFsLWxvYWQtc3RhcnRlZC4KLSAgICAg
KgotICAgICAqIFJldHVybnM6ICVUUlVFIHRvIHN0b3Agb3RoZXIgaGFuZGxlcnMgZnJvbSBiZWlu
ZyBpbnZva2VkIGZvciB0aGUgZXZlbnQuCi0gICAgICogICAlRkFMU0UgdG8gcHJvcGFnYXRlIHRo
ZSBldmVudCBmdXJ0aGVyLgotICAgICAqLwotICAgIHNpZ25hbHNbTE9BRF9DT01NSVRURURdID0K
LSAgICAgICAgZ19zaWduYWxfbmV3KCJsb2FkLWNvbW1pdHRlZCIsCi0gICAgICAgICAgICAgICAg
ICAgICBHX1RZUEVfRlJPTV9DTEFTUyhvYmplY3RDbGFzcyksCi0gICAgICAgICAgICAgICAgICAg
ICBHX1NJR05BTF9SVU5fTEFTVCwKLSAgICAgICAgICAgICAgICAgICAgIEdfU1RSVUNUX09GRlNF
VChXZWJLaXRXZWJMb2FkZXJDbGllbnRDbGFzcywgbG9hZF9jb21taXR0ZWQpLAotICAgICAgICAg
ICAgICAgICAgICAgZ19zaWduYWxfYWNjdW11bGF0b3JfdHJ1ZV9oYW5kbGVkLCBOVUxMLAotICAg
ICAgICAgICAgICAgICAgICAgd2Via2l0X21hcnNoYWxfQk9PTEVBTl9fT0JKRUNULAotICAgICAg
ICAgICAgICAgICAgICAgR19UWVBFX0JPT0xFQU4sIDEsCi0gICAgICAgICAgICAgICAgICAgICBX
RUJLSVRfVFlQRV9XRUJfVklFVyk7Ci0gICAgLyoqCi0gICAgICogV2ViS2l0V2ViTG9hZGVyQ2xp
ZW50Ojpsb2FkLWZpbmlzaGVkOgotICAgICAqIEBsb2FkZXJfY2xpZW50OiB0aGUgI1dlYktpdFdl
YkxvYWRlckNsaWVudAotICAgICAqIEB3ZWJfdmlldzogdGhlICNXZWJLaXRXZWJWaWV3IGFzc29j
aWF0ZWQgd2l0aCB0aGlzIGV2ZW50Ci0gICAgICoKLSAgICAgKiBUaGlzIHNpZ25hbCBpcyBlbWl0
dGVkIHdoZW4gYSBwYWdlIGxvYWQgY29tcGxldGVzLCB0aGF0IGlzLCB3aGVuIGFsbAotICAgICAq
IHRoZSByZXNvdXJjZXMgYXJlIGRvbmUgbG9hZGluZyB3aXRoIG5vIGVycm9yLiBJbiBjYXNlIG9m
IGVycm9ycwotICAgICAqIGR1cmluZyBsb2FkaW5nLCB0aGUgbG9hZCBmaW5pc2hlcyB3aGVuIGVp
dGhlcgotICAgICAqICNXZWJLaXRXZWJMb2FkZXJDbGllbnQ6OnByb3Zpc2lvbmFsLWxvYWQtZmFp
bGVkIG9yICNXZWJLaXRXZWJMb2FkZXJDbGllbnQ6OmxvYWQtZmFpbGVkCi0gICAgICogYXJlIGVt
aXR0ZWQuCi0gICAgICoKLSAgICAgKiBUaGlzIHNpZ25hbCBpcyBlbWl0dGVkIGFmdGVyICNXZWJL
aXRXZWJMb2FkZXJDbGllbnQ6OmxvYWQtY29tbWl0dGVkLgotICAgICAqCi0gICAgICogUmV0dXJu
czogJVRSVUUgdG8gc3RvcCBvdGhlciBoYW5kbGVycyBmcm9tIGJlaW5nIGludm9rZWQgZm9yIHRo
ZSBldmVudC4KLSAgICAgKiAgICVGQUxTRSB0byBwcm9wYWdhdGUgdGhlIGV2ZW50IGZ1cnRoZXIu
Ci0gICAgICovCi0gICAgc2lnbmFsc1tMT0FEX0ZJTklTSEVEXSA9Ci0gICAgICAgIGdfc2lnbmFs
X25ldygibG9hZC1maW5pc2hlZCIsCi0gICAgICAgICAgICAgICAgICAgICBHX1RZUEVfRlJPTV9D
TEFTUyhvYmplY3RDbGFzcyksCi0gICAgICAgICAgICAgICAgICAgICBHX1NJR05BTF9SVU5fTEFT
VCwKLSAgICAgICAgICAgICAgICAgICAgIEdfU1RSVUNUX09GRlNFVChXZWJLaXRXZWJMb2FkZXJD
bGllbnRDbGFzcywgbG9hZF9maW5pc2hlZCksCi0gICAgICAgICAgICAgICAgICAgICBnX3NpZ25h
bF9hY2N1bXVsYXRvcl90cnVlX2hhbmRsZWQsIE5VTEwsCi0gICAgICAgICAgICAgICAgICAgICB3
ZWJraXRfbWFyc2hhbF9CT09MRUFOX19PQkpFQ1QsCi0gICAgICAgICAgICAgICAgICAgICBHX1RZ
UEVfQk9PTEVBTiwgMSwKLSAgICAgICAgICAgICAgICAgICAgIFdFQktJVF9UWVBFX1dFQl9WSUVX
KTsKLQotICAgIC8qKgotICAgICAqIFdlYktpdFdlYkxvYWRlckNsaWVudDo6bG9hZC1mYWlsZWQ6
Ci0gICAgICogQGxvYWRlcl9jbGllbnQ6IHRoZSAjV2ViS2l0V2ViTG9hZGVyQ2xpZW50Ci0gICAg
ICogQHdlYl92aWV3OiB0aGUgI1dlYktpdFdlYlZpZXcgYXNzb2NpYXRlZCB3aXRoIHRoaXMgZXZl
bnQKLSAgICAgKiBAZXJyb3I6IHRoZSAjR0Vycm9yIHRoYXQgd2FzIHRyaWdnZXJlZAotICAgICAq
Ci0gICAgICogVGhpcyBzaWduYWwgaXMgZW1pdHRlZCB3aGVuIGFuIGVycm9yIG9jY3VycyBsb2Fk
aW5nIGEgY29tbWl0dGVkIGRhdGEgc291cmNlLgotICAgICAqIEJ5IGRlZmF1bHQsIGlmIHRoZSBz
aWduYWwgaXMgbm90IGhhbmRsZWQsIGEgc3RvY2sgZXJyb3IgcGFnZSB3aWxsIGJlIGRpc3BsYXll
ZC4KLSAgICAgKiBZb3UgbmVlZCB0byBoYW5kbGUgdGhlIHNpZ25hbCBpZiB5b3Ugd2FudCB0byBw
cm92aWRlIHlvdXIgb3duIGVycm9yIHBhZ2UuIFRoaXMKLSAgICAgKiBzaWduYWwgZmluaXNoZXMg
dGhlIGxvYWQgc28gbm8gb3RoZXIgc2lnbmFscyB3aWxsIGJlIGVtaXR0ZWQgYWZ0ZXIgdGhpcyBv
bmUuCi0gICAgICoKLSAgICAgKiBUaGlzIHNpZ25hbCBpcyBlbWl0dGVkIGFmdGVyICNXZWJLaXRX
ZWJMb2FkZXJDbGllbnQ6OmxvYWQtY29tbWl0dGVkLgotICAgICAqCi0gICAgICogUmV0dXJuczog
JVRSVUUgdG8gc3RvcCBvdGhlciBoYW5kbGVycyBmcm9tIGJlaW5nIGludm9rZWQgZm9yIHRoZSBl
dmVudC4KLSAgICAgKiAgICVGQUxTRSB0byBwcm9wYWdhdGUgdGhlIGV2ZW50IGZ1cnRoZXIuCi0g
ICAgICovCi0gICAgc2lnbmFsc1tMT0FEX0ZBSUxFRF0gPQotICAgICAgICBnX3NpZ25hbF9uZXco
ImxvYWQtZmFpbGVkIiwKLSAgICAgICAgICAgICAgICAgICAgIEdfVFlQRV9GUk9NX0NMQVNTKG9i
amVjdENsYXNzKSwKLSAgICAgICAgICAgICAgICAgICAgIEdfU0lHTkFMX1JVTl9MQVNULAotICAg
ICAgICAgICAgICAgICAgICAgR19TVFJVQ1RfT0ZGU0VUKFdlYktpdFdlYkxvYWRlckNsaWVudENs
YXNzLCBsb2FkX2ZhaWxlZCksCi0gICAgICAgICAgICAgICAgICAgICBnX3NpZ25hbF9hY2N1bXVs
YXRvcl90cnVlX2hhbmRsZWQsIE5VTEwsCi0gICAgICAgICAgICAgICAgICAgICB3ZWJraXRfbWFy
c2hhbF9CT09MRUFOX19PQkpFQ1RfU1RSSU5HX1BPSU5URVIsCi0gICAgICAgICAgICAgICAgICAg
ICBHX1RZUEVfQk9PTEVBTiwgMywKLSAgICAgICAgICAgICAgICAgICAgIFdFQktJVF9UWVBFX1dF
Ql9WSUVXLAotICAgICAgICAgICAgICAgICAgICAgR19UWVBFX1NUUklORywKLSAgICAgICAgICAg
ICAgICAgICAgIEdfVFlQRV9QT0lOVEVSKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYkxvYWRlckNsaWVudC5oIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViTG9hZGVyQ2xpZW50LmgKaW5kZXggODVhMGVh
Yi4uYzYwNDRiYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsv
V2ViS2l0V2ViTG9hZGVyQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9ndGsvV2ViS2l0V2ViTG9hZGVyQ2xpZW50LmgKQEAgLTE3LDE1ICsxNywxMSBAQAogICogQm9z
dG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCiAgKi8KIAotI2lmICFkZWZpbmVkKF9fV0VCS0lUMl9I
X0lOU0lERV9fKSAmJiAhZGVmaW5lZChXRUJLSVQyX0NPTVBJTEFUSU9OKQotI2Vycm9yICJPbmx5
IDx3ZWJraXQyL3dlYmtpdDIuaD4gY2FuIGJlIGluY2x1ZGVkIGRpcmVjdGx5LiIKLSNlbmRpZgot
CiAjaWZuZGVmIFdlYktpdFdlYkxvYWRlckNsaWVudF9oCiAjZGVmaW5lIFdlYktpdFdlYkxvYWRl
ckNsaWVudF9oCiAKICNpbmNsdWRlIDxnbGliLW9iamVjdC5oPgotI2luY2x1ZGUgPHdlYmtpdDIv
V2ViS2l0RGVmaW5lcy5oPgorI2luY2x1ZGUgPFdlYktpdDIvV2ViS2l0Mi5oPgogCiBHX0JFR0lO
X0RFQ0xTCiAKQEAgLTM2LDM0ICszMiwxOSBAQCBHX0JFR0lOX0RFQ0xTCiAjZGVmaW5lIFdFQktJ
VF9JU19XRUJfTE9BREVSX0NMSUVOVF9DTEFTUyhrbGFzcykgKEdfVFlQRV9DSEVDS19DTEFTU19U
WVBFKChrbGFzcyksICBXRUJLSVRfVFlQRV9XRUJfTE9BREVSX0NMSUVOVCkpCiAjZGVmaW5lIFdF
QktJVF9XRUJfTE9BREVSX0NMSUVOVF9HRVRfQ0xBU1Mob2JqKSAgKEdfVFlQRV9JTlNUQU5DRV9H
RVRfQ0xBU1MoKG9iaiksICBXRUJLSVRfVFlQRV9XRUJfTE9BREVSX0NMSUVOVCwgV2ViS2l0V2Vi
TG9hZGVyQ2xpZW50Q2xhc3MpKQogCit0eXBlZGVmIHN0cnVjdCBfV2ViS2l0V2ViTG9hZGVyQ2xp
ZW50ICAgICAgV2ViS2l0V2ViTG9hZGVyQ2xpZW50OwordHlwZWRlZiBzdHJ1Y3QgX1dlYktpdFdl
YkxvYWRlckNsaWVudENsYXNzIFdlYktpdFdlYkxvYWRlckNsaWVudENsYXNzOworCiBzdHJ1Y3Qg
X1dlYktpdFdlYkxvYWRlckNsaWVudCB7CiAgICAgR09iamVjdCBwYXJlbnQ7CiB9OwogCiBzdHJ1
Y3QgX1dlYktpdFdlYkxvYWRlckNsaWVudENsYXNzIHsKLSAgICBHT2JqZWN0Q2xhc3MgcGFyZW50
X2NsYXNzOwotCi0gICAgLyogdmlydHVhbCB0YWJsZSAqLwotICAgIGdib29sZWFuICgqIHByb3Zp
c2lvbmFsX2xvYWRfc3RhcnRlZCkgICAgICAgICAgICAgICAgICAoV2ViS2l0V2ViTG9hZGVyQ2xp
ZW50ICpsb2FkZXJfY2xpZW50LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgV2ViS2l0V2ViVmlldyAgICAgICAgICp3ZWJfdmlldyk7
Ci0gICAgZ2Jvb2xlYW4gKCogcHJvdmlzaW9uYWxfbG9hZF9yZWNlaXZlZF9zZXJ2ZXJfcmVkaXJl
Y3QpIChXZWJLaXRXZWJMb2FkZXJDbGllbnQgKmxvYWRlcl9jbGllbnQsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXZWJLaXRXZWJW
aWV3ICAgICAgICAgKndlYl92aWV3KTsKLSAgICBnYm9vbGVhbiAoKiBwcm92aXNpb25hbF9sb2Fk
X2ZhaWxlZCkgICAgICAgICAgICAgICAgICAgKFdlYktpdFdlYkxvYWRlckNsaWVudCAqbG9hZGVy
X2NsaWVudCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFdlYktpdFdlYlZpZXcgICAgICAgICAqd2ViX3ZpZXcsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBn
Y2hhciAgICAgICAgICAgKmZhaWxpbmdfdXJpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0Vycm9yICAgICAgICAgICAgICAgICpl
cnJvcik7Ci0gICAgZ2Jvb2xlYW4gKCogbG9hZF9jb21taXR0ZWQpICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIChXZWJLaXRXZWJMb2FkZXJDbGllbnQgKmxvYWRlcl9jbGllbnQsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXZWJL
aXRXZWJWaWV3ICAgICAgICAgKndlYl92aWV3KTsKLSAgICBnYm9vbGVhbiAoKiBsb2FkX2Zpbmlz
aGVkKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFdlYktpdFdlYkxvYWRlckNsaWVudCAq
bG9hZGVyX2NsaWVudCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFdlYktpdFdlYlZpZXcgICAgICAgICAqd2ViX3ZpZXcpOwotICAg
IGdib29sZWFuICgqIGxvYWRfZmFpbGVkKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAo
V2ViS2l0V2ViTG9hZGVyQ2xpZW50ICpsb2FkZXJfY2xpZW50LAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV2ViS2l0V2ViVmlldyAg
ICAgICAgICp3ZWJfdmlldywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdjaGFyICAgICAgICAgICAqZmFpbGluZ191cmks
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHRXJyb3IgICAgICAgICAgICAgICAgKmVycm9yKTsKKyAgICBHT2JqZWN0Q2xhc3MgcGFy
ZW50Q2xhc3M7CiB9OwogCi1XRUJLSVRfQVBJIEdUeXBlCi13ZWJraXRfd2ViX2xvYWRlcl9jbGll
bnRfZ2V0X3R5cGUgKHZvaWQpOworR1R5cGUgd2Via2l0X3dlYl9sb2FkZXJfY2xpZW50X2dldF90
eXBlICh2b2lkKTsKK3ZvaWQgd2Via2l0V2ViTG9hZGVyQ2xpZW50QXR0YWNoTG9hZGVyQ2xpZW50
VG9QYWdlKFdlYktpdFdlYkxvYWRlckNsaWVudCosIFdLUGFnZVJlZik7CiAKIEdfRU5EX0RFQ0xT
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdl
YkxvYWRlckNsaWVudFByaXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3Rr
L1dlYktpdFdlYkxvYWRlckNsaWVudFByaXZhdGUuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMjI1YTJhNC4uMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L2d0ay9XZWJLaXRXZWJMb2FkZXJDbGllbnRQcml2YXRlLmgKKysrIC9kZXYvbnVsbApAQCAtMSwz
NCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDExIElnYWxpYSBTLkwuCi0gKgotICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
Ci0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
Ci0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0g
KiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQot
ICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICov
Ci0KLSNpZm5kZWYgV2ViS2l0V2ViTG9hZGVyQ2xpZW50UHJpdmF0ZV9oCi0jZGVmaW5lIFdlYktp
dFdlYkxvYWRlckNsaWVudFByaXZhdGVfaAotCi0jaW5jbHVkZSAiV2ViS2l0V2ViTG9hZGVyQ2xp
ZW50LmgiCi0jaW5jbHVkZSA8V2ViS2l0Mi9XZWJLaXQyLmg+Ci0KLXZvaWQgd2Via2l0V2ViTG9h
ZGVyQ2xpZW50QXR0YWNoTG9hZGVyQ2xpZW50VG9QYWdlKFdlYktpdFdlYkxvYWRlckNsaWVudCos
IFdLUGFnZVJlZik7Ci0KLSNlbmRpZiAvLyBXZWJLaXRXZWJMb2FkZXJDbGllbnRQcml2YXRlX2gK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZp
ZXcuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlldy5j
cHAKaW5kZXggN2MwYTY3Yy4uNjU2ZTAxOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlldy5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlldy5jcHAKQEAgLTIyLDEyICsyMiwxMyBAQAogI2lu
Y2x1ZGUgIldlYktpdFdlYlZpZXcuaCIKIAogI2luY2x1ZGUgIldlYktpdEJhY2tGb3J3YXJkTGlz
dFByaXZhdGUuaCIKKyNpbmNsdWRlICJXZWJLaXRFbnVtVHlwZXMuaCIKKyNpbmNsdWRlICJXZWJL
aXRFcnJvci5oIgogI2luY2x1ZGUgIldlYktpdE1hcnNoYWwuaCIKICNpbmNsdWRlICJXZWJLaXRT
ZXR0aW5nc1ByaXZhdGUuaCIKICNpbmNsdWRlICJXZWJLaXRVSUNsaWVudC5oIgogI2luY2x1ZGUg
IldlYktpdFdlYkNvbnRleHRQcml2YXRlLmgiCiAjaW5jbHVkZSAiV2ViS2l0V2ViTG9hZGVyQ2xp
ZW50LmgiCi0jaW5jbHVkZSAiV2ViS2l0V2ViTG9hZGVyQ2xpZW50UHJpdmF0ZS5oIgogI2luY2x1
ZGUgIldlYktpdFdlYlZpZXdCYXNlUHJpdmF0ZS5oIgogI2luY2x1ZGUgIldlYktpdFdlYlZpZXdQ
cml2YXRlLmgiCiAjaW5jbHVkZSAiV2ViS2l0UHJpdmF0ZS5oIgpAQCAtNDQsNiArNDUsOSBAQCB1
c2luZyBuYW1lc3BhY2UgV2ViS2l0OwogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIGVudW0g
eworICAgIExPQURfU1RBVFVTX0NIQU5HRUQsCisgICAgTE9BRF9GQUlMRUQsCisKICAgICBDUkVB
VEUsCiAgICAgUkVBRFlfVE9fU0hPVywKICAgICBDTE9TRSwKQEAgLTgxLDYgKzg1LDE5IEBAIHN0
YXRpYyBndWludCBzaWduYWxzW0xBU1RfU0lHTkFMXSA9IHsgMCwgfTsKIAogR19ERUZJTkVfVFlQ
RShXZWJLaXRXZWJWaWV3LCB3ZWJraXRfd2ViX3ZpZXcsIFdFQktJVF9UWVBFX1dFQl9WSUVXX0JB
U0UpCiAKK3N0YXRpYyBnYm9vbGVhbiB3ZWJraXRXZWJWaWV3TG9hZEZhaWwoV2ViS2l0V2ViVmll
dyogd2ViVmlldywgV2ViS2l0TG9hZFN0YXR1cywgY29uc3QgY2hhciogZmFpbGluZ1VSSSwgR0Vy
cm9yKiBlcnJvcikKK3sKKyAgICBpZiAoZ19lcnJvcl9tYXRjaGVzKGVycm9yLCBXRUJLSVRfTkVU
V09SS19FUlJPUiwgV0VCS0lUX05FVFdPUktfRVJST1JfQ0FOQ0VMTEVEKQorICAgICAgICB8fCBn
X2Vycm9yX21hdGNoZXMoZXJyb3IsIFdFQktJVF9QT0xJQ1lfRVJST1IsIFdFQktJVF9QT0xJQ1lf
RVJST1JfRlJBTUVfTE9BRF9JTlRFUlJVUFRFRF9CWV9QT0xJQ1lfQ0hBTkdFKQorICAgICAgICB8
fCBnX2Vycm9yX21hdGNoZXMoZXJyb3IsIFdFQktJVF9QTFVHSU5fRVJST1IsIFdFQktJVF9QTFVH
SU5fRVJST1JfV0lMTF9IQU5ETEVfTE9BRCkpCisgICAgICAgIHJldHVybiBGQUxTRTsKKworICAg
IEdPd25QdHI8Y2hhcj4gaHRtbFN0cmluZyhnX3N0cmR1cF9wcmludGYoIjxodG1sPjxib2R5PiVz
PC9ib2R5PjwvaHRtbD4iLCBlcnJvci0+bWVzc2FnZSkpOworICAgIHdlYmtpdF93ZWJfdmlld19s
b2FkX2FsdGVybmF0ZV9odG1sKHdlYlZpZXcsIGh0bWxTdHJpbmcuZ2V0KCksIDAsIGZhaWxpbmdV
UkkpOworCisgICAgcmV0dXJuIFRSVUU7Cit9CisKIHN0YXRpYyBHdGtXaWRnZXQqIHdlYmtpdFdl
YlZpZXdDcmVhdGUoV2ViS2l0V2ViVmlldyopCiB7CiAgICAgcmV0dXJuIDA7CkBAIC0yMjYsNiAr
MjQzLDcgQEAgc3RhdGljIHZvaWQgd2Via2l0X3dlYl92aWV3X2NsYXNzX2luaXQoV2ViS2l0V2Vi
Vmlld0NsYXNzKiB3ZWJWaWV3Q2xhc3MpCiAgICAgZ09iamVjdENsYXNzLT5nZXRfcHJvcGVydHkg
PSB3ZWJraXRXZWJWaWV3R2V0UHJvcGVydHk7CiAgICAgZ09iamVjdENsYXNzLT5maW5hbGl6ZSA9
IHdlYmtpdFdlYlZpZXdGaW5hbGl6ZTsKIAorICAgIHdlYlZpZXdDbGFzcy0+bG9hZF9mYWlsZWQg
PSB3ZWJraXRXZWJWaWV3TG9hZEZhaWw7CiAgICAgd2ViVmlld0NsYXNzLT5jcmVhdGUgPSB3ZWJr
aXRXZWJWaWV3Q3JlYXRlOwogICAgIHdlYlZpZXdDbGFzcy0+c2NyaXB0X2FsZXJ0ID0gd2Via2l0
V2ViVmlld1NjcmlwdEFsZXJ0OwogICAgIHdlYlZpZXdDbGFzcy0+c2NyaXB0X2NvbmZpcm0gPSB3
ZWJraXRXZWJWaWV3U2NyaXB0Q29uZmlybTsKQEAgLTI5Myw2ICszMTEsOTYgQEAgc3RhdGljIHZv
aWQgd2Via2l0X3dlYl92aWV3X2NsYXNzX2luaXQoV2ViS2l0V2ViVmlld0NsYXNzKiB3ZWJWaWV3
Q2xhc3MpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFdFQktJVF9QQVJBTV9SRUFEQUJMRSkpOwogCiAgICAgLyoqCisgICAgICogV2ViS2l0
V2ViVmlldzo6bG9hZC1zdGF0dXMtY2hhbmdlZDoKKyAgICAgKiBAd2ViX3ZpZXc6IHRoZSAjV2Vi
S2l0V2ViVmlldyBvbiB3aGljaCB0aGUgc2lnbmFsIGlzIGVtaXR0ZWQKKyAgICAgKiBAc3RhdHVz
OiB0aGUgI1dlYktpdExvYWRTdGF0dXMKKyAgICAgKgorICAgICAqIEVtaXR0ZWQgd2hlbiB0aGUg
c3RhdHVzIG9mIGEgbG9hZCBvcGVyYXRpb24gaW4gQHdlYl92aWV3IGNoYW5nZXMuCisgICAgICog
VGhlIHNpZ25hbCBpcyBhbHdheXMgZW1pdHRlZCB3aXRoICVXRUJLSVRfTE9BRF9QUk9WSVNJT05B
TCB3aGVuIGEKKyAgICAgKiBuZXcgbG9hZCByZXF1ZXN0IGlzIG1hZGUgYW5kICVXRUJLSVRfTE9B
RF9GSU5JU0hFRCB3aGVuIHRoZSBsb2FkCisgICAgICogZmluaXNoZXMgc3VjY2Vzc2Z1bGx5IG9y
IGR1ZSB0byBhbiBlcnJvci4gV2hlbiB0aGUgb25nb2luZyBsb2FkCisgICAgICogb3BlcmF0aW9u
IGZhaWxzICNXZWJLaXRXZWJWaWV3Ojpsb2FkLWZhaWxlZCBzaWduYWwgaXMgZW1pdHRlZAorICAg
ICAqIGJlZm9yZSAjV2ViS2l0V2ViVmlldzo6bG9hZC1zdGF0dXMtY2hhbmdlZCBpcyBlbWl0dGVk
IHdpdGgKKyAgICAgKiAlV0VCS0lUX0xPQURfRklOSVNIRUQuCisgICAgICogSWYgYSByZWRpcmVj
dGlvbiBpcyByZWNlaXZlZCBmcm9tIHRoZSBzZXJ2ZXIsIHRoaXMgc2lnbmFsIGlzIGVtaXR0ZWQK
KyAgICAgKiB3aXRoICVXRUJLSVRfTE9BRF9SRURJUkVDVEVEIGFmdGVyIHRoZSBpbml0aWFsIGVt
aXNzaW9uIHdpdGgKKyAgICAgKiAlV0VCS0lUX0xPQURfUFJPVklTSU9OQUwgYW5kIGJlZm9yZSAl
V0VCS0lUX0xPQURfQ09NTUlUVEVELgorICAgICAqIFdoZW4gdGhlIHBhZ2UgY29udGVudCBzdGFy
dHMgYXJyaXZpbmcgdGhlIHNpZ25hbCBpcyBlbWl0dGVkIHdpdGgKKyAgICAgKiAlV0VCS0lUX0xP
QURfQ09NTUlUVEVEIHN0YXR1cy4KKyAgICAgKgorICAgICAqIFlvdSBjYW4gaGFuZGxlIHRoaXMg
c2lnbmFsIGFuZCB1c2UgYSBzd2F0Y2ggdG8gdHJhY2sgdGhlIHN0YXR1cworICAgICAqIG9mIGFu
eSBvbmdvaW5nIGxvYWQgb3BlcmF0aW9uLgorICAgICAqCisgICAgICogPGluZm9ybWFsZXhhbXBs
ZT48cHJvZ3JhbWxpc3Rpbmc+CisgICAgICogc3RhdGljIHZvaWQgd2ViX3ZpZXdfbG9hZF9zdGF0
dXNfY2hhbmdlZCAoV2ViS2l0V2ViVmlldyAgICp3ZWJfdmlldywKKyAgICAgKiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXZWJLaXRMb2FkU3RhdHVzIHN0YXR1cywK
KyAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBncG9pbnRl
ciAgICAgICAgIHVzZXJfZGF0YSkKKyAgICAgKiB7CisgICAgICogICAgIHN3aXRjaCAoc3RhdHVz
KSB7CisgICAgICogICAgIGNhc2UgV0VCS0lUX0xPQURfUFJPVklTSU9OQUw6CisgICAgICogICAg
ICAgICAvPCEtLSAtLT4qIE5ldyBsb2FkLCB3ZSBoYXZlIG5vdyBhIHByb3Zpc2lvbmFsIFVSSSAq
PCEtLSAtLT4vCisgICAgICogICAgICAgICBwcm92aXNpb25hbF91cmkgPSB3ZWJraXRfd2ViX3Zp
ZXdfZ2V0X3VyaSAod2ViX3ZpZXcpOworICAgICAqICAgICAgICAgLzwhLS0gLS0+KiBIZXJlIHdl
IGNvdWxkIHN0YXJ0IGEgc3Bpbm5lciBvciB1cGRhdGUgdGhlCisgICAgICogICAgICAgICAgPCEt
LSAtLT4qIGxvY2F0aW9uIGJhciB3aXRoIHRoZSBwcm92aXNpb25hbCBVUkkgKjwhLS0gLS0+Lwor
ICAgICAqICAgICAgICAgYnJlYWs7CisgICAgICogICAgIGNhc2UgV0VCS0lUX0xPQURfUkVESVJF
Q1RFRDoKKyAgICAgKiAgICAgICAgIHJlZGlyZWN0ZWRfdXJpID0gd2Via2l0X3dlYl92aWV3X2dl
dF91cmkgKHdlYl92aWV3KTsKKyAgICAgKiAgICAgICAgIGJyZWFrOworICAgICAqICAgICBjYXNl
IFdFQktJVF9MT0FEX0NPTU1JVFRFRDoKKyAgICAgKiAgICAgICAgIC88IS0tIC0tPiogVGhlIGxv
YWQgaXMgYmVpbmcgcGVyZm9ybWVkLiBDdXJyZW50IHVyaSBpcworICAgICAqICAgICAgICAgIDwh
LS0gLS0+KiB0aGUgZmluYWwgb25lIGFuZCBpdCB3b24ndCBjaGFuZ2UgdW5sZXNzIGEgbmV3Cisg
ICAgICogICAgICAgICAgPCEtLSAtLT4qIGxvYWQgaXMgcmVxdWVzdGVkIG9yIGEgbmF2aWdhdGlv
biB3aXRoaW4gdGhlCisgICAgICogICAgICAgICAgPCEtLSAtLT4qIHNhbWUgcGFnZSBpcyBwZXJm
b3JtZWQgKjwhLS0gLS0+LworICAgICAqICAgICAgICAgdXJpID0gd2Via2l0X3dlYl92aWV3X2dl
dF91cmkgKHdlYl92aWV3KTsKKyAgICAgKiAgICAgICAgIGJyZWFrOworICAgICAqICAgICBjYXNl
IFdFQktJVF9MT0FEX0ZJTklTSEVEOgorICAgICAqICAgICAgICAgLzwhLS0gLS0+KiBMb2FkIGZp
bmlzaGVkLCB3ZSBjYW4gbm93IHN0b3AgdGhlIHNwaW5uZXIgKjwhLS0gLS0+LworICAgICAqICAg
ICAgICAgYnJlYWs7CisgICAgICogICAgIH0KKyAgICAgKiB9CisgICAgICogPC9wcm9ncmFtbGlz
dGluZz48L2luZm9ybWFsZXhhbXBsZT4KKyAgICAgKi8KKyAgICBzaWduYWxzW0xPQURfU1RBVFVT
X0NIQU5HRURdID0KKyAgICAgICAgZ19zaWduYWxfbmV3KCJsb2FkLXN0YXR1cy1jaGFuZ2VkIiwK
KyAgICAgICAgICAgICAgICAgICAgIEdfVFlQRV9GUk9NX0NMQVNTKHdlYlZpZXdDbGFzcyksCisg
ICAgICAgICAgICAgICAgICAgICBHX1NJR05BTF9SVU5fTEFTVCwKKyAgICAgICAgICAgICAgICAg
ICAgIEdfU1RSVUNUX09GRlNFVChXZWJLaXRXZWJWaWV3Q2xhc3MsIGxvYWRfc3RhdHVzX2NoYW5n
ZWQpLAorICAgICAgICAgICAgICAgICAgICAgMCwgMCwKKyAgICAgICAgICAgICAgICAgICAgIGdf
Y2Nsb3N1cmVfbWFyc2hhbF9WT0lEX19FTlVNLAorICAgICAgICAgICAgICAgICAgICAgR19UWVBF
X05PTkUsIDEsCisgICAgICAgICAgICAgICAgICAgICBXRUJLSVRfVFlQRV9MT0FEX1NUQVRVUyk7
CisKKyAgICAvKioKKyAgICAgKiBXZWJLaXRXZWJWaWV3Ojpsb2FkLWZhaWxlZDoKKyAgICAgKiBA
d2ViX3ZpZXc6IHRoZSAjV2ViS2l0V2ViVmlldyBvbiB3aGljaCB0aGUgc2lnbmFsIGlzIGVtaXR0
ZWQKKyAgICAgKiBAc3RhdHVzOiB0aGUgI1dlYktpdExvYWRTdGF0dXMgb2YgdGhlIGxvYWQgb3Bl
cmF0aW9uCisgICAgICogQGZhaWxpbmdfdXJpOiB0aGUgVVJJIHRoYXQgZmFpbGVkIHRvIGxvYWQK
KyAgICAgKiBAZXJyb3I6IHRoZSAjR0Vycm9yIHRoYXQgd2FzIHRyaWdnZXJlZAorICAgICAqCisg
ICAgICogRW1pdHRlZCB3aGVuIGFuIGVycm9yIG9jY3VycyBkdXJpbmcgYSBsb2FkIG9wZXJhdGlv
bi4KKyAgICAgKiBJZiB0aGUgZXJyb3IgaGFwcGVuZWQgd2hlbiBzdGFydGluZyB0byBsb2FkIGRh
dGEgZm9yIGEgcGFnZQorICAgICAqIEBzdGF0dXMgd2lsbCBiZSAlV0VCS0lUX0xPQURfUFJPVklT
SU9OQUwuIElmIGl0IGhhcHBlbmVkIHdoaWxlCisgICAgICogbG9hZGluZyBhIGNvbW1pdHRlZCBk
YXRhIHNvdXJjZSBAc3RhdHVzIHdpbGwgYmUgJVdFQktJVF9MT0FEX0NPTU1JVFRFRC4KKyAgICAg
KiBTaW5jZSBhIGxvYWQgZXJyb3IgY2F1c2VzIHRoZSBsb2FkIG9wZXJhdGlvbiB0byBmaW5pc2gs
IHRoZSBzaWduYWwKKyAgICAgKiBXZWJLaXRXZWJWaWV3Ojpsb2FkLXN0YXR1cy1jaGFuZ2VkIHdp
bGwgYWx3YXlzIGJlIGVtaXR0ZWQgd2l0aAorICAgICAqICVXRUJLSVRfTE9BRF9GSU5JU0hFRCBz
dGF0dXMgYWZ0ZXIgdGhpcyBvbmUuCisgICAgICoKKyAgICAgKiBCeSBkZWZhdWx0LCBpZiB0aGUg
c2lnbmFsIGlzIG5vdCBoYW5kbGVkLCBhIHN0b2NrIGVycm9yIHBhZ2Ugd2lsbCBiZSBkaXNwbGF5
ZWQuCisgICAgICogWW91IG5lZWQgdG8gaGFuZGxlIHRoZSBzaWduYWwgaWYgeW91IHdhbnQgdG8g
cHJvdmlkZSB5b3VyIG93biBlcnJvciBwYWdlLgorICAgICAqLworICAgIHNpZ25hbHNbTE9BRF9G
QUlMRURdID0KKyAgICAgICAgZ19zaWduYWxfbmV3KCJsb2FkLWZhaWxlZCIsCisgICAgICAgICAg
ICAgICAgICAgICBHX1RZUEVfRlJPTV9DTEFTUyh3ZWJWaWV3Q2xhc3MpLAorICAgICAgICAgICAg
ICAgICAgICAgR19TSUdOQUxfUlVOX0xBU1QsCisgICAgICAgICAgICAgICAgICAgICBHX1NUUlVD
VF9PRkZTRVQoV2ViS2l0V2ViVmlld0NsYXNzLCBsb2FkX2ZhaWxlZCksCisgICAgICAgICAgICAg
ICAgICAgICBnX3NpZ25hbF9hY2N1bXVsYXRvcl90cnVlX2hhbmRsZWQsIDAsCisgICAgICAgICAg
ICAgICAgICAgICB3ZWJraXRfbWFyc2hhbF9CT09MRUFOX19FTlVNX1NUUklOR19QT0lOVEVSLAor
ICAgICAgICAgICAgICAgICAgICAgR19UWVBFX0JPT0xFQU4sIDMsCisgICAgICAgICAgICAgICAg
ICAgICBXRUJLSVRfVFlQRV9MT0FEX1NUQVRVUywKKyAgICAgICAgICAgICAgICAgICAgIEdfVFlQ
RV9TVFJJTkcsCisgICAgICAgICAgICAgICAgICAgICBHX1RZUEVfUE9JTlRFUik7CisKKyAgICAv
KioKICAgICAgKiBXZWJLaXRXZWJWaWV3OjpjcmVhdGU6CiAgICAgICogQHdlYl92aWV3OiB0aGUg
I1dlYktpdFdlYlZpZXcgb24gd2hpY2ggdGhlIHNpZ25hbCBpcyBlbWl0dGVkCiAgICAgICoKQEAg
LTQyNSw2ICs1MzMsMjAgQEAgc3RhdGljIHZvaWQgd2Via2l0X3dlYl92aWV3X2NsYXNzX2luaXQo
V2ViS2l0V2ViVmlld0NsYXNzKiB3ZWJWaWV3Q2xhc3MpCiAKIH0KIAordm9pZCB3ZWJraXRXZWJW
aWV3TG9hZFN0YXR1c0NoYW5nZWQoV2ViS2l0V2ViVmlldyogd2ViVmlldywgV2ViS2l0TG9hZFN0
YXR1cyBzdGF0dXMpCit7CisgICAgaWYgKHN0YXR1cyAhPSBXRUJLSVRfTE9BRF9GSU5JU0hFRCkK
KyAgICAgICAgd2Via2l0V2ViVmlld1VwZGF0ZVVSSSh3ZWJWaWV3KTsKKyAgICBnX3NpZ25hbF9l
bWl0KHdlYlZpZXcsIHNpZ25hbHNbTE9BRF9TVEFUVVNfQ0hBTkdFRF0sIDAsIHN0YXR1cyk7Cit9
CisKK3ZvaWQgd2Via2l0V2ViVmlld0xvYWRGYWlsZWQoV2ViS2l0V2ViVmlldyogd2ViVmlldywg
V2ViS2l0TG9hZFN0YXR1cyBzdGF0dXMsIGNvbnN0IGNoYXIqIGZhaWxpbmdVUkksIEdFcnJvciAq
ZXJyb3IpCit7CisgICAgZ2Jvb2xlYW4gcmV0dXJuVmFsdWU7CisgICAgZ19zaWduYWxfZW1pdCh3
ZWJWaWV3LCBzaWduYWxzW0xPQURfRkFJTEVEXSwgMCwgc3RhdHVzLCBmYWlsaW5nVVJJLCBlcnJv
ciwgJnJldHVyblZhbHVlKTsKKyAgICBnX3NpZ25hbF9lbWl0KHdlYlZpZXcsIHNpZ25hbHNbTE9B
RF9TVEFUVVNfQ0hBTkdFRF0sIDAsIFdFQktJVF9MT0FEX0ZJTklTSEVEKTsKK30KKwogdm9pZCB3
ZWJraXRXZWJWaWV3U2V0VGl0bGUoV2ViS2l0V2ViVmlldyogd2ViVmlldywgY29uc3QgQ1N0cmlu
ZyYgdGl0bGUpCiB7CiAgICAgV2ViS2l0V2ViVmlld1ByaXZhdGUqIHByaXYgPSB3ZWJWaWV3LT5w
cml2OwpAQCAtNTQzLDUwICs2NjUsMTMgQEAgV2ViS2l0V2ViQ29udGV4dCogd2Via2l0X3dlYl92
aWV3X2dldF9jb250ZXh0KFdlYktpdFdlYlZpZXcgKndlYlZpZXcpCiB9CiAKIC8qKgotICogd2Vi
a2l0X3dlYl92aWV3X2dldF9sb2FkZXJfY2xpZW50OgotICogQHdlYl92aWV3OiBhICNXZWJLaXRX
ZWJWaWV3Ci0gKgotICogUmV0dXJucyB0aGUgI1dlYktpdFdlYkxvYWRlckNsaWVudCBvZiBAd2Vi
X3ZpZXcuIFlvdSBjYW4gdXNlIGl0Ci0gKiB0byBtb25pdG9yIHRoZSBzdGF0dXMgb2YgbG9hZCBv
cGVyYXRpb25zIGhhcHBlbmluZyBvbiBAd2ViX3ZpZXcuCi0gKgotICogUmV0dXJuczogKHRyYW5z
ZmVyIG5vbmUpOiB0aGUgI1dlYktpdFdlYkxvYWRlckNsaWVudCBvZiBAd2ViX3ZpZXcuCi0gKi8K
LVdlYktpdFdlYkxvYWRlckNsaWVudCogd2Via2l0X3dlYl92aWV3X2dldF9sb2FkZXJfY2xpZW50
KFdlYktpdFdlYlZpZXcqIHdlYlZpZXcpCi17Ci0gICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoV0VC
S0lUX0lTX1dFQl9WSUVXKHdlYlZpZXcpLCAwKTsKLQotICAgIHJldHVybiB3ZWJWaWV3LT5wcml2
LT5sb2FkZXJDbGllbnQuZ2V0KCk7Ci19Ci0KLS8qKgotICogd2Via2l0X3dlYl92aWV3X3NldF9s
b2FkZXJfY2xpZW50OgotICogQHdlYl92aWV3OiBhICNXZWJLaXRXZWJWaWV3Ci0gKiBAbG9hZGVy
X2NsaWVudDogYSAjV2ViS2l0V2ViTG9hZGVyQ2xpZW50Ci0gKgotICogU2V0cyB0aGUgI1dlYktp
dFdlYkxvYWRlckNsaWVudCB0aGF0IHRoZSB2aWV3IHdpbGwgdXNlIGR1cmluZwotICogbG9hZCBv
cGVyYXRpb25zLgotICovCi12b2lkIHdlYmtpdF93ZWJfdmlld19zZXRfbG9hZGVyX2NsaWVudChX
ZWJLaXRXZWJWaWV3KiB3ZWJWaWV3LCBXZWJLaXRXZWJMb2FkZXJDbGllbnQqIGxvYWRlckNsaWVu
dCkKLXsKLSAgICBnX3JldHVybl9pZl9mYWlsKFdFQktJVF9JU19XRUJfVklFVyh3ZWJWaWV3KSk7
Ci0gICAgZ19yZXR1cm5faWZfZmFpbChXRUJLSVRfSVNfV0VCX0xPQURFUl9DTElFTlQobG9hZGVy
Q2xpZW50KSk7Ci0KLSAgICBXZWJLaXRXZWJWaWV3UHJpdmF0ZSogcHJpdiA9IHdlYlZpZXctPnBy
aXY7Ci0gICAgaWYgKHByaXYtPmxvYWRlckNsaWVudC5nZXQoKSA9PSBsb2FkZXJDbGllbnQpCi0g
ICAgICAgIHJldHVybjsKLQotICAgIFdlYlBhZ2VQcm94eSogcGFnZSA9IHdlYmtpdFdlYlZpZXdC
YXNlR2V0UGFnZShXRUJLSVRfV0VCX1ZJRVdfQkFTRSh3ZWJWaWV3KSk7Ci0gICAgd2Via2l0V2Vi
Vmlld1NldExvYWRlckNsaWVudCh3ZWJWaWV3LCBsb2FkZXJDbGllbnQsIHRvQVBJKHBhZ2UpKTsK
LX0KLQotLyoqCiAgKiB3ZWJraXRfd2ViX3ZpZXdfbG9hZF91cmk6CiAgKiBAd2ViX3ZpZXc6IGEg
I1dlYktpdFdlYlZpZXcKICAqIEB1cmk6IGFuIFVSSSBzdHJpbmcKICAqCiAgKiBSZXF1ZXN0cyBs
b2FkaW5nIG9mIHRoZSBzcGVjaWZpZWQgVVJJIHN0cmluZy4KLSAqIFlvdSBjYW4gbW9uaXRvciB0
aGUgc3RhdHVzIG9mIHRoZSBsb2FkIG9wZXJhdGlvbiB1c2luZyB0aGUKLSAqICNXZWJLaXRXZWJM
b2FkZXJDbGllbnQgb2YgQHdlYl92aWV3LiBTZWUgd2Via2l0X3dlYl92aWV3X2dldF9sb2FkZXJf
Y2xpZW50KCkuCisgKiBZb3UgY2FuIG1vbml0b3IgdGhlIHN0YXR1cyBvZiB0aGUgbG9hZCBvcGVy
YXRpb24gYnkgY29ubmVjdGluZyB0bworICogI1dlYktpdFdlYlZpZXc6OmxvYWQtc3RhdHVzLWNo
YW5nZWQgc2lnbmFsLgogICovCiB2b2lkIHdlYmtpdF93ZWJfdmlld19sb2FkX3VyaShXZWJLaXRX
ZWJWaWV3KiB3ZWJWaWV3LCBjb25zdCBnY2hhciogdXJpKQogewpAQCAtNjA4LDkgKzY5Myw4IEBA
IHZvaWQgd2Via2l0X3dlYl92aWV3X2xvYWRfdXJpKFdlYktpdFdlYlZpZXcqIHdlYlZpZXcsIGNv
bnN0IGdjaGFyKiB1cmkpCiAgKiBMb2FkIHRoZSBnaXZlbiBAY29udGVudCBzdHJpbmcgd2l0aCB0
aGUgc3BlY2lmaWVkIEBiYXNlX3VyaS4gCiAgKiBSZWxhdGl2ZSBVUkxzIGluIHRoZSBAY29udGVu
dCB3aWxsIGJlIHJlc29sdmVkIGFnYWluc3QgQGJhc2VfdXJpLgogICogV2hlbiBAYmFzZV91cmkg
aXMgJU5VTEwsIGl0IGRlZmF1bHRzIHRvICJhYm91dDpibGFuayIuIFRoZSBtaW1lIHR5cGUgCi0g
KiBvZiB0aGUgZG9jdW1lbnQgd2lsbCBiZSAidGV4dC9odG1sIi4gWW91IGNhbiBtb25pdG9yIHRo
ZSBzdGF0dXMgb2YgCi0gKiB0aGUgbG9hZCBvcGVyYXRpb24gdXNpbmcgdGhlICNXZWJLaXRXZWJM
b2FkZXJDbGllbnQgb2YgQHdlYl92aWV3LiAKLSAqIFNlZSB3ZWJraXRfd2ViX3ZpZXdfZ2V0X2xv
YWRlcl9jbGllbnQoKS4KKyAqIG9mIHRoZSBkb2N1bWVudCB3aWxsIGJlICJ0ZXh0L2h0bWwiLiBZ
b3UgY2FuIG1vbml0b3IgdGhlIHN0YXR1cyBvZgorICogdGhlIGxvYWQgb3BlcmF0aW9uIGJ5IGNv
bm5lY3RpbmcgdG8gI1dlYktpdFdlYlZpZXc6OmxvYWQtc3RhdHVzLWNoYW5nZWQgc2lnbmFsLgog
ICovCiB2b2lkIHdlYmtpdF93ZWJfdmlld19sb2FkX2h0bWwoV2ViS2l0V2ViVmlldyogd2ViVmll
dywgY29uc3QgZ2NoYXIqIGNvbnRlbnQsIGNvbnN0IGdjaGFyKiBiYXNlVVJJKQogewpAQCAtNjI5
LDkgKzcxMyw4IEBAIHZvaWQgd2Via2l0X3dlYl92aWV3X2xvYWRfaHRtbChXZWJLaXRXZWJWaWV3
KiB3ZWJWaWV3LCBjb25zdCBnY2hhciogY29udGVudCwgY29uCiAgKiBAcGxhaW5fdGV4dDogVGhl
IHBsYWluIHRleHQgdG8gbG9hZAogICoKICAqIExvYWQgdGhlIHNwZWNpZmllZCBAcGxhaW5fdGV4
dCBzdHJpbmcgaW50byBAd2ViX3ZpZXcuIFRoZSBtaW1lIHR5cGUgb2YKLSAqIGRvY3VtZW50IHdp
bGwgYmUgInRleHQvcGxhaW4iLiBZb3UgY2FuIG1vbml0b3IgIHRoZSBzdGF0dXMgb2YgdGhlIGxv
YWQgCi0gKiBvcGVyYXRpb24gdXNpbmcgdGhlICNXZWJLaXRXZWJMb2FkZXJDbGllbnQgb2YgQHdl
Yl92aWV3LiAKLSAqIFNlZSB3ZWJraXRfd2ViX3ZpZXdfZ2V0X2xvYWRlcl9jbGllbnQoKS4KKyAq
IGRvY3VtZW50IHdpbGwgYmUgInRleHQvcGxhaW4iLiBZb3UgY2FuIG1vbml0b3IgIHRoZSBzdGF0
dXMgb2YgdGhlIGxvYWQKKyAqIG9wZXJhdGlvbiBieSBjb25uZWN0aW5nIHRvICNXZWJLaXRXZWJW
aWV3Ojpsb2FkLXN0YXR1cy1jaGFuZ2VkIHNpZ25hbC4KICAqLwogdm9pZCB3ZWJraXRfd2ViX3Zp
ZXdfbG9hZF9wbGFpbl90ZXh0KFdlYktpdFdlYlZpZXcqIHdlYlZpZXcsIGNvbnN0IGdjaGFyKiBw
bGFpblRleHQpCiB7CkBAIC02NTIsMTIgKzczNSwxMSBAQCB2b2lkIHdlYmtpdF93ZWJfdmlld19s
b2FkX3BsYWluX3RleHQoV2ViS2l0V2ViVmlldyogd2ViVmlldywgY29uc3QgZ2NoYXIqIHBsYWlu
VAogICoKICAqIFJlcXVlc3QgbG9hZGluZyBvZiBhbiBhbHRlcm5hdGUgY29udGVudCBmb3IgYSBV
UkkgdGhhdCBpcyB1bnJlYWNoYWJsZS4gVGhpcyBhbGxvd3MgY2xpZW50cwogICogdG8gZGlzcGxh
eSBwYWdlLWxvYWRpbmcgZXJyb3JzIGluIHRoZSAjV2ViS2l0V2ViVmlldyBpdHNlbGYuIFRoaXMg
aXMgdHlwaWNhbGx5IGNhbGxlZCBmcm9tCi0gKiAjV2ViS2l0V2ViTG9hZGVyQ2xpZW50Ojpwcm92
aXNpb25hbC1sb2FkLWZhaWxlZCBvciAjV2ViS2l0V2ViTG9hZGVyQ2xpZW50Ojpsb2FkLWZhaWxl
ZAotICogc2lnbmFscy4KLSAqIFdoZW4gY2FsbGVkIGZyb20gdGhvc2Ugc2lnbmFscyB0aGlzIG1l
dGhvZCB3aWxsIHByZXNlcnZlIHRoZSBiYWNrLWZvcndhcmQgbGlzdC4gVGhlIFVSSSBwYXNzZWQg
aW4KKyAqICNXZWJLaXRXZWJWaWV3Ojpsb2FkLWZhaWxlZCBzaWduYWwuCisgKiBXaGVuIGNhbGxl
ZCBmcm9tIHRoYXQgc2lnbmFsIHRoaXMgbWV0aG9kIHdpbGwgcHJlc2VydmUgdGhlIGJhY2stZm9y
d2FyZCBsaXN0LiBUaGUgVVJJIHBhc3NlZCBpbgogICogQGJhc2VfdXJpIGhhcyB0byBiZSBhbiBh
YnNvbHV0ZSBVUkkuCi0gKiBZb3UgY2FuIG1vbml0b3IgdGhlIHN0YXR1cyBvZiB0aGUgbG9hZCBv
cGVyYXRpb24gdXNpbmcgdGhlCi0gKiAjV2ViS2l0V2ViTG9hZGVyQ2xpZW50IG9mIEB3ZWJfdmll
dy4gU2VlIHdlYmtpdF93ZWJfdmlld19nZXRfbG9hZGVyX2NsaWVudCgpLgorICogWW91IGNhbiBt
b25pdG9yIHRoZSBzdGF0dXMgb2YgdGhlIGxvYWQgb3BlcmF0aW9uIGJ5IGNvbm5lY3RpbmcgdG8K
KyAqICNXZWJLaXRXZWJWaWV3Ojpsb2FkLXN0YXR1cy1jaGFuZ2VkIHNpZ25hbC4KICAqLwogdm9p
ZCB3ZWJraXRfd2ViX3ZpZXdfbG9hZF9hbHRlcm5hdGVfaHRtbChXZWJLaXRXZWJWaWV3KiB3ZWJW
aWV3LCBjb25zdCBnY2hhciogY29udGVudCwgY29uc3QgZ2NoYXIqIGJhc2VVUkksIGNvbnN0IGdj
aGFyKiB1bnJlYWNoYWJsZVVSSSkKIHsKQEAgLTY3OCw4ICs3NjAsOCBAQCB2b2lkIHdlYmtpdF93
ZWJfdmlld19sb2FkX2FsdGVybmF0ZV9odG1sKFdlYktpdFdlYlZpZXcqIHdlYlZpZXcsIGNvbnN0
IGdjaGFyKiBjbwogICogQHJlcXVlc3Q6IGEgI1dlYktpdFVSSVJlcXVlc3QgdG8gbG9hZAogICoK
ICAqIFJlcXVlc3RzIGxvYWRpbmcgb2YgdGhlIHNwZWNpZmllZCAjV2ViS2l0VVJJUmVxdWVzdC4K
LSAqIFlvdSBjYW4gbW9uaXRvciB0aGUgc3RhdHVzIG9mIHRoZSBsb2FkIG9wZXJhdGlvbiB1c2lu
ZyB0aGUKLSAqICNXZWJLaXRXZWJMb2FkZXJDbGllbnQgb2YgQHdlYl92aWV3LiBTZWUgd2Via2l0
X3dlYl92aWV3X2dldF9sb2FkZXJfY2xpZW50KCkuCisgKiBZb3UgY2FuIG1vbml0b3IgdGhlIHN0
YXR1cyBvZiB0aGUgbG9hZCBvcGVyYXRpb24gYnkgY29ubmVjdGluZyB0bworICogI1dlYktpdFdl
YlZpZXc6OmxvYWQtc3RhdHVzLWNoYW5nZWQgc2lnbmFsLgogICovCiB2b2lkIHdlYmtpdF93ZWJf
dmlld19sb2FkX3JlcXVlc3QoV2ViS2l0V2ViVmlldyogd2ViVmlldywgV2ViS2l0VVJJUmVxdWVz
dCogcmVxdWVzdCkKIHsKQEAgLTc0NywxMCArODI5LDggQEAgdm9pZCB3ZWJraXRfd2ViX3ZpZXdf
cmVsb2FkX2J5cGFzc19jYWNoZShXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3KQogICogU3RvcHMgYW55
IG9uZ29pbmcgbG9hZGluZyBvcGVyYXRpb24gaW4gQHdlYl92aWV3LgogICogVGhpcyBtZXRob2Qg
ZG9lcyBub3RoaW5nIGlmIG5vIGNvbnRlbnQgaXMgYmVpbmcgbG9hZGVkLgogICogSWYgdGhlcmUg
aXMgYSBsb2FkaW5nIG9wZXJhdGlvbiBpbiBwcm9ncmVzcywgaXQgd2lsbCBiZSBjYW5jZWxsZWQg
YW5kCi0gKiAjV2ViS2l0V2ViTG9hZGVyQ2xpZW50Ojpwcm92aXNpb25hbC1sb2FkLWZhaWxlZCBv
cgotICogI1dlYktpdFdlYkxvYWRlckNsaWVudDo6bG9hZC1mYWlsZWQgd2lsbCBiZSBlbWl0dGVk
IG9uIHRoZSBjdXJyZW50Ci0gKiAjV2ViS2l0V2ViTG9hZGVyQ2xpZW50IHdpdGggJVdFQktJVF9O
RVRXT1JLX0VSUk9SX0NBTkNFTExFRCBlcnJvci4KLSAqIFNlZSBhbHNvIHdlYmtpdF93ZWJfdmll
d19nZXRfbG9hZGVyX2NsaWVudCgpLgorICogI1dlYktpdFdlYlZpZXc6OmxvYWQtZmFpbGVkIHNp
Z25hbCB3aWxsIGJlIGVtaXR0ZWQgd2l0aAorICogJVdFQktJVF9ORVRXT1JLX0VSUk9SX0NBTkNF
TExFRCBlcnJvci4KICAqLwogdm9pZCB3ZWJraXRfd2ViX3ZpZXdfc3RvcF9sb2FkaW5nKFdlYktp
dFdlYlZpZXcqIHdlYlZpZXcpCiB7CkBAIC03NjQsOCArODQ0LDggQEAgdm9pZCB3ZWJraXRfd2Vi
X3ZpZXdfc3RvcF9sb2FkaW5nKFdlYktpdFdlYlZpZXcqIHdlYlZpZXcpCiAgKiBAd2ViX3ZpZXc6
IGEgI1dlYktpdFdlYlZpZXcKICAqCiAgKiBMb2FkcyB0aGUgcHJldmlvdXMgaGlzdG9yeSBpdGVt
LgotICogWW91IGNhbiBtb25pdG9yIHRoZSBzdGF0dXMgb2YgdGhlIGxvYWQgb3BlcmF0aW9uIHVz
aW5nIHRoZQotICogI1dlYktpdFdlYkxvYWRlckNsaWVudCBvZiBAd2ViX3ZpZXcuIFNlZSB3ZWJr
aXRfd2ViX3ZpZXdfZ2V0X2xvYWRlcl9jbGllbnQoKS4KKyAqIFlvdSBjYW4gbW9uaXRvciB0aGUg
c3RhdHVzIG9mIHRoZSBsb2FkIG9wZXJhdGlvbiBieSBjb25uZWN0aW5nIHRvCisgKiAjV2ViS2l0
V2ViVmlldzo6bG9hZC1zdGF0dXMtY2hhbmdlZCBzaWduYWwuCiAgKi8KIHZvaWQgd2Via2l0X3dl
Yl92aWV3X2dvX2JhY2soV2ViS2l0V2ViVmlldyogd2ViVmlldykKIHsKQEAgLTc5NSw4ICs4NzUs
OCBAQCBnYm9vbGVhbiB3ZWJraXRfd2ViX3ZpZXdfY2FuX2dvX2JhY2soV2ViS2l0V2ViVmlldyog
d2ViVmlldykKICAqIEB3ZWJfdmlldzogYSAjV2ViS2l0V2ViVmlldwogICoKICAqIExvYWRzIHRo
ZSBuZXh0IGhpc3RvcnkgaXRlbS4KLSAqIFlvdSBjYW4gbW9uaXRvciB0aGUgc3RhdHVzIG9mIHRo
ZSBsb2FkIG9wZXJhdGlvbiB1c2luZyB0aGUKLSAqICNXZWJLaXRXZWJMb2FkZXJDbGllbnQgb2Yg
QHdlYl92aWV3LiBTZWUgd2Via2l0X3dlYl92aWV3X2dldF9sb2FkZXJfY2xpZW50KCkuCisgKiBZ
b3UgY2FuIG1vbml0b3IgdGhlIHN0YXR1cyBvZiB0aGUgbG9hZCBvcGVyYXRpb24gYnkgY29ubmVj
dGluZyB0bworICogI1dlYktpdFdlYlZpZXc6OmxvYWQtc3RhdHVzLWNoYW5nZWQgc2lnbmFsLgog
ICovCiB2b2lkIHdlYmtpdF93ZWJfdmlld19nb19mb3J3YXJkKFdlYktpdFdlYlZpZXcqIHdlYlZp
ZXcpCiB7CkBAIC04NTgsMTQgKzkzOCwxNCBAQCBnYm9vbGVhbiB3ZWJraXRfd2ViX3ZpZXdfY2Fu
X2dvX2ZvcndhcmQoV2ViS2l0V2ViVmlldyogd2ViVmlldykKICAqIDxsaXN0aXRlbT48cGFyYT4K
ICAqICAgSWYgdGhlcmUgaXMgYSBzZXJ2ZXIgcmVkaXJlY3Rpb24gZHVyaW5nIHRoZSBsb2FkIG9w
ZXJhdGlvbiwKICAqICAgdGhlIGFjdGl2ZSBVUkkgaXMgdGhlIHJlZGlyZWN0ZWQgVVJJLiBXaGVu
IHRoZSBzaWduYWwKLSAqICAgI1dlYktpdFdlYkxvYWRlckNsaWVudDo6cHJvdmlzaW9uYWwtbG9h
ZC1yZWNlaXZlZC1zZXJ2ZXItcmVkaXJlY3QKLSAqICAgaXMgZW1pdHRlZCwgdGhlIGFjdGl2ZSBV
UkkgaXMgYWxyZWFkeSB1cGRhdGVkIHRvIHRoZSByZWRpcmVjdGVkIFVSSS4KKyAqICAgI1dlYktp
dFdlYlZpZXc6OmxvYWQtc3RhdHVzLWNoYW5nZWQgaXMgZW1pdHRlZCB3aXRoICVXRUJLSVRfTE9B
RF9SRURJUkVDVEVECisgKiAgIHN0YXR1cywgdGhlIGFjdGl2ZSBVUkkgaXMgYWxyZWFkeSB1cGRh
dGVkIHRvIHRoZSByZWRpcmVjdGVkIFVSSS4KICAqIDwvcGFyYT48L2xpc3RpdGVtPgogICogPGxp
c3RpdGVtPjxwYXJhPgotICogICBXaGVuIHRoZSBzaWduYWwgI1dlYktpdFdlYkxvYWRlckNsaWVu
dDo6bG9hZC1jb21taXR0ZWQgaXMgZW1pdHRlZCwKLSAqICAgdGhlIGFjdGl2ZSBVUkkgaXMgdGhl
IGZpbmFsIG9uZSBhbmQgaXQgd2lsbCBub3QgY2hhbmdlIHVubGVzcwotICogICBhIG5ldyBsb2Fk
IG9wZXJhdGlvbiBpcyBzdGFydGVkIG9yIGEgbmF2aWdhdGlvbiBhY3Rpb24gd2l0aGluIHRoZQot
ICogICBzYW1lIHBhZ2UgaXMgcGVyZm9ybWVkLgorICogICBXaGVuIHRoZSBzaWduYWwgI1dlYktp
dFdlYlZpZXc6OmxvYWQtc3RhdHVzLWNoYW5nZWQgaXMgZW1pdHRlZCwKKyAqICAgd2l0aCAlV0VC
S0lUX0xPQURfQ09NTUlUVEVEIHN0YXR1cyB0aGUgYWN0aXZlIFVSSSBpcyB0aGUgZmluYWwKKyAq
ICAgb25lIGFuZCBpdCB3aWxsIG5vdCBjaGFuZ2UgdW5sZXNzIGEgbmV3IGxvYWQgb3BlcmF0aW9u
IGlzIHN0YXJ0ZWQKKyAqICAgb3IgYSBuYXZpZ2F0aW9uIGFjdGlvbiB3aXRoaW4gdGhlIHNhbWUg
cGFnZSBpcyBwZXJmb3JtZWQuCiAgKiA8L3BhcmE+PC9saXN0aXRlbT4KICAqIDwvb3JkZXJlZGxp
c3Q+CiAgKgpAQCAtOTYzLDggKzEwNDMsOCBAQCBXZWJLaXRCYWNrRm9yd2FyZExpc3QqIHdlYmtp
dF93ZWJfdmlld19nZXRfYmFja19mb3J3YXJkX2xpc3QoV2ViS2l0V2ViVmlldyogd2ViVgogICog
QGxpc3RfaXRlbTogYSAjV2ViS2l0QmFja0ZvcndhcmRMaXN0SXRlbQogICoKICAqIExvYWRzIHRo
ZSBzcGVjaWZpYyBoaXN0b3J5IGl0ZW0gQGxpc3RfaXRlbS4KLSAqIFlvdSBjYW4gbW9uaXRvciB0
aGUgc3RhdHVzIG9mIHRoZSBsb2FkIG9wZXJhdGlvbiB1c2luZyB0aGUKLSAqICNXZWJLaXRXZWJM
b2FkZXJDbGllbnQgb2YgQHdlYl92aWV3LiBTZWUgd2Via2l0X3dlYl92aWV3X2dldF9sb2FkZXJf
Y2xpZW50KCkuCisgKiBZb3UgY2FuIG1vbml0b3IgdGhlIHN0YXR1cyBvZiB0aGUgbG9hZCBvcGVy
YXRpb24gYnkgY29ubmVjdGluZyB0bworICogI1dlYktpdFdlYlZpZXc6OmxvYWQtc3RhdHVzLWNo
YW5nZWQgc2lnbmFsLgogICovCiB2b2lkIHdlYmtpdF93ZWJfdmlld19nb190b19iYWNrX2Zvcndh
cmRfbGlzdF9pdGVtKFdlYktpdFdlYlZpZXcqIHdlYlZpZXcsIFdlYktpdEJhY2tGb3J3YXJkTGlz
dEl0ZW0qIGxpc3RJdGVtKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9ndGsvV2ViS2l0V2ViVmlldy5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9n
dGsvV2ViS2l0V2ViVmlldy5oCmluZGV4IGViZmNmYzcuLmNlODkzODIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXcuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3LmgKQEAgLTMxLDcgKzMx
LDYgQEAKICNpbmNsdWRlIDx3ZWJraXQyL1dlYktpdEJhY2tGb3J3YXJkTGlzdC5oPgogI2luY2x1
ZGUgPHdlYmtpdDIvV2ViS2l0RGVmaW5lcy5oPgogI2luY2x1ZGUgPHdlYmtpdDIvV2ViS2l0V2Vi
Q29udGV4dC5oPgotI2luY2x1ZGUgPHdlYmtpdDIvV2ViS2l0V2ViTG9hZGVyQ2xpZW50Lmg+CiAj
aW5jbHVkZSA8d2Via2l0Mi9XZWJLaXRTZXR0aW5ncy5oPgogI2luY2x1ZGUgPHdlYmtpdDIvV2Vi
S2l0VVJJUmVxdWVzdC5oPgogI2luY2x1ZGUgPHdlYmtpdDIvV2ViS2l0V2ViVmlld0Jhc2UuaD4K
QEAgLTQ1LDggKzQ0LDMyIEBAIEdfQkVHSU5fREVDTFMKICNkZWZpbmUgV0VCS0lUX0lTX1dFQl9W
SUVXX0NMQVNTKGtsYXNzKSAoR19UWVBFX0NIRUNLX0NMQVNTX1RZUEUoKGtsYXNzKSwgIFdFQktJ
VF9UWVBFX1dFQl9WSUVXKSkKICNkZWZpbmUgV0VCS0lUX1dFQl9WSUVXX0dFVF9DTEFTUyhvYmop
ICAoR19UWVBFX0lOU1RBTkNFX0dFVF9DTEFTUygob2JqKSwgIFdFQktJVF9UWVBFX1dFQl9WSUVX
LCBXZWJLaXRXZWJWaWV3Q2xhc3MpKQogCit0eXBlZGVmIHN0cnVjdCBfV2ViS2l0V2ViVmlldyBX
ZWJLaXRXZWJWaWV3OwordHlwZWRlZiBzdHJ1Y3QgX1dlYktpdFdlYlZpZXdDbGFzcyBXZWJLaXRX
ZWJWaWV3Q2xhc3M7CiB0eXBlZGVmIHN0cnVjdCBfV2ViS2l0V2ViVmlld1ByaXZhdGUgV2ViS2l0
V2ViVmlld1ByaXZhdGU7CiAKKy8qKgorICogV2ViS2l0TG9hZFN0YXR1cworICogQFdFQktJVF9M
T0FEX1BST1ZJU0lPTkFMOiBBIG5ldyBsb2FkIHJlcXVlc3QgaGFzIGJlZW4gbWFkZS4KKyAqIE5v
IGRhdGEgaGFzIGJlZW4gcmVjZWl2ZWQgeWV0LCBlbXB0eSBzdHJ1Y3R1cmVzIGhhdmUKKyAqIGJl
ZW4gYWxsb2NhdGVkIHRvIHBlcmZvcm0gdGhlIGxvYWQ7IHRoZSBsb2FkIG1heSBzdGlsbAorICog
ZmFpbCBmb3IgdHJhbnNwb3J0IGlzc3VlcyBzdWNoIGFzIG5vdCBiZWluZyBhYmxlIHRvCisgKiBy
ZXNvbHZlIGEgbmFtZSwgb3IgY29ubmVjdCB0byBhIHBvcnQuCisgKiBAV0VCS0lUX0xPQURfUkVE
SVJFQ1RFRDogQSBwcm92aXNpb25hbCBkYXRhIHNvdXJjZSByZWNlaXZlZAorICogYSBzZXJ2ZXIg
cmVkaXJlY3QuCisgKiBAV0VCS0lUX0xPQURfQ09NTUlUVEVEOiBUaGUgY29udGVudCBzdGFydGVk
IGFycml2aW5nIGZvciBhIHBhZ2UgbG9hZC4KKyAqIFRoZSBuZWNlc3NhcnkgdHJhbnNwb3J0IHJl
cXVpcmVtZW50cyBhcmUgc3RhYmlsaXNoZWQsIGFuZCB0aGUKKyAqIGxvYWQgaXMgYmVpbmcgcGVy
Zm9ybWVkLgorICogQFdFQktJVF9MT0FEX0ZJTklTSEVEOiBMb2FkIGNvbXBsZXRlZC4gQWxsIHJl
c291cmNlcyBhcmUgZG9uZSBsb2FkaW5nCisgKiBvciB0aGVyZSB3YXMgYW4gZXJyb3IgZHVyaW5n
IHRoZSBsb2FkIG9wZXJhdGlvbi4KKyAqLwordHlwZWRlZiBlbnVtIHsKKyAgICBXRUJLSVRfTE9B
RF9QUk9WSVNJT05BTCwKKyAgICBXRUJLSVRfTE9BRF9SRURJUkVDVEVELAorICAgIFdFQktJVF9M
T0FEX0NPTU1JVFRFRCwKKyAgICBXRUJLSVRfTE9BRF9GSU5JU0hFRAorfSBXZWJLaXRMb2FkU3Rh
dHVzOworCiBzdHJ1Y3QgX1dlYktpdFdlYlZpZXcgewogICAgIFdlYktpdFdlYlZpZXdCYXNlIHBh
cmVudDsKIApAQCAtNTcsMTkgKzgwLDI2IEBAIHN0cnVjdCBfV2ViS2l0V2ViVmlldyB7CiBzdHJ1
Y3QgX1dlYktpdFdlYlZpZXdDbGFzcyB7CiAgICAgV2ViS2l0V2ViVmlld0Jhc2VDbGFzcyBwYXJl
bnQ7CiAKLSAgICBHdGtXaWRnZXQgKigqIGNyZWF0ZSkgICAgICAgICAoV2ViS2l0V2ViVmlldyAq
d2ViX3ZpZXcpOwotICAgIHZvaWQgICAgICAgKCogcmVhZHlfdG9fc2hvdykgIChXZWJLaXRXZWJW
aWV3ICp3ZWJfdmlldyk7Ci0gICAgdm9pZCAgICAgICAoKiBjbG9zZSkgICAgICAgICAgKFdlYktp
dFdlYlZpZXcgKndlYl92aWV3KTsKLQotICAgIGdib29sZWFuICAgKCogc2NyaXB0X2FsZXJ0KSAg
IChXZWJLaXRXZWJWaWV3ICp3ZWJfdmlldywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3QgZ2NoYXIgICAqbWVzc2FnZSk7Ci0gICAgZ2Jvb2xlYW4gICAoKiBzY3JpcHRf
Y29uZmlybSkgKFdlYktpdFdlYlZpZXcgKndlYl92aWV3LAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCBnY2hhciAgICptZXNzYWdlLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBnYm9vbGVhbiAgICAgICpjb25maXJtZWQpOwotICAgIGdib29sZWFu
ICAgKCogc2NyaXB0X3Byb21wdCkgIChXZWJLaXRXZWJWaWV3ICp3ZWJfdmlldywKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2NoYXIgICAqbWVzc2FnZSwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2NoYXIgICAqZGVmYXVsdF90ZXh0
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnY2hhciAgICAgICAgKip0ZXh0
KTsKKyAgICB2b2lkICAgICAgICgqIGxvYWRfc3RhdHVzX2NoYW5nZWQpIChXZWJLaXRXZWJWaWV3
ICAgKndlYl92aWV3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdl
YktpdExvYWRTdGF0dXMgc3RhdHVzKTsKKyAgICBnYm9vbGVhbiAgICgqIGxvYWRfZmFpbGVkKSAg
ICAgICAgIChXZWJLaXRXZWJWaWV3ICAgKndlYl92aWV3LAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFdlYktpdExvYWRTdGF0dXMgc3RhdHVzLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdjaGFyICAgICAqZmFpbGluZ191cmks
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0Vycm9yICAgICAgICAg
ICplcnJvcik7CisKKyAgICBHdGtXaWRnZXQgKigqIGNyZWF0ZSkgICAgICAgICAgICAgIChXZWJL
aXRXZWJWaWV3ICAgKndlYl92aWV3KTsKKyAgICB2b2lkICAgICAgICgqIHJlYWR5X3RvX3Nob3cp
ICAgICAgIChXZWJLaXRXZWJWaWV3ICAgKndlYl92aWV3KTsKKyAgICB2b2lkICAgICAgICgqIGNs
b3NlKSAgICAgICAgICAgICAgIChXZWJLaXRXZWJWaWV3ICAgKndlYl92aWV3KTsKKworICAgIGdi
b29sZWFuICAgKCogc2NyaXB0X2FsZXJ0KSAgICAgICAgKFdlYktpdFdlYlZpZXcgICAqd2ViX3Zp
ZXcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2NoYXIg
ICAgICptZXNzYWdlKTsKKyAgICBnYm9vbGVhbiAgICgqIHNjcmlwdF9jb25maXJtKSAgICAgIChX
ZWJLaXRXZWJWaWV3ICAgKndlYl92aWV3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IGdjaGFyICAgICAqbWVzc2FnZSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBnYm9vbGVhbiAgICAgICAgKmNvbmZpcm1lZCk7CisgICAgZ2Jv
b2xlYW4gICAoKiBzY3JpcHRfcHJvbXB0KSAgICAgICAoV2ViS2l0V2ViVmlldyAgICp3ZWJfdmll
dywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnY2hhciAg
ICAgKm1lc3NhZ2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29u
c3QgZ2NoYXIgICAgICpkZWZhdWx0X3RleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgZ2NoYXIgICAgICAgICAgKip0ZXh0KTsKIAogICAgIC8qIFBhZGRpbmcgZm9y
IGZ1dHVyZSBleHBhbnNpb24gKi8KICAgICB2b2lkICgqX3dlYmtpdF9yZXNlcnZlZDApICh2b2lk
KTsKQEAgLTk0LDEzICsxMjQsNiBAQCB3ZWJraXRfd2ViX3ZpZXdfbmV3X3dpdGhfY29udGV4dCAg
ICAgICAgICAgICAoV2ViS2l0V2ViQ29udGV4dCAgICAgICAgICAqY29udGV4dAogV0VCS0lUX0FQ
SSBXZWJLaXRXZWJDb250ZXh0ICoKIHdlYmtpdF93ZWJfdmlld19nZXRfY29udGV4dCAgICAgICAg
ICAgICAgICAgIChXZWJLaXRXZWJWaWV3ICAgICAgICAgICAgICp3ZWJfdmlldyk7CiAKLVdFQktJ
VF9BUEkgV2ViS2l0V2ViTG9hZGVyQ2xpZW50ICoKLXdlYmtpdF93ZWJfdmlld19nZXRfbG9hZGVy
X2NsaWVudCAgICAgICAgICAgIChXZWJLaXRXZWJWaWV3ICAgICAgICAgICAgICp3ZWJfdmlldyk7
Ci0KLVdFQktJVF9BUEkgdm9pZAotd2Via2l0X3dlYl92aWV3X3NldF9sb2FkZXJfY2xpZW50ICAg
ICAgICAgICAgKFdlYktpdFdlYlZpZXcgICAgICAgICAgICAgKndlYl92aWV3LAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdlYktpdFdlYkxvYWRlckNsaWVu
dCAgICAgKmxvYWRlcl9jbGllbnQpOwotCiBXRUJLSVRfQVBJIHZvaWQKIHdlYmtpdF93ZWJfdmll
d19sb2FkX3VyaSAgICAgICAgICAgICAgICAgICAgIChXZWJLaXRXZWJWaWV3ICAgICAgICAgICAg
ICp3ZWJfdmlldywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCBnY2hhciAgICAgICAgICAgICAgICp1cmkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlld1ByaXZhdGUuaCBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdQcml2YXRlLmgKaW5kZXggZTgx
MDc2MS4uMzY4MTI1ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9n
dGsvV2ViS2l0V2ViVmlld1ByaXZhdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL2d0ay9XZWJLaXRXZWJWaWV3UHJpdmF0ZS5oCkBAIC0zMiw2ICszMiw4IEBACiAjaW5jbHVk
ZSA8V2ViS2l0Mi9XZWJLaXQyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgogCit2
b2lkIHdlYmtpdFdlYlZpZXdMb2FkU3RhdHVzQ2hhbmdlZChXZWJLaXRXZWJWaWV3KiwgV2ViS2l0
TG9hZFN0YXR1cyk7Cit2b2lkIHdlYmtpdFdlYlZpZXdMb2FkRmFpbGVkKFdlYktpdFdlYlZpZXcq
LCBXZWJLaXRMb2FkU3RhdHVzLCBjb25zdCBjaGFyKiBmYWlsaW5nVVJJLCBHRXJyb3IqKTsKIHZv
aWQgd2Via2l0V2ViVmlld1NldEVzdGltYXRlZExvYWRQcm9ncmVzcyhXZWJLaXRXZWJWaWV3Kiwg
ZG91YmxlIGVzdGltYXRlZExvYWRQcm9ncmVzcyk7CiB2b2lkIHdlYmtpdFdlYlZpZXdTZXRUaXRs
ZShXZWJLaXRXZWJWaWV3KiwgY29uc3QgQ1N0cmluZyYpOwogdm9pZCB3ZWJraXRXZWJWaWV3VXBk
YXRlVVJJKFdlYktpdFdlYlZpZXcqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvZ3RrL2RvY3Mvd2Via2l0Mmd0ay1kb2NzLnNnbWwgYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL2d0ay9kb2NzL3dlYmtpdDJndGstZG9jcy5zZ21sCmluZGV4IDU2NzZlMzMu
LjI2MTFlOGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL2Rv
Y3Mvd2Via2l0Mmd0ay1kb2NzLnNnbWwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9ndGsvZG9jcy93ZWJraXQyZ3RrLWRvY3Muc2dtbApAQCAtMTQsNyArMTQsNiBAQAogICAgIDx4
aTppbmNsdWRlIGhyZWY9InhtbC9XZWJLaXRXZWJDb250ZXh0LnhtbCIvPgogICAgIDx4aTppbmNs
dWRlIGhyZWY9InhtbC9XZWJLaXRXZWJWaWV3LnhtbCIvPgogICAgIDx4aTppbmNsdWRlIGhyZWY9
InhtbC9XZWJLaXRXZWJWaWV3QmFzZS54bWwiLz4KLSAgICA8eGk6aW5jbHVkZSBocmVmPSJ4bWwv
V2ViS2l0V2ViTG9hZGVyQ2xpZW50LnhtbCIvPgogICAgIDx4aTppbmNsdWRlIGhyZWY9InhtbC9X
ZWJLaXRCYWNrRm9yd2FyZExpc3QueG1sIi8+CiAgICAgPHhpOmluY2x1ZGUgaHJlZj0ieG1sL1dl
YktpdEJhY2tGb3J3YXJkTGlzdEl0ZW0ueG1sIi8+CiAgICAgPHhpOmluY2x1ZGUgaHJlZj0ieG1s
L1dlYktpdFNldHRpbmdzLnhtbCIvPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9ndGsvZG9jcy93ZWJraXQyZ3RrLXNlY3Rpb25zLnR4dCBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvZ3RrL2RvY3Mvd2Via2l0Mmd0ay1zZWN0aW9ucy50eHQKaW5kZXggMDFl
MjM3My4uMTA2NTY1MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9n
dGsvZG9jcy93ZWJraXQyZ3RrLXNlY3Rpb25zLnR4dAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL2d0ay9kb2NzL3dlYmtpdDJndGstc2VjdGlvbnMudHh0CkBAIC00NiwxMSArNDYs
MTAgQEAgd2Via2l0X3dlYl9jb250ZXh0X2dldF90eXBlCiA8RklMRT5XZWJLaXRXZWJWaWV3PC9G
SUxFPgogPFRJVExFPldlYktpdFdlYlZpZXc8L1RJVExFPgogV2ViS2l0V2ViVmlldworV2ViS2l0
TG9hZFN0YXR1cwogd2Via2l0X3dlYl92aWV3X25ldwogd2Via2l0X3dlYl92aWV3X25ld193aXRo
X2NvbnRleHQKIHdlYmtpdF93ZWJfdmlld19nZXRfY29udGV4dAotd2Via2l0X3dlYl92aWV3X2dl
dF9sb2FkZXJfY2xpZW50Ci13ZWJraXRfd2ViX3ZpZXdfc2V0X2xvYWRlcl9jbGllbnQKIHdlYmtp
dF93ZWJfdmlld19sb2FkX3VyaQogd2Via2l0X3dlYl92aWV3X2xvYWRfaHRtbAogd2Via2l0X3dl
Yl92aWV3X2xvYWRfcGxhaW5fdGV4dApAQCAtODgsMjQgKzg3LDYgQEAgV2ViS2l0V2ViVmlld1By
aXZhdGUKIDwvU0VDVElPTj4KIAogPFNFQ1RJT04+Ci08RklMRT5XZWJLaXRXZWJMb2FkZXJDbGll
bnQ8L0ZJTEU+Ci08VElUTEU+V2ViS2l0V2ViTG9hZGVyQ2xpZW50PC9USVRMRT4KLVdlYktpdFdl
YkxvYWRlckNsaWVudAotCi08U1VCU0VDVElPTiBTdGFuZGFyZD4KLVdlYktpdFdlYkxvYWRlckNs
aWVudENsYXNzCi1XRUJLSVRfV0VCX0xPQURFUl9DTElFTlQKLVdFQktJVF9JU19XRUJfTE9BREVS
X0NMSUVOVAotV0VCS0lUX1RZUEVfV0VCX0xPQURFUl9DTElFTlQKLVdFQktJVF9XRUJfTE9BREVS
X0NMSUVOVF9DTEFTUwotV0VCS0lUX0lTX1dFQl9MT0FERVJfQ0xJRU5UX0NMQVNTCi1XRUJLSVRf
V0VCX0xPQURFUl9DTElFTlRfR0VUX0NMQVNTCi0KLTxTVUJTRUNUSU9OIFByaXZhdGU+Ci13ZWJr
aXRfd2ViX2xvYWRlcl9jbGllbnRfZ2V0X3R5cGUKLTwvU0VDVElPTj4KLQotPFNFQ1RJT04+CiA8
RklMRT5XZWJLaXRCYWNrRm9yd2FyZExpc3Q8L0ZJTEU+CiBXZWJLaXRCYWNrRm9yd2FyZExpc3QK
IHdlYmtpdF9iYWNrX2ZvcndhcmRfbGlzdF9nZXRfbGVuZ3RoCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9kb2NzL3dlYmtpdDJndGsudHlwZXMgYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9kb2NzL3dlYmtpdDJndGsudHlwZXMKaW5kZXggYTE5
NmI5Yy4uMGQ0NTRmMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9n
dGsvZG9jcy93ZWJraXQyZ3RrLnR5cGVzCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvZ3RrL2RvY3Mvd2Via2l0Mmd0ay50eXBlcwpAQCAtMSw3ICsxLDYgQEAKICNpbmNsdWRlIDx3
ZWJraXQyL3dlYmtpdDIuaD4KIHdlYmtpdF93ZWJfdmlld19nZXRfdHlwZQogd2Via2l0X3dlYl92
aWV3X2Jhc2VfZ2V0X3R5cGUKLXdlYmtpdF93ZWJfbG9hZGVyX2NsaWVudF9nZXRfdHlwZQogd2Vi
a2l0X3dlYl9jb250ZXh0X2dldF90eXBlCiB3ZWJraXRfYmFja19mb3J3YXJkX2xpc3RfZ2V0X3R5
cGUKIHdlYmtpdF9iYWNrX2ZvcndhcmRfbGlzdF9pdGVtX2dldF90eXBlCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay90ZXN0cy9Mb2FkVHJhY2tpbmdUZXN0LmNw
cCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL3Rlc3RzL0xvYWRUcmFja2luZ1Rl
c3QuY3BwCmluZGV4IGE4YzU1OTAuLjc4YWU0MTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvZ3RrL3Rlc3RzL0xvYWRUcmFja2luZ1Rlc3QuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL3Rlc3RzL0xvYWRUcmFja2luZ1Rlc3QuY3BwCkBA
IC0yMiw1MCArMjIsNTEgQEAKIAogI2luY2x1ZGUgPHdlYmtpdDIvd2Via2l0Mi5oPgogCi1zdGF0
aWMgZ2Jvb2xlYW4gcHJvdmlzaW9uYWxMb2FkU3RhcnRlZENhbGxiYWNrKFdlYktpdFdlYkxvYWRl
ckNsaWVudCogY2xpZW50LCBXZWJLaXRXZWJWaWV3KiwgTG9hZFRyYWNraW5nVGVzdCogdGVzdCkK
LXsKLSAgICBnX2Fzc2VydF9jbXBzdHIodGVzdC0+bV9hY3RpdmVVUkkuZGF0YSgpLCA9PSwgd2Vi
a2l0X3dlYl92aWV3X2dldF91cmkodGVzdC0+bV93ZWJWaWV3KSk7Ci0gICAgdGVzdC0+cHJvdmlz
aW9uYWxMb2FkU3RhcnRlZChjbGllbnQpOwotICAgIHJldHVybiBUUlVFOwotfQotCi1zdGF0aWMg
Z2Jvb2xlYW4gcHJvdmlzaW9uYWxMb2FkUmVjZWl2ZWRTZXJ2ZXJSZWRpcmVjdENhbGxiYWNrKFdl
YktpdFdlYkxvYWRlckNsaWVudCogY2xpZW50LCBXZWJLaXRXZWJWaWV3KiwgTG9hZFRyYWNraW5n
VGVzdCogdGVzdCkKLXsKLSAgICB0ZXN0LT5tX2FjdGl2ZVVSSSA9IHdlYmtpdF93ZWJfdmlld19n
ZXRfdXJpKHRlc3QtPm1fd2ViVmlldyk7Ci0gICAgaWYgKCF0ZXN0LT5tX3JlZGlyZWN0VVJJLmlz
TnVsbCgpKQotICAgICAgICBnX2Fzc2VydF9jbXBzdHIodGVzdC0+bV9yZWRpcmVjdFVSSS5kYXRh
KCksID09LCB0ZXN0LT5tX2FjdGl2ZVVSSS5kYXRhKCkpOwotICAgIHRlc3QtPnByb3Zpc2lvbmFs
TG9hZFJlY2VpdmVkU2VydmVyUmVkaXJlY3QoY2xpZW50KTsKLSAgICByZXR1cm4gVFJVRTsKLX0K
LQotc3RhdGljIGdib29sZWFuIHByb3Zpc2lvbmFsTG9hZEZhaWxlZENhbGxiYWNrKFdlYktpdFdl
YkxvYWRlckNsaWVudCogY2xpZW50LCBXZWJLaXRXZWJWaWV3KiwgY29uc3QgZ2NoYXIqIGZhaWxp
bmdVUkksIEdFcnJvciogZXJyb3IsIExvYWRUcmFja2luZ1Rlc3QqIHRlc3QpCi17Ci0gICAgZ19h
c3NlcnRfY21wc3RyKHRlc3QtPm1fYWN0aXZlVVJJLmRhdGEoKSwgPT0sIHdlYmtpdF93ZWJfdmll
d19nZXRfdXJpKHRlc3QtPm1fd2ViVmlldykpOwotICAgIGdfYXNzZXJ0KGVycm9yKTsKLSAgICB0
ZXN0LT5wcm92aXNpb25hbExvYWRGYWlsZWQoY2xpZW50LCBmYWlsaW5nVVJJLCBlcnJvcik7Ci0g
ICAgcmV0dXJuIFRSVUU7Ci19Ci0KLXN0YXRpYyBnYm9vbGVhbiBsb2FkQ29tbWl0dGVkQ2FsbGJh
Y2soV2ViS2l0V2ViTG9hZGVyQ2xpZW50KiBjbGllbnQsIFdlYktpdFdlYlZpZXcqLCBMb2FkVHJh
Y2tpbmdUZXN0KiB0ZXN0KQotewotICAgIGdfYXNzZXJ0X2NtcHN0cih0ZXN0LT5tX2FjdGl2ZVVS
SS5kYXRhKCksID09LCB3ZWJraXRfd2ViX3ZpZXdfZ2V0X3VyaSh0ZXN0LT5tX3dlYlZpZXcpKTsK
LSAgICB0ZXN0LT5sb2FkQ29tbWl0dGVkKGNsaWVudCk7Ci0gICAgcmV0dXJuIFRSVUU7Ci19Ci0K
LXN0YXRpYyBnYm9vbGVhbiBsb2FkRmluaXNoZWRDYWxsYmFjayhXZWJLaXRXZWJMb2FkZXJDbGll
bnQqIGNsaWVudCwgV2ViS2l0V2ViVmlldyosIExvYWRUcmFja2luZ1Rlc3QqIHRlc3QpCi17Ci0g
ICAgZ19hc3NlcnRfY21wc3RyKHRlc3QtPm1fYWN0aXZlVVJJLmRhdGEoKSwgPT0sIHdlYmtpdF93
ZWJfdmlld19nZXRfdXJpKHRlc3QtPm1fd2ViVmlldykpOwotICAgIHRlc3QtPmxvYWRGaW5pc2hl
ZChjbGllbnQpOwotICAgIHJldHVybiBUUlVFOwotfQotCi1zdGF0aWMgZ2Jvb2xlYW4gbG9hZEZh
aWxlZENhbGxiYWNrKFdlYktpdFdlYkxvYWRlckNsaWVudCogY2xpZW50LCBXZWJLaXRXZWJWaWV3
KiwgY29uc3QgZ2NoYXIqIGZhaWxpbmdVUkksIEdFcnJvciogZXJyb3IsIExvYWRUcmFja2luZ1Rl
c3QqIHRlc3QpCi17Ci0gICAgZ19hc3NlcnRfY21wc3RyKHRlc3QtPm1fYWN0aXZlVVJJLmRhdGEo
KSwgPT0sIHdlYmtpdF93ZWJfdmlld19nZXRfdXJpKHRlc3QtPm1fd2ViVmlldykpOwotICAgIGdf
YXNzZXJ0KGVycm9yKTsKLSAgICB0ZXN0LT5sb2FkRmFpbGVkKGNsaWVudCwgZmFpbGluZ1VSSSwg
ZXJyb3IpOwotICAgIHJldHVybiBUUlVFOworc3RhdGljIHZvaWQgbG9hZFN0YXR1c0NoYW5nZWRD
YWxsYmFjayhXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3LCBXZWJLaXRMb2FkU3RhdHVzIHN0YXR1cywg
TG9hZFRyYWNraW5nVGVzdCogdGVzdCkKK3sKKyAgICBzd2l0Y2ggKHN0YXR1cykgeworICAgIGNh
c2UgV0VCS0lUX0xPQURfUFJPVklTSU9OQUw6CisgICAgICAgIGdfYXNzZXJ0X2NtcHN0cih0ZXN0
LT5tX2FjdGl2ZVVSSS5kYXRhKCksID09LCB3ZWJraXRfd2ViX3ZpZXdfZ2V0X3VyaSh3ZWJWaWV3
KSk7CisgICAgICAgIHRlc3QtPnByb3Zpc2lvbmFsTG9hZFN0YXJ0ZWQoKTsKKyAgICAgICAgYnJl
YWs7CisgICAgY2FzZSBXRUJLSVRfTE9BRF9SRURJUkVDVEVEOgorICAgICAgICB0ZXN0LT5tX2Fj
dGl2ZVVSSSA9IHdlYmtpdF93ZWJfdmlld19nZXRfdXJpKHdlYlZpZXcpOworICAgICAgICBpZiAo
IXRlc3QtPm1fcmVkaXJlY3RVUkkuaXNOdWxsKCkpCisgICAgICAgICAgICBnX2Fzc2VydF9jbXBz
dHIodGVzdC0+bV9yZWRpcmVjdFVSSS5kYXRhKCksID09LCB0ZXN0LT5tX2FjdGl2ZVVSSS5kYXRh
KCkpOworICAgICAgICB0ZXN0LT5wcm92aXNpb25hbExvYWRSZWNlaXZlZFNlcnZlclJlZGlyZWN0
KCk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgV0VCS0lUX0xPQURfQ09NTUlUVEVEOgorICAg
ICAgICBnX2Fzc2VydF9jbXBzdHIodGVzdC0+bV9hY3RpdmVVUkkuZGF0YSgpLCA9PSwgd2Via2l0
X3dlYl92aWV3X2dldF91cmkod2ViVmlldykpOworICAgICAgICB0ZXN0LT5sb2FkQ29tbWl0dGVk
KCk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgV0VCS0lUX0xPQURfRklOSVNIRUQ6CisgICAg
ICAgIGlmICghdGVzdC0+bV9sb2FkRmFpbGVkKQorICAgICAgICAgICAgZ19hc3NlcnRfY21wc3Ry
KHRlc3QtPm1fYWN0aXZlVVJJLmRhdGEoKSwgPT0sIHdlYmtpdF93ZWJfdmlld19nZXRfdXJpKHdl
YlZpZXcpKTsKKyAgICAgICAgdGVzdC0+bG9hZEZpbmlzaGVkKCk7CisgICAgICAgIGJyZWFrOwor
ICAgIGRlZmF1bHQ6CisgICAgICAgIGdfYXNzZXJ0X25vdF9yZWFjaGVkKCk7CisgICAgfQorfQor
CitzdGF0aWMgdm9pZCBsb2FkRmFpbGVkQ2FsbGJhY2soV2ViS2l0V2ViVmlldyogd2ViVmlldywg
V2ViS2l0TG9hZFN0YXR1cyBzdGF0dXMsIGNvbnN0IGNoYXIqIGZhaWxpbmdVUkksIEdFcnJvciog
ZXJyb3IsIExvYWRUcmFja2luZ1Rlc3QqIHRlc3QpCit7CisgICAgdGVzdC0+bV9sb2FkRmFpbGVk
ID0gdHJ1ZTsKKworICAgIHN3aXRjaCAoc3RhdHVzKSB7CisgICAgY2FzZSBXRUJLSVRfTE9BRF9Q
Uk9WSVNJT05BTDoKKyAgICAgICAgZ19hc3NlcnRfY21wc3RyKHRlc3QtPm1fYWN0aXZlVVJJLmRh
dGEoKSwgPT0sIHdlYmtpdF93ZWJfdmlld19nZXRfdXJpKHdlYlZpZXcpKTsKKyAgICAgICAgZ19h
c3NlcnQoZXJyb3IpOworICAgICAgICB0ZXN0LT5wcm92aXNpb25hbExvYWRGYWlsZWQoZmFpbGlu
Z1VSSSwgZXJyb3IpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFdFQktJVF9MT0FEX0NPTU1J
VFRFRDoKKyAgICAgICAgZ19hc3NlcnRfY21wc3RyKHRlc3QtPm1fYWN0aXZlVVJJLmRhdGEoKSwg
PT0sIHdlYmtpdF93ZWJfdmlld19nZXRfdXJpKHdlYlZpZXcpKTsKKyAgICAgICAgZ19hc3NlcnQo
ZXJyb3IpOworICAgICAgICB0ZXN0LT5sb2FkRmFpbGVkKGZhaWxpbmdVUkksIGVycm9yKTsKKyAg
ICAgICAgYnJlYWs7CisgICAgZGVmYXVsdDoKKyAgICAgICAgZ19hc3NlcnRfbm90X3JlYWNoZWQo
KTsKKyAgICB9CiB9CiAKIHN0YXRpYyB2b2lkIGVzdGltYXRlZFByb2dyZXNzQ2hhbmdlZENhbGxi
YWNrKEdPYmplY3QqLCBHUGFyYW1TcGVjKiwgTG9hZFRyYWNraW5nVGVzdCogdGVzdCkKQEAgLTc1
LDE0ICs3NiwxMCBAQCBzdGF0aWMgdm9pZCBlc3RpbWF0ZWRQcm9ncmVzc0NoYW5nZWRDYWxsYmFj
ayhHT2JqZWN0KiwgR1BhcmFtU3BlYyosIExvYWRUcmFja2luZwogCiBMb2FkVHJhY2tpbmdUZXN0
OjpMb2FkVHJhY2tpbmdUZXN0KCkKICAgICA6IG1fcnVuTG9hZFVudGlsQ29tcGxldGlvbihmYWxz
ZSkKKyAgICAsIG1fbG9hZEZhaWxlZChmYWxzZSkKIHsKLSAgICBXZWJLaXRXZWJMb2FkZXJDbGll
bnQqIGNsaWVudCA9IHdlYmtpdF93ZWJfdmlld19nZXRfbG9hZGVyX2NsaWVudChtX3dlYlZpZXcp
OwotICAgIGdfc2lnbmFsX2Nvbm5lY3QoY2xpZW50LCAicHJvdmlzaW9uYWwtbG9hZC1zdGFydGVk
IiwgR19DQUxMQkFDSyhwcm92aXNpb25hbExvYWRTdGFydGVkQ2FsbGJhY2spLCB0aGlzKTsKLSAg
ICBnX3NpZ25hbF9jb25uZWN0KGNsaWVudCwgInByb3Zpc2lvbmFsLWxvYWQtcmVjZWl2ZWQtc2Vy
dmVyLXJlZGlyZWN0IiwgR19DQUxMQkFDSyhwcm92aXNpb25hbExvYWRSZWNlaXZlZFNlcnZlclJl
ZGlyZWN0Q2FsbGJhY2spLCB0aGlzKTsKLSAgICBnX3NpZ25hbF9jb25uZWN0KGNsaWVudCwgInBy
b3Zpc2lvbmFsLWxvYWQtZmFpbGVkIiwgR19DQUxMQkFDSyhwcm92aXNpb25hbExvYWRGYWlsZWRD
YWxsYmFjayksIHRoaXMpOwotICAgIGdfc2lnbmFsX2Nvbm5lY3QoY2xpZW50LCAibG9hZC1jb21t
aXR0ZWQiLCBHX0NBTExCQUNLKGxvYWRDb21taXR0ZWRDYWxsYmFjayksIHRoaXMpOwotICAgIGdf
c2lnbmFsX2Nvbm5lY3QoY2xpZW50LCAibG9hZC1maW5pc2hlZCIsIEdfQ0FMTEJBQ0sobG9hZEZp
bmlzaGVkQ2FsbGJhY2spLCB0aGlzKTsKLSAgICBnX3NpZ25hbF9jb25uZWN0KGNsaWVudCwgImxv
YWQtZmFpbGVkIiwgR19DQUxMQkFDSyhsb2FkRmFpbGVkQ2FsbGJhY2spLCB0aGlzKTsKKyAgICBn
X3NpZ25hbF9jb25uZWN0KG1fd2ViVmlldywgImxvYWQtc3RhdHVzLWNoYW5nZWQiLCBHX0NBTExC
QUNLKGxvYWRTdGF0dXNDaGFuZ2VkQ2FsbGJhY2spLCB0aGlzKTsKKyAgICBnX3NpZ25hbF9jb25u
ZWN0KG1fd2ViVmlldywgImxvYWQtZmFpbGVkIiwgR19DQUxMQkFDSyhsb2FkRmFpbGVkQ2FsbGJh
Y2spLCB0aGlzKTsKICAgICBnX3NpZ25hbF9jb25uZWN0KG1fd2ViVmlldywgIm5vdGlmeTo6ZXN0
aW1hdGVkLWxvYWQtcHJvZ3Jlc3MiLCBHX0NBTExCQUNLKGVzdGltYXRlZFByb2dyZXNzQ2hhbmdl
ZENhbGxiYWNrKSwgdGhpcyk7CiAKICAgICBnX2Fzc2VydCghd2Via2l0X3dlYl92aWV3X2dldF91
cmkobV93ZWJWaWV3KSk7CkBAIC05MCw4ICs4Nyw2IEBAIExvYWRUcmFja2luZ1Rlc3Q6OkxvYWRU
cmFja2luZ1Rlc3QoKQogCiBMb2FkVHJhY2tpbmdUZXN0Ojp+TG9hZFRyYWNraW5nVGVzdCgpCiB7
Ci0gICAgV2ViS2l0V2ViTG9hZGVyQ2xpZW50KiBjbGllbnQgPSB3ZWJraXRfd2ViX3ZpZXdfZ2V0
X2xvYWRlcl9jbGllbnQobV93ZWJWaWV3KTsKLSAgICBnX3NpZ25hbF9oYW5kbGVyc19kaXNjb25u
ZWN0X21hdGNoZWQoY2xpZW50LCBHX1NJR05BTF9NQVRDSF9EQVRBLCAwLCAwLCAwLCAwLCB0aGlz
KTsKICAgICBnX3NpZ25hbF9oYW5kbGVyc19kaXNjb25uZWN0X21hdGNoZWQobV93ZWJWaWV3LCBH
X1NJR05BTF9NQVRDSF9EQVRBLCAwLCAwLCAwLCAwLCB0aGlzKTsKIH0KIApAQCAtMTAyLDQwICs5
NywzOCBAQCB2b2lkIExvYWRUcmFja2luZ1Rlc3Q6OndhaXRVbnRpbExvYWRGaW5pc2hlZCgpCiAg
ICAgZ19tYWluX2xvb3BfcnVuKG1fbWFpbkxvb3ApOwogfQogCi12b2lkIExvYWRUcmFja2luZ1Rl
c3Q6OnByb3Zpc2lvbmFsTG9hZFN0YXJ0ZWQoV2ViS2l0V2ViTG9hZGVyQ2xpZW50KiBjbGllbnQp
Cit2b2lkIExvYWRUcmFja2luZ1Rlc3Q6OnByb3Zpc2lvbmFsTG9hZFN0YXJ0ZWQoKQogewogICAg
IG1fbG9hZEV2ZW50cy5hcHBlbmQoUHJvdmlzaW9uYWxMb2FkU3RhcnRlZCk7CiB9CiAKLXZvaWQg
TG9hZFRyYWNraW5nVGVzdDo6cHJvdmlzaW9uYWxMb2FkUmVjZWl2ZWRTZXJ2ZXJSZWRpcmVjdChX
ZWJLaXRXZWJMb2FkZXJDbGllbnQqIGNsaWVudCkKK3ZvaWQgTG9hZFRyYWNraW5nVGVzdDo6cHJv
dmlzaW9uYWxMb2FkUmVjZWl2ZWRTZXJ2ZXJSZWRpcmVjdCgpCiB7CiAgICAgbV9sb2FkRXZlbnRz
LmFwcGVuZChQcm92aXNpb25hbExvYWRSZWNlaXZlZFNlcnZlclJlZGlyZWN0KTsKIH0KIAotdm9p
ZCBMb2FkVHJhY2tpbmdUZXN0Ojpwcm92aXNpb25hbExvYWRGYWlsZWQoV2ViS2l0V2ViTG9hZGVy
Q2xpZW50KiBjbGllbnQsIGNvbnN0IGdjaGFyKiBmYWlsaW5nVVJJLCBHRXJyb3IqIGVycm9yKQor
dm9pZCBMb2FkVHJhY2tpbmdUZXN0Ojpwcm92aXNpb25hbExvYWRGYWlsZWQoY29uc3QgZ2NoYXIq
IGZhaWxpbmdVUkksIEdFcnJvciogZXJyb3IpCiB7CiAgICAgbV9sb2FkRXZlbnRzLmFwcGVuZChQ
cm92aXNpb25hbExvYWRGYWlsZWQpOwogICAgIGlmIChtX3J1bkxvYWRVbnRpbENvbXBsZXRpb24p
CiAgICAgICAgIGdfbWFpbl9sb29wX3F1aXQobV9tYWluTG9vcCk7CiB9CiAKLXZvaWQgTG9hZFRy
YWNraW5nVGVzdDo6bG9hZENvbW1pdHRlZChXZWJLaXRXZWJMb2FkZXJDbGllbnQqIGNsaWVudCkK
K3ZvaWQgTG9hZFRyYWNraW5nVGVzdDo6bG9hZENvbW1pdHRlZCgpCiB7CiAgICAgbV9sb2FkRXZl
bnRzLmFwcGVuZChMb2FkQ29tbWl0dGVkKTsKIH0KIAotdm9pZCBMb2FkVHJhY2tpbmdUZXN0Ojps
b2FkRmluaXNoZWQoV2ViS2l0V2ViTG9hZGVyQ2xpZW50KiBjbGllbnQpCit2b2lkIExvYWRUcmFj
a2luZ1Rlc3Q6OmxvYWRGaW5pc2hlZCgpCiB7CiAgICAgbV9sb2FkRXZlbnRzLmFwcGVuZChMb2Fk
RmluaXNoZWQpOwogICAgIGlmIChtX3J1bkxvYWRVbnRpbENvbXBsZXRpb24pCiAgICAgICAgIGdf
bWFpbl9sb29wX3F1aXQobV9tYWluTG9vcCk7CiB9CiAKLXZvaWQgTG9hZFRyYWNraW5nVGVzdDo6
bG9hZEZhaWxlZChXZWJLaXRXZWJMb2FkZXJDbGllbnQqIGNsaWVudCwgY29uc3QgZ2NoYXIqIGZh
aWxpbmdVUkksIEdFcnJvciogZXJyb3IpCit2b2lkIExvYWRUcmFja2luZ1Rlc3Q6OmxvYWRGYWls
ZWQoY29uc3QgZ2NoYXIqIGZhaWxpbmdVUkksIEdFcnJvciogZXJyb3IpCiB7CiAgICAgbV9sb2Fk
RXZlbnRzLmFwcGVuZChMb2FkRmFpbGVkKTsKLSAgICBpZiAobV9ydW5Mb2FkVW50aWxDb21wbGV0
aW9uKQotICAgICAgICBnX21haW5fbG9vcF9xdWl0KG1fbWFpbkxvb3ApOwogfQogCiB2b2lkIExv
YWRUcmFja2luZ1Rlc3Q6OmVzdGltYXRlZFByb2dyZXNzQ2hhbmdlZCgpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay90ZXN0cy9Mb2FkVHJhY2tpbmdUZXN0Lmgg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay90ZXN0cy9Mb2FkVHJhY2tpbmdUZXN0
LmgKaW5kZXggNWVhYmU3OS4uMzA4YWE5YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9ndGsvdGVzdHMvTG9hZFRyYWNraW5nVGVzdC5oCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL3Rlc3RzL0xvYWRUcmFja2luZ1Rlc3QuaApAQCAtMzEsMTIg
KzMxLDEyIEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5Mb2FkVHJhY2tpbmdUZXN0KCk7CiAgICAg
dm9pZCB3YWl0VW50aWxMb2FkRmluaXNoZWQoKTsKIAotICAgIHZpcnR1YWwgdm9pZCBwcm92aXNp
b25hbExvYWRTdGFydGVkKFdlYktpdFdlYkxvYWRlckNsaWVudCopOwotICAgIHZpcnR1YWwgdm9p
ZCBwcm92aXNpb25hbExvYWRSZWNlaXZlZFNlcnZlclJlZGlyZWN0KFdlYktpdFdlYkxvYWRlckNs
aWVudCopOwotICAgIHZpcnR1YWwgdm9pZCBwcm92aXNpb25hbExvYWRGYWlsZWQoV2ViS2l0V2Vi
TG9hZGVyQ2xpZW50KiwgY29uc3QgZ2NoYXIqIGZhaWxpbmdVUkksIEdFcnJvciopOwotICAgIHZp
cnR1YWwgdm9pZCBsb2FkQ29tbWl0dGVkKFdlYktpdFdlYkxvYWRlckNsaWVudCopOwotICAgIHZp
cnR1YWwgdm9pZCBsb2FkRmluaXNoZWQoV2ViS2l0V2ViTG9hZGVyQ2xpZW50Kik7Ci0gICAgdmly
dHVhbCB2b2lkIGxvYWRGYWlsZWQoV2ViS2l0V2ViTG9hZGVyQ2xpZW50KiwgY29uc3QgY2hhciog
ZmFpbGluZ1VSSSwgR0Vycm9yKik7CisgICAgdmlydHVhbCB2b2lkIHByb3Zpc2lvbmFsTG9hZFN0
YXJ0ZWQoKTsKKyAgICB2aXJ0dWFsIHZvaWQgcHJvdmlzaW9uYWxMb2FkUmVjZWl2ZWRTZXJ2ZXJS
ZWRpcmVjdCgpOworICAgIHZpcnR1YWwgdm9pZCBwcm92aXNpb25hbExvYWRGYWlsZWQoY29uc3Qg
Z2NoYXIqIGZhaWxpbmdVUkksIEdFcnJvciopOworICAgIHZpcnR1YWwgdm9pZCBsb2FkQ29tbWl0
dGVkKCk7CisgICAgdmlydHVhbCB2b2lkIGxvYWRGaW5pc2hlZCgpOworICAgIHZpcnR1YWwgdm9p
ZCBsb2FkRmFpbGVkKGNvbnN0IGNoYXIqIGZhaWxpbmdVUkksIEdFcnJvciopOwogICAgIHZpcnR1
YWwgdm9pZCBlc3RpbWF0ZWRQcm9ncmVzc0NoYW5nZWQoKTsKIAogICAgIHZvaWQgc2V0UmVkaXJl
Y3RVUkkoY29uc3QgY2hhciogdXJpKSB7IG1fcmVkaXJlY3RVUkkgPSB1cmk7IH0KQEAgLTUwLDYg
KzUwLDcgQEAgcHVibGljOgogICAgICAgICBMb2FkRmFpbGVkCiAgICAgfTsKICAgICBib29sIG1f
cnVuTG9hZFVudGlsQ29tcGxldGlvbjsKKyAgICBib29sIG1fbG9hZEZhaWxlZDsKICAgICBWZWN0
b3I8TG9hZEV2ZW50cz4gbV9sb2FkRXZlbnRzOwogICAgIGZsb2F0IG1fZXN0aW1hdGVkUHJvZ3Jl
c3M7CiAgICAgQ1N0cmluZyBtX3JlZGlyZWN0VVJJOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9ndGsvdGVzdHMvVGVzdFdlYktpdFdlYkxvYWRlckNsaWVudC5jcHAg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay90ZXN0cy9UZXN0V2ViS2l0V2ViTG9h
ZGVyQ2xpZW50LmNwcAppbmRleCAwMjdmZjA4Li4wOWZiYTQzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay90ZXN0cy9UZXN0V2ViS2l0V2ViTG9hZGVyQ2xpZW50
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay90ZXN0cy9UZXN0V2Vi
S2l0V2ViTG9hZGVyQ2xpZW50LmNwcApAQCAtNDksOSArNDksMTAgQEAgc3RhdGljIHZvaWQgdGVz
dExvYWRpbmdFcnJvcihMb2FkVHJhY2tpbmdUZXN0KiB0ZXN0LCBnY29uc3Rwb2ludGVyKQogICAg
IHRlc3QtPndhaXRVbnRpbExvYWRGaW5pc2hlZCgpOwogCiAgICAgVmVjdG9yPExvYWRUcmFja2lu
Z1Rlc3Q6OkxvYWRFdmVudHM+JiBldmVudHMgPSB0ZXN0LT5tX2xvYWRFdmVudHM7Ci0gICAgZ19h
c3NlcnRfY21waW50KGV2ZW50cy5zaXplKCksID09LCAyKTsKKyAgICBnX2Fzc2VydF9jbXBpbnQo
ZXZlbnRzLnNpemUoKSwgPT0sIDMpOwogICAgIGdfYXNzZXJ0X2NtcGludChldmVudHNbMF0sID09
LCBMb2FkVHJhY2tpbmdUZXN0OjpQcm92aXNpb25hbExvYWRTdGFydGVkKTsKICAgICBnX2Fzc2Vy
dF9jbXBpbnQoZXZlbnRzWzFdLCA9PSwgTG9hZFRyYWNraW5nVGVzdDo6UHJvdmlzaW9uYWxMb2Fk
RmFpbGVkKTsKKyAgICBnX2Fzc2VydF9jbXBpbnQoZXZlbnRzWzJdLCA9PSwgTG9hZFRyYWNraW5n
VGVzdDo6TG9hZEZpbmlzaGVkKTsKIH0KIAogc3RhdGljIHZvaWQgYXNzZXJ0Tm9ybWFsTG9hZEhh
cHBlbmVkQW5kQ2xlYXJFdmVudHMoVmVjdG9yPExvYWRUcmFja2luZ1Rlc3Q6OkxvYWRFdmVudHM+
JiBldmVudHMpCkBAIC05NiwxOSArOTcsMTUgQEAgY2xhc3MgTG9hZFN0b3BUcmFja2luZ1Rlc3Qg
OiBwdWJsaWMgTG9hZFRyYWNraW5nVGVzdCB7CiBwdWJsaWM6CiAgICAgTUFLRV9HTElCX1RFU1Rf
RklYVFVSRShMb2FkU3RvcFRyYWNraW5nVGVzdCk7CiAKLSAgICB2aXJ0dWFsIHZvaWQgbG9hZENv
bW1pdHRlZChXZWJLaXRXZWJMb2FkZXJDbGllbnQqIGNsaWVudCkKKyAgICB2aXJ0dWFsIHZvaWQg
bG9hZENvbW1pdHRlZCgpCiAgICAgewotICAgICAgICBMb2FkVHJhY2tpbmdUZXN0Ojpsb2FkQ29t
bWl0dGVkKGNsaWVudCk7CisgICAgICAgIExvYWRUcmFja2luZ1Rlc3Q6OmxvYWRDb21taXR0ZWQo
KTsKICAgICAgICAgd2Via2l0X3dlYl92aWV3X3N0b3BfbG9hZGluZyhtX3dlYlZpZXcpOwogICAg
IH0KLSAgICB2aXJ0dWFsIHZvaWQgbG9hZEZhaWxlZChXZWJLaXRXZWJMb2FkZXJDbGllbnQqIGNs
aWVudCwgY29uc3QgZ2NoYXIqIGZhaWxpbmdVUkksIEdFcnJvciogZXJyb3IpCisgICAgdmlydHVh
bCB2b2lkIGxvYWRGYWlsZWQoY29uc3QgZ2NoYXIqIGZhaWxpbmdVUkksIEdFcnJvciogZXJyb3Ip
CiAgICAgewogICAgICAgICBnX2Fzc2VydChnX2Vycm9yX21hdGNoZXMoZXJyb3IsIFdFQktJVF9O
RVRXT1JLX0VSUk9SLCBXRUJLSVRfTkVUV09SS19FUlJPUl9DQU5DRUxMRUQpKTsKLSAgICAgICAg
TG9hZFRyYWNraW5nVGVzdDo6bG9hZEZhaWxlZChjbGllbnQsIGZhaWxpbmdVUkksIGVycm9yKTsK
LSAgICB9Ci0gICAgdmlydHVhbCB2b2lkIGxvYWRGaW5pc2hlZChXZWJLaXRXZWJMb2FkZXJDbGll
bnQqIGNsaWVudCkKLSAgICB7Ci0gICAgICAgIGdfYXNzZXJ0X25vdF9yZWFjaGVkKCk7CisgICAg
ICAgIExvYWRUcmFja2luZ1Rlc3Q6OmxvYWRGYWlsZWQoZmFpbGluZ1VSSSwgZXJyb3IpOwogICAg
IH0KIH07CiAKQEAgLTExOCwxMCArMTE1LDExIEBAIHN0YXRpYyB2b2lkIHRlc3RMb2FkQ2FuY2Vs
bGVkKExvYWRTdG9wVHJhY2tpbmdUZXN0KiB0ZXN0LCBnY29uc3Rwb2ludGVyKQogICAgIHRlc3Qt
PndhaXRVbnRpbExvYWRGaW5pc2hlZCgpOwogCiAgICAgVmVjdG9yPExvYWRUcmFja2luZ1Rlc3Q6
OkxvYWRFdmVudHM+JiBldmVudHMgPSB0ZXN0LT5tX2xvYWRFdmVudHM7Ci0gICAgZ19hc3NlcnRf
Y21waW50KGV2ZW50cy5zaXplKCksID09LCAzKTsKKyAgICBnX2Fzc2VydF9jbXBpbnQoZXZlbnRz
LnNpemUoKSwgPT0sIDQpOwogICAgIGdfYXNzZXJ0X2NtcGludChldmVudHNbMF0sID09LCBMb2Fk
VHJhY2tpbmdUZXN0OjpQcm92aXNpb25hbExvYWRTdGFydGVkKTsKICAgICBnX2Fzc2VydF9jbXBp
bnQoZXZlbnRzWzFdLCA9PSwgTG9hZFRyYWNraW5nVGVzdDo6TG9hZENvbW1pdHRlZCk7CiAgICAg
Z19hc3NlcnRfY21waW50KGV2ZW50c1syXSwgPT0sIExvYWRUcmFja2luZ1Rlc3Q6OkxvYWRGYWls
ZWQpOworICAgIGdfYXNzZXJ0X2NtcGludChldmVudHNbM10sID09LCBMb2FkVHJhY2tpbmdUZXN0
OjpMb2FkRmluaXNoZWQpOwogfQogCiBzdGF0aWMgdm9pZCB0ZXN0V2ViVmlld1RpdGxlKExvYWRU
cmFja2luZ1Rlc3QqIHRlc3QsIGdjb25zdHBvaW50ZXIpCkBAIC0xNzEsMjUgKzE2OSwyNSBAQCBw
dWJsaWM6CiAgICAgICAgIGdfc2lnbmFsX2Nvbm5lY3QobV93ZWJWaWV3LCAibm90aWZ5Ojp1cmki
LCBHX0NBTExCQUNLKHVyaUNoYW5nZWQpLCB0aGlzKTsKICAgICB9CiAKLSAgICB2b2lkIHByb3Zp
c2lvbmFsTG9hZFN0YXJ0ZWQoV2ViS2l0V2ViTG9hZGVyQ2xpZW50KikKKyAgICB2b2lkIHByb3Zp
c2lvbmFsTG9hZFN0YXJ0ZWQoKQogICAgIHsKICAgICAgICAgY2hlY2tBY3RpdmVVUkkoIi9yZWRp
cmVjdCIpOwogICAgIH0KIAotICAgIHZvaWQgcHJvdmlzaW9uYWxMb2FkUmVjZWl2ZWRTZXJ2ZXJS
ZWRpcmVjdChXZWJLaXRXZWJMb2FkZXJDbGllbnQqKQorICAgIHZvaWQgcHJvdmlzaW9uYWxMb2Fk
UmVjZWl2ZWRTZXJ2ZXJSZWRpcmVjdCgpCiAgICAgewogICAgICAgICBjaGVja0FjdGl2ZVVSSSgi
L25vcm1hbCIpOwogICAgIH0KIAotICAgIHZvaWQgbG9hZENvbW1pdHRlZChXZWJLaXRXZWJMb2Fk
ZXJDbGllbnQqKQorICAgIHZvaWQgbG9hZENvbW1pdHRlZCgpCiAgICAgewogICAgICAgICBjaGVj
a0FjdGl2ZVVSSSgiL25vcm1hbCIpOwogICAgIH0KIAotICAgIHZvaWQgbG9hZEZpbmlzaGVkKFdl
YktpdFdlYkxvYWRlckNsaWVudCogY2xpZW50KQorICAgIHZvaWQgbG9hZEZpbmlzaGVkKCkKICAg
ICB7CiAgICAgICAgIGNoZWNrQWN0aXZlVVJJKCIvbm9ybWFsIik7Ci0gICAgICAgIExvYWRUcmFj
a2luZ1Rlc3Q6OmxvYWRGaW5pc2hlZChjbGllbnQpOworICAgICAgICBMb2FkVHJhY2tpbmdUZXN0
Ojpsb2FkRmluaXNoZWQoKTsKICAgICB9CiAKICAgICBDU3RyaW5nIG1fYWN0aXZlVVJJOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvdGVzdHMvVGVzdFdlYktp
dFdlYlZpZXcuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvdGVzdHMvVGVz
dFdlYktpdFdlYlZpZXcuY3BwCmluZGV4IGNiNTc4MTYuLjk3ZDlhNmUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL3Rlc3RzL1Rlc3RXZWJLaXRXZWJWaWV3LmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay90ZXN0cy9UZXN0V2ViS2l0
V2ViVmlldy5jcHAKQEAgLTM2LDE2ICszNiw2IEBAIHN0YXRpYyB2b2lkIHRlc3RXZWJWaWV3Q3Vz
dG9tQ2hhcnNldChXZWJWaWV3VGVzdCogdGVzdCwgZ2NvbnN0cG9pbnRlcikKICAgICBnX2Fzc2Vy
dCghd2Via2l0X3dlYl92aWV3X2dldF9jdXN0b21fY2hhcnNldCh0ZXN0LT5tX3dlYlZpZXcpKTsK
IH0KIAotc3RhdGljIHZvaWQgdGVzdFdlYlZpZXdzU2hhcmVDbGllbnRzKFRlc3QqIHRlc3QsIGdj
b25zdHBvaW50ZXIpCi17Ci0gICAgR1JlZlB0cjxHdGtXaWRnZXQ+IHdlYlZpZXcxID0gd2Via2l0
X3dlYl92aWV3X25ldygpOwotICAgIEdSZWZQdHI8R3RrV2lkZ2V0PiB3ZWJWaWV3MiA9IHdlYmtp
dF93ZWJfdmlld19uZXcoKTsKLSAgICBXZWJLaXRXZWJMb2FkZXJDbGllbnQqIGNsaWVudDEgPSB3
ZWJraXRfd2ViX3ZpZXdfZ2V0X2xvYWRlcl9jbGllbnQoV0VCS0lUX1dFQl9WSUVXKHdlYlZpZXcx
LmdldCgpKSk7Ci0gICAgV2ViS2l0V2ViTG9hZGVyQ2xpZW50KiBjbGllbnQyID0gd2Via2l0X3dl
Yl92aWV3X2dldF9sb2FkZXJfY2xpZW50KFdFQktJVF9XRUJfVklFVyh3ZWJWaWV3Mi5nZXQoKSkp
OwotICAgIGdfYXNzZXJ0KGNsaWVudDEpOwotICAgIGdfYXNzZXJ0KGNsaWVudDEgPT0gY2xpZW50
Mik7Ci19Ci0KIHN0YXRpYyB2b2lkIHRlc3RXZWJWaWV3U2V0dGluZ3MoV2ViVmlld1Rlc3QqIHRl
c3QsIGdjb25zdHBvaW50ZXIpCiB7CiAgICAgV2ViS2l0U2V0dGluZ3MqIGRlZmF1bHRTZXR0aW5n
cyA9IHdlYmtpdF93ZWJfdmlld19nZXRfc2V0dGluZ3ModGVzdC0+bV93ZWJWaWV3KTsKQEAgLTIz
Nyw3ICsyMjcsNiBAQCB2b2lkIGJlZm9yZUFsbCgpCiB7CiAgICAgV2ViVmlld1Rlc3Q6OmFkZCgi
V2ViS2l0V2ViVmlldyIsICJkZWZhdWx0LWNvbnRleHQiLCB0ZXN0V2ViVmlld0RlZmF1bHRDb250
ZXh0KTsKICAgICBXZWJWaWV3VGVzdDo6YWRkKCJXZWJLaXRXZWJWaWV3IiwgImN1c3RvbS1jaGFy
c2V0IiwgdGVzdFdlYlZpZXdDdXN0b21DaGFyc2V0KTsKLSAgICBUZXN0OjphZGQoIldlYktpdFdl
YlZpZXciLCAid2Vidmlld3Mtc2hhcmUtY2xpZW50cyIsIHRlc3RXZWJWaWV3c1NoYXJlQ2xpZW50
cyk7CiAgICAgV2ViVmlld1Rlc3Q6OmFkZCgiV2ViS2l0V2ViVmlldyIsICJzZXR0aW5ncyIsIHRl
c3RXZWJWaWV3U2V0dGluZ3MpOwogICAgIFVJQ2xpZW50VGVzdDo6YWRkKCJXZWJLaXRXZWJWaWV3
IiwgImNyZWF0ZS1yZWFkeS1jbG9zZSIsIHRlc3RXZWJWaWV3Q3JlYXRlUmVhZHlDbG9zZSk7CiAg
ICAgVUlDbGllbnRUZXN0OjphZGQoIldlYktpdFdlYlZpZXciLCAiamF2YXNjcmlwdC1kaWFsb2dz
IiwgdGVzdFdlYlZpZXdKYXZhU2NyaXB0RGlhbG9ncyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay93ZWJraXQyLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL2d0ay93ZWJraXQyLmgKaW5kZXggYzUwODhhZC4uODdlMzUxMSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvd2Via2l0Mi5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL3dlYmtpdDIuaApAQCAtMzIsNyArMzIsNiBAQAogI2lu
Y2x1ZGUgPHdlYmtpdDIvV2ViS2l0VVJJUmVxdWVzdC5oPgogI2luY2x1ZGUgPHdlYmtpdDIvV2Vi
S2l0VVJJUmVzcG9uc2UuaD4KICNpbmNsdWRlIDx3ZWJraXQyL1dlYktpdFdlYkNvbnRleHQuaD4K
LSNpbmNsdWRlIDx3ZWJraXQyL1dlYktpdFdlYkxvYWRlckNsaWVudC5oPgogI2luY2x1ZGUgPHdl
YmtpdDIvV2ViS2l0V2ViVmlld0Jhc2UuaD4KICNpbmNsdWRlIDx3ZWJraXQyL1dlYktpdFdlYlZp
ZXcuaD4KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvd2Vi
a2l0Mm1hcnNoYWwubGlzdCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL3dlYmtp
dDJtYXJzaGFsLmxpc3QKaW5kZXggYzk0ZDljMi4uODljMjUwZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvd2Via2l0Mm1hcnNoYWwubGlzdAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay93ZWJraXQybWFyc2hhbC5saXN0CkBAIC0xLDkg
KzEsOCBAQAotQk9PTEVBTjpPQkpFQ1QsU1RSSU5HLFBPSU5URVIKLUJPT0xFQU46T0JKRUNUCitC
T09MRUFOOkVOVU0sU1RSSU5HLFBPSU5URVIKIEJPT0xFQU46U1RSSU5HCiBCT09MRUFOOlNUUklO
RyxQT0lOVEVSCiBCT09MRUFOOlNUUklORyxTVFJJTkcsUE9JTlRFUgotQk9PTEVBTjpWT0lECiBP
QkpFQ1Q6Vk9JRAorVk9JRDpFTlVNCiBWT0lEOk9CSkVDVCxQT0lOVEVSCiAKZGlmZiAtLWdpdCBh
L1Rvb2xzL2d0ay9nZW5lcmF0ZS1ndGtkb2MgYi9Ub29scy9ndGsvZ2VuZXJhdGUtZ3RrZG9jCmlu
ZGV4IDc5NzFjMGYuLmRiNWY4M2EgMTAwNzU1Ci0tLSBhL1Rvb2xzL2d0ay9nZW5lcmF0ZS1ndGtk
b2MKKysrIGIvVG9vbHMvZ3RrL2dlbmVyYXRlLWd0a2RvYwpAQCAtNjEsNiArNjEsNyBAQCBkZWYg
Z2V0X3dlYmtpdDJfb3B0aW9ucygpOgogICAgICAgICAnaWdub3JlZF9maWxlcyc6IGdsb2IuZ2xv
YihzcmNfcGF0aCgnKlByaXZhdGUuaCcpKSArIFwKICAgICAgICAgICAgICAgICAgICAgICAgICBn
bG9iLmdsb2Ioc3JjX3BhdGgoJ1BhZ2VDbGllbnRJbXBsLionKSkgKyBcCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgZ2xvYi5nbG9iKHNyY19wYXRoKCdXZWJLaXRVSUNsaWVudC4qJykpICsgXAor
ICAgICAgICAgICAgICAgICAgICAgICAgIGdsb2IuZ2xvYihzcmNfcGF0aCgnV2ViS2l0V2ViTG9h
ZGVyQ2xpZW50LionKSkgKyBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgZ2xvYi5nbG9iKHNy
Y19wYXRoKCd0ZXN0cy8qLmgnKSkKICAgICB9KQogICAgIHJldHVybiAoY29tbW9uLmJ1aWxkX3Bh
dGgoJ1NvdXJjZScsICdXZWJLaXQyJywgJ3dlYmtpdDJndGstMy4wLnBjJyksIG9wdGlvbnMpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>120538</attachid>
            <date>2011-12-26 02:12:18 -0800</date>
            <delta_ts>2011-12-26 02:15:05 -0800</delta_ts>
            <desc>Updated patch</desc>
            <filename>wk2-new-loader-client2.diff</filename>
            <type>text/plain</type>
            <size>62508</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwppbmRleCAyNzg5NGY1Li4zYzJjMTYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNzMg
QEAKKzIwMTEtMTItMjYgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29t
PgorCisgICAgICAgIFtHVEtdIFNpbXBsaWZ5IGxvYWRlciBjbGllbnQgV2ViS2l0MiBHVEsrIEFQ
SQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzQ2MDUK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZW1vdmUg
V2ViS2l0V2ViTG9hZGVyQ2xpZW50IGZyb20gcHVibGljIEFQSSBrZWVwaW5nIGl0IGFzIGEKKyAg
ICAgICAgcHJpdmF0ZSBvYmplY3QuIExvYWRpbmcgQVBJIGhhcyBiZWVuIHJlZHVjZWQgdG8gdHdv
IHNpZ25hbHMgaW4KKyAgICAgICAgV2ViS2l0V2ViVmlldy4KKworICAgICAgICAqIFVJUHJvY2Vz
cy9BUEkvZ3RrL1dlYktpdERlZmluZXMuaDogUmVtb3ZlIGZvcndhcmQgZGVsY2FyYXRpb25zCisg
ICAgICAgIHRoYXQgYXJlIG5vIGxvbmdlciBuZWVkZWQuCisgICAgICAgICogVUlQcm9jZXNzL0FQ
SS9ndGsvV2ViS2l0V2ViTG9hZGVyQ2xpZW50LmNwcDoKKyAgICAgICAgKGRpZFN0YXJ0UHJvdmlz
aW9uYWxMb2FkRm9yRnJhbWUpOiBFbWl0CisgICAgICAgIFdlYktpdFdlYlZpZXc6OmxvYWQtY2hh
bmdlZCBzaWduYWwgd2l0aCBTdGFydGVkIGV2ZW50LgorICAgICAgICAoZGlkUmVjZWl2ZVNlcnZl
clJlZGlyZWN0Rm9yUHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUpOiBFbWl0CisgICAgICAgIFdlYktp
dFdlYlZpZXc6OmxvYWQtY2hhbmdlZCBzaWduYWwgd2l0aCBSZWRpcmVjdGVkIGV2ZW50LgorICAg
ICAgICAoZGlkRmFpbFByb3Zpc2lvbmFsTG9hZFdpdGhFcnJvckZvckZyYW1lKTogRW1pdAorICAg
ICAgICBXZWJLaXRXZWJWaWV3Ojpsb2FkLWZhaWxlZCBzaWduYWwgd2l0aCBTdGFydGVkIGV2ZW50
LgorICAgICAgICAoZGlkQ29tbWl0TG9hZEZvckZyYW1lKTogRW1pdCBXZWJLaXRXZWJWaWV3Ojps
b2FkLWNoYW5nZWQgc2lnbmFsCisgICAgICAgIHdpdGggQ29tbWl0dGVkIGV2ZW50LgorICAgICAg
ICAoZGlkRmluaXNoTG9hZEZvckZyYW1lKTogRW1pdCBXZWJLaXRXZWJWaWV3Ojpsb2FkLWNoYW5n
ZWQgc2lnbmFsCisgICAgICAgIHdpdGggRmluaXNoZWQgZXZlbnQuCisgICAgICAgIChkaWRGYWls
TG9hZFdpdGhFcnJvckZvckZyYW1lKTogRW1pdCBXZWJLaXRXZWJWaWV3Ojpsb2FkLWZhaWxlZAor
ICAgICAgICBzaWduYWwgd2l0aCBDb21taXR0ZWQgZXZlbnQuCisgICAgICAgICh3ZWJraXRfd2Vi
X2xvYWRlcl9jbGllbnRfaW5pdCk6CisgICAgICAgICh3ZWJraXRfd2ViX2xvYWRlcl9jbGllbnRf
Y2xhc3NfaW5pdCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViTG9hZGVy
Q2xpZW50Lmg6IFJlbW92ZSBwdWJsaWMgQVBJIGFuZAorICAgICAgICBtb3ZlIHByaXZhdGUgQVBJ
IGhlcmUuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViTG9hZGVyQ2xpZW50
UHJpdmF0ZS5oOiBSZW1vdmVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdl
YlZpZXcuY3BwOgorICAgICAgICAod2Via2l0V2ViVmlld0xvYWRGYWlsKTogRGVmYXVsdCBpbXBs
ZW1lbnRhdGlvbiBvZgorICAgICAgICBXZWJLaXRXZWJWaWV3Ojpsb2FkLWZhaWxlZCBzaWduYWwg
dG8gc2hvdyBhIGN1c3RvbSBlcnJvciBwYWdlLgorICAgICAgICAod2Via2l0X3dlYl92aWV3X2Ns
YXNzX2luaXQpOiBBZGQgbG9hZC1jaGFuZ2VkIGFuZCBsb2FkLWZhaWxlZAorICAgICAgICBzaWdu
YWxzLgorICAgICAgICAod2Via2l0V2ViVmlld0xvYWRDaGFuZ2VkKTogRW1pdCBXZWJLaXRXZWJW
aWV3Ojpsb2FkLWNoYW5nZWQgd2l0aAorICAgICAgICB0aGUgZ2l2ZW4gZXZlbnQuCisgICAgICAg
ICh3ZWJraXRXZWJWaWV3TG9hZEZhaWxlZCk6IEVtaXQgV2ViS2l0V2ViVmlldzo6bG9hZC1mYWls
ZWQgc2lnbmFsCisgICAgICAgIHdpdGggdGhlIGdpdmVuIGV2ZW50LCBmYWlsaW5nIHVyaSBhbmQg
ZXJyb3IuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlldy5oOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdQcml2YXRlLmg6CisgICAgICAg
ICogVUlQcm9jZXNzL0FQSS9ndGsvZG9jcy93ZWJraXQyZ3RrLWRvY3Muc2dtbDogUmVtb3ZlIGxv
YWRlcgorICAgICAgICBjbGllbnQgc2VjdGlvbi4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0
ay9kb2NzL3dlYmtpdDJndGstc2VjdGlvbnMudHh0OiBSZW1vdmUgbG9hZGVyCisgICAgICAgIGNs
aWVudCBzeW1ib2xzLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL2RvY3Mvd2Via2l0Mmd0
ay50eXBlczogUmVtb3ZlCisgICAgICAgIHdlYmtpdF93ZWJfbG9hZGVyX2NsaWVudF9nZXRfdHlw
ZS4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay90ZXN0cy9Mb2FkVHJhY2tpbmdUZXN0LmNw
cDoKKyAgICAgICAgKGxvYWRDaGFuZ2VkQ2FsbGJhY2spOgorICAgICAgICAobG9hZEZhaWxlZENh
bGxiYWNrKToKKyAgICAgICAgKExvYWRUcmFja2luZ1Rlc3Q6OkxvYWRUcmFja2luZ1Rlc3QpOgor
ICAgICAgICAoTG9hZFRyYWNraW5nVGVzdDo6fkxvYWRUcmFja2luZ1Rlc3QpOgorICAgICAgICAo
TG9hZFRyYWNraW5nVGVzdDo6cHJvdmlzaW9uYWxMb2FkU3RhcnRlZCk6CisgICAgICAgIChMb2Fk
VHJhY2tpbmdUZXN0Ojpwcm92aXNpb25hbExvYWRSZWNlaXZlZFNlcnZlclJlZGlyZWN0KToKKyAg
ICAgICAgKExvYWRUcmFja2luZ1Rlc3Q6OnByb3Zpc2lvbmFsTG9hZEZhaWxlZCk6CisgICAgICAg
IChMb2FkVHJhY2tpbmdUZXN0Ojpsb2FkQ29tbWl0dGVkKToKKyAgICAgICAgKExvYWRUcmFja2lu
Z1Rlc3Q6OmxvYWRGaW5pc2hlZCk6CisgICAgICAgIChMb2FkVHJhY2tpbmdUZXN0Ojpsb2FkRmFp
bGVkKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay90ZXN0cy9Mb2FkVHJhY2tpbmdUZXN0
Lmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvdGVzdHMvVGVzdFdlYktpdFdlYkxvYWRl
ckNsaWVudC5jcHA6CisgICAgICAgICh0ZXN0TG9hZGluZ0Vycm9yKToKKyAgICAgICAgKExvYWRT
dG9wVHJhY2tpbmdUZXN0Ojpsb2FkQ29tbWl0dGVkKToKKyAgICAgICAgKExvYWRTdG9wVHJhY2tp
bmdUZXN0Ojpsb2FkRmFpbGVkKToKKyAgICAgICAgKHRlc3RMb2FkQ2FuY2VsbGVkKToKKyAgICAg
ICAgKiBVSVByb2Nlc3MvQVBJL2d0ay90ZXN0cy9UZXN0V2ViS2l0V2ViVmlldy5jcHA6CisgICAg
ICAgIChiZWZvcmVBbGwpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL3dlYmtpdDIuaDog
UmVtb3ZlIGxvYWRlciBjbGllbnQgaGVhZGVyLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3Rr
L3dlYmtpdDJtYXJzaGFsLmxpc3Q6CisKIDIwMTEtMTItMjUgIERhbiBCZXJuc3RlaW4gIDxtaXR6
QGFwcGxlLmNvbT4KIAogICAgICAgICBGaW5kIGluZGljYXRvcnMgb3ZlcmxhcCB3aGVuIGEgbWF0
Y2ggc3BhbnMgbXVsdGlwbGUgdGV4dCBib3hlcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0RGVmaW5lcy5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9ndGsvV2ViS2l0RGVmaW5lcy5oCmluZGV4IGRjMzNkYmMuLjc5YjMzODMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdERlZmluZXMuaAor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXREZWZpbmVzLmgKQEAg
LTMwLDEyICszMCw2IEBACiAjaWZuZGVmIFdlYktpdERlZmluZXNfaAogI2RlZmluZSBXZWJLaXRE
ZWZpbmVzX2gKIAotdHlwZWRlZiBzdHJ1Y3QgX1dlYktpdFdlYlZpZXcgV2ViS2l0V2ViVmlldzsK
LXR5cGVkZWYgc3RydWN0IF9XZWJLaXRXZWJWaWV3Q2xhc3MgV2ViS2l0V2ViVmlld0NsYXNzOwot
Ci10eXBlZGVmIHN0cnVjdCBfV2ViS2l0V2ViTG9hZGVyQ2xpZW50ICAgICAgICBXZWJLaXRXZWJM
b2FkZXJDbGllbnQ7Ci10eXBlZGVmIHN0cnVjdCBfV2ViS2l0V2ViTG9hZGVyQ2xpZW50Q2xhc3Mg
ICBXZWJLaXRXZWJMb2FkZXJDbGllbnRDbGFzczsKLQogI2luY2x1ZGUgPGdsaWIuaD4KIAogI2lm
ZGVmIEdfT1NfV0lOMzIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
Z3RrL1dlYktpdFdlYkxvYWRlckNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL2d0ay9XZWJLaXRXZWJMb2FkZXJDbGllbnQuY3BwCmluZGV4IDZjZWM0NmYuLmQyNzU2MGYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYkxv
YWRlckNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2Vi
S2l0V2ViTG9hZGVyQ2xpZW50LmNwcApAQCAtMjIsMzMgKzIyLDEzIEBACiAjaW5jbHVkZSAiV2Vi
S2l0V2ViTG9hZGVyQ2xpZW50LmgiCiAKICNpbmNsdWRlICJXZWJLaXRCYWNrRm9yd2FyZExpc3RQ
cml2YXRlLmgiCi0jaW5jbHVkZSAiV2ViS2l0RXJyb3IuaCIKLSNpbmNsdWRlICJXZWJLaXRNYXJz
aGFsLmgiCi0jaW5jbHVkZSAiV2ViS2l0UHJpdmF0ZS5oIgotI2luY2x1ZGUgIldlYktpdFdlYkxv
YWRlckNsaWVudFByaXZhdGUuaCIKLSNpbmNsdWRlICJXZWJLaXRXZWJWaWV3LmgiCiAjaW5jbHVk
ZSAiV2ViS2l0V2ViVmlld1ByaXZhdGUuaCIKLSNpbmNsdWRlICJXZWJLaXRXZWJWaWV3QmFzZVBy
aXZhdGUuaCIKICNpbmNsdWRlIDx3dGYvZ29iamVjdC9HT3duUHRyLmg+Ci0jaW5jbHVkZSA8d3Rm
L2dvYmplY3QvR1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KIAordXNp
bmcgbmFtZXNwYWNlIFdlYktpdDsKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCi1lbnVtIHsK
LSAgICBQUk9WSVNJT05BTF9MT0FEX1NUQVJURUQsCi0gICAgUFJPVklTSU9OQUxfTE9BRF9SRUNF
SVZFRF9TRVJWRVJfUkVESVJFQ1QsCi0gICAgUFJPVklTSU9OQUxfTE9BRF9GQUlMRUQsCi0KLSAg
ICBMT0FEX0NPTU1JVFRFRCwKLSAgICBMT0FEX0ZJTklTSEVELAotICAgIExPQURfRkFJTEVELAot
Ci0gICAgTEFTVF9TSUdOQUwKLX07Ci0KLXN0YXRpYyBndWludCBzaWduYWxzW0xBU1RfU0lHTkFM
XSA9IHsgMCwgfTsKLQogR19ERUZJTkVfVFlQRShXZWJLaXRXZWJMb2FkZXJDbGllbnQsIHdlYmtp
dF93ZWJfbG9hZGVyX2NsaWVudCwgR19UWVBFX09CSkVDVCkKIAogc3RhdGljIHZvaWQgZGlkU3Rh
cnRQcm92aXNpb25hbExvYWRGb3JGcmFtZShXS1BhZ2VSZWYgcGFnZSwgV0tGcmFtZVJlZiBmcmFt
ZSwgV0tUeXBlUmVmIHVzZXJEYXRhLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKQpAQCAtNTYsMTAg
KzM2LDcgQEAgc3RhdGljIHZvaWQgZGlkU3RhcnRQcm92aXNpb25hbExvYWRGb3JGcmFtZShXS1Bh
Z2VSZWYgcGFnZSwgV0tGcmFtZVJlZiBmcmFtZSwgV0sKICAgICBpZiAoIVdLRnJhbWVJc01haW5G
cmFtZShmcmFtZSkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGdib29sZWFuIHJldHVyblZhbHVl
OwotICAgIFdlYktpdFdlYlZpZXcqIHdlYlZpZXcgPSBXRUJLSVRfV0VCX1ZJRVcodG9JbXBsKHBh
Z2UpLT52aWV3V2lkZ2V0KCkpOwotICAgIHdlYmtpdFdlYlZpZXdVcGRhdGVVUkkod2ViVmlldyk7
Ci0gICAgZ19zaWduYWxfZW1pdChXRUJLSVRfV0VCX0xPQURFUl9DTElFTlQoY2xpZW50SW5mbyks
IHNpZ25hbHNbUFJPVklTSU9OQUxfTE9BRF9TVEFSVEVEXSwgMCwgd2ViVmlldywgJnJldHVyblZh
bHVlKTsKKyAgICB3ZWJraXRXZWJWaWV3TG9hZENoYW5nZWQoV0VCS0lUX1dFQl9WSUVXKHRvSW1w
bChwYWdlKS0+dmlld1dpZGdldCgpKSwgV0VCS0lUX0xPQURfU1RBUlRFRCk7CiB9CiAKIHN0YXRp
YyB2b2lkIGRpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdEZvclByb3Zpc2lvbmFsTG9hZEZvckZyYW1l
KFdLUGFnZVJlZiBwYWdlLCBXS0ZyYW1lUmVmIGZyYW1lLCBXS1R5cGVSZWYgdXNlckRhdGEsIGNv
bnN0IHZvaWQqIGNsaWVudEluZm8pCkBAIC02NywxMCArNDQsNyBAQCBzdGF0aWMgdm9pZCBkaWRS
ZWNlaXZlU2VydmVyUmVkaXJlY3RGb3JQcm92aXNpb25hbExvYWRGb3JGcmFtZShXS1BhZ2VSZWYg
cGFnZSwgVwogICAgIGlmICghV0tGcmFtZUlzTWFpbkZyYW1lKGZyYW1lKSkKICAgICAgICAgcmV0
dXJuOwogCi0gICAgZ2Jvb2xlYW4gcmV0dXJuVmFsdWU7Ci0gICAgV2ViS2l0V2ViVmlldyogd2Vi
VmlldyA9IFdFQktJVF9XRUJfVklFVyh0b0ltcGwocGFnZSktPnZpZXdXaWRnZXQoKSk7Ci0gICAg
d2Via2l0V2ViVmlld1VwZGF0ZVVSSSh3ZWJWaWV3KTsKLSAgICBnX3NpZ25hbF9lbWl0KFdFQktJ
VF9XRUJfTE9BREVSX0NMSUVOVChjbGllbnRJbmZvKSwgc2lnbmFsc1tQUk9WSVNJT05BTF9MT0FE
X1JFQ0VJVkVEX1NFUlZFUl9SRURJUkVDVF0sIDAsIHdlYlZpZXcsICZyZXR1cm5WYWx1ZSk7Cisg
ICAgd2Via2l0V2ViVmlld0xvYWRDaGFuZ2VkKFdFQktJVF9XRUJfVklFVyh0b0ltcGwocGFnZSkt
PnZpZXdXaWRnZXQoKSksIFdFQktJVF9MT0FEX1JFRElSRUNURUQpOwogfQogCiBzdGF0aWMgdm9p
ZCBkaWRGYWlsUHJvdmlzaW9uYWxMb2FkV2l0aEVycm9yRm9yRnJhbWUoV0tQYWdlUmVmIHBhZ2Us
IFdLRnJhbWVSZWYgZnJhbWUsIFdLRXJyb3JSZWYgZXJyb3IsIFdLVHlwZVJlZiB1c2VyRGF0YSwg
Y29uc3Qgdm9pZCogY2xpZW50SW5mbykKQEAgLTgyLDEwICs1Niw4IEBAIHN0YXRpYyB2b2lkIGRp
ZEZhaWxQcm92aXNpb25hbExvYWRXaXRoRXJyb3JGb3JGcmFtZShXS1BhZ2VSZWYgcGFnZSwgV0tG
cmFtZVJlZiBmCiAgICAgR093blB0cjxHRXJyb3I+IHdlYkVycm9yKGdfZXJyb3JfbmV3X2xpdGVy
YWwoZ19xdWFya19mcm9tX3N0cmluZyhyZXNvdXJjZUVycm9yLmRvbWFpbigpLnV0ZjgoKS5kYXRh
KCkpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJl
c291cmNlRXJyb3IuZXJyb3JDb2RlKCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgcmVzb3VyY2VFcnJvci5sb2NhbGl6ZWREZXNjcmlwdGlvbigpLnV0
ZjgoKS5kYXRhKCkpKTsKLSAgICBnYm9vbGVhbiByZXR1cm5WYWx1ZTsKLSAgICBXZWJLaXRXZWJW
aWV3KiB3ZWJWaWV3ID0gV0VCS0lUX1dFQl9WSUVXKHRvSW1wbChwYWdlKS0+dmlld1dpZGdldCgp
KTsKLSAgICBnX3NpZ25hbF9lbWl0KFdFQktJVF9XRUJfTE9BREVSX0NMSUVOVChjbGllbnRJbmZv
KSwgc2lnbmFsc1tQUk9WSVNJT05BTF9MT0FEX0ZBSUxFRF0sIDAsIHdlYlZpZXcsIHJlc291cmNl
RXJyb3IuZmFpbGluZ1VSTCgpLnV0ZjgoKS5kYXRhKCksCi0gICAgICAgICAgICAgICAgICB3ZWJF
cnJvci5nZXQoKSwgJnJldHVyblZhbHVlKTsKKyAgICB3ZWJraXRXZWJWaWV3TG9hZEZhaWxlZChX
RUJLSVRfV0VCX1ZJRVcodG9JbXBsKHBhZ2UpLT52aWV3V2lkZ2V0KCkpLCBXRUJLSVRfTE9BRF9T
VEFSVEVELAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc291cmNlRXJyb3IuZmFpbGlu
Z1VSTCgpLnV0ZjgoKS5kYXRhKCksIHdlYkVycm9yLmdldCgpKTsKIH0KIAogc3RhdGljIHZvaWQg
ZGlkQ29tbWl0TG9hZEZvckZyYW1lKFdLUGFnZVJlZiBwYWdlLCBXS0ZyYW1lUmVmIGZyYW1lLCBX
S1R5cGVSZWYgdXNlckRhdGEsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pCkBAIC05MywxMCArNjUs
NyBAQCBzdGF0aWMgdm9pZCBkaWRDb21taXRMb2FkRm9yRnJhbWUoV0tQYWdlUmVmIHBhZ2UsIFdL
RnJhbWVSZWYgZnJhbWUsIFdLVHlwZVJlZiB1cwogICAgIGlmICghV0tGcmFtZUlzTWFpbkZyYW1l
KGZyYW1lKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgZ2Jvb2xlYW4gcmV0dXJuVmFsdWU7Ci0g
ICAgV2ViS2l0V2ViVmlldyogd2ViVmlldyA9IFdFQktJVF9XRUJfVklFVyh0b0ltcGwocGFnZSkt
PnZpZXdXaWRnZXQoKSk7Ci0gICAgd2Via2l0V2ViVmlld1VwZGF0ZVVSSSh3ZWJWaWV3KTsKLSAg
ICBnX3NpZ25hbF9lbWl0KFdFQktJVF9XRUJfTE9BREVSX0NMSUVOVChjbGllbnRJbmZvKSwgc2ln
bmFsc1tMT0FEX0NPTU1JVFRFRF0sIDAsIHdlYlZpZXcsICAmcmV0dXJuVmFsdWUpOworICAgIHdl
YmtpdFdlYlZpZXdMb2FkQ2hhbmdlZChXRUJLSVRfV0VCX1ZJRVcodG9JbXBsKHBhZ2UpLT52aWV3
V2lkZ2V0KCkpLCBXRUJLSVRfTE9BRF9DT01NSVRURUQpOwogfQogCiBzdGF0aWMgdm9pZCBkaWRG
aW5pc2hMb2FkRm9yRnJhbWUoV0tQYWdlUmVmIHBhZ2UsIFdLRnJhbWVSZWYgZnJhbWUsIFdLVHlw
ZVJlZiB1c2VyRGF0YSwgY29uc3Qgdm9pZCogY2xpZW50SW5mbykKQEAgLTEwNCw5ICs3Myw3IEBA
IHN0YXRpYyB2b2lkIGRpZEZpbmlzaExvYWRGb3JGcmFtZShXS1BhZ2VSZWYgcGFnZSwgV0tGcmFt
ZVJlZiBmcmFtZSwgV0tUeXBlUmVmIHVzCiAgICAgaWYgKCFXS0ZyYW1lSXNNYWluRnJhbWUoZnJh
bWUpKQogICAgICAgICByZXR1cm47CiAKLSAgICBnYm9vbGVhbiByZXR1cm5WYWx1ZTsKLSAgICBX
ZWJLaXRXZWJWaWV3KiB3ZWJWaWV3ID0gV0VCS0lUX1dFQl9WSUVXKHRvSW1wbChwYWdlKS0+dmll
d1dpZGdldCgpKTsKLSAgICBnX3NpZ25hbF9lbWl0KFdFQktJVF9XRUJfTE9BREVSX0NMSUVOVChj
bGllbnRJbmZvKSwgc2lnbmFsc1tMT0FEX0ZJTklTSEVEXSwgMCwgd2ViVmlldywgJnJldHVyblZh
bHVlKTsKKyAgICB3ZWJraXRXZWJWaWV3TG9hZENoYW5nZWQoV0VCS0lUX1dFQl9WSUVXKHRvSW1w
bChwYWdlKS0+dmlld1dpZGdldCgpKSwgV0VCS0lUX0xPQURfRklOSVNIRUQpOwogfQogCiBzdGF0
aWMgdm9pZCBkaWRGYWlsTG9hZFdpdGhFcnJvckZvckZyYW1lKFdLUGFnZVJlZiBwYWdlLCBXS0Zy
YW1lUmVmIGZyYW1lLCBXS0Vycm9yUmVmIGVycm9yLCBXS1R5cGVSZWYsIGNvbnN0IHZvaWQqIGNs
aWVudEluZm8pCkBAIC0xMTgsMTAgKzg1LDggQEAgc3RhdGljIHZvaWQgZGlkRmFpbExvYWRXaXRo
RXJyb3JGb3JGcmFtZShXS1BhZ2VSZWYgcGFnZSwgV0tGcmFtZVJlZiBmcmFtZSwgV0tFcnIKICAg
ICBHT3duUHRyPEdFcnJvcj4gd2ViRXJyb3IoZ19lcnJvcl9uZXdfbGl0ZXJhbChnX3F1YXJrX2Zy
b21fc3RyaW5nKHJlc291cmNlRXJyb3IuZG9tYWluKCkudXRmOCgpLmRhdGEoKSksCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzb3VyY2VFcnJvci5l
cnJvckNvZGUoKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICByZXNvdXJjZUVycm9yLmxvY2FsaXplZERlc2NyaXB0aW9uKCkudXRmOCgpLmRhdGEoKSkp
OwotICAgIGdib29sZWFuIHJldHVyblZhbHVlOwotICAgIFdlYktpdFdlYlZpZXcqIHdlYlZpZXcg
PSBXRUJLSVRfV0VCX1ZJRVcodG9JbXBsKHBhZ2UpLT52aWV3V2lkZ2V0KCkpOwotICAgIGdfc2ln
bmFsX2VtaXQoV0VCS0lUX1dFQl9MT0FERVJfQ0xJRU5UKGNsaWVudEluZm8pLCBzaWduYWxzW0xP
QURfRkFJTEVEXSwgMCwgd2ViVmlldywKLSAgICAgICAgICAgICAgICAgIHJlc291cmNlRXJyb3Iu
ZmFpbGluZ1VSTCgpLnV0ZjgoKS5kYXRhKCksIHdlYkVycm9yLmdldCgpLCAmcmV0dXJuVmFsdWUp
OworICAgIHdlYmtpdFdlYlZpZXdMb2FkRmFpbGVkKFdFQktJVF9XRUJfVklFVyh0b0ltcGwocGFn
ZSktPnZpZXdXaWRnZXQoKSksIFdFQktJVF9MT0FEX0NPTU1JVFRFRCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICByZXNvdXJjZUVycm9yLmZhaWxpbmdVUkwoKS51dGY4KCkuZGF0YSgpLCB3
ZWJFcnJvci5nZXQoKSk7CiB9CiAKIHN0YXRpYyB2b2lkIGRpZFNhbWVEb2N1bWVudE5hdmlnYXRp
b25Gb3JGcmFtZShXS1BhZ2VSZWYgcGFnZSwgV0tGcmFtZVJlZiBmcmFtZSwgV0tTYW1lRG9jdW1l
bnROYXZpZ2F0aW9uVHlwZSwgV0tUeXBlUmVmLCBjb25zdCB2b2lkKikKQEAgLTE4NywxNzkgKzE1
MiwxMCBAQCB2b2lkIHdlYmtpdFdlYkxvYWRlckNsaWVudEF0dGFjaExvYWRlckNsaWVudFRvUGFn
ZShXZWJLaXRXZWJMb2FkZXJDbGllbnQqIGxvYWRlcgogICAgIFdLUGFnZVNldFBhZ2VMb2FkZXJD
bGllbnQod2tQYWdlLCAmd2tMb2FkZXJDbGllbnQpOwogfQogCi1zdGF0aWMgZ2Jvb2xlYW4gd2Vi
a2l0V2ViTG9hZGVyQ2xpZW50TG9hZEZhaWxlZChXZWJLaXRXZWJMb2FkZXJDbGllbnQqIGNsaWVu
dCwgV2ViS2l0V2ViVmlldyogd2ViVmlldywgY29uc3QgZ2NoYXIqIGZhaWxpbmdVUkksIEdFcnJv
ciogZXJyb3IpCi17Ci0gICAgaWYgKGdfZXJyb3JfbWF0Y2hlcyhlcnJvciwgV0VCS0lUX05FVFdP
UktfRVJST1IsIFdFQktJVF9ORVRXT1JLX0VSUk9SX0NBTkNFTExFRCkKLSAgICAgICAgfHwgZ19l
cnJvcl9tYXRjaGVzKGVycm9yLCBXRUJLSVRfUE9MSUNZX0VSUk9SLCBXRUJLSVRfUE9MSUNZX0VS
Uk9SX0ZSQU1FX0xPQURfSU5URVJSVVBURURfQllfUE9MSUNZX0NIQU5HRSkKLSAgICAgICAgfHwg
Z19lcnJvcl9tYXRjaGVzKGVycm9yLCBXRUJLSVRfUExVR0lOX0VSUk9SLCBXRUJLSVRfUExVR0lO
X0VSUk9SX1dJTExfSEFORExFX0xPQUQpKQotICAgICAgICByZXR1cm4gRkFMU0U7Ci0KLSAgICBH
T3duUHRyPGNoYXI+IGh0bWxTdHJpbmcoZ19zdHJkdXBfcHJpbnRmKCI8aHRtbD48Ym9keT4lczwv
Ym9keT48L2h0bWw+IiwgZXJyb3ItPm1lc3NhZ2UpKTsKLSAgICB3ZWJraXRfd2ViX3ZpZXdfbG9h
ZF9hbHRlcm5hdGVfaHRtbCh3ZWJWaWV3LCBodG1sU3RyaW5nLmdldCgpLCAwLCBmYWlsaW5nVVJJ
KTsKLQotICAgIHJldHVybiBUUlVFOwotfQotCi1zdGF0aWMgdm9pZCB3ZWJraXRfd2ViX2xvYWRl
cl9jbGllbnRfaW5pdChXZWJLaXRXZWJMb2FkZXJDbGllbnQqIGNsaWVudCkKK3N0YXRpYyB2b2lk
IHdlYmtpdF93ZWJfbG9hZGVyX2NsaWVudF9pbml0KFdlYktpdFdlYkxvYWRlckNsaWVudCopCiB7
CiB9CiAKLXN0YXRpYyB2b2lkIHdlYmtpdF93ZWJfbG9hZGVyX2NsaWVudF9jbGFzc19pbml0KFdl
YktpdFdlYkxvYWRlckNsaWVudENsYXNzKiBjbGllbnRDbGFzcykKK3N0YXRpYyB2b2lkIHdlYmtp
dF93ZWJfbG9hZGVyX2NsaWVudF9jbGFzc19pbml0KFdlYktpdFdlYkxvYWRlckNsaWVudENsYXNz
KikKIHsKLSAgICBHT2JqZWN0Q2xhc3MqIG9iamVjdENsYXNzID0gR19PQkpFQ1RfQ0xBU1MoY2xp
ZW50Q2xhc3MpOwotICAgIGNsaWVudENsYXNzLT5wcm92aXNpb25hbF9sb2FkX2ZhaWxlZCA9IHdl
YmtpdFdlYkxvYWRlckNsaWVudExvYWRGYWlsZWQ7Ci0gICAgY2xpZW50Q2xhc3MtPmxvYWRfZmFp
bGVkID0gd2Via2l0V2ViTG9hZGVyQ2xpZW50TG9hZEZhaWxlZDsKLQotICAgIC8qKgotICAgICAq
IFdlYktpdFdlYkxvYWRlckNsaWVudDo6cHJvdmlzaW9uYWwtbG9hZC1zdGFydGVkOgotICAgICAq
IEBsb2FkZXJfY2xpZW50OiB0aGUgI1dlYktpdFdlYkxvYWRlckNsaWVudAotICAgICAqIEB3ZWJf
dmlldzogdGhlICNXZWJLaXRXZWJWaWV3IGFzc29jaWF0ZWQgd2l0aCB0aGlzIGV2ZW50Ci0gICAg
ICoKLSAgICAgKiBUaGlzIHNpZ25hbCBpcyBlbWl0dGVkIHdoZW4gbmV3IGxvYWQgcmVxdWVzdCBp
cyBtYWRlLgotICAgICAqIE5vIGRhdGEgaGFzIGJlZW4gcmVjZWl2ZWQgeWV0LCBlbXB0eSBzdHJ1
Y3R1cmVzIGhhdmUKLSAgICAgKiBiZWVuIGFsbG9jYXRlZCB0byBwZXJmb3JtIHRoZSBsb2FkOyB0
aGUgbG9hZCBtYXkgc3RpbGwKLSAgICAgKiBmYWlsIGZvciB0cmFuc3BvcnQgaXNzdWVzIHN1Y2gg
YXMgbm90IGJlaW5nIGFibGUgdG8KLSAgICAgKiByZXNvbHZlIGEgbmFtZSwgb3IgY29ubmVjdCB0
byBhIHBvcnQuCi0gICAgICoKLSAgICAgKiBSZXR1cm5zOiAlVFJVRSB0byBzdG9wIG90aGVyIGhh
bmRsZXJzIGZyb20gYmVpbmcgaW52b2tlZCBmb3IgdGhlIGV2ZW50LgotICAgICAqICAgJUZBTFNF
IHRvIHByb3BhZ2F0ZSB0aGUgZXZlbnQgZnVydGhlci4KLSAgICAgKi8KLSAgICBzaWduYWxzW1BS
T1ZJU0lPTkFMX0xPQURfU1RBUlRFRF0gPQotICAgICAgICBnX3NpZ25hbF9uZXcoInByb3Zpc2lv
bmFsLWxvYWQtc3RhcnRlZCIsCi0gICAgICAgICAgICAgICAgICAgICBHX1RZUEVfRlJPTV9DTEFT
UyhvYmplY3RDbGFzcyksCi0gICAgICAgICAgICAgICAgICAgICBHX1NJR05BTF9SVU5fTEFTVCwK
LSAgICAgICAgICAgICAgICAgICAgIEdfU1RSVUNUX09GRlNFVChXZWJLaXRXZWJMb2FkZXJDbGll
bnRDbGFzcywgcHJvdmlzaW9uYWxfbG9hZF9zdGFydGVkKSwKLSAgICAgICAgICAgICAgICAgICAg
IGdfc2lnbmFsX2FjY3VtdWxhdG9yX3RydWVfaGFuZGxlZCwgTlVMTCwKLSAgICAgICAgICAgICAg
ICAgICAgIHdlYmtpdF9tYXJzaGFsX0JPT0xFQU5fX09CSkVDVCwKLSAgICAgICAgICAgICAgICAg
ICAgIEdfVFlQRV9CT09MRUFOLCAxLAotICAgICAgICAgICAgICAgICAgICAgV0VCS0lUX1RZUEVf
V0VCX1ZJRVcpOwotCi0gICAgLyoqCi0gICAgICogV2ViS2l0V2ViTG9hZGVyQ2xpZW50Ojpwcm92
aXNpb25hbC1sb2FkLXJlY2VpdmVkLXNlcnZlci1yZWRpcmVjdDoKLSAgICAgKiBAbG9hZGVyX2Ns
aWVudDogdGhlICNXZWJLaXRXZWJMb2FkZXJDbGllbnQKLSAgICAgKiBAd2ViX3ZpZXc6IHRoZSAj
V2ViS2l0V2ViVmlldyBhc3NvY2lhdGVkIHdpdGggdGhpcyBldmVudAotICAgICAqCi0gICAgICog
VGhpcyBzaWduYWwgaXMgZW1pdHRlZCB3aGVuIGEgcHJvdmlzaW9uYWwgZGF0YSBzb3VyY2UKLSAg
ICAgKiByZWNlaXZlcyBhIHNlcnZlciByZWRpcmVjdC4KLSAgICAgKgotICAgICAqIFRoaXMgc2ln
bmFsIGlzIGVtaXR0ZWQgYWZ0ZXIgI1dlYktpdFdlYkxvYWRlckNsaWVudDo6cHJvdmlzaW9uYWwt
bG9hZC1zdGFydGVkLgotICAgICAqCi0gICAgICogUmV0dXJuczogJVRSVUUgdG8gc3RvcCBvdGhl
ciBoYW5kbGVycyBmcm9tIGJlaW5nIGludm9rZWQgZm9yIHRoZSBldmVudC4KLSAgICAgKiAgICVG
QUxTRSB0byBwcm9wYWdhdGUgdGhlIGV2ZW50IGZ1cnRoZXIuCi0gICAgICovCi0gICAgc2lnbmFs
c1tQUk9WSVNJT05BTF9MT0FEX1JFQ0VJVkVEX1NFUlZFUl9SRURJUkVDVF0gPQotICAgICAgICBn
X3NpZ25hbF9uZXcoInByb3Zpc2lvbmFsLWxvYWQtcmVjZWl2ZWQtc2VydmVyLXJlZGlyZWN0IiwK
LSAgICAgICAgICAgICAgICAgICAgIEdfVFlQRV9GUk9NX0NMQVNTKG9iamVjdENsYXNzKSwKLSAg
ICAgICAgICAgICAgICAgICAgIEdfU0lHTkFMX1JVTl9MQVNULAotICAgICAgICAgICAgICAgICAg
ICAgR19TVFJVQ1RfT0ZGU0VUKFdlYktpdFdlYkxvYWRlckNsaWVudENsYXNzLCBwcm92aXNpb25h
bF9sb2FkX3JlY2VpdmVkX3NlcnZlcl9yZWRpcmVjdCksCi0gICAgICAgICAgICAgICAgICAgICBn
X3NpZ25hbF9hY2N1bXVsYXRvcl90cnVlX2hhbmRsZWQsIE5VTEwsCi0gICAgICAgICAgICAgICAg
ICAgICB3ZWJraXRfbWFyc2hhbF9CT09MRUFOX19PQkpFQ1QsCi0gICAgICAgICAgICAgICAgICAg
ICBHX1RZUEVfQk9PTEVBTiwgMSwKLSAgICAgICAgICAgICAgICAgICAgIFdFQktJVF9UWVBFX1dF
Ql9WSUVXKTsKLQotICAgIC8qKgotICAgICAqIFdlYktpdFdlYkxvYWRlckNsaWVudDo6cHJvdmlz
aW9uYWwtbG9hZC1mYWlsZWQ6Ci0gICAgICogQGxvYWRlcl9jbGllbnQ6IHRoZSAjV2ViS2l0V2Vi
TG9hZGVyQ2xpZW50Ci0gICAgICogQHdlYl92aWV3OiB0aGUgI1dlYktpdFdlYlZpZXcgYXNzb2Np
YXRlZCB3aXRoIHRoaXMgZXZlbnQKLSAgICAgKiBAZXJyb3I6IHRoZSAjR0Vycm9yIHRoYXQgd2Fz
IHRyaWdnZXJlZAotICAgICAqCi0gICAgICogVGhpcyBzaWduYWwgaXMgZW1pdHRlZCB3aGVuIGFu
IGVycm9yIG9jY3VycyB3aGVuIHN0YXJ0aW5nIHRvCi0gICAgICogbG9hZCBkYXRhIGZvciBhIHBh
Z2UuIEJ5IGRlZmF1bHQsIGlmIHRoZSBzaWduYWwgaXMgbm90IGhhbmRsZWQsCi0gICAgICogYSBz
dG9jayBlcnJvciBwYWdlIHdpbGwgYmUgZGlzcGxheWVkLiBZb3UgbmVlZCB0byBoYW5kbGUgdGhl
IHNpZ25hbAotICAgICAqIGlmIHlvdSB3YW50IHRvIHByb3ZpZGUgeW91ciBvd24gZXJyb3IgcGFn
ZS4gVGhpcyBzaWduYWwgZmluaXNoZXMgdGhlCi0gICAgICogbG9hZCBzbyBubyBvdGhlciBzaWdu
YWxzIHdpbGwgYmUgZW1pdHRlZCBhZnRlciB0aGlzIG9uZS4KLSAgICAgKgotICAgICAqIFRoaXMg
c2lnbmFsIGlzIGVtaXR0ZWQgYWZ0ZXIgI1dlYktpdFdlYkxvYWRlckNsaWVudDo6cHJvdmlzaW9u
YWwtbG9hZC1zdGFydGVkLgotICAgICAqCi0gICAgICogUmV0dXJuczogJVRSVUUgdG8gc3RvcCBv
dGhlciBoYW5kbGVycyBmcm9tIGJlaW5nIGludm9rZWQgZm9yIHRoZSBldmVudC4KLSAgICAgKiAg
ICVGQUxTRSB0byBwcm9wYWdhdGUgdGhlIGV2ZW50IGZ1cnRoZXIuCi0gICAgICovCi0gICAgc2ln
bmFsc1tQUk9WSVNJT05BTF9MT0FEX0ZBSUxFRF0gPQotICAgICAgICBnX3NpZ25hbF9uZXcoInBy
b3Zpc2lvbmFsLWxvYWQtZmFpbGVkIiwKLSAgICAgICAgICAgICAgICAgICAgIEdfVFlQRV9GUk9N
X0NMQVNTKG9iamVjdENsYXNzKSwKLSAgICAgICAgICAgICAgICAgICAgIEdfU0lHTkFMX1JVTl9M
QVNULAotICAgICAgICAgICAgICAgICAgICAgR19TVFJVQ1RfT0ZGU0VUKFdlYktpdFdlYkxvYWRl
ckNsaWVudENsYXNzLCBwcm92aXNpb25hbF9sb2FkX2ZhaWxlZCksCi0gICAgICAgICAgICAgICAg
ICAgICBnX3NpZ25hbF9hY2N1bXVsYXRvcl90cnVlX2hhbmRsZWQsIE5VTEwsCi0gICAgICAgICAg
ICAgICAgICAgICB3ZWJraXRfbWFyc2hhbF9CT09MRUFOX19PQkpFQ1RfU1RSSU5HX1BPSU5URVIs
Ci0gICAgICAgICAgICAgICAgICAgICBHX1RZUEVfQk9PTEVBTiwgMywKLSAgICAgICAgICAgICAg
ICAgICAgIFdFQktJVF9UWVBFX1dFQl9WSUVXLAotICAgICAgICAgICAgICAgICAgICAgR19UWVBF
X1NUUklORywKLSAgICAgICAgICAgICAgICAgICAgIEdfVFlQRV9QT0lOVEVSKTsKLQotICAgIC8q
KgotICAgICAqIFdlYktpdFdlYkxvYWRlckNsaWVudDo6bG9hZC1jb21taXR0ZWQ6Ci0gICAgICog
QGxvYWRlcl9jbGllbnQ6IHRoZSAjV2ViS2l0V2ViTG9hZGVyQ2xpZW50Ci0gICAgICogQHdlYl92
aWV3OiB0aGUgI1dlYktpdFdlYlZpZXcgYXNzb2NpYXRlZCB3aXRoIHRoaXMgZXZlbnQKLSAgICAg
KgotICAgICAqIFRoaXMgc2lnbmFsIGlzIGVtaXR0ZWQgd2hlbiBjb250ZW50IHN0YXJ0cyBhcnJp
dmluZyBmb3IgYSBwYWdlIGxvYWQuCi0gICAgICogVGhlIG5lY2Vzc2FyeSB0cmFuc3BvcnQgcmVx
dWlyZW1lbnRzIGFyZSBzdGFiaWxpc2hlZCwgYW5kIHRoZQotICAgICAqIGxvYWQgaXMgYmVpbmcg
cGVyZm9ybWVkLgotICAgICAqCi0gICAgICogVGhpcyBzaWduYWwgaXMgZW1pdHRlZCBhZnRlciAj
V2ViS2l0V2ViTG9hZGVyQ2xpZW50Ojpwcm92aXNpb25hbC1sb2FkLXN0YXJ0ZWQuCi0gICAgICoK
LSAgICAgKiBSZXR1cm5zOiAlVFJVRSB0byBzdG9wIG90aGVyIGhhbmRsZXJzIGZyb20gYmVpbmcg
aW52b2tlZCBmb3IgdGhlIGV2ZW50LgotICAgICAqICAgJUZBTFNFIHRvIHByb3BhZ2F0ZSB0aGUg
ZXZlbnQgZnVydGhlci4KLSAgICAgKi8KLSAgICBzaWduYWxzW0xPQURfQ09NTUlUVEVEXSA9Ci0g
ICAgICAgIGdfc2lnbmFsX25ldygibG9hZC1jb21taXR0ZWQiLAotICAgICAgICAgICAgICAgICAg
ICAgR19UWVBFX0ZST01fQ0xBU1Mob2JqZWN0Q2xhc3MpLAotICAgICAgICAgICAgICAgICAgICAg
R19TSUdOQUxfUlVOX0xBU1QsCi0gICAgICAgICAgICAgICAgICAgICBHX1NUUlVDVF9PRkZTRVQo
V2ViS2l0V2ViTG9hZGVyQ2xpZW50Q2xhc3MsIGxvYWRfY29tbWl0dGVkKSwKLSAgICAgICAgICAg
ICAgICAgICAgIGdfc2lnbmFsX2FjY3VtdWxhdG9yX3RydWVfaGFuZGxlZCwgTlVMTCwKLSAgICAg
ICAgICAgICAgICAgICAgIHdlYmtpdF9tYXJzaGFsX0JPT0xFQU5fX09CSkVDVCwKLSAgICAgICAg
ICAgICAgICAgICAgIEdfVFlQRV9CT09MRUFOLCAxLAotICAgICAgICAgICAgICAgICAgICAgV0VC
S0lUX1RZUEVfV0VCX1ZJRVcpOwotICAgIC8qKgotICAgICAqIFdlYktpdFdlYkxvYWRlckNsaWVu
dDo6bG9hZC1maW5pc2hlZDoKLSAgICAgKiBAbG9hZGVyX2NsaWVudDogdGhlICNXZWJLaXRXZWJM
b2FkZXJDbGllbnQKLSAgICAgKiBAd2ViX3ZpZXc6IHRoZSAjV2ViS2l0V2ViVmlldyBhc3NvY2lh
dGVkIHdpdGggdGhpcyBldmVudAotICAgICAqCi0gICAgICogVGhpcyBzaWduYWwgaXMgZW1pdHRl
ZCB3aGVuIGEgcGFnZSBsb2FkIGNvbXBsZXRlcywgdGhhdCBpcywgd2hlbiBhbGwKLSAgICAgKiB0
aGUgcmVzb3VyY2VzIGFyZSBkb25lIGxvYWRpbmcgd2l0aCBubyBlcnJvci4gSW4gY2FzZSBvZiBl
cnJvcnMKLSAgICAgKiBkdXJpbmcgbG9hZGluZywgdGhlIGxvYWQgZmluaXNoZXMgd2hlbiBlaXRo
ZXIKLSAgICAgKiAjV2ViS2l0V2ViTG9hZGVyQ2xpZW50Ojpwcm92aXNpb25hbC1sb2FkLWZhaWxl
ZCBvciAjV2ViS2l0V2ViTG9hZGVyQ2xpZW50Ojpsb2FkLWZhaWxlZAotICAgICAqIGFyZSBlbWl0
dGVkLgotICAgICAqCi0gICAgICogVGhpcyBzaWduYWwgaXMgZW1pdHRlZCBhZnRlciAjV2ViS2l0
V2ViTG9hZGVyQ2xpZW50Ojpsb2FkLWNvbW1pdHRlZC4KLSAgICAgKgotICAgICAqIFJldHVybnM6
ICVUUlVFIHRvIHN0b3Agb3RoZXIgaGFuZGxlcnMgZnJvbSBiZWluZyBpbnZva2VkIGZvciB0aGUg
ZXZlbnQuCi0gICAgICogICAlRkFMU0UgdG8gcHJvcGFnYXRlIHRoZSBldmVudCBmdXJ0aGVyLgot
ICAgICAqLwotICAgIHNpZ25hbHNbTE9BRF9GSU5JU0hFRF0gPQotICAgICAgICBnX3NpZ25hbF9u
ZXcoImxvYWQtZmluaXNoZWQiLAotICAgICAgICAgICAgICAgICAgICAgR19UWVBFX0ZST01fQ0xB
U1Mob2JqZWN0Q2xhc3MpLAotICAgICAgICAgICAgICAgICAgICAgR19TSUdOQUxfUlVOX0xBU1Qs
Ci0gICAgICAgICAgICAgICAgICAgICBHX1NUUlVDVF9PRkZTRVQoV2ViS2l0V2ViTG9hZGVyQ2xp
ZW50Q2xhc3MsIGxvYWRfZmluaXNoZWQpLAotICAgICAgICAgICAgICAgICAgICAgZ19zaWduYWxf
YWNjdW11bGF0b3JfdHJ1ZV9oYW5kbGVkLCBOVUxMLAotICAgICAgICAgICAgICAgICAgICAgd2Vi
a2l0X21hcnNoYWxfQk9PTEVBTl9fT0JKRUNULAotICAgICAgICAgICAgICAgICAgICAgR19UWVBF
X0JPT0xFQU4sIDEsCi0gICAgICAgICAgICAgICAgICAgICBXRUJLSVRfVFlQRV9XRUJfVklFVyk7
Ci0KLSAgICAvKioKLSAgICAgKiBXZWJLaXRXZWJMb2FkZXJDbGllbnQ6OmxvYWQtZmFpbGVkOgot
ICAgICAqIEBsb2FkZXJfY2xpZW50OiB0aGUgI1dlYktpdFdlYkxvYWRlckNsaWVudAotICAgICAq
IEB3ZWJfdmlldzogdGhlICNXZWJLaXRXZWJWaWV3IGFzc29jaWF0ZWQgd2l0aCB0aGlzIGV2ZW50
Ci0gICAgICogQGVycm9yOiB0aGUgI0dFcnJvciB0aGF0IHdhcyB0cmlnZ2VyZWQKLSAgICAgKgot
ICAgICAqIFRoaXMgc2lnbmFsIGlzIGVtaXR0ZWQgd2hlbiBhbiBlcnJvciBvY2N1cnMgbG9hZGlu
ZyBhIGNvbW1pdHRlZCBkYXRhIHNvdXJjZS4KLSAgICAgKiBCeSBkZWZhdWx0LCBpZiB0aGUgc2ln
bmFsIGlzIG5vdCBoYW5kbGVkLCBhIHN0b2NrIGVycm9yIHBhZ2Ugd2lsbCBiZSBkaXNwbGF5ZWQu
Ci0gICAgICogWW91IG5lZWQgdG8gaGFuZGxlIHRoZSBzaWduYWwgaWYgeW91IHdhbnQgdG8gcHJv
dmlkZSB5b3VyIG93biBlcnJvciBwYWdlLiBUaGlzCi0gICAgICogc2lnbmFsIGZpbmlzaGVzIHRo
ZSBsb2FkIHNvIG5vIG90aGVyIHNpZ25hbHMgd2lsbCBiZSBlbWl0dGVkIGFmdGVyIHRoaXMgb25l
LgotICAgICAqCi0gICAgICogVGhpcyBzaWduYWwgaXMgZW1pdHRlZCBhZnRlciAjV2ViS2l0V2Vi
TG9hZGVyQ2xpZW50Ojpsb2FkLWNvbW1pdHRlZC4KLSAgICAgKgotICAgICAqIFJldHVybnM6ICVU
UlVFIHRvIHN0b3Agb3RoZXIgaGFuZGxlcnMgZnJvbSBiZWluZyBpbnZva2VkIGZvciB0aGUgZXZl
bnQuCi0gICAgICogICAlRkFMU0UgdG8gcHJvcGFnYXRlIHRoZSBldmVudCBmdXJ0aGVyLgotICAg
ICAqLwotICAgIHNpZ25hbHNbTE9BRF9GQUlMRURdID0KLSAgICAgICAgZ19zaWduYWxfbmV3KCJs
b2FkLWZhaWxlZCIsCi0gICAgICAgICAgICAgICAgICAgICBHX1RZUEVfRlJPTV9DTEFTUyhvYmpl
Y3RDbGFzcyksCi0gICAgICAgICAgICAgICAgICAgICBHX1NJR05BTF9SVU5fTEFTVCwKLSAgICAg
ICAgICAgICAgICAgICAgIEdfU1RSVUNUX09GRlNFVChXZWJLaXRXZWJMb2FkZXJDbGllbnRDbGFz
cywgbG9hZF9mYWlsZWQpLAotICAgICAgICAgICAgICAgICAgICAgZ19zaWduYWxfYWNjdW11bGF0
b3JfdHJ1ZV9oYW5kbGVkLCBOVUxMLAotICAgICAgICAgICAgICAgICAgICAgd2Via2l0X21hcnNo
YWxfQk9PTEVBTl9fT0JKRUNUX1NUUklOR19QT0lOVEVSLAotICAgICAgICAgICAgICAgICAgICAg
R19UWVBFX0JPT0xFQU4sIDMsCi0gICAgICAgICAgICAgICAgICAgICBXRUJLSVRfVFlQRV9XRUJf
VklFVywKLSAgICAgICAgICAgICAgICAgICAgIEdfVFlQRV9TVFJJTkcsCi0gICAgICAgICAgICAg
ICAgICAgICBHX1RZUEVfUE9JTlRFUik7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJMb2FkZXJDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYkxvYWRlckNsaWVudC5oCmluZGV4IDg1YTBlYWIu
LmM2MDQ0YmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dl
YktpdFdlYkxvYWRlckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
Z3RrL1dlYktpdFdlYkxvYWRlckNsaWVudC5oCkBAIC0xNywxNSArMTcsMTEgQEAKICAqIEJvc3Rv
biwgTUEgMDIxMTAtMTMwMSwgVVNBLgogICovCiAKLSNpZiAhZGVmaW5lZChfX1dFQktJVDJfSF9J
TlNJREVfXykgJiYgIWRlZmluZWQoV0VCS0lUMl9DT01QSUxBVElPTikKLSNlcnJvciAiT25seSA8
d2Via2l0Mi93ZWJraXQyLmg+IGNhbiBiZSBpbmNsdWRlZCBkaXJlY3RseS4iCi0jZW5kaWYKLQog
I2lmbmRlZiBXZWJLaXRXZWJMb2FkZXJDbGllbnRfaAogI2RlZmluZSBXZWJLaXRXZWJMb2FkZXJD
bGllbnRfaAogCiAjaW5jbHVkZSA8Z2xpYi1vYmplY3QuaD4KLSNpbmNsdWRlIDx3ZWJraXQyL1dl
YktpdERlZmluZXMuaD4KKyNpbmNsdWRlIDxXZWJLaXQyL1dlYktpdDIuaD4KIAogR19CRUdJTl9E
RUNMUwogCkBAIC0zNiwzNCArMzIsMTkgQEAgR19CRUdJTl9ERUNMUwogI2RlZmluZSBXRUJLSVRf
SVNfV0VCX0xPQURFUl9DTElFTlRfQ0xBU1Moa2xhc3MpIChHX1RZUEVfQ0hFQ0tfQ0xBU1NfVFlQ
RSgoa2xhc3MpLCAgV0VCS0lUX1RZUEVfV0VCX0xPQURFUl9DTElFTlQpKQogI2RlZmluZSBXRUJL
SVRfV0VCX0xPQURFUl9DTElFTlRfR0VUX0NMQVNTKG9iaikgIChHX1RZUEVfSU5TVEFOQ0VfR0VU
X0NMQVNTKChvYmopLCAgV0VCS0lUX1RZUEVfV0VCX0xPQURFUl9DTElFTlQsIFdlYktpdFdlYkxv
YWRlckNsaWVudENsYXNzKSkKIAordHlwZWRlZiBzdHJ1Y3QgX1dlYktpdFdlYkxvYWRlckNsaWVu
dCAgICAgIFdlYktpdFdlYkxvYWRlckNsaWVudDsKK3R5cGVkZWYgc3RydWN0IF9XZWJLaXRXZWJM
b2FkZXJDbGllbnRDbGFzcyBXZWJLaXRXZWJMb2FkZXJDbGllbnRDbGFzczsKKwogc3RydWN0IF9X
ZWJLaXRXZWJMb2FkZXJDbGllbnQgewogICAgIEdPYmplY3QgcGFyZW50OwogfTsKIAogc3RydWN0
IF9XZWJLaXRXZWJMb2FkZXJDbGllbnRDbGFzcyB7Ci0gICAgR09iamVjdENsYXNzIHBhcmVudF9j
bGFzczsKLQotICAgIC8qIHZpcnR1YWwgdGFibGUgKi8KLSAgICBnYm9vbGVhbiAoKiBwcm92aXNp
b25hbF9sb2FkX3N0YXJ0ZWQpICAgICAgICAgICAgICAgICAgKFdlYktpdFdlYkxvYWRlckNsaWVu
dCAqbG9hZGVyX2NsaWVudCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFdlYktpdFdlYlZpZXcgICAgICAgICAqd2ViX3ZpZXcpOwot
ICAgIGdib29sZWFuICgqIHByb3Zpc2lvbmFsX2xvYWRfcmVjZWl2ZWRfc2VydmVyX3JlZGlyZWN0
KSAoV2ViS2l0V2ViTG9hZGVyQ2xpZW50ICpsb2FkZXJfY2xpZW50LAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV2ViS2l0V2ViVmll
dyAgICAgICAgICp3ZWJfdmlldyk7Ci0gICAgZ2Jvb2xlYW4gKCogcHJvdmlzaW9uYWxfbG9hZF9m
YWlsZWQpICAgICAgICAgICAgICAgICAgIChXZWJLaXRXZWJMb2FkZXJDbGllbnQgKmxvYWRlcl9j
bGllbnQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBXZWJLaXRXZWJWaWV3ICAgICAgICAgKndlYl92aWV3LAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2No
YXIgICAgICAgICAgICpmYWlsaW5nX3VyaSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdFcnJvciAgICAgICAgICAgICAgICAqZXJy
b3IpOwotICAgIGdib29sZWFuICgqIGxvYWRfY29tbWl0dGVkKSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAoV2ViS2l0V2ViTG9hZGVyQ2xpZW50ICpsb2FkZXJfY2xpZW50LAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV2ViS2l0
V2ViVmlldyAgICAgICAgICp3ZWJfdmlldyk7Ci0gICAgZ2Jvb2xlYW4gKCogbG9hZF9maW5pc2hl
ZCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChXZWJLaXRXZWJMb2FkZXJDbGllbnQgKmxv
YWRlcl9jbGllbnQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBXZWJLaXRXZWJWaWV3ICAgICAgICAgKndlYl92aWV3KTsKLSAgICBn
Ym9vbGVhbiAoKiBsb2FkX2ZhaWxlZCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFdl
YktpdFdlYkxvYWRlckNsaWVudCAqbG9hZGVyX2NsaWVudCwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdlYktpdFdlYlZpZXcgICAg
ICAgICAqd2ViX3ZpZXcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBnY2hhciAgICAgICAgICAgKmZhaWxpbmdfdXJpLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0Vycm9yICAgICAgICAgICAgICAgICplcnJvcik7CisgICAgR09iamVjdENsYXNzIHBhcmVu
dENsYXNzOwogfTsKIAotV0VCS0lUX0FQSSBHVHlwZQotd2Via2l0X3dlYl9sb2FkZXJfY2xpZW50
X2dldF90eXBlICh2b2lkKTsKK0dUeXBlIHdlYmtpdF93ZWJfbG9hZGVyX2NsaWVudF9nZXRfdHlw
ZSAodm9pZCk7Cit2b2lkIHdlYmtpdFdlYkxvYWRlckNsaWVudEF0dGFjaExvYWRlckNsaWVudFRv
UGFnZShXZWJLaXRXZWJMb2FkZXJDbGllbnQqLCBXS1BhZ2VSZWYpOwogCiBHX0VORF9ERUNMUwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJM
b2FkZXJDbGllbnRQcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9X
ZWJLaXRXZWJMb2FkZXJDbGllbnRQcml2YXRlLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDIyNWEyYTQuLjAwMDAwMDAKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9n
dGsvV2ViS2l0V2ViTG9hZGVyQ2xpZW50UHJpdmF0ZS5oCisrKyAvZGV2L251bGwKQEAgLTEsMzQg
KzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMSBJZ2FsaWEgUy5MLgotICoKLSAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgot
ICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgot
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICog
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAq
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwot
Ci0jaWZuZGVmIFdlYktpdFdlYkxvYWRlckNsaWVudFByaXZhdGVfaAotI2RlZmluZSBXZWJLaXRX
ZWJMb2FkZXJDbGllbnRQcml2YXRlX2gKLQotI2luY2x1ZGUgIldlYktpdFdlYkxvYWRlckNsaWVu
dC5oIgotI2luY2x1ZGUgPFdlYktpdDIvV2ViS2l0Mi5oPgotCi12b2lkIHdlYmtpdFdlYkxvYWRl
ckNsaWVudEF0dGFjaExvYWRlckNsaWVudFRvUGFnZShXZWJLaXRXZWJMb2FkZXJDbGllbnQqLCBX
S1BhZ2VSZWYpOwotCi0jZW5kaWYgLy8gV2ViS2l0V2ViTG9hZGVyQ2xpZW50UHJpdmF0ZV9oCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3
LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXcuY3Bw
CmluZGV4IDY5MTM4ZDAuLjViY2Q3YjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXcuY3BwCkBAIC0yMiwxMiArMjIsMTMgQEAKICNpbmNs
dWRlICJXZWJLaXRXZWJWaWV3LmgiCiAKICNpbmNsdWRlICJXZWJLaXRCYWNrRm9yd2FyZExpc3RQ
cml2YXRlLmgiCisjaW5jbHVkZSAiV2ViS2l0RW51bVR5cGVzLmgiCisjaW5jbHVkZSAiV2ViS2l0
RXJyb3IuaCIKICNpbmNsdWRlICJXZWJLaXRNYXJzaGFsLmgiCiAjaW5jbHVkZSAiV2ViS2l0U2V0
dGluZ3NQcml2YXRlLmgiCiAjaW5jbHVkZSAiV2ViS2l0VUlDbGllbnQuaCIKICNpbmNsdWRlICJX
ZWJLaXRXZWJDb250ZXh0UHJpdmF0ZS5oIgogI2luY2x1ZGUgIldlYktpdFdlYkxvYWRlckNsaWVu
dC5oIgotI2luY2x1ZGUgIldlYktpdFdlYkxvYWRlckNsaWVudFByaXZhdGUuaCIKICNpbmNsdWRl
ICJXZWJLaXRXZWJWaWV3QmFzZVByaXZhdGUuaCIKICNpbmNsdWRlICJXZWJLaXRXZWJWaWV3UHJp
dmF0ZS5oIgogI2luY2x1ZGUgIldlYktpdFdpbmRvd1Byb3BlcnRpZXNQcml2YXRlLmgiCkBAIC00
NSw2ICs0Niw5IEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7CiB1c2luZyBuYW1lc3BhY2UgV2Vi
Q29yZTsKIAogZW51bSB7CisgICAgTE9BRF9DSEFOR0VELAorICAgIExPQURfRkFJTEVELAorCiAg
ICAgQ1JFQVRFLAogICAgIFJFQURZX1RPX1NIT1csCiAgICAgQ0xPU0UsCkBAIC04Myw2ICs4Nywx
OSBAQCBzdGF0aWMgZ3VpbnQgc2lnbmFsc1tMQVNUX1NJR05BTF0gPSB7IDAsIH07CiAKIEdfREVG
SU5FX1RZUEUoV2ViS2l0V2ViVmlldywgd2Via2l0X3dlYl92aWV3LCBXRUJLSVRfVFlQRV9XRUJf
VklFV19CQVNFKQogCitzdGF0aWMgZ2Jvb2xlYW4gd2Via2l0V2ViVmlld0xvYWRGYWlsKFdlYktp
dFdlYlZpZXcqIHdlYlZpZXcsIFdlYktpdExvYWRFdmVudCwgY29uc3QgY2hhciogZmFpbGluZ1VS
SSwgR0Vycm9yKiBlcnJvcikKK3sKKyAgICBpZiAoZ19lcnJvcl9tYXRjaGVzKGVycm9yLCBXRUJL
SVRfTkVUV09SS19FUlJPUiwgV0VCS0lUX05FVFdPUktfRVJST1JfQ0FOQ0VMTEVEKQorICAgICAg
ICB8fCBnX2Vycm9yX21hdGNoZXMoZXJyb3IsIFdFQktJVF9QT0xJQ1lfRVJST1IsIFdFQktJVF9Q
T0xJQ1lfRVJST1JfRlJBTUVfTE9BRF9JTlRFUlJVUFRFRF9CWV9QT0xJQ1lfQ0hBTkdFKQorICAg
ICAgICB8fCBnX2Vycm9yX21hdGNoZXMoZXJyb3IsIFdFQktJVF9QTFVHSU5fRVJST1IsIFdFQktJ
VF9QTFVHSU5fRVJST1JfV0lMTF9IQU5ETEVfTE9BRCkpCisgICAgICAgIHJldHVybiBGQUxTRTsK
KworICAgIEdPd25QdHI8Y2hhcj4gaHRtbFN0cmluZyhnX3N0cmR1cF9wcmludGYoIjxodG1sPjxi
b2R5PiVzPC9ib2R5PjwvaHRtbD4iLCBlcnJvci0+bWVzc2FnZSkpOworICAgIHdlYmtpdF93ZWJf
dmlld19sb2FkX2FsdGVybmF0ZV9odG1sKHdlYlZpZXcsIGh0bWxTdHJpbmcuZ2V0KCksIDAsIGZh
aWxpbmdVUkkpOworCisgICAgcmV0dXJuIFRSVUU7Cit9CisKIHN0YXRpYyBHdGtXaWRnZXQqIHdl
YmtpdFdlYlZpZXdDcmVhdGUoV2ViS2l0V2ViVmlldyopCiB7CiAgICAgcmV0dXJuIDA7CkBAIC0y
MzAsNiArMjQ3LDcgQEAgc3RhdGljIHZvaWQgd2Via2l0X3dlYl92aWV3X2NsYXNzX2luaXQoV2Vi
S2l0V2ViVmlld0NsYXNzKiB3ZWJWaWV3Q2xhc3MpCiAgICAgZ09iamVjdENsYXNzLT5nZXRfcHJv
cGVydHkgPSB3ZWJraXRXZWJWaWV3R2V0UHJvcGVydHk7CiAgICAgZ09iamVjdENsYXNzLT5maW5h
bGl6ZSA9IHdlYmtpdFdlYlZpZXdGaW5hbGl6ZTsKIAorICAgIHdlYlZpZXdDbGFzcy0+bG9hZF9m
YWlsZWQgPSB3ZWJraXRXZWJWaWV3TG9hZEZhaWw7CiAgICAgd2ViVmlld0NsYXNzLT5jcmVhdGUg
PSB3ZWJraXRXZWJWaWV3Q3JlYXRlOwogICAgIHdlYlZpZXdDbGFzcy0+c2NyaXB0X2FsZXJ0ID0g
d2Via2l0V2ViVmlld1NjcmlwdEFsZXJ0OwogICAgIHdlYlZpZXdDbGFzcy0+c2NyaXB0X2NvbmZp
cm0gPSB3ZWJraXRXZWJWaWV3U2NyaXB0Q29uZmlybTsKQEAgLTI5Nyw2ICszMTUsOTYgQEAgc3Rh
dGljIHZvaWQgd2Via2l0X3dlYl92aWV3X2NsYXNzX2luaXQoV2ViS2l0V2ViVmlld0NsYXNzKiB3
ZWJWaWV3Q2xhc3MpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFdFQktJVF9QQVJBTV9SRUFEQUJMRSkpOwogCiAgICAgLyoqCisgICAgICog
V2ViS2l0V2ViVmlldzo6bG9hZC1jaGFuZ2VkOgorICAgICAqIEB3ZWJfdmlldzogdGhlICNXZWJL
aXRXZWJWaWV3IG9uIHdoaWNoIHRoZSBzaWduYWwgaXMgZW1pdHRlZAorICAgICAqIEBsb2FkX2V2
ZW50OiB0aGUgI1dlYktpdExvYWRFdmVudAorICAgICAqCisgICAgICogRW1pdHRlZCB3aGVuIHRo
ZSBhIGxvYWQgb3BlcmF0aW9uIGluIEB3ZWJfdmlldyBjaGFuZ2VzLgorICAgICAqIFRoZSBzaWdu
YWwgaXMgYWx3YXlzIGVtaXR0ZWQgd2l0aCAlV0VCS0lUX0xPQURfU1RBUlRFRCB3aGVuIGEKKyAg
ICAgKiBuZXcgbG9hZCByZXF1ZXN0IGlzIG1hZGUgYW5kICVXRUJLSVRfTE9BRF9GSU5JU0hFRCB3
aGVuIHRoZSBsb2FkCisgICAgICogZmluaXNoZXMgc3VjY2Vzc2Z1bGx5IG9yIGR1ZSB0byBhbiBl
cnJvci4gV2hlbiB0aGUgb25nb2luZyBsb2FkCisgICAgICogb3BlcmF0aW9uIGZhaWxzICNXZWJL
aXRXZWJWaWV3Ojpsb2FkLWZhaWxlZCBzaWduYWwgaXMgZW1pdHRlZAorICAgICAqIGJlZm9yZSAj
V2ViS2l0V2ViVmlldzo6bG9hZC1jaGFuZ2VkIGlzIGVtaXR0ZWQgd2l0aAorICAgICAqICVXRUJL
SVRfTE9BRF9GSU5JU0hFRC4KKyAgICAgKiBJZiBhIHJlZGlyZWN0aW9uIGlzIHJlY2VpdmVkIGZy
b20gdGhlIHNlcnZlciwgdGhpcyBzaWduYWwgaXMgZW1pdHRlZAorICAgICAqIHdpdGggJVdFQktJ
VF9MT0FEX1JFRElSRUNURUQgYWZ0ZXIgdGhlIGluaXRpYWwgZW1pc3Npb24gd2l0aAorICAgICAq
ICVXRUJLSVRfTE9BRF9TVEFSVEVEIGFuZCBiZWZvcmUgJVdFQktJVF9MT0FEX0NPTU1JVFRFRC4K
KyAgICAgKiBXaGVuIHRoZSBwYWdlIGNvbnRlbnQgc3RhcnRzIGFycml2aW5nIHRoZSBzaWduYWwg
aXMgZW1pdHRlZCB3aXRoCisgICAgICogJVdFQktJVF9MT0FEX0NPTU1JVFRFRCBldmVudC4KKyAg
ICAgKgorICAgICAqIFlvdSBjYW4gaGFuZGxlIHRoaXMgc2lnbmFsIGFuZCB1c2UgYSBzd2l0Y2gg
dG8gdHJhY2sgYW55IG9uZ29pbmcKKyAgICAgKiBsb2FkIG9wZXJhdGlvbi4KKyAgICAgKgorICAg
ICAqIDxpbmZvcm1hbGV4YW1wbGU+PHByb2dyYW1saXN0aW5nPgorICAgICAqIHN0YXRpYyB2b2lk
IHdlYl92aWV3X2xvYWRfY2hhbmdlZCAoV2ViS2l0V2ViVmlldyAgKndlYl92aWV3LAorICAgICAq
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV2ViS2l0TG9hZEV2ZW50IGxvYWRf
ZXZlbnQsCisgICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBncG9pbnRl
ciAgICAgICAgdXNlcl9kYXRhKQorICAgICAqIHsKKyAgICAgKiAgICAgc3dpdGNoIChsb2FkX2V2
ZW50KSB7CisgICAgICogICAgIGNhc2UgV0VCS0lUX0xPQURfU1RBUlRFRDoKKyAgICAgKiAgICAg
ICAgIC88IS0tIC0tPiogTmV3IGxvYWQsIHdlIGhhdmUgbm93IGEgcHJvdmlzaW9uYWwgVVJJICo8
IS0tIC0tPi8KKyAgICAgKiAgICAgICAgIHByb3Zpc2lvbmFsX3VyaSA9IHdlYmtpdF93ZWJfdmll
d19nZXRfdXJpICh3ZWJfdmlldyk7CisgICAgICogICAgICAgICAvPCEtLSAtLT4qIEhlcmUgd2Ug
Y291bGQgc3RhcnQgYSBzcGlubmVyIG9yIHVwZGF0ZSB0aGUKKyAgICAgKiAgICAgICAgICA8IS0t
IC0tPiogbG9jYXRpb24gYmFyIHdpdGggdGhlIHByb3Zpc2lvbmFsIFVSSSAqPCEtLSAtLT4vCisg
ICAgICogICAgICAgICBicmVhazsKKyAgICAgKiAgICAgY2FzZSBXRUJLSVRfTE9BRF9SRURJUkVD
VEVEOgorICAgICAqICAgICAgICAgcmVkaXJlY3RlZF91cmkgPSB3ZWJraXRfd2ViX3ZpZXdfZ2V0
X3VyaSAod2ViX3ZpZXcpOworICAgICAqICAgICAgICAgYnJlYWs7CisgICAgICogICAgIGNhc2Ug
V0VCS0lUX0xPQURfQ09NTUlUVEVEOgorICAgICAqICAgICAgICAgLzwhLS0gLS0+KiBUaGUgbG9h
ZCBpcyBiZWluZyBwZXJmb3JtZWQuIEN1cnJlbnQgVVJJIGlzCisgICAgICogICAgICAgICAgPCEt
LSAtLT4qIHRoZSBmaW5hbCBvbmUgYW5kIGl0IHdvbid0IGNoYW5nZSB1bmxlc3MgYSBuZXcKKyAg
ICAgKiAgICAgICAgICA8IS0tIC0tPiogbG9hZCBpcyByZXF1ZXN0ZWQgb3IgYSBuYXZpZ2F0aW9u
IHdpdGhpbiB0aGUKKyAgICAgKiAgICAgICAgICA8IS0tIC0tPiogc2FtZSBwYWdlIGlzIHBlcmZv
cm1lZCAqPCEtLSAtLT4vCisgICAgICogICAgICAgICB1cmkgPSB3ZWJraXRfd2ViX3ZpZXdfZ2V0
X3VyaSAod2ViX3ZpZXcpOworICAgICAqICAgICAgICAgYnJlYWs7CisgICAgICogICAgIGNhc2Ug
V0VCS0lUX0xPQURfRklOSVNIRUQ6CisgICAgICogICAgICAgICAvPCEtLSAtLT4qIExvYWQgZmlu
aXNoZWQsIHdlIGNhbiBub3cgc3RvcCB0aGUgc3Bpbm5lciAqPCEtLSAtLT4vCisgICAgICogICAg
ICAgICBicmVhazsKKyAgICAgKiAgICAgfQorICAgICAqIH0KKyAgICAgKiA8L3Byb2dyYW1saXN0
aW5nPjwvaW5mb3JtYWxleGFtcGxlPgorICAgICAqLworICAgIHNpZ25hbHNbTE9BRF9DSEFOR0VE
XSA9CisgICAgICAgIGdfc2lnbmFsX25ldygibG9hZC1jaGFuZ2VkIiwKKyAgICAgICAgICAgICAg
ICAgICAgIEdfVFlQRV9GUk9NX0NMQVNTKHdlYlZpZXdDbGFzcyksCisgICAgICAgICAgICAgICAg
ICAgICBHX1NJR05BTF9SVU5fTEFTVCwKKyAgICAgICAgICAgICAgICAgICAgIEdfU1RSVUNUX09G
RlNFVChXZWJLaXRXZWJWaWV3Q2xhc3MsIGxvYWRfY2hhbmdlZCksCisgICAgICAgICAgICAgICAg
ICAgICAwLCAwLAorICAgICAgICAgICAgICAgICAgICAgZ19jY2xvc3VyZV9tYXJzaGFsX1ZPSURf
X0VOVU0sCisgICAgICAgICAgICAgICAgICAgICBHX1RZUEVfTk9ORSwgMSwKKyAgICAgICAgICAg
ICAgICAgICAgIFdFQktJVF9UWVBFX0xPQURfRVZFTlQpOworCisgICAgLyoqCisgICAgICogV2Vi
S2l0V2ViVmlldzo6bG9hZC1mYWlsZWQ6CisgICAgICogQHdlYl92aWV3OiB0aGUgI1dlYktpdFdl
YlZpZXcgb24gd2hpY2ggdGhlIHNpZ25hbCBpcyBlbWl0dGVkCisgICAgICogQGxvYWRfZXZlbnQ6
IHRoZSAjV2ViS2l0TG9hZEV2ZW50IG9mIHRoZSBsb2FkIG9wZXJhdGlvbgorICAgICAqIEBmYWls
aW5nX3VyaTogdGhlIFVSSSB0aGF0IGZhaWxlZCB0byBsb2FkCisgICAgICogQGVycm9yOiB0aGUg
I0dFcnJvciB0aGF0IHdhcyB0cmlnZ2VyZWQKKyAgICAgKgorICAgICAqIEVtaXR0ZWQgd2hlbiBh
biBlcnJvciBvY2N1cnMgZHVyaW5nIGEgbG9hZCBvcGVyYXRpb24uCisgICAgICogSWYgdGhlIGVy
cm9yIGhhcHBlbmVkIHdoZW4gc3RhcnRpbmcgdG8gbG9hZCBkYXRhIGZvciBhIHBhZ2UKKyAgICAg
KiBAbG9hZF9ldmVudCB3aWxsIGJlICVXRUJLSVRfTE9BRF9TVEFSVEVELiBJZiBpdCBoYXBwZW5l
ZCB3aGlsZQorICAgICAqIGxvYWRpbmcgYSBjb21taXR0ZWQgZGF0YSBzb3VyY2UgQGxvYWRfZXZl
bnQgd2lsbCBiZSAlV0VCS0lUX0xPQURfQ09NTUlUVEVELgorICAgICAqIFNpbmNlIGEgbG9hZCBl
cnJvciBjYXVzZXMgdGhlIGxvYWQgb3BlcmF0aW9uIHRvIGZpbmlzaCwgdGhlIHNpZ25hbAorICAg
ICAqIFdlYktpdFdlYlZpZXc6OmxvYWQtY2hhbmdlZCB3aWxsIGFsd2F5cyBiZSBlbWl0dGVkIHdp
dGgKKyAgICAgKiAlV0VCS0lUX0xPQURfRklOSVNIRUQgZXZlbnQgcmlnaHQgYWZ0ZXIgdGhpcyBv
bmUuCisgICAgICoKKyAgICAgKiBCeSBkZWZhdWx0LCBpZiB0aGUgc2lnbmFsIGlzIG5vdCBoYW5k
bGVkLCBhIHN0b2NrIGVycm9yIHBhZ2Ugd2lsbCBiZSBkaXNwbGF5ZWQuCisgICAgICogWW91IG5l
ZWQgdG8gaGFuZGxlIHRoZSBzaWduYWwgaWYgeW91IHdhbnQgdG8gcHJvdmlkZSB5b3VyIG93biBl
cnJvciBwYWdlLgorICAgICAqLworICAgIHNpZ25hbHNbTE9BRF9GQUlMRURdID0KKyAgICAgICAg
Z19zaWduYWxfbmV3KCJsb2FkLWZhaWxlZCIsCisgICAgICAgICAgICAgICAgICAgICBHX1RZUEVf
RlJPTV9DTEFTUyh3ZWJWaWV3Q2xhc3MpLAorICAgICAgICAgICAgICAgICAgICAgR19TSUdOQUxf
UlVOX0xBU1QsCisgICAgICAgICAgICAgICAgICAgICBHX1NUUlVDVF9PRkZTRVQoV2ViS2l0V2Vi
Vmlld0NsYXNzLCBsb2FkX2ZhaWxlZCksCisgICAgICAgICAgICAgICAgICAgICBnX3NpZ25hbF9h
Y2N1bXVsYXRvcl90cnVlX2hhbmRsZWQsIDAsCisgICAgICAgICAgICAgICAgICAgICB3ZWJraXRf
bWFyc2hhbF9CT09MRUFOX19FTlVNX1NUUklOR19QT0lOVEVSLAorICAgICAgICAgICAgICAgICAg
ICAgR19UWVBFX0JPT0xFQU4sIDMsCisgICAgICAgICAgICAgICAgICAgICBXRUJLSVRfVFlQRV9M
T0FEX0VWRU5ULAorICAgICAgICAgICAgICAgICAgICAgR19UWVBFX1NUUklORywKKyAgICAgICAg
ICAgICAgICAgICAgIEdfVFlQRV9QT0lOVEVSKTsKKworICAgIC8qKgogICAgICAqIFdlYktpdFdl
YlZpZXc6OmNyZWF0ZToKICAgICAgKiBAd2ViX3ZpZXc6IHRoZSAjV2ViS2l0V2ViVmlldyBvbiB3
aGljaCB0aGUgc2lnbmFsIGlzIGVtaXR0ZWQKICAgICAgKgpAQCAtNDMwLDYgKzUzOCwyMCBAQCBz
dGF0aWMgdm9pZCB3ZWJraXRfd2ViX3ZpZXdfY2xhc3NfaW5pdChXZWJLaXRXZWJWaWV3Q2xhc3Mq
IHdlYlZpZXdDbGFzcykKIAogfQogCit2b2lkIHdlYmtpdFdlYlZpZXdMb2FkQ2hhbmdlZChXZWJL
aXRXZWJWaWV3KiB3ZWJWaWV3LCBXZWJLaXRMb2FkRXZlbnQgbG9hZEV2ZW50KQoreworICAgIGlm
IChsb2FkRXZlbnQgIT0gV0VCS0lUX0xPQURfRklOSVNIRUQpCisgICAgICAgIHdlYmtpdFdlYlZp
ZXdVcGRhdGVVUkkod2ViVmlldyk7CisgICAgZ19zaWduYWxfZW1pdCh3ZWJWaWV3LCBzaWduYWxz
W0xPQURfQ0hBTkdFRF0sIDAsIGxvYWRFdmVudCk7Cit9CisKK3ZvaWQgd2Via2l0V2ViVmlld0xv
YWRGYWlsZWQoV2ViS2l0V2ViVmlldyogd2ViVmlldywgV2ViS2l0TG9hZEV2ZW50IGxvYWRFdmVu
dCwgY29uc3QgY2hhciogZmFpbGluZ1VSSSwgR0Vycm9yICplcnJvcikKK3sKKyAgICBnYm9vbGVh
biByZXR1cm5WYWx1ZTsKKyAgICBnX3NpZ25hbF9lbWl0KHdlYlZpZXcsIHNpZ25hbHNbTE9BRF9G
QUlMRURdLCAwLCBsb2FkRXZlbnQsIGZhaWxpbmdVUkksIGVycm9yLCAmcmV0dXJuVmFsdWUpOwor
ICAgIGdfc2lnbmFsX2VtaXQod2ViVmlldywgc2lnbmFsc1tMT0FEX0NIQU5HRURdLCAwLCBXRUJL
SVRfTE9BRF9GSU5JU0hFRCk7Cit9CisKIHZvaWQgd2Via2l0V2ViVmlld1NldFRpdGxlKFdlYktp
dFdlYlZpZXcqIHdlYlZpZXcsIGNvbnN0IENTdHJpbmcmIHRpdGxlKQogewogICAgIFdlYktpdFdl
YlZpZXdQcml2YXRlKiBwcml2ID0gd2ViVmlldy0+cHJpdjsKQEAgLTU1MCw1MCArNjcyLDEzIEBA
IFdlYktpdFdlYkNvbnRleHQqIHdlYmtpdF93ZWJfdmlld19nZXRfY29udGV4dChXZWJLaXRXZWJW
aWV3ICp3ZWJWaWV3KQogfQogCiAvKioKLSAqIHdlYmtpdF93ZWJfdmlld19nZXRfbG9hZGVyX2Ns
aWVudDoKLSAqIEB3ZWJfdmlldzogYSAjV2ViS2l0V2ViVmlldwotICoKLSAqIFJldHVybnMgdGhl
ICNXZWJLaXRXZWJMb2FkZXJDbGllbnQgb2YgQHdlYl92aWV3LiBZb3UgY2FuIHVzZSBpdAotICog
dG8gbW9uaXRvciB0aGUgc3RhdHVzIG9mIGxvYWQgb3BlcmF0aW9ucyBoYXBwZW5pbmcgb24gQHdl
Yl92aWV3LgotICoKLSAqIFJldHVybnM6ICh0cmFuc2ZlciBub25lKTogdGhlICNXZWJLaXRXZWJM
b2FkZXJDbGllbnQgb2YgQHdlYl92aWV3LgotICovCi1XZWJLaXRXZWJMb2FkZXJDbGllbnQqIHdl
YmtpdF93ZWJfdmlld19nZXRfbG9hZGVyX2NsaWVudChXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3KQot
ewotICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKFdFQktJVF9JU19XRUJfVklFVyh3ZWJWaWV3KSwg
MCk7Ci0KLSAgICByZXR1cm4gd2ViVmlldy0+cHJpdi0+bG9hZGVyQ2xpZW50LmdldCgpOwotfQot
Ci0vKioKLSAqIHdlYmtpdF93ZWJfdmlld19zZXRfbG9hZGVyX2NsaWVudDoKLSAqIEB3ZWJfdmll
dzogYSAjV2ViS2l0V2ViVmlldwotICogQGxvYWRlcl9jbGllbnQ6IGEgI1dlYktpdFdlYkxvYWRl
ckNsaWVudAotICoKLSAqIFNldHMgdGhlICNXZWJLaXRXZWJMb2FkZXJDbGllbnQgdGhhdCB0aGUg
dmlldyB3aWxsIHVzZSBkdXJpbmcKLSAqIGxvYWQgb3BlcmF0aW9ucy4KLSAqLwotdm9pZCB3ZWJr
aXRfd2ViX3ZpZXdfc2V0X2xvYWRlcl9jbGllbnQoV2ViS2l0V2ViVmlldyogd2ViVmlldywgV2Vi
S2l0V2ViTG9hZGVyQ2xpZW50KiBsb2FkZXJDbGllbnQpCi17Ci0gICAgZ19yZXR1cm5faWZfZmFp
bChXRUJLSVRfSVNfV0VCX1ZJRVcod2ViVmlldykpOwotICAgIGdfcmV0dXJuX2lmX2ZhaWwoV0VC
S0lUX0lTX1dFQl9MT0FERVJfQ0xJRU5UKGxvYWRlckNsaWVudCkpOwotCi0gICAgV2ViS2l0V2Vi
Vmlld1ByaXZhdGUqIHByaXYgPSB3ZWJWaWV3LT5wcml2OwotICAgIGlmIChwcml2LT5sb2FkZXJD
bGllbnQuZ2V0KCkgPT0gbG9hZGVyQ2xpZW50KQotICAgICAgICByZXR1cm47Ci0KLSAgICBXZWJQ
YWdlUHJveHkqIHBhZ2UgPSB3ZWJraXRXZWJWaWV3QmFzZUdldFBhZ2UoV0VCS0lUX1dFQl9WSUVX
X0JBU0Uod2ViVmlldykpOwotICAgIHdlYmtpdFdlYlZpZXdTZXRMb2FkZXJDbGllbnQod2ViVmll
dywgbG9hZGVyQ2xpZW50LCB0b0FQSShwYWdlKSk7Ci19Ci0KLS8qKgogICogd2Via2l0X3dlYl92
aWV3X2xvYWRfdXJpOgogICogQHdlYl92aWV3OiBhICNXZWJLaXRXZWJWaWV3CiAgKiBAdXJpOiBh
biBVUkkgc3RyaW5nCiAgKgogICogUmVxdWVzdHMgbG9hZGluZyBvZiB0aGUgc3BlY2lmaWVkIFVS
SSBzdHJpbmcuCi0gKiBZb3UgY2FuIG1vbml0b3IgdGhlIHN0YXR1cyBvZiB0aGUgbG9hZCBvcGVy
YXRpb24gdXNpbmcgdGhlCi0gKiAjV2ViS2l0V2ViTG9hZGVyQ2xpZW50IG9mIEB3ZWJfdmlldy4g
U2VlIHdlYmtpdF93ZWJfdmlld19nZXRfbG9hZGVyX2NsaWVudCgpLgorICogWW91IGNhbiBtb25p
dG9yIHRoZSBsb2FkIG9wZXJhdGlvbiBieSBjb25uZWN0aW5nIHRvCisgKiAjV2ViS2l0V2ViVmll
dzo6bG9hZC1jaGFuZ2VkIHNpZ25hbC4KICAqLwogdm9pZCB3ZWJraXRfd2ViX3ZpZXdfbG9hZF91
cmkoV2ViS2l0V2ViVmlldyogd2ViVmlldywgY29uc3QgZ2NoYXIqIHVyaSkKIHsKQEAgLTYxNSw5
ICs3MDAsOCBAQCB2b2lkIHdlYmtpdF93ZWJfdmlld19sb2FkX3VyaShXZWJLaXRXZWJWaWV3KiB3
ZWJWaWV3LCBjb25zdCBnY2hhciogdXJpKQogICogTG9hZCB0aGUgZ2l2ZW4gQGNvbnRlbnQgc3Ry
aW5nIHdpdGggdGhlIHNwZWNpZmllZCBAYmFzZV91cmkuIAogICogUmVsYXRpdmUgVVJMcyBpbiB0
aGUgQGNvbnRlbnQgd2lsbCBiZSByZXNvbHZlZCBhZ2FpbnN0IEBiYXNlX3VyaS4KICAqIFdoZW4g
QGJhc2VfdXJpIGlzICVOVUxMLCBpdCBkZWZhdWx0cyB0byAiYWJvdXQ6YmxhbmsiLiBUaGUgbWlt
ZSB0eXBlIAotICogb2YgdGhlIGRvY3VtZW50IHdpbGwgYmUgInRleHQvaHRtbCIuIFlvdSBjYW4g
bW9uaXRvciB0aGUgc3RhdHVzIG9mIAotICogdGhlIGxvYWQgb3BlcmF0aW9uIHVzaW5nIHRoZSAj
V2ViS2l0V2ViTG9hZGVyQ2xpZW50IG9mIEB3ZWJfdmlldy4gCi0gKiBTZWUgd2Via2l0X3dlYl92
aWV3X2dldF9sb2FkZXJfY2xpZW50KCkuCisgKiBvZiB0aGUgZG9jdW1lbnQgd2lsbCBiZSAidGV4
dC9odG1sIi4gWW91IGNhbiBtb25pdG9yIHRoZSBsb2FkIG9wZXJhdGlvbgorICogYnkgY29ubmVj
dGluZyB0byAjV2ViS2l0V2ViVmlldzo6bG9hZC1jaGFuZ2VkIHNpZ25hbC4KICAqLwogdm9pZCB3
ZWJraXRfd2ViX3ZpZXdfbG9hZF9odG1sKFdlYktpdFdlYlZpZXcqIHdlYlZpZXcsIGNvbnN0IGdj
aGFyKiBjb250ZW50LCBjb25zdCBnY2hhciogYmFzZVVSSSkKIHsKQEAgLTYzNiw5ICs3MjAsOCBA
QCB2b2lkIHdlYmtpdF93ZWJfdmlld19sb2FkX2h0bWwoV2ViS2l0V2ViVmlldyogd2ViVmlldywg
Y29uc3QgZ2NoYXIqIGNvbnRlbnQsIGNvbgogICogQHBsYWluX3RleHQ6IFRoZSBwbGFpbiB0ZXh0
IHRvIGxvYWQKICAqCiAgKiBMb2FkIHRoZSBzcGVjaWZpZWQgQHBsYWluX3RleHQgc3RyaW5nIGlu
dG8gQHdlYl92aWV3LiBUaGUgbWltZSB0eXBlIG9mCi0gKiBkb2N1bWVudCB3aWxsIGJlICJ0ZXh0
L3BsYWluIi4gWW91IGNhbiBtb25pdG9yICB0aGUgc3RhdHVzIG9mIHRoZSBsb2FkIAotICogb3Bl
cmF0aW9uIHVzaW5nIHRoZSAjV2ViS2l0V2ViTG9hZGVyQ2xpZW50IG9mIEB3ZWJfdmlldy4gCi0g
KiBTZWUgd2Via2l0X3dlYl92aWV3X2dldF9sb2FkZXJfY2xpZW50KCkuCisgKiBkb2N1bWVudCB3
aWxsIGJlICJ0ZXh0L3BsYWluIi4gWW91IGNhbiBtb25pdG9yIHRoZSBsb2FkCisgKiBvcGVyYXRp
b24gYnkgY29ubmVjdGluZyB0byAjV2ViS2l0V2ViVmlldzo6bG9hZC1jaGFuZ2VkIHNpZ25hbC4K
ICAqLwogdm9pZCB3ZWJraXRfd2ViX3ZpZXdfbG9hZF9wbGFpbl90ZXh0KFdlYktpdFdlYlZpZXcq
IHdlYlZpZXcsIGNvbnN0IGdjaGFyKiBwbGFpblRleHQpCiB7CkBAIC02NTksMTIgKzc0MiwxMSBA
QCB2b2lkIHdlYmtpdF93ZWJfdmlld19sb2FkX3BsYWluX3RleHQoV2ViS2l0V2ViVmlldyogd2Vi
VmlldywgY29uc3QgZ2NoYXIqIHBsYWluVAogICoKICAqIFJlcXVlc3QgbG9hZGluZyBvZiBhbiBh
bHRlcm5hdGUgY29udGVudCBmb3IgYSBVUkkgdGhhdCBpcyB1bnJlYWNoYWJsZS4gVGhpcyBhbGxv
d3MgY2xpZW50cwogICogdG8gZGlzcGxheSBwYWdlLWxvYWRpbmcgZXJyb3JzIGluIHRoZSAjV2Vi
S2l0V2ViVmlldyBpdHNlbGYuIFRoaXMgaXMgdHlwaWNhbGx5IGNhbGxlZCBmcm9tCi0gKiAjV2Vi
S2l0V2ViTG9hZGVyQ2xpZW50Ojpwcm92aXNpb25hbC1sb2FkLWZhaWxlZCBvciAjV2ViS2l0V2Vi
TG9hZGVyQ2xpZW50Ojpsb2FkLWZhaWxlZAotICogc2lnbmFscy4KLSAqIFdoZW4gY2FsbGVkIGZy
b20gdGhvc2Ugc2lnbmFscyB0aGlzIG1ldGhvZCB3aWxsIHByZXNlcnZlIHRoZSBiYWNrLWZvcndh
cmQgbGlzdC4gVGhlIFVSSSBwYXNzZWQgaW4KKyAqICNXZWJLaXRXZWJWaWV3Ojpsb2FkLWZhaWxl
ZCBzaWduYWwuCisgKiBXaGVuIGNhbGxlZCBmcm9tIHRoYXQgc2lnbmFsIHRoaXMgbWV0aG9kIHdp
bGwgcHJlc2VydmUgdGhlIGJhY2stZm9yd2FyZCBsaXN0LiBUaGUgVVJJIHBhc3NlZCBpbgogICog
QGJhc2VfdXJpIGhhcyB0byBiZSBhbiBhYnNvbHV0ZSBVUkkuCi0gKiBZb3UgY2FuIG1vbml0b3Ig
dGhlIHN0YXR1cyBvZiB0aGUgbG9hZCBvcGVyYXRpb24gdXNpbmcgdGhlCi0gKiAjV2ViS2l0V2Vi
TG9hZGVyQ2xpZW50IG9mIEB3ZWJfdmlldy4gU2VlIHdlYmtpdF93ZWJfdmlld19nZXRfbG9hZGVy
X2NsaWVudCgpLgorICogWW91IGNhbiBtb25pdG9yIHRoZSBsb2FkIG9wZXJhdGlvbiBieSBjb25u
ZWN0aW5nIHRvCisgKiAjV2ViS2l0V2ViVmlldzo6bG9hZC1jaGFuZ2VkIHNpZ25hbC4KICAqLwog
dm9pZCB3ZWJraXRfd2ViX3ZpZXdfbG9hZF9hbHRlcm5hdGVfaHRtbChXZWJLaXRXZWJWaWV3KiB3
ZWJWaWV3LCBjb25zdCBnY2hhciogY29udGVudCwgY29uc3QgZ2NoYXIqIGJhc2VVUkksIGNvbnN0
IGdjaGFyKiB1bnJlYWNoYWJsZVVSSSkKIHsKQEAgLTY4NSw4ICs3NjcsOCBAQCB2b2lkIHdlYmtp
dF93ZWJfdmlld19sb2FkX2FsdGVybmF0ZV9odG1sKFdlYktpdFdlYlZpZXcqIHdlYlZpZXcsIGNv
bnN0IGdjaGFyKiBjbwogICogQHJlcXVlc3Q6IGEgI1dlYktpdFVSSVJlcXVlc3QgdG8gbG9hZAog
ICoKICAqIFJlcXVlc3RzIGxvYWRpbmcgb2YgdGhlIHNwZWNpZmllZCAjV2ViS2l0VVJJUmVxdWVz
dC4KLSAqIFlvdSBjYW4gbW9uaXRvciB0aGUgc3RhdHVzIG9mIHRoZSBsb2FkIG9wZXJhdGlvbiB1
c2luZyB0aGUKLSAqICNXZWJLaXRXZWJMb2FkZXJDbGllbnQgb2YgQHdlYl92aWV3LiBTZWUgd2Vi
a2l0X3dlYl92aWV3X2dldF9sb2FkZXJfY2xpZW50KCkuCisgKiBZb3UgY2FuIG1vbml0b3IgdGhl
IGxvYWQgb3BlcmF0aW9uIGJ5IGNvbm5lY3RpbmcgdG8KKyAqICNXZWJLaXRXZWJWaWV3Ojpsb2Fk
LWNoYW5nZWQgc2lnbmFsLgogICovCiB2b2lkIHdlYmtpdF93ZWJfdmlld19sb2FkX3JlcXVlc3Qo
V2ViS2l0V2ViVmlldyogd2ViVmlldywgV2ViS2l0VVJJUmVxdWVzdCogcmVxdWVzdCkKIHsKQEAg
LTc1NCwxMCArODM2LDggQEAgdm9pZCB3ZWJraXRfd2ViX3ZpZXdfcmVsb2FkX2J5cGFzc19jYWNo
ZShXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3KQogICogU3RvcHMgYW55IG9uZ29pbmcgbG9hZGluZyBv
cGVyYXRpb24gaW4gQHdlYl92aWV3LgogICogVGhpcyBtZXRob2QgZG9lcyBub3RoaW5nIGlmIG5v
IGNvbnRlbnQgaXMgYmVpbmcgbG9hZGVkLgogICogSWYgdGhlcmUgaXMgYSBsb2FkaW5nIG9wZXJh
dGlvbiBpbiBwcm9ncmVzcywgaXQgd2lsbCBiZSBjYW5jZWxsZWQgYW5kCi0gKiAjV2ViS2l0V2Vi
TG9hZGVyQ2xpZW50Ojpwcm92aXNpb25hbC1sb2FkLWZhaWxlZCBvcgotICogI1dlYktpdFdlYkxv
YWRlckNsaWVudDo6bG9hZC1mYWlsZWQgd2lsbCBiZSBlbWl0dGVkIG9uIHRoZSBjdXJyZW50Ci0g
KiAjV2ViS2l0V2ViTG9hZGVyQ2xpZW50IHdpdGggJVdFQktJVF9ORVRXT1JLX0VSUk9SX0NBTkNF
TExFRCBlcnJvci4KLSAqIFNlZSBhbHNvIHdlYmtpdF93ZWJfdmlld19nZXRfbG9hZGVyX2NsaWVu
dCgpLgorICogI1dlYktpdFdlYlZpZXc6OmxvYWQtZmFpbGVkIHNpZ25hbCB3aWxsIGJlIGVtaXR0
ZWQgd2l0aAorICogJVdFQktJVF9ORVRXT1JLX0VSUk9SX0NBTkNFTExFRCBlcnJvci4KICAqLwog
dm9pZCB3ZWJraXRfd2ViX3ZpZXdfc3RvcF9sb2FkaW5nKFdlYktpdFdlYlZpZXcqIHdlYlZpZXcp
CiB7CkBAIC03NzEsOCArODUxLDggQEAgdm9pZCB3ZWJraXRfd2ViX3ZpZXdfc3RvcF9sb2FkaW5n
KFdlYktpdFdlYlZpZXcqIHdlYlZpZXcpCiAgKiBAd2ViX3ZpZXc6IGEgI1dlYktpdFdlYlZpZXcK
ICAqCiAgKiBMb2FkcyB0aGUgcHJldmlvdXMgaGlzdG9yeSBpdGVtLgotICogWW91IGNhbiBtb25p
dG9yIHRoZSBzdGF0dXMgb2YgdGhlIGxvYWQgb3BlcmF0aW9uIHVzaW5nIHRoZQotICogI1dlYktp
dFdlYkxvYWRlckNsaWVudCBvZiBAd2ViX3ZpZXcuIFNlZSB3ZWJraXRfd2ViX3ZpZXdfZ2V0X2xv
YWRlcl9jbGllbnQoKS4KKyAqIFlvdSBjYW4gbW9uaXRvciB0aGUgbG9hZCBvcGVyYXRpb24gYnkg
Y29ubmVjdGluZyB0bworICogI1dlYktpdFdlYlZpZXc6OmxvYWQtY2hhbmdlZCBzaWduYWwuCiAg
Ki8KIHZvaWQgd2Via2l0X3dlYl92aWV3X2dvX2JhY2soV2ViS2l0V2ViVmlldyogd2ViVmlldykK
IHsKQEAgLTgwMiw4ICs4ODIsOCBAQCBnYm9vbGVhbiB3ZWJraXRfd2ViX3ZpZXdfY2FuX2dvX2Jh
Y2soV2ViS2l0V2ViVmlldyogd2ViVmlldykKICAqIEB3ZWJfdmlldzogYSAjV2ViS2l0V2ViVmll
dwogICoKICAqIExvYWRzIHRoZSBuZXh0IGhpc3RvcnkgaXRlbS4KLSAqIFlvdSBjYW4gbW9uaXRv
ciB0aGUgc3RhdHVzIG9mIHRoZSBsb2FkIG9wZXJhdGlvbiB1c2luZyB0aGUKLSAqICNXZWJLaXRX
ZWJMb2FkZXJDbGllbnQgb2YgQHdlYl92aWV3LiBTZWUgd2Via2l0X3dlYl92aWV3X2dldF9sb2Fk
ZXJfY2xpZW50KCkuCisgKiBZb3UgY2FuIG1vbml0b3IgdGhlIGxvYWQgb3BlcmF0aW9uIGJ5IGNv
bm5lY3RpbmcgdG8KKyAqICNXZWJLaXRXZWJWaWV3Ojpsb2FkLWNoYW5nZWQgc2lnbmFsLgogICov
CiB2b2lkIHdlYmtpdF93ZWJfdmlld19nb19mb3J3YXJkKFdlYktpdFdlYlZpZXcqIHdlYlZpZXcp
CiB7CkBAIC04NjUsMTQgKzk0NSwxNCBAQCBnYm9vbGVhbiB3ZWJraXRfd2ViX3ZpZXdfY2FuX2dv
X2ZvcndhcmQoV2ViS2l0V2ViVmlldyogd2ViVmlldykKICAqIDxsaXN0aXRlbT48cGFyYT4KICAq
ICAgSWYgdGhlcmUgaXMgYSBzZXJ2ZXIgcmVkaXJlY3Rpb24gZHVyaW5nIHRoZSBsb2FkIG9wZXJh
dGlvbiwKICAqICAgdGhlIGFjdGl2ZSBVUkkgaXMgdGhlIHJlZGlyZWN0ZWQgVVJJLiBXaGVuIHRo
ZSBzaWduYWwKLSAqICAgI1dlYktpdFdlYkxvYWRlckNsaWVudDo6cHJvdmlzaW9uYWwtbG9hZC1y
ZWNlaXZlZC1zZXJ2ZXItcmVkaXJlY3QKLSAqICAgaXMgZW1pdHRlZCwgdGhlIGFjdGl2ZSBVUkkg
aXMgYWxyZWFkeSB1cGRhdGVkIHRvIHRoZSByZWRpcmVjdGVkIFVSSS4KKyAqICAgI1dlYktpdFdl
YlZpZXc6OmxvYWQtY2hhbmdlZCBpcyBlbWl0dGVkIHdpdGggJVdFQktJVF9MT0FEX1JFRElSRUNU
RUQKKyAqICAgZXZlbnQsIHRoZSBhY3RpdmUgVVJJIGlzIGFscmVhZHkgdXBkYXRlZCB0byB0aGUg
cmVkaXJlY3RlZCBVUkkuCiAgKiA8L3BhcmE+PC9saXN0aXRlbT4KICAqIDxsaXN0aXRlbT48cGFy
YT4KLSAqICAgV2hlbiB0aGUgc2lnbmFsICNXZWJLaXRXZWJMb2FkZXJDbGllbnQ6OmxvYWQtY29t
bWl0dGVkIGlzIGVtaXR0ZWQsCi0gKiAgIHRoZSBhY3RpdmUgVVJJIGlzIHRoZSBmaW5hbCBvbmUg
YW5kIGl0IHdpbGwgbm90IGNoYW5nZSB1bmxlc3MKLSAqICAgYSBuZXcgbG9hZCBvcGVyYXRpb24g
aXMgc3RhcnRlZCBvciBhIG5hdmlnYXRpb24gYWN0aW9uIHdpdGhpbiB0aGUKLSAqICAgc2FtZSBw
YWdlIGlzIHBlcmZvcm1lZC4KKyAqICAgV2hlbiB0aGUgc2lnbmFsICNXZWJLaXRXZWJWaWV3Ojps
b2FkLWNoYW5nZWQgaXMgZW1pdHRlZAorICogICB3aXRoICVXRUJLSVRfTE9BRF9DT01NSVRURUQg
ZXZlbnQsIHRoZSBhY3RpdmUgVVJJIGlzIHRoZSBmaW5hbAorICogICBvbmUgYW5kIGl0IHdpbGwg
bm90IGNoYW5nZSB1bmxlc3MgYSBuZXcgbG9hZCBvcGVyYXRpb24gaXMgc3RhcnRlZAorICogICBv
ciBhIG5hdmlnYXRpb24gYWN0aW9uIHdpdGhpbiB0aGUgc2FtZSBwYWdlIGlzIHBlcmZvcm1lZC4K
ICAqIDwvcGFyYT48L2xpc3RpdGVtPgogICogPC9vcmRlcmVkbGlzdD4KICAqCkBAIC05NzAsOCAr
MTA1MCw4IEBAIFdlYktpdEJhY2tGb3J3YXJkTGlzdCogd2Via2l0X3dlYl92aWV3X2dldF9iYWNr
X2ZvcndhcmRfbGlzdChXZWJLaXRXZWJWaWV3KiB3ZWJWCiAgKiBAbGlzdF9pdGVtOiBhICNXZWJL
aXRCYWNrRm9yd2FyZExpc3RJdGVtCiAgKgogICogTG9hZHMgdGhlIHNwZWNpZmljIGhpc3Rvcnkg
aXRlbSBAbGlzdF9pdGVtLgotICogWW91IGNhbiBtb25pdG9yIHRoZSBzdGF0dXMgb2YgdGhlIGxv
YWQgb3BlcmF0aW9uIHVzaW5nIHRoZQotICogI1dlYktpdFdlYkxvYWRlckNsaWVudCBvZiBAd2Vi
X3ZpZXcuIFNlZSB3ZWJraXRfd2ViX3ZpZXdfZ2V0X2xvYWRlcl9jbGllbnQoKS4KKyAqIFlvdSBj
YW4gbW9uaXRvciB0aGUgbG9hZCBvcGVyYXRpb24gYnkgY29ubmVjdGluZyB0bworICogI1dlYktp
dFdlYlZpZXc6OmxvYWQtY2hhbmdlZCBzaWduYWwuCiAgKi8KIHZvaWQgd2Via2l0X3dlYl92aWV3
X2dvX3RvX2JhY2tfZm9yd2FyZF9saXN0X2l0ZW0oV2ViS2l0V2ViVmlldyogd2ViVmlldywgV2Vi
S2l0QmFja0ZvcndhcmRMaXN0SXRlbSogbGlzdEl0ZW0pCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3LmggYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3LmgKaW5kZXggNDdlOGQ0MS4uZmZiYWE4
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2Vi
Vmlldy5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZp
ZXcuaApAQCAtMzEsNyArMzEsNiBAQAogI2luY2x1ZGUgPHdlYmtpdDIvV2ViS2l0QmFja0Zvcndh
cmRMaXN0Lmg+CiAjaW5jbHVkZSA8d2Via2l0Mi9XZWJLaXREZWZpbmVzLmg+CiAjaW5jbHVkZSA8
d2Via2l0Mi9XZWJLaXRXZWJDb250ZXh0Lmg+Ci0jaW5jbHVkZSA8d2Via2l0Mi9XZWJLaXRXZWJM
b2FkZXJDbGllbnQuaD4KICNpbmNsdWRlIDx3ZWJraXQyL1dlYktpdFNldHRpbmdzLmg+CiAjaW5j
bHVkZSA8d2Via2l0Mi9XZWJLaXRVUklSZXF1ZXN0Lmg+CiAjaW5jbHVkZSA8d2Via2l0Mi9XZWJL
aXRXZWJWaWV3QmFzZS5oPgpAQCAtNDYsOCArNDUsMzIgQEAgR19CRUdJTl9ERUNMUwogI2RlZmlu
ZSBXRUJLSVRfSVNfV0VCX1ZJRVdfQ0xBU1Moa2xhc3MpIChHX1RZUEVfQ0hFQ0tfQ0xBU1NfVFlQ
RSgoa2xhc3MpLCAgV0VCS0lUX1RZUEVfV0VCX1ZJRVcpKQogI2RlZmluZSBXRUJLSVRfV0VCX1ZJ
RVdfR0VUX0NMQVNTKG9iaikgIChHX1RZUEVfSU5TVEFOQ0VfR0VUX0NMQVNTKChvYmopLCAgV0VC
S0lUX1RZUEVfV0VCX1ZJRVcsIFdlYktpdFdlYlZpZXdDbGFzcykpCiAKK3R5cGVkZWYgc3RydWN0
IF9XZWJLaXRXZWJWaWV3IFdlYktpdFdlYlZpZXc7Cit0eXBlZGVmIHN0cnVjdCBfV2ViS2l0V2Vi
Vmlld0NsYXNzIFdlYktpdFdlYlZpZXdDbGFzczsKIHR5cGVkZWYgc3RydWN0IF9XZWJLaXRXZWJW
aWV3UHJpdmF0ZSBXZWJLaXRXZWJWaWV3UHJpdmF0ZTsKIAorLyoqCisgKiBXZWJLaXRMb2FkRXZl
bnQKKyAqIEBXRUJLSVRfTE9BRF9TVEFSVEVEOiBBIG5ldyBsb2FkIHJlcXVlc3QgaGFzIGJlZW4g
bWFkZS4KKyAqIE5vIGRhdGEgaGFzIGJlZW4gcmVjZWl2ZWQgeWV0LCBlbXB0eSBzdHJ1Y3R1cmVz
IGhhdmUKKyAqIGJlZW4gYWxsb2NhdGVkIHRvIHBlcmZvcm0gdGhlIGxvYWQ7IHRoZSBsb2FkIG1h
eSBzdGlsbAorICogZmFpbCBmb3IgdHJhbnNwb3J0IGlzc3VlcyBzdWNoIGFzIG5vdCBiZWluZyBh
YmxlIHRvCisgKiByZXNvbHZlIGEgbmFtZSwgb3IgY29ubmVjdCB0byBhIHBvcnQuCisgKiBAV0VC
S0lUX0xPQURfUkVESVJFQ1RFRDogQSBwcm92aXNpb25hbCBkYXRhIHNvdXJjZSByZWNlaXZlZAor
ICogYSBzZXJ2ZXIgcmVkaXJlY3QuCisgKiBAV0VCS0lUX0xPQURfQ09NTUlUVEVEOiBUaGUgY29u
dGVudCBzdGFydGVkIGFycml2aW5nIGZvciBhIHBhZ2UgbG9hZC4KKyAqIFRoZSBuZWNlc3Nhcnkg
dHJhbnNwb3J0IHJlcXVpcmVtZW50cyBhcmUgc3RhYmlsaXNoZWQsIGFuZCB0aGUKKyAqIGxvYWQg
aXMgYmVpbmcgcGVyZm9ybWVkLgorICogQFdFQktJVF9MT0FEX0ZJTklTSEVEOiBMb2FkIGNvbXBs
ZXRlZC4gQWxsIHJlc291cmNlcyBhcmUgZG9uZSBsb2FkaW5nCisgKiBvciB0aGVyZSB3YXMgYW4g
ZXJyb3IgZHVyaW5nIHRoZSBsb2FkIG9wZXJhdGlvbi4KKyAqLwordHlwZWRlZiBlbnVtIHsKKyAg
ICBXRUJLSVRfTE9BRF9TVEFSVEVELAorICAgIFdFQktJVF9MT0FEX1JFRElSRUNURUQsCisgICAg
V0VCS0lUX0xPQURfQ09NTUlUVEVELAorICAgIFdFQktJVF9MT0FEX0ZJTklTSEVECit9IFdlYktp
dExvYWRFdmVudDsKKwogc3RydWN0IF9XZWJLaXRXZWJWaWV3IHsKICAgICBXZWJLaXRXZWJWaWV3
QmFzZSBwYXJlbnQ7CiAKQEAgLTU4LDE5ICs4MSwyNiBAQCBzdHJ1Y3QgX1dlYktpdFdlYlZpZXcg
ewogc3RydWN0IF9XZWJLaXRXZWJWaWV3Q2xhc3MgewogICAgIFdlYktpdFdlYlZpZXdCYXNlQ2xh
c3MgcGFyZW50OwogCi0gICAgR3RrV2lkZ2V0ICooKiBjcmVhdGUpICAgICAgICAgKFdlYktpdFdl
YlZpZXcgKndlYl92aWV3KTsKLSAgICB2b2lkICAgICAgICgqIHJlYWR5X3RvX3Nob3cpICAoV2Vi
S2l0V2ViVmlldyAqd2ViX3ZpZXcpOwotICAgIHZvaWQgICAgICAgKCogY2xvc2UpICAgICAgICAg
IChXZWJLaXRXZWJWaWV3ICp3ZWJfdmlldyk7Ci0KLSAgICBnYm9vbGVhbiAgICgqIHNjcmlwdF9h
bGVydCkgICAoV2ViS2l0V2ViVmlldyAqd2ViX3ZpZXcsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IGdjaGFyICAgKm1lc3NhZ2UpOwotICAgIGdib29sZWFuICAgKCog
c2NyaXB0X2NvbmZpcm0pIChXZWJLaXRXZWJWaWV3ICp3ZWJfdmlldywKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2NoYXIgICAqbWVzc2FnZSwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgZ2Jvb2xlYW4gICAgICAqY29uZmlybWVkKTsKLSAgICBn
Ym9vbGVhbiAgICgqIHNjcmlwdF9wcm9tcHQpICAoV2ViS2l0V2ViVmlldyAqd2ViX3ZpZXcsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdjaGFyICAgKm1lc3NhZ2Us
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdjaGFyICAgKmRlZmF1
bHRfdGV4dCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2NoYXIgICAgICAg
ICoqdGV4dCk7CisgICAgdm9pZCAgICAgICAoKiBsb2FkX2NoYW5nZWQpICAgKFdlYktpdFdlYlZp
ZXcgICp3ZWJfdmlldywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV2ViS2l0
TG9hZEV2ZW50IGxvYWRfZXZlbnQpOworICAgIGdib29sZWFuICAgKCogbG9hZF9mYWlsZWQpICAg
IChXZWJLaXRXZWJWaWV3ICAqd2ViX3ZpZXcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFdlYktpdExvYWRFdmVudCBsb2FkX2V2ZW50LAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCBnY2hhciAgICAqZmFpbGluZ191cmksCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdFcnJvciAgICAgICAgICplcnJvcik7CisKKyAgICBHdGtX
aWRnZXQgKigqIGNyZWF0ZSkgICAgICAgICAoV2ViS2l0V2ViVmlldyAgKndlYl92aWV3KTsKKyAg
ICB2b2lkICAgICAgICgqIHJlYWR5X3RvX3Nob3cpICAoV2ViS2l0V2ViVmlldyAgKndlYl92aWV3
KTsKKyAgICB2b2lkICAgICAgICgqIGNsb3NlKSAgICAgICAgICAoV2ViS2l0V2ViVmlldyAgKndl
Yl92aWV3KTsKKworICAgIGdib29sZWFuICAgKCogc2NyaXB0X2FsZXJ0KSAgIChXZWJLaXRXZWJW
aWV3ICAqd2ViX3ZpZXcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IGdjaGFyICAgICptZXNzYWdlKTsKKyAgICBnYm9vbGVhbiAgICgqIHNjcmlwdF9jb25maXJtKSAo
V2ViS2l0V2ViVmlldyAgKndlYl92aWV3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjb25zdCBnY2hhciAgICAqbWVzc2FnZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgZ2Jvb2xlYW4gICAgICAgKmNvbmZpcm1lZCk7CisgICAgZ2Jvb2xlYW4gICAoKiBz
Y3JpcHRfcHJvbXB0KSAgKFdlYktpdFdlYlZpZXcgICp3ZWJfdmlldywKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2NoYXIgICAgKm1lc3NhZ2UsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdjaGFyICAgICpkZWZhdWx0X3RleHQsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdjaGFyICAgICAgICAgKip0ZXh0KTsK
IAogICAgIC8qIFBhZGRpbmcgZm9yIGZ1dHVyZSBleHBhbnNpb24gKi8KICAgICB2b2lkICgqX3dl
YmtpdF9yZXNlcnZlZDApICh2b2lkKTsKQEAgLTk1LDEzICsxMjUsNiBAQCB3ZWJraXRfd2ViX3Zp
ZXdfbmV3X3dpdGhfY29udGV4dCAgICAgICAgICAgICAoV2ViS2l0V2ViQ29udGV4dCAgICAgICAg
ICAqY29udGV4dAogV0VCS0lUX0FQSSBXZWJLaXRXZWJDb250ZXh0ICoKIHdlYmtpdF93ZWJfdmll
d19nZXRfY29udGV4dCAgICAgICAgICAgICAgICAgIChXZWJLaXRXZWJWaWV3ICAgICAgICAgICAg
ICp3ZWJfdmlldyk7CiAKLVdFQktJVF9BUEkgV2ViS2l0V2ViTG9hZGVyQ2xpZW50ICoKLXdlYmtp
dF93ZWJfdmlld19nZXRfbG9hZGVyX2NsaWVudCAgICAgICAgICAgIChXZWJLaXRXZWJWaWV3ICAg
ICAgICAgICAgICp3ZWJfdmlldyk7Ci0KLVdFQktJVF9BUEkgdm9pZAotd2Via2l0X3dlYl92aWV3
X3NldF9sb2FkZXJfY2xpZW50ICAgICAgICAgICAgKFdlYktpdFdlYlZpZXcgICAgICAgICAgICAg
KndlYl92aWV3LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFdlYktpdFdlYkxvYWRlckNsaWVudCAgICAgKmxvYWRlcl9jbGllbnQpOwotCiBXRUJLSVRfQVBJ
IHZvaWQKIHdlYmtpdF93ZWJfdmlld19sb2FkX3VyaSAgICAgICAgICAgICAgICAgICAgIChXZWJL
aXRXZWJWaWV3ICAgICAgICAgICAgICp3ZWJfdmlldywKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnY2hhciAgICAgICAgICAgICAgICp1cmkpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmll
d1ByaXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZp
ZXdQcml2YXRlLmgKaW5kZXggOGZjODM5ZC4uNWM4MTYxYSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlld1ByaXZhdGUuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3UHJpdmF0ZS5oCkBAIC0z
MSw2ICszMSw4IEBACiAjaW5jbHVkZSA8V2ViS2l0Mi9XZWJLaXQyLmg+CiAjaW5jbHVkZSA8d3Rm
L3RleHQvQ1N0cmluZy5oPgogCit2b2lkIHdlYmtpdFdlYlZpZXdMb2FkQ2hhbmdlZChXZWJLaXRX
ZWJWaWV3KiwgV2ViS2l0TG9hZEV2ZW50KTsKK3ZvaWQgd2Via2l0V2ViVmlld0xvYWRGYWlsZWQo
V2ViS2l0V2ViVmlldyosIFdlYktpdExvYWRFdmVudCwgY29uc3QgY2hhciogZmFpbGluZ1VSSSwg
R0Vycm9yKik7CiB2b2lkIHdlYmtpdFdlYlZpZXdTZXRFc3RpbWF0ZWRMb2FkUHJvZ3Jlc3MoV2Vi
S2l0V2ViVmlldyosIGRvdWJsZSBlc3RpbWF0ZWRMb2FkUHJvZ3Jlc3MpOwogdm9pZCB3ZWJraXRX
ZWJWaWV3U2V0VGl0bGUoV2ViS2l0V2ViVmlldyosIGNvbnN0IENTdHJpbmcmKTsKIHZvaWQgd2Vi
a2l0V2ViVmlld1VwZGF0ZVVSSShXZWJLaXRXZWJWaWV3Kik7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9kb2NzL3dlYmtpdDJndGstZG9jcy5zZ21sIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvZG9jcy93ZWJraXQyZ3RrLWRvY3Muc2dtbApp
bmRleCA1YWJjYjFkLi5jNTEzOTU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL2d0ay9kb2NzL3dlYmtpdDJndGstZG9jcy5zZ21sCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvZ3RrL2RvY3Mvd2Via2l0Mmd0ay1kb2NzLnNnbWwKQEAgLTE0LDcgKzE0
LDYgQEAKICAgICA8eGk6aW5jbHVkZSBocmVmPSJ4bWwvV2ViS2l0V2ViQ29udGV4dC54bWwiLz4K
ICAgICA8eGk6aW5jbHVkZSBocmVmPSJ4bWwvV2ViS2l0V2ViVmlldy54bWwiLz4KICAgICA8eGk6
aW5jbHVkZSBocmVmPSJ4bWwvV2ViS2l0V2ViVmlld0Jhc2UueG1sIi8+Ci0gICAgPHhpOmluY2x1
ZGUgaHJlZj0ieG1sL1dlYktpdFdlYkxvYWRlckNsaWVudC54bWwiLz4KICAgICA8eGk6aW5jbHVk
ZSBocmVmPSJ4bWwvV2ViS2l0QmFja0ZvcndhcmRMaXN0LnhtbCIvPgogICAgIDx4aTppbmNsdWRl
IGhyZWY9InhtbC9XZWJLaXRCYWNrRm9yd2FyZExpc3RJdGVtLnhtbCIvPgogICAgIDx4aTppbmNs
dWRlIGhyZWY9InhtbC9XZWJLaXRTZXR0aW5ncy54bWwiLz4KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL2RvY3Mvd2Via2l0Mmd0ay1zZWN0aW9ucy50eHQgYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9kb2NzL3dlYmtpdDJndGstc2VjdGlvbnMu
dHh0CmluZGV4IDRjMmY2MDUuLjUzZDIxZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvZ3RrL2RvY3Mvd2Via2l0Mmd0ay1zZWN0aW9ucy50eHQKKysrIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvZG9jcy93ZWJraXQyZ3RrLXNlY3Rpb25zLnR4dApA
QCAtNDYsMTEgKzQ2LDEwIEBAIHdlYmtpdF93ZWJfY29udGV4dF9nZXRfdHlwZQogPEZJTEU+V2Vi
S2l0V2ViVmlldzwvRklMRT4KIDxUSVRMRT5XZWJLaXRXZWJWaWV3PC9USVRMRT4KIFdlYktpdFdl
YlZpZXcKK1dlYktpdExvYWRFdmVudAogd2Via2l0X3dlYl92aWV3X25ldwogd2Via2l0X3dlYl92
aWV3X25ld193aXRoX2NvbnRleHQKIHdlYmtpdF93ZWJfdmlld19nZXRfY29udGV4dAotd2Via2l0
X3dlYl92aWV3X2dldF9sb2FkZXJfY2xpZW50Ci13ZWJraXRfd2ViX3ZpZXdfc2V0X2xvYWRlcl9j
bGllbnQKIHdlYmtpdF93ZWJfdmlld19sb2FkX3VyaQogd2Via2l0X3dlYl92aWV3X2xvYWRfaHRt
bAogd2Via2l0X3dlYl92aWV3X2xvYWRfcGxhaW5fdGV4dApAQCAtODksMjQgKzg4LDYgQEAgV2Vi
S2l0V2ViVmlld1ByaXZhdGUKIDwvU0VDVElPTj4KIAogPFNFQ1RJT04+Ci08RklMRT5XZWJLaXRX
ZWJMb2FkZXJDbGllbnQ8L0ZJTEU+Ci08VElUTEU+V2ViS2l0V2ViTG9hZGVyQ2xpZW50PC9USVRM
RT4KLVdlYktpdFdlYkxvYWRlckNsaWVudAotCi08U1VCU0VDVElPTiBTdGFuZGFyZD4KLVdlYktp
dFdlYkxvYWRlckNsaWVudENsYXNzCi1XRUJLSVRfV0VCX0xPQURFUl9DTElFTlQKLVdFQktJVF9J
U19XRUJfTE9BREVSX0NMSUVOVAotV0VCS0lUX1RZUEVfV0VCX0xPQURFUl9DTElFTlQKLVdFQktJ
VF9XRUJfTE9BREVSX0NMSUVOVF9DTEFTUwotV0VCS0lUX0lTX1dFQl9MT0FERVJfQ0xJRU5UX0NM
QVNTCi1XRUJLSVRfV0VCX0xPQURFUl9DTElFTlRfR0VUX0NMQVNTCi0KLTxTVUJTRUNUSU9OIFBy
aXZhdGU+Ci13ZWJraXRfd2ViX2xvYWRlcl9jbGllbnRfZ2V0X3R5cGUKLTwvU0VDVElPTj4KLQot
PFNFQ1RJT04+CiA8RklMRT5XZWJLaXRCYWNrRm9yd2FyZExpc3Q8L0ZJTEU+CiBXZWJLaXRCYWNr
Rm9yd2FyZExpc3QKIHdlYmtpdF9iYWNrX2ZvcndhcmRfbGlzdF9nZXRfbGVuZ3RoCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9kb2NzL3dlYmtpdDJndGsudHlw
ZXMgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9kb2NzL3dlYmtpdDJndGsudHlw
ZXMKaW5kZXggMDVmZjE5ZC4uNDBhODQxYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9ndGsvZG9jcy93ZWJraXQyZ3RrLnR5cGVzCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvZ3RrL2RvY3Mvd2Via2l0Mmd0ay50eXBlcwpAQCAtMSw3ICsxLDYgQEAK
ICNpbmNsdWRlIDx3ZWJraXQyL3dlYmtpdDIuaD4KIHdlYmtpdF93ZWJfdmlld19nZXRfdHlwZQog
d2Via2l0X3dlYl92aWV3X2Jhc2VfZ2V0X3R5cGUKLXdlYmtpdF93ZWJfbG9hZGVyX2NsaWVudF9n
ZXRfdHlwZQogd2Via2l0X3dlYl9jb250ZXh0X2dldF90eXBlCiB3ZWJraXRfYmFja19mb3J3YXJk
X2xpc3RfZ2V0X3R5cGUKIHdlYmtpdF9iYWNrX2ZvcndhcmRfbGlzdF9pdGVtX2dldF90eXBlCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay90ZXN0cy9Mb2FkVHJh
Y2tpbmdUZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL3Rlc3RzL0xv
YWRUcmFja2luZ1Rlc3QuY3BwCmluZGV4IGE4YzU1OTAuLjc1ODFmMmYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL3Rlc3RzL0xvYWRUcmFja2luZ1Rlc3QuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL3Rlc3RzL0xvYWRUcmFja2lu
Z1Rlc3QuY3BwCkBAIC0yMiw1MCArMjIsNTEgQEAKIAogI2luY2x1ZGUgPHdlYmtpdDIvd2Via2l0
Mi5oPgogCi1zdGF0aWMgZ2Jvb2xlYW4gcHJvdmlzaW9uYWxMb2FkU3RhcnRlZENhbGxiYWNrKFdl
YktpdFdlYkxvYWRlckNsaWVudCogY2xpZW50LCBXZWJLaXRXZWJWaWV3KiwgTG9hZFRyYWNraW5n
VGVzdCogdGVzdCkKLXsKLSAgICBnX2Fzc2VydF9jbXBzdHIodGVzdC0+bV9hY3RpdmVVUkkuZGF0
YSgpLCA9PSwgd2Via2l0X3dlYl92aWV3X2dldF91cmkodGVzdC0+bV93ZWJWaWV3KSk7Ci0gICAg
dGVzdC0+cHJvdmlzaW9uYWxMb2FkU3RhcnRlZChjbGllbnQpOwotICAgIHJldHVybiBUUlVFOwot
fQotCi1zdGF0aWMgZ2Jvb2xlYW4gcHJvdmlzaW9uYWxMb2FkUmVjZWl2ZWRTZXJ2ZXJSZWRpcmVj
dENhbGxiYWNrKFdlYktpdFdlYkxvYWRlckNsaWVudCogY2xpZW50LCBXZWJLaXRXZWJWaWV3Kiwg
TG9hZFRyYWNraW5nVGVzdCogdGVzdCkKLXsKLSAgICB0ZXN0LT5tX2FjdGl2ZVVSSSA9IHdlYmtp
dF93ZWJfdmlld19nZXRfdXJpKHRlc3QtPm1fd2ViVmlldyk7Ci0gICAgaWYgKCF0ZXN0LT5tX3Jl
ZGlyZWN0VVJJLmlzTnVsbCgpKQotICAgICAgICBnX2Fzc2VydF9jbXBzdHIodGVzdC0+bV9yZWRp
cmVjdFVSSS5kYXRhKCksID09LCB0ZXN0LT5tX2FjdGl2ZVVSSS5kYXRhKCkpOwotICAgIHRlc3Qt
PnByb3Zpc2lvbmFsTG9hZFJlY2VpdmVkU2VydmVyUmVkaXJlY3QoY2xpZW50KTsKLSAgICByZXR1
cm4gVFJVRTsKLX0KLQotc3RhdGljIGdib29sZWFuIHByb3Zpc2lvbmFsTG9hZEZhaWxlZENhbGxi
YWNrKFdlYktpdFdlYkxvYWRlckNsaWVudCogY2xpZW50LCBXZWJLaXRXZWJWaWV3KiwgY29uc3Qg
Z2NoYXIqIGZhaWxpbmdVUkksIEdFcnJvciogZXJyb3IsIExvYWRUcmFja2luZ1Rlc3QqIHRlc3Qp
Ci17Ci0gICAgZ19hc3NlcnRfY21wc3RyKHRlc3QtPm1fYWN0aXZlVVJJLmRhdGEoKSwgPT0sIHdl
YmtpdF93ZWJfdmlld19nZXRfdXJpKHRlc3QtPm1fd2ViVmlldykpOwotICAgIGdfYXNzZXJ0KGVy
cm9yKTsKLSAgICB0ZXN0LT5wcm92aXNpb25hbExvYWRGYWlsZWQoY2xpZW50LCBmYWlsaW5nVVJJ
LCBlcnJvcik7Ci0gICAgcmV0dXJuIFRSVUU7Ci19Ci0KLXN0YXRpYyBnYm9vbGVhbiBsb2FkQ29t
bWl0dGVkQ2FsbGJhY2soV2ViS2l0V2ViTG9hZGVyQ2xpZW50KiBjbGllbnQsIFdlYktpdFdlYlZp
ZXcqLCBMb2FkVHJhY2tpbmdUZXN0KiB0ZXN0KQotewotICAgIGdfYXNzZXJ0X2NtcHN0cih0ZXN0
LT5tX2FjdGl2ZVVSSS5kYXRhKCksID09LCB3ZWJraXRfd2ViX3ZpZXdfZ2V0X3VyaSh0ZXN0LT5t
X3dlYlZpZXcpKTsKLSAgICB0ZXN0LT5sb2FkQ29tbWl0dGVkKGNsaWVudCk7Ci0gICAgcmV0dXJu
IFRSVUU7Ci19Ci0KLXN0YXRpYyBnYm9vbGVhbiBsb2FkRmluaXNoZWRDYWxsYmFjayhXZWJLaXRX
ZWJMb2FkZXJDbGllbnQqIGNsaWVudCwgV2ViS2l0V2ViVmlldyosIExvYWRUcmFja2luZ1Rlc3Qq
IHRlc3QpCi17Ci0gICAgZ19hc3NlcnRfY21wc3RyKHRlc3QtPm1fYWN0aXZlVVJJLmRhdGEoKSwg
PT0sIHdlYmtpdF93ZWJfdmlld19nZXRfdXJpKHRlc3QtPm1fd2ViVmlldykpOwotICAgIHRlc3Qt
PmxvYWRGaW5pc2hlZChjbGllbnQpOwotICAgIHJldHVybiBUUlVFOwotfQotCi1zdGF0aWMgZ2Jv
b2xlYW4gbG9hZEZhaWxlZENhbGxiYWNrKFdlYktpdFdlYkxvYWRlckNsaWVudCogY2xpZW50LCBX
ZWJLaXRXZWJWaWV3KiwgY29uc3QgZ2NoYXIqIGZhaWxpbmdVUkksIEdFcnJvciogZXJyb3IsIExv
YWRUcmFja2luZ1Rlc3QqIHRlc3QpCi17Ci0gICAgZ19hc3NlcnRfY21wc3RyKHRlc3QtPm1fYWN0
aXZlVVJJLmRhdGEoKSwgPT0sIHdlYmtpdF93ZWJfdmlld19nZXRfdXJpKHRlc3QtPm1fd2ViVmll
dykpOwotICAgIGdfYXNzZXJ0KGVycm9yKTsKLSAgICB0ZXN0LT5sb2FkRmFpbGVkKGNsaWVudCwg
ZmFpbGluZ1VSSSwgZXJyb3IpOwotICAgIHJldHVybiBUUlVFOworc3RhdGljIHZvaWQgbG9hZENo
YW5nZWRDYWxsYmFjayhXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3LCBXZWJLaXRMb2FkRXZlbnQgbG9h
ZEV2ZW50LCBMb2FkVHJhY2tpbmdUZXN0KiB0ZXN0KQoreworICAgIHN3aXRjaCAobG9hZEV2ZW50
KSB7CisgICAgY2FzZSBXRUJLSVRfTE9BRF9TVEFSVEVEOgorICAgICAgICBnX2Fzc2VydF9jbXBz
dHIodGVzdC0+bV9hY3RpdmVVUkkuZGF0YSgpLCA9PSwgd2Via2l0X3dlYl92aWV3X2dldF91cmko
d2ViVmlldykpOworICAgICAgICB0ZXN0LT5wcm92aXNpb25hbExvYWRTdGFydGVkKCk7CisgICAg
ICAgIGJyZWFrOworICAgIGNhc2UgV0VCS0lUX0xPQURfUkVESVJFQ1RFRDoKKyAgICAgICAgdGVz
dC0+bV9hY3RpdmVVUkkgPSB3ZWJraXRfd2ViX3ZpZXdfZ2V0X3VyaSh3ZWJWaWV3KTsKKyAgICAg
ICAgaWYgKCF0ZXN0LT5tX3JlZGlyZWN0VVJJLmlzTnVsbCgpKQorICAgICAgICAgICAgZ19hc3Nl
cnRfY21wc3RyKHRlc3QtPm1fcmVkaXJlY3RVUkkuZGF0YSgpLCA9PSwgdGVzdC0+bV9hY3RpdmVV
UkkuZGF0YSgpKTsKKyAgICAgICAgdGVzdC0+cHJvdmlzaW9uYWxMb2FkUmVjZWl2ZWRTZXJ2ZXJS
ZWRpcmVjdCgpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFdFQktJVF9MT0FEX0NPTU1JVFRF
RDoKKyAgICAgICAgZ19hc3NlcnRfY21wc3RyKHRlc3QtPm1fYWN0aXZlVVJJLmRhdGEoKSwgPT0s
IHdlYmtpdF93ZWJfdmlld19nZXRfdXJpKHdlYlZpZXcpKTsKKyAgICAgICAgdGVzdC0+bG9hZENv
bW1pdHRlZCgpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFdFQktJVF9MT0FEX0ZJTklTSEVE
OgorICAgICAgICBpZiAoIXRlc3QtPm1fbG9hZEZhaWxlZCkKKyAgICAgICAgICAgIGdfYXNzZXJ0
X2NtcHN0cih0ZXN0LT5tX2FjdGl2ZVVSSS5kYXRhKCksID09LCB3ZWJraXRfd2ViX3ZpZXdfZ2V0
X3VyaSh3ZWJWaWV3KSk7CisgICAgICAgIHRlc3QtPmxvYWRGaW5pc2hlZCgpOworICAgICAgICBi
cmVhazsKKyAgICBkZWZhdWx0OgorICAgICAgICBnX2Fzc2VydF9ub3RfcmVhY2hlZCgpOworICAg
IH0KK30KKworc3RhdGljIHZvaWQgbG9hZEZhaWxlZENhbGxiYWNrKFdlYktpdFdlYlZpZXcqIHdl
YlZpZXcsIFdlYktpdExvYWRFdmVudCBsb2FkRXZlbnQsIGNvbnN0IGNoYXIqIGZhaWxpbmdVUkks
IEdFcnJvciogZXJyb3IsIExvYWRUcmFja2luZ1Rlc3QqIHRlc3QpCit7CisgICAgdGVzdC0+bV9s
b2FkRmFpbGVkID0gdHJ1ZTsKKworICAgIHN3aXRjaCAobG9hZEV2ZW50KSB7CisgICAgY2FzZSBX
RUJLSVRfTE9BRF9TVEFSVEVEOgorICAgICAgICBnX2Fzc2VydF9jbXBzdHIodGVzdC0+bV9hY3Rp
dmVVUkkuZGF0YSgpLCA9PSwgd2Via2l0X3dlYl92aWV3X2dldF91cmkod2ViVmlldykpOworICAg
ICAgICBnX2Fzc2VydChlcnJvcik7CisgICAgICAgIHRlc3QtPnByb3Zpc2lvbmFsTG9hZEZhaWxl
ZChmYWlsaW5nVVJJLCBlcnJvcik7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgV0VCS0lUX0xP
QURfQ09NTUlUVEVEOgorICAgICAgICBnX2Fzc2VydF9jbXBzdHIodGVzdC0+bV9hY3RpdmVVUkku
ZGF0YSgpLCA9PSwgd2Via2l0X3dlYl92aWV3X2dldF91cmkod2ViVmlldykpOworICAgICAgICBn
X2Fzc2VydChlcnJvcik7CisgICAgICAgIHRlc3QtPmxvYWRGYWlsZWQoZmFpbGluZ1VSSSwgZXJy
b3IpOworICAgICAgICBicmVhazsKKyAgICBkZWZhdWx0OgorICAgICAgICBnX2Fzc2VydF9ub3Rf
cmVhY2hlZCgpOworICAgIH0KIH0KIAogc3RhdGljIHZvaWQgZXN0aW1hdGVkUHJvZ3Jlc3NDaGFu
Z2VkQ2FsbGJhY2soR09iamVjdCosIEdQYXJhbVNwZWMqLCBMb2FkVHJhY2tpbmdUZXN0KiB0ZXN0
KQpAQCAtNzUsMTQgKzc2LDEwIEBAIHN0YXRpYyB2b2lkIGVzdGltYXRlZFByb2dyZXNzQ2hhbmdl
ZENhbGxiYWNrKEdPYmplY3QqLCBHUGFyYW1TcGVjKiwgTG9hZFRyYWNraW5nCiAKIExvYWRUcmFj
a2luZ1Rlc3Q6OkxvYWRUcmFja2luZ1Rlc3QoKQogICAgIDogbV9ydW5Mb2FkVW50aWxDb21wbGV0
aW9uKGZhbHNlKQorICAgICwgbV9sb2FkRmFpbGVkKGZhbHNlKQogewotICAgIFdlYktpdFdlYkxv
YWRlckNsaWVudCogY2xpZW50ID0gd2Via2l0X3dlYl92aWV3X2dldF9sb2FkZXJfY2xpZW50KG1f
d2ViVmlldyk7Ci0gICAgZ19zaWduYWxfY29ubmVjdChjbGllbnQsICJwcm92aXNpb25hbC1sb2Fk
LXN0YXJ0ZWQiLCBHX0NBTExCQUNLKHByb3Zpc2lvbmFsTG9hZFN0YXJ0ZWRDYWxsYmFjayksIHRo
aXMpOwotICAgIGdfc2lnbmFsX2Nvbm5lY3QoY2xpZW50LCAicHJvdmlzaW9uYWwtbG9hZC1yZWNl
aXZlZC1zZXJ2ZXItcmVkaXJlY3QiLCBHX0NBTExCQUNLKHByb3Zpc2lvbmFsTG9hZFJlY2VpdmVk
U2VydmVyUmVkaXJlY3RDYWxsYmFjayksIHRoaXMpOwotICAgIGdfc2lnbmFsX2Nvbm5lY3QoY2xp
ZW50LCAicHJvdmlzaW9uYWwtbG9hZC1mYWlsZWQiLCBHX0NBTExCQUNLKHByb3Zpc2lvbmFsTG9h
ZEZhaWxlZENhbGxiYWNrKSwgdGhpcyk7Ci0gICAgZ19zaWduYWxfY29ubmVjdChjbGllbnQsICJs
b2FkLWNvbW1pdHRlZCIsIEdfQ0FMTEJBQ0sobG9hZENvbW1pdHRlZENhbGxiYWNrKSwgdGhpcyk7
Ci0gICAgZ19zaWduYWxfY29ubmVjdChjbGllbnQsICJsb2FkLWZpbmlzaGVkIiwgR19DQUxMQkFD
Syhsb2FkRmluaXNoZWRDYWxsYmFjayksIHRoaXMpOwotICAgIGdfc2lnbmFsX2Nvbm5lY3QoY2xp
ZW50LCAibG9hZC1mYWlsZWQiLCBHX0NBTExCQUNLKGxvYWRGYWlsZWRDYWxsYmFjayksIHRoaXMp
OworICAgIGdfc2lnbmFsX2Nvbm5lY3QobV93ZWJWaWV3LCAibG9hZC1jaGFuZ2VkIiwgR19DQUxM
QkFDSyhsb2FkQ2hhbmdlZENhbGxiYWNrKSwgdGhpcyk7CisgICAgZ19zaWduYWxfY29ubmVjdCht
X3dlYlZpZXcsICJsb2FkLWZhaWxlZCIsIEdfQ0FMTEJBQ0sobG9hZEZhaWxlZENhbGxiYWNrKSwg
dGhpcyk7CiAgICAgZ19zaWduYWxfY29ubmVjdChtX3dlYlZpZXcsICJub3RpZnk6OmVzdGltYXRl
ZC1sb2FkLXByb2dyZXNzIiwgR19DQUxMQkFDSyhlc3RpbWF0ZWRQcm9ncmVzc0NoYW5nZWRDYWxs
YmFjayksIHRoaXMpOwogCiAgICAgZ19hc3NlcnQoIXdlYmtpdF93ZWJfdmlld19nZXRfdXJpKG1f
d2ViVmlldykpOwpAQCAtOTAsOCArODcsNiBAQCBMb2FkVHJhY2tpbmdUZXN0OjpMb2FkVHJhY2tp
bmdUZXN0KCkKIAogTG9hZFRyYWNraW5nVGVzdDo6fkxvYWRUcmFja2luZ1Rlc3QoKQogewotICAg
IFdlYktpdFdlYkxvYWRlckNsaWVudCogY2xpZW50ID0gd2Via2l0X3dlYl92aWV3X2dldF9sb2Fk
ZXJfY2xpZW50KG1fd2ViVmlldyk7Ci0gICAgZ19zaWduYWxfaGFuZGxlcnNfZGlzY29ubmVjdF9t
YXRjaGVkKGNsaWVudCwgR19TSUdOQUxfTUFUQ0hfREFUQSwgMCwgMCwgMCwgMCwgdGhpcyk7CiAg
ICAgZ19zaWduYWxfaGFuZGxlcnNfZGlzY29ubmVjdF9tYXRjaGVkKG1fd2ViVmlldywgR19TSUdO
QUxfTUFUQ0hfREFUQSwgMCwgMCwgMCwgMCwgdGhpcyk7CiB9CiAKQEAgLTEwMiw0MCArOTcsMzgg
QEAgdm9pZCBMb2FkVHJhY2tpbmdUZXN0Ojp3YWl0VW50aWxMb2FkRmluaXNoZWQoKQogICAgIGdf
bWFpbl9sb29wX3J1bihtX21haW5Mb29wKTsKIH0KIAotdm9pZCBMb2FkVHJhY2tpbmdUZXN0Ojpw
cm92aXNpb25hbExvYWRTdGFydGVkKFdlYktpdFdlYkxvYWRlckNsaWVudCogY2xpZW50KQordm9p
ZCBMb2FkVHJhY2tpbmdUZXN0Ojpwcm92aXNpb25hbExvYWRTdGFydGVkKCkKIHsKICAgICBtX2xv
YWRFdmVudHMuYXBwZW5kKFByb3Zpc2lvbmFsTG9hZFN0YXJ0ZWQpOwogfQogCi12b2lkIExvYWRU
cmFja2luZ1Rlc3Q6OnByb3Zpc2lvbmFsTG9hZFJlY2VpdmVkU2VydmVyUmVkaXJlY3QoV2ViS2l0
V2ViTG9hZGVyQ2xpZW50KiBjbGllbnQpCit2b2lkIExvYWRUcmFja2luZ1Rlc3Q6OnByb3Zpc2lv
bmFsTG9hZFJlY2VpdmVkU2VydmVyUmVkaXJlY3QoKQogewogICAgIG1fbG9hZEV2ZW50cy5hcHBl
bmQoUHJvdmlzaW9uYWxMb2FkUmVjZWl2ZWRTZXJ2ZXJSZWRpcmVjdCk7CiB9CiAKLXZvaWQgTG9h
ZFRyYWNraW5nVGVzdDo6cHJvdmlzaW9uYWxMb2FkRmFpbGVkKFdlYktpdFdlYkxvYWRlckNsaWVu
dCogY2xpZW50LCBjb25zdCBnY2hhciogZmFpbGluZ1VSSSwgR0Vycm9yKiBlcnJvcikKK3ZvaWQg
TG9hZFRyYWNraW5nVGVzdDo6cHJvdmlzaW9uYWxMb2FkRmFpbGVkKGNvbnN0IGdjaGFyKiBmYWls
aW5nVVJJLCBHRXJyb3IqIGVycm9yKQogewogICAgIG1fbG9hZEV2ZW50cy5hcHBlbmQoUHJvdmlz
aW9uYWxMb2FkRmFpbGVkKTsKICAgICBpZiAobV9ydW5Mb2FkVW50aWxDb21wbGV0aW9uKQogICAg
ICAgICBnX21haW5fbG9vcF9xdWl0KG1fbWFpbkxvb3ApOwogfQogCi12b2lkIExvYWRUcmFja2lu
Z1Rlc3Q6OmxvYWRDb21taXR0ZWQoV2ViS2l0V2ViTG9hZGVyQ2xpZW50KiBjbGllbnQpCit2b2lk
IExvYWRUcmFja2luZ1Rlc3Q6OmxvYWRDb21taXR0ZWQoKQogewogICAgIG1fbG9hZEV2ZW50cy5h
cHBlbmQoTG9hZENvbW1pdHRlZCk7CiB9CiAKLXZvaWQgTG9hZFRyYWNraW5nVGVzdDo6bG9hZEZp
bmlzaGVkKFdlYktpdFdlYkxvYWRlckNsaWVudCogY2xpZW50KQordm9pZCBMb2FkVHJhY2tpbmdU
ZXN0Ojpsb2FkRmluaXNoZWQoKQogewogICAgIG1fbG9hZEV2ZW50cy5hcHBlbmQoTG9hZEZpbmlz
aGVkKTsKICAgICBpZiAobV9ydW5Mb2FkVW50aWxDb21wbGV0aW9uKQogICAgICAgICBnX21haW5f
bG9vcF9xdWl0KG1fbWFpbkxvb3ApOwogfQogCi12b2lkIExvYWRUcmFja2luZ1Rlc3Q6OmxvYWRG
YWlsZWQoV2ViS2l0V2ViTG9hZGVyQ2xpZW50KiBjbGllbnQsIGNvbnN0IGdjaGFyKiBmYWlsaW5n
VVJJLCBHRXJyb3IqIGVycm9yKQordm9pZCBMb2FkVHJhY2tpbmdUZXN0Ojpsb2FkRmFpbGVkKGNv
bnN0IGdjaGFyKiBmYWlsaW5nVVJJLCBHRXJyb3IqIGVycm9yKQogewogICAgIG1fbG9hZEV2ZW50
cy5hcHBlbmQoTG9hZEZhaWxlZCk7Ci0gICAgaWYgKG1fcnVuTG9hZFVudGlsQ29tcGxldGlvbikK
LSAgICAgICAgZ19tYWluX2xvb3BfcXVpdChtX21haW5Mb29wKTsKIH0KIAogdm9pZCBMb2FkVHJh
Y2tpbmdUZXN0Ojplc3RpbWF0ZWRQcm9ncmVzc0NoYW5nZWQoKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvdGVzdHMvTG9hZFRyYWNraW5nVGVzdC5oIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvdGVzdHMvTG9hZFRyYWNraW5nVGVzdC5oCmlu
ZGV4IDVlYWJlNzkuLjMwOGFhOWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvZ3RrL3Rlc3RzL0xvYWRUcmFja2luZ1Rlc3QuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL2d0ay90ZXN0cy9Mb2FkVHJhY2tpbmdUZXN0LmgKQEAgLTMxLDEyICszMSwx
MiBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB+TG9hZFRyYWNraW5nVGVzdCgpOwogICAgIHZvaWQg
d2FpdFVudGlsTG9hZEZpbmlzaGVkKCk7CiAKLSAgICB2aXJ0dWFsIHZvaWQgcHJvdmlzaW9uYWxM
b2FkU3RhcnRlZChXZWJLaXRXZWJMb2FkZXJDbGllbnQqKTsKLSAgICB2aXJ0dWFsIHZvaWQgcHJv
dmlzaW9uYWxMb2FkUmVjZWl2ZWRTZXJ2ZXJSZWRpcmVjdChXZWJLaXRXZWJMb2FkZXJDbGllbnQq
KTsKLSAgICB2aXJ0dWFsIHZvaWQgcHJvdmlzaW9uYWxMb2FkRmFpbGVkKFdlYktpdFdlYkxvYWRl
ckNsaWVudCosIGNvbnN0IGdjaGFyKiBmYWlsaW5nVVJJLCBHRXJyb3IqKTsKLSAgICB2aXJ0dWFs
IHZvaWQgbG9hZENvbW1pdHRlZChXZWJLaXRXZWJMb2FkZXJDbGllbnQqKTsKLSAgICB2aXJ0dWFs
IHZvaWQgbG9hZEZpbmlzaGVkKFdlYktpdFdlYkxvYWRlckNsaWVudCopOwotICAgIHZpcnR1YWwg
dm9pZCBsb2FkRmFpbGVkKFdlYktpdFdlYkxvYWRlckNsaWVudCosIGNvbnN0IGNoYXIqIGZhaWxp
bmdVUkksIEdFcnJvciopOworICAgIHZpcnR1YWwgdm9pZCBwcm92aXNpb25hbExvYWRTdGFydGVk
KCk7CisgICAgdmlydHVhbCB2b2lkIHByb3Zpc2lvbmFsTG9hZFJlY2VpdmVkU2VydmVyUmVkaXJl
Y3QoKTsKKyAgICB2aXJ0dWFsIHZvaWQgcHJvdmlzaW9uYWxMb2FkRmFpbGVkKGNvbnN0IGdjaGFy
KiBmYWlsaW5nVVJJLCBHRXJyb3IqKTsKKyAgICB2aXJ0dWFsIHZvaWQgbG9hZENvbW1pdHRlZCgp
OworICAgIHZpcnR1YWwgdm9pZCBsb2FkRmluaXNoZWQoKTsKKyAgICB2aXJ0dWFsIHZvaWQgbG9h
ZEZhaWxlZChjb25zdCBjaGFyKiBmYWlsaW5nVVJJLCBHRXJyb3IqKTsKICAgICB2aXJ0dWFsIHZv
aWQgZXN0aW1hdGVkUHJvZ3Jlc3NDaGFuZ2VkKCk7CiAKICAgICB2b2lkIHNldFJlZGlyZWN0VVJJ
KGNvbnN0IGNoYXIqIHVyaSkgeyBtX3JlZGlyZWN0VVJJID0gdXJpOyB9CkBAIC01MCw2ICs1MCw3
IEBAIHB1YmxpYzoKICAgICAgICAgTG9hZEZhaWxlZAogICAgIH07CiAgICAgYm9vbCBtX3J1bkxv
YWRVbnRpbENvbXBsZXRpb247CisgICAgYm9vbCBtX2xvYWRGYWlsZWQ7CiAgICAgVmVjdG9yPExv
YWRFdmVudHM+IG1fbG9hZEV2ZW50czsKICAgICBmbG9hdCBtX2VzdGltYXRlZFByb2dyZXNzOwog
ICAgIENTdHJpbmcgbV9yZWRpcmVjdFVSSTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvZ3RrL3Rlc3RzL1Rlc3RXZWJLaXRXZWJMb2FkZXJDbGllbnQuY3BwIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvdGVzdHMvVGVzdFdlYktpdFdlYkxvYWRlckNs
aWVudC5jcHAKaW5kZXggMDI3ZmYwOC4uMDlmYmE0MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9ndGsvdGVzdHMvVGVzdFdlYktpdFdlYkxvYWRlckNsaWVudC5jcHAK
KysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvdGVzdHMvVGVzdFdlYktpdFdl
YkxvYWRlckNsaWVudC5jcHAKQEAgLTQ5LDkgKzQ5LDEwIEBAIHN0YXRpYyB2b2lkIHRlc3RMb2Fk
aW5nRXJyb3IoTG9hZFRyYWNraW5nVGVzdCogdGVzdCwgZ2NvbnN0cG9pbnRlcikKICAgICB0ZXN0
LT53YWl0VW50aWxMb2FkRmluaXNoZWQoKTsKIAogICAgIFZlY3RvcjxMb2FkVHJhY2tpbmdUZXN0
OjpMb2FkRXZlbnRzPiYgZXZlbnRzID0gdGVzdC0+bV9sb2FkRXZlbnRzOwotICAgIGdfYXNzZXJ0
X2NtcGludChldmVudHMuc2l6ZSgpLCA9PSwgMik7CisgICAgZ19hc3NlcnRfY21waW50KGV2ZW50
cy5zaXplKCksID09LCAzKTsKICAgICBnX2Fzc2VydF9jbXBpbnQoZXZlbnRzWzBdLCA9PSwgTG9h
ZFRyYWNraW5nVGVzdDo6UHJvdmlzaW9uYWxMb2FkU3RhcnRlZCk7CiAgICAgZ19hc3NlcnRfY21w
aW50KGV2ZW50c1sxXSwgPT0sIExvYWRUcmFja2luZ1Rlc3Q6OlByb3Zpc2lvbmFsTG9hZEZhaWxl
ZCk7CisgICAgZ19hc3NlcnRfY21waW50KGV2ZW50c1syXSwgPT0sIExvYWRUcmFja2luZ1Rlc3Q6
OkxvYWRGaW5pc2hlZCk7CiB9CiAKIHN0YXRpYyB2b2lkIGFzc2VydE5vcm1hbExvYWRIYXBwZW5l
ZEFuZENsZWFyRXZlbnRzKFZlY3RvcjxMb2FkVHJhY2tpbmdUZXN0OjpMb2FkRXZlbnRzPiYgZXZl
bnRzKQpAQCAtOTYsMTkgKzk3LDE1IEBAIGNsYXNzIExvYWRTdG9wVHJhY2tpbmdUZXN0IDogcHVi
bGljIExvYWRUcmFja2luZ1Rlc3QgewogcHVibGljOgogICAgIE1BS0VfR0xJQl9URVNUX0ZJWFRV
UkUoTG9hZFN0b3BUcmFja2luZ1Rlc3QpOwogCi0gICAgdmlydHVhbCB2b2lkIGxvYWRDb21taXR0
ZWQoV2ViS2l0V2ViTG9hZGVyQ2xpZW50KiBjbGllbnQpCisgICAgdmlydHVhbCB2b2lkIGxvYWRD
b21taXR0ZWQoKQogICAgIHsKLSAgICAgICAgTG9hZFRyYWNraW5nVGVzdDo6bG9hZENvbW1pdHRl
ZChjbGllbnQpOworICAgICAgICBMb2FkVHJhY2tpbmdUZXN0Ojpsb2FkQ29tbWl0dGVkKCk7CiAg
ICAgICAgIHdlYmtpdF93ZWJfdmlld19zdG9wX2xvYWRpbmcobV93ZWJWaWV3KTsKICAgICB9Ci0g
ICAgdmlydHVhbCB2b2lkIGxvYWRGYWlsZWQoV2ViS2l0V2ViTG9hZGVyQ2xpZW50KiBjbGllbnQs
IGNvbnN0IGdjaGFyKiBmYWlsaW5nVVJJLCBHRXJyb3IqIGVycm9yKQorICAgIHZpcnR1YWwgdm9p
ZCBsb2FkRmFpbGVkKGNvbnN0IGdjaGFyKiBmYWlsaW5nVVJJLCBHRXJyb3IqIGVycm9yKQogICAg
IHsKICAgICAgICAgZ19hc3NlcnQoZ19lcnJvcl9tYXRjaGVzKGVycm9yLCBXRUJLSVRfTkVUV09S
S19FUlJPUiwgV0VCS0lUX05FVFdPUktfRVJST1JfQ0FOQ0VMTEVEKSk7Ci0gICAgICAgIExvYWRU
cmFja2luZ1Rlc3Q6OmxvYWRGYWlsZWQoY2xpZW50LCBmYWlsaW5nVVJJLCBlcnJvcik7Ci0gICAg
fQotICAgIHZpcnR1YWwgdm9pZCBsb2FkRmluaXNoZWQoV2ViS2l0V2ViTG9hZGVyQ2xpZW50KiBj
bGllbnQpCi0gICAgewotICAgICAgICBnX2Fzc2VydF9ub3RfcmVhY2hlZCgpOworICAgICAgICBM
b2FkVHJhY2tpbmdUZXN0Ojpsb2FkRmFpbGVkKGZhaWxpbmdVUkksIGVycm9yKTsKICAgICB9CiB9
OwogCkBAIC0xMTgsMTAgKzExNSwxMSBAQCBzdGF0aWMgdm9pZCB0ZXN0TG9hZENhbmNlbGxlZChM
b2FkU3RvcFRyYWNraW5nVGVzdCogdGVzdCwgZ2NvbnN0cG9pbnRlcikKICAgICB0ZXN0LT53YWl0
VW50aWxMb2FkRmluaXNoZWQoKTsKIAogICAgIFZlY3RvcjxMb2FkVHJhY2tpbmdUZXN0OjpMb2Fk
RXZlbnRzPiYgZXZlbnRzID0gdGVzdC0+bV9sb2FkRXZlbnRzOwotICAgIGdfYXNzZXJ0X2NtcGlu
dChldmVudHMuc2l6ZSgpLCA9PSwgMyk7CisgICAgZ19hc3NlcnRfY21waW50KGV2ZW50cy5zaXpl
KCksID09LCA0KTsKICAgICBnX2Fzc2VydF9jbXBpbnQoZXZlbnRzWzBdLCA9PSwgTG9hZFRyYWNr
aW5nVGVzdDo6UHJvdmlzaW9uYWxMb2FkU3RhcnRlZCk7CiAgICAgZ19hc3NlcnRfY21waW50KGV2
ZW50c1sxXSwgPT0sIExvYWRUcmFja2luZ1Rlc3Q6OkxvYWRDb21taXR0ZWQpOwogICAgIGdfYXNz
ZXJ0X2NtcGludChldmVudHNbMl0sID09LCBMb2FkVHJhY2tpbmdUZXN0OjpMb2FkRmFpbGVkKTsK
KyAgICBnX2Fzc2VydF9jbXBpbnQoZXZlbnRzWzNdLCA9PSwgTG9hZFRyYWNraW5nVGVzdDo6TG9h
ZEZpbmlzaGVkKTsKIH0KIAogc3RhdGljIHZvaWQgdGVzdFdlYlZpZXdUaXRsZShMb2FkVHJhY2tp
bmdUZXN0KiB0ZXN0LCBnY29uc3Rwb2ludGVyKQpAQCAtMTcxLDI1ICsxNjksMjUgQEAgcHVibGlj
OgogICAgICAgICBnX3NpZ25hbF9jb25uZWN0KG1fd2ViVmlldywgIm5vdGlmeTo6dXJpIiwgR19D
QUxMQkFDSyh1cmlDaGFuZ2VkKSwgdGhpcyk7CiAgICAgfQogCi0gICAgdm9pZCBwcm92aXNpb25h
bExvYWRTdGFydGVkKFdlYktpdFdlYkxvYWRlckNsaWVudCopCisgICAgdm9pZCBwcm92aXNpb25h
bExvYWRTdGFydGVkKCkKICAgICB7CiAgICAgICAgIGNoZWNrQWN0aXZlVVJJKCIvcmVkaXJlY3Qi
KTsKICAgICB9CiAKLSAgICB2b2lkIHByb3Zpc2lvbmFsTG9hZFJlY2VpdmVkU2VydmVyUmVkaXJl
Y3QoV2ViS2l0V2ViTG9hZGVyQ2xpZW50KikKKyAgICB2b2lkIHByb3Zpc2lvbmFsTG9hZFJlY2Vp
dmVkU2VydmVyUmVkaXJlY3QoKQogICAgIHsKICAgICAgICAgY2hlY2tBY3RpdmVVUkkoIi9ub3Jt
YWwiKTsKICAgICB9CiAKLSAgICB2b2lkIGxvYWRDb21taXR0ZWQoV2ViS2l0V2ViTG9hZGVyQ2xp
ZW50KikKKyAgICB2b2lkIGxvYWRDb21taXR0ZWQoKQogICAgIHsKICAgICAgICAgY2hlY2tBY3Rp
dmVVUkkoIi9ub3JtYWwiKTsKICAgICB9CiAKLSAgICB2b2lkIGxvYWRGaW5pc2hlZChXZWJLaXRX
ZWJMb2FkZXJDbGllbnQqIGNsaWVudCkKKyAgICB2b2lkIGxvYWRGaW5pc2hlZCgpCiAgICAgewog
ICAgICAgICBjaGVja0FjdGl2ZVVSSSgiL25vcm1hbCIpOwotICAgICAgICBMb2FkVHJhY2tpbmdU
ZXN0Ojpsb2FkRmluaXNoZWQoY2xpZW50KTsKKyAgICAgICAgTG9hZFRyYWNraW5nVGVzdDo6bG9h
ZEZpbmlzaGVkKCk7CiAgICAgfQogCiAgICAgQ1N0cmluZyBtX2FjdGl2ZVVSSTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL3Rlc3RzL1Rlc3RXZWJLaXRXZWJW
aWV3LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL3Rlc3RzL1Rlc3RXZWJL
aXRXZWJWaWV3LmNwcAppbmRleCBhZTA0NTU2Li41ZGNiYWRkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay90ZXN0cy9UZXN0V2ViS2l0V2ViVmlldy5jcHAKKysr
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvdGVzdHMvVGVzdFdlYktpdFdlYlZp
ZXcuY3BwCkBAIC0zOCwxNiArMzgsNiBAQCBzdGF0aWMgdm9pZCB0ZXN0V2ViVmlld0N1c3RvbUNo
YXJzZXQoV2ViVmlld1Rlc3QqIHRlc3QsIGdjb25zdHBvaW50ZXIpCiAgICAgZ19hc3NlcnQoIXdl
YmtpdF93ZWJfdmlld19nZXRfY3VzdG9tX2NoYXJzZXQodGVzdC0+bV93ZWJWaWV3KSk7CiB9CiAK
LXN0YXRpYyB2b2lkIHRlc3RXZWJWaWV3c1NoYXJlQ2xpZW50cyhUZXN0KiB0ZXN0LCBnY29uc3Rw
b2ludGVyKQotewotICAgIEdSZWZQdHI8R3RrV2lkZ2V0PiB3ZWJWaWV3MSA9IHdlYmtpdF93ZWJf
dmlld19uZXcoKTsKLSAgICBHUmVmUHRyPEd0a1dpZGdldD4gd2ViVmlldzIgPSB3ZWJraXRfd2Vi
X3ZpZXdfbmV3KCk7Ci0gICAgV2ViS2l0V2ViTG9hZGVyQ2xpZW50KiBjbGllbnQxID0gd2Via2l0
X3dlYl92aWV3X2dldF9sb2FkZXJfY2xpZW50KFdFQktJVF9XRUJfVklFVyh3ZWJWaWV3MS5nZXQo
KSkpOwotICAgIFdlYktpdFdlYkxvYWRlckNsaWVudCogY2xpZW50MiA9IHdlYmtpdF93ZWJfdmll
d19nZXRfbG9hZGVyX2NsaWVudChXRUJLSVRfV0VCX1ZJRVcod2ViVmlldzIuZ2V0KCkpKTsKLSAg
ICBnX2Fzc2VydChjbGllbnQxKTsKLSAgICBnX2Fzc2VydChjbGllbnQxID09IGNsaWVudDIpOwot
fQotCiBzdGF0aWMgdm9pZCB0ZXN0V2ViVmlld1NldHRpbmdzKFdlYlZpZXdUZXN0KiB0ZXN0LCBn
Y29uc3Rwb2ludGVyKQogewogICAgIFdlYktpdFNldHRpbmdzKiBkZWZhdWx0U2V0dGluZ3MgPSB3
ZWJraXRfd2ViX3ZpZXdfZ2V0X3NldHRpbmdzKHRlc3QtPm1fd2ViVmlldyk7CkBAIC0zNTEsNyAr
MzQxLDYgQEAgdm9pZCBiZWZvcmVBbGwoKQogewogICAgIFdlYlZpZXdUZXN0OjphZGQoIldlYktp
dFdlYlZpZXciLCAiZGVmYXVsdC1jb250ZXh0IiwgdGVzdFdlYlZpZXdEZWZhdWx0Q29udGV4dCk7
CiAgICAgV2ViVmlld1Rlc3Q6OmFkZCgiV2ViS2l0V2ViVmlldyIsICJjdXN0b20tY2hhcnNldCIs
IHRlc3RXZWJWaWV3Q3VzdG9tQ2hhcnNldCk7Ci0gICAgVGVzdDo6YWRkKCJXZWJLaXRXZWJWaWV3
IiwgIndlYnZpZXdzLXNoYXJlLWNsaWVudHMiLCB0ZXN0V2ViVmlld3NTaGFyZUNsaWVudHMpOwog
ICAgIFdlYlZpZXdUZXN0OjphZGQoIldlYktpdFdlYlZpZXciLCAic2V0dGluZ3MiLCB0ZXN0V2Vi
Vmlld1NldHRpbmdzKTsKICAgICBVSUNsaWVudFRlc3Q6OmFkZCgiV2ViS2l0V2ViVmlldyIsICJj
cmVhdGUtcmVhZHktY2xvc2UiLCB0ZXN0V2ViVmlld0NyZWF0ZVJlYWR5Q2xvc2UpOwogICAgIFVJ
Q2xpZW50VGVzdDo6YWRkKCJXZWJLaXRXZWJWaWV3IiwgImphdmFzY3JpcHQtZGlhbG9ncyIsIHRl
c3RXZWJWaWV3SmF2YVNjcmlwdERpYWxvZ3MpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9ndGsvd2Via2l0Mi5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9ndGsvd2Via2l0Mi5oCmluZGV4IDNhNGFmNGMuLmFiMGUwYTggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL3dlYmtpdDIuaAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL2d0ay93ZWJraXQyLmgKQEAgLTMyLDcgKzMyLDYgQEAKICNpbmNsdWRl
IDx3ZWJraXQyL1dlYktpdFVSSVJlcXVlc3QuaD4KICNpbmNsdWRlIDx3ZWJraXQyL1dlYktpdFVS
SVJlc3BvbnNlLmg+CiAjaW5jbHVkZSA8d2Via2l0Mi9XZWJLaXRXZWJDb250ZXh0Lmg+Ci0jaW5j
bHVkZSA8d2Via2l0Mi9XZWJLaXRXZWJMb2FkZXJDbGllbnQuaD4KICNpbmNsdWRlIDx3ZWJraXQy
L1dlYktpdFdlYlZpZXdCYXNlLmg+CiAjaW5jbHVkZSA8d2Via2l0Mi9XZWJLaXRXZWJWaWV3Lmg+
CiAjaW5jbHVkZSA8d2Via2l0Mi9XZWJLaXRXaW5kb3dQcm9wZXJ0aWVzLmg+CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay93ZWJraXQybWFyc2hhbC5saXN0IGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvd2Via2l0Mm1hcnNoYWwubGlzdAppbmRl
eCBjOTRkOWMyLi44OWMyNTBlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL2d0ay93ZWJraXQybWFyc2hhbC5saXN0CisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvZ3RrL3dlYmtpdDJtYXJzaGFsLmxpc3QKQEAgLTEsOSArMSw4IEBACi1CT09MRUFOOk9C
SkVDVCxTVFJJTkcsUE9JTlRFUgotQk9PTEVBTjpPQkpFQ1QKK0JPT0xFQU46RU5VTSxTVFJJTkcs
UE9JTlRFUgogQk9PTEVBTjpTVFJJTkcKIEJPT0xFQU46U1RSSU5HLFBPSU5URVIKIEJPT0xFQU46
U1RSSU5HLFNUUklORyxQT0lOVEVSCi1CT09MRUFOOlZPSUQKIE9CSkVDVDpWT0lECitWT0lEOkVO
VU0KIFZPSUQ6T0JKRUNULFBPSU5URVIKIApkaWZmIC0tZ2l0IGEvVG9vbHMvZ3RrL2dlbmVyYXRl
LWd0a2RvYyBiL1Rvb2xzL2d0ay9nZW5lcmF0ZS1ndGtkb2MKaW5kZXggNzk3MWMwZi4uZGI1Zjgz
YSAxMDA3NTUKLS0tIGEvVG9vbHMvZ3RrL2dlbmVyYXRlLWd0a2RvYworKysgYi9Ub29scy9ndGsv
Z2VuZXJhdGUtZ3RrZG9jCkBAIC02MSw2ICs2MSw3IEBAIGRlZiBnZXRfd2Via2l0Ml9vcHRpb25z
KCk6CiAgICAgICAgICdpZ25vcmVkX2ZpbGVzJzogZ2xvYi5nbG9iKHNyY19wYXRoKCcqUHJpdmF0
ZS5oJykpICsgXAogICAgICAgICAgICAgICAgICAgICAgICAgIGdsb2IuZ2xvYihzcmNfcGF0aCgn
UGFnZUNsaWVudEltcGwuKicpKSArIFwKICAgICAgICAgICAgICAgICAgICAgICAgICBnbG9iLmds
b2Ioc3JjX3BhdGgoJ1dlYktpdFVJQ2xpZW50LionKSkgKyBcCisgICAgICAgICAgICAgICAgICAg
ICAgICAgZ2xvYi5nbG9iKHNyY19wYXRoKCdXZWJLaXRXZWJMb2FkZXJDbGllbnQuKicpKSArIFwK
ICAgICAgICAgICAgICAgICAgICAgICAgICBnbG9iLmdsb2Ioc3JjX3BhdGgoJ3Rlc3RzLyouaCcp
KQogICAgIH0pCiAgICAgcmV0dXJuIChjb21tb24uYnVpbGRfcGF0aCgnU291cmNlJywgJ1dlYktp
dDInLCAnd2Via2l0Mmd0ay0zLjAucGMnKSwgb3B0aW9ucykK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>120539</attachid>
            <date>2011-12-26 02:15:05 -0800</date>
            <delta_ts>2012-01-03 06:55:23 -0800</delta_ts>
            <desc>I forgot to include Tools/ChangeLog in previous patch</desc>
            <filename>wk2-new-loader-client3.diff</filename>
            <type>text/plain</type>
            <size>63070</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwppbmRleCAyNzg5NGY1Li4zYzJjMTYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNzMg
QEAKKzIwMTEtMTItMjYgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29t
PgorCisgICAgICAgIFtHVEtdIFNpbXBsaWZ5IGxvYWRlciBjbGllbnQgV2ViS2l0MiBHVEsrIEFQ
SQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzQ2MDUK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZW1vdmUg
V2ViS2l0V2ViTG9hZGVyQ2xpZW50IGZyb20gcHVibGljIEFQSSBrZWVwaW5nIGl0IGFzIGEKKyAg
ICAgICAgcHJpdmF0ZSBvYmplY3QuIExvYWRpbmcgQVBJIGhhcyBiZWVuIHJlZHVjZWQgdG8gdHdv
IHNpZ25hbHMgaW4KKyAgICAgICAgV2ViS2l0V2ViVmlldy4KKworICAgICAgICAqIFVJUHJvY2Vz
cy9BUEkvZ3RrL1dlYktpdERlZmluZXMuaDogUmVtb3ZlIGZvcndhcmQgZGVsY2FyYXRpb25zCisg
ICAgICAgIHRoYXQgYXJlIG5vIGxvbmdlciBuZWVkZWQuCisgICAgICAgICogVUlQcm9jZXNzL0FQ
SS9ndGsvV2ViS2l0V2ViTG9hZGVyQ2xpZW50LmNwcDoKKyAgICAgICAgKGRpZFN0YXJ0UHJvdmlz
aW9uYWxMb2FkRm9yRnJhbWUpOiBFbWl0CisgICAgICAgIFdlYktpdFdlYlZpZXc6OmxvYWQtY2hh
bmdlZCBzaWduYWwgd2l0aCBTdGFydGVkIGV2ZW50LgorICAgICAgICAoZGlkUmVjZWl2ZVNlcnZl
clJlZGlyZWN0Rm9yUHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUpOiBFbWl0CisgICAgICAgIFdlYktp
dFdlYlZpZXc6OmxvYWQtY2hhbmdlZCBzaWduYWwgd2l0aCBSZWRpcmVjdGVkIGV2ZW50LgorICAg
ICAgICAoZGlkRmFpbFByb3Zpc2lvbmFsTG9hZFdpdGhFcnJvckZvckZyYW1lKTogRW1pdAorICAg
ICAgICBXZWJLaXRXZWJWaWV3Ojpsb2FkLWZhaWxlZCBzaWduYWwgd2l0aCBTdGFydGVkIGV2ZW50
LgorICAgICAgICAoZGlkQ29tbWl0TG9hZEZvckZyYW1lKTogRW1pdCBXZWJLaXRXZWJWaWV3Ojps
b2FkLWNoYW5nZWQgc2lnbmFsCisgICAgICAgIHdpdGggQ29tbWl0dGVkIGV2ZW50LgorICAgICAg
ICAoZGlkRmluaXNoTG9hZEZvckZyYW1lKTogRW1pdCBXZWJLaXRXZWJWaWV3Ojpsb2FkLWNoYW5n
ZWQgc2lnbmFsCisgICAgICAgIHdpdGggRmluaXNoZWQgZXZlbnQuCisgICAgICAgIChkaWRGYWls
TG9hZFdpdGhFcnJvckZvckZyYW1lKTogRW1pdCBXZWJLaXRXZWJWaWV3Ojpsb2FkLWZhaWxlZAor
ICAgICAgICBzaWduYWwgd2l0aCBDb21taXR0ZWQgZXZlbnQuCisgICAgICAgICh3ZWJraXRfd2Vi
X2xvYWRlcl9jbGllbnRfaW5pdCk6CisgICAgICAgICh3ZWJraXRfd2ViX2xvYWRlcl9jbGllbnRf
Y2xhc3NfaW5pdCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViTG9hZGVy
Q2xpZW50Lmg6IFJlbW92ZSBwdWJsaWMgQVBJIGFuZAorICAgICAgICBtb3ZlIHByaXZhdGUgQVBJ
IGhlcmUuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViTG9hZGVyQ2xpZW50
UHJpdmF0ZS5oOiBSZW1vdmVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdl
YlZpZXcuY3BwOgorICAgICAgICAod2Via2l0V2ViVmlld0xvYWRGYWlsKTogRGVmYXVsdCBpbXBs
ZW1lbnRhdGlvbiBvZgorICAgICAgICBXZWJLaXRXZWJWaWV3Ojpsb2FkLWZhaWxlZCBzaWduYWwg
dG8gc2hvdyBhIGN1c3RvbSBlcnJvciBwYWdlLgorICAgICAgICAod2Via2l0X3dlYl92aWV3X2Ns
YXNzX2luaXQpOiBBZGQgbG9hZC1jaGFuZ2VkIGFuZCBsb2FkLWZhaWxlZAorICAgICAgICBzaWdu
YWxzLgorICAgICAgICAod2Via2l0V2ViVmlld0xvYWRDaGFuZ2VkKTogRW1pdCBXZWJLaXRXZWJW
aWV3Ojpsb2FkLWNoYW5nZWQgd2l0aAorICAgICAgICB0aGUgZ2l2ZW4gZXZlbnQuCisgICAgICAg
ICh3ZWJraXRXZWJWaWV3TG9hZEZhaWxlZCk6IEVtaXQgV2ViS2l0V2ViVmlldzo6bG9hZC1mYWls
ZWQgc2lnbmFsCisgICAgICAgIHdpdGggdGhlIGdpdmVuIGV2ZW50LCBmYWlsaW5nIHVyaSBhbmQg
ZXJyb3IuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlldy5oOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdQcml2YXRlLmg6CisgICAgICAg
ICogVUlQcm9jZXNzL0FQSS9ndGsvZG9jcy93ZWJraXQyZ3RrLWRvY3Muc2dtbDogUmVtb3ZlIGxv
YWRlcgorICAgICAgICBjbGllbnQgc2VjdGlvbi4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0
ay9kb2NzL3dlYmtpdDJndGstc2VjdGlvbnMudHh0OiBSZW1vdmUgbG9hZGVyCisgICAgICAgIGNs
aWVudCBzeW1ib2xzLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL2RvY3Mvd2Via2l0Mmd0
ay50eXBlczogUmVtb3ZlCisgICAgICAgIHdlYmtpdF93ZWJfbG9hZGVyX2NsaWVudF9nZXRfdHlw
ZS4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay90ZXN0cy9Mb2FkVHJhY2tpbmdUZXN0LmNw
cDoKKyAgICAgICAgKGxvYWRDaGFuZ2VkQ2FsbGJhY2spOgorICAgICAgICAobG9hZEZhaWxlZENh
bGxiYWNrKToKKyAgICAgICAgKExvYWRUcmFja2luZ1Rlc3Q6OkxvYWRUcmFja2luZ1Rlc3QpOgor
ICAgICAgICAoTG9hZFRyYWNraW5nVGVzdDo6fkxvYWRUcmFja2luZ1Rlc3QpOgorICAgICAgICAo
TG9hZFRyYWNraW5nVGVzdDo6cHJvdmlzaW9uYWxMb2FkU3RhcnRlZCk6CisgICAgICAgIChMb2Fk
VHJhY2tpbmdUZXN0Ojpwcm92aXNpb25hbExvYWRSZWNlaXZlZFNlcnZlclJlZGlyZWN0KToKKyAg
ICAgICAgKExvYWRUcmFja2luZ1Rlc3Q6OnByb3Zpc2lvbmFsTG9hZEZhaWxlZCk6CisgICAgICAg
IChMb2FkVHJhY2tpbmdUZXN0Ojpsb2FkQ29tbWl0dGVkKToKKyAgICAgICAgKExvYWRUcmFja2lu
Z1Rlc3Q6OmxvYWRGaW5pc2hlZCk6CisgICAgICAgIChMb2FkVHJhY2tpbmdUZXN0Ojpsb2FkRmFp
bGVkKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay90ZXN0cy9Mb2FkVHJhY2tpbmdUZXN0
Lmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvdGVzdHMvVGVzdFdlYktpdFdlYkxvYWRl
ckNsaWVudC5jcHA6CisgICAgICAgICh0ZXN0TG9hZGluZ0Vycm9yKToKKyAgICAgICAgKExvYWRT
dG9wVHJhY2tpbmdUZXN0Ojpsb2FkQ29tbWl0dGVkKToKKyAgICAgICAgKExvYWRTdG9wVHJhY2tp
bmdUZXN0Ojpsb2FkRmFpbGVkKToKKyAgICAgICAgKHRlc3RMb2FkQ2FuY2VsbGVkKToKKyAgICAg
ICAgKiBVSVByb2Nlc3MvQVBJL2d0ay90ZXN0cy9UZXN0V2ViS2l0V2ViVmlldy5jcHA6CisgICAg
ICAgIChiZWZvcmVBbGwpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL3dlYmtpdDIuaDog
UmVtb3ZlIGxvYWRlciBjbGllbnQgaGVhZGVyLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3Rr
L3dlYmtpdDJtYXJzaGFsLmxpc3Q6CisKIDIwMTEtMTItMjUgIERhbiBCZXJuc3RlaW4gIDxtaXR6
QGFwcGxlLmNvbT4KIAogICAgICAgICBGaW5kIGluZGljYXRvcnMgb3ZlcmxhcCB3aGVuIGEgbWF0
Y2ggc3BhbnMgbXVsdGlwbGUgdGV4dCBib3hlcwpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9n
IGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IGRhYjkyZGIuLmM1ODJjZWYgMTAwNjQ0Ci0tLSBhL1Rv
b2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAx
MS0xMi0yNiAgQ2FybG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+CisKKyAg
ICAgICAgW0dUS10gU2ltcGxpZnkgbG9hZGVyIGNsaWVudCBXZWJLaXQyIEdUSysgQVBJCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03NDYwNQorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogZ3RrL2dlbmVyYXRl
LWd0a2RvYzogSWdub3JlIFdlYktpdFdlYkxvYWRlckNsaWVudCBzaW5jZSBpdCdzIG5vdworICAg
ICAgICBwcml2YXRlIEFQSS4KKwogMjAxMS0xMi0yNCAgS2VudGFybyBIYXJhICA8aGFyYWtlbkBj
aHJvbWl1bS5vcmc+CiAKICAgICAgICAgQWRkIHVuaXR0ZXN0cyBmb3IgdGhlIEMrKyBwYXJzZXIg
b2YgcHJlcGFyZS1DaGFuZ2VMb2cKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvZ3RrL1dlYktpdERlZmluZXMuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
Z3RrL1dlYktpdERlZmluZXMuaAppbmRleCBkYzMzZGJjLi43OWIzMzgzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXREZWZpbmVzLmgKKysrIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0RGVmaW5lcy5oCkBAIC0zMCwxMiAr
MzAsNiBAQAogI2lmbmRlZiBXZWJLaXREZWZpbmVzX2gKICNkZWZpbmUgV2ViS2l0RGVmaW5lc19o
CiAKLXR5cGVkZWYgc3RydWN0IF9XZWJLaXRXZWJWaWV3IFdlYktpdFdlYlZpZXc7Ci10eXBlZGVm
IHN0cnVjdCBfV2ViS2l0V2ViVmlld0NsYXNzIFdlYktpdFdlYlZpZXdDbGFzczsKLQotdHlwZWRl
ZiBzdHJ1Y3QgX1dlYktpdFdlYkxvYWRlckNsaWVudCAgICAgICAgV2ViS2l0V2ViTG9hZGVyQ2xp
ZW50OwotdHlwZWRlZiBzdHJ1Y3QgX1dlYktpdFdlYkxvYWRlckNsaWVudENsYXNzICAgV2ViS2l0
V2ViTG9hZGVyQ2xpZW50Q2xhc3M7Ci0KICNpbmNsdWRlIDxnbGliLmg+CiAKICNpZmRlZiBHX09T
X1dJTjMyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJL
aXRXZWJMb2FkZXJDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsv
V2ViS2l0V2ViTG9hZGVyQ2xpZW50LmNwcAppbmRleCA2Y2VjNDZmLi5kMjc1NjBmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJMb2FkZXJDbGll
bnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYkxv
YWRlckNsaWVudC5jcHAKQEAgLTIyLDMzICsyMiwxMyBAQAogI2luY2x1ZGUgIldlYktpdFdlYkxv
YWRlckNsaWVudC5oIgogCiAjaW5jbHVkZSAiV2ViS2l0QmFja0ZvcndhcmRMaXN0UHJpdmF0ZS5o
IgotI2luY2x1ZGUgIldlYktpdEVycm9yLmgiCi0jaW5jbHVkZSAiV2ViS2l0TWFyc2hhbC5oIgot
I2luY2x1ZGUgIldlYktpdFByaXZhdGUuaCIKLSNpbmNsdWRlICJXZWJLaXRXZWJMb2FkZXJDbGll
bnRQcml2YXRlLmgiCi0jaW5jbHVkZSAiV2ViS2l0V2ViVmlldy5oIgogI2luY2x1ZGUgIldlYktp
dFdlYlZpZXdQcml2YXRlLmgiCi0jaW5jbHVkZSAiV2ViS2l0V2ViVmlld0Jhc2VQcml2YXRlLmgi
CiAjaW5jbHVkZSA8d3RmL2dvYmplY3QvR093blB0ci5oPgotI2luY2x1ZGUgPHd0Zi9nb2JqZWN0
L0dSZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAKK3VzaW5nIG5hbWVz
cGFjZSBXZWJLaXQ7CiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAotZW51bSB7Ci0gICAgUFJP
VklTSU9OQUxfTE9BRF9TVEFSVEVELAotICAgIFBST1ZJU0lPTkFMX0xPQURfUkVDRUlWRURfU0VS
VkVSX1JFRElSRUNULAotICAgIFBST1ZJU0lPTkFMX0xPQURfRkFJTEVELAotCi0gICAgTE9BRF9D
T01NSVRURUQsCi0gICAgTE9BRF9GSU5JU0hFRCwKLSAgICBMT0FEX0ZBSUxFRCwKLQotICAgIExB
U1RfU0lHTkFMCi19OwotCi1zdGF0aWMgZ3VpbnQgc2lnbmFsc1tMQVNUX1NJR05BTF0gPSB7IDAs
IH07Ci0KIEdfREVGSU5FX1RZUEUoV2ViS2l0V2ViTG9hZGVyQ2xpZW50LCB3ZWJraXRfd2ViX2xv
YWRlcl9jbGllbnQsIEdfVFlQRV9PQkpFQ1QpCiAKIHN0YXRpYyB2b2lkIGRpZFN0YXJ0UHJvdmlz
aW9uYWxMb2FkRm9yRnJhbWUoV0tQYWdlUmVmIHBhZ2UsIFdLRnJhbWVSZWYgZnJhbWUsIFdLVHlw
ZVJlZiB1c2VyRGF0YSwgY29uc3Qgdm9pZCogY2xpZW50SW5mbykKQEAgLTU2LDEwICszNiw3IEBA
IHN0YXRpYyB2b2lkIGRpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUoV0tQYWdlUmVmIHBh
Z2UsIFdLRnJhbWVSZWYgZnJhbWUsIFdLCiAgICAgaWYgKCFXS0ZyYW1lSXNNYWluRnJhbWUoZnJh
bWUpKQogICAgICAgICByZXR1cm47CiAKLSAgICBnYm9vbGVhbiByZXR1cm5WYWx1ZTsKLSAgICBX
ZWJLaXRXZWJWaWV3KiB3ZWJWaWV3ID0gV0VCS0lUX1dFQl9WSUVXKHRvSW1wbChwYWdlKS0+dmll
d1dpZGdldCgpKTsKLSAgICB3ZWJraXRXZWJWaWV3VXBkYXRlVVJJKHdlYlZpZXcpOwotICAgIGdf
c2lnbmFsX2VtaXQoV0VCS0lUX1dFQl9MT0FERVJfQ0xJRU5UKGNsaWVudEluZm8pLCBzaWduYWxz
W1BST1ZJU0lPTkFMX0xPQURfU1RBUlRFRF0sIDAsIHdlYlZpZXcsICZyZXR1cm5WYWx1ZSk7Cisg
ICAgd2Via2l0V2ViVmlld0xvYWRDaGFuZ2VkKFdFQktJVF9XRUJfVklFVyh0b0ltcGwocGFnZSkt
PnZpZXdXaWRnZXQoKSksIFdFQktJVF9MT0FEX1NUQVJURUQpOwogfQogCiBzdGF0aWMgdm9pZCBk
aWRSZWNlaXZlU2VydmVyUmVkaXJlY3RGb3JQcm92aXNpb25hbExvYWRGb3JGcmFtZShXS1BhZ2VS
ZWYgcGFnZSwgV0tGcmFtZVJlZiBmcmFtZSwgV0tUeXBlUmVmIHVzZXJEYXRhLCBjb25zdCB2b2lk
KiBjbGllbnRJbmZvKQpAQCAtNjcsMTAgKzQ0LDcgQEAgc3RhdGljIHZvaWQgZGlkUmVjZWl2ZVNl
cnZlclJlZGlyZWN0Rm9yUHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUoV0tQYWdlUmVmIHBhZ2UsIFcK
ICAgICBpZiAoIVdLRnJhbWVJc01haW5GcmFtZShmcmFtZSkpCiAgICAgICAgIHJldHVybjsKIAot
ICAgIGdib29sZWFuIHJldHVyblZhbHVlOwotICAgIFdlYktpdFdlYlZpZXcqIHdlYlZpZXcgPSBX
RUJLSVRfV0VCX1ZJRVcodG9JbXBsKHBhZ2UpLT52aWV3V2lkZ2V0KCkpOwotICAgIHdlYmtpdFdl
YlZpZXdVcGRhdGVVUkkod2ViVmlldyk7Ci0gICAgZ19zaWduYWxfZW1pdChXRUJLSVRfV0VCX0xP
QURFUl9DTElFTlQoY2xpZW50SW5mbyksIHNpZ25hbHNbUFJPVklTSU9OQUxfTE9BRF9SRUNFSVZF
RF9TRVJWRVJfUkVESVJFQ1RdLCAwLCB3ZWJWaWV3LCAmcmV0dXJuVmFsdWUpOworICAgIHdlYmtp
dFdlYlZpZXdMb2FkQ2hhbmdlZChXRUJLSVRfV0VCX1ZJRVcodG9JbXBsKHBhZ2UpLT52aWV3V2lk
Z2V0KCkpLCBXRUJLSVRfTE9BRF9SRURJUkVDVEVEKTsKIH0KIAogc3RhdGljIHZvaWQgZGlkRmFp
bFByb3Zpc2lvbmFsTG9hZFdpdGhFcnJvckZvckZyYW1lKFdLUGFnZVJlZiBwYWdlLCBXS0ZyYW1l
UmVmIGZyYW1lLCBXS0Vycm9yUmVmIGVycm9yLCBXS1R5cGVSZWYgdXNlckRhdGEsIGNvbnN0IHZv
aWQqIGNsaWVudEluZm8pCkBAIC04MiwxMCArNTYsOCBAQCBzdGF0aWMgdm9pZCBkaWRGYWlsUHJv
dmlzaW9uYWxMb2FkV2l0aEVycm9yRm9yRnJhbWUoV0tQYWdlUmVmIHBhZ2UsIFdLRnJhbWVSZWYg
ZgogICAgIEdPd25QdHI8R0Vycm9yPiB3ZWJFcnJvcihnX2Vycm9yX25ld19saXRlcmFsKGdfcXVh
cmtfZnJvbV9zdHJpbmcocmVzb3VyY2VFcnJvci5kb21haW4oKS51dGY4KCkuZGF0YSgpKSwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNvdXJjZUVy
cm9yLmVycm9yQ29kZSgpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHJlc291cmNlRXJyb3IubG9jYWxpemVkRGVzY3JpcHRpb24oKS51dGY4KCkuZGF0
YSgpKSk7Ci0gICAgZ2Jvb2xlYW4gcmV0dXJuVmFsdWU7Ci0gICAgV2ViS2l0V2ViVmlldyogd2Vi
VmlldyA9IFdFQktJVF9XRUJfVklFVyh0b0ltcGwocGFnZSktPnZpZXdXaWRnZXQoKSk7Ci0gICAg
Z19zaWduYWxfZW1pdChXRUJLSVRfV0VCX0xPQURFUl9DTElFTlQoY2xpZW50SW5mbyksIHNpZ25h
bHNbUFJPVklTSU9OQUxfTE9BRF9GQUlMRURdLCAwLCB3ZWJWaWV3LCByZXNvdXJjZUVycm9yLmZh
aWxpbmdVUkwoKS51dGY4KCkuZGF0YSgpLAotICAgICAgICAgICAgICAgICAgd2ViRXJyb3IuZ2V0
KCksICZyZXR1cm5WYWx1ZSk7CisgICAgd2Via2l0V2ViVmlld0xvYWRGYWlsZWQoV0VCS0lUX1dF
Ql9WSUVXKHRvSW1wbChwYWdlKS0+dmlld1dpZGdldCgpKSwgV0VCS0lUX0xPQURfU1RBUlRFRCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNvdXJjZUVycm9yLmZhaWxpbmdVUkwoKS51
dGY4KCkuZGF0YSgpLCB3ZWJFcnJvci5nZXQoKSk7CiB9CiAKIHN0YXRpYyB2b2lkIGRpZENvbW1p
dExvYWRGb3JGcmFtZShXS1BhZ2VSZWYgcGFnZSwgV0tGcmFtZVJlZiBmcmFtZSwgV0tUeXBlUmVm
IHVzZXJEYXRhLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKQpAQCAtOTMsMTAgKzY1LDcgQEAgc3Rh
dGljIHZvaWQgZGlkQ29tbWl0TG9hZEZvckZyYW1lKFdLUGFnZVJlZiBwYWdlLCBXS0ZyYW1lUmVm
IGZyYW1lLCBXS1R5cGVSZWYgdXMKICAgICBpZiAoIVdLRnJhbWVJc01haW5GcmFtZShmcmFtZSkp
CiAgICAgICAgIHJldHVybjsKIAotICAgIGdib29sZWFuIHJldHVyblZhbHVlOwotICAgIFdlYktp
dFdlYlZpZXcqIHdlYlZpZXcgPSBXRUJLSVRfV0VCX1ZJRVcodG9JbXBsKHBhZ2UpLT52aWV3V2lk
Z2V0KCkpOwotICAgIHdlYmtpdFdlYlZpZXdVcGRhdGVVUkkod2ViVmlldyk7Ci0gICAgZ19zaWdu
YWxfZW1pdChXRUJLSVRfV0VCX0xPQURFUl9DTElFTlQoY2xpZW50SW5mbyksIHNpZ25hbHNbTE9B
RF9DT01NSVRURURdLCAwLCB3ZWJWaWV3LCAgJnJldHVyblZhbHVlKTsKKyAgICB3ZWJraXRXZWJW
aWV3TG9hZENoYW5nZWQoV0VCS0lUX1dFQl9WSUVXKHRvSW1wbChwYWdlKS0+dmlld1dpZGdldCgp
KSwgV0VCS0lUX0xPQURfQ09NTUlUVEVEKTsKIH0KIAogc3RhdGljIHZvaWQgZGlkRmluaXNoTG9h
ZEZvckZyYW1lKFdLUGFnZVJlZiBwYWdlLCBXS0ZyYW1lUmVmIGZyYW1lLCBXS1R5cGVSZWYgdXNl
ckRhdGEsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pCkBAIC0xMDQsOSArNzMsNyBAQCBzdGF0aWMg
dm9pZCBkaWRGaW5pc2hMb2FkRm9yRnJhbWUoV0tQYWdlUmVmIHBhZ2UsIFdLRnJhbWVSZWYgZnJh
bWUsIFdLVHlwZVJlZiB1cwogICAgIGlmICghV0tGcmFtZUlzTWFpbkZyYW1lKGZyYW1lKSkKICAg
ICAgICAgcmV0dXJuOwogCi0gICAgZ2Jvb2xlYW4gcmV0dXJuVmFsdWU7Ci0gICAgV2ViS2l0V2Vi
Vmlldyogd2ViVmlldyA9IFdFQktJVF9XRUJfVklFVyh0b0ltcGwocGFnZSktPnZpZXdXaWRnZXQo
KSk7Ci0gICAgZ19zaWduYWxfZW1pdChXRUJLSVRfV0VCX0xPQURFUl9DTElFTlQoY2xpZW50SW5m
byksIHNpZ25hbHNbTE9BRF9GSU5JU0hFRF0sIDAsIHdlYlZpZXcsICZyZXR1cm5WYWx1ZSk7Cisg
ICAgd2Via2l0V2ViVmlld0xvYWRDaGFuZ2VkKFdFQktJVF9XRUJfVklFVyh0b0ltcGwocGFnZSkt
PnZpZXdXaWRnZXQoKSksIFdFQktJVF9MT0FEX0ZJTklTSEVEKTsKIH0KIAogc3RhdGljIHZvaWQg
ZGlkRmFpbExvYWRXaXRoRXJyb3JGb3JGcmFtZShXS1BhZ2VSZWYgcGFnZSwgV0tGcmFtZVJlZiBm
cmFtZSwgV0tFcnJvclJlZiBlcnJvciwgV0tUeXBlUmVmLCBjb25zdCB2b2lkKiBjbGllbnRJbmZv
KQpAQCAtMTE4LDEwICs4NSw4IEBAIHN0YXRpYyB2b2lkIGRpZEZhaWxMb2FkV2l0aEVycm9yRm9y
RnJhbWUoV0tQYWdlUmVmIHBhZ2UsIFdLRnJhbWVSZWYgZnJhbWUsIFdLRXJyCiAgICAgR093blB0
cjxHRXJyb3I+IHdlYkVycm9yKGdfZXJyb3JfbmV3X2xpdGVyYWwoZ19xdWFya19mcm9tX3N0cmlu
ZyhyZXNvdXJjZUVycm9yLmRvbWFpbigpLnV0ZjgoKS5kYXRhKCkpLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc291cmNlRXJyb3IuZXJyb3JDb2Rl
KCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVz
b3VyY2VFcnJvci5sb2NhbGl6ZWREZXNjcmlwdGlvbigpLnV0ZjgoKS5kYXRhKCkpKTsKLSAgICBn
Ym9vbGVhbiByZXR1cm5WYWx1ZTsKLSAgICBXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3ID0gV0VCS0lU
X1dFQl9WSUVXKHRvSW1wbChwYWdlKS0+dmlld1dpZGdldCgpKTsKLSAgICBnX3NpZ25hbF9lbWl0
KFdFQktJVF9XRUJfTE9BREVSX0NMSUVOVChjbGllbnRJbmZvKSwgc2lnbmFsc1tMT0FEX0ZBSUxF
RF0sIDAsIHdlYlZpZXcsCi0gICAgICAgICAgICAgICAgICByZXNvdXJjZUVycm9yLmZhaWxpbmdV
UkwoKS51dGY4KCkuZGF0YSgpLCB3ZWJFcnJvci5nZXQoKSwgJnJldHVyblZhbHVlKTsKKyAgICB3
ZWJraXRXZWJWaWV3TG9hZEZhaWxlZChXRUJLSVRfV0VCX1ZJRVcodG9JbXBsKHBhZ2UpLT52aWV3
V2lkZ2V0KCkpLCBXRUJLSVRfTE9BRF9DT01NSVRURUQsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgcmVzb3VyY2VFcnJvci5mYWlsaW5nVVJMKCkudXRmOCgpLmRhdGEoKSwgd2ViRXJyb3Iu
Z2V0KCkpOwogfQogCiBzdGF0aWMgdm9pZCBkaWRTYW1lRG9jdW1lbnROYXZpZ2F0aW9uRm9yRnJh
bWUoV0tQYWdlUmVmIHBhZ2UsIFdLRnJhbWVSZWYgZnJhbWUsIFdLU2FtZURvY3VtZW50TmF2aWdh
dGlvblR5cGUsIFdLVHlwZVJlZiwgY29uc3Qgdm9pZCopCkBAIC0xODcsMTc5ICsxNTIsMTAgQEAg
dm9pZCB3ZWJraXRXZWJMb2FkZXJDbGllbnRBdHRhY2hMb2FkZXJDbGllbnRUb1BhZ2UoV2ViS2l0
V2ViTG9hZGVyQ2xpZW50KiBsb2FkZXIKICAgICBXS1BhZ2VTZXRQYWdlTG9hZGVyQ2xpZW50KHdr
UGFnZSwgJndrTG9hZGVyQ2xpZW50KTsKIH0KIAotc3RhdGljIGdib29sZWFuIHdlYmtpdFdlYkxv
YWRlckNsaWVudExvYWRGYWlsZWQoV2ViS2l0V2ViTG9hZGVyQ2xpZW50KiBjbGllbnQsIFdlYktp
dFdlYlZpZXcqIHdlYlZpZXcsIGNvbnN0IGdjaGFyKiBmYWlsaW5nVVJJLCBHRXJyb3IqIGVycm9y
KQotewotICAgIGlmIChnX2Vycm9yX21hdGNoZXMoZXJyb3IsIFdFQktJVF9ORVRXT1JLX0VSUk9S
LCBXRUJLSVRfTkVUV09SS19FUlJPUl9DQU5DRUxMRUQpCi0gICAgICAgIHx8IGdfZXJyb3JfbWF0
Y2hlcyhlcnJvciwgV0VCS0lUX1BPTElDWV9FUlJPUiwgV0VCS0lUX1BPTElDWV9FUlJPUl9GUkFN
RV9MT0FEX0lOVEVSUlVQVEVEX0JZX1BPTElDWV9DSEFOR0UpCi0gICAgICAgIHx8IGdfZXJyb3Jf
bWF0Y2hlcyhlcnJvciwgV0VCS0lUX1BMVUdJTl9FUlJPUiwgV0VCS0lUX1BMVUdJTl9FUlJPUl9X
SUxMX0hBTkRMRV9MT0FEKSkKLSAgICAgICAgcmV0dXJuIEZBTFNFOwotCi0gICAgR093blB0cjxj
aGFyPiBodG1sU3RyaW5nKGdfc3RyZHVwX3ByaW50ZigiPGh0bWw+PGJvZHk+JXM8L2JvZHk+PC9o
dG1sPiIsIGVycm9yLT5tZXNzYWdlKSk7Ci0gICAgd2Via2l0X3dlYl92aWV3X2xvYWRfYWx0ZXJu
YXRlX2h0bWwod2ViVmlldywgaHRtbFN0cmluZy5nZXQoKSwgMCwgZmFpbGluZ1VSSSk7Ci0KLSAg
ICByZXR1cm4gVFJVRTsKLX0KLQotc3RhdGljIHZvaWQgd2Via2l0X3dlYl9sb2FkZXJfY2xpZW50
X2luaXQoV2ViS2l0V2ViTG9hZGVyQ2xpZW50KiBjbGllbnQpCitzdGF0aWMgdm9pZCB3ZWJraXRf
d2ViX2xvYWRlcl9jbGllbnRfaW5pdChXZWJLaXRXZWJMb2FkZXJDbGllbnQqKQogewogfQogCi1z
dGF0aWMgdm9pZCB3ZWJraXRfd2ViX2xvYWRlcl9jbGllbnRfY2xhc3NfaW5pdChXZWJLaXRXZWJM
b2FkZXJDbGllbnRDbGFzcyogY2xpZW50Q2xhc3MpCitzdGF0aWMgdm9pZCB3ZWJraXRfd2ViX2xv
YWRlcl9jbGllbnRfY2xhc3NfaW5pdChXZWJLaXRXZWJMb2FkZXJDbGllbnRDbGFzcyopCiB7Ci0g
ICAgR09iamVjdENsYXNzKiBvYmplY3RDbGFzcyA9IEdfT0JKRUNUX0NMQVNTKGNsaWVudENsYXNz
KTsKLSAgICBjbGllbnRDbGFzcy0+cHJvdmlzaW9uYWxfbG9hZF9mYWlsZWQgPSB3ZWJraXRXZWJM
b2FkZXJDbGllbnRMb2FkRmFpbGVkOwotICAgIGNsaWVudENsYXNzLT5sb2FkX2ZhaWxlZCA9IHdl
YmtpdFdlYkxvYWRlckNsaWVudExvYWRGYWlsZWQ7Ci0KLSAgICAvKioKLSAgICAgKiBXZWJLaXRX
ZWJMb2FkZXJDbGllbnQ6OnByb3Zpc2lvbmFsLWxvYWQtc3RhcnRlZDoKLSAgICAgKiBAbG9hZGVy
X2NsaWVudDogdGhlICNXZWJLaXRXZWJMb2FkZXJDbGllbnQKLSAgICAgKiBAd2ViX3ZpZXc6IHRo
ZSAjV2ViS2l0V2ViVmlldyBhc3NvY2lhdGVkIHdpdGggdGhpcyBldmVudAotICAgICAqCi0gICAg
ICogVGhpcyBzaWduYWwgaXMgZW1pdHRlZCB3aGVuIG5ldyBsb2FkIHJlcXVlc3QgaXMgbWFkZS4K
LSAgICAgKiBObyBkYXRhIGhhcyBiZWVuIHJlY2VpdmVkIHlldCwgZW1wdHkgc3RydWN0dXJlcyBo
YXZlCi0gICAgICogYmVlbiBhbGxvY2F0ZWQgdG8gcGVyZm9ybSB0aGUgbG9hZDsgdGhlIGxvYWQg
bWF5IHN0aWxsCi0gICAgICogZmFpbCBmb3IgdHJhbnNwb3J0IGlzc3VlcyBzdWNoIGFzIG5vdCBi
ZWluZyBhYmxlIHRvCi0gICAgICogcmVzb2x2ZSBhIG5hbWUsIG9yIGNvbm5lY3QgdG8gYSBwb3J0
LgotICAgICAqCi0gICAgICogUmV0dXJuczogJVRSVUUgdG8gc3RvcCBvdGhlciBoYW5kbGVycyBm
cm9tIGJlaW5nIGludm9rZWQgZm9yIHRoZSBldmVudC4KLSAgICAgKiAgICVGQUxTRSB0byBwcm9w
YWdhdGUgdGhlIGV2ZW50IGZ1cnRoZXIuCi0gICAgICovCi0gICAgc2lnbmFsc1tQUk9WSVNJT05B
TF9MT0FEX1NUQVJURURdID0KLSAgICAgICAgZ19zaWduYWxfbmV3KCJwcm92aXNpb25hbC1sb2Fk
LXN0YXJ0ZWQiLAotICAgICAgICAgICAgICAgICAgICAgR19UWVBFX0ZST01fQ0xBU1Mob2JqZWN0
Q2xhc3MpLAotICAgICAgICAgICAgICAgICAgICAgR19TSUdOQUxfUlVOX0xBU1QsCi0gICAgICAg
ICAgICAgICAgICAgICBHX1NUUlVDVF9PRkZTRVQoV2ViS2l0V2ViTG9hZGVyQ2xpZW50Q2xhc3Ms
IHByb3Zpc2lvbmFsX2xvYWRfc3RhcnRlZCksCi0gICAgICAgICAgICAgICAgICAgICBnX3NpZ25h
bF9hY2N1bXVsYXRvcl90cnVlX2hhbmRsZWQsIE5VTEwsCi0gICAgICAgICAgICAgICAgICAgICB3
ZWJraXRfbWFyc2hhbF9CT09MRUFOX19PQkpFQ1QsCi0gICAgICAgICAgICAgICAgICAgICBHX1RZ
UEVfQk9PTEVBTiwgMSwKLSAgICAgICAgICAgICAgICAgICAgIFdFQktJVF9UWVBFX1dFQl9WSUVX
KTsKLQotICAgIC8qKgotICAgICAqIFdlYktpdFdlYkxvYWRlckNsaWVudDo6cHJvdmlzaW9uYWwt
bG9hZC1yZWNlaXZlZC1zZXJ2ZXItcmVkaXJlY3Q6Ci0gICAgICogQGxvYWRlcl9jbGllbnQ6IHRo
ZSAjV2ViS2l0V2ViTG9hZGVyQ2xpZW50Ci0gICAgICogQHdlYl92aWV3OiB0aGUgI1dlYktpdFdl
YlZpZXcgYXNzb2NpYXRlZCB3aXRoIHRoaXMgZXZlbnQKLSAgICAgKgotICAgICAqIFRoaXMgc2ln
bmFsIGlzIGVtaXR0ZWQgd2hlbiBhIHByb3Zpc2lvbmFsIGRhdGEgc291cmNlCi0gICAgICogcmVj
ZWl2ZXMgYSBzZXJ2ZXIgcmVkaXJlY3QuCi0gICAgICoKLSAgICAgKiBUaGlzIHNpZ25hbCBpcyBl
bWl0dGVkIGFmdGVyICNXZWJLaXRXZWJMb2FkZXJDbGllbnQ6OnByb3Zpc2lvbmFsLWxvYWQtc3Rh
cnRlZC4KLSAgICAgKgotICAgICAqIFJldHVybnM6ICVUUlVFIHRvIHN0b3Agb3RoZXIgaGFuZGxl
cnMgZnJvbSBiZWluZyBpbnZva2VkIGZvciB0aGUgZXZlbnQuCi0gICAgICogICAlRkFMU0UgdG8g
cHJvcGFnYXRlIHRoZSBldmVudCBmdXJ0aGVyLgotICAgICAqLwotICAgIHNpZ25hbHNbUFJPVklT
SU9OQUxfTE9BRF9SRUNFSVZFRF9TRVJWRVJfUkVESVJFQ1RdID0KLSAgICAgICAgZ19zaWduYWxf
bmV3KCJwcm92aXNpb25hbC1sb2FkLXJlY2VpdmVkLXNlcnZlci1yZWRpcmVjdCIsCi0gICAgICAg
ICAgICAgICAgICAgICBHX1RZUEVfRlJPTV9DTEFTUyhvYmplY3RDbGFzcyksCi0gICAgICAgICAg
ICAgICAgICAgICBHX1NJR05BTF9SVU5fTEFTVCwKLSAgICAgICAgICAgICAgICAgICAgIEdfU1RS
VUNUX09GRlNFVChXZWJLaXRXZWJMb2FkZXJDbGllbnRDbGFzcywgcHJvdmlzaW9uYWxfbG9hZF9y
ZWNlaXZlZF9zZXJ2ZXJfcmVkaXJlY3QpLAotICAgICAgICAgICAgICAgICAgICAgZ19zaWduYWxf
YWNjdW11bGF0b3JfdHJ1ZV9oYW5kbGVkLCBOVUxMLAotICAgICAgICAgICAgICAgICAgICAgd2Vi
a2l0X21hcnNoYWxfQk9PTEVBTl9fT0JKRUNULAotICAgICAgICAgICAgICAgICAgICAgR19UWVBF
X0JPT0xFQU4sIDEsCi0gICAgICAgICAgICAgICAgICAgICBXRUJLSVRfVFlQRV9XRUJfVklFVyk7
Ci0KLSAgICAvKioKLSAgICAgKiBXZWJLaXRXZWJMb2FkZXJDbGllbnQ6OnByb3Zpc2lvbmFsLWxv
YWQtZmFpbGVkOgotICAgICAqIEBsb2FkZXJfY2xpZW50OiB0aGUgI1dlYktpdFdlYkxvYWRlckNs
aWVudAotICAgICAqIEB3ZWJfdmlldzogdGhlICNXZWJLaXRXZWJWaWV3IGFzc29jaWF0ZWQgd2l0
aCB0aGlzIGV2ZW50Ci0gICAgICogQGVycm9yOiB0aGUgI0dFcnJvciB0aGF0IHdhcyB0cmlnZ2Vy
ZWQKLSAgICAgKgotICAgICAqIFRoaXMgc2lnbmFsIGlzIGVtaXR0ZWQgd2hlbiBhbiBlcnJvciBv
Y2N1cnMgd2hlbiBzdGFydGluZyB0bwotICAgICAqIGxvYWQgZGF0YSBmb3IgYSBwYWdlLiBCeSBk
ZWZhdWx0LCBpZiB0aGUgc2lnbmFsIGlzIG5vdCBoYW5kbGVkLAotICAgICAqIGEgc3RvY2sgZXJy
b3IgcGFnZSB3aWxsIGJlIGRpc3BsYXllZC4gWW91IG5lZWQgdG8gaGFuZGxlIHRoZSBzaWduYWwK
LSAgICAgKiBpZiB5b3Ugd2FudCB0byBwcm92aWRlIHlvdXIgb3duIGVycm9yIHBhZ2UuIFRoaXMg
c2lnbmFsIGZpbmlzaGVzIHRoZQotICAgICAqIGxvYWQgc28gbm8gb3RoZXIgc2lnbmFscyB3aWxs
IGJlIGVtaXR0ZWQgYWZ0ZXIgdGhpcyBvbmUuCi0gICAgICoKLSAgICAgKiBUaGlzIHNpZ25hbCBp
cyBlbWl0dGVkIGFmdGVyICNXZWJLaXRXZWJMb2FkZXJDbGllbnQ6OnByb3Zpc2lvbmFsLWxvYWQt
c3RhcnRlZC4KLSAgICAgKgotICAgICAqIFJldHVybnM6ICVUUlVFIHRvIHN0b3Agb3RoZXIgaGFu
ZGxlcnMgZnJvbSBiZWluZyBpbnZva2VkIGZvciB0aGUgZXZlbnQuCi0gICAgICogICAlRkFMU0Ug
dG8gcHJvcGFnYXRlIHRoZSBldmVudCBmdXJ0aGVyLgotICAgICAqLwotICAgIHNpZ25hbHNbUFJP
VklTSU9OQUxfTE9BRF9GQUlMRURdID0KLSAgICAgICAgZ19zaWduYWxfbmV3KCJwcm92aXNpb25h
bC1sb2FkLWZhaWxlZCIsCi0gICAgICAgICAgICAgICAgICAgICBHX1RZUEVfRlJPTV9DTEFTUyhv
YmplY3RDbGFzcyksCi0gICAgICAgICAgICAgICAgICAgICBHX1NJR05BTF9SVU5fTEFTVCwKLSAg
ICAgICAgICAgICAgICAgICAgIEdfU1RSVUNUX09GRlNFVChXZWJLaXRXZWJMb2FkZXJDbGllbnRD
bGFzcywgcHJvdmlzaW9uYWxfbG9hZF9mYWlsZWQpLAotICAgICAgICAgICAgICAgICAgICAgZ19z
aWduYWxfYWNjdW11bGF0b3JfdHJ1ZV9oYW5kbGVkLCBOVUxMLAotICAgICAgICAgICAgICAgICAg
ICAgd2Via2l0X21hcnNoYWxfQk9PTEVBTl9fT0JKRUNUX1NUUklOR19QT0lOVEVSLAotICAgICAg
ICAgICAgICAgICAgICAgR19UWVBFX0JPT0xFQU4sIDMsCi0gICAgICAgICAgICAgICAgICAgICBX
RUJLSVRfVFlQRV9XRUJfVklFVywKLSAgICAgICAgICAgICAgICAgICAgIEdfVFlQRV9TVFJJTkcs
Ci0gICAgICAgICAgICAgICAgICAgICBHX1RZUEVfUE9JTlRFUik7Ci0KLSAgICAvKioKLSAgICAg
KiBXZWJLaXRXZWJMb2FkZXJDbGllbnQ6OmxvYWQtY29tbWl0dGVkOgotICAgICAqIEBsb2FkZXJf
Y2xpZW50OiB0aGUgI1dlYktpdFdlYkxvYWRlckNsaWVudAotICAgICAqIEB3ZWJfdmlldzogdGhl
ICNXZWJLaXRXZWJWaWV3IGFzc29jaWF0ZWQgd2l0aCB0aGlzIGV2ZW50Ci0gICAgICoKLSAgICAg
KiBUaGlzIHNpZ25hbCBpcyBlbWl0dGVkIHdoZW4gY29udGVudCBzdGFydHMgYXJyaXZpbmcgZm9y
IGEgcGFnZSBsb2FkLgotICAgICAqIFRoZSBuZWNlc3NhcnkgdHJhbnNwb3J0IHJlcXVpcmVtZW50
cyBhcmUgc3RhYmlsaXNoZWQsIGFuZCB0aGUKLSAgICAgKiBsb2FkIGlzIGJlaW5nIHBlcmZvcm1l
ZC4KLSAgICAgKgotICAgICAqIFRoaXMgc2lnbmFsIGlzIGVtaXR0ZWQgYWZ0ZXIgI1dlYktpdFdl
YkxvYWRlckNsaWVudDo6cHJvdmlzaW9uYWwtbG9hZC1zdGFydGVkLgotICAgICAqCi0gICAgICog
UmV0dXJuczogJVRSVUUgdG8gc3RvcCBvdGhlciBoYW5kbGVycyBmcm9tIGJlaW5nIGludm9rZWQg
Zm9yIHRoZSBldmVudC4KLSAgICAgKiAgICVGQUxTRSB0byBwcm9wYWdhdGUgdGhlIGV2ZW50IGZ1
cnRoZXIuCi0gICAgICovCi0gICAgc2lnbmFsc1tMT0FEX0NPTU1JVFRFRF0gPQotICAgICAgICBn
X3NpZ25hbF9uZXcoImxvYWQtY29tbWl0dGVkIiwKLSAgICAgICAgICAgICAgICAgICAgIEdfVFlQ
RV9GUk9NX0NMQVNTKG9iamVjdENsYXNzKSwKLSAgICAgICAgICAgICAgICAgICAgIEdfU0lHTkFM
X1JVTl9MQVNULAotICAgICAgICAgICAgICAgICAgICAgR19TVFJVQ1RfT0ZGU0VUKFdlYktpdFdl
YkxvYWRlckNsaWVudENsYXNzLCBsb2FkX2NvbW1pdHRlZCksCi0gICAgICAgICAgICAgICAgICAg
ICBnX3NpZ25hbF9hY2N1bXVsYXRvcl90cnVlX2hhbmRsZWQsIE5VTEwsCi0gICAgICAgICAgICAg
ICAgICAgICB3ZWJraXRfbWFyc2hhbF9CT09MRUFOX19PQkpFQ1QsCi0gICAgICAgICAgICAgICAg
ICAgICBHX1RZUEVfQk9PTEVBTiwgMSwKLSAgICAgICAgICAgICAgICAgICAgIFdFQktJVF9UWVBF
X1dFQl9WSUVXKTsKLSAgICAvKioKLSAgICAgKiBXZWJLaXRXZWJMb2FkZXJDbGllbnQ6OmxvYWQt
ZmluaXNoZWQ6Ci0gICAgICogQGxvYWRlcl9jbGllbnQ6IHRoZSAjV2ViS2l0V2ViTG9hZGVyQ2xp
ZW50Ci0gICAgICogQHdlYl92aWV3OiB0aGUgI1dlYktpdFdlYlZpZXcgYXNzb2NpYXRlZCB3aXRo
IHRoaXMgZXZlbnQKLSAgICAgKgotICAgICAqIFRoaXMgc2lnbmFsIGlzIGVtaXR0ZWQgd2hlbiBh
IHBhZ2UgbG9hZCBjb21wbGV0ZXMsIHRoYXQgaXMsIHdoZW4gYWxsCi0gICAgICogdGhlIHJlc291
cmNlcyBhcmUgZG9uZSBsb2FkaW5nIHdpdGggbm8gZXJyb3IuIEluIGNhc2Ugb2YgZXJyb3JzCi0g
ICAgICogZHVyaW5nIGxvYWRpbmcsIHRoZSBsb2FkIGZpbmlzaGVzIHdoZW4gZWl0aGVyCi0gICAg
ICogI1dlYktpdFdlYkxvYWRlckNsaWVudDo6cHJvdmlzaW9uYWwtbG9hZC1mYWlsZWQgb3IgI1dl
YktpdFdlYkxvYWRlckNsaWVudDo6bG9hZC1mYWlsZWQKLSAgICAgKiBhcmUgZW1pdHRlZC4KLSAg
ICAgKgotICAgICAqIFRoaXMgc2lnbmFsIGlzIGVtaXR0ZWQgYWZ0ZXIgI1dlYktpdFdlYkxvYWRl
ckNsaWVudDo6bG9hZC1jb21taXR0ZWQuCi0gICAgICoKLSAgICAgKiBSZXR1cm5zOiAlVFJVRSB0
byBzdG9wIG90aGVyIGhhbmRsZXJzIGZyb20gYmVpbmcgaW52b2tlZCBmb3IgdGhlIGV2ZW50Lgot
ICAgICAqICAgJUZBTFNFIHRvIHByb3BhZ2F0ZSB0aGUgZXZlbnQgZnVydGhlci4KLSAgICAgKi8K
LSAgICBzaWduYWxzW0xPQURfRklOSVNIRURdID0KLSAgICAgICAgZ19zaWduYWxfbmV3KCJsb2Fk
LWZpbmlzaGVkIiwKLSAgICAgICAgICAgICAgICAgICAgIEdfVFlQRV9GUk9NX0NMQVNTKG9iamVj
dENsYXNzKSwKLSAgICAgICAgICAgICAgICAgICAgIEdfU0lHTkFMX1JVTl9MQVNULAotICAgICAg
ICAgICAgICAgICAgICAgR19TVFJVQ1RfT0ZGU0VUKFdlYktpdFdlYkxvYWRlckNsaWVudENsYXNz
LCBsb2FkX2ZpbmlzaGVkKSwKLSAgICAgICAgICAgICAgICAgICAgIGdfc2lnbmFsX2FjY3VtdWxh
dG9yX3RydWVfaGFuZGxlZCwgTlVMTCwKLSAgICAgICAgICAgICAgICAgICAgIHdlYmtpdF9tYXJz
aGFsX0JPT0xFQU5fX09CSkVDVCwKLSAgICAgICAgICAgICAgICAgICAgIEdfVFlQRV9CT09MRUFO
LCAxLAotICAgICAgICAgICAgICAgICAgICAgV0VCS0lUX1RZUEVfV0VCX1ZJRVcpOwotCi0gICAg
LyoqCi0gICAgICogV2ViS2l0V2ViTG9hZGVyQ2xpZW50Ojpsb2FkLWZhaWxlZDoKLSAgICAgKiBA
bG9hZGVyX2NsaWVudDogdGhlICNXZWJLaXRXZWJMb2FkZXJDbGllbnQKLSAgICAgKiBAd2ViX3Zp
ZXc6IHRoZSAjV2ViS2l0V2ViVmlldyBhc3NvY2lhdGVkIHdpdGggdGhpcyBldmVudAotICAgICAq
IEBlcnJvcjogdGhlICNHRXJyb3IgdGhhdCB3YXMgdHJpZ2dlcmVkCi0gICAgICoKLSAgICAgKiBU
aGlzIHNpZ25hbCBpcyBlbWl0dGVkIHdoZW4gYW4gZXJyb3Igb2NjdXJzIGxvYWRpbmcgYSBjb21t
aXR0ZWQgZGF0YSBzb3VyY2UuCi0gICAgICogQnkgZGVmYXVsdCwgaWYgdGhlIHNpZ25hbCBpcyBu
b3QgaGFuZGxlZCwgYSBzdG9jayBlcnJvciBwYWdlIHdpbGwgYmUgZGlzcGxheWVkLgotICAgICAq
IFlvdSBuZWVkIHRvIGhhbmRsZSB0aGUgc2lnbmFsIGlmIHlvdSB3YW50IHRvIHByb3ZpZGUgeW91
ciBvd24gZXJyb3IgcGFnZS4gVGhpcwotICAgICAqIHNpZ25hbCBmaW5pc2hlcyB0aGUgbG9hZCBz
byBubyBvdGhlciBzaWduYWxzIHdpbGwgYmUgZW1pdHRlZCBhZnRlciB0aGlzIG9uZS4KLSAgICAg
KgotICAgICAqIFRoaXMgc2lnbmFsIGlzIGVtaXR0ZWQgYWZ0ZXIgI1dlYktpdFdlYkxvYWRlckNs
aWVudDo6bG9hZC1jb21taXR0ZWQuCi0gICAgICoKLSAgICAgKiBSZXR1cm5zOiAlVFJVRSB0byBz
dG9wIG90aGVyIGhhbmRsZXJzIGZyb20gYmVpbmcgaW52b2tlZCBmb3IgdGhlIGV2ZW50LgotICAg
ICAqICAgJUZBTFNFIHRvIHByb3BhZ2F0ZSB0aGUgZXZlbnQgZnVydGhlci4KLSAgICAgKi8KLSAg
ICBzaWduYWxzW0xPQURfRkFJTEVEXSA9Ci0gICAgICAgIGdfc2lnbmFsX25ldygibG9hZC1mYWls
ZWQiLAotICAgICAgICAgICAgICAgICAgICAgR19UWVBFX0ZST01fQ0xBU1Mob2JqZWN0Q2xhc3Mp
LAotICAgICAgICAgICAgICAgICAgICAgR19TSUdOQUxfUlVOX0xBU1QsCi0gICAgICAgICAgICAg
ICAgICAgICBHX1NUUlVDVF9PRkZTRVQoV2ViS2l0V2ViTG9hZGVyQ2xpZW50Q2xhc3MsIGxvYWRf
ZmFpbGVkKSwKLSAgICAgICAgICAgICAgICAgICAgIGdfc2lnbmFsX2FjY3VtdWxhdG9yX3RydWVf
aGFuZGxlZCwgTlVMTCwKLSAgICAgICAgICAgICAgICAgICAgIHdlYmtpdF9tYXJzaGFsX0JPT0xF
QU5fX09CSkVDVF9TVFJJTkdfUE9JTlRFUiwKLSAgICAgICAgICAgICAgICAgICAgIEdfVFlQRV9C
T09MRUFOLCAzLAotICAgICAgICAgICAgICAgICAgICAgV0VCS0lUX1RZUEVfV0VCX1ZJRVcsCi0g
ICAgICAgICAgICAgICAgICAgICBHX1RZUEVfU1RSSU5HLAotICAgICAgICAgICAgICAgICAgICAg
R19UWVBFX1BPSU5URVIpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9ndGsvV2ViS2l0V2ViTG9hZGVyQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL2d0ay9XZWJLaXRXZWJMb2FkZXJDbGllbnQuaAppbmRleCA4NWEwZWFiLi5jNjA0NGJj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJM
b2FkZXJDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJL
aXRXZWJMb2FkZXJDbGllbnQuaApAQCAtMTcsMTUgKzE3LDExIEBACiAgKiBCb3N0b24sIE1BIDAy
MTEwLTEzMDEsIFVTQS4KICAqLwogCi0jaWYgIWRlZmluZWQoX19XRUJLSVQyX0hfSU5TSURFX18p
ICYmICFkZWZpbmVkKFdFQktJVDJfQ09NUElMQVRJT04pCi0jZXJyb3IgIk9ubHkgPHdlYmtpdDIv
d2Via2l0Mi5oPiBjYW4gYmUgaW5jbHVkZWQgZGlyZWN0bHkuIgotI2VuZGlmCi0KICNpZm5kZWYg
V2ViS2l0V2ViTG9hZGVyQ2xpZW50X2gKICNkZWZpbmUgV2ViS2l0V2ViTG9hZGVyQ2xpZW50X2gK
IAogI2luY2x1ZGUgPGdsaWItb2JqZWN0Lmg+Ci0jaW5jbHVkZSA8d2Via2l0Mi9XZWJLaXREZWZp
bmVzLmg+CisjaW5jbHVkZSA8V2ViS2l0Mi9XZWJLaXQyLmg+CiAKIEdfQkVHSU5fREVDTFMKIApA
QCAtMzYsMzQgKzMyLDE5IEBAIEdfQkVHSU5fREVDTFMKICNkZWZpbmUgV0VCS0lUX0lTX1dFQl9M
T0FERVJfQ0xJRU5UX0NMQVNTKGtsYXNzKSAoR19UWVBFX0NIRUNLX0NMQVNTX1RZUEUoKGtsYXNz
KSwgIFdFQktJVF9UWVBFX1dFQl9MT0FERVJfQ0xJRU5UKSkKICNkZWZpbmUgV0VCS0lUX1dFQl9M
T0FERVJfQ0xJRU5UX0dFVF9DTEFTUyhvYmopICAoR19UWVBFX0lOU1RBTkNFX0dFVF9DTEFTUygo
b2JqKSwgIFdFQktJVF9UWVBFX1dFQl9MT0FERVJfQ0xJRU5ULCBXZWJLaXRXZWJMb2FkZXJDbGll
bnRDbGFzcykpCiAKK3R5cGVkZWYgc3RydWN0IF9XZWJLaXRXZWJMb2FkZXJDbGllbnQgICAgICBX
ZWJLaXRXZWJMb2FkZXJDbGllbnQ7Cit0eXBlZGVmIHN0cnVjdCBfV2ViS2l0V2ViTG9hZGVyQ2xp
ZW50Q2xhc3MgV2ViS2l0V2ViTG9hZGVyQ2xpZW50Q2xhc3M7CisKIHN0cnVjdCBfV2ViS2l0V2Vi
TG9hZGVyQ2xpZW50IHsKICAgICBHT2JqZWN0IHBhcmVudDsKIH07CiAKIHN0cnVjdCBfV2ViS2l0
V2ViTG9hZGVyQ2xpZW50Q2xhc3MgewotICAgIEdPYmplY3RDbGFzcyBwYXJlbnRfY2xhc3M7Ci0K
LSAgICAvKiB2aXJ0dWFsIHRhYmxlICovCi0gICAgZ2Jvb2xlYW4gKCogcHJvdmlzaW9uYWxfbG9h
ZF9zdGFydGVkKSAgICAgICAgICAgICAgICAgIChXZWJLaXRXZWJMb2FkZXJDbGllbnQgKmxvYWRl
cl9jbGllbnQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBXZWJLaXRXZWJWaWV3ICAgICAgICAgKndlYl92aWV3KTsKLSAgICBnYm9v
bGVhbiAoKiBwcm92aXNpb25hbF9sb2FkX3JlY2VpdmVkX3NlcnZlcl9yZWRpcmVjdCkgKFdlYktp
dFdlYkxvYWRlckNsaWVudCAqbG9hZGVyX2NsaWVudCwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdlYktpdFdlYlZpZXcgICAgICAg
ICAqd2ViX3ZpZXcpOwotICAgIGdib29sZWFuICgqIHByb3Zpc2lvbmFsX2xvYWRfZmFpbGVkKSAg
ICAgICAgICAgICAgICAgICAoV2ViS2l0V2ViTG9hZGVyQ2xpZW50ICpsb2FkZXJfY2xpZW50LAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgV2ViS2l0V2ViVmlldyAgICAgICAgICp3ZWJfdmlldywKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdjaGFyICAgICAg
ICAgICAqZmFpbGluZ191cmksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHRXJyb3IgICAgICAgICAgICAgICAgKmVycm9yKTsKLSAg
ICBnYm9vbGVhbiAoKiBsb2FkX2NvbW1pdHRlZCkgICAgICAgICAgICAgICAgICAgICAgICAgICAg
KFdlYktpdFdlYkxvYWRlckNsaWVudCAqbG9hZGVyX2NsaWVudCwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdlYktpdFdlYlZpZXcg
ICAgICAgICAqd2ViX3ZpZXcpOwotICAgIGdib29sZWFuICgqIGxvYWRfZmluaXNoZWQpICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAoV2ViS2l0V2ViTG9hZGVyQ2xpZW50ICpsb2FkZXJfY2xp
ZW50LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgV2ViS2l0V2ViVmlldyAgICAgICAgICp3ZWJfdmlldyk7Ci0gICAgZ2Jvb2xlYW4g
KCogbG9hZF9mYWlsZWQpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChXZWJLaXRXZWJM
b2FkZXJDbGllbnQgKmxvYWRlcl9jbGllbnQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXZWJLaXRXZWJWaWV3ICAgICAgICAgKndl
Yl92aWV3LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3QgZ2NoYXIgICAgICAgICAgICpmYWlsaW5nX3VyaSwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdFcnJv
ciAgICAgICAgICAgICAgICAqZXJyb3IpOworICAgIEdPYmplY3RDbGFzcyBwYXJlbnRDbGFzczsK
IH07CiAKLVdFQktJVF9BUEkgR1R5cGUKLXdlYmtpdF93ZWJfbG9hZGVyX2NsaWVudF9nZXRfdHlw
ZSAodm9pZCk7CitHVHlwZSB3ZWJraXRfd2ViX2xvYWRlcl9jbGllbnRfZ2V0X3R5cGUgKHZvaWQp
Owordm9pZCB3ZWJraXRXZWJMb2FkZXJDbGllbnRBdHRhY2hMb2FkZXJDbGllbnRUb1BhZ2UoV2Vi
S2l0V2ViTG9hZGVyQ2xpZW50KiwgV0tQYWdlUmVmKTsKIAogR19FTkRfREVDTFMKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViTG9hZGVyQ2xp
ZW50UHJpdmF0ZS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2Vi
TG9hZGVyQ2xpZW50UHJpdmF0ZS5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyMjVh
MmE0Li4wMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktp
dFdlYkxvYWRlckNsaWVudFByaXZhdGUuaAorKysgL2Rldi9udWxsCkBAIC0xLDM0ICswLDAgQEAK
LS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEgSWdhbGlhIFMuTC4KLSAqCi0gKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
LSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lmbmRl
ZiBXZWJLaXRXZWJMb2FkZXJDbGllbnRQcml2YXRlX2gKLSNkZWZpbmUgV2ViS2l0V2ViTG9hZGVy
Q2xpZW50UHJpdmF0ZV9oCi0KLSNpbmNsdWRlICJXZWJLaXRXZWJMb2FkZXJDbGllbnQuaCIKLSNp
bmNsdWRlIDxXZWJLaXQyL1dlYktpdDIuaD4KLQotdm9pZCB3ZWJraXRXZWJMb2FkZXJDbGllbnRB
dHRhY2hMb2FkZXJDbGllbnRUb1BhZ2UoV2ViS2l0V2ViTG9hZGVyQ2xpZW50KiwgV0tQYWdlUmVm
KTsKLQotI2VuZGlmIC8vIFdlYktpdFdlYkxvYWRlckNsaWVudFByaXZhdGVfaApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlldy5jcHAgYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3LmNwcAppbmRleCA2
OTEzOGQwLi41YmNkN2I4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L2d0ay9XZWJLaXRXZWJWaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L2d0ay9XZWJLaXRXZWJWaWV3LmNwcApAQCAtMjIsMTIgKzIyLDEzIEBACiAjaW5jbHVkZSAiV2Vi
S2l0V2ViVmlldy5oIgogCiAjaW5jbHVkZSAiV2ViS2l0QmFja0ZvcndhcmRMaXN0UHJpdmF0ZS5o
IgorI2luY2x1ZGUgIldlYktpdEVudW1UeXBlcy5oIgorI2luY2x1ZGUgIldlYktpdEVycm9yLmgi
CiAjaW5jbHVkZSAiV2ViS2l0TWFyc2hhbC5oIgogI2luY2x1ZGUgIldlYktpdFNldHRpbmdzUHJp
dmF0ZS5oIgogI2luY2x1ZGUgIldlYktpdFVJQ2xpZW50LmgiCiAjaW5jbHVkZSAiV2ViS2l0V2Vi
Q29udGV4dFByaXZhdGUuaCIKICNpbmNsdWRlICJXZWJLaXRXZWJMb2FkZXJDbGllbnQuaCIKLSNp
bmNsdWRlICJXZWJLaXRXZWJMb2FkZXJDbGllbnRQcml2YXRlLmgiCiAjaW5jbHVkZSAiV2ViS2l0
V2ViVmlld0Jhc2VQcml2YXRlLmgiCiAjaW5jbHVkZSAiV2ViS2l0V2ViVmlld1ByaXZhdGUuaCIK
ICNpbmNsdWRlICJXZWJLaXRXaW5kb3dQcm9wZXJ0aWVzUHJpdmF0ZS5oIgpAQCAtNDUsNiArNDYs
OSBAQCB1c2luZyBuYW1lc3BhY2UgV2ViS2l0OwogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAK
IGVudW0geworICAgIExPQURfQ0hBTkdFRCwKKyAgICBMT0FEX0ZBSUxFRCwKKwogICAgIENSRUFU
RSwKICAgICBSRUFEWV9UT19TSE9XLAogICAgIENMT1NFLApAQCAtODMsNiArODcsMTkgQEAgc3Rh
dGljIGd1aW50IHNpZ25hbHNbTEFTVF9TSUdOQUxdID0geyAwLCB9OwogCiBHX0RFRklORV9UWVBF
KFdlYktpdFdlYlZpZXcsIHdlYmtpdF93ZWJfdmlldywgV0VCS0lUX1RZUEVfV0VCX1ZJRVdfQkFT
RSkKIAorc3RhdGljIGdib29sZWFuIHdlYmtpdFdlYlZpZXdMb2FkRmFpbChXZWJLaXRXZWJWaWV3
KiB3ZWJWaWV3LCBXZWJLaXRMb2FkRXZlbnQsIGNvbnN0IGNoYXIqIGZhaWxpbmdVUkksIEdFcnJv
ciogZXJyb3IpCit7CisgICAgaWYgKGdfZXJyb3JfbWF0Y2hlcyhlcnJvciwgV0VCS0lUX05FVFdP
UktfRVJST1IsIFdFQktJVF9ORVRXT1JLX0VSUk9SX0NBTkNFTExFRCkKKyAgICAgICAgfHwgZ19l
cnJvcl9tYXRjaGVzKGVycm9yLCBXRUJLSVRfUE9MSUNZX0VSUk9SLCBXRUJLSVRfUE9MSUNZX0VS
Uk9SX0ZSQU1FX0xPQURfSU5URVJSVVBURURfQllfUE9MSUNZX0NIQU5HRSkKKyAgICAgICAgfHwg
Z19lcnJvcl9tYXRjaGVzKGVycm9yLCBXRUJLSVRfUExVR0lOX0VSUk9SLCBXRUJLSVRfUExVR0lO
X0VSUk9SX1dJTExfSEFORExFX0xPQUQpKQorICAgICAgICByZXR1cm4gRkFMU0U7CisKKyAgICBH
T3duUHRyPGNoYXI+IGh0bWxTdHJpbmcoZ19zdHJkdXBfcHJpbnRmKCI8aHRtbD48Ym9keT4lczwv
Ym9keT48L2h0bWw+IiwgZXJyb3ItPm1lc3NhZ2UpKTsKKyAgICB3ZWJraXRfd2ViX3ZpZXdfbG9h
ZF9hbHRlcm5hdGVfaHRtbCh3ZWJWaWV3LCBodG1sU3RyaW5nLmdldCgpLCAwLCBmYWlsaW5nVVJJ
KTsKKworICAgIHJldHVybiBUUlVFOworfQorCiBzdGF0aWMgR3RrV2lkZ2V0KiB3ZWJraXRXZWJW
aWV3Q3JlYXRlKFdlYktpdFdlYlZpZXcqKQogewogICAgIHJldHVybiAwOwpAQCAtMjMwLDYgKzI0
Nyw3IEBAIHN0YXRpYyB2b2lkIHdlYmtpdF93ZWJfdmlld19jbGFzc19pbml0KFdlYktpdFdlYlZp
ZXdDbGFzcyogd2ViVmlld0NsYXNzKQogICAgIGdPYmplY3RDbGFzcy0+Z2V0X3Byb3BlcnR5ID0g
d2Via2l0V2ViVmlld0dldFByb3BlcnR5OwogICAgIGdPYmplY3RDbGFzcy0+ZmluYWxpemUgPSB3
ZWJraXRXZWJWaWV3RmluYWxpemU7CiAKKyAgICB3ZWJWaWV3Q2xhc3MtPmxvYWRfZmFpbGVkID0g
d2Via2l0V2ViVmlld0xvYWRGYWlsOwogICAgIHdlYlZpZXdDbGFzcy0+Y3JlYXRlID0gd2Via2l0
V2ViVmlld0NyZWF0ZTsKICAgICB3ZWJWaWV3Q2xhc3MtPnNjcmlwdF9hbGVydCA9IHdlYmtpdFdl
YlZpZXdTY3JpcHRBbGVydDsKICAgICB3ZWJWaWV3Q2xhc3MtPnNjcmlwdF9jb25maXJtID0gd2Vi
a2l0V2ViVmlld1NjcmlwdENvbmZpcm07CkBAIC0yOTcsNiArMzE1LDk2IEBAIHN0YXRpYyB2b2lk
IHdlYmtpdF93ZWJfdmlld19jbGFzc19pbml0KFdlYktpdFdlYlZpZXdDbGFzcyogd2ViVmlld0Ns
YXNzKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBXRUJLSVRfUEFSQU1fUkVBREFCTEUpKTsKIAogICAgIC8qKgorICAgICAqIFdlYktpdFdl
YlZpZXc6OmxvYWQtY2hhbmdlZDoKKyAgICAgKiBAd2ViX3ZpZXc6IHRoZSAjV2ViS2l0V2ViVmll
dyBvbiB3aGljaCB0aGUgc2lnbmFsIGlzIGVtaXR0ZWQKKyAgICAgKiBAbG9hZF9ldmVudDogdGhl
ICNXZWJLaXRMb2FkRXZlbnQKKyAgICAgKgorICAgICAqIEVtaXR0ZWQgd2hlbiB0aGUgYSBsb2Fk
IG9wZXJhdGlvbiBpbiBAd2ViX3ZpZXcgY2hhbmdlcy4KKyAgICAgKiBUaGUgc2lnbmFsIGlzIGFs
d2F5cyBlbWl0dGVkIHdpdGggJVdFQktJVF9MT0FEX1NUQVJURUQgd2hlbiBhCisgICAgICogbmV3
IGxvYWQgcmVxdWVzdCBpcyBtYWRlIGFuZCAlV0VCS0lUX0xPQURfRklOSVNIRUQgd2hlbiB0aGUg
bG9hZAorICAgICAqIGZpbmlzaGVzIHN1Y2Nlc3NmdWxseSBvciBkdWUgdG8gYW4gZXJyb3IuIFdo
ZW4gdGhlIG9uZ29pbmcgbG9hZAorICAgICAqIG9wZXJhdGlvbiBmYWlscyAjV2ViS2l0V2ViVmll
dzo6bG9hZC1mYWlsZWQgc2lnbmFsIGlzIGVtaXR0ZWQKKyAgICAgKiBiZWZvcmUgI1dlYktpdFdl
YlZpZXc6OmxvYWQtY2hhbmdlZCBpcyBlbWl0dGVkIHdpdGgKKyAgICAgKiAlV0VCS0lUX0xPQURf
RklOSVNIRUQuCisgICAgICogSWYgYSByZWRpcmVjdGlvbiBpcyByZWNlaXZlZCBmcm9tIHRoZSBz
ZXJ2ZXIsIHRoaXMgc2lnbmFsIGlzIGVtaXR0ZWQKKyAgICAgKiB3aXRoICVXRUJLSVRfTE9BRF9S
RURJUkVDVEVEIGFmdGVyIHRoZSBpbml0aWFsIGVtaXNzaW9uIHdpdGgKKyAgICAgKiAlV0VCS0lU
X0xPQURfU1RBUlRFRCBhbmQgYmVmb3JlICVXRUJLSVRfTE9BRF9DT01NSVRURUQuCisgICAgICog
V2hlbiB0aGUgcGFnZSBjb250ZW50IHN0YXJ0cyBhcnJpdmluZyB0aGUgc2lnbmFsIGlzIGVtaXR0
ZWQgd2l0aAorICAgICAqICVXRUJLSVRfTE9BRF9DT01NSVRURUQgZXZlbnQuCisgICAgICoKKyAg
ICAgKiBZb3UgY2FuIGhhbmRsZSB0aGlzIHNpZ25hbCBhbmQgdXNlIGEgc3dpdGNoIHRvIHRyYWNr
IGFueSBvbmdvaW5nCisgICAgICogbG9hZCBvcGVyYXRpb24uCisgICAgICoKKyAgICAgKiA8aW5m
b3JtYWxleGFtcGxlPjxwcm9ncmFtbGlzdGluZz4KKyAgICAgKiBzdGF0aWMgdm9pZCB3ZWJfdmll
d19sb2FkX2NoYW5nZWQgKFdlYktpdFdlYlZpZXcgICp3ZWJfdmlldywKKyAgICAgKiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdlYktpdExvYWRFdmVudCBsb2FkX2V2ZW50LAor
ICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3BvaW50ZXIgICAgICAg
IHVzZXJfZGF0YSkKKyAgICAgKiB7CisgICAgICogICAgIHN3aXRjaCAobG9hZF9ldmVudCkgewor
ICAgICAqICAgICBjYXNlIFdFQktJVF9MT0FEX1NUQVJURUQ6CisgICAgICogICAgICAgICAvPCEt
LSAtLT4qIE5ldyBsb2FkLCB3ZSBoYXZlIG5vdyBhIHByb3Zpc2lvbmFsIFVSSSAqPCEtLSAtLT4v
CisgICAgICogICAgICAgICBwcm92aXNpb25hbF91cmkgPSB3ZWJraXRfd2ViX3ZpZXdfZ2V0X3Vy
aSAod2ViX3ZpZXcpOworICAgICAqICAgICAgICAgLzwhLS0gLS0+KiBIZXJlIHdlIGNvdWxkIHN0
YXJ0IGEgc3Bpbm5lciBvciB1cGRhdGUgdGhlCisgICAgICogICAgICAgICAgPCEtLSAtLT4qIGxv
Y2F0aW9uIGJhciB3aXRoIHRoZSBwcm92aXNpb25hbCBVUkkgKjwhLS0gLS0+LworICAgICAqICAg
ICAgICAgYnJlYWs7CisgICAgICogICAgIGNhc2UgV0VCS0lUX0xPQURfUkVESVJFQ1RFRDoKKyAg
ICAgKiAgICAgICAgIHJlZGlyZWN0ZWRfdXJpID0gd2Via2l0X3dlYl92aWV3X2dldF91cmkgKHdl
Yl92aWV3KTsKKyAgICAgKiAgICAgICAgIGJyZWFrOworICAgICAqICAgICBjYXNlIFdFQktJVF9M
T0FEX0NPTU1JVFRFRDoKKyAgICAgKiAgICAgICAgIC88IS0tIC0tPiogVGhlIGxvYWQgaXMgYmVp
bmcgcGVyZm9ybWVkLiBDdXJyZW50IFVSSSBpcworICAgICAqICAgICAgICAgIDwhLS0gLS0+KiB0
aGUgZmluYWwgb25lIGFuZCBpdCB3b24ndCBjaGFuZ2UgdW5sZXNzIGEgbmV3CisgICAgICogICAg
ICAgICAgPCEtLSAtLT4qIGxvYWQgaXMgcmVxdWVzdGVkIG9yIGEgbmF2aWdhdGlvbiB3aXRoaW4g
dGhlCisgICAgICogICAgICAgICAgPCEtLSAtLT4qIHNhbWUgcGFnZSBpcyBwZXJmb3JtZWQgKjwh
LS0gLS0+LworICAgICAqICAgICAgICAgdXJpID0gd2Via2l0X3dlYl92aWV3X2dldF91cmkgKHdl
Yl92aWV3KTsKKyAgICAgKiAgICAgICAgIGJyZWFrOworICAgICAqICAgICBjYXNlIFdFQktJVF9M
T0FEX0ZJTklTSEVEOgorICAgICAqICAgICAgICAgLzwhLS0gLS0+KiBMb2FkIGZpbmlzaGVkLCB3
ZSBjYW4gbm93IHN0b3AgdGhlIHNwaW5uZXIgKjwhLS0gLS0+LworICAgICAqICAgICAgICAgYnJl
YWs7CisgICAgICogICAgIH0KKyAgICAgKiB9CisgICAgICogPC9wcm9ncmFtbGlzdGluZz48L2lu
Zm9ybWFsZXhhbXBsZT4KKyAgICAgKi8KKyAgICBzaWduYWxzW0xPQURfQ0hBTkdFRF0gPQorICAg
ICAgICBnX3NpZ25hbF9uZXcoImxvYWQtY2hhbmdlZCIsCisgICAgICAgICAgICAgICAgICAgICBH
X1RZUEVfRlJPTV9DTEFTUyh3ZWJWaWV3Q2xhc3MpLAorICAgICAgICAgICAgICAgICAgICAgR19T
SUdOQUxfUlVOX0xBU1QsCisgICAgICAgICAgICAgICAgICAgICBHX1NUUlVDVF9PRkZTRVQoV2Vi
S2l0V2ViVmlld0NsYXNzLCBsb2FkX2NoYW5nZWQpLAorICAgICAgICAgICAgICAgICAgICAgMCwg
MCwKKyAgICAgICAgICAgICAgICAgICAgIGdfY2Nsb3N1cmVfbWFyc2hhbF9WT0lEX19FTlVNLAor
ICAgICAgICAgICAgICAgICAgICAgR19UWVBFX05PTkUsIDEsCisgICAgICAgICAgICAgICAgICAg
ICBXRUJLSVRfVFlQRV9MT0FEX0VWRU5UKTsKKworICAgIC8qKgorICAgICAqIFdlYktpdFdlYlZp
ZXc6OmxvYWQtZmFpbGVkOgorICAgICAqIEB3ZWJfdmlldzogdGhlICNXZWJLaXRXZWJWaWV3IG9u
IHdoaWNoIHRoZSBzaWduYWwgaXMgZW1pdHRlZAorICAgICAqIEBsb2FkX2V2ZW50OiB0aGUgI1dl
YktpdExvYWRFdmVudCBvZiB0aGUgbG9hZCBvcGVyYXRpb24KKyAgICAgKiBAZmFpbGluZ191cmk6
IHRoZSBVUkkgdGhhdCBmYWlsZWQgdG8gbG9hZAorICAgICAqIEBlcnJvcjogdGhlICNHRXJyb3Ig
dGhhdCB3YXMgdHJpZ2dlcmVkCisgICAgICoKKyAgICAgKiBFbWl0dGVkIHdoZW4gYW4gZXJyb3Ig
b2NjdXJzIGR1cmluZyBhIGxvYWQgb3BlcmF0aW9uLgorICAgICAqIElmIHRoZSBlcnJvciBoYXBw
ZW5lZCB3aGVuIHN0YXJ0aW5nIHRvIGxvYWQgZGF0YSBmb3IgYSBwYWdlCisgICAgICogQGxvYWRf
ZXZlbnQgd2lsbCBiZSAlV0VCS0lUX0xPQURfU1RBUlRFRC4gSWYgaXQgaGFwcGVuZWQgd2hpbGUK
KyAgICAgKiBsb2FkaW5nIGEgY29tbWl0dGVkIGRhdGEgc291cmNlIEBsb2FkX2V2ZW50IHdpbGwg
YmUgJVdFQktJVF9MT0FEX0NPTU1JVFRFRC4KKyAgICAgKiBTaW5jZSBhIGxvYWQgZXJyb3IgY2F1
c2VzIHRoZSBsb2FkIG9wZXJhdGlvbiB0byBmaW5pc2gsIHRoZSBzaWduYWwKKyAgICAgKiBXZWJL
aXRXZWJWaWV3Ojpsb2FkLWNoYW5nZWQgd2lsbCBhbHdheXMgYmUgZW1pdHRlZCB3aXRoCisgICAg
ICogJVdFQktJVF9MT0FEX0ZJTklTSEVEIGV2ZW50IHJpZ2h0IGFmdGVyIHRoaXMgb25lLgorICAg
ICAqCisgICAgICogQnkgZGVmYXVsdCwgaWYgdGhlIHNpZ25hbCBpcyBub3QgaGFuZGxlZCwgYSBz
dG9jayBlcnJvciBwYWdlIHdpbGwgYmUgZGlzcGxheWVkLgorICAgICAqIFlvdSBuZWVkIHRvIGhh
bmRsZSB0aGUgc2lnbmFsIGlmIHlvdSB3YW50IHRvIHByb3ZpZGUgeW91ciBvd24gZXJyb3IgcGFn
ZS4KKyAgICAgKi8KKyAgICBzaWduYWxzW0xPQURfRkFJTEVEXSA9CisgICAgICAgIGdfc2lnbmFs
X25ldygibG9hZC1mYWlsZWQiLAorICAgICAgICAgICAgICAgICAgICAgR19UWVBFX0ZST01fQ0xB
U1Mod2ViVmlld0NsYXNzKSwKKyAgICAgICAgICAgICAgICAgICAgIEdfU0lHTkFMX1JVTl9MQVNU
LAorICAgICAgICAgICAgICAgICAgICAgR19TVFJVQ1RfT0ZGU0VUKFdlYktpdFdlYlZpZXdDbGFz
cywgbG9hZF9mYWlsZWQpLAorICAgICAgICAgICAgICAgICAgICAgZ19zaWduYWxfYWNjdW11bGF0
b3JfdHJ1ZV9oYW5kbGVkLCAwLAorICAgICAgICAgICAgICAgICAgICAgd2Via2l0X21hcnNoYWxf
Qk9PTEVBTl9fRU5VTV9TVFJJTkdfUE9JTlRFUiwKKyAgICAgICAgICAgICAgICAgICAgIEdfVFlQ
RV9CT09MRUFOLCAzLAorICAgICAgICAgICAgICAgICAgICAgV0VCS0lUX1RZUEVfTE9BRF9FVkVO
VCwKKyAgICAgICAgICAgICAgICAgICAgIEdfVFlQRV9TVFJJTkcsCisgICAgICAgICAgICAgICAg
ICAgICBHX1RZUEVfUE9JTlRFUik7CisKKyAgICAvKioKICAgICAgKiBXZWJLaXRXZWJWaWV3Ojpj
cmVhdGU6CiAgICAgICogQHdlYl92aWV3OiB0aGUgI1dlYktpdFdlYlZpZXcgb24gd2hpY2ggdGhl
IHNpZ25hbCBpcyBlbWl0dGVkCiAgICAgICoKQEAgLTQzMCw2ICs1MzgsMjAgQEAgc3RhdGljIHZv
aWQgd2Via2l0X3dlYl92aWV3X2NsYXNzX2luaXQoV2ViS2l0V2ViVmlld0NsYXNzKiB3ZWJWaWV3
Q2xhc3MpCiAKIH0KIAordm9pZCB3ZWJraXRXZWJWaWV3TG9hZENoYW5nZWQoV2ViS2l0V2ViVmll
dyogd2ViVmlldywgV2ViS2l0TG9hZEV2ZW50IGxvYWRFdmVudCkKK3sKKyAgICBpZiAobG9hZEV2
ZW50ICE9IFdFQktJVF9MT0FEX0ZJTklTSEVEKQorICAgICAgICB3ZWJraXRXZWJWaWV3VXBkYXRl
VVJJKHdlYlZpZXcpOworICAgIGdfc2lnbmFsX2VtaXQod2ViVmlldywgc2lnbmFsc1tMT0FEX0NI
QU5HRURdLCAwLCBsb2FkRXZlbnQpOworfQorCit2b2lkIHdlYmtpdFdlYlZpZXdMb2FkRmFpbGVk
KFdlYktpdFdlYlZpZXcqIHdlYlZpZXcsIFdlYktpdExvYWRFdmVudCBsb2FkRXZlbnQsIGNvbnN0
IGNoYXIqIGZhaWxpbmdVUkksIEdFcnJvciAqZXJyb3IpCit7CisgICAgZ2Jvb2xlYW4gcmV0dXJu
VmFsdWU7CisgICAgZ19zaWduYWxfZW1pdCh3ZWJWaWV3LCBzaWduYWxzW0xPQURfRkFJTEVEXSwg
MCwgbG9hZEV2ZW50LCBmYWlsaW5nVVJJLCBlcnJvciwgJnJldHVyblZhbHVlKTsKKyAgICBnX3Np
Z25hbF9lbWl0KHdlYlZpZXcsIHNpZ25hbHNbTE9BRF9DSEFOR0VEXSwgMCwgV0VCS0lUX0xPQURf
RklOSVNIRUQpOworfQorCiB2b2lkIHdlYmtpdFdlYlZpZXdTZXRUaXRsZShXZWJLaXRXZWJWaWV3
KiB3ZWJWaWV3LCBjb25zdCBDU3RyaW5nJiB0aXRsZSkKIHsKICAgICBXZWJLaXRXZWJWaWV3UHJp
dmF0ZSogcHJpdiA9IHdlYlZpZXctPnByaXY7CkBAIC01NTAsNTAgKzY3MiwxMyBAQCBXZWJLaXRX
ZWJDb250ZXh0KiB3ZWJraXRfd2ViX3ZpZXdfZ2V0X2NvbnRleHQoV2ViS2l0V2ViVmlldyAqd2Vi
VmlldykKIH0KIAogLyoqCi0gKiB3ZWJraXRfd2ViX3ZpZXdfZ2V0X2xvYWRlcl9jbGllbnQ6Ci0g
KiBAd2ViX3ZpZXc6IGEgI1dlYktpdFdlYlZpZXcKLSAqCi0gKiBSZXR1cm5zIHRoZSAjV2ViS2l0
V2ViTG9hZGVyQ2xpZW50IG9mIEB3ZWJfdmlldy4gWW91IGNhbiB1c2UgaXQKLSAqIHRvIG1vbml0
b3IgdGhlIHN0YXR1cyBvZiBsb2FkIG9wZXJhdGlvbnMgaGFwcGVuaW5nIG9uIEB3ZWJfdmlldy4K
LSAqCi0gKiBSZXR1cm5zOiAodHJhbnNmZXIgbm9uZSk6IHRoZSAjV2ViS2l0V2ViTG9hZGVyQ2xp
ZW50IG9mIEB3ZWJfdmlldy4KLSAqLwotV2ViS2l0V2ViTG9hZGVyQ2xpZW50KiB3ZWJraXRfd2Vi
X3ZpZXdfZ2V0X2xvYWRlcl9jbGllbnQoV2ViS2l0V2ViVmlldyogd2ViVmlldykKLXsKLSAgICBn
X3JldHVybl92YWxfaWZfZmFpbChXRUJLSVRfSVNfV0VCX1ZJRVcod2ViVmlldyksIDApOwotCi0g
ICAgcmV0dXJuIHdlYlZpZXctPnByaXYtPmxvYWRlckNsaWVudC5nZXQoKTsKLX0KLQotLyoqCi0g
KiB3ZWJraXRfd2ViX3ZpZXdfc2V0X2xvYWRlcl9jbGllbnQ6Ci0gKiBAd2ViX3ZpZXc6IGEgI1dl
YktpdFdlYlZpZXcKLSAqIEBsb2FkZXJfY2xpZW50OiBhICNXZWJLaXRXZWJMb2FkZXJDbGllbnQK
LSAqCi0gKiBTZXRzIHRoZSAjV2ViS2l0V2ViTG9hZGVyQ2xpZW50IHRoYXQgdGhlIHZpZXcgd2ls
bCB1c2UgZHVyaW5nCi0gKiBsb2FkIG9wZXJhdGlvbnMuCi0gKi8KLXZvaWQgd2Via2l0X3dlYl92
aWV3X3NldF9sb2FkZXJfY2xpZW50KFdlYktpdFdlYlZpZXcqIHdlYlZpZXcsIFdlYktpdFdlYkxv
YWRlckNsaWVudCogbG9hZGVyQ2xpZW50KQotewotICAgIGdfcmV0dXJuX2lmX2ZhaWwoV0VCS0lU
X0lTX1dFQl9WSUVXKHdlYlZpZXcpKTsKLSAgICBnX3JldHVybl9pZl9mYWlsKFdFQktJVF9JU19X
RUJfTE9BREVSX0NMSUVOVChsb2FkZXJDbGllbnQpKTsKLQotICAgIFdlYktpdFdlYlZpZXdQcml2
YXRlKiBwcml2ID0gd2ViVmlldy0+cHJpdjsKLSAgICBpZiAocHJpdi0+bG9hZGVyQ2xpZW50Lmdl
dCgpID09IGxvYWRlckNsaWVudCkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgV2ViUGFnZVByb3h5
KiBwYWdlID0gd2Via2l0V2ViVmlld0Jhc2VHZXRQYWdlKFdFQktJVF9XRUJfVklFV19CQVNFKHdl
YlZpZXcpKTsKLSAgICB3ZWJraXRXZWJWaWV3U2V0TG9hZGVyQ2xpZW50KHdlYlZpZXcsIGxvYWRl
ckNsaWVudCwgdG9BUEkocGFnZSkpOwotfQotCi0vKioKICAqIHdlYmtpdF93ZWJfdmlld19sb2Fk
X3VyaToKICAqIEB3ZWJfdmlldzogYSAjV2ViS2l0V2ViVmlldwogICogQHVyaTogYW4gVVJJIHN0
cmluZwogICoKICAqIFJlcXVlc3RzIGxvYWRpbmcgb2YgdGhlIHNwZWNpZmllZCBVUkkgc3RyaW5n
LgotICogWW91IGNhbiBtb25pdG9yIHRoZSBzdGF0dXMgb2YgdGhlIGxvYWQgb3BlcmF0aW9uIHVz
aW5nIHRoZQotICogI1dlYktpdFdlYkxvYWRlckNsaWVudCBvZiBAd2ViX3ZpZXcuIFNlZSB3ZWJr
aXRfd2ViX3ZpZXdfZ2V0X2xvYWRlcl9jbGllbnQoKS4KKyAqIFlvdSBjYW4gbW9uaXRvciB0aGUg
bG9hZCBvcGVyYXRpb24gYnkgY29ubmVjdGluZyB0bworICogI1dlYktpdFdlYlZpZXc6OmxvYWQt
Y2hhbmdlZCBzaWduYWwuCiAgKi8KIHZvaWQgd2Via2l0X3dlYl92aWV3X2xvYWRfdXJpKFdlYktp
dFdlYlZpZXcqIHdlYlZpZXcsIGNvbnN0IGdjaGFyKiB1cmkpCiB7CkBAIC02MTUsOSArNzAwLDgg
QEAgdm9pZCB3ZWJraXRfd2ViX3ZpZXdfbG9hZF91cmkoV2ViS2l0V2ViVmlldyogd2ViVmlldywg
Y29uc3QgZ2NoYXIqIHVyaSkKICAqIExvYWQgdGhlIGdpdmVuIEBjb250ZW50IHN0cmluZyB3aXRo
IHRoZSBzcGVjaWZpZWQgQGJhc2VfdXJpLiAKICAqIFJlbGF0aXZlIFVSTHMgaW4gdGhlIEBjb250
ZW50IHdpbGwgYmUgcmVzb2x2ZWQgYWdhaW5zdCBAYmFzZV91cmkuCiAgKiBXaGVuIEBiYXNlX3Vy
aSBpcyAlTlVMTCwgaXQgZGVmYXVsdHMgdG8gImFib3V0OmJsYW5rIi4gVGhlIG1pbWUgdHlwZSAK
LSAqIG9mIHRoZSBkb2N1bWVudCB3aWxsIGJlICJ0ZXh0L2h0bWwiLiBZb3UgY2FuIG1vbml0b3Ig
dGhlIHN0YXR1cyBvZiAKLSAqIHRoZSBsb2FkIG9wZXJhdGlvbiB1c2luZyB0aGUgI1dlYktpdFdl
YkxvYWRlckNsaWVudCBvZiBAd2ViX3ZpZXcuIAotICogU2VlIHdlYmtpdF93ZWJfdmlld19nZXRf
bG9hZGVyX2NsaWVudCgpLgorICogb2YgdGhlIGRvY3VtZW50IHdpbGwgYmUgInRleHQvaHRtbCIu
IFlvdSBjYW4gbW9uaXRvciB0aGUgbG9hZCBvcGVyYXRpb24KKyAqIGJ5IGNvbm5lY3RpbmcgdG8g
I1dlYktpdFdlYlZpZXc6OmxvYWQtY2hhbmdlZCBzaWduYWwuCiAgKi8KIHZvaWQgd2Via2l0X3dl
Yl92aWV3X2xvYWRfaHRtbChXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3LCBjb25zdCBnY2hhciogY29u
dGVudCwgY29uc3QgZ2NoYXIqIGJhc2VVUkkpCiB7CkBAIC02MzYsOSArNzIwLDggQEAgdm9pZCB3
ZWJraXRfd2ViX3ZpZXdfbG9hZF9odG1sKFdlYktpdFdlYlZpZXcqIHdlYlZpZXcsIGNvbnN0IGdj
aGFyKiBjb250ZW50LCBjb24KICAqIEBwbGFpbl90ZXh0OiBUaGUgcGxhaW4gdGV4dCB0byBsb2Fk
CiAgKgogICogTG9hZCB0aGUgc3BlY2lmaWVkIEBwbGFpbl90ZXh0IHN0cmluZyBpbnRvIEB3ZWJf
dmlldy4gVGhlIG1pbWUgdHlwZSBvZgotICogZG9jdW1lbnQgd2lsbCBiZSAidGV4dC9wbGFpbiIu
IFlvdSBjYW4gbW9uaXRvciAgdGhlIHN0YXR1cyBvZiB0aGUgbG9hZCAKLSAqIG9wZXJhdGlvbiB1
c2luZyB0aGUgI1dlYktpdFdlYkxvYWRlckNsaWVudCBvZiBAd2ViX3ZpZXcuIAotICogU2VlIHdl
YmtpdF93ZWJfdmlld19nZXRfbG9hZGVyX2NsaWVudCgpLgorICogZG9jdW1lbnQgd2lsbCBiZSAi
dGV4dC9wbGFpbiIuIFlvdSBjYW4gbW9uaXRvciB0aGUgbG9hZAorICogb3BlcmF0aW9uIGJ5IGNv
bm5lY3RpbmcgdG8gI1dlYktpdFdlYlZpZXc6OmxvYWQtY2hhbmdlZCBzaWduYWwuCiAgKi8KIHZv
aWQgd2Via2l0X3dlYl92aWV3X2xvYWRfcGxhaW5fdGV4dChXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3
LCBjb25zdCBnY2hhciogcGxhaW5UZXh0KQogewpAQCAtNjU5LDEyICs3NDIsMTEgQEAgdm9pZCB3
ZWJraXRfd2ViX3ZpZXdfbG9hZF9wbGFpbl90ZXh0KFdlYktpdFdlYlZpZXcqIHdlYlZpZXcsIGNv
bnN0IGdjaGFyKiBwbGFpblQKICAqCiAgKiBSZXF1ZXN0IGxvYWRpbmcgb2YgYW4gYWx0ZXJuYXRl
IGNvbnRlbnQgZm9yIGEgVVJJIHRoYXQgaXMgdW5yZWFjaGFibGUuIFRoaXMgYWxsb3dzIGNsaWVu
dHMKICAqIHRvIGRpc3BsYXkgcGFnZS1sb2FkaW5nIGVycm9ycyBpbiB0aGUgI1dlYktpdFdlYlZp
ZXcgaXRzZWxmLiBUaGlzIGlzIHR5cGljYWxseSBjYWxsZWQgZnJvbQotICogI1dlYktpdFdlYkxv
YWRlckNsaWVudDo6cHJvdmlzaW9uYWwtbG9hZC1mYWlsZWQgb3IgI1dlYktpdFdlYkxvYWRlckNs
aWVudDo6bG9hZC1mYWlsZWQKLSAqIHNpZ25hbHMuCi0gKiBXaGVuIGNhbGxlZCBmcm9tIHRob3Nl
IHNpZ25hbHMgdGhpcyBtZXRob2Qgd2lsbCBwcmVzZXJ2ZSB0aGUgYmFjay1mb3J3YXJkIGxpc3Qu
IFRoZSBVUkkgcGFzc2VkIGluCisgKiAjV2ViS2l0V2ViVmlldzo6bG9hZC1mYWlsZWQgc2lnbmFs
LgorICogV2hlbiBjYWxsZWQgZnJvbSB0aGF0IHNpZ25hbCB0aGlzIG1ldGhvZCB3aWxsIHByZXNl
cnZlIHRoZSBiYWNrLWZvcndhcmQgbGlzdC4gVGhlIFVSSSBwYXNzZWQgaW4KICAqIEBiYXNlX3Vy
aSBoYXMgdG8gYmUgYW4gYWJzb2x1dGUgVVJJLgotICogWW91IGNhbiBtb25pdG9yIHRoZSBzdGF0
dXMgb2YgdGhlIGxvYWQgb3BlcmF0aW9uIHVzaW5nIHRoZQotICogI1dlYktpdFdlYkxvYWRlckNs
aWVudCBvZiBAd2ViX3ZpZXcuIFNlZSB3ZWJraXRfd2ViX3ZpZXdfZ2V0X2xvYWRlcl9jbGllbnQo
KS4KKyAqIFlvdSBjYW4gbW9uaXRvciB0aGUgbG9hZCBvcGVyYXRpb24gYnkgY29ubmVjdGluZyB0
bworICogI1dlYktpdFdlYlZpZXc6OmxvYWQtY2hhbmdlZCBzaWduYWwuCiAgKi8KIHZvaWQgd2Vi
a2l0X3dlYl92aWV3X2xvYWRfYWx0ZXJuYXRlX2h0bWwoV2ViS2l0V2ViVmlldyogd2ViVmlldywg
Y29uc3QgZ2NoYXIqIGNvbnRlbnQsIGNvbnN0IGdjaGFyKiBiYXNlVVJJLCBjb25zdCBnY2hhciog
dW5yZWFjaGFibGVVUkkpCiB7CkBAIC02ODUsOCArNzY3LDggQEAgdm9pZCB3ZWJraXRfd2ViX3Zp
ZXdfbG9hZF9hbHRlcm5hdGVfaHRtbChXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3LCBjb25zdCBnY2hh
ciogY28KICAqIEByZXF1ZXN0OiBhICNXZWJLaXRVUklSZXF1ZXN0IHRvIGxvYWQKICAqCiAgKiBS
ZXF1ZXN0cyBsb2FkaW5nIG9mIHRoZSBzcGVjaWZpZWQgI1dlYktpdFVSSVJlcXVlc3QuCi0gKiBZ
b3UgY2FuIG1vbml0b3IgdGhlIHN0YXR1cyBvZiB0aGUgbG9hZCBvcGVyYXRpb24gdXNpbmcgdGhl
Ci0gKiAjV2ViS2l0V2ViTG9hZGVyQ2xpZW50IG9mIEB3ZWJfdmlldy4gU2VlIHdlYmtpdF93ZWJf
dmlld19nZXRfbG9hZGVyX2NsaWVudCgpLgorICogWW91IGNhbiBtb25pdG9yIHRoZSBsb2FkIG9w
ZXJhdGlvbiBieSBjb25uZWN0aW5nIHRvCisgKiAjV2ViS2l0V2ViVmlldzo6bG9hZC1jaGFuZ2Vk
IHNpZ25hbC4KICAqLwogdm9pZCB3ZWJraXRfd2ViX3ZpZXdfbG9hZF9yZXF1ZXN0KFdlYktpdFdl
YlZpZXcqIHdlYlZpZXcsIFdlYktpdFVSSVJlcXVlc3QqIHJlcXVlc3QpCiB7CkBAIC03NTQsMTAg
KzgzNiw4IEBAIHZvaWQgd2Via2l0X3dlYl92aWV3X3JlbG9hZF9ieXBhc3NfY2FjaGUoV2ViS2l0
V2ViVmlldyogd2ViVmlldykKICAqIFN0b3BzIGFueSBvbmdvaW5nIGxvYWRpbmcgb3BlcmF0aW9u
IGluIEB3ZWJfdmlldy4KICAqIFRoaXMgbWV0aG9kIGRvZXMgbm90aGluZyBpZiBubyBjb250ZW50
IGlzIGJlaW5nIGxvYWRlZC4KICAqIElmIHRoZXJlIGlzIGEgbG9hZGluZyBvcGVyYXRpb24gaW4g
cHJvZ3Jlc3MsIGl0IHdpbGwgYmUgY2FuY2VsbGVkIGFuZAotICogI1dlYktpdFdlYkxvYWRlckNs
aWVudDo6cHJvdmlzaW9uYWwtbG9hZC1mYWlsZWQgb3IKLSAqICNXZWJLaXRXZWJMb2FkZXJDbGll
bnQ6OmxvYWQtZmFpbGVkIHdpbGwgYmUgZW1pdHRlZCBvbiB0aGUgY3VycmVudAotICogI1dlYktp
dFdlYkxvYWRlckNsaWVudCB3aXRoICVXRUJLSVRfTkVUV09SS19FUlJPUl9DQU5DRUxMRUQgZXJy
b3IuCi0gKiBTZWUgYWxzbyB3ZWJraXRfd2ViX3ZpZXdfZ2V0X2xvYWRlcl9jbGllbnQoKS4KKyAq
ICNXZWJLaXRXZWJWaWV3Ojpsb2FkLWZhaWxlZCBzaWduYWwgd2lsbCBiZSBlbWl0dGVkIHdpdGgK
KyAqICVXRUJLSVRfTkVUV09SS19FUlJPUl9DQU5DRUxMRUQgZXJyb3IuCiAgKi8KIHZvaWQgd2Vi
a2l0X3dlYl92aWV3X3N0b3BfbG9hZGluZyhXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3KQogewpAQCAt
NzcxLDggKzg1MSw4IEBAIHZvaWQgd2Via2l0X3dlYl92aWV3X3N0b3BfbG9hZGluZyhXZWJLaXRX
ZWJWaWV3KiB3ZWJWaWV3KQogICogQHdlYl92aWV3OiBhICNXZWJLaXRXZWJWaWV3CiAgKgogICog
TG9hZHMgdGhlIHByZXZpb3VzIGhpc3RvcnkgaXRlbS4KLSAqIFlvdSBjYW4gbW9uaXRvciB0aGUg
c3RhdHVzIG9mIHRoZSBsb2FkIG9wZXJhdGlvbiB1c2luZyB0aGUKLSAqICNXZWJLaXRXZWJMb2Fk
ZXJDbGllbnQgb2YgQHdlYl92aWV3LiBTZWUgd2Via2l0X3dlYl92aWV3X2dldF9sb2FkZXJfY2xp
ZW50KCkuCisgKiBZb3UgY2FuIG1vbml0b3IgdGhlIGxvYWQgb3BlcmF0aW9uIGJ5IGNvbm5lY3Rp
bmcgdG8KKyAqICNXZWJLaXRXZWJWaWV3Ojpsb2FkLWNoYW5nZWQgc2lnbmFsLgogICovCiB2b2lk
IHdlYmtpdF93ZWJfdmlld19nb19iYWNrKFdlYktpdFdlYlZpZXcqIHdlYlZpZXcpCiB7CkBAIC04
MDIsOCArODgyLDggQEAgZ2Jvb2xlYW4gd2Via2l0X3dlYl92aWV3X2Nhbl9nb19iYWNrKFdlYktp
dFdlYlZpZXcqIHdlYlZpZXcpCiAgKiBAd2ViX3ZpZXc6IGEgI1dlYktpdFdlYlZpZXcKICAqCiAg
KiBMb2FkcyB0aGUgbmV4dCBoaXN0b3J5IGl0ZW0uCi0gKiBZb3UgY2FuIG1vbml0b3IgdGhlIHN0
YXR1cyBvZiB0aGUgbG9hZCBvcGVyYXRpb24gdXNpbmcgdGhlCi0gKiAjV2ViS2l0V2ViTG9hZGVy
Q2xpZW50IG9mIEB3ZWJfdmlldy4gU2VlIHdlYmtpdF93ZWJfdmlld19nZXRfbG9hZGVyX2NsaWVu
dCgpLgorICogWW91IGNhbiBtb25pdG9yIHRoZSBsb2FkIG9wZXJhdGlvbiBieSBjb25uZWN0aW5n
IHRvCisgKiAjV2ViS2l0V2ViVmlldzo6bG9hZC1jaGFuZ2VkIHNpZ25hbC4KICAqLwogdm9pZCB3
ZWJraXRfd2ViX3ZpZXdfZ29fZm9yd2FyZChXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3KQogewpAQCAt
ODY1LDE0ICs5NDUsMTQgQEAgZ2Jvb2xlYW4gd2Via2l0X3dlYl92aWV3X2Nhbl9nb19mb3J3YXJk
KFdlYktpdFdlYlZpZXcqIHdlYlZpZXcpCiAgKiA8bGlzdGl0ZW0+PHBhcmE+CiAgKiAgIElmIHRo
ZXJlIGlzIGEgc2VydmVyIHJlZGlyZWN0aW9uIGR1cmluZyB0aGUgbG9hZCBvcGVyYXRpb24sCiAg
KiAgIHRoZSBhY3RpdmUgVVJJIGlzIHRoZSByZWRpcmVjdGVkIFVSSS4gV2hlbiB0aGUgc2lnbmFs
Ci0gKiAgICNXZWJLaXRXZWJMb2FkZXJDbGllbnQ6OnByb3Zpc2lvbmFsLWxvYWQtcmVjZWl2ZWQt
c2VydmVyLXJlZGlyZWN0Ci0gKiAgIGlzIGVtaXR0ZWQsIHRoZSBhY3RpdmUgVVJJIGlzIGFscmVh
ZHkgdXBkYXRlZCB0byB0aGUgcmVkaXJlY3RlZCBVUkkuCisgKiAgICNXZWJLaXRXZWJWaWV3Ojps
b2FkLWNoYW5nZWQgaXMgZW1pdHRlZCB3aXRoICVXRUJLSVRfTE9BRF9SRURJUkVDVEVECisgKiAg
IGV2ZW50LCB0aGUgYWN0aXZlIFVSSSBpcyBhbHJlYWR5IHVwZGF0ZWQgdG8gdGhlIHJlZGlyZWN0
ZWQgVVJJLgogICogPC9wYXJhPjwvbGlzdGl0ZW0+CiAgKiA8bGlzdGl0ZW0+PHBhcmE+Ci0gKiAg
IFdoZW4gdGhlIHNpZ25hbCAjV2ViS2l0V2ViTG9hZGVyQ2xpZW50Ojpsb2FkLWNvbW1pdHRlZCBp
cyBlbWl0dGVkLAotICogICB0aGUgYWN0aXZlIFVSSSBpcyB0aGUgZmluYWwgb25lIGFuZCBpdCB3
aWxsIG5vdCBjaGFuZ2UgdW5sZXNzCi0gKiAgIGEgbmV3IGxvYWQgb3BlcmF0aW9uIGlzIHN0YXJ0
ZWQgb3IgYSBuYXZpZ2F0aW9uIGFjdGlvbiB3aXRoaW4gdGhlCi0gKiAgIHNhbWUgcGFnZSBpcyBw
ZXJmb3JtZWQuCisgKiAgIFdoZW4gdGhlIHNpZ25hbCAjV2ViS2l0V2ViVmlldzo6bG9hZC1jaGFu
Z2VkIGlzIGVtaXR0ZWQKKyAqICAgd2l0aCAlV0VCS0lUX0xPQURfQ09NTUlUVEVEIGV2ZW50LCB0
aGUgYWN0aXZlIFVSSSBpcyB0aGUgZmluYWwKKyAqICAgb25lIGFuZCBpdCB3aWxsIG5vdCBjaGFu
Z2UgdW5sZXNzIGEgbmV3IGxvYWQgb3BlcmF0aW9uIGlzIHN0YXJ0ZWQKKyAqICAgb3IgYSBuYXZp
Z2F0aW9uIGFjdGlvbiB3aXRoaW4gdGhlIHNhbWUgcGFnZSBpcyBwZXJmb3JtZWQuCiAgKiA8L3Bh
cmE+PC9saXN0aXRlbT4KICAqIDwvb3JkZXJlZGxpc3Q+CiAgKgpAQCAtOTcwLDggKzEwNTAsOCBA
QCBXZWJLaXRCYWNrRm9yd2FyZExpc3QqIHdlYmtpdF93ZWJfdmlld19nZXRfYmFja19mb3J3YXJk
X2xpc3QoV2ViS2l0V2ViVmlldyogd2ViVgogICogQGxpc3RfaXRlbTogYSAjV2ViS2l0QmFja0Zv
cndhcmRMaXN0SXRlbQogICoKICAqIExvYWRzIHRoZSBzcGVjaWZpYyBoaXN0b3J5IGl0ZW0gQGxp
c3RfaXRlbS4KLSAqIFlvdSBjYW4gbW9uaXRvciB0aGUgc3RhdHVzIG9mIHRoZSBsb2FkIG9wZXJh
dGlvbiB1c2luZyB0aGUKLSAqICNXZWJLaXRXZWJMb2FkZXJDbGllbnQgb2YgQHdlYl92aWV3LiBT
ZWUgd2Via2l0X3dlYl92aWV3X2dldF9sb2FkZXJfY2xpZW50KCkuCisgKiBZb3UgY2FuIG1vbml0
b3IgdGhlIGxvYWQgb3BlcmF0aW9uIGJ5IGNvbm5lY3RpbmcgdG8KKyAqICNXZWJLaXRXZWJWaWV3
Ojpsb2FkLWNoYW5nZWQgc2lnbmFsLgogICovCiB2b2lkIHdlYmtpdF93ZWJfdmlld19nb190b19i
YWNrX2ZvcndhcmRfbGlzdF9pdGVtKFdlYktpdFdlYlZpZXcqIHdlYlZpZXcsIFdlYktpdEJhY2tG
b3J3YXJkTGlzdEl0ZW0qIGxpc3RJdGVtKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlldy5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlldy5oCmluZGV4IDQ3ZThkNDEuLmZmYmFhOGYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXcuaAor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3LmgKQEAg
LTMxLDcgKzMxLDYgQEAKICNpbmNsdWRlIDx3ZWJraXQyL1dlYktpdEJhY2tGb3J3YXJkTGlzdC5o
PgogI2luY2x1ZGUgPHdlYmtpdDIvV2ViS2l0RGVmaW5lcy5oPgogI2luY2x1ZGUgPHdlYmtpdDIv
V2ViS2l0V2ViQ29udGV4dC5oPgotI2luY2x1ZGUgPHdlYmtpdDIvV2ViS2l0V2ViTG9hZGVyQ2xp
ZW50Lmg+CiAjaW5jbHVkZSA8d2Via2l0Mi9XZWJLaXRTZXR0aW5ncy5oPgogI2luY2x1ZGUgPHdl
YmtpdDIvV2ViS2l0VVJJUmVxdWVzdC5oPgogI2luY2x1ZGUgPHdlYmtpdDIvV2ViS2l0V2ViVmll
d0Jhc2UuaD4KQEAgLTQ2LDggKzQ1LDMyIEBAIEdfQkVHSU5fREVDTFMKICNkZWZpbmUgV0VCS0lU
X0lTX1dFQl9WSUVXX0NMQVNTKGtsYXNzKSAoR19UWVBFX0NIRUNLX0NMQVNTX1RZUEUoKGtsYXNz
KSwgIFdFQktJVF9UWVBFX1dFQl9WSUVXKSkKICNkZWZpbmUgV0VCS0lUX1dFQl9WSUVXX0dFVF9D
TEFTUyhvYmopICAoR19UWVBFX0lOU1RBTkNFX0dFVF9DTEFTUygob2JqKSwgIFdFQktJVF9UWVBF
X1dFQl9WSUVXLCBXZWJLaXRXZWJWaWV3Q2xhc3MpKQogCit0eXBlZGVmIHN0cnVjdCBfV2ViS2l0
V2ViVmlldyBXZWJLaXRXZWJWaWV3OwordHlwZWRlZiBzdHJ1Y3QgX1dlYktpdFdlYlZpZXdDbGFz
cyBXZWJLaXRXZWJWaWV3Q2xhc3M7CiB0eXBlZGVmIHN0cnVjdCBfV2ViS2l0V2ViVmlld1ByaXZh
dGUgV2ViS2l0V2ViVmlld1ByaXZhdGU7CiAKKy8qKgorICogV2ViS2l0TG9hZEV2ZW50CisgKiBA
V0VCS0lUX0xPQURfU1RBUlRFRDogQSBuZXcgbG9hZCByZXF1ZXN0IGhhcyBiZWVuIG1hZGUuCisg
KiBObyBkYXRhIGhhcyBiZWVuIHJlY2VpdmVkIHlldCwgZW1wdHkgc3RydWN0dXJlcyBoYXZlCisg
KiBiZWVuIGFsbG9jYXRlZCB0byBwZXJmb3JtIHRoZSBsb2FkOyB0aGUgbG9hZCBtYXkgc3RpbGwK
KyAqIGZhaWwgZm9yIHRyYW5zcG9ydCBpc3N1ZXMgc3VjaCBhcyBub3QgYmVpbmcgYWJsZSB0bwor
ICogcmVzb2x2ZSBhIG5hbWUsIG9yIGNvbm5lY3QgdG8gYSBwb3J0LgorICogQFdFQktJVF9MT0FE
X1JFRElSRUNURUQ6IEEgcHJvdmlzaW9uYWwgZGF0YSBzb3VyY2UgcmVjZWl2ZWQKKyAqIGEgc2Vy
dmVyIHJlZGlyZWN0LgorICogQFdFQktJVF9MT0FEX0NPTU1JVFRFRDogVGhlIGNvbnRlbnQgc3Rh
cnRlZCBhcnJpdmluZyBmb3IgYSBwYWdlIGxvYWQuCisgKiBUaGUgbmVjZXNzYXJ5IHRyYW5zcG9y
dCByZXF1aXJlbWVudHMgYXJlIHN0YWJpbGlzaGVkLCBhbmQgdGhlCisgKiBsb2FkIGlzIGJlaW5n
IHBlcmZvcm1lZC4KKyAqIEBXRUJLSVRfTE9BRF9GSU5JU0hFRDogTG9hZCBjb21wbGV0ZWQuIEFs
bCByZXNvdXJjZXMgYXJlIGRvbmUgbG9hZGluZworICogb3IgdGhlcmUgd2FzIGFuIGVycm9yIGR1
cmluZyB0aGUgbG9hZCBvcGVyYXRpb24uCisgKi8KK3R5cGVkZWYgZW51bSB7CisgICAgV0VCS0lU
X0xPQURfU1RBUlRFRCwKKyAgICBXRUJLSVRfTE9BRF9SRURJUkVDVEVELAorICAgIFdFQktJVF9M
T0FEX0NPTU1JVFRFRCwKKyAgICBXRUJLSVRfTE9BRF9GSU5JU0hFRAorfSBXZWJLaXRMb2FkRXZl
bnQ7CisKIHN0cnVjdCBfV2ViS2l0V2ViVmlldyB7CiAgICAgV2ViS2l0V2ViVmlld0Jhc2UgcGFy
ZW50OwogCkBAIC01OCwxOSArODEsMjYgQEAgc3RydWN0IF9XZWJLaXRXZWJWaWV3IHsKIHN0cnVj
dCBfV2ViS2l0V2ViVmlld0NsYXNzIHsKICAgICBXZWJLaXRXZWJWaWV3QmFzZUNsYXNzIHBhcmVu
dDsKIAotICAgIEd0a1dpZGdldCAqKCogY3JlYXRlKSAgICAgICAgIChXZWJLaXRXZWJWaWV3ICp3
ZWJfdmlldyk7Ci0gICAgdm9pZCAgICAgICAoKiByZWFkeV90b19zaG93KSAgKFdlYktpdFdlYlZp
ZXcgKndlYl92aWV3KTsKLSAgICB2b2lkICAgICAgICgqIGNsb3NlKSAgICAgICAgICAoV2ViS2l0
V2ViVmlldyAqd2ViX3ZpZXcpOwotCi0gICAgZ2Jvb2xlYW4gICAoKiBzY3JpcHRfYWxlcnQpICAg
KFdlYktpdFdlYlZpZXcgKndlYl92aWV3LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjb25zdCBnY2hhciAgICptZXNzYWdlKTsKLSAgICBnYm9vbGVhbiAgICgqIHNjcmlwdF9j
b25maXJtKSAoV2ViS2l0V2ViVmlldyAqd2ViX3ZpZXcsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IGdjaGFyICAgKm1lc3NhZ2UsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGdib29sZWFuICAgICAgKmNvbmZpcm1lZCk7Ci0gICAgZ2Jvb2xlYW4g
ICAoKiBzY3JpcHRfcHJvbXB0KSAgKFdlYktpdFdlYlZpZXcgKndlYl92aWV3LAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnY2hhciAgICptZXNzYWdlLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnY2hhciAgICpkZWZhdWx0X3RleHQs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdjaGFyICAgICAgICAqKnRleHQp
OworICAgIHZvaWQgICAgICAgKCogbG9hZF9jaGFuZ2VkKSAgIChXZWJLaXRXZWJWaWV3ICAqd2Vi
X3ZpZXcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdlYktpdExvYWRFdmVu
dCBsb2FkX2V2ZW50KTsKKyAgICBnYm9vbGVhbiAgICgqIGxvYWRfZmFpbGVkKSAgICAoV2ViS2l0
V2ViVmlldyAgKndlYl92aWV3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBX
ZWJLaXRMb2FkRXZlbnQgbG9hZF9ldmVudCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3QgZ2NoYXIgICAgKmZhaWxpbmdfdXJpLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHRXJyb3IgICAgICAgICAqZXJyb3IpOworCisgICAgR3RrV2lkZ2V0ICoo
KiBjcmVhdGUpICAgICAgICAgKFdlYktpdFdlYlZpZXcgICp3ZWJfdmlldyk7CisgICAgdm9pZCAg
ICAgICAoKiByZWFkeV90b19zaG93KSAgKFdlYktpdFdlYlZpZXcgICp3ZWJfdmlldyk7CisgICAg
dm9pZCAgICAgICAoKiBjbG9zZSkgICAgICAgICAgKFdlYktpdFdlYlZpZXcgICp3ZWJfdmlldyk7
CisKKyAgICBnYm9vbGVhbiAgICgqIHNjcmlwdF9hbGVydCkgICAoV2ViS2l0V2ViVmlldyAgKndl
Yl92aWV3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnY2hhciAg
ICAqbWVzc2FnZSk7CisgICAgZ2Jvb2xlYW4gICAoKiBzY3JpcHRfY29uZmlybSkgKFdlYktpdFdl
YlZpZXcgICp3ZWJfdmlldywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29u
c3QgZ2NoYXIgICAgKm1lc3NhZ2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGdib29sZWFuICAgICAgICpjb25maXJtZWQpOworICAgIGdib29sZWFuICAgKCogc2NyaXB0X3By
b21wdCkgIChXZWJLaXRXZWJWaWV3ICAqd2ViX3ZpZXcsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IGdjaGFyICAgICptZXNzYWdlLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCBnY2hhciAgICAqZGVmYXVsdF90ZXh0LAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBnY2hhciAgICAgICAgICoqdGV4dCk7CiAKICAgICAv
KiBQYWRkaW5nIGZvciBmdXR1cmUgZXhwYW5zaW9uICovCiAgICAgdm9pZCAoKl93ZWJraXRfcmVz
ZXJ2ZWQwKSAodm9pZCk7CkBAIC05NSwxMyArMTI1LDYgQEAgd2Via2l0X3dlYl92aWV3X25ld193
aXRoX2NvbnRleHQgICAgICAgICAgICAgKFdlYktpdFdlYkNvbnRleHQgICAgICAgICAgKmNvbnRl
eHQKIFdFQktJVF9BUEkgV2ViS2l0V2ViQ29udGV4dCAqCiB3ZWJraXRfd2ViX3ZpZXdfZ2V0X2Nv
bnRleHQgICAgICAgICAgICAgICAgICAoV2ViS2l0V2ViVmlldyAgICAgICAgICAgICAqd2ViX3Zp
ZXcpOwogCi1XRUJLSVRfQVBJIFdlYktpdFdlYkxvYWRlckNsaWVudCAqCi13ZWJraXRfd2ViX3Zp
ZXdfZ2V0X2xvYWRlcl9jbGllbnQgICAgICAgICAgICAoV2ViS2l0V2ViVmlldyAgICAgICAgICAg
ICAqd2ViX3ZpZXcpOwotCi1XRUJLSVRfQVBJIHZvaWQKLXdlYmtpdF93ZWJfdmlld19zZXRfbG9h
ZGVyX2NsaWVudCAgICAgICAgICAgIChXZWJLaXRXZWJWaWV3ICAgICAgICAgICAgICp3ZWJfdmll
dywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXZWJLaXRX
ZWJMb2FkZXJDbGllbnQgICAgICpsb2FkZXJfY2xpZW50KTsKLQogV0VCS0lUX0FQSSB2b2lkCiB3
ZWJraXRfd2ViX3ZpZXdfbG9hZF91cmkgICAgICAgICAgICAgICAgICAgICAoV2ViS2l0V2ViVmll
dyAgICAgICAgICAgICAqd2ViX3ZpZXcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY29uc3QgZ2NoYXIgICAgICAgICAgICAgICAqdXJpKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdQcml2YXRl
LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3UHJpdmF0
ZS5oCmluZGV4IDhmYzgzOWQuLjVjODE2MWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdQcml2YXRlLmgKKysrIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlld1ByaXZhdGUuaApAQCAtMzEsNiArMzEs
OCBAQAogI2luY2x1ZGUgPFdlYktpdDIvV2ViS2l0Mi5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NT
dHJpbmcuaD4KIAordm9pZCB3ZWJraXRXZWJWaWV3TG9hZENoYW5nZWQoV2ViS2l0V2ViVmlldyos
IFdlYktpdExvYWRFdmVudCk7Cit2b2lkIHdlYmtpdFdlYlZpZXdMb2FkRmFpbGVkKFdlYktpdFdl
YlZpZXcqLCBXZWJLaXRMb2FkRXZlbnQsIGNvbnN0IGNoYXIqIGZhaWxpbmdVUkksIEdFcnJvciop
Owogdm9pZCB3ZWJraXRXZWJWaWV3U2V0RXN0aW1hdGVkTG9hZFByb2dyZXNzKFdlYktpdFdlYlZp
ZXcqLCBkb3VibGUgZXN0aW1hdGVkTG9hZFByb2dyZXNzKTsKIHZvaWQgd2Via2l0V2ViVmlld1Nl
dFRpdGxlKFdlYktpdFdlYlZpZXcqLCBjb25zdCBDU3RyaW5nJik7CiB2b2lkIHdlYmtpdFdlYlZp
ZXdVcGRhdGVVUkkoV2ViS2l0V2ViVmlldyopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9ndGsvZG9jcy93ZWJraXQyZ3RrLWRvY3Muc2dtbCBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL2RvY3Mvd2Via2l0Mmd0ay1kb2NzLnNnbWwKaW5kZXggNWFi
Y2IxZC4uYzUxMzk1OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9n
dGsvZG9jcy93ZWJraXQyZ3RrLWRvY3Muc2dtbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL2d0ay9kb2NzL3dlYmtpdDJndGstZG9jcy5zZ21sCkBAIC0xNCw3ICsxNCw2IEBACiAg
ICAgPHhpOmluY2x1ZGUgaHJlZj0ieG1sL1dlYktpdFdlYkNvbnRleHQueG1sIi8+CiAgICAgPHhp
OmluY2x1ZGUgaHJlZj0ieG1sL1dlYktpdFdlYlZpZXcueG1sIi8+CiAgICAgPHhpOmluY2x1ZGUg
aHJlZj0ieG1sL1dlYktpdFdlYlZpZXdCYXNlLnhtbCIvPgotICAgIDx4aTppbmNsdWRlIGhyZWY9
InhtbC9XZWJLaXRXZWJMb2FkZXJDbGllbnQueG1sIi8+CiAgICAgPHhpOmluY2x1ZGUgaHJlZj0i
eG1sL1dlYktpdEJhY2tGb3J3YXJkTGlzdC54bWwiLz4KICAgICA8eGk6aW5jbHVkZSBocmVmPSJ4
bWwvV2ViS2l0QmFja0ZvcndhcmRMaXN0SXRlbS54bWwiLz4KICAgICA8eGk6aW5jbHVkZSBocmVm
PSJ4bWwvV2ViS2l0U2V0dGluZ3MueG1sIi8+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL2d0ay9kb2NzL3dlYmtpdDJndGstc2VjdGlvbnMudHh0IGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvZG9jcy93ZWJraXQyZ3RrLXNlY3Rpb25zLnR4dAppbmRl
eCA0YzJmNjA1Li41M2QyMWQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL2d0ay9kb2NzL3dlYmtpdDJndGstc2VjdGlvbnMudHh0CisrKyBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvZ3RrL2RvY3Mvd2Via2l0Mmd0ay1zZWN0aW9ucy50eHQKQEAgLTQ2LDEx
ICs0NiwxMCBAQCB3ZWJraXRfd2ViX2NvbnRleHRfZ2V0X3R5cGUKIDxGSUxFPldlYktpdFdlYlZp
ZXc8L0ZJTEU+CiA8VElUTEU+V2ViS2l0V2ViVmlldzwvVElUTEU+CiBXZWJLaXRXZWJWaWV3CitX
ZWJLaXRMb2FkRXZlbnQKIHdlYmtpdF93ZWJfdmlld19uZXcKIHdlYmtpdF93ZWJfdmlld19uZXdf
d2l0aF9jb250ZXh0CiB3ZWJraXRfd2ViX3ZpZXdfZ2V0X2NvbnRleHQKLXdlYmtpdF93ZWJfdmll
d19nZXRfbG9hZGVyX2NsaWVudAotd2Via2l0X3dlYl92aWV3X3NldF9sb2FkZXJfY2xpZW50CiB3
ZWJraXRfd2ViX3ZpZXdfbG9hZF91cmkKIHdlYmtpdF93ZWJfdmlld19sb2FkX2h0bWwKIHdlYmtp
dF93ZWJfdmlld19sb2FkX3BsYWluX3RleHQKQEAgLTg5LDI0ICs4OCw2IEBAIFdlYktpdFdlYlZp
ZXdQcml2YXRlCiA8L1NFQ1RJT04+CiAKIDxTRUNUSU9OPgotPEZJTEU+V2ViS2l0V2ViTG9hZGVy
Q2xpZW50PC9GSUxFPgotPFRJVExFPldlYktpdFdlYkxvYWRlckNsaWVudDwvVElUTEU+Ci1XZWJL
aXRXZWJMb2FkZXJDbGllbnQKLQotPFNVQlNFQ1RJT04gU3RhbmRhcmQ+Ci1XZWJLaXRXZWJMb2Fk
ZXJDbGllbnRDbGFzcwotV0VCS0lUX1dFQl9MT0FERVJfQ0xJRU5UCi1XRUJLSVRfSVNfV0VCX0xP
QURFUl9DTElFTlQKLVdFQktJVF9UWVBFX1dFQl9MT0FERVJfQ0xJRU5UCi1XRUJLSVRfV0VCX0xP
QURFUl9DTElFTlRfQ0xBU1MKLVdFQktJVF9JU19XRUJfTE9BREVSX0NMSUVOVF9DTEFTUwotV0VC
S0lUX1dFQl9MT0FERVJfQ0xJRU5UX0dFVF9DTEFTUwotCi08U1VCU0VDVElPTiBQcml2YXRlPgot
d2Via2l0X3dlYl9sb2FkZXJfY2xpZW50X2dldF90eXBlCi08L1NFQ1RJT04+Ci0KLTxTRUNUSU9O
PgogPEZJTEU+V2ViS2l0QmFja0ZvcndhcmRMaXN0PC9GSUxFPgogV2ViS2l0QmFja0ZvcndhcmRM
aXN0CiB3ZWJraXRfYmFja19mb3J3YXJkX2xpc3RfZ2V0X2xlbmd0aApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvZG9jcy93ZWJraXQyZ3RrLnR5cGVzIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvZG9jcy93ZWJraXQyZ3RrLnR5cGVzCmluZGV4
IDA1ZmYxOWQuLjQwYTg0MWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvZ3RrL2RvY3Mvd2Via2l0Mmd0ay50eXBlcworKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL2d0ay9kb2NzL3dlYmtpdDJndGsudHlwZXMKQEAgLTEsNyArMSw2IEBACiAjaW5jbHVk
ZSA8d2Via2l0Mi93ZWJraXQyLmg+CiB3ZWJraXRfd2ViX3ZpZXdfZ2V0X3R5cGUKIHdlYmtpdF93
ZWJfdmlld19iYXNlX2dldF90eXBlCi13ZWJraXRfd2ViX2xvYWRlcl9jbGllbnRfZ2V0X3R5cGUK
IHdlYmtpdF93ZWJfY29udGV4dF9nZXRfdHlwZQogd2Via2l0X2JhY2tfZm9yd2FyZF9saXN0X2dl
dF90eXBlCiB3ZWJraXRfYmFja19mb3J3YXJkX2xpc3RfaXRlbV9nZXRfdHlwZQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvdGVzdHMvTG9hZFRyYWNraW5nVGVz
dC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay90ZXN0cy9Mb2FkVHJhY2tp
bmdUZXN0LmNwcAppbmRleCBhOGM1NTkwLi43NTgxZjJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay90ZXN0cy9Mb2FkVHJhY2tpbmdUZXN0LmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay90ZXN0cy9Mb2FkVHJhY2tpbmdUZXN0LmNw
cApAQCAtMjIsNTAgKzIyLDUxIEBACiAKICNpbmNsdWRlIDx3ZWJraXQyL3dlYmtpdDIuaD4KIAot
c3RhdGljIGdib29sZWFuIHByb3Zpc2lvbmFsTG9hZFN0YXJ0ZWRDYWxsYmFjayhXZWJLaXRXZWJM
b2FkZXJDbGllbnQqIGNsaWVudCwgV2ViS2l0V2ViVmlldyosIExvYWRUcmFja2luZ1Rlc3QqIHRl
c3QpCi17Ci0gICAgZ19hc3NlcnRfY21wc3RyKHRlc3QtPm1fYWN0aXZlVVJJLmRhdGEoKSwgPT0s
IHdlYmtpdF93ZWJfdmlld19nZXRfdXJpKHRlc3QtPm1fd2ViVmlldykpOwotICAgIHRlc3QtPnBy
b3Zpc2lvbmFsTG9hZFN0YXJ0ZWQoY2xpZW50KTsKLSAgICByZXR1cm4gVFJVRTsKLX0KLQotc3Rh
dGljIGdib29sZWFuIHByb3Zpc2lvbmFsTG9hZFJlY2VpdmVkU2VydmVyUmVkaXJlY3RDYWxsYmFj
ayhXZWJLaXRXZWJMb2FkZXJDbGllbnQqIGNsaWVudCwgV2ViS2l0V2ViVmlldyosIExvYWRUcmFj
a2luZ1Rlc3QqIHRlc3QpCi17Ci0gICAgdGVzdC0+bV9hY3RpdmVVUkkgPSB3ZWJraXRfd2ViX3Zp
ZXdfZ2V0X3VyaSh0ZXN0LT5tX3dlYlZpZXcpOwotICAgIGlmICghdGVzdC0+bV9yZWRpcmVjdFVS
SS5pc051bGwoKSkKLSAgICAgICAgZ19hc3NlcnRfY21wc3RyKHRlc3QtPm1fcmVkaXJlY3RVUkku
ZGF0YSgpLCA9PSwgdGVzdC0+bV9hY3RpdmVVUkkuZGF0YSgpKTsKLSAgICB0ZXN0LT5wcm92aXNp
b25hbExvYWRSZWNlaXZlZFNlcnZlclJlZGlyZWN0KGNsaWVudCk7Ci0gICAgcmV0dXJuIFRSVUU7
Ci19Ci0KLXN0YXRpYyBnYm9vbGVhbiBwcm92aXNpb25hbExvYWRGYWlsZWRDYWxsYmFjayhXZWJL
aXRXZWJMb2FkZXJDbGllbnQqIGNsaWVudCwgV2ViS2l0V2ViVmlldyosIGNvbnN0IGdjaGFyKiBm
YWlsaW5nVVJJLCBHRXJyb3IqIGVycm9yLCBMb2FkVHJhY2tpbmdUZXN0KiB0ZXN0KQotewotICAg
IGdfYXNzZXJ0X2NtcHN0cih0ZXN0LT5tX2FjdGl2ZVVSSS5kYXRhKCksID09LCB3ZWJraXRfd2Vi
X3ZpZXdfZ2V0X3VyaSh0ZXN0LT5tX3dlYlZpZXcpKTsKLSAgICBnX2Fzc2VydChlcnJvcik7Ci0g
ICAgdGVzdC0+cHJvdmlzaW9uYWxMb2FkRmFpbGVkKGNsaWVudCwgZmFpbGluZ1VSSSwgZXJyb3Ip
OwotICAgIHJldHVybiBUUlVFOwotfQotCi1zdGF0aWMgZ2Jvb2xlYW4gbG9hZENvbW1pdHRlZENh
bGxiYWNrKFdlYktpdFdlYkxvYWRlckNsaWVudCogY2xpZW50LCBXZWJLaXRXZWJWaWV3KiwgTG9h
ZFRyYWNraW5nVGVzdCogdGVzdCkKLXsKLSAgICBnX2Fzc2VydF9jbXBzdHIodGVzdC0+bV9hY3Rp
dmVVUkkuZGF0YSgpLCA9PSwgd2Via2l0X3dlYl92aWV3X2dldF91cmkodGVzdC0+bV93ZWJWaWV3
KSk7Ci0gICAgdGVzdC0+bG9hZENvbW1pdHRlZChjbGllbnQpOwotICAgIHJldHVybiBUUlVFOwot
fQotCi1zdGF0aWMgZ2Jvb2xlYW4gbG9hZEZpbmlzaGVkQ2FsbGJhY2soV2ViS2l0V2ViTG9hZGVy
Q2xpZW50KiBjbGllbnQsIFdlYktpdFdlYlZpZXcqLCBMb2FkVHJhY2tpbmdUZXN0KiB0ZXN0KQot
ewotICAgIGdfYXNzZXJ0X2NtcHN0cih0ZXN0LT5tX2FjdGl2ZVVSSS5kYXRhKCksID09LCB3ZWJr
aXRfd2ViX3ZpZXdfZ2V0X3VyaSh0ZXN0LT5tX3dlYlZpZXcpKTsKLSAgICB0ZXN0LT5sb2FkRmlu
aXNoZWQoY2xpZW50KTsKLSAgICByZXR1cm4gVFJVRTsKLX0KLQotc3RhdGljIGdib29sZWFuIGxv
YWRGYWlsZWRDYWxsYmFjayhXZWJLaXRXZWJMb2FkZXJDbGllbnQqIGNsaWVudCwgV2ViS2l0V2Vi
VmlldyosIGNvbnN0IGdjaGFyKiBmYWlsaW5nVVJJLCBHRXJyb3IqIGVycm9yLCBMb2FkVHJhY2tp
bmdUZXN0KiB0ZXN0KQotewotICAgIGdfYXNzZXJ0X2NtcHN0cih0ZXN0LT5tX2FjdGl2ZVVSSS5k
YXRhKCksID09LCB3ZWJraXRfd2ViX3ZpZXdfZ2V0X3VyaSh0ZXN0LT5tX3dlYlZpZXcpKTsKLSAg
ICBnX2Fzc2VydChlcnJvcik7Ci0gICAgdGVzdC0+bG9hZEZhaWxlZChjbGllbnQsIGZhaWxpbmdV
UkksIGVycm9yKTsKLSAgICByZXR1cm4gVFJVRTsKK3N0YXRpYyB2b2lkIGxvYWRDaGFuZ2VkQ2Fs
bGJhY2soV2ViS2l0V2ViVmlldyogd2ViVmlldywgV2ViS2l0TG9hZEV2ZW50IGxvYWRFdmVudCwg
TG9hZFRyYWNraW5nVGVzdCogdGVzdCkKK3sKKyAgICBzd2l0Y2ggKGxvYWRFdmVudCkgeworICAg
IGNhc2UgV0VCS0lUX0xPQURfU1RBUlRFRDoKKyAgICAgICAgZ19hc3NlcnRfY21wc3RyKHRlc3Qt
Pm1fYWN0aXZlVVJJLmRhdGEoKSwgPT0sIHdlYmtpdF93ZWJfdmlld19nZXRfdXJpKHdlYlZpZXcp
KTsKKyAgICAgICAgdGVzdC0+cHJvdmlzaW9uYWxMb2FkU3RhcnRlZCgpOworICAgICAgICBicmVh
azsKKyAgICBjYXNlIFdFQktJVF9MT0FEX1JFRElSRUNURUQ6CisgICAgICAgIHRlc3QtPm1fYWN0
aXZlVVJJID0gd2Via2l0X3dlYl92aWV3X2dldF91cmkod2ViVmlldyk7CisgICAgICAgIGlmICgh
dGVzdC0+bV9yZWRpcmVjdFVSSS5pc051bGwoKSkKKyAgICAgICAgICAgIGdfYXNzZXJ0X2NtcHN0
cih0ZXN0LT5tX3JlZGlyZWN0VVJJLmRhdGEoKSwgPT0sIHRlc3QtPm1fYWN0aXZlVVJJLmRhdGEo
KSk7CisgICAgICAgIHRlc3QtPnByb3Zpc2lvbmFsTG9hZFJlY2VpdmVkU2VydmVyUmVkaXJlY3Qo
KTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBXRUJLSVRfTE9BRF9DT01NSVRURUQ6CisgICAg
ICAgIGdfYXNzZXJ0X2NtcHN0cih0ZXN0LT5tX2FjdGl2ZVVSSS5kYXRhKCksID09LCB3ZWJraXRf
d2ViX3ZpZXdfZ2V0X3VyaSh3ZWJWaWV3KSk7CisgICAgICAgIHRlc3QtPmxvYWRDb21taXR0ZWQo
KTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBXRUJLSVRfTE9BRF9GSU5JU0hFRDoKKyAgICAg
ICAgaWYgKCF0ZXN0LT5tX2xvYWRGYWlsZWQpCisgICAgICAgICAgICBnX2Fzc2VydF9jbXBzdHIo
dGVzdC0+bV9hY3RpdmVVUkkuZGF0YSgpLCA9PSwgd2Via2l0X3dlYl92aWV3X2dldF91cmkod2Vi
VmlldykpOworICAgICAgICB0ZXN0LT5sb2FkRmluaXNoZWQoKTsKKyAgICAgICAgYnJlYWs7Cisg
ICAgZGVmYXVsdDoKKyAgICAgICAgZ19hc3NlcnRfbm90X3JlYWNoZWQoKTsKKyAgICB9Cit9CisK
K3N0YXRpYyB2b2lkIGxvYWRGYWlsZWRDYWxsYmFjayhXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3LCBX
ZWJLaXRMb2FkRXZlbnQgbG9hZEV2ZW50LCBjb25zdCBjaGFyKiBmYWlsaW5nVVJJLCBHRXJyb3Iq
IGVycm9yLCBMb2FkVHJhY2tpbmdUZXN0KiB0ZXN0KQoreworICAgIHRlc3QtPm1fbG9hZEZhaWxl
ZCA9IHRydWU7CisKKyAgICBzd2l0Y2ggKGxvYWRFdmVudCkgeworICAgIGNhc2UgV0VCS0lUX0xP
QURfU1RBUlRFRDoKKyAgICAgICAgZ19hc3NlcnRfY21wc3RyKHRlc3QtPm1fYWN0aXZlVVJJLmRh
dGEoKSwgPT0sIHdlYmtpdF93ZWJfdmlld19nZXRfdXJpKHdlYlZpZXcpKTsKKyAgICAgICAgZ19h
c3NlcnQoZXJyb3IpOworICAgICAgICB0ZXN0LT5wcm92aXNpb25hbExvYWRGYWlsZWQoZmFpbGlu
Z1VSSSwgZXJyb3IpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFdFQktJVF9MT0FEX0NPTU1J
VFRFRDoKKyAgICAgICAgZ19hc3NlcnRfY21wc3RyKHRlc3QtPm1fYWN0aXZlVVJJLmRhdGEoKSwg
PT0sIHdlYmtpdF93ZWJfdmlld19nZXRfdXJpKHdlYlZpZXcpKTsKKyAgICAgICAgZ19hc3NlcnQo
ZXJyb3IpOworICAgICAgICB0ZXN0LT5sb2FkRmFpbGVkKGZhaWxpbmdVUkksIGVycm9yKTsKKyAg
ICAgICAgYnJlYWs7CisgICAgZGVmYXVsdDoKKyAgICAgICAgZ19hc3NlcnRfbm90X3JlYWNoZWQo
KTsKKyAgICB9CiB9CiAKIHN0YXRpYyB2b2lkIGVzdGltYXRlZFByb2dyZXNzQ2hhbmdlZENhbGxi
YWNrKEdPYmplY3QqLCBHUGFyYW1TcGVjKiwgTG9hZFRyYWNraW5nVGVzdCogdGVzdCkKQEAgLTc1
LDE0ICs3NiwxMCBAQCBzdGF0aWMgdm9pZCBlc3RpbWF0ZWRQcm9ncmVzc0NoYW5nZWRDYWxsYmFj
ayhHT2JqZWN0KiwgR1BhcmFtU3BlYyosIExvYWRUcmFja2luZwogCiBMb2FkVHJhY2tpbmdUZXN0
OjpMb2FkVHJhY2tpbmdUZXN0KCkKICAgICA6IG1fcnVuTG9hZFVudGlsQ29tcGxldGlvbihmYWxz
ZSkKKyAgICAsIG1fbG9hZEZhaWxlZChmYWxzZSkKIHsKLSAgICBXZWJLaXRXZWJMb2FkZXJDbGll
bnQqIGNsaWVudCA9IHdlYmtpdF93ZWJfdmlld19nZXRfbG9hZGVyX2NsaWVudChtX3dlYlZpZXcp
OwotICAgIGdfc2lnbmFsX2Nvbm5lY3QoY2xpZW50LCAicHJvdmlzaW9uYWwtbG9hZC1zdGFydGVk
IiwgR19DQUxMQkFDSyhwcm92aXNpb25hbExvYWRTdGFydGVkQ2FsbGJhY2spLCB0aGlzKTsKLSAg
ICBnX3NpZ25hbF9jb25uZWN0KGNsaWVudCwgInByb3Zpc2lvbmFsLWxvYWQtcmVjZWl2ZWQtc2Vy
dmVyLXJlZGlyZWN0IiwgR19DQUxMQkFDSyhwcm92aXNpb25hbExvYWRSZWNlaXZlZFNlcnZlclJl
ZGlyZWN0Q2FsbGJhY2spLCB0aGlzKTsKLSAgICBnX3NpZ25hbF9jb25uZWN0KGNsaWVudCwgInBy
b3Zpc2lvbmFsLWxvYWQtZmFpbGVkIiwgR19DQUxMQkFDSyhwcm92aXNpb25hbExvYWRGYWlsZWRD
YWxsYmFjayksIHRoaXMpOwotICAgIGdfc2lnbmFsX2Nvbm5lY3QoY2xpZW50LCAibG9hZC1jb21t
aXR0ZWQiLCBHX0NBTExCQUNLKGxvYWRDb21taXR0ZWRDYWxsYmFjayksIHRoaXMpOwotICAgIGdf
c2lnbmFsX2Nvbm5lY3QoY2xpZW50LCAibG9hZC1maW5pc2hlZCIsIEdfQ0FMTEJBQ0sobG9hZEZp
bmlzaGVkQ2FsbGJhY2spLCB0aGlzKTsKLSAgICBnX3NpZ25hbF9jb25uZWN0KGNsaWVudCwgImxv
YWQtZmFpbGVkIiwgR19DQUxMQkFDSyhsb2FkRmFpbGVkQ2FsbGJhY2spLCB0aGlzKTsKKyAgICBn
X3NpZ25hbF9jb25uZWN0KG1fd2ViVmlldywgImxvYWQtY2hhbmdlZCIsIEdfQ0FMTEJBQ0sobG9h
ZENoYW5nZWRDYWxsYmFjayksIHRoaXMpOworICAgIGdfc2lnbmFsX2Nvbm5lY3QobV93ZWJWaWV3
LCAibG9hZC1mYWlsZWQiLCBHX0NBTExCQUNLKGxvYWRGYWlsZWRDYWxsYmFjayksIHRoaXMpOwog
ICAgIGdfc2lnbmFsX2Nvbm5lY3QobV93ZWJWaWV3LCAibm90aWZ5Ojplc3RpbWF0ZWQtbG9hZC1w
cm9ncmVzcyIsIEdfQ0FMTEJBQ0soZXN0aW1hdGVkUHJvZ3Jlc3NDaGFuZ2VkQ2FsbGJhY2spLCB0
aGlzKTsKIAogICAgIGdfYXNzZXJ0KCF3ZWJraXRfd2ViX3ZpZXdfZ2V0X3VyaShtX3dlYlZpZXcp
KTsKQEAgLTkwLDggKzg3LDYgQEAgTG9hZFRyYWNraW5nVGVzdDo6TG9hZFRyYWNraW5nVGVzdCgp
CiAKIExvYWRUcmFja2luZ1Rlc3Q6On5Mb2FkVHJhY2tpbmdUZXN0KCkKIHsKLSAgICBXZWJLaXRX
ZWJMb2FkZXJDbGllbnQqIGNsaWVudCA9IHdlYmtpdF93ZWJfdmlld19nZXRfbG9hZGVyX2NsaWVu
dChtX3dlYlZpZXcpOwotICAgIGdfc2lnbmFsX2hhbmRsZXJzX2Rpc2Nvbm5lY3RfbWF0Y2hlZChj
bGllbnQsIEdfU0lHTkFMX01BVENIX0RBVEEsIDAsIDAsIDAsIDAsIHRoaXMpOwogICAgIGdfc2ln
bmFsX2hhbmRsZXJzX2Rpc2Nvbm5lY3RfbWF0Y2hlZChtX3dlYlZpZXcsIEdfU0lHTkFMX01BVENI
X0RBVEEsIDAsIDAsIDAsIDAsIHRoaXMpOwogfQogCkBAIC0xMDIsNDAgKzk3LDM4IEBAIHZvaWQg
TG9hZFRyYWNraW5nVGVzdDo6d2FpdFVudGlsTG9hZEZpbmlzaGVkKCkKICAgICBnX21haW5fbG9v
cF9ydW4obV9tYWluTG9vcCk7CiB9CiAKLXZvaWQgTG9hZFRyYWNraW5nVGVzdDo6cHJvdmlzaW9u
YWxMb2FkU3RhcnRlZChXZWJLaXRXZWJMb2FkZXJDbGllbnQqIGNsaWVudCkKK3ZvaWQgTG9hZFRy
YWNraW5nVGVzdDo6cHJvdmlzaW9uYWxMb2FkU3RhcnRlZCgpCiB7CiAgICAgbV9sb2FkRXZlbnRz
LmFwcGVuZChQcm92aXNpb25hbExvYWRTdGFydGVkKTsKIH0KIAotdm9pZCBMb2FkVHJhY2tpbmdU
ZXN0Ojpwcm92aXNpb25hbExvYWRSZWNlaXZlZFNlcnZlclJlZGlyZWN0KFdlYktpdFdlYkxvYWRl
ckNsaWVudCogY2xpZW50KQordm9pZCBMb2FkVHJhY2tpbmdUZXN0Ojpwcm92aXNpb25hbExvYWRS
ZWNlaXZlZFNlcnZlclJlZGlyZWN0KCkKIHsKICAgICBtX2xvYWRFdmVudHMuYXBwZW5kKFByb3Zp
c2lvbmFsTG9hZFJlY2VpdmVkU2VydmVyUmVkaXJlY3QpOwogfQogCi12b2lkIExvYWRUcmFja2lu
Z1Rlc3Q6OnByb3Zpc2lvbmFsTG9hZEZhaWxlZChXZWJLaXRXZWJMb2FkZXJDbGllbnQqIGNsaWVu
dCwgY29uc3QgZ2NoYXIqIGZhaWxpbmdVUkksIEdFcnJvciogZXJyb3IpCit2b2lkIExvYWRUcmFj
a2luZ1Rlc3Q6OnByb3Zpc2lvbmFsTG9hZEZhaWxlZChjb25zdCBnY2hhciogZmFpbGluZ1VSSSwg
R0Vycm9yKiBlcnJvcikKIHsKICAgICBtX2xvYWRFdmVudHMuYXBwZW5kKFByb3Zpc2lvbmFsTG9h
ZEZhaWxlZCk7CiAgICAgaWYgKG1fcnVuTG9hZFVudGlsQ29tcGxldGlvbikKICAgICAgICAgZ19t
YWluX2xvb3BfcXVpdChtX21haW5Mb29wKTsKIH0KIAotdm9pZCBMb2FkVHJhY2tpbmdUZXN0Ojps
b2FkQ29tbWl0dGVkKFdlYktpdFdlYkxvYWRlckNsaWVudCogY2xpZW50KQordm9pZCBMb2FkVHJh
Y2tpbmdUZXN0Ojpsb2FkQ29tbWl0dGVkKCkKIHsKICAgICBtX2xvYWRFdmVudHMuYXBwZW5kKExv
YWRDb21taXR0ZWQpOwogfQogCi12b2lkIExvYWRUcmFja2luZ1Rlc3Q6OmxvYWRGaW5pc2hlZChX
ZWJLaXRXZWJMb2FkZXJDbGllbnQqIGNsaWVudCkKK3ZvaWQgTG9hZFRyYWNraW5nVGVzdDo6bG9h
ZEZpbmlzaGVkKCkKIHsKICAgICBtX2xvYWRFdmVudHMuYXBwZW5kKExvYWRGaW5pc2hlZCk7CiAg
ICAgaWYgKG1fcnVuTG9hZFVudGlsQ29tcGxldGlvbikKICAgICAgICAgZ19tYWluX2xvb3BfcXVp
dChtX21haW5Mb29wKTsKIH0KIAotdm9pZCBMb2FkVHJhY2tpbmdUZXN0Ojpsb2FkRmFpbGVkKFdl
YktpdFdlYkxvYWRlckNsaWVudCogY2xpZW50LCBjb25zdCBnY2hhciogZmFpbGluZ1VSSSwgR0Vy
cm9yKiBlcnJvcikKK3ZvaWQgTG9hZFRyYWNraW5nVGVzdDo6bG9hZEZhaWxlZChjb25zdCBnY2hh
ciogZmFpbGluZ1VSSSwgR0Vycm9yKiBlcnJvcikKIHsKICAgICBtX2xvYWRFdmVudHMuYXBwZW5k
KExvYWRGYWlsZWQpOwotICAgIGlmIChtX3J1bkxvYWRVbnRpbENvbXBsZXRpb24pCi0gICAgICAg
IGdfbWFpbl9sb29wX3F1aXQobV9tYWluTG9vcCk7CiB9CiAKIHZvaWQgTG9hZFRyYWNraW5nVGVz
dDo6ZXN0aW1hdGVkUHJvZ3Jlc3NDaGFuZ2VkKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvZ3RrL3Rlc3RzL0xvYWRUcmFja2luZ1Rlc3QuaCBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL3Rlc3RzL0xvYWRUcmFja2luZ1Rlc3QuaAppbmRleCA1ZWFi
ZTc5Li4zMDhhYTljIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0
ay90ZXN0cy9Mb2FkVHJhY2tpbmdUZXN0LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9ndGsvdGVzdHMvTG9hZFRyYWNraW5nVGVzdC5oCkBAIC0zMSwxMiArMzEsMTIgQEAgcHVi
bGljOgogICAgIHZpcnR1YWwgfkxvYWRUcmFja2luZ1Rlc3QoKTsKICAgICB2b2lkIHdhaXRVbnRp
bExvYWRGaW5pc2hlZCgpOwogCi0gICAgdmlydHVhbCB2b2lkIHByb3Zpc2lvbmFsTG9hZFN0YXJ0
ZWQoV2ViS2l0V2ViTG9hZGVyQ2xpZW50Kik7Ci0gICAgdmlydHVhbCB2b2lkIHByb3Zpc2lvbmFs
TG9hZFJlY2VpdmVkU2VydmVyUmVkaXJlY3QoV2ViS2l0V2ViTG9hZGVyQ2xpZW50Kik7Ci0gICAg
dmlydHVhbCB2b2lkIHByb3Zpc2lvbmFsTG9hZEZhaWxlZChXZWJLaXRXZWJMb2FkZXJDbGllbnQq
LCBjb25zdCBnY2hhciogZmFpbGluZ1VSSSwgR0Vycm9yKik7Ci0gICAgdmlydHVhbCB2b2lkIGxv
YWRDb21taXR0ZWQoV2ViS2l0V2ViTG9hZGVyQ2xpZW50Kik7Ci0gICAgdmlydHVhbCB2b2lkIGxv
YWRGaW5pc2hlZChXZWJLaXRXZWJMb2FkZXJDbGllbnQqKTsKLSAgICB2aXJ0dWFsIHZvaWQgbG9h
ZEZhaWxlZChXZWJLaXRXZWJMb2FkZXJDbGllbnQqLCBjb25zdCBjaGFyKiBmYWlsaW5nVVJJLCBH
RXJyb3IqKTsKKyAgICB2aXJ0dWFsIHZvaWQgcHJvdmlzaW9uYWxMb2FkU3RhcnRlZCgpOworICAg
IHZpcnR1YWwgdm9pZCBwcm92aXNpb25hbExvYWRSZWNlaXZlZFNlcnZlclJlZGlyZWN0KCk7Cisg
ICAgdmlydHVhbCB2b2lkIHByb3Zpc2lvbmFsTG9hZEZhaWxlZChjb25zdCBnY2hhciogZmFpbGlu
Z1VSSSwgR0Vycm9yKik7CisgICAgdmlydHVhbCB2b2lkIGxvYWRDb21taXR0ZWQoKTsKKyAgICB2
aXJ0dWFsIHZvaWQgbG9hZEZpbmlzaGVkKCk7CisgICAgdmlydHVhbCB2b2lkIGxvYWRGYWlsZWQo
Y29uc3QgY2hhciogZmFpbGluZ1VSSSwgR0Vycm9yKik7CiAgICAgdmlydHVhbCB2b2lkIGVzdGlt
YXRlZFByb2dyZXNzQ2hhbmdlZCgpOwogCiAgICAgdm9pZCBzZXRSZWRpcmVjdFVSSShjb25zdCBj
aGFyKiB1cmkpIHsgbV9yZWRpcmVjdFVSSSA9IHVyaTsgfQpAQCAtNTAsNiArNTAsNyBAQCBwdWJs
aWM6CiAgICAgICAgIExvYWRGYWlsZWQKICAgICB9OwogICAgIGJvb2wgbV9ydW5Mb2FkVW50aWxD
b21wbGV0aW9uOworICAgIGJvb2wgbV9sb2FkRmFpbGVkOwogICAgIFZlY3RvcjxMb2FkRXZlbnRz
PiBtX2xvYWRFdmVudHM7CiAgICAgZmxvYXQgbV9lc3RpbWF0ZWRQcm9ncmVzczsKICAgICBDU3Ry
aW5nIG1fcmVkaXJlY3RVUkk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL2d0ay90ZXN0cy9UZXN0V2ViS2l0V2ViTG9hZGVyQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL3Rlc3RzL1Rlc3RXZWJLaXRXZWJMb2FkZXJDbGllbnQuY3Bw
CmluZGV4IDAyN2ZmMDguLjA5ZmJhNDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvZ3RrL3Rlc3RzL1Rlc3RXZWJLaXRXZWJMb2FkZXJDbGllbnQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL3Rlc3RzL1Rlc3RXZWJLaXRXZWJMb2FkZXJD
bGllbnQuY3BwCkBAIC00OSw5ICs0OSwxMCBAQCBzdGF0aWMgdm9pZCB0ZXN0TG9hZGluZ0Vycm9y
KExvYWRUcmFja2luZ1Rlc3QqIHRlc3QsIGdjb25zdHBvaW50ZXIpCiAgICAgdGVzdC0+d2FpdFVu
dGlsTG9hZEZpbmlzaGVkKCk7CiAKICAgICBWZWN0b3I8TG9hZFRyYWNraW5nVGVzdDo6TG9hZEV2
ZW50cz4mIGV2ZW50cyA9IHRlc3QtPm1fbG9hZEV2ZW50czsKLSAgICBnX2Fzc2VydF9jbXBpbnQo
ZXZlbnRzLnNpemUoKSwgPT0sIDIpOworICAgIGdfYXNzZXJ0X2NtcGludChldmVudHMuc2l6ZSgp
LCA9PSwgMyk7CiAgICAgZ19hc3NlcnRfY21waW50KGV2ZW50c1swXSwgPT0sIExvYWRUcmFja2lu
Z1Rlc3Q6OlByb3Zpc2lvbmFsTG9hZFN0YXJ0ZWQpOwogICAgIGdfYXNzZXJ0X2NtcGludChldmVu
dHNbMV0sID09LCBMb2FkVHJhY2tpbmdUZXN0OjpQcm92aXNpb25hbExvYWRGYWlsZWQpOworICAg
IGdfYXNzZXJ0X2NtcGludChldmVudHNbMl0sID09LCBMb2FkVHJhY2tpbmdUZXN0OjpMb2FkRmlu
aXNoZWQpOwogfQogCiBzdGF0aWMgdm9pZCBhc3NlcnROb3JtYWxMb2FkSGFwcGVuZWRBbmRDbGVh
ckV2ZW50cyhWZWN0b3I8TG9hZFRyYWNraW5nVGVzdDo6TG9hZEV2ZW50cz4mIGV2ZW50cykKQEAg
LTk2LDE5ICs5NywxNSBAQCBjbGFzcyBMb2FkU3RvcFRyYWNraW5nVGVzdCA6IHB1YmxpYyBMb2Fk
VHJhY2tpbmdUZXN0IHsKIHB1YmxpYzoKICAgICBNQUtFX0dMSUJfVEVTVF9GSVhUVVJFKExvYWRT
dG9wVHJhY2tpbmdUZXN0KTsKIAotICAgIHZpcnR1YWwgdm9pZCBsb2FkQ29tbWl0dGVkKFdlYktp
dFdlYkxvYWRlckNsaWVudCogY2xpZW50KQorICAgIHZpcnR1YWwgdm9pZCBsb2FkQ29tbWl0dGVk
KCkKICAgICB7Ci0gICAgICAgIExvYWRUcmFja2luZ1Rlc3Q6OmxvYWRDb21taXR0ZWQoY2xpZW50
KTsKKyAgICAgICAgTG9hZFRyYWNraW5nVGVzdDo6bG9hZENvbW1pdHRlZCgpOwogICAgICAgICB3
ZWJraXRfd2ViX3ZpZXdfc3RvcF9sb2FkaW5nKG1fd2ViVmlldyk7CiAgICAgfQotICAgIHZpcnR1
YWwgdm9pZCBsb2FkRmFpbGVkKFdlYktpdFdlYkxvYWRlckNsaWVudCogY2xpZW50LCBjb25zdCBn
Y2hhciogZmFpbGluZ1VSSSwgR0Vycm9yKiBlcnJvcikKKyAgICB2aXJ0dWFsIHZvaWQgbG9hZEZh
aWxlZChjb25zdCBnY2hhciogZmFpbGluZ1VSSSwgR0Vycm9yKiBlcnJvcikKICAgICB7CiAgICAg
ICAgIGdfYXNzZXJ0KGdfZXJyb3JfbWF0Y2hlcyhlcnJvciwgV0VCS0lUX05FVFdPUktfRVJST1Is
IFdFQktJVF9ORVRXT1JLX0VSUk9SX0NBTkNFTExFRCkpOwotICAgICAgICBMb2FkVHJhY2tpbmdU
ZXN0Ojpsb2FkRmFpbGVkKGNsaWVudCwgZmFpbGluZ1VSSSwgZXJyb3IpOwotICAgIH0KLSAgICB2
aXJ0dWFsIHZvaWQgbG9hZEZpbmlzaGVkKFdlYktpdFdlYkxvYWRlckNsaWVudCogY2xpZW50KQot
ICAgIHsKLSAgICAgICAgZ19hc3NlcnRfbm90X3JlYWNoZWQoKTsKKyAgICAgICAgTG9hZFRyYWNr
aW5nVGVzdDo6bG9hZEZhaWxlZChmYWlsaW5nVVJJLCBlcnJvcik7CiAgICAgfQogfTsKIApAQCAt
MTE4LDEwICsxMTUsMTEgQEAgc3RhdGljIHZvaWQgdGVzdExvYWRDYW5jZWxsZWQoTG9hZFN0b3BU
cmFja2luZ1Rlc3QqIHRlc3QsIGdjb25zdHBvaW50ZXIpCiAgICAgdGVzdC0+d2FpdFVudGlsTG9h
ZEZpbmlzaGVkKCk7CiAKICAgICBWZWN0b3I8TG9hZFRyYWNraW5nVGVzdDo6TG9hZEV2ZW50cz4m
IGV2ZW50cyA9IHRlc3QtPm1fbG9hZEV2ZW50czsKLSAgICBnX2Fzc2VydF9jbXBpbnQoZXZlbnRz
LnNpemUoKSwgPT0sIDMpOworICAgIGdfYXNzZXJ0X2NtcGludChldmVudHMuc2l6ZSgpLCA9PSwg
NCk7CiAgICAgZ19hc3NlcnRfY21waW50KGV2ZW50c1swXSwgPT0sIExvYWRUcmFja2luZ1Rlc3Q6
OlByb3Zpc2lvbmFsTG9hZFN0YXJ0ZWQpOwogICAgIGdfYXNzZXJ0X2NtcGludChldmVudHNbMV0s
ID09LCBMb2FkVHJhY2tpbmdUZXN0OjpMb2FkQ29tbWl0dGVkKTsKICAgICBnX2Fzc2VydF9jbXBp
bnQoZXZlbnRzWzJdLCA9PSwgTG9hZFRyYWNraW5nVGVzdDo6TG9hZEZhaWxlZCk7CisgICAgZ19h
c3NlcnRfY21waW50KGV2ZW50c1szXSwgPT0sIExvYWRUcmFja2luZ1Rlc3Q6OkxvYWRGaW5pc2hl
ZCk7CiB9CiAKIHN0YXRpYyB2b2lkIHRlc3RXZWJWaWV3VGl0bGUoTG9hZFRyYWNraW5nVGVzdCog
dGVzdCwgZ2NvbnN0cG9pbnRlcikKQEAgLTE3MSwyNSArMTY5LDI1IEBAIHB1YmxpYzoKICAgICAg
ICAgZ19zaWduYWxfY29ubmVjdChtX3dlYlZpZXcsICJub3RpZnk6OnVyaSIsIEdfQ0FMTEJBQ0so
dXJpQ2hhbmdlZCksIHRoaXMpOwogICAgIH0KIAotICAgIHZvaWQgcHJvdmlzaW9uYWxMb2FkU3Rh
cnRlZChXZWJLaXRXZWJMb2FkZXJDbGllbnQqKQorICAgIHZvaWQgcHJvdmlzaW9uYWxMb2FkU3Rh
cnRlZCgpCiAgICAgewogICAgICAgICBjaGVja0FjdGl2ZVVSSSgiL3JlZGlyZWN0Iik7CiAgICAg
fQogCi0gICAgdm9pZCBwcm92aXNpb25hbExvYWRSZWNlaXZlZFNlcnZlclJlZGlyZWN0KFdlYktp
dFdlYkxvYWRlckNsaWVudCopCisgICAgdm9pZCBwcm92aXNpb25hbExvYWRSZWNlaXZlZFNlcnZl
clJlZGlyZWN0KCkKICAgICB7CiAgICAgICAgIGNoZWNrQWN0aXZlVVJJKCIvbm9ybWFsIik7CiAg
ICAgfQogCi0gICAgdm9pZCBsb2FkQ29tbWl0dGVkKFdlYktpdFdlYkxvYWRlckNsaWVudCopCisg
ICAgdm9pZCBsb2FkQ29tbWl0dGVkKCkKICAgICB7CiAgICAgICAgIGNoZWNrQWN0aXZlVVJJKCIv
bm9ybWFsIik7CiAgICAgfQogCi0gICAgdm9pZCBsb2FkRmluaXNoZWQoV2ViS2l0V2ViTG9hZGVy
Q2xpZW50KiBjbGllbnQpCisgICAgdm9pZCBsb2FkRmluaXNoZWQoKQogICAgIHsKICAgICAgICAg
Y2hlY2tBY3RpdmVVUkkoIi9ub3JtYWwiKTsKLSAgICAgICAgTG9hZFRyYWNraW5nVGVzdDo6bG9h
ZEZpbmlzaGVkKGNsaWVudCk7CisgICAgICAgIExvYWRUcmFja2luZ1Rlc3Q6OmxvYWRGaW5pc2hl
ZCgpOwogICAgIH0KIAogICAgIENTdHJpbmcgbV9hY3RpdmVVUkk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay90ZXN0cy9UZXN0V2ViS2l0V2ViVmlldy5jcHAg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay90ZXN0cy9UZXN0V2ViS2l0V2ViVmll
dy5jcHAKaW5kZXggYWUwNDU1Ni4uNWRjYmFkZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9ndGsvdGVzdHMvVGVzdFdlYktpdFdlYlZpZXcuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL3Rlc3RzL1Rlc3RXZWJLaXRXZWJWaWV3LmNwcApA
QCAtMzgsMTYgKzM4LDYgQEAgc3RhdGljIHZvaWQgdGVzdFdlYlZpZXdDdXN0b21DaGFyc2V0KFdl
YlZpZXdUZXN0KiB0ZXN0LCBnY29uc3Rwb2ludGVyKQogICAgIGdfYXNzZXJ0KCF3ZWJraXRfd2Vi
X3ZpZXdfZ2V0X2N1c3RvbV9jaGFyc2V0KHRlc3QtPm1fd2ViVmlldykpOwogfQogCi1zdGF0aWMg
dm9pZCB0ZXN0V2ViVmlld3NTaGFyZUNsaWVudHMoVGVzdCogdGVzdCwgZ2NvbnN0cG9pbnRlcikK
LXsKLSAgICBHUmVmUHRyPEd0a1dpZGdldD4gd2ViVmlldzEgPSB3ZWJraXRfd2ViX3ZpZXdfbmV3
KCk7Ci0gICAgR1JlZlB0cjxHdGtXaWRnZXQ+IHdlYlZpZXcyID0gd2Via2l0X3dlYl92aWV3X25l
dygpOwotICAgIFdlYktpdFdlYkxvYWRlckNsaWVudCogY2xpZW50MSA9IHdlYmtpdF93ZWJfdmll
d19nZXRfbG9hZGVyX2NsaWVudChXRUJLSVRfV0VCX1ZJRVcod2ViVmlldzEuZ2V0KCkpKTsKLSAg
ICBXZWJLaXRXZWJMb2FkZXJDbGllbnQqIGNsaWVudDIgPSB3ZWJraXRfd2ViX3ZpZXdfZ2V0X2xv
YWRlcl9jbGllbnQoV0VCS0lUX1dFQl9WSUVXKHdlYlZpZXcyLmdldCgpKSk7Ci0gICAgZ19hc3Nl
cnQoY2xpZW50MSk7Ci0gICAgZ19hc3NlcnQoY2xpZW50MSA9PSBjbGllbnQyKTsKLX0KLQogc3Rh
dGljIHZvaWQgdGVzdFdlYlZpZXdTZXR0aW5ncyhXZWJWaWV3VGVzdCogdGVzdCwgZ2NvbnN0cG9p
bnRlcikKIHsKICAgICBXZWJLaXRTZXR0aW5ncyogZGVmYXVsdFNldHRpbmdzID0gd2Via2l0X3dl
Yl92aWV3X2dldF9zZXR0aW5ncyh0ZXN0LT5tX3dlYlZpZXcpOwpAQCAtMzUxLDcgKzM0MSw2IEBA
IHZvaWQgYmVmb3JlQWxsKCkKIHsKICAgICBXZWJWaWV3VGVzdDo6YWRkKCJXZWJLaXRXZWJWaWV3
IiwgImRlZmF1bHQtY29udGV4dCIsIHRlc3RXZWJWaWV3RGVmYXVsdENvbnRleHQpOwogICAgIFdl
YlZpZXdUZXN0OjphZGQoIldlYktpdFdlYlZpZXciLCAiY3VzdG9tLWNoYXJzZXQiLCB0ZXN0V2Vi
Vmlld0N1c3RvbUNoYXJzZXQpOwotICAgIFRlc3Q6OmFkZCgiV2ViS2l0V2ViVmlldyIsICJ3ZWJ2
aWV3cy1zaGFyZS1jbGllbnRzIiwgdGVzdFdlYlZpZXdzU2hhcmVDbGllbnRzKTsKICAgICBXZWJW
aWV3VGVzdDo6YWRkKCJXZWJLaXRXZWJWaWV3IiwgInNldHRpbmdzIiwgdGVzdFdlYlZpZXdTZXR0
aW5ncyk7CiAgICAgVUlDbGllbnRUZXN0OjphZGQoIldlYktpdFdlYlZpZXciLCAiY3JlYXRlLXJl
YWR5LWNsb3NlIiwgdGVzdFdlYlZpZXdDcmVhdGVSZWFkeUNsb3NlKTsKICAgICBVSUNsaWVudFRl
c3Q6OmFkZCgiV2ViS2l0V2ViVmlldyIsICJqYXZhc2NyaXB0LWRpYWxvZ3MiLCB0ZXN0V2ViVmll
d0phdmFTY3JpcHREaWFsb2dzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvZ3RrL3dlYmtpdDIuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL3dl
YmtpdDIuaAppbmRleCAzYTRhZjRjLi5hYjBlMGE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL2d0ay93ZWJraXQyLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9ndGsvd2Via2l0Mi5oCkBAIC0zMiw3ICszMiw2IEBACiAjaW5jbHVkZSA8d2Via2l0
Mi9XZWJLaXRVUklSZXF1ZXN0Lmg+CiAjaW5jbHVkZSA8d2Via2l0Mi9XZWJLaXRVUklSZXNwb25z
ZS5oPgogI2luY2x1ZGUgPHdlYmtpdDIvV2ViS2l0V2ViQ29udGV4dC5oPgotI2luY2x1ZGUgPHdl
YmtpdDIvV2ViS2l0V2ViTG9hZGVyQ2xpZW50Lmg+CiAjaW5jbHVkZSA8d2Via2l0Mi9XZWJLaXRX
ZWJWaWV3QmFzZS5oPgogI2luY2x1ZGUgPHdlYmtpdDIvV2ViS2l0V2ViVmlldy5oPgogI2luY2x1
ZGUgPHdlYmtpdDIvV2ViS2l0V2luZG93UHJvcGVydGllcy5oPgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvd2Via2l0Mm1hcnNoYWwubGlzdCBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL3dlYmtpdDJtYXJzaGFsLmxpc3QKaW5kZXggYzk0ZDlj
Mi4uODljMjUwZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsv
d2Via2l0Mm1hcnNoYWwubGlzdAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0
ay93ZWJraXQybWFyc2hhbC5saXN0CkBAIC0xLDkgKzEsOCBAQAotQk9PTEVBTjpPQkpFQ1QsU1RS
SU5HLFBPSU5URVIKLUJPT0xFQU46T0JKRUNUCitCT09MRUFOOkVOVU0sU1RSSU5HLFBPSU5URVIK
IEJPT0xFQU46U1RSSU5HCiBCT09MRUFOOlNUUklORyxQT0lOVEVSCiBCT09MRUFOOlNUUklORyxT
VFJJTkcsUE9JTlRFUgotQk9PTEVBTjpWT0lECiBPQkpFQ1Q6Vk9JRAorVk9JRDpFTlVNCiBWT0lE
Ok9CSkVDVCxQT0lOVEVSCiAKZGlmZiAtLWdpdCBhL1Rvb2xzL2d0ay9nZW5lcmF0ZS1ndGtkb2Mg
Yi9Ub29scy9ndGsvZ2VuZXJhdGUtZ3RrZG9jCmluZGV4IDc5NzFjMGYuLmRiNWY4M2EgMTAwNzU1
Ci0tLSBhL1Rvb2xzL2d0ay9nZW5lcmF0ZS1ndGtkb2MKKysrIGIvVG9vbHMvZ3RrL2dlbmVyYXRl
LWd0a2RvYwpAQCAtNjEsNiArNjEsNyBAQCBkZWYgZ2V0X3dlYmtpdDJfb3B0aW9ucygpOgogICAg
ICAgICAnaWdub3JlZF9maWxlcyc6IGdsb2IuZ2xvYihzcmNfcGF0aCgnKlByaXZhdGUuaCcpKSAr
IFwKICAgICAgICAgICAgICAgICAgICAgICAgICBnbG9iLmdsb2Ioc3JjX3BhdGgoJ1BhZ2VDbGll
bnRJbXBsLionKSkgKyBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgZ2xvYi5nbG9iKHNyY19w
YXRoKCdXZWJLaXRVSUNsaWVudC4qJykpICsgXAorICAgICAgICAgICAgICAgICAgICAgICAgIGds
b2IuZ2xvYihzcmNfcGF0aCgnV2ViS2l0V2ViTG9hZGVyQ2xpZW50LionKSkgKyBcCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgZ2xvYi5nbG9iKHNyY19wYXRoKCd0ZXN0cy8qLmgnKSkKICAgICB9
KQogICAgIHJldHVybiAoY29tbW9uLmJ1aWxkX3BhdGgoJ1NvdXJjZScsICdXZWJLaXQyJywgJ3dl
YmtpdDJndGstMy4wLnBjJyksIG9wdGlvbnMpCg==
</data>
<flag name="review"
          id="120823"
          type_id="1"
          status="+"
          setter="gustavo"
    />
          </attachment>
      

    </bug>

</bugzilla>