<?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>100858</bug_id>
          
          <creation_ts>2012-10-31 07:20:22 -0700</creation_ts>
          <short_desc>[EFL][WK2] Add Ewk_Auth_Request API</short_desc>
          <delta_ts>2012-11-03 01:27:02 -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>WebKit EFL</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>
          
          <blocked>61838</blocked>
    
    <blocked>100953</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Chris Dumez">cdumez</reporter>
          <assigned_to name="Chris Dumez">cdumez</assigned_to>
          <cc>cgarcia</cc>
    
    <cc>danw</cc>
    
    <cc>gtk-ews</cc>
    
    <cc>gustavo</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>japhet</cc>
    
    <cc>kenneth</cc>
    
    <cc>laszlo.gombos</cc>
    
    <cc>lucas.de.marchi</cc>
    
    <cc>mrobinson</cc>
    
    <cc>rakuco</cc>
    
    <cc>tonikitoo</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>xan.lopez</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>755282</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2012-10-31 07:20:22 -0700</bug_when>
    <thetext>We need an API for the browser to handle HTTP authentication requests.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>756118</commentid>
    <comment_count>1</comment_count>
      <attachid>171819</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2012-11-01 05:30:07 -0700</bug_when>
    <thetext>Created attachment 171819
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>756131</commentid>
    <comment_count>2</comment_count>
      <attachid>171819</attachid>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2012-11-01 05:50:44 -0700</bug_when>
    <thetext>Comment on attachment 171819
Patch

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

&gt; Source/WebCore/platform/network/soup/ResourceHandleSoup.cpp:863
&gt;  }
&gt; +#elif PLATFORM(EFL)

newline before that

&gt; Source/WebCore/platform/network/soup/ResourceHandleSoup.cpp:1073
&gt;  }
&gt; +#elif PLATFORM(EFL)

newline before

&gt; Source/WebKit2/UIProcess/API/efl/EwkViewCallbacks.h:151
&gt; +DECLARE_EWK_VIEW_CALLBACK(AuthRequest, &quot;auth,request&quot;, Ewk_Auth_Request);

why not authentication,request

&gt; Source/WebKit2/UIProcess/API/efl/ewk_auth_request.cpp:69
&gt; +const char* Ewk_Auth_Request::realm() const

realm :-) Feels like 1600 England :-)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>756142</commentid>
    <comment_count>3</comment_count>
      <attachid>171819</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2012-11-01 06:04:58 -0700</bug_when>
    <thetext>Comment on attachment 171819
Patch

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

&gt;&gt; Source/WebKit2/UIProcess/API/efl/ewk_auth_request.cpp:69
&gt;&gt; +const char* Ewk_Auth_Request::realm() const
&gt; 
&gt; realm :-) Feels like 1600 England :-)

This is commonly used in this context though :) Would you prefer something else?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>756144</commentid>
    <comment_count>4</comment_count>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2012-11-01 06:05:45 -0700</bug_when>
    <thetext>&gt; &gt; realm :-) Feels like 1600 England :-)
&gt; 
&gt; This is commonly used in this context though :) Would you prefer something else?

No, no, it&apos;s fine :-) it&apos;s just funny.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>756167</commentid>
    <comment_count>5</comment_count>
      <attachid>171834</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2012-11-01 06:42:21 -0700</bug_when>
    <thetext>Created attachment 171834
Patch

Take Kenneth&apos;s feedback into consideration.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>756188</commentid>
    <comment_count>6</comment_count>
      <attachid>171834</attachid>
    <who name="kov&apos;s GTK+ EWS bot">gtk-ews</who>
    <bug_when>2012-11-01 07:04:30 -0700</bug_when>
    <thetext>Comment on attachment 171834
Patch

Attachment 171834 did not pass gtk-ews (gtk):
Output: http://queues.webkit.org/results/14697307</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>756222</commentid>
    <comment_count>7</comment_count>
      <attachid>171845</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2012-11-01 07:24:45 -0700</bug_when>
    <thetext>Created attachment 171845
Patch

Call AuthenticationClient::receivedRequestToContinueWithoutCredential() from WebCoreSynchronousLoader::didReceiveAuthenticationChallenge() so that we don&apos;t handle authentication for synchronous XMLHTTPRequests.

This fixes a regression in:
  http/tests/xmlhttprequest/access-control-preflight-credential-sync.html

BTW, the GTK EWS seems broken and its warning is unrelated to my patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>756230</commentid>
    <comment_count>8</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2012-11-01 07:34:14 -0700</bug_when>
    <thetext>Once Bug 99914 is fixed, we can probably share the WebCore code with GTK port.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>756235</commentid>
    <comment_count>9</comment_count>
      <attachid>171845</attachid>
    <who name="Mikhail Pozdnyakov">mikhail.pozdnyakov</who>
    <bug_when>2012-11-01 07:36:04 -0700</bug_when>
    <thetext>Comment on attachment 171845
Patch

LGTM</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>756279</commentid>
    <comment_count>10</comment_count>
      <attachid>171845</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-11-01 08:33:05 -0700</bug_when>
    <thetext>Comment on attachment 171845
Patch

Clearing flags on attachment: 171845

Committed r133177: &lt;http://trac.webkit.org/changeset/133177&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>756280</commentid>
    <comment_count>11</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-11-01 08:33:10 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>757789</commentid>
    <comment_count>12</comment_count>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2012-11-02 17:29:10 -0700</bug_when>
    <thetext>Were the changes to ResourceHandleSoup copied from my patch at https://bugs.webkit.org/show_bug.cgi?id=99914 ? I really do appreciate that this patch fixed the stupid bugs in my earlier work, bit it would have been swell to coordinate with you guys. Now I guess I&apos;ll try to fix the merge conflicts. Be aware that you probably want to get the CredentialStorage working for EFL if you to avoid continuing to fork the libsoup backend. Do you plan to use libsecret as well?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>757922</commentid>
    <comment_count>13</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2012-11-03 01:14:27 -0700</bug_when>
    <thetext>(In reply to comment #12)
&gt; Were the changes to ResourceHandleSoup copied from my patch at https://bugs.webkit.org/show_bug.cgi?id=99914 ? I really do appreciate that this patch fixed the stupid bugs in my earlier work, bit it would have been swell to coordinate with you guys. Now I guess I&apos;ll try to fix the merge conflicts. Be aware that you probably want to get the CredentialStorage working for EFL if you to avoid continuing to fork the libsoup backend. Do you plan to use libsecret as well?

Sadly, I had been working on that patch for a while and I was made aware of your patch by Dominik only after I had it working. I wish I had known about your patch before because the WebCore changes were a bit of work (and my plan was only to write the WebKit2 EFL API but then I noticed the authentication callback was not called when running my API tests). So, to answer your question, no I did not copy your patch, I based mine on other ports&apos; implementation and ewk_auth_soup.* from WebKit1-EFL.

By the way, I CC&apos;d you and a few other GTK port guys as soon as I uploaded my patch since I was editing SOUP-related code.

Sorry about the merge conflicts, I should have raised the issue with you after I was made aware of your work and noticed the overlapping work. I&apos;m hoping we can share same ResourceHandleSoup implementation now though (I don&apos;t know if this is how you handled the conflicts).

I&apos;ll look into the CredentialStorage support, thanks for notifying me. I&apos;ll need to take a look at it because taking a decision but we usually try to share as much code as possible with GTK port in that case. We certainly don&apos;t want to &quot;fork&quot; the libsoup backend. The authentication client code was an exception (because the GTK port did not have one yet and it seemed to be the simplest approach to get authentication working for us in WK2 EFL).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>757923</commentid>
    <comment_count>14</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2012-11-03 01:27:02 -0700</bug_when>
    <thetext>(In reply to comment #13)
&gt; (In reply to comment #12)
&gt; &gt; Were the changes to ResourceHandleSoup copied from my patch at https://bugs.webkit.org/show_bug.cgi?id=99914 ? I really do appreciate that this patch fixed the stupid bugs in my earlier work, bit it would have been swell to coordinate with you guys. Now I guess I&apos;ll try to fix the merge conflicts. Be aware that you probably want to get the CredentialStorage working for EFL if you to avoid continuing to fork the libsoup backend. Do you plan to use libsecret as well?
&gt; 
&gt; Sadly, I had been working on that patch for a while and I was made aware of your patch by Dominik only after I had it working. I wish I had known about your patch before because the WebCore changes were a bit of work (and my plan was only to write the WebKit2 EFL API but then I noticed the authentication callback was not called when running my API tests). So, to answer your question, no I did not copy your patch, I based mine on other ports&apos; implementation and ewk_auth_soup.* from WebKit1-EFL.
&gt; 
&gt; By the way, I CC&apos;d you and a few other GTK port guys as soon as I uploaded my patch since I was editing SOUP-related code.
&gt; 
&gt; Sorry about the merge conflicts, I should have raised the issue with you after I was made aware of your work and noticed the overlapping work. I&apos;m hoping we can share same ResourceHandleSoup implementation now though (I don&apos;t know if this is how you handled the conflicts).
&gt; 
&gt; I&apos;ll look into the CredentialStorage support, thanks for notifying me. I&apos;ll need to take a look at it because taking a decision but we usually try to share as much code as possible with GTK port in that case. We certainly don&apos;t want to &quot;fork&quot; the libsoup backend. The authentication client code was an exception (because the GTK port did not have one yet and it seemed to be the simplest approach to get authentication working for us in WK2 EFL).

I have checked and I see that you already removed the #if PLATFORM() statements and share the implementation for all SOUP-based ports. This looks much nicer indeed, thanks a lot.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>171819</attachid>
            <date>2012-11-01 05:30:07 -0700</date>
            <delta_ts>2012-11-01 06:42:21 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>100858_ewk_auth_request.patch</filename>
            <type>text/plain</type>
            <size>39598</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBhNjczYTI0Li40NjRkNGEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzYg
QEAKKzIwMTItMTEtMDEgIENocmlzdG9waGUgRHVtZXogIDxjaHJpc3RvcGhlLmR1bWV6QGludGVs
LmNvbT4KKworICAgICAgICBbRUZMXVtXSzJdIEFkZCBFd2tfQXV0aF9SZXF1ZXN0IEFQSQorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTAwODU4CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUHJvdmlkZSBhbiBB
dXRoZW50aWNhdGlvbkNsaWVudCBmb3IgRUZMIHBvcnQgaW4gV2ViQ29yZSBzbworICAgICAgICB0
aGF0IHdlIGNhbiBoYW5kbGUgYXV0aGVudGljYXRpb24gc2ltaWxhcmx5IHRvIG90aGVyIHBvcnRz
CisgICAgICAgIG9mIFdlYktpdC4KKworICAgICAgICBObyBuZXcgdGVzdHMsIG5vIGJlaGF2aW9y
IGNoYW5nZSBmb3IgbGF5b3V0IHRlc3RzLgorCisgICAgICAgICogUGxhdGZvcm1FZmwuY21ha2U6
IEFkZCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVNvdXAuY3BwIHRvIENNYWtlLgorICAgICAgICAq
IGxvYWRlci9SZXNvdXJjZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUxv
YWRlcjo6ZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlLmg6CisgICAgICAgIChSZXNvdXJjZUhhbmRsZSk6
IEhhdmUgUmVzb3VyY2VIYW5kbGUgc3ViY2xhc3MgQXV0aGVudGljYXRpb25DbGllbnQgbGlrZQor
ICAgICAgICBtb3N0IG9mIHRoZSBvdGhlciBwb3J0cy4KKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3
b3JrL3NvdXAvQXV0aGVudGljYXRpb25DaGFsbGVuZ2VTb3VwLmNwcDogRml4IGluaXRpYWxpemF0
aW9uCisgICAgICAgIG9mIHByZXZpb3VzRmFpbHVyZUNvdW50IG1lbWJlci4gSXQgc2hvdWxkIGJl
IDEgaWYgd2UgYXJlIHJldHJ5aW5nCisgICAgICAgIGF1dGhlbnRpY2F0aW9uIGFuZCAwIG90aGVy
d2lzZSwgbm90IHRoZSBvcHBvc2l0ZS4KKyAgICAgICAgKFdlYkNvcmU6OkF1dGhlbnRpY2F0aW9u
Q2hhbGxlbmdlOjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSk6CisgICAgICAgICogcGxhdGZvcm0v
bmV0d29yay9zb3VwL1Jlc291cmNlSGFuZGxlU291cC5jcHA6IFByb3ZpZGUgaW1wbGVtZW50YXRp
b24gZm9yIEVGTAorICAgICAgICBwb3J0IG9mIEF1dGhlbnRpY2F0aW9uQ2xpZW50IG1ldGhvZHMu
CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlOjpk
aWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UpOgorICAgICAgICAoV2ViQ29yZTo6UmVz
b3VyY2VIYW5kbGU6OnJlY2VpdmVkUmVxdWVzdFRvQ29udGludWVXaXRob3V0Q3JlZGVudGlhbCk6
CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZTo6cmVjZWl2ZWRDcmVkZW50aWFsKToK
KyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlOjpyZWNlaXZlZENhbmNlbGxhdGlvbik6
CisgICAgICAgIChXZWJDb3JlOjphdXRoZW50aWNhdGVDYWxsYmFjayk6CisgICAgICAgIChXZWJD
b3JlOjpSZXNvdXJjZUhhbmRsZTo6ZGVmYXVsdFNlc3Npb24pOgorCiAyMDEyLTExLTAxICBLZW50
IFRhbXVyYSAgPHRrZW50QGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZW1vdmUgdW51c2VkIExv
Y2FsZTo6cGFyc2VEYXRlVGltZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1F
ZmwuY21ha2UgYi9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybUVmbC5jbWFrZQppbmRleCAzODdjMzdj
Li5jNzIyYzJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybUVmbC5jbWFrZQor
KysgYi9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybUVmbC5jbWFrZQpAQCAtNjksNiArNjksNyBAQCBM
SVNUKEFQUEVORCBXZWJDb3JlX1NPVVJDRVMKICAgcGxhdGZvcm0vbGludXgvR2FtZXBhZERldmlj
ZUxpbnV4LmNwcAogICBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvTWVkaWFTdHJlYW1D
ZW50ZXJHU3RyZWFtZXIuY3BwCiAgIHBsYXRmb3JtL25ldHdvcmsvZWZsL05ldHdvcmtTdGF0ZU5v
dGlmaWVyRWZsLmNwcAorICBwbGF0Zm9ybS9uZXR3b3JrL3NvdXAvQXV0aGVudGljYXRpb25DaGFs
bGVuZ2VTb3VwLmNwcAogICBwbGF0Zm9ybS9uZXR3b3JrL3NvdXAvQ29va2llSmFyU291cC5jcHAK
ICAgcGxhdGZvcm0vbmV0d29yay9zb3VwL0Nvb2tpZVN0b3JhZ2VTb3VwLmNwcAogICBwbGF0Zm9y
bS9uZXR3b3JrL3NvdXAvQ3JlZGVudGlhbFN0b3JhZ2VTb3VwLmNwcApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9SZXNvdXJjZUxvYWRlci5jcHAKaW5kZXggMGRhZDg3Zi4uNWNjMzZiZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuY3BwCkBAIC00OTQsNyArNDk0LDcgQEAgdm9p
ZCBSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKGNvbnN0
IEF1dGhlbnRpY2F0aW9uQ2hhbGwKICAgICB9CiAgICAgLy8gT25seSB0aGVzZSBwbGF0Zm9ybXMg
cHJvdmlkZSBhIHdheSB0byBjb250aW51ZSB3aXRob3V0IGNyZWRlbnRpYWxzLgogICAgIC8vIElm
IHdlIGNhbid0IGNvbnRpbnVlIHdpdGggY3JlZGVudGlhbHMsIHdlIG5lZWQgdG8gY2FuY2VsIHRo
ZSBsb2FkIGFsdG9nZXRoZXIuCi0jaWYgUExBVEZPUk0oTUFDKSB8fCBVU0UoQ0ZORVRXT1JLKSB8
fCBVU0UoQ1VSTCkgfHwgUExBVEZPUk0oR1RLKQorI2lmIFBMQVRGT1JNKE1BQykgfHwgVVNFKENG
TkVUV09SSykgfHwgVVNFKENVUkwpIHx8IFBMQVRGT1JNKEdUSykgfHwgUExBVEZPUk0oRUZMKQog
ICAgIGhhbmRsZSgpLT5yZWNlaXZlZFJlcXVlc3RUb0NvbnRpbnVlV2l0aG91dENyZWRlbnRpYWwo
Y2hhbGxlbmdlKTsKICAgICBBU1NFUlQoIWhhbmRsZSgpLT5oYXNBdXRoZW50aWNhdGlvbkNoYWxs
ZW5nZSgpKTsKICNlbHNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL1Jlc291cmNlSGFuZGxlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jl
c291cmNlSGFuZGxlLmgKaW5kZXggYzgxNzAwNC4uMzYyMTg0MyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGUuaApAQCAtOTcsNyArOTcsNyBA
QCBlbnVtIFN0b3JlZENyZWRlbnRpYWxzIHsKIHRlbXBsYXRlIDx0eXBlbmFtZSBUPiBjbGFzcyBU
aW1lcjsKIAogY2xhc3MgUmVzb3VyY2VIYW5kbGUgOiBwdWJsaWMgUmVmQ291bnRlZDxSZXNvdXJj
ZUhhbmRsZT4KLSNpZiBQTEFURk9STShNQUMpIHx8IFVTRShDRk5FVFdPUkspIHx8IFVTRShDVVJM
KQorI2lmIFBMQVRGT1JNKE1BQykgfHwgVVNFKENGTkVUV09SSykgfHwgVVNFKENVUkwpIHx8IFBM
QVRGT1JNKEVGTCkKICAgICAsIHB1YmxpYyBBdXRoZW50aWNhdGlvbkNsaWVudAogI2VuZGlmCiAg
ICAgewpAQCAtMTE0LDcgKzExNCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHdpbGxTZW5kUmVxdWVz
dChSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZWRpcmVjdFJlc3Bv
bnNlKTsKICAgICBib29sIHNob3VsZFVzZUNyZWRlbnRpYWxTdG9yYWdlKCk7CiAjZW5kaWYKLSNp
ZiBQTEFURk9STShNQUMpIHx8IFVTRShDRk5FVFdPUkspIHx8IFVTRShDVVJMKQorI2lmIFBMQVRG
T1JNKE1BQykgfHwgVVNFKENGTkVUV09SSykgfHwgVVNFKENVUkwpIHx8IFBMQVRGT1JNKEVGTCkK
ICAgICB2b2lkIGRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShjb25zdCBBdXRoZW50
aWNhdGlvbkNoYWxsZW5nZSYpOwogICAgIHZpcnR1YWwgdm9pZCByZWNlaXZlZENyZWRlbnRpYWwo
Y29uc3QgQXV0aGVudGljYXRpb25DaGFsbGVuZ2UmLCBjb25zdCBDcmVkZW50aWFsJik7CiAgICAg
dmlydHVhbCB2b2lkIHJlY2VpdmVkUmVxdWVzdFRvQ29udGludWVXaXRob3V0Q3JlZGVudGlhbChj
b25zdCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlU291cC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvQXV0aGVudGljYXRpb25DaGFs
bGVuZ2VTb3VwLmNwcAppbmRleCBjMmVlNzFlLi5kM2FhNmRlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvQXV0aGVudGljYXRpb25DaGFsbGVuZ2VTb3Vw
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvQXV0aGVudGlj
YXRpb25DaGFsbGVuZ2VTb3VwLmNwcApAQCAtNjYsNyArNjYsNyBAQCBzdGF0aWMgUHJvdGVjdGlv
blNwYWNlIHByb3RlY3Rpb25TcGFjZUZyb21Tb3VwQXV0aEFuZE1lc3NhZ2UoU291cEF1dGgqIHNv
dXBBdXRoLAogQXV0aGVudGljYXRpb25DaGFsbGVuZ2U6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdl
KFNvdXBTZXNzaW9uKiBzb3VwU2Vzc2lvbiwgU291cE1lc3NhZ2UqIHNvdXBNZXNzYWdlLCBTb3Vw
QXV0aCogc291cEF1dGgsIGJvb2wgcmV0cnlpbmcsIEF1dGhlbnRpY2F0aW9uQ2xpZW50KiBjbGll
bnQpCiAgICAgOiBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZUJhc2UocHJvdGVjdGlvblNwYWNlRnJv
bVNvdXBBdXRoQW5kTWVzc2FnZShzb3VwQXV0aCwgc291cE1lc3NhZ2UpLAogICAgICAgICBDcmVk
ZW50aWFsKCksIC8vIHByb3Bvc2VkQ3JlZGVudGlhbHMKLSAgICAgICAgcmV0cnlpbmcgPyAwIDog
MSwgLy8gcHJldmlvdXNGYWlsdXJlQ291bnQKKyAgICAgICAgcmV0cnlpbmcgPyAxIDogMCwgLy8g
cHJldmlvdXNGYWlsdXJlQ291bnQKICAgICAgICAgc291cE1lc3NhZ2UsIC8vIGZhaWx1cmVSZXNw
b25zZQogICAgICAgICBSZXNvdXJjZUVycm9yOjphdXRoZW50aWNhdGlvbkVycm9yKHNvdXBNZXNz
YWdlKSkKICAgICAsIG1fc291cFNlc3Npb24oc291cFNlc3Npb24pCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvUmVzb3VyY2VIYW5kbGVTb3VwLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9SZXNvdXJjZUhhbmRsZVNvdXAu
Y3BwCmluZGV4IGM1ODJmMDAuLmQ5YTk1NmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvc291cC9SZXNvdXJjZUhhbmRsZVNvdXAuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9SZXNvdXJjZUhhbmRsZVNvdXAuY3BwCkBAIC04
NjAsNiArODYwLDUxIEBAIHZvaWQgUmVzb3VyY2VIYW5kbGU6OmRpZFJlY2VpdmVBdXRoZW50aWNh
dGlvbkNoYWxsZW5nZShjb25zdCBBdXRoZW50aWNhdGlvbkNoYWxsCiB2b2lkIFJlc291cmNlSGFu
ZGxlOjpyZWNlaXZlZFJlcXVlc3RUb0NvbnRpbnVlV2l0aG91dENyZWRlbnRpYWwoY29uc3QgQXV0
aGVudGljYXRpb25DaGFsbGVuZ2UmKQogewogfQorI2VsaWYgUExBVEZPUk0oRUZMKQordm9pZCBS
ZXNvdXJjZUhhbmRsZTo6ZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKGNvbnN0IEF1
dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiBjaGFsbGVuZ2UpCit7CisgICAgQVNTRVJUKGQtPm1fY3Vy
cmVudFdlYkNoYWxsZW5nZS5pc051bGwoKSk7CisgICAgZC0+bV9jdXJyZW50V2ViQ2hhbGxlbmdl
ID0gY2hhbGxlbmdlOworCisgICAgaWYgKGNsaWVudCgpKSB7CisgICAgICAgIEFTU0VSVChjaGFs
bGVuZ2Uuc291cFNlc3Npb24oKSk7CisgICAgICAgIEFTU0VSVChjaGFsbGVuZ2Uuc291cE1lc3Nh
Z2UoKSk7CisgICAgICAgIHNvdXBfc2Vzc2lvbl9wYXVzZV9tZXNzYWdlKGNoYWxsZW5nZS5zb3Vw
U2Vzc2lvbigpLCBjaGFsbGVuZ2Uuc291cE1lc3NhZ2UoKSk7CisgICAgICAgIGNsaWVudCgpLT5k
aWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UodGhpcywgY2hhbGxlbmdlKTsKKyAgICB9
Cit9CisKK3ZvaWQgUmVzb3VyY2VIYW5kbGU6OnJlY2VpdmVkUmVxdWVzdFRvQ29udGludWVXaXRo
b3V0Q3JlZGVudGlhbChjb25zdCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYgY2hhbGxlbmdlKQor
eworICAgIEFTU0VSVCghY2hhbGxlbmdlLmlzTnVsbCgpKTsKKworICAgIHNvdXBfc2Vzc2lvbl91
bnBhdXNlX21lc3NhZ2UoY2hhbGxlbmdlLnNvdXBTZXNzaW9uKCksIGNoYWxsZW5nZS5zb3VwTWVz
c2FnZSgpKTsKKworICAgIGNsZWFyQXV0aGVudGljYXRpb24oKTsKK30KKwordm9pZCBSZXNvdXJj
ZUhhbmRsZTo6cmVjZWl2ZWRDcmVkZW50aWFsKGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdl
JiBjaGFsbGVuZ2UsIGNvbnN0IENyZWRlbnRpYWwmIGNyZWRlbnRpYWwpCit7CisgICAgQVNTRVJU
KCFjaGFsbGVuZ2UuaXNOdWxsKCkpOworCisgICAgQVNTRVJUKGNoYWxsZW5nZS5zb3VwU2Vzc2lv
bigpKTsKKyAgICBBU1NFUlQoY2hhbGxlbmdlLnNvdXBNZXNzYWdlKCkpOworICAgIHNvdXBfYXV0
aF9hdXRoZW50aWNhdGUoY2hhbGxlbmdlLnNvdXBBdXRoKCksIGNyZWRlbnRpYWwudXNlcigpLnV0
ZjgoKS5kYXRhKCksIGNyZWRlbnRpYWwucGFzc3dvcmQoKS51dGY4KCkuZGF0YSgpKTsKKyAgICBz
b3VwX3Nlc3Npb25fdW5wYXVzZV9tZXNzYWdlKGNoYWxsZW5nZS5zb3VwU2Vzc2lvbigpLCBjaGFs
bGVuZ2Uuc291cE1lc3NhZ2UoKSk7CisKKyAgICBjbGVhckF1dGhlbnRpY2F0aW9uKCk7Cit9CisK
K3ZvaWQgUmVzb3VyY2VIYW5kbGU6OnJlY2VpdmVkQ2FuY2VsbGF0aW9uKGNvbnN0IEF1dGhlbnRp
Y2F0aW9uQ2hhbGxlbmdlJiBjaGFsbGVuZ2UpCit7CisgICAgQVNTRVJUKCFjaGFsbGVuZ2UuaXNO
dWxsKCkpOworCisgICAgQVNTRVJUKGNoYWxsZW5nZS5zb3VwU2Vzc2lvbigpKTsKKyAgICBBU1NF
UlQoY2hhbGxlbmdlLnNvdXBNZXNzYWdlKCkpOworICAgIHNvdXBfc2Vzc2lvbl91bnBhdXNlX21l
c3NhZ2UoY2hhbGxlbmdlLnNvdXBTZXNzaW9uKCksIGNoYWxsZW5nZS5zb3VwTWVzc2FnZSgpKTsK
KworICAgIGNsZWFyQXV0aGVudGljYXRpb24oKTsKK30KICNlbmRpZgogCiBzdGF0aWMgYm9vbCB3
YWl0aW5nVG9TZW5kUmVxdWVzdChSZXNvdXJjZUhhbmRsZSogaGFuZGxlKQpAQCAtMTAxNSw3ICsx
MDYwLDcgQEAgc3RhdGljIGdib29sZWFuIHJlcXVlc3RUaW1lb3V0Q2FsbGJhY2soZ3BvaW50ZXIg
ZGF0YSkKIH0KIAogI2lmIFBMQVRGT1JNKEdUSykKLXN0YXRpYyB2b2lkIGF1dGhlbmljYXRlQ2Fs
bGJhY2soU291cFNlc3Npb24qIHNlc3Npb24sIFNvdXBNZXNzYWdlKiBzb3VwTWVzc2FnZSwgU291
cEF1dGgqIHNvdXBBdXRoLCBnYm9vbGVhbiByZXRyeWluZykKK3N0YXRpYyB2b2lkIGF1dGhlbnRp
Y2F0ZUNhbGxiYWNrKFNvdXBTZXNzaW9uKiBzZXNzaW9uLCBTb3VwTWVzc2FnZSogc291cE1lc3Nh
Z2UsIFNvdXBBdXRoKiBzb3VwQXV0aCwgZ2Jvb2xlYW4gcmV0cnlpbmcpCiB7CiAgICAgUmVmUHRy
PFJlc291cmNlSGFuZGxlPiBoYW5kbGUgPSBzdGF0aWNfY2FzdDxSZXNvdXJjZUhhbmRsZSo+KGdf
b2JqZWN0X2dldF9kYXRhKEdfT0JKRUNUKHNvdXBNZXNzYWdlKSwgImhhbmRsZSIpKTsKICAgICBp
ZiAoIWhhbmRsZSkKQEAgLTEwMjUsNiArMTA3MCwxNSBAQCBzdGF0aWMgdm9pZCBhdXRoZW5pY2F0
ZUNhbGxiYWNrKFNvdXBTZXNzaW9uKiBzZXNzaW9uLCBTb3VwTWVzc2FnZSogc291cE1lc3NhZ2Us
CiAgICAgLy8gcmVzcG9uZCB0byB0aGUgQXV0aGVudGljYXRpb25DaGFsbGVuZ2UgLS0gaW5zdGVh
ZCBkZWFsaW5nIHdpdGggdGhlIFNvdXAgb2JqZWN0cyBkaXJlY3RseS4KICAgICBoYW5kbGUtPmRp
ZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShz
ZXNzaW9uLCBzb3VwTWVzc2FnZSwgc291cEF1dGgsIHJldHJ5aW5nLCAwKSk7CiB9CisjZWxpZiBQ
TEFURk9STShFRkwpCitzdGF0aWMgdm9pZCBhdXRoZW50aWNhdGVDYWxsYmFjayhTb3VwU2Vzc2lv
biogc2Vzc2lvbiwgU291cE1lc3NhZ2UqIHNvdXBNZXNzYWdlLCBTb3VwQXV0aCogc291cEF1dGgs
IGdib29sZWFuIHJldHJ5aW5nKQoreworICAgIFJlZlB0cjxSZXNvdXJjZUhhbmRsZT4gaGFuZGxl
ID0gc3RhdGljX2Nhc3Q8UmVzb3VyY2VIYW5kbGUqPihnX29iamVjdF9nZXRfZGF0YShHX09CSkVD
VChzb3VwTWVzc2FnZSksICJoYW5kbGUiKSk7CisgICAgaWYgKCFoYW5kbGUpCisgICAgICAgIHJl
dHVybjsKKworICAgIGhhbmRsZS0+ZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKEF1
dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKHNlc3Npb24sIHNvdXBNZXNzYWdlLCBzb3VwQXV0aCwgcmV0
cnlpbmcsIGhhbmRsZS5nZXQoKSkpOworfQogI2VuZGlmCiAKIFNvdXBTZXNzaW9uKiBSZXNvdXJj
ZUhhbmRsZTo6ZGVmYXVsdFNlc3Npb24oKQpAQCAtMTA0Nyw4ICsxMTAxLDggQEAgU291cFNlc3Np
b24qIFJlc291cmNlSGFuZGxlOjpkZWZhdWx0U2Vzc2lvbigpCiAgICAgICAgICAgICAgICAgICAg
ICBTT1VQX1NFU1NJT05fQUREX0ZFQVRVUkVfQllfVFlQRSwgU09VUF9UWVBFX1BST1hZX1JFU09M
VkVSX0RFRkFVTFQsCiAgICAgICAgICAgICAgICAgICAgICBTT1VQX1NFU1NJT05fVVNFX1RIUkVB
RF9DT05URVhULCBUUlVFLAogICAgICAgICAgICAgICAgICAgICAgTlVMTCk7Ci0jaWYgUExBVEZP
Uk0oR1RLKQotICAgICAgICBnX3NpZ25hbF9jb25uZWN0KHNlc3Npb24sICJhdXRoZW50aWNhdGUi
LCBHX0NBTExCQUNLKGF1dGhlbmljYXRlQ2FsbGJhY2spLCAwKTsKKyNpZiBQTEFURk9STShHVEsp
IHx8IFBMQVRGT1JNKEVGTCkKKyAgICAgICAgZ19zaWduYWxfY29ubmVjdChzZXNzaW9uLCAiYXV0
aGVudGljYXRlIiwgR19DQUxMQkFDSyhhdXRoZW50aWNhdGVDYWxsYmFjayksIDApOwogI2VuZGlm
CiAKICNpZiBFTkFCTEUoV0VCX1RJTUlORykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCAxN2E2ODdiLi5hZjlhMDE3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktp
dDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTIgQEAKKzIwMTItMTEtMDEgIENocmlzdG9waGUgRHVt
ZXogIDxjaHJpc3RvcGhlLmR1bWV6QGludGVsLmNvbT4KKworICAgICAgICBbRUZMXVtXSzJdIEFk
ZCBFd2tfQXV0aF9SZXF1ZXN0IEFQSQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTAwODU4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgQWRkIEV3a19BdXRoX1JlcXVlc3QgQVBJIGZvciB0aGUgY2xpZW50IHRv
IGhhbmRsZQorICAgICAgICBIVFRQIGF1dGhlbnRpY2F0aW9uLgorCisgICAgICAgICogUGxhdGZv
cm1FZmwuY21ha2U6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9lZmwvRVdlYktpdDIuaDoKKyAg
ICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC9Fd2tWaWV3Q2FsbGJhY2tzLmg6CisgICAgICAgIChF
d2tWaWV3Q2FsbGJhY2tzKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC9ld2tfYXV0aF9y
ZXF1ZXN0LmNwcDogQWRkZWQuCisgICAgICAgIChFd2tfQXV0aF9SZXF1ZXN0OjpFd2tfQXV0aF9S
ZXF1ZXN0KToKKyAgICAgICAgKEV3a19BdXRoX1JlcXVlc3Q6On5Fd2tfQXV0aF9SZXF1ZXN0KToK
KyAgICAgICAgKEV3a19BdXRoX1JlcXVlc3Q6OnN1Z2dlc3RlZFVzZXJuYW1lKToKKyAgICAgICAg
KEV3a19BdXRoX1JlcXVlc3Q6OnJlYWxtKToKKyAgICAgICAgKEV3a19BdXRoX1JlcXVlc3Q6Omhv
c3QpOgorICAgICAgICAoRXdrX0F1dGhfUmVxdWVzdDo6Y2FuY2VsKToKKyAgICAgICAgKEV3a19B
dXRoX1JlcXVlc3Q6OmF1dGhlbnRpY2F0ZSk6CisgICAgICAgIChFd2tfQXV0aF9SZXF1ZXN0Ojpp
c1JldHJ5aW5nKToKKyAgICAgICAgKGV3a19hdXRoX3JlcXVlc3RfcmVmKToKKyAgICAgICAgKGV3
a19hdXRoX3JlcXVlc3RfdW5yZWYpOgorICAgICAgICAoZXdrX2F1dGhfcmVxdWVzdF9zdWdnZXN0
ZWRfdXNlcm5hbWVfZ2V0KToKKyAgICAgICAgKGV3a19hdXRoX3JlcXVlc3RfY2FuY2VsKToKKyAg
ICAgICAgKGV3a19hdXRoX3JlcXVlc3RfYXV0aGVudGljYXRlKToKKyAgICAgICAgKGV3a19hdXRo
X3JlcXVlc3RfcmV0cnlpbmdfZ2V0KToKKyAgICAgICAgKGV3a19hdXRoX3JlcXVlc3RfcmVhbG1f
Z2V0KToKKyAgICAgICAgKGV3a19hdXRoX3JlcXVlc3RfaG9zdF9nZXQpOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9BUEkvZWZsL2V3a19hdXRoX3JlcXVlc3QuaDogQWRkZWQuCisgICAgICAgICogVUlQ
cm9jZXNzL0FQSS9lZmwvZXdrX2F1dGhfcmVxdWVzdF9wcml2YXRlLmg6IEFkZGVkLgorICAgICAg
ICAoV2ViS2l0KToKKyAgICAgICAgKEV3a19BdXRoX1JlcXVlc3QpOgorICAgICAgICAoRXdrX0F1
dGhfUmVxdWVzdDo6Y3JlYXRlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmll
dy5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZWZsL3Rlc3RzL3Rlc3RfZXdrMl9hdXRoX3Jl
cXVlc3QuY3BwOiBBZGRlZCBjb3JyZXNwb25kaW5nIEFQSSB0ZXN0cy4KKyAgICAgICAgKHNlcnZl
ckNhbGxiYWNrKToKKyAgICAgICAgKG9uQXV0aGVudGljYXRpb25SZXF1ZXN0KToKKyAgICAgICAg
KFRFU1RfRik6CisgICAgICAgIChvblJlc291cmNlTG9hZFJlc3BvbnNlKToKKyAgICAgICAgKiBV
SVByb2Nlc3MvZWZsL1BhZ2VMb2FkQ2xpZW50RWZsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UGFn
ZUxvYWRDbGllbnRFZmw6OmRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZUluRnJhbWUp
OgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdlYktpdDo6UGFnZUxvYWRDbGllbnRFZmw6
OlBhZ2VMb2FkQ2xpZW50RWZsKToKKyAgICAgICAgKiBVSVByb2Nlc3MvZWZsL1BhZ2VMb2FkQ2xp
ZW50RWZsLmg6CisgICAgICAgIChQYWdlTG9hZENsaWVudEVmbCk6CisKIDIwMTItMTEtMDEgIFl1
bmkgSmVvbmcgIDx5aG5ldC5qdW5nQHNhbXN1bmcuY29tPgogCiAgICAgICAgIFtXSzJdIEFkZCBB
UElzIHRvIGdldC9zZXQgZW5jb2RpbmcgZGV0ZWN0b3IKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1BsYXRmb3JtRWZsLmNtYWtlIGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm1FZmwuY21ha2UK
aW5kZXggZjMyNzEwYy4uZjFhZTg1MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvUGxhdGZv
cm1FZmwuY21ha2UKKysrIGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm1FZmwuY21ha2UKQEAgLTQ0
LDYgKzQ0LDcgQEAgTElTVChBUFBFTkQgV2ViS2l0Ml9TT1VSQ0VTCiAgICAgVUlQcm9jZXNzL0FQ
SS9lZmwvRXdrVmlld0ltcGwuY3BwCiAgICAgVUlQcm9jZXNzL0FQSS9lZmwvRXZhc0dMQ29udGV4
dC5jcHAKICAgICBVSVByb2Nlc3MvQVBJL2VmbC9FdmFzR0xTdXJmYWNlLmNwcAorICAgIFVJUHJv
Y2Vzcy9BUEkvZWZsL2V3a19hdXRoX3JlcXVlc3QuY3BwCiAgICAgVUlQcm9jZXNzL0FQSS9lZmwv
ZXdrX2JhY2tfZm9yd2FyZF9saXN0LmNwcAogICAgIFVJUHJvY2Vzcy9BUEkvZWZsL2V3a19iYWNr
X2ZvcndhcmRfbGlzdF9pdGVtLmNwcAogICAgIFVJUHJvY2Vzcy9BUEkvZWZsL2V3a19jb2xvcl9w
aWNrZXIuY3BwCkBAIC0yNDQsNiArMjQ1LDcgQEAgU0VUKEZvcndhcmRpbmdOZXR3b3JrSGVhZGVy
c19OQU1FIGZvcndhcmRpbmctaGVhZGVyU291cCkKIENPTkZJR1VSRV9GSUxFKGVmbC9ld2Via2l0
Mi5wYy5pbiAke0NNQUtFX0JJTkFSWV9ESVJ9L1dlYktpdDIvZWZsL2V3ZWJraXQyLnBjIEBPTkxZ
KQogU0VUIChFV2ViS2l0Ml9IRUFERVJTCiAgICAgIiR7Q01BS0VfQ1VSUkVOVF9TT1VSQ0VfRElS
fS9VSVByb2Nlc3MvQVBJL2VmbC9FV2ViS2l0Mi5oIgorICAgICIke0NNQUtFX0NVUlJFTlRfU09V
UkNFX0RJUn0vVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2F1dGhfcmVxdWVzdC5oIgogICAgICIke0NN
QUtFX0NVUlJFTlRfU09VUkNFX0RJUn0vVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2JhY2tfZm9yd2Fy
ZF9saXN0LmgiCiAgICAgIiR7Q01BS0VfQ1VSUkVOVF9TT1VSQ0VfRElSfS9VSVByb2Nlc3MvQVBJ
L2VmbC9ld2tfYmFja19mb3J3YXJkX2xpc3RfaXRlbS5oIgogICAgICIke0NNQUtFX0NVUlJFTlRf
U09VUkNFX0RJUn0vVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2NvbG9yX3BpY2tlci5oIgpAQCAtMzQ5
LDYgKzM1MSw3IEBAIFRBUkdFVF9MSU5LX0xJQlJBUklFUyhld2syVW5pdFRlc3RVdGlscyAke0VX
SzJVbml0VGVzdHNfTElCUkFSSUVTfSkKICMgVGhlICJld2siIG9uIHRoZSB0ZXN0IG5hbWUgbmVl
ZHMgdG8gYmUgc3VmZml4ZWQgd2l0aCAiMiIsIG90aGVyd2lzZSBpdAogIyB3aWxsIGNsYXNoIHdp
dGggdGVzdHMgZnJvbSB0aGUgV2ViS2l0IDEgdGVzdCBzdWl0ZS4KIFNFVChFV0syVW5pdFRlc3Rz
X0JJTkFSSUVTCisgICAgdGVzdF9ld2syX2F1dGhfcmVxdWVzdAogICAgIHRlc3RfZXdrMl9iYWNr
X2ZvcndhcmRfbGlzdAogICAgIHRlc3RfZXdrMl9jb2xvcl9waWNrZXIKICAgICB0ZXN0X2V3azJf
Y29udGV4dApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvRVdl
YktpdDIuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL0VXZWJLaXQyLmgKaW5k
ZXggZmM3YmFjMS4uM2Y3NmNmOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9lZmwvRVdlYktpdDIuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2Vm
bC9FV2ViS2l0Mi5oCkBAIC0yOCw2ICsyOCw3IEBACiAjaWZuZGVmIEVXZWJLaXQyX2gKICNkZWZp
bmUgRVdlYktpdDJfaAogCisjaW5jbHVkZSAiZXdrX2F1dGhfcmVxdWVzdC5oIgogI2luY2x1ZGUg
ImV3a19iYWNrX2ZvcndhcmRfbGlzdC5oIgogI2luY2x1ZGUgImV3a19iYWNrX2ZvcndhcmRfbGlz
dF9pdGVtLmgiCiAjaW5jbHVkZSAiZXdrX2NvbG9yX3BpY2tlci5oIgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvRXdrVmlld0NhbGxiYWNrcy5oIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvRXdrVmlld0NhbGxiYWNrcy5oCmluZGV4IDU2ZDM1
N2ZhLi4zMWZhMmQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2Vm
bC9Fd2tWaWV3Q2FsbGJhY2tzLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9l
ZmwvRXdrVmlld0NhbGxiYWNrcy5oCkBAIC0zMSw2ICszMSw3IEBACiAjaW5jbHVkZSA8d3RmL3Rl
eHQvQ1N0cmluZy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCitzdHJ1Y3Qg
RXdrX0F1dGhfUmVxdWVzdDsKIHN0cnVjdCBFd2tfRG93bmxvYWRfSm9iOwogc3RydWN0IEV3a19E
b3dubG9hZF9Kb2JfRXJyb3I7CiBzdHJ1Y3QgRXdrX0ZpbGVfQ2hvb3Nlcl9SZXF1ZXN0OwpAQCAt
NTEsNiArNTIsNyBAQCBzdHJ1Y3QgRXdrX0ludGVudF9TZXJ2aWNlOwogbmFtZXNwYWNlIEV3a1Zp
ZXdDYWxsYmFja3MgewogCiBlbnVtIENhbGxiYWNrVHlwZSB7CisgICAgQXV0aFJlcXVlc3QsCiAg
ICAgQmFja0ZvcndhcmRMaXN0Q2hhbmdlLAogICAgIERvd25sb2FkSm9iQ2FuY2VsbGVkLAogICAg
IERvd25sb2FkSm9iRmFpbGVkLApAQCAtMTQ2LDYgKzE0OCw3IEBAIHN0cnVjdCBDYWxsQmFja0lu
Zm88Y2FsbGJhY2tUeXBlPiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogfQogCiAvLyBO
b3RlOiB0eXBlICd2b2lkJyBtZWFucyB0aGF0IG5vIGFyZ3VtZW50cyBhcmUgZXhwZWN0ZWQuCitE
RUNMQVJFX0VXS19WSUVXX0NBTExCQUNLKEF1dGhSZXF1ZXN0LCAiYXV0aCxyZXF1ZXN0IiwgRXdr
X0F1dGhfUmVxdWVzdCk7CiBERUNMQVJFX0VXS19WSUVXX0NBTExCQUNLKEJhY2tGb3J3YXJkTGlz
dENoYW5nZSwgImJhY2ssZm9yd2FyZCxsaXN0LGNoYW5nZWQiLCB2b2lkKTsKIERFQ0xBUkVfRVdL
X1ZJRVdfQ0FMTEJBQ0soRG93bmxvYWRKb2JDYW5jZWxsZWQsICJkb3dubG9hZCxjYW5jZWxsZWQi
LCBFd2tfRG93bmxvYWRfSm9iKTsKIERFQ0xBUkVfRVdLX1ZJRVdfQ0FMTEJBQ0soRG93bmxvYWRK
b2JGYWlsZWQsICJkb3dubG9hZCxmYWlsZWQiLCBFd2tfRG93bmxvYWRfSm9iX0Vycm9yKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19hdXRoX3JlcXVl
c3QuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2F1dGhfcmVxdWVz
dC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2E5OWUyYQotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19hdXRoX3Jl
cXVlc3QuY3BwCkBAIC0wLDAgKzEsMTg3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIElu
dGVsIENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVk
ZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiZXdrX2F1dGhfcmVxdWVzdC5oIgorCisjaW5jbHVkZSAi
QXV0aGVudGljYXRpb25DaGFsbGVuZ2VQcm94eS5oIgorI2luY2x1ZGUgIkF1dGhlbnRpY2F0aW9u
RGVjaXNpb25MaXN0ZW5lci5oIgorI2luY2x1ZGUgIldlYkNyZWRlbnRpYWwuaCIKKyNpbmNsdWRl
ICJXZWJQcm90ZWN0aW9uU3BhY2UuaCIKKyNpbmNsdWRlICJXZWJTdHJpbmcuaCIKKyNpbmNsdWRl
ICJld2tfYXV0aF9yZXF1ZXN0X3ByaXZhdGUuaCIKKyNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5n
Lmg+CisKK3VzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7Cit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsK
KworRXdrX0F1dGhfUmVxdWVzdDo6RXdrX0F1dGhfUmVxdWVzdChBdXRoZW50aWNhdGlvbkNoYWxs
ZW5nZVByb3h5KiBhdXRoZW50aWNhdGlvbkNoYWxsZW5nZSkKKyAgICA6IG1fYXV0aGVudGljYXRp
b25DaGFsbGVuZ2UoYXV0aGVudGljYXRpb25DaGFsbGVuZ2UpCisgICAgLCBtX3dhc0hhbmRsZWQo
ZmFsc2UpCit7CisgICAgQVNTRVJUKG1fYXV0aGVudGljYXRpb25DaGFsbGVuZ2UpOworfQorCitF
d2tfQXV0aF9SZXF1ZXN0Ojp+RXdrX0F1dGhfUmVxdWVzdCgpCit7CisgICAgaWYgKCFtX3dhc0hh
bmRsZWQpCisgICAgICAgIGNhbmNlbCgpOworfQorCitjb25zdCBjaGFyKiBFd2tfQXV0aF9SZXF1
ZXN0OjpzdWdnZXN0ZWRVc2VybmFtZSgpIGNvbnN0Cit7CisgICAgaWYgKCFtX3N1Z2dlc3RlZFVz
ZXJuYW1lKSB7CisgICAgICAgIFdlYkNyZWRlbnRpYWwqIGNyZWRlbnRpYWwgPSBtX2F1dGhlbnRp
Y2F0aW9uQ2hhbGxlbmdlLT5wcm9wb3NlZENyZWRlbnRpYWwoKTsKKyAgICAgICAgQVNTRVJUKGNy
ZWRlbnRpYWwpOworCisgICAgICAgIGNvbnN0IFN0cmluZyYgc3VnZ2VzdGVkVXNlcm5hbWUgPSBj
cmVkZW50aWFsLT51c2VyKCk7CisgICAgICAgIGlmIChzdWdnZXN0ZWRVc2VybmFtZS5pc0VtcHR5
KCkpCisgICAgICAgICAgICByZXR1cm4gMDsKKworICAgICAgICBtX3N1Z2dlc3RlZFVzZXJuYW1l
ID0gc3VnZ2VzdGVkVXNlcm5hbWUudXRmOCgpLmRhdGEoKTsKKyAgICB9CisKKyAgICByZXR1cm4g
bV9zdWdnZXN0ZWRVc2VybmFtZTsKK30KKworY29uc3QgY2hhciogRXdrX0F1dGhfUmVxdWVzdDo6
cmVhbG0oKSBjb25zdAoreworICAgIGlmICghbV9yZWFsbSkgeworICAgICAgICBXZWJQcm90ZWN0
aW9uU3BhY2UqIHByb3RlY3Rpb25TcGFjZSA9IG1fYXV0aGVudGljYXRpb25DaGFsbGVuZ2UtPnBy
b3RlY3Rpb25TcGFjZSgpOworICAgICAgICBBU1NFUlQocHJvdGVjdGlvblNwYWNlKTsKKworICAg
ICAgICBjb25zdCBTdHJpbmcmIHJlYWxtID0gcHJvdGVjdGlvblNwYWNlLT5yZWFsbSgpOworICAg
ICAgICBpZiAocmVhbG0uaXNFbXB0eSgpKQorICAgICAgICAgICAgcmV0dXJuIDA7CisKKyAgICAg
ICAgbV9yZWFsbSA9IHJlYWxtLnV0ZjgoKS5kYXRhKCk7CisgICAgfQorCisgICAgcmV0dXJuIG1f
cmVhbG07Cit9CisKK2NvbnN0IGNoYXIqIEV3a19BdXRoX1JlcXVlc3Q6Omhvc3QoKSBjb25zdAor
eworICAgIGlmICghbV9ob3N0KSB7CisgICAgICAgIFdlYlByb3RlY3Rpb25TcGFjZSogcHJvdGVj
dGlvblNwYWNlID0gbV9hdXRoZW50aWNhdGlvbkNoYWxsZW5nZS0+cHJvdGVjdGlvblNwYWNlKCk7
CisgICAgICAgIEFTU0VSVChwcm90ZWN0aW9uU3BhY2UpOworCisgICAgICAgIGNvbnN0IFN0cmlu
ZyYgaG9zdCA9IHByb3RlY3Rpb25TcGFjZS0+aG9zdCgpOworICAgICAgICBpZiAoaG9zdC5pc0Vt
cHR5KCkpCisgICAgICAgICAgICByZXR1cm4gMDsKKworICAgICAgICBtX2hvc3QgPSBob3N0LnV0
ZjgoKS5kYXRhKCk7CisgICAgfQorCisgICAgcmV0dXJuIG1faG9zdDsKK30KKworYm9vbCBFd2tf
QXV0aF9SZXF1ZXN0OjpjYW5jZWwoKQoreworICAgIGlmIChtX3dhc0hhbmRsZWQpCisgICAgICAg
IHJldHVybiBmYWxzZTsKKworICAgIG1fd2FzSGFuZGxlZCA9IHRydWU7CisgICAgbV9hdXRoZW50
aWNhdGlvbkNoYWxsZW5nZS0+Y2FuY2VsKCk7CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworYm9v
bCBFd2tfQXV0aF9SZXF1ZXN0OjphdXRoZW50aWNhdGUoY29uc3QgU3RyaW5nJiB1c2VybmFtZSwg
Y29uc3QgU3RyaW5nJiBwYXNzd29yZCkKK3sKKyAgICBpZiAobV93YXNIYW5kbGVkKQorICAgICAg
ICByZXR1cm4gZmFsc2U7CisKKyAgICBtX3dhc0hhbmRsZWQgPSB0cnVlOworICAgIFJlZlB0cjxX
ZWJDcmVkZW50aWFsPiBjcmVkZW50aWFsID0gV2ViQ3JlZGVudGlhbDo6Y3JlYXRlKFdlYlN0cmlu
Zzo6Y3JlYXRlKHVzZXJuYW1lKS5nZXQoKSwgV2ViU3RyaW5nOjpjcmVhdGUocGFzc3dvcmQpLmdl
dCgpLCBDcmVkZW50aWFsUGVyc2lzdGVuY2VGb3JTZXNzaW9uKTsKKyAgICBtX2F1dGhlbnRpY2F0
aW9uQ2hhbGxlbmdlLT51c2VDcmVkZW50aWFsKGNyZWRlbnRpYWwuZ2V0KCkpOworCisgICAgcmV0
dXJuIHRydWU7Cit9CisKK2Jvb2wgRXdrX0F1dGhfUmVxdWVzdDo6aXNSZXRyeWluZygpIGNvbnN0
Cit7CisgICAgcmV0dXJuIG1fYXV0aGVudGljYXRpb25DaGFsbGVuZ2UtPnByZXZpb3VzRmFpbHVy
ZUNvdW50KCkgPiAwOworfQorCitFd2tfQXV0aF9SZXF1ZXN0KiBld2tfYXV0aF9yZXF1ZXN0X3Jl
ZihFd2tfQXV0aF9SZXF1ZXN0KiByZXF1ZXN0KQoreworICAgIEVJTkFfU0FGRVRZX09OX05VTExf
UkVUVVJOX1ZBTChyZXF1ZXN0LCAwKTsKKworICAgIHJlcXVlc3QtPnJlZigpOworCisgICAgcmV0
dXJuIHJlcXVlc3Q7Cit9CisKK3ZvaWQgZXdrX2F1dGhfcmVxdWVzdF91bnJlZihFd2tfQXV0aF9S
ZXF1ZXN0KiByZXF1ZXN0KQoreworICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOKHJlcXVl
c3QpOworCisgICAgcmVxdWVzdC0+ZGVyZWYoKTsKK30KKworY29uc3QgY2hhciogZXdrX2F1dGhf
cmVxdWVzdF9zdWdnZXN0ZWRfdXNlcm5hbWVfZ2V0KGNvbnN0IEV3a19BdXRoX1JlcXVlc3QqIHJl
cXVlc3QpCit7CisgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKHJlcXVlc3QsIDAp
OworCisgICAgcmV0dXJuIHJlcXVlc3QtPnN1Z2dlc3RlZFVzZXJuYW1lKCk7Cit9CisKK0VpbmFf
Qm9vbCBld2tfYXV0aF9yZXF1ZXN0X2NhbmNlbChFd2tfQXV0aF9SZXF1ZXN0KiByZXF1ZXN0KQor
eworICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChyZXF1ZXN0LCBmYWxzZSk7CisK
KyAgICByZXR1cm4gcmVxdWVzdC0+Y2FuY2VsKCk7Cit9CisKK0VpbmFfQm9vbCBld2tfYXV0aF9y
ZXF1ZXN0X2F1dGhlbnRpY2F0ZShFd2tfQXV0aF9SZXF1ZXN0KiByZXF1ZXN0LCBjb25zdCBjaGFy
KiB1c2VybmFtZSwgY29uc3QgY2hhciogcGFzc3dvcmQpCit7CisgICAgRUlOQV9TQUZFVFlfT05f
TlVMTF9SRVRVUk5fVkFMKHJlcXVlc3QsIGZhbHNlKTsKKyAgICBFSU5BX1NBRkVUWV9PTl9OVUxM
X1JFVFVSTl9WQUwodXNlcm5hbWUsIGZhbHNlKTsKKyAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JF
VFVSTl9WQUwocGFzc3dvcmQsIGZhbHNlKTsKKworICAgIHJldHVybiByZXF1ZXN0LT5hdXRoZW50
aWNhdGUoU3RyaW5nOjpmcm9tVVRGOCh1c2VybmFtZSksIFN0cmluZzo6ZnJvbVVURjgocGFzc3dv
cmQpKTsKK30KKworRWluYV9Cb29sIGV3a19hdXRoX3JlcXVlc3RfcmV0cnlpbmdfZ2V0KGNvbnN0
IEV3a19BdXRoX1JlcXVlc3QqIHJlcXVlc3QpCit7CisgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9S
RVRVUk5fVkFMKHJlcXVlc3QsIGZhbHNlKTsKKworICAgIHJldHVybiByZXF1ZXN0LT5pc1JldHJ5
aW5nKCk7Cit9CisKK2NvbnN0IGNoYXIqIGV3a19hdXRoX3JlcXVlc3RfcmVhbG1fZ2V0KGNvbnN0
IEV3a19BdXRoX1JlcXVlc3QqIHJlcXVlc3QpCit7CisgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9S
RVRVUk5fVkFMKHJlcXVlc3QsIDApOworCisgICAgcmV0dXJuIHJlcXVlc3QtPnJlYWxtKCk7Cit9
CisKK2NvbnN0IGNoYXIqIGV3a19hdXRoX3JlcXVlc3RfaG9zdF9nZXQoY29uc3QgRXdrX0F1dGhf
UmVxdWVzdCogcmVxdWVzdCkKK3sKKyAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwo
cmVxdWVzdCwgMCk7CisKKyAgICByZXR1cm4gcmVxdWVzdC0+aG9zdCgpOworfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2F1dGhfcmVxdWVzdC5oIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2F1dGhfcmVxdWVzdC5oCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmViOTA4NjQKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfYXV0aF9yZXF1ZXN0LmgKQEAg
LTAsMCArMSwxMzIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgSW50ZWwgQ29ycG9yYXRp
b24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwor
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKy8qKgorICogQGZpbGUgICAgZXdr
X2F1dGhfcmVxdWVzdC5oCisgKiBAYnJpZWYgICBEZXNjcmliZXMgdGhlIEV3ayBBdXRoZW50aWNh
dGlvbiBSZXF1ZXN0IEFQSS4KKyAqLworCisjaWZuZGVmIGV3a19hdXRoX3JlcXVlc3RfaAorI2Rl
ZmluZSBld2tfYXV0aF9yZXF1ZXN0X2gKKworI2luY2x1ZGUgPEVpbmEuaD4KKworI2lmZGVmIF9f
Y3BsdXNwbHVzCitleHRlcm4gIkMiIHsKKyNlbmRpZgorCisvKiogQ3JlYXRlcyBhIHR5cGUgbmFt
ZSBmb3IgRXdrX0F1dGhfUmVxdWVzdCAqLwordHlwZWRlZiBzdHJ1Y3QgRXdrX0F1dGhfUmVxdWVz
dCBFd2tfQXV0aF9SZXF1ZXN0OworCisvKioKKyAqIEluY3JlYXNlcyB0aGUgcmVmZXJlbmNlIGNv
dW50IG9mIHRoZSBnaXZlbiBvYmplY3QuCisgKgorICogQHBhcmFtIHJlcXVlc3QgdGhlIHJlcXVl
c3Qgb2JqZWN0IHRvIGluY3JlYXNlIHRoZSByZWZlcmVuY2UgY291bnQKKyAqCisgKiBAcmV0dXJu
IGEgcG9pbnRlciB0byB0aGUgb2JqZWN0IG9uIHN1Y2Nlc3MsIEBjIE5VTEwgb3RoZXJ3aXNlCisg
Ki8KK0VBUEkgRXdrX0F1dGhfUmVxdWVzdCAqZXdrX2F1dGhfcmVxdWVzdF9yZWYoRXdrX0F1dGhf
UmVxdWVzdCAqcmVxdWVzdCk7CisKKy8qKgorICogRGVjcmVhc2VzIHRoZSByZWZlcmVuY2UgY291
bnQgb2YgdGhlIGdpdmVuIG9iamVjdCwgcG9zc2libHkgZnJlZWluZyBpdC4KKyAqCisgKiBXaGVu
IHRoZSByZWZlcmVuY2UgY291bnQgcmVhY2hlcyAwLCB0aGUgcmVxdWVzdCBpcyBmcmVlZAorICoK
KyAqIEBwYXJhbSByZXF1ZXN0IHRoZSByZXF1ZXN0IG9iamVjdCB0byBkZWNyZWFzZSB0aGUgcmVm
ZXJlbmNlIGNvdW50CisgKi8KK0VBUEkgdm9pZCBld2tfYXV0aF9yZXF1ZXN0X3VucmVmKEV3a19B
dXRoX1JlcXVlc3QgKnJlcXVlc3QpOworCisvKioKKyAqIFF1ZXJpZXMgdGhlIHN1Z2dlc3RlZCB1
c2VybmFtZSB0byBiZSB1c2VkIGZvciBhdXRoZW50aWNhdGluZy4KKyAqCisgKiBAcGFyYW0gcmVx
dWVzdCByZXF1ZXN0IG9iamVjdCB0byBxdWVyeQorICoKKyAqIEByZXR1cm4gdGhlIHVzZXJuYW1l
IHBvaW50ZXIsIHRoYXQgbWF5IGJlIEBjIE5VTEwuIFRoaXMgcG9pbnRlciBpcworICogICAgICAg
ICBndWFyYW50ZWVkIHRvIGJlIGVpbmFfc3RyaW5nc2hhcmUsIHNvIHdoZW5ldmVyIHBvc3NpYmxl
CisgKiAgICAgICAgIHNhdmUgeW91cnNlbGYgc29tZSBjcHUgY3ljbGVzIGFuZCB1c2UKKyAqICAg
ICAgICAgZWluYV9zdHJpbmdzaGFyZV9yZWYoKSBpbnN0ZWFkIG9mIGVpbmFfc3RyaW5nc2hhcmVf
YWRkKCkgb3IKKyAqICAgICAgICAgc3RyZHVwKCkKKyAqLworRUFQSSBjb25zdCBjaGFyICpld2tf
YXV0aF9yZXF1ZXN0X3N1Z2dlc3RlZF91c2VybmFtZV9nZXQoY29uc3QgRXdrX0F1dGhfUmVxdWVz
dCAqcmVxdWVzdCk7CisKKy8qKgorICogUXVlcmllcyBpZiB0aGlzIGFuIGF1dGhlbnRpY2F0aW9u
IGF0dGVtcHQgcmV0cnlpbmcuCisgKgorICogQHBhcmFtIHJlcXVlc3QgcmVxdWVzdCBvYmplY3Qg
dG8gcXVlcnkKKyAqCisgKiBAcmV0dXJuIEBjIEVJTkFfVFJVRSBpZiB0aGlzIGlzIG5vdCB0aGUg
Zmlyc3QgYXV0aGVudGljYXRpb24gYXR0ZW1wdAorICogICAgICAgICBhbmQgd2UgYXJlIHRyeWlu
ZywgQGMgRUlOQV9GQUxTRSBvdGhlcndpc2UuCisgKi8KK0VBUEkgRWluYV9Cb29sIGV3a19hdXRo
X3JlcXVlc3RfcmV0cnlpbmdfZ2V0KGNvbnN0IEV3a19BdXRoX1JlcXVlc3QgKnJlcXVlc3QpOwor
CisvKioKKyAqIFF1ZXJpZXMgdGhlIGF1dGhlbnRpY2F0aW9uIHJlYWxtLgorICoKKyAqIEBwYXJh
bSByZXF1ZXN0IHJlcXVlc3Qgb2JqZWN0IHRvIHF1ZXJ5CisgKgorICogQHJldHVybiB0aGUgcmVh
bG0gcG9pbnRlciwgdGhhdCBtYXkgYmUgQGMgTlVMTC4gVGhpcyBwb2ludGVyIGlzCisgKiAgICAg
ICAgIGd1YXJhbnRlZWQgdG8gYmUgZWluYV9zdHJpbmdzaGFyZSwgc28gd2hlbmV2ZXIgcG9zc2li
bGUKKyAqICAgICAgICAgc2F2ZSB5b3Vyc2VsZiBzb21lIGNwdSBjeWNsZXMgYW5kIHVzZQorICog
ICAgICAgICBlaW5hX3N0cmluZ3NoYXJlX3JlZigpIGluc3RlYWQgb2YgZWluYV9zdHJpbmdzaGFy
ZV9hZGQoKSBvcgorICogICAgICAgICBzdHJkdXAoKQorICovCitFQVBJIGNvbnN0IGNoYXIgKmV3
a19hdXRoX3JlcXVlc3RfcmVhbG1fZ2V0KGNvbnN0IEV3a19BdXRoX1JlcXVlc3QgKnJlcXVlc3Qp
OworCisvKioKKyAqIFF1ZXJpZXMgdGhlIGhvc3QgcmVxdWlyaW5nIHRoZSBhdXRoZW50aWNhdGlv
bi4KKyAqCisgKiBAcGFyYW0gcmVxdWVzdCByZXF1ZXN0IG9iamVjdCB0byBxdWVyeQorICoKKyAq
IEByZXR1cm4gdGhlIGhvc3QgcG9pbnRlciwgdGhhdCBtYXkgYmUgQGMgTlVMTC4gVGhpcyBwb2lu
dGVyIGlzCisgKiAgICAgICAgIGd1YXJhbnRlZWQgdG8gYmUgZWluYV9zdHJpbmdzaGFyZSwgc28g
d2hlbmV2ZXIgcG9zc2libGUKKyAqICAgICAgICAgc2F2ZSB5b3Vyc2VsZiBzb21lIGNwdSBjeWNs
ZXMgYW5kIHVzZQorICogICAgICAgICBlaW5hX3N0cmluZ3NoYXJlX3JlZigpIGluc3RlYWQgb2Yg
ZWluYV9zdHJpbmdzaGFyZV9hZGQoKSBvcgorICogICAgICAgICBzdHJkdXAoKQorICovCitFQVBJ
IGNvbnN0IGNoYXIgKmV3a19hdXRoX3JlcXVlc3RfaG9zdF9nZXQoY29uc3QgRXdrX0F1dGhfUmVx
dWVzdCAqcmVxdWVzdCk7CisKKy8qKgorICogQ2FuY2VscyB0aGUgYXV0aGVudGljYXRpb24gcmVx
dWVzdC4KKyAqCisgKiBAcGFyYW0gcmVxdWVzdCByZXF1ZXN0IG9iamVjdCB0byBjYW5jZWwKKyAq
CisgKiBAcmV0dXJuIEBjIEVJTkFfVFJVRSBpZiBzdWNjZXNzZnVsLCBAYyBFSU5BX0ZBTFNFIG90
aGVyd2lzZQorICovCitFQVBJIEVpbmFfQm9vbCBld2tfYXV0aF9yZXF1ZXN0X2NhbmNlbChFd2tf
QXV0aF9SZXF1ZXN0ICpyZXF1ZXN0KTsKKworLyoqCisgKiBTZXQgY3JlZGVudGlhbCBmb3IgdGhl
IGF1dGhlbnRpY2F0aW9uIHJlcXVlc3QuCisgKgorICogQHBhcmFtIHJlcXVlc3QgcmVxdWVzdCBv
YmplY3QgdG8gdXBkYXRlCisgKgorICogQHJldHVybiBAYyBFSU5BX1RSVUUgaWYgdGhlIGNyZWRl
bnRpYWwgd2FzIHN1Y2Nlc3NmdWx5IHNlbnQsIEBjIEVJTkFfRkFMU0Ugb3RoZXJ3aXNlLgorICov
CitFQVBJIEVpbmFfQm9vbCBld2tfYXV0aF9yZXF1ZXN0X2F1dGhlbnRpY2F0ZShFd2tfQXV0aF9S
ZXF1ZXN0ICpyZXF1ZXN0LCBjb25zdCBjaGFyICp1c2VybmFtZSwgY29uc3QgY2hhciAqcGFzc3dv
cmQpOworCisjaWZkZWYgX19jcGx1c3BsdXMKK30KKyNlbmRpZgorCisjZW5kaWYgLyogZXdrX2F1
dGhfcmVxdWVzdF9oICovCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L2VmbC9ld2tfYXV0aF9yZXF1ZXN0X3ByaXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvZWZsL2V3a19hdXRoX3JlcXVlc3RfcHJpdmF0ZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAuLmExYmIyODUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfYXV0aF9yZXF1ZXN0X3ByaXZhdGUuaApAQCAtMCwwICsx
LDY0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEludGVsIENvcnBvcmF0aW9uLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIGV3a19hdXRoX3JlcXVlc3RfcHJp
dmF0ZV9oCisjZGVmaW5lIGV3a19hdXRoX3JlcXVlc3RfcHJpdmF0ZV9oCisKKyNpbmNsdWRlICJX
S0VpbmFTaGFyZWRTdHJpbmcuaCIKKyNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgorI2luY2x1
ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CisK
K25hbWVzcGFjZSBXZWJLaXQgeworY2xhc3MgQXV0aGVudGljYXRpb25DaGFsbGVuZ2VQcm94eTsK
K30KKworY2xhc3MgRXdrX0F1dGhfUmVxdWVzdCA6IHB1YmxpYyBSZWZDb3VudGVkPEV3a19BdXRo
X1JlcXVlc3Q+IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxFd2tfQXV0aF9SZXF1
ZXN0PiBjcmVhdGUoV2ViS2l0OjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVByb3h5KiBhdXRoZW50
aWNhdGlvbkNoYWxsZW5nZSkKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgRXdr
X0F1dGhfUmVxdWVzdChhdXRoZW50aWNhdGlvbkNoYWxsZW5nZSkpOworICAgIH0KKyAgICB+RXdr
X0F1dGhfUmVxdWVzdCgpOworCisgICAgY29uc3QgY2hhciogc3VnZ2VzdGVkVXNlcm5hbWUoKSBj
b25zdDsKKyAgICBjb25zdCBjaGFyKiByZWFsbSgpIGNvbnN0OworICAgIGNvbnN0IGNoYXIqIGhv
c3QoKSBjb25zdDsKKyAgICBib29sIGlzUmV0cnlpbmcoKSBjb25zdDsKKworICAgIGJvb2wgY2Fu
Y2VsKCk7CisgICAgYm9vbCBhdXRoZW50aWNhdGUoY29uc3QgU3RyaW5nJiB1c2VybmFtZSwgY29u
c3QgU3RyaW5nJiBwYXNzd29yZCk7CisKK3ByaXZhdGU6CisgICAgZXhwbGljaXQgRXdrX0F1dGhf
UmVxdWVzdChXZWJLaXQ6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlUHJveHkqIGF1dGhlbnRpY2F0
aW9uQ2hhbGxlbmdlKTsKKworICAgIFJlZlB0cjxXZWJLaXQ6OkF1dGhlbnRpY2F0aW9uQ2hhbGxl
bmdlUHJveHk+IG1fYXV0aGVudGljYXRpb25DaGFsbGVuZ2U7CisgICAgYm9vbCBtX3dhc0hhbmRs
ZWQ7CisgICAgbXV0YWJsZSBXS0VpbmFTaGFyZWRTdHJpbmcgbV9zdWdnZXN0ZWRVc2VybmFtZTsK
KyAgICBtdXRhYmxlIFdLRWluYVNoYXJlZFN0cmluZyBtX3JlYWxtOworICAgIG11dGFibGUgV0tF
aW5hU2hhcmVkU3RyaW5nIG1faG9zdDsKK307CisKKyNlbmRpZiAvLyBld2tfYXV0aF9yZXF1ZXN0
X3ByaXZhdGVfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwv
ZXdrX3ZpZXcuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3LmgK
aW5kZXggNTNjYTgzYS4uMzZiZGUzNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9lZmwvZXdrX3ZpZXcuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L2VmbC9ld2tfdmlldy5oCkBAIC0yNiw2ICsyNiw4IEBACiAgKgogICogVGhlIGZvbGxvd2luZyBz
aWduYWxzIChzZWUgZXZhc19vYmplY3Rfc21hcnRfY2FsbGJhY2tfYWRkKCkpIGFyZSBlbWl0dGVk
OgogICoKKyAqIC0gImF1dGgscmVxdWVzdCIsIEV3a19BdXRoX1JlcXVlc3QqOiByZXBvcnRzIHRo
YXQgdXNlciBhdXRoZW50aWNhdGlvbiB3YXMgcmVxdWVzdGVkLiBDYWxsCisgKiAgIGV3a19hdXRo
X3JlcXVlc3RfcmVmKCkgb24gdGhlIHJlcXVlc3Qgb2JqZWN0IHRvIHByb2Nlc3MgdGhlIGF1dGhl
bnRpY2F0aW9uIGFzeW5jaHJvbm91c2x5LgogICogLSAiYmFjayxmb3J3YXJkLGxpc3QsY2hhbmdl
ZCIsIHZvaWQ6IHJlcG9ydHMgdGhhdCB0aGUgdmlldydzIGJhY2sgLyBmb3J3YXJkIGxpc3QgaGFk
IGNoYW5nZWQuCiAgKiAtICJjbG9zZSx3aW5kb3ciLCB2b2lkOiB3aW5kb3cgaXMgY2xvc2VkLgog
ICogLSAiY3JlYXRlLHdpbmRvdyIsIEV2YXNfT2JqZWN0Kio6IGEgbmV3IHdpbmRvdyBpcyBjcmVh
dGVkLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvdGVzdHMv
dGVzdF9ld2syX2F1dGhfcmVxdWVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L2VmbC90ZXN0cy90ZXN0X2V3azJfYXV0aF9yZXF1ZXN0LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwLi40YjUxZDYxCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9lZmwvdGVzdHMvdGVzdF9ld2syX2F1dGhfcmVxdWVzdC5jcHAKQEAg
LTAsMCArMSwxOTcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgSW50ZWwgQ29ycG9yYXRp
b24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwor
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIK
KworI2luY2x1ZGUgIlVuaXRUZXN0VXRpbHMvRVdLMlVuaXRUZXN0QmFzZS5oIgorI2luY2x1ZGUg
IlVuaXRUZXN0VXRpbHMvRVdLMlVuaXRUZXN0RW52aXJvbm1lbnQuaCIKKyNpbmNsdWRlICJVbml0
VGVzdFV0aWxzL0VXSzJVbml0VGVzdFNlcnZlci5oIgorI2luY2x1ZGUgPEVXZWJLaXQyLmg+Cisj
aW5jbHVkZSA8RWNvcmUuaD4KKyNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgorCit1c2luZyBu
YW1lc3BhY2UgRVdLMlVuaXRUZXN0OworCitleHRlcm4gRVdLMlVuaXRUZXN0RW52aXJvbm1lbnQq
IGVudmlyb25tZW50OworCitzdGF0aWMgY29uc3QgY2hhciBURVNUX1VTRVJOQU1FW10gPSAidXNl
cm5hbWUiOworc3RhdGljIGNvbnN0IGNoYXIgVEVTVF9QQVNTV09SRFtdID0gInBhc3N3b3JkIjsK
K3N0YXRpYyBjb25zdCBjaGFyIEVYUEVDVEVEX0FVVEhPUklaQVRJT05bXSA9ICJCYXNpYyBkWE5s
Y201aGJXVTZjR0Z6YzNkdmNtUT0iOyAvLyBCYXNlNjQgZW5jb2Rpbmcgb2YgInVzZXJuYW1lOnBh
c3N3b3JkIi4KK3N0YXRpYyBjb25zdCBjaGFyIElOREVYX0hUTUxfU1RSSU5HW10gPQorICAgICI8
aHRtbD4iCisgICAgIjxoZWFkPjx0aXRsZT5FRkxXZWJLaXQyIEF1dGhlbnRpY2F0aW9uIHRlc3Q8
L3RpdGxlPjwvaGVhZD4iCisgICAgIjxib2R5PjwvYm9keT48L2h0bWw+IjsKKworc3RhdGljIHZv
aWQgc2VydmVyQ2FsbGJhY2soU291cFNlcnZlciosIFNvdXBNZXNzYWdlKiBtZXNzYWdlLCBjb25z
dCBjaGFyKiBwYXRoLCBHSGFzaFRhYmxlKiwgU291cENsaWVudENvbnRleHQqLCB2b2lkKikKK3sK
KyAgICBpZiAobWVzc2FnZS0+bWV0aG9kICE9IFNPVVBfTUVUSE9EX0dFVCkgeworICAgICAgICBz
b3VwX21lc3NhZ2Vfc2V0X3N0YXR1cyhtZXNzYWdlLCBTT1VQX1NUQVRVU19OT1RfSU1QTEVNRU5U
RUQpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgaWYgKCFzdHJjbXAocGF0aCwgIi9p
bmRleC5odG1sIikpIHsKKyAgICAgICAgY29uc3QgY2hhciogYXV0aG9yaXphdGlvbiA9IHNvdXBf
bWVzc2FnZV9oZWFkZXJzX2dldF9vbmUobWVzc2FnZS0+cmVxdWVzdF9oZWFkZXJzLCAiQXV0aG9y
aXphdGlvbiIpOworICAgICAgICAvLyBSZXF1aXJlIGF1dGhlbnRpY2F0aW9uCisgICAgICAgIGlm
IChhdXRob3JpemF0aW9uICYmICFzdHJjbXAoYXV0aG9yaXphdGlvbiwgRVhQRUNURURfQVVUSE9S
SVpBVElPTikpIHsKKyAgICAgICAgICAgIC8vIFN1Y2Nlc3NmdWwgYXV0aGVudGljYXRpb24uCisg
ICAgICAgICAgICBzb3VwX21lc3NhZ2Vfc2V0X3N0YXR1cyhtZXNzYWdlLCBTT1VQX1NUQVRVU19P
Syk7CisgICAgICAgICAgICBzb3VwX21lc3NhZ2VfYm9keV9hcHBlbmQobWVzc2FnZS0+cmVzcG9u
c2VfYm9keSwgU09VUF9NRU1PUllfQ09QWSwgSU5ERVhfSFRNTF9TVFJJTkcsIHN0cmxlbihJTkRF
WF9IVE1MX1NUUklORykpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgLy8gTm8gKHZh
bGlkKSBhdXRob3JpemF0aW9uIGhlYWRlciBwcm92aWRlZCBieSB0aGUgY2xpZW50LCByZXF1ZXN0
IGF1dGhlbnRpY2F0aW9uLgorICAgICAgICAgICAgc291cF9tZXNzYWdlX3NldF9zdGF0dXMobWVz
c2FnZSwgU09VUF9TVEFUVVNfVU5BVVRIT1JJWkVEKTsKKyAgICAgICAgICAgIHNvdXBfbWVzc2Fn
ZV9oZWFkZXJzX2FwcGVuZChtZXNzYWdlLT5yZXNwb25zZV9oZWFkZXJzLCAiV1dXLUF1dGhlbnRp
Y2F0ZSIsICJCYXNpYyByZWFsbT1cIm15IHJlYWxtXCIiKTsKKyAgICAgICAgfQorICAgIH0gZWxz
ZQorICAgICAgICBzb3VwX21lc3NhZ2Vfc2V0X3N0YXR1cyhtZXNzYWdlLCBTT1VQX1NUQVRVU19O
T1RfRk9VTkQpOworCisgICAgc291cF9tZXNzYWdlX2JvZHlfY29tcGxldGUobWVzc2FnZS0+cmVz
cG9uc2VfYm9keSk7Cit9CisKK3N0YXRpYyB2b2lkIG9uQXV0aGVudGljYXRpb25SZXF1ZXN0KHZv
aWQqIHVzZXJEYXRhLCBFdmFzX09iamVjdCosIHZvaWQqIGV2ZW50SW5mbykKK3sKKyAgICBFd2tf
QXV0aF9SZXF1ZXN0KiogcmV0dXJuUmVxdWVzdCA9IHN0YXRpY19jYXN0PEV3a19BdXRoX1JlcXVl
c3QqKj4odXNlckRhdGEpOworICAgIEFTU0VSVF9UUlVFKHJldHVyblJlcXVlc3QpOworCisgICAg
RXdrX0F1dGhfUmVxdWVzdCogcmVxdWVzdCA9IHN0YXRpY19jYXN0PEV3a19BdXRoX1JlcXVlc3Qq
PihldmVudEluZm8pOworICAgIEFTU0VSVF9UUlVFKHJlcXVlc3QpOworCisgICAgKnJldHVyblJl
cXVlc3QgPSBld2tfYXV0aF9yZXF1ZXN0X3JlZihyZXF1ZXN0KTsKK30KKworVEVTVF9GKEVXSzJV
bml0VGVzdEJhc2UsIGV3a19hdXRoX3JlcXVlc3Rfc3VjY2VzcykKK3sKKyAgICBPd25QdHI8RVdL
MlVuaXRUZXN0U2VydmVyPiBodHRwU2VydmVyID0gYWRvcHRQdHIobmV3IEVXSzJVbml0VGVzdFNl
cnZlcik7CisgICAgaHR0cFNlcnZlci0+cnVuKHNlcnZlckNhbGxiYWNrKTsKKworICAgIEV3a19B
dXRoX1JlcXVlc3QqIGF1dGhlbnRpY2F0aW9uUmVxdWVzdCA9IDA7CisgICAgZXZhc19vYmplY3Rf
c21hcnRfY2FsbGJhY2tfYWRkKHdlYlZpZXcoKSwgImF1dGgscmVxdWVzdCIsIG9uQXV0aGVudGlj
YXRpb25SZXF1ZXN0LCAmYXV0aGVudGljYXRpb25SZXF1ZXN0KTsKKworICAgIGV3a192aWV3X3Vy
bF9zZXQod2ViVmlldygpLCBodHRwU2VydmVyLT5nZXRVUkxGb3JQYXRoKCIvaW5kZXguaHRtbCIp
LmRhdGEoKSk7CisKKyAgICB3aGlsZSAoIWF1dGhlbnRpY2F0aW9uUmVxdWVzdCkKKyAgICAgICAg
ZWNvcmVfbWFpbl9sb29wX2l0ZXJhdGUoKTsKKworICAgIEFTU0VSVF9UUlVFKGF1dGhlbnRpY2F0
aW9uUmVxdWVzdCk7CisgICAgZXZhc19vYmplY3Rfc21hcnRfY2FsbGJhY2tfZGVsKHdlYlZpZXco
KSwgImF1dGgscmVxdWVzdCIsIG9uQXV0aGVudGljYXRpb25SZXF1ZXN0KTsKKworICAgIEVYUEVD
VF9TVFJFUSgibXkgcmVhbG0iLCBld2tfYXV0aF9yZXF1ZXN0X3JlYWxtX2dldChhdXRoZW50aWNh
dGlvblJlcXVlc3QpKTsKKyAgICBFWFBFQ1RfU1RSRVEoIjEyNy4wLjAuMSIsIGV3a19hdXRoX3Jl
cXVlc3RfaG9zdF9nZXQoYXV0aGVudGljYXRpb25SZXF1ZXN0KSk7CisgICAgRVhQRUNUX0ZBTFNF
KGV3a19hdXRoX3JlcXVlc3RfcmV0cnlpbmdfZ2V0KGF1dGhlbnRpY2F0aW9uUmVxdWVzdCkpOwor
CisgICAgQVNTRVJUX1RSVUUoZXdrX2F1dGhfcmVxdWVzdF9hdXRoZW50aWNhdGUoYXV0aGVudGlj
YXRpb25SZXF1ZXN0LCBURVNUX1VTRVJOQU1FLCBURVNUX1BBU1NXT1JEKSk7CisKKyAgICBld2tf
YXV0aF9yZXF1ZXN0X3VucmVmKGF1dGhlbnRpY2F0aW9uUmVxdWVzdCk7CisKKyAgICBBU1NFUlRf
VFJVRSh3YWl0VW50aWxUaXRsZUNoYW5nZWRUbygiRUZMV2ViS2l0MiBBdXRoZW50aWNhdGlvbiB0
ZXN0IikpOworfQorCitURVNUX0YoRVdLMlVuaXRUZXN0QmFzZSwgZXdrX2F1dGhfcmVxdWVzdF9m
YWlsdXJlX3RoZW5fc3VjY2VzcykKK3sKKyAgICBPd25QdHI8RVdLMlVuaXRUZXN0U2VydmVyPiBo
dHRwU2VydmVyID0gYWRvcHRQdHIobmV3IEVXSzJVbml0VGVzdFNlcnZlcik7CisgICAgaHR0cFNl
cnZlci0+cnVuKHNlcnZlckNhbGxiYWNrKTsKKworICAgIEV3a19BdXRoX1JlcXVlc3QqIGF1dGhl
bnRpY2F0aW9uUmVxdWVzdCA9IDA7CisgICAgZXZhc19vYmplY3Rfc21hcnRfY2FsbGJhY2tfYWRk
KHdlYlZpZXcoKSwgImF1dGgscmVxdWVzdCIsIG9uQXV0aGVudGljYXRpb25SZXF1ZXN0LCAmYXV0
aGVudGljYXRpb25SZXF1ZXN0KTsKKworICAgIGV3a192aWV3X3VybF9zZXQod2ViVmlldygpLCBo
dHRwU2VydmVyLT5nZXRVUkxGb3JQYXRoKCIvaW5kZXguaHRtbCIpLmRhdGEoKSk7CisKKyAgICB3
aGlsZSAoIWF1dGhlbnRpY2F0aW9uUmVxdWVzdCkKKyAgICAgICAgZWNvcmVfbWFpbl9sb29wX2l0
ZXJhdGUoKTsKKworICAgIEFTU0VSVF9UUlVFKGF1dGhlbnRpY2F0aW9uUmVxdWVzdCk7CisKKyAg
ICBFWFBFQ1RfU1RSRVEoIm15IHJlYWxtIiwgZXdrX2F1dGhfcmVxdWVzdF9yZWFsbV9nZXQoYXV0
aGVudGljYXRpb25SZXF1ZXN0KSk7CisgICAgRVhQRUNUX1NUUkVRKCIxMjcuMC4wLjEiLCBld2tf
YXV0aF9yZXF1ZXN0X2hvc3RfZ2V0KGF1dGhlbnRpY2F0aW9uUmVxdWVzdCkpOworICAgIEVYUEVD
VF9GQUxTRShld2tfYXV0aF9yZXF1ZXN0X3JldHJ5aW5nX2dldChhdXRoZW50aWNhdGlvblJlcXVl
c3QpKTsKKworICAgIEFTU0VSVF9UUlVFKGV3a19hdXRoX3JlcXVlc3RfYXV0aGVudGljYXRlKGF1
dGhlbnRpY2F0aW9uUmVxdWVzdCwgVEVTVF9VU0VSTkFNRSwgIndyb25ncGFzc3dvcmQiKSk7CisK
KyAgICBld2tfYXV0aF9yZXF1ZXN0X3VucmVmKGF1dGhlbnRpY2F0aW9uUmVxdWVzdCk7CisgICAg
YXV0aGVudGljYXRpb25SZXF1ZXN0ID0gMDsKKworICAgIC8vIFdlIGV4cGVjdCBhIHNlY29uZCBh
dXRoZW50aWNhdGlvbiByZXF1ZXN0IHNpbmNlIHRoZSBmaXJzdCBvbmUgZmFpbGVkLgorICAgIHdo
aWxlICghYXV0aGVudGljYXRpb25SZXF1ZXN0KQorICAgICAgICBlY29yZV9tYWluX2xvb3BfaXRl
cmF0ZSgpOworICAgIGV2YXNfb2JqZWN0X3NtYXJ0X2NhbGxiYWNrX2RlbCh3ZWJWaWV3KCksICJh
dXRoLHJlcXVlc3QiLCBvbkF1dGhlbnRpY2F0aW9uUmVxdWVzdCk7CisKKyAgICBFWFBFQ1RfU1RS
RVEoIm15IHJlYWxtIiwgZXdrX2F1dGhfcmVxdWVzdF9yZWFsbV9nZXQoYXV0aGVudGljYXRpb25S
ZXF1ZXN0KSk7CisgICAgRVhQRUNUX1NUUkVRKCIxMjcuMC4wLjEiLCBld2tfYXV0aF9yZXF1ZXN0
X2hvc3RfZ2V0KGF1dGhlbnRpY2F0aW9uUmVxdWVzdCkpOworICAgIEVYUEVDVF9UUlVFKGV3a19h
dXRoX3JlcXVlc3RfcmV0cnlpbmdfZ2V0KGF1dGhlbnRpY2F0aW9uUmVxdWVzdCkpOworCisgICAg
Ly8gTm93IHByb3ZpZGUgdGhlIHJpZ2h0IHBhc3N3b3JkLgorICAgIEFTU0VSVF9UUlVFKGV3a19h
dXRoX3JlcXVlc3RfYXV0aGVudGljYXRlKGF1dGhlbnRpY2F0aW9uUmVxdWVzdCwgVEVTVF9VU0VS
TkFNRSwgVEVTVF9QQVNTV09SRCkpOworCisgICAgZXdrX2F1dGhfcmVxdWVzdF91bnJlZihhdXRo
ZW50aWNhdGlvblJlcXVlc3QpOworCisgICAgQVNTRVJUX1RSVUUod2FpdFVudGlsVGl0bGVDaGFu
Z2VkVG8oIkVGTFdlYktpdDIgQXV0aGVudGljYXRpb24gdGVzdCIpKTsKK30KKworc3RhdGljIHZv
aWQgb25SZXNvdXJjZUxvYWRSZXNwb25zZSh2b2lkKiB1c2VyRGF0YSwgRXZhc19PYmplY3QqLCB2
b2lkKiBldmVudEluZm8pCit7CisgICAgaW50KiBzdGF0dXNDb2RlID0gc3RhdGljX2Nhc3Q8aW50
Kj4odXNlckRhdGEpOworICAgIEFTU0VSVF9UUlVFKHN0YXR1c0NvZGUpOworCisgICAgRXdrX1Jl
c291cmNlX0xvYWRfUmVzcG9uc2UqIHJlc3BvbnNlID0gc3RhdGljX2Nhc3Q8RXdrX1Jlc291cmNl
X0xvYWRfUmVzcG9uc2UqPihldmVudEluZm8pOworICAgIEFTU0VSVF9UUlVFKHJlc3BvbnNlKTsK
KworICAgIGlmICghZXdrX3Jlc291cmNlX21haW5fcmVzb3VyY2VfZ2V0KHJlc3BvbnNlLT5yZXNv
dXJjZSkpCisgICAgICAgIHJldHVybjsKKworICAgICpzdGF0dXNDb2RlID0gZXdrX3VybF9yZXNw
b25zZV9zdGF0dXNfY29kZV9nZXQocmVzcG9uc2UtPnJlc3BvbnNlKTsKK30KKworVEVTVF9GKEVX
SzJVbml0VGVzdEJhc2UsIGV3a19hdXRoX3JlcXVlc3RfY2FuY2VsKQoreworICAgIE93blB0cjxF
V0syVW5pdFRlc3RTZXJ2ZXI+IGh0dHBTZXJ2ZXIgPSBhZG9wdFB0cihuZXcgRVdLMlVuaXRUZXN0
U2VydmVyKTsKKyAgICBodHRwU2VydmVyLT5ydW4oc2VydmVyQ2FsbGJhY2spOworCisgICAgRXdr
X0F1dGhfUmVxdWVzdCogYXV0aGVudGljYXRpb25SZXF1ZXN0ID0gMDsKKyAgICBldmFzX29iamVj
dF9zbWFydF9jYWxsYmFja19hZGQod2ViVmlldygpLCAiYXV0aCxyZXF1ZXN0Iiwgb25BdXRoZW50
aWNhdGlvblJlcXVlc3QsICZhdXRoZW50aWNhdGlvblJlcXVlc3QpOworCisgICAgZXdrX3ZpZXdf
dXJsX3NldCh3ZWJWaWV3KCksIGh0dHBTZXJ2ZXItPmdldFVSTEZvclBhdGgoIi9pbmRleC5odG1s
IikuZGF0YSgpKTsKKworICAgIHdoaWxlICghYXV0aGVudGljYXRpb25SZXF1ZXN0KQorICAgICAg
ICBlY29yZV9tYWluX2xvb3BfaXRlcmF0ZSgpOworCisgICAgQVNTRVJUX1RSVUUoYXV0aGVudGlj
YXRpb25SZXF1ZXN0KTsKKyAgICBldmFzX29iamVjdF9zbWFydF9jYWxsYmFja19kZWwod2ViVmll
dygpLCAiYXV0aCxyZXF1ZXN0Iiwgb25BdXRoZW50aWNhdGlvblJlcXVlc3QpOworCisgICAgRVhQ
RUNUX1NUUkVRKCJteSByZWFsbSIsIGV3a19hdXRoX3JlcXVlc3RfcmVhbG1fZ2V0KGF1dGhlbnRp
Y2F0aW9uUmVxdWVzdCkpOworICAgIEVYUEVDVF9TVFJFUSgiMTI3LjAuMC4xIiwgZXdrX2F1dGhf
cmVxdWVzdF9ob3N0X2dldChhdXRoZW50aWNhdGlvblJlcXVlc3QpKTsKKyAgICBFWFBFQ1RfRkFM
U0UoZXdrX2F1dGhfcmVxdWVzdF9yZXRyeWluZ19nZXQoYXV0aGVudGljYXRpb25SZXF1ZXN0KSk7
CisKKyAgICBpbnQgc3RhdHVzQ29kZSA9IDA7CisgICAgZXZhc19vYmplY3Rfc21hcnRfY2FsbGJh
Y2tfYWRkKHdlYlZpZXcoKSwgInJlc291cmNlLHJlcXVlc3QscmVzcG9uc2UiLCBvblJlc291cmNl
TG9hZFJlc3BvbnNlLCAmc3RhdHVzQ29kZSk7CisKKyAgICAvLyBDYW5jZWxzIGF1dGhlbnRpY2F0
aW9uIGJ5IGRlZmF1bHQuCisgICAgZXdrX2F1dGhfcmVxdWVzdF91bnJlZihhdXRoZW50aWNhdGlv
blJlcXVlc3QpOworCisgICAgd2hpbGUgKCFzdGF0dXNDb2RlKQorICAgICAgICBlY29yZV9tYWlu
X2xvb3BfaXRlcmF0ZSgpOworCisgICAgRVhQRUNUX0VRKFNPVVBfU1RBVFVTX1VOQVVUSE9SSVpF
RCwgc3RhdHVzQ29kZSk7CisKKyAgICBldmFzX29iamVjdF9zbWFydF9jYWxsYmFja19kZWwod2Vi
VmlldygpLCAicmVzb3VyY2UscmVxdWVzdCxyZXNwb25zZSIsIG9uUmVzb3VyY2VMb2FkUmVzcG9u
c2UpOworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9QYWdlTG9h
ZENsaWVudEVmbC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1BhZ2VMb2FkQ2xp
ZW50RWZsLmNwcAppbmRleCA2MjFjODU1Li5lMmIwNmI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvZWZsL1BhZ2VMb2FkQ2xpZW50RWZsLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvZWZsL1BhZ2VMb2FkQ2xpZW50RWZsLmNwcApAQCAtMzAsNiArMzAsNyBA
QAogI2luY2x1ZGUgIldLQVBJQ2FzdC5oIgogI2luY2x1ZGUgIldLRnJhbWUuaCIKICNpbmNsdWRl
ICJXS1BhZ2UuaCIKKyNpbmNsdWRlICJld2tfYXV0aF9yZXF1ZXN0X3ByaXZhdGUuaCIKICNpbmNs
dWRlICJld2tfYmFja19mb3J3YXJkX2xpc3RfcHJpdmF0ZS5oIgogI2luY2x1ZGUgImV3a19lcnJv
cl9wcml2YXRlLmgiCiAjaW5jbHVkZSAiZXdrX2ludGVudF9wcml2YXRlLmgiCkBAIC0xNjEsNiAr
MTYyLDE0IEBAIHZvaWQgUGFnZUxvYWRDbGllbnRFZmw6OmRpZFNhbWVEb2N1bWVudE5hdmlnYXRp
b25Gb3JGcmFtZShXS1BhZ2VSZWYsIFdLRnJhbWVSZWYKICAgICB2aWV3SW1wbC0+aW5mb3JtVVJM
Q2hhbmdlKCk7CiB9CiAKK3ZvaWQgUGFnZUxvYWRDbGllbnRFZmw6OmRpZFJlY2VpdmVBdXRoZW50
aWNhdGlvbkNoYWxsZW5nZUluRnJhbWUoV0tQYWdlUmVmLCBXS0ZyYW1lUmVmLCBXS0F1dGhlbnRp
Y2F0aW9uQ2hhbGxlbmdlUmVmIGF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLCBjb25zdCB2b2lkKiBj
bGllbnRJbmZvKQoreworICAgIEV3a1ZpZXdJbXBsKiB2aWV3SW1wbCA9IHRvUGFnZUxvYWRDbGll
bnRFZmwoY2xpZW50SW5mbyktPnZpZXdJbXBsKCk7CisKKyAgICBSZWZQdHI8RXdrX0F1dGhfUmVx
dWVzdD4gYXV0aGVudGljYXRpb25SZXF1ZXN0ID0gRXdrX0F1dGhfUmVxdWVzdDo6Y3JlYXRlKHRv
SW1wbChhdXRoZW50aWNhdGlvbkNoYWxsZW5nZSkpOworICAgIHZpZXdJbXBsLT5zbWFydENhbGxi
YWNrPEF1dGhSZXF1ZXN0PigpLmNhbGwoYXV0aGVudGljYXRpb25SZXF1ZXN0LmdldCgpKTsKK30K
KwogUGFnZUxvYWRDbGllbnRFZmw6OlBhZ2VMb2FkQ2xpZW50RWZsKEV3a1ZpZXdJbXBsKiB2aWV3
SW1wbCkKICAgICA6IG1fdmlld0ltcGwodmlld0ltcGwpCiB7CkBAIC0xOTEsNiArMjAwLDcgQEAg
UGFnZUxvYWRDbGllbnRFZmw6OlBhZ2VMb2FkQ2xpZW50RWZsKEV3a1ZpZXdJbXBsKiB2aWV3SW1w
bCkKICNlbmRpZgogICAgIGxvYWRDbGllbnQuZGlkQ2hhbmdlQmFja0ZvcndhcmRMaXN0ID0gZGlk
Q2hhbmdlQmFja0ZvcndhcmRMaXN0OwogICAgIGxvYWRDbGllbnQuZGlkU2FtZURvY3VtZW50TmF2
aWdhdGlvbkZvckZyYW1lID0gZGlkU2FtZURvY3VtZW50TmF2aWdhdGlvbkZvckZyYW1lOworICAg
IGxvYWRDbGllbnQuZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlSW5GcmFtZSA9IGRp
ZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZUluRnJhbWU7CiAgICAgV0tQYWdlU2V0UGFn
ZUxvYWRlckNsaWVudChwYWdlUmVmLCAmbG9hZENsaWVudCk7CiB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvUGFnZUxvYWRDbGllbnRFZmwuaCBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9lZmwvUGFnZUxvYWRDbGllbnRFZmwuaAppbmRleCBiOTg2ZmZlLi5j
ZDcxM2EzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1BhZ2VMb2Fk
Q2xpZW50RWZsLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9QYWdlTG9hZENs
aWVudEVmbC5oCkBAIC02NCw2ICs2NCw3IEBAIHByaXZhdGU6CiAjZW5kaWYKICAgICBzdGF0aWMg
dm9pZCBkaWRDaGFuZ2VCYWNrRm9yd2FyZExpc3QoV0tQYWdlUmVmLCBXS0JhY2tGb3J3YXJkTGlz
dEl0ZW1SZWYgYWRkZWRJdGVtLCBXS0FycmF5UmVmIHJlbW92ZWRJdGVtcywgY29uc3Qgdm9pZCog
Y2xpZW50SW5mbyk7CiAgICAgc3RhdGljIHZvaWQgZGlkU2FtZURvY3VtZW50TmF2aWdhdGlvbkZv
ckZyYW1lKFdLUGFnZVJlZiwgV0tGcmFtZVJlZiwgV0tTYW1lRG9jdW1lbnROYXZpZ2F0aW9uVHlw
ZSwgV0tUeXBlUmVmLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKTsKKyAgICBzdGF0aWMgdm9pZCBk
aWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2VJbkZyYW1lKFdLUGFnZVJlZiwgV0tGcmFt
ZVJlZiwgV0tBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVJlZiwgY29uc3Qgdm9pZCogY2xpZW50SW5m
byk7CiAKICAgICBFd2tWaWV3SW1wbCogbV92aWV3SW1wbDsKIH07Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>171834</attachid>
            <date>2012-11-01 06:42:21 -0700</date>
            <delta_ts>2012-11-01 07:24:45 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>100858_ewk_auth_request.patch</filename>
            <type>text/plain</type>
            <size>39712</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBhNjczYTI0Li40NjRkNGEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzYg
QEAKKzIwMTItMTEtMDEgIENocmlzdG9waGUgRHVtZXogIDxjaHJpc3RvcGhlLmR1bWV6QGludGVs
LmNvbT4KKworICAgICAgICBbRUZMXVtXSzJdIEFkZCBFd2tfQXV0aF9SZXF1ZXN0IEFQSQorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTAwODU4CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUHJvdmlkZSBhbiBB
dXRoZW50aWNhdGlvbkNsaWVudCBmb3IgRUZMIHBvcnQgaW4gV2ViQ29yZSBzbworICAgICAgICB0
aGF0IHdlIGNhbiBoYW5kbGUgYXV0aGVudGljYXRpb24gc2ltaWxhcmx5IHRvIG90aGVyIHBvcnRz
CisgICAgICAgIG9mIFdlYktpdC4KKworICAgICAgICBObyBuZXcgdGVzdHMsIG5vIGJlaGF2aW9y
IGNoYW5nZSBmb3IgbGF5b3V0IHRlc3RzLgorCisgICAgICAgICogUGxhdGZvcm1FZmwuY21ha2U6
IEFkZCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVNvdXAuY3BwIHRvIENNYWtlLgorICAgICAgICAq
IGxvYWRlci9SZXNvdXJjZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUxv
YWRlcjo6ZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlLmg6CisgICAgICAgIChSZXNvdXJjZUhhbmRsZSk6
IEhhdmUgUmVzb3VyY2VIYW5kbGUgc3ViY2xhc3MgQXV0aGVudGljYXRpb25DbGllbnQgbGlrZQor
ICAgICAgICBtb3N0IG9mIHRoZSBvdGhlciBwb3J0cy4KKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3
b3JrL3NvdXAvQXV0aGVudGljYXRpb25DaGFsbGVuZ2VTb3VwLmNwcDogRml4IGluaXRpYWxpemF0
aW9uCisgICAgICAgIG9mIHByZXZpb3VzRmFpbHVyZUNvdW50IG1lbWJlci4gSXQgc2hvdWxkIGJl
IDEgaWYgd2UgYXJlIHJldHJ5aW5nCisgICAgICAgIGF1dGhlbnRpY2F0aW9uIGFuZCAwIG90aGVy
d2lzZSwgbm90IHRoZSBvcHBvc2l0ZS4KKyAgICAgICAgKFdlYkNvcmU6OkF1dGhlbnRpY2F0aW9u
Q2hhbGxlbmdlOjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSk6CisgICAgICAgICogcGxhdGZvcm0v
bmV0d29yay9zb3VwL1Jlc291cmNlSGFuZGxlU291cC5jcHA6IFByb3ZpZGUgaW1wbGVtZW50YXRp
b24gZm9yIEVGTAorICAgICAgICBwb3J0IG9mIEF1dGhlbnRpY2F0aW9uQ2xpZW50IG1ldGhvZHMu
CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlOjpk
aWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UpOgorICAgICAgICAoV2ViQ29yZTo6UmVz
b3VyY2VIYW5kbGU6OnJlY2VpdmVkUmVxdWVzdFRvQ29udGludWVXaXRob3V0Q3JlZGVudGlhbCk6
CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZTo6cmVjZWl2ZWRDcmVkZW50aWFsKToK
KyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlOjpyZWNlaXZlZENhbmNlbGxhdGlvbik6
CisgICAgICAgIChXZWJDb3JlOjphdXRoZW50aWNhdGVDYWxsYmFjayk6CisgICAgICAgIChXZWJD
b3JlOjpSZXNvdXJjZUhhbmRsZTo6ZGVmYXVsdFNlc3Npb24pOgorCiAyMDEyLTExLTAxICBLZW50
IFRhbXVyYSAgPHRrZW50QGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZW1vdmUgdW51c2VkIExv
Y2FsZTo6cGFyc2VEYXRlVGltZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1F
ZmwuY21ha2UgYi9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybUVmbC5jbWFrZQppbmRleCAzODdjMzdj
Li5jNzIyYzJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybUVmbC5jbWFrZQor
KysgYi9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybUVmbC5jbWFrZQpAQCAtNjksNiArNjksNyBAQCBM
SVNUKEFQUEVORCBXZWJDb3JlX1NPVVJDRVMKICAgcGxhdGZvcm0vbGludXgvR2FtZXBhZERldmlj
ZUxpbnV4LmNwcAogICBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvTWVkaWFTdHJlYW1D
ZW50ZXJHU3RyZWFtZXIuY3BwCiAgIHBsYXRmb3JtL25ldHdvcmsvZWZsL05ldHdvcmtTdGF0ZU5v
dGlmaWVyRWZsLmNwcAorICBwbGF0Zm9ybS9uZXR3b3JrL3NvdXAvQXV0aGVudGljYXRpb25DaGFs
bGVuZ2VTb3VwLmNwcAogICBwbGF0Zm9ybS9uZXR3b3JrL3NvdXAvQ29va2llSmFyU291cC5jcHAK
ICAgcGxhdGZvcm0vbmV0d29yay9zb3VwL0Nvb2tpZVN0b3JhZ2VTb3VwLmNwcAogICBwbGF0Zm9y
bS9uZXR3b3JrL3NvdXAvQ3JlZGVudGlhbFN0b3JhZ2VTb3VwLmNwcApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9SZXNvdXJjZUxvYWRlci5jcHAKaW5kZXggMGRhZDg3Zi4uNWNjMzZiZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuY3BwCkBAIC00OTQsNyArNDk0LDcgQEAgdm9p
ZCBSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKGNvbnN0
IEF1dGhlbnRpY2F0aW9uQ2hhbGwKICAgICB9CiAgICAgLy8gT25seSB0aGVzZSBwbGF0Zm9ybXMg
cHJvdmlkZSBhIHdheSB0byBjb250aW51ZSB3aXRob3V0IGNyZWRlbnRpYWxzLgogICAgIC8vIElm
IHdlIGNhbid0IGNvbnRpbnVlIHdpdGggY3JlZGVudGlhbHMsIHdlIG5lZWQgdG8gY2FuY2VsIHRo
ZSBsb2FkIGFsdG9nZXRoZXIuCi0jaWYgUExBVEZPUk0oTUFDKSB8fCBVU0UoQ0ZORVRXT1JLKSB8
fCBVU0UoQ1VSTCkgfHwgUExBVEZPUk0oR1RLKQorI2lmIFBMQVRGT1JNKE1BQykgfHwgVVNFKENG
TkVUV09SSykgfHwgVVNFKENVUkwpIHx8IFBMQVRGT1JNKEdUSykgfHwgUExBVEZPUk0oRUZMKQog
ICAgIGhhbmRsZSgpLT5yZWNlaXZlZFJlcXVlc3RUb0NvbnRpbnVlV2l0aG91dENyZWRlbnRpYWwo
Y2hhbGxlbmdlKTsKICAgICBBU1NFUlQoIWhhbmRsZSgpLT5oYXNBdXRoZW50aWNhdGlvbkNoYWxs
ZW5nZSgpKTsKICNlbHNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL1Jlc291cmNlSGFuZGxlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jl
c291cmNlSGFuZGxlLmgKaW5kZXggYzgxNzAwNC4uMzYyMTg0MyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGUuaApAQCAtOTcsNyArOTcsNyBA
QCBlbnVtIFN0b3JlZENyZWRlbnRpYWxzIHsKIHRlbXBsYXRlIDx0eXBlbmFtZSBUPiBjbGFzcyBU
aW1lcjsKIAogY2xhc3MgUmVzb3VyY2VIYW5kbGUgOiBwdWJsaWMgUmVmQ291bnRlZDxSZXNvdXJj
ZUhhbmRsZT4KLSNpZiBQTEFURk9STShNQUMpIHx8IFVTRShDRk5FVFdPUkspIHx8IFVTRShDVVJM
KQorI2lmIFBMQVRGT1JNKE1BQykgfHwgVVNFKENGTkVUV09SSykgfHwgVVNFKENVUkwpIHx8IFBM
QVRGT1JNKEVGTCkKICAgICAsIHB1YmxpYyBBdXRoZW50aWNhdGlvbkNsaWVudAogI2VuZGlmCiAg
ICAgewpAQCAtMTE0LDcgKzExNCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHdpbGxTZW5kUmVxdWVz
dChSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZWRpcmVjdFJlc3Bv
bnNlKTsKICAgICBib29sIHNob3VsZFVzZUNyZWRlbnRpYWxTdG9yYWdlKCk7CiAjZW5kaWYKLSNp
ZiBQTEFURk9STShNQUMpIHx8IFVTRShDRk5FVFdPUkspIHx8IFVTRShDVVJMKQorI2lmIFBMQVRG
T1JNKE1BQykgfHwgVVNFKENGTkVUV09SSykgfHwgVVNFKENVUkwpIHx8IFBMQVRGT1JNKEVGTCkK
ICAgICB2b2lkIGRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShjb25zdCBBdXRoZW50
aWNhdGlvbkNoYWxsZW5nZSYpOwogICAgIHZpcnR1YWwgdm9pZCByZWNlaXZlZENyZWRlbnRpYWwo
Y29uc3QgQXV0aGVudGljYXRpb25DaGFsbGVuZ2UmLCBjb25zdCBDcmVkZW50aWFsJik7CiAgICAg
dmlydHVhbCB2b2lkIHJlY2VpdmVkUmVxdWVzdFRvQ29udGludWVXaXRob3V0Q3JlZGVudGlhbChj
b25zdCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlU291cC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvQXV0aGVudGljYXRpb25DaGFs
bGVuZ2VTb3VwLmNwcAppbmRleCBjMmVlNzFlLi5kM2FhNmRlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvQXV0aGVudGljYXRpb25DaGFsbGVuZ2VTb3Vw
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvQXV0aGVudGlj
YXRpb25DaGFsbGVuZ2VTb3VwLmNwcApAQCAtNjYsNyArNjYsNyBAQCBzdGF0aWMgUHJvdGVjdGlv
blNwYWNlIHByb3RlY3Rpb25TcGFjZUZyb21Tb3VwQXV0aEFuZE1lc3NhZ2UoU291cEF1dGgqIHNv
dXBBdXRoLAogQXV0aGVudGljYXRpb25DaGFsbGVuZ2U6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdl
KFNvdXBTZXNzaW9uKiBzb3VwU2Vzc2lvbiwgU291cE1lc3NhZ2UqIHNvdXBNZXNzYWdlLCBTb3Vw
QXV0aCogc291cEF1dGgsIGJvb2wgcmV0cnlpbmcsIEF1dGhlbnRpY2F0aW9uQ2xpZW50KiBjbGll
bnQpCiAgICAgOiBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZUJhc2UocHJvdGVjdGlvblNwYWNlRnJv
bVNvdXBBdXRoQW5kTWVzc2FnZShzb3VwQXV0aCwgc291cE1lc3NhZ2UpLAogICAgICAgICBDcmVk
ZW50aWFsKCksIC8vIHByb3Bvc2VkQ3JlZGVudGlhbHMKLSAgICAgICAgcmV0cnlpbmcgPyAwIDog
MSwgLy8gcHJldmlvdXNGYWlsdXJlQ291bnQKKyAgICAgICAgcmV0cnlpbmcgPyAxIDogMCwgLy8g
cHJldmlvdXNGYWlsdXJlQ291bnQKICAgICAgICAgc291cE1lc3NhZ2UsIC8vIGZhaWx1cmVSZXNw
b25zZQogICAgICAgICBSZXNvdXJjZUVycm9yOjphdXRoZW50aWNhdGlvbkVycm9yKHNvdXBNZXNz
YWdlKSkKICAgICAsIG1fc291cFNlc3Npb24oc291cFNlc3Npb24pCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvUmVzb3VyY2VIYW5kbGVTb3VwLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9SZXNvdXJjZUhhbmRsZVNvdXAu
Y3BwCmluZGV4IGM1ODJmMDAuLjU1OWIyMjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvc291cC9SZXNvdXJjZUhhbmRsZVNvdXAuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9SZXNvdXJjZUhhbmRsZVNvdXAuY3BwCkBAIC04
NjAsNiArODYwLDUyIEBAIHZvaWQgUmVzb3VyY2VIYW5kbGU6OmRpZFJlY2VpdmVBdXRoZW50aWNh
dGlvbkNoYWxsZW5nZShjb25zdCBBdXRoZW50aWNhdGlvbkNoYWxsCiB2b2lkIFJlc291cmNlSGFu
ZGxlOjpyZWNlaXZlZFJlcXVlc3RUb0NvbnRpbnVlV2l0aG91dENyZWRlbnRpYWwoY29uc3QgQXV0
aGVudGljYXRpb25DaGFsbGVuZ2UmKQogewogfQorCisjZWxpZiBQTEFURk9STShFRkwpCit2b2lk
IFJlc291cmNlSGFuZGxlOjpkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoY29uc3Qg
QXV0aGVudGljYXRpb25DaGFsbGVuZ2UmIGNoYWxsZW5nZSkKK3sKKyAgICBBU1NFUlQoZC0+bV9j
dXJyZW50V2ViQ2hhbGxlbmdlLmlzTnVsbCgpKTsKKyAgICBkLT5tX2N1cnJlbnRXZWJDaGFsbGVu
Z2UgPSBjaGFsbGVuZ2U7CisKKyAgICBpZiAoY2xpZW50KCkpIHsKKyAgICAgICAgQVNTRVJUKGNo
YWxsZW5nZS5zb3VwU2Vzc2lvbigpKTsKKyAgICAgICAgQVNTRVJUKGNoYWxsZW5nZS5zb3VwTWVz
c2FnZSgpKTsKKyAgICAgICAgc291cF9zZXNzaW9uX3BhdXNlX21lc3NhZ2UoY2hhbGxlbmdlLnNv
dXBTZXNzaW9uKCksIGNoYWxsZW5nZS5zb3VwTWVzc2FnZSgpKTsKKyAgICAgICAgY2xpZW50KCkt
PmRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSh0aGlzLCBjaGFsbGVuZ2UpOworICAg
IH0KK30KKwordm9pZCBSZXNvdXJjZUhhbmRsZTo6cmVjZWl2ZWRSZXF1ZXN0VG9Db250aW51ZVdp
dGhvdXRDcmVkZW50aWFsKGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiBjaGFsbGVuZ2Up
Cit7CisgICAgQVNTRVJUKCFjaGFsbGVuZ2UuaXNOdWxsKCkpOworCisgICAgc291cF9zZXNzaW9u
X3VucGF1c2VfbWVzc2FnZShjaGFsbGVuZ2Uuc291cFNlc3Npb24oKSwgY2hhbGxlbmdlLnNvdXBN
ZXNzYWdlKCkpOworCisgICAgY2xlYXJBdXRoZW50aWNhdGlvbigpOworfQorCit2b2lkIFJlc291
cmNlSGFuZGxlOjpyZWNlaXZlZENyZWRlbnRpYWwoY29uc3QgQXV0aGVudGljYXRpb25DaGFsbGVu
Z2UmIGNoYWxsZW5nZSwgY29uc3QgQ3JlZGVudGlhbCYgY3JlZGVudGlhbCkKK3sKKyAgICBBU1NF
UlQoIWNoYWxsZW5nZS5pc051bGwoKSk7CisKKyAgICBBU1NFUlQoY2hhbGxlbmdlLnNvdXBTZXNz
aW9uKCkpOworICAgIEFTU0VSVChjaGFsbGVuZ2Uuc291cE1lc3NhZ2UoKSk7CisgICAgc291cF9h
dXRoX2F1dGhlbnRpY2F0ZShjaGFsbGVuZ2Uuc291cEF1dGgoKSwgY3JlZGVudGlhbC51c2VyKCku
dXRmOCgpLmRhdGEoKSwgY3JlZGVudGlhbC5wYXNzd29yZCgpLnV0ZjgoKS5kYXRhKCkpOworICAg
IHNvdXBfc2Vzc2lvbl91bnBhdXNlX21lc3NhZ2UoY2hhbGxlbmdlLnNvdXBTZXNzaW9uKCksIGNo
YWxsZW5nZS5zb3VwTWVzc2FnZSgpKTsKKworICAgIGNsZWFyQXV0aGVudGljYXRpb24oKTsKK30K
Kwordm9pZCBSZXNvdXJjZUhhbmRsZTo6cmVjZWl2ZWRDYW5jZWxsYXRpb24oY29uc3QgQXV0aGVu
dGljYXRpb25DaGFsbGVuZ2UmIGNoYWxsZW5nZSkKK3sKKyAgICBBU1NFUlQoIWNoYWxsZW5nZS5p
c051bGwoKSk7CisKKyAgICBBU1NFUlQoY2hhbGxlbmdlLnNvdXBTZXNzaW9uKCkpOworICAgIEFT
U0VSVChjaGFsbGVuZ2Uuc291cE1lc3NhZ2UoKSk7CisgICAgc291cF9zZXNzaW9uX3VucGF1c2Vf
bWVzc2FnZShjaGFsbGVuZ2Uuc291cFNlc3Npb24oKSwgY2hhbGxlbmdlLnNvdXBNZXNzYWdlKCkp
OworCisgICAgY2xlYXJBdXRoZW50aWNhdGlvbigpOworfQogI2VuZGlmCiAKIHN0YXRpYyBib29s
IHdhaXRpbmdUb1NlbmRSZXF1ZXN0KFJlc291cmNlSGFuZGxlKiBoYW5kbGUpCkBAIC0xMDE1LDcg
KzEwNjEsNyBAQCBzdGF0aWMgZ2Jvb2xlYW4gcmVxdWVzdFRpbWVvdXRDYWxsYmFjayhncG9pbnRl
ciBkYXRhKQogfQogCiAjaWYgUExBVEZPUk0oR1RLKQotc3RhdGljIHZvaWQgYXV0aGVuaWNhdGVD
YWxsYmFjayhTb3VwU2Vzc2lvbiogc2Vzc2lvbiwgU291cE1lc3NhZ2UqIHNvdXBNZXNzYWdlLCBT
b3VwQXV0aCogc291cEF1dGgsIGdib29sZWFuIHJldHJ5aW5nKQorc3RhdGljIHZvaWQgYXV0aGVu
dGljYXRlQ2FsbGJhY2soU291cFNlc3Npb24qIHNlc3Npb24sIFNvdXBNZXNzYWdlKiBzb3VwTWVz
c2FnZSwgU291cEF1dGgqIHNvdXBBdXRoLCBnYm9vbGVhbiByZXRyeWluZykKIHsKICAgICBSZWZQ
dHI8UmVzb3VyY2VIYW5kbGU+IGhhbmRsZSA9IHN0YXRpY19jYXN0PFJlc291cmNlSGFuZGxlKj4o
Z19vYmplY3RfZ2V0X2RhdGEoR19PQkpFQ1Qoc291cE1lc3NhZ2UpLCAiaGFuZGxlIikpOwogICAg
IGlmICghaGFuZGxlKQpAQCAtMTAyNSw2ICsxMDcxLDE2IEBAIHN0YXRpYyB2b2lkIGF1dGhlbmlj
YXRlQ2FsbGJhY2soU291cFNlc3Npb24qIHNlc3Npb24sIFNvdXBNZXNzYWdlKiBzb3VwTWVzc2Fn
ZSwKICAgICAvLyByZXNwb25kIHRvIHRoZSBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSAtLSBpbnN0
ZWFkIGRlYWxpbmcgd2l0aCB0aGUgU291cCBvYmplY3RzIGRpcmVjdGx5LgogICAgIGhhbmRsZS0+
ZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdl
KHNlc3Npb24sIHNvdXBNZXNzYWdlLCBzb3VwQXV0aCwgcmV0cnlpbmcsIDApKTsKIH0KKworI2Vs
aWYgUExBVEZPUk0oRUZMKQorc3RhdGljIHZvaWQgYXV0aGVudGljYXRlQ2FsbGJhY2soU291cFNl
c3Npb24qIHNlc3Npb24sIFNvdXBNZXNzYWdlKiBzb3VwTWVzc2FnZSwgU291cEF1dGgqIHNvdXBB
dXRoLCBnYm9vbGVhbiByZXRyeWluZykKK3sKKyAgICBSZWZQdHI8UmVzb3VyY2VIYW5kbGU+IGhh
bmRsZSA9IHN0YXRpY19jYXN0PFJlc291cmNlSGFuZGxlKj4oZ19vYmplY3RfZ2V0X2RhdGEoR19P
QkpFQ1Qoc291cE1lc3NhZ2UpLCAiaGFuZGxlIikpOworICAgIGlmICghaGFuZGxlKQorICAgICAg
ICByZXR1cm47CisKKyAgICBoYW5kbGUtPmRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5n
ZShBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShzZXNzaW9uLCBzb3VwTWVzc2FnZSwgc291cEF1dGgs
IHJldHJ5aW5nLCBoYW5kbGUuZ2V0KCkpKTsKK30KICNlbmRpZgogCiBTb3VwU2Vzc2lvbiogUmVz
b3VyY2VIYW5kbGU6OmRlZmF1bHRTZXNzaW9uKCkKQEAgLTEwNDcsOCArMTEwMyw4IEBAIFNvdXBT
ZXNzaW9uKiBSZXNvdXJjZUhhbmRsZTo6ZGVmYXVsdFNlc3Npb24oKQogICAgICAgICAgICAgICAg
ICAgICAgU09VUF9TRVNTSU9OX0FERF9GRUFUVVJFX0JZX1RZUEUsIFNPVVBfVFlQRV9QUk9YWV9S
RVNPTFZFUl9ERUZBVUxULAogICAgICAgICAgICAgICAgICAgICAgU09VUF9TRVNTSU9OX1VTRV9U
SFJFQURfQ09OVEVYVCwgVFJVRSwKICAgICAgICAgICAgICAgICAgICAgIE5VTEwpOwotI2lmIFBM
QVRGT1JNKEdUSykKLSAgICAgICAgZ19zaWduYWxfY29ubmVjdChzZXNzaW9uLCAiYXV0aGVudGlj
YXRlIiwgR19DQUxMQkFDSyhhdXRoZW5pY2F0ZUNhbGxiYWNrKSwgMCk7CisjaWYgUExBVEZPUk0o
R1RLKSB8fCBQTEFURk9STShFRkwpCisgICAgICAgIGdfc2lnbmFsX2Nvbm5lY3Qoc2Vzc2lvbiwg
ImF1dGhlbnRpY2F0ZSIsIEdfQ0FMTEJBQ0soYXV0aGVudGljYXRlQ2FsbGJhY2spLCAwKTsKICNl
bmRpZgogCiAjaWYgRU5BQkxFKFdFQl9USU1JTkcpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggMTdhNjg3Yi4uYWY5
YTAxNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUyIEBACisyMDEyLTExLTAxICBDaHJpc3RvcGhl
IER1bWV6ICA8Y2hyaXN0b3BoZS5kdW1lekBpbnRlbC5jb20+CisKKyAgICAgICAgW0VGTF1bV0sy
XSBBZGQgRXdrX0F1dGhfUmVxdWVzdCBBUEkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTEwMDg1OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIEFkZCBFd2tfQXV0aF9SZXF1ZXN0IEFQSSBmb3IgdGhlIGNsaWVu
dCB0byBoYW5kbGUKKyAgICAgICAgSFRUUCBhdXRoZW50aWNhdGlvbi4KKworICAgICAgICAqIFBs
YXRmb3JtRWZsLmNtYWtlOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZWZsL0VXZWJLaXQyLmg6
CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9lZmwvRXdrVmlld0NhbGxiYWNrcy5oOgorICAgICAg
ICAoRXdrVmlld0NhbGxiYWNrcyk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2F1
dGhfcmVxdWVzdC5jcHA6IEFkZGVkLgorICAgICAgICAoRXdrX0F1dGhfUmVxdWVzdDo6RXdrX0F1
dGhfUmVxdWVzdCk6CisgICAgICAgIChFd2tfQXV0aF9SZXF1ZXN0Ojp+RXdrX0F1dGhfUmVxdWVz
dCk6CisgICAgICAgIChFd2tfQXV0aF9SZXF1ZXN0OjpzdWdnZXN0ZWRVc2VybmFtZSk6CisgICAg
ICAgIChFd2tfQXV0aF9SZXF1ZXN0OjpyZWFsbSk6CisgICAgICAgIChFd2tfQXV0aF9SZXF1ZXN0
Ojpob3N0KToKKyAgICAgICAgKEV3a19BdXRoX1JlcXVlc3Q6OmNhbmNlbCk6CisgICAgICAgIChF
d2tfQXV0aF9SZXF1ZXN0OjphdXRoZW50aWNhdGUpOgorICAgICAgICAoRXdrX0F1dGhfUmVxdWVz
dDo6aXNSZXRyeWluZyk6CisgICAgICAgIChld2tfYXV0aF9yZXF1ZXN0X3JlZik6CisgICAgICAg
IChld2tfYXV0aF9yZXF1ZXN0X3VucmVmKToKKyAgICAgICAgKGV3a19hdXRoX3JlcXVlc3Rfc3Vn
Z2VzdGVkX3VzZXJuYW1lX2dldCk6CisgICAgICAgIChld2tfYXV0aF9yZXF1ZXN0X2NhbmNlbCk6
CisgICAgICAgIChld2tfYXV0aF9yZXF1ZXN0X2F1dGhlbnRpY2F0ZSk6CisgICAgICAgIChld2tf
YXV0aF9yZXF1ZXN0X3JldHJ5aW5nX2dldCk6CisgICAgICAgIChld2tfYXV0aF9yZXF1ZXN0X3Jl
YWxtX2dldCk6CisgICAgICAgIChld2tfYXV0aF9yZXF1ZXN0X2hvc3RfZ2V0KToKKyAgICAgICAg
KiBVSVByb2Nlc3MvQVBJL2VmbC9ld2tfYXV0aF9yZXF1ZXN0Lmg6IEFkZGVkLgorICAgICAgICAq
IFVJUHJvY2Vzcy9BUEkvZWZsL2V3a19hdXRoX3JlcXVlc3RfcHJpdmF0ZS5oOiBBZGRlZC4KKyAg
ICAgICAgKFdlYktpdCk6CisgICAgICAgIChFd2tfQXV0aF9SZXF1ZXN0KToKKyAgICAgICAgKEV3
a19BdXRoX1JlcXVlc3Q6OmNyZWF0ZSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9lZmwvZXdr
X3ZpZXcuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC90ZXN0cy90ZXN0X2V3azJfYXV0
aF9yZXF1ZXN0LmNwcDogQWRkZWQgY29ycmVzcG9uZGluZyBBUEkgdGVzdHMuCisgICAgICAgIChz
ZXJ2ZXJDYWxsYmFjayk6CisgICAgICAgIChvbkF1dGhlbnRpY2F0aW9uUmVxdWVzdCk6CisgICAg
ICAgIChURVNUX0YpOgorICAgICAgICAob25SZXNvdXJjZUxvYWRSZXNwb25zZSk6CisgICAgICAg
ICogVUlQcm9jZXNzL2VmbC9QYWdlTG9hZENsaWVudEVmbC5jcHA6CisgICAgICAgIChXZWJLaXQ6
OlBhZ2VMb2FkQ2xpZW50RWZsOjpkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2VJbkZy
YW1lKToKKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChXZWJLaXQ6OlBhZ2VMb2FkQ2xpZW50
RWZsOjpQYWdlTG9hZENsaWVudEVmbCk6CisgICAgICAgICogVUlQcm9jZXNzL2VmbC9QYWdlTG9h
ZENsaWVudEVmbC5oOgorICAgICAgICAoUGFnZUxvYWRDbGllbnRFZmwpOgorCiAyMDEyLTExLTAx
ICBZdW5pIEplb25nICA8eWhuZXQuanVuZ0BzYW1zdW5nLmNvbT4KIAogICAgICAgICBbV0syXSBB
ZGQgQVBJcyB0byBnZXQvc2V0IGVuY29kaW5nIGRldGVjdG9yCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9QbGF0Zm9ybUVmbC5jbWFrZSBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtRWZsLmNt
YWtlCmluZGV4IGYzMjcxMGMuLmYxYWU4NTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1Bs
YXRmb3JtRWZsLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtRWZsLmNtYWtlCkBA
IC00NCw2ICs0NCw3IEBAIExJU1QoQVBQRU5EIFdlYktpdDJfU09VUkNFUwogICAgIFVJUHJvY2Vz
cy9BUEkvZWZsL0V3a1ZpZXdJbXBsLmNwcAogICAgIFVJUHJvY2Vzcy9BUEkvZWZsL0V2YXNHTENv
bnRleHQuY3BwCiAgICAgVUlQcm9jZXNzL0FQSS9lZmwvRXZhc0dMU3VyZmFjZS5jcHAKKyAgICBV
SVByb2Nlc3MvQVBJL2VmbC9ld2tfYXV0aF9yZXF1ZXN0LmNwcAogICAgIFVJUHJvY2Vzcy9BUEkv
ZWZsL2V3a19iYWNrX2ZvcndhcmRfbGlzdC5jcHAKICAgICBVSVByb2Nlc3MvQVBJL2VmbC9ld2tf
YmFja19mb3J3YXJkX2xpc3RfaXRlbS5jcHAKICAgICBVSVByb2Nlc3MvQVBJL2VmbC9ld2tfY29s
b3JfcGlja2VyLmNwcApAQCAtMjQ0LDYgKzI0NSw3IEBAIFNFVChGb3J3YXJkaW5nTmV0d29ya0hl
YWRlcnNfTkFNRSBmb3J3YXJkaW5nLWhlYWRlclNvdXApCiBDT05GSUdVUkVfRklMRShlZmwvZXdl
YmtpdDIucGMuaW4gJHtDTUFLRV9CSU5BUllfRElSfS9XZWJLaXQyL2VmbC9ld2Via2l0Mi5wYyBA
T05MWSkKIFNFVCAoRVdlYktpdDJfSEVBREVSUwogICAgICIke0NNQUtFX0NVUlJFTlRfU09VUkNF
X0RJUn0vVUlQcm9jZXNzL0FQSS9lZmwvRVdlYktpdDIuaCIKKyAgICAiJHtDTUFLRV9DVVJSRU5U
X1NPVVJDRV9ESVJ9L1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19hdXRoX3JlcXVlc3QuaCIKICAgICAi
JHtDTUFLRV9DVVJSRU5UX1NPVVJDRV9ESVJ9L1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19iYWNrX2Zv
cndhcmRfbGlzdC5oIgogICAgICIke0NNQUtFX0NVUlJFTlRfU09VUkNFX0RJUn0vVUlQcm9jZXNz
L0FQSS9lZmwvZXdrX2JhY2tfZm9yd2FyZF9saXN0X2l0ZW0uaCIKICAgICAiJHtDTUFLRV9DVVJS
RU5UX1NPVVJDRV9ESVJ9L1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19jb2xvcl9waWNrZXIuaCIKQEAg
LTM0OSw2ICszNTEsNyBAQCBUQVJHRVRfTElOS19MSUJSQVJJRVMoZXdrMlVuaXRUZXN0VXRpbHMg
JHtFV0syVW5pdFRlc3RzX0xJQlJBUklFU30pCiAjIFRoZSAiZXdrIiBvbiB0aGUgdGVzdCBuYW1l
IG5lZWRzIHRvIGJlIHN1ZmZpeGVkIHdpdGggIjIiLCBvdGhlcndpc2UgaXQKICMgd2lsbCBjbGFz
aCB3aXRoIHRlc3RzIGZyb20gdGhlIFdlYktpdCAxIHRlc3Qgc3VpdGUuCiBTRVQoRVdLMlVuaXRU
ZXN0c19CSU5BUklFUworICAgIHRlc3RfZXdrMl9hdXRoX3JlcXVlc3QKICAgICB0ZXN0X2V3azJf
YmFja19mb3J3YXJkX2xpc3QKICAgICB0ZXN0X2V3azJfY29sb3JfcGlja2VyCiAgICAgdGVzdF9l
d2syX2NvbnRleHQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZs
L0VXZWJLaXQyLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9FV2ViS2l0Mi5o
CmluZGV4IGZjN2JhYzEuLjNmNzZjZjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvZWZsL0VXZWJLaXQyLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9lZmwvRVdlYktpdDIuaApAQCAtMjgsNiArMjgsNyBAQAogI2lmbmRlZiBFV2ViS2l0Ml9oCiAj
ZGVmaW5lIEVXZWJLaXQyX2gKIAorI2luY2x1ZGUgImV3a19hdXRoX3JlcXVlc3QuaCIKICNpbmNs
dWRlICJld2tfYmFja19mb3J3YXJkX2xpc3QuaCIKICNpbmNsdWRlICJld2tfYmFja19mb3J3YXJk
X2xpc3RfaXRlbS5oIgogI2luY2x1ZGUgImV3a19jb2xvcl9waWNrZXIuaCIKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL0V3a1ZpZXdDYWxsYmFja3MuaCBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL0V3a1ZpZXdDYWxsYmFja3MuaAppbmRleCA1
NmQzNTdmYS4uNzBiMjdjNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9lZmwvRXdrVmlld0NhbGxiYWNrcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvZWZsL0V3a1ZpZXdDYWxsYmFja3MuaApAQCAtMzEsNiArMzEsNyBAQAogI2luY2x1ZGUgPHd0
Zi90ZXh0L0NTdHJpbmcuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAorc3Ry
dWN0IEV3a19BdXRoX1JlcXVlc3Q7CiBzdHJ1Y3QgRXdrX0Rvd25sb2FkX0pvYjsKIHN0cnVjdCBF
d2tfRG93bmxvYWRfSm9iX0Vycm9yOwogc3RydWN0IEV3a19GaWxlX0Nob29zZXJfUmVxdWVzdDsK
QEAgLTUxLDYgKzUyLDcgQEAgc3RydWN0IEV3a19JbnRlbnRfU2VydmljZTsKIG5hbWVzcGFjZSBF
d2tWaWV3Q2FsbGJhY2tzIHsKIAogZW51bSBDYWxsYmFja1R5cGUgeworICAgIEF1dGhlbnRpY2F0
aW9uUmVxdWVzdCwKICAgICBCYWNrRm9yd2FyZExpc3RDaGFuZ2UsCiAgICAgRG93bmxvYWRKb2JD
YW5jZWxsZWQsCiAgICAgRG93bmxvYWRKb2JGYWlsZWQsCkBAIC0xNDYsNiArMTQ4LDcgQEAgc3Ry
dWN0IENhbGxCYWNrSW5mbzxjYWxsYmFja1R5cGU+IHsgICAgICAgICAgICAgICAgICAgICAgICAg
ICBcCiB9CiAKIC8vIE5vdGU6IHR5cGUgJ3ZvaWQnIG1lYW5zIHRoYXQgbm8gYXJndW1lbnRzIGFy
ZSBleHBlY3RlZC4KK0RFQ0xBUkVfRVdLX1ZJRVdfQ0FMTEJBQ0soQXV0aGVudGljYXRpb25SZXF1
ZXN0LCAiYXV0aGVudGljYXRpb24scmVxdWVzdCIsIEV3a19BdXRoX1JlcXVlc3QpOwogREVDTEFS
RV9FV0tfVklFV19DQUxMQkFDSyhCYWNrRm9yd2FyZExpc3RDaGFuZ2UsICJiYWNrLGZvcndhcmQs
bGlzdCxjaGFuZ2VkIiwgdm9pZCk7CiBERUNMQVJFX0VXS19WSUVXX0NBTExCQUNLKERvd25sb2Fk
Sm9iQ2FuY2VsbGVkLCAiZG93bmxvYWQsY2FuY2VsbGVkIiwgRXdrX0Rvd25sb2FkX0pvYik7CiBE
RUNMQVJFX0VXS19WSUVXX0NBTExCQUNLKERvd25sb2FkSm9iRmFpbGVkLCAiZG93bmxvYWQsZmFp
bGVkIiwgRXdrX0Rvd25sb2FkX0pvYl9FcnJvcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfYXV0aF9yZXF1ZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19hdXRoX3JlcXVlc3QuY3BwCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAuLmNhOTllMmEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfYXV0aF9yZXF1ZXN0LmNwcApAQCAtMCwwICsxLDE4
NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBJbnRlbCBDb3Jwb3JhdGlvbi4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUg
ImV3a19hdXRoX3JlcXVlc3QuaCIKKworI2luY2x1ZGUgIkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdl
UHJveHkuaCIKKyNpbmNsdWRlICJBdXRoZW50aWNhdGlvbkRlY2lzaW9uTGlzdGVuZXIuaCIKKyNp
bmNsdWRlICJXZWJDcmVkZW50aWFsLmgiCisjaW5jbHVkZSAiV2ViUHJvdGVjdGlvblNwYWNlLmgi
CisjaW5jbHVkZSAiV2ViU3RyaW5nLmgiCisjaW5jbHVkZSAiZXdrX2F1dGhfcmVxdWVzdF9wcml2
YXRlLmgiCisjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgorCit1c2luZyBuYW1lc3BhY2Ug
V2ViS2l0OwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKK0V3a19BdXRoX1JlcXVlc3Q6OkV3
a19BdXRoX1JlcXVlc3QoQXV0aGVudGljYXRpb25DaGFsbGVuZ2VQcm94eSogYXV0aGVudGljYXRp
b25DaGFsbGVuZ2UpCisgICAgOiBtX2F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKGF1dGhlbnRpY2F0
aW9uQ2hhbGxlbmdlKQorICAgICwgbV93YXNIYW5kbGVkKGZhbHNlKQoreworICAgIEFTU0VSVCht
X2F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKTsKK30KKworRXdrX0F1dGhfUmVxdWVzdDo6fkV3a19B
dXRoX1JlcXVlc3QoKQoreworICAgIGlmICghbV93YXNIYW5kbGVkKQorICAgICAgICBjYW5jZWwo
KTsKK30KKworY29uc3QgY2hhciogRXdrX0F1dGhfUmVxdWVzdDo6c3VnZ2VzdGVkVXNlcm5hbWUo
KSBjb25zdAoreworICAgIGlmICghbV9zdWdnZXN0ZWRVc2VybmFtZSkgeworICAgICAgICBXZWJD
cmVkZW50aWFsKiBjcmVkZW50aWFsID0gbV9hdXRoZW50aWNhdGlvbkNoYWxsZW5nZS0+cHJvcG9z
ZWRDcmVkZW50aWFsKCk7CisgICAgICAgIEFTU0VSVChjcmVkZW50aWFsKTsKKworICAgICAgICBj
b25zdCBTdHJpbmcmIHN1Z2dlc3RlZFVzZXJuYW1lID0gY3JlZGVudGlhbC0+dXNlcigpOworICAg
ICAgICBpZiAoc3VnZ2VzdGVkVXNlcm5hbWUuaXNFbXB0eSgpKQorICAgICAgICAgICAgcmV0dXJu
IDA7CisKKyAgICAgICAgbV9zdWdnZXN0ZWRVc2VybmFtZSA9IHN1Z2dlc3RlZFVzZXJuYW1lLnV0
ZjgoKS5kYXRhKCk7CisgICAgfQorCisgICAgcmV0dXJuIG1fc3VnZ2VzdGVkVXNlcm5hbWU7Cit9
CisKK2NvbnN0IGNoYXIqIEV3a19BdXRoX1JlcXVlc3Q6OnJlYWxtKCkgY29uc3QKK3sKKyAgICBp
ZiAoIW1fcmVhbG0pIHsKKyAgICAgICAgV2ViUHJvdGVjdGlvblNwYWNlKiBwcm90ZWN0aW9uU3Bh
Y2UgPSBtX2F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLT5wcm90ZWN0aW9uU3BhY2UoKTsKKyAgICAg
ICAgQVNTRVJUKHByb3RlY3Rpb25TcGFjZSk7CisKKyAgICAgICAgY29uc3QgU3RyaW5nJiByZWFs
bSA9IHByb3RlY3Rpb25TcGFjZS0+cmVhbG0oKTsKKyAgICAgICAgaWYgKHJlYWxtLmlzRW1wdHko
KSkKKyAgICAgICAgICAgIHJldHVybiAwOworCisgICAgICAgIG1fcmVhbG0gPSByZWFsbS51dGY4
KCkuZGF0YSgpOworICAgIH0KKworICAgIHJldHVybiBtX3JlYWxtOworfQorCitjb25zdCBjaGFy
KiBFd2tfQXV0aF9SZXF1ZXN0Ojpob3N0KCkgY29uc3QKK3sKKyAgICBpZiAoIW1faG9zdCkgewor
ICAgICAgICBXZWJQcm90ZWN0aW9uU3BhY2UqIHByb3RlY3Rpb25TcGFjZSA9IG1fYXV0aGVudGlj
YXRpb25DaGFsbGVuZ2UtPnByb3RlY3Rpb25TcGFjZSgpOworICAgICAgICBBU1NFUlQocHJvdGVj
dGlvblNwYWNlKTsKKworICAgICAgICBjb25zdCBTdHJpbmcmIGhvc3QgPSBwcm90ZWN0aW9uU3Bh
Y2UtPmhvc3QoKTsKKyAgICAgICAgaWYgKGhvc3QuaXNFbXB0eSgpKQorICAgICAgICAgICAgcmV0
dXJuIDA7CisKKyAgICAgICAgbV9ob3N0ID0gaG9zdC51dGY4KCkuZGF0YSgpOworICAgIH0KKwor
ICAgIHJldHVybiBtX2hvc3Q7Cit9CisKK2Jvb2wgRXdrX0F1dGhfUmVxdWVzdDo6Y2FuY2VsKCkK
K3sKKyAgICBpZiAobV93YXNIYW5kbGVkKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBt
X3dhc0hhbmRsZWQgPSB0cnVlOworICAgIG1fYXV0aGVudGljYXRpb25DaGFsbGVuZ2UtPmNhbmNl
bCgpOworCisgICAgcmV0dXJuIHRydWU7Cit9CisKK2Jvb2wgRXdrX0F1dGhfUmVxdWVzdDo6YXV0
aGVudGljYXRlKGNvbnN0IFN0cmluZyYgdXNlcm5hbWUsIGNvbnN0IFN0cmluZyYgcGFzc3dvcmQp
Cit7CisgICAgaWYgKG1fd2FzSGFuZGxlZCkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAg
bV93YXNIYW5kbGVkID0gdHJ1ZTsKKyAgICBSZWZQdHI8V2ViQ3JlZGVudGlhbD4gY3JlZGVudGlh
bCA9IFdlYkNyZWRlbnRpYWw6OmNyZWF0ZShXZWJTdHJpbmc6OmNyZWF0ZSh1c2VybmFtZSkuZ2V0
KCksIFdlYlN0cmluZzo6Y3JlYXRlKHBhc3N3b3JkKS5nZXQoKSwgQ3JlZGVudGlhbFBlcnNpc3Rl
bmNlRm9yU2Vzc2lvbik7CisgICAgbV9hdXRoZW50aWNhdGlvbkNoYWxsZW5nZS0+dXNlQ3JlZGVu
dGlhbChjcmVkZW50aWFsLmdldCgpKTsKKworICAgIHJldHVybiB0cnVlOworfQorCitib29sIEV3
a19BdXRoX1JlcXVlc3Q6OmlzUmV0cnlpbmcoKSBjb25zdAoreworICAgIHJldHVybiBtX2F1dGhl
bnRpY2F0aW9uQ2hhbGxlbmdlLT5wcmV2aW91c0ZhaWx1cmVDb3VudCgpID4gMDsKK30KKworRXdr
X0F1dGhfUmVxdWVzdCogZXdrX2F1dGhfcmVxdWVzdF9yZWYoRXdrX0F1dGhfUmVxdWVzdCogcmVx
dWVzdCkKK3sKKyAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwocmVxdWVzdCwgMCk7
CisKKyAgICByZXF1ZXN0LT5yZWYoKTsKKworICAgIHJldHVybiByZXF1ZXN0OworfQorCit2b2lk
IGV3a19hdXRoX3JlcXVlc3RfdW5yZWYoRXdrX0F1dGhfUmVxdWVzdCogcmVxdWVzdCkKK3sKKyAg
ICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTihyZXF1ZXN0KTsKKworICAgIHJlcXVlc3QtPmRl
cmVmKCk7Cit9CisKK2NvbnN0IGNoYXIqIGV3a19hdXRoX3JlcXVlc3Rfc3VnZ2VzdGVkX3VzZXJu
YW1lX2dldChjb25zdCBFd2tfQXV0aF9SZXF1ZXN0KiByZXF1ZXN0KQoreworICAgIEVJTkFfU0FG
RVRZX09OX05VTExfUkVUVVJOX1ZBTChyZXF1ZXN0LCAwKTsKKworICAgIHJldHVybiByZXF1ZXN0
LT5zdWdnZXN0ZWRVc2VybmFtZSgpOworfQorCitFaW5hX0Jvb2wgZXdrX2F1dGhfcmVxdWVzdF9j
YW5jZWwoRXdrX0F1dGhfUmVxdWVzdCogcmVxdWVzdCkKK3sKKyAgICBFSU5BX1NBRkVUWV9PTl9O
VUxMX1JFVFVSTl9WQUwocmVxdWVzdCwgZmFsc2UpOworCisgICAgcmV0dXJuIHJlcXVlc3QtPmNh
bmNlbCgpOworfQorCitFaW5hX0Jvb2wgZXdrX2F1dGhfcmVxdWVzdF9hdXRoZW50aWNhdGUoRXdr
X0F1dGhfUmVxdWVzdCogcmVxdWVzdCwgY29uc3QgY2hhciogdXNlcm5hbWUsIGNvbnN0IGNoYXIq
IHBhc3N3b3JkKQoreworICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChyZXF1ZXN0
LCBmYWxzZSk7CisgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKHVzZXJuYW1lLCBm
YWxzZSk7CisgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKHBhc3N3b3JkLCBmYWxz
ZSk7CisKKyAgICByZXR1cm4gcmVxdWVzdC0+YXV0aGVudGljYXRlKFN0cmluZzo6ZnJvbVVURjgo
dXNlcm5hbWUpLCBTdHJpbmc6OmZyb21VVEY4KHBhc3N3b3JkKSk7Cit9CisKK0VpbmFfQm9vbCBl
d2tfYXV0aF9yZXF1ZXN0X3JldHJ5aW5nX2dldChjb25zdCBFd2tfQXV0aF9SZXF1ZXN0KiByZXF1
ZXN0KQoreworICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChyZXF1ZXN0LCBmYWxz
ZSk7CisKKyAgICByZXR1cm4gcmVxdWVzdC0+aXNSZXRyeWluZygpOworfQorCitjb25zdCBjaGFy
KiBld2tfYXV0aF9yZXF1ZXN0X3JlYWxtX2dldChjb25zdCBFd2tfQXV0aF9SZXF1ZXN0KiByZXF1
ZXN0KQoreworICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChyZXF1ZXN0LCAwKTsK
KworICAgIHJldHVybiByZXF1ZXN0LT5yZWFsbSgpOworfQorCitjb25zdCBjaGFyKiBld2tfYXV0
aF9yZXF1ZXN0X2hvc3RfZ2V0KGNvbnN0IEV3a19BdXRoX1JlcXVlc3QqIHJlcXVlc3QpCit7Cisg
ICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKHJlcXVlc3QsIDApOworCisgICAgcmV0
dXJuIHJlcXVlc3QtPmhvc3QoKTsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvZWZsL2V3a19hdXRoX3JlcXVlc3QuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvZWZsL2V3a19hdXRoX3JlcXVlc3QuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwLi5lYjkwODY0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9lZmwvZXdrX2F1dGhfcmVxdWVzdC5oCkBAIC0wLDAgKzEsMTMyIEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDEyIEludGVsIENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisvKioKKyAqIEBmaWxlICAgIGV3a19hdXRoX3JlcXVlc3QuaAorICogQGJy
aWVmICAgRGVzY3JpYmVzIHRoZSBFd2sgQXV0aGVudGljYXRpb24gUmVxdWVzdCBBUEkuCisgKi8K
KworI2lmbmRlZiBld2tfYXV0aF9yZXF1ZXN0X2gKKyNkZWZpbmUgZXdrX2F1dGhfcmVxdWVzdF9o
CisKKyNpbmNsdWRlIDxFaW5hLmg+CisKKyNpZmRlZiBfX2NwbHVzcGx1cworZXh0ZXJuICJDIiB7
CisjZW5kaWYKKworLyoqIENyZWF0ZXMgYSB0eXBlIG5hbWUgZm9yIEV3a19BdXRoX1JlcXVlc3Qg
Ki8KK3R5cGVkZWYgc3RydWN0IEV3a19BdXRoX1JlcXVlc3QgRXdrX0F1dGhfUmVxdWVzdDsKKwor
LyoqCisgKiBJbmNyZWFzZXMgdGhlIHJlZmVyZW5jZSBjb3VudCBvZiB0aGUgZ2l2ZW4gb2JqZWN0
LgorICoKKyAqIEBwYXJhbSByZXF1ZXN0IHRoZSByZXF1ZXN0IG9iamVjdCB0byBpbmNyZWFzZSB0
aGUgcmVmZXJlbmNlIGNvdW50CisgKgorICogQHJldHVybiBhIHBvaW50ZXIgdG8gdGhlIG9iamVj
dCBvbiBzdWNjZXNzLCBAYyBOVUxMIG90aGVyd2lzZQorICovCitFQVBJIEV3a19BdXRoX1JlcXVl
c3QgKmV3a19hdXRoX3JlcXVlc3RfcmVmKEV3a19BdXRoX1JlcXVlc3QgKnJlcXVlc3QpOworCisv
KioKKyAqIERlY3JlYXNlcyB0aGUgcmVmZXJlbmNlIGNvdW50IG9mIHRoZSBnaXZlbiBvYmplY3Qs
IHBvc3NpYmx5IGZyZWVpbmcgaXQuCisgKgorICogV2hlbiB0aGUgcmVmZXJlbmNlIGNvdW50IHJl
YWNoZXMgMCwgdGhlIHJlcXVlc3QgaXMgZnJlZWQKKyAqCisgKiBAcGFyYW0gcmVxdWVzdCB0aGUg
cmVxdWVzdCBvYmplY3QgdG8gZGVjcmVhc2UgdGhlIHJlZmVyZW5jZSBjb3VudAorICovCitFQVBJ
IHZvaWQgZXdrX2F1dGhfcmVxdWVzdF91bnJlZihFd2tfQXV0aF9SZXF1ZXN0ICpyZXF1ZXN0KTsK
KworLyoqCisgKiBRdWVyaWVzIHRoZSBzdWdnZXN0ZWQgdXNlcm5hbWUgdG8gYmUgdXNlZCBmb3Ig
YXV0aGVudGljYXRpbmcuCisgKgorICogQHBhcmFtIHJlcXVlc3QgcmVxdWVzdCBvYmplY3QgdG8g
cXVlcnkKKyAqCisgKiBAcmV0dXJuIHRoZSB1c2VybmFtZSBwb2ludGVyLCB0aGF0IG1heSBiZSBA
YyBOVUxMLiBUaGlzIHBvaW50ZXIgaXMKKyAqICAgICAgICAgZ3VhcmFudGVlZCB0byBiZSBlaW5h
X3N0cmluZ3NoYXJlLCBzbyB3aGVuZXZlciBwb3NzaWJsZQorICogICAgICAgICBzYXZlIHlvdXJz
ZWxmIHNvbWUgY3B1IGN5Y2xlcyBhbmQgdXNlCisgKiAgICAgICAgIGVpbmFfc3RyaW5nc2hhcmVf
cmVmKCkgaW5zdGVhZCBvZiBlaW5hX3N0cmluZ3NoYXJlX2FkZCgpIG9yCisgKiAgICAgICAgIHN0
cmR1cCgpCisgKi8KK0VBUEkgY29uc3QgY2hhciAqZXdrX2F1dGhfcmVxdWVzdF9zdWdnZXN0ZWRf
dXNlcm5hbWVfZ2V0KGNvbnN0IEV3a19BdXRoX1JlcXVlc3QgKnJlcXVlc3QpOworCisvKioKKyAq
IFF1ZXJpZXMgaWYgdGhpcyBhbiBhdXRoZW50aWNhdGlvbiBhdHRlbXB0IHJldHJ5aW5nLgorICoK
KyAqIEBwYXJhbSByZXF1ZXN0IHJlcXVlc3Qgb2JqZWN0IHRvIHF1ZXJ5CisgKgorICogQHJldHVy
biBAYyBFSU5BX1RSVUUgaWYgdGhpcyBpcyBub3QgdGhlIGZpcnN0IGF1dGhlbnRpY2F0aW9uIGF0
dGVtcHQKKyAqICAgICAgICAgYW5kIHdlIGFyZSB0cnlpbmcsIEBjIEVJTkFfRkFMU0Ugb3RoZXJ3
aXNlLgorICovCitFQVBJIEVpbmFfQm9vbCBld2tfYXV0aF9yZXF1ZXN0X3JldHJ5aW5nX2dldChj
b25zdCBFd2tfQXV0aF9SZXF1ZXN0ICpyZXF1ZXN0KTsKKworLyoqCisgKiBRdWVyaWVzIHRoZSBh
dXRoZW50aWNhdGlvbiByZWFsbS4KKyAqCisgKiBAcGFyYW0gcmVxdWVzdCByZXF1ZXN0IG9iamVj
dCB0byBxdWVyeQorICoKKyAqIEByZXR1cm4gdGhlIHJlYWxtIHBvaW50ZXIsIHRoYXQgbWF5IGJl
IEBjIE5VTEwuIFRoaXMgcG9pbnRlciBpcworICogICAgICAgICBndWFyYW50ZWVkIHRvIGJlIGVp
bmFfc3RyaW5nc2hhcmUsIHNvIHdoZW5ldmVyIHBvc3NpYmxlCisgKiAgICAgICAgIHNhdmUgeW91
cnNlbGYgc29tZSBjcHUgY3ljbGVzIGFuZCB1c2UKKyAqICAgICAgICAgZWluYV9zdHJpbmdzaGFy
ZV9yZWYoKSBpbnN0ZWFkIG9mIGVpbmFfc3RyaW5nc2hhcmVfYWRkKCkgb3IKKyAqICAgICAgICAg
c3RyZHVwKCkKKyAqLworRUFQSSBjb25zdCBjaGFyICpld2tfYXV0aF9yZXF1ZXN0X3JlYWxtX2dl
dChjb25zdCBFd2tfQXV0aF9SZXF1ZXN0ICpyZXF1ZXN0KTsKKworLyoqCisgKiBRdWVyaWVzIHRo
ZSBob3N0IHJlcXVpcmluZyB0aGUgYXV0aGVudGljYXRpb24uCisgKgorICogQHBhcmFtIHJlcXVl
c3QgcmVxdWVzdCBvYmplY3QgdG8gcXVlcnkKKyAqCisgKiBAcmV0dXJuIHRoZSBob3N0IHBvaW50
ZXIsIHRoYXQgbWF5IGJlIEBjIE5VTEwuIFRoaXMgcG9pbnRlciBpcworICogICAgICAgICBndWFy
YW50ZWVkIHRvIGJlIGVpbmFfc3RyaW5nc2hhcmUsIHNvIHdoZW5ldmVyIHBvc3NpYmxlCisgKiAg
ICAgICAgIHNhdmUgeW91cnNlbGYgc29tZSBjcHUgY3ljbGVzIGFuZCB1c2UKKyAqICAgICAgICAg
ZWluYV9zdHJpbmdzaGFyZV9yZWYoKSBpbnN0ZWFkIG9mIGVpbmFfc3RyaW5nc2hhcmVfYWRkKCkg
b3IKKyAqICAgICAgICAgc3RyZHVwKCkKKyAqLworRUFQSSBjb25zdCBjaGFyICpld2tfYXV0aF9y
ZXF1ZXN0X2hvc3RfZ2V0KGNvbnN0IEV3a19BdXRoX1JlcXVlc3QgKnJlcXVlc3QpOworCisvKioK
KyAqIENhbmNlbHMgdGhlIGF1dGhlbnRpY2F0aW9uIHJlcXVlc3QuCisgKgorICogQHBhcmFtIHJl
cXVlc3QgcmVxdWVzdCBvYmplY3QgdG8gY2FuY2VsCisgKgorICogQHJldHVybiBAYyBFSU5BX1RS
VUUgaWYgc3VjY2Vzc2Z1bCwgQGMgRUlOQV9GQUxTRSBvdGhlcndpc2UKKyAqLworRUFQSSBFaW5h
X0Jvb2wgZXdrX2F1dGhfcmVxdWVzdF9jYW5jZWwoRXdrX0F1dGhfUmVxdWVzdCAqcmVxdWVzdCk7
CisKKy8qKgorICogU2V0IGNyZWRlbnRpYWwgZm9yIHRoZSBhdXRoZW50aWNhdGlvbiByZXF1ZXN0
LgorICoKKyAqIEBwYXJhbSByZXF1ZXN0IHJlcXVlc3Qgb2JqZWN0IHRvIHVwZGF0ZQorICoKKyAq
IEByZXR1cm4gQGMgRUlOQV9UUlVFIGlmIHRoZSBjcmVkZW50aWFsIHdhcyBzdWNjZXNzZnVseSBz
ZW50LCBAYyBFSU5BX0ZBTFNFIG90aGVyd2lzZS4KKyAqLworRUFQSSBFaW5hX0Jvb2wgZXdrX2F1
dGhfcmVxdWVzdF9hdXRoZW50aWNhdGUoRXdrX0F1dGhfUmVxdWVzdCAqcmVxdWVzdCwgY29uc3Qg
Y2hhciAqdXNlcm5hbWUsIGNvbnN0IGNoYXIgKnBhc3N3b3JkKTsKKworI2lmZGVmIF9fY3BsdXNw
bHVzCit9CisjZW5kaWYKKworI2VuZGlmIC8qIGV3a19hdXRoX3JlcXVlc3RfaCAqLwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2F1dGhfcmVxdWVzdF9w
cml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfYXV0aF9yZXF1
ZXN0X3ByaXZhdGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hMWJiMjg1
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdr
X2F1dGhfcmVxdWVzdF9wcml2YXRlLmgKQEAgLTAsMCArMSw2NCBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxMiBJbnRlbCBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
KyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
CisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI2lmbmRlZiBld2tfYXV0aF9yZXF1ZXN0X3ByaXZhdGVfaAorI2RlZmluZSBld2tfYXV0
aF9yZXF1ZXN0X3ByaXZhdGVfaAorCisjaW5jbHVkZSAiV0tFaW5hU2hhcmVkU3RyaW5nLmgiCisj
aW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgor
I2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKK2Ns
YXNzIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlUHJveHk7Cit9CisKK2NsYXNzIEV3a19BdXRoX1Jl
cXVlc3QgOiBwdWJsaWMgUmVmQ291bnRlZDxFd2tfQXV0aF9SZXF1ZXN0PiB7CitwdWJsaWM6Cisg
ICAgc3RhdGljIFBhc3NSZWZQdHI8RXdrX0F1dGhfUmVxdWVzdD4gY3JlYXRlKFdlYktpdDo6QXV0
aGVudGljYXRpb25DaGFsbGVuZ2VQcm94eSogYXV0aGVudGljYXRpb25DaGFsbGVuZ2UpCisgICAg
eworICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEV3a19BdXRoX1JlcXVlc3QoYXV0aGVudGlj
YXRpb25DaGFsbGVuZ2UpKTsKKyAgICB9CisgICAgfkV3a19BdXRoX1JlcXVlc3QoKTsKKworICAg
IGNvbnN0IGNoYXIqIHN1Z2dlc3RlZFVzZXJuYW1lKCkgY29uc3Q7CisgICAgY29uc3QgY2hhciog
cmVhbG0oKSBjb25zdDsKKyAgICBjb25zdCBjaGFyKiBob3N0KCkgY29uc3Q7CisgICAgYm9vbCBp
c1JldHJ5aW5nKCkgY29uc3Q7CisKKyAgICBib29sIGNhbmNlbCgpOworICAgIGJvb2wgYXV0aGVu
dGljYXRlKGNvbnN0IFN0cmluZyYgdXNlcm5hbWUsIGNvbnN0IFN0cmluZyYgcGFzc3dvcmQpOwor
Citwcml2YXRlOgorICAgIGV4cGxpY2l0IEV3a19BdXRoX1JlcXVlc3QoV2ViS2l0OjpBdXRoZW50
aWNhdGlvbkNoYWxsZW5nZVByb3h5KiBhdXRoZW50aWNhdGlvbkNoYWxsZW5nZSk7CisKKyAgICBS
ZWZQdHI8V2ViS2l0OjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVByb3h5PiBtX2F1dGhlbnRpY2F0
aW9uQ2hhbGxlbmdlOworICAgIGJvb2wgbV93YXNIYW5kbGVkOworICAgIG11dGFibGUgV0tFaW5h
U2hhcmVkU3RyaW5nIG1fc3VnZ2VzdGVkVXNlcm5hbWU7CisgICAgbXV0YWJsZSBXS0VpbmFTaGFy
ZWRTdHJpbmcgbV9yZWFsbTsKKyAgICBtdXRhYmxlIFdLRWluYVNoYXJlZFN0cmluZyBtX2hvc3Q7
Cit9OworCisjZW5kaWYgLy8gZXdrX2F1dGhfcmVxdWVzdF9wcml2YXRlX2gKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3LmggYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlldy5oCmluZGV4IDUzY2E4M2EuLjE3NWMyOGMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3LmgK
KysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXcuaApAQCAtMjYs
NiArMjYsOCBAQAogICoKICAqIFRoZSBmb2xsb3dpbmcgc2lnbmFscyAoc2VlIGV2YXNfb2JqZWN0
X3NtYXJ0X2NhbGxiYWNrX2FkZCgpKSBhcmUgZW1pdHRlZDoKICAqCisgKiAtICJhdXRoZW50aWNh
dGlvbixyZXF1ZXN0IiwgRXdrX0F1dGhfUmVxdWVzdCo6IHJlcG9ydHMgdGhhdCB1c2VyIGF1dGhl
bnRpY2F0aW9uIHdhcyByZXF1ZXN0ZWQuIENhbGwKKyAqICAgZXdrX2F1dGhfcmVxdWVzdF9yZWYo
KSBvbiB0aGUgcmVxdWVzdCBvYmplY3QgdG8gcHJvY2VzcyB0aGUgYXV0aGVudGljYXRpb24gYXN5
bmNocm9ub3VzbHkuCiAgKiAtICJiYWNrLGZvcndhcmQsbGlzdCxjaGFuZ2VkIiwgdm9pZDogcmVw
b3J0cyB0aGF0IHRoZSB2aWV3J3MgYmFjayAvIGZvcndhcmQgbGlzdCBoYWQgY2hhbmdlZC4KICAq
IC0gImNsb3NlLHdpbmRvdyIsIHZvaWQ6IHdpbmRvdyBpcyBjbG9zZWQuCiAgKiAtICJjcmVhdGUs
d2luZG93IiwgRXZhc19PYmplY3QqKjogYSBuZXcgd2luZG93IGlzIGNyZWF0ZWQuCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC90ZXN0cy90ZXN0X2V3azJfYXV0
aF9yZXF1ZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL3Rlc3RzL3Rl
c3RfZXdrMl9hdXRoX3JlcXVlc3QuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAuLmU0YjI2ODcKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL2VmbC90ZXN0cy90ZXN0X2V3azJfYXV0aF9yZXF1ZXN0LmNwcApAQCAtMCwwICsxLDE5NyBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBJbnRlbCBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
KyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaW5jbHVkZSAi
VW5pdFRlc3RVdGlscy9FV0syVW5pdFRlc3RCYXNlLmgiCisjaW5jbHVkZSAiVW5pdFRlc3RVdGls
cy9FV0syVW5pdFRlc3RFbnZpcm9ubWVudC5oIgorI2luY2x1ZGUgIlVuaXRUZXN0VXRpbHMvRVdL
MlVuaXRUZXN0U2VydmVyLmgiCisjaW5jbHVkZSA8RVdlYktpdDIuaD4KKyNpbmNsdWRlIDxFY29y
ZS5oPgorI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CisKK3VzaW5nIG5hbWVzcGFjZSBFV0sy
VW5pdFRlc3Q7CisKK2V4dGVybiBFV0syVW5pdFRlc3RFbnZpcm9ubWVudCogZW52aXJvbm1lbnQ7
CisKK3N0YXRpYyBjb25zdCBjaGFyIFRFU1RfVVNFUk5BTUVbXSA9ICJ1c2VybmFtZSI7CitzdGF0
aWMgY29uc3QgY2hhciBURVNUX1BBU1NXT1JEW10gPSAicGFzc3dvcmQiOworc3RhdGljIGNvbnN0
IGNoYXIgRVhQRUNURURfQVVUSE9SSVpBVElPTltdID0gIkJhc2ljIGRYTmxjbTVoYldVNmNHRnpj
M2R2Y21RPSI7IC8vIEJhc2U2NCBlbmNvZGluZyBvZiAidXNlcm5hbWU6cGFzc3dvcmQiLgorc3Rh
dGljIGNvbnN0IGNoYXIgSU5ERVhfSFRNTF9TVFJJTkdbXSA9CisgICAgIjxodG1sPiIKKyAgICAi
PGhlYWQ+PHRpdGxlPkVGTFdlYktpdDIgQXV0aGVudGljYXRpb24gdGVzdDwvdGl0bGU+PC9oZWFk
PiIKKyAgICAiPGJvZHk+PC9ib2R5PjwvaHRtbD4iOworCitzdGF0aWMgdm9pZCBzZXJ2ZXJDYWxs
YmFjayhTb3VwU2VydmVyKiwgU291cE1lc3NhZ2UqIG1lc3NhZ2UsIGNvbnN0IGNoYXIqIHBhdGgs
IEdIYXNoVGFibGUqLCBTb3VwQ2xpZW50Q29udGV4dCosIHZvaWQqKQoreworICAgIGlmIChtZXNz
YWdlLT5tZXRob2QgIT0gU09VUF9NRVRIT0RfR0VUKSB7CisgICAgICAgIHNvdXBfbWVzc2FnZV9z
ZXRfc3RhdHVzKG1lc3NhZ2UsIFNPVVBfU1RBVFVTX05PVF9JTVBMRU1FTlRFRCk7CisgICAgICAg
IHJldHVybjsKKyAgICB9CisKKyAgICBpZiAoIXN0cmNtcChwYXRoLCAiL2luZGV4Lmh0bWwiKSkg
eworICAgICAgICBjb25zdCBjaGFyKiBhdXRob3JpemF0aW9uID0gc291cF9tZXNzYWdlX2hlYWRl
cnNfZ2V0X29uZShtZXNzYWdlLT5yZXF1ZXN0X2hlYWRlcnMsICJBdXRob3JpemF0aW9uIik7Cisg
ICAgICAgIC8vIFJlcXVpcmUgYXV0aGVudGljYXRpb24KKyAgICAgICAgaWYgKGF1dGhvcml6YXRp
b24gJiYgIXN0cmNtcChhdXRob3JpemF0aW9uLCBFWFBFQ1RFRF9BVVRIT1JJWkFUSU9OKSkgewor
ICAgICAgICAgICAgLy8gU3VjY2Vzc2Z1bCBhdXRoZW50aWNhdGlvbi4KKyAgICAgICAgICAgIHNv
dXBfbWVzc2FnZV9zZXRfc3RhdHVzKG1lc3NhZ2UsIFNPVVBfU1RBVFVTX09LKTsKKyAgICAgICAg
ICAgIHNvdXBfbWVzc2FnZV9ib2R5X2FwcGVuZChtZXNzYWdlLT5yZXNwb25zZV9ib2R5LCBTT1VQ
X01FTU9SWV9DT1BZLCBJTkRFWF9IVE1MX1NUUklORywgc3RybGVuKElOREVYX0hUTUxfU1RSSU5H
KSk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAvLyBObyAodmFsaWQpIGF1dGhvcml6
YXRpb24gaGVhZGVyIHByb3ZpZGVkIGJ5IHRoZSBjbGllbnQsIHJlcXVlc3QgYXV0aGVudGljYXRp
b24uCisgICAgICAgICAgICBzb3VwX21lc3NhZ2Vfc2V0X3N0YXR1cyhtZXNzYWdlLCBTT1VQX1NU
QVRVU19VTkFVVEhPUklaRUQpOworICAgICAgICAgICAgc291cF9tZXNzYWdlX2hlYWRlcnNfYXBw
ZW5kKG1lc3NhZ2UtPnJlc3BvbnNlX2hlYWRlcnMsICJXV1ctQXV0aGVudGljYXRlIiwgIkJhc2lj
IHJlYWxtPVwibXkgcmVhbG1cIiIpOworICAgICAgICB9CisgICAgfSBlbHNlCisgICAgICAgIHNv
dXBfbWVzc2FnZV9zZXRfc3RhdHVzKG1lc3NhZ2UsIFNPVVBfU1RBVFVTX05PVF9GT1VORCk7CisK
KyAgICBzb3VwX21lc3NhZ2VfYm9keV9jb21wbGV0ZShtZXNzYWdlLT5yZXNwb25zZV9ib2R5KTsK
K30KKworc3RhdGljIHZvaWQgb25BdXRoZW50aWNhdGlvblJlcXVlc3Qodm9pZCogdXNlckRhdGEs
IEV2YXNfT2JqZWN0Kiwgdm9pZCogZXZlbnRJbmZvKQoreworICAgIEV3a19BdXRoX1JlcXVlc3Qq
KiByZXR1cm5SZXF1ZXN0ID0gc3RhdGljX2Nhc3Q8RXdrX0F1dGhfUmVxdWVzdCoqPih1c2VyRGF0
YSk7CisgICAgQVNTRVJUX1RSVUUocmV0dXJuUmVxdWVzdCk7CisKKyAgICBFd2tfQXV0aF9SZXF1
ZXN0KiByZXF1ZXN0ID0gc3RhdGljX2Nhc3Q8RXdrX0F1dGhfUmVxdWVzdCo+KGV2ZW50SW5mbyk7
CisgICAgQVNTRVJUX1RSVUUocmVxdWVzdCk7CisKKyAgICAqcmV0dXJuUmVxdWVzdCA9IGV3a19h
dXRoX3JlcXVlc3RfcmVmKHJlcXVlc3QpOworfQorCitURVNUX0YoRVdLMlVuaXRUZXN0QmFzZSwg
ZXdrX2F1dGhfcmVxdWVzdF9zdWNjZXNzKQoreworICAgIE93blB0cjxFV0syVW5pdFRlc3RTZXJ2
ZXI+IGh0dHBTZXJ2ZXIgPSBhZG9wdFB0cihuZXcgRVdLMlVuaXRUZXN0U2VydmVyKTsKKyAgICBo
dHRwU2VydmVyLT5ydW4oc2VydmVyQ2FsbGJhY2spOworCisgICAgRXdrX0F1dGhfUmVxdWVzdCog
YXV0aGVudGljYXRpb25SZXF1ZXN0ID0gMDsKKyAgICBldmFzX29iamVjdF9zbWFydF9jYWxsYmFj
a19hZGQod2ViVmlldygpLCAiYXV0aGVudGljYXRpb24scmVxdWVzdCIsIG9uQXV0aGVudGljYXRp
b25SZXF1ZXN0LCAmYXV0aGVudGljYXRpb25SZXF1ZXN0KTsKKworICAgIGV3a192aWV3X3VybF9z
ZXQod2ViVmlldygpLCBodHRwU2VydmVyLT5nZXRVUkxGb3JQYXRoKCIvaW5kZXguaHRtbCIpLmRh
dGEoKSk7CisKKyAgICB3aGlsZSAoIWF1dGhlbnRpY2F0aW9uUmVxdWVzdCkKKyAgICAgICAgZWNv
cmVfbWFpbl9sb29wX2l0ZXJhdGUoKTsKKworICAgIEFTU0VSVF9UUlVFKGF1dGhlbnRpY2F0aW9u
UmVxdWVzdCk7CisgICAgZXZhc19vYmplY3Rfc21hcnRfY2FsbGJhY2tfZGVsKHdlYlZpZXcoKSwg
ImF1dGhlbnRpY2F0aW9uLHJlcXVlc3QiLCBvbkF1dGhlbnRpY2F0aW9uUmVxdWVzdCk7CisKKyAg
ICBFWFBFQ1RfU1RSRVEoIm15IHJlYWxtIiwgZXdrX2F1dGhfcmVxdWVzdF9yZWFsbV9nZXQoYXV0
aGVudGljYXRpb25SZXF1ZXN0KSk7CisgICAgRVhQRUNUX1NUUkVRKCIxMjcuMC4wLjEiLCBld2tf
YXV0aF9yZXF1ZXN0X2hvc3RfZ2V0KGF1dGhlbnRpY2F0aW9uUmVxdWVzdCkpOworICAgIEVYUEVD
VF9GQUxTRShld2tfYXV0aF9yZXF1ZXN0X3JldHJ5aW5nX2dldChhdXRoZW50aWNhdGlvblJlcXVl
c3QpKTsKKworICAgIEFTU0VSVF9UUlVFKGV3a19hdXRoX3JlcXVlc3RfYXV0aGVudGljYXRlKGF1
dGhlbnRpY2F0aW9uUmVxdWVzdCwgVEVTVF9VU0VSTkFNRSwgVEVTVF9QQVNTV09SRCkpOworCisg
ICAgZXdrX2F1dGhfcmVxdWVzdF91bnJlZihhdXRoZW50aWNhdGlvblJlcXVlc3QpOworCisgICAg
QVNTRVJUX1RSVUUod2FpdFVudGlsVGl0bGVDaGFuZ2VkVG8oIkVGTFdlYktpdDIgQXV0aGVudGlj
YXRpb24gdGVzdCIpKTsKK30KKworVEVTVF9GKEVXSzJVbml0VGVzdEJhc2UsIGV3a19hdXRoX3Jl
cXVlc3RfZmFpbHVyZV90aGVuX3N1Y2Nlc3MpCit7CisgICAgT3duUHRyPEVXSzJVbml0VGVzdFNl
cnZlcj4gaHR0cFNlcnZlciA9IGFkb3B0UHRyKG5ldyBFV0syVW5pdFRlc3RTZXJ2ZXIpOworICAg
IGh0dHBTZXJ2ZXItPnJ1bihzZXJ2ZXJDYWxsYmFjayk7CisKKyAgICBFd2tfQXV0aF9SZXF1ZXN0
KiBhdXRoZW50aWNhdGlvblJlcXVlc3QgPSAwOworICAgIGV2YXNfb2JqZWN0X3NtYXJ0X2NhbGxi
YWNrX2FkZCh3ZWJWaWV3KCksICJhdXRoZW50aWNhdGlvbixyZXF1ZXN0Iiwgb25BdXRoZW50aWNh
dGlvblJlcXVlc3QsICZhdXRoZW50aWNhdGlvblJlcXVlc3QpOworCisgICAgZXdrX3ZpZXdfdXJs
X3NldCh3ZWJWaWV3KCksIGh0dHBTZXJ2ZXItPmdldFVSTEZvclBhdGgoIi9pbmRleC5odG1sIiku
ZGF0YSgpKTsKKworICAgIHdoaWxlICghYXV0aGVudGljYXRpb25SZXF1ZXN0KQorICAgICAgICBl
Y29yZV9tYWluX2xvb3BfaXRlcmF0ZSgpOworCisgICAgQVNTRVJUX1RSVUUoYXV0aGVudGljYXRp
b25SZXF1ZXN0KTsKKworICAgIEVYUEVDVF9TVFJFUSgibXkgcmVhbG0iLCBld2tfYXV0aF9yZXF1
ZXN0X3JlYWxtX2dldChhdXRoZW50aWNhdGlvblJlcXVlc3QpKTsKKyAgICBFWFBFQ1RfU1RSRVEo
IjEyNy4wLjAuMSIsIGV3a19hdXRoX3JlcXVlc3RfaG9zdF9nZXQoYXV0aGVudGljYXRpb25SZXF1
ZXN0KSk7CisgICAgRVhQRUNUX0ZBTFNFKGV3a19hdXRoX3JlcXVlc3RfcmV0cnlpbmdfZ2V0KGF1
dGhlbnRpY2F0aW9uUmVxdWVzdCkpOworCisgICAgQVNTRVJUX1RSVUUoZXdrX2F1dGhfcmVxdWVz
dF9hdXRoZW50aWNhdGUoYXV0aGVudGljYXRpb25SZXF1ZXN0LCBURVNUX1VTRVJOQU1FLCAid3Jv
bmdwYXNzd29yZCIpKTsKKworICAgIGV3a19hdXRoX3JlcXVlc3RfdW5yZWYoYXV0aGVudGljYXRp
b25SZXF1ZXN0KTsKKyAgICBhdXRoZW50aWNhdGlvblJlcXVlc3QgPSAwOworCisgICAgLy8gV2Ug
ZXhwZWN0IGEgc2Vjb25kIGF1dGhlbnRpY2F0aW9uIHJlcXVlc3Qgc2luY2UgdGhlIGZpcnN0IG9u
ZSBmYWlsZWQuCisgICAgd2hpbGUgKCFhdXRoZW50aWNhdGlvblJlcXVlc3QpCisgICAgICAgIGVj
b3JlX21haW5fbG9vcF9pdGVyYXRlKCk7CisgICAgZXZhc19vYmplY3Rfc21hcnRfY2FsbGJhY2tf
ZGVsKHdlYlZpZXcoKSwgImF1dGhlbnRpY2F0aW9uLHJlcXVlc3QiLCBvbkF1dGhlbnRpY2F0aW9u
UmVxdWVzdCk7CisKKyAgICBFWFBFQ1RfU1RSRVEoIm15IHJlYWxtIiwgZXdrX2F1dGhfcmVxdWVz
dF9yZWFsbV9nZXQoYXV0aGVudGljYXRpb25SZXF1ZXN0KSk7CisgICAgRVhQRUNUX1NUUkVRKCIx
MjcuMC4wLjEiLCBld2tfYXV0aF9yZXF1ZXN0X2hvc3RfZ2V0KGF1dGhlbnRpY2F0aW9uUmVxdWVz
dCkpOworICAgIEVYUEVDVF9UUlVFKGV3a19hdXRoX3JlcXVlc3RfcmV0cnlpbmdfZ2V0KGF1dGhl
bnRpY2F0aW9uUmVxdWVzdCkpOworCisgICAgLy8gTm93IHByb3ZpZGUgdGhlIHJpZ2h0IHBhc3N3
b3JkLgorICAgIEFTU0VSVF9UUlVFKGV3a19hdXRoX3JlcXVlc3RfYXV0aGVudGljYXRlKGF1dGhl
bnRpY2F0aW9uUmVxdWVzdCwgVEVTVF9VU0VSTkFNRSwgVEVTVF9QQVNTV09SRCkpOworCisgICAg
ZXdrX2F1dGhfcmVxdWVzdF91bnJlZihhdXRoZW50aWNhdGlvblJlcXVlc3QpOworCisgICAgQVNT
RVJUX1RSVUUod2FpdFVudGlsVGl0bGVDaGFuZ2VkVG8oIkVGTFdlYktpdDIgQXV0aGVudGljYXRp
b24gdGVzdCIpKTsKK30KKworc3RhdGljIHZvaWQgb25SZXNvdXJjZUxvYWRSZXNwb25zZSh2b2lk
KiB1c2VyRGF0YSwgRXZhc19PYmplY3QqLCB2b2lkKiBldmVudEluZm8pCit7CisgICAgaW50KiBz
dGF0dXNDb2RlID0gc3RhdGljX2Nhc3Q8aW50Kj4odXNlckRhdGEpOworICAgIEFTU0VSVF9UUlVF
KHN0YXR1c0NvZGUpOworCisgICAgRXdrX1Jlc291cmNlX0xvYWRfUmVzcG9uc2UqIHJlc3BvbnNl
ID0gc3RhdGljX2Nhc3Q8RXdrX1Jlc291cmNlX0xvYWRfUmVzcG9uc2UqPihldmVudEluZm8pOwor
ICAgIEFTU0VSVF9UUlVFKHJlc3BvbnNlKTsKKworICAgIGlmICghZXdrX3Jlc291cmNlX21haW5f
cmVzb3VyY2VfZ2V0KHJlc3BvbnNlLT5yZXNvdXJjZSkpCisgICAgICAgIHJldHVybjsKKworICAg
ICpzdGF0dXNDb2RlID0gZXdrX3VybF9yZXNwb25zZV9zdGF0dXNfY29kZV9nZXQocmVzcG9uc2Ut
PnJlc3BvbnNlKTsKK30KKworVEVTVF9GKEVXSzJVbml0VGVzdEJhc2UsIGV3a19hdXRoX3JlcXVl
c3RfY2FuY2VsKQoreworICAgIE93blB0cjxFV0syVW5pdFRlc3RTZXJ2ZXI+IGh0dHBTZXJ2ZXIg
PSBhZG9wdFB0cihuZXcgRVdLMlVuaXRUZXN0U2VydmVyKTsKKyAgICBodHRwU2VydmVyLT5ydW4o
c2VydmVyQ2FsbGJhY2spOworCisgICAgRXdrX0F1dGhfUmVxdWVzdCogYXV0aGVudGljYXRpb25S
ZXF1ZXN0ID0gMDsKKyAgICBldmFzX29iamVjdF9zbWFydF9jYWxsYmFja19hZGQod2ViVmlldygp
LCAiYXV0aGVudGljYXRpb24scmVxdWVzdCIsIG9uQXV0aGVudGljYXRpb25SZXF1ZXN0LCAmYXV0
aGVudGljYXRpb25SZXF1ZXN0KTsKKworICAgIGV3a192aWV3X3VybF9zZXQod2ViVmlldygpLCBo
dHRwU2VydmVyLT5nZXRVUkxGb3JQYXRoKCIvaW5kZXguaHRtbCIpLmRhdGEoKSk7CisKKyAgICB3
aGlsZSAoIWF1dGhlbnRpY2F0aW9uUmVxdWVzdCkKKyAgICAgICAgZWNvcmVfbWFpbl9sb29wX2l0
ZXJhdGUoKTsKKworICAgIEFTU0VSVF9UUlVFKGF1dGhlbnRpY2F0aW9uUmVxdWVzdCk7CisgICAg
ZXZhc19vYmplY3Rfc21hcnRfY2FsbGJhY2tfZGVsKHdlYlZpZXcoKSwgImF1dGhlbnRpY2F0aW9u
LHJlcXVlc3QiLCBvbkF1dGhlbnRpY2F0aW9uUmVxdWVzdCk7CisKKyAgICBFWFBFQ1RfU1RSRVEo
Im15IHJlYWxtIiwgZXdrX2F1dGhfcmVxdWVzdF9yZWFsbV9nZXQoYXV0aGVudGljYXRpb25SZXF1
ZXN0KSk7CisgICAgRVhQRUNUX1NUUkVRKCIxMjcuMC4wLjEiLCBld2tfYXV0aF9yZXF1ZXN0X2hv
c3RfZ2V0KGF1dGhlbnRpY2F0aW9uUmVxdWVzdCkpOworICAgIEVYUEVDVF9GQUxTRShld2tfYXV0
aF9yZXF1ZXN0X3JldHJ5aW5nX2dldChhdXRoZW50aWNhdGlvblJlcXVlc3QpKTsKKworICAgIGlu
dCBzdGF0dXNDb2RlID0gMDsKKyAgICBldmFzX29iamVjdF9zbWFydF9jYWxsYmFja19hZGQod2Vi
VmlldygpLCAicmVzb3VyY2UscmVxdWVzdCxyZXNwb25zZSIsIG9uUmVzb3VyY2VMb2FkUmVzcG9u
c2UsICZzdGF0dXNDb2RlKTsKKworICAgIC8vIENhbmNlbHMgYXV0aGVudGljYXRpb24gYnkgZGVm
YXVsdC4KKyAgICBld2tfYXV0aF9yZXF1ZXN0X3VucmVmKGF1dGhlbnRpY2F0aW9uUmVxdWVzdCk7
CisKKyAgICB3aGlsZSAoIXN0YXR1c0NvZGUpCisgICAgICAgIGVjb3JlX21haW5fbG9vcF9pdGVy
YXRlKCk7CisKKyAgICBFWFBFQ1RfRVEoU09VUF9TVEFUVVNfVU5BVVRIT1JJWkVELCBzdGF0dXND
b2RlKTsKKworICAgIGV2YXNfb2JqZWN0X3NtYXJ0X2NhbGxiYWNrX2RlbCh3ZWJWaWV3KCksICJy
ZXNvdXJjZSxyZXF1ZXN0LHJlc3BvbnNlIiwgb25SZXNvdXJjZUxvYWRSZXNwb25zZSk7Cit9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1BhZ2VMb2FkQ2xpZW50RWZs
LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvUGFnZUxvYWRDbGllbnRFZmwuY3Bw
CmluZGV4IDYyMWM4NTUuLmZiMDYyYmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9lZmwvUGFnZUxvYWRDbGllbnRFZmwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9lZmwvUGFnZUxvYWRDbGllbnRFZmwuY3BwCkBAIC0zMCw2ICszMCw3IEBACiAjaW5jbHVk
ZSAiV0tBUElDYXN0LmgiCiAjaW5jbHVkZSAiV0tGcmFtZS5oIgogI2luY2x1ZGUgIldLUGFnZS5o
IgorI2luY2x1ZGUgImV3a19hdXRoX3JlcXVlc3RfcHJpdmF0ZS5oIgogI2luY2x1ZGUgImV3a19i
YWNrX2ZvcndhcmRfbGlzdF9wcml2YXRlLmgiCiAjaW5jbHVkZSAiZXdrX2Vycm9yX3ByaXZhdGUu
aCIKICNpbmNsdWRlICJld2tfaW50ZW50X3ByaXZhdGUuaCIKQEAgLTE2MSw2ICsxNjIsMTQgQEAg
dm9pZCBQYWdlTG9hZENsaWVudEVmbDo6ZGlkU2FtZURvY3VtZW50TmF2aWdhdGlvbkZvckZyYW1l
KFdLUGFnZVJlZiwgV0tGcmFtZVJlZgogICAgIHZpZXdJbXBsLT5pbmZvcm1VUkxDaGFuZ2UoKTsK
IH0KIAordm9pZCBQYWdlTG9hZENsaWVudEVmbDo6ZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hh
bGxlbmdlSW5GcmFtZShXS1BhZ2VSZWYsIFdLRnJhbWVSZWYsIFdLQXV0aGVudGljYXRpb25DaGFs
bGVuZ2VSZWYgYXV0aGVudGljYXRpb25DaGFsbGVuZ2UsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8p
Cit7CisgICAgRXdrVmlld0ltcGwqIHZpZXdJbXBsID0gdG9QYWdlTG9hZENsaWVudEVmbChjbGll
bnRJbmZvKS0+dmlld0ltcGwoKTsKKworICAgIFJlZlB0cjxFd2tfQXV0aF9SZXF1ZXN0PiBhdXRo
ZW50aWNhdGlvblJlcXVlc3QgPSBFd2tfQXV0aF9SZXF1ZXN0OjpjcmVhdGUodG9JbXBsKGF1dGhl
bnRpY2F0aW9uQ2hhbGxlbmdlKSk7CisgICAgdmlld0ltcGwtPnNtYXJ0Q2FsbGJhY2s8QXV0aGVu
dGljYXRpb25SZXF1ZXN0PigpLmNhbGwoYXV0aGVudGljYXRpb25SZXF1ZXN0LmdldCgpKTsKK30K
KwogUGFnZUxvYWRDbGllbnRFZmw6OlBhZ2VMb2FkQ2xpZW50RWZsKEV3a1ZpZXdJbXBsKiB2aWV3
SW1wbCkKICAgICA6IG1fdmlld0ltcGwodmlld0ltcGwpCiB7CkBAIC0xOTEsNiArMjAwLDcgQEAg
UGFnZUxvYWRDbGllbnRFZmw6OlBhZ2VMb2FkQ2xpZW50RWZsKEV3a1ZpZXdJbXBsKiB2aWV3SW1w
bCkKICNlbmRpZgogICAgIGxvYWRDbGllbnQuZGlkQ2hhbmdlQmFja0ZvcndhcmRMaXN0ID0gZGlk
Q2hhbmdlQmFja0ZvcndhcmRMaXN0OwogICAgIGxvYWRDbGllbnQuZGlkU2FtZURvY3VtZW50TmF2
aWdhdGlvbkZvckZyYW1lID0gZGlkU2FtZURvY3VtZW50TmF2aWdhdGlvbkZvckZyYW1lOworICAg
IGxvYWRDbGllbnQuZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlSW5GcmFtZSA9IGRp
ZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZUluRnJhbWU7CiAgICAgV0tQYWdlU2V0UGFn
ZUxvYWRlckNsaWVudChwYWdlUmVmLCAmbG9hZENsaWVudCk7CiB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvUGFnZUxvYWRDbGllbnRFZmwuaCBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9lZmwvUGFnZUxvYWRDbGllbnRFZmwuaAppbmRleCBiOTg2ZmZlLi5j
ZDcxM2EzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1BhZ2VMb2Fk
Q2xpZW50RWZsLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9QYWdlTG9hZENs
aWVudEVmbC5oCkBAIC02NCw2ICs2NCw3IEBAIHByaXZhdGU6CiAjZW5kaWYKICAgICBzdGF0aWMg
dm9pZCBkaWRDaGFuZ2VCYWNrRm9yd2FyZExpc3QoV0tQYWdlUmVmLCBXS0JhY2tGb3J3YXJkTGlz
dEl0ZW1SZWYgYWRkZWRJdGVtLCBXS0FycmF5UmVmIHJlbW92ZWRJdGVtcywgY29uc3Qgdm9pZCog
Y2xpZW50SW5mbyk7CiAgICAgc3RhdGljIHZvaWQgZGlkU2FtZURvY3VtZW50TmF2aWdhdGlvbkZv
ckZyYW1lKFdLUGFnZVJlZiwgV0tGcmFtZVJlZiwgV0tTYW1lRG9jdW1lbnROYXZpZ2F0aW9uVHlw
ZSwgV0tUeXBlUmVmLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKTsKKyAgICBzdGF0aWMgdm9pZCBk
aWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2VJbkZyYW1lKFdLUGFnZVJlZiwgV0tGcmFt
ZVJlZiwgV0tBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVJlZiwgY29uc3Qgdm9pZCogY2xpZW50SW5m
byk7CiAKICAgICBFd2tWaWV3SW1wbCogbV92aWV3SW1wbDsKIH07Cg==
</data>
<flag name="commit-queue"
          id="185901"
          type_id="3"
          status="-"
          setter="gtk-ews"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>171845</attachid>
            <date>2012-11-01 07:24:45 -0700</date>
            <delta_ts>2012-11-01 08:33:04 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>100858_ewk_auth_request.patch</filename>
            <type>text/plain</type>
            <size>40323</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBhNjczYTI0Li4yOWUxMDUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzgg
QEAKKzIwMTItMTEtMDEgIENocmlzdG9waGUgRHVtZXogIDxjaHJpc3RvcGhlLmR1bWV6QGludGVs
LmNvbT4KKworICAgICAgICBbRUZMXVtXSzJdIEFkZCBFd2tfQXV0aF9SZXF1ZXN0IEFQSQorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTAwODU4CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUHJvdmlkZSBhbiBB
dXRoZW50aWNhdGlvbkNsaWVudCBmb3IgRUZMIHBvcnQgaW4gV2ViQ29yZSBzbworICAgICAgICB0
aGF0IHdlIGNhbiBoYW5kbGUgYXV0aGVudGljYXRpb24gc2ltaWxhcmx5IHRvIG90aGVyIHBvcnRz
CisgICAgICAgIG9mIFdlYktpdC4KKworICAgICAgICBObyBuZXcgdGVzdHMsIG5vIGJlaGF2aW9y
IGNoYW5nZSBmb3IgbGF5b3V0IHRlc3RzLgorCisgICAgICAgICogUGxhdGZvcm1FZmwuY21ha2U6
IEFkZCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVNvdXAuY3BwIHRvIENNYWtlLgorICAgICAgICAq
IGxvYWRlci9SZXNvdXJjZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUxv
YWRlcjo6ZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlLmg6CisgICAgICAgIChSZXNvdXJjZUhhbmRsZSk6
IEhhdmUgUmVzb3VyY2VIYW5kbGUgc3ViY2xhc3MgQXV0aGVudGljYXRpb25DbGllbnQgbGlrZQor
ICAgICAgICBtb3N0IG9mIHRoZSBvdGhlciBwb3J0cy4KKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3
b3JrL3NvdXAvQXV0aGVudGljYXRpb25DaGFsbGVuZ2VTb3VwLmNwcDogRml4IGluaXRpYWxpemF0
aW9uCisgICAgICAgIG9mIHByZXZpb3VzRmFpbHVyZUNvdW50IG1lbWJlci4gSXQgc2hvdWxkIGJl
IDEgaWYgd2UgYXJlIHJldHJ5aW5nCisgICAgICAgIGF1dGhlbnRpY2F0aW9uIGFuZCAwIG90aGVy
d2lzZSwgbm90IHRoZSBvcHBvc2l0ZS4KKyAgICAgICAgKFdlYkNvcmU6OkF1dGhlbnRpY2F0aW9u
Q2hhbGxlbmdlOjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSk6CisgICAgICAgICogcGxhdGZvcm0v
bmV0d29yay9zb3VwL1Jlc291cmNlSGFuZGxlU291cC5jcHA6IFByb3ZpZGUgaW1wbGVtZW50YXRp
b24gZm9yIEVGTAorICAgICAgICBwb3J0IG9mIEF1dGhlbnRpY2F0aW9uQ2xpZW50IG1ldGhvZHMu
CisgICAgICAgIChXZWJDb3JlOjpXZWJDb3JlU3luY2hyb25vdXNMb2FkZXI6OmRpZFJlY2VpdmVB
dXRoZW50aWNhdGlvbkNoYWxsZW5nZSk6CisgICAgICAgIChXZWJDb3JlU3luY2hyb25vdXNMb2Fk
ZXIpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUhhbmRs
ZTo6ZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKToKKyAgICAgICAgKFdlYkNvcmU6
OlJlc291cmNlSGFuZGxlOjpyZWNlaXZlZFJlcXVlc3RUb0NvbnRpbnVlV2l0aG91dENyZWRlbnRp
YWwpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGU6OnJlY2VpdmVkQ3JlZGVudGlh
bCk6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZTo6cmVjZWl2ZWRDYW5jZWxsYXRp
b24pOgorICAgICAgICAoV2ViQ29yZTo6YXV0aGVudGljYXRlQ2FsbGJhY2spOgorICAgICAgICAo
V2ViQ29yZTo6UmVzb3VyY2VIYW5kbGU6OmRlZmF1bHRTZXNzaW9uKToKKwogMjAxMi0xMS0wMSAg
S2VudCBUYW11cmEgIDx0a2VudEBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmVtb3ZlIHVudXNl
ZCBMb2NhbGU6OnBhcnNlRGF0ZVRpbWUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BsYXRm
b3JtRWZsLmNtYWtlIGIvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1FZmwuY21ha2UKaW5kZXggMzg3
YzM3Yy4uYzcyMmMyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1FZmwuY21h
a2UKKysrIGIvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1FZmwuY21ha2UKQEAgLTY5LDYgKzY5LDcg
QEAgTElTVChBUFBFTkQgV2ViQ29yZV9TT1VSQ0VTCiAgIHBsYXRmb3JtL2xpbnV4L0dhbWVwYWRE
ZXZpY2VMaW51eC5jcHAKICAgcGxhdGZvcm0vbWVkaWFzdHJlYW0vZ3N0cmVhbWVyL01lZGlhU3Ry
ZWFtQ2VudGVyR1N0cmVhbWVyLmNwcAogICBwbGF0Zm9ybS9uZXR3b3JrL2VmbC9OZXR3b3JrU3Rh
dGVOb3RpZmllckVmbC5jcHAKKyAgcGxhdGZvcm0vbmV0d29yay9zb3VwL0F1dGhlbnRpY2F0aW9u
Q2hhbGxlbmdlU291cC5jcHAKICAgcGxhdGZvcm0vbmV0d29yay9zb3VwL0Nvb2tpZUphclNvdXAu
Y3BwCiAgIHBsYXRmb3JtL25ldHdvcmsvc291cC9Db29raWVTdG9yYWdlU291cC5jcHAKICAgcGxh
dGZvcm0vbmV0d29yay9zb3VwL0NyZWRlbnRpYWxTdG9yYWdlU291cC5jcHAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuY3BwCmluZGV4IDBkYWQ4N2YuLjVjYzM2YmYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyLmNwcApAQCAtNDk0LDcgKzQ5NCw3IEBA
IHZvaWQgUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShj
b25zdCBBdXRoZW50aWNhdGlvbkNoYWxsCiAgICAgfQogICAgIC8vIE9ubHkgdGhlc2UgcGxhdGZv
cm1zIHByb3ZpZGUgYSB3YXkgdG8gY29udGludWUgd2l0aG91dCBjcmVkZW50aWFscy4KICAgICAv
LyBJZiB3ZSBjYW4ndCBjb250aW51ZSB3aXRoIGNyZWRlbnRpYWxzLCB3ZSBuZWVkIHRvIGNhbmNl
bCB0aGUgbG9hZCBhbHRvZ2V0aGVyLgotI2lmIFBMQVRGT1JNKE1BQykgfHwgVVNFKENGTkVUV09S
SykgfHwgVVNFKENVUkwpIHx8IFBMQVRGT1JNKEdUSykKKyNpZiBQTEFURk9STShNQUMpIHx8IFVT
RShDRk5FVFdPUkspIHx8IFVTRShDVVJMKSB8fCBQTEFURk9STShHVEspIHx8IFBMQVRGT1JNKEVG
TCkKICAgICBoYW5kbGUoKS0+cmVjZWl2ZWRSZXF1ZXN0VG9Db250aW51ZVdpdGhvdXRDcmVkZW50
aWFsKGNoYWxsZW5nZSk7CiAgICAgQVNTRVJUKCFoYW5kbGUoKS0+aGFzQXV0aGVudGljYXRpb25D
aGFsbGVuZ2UoKSk7CiAjZWxzZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9SZXNvdXJjZUhhbmRsZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9SZXNvdXJjZUhhbmRsZS5oCmluZGV4IGM4MTcwMDQuLjM2MjE4NDMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGUuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlLmgKQEAgLTk3LDcgKzk3
LDcgQEAgZW51bSBTdG9yZWRDcmVkZW50aWFscyB7CiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gY2xh
c3MgVGltZXI7CiAKIGNsYXNzIFJlc291cmNlSGFuZGxlIDogcHVibGljIFJlZkNvdW50ZWQ8UmVz
b3VyY2VIYW5kbGU+Ci0jaWYgUExBVEZPUk0oTUFDKSB8fCBVU0UoQ0ZORVRXT1JLKSB8fCBVU0Uo
Q1VSTCkKKyNpZiBQTEFURk9STShNQUMpIHx8IFVTRShDRk5FVFdPUkspIHx8IFVTRShDVVJMKSB8
fCBQTEFURk9STShFRkwpCiAgICAgLCBwdWJsaWMgQXV0aGVudGljYXRpb25DbGllbnQKICNlbmRp
ZgogICAgIHsKQEAgLTExNCw3ICsxMTQsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCB3aWxsU2VuZFJl
cXVlc3QoUmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVkaXJlY3RS
ZXNwb25zZSk7CiAgICAgYm9vbCBzaG91bGRVc2VDcmVkZW50aWFsU3RvcmFnZSgpOwogI2VuZGlm
Ci0jaWYgUExBVEZPUk0oTUFDKSB8fCBVU0UoQ0ZORVRXT1JLKSB8fCBVU0UoQ1VSTCkKKyNpZiBQ
TEFURk9STShNQUMpIHx8IFVTRShDRk5FVFdPUkspIHx8IFVTRShDVVJMKSB8fCBQTEFURk9STShF
RkwpCiAgICAgdm9pZCBkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoY29uc3QgQXV0
aGVudGljYXRpb25DaGFsbGVuZ2UmKTsKICAgICB2aXJ0dWFsIHZvaWQgcmVjZWl2ZWRDcmVkZW50
aWFsKGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiwgY29uc3QgQ3JlZGVudGlhbCYpOwog
ICAgIHZpcnR1YWwgdm9pZCByZWNlaXZlZFJlcXVlc3RUb0NvbnRpbnVlV2l0aG91dENyZWRlbnRp
YWwoY29uc3QgQXV0aGVudGljYXRpb25DaGFsbGVuZ2UmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9BdXRoZW50aWNhdGlvbkNoYWxsZW5nZVNvdXAu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL0F1dGhlbnRpY2F0aW9u
Q2hhbGxlbmdlU291cC5jcHAKaW5kZXggYzJlZTcxZS4uZDNhYTZkZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdl
U291cC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL0F1dGhl
bnRpY2F0aW9uQ2hhbGxlbmdlU291cC5jcHAKQEAgLTY2LDcgKzY2LDcgQEAgc3RhdGljIFByb3Rl
Y3Rpb25TcGFjZSBwcm90ZWN0aW9uU3BhY2VGcm9tU291cEF1dGhBbmRNZXNzYWdlKFNvdXBBdXRo
KiBzb3VwQXV0aCwKIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOjpBdXRoZW50aWNhdGlvbkNoYWxs
ZW5nZShTb3VwU2Vzc2lvbiogc291cFNlc3Npb24sIFNvdXBNZXNzYWdlKiBzb3VwTWVzc2FnZSwg
U291cEF1dGgqIHNvdXBBdXRoLCBib29sIHJldHJ5aW5nLCBBdXRoZW50aWNhdGlvbkNsaWVudCog
Y2xpZW50KQogICAgIDogQXV0aGVudGljYXRpb25DaGFsbGVuZ2VCYXNlKHByb3RlY3Rpb25TcGFj
ZUZyb21Tb3VwQXV0aEFuZE1lc3NhZ2Uoc291cEF1dGgsIHNvdXBNZXNzYWdlKSwKICAgICAgICAg
Q3JlZGVudGlhbCgpLCAvLyBwcm9wb3NlZENyZWRlbnRpYWxzCi0gICAgICAgIHJldHJ5aW5nID8g
MCA6IDEsIC8vIHByZXZpb3VzRmFpbHVyZUNvdW50CisgICAgICAgIHJldHJ5aW5nID8gMSA6IDAs
IC8vIHByZXZpb3VzRmFpbHVyZUNvdW50CiAgICAgICAgIHNvdXBNZXNzYWdlLCAvLyBmYWlsdXJl
UmVzcG9uc2UKICAgICAgICAgUmVzb3VyY2VFcnJvcjo6YXV0aGVudGljYXRpb25FcnJvcihzb3Vw
TWVzc2FnZSkpCiAgICAgLCBtX3NvdXBTZXNzaW9uKHNvdXBTZXNzaW9uKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1Jlc291cmNlSGFuZGxlU291cC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvUmVzb3VyY2VIYW5kbGVT
b3VwLmNwcAppbmRleCBjNTgyZjAwLi44ZDI0Mjc0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvUmVzb3VyY2VIYW5kbGVTb3VwLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvUmVzb3VyY2VIYW5kbGVTb3VwLmNwcApA
QCAtMTQ3LDYgKzE0NywxNiBAQCBwdWJsaWM6CiAgICAgICAgIGRpZEZpbmlzaExvYWRpbmcoaGFu
ZGxlLCAwKTsKICAgICB9CiAKKyAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZUF1dGhlbnRpY2F0
aW9uQ2hhbGxlbmdlKFJlc291cmNlSGFuZGxlKiwgY29uc3QgQXV0aGVudGljYXRpb25DaGFsbGVu
Z2UmIGNoYWxsZW5nZSkKKyAgICB7CisjaWYgUExBVEZPUk0oRUZMKQorICAgICAgICAvLyBBdXRo
ZW50aWNhdGlvbiBpcyBub3QgaGFuZGxlZCBmb3Igc3luY2hyb25vdXMgWE1MSFRUUFJlcXVlc3Rz
LgorICAgICAgICBjaGFsbGVuZ2UuYXV0aGVudGljYXRpb25DbGllbnQoKS0+cmVjZWl2ZWRSZXF1
ZXN0VG9Db250aW51ZVdpdGhvdXRDcmVkZW50aWFsKGNoYWxsZW5nZSk7CisjZWxzZQorICAgICAg
ICBVTlVTRURfUEFSQU0oY2hhbGxlbmdlKTsKKyNlbmRpZgorICAgIH0KKwogICAgIHZvaWQgcnVu
KCkKICAgICB7CiAgICAgICAgIGlmICghbV9maW5pc2hlZCkKQEAgLTg2MCw2ICs4NzAsNTIgQEAg
dm9pZCBSZXNvdXJjZUhhbmRsZTo6ZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKGNv
bnN0IEF1dGhlbnRpY2F0aW9uQ2hhbGwKIHZvaWQgUmVzb3VyY2VIYW5kbGU6OnJlY2VpdmVkUmVx
dWVzdFRvQ29udGludWVXaXRob3V0Q3JlZGVudGlhbChjb25zdCBBdXRoZW50aWNhdGlvbkNoYWxs
ZW5nZSYpCiB7CiB9CisKKyNlbGlmIFBMQVRGT1JNKEVGTCkKK3ZvaWQgUmVzb3VyY2VIYW5kbGU6
OmRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShjb25zdCBBdXRoZW50aWNhdGlvbkNo
YWxsZW5nZSYgY2hhbGxlbmdlKQoreworICAgIEFTU0VSVChkLT5tX2N1cnJlbnRXZWJDaGFsbGVu
Z2UuaXNOdWxsKCkpOworICAgIGQtPm1fY3VycmVudFdlYkNoYWxsZW5nZSA9IGNoYWxsZW5nZTsK
KworICAgIGlmIChjbGllbnQoKSkgeworICAgICAgICBBU1NFUlQoY2hhbGxlbmdlLnNvdXBTZXNz
aW9uKCkpOworICAgICAgICBBU1NFUlQoY2hhbGxlbmdlLnNvdXBNZXNzYWdlKCkpOworICAgICAg
ICBzb3VwX3Nlc3Npb25fcGF1c2VfbWVzc2FnZShjaGFsbGVuZ2Uuc291cFNlc3Npb24oKSwgY2hh
bGxlbmdlLnNvdXBNZXNzYWdlKCkpOworICAgICAgICBjbGllbnQoKS0+ZGlkUmVjZWl2ZUF1dGhl
bnRpY2F0aW9uQ2hhbGxlbmdlKHRoaXMsIGNoYWxsZW5nZSk7CisgICAgfQorfQorCit2b2lkIFJl
c291cmNlSGFuZGxlOjpyZWNlaXZlZFJlcXVlc3RUb0NvbnRpbnVlV2l0aG91dENyZWRlbnRpYWwo
Y29uc3QgQXV0aGVudGljYXRpb25DaGFsbGVuZ2UmIGNoYWxsZW5nZSkKK3sKKyAgICBBU1NFUlQo
IWNoYWxsZW5nZS5pc051bGwoKSk7CisKKyAgICBzb3VwX3Nlc3Npb25fdW5wYXVzZV9tZXNzYWdl
KGNoYWxsZW5nZS5zb3VwU2Vzc2lvbigpLCBjaGFsbGVuZ2Uuc291cE1lc3NhZ2UoKSk7CisKKyAg
ICBjbGVhckF1dGhlbnRpY2F0aW9uKCk7Cit9CisKK3ZvaWQgUmVzb3VyY2VIYW5kbGU6OnJlY2Vp
dmVkQ3JlZGVudGlhbChjb25zdCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYgY2hhbGxlbmdlLCBj
b25zdCBDcmVkZW50aWFsJiBjcmVkZW50aWFsKQoreworICAgIEFTU0VSVCghY2hhbGxlbmdlLmlz
TnVsbCgpKTsKKworICAgIEFTU0VSVChjaGFsbGVuZ2Uuc291cFNlc3Npb24oKSk7CisgICAgQVNT
RVJUKGNoYWxsZW5nZS5zb3VwTWVzc2FnZSgpKTsKKyAgICBzb3VwX2F1dGhfYXV0aGVudGljYXRl
KGNoYWxsZW5nZS5zb3VwQXV0aCgpLCBjcmVkZW50aWFsLnVzZXIoKS51dGY4KCkuZGF0YSgpLCBj
cmVkZW50aWFsLnBhc3N3b3JkKCkudXRmOCgpLmRhdGEoKSk7CisgICAgc291cF9zZXNzaW9uX3Vu
cGF1c2VfbWVzc2FnZShjaGFsbGVuZ2Uuc291cFNlc3Npb24oKSwgY2hhbGxlbmdlLnNvdXBNZXNz
YWdlKCkpOworCisgICAgY2xlYXJBdXRoZW50aWNhdGlvbigpOworfQorCit2b2lkIFJlc291cmNl
SGFuZGxlOjpyZWNlaXZlZENhbmNlbGxhdGlvbihjb25zdCBBdXRoZW50aWNhdGlvbkNoYWxsZW5n
ZSYgY2hhbGxlbmdlKQoreworICAgIEFTU0VSVCghY2hhbGxlbmdlLmlzTnVsbCgpKTsKKworICAg
IEFTU0VSVChjaGFsbGVuZ2Uuc291cFNlc3Npb24oKSk7CisgICAgQVNTRVJUKGNoYWxsZW5nZS5z
b3VwTWVzc2FnZSgpKTsKKyAgICBzb3VwX3Nlc3Npb25fdW5wYXVzZV9tZXNzYWdlKGNoYWxsZW5n
ZS5zb3VwU2Vzc2lvbigpLCBjaGFsbGVuZ2Uuc291cE1lc3NhZ2UoKSk7CisKKyAgICBjbGVhckF1
dGhlbnRpY2F0aW9uKCk7Cit9CiAjZW5kaWYKIAogc3RhdGljIGJvb2wgd2FpdGluZ1RvU2VuZFJl
cXVlc3QoUmVzb3VyY2VIYW5kbGUqIGhhbmRsZSkKQEAgLTEwMTUsNyArMTA3MSw3IEBAIHN0YXRp
YyBnYm9vbGVhbiByZXF1ZXN0VGltZW91dENhbGxiYWNrKGdwb2ludGVyIGRhdGEpCiB9CiAKICNp
ZiBQTEFURk9STShHVEspCi1zdGF0aWMgdm9pZCBhdXRoZW5pY2F0ZUNhbGxiYWNrKFNvdXBTZXNz
aW9uKiBzZXNzaW9uLCBTb3VwTWVzc2FnZSogc291cE1lc3NhZ2UsIFNvdXBBdXRoKiBzb3VwQXV0
aCwgZ2Jvb2xlYW4gcmV0cnlpbmcpCitzdGF0aWMgdm9pZCBhdXRoZW50aWNhdGVDYWxsYmFjayhT
b3VwU2Vzc2lvbiogc2Vzc2lvbiwgU291cE1lc3NhZ2UqIHNvdXBNZXNzYWdlLCBTb3VwQXV0aCog
c291cEF1dGgsIGdib29sZWFuIHJldHJ5aW5nKQogewogICAgIFJlZlB0cjxSZXNvdXJjZUhhbmRs
ZT4gaGFuZGxlID0gc3RhdGljX2Nhc3Q8UmVzb3VyY2VIYW5kbGUqPihnX29iamVjdF9nZXRfZGF0
YShHX09CSkVDVChzb3VwTWVzc2FnZSksICJoYW5kbGUiKSk7CiAgICAgaWYgKCFoYW5kbGUpCkBA
IC0xMDI1LDYgKzEwODEsMTYgQEAgc3RhdGljIHZvaWQgYXV0aGVuaWNhdGVDYWxsYmFjayhTb3Vw
U2Vzc2lvbiogc2Vzc2lvbiwgU291cE1lc3NhZ2UqIHNvdXBNZXNzYWdlLAogICAgIC8vIHJlc3Bv
bmQgdG8gdGhlIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlIC0tIGluc3RlYWQgZGVhbGluZyB3aXRo
IHRoZSBTb3VwIG9iamVjdHMgZGlyZWN0bHkuCiAgICAgaGFuZGxlLT5kaWRSZWNlaXZlQXV0aGVu
dGljYXRpb25DaGFsbGVuZ2UoQXV0aGVudGljYXRpb25DaGFsbGVuZ2Uoc2Vzc2lvbiwgc291cE1l
c3NhZ2UsIHNvdXBBdXRoLCByZXRyeWluZywgMCkpOwogfQorCisjZWxpZiBQTEFURk9STShFRkwp
CitzdGF0aWMgdm9pZCBhdXRoZW50aWNhdGVDYWxsYmFjayhTb3VwU2Vzc2lvbiogc2Vzc2lvbiwg
U291cE1lc3NhZ2UqIHNvdXBNZXNzYWdlLCBTb3VwQXV0aCogc291cEF1dGgsIGdib29sZWFuIHJl
dHJ5aW5nKQoreworICAgIFJlZlB0cjxSZXNvdXJjZUhhbmRsZT4gaGFuZGxlID0gc3RhdGljX2Nh
c3Q8UmVzb3VyY2VIYW5kbGUqPihnX29iamVjdF9nZXRfZGF0YShHX09CSkVDVChzb3VwTWVzc2Fn
ZSksICJoYW5kbGUiKSk7CisgICAgaWYgKCFoYW5kbGUpCisgICAgICAgIHJldHVybjsKKworICAg
IGhhbmRsZS0+ZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKEF1dGhlbnRpY2F0aW9u
Q2hhbGxlbmdlKHNlc3Npb24sIHNvdXBNZXNzYWdlLCBzb3VwQXV0aCwgcmV0cnlpbmcsIGhhbmRs
ZS5nZXQoKSkpOworfQogI2VuZGlmCiAKIFNvdXBTZXNzaW9uKiBSZXNvdXJjZUhhbmRsZTo6ZGVm
YXVsdFNlc3Npb24oKQpAQCAtMTA0Nyw4ICsxMTEzLDggQEAgU291cFNlc3Npb24qIFJlc291cmNl
SGFuZGxlOjpkZWZhdWx0U2Vzc2lvbigpCiAgICAgICAgICAgICAgICAgICAgICBTT1VQX1NFU1NJ
T05fQUREX0ZFQVRVUkVfQllfVFlQRSwgU09VUF9UWVBFX1BST1hZX1JFU09MVkVSX0RFRkFVTFQs
CiAgICAgICAgICAgICAgICAgICAgICBTT1VQX1NFU1NJT05fVVNFX1RIUkVBRF9DT05URVhULCBU
UlVFLAogICAgICAgICAgICAgICAgICAgICAgTlVMTCk7Ci0jaWYgUExBVEZPUk0oR1RLKQotICAg
ICAgICBnX3NpZ25hbF9jb25uZWN0KHNlc3Npb24sICJhdXRoZW50aWNhdGUiLCBHX0NBTExCQUNL
KGF1dGhlbmljYXRlQ2FsbGJhY2spLCAwKTsKKyNpZiBQTEFURk9STShHVEspIHx8IFBMQVRGT1JN
KEVGTCkKKyAgICAgICAgZ19zaWduYWxfY29ubmVjdChzZXNzaW9uLCAiYXV0aGVudGljYXRlIiwg
R19DQUxMQkFDSyhhdXRoZW50aWNhdGVDYWxsYmFjayksIDApOwogI2VuZGlmCiAKICNpZiBFTkFC
TEUoV0VCX1RJTUlORykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCAxN2E2ODdiLi5hZjlhMDE3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsNTIgQEAKKzIwMTItMTEtMDEgIENocmlzdG9waGUgRHVtZXogIDxjaHJpc3Rv
cGhlLmR1bWV6QGludGVsLmNvbT4KKworICAgICAgICBbRUZMXVtXSzJdIEFkZCBFd2tfQXV0aF9S
ZXF1ZXN0IEFQSQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTAwODU4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgQWRkIEV3a19BdXRoX1JlcXVlc3QgQVBJIGZvciB0aGUgY2xpZW50IHRvIGhhbmRsZQorICAg
ICAgICBIVFRQIGF1dGhlbnRpY2F0aW9uLgorCisgICAgICAgICogUGxhdGZvcm1FZmwuY21ha2U6
CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9lZmwvRVdlYktpdDIuaDoKKyAgICAgICAgKiBVSVBy
b2Nlc3MvQVBJL2VmbC9Fd2tWaWV3Q2FsbGJhY2tzLmg6CisgICAgICAgIChFd2tWaWV3Q2FsbGJh
Y2tzKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC9ld2tfYXV0aF9yZXF1ZXN0LmNwcDog
QWRkZWQuCisgICAgICAgIChFd2tfQXV0aF9SZXF1ZXN0OjpFd2tfQXV0aF9SZXF1ZXN0KToKKyAg
ICAgICAgKEV3a19BdXRoX1JlcXVlc3Q6On5Fd2tfQXV0aF9SZXF1ZXN0KToKKyAgICAgICAgKEV3
a19BdXRoX1JlcXVlc3Q6OnN1Z2dlc3RlZFVzZXJuYW1lKToKKyAgICAgICAgKEV3a19BdXRoX1Jl
cXVlc3Q6OnJlYWxtKToKKyAgICAgICAgKEV3a19BdXRoX1JlcXVlc3Q6Omhvc3QpOgorICAgICAg
ICAoRXdrX0F1dGhfUmVxdWVzdDo6Y2FuY2VsKToKKyAgICAgICAgKEV3a19BdXRoX1JlcXVlc3Q6
OmF1dGhlbnRpY2F0ZSk6CisgICAgICAgIChFd2tfQXV0aF9SZXF1ZXN0Ojppc1JldHJ5aW5nKToK
KyAgICAgICAgKGV3a19hdXRoX3JlcXVlc3RfcmVmKToKKyAgICAgICAgKGV3a19hdXRoX3JlcXVl
c3RfdW5yZWYpOgorICAgICAgICAoZXdrX2F1dGhfcmVxdWVzdF9zdWdnZXN0ZWRfdXNlcm5hbWVf
Z2V0KToKKyAgICAgICAgKGV3a19hdXRoX3JlcXVlc3RfY2FuY2VsKToKKyAgICAgICAgKGV3a19h
dXRoX3JlcXVlc3RfYXV0aGVudGljYXRlKToKKyAgICAgICAgKGV3a19hdXRoX3JlcXVlc3RfcmV0
cnlpbmdfZ2V0KToKKyAgICAgICAgKGV3a19hdXRoX3JlcXVlc3RfcmVhbG1fZ2V0KToKKyAgICAg
ICAgKGV3a19hdXRoX3JlcXVlc3RfaG9zdF9nZXQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkv
ZWZsL2V3a19hdXRoX3JlcXVlc3QuaDogQWRkZWQuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9l
ZmwvZXdrX2F1dGhfcmVxdWVzdF9wcml2YXRlLmg6IEFkZGVkLgorICAgICAgICAoV2ViS2l0KToK
KyAgICAgICAgKEV3a19BdXRoX1JlcXVlc3QpOgorICAgICAgICAoRXdrX0F1dGhfUmVxdWVzdDo6
Y3JlYXRlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlldy5oOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9BUEkvZWZsL3Rlc3RzL3Rlc3RfZXdrMl9hdXRoX3JlcXVlc3QuY3BwOiBB
ZGRlZCBjb3JyZXNwb25kaW5nIEFQSSB0ZXN0cy4KKyAgICAgICAgKHNlcnZlckNhbGxiYWNrKToK
KyAgICAgICAgKG9uQXV0aGVudGljYXRpb25SZXF1ZXN0KToKKyAgICAgICAgKFRFU1RfRik6Cisg
ICAgICAgIChvblJlc291cmNlTG9hZFJlc3BvbnNlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvZWZs
L1BhZ2VMb2FkQ2xpZW50RWZsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UGFnZUxvYWRDbGllbnRF
Zmw6OmRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZUluRnJhbWUpOgorICAgICAgICAo
V2ViS2l0KToKKyAgICAgICAgKFdlYktpdDo6UGFnZUxvYWRDbGllbnRFZmw6OlBhZ2VMb2FkQ2xp
ZW50RWZsKToKKyAgICAgICAgKiBVSVByb2Nlc3MvZWZsL1BhZ2VMb2FkQ2xpZW50RWZsLmg6Cisg
ICAgICAgIChQYWdlTG9hZENsaWVudEVmbCk6CisKIDIwMTItMTEtMDEgIFl1bmkgSmVvbmcgIDx5
aG5ldC5qdW5nQHNhbXN1bmcuY29tPgogCiAgICAgICAgIFtXSzJdIEFkZCBBUElzIHRvIGdldC9z
ZXQgZW5jb2RpbmcgZGV0ZWN0b3IKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3Jt
RWZsLmNtYWtlIGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm1FZmwuY21ha2UKaW5kZXggZjMyNzEw
Yy4uZjFhZTg1MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm1FZmwuY21ha2UK
KysrIGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm1FZmwuY21ha2UKQEAgLTQ0LDYgKzQ0LDcgQEAg
TElTVChBUFBFTkQgV2ViS2l0Ml9TT1VSQ0VTCiAgICAgVUlQcm9jZXNzL0FQSS9lZmwvRXdrVmll
d0ltcGwuY3BwCiAgICAgVUlQcm9jZXNzL0FQSS9lZmwvRXZhc0dMQ29udGV4dC5jcHAKICAgICBV
SVByb2Nlc3MvQVBJL2VmbC9FdmFzR0xTdXJmYWNlLmNwcAorICAgIFVJUHJvY2Vzcy9BUEkvZWZs
L2V3a19hdXRoX3JlcXVlc3QuY3BwCiAgICAgVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2JhY2tfZm9y
d2FyZF9saXN0LmNwcAogICAgIFVJUHJvY2Vzcy9BUEkvZWZsL2V3a19iYWNrX2ZvcndhcmRfbGlz
dF9pdGVtLmNwcAogICAgIFVJUHJvY2Vzcy9BUEkvZWZsL2V3a19jb2xvcl9waWNrZXIuY3BwCkBA
IC0yNDQsNiArMjQ1LDcgQEAgU0VUKEZvcndhcmRpbmdOZXR3b3JrSGVhZGVyc19OQU1FIGZvcndh
cmRpbmctaGVhZGVyU291cCkKIENPTkZJR1VSRV9GSUxFKGVmbC9ld2Via2l0Mi5wYy5pbiAke0NN
QUtFX0JJTkFSWV9ESVJ9L1dlYktpdDIvZWZsL2V3ZWJraXQyLnBjIEBPTkxZKQogU0VUIChFV2Vi
S2l0Ml9IRUFERVJTCiAgICAgIiR7Q01BS0VfQ1VSUkVOVF9TT1VSQ0VfRElSfS9VSVByb2Nlc3Mv
QVBJL2VmbC9FV2ViS2l0Mi5oIgorICAgICIke0NNQUtFX0NVUlJFTlRfU09VUkNFX0RJUn0vVUlQ
cm9jZXNzL0FQSS9lZmwvZXdrX2F1dGhfcmVxdWVzdC5oIgogICAgICIke0NNQUtFX0NVUlJFTlRf
U09VUkNFX0RJUn0vVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2JhY2tfZm9yd2FyZF9saXN0LmgiCiAg
ICAgIiR7Q01BS0VfQ1VSUkVOVF9TT1VSQ0VfRElSfS9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfYmFj
a19mb3J3YXJkX2xpc3RfaXRlbS5oIgogICAgICIke0NNQUtFX0NVUlJFTlRfU09VUkNFX0RJUn0v
VUlQcm9jZXNzL0FQSS9lZmwvZXdrX2NvbG9yX3BpY2tlci5oIgpAQCAtMzQ5LDYgKzM1MSw3IEBA
IFRBUkdFVF9MSU5LX0xJQlJBUklFUyhld2syVW5pdFRlc3RVdGlscyAke0VXSzJVbml0VGVzdHNf
TElCUkFSSUVTfSkKICMgVGhlICJld2siIG9uIHRoZSB0ZXN0IG5hbWUgbmVlZHMgdG8gYmUgc3Vm
Zml4ZWQgd2l0aCAiMiIsIG90aGVyd2lzZSBpdAogIyB3aWxsIGNsYXNoIHdpdGggdGVzdHMgZnJv
bSB0aGUgV2ViS2l0IDEgdGVzdCBzdWl0ZS4KIFNFVChFV0syVW5pdFRlc3RzX0JJTkFSSUVTCisg
ICAgdGVzdF9ld2syX2F1dGhfcmVxdWVzdAogICAgIHRlc3RfZXdrMl9iYWNrX2ZvcndhcmRfbGlz
dAogICAgIHRlc3RfZXdrMl9jb2xvcl9waWNrZXIKICAgICB0ZXN0X2V3azJfY29udGV4dApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvRVdlYktpdDIuaCBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL0VXZWJLaXQyLmgKaW5kZXggZmM3YmFjMS4u
M2Y3NmNmOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvRVdl
YktpdDIuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9FV2ViS2l0Mi5o
CkBAIC0yOCw2ICsyOCw3IEBACiAjaWZuZGVmIEVXZWJLaXQyX2gKICNkZWZpbmUgRVdlYktpdDJf
aAogCisjaW5jbHVkZSAiZXdrX2F1dGhfcmVxdWVzdC5oIgogI2luY2x1ZGUgImV3a19iYWNrX2Zv
cndhcmRfbGlzdC5oIgogI2luY2x1ZGUgImV3a19iYWNrX2ZvcndhcmRfbGlzdF9pdGVtLmgiCiAj
aW5jbHVkZSAiZXdrX2NvbG9yX3BpY2tlci5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9lZmwvRXdrVmlld0NhbGxiYWNrcy5oIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9lZmwvRXdrVmlld0NhbGxiYWNrcy5oCmluZGV4IDU2ZDM1N2ZhLi43MGIyN2M3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9Fd2tWaWV3Q2Fs
bGJhY2tzLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvRXdrVmlld0Nh
bGxiYWNrcy5oCkBAIC0zMSw2ICszMSw3IEBACiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5o
PgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCitzdHJ1Y3QgRXdrX0F1dGhfUmVx
dWVzdDsKIHN0cnVjdCBFd2tfRG93bmxvYWRfSm9iOwogc3RydWN0IEV3a19Eb3dubG9hZF9Kb2Jf
RXJyb3I7CiBzdHJ1Y3QgRXdrX0ZpbGVfQ2hvb3Nlcl9SZXF1ZXN0OwpAQCAtNTEsNiArNTIsNyBA
QCBzdHJ1Y3QgRXdrX0ludGVudF9TZXJ2aWNlOwogbmFtZXNwYWNlIEV3a1ZpZXdDYWxsYmFja3Mg
ewogCiBlbnVtIENhbGxiYWNrVHlwZSB7CisgICAgQXV0aGVudGljYXRpb25SZXF1ZXN0LAogICAg
IEJhY2tGb3J3YXJkTGlzdENoYW5nZSwKICAgICBEb3dubG9hZEpvYkNhbmNlbGxlZCwKICAgICBE
b3dubG9hZEpvYkZhaWxlZCwKQEAgLTE0Niw2ICsxNDgsNyBAQCBzdHJ1Y3QgQ2FsbEJhY2tJbmZv
PGNhbGxiYWNrVHlwZT4geyAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKIH0KIAogLy8gTm90
ZTogdHlwZSAndm9pZCcgbWVhbnMgdGhhdCBubyBhcmd1bWVudHMgYXJlIGV4cGVjdGVkLgorREVD
TEFSRV9FV0tfVklFV19DQUxMQkFDSyhBdXRoZW50aWNhdGlvblJlcXVlc3QsICJhdXRoZW50aWNh
dGlvbixyZXF1ZXN0IiwgRXdrX0F1dGhfUmVxdWVzdCk7CiBERUNMQVJFX0VXS19WSUVXX0NBTExC
QUNLKEJhY2tGb3J3YXJkTGlzdENoYW5nZSwgImJhY2ssZm9yd2FyZCxsaXN0LGNoYW5nZWQiLCB2
b2lkKTsKIERFQ0xBUkVfRVdLX1ZJRVdfQ0FMTEJBQ0soRG93bmxvYWRKb2JDYW5jZWxsZWQsICJk
b3dubG9hZCxjYW5jZWxsZWQiLCBFd2tfRG93bmxvYWRfSm9iKTsKIERFQ0xBUkVfRVdLX1ZJRVdf
Q0FMTEJBQ0soRG93bmxvYWRKb2JGYWlsZWQsICJkb3dubG9hZCxmYWlsZWQiLCBFd2tfRG93bmxv
YWRfSm9iX0Vycm9yKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
ZWZsL2V3a19hdXRoX3JlcXVlc3QuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9l
ZmwvZXdrX2F1dGhfcmVxdWVzdC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MC4uY2E5OWUyYQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvZWZsL2V3a19hdXRoX3JlcXVlc3QuY3BwCkBAIC0wLDAgKzEsMTg3IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDEyIEludGVsIENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiZXdrX2F1dGhfcmVxdWVz
dC5oIgorCisjaW5jbHVkZSAiQXV0aGVudGljYXRpb25DaGFsbGVuZ2VQcm94eS5oIgorI2luY2x1
ZGUgIkF1dGhlbnRpY2F0aW9uRGVjaXNpb25MaXN0ZW5lci5oIgorI2luY2x1ZGUgIldlYkNyZWRl
bnRpYWwuaCIKKyNpbmNsdWRlICJXZWJQcm90ZWN0aW9uU3BhY2UuaCIKKyNpbmNsdWRlICJXZWJT
dHJpbmcuaCIKKyNpbmNsdWRlICJld2tfYXV0aF9yZXF1ZXN0X3ByaXZhdGUuaCIKKyNpbmNsdWRl
IDx3dGYvdGV4dC9DU3RyaW5nLmg+CisKK3VzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7Cit1c2luZyBu
YW1lc3BhY2UgV2ViQ29yZTsKKworRXdrX0F1dGhfUmVxdWVzdDo6RXdrX0F1dGhfUmVxdWVzdChB
dXRoZW50aWNhdGlvbkNoYWxsZW5nZVByb3h5KiBhdXRoZW50aWNhdGlvbkNoYWxsZW5nZSkKKyAg
ICA6IG1fYXV0aGVudGljYXRpb25DaGFsbGVuZ2UoYXV0aGVudGljYXRpb25DaGFsbGVuZ2UpCisg
ICAgLCBtX3dhc0hhbmRsZWQoZmFsc2UpCit7CisgICAgQVNTRVJUKG1fYXV0aGVudGljYXRpb25D
aGFsbGVuZ2UpOworfQorCitFd2tfQXV0aF9SZXF1ZXN0Ojp+RXdrX0F1dGhfUmVxdWVzdCgpCit7
CisgICAgaWYgKCFtX3dhc0hhbmRsZWQpCisgICAgICAgIGNhbmNlbCgpOworfQorCitjb25zdCBj
aGFyKiBFd2tfQXV0aF9SZXF1ZXN0OjpzdWdnZXN0ZWRVc2VybmFtZSgpIGNvbnN0Cit7CisgICAg
aWYgKCFtX3N1Z2dlc3RlZFVzZXJuYW1lKSB7CisgICAgICAgIFdlYkNyZWRlbnRpYWwqIGNyZWRl
bnRpYWwgPSBtX2F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLT5wcm9wb3NlZENyZWRlbnRpYWwoKTsK
KyAgICAgICAgQVNTRVJUKGNyZWRlbnRpYWwpOworCisgICAgICAgIGNvbnN0IFN0cmluZyYgc3Vn
Z2VzdGVkVXNlcm5hbWUgPSBjcmVkZW50aWFsLT51c2VyKCk7CisgICAgICAgIGlmIChzdWdnZXN0
ZWRVc2VybmFtZS5pc0VtcHR5KCkpCisgICAgICAgICAgICByZXR1cm4gMDsKKworICAgICAgICBt
X3N1Z2dlc3RlZFVzZXJuYW1lID0gc3VnZ2VzdGVkVXNlcm5hbWUudXRmOCgpLmRhdGEoKTsKKyAg
ICB9CisKKyAgICByZXR1cm4gbV9zdWdnZXN0ZWRVc2VybmFtZTsKK30KKworY29uc3QgY2hhciog
RXdrX0F1dGhfUmVxdWVzdDo6cmVhbG0oKSBjb25zdAoreworICAgIGlmICghbV9yZWFsbSkgewor
ICAgICAgICBXZWJQcm90ZWN0aW9uU3BhY2UqIHByb3RlY3Rpb25TcGFjZSA9IG1fYXV0aGVudGlj
YXRpb25DaGFsbGVuZ2UtPnByb3RlY3Rpb25TcGFjZSgpOworICAgICAgICBBU1NFUlQocHJvdGVj
dGlvblNwYWNlKTsKKworICAgICAgICBjb25zdCBTdHJpbmcmIHJlYWxtID0gcHJvdGVjdGlvblNw
YWNlLT5yZWFsbSgpOworICAgICAgICBpZiAocmVhbG0uaXNFbXB0eSgpKQorICAgICAgICAgICAg
cmV0dXJuIDA7CisKKyAgICAgICAgbV9yZWFsbSA9IHJlYWxtLnV0ZjgoKS5kYXRhKCk7CisgICAg
fQorCisgICAgcmV0dXJuIG1fcmVhbG07Cit9CisKK2NvbnN0IGNoYXIqIEV3a19BdXRoX1JlcXVl
c3Q6Omhvc3QoKSBjb25zdAoreworICAgIGlmICghbV9ob3N0KSB7CisgICAgICAgIFdlYlByb3Rl
Y3Rpb25TcGFjZSogcHJvdGVjdGlvblNwYWNlID0gbV9hdXRoZW50aWNhdGlvbkNoYWxsZW5nZS0+
cHJvdGVjdGlvblNwYWNlKCk7CisgICAgICAgIEFTU0VSVChwcm90ZWN0aW9uU3BhY2UpOworCisg
ICAgICAgIGNvbnN0IFN0cmluZyYgaG9zdCA9IHByb3RlY3Rpb25TcGFjZS0+aG9zdCgpOworICAg
ICAgICBpZiAoaG9zdC5pc0VtcHR5KCkpCisgICAgICAgICAgICByZXR1cm4gMDsKKworICAgICAg
ICBtX2hvc3QgPSBob3N0LnV0ZjgoKS5kYXRhKCk7CisgICAgfQorCisgICAgcmV0dXJuIG1faG9z
dDsKK30KKworYm9vbCBFd2tfQXV0aF9SZXF1ZXN0OjpjYW5jZWwoKQoreworICAgIGlmIChtX3dh
c0hhbmRsZWQpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIG1fd2FzSGFuZGxlZCA9IHRy
dWU7CisgICAgbV9hdXRoZW50aWNhdGlvbkNoYWxsZW5nZS0+Y2FuY2VsKCk7CisKKyAgICByZXR1
cm4gdHJ1ZTsKK30KKworYm9vbCBFd2tfQXV0aF9SZXF1ZXN0OjphdXRoZW50aWNhdGUoY29uc3Qg
U3RyaW5nJiB1c2VybmFtZSwgY29uc3QgU3RyaW5nJiBwYXNzd29yZCkKK3sKKyAgICBpZiAobV93
YXNIYW5kbGVkKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBtX3dhc0hhbmRsZWQgPSB0
cnVlOworICAgIFJlZlB0cjxXZWJDcmVkZW50aWFsPiBjcmVkZW50aWFsID0gV2ViQ3JlZGVudGlh
bDo6Y3JlYXRlKFdlYlN0cmluZzo6Y3JlYXRlKHVzZXJuYW1lKS5nZXQoKSwgV2ViU3RyaW5nOjpj
cmVhdGUocGFzc3dvcmQpLmdldCgpLCBDcmVkZW50aWFsUGVyc2lzdGVuY2VGb3JTZXNzaW9uKTsK
KyAgICBtX2F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLT51c2VDcmVkZW50aWFsKGNyZWRlbnRpYWwu
Z2V0KCkpOworCisgICAgcmV0dXJuIHRydWU7Cit9CisKK2Jvb2wgRXdrX0F1dGhfUmVxdWVzdDo6
aXNSZXRyeWluZygpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fYXV0aGVudGljYXRpb25DaGFsbGVu
Z2UtPnByZXZpb3VzRmFpbHVyZUNvdW50KCkgPiAwOworfQorCitFd2tfQXV0aF9SZXF1ZXN0KiBl
d2tfYXV0aF9yZXF1ZXN0X3JlZihFd2tfQXV0aF9SZXF1ZXN0KiByZXF1ZXN0KQoreworICAgIEVJ
TkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChyZXF1ZXN0LCAwKTsKKworICAgIHJlcXVlc3Qt
PnJlZigpOworCisgICAgcmV0dXJuIHJlcXVlc3Q7Cit9CisKK3ZvaWQgZXdrX2F1dGhfcmVxdWVz
dF91bnJlZihFd2tfQXV0aF9SZXF1ZXN0KiByZXF1ZXN0KQoreworICAgIEVJTkFfU0FGRVRZX09O
X05VTExfUkVUVVJOKHJlcXVlc3QpOworCisgICAgcmVxdWVzdC0+ZGVyZWYoKTsKK30KKworY29u
c3QgY2hhciogZXdrX2F1dGhfcmVxdWVzdF9zdWdnZXN0ZWRfdXNlcm5hbWVfZ2V0KGNvbnN0IEV3
a19BdXRoX1JlcXVlc3QqIHJlcXVlc3QpCit7CisgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRV
Uk5fVkFMKHJlcXVlc3QsIDApOworCisgICAgcmV0dXJuIHJlcXVlc3QtPnN1Z2dlc3RlZFVzZXJu
YW1lKCk7Cit9CisKK0VpbmFfQm9vbCBld2tfYXV0aF9yZXF1ZXN0X2NhbmNlbChFd2tfQXV0aF9S
ZXF1ZXN0KiByZXF1ZXN0KQoreworICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChy
ZXF1ZXN0LCBmYWxzZSk7CisKKyAgICByZXR1cm4gcmVxdWVzdC0+Y2FuY2VsKCk7Cit9CisKK0Vp
bmFfQm9vbCBld2tfYXV0aF9yZXF1ZXN0X2F1dGhlbnRpY2F0ZShFd2tfQXV0aF9SZXF1ZXN0KiBy
ZXF1ZXN0LCBjb25zdCBjaGFyKiB1c2VybmFtZSwgY29uc3QgY2hhciogcGFzc3dvcmQpCit7Cisg
ICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKHJlcXVlc3QsIGZhbHNlKTsKKyAgICBF
SU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwodXNlcm5hbWUsIGZhbHNlKTsKKyAgICBFSU5B
X1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwocGFzc3dvcmQsIGZhbHNlKTsKKworICAgIHJldHVy
biByZXF1ZXN0LT5hdXRoZW50aWNhdGUoU3RyaW5nOjpmcm9tVVRGOCh1c2VybmFtZSksIFN0cmlu
Zzo6ZnJvbVVURjgocGFzc3dvcmQpKTsKK30KKworRWluYV9Cb29sIGV3a19hdXRoX3JlcXVlc3Rf
cmV0cnlpbmdfZ2V0KGNvbnN0IEV3a19BdXRoX1JlcXVlc3QqIHJlcXVlc3QpCit7CisgICAgRUlO
QV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKHJlcXVlc3QsIGZhbHNlKTsKKworICAgIHJldHVy
biByZXF1ZXN0LT5pc1JldHJ5aW5nKCk7Cit9CisKK2NvbnN0IGNoYXIqIGV3a19hdXRoX3JlcXVl
c3RfcmVhbG1fZ2V0KGNvbnN0IEV3a19BdXRoX1JlcXVlc3QqIHJlcXVlc3QpCit7CisgICAgRUlO
QV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKHJlcXVlc3QsIDApOworCisgICAgcmV0dXJuIHJl
cXVlc3QtPnJlYWxtKCk7Cit9CisKK2NvbnN0IGNoYXIqIGV3a19hdXRoX3JlcXVlc3RfaG9zdF9n
ZXQoY29uc3QgRXdrX0F1dGhfUmVxdWVzdCogcmVxdWVzdCkKK3sKKyAgICBFSU5BX1NBRkVUWV9P
Tl9OVUxMX1JFVFVSTl9WQUwocmVxdWVzdCwgMCk7CisKKyAgICByZXR1cm4gcmVxdWVzdC0+aG9z
dCgpOworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdr
X2F1dGhfcmVxdWVzdC5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2F1
dGhfcmVxdWVzdC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmViOTA4NjQK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tf
YXV0aF9yZXF1ZXN0LmgKQEAgLTAsMCArMSwxMzIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTIgSW50ZWwgQ29ycG9yYXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKy8q
KgorICogQGZpbGUgICAgZXdrX2F1dGhfcmVxdWVzdC5oCisgKiBAYnJpZWYgICBEZXNjcmliZXMg
dGhlIEV3ayBBdXRoZW50aWNhdGlvbiBSZXF1ZXN0IEFQSS4KKyAqLworCisjaWZuZGVmIGV3a19h
dXRoX3JlcXVlc3RfaAorI2RlZmluZSBld2tfYXV0aF9yZXF1ZXN0X2gKKworI2luY2x1ZGUgPEVp
bmEuaD4KKworI2lmZGVmIF9fY3BsdXNwbHVzCitleHRlcm4gIkMiIHsKKyNlbmRpZgorCisvKiog
Q3JlYXRlcyBhIHR5cGUgbmFtZSBmb3IgRXdrX0F1dGhfUmVxdWVzdCAqLwordHlwZWRlZiBzdHJ1
Y3QgRXdrX0F1dGhfUmVxdWVzdCBFd2tfQXV0aF9SZXF1ZXN0OworCisvKioKKyAqIEluY3JlYXNl
cyB0aGUgcmVmZXJlbmNlIGNvdW50IG9mIHRoZSBnaXZlbiBvYmplY3QuCisgKgorICogQHBhcmFt
IHJlcXVlc3QgdGhlIHJlcXVlc3Qgb2JqZWN0IHRvIGluY3JlYXNlIHRoZSByZWZlcmVuY2UgY291
bnQKKyAqCisgKiBAcmV0dXJuIGEgcG9pbnRlciB0byB0aGUgb2JqZWN0IG9uIHN1Y2Nlc3MsIEBj
IE5VTEwgb3RoZXJ3aXNlCisgKi8KK0VBUEkgRXdrX0F1dGhfUmVxdWVzdCAqZXdrX2F1dGhfcmVx
dWVzdF9yZWYoRXdrX0F1dGhfUmVxdWVzdCAqcmVxdWVzdCk7CisKKy8qKgorICogRGVjcmVhc2Vz
IHRoZSByZWZlcmVuY2UgY291bnQgb2YgdGhlIGdpdmVuIG9iamVjdCwgcG9zc2libHkgZnJlZWlu
ZyBpdC4KKyAqCisgKiBXaGVuIHRoZSByZWZlcmVuY2UgY291bnQgcmVhY2hlcyAwLCB0aGUgcmVx
dWVzdCBpcyBmcmVlZAorICoKKyAqIEBwYXJhbSByZXF1ZXN0IHRoZSByZXF1ZXN0IG9iamVjdCB0
byBkZWNyZWFzZSB0aGUgcmVmZXJlbmNlIGNvdW50CisgKi8KK0VBUEkgdm9pZCBld2tfYXV0aF9y
ZXF1ZXN0X3VucmVmKEV3a19BdXRoX1JlcXVlc3QgKnJlcXVlc3QpOworCisvKioKKyAqIFF1ZXJp
ZXMgdGhlIHN1Z2dlc3RlZCB1c2VybmFtZSB0byBiZSB1c2VkIGZvciBhdXRoZW50aWNhdGluZy4K
KyAqCisgKiBAcGFyYW0gcmVxdWVzdCByZXF1ZXN0IG9iamVjdCB0byBxdWVyeQorICoKKyAqIEBy
ZXR1cm4gdGhlIHVzZXJuYW1lIHBvaW50ZXIsIHRoYXQgbWF5IGJlIEBjIE5VTEwuIFRoaXMgcG9p
bnRlciBpcworICogICAgICAgICBndWFyYW50ZWVkIHRvIGJlIGVpbmFfc3RyaW5nc2hhcmUsIHNv
IHdoZW5ldmVyIHBvc3NpYmxlCisgKiAgICAgICAgIHNhdmUgeW91cnNlbGYgc29tZSBjcHUgY3lj
bGVzIGFuZCB1c2UKKyAqICAgICAgICAgZWluYV9zdHJpbmdzaGFyZV9yZWYoKSBpbnN0ZWFkIG9m
IGVpbmFfc3RyaW5nc2hhcmVfYWRkKCkgb3IKKyAqICAgICAgICAgc3RyZHVwKCkKKyAqLworRUFQ
SSBjb25zdCBjaGFyICpld2tfYXV0aF9yZXF1ZXN0X3N1Z2dlc3RlZF91c2VybmFtZV9nZXQoY29u
c3QgRXdrX0F1dGhfUmVxdWVzdCAqcmVxdWVzdCk7CisKKy8qKgorICogUXVlcmllcyBpZiB0aGlz
IGFuIGF1dGhlbnRpY2F0aW9uIGF0dGVtcHQgcmV0cnlpbmcuCisgKgorICogQHBhcmFtIHJlcXVl
c3QgcmVxdWVzdCBvYmplY3QgdG8gcXVlcnkKKyAqCisgKiBAcmV0dXJuIEBjIEVJTkFfVFJVRSBp
ZiB0aGlzIGlzIG5vdCB0aGUgZmlyc3QgYXV0aGVudGljYXRpb24gYXR0ZW1wdAorICogICAgICAg
ICBhbmQgd2UgYXJlIHRyeWluZywgQGMgRUlOQV9GQUxTRSBvdGhlcndpc2UuCisgKi8KK0VBUEkg
RWluYV9Cb29sIGV3a19hdXRoX3JlcXVlc3RfcmV0cnlpbmdfZ2V0KGNvbnN0IEV3a19BdXRoX1Jl
cXVlc3QgKnJlcXVlc3QpOworCisvKioKKyAqIFF1ZXJpZXMgdGhlIGF1dGhlbnRpY2F0aW9uIHJl
YWxtLgorICoKKyAqIEBwYXJhbSByZXF1ZXN0IHJlcXVlc3Qgb2JqZWN0IHRvIHF1ZXJ5CisgKgor
ICogQHJldHVybiB0aGUgcmVhbG0gcG9pbnRlciwgdGhhdCBtYXkgYmUgQGMgTlVMTC4gVGhpcyBw
b2ludGVyIGlzCisgKiAgICAgICAgIGd1YXJhbnRlZWQgdG8gYmUgZWluYV9zdHJpbmdzaGFyZSwg
c28gd2hlbmV2ZXIgcG9zc2libGUKKyAqICAgICAgICAgc2F2ZSB5b3Vyc2VsZiBzb21lIGNwdSBj
eWNsZXMgYW5kIHVzZQorICogICAgICAgICBlaW5hX3N0cmluZ3NoYXJlX3JlZigpIGluc3RlYWQg
b2YgZWluYV9zdHJpbmdzaGFyZV9hZGQoKSBvcgorICogICAgICAgICBzdHJkdXAoKQorICovCitF
QVBJIGNvbnN0IGNoYXIgKmV3a19hdXRoX3JlcXVlc3RfcmVhbG1fZ2V0KGNvbnN0IEV3a19BdXRo
X1JlcXVlc3QgKnJlcXVlc3QpOworCisvKioKKyAqIFF1ZXJpZXMgdGhlIGhvc3QgcmVxdWlyaW5n
IHRoZSBhdXRoZW50aWNhdGlvbi4KKyAqCisgKiBAcGFyYW0gcmVxdWVzdCByZXF1ZXN0IG9iamVj
dCB0byBxdWVyeQorICoKKyAqIEByZXR1cm4gdGhlIGhvc3QgcG9pbnRlciwgdGhhdCBtYXkgYmUg
QGMgTlVMTC4gVGhpcyBwb2ludGVyIGlzCisgKiAgICAgICAgIGd1YXJhbnRlZWQgdG8gYmUgZWlu
YV9zdHJpbmdzaGFyZSwgc28gd2hlbmV2ZXIgcG9zc2libGUKKyAqICAgICAgICAgc2F2ZSB5b3Vy
c2VsZiBzb21lIGNwdSBjeWNsZXMgYW5kIHVzZQorICogICAgICAgICBlaW5hX3N0cmluZ3NoYXJl
X3JlZigpIGluc3RlYWQgb2YgZWluYV9zdHJpbmdzaGFyZV9hZGQoKSBvcgorICogICAgICAgICBz
dHJkdXAoKQorICovCitFQVBJIGNvbnN0IGNoYXIgKmV3a19hdXRoX3JlcXVlc3RfaG9zdF9nZXQo
Y29uc3QgRXdrX0F1dGhfUmVxdWVzdCAqcmVxdWVzdCk7CisKKy8qKgorICogQ2FuY2VscyB0aGUg
YXV0aGVudGljYXRpb24gcmVxdWVzdC4KKyAqCisgKiBAcGFyYW0gcmVxdWVzdCByZXF1ZXN0IG9i
amVjdCB0byBjYW5jZWwKKyAqCisgKiBAcmV0dXJuIEBjIEVJTkFfVFJVRSBpZiBzdWNjZXNzZnVs
LCBAYyBFSU5BX0ZBTFNFIG90aGVyd2lzZQorICovCitFQVBJIEVpbmFfQm9vbCBld2tfYXV0aF9y
ZXF1ZXN0X2NhbmNlbChFd2tfQXV0aF9SZXF1ZXN0ICpyZXF1ZXN0KTsKKworLyoqCisgKiBTZXQg
Y3JlZGVudGlhbCBmb3IgdGhlIGF1dGhlbnRpY2F0aW9uIHJlcXVlc3QuCisgKgorICogQHBhcmFt
IHJlcXVlc3QgcmVxdWVzdCBvYmplY3QgdG8gdXBkYXRlCisgKgorICogQHJldHVybiBAYyBFSU5B
X1RSVUUgaWYgdGhlIGNyZWRlbnRpYWwgd2FzIHN1Y2Nlc3NmdWx5IHNlbnQsIEBjIEVJTkFfRkFM
U0Ugb3RoZXJ3aXNlLgorICovCitFQVBJIEVpbmFfQm9vbCBld2tfYXV0aF9yZXF1ZXN0X2F1dGhl
bnRpY2F0ZShFd2tfQXV0aF9SZXF1ZXN0ICpyZXF1ZXN0LCBjb25zdCBjaGFyICp1c2VybmFtZSwg
Y29uc3QgY2hhciAqcGFzc3dvcmQpOworCisjaWZkZWYgX19jcGx1c3BsdXMKK30KKyNlbmRpZgor
CisjZW5kaWYgLyogZXdrX2F1dGhfcmVxdWVzdF9oICovCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfYXV0aF9yZXF1ZXN0X3ByaXZhdGUuaCBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19hdXRoX3JlcXVlc3RfcHJpdmF0ZS5oCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmExYmIyODUKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfYXV0aF9yZXF1ZXN0X3By
aXZhdGUuaApAQCAtMCwwICsxLDY0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEludGVs
IENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIGV3
a19hdXRoX3JlcXVlc3RfcHJpdmF0ZV9oCisjZGVmaW5lIGV3a19hdXRoX3JlcXVlc3RfcHJpdmF0
ZV9oCisKKyNpbmNsdWRlICJXS0VpbmFTaGFyZWRTdHJpbmcuaCIKKyNpbmNsdWRlIDx3dGYvUGFz
c1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CisjaW5jbHVkZSA8d3RmL3Rl
eHQvV1RGU3RyaW5nLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworY2xhc3MgQXV0aGVudGljYXRp
b25DaGFsbGVuZ2VQcm94eTsKK30KKworY2xhc3MgRXdrX0F1dGhfUmVxdWVzdCA6IHB1YmxpYyBS
ZWZDb3VudGVkPEV3a19BdXRoX1JlcXVlc3Q+IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc1Jl
ZlB0cjxFd2tfQXV0aF9SZXF1ZXN0PiBjcmVhdGUoV2ViS2l0OjpBdXRoZW50aWNhdGlvbkNoYWxs
ZW5nZVByb3h5KiBhdXRoZW50aWNhdGlvbkNoYWxsZW5nZSkKKyAgICB7CisgICAgICAgIHJldHVy
biBhZG9wdFJlZihuZXcgRXdrX0F1dGhfUmVxdWVzdChhdXRoZW50aWNhdGlvbkNoYWxsZW5nZSkp
OworICAgIH0KKyAgICB+RXdrX0F1dGhfUmVxdWVzdCgpOworCisgICAgY29uc3QgY2hhciogc3Vn
Z2VzdGVkVXNlcm5hbWUoKSBjb25zdDsKKyAgICBjb25zdCBjaGFyKiByZWFsbSgpIGNvbnN0Owor
ICAgIGNvbnN0IGNoYXIqIGhvc3QoKSBjb25zdDsKKyAgICBib29sIGlzUmV0cnlpbmcoKSBjb25z
dDsKKworICAgIGJvb2wgY2FuY2VsKCk7CisgICAgYm9vbCBhdXRoZW50aWNhdGUoY29uc3QgU3Ry
aW5nJiB1c2VybmFtZSwgY29uc3QgU3RyaW5nJiBwYXNzd29yZCk7CisKK3ByaXZhdGU6CisgICAg
ZXhwbGljaXQgRXdrX0F1dGhfUmVxdWVzdChXZWJLaXQ6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdl
UHJveHkqIGF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKTsKKworICAgIFJlZlB0cjxXZWJLaXQ6OkF1
dGhlbnRpY2F0aW9uQ2hhbGxlbmdlUHJveHk+IG1fYXV0aGVudGljYXRpb25DaGFsbGVuZ2U7Cisg
ICAgYm9vbCBtX3dhc0hhbmRsZWQ7CisgICAgbXV0YWJsZSBXS0VpbmFTaGFyZWRTdHJpbmcgbV9z
dWdnZXN0ZWRVc2VybmFtZTsKKyAgICBtdXRhYmxlIFdLRWluYVNoYXJlZFN0cmluZyBtX3JlYWxt
OworICAgIG11dGFibGUgV0tFaW5hU2hhcmVkU3RyaW5nIG1faG9zdDsKK307CisKKyNlbmRpZiAv
LyBld2tfYXV0aF9yZXF1ZXN0X3ByaXZhdGVfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXcuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvZWZsL2V3a192aWV3LmgKaW5kZXggNTNjYTgzYS4uMTc1YzI4YyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXcuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlldy5oCkBAIC0yNiw2ICsyNiw4IEBACiAgKgog
ICogVGhlIGZvbGxvd2luZyBzaWduYWxzIChzZWUgZXZhc19vYmplY3Rfc21hcnRfY2FsbGJhY2tf
YWRkKCkpIGFyZSBlbWl0dGVkOgogICoKKyAqIC0gImF1dGhlbnRpY2F0aW9uLHJlcXVlc3QiLCBF
d2tfQXV0aF9SZXF1ZXN0KjogcmVwb3J0cyB0aGF0IHVzZXIgYXV0aGVudGljYXRpb24gd2FzIHJl
cXVlc3RlZC4gQ2FsbAorICogICBld2tfYXV0aF9yZXF1ZXN0X3JlZigpIG9uIHRoZSByZXF1ZXN0
IG9iamVjdCB0byBwcm9jZXNzIHRoZSBhdXRoZW50aWNhdGlvbiBhc3luY2hyb25vdXNseS4KICAq
IC0gImJhY2ssZm9yd2FyZCxsaXN0LGNoYW5nZWQiLCB2b2lkOiByZXBvcnRzIHRoYXQgdGhlIHZp
ZXcncyBiYWNrIC8gZm9yd2FyZCBsaXN0IGhhZCBjaGFuZ2VkLgogICogLSAiY2xvc2Usd2luZG93
Iiwgdm9pZDogd2luZG93IGlzIGNsb3NlZC4KICAqIC0gImNyZWF0ZSx3aW5kb3ciLCBFdmFzX09i
amVjdCoqOiBhIG5ldyB3aW5kb3cgaXMgY3JlYXRlZC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvZWZsL3Rlc3RzL3Rlc3RfZXdrMl9hdXRoX3JlcXVlc3QuY3BwIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvdGVzdHMvdGVzdF9ld2syX2F1dGhfcmVx
dWVzdC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTRiMjY4NwotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL3Rlc3RzL3Rl
c3RfZXdrMl9hdXRoX3JlcXVlc3QuY3BwCkBAIC0wLDAgKzEsMTk3IEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDEyIEludGVsIENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpbmNsdWRlICJVbml0VGVzdFV0aWxzL0VX
SzJVbml0VGVzdEJhc2UuaCIKKyNpbmNsdWRlICJVbml0VGVzdFV0aWxzL0VXSzJVbml0VGVzdEVu
dmlyb25tZW50LmgiCisjaW5jbHVkZSAiVW5pdFRlc3RVdGlscy9FV0syVW5pdFRlc3RTZXJ2ZXIu
aCIKKyNpbmNsdWRlIDxFV2ViS2l0Mi5oPgorI2luY2x1ZGUgPEVjb3JlLmg+CisjaW5jbHVkZSA8
d3RmL1Bhc3NPd25QdHIuaD4KKwordXNpbmcgbmFtZXNwYWNlIEVXSzJVbml0VGVzdDsKKworZXh0
ZXJuIEVXSzJVbml0VGVzdEVudmlyb25tZW50KiBlbnZpcm9ubWVudDsKKworc3RhdGljIGNvbnN0
IGNoYXIgVEVTVF9VU0VSTkFNRVtdID0gInVzZXJuYW1lIjsKK3N0YXRpYyBjb25zdCBjaGFyIFRF
U1RfUEFTU1dPUkRbXSA9ICJwYXNzd29yZCI7CitzdGF0aWMgY29uc3QgY2hhciBFWFBFQ1RFRF9B
VVRIT1JJWkFUSU9OW10gPSAiQmFzaWMgZFhObGNtNWhiV1U2Y0dGemMzZHZjbVE9IjsgLy8gQmFz
ZTY0IGVuY29kaW5nIG9mICJ1c2VybmFtZTpwYXNzd29yZCIuCitzdGF0aWMgY29uc3QgY2hhciBJ
TkRFWF9IVE1MX1NUUklOR1tdID0KKyAgICAiPGh0bWw+IgorICAgICI8aGVhZD48dGl0bGU+RUZM
V2ViS2l0MiBBdXRoZW50aWNhdGlvbiB0ZXN0PC90aXRsZT48L2hlYWQ+IgorICAgICI8Ym9keT48
L2JvZHk+PC9odG1sPiI7CisKK3N0YXRpYyB2b2lkIHNlcnZlckNhbGxiYWNrKFNvdXBTZXJ2ZXIq
LCBTb3VwTWVzc2FnZSogbWVzc2FnZSwgY29uc3QgY2hhciogcGF0aCwgR0hhc2hUYWJsZSosIFNv
dXBDbGllbnRDb250ZXh0Kiwgdm9pZCopCit7CisgICAgaWYgKG1lc3NhZ2UtPm1ldGhvZCAhPSBT
T1VQX01FVEhPRF9HRVQpIHsKKyAgICAgICAgc291cF9tZXNzYWdlX3NldF9zdGF0dXMobWVzc2Fn
ZSwgU09VUF9TVEFUVVNfTk9UX0lNUExFTUVOVEVEKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0K
KworICAgIGlmICghc3RyY21wKHBhdGgsICIvaW5kZXguaHRtbCIpKSB7CisgICAgICAgIGNvbnN0
IGNoYXIqIGF1dGhvcml6YXRpb24gPSBzb3VwX21lc3NhZ2VfaGVhZGVyc19nZXRfb25lKG1lc3Nh
Z2UtPnJlcXVlc3RfaGVhZGVycywgIkF1dGhvcml6YXRpb24iKTsKKyAgICAgICAgLy8gUmVxdWly
ZSBhdXRoZW50aWNhdGlvbgorICAgICAgICBpZiAoYXV0aG9yaXphdGlvbiAmJiAhc3RyY21wKGF1
dGhvcml6YXRpb24sIEVYUEVDVEVEX0FVVEhPUklaQVRJT04pKSB7CisgICAgICAgICAgICAvLyBT
dWNjZXNzZnVsIGF1dGhlbnRpY2F0aW9uLgorICAgICAgICAgICAgc291cF9tZXNzYWdlX3NldF9z
dGF0dXMobWVzc2FnZSwgU09VUF9TVEFUVVNfT0spOworICAgICAgICAgICAgc291cF9tZXNzYWdl
X2JvZHlfYXBwZW5kKG1lc3NhZ2UtPnJlc3BvbnNlX2JvZHksIFNPVVBfTUVNT1JZX0NPUFksIElO
REVYX0hUTUxfU1RSSU5HLCBzdHJsZW4oSU5ERVhfSFRNTF9TVFJJTkcpKTsKKyAgICAgICAgfSBl
bHNlIHsKKyAgICAgICAgICAgIC8vIE5vICh2YWxpZCkgYXV0aG9yaXphdGlvbiBoZWFkZXIgcHJv
dmlkZWQgYnkgdGhlIGNsaWVudCwgcmVxdWVzdCBhdXRoZW50aWNhdGlvbi4KKyAgICAgICAgICAg
IHNvdXBfbWVzc2FnZV9zZXRfc3RhdHVzKG1lc3NhZ2UsIFNPVVBfU1RBVFVTX1VOQVVUSE9SSVpF
RCk7CisgICAgICAgICAgICBzb3VwX21lc3NhZ2VfaGVhZGVyc19hcHBlbmQobWVzc2FnZS0+cmVz
cG9uc2VfaGVhZGVycywgIldXVy1BdXRoZW50aWNhdGUiLCAiQmFzaWMgcmVhbG09XCJteSByZWFs
bVwiIik7CisgICAgICAgIH0KKyAgICB9IGVsc2UKKyAgICAgICAgc291cF9tZXNzYWdlX3NldF9z
dGF0dXMobWVzc2FnZSwgU09VUF9TVEFUVVNfTk9UX0ZPVU5EKTsKKworICAgIHNvdXBfbWVzc2Fn
ZV9ib2R5X2NvbXBsZXRlKG1lc3NhZ2UtPnJlc3BvbnNlX2JvZHkpOworfQorCitzdGF0aWMgdm9p
ZCBvbkF1dGhlbnRpY2F0aW9uUmVxdWVzdCh2b2lkKiB1c2VyRGF0YSwgRXZhc19PYmplY3QqLCB2
b2lkKiBldmVudEluZm8pCit7CisgICAgRXdrX0F1dGhfUmVxdWVzdCoqIHJldHVyblJlcXVlc3Qg
PSBzdGF0aWNfY2FzdDxFd2tfQXV0aF9SZXF1ZXN0Kio+KHVzZXJEYXRhKTsKKyAgICBBU1NFUlRf
VFJVRShyZXR1cm5SZXF1ZXN0KTsKKworICAgIEV3a19BdXRoX1JlcXVlc3QqIHJlcXVlc3QgPSBz
dGF0aWNfY2FzdDxFd2tfQXV0aF9SZXF1ZXN0Kj4oZXZlbnRJbmZvKTsKKyAgICBBU1NFUlRfVFJV
RShyZXF1ZXN0KTsKKworICAgICpyZXR1cm5SZXF1ZXN0ID0gZXdrX2F1dGhfcmVxdWVzdF9yZWYo
cmVxdWVzdCk7Cit9CisKK1RFU1RfRihFV0syVW5pdFRlc3RCYXNlLCBld2tfYXV0aF9yZXF1ZXN0
X3N1Y2Nlc3MpCit7CisgICAgT3duUHRyPEVXSzJVbml0VGVzdFNlcnZlcj4gaHR0cFNlcnZlciA9
IGFkb3B0UHRyKG5ldyBFV0syVW5pdFRlc3RTZXJ2ZXIpOworICAgIGh0dHBTZXJ2ZXItPnJ1bihz
ZXJ2ZXJDYWxsYmFjayk7CisKKyAgICBFd2tfQXV0aF9SZXF1ZXN0KiBhdXRoZW50aWNhdGlvblJl
cXVlc3QgPSAwOworICAgIGV2YXNfb2JqZWN0X3NtYXJ0X2NhbGxiYWNrX2FkZCh3ZWJWaWV3KCks
ICJhdXRoZW50aWNhdGlvbixyZXF1ZXN0Iiwgb25BdXRoZW50aWNhdGlvblJlcXVlc3QsICZhdXRo
ZW50aWNhdGlvblJlcXVlc3QpOworCisgICAgZXdrX3ZpZXdfdXJsX3NldCh3ZWJWaWV3KCksIGh0
dHBTZXJ2ZXItPmdldFVSTEZvclBhdGgoIi9pbmRleC5odG1sIikuZGF0YSgpKTsKKworICAgIHdo
aWxlICghYXV0aGVudGljYXRpb25SZXF1ZXN0KQorICAgICAgICBlY29yZV9tYWluX2xvb3BfaXRl
cmF0ZSgpOworCisgICAgQVNTRVJUX1RSVUUoYXV0aGVudGljYXRpb25SZXF1ZXN0KTsKKyAgICBl
dmFzX29iamVjdF9zbWFydF9jYWxsYmFja19kZWwod2ViVmlldygpLCAiYXV0aGVudGljYXRpb24s
cmVxdWVzdCIsIG9uQXV0aGVudGljYXRpb25SZXF1ZXN0KTsKKworICAgIEVYUEVDVF9TVFJFUSgi
bXkgcmVhbG0iLCBld2tfYXV0aF9yZXF1ZXN0X3JlYWxtX2dldChhdXRoZW50aWNhdGlvblJlcXVl
c3QpKTsKKyAgICBFWFBFQ1RfU1RSRVEoIjEyNy4wLjAuMSIsIGV3a19hdXRoX3JlcXVlc3RfaG9z
dF9nZXQoYXV0aGVudGljYXRpb25SZXF1ZXN0KSk7CisgICAgRVhQRUNUX0ZBTFNFKGV3a19hdXRo
X3JlcXVlc3RfcmV0cnlpbmdfZ2V0KGF1dGhlbnRpY2F0aW9uUmVxdWVzdCkpOworCisgICAgQVNT
RVJUX1RSVUUoZXdrX2F1dGhfcmVxdWVzdF9hdXRoZW50aWNhdGUoYXV0aGVudGljYXRpb25SZXF1
ZXN0LCBURVNUX1VTRVJOQU1FLCBURVNUX1BBU1NXT1JEKSk7CisKKyAgICBld2tfYXV0aF9yZXF1
ZXN0X3VucmVmKGF1dGhlbnRpY2F0aW9uUmVxdWVzdCk7CisKKyAgICBBU1NFUlRfVFJVRSh3YWl0
VW50aWxUaXRsZUNoYW5nZWRUbygiRUZMV2ViS2l0MiBBdXRoZW50aWNhdGlvbiB0ZXN0IikpOwor
fQorCitURVNUX0YoRVdLMlVuaXRUZXN0QmFzZSwgZXdrX2F1dGhfcmVxdWVzdF9mYWlsdXJlX3Ro
ZW5fc3VjY2VzcykKK3sKKyAgICBPd25QdHI8RVdLMlVuaXRUZXN0U2VydmVyPiBodHRwU2VydmVy
ID0gYWRvcHRQdHIobmV3IEVXSzJVbml0VGVzdFNlcnZlcik7CisgICAgaHR0cFNlcnZlci0+cnVu
KHNlcnZlckNhbGxiYWNrKTsKKworICAgIEV3a19BdXRoX1JlcXVlc3QqIGF1dGhlbnRpY2F0aW9u
UmVxdWVzdCA9IDA7CisgICAgZXZhc19vYmplY3Rfc21hcnRfY2FsbGJhY2tfYWRkKHdlYlZpZXco
KSwgImF1dGhlbnRpY2F0aW9uLHJlcXVlc3QiLCBvbkF1dGhlbnRpY2F0aW9uUmVxdWVzdCwgJmF1
dGhlbnRpY2F0aW9uUmVxdWVzdCk7CisKKyAgICBld2tfdmlld191cmxfc2V0KHdlYlZpZXcoKSwg
aHR0cFNlcnZlci0+Z2V0VVJMRm9yUGF0aCgiL2luZGV4Lmh0bWwiKS5kYXRhKCkpOworCisgICAg
d2hpbGUgKCFhdXRoZW50aWNhdGlvblJlcXVlc3QpCisgICAgICAgIGVjb3JlX21haW5fbG9vcF9p
dGVyYXRlKCk7CisKKyAgICBBU1NFUlRfVFJVRShhdXRoZW50aWNhdGlvblJlcXVlc3QpOworCisg
ICAgRVhQRUNUX1NUUkVRKCJteSByZWFsbSIsIGV3a19hdXRoX3JlcXVlc3RfcmVhbG1fZ2V0KGF1
dGhlbnRpY2F0aW9uUmVxdWVzdCkpOworICAgIEVYUEVDVF9TVFJFUSgiMTI3LjAuMC4xIiwgZXdr
X2F1dGhfcmVxdWVzdF9ob3N0X2dldChhdXRoZW50aWNhdGlvblJlcXVlc3QpKTsKKyAgICBFWFBF
Q1RfRkFMU0UoZXdrX2F1dGhfcmVxdWVzdF9yZXRyeWluZ19nZXQoYXV0aGVudGljYXRpb25SZXF1
ZXN0KSk7CisKKyAgICBBU1NFUlRfVFJVRShld2tfYXV0aF9yZXF1ZXN0X2F1dGhlbnRpY2F0ZShh
dXRoZW50aWNhdGlvblJlcXVlc3QsIFRFU1RfVVNFUk5BTUUsICJ3cm9uZ3Bhc3N3b3JkIikpOwor
CisgICAgZXdrX2F1dGhfcmVxdWVzdF91bnJlZihhdXRoZW50aWNhdGlvblJlcXVlc3QpOworICAg
IGF1dGhlbnRpY2F0aW9uUmVxdWVzdCA9IDA7CisKKyAgICAvLyBXZSBleHBlY3QgYSBzZWNvbmQg
YXV0aGVudGljYXRpb24gcmVxdWVzdCBzaW5jZSB0aGUgZmlyc3Qgb25lIGZhaWxlZC4KKyAgICB3
aGlsZSAoIWF1dGhlbnRpY2F0aW9uUmVxdWVzdCkKKyAgICAgICAgZWNvcmVfbWFpbl9sb29wX2l0
ZXJhdGUoKTsKKyAgICBldmFzX29iamVjdF9zbWFydF9jYWxsYmFja19kZWwod2ViVmlldygpLCAi
YXV0aGVudGljYXRpb24scmVxdWVzdCIsIG9uQXV0aGVudGljYXRpb25SZXF1ZXN0KTsKKworICAg
IEVYUEVDVF9TVFJFUSgibXkgcmVhbG0iLCBld2tfYXV0aF9yZXF1ZXN0X3JlYWxtX2dldChhdXRo
ZW50aWNhdGlvblJlcXVlc3QpKTsKKyAgICBFWFBFQ1RfU1RSRVEoIjEyNy4wLjAuMSIsIGV3a19h
dXRoX3JlcXVlc3RfaG9zdF9nZXQoYXV0aGVudGljYXRpb25SZXF1ZXN0KSk7CisgICAgRVhQRUNU
X1RSVUUoZXdrX2F1dGhfcmVxdWVzdF9yZXRyeWluZ19nZXQoYXV0aGVudGljYXRpb25SZXF1ZXN0
KSk7CisKKyAgICAvLyBOb3cgcHJvdmlkZSB0aGUgcmlnaHQgcGFzc3dvcmQuCisgICAgQVNTRVJU
X1RSVUUoZXdrX2F1dGhfcmVxdWVzdF9hdXRoZW50aWNhdGUoYXV0aGVudGljYXRpb25SZXF1ZXN0
LCBURVNUX1VTRVJOQU1FLCBURVNUX1BBU1NXT1JEKSk7CisKKyAgICBld2tfYXV0aF9yZXF1ZXN0
X3VucmVmKGF1dGhlbnRpY2F0aW9uUmVxdWVzdCk7CisKKyAgICBBU1NFUlRfVFJVRSh3YWl0VW50
aWxUaXRsZUNoYW5nZWRUbygiRUZMV2ViS2l0MiBBdXRoZW50aWNhdGlvbiB0ZXN0IikpOworfQor
CitzdGF0aWMgdm9pZCBvblJlc291cmNlTG9hZFJlc3BvbnNlKHZvaWQqIHVzZXJEYXRhLCBFdmFz
X09iamVjdCosIHZvaWQqIGV2ZW50SW5mbykKK3sKKyAgICBpbnQqIHN0YXR1c0NvZGUgPSBzdGF0
aWNfY2FzdDxpbnQqPih1c2VyRGF0YSk7CisgICAgQVNTRVJUX1RSVUUoc3RhdHVzQ29kZSk7CisK
KyAgICBFd2tfUmVzb3VyY2VfTG9hZF9SZXNwb25zZSogcmVzcG9uc2UgPSBzdGF0aWNfY2FzdDxF
d2tfUmVzb3VyY2VfTG9hZF9SZXNwb25zZSo+KGV2ZW50SW5mbyk7CisgICAgQVNTRVJUX1RSVUUo
cmVzcG9uc2UpOworCisgICAgaWYgKCFld2tfcmVzb3VyY2VfbWFpbl9yZXNvdXJjZV9nZXQocmVz
cG9uc2UtPnJlc291cmNlKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgKnN0YXR1c0NvZGUgPSBl
d2tfdXJsX3Jlc3BvbnNlX3N0YXR1c19jb2RlX2dldChyZXNwb25zZS0+cmVzcG9uc2UpOworfQor
CitURVNUX0YoRVdLMlVuaXRUZXN0QmFzZSwgZXdrX2F1dGhfcmVxdWVzdF9jYW5jZWwpCit7Cisg
ICAgT3duUHRyPEVXSzJVbml0VGVzdFNlcnZlcj4gaHR0cFNlcnZlciA9IGFkb3B0UHRyKG5ldyBF
V0syVW5pdFRlc3RTZXJ2ZXIpOworICAgIGh0dHBTZXJ2ZXItPnJ1bihzZXJ2ZXJDYWxsYmFjayk7
CisKKyAgICBFd2tfQXV0aF9SZXF1ZXN0KiBhdXRoZW50aWNhdGlvblJlcXVlc3QgPSAwOworICAg
IGV2YXNfb2JqZWN0X3NtYXJ0X2NhbGxiYWNrX2FkZCh3ZWJWaWV3KCksICJhdXRoZW50aWNhdGlv
bixyZXF1ZXN0Iiwgb25BdXRoZW50aWNhdGlvblJlcXVlc3QsICZhdXRoZW50aWNhdGlvblJlcXVl
c3QpOworCisgICAgZXdrX3ZpZXdfdXJsX3NldCh3ZWJWaWV3KCksIGh0dHBTZXJ2ZXItPmdldFVS
TEZvclBhdGgoIi9pbmRleC5odG1sIikuZGF0YSgpKTsKKworICAgIHdoaWxlICghYXV0aGVudGlj
YXRpb25SZXF1ZXN0KQorICAgICAgICBlY29yZV9tYWluX2xvb3BfaXRlcmF0ZSgpOworCisgICAg
QVNTRVJUX1RSVUUoYXV0aGVudGljYXRpb25SZXF1ZXN0KTsKKyAgICBldmFzX29iamVjdF9zbWFy
dF9jYWxsYmFja19kZWwod2ViVmlldygpLCAiYXV0aGVudGljYXRpb24scmVxdWVzdCIsIG9uQXV0
aGVudGljYXRpb25SZXF1ZXN0KTsKKworICAgIEVYUEVDVF9TVFJFUSgibXkgcmVhbG0iLCBld2tf
YXV0aF9yZXF1ZXN0X3JlYWxtX2dldChhdXRoZW50aWNhdGlvblJlcXVlc3QpKTsKKyAgICBFWFBF
Q1RfU1RSRVEoIjEyNy4wLjAuMSIsIGV3a19hdXRoX3JlcXVlc3RfaG9zdF9nZXQoYXV0aGVudGlj
YXRpb25SZXF1ZXN0KSk7CisgICAgRVhQRUNUX0ZBTFNFKGV3a19hdXRoX3JlcXVlc3RfcmV0cnlp
bmdfZ2V0KGF1dGhlbnRpY2F0aW9uUmVxdWVzdCkpOworCisgICAgaW50IHN0YXR1c0NvZGUgPSAw
OworICAgIGV2YXNfb2JqZWN0X3NtYXJ0X2NhbGxiYWNrX2FkZCh3ZWJWaWV3KCksICJyZXNvdXJj
ZSxyZXF1ZXN0LHJlc3BvbnNlIiwgb25SZXNvdXJjZUxvYWRSZXNwb25zZSwgJnN0YXR1c0NvZGUp
OworCisgICAgLy8gQ2FuY2VscyBhdXRoZW50aWNhdGlvbiBieSBkZWZhdWx0LgorICAgIGV3a19h
dXRoX3JlcXVlc3RfdW5yZWYoYXV0aGVudGljYXRpb25SZXF1ZXN0KTsKKworICAgIHdoaWxlICgh
c3RhdHVzQ29kZSkKKyAgICAgICAgZWNvcmVfbWFpbl9sb29wX2l0ZXJhdGUoKTsKKworICAgIEVY
UEVDVF9FUShTT1VQX1NUQVRVU19VTkFVVEhPUklaRUQsIHN0YXR1c0NvZGUpOworCisgICAgZXZh
c19vYmplY3Rfc21hcnRfY2FsbGJhY2tfZGVsKHdlYlZpZXcoKSwgInJlc291cmNlLHJlcXVlc3Qs
cmVzcG9uc2UiLCBvblJlc291cmNlTG9hZFJlc3BvbnNlKTsKK30KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvUGFnZUxvYWRDbGllbnRFZmwuY3BwIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL2VmbC9QYWdlTG9hZENsaWVudEVmbC5jcHAKaW5kZXggNjIxYzg1NS4u
ZmIwNjJiZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9QYWdlTG9h
ZENsaWVudEVmbC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9QYWdlTG9h
ZENsaWVudEVmbC5jcHAKQEAgLTMwLDYgKzMwLDcgQEAKICNpbmNsdWRlICJXS0FQSUNhc3QuaCIK
ICNpbmNsdWRlICJXS0ZyYW1lLmgiCiAjaW5jbHVkZSAiV0tQYWdlLmgiCisjaW5jbHVkZSAiZXdr
X2F1dGhfcmVxdWVzdF9wcml2YXRlLmgiCiAjaW5jbHVkZSAiZXdrX2JhY2tfZm9yd2FyZF9saXN0
X3ByaXZhdGUuaCIKICNpbmNsdWRlICJld2tfZXJyb3JfcHJpdmF0ZS5oIgogI2luY2x1ZGUgImV3
a19pbnRlbnRfcHJpdmF0ZS5oIgpAQCAtMTYxLDYgKzE2MiwxNCBAQCB2b2lkIFBhZ2VMb2FkQ2xp
ZW50RWZsOjpkaWRTYW1lRG9jdW1lbnROYXZpZ2F0aW9uRm9yRnJhbWUoV0tQYWdlUmVmLCBXS0Zy
YW1lUmVmCiAgICAgdmlld0ltcGwtPmluZm9ybVVSTENoYW5nZSgpOwogfQogCit2b2lkIFBhZ2VM
b2FkQ2xpZW50RWZsOjpkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2VJbkZyYW1lKFdL
UGFnZVJlZiwgV0tGcmFtZVJlZiwgV0tBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVJlZiBhdXRoZW50
aWNhdGlvbkNoYWxsZW5nZSwgY29uc3Qgdm9pZCogY2xpZW50SW5mbykKK3sKKyAgICBFd2tWaWV3
SW1wbCogdmlld0ltcGwgPSB0b1BhZ2VMb2FkQ2xpZW50RWZsKGNsaWVudEluZm8pLT52aWV3SW1w
bCgpOworCisgICAgUmVmUHRyPEV3a19BdXRoX1JlcXVlc3Q+IGF1dGhlbnRpY2F0aW9uUmVxdWVz
dCA9IEV3a19BdXRoX1JlcXVlc3Q6OmNyZWF0ZSh0b0ltcGwoYXV0aGVudGljYXRpb25DaGFsbGVu
Z2UpKTsKKyAgICB2aWV3SW1wbC0+c21hcnRDYWxsYmFjazxBdXRoZW50aWNhdGlvblJlcXVlc3Q+
KCkuY2FsbChhdXRoZW50aWNhdGlvblJlcXVlc3QuZ2V0KCkpOworfQorCiBQYWdlTG9hZENsaWVu
dEVmbDo6UGFnZUxvYWRDbGllbnRFZmwoRXdrVmlld0ltcGwqIHZpZXdJbXBsKQogICAgIDogbV92
aWV3SW1wbCh2aWV3SW1wbCkKIHsKQEAgLTE5MSw2ICsyMDAsNyBAQCBQYWdlTG9hZENsaWVudEVm
bDo6UGFnZUxvYWRDbGllbnRFZmwoRXdrVmlld0ltcGwqIHZpZXdJbXBsKQogI2VuZGlmCiAgICAg
bG9hZENsaWVudC5kaWRDaGFuZ2VCYWNrRm9yd2FyZExpc3QgPSBkaWRDaGFuZ2VCYWNrRm9yd2Fy
ZExpc3Q7CiAgICAgbG9hZENsaWVudC5kaWRTYW1lRG9jdW1lbnROYXZpZ2F0aW9uRm9yRnJhbWUg
PSBkaWRTYW1lRG9jdW1lbnROYXZpZ2F0aW9uRm9yRnJhbWU7CisgICAgbG9hZENsaWVudC5kaWRS
ZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2VJbkZyYW1lID0gZGlkUmVjZWl2ZUF1dGhlbnRp
Y2F0aW9uQ2hhbGxlbmdlSW5GcmFtZTsKICAgICBXS1BhZ2VTZXRQYWdlTG9hZGVyQ2xpZW50KHBh
Z2VSZWYsICZsb2FkQ2xpZW50KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL2VmbC9QYWdlTG9hZENsaWVudEVmbC5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L2VmbC9QYWdlTG9hZENsaWVudEVmbC5oCmluZGV4IGI5ODZmZmUuLmNkNzEzYTMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvUGFnZUxvYWRDbGllbnRFZmwuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1BhZ2VMb2FkQ2xpZW50RWZsLmgKQEAgLTY0
LDYgKzY0LDcgQEAgcHJpdmF0ZToKICNlbmRpZgogICAgIHN0YXRpYyB2b2lkIGRpZENoYW5nZUJh
Y2tGb3J3YXJkTGlzdChXS1BhZ2VSZWYsIFdLQmFja0ZvcndhcmRMaXN0SXRlbVJlZiBhZGRlZEl0
ZW0sIFdLQXJyYXlSZWYgcmVtb3ZlZEl0ZW1zLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKTsKICAg
ICBzdGF0aWMgdm9pZCBkaWRTYW1lRG9jdW1lbnROYXZpZ2F0aW9uRm9yRnJhbWUoV0tQYWdlUmVm
LCBXS0ZyYW1lUmVmLCBXS1NhbWVEb2N1bWVudE5hdmlnYXRpb25UeXBlLCBXS1R5cGVSZWYsIGNv
bnN0IHZvaWQqIGNsaWVudEluZm8pOworICAgIHN0YXRpYyB2b2lkIGRpZFJlY2VpdmVBdXRoZW50
aWNhdGlvbkNoYWxsZW5nZUluRnJhbWUoV0tQYWdlUmVmLCBXS0ZyYW1lUmVmLCBXS0F1dGhlbnRp
Y2F0aW9uQ2hhbGxlbmdlUmVmLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKTsKIAogICAgIEV3a1Zp
ZXdJbXBsKiBtX3ZpZXdJbXBsOwogfTsK
</data>

          </attachment>
      

    </bug>

</bugzilla>