<?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>184804</bug_id>
          <alias>CVE-2018-11712</alias>
          <creation_ts>2018-04-19 20:00:01 -0700</creation_ts>
          <short_desc>REGRESSION(r228088): [SOUP] Certificate verification no longer performed for secure WebSocket connections</short_desc>
          <delta_ts>2018-06-04 08:09:55 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>Security</product>
          <component>Security</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>PC</rep_platform>
          <op_sys>Linux</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=126384</see_also>
    
    <see_also>https://bugs.webkit.org/show_bug.cgi?id=184480</see_also>
    
    <see_also>https://bugs.webkit.org/show_bug.cgi?id=184821</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>184480</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Michael Catanzaro">mcatanzaro</reporter>
          <assigned_to name="WebKit Security Group">webkit-security-unassigned</assigned_to>
          <cc>bfulgham</cc>
    
    <cc>cgarcia</cc>
    
    <cc>csaavedra</cc>
    
    <cc>mcatanzaro</cc>
    
    <cc>product-security</cc>
    
    <cc>svillar</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1416157</commentid>
    <comment_count>0</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2018-04-19 20:00:01 -0700</bug_when>
    <thetext>r228088 changes SocketStreamHandleImplSoup to use the new soup_session_connection_async() API, which Carlos had just created for use by SocketStreamHandleImplSoup in bug #126384. Problem is this turned off certificate verification, since we disable SOUP_SESSION_SSL_STRICT.

For normal connections, we work around this using SoupMessage (see bug #184480 for why that is not quite right), but there is no possibility of doing that with soup_session_connect_async(). It&apos;s impossible to fix without changes in libsoup. We need to either (a) change soup_session_connect_async() to somehow force ssl-strict on the SoupConnection and SoupSocket it creates, or (b) add API for getting the SoupSocket so WebKit can force it on manually. I even tried finding some way to block the accept-certificate handler that SoupSocket is using to accept the certificate, since we want to reimplement that, but that would be a nasty hack and I don&apos;t think it&apos;s possible anyway.

We should probably add some generic API in libsoup to wrap accept-certificate, so it would be useful for bug #184480 as well. But I&apos;m not quite sure what it would look like. A SoupMessage API seems the most natural, but that&apos;s insufficient because SoupMessage is not exposed at all by soup_session_connect_async(). A SoupSession API seems easiest, I guess. Thoughts?

Here is a WIP patch with a testcase. The test found some other longstanding problems here, too: we were ignoring the TLS error policy set by webkit_web_context_set_tls_errors_policy(), and ignoring any overrides set with webkit_web_context_allow_tls_certificate_for_host(). These aren&apos;t security problems, though, since they only ever caused the connection to fail when it shouldn&apos;t have. Anyway, it was because we were instead checking an insane DeprecatedGlobalSettings::allowsAnySSLCertificate setting, which is used exclusively for web sockets. This patch solves this issue and renames all of its uses in Source/ to indicate it&apos;s used only for testing (and a couple service worker functions too!). I didn&apos;t change its usage in LayoutTests, though.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1416158</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2018-04-19 20:00:17 -0700</bug_when>
    <thetext>&lt;rdar://problem/39585887&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1416159</commentid>
    <comment_count>2</comment_count>
      <attachid>338389</attachid>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2018-04-19 20:09:41 -0700</bug_when>
    <thetext>Created attachment 338389
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1416160</commentid>
    <comment_count>3</comment_count>
      <attachid>338389</attachid>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2018-04-19 20:10:34 -0700</bug_when>
    <thetext>Comment on attachment 338389
Patch

(It&apos;s not ready for review, because it doesn&apos;t fix the bug. Necessary, not sufficient.)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1416162</commentid>
    <comment_count>4</comment_count>
      <attachid>338389</attachid>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2018-04-19 20:23:43 -0700</bug_when>
    <thetext>Comment on attachment 338389
Patch

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

&gt; Source/WebCore/testing/InternalSettings.cpp:-844
&gt; -#if USE(SOUP)
&gt; -    SoupNetworkSession::setShouldIgnoreTLSErrors(allowsAnyCertificate);
&gt; -#endif

(If it breaks layout tests, this would probably be why.)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1416200</commentid>
    <comment_count>5</comment_count>
      <attachid>338389</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2018-04-20 03:01:58 -0700</bug_when>
    <thetext>Comment on attachment 338389
Patch

There&apos;s too much noise in this patch to be a security fix, note that I&apos;ll have to backport it to 2.20 branch. So, I would simply fix the bug here, and then do the renames, cleanups and update jhbuild in follow up patches.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1416201</commentid>
    <comment_count>6</comment_count>
      <attachid>338404</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2018-04-20 03:05:00 -0700</bug_when>
    <thetext>Created attachment 338404
Simpler patch

This patch fixes the bug if applied on top of patch attached to bug #184480. I&apos;ve fixed the bug and copied the test case added by Michael in the previous patch. I also updated the test to move the asserts from the fixture to the test and simplify it a bit.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1416202</commentid>
    <comment_count>7</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2018-04-20 03:29:53 -0700</bug_when>
    <thetext>Michael, if you are going to bump libsoup version in jhbuild, remember to include a patch for this commit:

https://git.gnome.org/browse/libsoup/commit/?id=e8995d4e1d5cf984cf10327c59808976425b2f9c</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1416272</commentid>
    <comment_count>8</comment_count>
      <attachid>338404</attachid>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2018-04-20 08:51:38 -0700</bug_when>
    <thetext>Comment on attachment 338404
Simpler patch

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

I see you simplified several aspects of my code. Excellent!

I&apos;ll create another bug to deal with the insane testing setting.

&gt; Source/WebCore/ChangeLog:3
&gt; +        REGRESSION(r228088): [SOUP] Check TLS errors for WebSockets right after TLS handshacking event

handshaking

&gt; Source/WebCore/platform/network/soup/SocketStreamHandleImplSoup.cpp:92
&gt; +        reinterpret_cast&lt;SoupSessionConnectProgressCallback&gt;(connectProgressCallback),

I would change the ternary condition to url.protocolIs(&quot;wss&quot;) instead of removing it entirely, to avoid the unnecessary progress callbacks otherwise.

&gt; Tools/TestWebKitAPI/Tests/WebKitGLib/TestSSL.cpp:348
&gt; +        DidReachServer = 1 &lt;&lt; 0,

This flag is misnamed. Of course the request will always reach the server, because the client won&apos;t be able to check for TLS errors if the server has not sent it anything. Rename it, perhaps: &quot;DidServerCompleteHandshake&quot;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1416273</commentid>
    <comment_count>9</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2018-04-20 08:53:49 -0700</bug_when>
    <thetext>I&apos;m going to request a CVE for this one.

Bug #184480 is really minor since we don&apos;t support TLS 1.3 or fast open, so that doesn&apos;t need a CVE.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1416640</commentid>
    <comment_count>10</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2018-04-20 23:36:26 -0700</bug_when>
    <thetext>Committed r230886: &lt;https://trac.webkit.org/changeset/230886&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1429649</commentid>
    <comment_count>11</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2018-06-03 07:56:03 -0700</bug_when>
    <thetext>(In reply to Michael Catanzaro from comment #9)
&gt; Bug #184480 is really minor since we don&apos;t support TLS 1.3 or fast open, so
&gt; that doesn&apos;t need a CVE.

But note this fix depends on that one.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1429651</commentid>
    <comment_count>12</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2018-06-03 08:12:39 -0700</bug_when>
    <thetext>(In reply to Michael Catanzaro from comment #9)
&gt; I&apos;m going to request a CVE for this one.
&gt; 
&gt; Bug #184480 is really minor since we don&apos;t support TLS 1.3 or fast open, so
&gt; that doesn&apos;t need a CVE.

It&apos;s been six weeks without a response from the DWF project. I&apos;ve asked them to not issue the CVE after all, and requested one from Debian instead. Hopefully we don&apos;t wind up with a duplicate.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1429815</commentid>
    <comment_count>13</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2018-06-04 08:06:08 -0700</bug_when>
    <thetext>And MITRE responds in one day... phenomenal, really.

I don&apos;t understand what DWF is trying to accomplish, they are just getting in the way.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1429816</commentid>
    <comment_count>14</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2018-06-04 08:08:00 -0700</bug_when>
    <thetext>(In reply to Michael Catanzaro from comment #13)
&gt; And MITRE responds in one day... phenomenal, really.

Oh yeah, Debian directed me to apply from MITRE.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>338389</attachid>
            <date>2018-04-19 20:09:41 -0700</date>
            <delta_ts>2018-04-20 03:05:00 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-184804-20180419220939.patch</filename>
            <type>text/plain</type>
            <size>50758</size>
            <attacher name="Michael Catanzaro">mcatanzaro</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjMwNjc0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZmFjZDBkMTE0NzljODUy
NzZlNTY4MzMxODY3YjAyZDRlMGE2MWQ5YS4uNzY4NDA3MWIxOTA0YTVkYzMzMzhkZjgyZDc2Njk3
YmM0MjIyZGYzMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQwIEBACisyMDE4LTA0LTE5ICBNaWNo
YWVsIENhdGFuemFybyAgPG1jYXRhbnphcm9AaWdhbGlhLmNvbT4KKworICAgICAgICBSRUdSRVNT
SU9OKHIyMjgwODgpOiBbU09VUF0gQ2VydGlmaWNhdGUgdmVyaWZpY2F0aW9uIG5vIGxvbmdlciBw
ZXJmb3JtZWQgZm9yIHNlY3VyZSBXZWJTb2NrZXQgY29ubmVjdGlvbnMKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4NDgwNAorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogcGFnZS9EZXByZWNhdGVkR2xvYmFs
U2V0dGluZ3MuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGVwcmVjYXRlZEdsb2JhbFNldHRpbmdz
OjpzZXRBbGxvd3NBbnlTU0xDZXJ0aWZpY2F0ZUZvcldlYlNvY2tldFRlc3RpbmcpOgorICAgICAg
ICAoV2ViQ29yZTo6RGVwcmVjYXRlZEdsb2JhbFNldHRpbmdzOjphbGxvd3NBbnlTU0xDZXJ0aWZp
Y2F0ZUZvcldlYlNvY2tldFRlc3RpbmcpOgorICAgICAgICAoV2ViQ29yZTo6RGVwcmVjYXRlZEds
b2JhbFNldHRpbmdzOjpzZXRBbGxvd3NBbnlTU0xDZXJ0aWZpY2F0ZSk6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJDb3JlOjpEZXByZWNhdGVkR2xvYmFsU2V0dGluZ3M6OmFsbG93c0FueVNTTENlcnRp
ZmljYXRlKTogRGVsZXRlZC4KKyAgICAgICAgKiBwYWdlL0RlcHJlY2F0ZWRHbG9iYWxTZXR0aW5n
cy5oOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY2YvU29ja2V0U3RyZWFtSGFuZGxlSW1w
bENGTmV0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNvY2tldFN0cmVhbUhhbmRsZUltcGw6OmNy
ZWF0ZVN0cmVhbXMpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvc291cC9Tb2NrZXRTdHJl
YW1IYW5kbGVJbXBsLmg6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9zb3VwL1NvY2tldFN0
cmVhbUhhbmRsZUltcGxTb3VwLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNvY2tldFN0cmVhbUhh
bmRsZUltcGw6OmFjY2VwdENlcnRpZmljYXRlQ2FsbGJhY2spOgorICAgICAgICAoV2ViQ29yZTo6
U29ja2V0U3RyZWFtSGFuZGxlSW1wbDo6Y29ubmVjdFByb2dyZXNzQ2FsbGJhY2spOgorICAgICAg
ICAoV2ViQ29yZTo6U29ja2V0U3RyZWFtSGFuZGxlSW1wbDo6c29ja2V0Q2xpZW50RXZlbnRDYWxs
YmFjayk6CisgICAgICAgIChXZWJDb3JlOjpTb2NrZXRTdHJlYW1IYW5kbGVJbXBsOjpjcmVhdGUp
OgorICAgICAgICAoV2ViQ29yZTo6d3NzQ29ubmVjdGlvbkFjY2VwdENlcnRpZmljYXRlQ2FsbGJh
Y2spOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6d3NzU29ja2V0Q2xpZW50RXZlbnRDYWxs
YmFjayk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9zb3VwL1NvdXBOZXR3
b3JrU2Vzc2lvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTb3VwTmV0d29ya1Nlc3Npb246OmNo
ZWNrVExTRXJyb3JzKToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXBOZXR3b3JrU2Vzc2lvbjo6c2hv
dWxkQWxsb3dTcGVjaWZpY0hUVFBTQ2VydGlmaWNhdGVGb3JIb3N0KToKKyAgICAgICAgKiBwbGF0
Zm9ybS9uZXR3b3JrL3NvdXAvU291cE5ldHdvcmtTZXNzaW9uLmg6CisgICAgICAgICogdGVzdGlu
Zy9JbnRlcm5hbFNldHRpbmdzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkludGVybmFsU2V0dGlu
Z3M6OkJhY2t1cDo6cmVzdG9yZVRvKToKKyAgICAgICAgKFdlYkNvcmU6OkludGVybmFsU2V0dGlu
Z3M6OnNldEFsbG93c0FueVNTTENlcnRpZmljYXRlRm9yV2ViU29ja2V0VGVzdGluZyk6CisgICAg
ICAgIChXZWJDb3JlOjpJbnRlcm5hbFNldHRpbmdzOjpzZXRBbGxvd3NBbnlTU0xDZXJ0aWZpY2F0
ZSk6IERlbGV0ZWQuCisgICAgICAgICogdGVzdGluZy9JbnRlcm5hbFNldHRpbmdzLmg6CisgICAg
ICAgICogdGVzdGluZy9qcy9XZWJDb3JlVGVzdFN1cHBvcnQuY3BwOgorICAgICAgICAoV2ViQ29y
ZVRlc3RTdXBwb3J0OjpzZXRBbGxvd3NBbnlTU0xDZXJ0aWZpY2F0ZUZvcldlYlNvY2tldFRlc3Rp
bmcpOgorICAgICAgICAoV2ViQ29yZVRlc3RTdXBwb3J0OjpzZXRBbGxvd3NBbnlTU0xDZXJ0aWZp
Y2F0ZSk6IERlbGV0ZWQuCisgICAgICAgICogdGVzdGluZy9qcy9XZWJDb3JlVGVzdFN1cHBvcnQu
aDoKKwogMjAxOC0wNC0xNiAgVGhpYmF1bHQgU2F1bmllciAgPHRzYXVuaWVyQGlnYWxpYS5jb20+
CiAKICAgICAgICAgW0dTdHJlYW1lcl0gU2V0ICpUcmFja1ByaXZhdGVHU3RyZWFtZXI6OmFjdGl2
ZSBiYXNlZCBvbiBHc3RTdHJlYW0gZGVmYXVsdCBzZWxlY3QgaW4gY29uc3RydWN0b3IKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cK
aW5kZXggZjI4Y2ZhYTNiYzBkZTEyMWU1ZjJlNjg3Y2E0Y2MxMmZiZDg3YTdkYS4uOWQ2MGI1NmQy
MzgzYjFlMmE5YTIyOGUyY2NmYThhNThjNWMzNWFmZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNSBA
QAorMjAxOC0wNC0xOSAgTWljaGFlbCBDYXRhbnphcm8gIDxtY2F0YW56YXJvQGlnYWxpYS5jb20+
CisKKyAgICAgICAgUkVHUkVTU0lPTihyMjI4MDg4KTogW1NPVVBdIENlcnRpZmljYXRlIHZlcmlm
aWNhdGlvbiBubyBsb25nZXIgcGVyZm9ybWVkIGZvciBzZWN1cmUgV2ViU29ja2V0IGNvbm5lY3Rp
b25zCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODQ4
MDQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIE5l
dHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29y
a1Byb2Nlc3M6OnNldEFsbG93c0FueVNTTENlcnRpZmljYXRlRm9yV2ViU29ja2V0VGVzdGluZyk6
CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpzZXRBbGxvd3NBbnlTU0xDZXJ0aWZp
Y2F0ZUZvcldlYlNvY2tldCk6IERlbGV0ZWQuCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0
d29ya1Byb2Nlc3MuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5t
ZXNzYWdlcy5pbjoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tDb250ZXh0LmNwcDoKKyAg
ICAgICAgKFdLQ29udGV4dFNldEFsbG93c0FueVNTTENlcnRpZmljYXRlRm9yV2ViU29ja2V0VGVz
dGluZyk6CisgICAgICAgIChXS0NvbnRleHRTZXRBbGxvd3NBbnlTU0xDZXJ0aWZpY2F0ZUZvclNl
cnZpY2VXb3JrZXJUZXN0aW5nKToKKyAgICAgICAgKiBVSVByb2Nlc3MvU2VydmljZVdvcmtlclBy
b2Nlc3NQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlNlcnZpY2VXb3JrZXJQcm9jZXNzUHJv
eHk6OmRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSk6CisgICAgICAgICogVUlQcm9j
ZXNzL1dlYlByb2Nlc3NQb29sLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6
OnNldEFsbG93c0FueVNTTENlcnRpZmljYXRlRm9yV2ViU29ja2V0VGVzdGluZyk6CisgICAgICAg
IChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjpzZXRBbGxvd3NBbnlTU0xDZXJ0aWZpY2F0ZUZvcldl
YlNvY2tldCk6IERlbGV0ZWQuCisgICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmg6
CisKIDIwMTgtMDQtMTYgIFRpbW90aHkgSGF0Y2hlciAgPHRpbW90aHlAYXBwbGUuY29tPgogCiAg
ICAgICAgIENsZWFuIHVwIE9USEVSX0xERkxBR1MgZm9yIFdlYktpdCBwcm9jZXNzZXMKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRGVwcmVjYXRlZEdsb2JhbFNldHRpbmdzLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvRGVwcmVjYXRlZEdsb2JhbFNldHRpbmdzLmNwcAppbmRleCBm
YTkyZTJlMzU2MTFjYjQ0YWJlNDRhM2E5MWY5NTNmM2UyNWQ0ZWZiLi4yODQ2ZmQyY2M1OWFhODAz
OGY1MjQxMDE0NzMxYWNmYzFjNTNjNmIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L0RlcHJlY2F0ZWRHbG9iYWxTZXR0aW5ncy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9E
ZXByZWNhdGVkR2xvYmFsU2V0dGluZ3MuY3BwCkBAIC02Niw3ICs2Niw3IEBAIGJvb2wgRGVwcmVj
YXRlZEdsb2JhbFNldHRpbmdzOjpnU2hvdWxkVXNlSGlnaFJlc29sdXRpb25UaW1lcnMgPSB0cnVl
OwogYm9vbCBEZXByZWNhdGVkR2xvYmFsU2V0dGluZ3M6OmdTaG91bGRSZXNwZWN0UHJpb3JpdHlJ
bkNTU0F0dHJpYnV0ZVNldHRlcnMgPSBmYWxzZTsKIGJvb2wgRGVwcmVjYXRlZEdsb2JhbFNldHRp
bmdzOjpnTG93UG93ZXJWaWRlb0F1ZGlvQnVmZmVyU2l6ZUVuYWJsZWQgPSBmYWxzZTsKIGJvb2wg
RGVwcmVjYXRlZEdsb2JhbFNldHRpbmdzOjpnUmVzb3VyY2VMb2FkU3RhdGlzdGljc0VuYWJsZWRF
bmFibGVkID0gZmFsc2U7Ci1ib29sIERlcHJlY2F0ZWRHbG9iYWxTZXR0aW5nczo6Z0FsbG93c0Fu
eVNTTENlcnRpZmljYXRlID0gZmFsc2U7Citib29sIERlcHJlY2F0ZWRHbG9iYWxTZXR0aW5nczo6
Z0FsbG93c0FueVNTTENlcnRpZmljYXRlRm9yV2ViU29ja2V0VGVzdGluZyA9IGZhbHNlOwogCiAj
aWYgUExBVEZPUk0oSU9TKQogYm9vbCBEZXByZWNhdGVkR2xvYmFsU2V0dGluZ3M6OmdOZXR3b3Jr
RGF0YVVzYWdlVHJhY2tpbmdFbmFibGVkID0gZmFsc2U7CkBAIC0yNDMsMTQgKzI0MywxNCBAQCBi
b29sIERlcHJlY2F0ZWRHbG9iYWxTZXR0aW5nczo6Z2xvYmFsQ29uc3RSZWRlY2xhcmF0aW9uU2hv
dWxkVGhyb3coKQogI2VuZGlmCiB9CiAKLXZvaWQgRGVwcmVjYXRlZEdsb2JhbFNldHRpbmdzOjpz
ZXRBbGxvd3NBbnlTU0xDZXJ0aWZpY2F0ZShib29sIGFsbG93QW55U1NMQ2VydGlmaWNhdGUpCit2
b2lkIERlcHJlY2F0ZWRHbG9iYWxTZXR0aW5nczo6c2V0QWxsb3dzQW55U1NMQ2VydGlmaWNhdGVG
b3JXZWJTb2NrZXRUZXN0aW5nKGJvb2wgYWxsb3dBbnlTU0xDZXJ0aWZpY2F0ZUZvcldlYlNvY2tl
dFRlc3RpbmcpCiB7Ci0gICAgZ0FsbG93c0FueVNTTENlcnRpZmljYXRlID0gYWxsb3dBbnlTU0xD
ZXJ0aWZpY2F0ZTsKKyAgICBnQWxsb3dzQW55U1NMQ2VydGlmaWNhdGVGb3JXZWJTb2NrZXRUZXN0
aW5nID0gYWxsb3dBbnlTU0xDZXJ0aWZpY2F0ZUZvcldlYlNvY2tldFRlc3Rpbmc7CiB9CiAKLWJv
b2wgRGVwcmVjYXRlZEdsb2JhbFNldHRpbmdzOjphbGxvd3NBbnlTU0xDZXJ0aWZpY2F0ZSgpCiti
b29sIERlcHJlY2F0ZWRHbG9iYWxTZXR0aW5nczo6YWxsb3dzQW55U1NMQ2VydGlmaWNhdGVGb3JX
ZWJTb2NrZXRUZXN0aW5nKCkKIHsKLSAgICByZXR1cm4gZ0FsbG93c0FueVNTTENlcnRpZmljYXRl
OworICAgIHJldHVybiBnQWxsb3dzQW55U1NMQ2VydGlmaWNhdGVGb3JXZWJTb2NrZXRUZXN0aW5n
OwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL0RlcHJlY2F0ZWRHbG9iYWxTZXR0aW5ncy5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9E
ZXByZWNhdGVkR2xvYmFsU2V0dGluZ3MuaAppbmRleCBlYzU1OGFiZDBhODM1NDI1M2IwODFiNjA5
OTY4ODY4MjYxZGYyNGQ5Li5iNmYyOWEwYjgzNzM5ZDgzMTg4NTZjZjdmZDFkNjQxNGUwZjM3YTE4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RlcHJlY2F0ZWRHbG9iYWxTZXR0aW5n
cy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRGVwcmVjYXRlZEdsb2JhbFNldHRpbmdzLmgK
QEAgLTExMCw4ICsxMTAsOCBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIHZv
aWQgc2V0TWVkaWFDYXB0dXJlUmVxdWlyZXNTZWN1cmVDb25uZWN0aW9uKGJvb2wpOwogI2VuZGlm
CiAKLSAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgdm9pZCBzZXRBbGxvd3NBbnlTU0xDZXJ0aWZp
Y2F0ZShib29sKTsKLSAgICBzdGF0aWMgYm9vbCBhbGxvd3NBbnlTU0xDZXJ0aWZpY2F0ZSgpOwor
ICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyB2b2lkIHNldEFsbG93c0FueVNTTENlcnRpZmljYXRl
Rm9yV2ViU29ja2V0VGVzdGluZyhib29sKTsKKyAgICBzdGF0aWMgYm9vbCBhbGxvd3NBbnlTU0xD
ZXJ0aWZpY2F0ZUZvcldlYlNvY2tldFRlc3RpbmcoKTsKIAogcHJpdmF0ZToKICNpZiBVU0UoQVZG
T1VOREFUSU9OKQpAQCAtMTQ1LDcgKzE0NSw3IEBAIHByaXZhdGU6CiAKICAgICBzdGF0aWMgYm9v
bCBnTG93UG93ZXJWaWRlb0F1ZGlvQnVmZmVyU2l6ZUVuYWJsZWQ7CiAgICAgc3RhdGljIGJvb2wg
Z1Jlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkRW5hYmxlZDsKLSAgICBzdGF0aWMgYm9vbCBn
QWxsb3dzQW55U1NMQ2VydGlmaWNhdGU7CisgICAgc3RhdGljIGJvb2wgZ0FsbG93c0FueVNTTENl
cnRpZmljYXRlRm9yV2ViU29ja2V0VGVzdGluZzsKIH07CiAKIGlubGluZSBib29sIERlcHJlY2F0
ZWRHbG9iYWxTZXR0aW5nczo6aXNQb3N0TG9hZENQVVVzYWdlTWVhc3VyZW1lbnRFbmFibGVkKCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvU29ja2V0U3Ry
ZWFtSGFuZGxlSW1wbENGTmV0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Y2YvU29ja2V0U3RyZWFtSGFuZGxlSW1wbENGTmV0LmNwcAppbmRleCA3NmZmODNiYmJlNDEzZWVk
Y2E3ZjYzNDAzMTQyNWIwNzhkYjFmMTRhLi40MGY3MmRkOTVjYmU4ZWE5YzNiOTJlODEyOTRiNmQ0
MTJhMmNkNjNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2Nm
L1NvY2tldFN0cmVhbUhhbmRsZUltcGxDRk5ldC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9jZi9Tb2NrZXRTdHJlYW1IYW5kbGVJbXBsQ0ZOZXQuY3BwCkBAIC0zNDAs
NyArMzQwLDcgQEAgdm9pZCBTb2NrZXRTdHJlYW1IYW5kbGVJbXBsOjpjcmVhdGVTdHJlYW1zKCkK
ICAgICB9CiAKICAgICBpZiAoc2hvdWxkVXNlU1NMKCkpIHsKLSAgICAgICAgQ0ZCb29sZWFuUmVm
IHZhbGlkYXRlQ2VydGlmaWNhdGVDaGFpbiA9IERlcHJlY2F0ZWRHbG9iYWxTZXR0aW5nczo6YWxs
b3dzQW55U1NMQ2VydGlmaWNhdGUoKSA/IGtDRkJvb2xlYW5GYWxzZSA6IGtDRkJvb2xlYW5UcnVl
OworICAgICAgICBDRkJvb2xlYW5SZWYgdmFsaWRhdGVDZXJ0aWZpY2F0ZUNoYWluID0gRGVwcmVj
YXRlZEdsb2JhbFNldHRpbmdzOjphbGxvd3NBbnlTU0xDZXJ0aWZpY2F0ZUZvcldlYlNvY2tldFRl
c3RpbmcoKSA/IGtDRkJvb2xlYW5GYWxzZSA6IGtDRkJvb2xlYW5UcnVlOwogICAgICAgICBjb25z
dCB2b2lkKiBrZXlzW10gPSB7IGtDRlN0cmVhbVNTTFBlZXJOYW1lLCBrQ0ZTdHJlYW1TU0xMZXZl
bCwga0NGU3RyZWFtU1NMVmFsaWRhdGVzQ2VydGlmaWNhdGVDaGFpbiB9OwogICAgICAgICBjb25z
dCB2b2lkKiB2YWx1ZXNbXSA9IHsgaG9zdC5nZXQoKSwga0NGU3RyZWFtU29ja2V0U2VjdXJpdHlM
ZXZlbE5lZ290aWF0ZWRTU0wsIHZhbGlkYXRlQ2VydGlmaWNhdGVDaGFpbiB9OwogICAgICAgICBS
ZXRhaW5QdHI8Q0ZEaWN0aW9uYXJ5UmVmPiBzZXR0aW5ncyA9IGFkb3B0Q0YoQ0ZEaWN0aW9uYXJ5
Q3JlYXRlKDAsIGtleXMsIHZhbHVlcywgV1RGX0FSUkFZX0xFTkdUSChrZXlzKSwgJmtDRlR5cGVE
aWN0aW9uYXJ5S2V5Q2FsbEJhY2tzLCAma0NGVHlwZURpY3Rpb25hcnlWYWx1ZUNhbGxCYWNrcykp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1NvY2tl
dFN0cmVhbUhhbmRsZUltcGwuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291
cC9Tb2NrZXRTdHJlYW1IYW5kbGVJbXBsLmgKaW5kZXggOGEzMmViMTM2ZjEzMjRlOTIwMjlhY2Jl
ZjBhYjY4ZjI2NGZlOGIxMS4uM2Y3ODdlYzMwNjkxYWE2ZjhmYjI0YzQwNmI0NDAwNTY0NzM4MDVl
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1NvY2tl
dFN0cmVhbUhhbmRsZUltcGwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L3NvdXAvU29ja2V0U3RyZWFtSGFuZGxlSW1wbC5oCkBAIC02Myw2ICs2MywxMiBAQCBwcml2YXRl
OgogICAgIHZvaWQgYmVnaW5XYWl0aW5nRm9yU29ja2V0V3JpdGFiaWxpdHkoKTsKICAgICB2b2lk
IHN0b3BXYWl0aW5nRm9yU29ja2V0V3JpdGFiaWxpdHkoKTsKIAorI2lmIFNPVVBfQ0hFQ0tfVkVS
U0lPTigyLCA2MSwgOTApCisgICAgc3RhdGljIHZvaWQgY29ubmVjdFByb2dyZXNzQ2FsbGJhY2so
U291cFNlc3Npb24qLCBHU29ja2V0Q2xpZW50RXZlbnQsIEdJT1N0cmVhbSogY29ubmVjdGlvbiwg
U29ja2V0U3RyZWFtSGFuZGxlSW1wbCopOworI2Vsc2UKKyAgICBzdGF0aWMgdm9pZCBzb2NrZXRD
bGllbnRFdmVudENhbGxiYWNrKEdTb2NrZXRDbGllbnQqLCBHU29ja2V0Q2xpZW50RXZlbnQsIEdT
b2NrZXRDb25uZWN0YWJsZSosIEdJT1N0cmVhbSogY29ubmVjdGlvbiwgU29ja2V0U3RyZWFtSGFu
ZGxlSW1wbCopOworI2VuZGlmCisgICAgc3RhdGljIGdib29sZWFuIGFjY2VwdENlcnRpZmljYXRl
Q2FsbGJhY2soR1Rsc0Nvbm5lY3Rpb24qLCBHVGxzQ2VydGlmaWNhdGUqLCBHVGxzQ2VydGlmaWNh
dGVGbGFncywgU29ja2V0U3RyZWFtSGFuZGxlSW1wbCopOwogICAgIHN0YXRpYyB2b2lkIGNvbm5l
Y3RlZENhbGxiYWNrKEdPYmplY3QqLCBHQXN5bmNSZXN1bHQqLCBTb2NrZXRTdHJlYW1IYW5kbGVJ
bXBsKik7CiAgICAgc3RhdGljIHZvaWQgcmVhZFJlYWR5Q2FsbGJhY2soR0lucHV0U3RyZWFtKiwg
R0FzeW5jUmVzdWx0KiwgU29ja2V0U3RyZWFtSGFuZGxlSW1wbCopOwogICAgIHN0YXRpYyBnYm9v
bGVhbiB3cml0ZVJlYWR5Q2FsbGJhY2soR1BvbGxhYmxlT3V0cHV0U3RyZWFtKiwgU29ja2V0U3Ry
ZWFtSGFuZGxlSW1wbCopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9zb3VwL1NvY2tldFN0cmVhbUhhbmRsZUltcGxTb3VwLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvc291cC9Tb2NrZXRTdHJlYW1IYW5kbGVJbXBsU291cC5jcHAKaW5k
ZXggMTc4ODA2NjMyOWEzNDZiNzZiNjE3OWQyYjIyNGJkMzA2OTU3NDVhMy4uNWI5M2VmOTgwZDU4
MDQ5ODU2M2ZmNTZiNmU5OTc3MjllZmRmODEwNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9zb3VwL1NvY2tldFN0cmVhbUhhbmRsZUltcGxTb3VwLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvU29ja2V0U3RyZWFtSGFuZGxl
SW1wbFNvdXAuY3BwCkBAIC0zOCw2ICszOCw3IEBACiAjaW5jbHVkZSAiTG9nZ2luZy5oIgogI2lu
Y2x1ZGUgIlNvY2tldFN0cmVhbUVycm9yLmgiCiAjaW5jbHVkZSAiU29ja2V0U3RyZWFtSGFuZGxl
Q2xpZW50LmgiCisjaW5jbHVkZSAiU291cE5ldHdvcmtTZXNzaW9uLmgiCiAjaW5jbHVkZSAiVVJM
LmgiCiAjaW5jbHVkZSA8Z2lvL2dpby5oPgogI2luY2x1ZGUgPGdsaWIuaD4KQEAgLTUwLDI2ICs1
MSwyOCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXN0YXRpYyBnYm9vbGVhbiB3c3NDb25u
ZWN0aW9uQWNjZXB0Q2VydGlmaWNhdGVDYWxsYmFjayhHVGxzQ29ubmVjdGlvbiosIEdUbHNDZXJ0
aWZpY2F0ZSosIEdUbHNDZXJ0aWZpY2F0ZUZsYWdzKQorZ2Jvb2xlYW4gU29ja2V0U3RyZWFtSGFu
ZGxlSW1wbDo6YWNjZXB0Q2VydGlmaWNhdGVDYWxsYmFjayhHVGxzQ29ubmVjdGlvbiosIEdUbHND
ZXJ0aWZpY2F0ZSogY2VydGlmaWNhdGUsIEdUbHNDZXJ0aWZpY2F0ZUZsYWdzLCBTb2NrZXRTdHJl
YW1IYW5kbGVJbXBsKiBpbXBsKQogewotICAgIHJldHVybiBUUlVFOworICAgIC8vIEZJWE1FOiBV
c2luZyBEZXByZWNhdGVkR2xvYmFsU2V0dGluZ3MgZnJvbSBoZXJlIGlzIGEgbGF5ZXJpbmcgdmlv
bGF0aW9uLgorICAgIHJldHVybiBTb3VwTmV0d29ya1Nlc3Npb246OnNob3VsZEFsbG93U3BlY2lm
aWNIVFRQU0NlcnRpZmljYXRlRm9ySG9zdChjZXJ0aWZpY2F0ZSwgaW1wbC0+bV91cmwuaG9zdCgp
KQorICAgICAgICB8fCBEZXByZWNhdGVkR2xvYmFsU2V0dGluZ3M6OmFsbG93c0FueVNTTENlcnRp
ZmljYXRlRm9yV2ViU29ja2V0VGVzdGluZygpOwogfQogCiAjaWYgU09VUF9DSEVDS19WRVJTSU9O
KDIsIDYxLCA5MCkKLXN0YXRpYyB2b2lkIHdzc1NvY2tldENsaWVudEV2ZW50Q2FsbGJhY2soU291
cFNlc3Npb24qLCBHU29ja2V0Q2xpZW50RXZlbnQgZXZlbnQsIEdJT1N0cmVhbSogY29ubmVjdGlv
bikKK3ZvaWQgU29ja2V0U3RyZWFtSGFuZGxlSW1wbDo6Y29ubmVjdFByb2dyZXNzQ2FsbGJhY2so
U291cFNlc3Npb24qLCBHU29ja2V0Q2xpZW50RXZlbnQgZXZlbnQsIEdJT1N0cmVhbSogY29ubmVj
dGlvbiwgU29ja2V0U3RyZWFtSGFuZGxlSW1wbCogaW1wbCkKIHsKICAgICBpZiAoZXZlbnQgIT0g
R19TT0NLRVRfQ0xJRU5UX1RMU19IQU5EU0hBS0lORykKICAgICAgICAgcmV0dXJuOwogCi0gICAg
Z19zaWduYWxfY29ubmVjdChjb25uZWN0aW9uLCAiYWNjZXB0LWNlcnRpZmljYXRlIiwgR19DQUxM
QkFDSyh3c3NDb25uZWN0aW9uQWNjZXB0Q2VydGlmaWNhdGVDYWxsYmFjayksIG51bGxwdHIpOwor
ICAgIGdfc2lnbmFsX2Nvbm5lY3QoY29ubmVjdGlvbiwgImFjY2VwdC1jZXJ0aWZpY2F0ZSIsIEdf
Q0FMTEJBQ0soYWNjZXB0Q2VydGlmaWNhdGVDYWxsYmFjayksIGltcGwpOwogfQogI2Vsc2UKLXN0
YXRpYyB2b2lkIHdzc1NvY2tldENsaWVudEV2ZW50Q2FsbGJhY2soR1NvY2tldENsaWVudCosIEdT
b2NrZXRDbGllbnRFdmVudCBldmVudCwgR1NvY2tldENvbm5lY3RhYmxlKiwgR0lPU3RyZWFtKiBj
b25uZWN0aW9uKQordm9pZCBTb2NrZXRTdHJlYW1IYW5kbGVJbXBsOjpzb2NrZXRDbGllbnRFdmVu
dENhbGxiYWNrKEdTb2NrZXRDbGllbnQqLCBHU29ja2V0Q2xpZW50RXZlbnQgZXZlbnQsIEdTb2Nr
ZXRDb25uZWN0YWJsZSosIEdJT1N0cmVhbSogY29ubmVjdGlvbiwgU29ja2V0U3RyZWFtSGFuZGxl
SW1wbCogaW1wbCkKIHsKICAgICBpZiAoZXZlbnQgIT0gR19TT0NLRVRfQ0xJRU5UX1RMU19IQU5E
U0hBS0lORykKICAgICAgICAgcmV0dXJuOwogCi0gICAgZ19zaWduYWxfY29ubmVjdChjb25uZWN0
aW9uLCAiYWNjZXB0LWNlcnRpZmljYXRlIiwgR19DQUxMQkFDSyh3c3NDb25uZWN0aW9uQWNjZXB0
Q2VydGlmaWNhdGVDYWxsYmFjayksIG51bGxwdHIpOworICAgIGdfc2lnbmFsX2Nvbm5lY3QoY29u
bmVjdGlvbiwgImFjY2VwdC1jZXJ0aWZpY2F0ZSIsIEdfQ0FMTEJBQ0soYWNjZXB0Q2VydGlmaWNh
dGVDYWxsYmFjayksIGltcGwpOwogfQogI2VuZGlmCiAKQEAgLTc3LDkgKzgwLDYgQEAgUmVmPFNv
Y2tldFN0cmVhbUhhbmRsZUltcGw+IFNvY2tldFN0cmVhbUhhbmRsZUltcGw6OmNyZWF0ZShjb25z
dCBVUkwmIHVybCwgU29ja2UKIHsKICAgICBSZWY8U29ja2V0U3RyZWFtSGFuZGxlSW1wbD4gc29j
a2V0ID0gYWRvcHRSZWYoKm5ldyBTb2NrZXRTdHJlYW1IYW5kbGVJbXBsKHVybCwgY2xpZW50KSk7
CiAKLSAgICAvLyBGSVhNRTogVXNpbmcgRGVwcmVjYXRlZEdsb2JhbFNldHRpbmdzIGZyb20gaGVy
ZSBpcyBhIGxheWVyaW5nIHZpb2xhdGlvbi4KLSAgICBib29sIGFsbG93c0FueVNTTENlcnRpZmlj
YXRlID0gdXJsLnByb3RvY29sSXMoIndzcyIpICYmIERlcHJlY2F0ZWRHbG9iYWxTZXR0aW5nczo6
YWxsb3dzQW55U1NMQ2VydGlmaWNhdGUoKTsKLQogI2lmIFNPVVBfQ0hFQ0tfVkVSU0lPTigyLCA2
MSwgOTApCiAgICAgYXV0byogbmV0d29ya1N0b3JhZ2VTZXNzaW9uID0gTmV0d29ya1N0b3JhZ2VT
ZXNzaW9uOjpzdG9yYWdlU2Vzc2lvbihzZXNzaW9uSUQpOwogICAgIGlmICghbmV0d29ya1N0b3Jh
Z2VTZXNzaW9uKQpAQCAtODgsNyArODgsNyBAQCBSZWY8U29ja2V0U3RyZWFtSGFuZGxlSW1wbD4g
U29ja2V0U3RyZWFtSGFuZGxlSW1wbDo6Y3JlYXRlKGNvbnN0IFVSTCYgdXJsLCBTb2NrZQogICAg
IGF1dG8gdXJpID0gdXJsLmNyZWF0ZVNvdXBVUkkoKTsKICAgICBSZWY8U29ja2V0U3RyZWFtSGFu
ZGxlPiBwcm90ZWN0ZWRTb2NrZXRTdHJlYW1IYW5kbGUgPSBzb2NrZXQuY29weVJlZigpOwogICAg
IHNvdXBfc2Vzc2lvbl9jb25uZWN0X2FzeW5jKG5ldHdvcmtTdG9yYWdlU2Vzc2lvbi0+Z2V0T3JD
cmVhdGVTb3VwTmV0d29ya1Nlc3Npb24oKS5zb3VwU2Vzc2lvbigpLCB1cmkuZ2V0KCksIHNvY2tl
dC0+bV9jYW5jZWxsYWJsZS5nZXQoKSwKLSAgICAgICAgYWxsb3dzQW55U1NMQ2VydGlmaWNhdGUg
PyByZWludGVycHJldF9jYXN0PFNvdXBTZXNzaW9uQ29ubmVjdFByb2dyZXNzQ2FsbGJhY2s+KHdz
c1NvY2tldENsaWVudEV2ZW50Q2FsbGJhY2spIDogbnVsbHB0ciwKKyAgICAgICAgdXJsLnByb3Rv
Y29sSXMoIndzcyIpID8gcmVpbnRlcnByZXRfY2FzdDxTb3VwU2Vzc2lvbkNvbm5lY3RQcm9ncmVz
c0NhbGxiYWNrPihjb25uZWN0UHJvZ3Jlc3NDYWxsYmFjaykgOiBudWxscHRyLAogICAgICAgICBy
ZWludGVycHJldF9jYXN0PEdBc3luY1JlYWR5Q2FsbGJhY2s+KGNvbm5lY3RlZENhbGxiYWNrKSwg
JnByb3RlY3RlZFNvY2tldFN0cmVhbUhhbmRsZS5sZWFrUmVmKCkpOwogI2Vsc2UKICAgICBVTlVT
RURfUEFSQU0oc2Vzc2lvbklEKTsKQEAgLTk2LDggKzk2LDcgQEAgUmVmPFNvY2tldFN0cmVhbUhh
bmRsZUltcGw+IFNvY2tldFN0cmVhbUhhbmRsZUltcGw6OmNyZWF0ZShjb25zdCBVUkwmIHVybCwg
U29ja2UKICAgICBHUmVmUHRyPEdTb2NrZXRDbGllbnQ+IHNvY2tldENsaWVudCA9IGFkb3B0R1Jl
ZihnX3NvY2tldF9jbGllbnRfbmV3KCkpOwogICAgIGlmICh1cmwucHJvdG9jb2xJcygid3NzIikp
IHsKICAgICAgICAgZ19zb2NrZXRfY2xpZW50X3NldF90bHMoc29ja2V0Q2xpZW50LmdldCgpLCBU
UlVFKTsKLSAgICAgICAgaWYgKGFsbG93c0FueVNTTENlcnRpZmljYXRlKQotICAgICAgICAgICAg
Z19zaWduYWxfY29ubmVjdChzb2NrZXRDbGllbnQuZ2V0KCksICJldmVudCIsIEdfQ0FMTEJBQ0so
d3NzU29ja2V0Q2xpZW50RXZlbnRDYWxsYmFjayksIG51bGxwdHIpOworICAgICAgICBnX3NpZ25h
bF9jb25uZWN0KHNvY2tldENsaWVudC5nZXQoKSwgImV2ZW50IiwgR19DQUxMQkFDSyhzb2NrZXRD
bGllbnRFdmVudENhbGxiYWNrKSwgJnNvY2tldC5nZXQoKSk7CiAgICAgfQogICAgIFJlZjxTb2Nr
ZXRTdHJlYW1IYW5kbGU+IHByb3RlY3RlZFNvY2tldFN0cmVhbUhhbmRsZSA9IHNvY2tldC5jb3B5
UmVmKCk7CiAgICAgZ19zb2NrZXRfY2xpZW50X2Nvbm5lY3RfdG9faG9zdF9hc3luYyhzb2NrZXRD
bGllbnQuZ2V0KCksIHVybC5ob3N0KCkudXRmOCgpLmRhdGEoKSwgcG9ydCwgc29ja2V0LT5tX2Nh
bmNlbGxhYmxlLmdldCgpLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9zb3VwL1NvdXBOZXR3b3JrU2Vzc2lvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL3NvdXAvU291cE5ldHdvcmtTZXNzaW9uLmNwcAppbmRleCA1ZTY3OTg2OWUxYTc4
ZjIyOWVjOWFhOWYyYWVmNDk4MjEzNjA4YWJjLi45ODk3MTAxZmYwNzhiMmE4YzUyZTBmN2E3YTBi
NDRmNWIyMGUwMjBkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L3NvdXAvU291cE5ldHdvcmtTZXNzaW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL3NvdXAvU291cE5ldHdvcmtTZXNzaW9uLmNwcApAQCAtMjcxLDExICsyNzEsNiBA
QCB2b2lkIFNvdXBOZXR3b3JrU2Vzc2lvbjo6c2V0U2hvdWxkSWdub3JlVExTRXJyb3JzKGJvb2wg
aWdub3JlVExTRXJyb3JzKQogCiB2b2lkIFNvdXBOZXR3b3JrU2Vzc2lvbjo6Y2hlY2tUTFNFcnJv
cnMoU291cFJlcXVlc3QqIHNvdXBSZXF1ZXN0LCBTb3VwTWVzc2FnZSogbWVzc2FnZSwgV1RGOjpG
dW5jdGlvbjx2b2lkIChjb25zdCBSZXNvdXJjZUVycm9yJik+JiYgY29tcGxldGlvbkhhbmRsZXIp
CiB7Ci0gICAgaWYgKGdJZ25vcmVUTFNFcnJvcnMpIHsKLSAgICAgICAgY29tcGxldGlvbkhhbmRs
ZXIoeyB9KTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQogICAgIEdUbHNDZXJ0aWZpY2F0ZSog
Y2VydGlmaWNhdGUgPSBudWxscHRyOwogICAgIEdUbHNDZXJ0aWZpY2F0ZUZsYWdzIHRsc0Vycm9y
cyA9IHN0YXRpY19jYXN0PEdUbHNDZXJ0aWZpY2F0ZUZsYWdzPigwKTsKICAgICBzb3VwX21lc3Nh
Z2VfZ2V0X2h0dHBzX3N0YXR1cyhtZXNzYWdlLCAmY2VydGlmaWNhdGUsICZ0bHNFcnJvcnMpOwpA
QCAtMjg0LDE0ICsyNzksMTEgQEAgdm9pZCBTb3VwTmV0d29ya1Nlc3Npb246OmNoZWNrVExTRXJy
b3JzKFNvdXBSZXF1ZXN0KiBzb3VwUmVxdWVzdCwgU291cE1lc3NhZ2UqIG0KICAgICAgICAgcmV0
dXJuOwogICAgIH0KIAotICAgIFVSTCB1cmwoc291cF9yZXF1ZXN0X2dldF91cmkoc291cFJlcXVl
c3QpKTsKLSAgICBhdXRvIGl0ID0gY2xpZW50Q2VydGlmaWNhdGVzKCkuZmluZCh1cmwuaG9zdCgp
KTsKLSAgICBpZiAoaXQgIT0gY2xpZW50Q2VydGlmaWNhdGVzKCkuZW5kKCkgJiYgaXQtPnZhbHVl
LmNvbnRhaW5zKGNlcnRpZmljYXRlKSkgeworICAgIFVSTCB1cmwgeyBzb3VwX3JlcXVlc3RfZ2V0
X3VyaShzb3VwUmVxdWVzdCkgfTsKKyAgICBpZiAoc2hvdWxkQWxsb3dTcGVjaWZpY0hUVFBTQ2Vy
dGlmaWNhdGVGb3JIb3N0KGNlcnRpZmljYXRlLCB1cmwuaG9zdCgpKSkKICAgICAgICAgY29tcGxl
dGlvbkhhbmRsZXIoeyB9KTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGNvbXBsZXRp
b25IYW5kbGVyKFJlc291cmNlRXJyb3I6OnRsc0Vycm9yKHNvdXBSZXF1ZXN0LCB0bHNFcnJvcnMs
IGNlcnRpZmljYXRlKSk7CisgICAgZWxzZQorICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihSZXNv
dXJjZUVycm9yOjp0bHNFcnJvcihzb3VwUmVxdWVzdCwgdGxzRXJyb3JzLCBjZXJ0aWZpY2F0ZSkp
OwogfQogCiB2b2lkIFNvdXBOZXR3b3JrU2Vzc2lvbjo6YWxsb3dTcGVjaWZpY0hUVFBTQ2VydGlm
aWNhdGVGb3JIb3N0KGNvbnN0IENlcnRpZmljYXRlSW5mbyYgY2VydGlmaWNhdGVJbmZvLCBjb25z
dCBTdHJpbmcmIGhvc3QpCkBAIC0yOTksNiArMjkxLDE4IEBAIHZvaWQgU291cE5ldHdvcmtTZXNz
aW9uOjphbGxvd1NwZWNpZmljSFRUUFNDZXJ0aWZpY2F0ZUZvckhvc3QoY29uc3QgQ2VydGlmaWNh
dGVJCiAgICAgY2xpZW50Q2VydGlmaWNhdGVzKCkuYWRkKGhvc3QsIEhvc3RUTFNDZXJ0aWZpY2F0
ZVNldCgpKS5pdGVyYXRvci0+dmFsdWUuYWRkKGNlcnRpZmljYXRlSW5mby5jZXJ0aWZpY2F0ZSgp
KTsKIH0KIAorYm9vbCBTb3VwTmV0d29ya1Nlc3Npb246OnNob3VsZEFsbG93U3BlY2lmaWNIVFRQ
U0NlcnRpZmljYXRlRm9ySG9zdChHVGxzQ2VydGlmaWNhdGUqIGNlcnRpZmljYXRlLCBjb25zdCBT
dHJpbmcmIGhvc3QpCit7CisgICAgaWYgKGdJZ25vcmVUTFNFcnJvcnMpCisgICAgICAgIHJldHVy
biB0cnVlOworCisgICAgYXV0byBpdCA9IGNsaWVudENlcnRpZmljYXRlcygpLmZpbmQoaG9zdCk7
CisgICAgaWYgKGl0ICE9IGNsaWVudENlcnRpZmljYXRlcygpLmVuZCgpICYmIGl0LT52YWx1ZS5j
b250YWlucyhjZXJ0aWZpY2F0ZSkpCisgICAgICAgIHJldHVybiB0cnVlOworCisgICAgcmV0dXJu
IGZhbHNlOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1NvdXBOZXR3b3JrU2Vzc2lv
bi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1NvdXBOZXR3b3JrU2Vz
c2lvbi5oCmluZGV4IGIwZmE1NGRlMzQyMWFmNmRiYmE3YjA5MTlmOTNlZGNjM2MzZjdjOTIuLjdk
ZTEwNTMxYjIwNTQxYzAxYTAzYWFjOGEzMDBhMDRjZjZiOTliYzYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9Tb3VwTmV0d29ya1Nlc3Npb24uaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvU291cE5ldHdvcmtTZXNzaW9u
LmgKQEAgLTMzLDYgKzMzLDcgQEAKICNpbmNsdWRlIDx3dGYvZ2xpYi9HUmVmUHRyLmg+CiAjaW5j
bHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKK3R5cGVkZWYgc3RydWN0IF9HVGxzQ2VydGlm
aWNhdGUgR1Rsc0NlcnRpZmljYXRlOwogdHlwZWRlZiBzdHJ1Y3QgX1NvdXBDYWNoZSBTb3VwQ2Fj
aGU7CiB0eXBlZGVmIHN0cnVjdCBfU291cENvb2tpZUphciBTb3VwQ29va2llSmFyOwogdHlwZWRl
ZiBzdHJ1Y3QgX1NvdXBNZXNzYWdlIFNvdXBNZXNzYWdlOwpAQCAtNjcsNiArNjgsNyBAQCBwdWJs
aWM6CiAgICAgc3RhdGljIHZvaWQgc2V0U2hvdWxkSWdub3JlVExTRXJyb3JzKGJvb2wpOwogICAg
IHN0YXRpYyB2b2lkIGNoZWNrVExTRXJyb3JzKFNvdXBSZXF1ZXN0KiwgU291cE1lc3NhZ2UqLCBX
VEY6OkZ1bmN0aW9uPHZvaWQgKGNvbnN0IFJlc291cmNlRXJyb3ImKT4mJik7CiAgICAgc3RhdGlj
IHZvaWQgYWxsb3dTcGVjaWZpY0hUVFBTQ2VydGlmaWNhdGVGb3JIb3N0KGNvbnN0IENlcnRpZmlj
YXRlSW5mbyYsIGNvbnN0IFN0cmluZyYgaG9zdCk7CisgICAgc3RhdGljIGJvb2wgc2hvdWxkQWxs
b3dTcGVjaWZpY0hUVFBTQ2VydGlmaWNhdGVGb3JIb3N0KEdUbHNDZXJ0aWZpY2F0ZSosIGNvbnN0
IFN0cmluZyYgaG9zdCk7CiAKICAgICBzdGF0aWMgdm9pZCBzZXRDdXN0b21Qcm90b2NvbFJlcXVl
c3RUeXBlKEdUeXBlKTsKICAgICB2b2lkIHNldHVwQ3VzdG9tUHJvdG9jb2xzKCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFsU2V0dGluZ3MuY3BwIGIvU291cmNl
L1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbFNldHRpbmdzLmNwcAppbmRleCA1MTc1ZGExMmM5NzE4
MDU3ODAzYTRjNDdkNmYxODA1ODNhMzViZDhlLi5kYmQ3MDUwZThkMGNkNGEzYjBlOTI3Y2UzZDdj
NDVkNDQ5MDk5NzQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFs
U2V0dGluZ3MuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxTZXR0aW5n
cy5jcHAKQEAgLTE5Niw3ICsxOTYsNyBAQCB2b2lkIEludGVybmFsU2V0dGluZ3M6OkJhY2t1cDo6
cmVzdG9yZVRvKFNldHRpbmdzJiBzZXR0aW5ncykKICAgICBzZXR0aW5ncy5zZXRGb3JjZWREaXNw
bGF5SXNNb25vY2hyb21lQWNjZXNzaWJpbGl0eVZhbHVlKG1fZm9yY2VkRGlzcGxheUlzTW9ub2No
cm9tZUFjY2Vzc2liaWxpdHlWYWx1ZSk7CiAgICAgc2V0dGluZ3Muc2V0Rm9yY2VkUHJlZmVyc1Jl
ZHVjZWRNb3Rpb25BY2Nlc3NpYmlsaXR5VmFsdWUobV9mb3JjZWRQcmVmZXJzUmVkdWNlZE1vdGlv
bkFjY2Vzc2liaWxpdHlWYWx1ZSk7CiAgICAgc2V0dGluZ3Muc2V0Rm9udExvYWRUaW1pbmdPdmVy
cmlkZShtX2ZvbnRMb2FkVGltaW5nT3ZlcnJpZGUpOwotICAgIERlcHJlY2F0ZWRHbG9iYWxTZXR0
aW5nczo6c2V0QWxsb3dzQW55U1NMQ2VydGlmaWNhdGUoZmFsc2UpOworICAgIERlcHJlY2F0ZWRH
bG9iYWxTZXR0aW5nczo6c2V0QWxsb3dzQW55U1NMQ2VydGlmaWNhdGVGb3JXZWJTb2NrZXRUZXN0
aW5nKGZhbHNlKTsKICAgICBSZW5kZXJUaGVtZTo6c2luZ2xldG9uKCkuc2V0U2hvdWxkTW9ja0Jv
bGRTeXN0ZW1Gb250Rm9yQWNjZXNzaWJpbGl0eShtX3Nob3VsZE1vY2tCb2xkU3lzdGVtRm9udEZv
ckFjY2Vzc2liaWxpdHkpOwogICAgIEZvbnRDYWNoZTo6c2luZ2xldG9uKCkuc2V0U2hvdWxkTW9j
a0JvbGRTeXN0ZW1Gb250Rm9yQWNjZXNzaWJpbGl0eShtX3Nob3VsZE1vY2tCb2xkU3lzdGVtRm9u
dEZvckFjY2Vzc2liaWxpdHkpOwogICAgIHNldHRpbmdzLnNldEZyYW1lRmxhdHRlbmluZyhtX2Zy
YW1lRmxhdHRlbmluZyk7CkBAIC04MzYsMTIgKzgzNiw5IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IElu
dGVybmFsU2V0dGluZ3M6OnNldEZyYW1lRmxhdHRlbmluZyhGcmFtZUZsYXR0ZW5pbmdWYWx1ZSBm
cmFtCiAgICAgcmV0dXJuIHsgfTsKIH0KIAotdm9pZCBJbnRlcm5hbFNldHRpbmdzOjpzZXRBbGxv
d3NBbnlTU0xDZXJ0aWZpY2F0ZShib29sIGFsbG93c0FueUNlcnRpZmljYXRlKQordm9pZCBJbnRl
cm5hbFNldHRpbmdzOjpzZXRBbGxvd3NBbnlTU0xDZXJ0aWZpY2F0ZUZvcldlYlNvY2tldFRlc3Rp
bmcoYm9vbCBhbGxvd3NBbnlDZXJ0aWZpY2F0ZSkKIHsKLSAgICBEZXByZWNhdGVkR2xvYmFsU2V0
dGluZ3M6OnNldEFsbG93c0FueVNTTENlcnRpZmljYXRlKGFsbG93c0FueUNlcnRpZmljYXRlKTsK
LSNpZiBVU0UoU09VUCkKLSAgICBTb3VwTmV0d29ya1Nlc3Npb246OnNldFNob3VsZElnbm9yZVRM
U0Vycm9ycyhhbGxvd3NBbnlDZXJ0aWZpY2F0ZSk7Ci0jZW5kaWYKKyAgICBEZXByZWNhdGVkR2xv
YmFsU2V0dGluZ3M6OnNldEFsbG93c0FueVNTTENlcnRpZmljYXRlRm9yV2ViU29ja2V0VGVzdGlu
ZyhhbGxvd3NBbnlDZXJ0aWZpY2F0ZSk7CiB9CiAKIEV4Y2VwdGlvbk9yPGJvb2w+IEludGVybmFs
U2V0dGluZ3M6OmRlZmVycmVkQ1NTUGFyc2VyRW5hYmxlZCgpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS90ZXN0aW5nL0ludGVybmFsU2V0dGluZ3MuaCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3Rp
bmcvSW50ZXJuYWxTZXR0aW5ncy5oCmluZGV4IDRjYzI5ZmU4ODYyMGI4NWZlN2RhNzc2MzU3YTAy
NzQyMmYxMmMyMjIuLjM3YWIxZmRjOGM0ZWI3ZTYzYTRiOTdjOTQ0YzcyNTBmN2IwNzJiOGQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxTZXR0aW5ncy5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxTZXR0aW5ncy5oCkBAIC0xMDQsNyArMTA0
LDcgQEAgcHVibGljOgogICAgIHVzaW5nIEZyYW1lRmxhdHRlbmluZ1ZhbHVlID0gRnJhbWVGbGF0
dGVuaW5nOwogICAgIEV4Y2VwdGlvbk9yPHZvaWQ+IHNldEZyYW1lRmxhdHRlbmluZyhGcmFtZUZs
YXR0ZW5pbmdWYWx1ZSk7CiAgICAgCi0gICAgc3RhdGljIHZvaWQgc2V0QWxsb3dzQW55U1NMQ2Vy
dGlmaWNhdGUoYm9vbCk7CisgICAgc3RhdGljIHZvaWQgc2V0QWxsb3dzQW55U1NMQ2VydGlmaWNh
dGVGb3JXZWJTb2NrZXRUZXN0aW5nKGJvb2wpOwogCiAgICAgRXhjZXB0aW9uT3I8Ym9vbD4gZGVm
ZXJyZWRDU1NQYXJzZXJFbmFibGVkKCk7CiAgICAgRXhjZXB0aW9uT3I8dm9pZD4gc2V0RGVmZXJy
ZWRDU1NQYXJzZXJFbmFibGVkKGJvb2wpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVz
dGluZy9qcy9XZWJDb3JlVGVzdFN1cHBvcnQuY3BwIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9q
cy9XZWJDb3JlVGVzdFN1cHBvcnQuY3BwCmluZGV4IGMwMThjZWU4NjZjMmZhY2Y3ZDc3OTcyNDBh
YTQwMTlhNjAxNmI0ZWUuLjc5MzY1Yzc4NTFlYTFkNmJmMmQ1NmM1M2QzMmI5YTI4ZjQyZDEyMjIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvanMvV2ViQ29yZVRlc3RTdXBwb3J0
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL2pzL1dlYkNvcmVUZXN0U3VwcG9ydC5j
cHAKQEAgLTEyMCw5ICsxMjAsOSBAQCB2b2lkIGluaXRpYWxpemVMb2dDaGFubmVsc0lmTmVjZXNz
YXJ5KCkKICNlbmRpZgogfQogCi12b2lkIHNldEFsbG93c0FueVNTTENlcnRpZmljYXRlKGJvb2wg
YWxsb3dBbnlTU0xDZXJ0aWZpY2F0ZSkKK3ZvaWQgc2V0QWxsb3dzQW55U1NMQ2VydGlmaWNhdGVG
b3JXZWJTb2NrZXRUZXN0aW5nKGJvb2wgYWxsb3dBbnlTU0xDZXJ0aWZpY2F0ZUZvcldlYlNvY2tl
dFRlc3RpbmcpCiB7Ci0gICAgSW50ZXJuYWxTZXR0aW5nczo6c2V0QWxsb3dzQW55U1NMQ2VydGlm
aWNhdGUoYWxsb3dBbnlTU0xDZXJ0aWZpY2F0ZSk7CisgICAgSW50ZXJuYWxTZXR0aW5nczo6c2V0
QWxsb3dzQW55U1NMQ2VydGlmaWNhdGVGb3JXZWJTb2NrZXRUZXN0aW5nKGFsbG93QW55U1NMQ2Vy
dGlmaWNhdGVGb3JXZWJTb2NrZXRUZXN0aW5nKTsKIH0KIAogdm9pZCBpbnN0YWxsTW9ja0dhbWVw
YWRQcm92aWRlcigpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL2pzL1dlYkNv
cmVUZXN0U3VwcG9ydC5oIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9qcy9XZWJDb3JlVGVzdFN1
cHBvcnQuaAppbmRleCBiM2YzOWNkNWE5MjY3YjIwYTExZDZhYTQ5OTA1YjkwMGEwMTU1MWM5Li5k
NmY5ZDQ1MDhjZjRmZDAxNDc5NzcxNjhkNTg5MDg3YTM2ZjdjMGUzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS90ZXN0aW5nL2pzL1dlYkNvcmVUZXN0U3VwcG9ydC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3Rlc3RpbmcvanMvV2ViQ29yZVRlc3RTdXBwb3J0LmgKQEAgLTUyLDcgKzUyLDcgQEAg
dm9pZCBjbGVhcldoZWVsRXZlbnRUZXN0VHJpZ2dlcihXZWJDb3JlOjpGcmFtZSYpIFRFU1RfU1VQ
UE9SVF9FWFBPUlQ7CiAKIHZvaWQgc2V0TG9nQ2hhbm5lbFRvQWNjdW11bGF0ZShjb25zdCBXVEY6
OlN0cmluZyYgbmFtZSkgVEVTVF9TVVBQT1JUX0VYUE9SVDsKIHZvaWQgaW5pdGlhbGl6ZUxvZ0No
YW5uZWxzSWZOZWNlc3NhcnkoKSBURVNUX1NVUFBPUlRfRVhQT1JUOwotdm9pZCBzZXRBbGxvd3NB
bnlTU0xDZXJ0aWZpY2F0ZShib29sKSBURVNUX1NVUFBPUlRfRVhQT1JUOwordm9pZCBzZXRBbGxv
d3NBbnlTU0xDZXJ0aWZpY2F0ZUZvcldlYlNvY2tldFRlc3RpbmcoYm9vbCkgVEVTVF9TVVBQT1JU
X0VYUE9SVDsKIAogdm9pZCBpbnN0YWxsTW9ja0dhbWVwYWRQcm92aWRlcigpIFRFU1RfU1VQUE9S
VF9FWFBPUlQ7CiB2b2lkIGNvbm5lY3RNb2NrR2FtZXBhZCh1bnNpZ25lZCBpbmRleCkgVEVTVF9T
VVBQT1JUX0VYUE9SVDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya1Byb2Nlc3MuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
UHJvY2Vzcy5jcHAKaW5kZXggM2IwZmYyMDE4NTExNTQ0NWJhODFlODcwYjQyOTUwNTdkNTM2ZGI5
MC4uOTNiOWQ5NmNkZDgyMGUyZjliOGY1MGM3ZjkyZTdjMWM0Yjg2Zjc3ZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAKQEAgLTc1Niw5ICs3
NTYsOSBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpnZXROZXR3b3JrUHJvY2Vzc1N0YXRpc3RpY3Mo
dWludDY0X3QgY2FsbGJhY2tJRCkKICAgICBwYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5k
KE1lc3NhZ2VzOjpXZWJQcm9jZXNzUG9vbDo6RGlkR2V0U3RhdGlzdGljcyhkYXRhLCBjYWxsYmFj
a0lEKSwgMCk7CiB9CiAKLXZvaWQgTmV0d29ya1Byb2Nlc3M6OnNldEFsbG93c0FueVNTTENlcnRp
ZmljYXRlRm9yV2ViU29ja2V0KGJvb2wgYWxsb3dzKQordm9pZCBOZXR3b3JrUHJvY2Vzczo6c2V0
QWxsb3dzQW55U1NMQ2VydGlmaWNhdGVGb3JXZWJTb2NrZXRUZXN0aW5nKGJvb2wgYWxsb3dzKQog
ewotICAgIERlcHJlY2F0ZWRHbG9iYWxTZXR0aW5nczo6c2V0QWxsb3dzQW55U1NMQ2VydGlmaWNh
dGUoYWxsb3dzKTsKKyAgICBEZXByZWNhdGVkR2xvYmFsU2V0dGluZ3M6OnNldEFsbG93c0FueVNT
TENlcnRpZmljYXRlRm9yV2ViU29ja2V0VGVzdGluZyhhbGxvd3MpOwogfQogCiB2b2lkIE5ldHdv
cmtQcm9jZXNzOjpsb2dEaWFnbm9zdGljTWVzc2FnZSh1aW50NjRfdCB3ZWJQYWdlSUQsIGNvbnN0
IFN0cmluZyYgbWVzc2FnZSwgY29uc3QgU3RyaW5nJiBkZXNjcmlwdGlvbiwgU2hvdWxkU2FtcGxl
IHNob3VsZFNhbXBsZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya1Byb2Nlc3MuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1By
b2Nlc3MuaAppbmRleCBjZTQxMmI0NTkyODZiMzY5ZGYxMmNkMDhmMzMzODVhZDhjOWRkZGU5Li5i
YTk4OTgxZmNmZmJmZWI1NjQ3MTUzYWNjMDdmMDFhZTA2NjM0YjA5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmgKKysrIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oCkBAIC0yMjUsNyArMjI1LDcgQEAg
cHJpdmF0ZToKICAgICB2b2lkIHNldENhbkhhbmRsZUhUVFBTU2VydmVyVHJ1c3RFdmFsdWF0aW9u
KGJvb2wpOwogICAgIHZvaWQgZ2V0TmV0d29ya1Byb2Nlc3NTdGF0aXN0aWNzKHVpbnQ2NF90IGNh
bGxiYWNrSUQpOwogICAgIHZvaWQgY2xlYXJDYWNoZUZvckFsbE9yaWdpbnModWludDMyX3QgY2Fj
aGVzVG9DbGVhcik7Ci0gICAgdm9pZCBzZXRBbGxvd3NBbnlTU0xDZXJ0aWZpY2F0ZUZvcldlYlNv
Y2tldChib29sKTsKKyAgICB2b2lkIHNldEFsbG93c0FueVNTTENlcnRpZmljYXRlRm9yV2ViU29j
a2V0VGVzdGluZyhib29sKTsKICAgICB2b2lkIHN5bmNBbGxDb29raWVzKCk7CiAKICAgICB2b2lk
IGRpZEdyYW50U2FuZGJveEV4dGVuc2lvbnNUb1N0b3JhZ2VQcm9jZXNzRm9yQmxvYnModWludDY0
X3QgcmVxdWVzdElEKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya1Byb2Nlc3MubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L05ldHdvcmtQcm9jZXNzLm1lc3NhZ2VzLmluCmluZGV4IDVlMTgwMzU5ODgxNDlmOWJkZWViNjJj
OWJhNTZkYThhYjU3NzNjMDUuLmQ2OTA4MzRmMjg3ZWU0OTRjNjI4NTgwOGU5MmNkODM0Nzk5N2Q2
Y2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nl
c3MubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
UHJvY2Vzcy5tZXNzYWdlcy5pbgpAQCAtNTgsNyArNTgsNyBAQCBtZXNzYWdlcyAtPiBOZXR3b3Jr
UHJvY2VzcyBMZWdhY3lSZWNlaXZlciB7CiAgICAgU2V0Q29va2llU3RvcmFnZVBhcnRpdGlvbmlu
Z0VuYWJsZWQoYm9vbCBlbmFibGVkKQogICAgIFNldFN0b3JhZ2VBY2Nlc3NBUElFbmFibGVkKGJv
b2wgZW5hYmxlZCkKICNlbmRpZgotICAgIFNldEFsbG93c0FueVNTTENlcnRpZmljYXRlRm9yV2Vi
U29ja2V0KGJvb2wgZW5hYmxlZCkgLT4gKCkKKyAgICBTZXRBbGxvd3NBbnlTU0xDZXJ0aWZpY2F0
ZUZvcldlYlNvY2tldFRlc3RpbmcoYm9vbCBlbmFibGVkKSAtPiAoKQogCiAgICAgU3luY0FsbENv
b2tpZXMoKSAtPiAoKQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Qy9XS0NvbnRleHQuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tDb250ZXh0
LmNwcAppbmRleCA1NDM2NGMyZmY4YTI0YWY1YWVlMzM0MjRlMzBhODA4N2JkZWMyMTUwLi40NmZh
YWEwZDNlNzc1OGY4MjVmNTk5NDM0ZDNhOGI5NTg2MjczZDJkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS0NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9DL1dLQ29udGV4dC5jcHAKQEAgLTU1MCwxMyArNTUwLDEzIEBAIHZvaWQg
V0tDb250ZXh0VXNlVGVzdGluZ05ldHdvcmtTZXNzaW9uKFdLQ29udGV4dFJlZiBjb250ZXh0KQog
CiB2b2lkIFdLQ29udGV4dFNldEFsbG93c0FueVNTTENlcnRpZmljYXRlRm9yV2ViU29ja2V0VGVz
dGluZyhXS0NvbnRleHRSZWYgY29udGV4dCwgYm9vbCBhbGxvd3MpCiB7Ci0gICAgdG9JbXBsKGNv
bnRleHQpLT5zZXRBbGxvd3NBbnlTU0xDZXJ0aWZpY2F0ZUZvcldlYlNvY2tldChhbGxvd3MpOwor
ICAgIHRvSW1wbChjb250ZXh0KS0+c2V0QWxsb3dzQW55U1NMQ2VydGlmaWNhdGVGb3JXZWJTb2Nr
ZXRUZXN0aW5nKGFsbG93cyk7CiB9CiAKIHZvaWQgV0tDb250ZXh0U2V0QWxsb3dzQW55U1NMQ2Vy
dGlmaWNhdGVGb3JTZXJ2aWNlV29ya2VyVGVzdGluZyhXS0NvbnRleHRSZWYgY29udGV4dCwgYm9v
bCBhbGxvd3MpCiB7CiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQotICAgIHRvSW1wbChjb250
ZXh0KS0+c2V0QWxsb3dzQW55U1NMQ2VydGlmaWNhdGVGb3JTZXJ2aWNlV29ya2VyKGFsbG93cyk7
CisgICAgdG9JbXBsKGNvbnRleHQpLT5zZXRBbGxvd3NBbnlTU0xDZXJ0aWZpY2F0ZUZvclNlcnZp
Y2VXb3JrZXJUZXN0aW5nKGFsbG93cyk7CiAjZW5kaWYKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvU2VydmljZVdvcmtlclByb2Nlc3NQcm94eS5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9TZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5LmNwcAppbmRleCBiNjE5
MDRjMDg5OWEzODFkNDFjMzJkMzY0MzJjOTc1OTdjNTY4MTg3Li5lNzFiNmU0M2IwYTgwMzFhZThl
MmZhMDIzZGM1NWZkM2E5N2ZjMDY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9TZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9TZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5LmNwcApAQCAtOTYsNyArOTYsNyBAQCB2b2lk
IFNlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHk6OmRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxs
ZW5nZSh1aW50NjRfdCBwYWdlSQogCiAgICAgLy8gRklYTUU6IEV4cG9zZSBhbiBBUEkgdG8gZGVs
ZWdhdGUgdGhlIGFjdHVhbCBkZWNpc2lvbiB0byB0aGUgYXBwbGljYXRpb24gbGF5ZXIuCiAgICAg
YXV0byYgcHJvdGVjdGlvblNwYWNlID0gY2hhbGxlbmdlLT5jb3JlKCkucHJvdGVjdGlvblNwYWNl
KCk7Ci0gICAgaWYgKHByb3RlY3Rpb25TcGFjZS5hdXRoZW50aWNhdGlvblNjaGVtZSgpID09IFdl
YkNvcmU6OlByb3RlY3Rpb25TcGFjZUF1dGhlbnRpY2F0aW9uU2NoZW1lU2VydmVyVHJ1c3RFdmFs
dWF0aW9uUmVxdWVzdGVkICYmIHByb2Nlc3NQb29sKCkuYWxsb3dzQW55U1NMQ2VydGlmaWNhdGVG
b3JTZXJ2aWNlV29ya2VyKCkpIHsKKyAgICBpZiAocHJvdGVjdGlvblNwYWNlLmF1dGhlbnRpY2F0
aW9uU2NoZW1lKCkgPT0gV2ViQ29yZTo6UHJvdGVjdGlvblNwYWNlQXV0aGVudGljYXRpb25TY2hl
bWVTZXJ2ZXJUcnVzdEV2YWx1YXRpb25SZXF1ZXN0ZWQgJiYgcHJvY2Vzc1Bvb2woKS5hbGxvd3NB
bnlTU0xDZXJ0aWZpY2F0ZUZvclNlcnZpY2VXb3JrZXJUZXN0aW5nKCkpIHsKICAgICAgICAgYXV0
byBjcmVkZW50aWFsID0gV2ViQ29yZTo6Q3JlZGVudGlhbChBU0NJSUxpdGVyYWwoImFjY2VwdCBz
ZXJ2ZXIgdHJ1c3QiKSwgZW1wdHlTdHJpbmcoKSwgV2ViQ29yZTo6Q3JlZGVudGlhbFBlcnNpc3Rl
bmNlTm9uZSk7CiAgICAgICAgIGNoYWxsZW5nZS0+dXNlQ3JlZGVudGlhbChXZWJDcmVkZW50aWFs
OjpjcmVhdGUoY3JlZGVudGlhbCkucHRyKCkpOwogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAKaW5kZXggNjNmN2ZiMDUyYzM2ZGIyMTZi
ZmRmNGRmMGRlOTUxNjkxYjIyNDVlNS4uMDYyMjk4YjgyNTAzNmQ0MWUxMDM4YzdiNDUwNDMwZmVj
ZTczMWQ0ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bv
b2wuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcApA
QCAtMTUxMCw5ICsxNTEwLDkgQEAgdm9pZCBXZWJQcm9jZXNzUG9vbDo6c2VuZFN5bmNUb05ldHdv
cmtpbmdQcm9jZXNzKFQmJiBtZXNzYWdlLCBVJiYgcmVwbHkpCiAgICAgICAgIG1fbmV0d29ya1By
b2Nlc3MtPnNlbmRTeW5jKHN0ZDo6Zm9yd2FyZDxUPihtZXNzYWdlKSwgc3RkOjpmb3J3YXJkPFU+
KHJlcGx5KSwgMCk7CiB9CiAKLXZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnNldEFsbG93c0FueVNTTENl
cnRpZmljYXRlRm9yV2ViU29ja2V0KGJvb2wgYWxsb3dzKQordm9pZCBXZWJQcm9jZXNzUG9vbDo6
c2V0QWxsb3dzQW55U1NMQ2VydGlmaWNhdGVGb3JXZWJTb2NrZXRUZXN0aW5nKGJvb2wgYWxsb3dz
KQogewotICAgIHNlbmRTeW5jVG9OZXR3b3JraW5nUHJvY2VzcyhNZXNzYWdlczo6TmV0d29ya1By
b2Nlc3M6OlNldEFsbG93c0FueVNTTENlcnRpZmljYXRlRm9yV2ViU29ja2V0KGFsbG93cyksIE1l
c3NhZ2VzOjpOZXR3b3JrUHJvY2Vzczo6U2V0QWxsb3dzQW55U1NMQ2VydGlmaWNhdGVGb3JXZWJT
b2NrZXQ6OlJlcGx5KCkpOworICAgIHNlbmRTeW5jVG9OZXR3b3JraW5nUHJvY2VzcyhNZXNzYWdl
czo6TmV0d29ya1Byb2Nlc3M6OlNldEFsbG93c0FueVNTTENlcnRpZmljYXRlRm9yV2ViU29ja2V0
VGVzdGluZyhhbGxvd3MpLCBNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3M6OlNldEFsbG93c0FueVNT
TENlcnRpZmljYXRlRm9yV2ViU29ja2V0VGVzdGluZzo6UmVwbHkoKSk7CiB9CiAKIHZvaWQgV2Vi
UHJvY2Vzc1Bvb2w6OmNsZWFyQ2FjaGVkQ3JlZGVudGlhbHMoKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYlByb2Nlc3NQb29sLmgKaW5kZXggZjgyNGY4NTM2M2Q0MTJhMmQxMjFlMGJkZDIzNDQ2
YjM2MTcwMmQzMS4uYTQ3NjVhOWVlNGExYzI2ZmMxNDUwYjg2YmM0ODRlMjg1YTUxMGM4YyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaAorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oCkBAIC0yNjcsNyArMjY3LDcg
QEAgcHVibGljOgogICAgIHZvaWQgdXNlVGVzdGluZ05ldHdvcmtTZXNzaW9uKCk7CiAgICAgYm9v
bCBpc1VzaW5nVGVzdGluZ05ldHdvcmtTZXNzaW9uKCkgY29uc3QgeyByZXR1cm4gbV9zaG91bGRV
c2VUZXN0aW5nTmV0d29ya1Nlc3Npb247IH0KIAotICAgIHZvaWQgc2V0QWxsb3dzQW55U1NMQ2Vy
dGlmaWNhdGVGb3JXZWJTb2NrZXQoYm9vbCk7CisgICAgdm9pZCBzZXRBbGxvd3NBbnlTU0xDZXJ0
aWZpY2F0ZUZvcldlYlNvY2tldFRlc3RpbmcoYm9vbCk7CiAKICAgICB2b2lkIGNsZWFyQ2FjaGVk
Q3JlZGVudGlhbHMoKTsKICAgICB2b2lkIHRlcm1pbmF0ZVN0b3JhZ2VQcm9jZXNzKCk7CkBAIC0z
MzcsOCArMzM3LDggQEAgcHVibGljOgogICAgIHZvaWQgZXN0YWJsaXNoV29ya2VyQ29udGV4dENv
bm5lY3Rpb25Ub1N0b3JhZ2VQcm9jZXNzKFN0b3JhZ2VQcm9jZXNzUHJveHkmLCBXZWJDb3JlOjpT
ZWN1cml0eU9yaWdpbkRhdGEmJiwgc3RkOjpvcHRpb25hbDxQQUw6OlNlc3Npb25JRD4pOwogICAg
IFNlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHkqIHNlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHlGcm9t
UGFnZUlEKHVpbnQ2NF90IHBhZ2VJRCkgY29uc3Q7CiAgICAgY29uc3QgSGFzaE1hcDxXZWJDb3Jl
OjpTZWN1cml0eU9yaWdpbkRhdGEsIFNlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHkqPiYgc2Vydmlj
ZVdvcmtlclByb3hpZXMoKSBjb25zdCB7IHJldHVybiBtX3NlcnZpY2VXb3JrZXJQcm9jZXNzZXM7
IH0KLSAgICB2b2lkIHNldEFsbG93c0FueVNTTENlcnRpZmljYXRlRm9yU2VydmljZVdvcmtlcihi
b29sIGFsbG93cykgeyBtX2FsbG93c0FueVNTTENlcnRpZmljYXRlRm9yU2VydmljZVdvcmtlciA9
IGFsbG93czsgfQotICAgIGJvb2wgYWxsb3dzQW55U1NMQ2VydGlmaWNhdGVGb3JTZXJ2aWNlV29y
a2VyKCkgY29uc3QgeyByZXR1cm4gbV9hbGxvd3NBbnlTU0xDZXJ0aWZpY2F0ZUZvclNlcnZpY2VX
b3JrZXI7IH0KKyAgICB2b2lkIHNldEFsbG93c0FueVNTTENlcnRpZmljYXRlRm9yU2VydmljZVdv
cmtlclRlc3RpbmcoYm9vbCBhbGxvd3MpIHsgbV9hbGxvd3NBbnlTU0xDZXJ0aWZpY2F0ZUZvclNl
cnZpY2VXb3JrZXJUZXN0aW5nID0gYWxsb3dzOyB9CisgICAgYm9vbCBhbGxvd3NBbnlTU0xDZXJ0
aWZpY2F0ZUZvclNlcnZpY2VXb3JrZXJUZXN0aW5nKCkgY29uc3QgeyByZXR1cm4gbV9hbGxvd3NB
bnlTU0xDZXJ0aWZpY2F0ZUZvclNlcnZpY2VXb3JrZXJUZXN0aW5nOyB9CiAgICAgdm9pZCB1cGRh
dGVTZXJ2aWNlV29ya2VyVXNlckFnZW50KGNvbnN0IFN0cmluZyYgdXNlckFnZW50KTsKICAgICBi
b29sIG1heUhhdmVSZWdpc3RlcmVkU2VydmljZVdvcmtlcnMoY29uc3QgV2Vic2l0ZURhdGFTdG9y
ZSYpOwogI2VuZGlmCkBAIC01MjAsNyArNTIwLDcgQEAgcHJpdmF0ZToKICNpZiBFTkFCTEUoU0VS
VklDRV9XT1JLRVIpCiAgICAgSGFzaE1hcDxXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEsIFNl
cnZpY2VXb3JrZXJQcm9jZXNzUHJveHkqPiBtX3NlcnZpY2VXb3JrZXJQcm9jZXNzZXM7CiAgICAg
Ym9vbCBtX3dhaXRpbmdGb3JXb3JrZXJDb250ZXh0UHJvY2Vzc0Nvbm5lY3Rpb24geyBmYWxzZSB9
OwotICAgIGJvb2wgbV9hbGxvd3NBbnlTU0xDZXJ0aWZpY2F0ZUZvclNlcnZpY2VXb3JrZXIgeyBm
YWxzZSB9OworICAgIGJvb2wgbV9hbGxvd3NBbnlTU0xDZXJ0aWZpY2F0ZUZvclNlcnZpY2VXb3Jr
ZXJUZXN0aW5nIHsgZmFsc2UgfTsKICAgICBib29sIG1fc2hvdWxkRGlzYWJsZVNlcnZpY2VXb3Jr
ZXJQcm9jZXNzVGVybWluYXRpb25EZWxheSB7IGZhbHNlIH07CiAgICAgU3RyaW5nIG1fc2Vydmlj
ZVdvcmtlclVzZXJBZ2VudDsKICAgICBzdGQ6Om9wdGlvbmFsPFdlYlByZWZlcmVuY2VzU3RvcmU+
IG1fc2VydmljZVdvcmtlclByZWZlcmVuY2VzOwpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9n
IGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDhhODk3Yjc3N2RmMDIxMjBmNGE0ZTNjZTEzYjdlNmFk
NTRiMWQyMzguLmUyYWFiNjRhZDQ0ODEyNDljOTBjZWMyZTFkNzY3YmEzNDhlMmZlNmUgMTAwNjQ0
Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwy
MCBAQAorMjAxOC0wNC0xOSAgTWljaGFlbCBDYXRhbnphcm8gIDxtY2F0YW56YXJvQGlnYWxpYS5j
b20+CisKKyAgICAgICAgUkVHUkVTU0lPTihyMjI4MDg4KTogW1NPVVBdIENlcnRpZmljYXRlIHZl
cmlmaWNhdGlvbiBubyBsb25nZXIgcGVyZm9ybWVkIGZvciBzZWN1cmUgV2ViU29ja2V0IGNvbm5l
Y3Rpb25zCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
ODQ4MDQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAq
IER1bXBSZW5kZXJUcmVlL1Rlc3RSdW5uZXIuY3BwOgorICAgICAgICAoVGVzdFJ1bm5lcjo6c2V0
QWxsb3dzQW55U1NMQ2VydGlmaWNhdGUpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViS2l0R0xpYi9UZXN0U1NMLmNwcDoKKyAgICAgICAgKFdlYlNvY2tldFRlc3Q6OnNlcnZlcldl
YlNvY2tldENhbGxiYWNrKToKKyAgICAgICAgKFdlYlNvY2tldFRlc3Q6OndlYlNvY2tldFRlc3RS
ZXN1bHRDYWxsYmFjayk6CisgICAgICAgIChXZWJTb2NrZXRUZXN0Ojpjb25uZWN0VG9TZXJ2ZXJB
bmRXYWl0Rm9yRXZlbnQpOgorICAgICAgICAodGVzdFdlYlNvY2tldFRMU0Vycm9ycyk6CisgICAg
ICAgICogV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5jcHA6
CisgICAgICAgIChXVFI6OkluamVjdGVkQnVuZGxlOjpzZXRBbGxvd3NBbnlTU0xDZXJ0aWZpY2F0
ZSk6CisKIDIwMTgtMDQtMTUgIEFuZHkgRXN0ZXMgIDxhZXN0ZXNAYXBwbGUuY29tPgogCiAgICAg
ICAgIFtpT1NdIEFkZCBBUEkgdGVzdHMgZm9yIFBERiBmaW5kLWluLXBhZ2UKZGlmZiAtLWdpdCBh
L1Rvb2xzL0R1bXBSZW5kZXJUcmVlL1Rlc3RSdW5uZXIuY3BwIGIvVG9vbHMvRHVtcFJlbmRlclRy
ZWUvVGVzdFJ1bm5lci5jcHAKaW5kZXggNzA3YTZiOTI1M2QxZmZhZTg1YWNiMjAxZTM5NTRhZWM1
NDFjZTdiYS4uNzNiMjI3OWQ5YmI0Nzg3YTQ4ODczNmEzYTFiNzkyYmI4OGQzODRjNSAxMDA2NDQK
LS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvVGVzdFJ1bm5lci5jcHAKKysrIGIvVG9vbHMvRHVt
cFJlbmRlclRyZWUvVGVzdFJ1bm5lci5jcHAKQEAgLTI0NTIsNyArMjQ1Miw3IEBAIHZvaWQgVGVz
dFJ1bm5lcjo6dWlTY3JpcHREaWRDb21wbGV0ZShjb25zdCBTdHJpbmcmIHJlc3VsdCwgdW5zaWdu
ZWQgY2FsbGJhY2tJRCkKIAogdm9pZCBUZXN0UnVubmVyOjpzZXRBbGxvd3NBbnlTU0xDZXJ0aWZp
Y2F0ZShib29sIGFsbG93c0FueVNTTENlcnRpZmljYXRlKQogewotICAgIFdlYkNvcmVUZXN0U3Vw
cG9ydDo6c2V0QWxsb3dzQW55U1NMQ2VydGlmaWNhdGUoYWxsb3dzQW55U1NMQ2VydGlmaWNhdGUp
OworICAgIFdlYkNvcmVUZXN0U3VwcG9ydDo6c2V0QWxsb3dzQW55U1NMQ2VydGlmaWNhdGVGb3JX
ZWJTb2NrZXRUZXN0aW5nKGFsbG93c0FueVNTTENlcnRpZmljYXRlKTsKIH0KIAogdm9pZCBUZXN0
UnVubmVyOjpzZXRPcGVuUGFuZWxGaWxlcyhKU0NvbnRleHRSZWYgY29udGV4dCwgSlNWYWx1ZVJl
ZiBmaWxlc1ZhbHVlKQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJL
aXRHTGliL1Rlc3RTU0wuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHTGli
L1Rlc3RTU0wuY3BwCmluZGV4IDk2ZjVmNjNhNjExNzZmODM2NTZkNzU3YWI3ZjI0NWViOGJkNGI0
YzUuLmQzNTIxMzFiMTUyMmIwNzc1YjZiYjk4YzVhMjkzOGFjMjA2ZDE4ODUgMTAwNjQ0Ci0tLSBh
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9UZXN0U1NMLmNwcAorKysgYi9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIvVGVzdFNTTC5jcHAKQEAgLTMzOCw2
ICszMzgsOTMgQEAgc3RhdGljIHZvaWQgdGVzdFN1YnJlc291cmNlTG9hZEZhaWxlZFdpdGhUTFNF
cnJvcnMoVExTU3VicmVzb3VyY2VUZXN0KiB0ZXN0LCBnY28KICAgICBhc3NlcnRJZlNTTFJlcXVl
c3RQcm9jZXNzZWQgPSBmYWxzZTsKIH0KIAorI2lmIFNPVVBfQ0hFQ0tfVkVSU0lPTigyLCA1MCwg
MCkKK2NsYXNzIFdlYlNvY2tldFRlc3QgOiBwdWJsaWMgV2ViVmlld1Rlc3QgeworcHVibGljOgor
ICAgIE1BS0VfR0xJQl9URVNUX0ZJWFRVUkUoV2ViU29ja2V0VGVzdCk7CisKKyAgICBXZWJTb2Nr
ZXRUZXN0KCkKKyAgICB7CisgICAgICAgIHdlYmtpdF91c2VyX2NvbnRlbnRfbWFuYWdlcl9yZWdp
c3Rlcl9zY3JpcHRfbWVzc2FnZV9oYW5kbGVyKG1fdXNlckNvbnRlbnRNYW5hZ2VyLmdldCgpLCAi
ZXZlbnQiKTsKKyAgICAgICAgZ19zaWduYWxfY29ubmVjdChtX3VzZXJDb250ZW50TWFuYWdlci5n
ZXQoKSwgInNjcmlwdC1tZXNzYWdlLXJlY2VpdmVkOjpldmVudCIsIEdfQ0FMTEJBQ0sod2ViU29j
a2V0VGVzdFJlc3VsdENhbGxiYWNrKSwgdGhpcyk7CisgICAgfQorCisgICAgdmlydHVhbCB+V2Vi
U29ja2V0VGVzdCgpCisgICAgeworICAgICAgICB3ZWJraXRfdXNlcl9jb250ZW50X21hbmFnZXJf
dW5yZWdpc3Rlcl9zY3JpcHRfbWVzc2FnZV9oYW5kbGVyKG1fdXNlckNvbnRlbnRNYW5hZ2VyLmdl
dCgpLCAiZXZlbnQiKTsKKyAgICAgICAgZ19zaWduYWxfaGFuZGxlcnNfZGlzY29ubmVjdF9ieV9k
YXRhKG1fdXNlckNvbnRlbnRNYW5hZ2VyLmdldCgpLCB0aGlzKTsKKyAgICB9CisKKyAgICBzdGF0
aWMgY29uc3RleHByIGNvbnN0IGNoYXIqIHdlYlNvY2tldFRlc3RKU0Zvcm1hdCA9CisgICAgICAg
ICJ2YXIgc29ja2V0ID0gbmV3IFdlYlNvY2tldCgnJXMnKTsiCisgICAgICAgICJzb2NrZXQuYWRk
RXZlbnRMaXN0ZW5lcignb3BlbicsIG9uT3Blbik7IgorICAgICAgICAic29ja2V0LmFkZEV2ZW50
TGlzdGVuZXIoJ2Nsb3NlJywgb25DbG9zZSk7IgorICAgICAgICAiZnVuY3Rpb24gb25PcGVuKCkg
eyIKKyAgICAgICAgIiAgICB3aW5kb3cud2Via2l0Lm1lc3NhZ2VIYW5kbGVycy5ldmVudC5wb3N0
TWVzc2FnZSgnb3BlbicpOyIKKyAgICAgICAgIiAgICBzb2NrZXQucmVtb3ZlRXZlbnRMaXN0ZW5l
cignY2xvc2UnLCBvbkNsb3NlKTsiCisgICAgICAgICJ9IgorICAgICAgICAiZnVuY3Rpb24gb25D
bG9zZSgpIHsiCisgICAgICAgICIgICAgd2luZG93LndlYmtpdC5tZXNzYWdlSGFuZGxlcnMuZXZl
bnQucG9zdE1lc3NhZ2UoJ2Nsb3NlJyk7IgorICAgICAgICAiICAgIHNvY2tldC5yZW1vdmVFdmVu
dExpc3RlbmVyKCdvcGVuJywgb25PcGVuKTsiCisgICAgICAgICJ9IjsKKworICAgIHN0YXRpYyB2
b2lkIHNlcnZlcldlYlNvY2tldENhbGxiYWNrKFNvdXBTZXJ2ZXIqLCBTb3VwV2Vic29ja2V0Q29u
bmVjdGlvbiosIGNvbnN0IGNoYXIqLCBTb3VwQ2xpZW50Q29udGV4dCosIGdwb2ludGVyIHNob3Vs
ZEJlUmVhY2hlZCkKKyAgICB7CisgICAgICAgIGdfYXNzZXJ0X3RydWUoR1BPSU5URVJfVE9fSU5U
KHNob3VsZEJlUmVhY2hlZCkpOworICAgIH0KKworICAgIHN0YXRpYyB2b2lkIHdlYlNvY2tldFRl
c3RSZXN1bHRDYWxsYmFjayhXZWJLaXRVc2VyQ29udGVudE1hbmFnZXIqLCBXZWJLaXRKYXZhc2Ny
aXB0UmVzdWx0KiBqYXZhc2NyaXB0UmVzdWx0LCBXZWJTb2NrZXRUZXN0KiB0ZXN0KQorICAgIHsK
KyAgICAgICAgdGVzdC0+bV9ldmVudC5yZXNldChXZWJWaWV3VGVzdDo6amF2YXNjcmlwdFJlc3Vs
dFRvQ1N0cmluZyhqYXZhc2NyaXB0UmVzdWx0KSk7CisgICAgICAgIGdfYXNzZXJ0X2NtcHN0cih0
ZXN0LT5tX2V2ZW50LmdldCgpLCA9PSwgdGVzdC0+bV9leHBlY3RlZEV2ZW50LmdldCgpKTsKKyAg
ICB9CisKKyAgICB2b2lkIGNvbm5lY3RUb1NlcnZlckFuZFdhaXRGb3JFdmVudChXZWJLaXRUZXN0
U2VydmVyKiBzZXJ2ZXIsIGNvbnN0IGNoYXIqIGV2ZW50LCBnYm9vbGVhbiBzaG91bGRIYW5kc2hh
a2VTdWNjZWVkKQorICAgIHsKKyAgICAgICAgc2VydmVyLT5hZGRXZWJTb2NrZXRIYW5kbGVyKHNl
cnZlcldlYlNvY2tldENhbGxiYWNrLCBHSU5UX1RPX1BPSU5URVIoc2hvdWxkSGFuZHNoYWtlU3Vj
Y2VlZCkpOworICAgICAgICBtX2V4cGVjdGVkRXZlbnQucmVzZXQoZ19zdHJkdXAoZXZlbnQpKTsK
KworICAgICAgICBHVW5pcXVlT3V0UHRyPEdFcnJvcj4gZXJyb3I7CisgICAgICAgIEdVbmlxdWVQ
dHI8Y2hhcj4gY3JlYXRlV2ViU29ja2V0SlMoZ19zdHJkdXBfcHJpbnRmKHdlYlNvY2tldFRlc3RK
U0Zvcm1hdCwgc2VydmVyLT5nZXRXZWJTb2NrZXRVUklGb3JQYXRoKCIvZm9vIikuZGF0YSgpKSk7
CisgICAgICAgIFdlYktpdEphdmFzY3JpcHRSZXN1bHQqIGpzUmVzdWx0ID0gcnVuSmF2YVNjcmlw
dEFuZFdhaXRVbnRpbEZpbmlzaGVkKGNyZWF0ZVdlYlNvY2tldEpTLmdldCgpLCAmZXJyb3Iub3V0
UHRyKCkpOworICAgICAgICBnX2Fzc2VydF9ub19lcnJvcihlcnJvci5nZXQoKSk7CisgICAgICAg
IGdfYXNzZXJ0X25vbm51bGwoanNSZXN1bHQpOworICAgICAgICB3ZWJraXRfamF2YXNjcmlwdF9y
ZXN1bHRfdW5yZWYoanNSZXN1bHQpOworCisgICAgICAgIC8vIFdhaXQgZm9yIHRoZSBhc3luYyBz
b2NrZXQgZXZlbnQuCisgICAgICAgIHdoaWxlICghbV9ldmVudCkKKyAgICAgICAgICAgIGdfbWFp
bl9jb250ZXh0X2l0ZXJhdGlvbihnX21haW5fbG9vcF9nZXRfY29udGV4dChtX21haW5Mb29wKSwg
VFJVRSk7CisKKyAgICAgICAgbV9ldmVudCA9IG51bGxwdHI7CisgICAgICAgIG1fZXhwZWN0ZWRF
dmVudCA9IG51bGxwdHI7CisgICAgICAgIHNlcnZlci0+cmVtb3ZlV2ViU29ja2V0SGFuZGxlcigp
OworICAgIH0KKworICAgIEdVbmlxdWVQdHI8Y2hhcj4gbV9ldmVudDsKKyAgICBHVW5pcXVlUHRy
PGNoYXI+IG1fZXhwZWN0ZWRFdmVudDsKK307CisKK3N0YXRpYyB2b2lkIHRlc3RXZWJTb2NrZXRU
TFNFcnJvcnMoV2ViU29ja2V0VGVzdCogdGVzdCwgZ2NvbnN0cG9pbnRlcikKK3sKKyAgICBXZWJL
aXRXZWJDb250ZXh0KiBjb250ZXh0ID0gd2Via2l0X3dlYl92aWV3X2dldF9jb250ZXh0KHRlc3Qt
Pm1fd2ViVmlldyk7CisgICAgV2ViS2l0VExTRXJyb3JzUG9saWN5IG9yaWdpbmFsUG9saWN5ID0g
d2Via2l0X3dlYl9jb250ZXh0X2dldF90bHNfZXJyb3JzX3BvbGljeShjb250ZXh0KTsKKyAgICB3
ZWJraXRfd2ViX2NvbnRleHRfc2V0X3Rsc19lcnJvcnNfcG9saWN5KGNvbnRleHQsIFdFQktJVF9U
TFNfRVJST1JTX1BPTElDWV9GQUlMKTsKKworICAgIC8vIEZpcnN0LCBjaGVjayB0aGF0IGluc2Vj
dXJlIHdzOi8vIHdlYiBzb2NrZXRzIHdvcmsgZmluZS4KKyAgICB0ZXN0LT5jb25uZWN0VG9TZXJ2
ZXJBbmRXYWl0Rm9yRXZlbnQoa0h0dHBTZXJ2ZXIsICJvcGVuIiwgVFJVRSk7CisKKyAgICAvLyBU
cnkgYWdhaW4gdXNpbmcgd3NzOi8vIHRoaXMgdGltZS4gSXQgc2hvdWxkIGJlIGJsb2NrZWQgYmVj
YXVzZSB0aGUKKyAgICAvLyBzZXJ2ZXIgY2VydGlmaWNhdGUgaXMgc2VsZi1zaWduZWQuCisgICAg
dGVzdC0+Y29ubmVjdFRvU2VydmVyQW5kV2FpdEZvckV2ZW50KGtIdHRwc1NlcnZlciwgImNsb3Nl
IiwgRkFMU0UpOworCisgICAgLy8gTm93IHRyeSB3c3M6Ly8gYWdhaW4sIHRoaXMgdGltZSBpZ25v
cmluZyBUTFMgZXJyb3JzLgorICAgIHdlYmtpdF93ZWJfY29udGV4dF9zZXRfdGxzX2Vycm9yc19w
b2xpY3koY29udGV4dCwgV0VCS0lUX1RMU19FUlJPUlNfUE9MSUNZX0lHTk9SRSk7CisgICAgdGVz
dC0+Y29ubmVjdFRvU2VydmVyQW5kV2FpdEZvckV2ZW50KGtIdHRwc1NlcnZlciwgIm9wZW4iLCBU
UlVFKTsKKworICAgIHdlYmtpdF93ZWJfY29udGV4dF9zZXRfdGxzX2Vycm9yc19wb2xpY3koY29u
dGV4dCwgb3JpZ2luYWxQb2xpY3kpOworfQorI2VuZGlmCisKIHN0YXRpYyB2b2lkIGh0dHBzU2Vy
dmVyQ2FsbGJhY2soU291cFNlcnZlciogc2VydmVyLCBTb3VwTWVzc2FnZSogbWVzc2FnZSwgY29u
c3QgY2hhciogcGF0aCwgR0hhc2hUYWJsZSosIFNvdXBDbGllbnRDb250ZXh0KiwgZ3BvaW50ZXIp
CiB7CiAgICAgaWYgKG1lc3NhZ2UtPm1ldGhvZCAhPSBTT1VQX01FVEhPRF9HRVQpIHsKQEAgLTQy
NCw2ICs1MTEsOSBAQCB2b2lkIGJlZm9yZUFsbCgpCiAgICAgU1NMVGVzdDo6YWRkKCJXZWJLaXRX
ZWJWaWV3IiwgInRscy1odHRwLWF1dGgiLCB0ZXN0VExTRXJyb3JzSFRUUEF1dGgpOwogICAgIFRM
U1N1YnJlc291cmNlVGVzdDo6YWRkKCJXZWJLaXRXZWJWaWV3IiwgInRscy1zdWJyZXNvdXJjZSIs
IHRlc3RTdWJyZXNvdXJjZUxvYWRGYWlsZWRXaXRoVExTRXJyb3JzKTsKICAgICBUTFNFcnJvcnNU
ZXN0OjphZGQoIldlYktpdFdlYlZpZXciLCAibG9hZC1mYWlsZWQtd2l0aC10bHMtZXJyb3JzIiwg
dGVzdExvYWRGYWlsZWRXaXRoVExTRXJyb3JzKTsKKyNpZiBTT1VQX0NIRUNLX1ZFUlNJT04oMiwg
NTAsIDApCisgICAgV2ViU29ja2V0VGVzdDo6YWRkKCJXZWJLaXRXZWJWaWV3IiwgIndlYi1zb2Nr
ZXQtdGxzLWVycm9ycyIsIHRlc3RXZWJTb2NrZXRUTFNFcnJvcnMpOworI2VuZGlmCiB9CiAKIHZv
aWQgYWZ0ZXJBbGwoKQpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3Rl
ZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5jcHAgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVj
dGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmNwcAppbmRleCAxNGNiYWJmZDNlYmI1MTk2ZGNlNWE2
MzJmY2EzMDg0OGQyZDBhOTBlLi5mZTllMmRiYzAwOWI1OTI5Y2JkMmQ3NWFjMzFjMGVjOTQzZGQ3
Mzc3IDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0lu
amVjdGVkQnVuZGxlLmNwcAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVu
ZGxlL0luamVjdGVkQnVuZGxlLmNwcApAQCAtODY5LDcgKzg2OSw3IEBAIGJvb2wgSW5qZWN0ZWRC
dW5kbGU6OmlzQWxsb3dlZEhvc3QoV0tTdHJpbmdSZWYgaG9zdCkKIAogdm9pZCBJbmplY3RlZEJ1
bmRsZTo6c2V0QWxsb3dzQW55U1NMQ2VydGlmaWNhdGUoYm9vbCBhbGxvd3NBbnlTU0xDZXJ0aWZp
Y2F0ZSkKIHsKLSAgICBXZWJDb3JlVGVzdFN1cHBvcnQ6OnNldEFsbG93c0FueVNTTENlcnRpZmlj
YXRlKGFsbG93c0FueVNTTENlcnRpZmljYXRlKTsKKyAgICBXZWJDb3JlVGVzdFN1cHBvcnQ6OnNl
dEFsbG93c0FueVNTTENlcnRpZmljYXRlRm9yV2ViU29ja2V0VGVzdGluZyhhbGxvd3NBbnlTU0xD
ZXJ0aWZpY2F0ZSk7CiB9CiAKIHZvaWQgSW5qZWN0ZWRCdW5kbGU6OnN0YXRpc3RpY3NOb3RpZnlP
YnNlcnZlcigpCmRpZmYgLS1naXQgYS9Ub29scy9ndGsvamhidWlsZC5tb2R1bGVzIGIvVG9vbHMv
Z3RrL2poYnVpbGQubW9kdWxlcwppbmRleCAxMzRjNjRjNGEzY2M5Yzk5MDUzZjg0MjMxOWI5Yzc0
OWVjNGZmNmI3Li5mMjkyNDZhYTI0NDc2OWIxMGU1NzE5ZWViYWQyZGExMGMzYTlmODQ1IDEwMDY0
NAotLS0gYS9Ub29scy9ndGsvamhidWlsZC5tb2R1bGVzCisrKyBiL1Rvb2xzL2d0ay9qaGJ1aWxk
Lm1vZHVsZXMKQEAgLTI0NCwxMiArMjQ0LDkgQEAKICAgICA8ZGVwZW5kZW5jaWVzPgogICAgICAg
PGRlcCBwYWNrYWdlPSJnbGliLW5ldHdvcmtpbmciLz4KICAgICA8L2RlcGVuZGVuY2llcz4KLSAg
ICA8YnJhbmNoIG1vZHVsZT0iL3B1Yi9HTk9NRS9zb3VyY2VzL2xpYnNvdXAvMi41Ny9saWJzb3Vw
LTIuNTcuMS50YXIueHoiIHZlcnNpb249IjIuNTcuMSIKKyAgICA8YnJhbmNoIG1vZHVsZT0iL3B1
Yi9HTk9NRS9zb3VyY2VzL2xpYnNvdXAvMi42Mi9saWJzb3VwLSR7dmVyc2lvbn0udGFyLnh6IiB2
ZXJzaW9uPSIyLjYyLjEiCiAgICAgICAgICAgICByZXBvPSJmdHAuZ25vbWUub3JnIgotICAgICAg
ICAgICAgaGFzaD0ic2hhMjU2OmNhMWNhMDM3ZTg5ZThiYzdiNzgyNTU5ZjNlYzVkODljOWQwYjgz
NmY1MDViMmY5NWUwMDhlZDUxN2ZkNjY1OGYiPgotICAgICAgPHBhdGNoIGZpbGU9ImxpYnNvdXAt
YXV0aC1GaXgtYXN5bmMtYXV0aGVudGljYXRpb24td2hlbi1mbGFnLVNPVVBfTUVTU0FHRS5wYXRj
aCIgc3RyaXA9IjEiLz4KLSAgICAgIDxwYXRjaCBmaWxlPSJsaWJzb3VwLWF1dGgtZG8tbm90LXVz
ZS1jYWNoZWQtY3JlZGVudGlhbHMtaW4tbG9va3VwLW1ldGhvZC0ucGF0Y2giIHN0cmlwPSIxIi8+
Ci0gICAgICA8cGF0Y2ggZmlsZT0ibGlic291cC1zb3VwLW1lc3NhZ2UtaW8tRG8tbm90LWZhaWwt
d2hlbi10aGVyZS1zLW5vLWVtcHR5LWxpLnBhdGNoIiBzdHJpcD0iMSIvPgorICAgICAgICAgICAg
aGFzaD0ic2hhMjU2OmYwMzdkZGFjMmUwZjliMWM4NDJhMDA2MGZhNjExOWJlYTFkM2IzNDlhMmM5
MDEyODNjOTYxMjQ3ZTQ1ODgzZDciPgogICAgIDwvYnJhbmNoPgogICA8L2F1dG90b29scz4KIApk
aWZmIC0tZ2l0IGEvVG9vbHMvZ3RrL3BhdGNoZXMvbGlic291cC1hdXRoLUZpeC1hc3luYy1hdXRo
ZW50aWNhdGlvbi13aGVuLWZsYWctU09VUF9NRVNTQUdFLnBhdGNoIGIvVG9vbHMvZ3RrL3BhdGNo
ZXMvbGlic291cC1hdXRoLUZpeC1hc3luYy1hdXRoZW50aWNhdGlvbi13aGVuLWZsYWctU09VUF9N
RVNTQUdFLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2NzU0NWRmMzg4M2Vj
NWJiMDk3ZWI2NWIwNmQxNzg5ZDk0MmUxM2MyLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwCi0tLSBhL1Rvb2xzL2d0ay9wYXRjaGVzL2xpYnNvdXAtYXV0aC1GaXgtYXN5
bmMtYXV0aGVudGljYXRpb24td2hlbi1mbGFnLVNPVVBfTUVTU0FHRS5wYXRjaAorKysgL2Rldi9u
dWxsCkBAIC0xLDEzMCArMCwwIEBACi1Gcm9tIGFmZWUzMDAyZmY0NWI3YTAwZGYzZDY4MDRmYTdk
MzI5YjkwN2QzNjEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBDYXJsb3MgR2FyY2lh
IENhbXBvcyA8Y2dhcmNpYUBpZ2FsaWEuY29tPgotRGF0ZTogTW9uLCAzMCBKYW4gMjAxNyAxMzo1
NzoxMiArMDEwMAotU3ViamVjdDogW1BBVENIIDEvMl0gYXV0aDogRml4IGFzeW5jIGF1dGhlbnRp
Y2F0aW9uIHdoZW4gZmxhZwotIFNPVVBfTUVTU0FHRV9ET19OT1RfVVNFX0FVVEhfQ0FDSEUgaXMg
dXNlZAotCi1XaGVuIHRoZSBmbGFnIFNPVVBfTUVTU0FHRV9ET19OT1RfVVNFX0FVVEhfQ0FDSEUg
aXMgdXNlZCwgaXQncyBub3QgcG9zc2libGUKLXRvIHN1Y2Nlc3NmdWxseSBhdXRoZW50aWNhdGUs
IGFuZCBTT1VQX1NUQVRVU19VTkFVVEhPUklaRUQgaXMgYWx3YXlzCi1yZXR1cm5lZCBldmVuIHdo
ZW4gc291cF9hdXRoX2F1dGVudGljYXRlIHdhcyBjYWxsZWQgd2l0aCB0aGUgcmlnaHQKLWNyZWRl
bnRpYWxzLiBUaGlzIGhhcHBlbnMgYmVjYXVzZSB3ZSBzZXQgdGhlIGF1dGggb24gdGhlIHNvdXAg
bWVzc2FnZSByaWdodAotYWZ0ZXIgZW1pdHRpbmcgdGhlIGF1dGhlbnRpY2F0ZSBzaWduYWwgb25s
eSBpZiBpdCB3YXMgYXV0aGVudGljYXRlZC4gSWYgdGhlCi1zaWduYWwgcGF1c2VzIHRoZSBtZXNz
YWdlLCB0aGUgYXV0aCB3aWxsIG5vIGxvbmdlciBiZSBhc3NvY2lhdGVkIHRvIHRoZSBtZXNzYWdl
LAotYW5kIG5vdCBjYWNoZWQgZWl0aGVyIGJlY2F1c2UgZmxhZyBTT1VQX01FU1NBR0VfRE9fTk9U
X1VTRV9BVVRIX0NBQ0hFIGlzCi1wcmVzZW50LiBTaW5jZSB3ZSBhbHdheXMgY2hlY2sgaWYgdGhl
IGF1dGggcmV0dXJuZWQgYnkKLXNvdXBfYXV0aF9nZXRfbWVzc2FnZSBpcyByZWFkeSBiZWZvcmUg
dHJ5aW5nIHRvIHVzZSBpdCwgd2UgY2FuIHNpbXBseQotYWx3YXlzIHNldCB0aGUgYXV0aCBvbiB0
aGUgbXNzYWdlIHJpZ2h0IGFmdGVyIGVtaXR0aW5nIHRoZSBhdXRoZW50aWNhdGUKLXNpZ25hbCBl
dmVuIGlmIGl0IHdhcyBub3QgYXV0aGVudGljYXRlZCB5ZXQuIElmIGl0J3MgZXZlbnR1YWxseQot
YXV0aGVudGljYXRlZCB0aGVuIGdvdC1ib2R5IGNhbGxiYWNrIHdpbGwgY2hlY2sgaXQncyByZWFk
eSB0byByZS1xdWV1ZQotdGhlIG1lc3NhZ2UgYXMgZXhwZWN0ZWQuCi0KLWh0dHBzOi8vYnVnemls
bGEuZ25vbWUub3JnL3Nob3dfYnVnLmNnaT9pZD03Nzc5MzYKLS0tLQotIGxpYnNvdXAvc291cC1h
dXRoLW1hbmFnZXIuYyB8ICA0ICstLQotIHRlc3RzL2F1dGgtdGVzdC5jICAgICAgICAgICB8IDYx
ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwotIDIgZmlsZXMg
Y2hhbmdlZCwgNjMgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBh
L2xpYnNvdXAvc291cC1hdXRoLW1hbmFnZXIuYyBiL2xpYnNvdXAvc291cC1hdXRoLW1hbmFnZXIu
YwotaW5kZXggNzA0NjYxYmMuLjlmZjQ0NmNjIDEwMDY0NAotLS0tIGEvbGlic291cC9zb3VwLWF1
dGgtbWFuYWdlci5jCi0rKysgYi9saWJzb3VwL3NvdXAtYXV0aC1tYW5hZ2VyLmMKLUBAIC02MjUs
NyArNjI1LDcgQEAgYXV0aF9nb3RfaGVhZGVycyAoU291cE1lc3NhZ2UgKm1zZywgZ3BvaW50ZXIg
bWFuYWdlcikKLSAJLyogSWYgd2UgbmVlZCB0byBhdXRoZW50aWNhdGUsIHRyeSB0byBkbyBpdC4g
Ki8KLSAJYXV0aGVudGljYXRlX2F1dGggKG1hbmFnZXIsIGF1dGgsIG1zZywKLSAJCQkgICBwcmlv
cl9hdXRoX2ZhaWxlZCwgRkFMU0UsIFRSVUUpOwotLQlzb3VwX21lc3NhZ2Vfc2V0X2F1dGggKG1z
Zywgc291cF9hdXRoX2lzX3JlYWR5IChhdXRoLCBtc2cpID8gYXV0aCA6IE5VTEwpOwotKwlzb3Vw
X21lc3NhZ2Vfc2V0X2F1dGggKG1zZywgYXV0aCk7Ci0gCWdfb2JqZWN0X3VucmVmIChhdXRoKTsK
LSAJZ19tdXRleF91bmxvY2sgKCZwcml2LT5sb2NrKTsKLSB9Ci1AQCAtNjg5LDcgKzY4OSw3IEBA
IHByb3h5X2F1dGhfZ290X2hlYWRlcnMgKFNvdXBNZXNzYWdlICptc2csIGdwb2ludGVyIG1hbmFn
ZXIpCi0gCS8qIElmIHdlIG5lZWQgdG8gYXV0aGVudGljYXRlLCB0cnkgdG8gZG8gaXQuICovCi0g
CWF1dGhlbnRpY2F0ZV9hdXRoIChtYW5hZ2VyLCBhdXRoLCBtc2csCi0gCQkJICAgcHJpb3JfYXV0
aF9mYWlsZWQsIFRSVUUsIFRSVUUpOwotLQlzb3VwX21lc3NhZ2Vfc2V0X3Byb3h5X2F1dGggKG1z
Zywgc291cF9hdXRoX2lzX3JlYWR5IChhdXRoLCBtc2cpID8gYXV0aCA6IE5VTEwpOwotKwlzb3Vw
X21lc3NhZ2Vfc2V0X3Byb3h5X2F1dGggKG1zZywgYXV0aCk7Ci0gCWdfb2JqZWN0X3VucmVmIChh
dXRoKTsKLSAJZ19tdXRleF91bmxvY2sgKCZwcml2LT5sb2NrKTsKLSB9Ci1kaWZmIC0tZ2l0IGEv
dGVzdHMvYXV0aC10ZXN0LmMgYi90ZXN0cy9hdXRoLXRlc3QuYwotaW5kZXggYjY3NGM2MWMuLjIz
ZTIyMTMzIDEwMDY0NAotLS0tIGEvdGVzdHMvYXV0aC10ZXN0LmMKLSsrKyBiL3Rlc3RzL2F1dGgt
dGVzdC5jCi1AQCAtMTMzNiw2ICsxMzM2LDY2IEBAIGRvX21lc3NhZ2VfZG9fbm90X3VzZV9hdXRo
X2NhY2hlX3Rlc3QgKHZvaWQpCi0gfQotIAotIHN0YXRpYyB2b2lkCi0rYXN5bmNfbm9fYXV0aF9j
YWNoZV9hdXRoZW50aWNhdGUgKFNvdXBTZXNzaW9uICpzZXNzaW9uLCBTb3VwTWVzc2FnZSAqbXNn
LAotKwkJCQkgIFNvdXBBdXRoICphdXRoLCBnYm9vbGVhbiByZXRyeWluZywgU291cEF1dGggKiph
dXRoX291dCkKLSt7Ci0rCWRlYnVnX3ByaW50ZiAoMSwgIiAgYXN5bmNfbm9fYXV0aF9jYWNoZV9h
dXRoZW50aWNhdGVcbiIpOwotKwotKwlzb3VwX3Nlc3Npb25fcGF1c2VfbWVzc2FnZSAoc2Vzc2lv
biwgbXNnKTsKLSsJKmF1dGhfb3V0ID0gZ19vYmplY3RfcmVmIChhdXRoKTsKLSsJZ19tYWluX2xv
b3BfcXVpdCAobG9vcCk7Ci0rfQotKwotK3N0YXRpYyB2b2lkCi0rYXN5bmNfbm9fYXV0aF9jYWNo
ZV9maW5pc2hlZCAoU291cFNlc3Npb24gKnNlc3Npb24sIFNvdXBNZXNzYWdlICptc2csIGdwb2lu
dGVyIHVzZXJfZGF0YSkKLSt7Ci0rCWRlYnVnX3ByaW50ZiAoMSwgIiAgYXN5bmNfbm9fYXV0aF9j
YWNoZV9maW5pc2hlZFxuIik7Ci0rCi0rCWdfbWFpbl9sb29wX3F1aXQgKGxvb3ApOwotK30KLSsK
LStzdGF0aWMgdm9pZAotK2RvX2FzeW5jX21lc3NhZ2VfZG9fbm90X3VzZV9hdXRoX2NhY2hlX3Rl
c3QgKHZvaWQpCi0rewotKwlTb3VwU2Vzc2lvbiAqc2Vzc2lvbjsKLSsJU291cE1lc3NhZ2UgKm1z
ZzsKLSsJY2hhciAqdXJpOwotKwlTb3VwQXV0aCAqYXV0aCA9IE5VTEw7Ci0rCVNvdXBNZXNzYWdl
RmxhZ3MgZmxhZ3M7Ci0rCi0rCVNPVVBfVEVTVF9TS0lQX0lGX05PX0FQQUNIRTsKLSsKLSsJbG9v
cCA9IGdfbWFpbl9sb29wX25ldyAoTlVMTCwgVFJVRSk7Ci0rCXNlc3Npb24gPSBzb3VwX3Rlc3Rf
c2Vzc2lvbl9uZXcgKFNPVVBfVFlQRV9TRVNTSU9OX0FTWU5DLCBOVUxMKTsKLSsJdXJpID0gZ19z
dHJjb25jYXQgKGJhc2VfdXJpLCAiQmFzaWMvcmVhbG0xLyIsIE5VTEwpOwotKwotKwltc2cgPSBz
b3VwX21lc3NhZ2VfbmV3ICgiR0VUIiwgdXJpKTsKLSsJZ19mcmVlICh1cmkpOwotKwlnX3NpZ25h
bF9jb25uZWN0IChzZXNzaW9uLCAiYXV0aGVudGljYXRlIiwKLSsJCQkgIEdfQ0FMTEJBQ0sgKGFz
eW5jX25vX2F1dGhfY2FjaGVfYXV0aGVudGljYXRlKSwgJmF1dGgpOwotKwlmbGFncyA9IHNvdXBf
bWVzc2FnZV9nZXRfZmxhZ3MgKG1zZyk7Ci0rCXNvdXBfbWVzc2FnZV9zZXRfZmxhZ3MgKG1zZywg
ZmxhZ3MgfCBTT1VQX01FU1NBR0VfRE9fTk9UX1VTRV9BVVRIX0NBQ0hFKTsKLSsJZ19vYmplY3Rf
cmVmIChtc2cpOwotKwlzb3VwX3Nlc3Npb25fcXVldWVfbWVzc2FnZSAoc2Vzc2lvbiwgbXNnLCBh
c3luY19ub19hdXRoX2NhY2hlX2ZpbmlzaGVkLCBOVUxMKTsKLSsJZ19tYWluX2xvb3BfcnVuIChs
b29wKTsKLSsKLSsJc291cF90ZXN0X2Fzc2VydF9tZXNzYWdlX3N0YXR1cyAobXNnLCBTT1VQX1NU
QVRVU19VTkFVVEhPUklaRUQpOwotKwotKwlzb3VwX3Rlc3RfYXNzZXJ0IChhdXRoLCAibXNnIGRp
ZG4ndCBnZXQgYXV0aGVudGljYXRlIHNpZ25hbCIpOwotKwlzb3VwX2F1dGhfYXV0aGVudGljYXRl
IChhdXRoLCAidXNlcjEiLCAicmVhbG0xIik7Ci0rCWdfb2JqZWN0X3VucmVmIChhdXRoKTsKLSsK
LSsJc291cF9zZXNzaW9uX3VucGF1c2VfbWVzc2FnZSAoc2Vzc2lvbiwgbXNnKTsKLSsJZ19tYWlu
X2xvb3BfcnVuIChsb29wKTsKLSsKLSsJc291cF90ZXN0X2Fzc2VydF9tZXNzYWdlX3N0YXR1cyAo
bXNnLCBTT1VQX1NUQVRVU19PSyk7Ci0rCi0rCXNvdXBfdGVzdF9zZXNzaW9uX2Fib3J0X3VucmVm
IChzZXNzaW9uKTsKLSsJZ19vYmplY3RfdW5yZWYgKG1zZyk7Ci0rCWdfbWFpbl9sb29wX3VucmVm
IChsb29wKTsKLSt9Ci0rCi0rc3RhdGljIHZvaWQKLSBoYXNfYXV0aG9yaXphdGlvbl9oZWFkZXJf
YXV0aGVudGljYXRlIChTb3VwU2Vzc2lvbiAqc2Vzc2lvbiwgU291cE1lc3NhZ2UgKm1zZywKLSAJ
CQkJICAgICAgIFNvdXBBdXRoICphdXRoLCBnYm9vbGVhbiByZXRyeWluZywgZ3BvaW50ZXIgZGF0
YSkKLSB7Ci1AQCAtMTQzMiw2ICsxNDkyLDcgQEAgbWFpbiAoaW50IGFyZ2MsIGNoYXIgKiphcmd2
KQotIAlnX3Rlc3RfYWRkX2Z1bmMgKCIvYXV0aC9kaXNhcHBlYXJpbmctYXV0aCIsIGRvX2Rpc2Fw
cGVhcmluZ19hdXRoX3Rlc3QpOwotIAlnX3Rlc3RfYWRkX2Z1bmMgKCIvYXV0aC9jbGVhci1jcmVk
ZW50aWFscyIsIGRvX2NsZWFyX2NyZWRlbnRpYWxzX3Rlc3QpOwotIAlnX3Rlc3RfYWRkX2Z1bmMg
KCIvYXV0aC9tZXNzYWdlLWRvLW5vdC11c2UtYXV0aC1jYWNoZSIsIGRvX21lc3NhZ2VfZG9fbm90
X3VzZV9hdXRoX2NhY2hlX3Rlc3QpOwotKwlnX3Rlc3RfYWRkX2Z1bmMgKCIvYXV0aC9hc3luYy1t
ZXNzYWdlLWRvLW5vdC11c2UtYXV0aC1jYWNoZSIsIGRvX2FzeW5jX21lc3NhZ2VfZG9fbm90X3Vz
ZV9hdXRoX2NhY2hlX3Rlc3QpOwotIAlnX3Rlc3RfYWRkX2Z1bmMgKCIvYXV0aC9hdXRob3JpemF0
aW9uLWhlYWRlci1yZXF1ZXN0IiwgZG9fbWVzc2FnZV9oYXNfYXV0aG9yaXphdGlvbl9oZWFkZXJf
dGVzdCk7Ci0gCi0gCXJldCA9IGdfdGVzdF9ydW4gKCk7Ci0tLSAKLTIuMTEuMAotCmRpZmYgLS1n
aXQgYS9Ub29scy9ndGsvcGF0Y2hlcy9saWJzb3VwLWF1dGgtZG8tbm90LXVzZS1jYWNoZWQtY3Jl
ZGVudGlhbHMtaW4tbG9va3VwLW1ldGhvZC0ucGF0Y2ggYi9Ub29scy9ndGsvcGF0Y2hlcy9saWJz
b3VwLWF1dGgtZG8tbm90LXVzZS1jYWNoZWQtY3JlZGVudGlhbHMtaW4tbG9va3VwLW1ldGhvZC0u
cGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDdkM2FiNThiMmNkNmYxY2VlZTRh
MGUwNzhmNzMzMGM5YWQ1YWY2M2EuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAKLS0tIGEvVG9vbHMvZ3RrL3BhdGNoZXMvbGlic291cC1hdXRoLWRvLW5vdC11c2UtY2Fj
aGVkLWNyZWRlbnRpYWxzLWluLWxvb2t1cC1tZXRob2QtLnBhdGNoCisrKyAvZGV2L251bGwKQEAg
LTEsMTE0ICswLDAgQEAKLUZyb20gYzg0MDFjMzcyYWRjOWE5Y2IxMWZjODcwYzM5MGFmZmIxMDM3
OWNmYSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IENhcmxvcyBHYXJjaWEgQ2FtcG9z
IDxjZ2FyY2lhQGlnYWxpYS5jb20+Ci1EYXRlOiBTYXQsIDExIEZlYiAyMDE3IDE3OjQ0OjQ2ICsw
MTAwCi1TdWJqZWN0OiBbUEFUQ0ggMi8yXSBhdXRoOiBkbyBub3QgdXNlIGNhY2hlZCBjcmVkZW50
aWFscyBpbiBsb29rdXAgbWV0aG9kIHdoZW4KLSBmbGFnIFNPVVBfTUVTU0FHRV9ET19OT1RfVVNF
X0FVVEhfQ0FDSEUgaXMgcHJlc2VudAotCi1UaGlzIGlzIGNhdXNpbmcgdGhhdCBhIHJlcXVlc3Qg
d2l0aCBmbGFnCi1TT1VQX01FU1NBR0VfRE9fTk9UX1VTRV9BVVRIX0NBQ0hFIHN1Y2Nlc3MgaWYg
YSBwcmV2aW91cyByZXF1ZXN0IHdpdGhvdXQKLXRoZSBmbGFnIHN0b3JlZCB0aGUgY3JlZGVudGlh
bHMuIFRoaXMgcGF0Y2ggYWxzbyBmaXhlcyBhbm90aGVyIGlzc3Vlcwotd2l0aCB0aGUgdGVzdCAv
YXV0aC9tZXNzYWdlLWRvLW5vdC11c2UtYXV0aC1jYWNoZSwgdGhlIGNhc2Ugb2YgcHJvdmlkaW5n
Ci10aGUgY3JlZGVudGlhbHMgaW4gdGhlIHVybCB3YXMgd29ya2luZyBiZWNhdXNlIGRvX2RpZ2Vz
dF9ub25jZV90ZXN0KCkKLWRpZG4ndCBkaXNjb25uZWN0IHRoZSBhdXRoZW50aWNhdGUgc2lnbmFs
IHRoYXQgd2FzIGFjdHVhbGx5IHVzZWQuIFRoaXMKLWlzIGJlY2F1c2Ugc291cF91cmlfdG9fc3Ry
aW5nIHJlbW92ZXMgdGhlIHBhc3N3b3JkIGZyb20gdGhlIHVyaS4gVGhlCi10ZXN0IG5lZWRzIHRv
IHVzZSBhIGN1c3RvbSBtZXNzYWdlIGNyZWF0ZWQgd2l0aAotc291cF9tZXNzYWdlX25ld19mcm9t
X3VyaSgpIGluc3RlYWQgb2YgdXNpbmcgZG9fZGlnZXN0X25vbmNlX3Rlc3QoKS4KLQotaHR0cHM6
Ly9idWd6aWxsYS5nbm9tZS5vcmcvc2hvd19idWcuY2dpP2lkPTc3ODQ5NwotLS0tCi0gbGlic291
cC9zb3VwLWF1dGgtbWFuYWdlci5jIHwgIDYgKysrKysrCi0gdGVzdHMvYXV0aC10ZXN0LmMgICAg
ICAgICAgIHwgMjkgKysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0KLSAyIGZpbGVzIGNoYW5n
ZWQsIDMxIGluc2VydGlvbnMoKyksIDQgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9saWJz
b3VwL3NvdXAtYXV0aC1tYW5hZ2VyLmMgYi9saWJzb3VwL3NvdXAtYXV0aC1tYW5hZ2VyLmMKLWlu
ZGV4IDlmZjQ0NmNjLi5iMzJiYTkwMCAxMDA2NDQKLS0tLSBhL2xpYnNvdXAvc291cC1hdXRoLW1h
bmFnZXIuYwotKysrIGIvbGlic291cC9zb3VwLWF1dGgtbWFuYWdlci5jCi1AQCAtNDcyLDYgKzQ3
Miw5IEBAIGxvb2t1cF9hdXRoIChTb3VwQXV0aE1hbmFnZXJQcml2YXRlICpwcml2LCBTb3VwTWVz
c2FnZSAqbXNnKQotIAlpZiAoYXV0aCAmJiBzb3VwX2F1dGhfaXNfcmVhZHkgKGF1dGgsIG1zZykp
Ci0gCQlyZXR1cm4gYXV0aDsKLSAKLSsJaWYgKHNvdXBfbWVzc2FnZV9nZXRfZmxhZ3MgKG1zZykg
JiBTT1VQX01FU1NBR0VfRE9fTk9UX1VTRV9BVVRIX0NBQ0hFKQotKwkJcmV0dXJuIE5VTEw7Ci0r
Ci0gCWhvc3QgPSBnZXRfYXV0aF9ob3N0X2Zvcl91cmkgKHByaXYsIHNvdXBfbWVzc2FnZV9nZXRf
dXJpIChtc2cpKTsKLSAJaWYgKCFob3N0LT5hdXRoX3JlYWxtcyAmJiAhbWFrZV9hdXRvX250bG1f
YXV0aCAocHJpdiwgaG9zdCkpCi0gCQlyZXR1cm4gTlVMTDsKLUBAIC00OTYsNiArNDk5LDkgQEAg
bG9va3VwX3Byb3h5X2F1dGggKFNvdXBBdXRoTWFuYWdlclByaXZhdGUgKnByaXYsIFNvdXBNZXNz
YWdlICptc2cpCi0gCWlmIChhdXRoICYmIHNvdXBfYXV0aF9pc19yZWFkeSAoYXV0aCwgbXNnKSkK
LSAJCXJldHVybiBhdXRoOwotIAotKwlpZiAoc291cF9tZXNzYWdlX2dldF9mbGFncyAobXNnKSAm
IFNPVVBfTUVTU0FHRV9ET19OT1RfVVNFX0FVVEhfQ0FDSEUpCi0rCQlyZXR1cm4gTlVMTDsKLSsK
LSAJcmV0dXJuIHByaXYtPnByb3h5X2F1dGg7Ci0gfQotIAotZGlmZiAtLWdpdCBhL3Rlc3RzL2F1
dGgtdGVzdC5jIGIvdGVzdHMvYXV0aC10ZXN0LmMKLWluZGV4IDIzZTIyMTMzLi4yZDY2ZGE5ZSAx
MDA2NDQKLS0tLSBhL3Rlc3RzL2F1dGgtdGVzdC5jCi0rKysgYi90ZXN0cy9hdXRoLXRlc3QuYwot
QEAgLTQ0Miw2ICs0NDIsMTIgQEAgZG9fZGlnZXN0X25vbmNlX3Rlc3QgKFNvdXBTZXNzaW9uICpz
ZXNzaW9uLAotIAkJCSAgZ290XzQwMSA/ICJnb3QiIDogImRpZCBub3QgZ2V0Iik7Ci0gCXNvdXBf
dGVzdF9hc3NlcnRfbWVzc2FnZV9zdGF0dXMgKG1zZywgU09VUF9TVEFUVVNfT0spOwotIAotKwlp
ZiAoZXhwZWN0X3NpZ25hbCkgewotKwkJZ19zaWduYWxfaGFuZGxlcnNfZGlzY29ubmVjdF9ieV9m
dW5jIChzZXNzaW9uLAotKwkJCQkJCSAgICAgIEdfQ0FMTEJBQ0sgKGRpZ2VzdF9ub25jZV9hdXRo
ZW50aWNhdGUpLAotKwkJCQkJCSAgICAgIE5VTEwpOwotKwl9Ci0rCi0gCWdfb2JqZWN0X3VucmVm
IChtc2cpOwotIH0KLSAKLUBAIC0xMjk3LDkgKzEzMDMsMTAgQEAgZG9fbWVzc2FnZV9kb19ub3Rf
dXNlX2F1dGhfY2FjaGVfdGVzdCAodm9pZCkKLSB7Ci0gCVNvdXBTZXNzaW9uICpzZXNzaW9uOwot
IAlTb3VwQXV0aE1hbmFnZXIgKm1hbmFnZXI7Ci0rCVNvdXBNZXNzYWdlICptc2c7Ci0rCVNvdXBN
ZXNzYWdlRmxhZ3MgZmxhZ3M7Ci0gCVNvdXBVUkkgKnNvdXBfdXJpOwotIAljaGFyICp1cmk7Ci0t
CWNoYXIgKnVyaV93aXRoX2NyZWRlbnRpYWxzOwotIAotIAlTT1VQX1RFU1RfU0tJUF9JRl9OT19B
UEFDSEU7Ci0gCi1AQCAtMTMxOCwxOCArMTMyNSwzMiBAQCBkb19tZXNzYWdlX2RvX25vdF91c2Vf
YXV0aF9jYWNoZV90ZXN0ICh2b2lkKQotIAlzb3VwX3VyaSA9IHNvdXBfdXJpX25ldyAodXJpKTsK
LSAJc291cF91cmlfc2V0X3VzZXIgKHNvdXBfdXJpLCAidXNlcjEiKTsKLSAJc291cF91cmlfc2V0
X3Bhc3N3b3JkIChzb3VwX3VyaSwgInJlYWxtMSIpOwotLQl1cmlfd2l0aF9jcmVkZW50aWFscyA9
IHNvdXBfdXJpX3RvX3N0cmluZyAoc291cF91cmksIEZBTFNFKTsKLSsJbXNnID0gc291cF9tZXNz
YWdlX25ld19mcm9tX3VyaSAoU09VUF9NRVRIT0RfR0VULCBzb3VwX3VyaSk7Ci0rCWZsYWdzID0g
c291cF9tZXNzYWdlX2dldF9mbGFncyAobXNnKTsKLSsJc291cF9tZXNzYWdlX3NldF9mbGFncyAo
bXNnLCBmbGFncyB8IFNPVVBfTUVTU0FHRV9ET19OT1RfVVNFX0FVVEhfQ0FDSEUpOwotKwlzb3Vw
X3Nlc3Npb25fc2VuZF9tZXNzYWdlIChzZXNzaW9uLCBtc2cpOwotKwlzb3VwX3Rlc3RfYXNzZXJ0
X21lc3NhZ2Vfc3RhdHVzIChtc2csIFNPVVBfU1RBVFVTX09LKTsKLSsJZ19vYmplY3RfdW5yZWYg
KG1zZyk7Ci0gCXNvdXBfdXJpX2ZyZWUgKHNvdXBfdXJpKTsKLS0JZG9fZGlnZXN0X25vbmNlX3Rl
c3QgKHNlc3Npb24sICJGb3VydGgiLCB1cmlfd2l0aF9jcmVkZW50aWFscywgRkFMU0UsIFRSVUUs
IEZBTFNFKTsKLS0JZ19mcmVlICh1cmlfd2l0aF9jcmVkZW50aWFscyk7Ci0gCi0gCW1hbmFnZXIg
PSBTT1VQX0FVVEhfTUFOQUdFUiAoc291cF9zZXNzaW9uX2dldF9mZWF0dXJlIChzZXNzaW9uLCBT
T1VQX1RZUEVfQVVUSF9NQU5BR0VSKSk7Ci0rCi0gCXNvdXBfYXV0aF9tYW5hZ2VyX2NsZWFyX2Nh
Y2hlZF9jcmVkZW50aWFscyAobWFuYWdlcik7Ci0gCi0gCS8qIE5vdyBjaGVjayB0aGF0IGNyZWRl
bnRpYWxzIGFyZSBub3Qgc3RvcmVkICovCi0gCWRvX2RpZ2VzdF9ub25jZV90ZXN0IChzZXNzaW9u
LCAiRmlyc3QiLCB1cmksIEZBTFNFLCBUUlVFLCBUUlVFKTsKLSAJZG9fZGlnZXN0X25vbmNlX3Rl
c3QgKHNlc3Npb24sICJTZWNvbmQiLCB1cmksIFRSVUUsIFRSVUUsIFRSVUUpOwotIAlkb19kaWdl
c3Rfbm9uY2VfdGVzdCAoc2Vzc2lvbiwgIlRoaXJkIiwgdXJpLCBUUlVFLCBGQUxTRSwgRkFMU0Up
OwotKwotKwkvKiBDcmVkZW50aWFscyB3ZXJlIHN0b3JlZCBmb3IgdXJpLCBidXQgaWYgd2Ugc2V0
IFNPVVBfTUVTU0FHRV9ET19OT1RfVVNFX0FVVEhfQ0FDSEUgZmxhZywKLSsJICogYW5kIHdlIGRv
bid0IGhhdmUgdGhlIGF1dGhlbnRpY2F0ZSBzaWduYWwsIGl0IHNob3VsZCByZXNwb25kIHdpdGgg
NDAxCi0rCSAqLwotKwltc2cgPSBzb3VwX21lc3NhZ2VfbmV3IChTT1VQX01FVEhPRF9HRVQsIHVy
aSk7Ci0rCWZsYWdzID0gc291cF9tZXNzYWdlX2dldF9mbGFncyAobXNnKTsKLSsJc291cF9tZXNz
YWdlX3NldF9mbGFncyAobXNnLCBmbGFncyB8IFNPVVBfTUVTU0FHRV9ET19OT1RfVVNFX0FVVEhf
Q0FDSEUpOwotKwlzb3VwX3Nlc3Npb25fc2VuZF9tZXNzYWdlIChzZXNzaW9uLCBtc2cpOwotKwlz
b3VwX3Rlc3RfYXNzZXJ0X21lc3NhZ2Vfc3RhdHVzIChtc2csIFNPVVBfU1RBVFVTX1VOQVVUSE9S
SVpFRCk7Ci0rCWdfb2JqZWN0X3VucmVmIChtc2cpOwotIAlnX2ZyZWUgKHVyaSk7Ci0gCi0gCXNv
dXBfdGVzdF9zZXNzaW9uX2Fib3J0X3VucmVmIChzZXNzaW9uKTsKLS0tIAotMi4xMS4wCi0KZGlm
ZiAtLWdpdCBhL1Rvb2xzL2d0ay9wYXRjaGVzL2xpYnNvdXAtc291cC1tZXNzYWdlLWlvLURvLW5v
dC1mYWlsLXdoZW4tdGhlcmUtcy1uby1lbXB0eS1saS5wYXRjaCBiL1Rvb2xzL2d0ay9wYXRjaGVz
L2xpYnNvdXAtc291cC1tZXNzYWdlLWlvLURvLW5vdC1mYWlsLXdoZW4tdGhlcmUtcy1uby1lbXB0
eS1saS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzVlNDcxYTUzMGE3NjY1
MTYwMzRhZmUxZDQ5NjA2YWVlMDdjYzNiMS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMAotLS0gYS9Ub29scy9ndGsvcGF0Y2hlcy9saWJzb3VwLXNvdXAtbWVzc2FnZS1p
by1Eby1ub3QtZmFpbC13aGVuLXRoZXJlLXMtbm8tZW1wdHktbGkucGF0Y2gKKysrIC9kZXYvbnVs
bApAQCAtMSw3NCArMCwwIEBACi1Gcm9tIGJiMjNjYWY3ZGI0ZTkxMTIwODllMTUwMmFhOGMxMDYx
NzgwOTVlN2UgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBDYXJsb3MgR2FyY2lhIENh
bXBvcyA8Y2dhcmNpYUBpZ2FsaWEuY29tPgotRGF0ZTogVHVlLCAyMSBNYXIgMjAxNyAxNDoxOTo0
NiArMDEwMAotU3ViamVjdDogW1BBVENIXSBzb3VwLW1lc3NhZ2UtaW86IERvIG5vdCBmYWlsIHdo
ZW4gdGhlcmUncyBubyBlbXB0eSBsaW5lIGFmdGVyCi0gaGVhZGVycwotCi1UaGUgc3BlYyBzYXlz
IHRoZXJlIHNob3VsZCBiZSBhbiBlbXB0eSBsaW5lIChcclxuKSBiZXR3ZWVuIHRoZSByZXNwb25z
ZQotaGVhZGVycyBhbmQgdGhlIGJvZHkuIEhvd2V2ZXIsIHNvbWUgc2VydmVycyBkb24ndCBpbmNs
dWRlIHRoZSBlbXB0eSBsaW5lCi13aGVuIHRoZSByZXNwb25zZSBkb2Vzbid0IGhhdmUgYSBib2R5
LiBUaGlzIGlzIGNhdXNpbmcgc2V2ZXJhbCBXZWJLaXQKLXRlc3RzIHRvIGZhaWwsIGJlY2F1c2Ug
c29tZSBvZiB0aGUgaW1wb3J0ZWQgdzNjIHRlc3RzIGRvIG5vdCBpbmNsdWRlCi10aGF0IGVtcHR5
IGxpbmUuIFRob3NlIHRlc3RzIHBhc3MgaW4gZmlyZWZveCwgY2hyb21pdW0gYW5kIHNhZmFyaSwg
c28gYXQKLWxlYXN0IHRob3NlIG90aGVyIGJyb3dzZXJzIGFsbG93IHRoYXQuCi0KLWh0dHBzOi8v
YnVnemlsbGEuZ25vbWUub3JnL3Nob3dfYnVnLmNnaT9pZD03ODAzNTIKLS0tLQotIGxpYnNvdXAv
c291cC1tZXNzYWdlLWlvLmMgfCAzNCArKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0t
Ci0gMSBmaWxlIGNoYW5nZWQsIDIwIGluc2VydGlvbnMoKyksIDE0IGRlbGV0aW9ucygtKQotCi1k
aWZmIC0tZ2l0IGEvbGlic291cC9zb3VwLW1lc3NhZ2UtaW8uYyBiL2xpYnNvdXAvc291cC1tZXNz
YWdlLWlvLmMKLWluZGV4IGU4OTNlYzJhLi5lYTAyYjFlMyAxMDA2NDQKLS0tLSBhL2xpYnNvdXAv
c291cC1tZXNzYWdlLWlvLmMKLSsrKyBiL2xpYnNvdXAvc291cC1tZXNzYWdlLWlvLmMKLUBAIC0y
MjksMTIgKzIyOSwxNiBAQCByZWFkX2hlYWRlcnMgKFNvdXBNZXNzYWdlICptc2csIGdib29sZWFu
IGJsb2NraW5nLAotIAkJCQkJCQkgICAgY2FuY2VsbGFibGUsIGVycm9yKTsKLSAJCWlvLT5yZWFk
X2hlYWRlcl9idWYtPmxlbiA9IG9sZF9sZW4gKyBNQVggKG5yZWFkLCAwKTsKLSAJCWlmIChucmVh
ZCA9PSAwKSB7Ci0tCQkJc291cF9tZXNzYWdlX3NldF9zdGF0dXMgKG1zZywgU09VUF9TVEFUVVNf
TUFMRk9STUVEKTsKLS0JCQlnX3NldF9lcnJvcl9saXRlcmFsIChlcnJvciwgR19JT19FUlJPUiwK
LS0JCQkJCSAgICAgR19JT19FUlJPUl9QQVJUSUFMX0lOUFVULAotLQkJCQkJICAgICBfKCJDb25u
ZWN0aW9uIHRlcm1pbmF0ZWQgdW5leHBlY3RlZGx5IikpOwotKwkJCWlmIChpby0+cmVhZF9oZWFk
ZXJfYnVmLT5sZW4gPT0gMCkgewotKwkJCQlzb3VwX21lc3NhZ2Vfc2V0X3N0YXR1cyAobXNnLCBT
T1VQX1NUQVRVU19NQUxGT1JNRUQpOwotKwkJCQlnX3NldF9lcnJvcl9saXRlcmFsIChlcnJvciwg
R19JT19FUlJPUiwKLSsJCQkJCQkgICAgIEdfSU9fRVJST1JfUEFSVElBTF9JTlBVVCwKLSsJCQkJ
CQkgICAgIF8oIkNvbm5lY3Rpb24gdGVybWluYXRlZCB1bmV4cGVjdGVkbHkiKSk7Ci0rCQkJCXJl
dHVybiBGQUxTRTsKLSsJCQl9Ci0rCQkJYnJlYWs7Ci0gCQl9Ci0tCQlpZiAobnJlYWQgPD0gMCkK
LSsJCWlmIChucmVhZCA8IDApCi0gCQkJcmV0dXJuIEZBTFNFOwotIAotIAkJaWYgKGdvdF9sZikg
ewotQEAgLTI1MSwxNSArMjU1LDE3IEBAIHJlYWRfaGVhZGVycyAoU291cE1lc3NhZ2UgKm1zZywg
Z2Jvb2xlYW4gYmxvY2tpbmcsCi0gCQl9Ci0gCX0KLSAKLS0JLyogV2UgbmVlZCB0byAicmV3aW5k
IiBpby0+cmVhZF9oZWFkZXJfYnVmIGJhY2sgb25lIGxpbmUuCi0tCSAqIFRoYXQgU0hPVUxEIGJl
IHR3byBjaGFyYWN0ZXJzIChDUiBMRiksIGJ1dCBpZiB0aGUKLS0JICogd2ViIHNlcnZlciB3YXMg
c3R1cGlkLCBpdCBtaWdodCBvbmx5IGJlIG9uZS4KLS0JICovCi0tCWlmIChpby0+cmVhZF9oZWFk
ZXJfYnVmLT5sZW4gPCAzIHx8Ci0tCSAgICBpby0+cmVhZF9oZWFkZXJfYnVmLT5kYXRhW2lvLT5y
ZWFkX2hlYWRlcl9idWYtPmxlbiAtIDJdID09ICdcbicpCi0tCQlpby0+cmVhZF9oZWFkZXJfYnVm
LT5sZW4tLTsKLS0JZWxzZQotLQkJaW8tPnJlYWRfaGVhZGVyX2J1Zi0+bGVuIC09IDI7Ci0rCWlm
IChnb3RfbGYpIHsKLSsJCS8qIFdlIG5lZWQgdG8gInJld2luZCIgaW8tPnJlYWRfaGVhZGVyX2J1
ZiBiYWNrIG9uZSBsaW5lLgotKwkJICogVGhhdCBTSE9VTEQgYmUgdHdvIGNoYXJhY3RlcnMgKENS
IExGKSwgYnV0IGlmIHRoZQotKwkJICogd2ViIHNlcnZlciB3YXMgc3R1cGlkLCBpdCBtaWdodCBv
bmx5IGJlIG9uZS4KLSsJCSAqLwotKwkJaWYgKGlvLT5yZWFkX2hlYWRlcl9idWYtPmxlbiA8IDMg
fHwKLSsJCSAgICBpby0+cmVhZF9oZWFkZXJfYnVmLT5kYXRhW2lvLT5yZWFkX2hlYWRlcl9idWYt
PmxlbiAtIDJdID09ICdcbicpCi0rCQkJaW8tPnJlYWRfaGVhZGVyX2J1Zi0+bGVuLS07Ci0rCQll
bHNlCi0rCQkJaW8tPnJlYWRfaGVhZGVyX2J1Zi0+bGVuIC09IDI7Ci0rCX0KLSAJaW8tPnJlYWRf
aGVhZGVyX2J1Zi0+ZGF0YVtpby0+cmVhZF9oZWFkZXJfYnVmLT5sZW5dID0gJ1wwJzsKLSAKLSAJ
cmV0dXJuIFRSVUU7Ci0tLSAKLTIuMTEuMAotCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>338404</attachid>
            <date>2018-04-20 03:05:00 -0700</date>
            <delta_ts>2018-04-20 08:51:38 -0700</delta_ts>
            <desc>Simpler patch</desc>
            <filename>wcore-soup-ws-tls-errors.diff</filename>
            <type>text/plain</type>
            <size>12407</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA2ODA3NjZhZWUyYy4uMGY4ODU4ZGRhYmQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyMCBAQAorMjAxOC0wNC0yMCAgQ2FybG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGln
YWxpYS5jb20+CisKKyAgICAgICAgUkVHUkVTU0lPTihyMjI4MDg4KTogW1NPVVBdIENoZWNrIFRM
UyBlcnJvcnMgZm9yIFdlYlNvY2tldHMgcmlnaHQgYWZ0ZXIgVExTIGhhbmRzaGFja2luZyBldmVu
dAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTg0ODA0
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBwbGF0
Zm9ybS9uZXR3b3JrL3NvdXAvU29ja2V0U3RyZWFtSGFuZGxlSW1wbC5oOiBBZGQgYSBwdWJsaWMg
dXJsIGdldHRlci4KKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL3NvdXAvU29ja2V0U3RyZWFt
SGFuZGxlSW1wbFNvdXAuY3BwOgorICAgICAgICAoV2ViQ29yZTo6YWNjZXB0Q2VydGlmaWNhdGVD
YWxsYmFjayk6IENhbGwgU291cE5ldHdvcmtTZXNzaW9uOjpjaGVja1RMU0Vycm9ycygpIHRvIGRl
Y2lkZSB3aGV0aGVyIHRvIGFjY2VwdCB0aGUKKyAgICAgICAgY2VydGlmaWNhdGUgb3Igbm90Lgor
ICAgICAgICAoV2ViQ29yZTo6Y29ubmVjdFByb2dyZXNzQ2FsbGJhY2spOiBSZWNlaXZlIHRoZSBT
b2NrZXRTdHJlYW1IYW5kbGUgYW5kIHBhc3MgaXQgdG8gYWNjZXB0Q2VydGlmaWNhdGVDYWxsYmFj
ayBjYWxsYmFjay4KKyAgICAgICAgKFdlYkNvcmU6OnNvY2tldENsaWVudEV2ZW50Q2FsbGJhY2sp
OiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OlNvY2tldFN0cmVhbUhhbmRsZUltcGw6OmNyZWF0
ZSk6IEFsd2F5cyBjb25uZWN0IHRvIG5ldHdvcmsgZXZlbnRzLgorICAgICAgICAoV2ViQ29yZTo6
d3NzQ29ubmVjdGlvbkFjY2VwdENlcnRpZmljYXRlQ2FsbGJhY2spOiBEZWxldGVkLgorICAgICAg
ICAoV2ViQ29yZTo6d3NzU29ja2V0Q2xpZW50RXZlbnRDYWxsYmFjayk6IERlbGV0ZWQuCisKIDIw
MTgtMDQtMjAgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgogCiAg
ICAgICAgIFtTT1VQXSBEbyBUTFMgZXJyb3IgY2hlY2tpbmcgcmlnaHQgYWZ0ZXIgVExTIGhhbmRz
aGFja2luZyBldmVudApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9zb3VwL1NvY2tldFN0cmVhbUhhbmRsZUltcGwuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvc291cC9Tb2NrZXRTdHJlYW1IYW5kbGVJbXBsLmgKaW5kZXggOGEzMmViMTM2ZjEu
Ljc4MjdmYWYwYzI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L3NvdXAvU29ja2V0U3RyZWFtSGFuZGxlSW1wbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvc291cC9Tb2NrZXRTdHJlYW1IYW5kbGVJbXBsLmgKQEAgLTUxLDYgKzUxLDgg
QEAgcHVibGljOgogICAgIHN0YXRpYyBSZWY8U29ja2V0U3RyZWFtSGFuZGxlSW1wbD4gY3JlYXRl
KGNvbnN0IFVSTCYsIFNvY2tldFN0cmVhbUhhbmRsZUNsaWVudCYsIFBBTDo6U2Vzc2lvbklELCBj
b25zdCBTdHJpbmcmLCBTb3VyY2VBcHBsaWNhdGlvbkF1ZGl0VG9rZW4mJik7CiAgICAgdmlydHVh
bCB+U29ja2V0U3RyZWFtSGFuZGxlSW1wbCgpOwogCisgICAgY29uc3QgVVJMJiB1cmwoKSBjb25z
dCB7IHJldHVybiBtX3VybDsgfQorCiAgICAgdm9pZCBwbGF0Zm9ybVNlbmQoY29uc3QgY2hhciog
ZGF0YSwgc2l6ZV90IGxlbmd0aCwgRnVuY3Rpb248dm9pZChib29sKT4mJikgZmluYWw7CiAgICAg
dm9pZCBwbGF0Zm9ybUNsb3NlKCkgZmluYWw7CiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1NvY2tldFN0cmVhbUhhbmRsZUltcGxTb3Vw
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9Tb2NrZXRTdHJlYW1I
YW5kbGVJbXBsU291cC5jcHAKaW5kZXggMTc4ODA2NjMyOWEuLjUzMDNmMGQ4NTA1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvU29ja2V0U3RyZWFtSGFu
ZGxlSW1wbFNvdXAuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291
cC9Tb2NrZXRTdHJlYW1IYW5kbGVJbXBsU291cC5jcHAKQEAgLTUwLDI2ICs1MCwzMCBAQAogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKLXN0YXRpYyBnYm9vbGVhbiB3c3NDb25uZWN0aW9uQWNjZXB0
Q2VydGlmaWNhdGVDYWxsYmFjayhHVGxzQ29ubmVjdGlvbiosIEdUbHNDZXJ0aWZpY2F0ZSosIEdU
bHNDZXJ0aWZpY2F0ZUZsYWdzKQorc3RhdGljIGdib29sZWFuIGFjY2VwdENlcnRpZmljYXRlQ2Fs
bGJhY2soR1Rsc0Nvbm5lY3Rpb24qLCBHVGxzQ2VydGlmaWNhdGUqIGNlcnRpZmljYXRlLCBHVGxz
Q2VydGlmaWNhdGVGbGFncyBlcnJvcnMsIFNvY2tldFN0cmVhbUhhbmRsZUltcGwqIGhhbmRsZSkK
IHsKLSAgICByZXR1cm4gVFJVRTsKKyAgICAvLyBGSVhNRTogVXNpbmcgRGVwcmVjYXRlZEdsb2Jh
bFNldHRpbmdzIGZyb20gaGVyZSBpcyBhIGxheWVyaW5nIHZpb2xhdGlvbi4KKyAgICBpZiAoRGVw
cmVjYXRlZEdsb2JhbFNldHRpbmdzOjphbGxvd3NBbnlTU0xDZXJ0aWZpY2F0ZSgpKQorICAgICAg
ICByZXR1cm4gVFJVRTsKKworICAgIHJldHVybiAhU291cE5ldHdvcmtTZXNzaW9uOjpjaGVja1RM
U0Vycm9ycyhoYW5kbGUtPnVybCgpLCBjZXJ0aWZpY2F0ZSwgZXJyb3JzKTsKIH0KIAogI2lmIFNP
VVBfQ0hFQ0tfVkVSU0lPTigyLCA2MSwgOTApCi1zdGF0aWMgdm9pZCB3c3NTb2NrZXRDbGllbnRF
dmVudENhbGxiYWNrKFNvdXBTZXNzaW9uKiwgR1NvY2tldENsaWVudEV2ZW50IGV2ZW50LCBHSU9T
dHJlYW0qIGNvbm5lY3Rpb24pCitzdGF0aWMgdm9pZCBjb25uZWN0UHJvZ3Jlc3NDYWxsYmFjayhT
b3VwU2Vzc2lvbiosIEdTb2NrZXRDbGllbnRFdmVudCBldmVudCwgR0lPU3RyZWFtKiBjb25uZWN0
aW9uLCBTb2NrZXRTdHJlYW1IYW5kbGVJbXBsKiBoYW5kbGUpCiB7CiAgICAgaWYgKGV2ZW50ICE9
IEdfU09DS0VUX0NMSUVOVF9UTFNfSEFORFNIQUtJTkcpCiAgICAgICAgIHJldHVybjsKIAotICAg
IGdfc2lnbmFsX2Nvbm5lY3QoY29ubmVjdGlvbiwgImFjY2VwdC1jZXJ0aWZpY2F0ZSIsIEdfQ0FM
TEJBQ0sod3NzQ29ubmVjdGlvbkFjY2VwdENlcnRpZmljYXRlQ2FsbGJhY2spLCBudWxscHRyKTsK
KyAgICBnX3NpZ25hbF9jb25uZWN0KGNvbm5lY3Rpb24sICJhY2NlcHQtY2VydGlmaWNhdGUiLCBH
X0NBTExCQUNLKGFjY2VwdENlcnRpZmljYXRlQ2FsbGJhY2spLCBoYW5kbGUpOwogfQogI2Vsc2UK
LXN0YXRpYyB2b2lkIHdzc1NvY2tldENsaWVudEV2ZW50Q2FsbGJhY2soR1NvY2tldENsaWVudCos
IEdTb2NrZXRDbGllbnRFdmVudCBldmVudCwgR1NvY2tldENvbm5lY3RhYmxlKiwgR0lPU3RyZWFt
KiBjb25uZWN0aW9uKQorc3RhdGljIHZvaWQgc29ja2V0Q2xpZW50RXZlbnRDYWxsYmFjayhHU29j
a2V0Q2xpZW50KiwgR1NvY2tldENsaWVudEV2ZW50IGV2ZW50LCBHU29ja2V0Q29ubmVjdGFibGUq
LCBHSU9TdHJlYW0qIGNvbm5lY3Rpb24sIFNvY2tldFN0cmVhbUhhbmRsZUltcGwqIGhhbmRsZSkK
IHsKICAgICBpZiAoZXZlbnQgIT0gR19TT0NLRVRfQ0xJRU5UX1RMU19IQU5EU0hBS0lORykKICAg
ICAgICAgcmV0dXJuOwogCi0gICAgZ19zaWduYWxfY29ubmVjdChjb25uZWN0aW9uLCAiYWNjZXB0
LWNlcnRpZmljYXRlIiwgR19DQUxMQkFDSyh3c3NDb25uZWN0aW9uQWNjZXB0Q2VydGlmaWNhdGVD
YWxsYmFjayksIG51bGxwdHIpOworICAgIGdfc2lnbmFsX2Nvbm5lY3QoY29ubmVjdGlvbiwgImFj
Y2VwdC1jZXJ0aWZpY2F0ZSIsIEdfQ0FMTEJBQ0soYWNjZXB0Q2VydGlmaWNhdGVDYWxsYmFjayks
IGhhbmRsZSk7CiB9CiAjZW5kaWYKIApAQCAtNzcsOSArODEsNiBAQCBSZWY8U29ja2V0U3RyZWFt
SGFuZGxlSW1wbD4gU29ja2V0U3RyZWFtSGFuZGxlSW1wbDo6Y3JlYXRlKGNvbnN0IFVSTCYgdXJs
LCBTb2NrZQogewogICAgIFJlZjxTb2NrZXRTdHJlYW1IYW5kbGVJbXBsPiBzb2NrZXQgPSBhZG9w
dFJlZigqbmV3IFNvY2tldFN0cmVhbUhhbmRsZUltcGwodXJsLCBjbGllbnQpKTsKIAotICAgIC8v
IEZJWE1FOiBVc2luZyBEZXByZWNhdGVkR2xvYmFsU2V0dGluZ3MgZnJvbSBoZXJlIGlzIGEgbGF5
ZXJpbmcgdmlvbGF0aW9uLgotICAgIGJvb2wgYWxsb3dzQW55U1NMQ2VydGlmaWNhdGUgPSB1cmwu
cHJvdG9jb2xJcygid3NzIikgJiYgRGVwcmVjYXRlZEdsb2JhbFNldHRpbmdzOjphbGxvd3NBbnlT
U0xDZXJ0aWZpY2F0ZSgpOwotCiAjaWYgU09VUF9DSEVDS19WRVJTSU9OKDIsIDYxLCA5MCkKICAg
ICBhdXRvKiBuZXR3b3JrU3RvcmFnZVNlc3Npb24gPSBOZXR3b3JrU3RvcmFnZVNlc3Npb246OnN0
b3JhZ2VTZXNzaW9uKHNlc3Npb25JRCk7CiAgICAgaWYgKCFuZXR3b3JrU3RvcmFnZVNlc3Npb24p
CkBAIC04OCw3ICs4OSw3IEBAIFJlZjxTb2NrZXRTdHJlYW1IYW5kbGVJbXBsPiBTb2NrZXRTdHJl
YW1IYW5kbGVJbXBsOjpjcmVhdGUoY29uc3QgVVJMJiB1cmwsIFNvY2tlCiAgICAgYXV0byB1cmkg
PSB1cmwuY3JlYXRlU291cFVSSSgpOwogICAgIFJlZjxTb2NrZXRTdHJlYW1IYW5kbGU+IHByb3Rl
Y3RlZFNvY2tldFN0cmVhbUhhbmRsZSA9IHNvY2tldC5jb3B5UmVmKCk7CiAgICAgc291cF9zZXNz
aW9uX2Nvbm5lY3RfYXN5bmMobmV0d29ya1N0b3JhZ2VTZXNzaW9uLT5nZXRPckNyZWF0ZVNvdXBO
ZXR3b3JrU2Vzc2lvbigpLnNvdXBTZXNzaW9uKCksIHVyaS5nZXQoKSwgc29ja2V0LT5tX2NhbmNl
bGxhYmxlLmdldCgpLAotICAgICAgICBhbGxvd3NBbnlTU0xDZXJ0aWZpY2F0ZSA/IHJlaW50ZXJw
cmV0X2Nhc3Q8U291cFNlc3Npb25Db25uZWN0UHJvZ3Jlc3NDYWxsYmFjaz4od3NzU29ja2V0Q2xp
ZW50RXZlbnRDYWxsYmFjaykgOiBudWxscHRyLAorICAgICAgICByZWludGVycHJldF9jYXN0PFNv
dXBTZXNzaW9uQ29ubmVjdFByb2dyZXNzQ2FsbGJhY2s+KGNvbm5lY3RQcm9ncmVzc0NhbGxiYWNr
KSwKICAgICAgICAgcmVpbnRlcnByZXRfY2FzdDxHQXN5bmNSZWFkeUNhbGxiYWNrPihjb25uZWN0
ZWRDYWxsYmFjayksICZwcm90ZWN0ZWRTb2NrZXRTdHJlYW1IYW5kbGUubGVha1JlZigpKTsKICNl
bHNlCiAgICAgVU5VU0VEX1BBUkFNKHNlc3Npb25JRCk7CkBAIC05Niw4ICs5Nyw3IEBAIFJlZjxT
b2NrZXRTdHJlYW1IYW5kbGVJbXBsPiBTb2NrZXRTdHJlYW1IYW5kbGVJbXBsOjpjcmVhdGUoY29u
c3QgVVJMJiB1cmwsIFNvY2tlCiAgICAgR1JlZlB0cjxHU29ja2V0Q2xpZW50PiBzb2NrZXRDbGll
bnQgPSBhZG9wdEdSZWYoZ19zb2NrZXRfY2xpZW50X25ldygpKTsKICAgICBpZiAodXJsLnByb3Rv
Y29sSXMoIndzcyIpKSB7CiAgICAgICAgIGdfc29ja2V0X2NsaWVudF9zZXRfdGxzKHNvY2tldENs
aWVudC5nZXQoKSwgVFJVRSk7Ci0gICAgICAgIGlmIChhbGxvd3NBbnlTU0xDZXJ0aWZpY2F0ZSkK
LSAgICAgICAgICAgIGdfc2lnbmFsX2Nvbm5lY3Qoc29ja2V0Q2xpZW50LmdldCgpLCAiZXZlbnQi
LCBHX0NBTExCQUNLKHdzc1NvY2tldENsaWVudEV2ZW50Q2FsbGJhY2spLCBudWxscHRyKTsKKyAg
ICAgICAgZ19zaWduYWxfY29ubmVjdChzb2NrZXRDbGllbnQuZ2V0KCksICJldmVudCIsIEdfQ0FM
TEJBQ0soc29ja2V0Q2xpZW50RXZlbnRDYWxsYmFjayksIHNvY2tldC5wdHIoKSk7CiAgICAgfQog
ICAgIFJlZjxTb2NrZXRTdHJlYW1IYW5kbGU+IHByb3RlY3RlZFNvY2tldFN0cmVhbUhhbmRsZSA9
IHNvY2tldC5jb3B5UmVmKCk7CiAgICAgZ19zb2NrZXRfY2xpZW50X2Nvbm5lY3RfdG9faG9zdF9h
c3luYyhzb2NrZXRDbGllbnQuZ2V0KCksIHVybC5ob3N0KCkudXRmOCgpLmRhdGEoKSwgcG9ydCwg
c29ja2V0LT5tX2NhbmNlbGxhYmxlLmdldCgpLApkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9n
IGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IGZkMjdlNzkyODJlLi4wY2Y2YjRiZDE4YSAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5
IEBACisyMDE4LTA0LTIwICBNaWNoYWVsIENhdGFuemFybyAgPG1jYXRhbnphcm9AaWdhbGlhLmNv
bT4KKworICAgICAgICBSRUdSRVNTSU9OKHIyMjgwODgpOiBbU09VUF0gQ2hlY2sgVExTIGVycm9y
cyBmb3IgV2ViU29ja2V0cyByaWdodCBhZnRlciBUTFMgaGFuZHNoYWNraW5nIGV2ZW50CisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODQ4MDQKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFRlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViS2l0R0xpYi9UZXN0U1NMLmNwcDoKKyAgICAgICAgKFdlYlNvY2tldFRlc3Q6
OldlYlNvY2tldFRlc3QpOgorICAgICAgICAoV2ViU29ja2V0VGVzdDo6fldlYlNvY2tldFRlc3Qp
OgorICAgICAgICAoV2ViU29ja2V0VGVzdDo6c2VydmVyV2ViU29ja2V0Q2FsbGJhY2spOgorICAg
ICAgICAoV2ViU29ja2V0VGVzdDo6d2ViU29ja2V0VGVzdFJlc3VsdENhbGxiYWNrKToKKyAgICAg
ICAgKFdlYlNvY2tldFRlc3Q6OmNvbm5lY3RUb1NlcnZlckFuZFdhaXRGb3JFdmVudHMpOgorICAg
ICAgICAodGVzdFdlYlNvY2tldFRMU0Vycm9ycyk6CisgICAgICAgIChiZWZvcmVBbGwpOgorCiAy
MDE4LTA0LTIwICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNvbT4KIAog
ICAgICAgICBbU09VUF0gRG8gVExTIGVycm9yIGNoZWNraW5nIHJpZ2h0IGFmdGVyIFRMUyBoYW5k
c2hhY2tpbmcgZXZlbnQKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
S2l0R0xpYi9UZXN0U1NMLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xp
Yi9UZXN0U1NMLmNwcAppbmRleCA1ZGJmM2RkZmVlMC4uMGJmY2Y1YWRhOTggMTAwNjQ0Ci0tLSBh
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9UZXN0U1NMLmNwcAorKysgYi9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIvVGVzdFNTTC5jcHAKQEAgLTMzOCw2
ICszMzgsMTA4IEBAIHN0YXRpYyB2b2lkIHRlc3RTdWJyZXNvdXJjZUxvYWRGYWlsZWRXaXRoVExT
RXJyb3JzKFRMU1N1YnJlc291cmNlVGVzdCogdGVzdCwgZ2NvCiAgICAgYXNzZXJ0SWZTU0xSZXF1
ZXN0UHJvY2Vzc2VkID0gZmFsc2U7CiB9CiAKKyNpZiBTT1VQX0NIRUNLX1ZFUlNJT04oMiwgNTAs
IDApCitjbGFzcyBXZWJTb2NrZXRUZXN0IDogcHVibGljIFdlYlZpZXdUZXN0IHsKK3B1YmxpYzoK
KyAgICBNQUtFX0dMSUJfVEVTVF9GSVhUVVJFKFdlYlNvY2tldFRlc3QpOworCisgICAgZW51bSBF
dmVudEZsYWdzIHsKKyAgICAgICAgTm9uZSA9IDAsCisgICAgICAgIERpZFJlYWNoU2VydmVyID0g
MSA8PCAwLAorICAgICAgICBEaWRPcGVuID0gMSA8PCAxLAorICAgICAgICBEaWRDbG9zZSA9IDEg
PDwgMgorICAgIH07CisKKyAgICBXZWJTb2NrZXRUZXN0KCkKKyAgICB7CisgICAgICAgIHdlYmtp
dF91c2VyX2NvbnRlbnRfbWFuYWdlcl9yZWdpc3Rlcl9zY3JpcHRfbWVzc2FnZV9oYW5kbGVyKG1f
dXNlckNvbnRlbnRNYW5hZ2VyLmdldCgpLCAiZXZlbnQiKTsKKyAgICAgICAgZ19zaWduYWxfY29u
bmVjdChtX3VzZXJDb250ZW50TWFuYWdlci5nZXQoKSwgInNjcmlwdC1tZXNzYWdlLXJlY2VpdmVk
OjpldmVudCIsIEdfQ0FMTEJBQ0sod2ViU29ja2V0VGVzdFJlc3VsdENhbGxiYWNrKSwgdGhpcyk7
CisgICAgfQorCisgICAgdmlydHVhbCB+V2ViU29ja2V0VGVzdCgpCisgICAgeworICAgICAgICB3
ZWJraXRfdXNlcl9jb250ZW50X21hbmFnZXJfdW5yZWdpc3Rlcl9zY3JpcHRfbWVzc2FnZV9oYW5k
bGVyKG1fdXNlckNvbnRlbnRNYW5hZ2VyLmdldCgpLCAiZXZlbnQiKTsKKyAgICAgICAgZ19zaWdu
YWxfaGFuZGxlcnNfZGlzY29ubmVjdF9ieV9kYXRhKG1fdXNlckNvbnRlbnRNYW5hZ2VyLmdldCgp
LCB0aGlzKTsKKyAgICB9CisKKyAgICBzdGF0aWMgY29uc3RleHByIGNvbnN0IGNoYXIqIHdlYlNv
Y2tldFRlc3RKU0Zvcm1hdCA9CisgICAgICAgICJ2YXIgc29ja2V0ID0gbmV3IFdlYlNvY2tldCgn
JXMnKTsiCisgICAgICAgICJzb2NrZXQuYWRkRXZlbnRMaXN0ZW5lcignb3BlbicsIG9uT3Blbik7
IgorICAgICAgICAic29ja2V0LmFkZEV2ZW50TGlzdGVuZXIoJ2Nsb3NlJywgb25DbG9zZSk7Igor
ICAgICAgICAiZnVuY3Rpb24gb25PcGVuKCkgeyIKKyAgICAgICAgIiAgICB3aW5kb3cud2Via2l0
Lm1lc3NhZ2VIYW5kbGVycy5ldmVudC5wb3N0TWVzc2FnZSgnb3BlbicpOyIKKyAgICAgICAgIiAg
ICBzb2NrZXQucmVtb3ZlRXZlbnRMaXN0ZW5lcignY2xvc2UnLCBvbkNsb3NlKTsiCisgICAgICAg
ICJ9IgorICAgICAgICAiZnVuY3Rpb24gb25DbG9zZSgpIHsiCisgICAgICAgICIgICAgd2luZG93
LndlYmtpdC5tZXNzYWdlSGFuZGxlcnMuZXZlbnQucG9zdE1lc3NhZ2UoJ2Nsb3NlJyk7IgorICAg
ICAgICAiICAgIHNvY2tldC5yZW1vdmVFdmVudExpc3RlbmVyKCdvcGVuJywgb25PcGVuKTsiCisg
ICAgICAgICJ9IjsKKworICAgIHN0YXRpYyB2b2lkIHNlcnZlcldlYlNvY2tldENhbGxiYWNrKFNv
dXBTZXJ2ZXIqLCBTb3VwV2Vic29ja2V0Q29ubmVjdGlvbiosIGNvbnN0IGNoYXIqLCBTb3VwQ2xp
ZW50Q29udGV4dCosIGdwb2ludGVyIHVzZXJEYXRhKQorICAgIHsKKyAgICAgICAgc3RhdGljX2Nh
c3Q8V2ViU29ja2V0VGVzdCo+KHVzZXJEYXRhKS0+bV9ldmVudHMgfD0gV2ViU29ja2V0VGVzdDo6
RXZlbnRGbGFnczo6RGlkUmVhY2hTZXJ2ZXI7CisgICAgfQorCisgICAgc3RhdGljIHZvaWQgd2Vi
U29ja2V0VGVzdFJlc3VsdENhbGxiYWNrKFdlYktpdFVzZXJDb250ZW50TWFuYWdlciosIFdlYktp
dEphdmFzY3JpcHRSZXN1bHQqIGphdmFzY3JpcHRSZXN1bHQsIFdlYlNvY2tldFRlc3QqIHRlc3Qp
CisgICAgeworICAgICAgICBHVW5pcXVlUHRyPGNoYXI+IGV2ZW50KFdlYlZpZXdUZXN0OjpqYXZh
c2NyaXB0UmVzdWx0VG9DU3RyaW5nKGphdmFzY3JpcHRSZXN1bHQpKTsKKyAgICAgICAgaWYgKCFn
X3N0cmNtcDAoZXZlbnQuZ2V0KCksICJvcGVuIikpCisgICAgICAgICAgICB0ZXN0LT5tX2V2ZW50
cyB8PSBXZWJTb2NrZXRUZXN0OjpFdmVudEZsYWdzOjpEaWRPcGVuOworICAgICAgICBlbHNlIGlm
ICghZ19zdHJjbXAwKGV2ZW50LmdldCgpLCAiY2xvc2UiKSkKKyAgICAgICAgICAgIHRlc3QtPm1f
ZXZlbnRzIHw9IFdlYlNvY2tldFRlc3Q6OkV2ZW50RmxhZ3M6OkRpZENsb3NlOworICAgICAgICBl
bHNlCisgICAgICAgICAgICBnX2Fzc2VydF9ub3RfcmVhY2hlZCgpOworICAgICAgICB0ZXN0LT5x
dWl0TWFpbkxvb3AoKTsKKyAgICB9CisKKyAgICB1bnNpZ25lZCBjb25uZWN0VG9TZXJ2ZXJBbmRX
YWl0Rm9yRXZlbnRzKFdlYktpdFRlc3RTZXJ2ZXIqIHNlcnZlcikKKyAgICB7CisgICAgICAgIG1f
ZXZlbnRzID0gMDsKKworICAgICAgICBzZXJ2ZXItPmFkZFdlYlNvY2tldEhhbmRsZXIoc2VydmVy
V2ViU29ja2V0Q2FsbGJhY2ssIHRoaXMpOworICAgICAgICBHVW5pcXVlUHRyPGNoYXI+IGNyZWF0
ZVdlYlNvY2tldEpTKGdfc3RyZHVwX3ByaW50Zih3ZWJTb2NrZXRUZXN0SlNGb3JtYXQsIHNlcnZl
ci0+Z2V0V2ViU29ja2V0VVJJRm9yUGF0aCgiL2ZvbyIpLmRhdGEoKSkpOworICAgICAgICB3ZWJr
aXRfd2ViX3ZpZXdfcnVuX2phdmFzY3JpcHQobV93ZWJWaWV3LCBjcmVhdGVXZWJTb2NrZXRKUy5n
ZXQoKSwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0cik7CisgICAgICAgIGdfbWFpbl9sb29wX3J1
bihtX21haW5Mb29wKTsKKyAgICAgICAgc2VydmVyLT5yZW1vdmVXZWJTb2NrZXRIYW5kbGVyKCk7
CisKKyAgICAgICAgcmV0dXJuIG1fZXZlbnRzOworICAgIH0KKworICAgIHVuc2lnbmVkIG1fZXZl
bnRzIHsgMCB9OworfTsKKworc3RhdGljIHZvaWQgdGVzdFdlYlNvY2tldFRMU0Vycm9ycyhXZWJT
b2NrZXRUZXN0KiB0ZXN0LCBnY29uc3Rwb2ludGVyKQoreworICAgIFdlYktpdFdlYkNvbnRleHQq
IGNvbnRleHQgPSB3ZWJraXRfd2ViX3ZpZXdfZ2V0X2NvbnRleHQodGVzdC0+bV93ZWJWaWV3KTsK
KyAgICBXZWJLaXRUTFNFcnJvcnNQb2xpY3kgb3JpZ2luYWxQb2xpY3kgPSB3ZWJraXRfd2ViX2Nv
bnRleHRfZ2V0X3Rsc19lcnJvcnNfcG9saWN5KGNvbnRleHQpOworICAgIHdlYmtpdF93ZWJfY29u
dGV4dF9zZXRfdGxzX2Vycm9yc19wb2xpY3koY29udGV4dCwgV0VCS0lUX1RMU19FUlJPUlNfUE9M
SUNZX0ZBSUwpOworCisgICAgLy8gRmlyc3QsIGNoZWNrIHRoYXQgaW5zZWN1cmUgd3M6Ly8gd2Vi
IHNvY2tldHMgd29yayBmaW5lLgorICAgIHVuc2lnbmVkIGV2ZW50cyA9IHRlc3QtPmNvbm5lY3RU
b1NlcnZlckFuZFdhaXRGb3JFdmVudHMoa0h0dHBTZXJ2ZXIpOworICAgIGdfYXNzZXJ0X3RydWUo
ZXZlbnRzKTsKKyAgICBnX2Fzc2VydF90cnVlKGV2ZW50cyAmIFdlYlNvY2tldFRlc3Q6OkV2ZW50
RmxhZ3M6OkRpZFJlYWNoU2VydmVyKTsKKyAgICBnX2Fzc2VydF90cnVlKGV2ZW50cyAmIFdlYlNv
Y2tldFRlc3Q6OkV2ZW50RmxhZ3M6OkRpZE9wZW4pOworICAgIGdfYXNzZXJ0X2ZhbHNlKGV2ZW50
cyAmIFdlYlNvY2tldFRlc3Q6OkV2ZW50RmxhZ3M6OkRpZENsb3NlKTsKKworICAgIC8vIFRyeSBh
Z2FpbiB1c2luZyB3c3M6Ly8gdGhpcyB0aW1lLiBJdCBzaG91bGQgYmUgYmxvY2tlZCBiZWNhdXNl
IHRoZQorICAgIC8vIHNlcnZlciBjZXJ0aWZpY2F0ZSBpcyBzZWxmLXNpZ25lZC4KKyAgICBldmVu
dHMgPSB0ZXN0LT5jb25uZWN0VG9TZXJ2ZXJBbmRXYWl0Rm9yRXZlbnRzKGtIdHRwc1NlcnZlcik7
CisgICAgZ19hc3NlcnRfdHJ1ZShldmVudHMpOworICAgIGdfYXNzZXJ0X2ZhbHNlKGV2ZW50cyAm
IFdlYlNvY2tldFRlc3Q6OkV2ZW50RmxhZ3M6OkRpZFJlYWNoU2VydmVyKTsKKyAgICBnX2Fzc2Vy
dF9mYWxzZShldmVudHMgJiBXZWJTb2NrZXRUZXN0OjpFdmVudEZsYWdzOjpEaWRPcGVuKTsKKyAg
ICBnX2Fzc2VydF90cnVlKGV2ZW50cyAmIFdlYlNvY2tldFRlc3Q6OkV2ZW50RmxhZ3M6OkRpZENs
b3NlKTsKKworICAgIC8vIE5vdyB0cnkgd3NzOi8vIGFnYWluLCB0aGlzIHRpbWUgaWdub3Jpbmcg
VExTIGVycm9ycy4KKyAgICB3ZWJraXRfd2ViX2NvbnRleHRfc2V0X3Rsc19lcnJvcnNfcG9saWN5
KGNvbnRleHQsIFdFQktJVF9UTFNfRVJST1JTX1BPTElDWV9JR05PUkUpOworICAgIGV2ZW50cyA9
IHRlc3QtPmNvbm5lY3RUb1NlcnZlckFuZFdhaXRGb3JFdmVudHMoa0h0dHBzU2VydmVyKTsKKyAg
ICBnX2Fzc2VydF90cnVlKGV2ZW50cyAmIFdlYlNvY2tldFRlc3Q6OkV2ZW50RmxhZ3M6OkRpZFJl
YWNoU2VydmVyKTsKKyAgICBnX2Fzc2VydF90cnVlKGV2ZW50cyAmIFdlYlNvY2tldFRlc3Q6OkV2
ZW50RmxhZ3M6OkRpZE9wZW4pOworICAgIGdfYXNzZXJ0X2ZhbHNlKGV2ZW50cyAmIFdlYlNvY2tl
dFRlc3Q6OkV2ZW50RmxhZ3M6OkRpZENsb3NlKTsKKworICAgIHdlYmtpdF93ZWJfY29udGV4dF9z
ZXRfdGxzX2Vycm9yc19wb2xpY3koY29udGV4dCwgb3JpZ2luYWxQb2xpY3kpOworfQorI2VuZGlm
CisKIHN0YXRpYyB2b2lkIGh0dHBzU2VydmVyQ2FsbGJhY2soU291cFNlcnZlciogc2VydmVyLCBT
b3VwTWVzc2FnZSogbWVzc2FnZSwgY29uc3QgY2hhciogcGF0aCwgR0hhc2hUYWJsZSosIFNvdXBD
bGllbnRDb250ZXh0KiwgZ3BvaW50ZXIpCiB7CiAgICAgaWYgKG1lc3NhZ2UtPm1ldGhvZCAhPSBT
T1VQX01FVEhPRF9HRVQpIHsKQEAgLTQyNCw2ICs1MjYsOSBAQCB2b2lkIGJlZm9yZUFsbCgpCiAg
ICAgU1NMVGVzdDo6YWRkKCJXZWJLaXRXZWJWaWV3IiwgInRscy1odHRwLWF1dGgiLCB0ZXN0VExT
RXJyb3JzSFRUUEF1dGgpOwogICAgIFRMU1N1YnJlc291cmNlVGVzdDo6YWRkKCJXZWJLaXRXZWJW
aWV3IiwgInRscy1zdWJyZXNvdXJjZSIsIHRlc3RTdWJyZXNvdXJjZUxvYWRGYWlsZWRXaXRoVExT
RXJyb3JzKTsKICAgICBUTFNFcnJvcnNUZXN0OjphZGQoIldlYktpdFdlYlZpZXciLCAibG9hZC1m
YWlsZWQtd2l0aC10bHMtZXJyb3JzIiwgdGVzdExvYWRGYWlsZWRXaXRoVExTRXJyb3JzKTsKKyNp
ZiBTT1VQX0NIRUNLX1ZFUlNJT04oMiwgNTAsIDApCisgICAgV2ViU29ja2V0VGVzdDo6YWRkKCJX
ZWJLaXRXZWJWaWV3IiwgIndlYi1zb2NrZXQtdGxzLWVycm9ycyIsIHRlc3RXZWJTb2NrZXRUTFNF
cnJvcnMpOworI2VuZGlmCiB9CiAKIHZvaWQgYWZ0ZXJBbGwoKQo=
</data>
<flag name="review"
          id="356690"
          type_id="1"
          status="+"
          setter="mcatanzaro"
    />
          </attachment>
      

    </bug>

</bugzilla>