<?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>193355</bug_id>
          
          <creation_ts>2019-01-11 11:36:56 -0800</creation_ts>
          <short_desc>Adopt new SPI to evaluate server certificate trust</short_desc>
          <delta_ts>2019-01-29 16:16:46 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Page Loading</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="youenn fablet">youennf</reporter>
          <assigned_to name="youenn fablet">youennf</assigned_to>
          <cc>achristensen</cc>
    
    <cc>beidson</cc>
    
    <cc>benjamin</cc>
    
    <cc>cdumez</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>commit-queue</cc>
    
    <cc>dbates</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>ggaren</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1493723</commentid>
    <comment_count>0</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2019-01-11 11:36:56 -0800</bug_when>
    <thetext>Adopt new SPI to evaluate server certificate trust</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1493728</commentid>
    <comment_count>1</comment_count>
      <attachid>358919</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2019-01-11 11:39:38 -0800</bug_when>
    <thetext>Created attachment 358919
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1493733</commentid>
    <comment_count>2</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2019-01-11 11:48:05 -0800</bug_when>
    <thetext>&lt;rdar://problem/30641705&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1494203</commentid>
    <comment_count>3</comment_count>
      <attachid>358919</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2019-01-14 10:50:25 -0800</bug_when>
    <thetext>Comment on attachment 358919
Patch

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

&gt; Source/WebKit/ChangeLog:9
&gt; +        If ssuccessful, let loading proceed as usual.

successful

&gt; Source/WebKit/NetworkProcess/cocoa/NetworkSessionCocoa.mm:557
&gt; +            if (!canNSURLSessionTrustEvaluate())
&gt; +                return completionHandler(NSURLSessionAuthChallengeRejectProtectionSpace, nil);

On platforms that don&apos;t have the SPI we will need to keep existing behavior.

&gt; Source/WebKit/NetworkProcess/cocoa/NetworkSessionCocoa.mm:585
&gt; +    auto completionHandlerCopy = Block_copy(completionHandler);

Let&apos;s use BlockPtr instead of Block_copy/Block_release

&gt; Source/WebKit/NetworkProcess/cocoa/NetworkSessionCocoa.mm:1028
&gt; +void NetworkSessionCocoa::continueDidReceiveChallenge(const WebCore::AuthenticationChallenge&amp; challenge, NetworkDataTaskCocoa::TaskIdentifier taskIdentifier, NetworkDataTaskCocoa* networkDataTask, WTF::CompletionHandler&lt;void(WebKit::AuthenticationChallengeDisposition, const WebCore::Credential&amp;)&gt;&amp;&amp; completionHandler)

WTF:: is unnecessary.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1499225</commentid>
    <comment_count>4</comment_count>
      <attachid>360386</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2019-01-28 15:23:07 -0800</bug_when>
    <thetext>Created attachment 360386
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1499229</commentid>
    <comment_count>5</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2019-01-28 15:25:41 -0800</bug_when>
    <thetext>Attachment 360386 did not pass style-queue:


ERROR: Tools/WebKitTestRunner/InjectedBundle/TestRunner.h:484:  The parameter name &quot;canHandle&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Total errors found: 1 in 14 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1499298</commentid>
    <comment_count>6</comment_count>
      <attachid>360386</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2019-01-28 17:22:33 -0800</bug_when>
    <thetext>Comment on attachment 360386
Patch

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

&gt; Source/WebKit/NetworkProcess/cocoa/NetworkSessionCocoa.mm:56
&gt; +@interface NSURLSession ()

This should be in CFNetworkSPI.h.  We should add a HAVE_STRICT_TRUST_EVALUATE in Platform.h with proper OS version checks.

&gt; Source/WebKit/NetworkProcess/cocoa/NetworkSessionCocoa.mm:554
&gt; +        if (canNSURLSessionTrustEvaluate()) {

This needs an else which does the exact same thing as the current existing behavior.  That should also be used on OSes where _strictTrustEvaluate is not available.

&gt; Source/WebKit/NetworkProcess/cocoa/NetworkSessionCocoa.mm:564
&gt; +                _session-&gt;continueDidReceiveChallenge(challenge, taskIdentifier, networkDataTask.get(), [completionHandler = WTFMove(completionHandler), secTrust = WTFMove(secTrust)] (WebKit::AuthenticationChallengeDisposition disposition, const WebCore::Credential&amp; credential) mutable {

This is a lot of code.  It should be put in a subroutine which takes a completion handler with a BOOL-like result (whether it was determined to be a good server or not).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1499336</commentid>
    <comment_count>7</comment_count>
      <attachid>360386</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2019-01-28 18:17:40 -0800</bug_when>
    <thetext>Comment on attachment 360386
Patch

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

&gt;&gt; Source/WebKit/NetworkProcess/cocoa/NetworkSessionCocoa.mm:56
&gt;&gt; +@interface NSURLSession ()
&gt; 
&gt; This should be in CFNetworkSPI.h.  We should add a HAVE_STRICT_TRUST_EVALUATE in Platform.h with proper OS version checks.

Ok

&gt;&gt; Source/WebKit/NetworkProcess/cocoa/NetworkSessionCocoa.mm:554
&gt;&gt; +        if (canNSURLSessionTrustEvaluate()) {
&gt; 
&gt; This needs an else which does the exact same thing as the current existing behavior.  That should also be used on OSes where _strictTrustEvaluate is not available.

There is no need for else since we return at the end of the if.
Behavior if strictEvaluate is not there should be preserved.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1499612</commentid>
    <comment_count>8</comment_count>
      <attachid>360478</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2019-01-29 11:14:20 -0800</bug_when>
    <thetext>Created attachment 360478
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1499613</commentid>
    <comment_count>9</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2019-01-29 11:15:54 -0800</bug_when>
    <thetext>Attachment 360478 did not pass style-queue:


ERROR: Tools/WebKitTestRunner/InjectedBundle/TestRunner.h:484:  The parameter name &quot;canHandle&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Total errors found: 1 in 16 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1499674</commentid>
    <comment_count>10</comment_count>
      <attachid>360478</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2019-01-29 13:17:49 -0800</bug_when>
    <thetext>Comment on attachment 360478
Patch

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

&gt; Source/WebKit/NetworkProcess/cocoa/NetworkSessionCocoa.mm:571
&gt; +        if (canNSURLSessionTrustEvaluate()) {

This needs to be inside the !canHandleHTTPSServerTrustEvaluation case.  Otherwise we break API compatibility.

&gt; LayoutTests/http/tests/ssl/certificate-validation.html:33
&gt; +    const iframe = await with_iframe(&quot;https://localhost:8443&quot;);

I&apos;m not sure this is a good test.  Often we will have a cached connection to localhost:8443</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1499703</commentid>
    <comment_count>11</comment_count>
      <attachid>360497</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2019-01-29 13:56:30 -0800</bug_when>
    <thetext>Created attachment 360497
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1499707</commentid>
    <comment_count>12</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2019-01-29 13:59:32 -0800</bug_when>
    <thetext>Attachment 360497 did not pass style-queue:


ERROR: Tools/WebKitTestRunner/InjectedBundle/TestRunner.h:484:  The parameter name &quot;canHandle&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Total errors found: 1 in 16 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1499724</commentid>
    <comment_count>13</comment_count>
      <attachid>360497</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2019-01-29 14:21:45 -0800</bug_when>
    <thetext>Comment on attachment 360497
Patch

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

&gt; Source/WebKit/NetworkProcess/cocoa/NetworkSessionCocoa.mm:532
&gt; +    if (trustResult == noErr || networkDataTask-&gt;state() == NetworkDataTask::State::Canceling || networkDataTask-&gt;state() == NetworkDataTask::State::Completed) {

We need to null check networkDataTask here before using it.  I&apos;m also not sure we should check these two states.

&gt; Source/WebKit/NetworkProcess/cocoa/NetworkSessionCocoa.mm:537
&gt; +    RetainPtr&lt;SecTrustRef&gt; secTrust = challenge.protectionSpace.serverTrust;

This could be declared inside the lambda capture:
secTrust = retainPtr(challenge.protectionSpace.serverTrust)

&gt; Source/WebKit/NetworkProcess/cocoa/NetworkSessionCocoa.mm:1044
&gt; +

extra space</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1499741</commentid>
    <comment_count>14</comment_count>
      <attachid>360503</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2019-01-29 14:54:26 -0800</bug_when>
    <thetext>Created attachment 360503
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1499742</commentid>
    <comment_count>15</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2019-01-29 14:55:53 -0800</bug_when>
    <thetext>Attachment 360503 did not pass style-queue:


ERROR: Tools/WebKitTestRunner/InjectedBundle/TestRunner.h:484:  The parameter name &quot;canHandle&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Total errors found: 1 in 16 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1499789</commentid>
    <comment_count>16</comment_count>
      <attachid>360503</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-01-29 16:16:44 -0800</bug_when>
    <thetext>Comment on attachment 360503
Patch for landing

Clearing flags on attachment: 360503

Committed r240689: &lt;https://trac.webkit.org/changeset/240689&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1499790</commentid>
    <comment_count>17</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-01-29 16:16:46 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>358919</attachid>
            <date>2019-01-11 11:39:38 -0800</date>
            <delta_ts>2019-01-28 15:23:06 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-193355-20190111113938.patch</filename>
            <type>text/plain</type>
            <size>13342</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM5Nzc0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDg5MWE0ZjVmODk1ZWFkYmUx
MWZjM2U0NWQyNGYyMWYwYjUwMTQ1NjQuLjBhYjQyODBhZGIwY2RiMmYxOTQzMDY4OGUyNzdlZGNk
MDFmM2I2ZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjAgQEAKKzIwMTktMDEtMTEgIFlvdWVubiBG
YWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgorCisgICAgICAgIEFkb3B0IG5ldyBTUEkgdG8gZXZh
bHVhdGUgc2VydmVyIGNlcnRpZmljYXRlIHRydXN0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTMzNTUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBVc2UgbmV3IFNQSSBwcm92aWRlZCBpbiBOU1VSTFNlc3Np
b24gdG8gZXZhbHVhdGUgc2VydmVyIGNlcnRpZmljYXRlcy4KKyAgICAgICAgSWYgc3N1Y2Nlc3Nm
dWwsIGxldCBsb2FkaW5nIHByb2NlZWQgYXMgdXN1YWwuCisgICAgICAgIE90aGVyd2lzZSwgZ28g
dG8gdGhlIFVJUHJvY2VzcyB0byBhc2sgZm9yIGEgZGVjaXNpb24gb24gY29udGludWluZyBvciBu
b3QgdGhlIGNvbm5lY3Rpb24uCisKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3
b3JrU2Vzc2lvbkNvY29hLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29y
a1Nlc3Npb25Db2NvYS5tbToKKyAgICAgICAgKGNhbk5TVVJMU2Vzc2lvblRydXN0RXZhbHVhdGUp
OgorICAgICAgICAoLVtXS05ldHdvcmtTZXNzaW9uRGVsZWdhdGUgVVJMU2Vzc2lvbjp0YXNrOmRp
ZFJlY2VpdmVDaGFsbGVuZ2U6Y29tcGxldGlvbkhhbmRsZXI6XSk6CisgICAgICAgIChXZWJLaXQ6
Ok5ldHdvcmtTZXNzaW9uQ29jb2E6OmNvbnRpbnVlRGlkUmVjZWl2ZUNoYWxsZW5nZSk6CisKIDIw
MTktMDEtMDkgIE1pY2hhZWwgQ2F0YW56YXJvICA8bWNhdGFuemFyb0BpZ2FsaWEuY29tPgogCiAg
ICAgICAgIFtHVEtdIEFkZCBtaXNzaW5nIGF1dG9jbGVhbnVwcwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrU2Vzc2lvbkNvY29hLmggYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtTZXNzaW9uQ29jb2EuaAppbmRl
eCAwZDY3MWMyOWNhMDk3Nzk5NWFhYjQ5ZWNmZDYyMjgxOWY2MTBjZDZiLi44YjdlMzIyYzdiNDIy
ZThmNGYzMDdhYTNmNjRiNDc3NzY5NGJmOWM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtTZXNzaW9uQ29jb2EuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtTZXNzaW9uQ29jb2EuaApAQCAtNjIsNiAr
NjIsOCBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMgYm9vbCBhbGxvd3NTcGVjaWZpY0hUVFBTQ2Vy
dGlmaWNhdGVGb3JIb3N0KGNvbnN0IFdlYkNvcmU6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJik7
CiAKKyAgICB2b2lkIGNvbnRpbnVlRGlkUmVjZWl2ZUNoYWxsZW5nZShjb25zdCBXZWJDb3JlOjpB
dXRoZW50aWNhdGlvbkNoYWxsZW5nZSYsIE5ldHdvcmtEYXRhVGFza0NvY29hOjpUYXNrSWRlbnRp
ZmllciwgTmV0d29ya0RhdGFUYXNrQ29jb2EqLCBXVEY6OkNvbXBsZXRpb25IYW5kbGVyPHZvaWQo
V2ViS2l0OjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZURpc3Bvc2l0aW9uLCBjb25zdCBXZWJDb3Jl
OjpDcmVkZW50aWFsJik+JiYpOworCiBwcml2YXRlOgogICAgIE5ldHdvcmtTZXNzaW9uQ29jb2Eo
TmV0d29ya1Byb2Nlc3MmLCBOZXR3b3JrU2Vzc2lvbkNyZWF0aW9uUGFyYW1ldGVycyYmKTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrU2Vz
c2lvbkNvY29hLm1tIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3Jr
U2Vzc2lvbkNvY29hLm1tCmluZGV4IDM2NTU0ZDM0MzE5NjIzODhjNDAyMTNjMTBiYTA5OTkyZDg3
ZjM3N2EuLjkzMWY1NjE1MjQ3ODgxYmNiNTcxNmI0MjhkZWFlYmQxNmE2ZTU1ODYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1Nlc3Npb25Db2Nv
YS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtTZXNz
aW9uQ29jb2EubW0KQEAgLTM2LDYgKzM2LDcgQEAKICNpbXBvcnQgIk5ldHdvcmtQcm9jZXNzLmgi
CiAjaW1wb3J0ICJOZXR3b3JrU2Vzc2lvbkNyZWF0aW9uUGFyYW1ldGVycy5oIgogI2ltcG9ydCAi
U2Vzc2lvblRyYWNrZXIuaCIKKyNpbXBvcnQgPENGTmV0d29yay9DRk5TVVJMQ29ubmVjdGlvbi5o
PgogI2ltcG9ydCA8Rm91bmRhdGlvbi9OU1VSTFNlc3Npb24uaD4KICNpbXBvcnQgPFdlYkNvcmUv
Q3JlZGVudGlhbC5oPgogI2ltcG9ydCA8V2ViQ29yZS9Gb3JtRGF0YVN0cmVhbU1hYy5oPgpAQCAt
NTQsNiArNTUsMTAgQEAKICNpbXBvcnQgPHd0Zi9VUkwuaD4KICNpbXBvcnQgPHd0Zi90ZXh0L1dU
RlN0cmluZy5oPgogCitAaW50ZXJmYWNlIE5TVVJMU2Vzc2lvbiAoKQorKyAodm9pZClfc3RyaWN0
VHJ1c3RFdmFsdWF0ZTooTlNVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSAqKWNoYWxsZW5nZSBx
dWV1ZTooZGlzcGF0Y2hfcXVldWVfdClxdWV1ZSBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXiko
TlNVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSAqY2hhbGxlbmdlLCBPU1N0YXR1cyB0cnVzdFJl
c3VsdCkpY2I7CitAZW5kCisKIHVzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7CiAKIENGU3RyaW5nUmVm
IGNvbnN0IFdlYktpdDJIVFRQUHJveHlEZWZhdWx0c0tleSA9IHN0YXRpY19jYXN0PENGU3RyaW5n
UmVmPihAIldlYktpdDJIVFRQUHJveHkiKTsKQEAgLTUyMCw2ICs1MjUsMTEgQEAgc3RhdGljIE5T
VVJMUmVxdWVzdCogdXBkYXRlSWdub3JlU3RyaWN0VHJhbnNwb3J0U2VjdXJpdHlTZXR0aW5nSWZO
ZWNlc3NhcnkoTlNVUkwKICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIocHJvcG9zZWRSZXNwb25z
ZSk7CiB9CiAKK3N0YXRpYyBib29sIGNhbk5TVVJMU2Vzc2lvblRydXN0RXZhbHVhdGUoKQorewor
ICAgIHJldHVybiBbTlNVUkxTZXNzaW9uIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoX3N0
cmljdFRydXN0RXZhbHVhdGU6IHF1ZXVlOiBjb21wbGV0aW9uSGFuZGxlcjopXTsKK30KKwogLSAo
dm9pZClVUkxTZXNzaW9uOihOU1VSTFNlc3Npb24gKilzZXNzaW9uIHRhc2s6KE5TVVJMU2Vzc2lv
blRhc2sgKil0YXNrIGRpZFJlY2VpdmVDaGFsbGVuZ2U6KE5TVVJMQXV0aGVudGljYXRpb25DaGFs
bGVuZ2UgKiljaGFsbGVuZ2UgY29tcGxldGlvbkhhbmRsZXI6KHZvaWQgKF4pKE5TVVJMU2Vzc2lv
bkF1dGhDaGFsbGVuZ2VEaXNwb3NpdGlvbiBkaXNwb3NpdGlvbiwgTlNVUkxDcmVkZW50aWFsICpj
cmVkZW50aWFsKSljb21wbGV0aW9uSGFuZGxlcgogewogICAgIGlmICghX3Nlc3Npb24pIHsKQEAg
LTU0Miw2MSArNTUyLDQxIEBAIHN0YXRpYyBOU1VSTFJlcXVlc3QqIHVwZGF0ZUlnbm9yZVN0cmlj
dFRyYW5zcG9ydFNlY3VyaXR5U2V0dGluZ0lmTmVjZXNzYXJ5KE5TVVJMCiAgICAgICAgICAgICBy
ZXR1cm4gY29tcGxldGlvbkhhbmRsZXIoTlNVUkxTZXNzaW9uQXV0aENoYWxsZW5nZVVzZUNyZWRl
bnRpYWwsIFtOU1VSTENyZWRlbnRpYWwgY3JlZGVudGlhbEZvclRydXN0OmNoYWxsZW5nZS5wcm90
ZWN0aW9uU3BhY2Uuc2VydmVyVHJ1c3RdKTsKIAogICAgICAgICAvLyBIYW5kbGUgc2VydmVyIHRy
dXN0IGV2YWx1YXRpb24gYXQgcGxhdGZvcm0tbGV2ZWwgaWYgcmVxdWVzdGVkLCBmb3IgcGVyZm9y
bWFuY2UgcmVhc29ucyBhbmQgdG8gdXNlIEFUUyBkZWZhdWx0cy4KLSAgICAgICAgaWYgKCFfc2Vz
c2lvbi0+bmV0d29ya1Byb2Nlc3MoKS5jYW5IYW5kbGVIVFRQU1NlcnZlclRydXN0RXZhbHVhdGlv
bigpKQotICAgICAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKE5TVVJMU2Vzc2lvbkF1
dGhDaGFsbGVuZ2VSZWplY3RQcm90ZWN0aW9uU3BhY2UsIG5pbCk7Ci0gICAgfQorICAgICAgICBp
ZiAoIV9zZXNzaW9uLT5uZXR3b3JrUHJvY2VzcygpLmNhbkhhbmRsZUhUVFBTU2VydmVyVHJ1c3RF
dmFsdWF0aW9uKCkpIHsKKyAgICAgICAgICAgIGlmICghY2FuTlNVUkxTZXNzaW9uVHJ1c3RFdmFs
dWF0ZSgpKQorICAgICAgICAgICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxlcihOU1VSTFNl
c3Npb25BdXRoQ2hhbGxlbmdlUmVqZWN0UHJvdGVjdGlvblNwYWNlLCBuaWwpOwogCi0gICAgaWYg
KGF1dG8qIG5ldHdvcmtEYXRhVGFzayA9IFtzZWxmIGV4aXN0aW5nVGFzazp0YXNrXSkgewotICAg
ICAgICBXZWJDb3JlOjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSBhdXRoZW50aWNhdGlvbkNoYWxs
ZW5nZShjaGFsbGVuZ2UpOwotICAgICAgICBhdXRvIGNvbXBsZXRpb25IYW5kbGVyQ29weSA9IEJs
b2NrX2NvcHkoY29tcGxldGlvbkhhbmRsZXIpOwotICAgICAgICBhdXRvIHNlc3Npb25JRCA9IF9z
ZXNzaW9uLT5zZXNzaW9uSUQoKTsKLSAgICAgICAgYXV0byBjaGFsbGVuZ2VDb21wbGV0aW9uSGFu
ZGxlciA9IFtjb21wbGV0aW9uSGFuZGxlckNvcHksIHNlc3Npb25JRCwgYXV0aGVudGljYXRpb25D
aGFsbGVuZ2UsIHRhc2tJZGVudGlmaWVyLCBwYXJ0aXRpb24gPSBuZXR3b3JrRGF0YVRhc2stPnBh
cnRpdGlvbigpXShXZWJLaXQ6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlRGlzcG9zaXRpb24gZGlz
cG9zaXRpb24sIGNvbnN0IFdlYkNvcmU6OkNyZWRlbnRpYWwmIGNyZWRlbnRpYWwpCi0gICAgICAg
IHsKLSNpZiAhTE9HX0RJU0FCTEVECi0gICAgICAgICAgICBMT0coTmV0d29ya1Nlc3Npb24sICIl
bGx1IGRpZFJlY2VpdmVDaGFsbGVuZ2UgY29tcGxldGlvbkhhbmRsZXIgJWQiLCB0YXNrSWRlbnRp
ZmllciwgZGlzcG9zaXRpb24pOwotI2Vsc2UKLSAgICAgICAgICAgIFVOVVNFRF9QQVJBTSh0YXNr
SWRlbnRpZmllcik7Ci0jZW5kaWYKLSNpZiAhVVNFKENSRURFTlRJQUxfU1RPUkFHRV9XSVRIX05F
VFdPUktfU0VTU0lPTikKLSAgICAgICAgICAgIFVOVVNFRF9QQVJBTShzZXNzaW9uSUQpOwotICAg
ICAgICAgICAgVU5VU0VEX1BBUkFNKGF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKTsKLSNlbHNlCi0g
ICAgICAgICAgICBpZiAoY3JlZGVudGlhbC5wZXJzaXN0ZW5jZSgpID09IFdlYkNvcmU6OkNyZWRl
bnRpYWxQZXJzaXN0ZW5jZUZvclNlc3Npb24gJiYgYXV0aGVudGljYXRpb25DaGFsbGVuZ2UucHJv
dGVjdGlvblNwYWNlKCkuaXNQYXNzd29yZEJhc2VkKCkpIHsKLQotICAgICAgICAgICAgICAgIFdl
YkNvcmU6OkNyZWRlbnRpYWwgbm9uUGVyc2lzdGVudENyZWRlbnRpYWwoY3JlZGVudGlhbC51c2Vy
KCksIGNyZWRlbnRpYWwucGFzc3dvcmQoKSwgV2ViQ29yZTo6Q3JlZGVudGlhbFBlcnNpc3RlbmNl
Tm9uZSk7Ci0gICAgICAgICAgICAgICAgVVJMIHVybFRvU3RvcmU7Ci0gICAgICAgICAgICAgICAg
aWYgKGF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLmZhaWx1cmVSZXNwb25zZSgpLmh0dHBTdGF0dXND
b2RlKCkgPT0gNDAxKQotICAgICAgICAgICAgICAgICAgICB1cmxUb1N0b3JlID0gYXV0aGVudGlj
YXRpb25DaGFsbGVuZ2UuZmFpbHVyZVJlc3BvbnNlKCkudXJsKCk7Ci0gICAgICAgICAgICAgICAg
aWYgKGF1dG8gc3RvcmFnZVNlc3Npb24gPSBXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb246
OnN0b3JhZ2VTZXNzaW9uKHNlc3Npb25JRCkpCi0gICAgICAgICAgICAgICAgICAgIHN0b3JhZ2VT
ZXNzaW9uLT5jcmVkZW50aWFsU3RvcmFnZSgpLnNldChwYXJ0aXRpb24sIG5vblBlcnNpc3RlbnRD
cmVkZW50aWFsLCBhdXRoZW50aWNhdGlvbkNoYWxsZW5nZS5wcm90ZWN0aW9uU3BhY2UoKSwgdXJs
VG9TdG9yZSk7Ci0gICAgICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgICAgICBBU1NF
UlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgICAgIGF1dG8gY29tcGxldGlvbkhhbmRsZXJDb3B5
ID0gQmxvY2tfY29weShjb21wbGV0aW9uSGFuZGxlcik7CiAKLSAgICAgICAgICAgICAgICBjb21w
bGV0aW9uSGFuZGxlckNvcHkodG9OU1VSTFNlc3Npb25BdXRoQ2hhbGxlbmdlRGlzcG9zaXRpb24o
ZGlzcG9zaXRpb24pLCBub25QZXJzaXN0ZW50Q3JlZGVudGlhbC5uc0NyZWRlbnRpYWwoKSk7Ci0g
ICAgICAgICAgICB9IGVsc2UKLSNlbmRpZgotICAgICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5k
bGVyQ29weSh0b05TVVJMU2Vzc2lvbkF1dGhDaGFsbGVuZ2VEaXNwb3NpdGlvbihkaXNwb3NpdGlv
biksIGNyZWRlbnRpYWwubnNDcmVkZW50aWFsKCkpOwotICAgICAgICAgICAgQmxvY2tfcmVsZWFz
ZShjb21wbGV0aW9uSGFuZGxlckNvcHkpOwotICAgICAgICB9OwotICAgICAgICBuZXR3b3JrRGF0
YVRhc2stPmRpZFJlY2VpdmVDaGFsbGVuZ2UoY2hhbGxlbmdlLCBXVEZNb3ZlKGNoYWxsZW5nZUNv
bXBsZXRpb25IYW5kbGVyKSk7Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgYXV0byBkb3dubG9hZElE
ID0gX3Nlc3Npb24tPmRvd25sb2FkSUQodGFza0lkZW50aWZpZXIpOwotICAgICAgICBpZiAoZG93
bmxvYWRJRC5kb3dubG9hZElEKCkpIHsKLSAgICAgICAgICAgIGlmIChhdXRvKiBkb3dubG9hZCA9
IF9zZXNzaW9uLT5uZXR3b3JrUHJvY2VzcygpLmRvd25sb2FkTWFuYWdlcigpLmRvd25sb2FkKGRv
d25sb2FkSUQpKSB7Ci0gICAgICAgICAgICAgICAgLy8gUmVjZWl2ZWQgYW4gYXV0aGVudGljYXRp
b24gY2hhbGxlbmdlIGZvciBhIGRvd25sb2FkIGJlaW5nIHJlc3VtZWQuCi0gICAgICAgICAgICAg
ICAgV2ViQ29yZTo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2UgYXV0aGVudGljYXRpb25DaGFsbGVu
Z2UgeyBjaGFsbGVuZ2UgfTsKLSAgICAgICAgICAgICAgICBhdXRvIGNvbXBsZXRpb25IYW5kbGVy
Q29weSA9IEJsb2NrX2NvcHkoY29tcGxldGlvbkhhbmRsZXIpOwotICAgICAgICAgICAgICAgIGF1
dG8gY2hhbGxlbmdlQ29tcGxldGlvbkhhbmRsZXIgPSBbY29tcGxldGlvbkhhbmRsZXJDb3B5LCBh
dXRoZW50aWNhdGlvbkNoYWxsZW5nZV0oV2ViS2l0OjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZURp
c3Bvc2l0aW9uIGRpc3Bvc2l0aW9uLCBjb25zdCBXZWJDb3JlOjpDcmVkZW50aWFsJiBjcmVkZW50
aWFsKSB7Ci0gICAgICAgICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyQ29weSh0b05TVVJM
U2Vzc2lvbkF1dGhDaGFsbGVuZ2VEaXNwb3NpdGlvbihkaXNwb3NpdGlvbiksIGNyZWRlbnRpYWwu
bnNDcmVkZW50aWFsKCkpOworICAgICAgICAgICAgYXV0byogbmV0d29ya0RhdGFUYXNrID0gW3Nl
bGYgZXhpc3RpbmdUYXNrOnRhc2tdOworICAgICAgICAgICAgYXV0byBkZWNpc2lvbkhhbmRsZXIg
PSBtYWtlQmxvY2tQdHIoW19zZXNzaW9uID0gX3Nlc3Npb24uY29weVJlZigpLCBjb21wbGV0aW9u
SGFuZGxlckNvcHksIHRhc2tJZGVudGlmaWVyLCBuZXR3b3JrRGF0YVRhc2sgPSBSZWZQdHI8TmV0
d29ya0RhdGFUYXNrQ29jb2E+KG5ldHdvcmtEYXRhVGFzayldKE5TVVJMQXV0aGVudGljYXRpb25D
aGFsbGVuZ2UgKmNoYWxsZW5nZSwgT1NTdGF0dXMgdHJ1c3RSZXN1bHQpIG11dGFibGUgeworCisg
ICAgICAgICAgICAgICAgaWYgKHRydXN0UmVzdWx0ID09IG5vRXJyIHx8IG5ldHdvcmtEYXRhVGFz
ay0+c3RhdGUoKSA9PSBOZXR3b3JrRGF0YVRhc2s6OlN0YXRlOjpDYW5jZWxpbmcgfHwgbmV0d29y
a0RhdGFUYXNrLT5zdGF0ZSgpID09IE5ldHdvcmtEYXRhVGFzazo6U3RhdGU6OkNvbXBsZXRlZCkg
eworICAgICAgICAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlckNvcHkoTlNVUkxTZXNzaW9u
QXV0aENoYWxsZW5nZVBlcmZvcm1EZWZhdWx0SGFuZGxpbmcsIG5pbCk7CiAgICAgICAgICAgICAg
ICAgICAgIEJsb2NrX3JlbGVhc2UoY29tcGxldGlvbkhhbmRsZXJDb3B5KTsKLSAgICAgICAgICAg
ICAgICB9OwotICAgICAgICAgICAgICAgIGRvd25sb2FkLT5kaWRSZWNlaXZlQ2hhbGxlbmdlKGNo
YWxsZW5nZSwgV1RGTW92ZShjaGFsbGVuZ2VDb21wbGV0aW9uSGFuZGxlcikpOwotICAgICAgICAg
ICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgcmV0dXJu
OworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIFJldGFpblB0cjxTZWNUcnVz
dFJlZj4gc2VjVHJ1c3QgPSBjaGFsbGVuZ2UucHJvdGVjdGlvblNwYWNlLnNlcnZlclRydXN0Owor
ICAgICAgICAgICAgICAgIF9zZXNzaW9uLT5jb250aW51ZURpZFJlY2VpdmVDaGFsbGVuZ2UoY2hh
bGxlbmdlLCB0YXNrSWRlbnRpZmllciwgbmV0d29ya0RhdGFUYXNrLmdldCgpLCBbY29tcGxldGlv
bkhhbmRsZXJDb3B5LCBzZWNUcnVzdCA9IFdURk1vdmUoc2VjVHJ1c3QpXSAoV2ViS2l0OjpBdXRo
ZW50aWNhdGlvbkNoYWxsZW5nZURpc3Bvc2l0aW9uIGRpc3Bvc2l0aW9uLCBjb25zdCBXZWJDb3Jl
OjpDcmVkZW50aWFsJiBjcmVkZW50aWFsKSBtdXRhYmxlIHsKKyAgICAgICAgICAgICAgICAgICAg
Ly8gRklYTUU6IFVJUHJvY2VzcyBzaG91bGQgc2VuZCB1cyBiYWNrIG5vbiBuaWwgY3JlZGVudGlh
bHMgYnV0IHRoZSBjcmVkZW50aWFsIElQQyBlbmNvZGVyIGN1cnJlbnRseSBvbmx5IHNlcmlhbGl6
ZXMgbnMgY3JlZGVudGlhbHMgZm9yIHVzZXJuYW1lL3Bhc3N3b3JkLgorICAgICAgICAgICAgICAg
ICAgICBpZiAoZGlzcG9zaXRpb24gPT0gV2ViS2l0OjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZURp
c3Bvc2l0aW9uOjpVc2VDcmVkZW50aWFsICYmICFjcmVkZW50aWFsLm5zQ3JlZGVudGlhbCgpKQor
ICAgICAgICAgICAgICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXJDb3B5KE5TVVJMU2Vzc2lv
bkF1dGhDaGFsbGVuZ2VVc2VDcmVkZW50aWFsLCBbTlNVUkxDcmVkZW50aWFsIGNyZWRlbnRpYWxG
b3JUcnVzdDogc2VjVHJ1c3QuZ2V0KCldKTsKKyAgICAgICAgICAgICAgICAgICAgZWxzZQorICAg
ICAgICAgICAgICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXJDb3B5KHRvTlNVUkxTZXNzaW9u
QXV0aENoYWxsZW5nZURpc3Bvc2l0aW9uKGRpc3Bvc2l0aW9uKSwgY3JlZGVudGlhbC5uc0NyZWRl
bnRpYWwoKSk7CisgICAgICAgICAgICAgICAgICAgIEJsb2NrX3JlbGVhc2UoY29tcGxldGlvbkhh
bmRsZXJDb3B5KTsKKyAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgIH0pOworICAgICAg
ICAgICAgW05TVVJMU2Vzc2lvbiBfc3RyaWN0VHJ1c3RFdmFsdWF0ZTpjaGFsbGVuZ2UgcXVldWU6
W05TT3BlcmF0aW9uUXVldWUgbWFpblF1ZXVlXS51bmRlcmx5aW5nUXVldWUgY29tcGxldGlvbkhh
bmRsZXI6ZGVjaXNpb25IYW5kbGVyLmdldCgpXTsKICAgICAgICAgfQotICAgICAgICBMT0coTmV0
d29ya1Nlc3Npb24sICIlbGx1IGRpZFJlY2VpdmVDaGFsbGVuZ2UgY29tcGxldGlvbkhhbmRsZXIg
KGNhbmNlbCkiLCB0YXNrSWRlbnRpZmllcik7Ci0gICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKE5T
VVJMU2Vzc2lvbkF1dGhDaGFsbGVuZ2VDYW5jZWxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSwgbmls
KTsKKyAgICAgICAgcmV0dXJuOwogICAgIH0KKworICAgIGF1dG8gY29tcGxldGlvbkhhbmRsZXJD
b3B5ID0gQmxvY2tfY29weShjb21wbGV0aW9uSGFuZGxlcik7CisgICAgX3Nlc3Npb24tPmNvbnRp
bnVlRGlkUmVjZWl2ZUNoYWxsZW5nZShjaGFsbGVuZ2UsIHRhc2tJZGVudGlmaWVyLCBbc2VsZiBl
eGlzdGluZ1Rhc2s6dGFza10sIFtjb21wbGV0aW9uSGFuZGxlckNvcHldIChXZWJLaXQ6OkF1dGhl
bnRpY2F0aW9uQ2hhbGxlbmdlRGlzcG9zaXRpb24gZGlzcG9zaXRpb24sIGNvbnN0IFdlYkNvcmU6
OkNyZWRlbnRpYWwmIGNyZWRlbnRpYWwpIG11dGFibGUgeworICAgICAgICBjb21wbGV0aW9uSGFu
ZGxlckNvcHkodG9OU1VSTFNlc3Npb25BdXRoQ2hhbGxlbmdlRGlzcG9zaXRpb24oZGlzcG9zaXRp
b24pLCBjcmVkZW50aWFsLm5zQ3JlZGVudGlhbCgpKTsKKyAgICAgICAgQmxvY2tfcmVsZWFzZShj
b21wbGV0aW9uSGFuZGxlckNvcHkpOworICAgIH0pOwogfQogCiAtICh2b2lkKVVSTFNlc3Npb246
KE5TVVJMU2Vzc2lvbiAqKXNlc3Npb24gdGFzazooTlNVUkxTZXNzaW9uVGFzayAqKXRhc2sgZGlk
Q29tcGxldGVXaXRoRXJyb3I6KE5TRXJyb3IgKillcnJvcgpAQCAtMTAzNSw0ICsxMDI1LDUzIEBA
IGJvb2wgTmV0d29ya1Nlc3Npb25Db2NvYTo6YWxsb3dzU3BlY2lmaWNIVFRQU0NlcnRpZmljYXRl
Rm9ySG9zdChjb25zdCBXZWJDb3JlOjpBCiAgICAgcmV0dXJuIGNlcnRpZmljYXRlc01hdGNoKHRy
dXN0LmdldCgpLCBjaGFsbGVuZ2UubnNVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSgpLnByb3Rl
Y3Rpb25TcGFjZS5zZXJ2ZXJUcnVzdCk7CiB9CiAKK3ZvaWQgTmV0d29ya1Nlc3Npb25Db2NvYTo6
Y29udGludWVEaWRSZWNlaXZlQ2hhbGxlbmdlKGNvbnN0IFdlYkNvcmU6OkF1dGhlbnRpY2F0aW9u
Q2hhbGxlbmdlJiBjaGFsbGVuZ2UsIE5ldHdvcmtEYXRhVGFza0NvY29hOjpUYXNrSWRlbnRpZmll
ciB0YXNrSWRlbnRpZmllciwgTmV0d29ya0RhdGFUYXNrQ29jb2EqIG5ldHdvcmtEYXRhVGFzaywg
V1RGOjpDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYktpdDo6QXV0aGVudGljYXRpb25DaGFsbGVu
Z2VEaXNwb3NpdGlvbiwgY29uc3QgV2ViQ29yZTo6Q3JlZGVudGlhbCYpPiYmIGNvbXBsZXRpb25I
YW5kbGVyKQorCit7CisgICAgaWYgKCFuZXR3b3JrRGF0YVRhc2spIHsKKyAgICAgICAgYXV0byBk
b3dubG9hZElEID0gdGhpcy0+ZG93bmxvYWRJRCh0YXNrSWRlbnRpZmllcik7CisgICAgICAgIGlm
IChkb3dubG9hZElELmRvd25sb2FkSUQoKSkgeworICAgICAgICAgICAgaWYgKGF1dG8qIGRvd25s
b2FkID0gbmV0d29ya1Byb2Nlc3MoKS5kb3dubG9hZE1hbmFnZXIoKS5kb3dubG9hZChkb3dubG9h
ZElEKSkgeworICAgICAgICAgICAgICAgIFdlYkNvcmU6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdl
IGF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlIHsgY2hhbGxlbmdlIH07CisgICAgICAgICAgICAgICAg
Ly8gUmVjZWl2ZWQgYW4gYXV0aGVudGljYXRpb24gY2hhbGxlbmdlIGZvciBhIGRvd25sb2FkIGJl
aW5nIHJlc3VtZWQuCisgICAgICAgICAgICAgICAgZG93bmxvYWQtPmRpZFJlY2VpdmVDaGFsbGVu
Z2UoYXV0aGVudGljYXRpb25DaGFsbGVuZ2UsIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsK
KyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAg
ICAgTE9HKE5ldHdvcmtTZXNzaW9uLCAiJWxsdSBkaWRSZWNlaXZlQ2hhbGxlbmdlIGNvbXBsZXRp
b25IYW5kbGVyIChjYW5jZWwpIiwgdGFza0lkZW50aWZpZXIpOworICAgICAgICBjb21wbGV0aW9u
SGFuZGxlcihBdXRoZW50aWNhdGlvbkNoYWxsZW5nZURpc3Bvc2l0aW9uOjpDYW5jZWwsIHsgfSk7
CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBhdXRvIHNlc3Npb25JRCA9IHRoaXMtPnNl
c3Npb25JRCgpOworICAgIFdlYkNvcmU6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlIGF1dGhlbnRp
Y2F0aW9uQ2hhbGxlbmdlIHsgY2hhbGxlbmdlIH07CisgICAgYXV0byBjaGFsbGVuZ2VDb21wbGV0
aW9uSGFuZGxlciA9IFtjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRs
ZXIpLCBzZXNzaW9uSUQsIGF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLCB0YXNrSWRlbnRpZmllciwg
cGFydGl0aW9uID0gbmV0d29ya0RhdGFUYXNrLT5wYXJ0aXRpb24oKV0oV2ViS2l0OjpBdXRoZW50
aWNhdGlvbkNoYWxsZW5nZURpc3Bvc2l0aW9uIGRpc3Bvc2l0aW9uLCBjb25zdCBXZWJDb3JlOjpD
cmVkZW50aWFsJiBjcmVkZW50aWFsKSBtdXRhYmxlIHsKKyNpZiAhTE9HX0RJU0FCTEVECisgICAg
ICAgIExPRyhOZXR3b3JrU2Vzc2lvbiwgIiVsbHUgZGlkUmVjZWl2ZUNoYWxsZW5nZSBjb21wbGV0
aW9uSGFuZGxlciAlZCIsIHRhc2tJZGVudGlmaWVyLCBkaXNwb3NpdGlvbik7CisjZWxzZQorICAg
ICAgICBVTlVTRURfUEFSQU0odGFza0lkZW50aWZpZXIpOworI2VuZGlmCisjaWYgIVVTRShDUkVE
RU5USUFMX1NUT1JBR0VfV0lUSF9ORVRXT1JLX1NFU1NJT04pCisgICAgICAgIFVOVVNFRF9QQVJB
TShzZXNzaW9uSUQpOworICAgICAgICBVTlVTRURfUEFSQU0oYXV0aGVudGljYXRpb25DaGFsbGVu
Z2UpOworI2Vsc2UKKyAgICAgICAgaWYgKGNyZWRlbnRpYWwucGVyc2lzdGVuY2UoKSA9PSBXZWJD
b3JlOjpDcmVkZW50aWFsUGVyc2lzdGVuY2VGb3JTZXNzaW9uICYmIGF1dGhlbnRpY2F0aW9uQ2hh
bGxlbmdlLnByb3RlY3Rpb25TcGFjZSgpLmlzUGFzc3dvcmRCYXNlZCgpKSB7CisgICAgICAgICAg
ICBXZWJDb3JlOjpDcmVkZW50aWFsIG5vblBlcnNpc3RlbnRDcmVkZW50aWFsKGNyZWRlbnRpYWwu
dXNlcigpLCBjcmVkZW50aWFsLnBhc3N3b3JkKCksIFdlYkNvcmU6OkNyZWRlbnRpYWxQZXJzaXN0
ZW5jZU5vbmUpOworICAgICAgICAgICAgVVJMIHVybFRvU3RvcmU7CisgICAgICAgICAgICBpZiAo
YXV0aGVudGljYXRpb25DaGFsbGVuZ2UuZmFpbHVyZVJlc3BvbnNlKCkuaHR0cFN0YXR1c0NvZGUo
KSA9PSA0MDEpCisgICAgICAgICAgICAgICAgdXJsVG9TdG9yZSA9IGF1dGhlbnRpY2F0aW9uQ2hh
bGxlbmdlLmZhaWx1cmVSZXNwb25zZSgpLnVybCgpOworICAgICAgICAgICAgaWYgKGF1dG8gc3Rv
cmFnZVNlc3Npb24gPSBXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb246OnN0b3JhZ2VTZXNz
aW9uKHNlc3Npb25JRCkpCisgICAgICAgICAgICAgICAgc3RvcmFnZVNlc3Npb24tPmNyZWRlbnRp
YWxTdG9yYWdlKCkuc2V0KHBhcnRpdGlvbiwgbm9uUGVyc2lzdGVudENyZWRlbnRpYWwsIGF1dGhl
bnRpY2F0aW9uQ2hhbGxlbmdlLnByb3RlY3Rpb25TcGFjZSgpLCB1cmxUb1N0b3JlKTsKKyAgICAg
ICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKworICAg
ICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoZGlzcG9zaXRpb24sIG5vblBlcnNpc3RlbnRDcmVk
ZW50aWFsKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorI2VuZGlmCisgICAgICAg
IGNvbXBsZXRpb25IYW5kbGVyKGRpc3Bvc2l0aW9uLCBjcmVkZW50aWFsKTsKKyAgICB9OworICAg
IG5ldHdvcmtEYXRhVGFzay0+ZGlkUmVjZWl2ZUNoYWxsZW5nZShXVEZNb3ZlKGF1dGhlbnRpY2F0
aW9uQ2hhbGxlbmdlKSwgV1RGTW92ZShjaGFsbGVuZ2VDb21wbGV0aW9uSGFuZGxlcikpOworfQor
CiB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>360386</attachid>
            <date>2019-01-28 15:23:07 -0800</date>
            <delta_ts>2019-01-29 11:14:18 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-193355-20190128152306.patch</filename>
            <type>text/plain</type>
            <size>26155</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQwNTg4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGU5MGE0OWQ2OGFkNmVlMmY1
YTA3Y2Q4OGM0MTM2N2UxOTA1MjQyYTAuLjBiZGE0MjU0OGJlOWU5OGEwNDYxMDc0MmM4MzUyNzBi
ZDcxMTk3NTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjAgQEAKKzIwMTktMDEtMjggIFlvdWVubiBG
YWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgorCisgICAgICAgIEFkb3B0IG5ldyBTUEkgdG8gZXZh
bHVhdGUgc2VydmVyIGNlcnRpZmljYXRlIHRydXN0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTMzNTUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBVc2UgbmV3IFNQSSBwcm92aWRlZCBpbiBOU1VSTFNlc3Np
b24gdG8gZXZhbHVhdGUgc2VydmVyIGNlcnRpZmljYXRlcy4KKyAgICAgICAgSWYgc3VjY2Vzc2Z1
bCwgbGV0IGxvYWRpbmcgcHJvY2VlZCBhcyB1c3VhbC4KKyAgICAgICAgT3RoZXJ3aXNlLCBnbyB0
byB0aGUgVUlQcm9jZXNzIHRvIGFzayBmb3IgYSBkZWNpc2lvbiBvbiBjb250aW51aW5nIHRoZSBs
b2FkIG9yIG5vdC4KKworICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtTZXNz
aW9uQ29jb2EuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrU2Vzc2lv
bkNvY29hLm1tOgorICAgICAgICAoY2FuTlNVUkxTZXNzaW9uVHJ1c3RFdmFsdWF0ZSk6CisgICAg
ICAgICgtW1dLTmV0d29ya1Nlc3Npb25EZWxlZ2F0ZSBVUkxTZXNzaW9uOnRhc2s6ZGlkUmVjZWl2
ZUNoYWxsZW5nZTpjb21wbGV0aW9uSGFuZGxlcjpdKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29y
a1Nlc3Npb25Db2NvYTo6Y29udGludWVEaWRSZWNlaXZlQ2hhbGxlbmdlKToKKwogMjAxOS0wMS0y
OCAgQW50b2luZSBRdWludCAgPGdyYW91dHNAYXBwbGUuY29tPgogCiAgICAgICAgIExpbWl0IHVz
ZXItYWdlbnQgaW50ZXJhY3Rpb25zIGJhc2VkIG9uIHRoZSB0b3VjaC1hY3Rpb24gcHJvcGVydHkg
b24gaU9TCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05l
dHdvcmtTZXNzaW9uQ29jb2EuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2Ev
TmV0d29ya1Nlc3Npb25Db2NvYS5oCmluZGV4IDBkNjcxYzI5Y2EwOTc3OTk1YWFiNDllY2ZkNjIy
ODE5ZjYxMGNkNmIuLjE4NjIxYTQ4ZTMzNGVlM2U0OGIzZmQzMDQ3MGU1NzhiYTg2NGFlZmYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1Nlc3Np
b25Db2NvYS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29y
a1Nlc3Npb25Db2NvYS5oCkBAIC02Miw2ICs2Miw4IEBAIHB1YmxpYzoKIAogICAgIHN0YXRpYyBi
b29sIGFsbG93c1NwZWNpZmljSFRUUFNDZXJ0aWZpY2F0ZUZvckhvc3QoY29uc3QgV2ViQ29yZTo6
QXV0aGVudGljYXRpb25DaGFsbGVuZ2UmKTsKIAorICAgIHZvaWQgY29udGludWVEaWRSZWNlaXZl
Q2hhbGxlbmdlKGNvbnN0IFdlYkNvcmU6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiwgTmV0d29y
a0RhdGFUYXNrQ29jb2E6OlRhc2tJZGVudGlmaWVyLCBOZXR3b3JrRGF0YVRhc2tDb2NvYSosIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViS2l0OjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZURpc3Bv
c2l0aW9uLCBjb25zdCBXZWJDb3JlOjpDcmVkZW50aWFsJik+JiYpOworCiBwcml2YXRlOgogICAg
IE5ldHdvcmtTZXNzaW9uQ29jb2EoTmV0d29ya1Byb2Nlc3MmLCBOZXR3b3JrU2Vzc2lvbkNyZWF0
aW9uUGFyYW1ldGVycyYmKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9jb2NvYS9OZXR3b3JrU2Vzc2lvbkNvY29hLm1tIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9jb2NvYS9OZXR3b3JrU2Vzc2lvbkNvY29hLm1tCmluZGV4IDRhMWQ3OTIxMGFmYTU5
NmU0YjBmYWZjZTgxOGZmNGY2ODJiMzhiNGEuLjNhMzc3NmY2Y2IzYTQ0YWFmNTc0ZWRmMDQ4ODBh
NDUwNWJmYTExODggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29j
b2EvTmV0d29ya1Nlc3Npb25Db2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL2NvY29hL05ldHdvcmtTZXNzaW9uQ29jb2EubW0KQEAgLTUzLDYgKzUzLDEwIEBACiAjaW1w
b3J0IDx3dGYvVVJMLmg+CiAjaW1wb3J0IDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAorQGludGVy
ZmFjZSBOU1VSTFNlc3Npb24gKCkKKysgKHZvaWQpX3N0cmljdFRydXN0RXZhbHVhdGU6KE5TVVJM
QXV0aGVudGljYXRpb25DaGFsbGVuZ2UgKiljaGFsbGVuZ2UgcXVldWU6KGRpc3BhdGNoX3F1ZXVl
X3QpcXVldWUgY29tcGxldGlvbkhhbmRsZXI6KHZvaWQgKF4pKE5TVVJMQXV0aGVudGljYXRpb25D
aGFsbGVuZ2UgKmNoYWxsZW5nZSwgT1NTdGF0dXMgdHJ1c3RSZXN1bHQpKWNiOworQGVuZAorCiB1
c2luZyBuYW1lc3BhY2UgV2ViS2l0OwogCiBDRlN0cmluZ1JlZiBjb25zdCBXZWJLaXQySFRUUFBy
b3h5RGVmYXVsdHNLZXkgPSBzdGF0aWNfY2FzdDxDRlN0cmluZ1JlZj4oQCJXZWJLaXQySFRUUFBy
b3h5Iik7CkBAIC01MjEsNiArNTI1LDExIEBAIHN0YXRpYyBOU1VSTFJlcXVlc3QqIHVwZGF0ZUln
bm9yZVN0cmljdFRyYW5zcG9ydFNlY3VyaXR5U2V0dGluZ0lmTmVjZXNzYXJ5KE5TVVJMCiAgICAg
ICAgIGNvbXBsZXRpb25IYW5kbGVyKHByb3Bvc2VkUmVzcG9uc2UpOwogfQogCitzdGF0aWMgYm9v
bCBjYW5OU1VSTFNlc3Npb25UcnVzdEV2YWx1YXRlKCkKK3sKKyAgICByZXR1cm4gW05TVVJMU2Vz
c2lvbiByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKF9zdHJpY3RUcnVzdEV2YWx1YXRlOiBx
dWV1ZTogY29tcGxldGlvbkhhbmRsZXI6KV07Cit9CisKIC0gKHZvaWQpVVJMU2Vzc2lvbjooTlNV
UkxTZXNzaW9uICopc2Vzc2lvbiB0YXNrOihOU1VSTFNlc3Npb25UYXNrICopdGFzayBkaWRSZWNl
aXZlQ2hhbGxlbmdlOihOU1VSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlICopY2hhbGxlbmdlIGNv
bXBsZXRpb25IYW5kbGVyOih2b2lkICheKShOU1VSTFNlc3Npb25BdXRoQ2hhbGxlbmdlRGlzcG9z
aXRpb24gZGlzcG9zaXRpb24sIE5TVVJMQ3JlZGVudGlhbCAqY3JlZGVudGlhbCkpY29tcGxldGlv
bkhhbmRsZXIKIHsKICAgICBpZiAoIV9zZXNzaW9uKSB7CkBAIC01NDIsNjIgKzU1MSwzNiBAQCBz
dGF0aWMgTlNVUkxSZXF1ZXN0KiB1cGRhdGVJZ25vcmVTdHJpY3RUcmFuc3BvcnRTZWN1cml0eVNl
dHRpbmdJZk5lY2Vzc2FyeShOU1VSTAogICAgICAgICBpZiAoTmV0d29ya1Nlc3Npb25Db2NvYTo6
YWxsb3dzU3BlY2lmaWNIVFRQU0NlcnRpZmljYXRlRm9ySG9zdChjaGFsbGVuZ2UpKQogICAgICAg
ICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKE5TVVJMU2Vzc2lvbkF1dGhDaGFsbGVuZ2VV
c2VDcmVkZW50aWFsLCBbTlNVUkxDcmVkZW50aWFsIGNyZWRlbnRpYWxGb3JUcnVzdDpjaGFsbGVu
Z2UucHJvdGVjdGlvblNwYWNlLnNlcnZlclRydXN0XSk7CiAKLSAgICAgICAgLy8gSGFuZGxlIHNl
cnZlciB0cnVzdCBldmFsdWF0aW9uIGF0IHBsYXRmb3JtLWxldmVsIGlmIHJlcXVlc3RlZCwgZm9y
IHBlcmZvcm1hbmNlIHJlYXNvbnMgYW5kIHRvIHVzZSBBVFMgZGVmYXVsdHMuCi0gICAgICAgIGlm
ICghX3Nlc3Npb24tPm5ldHdvcmtQcm9jZXNzKCkuY2FuSGFuZGxlSFRUUFNTZXJ2ZXJUcnVzdEV2
YWx1YXRpb24oKSkKLSAgICAgICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxlcihOU1VSTFNl
c3Npb25BdXRoQ2hhbGxlbmdlUmVqZWN0UHJvdGVjdGlvblNwYWNlLCBuaWwpOwotICAgIH0KKyAg
ICAgICAgaWYgKGNhbk5TVVJMU2Vzc2lvblRydXN0RXZhbHVhdGUoKSkgeworICAgICAgICAgICAg
YXV0byogbmV0d29ya0RhdGFUYXNrID0gW3NlbGYgZXhpc3RpbmdUYXNrOnRhc2tdOworICAgICAg
ICAgICAgYXV0byBkZWNpc2lvbkhhbmRsZXIgPSBtYWtlQmxvY2tQdHIoW19zZXNzaW9uID0gX3Nl
c3Npb24uY29weVJlZigpLCBjb21wbGV0aW9uSGFuZGxlciA9IG1ha2VCbG9ja1B0cihjb21wbGV0
aW9uSGFuZGxlciksIHRhc2tJZGVudGlmaWVyLCBuZXR3b3JrRGF0YVRhc2sgPSBSZWZQdHI8TmV0
d29ya0RhdGFUYXNrQ29jb2E+KG5ldHdvcmtEYXRhVGFzayldKE5TVVJMQXV0aGVudGljYXRpb25D
aGFsbGVuZ2UgKmNoYWxsZW5nZSwgT1NTdGF0dXMgdHJ1c3RSZXN1bHQpIG11dGFibGUgewogCi0g
ICAgaWYgKGF1dG8qIG5ldHdvcmtEYXRhVGFzayA9IFtzZWxmIGV4aXN0aW5nVGFzazp0YXNrXSkg
ewotICAgICAgICBXZWJDb3JlOjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSBhdXRoZW50aWNhdGlv
bkNoYWxsZW5nZShjaGFsbGVuZ2UpOwotICAgICAgICBhdXRvIGNvbXBsZXRpb25IYW5kbGVyQ29w
eSA9IEJsb2NrX2NvcHkoY29tcGxldGlvbkhhbmRsZXIpOwotICAgICAgICBhdXRvIHNlc3Npb25J
RCA9IF9zZXNzaW9uLT5zZXNzaW9uSUQoKTsKLSAgICAgICAgYXV0byBjaGFsbGVuZ2VDb21wbGV0
aW9uSGFuZGxlciA9IFtuZXR3b3JrUHJvY2VzcyA9IG1ha2VSZWYoX3Nlc3Npb24tPm5ldHdvcmtQ
cm9jZXNzKCkpLCBjb21wbGV0aW9uSGFuZGxlckNvcHksIHNlc3Npb25JRCwgYXV0aGVudGljYXRp
b25DaGFsbGVuZ2UsIHRhc2tJZGVudGlmaWVyLCBwYXJ0aXRpb24gPSBuZXR3b3JrRGF0YVRhc2st
PnBhcnRpdGlvbigpXShXZWJLaXQ6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlRGlzcG9zaXRpb24g
ZGlzcG9zaXRpb24sIGNvbnN0IFdlYkNvcmU6OkNyZWRlbnRpYWwmIGNyZWRlbnRpYWwpCi0gICAg
ICAgIHsKLSNpZiAhTE9HX0RJU0FCTEVECi0gICAgICAgICAgICBMT0coTmV0d29ya1Nlc3Npb24s
ICIlbGx1IGRpZFJlY2VpdmVDaGFsbGVuZ2UgY29tcGxldGlvbkhhbmRsZXIgJWQiLCB0YXNrSWRl
bnRpZmllciwgZGlzcG9zaXRpb24pOwotI2Vsc2UKLSAgICAgICAgICAgIFVOVVNFRF9QQVJBTSh0
YXNrSWRlbnRpZmllcik7Ci0jZW5kaWYKLSNpZiAhVVNFKENSRURFTlRJQUxfU1RPUkFHRV9XSVRI
X05FVFdPUktfU0VTU0lPTikKLSAgICAgICAgICAgIFVOVVNFRF9QQVJBTShzZXNzaW9uSUQpOwot
ICAgICAgICAgICAgVU5VU0VEX1BBUkFNKGF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKTsKLSNlbHNl
Ci0gICAgICAgICAgICBpZiAoY3JlZGVudGlhbC5wZXJzaXN0ZW5jZSgpID09IFdlYkNvcmU6OkNy
ZWRlbnRpYWxQZXJzaXN0ZW5jZUZvclNlc3Npb24gJiYgYXV0aGVudGljYXRpb25DaGFsbGVuZ2Uu
cHJvdGVjdGlvblNwYWNlKCkuaXNQYXNzd29yZEJhc2VkKCkpIHsKLQotICAgICAgICAgICAgICAg
IFdlYkNvcmU6OkNyZWRlbnRpYWwgbm9uUGVyc2lzdGVudENyZWRlbnRpYWwoY3JlZGVudGlhbC51
c2VyKCksIGNyZWRlbnRpYWwucGFzc3dvcmQoKSwgV2ViQ29yZTo6Q3JlZGVudGlhbFBlcnNpc3Rl
bmNlTm9uZSk7Ci0gICAgICAgICAgICAgICAgVVJMIHVybFRvU3RvcmU7Ci0gICAgICAgICAgICAg
ICAgaWYgKGF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLmZhaWx1cmVSZXNwb25zZSgpLmh0dHBTdGF0
dXNDb2RlKCkgPT0gNDAxKQotICAgICAgICAgICAgICAgICAgICB1cmxUb1N0b3JlID0gYXV0aGVu
dGljYXRpb25DaGFsbGVuZ2UuZmFpbHVyZVJlc3BvbnNlKCkudXJsKCk7Ci0gICAgICAgICAgICAg
ICAgaWYgKGF1dG8gc3RvcmFnZVNlc3Npb24gPSBuZXR3b3JrUHJvY2Vzcy0+c3RvcmFnZVNlc3Np
b24oc2Vzc2lvbklEKSkKLSAgICAgICAgICAgICAgICAgICAgc3RvcmFnZVNlc3Npb24tPmNyZWRl
bnRpYWxTdG9yYWdlKCkuc2V0KHBhcnRpdGlvbiwgbm9uUGVyc2lzdGVudENyZWRlbnRpYWwsIGF1
dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLnByb3RlY3Rpb25TcGFjZSgpLCB1cmxUb1N0b3JlKTsKLSAg
ICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hF
RCgpOworICAgICAgICAgICAgICAgIGlmICh0cnVzdFJlc3VsdCA9PSBub0VyciB8fCBuZXR3b3Jr
RGF0YVRhc2stPnN0YXRlKCkgPT0gTmV0d29ya0RhdGFUYXNrOjpTdGF0ZTo6Q2FuY2VsaW5nIHx8
IG5ldHdvcmtEYXRhVGFzay0+c3RhdGUoKSA9PSBOZXR3b3JrRGF0YVRhc2s6OlN0YXRlOjpDb21w
bGV0ZWQpIHsKKyAgICAgICAgICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoTlNVUkxTZXNz
aW9uQXV0aENoYWxsZW5nZVBlcmZvcm1EZWZhdWx0SGFuZGxpbmcsIG5pbCk7CisgICAgICAgICAg
ICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgICAgICBj
b21wbGV0aW9uSGFuZGxlckNvcHkodG9OU1VSTFNlc3Npb25BdXRoQ2hhbGxlbmdlRGlzcG9zaXRp
b24oZGlzcG9zaXRpb24pLCBub25QZXJzaXN0ZW50Q3JlZGVudGlhbC5uc0NyZWRlbnRpYWwoKSk7
Ci0gICAgICAgICAgICB9IGVsc2UKLSNlbmRpZgotICAgICAgICAgICAgICAgIGNvbXBsZXRpb25I
YW5kbGVyQ29weSh0b05TVVJMU2Vzc2lvbkF1dGhDaGFsbGVuZ2VEaXNwb3NpdGlvbihkaXNwb3Np
dGlvbiksIGNyZWRlbnRpYWwubnNDcmVkZW50aWFsKCkpOwotICAgICAgICAgICAgQmxvY2tfcmVs
ZWFzZShjb21wbGV0aW9uSGFuZGxlckNvcHkpOwotICAgICAgICB9OwotICAgICAgICBuZXR3b3Jr
RGF0YVRhc2stPmRpZFJlY2VpdmVDaGFsbGVuZ2UoY2hhbGxlbmdlLCBXVEZNb3ZlKGNoYWxsZW5n
ZUNvbXBsZXRpb25IYW5kbGVyKSk7Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgYXV0byBkb3dubG9h
ZElEID0gX3Nlc3Npb24tPmRvd25sb2FkSUQodGFza0lkZW50aWZpZXIpOwotICAgICAgICBpZiAo
ZG93bmxvYWRJRC5kb3dubG9hZElEKCkpIHsKLSAgICAgICAgICAgIGlmIChhdXRvKiBkb3dubG9h
ZCA9IF9zZXNzaW9uLT5uZXR3b3JrUHJvY2VzcygpLmRvd25sb2FkTWFuYWdlcigpLmRvd25sb2Fk
KGRvd25sb2FkSUQpKSB7Ci0gICAgICAgICAgICAgICAgLy8gUmVjZWl2ZWQgYW4gYXV0aGVudGlj
YXRpb24gY2hhbGxlbmdlIGZvciBhIGRvd25sb2FkIGJlaW5nIHJlc3VtZWQuCi0gICAgICAgICAg
ICAgICAgV2ViQ29yZTo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2UgYXV0aGVudGljYXRpb25DaGFs
bGVuZ2UgeyBjaGFsbGVuZ2UgfTsKLSAgICAgICAgICAgICAgICBhdXRvIGNvbXBsZXRpb25IYW5k
bGVyQ29weSA9IEJsb2NrX2NvcHkoY29tcGxldGlvbkhhbmRsZXIpOwotICAgICAgICAgICAgICAg
IGF1dG8gY2hhbGxlbmdlQ29tcGxldGlvbkhhbmRsZXIgPSBbY29tcGxldGlvbkhhbmRsZXJDb3B5
LCBhdXRoZW50aWNhdGlvbkNoYWxsZW5nZV0oV2ViS2l0OjpBdXRoZW50aWNhdGlvbkNoYWxsZW5n
ZURpc3Bvc2l0aW9uIGRpc3Bvc2l0aW9uLCBjb25zdCBXZWJDb3JlOjpDcmVkZW50aWFsJiBjcmVk
ZW50aWFsKSB7Ci0gICAgICAgICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyQ29weSh0b05T
VVJMU2Vzc2lvbkF1dGhDaGFsbGVuZ2VEaXNwb3NpdGlvbihkaXNwb3NpdGlvbiksIGNyZWRlbnRp
YWwubnNDcmVkZW50aWFsKCkpOwotICAgICAgICAgICAgICAgICAgICBCbG9ja19yZWxlYXNlKGNv
bXBsZXRpb25IYW5kbGVyQ29weSk7Ci0gICAgICAgICAgICAgICAgfTsKLSAgICAgICAgICAgICAg
ICBkb3dubG9hZC0+ZGlkUmVjZWl2ZUNoYWxsZW5nZShjaGFsbGVuZ2UsIFdURk1vdmUoY2hhbGxl
bmdlQ29tcGxldGlvbkhhbmRsZXIpKTsKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAg
ICAgICB9CisgICAgICAgICAgICAgICAgUmV0YWluUHRyPFNlY1RydXN0UmVmPiBzZWNUcnVzdCA9
IGNoYWxsZW5nZS5wcm90ZWN0aW9uU3BhY2Uuc2VydmVyVHJ1c3Q7CisgICAgICAgICAgICAgICAg
X3Nlc3Npb24tPmNvbnRpbnVlRGlkUmVjZWl2ZUNoYWxsZW5nZShjaGFsbGVuZ2UsIHRhc2tJZGVu
dGlmaWVyLCBuZXR3b3JrRGF0YVRhc2suZ2V0KCksIFtjb21wbGV0aW9uSGFuZGxlciA9IFdURk1v
dmUoY29tcGxldGlvbkhhbmRsZXIpLCBzZWNUcnVzdCA9IFdURk1vdmUoc2VjVHJ1c3QpXSAoV2Vi
S2l0OjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZURpc3Bvc2l0aW9uIGRpc3Bvc2l0aW9uLCBjb25z
dCBXZWJDb3JlOjpDcmVkZW50aWFsJiBjcmVkZW50aWFsKSBtdXRhYmxlIHsKKyAgICAgICAgICAg
ICAgICAgICAgLy8gRklYTUU6IFVJUHJvY2VzcyBzaG91bGQgc2VuZCB1cyBiYWNrIG5vbiBuaWwg
Y3JlZGVudGlhbHMgYnV0IHRoZSBjcmVkZW50aWFsIElQQyBlbmNvZGVyIGN1cnJlbnRseSBvbmx5
IHNlcmlhbGl6ZXMgbnMgY3JlZGVudGlhbHMgZm9yIHVzZXJuYW1lL3Bhc3N3b3JkLgorICAgICAg
ICAgICAgICAgICAgICBpZiAoZGlzcG9zaXRpb24gPT0gV2ViS2l0OjpBdXRoZW50aWNhdGlvbkNo
YWxsZW5nZURpc3Bvc2l0aW9uOjpVc2VDcmVkZW50aWFsICYmICFjcmVkZW50aWFsLm5zQ3JlZGVu
dGlhbCgpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihOU1VS
TFNlc3Npb25BdXRoQ2hhbGxlbmdlVXNlQ3JlZGVudGlhbCwgW05TVVJMQ3JlZGVudGlhbCBjcmVk
ZW50aWFsRm9yVHJ1c3Q6IHNlY1RydXN0LmdldCgpXSk7CisgICAgICAgICAgICAgICAgICAgICAg
ICByZXR1cm47CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgY29t
cGxldGlvbkhhbmRsZXIodG9OU1VSTFNlc3Npb25BdXRoQ2hhbGxlbmdlRGlzcG9zaXRpb24oZGlz
cG9zaXRpb24pLCBjcmVkZW50aWFsLm5zQ3JlZGVudGlhbCgpKTsKKyAgICAgICAgICAgICAgICB9
KTsKKyAgICAgICAgICAgIH0pOworICAgICAgICAgICAgW05TVVJMU2Vzc2lvbiBfc3RyaWN0VHJ1
c3RFdmFsdWF0ZTpjaGFsbGVuZ2UgcXVldWU6W05TT3BlcmF0aW9uUXVldWUgbWFpblF1ZXVlXS51
bmRlcmx5aW5nUXVldWUgY29tcGxldGlvbkhhbmRsZXI6ZGVjaXNpb25IYW5kbGVyLmdldCgpXTsK
KyAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQotICAgICAgICBMT0coTmV0d29ya1Nlc3Np
b24sICIlbGx1IGRpZFJlY2VpdmVDaGFsbGVuZ2UgY29tcGxldGlvbkhhbmRsZXIgKGNhbmNlbCki
LCB0YXNrSWRlbnRpZmllcik7Ci0gICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKE5TVVJMU2Vzc2lv
bkF1dGhDaGFsbGVuZ2VDYW5jZWxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSwgbmlsKTsKKworICAg
ICAgICAvLyBIYW5kbGUgc2VydmVyIHRydXN0IGV2YWx1YXRpb24gYXQgcGxhdGZvcm0tbGV2ZWwg
aWYgcmVxdWVzdGVkLCBmb3IgcGVyZm9ybWFuY2UgcmVhc29ucyBhbmQgdG8gdXNlIEFUUyBkZWZh
dWx0cy4KKyAgICAgICAgaWYgKCFfc2Vzc2lvbi0+bmV0d29ya1Byb2Nlc3MoKS5jYW5IYW5kbGVI
VFRQU1NlcnZlclRydXN0RXZhbHVhdGlvbigpKQorICAgICAgICAgICAgcmV0dXJuIGNvbXBsZXRp
b25IYW5kbGVyKE5TVVJMU2Vzc2lvbkF1dGhDaGFsbGVuZ2VSZWplY3RQcm90ZWN0aW9uU3BhY2Us
IG5pbCk7CiAgICAgfQorICAgIF9zZXNzaW9uLT5jb250aW51ZURpZFJlY2VpdmVDaGFsbGVuZ2Uo
Y2hhbGxlbmdlLCB0YXNrSWRlbnRpZmllciwgW3NlbGYgZXhpc3RpbmdUYXNrOnRhc2tdLCBbY29t
cGxldGlvbkhhbmRsZXIgPSBtYWtlQmxvY2tQdHIoY29tcGxldGlvbkhhbmRsZXIpXSAoV2ViS2l0
OjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZURpc3Bvc2l0aW9uIGRpc3Bvc2l0aW9uLCBjb25zdCBX
ZWJDb3JlOjpDcmVkZW50aWFsJiBjcmVkZW50aWFsKSBtdXRhYmxlIHsKKyAgICAgICAgY29tcGxl
dGlvbkhhbmRsZXIodG9OU1VSTFNlc3Npb25BdXRoQ2hhbGxlbmdlRGlzcG9zaXRpb24oZGlzcG9z
aXRpb24pLCBjcmVkZW50aWFsLm5zQ3JlZGVudGlhbCgpKTsKKyAgICB9KTsKIH0KIAogLSAodm9p
ZClVUkxTZXNzaW9uOihOU1VSTFNlc3Npb24gKilzZXNzaW9uIHRhc2s6KE5TVVJMU2Vzc2lvblRh
c2sgKil0YXNrIGRpZENvbXBsZXRlV2l0aEVycm9yOihOU0Vycm9yICopZXJyb3IKQEAgLTEwNTMs
NCArMTAzNiw1MyBAQCBib29sIE5ldHdvcmtTZXNzaW9uQ29jb2E6OmFsbG93c1NwZWNpZmljSFRU
UFNDZXJ0aWZpY2F0ZUZvckhvc3QoY29uc3QgV2ViQ29yZTo6QQogICAgIHJldHVybiBjZXJ0aWZp
Y2F0ZXNNYXRjaCh0cnVzdC5nZXQoKSwgY2hhbGxlbmdlLm5zVVJMQXV0aGVudGljYXRpb25DaGFs
bGVuZ2UoKS5wcm90ZWN0aW9uU3BhY2Uuc2VydmVyVHJ1c3QpOwogfQogCit2b2lkIE5ldHdvcmtT
ZXNzaW9uQ29jb2E6OmNvbnRpbnVlRGlkUmVjZWl2ZUNoYWxsZW5nZShjb25zdCBXZWJDb3JlOjpB
dXRoZW50aWNhdGlvbkNoYWxsZW5nZSYgY2hhbGxlbmdlLCBOZXR3b3JrRGF0YVRhc2tDb2NvYTo6
VGFza0lkZW50aWZpZXIgdGFza0lkZW50aWZpZXIsIE5ldHdvcmtEYXRhVGFza0NvY29hKiBuZXR3
b3JrRGF0YVRhc2ssIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViS2l0OjpBdXRoZW50aWNhdGlv
bkNoYWxsZW5nZURpc3Bvc2l0aW9uLCBjb25zdCBXZWJDb3JlOjpDcmVkZW50aWFsJik+JiYgY29t
cGxldGlvbkhhbmRsZXIpCisKK3sKKyAgICBpZiAoIW5ldHdvcmtEYXRhVGFzaykgeworICAgICAg
ICBhdXRvIGRvd25sb2FkSUQgPSB0aGlzLT5kb3dubG9hZElEKHRhc2tJZGVudGlmaWVyKTsKKyAg
ICAgICAgaWYgKGRvd25sb2FkSUQuZG93bmxvYWRJRCgpKSB7CisgICAgICAgICAgICBpZiAoYXV0
byogZG93bmxvYWQgPSBuZXR3b3JrUHJvY2VzcygpLmRvd25sb2FkTWFuYWdlcigpLmRvd25sb2Fk
KGRvd25sb2FkSUQpKSB7CisgICAgICAgICAgICAgICAgV2ViQ29yZTo6QXV0aGVudGljYXRpb25D
aGFsbGVuZ2UgYXV0aGVudGljYXRpb25DaGFsbGVuZ2UgeyBjaGFsbGVuZ2UgfTsKKyAgICAgICAg
ICAgICAgICAvLyBSZWNlaXZlZCBhbiBhdXRoZW50aWNhdGlvbiBjaGFsbGVuZ2UgZm9yIGEgZG93
bmxvYWQgYmVpbmcgcmVzdW1lZC4KKyAgICAgICAgICAgICAgICBkb3dubG9hZC0+ZGlkUmVjZWl2
ZUNoYWxsZW5nZShhdXRoZW50aWNhdGlvbkNoYWxsZW5nZSwgV1RGTW92ZShjb21wbGV0aW9uSGFu
ZGxlcikpOworICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKyAgICAgICAg
fQorICAgICAgICBMT0coTmV0d29ya1Nlc3Npb24sICIlbGx1IGRpZFJlY2VpdmVDaGFsbGVuZ2Ug
Y29tcGxldGlvbkhhbmRsZXIgKGNhbmNlbCkiLCB0YXNrSWRlbnRpZmllcik7CisgICAgICAgIGNv
bXBsZXRpb25IYW5kbGVyKEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlRGlzcG9zaXRpb246OkNhbmNl
bCwgeyB9KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGF1dG8gc2Vzc2lvbklEID0g
dGhpcy0+c2Vzc2lvbklEKCk7CisgICAgV2ViQ29yZTo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2Ug
YXV0aGVudGljYXRpb25DaGFsbGVuZ2UgeyBjaGFsbGVuZ2UgfTsKKyAgICBhdXRvIGNoYWxsZW5n
ZUNvbXBsZXRpb25IYW5kbGVyID0gW2NvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0
aW9uSGFuZGxlciksIG5ldHdvcmtQcm9jZXNzID0gbWFrZVJlZihuZXR3b3JrUHJvY2VzcygpKSwg
c2Vzc2lvbklELCBhdXRoZW50aWNhdGlvbkNoYWxsZW5nZSwgdGFza0lkZW50aWZpZXIsIHBhcnRp
dGlvbiA9IG5ldHdvcmtEYXRhVGFzay0+cGFydGl0aW9uKCldKFdlYktpdDo6QXV0aGVudGljYXRp
b25DaGFsbGVuZ2VEaXNwb3NpdGlvbiBkaXNwb3NpdGlvbiwgY29uc3QgV2ViQ29yZTo6Q3JlZGVu
dGlhbCYgY3JlZGVudGlhbCkgbXV0YWJsZSB7CisjaWYgIUxPR19ESVNBQkxFRAorICAgICAgICBM
T0coTmV0d29ya1Nlc3Npb24sICIlbGx1IGRpZFJlY2VpdmVDaGFsbGVuZ2UgY29tcGxldGlvbkhh
bmRsZXIgJWQiLCB0YXNrSWRlbnRpZmllciwgZGlzcG9zaXRpb24pOworI2Vsc2UKKyAgICAgICAg
VU5VU0VEX1BBUkFNKHRhc2tJZGVudGlmaWVyKTsKKyNlbmRpZgorI2lmICFVU0UoQ1JFREVOVElB
TF9TVE9SQUdFX1dJVEhfTkVUV09SS19TRVNTSU9OKQorICAgICAgICBVTlVTRURfUEFSQU0oc2Vz
c2lvbklEKTsKKyAgICAgICAgVU5VU0VEX1BBUkFNKGF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKTsK
KyNlbHNlCisgICAgICAgIGlmIChjcmVkZW50aWFsLnBlcnNpc3RlbmNlKCkgPT0gV2ViQ29yZTo6
Q3JlZGVudGlhbFBlcnNpc3RlbmNlRm9yU2Vzc2lvbiAmJiBhdXRoZW50aWNhdGlvbkNoYWxsZW5n
ZS5wcm90ZWN0aW9uU3BhY2UoKS5pc1Bhc3N3b3JkQmFzZWQoKSkgeworICAgICAgICAgICAgV2Vi
Q29yZTo6Q3JlZGVudGlhbCBub25QZXJzaXN0ZW50Q3JlZGVudGlhbChjcmVkZW50aWFsLnVzZXIo
KSwgY3JlZGVudGlhbC5wYXNzd29yZCgpLCBXZWJDb3JlOjpDcmVkZW50aWFsUGVyc2lzdGVuY2VO
b25lKTsKKyAgICAgICAgICAgIFVSTCB1cmxUb1N0b3JlOworICAgICAgICAgICAgaWYgKGF1dGhl
bnRpY2F0aW9uQ2hhbGxlbmdlLmZhaWx1cmVSZXNwb25zZSgpLmh0dHBTdGF0dXNDb2RlKCkgPT0g
NDAxKQorICAgICAgICAgICAgICAgIHVybFRvU3RvcmUgPSBhdXRoZW50aWNhdGlvbkNoYWxsZW5n
ZS5mYWlsdXJlUmVzcG9uc2UoKS51cmwoKTsKKyAgICAgICAgICAgIGlmIChhdXRvIHN0b3JhZ2VT
ZXNzaW9uID0gbmV0d29ya1Byb2Nlc3MtPnN0b3JhZ2VTZXNzaW9uKHNlc3Npb25JRCkpCisgICAg
ICAgICAgICAgICAgc3RvcmFnZVNlc3Npb24tPmNyZWRlbnRpYWxTdG9yYWdlKCkuc2V0KHBhcnRp
dGlvbiwgbm9uUGVyc2lzdGVudENyZWRlbnRpYWwsIGF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLnBy
b3RlY3Rpb25TcGFjZSgpLCB1cmxUb1N0b3JlKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAg
ICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKworICAgICAgICAgICAgY29tcGxldGlvbkhh
bmRsZXIoZGlzcG9zaXRpb24sIG5vblBlcnNpc3RlbnRDcmVkZW50aWFsKTsKKyAgICAgICAgICAg
IHJldHVybjsKKyAgICAgICAgfQorI2VuZGlmCisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGRp
c3Bvc2l0aW9uLCBjcmVkZW50aWFsKTsKKyAgICB9OworICAgIG5ldHdvcmtEYXRhVGFzay0+ZGlk
UmVjZWl2ZUNoYWxsZW5nZShXVEZNb3ZlKGF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKSwgV1RGTW92
ZShjaGFsbGVuZ2VDb21wbGV0aW9uSGFuZGxlcikpOworfQorCiB9CmRpZmYgLS1naXQgYS9Ub29s
cy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggZTQwZGU1N2ZkZjM4YzY0ZWI4NWU3
YTMzYWNjMDNhNGRhMWFkMTdhOS4uMTcwZmE3MjM5MzAwYjM5NTI2MDNhMDAwMjI3ODkzZTVkNDEx
NjY3ZCAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpA
QCAtMSwzICsxLDI5IEBACisyMDE5LTAxLTI4ICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFwcGxl
LmNvbT4KKworICAgICAgICBBZG9wdCBuZXcgU1BJIHRvIGV2YWx1YXRlIHNlcnZlciBjZXJ0aWZp
Y2F0ZSB0cnVzdAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTkzMzU1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgQWRkIGluZnJhc3RydWN0dXJlIHRvIGhhbmRsZSBIVFRQUyBzZXJ2ZXIgdHJ1c3QgZXZhbHVh
dGlvbiB0ZXN0aW5nLgorCisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRs
ZS9CaW5kaW5ncy9UZXN0UnVubmVyLmlkbDoKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0lu
amVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuY3BwOgorICAgICAgICAoV1RSOjpUZXN0UnVubmVyOjpz
ZXRDYW5IYW5kbGVIVFRQU1NlcnZlclRydXN0RXZhbHVhdGlvbik6CisgICAgICAgIChXVFI6OlRl
c3RSdW5uZXI6OmNhbkRvU2VydmVyVHJ1c3RFdmFsdWF0aW9uSW5OZXR3b3JrUHJvY2Vzcyk6Cisg
ICAgICAgIChXVFI6OlRlc3RSdW5uZXI6OnNlcnZlclRydXN0RXZhbHVhdGlvbkNhbGxiYWNrQ2Fs
bHNDb3VudCk6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0
UnVubmVyLmg6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5jcHA6
CisgICAgICAgIChXVFI6OlRlc3RDb250cm9sbGVyOjpyZXNldFByZWZlcmVuY2VzVG9Db25zaXN0
ZW50VmFsdWVzKToKKyAgICAgICAgKFdUUjo6VGVzdENvbnRyb2xsZXI6OmRpZFJlY2VpdmVBdXRo
ZW50aWNhdGlvbkNoYWxsZW5nZSk6CisgICAgICAgIChXVFI6OlRlc3RDb250cm9sbGVyOjpjYW5E
b1NlcnZlclRydXN0RXZhbHVhdGlvbkluTmV0d29ya1Byb2Nlc3MgY29uc3QpOgorICAgICAgICAq
IFdlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuaDoKKyAgICAgICAgKFdUUjo6VGVzdENv
bnRyb2xsZXI6OnNlcnZlclRydXN0RXZhbHVhdGlvbkNhbGxiYWNrQ2FsbHNDb3VudCBjb25zdCk6
CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlvbi5jcHA6CisgICAgICAg
IChXVFI6OlRlc3RJbnZvY2F0aW9uOjpkaWRSZWNlaXZlU3luY2hyb25vdXNNZXNzYWdlRnJvbUlu
amVjdGVkQnVuZGxlKToKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL2NvY29hL1Rlc3RDb250
cm9sbGVyQ29jb2EubW06CisgICAgICAgIChXVFI6OlRlc3RDb250cm9sbGVyOjpjYW5Eb1NlcnZl
clRydXN0RXZhbHVhdGlvbkluTmV0d29ya1Byb2Nlc3MgY29uc3QpOgorCiAyMDE5LTAxLTI4ICBa
YWxhbiBCdWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+CiAKICAgICAgICAgW0xGQ11bTWFyZ2luQ29s
bGFwc2luZ11bUXVpcmtzXSBRdWlyayBtYXJnaW4gdmFsdWVzIGdldCBwcm9wYWdhdGVkIHRocm91
Z2ggbWFyZ2luIGNvbGxhcHNpbmcKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIv
SW5qZWN0ZWRCdW5kbGUvQmluZGluZ3MvVGVzdFJ1bm5lci5pZGwgYi9Ub29scy9XZWJLaXRUZXN0
UnVubmVyL0luamVjdGVkQnVuZGxlL0JpbmRpbmdzL1Rlc3RSdW5uZXIuaWRsCmluZGV4IGYxNTU1
MGY1MzBlZDBmM2Q1MTk0NzgwMjI2OTUyMDFlOTAyY2JhYjMuLmY2NzFhMGFiZTdlNjViZDcxNTQy
ZGYyMGZkNzc4MThhNjk3ZWVkMWYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIv
SW5qZWN0ZWRCdW5kbGUvQmluZGluZ3MvVGVzdFJ1bm5lci5pZGwKKysrIGIvVG9vbHMvV2ViS2l0
VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9CaW5kaW5ncy9UZXN0UnVubmVyLmlkbApAQCAtMzM4
LDYgKzMzOCwxMCBAQCBpbnRlcmZhY2UgVGVzdFJ1bm5lciB7CiAgICAgdm9pZCB0ZXJtaW5hdGVO
ZXR3b3JrUHJvY2VzcygpOwogICAgIHZvaWQgdGVybWluYXRlU2VydmljZVdvcmtlclByb2Nlc3Mo
KTsKIAorICAgIHZvaWQgc2V0Q2FuSGFuZGxlSFRUUFNTZXJ2ZXJUcnVzdEV2YWx1YXRpb24oYm9v
bGVhbiBjYW5IYW5kbGUpOworICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBib29sZWFuIGNhbkRvU2Vy
dmVyVHJ1c3RFdmFsdWF0aW9uSW5OZXR3b3JrUHJvY2VzczsKKyAgICByZWFkb25seSBhdHRyaWJ1
dGUgdW5zaWduZWQgbG9uZyBzZXJ2ZXJUcnVzdEV2YWx1YXRpb25DYWxsYmFja0NhbGxzQ291bnQ7
CisKICAgICByZWFkb25seSBhdHRyaWJ1dGUgYm9vbGVhbiBkaWRDYW5jZWxDbGllbnRSZWRpcmVj
dDsKIAogICAgIHZvaWQgcmVtb3ZlQWxsU2Vzc2lvbkNyZWRlbnRpYWxzKG9iamVjdCBjYWxsYmFj
ayk7CmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rl
c3RSdW5uZXIuY3BwIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0
UnVubmVyLmNwcAppbmRleCAxMDBhYjdjNDBmNzM4OTI5ZDkyNmNlODQ2OWYxMDY3MzJkMjA3ZDY4
Li5hNjU5ZDE2OWFlZjJmZjBmNmZkMmRkNzgwNjEzN2UyNjMxYTRlNTI2IDEwMDY0NAotLS0gYS9U
b29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuY3BwCisrKyBi
L1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5jcHAKQEAg
LTI2OTAsNCArMjY5MCwyOSBAQCBib29sIFRlc3RSdW5uZXI6OmtleUV4aXN0c0luS2V5Y2hhaW4o
SlNTdHJpbmdSZWYgYXR0ckxhYmVsLCBKU1N0cmluZ1JlZiBhcHBsaWNhdAogICAgIHJldHVybiBX
S0Jvb2xlYW5HZXRWYWx1ZShhZG9wdFdLKHN0YXRpY19jYXN0PFdLQm9vbGVhblJlZj4ocmV0dXJu
RGF0YSkpLmdldCgpKTsKIH0KIAordm9pZCBUZXN0UnVubmVyOjpzZXRDYW5IYW5kbGVIVFRQU1Nl
cnZlclRydXN0RXZhbHVhdGlvbihib29sIGNhbkhhbmRsZSkKK3sKKyAgICBXS1JldGFpblB0cjxX
S1N0cmluZ1JlZj4gbWVzc2FnZU5hbWUoQWRvcHRXSywgV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENT
dHJpbmcoIlNldENhbkhhbmRsZUhUVFBTU2VydmVyVHJ1c3RFdmFsdWF0aW9uIikpOworICAgIFdL
UmV0YWluUHRyPFdLQm9vbGVhblJlZj4gbWVzc2FnZUJvZHkoQWRvcHRXSywgV0tCb29sZWFuQ3Jl
YXRlKGNhbkhhbmRsZSkpOworICAgIFdLQnVuZGxlUG9zdFN5bmNocm9ub3VzTWVzc2FnZShJbmpl
Y3RlZEJ1bmRsZTo6c2luZ2xldG9uKCkuYnVuZGxlKCksIG1lc3NhZ2VOYW1lLmdldCgpLCBtZXNz
YWdlQm9keS5nZXQoKSwgbnVsbHB0cik7Cit9CisKK2Jvb2wgVGVzdFJ1bm5lcjo6Y2FuRG9TZXJ2
ZXJUcnVzdEV2YWx1YXRpb25Jbk5ldHdvcmtQcm9jZXNzKCkKK3sKKyAgICBXS1JldGFpblB0cjxX
S1N0cmluZ1JlZj4gbWVzc2FnZU5hbWUoQWRvcHRXSywgV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENT
dHJpbmcoIkNhbkRvU2VydmVyVHJ1c3RFdmFsdWF0aW9uSW5OZXR3b3JrUHJvY2VzcyIpKTsKKyAg
ICBXS1R5cGVSZWYgcmV0dXJuRGF0YSA9IG51bGxwdHI7CisgICAgV0tCdW5kbGVQYWdlUG9zdFN5
bmNocm9ub3VzTWVzc2FnZUZvclRlc3RpbmcoSW5qZWN0ZWRCdW5kbGU6OnNpbmdsZXRvbigpLnBh
Z2UoKS0+cGFnZSgpLCBtZXNzYWdlTmFtZS5nZXQoKSwgbnVsbHB0ciwgJnJldHVybkRhdGEpOwor
ICAgIEFTU0VSVChXS0dldFR5cGVJRChyZXR1cm5EYXRhKSA9PSBXS0Jvb2xlYW5HZXRUeXBlSUQo
KSk7CisgICAgcmV0dXJuIFdLQm9vbGVhbkdldFZhbHVlKGFkb3B0V0soc3RhdGljX2Nhc3Q8V0tC
b29sZWFuUmVmPihyZXR1cm5EYXRhKSkuZ2V0KCkpOworfQorCit1bnNpZ25lZCBsb25nIFRlc3RS
dW5uZXI6OnNlcnZlclRydXN0RXZhbHVhdGlvbkNhbGxiYWNrQ2FsbHNDb3VudCgpCit7CisgICAg
V0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+IG1lc3NhZ2VOYW1lKEFkb3B0V0ssIFdLU3RyaW5nQ3Jl
YXRlV2l0aFVURjhDU3RyaW5nKCJTZXJ2ZXJUcnVzdEV2YWx1YXRpb25DYWxsYmFja0NhbGxzQ291
bnQiKSk7CisgICAgV0tUeXBlUmVmIHJldHVybkRhdGEgPSBudWxscHRyOworICAgIFdLQnVuZGxl
UGFnZVBvc3RTeW5jaHJvbm91c01lc3NhZ2VGb3JUZXN0aW5nKEluamVjdGVkQnVuZGxlOjpzaW5n
bGV0b24oKS5wYWdlKCktPnBhZ2UoKSwgbWVzc2FnZU5hbWUuZ2V0KCksIG51bGxwdHIsICZyZXR1
cm5EYXRhKTsKKyAgICBBU1NFUlQoV0tHZXRUeXBlSUQocmV0dXJuRGF0YSkgPT0gV0tVSW50NjRH
ZXRUeXBlSUQoKSk7CisgICAgcmV0dXJuIFdLVUludDY0R2V0VmFsdWUoYWRvcHRXSyhzdGF0aWNf
Y2FzdDxXS1VJbnQ2NFJlZj4ocmV0dXJuRGF0YSkpLmdldCgpKTsKK30KKwogfSAvLyBuYW1lc3Bh
Y2UgV1RSCmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxl
L1Rlc3RSdW5uZXIuaCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVz
dFJ1bm5lci5oCmluZGV4IGE0MDE5OTlmNDEyZTliZDM5MzJhYjgxYzg0Yjc3NzNkNWRmMDczZjMu
Ljk0YTlhMTUzZmRlZjdjNmMxMGFjNzQ0YWQyNjdmNWM2N2M1MjY3OTIgMTAwNjQ0Ci0tLSBhL1Rv
b2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5oCisrKyBiL1Rv
b2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5oCkBAIC00ODEs
NiArNDgxLDEwIEBAIHB1YmxpYzoKICAgICB2b2lkIGNsZWFuVXBLZXljaGFpbihKU1N0cmluZ1Jl
ZiBhdHRyTGFiZWwpOwogICAgIGJvb2wga2V5RXhpc3RzSW5LZXljaGFpbihKU1N0cmluZ1JlZiBh
dHRyTGFiZWwsIEpTU3RyaW5nUmVmIGFwcGxpY2F0aW9uVGFnQmFzZTY0KTsKIAorICAgIHZvaWQg
c2V0Q2FuSGFuZGxlSFRUUFNTZXJ2ZXJUcnVzdEV2YWx1YXRpb24oYm9vbCBjYW5IYW5kbGUpOwor
ICAgIGJvb2wgY2FuRG9TZXJ2ZXJUcnVzdEV2YWx1YXRpb25Jbk5ldHdvcmtQcm9jZXNzKCk7Cisg
ICAgdW5zaWduZWQgbG9uZyBzZXJ2ZXJUcnVzdEV2YWx1YXRpb25DYWxsYmFja0NhbGxzQ291bnQo
KTsKKwogcHJpdmF0ZToKICAgICBUZXN0UnVubmVyKCk7CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL1dl
YktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5l
ci9UZXN0Q29udHJvbGxlci5jcHAKaW5kZXggMGNmZjcxOTU2ZGI5YzQyOGJiNTE3YjRkNmNkM2Fj
Y2I5NDFiZTRkOC4uOTJlMTYwYTYxNTg5MGQzMzY5MjRjNTYwZjQzM2FiMGVkMjU1YTk0NCAxMDA2
NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5jcHAKKysrIGIv
VG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5jcHAKQEAgLTgyNCw2ICs4MjQs
OCBAQCB2b2lkIFRlc3RDb250cm9sbGVyOjpyZXNldFByZWZlcmVuY2VzVG9Db25zaXN0ZW50VmFs
dWVzKGNvbnN0IFRlc3RPcHRpb25zJiBvcHRpbwogCiAgICAgV0tQcmVmZXJlbmNlc1NldFdlYlNR
TERpc2FibGVkKHByZWZlcmVuY2VzLCBmYWxzZSk7CiAKKyAgICBtX3NlcnZlclRydXN0RXZhbHVh
dGlvbkNhbGxiYWNrQ2FsbHNDb3VudCA9IDA7CisKICAgICBwbGF0Zm9ybVJlc2V0UHJlZmVyZW5j
ZXNUb0NvbnNpc3RlbnRWYWx1ZXMoKTsKIH0KIApAQCAtMjA2MCw2ICsyMDYyLDggQEAgdm9pZCBU
ZXN0Q29udHJvbGxlcjo6ZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKFdLUGFnZVJl
ZiBwYWdlLCBXS0F1dGhlbnQKICAgICAgICAgLy8gQW55IG5vbi1lbXB0eSBjcmVkZW50aWFsIHNp
Z25hbHMgdG8gYWNjZXB0IHRoZSBzZXJ2ZXIgdHJ1c3QuIFNpbmNlIHRoZSBjcm9zcy1wbGF0Zm9y
bSBBUEkKICAgICAgICAgLy8gZG9lc24ndCBleHBvc2UgYSB3YXkgdG8gY3JlYXRlIGEgY3JlZGVu
dGlhbCBmcm9tIHNlcnZlciB0cnVzdCwgd2UgdXNlIGEgcGFzc3dvcmQgY3JlZGVudGlhbC4KIAor
ICAgICAgICBtX3NlcnZlclRydXN0RXZhbHVhdGlvbkNhbGxiYWNrQ2FsbHNDb3VudCsrOworCiAg
ICAgICAgIFdLUmV0YWluUHRyPFdLQ3JlZGVudGlhbFJlZj4gY3JlZGVudGlhbCA9IGFkb3B0V0so
V0tDcmVkZW50aWFsQ3JlYXRlKHRvV0soImFjY2VwdCBzZXJ2ZXIgdHJ1c3QiKS5nZXQoKSwgdG9X
SygiIikuZ2V0KCksIGtXS0NyZWRlbnRpYWxQZXJzaXN0ZW5jZU5vbmUpKTsKICAgICAgICAgV0tB
dXRoZW50aWNhdGlvbkRlY2lzaW9uTGlzdGVuZXJVc2VDcmVkZW50aWFsKGRlY2lzaW9uTGlzdGVu
ZXIsIGNyZWRlbnRpYWwuZ2V0KCkpOwogICAgICAgICByZXR1cm47CkBAIC0zMjIzLDYgKzMyMjcs
MTIgQEAgYm9vbCBUZXN0Q29udHJvbGxlcjo6a2V5RXhpc3RzSW5LZXljaGFpbihjb25zdCBTdHJp
bmcmLCBjb25zdCBTdHJpbmcmKQogewogICAgIHJldHVybiBmYWxzZTsKIH0KKworYm9vbCBUZXN0
Q29udHJvbGxlcjo6Y2FuRG9TZXJ2ZXJUcnVzdEV2YWx1YXRpb25Jbk5ldHdvcmtQcm9jZXNzKCkg
Y29uc3QKK3sKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKICNlbmRpZgogCiB2b2lkIFRlc3RDb250
cm9sbGVyOjpzZW5kRGlzcGxheUNvbmZpZ3VyYXRpb25DaGFuZ2VkTWVzc2FnZUZvclRlc3Rpbmco
KQpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5oIGIv
VG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5oCmluZGV4IDIwNThjNzllY2Zh
YTVkY2UzMTRmYTYyODUwZjdkY2JkMGJhM2ZhMjcuLjI1ZWM5MDRiZTQyYjJjZGMzMDk0ZTFlYmVh
YjNkN2Y5N2Q0YTk1ZTIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENv
bnRyb2xsZXIuaAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmgK
QEAgLTI4MSw2ICsyODEsOSBAQCBwdWJsaWM6CiAgICAgVUlLZXlib2FyZElucHV0TW9kZSAqb3Zl
cnJpZGRlbktleWJvYXJkSW5wdXRNb2RlKCkgY29uc3QgeyByZXR1cm4gbV9vdmVycmlkZGVuS2V5
Ym9hcmRJbnB1dE1vZGUuZ2V0KCk7IH0KICNlbmRpZgogCisgICAgYm9vbCBjYW5Eb1NlcnZlclRy
dXN0RXZhbHVhdGlvbkluTmV0d29ya1Byb2Nlc3MoKSBjb25zdDsKKyAgICB1aW50NjRfdCBzZXJ2
ZXJUcnVzdEV2YWx1YXRpb25DYWxsYmFja0NhbGxzQ291bnQoKSBjb25zdCB7IHJldHVybiBtX3Nl
cnZlclRydXN0RXZhbHVhdGlvbkNhbGxiYWNrQ2FsbHNDb3VudDsgfQorCiBwcml2YXRlOgogICAg
IFdLUmV0YWluUHRyPFdLUGFnZUNvbmZpZ3VyYXRpb25SZWY+IGdlbmVyYXRlUGFnZUNvbmZpZ3Vy
YXRpb24oV0tDb250ZXh0Q29uZmlndXJhdGlvblJlZik7CiAgICAgV0tSZXRhaW5QdHI8V0tDb250
ZXh0Q29uZmlndXJhdGlvblJlZj4gZ2VuZXJhdGVDb250ZXh0Q29uZmlndXJhdGlvbigpIGNvbnN0
OwpAQCAtNTM0LDYgKzUzNyw4IEBAIHByaXZhdGU6CiAgICAgICAgIHsgfQogICAgIH07CiAgICAg
SGFzaE1hcDx1aW50NjRfdCwgQWJhbmRvbmVkRG9jdW1lbnRJbmZvPiBtX2FiYW5kb25lZERvY3Vt
ZW50SW5mbzsKKworICAgIHVpbnQ2NF90IG1fc2VydmVyVHJ1c3RFdmFsdWF0aW9uQ2FsbGJhY2tD
YWxsc0NvdW50IHsgMCB9OwogfTsKIAogc3RydWN0IFRlc3RDb21tYW5kIHsKZGlmZiAtLWdpdCBh
L1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdEludm9jYXRpb24uY3BwIGIvVG9vbHMvV2ViS2l0
VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlvbi5jcHAKaW5kZXggMWZlZGQ4YjFmMWVmZDU2OTczYTRl
M2MxMzc3YzJmMTZiM2E4MzJjMS4uNDI5Y2UyOWI1MjAxMThkZjI0OGEwMzFhZjdlNDUzODJiMzU4
NzQ3NCAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlvbi5j
cHAKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlvbi5jcHAKQEAgLTE1
MjIsNiArMTUyMiwyMyBAQCBXS1JldGFpblB0cjxXS1R5cGVSZWY+IFRlc3RJbnZvY2F0aW9uOjpk
aWRSZWNlaXZlU3luY2hyb25vdXNNZXNzYWdlRnJvbUluamVjdGVkQgogICAgICAgICByZXR1cm4g
cmVzdWx0OwogICAgIH0KIAorICAgIGlmIChXS1N0cmluZ0lzRXF1YWxUb1VURjhDU3RyaW5nKG1l
c3NhZ2VOYW1lLCAiU2V0Q2FuSGFuZGxlSFRUUFNTZXJ2ZXJUcnVzdEV2YWx1YXRpb24iKSkgewor
ICAgICAgICBBU1NFUlQoV0tHZXRUeXBlSUQobWVzc2FnZUJvZHkpID09IFdLQm9vbGVhbkdldFR5
cGVJRCgpKTsKKyAgICAgICAgYXV0byBjYW5IYW5kbGUgPSBXS0Jvb2xlYW5HZXRWYWx1ZShzdGF0
aWNfY2FzdDxXS0Jvb2xlYW5SZWY+KG1lc3NhZ2VCb2R5KSk7CisgICAgICAgIFdLQ29udGV4dFNl
dENhbkhhbmRsZUhUVFBTU2VydmVyVHJ1c3RFdmFsdWF0aW9uKFRlc3RDb250cm9sbGVyOjpzaW5n
bGV0b24oKS5jb250ZXh0KCksIGNhbkhhbmRsZSk7CisgICAgICAgIHJldHVybiBudWxscHRyOwor
ICAgIH0KKworICAgIGlmIChXS1N0cmluZ0lzRXF1YWxUb1VURjhDU3RyaW5nKG1lc3NhZ2VOYW1l
LCAiQ2FuRG9TZXJ2ZXJUcnVzdEV2YWx1YXRpb25Jbk5ldHdvcmtQcm9jZXNzIikpIHsKKyAgICAg
ICAgV0tSZXRhaW5QdHI8V0tUeXBlUmVmPiByZXN1bHQoQWRvcHRXSywgV0tCb29sZWFuQ3JlYXRl
KFRlc3RDb250cm9sbGVyOjpzaW5nbGV0b24oKS5jYW5Eb1NlcnZlclRydXN0RXZhbHVhdGlvbklu
TmV0d29ya1Byb2Nlc3MoKSkpOworICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0KKworICAg
IGlmIChXS1N0cmluZ0lzRXF1YWxUb1VURjhDU3RyaW5nKG1lc3NhZ2VOYW1lLCAiU2VydmVyVHJ1
c3RFdmFsdWF0aW9uQ2FsbGJhY2tDYWxsc0NvdW50IikpIHsKKyAgICAgICAgV0tSZXRhaW5QdHI8
V0tUeXBlUmVmPiByZXN1bHQoQWRvcHRXSywgV0tVSW50NjRDcmVhdGUoVGVzdENvbnRyb2xsZXI6
OnNpbmdsZXRvbigpLnNlcnZlclRydXN0RXZhbHVhdGlvbkNhbGxiYWNrQ2FsbHNDb3VudCgpKSk7
CisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfQorCiAgICAgQVNTRVJUX05PVF9SRUFDSEVE
KCk7CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0
UnVubmVyL2NvY29hL1Rlc3RDb250cm9sbGVyQ29jb2EubW0gYi9Ub29scy9XZWJLaXRUZXN0UnVu
bmVyL2NvY29hL1Rlc3RDb250cm9sbGVyQ29jb2EubW0KaW5kZXggMzYzYTJjNmUxMTRkNTdkOGJh
ZjE3ODFkZjYxYTEzNjRjNTIwYzIwOS4uZTQ5ODUwYjlkNmE1OGMyMDA4YzhiZTdkMTI4ZWJkYjZh
YWQzOWM5MiAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9jb2NvYS9UZXN0Q29u
dHJvbGxlckNvY29hLm1tCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvY29jb2EvVGVzdENv
bnRyb2xsZXJDb2NvYS5tbQpAQCAtNTIsNiArNTIsMTAgQEAKICNpbXBvcnQgPFdlYktpdC9fV0tV
c2VyQ29udGVudEV4dGVuc2lvblN0b3JlUHJpdmF0ZS5oPgogI2ltcG9ydCA8d3RmL01haW5UaHJl
YWQuaD4KIAorQGludGVyZmFjZSBOU1VSTFNlc3Npb24gKCkKKysgKHZvaWQpX3N0cmljdFRydXN0
RXZhbHVhdGU6KE5TVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2UgKiljaGFsbGVuZ2UgcXVldWU6
KGRpc3BhdGNoX3F1ZXVlX3QpcXVldWUgY29tcGxldGlvbkhhbmRsZXI6KHZvaWQgKF4pKE5TVVJM
QXV0aGVudGljYXRpb25DaGFsbGVuZ2UgKmNoYWxsZW5nZSwgT1NTdGF0dXMgdHJ1c3RSZXN1bHQp
KWNiOworQGVuZAorCiBuYW1lc3BhY2UgV1RSIHsKIAogc3RhdGljIFdLV2ViVmlld0NvbmZpZ3Vy
YXRpb24gKmdsb2JhbFdlYlZpZXdDb25maWd1cmF0aW9uOwpAQCAtNDA1LDQgKzQwOSw5IEBAIHZv
aWQgVGVzdENvbnRyb2xsZXI6OmFsbG93Q2FjaGVTdG9yYWdlUXVvdGFJbmNyZWFzZSgpCiAjZW5k
aWYKIH0KIAorYm9vbCBUZXN0Q29udHJvbGxlcjo6Y2FuRG9TZXJ2ZXJUcnVzdEV2YWx1YXRpb25J
bk5ldHdvcmtQcm9jZXNzKCkgY29uc3QKK3sKKyAgICByZXR1cm4gIFtOU1VSTFNlc3Npb24gcmVz
cG9uZHNUb1NlbGVjdG9yOkBzZWxlY3Rvcihfc3RyaWN0VHJ1c3RFdmFsdWF0ZTogcXVldWU6IGNv
bXBsZXRpb25IYW5kbGVyOildOworfQorCiB9IC8vIG5hbWVzcGFjZSBXVFIKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA0ZGM5
NGU4NmY3YTZiMTk3NDg3ZmVmNzAzODA3ZGZjZWUyZWFjMjBkLi4wMWUwYWZkYWIxNmNmZWVmZjQ3
MjlhMTYxMDE3NGVhNDE2Zjk1YjdkIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cK
KysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTktMDEtMjgg
IFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgorCisgICAgICAgIEFkb3B0IG5ldyBT
UEkgdG8gZXZhbHVhdGUgc2VydmVyIGNlcnRpZmljYXRlIHRydXN0CisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTMzNTUKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGh0dHAvdGVzdHMvc3NsL2NlcnRpZmlj
YXRlLXZhbGlkYXRpb24tZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3Rz
L3NzbC9jZXJ0aWZpY2F0ZS12YWxpZGF0aW9uLmh0bWw6IEFkZGVkLgorCiAyMDE5LTAxLTI4ICBB
bnRvaW5lIFF1aW50ICA8Z3Jhb3V0c0BhcHBsZS5jb20+CiAKICAgICAgICAgTGltaXQgdXNlci1h
Z2VudCBpbnRlcmFjdGlvbnMgYmFzZWQgb24gdGhlIHRvdWNoLWFjdGlvbiBwcm9wZXJ0eSBvbiBp
T1MKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvc3NsL2NlcnRpZmljYXRlLXZh
bGlkYXRpb24tZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zc2wvY2VydGlm
aWNhdGUtdmFsaWRhdGlvbi1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZGE4NGEwNTc3ZWVmOWEy
YzUwZWE0OTdkMmRmYzU3MGYyN2Y2M2QyNAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2h0dHAvdGVzdHMvc3NsL2NlcnRpZmljYXRlLXZhbGlkYXRpb24tZXhwZWN0ZWQudHh0CkBAIC0w
LDAgKzEsMyBAQAorCitQQVNTIENlcnRpZmljYXRlIHZhbGlkYXRpb24gaW4gTmV0d29yayBQcm9j
ZXNzIAorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NzbC9jZXJ0aWZpY2F0
ZS12YWxpZGF0aW9uLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NzbC9jZXJ0aWZpY2F0
ZS12YWxpZGF0aW9uLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMGI3NDFlNzdiZTkwM2EwZDI0ZjBmM2Y1MWI2
NmU3N2ZkYTFjZjY5MQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMv
c3NsL2NlcnRpZmljYXRlLXZhbGlkYXRpb24uaHRtbApAQCAtMCwwICsxLDQzIEBACis8IURPQ1RZ
UEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8dGl0bGU+Q2VydGlmaWNhdGUgdmFsaWRhdGlvbiBp
biBOZXR3b3JrIFByb2Nlc3M8L3RpdGxlPgorPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhh
cm5lc3MuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3Ny
ZXBvcnQuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8c2NyaXB0PgorZnVuY3Rpb24g
d2l0aF9pZnJhbWUodXJsKSB7CisgICAgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uKHJlc29s
dmUpIHsKKyAgICAgICAgdmFyIGZyYW1lID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnaWZyYW1l
Jyk7CisgICAgICAgIGZyYW1lLmNsYXNzTmFtZSA9ICd0ZXN0LWlmcmFtZSc7CisgICAgICAgIGZy
YW1lLnNyYyA9IHVybDsKKyAgICAgICAgZnJhbWUub25sb2FkID0gZnVuY3Rpb24oKSB7IHJlc29s
dmUoZnJhbWUpOyB9OworICAgICAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGZyYW1lKTsK
KyAgICB9KTsKK30KKworYXN5bmMgZnVuY3Rpb24gZG9UZXN0KCkKK3sKKyAgICBhc3NlcnRfdHJ1
ZSghIXdpbmRvdy50ZXN0UnVubmVyLCAiVGVzdCByZXF1aXJlcyB0ZXN0UnVubmVyIik7CisKKyAg
ICBpZiAoIXdpbmRvdy50ZXN0UnVubmVyLmNhbkRvU2VydmVyVHJ1c3RFdmFsdWF0aW9uSW5OZXR3
b3JrUHJvY2VzcykKKyAgICAgICAgcmV0dXJuOworCisgICAgd2luZG93LnRlc3RSdW5uZXIuc2V0
QWxsb3dzQW55U1NMQ2VydGlmaWNhdGUoZmFsc2UpOworICAgIHdpbmRvdy50ZXN0UnVubmVyLnRl
cm1pbmF0ZU5ldHdvcmtQcm9jZXNzKCk7CisgICAgd2luZG93LnRlc3RSdW5uZXIuc2V0Q2FuSGFu
ZGxlSFRUUFNTZXJ2ZXJUcnVzdEV2YWx1YXRpb24oZmFsc2UpOworCisgICAgY29uc3QgY3VycmVu
dENhbGxiYWNrQ291bnRzID0gd2luZG93LnRlc3RSdW5uZXIuc2VydmVyVHJ1c3RFdmFsdWF0aW9u
Q2FsbGJhY2tDYWxsc0NvdW50OworCisgICAgY29uc3QgaWZyYW1lID0gYXdhaXQgd2l0aF9pZnJh
bWUoImh0dHBzOi8vbG9jYWxob3N0Ojg0NDMiKTsKKyAgICBpZnJhbWUucmVtb3ZlKCk7CisKKyAg
ICBhc3NlcnRfZXF1YWxzKHdpbmRvdy50ZXN0UnVubmVyLnNlcnZlclRydXN0RXZhbHVhdGlvbkNh
bGxiYWNrQ2FsbHNDb3VudCAtIGN1cnJlbnRDYWxsYmFja0NvdW50cywgMSk7Cit9CisKK2RvVGVz
dCgpLnRoZW4oZG9uZSwgKGUpID0+IHsgYXNzZXJ0X3VucmVhY2hlZCgidGVzdCBmYWlsZWQ6ICIg
KyBlKTsgZG9uZSgpOyB9KTsKKworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>360478</attachid>
            <date>2019-01-29 11:14:20 -0800</date>
            <delta_ts>2019-01-29 13:56:14 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-193355-20190129111419.patch</filename>
            <type>text/plain</type>
            <size>27026</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQwNTg4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGU5MGE0OWQ2OGFkNmVlMmY1
YTA3Y2Q4OGM0MTM2N2UxOTA1MjQyYTAuLjQ4NTdjM2JmMWI2NTYxODBmMjEzYzBiYjk0YzZhYzNj
MjNjNWU1YjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjAgQEAKKzIwMTktMDEtMjkgIFlvdWVubiBG
YWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgorCisgICAgICAgIEFkb3B0IG5ldyBTUEkgdG8gZXZh
bHVhdGUgc2VydmVyIGNlcnRpZmljYXRlIHRydXN0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTMzNTUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBVc2UgbmV3IFNQSSBwcm92aWRlZCBpbiBOU1VSTFNlc3Np
b24gdG8gZXZhbHVhdGUgc2VydmVyIGNlcnRpZmljYXRlcy4KKyAgICAgICAgSWYgc3VjY2Vzc2Z1
bCwgbGV0IGxvYWRpbmcgcHJvY2VlZCBhcyB1c3VhbC4KKyAgICAgICAgT3RoZXJ3aXNlLCBnbyB0
byB0aGUgVUlQcm9jZXNzIHRvIGFzayBmb3IgYSBkZWNpc2lvbiBvbiBjb250aW51aW5nIHRoZSBs
b2FkIG9yIG5vdC4KKworICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtTZXNz
aW9uQ29jb2EuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrU2Vzc2lv
bkNvY29hLm1tOgorICAgICAgICAoY2FuTlNVUkxTZXNzaW9uVHJ1c3RFdmFsdWF0ZSk6CisgICAg
ICAgICgtW1dLTmV0d29ya1Nlc3Npb25EZWxlZ2F0ZSBVUkxTZXNzaW9uOnRhc2s6ZGlkUmVjZWl2
ZUNoYWxsZW5nZTpjb21wbGV0aW9uSGFuZGxlcjpdKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29y
a1Nlc3Npb25Db2NvYTo6Y29udGludWVEaWRSZWNlaXZlQ2hhbGxlbmdlKToKKwogMjAxOS0wMS0y
OCAgQW50b2luZSBRdWludCAgPGdyYW91dHNAYXBwbGUuY29tPgogCiAgICAgICAgIExpbWl0IHVz
ZXItYWdlbnQgaW50ZXJhY3Rpb25zIGJhc2VkIG9uIHRoZSB0b3VjaC1hY3Rpb24gcHJvcGVydHkg
b24gaU9TCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybS5oIGIvU291cmNlL1dU
Ri93dGYvUGxhdGZvcm0uaAppbmRleCBhYTIxYzVmMmE4YzRhMTE5YjM1MmQ3NWE2OGYwZmUxZjY1
MDkxMWRiLi41MGVhMjEzNWY0ODkwOWU5ZmE5MjgxZWQ0NTlkZDExNzI1YmNkNWRhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybS5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL1BsYXRm
b3JtLmgKQEAgLTE0ODAsNiArMTQ4MCwxMCBAQAogI2RlZmluZSBIQVZFX0NGTkVUV09SS19PVkVS
UklERV9TRVNTSU9OX0NPT0tJRV9BQ0NFUFRfUE9MSUNZIDEKICNlbmRpZgogCisjaWYgKFBMQVRG
T1JNKE1BQykgJiYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDE1MDApIHx8
IChQTEFURk9STShJT1NfRkFNSUxZKSAmJiBfX0lQSE9ORV9PU19WRVJTSU9OX01JTl9SRVFVSVJF
RCA+PSAxMzAwMDApCisjZGVmaW5lIEhBVkVfQ0ZORVRXT1JLX05TVVJMU0VTU0lPTl9TVFJJQ1RS
VVNURVZBTFVBVEUgMQorI2VuZGlmCisKICNpZiAoUExBVEZPUk0oTUFDKSAmJiBfX01BQ19PU19Y
X1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwMTUwMCkgfHwgKFBMQVRGT1JNKElPU19GQU1JTFkp
ICYmIF9fSVBIT05FX09TX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEzMDAwMCkKICNkZWZpbmUg
SEFWRV9DRk5FVFdPUktfTkVHT1RJQVRFRF9TU0xfUFJPVE9DT0xfQ0lQSEVSIDEKICNlbmRpZgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUEFML3BhbC9zcGkvY2YvQ0ZOZXR3b3JrU1BJLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL3NwaS9jZi9DRk5ldHdvcmtTUEkuaAppbmRleCA5ZTIx
MWE2NjBmM2U5OTZjZjYyNmZhMjg5MzUzOWM5YTBjYjg3ODY0Li4yZmQ0ODJkOGY0ODJmZDdhMTdm
OGEzZmY1YmM2ZTkwZWU0NmFmOTlkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFs
L3NwaS9jZi9DRk5ldHdvcmtTUEkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL3NwaS9j
Zi9DRk5ldHdvcmtTUEkuaApAQCAtMjMxLDYgKzIzMSwxMiBAQCB0eXBlZGVmIE5TX0VOVU0oTlNJ
bnRlZ2VyLCBOU1VSTFNlc3Npb25Db21wYW5pb25Qcm94eVByZWZlcmVuY2UpIHsKIEBlbmQKICNl
bmRpZgogCisjaWYgSEFWRShDRk5FVFdPUktfTlNVUkxTRVNTSU9OX1NUUklDVFJVU1RFVkFMVUFU
RSkKK0BpbnRlcmZhY2UgTlNVUkxTZXNzaW9uIChTUEkpCisrICh2b2lkKV9zdHJpY3RUcnVzdEV2
YWx1YXRlOihOU1VSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlICopY2hhbGxlbmdlIHF1ZXVlOihk
aXNwYXRjaF9xdWV1ZV90KXF1ZXVlIGNvbXBsZXRpb25IYW5kbGVyOih2b2lkICheKShOU1VSTEF1
dGhlbnRpY2F0aW9uQ2hhbGxlbmdlICpjaGFsbGVuZ2UsIE9TU3RhdHVzIHRydXN0UmVzdWx0KSlj
YjsKK0BlbmQKKyNlbmRpZgorCiBleHRlcm4gTlNTdHJpbmcgKiBjb25zdCBOU1VSTEF1dGhlbnRp
Y2F0aW9uTWV0aG9kT0F1dGg7CiAKICNlbmRpZiAvLyBkZWZpbmVkKF9fT0JKQ19fKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrU2Vzc2lvbkNv
Y29hLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtTZXNzaW9u
Q29jb2EuaAppbmRleCAwZDY3MWMyOWNhMDk3Nzk5NWFhYjQ5ZWNmZDYyMjgxOWY2MTBjZDZiLi4x
ODYyMWE0OGUzMzRlZTNlNDhiM2ZkMzA0NzBlNTc4YmE4NjRhZWZmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtTZXNzaW9uQ29jb2EuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtTZXNzaW9uQ29jb2Eu
aApAQCAtNjIsNiArNjIsOCBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMgYm9vbCBhbGxvd3NTcGVj
aWZpY0hUVFBTQ2VydGlmaWNhdGVGb3JIb3N0KGNvbnN0IFdlYkNvcmU6OkF1dGhlbnRpY2F0aW9u
Q2hhbGxlbmdlJik7CiAKKyAgICB2b2lkIGNvbnRpbnVlRGlkUmVjZWl2ZUNoYWxsZW5nZShjb25z
dCBXZWJDb3JlOjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYsIE5ldHdvcmtEYXRhVGFza0NvY29h
OjpUYXNrSWRlbnRpZmllciwgTmV0d29ya0RhdGFUYXNrQ29jb2EqLCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKFdlYktpdDo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2VEaXNwb3NpdGlvbiwgY29uc3Qg
V2ViQ29yZTo6Q3JlZGVudGlhbCYpPiYmKTsKKwogcHJpdmF0ZToKICAgICBOZXR3b3JrU2Vzc2lv
bkNvY29hKE5ldHdvcmtQcm9jZXNzJiwgTmV0d29ya1Nlc3Npb25DcmVhdGlvblBhcmFtZXRlcnMm
Jik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0
d29ya1Nlc3Npb25Db2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2Ev
TmV0d29ya1Nlc3Npb25Db2NvYS5tbQppbmRleCA0YTFkNzkyMTBhZmE1OTZlNGIwZmFmY2U4MThm
ZjRmNjgyYjM4YjRhLi42ODQxNWE4NjRlOTYzMWNmMTAxYzg0OWFlZGM3MzZmNmY0MjJjMjhiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtTZXNz
aW9uQ29jb2EubW0KKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3
b3JrU2Vzc2lvbkNvY29hLm1tCkBAIC01MjEsNiArNTIxLDMxIEBAIHN0YXRpYyBOU1VSTFJlcXVl
c3QqIHVwZGF0ZUlnbm9yZVN0cmljdFRyYW5zcG9ydFNlY3VyaXR5U2V0dGluZ0lmTmVjZXNzYXJ5
KE5TVVJMCiAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHByb3Bvc2VkUmVzcG9uc2UpOwogfQog
CisjaWYgSEFWRShDRk5FVFdPUktfTlNVUkxTRVNTSU9OX1NUUklDVFJVU1RFVkFMVUFURSkKK3N0
YXRpYyBib29sIGNhbk5TVVJMU2Vzc2lvblRydXN0RXZhbHVhdGUoKQoreworICAgIHJldHVybiBb
TlNVUkxTZXNzaW9uIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoX3N0cmljdFRydXN0RXZh
bHVhdGU6IHF1ZXVlOiBjb21wbGV0aW9uSGFuZGxlcjopXTsKK30KKworc3RhdGljIGlubGluZSB2
b2lkIHByb2Nlc3NTZXJ2ZXJUcnVzdEV2YWx1YXRpb24oTmV0d29ya1Nlc3Npb25Db2NvYSAqc2Vz
c2lvbiwgTlNVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSAqY2hhbGxlbmdlLCBPU1N0YXR1cyB0
cnVzdFJlc3VsdCwgTmV0d29ya0RhdGFUYXNrQ29jb2E6OlRhc2tJZGVudGlmaWVyIHRhc2tJZGVu
dGlmaWVyLCBOZXR3b3JrRGF0YVRhc2tDb2NvYSogbmV0d29ya0RhdGFUYXNrLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKE5TVVJMU2Vzc2lvbkF1dGhDaGFsbGVuZ2VEaXNwb3NpdGlvbiBkaXNwb3Np
dGlvbiwgTlNVUkxDcmVkZW50aWFsICpjcmVkZW50aWFsKT4mJiBjb21wbGV0aW9uSGFuZGxlcikK
K3sKKyAgICBpZiAodHJ1c3RSZXN1bHQgPT0gbm9FcnIgfHwgbmV0d29ya0RhdGFUYXNrLT5zdGF0
ZSgpID09IE5ldHdvcmtEYXRhVGFzazo6U3RhdGU6OkNhbmNlbGluZyB8fCBuZXR3b3JrRGF0YVRh
c2stPnN0YXRlKCkgPT0gTmV0d29ya0RhdGFUYXNrOjpTdGF0ZTo6Q29tcGxldGVkKSB7CisgICAg
ICAgIGNvbXBsZXRpb25IYW5kbGVyKE5TVVJMU2Vzc2lvbkF1dGhDaGFsbGVuZ2VQZXJmb3JtRGVm
YXVsdEhhbmRsaW5nLCBuaWwpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgUmV0YWlu
UHRyPFNlY1RydXN0UmVmPiBzZWNUcnVzdCA9IGNoYWxsZW5nZS5wcm90ZWN0aW9uU3BhY2Uuc2Vy
dmVyVHJ1c3Q7CisgICAgc2Vzc2lvbi0+Y29udGludWVEaWRSZWNlaXZlQ2hhbGxlbmdlKGNoYWxs
ZW5nZSwgdGFza0lkZW50aWZpZXIsIG5ldHdvcmtEYXRhVGFzaywgW2NvbXBsZXRpb25IYW5kbGVy
ID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlciksIHNlY1RydXN0ID0gV1RGTW92ZShzZWNUcnVz
dCldIChXZWJLaXQ6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlRGlzcG9zaXRpb24gZGlzcG9zaXRp
b24sIGNvbnN0IFdlYkNvcmU6OkNyZWRlbnRpYWwmIGNyZWRlbnRpYWwpIG11dGFibGUgeworICAg
ICAgICAvLyBGSVhNRTogVUlQcm9jZXNzIHNob3VsZCBzZW5kIHVzIGJhY2sgbm9uIG5pbCBjcmVk
ZW50aWFscyBidXQgdGhlIGNyZWRlbnRpYWwgSVBDIGVuY29kZXIgY3VycmVudGx5IG9ubHkgc2Vy
aWFsaXplcyBucyBjcmVkZW50aWFscyBmb3IgdXNlcm5hbWUvcGFzc3dvcmQuCisgICAgICAgIGlm
IChkaXNwb3NpdGlvbiA9PSBXZWJLaXQ6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlRGlzcG9zaXRp
b246OlVzZUNyZWRlbnRpYWwgJiYgIWNyZWRlbnRpYWwubnNDcmVkZW50aWFsKCkpIHsKKyAgICAg
ICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKE5TVVJMU2Vzc2lvbkF1dGhDaGFsbGVuZ2VVc2VDcmVk
ZW50aWFsLCBbTlNVUkxDcmVkZW50aWFsIGNyZWRlbnRpYWxGb3JUcnVzdDogc2VjVHJ1c3QuZ2V0
KCldKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICBjb21wbGV0aW9u
SGFuZGxlcih0b05TVVJMU2Vzc2lvbkF1dGhDaGFsbGVuZ2VEaXNwb3NpdGlvbihkaXNwb3NpdGlv
biksIGNyZWRlbnRpYWwubnNDcmVkZW50aWFsKCkpOworICAgIH0pOworfQorI2VuZGlmCisKIC0g
KHZvaWQpVVJMU2Vzc2lvbjooTlNVUkxTZXNzaW9uICopc2Vzc2lvbiB0YXNrOihOU1VSTFNlc3Np
b25UYXNrICopdGFzayBkaWRSZWNlaXZlQ2hhbGxlbmdlOihOU1VSTEF1dGhlbnRpY2F0aW9uQ2hh
bGxlbmdlICopY2hhbGxlbmdlIGNvbXBsZXRpb25IYW5kbGVyOih2b2lkICheKShOU1VSTFNlc3Np
b25BdXRoQ2hhbGxlbmdlRGlzcG9zaXRpb24gZGlzcG9zaXRpb24sIE5TVVJMQ3JlZGVudGlhbCAq
Y3JlZGVudGlhbCkpY29tcGxldGlvbkhhbmRsZXIKIHsKICAgICBpZiAoIV9zZXNzaW9uKSB7CkBA
IC01NDIsNjIgKzU2NywyMyBAQCBzdGF0aWMgTlNVUkxSZXF1ZXN0KiB1cGRhdGVJZ25vcmVTdHJp
Y3RUcmFuc3BvcnRTZWN1cml0eVNldHRpbmdJZk5lY2Vzc2FyeShOU1VSTAogICAgICAgICBpZiAo
TmV0d29ya1Nlc3Npb25Db2NvYTo6YWxsb3dzU3BlY2lmaWNIVFRQU0NlcnRpZmljYXRlRm9ySG9z
dChjaGFsbGVuZ2UpKQogICAgICAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKE5TVVJM
U2Vzc2lvbkF1dGhDaGFsbGVuZ2VVc2VDcmVkZW50aWFsLCBbTlNVUkxDcmVkZW50aWFsIGNyZWRl
bnRpYWxGb3JUcnVzdDpjaGFsbGVuZ2UucHJvdGVjdGlvblNwYWNlLnNlcnZlclRydXN0XSk7CiAK
KyNpZiBIQVZFKENGTkVUV09SS19OU1VSTFNFU1NJT05fU1RSSUNUUlVTVEVWQUxVQVRFKQorICAg
ICAgICBpZiAoY2FuTlNVUkxTZXNzaW9uVHJ1c3RFdmFsdWF0ZSgpKSB7CisgICAgICAgICAgICBh
dXRvKiBuZXR3b3JrRGF0YVRhc2sgPSBbc2VsZiBleGlzdGluZ1Rhc2s6dGFza107CisgICAgICAg
ICAgICBhdXRvIGRlY2lzaW9uSGFuZGxlciA9IG1ha2VCbG9ja1B0cihbX3Nlc3Npb24gPSBfc2Vz
c2lvbi5jb3B5UmVmKCksIGNvbXBsZXRpb25IYW5kbGVyID0gbWFrZUJsb2NrUHRyKGNvbXBsZXRp
b25IYW5kbGVyKSwgdGFza0lkZW50aWZpZXIsIG5ldHdvcmtEYXRhVGFzayA9IFJlZlB0cjxOZXR3
b3JrRGF0YVRhc2tDb2NvYT4obmV0d29ya0RhdGFUYXNrKV0oTlNVUkxBdXRoZW50aWNhdGlvbkNo
YWxsZW5nZSAqY2hhbGxlbmdlLCBPU1N0YXR1cyB0cnVzdFJlc3VsdCkgbXV0YWJsZSB7CisgICAg
ICAgICAgICAgICAgcHJvY2Vzc1NlcnZlclRydXN0RXZhbHVhdGlvbihfc2Vzc2lvbi5nZXQoKSwg
Y2hhbGxlbmdlLCB0cnVzdFJlc3VsdCwgdGFza0lkZW50aWZpZXIsIG5ldHdvcmtEYXRhVGFzay5n
ZXQoKSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOworICAgICAgICAgICAgfSk7CisgICAg
ICAgICAgICBbTlNVUkxTZXNzaW9uIF9zdHJpY3RUcnVzdEV2YWx1YXRlOmNoYWxsZW5nZSBxdWV1
ZTpbTlNPcGVyYXRpb25RdWV1ZSBtYWluUXVldWVdLnVuZGVybHlpbmdRdWV1ZSBjb21wbGV0aW9u
SGFuZGxlcjpkZWNpc2lvbkhhbmRsZXIuZ2V0KCldOworICAgICAgICAgICAgcmV0dXJuOworICAg
ICAgICB9CisjZW5kaWYKICAgICAgICAgLy8gSGFuZGxlIHNlcnZlciB0cnVzdCBldmFsdWF0aW9u
IGF0IHBsYXRmb3JtLWxldmVsIGlmIHJlcXVlc3RlZCwgZm9yIHBlcmZvcm1hbmNlIHJlYXNvbnMg
YW5kIHRvIHVzZSBBVFMgZGVmYXVsdHMuCiAgICAgICAgIGlmICghX3Nlc3Npb24tPm5ldHdvcmtQ
cm9jZXNzKCkuY2FuSGFuZGxlSFRUUFNTZXJ2ZXJUcnVzdEV2YWx1YXRpb24oKSkKICAgICAgICAg
ICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxlcihOU1VSTFNlc3Npb25BdXRoQ2hhbGxlbmdlUmVq
ZWN0UHJvdGVjdGlvblNwYWNlLCBuaWwpOwogICAgIH0KLQotICAgIGlmIChhdXRvKiBuZXR3b3Jr
RGF0YVRhc2sgPSBbc2VsZiBleGlzdGluZ1Rhc2s6dGFza10pIHsKLSAgICAgICAgV2ViQ29yZTo6
QXV0aGVudGljYXRpb25DaGFsbGVuZ2UgYXV0aGVudGljYXRpb25DaGFsbGVuZ2UoY2hhbGxlbmdl
KTsKLSAgICAgICAgYXV0byBjb21wbGV0aW9uSGFuZGxlckNvcHkgPSBCbG9ja19jb3B5KGNvbXBs
ZXRpb25IYW5kbGVyKTsKLSAgICAgICAgYXV0byBzZXNzaW9uSUQgPSBfc2Vzc2lvbi0+c2Vzc2lv
bklEKCk7Ci0gICAgICAgIGF1dG8gY2hhbGxlbmdlQ29tcGxldGlvbkhhbmRsZXIgPSBbbmV0d29y
a1Byb2Nlc3MgPSBtYWtlUmVmKF9zZXNzaW9uLT5uZXR3b3JrUHJvY2VzcygpKSwgY29tcGxldGlv
bkhhbmRsZXJDb3B5LCBzZXNzaW9uSUQsIGF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLCB0YXNrSWRl
bnRpZmllciwgcGFydGl0aW9uID0gbmV0d29ya0RhdGFUYXNrLT5wYXJ0aXRpb24oKV0oV2ViS2l0
OjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZURpc3Bvc2l0aW9uIGRpc3Bvc2l0aW9uLCBjb25zdCBX
ZWJDb3JlOjpDcmVkZW50aWFsJiBjcmVkZW50aWFsKQotICAgICAgICB7Ci0jaWYgIUxPR19ESVNB
QkxFRAotICAgICAgICAgICAgTE9HKE5ldHdvcmtTZXNzaW9uLCAiJWxsdSBkaWRSZWNlaXZlQ2hh
bGxlbmdlIGNvbXBsZXRpb25IYW5kbGVyICVkIiwgdGFza0lkZW50aWZpZXIsIGRpc3Bvc2l0aW9u
KTsKLSNlbHNlCi0gICAgICAgICAgICBVTlVTRURfUEFSQU0odGFza0lkZW50aWZpZXIpOwotI2Vu
ZGlmCi0jaWYgIVVTRShDUkVERU5USUFMX1NUT1JBR0VfV0lUSF9ORVRXT1JLX1NFU1NJT04pCi0g
ICAgICAgICAgICBVTlVTRURfUEFSQU0oc2Vzc2lvbklEKTsKLSAgICAgICAgICAgIFVOVVNFRF9Q
QVJBTShhdXRoZW50aWNhdGlvbkNoYWxsZW5nZSk7Ci0jZWxzZQotICAgICAgICAgICAgaWYgKGNy
ZWRlbnRpYWwucGVyc2lzdGVuY2UoKSA9PSBXZWJDb3JlOjpDcmVkZW50aWFsUGVyc2lzdGVuY2VG
b3JTZXNzaW9uICYmIGF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLnByb3RlY3Rpb25TcGFjZSgpLmlz
UGFzc3dvcmRCYXNlZCgpKSB7Ci0KLSAgICAgICAgICAgICAgICBXZWJDb3JlOjpDcmVkZW50aWFs
IG5vblBlcnNpc3RlbnRDcmVkZW50aWFsKGNyZWRlbnRpYWwudXNlcigpLCBjcmVkZW50aWFsLnBh
c3N3b3JkKCksIFdlYkNvcmU6OkNyZWRlbnRpYWxQZXJzaXN0ZW5jZU5vbmUpOwotICAgICAgICAg
ICAgICAgIFVSTCB1cmxUb1N0b3JlOwotICAgICAgICAgICAgICAgIGlmIChhdXRoZW50aWNhdGlv
bkNoYWxsZW5nZS5mYWlsdXJlUmVzcG9uc2UoKS5odHRwU3RhdHVzQ29kZSgpID09IDQwMSkKLSAg
ICAgICAgICAgICAgICAgICAgdXJsVG9TdG9yZSA9IGF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLmZh
aWx1cmVSZXNwb25zZSgpLnVybCgpOwotICAgICAgICAgICAgICAgIGlmIChhdXRvIHN0b3JhZ2VT
ZXNzaW9uID0gbmV0d29ya1Byb2Nlc3MtPnN0b3JhZ2VTZXNzaW9uKHNlc3Npb25JRCkpCi0gICAg
ICAgICAgICAgICAgICAgIHN0b3JhZ2VTZXNzaW9uLT5jcmVkZW50aWFsU3RvcmFnZSgpLnNldChw
YXJ0aXRpb24sIG5vblBlcnNpc3RlbnRDcmVkZW50aWFsLCBhdXRoZW50aWNhdGlvbkNoYWxsZW5n
ZS5wcm90ZWN0aW9uU3BhY2UoKSwgdXJsVG9TdG9yZSk7Ci0gICAgICAgICAgICAgICAgZWxzZQot
ICAgICAgICAgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLQotICAgICAgICAgICAg
ICAgIGNvbXBsZXRpb25IYW5kbGVyQ29weSh0b05TVVJMU2Vzc2lvbkF1dGhDaGFsbGVuZ2VEaXNw
b3NpdGlvbihkaXNwb3NpdGlvbiksIG5vblBlcnNpc3RlbnRDcmVkZW50aWFsLm5zQ3JlZGVudGlh
bCgpKTsKLSAgICAgICAgICAgIH0gZWxzZQotI2VuZGlmCi0gICAgICAgICAgICAgICAgY29tcGxl
dGlvbkhhbmRsZXJDb3B5KHRvTlNVUkxTZXNzaW9uQXV0aENoYWxsZW5nZURpc3Bvc2l0aW9uKGRp
c3Bvc2l0aW9uKSwgY3JlZGVudGlhbC5uc0NyZWRlbnRpYWwoKSk7Ci0gICAgICAgICAgICBCbG9j
a19yZWxlYXNlKGNvbXBsZXRpb25IYW5kbGVyQ29weSk7Ci0gICAgICAgIH07Ci0gICAgICAgIG5l
dHdvcmtEYXRhVGFzay0+ZGlkUmVjZWl2ZUNoYWxsZW5nZShjaGFsbGVuZ2UsIFdURk1vdmUoY2hh
bGxlbmdlQ29tcGxldGlvbkhhbmRsZXIpKTsKLSAgICB9IGVsc2UgewotICAgICAgICBhdXRvIGRv
d25sb2FkSUQgPSBfc2Vzc2lvbi0+ZG93bmxvYWRJRCh0YXNrSWRlbnRpZmllcik7Ci0gICAgICAg
IGlmIChkb3dubG9hZElELmRvd25sb2FkSUQoKSkgewotICAgICAgICAgICAgaWYgKGF1dG8qIGRv
d25sb2FkID0gX3Nlc3Npb24tPm5ldHdvcmtQcm9jZXNzKCkuZG93bmxvYWRNYW5hZ2VyKCkuZG93
bmxvYWQoZG93bmxvYWRJRCkpIHsKLSAgICAgICAgICAgICAgICAvLyBSZWNlaXZlZCBhbiBhdXRo
ZW50aWNhdGlvbiBjaGFsbGVuZ2UgZm9yIGEgZG93bmxvYWQgYmVpbmcgcmVzdW1lZC4KLSAgICAg
ICAgICAgICAgICBXZWJDb3JlOjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSBhdXRoZW50aWNhdGlv
bkNoYWxsZW5nZSB7IGNoYWxsZW5nZSB9OwotICAgICAgICAgICAgICAgIGF1dG8gY29tcGxldGlv
bkhhbmRsZXJDb3B5ID0gQmxvY2tfY29weShjb21wbGV0aW9uSGFuZGxlcik7Ci0gICAgICAgICAg
ICAgICAgYXV0byBjaGFsbGVuZ2VDb21wbGV0aW9uSGFuZGxlciA9IFtjb21wbGV0aW9uSGFuZGxl
ckNvcHksIGF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlXShXZWJLaXQ6OkF1dGhlbnRpY2F0aW9uQ2hh
bGxlbmdlRGlzcG9zaXRpb24gZGlzcG9zaXRpb24sIGNvbnN0IFdlYkNvcmU6OkNyZWRlbnRpYWwm
IGNyZWRlbnRpYWwpIHsKLSAgICAgICAgICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXJDb3B5
KHRvTlNVUkxTZXNzaW9uQXV0aENoYWxsZW5nZURpc3Bvc2l0aW9uKGRpc3Bvc2l0aW9uKSwgY3Jl
ZGVudGlhbC5uc0NyZWRlbnRpYWwoKSk7Ci0gICAgICAgICAgICAgICAgICAgIEJsb2NrX3JlbGVh
c2UoY29tcGxldGlvbkhhbmRsZXJDb3B5KTsKLSAgICAgICAgICAgICAgICB9OwotICAgICAgICAg
ICAgICAgIGRvd25sb2FkLT5kaWRSZWNlaXZlQ2hhbGxlbmdlKGNoYWxsZW5nZSwgV1RGTW92ZShj
aGFsbGVuZ2VDb21wbGV0aW9uSGFuZGxlcikpOwotICAgICAgICAgICAgICAgIHJldHVybjsKLSAg
ICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgICBMT0coTmV0d29ya1Nlc3Npb24sICIlbGx1
IGRpZFJlY2VpdmVDaGFsbGVuZ2UgY29tcGxldGlvbkhhbmRsZXIgKGNhbmNlbCkiLCB0YXNrSWRl
bnRpZmllcik7Ci0gICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKE5TVVJMU2Vzc2lvbkF1dGhDaGFs
bGVuZ2VDYW5jZWxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSwgbmlsKTsKLSAgICB9CisgICAgX3Nl
c3Npb24tPmNvbnRpbnVlRGlkUmVjZWl2ZUNoYWxsZW5nZShjaGFsbGVuZ2UsIHRhc2tJZGVudGlm
aWVyLCBbc2VsZiBleGlzdGluZ1Rhc2s6dGFza10sIFtjb21wbGV0aW9uSGFuZGxlciA9IG1ha2VC
bG9ja1B0cihjb21wbGV0aW9uSGFuZGxlcildIChXZWJLaXQ6OkF1dGhlbnRpY2F0aW9uQ2hhbGxl
bmdlRGlzcG9zaXRpb24gZGlzcG9zaXRpb24sIGNvbnN0IFdlYkNvcmU6OkNyZWRlbnRpYWwmIGNy
ZWRlbnRpYWwpIG11dGFibGUgeworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcih0b05TVVJMU2Vz
c2lvbkF1dGhDaGFsbGVuZ2VEaXNwb3NpdGlvbihkaXNwb3NpdGlvbiksIGNyZWRlbnRpYWwubnND
cmVkZW50aWFsKCkpOworICAgIH0pOwogfQogCiAtICh2b2lkKVVSTFNlc3Npb246KE5TVVJMU2Vz
c2lvbiAqKXNlc3Npb24gdGFzazooTlNVUkxTZXNzaW9uVGFzayAqKXRhc2sgZGlkQ29tcGxldGVX
aXRoRXJyb3I6KE5TRXJyb3IgKillcnJvcgpAQCAtMTA1Myw0ICsxMDM5LDUzIEBAIGJvb2wgTmV0
d29ya1Nlc3Npb25Db2NvYTo6YWxsb3dzU3BlY2lmaWNIVFRQU0NlcnRpZmljYXRlRm9ySG9zdChj
b25zdCBXZWJDb3JlOjpBCiAgICAgcmV0dXJuIGNlcnRpZmljYXRlc01hdGNoKHRydXN0LmdldCgp
LCBjaGFsbGVuZ2UubnNVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSgpLnByb3RlY3Rpb25TcGFj
ZS5zZXJ2ZXJUcnVzdCk7CiB9CiAKK3ZvaWQgTmV0d29ya1Nlc3Npb25Db2NvYTo6Y29udGludWVE
aWRSZWNlaXZlQ2hhbGxlbmdlKGNvbnN0IFdlYkNvcmU6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdl
JiBjaGFsbGVuZ2UsIE5ldHdvcmtEYXRhVGFza0NvY29hOjpUYXNrSWRlbnRpZmllciB0YXNrSWRl
bnRpZmllciwgTmV0d29ya0RhdGFUYXNrQ29jb2EqIG5ldHdvcmtEYXRhVGFzaywgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChXZWJLaXQ6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlRGlzcG9zaXRpb24s
IGNvbnN0IFdlYkNvcmU6OkNyZWRlbnRpYWwmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKKworewor
ICAgIGlmICghbmV0d29ya0RhdGFUYXNrKSB7CisgICAgICAgIGF1dG8gZG93bmxvYWRJRCA9IHRo
aXMtPmRvd25sb2FkSUQodGFza0lkZW50aWZpZXIpOworICAgICAgICBpZiAoZG93bmxvYWRJRC5k
b3dubG9hZElEKCkpIHsKKyAgICAgICAgICAgIGlmIChhdXRvKiBkb3dubG9hZCA9IG5ldHdvcmtQ
cm9jZXNzKCkuZG93bmxvYWRNYW5hZ2VyKCkuZG93bmxvYWQoZG93bmxvYWRJRCkpIHsKKyAgICAg
ICAgICAgICAgICBXZWJDb3JlOjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSBhdXRoZW50aWNhdGlv
bkNoYWxsZW5nZSB7IGNoYWxsZW5nZSB9OworICAgICAgICAgICAgICAgIC8vIFJlY2VpdmVkIGFu
IGF1dGhlbnRpY2F0aW9uIGNoYWxsZW5nZSBmb3IgYSBkb3dubG9hZCBiZWluZyByZXN1bWVkLgor
ICAgICAgICAgICAgICAgIGRvd25sb2FkLT5kaWRSZWNlaXZlQ2hhbGxlbmdlKGF1dGhlbnRpY2F0
aW9uQ2hhbGxlbmdlLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CisgICAgICAgICAgICAg
ICAgcmV0dXJuOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIExPRyhOZXR3b3Jr
U2Vzc2lvbiwgIiVsbHUgZGlkUmVjZWl2ZUNoYWxsZW5nZSBjb21wbGV0aW9uSGFuZGxlciAoY2Fu
Y2VsKSIsIHRhc2tJZGVudGlmaWVyKTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoQXV0aGVu
dGljYXRpb25DaGFsbGVuZ2VEaXNwb3NpdGlvbjo6Q2FuY2VsLCB7IH0pOworICAgICAgICByZXR1
cm47CisgICAgfQorCisgICAgYXV0byBzZXNzaW9uSUQgPSB0aGlzLT5zZXNzaW9uSUQoKTsKKyAg
ICBXZWJDb3JlOjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSBhdXRoZW50aWNhdGlvbkNoYWxsZW5n
ZSB7IGNoYWxsZW5nZSB9OworICAgIGF1dG8gY2hhbGxlbmdlQ29tcGxldGlvbkhhbmRsZXIgPSBb
Y29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSwgbmV0d29ya1By
b2Nlc3MgPSBtYWtlUmVmKG5ldHdvcmtQcm9jZXNzKCkpLCBzZXNzaW9uSUQsIGF1dGhlbnRpY2F0
aW9uQ2hhbGxlbmdlLCB0YXNrSWRlbnRpZmllciwgcGFydGl0aW9uID0gbmV0d29ya0RhdGFUYXNr
LT5wYXJ0aXRpb24oKV0oV2ViS2l0OjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZURpc3Bvc2l0aW9u
IGRpc3Bvc2l0aW9uLCBjb25zdCBXZWJDb3JlOjpDcmVkZW50aWFsJiBjcmVkZW50aWFsKSBtdXRh
YmxlIHsKKyNpZiAhTE9HX0RJU0FCTEVECisgICAgICAgIExPRyhOZXR3b3JrU2Vzc2lvbiwgIiVs
bHUgZGlkUmVjZWl2ZUNoYWxsZW5nZSBjb21wbGV0aW9uSGFuZGxlciAlZCIsIHRhc2tJZGVudGlm
aWVyLCBkaXNwb3NpdGlvbik7CisjZWxzZQorICAgICAgICBVTlVTRURfUEFSQU0odGFza0lkZW50
aWZpZXIpOworI2VuZGlmCisjaWYgIVVTRShDUkVERU5USUFMX1NUT1JBR0VfV0lUSF9ORVRXT1JL
X1NFU1NJT04pCisgICAgICAgIFVOVVNFRF9QQVJBTShzZXNzaW9uSUQpOworICAgICAgICBVTlVT
RURfUEFSQU0oYXV0aGVudGljYXRpb25DaGFsbGVuZ2UpOworI2Vsc2UKKyAgICAgICAgaWYgKGNy
ZWRlbnRpYWwucGVyc2lzdGVuY2UoKSA9PSBXZWJDb3JlOjpDcmVkZW50aWFsUGVyc2lzdGVuY2VG
b3JTZXNzaW9uICYmIGF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLnByb3RlY3Rpb25TcGFjZSgpLmlz
UGFzc3dvcmRCYXNlZCgpKSB7CisgICAgICAgICAgICBXZWJDb3JlOjpDcmVkZW50aWFsIG5vblBl
cnNpc3RlbnRDcmVkZW50aWFsKGNyZWRlbnRpYWwudXNlcigpLCBjcmVkZW50aWFsLnBhc3N3b3Jk
KCksIFdlYkNvcmU6OkNyZWRlbnRpYWxQZXJzaXN0ZW5jZU5vbmUpOworICAgICAgICAgICAgVVJM
IHVybFRvU3RvcmU7CisgICAgICAgICAgICBpZiAoYXV0aGVudGljYXRpb25DaGFsbGVuZ2UuZmFp
bHVyZVJlc3BvbnNlKCkuaHR0cFN0YXR1c0NvZGUoKSA9PSA0MDEpCisgICAgICAgICAgICAgICAg
dXJsVG9TdG9yZSA9IGF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLmZhaWx1cmVSZXNwb25zZSgpLnVy
bCgpOworICAgICAgICAgICAgaWYgKGF1dG8gc3RvcmFnZVNlc3Npb24gPSBuZXR3b3JrUHJvY2Vz
cy0+c3RvcmFnZVNlc3Npb24oc2Vzc2lvbklEKSkKKyAgICAgICAgICAgICAgICBzdG9yYWdlU2Vz
c2lvbi0+Y3JlZGVudGlhbFN0b3JhZ2UoKS5zZXQocGFydGl0aW9uLCBub25QZXJzaXN0ZW50Q3Jl
ZGVudGlhbCwgYXV0aGVudGljYXRpb25DaGFsbGVuZ2UucHJvdGVjdGlvblNwYWNlKCksIHVybFRv
U3RvcmUpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVB
Q0hFRCgpOworCisgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihkaXNwb3NpdGlvbiwgbm9u
UGVyc2lzdGVudENyZWRlbnRpYWwpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9Cisj
ZW5kaWYKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoZGlzcG9zaXRpb24sIGNyZWRlbnRpYWwp
OworICAgIH07CisgICAgbmV0d29ya0RhdGFUYXNrLT5kaWRSZWNlaXZlQ2hhbGxlbmdlKFdURk1v
dmUoYXV0aGVudGljYXRpb25DaGFsbGVuZ2UpLCBXVEZNb3ZlKGNoYWxsZW5nZUNvbXBsZXRpb25I
YW5kbGVyKSk7Cit9CisKIH0KZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0No
YW5nZUxvZwppbmRleCBlNDBkZTU3ZmRmMzhjNjRlYjg1ZTdhMzNhY2MwM2E0ZGExYWQxN2E5Li44
ZmI2MDUxNGI5MDljZGEyZTdiMjQyNTg3YmI0ZTg5NjliZWUwYWRiIDEwMDY0NAotLS0gYS9Ub29s
cy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjkgQEAKKzIwMTkt
MDEtMjkgIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgorCisgICAgICAgIEFkb3B0
IG5ldyBTUEkgdG8gZXZhbHVhdGUgc2VydmVyIGNlcnRpZmljYXRlIHRydXN0CisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTMzNTUKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgaW5mcmFzdHJ1Y3R1cmUg
dG8gaGFuZGxlIEhUVFBTIHNlcnZlciB0cnVzdCBldmFsdWF0aW9uIHRlc3RpbmcuCisKKyAgICAg
ICAgKiBXZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0JpbmRpbmdzL1Rlc3RSdW5uZXIu
aWRsOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5l
ci5jcHA6CisgICAgICAgIChXVFI6OlRlc3RSdW5uZXI6OnNldENhbkhhbmRsZUhUVFBTU2VydmVy
VHJ1c3RFdmFsdWF0aW9uKToKKyAgICAgICAgKFdUUjo6VGVzdFJ1bm5lcjo6Y2FuRG9TZXJ2ZXJU
cnVzdEV2YWx1YXRpb25Jbk5ldHdvcmtQcm9jZXNzKToKKyAgICAgICAgKFdUUjo6VGVzdFJ1bm5l
cjo6c2VydmVyVHJ1c3RFdmFsdWF0aW9uQ2FsbGJhY2tDYWxsc0NvdW50KToKKyAgICAgICAgKiBX
ZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuaDoKKyAgICAgICAgKiBX
ZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdUUjo6VGVzdENv
bnRyb2xsZXI6OnJlc2V0UHJlZmVyZW5jZXNUb0NvbnNpc3RlbnRWYWx1ZXMpOgorICAgICAgICAo
V1RSOjpUZXN0Q29udHJvbGxlcjo6ZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKToK
KyAgICAgICAgKFdUUjo6VGVzdENvbnRyb2xsZXI6OmNhbkRvU2VydmVyVHJ1c3RFdmFsdWF0aW9u
SW5OZXR3b3JrUHJvY2VzcyBjb25zdCk6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9UZXN0
Q29udHJvbGxlci5oOgorICAgICAgICAoV1RSOjpUZXN0Q29udHJvbGxlcjo6c2VydmVyVHJ1c3RF
dmFsdWF0aW9uQ2FsbGJhY2tDYWxsc0NvdW50IGNvbnN0KToKKyAgICAgICAgKiBXZWJLaXRUZXN0
UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmNwcDoKKyAgICAgICAgKFdUUjo6VGVzdEludm9jYXRpb246
OmRpZFJlY2VpdmVTeW5jaHJvbm91c01lc3NhZ2VGcm9tSW5qZWN0ZWRCdW5kbGUpOgorICAgICAg
ICAqIFdlYktpdFRlc3RSdW5uZXIvY29jb2EvVGVzdENvbnRyb2xsZXJDb2NvYS5tbToKKyAgICAg
ICAgKFdUUjo6VGVzdENvbnRyb2xsZXI6OmNhbkRvU2VydmVyVHJ1c3RFdmFsdWF0aW9uSW5OZXR3
b3JrUHJvY2VzcyBjb25zdCk6CisKIDIwMTktMDEtMjggIFphbGFuIEJ1anRhcyAgPHphbGFuQGFw
cGxlLmNvbT4KIAogICAgICAgICBbTEZDXVtNYXJnaW5Db2xsYXBzaW5nXVtRdWlya3NdIFF1aXJr
IG1hcmdpbiB2YWx1ZXMgZ2V0IHByb3BhZ2F0ZWQgdGhyb3VnaCBtYXJnaW4gY29sbGFwc2luZwpk
aWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9CaW5kaW5n
cy9UZXN0UnVubmVyLmlkbCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUv
QmluZGluZ3MvVGVzdFJ1bm5lci5pZGwKaW5kZXggZjE1NTUwZjUzMGVkMGYzZDUxOTQ3ODAyMjY5
NTIwMWU5MDJjYmFiMy4uZjY3MWEwYWJlN2U2NWJkNzE1NDJkZjIwZmQ3NzgxOGE2OTdlZWQxZiAx
MDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9CaW5kaW5n
cy9UZXN0UnVubmVyLmlkbAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVu
ZGxlL0JpbmRpbmdzL1Rlc3RSdW5uZXIuaWRsCkBAIC0zMzgsNiArMzM4LDEwIEBAIGludGVyZmFj
ZSBUZXN0UnVubmVyIHsKICAgICB2b2lkIHRlcm1pbmF0ZU5ldHdvcmtQcm9jZXNzKCk7CiAgICAg
dm9pZCB0ZXJtaW5hdGVTZXJ2aWNlV29ya2VyUHJvY2VzcygpOwogCisgICAgdm9pZCBzZXRDYW5I
YW5kbGVIVFRQU1NlcnZlclRydXN0RXZhbHVhdGlvbihib29sZWFuIGNhbkhhbmRsZSk7CisgICAg
cmVhZG9ubHkgYXR0cmlidXRlIGJvb2xlYW4gY2FuRG9TZXJ2ZXJUcnVzdEV2YWx1YXRpb25Jbk5l
dHdvcmtQcm9jZXNzOworICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSB1bnNpZ25lZCBsb25nIHNlcnZl
clRydXN0RXZhbHVhdGlvbkNhbGxiYWNrQ2FsbHNDb3VudDsKKwogICAgIHJlYWRvbmx5IGF0dHJp
YnV0ZSBib29sZWFuIGRpZENhbmNlbENsaWVudFJlZGlyZWN0OwogCiAgICAgdm9pZCByZW1vdmVB
bGxTZXNzaW9uQ3JlZGVudGlhbHMob2JqZWN0IGNhbGxiYWNrKTsKZGlmZiAtLWdpdCBhL1Rvb2xz
L1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5jcHAgYi9Ub29scy9X
ZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuY3BwCmluZGV4IDEwMGFi
N2M0MGY3Mzg5MjlkOTI2Y2U4NDY5ZjEwNjczMmQyMDdkNjguLmE2NTlkMTY5YWVmMmZmMGY2ZmQy
ZGQ3ODA2MTM3ZTI2MzFhNGU1MjYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIv
SW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5jcHAKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5l
ci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmNwcApAQCAtMjY5MCw0ICsyNjkwLDI5IEBAIGJv
b2wgVGVzdFJ1bm5lcjo6a2V5RXhpc3RzSW5LZXljaGFpbihKU1N0cmluZ1JlZiBhdHRyTGFiZWws
IEpTU3RyaW5nUmVmIGFwcGxpY2F0CiAgICAgcmV0dXJuIFdLQm9vbGVhbkdldFZhbHVlKGFkb3B0
V0soc3RhdGljX2Nhc3Q8V0tCb29sZWFuUmVmPihyZXR1cm5EYXRhKSkuZ2V0KCkpOwogfQogCit2
b2lkIFRlc3RSdW5uZXI6OnNldENhbkhhbmRsZUhUVFBTU2VydmVyVHJ1c3RFdmFsdWF0aW9uKGJv
b2wgY2FuSGFuZGxlKQoreworICAgIFdLUmV0YWluUHRyPFdLU3RyaW5nUmVmPiBtZXNzYWdlTmFt
ZShBZG9wdFdLLCBXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygiU2V0Q2FuSGFuZGxlSFRU
UFNTZXJ2ZXJUcnVzdEV2YWx1YXRpb24iKSk7CisgICAgV0tSZXRhaW5QdHI8V0tCb29sZWFuUmVm
PiBtZXNzYWdlQm9keShBZG9wdFdLLCBXS0Jvb2xlYW5DcmVhdGUoY2FuSGFuZGxlKSk7CisgICAg
V0tCdW5kbGVQb3N0U3luY2hyb25vdXNNZXNzYWdlKEluamVjdGVkQnVuZGxlOjpzaW5nbGV0b24o
KS5idW5kbGUoKSwgbWVzc2FnZU5hbWUuZ2V0KCksIG1lc3NhZ2VCb2R5LmdldCgpLCBudWxscHRy
KTsKK30KKworYm9vbCBUZXN0UnVubmVyOjpjYW5Eb1NlcnZlclRydXN0RXZhbHVhdGlvbkluTmV0
d29ya1Byb2Nlc3MoKQoreworICAgIFdLUmV0YWluUHRyPFdLU3RyaW5nUmVmPiBtZXNzYWdlTmFt
ZShBZG9wdFdLLCBXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygiQ2FuRG9TZXJ2ZXJUcnVz
dEV2YWx1YXRpb25Jbk5ldHdvcmtQcm9jZXNzIikpOworICAgIFdLVHlwZVJlZiByZXR1cm5EYXRh
ID0gbnVsbHB0cjsKKyAgICBXS0J1bmRsZVBhZ2VQb3N0U3luY2hyb25vdXNNZXNzYWdlRm9yVGVz
dGluZyhJbmplY3RlZEJ1bmRsZTo6c2luZ2xldG9uKCkucGFnZSgpLT5wYWdlKCksIG1lc3NhZ2VO
YW1lLmdldCgpLCBudWxscHRyLCAmcmV0dXJuRGF0YSk7CisgICAgQVNTRVJUKFdLR2V0VHlwZUlE
KHJldHVybkRhdGEpID09IFdLQm9vbGVhbkdldFR5cGVJRCgpKTsKKyAgICByZXR1cm4gV0tCb29s
ZWFuR2V0VmFsdWUoYWRvcHRXSyhzdGF0aWNfY2FzdDxXS0Jvb2xlYW5SZWY+KHJldHVybkRhdGEp
KS5nZXQoKSk7Cit9CisKK3Vuc2lnbmVkIGxvbmcgVGVzdFJ1bm5lcjo6c2VydmVyVHJ1c3RFdmFs
dWF0aW9uQ2FsbGJhY2tDYWxsc0NvdW50KCkKK3sKKyAgICBXS1JldGFpblB0cjxXS1N0cmluZ1Jl
Zj4gbWVzc2FnZU5hbWUoQWRvcHRXSywgV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoIlNl
cnZlclRydXN0RXZhbHVhdGlvbkNhbGxiYWNrQ2FsbHNDb3VudCIpKTsKKyAgICBXS1R5cGVSZWYg
cmV0dXJuRGF0YSA9IG51bGxwdHI7CisgICAgV0tCdW5kbGVQYWdlUG9zdFN5bmNocm9ub3VzTWVz
c2FnZUZvclRlc3RpbmcoSW5qZWN0ZWRCdW5kbGU6OnNpbmdsZXRvbigpLnBhZ2UoKS0+cGFnZSgp
LCBtZXNzYWdlTmFtZS5nZXQoKSwgbnVsbHB0ciwgJnJldHVybkRhdGEpOworICAgIEFTU0VSVChX
S0dldFR5cGVJRChyZXR1cm5EYXRhKSA9PSBXS1VJbnQ2NEdldFR5cGVJRCgpKTsKKyAgICByZXR1
cm4gV0tVSW50NjRHZXRWYWx1ZShhZG9wdFdLKHN0YXRpY19jYXN0PFdLVUludDY0UmVmPihyZXR1
cm5EYXRhKSkuZ2V0KCkpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXVFIKZGlmZiAtLWdpdCBhL1Rv
b2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5oIGIvVG9vbHMv
V2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmgKaW5kZXggYTQwMTk5
OWY0MTJlOWJkMzkzMmFiODFjODRiNzc3M2Q1ZGYwNzNmMy4uOTRhOWExNTNmZGVmN2M2YzEwYWM3
NDRhZDI2N2Y1YzY3YzUyNjc5MiAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9J
bmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmgKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9J
bmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmgKQEAgLTQ4MSw2ICs0ODEsMTAgQEAgcHVibGljOgog
ICAgIHZvaWQgY2xlYW5VcEtleWNoYWluKEpTU3RyaW5nUmVmIGF0dHJMYWJlbCk7CiAgICAgYm9v
bCBrZXlFeGlzdHNJbktleWNoYWluKEpTU3RyaW5nUmVmIGF0dHJMYWJlbCwgSlNTdHJpbmdSZWYg
YXBwbGljYXRpb25UYWdCYXNlNjQpOwogCisgICAgdm9pZCBzZXRDYW5IYW5kbGVIVFRQU1NlcnZl
clRydXN0RXZhbHVhdGlvbihib29sIGNhbkhhbmRsZSk7CisgICAgYm9vbCBjYW5Eb1NlcnZlclRy
dXN0RXZhbHVhdGlvbkluTmV0d29ya1Byb2Nlc3MoKTsKKyAgICB1bnNpZ25lZCBsb25nIHNlcnZl
clRydXN0RXZhbHVhdGlvbkNhbGxiYWNrQ2FsbHNDb3VudCgpOworCiBwcml2YXRlOgogICAgIFRl
c3RSdW5uZXIoKTsKIApkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29u
dHJvbGxlci5jcHAgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcApp
bmRleCAwY2ZmNzE5NTZkYjljNDI4YmI1MTdiNGQ2Y2QzYWNjYjk0MWJlNGQ4Li45MmUxNjBhNjE1
ODkwZDMzNjkyNGM1NjBmNDMzYWIwZWQyNTVhOTQ0IDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRU
ZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVy
L1Rlc3RDb250cm9sbGVyLmNwcApAQCAtODI0LDYgKzgyNCw4IEBAIHZvaWQgVGVzdENvbnRyb2xs
ZXI6OnJlc2V0UHJlZmVyZW5jZXNUb0NvbnNpc3RlbnRWYWx1ZXMoY29uc3QgVGVzdE9wdGlvbnMm
IG9wdGlvCiAKICAgICBXS1ByZWZlcmVuY2VzU2V0V2ViU1FMRGlzYWJsZWQocHJlZmVyZW5jZXMs
IGZhbHNlKTsKIAorICAgIG1fc2VydmVyVHJ1c3RFdmFsdWF0aW9uQ2FsbGJhY2tDYWxsc0NvdW50
ID0gMDsKKwogICAgIHBsYXRmb3JtUmVzZXRQcmVmZXJlbmNlc1RvQ29uc2lzdGVudFZhbHVlcygp
OwogfQogCkBAIC0yMDYwLDYgKzIwNjIsOCBAQCB2b2lkIFRlc3RDb250cm9sbGVyOjpkaWRSZWNl
aXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoV0tQYWdlUmVmIHBhZ2UsIFdLQXV0aGVudAogICAg
ICAgICAvLyBBbnkgbm9uLWVtcHR5IGNyZWRlbnRpYWwgc2lnbmFscyB0byBhY2NlcHQgdGhlIHNl
cnZlciB0cnVzdC4gU2luY2UgdGhlIGNyb3NzLXBsYXRmb3JtIEFQSQogICAgICAgICAvLyBkb2Vz
bid0IGV4cG9zZSBhIHdheSB0byBjcmVhdGUgYSBjcmVkZW50aWFsIGZyb20gc2VydmVyIHRydXN0
LCB3ZSB1c2UgYSBwYXNzd29yZCBjcmVkZW50aWFsLgogCisgICAgICAgIG1fc2VydmVyVHJ1c3RF
dmFsdWF0aW9uQ2FsbGJhY2tDYWxsc0NvdW50Kys7CisKICAgICAgICAgV0tSZXRhaW5QdHI8V0tD
cmVkZW50aWFsUmVmPiBjcmVkZW50aWFsID0gYWRvcHRXSyhXS0NyZWRlbnRpYWxDcmVhdGUodG9X
SygiYWNjZXB0IHNlcnZlciB0cnVzdCIpLmdldCgpLCB0b1dLKCIiKS5nZXQoKSwga1dLQ3JlZGVu
dGlhbFBlcnNpc3RlbmNlTm9uZSkpOwogICAgICAgICBXS0F1dGhlbnRpY2F0aW9uRGVjaXNpb25M
aXN0ZW5lclVzZUNyZWRlbnRpYWwoZGVjaXNpb25MaXN0ZW5lciwgY3JlZGVudGlhbC5nZXQoKSk7
CiAgICAgICAgIHJldHVybjsKQEAgLTMyMjMsNiArMzIyNywxMiBAQCBib29sIFRlc3RDb250cm9s
bGVyOjprZXlFeGlzdHNJbktleWNoYWluKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYpCiB7
CiAgICAgcmV0dXJuIGZhbHNlOwogfQorCitib29sIFRlc3RDb250cm9sbGVyOjpjYW5Eb1NlcnZl
clRydXN0RXZhbHVhdGlvbkluTmV0d29ya1Byb2Nlc3MoKSBjb25zdAoreworICAgIHJldHVybiBm
YWxzZTsKK30KKwogI2VuZGlmCiAKIHZvaWQgVGVzdENvbnRyb2xsZXI6OnNlbmREaXNwbGF5Q29u
ZmlndXJhdGlvbkNoYW5nZWRNZXNzYWdlRm9yVGVzdGluZygpCmRpZmYgLS1naXQgYS9Ub29scy9X
ZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmggYi9Ub29scy9XZWJLaXRUZXN0UnVubmVy
L1Rlc3RDb250cm9sbGVyLmgKaW5kZXggMjA1OGM3OWVjZmFhNWRjZTMxNGZhNjI4NTBmN2RjYmQw
YmEzZmEyNy4uMjVlYzkwNGJlNDJiMmNkYzMwOTRlMWViZWFiM2Q3Zjk3ZDRhOTVlMiAxMDA2NDQK
LS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5oCisrKyBiL1Rvb2xz
L1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuaApAQCAtMjgxLDYgKzI4MSw5IEBAIHB1
YmxpYzoKICAgICBVSUtleWJvYXJkSW5wdXRNb2RlICpvdmVycmlkZGVuS2V5Ym9hcmRJbnB1dE1v
ZGUoKSBjb25zdCB7IHJldHVybiBtX292ZXJyaWRkZW5LZXlib2FyZElucHV0TW9kZS5nZXQoKTsg
fQogI2VuZGlmCiAKKyAgICBib29sIGNhbkRvU2VydmVyVHJ1c3RFdmFsdWF0aW9uSW5OZXR3b3Jr
UHJvY2VzcygpIGNvbnN0OworICAgIHVpbnQ2NF90IHNlcnZlclRydXN0RXZhbHVhdGlvbkNhbGxi
YWNrQ2FsbHNDb3VudCgpIGNvbnN0IHsgcmV0dXJuIG1fc2VydmVyVHJ1c3RFdmFsdWF0aW9uQ2Fs
bGJhY2tDYWxsc0NvdW50OyB9CisKIHByaXZhdGU6CiAgICAgV0tSZXRhaW5QdHI8V0tQYWdlQ29u
ZmlndXJhdGlvblJlZj4gZ2VuZXJhdGVQYWdlQ29uZmlndXJhdGlvbihXS0NvbnRleHRDb25maWd1
cmF0aW9uUmVmKTsKICAgICBXS1JldGFpblB0cjxXS0NvbnRleHRDb25maWd1cmF0aW9uUmVmPiBn
ZW5lcmF0ZUNvbnRleHRDb25maWd1cmF0aW9uKCkgY29uc3Q7CkBAIC01MzQsNiArNTM3LDggQEAg
cHJpdmF0ZToKICAgICAgICAgeyB9CiAgICAgfTsKICAgICBIYXNoTWFwPHVpbnQ2NF90LCBBYmFu
ZG9uZWREb2N1bWVudEluZm8+IG1fYWJhbmRvbmVkRG9jdW1lbnRJbmZvOworCisgICAgdWludDY0
X3QgbV9zZXJ2ZXJUcnVzdEV2YWx1YXRpb25DYWxsYmFja0NhbGxzQ291bnQgeyAwIH07CiB9Owog
CiBzdHJ1Y3QgVGVzdENvbW1hbmQgewpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5l
ci9UZXN0SW52b2NhdGlvbi5jcHAgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0
aW9uLmNwcAppbmRleCAxZmVkZDhiMWYxZWZkNTY5NzNhNGUzYzEzNzdjMmYxNmIzYTgzMmMxLi40
MjljZTI5YjUyMDExOGRmMjQ4YTAzMWFmN2U0NTM4MmIzNTg3NDc0IDEwMDY0NAotLS0gYS9Ub29s
cy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmNwcAorKysgYi9Ub29scy9XZWJLaXRU
ZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmNwcApAQCAtMTUyMiw2ICsxNTIyLDIzIEBAIFdLUmV0
YWluUHRyPFdLVHlwZVJlZj4gVGVzdEludm9jYXRpb246OmRpZFJlY2VpdmVTeW5jaHJvbm91c01l
c3NhZ2VGcm9tSW5qZWN0ZWRCCiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQogCisgICAg
aWYgKFdLU3RyaW5nSXNFcXVhbFRvVVRGOENTdHJpbmcobWVzc2FnZU5hbWUsICJTZXRDYW5IYW5k
bGVIVFRQU1NlcnZlclRydXN0RXZhbHVhdGlvbiIpKSB7CisgICAgICAgIEFTU0VSVChXS0dldFR5
cGVJRChtZXNzYWdlQm9keSkgPT0gV0tCb29sZWFuR2V0VHlwZUlEKCkpOworICAgICAgICBhdXRv
IGNhbkhhbmRsZSA9IFdLQm9vbGVhbkdldFZhbHVlKHN0YXRpY19jYXN0PFdLQm9vbGVhblJlZj4o
bWVzc2FnZUJvZHkpKTsKKyAgICAgICAgV0tDb250ZXh0U2V0Q2FuSGFuZGxlSFRUUFNTZXJ2ZXJU
cnVzdEV2YWx1YXRpb24oVGVzdENvbnRyb2xsZXI6OnNpbmdsZXRvbigpLmNvbnRleHQoKSwgY2Fu
SGFuZGxlKTsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgfQorCisgICAgaWYgKFdLU3Ry
aW5nSXNFcXVhbFRvVVRGOENTdHJpbmcobWVzc2FnZU5hbWUsICJDYW5Eb1NlcnZlclRydXN0RXZh
bHVhdGlvbkluTmV0d29ya1Byb2Nlc3MiKSkgeworICAgICAgICBXS1JldGFpblB0cjxXS1R5cGVS
ZWY+IHJlc3VsdChBZG9wdFdLLCBXS0Jvb2xlYW5DcmVhdGUoVGVzdENvbnRyb2xsZXI6OnNpbmds
ZXRvbigpLmNhbkRvU2VydmVyVHJ1c3RFdmFsdWF0aW9uSW5OZXR3b3JrUHJvY2VzcygpKSk7Cisg
ICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfQorCisgICAgaWYgKFdLU3RyaW5nSXNFcXVhbFRv
VVRGOENTdHJpbmcobWVzc2FnZU5hbWUsICJTZXJ2ZXJUcnVzdEV2YWx1YXRpb25DYWxsYmFja0Nh
bGxzQ291bnQiKSkgeworICAgICAgICBXS1JldGFpblB0cjxXS1R5cGVSZWY+IHJlc3VsdChBZG9w
dFdLLCBXS1VJbnQ2NENyZWF0ZShUZXN0Q29udHJvbGxlcjo6c2luZ2xldG9uKCkuc2VydmVyVHJ1
c3RFdmFsdWF0aW9uQ2FsbGJhY2tDYWxsc0NvdW50KCkpKTsKKyAgICAgICAgcmV0dXJuIHJlc3Vs
dDsKKyAgICB9CisKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICByZXR1cm4gbnVsbHB0
cjsKIH0KZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvY29jb2EvVGVzdENvbnRy
b2xsZXJDb2NvYS5tbSBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvY29jb2EvVGVzdENvbnRyb2xs
ZXJDb2NvYS5tbQppbmRleCAzNjNhMmM2ZTExNGQ1N2Q4YmFmMTc4MWRmNjFhMTM2NGM1MjBjMjA5
Li4wOGI0NmIxMTNmNGMxOGNhMDRiN2NhYTJhNDkyNThmYmQ0ZjJmNTM1IDEwMDY0NAotLS0gYS9U
b29scy9XZWJLaXRUZXN0UnVubmVyL2NvY29hL1Rlc3RDb250cm9sbGVyQ29jb2EubW0KKysrIGIv
VG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9jb2NvYS9UZXN0Q29udHJvbGxlckNvY29hLm1tCkBAIC00
MDUsNCArNDA1LDEzIEBAIHZvaWQgVGVzdENvbnRyb2xsZXI6OmFsbG93Q2FjaGVTdG9yYWdlUXVv
dGFJbmNyZWFzZSgpCiAjZW5kaWYKIH0KIAorYm9vbCBUZXN0Q29udHJvbGxlcjo6Y2FuRG9TZXJ2
ZXJUcnVzdEV2YWx1YXRpb25Jbk5ldHdvcmtQcm9jZXNzKCkgY29uc3QKK3sKKyNpZiBIQVZFKENG
TkVUV09SS19OU1VSTFNFU1NJT05fU1RSSUNUUlVTVEVWQUxVQVRFKQorICAgIHJldHVybiB0cnVl
OworI2Vsc2UKKyAgICByZXR1cm4gZmFsc2U7CisjZW5kaWYKK30KKwogfSAvLyBuYW1lc3BhY2Ug
V1RSCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFu
Z2VMb2cKaW5kZXggNGRjOTRlODZmN2E2YjE5NzQ4N2ZlZjcwMzgwN2RmY2VlMmVhYzIwZC4uY2Vl
M2MxYjA3MWVmNTJlNmM2ZDFhODBkZDdmMTAwMGNiMmM4OTg1OSAxMDA2NDQKLS0tIGEvTGF5b3V0
VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEz
IEBACisyMDE5LTAxLTI5ICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAg
ICAgICBBZG9wdCBuZXcgU1BJIHRvIGV2YWx1YXRlIHNlcnZlciBjZXJ0aWZpY2F0ZSB0cnVzdAor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTkzMzU1CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBodHRwL3Rl
c3RzL3NzbC9jZXJ0aWZpY2F0ZS12YWxpZGF0aW9uLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAg
ICAgICogaHR0cC90ZXN0cy9zc2wvY2VydGlmaWNhdGUtdmFsaWRhdGlvbi5odG1sOiBBZGRlZC4K
KwogMjAxOS0wMS0yOCAgQW50b2luZSBRdWludCAgPGdyYW91dHNAYXBwbGUuY29tPgogCiAgICAg
ICAgIExpbWl0IHVzZXItYWdlbnQgaW50ZXJhY3Rpb25zIGJhc2VkIG9uIHRoZSB0b3VjaC1hY3Rp
b24gcHJvcGVydHkgb24gaU9TCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3Nz
bC9jZXJ0aWZpY2F0ZS12YWxpZGF0aW9uLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2h0dHAv
dGVzdHMvc3NsL2NlcnRpZmljYXRlLXZhbGlkYXRpb24tZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LmRhODRhMDU3N2VlZjlhMmM1MGVhNDk3ZDJkZmM1NzBmMjdmNjNkMjQKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NzbC9jZXJ0aWZpY2F0ZS12YWxpZGF0aW9uLWV4
cGVjdGVkLnR4dApAQCAtMCwwICsxLDMgQEAKKworUEFTUyBDZXJ0aWZpY2F0ZSB2YWxpZGF0aW9u
IGluIE5ldHdvcmsgUHJvY2VzcyAKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0
cy9zc2wvY2VydGlmaWNhdGUtdmFsaWRhdGlvbi5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0
cy9zc2wvY2VydGlmaWNhdGUtdmFsaWRhdGlvbi5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjBiNzQxZTc3YmU5
MDNhMGQyNGYwZjNmNTFiNjZlNzdmZGExY2Y2OTEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL3NzbC9jZXJ0aWZpY2F0ZS12YWxpZGF0aW9uLmh0bWwKQEAgLTAsMCAr
MSw0MyBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPHRpdGxlPkNlcnRpZmlj
YXRlIHZhbGlkYXRpb24gaW4gTmV0d29yayBQcm9jZXNzPC90aXRsZT4KKzxzY3JpcHQgc3JjPSIv
cmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIvcmVzb3Vy
Y2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHNj
cmlwdD4KK2Z1bmN0aW9uIHdpdGhfaWZyYW1lKHVybCkgeworICAgIHJldHVybiBuZXcgUHJvbWlz
ZShmdW5jdGlvbihyZXNvbHZlKSB7CisgICAgICAgIHZhciBmcmFtZSA9IGRvY3VtZW50LmNyZWF0
ZUVsZW1lbnQoJ2lmcmFtZScpOworICAgICAgICBmcmFtZS5jbGFzc05hbWUgPSAndGVzdC1pZnJh
bWUnOworICAgICAgICBmcmFtZS5zcmMgPSB1cmw7CisgICAgICAgIGZyYW1lLm9ubG9hZCA9IGZ1
bmN0aW9uKCkgeyByZXNvbHZlKGZyYW1lKTsgfTsKKyAgICAgICAgZG9jdW1lbnQuYm9keS5hcHBl
bmRDaGlsZChmcmFtZSk7CisgICAgfSk7Cit9CisKK2FzeW5jIGZ1bmN0aW9uIGRvVGVzdCgpCit7
CisgICAgYXNzZXJ0X3RydWUoISF3aW5kb3cudGVzdFJ1bm5lciwgIlRlc3QgcmVxdWlyZXMgdGVz
dFJ1bm5lciIpOworCisgICAgaWYgKCF3aW5kb3cudGVzdFJ1bm5lci5jYW5Eb1NlcnZlclRydXN0
RXZhbHVhdGlvbkluTmV0d29ya1Byb2Nlc3MpCisgICAgICAgIHJldHVybjsKKworICAgIHdpbmRv
dy50ZXN0UnVubmVyLnNldEFsbG93c0FueVNTTENlcnRpZmljYXRlKGZhbHNlKTsKKyAgICB3aW5k
b3cudGVzdFJ1bm5lci50ZXJtaW5hdGVOZXR3b3JrUHJvY2VzcygpOworICAgIHdpbmRvdy50ZXN0
UnVubmVyLnNldENhbkhhbmRsZUhUVFBTU2VydmVyVHJ1c3RFdmFsdWF0aW9uKGZhbHNlKTsKKwor
ICAgIGNvbnN0IGN1cnJlbnRDYWxsYmFja0NvdW50cyA9IHdpbmRvdy50ZXN0UnVubmVyLnNlcnZl
clRydXN0RXZhbHVhdGlvbkNhbGxiYWNrQ2FsbHNDb3VudDsKKworICAgIGNvbnN0IGlmcmFtZSA9
IGF3YWl0IHdpdGhfaWZyYW1lKCJodHRwczovL2xvY2FsaG9zdDo4NDQzIik7CisgICAgaWZyYW1l
LnJlbW92ZSgpOworCisgICAgYXNzZXJ0X2VxdWFscyh3aW5kb3cudGVzdFJ1bm5lci5zZXJ2ZXJU
cnVzdEV2YWx1YXRpb25DYWxsYmFja0NhbGxzQ291bnQgLSBjdXJyZW50Q2FsbGJhY2tDb3VudHMs
IDEpOworfQorCitkb1Rlc3QoKS50aGVuKGRvbmUsIChlKSA9PiB7IGFzc2VydF91bnJlYWNoZWQo
InRlc3QgZmFpbGVkOiAiICsgZSk7IGRvbmUoKTsgfSk7CisKKzwvc2NyaXB0PgorPC9ib2R5Pgor
PC9odG1sPgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>360497</attachid>
            <date>2019-01-29 13:56:30 -0800</date>
            <delta_ts>2019-01-29 14:54:24 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-193355-20190129135628.patch</filename>
            <type>text/plain</type>
            <size>27255</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQwNTg4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGU5MGE0OWQ2OGFkNmVlMmY1
YTA3Y2Q4OGM0MTM2N2UxOTA1MjQyYTAuLjQ4NTdjM2JmMWI2NTYxODBmMjEzYzBiYjk0YzZhYzNj
MjNjNWU1YjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjAgQEAKKzIwMTktMDEtMjkgIFlvdWVubiBG
YWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgorCisgICAgICAgIEFkb3B0IG5ldyBTUEkgdG8gZXZh
bHVhdGUgc2VydmVyIGNlcnRpZmljYXRlIHRydXN0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTMzNTUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBVc2UgbmV3IFNQSSBwcm92aWRlZCBpbiBOU1VSTFNlc3Np
b24gdG8gZXZhbHVhdGUgc2VydmVyIGNlcnRpZmljYXRlcy4KKyAgICAgICAgSWYgc3VjY2Vzc2Z1
bCwgbGV0IGxvYWRpbmcgcHJvY2VlZCBhcyB1c3VhbC4KKyAgICAgICAgT3RoZXJ3aXNlLCBnbyB0
byB0aGUgVUlQcm9jZXNzIHRvIGFzayBmb3IgYSBkZWNpc2lvbiBvbiBjb250aW51aW5nIHRoZSBs
b2FkIG9yIG5vdC4KKworICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtTZXNz
aW9uQ29jb2EuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrU2Vzc2lv
bkNvY29hLm1tOgorICAgICAgICAoY2FuTlNVUkxTZXNzaW9uVHJ1c3RFdmFsdWF0ZSk6CisgICAg
ICAgICgtW1dLTmV0d29ya1Nlc3Npb25EZWxlZ2F0ZSBVUkxTZXNzaW9uOnRhc2s6ZGlkUmVjZWl2
ZUNoYWxsZW5nZTpjb21wbGV0aW9uSGFuZGxlcjpdKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29y
a1Nlc3Npb25Db2NvYTo6Y29udGludWVEaWRSZWNlaXZlQ2hhbGxlbmdlKToKKwogMjAxOS0wMS0y
OCAgQW50b2luZSBRdWludCAgPGdyYW91dHNAYXBwbGUuY29tPgogCiAgICAgICAgIExpbWl0IHVz
ZXItYWdlbnQgaW50ZXJhY3Rpb25zIGJhc2VkIG9uIHRoZSB0b3VjaC1hY3Rpb24gcHJvcGVydHkg
b24gaU9TCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybS5oIGIvU291cmNlL1dU
Ri93dGYvUGxhdGZvcm0uaAppbmRleCBhYTIxYzVmMmE4YzRhMTE5YjM1MmQ3NWE2OGYwZmUxZjY1
MDkxMWRiLi41MGVhMjEzNWY0ODkwOWU5ZmE5MjgxZWQ0NTlkZDExNzI1YmNkNWRhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybS5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL1BsYXRm
b3JtLmgKQEAgLTE0ODAsNiArMTQ4MCwxMCBAQAogI2RlZmluZSBIQVZFX0NGTkVUV09SS19PVkVS
UklERV9TRVNTSU9OX0NPT0tJRV9BQ0NFUFRfUE9MSUNZIDEKICNlbmRpZgogCisjaWYgKFBMQVRG
T1JNKE1BQykgJiYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDE1MDApIHx8
IChQTEFURk9STShJT1NfRkFNSUxZKSAmJiBfX0lQSE9ORV9PU19WRVJTSU9OX01JTl9SRVFVSVJF
RCA+PSAxMzAwMDApCisjZGVmaW5lIEhBVkVfQ0ZORVRXT1JLX05TVVJMU0VTU0lPTl9TVFJJQ1RS
VVNURVZBTFVBVEUgMQorI2VuZGlmCisKICNpZiAoUExBVEZPUk0oTUFDKSAmJiBfX01BQ19PU19Y
X1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwMTUwMCkgfHwgKFBMQVRGT1JNKElPU19GQU1JTFkp
ICYmIF9fSVBIT05FX09TX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEzMDAwMCkKICNkZWZpbmUg
SEFWRV9DRk5FVFdPUktfTkVHT1RJQVRFRF9TU0xfUFJPVE9DT0xfQ0lQSEVSIDEKICNlbmRpZgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUEFML3BhbC9zcGkvY2YvQ0ZOZXR3b3JrU1BJLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL3NwaS9jZi9DRk5ldHdvcmtTUEkuaAppbmRleCA5ZTIx
MWE2NjBmM2U5OTZjZjYyNmZhMjg5MzUzOWM5YTBjYjg3ODY0Li4yZmQ0ODJkOGY0ODJmZDdhMTdm
OGEzZmY1YmM2ZTkwZWU0NmFmOTlkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFs
L3NwaS9jZi9DRk5ldHdvcmtTUEkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL3NwaS9j
Zi9DRk5ldHdvcmtTUEkuaApAQCAtMjMxLDYgKzIzMSwxMiBAQCB0eXBlZGVmIE5TX0VOVU0oTlNJ
bnRlZ2VyLCBOU1VSTFNlc3Npb25Db21wYW5pb25Qcm94eVByZWZlcmVuY2UpIHsKIEBlbmQKICNl
bmRpZgogCisjaWYgSEFWRShDRk5FVFdPUktfTlNVUkxTRVNTSU9OX1NUUklDVFJVU1RFVkFMVUFU
RSkKK0BpbnRlcmZhY2UgTlNVUkxTZXNzaW9uIChTUEkpCisrICh2b2lkKV9zdHJpY3RUcnVzdEV2
YWx1YXRlOihOU1VSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlICopY2hhbGxlbmdlIHF1ZXVlOihk
aXNwYXRjaF9xdWV1ZV90KXF1ZXVlIGNvbXBsZXRpb25IYW5kbGVyOih2b2lkICheKShOU1VSTEF1
dGhlbnRpY2F0aW9uQ2hhbGxlbmdlICpjaGFsbGVuZ2UsIE9TU3RhdHVzIHRydXN0UmVzdWx0KSlj
YjsKK0BlbmQKKyNlbmRpZgorCiBleHRlcm4gTlNTdHJpbmcgKiBjb25zdCBOU1VSTEF1dGhlbnRp
Y2F0aW9uTWV0aG9kT0F1dGg7CiAKICNlbmRpZiAvLyBkZWZpbmVkKF9fT0JKQ19fKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrU2Vzc2lvbkNv
Y29hLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtTZXNzaW9u
Q29jb2EuaAppbmRleCAwZDY3MWMyOWNhMDk3Nzk5NWFhYjQ5ZWNmZDYyMjgxOWY2MTBjZDZiLi4x
ODYyMWE0OGUzMzRlZTNlNDhiM2ZkMzA0NzBlNTc4YmE4NjRhZWZmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtTZXNzaW9uQ29jb2EuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtTZXNzaW9uQ29jb2Eu
aApAQCAtNjIsNiArNjIsOCBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMgYm9vbCBhbGxvd3NTcGVj
aWZpY0hUVFBTQ2VydGlmaWNhdGVGb3JIb3N0KGNvbnN0IFdlYkNvcmU6OkF1dGhlbnRpY2F0aW9u
Q2hhbGxlbmdlJik7CiAKKyAgICB2b2lkIGNvbnRpbnVlRGlkUmVjZWl2ZUNoYWxsZW5nZShjb25z
dCBXZWJDb3JlOjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYsIE5ldHdvcmtEYXRhVGFza0NvY29h
OjpUYXNrSWRlbnRpZmllciwgTmV0d29ya0RhdGFUYXNrQ29jb2EqLCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKFdlYktpdDo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2VEaXNwb3NpdGlvbiwgY29uc3Qg
V2ViQ29yZTo6Q3JlZGVudGlhbCYpPiYmKTsKKwogcHJpdmF0ZToKICAgICBOZXR3b3JrU2Vzc2lv
bkNvY29hKE5ldHdvcmtQcm9jZXNzJiwgTmV0d29ya1Nlc3Npb25DcmVhdGlvblBhcmFtZXRlcnMm
Jik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0
d29ya1Nlc3Npb25Db2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2Ev
TmV0d29ya1Nlc3Npb25Db2NvYS5tbQppbmRleCA0YTFkNzkyMTBhZmE1OTZlNGIwZmFmY2U4MThm
ZjRmNjgyYjM4YjRhLi4xOGQ5MTEwMmY3OGQ1YmE4ODhkMjQxZDhjODM4YjVlNzkyYzk0YmJhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtTZXNz
aW9uQ29jb2EubW0KKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3
b3JrU2Vzc2lvbkNvY29hLm1tCkBAIC01MjEsNiArNTIxLDMxIEBAIHN0YXRpYyBOU1VSTFJlcXVl
c3QqIHVwZGF0ZUlnbm9yZVN0cmljdFRyYW5zcG9ydFNlY3VyaXR5U2V0dGluZ0lmTmVjZXNzYXJ5
KE5TVVJMCiAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHByb3Bvc2VkUmVzcG9uc2UpOwogfQog
CisjaWYgSEFWRShDRk5FVFdPUktfTlNVUkxTRVNTSU9OX1NUUklDVFJVU1RFVkFMVUFURSkKK3N0
YXRpYyBib29sIGNhbk5TVVJMU2Vzc2lvblRydXN0RXZhbHVhdGUoKQoreworICAgIHJldHVybiBb
TlNVUkxTZXNzaW9uIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoX3N0cmljdFRydXN0RXZh
bHVhdGU6IHF1ZXVlOiBjb21wbGV0aW9uSGFuZGxlcjopXTsKK30KKworc3RhdGljIGlubGluZSB2
b2lkIHByb2Nlc3NTZXJ2ZXJUcnVzdEV2YWx1YXRpb24oTmV0d29ya1Nlc3Npb25Db2NvYSAqc2Vz
c2lvbiwgTlNVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSAqY2hhbGxlbmdlLCBPU1N0YXR1cyB0
cnVzdFJlc3VsdCwgTmV0d29ya0RhdGFUYXNrQ29jb2E6OlRhc2tJZGVudGlmaWVyIHRhc2tJZGVu
dGlmaWVyLCBOZXR3b3JrRGF0YVRhc2tDb2NvYSogbmV0d29ya0RhdGFUYXNrLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKE5TVVJMU2Vzc2lvbkF1dGhDaGFsbGVuZ2VEaXNwb3NpdGlvbiBkaXNwb3Np
dGlvbiwgTlNVUkxDcmVkZW50aWFsICpjcmVkZW50aWFsKT4mJiBjb21wbGV0aW9uSGFuZGxlcikK
K3sKKyAgICBpZiAodHJ1c3RSZXN1bHQgPT0gbm9FcnIgfHwgbmV0d29ya0RhdGFUYXNrLT5zdGF0
ZSgpID09IE5ldHdvcmtEYXRhVGFzazo6U3RhdGU6OkNhbmNlbGluZyB8fCBuZXR3b3JrRGF0YVRh
c2stPnN0YXRlKCkgPT0gTmV0d29ya0RhdGFUYXNrOjpTdGF0ZTo6Q29tcGxldGVkKSB7CisgICAg
ICAgIGNvbXBsZXRpb25IYW5kbGVyKE5TVVJMU2Vzc2lvbkF1dGhDaGFsbGVuZ2VQZXJmb3JtRGVm
YXVsdEhhbmRsaW5nLCBuaWwpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgUmV0YWlu
UHRyPFNlY1RydXN0UmVmPiBzZWNUcnVzdCA9IGNoYWxsZW5nZS5wcm90ZWN0aW9uU3BhY2Uuc2Vy
dmVyVHJ1c3Q7CisgICAgc2Vzc2lvbi0+Y29udGludWVEaWRSZWNlaXZlQ2hhbGxlbmdlKGNoYWxs
ZW5nZSwgdGFza0lkZW50aWZpZXIsIG5ldHdvcmtEYXRhVGFzaywgW2NvbXBsZXRpb25IYW5kbGVy
ID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlciksIHNlY1RydXN0ID0gV1RGTW92ZShzZWNUcnVz
dCldIChXZWJLaXQ6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlRGlzcG9zaXRpb24gZGlzcG9zaXRp
b24sIGNvbnN0IFdlYkNvcmU6OkNyZWRlbnRpYWwmIGNyZWRlbnRpYWwpIG11dGFibGUgeworICAg
ICAgICAvLyBGSVhNRTogVUlQcm9jZXNzIHNob3VsZCBzZW5kIHVzIGJhY2sgbm9uIG5pbCBjcmVk
ZW50aWFscyBidXQgdGhlIGNyZWRlbnRpYWwgSVBDIGVuY29kZXIgY3VycmVudGx5IG9ubHkgc2Vy
aWFsaXplcyBucyBjcmVkZW50aWFscyBmb3IgdXNlcm5hbWUvcGFzc3dvcmQuCisgICAgICAgIGlm
IChkaXNwb3NpdGlvbiA9PSBXZWJLaXQ6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlRGlzcG9zaXRp
b246OlVzZUNyZWRlbnRpYWwgJiYgIWNyZWRlbnRpYWwubnNDcmVkZW50aWFsKCkpIHsKKyAgICAg
ICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKE5TVVJMU2Vzc2lvbkF1dGhDaGFsbGVuZ2VVc2VDcmVk
ZW50aWFsLCBbTlNVUkxDcmVkZW50aWFsIGNyZWRlbnRpYWxGb3JUcnVzdDogc2VjVHJ1c3QuZ2V0
KCldKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICBjb21wbGV0aW9u
SGFuZGxlcih0b05TVVJMU2Vzc2lvbkF1dGhDaGFsbGVuZ2VEaXNwb3NpdGlvbihkaXNwb3NpdGlv
biksIGNyZWRlbnRpYWwubnNDcmVkZW50aWFsKCkpOworICAgIH0pOworfQorI2VuZGlmCisKIC0g
KHZvaWQpVVJMU2Vzc2lvbjooTlNVUkxTZXNzaW9uICopc2Vzc2lvbiB0YXNrOihOU1VSTFNlc3Np
b25UYXNrICopdGFzayBkaWRSZWNlaXZlQ2hhbGxlbmdlOihOU1VSTEF1dGhlbnRpY2F0aW9uQ2hh
bGxlbmdlICopY2hhbGxlbmdlIGNvbXBsZXRpb25IYW5kbGVyOih2b2lkICheKShOU1VSTFNlc3Np
b25BdXRoQ2hhbGxlbmdlRGlzcG9zaXRpb24gZGlzcG9zaXRpb24sIE5TVVJMQ3JlZGVudGlhbCAq
Y3JlZGVudGlhbCkpY29tcGxldGlvbkhhbmRsZXIKIHsKICAgICBpZiAoIV9zZXNzaW9uKSB7CkBA
IC01NDMsNjEgKzU2OCwyMyBAQCBzdGF0aWMgTlNVUkxSZXF1ZXN0KiB1cGRhdGVJZ25vcmVTdHJp
Y3RUcmFuc3BvcnRTZWN1cml0eVNldHRpbmdJZk5lY2Vzc2FyeShOU1VSTAogICAgICAgICAgICAg
cmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKE5TVVJMU2Vzc2lvbkF1dGhDaGFsbGVuZ2VVc2VDcmVk
ZW50aWFsLCBbTlNVUkxDcmVkZW50aWFsIGNyZWRlbnRpYWxGb3JUcnVzdDpjaGFsbGVuZ2UucHJv
dGVjdGlvblNwYWNlLnNlcnZlclRydXN0XSk7CiAKICAgICAgICAgLy8gSGFuZGxlIHNlcnZlciB0
cnVzdCBldmFsdWF0aW9uIGF0IHBsYXRmb3JtLWxldmVsIGlmIHJlcXVlc3RlZCwgZm9yIHBlcmZv
cm1hbmNlIHJlYXNvbnMgYW5kIHRvIHVzZSBBVFMgZGVmYXVsdHMuCi0gICAgICAgIGlmICghX3Nl
c3Npb24tPm5ldHdvcmtQcm9jZXNzKCkuY2FuSGFuZGxlSFRUUFNTZXJ2ZXJUcnVzdEV2YWx1YXRp
b24oKSkKLSAgICAgICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxlcihOU1VSTFNlc3Npb25B
dXRoQ2hhbGxlbmdlUmVqZWN0UHJvdGVjdGlvblNwYWNlLCBuaWwpOwotICAgIH0KLQotICAgIGlm
IChhdXRvKiBuZXR3b3JrRGF0YVRhc2sgPSBbc2VsZiBleGlzdGluZ1Rhc2s6dGFza10pIHsKLSAg
ICAgICAgV2ViQ29yZTo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2UgYXV0aGVudGljYXRpb25DaGFs
bGVuZ2UoY2hhbGxlbmdlKTsKLSAgICAgICAgYXV0byBjb21wbGV0aW9uSGFuZGxlckNvcHkgPSBC
bG9ja19jb3B5KGNvbXBsZXRpb25IYW5kbGVyKTsKLSAgICAgICAgYXV0byBzZXNzaW9uSUQgPSBf
c2Vzc2lvbi0+c2Vzc2lvbklEKCk7Ci0gICAgICAgIGF1dG8gY2hhbGxlbmdlQ29tcGxldGlvbkhh
bmRsZXIgPSBbbmV0d29ya1Byb2Nlc3MgPSBtYWtlUmVmKF9zZXNzaW9uLT5uZXR3b3JrUHJvY2Vz
cygpKSwgY29tcGxldGlvbkhhbmRsZXJDb3B5LCBzZXNzaW9uSUQsIGF1dGhlbnRpY2F0aW9uQ2hh
bGxlbmdlLCB0YXNrSWRlbnRpZmllciwgcGFydGl0aW9uID0gbmV0d29ya0RhdGFUYXNrLT5wYXJ0
aXRpb24oKV0oV2ViS2l0OjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZURpc3Bvc2l0aW9uIGRpc3Bv
c2l0aW9uLCBjb25zdCBXZWJDb3JlOjpDcmVkZW50aWFsJiBjcmVkZW50aWFsKQotICAgICAgICB7
Ci0jaWYgIUxPR19ESVNBQkxFRAotICAgICAgICAgICAgTE9HKE5ldHdvcmtTZXNzaW9uLCAiJWxs
dSBkaWRSZWNlaXZlQ2hhbGxlbmdlIGNvbXBsZXRpb25IYW5kbGVyICVkIiwgdGFza0lkZW50aWZp
ZXIsIGRpc3Bvc2l0aW9uKTsKLSNlbHNlCi0gICAgICAgICAgICBVTlVTRURfUEFSQU0odGFza0lk
ZW50aWZpZXIpOwotI2VuZGlmCi0jaWYgIVVTRShDUkVERU5USUFMX1NUT1JBR0VfV0lUSF9ORVRX
T1JLX1NFU1NJT04pCi0gICAgICAgICAgICBVTlVTRURfUEFSQU0oc2Vzc2lvbklEKTsKLSAgICAg
ICAgICAgIFVOVVNFRF9QQVJBTShhdXRoZW50aWNhdGlvbkNoYWxsZW5nZSk7Ci0jZWxzZQotICAg
ICAgICAgICAgaWYgKGNyZWRlbnRpYWwucGVyc2lzdGVuY2UoKSA9PSBXZWJDb3JlOjpDcmVkZW50
aWFsUGVyc2lzdGVuY2VGb3JTZXNzaW9uICYmIGF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLnByb3Rl
Y3Rpb25TcGFjZSgpLmlzUGFzc3dvcmRCYXNlZCgpKSB7Ci0KLSAgICAgICAgICAgICAgICBXZWJD
b3JlOjpDcmVkZW50aWFsIG5vblBlcnNpc3RlbnRDcmVkZW50aWFsKGNyZWRlbnRpYWwudXNlcigp
LCBjcmVkZW50aWFsLnBhc3N3b3JkKCksIFdlYkNvcmU6OkNyZWRlbnRpYWxQZXJzaXN0ZW5jZU5v
bmUpOwotICAgICAgICAgICAgICAgIFVSTCB1cmxUb1N0b3JlOwotICAgICAgICAgICAgICAgIGlm
IChhdXRoZW50aWNhdGlvbkNoYWxsZW5nZS5mYWlsdXJlUmVzcG9uc2UoKS5odHRwU3RhdHVzQ29k
ZSgpID09IDQwMSkKLSAgICAgICAgICAgICAgICAgICAgdXJsVG9TdG9yZSA9IGF1dGhlbnRpY2F0
aW9uQ2hhbGxlbmdlLmZhaWx1cmVSZXNwb25zZSgpLnVybCgpOwotICAgICAgICAgICAgICAgIGlm
IChhdXRvIHN0b3JhZ2VTZXNzaW9uID0gbmV0d29ya1Byb2Nlc3MtPnN0b3JhZ2VTZXNzaW9uKHNl
c3Npb25JRCkpCi0gICAgICAgICAgICAgICAgICAgIHN0b3JhZ2VTZXNzaW9uLT5jcmVkZW50aWFs
U3RvcmFnZSgpLnNldChwYXJ0aXRpb24sIG5vblBlcnNpc3RlbnRDcmVkZW50aWFsLCBhdXRoZW50
aWNhdGlvbkNoYWxsZW5nZS5wcm90ZWN0aW9uU3BhY2UoKSwgdXJsVG9TdG9yZSk7Ci0gICAgICAg
ICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsK
LQotICAgICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyQ29weSh0b05TVVJMU2Vzc2lvbkF1
dGhDaGFsbGVuZ2VEaXNwb3NpdGlvbihkaXNwb3NpdGlvbiksIG5vblBlcnNpc3RlbnRDcmVkZW50
aWFsLm5zQ3JlZGVudGlhbCgpKTsKLSAgICAgICAgICAgIH0gZWxzZQotI2VuZGlmCi0gICAgICAg
ICAgICAgICAgY29tcGxldGlvbkhhbmRsZXJDb3B5KHRvTlNVUkxTZXNzaW9uQXV0aENoYWxsZW5n
ZURpc3Bvc2l0aW9uKGRpc3Bvc2l0aW9uKSwgY3JlZGVudGlhbC5uc0NyZWRlbnRpYWwoKSk7Ci0g
ICAgICAgICAgICBCbG9ja19yZWxlYXNlKGNvbXBsZXRpb25IYW5kbGVyQ29weSk7Ci0gICAgICAg
IH07Ci0gICAgICAgIG5ldHdvcmtEYXRhVGFzay0+ZGlkUmVjZWl2ZUNoYWxsZW5nZShjaGFsbGVu
Z2UsIFdURk1vdmUoY2hhbGxlbmdlQ29tcGxldGlvbkhhbmRsZXIpKTsKLSAgICB9IGVsc2Ugewot
ICAgICAgICBhdXRvIGRvd25sb2FkSUQgPSBfc2Vzc2lvbi0+ZG93bmxvYWRJRCh0YXNrSWRlbnRp
Zmllcik7Ci0gICAgICAgIGlmIChkb3dubG9hZElELmRvd25sb2FkSUQoKSkgewotICAgICAgICAg
ICAgaWYgKGF1dG8qIGRvd25sb2FkID0gX3Nlc3Npb24tPm5ldHdvcmtQcm9jZXNzKCkuZG93bmxv
YWRNYW5hZ2VyKCkuZG93bmxvYWQoZG93bmxvYWRJRCkpIHsKLSAgICAgICAgICAgICAgICAvLyBS
ZWNlaXZlZCBhbiBhdXRoZW50aWNhdGlvbiBjaGFsbGVuZ2UgZm9yIGEgZG93bmxvYWQgYmVpbmcg
cmVzdW1lZC4KLSAgICAgICAgICAgICAgICBXZWJDb3JlOjpBdXRoZW50aWNhdGlvbkNoYWxsZW5n
ZSBhdXRoZW50aWNhdGlvbkNoYWxsZW5nZSB7IGNoYWxsZW5nZSB9OwotICAgICAgICAgICAgICAg
IGF1dG8gY29tcGxldGlvbkhhbmRsZXJDb3B5ID0gQmxvY2tfY29weShjb21wbGV0aW9uSGFuZGxl
cik7Ci0gICAgICAgICAgICAgICAgYXV0byBjaGFsbGVuZ2VDb21wbGV0aW9uSGFuZGxlciA9IFtj
b21wbGV0aW9uSGFuZGxlckNvcHksIGF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlXShXZWJLaXQ6OkF1
dGhlbnRpY2F0aW9uQ2hhbGxlbmdlRGlzcG9zaXRpb24gZGlzcG9zaXRpb24sIGNvbnN0IFdlYkNv
cmU6OkNyZWRlbnRpYWwmIGNyZWRlbnRpYWwpIHsKLSAgICAgICAgICAgICAgICAgICAgY29tcGxl
dGlvbkhhbmRsZXJDb3B5KHRvTlNVUkxTZXNzaW9uQXV0aENoYWxsZW5nZURpc3Bvc2l0aW9uKGRp
c3Bvc2l0aW9uKSwgY3JlZGVudGlhbC5uc0NyZWRlbnRpYWwoKSk7Ci0gICAgICAgICAgICAgICAg
ICAgIEJsb2NrX3JlbGVhc2UoY29tcGxldGlvbkhhbmRsZXJDb3B5KTsKLSAgICAgICAgICAgICAg
ICB9OwotICAgICAgICAgICAgICAgIGRvd25sb2FkLT5kaWRSZWNlaXZlQ2hhbGxlbmdlKGNoYWxs
ZW5nZSwgV1RGTW92ZShjaGFsbGVuZ2VDb21wbGV0aW9uSGFuZGxlcikpOworICAgICAgICBpZiAo
IV9zZXNzaW9uLT5uZXR3b3JrUHJvY2VzcygpLmNhbkhhbmRsZUhUVFBTU2VydmVyVHJ1c3RFdmFs
dWF0aW9uKCkpIHsKKyNpZiBIQVZFKENGTkVUV09SS19OU1VSTFNFU1NJT05fU1RSSUNUUlVTVEVW
QUxVQVRFKQorICAgICAgICAgICAgaWYgKGNhbk5TVVJMU2Vzc2lvblRydXN0RXZhbHVhdGUoKSkg
eworICAgICAgICAgICAgICAgIGF1dG8qIG5ldHdvcmtEYXRhVGFzayA9IFtzZWxmIGV4aXN0aW5n
VGFzazp0YXNrXTsKKyAgICAgICAgICAgICAgICBhdXRvIGRlY2lzaW9uSGFuZGxlciA9IG1ha2VC
bG9ja1B0cihbX3Nlc3Npb24gPSBfc2Vzc2lvbi5jb3B5UmVmKCksIGNvbXBsZXRpb25IYW5kbGVy
ID0gbWFrZUJsb2NrUHRyKGNvbXBsZXRpb25IYW5kbGVyKSwgdGFza0lkZW50aWZpZXIsIG5ldHdv
cmtEYXRhVGFzayA9IFJlZlB0cjxOZXR3b3JrRGF0YVRhc2tDb2NvYT4obmV0d29ya0RhdGFUYXNr
KV0oTlNVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSAqY2hhbGxlbmdlLCBPU1N0YXR1cyB0cnVz
dFJlc3VsdCkgbXV0YWJsZSB7CisgICAgICAgICAgICAgICAgICAgIHByb2Nlc3NTZXJ2ZXJUcnVz
dEV2YWx1YXRpb24oX3Nlc3Npb24uZ2V0KCksIGNoYWxsZW5nZSwgdHJ1c3RSZXN1bHQsIHRhc2tJ
ZGVudGlmaWVyLCBuZXR3b3JrRGF0YVRhc2suZ2V0KCksIFdURk1vdmUoY29tcGxldGlvbkhhbmRs
ZXIpKTsKKyAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgICAgICBbTlNVUkxTZXNzaW9u
IF9zdHJpY3RUcnVzdEV2YWx1YXRlOmNoYWxsZW5nZSBxdWV1ZTpbTlNPcGVyYXRpb25RdWV1ZSBt
YWluUXVldWVdLnVuZGVybHlpbmdRdWV1ZSBjb21wbGV0aW9uSGFuZGxlcjpkZWNpc2lvbkhhbmRs
ZXIuZ2V0KCldOwogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIH0KKyNlbmRp
ZgorICAgICAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKE5TVVJMU2Vzc2lvbkF1dGhD
aGFsbGVuZ2VSZWplY3RQcm90ZWN0aW9uU3BhY2UsIG5pbCk7CiAgICAgICAgIH0KLSAgICAgICAg
TE9HKE5ldHdvcmtTZXNzaW9uLCAiJWxsdSBkaWRSZWNlaXZlQ2hhbGxlbmdlIGNvbXBsZXRpb25I
YW5kbGVyIChjYW5jZWwpIiwgdGFza0lkZW50aWZpZXIpOwotICAgICAgICBjb21wbGV0aW9uSGFu
ZGxlcihOU1VSTFNlc3Npb25BdXRoQ2hhbGxlbmdlQ2FuY2VsQXV0aGVudGljYXRpb25DaGFsbGVu
Z2UsIG5pbCk7CiAgICAgfQorICAgIF9zZXNzaW9uLT5jb250aW51ZURpZFJlY2VpdmVDaGFsbGVu
Z2UoY2hhbGxlbmdlLCB0YXNrSWRlbnRpZmllciwgW3NlbGYgZXhpc3RpbmdUYXNrOnRhc2tdLCBb
Y29tcGxldGlvbkhhbmRsZXIgPSBtYWtlQmxvY2tQdHIoY29tcGxldGlvbkhhbmRsZXIpXSAoV2Vi
S2l0OjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZURpc3Bvc2l0aW9uIGRpc3Bvc2l0aW9uLCBjb25z
dCBXZWJDb3JlOjpDcmVkZW50aWFsJiBjcmVkZW50aWFsKSBtdXRhYmxlIHsKKyAgICAgICAgY29t
cGxldGlvbkhhbmRsZXIodG9OU1VSTFNlc3Npb25BdXRoQ2hhbGxlbmdlRGlzcG9zaXRpb24oZGlz
cG9zaXRpb24pLCBjcmVkZW50aWFsLm5zQ3JlZGVudGlhbCgpKTsKKyAgICB9KTsKIH0KIAogLSAo
dm9pZClVUkxTZXNzaW9uOihOU1VSTFNlc3Npb24gKilzZXNzaW9uIHRhc2s6KE5TVVJMU2Vzc2lv
blRhc2sgKil0YXNrIGRpZENvbXBsZXRlV2l0aEVycm9yOihOU0Vycm9yICopZXJyb3IKQEAgLTEw
NTMsNCArMTA0MCw1MyBAQCBib29sIE5ldHdvcmtTZXNzaW9uQ29jb2E6OmFsbG93c1NwZWNpZmlj
SFRUUFNDZXJ0aWZpY2F0ZUZvckhvc3QoY29uc3QgV2ViQ29yZTo6QQogICAgIHJldHVybiBjZXJ0
aWZpY2F0ZXNNYXRjaCh0cnVzdC5nZXQoKSwgY2hhbGxlbmdlLm5zVVJMQXV0aGVudGljYXRpb25D
aGFsbGVuZ2UoKS5wcm90ZWN0aW9uU3BhY2Uuc2VydmVyVHJ1c3QpOwogfQogCit2b2lkIE5ldHdv
cmtTZXNzaW9uQ29jb2E6OmNvbnRpbnVlRGlkUmVjZWl2ZUNoYWxsZW5nZShjb25zdCBXZWJDb3Jl
OjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYgY2hhbGxlbmdlLCBOZXR3b3JrRGF0YVRhc2tDb2Nv
YTo6VGFza0lkZW50aWZpZXIgdGFza0lkZW50aWZpZXIsIE5ldHdvcmtEYXRhVGFza0NvY29hKiBu
ZXR3b3JrRGF0YVRhc2ssIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViS2l0OjpBdXRoZW50aWNh
dGlvbkNoYWxsZW5nZURpc3Bvc2l0aW9uLCBjb25zdCBXZWJDb3JlOjpDcmVkZW50aWFsJik+JiYg
Y29tcGxldGlvbkhhbmRsZXIpCisKK3sKKyAgICBpZiAoIW5ldHdvcmtEYXRhVGFzaykgeworICAg
ICAgICBhdXRvIGRvd25sb2FkSUQgPSB0aGlzLT5kb3dubG9hZElEKHRhc2tJZGVudGlmaWVyKTsK
KyAgICAgICAgaWYgKGRvd25sb2FkSUQuZG93bmxvYWRJRCgpKSB7CisgICAgICAgICAgICBpZiAo
YXV0byogZG93bmxvYWQgPSBuZXR3b3JrUHJvY2VzcygpLmRvd25sb2FkTWFuYWdlcigpLmRvd25s
b2FkKGRvd25sb2FkSUQpKSB7CisgICAgICAgICAgICAgICAgV2ViQ29yZTo6QXV0aGVudGljYXRp
b25DaGFsbGVuZ2UgYXV0aGVudGljYXRpb25DaGFsbGVuZ2UgeyBjaGFsbGVuZ2UgfTsKKyAgICAg
ICAgICAgICAgICAvLyBSZWNlaXZlZCBhbiBhdXRoZW50aWNhdGlvbiBjaGFsbGVuZ2UgZm9yIGEg
ZG93bmxvYWQgYmVpbmcgcmVzdW1lZC4KKyAgICAgICAgICAgICAgICBkb3dubG9hZC0+ZGlkUmVj
ZWl2ZUNoYWxsZW5nZShhdXRoZW50aWNhdGlvbkNoYWxsZW5nZSwgV1RGTW92ZShjb21wbGV0aW9u
SGFuZGxlcikpOworICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKyAgICAg
ICAgfQorICAgICAgICBMT0coTmV0d29ya1Nlc3Npb24sICIlbGx1IGRpZFJlY2VpdmVDaGFsbGVu
Z2UgY29tcGxldGlvbkhhbmRsZXIgKGNhbmNlbCkiLCB0YXNrSWRlbnRpZmllcik7CisgICAgICAg
IGNvbXBsZXRpb25IYW5kbGVyKEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlRGlzcG9zaXRpb246OkNh
bmNlbCwgeyB9KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGF1dG8gc2Vzc2lvbklE
ID0gdGhpcy0+c2Vzc2lvbklEKCk7CisgICAgV2ViQ29yZTo6QXV0aGVudGljYXRpb25DaGFsbGVu
Z2UgYXV0aGVudGljYXRpb25DaGFsbGVuZ2UgeyBjaGFsbGVuZ2UgfTsKKyAgICBhdXRvIGNoYWxs
ZW5nZUNvbXBsZXRpb25IYW5kbGVyID0gW2NvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21w
bGV0aW9uSGFuZGxlciksIG5ldHdvcmtQcm9jZXNzID0gbWFrZVJlZihuZXR3b3JrUHJvY2Vzcygp
KSwgc2Vzc2lvbklELCBhdXRoZW50aWNhdGlvbkNoYWxsZW5nZSwgdGFza0lkZW50aWZpZXIsIHBh
cnRpdGlvbiA9IG5ldHdvcmtEYXRhVGFzay0+cGFydGl0aW9uKCldKFdlYktpdDo6QXV0aGVudGlj
YXRpb25DaGFsbGVuZ2VEaXNwb3NpdGlvbiBkaXNwb3NpdGlvbiwgY29uc3QgV2ViQ29yZTo6Q3Jl
ZGVudGlhbCYgY3JlZGVudGlhbCkgbXV0YWJsZSB7CisjaWYgIUxPR19ESVNBQkxFRAorICAgICAg
ICBMT0coTmV0d29ya1Nlc3Npb24sICIlbGx1IGRpZFJlY2VpdmVDaGFsbGVuZ2UgY29tcGxldGlv
bkhhbmRsZXIgJWQiLCB0YXNrSWRlbnRpZmllciwgZGlzcG9zaXRpb24pOworI2Vsc2UKKyAgICAg
ICAgVU5VU0VEX1BBUkFNKHRhc2tJZGVudGlmaWVyKTsKKyNlbmRpZgorI2lmICFVU0UoQ1JFREVO
VElBTF9TVE9SQUdFX1dJVEhfTkVUV09SS19TRVNTSU9OKQorICAgICAgICBVTlVTRURfUEFSQU0o
c2Vzc2lvbklEKTsKKyAgICAgICAgVU5VU0VEX1BBUkFNKGF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdl
KTsKKyNlbHNlCisgICAgICAgIGlmIChjcmVkZW50aWFsLnBlcnNpc3RlbmNlKCkgPT0gV2ViQ29y
ZTo6Q3JlZGVudGlhbFBlcnNpc3RlbmNlRm9yU2Vzc2lvbiAmJiBhdXRoZW50aWNhdGlvbkNoYWxs
ZW5nZS5wcm90ZWN0aW9uU3BhY2UoKS5pc1Bhc3N3b3JkQmFzZWQoKSkgeworICAgICAgICAgICAg
V2ViQ29yZTo6Q3JlZGVudGlhbCBub25QZXJzaXN0ZW50Q3JlZGVudGlhbChjcmVkZW50aWFsLnVz
ZXIoKSwgY3JlZGVudGlhbC5wYXNzd29yZCgpLCBXZWJDb3JlOjpDcmVkZW50aWFsUGVyc2lzdGVu
Y2VOb25lKTsKKyAgICAgICAgICAgIFVSTCB1cmxUb1N0b3JlOworICAgICAgICAgICAgaWYgKGF1
dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLmZhaWx1cmVSZXNwb25zZSgpLmh0dHBTdGF0dXNDb2RlKCkg
PT0gNDAxKQorICAgICAgICAgICAgICAgIHVybFRvU3RvcmUgPSBhdXRoZW50aWNhdGlvbkNoYWxs
ZW5nZS5mYWlsdXJlUmVzcG9uc2UoKS51cmwoKTsKKyAgICAgICAgICAgIGlmIChhdXRvIHN0b3Jh
Z2VTZXNzaW9uID0gbmV0d29ya1Byb2Nlc3MtPnN0b3JhZ2VTZXNzaW9uKHNlc3Npb25JRCkpCisg
ICAgICAgICAgICAgICAgc3RvcmFnZVNlc3Npb24tPmNyZWRlbnRpYWxTdG9yYWdlKCkuc2V0KHBh
cnRpdGlvbiwgbm9uUGVyc2lzdGVudENyZWRlbnRpYWwsIGF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdl
LnByb3RlY3Rpb25TcGFjZSgpLCB1cmxUb1N0b3JlKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAg
ICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKworICAgICAgICAgICAgY29tcGxldGlv
bkhhbmRsZXIoZGlzcG9zaXRpb24sIG5vblBlcnNpc3RlbnRDcmVkZW50aWFsKTsKKyAgICAgICAg
ICAgIHJldHVybjsKKyAgICAgICAgfQorI2VuZGlmCisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVy
KGRpc3Bvc2l0aW9uLCBjcmVkZW50aWFsKTsKKyAgICB9OworICAgIG5ldHdvcmtEYXRhVGFzay0+
ZGlkUmVjZWl2ZUNoYWxsZW5nZShXVEZNb3ZlKGF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKSwgV1RG
TW92ZShjaGFsbGVuZ2VDb21wbGV0aW9uSGFuZGxlcikpOworfQorCiB9CmRpZmYgLS1naXQgYS9U
b29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggZTQwZGU1N2ZkZjM4YzY0ZWI4
NWU3YTMzYWNjMDNhNGRhMWFkMTdhOS4uOGZiNjA1MTRiOTA5Y2RhMmU3YjI0MjU4N2JiNGU4OTY5
YmVlMGFkYiAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDI5IEBACisyMDE5LTAxLTI5ICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFw
cGxlLmNvbT4KKworICAgICAgICBBZG9wdCBuZXcgU1BJIHRvIGV2YWx1YXRlIHNlcnZlciBjZXJ0
aWZpY2F0ZSB0cnVzdAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTkzMzU1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgQWRkIGluZnJhc3RydWN0dXJlIHRvIGhhbmRsZSBIVFRQUyBzZXJ2ZXIgdHJ1c3QgZXZh
bHVhdGlvbiB0ZXN0aW5nLgorCisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1
bmRsZS9CaW5kaW5ncy9UZXN0UnVubmVyLmlkbDoKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVy
L0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuY3BwOgorICAgICAgICAoV1RSOjpUZXN0UnVubmVy
OjpzZXRDYW5IYW5kbGVIVFRQU1NlcnZlclRydXN0RXZhbHVhdGlvbik6CisgICAgICAgIChXVFI6
OlRlc3RSdW5uZXI6OmNhbkRvU2VydmVyVHJ1c3RFdmFsdWF0aW9uSW5OZXR3b3JrUHJvY2Vzcyk6
CisgICAgICAgIChXVFI6OlRlc3RSdW5uZXI6OnNlcnZlclRydXN0RXZhbHVhdGlvbkNhbGxiYWNr
Q2FsbHNDb3VudCk6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9U
ZXN0UnVubmVyLmg6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5j
cHA6CisgICAgICAgIChXVFI6OlRlc3RDb250cm9sbGVyOjpyZXNldFByZWZlcmVuY2VzVG9Db25z
aXN0ZW50VmFsdWVzKToKKyAgICAgICAgKFdUUjo6VGVzdENvbnRyb2xsZXI6OmRpZFJlY2VpdmVB
dXRoZW50aWNhdGlvbkNoYWxsZW5nZSk6CisgICAgICAgIChXVFI6OlRlc3RDb250cm9sbGVyOjpj
YW5Eb1NlcnZlclRydXN0RXZhbHVhdGlvbkluTmV0d29ya1Byb2Nlc3MgY29uc3QpOgorICAgICAg
ICAqIFdlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuaDoKKyAgICAgICAgKFdUUjo6VGVz
dENvbnRyb2xsZXI6OnNlcnZlclRydXN0RXZhbHVhdGlvbkNhbGxiYWNrQ2FsbHNDb3VudCBjb25z
dCk6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlvbi5jcHA6CisgICAg
ICAgIChXVFI6OlRlc3RJbnZvY2F0aW9uOjpkaWRSZWNlaXZlU3luY2hyb25vdXNNZXNzYWdlRnJv
bUluamVjdGVkQnVuZGxlKToKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL2NvY29hL1Rlc3RD
b250cm9sbGVyQ29jb2EubW06CisgICAgICAgIChXVFI6OlRlc3RDb250cm9sbGVyOjpjYW5Eb1Nl
cnZlclRydXN0RXZhbHVhdGlvbkluTmV0d29ya1Byb2Nlc3MgY29uc3QpOgorCiAyMDE5LTAxLTI4
ICBaYWxhbiBCdWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+CiAKICAgICAgICAgW0xGQ11bTWFyZ2lu
Q29sbGFwc2luZ11bUXVpcmtzXSBRdWlyayBtYXJnaW4gdmFsdWVzIGdldCBwcm9wYWdhdGVkIHRo
cm91Z2ggbWFyZ2luIGNvbGxhcHNpbmcKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5u
ZXIvSW5qZWN0ZWRCdW5kbGUvQmluZGluZ3MvVGVzdFJ1bm5lci5pZGwgYi9Ub29scy9XZWJLaXRU
ZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0JpbmRpbmdzL1Rlc3RSdW5uZXIuaWRsCmluZGV4IGYx
NTU1MGY1MzBlZDBmM2Q1MTk0NzgwMjI2OTUyMDFlOTAyY2JhYjMuLmY2NzFhMGFiZTdlNjViZDcx
NTQyZGYyMGZkNzc4MThhNjk3ZWVkMWYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5u
ZXIvSW5qZWN0ZWRCdW5kbGUvQmluZGluZ3MvVGVzdFJ1bm5lci5pZGwKKysrIGIvVG9vbHMvV2Vi
S2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9CaW5kaW5ncy9UZXN0UnVubmVyLmlkbApAQCAt
MzM4LDYgKzMzOCwxMCBAQCBpbnRlcmZhY2UgVGVzdFJ1bm5lciB7CiAgICAgdm9pZCB0ZXJtaW5h
dGVOZXR3b3JrUHJvY2VzcygpOwogICAgIHZvaWQgdGVybWluYXRlU2VydmljZVdvcmtlclByb2Nl
c3MoKTsKIAorICAgIHZvaWQgc2V0Q2FuSGFuZGxlSFRUUFNTZXJ2ZXJUcnVzdEV2YWx1YXRpb24o
Ym9vbGVhbiBjYW5IYW5kbGUpOworICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBib29sZWFuIGNhbkRv
U2VydmVyVHJ1c3RFdmFsdWF0aW9uSW5OZXR3b3JrUHJvY2VzczsKKyAgICByZWFkb25seSBhdHRy
aWJ1dGUgdW5zaWduZWQgbG9uZyBzZXJ2ZXJUcnVzdEV2YWx1YXRpb25DYWxsYmFja0NhbGxzQ291
bnQ7CisKICAgICByZWFkb25seSBhdHRyaWJ1dGUgYm9vbGVhbiBkaWRDYW5jZWxDbGllbnRSZWRp
cmVjdDsKIAogICAgIHZvaWQgcmVtb3ZlQWxsU2Vzc2lvbkNyZWRlbnRpYWxzKG9iamVjdCBjYWxs
YmFjayk7CmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxl
L1Rlc3RSdW5uZXIuY3BwIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9U
ZXN0UnVubmVyLmNwcAppbmRleCAxMDBhYjdjNDBmNzM4OTI5ZDkyNmNlODQ2OWYxMDY3MzJkMjA3
ZDY4Li5hNjU5ZDE2OWFlZjJmZjBmNmZkMmRkNzgwNjEzN2UyNjMxYTRlNTI2IDEwMDY0NAotLS0g
YS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuY3BwCisr
KyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5jcHAK
QEAgLTI2OTAsNCArMjY5MCwyOSBAQCBib29sIFRlc3RSdW5uZXI6OmtleUV4aXN0c0luS2V5Y2hh
aW4oSlNTdHJpbmdSZWYgYXR0ckxhYmVsLCBKU1N0cmluZ1JlZiBhcHBsaWNhdAogICAgIHJldHVy
biBXS0Jvb2xlYW5HZXRWYWx1ZShhZG9wdFdLKHN0YXRpY19jYXN0PFdLQm9vbGVhblJlZj4ocmV0
dXJuRGF0YSkpLmdldCgpKTsKIH0KIAordm9pZCBUZXN0UnVubmVyOjpzZXRDYW5IYW5kbGVIVFRQ
U1NlcnZlclRydXN0RXZhbHVhdGlvbihib29sIGNhbkhhbmRsZSkKK3sKKyAgICBXS1JldGFpblB0
cjxXS1N0cmluZ1JlZj4gbWVzc2FnZU5hbWUoQWRvcHRXSywgV0tTdHJpbmdDcmVhdGVXaXRoVVRG
OENTdHJpbmcoIlNldENhbkhhbmRsZUhUVFBTU2VydmVyVHJ1c3RFdmFsdWF0aW9uIikpOworICAg
IFdLUmV0YWluUHRyPFdLQm9vbGVhblJlZj4gbWVzc2FnZUJvZHkoQWRvcHRXSywgV0tCb29sZWFu
Q3JlYXRlKGNhbkhhbmRsZSkpOworICAgIFdLQnVuZGxlUG9zdFN5bmNocm9ub3VzTWVzc2FnZShJ
bmplY3RlZEJ1bmRsZTo6c2luZ2xldG9uKCkuYnVuZGxlKCksIG1lc3NhZ2VOYW1lLmdldCgpLCBt
ZXNzYWdlQm9keS5nZXQoKSwgbnVsbHB0cik7Cit9CisKK2Jvb2wgVGVzdFJ1bm5lcjo6Y2FuRG9T
ZXJ2ZXJUcnVzdEV2YWx1YXRpb25Jbk5ldHdvcmtQcm9jZXNzKCkKK3sKKyAgICBXS1JldGFpblB0
cjxXS1N0cmluZ1JlZj4gbWVzc2FnZU5hbWUoQWRvcHRXSywgV0tTdHJpbmdDcmVhdGVXaXRoVVRG
OENTdHJpbmcoIkNhbkRvU2VydmVyVHJ1c3RFdmFsdWF0aW9uSW5OZXR3b3JrUHJvY2VzcyIpKTsK
KyAgICBXS1R5cGVSZWYgcmV0dXJuRGF0YSA9IG51bGxwdHI7CisgICAgV0tCdW5kbGVQYWdlUG9z
dFN5bmNocm9ub3VzTWVzc2FnZUZvclRlc3RpbmcoSW5qZWN0ZWRCdW5kbGU6OnNpbmdsZXRvbigp
LnBhZ2UoKS0+cGFnZSgpLCBtZXNzYWdlTmFtZS5nZXQoKSwgbnVsbHB0ciwgJnJldHVybkRhdGEp
OworICAgIEFTU0VSVChXS0dldFR5cGVJRChyZXR1cm5EYXRhKSA9PSBXS0Jvb2xlYW5HZXRUeXBl
SUQoKSk7CisgICAgcmV0dXJuIFdLQm9vbGVhbkdldFZhbHVlKGFkb3B0V0soc3RhdGljX2Nhc3Q8
V0tCb29sZWFuUmVmPihyZXR1cm5EYXRhKSkuZ2V0KCkpOworfQorCit1bnNpZ25lZCBsb25nIFRl
c3RSdW5uZXI6OnNlcnZlclRydXN0RXZhbHVhdGlvbkNhbGxiYWNrQ2FsbHNDb3VudCgpCit7Cisg
ICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+IG1lc3NhZ2VOYW1lKEFkb3B0V0ssIFdLU3RyaW5n
Q3JlYXRlV2l0aFVURjhDU3RyaW5nKCJTZXJ2ZXJUcnVzdEV2YWx1YXRpb25DYWxsYmFja0NhbGxz
Q291bnQiKSk7CisgICAgV0tUeXBlUmVmIHJldHVybkRhdGEgPSBudWxscHRyOworICAgIFdLQnVu
ZGxlUGFnZVBvc3RTeW5jaHJvbm91c01lc3NhZ2VGb3JUZXN0aW5nKEluamVjdGVkQnVuZGxlOjpz
aW5nbGV0b24oKS5wYWdlKCktPnBhZ2UoKSwgbWVzc2FnZU5hbWUuZ2V0KCksIG51bGxwdHIsICZy
ZXR1cm5EYXRhKTsKKyAgICBBU1NFUlQoV0tHZXRUeXBlSUQocmV0dXJuRGF0YSkgPT0gV0tVSW50
NjRHZXRUeXBlSUQoKSk7CisgICAgcmV0dXJuIFdLVUludDY0R2V0VmFsdWUoYWRvcHRXSyhzdGF0
aWNfY2FzdDxXS1VJbnQ2NFJlZj4ocmV0dXJuRGF0YSkpLmdldCgpKTsKK30KKwogfSAvLyBuYW1l
c3BhY2UgV1RSCmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVu
ZGxlL1Rlc3RSdW5uZXIuaCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUv
VGVzdFJ1bm5lci5oCmluZGV4IGE0MDE5OTlmNDEyZTliZDM5MzJhYjgxYzg0Yjc3NzNkNWRmMDcz
ZjMuLjk0YTlhMTUzZmRlZjdjNmMxMGFjNzQ0YWQyNjdmNWM2N2M1MjY3OTIgMTAwNjQ0Ci0tLSBh
L1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5oCisrKyBi
L1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5oCkBAIC00
ODEsNiArNDgxLDEwIEBAIHB1YmxpYzoKICAgICB2b2lkIGNsZWFuVXBLZXljaGFpbihKU1N0cmlu
Z1JlZiBhdHRyTGFiZWwpOwogICAgIGJvb2wga2V5RXhpc3RzSW5LZXljaGFpbihKU1N0cmluZ1Jl
ZiBhdHRyTGFiZWwsIEpTU3RyaW5nUmVmIGFwcGxpY2F0aW9uVGFnQmFzZTY0KTsKIAorICAgIHZv
aWQgc2V0Q2FuSGFuZGxlSFRUUFNTZXJ2ZXJUcnVzdEV2YWx1YXRpb24oYm9vbCBjYW5IYW5kbGUp
OworICAgIGJvb2wgY2FuRG9TZXJ2ZXJUcnVzdEV2YWx1YXRpb25Jbk5ldHdvcmtQcm9jZXNzKCk7
CisgICAgdW5zaWduZWQgbG9uZyBzZXJ2ZXJUcnVzdEV2YWx1YXRpb25DYWxsYmFja0NhbGxzQ291
bnQoKTsKKwogcHJpdmF0ZToKICAgICBUZXN0UnVubmVyKCk7CiAKZGlmZiAtLWdpdCBhL1Rvb2xz
L1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwIGIvVG9vbHMvV2ViS2l0VGVzdFJ1
bm5lci9UZXN0Q29udHJvbGxlci5jcHAKaW5kZXggMGNmZjcxOTU2ZGI5YzQyOGJiNTE3YjRkNmNk
M2FjY2I5NDFiZTRkOC4uOTJlMTYwYTYxNTg5MGQzMzY5MjRjNTYwZjQzM2FiMGVkMjU1YTk0NCAx
MDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5jcHAKKysr
IGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5jcHAKQEAgLTgyNCw2ICs4
MjQsOCBAQCB2b2lkIFRlc3RDb250cm9sbGVyOjpyZXNldFByZWZlcmVuY2VzVG9Db25zaXN0ZW50
VmFsdWVzKGNvbnN0IFRlc3RPcHRpb25zJiBvcHRpbwogCiAgICAgV0tQcmVmZXJlbmNlc1NldFdl
YlNRTERpc2FibGVkKHByZWZlcmVuY2VzLCBmYWxzZSk7CiAKKyAgICBtX3NlcnZlclRydXN0RXZh
bHVhdGlvbkNhbGxiYWNrQ2FsbHNDb3VudCA9IDA7CisKICAgICBwbGF0Zm9ybVJlc2V0UHJlZmVy
ZW5jZXNUb0NvbnNpc3RlbnRWYWx1ZXMoKTsKIH0KIApAQCAtMjA2MCw2ICsyMDYyLDggQEAgdm9p
ZCBUZXN0Q29udHJvbGxlcjo6ZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKFdLUGFn
ZVJlZiBwYWdlLCBXS0F1dGhlbnQKICAgICAgICAgLy8gQW55IG5vbi1lbXB0eSBjcmVkZW50aWFs
IHNpZ25hbHMgdG8gYWNjZXB0IHRoZSBzZXJ2ZXIgdHJ1c3QuIFNpbmNlIHRoZSBjcm9zcy1wbGF0
Zm9ybSBBUEkKICAgICAgICAgLy8gZG9lc24ndCBleHBvc2UgYSB3YXkgdG8gY3JlYXRlIGEgY3Jl
ZGVudGlhbCBmcm9tIHNlcnZlciB0cnVzdCwgd2UgdXNlIGEgcGFzc3dvcmQgY3JlZGVudGlhbC4K
IAorICAgICAgICBtX3NlcnZlclRydXN0RXZhbHVhdGlvbkNhbGxiYWNrQ2FsbHNDb3VudCsrOwor
CiAgICAgICAgIFdLUmV0YWluUHRyPFdLQ3JlZGVudGlhbFJlZj4gY3JlZGVudGlhbCA9IGFkb3B0
V0soV0tDcmVkZW50aWFsQ3JlYXRlKHRvV0soImFjY2VwdCBzZXJ2ZXIgdHJ1c3QiKS5nZXQoKSwg
dG9XSygiIikuZ2V0KCksIGtXS0NyZWRlbnRpYWxQZXJzaXN0ZW5jZU5vbmUpKTsKICAgICAgICAg
V0tBdXRoZW50aWNhdGlvbkRlY2lzaW9uTGlzdGVuZXJVc2VDcmVkZW50aWFsKGRlY2lzaW9uTGlz
dGVuZXIsIGNyZWRlbnRpYWwuZ2V0KCkpOwogICAgICAgICByZXR1cm47CkBAIC0zMjIzLDYgKzMy
MjcsMTIgQEAgYm9vbCBUZXN0Q29udHJvbGxlcjo6a2V5RXhpc3RzSW5LZXljaGFpbihjb25zdCBT
dHJpbmcmLCBjb25zdCBTdHJpbmcmKQogewogICAgIHJldHVybiBmYWxzZTsKIH0KKworYm9vbCBU
ZXN0Q29udHJvbGxlcjo6Y2FuRG9TZXJ2ZXJUcnVzdEV2YWx1YXRpb25Jbk5ldHdvcmtQcm9jZXNz
KCkgY29uc3QKK3sKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKICNlbmRpZgogCiB2b2lkIFRlc3RD
b250cm9sbGVyOjpzZW5kRGlzcGxheUNvbmZpZ3VyYXRpb25DaGFuZ2VkTWVzc2FnZUZvclRlc3Rp
bmcoKQpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5o
IGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5oCmluZGV4IDIwNThjNzll
Y2ZhYTVkY2UzMTRmYTYyODUwZjdkY2JkMGJhM2ZhMjcuLjI1ZWM5MDRiZTQyYjJjZGMzMDk0ZTFl
YmVhYjNkN2Y5N2Q0YTk1ZTIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVz
dENvbnRyb2xsZXIuaAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVy
LmgKQEAgLTI4MSw2ICsyODEsOSBAQCBwdWJsaWM6CiAgICAgVUlLZXlib2FyZElucHV0TW9kZSAq
b3ZlcnJpZGRlbktleWJvYXJkSW5wdXRNb2RlKCkgY29uc3QgeyByZXR1cm4gbV9vdmVycmlkZGVu
S2V5Ym9hcmRJbnB1dE1vZGUuZ2V0KCk7IH0KICNlbmRpZgogCisgICAgYm9vbCBjYW5Eb1NlcnZl
clRydXN0RXZhbHVhdGlvbkluTmV0d29ya1Byb2Nlc3MoKSBjb25zdDsKKyAgICB1aW50NjRfdCBz
ZXJ2ZXJUcnVzdEV2YWx1YXRpb25DYWxsYmFja0NhbGxzQ291bnQoKSBjb25zdCB7IHJldHVybiBt
X3NlcnZlclRydXN0RXZhbHVhdGlvbkNhbGxiYWNrQ2FsbHNDb3VudDsgfQorCiBwcml2YXRlOgog
ICAgIFdLUmV0YWluUHRyPFdLUGFnZUNvbmZpZ3VyYXRpb25SZWY+IGdlbmVyYXRlUGFnZUNvbmZp
Z3VyYXRpb24oV0tDb250ZXh0Q29uZmlndXJhdGlvblJlZik7CiAgICAgV0tSZXRhaW5QdHI8V0tD
b250ZXh0Q29uZmlndXJhdGlvblJlZj4gZ2VuZXJhdGVDb250ZXh0Q29uZmlndXJhdGlvbigpIGNv
bnN0OwpAQCAtNTM0LDYgKzUzNyw4IEBAIHByaXZhdGU6CiAgICAgICAgIHsgfQogICAgIH07CiAg
ICAgSGFzaE1hcDx1aW50NjRfdCwgQWJhbmRvbmVkRG9jdW1lbnRJbmZvPiBtX2FiYW5kb25lZERv
Y3VtZW50SW5mbzsKKworICAgIHVpbnQ2NF90IG1fc2VydmVyVHJ1c3RFdmFsdWF0aW9uQ2FsbGJh
Y2tDYWxsc0NvdW50IHsgMCB9OwogfTsKIAogc3RydWN0IFRlc3RDb21tYW5kIHsKZGlmZiAtLWdp
dCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdEludm9jYXRpb24uY3BwIGIvVG9vbHMvV2Vi
S2l0VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlvbi5jcHAKaW5kZXggMWZlZGQ4YjFmMWVmZDU2OTcz
YTRlM2MxMzc3YzJmMTZiM2E4MzJjMS4uNDI5Y2UyOWI1MjAxMThkZjI0OGEwMzFhZjdlNDUzODJi
MzU4NzQ3NCAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlv
bi5jcHAKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlvbi5jcHAKQEAg
LTE1MjIsNiArMTUyMiwyMyBAQCBXS1JldGFpblB0cjxXS1R5cGVSZWY+IFRlc3RJbnZvY2F0aW9u
OjpkaWRSZWNlaXZlU3luY2hyb25vdXNNZXNzYWdlRnJvbUluamVjdGVkQgogICAgICAgICByZXR1
cm4gcmVzdWx0OwogICAgIH0KIAorICAgIGlmIChXS1N0cmluZ0lzRXF1YWxUb1VURjhDU3RyaW5n
KG1lc3NhZ2VOYW1lLCAiU2V0Q2FuSGFuZGxlSFRUUFNTZXJ2ZXJUcnVzdEV2YWx1YXRpb24iKSkg
eworICAgICAgICBBU1NFUlQoV0tHZXRUeXBlSUQobWVzc2FnZUJvZHkpID09IFdLQm9vbGVhbkdl
dFR5cGVJRCgpKTsKKyAgICAgICAgYXV0byBjYW5IYW5kbGUgPSBXS0Jvb2xlYW5HZXRWYWx1ZShz
dGF0aWNfY2FzdDxXS0Jvb2xlYW5SZWY+KG1lc3NhZ2VCb2R5KSk7CisgICAgICAgIFdLQ29udGV4
dFNldENhbkhhbmRsZUhUVFBTU2VydmVyVHJ1c3RFdmFsdWF0aW9uKFRlc3RDb250cm9sbGVyOjpz
aW5nbGV0b24oKS5jb250ZXh0KCksIGNhbkhhbmRsZSk7CisgICAgICAgIHJldHVybiBudWxscHRy
OworICAgIH0KKworICAgIGlmIChXS1N0cmluZ0lzRXF1YWxUb1VURjhDU3RyaW5nKG1lc3NhZ2VO
YW1lLCAiQ2FuRG9TZXJ2ZXJUcnVzdEV2YWx1YXRpb25Jbk5ldHdvcmtQcm9jZXNzIikpIHsKKyAg
ICAgICAgV0tSZXRhaW5QdHI8V0tUeXBlUmVmPiByZXN1bHQoQWRvcHRXSywgV0tCb29sZWFuQ3Jl
YXRlKFRlc3RDb250cm9sbGVyOjpzaW5nbGV0b24oKS5jYW5Eb1NlcnZlclRydXN0RXZhbHVhdGlv
bkluTmV0d29ya1Byb2Nlc3MoKSkpOworICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0KKwor
ICAgIGlmIChXS1N0cmluZ0lzRXF1YWxUb1VURjhDU3RyaW5nKG1lc3NhZ2VOYW1lLCAiU2VydmVy
VHJ1c3RFdmFsdWF0aW9uQ2FsbGJhY2tDYWxsc0NvdW50IikpIHsKKyAgICAgICAgV0tSZXRhaW5Q
dHI8V0tUeXBlUmVmPiByZXN1bHQoQWRvcHRXSywgV0tVSW50NjRDcmVhdGUoVGVzdENvbnRyb2xs
ZXI6OnNpbmdsZXRvbigpLnNlcnZlclRydXN0RXZhbHVhdGlvbkNhbGxiYWNrQ2FsbHNDb3VudCgp
KSk7CisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfQorCiAgICAgQVNTRVJUX05PVF9SRUFD
SEVEKCk7CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRU
ZXN0UnVubmVyL2NvY29hL1Rlc3RDb250cm9sbGVyQ29jb2EubW0gYi9Ub29scy9XZWJLaXRUZXN0
UnVubmVyL2NvY29hL1Rlc3RDb250cm9sbGVyQ29jb2EubW0KaW5kZXggMzYzYTJjNmUxMTRkNTdk
OGJhZjE3ODFkZjYxYTEzNjRjNTIwYzIwOS4uMDhiNDZiMTEzZjRjMThjYTA0YjdjYWEyYTQ5MjU4
ZmJkNGYyZjUzNSAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9jb2NvYS9UZXN0
Q29udHJvbGxlckNvY29hLm1tCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvY29jb2EvVGVz
dENvbnRyb2xsZXJDb2NvYS5tbQpAQCAtNDA1LDQgKzQwNSwxMyBAQCB2b2lkIFRlc3RDb250cm9s
bGVyOjphbGxvd0NhY2hlU3RvcmFnZVF1b3RhSW5jcmVhc2UoKQogI2VuZGlmCiB9CiAKK2Jvb2wg
VGVzdENvbnRyb2xsZXI6OmNhbkRvU2VydmVyVHJ1c3RFdmFsdWF0aW9uSW5OZXR3b3JrUHJvY2Vz
cygpIGNvbnN0Cit7CisjaWYgSEFWRShDRk5FVFdPUktfTlNVUkxTRVNTSU9OX1NUUklDVFJVU1RF
VkFMVUFURSkKKyAgICByZXR1cm4gdHJ1ZTsKKyNlbHNlCisgICAgcmV0dXJuIGZhbHNlOworI2Vu
ZGlmCit9CisKIH0gLy8gbmFtZXNwYWNlIFdUUgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hh
bmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDRkYzk0ZTg2ZjdhNmIxOTc0ODdm
ZWY3MDM4MDdkZmNlZTJlYWMyMGQuLmNlZTNjMWIwNzFlZjUyZTZjNmQxYTgwZGQ3ZjEwMDBjYjJj
ODk4NTkgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAxOS0wMS0yOSAgWW91ZW5uIEZhYmxldCAg
PHlvdWVubkBhcHBsZS5jb20+CisKKyAgICAgICAgQWRvcHQgbmV3IFNQSSB0byBldmFsdWF0ZSBz
ZXJ2ZXIgY2VydGlmaWNhdGUgdHJ1c3QKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTE5MzM1NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgICogaHR0cC90ZXN0cy9zc2wvY2VydGlmaWNhdGUtdmFsaWRhdGlvbi1l
eHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvc3NsL2NlcnRpZmljYXRl
LXZhbGlkYXRpb24uaHRtbDogQWRkZWQuCisKIDIwMTktMDEtMjggIEFudG9pbmUgUXVpbnQgIDxn
cmFvdXRzQGFwcGxlLmNvbT4KIAogICAgICAgICBMaW1pdCB1c2VyLWFnZW50IGludGVyYWN0aW9u
cyBiYXNlZCBvbiB0aGUgdG91Y2gtYWN0aW9uIHByb3BlcnR5IG9uIGlPUwpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zc2wvY2VydGlmaWNhdGUtdmFsaWRhdGlvbi1leHBlY3Rl
ZC50eHQgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NzbC9jZXJ0aWZpY2F0ZS12YWxpZGF0aW9u
LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kYTg0YTA1NzdlZWY5YTJjNTBlYTQ5N2QyZGZjNTcw
ZjI3ZjYzZDI0Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zc2wv
Y2VydGlmaWNhdGUtdmFsaWRhdGlvbi1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwzIEBACisKK1BB
U1MgQ2VydGlmaWNhdGUgdmFsaWRhdGlvbiBpbiBOZXR3b3JrIFByb2Nlc3MgCisKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvc3NsL2NlcnRpZmljYXRlLXZhbGlkYXRpb24uaHRt
bCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvc3NsL2NlcnRpZmljYXRlLXZhbGlkYXRpb24uaHRt
bApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi4zMGU2M2QyNzY1ZWYyN2JhMTFlNjg4YjBiNTU0MjYwMTA3NDY2MmZmCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zc2wvY2VydGlmaWNhdGUt
dmFsaWRhdGlvbi5odG1sCkBAIC0wLDAgKzEsNDYgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+
Cis8aGVhZD4KKzx0aXRsZT5DZXJ0aWZpY2F0ZSB2YWxpZGF0aW9uIGluIE5ldHdvcmsgUHJvY2Vz
czwvdGl0bGU+Cis8c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3Jp
cHQ+Cis8c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3Jp
cHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxzY3JpcHQ+CitmdW5jdGlvbiB3aXRoX2lmcmFtZSh1cmwp
IHsKKyAgICByZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24ocmVzb2x2ZSkgeworICAgICAgICB2
YXIgZnJhbWUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdpZnJhbWUnKTsKKyAgICAgICAgZnJh
bWUuY2xhc3NOYW1lID0gJ3Rlc3QtaWZyYW1lJzsKKyAgICAgICAgZnJhbWUuc3JjID0gdXJsOwor
ICAgICAgICBmcmFtZS5vbmxvYWQgPSBmdW5jdGlvbigpIHsgcmVzb2x2ZShmcmFtZSk7IH07Cisg
ICAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoZnJhbWUpOworICAgIH0pOworfQorCith
c3luYyBmdW5jdGlvbiBkb1Rlc3QoKQoreworICAgIGFzc2VydF90cnVlKCEhd2luZG93LnRlc3RS
dW5uZXIsICJUZXN0IHJlcXVpcmVzIHRlc3RSdW5uZXIiKTsKKworICAgIGlmICghd2luZG93LnRl
c3RSdW5uZXIuY2FuRG9TZXJ2ZXJUcnVzdEV2YWx1YXRpb25Jbk5ldHdvcmtQcm9jZXNzKQorICAg
ICAgICByZXR1cm47CisKKyAgICB3aW5kb3cudGVzdFJ1bm5lci5zZXRBbGxvd3NBbnlTU0xDZXJ0
aWZpY2F0ZShmYWxzZSk7CisgICAgLy8gVGhpcyBzaG91bGQgdHJpZ2dlciBuZXR3b3JrIHByb2Nl
c3Mgc2VydmVyIHRydXN0IGV2YWx1YXRpb24uCisgICAgd2luZG93LnRlc3RSdW5uZXIuc2V0Q2Fu
SGFuZGxlSFRUUFNTZXJ2ZXJUcnVzdEV2YWx1YXRpb24oZmFsc2UpOworCisgICAgLy8gQ3Jhc2gg
bmV0d29yayBwcm9jZXNzIHRvIG1ha2Ugc3VyZSB3ZSBjcmVhdGUgbmV3IEhUVFBTIGNvbm5lY3Rp
b25zLgorICAgIHdpbmRvdy50ZXN0UnVubmVyLnRlcm1pbmF0ZU5ldHdvcmtQcm9jZXNzKCk7CisK
KyAgICBjb25zdCBjdXJyZW50Q2FsbGJhY2tDb3VudHMgPSB3aW5kb3cudGVzdFJ1bm5lci5zZXJ2
ZXJUcnVzdEV2YWx1YXRpb25DYWxsYmFja0NhbGxzQ291bnQ7CisKKyAgICBjb25zdCBpZnJhbWUg
PSBhd2FpdCB3aXRoX2lmcmFtZSgiaHR0cHM6Ly9sb2NhbGhvc3Q6ODQ0MyIpOworICAgIGlmcmFt
ZS5yZW1vdmUoKTsKKworICAgIGFzc2VydF9lcXVhbHMod2luZG93LnRlc3RSdW5uZXIuc2VydmVy
VHJ1c3RFdmFsdWF0aW9uQ2FsbGJhY2tDYWxsc0NvdW50IC0gY3VycmVudENhbGxiYWNrQ291bnRz
LCAxKTsKK30KKworZG9UZXN0KCkudGhlbihkb25lLCAoZSkgPT4geyBhc3NlcnRfdW5yZWFjaGVk
KCJ0ZXN0IGZhaWxlZDogIiArIGUpOyBkb25lKCk7IH0pOworCis8L3NjcmlwdD4KKzwvYm9keT4K
KzwvaHRtbD4K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>360503</attachid>
            <date>2019-01-29 14:54:26 -0800</date>
            <delta_ts>2019-01-29 16:16:44 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-193355-20190129145425.patch</filename>
            <type>text/plain</type>
            <size>27082</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQwNTgzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDMwYTQwZmY0ZDBjZGFlODYx
MmExMWQyYjM1N2ZiNzQ2Y2E0MWFmN2EuLjlhZDViNmIzYmVmMjJmNTUwYThlMGFmNmU0NGIxZmU5
N2IxN2U5NjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjAgQEAKKzIwMTktMDEtMjkgIFlvdWVubiBG
YWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgorCisgICAgICAgIEFkb3B0IG5ldyBTUEkgdG8gZXZh
bHVhdGUgc2VydmVyIGNlcnRpZmljYXRlIHRydXN0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTMzNTUKKworICAgICAgICBSZXZpZXdlZCBieSBBbGV4
IENocmlzdGVuc2VuLgorCisgICAgICAgIFVzZSBuZXcgU1BJIHByb3ZpZGVkIGluIE5TVVJMU2Vz
c2lvbiB0byBldmFsdWF0ZSBzZXJ2ZXIgY2VydGlmaWNhdGVzLgorICAgICAgICBJZiBzdWNjZXNz
ZnVsLCBsZXQgbG9hZGluZyBwcm9jZWVkIGFzIHVzdWFsLgorICAgICAgICBPdGhlcndpc2UsIGdv
IHRvIHRoZSBVSVByb2Nlc3MgdG8gYXNrIGZvciBhIGRlY2lzaW9uIG9uIGNvbnRpbnVpbmcgdGhl
IGxvYWQgb3Igbm90LgorCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1Nl
c3Npb25Db2NvYS5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtTZXNz
aW9uQ29jb2EubW06CisgICAgICAgIChjYW5OU1VSTFNlc3Npb25UcnVzdEV2YWx1YXRlKToKKyAg
ICAgICAgKC1bV0tOZXR3b3JrU2Vzc2lvbkRlbGVnYXRlIFVSTFNlc3Npb246dGFzazpkaWRSZWNl
aXZlQ2hhbGxlbmdlOmNvbXBsZXRpb25IYW5kbGVyOl0pOgorICAgICAgICAoV2ViS2l0OjpOZXR3
b3JrU2Vzc2lvbkNvY29hOjpjb250aW51ZURpZFJlY2VpdmVDaGFsbGVuZ2UpOgorCiAyMDE5LTAx
LTI4ICBBbnRvaW5lIFF1aW50ICA8Z3Jhb3V0c0BhcHBsZS5jb20+CiAKICAgICAgICAgTGltaXQg
dXNlci1hZ2VudCBpbnRlcmFjdGlvbnMgYmFzZWQgb24gdGhlIHRvdWNoLWFjdGlvbiBwcm9wZXJ0
eSBvbiBpT1MKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtLmggYi9Tb3VyY2Uv
V1RGL3d0Zi9QbGF0Zm9ybS5oCmluZGV4IGFhMjFjNWYyYThjNGExMTliMzUyZDc1YTY4ZjBmZTFm
NjUwOTExZGIuLjUwZWEyMTM1ZjQ4OTA5ZTlmYTkyODFlZDQ1OWRkMTE3MjViY2Q1ZGEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtLmgKKysrIGIvU291cmNlL1dURi93dGYvUGxh
dGZvcm0uaApAQCAtMTQ4MCw2ICsxNDgwLDEwIEBACiAjZGVmaW5lIEhBVkVfQ0ZORVRXT1JLX09W
RVJSSURFX1NFU1NJT05fQ09PS0lFX0FDQ0VQVF9QT0xJQ1kgMQogI2VuZGlmCiAKKyNpZiAoUExB
VEZPUk0oTUFDKSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwMTUwMCkg
fHwgKFBMQVRGT1JNKElPU19GQU1JTFkpICYmIF9fSVBIT05FX09TX1ZFUlNJT05fTUlOX1JFUVVJ
UkVEID49IDEzMDAwMCkKKyNkZWZpbmUgSEFWRV9DRk5FVFdPUktfTlNVUkxTRVNTSU9OX1NUUklD
VFJVU1RFVkFMVUFURSAxCisjZW5kaWYKKwogI2lmIChQTEFURk9STShNQUMpICYmIF9fTUFDX09T
X1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTAxNTAwKSB8fCAoUExBVEZPUk0oSU9TX0ZBTUlM
WSkgJiYgX19JUEhPTkVfT1NfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTMwMDAwKQogI2RlZmlu
ZSBIQVZFX0NGTkVUV09SS19ORUdPVElBVEVEX1NTTF9QUk9UT0NPTF9DSVBIRVIgMQogI2VuZGlm
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL3NwaS9jZi9DRk5ldHdvcmtTUEku
aCBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvc3BpL2NmL0NGTmV0d29ya1NQSS5oCmluZGV4IDll
MjExYTY2MGYzZTk5NmNmNjI2ZmEyODkzNTM5YzlhMGNiODc4NjQuLjJmZDQ4MmQ4ZjQ4MmZkN2Ex
N2Y4YTNmZjViYzZlOTBlZTQ2YWY5OWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BBTC9w
YWwvc3BpL2NmL0NGTmV0d29ya1NQSS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvc3Bp
L2NmL0NGTmV0d29ya1NQSS5oCkBAIC0yMzEsNiArMjMxLDEyIEBAIHR5cGVkZWYgTlNfRU5VTShO
U0ludGVnZXIsIE5TVVJMU2Vzc2lvbkNvbXBhbmlvblByb3h5UHJlZmVyZW5jZSkgewogQGVuZAog
I2VuZGlmCiAKKyNpZiBIQVZFKENGTkVUV09SS19OU1VSTFNFU1NJT05fU1RSSUNUUlVTVEVWQUxV
QVRFKQorQGludGVyZmFjZSBOU1VSTFNlc3Npb24gKFNQSSkKKysgKHZvaWQpX3N0cmljdFRydXN0
RXZhbHVhdGU6KE5TVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2UgKiljaGFsbGVuZ2UgcXVldWU6
KGRpc3BhdGNoX3F1ZXVlX3QpcXVldWUgY29tcGxldGlvbkhhbmRsZXI6KHZvaWQgKF4pKE5TVVJM
QXV0aGVudGljYXRpb25DaGFsbGVuZ2UgKmNoYWxsZW5nZSwgT1NTdGF0dXMgdHJ1c3RSZXN1bHQp
KWNiOworQGVuZAorI2VuZGlmCisKIGV4dGVybiBOU1N0cmluZyAqIGNvbnN0IE5TVVJMQXV0aGVu
dGljYXRpb25NZXRob2RPQXV0aDsKIAogI2VuZGlmIC8vIGRlZmluZWQoX19PQkpDX18pCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtTZXNzaW9u
Q29jb2EuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1Nlc3Np
b25Db2NvYS5oCmluZGV4IDBkNjcxYzI5Y2EwOTc3OTk1YWFiNDllY2ZkNjIyODE5ZjYxMGNkNmIu
LjE4NjIxYTQ4ZTMzNGVlM2U0OGIzZmQzMDQ3MGU1NzhiYTg2NGFlZmYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1Nlc3Npb25Db2NvYS5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1Nlc3Npb25Db2Nv
YS5oCkBAIC02Miw2ICs2Miw4IEBAIHB1YmxpYzoKIAogICAgIHN0YXRpYyBib29sIGFsbG93c1Nw
ZWNpZmljSFRUUFNDZXJ0aWZpY2F0ZUZvckhvc3QoY29uc3QgV2ViQ29yZTo6QXV0aGVudGljYXRp
b25DaGFsbGVuZ2UmKTsKIAorICAgIHZvaWQgY29udGludWVEaWRSZWNlaXZlQ2hhbGxlbmdlKGNv
bnN0IFdlYkNvcmU6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiwgTmV0d29ya0RhdGFUYXNrQ29j
b2E6OlRhc2tJZGVudGlmaWVyLCBOZXR3b3JrRGF0YVRhc2tDb2NvYSosIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoV2ViS2l0OjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZURpc3Bvc2l0aW9uLCBjb25z
dCBXZWJDb3JlOjpDcmVkZW50aWFsJik+JiYpOworCiBwcml2YXRlOgogICAgIE5ldHdvcmtTZXNz
aW9uQ29jb2EoTmV0d29ya1Byb2Nlc3MmLCBOZXR3b3JrU2Vzc2lvbkNyZWF0aW9uUGFyYW1ldGVy
cyYmKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9O
ZXR3b3JrU2Vzc2lvbkNvY29hLm1tIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2Nv
YS9OZXR3b3JrU2Vzc2lvbkNvY29hLm1tCmluZGV4IDRhMWQ3OTIxMGFmYTU5NmU0YjBmYWZjZTgx
OGZmNGY2ODJiMzhiNGEuLmVjNTIzYjZiMTg4ZjBjZDUyOTQ0YWQ3YmY1MzM2N2ZhZTA2MzA2Yzkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1Nl
c3Npb25Db2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05l
dHdvcmtTZXNzaW9uQ29jb2EubW0KQEAgLTUyMSw2ICs1MjEsMzAgQEAgLSAodm9pZClVUkxTZXNz
aW9uOihOU1VSTFNlc3Npb24gKilzZXNzaW9uIGRhdGFUYXNrOihOU1VSTFNlc3Npb25EYXRhVGFz
ayAqKWRhdGEKICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIocHJvcG9zZWRSZXNwb25zZSk7CiB9
CiAKKyNpZiBIQVZFKENGTkVUV09SS19OU1VSTFNFU1NJT05fU1RSSUNUUlVTVEVWQUxVQVRFKQor
c3RhdGljIGJvb2wgY2FuTlNVUkxTZXNzaW9uVHJ1c3RFdmFsdWF0ZSgpCit7CisgICAgcmV0dXJu
IFtOU1VSTFNlc3Npb24gcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3Rvcihfc3RyaWN0VHJ1c3RF
dmFsdWF0ZTogcXVldWU6IGNvbXBsZXRpb25IYW5kbGVyOildOworfQorCitzdGF0aWMgaW5saW5l
IHZvaWQgcHJvY2Vzc1NlcnZlclRydXN0RXZhbHVhdGlvbihOZXR3b3JrU2Vzc2lvbkNvY29hICpz
ZXNzaW9uLCBOU1VSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlICpjaGFsbGVuZ2UsIE9TU3RhdHVz
IHRydXN0UmVzdWx0LCBOZXR3b3JrRGF0YVRhc2tDb2NvYTo6VGFza0lkZW50aWZpZXIgdGFza0lk
ZW50aWZpZXIsIE5ldHdvcmtEYXRhVGFza0NvY29hKiBuZXR3b3JrRGF0YVRhc2ssIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoTlNVUkxTZXNzaW9uQXV0aENoYWxsZW5nZURpc3Bvc2l0aW9uIGRpc3Bv
c2l0aW9uLCBOU1VSTENyZWRlbnRpYWwgKmNyZWRlbnRpYWwpPiYmIGNvbXBsZXRpb25IYW5kbGVy
KQoreworICAgIGlmICh0cnVzdFJlc3VsdCA9PSBub0VycikgeworICAgICAgICBjb21wbGV0aW9u
SGFuZGxlcihOU1VSTFNlc3Npb25BdXRoQ2hhbGxlbmdlUGVyZm9ybURlZmF1bHRIYW5kbGluZywg
bmlsKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIHNlc3Npb24tPmNvbnRpbnVlRGlk
UmVjZWl2ZUNoYWxsZW5nZShjaGFsbGVuZ2UsIHRhc2tJZGVudGlmaWVyLCBuZXR3b3JrRGF0YVRh
c2ssIFtjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCBzZWNU
cnVzdCA9IHJldGFpblB0cihjaGFsbGVuZ2UucHJvdGVjdGlvblNwYWNlLnNlcnZlclRydXN0KV0g
KFdlYktpdDo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2VEaXNwb3NpdGlvbiBkaXNwb3NpdGlvbiwg
Y29uc3QgV2ViQ29yZTo6Q3JlZGVudGlhbCYgY3JlZGVudGlhbCkgbXV0YWJsZSB7CisgICAgICAg
IC8vIEZJWE1FOiBVSVByb2Nlc3Mgc2hvdWxkIHNlbmQgdXMgYmFjayBub24gbmlsIGNyZWRlbnRp
YWxzIGJ1dCB0aGUgY3JlZGVudGlhbCBJUEMgZW5jb2RlciBjdXJyZW50bHkgb25seSBzZXJpYWxp
emVzIG5zIGNyZWRlbnRpYWxzIGZvciB1c2VybmFtZS9wYXNzd29yZC4KKyAgICAgICAgaWYgKGRp
c3Bvc2l0aW9uID09IFdlYktpdDo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2VEaXNwb3NpdGlvbjo6
VXNlQ3JlZGVudGlhbCAmJiAhY3JlZGVudGlhbC5uc0NyZWRlbnRpYWwoKSkgeworICAgICAgICAg
ICAgY29tcGxldGlvbkhhbmRsZXIoTlNVUkxTZXNzaW9uQXV0aENoYWxsZW5nZVVzZUNyZWRlbnRp
YWwsIFtOU1VSTENyZWRlbnRpYWwgY3JlZGVudGlhbEZvclRydXN0OiBzZWNUcnVzdC5nZXQoKV0p
OworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIGNvbXBsZXRpb25IYW5k
bGVyKHRvTlNVUkxTZXNzaW9uQXV0aENoYWxsZW5nZURpc3Bvc2l0aW9uKGRpc3Bvc2l0aW9uKSwg
Y3JlZGVudGlhbC5uc0NyZWRlbnRpYWwoKSk7CisgICAgfSk7Cit9CisjZW5kaWYKKwogLSAodm9p
ZClVUkxTZXNzaW9uOihOU1VSTFNlc3Npb24gKilzZXNzaW9uIHRhc2s6KE5TVVJMU2Vzc2lvblRh
c2sgKil0YXNrIGRpZFJlY2VpdmVDaGFsbGVuZ2U6KE5TVVJMQXV0aGVudGljYXRpb25DaGFsbGVu
Z2UgKiljaGFsbGVuZ2UgY29tcGxldGlvbkhhbmRsZXI6KHZvaWQgKF4pKE5TVVJMU2Vzc2lvbkF1
dGhDaGFsbGVuZ2VEaXNwb3NpdGlvbiBkaXNwb3NpdGlvbiwgTlNVUkxDcmVkZW50aWFsICpjcmVk
ZW50aWFsKSljb21wbGV0aW9uSGFuZGxlcgogewogICAgIGlmICghX3Nlc3Npb24pIHsKQEAgLTU0
Myw2MSArNTY3LDIzIEBAIC0gKHZvaWQpVVJMU2Vzc2lvbjooTlNVUkxTZXNzaW9uICopc2Vzc2lv
biB0YXNrOihOU1VSTFNlc3Npb25UYXNrICopdGFzayBkaWRSZWNlCiAgICAgICAgICAgICByZXR1
cm4gY29tcGxldGlvbkhhbmRsZXIoTlNVUkxTZXNzaW9uQXV0aENoYWxsZW5nZVVzZUNyZWRlbnRp
YWwsIFtOU1VSTENyZWRlbnRpYWwgY3JlZGVudGlhbEZvclRydXN0OmNoYWxsZW5nZS5wcm90ZWN0
aW9uU3BhY2Uuc2VydmVyVHJ1c3RdKTsKIAogICAgICAgICAvLyBIYW5kbGUgc2VydmVyIHRydXN0
IGV2YWx1YXRpb24gYXQgcGxhdGZvcm0tbGV2ZWwgaWYgcmVxdWVzdGVkLCBmb3IgcGVyZm9ybWFu
Y2UgcmVhc29ucyBhbmQgdG8gdXNlIEFUUyBkZWZhdWx0cy4KLSAgICAgICAgaWYgKCFfc2Vzc2lv
bi0+bmV0d29ya1Byb2Nlc3MoKS5jYW5IYW5kbGVIVFRQU1NlcnZlclRydXN0RXZhbHVhdGlvbigp
KQotICAgICAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKE5TVVJMU2Vzc2lvbkF1dGhD
aGFsbGVuZ2VSZWplY3RQcm90ZWN0aW9uU3BhY2UsIG5pbCk7Ci0gICAgfQotCi0gICAgaWYgKGF1
dG8qIG5ldHdvcmtEYXRhVGFzayA9IFtzZWxmIGV4aXN0aW5nVGFzazp0YXNrXSkgewotICAgICAg
ICBXZWJDb3JlOjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSBhdXRoZW50aWNhdGlvbkNoYWxsZW5n
ZShjaGFsbGVuZ2UpOwotICAgICAgICBhdXRvIGNvbXBsZXRpb25IYW5kbGVyQ29weSA9IEJsb2Nr
X2NvcHkoY29tcGxldGlvbkhhbmRsZXIpOwotICAgICAgICBhdXRvIHNlc3Npb25JRCA9IF9zZXNz
aW9uLT5zZXNzaW9uSUQoKTsKLSAgICAgICAgYXV0byBjaGFsbGVuZ2VDb21wbGV0aW9uSGFuZGxl
ciA9IFtuZXR3b3JrUHJvY2VzcyA9IG1ha2VSZWYoX3Nlc3Npb24tPm5ldHdvcmtQcm9jZXNzKCkp
LCBjb21wbGV0aW9uSGFuZGxlckNvcHksIHNlc3Npb25JRCwgYXV0aGVudGljYXRpb25DaGFsbGVu
Z2UsIHRhc2tJZGVudGlmaWVyLCBwYXJ0aXRpb24gPSBuZXR3b3JrRGF0YVRhc2stPnBhcnRpdGlv
bigpXShXZWJLaXQ6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlRGlzcG9zaXRpb24gZGlzcG9zaXRp
b24sIGNvbnN0IFdlYkNvcmU6OkNyZWRlbnRpYWwmIGNyZWRlbnRpYWwpCi0gICAgICAgIHsKLSNp
ZiAhTE9HX0RJU0FCTEVECi0gICAgICAgICAgICBMT0coTmV0d29ya1Nlc3Npb24sICIlbGx1IGRp
ZFJlY2VpdmVDaGFsbGVuZ2UgY29tcGxldGlvbkhhbmRsZXIgJWQiLCB0YXNrSWRlbnRpZmllciwg
ZGlzcG9zaXRpb24pOwotI2Vsc2UKLSAgICAgICAgICAgIFVOVVNFRF9QQVJBTSh0YXNrSWRlbnRp
Zmllcik7Ci0jZW5kaWYKLSNpZiAhVVNFKENSRURFTlRJQUxfU1RPUkFHRV9XSVRIX05FVFdPUktf
U0VTU0lPTikKLSAgICAgICAgICAgIFVOVVNFRF9QQVJBTShzZXNzaW9uSUQpOwotICAgICAgICAg
ICAgVU5VU0VEX1BBUkFNKGF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKTsKLSNlbHNlCi0gICAgICAg
ICAgICBpZiAoY3JlZGVudGlhbC5wZXJzaXN0ZW5jZSgpID09IFdlYkNvcmU6OkNyZWRlbnRpYWxQ
ZXJzaXN0ZW5jZUZvclNlc3Npb24gJiYgYXV0aGVudGljYXRpb25DaGFsbGVuZ2UucHJvdGVjdGlv
blNwYWNlKCkuaXNQYXNzd29yZEJhc2VkKCkpIHsKLQotICAgICAgICAgICAgICAgIFdlYkNvcmU6
OkNyZWRlbnRpYWwgbm9uUGVyc2lzdGVudENyZWRlbnRpYWwoY3JlZGVudGlhbC51c2VyKCksIGNy
ZWRlbnRpYWwucGFzc3dvcmQoKSwgV2ViQ29yZTo6Q3JlZGVudGlhbFBlcnNpc3RlbmNlTm9uZSk7
Ci0gICAgICAgICAgICAgICAgVVJMIHVybFRvU3RvcmU7Ci0gICAgICAgICAgICAgICAgaWYgKGF1
dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLmZhaWx1cmVSZXNwb25zZSgpLmh0dHBTdGF0dXNDb2RlKCkg
PT0gNDAxKQotICAgICAgICAgICAgICAgICAgICB1cmxUb1N0b3JlID0gYXV0aGVudGljYXRpb25D
aGFsbGVuZ2UuZmFpbHVyZVJlc3BvbnNlKCkudXJsKCk7Ci0gICAgICAgICAgICAgICAgaWYgKGF1
dG8gc3RvcmFnZVNlc3Npb24gPSBuZXR3b3JrUHJvY2Vzcy0+c3RvcmFnZVNlc3Npb24oc2Vzc2lv
bklEKSkKLSAgICAgICAgICAgICAgICAgICAgc3RvcmFnZVNlc3Npb24tPmNyZWRlbnRpYWxTdG9y
YWdlKCkuc2V0KHBhcnRpdGlvbiwgbm9uUGVyc2lzdGVudENyZWRlbnRpYWwsIGF1dGhlbnRpY2F0
aW9uQ2hhbGxlbmdlLnByb3RlY3Rpb25TcGFjZSgpLCB1cmxUb1N0b3JlKTsKLSAgICAgICAgICAg
ICAgICBlbHNlCi0gICAgICAgICAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotCi0g
ICAgICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXJDb3B5KHRvTlNVUkxTZXNzaW9uQXV0aENo
YWxsZW5nZURpc3Bvc2l0aW9uKGRpc3Bvc2l0aW9uKSwgbm9uUGVyc2lzdGVudENyZWRlbnRpYWwu
bnNDcmVkZW50aWFsKCkpOwotICAgICAgICAgICAgfSBlbHNlCi0jZW5kaWYKLSAgICAgICAgICAg
ICAgICBjb21wbGV0aW9uSGFuZGxlckNvcHkodG9OU1VSTFNlc3Npb25BdXRoQ2hhbGxlbmdlRGlz
cG9zaXRpb24oZGlzcG9zaXRpb24pLCBjcmVkZW50aWFsLm5zQ3JlZGVudGlhbCgpKTsKLSAgICAg
ICAgICAgIEJsb2NrX3JlbGVhc2UoY29tcGxldGlvbkhhbmRsZXJDb3B5KTsKLSAgICAgICAgfTsK
LSAgICAgICAgbmV0d29ya0RhdGFUYXNrLT5kaWRSZWNlaXZlQ2hhbGxlbmdlKGNoYWxsZW5nZSwg
V1RGTW92ZShjaGFsbGVuZ2VDb21wbGV0aW9uSGFuZGxlcikpOwotICAgIH0gZWxzZSB7Ci0gICAg
ICAgIGF1dG8gZG93bmxvYWRJRCA9IF9zZXNzaW9uLT5kb3dubG9hZElEKHRhc2tJZGVudGlmaWVy
KTsKLSAgICAgICAgaWYgKGRvd25sb2FkSUQuZG93bmxvYWRJRCgpKSB7Ci0gICAgICAgICAgICBp
ZiAoYXV0byogZG93bmxvYWQgPSBfc2Vzc2lvbi0+bmV0d29ya1Byb2Nlc3MoKS5kb3dubG9hZE1h
bmFnZXIoKS5kb3dubG9hZChkb3dubG9hZElEKSkgewotICAgICAgICAgICAgICAgIC8vIFJlY2Vp
dmVkIGFuIGF1dGhlbnRpY2F0aW9uIGNoYWxsZW5nZSBmb3IgYSBkb3dubG9hZCBiZWluZyByZXN1
bWVkLgotICAgICAgICAgICAgICAgIFdlYkNvcmU6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlIGF1
dGhlbnRpY2F0aW9uQ2hhbGxlbmdlIHsgY2hhbGxlbmdlIH07Ci0gICAgICAgICAgICAgICAgYXV0
byBjb21wbGV0aW9uSGFuZGxlckNvcHkgPSBCbG9ja19jb3B5KGNvbXBsZXRpb25IYW5kbGVyKTsK
LSAgICAgICAgICAgICAgICBhdXRvIGNoYWxsZW5nZUNvbXBsZXRpb25IYW5kbGVyID0gW2NvbXBs
ZXRpb25IYW5kbGVyQ29weSwgYXV0aGVudGljYXRpb25DaGFsbGVuZ2VdKFdlYktpdDo6QXV0aGVu
dGljYXRpb25DaGFsbGVuZ2VEaXNwb3NpdGlvbiBkaXNwb3NpdGlvbiwgY29uc3QgV2ViQ29yZTo6
Q3JlZGVudGlhbCYgY3JlZGVudGlhbCkgewotICAgICAgICAgICAgICAgICAgICBjb21wbGV0aW9u
SGFuZGxlckNvcHkodG9OU1VSTFNlc3Npb25BdXRoQ2hhbGxlbmdlRGlzcG9zaXRpb24oZGlzcG9z
aXRpb24pLCBjcmVkZW50aWFsLm5zQ3JlZGVudGlhbCgpKTsKLSAgICAgICAgICAgICAgICAgICAg
QmxvY2tfcmVsZWFzZShjb21wbGV0aW9uSGFuZGxlckNvcHkpOwotICAgICAgICAgICAgICAgIH07
Ci0gICAgICAgICAgICAgICAgZG93bmxvYWQtPmRpZFJlY2VpdmVDaGFsbGVuZ2UoY2hhbGxlbmdl
LCBXVEZNb3ZlKGNoYWxsZW5nZUNvbXBsZXRpb25IYW5kbGVyKSk7CisgICAgICAgIGlmICghX3Nl
c3Npb24tPm5ldHdvcmtQcm9jZXNzKCkuY2FuSGFuZGxlSFRUUFNTZXJ2ZXJUcnVzdEV2YWx1YXRp
b24oKSkgeworI2lmIEhBVkUoQ0ZORVRXT1JLX05TVVJMU0VTU0lPTl9TVFJJQ1RSVVNURVZBTFVB
VEUpCisgICAgICAgICAgICBpZiAoY2FuTlNVUkxTZXNzaW9uVHJ1c3RFdmFsdWF0ZSgpKSB7Cisg
ICAgICAgICAgICAgICAgYXV0byogbmV0d29ya0RhdGFUYXNrID0gW3NlbGYgZXhpc3RpbmdUYXNr
OnRhc2tdOworICAgICAgICAgICAgICAgIGF1dG8gZGVjaXNpb25IYW5kbGVyID0gbWFrZUJsb2Nr
UHRyKFtfc2Vzc2lvbiA9IF9zZXNzaW9uLmNvcHlSZWYoKSwgY29tcGxldGlvbkhhbmRsZXIgPSBt
YWtlQmxvY2tQdHIoY29tcGxldGlvbkhhbmRsZXIpLCB0YXNrSWRlbnRpZmllciwgbmV0d29ya0Rh
dGFUYXNrID0gUmVmUHRyPE5ldHdvcmtEYXRhVGFza0NvY29hPihuZXR3b3JrRGF0YVRhc2spXShO
U1VSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlICpjaGFsbGVuZ2UsIE9TU3RhdHVzIHRydXN0UmVz
dWx0KSBtdXRhYmxlIHsKKyAgICAgICAgICAgICAgICAgICAgcHJvY2Vzc1NlcnZlclRydXN0RXZh
bHVhdGlvbihfc2Vzc2lvbi5nZXQoKSwgY2hhbGxlbmdlLCB0cnVzdFJlc3VsdCwgdGFza0lkZW50
aWZpZXIsIG5ldHdvcmtEYXRhVGFzay5nZXQoKSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikp
OworICAgICAgICAgICAgICAgIH0pOworICAgICAgICAgICAgICAgIFtOU1VSTFNlc3Npb24gX3N0
cmljdFRydXN0RXZhbHVhdGU6Y2hhbGxlbmdlIHF1ZXVlOltOU09wZXJhdGlvblF1ZXVlIG1haW5R
dWV1ZV0udW5kZXJseWluZ1F1ZXVlIGNvbXBsZXRpb25IYW5kbGVyOmRlY2lzaW9uSGFuZGxlci5n
ZXQoKV07CiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgfQorI2VuZGlmCisg
ICAgICAgICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIoTlNVUkxTZXNzaW9uQXV0aENoYWxs
ZW5nZVJlamVjdFByb3RlY3Rpb25TcGFjZSwgbmlsKTsKICAgICAgICAgfQotICAgICAgICBMT0co
TmV0d29ya1Nlc3Npb24sICIlbGx1IGRpZFJlY2VpdmVDaGFsbGVuZ2UgY29tcGxldGlvbkhhbmRs
ZXIgKGNhbmNlbCkiLCB0YXNrSWRlbnRpZmllcik7Ci0gICAgICAgIGNvbXBsZXRpb25IYW5kbGVy
KE5TVVJMU2Vzc2lvbkF1dGhDaGFsbGVuZ2VDYW5jZWxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSwg
bmlsKTsKICAgICB9CisgICAgX3Nlc3Npb24tPmNvbnRpbnVlRGlkUmVjZWl2ZUNoYWxsZW5nZShj
aGFsbGVuZ2UsIHRhc2tJZGVudGlmaWVyLCBbc2VsZiBleGlzdGluZ1Rhc2s6dGFza10sIFtjb21w
bGV0aW9uSGFuZGxlciA9IG1ha2VCbG9ja1B0cihjb21wbGV0aW9uSGFuZGxlcildIChXZWJLaXQ6
OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlRGlzcG9zaXRpb24gZGlzcG9zaXRpb24sIGNvbnN0IFdl
YkNvcmU6OkNyZWRlbnRpYWwmIGNyZWRlbnRpYWwpIG11dGFibGUgeworICAgICAgICBjb21wbGV0
aW9uSGFuZGxlcih0b05TVVJMU2Vzc2lvbkF1dGhDaGFsbGVuZ2VEaXNwb3NpdGlvbihkaXNwb3Np
dGlvbiksIGNyZWRlbnRpYWwubnNDcmVkZW50aWFsKCkpOworICAgIH0pOwogfQogCiAtICh2b2lk
KVVSTFNlc3Npb246KE5TVVJMU2Vzc2lvbiAqKXNlc3Npb24gdGFzazooTlNVUkxTZXNzaW9uVGFz
ayAqKXRhc2sgZGlkQ29tcGxldGVXaXRoRXJyb3I6KE5TRXJyb3IgKillcnJvcgpAQCAtMTA1Myw0
ICsxMDM5LDUyIEBAIGJvb2wgTmV0d29ya1Nlc3Npb25Db2NvYTo6YWxsb3dzU3BlY2lmaWNIVFRQ
U0NlcnRpZmljYXRlRm9ySG9zdChjb25zdCBXZWJDb3JlOjpBCiAgICAgcmV0dXJuIGNlcnRpZmlj
YXRlc01hdGNoKHRydXN0LmdldCgpLCBjaGFsbGVuZ2UubnNVUkxBdXRoZW50aWNhdGlvbkNoYWxs
ZW5nZSgpLnByb3RlY3Rpb25TcGFjZS5zZXJ2ZXJUcnVzdCk7CiB9CiAKK3ZvaWQgTmV0d29ya1Nl
c3Npb25Db2NvYTo6Y29udGludWVEaWRSZWNlaXZlQ2hhbGxlbmdlKGNvbnN0IFdlYkNvcmU6OkF1
dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiBjaGFsbGVuZ2UsIE5ldHdvcmtEYXRhVGFza0NvY29hOjpU
YXNrSWRlbnRpZmllciB0YXNrSWRlbnRpZmllciwgTmV0d29ya0RhdGFUYXNrQ29jb2EqIG5ldHdv
cmtEYXRhVGFzaywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJLaXQ6OkF1dGhlbnRpY2F0aW9u
Q2hhbGxlbmdlRGlzcG9zaXRpb24sIGNvbnN0IFdlYkNvcmU6OkNyZWRlbnRpYWwmKT4mJiBjb21w
bGV0aW9uSGFuZGxlcikKK3sKKyAgICBpZiAoIW5ldHdvcmtEYXRhVGFzaykgeworICAgICAgICBh
dXRvIGRvd25sb2FkSUQgPSB0aGlzLT5kb3dubG9hZElEKHRhc2tJZGVudGlmaWVyKTsKKyAgICAg
ICAgaWYgKGRvd25sb2FkSUQuZG93bmxvYWRJRCgpKSB7CisgICAgICAgICAgICBpZiAoYXV0byog
ZG93bmxvYWQgPSBuZXR3b3JrUHJvY2VzcygpLmRvd25sb2FkTWFuYWdlcigpLmRvd25sb2FkKGRv
d25sb2FkSUQpKSB7CisgICAgICAgICAgICAgICAgV2ViQ29yZTo6QXV0aGVudGljYXRpb25DaGFs
bGVuZ2UgYXV0aGVudGljYXRpb25DaGFsbGVuZ2UgeyBjaGFsbGVuZ2UgfTsKKyAgICAgICAgICAg
ICAgICAvLyBSZWNlaXZlZCBhbiBhdXRoZW50aWNhdGlvbiBjaGFsbGVuZ2UgZm9yIGEgZG93bmxv
YWQgYmVpbmcgcmVzdW1lZC4KKyAgICAgICAgICAgICAgICBkb3dubG9hZC0+ZGlkUmVjZWl2ZUNo
YWxsZW5nZShhdXRoZW50aWNhdGlvbkNoYWxsZW5nZSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxl
cikpOworICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQor
ICAgICAgICBMT0coTmV0d29ya1Nlc3Npb24sICIlbGx1IGRpZFJlY2VpdmVDaGFsbGVuZ2UgY29t
cGxldGlvbkhhbmRsZXIgKGNhbmNlbCkiLCB0YXNrSWRlbnRpZmllcik7CisgICAgICAgIGNvbXBs
ZXRpb25IYW5kbGVyKEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlRGlzcG9zaXRpb246OkNhbmNlbCwg
eyB9KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGF1dG8gc2Vzc2lvbklEID0gdGhp
cy0+c2Vzc2lvbklEKCk7CisgICAgV2ViQ29yZTo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2UgYXV0
aGVudGljYXRpb25DaGFsbGVuZ2UgeyBjaGFsbGVuZ2UgfTsKKyAgICBhdXRvIGNoYWxsZW5nZUNv
bXBsZXRpb25IYW5kbGVyID0gW2NvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9u
SGFuZGxlciksIG5ldHdvcmtQcm9jZXNzID0gbWFrZVJlZihuZXR3b3JrUHJvY2VzcygpKSwgc2Vz
c2lvbklELCBhdXRoZW50aWNhdGlvbkNoYWxsZW5nZSwgdGFza0lkZW50aWZpZXIsIHBhcnRpdGlv
biA9IG5ldHdvcmtEYXRhVGFzay0+cGFydGl0aW9uKCldKFdlYktpdDo6QXV0aGVudGljYXRpb25D
aGFsbGVuZ2VEaXNwb3NpdGlvbiBkaXNwb3NpdGlvbiwgY29uc3QgV2ViQ29yZTo6Q3JlZGVudGlh
bCYgY3JlZGVudGlhbCkgbXV0YWJsZSB7CisjaWYgIUxPR19ESVNBQkxFRAorICAgICAgICBMT0co
TmV0d29ya1Nlc3Npb24sICIlbGx1IGRpZFJlY2VpdmVDaGFsbGVuZ2UgY29tcGxldGlvbkhhbmRs
ZXIgJWQiLCB0YXNrSWRlbnRpZmllciwgZGlzcG9zaXRpb24pOworI2Vsc2UKKyAgICAgICAgVU5V
U0VEX1BBUkFNKHRhc2tJZGVudGlmaWVyKTsKKyNlbmRpZgorI2lmICFVU0UoQ1JFREVOVElBTF9T
VE9SQUdFX1dJVEhfTkVUV09SS19TRVNTSU9OKQorICAgICAgICBVTlVTRURfUEFSQU0oc2Vzc2lv
bklEKTsKKyAgICAgICAgVU5VU0VEX1BBUkFNKGF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKTsKKyNl
bHNlCisgICAgICAgIGlmIChjcmVkZW50aWFsLnBlcnNpc3RlbmNlKCkgPT0gV2ViQ29yZTo6Q3Jl
ZGVudGlhbFBlcnNpc3RlbmNlRm9yU2Vzc2lvbiAmJiBhdXRoZW50aWNhdGlvbkNoYWxsZW5nZS5w
cm90ZWN0aW9uU3BhY2UoKS5pc1Bhc3N3b3JkQmFzZWQoKSkgeworICAgICAgICAgICAgV2ViQ29y
ZTo6Q3JlZGVudGlhbCBub25QZXJzaXN0ZW50Q3JlZGVudGlhbChjcmVkZW50aWFsLnVzZXIoKSwg
Y3JlZGVudGlhbC5wYXNzd29yZCgpLCBXZWJDb3JlOjpDcmVkZW50aWFsUGVyc2lzdGVuY2VOb25l
KTsKKyAgICAgICAgICAgIFVSTCB1cmxUb1N0b3JlOworICAgICAgICAgICAgaWYgKGF1dGhlbnRp
Y2F0aW9uQ2hhbGxlbmdlLmZhaWx1cmVSZXNwb25zZSgpLmh0dHBTdGF0dXNDb2RlKCkgPT0gNDAx
KQorICAgICAgICAgICAgICAgIHVybFRvU3RvcmUgPSBhdXRoZW50aWNhdGlvbkNoYWxsZW5nZS5m
YWlsdXJlUmVzcG9uc2UoKS51cmwoKTsKKyAgICAgICAgICAgIGlmIChhdXRvIHN0b3JhZ2VTZXNz
aW9uID0gbmV0d29ya1Byb2Nlc3MtPnN0b3JhZ2VTZXNzaW9uKHNlc3Npb25JRCkpCisgICAgICAg
ICAgICAgICAgc3RvcmFnZVNlc3Npb24tPmNyZWRlbnRpYWxTdG9yYWdlKCkuc2V0KHBhcnRpdGlv
biwgbm9uUGVyc2lzdGVudENyZWRlbnRpYWwsIGF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLnByb3Rl
Y3Rpb25TcGFjZSgpLCB1cmxUb1N0b3JlKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAg
ICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKworICAgICAgICAgICAgY29tcGxldGlvbkhhbmRs
ZXIoZGlzcG9zaXRpb24sIG5vblBlcnNpc3RlbnRDcmVkZW50aWFsKTsKKyAgICAgICAgICAgIHJl
dHVybjsKKyAgICAgICAgfQorI2VuZGlmCisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGRpc3Bv
c2l0aW9uLCBjcmVkZW50aWFsKTsKKyAgICB9OworICAgIG5ldHdvcmtEYXRhVGFzay0+ZGlkUmVj
ZWl2ZUNoYWxsZW5nZShXVEZNb3ZlKGF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKSwgV1RGTW92ZShj
aGFsbGVuZ2VDb21wbGV0aW9uSGFuZGxlcikpOworfQorCiB9CmRpZmYgLS1naXQgYS9Ub29scy9D
aGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggZTQwZGU1N2ZkZjM4YzY0ZWI4NWU3YTMz
YWNjMDNhNGRhMWFkMTdhOS4uNDgwMTE3MjM2NjYyZjgxZTczMWNhYmE0NzljMTY1YWY2NWYwM2E1
ZCAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDI5IEBACisyMDE5LTAxLTI5ICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNv
bT4KKworICAgICAgICBBZG9wdCBuZXcgU1BJIHRvIGV2YWx1YXRlIHNlcnZlciBjZXJ0aWZpY2F0
ZSB0cnVzdAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTkzMzU1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQWxleCBDaHJpc3RlbnNlbi4KKworICAgICAg
ICBBZGQgaW5mcmFzdHJ1Y3R1cmUgdG8gaGFuZGxlIEhUVFBTIHNlcnZlciB0cnVzdCBldmFsdWF0
aW9uIHRlc3RpbmcuCisKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxl
L0JpbmRpbmdzL1Rlc3RSdW5uZXIuaWRsOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5q
ZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5jcHA6CisgICAgICAgIChXVFI6OlRlc3RSdW5uZXI6OnNl
dENhbkhhbmRsZUhUVFBTU2VydmVyVHJ1c3RFdmFsdWF0aW9uKToKKyAgICAgICAgKFdUUjo6VGVz
dFJ1bm5lcjo6Y2FuRG9TZXJ2ZXJUcnVzdEV2YWx1YXRpb25Jbk5ldHdvcmtQcm9jZXNzKToKKyAg
ICAgICAgKFdUUjo6VGVzdFJ1bm5lcjo6c2VydmVyVHJ1c3RFdmFsdWF0aW9uQ2FsbGJhY2tDYWxs
c0NvdW50KToKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RS
dW5uZXIuaDoKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcDoK
KyAgICAgICAgKFdUUjo6VGVzdENvbnRyb2xsZXI6OnJlc2V0UHJlZmVyZW5jZXNUb0NvbnNpc3Rl
bnRWYWx1ZXMpOgorICAgICAgICAoV1RSOjpUZXN0Q29udHJvbGxlcjo6ZGlkUmVjZWl2ZUF1dGhl
bnRpY2F0aW9uQ2hhbGxlbmdlKToKKyAgICAgICAgKFdUUjo6VGVzdENvbnRyb2xsZXI6OmNhbkRv
U2VydmVyVHJ1c3RFdmFsdWF0aW9uSW5OZXR3b3JrUHJvY2VzcyBjb25zdCk6CisgICAgICAgICog
V2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5oOgorICAgICAgICAoV1RSOjpUZXN0Q29u
dHJvbGxlcjo6c2VydmVyVHJ1c3RFdmFsdWF0aW9uQ2FsbGJhY2tDYWxsc0NvdW50IGNvbnN0KToK
KyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmNwcDoKKyAgICAgICAg
KFdUUjo6VGVzdEludm9jYXRpb246OmRpZFJlY2VpdmVTeW5jaHJvbm91c01lc3NhZ2VGcm9tSW5q
ZWN0ZWRCdW5kbGUpOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvY29jb2EvVGVzdENvbnRy
b2xsZXJDb2NvYS5tbToKKyAgICAgICAgKFdUUjo6VGVzdENvbnRyb2xsZXI6OmNhbkRvU2VydmVy
VHJ1c3RFdmFsdWF0aW9uSW5OZXR3b3JrUHJvY2VzcyBjb25zdCk6CisKIDIwMTktMDEtMjggIFph
bGFuIEJ1anRhcyAgPHphbGFuQGFwcGxlLmNvbT4KIAogICAgICAgICBbTEZDXVtNYXJnaW5Db2xs
YXBzaW5nXVtRdWlya3NdIFF1aXJrIG1hcmdpbiB2YWx1ZXMgZ2V0IHByb3BhZ2F0ZWQgdGhyb3Vn
aCBtYXJnaW4gY29sbGFwc2luZwpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9J
bmplY3RlZEJ1bmRsZS9CaW5kaW5ncy9UZXN0UnVubmVyLmlkbCBiL1Rvb2xzL1dlYktpdFRlc3RS
dW5uZXIvSW5qZWN0ZWRCdW5kbGUvQmluZGluZ3MvVGVzdFJ1bm5lci5pZGwKaW5kZXggZjE1NTUw
ZjUzMGVkMGYzZDUxOTQ3ODAyMjY5NTIwMWU5MDJjYmFiMy4uZjY3MWEwYWJlN2U2NWJkNzE1NDJk
ZjIwZmQ3NzgxOGE2OTdlZWQxZiAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9J
bmplY3RlZEJ1bmRsZS9CaW5kaW5ncy9UZXN0UnVubmVyLmlkbAorKysgYi9Ub29scy9XZWJLaXRU
ZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0JpbmRpbmdzL1Rlc3RSdW5uZXIuaWRsCkBAIC0zMzgs
NiArMzM4LDEwIEBAIGludGVyZmFjZSBUZXN0UnVubmVyIHsKICAgICB2b2lkIHRlcm1pbmF0ZU5l
dHdvcmtQcm9jZXNzKCk7CiAgICAgdm9pZCB0ZXJtaW5hdGVTZXJ2aWNlV29ya2VyUHJvY2Vzcygp
OwogCisgICAgdm9pZCBzZXRDYW5IYW5kbGVIVFRQU1NlcnZlclRydXN0RXZhbHVhdGlvbihib29s
ZWFuIGNhbkhhbmRsZSk7CisgICAgcmVhZG9ubHkgYXR0cmlidXRlIGJvb2xlYW4gY2FuRG9TZXJ2
ZXJUcnVzdEV2YWx1YXRpb25Jbk5ldHdvcmtQcm9jZXNzOworICAgIHJlYWRvbmx5IGF0dHJpYnV0
ZSB1bnNpZ25lZCBsb25nIHNlcnZlclRydXN0RXZhbHVhdGlvbkNhbGxiYWNrQ2FsbHNDb3VudDsK
KwogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBib29sZWFuIGRpZENhbmNlbENsaWVudFJlZGlyZWN0
OwogCiAgICAgdm9pZCByZW1vdmVBbGxTZXNzaW9uQ3JlZGVudGlhbHMob2JqZWN0IGNhbGxiYWNr
KTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVz
dFJ1bm5lci5jcHAgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RS
dW5uZXIuY3BwCmluZGV4IDEwMGFiN2M0MGY3Mzg5MjlkOTI2Y2U4NDY5ZjEwNjczMmQyMDdkNjgu
LmE2NTlkMTY5YWVmMmZmMGY2ZmQyZGQ3ODA2MTM3ZTI2MzFhNGU1MjYgMTAwNjQ0Ci0tLSBhL1Rv
b2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5jcHAKKysrIGIv
VG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmNwcApAQCAt
MjY5MCw0ICsyNjkwLDI5IEBAIGJvb2wgVGVzdFJ1bm5lcjo6a2V5RXhpc3RzSW5LZXljaGFpbihK
U1N0cmluZ1JlZiBhdHRyTGFiZWwsIEpTU3RyaW5nUmVmIGFwcGxpY2F0CiAgICAgcmV0dXJuIFdL
Qm9vbGVhbkdldFZhbHVlKGFkb3B0V0soc3RhdGljX2Nhc3Q8V0tCb29sZWFuUmVmPihyZXR1cm5E
YXRhKSkuZ2V0KCkpOwogfQogCit2b2lkIFRlc3RSdW5uZXI6OnNldENhbkhhbmRsZUhUVFBTU2Vy
dmVyVHJ1c3RFdmFsdWF0aW9uKGJvb2wgY2FuSGFuZGxlKQoreworICAgIFdLUmV0YWluUHRyPFdL
U3RyaW5nUmVmPiBtZXNzYWdlTmFtZShBZG9wdFdLLCBXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0
cmluZygiU2V0Q2FuSGFuZGxlSFRUUFNTZXJ2ZXJUcnVzdEV2YWx1YXRpb24iKSk7CisgICAgV0tS
ZXRhaW5QdHI8V0tCb29sZWFuUmVmPiBtZXNzYWdlQm9keShBZG9wdFdLLCBXS0Jvb2xlYW5DcmVh
dGUoY2FuSGFuZGxlKSk7CisgICAgV0tCdW5kbGVQb3N0U3luY2hyb25vdXNNZXNzYWdlKEluamVj
dGVkQnVuZGxlOjpzaW5nbGV0b24oKS5idW5kbGUoKSwgbWVzc2FnZU5hbWUuZ2V0KCksIG1lc3Nh
Z2VCb2R5LmdldCgpLCBudWxscHRyKTsKK30KKworYm9vbCBUZXN0UnVubmVyOjpjYW5Eb1NlcnZl
clRydXN0RXZhbHVhdGlvbkluTmV0d29ya1Byb2Nlc3MoKQoreworICAgIFdLUmV0YWluUHRyPFdL
U3RyaW5nUmVmPiBtZXNzYWdlTmFtZShBZG9wdFdLLCBXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0
cmluZygiQ2FuRG9TZXJ2ZXJUcnVzdEV2YWx1YXRpb25Jbk5ldHdvcmtQcm9jZXNzIikpOworICAg
IFdLVHlwZVJlZiByZXR1cm5EYXRhID0gbnVsbHB0cjsKKyAgICBXS0J1bmRsZVBhZ2VQb3N0U3lu
Y2hyb25vdXNNZXNzYWdlRm9yVGVzdGluZyhJbmplY3RlZEJ1bmRsZTo6c2luZ2xldG9uKCkucGFn
ZSgpLT5wYWdlKCksIG1lc3NhZ2VOYW1lLmdldCgpLCBudWxscHRyLCAmcmV0dXJuRGF0YSk7Cisg
ICAgQVNTRVJUKFdLR2V0VHlwZUlEKHJldHVybkRhdGEpID09IFdLQm9vbGVhbkdldFR5cGVJRCgp
KTsKKyAgICByZXR1cm4gV0tCb29sZWFuR2V0VmFsdWUoYWRvcHRXSyhzdGF0aWNfY2FzdDxXS0Jv
b2xlYW5SZWY+KHJldHVybkRhdGEpKS5nZXQoKSk7Cit9CisKK3Vuc2lnbmVkIGxvbmcgVGVzdFJ1
bm5lcjo6c2VydmVyVHJ1c3RFdmFsdWF0aW9uQ2FsbGJhY2tDYWxsc0NvdW50KCkKK3sKKyAgICBX
S1JldGFpblB0cjxXS1N0cmluZ1JlZj4gbWVzc2FnZU5hbWUoQWRvcHRXSywgV0tTdHJpbmdDcmVh
dGVXaXRoVVRGOENTdHJpbmcoIlNlcnZlclRydXN0RXZhbHVhdGlvbkNhbGxiYWNrQ2FsbHNDb3Vu
dCIpKTsKKyAgICBXS1R5cGVSZWYgcmV0dXJuRGF0YSA9IG51bGxwdHI7CisgICAgV0tCdW5kbGVQ
YWdlUG9zdFN5bmNocm9ub3VzTWVzc2FnZUZvclRlc3RpbmcoSW5qZWN0ZWRCdW5kbGU6OnNpbmds
ZXRvbigpLnBhZ2UoKS0+cGFnZSgpLCBtZXNzYWdlTmFtZS5nZXQoKSwgbnVsbHB0ciwgJnJldHVy
bkRhdGEpOworICAgIEFTU0VSVChXS0dldFR5cGVJRChyZXR1cm5EYXRhKSA9PSBXS1VJbnQ2NEdl
dFR5cGVJRCgpKTsKKyAgICByZXR1cm4gV0tVSW50NjRHZXRWYWx1ZShhZG9wdFdLKHN0YXRpY19j
YXN0PFdLVUludDY0UmVmPihyZXR1cm5EYXRhKSkuZ2V0KCkpOworfQorCiB9IC8vIG5hbWVzcGFj
ZSBXVFIKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUv
VGVzdFJ1bm5lci5oIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0
UnVubmVyLmgKaW5kZXggYTQwMTk5OWY0MTJlOWJkMzkzMmFiODFjODRiNzc3M2Q1ZGYwNzNmMy4u
OTRhOWExNTNmZGVmN2M2YzEwYWM3NDRhZDI2N2Y1YzY3YzUyNjc5MiAxMDA2NDQKLS0tIGEvVG9v
bHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmgKKysrIGIvVG9v
bHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmgKQEAgLTQ4MSw2
ICs0ODEsMTAgQEAgcHVibGljOgogICAgIHZvaWQgY2xlYW5VcEtleWNoYWluKEpTU3RyaW5nUmVm
IGF0dHJMYWJlbCk7CiAgICAgYm9vbCBrZXlFeGlzdHNJbktleWNoYWluKEpTU3RyaW5nUmVmIGF0
dHJMYWJlbCwgSlNTdHJpbmdSZWYgYXBwbGljYXRpb25UYWdCYXNlNjQpOwogCisgICAgdm9pZCBz
ZXRDYW5IYW5kbGVIVFRQU1NlcnZlclRydXN0RXZhbHVhdGlvbihib29sIGNhbkhhbmRsZSk7Cisg
ICAgYm9vbCBjYW5Eb1NlcnZlclRydXN0RXZhbHVhdGlvbkluTmV0d29ya1Byb2Nlc3MoKTsKKyAg
ICB1bnNpZ25lZCBsb25nIHNlcnZlclRydXN0RXZhbHVhdGlvbkNhbGxiYWNrQ2FsbHNDb3VudCgp
OworCiBwcml2YXRlOgogICAgIFRlc3RSdW5uZXIoKTsKIApkaWZmIC0tZ2l0IGEvVG9vbHMvV2Vi
S2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5jcHAgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVy
L1Rlc3RDb250cm9sbGVyLmNwcAppbmRleCAwY2ZmNzE5NTZkYjljNDI4YmI1MTdiNGQ2Y2QzYWNj
Yjk0MWJlNGQ4Li45MmUxNjBhNjE1ODkwZDMzNjkyNGM1NjBmNDMzYWIwZWQyNTVhOTQ0IDEwMDY0
NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcAorKysgYi9U
b29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcApAQCAtODI0LDYgKzgyNCw4
IEBAIHZvaWQgVGVzdENvbnRyb2xsZXI6OnJlc2V0UHJlZmVyZW5jZXNUb0NvbnNpc3RlbnRWYWx1
ZXMoY29uc3QgVGVzdE9wdGlvbnMmIG9wdGlvCiAKICAgICBXS1ByZWZlcmVuY2VzU2V0V2ViU1FM
RGlzYWJsZWQocHJlZmVyZW5jZXMsIGZhbHNlKTsKIAorICAgIG1fc2VydmVyVHJ1c3RFdmFsdWF0
aW9uQ2FsbGJhY2tDYWxsc0NvdW50ID0gMDsKKwogICAgIHBsYXRmb3JtUmVzZXRQcmVmZXJlbmNl
c1RvQ29uc2lzdGVudFZhbHVlcygpOwogfQogCkBAIC0yMDYwLDYgKzIwNjIsOCBAQCB2b2lkIFRl
c3RDb250cm9sbGVyOjpkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoV0tQYWdlUmVm
IHBhZ2UsIFdLQXV0aGVudAogICAgICAgICAvLyBBbnkgbm9uLWVtcHR5IGNyZWRlbnRpYWwgc2ln
bmFscyB0byBhY2NlcHQgdGhlIHNlcnZlciB0cnVzdC4gU2luY2UgdGhlIGNyb3NzLXBsYXRmb3Jt
IEFQSQogICAgICAgICAvLyBkb2Vzbid0IGV4cG9zZSBhIHdheSB0byBjcmVhdGUgYSBjcmVkZW50
aWFsIGZyb20gc2VydmVyIHRydXN0LCB3ZSB1c2UgYSBwYXNzd29yZCBjcmVkZW50aWFsLgogCisg
ICAgICAgIG1fc2VydmVyVHJ1c3RFdmFsdWF0aW9uQ2FsbGJhY2tDYWxsc0NvdW50Kys7CisKICAg
ICAgICAgV0tSZXRhaW5QdHI8V0tDcmVkZW50aWFsUmVmPiBjcmVkZW50aWFsID0gYWRvcHRXSyhX
S0NyZWRlbnRpYWxDcmVhdGUodG9XSygiYWNjZXB0IHNlcnZlciB0cnVzdCIpLmdldCgpLCB0b1dL
KCIiKS5nZXQoKSwga1dLQ3JlZGVudGlhbFBlcnNpc3RlbmNlTm9uZSkpOwogICAgICAgICBXS0F1
dGhlbnRpY2F0aW9uRGVjaXNpb25MaXN0ZW5lclVzZUNyZWRlbnRpYWwoZGVjaXNpb25MaXN0ZW5l
ciwgY3JlZGVudGlhbC5nZXQoKSk7CiAgICAgICAgIHJldHVybjsKQEAgLTMyMjMsNiArMzIyNywx
MiBAQCBib29sIFRlc3RDb250cm9sbGVyOjprZXlFeGlzdHNJbktleWNoYWluKGNvbnN0IFN0cmlu
ZyYsIGNvbnN0IFN0cmluZyYpCiB7CiAgICAgcmV0dXJuIGZhbHNlOwogfQorCitib29sIFRlc3RD
b250cm9sbGVyOjpjYW5Eb1NlcnZlclRydXN0RXZhbHVhdGlvbkluTmV0d29ya1Byb2Nlc3MoKSBj
b25zdAoreworICAgIHJldHVybiBmYWxzZTsKK30KKwogI2VuZGlmCiAKIHZvaWQgVGVzdENvbnRy
b2xsZXI6OnNlbmREaXNwbGF5Q29uZmlndXJhdGlvbkNoYW5nZWRNZXNzYWdlRm9yVGVzdGluZygp
CmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmggYi9U
b29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmgKaW5kZXggMjA1OGM3OWVjZmFh
NWRjZTMxNGZhNjI4NTBmN2RjYmQwYmEzZmEyNy4uMjVlYzkwNGJlNDJiMmNkYzMwOTRlMWViZWFi
M2Q3Zjk3ZDRhOTVlMiAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29u
dHJvbGxlci5oCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuaApA
QCAtMjgxLDYgKzI4MSw5IEBAIHB1YmxpYzoKICAgICBVSUtleWJvYXJkSW5wdXRNb2RlICpvdmVy
cmlkZGVuS2V5Ym9hcmRJbnB1dE1vZGUoKSBjb25zdCB7IHJldHVybiBtX292ZXJyaWRkZW5LZXli
b2FyZElucHV0TW9kZS5nZXQoKTsgfQogI2VuZGlmCiAKKyAgICBib29sIGNhbkRvU2VydmVyVHJ1
c3RFdmFsdWF0aW9uSW5OZXR3b3JrUHJvY2VzcygpIGNvbnN0OworICAgIHVpbnQ2NF90IHNlcnZl
clRydXN0RXZhbHVhdGlvbkNhbGxiYWNrQ2FsbHNDb3VudCgpIGNvbnN0IHsgcmV0dXJuIG1fc2Vy
dmVyVHJ1c3RFdmFsdWF0aW9uQ2FsbGJhY2tDYWxsc0NvdW50OyB9CisKIHByaXZhdGU6CiAgICAg
V0tSZXRhaW5QdHI8V0tQYWdlQ29uZmlndXJhdGlvblJlZj4gZ2VuZXJhdGVQYWdlQ29uZmlndXJh
dGlvbihXS0NvbnRleHRDb25maWd1cmF0aW9uUmVmKTsKICAgICBXS1JldGFpblB0cjxXS0NvbnRl
eHRDb25maWd1cmF0aW9uUmVmPiBnZW5lcmF0ZUNvbnRleHRDb25maWd1cmF0aW9uKCkgY29uc3Q7
CkBAIC01MzQsNiArNTM3LDggQEAgcHJpdmF0ZToKICAgICAgICAgeyB9CiAgICAgfTsKICAgICBI
YXNoTWFwPHVpbnQ2NF90LCBBYmFuZG9uZWREb2N1bWVudEluZm8+IG1fYWJhbmRvbmVkRG9jdW1l
bnRJbmZvOworCisgICAgdWludDY0X3QgbV9zZXJ2ZXJUcnVzdEV2YWx1YXRpb25DYWxsYmFja0Nh
bGxzQ291bnQgeyAwIH07CiB9OwogCiBzdHJ1Y3QgVGVzdENvbW1hbmQgewpkaWZmIC0tZ2l0IGEv
VG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlvbi5jcHAgYi9Ub29scy9XZWJLaXRU
ZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmNwcAppbmRleCAxZmVkZDhiMWYxZWZkNTY5NzNhNGUz
YzEzNzdjMmYxNmIzYTgzMmMxLi40MjljZTI5YjUyMDExOGRmMjQ4YTAzMWFmN2U0NTM4MmIzNTg3
NDc0IDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmNw
cAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmNwcApAQCAtMTUy
Miw2ICsxNTIyLDIzIEBAIFdLUmV0YWluUHRyPFdLVHlwZVJlZj4gVGVzdEludm9jYXRpb246OmRp
ZFJlY2VpdmVTeW5jaHJvbm91c01lc3NhZ2VGcm9tSW5qZWN0ZWRCCiAgICAgICAgIHJldHVybiBy
ZXN1bHQ7CiAgICAgfQogCisgICAgaWYgKFdLU3RyaW5nSXNFcXVhbFRvVVRGOENTdHJpbmcobWVz
c2FnZU5hbWUsICJTZXRDYW5IYW5kbGVIVFRQU1NlcnZlclRydXN0RXZhbHVhdGlvbiIpKSB7Cisg
ICAgICAgIEFTU0VSVChXS0dldFR5cGVJRChtZXNzYWdlQm9keSkgPT0gV0tCb29sZWFuR2V0VHlw
ZUlEKCkpOworICAgICAgICBhdXRvIGNhbkhhbmRsZSA9IFdLQm9vbGVhbkdldFZhbHVlKHN0YXRp
Y19jYXN0PFdLQm9vbGVhblJlZj4obWVzc2FnZUJvZHkpKTsKKyAgICAgICAgV0tDb250ZXh0U2V0
Q2FuSGFuZGxlSFRUUFNTZXJ2ZXJUcnVzdEV2YWx1YXRpb24oVGVzdENvbnRyb2xsZXI6OnNpbmds
ZXRvbigpLmNvbnRleHQoKSwgY2FuSGFuZGxlKTsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7Cisg
ICAgfQorCisgICAgaWYgKFdLU3RyaW5nSXNFcXVhbFRvVVRGOENTdHJpbmcobWVzc2FnZU5hbWUs
ICJDYW5Eb1NlcnZlclRydXN0RXZhbHVhdGlvbkluTmV0d29ya1Byb2Nlc3MiKSkgeworICAgICAg
ICBXS1JldGFpblB0cjxXS1R5cGVSZWY+IHJlc3VsdChBZG9wdFdLLCBXS0Jvb2xlYW5DcmVhdGUo
VGVzdENvbnRyb2xsZXI6OnNpbmdsZXRvbigpLmNhbkRvU2VydmVyVHJ1c3RFdmFsdWF0aW9uSW5O
ZXR3b3JrUHJvY2VzcygpKSk7CisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfQorCisgICAg
aWYgKFdLU3RyaW5nSXNFcXVhbFRvVVRGOENTdHJpbmcobWVzc2FnZU5hbWUsICJTZXJ2ZXJUcnVz
dEV2YWx1YXRpb25DYWxsYmFja0NhbGxzQ291bnQiKSkgeworICAgICAgICBXS1JldGFpblB0cjxX
S1R5cGVSZWY+IHJlc3VsdChBZG9wdFdLLCBXS1VJbnQ2NENyZWF0ZShUZXN0Q29udHJvbGxlcjo6
c2luZ2xldG9uKCkuc2VydmVyVHJ1c3RFdmFsdWF0aW9uQ2FsbGJhY2tDYWxsc0NvdW50KCkpKTsK
KyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CisKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQo
KTsKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RS
dW5uZXIvY29jb2EvVGVzdENvbnRyb2xsZXJDb2NvYS5tbSBiL1Rvb2xzL1dlYktpdFRlc3RSdW5u
ZXIvY29jb2EvVGVzdENvbnRyb2xsZXJDb2NvYS5tbQppbmRleCAzNjNhMmM2ZTExNGQ1N2Q4YmFm
MTc4MWRmNjFhMTM2NGM1MjBjMjA5Li4wOGI0NmIxMTNmNGMxOGNhMDRiN2NhYTJhNDkyNThmYmQ0
ZjJmNTM1IDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL2NvY29hL1Rlc3RDb250
cm9sbGVyQ29jb2EubW0KKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9jb2NvYS9UZXN0Q29u
dHJvbGxlckNvY29hLm1tCkBAIC00MDUsNCArNDA1LDEzIEBAIHZvaWQgVGVzdENvbnRyb2xsZXI6
OmFsbG93Q2FjaGVTdG9yYWdlUXVvdGFJbmNyZWFzZSgpCiAjZW5kaWYKIH0KIAorYm9vbCBUZXN0
Q29udHJvbGxlcjo6Y2FuRG9TZXJ2ZXJUcnVzdEV2YWx1YXRpb25Jbk5ldHdvcmtQcm9jZXNzKCkg
Y29uc3QKK3sKKyNpZiBIQVZFKENGTkVUV09SS19OU1VSTFNFU1NJT05fU1RSSUNUUlVTVEVWQUxV
QVRFKQorICAgIHJldHVybiB0cnVlOworI2Vsc2UKKyAgICByZXR1cm4gZmFsc2U7CisjZW5kaWYK
K30KKwogfSAvLyBuYW1lc3BhY2UgV1RSCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggNGRjOTRlODZmN2E2YjE5NzQ4N2ZlZjcw
MzgwN2RmY2VlMmVhYzIwZC4uYmM1OWI5Nzk4ZmMzODQ2YzgwNTc3YWE2NTMyMzRlZjY4YWM0NjIx
OCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0No
YW5nZUxvZwpAQCAtMSwzICsxLDEzIEBACisyMDE5LTAxLTI5ICBZb3Vlbm4gRmFibGV0ICA8eW91
ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBBZG9wdCBuZXcgU1BJIHRvIGV2YWx1YXRlIHNlcnZl
ciBjZXJ0aWZpY2F0ZSB0cnVzdAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTkzMzU1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQWxleCBDaHJpc3RlbnNl
bi4KKworICAgICAgICAqIGh0dHAvdGVzdHMvc3NsL2NlcnRpZmljYXRlLXZhbGlkYXRpb24tZXhw
ZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL3NzbC9jZXJ0aWZpY2F0ZS12
YWxpZGF0aW9uLmh0bWw6IEFkZGVkLgorCiAyMDE5LTAxLTI4ICBBbnRvaW5lIFF1aW50ICA8Z3Jh
b3V0c0BhcHBsZS5jb20+CiAKICAgICAgICAgTGltaXQgdXNlci1hZ2VudCBpbnRlcmFjdGlvbnMg
YmFzZWQgb24gdGhlIHRvdWNoLWFjdGlvbiBwcm9wZXJ0eSBvbiBpT1MKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2h0dHAvdGVzdHMvc3NsL2NlcnRpZmljYXRlLXZhbGlkYXRpb24tZXhwZWN0ZWQu
dHh0IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zc2wvY2VydGlmaWNhdGUtdmFsaWRhdGlvbi1l
eHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZGE4NGEwNTc3ZWVmOWEyYzUwZWE0OTdkMmRmYzU3MGYy
N2Y2M2QyNAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvc3NsL2Nl
cnRpZmljYXRlLXZhbGlkYXRpb24tZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMyBAQAorCitQQVNT
IENlcnRpZmljYXRlIHZhbGlkYXRpb24gaW4gTmV0d29yayBQcm9jZXNzIAorCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NzbC9jZXJ0aWZpY2F0ZS12YWxpZGF0aW9uLmh0bWwg
Yi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NzbC9jZXJ0aWZpY2F0ZS12YWxpZGF0aW9uLmh0bWwK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uMzBlNjNkMjc2NWVmMjdiYTExZTY4OGIwYjU1NDI2MDEwNzQ2NjJmZgotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvc3NsL2NlcnRpZmljYXRlLXZh
bGlkYXRpb24uaHRtbApAQCAtMCwwICsxLDQ2IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgor
PGhlYWQ+Cis8dGl0bGU+Q2VydGlmaWNhdGUgdmFsaWRhdGlvbiBpbiBOZXR3b3JrIFByb2Nlc3M8
L3RpdGxlPgorPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0
PgorPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0
PgorPC9oZWFkPgorPGJvZHk+Cis8c2NyaXB0PgorZnVuY3Rpb24gd2l0aF9pZnJhbWUodXJsKSB7
CisgICAgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uKHJlc29sdmUpIHsKKyAgICAgICAgdmFy
IGZyYW1lID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnaWZyYW1lJyk7CisgICAgICAgIGZyYW1l
LmNsYXNzTmFtZSA9ICd0ZXN0LWlmcmFtZSc7CisgICAgICAgIGZyYW1lLnNyYyA9IHVybDsKKyAg
ICAgICAgZnJhbWUub25sb2FkID0gZnVuY3Rpb24oKSB7IHJlc29sdmUoZnJhbWUpOyB9OworICAg
ICAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGZyYW1lKTsKKyAgICB9KTsKK30KKworYXN5
bmMgZnVuY3Rpb24gZG9UZXN0KCkKK3sKKyAgICBhc3NlcnRfdHJ1ZSghIXdpbmRvdy50ZXN0UnVu
bmVyLCAiVGVzdCByZXF1aXJlcyB0ZXN0UnVubmVyIik7CisKKyAgICBpZiAoIXdpbmRvdy50ZXN0
UnVubmVyLmNhbkRvU2VydmVyVHJ1c3RFdmFsdWF0aW9uSW5OZXR3b3JrUHJvY2VzcykKKyAgICAg
ICAgcmV0dXJuOworCisgICAgd2luZG93LnRlc3RSdW5uZXIuc2V0QWxsb3dzQW55U1NMQ2VydGlm
aWNhdGUoZmFsc2UpOworICAgIC8vIFRoaXMgc2hvdWxkIHRyaWdnZXIgbmV0d29yayBwcm9jZXNz
IHNlcnZlciB0cnVzdCBldmFsdWF0aW9uLgorICAgIHdpbmRvdy50ZXN0UnVubmVyLnNldENhbkhh
bmRsZUhUVFBTU2VydmVyVHJ1c3RFdmFsdWF0aW9uKGZhbHNlKTsKKworICAgIC8vIENyYXNoIG5l
dHdvcmsgcHJvY2VzcyB0byBtYWtlIHN1cmUgd2UgY3JlYXRlIG5ldyBIVFRQUyBjb25uZWN0aW9u
cy4KKyAgICB3aW5kb3cudGVzdFJ1bm5lci50ZXJtaW5hdGVOZXR3b3JrUHJvY2VzcygpOworCisg
ICAgY29uc3QgY3VycmVudENhbGxiYWNrQ291bnRzID0gd2luZG93LnRlc3RSdW5uZXIuc2VydmVy
VHJ1c3RFdmFsdWF0aW9uQ2FsbGJhY2tDYWxsc0NvdW50OworCisgICAgY29uc3QgaWZyYW1lID0g
YXdhaXQgd2l0aF9pZnJhbWUoImh0dHBzOi8vbG9jYWxob3N0Ojg0NDMiKTsKKyAgICBpZnJhbWUu
cmVtb3ZlKCk7CisKKyAgICBhc3NlcnRfZXF1YWxzKHdpbmRvdy50ZXN0UnVubmVyLnNlcnZlclRy
dXN0RXZhbHVhdGlvbkNhbGxiYWNrQ2FsbHNDb3VudCAtIGN1cnJlbnRDYWxsYmFja0NvdW50cywg
MSk7Cit9CisKK2RvVGVzdCgpLnRoZW4oZG9uZSwgKGUpID0+IHsgYXNzZXJ0X3VucmVhY2hlZCgi
dGVzdCBmYWlsZWQ6ICIgKyBlKTsgZG9uZSgpOyB9KTsKKworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8
L2h0bWw+Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>