<?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>69814</bug_id>
          
          <creation_ts>2011-10-10 21:25:38 -0700</creation_ts>
          <short_desc>[GTK] [WebKit2] Allow sharing page clients between WebViews</short_desc>
          <delta_ts>2011-10-19 19:15:04 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKitGTK</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Martin Robinson">mrobinson</reporter>
          <assigned_to name="Martin Robinson">mrobinson</assigned_to>
          <cc>cgarcia</cc>
    
    <cc>gustavo</cc>
    
    <cc>xan.lopez</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>481429</commentid>
    <comment_count>0</comment_count>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2011-10-10 21:25:38 -0700</bug_when>
    <thetext>Currently the WebKitWebLoaderClient is structured in such a way that it can only be attached to one WebView. Since C API page client callbacks carry the page as an argument, this restriction doesn&apos;t need to exist. This bug tracks allowing sharing clients between WebViews. This more closely matches the WebKit1 delegates that the Mac port uses and the WebKit2 C API.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>481434</commentid>
    <comment_count>1</comment_count>
      <attachid>110469</attachid>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2011-10-10 21:48:25 -0700</bug_when>
    <thetext>Created attachment 110469
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>481449</commentid>
    <comment_count>2</comment_count>
      <attachid>110474</attachid>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2011-10-10 22:15:00 -0700</bug_when>
    <thetext>Created attachment 110474
Patch also disconnecting new signal handler on fixture destruction</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>481481</commentid>
    <comment_count>3</comment_count>
      <attachid>110474</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2011-10-11 00:35:18 -0700</bug_when>
    <thetext>Comment on attachment 110474
Patch also disconnecting new signal handler on fixture destruction

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

Patch looks good to me, maybe you can use current test instead of making this patch depend on uncomitted patches, so that it can land as soon as it&apos;s reviewed.

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitDefines.h:38
&gt; +typedef struct _WebKitWebView WebKitWebView;
&gt; +typedef struct _WebKitWebViewClass WebKitWebViewClass;
&gt; +
&gt; +typedef struct _WebKitWebLoaderClient        WebKitWebLoaderClient;
&gt; +typedef struct _WebKitWebLoaderClientClass   WebKitWebLoaderClientClass;
&gt; +

This change is unrelated, I prefer typedefs of every instance/class in their own header, or is there a reason to hae all of them here?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>481702</commentid>
    <comment_count>4</comment_count>
      <attachid>110474</attachid>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2011-10-11 10:11:25 -0700</bug_when>
    <thetext>Comment on attachment 110474
Patch also disconnecting new signal handler on fixture destruction

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

&gt;&gt; Source/WebKit2/UIProcess/API/gtk/WebKitDefines.h:38
&gt;&gt; +
&gt; 
&gt; This change is unrelated, I prefer typedefs of every instance/class in their own header, or is there a reason to hae all of them here?

I was unhappy with this change as well, but WebKitWebLoaderClient.h refers to WebKitWebView* and WebKitWebView.h refers to WebKitWebLoaderClient*. If you can think of another way to solve the issue, I&apos;ll give it a shot.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>485186</commentid>
    <comment_count>5</comment_count>
      <attachid>110474</attachid>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2011-10-17 08:57:36 -0700</bug_when>
    <thetext>Comment on attachment 110474
Patch also disconnecting new signal handler on fixture destruction

The patch looks good to me, one suggestion maybe, have a test with a single loader client handling multiple webViews?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>486608</commentid>
    <comment_count>6</comment_count>
      <attachid>110474</attachid>
    <who name="Xan Lopez">xan.lopez</who>
    <bug_when>2011-10-19 01:12:36 -0700</bug_when>
    <thetext>Comment on attachment 110474
Patch also disconnecting new signal handler on fixture destruction

Seems to be basically just moving code around, so looks good to me (without having much context about this stuff yet!). A couple of small comments:

- Seems the estimated progress property could have been moved to the view in a previous patch. Would have made things easier to review?

- I agree with Phil that some code testing the new possibility of multiple views per loader client makes sense.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>487227</commentid>
    <comment_count>7</comment_count>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2011-10-19 19:13:25 -0700</bug_when>
    <thetext>(In reply to comment #6)
&gt; (From update of attachment 110474 [details])
&gt; Seems to be basically just moving code around, so looks good to me (without having much context about this stuff yet!). A couple of small comments:
&gt; - Seems the estimated progress property could have been moved to the view in a previous patch. Would have made things easier to review?
&gt; - I agree with Phil that some code testing the new possibility of multiple views per loader client makes sense.

Thanks for the review. I landed this patch with a new unit test as described.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>487228</commentid>
    <comment_count>8</comment_count>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2011-10-19 19:14:00 -0700</bug_when>
    <thetext>Committed r97920: &lt;http://trac.webkit.org/changeset/97920&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>110469</attachid>
            <date>2011-10-10 21:48:25 -0700</date>
            <delta_ts>2011-10-10 22:14:57 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-69814-20111010214824.patch</filename>
            <type>text/plain</type>
            <size>39838</size>
            <attacher name="Martin Robinson">mrobinson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTcwMTIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCBhMmU5NTU0YTA0MTY3N2Ux
ZDc3OTUwYmZhOGE1ZjU4NWU4OTZhNjJiLi5lMjRjN2M5NDc4MTNiZTIyODBhMDE3OTdmMTQ1ODI5
ZjQ4ZmM5MmY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsMzUgQEAKIDIwMTEtMTAtMTAgIE1hcnRp
biBSb2JpbnNvbiAgPG1yb2JpbnNvbkBpZ2FsaWEuY29tPgogCisgICAgICAgIFtHVEtdIFtXZWJL
aXQyXSBBbGxvdyBzaGFyaW5nIHBhZ2UgY2xpZW50cyBiZXR3ZWVuIFdlYlZpZXdzCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02OTgxNAorCisgICAgICAg
IE5vIGxvbmdlciBhc3NvY2lhdGUgV2ViUGFnZSBjbGllbnQgd3JhcHBlcnMgd2l0aCBhIFdlYktp
dFdlYlZpZXcuIFRoaXMgYWxsb3dzIHRoZQorICAgICAgICBzYW1lIGNsaWVudCB0byBiZSB1c2Vk
IHdpdGggbW9yZSB0aGFuIG9uZSBXZWJLaXRXZWJWaWV3LgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogR05VbWFrZWZpbGUuYW06IEFkZCB0aGUgbmV3
IFdlYktpdFdlYlZpZXdQcml2YXRlIGhlYWRlci4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0
ay9XZWJLaXREZWZpbmVzLmg6IEFkZGVkIHNvbWUgZm9yd2FyZCBkZWNsYXJhdGlvbnMgZm9yIEFQ
SSBjbGFzc2VzLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYkxvYWRlckNs
aWVudC5jcHA6IEMgQVBJIGNhbGxiYWNrcyBub3cgY29udmVydCB0aGVpciBXS1BhZ2VSZWYgYXJn
dW1lbnQKKyAgICAgICAgaW50byBhIFdlYktpdFdlYlZpZXcgZGlyZWN0bHkgYW5kIHBhc3MgaXQg
YXMgYSBwYXJhbWV0ZXIgdG8gc2lnbmFscy4gUmVtb3ZlIHRoZSB3ZWItdmlldyBwcm9wZXJ0eS4K
KyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJMb2FkZXJDbGllbnQuaDogTW92
ZSB0aGUgZXN0aW1hdGVkLXByb2dyZXNzIHByb3BlcnR5IHRvIFdlYktpdFdlYlZpZXcuCisgICAg
ICAgICogVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlldy5jcHA6IEFkZCBhbiBlc3RpbWF0
ZWQtbG9hZC1wcm9ncmVzcyBwcm9wZXJ0eS4KKyAgICAgICAgKHdlYmtpdFdlYlZpZXdDb25zdHJ1
Y3RlZCk6T25seSBhbGxvY2F0ZSBvbmUgZGVmYXVsdCBXZWJLaXRXZWJMb2FkZXJDbGllbnQuCisg
ICAgICAgICh3ZWJraXRXZWJWaWV3R2V0UHJvcGVydHkpOiBBZGQgc3VwcG9ydCBmb3IgdGhlIG5l
dyBwcm9wZXJ0eS4KKyAgICAgICAgKHdlYmtpdF93ZWJfdmlld19jbGFzc19pbml0KTogRGl0dG8u
CisgICAgICAgICh3ZWJraXRXZWJWaWV3U2V0RXN0aW1hdGVkTG9hZFByb2dyZXNzKTogQWRkZWQg
dGhpcyBwcml2YXRlIG1ldGhvZCBzbyB0aGF0IHRoZSBXZWJLaXRXZWJMb2FkZXJDbGllbnQKKyAg
ICAgICAgY2FuIHVwZGF0ZSB0aGUgYXBwcm9wcmlhdGUgV2ViS2l0V2ViVmlldy4KKyAgICAgICAg
KHdlYmtpdF93ZWJfdmlld19zZXRfbG9hZGVyX2NsaWVudCk6IEF0dGFjaCB0aGUgQyBBUEkgY2Fs
bGJhY2tzIGhlcmUgbm93LgorICAgICAgICAod2Via2l0X3dlYl92aWV3X2dldF9lc3RpbWF0ZWRf
bG9hZF9wcm9ncmVzcyk6IE1vdmVkIGZyb20gV2ViS2l0V2ViTG9hZGVyQ2xpZW50LgorICAgICAg
ICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXcuaDogQWRkZWQgbmV3IG1ldGhvZCBk
ZWZpbml0aW9uLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdQcml2
YXRlLmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktp
dERlZmluZXMuaC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay90ZXN0cy9Mb2FkVHJhY2tp
bmdUZXN0LmNwcDogVXBkYXRlZCB0aGUgbG9hZCB0cmFja2luZyB0ZXN0cyBjYWxsYmFja3MgdG8g
dGFrZSB0aGUgbmV3IHBhcmFtZXRlci4KKyAgICAgICAgKExvYWRUcmFja2luZ1Rlc3Q6OkxvYWRU
cmFja2luZ1Rlc3QpOiBMaXN0ZW4gdG8gdGhlIFdlYktpdFdlYlZpZXcgcHJvcGVydHkgbm93Lgor
ICAgICAgICAoTG9hZFRyYWNraW5nVGVzdDo6ZXN0aW1hdGVkUHJvZ3Jlc3NDaGFuZ2VkKToKKyAg
ICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay93ZWJraXQybWFyc2hhbC5saXN0OiBVcGRhdGVkIHRo
ZSBtYXJzaGFsbGVycyBoZXJlLgorCisyMDExLTEwLTEwICBNYXJ0aW4gUm9iaW5zb24gIDxtcm9i
aW5zb25AaWdhbGlhLmNvbT4KKwogICAgICAgICBbR1RLXSBbV2ViS2l0Ml0gTWFrZSBhZGRpbmcg
YW5vdGhlciB1bml0IHRlc3QgZWFzaWVyCiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD02OTQwOQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9HTlVt
YWtlZmlsZS5hbSBiL1NvdXJjZS9XZWJLaXQyL0dOVW1ha2VmaWxlLmFtCmluZGV4IDM2MDQ3MmNm
NzdmNmFlYjZmZDQ3MDZmMTkxNTdlN2NmYzk3NDg4MmYuLjc5OTAwNDU2ZDg3MWM0YjlmMmQwMzRj
YzU4ZDcxYzBmNWY4ZDE5ODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0dOVW1ha2VmaWxl
LmFtCisrKyBiL1NvdXJjZS9XZWJLaXQyL0dOVW1ha2VmaWxlLmFtCkBAIC00NzYsOCArNDc2LDkg
QEAgbGlid2Via2l0Mmd0a19AV0VCS0lUR1RLX0FQSV9NQUpPUl9WRVJTSU9OQF9AV0VCS0lUR1RL
X0FQSV9NSU5PUl9WRVJTSU9OQF9sYV9TT1UKIAlTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L2d0ay9XZWJLaXRXZWJDb250ZXh0UHJpdmF0ZS5oIFwKIAlTb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL2d0ay9XZWJLaXRXZWJMb2FkZXJDbGllbnQuaCBcCiAJU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViTG9hZGVyQ2xpZW50LmNwcCBcCi0JU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlldy5oIFwKIAlTb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3LmNwcCBcCisJU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlldy5oIFwKKwlTb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3UHJpdmF0ZS5oIFwKIAlTb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3QmFzZS5oIFwKIAlTb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3QmFzZS5jcHAgXAogCVNvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdCYXNlUHJpdmF0ZS5oIFwKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdERlZmluZXMuaCBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdERlZmluZXMuaAppbmRleCA3OWIzMzgz
NjBkZGFhYThmMDlmNjU0N2YyZGYxNDU4ZjZmMjE5MzFkLi5kYzMzZGJjNTM2MjNkODM0MDUxNzdh
NzY4MDQyZDFkOWIxNDdhNzQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL2d0ay9XZWJLaXREZWZpbmVzLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9ndGsvV2ViS2l0RGVmaW5lcy5oCkBAIC0zMCw2ICszMCwxMiBAQAogI2lmbmRlZiBXZWJLaXRE
ZWZpbmVzX2gKICNkZWZpbmUgV2ViS2l0RGVmaW5lc19oCiAKK3R5cGVkZWYgc3RydWN0IF9XZWJL
aXRXZWJWaWV3IFdlYktpdFdlYlZpZXc7Cit0eXBlZGVmIHN0cnVjdCBfV2ViS2l0V2ViVmlld0Ns
YXNzIFdlYktpdFdlYlZpZXdDbGFzczsKKwordHlwZWRlZiBzdHJ1Y3QgX1dlYktpdFdlYkxvYWRl
ckNsaWVudCAgICAgICAgV2ViS2l0V2ViTG9hZGVyQ2xpZW50OwordHlwZWRlZiBzdHJ1Y3QgX1dl
YktpdFdlYkxvYWRlckNsaWVudENsYXNzICAgV2ViS2l0V2ViTG9hZGVyQ2xpZW50Q2xhc3M7CisK
ICNpbmNsdWRlIDxnbGliLmg+CiAKICNpZmRlZiBHX09TX1dJTjMyCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJMb2FkZXJDbGllbnQuY3BwIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViTG9hZGVyQ2xpZW50LmNw
cAppbmRleCAyYTkwOTAwNDZlMzYwOTZkMjFlYWNhOTBhYzhhNWFlZDdiOGI1YTYyLi4yNTU5NWQ4
NjQ5MzQ2ZTAwMTJlNmNlYTk4ZjZkNTRmOWVhZTM1MmIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJMb2FkZXJDbGllbnQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYkxvYWRlckNsaWVudC5jcHAK
QEAgLTI0LDYgKzI0LDcgQEAKICNpbmNsdWRlICJXZWJLaXRNYXJzaGFsLmgiCiAjaW5jbHVkZSAi
V2ViS2l0UHJpdmF0ZS5oIgogI2luY2x1ZGUgIldlYktpdFdlYlZpZXcuaCIKKyNpbmNsdWRlICJX
ZWJLaXRXZWJWaWV3UHJpdmF0ZS5oIgogI2luY2x1ZGUgIldlYktpdFdlYlZpZXdCYXNlUHJpdmF0
ZS5oIgogI2luY2x1ZGUgPHd0Zi9nb2JqZWN0L0dPd25QdHIuaD4KICNpbmNsdWRlIDx3dGYvZ29i
amVjdC9HUmVmUHRyLmg+CkBAIC00MywxNyArNDQsOCBAQCBlbnVtIHsKICAgICBMQVNUX1NJR05B
TAogfTsKIAotZW51bSB7Ci0gICAgUFJPUF8wLAotCi0gICAgUFJPUF9XRUJfVklFVywKLSAgICBQ
Uk9QX0VTVElNQVRFRF9QUk9HUkVTUwotfTsKLQogc3RydWN0IF9XZWJLaXRXZWJMb2FkZXJDbGll
bnRQcml2YXRlIHsKICAgICBHUmVmUHRyPFdlYktpdFdlYlZpZXc+IHZpZXc7Ci0KLSAgICBnZG91
YmxlIGVzdGltYXRlZFByb2dyZXNzOwogfTsKIAogc3RhdGljIGd1aW50IHNpZ25hbHNbTEFTVF9T
SUdOQUxdID0geyAwLCB9OwpAQCAtNjYsNyArNTgsOCBAQCBzdGF0aWMgdm9pZCBkaWRTdGFydFBy
b3Zpc2lvbmFsTG9hZEZvckZyYW1lKFdLUGFnZVJlZiBwYWdlLCBXS0ZyYW1lUmVmIGZyYW1lLCBX
SwogICAgICAgICByZXR1cm47CiAKICAgICBnYm9vbGVhbiByZXR1cm5WYWx1ZTsKLSAgICBnX3Np
Z25hbF9lbWl0KFdFQktJVF9XRUJfTE9BREVSX0NMSUVOVChjbGllbnRJbmZvKSwgc2lnbmFsc1tQ
Uk9WSVNJT05BTF9MT0FEX1NUQVJURURdLCAwLCAmcmV0dXJuVmFsdWUpOworICAgIFdlYktpdFdl
YlZpZXcqIHdlYlZpZXcgPSBXRUJLSVRfV0VCX1ZJRVcodG9JbXBsKHBhZ2UpLT52aWV3V2lkZ2V0
KCkpOworICAgIGdfc2lnbmFsX2VtaXQoV0VCS0lUX1dFQl9MT0FERVJfQ0xJRU5UKGNsaWVudElu
Zm8pLCBzaWduYWxzW1BST1ZJU0lPTkFMX0xPQURfU1RBUlRFRF0sIDAsIHdlYlZpZXcsICZyZXR1
cm5WYWx1ZSk7CiB9CiAKIHN0YXRpYyB2b2lkIGRpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdEZvclBy
b3Zpc2lvbmFsTG9hZEZvckZyYW1lKFdLUGFnZVJlZiBwYWdlLCBXS0ZyYW1lUmVmIGZyYW1lLCBX
S1R5cGVSZWYgdXNlckRhdGEsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pCkBAIC03NSw3ICs2OCw4
IEBAIHN0YXRpYyB2b2lkIGRpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdEZvclByb3Zpc2lvbmFsTG9h
ZEZvckZyYW1lKFdLUGFnZVJlZiBwYWdlLCBXCiAgICAgICAgIHJldHVybjsKIAogICAgIGdib29s
ZWFuIHJldHVyblZhbHVlOwotICAgIGdfc2lnbmFsX2VtaXQoV0VCS0lUX1dFQl9MT0FERVJfQ0xJ
RU5UKGNsaWVudEluZm8pLCBzaWduYWxzW1BST1ZJU0lPTkFMX0xPQURfUkVDRUlWRURfU0VSVkVS
X1JFRElSRUNUXSwgMCwgJnJldHVyblZhbHVlKTsKKyAgICBXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3
ID0gV0VCS0lUX1dFQl9WSUVXKHRvSW1wbChwYWdlKS0+dmlld1dpZGdldCgpKTsKKyAgICBnX3Np
Z25hbF9lbWl0KFdFQktJVF9XRUJfTE9BREVSX0NMSUVOVChjbGllbnRJbmZvKSwgc2lnbmFsc1tQ
Uk9WSVNJT05BTF9MT0FEX1JFQ0VJVkVEX1NFUlZFUl9SRURJUkVDVF0sIDAsIHdlYlZpZXcsICZy
ZXR1cm5WYWx1ZSk7CiB9CiAKIHN0YXRpYyB2b2lkIGRpZEZhaWxQcm92aXNpb25hbExvYWRXaXRo
RXJyb3JGb3JGcmFtZShXS1BhZ2VSZWYgcGFnZSwgV0tGcmFtZVJlZiBmcmFtZSwgV0tFcnJvclJl
ZiBlcnJvciwgV0tUeXBlUmVmIHVzZXJEYXRhLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKQpAQCAt
ODgsNyArODIsOCBAQCBzdGF0aWMgdm9pZCBkaWRGYWlsUHJvdmlzaW9uYWxMb2FkV2l0aEVycm9y
Rm9yRnJhbWUoV0tQYWdlUmVmIHBhZ2UsIFdLRnJhbWVSZWYgZgogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc291cmNlRXJyb3IuZXJyb3JDb2RlKCks
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzb3Vy
Y2VFcnJvci5sb2NhbGl6ZWREZXNjcmlwdGlvbigpLnV0ZjgoKS5kYXRhKCkpKTsKICAgICBnYm9v
bGVhbiByZXR1cm5WYWx1ZTsKLSAgICBnX3NpZ25hbF9lbWl0KFdFQktJVF9XRUJfTE9BREVSX0NM
SUVOVChjbGllbnRJbmZvKSwgc2lnbmFsc1tQUk9WSVNJT05BTF9MT0FEX0ZBSUxFRF0sIDAsIHJl
c291cmNlRXJyb3IuZmFpbGluZ1VSTCgpLnV0ZjgoKS5kYXRhKCksCisgICAgV2ViS2l0V2ViVmll
dyogd2ViVmlldyA9IFdFQktJVF9XRUJfVklFVyh0b0ltcGwocGFnZSktPnZpZXdXaWRnZXQoKSk7
CisgICAgZ19zaWduYWxfZW1pdChXRUJLSVRfV0VCX0xPQURFUl9DTElFTlQoY2xpZW50SW5mbyks
IHNpZ25hbHNbUFJPVklTSU9OQUxfTE9BRF9GQUlMRURdLCAwLCB3ZWJWaWV3LCByZXNvdXJjZUVy
cm9yLmZhaWxpbmdVUkwoKS51dGY4KCkuZGF0YSgpLAogICAgICAgICAgICAgICAgICAgd2ViRXJy
b3IuZ2V0KCksICZyZXR1cm5WYWx1ZSk7CiB9CiAKQEAgLTk4LDcgKzkzLDggQEAgc3RhdGljIHZv
aWQgZGlkQ29tbWl0TG9hZEZvckZyYW1lKFdLUGFnZVJlZiBwYWdlLCBXS0ZyYW1lUmVmIGZyYW1l
LCBXS1R5cGVSZWYgdXMKICAgICAgICAgcmV0dXJuOwogCiAgICAgZ2Jvb2xlYW4gcmV0dXJuVmFs
dWU7Ci0gICAgZ19zaWduYWxfZW1pdChXRUJLSVRfV0VCX0xPQURFUl9DTElFTlQoY2xpZW50SW5m
byksIHNpZ25hbHNbTE9BRF9DT01NSVRURURdLCAwLCAmcmV0dXJuVmFsdWUpOworICAgIFdlYktp
dFdlYlZpZXcqIHdlYlZpZXcgPSBXRUJLSVRfV0VCX1ZJRVcodG9JbXBsKHBhZ2UpLT52aWV3V2lk
Z2V0KCkpOworICAgIGdfc2lnbmFsX2VtaXQoV0VCS0lUX1dFQl9MT0FERVJfQ0xJRU5UKGNsaWVu
dEluZm8pLCBzaWduYWxzW0xPQURfQ09NTUlUVEVEXSwgMCwgd2ViVmlldywgICZyZXR1cm5WYWx1
ZSk7CiB9CiAKIHN0YXRpYyB2b2lkIGRpZEZpbmlzaExvYWRGb3JGcmFtZShXS1BhZ2VSZWYgcGFn
ZSwgV0tGcmFtZVJlZiBmcmFtZSwgV0tUeXBlUmVmIHVzZXJEYXRhLCBjb25zdCB2b2lkKiBjbGll
bnRJbmZvKQpAQCAtMTA3LDcgKzEwMyw4IEBAIHN0YXRpYyB2b2lkIGRpZEZpbmlzaExvYWRGb3JG
cmFtZShXS1BhZ2VSZWYgcGFnZSwgV0tGcmFtZVJlZiBmcmFtZSwgV0tUeXBlUmVmIHVzCiAgICAg
ICAgIHJldHVybjsKIAogICAgIGdib29sZWFuIHJldHVyblZhbHVlOwotICAgIGdfc2lnbmFsX2Vt
aXQoV0VCS0lUX1dFQl9MT0FERVJfQ0xJRU5UKGNsaWVudEluZm8pLCBzaWduYWxzW0xPQURfRklO
SVNIRURdLCAwLCAmcmV0dXJuVmFsdWUpOworICAgIFdlYktpdFdlYlZpZXcqIHdlYlZpZXcgPSBX
RUJLSVRfV0VCX1ZJRVcodG9JbXBsKHBhZ2UpLT52aWV3V2lkZ2V0KCkpOworICAgIGdfc2lnbmFs
X2VtaXQoV0VCS0lUX1dFQl9MT0FERVJfQ0xJRU5UKGNsaWVudEluZm8pLCBzaWduYWxzW0xPQURf
RklOSVNIRURdLCAwLCB3ZWJWaWV3LCAmcmV0dXJuVmFsdWUpOwogfQogCiBzdGF0aWMgdm9pZCBk
aWRGYWlsTG9hZFdpdGhFcnJvckZvckZyYW1lKFdLUGFnZVJlZiBwYWdlLCBXS0ZyYW1lUmVmIGZy
YW1lLCBXS0Vycm9yUmVmIGVycm9yLCBXS1R5cGVSZWYsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8p
CkBAIC0xMjAsNjEgKzExNyw1MiBAQCBzdGF0aWMgdm9pZCBkaWRGYWlsTG9hZFdpdGhFcnJvckZv
ckZyYW1lKFdLUGFnZVJlZiBwYWdlLCBXS0ZyYW1lUmVmIGZyYW1lLCBXS0VycgogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc291cmNlRXJyb3IuZXJy
b3JDb2RlKCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgcmVzb3VyY2VFcnJvci5sb2NhbGl6ZWREZXNjcmlwdGlvbigpLnV0ZjgoKS5kYXRhKCkpKTsK
ICAgICBnYm9vbGVhbiByZXR1cm5WYWx1ZTsKLSAgICBnX3NpZ25hbF9lbWl0KFdFQktJVF9XRUJf
TE9BREVSX0NMSUVOVChjbGllbnRJbmZvKSwgc2lnbmFsc1tMT0FEX0ZBSUxFRF0sIDAsIHJlc291
cmNlRXJyb3IuZmFpbGluZ1VSTCgpLnV0ZjgoKS5kYXRhKCksCi0gICAgICAgICAgICAgICAgICB3
ZWJFcnJvci5nZXQoKSwgJnJldHVyblZhbHVlKTsKKyAgICBXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3
ID0gV0VCS0lUX1dFQl9WSUVXKHRvSW1wbChwYWdlKS0+dmlld1dpZGdldCgpKTsKKyAgICBnX3Np
Z25hbF9lbWl0KFdFQktJVF9XRUJfTE9BREVSX0NMSUVOVChjbGllbnRJbmZvKSwgc2lnbmFsc1tM
T0FEX0ZBSUxFRF0sIDAsIHdlYlZpZXcsCisgICAgICAgICAgICAgICAgICByZXNvdXJjZUVycm9y
LmZhaWxpbmdVUkwoKS51dGY4KCkuZGF0YSgpLCB3ZWJFcnJvci5nZXQoKSwgJnJldHVyblZhbHVl
KTsKIH0KIAogc3RhdGljIHZvaWQgZGlkQ2hhbmdlUHJvZ3Jlc3MoV0tQYWdlUmVmIHBhZ2UsIGNv
bnN0IHZvaWQqIGNsaWVudEluZm8pCiB7Ci0gICAgV2ViS2l0V2ViTG9hZGVyQ2xpZW50KiBjbGll
bnQgPSBXRUJLSVRfV0VCX0xPQURFUl9DTElFTlQoY2xpZW50SW5mbyk7Ci0gICAgZ2RvdWJsZSBl
c3RpbWF0ZWRQcm9ncmVzcyA9IFdLUGFnZUdldEVzdGltYXRlZFByb2dyZXNzKHBhZ2UpOwotCi0g
ICAgaWYgKGNsaWVudC0+cHJpdi0+ZXN0aW1hdGVkUHJvZ3Jlc3MgPT0gZXN0aW1hdGVkUHJvZ3Jl
c3MpCi0gICAgICAgIHJldHVybjsKLQotICAgIGNsaWVudC0+cHJpdi0+ZXN0aW1hdGVkUHJvZ3Jl
c3MgPSBlc3RpbWF0ZWRQcm9ncmVzczsKLSAgICBnX29iamVjdF9ub3RpZnkoR19PQkpFQ1QoY2xp
ZW50SW5mbyksICJlc3RpbWF0ZWQtcHJvZ3Jlc3MiKTsKKyAgICBXZWJLaXRXZWJWaWV3KiB3ZWJW
aWV3ID0gV0VCS0lUX1dFQl9WSUVXKHRvSW1wbChwYWdlKS0+dmlld1dpZGdldCgpKTsKKyAgICB3
ZWJraXRXZWJWaWV3U2V0RXN0aW1hdGVkTG9hZFByb2dyZXNzKHdlYlZpZXcsIFdLUGFnZUdldEVz
dGltYXRlZFByb2dyZXNzKHBhZ2UpKTsKIH0KIAotc3RhdGljIHZvaWQgd2Via2l0V2ViTG9hZGVy
Q2xpZW50Q29uc3RydWN0ZWQoR09iamVjdCogb2JqZWN0KQordm9pZCBhdHRhY2hMb2FkZXJDbGll
bnRUb1BhZ2UoV0tQYWdlUmVmIHBhZ2UsIFdlYktpdFdlYkxvYWRlckNsaWVudCogY2xpZW50KQog
ewotICAgIFdlYktpdFdlYkxvYWRlckNsaWVudCogY2xpZW50ID0gV0VCS0lUX1dFQl9MT0FERVJf
Q0xJRU5UKG9iamVjdCk7Ci0gICAgV2ViS2l0V2ViTG9hZGVyQ2xpZW50UHJpdmF0ZSogcHJpdiA9
IGNsaWVudC0+cHJpdjsKLQogICAgIFdLUGFnZUxvYWRlckNsaWVudCBsb2FkZXJDbGllbnQgPSB7
CiAgICAgICAgIGtXS1BhZ2VMb2FkZXJDbGllbnRDdXJyZW50VmVyc2lvbiwKLSAgICAgICAgY2xp
ZW50LCAgLy8gY2xpZW50SW5mbworICAgICAgICBjbGllbnQsIC8vIGNsaWVudEluZm8KICAgICAg
ICAgZGlkU3RhcnRQcm92aXNpb25hbExvYWRGb3JGcmFtZSwKICAgICAgICAgZGlkUmVjZWl2ZVNl
cnZlclJlZGlyZWN0Rm9yUHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUsCiAgICAgICAgIGRpZEZhaWxQ
cm92aXNpb25hbExvYWRXaXRoRXJyb3JGb3JGcmFtZSwKICAgICAgICAgZGlkQ29tbWl0TG9hZEZv
ckZyYW1lLAotICAgICAgICAwLCAgICAgICAvLyBkaWRGaW5pc2hEb2N1bWVudExvYWRGb3JGcmFt
ZQorICAgICAgICAwLCAvLyBkaWRGaW5pc2hEb2N1bWVudExvYWRGb3JGcmFtZQogICAgICAgICBk
aWRGaW5pc2hMb2FkRm9yRnJhbWUsCiAgICAgICAgIGRpZEZhaWxMb2FkV2l0aEVycm9yRm9yRnJh
bWUsCi0gICAgICAgIDAsICAgICAgIC8vIGRpZFNhbWVEb2N1bWVudE5hdmlnYXRpb25Gb3JGcmFt
ZQotICAgICAgICAwLCAgICAgICAvLyBkaWRSZWNlaXZlVGl0bGVGb3JGcmFtZQotICAgICAgICAw
LCAgICAgICAvLyBkaWRGaXJzdExheW91dEZvckZyYW1lCi0gICAgICAgIDAsICAgICAgIC8vIGRp
ZEZpcnN0VmlzdWFsbHlOb25FbXB0eUxheW91dEZvckZyYW1lCi0gICAgICAgIDAsICAgICAgIC8v
IGRpZFJlbW92ZUZyYW1lRnJvbUhpZXJhcmNoeQotICAgICAgICAwLCAgICAgICAvLyBkaWREaXNw
bGF5SW5zZWN1cmVDb250ZW50Rm9yRnJhbWUKLSAgICAgICAgMCwgICAgICAgLy8gZGlkUnVuSW5z
ZWN1cmVDb250ZW50Rm9yRnJhbWUKLSAgICAgICAgMCwgICAgICAgLy8gY2FuQXV0aGVudGljYXRl
QWdhaW5zdFByb3RlY3Rpb25TcGFjZUluRnJhbWUKLSAgICAgICAgMCwgICAgICAgLy8gZGlkUmVj
ZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlSW5GcmFtZQorICAgICAgICAwLCAvLyBkaWRTYW1l
RG9jdW1lbnROYXZpZ2F0aW9uRm9yRnJhbWUKKyAgICAgICAgMCwgLy8gZGlkUmVjZWl2ZVRpdGxl
Rm9yRnJhbWUKKyAgICAgICAgMCwgLy8gZGlkRmlyc3RMYXlvdXRGb3JGcmFtZQorICAgICAgICAw
LCAvLyBkaWRGaXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXRGb3JGcmFtZQorICAgICAgICAwLCAv
LyBkaWRSZW1vdmVGcmFtZUZyb21IaWVyYXJjaHkKKyAgICAgICAgMCwgLy8gZGlkRGlzcGxheUlu
c2VjdXJlQ29udGVudEZvckZyYW1lCisgICAgICAgIDAsIC8vIGRpZFJ1bkluc2VjdXJlQ29udGVu
dEZvckZyYW1lCisgICAgICAgIDAsIC8vIGNhbkF1dGhlbnRpY2F0ZUFnYWluc3RQcm90ZWN0aW9u
U3BhY2VJbkZyYW1lCisgICAgICAgIDAsIC8vIGRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxs
ZW5nZUluRnJhbWUKICAgICAgICAgZGlkQ2hhbmdlUHJvZ3Jlc3MsIC8vIGRpZFN0YXJ0UHJvZ3Jl
c3MKICAgICAgICAgZGlkQ2hhbmdlUHJvZ3Jlc3MsCiAgICAgICAgIGRpZENoYW5nZVByb2dyZXNz
LCAvLyBkaWRGaW5pc2hQcm9ncmVzcwotICAgICAgICAwLCAgICAgICAvLyBkaWRCZWNvbWVVbnJl
c3BvbnNpdmUKLSAgICAgICAgMCwgICAgICAgLy8gZGlkQmVjb21lUmVzcG9uc2l2ZQotICAgICAg
ICAwLCAgICAgICAvLyBwcm9jZXNzRGlkQ3Jhc2gKLSAgICAgICAgMCwgICAgICAgLy8gZGlkQ2hh
bmdlQmFja0ZvcndhcmRMaXN0Ci0gICAgICAgIDAsICAgICAgIC8vIHNob3VsZEdvVG9CYWNrRm9y
d2FyZExpc3RJdGVtCi0gICAgICAgIDAgICAgICAgIC8vIGRpZEZhaWxUb0luaXRpYWxpemVQbHVn
aW4KKyAgICAgICAgMCwgLy8gZGlkQmVjb21lVW5yZXNwb25zaXZlCisgICAgICAgIDAsIC8vIGRp
ZEJlY29tZVJlc3BvbnNpdmUKKyAgICAgICAgMCwgLy8gcHJvY2Vzc0RpZENyYXNoCisgICAgICAg
IDAsIC8vIGRpZENoYW5nZUJhY2tGb3J3YXJkTGlzdAorICAgICAgICAwLCAvLyBzaG91bGRHb1Rv
QmFja0ZvcndhcmRMaXN0SXRlbQorICAgICAgICAwIC8vIGRpZEZhaWxUb0luaXRpYWxpemVQbHVn
aW4KICAgICB9OwotICAgIFdlYlBhZ2VQcm94eSogcGFnZSA9IHdlYmtpdFdlYlZpZXdCYXNlR2V0
UGFnZShXRUJLSVRfV0VCX1ZJRVdfQkFTRShwcml2LT52aWV3LmdldCgpKSk7Ci0gICAgV0tQYWdl
U2V0UGFnZUxvYWRlckNsaWVudCh0b0FQSShwYWdlKSwgJmxvYWRlckNsaWVudCk7CisgICAgV0tQ
YWdlU2V0UGFnZUxvYWRlckNsaWVudChwYWdlLCAmbG9hZGVyQ2xpZW50KTsKIH0KIAotc3RhdGlj
IGdib29sZWFuIHdlYmtpdFdlYkxvYWRlckNsaWVudExvYWRGYWlsZWQoV2ViS2l0V2ViTG9hZGVy
Q2xpZW50KiBjbGllbnQsIGNvbnN0IGdjaGFyKiBmYWlsaW5nVVJJLCBHRXJyb3IqIGVycm9yKQor
c3RhdGljIGdib29sZWFuIHdlYmtpdFdlYkxvYWRlckNsaWVudExvYWRGYWlsZWQoV2ViS2l0V2Vi
TG9hZGVyQ2xpZW50KiBjbGllbnQsIFdlYktpdFdlYlZpZXcqIHdlYlZpZXcsIGNvbnN0IGdjaGFy
KiBmYWlsaW5nVVJJLCBHRXJyb3IqIGVycm9yKQogewogICAgIGlmIChnX2Vycm9yX21hdGNoZXMo
ZXJyb3IsIFdFQktJVF9ORVRXT1JLX0VSUk9SLCBXRUJLSVRfTkVUV09SS19FUlJPUl9DQU5DRUxM
RUQpCiAgICAgICAgIHx8IGdfZXJyb3JfbWF0Y2hlcyhlcnJvciwgV0VCS0lUX1BPTElDWV9FUlJP
UiwgV0VCS0lUX1BPTElDWV9FUlJPUl9GUkFNRV9MT0FEX0lOVEVSUlVQVEVEX0JZX1BPTElDWV9D
SEFOR0UpCkBAIC0xODIsNDAgKzE3MCwxMSBAQCBzdGF0aWMgZ2Jvb2xlYW4gd2Via2l0V2ViTG9h
ZGVyQ2xpZW50TG9hZEZhaWxlZChXZWJLaXRXZWJMb2FkZXJDbGllbnQqIGNsaWVudCwgYwogICAg
ICAgICByZXR1cm4gRkFMU0U7CiAKICAgICBHT3duUHRyPGNoYXI+IGh0bWxTdHJpbmcoZ19zdHJk
dXBfcHJpbnRmKCI8aHRtbD48Ym9keT4lczwvYm9keT48L2h0bWw+IiwgZXJyb3ItPm1lc3NhZ2Up
KTsKLSAgICB3ZWJraXRfd2ViX3ZpZXdfbG9hZF9hbHRlcm5hdGVfaHRtbChjbGllbnQtPnByaXYt
PnZpZXcuZ2V0KCksIGh0bWxTdHJpbmcuZ2V0KCksIDAsIGZhaWxpbmdVUkkpOworICAgIHdlYmtp
dF93ZWJfdmlld19sb2FkX2FsdGVybmF0ZV9odG1sKHdlYlZpZXcsIGh0bWxTdHJpbmcuZ2V0KCks
IDAsIGZhaWxpbmdVUkkpOwogCiAgICAgcmV0dXJuIFRSVUU7CiB9CiAKLXN0YXRpYyB2b2lkIHdl
YmtpdFdlYkxvYWRlckNsaWVudFNldFByb3BlcnR5KEdPYmplY3QqIG9iamVjdCwgZ3VpbnQgcHJv
cElkLCBjb25zdCBHVmFsdWUqIHZhbHVlLCBHUGFyYW1TcGVjKiBwYXJhbVNwZWMpCi17Ci0gICAg
V2ViS2l0V2ViTG9hZGVyQ2xpZW50KiBjbGllbnQgPSBXRUJLSVRfV0VCX0xPQURFUl9DTElFTlQo
b2JqZWN0KTsKLQotICAgIHN3aXRjaCAocHJvcElkKSB7Ci0gICAgY2FzZSBQUk9QX1dFQl9WSUVX
OgotICAgICAgICBjbGllbnQtPnByaXYtPnZpZXcgPSBhZG9wdEdSZWYoV0VCS0lUX1dFQl9WSUVX
KGdfdmFsdWVfZHVwX29iamVjdCh2YWx1ZSkpKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgZGVmYXVs
dDoKLSAgICAgICAgR19PQkpFQ1RfV0FSTl9JTlZBTElEX1BST1BFUlRZX0lEKG9iamVjdCwgcHJv
cElkLCBwYXJhbVNwZWMpOwotICAgIH0KLX0KLQotc3RhdGljIHZvaWQgd2Via2l0V2ViTG9hZGVy
Q2xpZW50R2V0UHJvcGVydHkoR09iamVjdCogb2JqZWN0LCBndWludCBwcm9wSWQsIEdWYWx1ZSog
dmFsdWUsIEdQYXJhbVNwZWMqIHBhcmFtU3BlYykKLXsKLSAgICBXZWJLaXRXZWJMb2FkZXJDbGll
bnQqIGNsaWVudCA9IFdFQktJVF9XRUJfTE9BREVSX0NMSUVOVChvYmplY3QpOwotCi0gICAgc3dp
dGNoIChwcm9wSWQpIHsKLSAgICBjYXNlIFBST1BfV0VCX1ZJRVc6Ci0gICAgICAgIGdfdmFsdWVf
c2V0X29iamVjdCh2YWx1ZSwgY2xpZW50LT5wcml2LT52aWV3LmdldCgpKTsKLSAgICAgICAgYnJl
YWs7Ci0gICAgY2FzZSBQUk9QX0VTVElNQVRFRF9QUk9HUkVTUzoKLSAgICAgICAgZ192YWx1ZV9z
ZXRfZG91YmxlKHZhbHVlLCB3ZWJraXRfd2ViX2xvYWRlcl9jbGllbnRfZ2V0X2VzdGltYXRlZF9w
cm9ncmVzcyhjbGllbnQpKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgZGVmYXVsdDoKLSAgICAgICAg
R19PQkpFQ1RfV0FSTl9JTlZBTElEX1BST1BFUlRZX0lEKG9iamVjdCwgcHJvcElkLCBwYXJhbVNw
ZWMpOwotICAgIH0KLX0KLQogc3RhdGljIHZvaWQgd2Via2l0V2ViTG9hZGVyQ2xpZW50RmluYWxp
emUoR09iamVjdCogb2JqZWN0KQogewogICAgIFdFQktJVF9XRUJfTE9BREVSX0NMSUVOVChvYmpl
Y3QpLT5wcml2LT5+V2ViS2l0V2ViTG9hZGVyQ2xpZW50UHJpdmF0ZSgpOwpAQCAtMjMyLDQ4ICsx
OTEsMTQgQEAgc3RhdGljIHZvaWQgd2Via2l0X3dlYl9sb2FkZXJfY2xpZW50X2luaXQoV2ViS2l0
V2ViTG9hZGVyQ2xpZW50KiBjbGllbnQpCiBzdGF0aWMgdm9pZCB3ZWJraXRfd2ViX2xvYWRlcl9j
bGllbnRfY2xhc3NfaW5pdChXZWJLaXRXZWJMb2FkZXJDbGllbnRDbGFzcyogY2xpZW50Q2xhc3Mp
CiB7CiAgICAgR09iamVjdENsYXNzKiBvYmplY3RDbGFzcyA9IEdfT0JKRUNUX0NMQVNTKGNsaWVu
dENsYXNzKTsKLQotICAgIG9iamVjdENsYXNzLT5zZXRfcHJvcGVydHkgPSB3ZWJraXRXZWJMb2Fk
ZXJDbGllbnRTZXRQcm9wZXJ0eTsKLSAgICBvYmplY3RDbGFzcy0+Z2V0X3Byb3BlcnR5ID0gd2Vi
a2l0V2ViTG9hZGVyQ2xpZW50R2V0UHJvcGVydHk7Ci0gICAgb2JqZWN0Q2xhc3MtPmNvbnN0cnVj
dGVkID0gd2Via2l0V2ViTG9hZGVyQ2xpZW50Q29uc3RydWN0ZWQ7CiAgICAgb2JqZWN0Q2xhc3Mt
PmZpbmFsaXplID0gd2Via2l0V2ViTG9hZGVyQ2xpZW50RmluYWxpemU7Ci0KICAgICBjbGllbnRD
bGFzcy0+cHJvdmlzaW9uYWxfbG9hZF9mYWlsZWQgPSB3ZWJraXRXZWJMb2FkZXJDbGllbnRMb2Fk
RmFpbGVkOwogICAgIGNsaWVudENsYXNzLT5sb2FkX2ZhaWxlZCA9IHdlYmtpdFdlYkxvYWRlckNs
aWVudExvYWRGYWlsZWQ7CiAKICAgICAvKioKLSAgICAgKiBXZWJLaXRXZWJMb2FkZXJDbGllbnQ6
d2ViLXZpZXc6Ci0gICAgICoKLSAgICAgKiBUaGUgI1dlYktpdFdlYlZpZXcgb2YgdGhlIGxvYWRl
ciBjbGllbnQuCi0gICAgICovCi0gICAgZ19vYmplY3RfY2xhc3NfaW5zdGFsbF9wcm9wZXJ0eShv
YmplY3RDbGFzcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBST1BfV0VC
X1ZJRVcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnX3BhcmFtX3NwZWNf
b2JqZWN0KCJ3ZWItdmlldyIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICJXZWIgVmlldyIsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJUaGUgd2ViIHZpZXcgZm9yIHRoZSBsb2Fk
ZXIgY2xpZW50IiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgV0VCS0lUX1RZUEVfV0VCX1ZJRVcsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRpY19jYXN0PEdQYXJhbUZsYWdz
PihXRUJLSVRfUEFSQU1fUkVBRFdSSVRFIHwgR19QQVJBTV9DT05TVFJVQ1RfT05MWSkpKTsKLSAg
ICAvKioKLSAgICAgKiBXZWJLaXRXZWJMb2FkZXJDbGllbnQ6ZXN0aW1hdGVkLXByb2dyZXNzOgot
ICAgICAqCi0gICAgICogQW4gZXN0aW1hdGUgb2YgdGhlIHBlcmNlbnQgY29tcGxldGlvbiBmb3Ig
dGhlIGN1cnJlbnQgbG9hZGluZyBvcGVyYXRpb24uCi0gICAgICogVGhpcyB2YWx1ZSB3aWxsIHJh
bmdlIGZyb20gMC4wIHRvIDEuMCBhbmQsIG9uY2UgYSBsb2FkIGNvbXBsZXRlcywKLSAgICAgKiB3
aWxsIHJlbWFpbiBhdCAxLjAgdW50aWwgYSBuZXcgbG9hZCBzdGFydHMsIGF0IHdoaWNoIHBvaW50
IGl0Ci0gICAgICogd2lsbCBiZSByZXNldCB0byAwLjAuCi0gICAgICogVGhlIHZhbHVlIGlzIGFu
IGVzdGltYXRlIGJhc2VkIG9uIHRoZSB0b3RhbCBudW1iZXIgb2YgYnl0ZXMgZXhwZWN0ZWQKLSAg
ICAgKiB0byBiZSByZWNlaXZlZCBmb3IgYSBkb2N1bWVudCwgaW5jbHVkaW5nIGFsbCBpdHMgcG9z
c2libGUgc3VicmVzb3VyY2VzLgotICAgICAqLwotICAgIGdfb2JqZWN0X2NsYXNzX2luc3RhbGxf
cHJvcGVydHkob2JqZWN0Q2xhc3MsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBQUk9QX0VTVElNQVRFRF9QUk9HUkVTUywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGdfcGFyYW1fc3BlY19kb3VibGUoImVzdGltYXRlZC1wcm9ncmVzcyIsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJFc3RpbWF0
ZWQgUHJvZ3Jlc3MiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAiQW4gZXN0aW1hdGUgb2YgdGhlIHBlcmNlbnQgY29tcGxldGlvbiBmb3Ig
YSBkb2N1bWVudCBsb2FkIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgMC4wLCAxLjAsIDAuMCwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV0VCS0lUX1BBUkFNX1JFQURBQkxFKSk7
Ci0KLSAgICAvKioKICAgICAgKiBXZWJLaXRXZWJMb2FkZXJDbGllbnQ6OnByb3Zpc2lvbmFsLWxv
YWQtc3RhcnRlZDoKICAgICAgKiBAbG9hZGVyX2NsaWVudDogdGhlICNXZWJLaXRXZWJMb2FkZXJD
bGllbnQKKyAgICAgKiBAd2ViX3ZpZXc6IHRoZSAjV2ViS2l0V2ViVmlldyBhc3NvY2lhdGVkIHdp
dGggdGhpcyBldmVudAogICAgICAqCiAgICAgICogVGhpcyBzaWduYWwgaXMgZW1pdHRlZCB3aGVu
IG5ldyBsb2FkIHJlcXVlc3QgaXMgbWFkZS4KICAgICAgKiBObyBkYXRhIGhhcyBiZWVuIHJlY2Vp
dmVkIHlldCwgZW1wdHkgc3RydWN0dXJlcyBoYXZlCkBAIC0yOTAsMTMgKzIxNSwxNCBAQCBzdGF0
aWMgdm9pZCB3ZWJraXRfd2ViX2xvYWRlcl9jbGllbnRfY2xhc3NfaW5pdChXZWJLaXRXZWJMb2Fk
ZXJDbGllbnRDbGFzcyogY2xpZQogICAgICAgICAgICAgICAgICAgICAgR19TSUdOQUxfUlVOX0xB
U1QsCiAgICAgICAgICAgICAgICAgICAgICBHX1NUUlVDVF9PRkZTRVQoV2ViS2l0V2ViTG9hZGVy
Q2xpZW50Q2xhc3MsIHByb3Zpc2lvbmFsX2xvYWRfc3RhcnRlZCksCiAgICAgICAgICAgICAgICAg
ICAgICBnX3NpZ25hbF9hY2N1bXVsYXRvcl90cnVlX2hhbmRsZWQsIE5VTEwsCi0gICAgICAgICAg
ICAgICAgICAgICB3ZWJraXRfbWFyc2hhbF9CT09MRUFOX19WT0lELAotICAgICAgICAgICAgICAg
ICAgICAgR19UWVBFX0JPT0xFQU4sIDAsCi0gICAgICAgICAgICAgICAgICAgICBHX1RZUEVfTk9O
RSk7CisgICAgICAgICAgICAgICAgICAgICB3ZWJraXRfbWFyc2hhbF9CT09MRUFOX19PQkpFQ1Qs
CisgICAgICAgICAgICAgICAgICAgICBHX1RZUEVfQk9PTEVBTiwgMSwKKyAgICAgICAgICAgICAg
ICAgICAgIFdFQktJVF9UWVBFX1dFQl9WSUVXKTsKIAogICAgIC8qKgogICAgICAqIFdlYktpdFdl
YkxvYWRlckNsaWVudDo6cHJvdmlzaW9uYWwtbG9hZC1yZWNlaXZlZC1zZXJ2ZXItcmVkaXJlY3Q6
CiAgICAgICogQGxvYWRlcl9jbGllbnQ6IHRoZSAjV2ViS2l0V2ViTG9hZGVyQ2xpZW50CisgICAg
ICogQHdlYl92aWV3OiB0aGUgI1dlYktpdFdlYlZpZXcgYXNzb2NpYXRlZCB3aXRoIHRoaXMgZXZl
bnQKICAgICAgKgogICAgICAqIFRoaXMgc2lnbmFsIGlzIGVtaXR0ZWQgd2hlbiBhIHByb3Zpc2lv
bmFsIGRhdGEgc291cmNlCiAgICAgICogcmVjZWl2ZXMgYSBzZXJ2ZXIgcmVkaXJlY3QuCkBAIC0z
MTIsMTMgKzIzOCwxNCBAQCBzdGF0aWMgdm9pZCB3ZWJraXRfd2ViX2xvYWRlcl9jbGllbnRfY2xh
c3NfaW5pdChXZWJLaXRXZWJMb2FkZXJDbGllbnRDbGFzcyogY2xpZQogICAgICAgICAgICAgICAg
ICAgICAgR19TSUdOQUxfUlVOX0xBU1QsCiAgICAgICAgICAgICAgICAgICAgICBHX1NUUlVDVF9P
RkZTRVQoV2ViS2l0V2ViTG9hZGVyQ2xpZW50Q2xhc3MsIHByb3Zpc2lvbmFsX2xvYWRfcmVjZWl2
ZWRfc2VydmVyX3JlZGlyZWN0KSwKICAgICAgICAgICAgICAgICAgICAgIGdfc2lnbmFsX2FjY3Vt
dWxhdG9yX3RydWVfaGFuZGxlZCwgTlVMTCwKLSAgICAgICAgICAgICAgICAgICAgIHdlYmtpdF9t
YXJzaGFsX0JPT0xFQU5fX1ZPSUQsCi0gICAgICAgICAgICAgICAgICAgICBHX1RZUEVfQk9PTEVB
TiwgMCwKLSAgICAgICAgICAgICAgICAgICAgIEdfVFlQRV9OT05FKTsKKyAgICAgICAgICAgICAg
ICAgICAgIHdlYmtpdF9tYXJzaGFsX0JPT0xFQU5fX09CSkVDVCwKKyAgICAgICAgICAgICAgICAg
ICAgIEdfVFlQRV9CT09MRUFOLCAxLAorICAgICAgICAgICAgICAgICAgICAgV0VCS0lUX1RZUEVf
V0VCX1ZJRVcpOwogCiAgICAgLyoqCiAgICAgICogV2ViS2l0V2ViTG9hZGVyQ2xpZW50Ojpwcm92
aXNpb25hbC1sb2FkLWZhaWxlZDoKICAgICAgKiBAbG9hZGVyX2NsaWVudDogdGhlICNXZWJLaXRX
ZWJMb2FkZXJDbGllbnQKKyAgICAgKiBAd2ViX3ZpZXc6IHRoZSAjV2ViS2l0V2ViVmlldyBhc3Nv
Y2lhdGVkIHdpdGggdGhpcyBldmVudAogICAgICAqIEBlcnJvcjogdGhlICNHRXJyb3IgdGhhdCB3
YXMgdHJpZ2dlcmVkCiAgICAgICoKICAgICAgKiBUaGlzIHNpZ25hbCBpcyBlbWl0dGVkIHdoZW4g
YW4gZXJyb3Igb2NjdXJzIHdoZW4gc3RhcnRpbmcgdG8KQEAgLTMzOCwxNCArMjY1LDE2IEBAIHN0
YXRpYyB2b2lkIHdlYmtpdF93ZWJfbG9hZGVyX2NsaWVudF9jbGFzc19pbml0KFdlYktpdFdlYkxv
YWRlckNsaWVudENsYXNzKiBjbGllCiAgICAgICAgICAgICAgICAgICAgICBHX1NJR05BTF9SVU5f
TEFTVCwKICAgICAgICAgICAgICAgICAgICAgIEdfU1RSVUNUX09GRlNFVChXZWJLaXRXZWJMb2Fk
ZXJDbGllbnRDbGFzcywgcHJvdmlzaW9uYWxfbG9hZF9mYWlsZWQpLAogICAgICAgICAgICAgICAg
ICAgICAgZ19zaWduYWxfYWNjdW11bGF0b3JfdHJ1ZV9oYW5kbGVkLCBOVUxMLAotICAgICAgICAg
ICAgICAgICAgICAgd2Via2l0X21hcnNoYWxfQk9PTEVBTl9fU1RSSU5HX1BPSU5URVIsCi0gICAg
ICAgICAgICAgICAgICAgICBHX1RZUEVfQk9PTEVBTiwgMiwKKyAgICAgICAgICAgICAgICAgICAg
IHdlYmtpdF9tYXJzaGFsX0JPT0xFQU5fX09CSkVDVF9TVFJJTkdfUE9JTlRFUiwKKyAgICAgICAg
ICAgICAgICAgICAgIEdfVFlQRV9CT09MRUFOLCAzLAorICAgICAgICAgICAgICAgICAgICAgV0VC
S0lUX1RZUEVfV0VCX1ZJRVcsCiAgICAgICAgICAgICAgICAgICAgICBHX1RZUEVfU1RSSU5HLAog
ICAgICAgICAgICAgICAgICAgICAgR19UWVBFX1BPSU5URVIpOwogCiAgICAgLyoqCiAgICAgICog
V2ViS2l0V2ViTG9hZGVyQ2xpZW50Ojpsb2FkLWNvbW1pdHRlZDoKICAgICAgKiBAbG9hZGVyX2Ns
aWVudDogdGhlICNXZWJLaXRXZWJMb2FkZXJDbGllbnQKKyAgICAgKiBAd2ViX3ZpZXc6IHRoZSAj
V2ViS2l0V2ViVmlldyBhc3NvY2lhdGVkIHdpdGggdGhpcyBldmVudAogICAgICAqCiAgICAgICog
VGhpcyBzaWduYWwgaXMgZW1pdHRlZCB3aGVuIGNvbnRlbnQgc3RhcnRzIGFycml2aW5nIGZvciBh
IHBhZ2UgbG9hZC4KICAgICAgKiBUaGUgbmVjZXNzYXJ5IHRyYW5zcG9ydCByZXF1aXJlbWVudHMg
YXJlIHN0YWJpbGlzaGVkLCBhbmQgdGhlCkBAIC0zNjIsMTIgKzI5MSwxMyBAQCBzdGF0aWMgdm9p
ZCB3ZWJraXRfd2ViX2xvYWRlcl9jbGllbnRfY2xhc3NfaW5pdChXZWJLaXRXZWJMb2FkZXJDbGll
bnRDbGFzcyogY2xpZQogICAgICAgICAgICAgICAgICAgICAgR19TSUdOQUxfUlVOX0xBU1QsCiAg
ICAgICAgICAgICAgICAgICAgICBHX1NUUlVDVF9PRkZTRVQoV2ViS2l0V2ViTG9hZGVyQ2xpZW50
Q2xhc3MsIGxvYWRfY29tbWl0dGVkKSwKICAgICAgICAgICAgICAgICAgICAgIGdfc2lnbmFsX2Fj
Y3VtdWxhdG9yX3RydWVfaGFuZGxlZCwgTlVMTCwKLSAgICAgICAgICAgICAgICAgICAgIHdlYmtp
dF9tYXJzaGFsX0JPT0xFQU5fX1ZPSUQsCi0gICAgICAgICAgICAgICAgICAgICBHX1RZUEVfQk9P
TEVBTiwgMCwKLSAgICAgICAgICAgICAgICAgICAgIEdfVFlQRV9OT05FKTsKKyAgICAgICAgICAg
ICAgICAgICAgIHdlYmtpdF9tYXJzaGFsX0JPT0xFQU5fX09CSkVDVCwKKyAgICAgICAgICAgICAg
ICAgICAgIEdfVFlQRV9CT09MRUFOLCAxLAorICAgICAgICAgICAgICAgICAgICAgV0VCS0lUX1RZ
UEVfV0VCX1ZJRVcpOwogICAgIC8qKgogICAgICAqIFdlYktpdFdlYkxvYWRlckNsaWVudDo6bG9h
ZC1maW5pc2hlZDoKICAgICAgKiBAbG9hZGVyX2NsaWVudDogdGhlICNXZWJLaXRXZWJMb2FkZXJD
bGllbnQKKyAgICAgKiBAd2ViX3ZpZXc6IHRoZSAjV2ViS2l0V2ViVmlldyBhc3NvY2lhdGVkIHdp
dGggdGhpcyBldmVudAogICAgICAqCiAgICAgICogVGhpcyBzaWduYWwgaXMgZW1pdHRlZCB3aGVu
IGEgcGFnZSBsb2FkIGNvbXBsZXRlcywgdGhhdCBpcywgd2hlbiBhbGwKICAgICAgKiB0aGUgcmVz
b3VyY2VzIGFyZSBkb25lIGxvYWRpbmcgd2l0aCBubyBlcnJvci4gSW4gY2FzZSBvZiBlcnJvcnMK
QEAgLTM4NiwxMyArMzE2LDE0IEBAIHN0YXRpYyB2b2lkIHdlYmtpdF93ZWJfbG9hZGVyX2NsaWVu
dF9jbGFzc19pbml0KFdlYktpdFdlYkxvYWRlckNsaWVudENsYXNzKiBjbGllCiAgICAgICAgICAg
ICAgICAgICAgICBHX1NJR05BTF9SVU5fTEFTVCwKICAgICAgICAgICAgICAgICAgICAgIEdfU1RS
VUNUX09GRlNFVChXZWJLaXRXZWJMb2FkZXJDbGllbnRDbGFzcywgbG9hZF9maW5pc2hlZCksCiAg
ICAgICAgICAgICAgICAgICAgICBnX3NpZ25hbF9hY2N1bXVsYXRvcl90cnVlX2hhbmRsZWQsIE5V
TEwsCi0gICAgICAgICAgICAgICAgICAgICB3ZWJraXRfbWFyc2hhbF9CT09MRUFOX19WT0lELAot
ICAgICAgICAgICAgICAgICAgICAgR19UWVBFX0JPT0xFQU4sIDAsCi0gICAgICAgICAgICAgICAg
ICAgICBHX1RZUEVfTk9ORSk7CisgICAgICAgICAgICAgICAgICAgICB3ZWJraXRfbWFyc2hhbF9C
T09MRUFOX19PQkpFQ1QsCisgICAgICAgICAgICAgICAgICAgICBHX1RZUEVfQk9PTEVBTiwgMSwK
KyAgICAgICAgICAgICAgICAgICAgIFdFQktJVF9UWVBFX1dFQl9WSUVXKTsKIAogICAgIC8qKgog
ICAgICAqIFdlYktpdFdlYkxvYWRlckNsaWVudDo6bG9hZC1mYWlsZWQ6CiAgICAgICogQGxvYWRl
cl9jbGllbnQ6IHRoZSAjV2ViS2l0V2ViTG9hZGVyQ2xpZW50CisgICAgICogQHdlYl92aWV3OiB0
aGUgI1dlYktpdFdlYlZpZXcgYXNzb2NpYXRlZCB3aXRoIHRoaXMgZXZlbnQKICAgICAgKiBAZXJy
b3I6IHRoZSAjR0Vycm9yIHRoYXQgd2FzIHRyaWdnZXJlZAogICAgICAqCiAgICAgICogVGhpcyBz
aWduYWwgaXMgZW1pdHRlZCB3aGVuIGFuIGVycm9yIG9jY3VycyBsb2FkaW5nIGEgY29tbWl0dGVk
IGRhdGEgc291cmNlLgpAQCAtNDExLDI4ICszNDIsMTEgQEAgc3RhdGljIHZvaWQgd2Via2l0X3dl
Yl9sb2FkZXJfY2xpZW50X2NsYXNzX2luaXQoV2ViS2l0V2ViTG9hZGVyQ2xpZW50Q2xhc3MqIGNs
aWUKICAgICAgICAgICAgICAgICAgICAgIEdfU0lHTkFMX1JVTl9MQVNULAogICAgICAgICAgICAg
ICAgICAgICAgR19TVFJVQ1RfT0ZGU0VUKFdlYktpdFdlYkxvYWRlckNsaWVudENsYXNzLCBsb2Fk
X2ZhaWxlZCksCiAgICAgICAgICAgICAgICAgICAgICBnX3NpZ25hbF9hY2N1bXVsYXRvcl90cnVl
X2hhbmRsZWQsIE5VTEwsCi0gICAgICAgICAgICAgICAgICAgICB3ZWJraXRfbWFyc2hhbF9CT09M
RUFOX19TVFJJTkdfUE9JTlRFUiwKLSAgICAgICAgICAgICAgICAgICAgIEdfVFlQRV9CT09MRUFO
LCAyLAorICAgICAgICAgICAgICAgICAgICAgd2Via2l0X21hcnNoYWxfQk9PTEVBTl9fT0JKRUNU
X1NUUklOR19QT0lOVEVSLAorICAgICAgICAgICAgICAgICAgICAgR19UWVBFX0JPT0xFQU4sIDMs
CisgICAgICAgICAgICAgICAgICAgICBXRUJLSVRfVFlQRV9XRUJfVklFVywKICAgICAgICAgICAg
ICAgICAgICAgIEdfVFlQRV9TVFJJTkcsCiAgICAgICAgICAgICAgICAgICAgICBHX1RZUEVfUE9J
TlRFUik7CiAKICAgICBnX3R5cGVfY2xhc3NfYWRkX3ByaXZhdGUoY2xpZW50Q2xhc3MsIHNpemVv
ZihXZWJLaXRXZWJMb2FkZXJDbGllbnRQcml2YXRlKSk7CiB9Ci0KLS8qKgotICogd2Via2l0X3dl
Yl9sb2FkZXJfY2xpZW50X2dldF9lc3RpbWF0ZWRfcHJvZ3Jlc3M6Ci0gKiBAY2xpZW50OiBhICNX
ZWJLaXRXZWJMb2FkZXJDbGllbnQKLSAqCi0gKiBHZXRzIHRoZSB2YWx1ZSBvZiAjV2ViS2l0V2Vi
TG9hZGVyQ2xpZW50OmVzdGltYXRlZC1wcm9ncmVzcy4KLSAqIFlvdSBjYW4gbW9uaXRvciB0aGUg
ZXN0aW1hdGVkIHByb2dyZXNzIG9mIGEgbG9hZCBvcGVyYXRpb24gYnkKLSAqIGNvbm5lY3Rpbmcg
dG8gdGhlIDo6bm90aWZ5IHNpZ25hbCBvZiBAY2xpZW50LgotICoKLSAqIFJldHVybnM6IGFuIGVz
dGltYXRlIG9mIHRoZSBvZiB0aGUgcGVyY2VudCBjb21wbGV0ZSBmb3IgYSBkb2N1bWVudAotICog
ICAgIGxvYWQgYXMgYSByYW5nZSBmcm9tIDAuMCB0byAxLjAuCi0gKi8KLWdkb3VibGUgd2Via2l0
X3dlYl9sb2FkZXJfY2xpZW50X2dldF9lc3RpbWF0ZWRfcHJvZ3Jlc3MoV2ViS2l0V2ViTG9hZGVy
Q2xpZW50KiBjbGllbnQpCi17Ci0gICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoV0VCS0lUX0lTX1dF
Ql9MT0FERVJfQ0xJRU5UKGNsaWVudCksIDAuKTsKLQotICAgIHJldHVybiBjbGllbnQtPnByaXYt
PmVzdGltYXRlZFByb2dyZXNzOwotfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9ndGsvV2ViS2l0V2ViTG9hZGVyQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJMb2FkZXJDbGllbnQuaAppbmRleCBmMTk1MmM1OGRhMzE2
OTY1NzhlNWZkOTMzNjY5YzFkNDhkMzNmYzcwLi42OTNlMTU2NGQyZTM1ZDFjN2Y4OGY5OTdkNTY1
NTk4YmQzYmRmNDBlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0
ay9XZWJLaXRXZWJMb2FkZXJDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL2d0ay9XZWJLaXRXZWJMb2FkZXJDbGllbnQuaApAQCAtMzYsOCArMzYsNiBAQCBHX0JFR0lO
X0RFQ0xTCiAjZGVmaW5lIFdFQktJVF9JU19XRUJfTE9BREVSX0NMSUVOVF9DTEFTUyhrbGFzcykg
KEdfVFlQRV9DSEVDS19DTEFTU19UWVBFKChrbGFzcyksICBXRUJLSVRfVFlQRV9XRUJfTE9BREVS
X0NMSUVOVCkpCiAjZGVmaW5lIFdFQktJVF9XRUJfTE9BREVSX0NMSUVOVF9HRVRfQ0xBU1Mob2Jq
KSAgKEdfVFlQRV9JTlNUQU5DRV9HRVRfQ0xBU1MoKG9iaiksICBXRUJLSVRfVFlQRV9XRUJfTE9B
REVSX0NMSUVOVCwgV2ViS2l0V2ViTG9hZGVyQ2xpZW50Q2xhc3MpKQogCi10eXBlZGVmIHN0cnVj
dCBfV2ViS2l0V2ViTG9hZGVyQ2xpZW50ICAgICAgICBXZWJLaXRXZWJMb2FkZXJDbGllbnQ7Ci10
eXBlZGVmIHN0cnVjdCBfV2ViS2l0V2ViTG9hZGVyQ2xpZW50Q2xhc3MgICBXZWJLaXRXZWJMb2Fk
ZXJDbGllbnRDbGFzczsKIHR5cGVkZWYgc3RydWN0IF9XZWJLaXRXZWJMb2FkZXJDbGllbnRQcml2
YXRlIFdlYktpdFdlYkxvYWRlckNsaWVudFByaXZhdGU7CiAKIHN0cnVjdCBfV2ViS2l0V2ViTG9h
ZGVyQ2xpZW50IHsKQEAgLTUwLDE0ICs0OCwyMCBAQCBzdHJ1Y3QgX1dlYktpdFdlYkxvYWRlckNs
aWVudENsYXNzIHsKICAgICBHT2JqZWN0Q2xhc3MgcGFyZW50X2NsYXNzOwogCiAgICAgLyogdmly
dHVhbCB0YWJsZSAqLwotICAgIGdib29sZWFuICgqIHByb3Zpc2lvbmFsX2xvYWRfc3RhcnRlZCkg
ICAgICAgICAgICAgICAgICAoV2ViS2l0V2ViTG9hZGVyQ2xpZW50ICpsb2FkZXJfY2xpZW50KTsK
LSAgICBnYm9vbGVhbiAoKiBwcm92aXNpb25hbF9sb2FkX3JlY2VpdmVkX3NlcnZlcl9yZWRpcmVj
dCkgKFdlYktpdFdlYkxvYWRlckNsaWVudCAqbG9hZGVyX2NsaWVudCk7CisgICAgZ2Jvb2xlYW4g
KCogcHJvdmlzaW9uYWxfbG9hZF9zdGFydGVkKSAgICAgICAgICAgICAgICAgIChXZWJLaXRXZWJM
b2FkZXJDbGllbnQgKmxvYWRlcl9jbGllbnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXZWJLaXRXZWJWaWV3ICAgICAgICAgKndl
Yl92aWV3KTsKKyAgICBnYm9vbGVhbiAoKiBwcm92aXNpb25hbF9sb2FkX3JlY2VpdmVkX3NlcnZl
cl9yZWRpcmVjdCkgKFdlYktpdFdlYkxvYWRlckNsaWVudCAqbG9hZGVyX2NsaWVudCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdl
YktpdFdlYlZpZXcgICAgICAgICAqd2ViX3ZpZXcpOwogICAgIGdib29sZWFuICgqIHByb3Zpc2lv
bmFsX2xvYWRfZmFpbGVkKSAgICAgICAgICAgICAgICAgICAoV2ViS2l0V2ViTG9hZGVyQ2xpZW50
ICpsb2FkZXJfY2xpZW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgV2ViS2l0V2ViVmlldyAgICAgICAgICp3ZWJfdmlldywKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IGdjaGFyICAgICAgICAgICAqZmFpbGluZ191cmksCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHRXJyb3IgICAgICAgICAg
ICAgICAgKmVycm9yKTsKLSAgICBnYm9vbGVhbiAoKiBsb2FkX2NvbW1pdHRlZCkgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgKFdlYktpdFdlYkxvYWRlckNsaWVudCAqbG9hZGVyX2NsaWVudCk7
Ci0gICAgZ2Jvb2xlYW4gKCogbG9hZF9maW5pc2hlZCkgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIChXZWJLaXRXZWJMb2FkZXJDbGllbnQgKmxvYWRlcl9jbGllbnQpOworICAgIGdib29sZWFu
ICgqIGxvYWRfY29tbWl0dGVkKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAoV2ViS2l0V2Vi
TG9hZGVyQ2xpZW50ICpsb2FkZXJfY2xpZW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV2ViS2l0V2ViVmlldyAgICAgICAgICp3
ZWJfdmlldyk7CisgICAgZ2Jvb2xlYW4gKCogbG9hZF9maW5pc2hlZCkgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIChXZWJLaXRXZWJMb2FkZXJDbGllbnQgKmxvYWRlcl9jbGllbnQsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBX
ZWJLaXRXZWJWaWV3ICAgICAgICAgKndlYl92aWV3KTsKICAgICBnYm9vbGVhbiAoKiBsb2FkX2Zh
aWxlZCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFdlYktpdFdlYkxvYWRlckNsaWVu
dCAqbG9hZGVyX2NsaWVudCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFdlYktpdFdlYlZpZXcgICAgICAgICAqd2ViX3ZpZXcsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCBnY2hhciAgICAgICAgICAgKmZhaWxpbmdfdXJpLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0Vycm9yICAgICAgICAg
ICAgICAgICplcnJvcik7CiB9OwpAQCAtNjUsOSArNjksNiBAQCBzdHJ1Y3QgX1dlYktpdFdlYkxv
YWRlckNsaWVudENsYXNzIHsKIFdFQktJVF9BUEkgR1R5cGUKIHdlYmtpdF93ZWJfbG9hZGVyX2Ns
aWVudF9nZXRfdHlwZSAgICAgICAgICAgICAgICh2b2lkKTsKIAotV0VCS0lUX0FQSSBnZG91Ymxl
Ci13ZWJraXRfd2ViX2xvYWRlcl9jbGllbnRfZ2V0X2VzdGltYXRlZF9wcm9ncmVzcyAoV2ViS2l0
V2ViTG9hZGVyQ2xpZW50KiBjbGllbnQpOwotCiBHX0VORF9ERUNMUwogCiAjZW5kaWYKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXcuY3Bw
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlldy5jcHAKaW5k
ZXggYzk4OWZiMGE4YThmOWNkNWI3MmZjMWRmMGYzMDFiZjkzNDM2MGFlNC4uNTM2NDgyMzZhNzE2
MzJiODkwOTI2MWY2Zjg0NTYwMDgwM2FlNGMwNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlldy5jcHAKKysrIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlldy5jcHAKQEAgLTIzLDYgKzIzLDcgQEAKICNp
bmNsdWRlICJXZWJLaXRXZWJDb250ZXh0UHJpdmF0ZS5oIgogI2luY2x1ZGUgIldlYktpdFdlYkxv
YWRlckNsaWVudC5oIgogI2luY2x1ZGUgIldlYktpdFdlYlZpZXdCYXNlUHJpdmF0ZS5oIgorI2lu
Y2x1ZGUgIldlYktpdFdlYlZpZXdQcml2YXRlLmgiCiAjaW5jbHVkZSAiV2ViS2l0UHJpdmF0ZS5o
IgogI2luY2x1ZGUgIldlYlBhZ2VQcm94eS5oIgogI2luY2x1ZGUgPFdlYkNvcmUvRHJhZ0ljb24u
aD4KQEAgLTM4LDExICszOSwxMyBAQCB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIGVudW0gewog
ICAgIFBST1BfMCwKIAotICAgIFBST1BfV0VCX0NPTlRFWFQKKyAgICBQUk9QX1dFQl9DT05URVhU
LAorICAgIFBST1BfRVNUSU1BVEVEX0xPQURfUFJPR1JFU1MKIH07CiAKIHN0cnVjdCBfV2ViS2l0
V2ViVmlld1ByaXZhdGUgewogICAgIFdlYktpdFdlYkNvbnRleHQqIGNvbnRleHQ7CisgICAgZG91
YmxlIGVzdGltYXRlZExvYWRQcm9ncmVzczsKIAogICAgIEdSZWZQdHI8V2ViS2l0V2ViTG9hZGVy
Q2xpZW50PiBsb2FkZXJDbGllbnQ7CiB9OwpAQCAtNTYsNyArNTksOCBAQCBzdGF0aWMgdm9pZCB3
ZWJraXRXZWJWaWV3Q29uc3RydWN0ZWQoR09iamVjdCogb2JqZWN0KQogCiAgICAgd2Via2l0V2Vi
Vmlld0Jhc2VDcmVhdGVXZWJQYWdlKFdFQktJVF9XRUJfVklFV19CQVNFKHdlYlZpZXcpLCB3ZWJr
aXRXZWJDb250ZXh0R2V0V0tDb250ZXh0KHByaXYtPmNvbnRleHQpLCAwKTsKIAotICAgIHByaXYt
PmxvYWRlckNsaWVudCA9IGFkb3B0R1JlZihXRUJLSVRfV0VCX0xPQURFUl9DTElFTlQoZ19vYmpl
Y3RfbmV3KFdFQktJVF9UWVBFX1dFQl9MT0FERVJfQ0xJRU5ULCAid2ViLXZpZXciLCB3ZWJWaWV3
LCBOVUxMKSkpOworICAgIHN0YXRpYyBHUmVmUHRyPFdlYktpdFdlYkxvYWRlckNsaWVudD4gZGVm
YXVsdExvYWRlckNsaWVudCA9IGFkb3B0R1JlZihXRUJLSVRfV0VCX0xPQURFUl9DTElFTlQoZ19v
YmplY3RfbmV3KFdFQktJVF9UWVBFX1dFQl9MT0FERVJfQ0xJRU5ULCBOVUxMKSkpOworICAgIHdl
YmtpdF93ZWJfdmlld19zZXRfbG9hZGVyX2NsaWVudCh3ZWJWaWV3LCBkZWZhdWx0TG9hZGVyQ2xp
ZW50LmdldCgpKTsKIH0KIAogc3RhdGljIHZvaWQgd2Via2l0V2ViVmlld1NldFByb3BlcnR5KEdP
YmplY3QqIG9iamVjdCwgZ3VpbnQgcHJvcElkLCBjb25zdCBHVmFsdWUqIHZhbHVlLCBHUGFyYW1T
cGVjKiBwYXJhbVNwZWMpCkBAIC04MCw2ICs4NCw5IEBAIHN0YXRpYyB2b2lkIHdlYmtpdFdlYlZp
ZXdHZXRQcm9wZXJ0eShHT2JqZWN0KiBvYmplY3QsIGd1aW50IHByb3BJZCwgR1ZhbHVlKiB2YWx1
CiAgICAgY2FzZSBQUk9QX1dFQl9DT05URVhUOgogICAgICAgICBnX3ZhbHVlX3Rha2Vfb2JqZWN0
KHZhbHVlLCB3ZWJWaWV3LT5wcml2LT5jb250ZXh0KTsKICAgICAgICAgYnJlYWs7CisgICAgY2Fz
ZSBQUk9QX0VTVElNQVRFRF9MT0FEX1BST0dSRVNTOgorICAgICAgICBnX3ZhbHVlX3NldF9kb3Vi
bGUodmFsdWUsIHdlYmtpdF93ZWJfdmlld19nZXRfZXN0aW1hdGVkX2xvYWRfcHJvZ3Jlc3Mod2Vi
VmlldykpOworICAgICAgICBicmVhazsKICAgICBkZWZhdWx0OgogICAgICAgICBHX09CSkVDVF9X
QVJOX0lOVkFMSURfUFJPUEVSVFlfSUQob2JqZWN0LCBwcm9wSWQsIHBhcmFtU3BlYyk7CiAgICAg
fQpAQCAtMTIxLDkgKzEyOCwzMyBAQCBzdGF0aWMgdm9pZCB3ZWJraXRfd2ViX3ZpZXdfY2xhc3Nf
aW5pdChXZWJLaXRXZWJWaWV3Q2xhc3MqIHdlYlZpZXdDbGFzcykKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlRoZSB3ZWIgY29udGV4dCBm
b3IgdGhlIHZpZXciLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBXRUJLSVRfVFlQRV9XRUJfQ09OVEVYVCwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGljX2Nhc3Q8R1BhcmFt
RmxhZ3M+KFdFQktJVF9QQVJBTV9SRUFEV1JJVEUgfCBHX1BBUkFNX0NPTlNUUlVDVF9PTkxZKSkp
OworICAgIC8qKgorICAgICAqIFdlYktpdFdlYlZpZXc6ZXN0aW1hdGVkLWxvYWQtcHJvZ3Jlc3M6
CisgICAgICoKKyAgICAgKiBBbiBlc3RpbWF0ZSBvZiB0aGUgcGVyY2VudCBjb21wbGV0aW9uIGZv
ciB0aGUgY3VycmVudCBsb2FkaW5nIG9wZXJhdGlvbi4KKyAgICAgKiBUaGlzIHZhbHVlIHdpbGwg
cmFuZ2UgZnJvbSAwLjAgdG8gMS4wIGFuZCwgb25jZSBhIGxvYWQgY29tcGxldGVzLAorICAgICAq
IHdpbGwgcmVtYWluIGF0IDEuMCB1bnRpbCBhIG5ldyBsb2FkIHN0YXJ0cywgYXQgd2hpY2ggcG9p
bnQgaXQKKyAgICAgKiB3aWxsIGJlIHJlc2V0IHRvIDAuMC4KKyAgICAgKiBUaGUgdmFsdWUgaXMg
YW4gZXN0aW1hdGUgYmFzZWQgb24gdGhlIHRvdGFsIG51bWJlciBvZiBieXRlcyBleHBlY3RlZAor
ICAgICAqIHRvIGJlIHJlY2VpdmVkIGZvciBhIGRvY3VtZW50LCBpbmNsdWRpbmcgYWxsIGl0cyBw
b3NzaWJsZSBzdWJyZXNvdXJjZXMKKyAgICAgKiBhbmQgY2hpbGQgZG9jdW1lbnRzLgorICAgICAq
LworICAgIGdfb2JqZWN0X2NsYXNzX2luc3RhbGxfcHJvcGVydHkoZ09iamVjdENsYXNzLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUFJPUF9FU1RJTUFURURfTE9BRF9QUk9H
UkVTUywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdfcGFyYW1fc3BlY19k
b3VibGUoImVzdGltYXRlZC1sb2FkLXByb2dyZXNzIiwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkVzdGltYXRlZCBMb2FkIFByb2dyZXNz
IiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIkFuIGVzdGltYXRlIG9mIHRoZSBwZXJjZW50IGNvbXBsZXRpb24gZm9yIGEgZG9jdW1lbnQg
bG9hZCIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIDAuMCwgMS4wLCAwLjAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFdFQktJVF9QQVJBTV9SRUFEQUJMRSkpOwogfQogCi0vLyBQ
dWJsaWMgQVBJLgordm9pZCB3ZWJraXRXZWJWaWV3U2V0RXN0aW1hdGVkTG9hZFByb2dyZXNzKFdl
YktpdFdlYlZpZXcqIHdlYlZpZXcsIGRvdWJsZSBlc3RpbWF0ZWRMb2FkUHJvZ3Jlc3MpCit7Cisg
ICAgaWYgKHdlYlZpZXctPnByaXYtPmVzdGltYXRlZExvYWRQcm9ncmVzcyA9PSBlc3RpbWF0ZWRM
b2FkUHJvZ3Jlc3MpCisgICAgICAgIHJldHVybjsKKyAgICB3ZWJWaWV3LT5wcml2LT5lc3RpbWF0
ZWRMb2FkUHJvZ3Jlc3MgPSBlc3RpbWF0ZWRMb2FkUHJvZ3Jlc3M7CisgICAgZ19vYmplY3Rfbm90
aWZ5KEdfT0JKRUNUKHdlYlZpZXcpLCAiZXN0aW1hdGVkLWxvYWQtcHJvZ3Jlc3MiKTsKK30KIAog
LyoqCiAgKiB3ZWJraXRfd2ViX3ZpZXdfbmV3OgpAQCAtMjAxLDYgKzIzMiw4IEBAIHZvaWQgd2Vi
a2l0X3dlYl92aWV3X3NldF9sb2FkZXJfY2xpZW50KFdlYktpdFdlYlZpZXcqIHdlYlZpZXcsIFdl
YktpdFdlYkxvYWRlckNsCiAgICAgaWYgKHByaXYtPmxvYWRlckNsaWVudC5nZXQoKSA9PSBsb2Fk
ZXJDbGllbnQpCiAgICAgICAgIHJldHVybjsKIAorICAgIFdlYlBhZ2VQcm94eSogcGFnZSA9IHdl
YmtpdFdlYlZpZXdCYXNlR2V0UGFnZShXRUJLSVRfV0VCX1ZJRVdfQkFTRSh3ZWJWaWV3KSk7Cisg
ICAgYXR0YWNoTG9hZGVyQ2xpZW50VG9QYWdlKHRvQVBJKHBhZ2UpLCBsb2FkZXJDbGllbnQpOwog
ICAgIHByaXYtPmxvYWRlckNsaWVudCA9IGxvYWRlckNsaWVudDsKIH0KIApAQCAtMjgyLDMgKzMx
NSwyMCBAQCB2b2lkIHdlYmtpdF93ZWJfdmlld19nb19mb3J3YXJkKFdlYktpdFdlYlZpZXcqIHdl
YlZpZXcpCiAgICAgV2ViUGFnZVByb3h5KiBwYWdlID0gd2Via2l0V2ViVmlld0Jhc2VHZXRQYWdl
KFdFQktJVF9XRUJfVklFV19CQVNFKHdlYlZpZXcpKTsKICAgICBXS1BhZ2VHb0ZvcndhcmQodG9B
UEkocGFnZSkpOwogfQorCisvKioKKyAqIHdlYmtpdF93ZWJfdmlld19nZXRfZXN0aW1hdGVkX2xv
YWRfcHJvZ3Jlc3M6CisgKiBAd2ViX3ZpZXc6IGEgI1dlYktpdFdlYlZpZXcKKyAqCisgKiBHZXRz
IHRoZSB2YWx1ZSBvZiAjV2ViS2l0V2ViVmlldzplc3RpbWF0ZWQtbG9hZC1wcm9ncmVzcy4KKyAq
IFlvdSBjYW4gbW9uaXRvciB0aGUgZXN0aW1hdGVkIHByb2dyZXNzIG9mIGEgbG9hZCBvcGVyYXRp
b24gYnkKKyAqIGNvbm5lY3RpbmcgdG8gdGhlIDo6bm90aWZ5IHNpZ25hbCBvZiBAd2ViX3ZpZXcu
CisgKgorICogUmV0dXJuczogYW4gZXN0aW1hdGUgb2YgdGhlIG9mIHRoZSBwZXJjZW50IGNvbXBs
ZXRlIGZvciBhIGRvY3VtZW50CisgKiAgICAgbG9hZCBhcyBhIHJhbmdlIGZyb20gMC4wIHRvIDEu
MC4KKyAqLworZ2RvdWJsZSB3ZWJraXRfd2ViX3ZpZXdfZ2V0X2VzdGltYXRlZF9sb2FkX3Byb2dy
ZXNzKFdlYktpdFdlYlZpZXcqIHdlYlZpZXcpCit7CisgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwo
V0VCS0lUX0lTX1dFQl9WSUVXKHdlYlZpZXcpLCAwKTsKKyAgICByZXR1cm4gd2ViVmlldy0+cHJp
di0+ZXN0aW1hdGVkTG9hZFByb2dyZXNzOworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlldy5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlldy5oCmluZGV4IGRlMjZhODU5M2M1ZjVkMzQwYWQ0ZDM5
YTNhNzIyYjA1MGVhMTFlOTMuLjZlZTNiZTczMTg0OWI3NmM5YzRkOTA1YmEyOTVhODEwNzUwZTZj
NWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdl
YlZpZXcuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJW
aWV3LmgKQEAgLTQxLDggKzQxLDYgQEAgR19CRUdJTl9ERUNMUwogI2RlZmluZSBXRUJLSVRfSVNf
V0VCX1ZJRVdfQ0xBU1Moa2xhc3MpIChHX1RZUEVfQ0hFQ0tfQ0xBU1NfVFlQRSgoa2xhc3MpLCAg
V0VCS0lUX1RZUEVfV0VCX1ZJRVcpKQogI2RlZmluZSBXRUJLSVRfV0VCX1ZJRVdfR0VUX0NMQVNT
KG9iaikgIChHX1RZUEVfSU5TVEFOQ0VfR0VUX0NMQVNTKChvYmopLCAgV0VCS0lUX1RZUEVfV0VC
X1ZJRVcsIFdlYktpdFdlYlZpZXdDbGFzcykpCiAKLXR5cGVkZWYgc3RydWN0IF9XZWJLaXRXZWJW
aWV3ICAgICAgICBXZWJLaXRXZWJWaWV3OwotdHlwZWRlZiBzdHJ1Y3QgX1dlYktpdFdlYlZpZXdD
bGFzcyAgIFdlYktpdFdlYlZpZXdDbGFzczsKIHR5cGVkZWYgc3RydWN0IF9XZWJLaXRXZWJWaWV3
UHJpdmF0ZSBXZWJLaXRXZWJWaWV3UHJpdmF0ZTsKIAogc3RydWN0IF9XZWJLaXRXZWJWaWV3IHsK
QEAgLTY3LDM5ICs2NSw0MiBAQCBzdHJ1Y3QgX1dlYktpdFdlYlZpZXdDbGFzcyB7CiB9OwogCiBX
RUJLSVRfQVBJIEdUeXBlCi13ZWJraXRfd2ViX3ZpZXdfZ2V0X3R5cGUgICAgICAgICAgICAodm9p
ZCk7Cit3ZWJraXRfd2ViX3ZpZXdfZ2V0X3R5cGUgICAgICAgICAgICAgICAgICAgICh2b2lkKTsK
IAogV0VCS0lUX0FQSSBHdGtXaWRnZXQgKgotd2Via2l0X3dlYl92aWV3X25ldyAgICAgICAgICAg
ICAgICAgKHZvaWQpOword2Via2l0X3dlYl92aWV3X25ldyAgICAgICAgICAgICAgICAgICAgICAg
ICAodm9pZCk7CiAKIFdFQktJVF9BUEkgR3RrV2lkZ2V0ICoKLXdlYmtpdF93ZWJfdmlld19uZXdf
d2l0aF9jb250ZXh0ICAgIChXZWJLaXRXZWJDb250ZXh0ICAgICAgKmNvbnRleHQpOword2Via2l0
X3dlYl92aWV3X25ld193aXRoX2NvbnRleHQgICAgICAgICAgICAoV2ViS2l0V2ViQ29udGV4dCAg
ICAgICpjb250ZXh0KTsKIAogV0VCS0lUX0FQSSBXZWJLaXRXZWJDb250ZXh0ICoKLXdlYmtpdF93
ZWJfdmlld19nZXRfY29udGV4dCAgICAgICAgIChXZWJLaXRXZWJWaWV3ICAgICAgICAgKndlYl92
aWV3KTsKK3dlYmtpdF93ZWJfdmlld19nZXRfY29udGV4dCAgICAgICAgICAgICAgICAgKFdlYktp
dFdlYlZpZXcgICAgICAgICAqd2ViX3ZpZXcpOwogCiBXRUJLSVRfQVBJIFdlYktpdFdlYkxvYWRl
ckNsaWVudCAqCi13ZWJraXRfd2ViX3ZpZXdfZ2V0X2xvYWRlcl9jbGllbnQgICAoV2ViS2l0V2Vi
VmlldyAgICAgICAgICp3ZWJfdmlldyk7Cit3ZWJraXRfd2ViX3ZpZXdfZ2V0X2xvYWRlcl9jbGll
bnQgICAgICAgICAgIChXZWJLaXRXZWJWaWV3ICAgICAgICAgKndlYl92aWV3KTsKIAogV0VCS0lU
X0FQSSB2b2lkCi13ZWJraXRfd2ViX3ZpZXdfc2V0X2xvYWRlcl9jbGllbnQgICAoV2ViS2l0V2Vi
VmlldyAgICAgICAgICp3ZWJfdmlldywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBXZWJLaXRXZWJMb2FkZXJDbGllbnQgKmxvYWRlcl9jbGllbnQpOword2Via2l0X3dlYl92
aWV3X3NldF9sb2FkZXJfY2xpZW50ICAgICAgICAgICAoV2ViS2l0V2ViVmlldyAgICAgICAgICp3
ZWJfdmlldywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdl
YktpdFdlYkxvYWRlckNsaWVudCAqbG9hZGVyX2NsaWVudCk7CiAKIFdFQktJVF9BUEkgdm9pZAot
d2Via2l0X3dlYl92aWV3X2xvYWRfdXJpICAgICAgICAgICAgKFdlYktpdFdlYlZpZXcgICAgICAg
ICAqd2ViX3ZpZXcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
Z2NoYXIgICAgICAgICAgICp1cmkpOword2Via2l0X3dlYl92aWV3X2xvYWRfdXJpICAgICAgICAg
ICAgICAgICAgICAoV2ViS2l0V2ViVmlldyAgICAgICAgICp3ZWJfdmlldywKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdjaGFyICAgICAgICAgICAq
dXJpKTsKIAogV0VCS0lUX0FQSSB2b2lkCi13ZWJraXRfd2ViX3ZpZXdfbG9hZF9hbHRlcm5hdGVf
aHRtbCAoV2ViS2l0V2ViVmlldyAgICAgICAgICp3ZWJfdmlldywKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBnY2hhciAgICAgICAgICAgKmNvbnRlbnQsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2NoYXIgICAgICAgICAgICpi
YXNlX3VyaSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnY2hh
ciAgICAgICAgICAgKnVucmVhY2hhYmxlX3VyaSk7Cit3ZWJraXRfd2ViX3ZpZXdfbG9hZF9hbHRl
cm5hdGVfaHRtbCAgICAgICAgIChXZWJLaXRXZWJWaWV3ICAgICAgICAgKndlYl92aWV3LAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2NoYXIgICAg
ICAgICAgICpjb250ZW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3QgZ2NoYXIgICAgICAgICAgICpiYXNlX3VyaSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdjaGFyICAgICAgICAgICAqdW5yZWFj
aGFibGVfdXJpKTsKIAogV0VCS0lUX0FQSSB2b2lkCi13ZWJraXRfd2ViX3ZpZXdfZ29fYmFjayAg
ICAgICAgICAgICAoV2ViS2l0V2ViVmlldyAgICAgICAgICp3ZWJfdmlldyk7Cit3ZWJraXRfd2Vi
X3ZpZXdfZ29fYmFjayAgICAgICAgICAgICAgICAgICAgIChXZWJLaXRXZWJWaWV3ICAgICAgICAg
KndlYl92aWV3KTsKIAogV0VCS0lUX0FQSSB2b2lkCi13ZWJraXRfd2ViX3ZpZXdfZ29fZm9yd2Fy
ZCAgICAgICAgICAoV2ViS2l0V2ViVmlldyAgICAgICAgICp3ZWJfdmlldyk7Cit3ZWJraXRfd2Vi
X3ZpZXdfZ29fZm9yd2FyZCAgICAgICAgICAgICAgICAgIChXZWJLaXRXZWJWaWV3ICAgICAgICAg
KndlYl92aWV3KTsKKworV0VCS0lUX0FQSSBnZG91YmxlCit3ZWJraXRfd2ViX3ZpZXdfZ2V0X2Vz
dGltYXRlZF9sb2FkX3Byb2dyZXNzIChXZWJLaXRXZWJWaWV3ICAgICAgICAgKndlYl92ZXcpOwog
CiBHX0VORF9ERUNMUwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L2d0ay9XZWJLaXRXZWJWaWV3UHJpdmF0ZS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9ndGsvV2ViS2l0V2ViVmlld1ByaXZhdGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wZTFjYjkyZWE3MTdjYzAy
MGE1MTk0ZjZhYjllNTYyY2M2YTI0N2UxCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlld1ByaXZhdGUuaApAQCAtMCwwICsxLDM2
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIElnYWxpYSBTLkwuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNp
Zm5kZWYgV2ViS2l0V2ViVmlld1ByaXZhdGVfaAorI2RlZmluZSBXZWJLaXRXZWJWaWV3UHJpdmF0
ZV9oCisKKyNpbmNsdWRlICJXZWJLaXRXZWJWaWV3LmgiCisjaW5jbHVkZSA8V2ViS2l0Mi9XZWJL
aXQyLmg+CisKK3ZvaWQgd2Via2l0V2ViVmlld1NldEVzdGltYXRlZExvYWRQcm9ncmVzcyhXZWJL
aXRXZWJWaWV3KiwgZG91YmxlIGVzdGltYXRlZExvYWRQcm9ncmVzcyk7CisKK3ZvaWQgYXR0YWNo
TG9hZGVyQ2xpZW50VG9QYWdlKFdLUGFnZVJlZiwgV2ViS2l0V2ViTG9hZGVyQ2xpZW50Kik7CisK
KyNlbmRpZiAvLyBXZWJLaXRXZWJWaWV3UHJpdmF0ZV9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay90ZXN0cy9Mb2FkVHJhY2tpbmdUZXN0LmNwcCBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL3Rlc3RzL0xvYWRUcmFja2luZ1Rlc3QuY3BwCmlu
ZGV4IDgwMjE0MGI4YjJkZTgwNTI2MWE4OWY2Y2RiZTBiNGFjMTcwMjg5YjcuLjFhNzc4Njg4NzM5
OGU2YzNjMzhlZWNmZGNlNmY4NWQzYzQ5OWE2YjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvZ3RrL3Rlc3RzL0xvYWRUcmFja2luZ1Rlc3QuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL3Rlc3RzL0xvYWRUcmFja2luZ1Rlc3QuY3BwCkBA
IC0yMiwzNyArMjIsMzcgQEAKIAogI2luY2x1ZGUgPHdlYmtpdDIvd2Via2l0Mi5oPgogCi1zdGF0
aWMgZ2Jvb2xlYW4gcHJvdmlzaW9uYWxMb2FkU3RhcnRlZENhbGxiYWNrKFdlYktpdFdlYkxvYWRl
ckNsaWVudCogY2xpZW50LCBMb2FkVHJhY2tpbmdUZXN0KiB0ZXN0KQorc3RhdGljIGdib29sZWFu
IHByb3Zpc2lvbmFsTG9hZFN0YXJ0ZWRDYWxsYmFjayhXZWJLaXRXZWJMb2FkZXJDbGllbnQqIGNs
aWVudCwgV2ViS2l0V2ViVmlldyosIExvYWRUcmFja2luZ1Rlc3QqIHRlc3QpCiB7CiAgICAgdGVz
dC0+cHJvdmlzaW9uYWxMb2FkU3RhcnRlZChjbGllbnQpOwogICAgIHJldHVybiBUUlVFOwogfQog
Ci1zdGF0aWMgZ2Jvb2xlYW4gcHJvdmlzaW9uYWxMb2FkUmVjZWl2ZWRTZXJ2ZXJSZWRpcmVjdENh
bGxiYWNrKFdlYktpdFdlYkxvYWRlckNsaWVudCogY2xpZW50LCBMb2FkVHJhY2tpbmdUZXN0KiB0
ZXN0KQorc3RhdGljIGdib29sZWFuIHByb3Zpc2lvbmFsTG9hZFJlY2VpdmVkU2VydmVyUmVkaXJl
Y3RDYWxsYmFjayhXZWJLaXRXZWJMb2FkZXJDbGllbnQqIGNsaWVudCwgV2ViS2l0V2ViVmlldyos
IExvYWRUcmFja2luZ1Rlc3QqIHRlc3QpCiB7CiAgICAgdGVzdC0+cHJvdmlzaW9uYWxMb2FkUmVj
ZWl2ZWRTZXJ2ZXJSZWRpcmVjdChjbGllbnQpOwogICAgIHJldHVybiBUUlVFOwogfQogCi1zdGF0
aWMgZ2Jvb2xlYW4gcHJvdmlzaW9uYWxMb2FkRmFpbGVkQ2FsbGJhY2soV2ViS2l0V2ViTG9hZGVy
Q2xpZW50KiBjbGllbnQsIGNvbnN0IGdjaGFyKiBmYWlsaW5nVVJJLCBHRXJyb3IqIGVycm9yLCBM
b2FkVHJhY2tpbmdUZXN0KiB0ZXN0KQorc3RhdGljIGdib29sZWFuIHByb3Zpc2lvbmFsTG9hZEZh
aWxlZENhbGxiYWNrKFdlYktpdFdlYkxvYWRlckNsaWVudCogY2xpZW50LCBXZWJLaXRXZWJWaWV3
KiwgY29uc3QgZ2NoYXIgKmZhaWxpbmdVUkksIEdFcnJvciAqZXJyb3IsIExvYWRUcmFja2luZ1Rl
c3QqIHRlc3QpCiB7CiAgICAgdGVzdC0+cHJvdmlzaW9uYWxMb2FkRmFpbGVkKGNsaWVudCwgZmFp
bGluZ1VSSSwgZXJyb3IpOwogICAgIHJldHVybiBUUlVFOwogfQogCi1zdGF0aWMgZ2Jvb2xlYW4g
bG9hZENvbW1pdHRlZENhbGxiYWNrKFdlYktpdFdlYkxvYWRlckNsaWVudCogY2xpZW50LCBMb2Fk
VHJhY2tpbmdUZXN0KiB0ZXN0KQorc3RhdGljIGdib29sZWFuIGxvYWRDb21taXR0ZWRDYWxsYmFj
ayhXZWJLaXRXZWJMb2FkZXJDbGllbnQqIGNsaWVudCwgV2ViS2l0V2ViVmlldyosIExvYWRUcmFj
a2luZ1Rlc3QqIHRlc3QpCiB7CiAgICAgdGVzdC0+bG9hZENvbW1pdHRlZChjbGllbnQpOwogICAg
IHJldHVybiBUUlVFOwogfQogCi1zdGF0aWMgZ2Jvb2xlYW4gbG9hZEZpbmlzaGVkQ2FsbGJhY2so
V2ViS2l0V2ViTG9hZGVyQ2xpZW50KiBjbGllbnQsIExvYWRUcmFja2luZ1Rlc3QqIHRlc3QpCitz
dGF0aWMgZ2Jvb2xlYW4gbG9hZEZpbmlzaGVkQ2FsbGJhY2soV2ViS2l0V2ViTG9hZGVyQ2xpZW50
KiBjbGllbnQsIFdlYktpdFdlYlZpZXcqLCBMb2FkVHJhY2tpbmdUZXN0KiB0ZXN0KQogewogICAg
IHRlc3QtPmxvYWRGaW5pc2hlZChjbGllbnQpOwogICAgIHJldHVybiBUUlVFOwogfQogCi1zdGF0
aWMgZ2Jvb2xlYW4gbG9hZEZhaWxlZENhbGxiYWNrKFdlYktpdFdlYkxvYWRlckNsaWVudCogY2xp
ZW50LCBjb25zdCBnY2hhciogZmFpbGluZ1VSSSwgR0Vycm9yKiBlcnJvciwgTG9hZFRyYWNraW5n
VGVzdCogdGVzdCkKK3N0YXRpYyBnYm9vbGVhbiBsb2FkRmFpbGVkQ2FsbGJhY2soV2ViS2l0V2Vi
TG9hZGVyQ2xpZW50KiBjbGllbnQsIFdlYktpdFdlYlZpZXcqLCBjb25zdCBnY2hhciAqZmFpbGlu
Z1VSSSwgR0Vycm9yICplcnJvciwgTG9hZFRyYWNraW5nVGVzdCogdGVzdCkKIHsKICAgICB0ZXN0
LT5sb2FkRmFpbGVkKGNsaWVudCwgZmFpbGluZ1VSSSwgZXJyb3IpOwogICAgIHJldHVybiBUUlVF
OwpAQCAtNzMsNyArNzMsNyBAQCBMb2FkVHJhY2tpbmdUZXN0OjpMb2FkVHJhY2tpbmdUZXN0KCkK
ICAgICBnX3NpZ25hbF9jb25uZWN0KGNsaWVudCwgImxvYWQtY29tbWl0dGVkIiwgR19DQUxMQkFD
Syhsb2FkQ29tbWl0dGVkQ2FsbGJhY2spLCB0aGlzKTsKICAgICBnX3NpZ25hbF9jb25uZWN0KGNs
aWVudCwgImxvYWQtZmluaXNoZWQiLCBHX0NBTExCQUNLKGxvYWRGaW5pc2hlZENhbGxiYWNrKSwg
dGhpcyk7CiAgICAgZ19zaWduYWxfY29ubmVjdChjbGllbnQsICJsb2FkLWZhaWxlZCIsIEdfQ0FM
TEJBQ0sobG9hZEZhaWxlZENhbGxiYWNrKSwgdGhpcyk7Ci0gICAgZ19zaWduYWxfY29ubmVjdChj
bGllbnQsICJub3RpZnk6OmVzdGltYXRlZC1wcm9ncmVzcyIsIEdfQ0FMTEJBQ0soZXN0aW1hdGVk
UHJvZ3Jlc3NDaGFuZ2VkQ2FsbGJhY2spLCB0aGlzKTsKKyAgICBnX3NpZ25hbF9jb25uZWN0KG1f
d2ViVmlldywgIm5vdGlmeTo6ZXN0aW1hdGVkLWxvYWQtcHJvZ3Jlc3MiLCBHX0NBTExCQUNLKGVz
dGltYXRlZFByb2dyZXNzQ2hhbmdlZENhbGxiYWNrKSwgdGhpcyk7CiB9CiAKIExvYWRUcmFja2lu
Z1Rlc3Q6On5Mb2FkVHJhY2tpbmdUZXN0KCkKQEAgLTEyNyw4ICsxMjcsOCBAQCB2b2lkIExvYWRU
cmFja2luZ1Rlc3Q6OmxvYWRGYWlsZWQoV2ViS2l0V2ViTG9hZGVyQ2xpZW50KiBjbGllbnQsIGNv
bnN0IGdjaGFyKiBmYQogCiB2b2lkIExvYWRUcmFja2luZ1Rlc3Q6OmVzdGltYXRlZFByb2dyZXNz
Q2hhbmdlZCgpCiB7Ci0gICAgV2ViS2l0V2ViTG9hZGVyQ2xpZW50KiBjbGllbnQgPSB3ZWJraXRf
d2ViX3ZpZXdfZ2V0X2xvYWRlcl9jbGllbnQobV93ZWJWaWV3KTsKLSAgICBkb3VibGUgcHJvZ3Jl
c3MgPSB3ZWJraXRfd2ViX2xvYWRlcl9jbGllbnRfZ2V0X2VzdGltYXRlZF9wcm9ncmVzcyhjbGll
bnQpOworICAgIGRvdWJsZSBwcm9ncmVzcyA9IHdlYmtpdF93ZWJfdmlld19nZXRfZXN0aW1hdGVk
X2xvYWRfcHJvZ3Jlc3MobV93ZWJWaWV3KTsKICAgICBnX2Fzc2VydF9jbXBmbG9hdChtX2VzdGlt
YXRlZFByb2dyZXNzLCA8LCBwcm9ncmVzcyk7CiAgICAgbV9lc3RpbWF0ZWRQcm9ncmVzcyA9IHBy
b2dyZXNzOwogfQorCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0
ay93ZWJraXQybWFyc2hhbC5saXN0IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsv
d2Via2l0Mm1hcnNoYWwubGlzdAppbmRleCBjM2ExNzg2M2QzMTQ0NzI4OWQyY2ZjNmJjYWI4ZGY1
ZGRmOWEwMDMwLi42MjQ4NDI0M2ZhYTU5NWZlNzlhYWFjMWRhOWQ5MzM5NjJlMTgxMmM4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay93ZWJraXQybWFyc2hhbC5s
aXN0CisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL3dlYmtpdDJtYXJzaGFs
Lmxpc3QKQEAgLTEsMyArMSw0IEBACi1CT09MRUFOOlNUUklORyxQT0lOVEVSCitCT09MRUFOOk9C
SkVDVCxTVFJJTkcsUE9JTlRFUgorQk9PTEVBTjpPQkpFQ1QKIEJPT0xFQU46Vk9JRAogCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>110474</attachid>
            <date>2011-10-10 22:15:00 -0700</date>
            <delta_ts>2011-10-19 19:15:04 -0700</delta_ts>
            <desc>Patch also disconnecting new signal handler on fixture destruction</desc>
            <filename>bug-69814-20111010221459.patch</filename>
            <type>text/plain</type>
            <size>40162</size>
            <attacher name="Martin Robinson">mrobinson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTcwMTIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCBhMmU5NTU0YTA0MTY3N2Ux
ZDc3OTUwYmZhOGE1ZjU4NWU4OTZhNjJiLi5lMjRjN2M5NDc4MTNiZTIyODBhMDE3OTdmMTQ1ODI5
ZjQ4ZmM5MmY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsMzUgQEAKIDIwMTEtMTAtMTAgIE1hcnRp
biBSb2JpbnNvbiAgPG1yb2JpbnNvbkBpZ2FsaWEuY29tPgogCisgICAgICAgIFtHVEtdIFtXZWJL
aXQyXSBBbGxvdyBzaGFyaW5nIHBhZ2UgY2xpZW50cyBiZXR3ZWVuIFdlYlZpZXdzCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02OTgxNAorCisgICAgICAg
IE5vIGxvbmdlciBhc3NvY2lhdGUgV2ViUGFnZSBjbGllbnQgd3JhcHBlcnMgd2l0aCBhIFdlYktp
dFdlYlZpZXcuIFRoaXMgYWxsb3dzIHRoZQorICAgICAgICBzYW1lIGNsaWVudCB0byBiZSB1c2Vk
IHdpdGggbW9yZSB0aGFuIG9uZSBXZWJLaXRXZWJWaWV3LgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogR05VbWFrZWZpbGUuYW06IEFkZCB0aGUgbmV3
IFdlYktpdFdlYlZpZXdQcml2YXRlIGhlYWRlci4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0
ay9XZWJLaXREZWZpbmVzLmg6IEFkZGVkIHNvbWUgZm9yd2FyZCBkZWNsYXJhdGlvbnMgZm9yIEFQ
SSBjbGFzc2VzLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYkxvYWRlckNs
aWVudC5jcHA6IEMgQVBJIGNhbGxiYWNrcyBub3cgY29udmVydCB0aGVpciBXS1BhZ2VSZWYgYXJn
dW1lbnQKKyAgICAgICAgaW50byBhIFdlYktpdFdlYlZpZXcgZGlyZWN0bHkgYW5kIHBhc3MgaXQg
YXMgYSBwYXJhbWV0ZXIgdG8gc2lnbmFscy4gUmVtb3ZlIHRoZSB3ZWItdmlldyBwcm9wZXJ0eS4K
KyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJMb2FkZXJDbGllbnQuaDogTW92
ZSB0aGUgZXN0aW1hdGVkLXByb2dyZXNzIHByb3BlcnR5IHRvIFdlYktpdFdlYlZpZXcuCisgICAg
ICAgICogVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlldy5jcHA6IEFkZCBhbiBlc3RpbWF0
ZWQtbG9hZC1wcm9ncmVzcyBwcm9wZXJ0eS4KKyAgICAgICAgKHdlYmtpdFdlYlZpZXdDb25zdHJ1
Y3RlZCk6T25seSBhbGxvY2F0ZSBvbmUgZGVmYXVsdCBXZWJLaXRXZWJMb2FkZXJDbGllbnQuCisg
ICAgICAgICh3ZWJraXRXZWJWaWV3R2V0UHJvcGVydHkpOiBBZGQgc3VwcG9ydCBmb3IgdGhlIG5l
dyBwcm9wZXJ0eS4KKyAgICAgICAgKHdlYmtpdF93ZWJfdmlld19jbGFzc19pbml0KTogRGl0dG8u
CisgICAgICAgICh3ZWJraXRXZWJWaWV3U2V0RXN0aW1hdGVkTG9hZFByb2dyZXNzKTogQWRkZWQg
dGhpcyBwcml2YXRlIG1ldGhvZCBzbyB0aGF0IHRoZSBXZWJLaXRXZWJMb2FkZXJDbGllbnQKKyAg
ICAgICAgY2FuIHVwZGF0ZSB0aGUgYXBwcm9wcmlhdGUgV2ViS2l0V2ViVmlldy4KKyAgICAgICAg
KHdlYmtpdF93ZWJfdmlld19zZXRfbG9hZGVyX2NsaWVudCk6IEF0dGFjaCB0aGUgQyBBUEkgY2Fs
bGJhY2tzIGhlcmUgbm93LgorICAgICAgICAod2Via2l0X3dlYl92aWV3X2dldF9lc3RpbWF0ZWRf
bG9hZF9wcm9ncmVzcyk6IE1vdmVkIGZyb20gV2ViS2l0V2ViTG9hZGVyQ2xpZW50LgorICAgICAg
ICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXcuaDogQWRkZWQgbmV3IG1ldGhvZCBk
ZWZpbml0aW9uLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdQcml2
YXRlLmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktp
dERlZmluZXMuaC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay90ZXN0cy9Mb2FkVHJhY2tp
bmdUZXN0LmNwcDogVXBkYXRlZCB0aGUgbG9hZCB0cmFja2luZyB0ZXN0cyBjYWxsYmFja3MgdG8g
dGFrZSB0aGUgbmV3IHBhcmFtZXRlci4KKyAgICAgICAgKExvYWRUcmFja2luZ1Rlc3Q6OkxvYWRU
cmFja2luZ1Rlc3QpOiBMaXN0ZW4gdG8gdGhlIFdlYktpdFdlYlZpZXcgcHJvcGVydHkgbm93Lgor
ICAgICAgICAoTG9hZFRyYWNraW5nVGVzdDo6ZXN0aW1hdGVkUHJvZ3Jlc3NDaGFuZ2VkKToKKyAg
ICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay93ZWJraXQybWFyc2hhbC5saXN0OiBVcGRhdGVkIHRo
ZSBtYXJzaGFsbGVycyBoZXJlLgorCisyMDExLTEwLTEwICBNYXJ0aW4gUm9iaW5zb24gIDxtcm9i
aW5zb25AaWdhbGlhLmNvbT4KKwogICAgICAgICBbR1RLXSBbV2ViS2l0Ml0gTWFrZSBhZGRpbmcg
YW5vdGhlciB1bml0IHRlc3QgZWFzaWVyCiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD02OTQwOQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9HTlVt
YWtlZmlsZS5hbSBiL1NvdXJjZS9XZWJLaXQyL0dOVW1ha2VmaWxlLmFtCmluZGV4IDM2MDQ3MmNm
NzdmNmFlYjZmZDQ3MDZmMTkxNTdlN2NmYzk3NDg4MmYuLjc5OTAwNDU2ZDg3MWM0YjlmMmQwMzRj
YzU4ZDcxYzBmNWY4ZDE5ODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0dOVW1ha2VmaWxl
LmFtCisrKyBiL1NvdXJjZS9XZWJLaXQyL0dOVW1ha2VmaWxlLmFtCkBAIC00NzYsOCArNDc2LDkg
QEAgbGlid2Via2l0Mmd0a19AV0VCS0lUR1RLX0FQSV9NQUpPUl9WRVJTSU9OQF9AV0VCS0lUR1RL
X0FQSV9NSU5PUl9WRVJTSU9OQF9sYV9TT1UKIAlTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L2d0ay9XZWJLaXRXZWJDb250ZXh0UHJpdmF0ZS5oIFwKIAlTb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL2d0ay9XZWJLaXRXZWJMb2FkZXJDbGllbnQuaCBcCiAJU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViTG9hZGVyQ2xpZW50LmNwcCBcCi0JU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlldy5oIFwKIAlTb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3LmNwcCBcCisJU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlldy5oIFwKKwlTb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3UHJpdmF0ZS5oIFwKIAlTb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3QmFzZS5oIFwKIAlTb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3QmFzZS5jcHAgXAogCVNvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdCYXNlUHJpdmF0ZS5oIFwKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdERlZmluZXMuaCBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdERlZmluZXMuaAppbmRleCA3OWIzMzgz
NjBkZGFhYThmMDlmNjU0N2YyZGYxNDU4ZjZmMjE5MzFkLi5kYzMzZGJjNTM2MjNkODM0MDUxNzdh
NzY4MDQyZDFkOWIxNDdhNzQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL2d0ay9XZWJLaXREZWZpbmVzLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9ndGsvV2ViS2l0RGVmaW5lcy5oCkBAIC0zMCw2ICszMCwxMiBAQAogI2lmbmRlZiBXZWJLaXRE
ZWZpbmVzX2gKICNkZWZpbmUgV2ViS2l0RGVmaW5lc19oCiAKK3R5cGVkZWYgc3RydWN0IF9XZWJL
aXRXZWJWaWV3IFdlYktpdFdlYlZpZXc7Cit0eXBlZGVmIHN0cnVjdCBfV2ViS2l0V2ViVmlld0Ns
YXNzIFdlYktpdFdlYlZpZXdDbGFzczsKKwordHlwZWRlZiBzdHJ1Y3QgX1dlYktpdFdlYkxvYWRl
ckNsaWVudCAgICAgICAgV2ViS2l0V2ViTG9hZGVyQ2xpZW50OwordHlwZWRlZiBzdHJ1Y3QgX1dl
YktpdFdlYkxvYWRlckNsaWVudENsYXNzICAgV2ViS2l0V2ViTG9hZGVyQ2xpZW50Q2xhc3M7CisK
ICNpbmNsdWRlIDxnbGliLmg+CiAKICNpZmRlZiBHX09TX1dJTjMyCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJMb2FkZXJDbGllbnQuY3BwIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViTG9hZGVyQ2xpZW50LmNw
cAppbmRleCAyYTkwOTAwNDZlMzYwOTZkMjFlYWNhOTBhYzhhNWFlZDdiOGI1YTYyLi4yNTU5NWQ4
NjQ5MzQ2ZTAwMTJlNmNlYTk4ZjZkNTRmOWVhZTM1MmIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJMb2FkZXJDbGllbnQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYkxvYWRlckNsaWVudC5jcHAK
QEAgLTI0LDYgKzI0LDcgQEAKICNpbmNsdWRlICJXZWJLaXRNYXJzaGFsLmgiCiAjaW5jbHVkZSAi
V2ViS2l0UHJpdmF0ZS5oIgogI2luY2x1ZGUgIldlYktpdFdlYlZpZXcuaCIKKyNpbmNsdWRlICJX
ZWJLaXRXZWJWaWV3UHJpdmF0ZS5oIgogI2luY2x1ZGUgIldlYktpdFdlYlZpZXdCYXNlUHJpdmF0
ZS5oIgogI2luY2x1ZGUgPHd0Zi9nb2JqZWN0L0dPd25QdHIuaD4KICNpbmNsdWRlIDx3dGYvZ29i
amVjdC9HUmVmUHRyLmg+CkBAIC00MywxNyArNDQsOCBAQCBlbnVtIHsKICAgICBMQVNUX1NJR05B
TAogfTsKIAotZW51bSB7Ci0gICAgUFJPUF8wLAotCi0gICAgUFJPUF9XRUJfVklFVywKLSAgICBQ
Uk9QX0VTVElNQVRFRF9QUk9HUkVTUwotfTsKLQogc3RydWN0IF9XZWJLaXRXZWJMb2FkZXJDbGll
bnRQcml2YXRlIHsKICAgICBHUmVmUHRyPFdlYktpdFdlYlZpZXc+IHZpZXc7Ci0KLSAgICBnZG91
YmxlIGVzdGltYXRlZFByb2dyZXNzOwogfTsKIAogc3RhdGljIGd1aW50IHNpZ25hbHNbTEFTVF9T
SUdOQUxdID0geyAwLCB9OwpAQCAtNjYsNyArNTgsOCBAQCBzdGF0aWMgdm9pZCBkaWRTdGFydFBy
b3Zpc2lvbmFsTG9hZEZvckZyYW1lKFdLUGFnZVJlZiBwYWdlLCBXS0ZyYW1lUmVmIGZyYW1lLCBX
SwogICAgICAgICByZXR1cm47CiAKICAgICBnYm9vbGVhbiByZXR1cm5WYWx1ZTsKLSAgICBnX3Np
Z25hbF9lbWl0KFdFQktJVF9XRUJfTE9BREVSX0NMSUVOVChjbGllbnRJbmZvKSwgc2lnbmFsc1tQ
Uk9WSVNJT05BTF9MT0FEX1NUQVJURURdLCAwLCAmcmV0dXJuVmFsdWUpOworICAgIFdlYktpdFdl
YlZpZXcqIHdlYlZpZXcgPSBXRUJLSVRfV0VCX1ZJRVcodG9JbXBsKHBhZ2UpLT52aWV3V2lkZ2V0
KCkpOworICAgIGdfc2lnbmFsX2VtaXQoV0VCS0lUX1dFQl9MT0FERVJfQ0xJRU5UKGNsaWVudElu
Zm8pLCBzaWduYWxzW1BST1ZJU0lPTkFMX0xPQURfU1RBUlRFRF0sIDAsIHdlYlZpZXcsICZyZXR1
cm5WYWx1ZSk7CiB9CiAKIHN0YXRpYyB2b2lkIGRpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdEZvclBy
b3Zpc2lvbmFsTG9hZEZvckZyYW1lKFdLUGFnZVJlZiBwYWdlLCBXS0ZyYW1lUmVmIGZyYW1lLCBX
S1R5cGVSZWYgdXNlckRhdGEsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pCkBAIC03NSw3ICs2OCw4
IEBAIHN0YXRpYyB2b2lkIGRpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdEZvclByb3Zpc2lvbmFsTG9h
ZEZvckZyYW1lKFdLUGFnZVJlZiBwYWdlLCBXCiAgICAgICAgIHJldHVybjsKIAogICAgIGdib29s
ZWFuIHJldHVyblZhbHVlOwotICAgIGdfc2lnbmFsX2VtaXQoV0VCS0lUX1dFQl9MT0FERVJfQ0xJ
RU5UKGNsaWVudEluZm8pLCBzaWduYWxzW1BST1ZJU0lPTkFMX0xPQURfUkVDRUlWRURfU0VSVkVS
X1JFRElSRUNUXSwgMCwgJnJldHVyblZhbHVlKTsKKyAgICBXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3
ID0gV0VCS0lUX1dFQl9WSUVXKHRvSW1wbChwYWdlKS0+dmlld1dpZGdldCgpKTsKKyAgICBnX3Np
Z25hbF9lbWl0KFdFQktJVF9XRUJfTE9BREVSX0NMSUVOVChjbGllbnRJbmZvKSwgc2lnbmFsc1tQ
Uk9WSVNJT05BTF9MT0FEX1JFQ0VJVkVEX1NFUlZFUl9SRURJUkVDVF0sIDAsIHdlYlZpZXcsICZy
ZXR1cm5WYWx1ZSk7CiB9CiAKIHN0YXRpYyB2b2lkIGRpZEZhaWxQcm92aXNpb25hbExvYWRXaXRo
RXJyb3JGb3JGcmFtZShXS1BhZ2VSZWYgcGFnZSwgV0tGcmFtZVJlZiBmcmFtZSwgV0tFcnJvclJl
ZiBlcnJvciwgV0tUeXBlUmVmIHVzZXJEYXRhLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKQpAQCAt
ODgsNyArODIsOCBAQCBzdGF0aWMgdm9pZCBkaWRGYWlsUHJvdmlzaW9uYWxMb2FkV2l0aEVycm9y
Rm9yRnJhbWUoV0tQYWdlUmVmIHBhZ2UsIFdLRnJhbWVSZWYgZgogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc291cmNlRXJyb3IuZXJyb3JDb2RlKCks
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzb3Vy
Y2VFcnJvci5sb2NhbGl6ZWREZXNjcmlwdGlvbigpLnV0ZjgoKS5kYXRhKCkpKTsKICAgICBnYm9v
bGVhbiByZXR1cm5WYWx1ZTsKLSAgICBnX3NpZ25hbF9lbWl0KFdFQktJVF9XRUJfTE9BREVSX0NM
SUVOVChjbGllbnRJbmZvKSwgc2lnbmFsc1tQUk9WSVNJT05BTF9MT0FEX0ZBSUxFRF0sIDAsIHJl
c291cmNlRXJyb3IuZmFpbGluZ1VSTCgpLnV0ZjgoKS5kYXRhKCksCisgICAgV2ViS2l0V2ViVmll
dyogd2ViVmlldyA9IFdFQktJVF9XRUJfVklFVyh0b0ltcGwocGFnZSktPnZpZXdXaWRnZXQoKSk7
CisgICAgZ19zaWduYWxfZW1pdChXRUJLSVRfV0VCX0xPQURFUl9DTElFTlQoY2xpZW50SW5mbyks
IHNpZ25hbHNbUFJPVklTSU9OQUxfTE9BRF9GQUlMRURdLCAwLCB3ZWJWaWV3LCByZXNvdXJjZUVy
cm9yLmZhaWxpbmdVUkwoKS51dGY4KCkuZGF0YSgpLAogICAgICAgICAgICAgICAgICAgd2ViRXJy
b3IuZ2V0KCksICZyZXR1cm5WYWx1ZSk7CiB9CiAKQEAgLTk4LDcgKzkzLDggQEAgc3RhdGljIHZv
aWQgZGlkQ29tbWl0TG9hZEZvckZyYW1lKFdLUGFnZVJlZiBwYWdlLCBXS0ZyYW1lUmVmIGZyYW1l
LCBXS1R5cGVSZWYgdXMKICAgICAgICAgcmV0dXJuOwogCiAgICAgZ2Jvb2xlYW4gcmV0dXJuVmFs
dWU7Ci0gICAgZ19zaWduYWxfZW1pdChXRUJLSVRfV0VCX0xPQURFUl9DTElFTlQoY2xpZW50SW5m
byksIHNpZ25hbHNbTE9BRF9DT01NSVRURURdLCAwLCAmcmV0dXJuVmFsdWUpOworICAgIFdlYktp
dFdlYlZpZXcqIHdlYlZpZXcgPSBXRUJLSVRfV0VCX1ZJRVcodG9JbXBsKHBhZ2UpLT52aWV3V2lk
Z2V0KCkpOworICAgIGdfc2lnbmFsX2VtaXQoV0VCS0lUX1dFQl9MT0FERVJfQ0xJRU5UKGNsaWVu
dEluZm8pLCBzaWduYWxzW0xPQURfQ09NTUlUVEVEXSwgMCwgd2ViVmlldywgICZyZXR1cm5WYWx1
ZSk7CiB9CiAKIHN0YXRpYyB2b2lkIGRpZEZpbmlzaExvYWRGb3JGcmFtZShXS1BhZ2VSZWYgcGFn
ZSwgV0tGcmFtZVJlZiBmcmFtZSwgV0tUeXBlUmVmIHVzZXJEYXRhLCBjb25zdCB2b2lkKiBjbGll
bnRJbmZvKQpAQCAtMTA3LDcgKzEwMyw4IEBAIHN0YXRpYyB2b2lkIGRpZEZpbmlzaExvYWRGb3JG
cmFtZShXS1BhZ2VSZWYgcGFnZSwgV0tGcmFtZVJlZiBmcmFtZSwgV0tUeXBlUmVmIHVzCiAgICAg
ICAgIHJldHVybjsKIAogICAgIGdib29sZWFuIHJldHVyblZhbHVlOwotICAgIGdfc2lnbmFsX2Vt
aXQoV0VCS0lUX1dFQl9MT0FERVJfQ0xJRU5UKGNsaWVudEluZm8pLCBzaWduYWxzW0xPQURfRklO
SVNIRURdLCAwLCAmcmV0dXJuVmFsdWUpOworICAgIFdlYktpdFdlYlZpZXcqIHdlYlZpZXcgPSBX
RUJLSVRfV0VCX1ZJRVcodG9JbXBsKHBhZ2UpLT52aWV3V2lkZ2V0KCkpOworICAgIGdfc2lnbmFs
X2VtaXQoV0VCS0lUX1dFQl9MT0FERVJfQ0xJRU5UKGNsaWVudEluZm8pLCBzaWduYWxzW0xPQURf
RklOSVNIRURdLCAwLCB3ZWJWaWV3LCAmcmV0dXJuVmFsdWUpOwogfQogCiBzdGF0aWMgdm9pZCBk
aWRGYWlsTG9hZFdpdGhFcnJvckZvckZyYW1lKFdLUGFnZVJlZiBwYWdlLCBXS0ZyYW1lUmVmIGZy
YW1lLCBXS0Vycm9yUmVmIGVycm9yLCBXS1R5cGVSZWYsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8p
CkBAIC0xMjAsNjEgKzExNyw1MiBAQCBzdGF0aWMgdm9pZCBkaWRGYWlsTG9hZFdpdGhFcnJvckZv
ckZyYW1lKFdLUGFnZVJlZiBwYWdlLCBXS0ZyYW1lUmVmIGZyYW1lLCBXS0VycgogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc291cmNlRXJyb3IuZXJy
b3JDb2RlKCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgcmVzb3VyY2VFcnJvci5sb2NhbGl6ZWREZXNjcmlwdGlvbigpLnV0ZjgoKS5kYXRhKCkpKTsK
ICAgICBnYm9vbGVhbiByZXR1cm5WYWx1ZTsKLSAgICBnX3NpZ25hbF9lbWl0KFdFQktJVF9XRUJf
TE9BREVSX0NMSUVOVChjbGllbnRJbmZvKSwgc2lnbmFsc1tMT0FEX0ZBSUxFRF0sIDAsIHJlc291
cmNlRXJyb3IuZmFpbGluZ1VSTCgpLnV0ZjgoKS5kYXRhKCksCi0gICAgICAgICAgICAgICAgICB3
ZWJFcnJvci5nZXQoKSwgJnJldHVyblZhbHVlKTsKKyAgICBXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3
ID0gV0VCS0lUX1dFQl9WSUVXKHRvSW1wbChwYWdlKS0+dmlld1dpZGdldCgpKTsKKyAgICBnX3Np
Z25hbF9lbWl0KFdFQktJVF9XRUJfTE9BREVSX0NMSUVOVChjbGllbnRJbmZvKSwgc2lnbmFsc1tM
T0FEX0ZBSUxFRF0sIDAsIHdlYlZpZXcsCisgICAgICAgICAgICAgICAgICByZXNvdXJjZUVycm9y
LmZhaWxpbmdVUkwoKS51dGY4KCkuZGF0YSgpLCB3ZWJFcnJvci5nZXQoKSwgJnJldHVyblZhbHVl
KTsKIH0KIAogc3RhdGljIHZvaWQgZGlkQ2hhbmdlUHJvZ3Jlc3MoV0tQYWdlUmVmIHBhZ2UsIGNv
bnN0IHZvaWQqIGNsaWVudEluZm8pCiB7Ci0gICAgV2ViS2l0V2ViTG9hZGVyQ2xpZW50KiBjbGll
bnQgPSBXRUJLSVRfV0VCX0xPQURFUl9DTElFTlQoY2xpZW50SW5mbyk7Ci0gICAgZ2RvdWJsZSBl
c3RpbWF0ZWRQcm9ncmVzcyA9IFdLUGFnZUdldEVzdGltYXRlZFByb2dyZXNzKHBhZ2UpOwotCi0g
ICAgaWYgKGNsaWVudC0+cHJpdi0+ZXN0aW1hdGVkUHJvZ3Jlc3MgPT0gZXN0aW1hdGVkUHJvZ3Jl
c3MpCi0gICAgICAgIHJldHVybjsKLQotICAgIGNsaWVudC0+cHJpdi0+ZXN0aW1hdGVkUHJvZ3Jl
c3MgPSBlc3RpbWF0ZWRQcm9ncmVzczsKLSAgICBnX29iamVjdF9ub3RpZnkoR19PQkpFQ1QoY2xp
ZW50SW5mbyksICJlc3RpbWF0ZWQtcHJvZ3Jlc3MiKTsKKyAgICBXZWJLaXRXZWJWaWV3KiB3ZWJW
aWV3ID0gV0VCS0lUX1dFQl9WSUVXKHRvSW1wbChwYWdlKS0+dmlld1dpZGdldCgpKTsKKyAgICB3
ZWJraXRXZWJWaWV3U2V0RXN0aW1hdGVkTG9hZFByb2dyZXNzKHdlYlZpZXcsIFdLUGFnZUdldEVz
dGltYXRlZFByb2dyZXNzKHBhZ2UpKTsKIH0KIAotc3RhdGljIHZvaWQgd2Via2l0V2ViTG9hZGVy
Q2xpZW50Q29uc3RydWN0ZWQoR09iamVjdCogb2JqZWN0KQordm9pZCBhdHRhY2hMb2FkZXJDbGll
bnRUb1BhZ2UoV0tQYWdlUmVmIHBhZ2UsIFdlYktpdFdlYkxvYWRlckNsaWVudCogY2xpZW50KQog
ewotICAgIFdlYktpdFdlYkxvYWRlckNsaWVudCogY2xpZW50ID0gV0VCS0lUX1dFQl9MT0FERVJf
Q0xJRU5UKG9iamVjdCk7Ci0gICAgV2ViS2l0V2ViTG9hZGVyQ2xpZW50UHJpdmF0ZSogcHJpdiA9
IGNsaWVudC0+cHJpdjsKLQogICAgIFdLUGFnZUxvYWRlckNsaWVudCBsb2FkZXJDbGllbnQgPSB7
CiAgICAgICAgIGtXS1BhZ2VMb2FkZXJDbGllbnRDdXJyZW50VmVyc2lvbiwKLSAgICAgICAgY2xp
ZW50LCAgLy8gY2xpZW50SW5mbworICAgICAgICBjbGllbnQsIC8vIGNsaWVudEluZm8KICAgICAg
ICAgZGlkU3RhcnRQcm92aXNpb25hbExvYWRGb3JGcmFtZSwKICAgICAgICAgZGlkUmVjZWl2ZVNl
cnZlclJlZGlyZWN0Rm9yUHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUsCiAgICAgICAgIGRpZEZhaWxQ
cm92aXNpb25hbExvYWRXaXRoRXJyb3JGb3JGcmFtZSwKICAgICAgICAgZGlkQ29tbWl0TG9hZEZv
ckZyYW1lLAotICAgICAgICAwLCAgICAgICAvLyBkaWRGaW5pc2hEb2N1bWVudExvYWRGb3JGcmFt
ZQorICAgICAgICAwLCAvLyBkaWRGaW5pc2hEb2N1bWVudExvYWRGb3JGcmFtZQogICAgICAgICBk
aWRGaW5pc2hMb2FkRm9yRnJhbWUsCiAgICAgICAgIGRpZEZhaWxMb2FkV2l0aEVycm9yRm9yRnJh
bWUsCi0gICAgICAgIDAsICAgICAgIC8vIGRpZFNhbWVEb2N1bWVudE5hdmlnYXRpb25Gb3JGcmFt
ZQotICAgICAgICAwLCAgICAgICAvLyBkaWRSZWNlaXZlVGl0bGVGb3JGcmFtZQotICAgICAgICAw
LCAgICAgICAvLyBkaWRGaXJzdExheW91dEZvckZyYW1lCi0gICAgICAgIDAsICAgICAgIC8vIGRp
ZEZpcnN0VmlzdWFsbHlOb25FbXB0eUxheW91dEZvckZyYW1lCi0gICAgICAgIDAsICAgICAgIC8v
IGRpZFJlbW92ZUZyYW1lRnJvbUhpZXJhcmNoeQotICAgICAgICAwLCAgICAgICAvLyBkaWREaXNw
bGF5SW5zZWN1cmVDb250ZW50Rm9yRnJhbWUKLSAgICAgICAgMCwgICAgICAgLy8gZGlkUnVuSW5z
ZWN1cmVDb250ZW50Rm9yRnJhbWUKLSAgICAgICAgMCwgICAgICAgLy8gY2FuQXV0aGVudGljYXRl
QWdhaW5zdFByb3RlY3Rpb25TcGFjZUluRnJhbWUKLSAgICAgICAgMCwgICAgICAgLy8gZGlkUmVj
ZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlSW5GcmFtZQorICAgICAgICAwLCAvLyBkaWRTYW1l
RG9jdW1lbnROYXZpZ2F0aW9uRm9yRnJhbWUKKyAgICAgICAgMCwgLy8gZGlkUmVjZWl2ZVRpdGxl
Rm9yRnJhbWUKKyAgICAgICAgMCwgLy8gZGlkRmlyc3RMYXlvdXRGb3JGcmFtZQorICAgICAgICAw
LCAvLyBkaWRGaXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXRGb3JGcmFtZQorICAgICAgICAwLCAv
LyBkaWRSZW1vdmVGcmFtZUZyb21IaWVyYXJjaHkKKyAgICAgICAgMCwgLy8gZGlkRGlzcGxheUlu
c2VjdXJlQ29udGVudEZvckZyYW1lCisgICAgICAgIDAsIC8vIGRpZFJ1bkluc2VjdXJlQ29udGVu
dEZvckZyYW1lCisgICAgICAgIDAsIC8vIGNhbkF1dGhlbnRpY2F0ZUFnYWluc3RQcm90ZWN0aW9u
U3BhY2VJbkZyYW1lCisgICAgICAgIDAsIC8vIGRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxs
ZW5nZUluRnJhbWUKICAgICAgICAgZGlkQ2hhbmdlUHJvZ3Jlc3MsIC8vIGRpZFN0YXJ0UHJvZ3Jl
c3MKICAgICAgICAgZGlkQ2hhbmdlUHJvZ3Jlc3MsCiAgICAgICAgIGRpZENoYW5nZVByb2dyZXNz
LCAvLyBkaWRGaW5pc2hQcm9ncmVzcwotICAgICAgICAwLCAgICAgICAvLyBkaWRCZWNvbWVVbnJl
c3BvbnNpdmUKLSAgICAgICAgMCwgICAgICAgLy8gZGlkQmVjb21lUmVzcG9uc2l2ZQotICAgICAg
ICAwLCAgICAgICAvLyBwcm9jZXNzRGlkQ3Jhc2gKLSAgICAgICAgMCwgICAgICAgLy8gZGlkQ2hh
bmdlQmFja0ZvcndhcmRMaXN0Ci0gICAgICAgIDAsICAgICAgIC8vIHNob3VsZEdvVG9CYWNrRm9y
d2FyZExpc3RJdGVtCi0gICAgICAgIDAgICAgICAgIC8vIGRpZEZhaWxUb0luaXRpYWxpemVQbHVn
aW4KKyAgICAgICAgMCwgLy8gZGlkQmVjb21lVW5yZXNwb25zaXZlCisgICAgICAgIDAsIC8vIGRp
ZEJlY29tZVJlc3BvbnNpdmUKKyAgICAgICAgMCwgLy8gcHJvY2Vzc0RpZENyYXNoCisgICAgICAg
IDAsIC8vIGRpZENoYW5nZUJhY2tGb3J3YXJkTGlzdAorICAgICAgICAwLCAvLyBzaG91bGRHb1Rv
QmFja0ZvcndhcmRMaXN0SXRlbQorICAgICAgICAwIC8vIGRpZEZhaWxUb0luaXRpYWxpemVQbHVn
aW4KICAgICB9OwotICAgIFdlYlBhZ2VQcm94eSogcGFnZSA9IHdlYmtpdFdlYlZpZXdCYXNlR2V0
UGFnZShXRUJLSVRfV0VCX1ZJRVdfQkFTRShwcml2LT52aWV3LmdldCgpKSk7Ci0gICAgV0tQYWdl
U2V0UGFnZUxvYWRlckNsaWVudCh0b0FQSShwYWdlKSwgJmxvYWRlckNsaWVudCk7CisgICAgV0tQ
YWdlU2V0UGFnZUxvYWRlckNsaWVudChwYWdlLCAmbG9hZGVyQ2xpZW50KTsKIH0KIAotc3RhdGlj
IGdib29sZWFuIHdlYmtpdFdlYkxvYWRlckNsaWVudExvYWRGYWlsZWQoV2ViS2l0V2ViTG9hZGVy
Q2xpZW50KiBjbGllbnQsIGNvbnN0IGdjaGFyKiBmYWlsaW5nVVJJLCBHRXJyb3IqIGVycm9yKQor
c3RhdGljIGdib29sZWFuIHdlYmtpdFdlYkxvYWRlckNsaWVudExvYWRGYWlsZWQoV2ViS2l0V2Vi
TG9hZGVyQ2xpZW50KiBjbGllbnQsIFdlYktpdFdlYlZpZXcqIHdlYlZpZXcsIGNvbnN0IGdjaGFy
KiBmYWlsaW5nVVJJLCBHRXJyb3IqIGVycm9yKQogewogICAgIGlmIChnX2Vycm9yX21hdGNoZXMo
ZXJyb3IsIFdFQktJVF9ORVRXT1JLX0VSUk9SLCBXRUJLSVRfTkVUV09SS19FUlJPUl9DQU5DRUxM
RUQpCiAgICAgICAgIHx8IGdfZXJyb3JfbWF0Y2hlcyhlcnJvciwgV0VCS0lUX1BPTElDWV9FUlJP
UiwgV0VCS0lUX1BPTElDWV9FUlJPUl9GUkFNRV9MT0FEX0lOVEVSUlVQVEVEX0JZX1BPTElDWV9D
SEFOR0UpCkBAIC0xODIsNDAgKzE3MCwxMSBAQCBzdGF0aWMgZ2Jvb2xlYW4gd2Via2l0V2ViTG9h
ZGVyQ2xpZW50TG9hZEZhaWxlZChXZWJLaXRXZWJMb2FkZXJDbGllbnQqIGNsaWVudCwgYwogICAg
ICAgICByZXR1cm4gRkFMU0U7CiAKICAgICBHT3duUHRyPGNoYXI+IGh0bWxTdHJpbmcoZ19zdHJk
dXBfcHJpbnRmKCI8aHRtbD48Ym9keT4lczwvYm9keT48L2h0bWw+IiwgZXJyb3ItPm1lc3NhZ2Up
KTsKLSAgICB3ZWJraXRfd2ViX3ZpZXdfbG9hZF9hbHRlcm5hdGVfaHRtbChjbGllbnQtPnByaXYt
PnZpZXcuZ2V0KCksIGh0bWxTdHJpbmcuZ2V0KCksIDAsIGZhaWxpbmdVUkkpOworICAgIHdlYmtp
dF93ZWJfdmlld19sb2FkX2FsdGVybmF0ZV9odG1sKHdlYlZpZXcsIGh0bWxTdHJpbmcuZ2V0KCks
IDAsIGZhaWxpbmdVUkkpOwogCiAgICAgcmV0dXJuIFRSVUU7CiB9CiAKLXN0YXRpYyB2b2lkIHdl
YmtpdFdlYkxvYWRlckNsaWVudFNldFByb3BlcnR5KEdPYmplY3QqIG9iamVjdCwgZ3VpbnQgcHJv
cElkLCBjb25zdCBHVmFsdWUqIHZhbHVlLCBHUGFyYW1TcGVjKiBwYXJhbVNwZWMpCi17Ci0gICAg
V2ViS2l0V2ViTG9hZGVyQ2xpZW50KiBjbGllbnQgPSBXRUJLSVRfV0VCX0xPQURFUl9DTElFTlQo
b2JqZWN0KTsKLQotICAgIHN3aXRjaCAocHJvcElkKSB7Ci0gICAgY2FzZSBQUk9QX1dFQl9WSUVX
OgotICAgICAgICBjbGllbnQtPnByaXYtPnZpZXcgPSBhZG9wdEdSZWYoV0VCS0lUX1dFQl9WSUVX
KGdfdmFsdWVfZHVwX29iamVjdCh2YWx1ZSkpKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgZGVmYXVs
dDoKLSAgICAgICAgR19PQkpFQ1RfV0FSTl9JTlZBTElEX1BST1BFUlRZX0lEKG9iamVjdCwgcHJv
cElkLCBwYXJhbVNwZWMpOwotICAgIH0KLX0KLQotc3RhdGljIHZvaWQgd2Via2l0V2ViTG9hZGVy
Q2xpZW50R2V0UHJvcGVydHkoR09iamVjdCogb2JqZWN0LCBndWludCBwcm9wSWQsIEdWYWx1ZSog
dmFsdWUsIEdQYXJhbVNwZWMqIHBhcmFtU3BlYykKLXsKLSAgICBXZWJLaXRXZWJMb2FkZXJDbGll
bnQqIGNsaWVudCA9IFdFQktJVF9XRUJfTE9BREVSX0NMSUVOVChvYmplY3QpOwotCi0gICAgc3dp
dGNoIChwcm9wSWQpIHsKLSAgICBjYXNlIFBST1BfV0VCX1ZJRVc6Ci0gICAgICAgIGdfdmFsdWVf
c2V0X29iamVjdCh2YWx1ZSwgY2xpZW50LT5wcml2LT52aWV3LmdldCgpKTsKLSAgICAgICAgYnJl
YWs7Ci0gICAgY2FzZSBQUk9QX0VTVElNQVRFRF9QUk9HUkVTUzoKLSAgICAgICAgZ192YWx1ZV9z
ZXRfZG91YmxlKHZhbHVlLCB3ZWJraXRfd2ViX2xvYWRlcl9jbGllbnRfZ2V0X2VzdGltYXRlZF9w
cm9ncmVzcyhjbGllbnQpKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgZGVmYXVsdDoKLSAgICAgICAg
R19PQkpFQ1RfV0FSTl9JTlZBTElEX1BST1BFUlRZX0lEKG9iamVjdCwgcHJvcElkLCBwYXJhbVNw
ZWMpOwotICAgIH0KLX0KLQogc3RhdGljIHZvaWQgd2Via2l0V2ViTG9hZGVyQ2xpZW50RmluYWxp
emUoR09iamVjdCogb2JqZWN0KQogewogICAgIFdFQktJVF9XRUJfTE9BREVSX0NMSUVOVChvYmpl
Y3QpLT5wcml2LT5+V2ViS2l0V2ViTG9hZGVyQ2xpZW50UHJpdmF0ZSgpOwpAQCAtMjMyLDQ4ICsx
OTEsMTQgQEAgc3RhdGljIHZvaWQgd2Via2l0X3dlYl9sb2FkZXJfY2xpZW50X2luaXQoV2ViS2l0
V2ViTG9hZGVyQ2xpZW50KiBjbGllbnQpCiBzdGF0aWMgdm9pZCB3ZWJraXRfd2ViX2xvYWRlcl9j
bGllbnRfY2xhc3NfaW5pdChXZWJLaXRXZWJMb2FkZXJDbGllbnRDbGFzcyogY2xpZW50Q2xhc3Mp
CiB7CiAgICAgR09iamVjdENsYXNzKiBvYmplY3RDbGFzcyA9IEdfT0JKRUNUX0NMQVNTKGNsaWVu
dENsYXNzKTsKLQotICAgIG9iamVjdENsYXNzLT5zZXRfcHJvcGVydHkgPSB3ZWJraXRXZWJMb2Fk
ZXJDbGllbnRTZXRQcm9wZXJ0eTsKLSAgICBvYmplY3RDbGFzcy0+Z2V0X3Byb3BlcnR5ID0gd2Vi
a2l0V2ViTG9hZGVyQ2xpZW50R2V0UHJvcGVydHk7Ci0gICAgb2JqZWN0Q2xhc3MtPmNvbnN0cnVj
dGVkID0gd2Via2l0V2ViTG9hZGVyQ2xpZW50Q29uc3RydWN0ZWQ7CiAgICAgb2JqZWN0Q2xhc3Mt
PmZpbmFsaXplID0gd2Via2l0V2ViTG9hZGVyQ2xpZW50RmluYWxpemU7Ci0KICAgICBjbGllbnRD
bGFzcy0+cHJvdmlzaW9uYWxfbG9hZF9mYWlsZWQgPSB3ZWJraXRXZWJMb2FkZXJDbGllbnRMb2Fk
RmFpbGVkOwogICAgIGNsaWVudENsYXNzLT5sb2FkX2ZhaWxlZCA9IHdlYmtpdFdlYkxvYWRlckNs
aWVudExvYWRGYWlsZWQ7CiAKICAgICAvKioKLSAgICAgKiBXZWJLaXRXZWJMb2FkZXJDbGllbnQ6
d2ViLXZpZXc6Ci0gICAgICoKLSAgICAgKiBUaGUgI1dlYktpdFdlYlZpZXcgb2YgdGhlIGxvYWRl
ciBjbGllbnQuCi0gICAgICovCi0gICAgZ19vYmplY3RfY2xhc3NfaW5zdGFsbF9wcm9wZXJ0eShv
YmplY3RDbGFzcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBST1BfV0VC
X1ZJRVcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnX3BhcmFtX3NwZWNf
b2JqZWN0KCJ3ZWItdmlldyIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICJXZWIgVmlldyIsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJUaGUgd2ViIHZpZXcgZm9yIHRoZSBsb2Fk
ZXIgY2xpZW50IiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgV0VCS0lUX1RZUEVfV0VCX1ZJRVcsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRpY19jYXN0PEdQYXJhbUZsYWdz
PihXRUJLSVRfUEFSQU1fUkVBRFdSSVRFIHwgR19QQVJBTV9DT05TVFJVQ1RfT05MWSkpKTsKLSAg
ICAvKioKLSAgICAgKiBXZWJLaXRXZWJMb2FkZXJDbGllbnQ6ZXN0aW1hdGVkLXByb2dyZXNzOgot
ICAgICAqCi0gICAgICogQW4gZXN0aW1hdGUgb2YgdGhlIHBlcmNlbnQgY29tcGxldGlvbiBmb3Ig
dGhlIGN1cnJlbnQgbG9hZGluZyBvcGVyYXRpb24uCi0gICAgICogVGhpcyB2YWx1ZSB3aWxsIHJh
bmdlIGZyb20gMC4wIHRvIDEuMCBhbmQsIG9uY2UgYSBsb2FkIGNvbXBsZXRlcywKLSAgICAgKiB3
aWxsIHJlbWFpbiBhdCAxLjAgdW50aWwgYSBuZXcgbG9hZCBzdGFydHMsIGF0IHdoaWNoIHBvaW50
IGl0Ci0gICAgICogd2lsbCBiZSByZXNldCB0byAwLjAuCi0gICAgICogVGhlIHZhbHVlIGlzIGFu
IGVzdGltYXRlIGJhc2VkIG9uIHRoZSB0b3RhbCBudW1iZXIgb2YgYnl0ZXMgZXhwZWN0ZWQKLSAg
ICAgKiB0byBiZSByZWNlaXZlZCBmb3IgYSBkb2N1bWVudCwgaW5jbHVkaW5nIGFsbCBpdHMgcG9z
c2libGUgc3VicmVzb3VyY2VzLgotICAgICAqLwotICAgIGdfb2JqZWN0X2NsYXNzX2luc3RhbGxf
cHJvcGVydHkob2JqZWN0Q2xhc3MsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBQUk9QX0VTVElNQVRFRF9QUk9HUkVTUywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGdfcGFyYW1fc3BlY19kb3VibGUoImVzdGltYXRlZC1wcm9ncmVzcyIsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJFc3RpbWF0
ZWQgUHJvZ3Jlc3MiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAiQW4gZXN0aW1hdGUgb2YgdGhlIHBlcmNlbnQgY29tcGxldGlvbiBmb3Ig
YSBkb2N1bWVudCBsb2FkIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgMC4wLCAxLjAsIDAuMCwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV0VCS0lUX1BBUkFNX1JFQURBQkxFKSk7
Ci0KLSAgICAvKioKICAgICAgKiBXZWJLaXRXZWJMb2FkZXJDbGllbnQ6OnByb3Zpc2lvbmFsLWxv
YWQtc3RhcnRlZDoKICAgICAgKiBAbG9hZGVyX2NsaWVudDogdGhlICNXZWJLaXRXZWJMb2FkZXJD
bGllbnQKKyAgICAgKiBAd2ViX3ZpZXc6IHRoZSAjV2ViS2l0V2ViVmlldyBhc3NvY2lhdGVkIHdp
dGggdGhpcyBldmVudAogICAgICAqCiAgICAgICogVGhpcyBzaWduYWwgaXMgZW1pdHRlZCB3aGVu
IG5ldyBsb2FkIHJlcXVlc3QgaXMgbWFkZS4KICAgICAgKiBObyBkYXRhIGhhcyBiZWVuIHJlY2Vp
dmVkIHlldCwgZW1wdHkgc3RydWN0dXJlcyBoYXZlCkBAIC0yOTAsMTMgKzIxNSwxNCBAQCBzdGF0
aWMgdm9pZCB3ZWJraXRfd2ViX2xvYWRlcl9jbGllbnRfY2xhc3NfaW5pdChXZWJLaXRXZWJMb2Fk
ZXJDbGllbnRDbGFzcyogY2xpZQogICAgICAgICAgICAgICAgICAgICAgR19TSUdOQUxfUlVOX0xB
U1QsCiAgICAgICAgICAgICAgICAgICAgICBHX1NUUlVDVF9PRkZTRVQoV2ViS2l0V2ViTG9hZGVy
Q2xpZW50Q2xhc3MsIHByb3Zpc2lvbmFsX2xvYWRfc3RhcnRlZCksCiAgICAgICAgICAgICAgICAg
ICAgICBnX3NpZ25hbF9hY2N1bXVsYXRvcl90cnVlX2hhbmRsZWQsIE5VTEwsCi0gICAgICAgICAg
ICAgICAgICAgICB3ZWJraXRfbWFyc2hhbF9CT09MRUFOX19WT0lELAotICAgICAgICAgICAgICAg
ICAgICAgR19UWVBFX0JPT0xFQU4sIDAsCi0gICAgICAgICAgICAgICAgICAgICBHX1RZUEVfTk9O
RSk7CisgICAgICAgICAgICAgICAgICAgICB3ZWJraXRfbWFyc2hhbF9CT09MRUFOX19PQkpFQ1Qs
CisgICAgICAgICAgICAgICAgICAgICBHX1RZUEVfQk9PTEVBTiwgMSwKKyAgICAgICAgICAgICAg
ICAgICAgIFdFQktJVF9UWVBFX1dFQl9WSUVXKTsKIAogICAgIC8qKgogICAgICAqIFdlYktpdFdl
YkxvYWRlckNsaWVudDo6cHJvdmlzaW9uYWwtbG9hZC1yZWNlaXZlZC1zZXJ2ZXItcmVkaXJlY3Q6
CiAgICAgICogQGxvYWRlcl9jbGllbnQ6IHRoZSAjV2ViS2l0V2ViTG9hZGVyQ2xpZW50CisgICAg
ICogQHdlYl92aWV3OiB0aGUgI1dlYktpdFdlYlZpZXcgYXNzb2NpYXRlZCB3aXRoIHRoaXMgZXZl
bnQKICAgICAgKgogICAgICAqIFRoaXMgc2lnbmFsIGlzIGVtaXR0ZWQgd2hlbiBhIHByb3Zpc2lv
bmFsIGRhdGEgc291cmNlCiAgICAgICogcmVjZWl2ZXMgYSBzZXJ2ZXIgcmVkaXJlY3QuCkBAIC0z
MTIsMTMgKzIzOCwxNCBAQCBzdGF0aWMgdm9pZCB3ZWJraXRfd2ViX2xvYWRlcl9jbGllbnRfY2xh
c3NfaW5pdChXZWJLaXRXZWJMb2FkZXJDbGllbnRDbGFzcyogY2xpZQogICAgICAgICAgICAgICAg
ICAgICAgR19TSUdOQUxfUlVOX0xBU1QsCiAgICAgICAgICAgICAgICAgICAgICBHX1NUUlVDVF9P
RkZTRVQoV2ViS2l0V2ViTG9hZGVyQ2xpZW50Q2xhc3MsIHByb3Zpc2lvbmFsX2xvYWRfcmVjZWl2
ZWRfc2VydmVyX3JlZGlyZWN0KSwKICAgICAgICAgICAgICAgICAgICAgIGdfc2lnbmFsX2FjY3Vt
dWxhdG9yX3RydWVfaGFuZGxlZCwgTlVMTCwKLSAgICAgICAgICAgICAgICAgICAgIHdlYmtpdF9t
YXJzaGFsX0JPT0xFQU5fX1ZPSUQsCi0gICAgICAgICAgICAgICAgICAgICBHX1RZUEVfQk9PTEVB
TiwgMCwKLSAgICAgICAgICAgICAgICAgICAgIEdfVFlQRV9OT05FKTsKKyAgICAgICAgICAgICAg
ICAgICAgIHdlYmtpdF9tYXJzaGFsX0JPT0xFQU5fX09CSkVDVCwKKyAgICAgICAgICAgICAgICAg
ICAgIEdfVFlQRV9CT09MRUFOLCAxLAorICAgICAgICAgICAgICAgICAgICAgV0VCS0lUX1RZUEVf
V0VCX1ZJRVcpOwogCiAgICAgLyoqCiAgICAgICogV2ViS2l0V2ViTG9hZGVyQ2xpZW50Ojpwcm92
aXNpb25hbC1sb2FkLWZhaWxlZDoKICAgICAgKiBAbG9hZGVyX2NsaWVudDogdGhlICNXZWJLaXRX
ZWJMb2FkZXJDbGllbnQKKyAgICAgKiBAd2ViX3ZpZXc6IHRoZSAjV2ViS2l0V2ViVmlldyBhc3Nv
Y2lhdGVkIHdpdGggdGhpcyBldmVudAogICAgICAqIEBlcnJvcjogdGhlICNHRXJyb3IgdGhhdCB3
YXMgdHJpZ2dlcmVkCiAgICAgICoKICAgICAgKiBUaGlzIHNpZ25hbCBpcyBlbWl0dGVkIHdoZW4g
YW4gZXJyb3Igb2NjdXJzIHdoZW4gc3RhcnRpbmcgdG8KQEAgLTMzOCwxNCArMjY1LDE2IEBAIHN0
YXRpYyB2b2lkIHdlYmtpdF93ZWJfbG9hZGVyX2NsaWVudF9jbGFzc19pbml0KFdlYktpdFdlYkxv
YWRlckNsaWVudENsYXNzKiBjbGllCiAgICAgICAgICAgICAgICAgICAgICBHX1NJR05BTF9SVU5f
TEFTVCwKICAgICAgICAgICAgICAgICAgICAgIEdfU1RSVUNUX09GRlNFVChXZWJLaXRXZWJMb2Fk
ZXJDbGllbnRDbGFzcywgcHJvdmlzaW9uYWxfbG9hZF9mYWlsZWQpLAogICAgICAgICAgICAgICAg
ICAgICAgZ19zaWduYWxfYWNjdW11bGF0b3JfdHJ1ZV9oYW5kbGVkLCBOVUxMLAotICAgICAgICAg
ICAgICAgICAgICAgd2Via2l0X21hcnNoYWxfQk9PTEVBTl9fU1RSSU5HX1BPSU5URVIsCi0gICAg
ICAgICAgICAgICAgICAgICBHX1RZUEVfQk9PTEVBTiwgMiwKKyAgICAgICAgICAgICAgICAgICAg
IHdlYmtpdF9tYXJzaGFsX0JPT0xFQU5fX09CSkVDVF9TVFJJTkdfUE9JTlRFUiwKKyAgICAgICAg
ICAgICAgICAgICAgIEdfVFlQRV9CT09MRUFOLCAzLAorICAgICAgICAgICAgICAgICAgICAgV0VC
S0lUX1RZUEVfV0VCX1ZJRVcsCiAgICAgICAgICAgICAgICAgICAgICBHX1RZUEVfU1RSSU5HLAog
ICAgICAgICAgICAgICAgICAgICAgR19UWVBFX1BPSU5URVIpOwogCiAgICAgLyoqCiAgICAgICog
V2ViS2l0V2ViTG9hZGVyQ2xpZW50Ojpsb2FkLWNvbW1pdHRlZDoKICAgICAgKiBAbG9hZGVyX2Ns
aWVudDogdGhlICNXZWJLaXRXZWJMb2FkZXJDbGllbnQKKyAgICAgKiBAd2ViX3ZpZXc6IHRoZSAj
V2ViS2l0V2ViVmlldyBhc3NvY2lhdGVkIHdpdGggdGhpcyBldmVudAogICAgICAqCiAgICAgICog
VGhpcyBzaWduYWwgaXMgZW1pdHRlZCB3aGVuIGNvbnRlbnQgc3RhcnRzIGFycml2aW5nIGZvciBh
IHBhZ2UgbG9hZC4KICAgICAgKiBUaGUgbmVjZXNzYXJ5IHRyYW5zcG9ydCByZXF1aXJlbWVudHMg
YXJlIHN0YWJpbGlzaGVkLCBhbmQgdGhlCkBAIC0zNjIsMTIgKzI5MSwxMyBAQCBzdGF0aWMgdm9p
ZCB3ZWJraXRfd2ViX2xvYWRlcl9jbGllbnRfY2xhc3NfaW5pdChXZWJLaXRXZWJMb2FkZXJDbGll
bnRDbGFzcyogY2xpZQogICAgICAgICAgICAgICAgICAgICAgR19TSUdOQUxfUlVOX0xBU1QsCiAg
ICAgICAgICAgICAgICAgICAgICBHX1NUUlVDVF9PRkZTRVQoV2ViS2l0V2ViTG9hZGVyQ2xpZW50
Q2xhc3MsIGxvYWRfY29tbWl0dGVkKSwKICAgICAgICAgICAgICAgICAgICAgIGdfc2lnbmFsX2Fj
Y3VtdWxhdG9yX3RydWVfaGFuZGxlZCwgTlVMTCwKLSAgICAgICAgICAgICAgICAgICAgIHdlYmtp
dF9tYXJzaGFsX0JPT0xFQU5fX1ZPSUQsCi0gICAgICAgICAgICAgICAgICAgICBHX1RZUEVfQk9P
TEVBTiwgMCwKLSAgICAgICAgICAgICAgICAgICAgIEdfVFlQRV9OT05FKTsKKyAgICAgICAgICAg
ICAgICAgICAgIHdlYmtpdF9tYXJzaGFsX0JPT0xFQU5fX09CSkVDVCwKKyAgICAgICAgICAgICAg
ICAgICAgIEdfVFlQRV9CT09MRUFOLCAxLAorICAgICAgICAgICAgICAgICAgICAgV0VCS0lUX1RZ
UEVfV0VCX1ZJRVcpOwogICAgIC8qKgogICAgICAqIFdlYktpdFdlYkxvYWRlckNsaWVudDo6bG9h
ZC1maW5pc2hlZDoKICAgICAgKiBAbG9hZGVyX2NsaWVudDogdGhlICNXZWJLaXRXZWJMb2FkZXJD
bGllbnQKKyAgICAgKiBAd2ViX3ZpZXc6IHRoZSAjV2ViS2l0V2ViVmlldyBhc3NvY2lhdGVkIHdp
dGggdGhpcyBldmVudAogICAgICAqCiAgICAgICogVGhpcyBzaWduYWwgaXMgZW1pdHRlZCB3aGVu
IGEgcGFnZSBsb2FkIGNvbXBsZXRlcywgdGhhdCBpcywgd2hlbiBhbGwKICAgICAgKiB0aGUgcmVz
b3VyY2VzIGFyZSBkb25lIGxvYWRpbmcgd2l0aCBubyBlcnJvci4gSW4gY2FzZSBvZiBlcnJvcnMK
QEAgLTM4NiwxMyArMzE2LDE0IEBAIHN0YXRpYyB2b2lkIHdlYmtpdF93ZWJfbG9hZGVyX2NsaWVu
dF9jbGFzc19pbml0KFdlYktpdFdlYkxvYWRlckNsaWVudENsYXNzKiBjbGllCiAgICAgICAgICAg
ICAgICAgICAgICBHX1NJR05BTF9SVU5fTEFTVCwKICAgICAgICAgICAgICAgICAgICAgIEdfU1RS
VUNUX09GRlNFVChXZWJLaXRXZWJMb2FkZXJDbGllbnRDbGFzcywgbG9hZF9maW5pc2hlZCksCiAg
ICAgICAgICAgICAgICAgICAgICBnX3NpZ25hbF9hY2N1bXVsYXRvcl90cnVlX2hhbmRsZWQsIE5V
TEwsCi0gICAgICAgICAgICAgICAgICAgICB3ZWJraXRfbWFyc2hhbF9CT09MRUFOX19WT0lELAot
ICAgICAgICAgICAgICAgICAgICAgR19UWVBFX0JPT0xFQU4sIDAsCi0gICAgICAgICAgICAgICAg
ICAgICBHX1RZUEVfTk9ORSk7CisgICAgICAgICAgICAgICAgICAgICB3ZWJraXRfbWFyc2hhbF9C
T09MRUFOX19PQkpFQ1QsCisgICAgICAgICAgICAgICAgICAgICBHX1RZUEVfQk9PTEVBTiwgMSwK
KyAgICAgICAgICAgICAgICAgICAgIFdFQktJVF9UWVBFX1dFQl9WSUVXKTsKIAogICAgIC8qKgog
ICAgICAqIFdlYktpdFdlYkxvYWRlckNsaWVudDo6bG9hZC1mYWlsZWQ6CiAgICAgICogQGxvYWRl
cl9jbGllbnQ6IHRoZSAjV2ViS2l0V2ViTG9hZGVyQ2xpZW50CisgICAgICogQHdlYl92aWV3OiB0
aGUgI1dlYktpdFdlYlZpZXcgYXNzb2NpYXRlZCB3aXRoIHRoaXMgZXZlbnQKICAgICAgKiBAZXJy
b3I6IHRoZSAjR0Vycm9yIHRoYXQgd2FzIHRyaWdnZXJlZAogICAgICAqCiAgICAgICogVGhpcyBz
aWduYWwgaXMgZW1pdHRlZCB3aGVuIGFuIGVycm9yIG9jY3VycyBsb2FkaW5nIGEgY29tbWl0dGVk
IGRhdGEgc291cmNlLgpAQCAtNDExLDI4ICszNDIsMTEgQEAgc3RhdGljIHZvaWQgd2Via2l0X3dl
Yl9sb2FkZXJfY2xpZW50X2NsYXNzX2luaXQoV2ViS2l0V2ViTG9hZGVyQ2xpZW50Q2xhc3MqIGNs
aWUKICAgICAgICAgICAgICAgICAgICAgIEdfU0lHTkFMX1JVTl9MQVNULAogICAgICAgICAgICAg
ICAgICAgICAgR19TVFJVQ1RfT0ZGU0VUKFdlYktpdFdlYkxvYWRlckNsaWVudENsYXNzLCBsb2Fk
X2ZhaWxlZCksCiAgICAgICAgICAgICAgICAgICAgICBnX3NpZ25hbF9hY2N1bXVsYXRvcl90cnVl
X2hhbmRsZWQsIE5VTEwsCi0gICAgICAgICAgICAgICAgICAgICB3ZWJraXRfbWFyc2hhbF9CT09M
RUFOX19TVFJJTkdfUE9JTlRFUiwKLSAgICAgICAgICAgICAgICAgICAgIEdfVFlQRV9CT09MRUFO
LCAyLAorICAgICAgICAgICAgICAgICAgICAgd2Via2l0X21hcnNoYWxfQk9PTEVBTl9fT0JKRUNU
X1NUUklOR19QT0lOVEVSLAorICAgICAgICAgICAgICAgICAgICAgR19UWVBFX0JPT0xFQU4sIDMs
CisgICAgICAgICAgICAgICAgICAgICBXRUJLSVRfVFlQRV9XRUJfVklFVywKICAgICAgICAgICAg
ICAgICAgICAgIEdfVFlQRV9TVFJJTkcsCiAgICAgICAgICAgICAgICAgICAgICBHX1RZUEVfUE9J
TlRFUik7CiAKICAgICBnX3R5cGVfY2xhc3NfYWRkX3ByaXZhdGUoY2xpZW50Q2xhc3MsIHNpemVv
ZihXZWJLaXRXZWJMb2FkZXJDbGllbnRQcml2YXRlKSk7CiB9Ci0KLS8qKgotICogd2Via2l0X3dl
Yl9sb2FkZXJfY2xpZW50X2dldF9lc3RpbWF0ZWRfcHJvZ3Jlc3M6Ci0gKiBAY2xpZW50OiBhICNX
ZWJLaXRXZWJMb2FkZXJDbGllbnQKLSAqCi0gKiBHZXRzIHRoZSB2YWx1ZSBvZiAjV2ViS2l0V2Vi
TG9hZGVyQ2xpZW50OmVzdGltYXRlZC1wcm9ncmVzcy4KLSAqIFlvdSBjYW4gbW9uaXRvciB0aGUg
ZXN0aW1hdGVkIHByb2dyZXNzIG9mIGEgbG9hZCBvcGVyYXRpb24gYnkKLSAqIGNvbm5lY3Rpbmcg
dG8gdGhlIDo6bm90aWZ5IHNpZ25hbCBvZiBAY2xpZW50LgotICoKLSAqIFJldHVybnM6IGFuIGVz
dGltYXRlIG9mIHRoZSBvZiB0aGUgcGVyY2VudCBjb21wbGV0ZSBmb3IgYSBkb2N1bWVudAotICog
ICAgIGxvYWQgYXMgYSByYW5nZSBmcm9tIDAuMCB0byAxLjAuCi0gKi8KLWdkb3VibGUgd2Via2l0
X3dlYl9sb2FkZXJfY2xpZW50X2dldF9lc3RpbWF0ZWRfcHJvZ3Jlc3MoV2ViS2l0V2ViTG9hZGVy
Q2xpZW50KiBjbGllbnQpCi17Ci0gICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoV0VCS0lUX0lTX1dF
Ql9MT0FERVJfQ0xJRU5UKGNsaWVudCksIDAuKTsKLQotICAgIHJldHVybiBjbGllbnQtPnByaXYt
PmVzdGltYXRlZFByb2dyZXNzOwotfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9ndGsvV2ViS2l0V2ViTG9hZGVyQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJMb2FkZXJDbGllbnQuaAppbmRleCBmMTk1MmM1OGRhMzE2
OTY1NzhlNWZkOTMzNjY5YzFkNDhkMzNmYzcwLi42OTNlMTU2NGQyZTM1ZDFjN2Y4OGY5OTdkNTY1
NTk4YmQzYmRmNDBlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0
ay9XZWJLaXRXZWJMb2FkZXJDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL2d0ay9XZWJLaXRXZWJMb2FkZXJDbGllbnQuaApAQCAtMzYsOCArMzYsNiBAQCBHX0JFR0lO
X0RFQ0xTCiAjZGVmaW5lIFdFQktJVF9JU19XRUJfTE9BREVSX0NMSUVOVF9DTEFTUyhrbGFzcykg
KEdfVFlQRV9DSEVDS19DTEFTU19UWVBFKChrbGFzcyksICBXRUJLSVRfVFlQRV9XRUJfTE9BREVS
X0NMSUVOVCkpCiAjZGVmaW5lIFdFQktJVF9XRUJfTE9BREVSX0NMSUVOVF9HRVRfQ0xBU1Mob2Jq
KSAgKEdfVFlQRV9JTlNUQU5DRV9HRVRfQ0xBU1MoKG9iaiksICBXRUJLSVRfVFlQRV9XRUJfTE9B
REVSX0NMSUVOVCwgV2ViS2l0V2ViTG9hZGVyQ2xpZW50Q2xhc3MpKQogCi10eXBlZGVmIHN0cnVj
dCBfV2ViS2l0V2ViTG9hZGVyQ2xpZW50ICAgICAgICBXZWJLaXRXZWJMb2FkZXJDbGllbnQ7Ci10
eXBlZGVmIHN0cnVjdCBfV2ViS2l0V2ViTG9hZGVyQ2xpZW50Q2xhc3MgICBXZWJLaXRXZWJMb2Fk
ZXJDbGllbnRDbGFzczsKIHR5cGVkZWYgc3RydWN0IF9XZWJLaXRXZWJMb2FkZXJDbGllbnRQcml2
YXRlIFdlYktpdFdlYkxvYWRlckNsaWVudFByaXZhdGU7CiAKIHN0cnVjdCBfV2ViS2l0V2ViTG9h
ZGVyQ2xpZW50IHsKQEAgLTUwLDE0ICs0OCwyMCBAQCBzdHJ1Y3QgX1dlYktpdFdlYkxvYWRlckNs
aWVudENsYXNzIHsKICAgICBHT2JqZWN0Q2xhc3MgcGFyZW50X2NsYXNzOwogCiAgICAgLyogdmly
dHVhbCB0YWJsZSAqLwotICAgIGdib29sZWFuICgqIHByb3Zpc2lvbmFsX2xvYWRfc3RhcnRlZCkg
ICAgICAgICAgICAgICAgICAoV2ViS2l0V2ViTG9hZGVyQ2xpZW50ICpsb2FkZXJfY2xpZW50KTsK
LSAgICBnYm9vbGVhbiAoKiBwcm92aXNpb25hbF9sb2FkX3JlY2VpdmVkX3NlcnZlcl9yZWRpcmVj
dCkgKFdlYktpdFdlYkxvYWRlckNsaWVudCAqbG9hZGVyX2NsaWVudCk7CisgICAgZ2Jvb2xlYW4g
KCogcHJvdmlzaW9uYWxfbG9hZF9zdGFydGVkKSAgICAgICAgICAgICAgICAgIChXZWJLaXRXZWJM
b2FkZXJDbGllbnQgKmxvYWRlcl9jbGllbnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXZWJLaXRXZWJWaWV3ICAgICAgICAgKndl
Yl92aWV3KTsKKyAgICBnYm9vbGVhbiAoKiBwcm92aXNpb25hbF9sb2FkX3JlY2VpdmVkX3NlcnZl
cl9yZWRpcmVjdCkgKFdlYktpdFdlYkxvYWRlckNsaWVudCAqbG9hZGVyX2NsaWVudCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdl
YktpdFdlYlZpZXcgICAgICAgICAqd2ViX3ZpZXcpOwogICAgIGdib29sZWFuICgqIHByb3Zpc2lv
bmFsX2xvYWRfZmFpbGVkKSAgICAgICAgICAgICAgICAgICAoV2ViS2l0V2ViTG9hZGVyQ2xpZW50
ICpsb2FkZXJfY2xpZW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgV2ViS2l0V2ViVmlldyAgICAgICAgICp3ZWJfdmlldywKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IGdjaGFyICAgICAgICAgICAqZmFpbGluZ191cmksCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHRXJyb3IgICAgICAgICAg
ICAgICAgKmVycm9yKTsKLSAgICBnYm9vbGVhbiAoKiBsb2FkX2NvbW1pdHRlZCkgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgKFdlYktpdFdlYkxvYWRlckNsaWVudCAqbG9hZGVyX2NsaWVudCk7
Ci0gICAgZ2Jvb2xlYW4gKCogbG9hZF9maW5pc2hlZCkgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIChXZWJLaXRXZWJMb2FkZXJDbGllbnQgKmxvYWRlcl9jbGllbnQpOworICAgIGdib29sZWFu
ICgqIGxvYWRfY29tbWl0dGVkKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAoV2ViS2l0V2Vi
TG9hZGVyQ2xpZW50ICpsb2FkZXJfY2xpZW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV2ViS2l0V2ViVmlldyAgICAgICAgICp3
ZWJfdmlldyk7CisgICAgZ2Jvb2xlYW4gKCogbG9hZF9maW5pc2hlZCkgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIChXZWJLaXRXZWJMb2FkZXJDbGllbnQgKmxvYWRlcl9jbGllbnQsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBX
ZWJLaXRXZWJWaWV3ICAgICAgICAgKndlYl92aWV3KTsKICAgICBnYm9vbGVhbiAoKiBsb2FkX2Zh
aWxlZCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFdlYktpdFdlYkxvYWRlckNsaWVu
dCAqbG9hZGVyX2NsaWVudCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFdlYktpdFdlYlZpZXcgICAgICAgICAqd2ViX3ZpZXcsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCBnY2hhciAgICAgICAgICAgKmZhaWxpbmdfdXJpLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0Vycm9yICAgICAgICAg
ICAgICAgICplcnJvcik7CiB9OwpAQCAtNjUsOSArNjksNiBAQCBzdHJ1Y3QgX1dlYktpdFdlYkxv
YWRlckNsaWVudENsYXNzIHsKIFdFQktJVF9BUEkgR1R5cGUKIHdlYmtpdF93ZWJfbG9hZGVyX2Ns
aWVudF9nZXRfdHlwZSAgICAgICAgICAgICAgICh2b2lkKTsKIAotV0VCS0lUX0FQSSBnZG91Ymxl
Ci13ZWJraXRfd2ViX2xvYWRlcl9jbGllbnRfZ2V0X2VzdGltYXRlZF9wcm9ncmVzcyAoV2ViS2l0
V2ViTG9hZGVyQ2xpZW50KiBjbGllbnQpOwotCiBHX0VORF9ERUNMUwogCiAjZW5kaWYKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXcuY3Bw
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlldy5jcHAKaW5k
ZXggYzk4OWZiMGE4YThmOWNkNWI3MmZjMWRmMGYzMDFiZjkzNDM2MGFlNC4uNTM2NDgyMzZhNzE2
MzJiODkwOTI2MWY2Zjg0NTYwMDgwM2FlNGMwNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlldy5jcHAKKysrIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlldy5jcHAKQEAgLTIzLDYgKzIzLDcgQEAKICNp
bmNsdWRlICJXZWJLaXRXZWJDb250ZXh0UHJpdmF0ZS5oIgogI2luY2x1ZGUgIldlYktpdFdlYkxv
YWRlckNsaWVudC5oIgogI2luY2x1ZGUgIldlYktpdFdlYlZpZXdCYXNlUHJpdmF0ZS5oIgorI2lu
Y2x1ZGUgIldlYktpdFdlYlZpZXdQcml2YXRlLmgiCiAjaW5jbHVkZSAiV2ViS2l0UHJpdmF0ZS5o
IgogI2luY2x1ZGUgIldlYlBhZ2VQcm94eS5oIgogI2luY2x1ZGUgPFdlYkNvcmUvRHJhZ0ljb24u
aD4KQEAgLTM4LDExICszOSwxMyBAQCB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIGVudW0gewog
ICAgIFBST1BfMCwKIAotICAgIFBST1BfV0VCX0NPTlRFWFQKKyAgICBQUk9QX1dFQl9DT05URVhU
LAorICAgIFBST1BfRVNUSU1BVEVEX0xPQURfUFJPR1JFU1MKIH07CiAKIHN0cnVjdCBfV2ViS2l0
V2ViVmlld1ByaXZhdGUgewogICAgIFdlYktpdFdlYkNvbnRleHQqIGNvbnRleHQ7CisgICAgZG91
YmxlIGVzdGltYXRlZExvYWRQcm9ncmVzczsKIAogICAgIEdSZWZQdHI8V2ViS2l0V2ViTG9hZGVy
Q2xpZW50PiBsb2FkZXJDbGllbnQ7CiB9OwpAQCAtNTYsNyArNTksOCBAQCBzdGF0aWMgdm9pZCB3
ZWJraXRXZWJWaWV3Q29uc3RydWN0ZWQoR09iamVjdCogb2JqZWN0KQogCiAgICAgd2Via2l0V2Vi
Vmlld0Jhc2VDcmVhdGVXZWJQYWdlKFdFQktJVF9XRUJfVklFV19CQVNFKHdlYlZpZXcpLCB3ZWJr
aXRXZWJDb250ZXh0R2V0V0tDb250ZXh0KHByaXYtPmNvbnRleHQpLCAwKTsKIAotICAgIHByaXYt
PmxvYWRlckNsaWVudCA9IGFkb3B0R1JlZihXRUJLSVRfV0VCX0xPQURFUl9DTElFTlQoZ19vYmpl
Y3RfbmV3KFdFQktJVF9UWVBFX1dFQl9MT0FERVJfQ0xJRU5ULCAid2ViLXZpZXciLCB3ZWJWaWV3
LCBOVUxMKSkpOworICAgIHN0YXRpYyBHUmVmUHRyPFdlYktpdFdlYkxvYWRlckNsaWVudD4gZGVm
YXVsdExvYWRlckNsaWVudCA9IGFkb3B0R1JlZihXRUJLSVRfV0VCX0xPQURFUl9DTElFTlQoZ19v
YmplY3RfbmV3KFdFQktJVF9UWVBFX1dFQl9MT0FERVJfQ0xJRU5ULCBOVUxMKSkpOworICAgIHdl
YmtpdF93ZWJfdmlld19zZXRfbG9hZGVyX2NsaWVudCh3ZWJWaWV3LCBkZWZhdWx0TG9hZGVyQ2xp
ZW50LmdldCgpKTsKIH0KIAogc3RhdGljIHZvaWQgd2Via2l0V2ViVmlld1NldFByb3BlcnR5KEdP
YmplY3QqIG9iamVjdCwgZ3VpbnQgcHJvcElkLCBjb25zdCBHVmFsdWUqIHZhbHVlLCBHUGFyYW1T
cGVjKiBwYXJhbVNwZWMpCkBAIC04MCw2ICs4NCw5IEBAIHN0YXRpYyB2b2lkIHdlYmtpdFdlYlZp
ZXdHZXRQcm9wZXJ0eShHT2JqZWN0KiBvYmplY3QsIGd1aW50IHByb3BJZCwgR1ZhbHVlKiB2YWx1
CiAgICAgY2FzZSBQUk9QX1dFQl9DT05URVhUOgogICAgICAgICBnX3ZhbHVlX3Rha2Vfb2JqZWN0
KHZhbHVlLCB3ZWJWaWV3LT5wcml2LT5jb250ZXh0KTsKICAgICAgICAgYnJlYWs7CisgICAgY2Fz
ZSBQUk9QX0VTVElNQVRFRF9MT0FEX1BST0dSRVNTOgorICAgICAgICBnX3ZhbHVlX3NldF9kb3Vi
bGUodmFsdWUsIHdlYmtpdF93ZWJfdmlld19nZXRfZXN0aW1hdGVkX2xvYWRfcHJvZ3Jlc3Mod2Vi
VmlldykpOworICAgICAgICBicmVhazsKICAgICBkZWZhdWx0OgogICAgICAgICBHX09CSkVDVF9X
QVJOX0lOVkFMSURfUFJPUEVSVFlfSUQob2JqZWN0LCBwcm9wSWQsIHBhcmFtU3BlYyk7CiAgICAg
fQpAQCAtMTIxLDkgKzEyOCwzMyBAQCBzdGF0aWMgdm9pZCB3ZWJraXRfd2ViX3ZpZXdfY2xhc3Nf
aW5pdChXZWJLaXRXZWJWaWV3Q2xhc3MqIHdlYlZpZXdDbGFzcykKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlRoZSB3ZWIgY29udGV4dCBm
b3IgdGhlIHZpZXciLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBXRUJLSVRfVFlQRV9XRUJfQ09OVEVYVCwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGljX2Nhc3Q8R1BhcmFt
RmxhZ3M+KFdFQktJVF9QQVJBTV9SRUFEV1JJVEUgfCBHX1BBUkFNX0NPTlNUUlVDVF9PTkxZKSkp
OworICAgIC8qKgorICAgICAqIFdlYktpdFdlYlZpZXc6ZXN0aW1hdGVkLWxvYWQtcHJvZ3Jlc3M6
CisgICAgICoKKyAgICAgKiBBbiBlc3RpbWF0ZSBvZiB0aGUgcGVyY2VudCBjb21wbGV0aW9uIGZv
ciB0aGUgY3VycmVudCBsb2FkaW5nIG9wZXJhdGlvbi4KKyAgICAgKiBUaGlzIHZhbHVlIHdpbGwg
cmFuZ2UgZnJvbSAwLjAgdG8gMS4wIGFuZCwgb25jZSBhIGxvYWQgY29tcGxldGVzLAorICAgICAq
IHdpbGwgcmVtYWluIGF0IDEuMCB1bnRpbCBhIG5ldyBsb2FkIHN0YXJ0cywgYXQgd2hpY2ggcG9p
bnQgaXQKKyAgICAgKiB3aWxsIGJlIHJlc2V0IHRvIDAuMC4KKyAgICAgKiBUaGUgdmFsdWUgaXMg
YW4gZXN0aW1hdGUgYmFzZWQgb24gdGhlIHRvdGFsIG51bWJlciBvZiBieXRlcyBleHBlY3RlZAor
ICAgICAqIHRvIGJlIHJlY2VpdmVkIGZvciBhIGRvY3VtZW50LCBpbmNsdWRpbmcgYWxsIGl0cyBw
b3NzaWJsZSBzdWJyZXNvdXJjZXMKKyAgICAgKiBhbmQgY2hpbGQgZG9jdW1lbnRzLgorICAgICAq
LworICAgIGdfb2JqZWN0X2NsYXNzX2luc3RhbGxfcHJvcGVydHkoZ09iamVjdENsYXNzLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUFJPUF9FU1RJTUFURURfTE9BRF9QUk9H
UkVTUywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdfcGFyYW1fc3BlY19k
b3VibGUoImVzdGltYXRlZC1sb2FkLXByb2dyZXNzIiwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkVzdGltYXRlZCBMb2FkIFByb2dyZXNz
IiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIkFuIGVzdGltYXRlIG9mIHRoZSBwZXJjZW50IGNvbXBsZXRpb24gZm9yIGEgZG9jdW1lbnQg
bG9hZCIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIDAuMCwgMS4wLCAwLjAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFdFQktJVF9QQVJBTV9SRUFEQUJMRSkpOwogfQogCi0vLyBQ
dWJsaWMgQVBJLgordm9pZCB3ZWJraXRXZWJWaWV3U2V0RXN0aW1hdGVkTG9hZFByb2dyZXNzKFdl
YktpdFdlYlZpZXcqIHdlYlZpZXcsIGRvdWJsZSBlc3RpbWF0ZWRMb2FkUHJvZ3Jlc3MpCit7Cisg
ICAgaWYgKHdlYlZpZXctPnByaXYtPmVzdGltYXRlZExvYWRQcm9ncmVzcyA9PSBlc3RpbWF0ZWRM
b2FkUHJvZ3Jlc3MpCisgICAgICAgIHJldHVybjsKKyAgICB3ZWJWaWV3LT5wcml2LT5lc3RpbWF0
ZWRMb2FkUHJvZ3Jlc3MgPSBlc3RpbWF0ZWRMb2FkUHJvZ3Jlc3M7CisgICAgZ19vYmplY3Rfbm90
aWZ5KEdfT0JKRUNUKHdlYlZpZXcpLCAiZXN0aW1hdGVkLWxvYWQtcHJvZ3Jlc3MiKTsKK30KIAog
LyoqCiAgKiB3ZWJraXRfd2ViX3ZpZXdfbmV3OgpAQCAtMjAxLDYgKzIzMiw4IEBAIHZvaWQgd2Vi
a2l0X3dlYl92aWV3X3NldF9sb2FkZXJfY2xpZW50KFdlYktpdFdlYlZpZXcqIHdlYlZpZXcsIFdl
YktpdFdlYkxvYWRlckNsCiAgICAgaWYgKHByaXYtPmxvYWRlckNsaWVudC5nZXQoKSA9PSBsb2Fk
ZXJDbGllbnQpCiAgICAgICAgIHJldHVybjsKIAorICAgIFdlYlBhZ2VQcm94eSogcGFnZSA9IHdl
YmtpdFdlYlZpZXdCYXNlR2V0UGFnZShXRUJLSVRfV0VCX1ZJRVdfQkFTRSh3ZWJWaWV3KSk7Cisg
ICAgYXR0YWNoTG9hZGVyQ2xpZW50VG9QYWdlKHRvQVBJKHBhZ2UpLCBsb2FkZXJDbGllbnQpOwog
ICAgIHByaXYtPmxvYWRlckNsaWVudCA9IGxvYWRlckNsaWVudDsKIH0KIApAQCAtMjgyLDMgKzMx
NSwyMCBAQCB2b2lkIHdlYmtpdF93ZWJfdmlld19nb19mb3J3YXJkKFdlYktpdFdlYlZpZXcqIHdl
YlZpZXcpCiAgICAgV2ViUGFnZVByb3h5KiBwYWdlID0gd2Via2l0V2ViVmlld0Jhc2VHZXRQYWdl
KFdFQktJVF9XRUJfVklFV19CQVNFKHdlYlZpZXcpKTsKICAgICBXS1BhZ2VHb0ZvcndhcmQodG9B
UEkocGFnZSkpOwogfQorCisvKioKKyAqIHdlYmtpdF93ZWJfdmlld19nZXRfZXN0aW1hdGVkX2xv
YWRfcHJvZ3Jlc3M6CisgKiBAd2ViX3ZpZXc6IGEgI1dlYktpdFdlYlZpZXcKKyAqCisgKiBHZXRz
IHRoZSB2YWx1ZSBvZiAjV2ViS2l0V2ViVmlldzplc3RpbWF0ZWQtbG9hZC1wcm9ncmVzcy4KKyAq
IFlvdSBjYW4gbW9uaXRvciB0aGUgZXN0aW1hdGVkIHByb2dyZXNzIG9mIGEgbG9hZCBvcGVyYXRp
b24gYnkKKyAqIGNvbm5lY3RpbmcgdG8gdGhlIDo6bm90aWZ5IHNpZ25hbCBvZiBAd2ViX3ZpZXcu
CisgKgorICogUmV0dXJuczogYW4gZXN0aW1hdGUgb2YgdGhlIG9mIHRoZSBwZXJjZW50IGNvbXBs
ZXRlIGZvciBhIGRvY3VtZW50CisgKiAgICAgbG9hZCBhcyBhIHJhbmdlIGZyb20gMC4wIHRvIDEu
MC4KKyAqLworZ2RvdWJsZSB3ZWJraXRfd2ViX3ZpZXdfZ2V0X2VzdGltYXRlZF9sb2FkX3Byb2dy
ZXNzKFdlYktpdFdlYlZpZXcqIHdlYlZpZXcpCit7CisgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwo
V0VCS0lUX0lTX1dFQl9WSUVXKHdlYlZpZXcpLCAwKTsKKyAgICByZXR1cm4gd2ViVmlldy0+cHJp
di0+ZXN0aW1hdGVkTG9hZFByb2dyZXNzOworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlldy5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlldy5oCmluZGV4IGRlMjZhODU5M2M1ZjVkMzQwYWQ0ZDM5
YTNhNzIyYjA1MGVhMTFlOTMuLjZlZTNiZTczMTg0OWI3NmM5YzRkOTA1YmEyOTVhODEwNzUwZTZj
NWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdl
YlZpZXcuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJW
aWV3LmgKQEAgLTQxLDggKzQxLDYgQEAgR19CRUdJTl9ERUNMUwogI2RlZmluZSBXRUJLSVRfSVNf
V0VCX1ZJRVdfQ0xBU1Moa2xhc3MpIChHX1RZUEVfQ0hFQ0tfQ0xBU1NfVFlQRSgoa2xhc3MpLCAg
V0VCS0lUX1RZUEVfV0VCX1ZJRVcpKQogI2RlZmluZSBXRUJLSVRfV0VCX1ZJRVdfR0VUX0NMQVNT
KG9iaikgIChHX1RZUEVfSU5TVEFOQ0VfR0VUX0NMQVNTKChvYmopLCAgV0VCS0lUX1RZUEVfV0VC
X1ZJRVcsIFdlYktpdFdlYlZpZXdDbGFzcykpCiAKLXR5cGVkZWYgc3RydWN0IF9XZWJLaXRXZWJW
aWV3ICAgICAgICBXZWJLaXRXZWJWaWV3OwotdHlwZWRlZiBzdHJ1Y3QgX1dlYktpdFdlYlZpZXdD
bGFzcyAgIFdlYktpdFdlYlZpZXdDbGFzczsKIHR5cGVkZWYgc3RydWN0IF9XZWJLaXRXZWJWaWV3
UHJpdmF0ZSBXZWJLaXRXZWJWaWV3UHJpdmF0ZTsKIAogc3RydWN0IF9XZWJLaXRXZWJWaWV3IHsK
QEAgLTY3LDM5ICs2NSw0MiBAQCBzdHJ1Y3QgX1dlYktpdFdlYlZpZXdDbGFzcyB7CiB9OwogCiBX
RUJLSVRfQVBJIEdUeXBlCi13ZWJraXRfd2ViX3ZpZXdfZ2V0X3R5cGUgICAgICAgICAgICAodm9p
ZCk7Cit3ZWJraXRfd2ViX3ZpZXdfZ2V0X3R5cGUgICAgICAgICAgICAgICAgICAgICh2b2lkKTsK
IAogV0VCS0lUX0FQSSBHdGtXaWRnZXQgKgotd2Via2l0X3dlYl92aWV3X25ldyAgICAgICAgICAg
ICAgICAgKHZvaWQpOword2Via2l0X3dlYl92aWV3X25ldyAgICAgICAgICAgICAgICAgICAgICAg
ICAodm9pZCk7CiAKIFdFQktJVF9BUEkgR3RrV2lkZ2V0ICoKLXdlYmtpdF93ZWJfdmlld19uZXdf
d2l0aF9jb250ZXh0ICAgIChXZWJLaXRXZWJDb250ZXh0ICAgICAgKmNvbnRleHQpOword2Via2l0
X3dlYl92aWV3X25ld193aXRoX2NvbnRleHQgICAgICAgICAgICAoV2ViS2l0V2ViQ29udGV4dCAg
ICAgICpjb250ZXh0KTsKIAogV0VCS0lUX0FQSSBXZWJLaXRXZWJDb250ZXh0ICoKLXdlYmtpdF93
ZWJfdmlld19nZXRfY29udGV4dCAgICAgICAgIChXZWJLaXRXZWJWaWV3ICAgICAgICAgKndlYl92
aWV3KTsKK3dlYmtpdF93ZWJfdmlld19nZXRfY29udGV4dCAgICAgICAgICAgICAgICAgKFdlYktp
dFdlYlZpZXcgICAgICAgICAqd2ViX3ZpZXcpOwogCiBXRUJLSVRfQVBJIFdlYktpdFdlYkxvYWRl
ckNsaWVudCAqCi13ZWJraXRfd2ViX3ZpZXdfZ2V0X2xvYWRlcl9jbGllbnQgICAoV2ViS2l0V2Vi
VmlldyAgICAgICAgICp3ZWJfdmlldyk7Cit3ZWJraXRfd2ViX3ZpZXdfZ2V0X2xvYWRlcl9jbGll
bnQgICAgICAgICAgIChXZWJLaXRXZWJWaWV3ICAgICAgICAgKndlYl92aWV3KTsKIAogV0VCS0lU
X0FQSSB2b2lkCi13ZWJraXRfd2ViX3ZpZXdfc2V0X2xvYWRlcl9jbGllbnQgICAoV2ViS2l0V2Vi
VmlldyAgICAgICAgICp3ZWJfdmlldywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBXZWJLaXRXZWJMb2FkZXJDbGllbnQgKmxvYWRlcl9jbGllbnQpOword2Via2l0X3dlYl92
aWV3X3NldF9sb2FkZXJfY2xpZW50ICAgICAgICAgICAoV2ViS2l0V2ViVmlldyAgICAgICAgICp3
ZWJfdmlldywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdl
YktpdFdlYkxvYWRlckNsaWVudCAqbG9hZGVyX2NsaWVudCk7CiAKIFdFQktJVF9BUEkgdm9pZAot
d2Via2l0X3dlYl92aWV3X2xvYWRfdXJpICAgICAgICAgICAgKFdlYktpdFdlYlZpZXcgICAgICAg
ICAqd2ViX3ZpZXcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
Z2NoYXIgICAgICAgICAgICp1cmkpOword2Via2l0X3dlYl92aWV3X2xvYWRfdXJpICAgICAgICAg
ICAgICAgICAgICAoV2ViS2l0V2ViVmlldyAgICAgICAgICp3ZWJfdmlldywKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdjaGFyICAgICAgICAgICAq
dXJpKTsKIAogV0VCS0lUX0FQSSB2b2lkCi13ZWJraXRfd2ViX3ZpZXdfbG9hZF9hbHRlcm5hdGVf
aHRtbCAoV2ViS2l0V2ViVmlldyAgICAgICAgICp3ZWJfdmlldywKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBnY2hhciAgICAgICAgICAgKmNvbnRlbnQsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2NoYXIgICAgICAgICAgICpi
YXNlX3VyaSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnY2hh
ciAgICAgICAgICAgKnVucmVhY2hhYmxlX3VyaSk7Cit3ZWJraXRfd2ViX3ZpZXdfbG9hZF9hbHRl
cm5hdGVfaHRtbCAgICAgICAgIChXZWJLaXRXZWJWaWV3ICAgICAgICAgKndlYl92aWV3LAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2NoYXIgICAg
ICAgICAgICpjb250ZW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3QgZ2NoYXIgICAgICAgICAgICpiYXNlX3VyaSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdjaGFyICAgICAgICAgICAqdW5yZWFj
aGFibGVfdXJpKTsKIAogV0VCS0lUX0FQSSB2b2lkCi13ZWJraXRfd2ViX3ZpZXdfZ29fYmFjayAg
ICAgICAgICAgICAoV2ViS2l0V2ViVmlldyAgICAgICAgICp3ZWJfdmlldyk7Cit3ZWJraXRfd2Vi
X3ZpZXdfZ29fYmFjayAgICAgICAgICAgICAgICAgICAgIChXZWJLaXRXZWJWaWV3ICAgICAgICAg
KndlYl92aWV3KTsKIAogV0VCS0lUX0FQSSB2b2lkCi13ZWJraXRfd2ViX3ZpZXdfZ29fZm9yd2Fy
ZCAgICAgICAgICAoV2ViS2l0V2ViVmlldyAgICAgICAgICp3ZWJfdmlldyk7Cit3ZWJraXRfd2Vi
X3ZpZXdfZ29fZm9yd2FyZCAgICAgICAgICAgICAgICAgIChXZWJLaXRXZWJWaWV3ICAgICAgICAg
KndlYl92aWV3KTsKKworV0VCS0lUX0FQSSBnZG91YmxlCit3ZWJraXRfd2ViX3ZpZXdfZ2V0X2Vz
dGltYXRlZF9sb2FkX3Byb2dyZXNzIChXZWJLaXRXZWJWaWV3ICAgICAgICAgKndlYl92ZXcpOwog
CiBHX0VORF9ERUNMUwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L2d0ay9XZWJLaXRXZWJWaWV3UHJpdmF0ZS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9ndGsvV2ViS2l0V2ViVmlld1ByaXZhdGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wZTFjYjkyZWE3MTdjYzAy
MGE1MTk0ZjZhYjllNTYyY2M2YTI0N2UxCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlld1ByaXZhdGUuaApAQCAtMCwwICsxLDM2
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIElnYWxpYSBTLkwuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNp
Zm5kZWYgV2ViS2l0V2ViVmlld1ByaXZhdGVfaAorI2RlZmluZSBXZWJLaXRXZWJWaWV3UHJpdmF0
ZV9oCisKKyNpbmNsdWRlICJXZWJLaXRXZWJWaWV3LmgiCisjaW5jbHVkZSA8V2ViS2l0Mi9XZWJL
aXQyLmg+CisKK3ZvaWQgd2Via2l0V2ViVmlld1NldEVzdGltYXRlZExvYWRQcm9ncmVzcyhXZWJL
aXRXZWJWaWV3KiwgZG91YmxlIGVzdGltYXRlZExvYWRQcm9ncmVzcyk7CisKK3ZvaWQgYXR0YWNo
TG9hZGVyQ2xpZW50VG9QYWdlKFdLUGFnZVJlZiwgV2ViS2l0V2ViTG9hZGVyQ2xpZW50Kik7CisK
KyNlbmRpZiAvLyBXZWJLaXRXZWJWaWV3UHJpdmF0ZV9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay90ZXN0cy9Mb2FkVHJhY2tpbmdUZXN0LmNwcCBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL3Rlc3RzL0xvYWRUcmFja2luZ1Rlc3QuY3BwCmlu
ZGV4IDgwMjE0MGI4YjJkZTgwNTI2MWE4OWY2Y2RiZTBiNGFjMTcwMjg5YjcuLmQ3YTY4MGIyMTA0
NzEwYmUyNmRjNDcwMWI4YmFlYWIyMGI0YWU3MDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvZ3RrL3Rlc3RzL0xvYWRUcmFja2luZ1Rlc3QuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL3Rlc3RzL0xvYWRUcmFja2luZ1Rlc3QuY3BwCkBA
IC0yMiwzNyArMjIsMzcgQEAKIAogI2luY2x1ZGUgPHdlYmtpdDIvd2Via2l0Mi5oPgogCi1zdGF0
aWMgZ2Jvb2xlYW4gcHJvdmlzaW9uYWxMb2FkU3RhcnRlZENhbGxiYWNrKFdlYktpdFdlYkxvYWRl
ckNsaWVudCogY2xpZW50LCBMb2FkVHJhY2tpbmdUZXN0KiB0ZXN0KQorc3RhdGljIGdib29sZWFu
IHByb3Zpc2lvbmFsTG9hZFN0YXJ0ZWRDYWxsYmFjayhXZWJLaXRXZWJMb2FkZXJDbGllbnQqIGNs
aWVudCwgV2ViS2l0V2ViVmlldyosIExvYWRUcmFja2luZ1Rlc3QqIHRlc3QpCiB7CiAgICAgdGVz
dC0+cHJvdmlzaW9uYWxMb2FkU3RhcnRlZChjbGllbnQpOwogICAgIHJldHVybiBUUlVFOwogfQog
Ci1zdGF0aWMgZ2Jvb2xlYW4gcHJvdmlzaW9uYWxMb2FkUmVjZWl2ZWRTZXJ2ZXJSZWRpcmVjdENh
bGxiYWNrKFdlYktpdFdlYkxvYWRlckNsaWVudCogY2xpZW50LCBMb2FkVHJhY2tpbmdUZXN0KiB0
ZXN0KQorc3RhdGljIGdib29sZWFuIHByb3Zpc2lvbmFsTG9hZFJlY2VpdmVkU2VydmVyUmVkaXJl
Y3RDYWxsYmFjayhXZWJLaXRXZWJMb2FkZXJDbGllbnQqIGNsaWVudCwgV2ViS2l0V2ViVmlldyos
IExvYWRUcmFja2luZ1Rlc3QqIHRlc3QpCiB7CiAgICAgdGVzdC0+cHJvdmlzaW9uYWxMb2FkUmVj
ZWl2ZWRTZXJ2ZXJSZWRpcmVjdChjbGllbnQpOwogICAgIHJldHVybiBUUlVFOwogfQogCi1zdGF0
aWMgZ2Jvb2xlYW4gcHJvdmlzaW9uYWxMb2FkRmFpbGVkQ2FsbGJhY2soV2ViS2l0V2ViTG9hZGVy
Q2xpZW50KiBjbGllbnQsIGNvbnN0IGdjaGFyKiBmYWlsaW5nVVJJLCBHRXJyb3IqIGVycm9yLCBM
b2FkVHJhY2tpbmdUZXN0KiB0ZXN0KQorc3RhdGljIGdib29sZWFuIHByb3Zpc2lvbmFsTG9hZEZh
aWxlZENhbGxiYWNrKFdlYktpdFdlYkxvYWRlckNsaWVudCogY2xpZW50LCBXZWJLaXRXZWJWaWV3
KiwgY29uc3QgZ2NoYXIqIGZhaWxpbmdVUkksIEdFcnJvciogZXJyb3IsIExvYWRUcmFja2luZ1Rl
c3QqIHRlc3QpCiB7CiAgICAgdGVzdC0+cHJvdmlzaW9uYWxMb2FkRmFpbGVkKGNsaWVudCwgZmFp
bGluZ1VSSSwgZXJyb3IpOwogICAgIHJldHVybiBUUlVFOwogfQogCi1zdGF0aWMgZ2Jvb2xlYW4g
bG9hZENvbW1pdHRlZENhbGxiYWNrKFdlYktpdFdlYkxvYWRlckNsaWVudCogY2xpZW50LCBMb2Fk
VHJhY2tpbmdUZXN0KiB0ZXN0KQorc3RhdGljIGdib29sZWFuIGxvYWRDb21taXR0ZWRDYWxsYmFj
ayhXZWJLaXRXZWJMb2FkZXJDbGllbnQqIGNsaWVudCwgV2ViS2l0V2ViVmlldyosIExvYWRUcmFj
a2luZ1Rlc3QqIHRlc3QpCiB7CiAgICAgdGVzdC0+bG9hZENvbW1pdHRlZChjbGllbnQpOwogICAg
IHJldHVybiBUUlVFOwogfQogCi1zdGF0aWMgZ2Jvb2xlYW4gbG9hZEZpbmlzaGVkQ2FsbGJhY2so
V2ViS2l0V2ViTG9hZGVyQ2xpZW50KiBjbGllbnQsIExvYWRUcmFja2luZ1Rlc3QqIHRlc3QpCitz
dGF0aWMgZ2Jvb2xlYW4gbG9hZEZpbmlzaGVkQ2FsbGJhY2soV2ViS2l0V2ViTG9hZGVyQ2xpZW50
KiBjbGllbnQsIFdlYktpdFdlYlZpZXcqLCBMb2FkVHJhY2tpbmdUZXN0KiB0ZXN0KQogewogICAg
IHRlc3QtPmxvYWRGaW5pc2hlZChjbGllbnQpOwogICAgIHJldHVybiBUUlVFOwogfQogCi1zdGF0
aWMgZ2Jvb2xlYW4gbG9hZEZhaWxlZENhbGxiYWNrKFdlYktpdFdlYkxvYWRlckNsaWVudCogY2xp
ZW50LCBjb25zdCBnY2hhciogZmFpbGluZ1VSSSwgR0Vycm9yKiBlcnJvciwgTG9hZFRyYWNraW5n
VGVzdCogdGVzdCkKK3N0YXRpYyBnYm9vbGVhbiBsb2FkRmFpbGVkQ2FsbGJhY2soV2ViS2l0V2Vi
TG9hZGVyQ2xpZW50KiBjbGllbnQsIFdlYktpdFdlYlZpZXcqLCBjb25zdCBnY2hhciogZmFpbGlu
Z1VSSSwgR0Vycm9yKiBlcnJvciwgTG9hZFRyYWNraW5nVGVzdCogdGVzdCkKIHsKICAgICB0ZXN0
LT5sb2FkRmFpbGVkKGNsaWVudCwgZmFpbGluZ1VSSSwgZXJyb3IpOwogICAgIHJldHVybiBUUlVF
OwpAQCAtNzMsMTMgKzczLDE0IEBAIExvYWRUcmFja2luZ1Rlc3Q6OkxvYWRUcmFja2luZ1Rlc3Qo
KQogICAgIGdfc2lnbmFsX2Nvbm5lY3QoY2xpZW50LCAibG9hZC1jb21taXR0ZWQiLCBHX0NBTExC
QUNLKGxvYWRDb21taXR0ZWRDYWxsYmFjayksIHRoaXMpOwogICAgIGdfc2lnbmFsX2Nvbm5lY3Qo
Y2xpZW50LCAibG9hZC1maW5pc2hlZCIsIEdfQ0FMTEJBQ0sobG9hZEZpbmlzaGVkQ2FsbGJhY2sp
LCB0aGlzKTsKICAgICBnX3NpZ25hbF9jb25uZWN0KGNsaWVudCwgImxvYWQtZmFpbGVkIiwgR19D
QUxMQkFDSyhsb2FkRmFpbGVkQ2FsbGJhY2spLCB0aGlzKTsKLSAgICBnX3NpZ25hbF9jb25uZWN0
KGNsaWVudCwgIm5vdGlmeTo6ZXN0aW1hdGVkLXByb2dyZXNzIiwgR19DQUxMQkFDSyhlc3RpbWF0
ZWRQcm9ncmVzc0NoYW5nZWRDYWxsYmFjayksIHRoaXMpOworICAgIGdfc2lnbmFsX2Nvbm5lY3Qo
bV93ZWJWaWV3LCAibm90aWZ5Ojplc3RpbWF0ZWQtbG9hZC1wcm9ncmVzcyIsIEdfQ0FMTEJBQ0so
ZXN0aW1hdGVkUHJvZ3Jlc3NDaGFuZ2VkQ2FsbGJhY2spLCB0aGlzKTsKIH0KIAogTG9hZFRyYWNr
aW5nVGVzdDo6fkxvYWRUcmFja2luZ1Rlc3QoKQogewogICAgIFdlYktpdFdlYkxvYWRlckNsaWVu
dCogY2xpZW50ID0gd2Via2l0X3dlYl92aWV3X2dldF9sb2FkZXJfY2xpZW50KG1fd2ViVmlldyk7
CiAgICAgZ19zaWduYWxfaGFuZGxlcnNfZGlzY29ubmVjdF9tYXRjaGVkKGNsaWVudCwgR19TSUdO
QUxfTUFUQ0hfREFUQSwgMCwgMCwgMCwgMCwgdGhpcyk7CisgICAgZ19zaWduYWxfaGFuZGxlcnNf
ZGlzY29ubmVjdF9tYXRjaGVkKG1fd2ViVmlldywgR19TSUdOQUxfTUFUQ0hfREFUQSwgMCwgMCwg
MCwgMCwgdGhpcyk7CiB9CiAKIHZvaWQgTG9hZFRyYWNraW5nVGVzdDo6d2FpdFVudGlsTG9hZEZp
bmlzaGVkKCkKQEAgLTEyNyw4ICsxMjgsOCBAQCB2b2lkIExvYWRUcmFja2luZ1Rlc3Q6OmxvYWRG
YWlsZWQoV2ViS2l0V2ViTG9hZGVyQ2xpZW50KiBjbGllbnQsIGNvbnN0IGdjaGFyKiBmYQogCiB2
b2lkIExvYWRUcmFja2luZ1Rlc3Q6OmVzdGltYXRlZFByb2dyZXNzQ2hhbmdlZCgpCiB7Ci0gICAg
V2ViS2l0V2ViTG9hZGVyQ2xpZW50KiBjbGllbnQgPSB3ZWJraXRfd2ViX3ZpZXdfZ2V0X2xvYWRl
cl9jbGllbnQobV93ZWJWaWV3KTsKLSAgICBkb3VibGUgcHJvZ3Jlc3MgPSB3ZWJraXRfd2ViX2xv
YWRlcl9jbGllbnRfZ2V0X2VzdGltYXRlZF9wcm9ncmVzcyhjbGllbnQpOworICAgIGRvdWJsZSBw
cm9ncmVzcyA9IHdlYmtpdF93ZWJfdmlld19nZXRfZXN0aW1hdGVkX2xvYWRfcHJvZ3Jlc3MobV93
ZWJWaWV3KTsKICAgICBnX2Fzc2VydF9jbXBmbG9hdChtX2VzdGltYXRlZFByb2dyZXNzLCA8LCBw
cm9ncmVzcyk7CiAgICAgbV9lc3RpbWF0ZWRQcm9ncmVzcyA9IHByb2dyZXNzOwogfQorCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay93ZWJraXQybWFyc2hhbC5s
aXN0IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvd2Via2l0Mm1hcnNoYWwubGlz
dAppbmRleCBjM2ExNzg2M2QzMTQ0NzI4OWQyY2ZjNmJjYWI4ZGY1ZGRmOWEwMDMwLi42MjQ4NDI0
M2ZhYTU5NWZlNzlhYWFjMWRhOWQ5MzM5NjJlMTgxMmM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay93ZWJraXQybWFyc2hhbC5saXN0CisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL3dlYmtpdDJtYXJzaGFsLmxpc3QKQEAgLTEsMyArMSw0
IEBACi1CT09MRUFOOlNUUklORyxQT0lOVEVSCitCT09MRUFOOk9CSkVDVCxTVFJJTkcsUE9JTlRF
UgorQk9PTEVBTjpPQkpFQ1QKIEJPT0xFQU46Vk9JRAogCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>