<?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>215201</bug_id>
          
          <creation_ts>2020-08-05 16:31:33 -0700</creation_ts>
          <short_desc>Experimental: Cap the expiry of persistent cookies set in 3rd-party CNAME cloaked HTTP responses</short_desc>
          <delta_ts>2020-08-10 22:34:34 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit Misc.</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=215280</see_also>
    
    <see_also>https://bugs.webkit.org/show_bug.cgi?id=215282</see_also>
    
    <see_also>https://bugs.webkit.org/show_bug.cgi?id=215294</see_also>
    
    <see_also>https://bugs.webkit.org/show_bug.cgi?id=215295</see_also>
    
    <see_also>https://bugs.webkit.org/show_bug.cgi?id=215297</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="John Wilander">wilander</reporter>
          <assigned_to name="John Wilander">wilander</assigned_to>
          <cc>achristensen</cc>
    
    <cc>benjamin</cc>
    
    <cc>bfulgham</cc>
    
    <cc>cdumez</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>dino</cc>
    
    <cc>elucherini</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>jmehta</cc>
    
    <cc>katherine_cheney</cc>
    
    <cc>sam</cc>
    
    <cc>s</cc>
    
    <cc>uiqbal</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1678133</commentid>
    <comment_count>0</comment_count>
    <who name="John Wilander">wilander</who>
    <bug_when>2020-08-05 16:31:33 -0700</bug_when>
    <thetext>3rd-party CNAME cloaking is used as a way to circumvent ITP&apos;s 7-day expiry cap on client-side cookies. We should detect 3rd-party CNAME cloaking and cap the expiry of persistent cookies set in responses to requests cloaked in such a way.

Third-party CNAME cloaking means a first-party subdomain resolves to a third-party domain which does not match the resolution for the top frame host.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1678134</commentid>
    <comment_count>1</comment_count>
    <who name="John Wilander">wilander</who>
    <bug_when>2020-08-05 16:33:43 -0700</bug_when>
    <thetext>&lt;rdar://problem/57454633&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1678180</commentid>
    <comment_count>2</comment_count>
      <attachid>406067</attachid>
    <who name="John Wilander">wilander</who>
    <bug_when>2020-08-05 19:12:42 -0700</bug_when>
    <thetext>Created attachment 406067
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1678184</commentid>
    <comment_count>3</comment_count>
      <attachid>406069</attachid>
    <who name="John Wilander">wilander</who>
    <bug_when>2020-08-05 20:06:55 -0700</bug_when>
    <thetext>Created attachment 406069
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1678185</commentid>
    <comment_count>4</comment_count>
    <who name="John Wilander">wilander</who>
    <bug_when>2020-08-05 20:07:24 -0700</bug_when>
    <thetext>Attempt to fix the non-Cocoa builds.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1678294</commentid>
    <comment_count>5</comment_count>
      <attachid>406091</attachid>
    <who name="John Wilander">wilander</who>
    <bug_when>2020-08-06 10:42:31 -0700</bug_when>
    <thetext>Created attachment 406091
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1678295</commentid>
    <comment_count>6</comment_count>
    <who name="John Wilander">wilander</who>
    <bug_when>2020-08-06 10:43:20 -0700</bug_when>
    <thetext>Skipping the tests for iOS 13 after consulting Jonathan Bedard. That should fix the iOS bot issue.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1678308</commentid>
    <comment_count>7</comment_count>
      <attachid>406091</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2020-08-06 11:06:06 -0700</bug_when>
    <thetext>Comment on attachment 406091
Patch

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

Haven&apos;t had time to do a full review yet. Will resume later (after lunch) unless someone beats me to it.

&gt; Source/WebCore/platform/network/cocoa/NetworkStorageSessionCocoa.mm:314
&gt; +        RetainPtr&lt;NSMutableDictionary&lt;NSHTTPCookiePropertyKey, id&gt;&gt; properties = adoptNS([[cookie properties] mutableCopy]);

auto

&gt; Source/WebCore/platform/network/cocoa/NetworkStorageSessionCocoa.mm:315
&gt; +        RetainPtr&lt;NSDate&gt; date = adoptNS([[NSDate alloc] initWithTimeIntervalSinceNow:cap.seconds()]);

auto

&gt; Source/WebKit/NetworkProcess/cocoa/NetworkDataTaskCocoa.mm:140
&gt; +static WebCore::RegistrableDomain lastCNAMEDomain(NSArray&lt;NSString*&gt;* cnames)

Missing spaces before the stars.

&gt; Source/WebKit/NetworkProcess/cocoa/NetworkDataTaskCocoa.mm:149
&gt; +    return WebCore::RegistrableDomain::uncheckedCreateFromHost(emptyString());

Why cannot we return { }; ?

&gt; Source/WebKit/NetworkProcess/cocoa/NetworkDataTaskCocoa.mm:157
&gt; +    auto&amp;&amp; cnameDomain = lastCNAMEDomain([m_task _resolvedCNAMEChain]);

why auto&amp;&amp; and not auto?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1678315</commentid>
    <comment_count>8</comment_count>
    <who name="John Wilander">wilander</who>
    <bug_when>2020-08-06 11:22:38 -0700</bug_when>
    <thetext>(In reply to Chris Dumez from comment #7)
&gt; Comment on attachment 406091 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=406091&amp;action=review
&gt; 
&gt; Haven&apos;t had time to do a full review yet. Will resume later (after lunch)
&gt; unless someone beats me to it.
&gt; 
&gt; &gt; Source/WebCore/platform/network/cocoa/NetworkStorageSessionCocoa.mm:314
&gt; &gt; +        RetainPtr&lt;NSMutableDictionary&lt;NSHTTPCookiePropertyKey, id&gt;&gt; properties = adoptNS([[cookie properties] mutableCopy]);
&gt; 
&gt; auto

Will fix.

&gt; &gt; Source/WebCore/platform/network/cocoa/NetworkStorageSessionCocoa.mm:315
&gt; &gt; +        RetainPtr&lt;NSDate&gt; date = adoptNS([[NSDate alloc] initWithTimeIntervalSinceNow:cap.seconds()]);
&gt; 
&gt; auto

Will fix.

&gt; &gt; Source/WebKit/NetworkProcess/cocoa/NetworkDataTaskCocoa.mm:140
&gt; &gt; +static WebCore::RegistrableDomain lastCNAMEDomain(NSArray&lt;NSString*&gt;* cnames)
&gt; 
&gt; Missing spaces before the stars.

Will fix.

&gt; &gt; Source/WebKit/NetworkProcess/cocoa/NetworkDataTaskCocoa.mm:149
&gt; &gt; +    return WebCore::RegistrableDomain::uncheckedCreateFromHost(emptyString());
&gt; 
&gt; Why cannot we return { }; ?

Will fix.

&gt; &gt; Source/WebKit/NetworkProcess/cocoa/NetworkDataTaskCocoa.mm:157
&gt; &gt; +    auto&amp;&amp; cnameDomain = lastCNAMEDomain([m_task _resolvedCNAMEChain]);
&gt; 
&gt; why auto&amp;&amp; and not auto?

Will fix.

Thanks so far, Chris!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1678319</commentid>
    <comment_count>9</comment_count>
    <who name="">jmehta</who>
    <bug_when>2020-08-06 11:25:41 -0700</bug_when>
    <thetext>`return cappedCookies` in `applyCookiePolicyForThirdPartyCNAMECloaking` should be autoreleased or we will end up with a +1 retain count. 

Alternatively you could use the convenience to create the NSMutableArray by calling [NSMutableArray arrayWithCapacity:count]. In that case you won&apos;t need to autorelease before returning from the block</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1678321</commentid>
    <comment_count>10</comment_count>
      <attachid>406091</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2020-08-06 11:29:41 -0700</bug_when>
    <thetext>Comment on attachment 406091
Patch

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

&gt; Source/WebKit/ChangeLog:43
&gt; +        * NetworkProcess/NetworkProcess.cpp:
&gt; +        (WebKit::NetworkProcess::resetParametersToDefaultValues):
&gt; +        (WebKit::NetworkProcess::setIsRunningResourceLoadStatisticsTest):
&gt; +        (WebKit::NetworkProcess::setFirstPartyHostCNAMEDomainForTesting):
&gt; +        (WebKit::NetworkProcess::setThirdPartyCNAMEDomainForTesting):

Please add more per-function change log information.

&gt; Source/WebCore/platform/network/NetworkStorageSession.h:196
&gt; +#if PLATFORM(COCOA) || USE(CFURLCONNECTION)
&gt; +    WEBCORE_EXPORT static NSHTTPCookie *capExpiryOfPersistentCookie(NSHTTPCookie *, Seconds cap);
&gt; +#endif

It seems unfortunate to have Cocoa specific types referenced in a platform agnostic file. I think this likely needs more thought on how this should abstracted to support all loader backends, if and when they want to support exposing the cname chain and support mutation of cookies.

&gt; Source/WebKit/NetworkProcess/NetworkProcess.cpp:819
&gt; +#if HAVE(CFNETWORK_CNAME_AND_COOKIE_TRANSFORM_SPI)
&gt; +        networkSession-&gt;resetCNAMEDomainData();
&gt; +        networkSession-&gt;setCNAMECloakingMitigationEnabled(WebCore::CNAMECloakingMitigationEnabled::No);

It doesn&apos;t look like the implementations of  resetCNAMEDomainData() and setCNAMECloakingMitigationEnabled are guarded by the same conditional being used here.

&gt; Source/WebKit/NetworkProcess/NetworkProcess.cpp:875
&gt; +#if HAVE(CFNETWORK_CNAME_AND_COOKIE_TRANSFORM_SPI)
&gt; +        networkSession-&gt;setCNAMECloakingMitigationEnabled(WebCore::CNAMECloakingMitigationEnabled::Yes);
&gt; +#endif

This is seems unexpected. There is nothing ResourceLoadStatistics related about cname cloaking it seems. Why would enabling ResourceLoadStatistics testing enable this. Seems like this should be treated like all other features and enable as needed, not grouped in with another feature.

&gt; Source/WebKit/Shared/WebPreferences.yaml:2063
&gt; +  humanReadableDescription: &quot;Enable third-party CNAME cloaking mitigation when Intelligent Tracking Prevention is enabled&quot;

I don&apos;t think including marketing names like Intelligent Tracking Prevention is warranted here. There really doesn&apos;t seem to be any correlation.

&gt; Source/WebKit/UIProcess/WebsiteData/WebsiteDataStore.cpp:1968
&gt; +void WebsiteDataStore::setResourceLoadStatisticsThirdPartyCNAMEDomainForTesting(const URL&amp; cnameURL, CompletionHandler&lt;void()&gt;&amp;&amp; completionHandler)
&gt; +{
&gt; +    if (cnameURL.host() != &quot;testwebkit.org&quot;_s &amp;&amp; cnameURL.host() != &quot;3rdpartytestwebkit.org&quot;_s) {
&gt; +        completionHandler();
&gt; +        return;
&gt; +    }
&gt; +
&gt; +    auto callbackAggregator = CallbackAggregator::create(WTFMove(completionHandler));
&gt; +
&gt; +    for (auto&amp; processPool : processPools()) {
&gt; +        if (auto* networkProcess = processPool-&gt;networkProcess())
&gt; +            networkProcess-&gt;setThirdPartyCNAMEDomainForTesting(m_sessionID, WebCore::RegistrableDomain { cnameURL }, [callbackAggregator] { });
&gt; +    }
&gt; +}

This (and a lot of the rest of the patch) seem to be adding a lot of binary code bloat that is only used for testing. Can you explain why this can&apos;t be tested without adding all this infrastructure? Is the issue no way to mock out the networking bits needed to return a CNAME chain?

&gt; Source/WebKit/UIProcess/WebsiteData/WebsiteDataStore.cpp:2317
&gt;  #if ENABLE(RESOURCE_LOAD_STATISTICS)
&gt;          thirdPartyCookieBlockingMode(),
&gt;          WebCore::SameSiteStrictEnforcementEnabled::No,
&gt; +        WebCore::CNAMECloakingMitigationEnabled::No,
&gt;  #endif

This doesn&apos;t seem like the appropriate conditional.

&gt; Source/WebKit/UIProcess/WebsiteData/WebsiteDataStore.h:207
&gt; +    void setResourceLoadStatisticsFirstPartyHostCNAMEDomainForTesting(const URL&amp; firstPartyURL, const URL&amp; cnameURL, CompletionHandler&lt;void()&gt;&amp;&amp;);
&gt; +    void setResourceLoadStatisticsThirdPartyCNAMEDomainForTesting(const URL&amp;, CompletionHandler&lt;void()&gt;&amp;&amp;);

These function names don&apos;t make sense to me. There doesn&apos;t seem to be anything ResourceLoadStatistics about these.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1678325</commentid>
    <comment_count>11</comment_count>
      <attachid>406091</attachid>
    <who name="">jmehta</who>
    <bug_when>2020-08-06 11:38:05 -0700</bug_when>
    <thetext>Comment on attachment 406091
Patch

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

&gt; Source/WebKit/NetworkProcess/cocoa/NetworkDataTaskCocoa.mm:205
&gt; +            return cappedCookies;

return [cappedCookies autorelease];

Alternatively use [NSMutableArray arrayWithCapacity:count] in which case autorelease won&apos;t be needed</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1678333</commentid>
    <comment_count>12</comment_count>
    <who name="John Wilander">wilander</who>
    <bug_when>2020-08-06 11:50:20 -0700</bug_when>
    <thetext>(In reply to jmehta from comment #11)
&gt; Comment on attachment 406091 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=406091&amp;action=review
&gt; 
&gt; &gt; Source/WebKit/NetworkProcess/cocoa/NetworkDataTaskCocoa.mm:205
&gt; &gt; +            return cappedCookies;
&gt; 
&gt; return [cappedCookies autorelease];
&gt; 
&gt; Alternatively use [NSMutableArray arrayWithCapacity:count] in which case
&gt; autorelease won&apos;t be needed

Thanks! Are you saying the existing:
auto* cappedCookies = [[NSMutableArray alloc] initWithCapacity:count]
… should be:
auto* cappedCookies = [NSMutableArray arrayWithCapacity:count];
?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1678334</commentid>
    <comment_count>13</comment_count>
      <attachid>406091</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2020-08-06 11:50:38 -0700</bug_when>
    <thetext>Comment on attachment 406091
Patch

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

&gt; Source/WebKit/UIProcess/Network/NetworkProcessProxy.cpp:1200
&gt; +    if (!canSendMessage()) {

This check is not needed.

&gt; Source/WebKit/UIProcess/Network/NetworkProcessProxy.cpp:1210
&gt; +    if (!canSendMessage()) {

Ditto.

&gt; Source/WebKit/UIProcess/WebsiteData/WebsiteDataStore.cpp:1942
&gt; +    if (cnameURL.host() != &quot;testwebkit.org&quot;_s &amp;&amp; cnameURL.host() != &quot;3rdpartytestwebkit.org&quot;_s) {

No _s for string comparisons.

&gt; Source/WebKit/UIProcess/WebsiteData/WebsiteDataStore.cpp:1950
&gt; +        if (auto* networkProcess = processPool-&gt;networkProcess())

Shouldn&apos;t this ensureNetworkProcess() to make sure the test domain actually does get set?

&gt; Source/WebKit/UIProcess/WebsiteData/WebsiteDataStore.cpp:1957
&gt; +    if (cnameURL.host() != &quot;testwebkit.org&quot;_s &amp;&amp; cnameURL.host() != &quot;3rdpartytestwebkit.org&quot;_s) {

No _s for string comparisons.

&gt; Source/WebKit/UIProcess/WebsiteData/WebsiteDataStore.cpp:1965
&gt; +        if (auto* networkProcess = processPool-&gt;networkProcess())

ensureNetworkProcess()</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1678339</commentid>
    <comment_count>14</comment_count>
      <attachid>406091</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2020-08-06 11:55:51 -0700</bug_when>
    <thetext>Comment on attachment 406091
Patch

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

&gt; Source/WebCore/PAL/pal/spi/cf/CFNetworkSPI.h:300
&gt; +@property (nonatomic, copy, nullable) NSArray&lt;NSHTTPCookie*&gt;* (^_cookieTransformCallback)(NSArray&lt;NSHTTPCookie*&gt;* cookies);

These should be surrounded by HAVE(CFNETWORK_CNAME_AND_COOKIE_TRANSFORM)

&gt; Source/WebCore/platform/network/NetworkStorageSession.h:194
&gt; +#if PLATFORM(COCOA) || USE(CFURLCONNECTION)

USE(CFURLCONNECTION) is only true on AppleWin, which doesn&apos;t have NSHTTPCookie.

&gt; Source/WebKit/NetworkProcess/cocoa/NetworkDataTaskCocoa.mm:136
&gt; +    return [task respondsToSelector:@selector(_cookieTransformCallback)]

Please add a FIXME saying when we can remove these selector checks.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1678365</commentid>
    <comment_count>15</comment_count>
    <who name="John Wilander">wilander</who>
    <bug_when>2020-08-06 13:04:24 -0700</bug_when>
    <thetext>Hi Sam!

(In reply to Sam Weinig from comment #10)
&gt; Comment on attachment 406091 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=406091&amp;action=review
&gt; 
&gt; &gt; Source/WebKit/ChangeLog:43
&gt; &gt; +        * NetworkProcess/NetworkProcess.cpp:
&gt; &gt; +        (WebKit::NetworkProcess::resetParametersToDefaultValues):
&gt; &gt; +        (WebKit::NetworkProcess::setIsRunningResourceLoadStatisticsTest):
&gt; &gt; +        (WebKit::NetworkProcess::setFirstPartyHostCNAMEDomainForTesting):
&gt; &gt; +        (WebKit::NetworkProcess::setThirdPartyCNAMEDomainForTesting):
&gt; 
&gt; Please add more per-function change log information.

Will do.

&gt; &gt; Source/WebCore/platform/network/NetworkStorageSession.h:196
&gt; &gt; +#if PLATFORM(COCOA) || USE(CFURLCONNECTION)
&gt; &gt; +    WEBCORE_EXPORT static NSHTTPCookie *capExpiryOfPersistentCookie(NSHTTPCookie *, Seconds cap);
&gt; &gt; +#endif
&gt; 
&gt; It seems unfortunate to have Cocoa specific types referenced in a platform
&gt; agnostic file. I think this likely needs more thought on how this should
&gt; abstracted to support all loader backends, if and when they want to support
&gt; exposing the cname chain and support mutation of cookies.

I agree and felt the same way when I added the compile time check to fix the non-Cocoa builds. There is no NetworkStorageSessionCocoa.h and I wanted to reuse the existing code for capping cookies&apos; expiry which is why I broke it out of parseDOMCookie() in NetworkStorageSessionCocoa.mm.

I did however check to see if there were other such instances in NetworkStorageSession.h and there is a block guarded by #if PLATFORM(COCOA) || USE(CFURLCONNECTION). Would moving my declaration to that block resolve the issue for you?

&gt; &gt; Source/WebKit/NetworkProcess/NetworkProcess.cpp:819
&gt; &gt; +#if HAVE(CFNETWORK_CNAME_AND_COOKIE_TRANSFORM_SPI)
&gt; &gt; +        networkSession-&gt;resetCNAMEDomainData();
&gt; &gt; +        networkSession-&gt;setCNAMECloakingMitigationEnabled(WebCore::CNAMECloakingMitigationEnabled::No);
&gt; 
&gt; It doesn&apos;t look like the implementations of  resetCNAMEDomainData() and
&gt; setCNAMECloakingMitigationEnabled are guarded by the same conditional being
&gt; used here.

I&apos;ll add the conditional.

&gt; &gt; Source/WebKit/NetworkProcess/NetworkProcess.cpp:875
&gt; &gt; +#if HAVE(CFNETWORK_CNAME_AND_COOKIE_TRANSFORM_SPI)
&gt; &gt; +        networkSession-&gt;setCNAMECloakingMitigationEnabled(WebCore::CNAMECloakingMitigationEnabled::Yes);
&gt; &gt; +#endif
&gt; 
&gt; This is seems unexpected. There is nothing ResourceLoadStatistics related
&gt; about cname cloaking it seems. Why would enabling ResourceLoadStatistics
&gt; testing enable this. Seems like this should be treated like all other
&gt; features and enable as needed, not grouped in with another feature.

In fact, this patch is very much part of ITP. You can see it in the compile-time flag it&apos;s under and that the two functions that implement the functionality:
· NetworkDataTaskCocoa::updateFirstPartyInfoForTaskAndSession()
· NetworkDataTaskCocoa::applyCookiePolicyForThirdPartyCNAMECloaking()
… are both controlled by the newly exposed NetworkStorageSession::resourceLoadStatisticsEnabled().

&gt; &gt; Source/WebKit/Shared/WebPreferences.yaml:2063
&gt; &gt; +  humanReadableDescription: &quot;Enable third-party CNAME cloaking mitigation when Intelligent Tracking Prevention is enabled&quot;
&gt; 
&gt; I don&apos;t think including marketing names like Intelligent Tracking Prevention
&gt; is warranted here. There really doesn&apos;t seem to be any correlation.

As explained above, this feature is turned on and off with the ITP setting. As you can see in related experimental settings, we do refer to ITP explicitly. This is to help developers understand what the setting is for since the commonly known name is ITP.

&gt; &gt; Source/WebKit/UIProcess/WebsiteData/WebsiteDataStore.cpp:1968
&gt; &gt; +void WebsiteDataStore::setResourceLoadStatisticsThirdPartyCNAMEDomainForTesting(const URL&amp; cnameURL, CompletionHandler&lt;void()&gt;&amp;&amp; completionHandler)
&gt; &gt; +{
&gt; &gt; +    if (cnameURL.host() != &quot;testwebkit.org&quot;_s &amp;&amp; cnameURL.host() != &quot;3rdpartytestwebkit.org&quot;_s) {
&gt; &gt; +        completionHandler();
&gt; &gt; +        return;
&gt; &gt; +    }
&gt; &gt; +
&gt; &gt; +    auto callbackAggregator = CallbackAggregator::create(WTFMove(completionHandler));
&gt; &gt; +
&gt; &gt; +    for (auto&amp; processPool : processPools()) {
&gt; &gt; +        if (auto* networkProcess = processPool-&gt;networkProcess())
&gt; &gt; +            networkProcess-&gt;setThirdPartyCNAMEDomainForTesting(m_sessionID, WebCore::RegistrableDomain { cnameURL }, [callbackAggregator] { });
&gt; &gt; +    }
&gt; &gt; +}
&gt; 
&gt; This (and a lot of the rest of the patch) seem to be adding a lot of binary
&gt; code bloat that is only used for testing. Can you explain why this can&apos;t be
&gt; tested without adding all this infrastructure? Is the issue no way to mock
&gt; out the networking bits needed to return a CNAME chain?

Correct. The code you refer to is mocking the DNS resolution data that I have no way of controlling in layout tests.

&gt; &gt; Source/WebKit/UIProcess/WebsiteData/WebsiteDataStore.cpp:2317
&gt; &gt;  #if ENABLE(RESOURCE_LOAD_STATISTICS)
&gt; &gt;          thirdPartyCookieBlockingMode(),
&gt; &gt;          WebCore::SameSiteStrictEnforcementEnabled::No,
&gt; &gt; +        WebCore::CNAMECloakingMitigationEnabled::No,
&gt; &gt;  #endif
&gt; 
&gt; This doesn&apos;t seem like the appropriate conditional.

As explained above, this code is part of ITP, or RESOURCE_LOAD_STATISTICS.

&gt; &gt; Source/WebKit/UIProcess/WebsiteData/WebsiteDataStore.h:207
&gt; &gt; +    void setResourceLoadStatisticsFirstPartyHostCNAMEDomainForTesting(const URL&amp; firstPartyURL, const URL&amp; cnameURL, CompletionHandler&lt;void()&gt;&amp;&amp;);
&gt; &gt; +    void setResourceLoadStatisticsThirdPartyCNAMEDomainForTesting(const URL&amp;, CompletionHandler&lt;void()&gt;&amp;&amp;);
&gt; 
&gt; These function names don&apos;t make sense to me. There doesn&apos;t seem to be
&gt; anything ResourceLoadStatistics about these.

Ditto.

Thanks, Sam! Please advise.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1678366</commentid>
    <comment_count>16</comment_count>
    <who name="John Wilander">wilander</who>
    <bug_when>2020-08-06 13:05:40 -0700</bug_when>
    <thetext>(In reply to Chris Dumez from comment #13)
&gt; Comment on attachment 406091 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=406091&amp;action=review
&gt; 
&gt; &gt; Source/WebKit/UIProcess/Network/NetworkProcessProxy.cpp:1200
&gt; &gt; +    if (!canSendMessage()) {
&gt; 
&gt; This check is not needed.

Will fix.

&gt; &gt; Source/WebKit/UIProcess/Network/NetworkProcessProxy.cpp:1210
&gt; &gt; +    if (!canSendMessage()) {
&gt; 
&gt; Ditto.

Will fix.

&gt; &gt; Source/WebKit/UIProcess/WebsiteData/WebsiteDataStore.cpp:1942
&gt; &gt; +    if (cnameURL.host() != &quot;testwebkit.org&quot;_s &amp;&amp; cnameURL.host() != &quot;3rdpartytestwebkit.org&quot;_s) {
&gt; 
&gt; No _s for string comparisons.

Will fix.

&gt; &gt; Source/WebKit/UIProcess/WebsiteData/WebsiteDataStore.cpp:1950
&gt; &gt; +        if (auto* networkProcess = processPool-&gt;networkProcess())
&gt; 
&gt; Shouldn&apos;t this ensureNetworkProcess() to make sure the test domain actually
&gt; does get set?

Didn&apos;t think about that. Will fix.

&gt; &gt; Source/WebKit/UIProcess/WebsiteData/WebsiteDataStore.cpp:1957
&gt; &gt; +    if (cnameURL.host() != &quot;testwebkit.org&quot;_s &amp;&amp; cnameURL.host() != &quot;3rdpartytestwebkit.org&quot;_s) {
&gt; 
&gt; No _s for string comparisons.

Will fix.

&gt; &gt; Source/WebKit/UIProcess/WebsiteData/WebsiteDataStore.cpp:1965
&gt; &gt; +        if (auto* networkProcess = processPool-&gt;networkProcess())
&gt; 
&gt; ensureNetworkProcess()

Will fix.

Thanks!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1678368</commentid>
    <comment_count>17</comment_count>
    <who name="John Wilander">wilander</who>
    <bug_when>2020-08-06 13:06:59 -0700</bug_when>
    <thetext>(In reply to Alex Christensen from comment #14)
&gt; Comment on attachment 406091 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=406091&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/PAL/pal/spi/cf/CFNetworkSPI.h:300
&gt; &gt; +@property (nonatomic, copy, nullable) NSArray&lt;NSHTTPCookie*&gt;* (^_cookieTransformCallback)(NSArray&lt;NSHTTPCookie*&gt;* cookies);
&gt; 
&gt; These should be surrounded by HAVE(CFNETWORK_CNAME_AND_COOKIE_TRANSFORM)

Will fix.

&gt; &gt; Source/WebCore/platform/network/NetworkStorageSession.h:194
&gt; &gt; +#if PLATFORM(COCOA) || USE(CFURLCONNECTION)
&gt; 
&gt; USE(CFURLCONNECTION) is only true on AppleWin, which doesn&apos;t have
&gt; NSHTTPCookie.

Aha! That means I cannot move it to the block I mentioned in my reply to Sam.

&gt; &gt; Source/WebKit/NetworkProcess/cocoa/NetworkDataTaskCocoa.mm:136
&gt; &gt; +    return [task respondsToSelector:@selector(_cookieTransformCallback)]
&gt; 
&gt; Please add a FIXME saying when we can remove these selector checks.

Will fix.

Thanks!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1678395</commentid>
    <comment_count>18</comment_count>
      <attachid>406113</attachid>
    <who name="John Wilander">wilander</who>
    <bug_when>2020-08-06 14:13:39 -0700</bug_when>
    <thetext>Created attachment 406113
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1678425</commentid>
    <comment_count>19</comment_count>
      <attachid>406121</attachid>
    <who name="John Wilander">wilander</who>
    <bug_when>2020-08-06 15:00:02 -0700</bug_when>
    <thetext>Created attachment 406121
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1678442</commentid>
    <comment_count>20</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2020-08-06 15:45:43 -0700</bug_when>
    <thetext>(In reply to John Wilander from comment #15)
&gt; &gt; &gt; Source/WebCore/platform/network/NetworkStorageSession.h:196
&gt; &gt; &gt; +#if PLATFORM(COCOA) || USE(CFURLCONNECTION)
&gt; &gt; &gt; +    WEBCORE_EXPORT static NSHTTPCookie *capExpiryOfPersistentCookie(NSHTTPCookie *, Seconds cap);
&gt; &gt; &gt; +#endif
&gt; &gt; 
&gt; &gt; It seems unfortunate to have Cocoa specific types referenced in a platform
&gt; &gt; agnostic file. I think this likely needs more thought on how this should
&gt; &gt; abstracted to support all loader backends, if and when they want to support
&gt; &gt; exposing the cname chain and support mutation of cookies.
&gt; 
&gt; I agree and felt the same way when I added the compile time check to fix the
&gt; non-Cocoa builds. There is no NetworkStorageSessionCocoa.h and I wanted to
&gt; reuse the existing code for capping cookies&apos; expiry which is why I broke it
&gt; out of parseDOMCookie() in NetworkStorageSessionCocoa.mm.
&gt; 
&gt; I did however check to see if there were other such instances in
&gt; NetworkStorageSession.h and there is a block guarded by #if PLATFORM(COCOA)
&gt; || USE(CFURLCONNECTION). Would moving my declaration to that block resolve
&gt; the issue for you?

Not really :(. The file is a huge soup of chaos, and really needs to be managed better, but adding more platform specific stuff to it is going in the wrong direction. We have an existing attraction for Cookies, WebCore::Cookie, and if that can&apos;t be used for the job, we should figure out why and fix it.

&gt; &gt; &gt; Source/WebKit/NetworkProcess/NetworkProcess.cpp:875
&gt; &gt; &gt; +#if HAVE(CFNETWORK_CNAME_AND_COOKIE_TRANSFORM_SPI)
&gt; &gt; &gt; +        networkSession-&gt;setCNAMECloakingMitigationEnabled(WebCore::CNAMECloakingMitigationEnabled::Yes);
&gt; &gt; &gt; +#endif
&gt; &gt; 
&gt; &gt; This is seems unexpected. There is nothing ResourceLoadStatistics related
&gt; &gt; about cname cloaking it seems. Why would enabling ResourceLoadStatistics
&gt; &gt; testing enable this. Seems like this should be treated like all other
&gt; &gt; features and enable as needed, not grouped in with another feature.
&gt; 
&gt; In fact, this patch is very much part of ITP. You can see it in the
&gt; compile-time flag it&apos;s under and that the two functions that implement the
&gt; functionality:
&gt; · NetworkDataTaskCocoa::updateFirstPartyInfoForTaskAndSession()
&gt; · NetworkDataTaskCocoa::applyCookiePolicyForThirdPartyCNAMECloaking()
&gt; … are both controlled by the newly exposed
&gt; NetworkStorageSession::resourceLoadStatisticsEnabled().

I don&apos;t follow. Just because you put it behind the same preference name doesn&apos;t mean a lot (unless you are saying something else by this). I think the less we use vague terms like ITP in WebCore and WebKit the better. This seems to be a distinct feature, &quot;CNAME Cloaking Mitigation&quot;, that stands on its own. Perhaps I am missing something. What aspects of the other features that fall under the ITP umbrella does this depend on?

&gt; 
&gt; &gt; &gt; Source/WebKit/Shared/WebPreferences.yaml:2063
&gt; &gt; &gt; +  humanReadableDescription: &quot;Enable third-party CNAME cloaking mitigation when Intelligent Tracking Prevention is enabled&quot;
&gt; &gt; 
&gt; &gt; I don&apos;t think including marketing names like Intelligent Tracking Prevention
&gt; &gt; is warranted here. There really doesn&apos;t seem to be any correlation.
&gt; 
&gt; As explained above, this feature is turned on and off with the ITP setting.
&gt; As you can see in related experimental settings, we do refer to ITP
&gt; explicitly. This is to help developers understand what the setting is for
&gt; since the commonly known name is ITP.

I don&apos;t think this helpful. &quot;CNAME cloaking mitigation&quot; on its own describes the feature. There is no need to pad it out.

&gt; 
&gt; &gt; &gt; Source/WebKit/UIProcess/WebsiteData/WebsiteDataStore.cpp:1968
&gt; &gt; &gt; +void WebsiteDataStore::setResourceLoadStatisticsThirdPartyCNAMEDomainForTesting(const URL&amp; cnameURL, CompletionHandler&lt;void()&gt;&amp;&amp; completionHandler)
&gt; &gt; &gt; +{
&gt; &gt; &gt; +    if (cnameURL.host() != &quot;testwebkit.org&quot;_s &amp;&amp; cnameURL.host() != &quot;3rdpartytestwebkit.org&quot;_s) {
&gt; &gt; &gt; +        completionHandler();
&gt; &gt; &gt; +        return;
&gt; &gt; &gt; +    }
&gt; &gt; &gt; +
&gt; &gt; &gt; +    auto callbackAggregator = CallbackAggregator::create(WTFMove(completionHandler));
&gt; &gt; &gt; +
&gt; &gt; &gt; +    for (auto&amp; processPool : processPools()) {
&gt; &gt; &gt; +        if (auto* networkProcess = processPool-&gt;networkProcess())
&gt; &gt; &gt; +            networkProcess-&gt;setThirdPartyCNAMEDomainForTesting(m_sessionID, WebCore::RegistrableDomain { cnameURL }, [callbackAggregator] { });
&gt; &gt; &gt; +    }
&gt; &gt; &gt; +}
&gt; &gt; 
&gt; &gt; This (and a lot of the rest of the patch) seem to be adding a lot of binary
&gt; &gt; code bloat that is only used for testing. Can you explain why this can&apos;t be
&gt; &gt; tested without adding all this infrastructure? Is the issue no way to mock
&gt; &gt; out the networking bits needed to return a CNAME chain?
&gt; 
&gt; Correct. The code you refer to is mocking the DNS resolution data that I
&gt; have no way of controlling in layout tests.

I think you should look into how to we can mock DNS resolution below WebKit, otherwise we aren&apos;t really exercising the stack very well, and we end up shipping a lot of unnecessary code to customers.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1678445</commentid>
    <comment_count>21</comment_count>
    <who name="John Wilander">wilander</who>
    <bug_when>2020-08-06 15:58:54 -0700</bug_when>
    <thetext>(In reply to Sam Weinig from comment #20)
&gt; (In reply to John Wilander from comment #15)
&gt; &gt; &gt; &gt; Source/WebCore/platform/network/NetworkStorageSession.h:196
&gt; &gt; &gt; &gt; +#if PLATFORM(COCOA) || USE(CFURLCONNECTION)
&gt; &gt; &gt; &gt; +    WEBCORE_EXPORT static NSHTTPCookie *capExpiryOfPersistentCookie(NSHTTPCookie *, Seconds cap);
&gt; &gt; &gt; &gt; +#endif
&gt; &gt; &gt; 
&gt; &gt; &gt; It seems unfortunate to have Cocoa specific types referenced in a platform
&gt; &gt; &gt; agnostic file. I think this likely needs more thought on how this should
&gt; &gt; &gt; abstracted to support all loader backends, if and when they want to support
&gt; &gt; &gt; exposing the cname chain and support mutation of cookies.
&gt; &gt; 
&gt; &gt; I agree and felt the same way when I added the compile time check to fix the
&gt; &gt; non-Cocoa builds. There is no NetworkStorageSessionCocoa.h and I wanted to
&gt; &gt; reuse the existing code for capping cookies&apos; expiry which is why I broke it
&gt; &gt; out of parseDOMCookie() in NetworkStorageSessionCocoa.mm.
&gt; &gt; 
&gt; &gt; I did however check to see if there were other such instances in
&gt; &gt; NetworkStorageSession.h and there is a block guarded by #if PLATFORM(COCOA)
&gt; &gt; || USE(CFURLCONNECTION). Would moving my declaration to that block resolve
&gt; &gt; the issue for you?
&gt; 
&gt; Not really :(. The file is a huge soup of chaos, and really needs to be
&gt; managed better, but adding more platform specific stuff to it is going in
&gt; the wrong direction. We have an existing attraction for Cookies,
&gt; WebCore::Cookie, and if that can&apos;t be used for the job, we should figure out
&gt; why and fix it.

My alternative for this patch seems to be to copy the code to the Cocoa-specific task and leave the cookie capping code in NetworkStorageSessionCocoa.mm and NetworkStorageSession.h alone.

&gt; &gt; &gt; &gt; Source/WebKit/NetworkProcess/NetworkProcess.cpp:875
&gt; &gt; &gt; &gt; +#if HAVE(CFNETWORK_CNAME_AND_COOKIE_TRANSFORM_SPI)
&gt; &gt; &gt; &gt; +        networkSession-&gt;setCNAMECloakingMitigationEnabled(WebCore::CNAMECloakingMitigationEnabled::Yes);
&gt; &gt; &gt; &gt; +#endif
&gt; &gt; &gt; 
&gt; &gt; &gt; This is seems unexpected. There is nothing ResourceLoadStatistics related
&gt; &gt; &gt; about cname cloaking it seems. Why would enabling ResourceLoadStatistics
&gt; &gt; &gt; testing enable this. Seems like this should be treated like all other
&gt; &gt; &gt; features and enable as needed, not grouped in with another feature.
&gt; &gt; 
&gt; &gt; In fact, this patch is very much part of ITP. You can see it in the
&gt; &gt; compile-time flag it&apos;s under and that the two functions that implement the
&gt; &gt; functionality:
&gt; &gt; · NetworkDataTaskCocoa::updateFirstPartyInfoForTaskAndSession()
&gt; &gt; · NetworkDataTaskCocoa::applyCookiePolicyForThirdPartyCNAMECloaking()
&gt; &gt; … are both controlled by the newly exposed
&gt; &gt; NetworkStorageSession::resourceLoadStatisticsEnabled().
&gt; 
&gt; I don&apos;t follow. Just because you put it behind the same preference name
&gt; doesn&apos;t mean a lot (unless you are saying something else by this). I think
&gt; the less we use vague terms like ITP in WebCore and WebKit the better. This
&gt; seems to be a distinct feature, &quot;CNAME Cloaking Mitigation&quot;, that stands on
&gt; its own. Perhaps I am missing something. What aspects of the other features
&gt; that fall under the ITP umbrella does this depend on?

ITP is a set of smaller features, all intended to prevent cross-site tracking. This particular one is about addressing something that trackers have deployed with the intent to work around the existing cap on client-side cookies. That&apos;s why this patch uses the same cookie expiry capping code. The 7-day expiry of website data is an ITP thing.

You could argue that downgrades of referrers is its own feature, HSTS super cookie prevention is its own feature, third-party cookie blocking is its own feature, website data deletion is its own feature, verified partitioned cache is its own feature etc. But they are all part of ITP.

&gt; &gt; &gt; &gt; Source/WebKit/Shared/WebPreferences.yaml:2063
&gt; &gt; &gt; &gt; +  humanReadableDescription: &quot;Enable third-party CNAME cloaking mitigation when Intelligent Tracking Prevention is enabled&quot;
&gt; &gt; &gt; 
&gt; &gt; &gt; I don&apos;t think including marketing names like Intelligent Tracking Prevention
&gt; &gt; &gt; is warranted here. There really doesn&apos;t seem to be any correlation.
&gt; &gt; 
&gt; &gt; As explained above, this feature is turned on and off with the ITP setting.
&gt; &gt; As you can see in related experimental settings, we do refer to ITP
&gt; &gt; explicitly. This is to help developers understand what the setting is for
&gt; &gt; since the commonly known name is ITP.
&gt; 
&gt; I don&apos;t think this helpful. &quot;CNAME cloaking mitigation&quot; on its own describes
&gt; the feature. There is no need to pad it out.

I can change the description. No worries.

&gt; &gt; &gt; &gt; Source/WebKit/UIProcess/WebsiteData/WebsiteDataStore.cpp:1968
&gt; &gt; &gt; &gt; +void WebsiteDataStore::setResourceLoadStatisticsThirdPartyCNAMEDomainForTesting(const URL&amp; cnameURL, CompletionHandler&lt;void()&gt;&amp;&amp; completionHandler)
&gt; &gt; &gt; &gt; +{
&gt; &gt; &gt; &gt; +    if (cnameURL.host() != &quot;testwebkit.org&quot;_s &amp;&amp; cnameURL.host() != &quot;3rdpartytestwebkit.org&quot;_s) {
&gt; &gt; &gt; &gt; +        completionHandler();
&gt; &gt; &gt; &gt; +        return;
&gt; &gt; &gt; &gt; +    }
&gt; &gt; &gt; &gt; +
&gt; &gt; &gt; &gt; +    auto callbackAggregator = CallbackAggregator::create(WTFMove(completionHandler));
&gt; &gt; &gt; &gt; +
&gt; &gt; &gt; &gt; +    for (auto&amp; processPool : processPools()) {
&gt; &gt; &gt; &gt; +        if (auto* networkProcess = processPool-&gt;networkProcess())
&gt; &gt; &gt; &gt; +            networkProcess-&gt;setThirdPartyCNAMEDomainForTesting(m_sessionID, WebCore::RegistrableDomain { cnameURL }, [callbackAggregator] { });
&gt; &gt; &gt; &gt; +    }
&gt; &gt; &gt; &gt; +}
&gt; &gt; &gt; 
&gt; &gt; &gt; This (and a lot of the rest of the patch) seem to be adding a lot of binary
&gt; &gt; &gt; code bloat that is only used for testing. Can you explain why this can&apos;t be
&gt; &gt; &gt; tested without adding all this infrastructure? Is the issue no way to mock
&gt; &gt; &gt; out the networking bits needed to return a CNAME chain?
&gt; &gt; 
&gt; &gt; Correct. The code you refer to is mocking the DNS resolution data that I
&gt; &gt; have no way of controlling in layout tests.
&gt; 
&gt; I think you should look into how to we can mock DNS resolution below WebKit,
&gt; otherwise we aren&apos;t really exercising the stack very well, and we end up
&gt; shipping a lot of unnecessary code to customers.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1678447</commentid>
    <comment_count>22</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2020-08-06 16:03:59 -0700</bug_when>
    <thetext>(In reply to John Wilander from comment #21)
&gt; (In reply to Sam Weinig from comment #20)
&gt; &gt; (In reply to John Wilander from comment #15)
&gt; &gt; &gt; &gt; &gt; Source/WebCore/platform/network/NetworkStorageSession.h:196
&gt; &gt; &gt; &gt; &gt; +#if PLATFORM(COCOA) || USE(CFURLCONNECTION)
&gt; &gt; &gt; &gt; &gt; +    WEBCORE_EXPORT static NSHTTPCookie *capExpiryOfPersistentCookie(NSHTTPCookie *, Seconds cap);
&gt; &gt; &gt; &gt; &gt; +#endif
&gt; &gt; &gt; &gt; 
&gt; &gt; &gt; &gt; It seems unfortunate to have Cocoa specific types referenced in a platform
&gt; &gt; &gt; &gt; agnostic file. I think this likely needs more thought on how this should
&gt; &gt; &gt; &gt; abstracted to support all loader backends, if and when they want to support
&gt; &gt; &gt; &gt; exposing the cname chain and support mutation of cookies.
&gt; &gt; &gt; 
&gt; &gt; &gt; I agree and felt the same way when I added the compile time check to fix the
&gt; &gt; &gt; non-Cocoa builds. There is no NetworkStorageSessionCocoa.h and I wanted to
&gt; &gt; &gt; reuse the existing code for capping cookies&apos; expiry which is why I broke it
&gt; &gt; &gt; out of parseDOMCookie() in NetworkStorageSessionCocoa.mm.
&gt; &gt; &gt; 
&gt; &gt; &gt; I did however check to see if there were other such instances in
&gt; &gt; &gt; NetworkStorageSession.h and there is a block guarded by #if PLATFORM(COCOA)
&gt; &gt; &gt; || USE(CFURLCONNECTION). Would moving my declaration to that block resolve
&gt; &gt; &gt; the issue for you?
&gt; &gt; 
&gt; &gt; Not really :(. The file is a huge soup of chaos, and really needs to be
&gt; &gt; managed better, but adding more platform specific stuff to it is going in
&gt; &gt; the wrong direction. We have an existing attraction for Cookies,
&gt; &gt; WebCore::Cookie, and if that can&apos;t be used for the job, we should figure out
&gt; &gt; why and fix it.
&gt; 
&gt; My alternative for this patch seems to be to copy the code to the
&gt; Cocoa-specific task and leave the cookie capping code in
&gt; NetworkStorageSessionCocoa.mm and NetworkStorageSession.h alone.

Why not try to make it work with WebCore::Cookie?

&gt; 
&gt; &gt; &gt; &gt; &gt; Source/WebKit/NetworkProcess/NetworkProcess.cpp:875
&gt; &gt; &gt; &gt; &gt; +#if HAVE(CFNETWORK_CNAME_AND_COOKIE_TRANSFORM_SPI)
&gt; &gt; &gt; &gt; &gt; +        networkSession-&gt;setCNAMECloakingMitigationEnabled(WebCore::CNAMECloakingMitigationEnabled::Yes);
&gt; &gt; &gt; &gt; &gt; +#endif
&gt; &gt; &gt; &gt; 
&gt; &gt; &gt; &gt; This is seems unexpected. There is nothing ResourceLoadStatistics related
&gt; &gt; &gt; &gt; about cname cloaking it seems. Why would enabling ResourceLoadStatistics
&gt; &gt; &gt; &gt; testing enable this. Seems like this should be treated like all other
&gt; &gt; &gt; &gt; features and enable as needed, not grouped in with another feature.
&gt; &gt; &gt; 
&gt; &gt; &gt; In fact, this patch is very much part of ITP. You can see it in the
&gt; &gt; &gt; compile-time flag it&apos;s under and that the two functions that implement the
&gt; &gt; &gt; functionality:
&gt; &gt; &gt; · NetworkDataTaskCocoa::updateFirstPartyInfoForTaskAndSession()
&gt; &gt; &gt; · NetworkDataTaskCocoa::applyCookiePolicyForThirdPartyCNAMECloaking()
&gt; &gt; &gt; … are both controlled by the newly exposed
&gt; &gt; &gt; NetworkStorageSession::resourceLoadStatisticsEnabled().
&gt; &gt; 
&gt; &gt; I don&apos;t follow. Just because you put it behind the same preference name
&gt; &gt; doesn&apos;t mean a lot (unless you are saying something else by this). I think
&gt; &gt; the less we use vague terms like ITP in WebCore and WebKit the better. This
&gt; &gt; seems to be a distinct feature, &quot;CNAME Cloaking Mitigation&quot;, that stands on
&gt; &gt; its own. Perhaps I am missing something. What aspects of the other features
&gt; &gt; that fall under the ITP umbrella does this depend on?
&gt; 
&gt; ITP is a set of smaller features, all intended to prevent cross-site
&gt; tracking. This particular one is about addressing something that trackers
&gt; have deployed with the intent to work around the existing cap on client-side
&gt; cookies. That&apos;s why this patch uses the same cookie expiry capping code. The
&gt; 7-day expiry of website data is an ITP thing.
&gt; 
&gt; You could argue that downgrades of referrers is its own feature, HSTS super
&gt; cookie prevention is its own feature, third-party cookie blocking is its own
&gt; feature, website data deletion is its own feature, verified partitioned
&gt; cache is its own feature etc. But they are all part of ITP.

I would argue those are all independent features, and grouping them under a single banner only confuses things, at least at the engine level. We should name functions and classes and feature flags based on what they do, not under some vague umbrella.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1678632</commentid>
    <comment_count>23</comment_count>
      <attachid>406121</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2020-08-07 10:20:01 -0700</bug_when>
    <thetext>Comment on attachment 406121
Patch

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

r=me, but please look at the Mac-AS bot failure. I can&apos;t tell if that is due to missing SPI on that bot, or a true AS-specific build bug in the code.

&gt; Source/WebCore/PAL/ChangeLog:11
&gt; +            -  _cookieTransformCallback

Nit: Extra space before _cookieTransformCallback

&gt; Source/WebKit/ChangeLog:36
&gt; +        -  _cookieTransformCallback

Ditto

&gt; Source/WebCore/PAL/pal/spi/cf/CFNetworkSPI.h:299
&gt; +#if HAVE(CFNETWORK_CNAME_AND_COOKIE_TRANSFORM)

Should this be HAVE(CFNETWORK_CNAME_AND_COOKIE_TRANSFORM_SPI)?

&gt; Source/WebCore/platform/network/cocoa/NetworkStorageSessionCocoa.mm:313
&gt; +    if (![cookie isSessionOnly] &amp;&amp; (!cookie.expiresDate || cookie.expiresDate.timeIntervalSinceNow &gt; cap.seconds())) {

Nit: This would have been easier to understand with an early return for session-only cookies.

&gt; Source/WebKit/NetworkProcess/cocoa/NetworkDataTaskCocoa.mm:134
&gt; +// FIXME: Remove these selector checks when macOS Big Sur has shipped.

Nit: Please file a Bugzilla+Radar to make sure we do this!

&gt; Source/WebKit/NetworkProcess/cocoa/NetworkDataTaskCocoa.mm:189
&gt; +

Nit: Extra line

&gt; Source/WebKit/UIProcess/WebsiteData/WebsiteDataStore.cpp:1942
&gt; +    if (cnameURL.host() != &quot;testwebkit.org&quot; &amp;&amp; cnameURL.host() != &quot;3rdpartytestwebkit.org&quot;) {

Nit: It would be smart to have a more central place to maintain our test server names, possibly in a WebCoreTestSupport location or something.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1678639</commentid>
    <comment_count>24</comment_count>
    <who name="John Wilander">wilander</who>
    <bug_when>2020-08-07 10:39:57 -0700</bug_when>
    <thetext>(In reply to Brent Fulgham from comment #23)
&gt; Comment on attachment 406121 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=406121&amp;action=review
&gt; 
&gt; r=me, but please look at the Mac-AS bot failure. I can&apos;t tell if that is due
&gt; to missing SPI on that bot, or a true AS-specific build bug in the code.
&gt; 
&gt; &gt; Source/WebCore/PAL/ChangeLog:11
&gt; &gt; +            -  _cookieTransformCallback
&gt; 
&gt; Nit: Extra space before _cookieTransformCallback

Will fix.

&gt; &gt; Source/WebKit/ChangeLog:36
&gt; &gt; +        -  _cookieTransformCallback
&gt; 
&gt; Ditto

Will fix.

&gt; &gt; Source/WebCore/PAL/pal/spi/cf/CFNetworkSPI.h:299
&gt; &gt; +#if HAVE(CFNETWORK_CNAME_AND_COOKIE_TRANSFORM)
&gt; 
&gt; Should this be HAVE(CFNETWORK_CNAME_AND_COOKIE_TRANSFORM_SPI)?

You&apos;re right! This is very likely the reason for the AS bot failure. Will make sure it&apos;s fixed before landing.

&gt; &gt; Source/WebCore/platform/network/cocoa/NetworkStorageSessionCocoa.mm:313
&gt; &gt; +    if (![cookie isSessionOnly] &amp;&amp; (!cookie.expiresDate || cookie.expiresDate.timeIntervalSinceNow &gt; cap.seconds())) {
&gt; 
&gt; Nit: This would have been easier to understand with an early return for
&gt; session-only cookies.

Will fix.

&gt; &gt; Source/WebKit/NetworkProcess/cocoa/NetworkDataTaskCocoa.mm:134
&gt; &gt; +// FIXME: Remove these selector checks when macOS Big Sur has shipped.
&gt; 
&gt; Nit: Please file a Bugzilla+Radar to make sure we do this!

Will do.

&gt; &gt; Source/WebKit/NetworkProcess/cocoa/NetworkDataTaskCocoa.mm:189
&gt; &gt; +
&gt; 
&gt; Nit: Extra line

Will fix.

&gt; &gt; Source/WebKit/UIProcess/WebsiteData/WebsiteDataStore.cpp:1942
&gt; &gt; +    if (cnameURL.host() != &quot;testwebkit.org&quot; &amp;&amp; cnameURL.host() != &quot;3rdpartytestwebkit.org&quot;) {
&gt; 
&gt; Nit: It would be smart to have a more central place to maintain our test
&gt; server names, possibly in a WebCoreTestSupport location or something.

True. I&apos;ll file a Bugzilla about that.

Thanks, Brent!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1678649</commentid>
    <comment_count>25</comment_count>
      <attachid>406188</attachid>
    <who name="John Wilander">wilander</who>
    <bug_when>2020-08-07 11:00:11 -0700</bug_when>
    <thetext>Created attachment 406188
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1678651</commentid>
    <comment_count>26</comment_count>
      <attachid>406188</attachid>
    <who name="John Wilander">wilander</who>
    <bug_when>2020-08-07 11:00:40 -0700</bug_when>
    <thetext>Comment on attachment 406188
Patch

Just waiting to see that the bots are happy before landing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1678654</commentid>
    <comment_count>27</comment_count>
      <attachid>406190</attachid>
    <who name="John Wilander">wilander</who>
    <bug_when>2020-08-07 11:04:23 -0700</bug_when>
    <thetext>Created attachment 406190
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1678655</commentid>
    <comment_count>28</comment_count>
      <attachid>406190</attachid>
    <who name="John Wilander">wilander</who>
    <bug_when>2020-08-07 11:05:00 -0700</bug_when>
    <thetext>Comment on attachment 406190
Patch

Added the Buzilla link to the comment, as requested by Brent.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1678661</commentid>
    <comment_count>29</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2020-08-07 11:13:10 -0700</bug_when>
    <thetext>Um, my feedback has not been addressed. Please don&apos;t land this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1678710</commentid>
    <comment_count>30</comment_count>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2020-08-07 13:11:22 -0700</bug_when>
    <thetext>(In reply to Sam Weinig from comment #29)
&gt; Um, my feedback has not been addressed. Please don&apos;t land this.

Thanks for taking the time to review this work. I didn&apos;t intend to make it feel like I was dismissing any of your comments without thought. And while I agree with the thrust of you design recommendations, I do not agree that this patch is the place to make large architecture changes or create new testing infrastructure.

I think John did address the most actionable items you brought up. What seems to remain are:

(1) You wish that the various ITP concepts were decoupled and expressed in smaller, specific code concepts. I agree, but that is way out of scope for this patch. That is a large refactoring project that should be done independently.

(2) You seem to feel that using the public name for ITP in the flag that controls an ITP behavior is confusing. I simply disagree with that concern.

(3) You dislike Cocoa-specific types being used in a file (which already does this). I agree this would be a good thing to fix, but blocking this patch to fix this existing issue isn&apos;t appropriate.

(4) Designing a system to mock DNS lookup in the WebKit engine before landing this patch is a nice idea, but wholly inappropriate for this patch.

I will admit that we should file radars to act on these items you suggest, but they are not reasons to block this work. I will get to work on filing those bugs and scheduling time to address them properly.

Thanks!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1678714</commentid>
    <comment_count>31</comment_count>
      <attachid>406190</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2020-08-07 13:15:35 -0700</bug_when>
    <thetext>Comment on attachment 406190
Patch

Patch now passes on all bots.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1678721</commentid>
    <comment_count>32</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2020-08-07 13:37:18 -0700</bug_when>
    <thetext>(In reply to Brent Fulgham from comment #30)
&gt; (In reply to Sam Weinig from comment #29)
&gt; &gt; Um, my feedback has not been addressed. Please don&apos;t land this.
&gt; 
&gt; Thanks for taking the time to review this work. I didn&apos;t intend to make it
&gt; feel like I was dismissing any of your comments without thought. And while I
&gt; agree with the thrust of you design recommendations, I do not agree that
&gt; this patch is the place to make large architecture changes or create new
&gt; testing infrastructure.

I don&apos;t believe I recommended any large architectural design changes. I do think that having the right testing infrastructure in place for new functionality is appropriate. As this is one of the first times (maybe the first time) we have had DNS related functionality being used in WebCore, ensuring we have a way to test that is absolutely appropriate. If you don&apos;t want to block on this, you could file additional bugs and note that you will be following up, but simply dismissing the feedback doesn&apos;t feel like the right response.

&gt; 
&gt; I think John did address the most actionable items you brought up. What
&gt; seems to remain are:
&gt; 
&gt; (1) You wish that the various ITP concepts were decoupled and expressed in
&gt; smaller, specific code concepts. I agree, but that is way out of scope for
&gt; this patch. That is a large refactoring project that should be done
&gt; independently.

This is new functionality. There is no reason to have this coupled to the ITP concept or name. There is no large refactoring needed. Just use better names in the new code.

&gt; 
&gt; (2) You seem to feel that using the public name for ITP in the flag that
&gt; controls an ITP behavior is confusing. I simply disagree with that concern.

I do feel that. If you disagree, then it would be nice if you could state disagreement so it can be discussed. Disagreeing by bypassing my review does not seem to a be an appropriate way to convey that to me.

&gt; 
&gt; (3) You dislike Cocoa-specific types being used in a file (which already
&gt; does this). I agree this would be a good thing to fix, but blocking this
&gt; patch to fix this existing issue isn&apos;t appropriate.

I did not ask John to remove the existing issues, just not add more to it. Again, this is how we improve the code. We don&apos;t propagate bad design choices.

&gt; 
&gt; (4) Designing a system to mock DNS lookup in the WebKit engine before
&gt; landing this patch is a nice idea, but wholly inappropriate for this patch.

I completely disagree. In many ways, ensuring we have appropriate ways to test things before we make changes is absolutely an appropriate topic to discuss in patch review. Again, if you disagree, arguing that point would be appropriate, disregarding the feedback is not.


Please don&apos;t land this change while this discussion is on going.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1678722</commentid>
    <comment_count>33</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2020-08-07 13:40:37 -0700</bug_when>
    <thetext>Committed r265389: &lt;https://trac.webkit.org/changeset/265389&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 406190.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1678754</commentid>
    <comment_count>34</comment_count>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2020-08-07 14:57:20 -0700</bug_when>
    <thetext>(In reply to Sam Weinig from comment #32)
&gt; I do think that having the right testing infrastructure in place for new
&gt; functionality is appropriate. As this is one of the first times (maybe the
&gt; first time) we have had DNS related functionality being used in WebCore,
&gt; ensuring we have a way to test that is absolutely appropriate. If you don&apos;t
&gt; want to block on this, you could file additional bugs and note that you will
&gt; be following up, but simply dismissing the feedback doesn&apos;t feel like the
&gt; right response.

Yes -- I did intend to follow up with bugs, but was pressed for time. I&apos;m sorry that made you feel like I was planning to ignore the idea.

I&apos;ve now filed Bug 215294 to implement this concept.

(More to come).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1678770</commentid>
    <comment_count>35</comment_count>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2020-08-07 15:25:47 -0700</bug_when>
    <thetext>(In reply to Brent Fulgham from comment #30)
 
&gt; (1) You wish that the various ITP concepts were decoupled and expressed in
&gt; smaller, specific code concepts. I agree, but that is way out of scope for
&gt; this patch. That is a large refactoring project that should be done
&gt; independently.

I filed Bug 215295 to properly decouple and name the various bits making up ITP features.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1678781</commentid>
    <comment_count>36</comment_count>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2020-08-07 15:57:45 -0700</bug_when>
    <thetext>(In reply to Sam Weinig from comment #20)

&gt; Not really :(. The file is a huge soup of chaos, and really needs to be
&gt; managed better, but adding more platform specific stuff to it is going in
&gt; the wrong direction. We have an existing attraction for Cookies,
&gt; WebCore::Cookie, and if that can&apos;t be used for the job, we should figure out
&gt; why and fix it.

I filed Bug 215297 to address this feedback.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1678801</commentid>
    <comment_count>37</comment_count>
    <who name="Dean Jackson">dino</who>
    <bug_when>2020-08-07 16:18:03 -0700</bug_when>
    <thetext>I don&apos;t want to step into an argument here, but I agree with the position that this particular setting, and all the others that John mentioned, should not be bundled under the umbrella name &quot;ITP&quot; at the WebCore level.

ITP is the marketing term we expose from Safari and WebKit. It&apos;s an intentionally vague term that covers a lot of smaller features, that the users don&apos;t really care about. But those smaller features should be described properly in the code, and controlled independently.

This will help us as developers, and help Web developers who happen to see these error messages.

e.g. If I was told that ITP wasn&apos;t working, where would I look? If I were told that there was a problem with CNAME cloaking I&apos;d at least have something to start from.

The code base seems to use the term &quot;resourceLoadStatistics&quot; to cover a lot of things, and doesn&apos;t imply tracking prevention.

Could we clean this up?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1678807</commentid>
    <comment_count>38</comment_count>
    <who name="Dean Jackson">dino</who>
    <bug_when>2020-08-07 16:23:14 -0700</bug_when>
    <thetext>I also think it is time that all the ITP related toggles that we expose to users be grouped together, probably by putting them in a submenu where the existing ITP debug mode toggle is. (We could probably provide categories for all experimental features and build submenus that way)

Also, was this intended to be user facing? Why not an internal feature?

And if it is user facing, why isn&apos;t it part of the mysterious &quot;debug mode&quot; (which I have understood to mean &quot;more tracking prevention features that are coming soon&quot; as well as &quot;more debug output&quot;)?</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>406067</attachid>
            <date>2020-08-05 19:12:42 -0700</date>
            <delta_ts>2020-08-05 20:06:53 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-215201-20200805191241.patch</filename>
            <type>text/plain</type>
            <size>103998</size>
            <attacher name="John Wilander">wilander</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY1MzA4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDRiODFlZGU2ODU3NGFkNzZmOTk1NGQ3
NjhkODk3NzJkNDkzMTFlZmYuLmU4YjY1NTQyZjQyYmNlZmU3MDE3NTE0ZWE2ZWYzMWQyMzE5ODYx
ZTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMjAtMDgtMDUgIEpvaG4gV2lsYW5kZXIgIDx3aWxh
bmRlckBhcHBsZS5jb20+CisKKyAgICAgICAgRXhwZXJpbWVudGFsOiBDYXAgdGhlIGV4cGlyeSBv
ZiBwZXJzaXN0ZW50IGNvb2tpZXMgc2V0IGluIDNyZC1wYXJ0eSBDTkFNRSBjbG9ha2VkIEhUVFAg
cmVzcG9uc2VzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yMTUyMDEKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzU3NDU0NjMzPgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgY2hhbmdlIGRlZmluZXMg
SEFWRV9DRk5FVFdPUktfQ05BTUVfQU5EX0NPT0tJRV9UUkFOU0ZPUk1fU1BJLgorCisgICAgICAg
ICogd3RmL1BsYXRmb3JtSGF2ZS5oOgorCiAyMDIwLTA4LTA0ICBZdXN1a2UgU3V6dWtpICA8eXN1
enVraUBhcHBsZS5jb20+CiAKICAgICAgICAgW0pTQ10gVXNlIExhenlOZXZlckRlc3Ryb3llZCAm
IHN0ZDo6Y2FsbF9vbmNlIGZvciBjb21wbGV4IHNpbmdsZXRvbnMKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCAwYzU2
NjVkODFmYjQ2Nzc1MzI0ZjI3YmE4Y2JlNGZkMWQ2YzNhNzYzLi43MzIzNTE2MmZjZmI2YTJkZGUy
MGQ0NDk3ODAzMzkzODhkZDUxNGRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VM
b2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzIgQEAKKzIwMjAt
MDgtMDUgIEpvaG4gV2lsYW5kZXIgIDx3aWxhbmRlckBhcHBsZS5jb20+CisKKyAgICAgICAgRXhw
ZXJpbWVudGFsOiBDYXAgdGhlIGV4cGlyeSBvZiBwZXJzaXN0ZW50IGNvb2tpZXMgc2V0IGluIDNy
ZC1wYXJ0eSBDTkFNRSBjbG9ha2VkIEhUVFAgcmVzcG9uc2VzCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTUyMDEKKyAgICAgICAgPHJkYXI6Ly9wcm9i
bGVtLzU3NDU0NjMzPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIFRlc3RzOiBodHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvY25hbWUtY2xv
YWtpbmctdG9wLWNuYW1lLXN1Yi0xcC1jbmFtZS5odG1sCisgICAgICAgICAgICAgICBodHRwL3Rl
c3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvY25hbWUtY2xvYWtpbmctdG9wLWNuYW1lLXN1Yi0z
cC1jbmFtZS5odG1sCisgICAgICAgICAgICAgICBodHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRp
c3RpY3MvY25hbWUtY2xvYWtpbmctdG9wLWNuYW1lLXN1Yi1tYXRjaGluZy1jbmFtZS5odG1sCisg
ICAgICAgICAgICAgICBodHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvY25hbWUtY2xv
YWtpbmctdG9wLWNuYW1lLXN1Yi1uby1jbmFtZS5odG1sCisgICAgICAgICAgICAgICBodHRwL3Rl
c3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvY25hbWUtY2xvYWtpbmctdG9wLW5vLWNuYW1lLXN1
Yi0xcC1jbmFtZS5odG1sCisgICAgICAgICAgICAgICBodHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0
YXRpc3RpY3MvY25hbWUtY2xvYWtpbmctdG9wLW5vLWNuYW1lLXN1Yi0zcC1jbmFtZS5odG1sCisg
ICAgICAgICAgICAgICBodHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvY25hbWUtY2xv
YWtpbmctdG9wLW5vLWNuYW1lLXN1Yi1uby1jbmFtZS5odG1sCisKKyAgICAgICAgKiBwYWdlL1Nl
dHRpbmdzLnlhbWw6CisgICAgICAgICAgICBBZGRlZCB0aGUgb2ZmLWJ5LWRlZmF1bHQgZmxhZyBp
c0NOQU1FQ2xvYWtpbmdNaXRpZ2F0aW9uRW5hYmxlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3
b3JrL05ldHdvcmtTdG9yYWdlU2Vzc2lvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3Jr
U3RvcmFnZVNlc3Npb246OnJlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkIGNvbnN0KToKKyAg
ICAgICAgICAgIE5ldyBnZXR0ZXIgZm9yIHRoZSBJVFAgc2V0dGluZy4KKyAgICAgICAgKiBwbGF0
Zm9ybS9uZXR3b3JrL05ldHdvcmtTdG9yYWdlU2Vzc2lvbi5oOgorICAgICAgICAqIHBsYXRmb3Jt
L25ldHdvcmsvY29jb2EvTmV0d29ya1N0b3JhZ2VTZXNzaW9uQ29jb2EubW06CisgICAgICAgIChX
ZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb246OmNhcEV4cGlyeU9mUGVyc2lzdGVudENvb2tp
ZSk6CisgICAgICAgICAgICBCcm9rZSB0aGlzIGZ1bmN0aW9uIG91dCBzbyB0aGF0IGl0IGNhbiBi
ZSByZXVzZWQuCisgICAgICAgIChXZWJDb3JlOjpwYXJzZURPTUNvb2tpZSk6CisgICAgICAgICAg
ICBIZXJlJ3MgZnJvbSB3aGVyZSB0aGUgZnVuY3Rpb24gYWJvdmUgd2FzIGJyb2tlbiBvdXQuCisg
ICAgICAgICAgICBUaGUgZXhpc3RpbmcgZnVuY3Rpb25hbGl0eSBoYXMgYSB0ZXN0IGNhc2UuCisK
IDIwMjAtMDgtMDUgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBB
ZGQgY29uc3RydWN0b3IgZm9yIER5bmFtaWNzQ29tcHJlc3Nvck5vZGUKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL1BBTC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvQ2hhbmdlTG9n
CmluZGV4IDUxNTkwNjcyNDUwNzI4ZTI0ZjcxNjQxMWUwNDI3OGRhNzdmNzMyMGEuLjVlN2FhYzYx
NmQ4OThiYTZmYzliYTgxNmJlOTJlZjc5Y2FkOGZhNWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL1BBTC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvUEFML0NoYW5nZUxvZwpAQCAt
MSwzICsxLDE2IEBACisyMDIwLTA4LTA1ICBKb2huIFdpbGFuZGVyICA8d2lsYW5kZXJAYXBwbGUu
Y29tPgorCisgICAgICAgIEV4cGVyaW1lbnRhbDogQ2FwIHRoZSBleHBpcnkgb2YgcGVyc2lzdGVu
dCBjb29raWVzIHNldCBpbiAzcmQtcGFydHkgQ05BTUUgY2xvYWtlZCBIVFRQIHJlc3BvbnNlcwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE1MjAxCisg
ICAgICAgIDxyZGFyOi8vcHJvYmxlbS81NzQ1NDYzMz4KKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHBhbC9zcGkvY2YvQ0ZOZXR3b3JrU1BJLmg6Cisg
ICAgICAgICAgICBUaGlzIGNoYW5nZSBkZWNsYXJlcyB0d28gbmV3IHByb3BlcnRpZXMgb24gTlNV
UkxTZXNzaW9uVGFzazoKKyAgICAgICAgICAgIC0gIF9jb29raWVUcmFuc2Zvcm1DYWxsYmFjawor
ICAgICAgICAgICAgLSBfcmVzb2x2ZWRDTkFNRUNoYWluCisKIDIwMjAtMDgtMDQgIFBlciBBcm5l
IFZvbGxhbiAgPHB2b2xsYW5AYXBwbGUuY29tPgogCiAgICAgICAgIFtpT1NdIENoZWNrIHRoYXQg
QWNjZXNzaWJpbGl0eSBpcyBlbmFibGVkIHdoZW4gcmVjZWl2aW5nIHRoZSBlbmFibGUgQWNjZXNz
aWJpbGl0eSBub3RpZmljYXRpb24KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9n
IGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggNmVmNzU2NjU5ZDM4NzU0ZWRkYzQzMWZm
MDdlMjhkYjIzMzdjYmRjNC4uOGZlOTBhOWY0MGRjNDAyYjU5MmRmZjBjMDMxMDlhYTJjYzU3OWZm
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktp
dC9DaGFuZ2VMb2cKQEAgLTEsMyArMSw4OSBAQAorMjAyMC0wOC0wNSAgSm9obiBXaWxhbmRlciAg
PHdpbGFuZGVyQGFwcGxlLmNvbT4KKworICAgICAgICBFeHBlcmltZW50YWw6IENhcCB0aGUgZXhw
aXJ5IG9mIHBlcnNpc3RlbnQgY29va2llcyBzZXQgaW4gM3JkLXBhcnR5IENOQU1FIGNsb2FrZWQg
SFRUUCByZXNwb25zZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTIxNTIwMQorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNTc0NTQ2MzM+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBleHBlcmltZW50
YWwgZmVhdHVyZSBpcyBvZmYgYnkgZGVmYXVsdC4KKworICAgICAgICBDTkFNRSBjbG9ha2luZyBt
ZWFucyBhIGhvc3QgcmVzb2x2ZXMgdG8gYSBhIGRpZmZlcmVudCBkb21haW4sIHBvdGVudGlhbGx5
IGEKKyAgICAgICAgdGhpcmQtcGFydHkgZG9tYWluLCBhcyBwYXJ0IG9mIEROUyByZXNvbHV0aW9u
LgorCisgICAgICAgIFRoaXMgcGF0Y2ggbWFrZXMgV2ViS2l0OjpOZXR3b3JrRGF0YVRhc2tDb2Nv
YSBjYXB0dXJlIGFueSBDTkFNRSBjbG9ha2luZyBmb3IKKyAgICAgICAgdGhlIGZpcnN0IHBhcnR5
IGhvc3QgYW5kIHN0b3JlcyBpdCBpbiBhIHRhYmxlIGluIHRoZSBXZWJLaXQ6Ok5ldHdvcmtTZXNz
aW9uLgorICAgICAgICBJdCB0aGVuIGNoZWNrcyBmaXJzdCBwYXJ0eSBzdWJyZXNvdXJjZSBsb2Fk
cyB0byBzZWUgaWYgdGhleSByZXNvbHZlIHRvIGEKKyAgICAgICAgZGlmZmVyZW50IGRvbWFpbiBh
bmQgaWYgc28sIGNvbXBhcmUgdGhhdCBkb21haW4gdG8gYm90aCB0aGUgZmlyc3QgcGFydHkKKyAg
ICAgICAgZG9tYWluIGFuZCBpdHMgQ05BTUUgY2xvYWtpbmcgZG9tYWluLCBpZiB0aGVyZSBpcyBv
bmUuIElmIHRoZXJlJ3MgYQorICAgICAgICBtaXNtYXRjaCwgaXQncyBkZWVtZWQgYSBjYXNlIG9m
IHRoaXJkLXBhcnR5IENOQU1FIGNsb2FraW5nIGFuZCBhbnkgY29va2llcworICAgICAgICBzZXQg
aW4gdGhlIHJlc3BvbnNlIG9mIHRoZSBjbG9ha2VkIHN1YnJlc291cmNlIGxvYWQgd2lsbCBoYXZl
IHRoZWlyIGV4cGlyeQorICAgICAgICBjYXBwZWQgdG8gNyBkYXlzLgorCisgICAgICAgIFRoZSBj
YXNlcyBmb3IgY2FwcGluZyBleHBpcnkgbG9vayBsaWtlIHRoaXMgKGFuZCBhcmUgYmFja2VkIGJ5
IHRlc3QgY2FzZXMpOgorCisgICAgICAgIEZpcnN0LXBhcnR5IGhvc3QgIHwgRmlyc3QtcGFydHkg
c3ViZG9tYWluICAgICAgfCBDYXBwZWQgZXhwaXJ5CisgICAgICAgIC0tLS0tLS0tLS0tLS0tLS0t
LXwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfC0tLS0tLS0tLS0tLS0tCisgICAgICAgIE5v
IENOQU1FIGNsb2FraW5nIHwgTm8gQ05BTUUgY2xvYWtpbmcgICAgICAgICAgfCBObworICAgICAg
ICBObyBDTkFNRSBjbG9ha2luZyB8IEZpcnN0LXBhcnR5IENOQU1FIGNsb2FraW5nIHwgTm8KKyAg
ICAgICAgTm8gQ05BTUUgY2xvYWtpbmcgfCBUaGlyZC1wYXJ0eSBDTkFNRSBjbG9ha2luZyB8IFll
cworICAgICAgICBDTkFNRSBjbG9ha2luZyAgICB8IE5vIENOQU1FIGNsb2FraW5nICAgICAgICAg
IHwgTm8KKyAgICAgICAgQ05BTUUgY2xvYWtpbmcgICAgfCBNYXRjaGluZyBDTkFNRSBjbG9ha2lu
ZyAgICB8IE5vCisgICAgICAgIENOQU1FIGNsb2FraW5nICAgIHwgRmlyc3QtcGFydHkgQ05BTUUg
Y2xvYWtpbmcgfCBObworICAgICAgICBDTkFNRSBjbG9ha2luZyAgICB8IFRoaXJkLXBhcnR5IENO
QU1FIGNsb2FraW5nIHwgWWVzCisKKyAgICAgICAgVGhpcyBwYXRjaCBtYWtlcyB1c2Ugb2YgdHdv
IG5ldyBDRk5ldHdvcmsgU1BJcyBvbiBOU1VSTFNlc3Npb25UYXNrOgorICAgICAgICAtICBfY29v
a2llVHJhbnNmb3JtQ2FsbGJhY2sKKyAgICAgICAgLSBfcmVzb2x2ZWRDTkFNRUNoYWluCisKKyAg
ICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHA6CisgICAgICAgIChXZWJL
aXQ6Ok5ldHdvcmtQcm9jZXNzOjpyZXNldFBhcmFtZXRlcnNUb0RlZmF1bHRWYWx1ZXMpOgorICAg
ICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6c2V0SXNSdW5uaW5nUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc1Rlc3QpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6c2V0Rmlyc3RQ
YXJ0eUhvc3RDTkFNRURvbWFpbkZvclRlc3RpbmcpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3Jr
UHJvY2Vzczo6c2V0VGhpcmRQYXJ0eUNOQU1FRG9tYWluRm9yVGVzdGluZyk6CisgICAgICAgICog
TmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrUHJvY2Vzcy5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrU2Vzc2lvbi5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtTZXNzaW9uOjpOZXR3
b3JrU2Vzc2lvbik6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtTZXNzaW9uOjpzZXRGaXJzdFBh
cnR5SG9zdENOQU1FRG9tYWluKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Nlc3Npb246OmZp
cnN0UGFydHlIb3N0Q05BTUVEb21haW4pOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrU2Vzc2lv
bjo6cmVzZXRDTkFNRURvbWFpbkRhdGEpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdv
cmtTZXNzaW9uLmg6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtTZXNzaW9uOjpzZXRDTkFNRUNs
b2FraW5nTWl0aWdhdGlvbkVuYWJsZWQpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrU2Vzc2lv
bjo6Y25hbWVDbG9ha2luZ01pdGlnYXRpb25FbmFibGVkIGNvbnN0KToKKyAgICAgICAgKFdlYktp
dDo6TmV0d29ya1Nlc3Npb246OnNldFRoaXJkUGFydHlDTkFNRURvbWFpbkZvclRlc3RpbmcpOgor
ICAgICAgICAoV2ViS2l0OjpOZXR3b3JrU2Vzc2lvbjo6dGhpcmRQYXJ0eUNOQU1FRG9tYWluRm9y
VGVzdGluZyBjb25zdCk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya0Rh
dGFUYXNrQ29jb2EuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrRGF0
YVRhc2tDb2NvYS5tbToKKyAgICAgICAgKFdlYktpdDo6aGFzQ05BTUVBbmRDb29raWVUcmFuc2Zv
cm1TUEkpOgorICAgICAgICAoV2ViS2l0OjpsYXN0Q05BTUVEb21haW4pOgorICAgICAgICAoV2Vi
S2l0OjpOZXR3b3JrRGF0YVRhc2tDb2NvYTo6dXBkYXRlRmlyc3RQYXJ0eUluZm9Gb3JUYXNrQW5k
U2Vzc2lvbik6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtEYXRhVGFza0NvY29hOjphcHBseUNv
b2tpZVBvbGljeUZvclRoaXJkUGFydHlDTkFNRUNsb2FraW5nKToKKyAgICAgICAgKFdlYktpdDo6
TmV0d29ya0RhdGFUYXNrQ29jb2E6Ok5ldHdvcmtEYXRhVGFza0NvY29hKToKKyAgICAgICAgKFdl
YktpdDo6TmV0d29ya0RhdGFUYXNrQ29jb2E6OmRpZFJlY2VpdmVSZXNwb25zZSk6CisgICAgICAg
IChXZWJLaXQ6Ok5ldHdvcmtEYXRhVGFza0NvY29hOjp3aWxsUGVyZm9ybUhUVFBSZWRpcmVjdGlv
bik6CisgICAgICAgICogU2hhcmVkL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NQYXJhbWV0ZXJzLmg6
CisgICAgICAgIChXZWJLaXQ6OlJlc291cmNlTG9hZFN0YXRpc3RpY3NQYXJhbWV0ZXJzOjplbmNv
ZGUgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGFyYW1l
dGVyczo6ZGVjb2RlKToKKyAgICAgICAgKiBTaGFyZWQvV2ViUHJlZmVyZW5jZXMueWFtbDoKKyAg
ICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tXZWJzaXRlRGF0YVN0b3JlUmVmLmNwcDoKKyAgICAg
ICAgKFdLV2Vic2l0ZURhdGFTdG9yZVNldFJlc291cmNlTG9hZFN0YXRpc3RpY3NGaXJzdFBhcnR5
SG9zdENOQU1FRG9tYWluRm9yVGVzdGluZyk6CisgICAgICAgIChXS1dlYnNpdGVEYXRhU3RvcmVT
ZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzVGhpcmRQYXJ0eUNOQU1FRG9tYWluRm9yVGVzdGluZyk6
CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dLV2Vic2l0ZURhdGFTdG9yZVJlZi5oOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzc1Byb3h5OjpzZXRGaXJzdFBhcnR5SG9zdENOQU1FRG9t
YWluRm9yVGVzdGluZyk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzUHJveHk6OnNl
dFRoaXJkUGFydHlDTkFNRURvbWFpbkZvclRlc3RpbmcpOgorICAgICAgICAqIFVJUHJvY2Vzcy9O
ZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUHJv
Y2Vzc1Bvb2wuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6ZW5zdXJlTmV0
d29ya1Byb2Nlc3MpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJzaXRlRGF0YS9Db2NvYS9XZWJz
aXRlRGF0YVN0b3JlQ29jb2EubW06CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6
OnBsYXRmb3JtU2V0TmV0d29ya1BhcmFtZXRlcnMpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJz
aXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2Vic2l0ZURh
dGFTdG9yZTo6c2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0ZpcnN0UGFydHlIb3N0Q05BTUVEb21h
aW5Gb3JUZXN0aW5nKToKKyAgICAgICAgKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6c2V0UmVz
b3VyY2VMb2FkU3RhdGlzdGljc1RoaXJkUGFydHlDTkFNRURvbWFpbkZvclRlc3RpbmcpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjpwYXJhbWV0ZXJzKToKKyAgICAgICAgKiBV
SVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5oOgorCiAyMDIwLTA4LTA1ICBQ
ZXIgQXJuZSBWb2xsYW4gIDxwdm9sbGFuQGFwcGxlLmNvbT4KIAogICAgICAgICBbQ29jb2FdIFNh
bmRib3ggZXh0ZW5zaW9uIHRva2VuIG5vdCBjbGVhcmVkIGZyb20gbWVtb3J5CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybUhhdmUuaCBiL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3Jt
SGF2ZS5oCmluZGV4IDE3YWI4MjRkZTQ2MjRhYjQxNGI4NGIxMWYzYjkwYmVjM2M4NTJjZGEuLjA2
YjRkZTc0NDJmZDFkY2IwOWE3OTExZWQ4ZDgxZWQwODRhOTU0ZGUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XVEYvd3RmL1BsYXRmb3JtSGF2ZS5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtSGF2
ZS5oCkBAIC03MDcsMyArNzA3LDEwIEBACiAjaWYgKFBMQVRGT1JNKE1BQykgJiYgX19NQUNfT1Nf
WF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMTAwMDApCiAjZGVmaW5lIEhBVkVfTlNUQUJMRVZJ
RVdTVFlMRSAxCiAjZW5kaWYKKworI2lmIChQTEFURk9STShNQUMpICYmIF9fTUFDX09TX1hfVkVS
U0lPTl9NSU5fUkVRVUlSRUQgPj0gMTEwMDAwKSBcCisgICAgfHwgKChQTEFURk9STShJT1MpIHx8
IFBMQVRGT1JNKE1BQ0NBVEFMWVNUKSkgJiYgX19JUEhPTkVfT1NfVkVSU0lPTl9NSU5fUkVRVUlS
RUQgPj0gMTQwMDAwKSBcCisgICAgfHwgKFBMQVRGT1JNKFdBVENIT1MpICYmIF9fV0FUQ0hfT1Nf
VkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gNzAwMDApIFwKKyAgICB8fCAoUExBVEZPUk0oQVBQTEVU
VikgJiYgX19UVl9PU19WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxNDAwMDApCisjZGVmaW5lIEhB
VkVfQ0ZORVRXT1JLX0NOQU1FX0FORF9DT09LSUVfVFJBTlNGT1JNX1NQSSAxCisjZW5kaWYKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvc3BpL2NmL0NGTmV0d29ya1NQSS5oIGIv
U291cmNlL1dlYkNvcmUvUEFML3BhbC9zcGkvY2YvQ0ZOZXR3b3JrU1BJLmgKaW5kZXggM2UyYTdh
MzQxZWU2YWJhNzFlZmIzYmRiMGRkYjE2YTAwMzVjOThiZi4uMGZjYzVkMjEwYjdhMTYzMWJhNTk1
ZWY5NDZlZTg3NTY2OTcwMDc4NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvUEFML3BhbC9z
cGkvY2YvQ0ZOZXR3b3JrU1BJLmgKKysrIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9zcGkvY2Yv
Q0ZOZXR3b3JrU1BJLmgKQEAgLTI5Niw2ICsyOTYsMTEgQEAgZW51bSA6IE5TVUludGVnZXIgewog
ICAgIE5TSFRUUENvb2tpZUFjY2VwdFBvbGljeUV4Y2x1c2l2ZWx5RnJvbU1haW5Eb2N1bWVudERv
bWFpbiA9IDMsCiB9OwogCitAaW50ZXJmYWNlIE5TVVJMU2Vzc2lvblRhc2sgKCkKK0Bwcm9wZXJ0
eSAobm9uYXRvbWljLCBjb3B5LCBudWxsYWJsZSkgTlNBcnJheTxOU0hUVFBDb29raWUqPiogKF5f
Y29va2llVHJhbnNmb3JtQ2FsbGJhY2spKE5TQXJyYXk8TlNIVFRQQ29va2llKj4qIGNvb2tpZXMp
OworQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5LCBudWxsYWJsZSkgTlNBcnJheTxOU1N0
cmluZyo+KiBfcmVzb2x2ZWRDTkFNRUNoYWluOworQGVuZAorCiAjZW5kaWYgLy8gZGVmaW5lZChf
X09CSkNfXykKIAogI2VuZGlmIC8vIFVTRShBUFBMRV9JTlRFUk5BTF9TREspCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdzLnlhbWwgYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L1NldHRpbmdzLnlhbWwKaW5kZXggMjJjOWY2YWIyMzAwMWEyOTFjNWQzNDU3YzIxNGIzZTIwNTU5
ZmM4OC4uZDRjZmJjZWQ4Mzc2MzI5ODE1NDYzYmM2NmZmNWYyMmExMjFmMDA2ZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5ncy55YW1sCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvU2V0dGluZ3MueWFtbApAQCAtOTI4LDYgKzkyOCw5IEBAIGlzRmlyc3RQYXJ0eVdlYnNp
dGVEYXRhUmVtb3ZhbFJlcHJvVGVzdGluZ0VuYWJsZWQ6CiBpc1NhbWVTaXRlU3RyaWN0RW5mb3Jj
ZW1lbnRFbmFibGVkOgogICBpbml0aWFsOiBmYWxzZQogCitpc0NOQU1FQ2xvYWtpbmdNaXRpZ2F0
aW9uRW5hYmxlZDoKKyAgaW5pdGlhbDogZmFsc2UKKwogaXNMb2dnZWRJbkFQSUVuYWJsZWQ6CiAg
IGluaXRpYWw6IGZhbHNlCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvTmV0d29ya1N0b3JhZ2VTZXNzaW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvTmV0d29ya1N0b3JhZ2VTZXNzaW9uLmNwcAppbmRleCA2ODQ3YzRmNWU5NDliZjA3
YTljYmVmZGNkYTMwYjQyNWFjYjlmZmI2Li5jNTMzMjFlMWNiYTNkZDk3NGY5NzBjNzU5MTA2YTdm
ODE3ZTIwYjc4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL05l
dHdvcmtTdG9yYWdlU2Vzc2lvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9OZXR3b3JrU3RvcmFnZVNlc3Npb24uY3BwCkBAIC03Miw2ICs3MiwxMSBAQCB2b2lkIE5l
dHdvcmtTdG9yYWdlU2Vzc2lvbjo6c2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0VuYWJsZWQoYm9v
bCBlbmFibGVkKQogewogICAgIG1faXNSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRW5hYmxlZCA9IGVu
YWJsZWQ7CiB9CisKK2Jvb2wgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpyZXNvdXJjZUxvYWRTdGF0
aXN0aWNzRW5hYmxlZCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1faXNSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzRW5hYmxlZDsKK30KICNlbmRpZgogCiBib29sIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6
c2hvdWxkQmxvY2tUaGlyZFBhcnR5Q29va2llcyhjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgcmVn
aXN0cmFibGVEb21haW4pIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL05ldHdvcmtTdG9yYWdlU2Vzc2lvbi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9OZXR3b3JrU3RvcmFnZVNlc3Npb24uaAppbmRleCAyYzYxNWY0YzJjNzYyNzcz
MmIwYTExMmM1ZjFjYzdmMTEwZTQ3NDUxLi5kYzk4OWJjMjYwODk1OGI2MDEzOWRlZjFlZjkyZWE2
MjE3NmU2NWQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL05l
dHdvcmtTdG9yYWdlU2Vzc2lvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvTmV0d29ya1N0b3JhZ2VTZXNzaW9uLmgKQEAgLTg1LDYgKzg1LDcgQEAgZW51bSBjbGFzcyBJ
bmNsdWRlU2VjdXJlQ29va2llcyA6IGJvb2w7CiBlbnVtIGNsYXNzIEluY2x1ZGVIdHRwT25seUNv
b2tpZXMgOiBib29sOwogZW51bSBjbGFzcyBUaGlyZFBhcnR5Q29va2llQmxvY2tpbmdNb2RlIDog
dWludDhfdCB7IEFsbCwgQWxsRXhjZXB0QmV0d2VlbkFwcEJvdW5kRG9tYWlucywgQWxsT25TaXRl
c1dpdGhvdXRVc2VySW50ZXJhY3Rpb24sIE9ubHlBY2NvcmRpbmdUb1BlckRvbWFpblBvbGljeSB9
OwogZW51bSBjbGFzcyBTYW1lU2l0ZVN0cmljdEVuZm9yY2VtZW50RW5hYmxlZCA6IGJvb2wgeyBZ
ZXMsIE5vIH07CitlbnVtIGNsYXNzIENOQU1FQ2xvYWtpbmdNaXRpZ2F0aW9uRW5hYmxlZCA6IGJv
b2wgeyBZZXMsIE5vIH07CiBlbnVtIGNsYXNzIEZpcnN0UGFydHlXZWJzaXRlRGF0YVJlbW92YWxN
b2RlIDogdWludDhfdCB7IEFsbEJ1dENvb2tpZXMsIE5vbmUsIEFsbEJ1dENvb2tpZXNMaXZlT25U
ZXN0aW5nVGltZW91dCwgQWxsQnV0Q29va2llc1JlcHJvVGVzdGluZ1RpbWVvdXQgfTsKIGVudW0g
Y2xhc3MgU2hvdWxkQXNrSVRQIDogYm9vbCB7IE5vLCBZZXMgfTsKIApAQCAtMTg0LDExICsxODUs
MTMgQEAgcHVibGljOgogCiAjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKICAg
ICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldFJlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkKGJv
b2wpOworICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgcmVzb3VyY2VMb2FkU3RhdGlzdGljc0VuYWJs
ZWQoKSBjb25zdDsKICAgICBXRUJDT1JFX0VYUE9SVCBib29sIHNob3VsZEJsb2NrQ29va2llcyhj
b25zdCBSZXNvdXJjZVJlcXVlc3QmLCBPcHRpb25hbDxGcmFtZUlkZW50aWZpZXI+LCBPcHRpb25h
bDxQYWdlSWRlbnRpZmllcj4sIFNob3VsZFJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nKSBj
b25zdDsKICAgICBXRUJDT1JFX0VYUE9SVCBib29sIHNob3VsZEJsb2NrQ29va2llcyhjb25zdCBV
UkwmIGZpcnN0UGFydHlGb3JDb29raWVzLCBjb25zdCBVUkwmIHJlc291cmNlLCBPcHRpb25hbDxG
cmFtZUlkZW50aWZpZXI+LCBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4sIFNob3VsZFJlbGF4VGhp
cmRQYXJ0eUNvb2tpZUJsb2NraW5nKSBjb25zdDsKICAgICBXRUJDT1JFX0VYUE9SVCBib29sIHNo
b3VsZEJsb2NrVGhpcmRQYXJ0eUNvb2tpZXMoY29uc3QgUmVnaXN0cmFibGVEb21haW4mKSBjb25z
dDsKICAgICBXRUJDT1JFX0VYUE9SVCBib29sIHNob3VsZEJsb2NrVGhpcmRQYXJ0eUNvb2tpZXNC
dXRLZWVwRmlyc3RQYXJ0eUNvb2tpZXNGb3IoY29uc3QgUmVnaXN0cmFibGVEb21haW4mKSBjb25z
dDsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldEFsbENvb2tpZXNUb1NhbWVTaXRlU3RyaWN0
KGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsK
KyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgTlNIVFRQQ29va2llICpjYXBFeHBpcnlPZlBlcnNp
c3RlbnRDb29raWUoTlNIVFRQQ29va2llICosIFNlY29uZHMgY2FwKTsKICAgICBXRUJDT1JFX0VY
UE9SVCBib29sIGhhc0hhZFVzZXJJbnRlcmFjdGlvbkFzRmlyc3RQYXJ0eShjb25zdCBSZWdpc3Ry
YWJsZURvbWFpbiYpIGNvbnN0OwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0UHJldmFsZW50
RG9tYWluc1RvQmxvY2tBbmREZWxldGVDb29raWVzRm9yKGNvbnN0IFZlY3RvcjxSZWdpc3RyYWJs
ZURvbWFpbj4mKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldFByZXZhbGVudERvbWFpbnNU
b0Jsb2NrQnV0S2VlcENvb2tpZXNGb3IoY29uc3QgVmVjdG9yPFJlZ2lzdHJhYmxlRG9tYWluPiYp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9OZXR3
b3JrU3RvcmFnZVNlc3Npb25Db2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvY29jb2EvTmV0d29ya1N0b3JhZ2VTZXNzaW9uQ29jb2EubW0KaW5kZXggY2I5NmQ0YWFmZDVh
NGZhMDZkNmE3MjIxMDMyMDI3OThkOWEzYTY1Ny4uZTNmYzJkODlkZjE4YTUxZGQ3NzhiYjNkMjA3
YTFiYjIwOWExZjliOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9jb2NvYS9OZXR3b3JrU3RvcmFnZVNlc3Npb25Db2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL05ldHdvcmtTdG9yYWdlU2Vzc2lvbkNvY29hLm1tCkBA
IC0zMDgsNiArMzA4LDE3IEBAIE5TQXJyYXkgKk5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6aHR0cENv
b2tpZXNGb3JVUkwoQ0ZIVFRQQ29va2llU3RvcmFnZVJlZiBjb29raWVTCiAgICAgcmV0dXJuIFdl
YkNvcmU6OmNvb2tpZXNGb3JVUkwobnNDb29raWVTdG9yYWdlLmdldCgpLCB1cmwsIGZpcnN0UGFy
dHksIHNhbWVTaXRlSW5mbyk7CiB9CiAKK05TSFRUUENvb2tpZSAqTmV0d29ya1N0b3JhZ2VTZXNz
aW9uOjpjYXBFeHBpcnlPZlBlcnNpc3RlbnRDb29raWUoTlNIVFRQQ29va2llICpjb29raWUsIFNl
Y29uZHMgY2FwKQoreworICAgIGlmICghW2Nvb2tpZSBpc1Nlc3Npb25Pbmx5XSAmJiAoIWNvb2tp
ZS5leHBpcmVzRGF0ZSB8fCBjb29raWUuZXhwaXJlc0RhdGUudGltZUludGVydmFsU2luY2VOb3cg
PiBjYXAuc2Vjb25kcygpKSkgeworICAgICAgICBSZXRhaW5QdHI8TlNNdXRhYmxlRGljdGlvbmFy
eTxOU0hUVFBDb29raWVQcm9wZXJ0eUtleSwgaWQ+PiBwcm9wZXJ0aWVzID0gYWRvcHROUyhbW2Nv
b2tpZSBwcm9wZXJ0aWVzXSBtdXRhYmxlQ29weV0pOworICAgICAgICBSZXRhaW5QdHI8TlNEYXRl
PiBkYXRlID0gYWRvcHROUyhbW05TRGF0ZSBhbGxvY10gaW5pdFdpdGhUaW1lSW50ZXJ2YWxTaW5j
ZU5vdzpjYXAuc2Vjb25kcygpXSk7CisgICAgICAgIFtwcm9wZXJ0aWVzIHNldE9iamVjdDpkYXRl
LmdldCgpIGZvcktleTpOU0hUVFBDb29raWVFeHBpcmVzXTsKKyAgICAgICAgY29va2llID0gW05T
SFRUUENvb2tpZSBjb29raWVXaXRoUHJvcGVydGllczpwcm9wZXJ0aWVzLmdldCgpXTsKKyAgICB9
CisgICAgcmV0dXJuIGNvb2tpZTsKK30KKwogTlNBcnJheSAqTmV0d29ya1N0b3JhZ2VTZXNzaW9u
Ojpjb29raWVzRm9yVVJMKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZv
JiBzYW1lU2l0ZUluZm8sIGNvbnN0IFVSTCYgdXJsLCBPcHRpb25hbDxGcmFtZUlkZW50aWZpZXI+
IGZyYW1lSUQsIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQsIFNob3VsZEFza0lUUCBz
aG91bGRBc2tJVFAsIFNob3VsZFJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nIHNob3VsZFJl
bGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nKSBjb25zdAogewogI2lmIEVOQUJMRShSRVNPVVJD
RV9MT0FEX1NUQVRJU1RJQ1MpCkBAIC00MTcsMTUgKzQyOCw5IEBAIHN0YXRpYyBOU0hUVFBDb29r
aWUgKnBhcnNlRE9NQ29va2llKFN0cmluZyBjb29raWVTdHJpbmcsIE5TVVJMKiBjb29raWVVUkws
IE9wdGlvCiAgICAgaWYgKFtjb29raWUgaXNIVFRQT25seV0pCiAgICAgICAgIHJldHVybiBuaWw7
CiAKLSAgICAvLyBDYXAgbGlmZXRpbWUgb2YgcGVyc2lzdGVudCwgY2xpZW50LXNpZGUgY29va2ll
cyB0byBhIHdlZWsuCi0gICAgaWYgKGNhcHBlZExpZmV0aW1lICYmICFbY29va2llIGlzU2Vzc2lv
bk9ubHldKSB7Ci0gICAgICAgIGlmICghY29va2llLmV4cGlyZXNEYXRlIHx8IGNvb2tpZS5leHBp
cmVzRGF0ZS50aW1lSW50ZXJ2YWxTaW5jZU5vdyA+IGNhcHBlZExpZmV0aW1lLT5zZWNvbmRzKCkp
IHsKLSAgICAgICAgICAgIGF1dG8gcHJvcGVydGllcyA9IGFkb3B0TlMoW1tjb29raWUgcHJvcGVy
dGllc10gbXV0YWJsZUNvcHldKTsKLSAgICAgICAgICAgIGF1dG8gZGF0ZUluQVdlZWsgPSBhZG9w
dE5TKFtbTlNEYXRlIGFsbG9jXSBpbml0V2l0aFRpbWVJbnRlcnZhbFNpbmNlTm93OmNhcHBlZExp
ZmV0aW1lLT5zZWNvbmRzKCldKTsKLSAgICAgICAgICAgIFtwcm9wZXJ0aWVzIHNldE9iamVjdDpk
YXRlSW5BV2Vlay5nZXQoKSBmb3JLZXk6TlNIVFRQQ29va2llRXhwaXJlc107Ci0gICAgICAgICAg
ICByZXR1cm4gW05TSFRUUENvb2tpZSBjb29raWVXaXRoUHJvcGVydGllczpwcm9wZXJ0aWVzLmdl
dCgpXTsKLSAgICAgICAgfQotICAgIH0KKyAgICAvLyBDYXAgbGlmZXRpbWUgb2YgcGVyc2lzdGVu
dCwgY2xpZW50LXNpZGUgY29va2llcy4KKyAgICBpZiAoY2FwcGVkTGlmZXRpbWUpCisgICAgICAg
IHJldHVybiBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmNhcEV4cGlyeU9mUGVyc2lzdGVudENvb2tp
ZShjb29raWUsICpjYXBwZWRMaWZldGltZSk7CiAKICAgICByZXR1cm4gY29va2llOwogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcAppbmRleCA3
OTA4NTdkNTc2YjE1NDRmMzJjMzAwNWM4ZTM3OWFlOTgzZDMzYmFlLi5kNTMxNDJlMTI4ZmY4ZTg0
OGIxODE5NzQ4NjMyNzdiYTE3MTZlYzdmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcApAQCAtODE0LDYgKzgxNCwxMCBAQCB2b2lkIE5ldHdv
cmtQcm9jZXNzOjpnZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YVN1bW1hcnkoUEFMOjpTZXNz
aW9uSUQgc2Vzc2lvbgogdm9pZCBOZXR3b3JrUHJvY2Vzczo6cmVzZXRQYXJhbWV0ZXJzVG9EZWZh
dWx0VmFsdWVzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIGlmIChhdXRvKiBuZXR3b3JrU2Vzc2lv
biA9IHRoaXMtPm5ldHdvcmtTZXNzaW9uKHNlc3Npb25JRCkpIHsKKyNpZiBIQVZFKENGTkVUV09S
S19DTkFNRV9BTkRfQ09PS0lFX1RSQU5TRk9STV9TUEkpCisgICAgICAgIG5ldHdvcmtTZXNzaW9u
LT5yZXNldENOQU1FRG9tYWluRGF0YSgpOworICAgICAgICBuZXR3b3JrU2Vzc2lvbi0+c2V0Q05B
TUVDbG9ha2luZ01pdGlnYXRpb25FbmFibGVkKFdlYkNvcmU6OkNOQU1FQ2xvYWtpbmdNaXRpZ2F0
aW9uRW5hYmxlZDo6Tm8pOworI2VuZGlmCiAgICAgICAgIGlmIChhdXRvKiByZXNvdXJjZUxvYWRT
dGF0aXN0aWNzID0gbmV0d29ya1Nlc3Npb24tPnJlc291cmNlTG9hZFN0YXRpc3RpY3MoKSkKICAg
ICAgICAgICAgIHJlc291cmNlTG9hZFN0YXRpc3RpY3MtPnJlc2V0UGFyYW1ldGVyc1RvRGVmYXVs
dFZhbHVlcyhXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiAgICAgICAgIGVsc2UKQEAgLTg2
Niw2ICs4NzAsOSBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpzZXROb3RpZnlQYWdlc1doZW5EYXRh
UmVjb3Jkc1dlcmVTY2FubmVkKFBBTDo6U2Vzc2lvbklEIHNlcwogdm9pZCBOZXR3b3JrUHJvY2Vz
czo6c2V0SXNSdW5uaW5nUmVzb3VyY2VMb2FkU3RhdGlzdGljc1Rlc3QoUEFMOjpTZXNzaW9uSUQg
c2Vzc2lvbklELCBib29sIHZhbHVlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxl
dGlvbkhhbmRsZXIpCiB7CiAgICAgaWYgKGF1dG8qIG5ldHdvcmtTZXNzaW9uID0gdGhpcy0+bmV0
d29ya1Nlc3Npb24oc2Vzc2lvbklEKSkgeworI2lmIEhBVkUoQ0ZORVRXT1JLX0NOQU1FX0FORF9D
T09LSUVfVFJBTlNGT1JNX1NQSSkKKyAgICAgICAgbmV0d29ya1Nlc3Npb24tPnNldENOQU1FQ2xv
YWtpbmdNaXRpZ2F0aW9uRW5hYmxlZChXZWJDb3JlOjpDTkFNRUNsb2FraW5nTWl0aWdhdGlvbkVu
YWJsZWQ6Olllcyk7CisjZW5kaWYKICAgICAgICAgaWYgKGF1dG8qIHJlc291cmNlTG9hZFN0YXRp
c3RpY3MgPSBuZXR3b3JrU2Vzc2lvbi0+cmVzb3VyY2VMb2FkU3RhdGlzdGljcygpKQogICAgICAg
ICAgICAgcmVzb3VyY2VMb2FkU3RhdGlzdGljcy0+c2V0SXNSdW5uaW5nVGVzdCh2YWx1ZSwgV1RG
TW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogICAgICAgICBlbHNlCkBAIC0xMzc5LDYgKzEzODYs
MjAgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6c2V0VG9TYW1lU2l0ZVN0cmljdENvb2tpZXNGb3JU
ZXN0aW5nKFBBTDo6U2Vzc2lvbklEIHNlc3Npb24KICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIo
KTsKICAgICB9CiB9CisKK3ZvaWQgTmV0d29ya1Byb2Nlc3M6OnNldEZpcnN0UGFydHlIb3N0Q05B
TUVEb21haW5Gb3JUZXN0aW5nKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgU3RyaW5nJiYgZmly
c3RQYXJ0eUhvc3QsIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiYgY25hbWVEb21haW4sIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBpZiAo
YXV0byogbmV0d29ya1Nlc3Npb24gPSB0aGlzLT5uZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQpKQor
ICAgICAgICBuZXR3b3JrU2Vzc2lvbi0+c2V0Rmlyc3RQYXJ0eUhvc3RDTkFNRURvbWFpbihXVEZN
b3ZlKGZpcnN0UGFydHlIb3N0KSwgV1RGTW92ZShjbmFtZURvbWFpbikpOworICAgIGNvbXBsZXRp
b25IYW5kbGVyKCk7Cit9CisKK3ZvaWQgTmV0d29ya1Byb2Nlc3M6OnNldFRoaXJkUGFydHlDTkFN
RURvbWFpbkZvclRlc3RpbmcoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBXZWJDb3JlOjpSZWdp
c3RyYWJsZURvbWFpbiYmIGRvbWFpbiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBs
ZXRpb25IYW5kbGVyKQoreworICAgIGlmIChhdXRvKiBuZXR3b3JrU2Vzc2lvbiA9IHRoaXMtPm5l
dHdvcmtTZXNzaW9uKHNlc3Npb25JRCkpCisgICAgICAgIG5ldHdvcmtTZXNzaW9uLT5zZXRUaGly
ZFBhcnR5Q05BTUVEb21haW5Gb3JUZXN0aW5nKFdURk1vdmUoZG9tYWluKSk7CisgICAgY29tcGxl
dGlvbkhhbmRsZXIoKTsKK30KICNlbmRpZiAvLyBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNU
SUNTKQogCiB2b2lkIE5ldHdvcmtQcm9jZXNzOjpzZXRBZENsaWNrQXR0cmlidXRpb25EZWJ1Z01v
ZGUoYm9vbCBkZWJ1Z01vZGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtQcm9jZXNzLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdv
cmtQcm9jZXNzLmgKaW5kZXggNGRmYTE0Yzg3ODNkYTIyNmMzMjgwNDBhMzJkNTljNWE1OTM3MDcz
OS4uZjIzZmQ1ODBlZjU0Y2FkZjgwZjQ2ODM2NjU2ZmIyM2ZkNGRkZjJmYyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaApAQCAtMjczLDYgKzI3Myw4
IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldFNob3VsZEVuYmxlU2FtZVNpdGVTdHJpY3RFbmZvcmNl
bWVudEZvclRlc3RpbmcoUEFMOjpTZXNzaW9uSUQsIFdlYkNvcmU6OlNhbWVTaXRlU3RyaWN0RW5m
b3JjZW1lbnRFbmFibGVkLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogICAgIHZvaWQg
c2V0Rmlyc3RQYXJ0eVdlYnNpdGVEYXRhUmVtb3ZhbE1vZGVGb3JUZXN0aW5nKFBBTDo6U2Vzc2lv
bklELCBXZWJDb3JlOjpGaXJzdFBhcnR5V2Vic2l0ZURhdGFSZW1vdmFsTW9kZSwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZCgpPiYmKTsKICAgICB2b2lkIHNldFRvU2FtZVNpdGVTdHJpY3RDb29raWVz
Rm9yVGVzdGluZyhQQUw6OlNlc3Npb25JRCwgY29uc3QgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21h
aW4mLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOworICAgIHZvaWQgc2V0Rmlyc3RQYXJ0
eUhvc3RDTkFNRURvbWFpbkZvclRlc3RpbmcoUEFMOjpTZXNzaW9uSUQsIFN0cmluZyYmIGZpcnN0
UGFydHlIb3N0LCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYmIGNuYW1lRG9tYWluLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOworICAgIHZvaWQgc2V0VGhpcmRQYXJ0eUNOQU1FRG9t
YWluRm9yVGVzdGluZyhQQUw6OlNlc3Npb25JRCwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4m
JiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKICNlbmRpZgogCiAgICAgdm9pZCBzZXRB
ZENsaWNrQXR0cmlidXRpb25EZWJ1Z01vZGUoYm9vbCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLm1lc3NhZ2VzLmluIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5tZXNzYWdlcy5pbgppbmRleCA3MDIy
Mjg1ZTM2ODg1ZGU4NmYyZGFmNjg4OGIwMjQ3Mjk5MzVjZjY0Li4wMDJlY2RiODMzYjI5NDFhZTg2
MTNmYTY0ZjAxZGY4OTg5NmRmMzQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL05ldHdvcmtQcm9jZXNzLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MubWVzc2FnZXMuaW4KQEAgLTE0OCw2ICsxNDgsOCBA
QCBtZXNzYWdlcyAtPiBOZXR3b3JrUHJvY2VzcyBMZWdhY3lSZWNlaXZlciB7CiAgICAgU2V0U2hv
dWxkRW5ibGVTYW1lU2l0ZVN0cmljdEVuZm9yY2VtZW50Rm9yVGVzdGluZyhQQUw6OlNlc3Npb25J
RCBzZXNzaW9uSUQsIGVudW06Ym9vbCBXZWJDb3JlOjpTYW1lU2l0ZVN0cmljdEVuZm9yY2VtZW50
RW5hYmxlZCBlbmFibGVkKSAtPiAoKSBBc3luYwogICAgIFNldEZpcnN0UGFydHlXZWJzaXRlRGF0
YVJlbW92YWxNb2RlRm9yVGVzdGluZyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGVudW06dWlu
dDhfdCBXZWJDb3JlOjpGaXJzdFBhcnR5V2Vic2l0ZURhdGFSZW1vdmFsTW9kZSBtb2RlKSAtPiAo
KSBBc3luYwogICAgIFNldFRvU2FtZVNpdGVTdHJpY3RDb29raWVzRm9yVGVzdGluZyhQQUw6OlNl
c3Npb25JRCBzZXNzaW9uSUQsIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIGRvbWFpbikgLT4g
KCkgQXN5bmMKKyAgICBTZXRGaXJzdFBhcnR5SG9zdENOQU1FRG9tYWluRm9yVGVzdGluZyhQQUw6
OlNlc3Npb25JRCBzZXNzaW9uSUQsIFN0cmluZyBmaXJzdFBhcnR5SG9zdCwgV2ViQ29yZTo6UmVn
aXN0cmFibGVEb21haW4gY25hbWVEb21haW4pIC0+ICgpIEFzeW5jCisgICAgU2V0VGhpcmRQYXJ0
eUNOQU1FRG9tYWluRm9yVGVzdGluZyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFdlYkNvcmU6
OlJlZ2lzdHJhYmxlRG9tYWluIGRvbWFpbikgLT4gKCkgQXN5bmMKICNlbmRpZgogCiAgICAgU2V0
QWRDbGlja0F0dHJpYnV0aW9uRGVidWdNb2RlKGJvb2wgZGVidWdNb2RlKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uLmNwcAppbmRleCA2YjY2YmNmMjIy
MGMzNWJhZWE2ZDJiYjU4ZTEzMDE4OGQxNjY2OGE4Li5hN2NiMTc0NDljNGY0NzIzOGIxNWNkYTk2
NjQxM2MwZmI4NjFmZGU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L05ldHdvcmtTZXNzaW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05l
dHdvcmtTZXNzaW9uLmNwcApAQCAtOTAsNiArOTAsNyBAQCBOZXR3b3JrU2Vzc2lvbjo6TmV0d29y
a1Nlc3Npb24oTmV0d29ya1Byb2Nlc3MmIG5ldHdvcmtQcm9jZXNzLCBjb25zdCBOZXR3b3JrU2Vz
cwogICAgICwgbV9zYW1lU2l0ZVN0cmljdEVuZm9yY2VtZW50RW5hYmxlZChwYXJhbWV0ZXJzLnJl
c291cmNlTG9hZFN0YXRpc3RpY3NQYXJhbWV0ZXJzLnNhbWVTaXRlU3RyaWN0RW5mb3JjZW1lbnRF
bmFibGVkKQogICAgICwgbV9maXJzdFBhcnR5V2Vic2l0ZURhdGFSZW1vdmFsTW9kZShwYXJhbWV0
ZXJzLnJlc291cmNlTG9hZFN0YXRpc3RpY3NQYXJhbWV0ZXJzLmZpcnN0UGFydHlXZWJzaXRlRGF0
YVJlbW92YWxNb2RlKQogICAgICwgbV9zdGFuZGFsb25lQXBwbGljYXRpb25Eb21haW4ocGFyYW1l
dGVycy5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGFyYW1ldGVycy5zdGFuZGFsb25lQXBwbGljYXRp
b25Eb21haW4pCisgICAgLCBtX2NuYW1lQ2xvYWtpbmdNaXRpZ2F0aW9uRW5hYmxlZChwYXJhbWV0
ZXJzLnJlc291cmNlTG9hZFN0YXRpc3RpY3NQYXJhbWV0ZXJzLmNuYW1lQ2xvYWtpbmdNaXRpZ2F0
aW9uRW5hYmxlZCkKICNlbmRpZgogICAgICwgbV9hZENsaWNrQXR0cmlidXRpb24obWFrZVVuaXF1
ZVJlZjxBZENsaWNrQXR0cmlidXRpb25NYW5hZ2VyPihuZXR3b3JrUHJvY2VzcywgcGFyYW1ldGVy
cy5zZXNzaW9uSUQpKQogICAgICwgbV90ZXN0U3BlZWRNdWx0aXBsaWVyKHBhcmFtZXRlcnMudGVz
dFNwZWVkTXVsdGlwbGllcikKQEAgLTI4MCw2ICsyODEsNDQgQEAgdm9pZCBOZXR3b3JrU2Vzc2lv
bjo6c2V0U2hvdWxkRW5ibGVTYW1lU2l0ZVN0cmljdEVuZm9yY2VtZW50KFdlYkNvcmU6OlNhbWVT
aXRlU3QKICAgICBpZiAobV9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzKQogICAgICAgICBtX3Jlc291
cmNlTG9hZFN0YXRpc3RpY3MtPnNldFNhbWVTaXRlU3RyaWN0RW5mb3JjZW1lbnRFbmFibGVkKGVu
YWJsZWQpOwogfQorCit2b2lkIE5ldHdvcmtTZXNzaW9uOjpzZXRGaXJzdFBhcnR5SG9zdENOQU1F
RG9tYWluKFN0cmluZyYmIGZpcnN0UGFydHlIb3N0LCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFp
biYmIGNuYW1lRG9tYWluKQoreworI2lmIEhBVkUoQ0ZORVRXT1JLX0NOQU1FX0FORF9DT09LSUVf
VFJBTlNGT1JNX1NQSSkKKyAgICBpZiAoIWNuYW1lQ2xvYWtpbmdNaXRpZ2F0aW9uRW5hYmxlZCgp
KQorICAgICAgICByZXR1cm47CisKKyAgICBBU1NFUlQoIWZpcnN0UGFydHlIb3N0LmlzRW1wdHko
KSAmJiAhY25hbWVEb21haW4uaXNFbXB0eSgpICYmIGZpcnN0UGFydHlIb3N0ICE9IGNuYW1lRG9t
YWluLnN0cmluZygpKTsKKyAgICBpZiAoZmlyc3RQYXJ0eUhvc3QuaXNFbXB0eSgpIHx8IGNuYW1l
RG9tYWluLmlzRW1wdHkoKSB8fCBmaXJzdFBhcnR5SG9zdCA9PSBjbmFtZURvbWFpbi5zdHJpbmco
KSkKKyAgICAgICAgcmV0dXJuOworICAgIG1fZmlyc3RQYXJ0eUhvc3RDTkFNRURvbWFpbnMuYWRk
KFdURk1vdmUoZmlyc3RQYXJ0eUhvc3QpLCBXVEZNb3ZlKGNuYW1lRG9tYWluKSk7CisjZWxzZQor
ICAgIFVOVVNFRF9QQVJBTShmaXJzdFBhcnR5SG9zdCk7CisgICAgVU5VU0VEX1BBUkFNKGNuYW1l
RG9tYWluKTsKKyNlbmRpZgorfQorCitPcHRpb25hbDxXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFp
bj4gTmV0d29ya1Nlc3Npb246OmZpcnN0UGFydHlIb3N0Q05BTUVEb21haW4oY29uc3QgU3RyaW5n
JiBmaXJzdFBhcnR5SG9zdCkKK3sKKyNpZiBIQVZFKENGTkVUV09SS19DTkFNRV9BTkRfQ09PS0lF
X1RSQU5TRk9STV9TUEkpCisgICAgaWYgKCFjbmFtZUNsb2FraW5nTWl0aWdhdGlvbkVuYWJsZWQo
KSkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAgIGF1dG8gaXRlcmF0b3IgPSBt
X2ZpcnN0UGFydHlIb3N0Q05BTUVEb21haW5zLmZpbmQoZmlyc3RQYXJ0eUhvc3QpOworICAgIGlm
IChpdGVyYXRvciA9PSBtX2ZpcnN0UGFydHlIb3N0Q05BTUVEb21haW5zLmVuZCgpKQorICAgICAg
ICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIHJldHVybiBpdGVyYXRvci0+dmFsdWU7CisjZWxz
ZQorICAgIFVOVVNFRF9QQVJBTShmaXJzdFBhcnR5SG9zdCk7CisgICAgcmV0dXJuIFdURjo6bnVs
bG9wdDsKKyNlbmRpZgorfQorCit2b2lkIE5ldHdvcmtTZXNzaW9uOjpyZXNldENOQU1FRG9tYWlu
RGF0YSgpCit7CisgICAgbV9maXJzdFBhcnR5SG9zdENOQU1FRG9tYWlucy5jbGVhcigpOworICAg
IG1fdGhpcmRQYXJ0eUNOQU1FRG9tYWluRm9yVGVzdGluZyA9IFdURjo6bnVsbG9wdDsKK30KICNl
bmRpZiAvLyBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQogCiB2b2lkIE5ldHdvcmtT
ZXNzaW9uOjpzdG9yZUFkQ2xpY2tBdHRyaWJ1dGlvbihXZWJDb3JlOjpBZENsaWNrQXR0cmlidXRp
b24mJiBhZENsaWNrQXR0cmlidXRpb24pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L05ldHdvcmtTZXNzaW9uLmgKaW5kZXggMzgyYmY4MDU5ZmMwOThmZWRmYTUyYTE4ODU0MWU3NGJm
OWU3NDM3ZC4uNWQzZWYwZWY2ZWIxMWY1MDFjYmZjODRiMzg3YTc5YTQ4MzZjOTlhYyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24uaApAQCAtMTA1LDYg
KzEwNSwxMyBAQCBwdWJsaWM6CiAgICAgYm9vbCBzaG91bGREb3duZ3JhZGVSZWZlcnJlcigpIGNv
bnN0OwogICAgIHZvaWQgc2V0VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9kZShXZWJDb3JlOjpU
aGlyZFBhcnR5Q29va2llQmxvY2tpbmdNb2RlKTsKICAgICB2b2lkIHNldFNob3VsZEVuYmxlU2Ft
ZVNpdGVTdHJpY3RFbmZvcmNlbWVudChXZWJDb3JlOjpTYW1lU2l0ZVN0cmljdEVuZm9yY2VtZW50
RW5hYmxlZCk7CisgICAgdm9pZCBzZXRDTkFNRUNsb2FraW5nTWl0aWdhdGlvbkVuYWJsZWQoV2Vi
Q29yZTo6Q05BTUVDbG9ha2luZ01pdGlnYXRpb25FbmFibGVkIHZhbHVlKSB7IG1fY25hbWVDbG9h
a2luZ01pdGlnYXRpb25FbmFibGVkID0gdmFsdWU7IH0KKyAgICBib29sIGNuYW1lQ2xvYWtpbmdN
aXRpZ2F0aW9uRW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJuIG1fY25hbWVDbG9ha2luZ01pdGlnYXRp
b25FbmFibGVkID09IFdlYkNvcmU6OkNOQU1FQ2xvYWtpbmdNaXRpZ2F0aW9uRW5hYmxlZDo6WWVz
OyB9CisgICAgdm9pZCBzZXRGaXJzdFBhcnR5SG9zdENOQU1FRG9tYWluKFN0cmluZyYmIGZpcnN0
UGFydHlIb3N0LCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYmIGNuYW1lRG9tYWluKTsKKyAg
ICBPcHRpb25hbDxXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbj4gZmlyc3RQYXJ0eUhvc3RDTkFN
RURvbWFpbihjb25zdCBTdHJpbmcmIGZpcnN0UGFydHlIb3N0KTsKKyAgICB2b2lkIHNldFRoaXJk
UGFydHlDTkFNRURvbWFpbkZvclRlc3RpbmcoV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mJiBk
b21haW4pIHsgbV90aGlyZFBhcnR5Q05BTUVEb21haW5Gb3JUZXN0aW5nID0gV1RGTW92ZShkb21h
aW4pOyB9OworICAgIE9wdGlvbmFsPFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluPiB0aGlyZFBh
cnR5Q05BTUVEb21haW5Gb3JUZXN0aW5nKCkgY29uc3QgeyByZXR1cm4gbV90aGlyZFBhcnR5Q05B
TUVEb21haW5Gb3JUZXN0aW5nOyB9CisgICAgdm9pZCByZXNldENOQU1FRG9tYWluRGF0YSgpOwog
ICAgIHZvaWQgZGVzdHJveVJlc291cmNlTG9hZFN0YXRpc3RpY3MoQ29tcGxldGlvbkhhbmRsZXI8
dm9pZCgpPiYmKTsKICAgICB2b2lkIGZsdXNoQW5kRGVzdHJveVBlcnNpc3RlbnRTdG9yZShDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogI2VuZGlmCkBAIC0xNjYsNiArMTczLDkgQEAgcHJv
dGVjdGVkOgogICAgIFdlYkNvcmU6OlNhbWVTaXRlU3RyaWN0RW5mb3JjZW1lbnRFbmFibGVkIG1f
c2FtZVNpdGVTdHJpY3RFbmZvcmNlbWVudEVuYWJsZWQgeyBXZWJDb3JlOjpTYW1lU2l0ZVN0cmlj
dEVuZm9yY2VtZW50RW5hYmxlZDo6Tm8gfTsKICAgICBXZWJDb3JlOjpGaXJzdFBhcnR5V2Vic2l0
ZURhdGFSZW1vdmFsTW9kZSBtX2ZpcnN0UGFydHlXZWJzaXRlRGF0YVJlbW92YWxNb2RlIHsgV2Vi
Q29yZTo6Rmlyc3RQYXJ0eVdlYnNpdGVEYXRhUmVtb3ZhbE1vZGU6OkFsbEJ1dENvb2tpZXMgfTsK
ICAgICBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiBtX3N0YW5kYWxvbmVBcHBsaWNhdGlvbkRv
bWFpbjsKKyAgICBXZWJDb3JlOjpDTkFNRUNsb2FraW5nTWl0aWdhdGlvbkVuYWJsZWQgbV9jbmFt
ZUNsb2FraW5nTWl0aWdhdGlvbkVuYWJsZWQgeyBXZWJDb3JlOjpDTkFNRUNsb2FraW5nTWl0aWdh
dGlvbkVuYWJsZWQ6Ok5vIH07CisgICAgSGFzaE1hcDxTdHJpbmcsIFdlYkNvcmU6OlJlZ2lzdHJh
YmxlRG9tYWluPiBtX2ZpcnN0UGFydHlIb3N0Q05BTUVEb21haW5zOworICAgIE9wdGlvbmFsPFdl
YkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluPiBtX3RoaXJkUGFydHlDTkFNRURvbWFpbkZvclRlc3Rp
bmc7CiAjZW5kaWYKICAgICBib29sIG1faXNTdGFsZVdoaWxlUmV2YWxpZGF0ZUVuYWJsZWQgeyBm
YWxzZSB9OwogICAgIFVuaXF1ZVJlZjxBZENsaWNrQXR0cmlidXRpb25NYW5hZ2VyPiBtX2FkQ2xp
Y2tBdHRyaWJ1dGlvbjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
Y29jb2EvTmV0d29ya0RhdGFUYXNrQ29jb2EuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvY29jb2EvTmV0d29ya0RhdGFUYXNrQ29jb2EuaAppbmRleCAyYzFkODhjYWNjM2U5OTk0ZmE5
YzgyOTYxMjg4MTRlYzllOWE2NzNjLi4wZjUxYzgzNTI4ZTJhNzBiOTgxNDMzYmY3YjE5ZTU3OWVj
OTc2N2IxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05l
dHdvcmtEYXRhVGFza0NvY29hLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9j
b2NvYS9OZXR3b3JrRGF0YVRhc2tDb2NvYS5oCkBAIC0zNCw2ICszNCwxMCBAQAogT0JKQ19DTEFT
UyBOU0hUVFBDb29raWVTdG9yYWdlOwogT0JKQ19DTEFTUyBOU1VSTFNlc3Npb25EYXRhVGFzazsK
IAorbmFtZXNwYWNlIFdlYkNvcmUgeworY2xhc3MgUmVnaXN0cmFibGVEb21haW47Cit9CisKIG5h
bWVzcGFjZSBXZWJLaXQgewogCiBjbGFzcyBEb3dubG9hZDsKQEAgLTg3LDYgKzkxLDEwIEBAIHBy
aXZhdGU6CiAKICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQogICAgIHN0YXRp
YyBOU0hUVFBDb29raWVTdG9yYWdlICpzdGF0ZWxlc3NDb29raWVTdG9yYWdlKCk7CisjaWYgSEFW
RShDRk5FVFdPUktfQ05BTUVfQU5EX0NPT0tJRV9UUkFOU0ZPUk1fU1BJKQorICAgIHZvaWQgdXBk
YXRlRmlyc3RQYXJ0eUluZm9Gb3JUYXNrQW5kU2Vzc2lvbihjb25zdCBVUkwmKTsKKyAgICB2b2lk
IGFwcGx5Q29va2llUG9saWN5Rm9yVGhpcmRQYXJ0eUNOQU1FQ2xvYWtpbmcoY29uc3QgV2ViQ29y
ZTo6UmVzb3VyY2VSZXF1ZXN0Jik7CisjZW5kaWYKICAgICB2b2lkIGJsb2NrQ29va2llcygpOwog
ICAgIHZvaWQgdW5ibG9ja0Nvb2tpZXMoKTsKICAgICBib29sIG5lZWRzRmlyc3RQYXJ0eUNvb2tp
ZUJsb2NraW5nTGF0Y2hNb2RlUXVpcmsoY29uc3QgVVJMJiBmaXJzdFBhcnR5VVJMLCBjb25zdCBV
UkwmIHJlcXVlc3RVUkwsIGNvbnN0IFVSTCYgcmVkaXJlY3RpbmdVUkwpIGNvbnN0OwpAQCAtMTAy
LDYgKzExMCwxMCBAQCBwcml2YXRlOgogCiAjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElT
VElDUykKICAgICBib29sIG1faGFzQmVlblNldFRvVXNlU3RhdGVsZXNzQ29va2llU3RvcmFnZSB7
IGZhbHNlIH07CisjaWYgSEFWRShDRk5FVFdPUktfQ05BTUVfQU5EX0NPT0tJRV9UUkFOU0ZPUk1f
U1BJKQorICAgIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIG1fZmlyc3RQYXJ0eVJlZ2lzdHJh
YmxlRG9tYWluOworICAgIFNlY29uZHMgbV9hZ2VDYXBGb3JDTkFNRUNsb2FrZWRDb29raWVzIHsg
MjRfaCAqIDcgfTsKKyNlbmRpZgogI2VuZGlmCiAKICAgICBib29sIG1faXNGb3JNYWluUmVzb3Vy
Y2VOYXZpZ2F0aW9uRm9yQW55RnJhbWUgeyBmYWxzZSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrRGF0YVRhc2tDb2NvYS5tbSBiL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya0RhdGFUYXNrQ29jb2EubW0KaW5k
ZXggNzdiN2QxMzQ1NDRjMTQ0NjJkZmQ4YWUyZjAyZjgzY2Y5ZTM3ZDYwNC4uMjFlZGVhOTM4ZmZm
NmZmY2FmYjhhNGM4YmZkNDAwNjNmMjZlYzg4ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrRGF0YVRhc2tDb2NvYS5tbQorKysgYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtEYXRhVGFza0NvY29hLm1tCkBAIC0z
OCw2ICszOCw3IEBACiAjaW1wb3J0IDxXZWJDb3JlL0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLmg+
CiAjaW1wb3J0IDxXZWJDb3JlL05ldHdvcmtTdG9yYWdlU2Vzc2lvbi5oPgogI2ltcG9ydCA8V2Vi
Q29yZS9Ob3RJbXBsZW1lbnRlZC5oPgorI2ltcG9ydCA8V2ViQ29yZS9SZWdpc3RyYWJsZURvbWFp
bi5oPgogI2ltcG9ydCA8V2ViQ29yZS9SZXNvdXJjZVJlcXVlc3QuaD4KICNpbXBvcnQgPHBhbC9z
cGkvY2YvQ0ZOZXR3b3JrU1BJLmg+CiAjaW1wb3J0IDx3dGYvQmxvY2tQdHIuaD4KQEAgLTEyOSw2
ICsxMzAsODYgQEAgTlNIVFRQQ29va2llU3RvcmFnZSAqTmV0d29ya0RhdGFUYXNrQ29jb2E6OnN0
YXRlbGVzc0Nvb2tpZVN0b3JhZ2UoKQogICAgIHJldHVybiBzdGF0ZWxlc3NDb29raWVTdG9yYWdl
LmdldCgpLmdldCgpOwogfQogCisjaWYgSEFWRShDRk5FVFdPUktfQ05BTUVfQU5EX0NPT0tJRV9U
UkFOU0ZPUk1fU1BJKQorc3RhdGljIGJvb2wgaGFzQ05BTUVBbmRDb29raWVUcmFuc2Zvcm1TUEko
TlNVUkxTZXNzaW9uRGF0YVRhc2sqIHRhc2spCit7CisgICAgcmV0dXJuIFt0YXNrIHJlc3BvbmRz
VG9TZWxlY3RvcjpAc2VsZWN0b3IoX2Nvb2tpZVRyYW5zZm9ybUNhbGxiYWNrKV0KKyAgICAgICAg
JiYgW3Rhc2sgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3RvcihfcmVzb2x2ZWRDTkFNRUNoYWlu
KV07Cit9CisKK3N0YXRpYyBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiBsYXN0Q05BTUVEb21h
aW4oTlNBcnJheTxOU1N0cmluZyo+KiBjbmFtZXMpCit7CisgICAgaWYgKGF1dG8qIGxhc3RSZXNv
bHZlZENOQU1FSW5DaGFpbiA9IFtjbmFtZXMgbGFzdE9iamVjdF0pIHsKKyAgICAgICAgYXV0byBj
bmFtZSA9IFN0cmluZyhsYXN0UmVzb2x2ZWRDTkFNRUluQ2hhaW4pOworICAgICAgICBpZiAoY25h
bWUuZW5kc1dpdGgoJy4nKSkKKyAgICAgICAgICAgIGNuYW1lLnJlbW92ZShjbmFtZS5sZW5ndGgo
KSAtIDEpOworICAgICAgICByZXR1cm4gV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW46OnVuY2hl
Y2tlZENyZWF0ZUZyb21Ib3N0KGNuYW1lKTsKKyAgICB9CisKKyAgICByZXR1cm4gV2ViQ29yZTo6
UmVnaXN0cmFibGVEb21haW46OnVuY2hlY2tlZENyZWF0ZUZyb21Ib3N0KGVtcHR5U3RyaW5nKCkp
OworfQorCit2b2lkIE5ldHdvcmtEYXRhVGFza0NvY29hOjp1cGRhdGVGaXJzdFBhcnR5SW5mb0Zv
clRhc2tBbmRTZXNzaW9uKGNvbnN0IFVSTCYgcmVxdWVzdFVSTCkKK3sKKyAgICBpZiAoIWhhc0NO
QU1FQW5kQ29va2llVHJhbnNmb3JtU1BJKG1fdGFzay5nZXQoKSkgfHwgIW5ldHdvcmtTZXNzaW9u
KCkgfHwgIW5ldHdvcmtTZXNzaW9uKCktPm5ldHdvcmtTdG9yYWdlU2Vzc2lvbigpIHx8ICFuZXR3
b3JrU2Vzc2lvbigpLT5uZXR3b3JrU3RvcmFnZVNlc3Npb24oKS0+cmVzb3VyY2VMb2FkU3RhdGlz
dGljc0VuYWJsZWQoKSB8fCAhbmV0d29ya1Nlc3Npb24oKS0+Y25hbWVDbG9ha2luZ01pdGlnYXRp
b25FbmFibGVkKCkgfHwgcmVxdWVzdFVSTC5ob3N0KCkuaXNFbXB0eSgpKQorICAgICAgICByZXR1
cm47CisKKyAgICBhdXRvJiYgY25hbWVEb21haW4gPSBsYXN0Q05BTUVEb21haW4oW21fdGFzayBf
cmVzb2x2ZWRDTkFNRUNoYWluXSk7CisgICAgaWYgKCFjbmFtZURvbWFpbi5pc0VtcHR5KCkgJiYg
Y25hbWVEb21haW4gIT0gbV9maXJzdFBhcnR5UmVnaXN0cmFibGVEb21haW4pCisgICAgICAgIG5l
dHdvcmtTZXNzaW9uKCktPnNldEZpcnN0UGFydHlIb3N0Q05BTUVEb21haW4ocmVxdWVzdFVSTC5o
b3N0KCkudG9TdHJpbmcoKSwgV1RGTW92ZShjbmFtZURvbWFpbikpOworfQorCit2b2lkIE5ldHdv
cmtEYXRhVGFza0NvY29hOjphcHBseUNvb2tpZVBvbGljeUZvclRoaXJkUGFydHlDTkFNRUNsb2Fr
aW5nKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCkKK3sKKyAgICBpZiAo
IWhhc0NOQU1FQW5kQ29va2llVHJhbnNmb3JtU1BJKG1fdGFzay5nZXQoKSkgfHwgaXNUb3BMZXZl
bE5hdmlnYXRpb24oKSB8fCAhbmV0d29ya1Nlc3Npb24oKSB8fCAhbmV0d29ya1Nlc3Npb24oKS0+
bmV0d29ya1N0b3JhZ2VTZXNzaW9uKCkgfHwgIW5ldHdvcmtTZXNzaW9uKCktPm5ldHdvcmtTdG9y
YWdlU2Vzc2lvbigpLT5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzRW5hYmxlZCgpIHx8ICFuZXR3b3Jr
U2Vzc2lvbigpLT5jbmFtZUNsb2FraW5nTWl0aWdhdGlvbkVuYWJsZWQoKSkKKyAgICAgICAgcmV0
dXJuOworCisgICAgaWYgKGlzVGhpcmRQYXJ0eVJlcXVlc3QocmVxdWVzdCkpIHsKKyAgICAgICAg
bV90YXNrLmdldCgpLl9jb29raWVUcmFuc2Zvcm1DYWxsYmFjayA9IG5pbDsKKyAgICAgICAgcmV0
dXJuOworICAgIH0KKworICAgIC8vIENhcCBleHBpcnkgb2YgaW5jb21pbmcgY29va2llcyBpbiBy
ZXNwb25zZSBpZiBpdCBpcyBhIHNhbWUtc2l0ZQorICAgIC8vIHN1YnJlc291cmNlIGJ1dCBpdCBy
ZXNvbHZlcyB0byBhIGRpZmZlcmVudCBDTkFNRSB0aGFuIHRoZSB0b3AKKyAgICAvLyBzaXRlIHJl
cXVlc3QsIGEuay5hLiB0aGlyZC1wYXJ0eSBDTkFNRSBjbG9ha2luZy4KKyAgICBhdXRvIGZpcnN0
UGFydHlVUkwgPSByZXF1ZXN0LmZpcnN0UGFydHlGb3JDb29raWVzKCk7CisgICAgYXV0byBmaXJz
dFBhcnR5SG9zdENOQU1FID0gbmV0d29ya1Nlc3Npb24oKS0+Zmlyc3RQYXJ0eUhvc3RDTkFNRURv
bWFpbihmaXJzdFBhcnR5VVJMLmhvc3QoKS50b1N0cmluZygpKTsKKworICAgIG1fdGFzay5nZXQo
KS5fY29va2llVHJhbnNmb3JtQ2FsbGJhY2sgPSBtYWtlQmxvY2tQdHIoW3JlcXVlc3RVUkwgPSBj
cm9zc1RocmVhZENvcHkocmVxdWVzdC51cmwoKSksIGZpcnN0UGFydHlVUkwgPSBjcm9zc1RocmVh
ZENvcHkoZmlyc3RQYXJ0eVVSTCksIGZpcnN0UGFydHlIb3N0Q05BTUUgPSBjcm9zc1RocmVhZENv
cHkoZmlyc3RQYXJ0eUhvc3RDTkFNRSksIHRoaXJkUGFydHlDTkFNRURvbWFpbkZvclRlc3Rpbmcg
PSBjcm9zc1RocmVhZENvcHkobmV0d29ya1Nlc3Npb24oKS0+dGhpcmRQYXJ0eUNOQU1FRG9tYWlu
Rm9yVGVzdGluZygpKSwgYWdlQ2FwRm9yQ05BTUVDbG9ha2VkQ29va2llcyA9IGNyb3NzVGhyZWFk
Q29weShtX2FnZUNhcEZvckNOQU1FQ2xvYWtlZENvb2tpZXMpLCB0YXNrID0gbV90YXNrXSAoTlNB
cnJheTxOU0hUVFBDb29raWUqPiAqY29va2llc1NldEluUmVzcG9uc2UpIC0+IE5TQXJyYXk8TlNI
VFRQQ29va2llKj4gKiB7CisgICAgICAgIGlmICghW2Nvb2tpZXNTZXRJblJlc3BvbnNlIGNvdW50
XSkKKyAgICAgICAgICAgIHJldHVybiBjb29raWVzU2V0SW5SZXNwb25zZTsKKworICAgICAgICBh
dXRvIGNuYW1lRG9tYWluID0gbGFzdENOQU1FRG9tYWluKFt0YXNrIF9yZXNvbHZlZENOQU1FQ2hh
aW5dKTsKKyAgICAgICAgaWYgKGNuYW1lRG9tYWluLmlzRW1wdHkoKSkgeworICAgICAgICAgICAg
aWYgKCF0aGlyZFBhcnR5Q05BTUVEb21haW5Gb3JUZXN0aW5nKQorICAgICAgICAgICAgICAgIHJl
dHVybiBjb29raWVzU2V0SW5SZXNwb25zZTsKKyAgICAgICAgICAgIGNuYW1lRG9tYWluID0gKnRo
aXJkUGFydHlDTkFNRURvbWFpbkZvclRlc3Rpbmc7CisgICAgICAgIH0KKworCisgICAgICAgIC8v
IENOQU1FIGNsb2FraW5nIGlzIGEgZmlyc3QtcGFydHkgc3ViIHJlc291cmNlIHRoYXQgcmVzb2x2
ZXMKKyAgICAgICAgLy8gdGhyb3VnaCBhIENOQU1FIHRoYXQgZGlmZmVycyBmcm9tIHRoZSBmaXJz
dC1wYXJ0eSBkb21haW4gYW5kCisgICAgICAgIC8vIGFsc28gZGlmZmVycyBmcm9tIHRoZSB0b3Ag
ZnJhbWUgaG9zdCdzIENOQU1FLCBpZiBvbmUgZXhpc3RzLgorICAgICAgICBpZiAoIWNuYW1lRG9t
YWluLm1hdGNoZXMoZmlyc3RQYXJ0eVVSTCkgJiYgKCFmaXJzdFBhcnR5SG9zdENOQU1FIHx8IGNu
YW1lRG9tYWluICE9ICpmaXJzdFBhcnR5SG9zdENOQU1FKSkgeworCisgICAgICAgICAgICBOU1VJ
bnRlZ2VyIGNvdW50ID0gW2Nvb2tpZXNTZXRJblJlc3BvbnNlIGNvdW50XTsKKyAgICAgICAgICAg
IC8vIERvbid0IHVzZSBSZXRhaW5QdHIgaGVyZS4gVGhpcyBhcnJheSBoYXMgdG8gYmUgcmV0YWlu
ZWQgYW5kCisgICAgICAgICAgICAvLyBhdXRvIHJlbGVhc2VkIHRvIG5vdCBiZSByZWxlYXNlZCBi
ZWZvcmUgcmV0dXJuZWQgdG8gdGhlIGNvZGUKKyAgICAgICAgICAgIC8vIGV4ZWN1dGluZyB0aGUg
YmxvY2suCisgICAgICAgICAgICBhdXRvKiBjYXBwZWRDb29raWVzID0gW1tOU011dGFibGVBcnJh
eSBhbGxvY10gaW5pdFdpdGhDYXBhY2l0eTpjb3VudF07CisgICAgICAgICAgICBmb3IgKE5TVUlu
dGVnZXIgaSA9IDA7IGkgPCBjb3VudDsgKytpKSB7CisgICAgICAgICAgICAgICAgTlNIVFRQQ29v
a2llICpjb29raWUgPSAoTlNIVFRQQ29va2llICopW2Nvb2tpZXNTZXRJblJlc3BvbnNlIG9iamVj
dEF0SW5kZXg6aV07CisgICAgICAgICAgICAgICAgY29va2llID0gV2ViQ29yZTo6TmV0d29ya1N0
b3JhZ2VTZXNzaW9uOjpjYXBFeHBpcnlPZlBlcnNpc3RlbnRDb29raWUoY29va2llLCBhZ2VDYXBG
b3JDTkFNRUNsb2FrZWRDb29raWVzKTsKKyAgICAgICAgICAgICAgICBbY2FwcGVkQ29va2llcyBh
ZGRPYmplY3Q6Y29va2llXTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHJldHVybiBjYXBw
ZWRDb29raWVzOworICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIGNvb2tpZXNTZXRJblJlc3Bv
bnNlOworICAgIH0pLmdldCgpOworfQorI2VuZGlmCisKIHZvaWQgTmV0d29ya0RhdGFUYXNrQ29j
b2E6OmJsb2NrQ29va2llcygpCiB7CiAgICAgQVNTRVJUKGhhc1Byb2Nlc3NQcml2aWxlZ2UoUHJv
Y2Vzc1ByaXZpbGVnZTo6Q2FuQWNjZXNzUmF3Q29va2llcykpOwpAQCAtMjYzLDYgKzM0NCw5IEBA
IE5ldHdvcmtEYXRhVGFza0NvY29hOjpOZXR3b3JrRGF0YVRhc2tDb2NvYShOZXR3b3JrU2Vzc2lv
biYgc2Vzc2lvbiwgTmV0d29ya0RhdGFUCiAgICAgfQogCiAjaWYgRU5BQkxFKFJFU09VUkNFX0xP
QURfU1RBVElTVElDUykKKyNpZiBIQVZFKENGTkVUV09SS19DTkFNRV9BTkRfQ09PS0lFX1RSQU5T
Rk9STV9TUEkpCisgICAgYXBwbHlDb29raWVQb2xpY3lGb3JUaGlyZFBhcnR5Q05BTUVDbG9ha2lu
ZyhyZXF1ZXN0KTsKKyNlbmRpZgogICAgIGlmIChzaG91bGRCbG9ja0Nvb2tpZXMpIHsKICNpZiAh
UkVMRUFTRV9MT0dfRElTQUJMRUQKICAgICAgICAgaWYgKG1fc2Vzc2lvbi0+c2hvdWxkTG9nQ29v
a2llSW5mb3JtYXRpb24oKSkKQEAgLTM0NSw2ICs0MjksMTAgQEAgdm9pZCBOZXR3b3JrRGF0YVRh
c2tDb2NvYTo6ZGlkUmVjZWl2ZURhdGEoUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiBkYXRh
KQogdm9pZCBOZXR3b3JrRGF0YVRhc2tDb2NvYTo6ZGlkUmVjZWl2ZVJlc3BvbnNlKFdlYkNvcmU6
OlJlc291cmNlUmVzcG9uc2UmJiByZXNwb25zZSwgTmVnb3RpYXRlZExlZ2FjeVRMUyBuZWdvdGlh
dGVkTGVnYWN5VExTLCBXZWJLaXQ6OlJlc3BvbnNlQ29tcGxldGlvbkhhbmRsZXImJiBjb21wbGV0
aW9uSGFuZGxlcikKIHsKICAgICBXVEZFbWl0U2lnbnBvc3QobV90YXNrLmdldCgpLCAiRGF0YVRh
c2siLCAicmVjZWl2ZWQgcmVzcG9uc2UgaGVhZGVycyIpOworI2lmIEhBVkUoQ0ZORVRXT1JLX0NO
QU1FX0FORF9DT09LSUVfVFJBTlNGT1JNX1NQSSkKKyAgICBpZiAoaXNUb3BMZXZlbE5hdmlnYXRp
b24oKSkKKyAgICAgICAgdXBkYXRlRmlyc3RQYXJ0eUluZm9Gb3JUYXNrQW5kU2Vzc2lvbihyZXNw
b25zZS51cmwoKSk7CisjZW5kaWYKICAgICBOZXR3b3JrRGF0YVRhc2s6OmRpZFJlY2VpdmVSZXNw
b25zZShXVEZNb3ZlKHJlc3BvbnNlKSwgbmVnb3RpYXRlZExlZ2FjeVRMUywgV1RGTW92ZShjb21w
bGV0aW9uSGFuZGxlcikpOwogfQogCkBAIC0zOTksNiArNDg3LDkgQEAgdm9pZCBOZXR3b3JrRGF0
YVRhc2tDb2NvYTo6d2lsbFBlcmZvcm1IVFRQUmVkaXJlY3Rpb24oV2ViQ29yZTo6UmVzb3VyY2VS
ZXNwb25zZSYKICAgICAgICAgcmVxdWVzdC5zZXRGaXJzdFBhcnR5Rm9yQ29va2llcyhyZXF1ZXN0
LnVybCgpKTsKIAogI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCisjaWYgSEFW
RShDRk5FVFdPUktfQ05BTUVfQU5EX0NPT0tJRV9UUkFOU0ZPUk1fU1BJKQorICAgIGFwcGx5Q29v
a2llUG9saWN5Rm9yVGhpcmRQYXJ0eUNOQU1FQ2xvYWtpbmcocmVxdWVzdCk7CisjZW5kaWYKICAg
ICBpZiAoIW1faGFzQmVlblNldFRvVXNlU3RhdGVsZXNzQ29va2llU3RvcmFnZSkgewogICAgICAg
ICBpZiAobV9zdG9yZWRDcmVkZW50aWFsc1BvbGljeSA9PSBXZWJDb3JlOjpTdG9yZWRDcmVkZW50
aWFsc1BvbGljeTo6RXBoZW1lcmFsU3RhdGVsZXNzCiAgICAgICAgICAgICB8fCAobV9zZXNzaW9u
LT5uZXR3b3JrU3RvcmFnZVNlc3Npb24oKSAmJiBtX3Nlc3Npb24tPm5ldHdvcmtTdG9yYWdlU2Vz
c2lvbigpLT5zaG91bGRCbG9ja0Nvb2tpZXMocmVxdWVzdCwgbV9mcmFtZUlELCBtX3BhZ2VJRCwg
bV9zaG91bGRSZWxheFRoaXJkUGFydHlDb29raWVCbG9ja2luZykpKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9TaGFyZWQvUmVzb3VyY2VMb2FkU3RhdGlzdGljc1BhcmFtZXRlcnMuaCBiL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NQYXJhbWV0ZXJzLmgKaW5k
ZXggNjBkZTM1ZjZhZTk1N2Q3MDY3NTk0OTY0NzNjZTM1MTY0MjQxZTJlYi4uYWNiMzRlYWIxMTY1
N2MwMzNjNTJhZTNhZWIwMTg1ODI1ZTBkNzc4YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9T
aGFyZWQvUmVzb3VyY2VMb2FkU3RhdGlzdGljc1BhcmFtZXRlcnMuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGFyYW1ldGVycy5oCkBAIC00NSw2ICs0
NSw3IEBAIHN0cnVjdCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGFyYW1ldGVycyB7CiAjaWYgRU5B
QkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKICAgICBXZWJDb3JlOjpUaGlyZFBhcnR5Q29v
a2llQmxvY2tpbmdNb2RlIHRoaXJkUGFydHlDb29raWVCbG9ja2luZ01vZGUgeyBXZWJDb3JlOjpU
aGlyZFBhcnR5Q29va2llQmxvY2tpbmdNb2RlOjpBbGwgfTsKICAgICBXZWJDb3JlOjpTYW1lU2l0
ZVN0cmljdEVuZm9yY2VtZW50RW5hYmxlZCBzYW1lU2l0ZVN0cmljdEVuZm9yY2VtZW50RW5hYmxl
ZCB7IFdlYkNvcmU6OlNhbWVTaXRlU3RyaWN0RW5mb3JjZW1lbnRFbmFibGVkOjpObyB9OworICAg
IFdlYkNvcmU6OkNOQU1FQ2xvYWtpbmdNaXRpZ2F0aW9uRW5hYmxlZCBjbmFtZUNsb2FraW5nTWl0
aWdhdGlvbkVuYWJsZWQgeyBXZWJDb3JlOjpDTkFNRUNsb2FraW5nTWl0aWdhdGlvbkVuYWJsZWQ6
Ok5vIH07CiAjZW5kaWYKICAgICBXZWJDb3JlOjpGaXJzdFBhcnR5V2Vic2l0ZURhdGFSZW1vdmFs
TW9kZSBmaXJzdFBhcnR5V2Vic2l0ZURhdGFSZW1vdmFsTW9kZSB7IFdlYkNvcmU6OkZpcnN0UGFy
dHlXZWJzaXRlRGF0YVJlbW92YWxNb2RlOjpBbGxCdXRDb29raWVzIH07CiAgICAgV2ViQ29yZTo6
UmVnaXN0cmFibGVEb21haW4gc3RhbmRhbG9uZUFwcGxpY2F0aW9uRG9tYWluOwpAQCAtNjMsNiAr
NjQsNyBAQCBzdHJ1Y3QgUmVzb3VyY2VMb2FkU3RhdGlzdGljc1BhcmFtZXRlcnMgewogI2lmIEVO
QUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCiAgICAgICAgIGVuY29kZXIgPDwgdGhpcmRQ
YXJ0eUNvb2tpZUJsb2NraW5nTW9kZTsKICAgICAgICAgZW5jb2RlciA8PCBzYW1lU2l0ZVN0cmlj
dEVuZm9yY2VtZW50RW5hYmxlZDsKKyAgICAgICAgZW5jb2RlciA8PCBjbmFtZUNsb2FraW5nTWl0
aWdhdGlvbkVuYWJsZWQ7CiAjZW5kaWYKICAgICAgICAgZW5jb2RlciA8PCBmaXJzdFBhcnR5V2Vi
c2l0ZURhdGFSZW1vdmFsTW9kZTsKICAgICAgICAgZW5jb2RlciA8PCBzdGFuZGFsb25lQXBwbGlj
YXRpb25Eb21haW47CkBAIC0xMTcsNiArMTE5LDExIEBAIHN0cnVjdCBSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzUGFyYW1ldGVycyB7CiAgICAgICAgIGRlY29kZXIgPj4gc2FtZVNpdGVTdHJpY3RFbmZv
cmNlbWVudEVuYWJsZWQ7CiAgICAgICAgIGlmICghc2FtZVNpdGVTdHJpY3RFbmZvcmNlbWVudEVu
YWJsZWQpCiAgICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAgICAgIE9wdGlv
bmFsPFdlYkNvcmU6OkNOQU1FQ2xvYWtpbmdNaXRpZ2F0aW9uRW5hYmxlZD4gY25hbWVDbG9ha2lu
Z01pdGlnYXRpb25FbmFibGVkOworICAgICAgICBkZWNvZGVyID4+IGNuYW1lQ2xvYWtpbmdNaXRp
Z2F0aW9uRW5hYmxlZDsKKyAgICAgICAgaWYgKCFjbmFtZUNsb2FraW5nTWl0aWdhdGlvbkVuYWJs
ZWQpCisgICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogI2VuZGlmCiAKICAgICAgICAg
T3B0aW9uYWw8V2ViQ29yZTo6Rmlyc3RQYXJ0eVdlYnNpdGVEYXRhUmVtb3ZhbE1vZGU+IGZpcnN0
UGFydHlXZWJzaXRlRGF0YVJlbW92YWxNb2RlOwpAQCAtMTUwLDYgKzE1Nyw3IEBAIHN0cnVjdCBS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGFyYW1ldGVycyB7CiAjaWYgRU5BQkxFKFJFU09VUkNFX0xP
QURfU1RBVElTVElDUykKICAgICAgICAgICAgIFdURk1vdmUoKnRoaXJkUGFydHlDb29raWVCbG9j
a2luZ01vZGUpLAogICAgICAgICAgICAgV1RGTW92ZSgqc2FtZVNpdGVTdHJpY3RFbmZvcmNlbWVu
dEVuYWJsZWQpLAorICAgICAgICAgICAgV1RGTW92ZSgqY25hbWVDbG9ha2luZ01pdGlnYXRpb25F
bmFibGVkKSwKICNlbmRpZgogICAgICAgICAgICAgV1RGTW92ZSgqZmlyc3RQYXJ0eVdlYnNpdGVE
YXRhUmVtb3ZhbE1vZGUpLAogICAgICAgICAgICAgV1RGTW92ZSgqc3RhbmRhbG9uZUFwcGxpY2F0
aW9uRG9tYWluKSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlByZWZlcmVu
Y2VzLnlhbWwgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQcmVmZXJlbmNlcy55YW1sCmluZGV4
IDg4YWU2YWUyZDlhMzk3NDc2MWNiOTcyNDY0N2ZiMzYxM2RjYjU3NjIuLjlhYTlmMDYxMTQwMzc3
YjFmN2VjMTBmZjY0N2Q4NTljNDNkOWZlZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL1dlYlByZWZlcmVuY2VzLnlhbWwKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUHJl
ZmVyZW5jZXMueWFtbApAQCAtMjA1Niw2ICsyMDU2LDEzIEBAIElzU2FtZVNpdGVTdHJpY3RFbmZv
cmNlbWVudEVuYWJsZWQ6CiAgIGh1bWFuUmVhZGFibGVEZXNjcmlwdGlvbjogIkVuYWJsZSBTYW1l
U2l0ZSBzdHJpY3QgZW5mb3JjZW1lbnQgdG8gbWl0aWdhdGUgYm91bmNlIHRyYWNraW5nIgogICBj
YXRlZ29yeTogZXhwZXJpbWVudGFsCiAKK0lzQ05BTUVDbG9ha2luZ01pdGlnYXRpb25FbmFibGVk
OgorICB0eXBlOiBib29sCisgIGRlZmF1bHRWYWx1ZTogZmFsc2UKKyAgaHVtYW5SZWFkYWJsZU5h
bWU6ICJFbmFibGUgQ05BTUUgY2xvYWtpbmcgbWl0aWdhdGlvbiAoSVRQKSIKKyAgaHVtYW5SZWFk
YWJsZURlc2NyaXB0aW9uOiAiRW5hYmxlIHRoaXJkLXBhcnR5IENOQU1FIGNsb2FraW5nIG1pdGln
YXRpb24gd2hlbiBJbnRlbGxpZ2VudCBUcmFja2luZyBQcmV2ZW50aW9uIGlzIGVuYWJsZWQiCisg
IGNhdGVnb3J5OiBleHBlcmltZW50YWwKKwogSXNMb2dnZWRJbkFQSUVuYWJsZWQ6CiAgICAgdHlw
ZTogYm9vbAogICAgIGRlZmF1bHRWYWx1ZTogZmFsc2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9DL1dLV2Vic2l0ZURhdGFTdG9yZVJlZi5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1dlYnNpdGVEYXRhU3RvcmVSZWYuY3BwCmluZGV4IDgwMGU3
NTQ5ZWExNzk2ZjNlN2RiMTM1ZDZiMTcwNGQwZDhmYjk2M2QuLmYzNTYzZTk0NDFjZTZiMTRiNDJj
ZmNlODVmMTlkOWQ5MjkwMGQzNTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9DL1dLV2Vic2l0ZURhdGFTdG9yZVJlZi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0MvV0tXZWJzaXRlRGF0YVN0b3JlUmVmLmNwcApAQCAtNjI4LDYgKzYyOCwyOCBA
QCB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZVNldFJlc291cmNlTG9hZFN0YXRpc3RpY3NUb1NhbWVT
aXRlU3RyaWN0Q29va2llc0ZvclRlc3RpbgogI2VuZGlmCiB9CiAKK3ZvaWQgV0tXZWJzaXRlRGF0
YVN0b3JlU2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0ZpcnN0UGFydHlIb3N0Q05BTUVEb21haW5G
b3JUZXN0aW5nKFdLV2Vic2l0ZURhdGFTdG9yZVJlZiBkYXRhU3RvcmVSZWYsIFdLU3RyaW5nUmVm
IGZpcnN0UGFydHlVUkxTdHJpbmcsIFdLU3RyaW5nUmVmIGNuYW1lVVJMU3RyaW5nLCB2b2lkKiBj
b250ZXh0LCBXS1dlYnNpdGVEYXRhU3RvcmVTZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRmlyc3RQ
YXJ0eUhvc3RDTkFNRURvbWFpbkZvclRlc3RpbmdGdW5jdGlvbiBjb21wbGV0aW9uSGFuZGxlcikK
K3sKKyNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQorICAgIFdlYktpdDo6dG9J
bXBsKGRhdGFTdG9yZVJlZiktPnNldFJlc291cmNlTG9hZFN0YXRpc3RpY3NGaXJzdFBhcnR5SG9z
dENOQU1FRG9tYWluRm9yVGVzdGluZyhVUkwoVVJMKCksIFdlYktpdDo6dG9JbXBsKGZpcnN0UGFy
dHlVUkxTdHJpbmcpLT5zdHJpbmcoKSksIFVSTChVUkwoKSwgV2ViS2l0Ojp0b0ltcGwoY25hbWVV
UkxTdHJpbmcpLT5zdHJpbmcoKSksIFtjb250ZXh0LCBjb21wbGV0aW9uSGFuZGxlcl0geworICAg
ICAgICBjb21wbGV0aW9uSGFuZGxlcihjb250ZXh0KTsKKyAgICB9KTsKKyNlbHNlCisgICAgY29t
cGxldGlvbkhhbmRsZXIoY29udGV4dCk7CisjZW5kaWYKK30KKwordm9pZCBXS1dlYnNpdGVEYXRh
U3RvcmVTZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzVGhpcmRQYXJ0eUNOQU1FRG9tYWluRm9yVGVz
dGluZyhXS1dlYnNpdGVEYXRhU3RvcmVSZWYgZGF0YVN0b3JlUmVmLCBXS1N0cmluZ1JlZiBjbmFt
ZVVSTFN0cmluZywgdm9pZCogY29udGV4dCwgV0tXZWJzaXRlRGF0YVN0b3JlU2V0UmVzb3VyY2VM
b2FkU3RhdGlzdGljc1RoaXJkUGFydHlDTkFNRURvbWFpbkZvclRlc3RpbmdGdW5jdGlvbiBjb21w
bGV0aW9uSGFuZGxlcikKK3sKKyNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQor
ICAgIFdlYktpdDo6dG9JbXBsKGRhdGFTdG9yZVJlZiktPnNldFJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NUaGlyZFBhcnR5Q05BTUVEb21haW5Gb3JUZXN0aW5nKFVSTChVUkwoKSwgV2ViS2l0Ojp0b0lt
cGwoY25hbWVVUkxTdHJpbmcpLT5zdHJpbmcoKSksIFtjb250ZXh0LCBjb21wbGV0aW9uSGFuZGxl
cl0geworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihjb250ZXh0KTsKKyAgICB9KTsKKyNlbHNl
CisgICAgY29tcGxldGlvbkhhbmRsZXIoY29udGV4dCk7CisjZW5kaWYKK30KKwogdm9pZCBXS1dl
YnNpdGVEYXRhU3RvcmVTZXRBcHBCb3VuZERvbWFpbnNGb3JUZXN0aW5nKFdLQXJyYXlSZWYgb3Jp
Z2luVVJMc1JlZiwgdm9pZCogY29udGV4dCwgV0tXZWJzaXRlRGF0YVN0b3JlU2V0QXBwQm91bmRE
b21haW5zRm9yVGVzdGluZ0Z1bmN0aW9uIGNvbXBsZXRpb25IYW5kbGVyKQogewogI2lmIFBMQVRG
T1JNKENPQ09BKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tX
ZWJzaXRlRGF0YVN0b3JlUmVmLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1dl
YnNpdGVEYXRhU3RvcmVSZWYuaAppbmRleCBkOGI4ZDFmNDBiODY1NDM4YTI4ODE0MzgwOTdlYmMw
ZjBjN2UxZmRjLi5lYjgyZmFkNDQ2OGY2ZjM0N2IwYmQ4ZDQ2MjRmYzVhZDY1ZDc5OTk3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1dlYnNpdGVEYXRhU3RvcmVS
ZWYuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1dlYnNpdGVEYXRhU3Rv
cmVSZWYuaApAQCAtMTMwLDYgKzEzMCwxMCBAQCB0eXBlZGVmIHZvaWQgKCpXS1dlYnNpdGVEYXRh
U3RvcmVTZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRmlyc3RQYXJ0eVdlYnNpdGVEYXRhUgogV0tf
RVhQT1JUIHZvaWQgV0tXZWJzaXRlRGF0YVN0b3JlU2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0Zp
cnN0UGFydHlXZWJzaXRlRGF0YVJlbW92YWxNb2RlRm9yVGVzdGluZyhXS1dlYnNpdGVEYXRhU3Rv
cmVSZWYgZGF0YVN0b3JlUmVmLCBib29sIGVuYWJsZWQsIHZvaWQqIGNvbnRleHQsIFdLV2Vic2l0
ZURhdGFTdG9yZVNldFJlc291cmNlTG9hZFN0YXRpc3RpY3NGaXJzdFBhcnR5V2Vic2l0ZURhdGFS
ZW1vdmFsTW9kZUZvclRlc3RpbmdGdW5jdGlvbiBjb21wbGV0aW9uSGFuZGxlcik7CiB0eXBlZGVm
IHZvaWQgKCpXS1dlYnNpdGVEYXRhU3RvcmVTZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzVG9TYW1l
U2l0ZVN0cmljdENvb2tpZXNGb3JUZXN0aW5nRnVuY3Rpb24pKHZvaWQqIGZ1bmN0aW9uQ29udGV4
dCk7CiBXS19FWFBPUlQgdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVTZXRSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzVG9TYW1lU2l0ZVN0cmljdENvb2tpZXNGb3JUZXN0aW5nKFdLV2Vic2l0ZURhdGFTdG9y
ZVJlZiBkYXRhU3RvcmVSZWYsIFdLU3RyaW5nUmVmIGhvc3ROYW1lLCB2b2lkKiBjb250ZXh0LCBX
S1dlYnNpdGVEYXRhU3RvcmVTZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzVG9TYW1lU2l0ZVN0cmlj
dENvb2tpZXNGb3JUZXN0aW5nRnVuY3Rpb24gY29tcGxldGlvbkhhbmRsZXIpOwordHlwZWRlZiB2
b2lkICgqV0tXZWJzaXRlRGF0YVN0b3JlU2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0ZpcnN0UGFy
dHlIb3N0Q05BTUVEb21haW5Gb3JUZXN0aW5nRnVuY3Rpb24pKHZvaWQqIGZ1bmN0aW9uQ29udGV4
dCk7CitXS19FWFBPUlQgdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVTZXRSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzRmlyc3RQYXJ0eUhvc3RDTkFNRURvbWFpbkZvclRlc3RpbmcoV0tXZWJzaXRlRGF0YVN0
b3JlUmVmIGRhdGFTdG9yZVJlZiwgV0tTdHJpbmdSZWYgZmlyc3RQYXJ0eVVSTFN0cmluZywgV0tT
dHJpbmdSZWYgY25hbWVVUkxTdHJpbmcsIHZvaWQqIGNvbnRleHQsIFdLV2Vic2l0ZURhdGFTdG9y
ZVNldFJlc291cmNlTG9hZFN0YXRpc3RpY3NGaXJzdFBhcnR5SG9zdENOQU1FRG9tYWluRm9yVGVz
dGluZ0Z1bmN0aW9uIGNvbXBsZXRpb25IYW5kbGVyKTsKK3R5cGVkZWYgdm9pZCAoKldLV2Vic2l0
ZURhdGFTdG9yZVNldFJlc291cmNlTG9hZFN0YXRpc3RpY3NUaGlyZFBhcnR5Q05BTUVEb21haW5G
b3JUZXN0aW5nRnVuY3Rpb24pKHZvaWQqIGZ1bmN0aW9uQ29udGV4dCk7CitXS19FWFBPUlQgdm9p
ZCBXS1dlYnNpdGVEYXRhU3RvcmVTZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzVGhpcmRQYXJ0eUNO
QU1FRG9tYWluRm9yVGVzdGluZyhXS1dlYnNpdGVEYXRhU3RvcmVSZWYgZGF0YVN0b3JlUmVmLCBX
S1N0cmluZ1JlZiBjbmFtZVVSTFN0cmluZywgdm9pZCogY29udGV4dCwgV0tXZWJzaXRlRGF0YVN0
b3JlU2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc1RoaXJkUGFydHlDTkFNRURvbWFpbkZvclRlc3Rp
bmdGdW5jdGlvbiBjb21wbGV0aW9uSGFuZGxlcik7CiB0eXBlZGVmIHZvaWQgKCpXS1dlYnNpdGVE
YXRhU3RvcmVTZXRBcHBCb3VuZERvbWFpbnNGb3JUZXN0aW5nRnVuY3Rpb24pKHZvaWQqIGZ1bmN0
aW9uQ29udGV4dCk7CiBXS19FWFBPUlQgdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVTZXRBcHBCb3Vu
ZERvbWFpbnNGb3JUZXN0aW5nKFdLQXJyYXlSZWYgb3JpZ2luVVJMc1JlZiwgdm9pZCogY29udGV4
dCwgV0tXZWJzaXRlRGF0YVN0b3JlU2V0QXBwQm91bmREb21haW5zRm9yVGVzdGluZ0Z1bmN0aW9u
IGNvbXBsZXRpb25IYW5kbGVyKTsKIHR5cGVkZWYgdm9pZCAoKldLV2Vic2l0ZURhdGFTdG9yZVN0
YXRpc3RpY3NSZXNldFRvQ29uc2lzdGVudFN0YXRlRnVuY3Rpb24pKHZvaWQqIGZ1bmN0aW9uQ29u
dGV4dCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdv
cmtQcm9jZXNzUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3
b3JrUHJvY2Vzc1Byb3h5LmNwcAppbmRleCAyMjdjNWRjNGJjZDZmZDJjNTUyOTczMDljNmYzZTJh
OGY4YThmMjdiLi4xZmE5Mjk1NjlhMTAxMDljM2E3OGQ2ZWMwMmYyMDI2ZGE4ZDU3NDQyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJv
eHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nl
c3NQcm94eS5jcHAKQEAgLTExOTUsNiArMTE5NSwyNSBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzUHJv
eHk6OnNldFRvU2FtZVNpdGVTdHJpY3RDb29raWVzRm9yVGVzdGluZyhQQUw6OlNlc3Npb25JRCBz
ZQogICAgIHNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3M6OlNldFRv
U2FtZVNpdGVTdHJpY3RDb29raWVzRm9yVGVzdGluZyhzZXNzaW9uSUQsIGRvbWFpbiksIFdURk1v
dmUoY29tcGxldGlvbkhhbmRsZXIpKTsKIH0KIAordm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5Ojpz
ZXRGaXJzdFBhcnR5SG9zdENOQU1FRG9tYWluRm9yVGVzdGluZyhQQUw6OlNlc3Npb25JRCBzZXNz
aW9uSUQsIGNvbnN0IFN0cmluZyYgZmlyc3RQYXJ0eUhvc3QsIGNvbnN0IFJlZ2lzdHJhYmxlRG9t
YWluJiBjbmFtZURvbWFpbiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25I
YW5kbGVyKQoreworICAgIGlmICghY2FuU2VuZE1lc3NhZ2UoKSkgeworICAgICAgICBjb21wbGV0
aW9uSGFuZGxlcigpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgc2VuZFdpdGhBc3lu
Y1JlcGx5KE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzczo6U2V0Rmlyc3RQYXJ0eUhvc3RDTkFNRURv
bWFpbkZvclRlc3Rpbmcoc2Vzc2lvbklELCBmaXJzdFBhcnR5SG9zdCwgY25hbWVEb21haW4pLCBX
VEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7Cit9CisKK3ZvaWQgTmV0d29ya1Byb2Nlc3NQcm94
eTo6c2V0VGhpcmRQYXJ0eUNOQU1FRG9tYWluRm9yVGVzdGluZyhQQUw6OlNlc3Npb25JRCBzZXNz
aW9uSUQsIGNvbnN0IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiBkb21haW4sIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBpZiAoIWNhblNl
bmRNZXNzYWdlKCkpIHsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKKyAgICAgICAgcmV0
dXJuOworICAgIH0KKworICAgIHNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6TmV0d29ya1By
b2Nlc3M6OlNldFRoaXJkUGFydHlDTkFNRURvbWFpbkZvclRlc3Rpbmcoc2Vzc2lvbklELCBkb21h
aW4pLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7Cit9CiB2b2lkIE5ldHdvcmtQcm9jZXNz
UHJveHk6OnNldERvbWFpbnNXaXRoVXNlckludGVyYWN0aW9uKEhhc2hTZXQ8V2ViQ29yZTo6UmVn
aXN0cmFibGVEb21haW4+JiYgZG9tYWlucykKIHsKICAgICBwcm9jZXNzUG9vbCgpLnNldERvbWFp
bnNXaXRoVXNlckludGVyYWN0aW9uKFdURk1vdmUoZG9tYWlucykpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmggYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuaAppbmRleCA4
NTQ1MDJjYmM2ZWRhNGE2MDBmYzgxYjFiYzJlMDAxYzY2MzhkYTQyLi5hNDA5NDA0MTY1MDg1YTI4
ZjYyODA1ODJmMWY0MDUyNGI3OTVkOTQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuaApAQCAtMTg1LDYgKzE4NSw4IEBA
IHB1YmxpYzoKICAgICB2b2lkIHNldFNob3VsZEVuYmxlU2FtZVNpdGVTdHJpY3RFbmZvcmNlbWVu
dEZvclRlc3RpbmcoUEFMOjpTZXNzaW9uSUQsIFdlYkNvcmU6OlNhbWVTaXRlU3RyaWN0RW5mb3Jj
ZW1lbnRFbmFibGVkLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogICAgIHZvaWQgc2V0
Rmlyc3RQYXJ0eVdlYnNpdGVEYXRhUmVtb3ZhbE1vZGVGb3JUZXN0aW5nKFBBTDo6U2Vzc2lvbklE
LCBXZWJDb3JlOjpGaXJzdFBhcnR5V2Vic2l0ZURhdGFSZW1vdmFsTW9kZSwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZCgpPiYmKTsKICAgICB2b2lkIHNldFRvU2FtZVNpdGVTdHJpY3RDb29raWVzRm9y
VGVzdGluZyhQQUw6OlNlc3Npb25JRCwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKCk+JiYpOworICAgIHZvaWQgc2V0Rmlyc3RQYXJ0eUhvc3RDTkFNRURv
bWFpbkZvclRlc3RpbmcoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFN0cmluZyYgZmlyc3RQYXJ0eUhv
c3QsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBjbmFtZURvbWFpbiwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZCgpPiYmKTsKKyAgICB2b2lkIHNldFRoaXJkUGFydHlDTkFNRURvbWFpbkZvclRlc3Rp
bmcoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKICAgICB2b2lkIHNldERvbWFpbnNXaXRoVXNlcklu
dGVyYWN0aW9uKEhhc2hTZXQ8V2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4+JiYpOwogI2VuZGlm
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNw
cCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcAppbmRleCA2MzNk
YmYyYTEwNDkxOTU1OTI2NDk5N2I3ODMxODdjYTUyMWY0ZDhjLi42ZDZiMzRkN2FmZGY0Y2U2NDA1
OWMwNmZkMWM4OGQ1MGFjNjg2Yzc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJQcm9jZXNzUG9vbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJv
Y2Vzc1Bvb2wuY3BwCkBAIC02MDEsNiArNjAxLDcgQEAgTmV0d29ya1Byb2Nlc3NQcm94eSYgV2Vi
UHJvY2Vzc1Bvb2w6OmVuc3VyZU5ldHdvcmtQcm9jZXNzKFdlYnNpdGVEYXRhU3RvcmUqIHdpdGgK
ICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQogICAgIFdlYkNvcmU6OlRoaXJk
UGFydHlDb29raWVCbG9ja2luZ01vZGUgdGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9kZSA9IFdl
YkNvcmU6OlRoaXJkUGFydHlDb29raWVCbG9ja2luZ01vZGU6OkFsbDsKICAgICBXZWJDb3JlOjpT
YW1lU2l0ZVN0cmljdEVuZm9yY2VtZW50RW5hYmxlZCBzYW1lU2l0ZVN0cmljdEVuZm9yY2VtZW50
RW5hYmxlZCA9IFdlYkNvcmU6OlNhbWVTaXRlU3RyaWN0RW5mb3JjZW1lbnRFbmFibGVkOjpObzsK
KyAgICBXZWJDb3JlOjpDTkFNRUNsb2FraW5nTWl0aWdhdGlvbkVuYWJsZWQgY25hbWVDbG9ha2lu
Z01pdGlnYXRpb25FbmFibGVkID0gV2ViQ29yZTo6Q05BTUVDbG9ha2luZ01pdGlnYXRpb25FbmFi
bGVkOjpObzsKICNlbmRpZgogICAgIFdlYkNvcmU6OkZpcnN0UGFydHlXZWJzaXRlRGF0YVJlbW92
YWxNb2RlIGZpcnN0UGFydHlXZWJzaXRlRGF0YVJlbW92YWxNb2RlID0gV2ViQ29yZTo6Rmlyc3RQ
YXJ0eVdlYnNpdGVEYXRhUmVtb3ZhbE1vZGU6OkFsbEJ1dENvb2tpZXM7CiAgICAgV2ViQ29yZTo6
UmVnaXN0cmFibGVEb21haW4gc3RhbmRhbG9uZUFwcGxpY2F0aW9uRG9tYWluOwpAQCAtNjM0LDYg
KzYzNSw3IEBAIE5ldHdvcmtQcm9jZXNzUHJveHkmIFdlYlByb2Nlc3NQb29sOjplbnN1cmVOZXR3
b3JrUHJvY2VzcyhXZWJzaXRlRGF0YVN0b3JlKiB3aXRoCiAjaWYgRU5BQkxFKFJFU09VUkNFX0xP
QURfU1RBVElTVElDUykKICAgICAgICAgICAgIHRoaXJkUGFydHlDb29raWVCbG9ja2luZ01vZGUg
PSBuZXR3b3JrU2Vzc2lvblBhcmFtZXRlcnMucmVzb3VyY2VMb2FkU3RhdGlzdGljc1BhcmFtZXRl
cnMudGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9kZTsKICAgICAgICAgICAgIHNhbWVTaXRlU3Ry
aWN0RW5mb3JjZW1lbnRFbmFibGVkID0gbmV0d29ya1Nlc3Npb25QYXJhbWV0ZXJzLnJlc291cmNl
TG9hZFN0YXRpc3RpY3NQYXJhbWV0ZXJzLnNhbWVTaXRlU3RyaWN0RW5mb3JjZW1lbnRFbmFibGVk
OworICAgICAgICAgICAgY25hbWVDbG9ha2luZ01pdGlnYXRpb25FbmFibGVkID0gbmV0d29ya1Nl
c3Npb25QYXJhbWV0ZXJzLnJlc291cmNlTG9hZFN0YXRpc3RpY3NQYXJhbWV0ZXJzLmNuYW1lQ2xv
YWtpbmdNaXRpZ2F0aW9uRW5hYmxlZDsKICNlbmRpZgogICAgICAgICAgICAgZmlyc3RQYXJ0eVdl
YnNpdGVEYXRhUmVtb3ZhbE1vZGUgPSBuZXR3b3JrU2Vzc2lvblBhcmFtZXRlcnMucmVzb3VyY2VM
b2FkU3RhdGlzdGljc1BhcmFtZXRlcnMuZmlyc3RQYXJ0eVdlYnNpdGVEYXRhUmVtb3ZhbE1vZGU7
CiAgICAgICAgICAgICBzdGFuZGFsb25lQXBwbGljYXRpb25Eb21haW4gPSBuZXR3b3JrU2Vzc2lv
blBhcmFtZXRlcnMucmVzb3VyY2VMb2FkU3RhdGlzdGljc1BhcmFtZXRlcnMuc3RhbmRhbG9uZUFw
cGxpY2F0aW9uRG9tYWluOwpAQCAtNjYxLDYgKzY2Myw3IEBAIE5ldHdvcmtQcm9jZXNzUHJveHkm
IFdlYlByb2Nlc3NQb29sOjplbnN1cmVOZXR3b3JrUHJvY2VzcyhXZWJzaXRlRGF0YVN0b3JlKiB3
aXRoCiAjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKICAgICAgICAgICAgIHRo
aXJkUGFydHlDb29raWVCbG9ja2luZ01vZGUgPSBuZXR3b3JrU2Vzc2lvblBhcmFtZXRlcnMucmVz
b3VyY2VMb2FkU3RhdGlzdGljc1BhcmFtZXRlcnMudGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9k
ZTsKICAgICAgICAgICAgIHNhbWVTaXRlU3RyaWN0RW5mb3JjZW1lbnRFbmFibGVkID0gbmV0d29y
a1Nlc3Npb25QYXJhbWV0ZXJzLnJlc291cmNlTG9hZFN0YXRpc3RpY3NQYXJhbWV0ZXJzLnNhbWVT
aXRlU3RyaWN0RW5mb3JjZW1lbnRFbmFibGVkOworICAgICAgICAgICAgY25hbWVDbG9ha2luZ01p
dGlnYXRpb25FbmFibGVkID0gbmV0d29ya1Nlc3Npb25QYXJhbWV0ZXJzLnJlc291cmNlTG9hZFN0
YXRpc3RpY3NQYXJhbWV0ZXJzLmNuYW1lQ2xvYWtpbmdNaXRpZ2F0aW9uRW5hYmxlZDsKICNlbmRp
ZgogICAgICAgICAgICAgZmlyc3RQYXJ0eVdlYnNpdGVEYXRhUmVtb3ZhbE1vZGUgPSBuZXR3b3Jr
U2Vzc2lvblBhcmFtZXRlcnMucmVzb3VyY2VMb2FkU3RhdGlzdGljc1BhcmFtZXRlcnMuZmlyc3RQ
YXJ0eVdlYnNpdGVEYXRhUmVtb3ZhbE1vZGU7CiAgICAgICAgICAgICBzdGFuZGFsb25lQXBwbGlj
YXRpb25Eb21haW4gPSBuZXR3b3JrU2Vzc2lvblBhcmFtZXRlcnMucmVzb3VyY2VMb2FkU3RhdGlz
dGljc1BhcmFtZXRlcnMuc3RhbmRhbG9uZUFwcGxpY2F0aW9uRG9tYWluOwpAQCAtNzA0LDYgKzcw
Nyw3IEBAIE5ldHdvcmtQcm9jZXNzUHJveHkmIFdlYlByb2Nlc3NQb29sOjplbnN1cmVOZXR3b3Jr
UHJvY2VzcyhXZWJzaXRlRGF0YVN0b3JlKiB3aXRoCiAjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURf
U1RBVElTVElDUykKICAgICAgICAgdGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9kZSwKICAgICAg
ICAgc2FtZVNpdGVTdHJpY3RFbmZvcmNlbWVudEVuYWJsZWQsCisgICAgICAgIGNuYW1lQ2xvYWtp
bmdNaXRpZ2F0aW9uRW5hYmxlZCwKICNlbmRpZgogICAgICAgICBmaXJzdFBhcnR5V2Vic2l0ZURh
dGFSZW1vdmFsTW9kZSwKICAgICAgICAgc3RhbmRhbG9uZUFwcGxpY2F0aW9uRG9tYWluLApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvQ29jb2EvV2Vic2l0
ZURhdGFTdG9yZUNvY29hLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEv
Q29jb2EvV2Vic2l0ZURhdGFTdG9yZUNvY29hLm1tCmluZGV4IGZiM2IyMWZkOTM2MjhhMzRhZTNk
NGRlY2ZkNGU3OTdjZjY1MzFmNjUuLjI1N2ZiN2EyOTAxYWNlZmU0Y2RhZDMwYmUyNGEwYjYwMDkz
MTYzYzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL0Nv
Y29hL1dlYnNpdGVEYXRhU3RvcmVDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJzaXRlRGF0YS9Db2NvYS9XZWJzaXRlRGF0YVN0b3JlQ29jb2EubW0KQEAgLTk0LDYgKzk0
LDcgQEAgdm9pZCBXZWJzaXRlRGF0YVN0b3JlOjpwbGF0Zm9ybVNldE5ldHdvcmtQYXJhbWV0ZXJz
KFdlYnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJzJgogICAgIGJvb2wgc2hvdWxkTG9nQ29va2llSW5m
b3JtYXRpb24gPSBmYWxzZTsKICAgICBib29sIGVuYWJsZVJlc291cmNlTG9hZFN0YXRpc3RpY3NE
ZWJ1Z01vZGUgPSBmYWxzZTsKICAgICBhdXRvIHNhbWVTaXRlU3RyaWN0RW5mb3JjZW1lbnRFbmFi
bGVkID0gV2ViQ29yZTo6U2FtZVNpdGVTdHJpY3RFbmZvcmNlbWVudEVuYWJsZWQ6Ok5vOworICAg
IGF1dG8gY25hbWVDbG9ha2luZ01pdGlnYXRpb25FbmFibGVkID0gV2ViQ29yZTo6Q05BTUVDbG9h
a2luZ01pdGlnYXRpb25FbmFibGVkOjpObzsKICAgICBhdXRvIGZpcnN0UGFydHlXZWJzaXRlRGF0
YVJlbW92YWxNb2RlID0gV2ViQ29yZTo6Rmlyc3RQYXJ0eVdlYnNpdGVEYXRhUmVtb3ZhbE1vZGU6
OkFsbEJ1dENvb2tpZXM7CiAgICAgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4gcmVzb3VyY2VM
b2FkU3RhdGlzdGljc01hbnVhbFByZXZhbGVudFJlc291cmNlIHsgfTsKICNpZiBFTkFCTEUoUkVT
T1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQpAQCAtMTAyLDYgKzEwMyw5IEBAIHZvaWQgV2Vic2l0ZURh
dGFTdG9yZTo6cGxhdGZvcm1TZXROZXR3b3JrUGFyYW1ldGVycyhXZWJzaXRlRGF0YVN0b3JlUGFy
YW1ldGVycyYKICAgICBpZiAoW2RlZmF1bHRzIGJvb2xGb3JLZXk6W05TU3RyaW5nIHN0cmluZ1dp
dGhGb3JtYXQ6QCJFeHBlcmltZW50YWwlQCIsIFdlYlByZWZlcmVuY2VzS2V5Ojppc1NhbWVTaXRl
U3RyaWN0RW5mb3JjZW1lbnRFbmFibGVkS2V5KCkuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKV1dKQog
ICAgICAgICBzYW1lU2l0ZVN0cmljdEVuZm9yY2VtZW50RW5hYmxlZCA9IFdlYkNvcmU6OlNhbWVT
aXRlU3RyaWN0RW5mb3JjZW1lbnRFbmFibGVkOjpZZXM7CiAKKyAgICBpZiAoW2RlZmF1bHRzIGJv
b2xGb3JLZXk6W05TU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCJFeHBlcmltZW50YWwlQCIsIFdl
YlByZWZlcmVuY2VzS2V5Ojppc0NOQU1FQ2xvYWtpbmdNaXRpZ2F0aW9uRW5hYmxlZEtleSgpLmNy
ZWF0ZUNGU3RyaW5nKCkuZ2V0KCldXSkKKyAgICAgICAgY25hbWVDbG9ha2luZ01pdGlnYXRpb25F
bmFibGVkID0gV2ViQ29yZTo6Q05BTUVDbG9ha2luZ01pdGlnYXRpb25FbmFibGVkOjpZZXM7CisK
ICAgICBpZiAoW2RlZmF1bHRzIGJvb2xGb3JLZXk6W05TU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6
QCJFeHBlcmltZW50YWwlQCIsIFdlYlByZWZlcmVuY2VzS2V5Ojppc0ZpcnN0UGFydHlXZWJzaXRl
RGF0YVJlbW92YWxEaXNhYmxlZEtleSgpLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCldXSkKICAgICAg
ICAgZmlyc3RQYXJ0eVdlYnNpdGVEYXRhUmVtb3ZhbE1vZGUgPSBXZWJDb3JlOjpGaXJzdFBhcnR5
V2Vic2l0ZURhdGFSZW1vdmFsTW9kZTo6Tm9uZTsKICAgICBlbHNlIHsKQEAgLTE3OCw2ICsxODIs
NyBAQCB2b2lkIFdlYnNpdGVEYXRhU3RvcmU6OnBsYXRmb3JtU2V0TmV0d29ya1BhcmFtZXRlcnMo
V2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRlcnMmCiAgICAgcGFyYW1ldGVycy5uZXR3b3JrU2Vzc2lv
blBhcmFtZXRlcnMucmVzb3VyY2VMb2FkU3RhdGlzdGljc1BhcmFtZXRlcnMuc2hvdWxkSW5jbHVk
ZUxvY2FsaG9zdCA9IHNob3VsZEluY2x1ZGVMb2NhbGhvc3RJblJlc291cmNlTG9hZFN0YXRpc3Rp
Y3M7CiAgICAgcGFyYW1ldGVycy5uZXR3b3JrU2Vzc2lvblBhcmFtZXRlcnMucmVzb3VyY2VMb2Fk
U3RhdGlzdGljc1BhcmFtZXRlcnMuZW5hYmxlRGVidWdNb2RlID0gZW5hYmxlUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc0RlYnVnTW9kZTsKICAgICBwYXJhbWV0ZXJzLm5ldHdvcmtTZXNzaW9uUGFyYW1l
dGVycy5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGFyYW1ldGVycy5zYW1lU2l0ZVN0cmljdEVuZm9y
Y2VtZW50RW5hYmxlZCA9IHNhbWVTaXRlU3RyaWN0RW5mb3JjZW1lbnRFbmFibGVkOworICAgIHBh
cmFtZXRlcnMubmV0d29ya1Nlc3Npb25QYXJhbWV0ZXJzLnJlc291cmNlTG9hZFN0YXRpc3RpY3NQ
YXJhbWV0ZXJzLmNuYW1lQ2xvYWtpbmdNaXRpZ2F0aW9uRW5hYmxlZCA9IGNuYW1lQ2xvYWtpbmdN
aXRpZ2F0aW9uRW5hYmxlZDsKICAgICBwYXJhbWV0ZXJzLm5ldHdvcmtTZXNzaW9uUGFyYW1ldGVy
cy5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGFyYW1ldGVycy5maXJzdFBhcnR5V2Vic2l0ZURhdGFS
ZW1vdmFsTW9kZSA9IGZpcnN0UGFydHlXZWJzaXRlRGF0YVJlbW92YWxNb2RlOwogICAgIHBhcmFt
ZXRlcnMubmV0d29ya1Nlc3Npb25QYXJhbWV0ZXJzLnJlc291cmNlTG9hZFN0YXRpc3RpY3NQYXJh
bWV0ZXJzLnN0YW5kYWxvbmVBcHBsaWNhdGlvbkRvbWFpbiA9IFdlYkNvcmU6OlJlZ2lzdHJhYmxl
RG9tYWluIHsgbV9jb25maWd1cmF0aW9uLT5zdGFuZGFsb25lQXBwbGljYXRpb25VUkwoKSB9Owog
ICAgIHBhcmFtZXRlcnMubmV0d29ya1Nlc3Npb25QYXJhbWV0ZXJzLnJlc291cmNlTG9hZFN0YXRp
c3RpY3NQYXJhbWV0ZXJzLm1hbnVhbFByZXZhbGVudFJlc291cmNlID0gV1RGTW92ZShyZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzTWFudWFsUHJldmFsZW50UmVzb3VyY2UpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5jcHAgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNwcApp
bmRleCAxZGFhYzU0MDIwNTgxZjdhYTdmODE5YjRiNDUwMmNlNmM3OThiODkyLi44ZTA5MWI2YjE3
YzA5NDI1OTc3MDk1NmVjZTEyMjlkZTA4NmFlY2FlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNwcApAQCAtMTkz
Niw2ICsxOTM2LDM2IEBAIHZvaWQgV2Vic2l0ZURhdGFTdG9yZTo6c2V0UmVzb3VyY2VMb2FkU3Rh
dGlzdGljc1RvU2FtZVNpdGVTdHJpY3RDb29raWVzRm9yVGVzdGluCiAgICAgICAgICAgICBuZXR3
b3JrUHJvY2Vzcy0+c2V0VG9TYW1lU2l0ZVN0cmljdENvb2tpZXNGb3JUZXN0aW5nKG1fc2Vzc2lv
bklELCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiB7IHVybCB9LCBbY2FsbGJhY2tBZ2dyZWdh
dG9yXSB7IH0pOwogICAgIH0KIH0KKwordm9pZCBXZWJzaXRlRGF0YVN0b3JlOjpzZXRSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzRmlyc3RQYXJ0eUhvc3RDTkFNRURvbWFpbkZvclRlc3RpbmcoY29uc3Qg
VVJMJiBmaXJzdFBhcnR5VVJMLCBjb25zdCBVUkwmIGNuYW1lVVJMLCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgaWYgKGNuYW1lVVJMLmhvc3Qo
KSAhPSAidGVzdHdlYmtpdC5vcmciX3MgJiYgY25hbWVVUkwuaG9zdCgpICE9ICIzcmRwYXJ0eXRl
c3R3ZWJraXQub3JnIl9zKSB7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7CisgICAgICAg
IHJldHVybjsKKyAgICB9CisKKyAgICBhdXRvIGNhbGxiYWNrQWdncmVnYXRvciA9IENhbGxiYWNr
QWdncmVnYXRvcjo6Y3JlYXRlKFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKKworICAgIGZv
ciAoYXV0byYgcHJvY2Vzc1Bvb2wgOiBwcm9jZXNzUG9vbHMoKSkgeworICAgICAgICBpZiAoYXV0
byogbmV0d29ya1Byb2Nlc3MgPSBwcm9jZXNzUG9vbC0+bmV0d29ya1Byb2Nlc3MoKSkKKyAgICAg
ICAgICAgIG5ldHdvcmtQcm9jZXNzLT5zZXRGaXJzdFBhcnR5SG9zdENOQU1FRG9tYWluRm9yVGVz
dGluZyhtX3Nlc3Npb25JRCwgZmlyc3RQYXJ0eVVSTC5ob3N0KCkudG9TdHJpbmcoKSwgV2ViQ29y
ZTo6UmVnaXN0cmFibGVEb21haW4geyBjbmFtZVVSTCB9LCBbY2FsbGJhY2tBZ2dyZWdhdG9yXSB7
IH0pOworICAgIH0KK30KKwordm9pZCBXZWJzaXRlRGF0YVN0b3JlOjpzZXRSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzVGhpcmRQYXJ0eUNOQU1FRG9tYWluRm9yVGVzdGluZyhjb25zdCBVUkwmIGNuYW1l
VVJMLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7Cisg
ICAgaWYgKGNuYW1lVVJMLmhvc3QoKSAhPSAidGVzdHdlYmtpdC5vcmciX3MgJiYgY25hbWVVUkwu
aG9zdCgpICE9ICIzcmRwYXJ0eXRlc3R3ZWJraXQub3JnIl9zKSB7CisgICAgICAgIGNvbXBsZXRp
b25IYW5kbGVyKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBhdXRvIGNhbGxiYWNr
QWdncmVnYXRvciA9IENhbGxiYWNrQWdncmVnYXRvcjo6Y3JlYXRlKFdURk1vdmUoY29tcGxldGlv
bkhhbmRsZXIpKTsKKworICAgIGZvciAoYXV0byYgcHJvY2Vzc1Bvb2wgOiBwcm9jZXNzUG9vbHMo
KSkgeworICAgICAgICBpZiAoYXV0byogbmV0d29ya1Byb2Nlc3MgPSBwcm9jZXNzUG9vbC0+bmV0
d29ya1Byb2Nlc3MoKSkKKyAgICAgICAgICAgIG5ldHdvcmtQcm9jZXNzLT5zZXRUaGlyZFBhcnR5
Q05BTUVEb21haW5Gb3JUZXN0aW5nKG1fc2Vzc2lvbklELCBXZWJDb3JlOjpSZWdpc3RyYWJsZURv
bWFpbiB7IGNuYW1lVVJMIH0sIFtjYWxsYmFja0FnZ3JlZ2F0b3JdIHsgfSk7CisgICAgfQorfQog
I2VuZGlmIC8vIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCiAKIHZvaWQgV2Vic2l0
ZURhdGFTdG9yZTo6c2V0Q2FjaGVNYXhBZ2VDYXBGb3JQcmV2YWxlbnRSZXNvdXJjZXMoU2Vjb25k
cyBzZWNvbmRzLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIp
CkBAIC0yMjgzLDYgKzIzMTMsNyBAQCBXZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVycyBXZWJzaXRl
RGF0YVN0b3JlOjpwYXJhbWV0ZXJzKCkKICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNU
SUNTKQogICAgICAgICB0aGlyZFBhcnR5Q29va2llQmxvY2tpbmdNb2RlKCksCiAgICAgICAgIFdl
YkNvcmU6OlNhbWVTaXRlU3RyaWN0RW5mb3JjZW1lbnRFbmFibGVkOjpObywKKyAgICAgICAgV2Vi
Q29yZTo6Q05BTUVDbG9ha2luZ01pdGlnYXRpb25FbmFibGVkOjpObywKICNlbmRpZgogICAgICAg
ICBmaXJzdFBhcnR5V2Vic2l0ZURhdGFSZW1vdmFsTW9kZSwKICAgICAgICAgV1RGTW92ZShzdGFu
ZGFsb25lQXBwbGljYXRpb25Eb21haW4pLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5oIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5oCmluZGV4IDBhN2Y4M2QyYjdkYzYz
NTM4Yzg1Nzg4MDBlNjE3YWZmYzVkM2YxOWQuLjRlYzEzZTE2ZmU0ODJkMjZhMmVhZmEzMTIzZTMy
MzNhNzM3Y2IxMmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVE
YXRhL1dlYnNpdGVEYXRhU3RvcmUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJz
aXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmgKQEAgLTIwMyw2ICsyMDMsOCBAQCBwdWJsaWM6CiAg
ICAgdm9pZCBzZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU2hvdWxkRW5ibGVTYW1lU2l0ZVN0cmlj
dEVuZm9yY2VtZW50Rm9yVGVzdGluZyhib29sIGVuYWJsZWQsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoKT4mJik7CiAgICAgdm9pZCBzZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRmlyc3RQYXJ0eVdl
YnNpdGVEYXRhUmVtb3ZhbE1vZGVGb3JUZXN0aW5nKGJvb2wgZW5hYmxlZCwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZCgpPiYmKTsKICAgICB2b2lkIHNldFJlc291cmNlTG9hZFN0YXRpc3RpY3NUb1Nh
bWVTaXRlU3RyaWN0Q29va2llc0ZvclRlc3RpbmcoY29uc3QgVVJMJiwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZCgpPiYmKTsKKyAgICB2b2lkIHNldFJlc291cmNlTG9hZFN0YXRpc3RpY3NGaXJzdFBh
cnR5SG9zdENOQU1FRG9tYWluRm9yVGVzdGluZyhjb25zdCBVUkwmIGZpcnN0UGFydHlVUkwsIGNv
bnN0IFVSTCYgY25hbWVVUkwsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CisgICAgdm9p
ZCBzZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzVGhpcmRQYXJ0eUNOQU1FRG9tYWluRm9yVGVzdGlu
Zyhjb25zdCBVUkwmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogICAgIFdlYkNvcmU6
OlRoaXJkUGFydHlDb29raWVCbG9ja2luZ01vZGUgdGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9k
ZSgpIGNvbnN0OwogICAgIGJvb2wgaXNJdHBTdGF0ZUV4cGxpY2l0bHlTZXQoKSBjb25zdCB7IHJl
dHVybiBtX2lzSXRwU3RhdGVFeHBsaWNpdGx5U2V0OyB9CiAgICAgdm9pZCB1c2VFeHBsaWNpdElU
UFN0YXRlKCkgeyBtX2lzSXRwU3RhdGVFeHBsaWNpdGx5U2V0ID0gdHJ1ZTsgfQpkaWZmIC0tZ2l0
IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDNmOWJjYzNiN2MyY2U5
ZWMyMmM1NjE1MjQyMjE2N2UwYWZmY2YyZTYuLjQ3OTA3YTRmMGE4Nzc5NjNhZWIxZDFiYzdiNzhk
MmZiZDVlM2I1ZmYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwzNSBAQAorMjAyMC0wOC0wNSAgSm9obiBXaWxhbmRlciAgPHdpbGFu
ZGVyQGFwcGxlLmNvbT4KKworICAgICAgICBFeHBlcmltZW50YWw6IENhcCB0aGUgZXhwaXJ5IG9m
IHBlcnNpc3RlbnQgY29va2llcyBzZXQgaW4gM3JkLXBhcnR5IENOQU1FIGNsb2FrZWQgSFRUUCBy
ZXNwb25zZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTIxNTIwMQorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNTc0NTQ2MzM+CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBwYXRjaCBhZGRzIHR3byBU
ZXN0UnVubmVyIGZ1bmN0aW9ucyB3aGljaCBhbGxvd3MgZm9yIHRlc3RpbmcKKyAgICAgICAgd2l0
aCBkYXRhIHRoYXQgd291bGQgb3RoZXJ3aXNlIGNvbWUgZnJvbSBETlMgcmVzb2x1dGlvbjoKKyAg
ICAgICAgLSBzdGF0aXN0aWNzU2V0Rmlyc3RQYXJ0eUhvc3RDTkFNRURvbWFpbigpCisgICAgICAg
IC0gc3RhdGlzdGljc1NldFRoaXJkUGFydHlDTkFNRURvbWFpbigpCisKKyAgICAgICAgKiBXZWJL
aXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0JpbmRpbmdzL1Rlc3RSdW5uZXIuaWRsOgorICAg
ICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuY3Bw
OgorICAgICAgICAoV1RSOjpJbmplY3RlZEJ1bmRsZTo6ZGlkUmVjZWl2ZU1lc3NhZ2VUb1BhZ2Up
OgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5j
cHA6CisgICAgICAgIChXVFI6OlRlc3RSdW5uZXI6OnN0YXRpc3RpY3NTZXRGaXJzdFBhcnR5SG9z
dENOQU1FRG9tYWluKToKKyAgICAgICAgKFdUUjo6VGVzdFJ1bm5lcjo6c3RhdGlzdGljc0NhbGxE
aWRTZXRGaXJzdFBhcnR5SG9zdENOQU1FRG9tYWluQ2FsbGJhY2spOgorICAgICAgICAoV1RSOjpU
ZXN0UnVubmVyOjpzdGF0aXN0aWNzU2V0VGhpcmRQYXJ0eUNOQU1FRG9tYWluKToKKyAgICAgICAg
KFdUUjo6VGVzdFJ1bm5lcjo6c3RhdGlzdGljc0NhbGxEaWRTZXRUaGlyZFBhcnR5Q05BTUVEb21h
aW5DYWxsYmFjayk6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9U
ZXN0UnVubmVyLmg6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5j
cHA6CisgICAgICAgIChXVFI6OlRlc3RDb250cm9sbGVyOjpzZXRTdGF0aXN0aWNzRmlyc3RQYXJ0
eUhvc3RDTkFNRURvbWFpbik6CisgICAgICAgIChXVFI6OlRlc3RDb250cm9sbGVyOjpzZXRTdGF0
aXN0aWNzVGhpcmRQYXJ0eUNOQU1FRG9tYWluKToKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVy
L1Rlc3RDb250cm9sbGVyLmg6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52b2Nh
dGlvbi5jcHA6CisgICAgICAgIChXVFI6OlRlc3RJbnZvY2F0aW9uOjpkaWRSZWNlaXZlTWVzc2Fn
ZUZyb21JbmplY3RlZEJ1bmRsZSk6CisgICAgICAgIChXVFI6OlRlc3RJbnZvY2F0aW9uOjpkaWRT
ZXRGaXJzdFBhcnR5SG9zdENOQU1FRG9tYWluKToKKyAgICAgICAgKFdUUjo6VGVzdEludm9jYXRp
b246OmRpZFNldFRoaXJkUGFydHlDTkFNRURvbWFpbik6CisgICAgICAgICogV2ViS2l0VGVzdFJ1
bm5lci9UZXN0SW52b2NhdGlvbi5oOgorCiAyMDIwLTA4LTA1ICBKb25hdGhhbiBCZWRhcmQgIDxq
YmVkYXJkQGFwcGxlLmNvbT4KIAogICAgICAgICByZXN1bHRzLndlYmtpdC5vcmc6IFJldHVybiB3
b3JrZXIgc3RhdHVzIHRvIGNhbGxlcgpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5l
ci9JbmplY3RlZEJ1bmRsZS9CaW5kaW5ncy9UZXN0UnVubmVyLmlkbCBiL1Rvb2xzL1dlYktpdFRl
c3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQmluZGluZ3MvVGVzdFJ1bm5lci5pZGwKaW5kZXggNmI4
OTgwZjQ5MjgyYjU3M2UxM2YwNDVjZmUwZDU2YmM2NDQ3YWZiYS4uZGM2M2M1ZGQ4YmI0ZDg2YmUz
ZjYyNzFhZGEyODhmODdmZDQyMGExOSAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5l
ci9JbmplY3RlZEJ1bmRsZS9CaW5kaW5ncy9UZXN0UnVubmVyLmlkbAorKysgYi9Ub29scy9XZWJL
aXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0JpbmRpbmdzL1Rlc3RSdW5uZXIuaWRsCkBAIC0z
NDcsNiArMzQ3LDggQEAgaW50ZXJmYWNlIFRlc3RSdW5uZXIgewogICAgIHZvaWQgc2V0U3RhdGlz
dGljc1Nob3VsZEJsb2NrVGhpcmRQYXJ0eUNvb2tpZXMoYm9vbGVhbiB2YWx1ZSwgb2JqZWN0IGNh
bGxiYWNrLCBvcHRpb25hbCBib29sZWFuIG9ubHlPblNpdGVzV2l0aG91dFVzZXJJbnRlcmFjdGlv
bik7CiAgICAgdm9pZCBzZXRTdGF0aXN0aWNzRmlyc3RQYXJ0eVdlYnNpdGVEYXRhUmVtb3ZhbE1v
ZGUoYm9vbGVhbiB2YWx1ZSwgb2JqZWN0IGNhbGxiYWNrKTsKICAgICB2b2lkIHN0YXRpc3RpY3NT
ZXRUb1NhbWVTaXRlU3RyaWN0Q29va2llcyhET01TdHJpbmcgaG9zdE5hbWUsIG9iamVjdCBjYWxs
YmFjayk7CisgICAgdm9pZCBzdGF0aXN0aWNzU2V0Rmlyc3RQYXJ0eUhvc3RDTkFNRURvbWFpbihE
T01TdHJpbmcgZmlyc3RQYXJ0eVVSTFN0cmluZywgRE9NU3RyaW5nIGNuYW1lVVJMU3RyaW5nLCBv
YmplY3QgY2FsbGJhY2spOworICAgIHZvaWQgc3RhdGlzdGljc1NldFRoaXJkUGFydHlDTkFNRURv
bWFpbihET01TdHJpbmcgY25hbWVVUkxTdHJpbmcsIG9iamVjdCBjYWxsYmFjayk7CiAgICAgdm9p
ZCBsb2FkZWRUaGlyZFBhcnR5RG9tYWlucyhvYmplY3QgY2FsbGJhY2spOwogCiAgICAgLy8gSW5q
ZWN0ZWQgYnVuZGxlIGZvcm0gY2xpZW50LgpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1
bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5jcHAgYi9Ub29scy9XZWJLaXRUZXN0
UnVubmVyL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmNwcAppbmRleCBlMjU0Y2E3MmRi
Y2YzMTAyNzQxZmNmMTdjMTUyNTU0MjZkMGY1ZjBlLi5hZjc0M2I2M2U4ZmYwYTQ2NmZkNGE4OWFl
MDg1MzZiZmMwZDhhYjUxIDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVj
dGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmNwcAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVy
L0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmNwcApAQCAtMzU5LDYgKzM1OSwxNiBAQCB2
b2lkIEluamVjdGVkQnVuZGxlOjpkaWRSZWNlaXZlTWVzc2FnZVRvUGFnZShXS0J1bmRsZVBhZ2VS
ZWYgcGFnZSwgV0tTdHJpbmdSZWYgbQogICAgICAgICByZXR1cm47CiAgICAgfQogCisgICAgaWYg
KFdLU3RyaW5nSXNFcXVhbFRvVVRGOENTdHJpbmcobWVzc2FnZU5hbWUsICJDYWxsRGlkU2V0Rmly
c3RQYXJ0eUhvc3RDTkFNRURvbWFpbiIpKSB7CisgICAgICAgIG1fdGVzdFJ1bm5lci0+c3RhdGlz
dGljc0NhbGxEaWRTZXRGaXJzdFBhcnR5SG9zdENOQU1FRG9tYWluQ2FsbGJhY2soKTsKKyAgICAg
ICAgcmV0dXJuOworICAgIH0KKworICAgIGlmIChXS1N0cmluZ0lzRXF1YWxUb1VURjhDU3RyaW5n
KG1lc3NhZ2VOYW1lLCAiQ2FsbERpZFNldFRoaXJkUGFydHlDTkFNRURvbWFpbiIpKSB7CisgICAg
ICAgIG1fdGVzdFJ1bm5lci0+c3RhdGlzdGljc0NhbGxEaWRTZXRUaGlyZFBhcnR5Q05BTUVEb21h
aW5DYWxsYmFjaygpOworICAgICAgICByZXR1cm47CisgICAgfQorCiAgICAgaWYgKFdLU3RyaW5n
SXNFcXVhbFRvVVRGOENTdHJpbmcobWVzc2FnZU5hbWUsICJDYWxsRGlkUmVzZXRTdGF0aXN0aWNz
VG9Db25zaXN0ZW50U3RhdGUiKSkgewogICAgICAgICBtX3Rlc3RSdW5uZXItPnN0YXRpc3RpY3ND
YWxsRGlkUmVzZXRUb0NvbnNpc3RlbnRTdGF0ZUNhbGxiYWNrKCk7CiAgICAgICAgIHJldHVybjsK
ZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1
bm5lci5jcHAgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5u
ZXIuY3BwCmluZGV4IGQ0Mzg2ZTZmOWYzNTBlZTAxOTg2YjkyMDFiOTAzYjgwNDAyNjY0YTcuLjI5
NjcyZjllMTU1OWNhMmRlMGM2ODlhNDZjM2VhMmM1NjAxYjYwZTggMTAwNjQ0Ci0tLSBhL1Rvb2xz
L1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5jcHAKKysrIGIvVG9v
bHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmNwcApAQCAtNzU4
LDYgKzc1OCw4IEBAIGVudW0gewogICAgIFN0YXRpc3RpY3NEaWRTZXRTaG91bGRCbG9ja1RoaXJk
UGFydHlDb29raWVzQ2FsbGJhY2tJRCwKICAgICBTdGF0aXN0aWNzRGlkU2V0Rmlyc3RQYXJ0eVdl
YnNpdGVEYXRhUmVtb3ZhbE1vZGVDYWxsYmFja0lELAogICAgIFN0YXRpc3RpY3NEaWRTZXRUb1Nh
bWVTaXRlU3RyaWN0Q29va2llc0NhbGxiYWNrSUQsCisgICAgU3RhdGlzdGljc0RpZFNldEZpcnN0
UGFydHlIb3N0Q05BTUVEb21haW5DYWxsYmFja0lELAorICAgIFN0YXRpc3RpY3NEaWRTZXRUaGly
ZFBhcnR5Q05BTUVEb21haW5DYWxsYmFja0lELAogICAgIEFsbFN0b3JhZ2VBY2Nlc3NFbnRyaWVz
Q2FsbGJhY2tJRCwKICAgICBMb2FkZWRUaGlyZFBhcnR5RG9tYWluc0NhbGxiYWNrSUQsCiAgICAg
RGlkUmVtb3ZlQWxsU2Vzc2lvbkNyZWRlbnRpYWxzQ2FsbGJhY2tJRCwKQEAgLTIzNjQsNiArMjM2
Niw1MiBAQCB2b2lkIFRlc3RSdW5uZXI6OnN0YXRpc3RpY3NDYWxsRGlkU2V0VG9TYW1lU2l0ZVN0
cmljdENvb2tpZXNDYWxsYmFjaygpCiAgICAgY2FsbFRlc3RSdW5uZXJDYWxsYmFjayhTdGF0aXN0
aWNzRGlkU2V0VG9TYW1lU2l0ZVN0cmljdENvb2tpZXNDYWxsYmFja0lEKTsKIH0KIAorCit2b2lk
IFRlc3RSdW5uZXI6OnN0YXRpc3RpY3NTZXRGaXJzdFBhcnR5SG9zdENOQU1FRG9tYWluKEpTU3Ry
aW5nUmVmIGZpcnN0UGFydHlVUkxTdHJpbmcsIEpTU3RyaW5nUmVmIGNuYW1lVVJMU3RyaW5nLCBK
U1ZhbHVlUmVmIGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIGNhY2hlVGVzdFJ1bm5lckNhbGxi
YWNrKFN0YXRpc3RpY3NEaWRTZXRGaXJzdFBhcnR5SG9zdENOQU1FRG9tYWluQ2FsbGJhY2tJRCwg
Y29tcGxldGlvbkhhbmRsZXIpOworCisgICAgVmVjdG9yPFdLUmV0YWluUHRyPFdLU3RyaW5nUmVm
Pj4ga2V5czsKKyAgICBWZWN0b3I8V0tSZXRhaW5QdHI8V0tUeXBlUmVmPj4gdmFsdWVzOworICAg
IAorICAgIGtleXMuYXBwZW5kKGFkb3B0V0soV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmco
IkZpcnN0UGFydHlVUkwiKSkpOworICAgIHZhbHVlcy5hcHBlbmQoYWRvcHRXSyhXS1N0cmluZ0Ny
ZWF0ZVdpdGhKU1N0cmluZyhmaXJzdFBhcnR5VVJMU3RyaW5nKSkpOworICAgIAorICAgIGtleXMu
YXBwZW5kKGFkb3B0V0soV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoIkNOQU1FIikpKTsK
KyAgICB2YWx1ZXMuYXBwZW5kKGFkb3B0V0soV0tTdHJpbmdDcmVhdGVXaXRoSlNTdHJpbmcoY25h
bWVVUkxTdHJpbmcpKSk7CisgICAgCisgICAgVmVjdG9yPFdLU3RyaW5nUmVmPiByYXdLZXlzKGtl
eXMuc2l6ZSgpKTsKKyAgICBWZWN0b3I8V0tUeXBlUmVmPiByYXdWYWx1ZXModmFsdWVzLnNpemUo
KSk7CisgICAgCisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBrZXlzLnNpemUoKTsgKytpKSB7
CisgICAgICAgIHJhd0tleXNbaV0gPSBrZXlzW2ldLmdldCgpOworICAgICAgICByYXdWYWx1ZXNb
aV0gPSB2YWx1ZXNbaV0uZ2V0KCk7CisgICAgfQorCisgICAgYXV0byBtZXNzYWdlTmFtZSA9IGFk
b3B0V0soV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoIlN0YXRpc3RpY3NTZXRGaXJzdFBh
cnR5SG9zdENOQU1FRG9tYWluIikpOworICAgIGF1dG8gbWVzc2FnZUJvZHkgPSBhZG9wdFdLKFdL
RGljdGlvbmFyeUNyZWF0ZShyYXdLZXlzLmRhdGEoKSwgcmF3VmFsdWVzLmRhdGEoKSwgcmF3S2V5
cy5zaXplKCkpKTsKKyAgICBXS0J1bmRsZVBvc3RNZXNzYWdlKEluamVjdGVkQnVuZGxlOjpzaW5n
bGV0b24oKS5idW5kbGUoKSwgbWVzc2FnZU5hbWUuZ2V0KCksIG1lc3NhZ2VCb2R5LmdldCgpKTsK
K30KKwordm9pZCBUZXN0UnVubmVyOjpzdGF0aXN0aWNzQ2FsbERpZFNldEZpcnN0UGFydHlIb3N0
Q05BTUVEb21haW5DYWxsYmFjaygpCit7CisgICAgY2FsbFRlc3RSdW5uZXJDYWxsYmFjayhTdGF0
aXN0aWNzRGlkU2V0Rmlyc3RQYXJ0eUhvc3RDTkFNRURvbWFpbkNhbGxiYWNrSUQpOworfQorCit2
b2lkIFRlc3RSdW5uZXI6OnN0YXRpc3RpY3NTZXRUaGlyZFBhcnR5Q05BTUVEb21haW4oSlNTdHJp
bmdSZWYgY25hbWVVUkxTdHJpbmcsIEpTVmFsdWVSZWYgY29tcGxldGlvbkhhbmRsZXIpCit7Cisg
ICAgY2FjaGVUZXN0UnVubmVyQ2FsbGJhY2soU3RhdGlzdGljc0RpZFNldFRoaXJkUGFydHlDTkFN
RURvbWFpbkNhbGxiYWNrSUQsIGNvbXBsZXRpb25IYW5kbGVyKTsKKworICAgIGF1dG8gbWVzc2Fn
ZU5hbWUgPSBhZG9wdFdLKFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJTdGF0aXN0aWNz
U2V0VGhpcmRQYXJ0eUNOQU1FRG9tYWluIikpOworICAgIGF1dG8gbWVzc2FnZUJvZHkgPSBhZG9w
dFdLKFdLU3RyaW5nQ3JlYXRlV2l0aEpTU3RyaW5nKGNuYW1lVVJMU3RyaW5nKSk7CisgICAgV0tC
dW5kbGVQb3N0TWVzc2FnZShJbmplY3RlZEJ1bmRsZTo6c2luZ2xldG9uKCkuYnVuZGxlKCksIG1l
c3NhZ2VOYW1lLmdldCgpLCBtZXNzYWdlQm9keS5nZXQoKSk7Cit9CisKK3ZvaWQgVGVzdFJ1bm5l
cjo6c3RhdGlzdGljc0NhbGxEaWRTZXRUaGlyZFBhcnR5Q05BTUVEb21haW5DYWxsYmFjaygpCit7
CisgICAgY2FsbFRlc3RSdW5uZXJDYWxsYmFjayhTdGF0aXN0aWNzRGlkU2V0VGhpcmRQYXJ0eUNO
QU1FRG9tYWluQ2FsbGJhY2tJRCk7Cit9CisKIHZvaWQgVGVzdFJ1bm5lcjo6c3RhdGlzdGljc1Jl
c2V0VG9Db25zaXN0ZW50U3RhdGUoSlNWYWx1ZVJlZiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAg
ICBjYWNoZVRlc3RSdW5uZXJDYWxsYmFjayhTdGF0aXN0aWNzRGlkUmVzZXRUb0NvbnNpc3RlbnRT
dGF0ZUNhbGxiYWNrSUQsIGNvbXBsZXRpb25IYW5kbGVyKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1dl
YktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5oIGIvVG9vbHMvV2ViS2l0
VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmgKaW5kZXggMWZlMzc5YTU3YWI4
MmZmZTQzMTlkYTQ4MDBmMDQ4MzkzMDAzZjc1MS4uYWI2NWQ0MGQ0MjI2ODA5MzQwOTJjZjNmODJk
ODFjNWU5YWIyMGQwMyAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3Rl
ZEJ1bmRsZS9UZXN0UnVubmVyLmgKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3Rl
ZEJ1bmRsZS9UZXN0UnVubmVyLmgKQEAgLTQ1Myw2ICs0NTMsMTAgQEAgcHVibGljOgogICAgIHZv
aWQgc3RhdGlzdGljc0NhbGxEaWRTZXRGaXJzdFBhcnR5V2Vic2l0ZURhdGFSZW1vdmFsTW9kZUNh
bGxiYWNrKCk7CiAgICAgdm9pZCBzdGF0aXN0aWNzU2V0VG9TYW1lU2l0ZVN0cmljdENvb2tpZXMo
SlNTdHJpbmdSZWYgaG9zdE5hbWUsIEpTVmFsdWVSZWYgY2FsbGJhY2spOwogICAgIHZvaWQgc3Rh
dGlzdGljc0NhbGxEaWRTZXRUb1NhbWVTaXRlU3RyaWN0Q29va2llc0NhbGxiYWNrKCk7CisgICAg
dm9pZCBzdGF0aXN0aWNzU2V0Rmlyc3RQYXJ0eUhvc3RDTkFNRURvbWFpbihKU1N0cmluZ1JlZiBm
aXJzdFBhcnR5VVJMU3RyaW5nLCBKU1N0cmluZ1JlZiBjbmFtZVVSTFN0cmluZywgSlNWYWx1ZVJl
ZiBjb21wbGV0aW9uSGFuZGxlcik7CisgICAgdm9pZCBzdGF0aXN0aWNzQ2FsbERpZFNldEZpcnN0
UGFydHlIb3N0Q05BTUVEb21haW5DYWxsYmFjaygpOworICAgIHZvaWQgc3RhdGlzdGljc1NldFRo
aXJkUGFydHlDTkFNRURvbWFpbihKU1N0cmluZ1JlZiBjbmFtZVVSTFN0cmluZywgSlNWYWx1ZVJl
ZiBjb21wbGV0aW9uSGFuZGxlcik7CisgICAgdm9pZCBzdGF0aXN0aWNzQ2FsbERpZFNldFRoaXJk
UGFydHlDTkFNRURvbWFpbkNhbGxiYWNrKCk7CiAgICAgdm9pZCBzdGF0aXN0aWNzUmVzZXRUb0Nv
bnNpc3RlbnRTdGF0ZShKU1ZhbHVlUmVmIGNvbXBsZXRpb25IYW5kbGVyKTsKICAgICB2b2lkIHN0
YXRpc3RpY3NDYWxsRGlkUmVzZXRUb0NvbnNpc3RlbnRTdGF0ZUNhbGxiYWNrKCk7CiAgICAgdm9p
ZCBsb2FkZWRUaGlyZFBhcnR5RG9tYWlucyhKU1ZhbHVlUmVmIGNhbGxiYWNrKTsKZGlmZiAtLWdp
dCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwIGIvVG9vbHMvV2Vi
S2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5jcHAKaW5kZXggZmFmYjhjZjZiOTUyZTNjMDQ4
NDYzYmE1N2Y1YzRjZjQ4MTFkZmVhZC4uYTQzZmE4MTM0YTdhYjc2YzNhM2I3ZjgyMDhkYzkyNjY3
Mjc0NzQ2MSAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxl
ci5jcHAKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5jcHAKQEAg
LTM4NjIsNiArMzg2MiwyMiBAQCB2b2lkIFRlc3RDb250cm9sbGVyOjpzZXRTdGF0aXN0aWNzVG9T
YW1lU2l0ZVN0cmljdENvb2tpZXMoV0tTdHJpbmdSZWYgaG9zdE5hbWUpCiAgICAgbV9jdXJyZW50
SW52b2NhdGlvbi0+ZGlkU2V0VG9TYW1lU2l0ZVN0cmljdENvb2tpZXMoKTsKIH0KIAordm9pZCBU
ZXN0Q29udHJvbGxlcjo6c2V0U3RhdGlzdGljc0ZpcnN0UGFydHlIb3N0Q05BTUVEb21haW4oV0tT
dHJpbmdSZWYgZmlyc3RQYXJ0eVVSTFN0cmluZywgV0tTdHJpbmdSZWYgY25hbWVVUkxTdHJpbmcp
Cit7CisgICAgUmVzb3VyY2VTdGF0aXN0aWNzQ2FsbGJhY2tDb250ZXh0IGNvbnRleHQoKnRoaXMp
OworICAgIFdLV2Vic2l0ZURhdGFTdG9yZVNldFJlc291cmNlTG9hZFN0YXRpc3RpY3NGaXJzdFBh
cnR5SG9zdENOQU1FRG9tYWluRm9yVGVzdGluZyh3ZWJzaXRlRGF0YVN0b3JlKCksIGZpcnN0UGFy
dHlVUkxTdHJpbmcsIGNuYW1lVVJMU3RyaW5nLCAmY29udGV4dCwgcmVzb3VyY2VTdGF0aXN0aWNz
Vm9pZFJlc3VsdENhbGxiYWNrKTsKKyAgICBydW5VbnRpbChjb250ZXh0LmRvbmUsIG5vVGltZW91
dCk7CisgICAgbV9jdXJyZW50SW52b2NhdGlvbi0+ZGlkU2V0Rmlyc3RQYXJ0eUhvc3RDTkFNRURv
bWFpbigpOworfQorCit2b2lkIFRlc3RDb250cm9sbGVyOjpzZXRTdGF0aXN0aWNzVGhpcmRQYXJ0
eUNOQU1FRG9tYWluKFdLU3RyaW5nUmVmIGNuYW1lVVJMU3RyaW5nKQoreworICAgIFJlc291cmNl
U3RhdGlzdGljc0NhbGxiYWNrQ29udGV4dCBjb250ZXh0KCp0aGlzKTsKKyAgICBXS1dlYnNpdGVE
YXRhU3RvcmVTZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzVGhpcmRQYXJ0eUNOQU1FRG9tYWluRm9y
VGVzdGluZyh3ZWJzaXRlRGF0YVN0b3JlKCksIGNuYW1lVVJMU3RyaW5nLCAmY29udGV4dCwgcmVz
b3VyY2VTdGF0aXN0aWNzVm9pZFJlc3VsdENhbGxiYWNrKTsKKyAgICBydW5VbnRpbChjb250ZXh0
LmRvbmUsIG5vVGltZW91dCk7CisgICAgbV9jdXJyZW50SW52b2NhdGlvbi0+ZGlkU2V0VGhpcmRQ
YXJ0eUNOQU1FRG9tYWluKCk7Cit9CisKIHN0cnVjdCBBcHBCb3VuZERvbWFpbnNDYWxsYmFja0Nv
bnRleHQgewogICAgIGV4cGxpY2l0IEFwcEJvdW5kRG9tYWluc0NhbGxiYWNrQ29udGV4dChUZXN0
Q29udHJvbGxlciYgY29udHJvbGxlcikKICAgICAgICAgOiB0ZXN0Q29udHJvbGxlcihjb250cm9s
bGVyKQpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5o
IGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5oCmluZGV4IGExMzA4NDli
M2QzYWViYTJlMjFlNmEwYTM0ZDQ2MjkyZTE5ZDRhNTAuLjcyNGNkMDA0YzFiNDJlODE1ZmQ1MjE1
NTM5OWZhZTAyMTA2Y2NmODAgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVz
dENvbnRyb2xsZXIuaAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVy
LmgKQEAgLTI2Niw2ICsyNjYsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRTdGF0aXN0aWNzU2hv
dWxkQmxvY2tUaGlyZFBhcnR5Q29va2llcyhib29sIHZhbHVlLCBib29sIG9ubHlPblNpdGVzV2l0
aG91dFVzZXJJbnRlcmFjdGlvbik7CiAgICAgdm9pZCBzZXRTdGF0aXN0aWNzRmlyc3RQYXJ0eVdl
YnNpdGVEYXRhUmVtb3ZhbE1vZGUoYm9vbCB2YWx1ZSk7CiAgICAgdm9pZCBzZXRTdGF0aXN0aWNz
VG9TYW1lU2l0ZVN0cmljdENvb2tpZXMoV0tTdHJpbmdSZWYgaG9zdE5hbWUpOworICAgIHZvaWQg
c2V0U3RhdGlzdGljc0ZpcnN0UGFydHlIb3N0Q05BTUVEb21haW4oV0tTdHJpbmdSZWYgZmlyc3RQ
YXJ0eVVSTFN0cmluZywgV0tTdHJpbmdSZWYgY25hbWVVUkxTdHJpbmcpOworICAgIHZvaWQgc2V0
U3RhdGlzdGljc1RoaXJkUGFydHlDTkFNRURvbWFpbihXS1N0cmluZ1JlZiBjbmFtZVVSTFN0cmlu
Zyk7CiAgICAgdm9pZCBzZXRBcHBCb3VuZERvbWFpbnMoV0tBcnJheVJlZiBvcmlnaW5VUkxzKTsK
ICAgICB2b2lkIHN0YXRpc3RpY3NSZXNldFRvQ29uc2lzdGVudFN0YXRlKCk7CiAKZGlmZiAtLWdp
dCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdEludm9jYXRpb24uY3BwIGIvVG9vbHMvV2Vi
S2l0VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlvbi5jcHAKaW5kZXggYjczYjA5NDQxZjE3NGI1NDFl
Y2Q2NjM3YWVmMGY5MTk3ZDhkZWY4Zi4uOTI5Zjg1YWY1ZjgyMmY5MmQ2MGRhYWE0NGYwNGNkMTMz
MzcxZWY1MyAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlv
bi5jcHAKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlvbi5jcHAKQEAg
LTk1Nyw2ICs5NTcsMjcgQEAgdm9pZCBUZXN0SW52b2NhdGlvbjo6ZGlkUmVjZWl2ZU1lc3NhZ2VG
cm9tSW5qZWN0ZWRCdW5kbGUoV0tTdHJpbmdSZWYgbWVzc2FnZU5hbWUKICAgICAgICAgcmV0dXJu
OwogICAgIH0KIAorICAgIGlmIChXS1N0cmluZ0lzRXF1YWxUb1VURjhDU3RyaW5nKG1lc3NhZ2VO
YW1lLCAiU3RhdGlzdGljc1NldEZpcnN0UGFydHlIb3N0Q05BTUVEb21haW4iKSkgeworICAgICAg
ICBBU1NFUlQoV0tHZXRUeXBlSUQobWVzc2FnZUJvZHkpID09IFdLRGljdGlvbmFyeUdldFR5cGVJ
RCgpKTsKKyAgICAgICAgCisgICAgICAgIFdLRGljdGlvbmFyeVJlZiBtZXNzYWdlQm9keURpY3Rp
b25hcnkgPSBzdGF0aWNfY2FzdDxXS0RpY3Rpb25hcnlSZWY+KG1lc3NhZ2VCb2R5KTsKKyAgICAg
ICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+IGZpcnN0UGFydHlVUkxTdHJpbmdLZXkgPSBhZG9w
dFdLKFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJGaXJzdFBhcnR5VVJMIikpOworICAg
ICAgICBXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4gY25hbWVVUkxTdHJpbmdLZXkgPSBhZG9wdFdL
KFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJDTkFNRSIpKTsKKyAgICAgICAgCisgICAg
ICAgIFdLU3RyaW5nUmVmIGZpcnN0UGFydHlVUkxTdHJpbmcgPSBzdGF0aWNfY2FzdDxXS1N0cmlu
Z1JlZj4oV0tEaWN0aW9uYXJ5R2V0SXRlbUZvcktleShtZXNzYWdlQm9keURpY3Rpb25hcnksIGZp
cnN0UGFydHlVUkxTdHJpbmdLZXkuZ2V0KCkpKTsKKyAgICAgICAgV0tTdHJpbmdSZWYgY25hbWVV
UkxTdHJpbmcgPSBzdGF0aWNfY2FzdDxXS1N0cmluZ1JlZj4oV0tEaWN0aW9uYXJ5R2V0SXRlbUZv
cktleShtZXNzYWdlQm9keURpY3Rpb25hcnksIGNuYW1lVVJMU3RyaW5nS2V5LmdldCgpKSk7Cisg
ICAgICAgIAorICAgICAgICBUZXN0Q29udHJvbGxlcjo6c2luZ2xldG9uKCkuc2V0U3RhdGlzdGlj
c0ZpcnN0UGFydHlIb3N0Q05BTUVEb21haW4oZmlyc3RQYXJ0eVVSTFN0cmluZywgY25hbWVVUkxT
dHJpbmcpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgaWYgKFdLU3RyaW5nSXNFcXVh
bFRvVVRGOENTdHJpbmcobWVzc2FnZU5hbWUsICJTdGF0aXN0aWNzU2V0VGhpcmRQYXJ0eUNOQU1F
RG9tYWluIikpIHsKKyAgICAgICAgQVNTRVJUKFdLR2V0VHlwZUlEKG1lc3NhZ2VCb2R5KSA9PSBX
S1N0cmluZ0dldFR5cGVJRCgpKTsKKyAgICAgICAgV0tTdHJpbmdSZWYgY25hbWVVUkxTdHJpbmcg
PSBzdGF0aWNfY2FzdDxXS1N0cmluZ1JlZj4obWVzc2FnZUJvZHkpOworICAgICAgICBUZXN0Q29u
dHJvbGxlcjo6c2luZ2xldG9uKCkuc2V0U3RhdGlzdGljc1RoaXJkUGFydHlDTkFNRURvbWFpbihj
bmFtZVVSTFN0cmluZyk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKICAgICBpZiAoV0tTdHJp
bmdJc0VxdWFsVG9VVEY4Q1N0cmluZyhtZXNzYWdlTmFtZSwgIlN0YXRpc3RpY3NSZXNldFRvQ29u
c2lzdGVudFN0YXRlIikpIHsKICAgICAgICAgaWYgKG1fc2hvdWxkRHVtcFJlc291cmNlTG9hZFN0
YXRpc3RpY3MpCiAgICAgICAgICAgICBtX3NhdmVkUmVzb3VyY2VMb2FkU3RhdGlzdGljcyA9IFRl
c3RDb250cm9sbGVyOjpzaW5nbGV0b24oKS5kdW1wUmVzb3VyY2VMb2FkU3RhdGlzdGljcygpOwpA
QCAtMTk0Niw2ICsxOTY3LDE4IEBAIHZvaWQgVGVzdEludm9jYXRpb246OmRpZFNldFRvU2FtZVNp
dGVTdHJpY3RDb29raWVzKCkKICAgICBXS1BhZ2VQb3N0TWVzc2FnZVRvSW5qZWN0ZWRCdW5kbGUo
VGVzdENvbnRyb2xsZXI6OnNpbmdsZXRvbigpLm1haW5XZWJWaWV3KCktPnBhZ2UoKSwgbWVzc2Fn
ZU5hbWUuZ2V0KCksIG51bGxwdHIpOwogfQogCit2b2lkIFRlc3RJbnZvY2F0aW9uOjpkaWRTZXRG
aXJzdFBhcnR5SG9zdENOQU1FRG9tYWluKCkKK3sKKyAgICBXS1JldGFpblB0cjxXS1N0cmluZ1Jl
Zj4gbWVzc2FnZU5hbWUgPSBhZG9wdFdLKFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJD
YWxsRGlkU2V0Rmlyc3RQYXJ0eUhvc3RDTkFNRURvbWFpbiIpKTsKKyAgICBXS1BhZ2VQb3N0TWVz
c2FnZVRvSW5qZWN0ZWRCdW5kbGUoVGVzdENvbnRyb2xsZXI6OnNpbmdsZXRvbigpLm1haW5XZWJW
aWV3KCktPnBhZ2UoKSwgbWVzc2FnZU5hbWUuZ2V0KCksIG51bGxwdHIpOworfQorCit2b2lkIFRl
c3RJbnZvY2F0aW9uOjpkaWRTZXRUaGlyZFBhcnR5Q05BTUVEb21haW4oKQoreworICAgIFdLUmV0
YWluUHRyPFdLU3RyaW5nUmVmPiBtZXNzYWdlTmFtZSA9IGFkb3B0V0soV0tTdHJpbmdDcmVhdGVX
aXRoVVRGOENTdHJpbmcoIkNhbGxEaWRTZXRUaGlyZFBhcnR5Q05BTUVEb21haW4iKSk7CisgICAg
V0tQYWdlUG9zdE1lc3NhZ2VUb0luamVjdGVkQnVuZGxlKFRlc3RDb250cm9sbGVyOjpzaW5nbGV0
b24oKS5tYWluV2ViVmlldygpLT5wYWdlKCksIG1lc3NhZ2VOYW1lLmdldCgpLCBudWxscHRyKTsK
K30KKwogdm9pZCBUZXN0SW52b2NhdGlvbjo6ZGlkUmVzZXRTdGF0aXN0aWNzVG9Db25zaXN0ZW50
U3RhdGUoKQogewogICAgIFdLUmV0YWluUHRyPFdLU3RyaW5nUmVmPiBtZXNzYWdlTmFtZSA9IGFk
b3B0V0soV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoIkNhbGxEaWRSZXNldFN0YXRpc3Rp
Y3NUb0NvbnNpc3RlbnRTdGF0ZSIpKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5u
ZXIvVGVzdEludm9jYXRpb24uaCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdEludm9jYXRp
b24uaAppbmRleCA2MjMxYjBjMjA0NDQ1YWQ2MGM5NWQzZTgxN2ZiMzBmNDc2ZjhlMWE1Li5lNDdj
NWMwNDlmYjAxNjE4YmYwYjg5MWU5ZjJiOTU4ODZhMDRiZmI0IDEwMDY0NAotLS0gYS9Ub29scy9X
ZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmgKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1
bm5lci9UZXN0SW52b2NhdGlvbi5oCkBAIC03Nyw2ICs3Nyw4IEBAIHB1YmxpYzoKICAgICB2b2lk
IGRpZFNldFNob3VsZEJsb2NrVGhpcmRQYXJ0eUNvb2tpZXMoKTsKICAgICB2b2lkIGRpZFNldEZp
cnN0UGFydHlXZWJzaXRlRGF0YVJlbW92YWxNb2RlKCk7CiAgICAgdm9pZCBkaWRTZXRUb1NhbWVT
aXRlU3RyaWN0Q29va2llcygpOworICAgIHZvaWQgZGlkU2V0Rmlyc3RQYXJ0eUhvc3RDTkFNRURv
bWFpbigpOworICAgIHZvaWQgZGlkU2V0VGhpcmRQYXJ0eUNOQU1FRG9tYWluKCk7CiAgICAgdm9p
ZCBkaWRSZXNldFN0YXRpc3RpY3NUb0NvbnNpc3RlbnRTdGF0ZSgpOwogICAgIHZvaWQgZGlkU2V0
QmxvY2tDb29raWVzRm9ySG9zdCgpOwogICAgIHZvaWQgZGlkU2V0U3RhdGlzdGljc0RlYnVnTW9k
ZSgpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hh
bmdlTG9nCmluZGV4IGU3NTM2ZDY1ZTcxYTZiNzEwY2YxNWE5ZGE2MTRlYTA3YmE2NmIxODQuLmUz
ZTY1MzEwNGVkNGZkYWYyOWVmMTkwODc4ZWI2NDkzM2M5N2NmMGUgMTAwNjQ0Ci0tLSBhL0xheW91
dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwz
MiBAQAorMjAyMC0wOC0wNSAgSm9obiBXaWxhbmRlciAgPHdpbGFuZGVyQGFwcGxlLmNvbT4KKwor
ICAgICAgICBFeHBlcmltZW50YWw6IENhcCB0aGUgZXhwaXJ5IG9mIHBlcnNpc3RlbnQgY29va2ll
cyBzZXQgaW4gM3JkLXBhcnR5IENOQU1FIGNsb2FrZWQgSFRUUCByZXNwb25zZXMKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxNTIwMQorICAgICAgICA8
cmRhcjovL3Byb2JsZW0vNTc0NTQ2MzM+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgKiBodHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvY25h
bWUtY2xvYWtpbmctdG9wLWNuYW1lLXN1Yi0xcC1jbmFtZS1leHBlY3RlZC50eHQ6IEFkZGVkLgor
ICAgICAgICAqIGh0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9jbmFtZS1jbG9ha2lu
Zy10b3AtY25hbWUtc3ViLTFwLWNuYW1lLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVz
dHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9jbmFtZS1jbG9ha2luZy10b3AtY25hbWUtc3ViLTNw
LWNuYW1lLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9yZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzL2NuYW1lLWNsb2FraW5nLXRvcC1jbmFtZS1zdWItM3AtY25hbWUuaHRt
bDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL2Nu
YW1lLWNsb2FraW5nLXRvcC1jbmFtZS1zdWItbWF0Y2hpbmctY25hbWUtZXhwZWN0ZWQudHh0OiBB
ZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvY25hbWUt
Y2xvYWtpbmctdG9wLWNuYW1lLXN1Yi1tYXRjaGluZy1jbmFtZS5odG1sOiBBZGRlZC4KKyAgICAg
ICAgKiBodHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvY25hbWUtY2xvYWtpbmctdG9w
LWNuYW1lLXN1Yi1uby1jbmFtZS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGh0dHAv
dGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9jbmFtZS1jbG9ha2luZy10b3AtY25hbWUtc3Vi
LW5vLWNuYW1lLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvcmVzb3VyY2VMb2Fk
U3RhdGlzdGljcy9jbmFtZS1jbG9ha2luZy10b3Atbm8tY25hbWUtc3ViLTFwLWNuYW1lLWV4cGVj
dGVkLnR4dDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0
aWNzL2NuYW1lLWNsb2FraW5nLXRvcC1uby1jbmFtZS1zdWItMXAtY25hbWUuaHRtbDogQWRkZWQu
CisgICAgICAgICogaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL2NuYW1lLWNsb2Fr
aW5nLXRvcC1uby1jbmFtZS1zdWItM3AtY25hbWUtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAg
ICAgKiBodHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvY25hbWUtY2xvYWtpbmctdG9w
LW5vLWNuYW1lLXN1Yi0zcC1jbmFtZS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3Rz
L3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvY25hbWUtY2xvYWtpbmctdG9wLW5vLWNuYW1lLXN1Yi1u
by1jbmFtZS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvcmVzb3Vy
Y2VMb2FkU3RhdGlzdGljcy9jbmFtZS1jbG9ha2luZy10b3Atbm8tY25hbWUtc3ViLW5vLWNuYW1l
Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL2lvcy13azIvVGVzdEV4cGVjdGF0aW9u
czoKKyAgICAgICAgICAgIE5ldyB0ZXN0cyBtYXJrZWQgYXMgWyBQYXNzIF0uCisgICAgICAgICog
cGxhdGZvcm0vbWFjLXdrMi9UZXN0RXhwZWN0YXRpb25zOgorICAgICAgICAgICAgTmV3IHRlc3Rz
IG1hcmtlZCBhcyBbIFBhc3MgXSBmb3IgQmlnU3VyKy4KKyAgICAgICAgKiBwbGF0Zm9ybS93azIv
VGVzdEV4cGVjdGF0aW9uczoKKyAgICAgICAgICAgIE5ldyB0ZXN0cyBtYXJrZWQgYXMgWyBTa2lw
IF0gaW4gZ2VuZXJhbC4KKwogMjAyMC0wOC0wNSAgTGF1cm8gTW91cmEgIDxsbW91cmFAaWdhbGlh
LmNvbT4KIAogICAgICAgICBbR1RLXVtXUEVdIG1lZGlhL21lZGlhLXNvdXJjZS9tZWRpYS1zb3Vy
Y2Utd2VibS5odG1sIGlzIHRpbWluZyBvdXQKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAv
dGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9jbmFtZS1jbG9ha2luZy10b3AtY25hbWUtc3Vi
LTFwLWNuYW1lLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvcmVzb3VyY2VM
b2FkU3RhdGlzdGljcy9jbmFtZS1jbG9ha2luZy10b3AtY25hbWUtc3ViLTFwLWNuYW1lLWV4cGVj
dGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi45NDhmYjVjY2Q2ZTU3MWIzM2M1NzJmNTZkMmY3NjZjZTA2NjNi
YTRjCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9yZXNvdXJjZUxv
YWRTdGF0aXN0aWNzL2NuYW1lLWNsb2FraW5nLXRvcC1jbmFtZS1zdWItMXAtY25hbWUtZXhwZWN0
ZWQudHh0CkBAIC0wLDAgKzEsMTAgQEAKK1Rlc3QgZm9yIENOQU1FIENsb2FraW5nOiBObyBjb29r
aWUgZXhwaXJ5IGNhcHBpbmcgaWYgdGhlIHRvcCBmcmFtZSBoYXMgYW4gYWx0ZXJuYXRlIENOQU1F
IGFuZCB0aGUgc3ViIHJlc291cmNlIGhhcyBhbiBhbHRlcm5hdGUgQ05BTUUgdGhhdCBtYXRjaGVz
IHRoZSBmaXJzdCBwYXJ0eSAobm90IGl0cyBDTkFNRSkuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxs
IHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBM
RVRFIi4KKworCitQQVNTIENvb2tpZSBuYW1lZCBjbmFtZVRlc3RDb29raWUgZXhwaXJlcyBpbiBt
b3JlIHRoYW4gNjA1NDAwIHNlY29uZHMuCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVl
CisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9y
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzL2NuYW1lLWNsb2FraW5nLXRvcC1jbmFtZS1zdWItMXAtY25h
bWUuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9j
bmFtZS1jbG9ha2luZy10b3AtY25hbWUtc3ViLTFwLWNuYW1lLmh0bWwKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOGM4
MzA0YjBiODljNTVmMmY3MGNkODAxNjg1NDAzZDI5ZGJhMmExNwotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2h0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9jbmFtZS1jbG9h
a2luZy10b3AtY25hbWUtc3ViLTFwLWNuYW1lLmh0bWwKQEAgLTAsMCArMSw2OCBAQAorPCFET0NU
WVBFIGh0bWw+Cis8aHRtbCBsYW5nPSJlbiI+Cis8aGVhZD4KKyAgICA8bWV0YSBjaGFyc2V0PSJV
VEYtOCI+CisgICAgPHNjcmlwdCBzcmM9Ii9qcy10ZXN0LXJlc291cmNlcy9qcy10ZXN0LmpzIj48
L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNyYz0iL2Nvb2tpZXMvcmVzb3VyY2VzL2Nvb2tpZS11dGls
aXRpZXMuanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvdXRpbC5qcyI+
PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keSBvbmxvYWQ9InJ1blRlc3QoKSI+Cis8c2NyaXB0Pgor
ICAgIGRlc2NyaXB0aW9uKCJUZXN0IGZvciBDTkFNRSBDbG9ha2luZzogTm8gY29va2llIGV4cGly
eSBjYXBwaW5nIGlmIHRoZSB0b3AgZnJhbWUgaGFzIGFuIGFsdGVybmF0ZSBDTkFNRSBhbmQgdGhl
IHN1YiByZXNvdXJjZSBoYXMgYW4gYWx0ZXJuYXRlIENOQU1FIHRoYXQgbWF0Y2hlcyB0aGUgZmly
c3QgcGFydHkgKG5vdCBpdHMgQ05BTUUpLiIpOworICAgIGpzVGVzdElzQXN5bmMgPSB0cnVlOwor
CisgICAgZnVuY3Rpb24gZmluaXNoVGVzdCgpIHsKKyAgICAgICAgcmVzZXRDb29raWVzRm9yQ3Vy
cmVudE9yaWdpbigpOworICAgICAgICBzZXRFbmFibGVGZWF0dXJlKGZhbHNlLCBmdW5jdGlvbigp
IHsKKyAgICAgICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAgICAgICB9KTsKKyAgICB9CisKKyAg
ICBmdW5jdGlvbiBjaGVja0Nvb2tpZUV4cGlyeShjb29raWVEYXRhLCBzZWNvbmRzLCBzaG91bGRC
ZUxlc3NUaGFuKSB7CisgICAgICAgIGxldCBub3cgPSBuZXcgRGF0ZSgpOworICAgICAgICBsZXQg
ZXhwaXJ5RGF0ZUluTWlsbGlzZWNvbmRzID0gbm93LmdldFRpbWUoKSArIChzZWNvbmRzICogMTAw
MCk7CisKKyAgICAgICAgaWYgKChjb29raWVEYXRhWyJleHBpcmVzIl0gPCBleHBpcnlEYXRlSW5N
aWxsaXNlY29uZHMpID09PSBzaG91bGRCZUxlc3NUaGFuKQorICAgICAgICAgICAgdGVzdFBhc3Nl
ZCgiQ29va2llIG5hbWVkICIgKyBjb29raWVEYXRhWyJuYW1lIl0gKyAiIGV4cGlyZXMgaW4gIiAr
IChzaG91bGRCZUxlc3NUaGFuID8gImxlc3MiIDogIm1vcmUiKSArICIgdGhhbiAiICsgc2Vjb25k
cyArICIgc2Vjb25kcy4iKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgdGVzdEZhaWxlZCgi
Q29va2llIG5hbWVkICIgKyBjb29raWVEYXRhWyJuYW1lIl0gKyAiIGV4cGlyZXMgaW4gIiArIChz
aG91bGRCZUxlc3NUaGFuID8gIm1vcmUiIDogImxlc3MiKSArICIgdGhhbiAiICsgc2Vjb25kcyAr
ICIgc2Vjb25kcy4iKTsKKyAgICB9CisKKyAgICBjb25zdCBvbmVXZWVrSW5TZWNvbmRzID0gNyAq
IDI0ICogNjAgKiA2MDsKKyAgICBjb25zdCBvdmVyT25lV2Vla0luU2Vjb25kcyA9IG9uZVdlZWtJ
blNlY29uZHMgKyA2MDA7CisgICAgY29uc3QgY29va2llTmFtZSA9ICJjbmFtZVRlc3RDb29raWUi
OworICAgIGNvbnN0IHN1YlBhdGhUb1NldEZpcnN0UGFydHlDb29raWUgPSAicmVzb3VyY2VzL3Nl
dC1jb29raWUucGhwP25hbWU9IiArIGNvb2tpZU5hbWUgKyAiJnZhbHVlPXZhbHVlJmR1bW15PSIg
KyBNYXRoLnJhbmRvbSgpOworCisgICAgZnVuY3Rpb24gc2V0QW5kQ2hlY2tDb29raWUoKSB7Cisg
ICAgICAgIGZldGNoKHN1YlBhdGhUb1NldEZpcnN0UGFydHlDb29raWUpLnRoZW4oZnVuY3Rpb24o
KSB7CisgICAgICAgICAgICBpZiAoaW50ZXJuYWxzKSB7CisgICAgICAgICAgICAgICAgbGV0IGNv
b2tpZXMgPSBpbnRlcm5hbHMuZ2V0Q29va2llcygpOworICAgICAgICAgICAgICAgIGlmICghY29v
a2llcy5sZW5ndGgpCisgICAgICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoIk5vIGNvb2tpZXMg
Zm91bmQuIik7CisgICAgICAgICAgICAgICAgZm9yIChsZXQgY29va2llIG9mIGNvb2tpZXMpIHsK
KyAgICAgICAgICAgICAgICAgICAgaWYgKGNvb2tpZS5uYW1lID09PSBjb29raWVOYW1lKSB7Cisg
ICAgICAgICAgICAgICAgICAgICAgICBjaGVja0Nvb2tpZUV4cGlyeShjb29raWUsIG92ZXJPbmVX
ZWVrSW5TZWNvbmRzLCBmYWxzZSk7CisgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAg
ICAgICAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJVbmtub3duIGNvb2tpZSAiICsgY29va2ll
Lm5hbWUgKyAiIGZvdW5kLiIpOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAg
ICAgfQorICAgICAgICAgICAgICAgIGZpbmlzaFRlc3QoKTsKKyAgICAgICAgICAgIH0KKyAgICAg
ICAgfSk7CisgICAgfQorCisgICAgY29uc3QgZmlyc3RQYXJ0eSA9ICJodHRwOi8vMTI3LjAuMC4x
OjgwMDAiOworICAgIGNvbnN0IGZpcnN0UGFydHlDTkFNRUZvclRlc3RpbmcgPSAiaHR0cDovL3Rl
c3R3ZWJraXQub3JnIjsKKyAgICBjb25zdCB0aGlyZFBhcnR5Q05BTUVGb3JUZXN0aW5nID0gZmly
c3RQYXJ0eTsKKworICAgIGZ1bmN0aW9uIHJ1blRlc3QoKSB7CisgICAgICAgIHNldEVuYWJsZUZl
YXR1cmUodHJ1ZSwgZnVuY3Rpb24oKSB7CisgICAgICAgICAgICB0ZXN0UnVubmVyLnN0YXRpc3Rp
Y3NTZXRGaXJzdFBhcnR5SG9zdENOQU1FRG9tYWluKGZpcnN0UGFydHksIGZpcnN0UGFydHlDTkFN
RUZvclRlc3RpbmcsIGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgICAgIHRlc3RSdW5uZXIuc3Rh
dGlzdGljc1NldFRoaXJkUGFydHlDTkFNRURvbWFpbih0aGlyZFBhcnR5Q05BTUVGb3JUZXN0aW5n
LCBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgICAgICAgICAgc2V0QW5kQ2hlY2tDb29raWUoKTsK
KyAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgIH0pOworICAgICAgICB9KTsKKyAgICB9
Cis8L3NjcmlwdD4KKzwvYm9keT4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMv
cmVzb3VyY2VMb2FkU3RhdGlzdGljcy9jbmFtZS1jbG9ha2luZy10b3AtY25hbWUtc3ViLTNwLWNu
YW1lLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3Rh
dGlzdGljcy9jbmFtZS1jbG9ha2luZy10b3AtY25hbWUtc3ViLTNwLWNuYW1lLWV4cGVjdGVkLnR4
dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi43MWY5MzMwM2U4NWFjMDZkMjk5YTljMDVjZjY2NTZjMDFlYjk3NTc4Ci0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0
aXN0aWNzL2NuYW1lLWNsb2FraW5nLXRvcC1jbmFtZS1zdWItM3AtY25hbWUtZXhwZWN0ZWQudHh0
CkBAIC0wLDAgKzEsMTAgQEAKK1Rlc3QgZm9yIENOQU1FIENsb2FraW5nOiBDb29raWUgZXhwaXJ5
IGNhcHBpbmcgaWYgdGhlIHRvcCBmcmFtZSBoYXMgYW4gYWx0ZXJuYXRlIENOQU1FIGFuZCB0aGUg
c3ViIHJlc291cmNlIGhhcyBhIGRpZmZlcmVudCBhbHRlcm5hdGUgQ05BTUUuCisKK09uIHN1Y2Nl
c3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5
ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNTIENvb2tpZSBuYW1lZCBjbmFtZVRlc3RDb29raWUg
ZXhwaXJlcyBpbiBsZXNzIHRoYW4gNjA1NDAwIHNlY29uZHMuCitQQVNTIHN1Y2Nlc3NmdWxseVBh
cnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL2NuYW1lLWNsb2FraW5nLXRvcC1jbmFt
ZS1zdWItM3AtY25hbWUuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvcmVzb3VyY2VMb2Fk
U3RhdGlzdGljcy9jbmFtZS1jbG9ha2luZy10b3AtY25hbWUtc3ViLTNwLWNuYW1lLmh0bWwKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uYjZhYzc4MWZmODFjMjFmYWI5OTk1OThlMWY2NWQ5NWFmN2ZkZGY5OAotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGlj
cy9jbmFtZS1jbG9ha2luZy10b3AtY25hbWUtc3ViLTNwLWNuYW1lLmh0bWwKQEAgLTAsMCArMSw3
NCBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbCBsYW5nPSJlbiI+Cis8aGVhZD4KKyAgICA8bWV0
YSBjaGFyc2V0PSJVVEYtOCI+CisgICAgPHNjcmlwdCBzcmM9Ii9qcy10ZXN0LXJlc291cmNlcy9q
cy10ZXN0LmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNyYz0iL2Nvb2tpZXMvcmVzb3VyY2Vz
L2Nvb2tpZS11dGlsaXRpZXMuanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPSJyZXNvdXJj
ZXMvdXRpbC5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keSBvbmxvYWQ9InJ1blRlc3QoKSI+
Cis8c2NyaXB0PgorICAgIGRlc2NyaXB0aW9uKCJUZXN0IGZvciBDTkFNRSBDbG9ha2luZzogQ29v
a2llIGV4cGlyeSBjYXBwaW5nIGlmIHRoZSB0b3AgZnJhbWUgaGFzIGFuIGFsdGVybmF0ZSBDTkFN
RSBhbmQgdGhlIHN1YiByZXNvdXJjZSBoYXMgYSBkaWZmZXJlbnQgYWx0ZXJuYXRlIENOQU1FLiIp
OworICAgIGpzVGVzdElzQXN5bmMgPSB0cnVlOworCisgICAgZnVuY3Rpb24gZmluaXNoVGVzdCgp
IHsKKyAgICAgICAgcmVzZXRDb29raWVzRm9yQ3VycmVudE9yaWdpbigpOworICAgICAgICBzZXRF
bmFibGVGZWF0dXJlKGZhbHNlLCBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgIGZpbmlzaEpTVGVz
dCgpOworICAgICAgICB9KTsKKyAgICB9CisKKyAgICBjb25zdCBvbmVXZWVrSW5TZWNvbmRzID0g
NyAqIDI0ICogNjAgKiA2MDsKKyAgICBjb25zdCBvdmVyT25lV2Vla0luU2Vjb25kcyA9IG9uZVdl
ZWtJblNlY29uZHMgKyA2MDA7CisgICAgY29uc3QgdW5kZXJPbmVXZWVrSW5TZWNvbmRzID0gb25l
V2Vla0luU2Vjb25kcyAtIDYwMDsKKworICAgIGZ1bmN0aW9uIGNoZWNrQ29va2llRXhwaXJ5KGNv
b2tpZURhdGEsIHNlY29uZHMsIHNob3VsZEJlTGVzc1RoYW4pIHsKKyAgICAgICAgbGV0IG5vdyA9
IG5ldyBEYXRlKCk7CisgICAgICAgIGxldCBleHBpcnlEYXRlSW5NaWxsaXNlY29uZHMgPSBub3cu
Z2V0VGltZSgpICsgKHNlY29uZHMgKiAxMDAwKTsKKworICAgICAgICBpZiAoKGNvb2tpZURhdGFb
ImV4cGlyZXMiXSA8IGV4cGlyeURhdGVJbk1pbGxpc2Vjb25kcykgPT09IHNob3VsZEJlTGVzc1Ro
YW4pIHsKKyAgICAgICAgICAgIGxldCB1bmRlck9uZVdlZWtFeHBpcnlEYXRlSW5NaWxsaXNlY29u
ZHMgPSBub3cuZ2V0VGltZSgpICsgKHVuZGVyT25lV2Vla0luU2Vjb25kcyAqIDEwMDApOworICAg
ICAgICAgICAgaWYgKGNvb2tpZURhdGFbImV4cGlyZXMiXSA8IHVuZGVyT25lV2Vla0V4cGlyeURh
dGVJbk1pbGxpc2Vjb25kcykKKyAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJDb29raWUgbmFt
ZWQgIiArIGNvb2tpZURhdGFbIm5hbWUiXSArICIgd2FzIGNhcHBlZCB0b28gbG93LiIpOworICAg
ICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoIkNvb2tpZSBuYW1lZCAi
ICsgY29va2llRGF0YVsibmFtZSJdICsgIiBleHBpcmVzIGluICIgKyAoc2hvdWxkQmVMZXNzVGhh
biA/ICJsZXNzIiA6ICJtb3JlIikgKyAiIHRoYW4gIiArIHNlY29uZHMgKyAiIHNlY29uZHMuIik7
CisgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgdGVzdEZhaWxlZCgiQ29va2llIG5hbWVkICIg
KyBjb29raWVEYXRhWyJuYW1lIl0gKyAiIGV4cGlyZXMgaW4gIiArIChzaG91bGRCZUxlc3NUaGFu
ID8gIm1vcmUiIDogImxlc3MiKSArICIgdGhhbiAiICsgc2Vjb25kcyArICIgc2Vjb25kcy4iKTsK
KyAgICB9CisKKyAgICBjb25zdCBjb29raWVOYW1lID0gImNuYW1lVGVzdENvb2tpZSI7CisgICAg
Y29uc3Qgc3ViUGF0aFRvU2V0Rmlyc3RQYXJ0eUNvb2tpZSA9ICJyZXNvdXJjZXMvc2V0LWNvb2tp
ZS5waHA/bmFtZT0iICsgY29va2llTmFtZSArICImdmFsdWU9dmFsdWUmZHVtbXk9IiArIE1hdGgu
cmFuZG9tKCk7CisKKyAgICBmdW5jdGlvbiBzZXRBbmRDaGVja0Nvb2tpZSgpIHsKKyAgICAgICAg
ZmV0Y2goc3ViUGF0aFRvU2V0Rmlyc3RQYXJ0eUNvb2tpZSkudGhlbihmdW5jdGlvbigpIHsKKyAg
ICAgICAgICAgIGlmIChpbnRlcm5hbHMpIHsKKyAgICAgICAgICAgICAgICBsZXQgY29va2llcyA9
IGludGVybmFscy5nZXRDb29raWVzKCk7CisgICAgICAgICAgICAgICAgaWYgKCFjb29raWVzLmxl
bmd0aCkKKyAgICAgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiTm8gY29va2llcyBmb3VuZC4i
KTsKKyAgICAgICAgICAgICAgICBmb3IgKGxldCBjb29raWUgb2YgY29va2llcykgeworICAgICAg
ICAgICAgICAgICAgICBpZiAoY29va2llLm5hbWUgPT09IGNvb2tpZU5hbWUpIHsKKyAgICAgICAg
ICAgICAgICAgICAgICAgIGNoZWNrQ29va2llRXhwaXJ5KGNvb2tpZSwgb3Zlck9uZVdlZWtJblNl
Y29uZHMsIHRydWUpOworICAgICAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAg
ICAgICAgICAgICAgdGVzdEZhaWxlZCgiVW5rbm93biBjb29raWUgIiArIGNvb2tpZS5uYW1lICsg
IiBmb3VuZC4iKTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgICAgICBmaW5pc2hUZXN0KCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0pOwor
ICAgIH0KKworICAgIGNvbnN0IGZpcnN0UGFydHkgPSAiaHR0cDovLzEyNy4wLjAuMTo4MDAwIjsK
KyAgICBjb25zdCBmaXJzdFBhcnR5Q05BTUVGb3JUZXN0aW5nID0gImh0dHA6Ly90ZXN0d2Via2l0
Lm9yZyI7CisgICAgY29uc3QgdGhpcmRQYXJ0eUNOQU1FRm9yVGVzdGluZyA9ICJodHRwOi8vM3Jk
cGFydHl0ZXN0d2Via2l0Lm9yZyI7CisKKyAgICBmdW5jdGlvbiBydW5UZXN0KCkgeworICAgICAg
ICBzZXRFbmFibGVGZWF0dXJlKHRydWUsIGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgdGVzdFJ1
bm5lci5zdGF0aXN0aWNzU2V0Rmlyc3RQYXJ0eUhvc3RDTkFNRURvbWFpbihmaXJzdFBhcnR5LCBm
aXJzdFBhcnR5Q05BTUVGb3JUZXN0aW5nLCBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgICAgICB0
ZXN0UnVubmVyLnN0YXRpc3RpY3NTZXRUaGlyZFBhcnR5Q05BTUVEb21haW4odGhpcmRQYXJ0eUNO
QU1FRm9yVGVzdGluZywgZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAgICAgICAgIHNldEFuZENo
ZWNrQ29va2llKCk7CisgICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAgICB9KTsKKyAgICAg
ICAgfSk7CisgICAgfQorPC9zY3JpcHQ+Cis8L2JvZHk+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvY25hbWUtY2xvYWtpbmctdG9wLWNu
YW1lLXN1Yi1tYXRjaGluZy1jbmFtZS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvY25hbWUtY2xvYWtpbmctdG9wLWNuYW1lLXN1Yi1t
YXRjaGluZy1jbmFtZS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNTgxOGFlMTM0NWFlYzJjMDIz
ZmI3NjdkNmVjNWFiMWRhZWRkZmRlYQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0
dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9jbmFtZS1jbG9ha2luZy10b3AtY25hbWUt
c3ViLW1hdGNoaW5nLWNuYW1lLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDEwIEBACitUZXN0IGZv
ciBDTkFNRSBDbG9ha2luZzogTm8gY29va2llIGV4cGlyeSBjYXBwaW5nIGlmIHRoZSB0b3AgZnJh
bWUgaGFzIGFuIGFsdGVybmF0ZSBDTkFNRSBhbmQgdGhlIHN1YiByZXNvdXJjZSBoYXMgbWF0Y2hp
bmcgYWx0ZXJuYXRlIENOQU1FLgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMg
b2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworUEFT
UyBDb29raWUgbmFtZWQgY25hbWVUZXN0Q29va2llIGV4cGlyZXMgaW4gbW9yZSB0aGFuIDYwNTQw
MCBzZWNvbmRzLgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBM
RVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3Rh
dGlzdGljcy9jbmFtZS1jbG9ha2luZy10b3AtY25hbWUtc3ViLW1hdGNoaW5nLWNuYW1lLmh0bWwg
Yi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvY25hbWUtY2xv
YWtpbmctdG9wLWNuYW1lLXN1Yi1tYXRjaGluZy1jbmFtZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmY5ZmEx
ZjAzYmVmZWQ0NjZmZTY1NWViYzc2MzNlYTNiZGQ1ZGFkMjkKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9odHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvY25hbWUtY2xvYWtp
bmctdG9wLWNuYW1lLXN1Yi1tYXRjaGluZy1jbmFtZS5odG1sCkBAIC0wLDAgKzEsNjggQEAKKzwh
RE9DVFlQRSBodG1sPgorPGh0bWwgbGFuZz0iZW4iPgorPGhlYWQ+CisgICAgPG1ldGEgY2hhcnNl
dD0iVVRGLTgiPgorICAgIDxzY3JpcHQgc3JjPSIvanMtdGVzdC1yZXNvdXJjZXMvanMtdGVzdC5q
cyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9Ii9jb29raWVzL3Jlc291cmNlcy9jb29raWUt
dXRpbGl0aWVzLmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3V0aWwu
anMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHkgb25sb2FkPSJydW5UZXN0KCkiPgorPHNjcmlw
dD4KKyAgICBkZXNjcmlwdGlvbigiVGVzdCBmb3IgQ05BTUUgQ2xvYWtpbmc6IE5vIGNvb2tpZSBl
eHBpcnkgY2FwcGluZyBpZiB0aGUgdG9wIGZyYW1lIGhhcyBhbiBhbHRlcm5hdGUgQ05BTUUgYW5k
IHRoZSBzdWIgcmVzb3VyY2UgaGFzIG1hdGNoaW5nIGFsdGVybmF0ZSBDTkFNRS4iKTsKKyAgICBq
c1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKworICAgIGZ1bmN0aW9uIGZpbmlzaFRlc3QoKSB7CisgICAg
ICAgIHJlc2V0Q29va2llc0ZvckN1cnJlbnRPcmlnaW4oKTsKKyAgICAgICAgc2V0RW5hYmxlRmVh
dHVyZShmYWxzZSwgZnVuY3Rpb24oKSB7CisgICAgICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAg
ICAgICAgfSk7CisgICAgfQorCisgICAgZnVuY3Rpb24gY2hlY2tDb29raWVFeHBpcnkoY29va2ll
RGF0YSwgc2Vjb25kcywgc2hvdWxkQmVMZXNzVGhhbikgeworICAgICAgICBsZXQgbm93ID0gbmV3
IERhdGUoKTsKKyAgICAgICAgbGV0IGV4cGlyeURhdGVJbk1pbGxpc2Vjb25kcyA9IG5vdy5nZXRU
aW1lKCkgKyAoc2Vjb25kcyAqIDEwMDApOworCisgICAgICAgIGlmICgoY29va2llRGF0YVsiZXhw
aXJlcyJdIDwgZXhwaXJ5RGF0ZUluTWlsbGlzZWNvbmRzKSA9PT0gc2hvdWxkQmVMZXNzVGhhbikK
KyAgICAgICAgICAgIHRlc3RQYXNzZWQoIkNvb2tpZSBuYW1lZCAiICsgY29va2llRGF0YVsibmFt
ZSJdICsgIiBleHBpcmVzIGluICIgKyAoc2hvdWxkQmVMZXNzVGhhbiA/ICJsZXNzIiA6ICJtb3Jl
IikgKyAiIHRoYW4gIiArIHNlY29uZHMgKyAiIHNlY29uZHMuIik7CisgICAgICAgIGVsc2UKKyAg
ICAgICAgICAgIHRlc3RGYWlsZWQoIkNvb2tpZSBuYW1lZCAiICsgY29va2llRGF0YVsibmFtZSJd
ICsgIiBleHBpcmVzIGluICIgKyAoc2hvdWxkQmVMZXNzVGhhbiA/ICJtb3JlIiA6ICJsZXNzIikg
KyAiIHRoYW4gIiArIHNlY29uZHMgKyAiIHNlY29uZHMuIik7CisgICAgfQorCisgICAgY29uc3Qg
b25lV2Vla0luU2Vjb25kcyA9IDcgKiAyNCAqIDYwICogNjA7CisgICAgY29uc3Qgb3Zlck9uZVdl
ZWtJblNlY29uZHMgPSBvbmVXZWVrSW5TZWNvbmRzICsgNjAwOworICAgIGNvbnN0IGNvb2tpZU5h
bWUgPSAiY25hbWVUZXN0Q29va2llIjsKKyAgICBjb25zdCBzdWJQYXRoVG9TZXRGaXJzdFBhcnR5
Q29va2llID0gInJlc291cmNlcy9zZXQtY29va2llLnBocD9uYW1lPSIgKyBjb29raWVOYW1lICsg
IiZ2YWx1ZT12YWx1ZSZkdW1teT0iICsgTWF0aC5yYW5kb20oKTsKKworICAgIGZ1bmN0aW9uIHNl
dEFuZENoZWNrQ29va2llKCkgeworICAgICAgICBmZXRjaChzdWJQYXRoVG9TZXRGaXJzdFBhcnR5
Q29va2llKS50aGVuKGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgaWYgKGludGVybmFscykgewor
ICAgICAgICAgICAgICAgIGxldCBjb29raWVzID0gaW50ZXJuYWxzLmdldENvb2tpZXMoKTsKKyAg
ICAgICAgICAgICAgICBpZiAoIWNvb2tpZXMubGVuZ3RoKQorICAgICAgICAgICAgICAgICAgICB0
ZXN0RmFpbGVkKCJObyBjb29raWVzIGZvdW5kLiIpOworICAgICAgICAgICAgICAgIGZvciAobGV0
IGNvb2tpZSBvZiBjb29raWVzKSB7CisgICAgICAgICAgICAgICAgICAgIGlmIChjb29raWUubmFt
ZSA9PT0gY29va2llTmFtZSkgeworICAgICAgICAgICAgICAgICAgICAgICAgY2hlY2tDb29raWVF
eHBpcnkoY29va2llLCBvdmVyT25lV2Vla0luU2Vjb25kcywgZmFsc2UpOworICAgICAgICAgICAg
ICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiVW5r
bm93biBjb29raWUgIiArIGNvb2tpZS5uYW1lICsgIiBmb3VuZC4iKTsKKyAgICAgICAgICAgICAg
ICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBmaW5pc2hUZXN0KCk7
CisgICAgICAgICAgICB9CisgICAgICAgIH0pOworICAgIH0KKworICAgIGNvbnN0IGZpcnN0UGFy
dHkgPSAiaHR0cDovLzEyNy4wLjAuMTo4MDAwIjsKKyAgICBjb25zdCBmaXJzdFBhcnR5Q05BTUVG
b3JUZXN0aW5nID0gImh0dHA6Ly90ZXN0d2Via2l0Lm9yZyI7CisgICAgY29uc3QgdGhpcmRQYXJ0
eUNOQU1FRm9yVGVzdGluZyA9IGZpcnN0UGFydHlDTkFNRUZvclRlc3Rpbmc7CisKKyAgICBmdW5j
dGlvbiBydW5UZXN0KCkgeworICAgICAgICBzZXRFbmFibGVGZWF0dXJlKHRydWUsIGZ1bmN0aW9u
KCkgeworICAgICAgICAgICAgdGVzdFJ1bm5lci5zdGF0aXN0aWNzU2V0Rmlyc3RQYXJ0eUhvc3RD
TkFNRURvbWFpbihmaXJzdFBhcnR5LCBmaXJzdFBhcnR5Q05BTUVGb3JUZXN0aW5nLCBmdW5jdGlv
bigpIHsKKyAgICAgICAgICAgICAgICB0ZXN0UnVubmVyLnN0YXRpc3RpY3NTZXRUaGlyZFBhcnR5
Q05BTUVEb21haW4odGhpcmRQYXJ0eUNOQU1FRm9yVGVzdGluZywgZnVuY3Rpb24oKSB7CisgICAg
ICAgICAgICAgICAgICAgIHNldEFuZENoZWNrQ29va2llKCk7CisgICAgICAgICAgICAgICAgfSk7
CisgICAgICAgICAgICB9KTsKKyAgICAgICAgfSk7CisgICAgfQorPC9zY3JpcHQ+Cis8L2JvZHk+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3Rp
Y3MvY25hbWUtY2xvYWtpbmctdG9wLWNuYW1lLXN1Yi1uby1jbmFtZS1leHBlY3RlZC50eHQgYi9M
YXlvdXRUZXN0cy9odHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvY25hbWUtY2xvYWtp
bmctdG9wLWNuYW1lLXN1Yi1uby1jbmFtZS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYjY1MjBk
ZWUzOTE1ZTQyMmVjYjBjYjQ5NGRkNDk0N2QyNTlhNzY2NgotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2h0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9jbmFtZS1jbG9ha2lu
Zy10b3AtY25hbWUtc3ViLW5vLWNuYW1lLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDEwIEBACitU
ZXN0IGZvciBDTkFNRSBDbG9ha2luZzogTm8gY29va2llIGV4cGlyeSBjYXBwaW5nIGlmIHRoZSB0
b3AgZnJhbWUgaGFzIGFuIGFsdGVybmF0ZSBDTkFNRSBhbmQgdGhlIHN1YiByZXNvdXJjZSBoYXMg
bm8gYWx0ZXJuYXRlIENOQU1FLgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMg
b2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworUEFT
UyBDb29raWUgbmFtZWQgY25hbWVUZXN0Q29va2llIGV4cGlyZXMgaW4gbW9yZSB0aGFuIDYwNTQw
MCBzZWNvbmRzLgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBM
RVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3Rh
dGlzdGljcy9jbmFtZS1jbG9ha2luZy10b3AtY25hbWUtc3ViLW5vLWNuYW1lLmh0bWwgYi9MYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvY25hbWUtY2xvYWtpbmct
dG9wLWNuYW1lLXN1Yi1uby1jbmFtZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjAxY2FkNDM5YjdmYzE2N2E2
Yzk0OWY3MGE5MTAwZTY5YTdjZmIyMzYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9o
dHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvY25hbWUtY2xvYWtpbmctdG9wLWNuYW1l
LXN1Yi1uby1jbmFtZS5odG1sCkBAIC0wLDAgKzEsNjUgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0
bWwgbGFuZz0iZW4iPgorPGhlYWQ+CisgICAgPG1ldGEgY2hhcnNldD0iVVRGLTgiPgorICAgIDxz
Y3JpcHQgc3JjPSIvanMtdGVzdC1yZXNvdXJjZXMvanMtdGVzdC5qcyI+PC9zY3JpcHQ+CisgICAg
PHNjcmlwdCBzcmM9Ii9jb29raWVzL3Jlc291cmNlcy9jb29raWUtdXRpbGl0aWVzLmpzIj48L3Nj
cmlwdD4KKyAgICA8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3V0aWwuanMiPjwvc2NyaXB0PgorPC9o
ZWFkPgorPGJvZHkgb25sb2FkPSJydW5UZXN0KCkiPgorPHNjcmlwdD4KKyAgICBkZXNjcmlwdGlv
bigiVGVzdCBmb3IgQ05BTUUgQ2xvYWtpbmc6IE5vIGNvb2tpZSBleHBpcnkgY2FwcGluZyBpZiB0
aGUgdG9wIGZyYW1lIGhhcyBhbiBhbHRlcm5hdGUgQ05BTUUgYW5kIHRoZSBzdWIgcmVzb3VyY2Ug
aGFzIG5vIGFsdGVybmF0ZSBDTkFNRS4iKTsKKyAgICBqc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKwor
ICAgIGZ1bmN0aW9uIGZpbmlzaFRlc3QoKSB7CisgICAgICAgIHJlc2V0Q29va2llc0ZvckN1cnJl
bnRPcmlnaW4oKTsKKyAgICAgICAgc2V0RW5hYmxlRmVhdHVyZShmYWxzZSwgZnVuY3Rpb24oKSB7
CisgICAgICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAgICAgICAgfSk7CisgICAgfQorCisgICAg
ZnVuY3Rpb24gY2hlY2tDb29raWVFeHBpcnkoY29va2llRGF0YSwgc2Vjb25kcywgc2hvdWxkQmVM
ZXNzVGhhbikgeworICAgICAgICBsZXQgbm93ID0gbmV3IERhdGUoKTsKKyAgICAgICAgbGV0IGV4
cGlyeURhdGVJbk1pbGxpc2Vjb25kcyA9IG5vdy5nZXRUaW1lKCkgKyAoc2Vjb25kcyAqIDEwMDAp
OworCisgICAgICAgIGlmICgoY29va2llRGF0YVsiZXhwaXJlcyJdIDwgZXhwaXJ5RGF0ZUluTWls
bGlzZWNvbmRzKSA9PT0gc2hvdWxkQmVMZXNzVGhhbikKKyAgICAgICAgICAgIHRlc3RQYXNzZWQo
IkNvb2tpZSBuYW1lZCAiICsgY29va2llRGF0YVsibmFtZSJdICsgIiBleHBpcmVzIGluICIgKyAo
c2hvdWxkQmVMZXNzVGhhbiA/ICJsZXNzIiA6ICJtb3JlIikgKyAiIHRoYW4gIiArIHNlY29uZHMg
KyAiIHNlY29uZHMuIik7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHRlc3RGYWlsZWQoIkNv
b2tpZSBuYW1lZCAiICsgY29va2llRGF0YVsibmFtZSJdICsgIiBleHBpcmVzIGluICIgKyAoc2hv
dWxkQmVMZXNzVGhhbiA/ICJtb3JlIiA6ICJsZXNzIikgKyAiIHRoYW4gIiArIHNlY29uZHMgKyAi
IHNlY29uZHMuIik7CisgICAgfQorCisgICAgY29uc3Qgb25lV2Vla0luU2Vjb25kcyA9IDcgKiAy
NCAqIDYwICogNjA7CisgICAgY29uc3Qgb3Zlck9uZVdlZWtJblNlY29uZHMgPSBvbmVXZWVrSW5T
ZWNvbmRzICsgNjAwOworICAgIGNvbnN0IGNvb2tpZU5hbWUgPSAiY25hbWVUZXN0Q29va2llIjsK
KyAgICBjb25zdCBzdWJQYXRoVG9TZXRGaXJzdFBhcnR5Q29va2llID0gInJlc291cmNlcy9zZXQt
Y29va2llLnBocD9uYW1lPSIgKyBjb29raWVOYW1lICsgIiZ2YWx1ZT12YWx1ZSZkdW1teT0iICsg
TWF0aC5yYW5kb20oKTsKKworICAgIGZ1bmN0aW9uIHNldEFuZENoZWNrQ29va2llKCkgeworICAg
ICAgICBmZXRjaChzdWJQYXRoVG9TZXRGaXJzdFBhcnR5Q29va2llKS50aGVuKGZ1bmN0aW9uKCkg
eworICAgICAgICAgICAgaWYgKGludGVybmFscykgeworICAgICAgICAgICAgICAgIGxldCBjb29r
aWVzID0gaW50ZXJuYWxzLmdldENvb2tpZXMoKTsKKyAgICAgICAgICAgICAgICBpZiAoIWNvb2tp
ZXMubGVuZ3RoKQorICAgICAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJObyBjb29raWVzIGZv
dW5kLiIpOworICAgICAgICAgICAgICAgIGZvciAobGV0IGNvb2tpZSBvZiBjb29raWVzKSB7Cisg
ICAgICAgICAgICAgICAgICAgIGlmIChjb29raWUubmFtZSA9PT0gY29va2llTmFtZSkgeworICAg
ICAgICAgICAgICAgICAgICAgICAgY2hlY2tDb29raWVFeHBpcnkoY29va2llLCBvdmVyT25lV2Vl
a0luU2Vjb25kcywgZmFsc2UpOworICAgICAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAg
ICAgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiVW5rbm93biBjb29raWUgIiArIGNvb2tpZS5u
YW1lICsgIiBmb3VuZC4iKTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAg
IH0KKyAgICAgICAgICAgICAgICBmaW5pc2hUZXN0KCk7CisgICAgICAgICAgICB9CisgICAgICAg
IH0pOworICAgIH0KKworICAgIGNvbnN0IGZpcnN0UGFydHkgPSAiaHR0cDovLzEyNy4wLjAuMTo4
MDAwIjsKKyAgICBjb25zdCBmaXJzdFBhcnR5Q05BTUVGb3JUZXN0aW5nID0gImh0dHA6Ly90ZXN0
d2Via2l0Lm9yZyI7CisKKyAgICBmdW5jdGlvbiBydW5UZXN0KCkgeworICAgICAgICBzZXRFbmFi
bGVGZWF0dXJlKHRydWUsIGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgdGVzdFJ1bm5lci5zdGF0
aXN0aWNzU2V0Rmlyc3RQYXJ0eUhvc3RDTkFNRURvbWFpbihmaXJzdFBhcnR5LCBmaXJzdFBhcnR5
Q05BTUVGb3JUZXN0aW5nLCBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgICAgICBzZXRBbmRDaGVj
a0Nvb2tpZSgpOworICAgICAgICAgICAgfSk7CisgICAgICAgIH0pOworICAgIH0KKzwvc2NyaXB0
PgorPC9ib2R5PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9yZXNvdXJjZUxv
YWRTdGF0aXN0aWNzL2NuYW1lLWNsb2FraW5nLXRvcC1uby1jbmFtZS1zdWItMXAtY25hbWUtZXhw
ZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNz
L2NuYW1lLWNsb2FraW5nLXRvcC1uby1jbmFtZS1zdWItMXAtY25hbWUtZXhwZWN0ZWQudHh0Cm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLmFiZmEyOTljY2FkNzBmNjUwZWI2MGE2ZTkwODFmYjkyMmMxNzQxMzkKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3Rp
Y3MvY25hbWUtY2xvYWtpbmctdG9wLW5vLWNuYW1lLXN1Yi0xcC1jbmFtZS1leHBlY3RlZC50eHQK
QEAgLTAsMCArMSwxMCBAQAorVGVzdCBmb3IgQ05BTUUgQ2xvYWtpbmc6IE5vIGNvb2tpZSBleHBp
cnkgY2FwcGluZyBpZiB0aGUgdG9wIGZyYW1lIGhhcyBubyBhbHRlcm5hdGUgQ05BTUUgYW5kIHRo
ZSBzdWIgcmVzb3VyY2UgaGFzIGFuIGFsdGVybmF0ZSBDTkFNRSB0aGF0IG1hdGNoZXMgdGhlIGZp
cnN0IHBhcnR5IChub3QgaXRzIENOQU1FKS4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEg
c2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgor
CisKK1BBU1MgQ29va2llIG5hbWVkIGNuYW1lVGVzdENvb2tpZSBleHBpcmVzIGluIG1vcmUgdGhh
biA2MDU0MDAgc2Vjb25kcy4KK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVT
VCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3Jlc291cmNl
TG9hZFN0YXRpc3RpY3MvY25hbWUtY2xvYWtpbmctdG9wLW5vLWNuYW1lLXN1Yi0xcC1jbmFtZS5o
dG1sIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL2NuYW1l
LWNsb2FraW5nLXRvcC1uby1jbmFtZS1zdWItMXAtY25hbWUuaHRtbApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yNzM3
NDY0NTgzYjVkNDgwNWJlYmY5M2E4NDBlNWQwNzc2NDQ4OGYxCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL2NuYW1lLWNsb2Fr
aW5nLXRvcC1uby1jbmFtZS1zdWItMXAtY25hbWUuaHRtbApAQCAtMCwwICsxLDY1IEBACis8IURP
Q1RZUEUgaHRtbD4KKzxodG1sIGxhbmc9ImVuIj4KKzxoZWFkPgorICAgIDxtZXRhIGNoYXJzZXQ9
IlVURi04Ij4KKyAgICA8c2NyaXB0IHNyYz0iL2pzLXRlc3QtcmVzb3VyY2VzL2pzLXRlc3QuanMi
Pjwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPSIvY29va2llcy9yZXNvdXJjZXMvY29va2llLXV0
aWxpdGllcy5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9InJlc291cmNlcy91dGlsLmpz
Ij48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5IG9ubG9hZD0icnVuVGVzdCgpIj4KKzxzY3JpcHQ+
CisgICAgZGVzY3JpcHRpb24oIlRlc3QgZm9yIENOQU1FIENsb2FraW5nOiBObyBjb29raWUgZXhw
aXJ5IGNhcHBpbmcgaWYgdGhlIHRvcCBmcmFtZSBoYXMgbm8gYWx0ZXJuYXRlIENOQU1FIGFuZCB0
aGUgc3ViIHJlc291cmNlIGhhcyBhbiBhbHRlcm5hdGUgQ05BTUUgdGhhdCBtYXRjaGVzIHRoZSBm
aXJzdCBwYXJ0eSAobm90IGl0cyBDTkFNRSkuIik7CisgICAganNUZXN0SXNBc3luYyA9IHRydWU7
CisKKyAgICBmdW5jdGlvbiBmaW5pc2hUZXN0KCkgeworICAgICAgICByZXNldENvb2tpZXNGb3JD
dXJyZW50T3JpZ2luKCk7CisgICAgICAgIHNldEVuYWJsZUZlYXR1cmUoZmFsc2UsIGZ1bmN0aW9u
KCkgeworICAgICAgICAgICAgZmluaXNoSlNUZXN0KCk7CisgICAgICAgIH0pOworICAgIH0KKwor
ICAgIGZ1bmN0aW9uIGNoZWNrQ29va2llRXhwaXJ5KGNvb2tpZURhdGEsIHNlY29uZHMsIHNob3Vs
ZEJlTGVzc1RoYW4pIHsKKyAgICAgICAgbGV0IG5vdyA9IG5ldyBEYXRlKCk7CisgICAgICAgIGxl
dCBleHBpcnlEYXRlSW5NaWxsaXNlY29uZHMgPSBub3cuZ2V0VGltZSgpICsgKHNlY29uZHMgKiAx
MDAwKTsKKworICAgICAgICBpZiAoKGNvb2tpZURhdGFbImV4cGlyZXMiXSA8IGV4cGlyeURhdGVJ
bk1pbGxpc2Vjb25kcykgPT09IHNob3VsZEJlTGVzc1RoYW4pCisgICAgICAgICAgICB0ZXN0UGFz
c2VkKCJDb29raWUgbmFtZWQgIiArIGNvb2tpZURhdGFbIm5hbWUiXSArICIgZXhwaXJlcyBpbiAi
ICsgKHNob3VsZEJlTGVzc1RoYW4gPyAibGVzcyIgOiAibW9yZSIpICsgIiB0aGFuICIgKyBzZWNv
bmRzICsgIiBzZWNvbmRzLiIpOworICAgICAgICBlbHNlCisgICAgICAgICAgICB0ZXN0RmFpbGVk
KCJDb29raWUgbmFtZWQgIiArIGNvb2tpZURhdGFbIm5hbWUiXSArICIgZXhwaXJlcyBpbiAiICsg
KHNob3VsZEJlTGVzc1RoYW4gPyAibW9yZSIgOiAibGVzcyIpICsgIiB0aGFuICIgKyBzZWNvbmRz
ICsgIiBzZWNvbmRzLiIpOworICAgIH0KKworICAgIGNvbnN0IG9uZVdlZWtJblNlY29uZHMgPSA3
ICogMjQgKiA2MCAqIDYwOworICAgIGNvbnN0IG92ZXJPbmVXZWVrSW5TZWNvbmRzID0gb25lV2Vl
a0luU2Vjb25kcyArIDYwMDsKKyAgICBjb25zdCBjb29raWVOYW1lID0gImNuYW1lVGVzdENvb2tp
ZSI7CisgICAgY29uc3Qgc3ViUGF0aFRvU2V0Rmlyc3RQYXJ0eUNvb2tpZSA9ICJyZXNvdXJjZXMv
c2V0LWNvb2tpZS5waHA/bmFtZT0iICsgY29va2llTmFtZSArICImdmFsdWU9dmFsdWUmZHVtbXk9
IiArIE1hdGgucmFuZG9tKCk7CisKKyAgICBmdW5jdGlvbiBzZXRBbmRDaGVja0Nvb2tpZSgpIHsK
KyAgICAgICAgZmV0Y2goc3ViUGF0aFRvU2V0Rmlyc3RQYXJ0eUNvb2tpZSkudGhlbihmdW5jdGlv
bigpIHsKKyAgICAgICAgICAgIGlmIChpbnRlcm5hbHMpIHsKKyAgICAgICAgICAgICAgICBsZXQg
Y29va2llcyA9IGludGVybmFscy5nZXRDb29raWVzKCk7CisgICAgICAgICAgICAgICAgaWYgKCFj
b29raWVzLmxlbmd0aCkKKyAgICAgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiTm8gY29va2ll
cyBmb3VuZC4iKTsKKyAgICAgICAgICAgICAgICBmb3IgKGxldCBjb29raWUgb2YgY29va2llcykg
eworICAgICAgICAgICAgICAgICAgICBpZiAoY29va2llLm5hbWUgPT09IGNvb2tpZU5hbWUpIHsK
KyAgICAgICAgICAgICAgICAgICAgICAgIGNoZWNrQ29va2llRXhwaXJ5KGNvb2tpZSwgb3Zlck9u
ZVdlZWtJblNlY29uZHMsIGZhbHNlKTsKKyAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAg
ICAgICAgICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoIlVua25vd24gY29va2llICIgKyBjb29r
aWUubmFtZSArICIgZm91bmQuIik7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAg
ICAgICB9CisgICAgICAgICAgICAgICAgZmluaXNoVGVzdCgpOworICAgICAgICAgICAgfQorICAg
ICAgICB9KTsKKyAgICB9CisKKyAgICBjb25zdCBmaXJzdFBhcnR5ID0gImh0dHA6Ly8xMjcuMC4w
LjE6ODAwMCI7CisgICAgY29uc3QgdGhpcmRQYXJ0eUNOQU1FRm9yVGVzdGluZyA9IGZpcnN0UGFy
dHk7CisKKyAgICBmdW5jdGlvbiBydW5UZXN0KCkgeworICAgICAgICBzZXRFbmFibGVGZWF0dXJl
KHRydWUsIGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgdGVzdFJ1bm5lci5zdGF0aXN0aWNzU2V0
VGhpcmRQYXJ0eUNOQU1FRG9tYWluKHRoaXJkUGFydHlDTkFNRUZvclRlc3RpbmcsIGZ1bmN0aW9u
KCkgeworICAgICAgICAgICAgICAgIHNldEFuZENoZWNrQ29va2llKCk7CisgICAgICAgICAgICB9
KTsKKyAgICAgICAgfSk7CisgICAgfQorPC9zY3JpcHQ+Cis8L2JvZHk+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9odHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvY25hbWUtY2xvYWtp
bmctdG9wLW5vLWNuYW1lLXN1Yi0zcC1jbmFtZS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9o
dHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvY25hbWUtY2xvYWtpbmctdG9wLW5vLWNu
YW1lLXN1Yi0zcC1jbmFtZS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDVkMmVkNmZkN2Y2MWM2
MWU3YzAwYjJlZTg1OGRjYTdmMzgxOGRlNAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2h0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9jbmFtZS1jbG9ha2luZy10b3Atbm8t
Y25hbWUtc3ViLTNwLWNuYW1lLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDEwIEBACitUZXN0IGZv
ciBDTkFNRSBDbG9ha2luZzogQ29va2llIGV4cGlyeSBjYXBwaW5nIGlmIHRoZSB0b3AgZnJhbWUg
aGFzIG5vIGFsdGVybmF0ZSBDTkFNRSBhbmQgdGhlIHN1YiByZXNvdXJjZSBoYXMgYW4gYWx0ZXJu
YXRlIENOQU1FLgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1Mi
IG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworUEFTUyBDb29raWUg
bmFtZWQgY25hbWVUZXN0Q29va2llIGV4cGlyZXMgaW4gbGVzcyB0aGFuIDYwNTQwMCBzZWNvbmRz
LgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9j
bmFtZS1jbG9ha2luZy10b3Atbm8tY25hbWUtc3ViLTNwLWNuYW1lLmh0bWwgYi9MYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvY25hbWUtY2xvYWtpbmctdG9wLW5v
LWNuYW1lLXN1Yi0zcC1jbmFtZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmI1YWM0OTdmOTMzNmUzMmNiYmZk
YTk3M2U5MGM0MGEzNzkwZGU4YTcKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRw
L3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvY25hbWUtY2xvYWtpbmctdG9wLW5vLWNuYW1l
LXN1Yi0zcC1jbmFtZS5odG1sCkBAIC0wLDAgKzEsNzEgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0
bWwgbGFuZz0iZW4iPgorPGhlYWQ+CisgICAgPG1ldGEgY2hhcnNldD0iVVRGLTgiPgorICAgIDxz
Y3JpcHQgc3JjPSIvanMtdGVzdC1yZXNvdXJjZXMvanMtdGVzdC5qcyI+PC9zY3JpcHQ+CisgICAg
PHNjcmlwdCBzcmM9Ii9jb29raWVzL3Jlc291cmNlcy9jb29raWUtdXRpbGl0aWVzLmpzIj48L3Nj
cmlwdD4KKyAgICA8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3V0aWwuanMiPjwvc2NyaXB0PgorPC9o
ZWFkPgorPGJvZHkgb25sb2FkPSJydW5UZXN0KCkiPgorPHNjcmlwdD4KKyAgICBkZXNjcmlwdGlv
bigiVGVzdCBmb3IgQ05BTUUgQ2xvYWtpbmc6IENvb2tpZSBleHBpcnkgY2FwcGluZyBpZiB0aGUg
dG9wIGZyYW1lIGhhcyBubyBhbHRlcm5hdGUgQ05BTUUgYW5kIHRoZSBzdWIgcmVzb3VyY2UgaGFz
IGFuIGFsdGVybmF0ZSBDTkFNRS4iKTsKKyAgICBqc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKworICAg
IGZ1bmN0aW9uIGZpbmlzaFRlc3QoKSB7CisgICAgICAgIHJlc2V0Q29va2llc0ZvckN1cnJlbnRP
cmlnaW4oKTsKKyAgICAgICAgc2V0RW5hYmxlRmVhdHVyZShmYWxzZSwgZnVuY3Rpb24oKSB7Cisg
ICAgICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAgICAgICAgfSk7CisgICAgfQorCisgICAgY29u
c3Qgb25lV2Vla0luU2Vjb25kcyA9IDcgKiAyNCAqIDYwICogNjA7CisgICAgY29uc3Qgb3Zlck9u
ZVdlZWtJblNlY29uZHMgPSBvbmVXZWVrSW5TZWNvbmRzICsgNjAwOworICAgIGNvbnN0IHVuZGVy
T25lV2Vla0luU2Vjb25kcyA9IG9uZVdlZWtJblNlY29uZHMgLSA2MDA7CisKKyAgICBmdW5jdGlv
biBjaGVja0Nvb2tpZUV4cGlyeShjb29raWVEYXRhLCBzZWNvbmRzLCBzaG91bGRCZUxlc3NUaGFu
KSB7CisgICAgICAgIGxldCBub3cgPSBuZXcgRGF0ZSgpOworICAgICAgICBsZXQgZXhwaXJ5RGF0
ZUluTWlsbGlzZWNvbmRzID0gbm93LmdldFRpbWUoKSArIChzZWNvbmRzICogMTAwMCk7CisKKyAg
ICAgICAgaWYgKChjb29raWVEYXRhWyJleHBpcmVzIl0gPCBleHBpcnlEYXRlSW5NaWxsaXNlY29u
ZHMpID09PSBzaG91bGRCZUxlc3NUaGFuKSB7CisgICAgICAgICAgICBsZXQgdW5kZXJPbmVXZWVr
RXhwaXJ5RGF0ZUluTWlsbGlzZWNvbmRzID0gbm93LmdldFRpbWUoKSArICh1bmRlck9uZVdlZWtJ
blNlY29uZHMgKiAxMDAwKTsKKyAgICAgICAgICAgIGlmIChjb29raWVEYXRhWyJleHBpcmVzIl0g
PCB1bmRlck9uZVdlZWtFeHBpcnlEYXRlSW5NaWxsaXNlY29uZHMpCisgICAgICAgICAgICAgICAg
dGVzdEZhaWxlZCgiQ29va2llIG5hbWVkICIgKyBjb29raWVEYXRhWyJuYW1lIl0gKyAiIHdhcyBj
YXBwZWQgdG9vIGxvdy4iKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICB0ZXN0
UGFzc2VkKCJDb29raWUgbmFtZWQgIiArIGNvb2tpZURhdGFbIm5hbWUiXSArICIgZXhwaXJlcyBp
biAiICsgKHNob3VsZEJlTGVzc1RoYW4gPyAibGVzcyIgOiAibW9yZSIpICsgIiB0aGFuICIgKyBz
ZWNvbmRzICsgIiBzZWNvbmRzLiIpOworICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgIHRlc3RG
YWlsZWQoIkNvb2tpZSBuYW1lZCAiICsgY29va2llRGF0YVsibmFtZSJdICsgIiBleHBpcmVzIGlu
ICIgKyAoc2hvdWxkQmVMZXNzVGhhbiA/ICJtb3JlIiA6ICJsZXNzIikgKyAiIHRoYW4gIiArIHNl
Y29uZHMgKyAiIHNlY29uZHMuIik7CisgICAgfQorCisgICAgY29uc3QgY29va2llTmFtZSA9ICJj
bmFtZVRlc3RDb29raWUiOworICAgIGNvbnN0IHN1YlBhdGhUb1NldEZpcnN0UGFydHlDb29raWUg
PSAicmVzb3VyY2VzL3NldC1jb29raWUucGhwP25hbWU9IiArIGNvb2tpZU5hbWUgKyAiJnZhbHVl
PXZhbHVlJmR1bW15PSIgKyBNYXRoLnJhbmRvbSgpOworCisgICAgZnVuY3Rpb24gc2V0QW5kQ2hl
Y2tDb29raWUoKSB7CisgICAgICAgIGZldGNoKHN1YlBhdGhUb1NldEZpcnN0UGFydHlDb29raWUp
LnRoZW4oZnVuY3Rpb24oKSB7CisgICAgICAgICAgICBpZiAoaW50ZXJuYWxzKSB7CisgICAgICAg
ICAgICAgICAgbGV0IGNvb2tpZXMgPSBpbnRlcm5hbHMuZ2V0Q29va2llcygpOworICAgICAgICAg
ICAgICAgIGlmICghY29va2llcy5sZW5ndGgpCisgICAgICAgICAgICAgICAgICAgIHRlc3RGYWls
ZWQoIk5vIGNvb2tpZXMgZm91bmQuIik7CisgICAgICAgICAgICAgICAgZm9yIChsZXQgY29va2ll
IG9mIGNvb2tpZXMpIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGNvb2tpZS5uYW1lID09PSBj
b29raWVOYW1lKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBjaGVja0Nvb2tpZUV4cGlyeShj
b29raWUsIG92ZXJPbmVXZWVrSW5TZWNvbmRzLCB0cnVlKTsKKyAgICAgICAgICAgICAgICAgICAg
fSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoIlVua25vd24gY29v
a2llICIgKyBjb29raWUubmFtZSArICIgZm91bmQuIik7CisgICAgICAgICAgICAgICAgICAgIH0K
KyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgZmluaXNoVGVzdCgpOworICAgICAg
ICAgICAgfQorICAgICAgICB9KTsKKyAgICB9CisKKyAgICBjb25zdCBmaXJzdFBhcnR5ID0gImh0
dHA6Ly8xMjcuMC4wLjE6ODAwMCI7CisgICAgY29uc3QgdGhpcmRQYXJ0eUNOQU1FRm9yVGVzdGlu
ZyA9ICJodHRwOi8vM3JkcGFydHl0ZXN0d2Via2l0Lm9yZyI7CisKKyAgICBmdW5jdGlvbiBydW5U
ZXN0KCkgeworICAgICAgICBzZXRFbmFibGVGZWF0dXJlKHRydWUsIGZ1bmN0aW9uKCkgeworICAg
ICAgICAgICAgdGVzdFJ1bm5lci5zdGF0aXN0aWNzU2V0VGhpcmRQYXJ0eUNOQU1FRG9tYWluKHRo
aXJkUGFydHlDTkFNRUZvclRlc3RpbmcsIGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgICAgIHNl
dEFuZENoZWNrQ29va2llKCk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgfSk7CisgICAgfQor
PC9zY3JpcHQ+Cis8L2JvZHk+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3Jl
c291cmNlTG9hZFN0YXRpc3RpY3MvY25hbWUtY2xvYWtpbmctdG9wLW5vLWNuYW1lLXN1Yi1uby1j
bmFtZS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0
YXRpc3RpY3MvY25hbWUtY2xvYWtpbmctdG9wLW5vLWNuYW1lLXN1Yi1uby1jbmFtZS1leHBlY3Rl
ZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNjA1Yzk5YzA0NzcwMjUzNmFlODI3MWQ2ZWRhMjkxYjFkNGY0MGJl
YwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvcmVzb3VyY2VMb2Fk
U3RhdGlzdGljcy9jbmFtZS1jbG9ha2luZy10b3Atbm8tY25hbWUtc3ViLW5vLWNuYW1lLWV4cGVj
dGVkLnR4dApAQCAtMCwwICsxLDEwIEBACitUZXN0IGZvciBDTkFNRSBDbG9ha2luZzogTm8gY29v
a2llIGV4cGlyeSBjYXBwaW5nIGlmIHRoZSB0b3AgZnJhbWUgaGFzIG5vIGFsdGVybmF0ZSBDTkFN
RSBhbmQgdGhlIHN1YiByZXNvdXJjZSBoYXMgbm8gYWx0ZXJuYXRlIENOQU1FLgorCitPbiBzdWNj
ZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBi
eSAiVEVTVCBDT01QTEVURSIuCisKKworUEFTUyBDb29raWUgbmFtZWQgY25hbWVUZXN0Q29va2ll
IGV4cGlyZXMgaW4gbW9yZSB0aGFuIDYwNTQwMCBzZWNvbmRzLgorUEFTUyBzdWNjZXNzZnVsbHlQ
YXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2h0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9jbmFtZS1jbG9ha2luZy10b3Atbm8t
Y25hbWUtc3ViLW5vLWNuYW1lLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3Jlc291cmNl
TG9hZFN0YXRpc3RpY3MvY25hbWUtY2xvYWtpbmctdG9wLW5vLWNuYW1lLXN1Yi1uby1jbmFtZS5o
dG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjY2M2Y5YmY2NjY4NWNhMDk0YTQ5ZTRmZGJjZjg5YjhlZjZiNTNmOTEK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0
YXRpc3RpY3MvY25hbWUtY2xvYWtpbmctdG9wLW5vLWNuYW1lLXN1Yi1uby1jbmFtZS5odG1sCkBA
IC0wLDAgKzEsNjAgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWwgbGFuZz0iZW4iPgorPGhlYWQ+
CisgICAgPG1ldGEgY2hhcnNldD0iVVRGLTgiPgorICAgIDxzY3JpcHQgc3JjPSIvanMtdGVzdC1y
ZXNvdXJjZXMvanMtdGVzdC5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9Ii9jb29raWVz
L3Jlc291cmNlcy9jb29raWUtdXRpbGl0aWVzLmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNy
Yz0icmVzb3VyY2VzL3V0aWwuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHkgb25sb2FkPSJy
dW5UZXN0KCkiPgorPHNjcmlwdD4KKyAgICBkZXNjcmlwdGlvbigiVGVzdCBmb3IgQ05BTUUgQ2xv
YWtpbmc6IE5vIGNvb2tpZSBleHBpcnkgY2FwcGluZyBpZiB0aGUgdG9wIGZyYW1lIGhhcyBubyBh
bHRlcm5hdGUgQ05BTUUgYW5kIHRoZSBzdWIgcmVzb3VyY2UgaGFzIG5vIGFsdGVybmF0ZSBDTkFN
RS4iKTsKKyAgICBqc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKworICAgIGZ1bmN0aW9uIGZpbmlzaFRl
c3QoKSB7CisgICAgICAgIHJlc2V0Q29va2llc0ZvckN1cnJlbnRPcmlnaW4oKTsKKyAgICAgICAg
c2V0RW5hYmxlRmVhdHVyZShmYWxzZSwgZnVuY3Rpb24oKSB7CisgICAgICAgICAgICBmaW5pc2hK
U1Rlc3QoKTsKKyAgICAgICAgfSk7CisgICAgfQorCisgICAgZnVuY3Rpb24gY2hlY2tDb29raWVF
eHBpcnkoY29va2llRGF0YSwgc2Vjb25kcywgc2hvdWxkQmVMZXNzVGhhbikgeworICAgICAgICBs
ZXQgbm93ID0gbmV3IERhdGUoKTsKKyAgICAgICAgbGV0IGV4cGlyeURhdGVJbk1pbGxpc2Vjb25k
cyA9IG5vdy5nZXRUaW1lKCkgKyAoc2Vjb25kcyAqIDEwMDApOworCisgICAgICAgIGlmICgoY29v
a2llRGF0YVsiZXhwaXJlcyJdIDwgZXhwaXJ5RGF0ZUluTWlsbGlzZWNvbmRzKSA9PT0gc2hvdWxk
QmVMZXNzVGhhbikKKyAgICAgICAgICAgIHRlc3RQYXNzZWQoIkNvb2tpZSBuYW1lZCAiICsgY29v
a2llRGF0YVsibmFtZSJdICsgIiBleHBpcmVzIGluICIgKyAoc2hvdWxkQmVMZXNzVGhhbiA/ICJs
ZXNzIiA6ICJtb3JlIikgKyAiIHRoYW4gIiArIHNlY29uZHMgKyAiIHNlY29uZHMuIik7CisgICAg
ICAgIGVsc2UKKyAgICAgICAgICAgIHRlc3RGYWlsZWQoIkNvb2tpZSBuYW1lZCAiICsgY29va2ll
RGF0YVsibmFtZSJdICsgIiBleHBpcmVzIGluICIgKyAoc2hvdWxkQmVMZXNzVGhhbiA/ICJtb3Jl
IiA6ICJsZXNzIikgKyAiIHRoYW4gIiArIHNlY29uZHMgKyAiIHNlY29uZHMuIik7CisgICAgfQor
CisgICAgY29uc3Qgb25lV2Vla0luU2Vjb25kcyA9IDcgKiAyNCAqIDYwICogNjA7CisgICAgY29u
c3Qgb3Zlck9uZVdlZWtJblNlY29uZHMgPSBvbmVXZWVrSW5TZWNvbmRzICsgNjAwOworICAgIGNv
bnN0IGNvb2tpZU5hbWUgPSAiY25hbWVUZXN0Q29va2llIjsKKyAgICBjb25zdCBzdWJQYXRoVG9T
ZXRGaXJzdFBhcnR5Q29va2llID0gInJlc291cmNlcy9zZXQtY29va2llLnBocD9uYW1lPSIgKyBj
b29raWVOYW1lICsgIiZ2YWx1ZT12YWx1ZSZkdW1teT0iICsgTWF0aC5yYW5kb20oKTsKKworICAg
IGZ1bmN0aW9uIHNldEFuZENoZWNrQ29va2llKCkgeworICAgICAgICBmZXRjaChzdWJQYXRoVG9T
ZXRGaXJzdFBhcnR5Q29va2llKS50aGVuKGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgaWYgKGlu
dGVybmFscykgeworICAgICAgICAgICAgICAgIGxldCBjb29raWVzID0gaW50ZXJuYWxzLmdldENv
b2tpZXMoKTsKKyAgICAgICAgICAgICAgICBpZiAoIWNvb2tpZXMubGVuZ3RoKQorICAgICAgICAg
ICAgICAgICAgICB0ZXN0RmFpbGVkKCJObyBjb29raWVzIGZvdW5kLiIpOworICAgICAgICAgICAg
ICAgIGZvciAobGV0IGNvb2tpZSBvZiBjb29raWVzKSB7CisgICAgICAgICAgICAgICAgICAgIGlm
IChjb29raWUubmFtZSA9PT0gY29va2llTmFtZSkgeworICAgICAgICAgICAgICAgICAgICAgICAg
Y2hlY2tDb29raWVFeHBpcnkoY29va2llLCBvdmVyT25lV2Vla0luU2Vjb25kcywgZmFsc2UpOwor
ICAgICAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICAgICAgdGVz
dEZhaWxlZCgiVW5rbm93biBjb29raWUgIiArIGNvb2tpZS5uYW1lICsgIiBmb3VuZC4iKTsKKyAg
ICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBm
aW5pc2hUZXN0KCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0pOworICAgIH0KKworICAgIGZ1
bmN0aW9uIHJ1blRlc3QoKSB7CisgICAgICAgIHNldEVuYWJsZUZlYXR1cmUodHJ1ZSwgZnVuY3Rp
b24oKSB7CisgICAgICAgICAgICBzZXRBbmRDaGVja0Nvb2tpZSgpOworICAgICAgICB9KTsKKyAg
ICB9Cis8L3NjcmlwdD4KKzwvYm9keT4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3Jt
L2lvcy13azIvVGVzdEV4cGVjdGF0aW9ucyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2lvcy13azIv
VGVzdEV4cGVjdGF0aW9ucwppbmRleCA5MzYxYzIxNmRlMGIzNzY5YzQ3YTNmNDgzNDU3YzlkZWM3
MjJhODM4Li5hOWY1ODVkYTZjNmQ1ZjVjNjNhMDg2NjI0OWNhOGJiYTFhYzNjZGMyIDEwMDY0NAot
LS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9pb3Mtd2syL1Rlc3RFeHBlY3RhdGlvbnMKKysrIGIv
TGF5b3V0VGVzdHMvcGxhdGZvcm0vaW9zLXdrMi9UZXN0RXhwZWN0YXRpb25zCkBAIC04Miw2ICs4
MiwxNSBAQCBzY3JvbGxpbmdjb29yZGluYXRvci9ub24tZmFzdC1zY3JvbGxhYmxlLXJlZ2lvbi10
cmFuc2Zvcm1lZC1pZnJhbWUuaHRtbCBbIFNraXAgXQogaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRT
dGF0aXN0aWNzL3N0cmlwLXJlZmVycmVyLXRvLW9yaWdpbi1mb3ItdGhpcmQtcGFydHktcmVkaXJl
Y3RzLmh0bWwgWyBQYXNzIF0KIGh0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9zdHJp
cC1yZWZlcnJlci10by1vcmlnaW4tZm9yLXRoaXJkLXBhcnR5LXJlcXVlc3RzLmh0bWwgWyBQYXNz
IF0KIAorIyBUaGUgQ05BTUUgYW5kIGNvb2tpZSB0cmFuc2Zvcm0gU1BJcyBhcmUgb25seSBhdmFp
bGFibGUgaW4gaU9TIDE0IGFuZCBhYm92ZS4KK2h0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlz
dGljcy9jbmFtZS1jbG9ha2luZy10b3AtY25hbWUtc3ViLTFwLWNuYW1lLmh0bWwgWyBQYXNzIF0K
K2h0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9jbmFtZS1jbG9ha2luZy10b3AtY25h
bWUtc3ViLTNwLWNuYW1lLmh0bWwgWyBQYXNzIF0KK2h0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3Rh
dGlzdGljcy9jbmFtZS1jbG9ha2luZy10b3AtY25hbWUtc3ViLW1hdGNoaW5nLWNuYW1lLmh0bWwg
WyBQYXNzIF0KK2h0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9jbmFtZS1jbG9ha2lu
Zy10b3AtY25hbWUtc3ViLW5vLWNuYW1lLmh0bWwgWyBQYXNzIF0KK2h0dHAvdGVzdHMvcmVzb3Vy
Y2VMb2FkU3RhdGlzdGljcy9jbmFtZS1jbG9ha2luZy10b3Atbm8tY25hbWUtc3ViLTFwLWNuYW1l
Lmh0bWwgWyBQYXNzIF0KK2h0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9jbmFtZS1j
bG9ha2luZy10b3Atbm8tY25hbWUtc3ViLTNwLWNuYW1lLmh0bWwgWyBQYXNzIF0KK2h0dHAvdGVz
dHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9jbmFtZS1jbG9ha2luZy10b3Atbm8tY25hbWUtc3Vi
LW5vLWNuYW1lLmh0bWwgWyBQYXNzIF0KKwogIy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLwogIyBFbmQgcGxhdGZvcm0tc3BlY2lmaWMgZGlyZWN0b3JpZXMuCiAjLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9t
YWMtd2syL1Rlc3RFeHBlY3RhdGlvbnMgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2syL1Rl
c3RFeHBlY3RhdGlvbnMKaW5kZXggZTMwOGRmYTg5ZWZjNGU4ZGJiZmNhNTdhMTc2NGI0M2QyMzIy
N2ZjMS4uMzY5ZDMzYjFlYTIwMjhmNWI2MjU0ZDhjNmNkZDZlYWJlZTU3YmY2YyAxMDA2NDQKLS0t
IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMi9UZXN0RXhwZWN0YXRpb25zCisrKyBiL0xh
eW91dFRlc3RzL3BsYXRmb3JtL21hYy13azIvVGVzdEV4cGVjdGF0aW9ucwpAQCAtNzEzLDYgKzcx
MywxNSBAQCBodHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvY2FwLWNhY2hlLW1heC1h
Z2UtZm9yLXByZXZhbGVudC1yZXNvdXJjZS5odG1sCiBbIENhdGFsaW5hKyBdIGh0dHAvdGVzdHMv
cmVzb3VyY2VMb2FkU3RhdGlzdGljcy9lbmZvcmNlLXNhbWVzaXRlLXN0cmljdC1iYXNlZC1vbi10
b3AtZnJhbWUtdW5pcXVlLXJlZGlyZWN0cy10by5odG1sIFsgUGFzcyBdCiBbIENhdGFsaW5hKyBd
IGh0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9lbmZvcmNlLXNhbWVzaXRlLXN0cmlj
dC1iYXNlZC1vbi10b3AtZnJhbWUtdW5pcXVlLXJlZGlyZWN0cy10by1kYXRhYmFzZS5odG1sIFsg
UGFzcyBdCiAKKyMgVGhlIENOQU1FIGFuZCBjb29raWUgdHJhbnNmb3JtIFNQSXMgYXJlIG9ubHkg
YXZhaWxhYmxlIGluIG1hY09TIEJpZyBTdXIgYW5kIGFib3ZlLgorWyBCaWdTdXIrIF0gaHR0cC90
ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL2NuYW1lLWNsb2FraW5nLXRvcC1jbmFtZS1zdWIt
MXAtY25hbWUuaHRtbCBbIFBhc3MgXQorWyBCaWdTdXIrIF0gaHR0cC90ZXN0cy9yZXNvdXJjZUxv
YWRTdGF0aXN0aWNzL2NuYW1lLWNsb2FraW5nLXRvcC1jbmFtZS1zdWItM3AtY25hbWUuaHRtbCBb
IFBhc3MgXQorWyBCaWdTdXIrIF0gaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL2Nu
YW1lLWNsb2FraW5nLXRvcC1jbmFtZS1zdWItbWF0Y2hpbmctY25hbWUuaHRtbCBbIFBhc3MgXQor
WyBCaWdTdXIrIF0gaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL2NuYW1lLWNsb2Fr
aW5nLXRvcC1jbmFtZS1zdWItbm8tY25hbWUuaHRtbCBbIFBhc3MgXQorWyBCaWdTdXIrIF0gaHR0
cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL2NuYW1lLWNsb2FraW5nLXRvcC1uby1jbmFt
ZS1zdWItMXAtY25hbWUuaHRtbCBbIFBhc3MgXQorWyBCaWdTdXIrIF0gaHR0cC90ZXN0cy9yZXNv
dXJjZUxvYWRTdGF0aXN0aWNzL2NuYW1lLWNsb2FraW5nLXRvcC1uby1jbmFtZS1zdWItM3AtY25h
bWUuaHRtbCBbIFBhc3MgXQorWyBCaWdTdXIrIF0gaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0
aXN0aWNzL2NuYW1lLWNsb2FraW5nLXRvcC1uby1jbmFtZS1zdWItbm8tY25hbWUuaHRtbCBbIFBh
c3MgXQorCiAjIFNraXBwZWQgaW4gZ2VuZXJhbCBleHBlY3RhdGlvbnMgc2luY2UgdGhleSBvbmx5
IHdvcmsgb24gaU9TIGFuZCBNYWMsIFdLMi4KIG1lZGlhL2RlYWN0aXZhdGUtYXVkaW8tc2Vzc2lv
bi5odG1sIFsgUGFzcyBdCiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL3drMi9U
ZXN0RXhwZWN0YXRpb25zIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2syL1Rlc3RFeHBlY3RhdGlv
bnMKaW5kZXggZDBkODZiMTAzMzY1MzJhZTIzOWRjM2QyN2RlZDI2MTg5MGJmZjgwZi4uNGVhMTRi
Y2U1ODhmNTIyZjFjYWY1OTYxYTZiZWYxNjg3NmYxZDI1MSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVz
dHMvcGxhdGZvcm0vd2syL1Rlc3RFeHBlY3RhdGlvbnMKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZv
cm0vd2syL1Rlc3RFeHBlY3RhdGlvbnMKQEAgLTczMCw2ICs3MzAsMTUgQEAgaHR0cC90ZXN0cy9y
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzL3NldC1hbGwtY29va2llcy10by1zYW1lLXNpdGUtc3RyaWN0
Lmh0bWwgWyBTa2kKIGh0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9lbmZvcmNlLXNh
bWVzaXRlLXN0cmljdC1iYXNlZC1vbi10b3AtZnJhbWUtdW5pcXVlLXJlZGlyZWN0cy10by5odG1s
IFsgU2tpcCBdCiBodHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvZW5mb3JjZS1zYW1l
c2l0ZS1zdHJpY3QtYmFzZWQtb24tdG9wLWZyYW1lLXVuaXF1ZS1yZWRpcmVjdHMtdG8tZGF0YWJh
c2UuaHRtbCBbIFNraXAgXQogCisjIFRoZSBDTkFNRSBhbmQgY29va2llIHRyYW5zZm9ybSBTUElz
IGFyZSBvbmx5IGF2YWlsYWJsZSBpbiBtYWNPUyBCaWcgU3VyICsgaU9TIDE0IGFuZCBhYm92ZS4K
K2h0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9jbmFtZS1jbG9ha2luZy10b3AtY25h
bWUtc3ViLTFwLWNuYW1lLmh0bWwgWyBTa2lwIF0KK2h0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3Rh
dGlzdGljcy9jbmFtZS1jbG9ha2luZy10b3AtY25hbWUtc3ViLTNwLWNuYW1lLmh0bWwgWyBTa2lw
IF0KK2h0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9jbmFtZS1jbG9ha2luZy10b3At
Y25hbWUtc3ViLW1hdGNoaW5nLWNuYW1lLmh0bWwgWyBTa2lwIF0KK2h0dHAvdGVzdHMvcmVzb3Vy
Y2VMb2FkU3RhdGlzdGljcy9jbmFtZS1jbG9ha2luZy10b3AtY25hbWUtc3ViLW5vLWNuYW1lLmh0
bWwgWyBTa2lwIF0KK2h0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9jbmFtZS1jbG9h
a2luZy10b3Atbm8tY25hbWUtc3ViLTFwLWNuYW1lLmh0bWwgWyBTa2lwIF0KK2h0dHAvdGVzdHMv
cmVzb3VyY2VMb2FkU3RhdGlzdGljcy9jbmFtZS1jbG9ha2luZy10b3Atbm8tY25hbWUtc3ViLTNw
LWNuYW1lLmh0bWwgWyBTa2lwIF0KK2h0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9j
bmFtZS1jbG9ha2luZy10b3Atbm8tY25hbWUtc3ViLW5vLWNuYW1lLmh0bWwgWyBTa2lwIF0KKwog
aHR0cC90ZXN0cy93ZWJzb2NrZXQvY29ubmVjdGlvbi1yZWZ1c2FsLWluLWZyYW1lLXJlc291cmNl
LWxvYWQtc3RhdGlzdGljcy5odG1sIFsgUGFzcyBdCiAjIFRoZXNlIGFyZSBvbmx5IHN1cHBvcnRl
ZCBiZWhpbmQgYSBjb21waWxlIHRpbWUgZmxhZyBpbiBtYWNPUyBIaWdoIFNpZXJyYSArIGlPUyAx
MSwgYW5kIGFib3ZlLgogaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL2Nvb2tpZS1k
ZWxldGlvbi5odG1sIFsgUGFzcyBUaW1lb3V0IF0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>406069</attachid>
            <date>2020-08-05 20:06:55 -0700</date>
            <delta_ts>2020-08-06 10:42:30 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-215201-20200805200654.patch</filename>
            <type>text/plain</type>
            <size>104051</size>
            <attacher name="John Wilander">wilander</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY1MzA4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDRiODFlZGU2ODU3NGFkNzZmOTk1NGQ3
NjhkODk3NzJkNDkzMTFlZmYuLmU4YjY1NTQyZjQyYmNlZmU3MDE3NTE0ZWE2ZWYzMWQyMzE5ODYx
ZTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMjAtMDgtMDUgIEpvaG4gV2lsYW5kZXIgIDx3aWxh
bmRlckBhcHBsZS5jb20+CisKKyAgICAgICAgRXhwZXJpbWVudGFsOiBDYXAgdGhlIGV4cGlyeSBv
ZiBwZXJzaXN0ZW50IGNvb2tpZXMgc2V0IGluIDNyZC1wYXJ0eSBDTkFNRSBjbG9ha2VkIEhUVFAg
cmVzcG9uc2VzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yMTUyMDEKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzU3NDU0NjMzPgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgY2hhbmdlIGRlZmluZXMg
SEFWRV9DRk5FVFdPUktfQ05BTUVfQU5EX0NPT0tJRV9UUkFOU0ZPUk1fU1BJLgorCisgICAgICAg
ICogd3RmL1BsYXRmb3JtSGF2ZS5oOgorCiAyMDIwLTA4LTA0ICBZdXN1a2UgU3V6dWtpICA8eXN1
enVraUBhcHBsZS5jb20+CiAKICAgICAgICAgW0pTQ10gVXNlIExhenlOZXZlckRlc3Ryb3llZCAm
IHN0ZDo6Y2FsbF9vbmNlIGZvciBjb21wbGV4IHNpbmdsZXRvbnMKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCAwYzU2
NjVkODFmYjQ2Nzc1MzI0ZjI3YmE4Y2JlNGZkMWQ2YzNhNzYzLi43MzIzNTE2MmZjZmI2YTJkZGUy
MGQ0NDk3ODAzMzkzODhkZDUxNGRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VM
b2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzIgQEAKKzIwMjAt
MDgtMDUgIEpvaG4gV2lsYW5kZXIgIDx3aWxhbmRlckBhcHBsZS5jb20+CisKKyAgICAgICAgRXhw
ZXJpbWVudGFsOiBDYXAgdGhlIGV4cGlyeSBvZiBwZXJzaXN0ZW50IGNvb2tpZXMgc2V0IGluIDNy
ZC1wYXJ0eSBDTkFNRSBjbG9ha2VkIEhUVFAgcmVzcG9uc2VzCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTUyMDEKKyAgICAgICAgPHJkYXI6Ly9wcm9i
bGVtLzU3NDU0NjMzPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIFRlc3RzOiBodHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvY25hbWUtY2xv
YWtpbmctdG9wLWNuYW1lLXN1Yi0xcC1jbmFtZS5odG1sCisgICAgICAgICAgICAgICBodHRwL3Rl
c3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvY25hbWUtY2xvYWtpbmctdG9wLWNuYW1lLXN1Yi0z
cC1jbmFtZS5odG1sCisgICAgICAgICAgICAgICBodHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRp
c3RpY3MvY25hbWUtY2xvYWtpbmctdG9wLWNuYW1lLXN1Yi1tYXRjaGluZy1jbmFtZS5odG1sCisg
ICAgICAgICAgICAgICBodHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvY25hbWUtY2xv
YWtpbmctdG9wLWNuYW1lLXN1Yi1uby1jbmFtZS5odG1sCisgICAgICAgICAgICAgICBodHRwL3Rl
c3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvY25hbWUtY2xvYWtpbmctdG9wLW5vLWNuYW1lLXN1
Yi0xcC1jbmFtZS5odG1sCisgICAgICAgICAgICAgICBodHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0
YXRpc3RpY3MvY25hbWUtY2xvYWtpbmctdG9wLW5vLWNuYW1lLXN1Yi0zcC1jbmFtZS5odG1sCisg
ICAgICAgICAgICAgICBodHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvY25hbWUtY2xv
YWtpbmctdG9wLW5vLWNuYW1lLXN1Yi1uby1jbmFtZS5odG1sCisKKyAgICAgICAgKiBwYWdlL1Nl
dHRpbmdzLnlhbWw6CisgICAgICAgICAgICBBZGRlZCB0aGUgb2ZmLWJ5LWRlZmF1bHQgZmxhZyBp
c0NOQU1FQ2xvYWtpbmdNaXRpZ2F0aW9uRW5hYmxlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3
b3JrL05ldHdvcmtTdG9yYWdlU2Vzc2lvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3Jr
U3RvcmFnZVNlc3Npb246OnJlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkIGNvbnN0KToKKyAg
ICAgICAgICAgIE5ldyBnZXR0ZXIgZm9yIHRoZSBJVFAgc2V0dGluZy4KKyAgICAgICAgKiBwbGF0
Zm9ybS9uZXR3b3JrL05ldHdvcmtTdG9yYWdlU2Vzc2lvbi5oOgorICAgICAgICAqIHBsYXRmb3Jt
L25ldHdvcmsvY29jb2EvTmV0d29ya1N0b3JhZ2VTZXNzaW9uQ29jb2EubW06CisgICAgICAgIChX
ZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb246OmNhcEV4cGlyeU9mUGVyc2lzdGVudENvb2tp
ZSk6CisgICAgICAgICAgICBCcm9rZSB0aGlzIGZ1bmN0aW9uIG91dCBzbyB0aGF0IGl0IGNhbiBi
ZSByZXVzZWQuCisgICAgICAgIChXZWJDb3JlOjpwYXJzZURPTUNvb2tpZSk6CisgICAgICAgICAg
ICBIZXJlJ3MgZnJvbSB3aGVyZSB0aGUgZnVuY3Rpb24gYWJvdmUgd2FzIGJyb2tlbiBvdXQuCisg
ICAgICAgICAgICBUaGUgZXhpc3RpbmcgZnVuY3Rpb25hbGl0eSBoYXMgYSB0ZXN0IGNhc2UuCisK
IDIwMjAtMDgtMDUgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBB
ZGQgY29uc3RydWN0b3IgZm9yIER5bmFtaWNzQ29tcHJlc3Nvck5vZGUKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL1BBTC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvQ2hhbmdlTG9n
CmluZGV4IDUxNTkwNjcyNDUwNzI4ZTI0ZjcxNjQxMWUwNDI3OGRhNzdmNzMyMGEuLjVlN2FhYzYx
NmQ4OThiYTZmYzliYTgxNmJlOTJlZjc5Y2FkOGZhNWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL1BBTC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvUEFML0NoYW5nZUxvZwpAQCAt
MSwzICsxLDE2IEBACisyMDIwLTA4LTA1ICBKb2huIFdpbGFuZGVyICA8d2lsYW5kZXJAYXBwbGUu
Y29tPgorCisgICAgICAgIEV4cGVyaW1lbnRhbDogQ2FwIHRoZSBleHBpcnkgb2YgcGVyc2lzdGVu
dCBjb29raWVzIHNldCBpbiAzcmQtcGFydHkgQ05BTUUgY2xvYWtlZCBIVFRQIHJlc3BvbnNlcwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE1MjAxCisg
ICAgICAgIDxyZGFyOi8vcHJvYmxlbS81NzQ1NDYzMz4KKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHBhbC9zcGkvY2YvQ0ZOZXR3b3JrU1BJLmg6Cisg
ICAgICAgICAgICBUaGlzIGNoYW5nZSBkZWNsYXJlcyB0d28gbmV3IHByb3BlcnRpZXMgb24gTlNV
UkxTZXNzaW9uVGFzazoKKyAgICAgICAgICAgIC0gIF9jb29raWVUcmFuc2Zvcm1DYWxsYmFjawor
ICAgICAgICAgICAgLSBfcmVzb2x2ZWRDTkFNRUNoYWluCisKIDIwMjAtMDgtMDQgIFBlciBBcm5l
IFZvbGxhbiAgPHB2b2xsYW5AYXBwbGUuY29tPgogCiAgICAgICAgIFtpT1NdIENoZWNrIHRoYXQg
QWNjZXNzaWJpbGl0eSBpcyBlbmFibGVkIHdoZW4gcmVjZWl2aW5nIHRoZSBlbmFibGUgQWNjZXNz
aWJpbGl0eSBub3RpZmljYXRpb24KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9n
IGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggNmVmNzU2NjU5ZDM4NzU0ZWRkYzQzMWZm
MDdlMjhkYjIzMzdjYmRjNC4uOGZlOTBhOWY0MGRjNDAyYjU5MmRmZjBjMDMxMDlhYTJjYzU3OWZm
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktp
dC9DaGFuZ2VMb2cKQEAgLTEsMyArMSw4OSBAQAorMjAyMC0wOC0wNSAgSm9obiBXaWxhbmRlciAg
PHdpbGFuZGVyQGFwcGxlLmNvbT4KKworICAgICAgICBFeHBlcmltZW50YWw6IENhcCB0aGUgZXhw
aXJ5IG9mIHBlcnNpc3RlbnQgY29va2llcyBzZXQgaW4gM3JkLXBhcnR5IENOQU1FIGNsb2FrZWQg
SFRUUCByZXNwb25zZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTIxNTIwMQorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNTc0NTQ2MzM+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBleHBlcmltZW50
YWwgZmVhdHVyZSBpcyBvZmYgYnkgZGVmYXVsdC4KKworICAgICAgICBDTkFNRSBjbG9ha2luZyBt
ZWFucyBhIGhvc3QgcmVzb2x2ZXMgdG8gYSBhIGRpZmZlcmVudCBkb21haW4sIHBvdGVudGlhbGx5
IGEKKyAgICAgICAgdGhpcmQtcGFydHkgZG9tYWluLCBhcyBwYXJ0IG9mIEROUyByZXNvbHV0aW9u
LgorCisgICAgICAgIFRoaXMgcGF0Y2ggbWFrZXMgV2ViS2l0OjpOZXR3b3JrRGF0YVRhc2tDb2Nv
YSBjYXB0dXJlIGFueSBDTkFNRSBjbG9ha2luZyBmb3IKKyAgICAgICAgdGhlIGZpcnN0IHBhcnR5
IGhvc3QgYW5kIHN0b3JlcyBpdCBpbiBhIHRhYmxlIGluIHRoZSBXZWJLaXQ6Ok5ldHdvcmtTZXNz
aW9uLgorICAgICAgICBJdCB0aGVuIGNoZWNrcyBmaXJzdCBwYXJ0eSBzdWJyZXNvdXJjZSBsb2Fk
cyB0byBzZWUgaWYgdGhleSByZXNvbHZlIHRvIGEKKyAgICAgICAgZGlmZmVyZW50IGRvbWFpbiBh
bmQgaWYgc28sIGNvbXBhcmUgdGhhdCBkb21haW4gdG8gYm90aCB0aGUgZmlyc3QgcGFydHkKKyAg
ICAgICAgZG9tYWluIGFuZCBpdHMgQ05BTUUgY2xvYWtpbmcgZG9tYWluLCBpZiB0aGVyZSBpcyBv
bmUuIElmIHRoZXJlJ3MgYQorICAgICAgICBtaXNtYXRjaCwgaXQncyBkZWVtZWQgYSBjYXNlIG9m
IHRoaXJkLXBhcnR5IENOQU1FIGNsb2FraW5nIGFuZCBhbnkgY29va2llcworICAgICAgICBzZXQg
aW4gdGhlIHJlc3BvbnNlIG9mIHRoZSBjbG9ha2VkIHN1YnJlc291cmNlIGxvYWQgd2lsbCBoYXZl
IHRoZWlyIGV4cGlyeQorICAgICAgICBjYXBwZWQgdG8gNyBkYXlzLgorCisgICAgICAgIFRoZSBj
YXNlcyBmb3IgY2FwcGluZyBleHBpcnkgbG9vayBsaWtlIHRoaXMgKGFuZCBhcmUgYmFja2VkIGJ5
IHRlc3QgY2FzZXMpOgorCisgICAgICAgIEZpcnN0LXBhcnR5IGhvc3QgIHwgRmlyc3QtcGFydHkg
c3ViZG9tYWluICAgICAgfCBDYXBwZWQgZXhwaXJ5CisgICAgICAgIC0tLS0tLS0tLS0tLS0tLS0t
LXwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfC0tLS0tLS0tLS0tLS0tCisgICAgICAgIE5v
IENOQU1FIGNsb2FraW5nIHwgTm8gQ05BTUUgY2xvYWtpbmcgICAgICAgICAgfCBObworICAgICAg
ICBObyBDTkFNRSBjbG9ha2luZyB8IEZpcnN0LXBhcnR5IENOQU1FIGNsb2FraW5nIHwgTm8KKyAg
ICAgICAgTm8gQ05BTUUgY2xvYWtpbmcgfCBUaGlyZC1wYXJ0eSBDTkFNRSBjbG9ha2luZyB8IFll
cworICAgICAgICBDTkFNRSBjbG9ha2luZyAgICB8IE5vIENOQU1FIGNsb2FraW5nICAgICAgICAg
IHwgTm8KKyAgICAgICAgQ05BTUUgY2xvYWtpbmcgICAgfCBNYXRjaGluZyBDTkFNRSBjbG9ha2lu
ZyAgICB8IE5vCisgICAgICAgIENOQU1FIGNsb2FraW5nICAgIHwgRmlyc3QtcGFydHkgQ05BTUUg
Y2xvYWtpbmcgfCBObworICAgICAgICBDTkFNRSBjbG9ha2luZyAgICB8IFRoaXJkLXBhcnR5IENO
QU1FIGNsb2FraW5nIHwgWWVzCisKKyAgICAgICAgVGhpcyBwYXRjaCBtYWtlcyB1c2Ugb2YgdHdv
IG5ldyBDRk5ldHdvcmsgU1BJcyBvbiBOU1VSTFNlc3Npb25UYXNrOgorICAgICAgICAtICBfY29v
a2llVHJhbnNmb3JtQ2FsbGJhY2sKKyAgICAgICAgLSBfcmVzb2x2ZWRDTkFNRUNoYWluCisKKyAg
ICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHA6CisgICAgICAgIChXZWJL
aXQ6Ok5ldHdvcmtQcm9jZXNzOjpyZXNldFBhcmFtZXRlcnNUb0RlZmF1bHRWYWx1ZXMpOgorICAg
ICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6c2V0SXNSdW5uaW5nUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc1Rlc3QpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6c2V0Rmlyc3RQ
YXJ0eUhvc3RDTkFNRURvbWFpbkZvclRlc3RpbmcpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3Jr
UHJvY2Vzczo6c2V0VGhpcmRQYXJ0eUNOQU1FRG9tYWluRm9yVGVzdGluZyk6CisgICAgICAgICog
TmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrUHJvY2Vzcy5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrU2Vzc2lvbi5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtTZXNzaW9uOjpOZXR3
b3JrU2Vzc2lvbik6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtTZXNzaW9uOjpzZXRGaXJzdFBh
cnR5SG9zdENOQU1FRG9tYWluKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Nlc3Npb246OmZp
cnN0UGFydHlIb3N0Q05BTUVEb21haW4pOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrU2Vzc2lv
bjo6cmVzZXRDTkFNRURvbWFpbkRhdGEpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdv
cmtTZXNzaW9uLmg6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtTZXNzaW9uOjpzZXRDTkFNRUNs
b2FraW5nTWl0aWdhdGlvbkVuYWJsZWQpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrU2Vzc2lv
bjo6Y25hbWVDbG9ha2luZ01pdGlnYXRpb25FbmFibGVkIGNvbnN0KToKKyAgICAgICAgKFdlYktp
dDo6TmV0d29ya1Nlc3Npb246OnNldFRoaXJkUGFydHlDTkFNRURvbWFpbkZvclRlc3RpbmcpOgor
ICAgICAgICAoV2ViS2l0OjpOZXR3b3JrU2Vzc2lvbjo6dGhpcmRQYXJ0eUNOQU1FRG9tYWluRm9y
VGVzdGluZyBjb25zdCk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya0Rh
dGFUYXNrQ29jb2EuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrRGF0
YVRhc2tDb2NvYS5tbToKKyAgICAgICAgKFdlYktpdDo6aGFzQ05BTUVBbmRDb29raWVUcmFuc2Zv
cm1TUEkpOgorICAgICAgICAoV2ViS2l0OjpsYXN0Q05BTUVEb21haW4pOgorICAgICAgICAoV2Vi
S2l0OjpOZXR3b3JrRGF0YVRhc2tDb2NvYTo6dXBkYXRlRmlyc3RQYXJ0eUluZm9Gb3JUYXNrQW5k
U2Vzc2lvbik6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtEYXRhVGFza0NvY29hOjphcHBseUNv
b2tpZVBvbGljeUZvclRoaXJkUGFydHlDTkFNRUNsb2FraW5nKToKKyAgICAgICAgKFdlYktpdDo6
TmV0d29ya0RhdGFUYXNrQ29jb2E6Ok5ldHdvcmtEYXRhVGFza0NvY29hKToKKyAgICAgICAgKFdl
YktpdDo6TmV0d29ya0RhdGFUYXNrQ29jb2E6OmRpZFJlY2VpdmVSZXNwb25zZSk6CisgICAgICAg
IChXZWJLaXQ6Ok5ldHdvcmtEYXRhVGFza0NvY29hOjp3aWxsUGVyZm9ybUhUVFBSZWRpcmVjdGlv
bik6CisgICAgICAgICogU2hhcmVkL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NQYXJhbWV0ZXJzLmg6
CisgICAgICAgIChXZWJLaXQ6OlJlc291cmNlTG9hZFN0YXRpc3RpY3NQYXJhbWV0ZXJzOjplbmNv
ZGUgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGFyYW1l
dGVyczo6ZGVjb2RlKToKKyAgICAgICAgKiBTaGFyZWQvV2ViUHJlZmVyZW5jZXMueWFtbDoKKyAg
ICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tXZWJzaXRlRGF0YVN0b3JlUmVmLmNwcDoKKyAgICAg
ICAgKFdLV2Vic2l0ZURhdGFTdG9yZVNldFJlc291cmNlTG9hZFN0YXRpc3RpY3NGaXJzdFBhcnR5
SG9zdENOQU1FRG9tYWluRm9yVGVzdGluZyk6CisgICAgICAgIChXS1dlYnNpdGVEYXRhU3RvcmVT
ZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzVGhpcmRQYXJ0eUNOQU1FRG9tYWluRm9yVGVzdGluZyk6
CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dLV2Vic2l0ZURhdGFTdG9yZVJlZi5oOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzc1Byb3h5OjpzZXRGaXJzdFBhcnR5SG9zdENOQU1FRG9t
YWluRm9yVGVzdGluZyk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzUHJveHk6OnNl
dFRoaXJkUGFydHlDTkFNRURvbWFpbkZvclRlc3RpbmcpOgorICAgICAgICAqIFVJUHJvY2Vzcy9O
ZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUHJv
Y2Vzc1Bvb2wuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6ZW5zdXJlTmV0
d29ya1Byb2Nlc3MpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJzaXRlRGF0YS9Db2NvYS9XZWJz
aXRlRGF0YVN0b3JlQ29jb2EubW06CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6
OnBsYXRmb3JtU2V0TmV0d29ya1BhcmFtZXRlcnMpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJz
aXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2Vic2l0ZURh
dGFTdG9yZTo6c2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0ZpcnN0UGFydHlIb3N0Q05BTUVEb21h
aW5Gb3JUZXN0aW5nKToKKyAgICAgICAgKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6c2V0UmVz
b3VyY2VMb2FkU3RhdGlzdGljc1RoaXJkUGFydHlDTkFNRURvbWFpbkZvclRlc3RpbmcpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjpwYXJhbWV0ZXJzKToKKyAgICAgICAgKiBV
SVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5oOgorCiAyMDIwLTA4LTA1ICBQ
ZXIgQXJuZSBWb2xsYW4gIDxwdm9sbGFuQGFwcGxlLmNvbT4KIAogICAgICAgICBbQ29jb2FdIFNh
bmRib3ggZXh0ZW5zaW9uIHRva2VuIG5vdCBjbGVhcmVkIGZyb20gbWVtb3J5CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybUhhdmUuaCBiL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3Jt
SGF2ZS5oCmluZGV4IDE3YWI4MjRkZTQ2MjRhYjQxNGI4NGIxMWYzYjkwYmVjM2M4NTJjZGEuLjA2
YjRkZTc0NDJmZDFkY2IwOWE3OTExZWQ4ZDgxZWQwODRhOTU0ZGUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XVEYvd3RmL1BsYXRmb3JtSGF2ZS5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtSGF2
ZS5oCkBAIC03MDcsMyArNzA3LDEwIEBACiAjaWYgKFBMQVRGT1JNKE1BQykgJiYgX19NQUNfT1Nf
WF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMTAwMDApCiAjZGVmaW5lIEhBVkVfTlNUQUJMRVZJ
RVdTVFlMRSAxCiAjZW5kaWYKKworI2lmIChQTEFURk9STShNQUMpICYmIF9fTUFDX09TX1hfVkVS
U0lPTl9NSU5fUkVRVUlSRUQgPj0gMTEwMDAwKSBcCisgICAgfHwgKChQTEFURk9STShJT1MpIHx8
IFBMQVRGT1JNKE1BQ0NBVEFMWVNUKSkgJiYgX19JUEhPTkVfT1NfVkVSU0lPTl9NSU5fUkVRVUlS
RUQgPj0gMTQwMDAwKSBcCisgICAgfHwgKFBMQVRGT1JNKFdBVENIT1MpICYmIF9fV0FUQ0hfT1Nf
VkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gNzAwMDApIFwKKyAgICB8fCAoUExBVEZPUk0oQVBQTEVU
VikgJiYgX19UVl9PU19WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxNDAwMDApCisjZGVmaW5lIEhB
VkVfQ0ZORVRXT1JLX0NOQU1FX0FORF9DT09LSUVfVFJBTlNGT1JNX1NQSSAxCisjZW5kaWYKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvc3BpL2NmL0NGTmV0d29ya1NQSS5oIGIv
U291cmNlL1dlYkNvcmUvUEFML3BhbC9zcGkvY2YvQ0ZOZXR3b3JrU1BJLmgKaW5kZXggM2UyYTdh
MzQxZWU2YWJhNzFlZmIzYmRiMGRkYjE2YTAwMzVjOThiZi4uMGZjYzVkMjEwYjdhMTYzMWJhNTk1
ZWY5NDZlZTg3NTY2OTcwMDc4NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvUEFML3BhbC9z
cGkvY2YvQ0ZOZXR3b3JrU1BJLmgKKysrIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9zcGkvY2Yv
Q0ZOZXR3b3JrU1BJLmgKQEAgLTI5Niw2ICsyOTYsMTEgQEAgZW51bSA6IE5TVUludGVnZXIgewog
ICAgIE5TSFRUUENvb2tpZUFjY2VwdFBvbGljeUV4Y2x1c2l2ZWx5RnJvbU1haW5Eb2N1bWVudERv
bWFpbiA9IDMsCiB9OwogCitAaW50ZXJmYWNlIE5TVVJMU2Vzc2lvblRhc2sgKCkKK0Bwcm9wZXJ0
eSAobm9uYXRvbWljLCBjb3B5LCBudWxsYWJsZSkgTlNBcnJheTxOU0hUVFBDb29raWUqPiogKF5f
Y29va2llVHJhbnNmb3JtQ2FsbGJhY2spKE5TQXJyYXk8TlNIVFRQQ29va2llKj4qIGNvb2tpZXMp
OworQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5LCBudWxsYWJsZSkgTlNBcnJheTxOU1N0
cmluZyo+KiBfcmVzb2x2ZWRDTkFNRUNoYWluOworQGVuZAorCiAjZW5kaWYgLy8gZGVmaW5lZChf
X09CSkNfXykKIAogI2VuZGlmIC8vIFVTRShBUFBMRV9JTlRFUk5BTF9TREspCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdzLnlhbWwgYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L1NldHRpbmdzLnlhbWwKaW5kZXggMjJjOWY2YWIyMzAwMWEyOTFjNWQzNDU3YzIxNGIzZTIwNTU5
ZmM4OC4uZDRjZmJjZWQ4Mzc2MzI5ODE1NDYzYmM2NmZmNWYyMmExMjFmMDA2ZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5ncy55YW1sCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvU2V0dGluZ3MueWFtbApAQCAtOTI4LDYgKzkyOCw5IEBAIGlzRmlyc3RQYXJ0eVdlYnNp
dGVEYXRhUmVtb3ZhbFJlcHJvVGVzdGluZ0VuYWJsZWQ6CiBpc1NhbWVTaXRlU3RyaWN0RW5mb3Jj
ZW1lbnRFbmFibGVkOgogICBpbml0aWFsOiBmYWxzZQogCitpc0NOQU1FQ2xvYWtpbmdNaXRpZ2F0
aW9uRW5hYmxlZDoKKyAgaW5pdGlhbDogZmFsc2UKKwogaXNMb2dnZWRJbkFQSUVuYWJsZWQ6CiAg
IGluaXRpYWw6IGZhbHNlCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvTmV0d29ya1N0b3JhZ2VTZXNzaW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvTmV0d29ya1N0b3JhZ2VTZXNzaW9uLmNwcAppbmRleCA2ODQ3YzRmNWU5NDliZjA3
YTljYmVmZGNkYTMwYjQyNWFjYjlmZmI2Li5jNTMzMjFlMWNiYTNkZDk3NGY5NzBjNzU5MTA2YTdm
ODE3ZTIwYjc4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL05l
dHdvcmtTdG9yYWdlU2Vzc2lvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9OZXR3b3JrU3RvcmFnZVNlc3Npb24uY3BwCkBAIC03Miw2ICs3MiwxMSBAQCB2b2lkIE5l
dHdvcmtTdG9yYWdlU2Vzc2lvbjo6c2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0VuYWJsZWQoYm9v
bCBlbmFibGVkKQogewogICAgIG1faXNSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRW5hYmxlZCA9IGVu
YWJsZWQ7CiB9CisKK2Jvb2wgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpyZXNvdXJjZUxvYWRTdGF0
aXN0aWNzRW5hYmxlZCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1faXNSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzRW5hYmxlZDsKK30KICNlbmRpZgogCiBib29sIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6
c2hvdWxkQmxvY2tUaGlyZFBhcnR5Q29va2llcyhjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgcmVn
aXN0cmFibGVEb21haW4pIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL05ldHdvcmtTdG9yYWdlU2Vzc2lvbi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9OZXR3b3JrU3RvcmFnZVNlc3Npb24uaAppbmRleCAyYzYxNWY0YzJjNzYyNzcz
MmIwYTExMmM1ZjFjYzdmMTEwZTQ3NDUxLi5mMDRjZjZjYzdlZWJlN2UzYTFhMDZkNDU2MTFmNGVk
MjNlMjBlY2RlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL05l
dHdvcmtTdG9yYWdlU2Vzc2lvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvTmV0d29ya1N0b3JhZ2VTZXNzaW9uLmgKQEAgLTg1LDYgKzg1LDcgQEAgZW51bSBjbGFzcyBJ
bmNsdWRlU2VjdXJlQ29va2llcyA6IGJvb2w7CiBlbnVtIGNsYXNzIEluY2x1ZGVIdHRwT25seUNv
b2tpZXMgOiBib29sOwogZW51bSBjbGFzcyBUaGlyZFBhcnR5Q29va2llQmxvY2tpbmdNb2RlIDog
dWludDhfdCB7IEFsbCwgQWxsRXhjZXB0QmV0d2VlbkFwcEJvdW5kRG9tYWlucywgQWxsT25TaXRl
c1dpdGhvdXRVc2VySW50ZXJhY3Rpb24sIE9ubHlBY2NvcmRpbmdUb1BlckRvbWFpblBvbGljeSB9
OwogZW51bSBjbGFzcyBTYW1lU2l0ZVN0cmljdEVuZm9yY2VtZW50RW5hYmxlZCA6IGJvb2wgeyBZ
ZXMsIE5vIH07CitlbnVtIGNsYXNzIENOQU1FQ2xvYWtpbmdNaXRpZ2F0aW9uRW5hYmxlZCA6IGJv
b2wgeyBZZXMsIE5vIH07CiBlbnVtIGNsYXNzIEZpcnN0UGFydHlXZWJzaXRlRGF0YVJlbW92YWxN
b2RlIDogdWludDhfdCB7IEFsbEJ1dENvb2tpZXMsIE5vbmUsIEFsbEJ1dENvb2tpZXNMaXZlT25U
ZXN0aW5nVGltZW91dCwgQWxsQnV0Q29va2llc1JlcHJvVGVzdGluZ1RpbWVvdXQgfTsKIGVudW0g
Y2xhc3MgU2hvdWxkQXNrSVRQIDogYm9vbCB7IE5vLCBZZXMgfTsKIApAQCAtMTg0LDExICsxODUs
MTUgQEAgcHVibGljOgogCiAjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKICAg
ICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldFJlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkKGJv
b2wpOworICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgcmVzb3VyY2VMb2FkU3RhdGlzdGljc0VuYWJs
ZWQoKSBjb25zdDsKICAgICBXRUJDT1JFX0VYUE9SVCBib29sIHNob3VsZEJsb2NrQ29va2llcyhj
b25zdCBSZXNvdXJjZVJlcXVlc3QmLCBPcHRpb25hbDxGcmFtZUlkZW50aWZpZXI+LCBPcHRpb25h
bDxQYWdlSWRlbnRpZmllcj4sIFNob3VsZFJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nKSBj
b25zdDsKICAgICBXRUJDT1JFX0VYUE9SVCBib29sIHNob3VsZEJsb2NrQ29va2llcyhjb25zdCBV
UkwmIGZpcnN0UGFydHlGb3JDb29raWVzLCBjb25zdCBVUkwmIHJlc291cmNlLCBPcHRpb25hbDxG
cmFtZUlkZW50aWZpZXI+LCBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4sIFNob3VsZFJlbGF4VGhp
cmRQYXJ0eUNvb2tpZUJsb2NraW5nKSBjb25zdDsKICAgICBXRUJDT1JFX0VYUE9SVCBib29sIHNo
b3VsZEJsb2NrVGhpcmRQYXJ0eUNvb2tpZXMoY29uc3QgUmVnaXN0cmFibGVEb21haW4mKSBjb25z
dDsKICAgICBXRUJDT1JFX0VYUE9SVCBib29sIHNob3VsZEJsb2NrVGhpcmRQYXJ0eUNvb2tpZXNC
dXRLZWVwRmlyc3RQYXJ0eUNvb2tpZXNGb3IoY29uc3QgUmVnaXN0cmFibGVEb21haW4mKSBjb25z
dDsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldEFsbENvb2tpZXNUb1NhbWVTaXRlU3RyaWN0
KGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsK
KyNpZiBQTEFURk9STShDT0NPQSkgfHwgVVNFKENGVVJMQ09OTkVDVElPTikKKyAgICBXRUJDT1JF
X0VYUE9SVCBzdGF0aWMgTlNIVFRQQ29va2llICpjYXBFeHBpcnlPZlBlcnNpc3RlbnRDb29raWUo
TlNIVFRQQ29va2llICosIFNlY29uZHMgY2FwKTsKKyNlbmRpZgogICAgIFdFQkNPUkVfRVhQT1JU
IGJvb2wgaGFzSGFkVXNlckludGVyYWN0aW9uQXNGaXJzdFBhcnR5KGNvbnN0IFJlZ2lzdHJhYmxl
RG9tYWluJikgY29uc3Q7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRQcmV2YWxlbnREb21h
aW5zVG9CbG9ja0FuZERlbGV0ZUNvb2tpZXNGb3IoY29uc3QgVmVjdG9yPFJlZ2lzdHJhYmxlRG9t
YWluPiYpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0UHJldmFsZW50RG9tYWluc1RvQmxv
Y2tCdXRLZWVwQ29va2llc0Zvcihjb25zdCBWZWN0b3I8UmVnaXN0cmFibGVEb21haW4+Jik7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL05ldHdvcmtT
dG9yYWdlU2Vzc2lvbkNvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9j
b2NvYS9OZXR3b3JrU3RvcmFnZVNlc3Npb25Db2NvYS5tbQppbmRleCBjYjk2ZDRhYWZkNWE0ZmEw
NmQ2YTcyMjEwMzIwMjc5OGQ5YTNhNjU3Li5lM2ZjMmQ4OWRmMThhNTFkZDc3OGJiM2QyMDdhMWJi
MjA5YTFmOWI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2Nv
Y29hL05ldHdvcmtTdG9yYWdlU2Vzc2lvbkNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvY29jb2EvTmV0d29ya1N0b3JhZ2VTZXNzaW9uQ29jb2EubW0KQEAgLTMw
OCw2ICszMDgsMTcgQEAgTlNBcnJheSAqTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpodHRwQ29va2ll
c0ZvclVSTChDRkhUVFBDb29raWVTdG9yYWdlUmVmIGNvb2tpZVMKICAgICByZXR1cm4gV2ViQ29y
ZTo6Y29va2llc0ZvclVSTChuc0Nvb2tpZVN0b3JhZ2UuZ2V0KCksIHVybCwgZmlyc3RQYXJ0eSwg
c2FtZVNpdGVJbmZvKTsKIH0KIAorTlNIVFRQQ29va2llICpOZXR3b3JrU3RvcmFnZVNlc3Npb246
OmNhcEV4cGlyeU9mUGVyc2lzdGVudENvb2tpZShOU0hUVFBDb29raWUgKmNvb2tpZSwgU2Vjb25k
cyBjYXApCit7CisgICAgaWYgKCFbY29va2llIGlzU2Vzc2lvbk9ubHldICYmICghY29va2llLmV4
cGlyZXNEYXRlIHx8IGNvb2tpZS5leHBpcmVzRGF0ZS50aW1lSW50ZXJ2YWxTaW5jZU5vdyA+IGNh
cC5zZWNvbmRzKCkpKSB7CisgICAgICAgIFJldGFpblB0cjxOU011dGFibGVEaWN0aW9uYXJ5PE5T
SFRUUENvb2tpZVByb3BlcnR5S2V5LCBpZD4+IHByb3BlcnRpZXMgPSBhZG9wdE5TKFtbY29va2ll
IHByb3BlcnRpZXNdIG11dGFibGVDb3B5XSk7CisgICAgICAgIFJldGFpblB0cjxOU0RhdGU+IGRh
dGUgPSBhZG9wdE5TKFtbTlNEYXRlIGFsbG9jXSBpbml0V2l0aFRpbWVJbnRlcnZhbFNpbmNlTm93
OmNhcC5zZWNvbmRzKCldKTsKKyAgICAgICAgW3Byb3BlcnRpZXMgc2V0T2JqZWN0OmRhdGUuZ2V0
KCkgZm9yS2V5Ok5TSFRUUENvb2tpZUV4cGlyZXNdOworICAgICAgICBjb29raWUgPSBbTlNIVFRQ
Q29va2llIGNvb2tpZVdpdGhQcm9wZXJ0aWVzOnByb3BlcnRpZXMuZ2V0KCldOworICAgIH0KKyAg
ICByZXR1cm4gY29va2llOworfQorCiBOU0FycmF5ICpOZXR3b3JrU3RvcmFnZVNlc3Npb246OmNv
b2tpZXNGb3JVUkwoY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mIHNh
bWVTaXRlSW5mbywgY29uc3QgVVJMJiB1cmwsIE9wdGlvbmFsPEZyYW1lSWRlbnRpZmllcj4gZnJh
bWVJRCwgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCwgU2hvdWxkQXNrSVRQIHNob3Vs
ZEFza0lUUCwgU2hvdWxkUmVsYXhUaGlyZFBhcnR5Q29va2llQmxvY2tpbmcgc2hvdWxkUmVsYXhU
aGlyZFBhcnR5Q29va2llQmxvY2tpbmcpIGNvbnN0CiB7CiAjaWYgRU5BQkxFKFJFU09VUkNFX0xP
QURfU1RBVElTVElDUykKQEAgLTQxNywxNSArNDI4LDkgQEAgc3RhdGljIE5TSFRUUENvb2tpZSAq
cGFyc2VET01Db29raWUoU3RyaW5nIGNvb2tpZVN0cmluZywgTlNVUkwqIGNvb2tpZVVSTCwgT3B0
aW8KICAgICBpZiAoW2Nvb2tpZSBpc0hUVFBPbmx5XSkKICAgICAgICAgcmV0dXJuIG5pbDsKIAot
ICAgIC8vIENhcCBsaWZldGltZSBvZiBwZXJzaXN0ZW50LCBjbGllbnQtc2lkZSBjb29raWVzIHRv
IGEgd2Vlay4KLSAgICBpZiAoY2FwcGVkTGlmZXRpbWUgJiYgIVtjb29raWUgaXNTZXNzaW9uT25s
eV0pIHsKLSAgICAgICAgaWYgKCFjb29raWUuZXhwaXJlc0RhdGUgfHwgY29va2llLmV4cGlyZXNE
YXRlLnRpbWVJbnRlcnZhbFNpbmNlTm93ID4gY2FwcGVkTGlmZXRpbWUtPnNlY29uZHMoKSkgewot
ICAgICAgICAgICAgYXV0byBwcm9wZXJ0aWVzID0gYWRvcHROUyhbW2Nvb2tpZSBwcm9wZXJ0aWVz
XSBtdXRhYmxlQ29weV0pOwotICAgICAgICAgICAgYXV0byBkYXRlSW5BV2VlayA9IGFkb3B0TlMo
W1tOU0RhdGUgYWxsb2NdIGluaXRXaXRoVGltZUludGVydmFsU2luY2VOb3c6Y2FwcGVkTGlmZXRp
bWUtPnNlY29uZHMoKV0pOwotICAgICAgICAgICAgW3Byb3BlcnRpZXMgc2V0T2JqZWN0OmRhdGVJ
bkFXZWVrLmdldCgpIGZvcktleTpOU0hUVFBDb29raWVFeHBpcmVzXTsKLSAgICAgICAgICAgIHJl
dHVybiBbTlNIVFRQQ29va2llIGNvb2tpZVdpdGhQcm9wZXJ0aWVzOnByb3BlcnRpZXMuZ2V0KCld
OwotICAgICAgICB9Ci0gICAgfQorICAgIC8vIENhcCBsaWZldGltZSBvZiBwZXJzaXN0ZW50LCBj
bGllbnQtc2lkZSBjb29raWVzLgorICAgIGlmIChjYXBwZWRMaWZldGltZSkKKyAgICAgICAgcmV0
dXJuIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6Y2FwRXhwaXJ5T2ZQZXJzaXN0ZW50Q29va2llKGNv
b2tpZSwgKmNhcHBlZExpZmV0aW1lKTsKIAogICAgIHJldHVybiBjb29raWU7CiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCmluZGV4IDc5MDg1
N2Q1NzZiMTU0NGYzMmMzMDA1YzhlMzc5YWU5ODNkMzNiYWUuLmQ1MzE0MmUxMjhmZjhlODQ4YjE4
MTk3NDg2MzI3N2JhMTcxNmVjN2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvTmV0d29ya1Byb2Nlc3MuY3BwCkBAIC04MTQsNiArODE0LDEwIEBAIHZvaWQgTmV0d29ya1By
b2Nlc3M6OmdldFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhU3VtbWFyeShQQUw6OlNlc3Npb25J
RCBzZXNzaW9uCiB2b2lkIE5ldHdvcmtQcm9jZXNzOjpyZXNldFBhcmFtZXRlcnNUb0RlZmF1bHRW
YWx1ZXMoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+
JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgaWYgKGF1dG8qIG5ldHdvcmtTZXNzaW9uID0g
dGhpcy0+bmV0d29ya1Nlc3Npb24oc2Vzc2lvbklEKSkgeworI2lmIEhBVkUoQ0ZORVRXT1JLX0NO
QU1FX0FORF9DT09LSUVfVFJBTlNGT1JNX1NQSSkKKyAgICAgICAgbmV0d29ya1Nlc3Npb24tPnJl
c2V0Q05BTUVEb21haW5EYXRhKCk7CisgICAgICAgIG5ldHdvcmtTZXNzaW9uLT5zZXRDTkFNRUNs
b2FraW5nTWl0aWdhdGlvbkVuYWJsZWQoV2ViQ29yZTo6Q05BTUVDbG9ha2luZ01pdGlnYXRpb25F
bmFibGVkOjpObyk7CisjZW5kaWYKICAgICAgICAgaWYgKGF1dG8qIHJlc291cmNlTG9hZFN0YXRp
c3RpY3MgPSBuZXR3b3JrU2Vzc2lvbi0+cmVzb3VyY2VMb2FkU3RhdGlzdGljcygpKQogICAgICAg
ICAgICAgcmVzb3VyY2VMb2FkU3RhdGlzdGljcy0+cmVzZXRQYXJhbWV0ZXJzVG9EZWZhdWx0VmFs
dWVzKFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKICAgICAgICAgZWxzZQpAQCAtODY2LDYg
Kzg3MCw5IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OnNldE5vdGlmeVBhZ2VzV2hlbkRhdGFSZWNv
cmRzV2VyZVNjYW5uZWQoUEFMOjpTZXNzaW9uSUQgc2VzCiB2b2lkIE5ldHdvcmtQcm9jZXNzOjpz
ZXRJc1J1bm5pbmdSZXNvdXJjZUxvYWRTdGF0aXN0aWNzVGVzdChQQUw6OlNlc3Npb25JRCBzZXNz
aW9uSUQsIGJvb2wgdmFsdWUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9u
SGFuZGxlcikKIHsKICAgICBpZiAoYXV0byogbmV0d29ya1Nlc3Npb24gPSB0aGlzLT5uZXR3b3Jr
U2Vzc2lvbihzZXNzaW9uSUQpKSB7CisjaWYgSEFWRShDRk5FVFdPUktfQ05BTUVfQU5EX0NPT0tJ
RV9UUkFOU0ZPUk1fU1BJKQorICAgICAgICBuZXR3b3JrU2Vzc2lvbi0+c2V0Q05BTUVDbG9ha2lu
Z01pdGlnYXRpb25FbmFibGVkKFdlYkNvcmU6OkNOQU1FQ2xvYWtpbmdNaXRpZ2F0aW9uRW5hYmxl
ZDo6WWVzKTsKKyNlbmRpZgogICAgICAgICBpZiAoYXV0byogcmVzb3VyY2VMb2FkU3RhdGlzdGlj
cyA9IG5ldHdvcmtTZXNzaW9uLT5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzKCkpCiAgICAgICAgICAg
ICByZXNvdXJjZUxvYWRTdGF0aXN0aWNzLT5zZXRJc1J1bm5pbmdUZXN0KHZhbHVlLCBXVEZNb3Zl
KGNvbXBsZXRpb25IYW5kbGVyKSk7CiAgICAgICAgIGVsc2UKQEAgLTEzNzksNiArMTM4NiwyMCBA
QCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpzZXRUb1NhbWVTaXRlU3RyaWN0Q29va2llc0ZvclRlc3Rp
bmcoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbgogICAgICAgICBjb21wbGV0aW9uSGFuZGxlcigpOwog
ICAgIH0KIH0KKwordm9pZCBOZXR3b3JrUHJvY2Vzczo6c2V0Rmlyc3RQYXJ0eUhvc3RDTkFNRURv
bWFpbkZvclRlc3RpbmcoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBTdHJpbmcmJiBmaXJzdFBh
cnR5SG9zdCwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mJiBjbmFtZURvbWFpbiwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIGlmIChhdXRv
KiBuZXR3b3JrU2Vzc2lvbiA9IHRoaXMtPm5ldHdvcmtTZXNzaW9uKHNlc3Npb25JRCkpCisgICAg
ICAgIG5ldHdvcmtTZXNzaW9uLT5zZXRGaXJzdFBhcnR5SG9zdENOQU1FRG9tYWluKFdURk1vdmUo
Zmlyc3RQYXJ0eUhvc3QpLCBXVEZNb3ZlKGNuYW1lRG9tYWluKSk7CisgICAgY29tcGxldGlvbkhh
bmRsZXIoKTsKK30KKwordm9pZCBOZXR3b3JrUHJvY2Vzczo6c2V0VGhpcmRQYXJ0eUNOQU1FRG9t
YWluRm9yVGVzdGluZyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFdlYkNvcmU6OlJlZ2lzdHJh
YmxlRG9tYWluJiYgZG9tYWluLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlv
bkhhbmRsZXIpCit7CisgICAgaWYgKGF1dG8qIG5ldHdvcmtTZXNzaW9uID0gdGhpcy0+bmV0d29y
a1Nlc3Npb24oc2Vzc2lvbklEKSkKKyAgICAgICAgbmV0d29ya1Nlc3Npb24tPnNldFRoaXJkUGFy
dHlDTkFNRURvbWFpbkZvclRlc3RpbmcoV1RGTW92ZShkb21haW4pKTsKKyAgICBjb21wbGV0aW9u
SGFuZGxlcigpOworfQogI2VuZGlmIC8vIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1Mp
CiAKIHZvaWQgTmV0d29ya1Byb2Nlc3M6OnNldEFkQ2xpY2tBdHRyaWJ1dGlvbkRlYnVnTW9kZShi
b29sIGRlYnVnTW9kZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya1Byb2Nlc3MuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1By
b2Nlc3MuaAppbmRleCA0ZGZhMTRjODc4M2RhMjI2YzMyODA0MGEzMmQ1OWM1YTU5MzcwNzM5Li5m
MjNmZDU4MGVmNTRjYWRmODBmNDY4MzY2NTZmYjIzZmQ0ZGRmMmZjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmgKKysrIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oCkBAIC0yNzMsNiArMjczLDggQEAg
cHVibGljOgogICAgIHZvaWQgc2V0U2hvdWxkRW5ibGVTYW1lU2l0ZVN0cmljdEVuZm9yY2VtZW50
Rm9yVGVzdGluZyhQQUw6OlNlc3Npb25JRCwgV2ViQ29yZTo6U2FtZVNpdGVTdHJpY3RFbmZvcmNl
bWVudEVuYWJsZWQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAgdm9pZCBzZXRG
aXJzdFBhcnR5V2Vic2l0ZURhdGFSZW1vdmFsTW9kZUZvclRlc3RpbmcoUEFMOjpTZXNzaW9uSUQs
IFdlYkNvcmU6OkZpcnN0UGFydHlXZWJzaXRlRGF0YVJlbW92YWxNb2RlLCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKCk+JiYpOwogICAgIHZvaWQgc2V0VG9TYW1lU2l0ZVN0cmljdENvb2tpZXNGb3JU
ZXN0aW5nKFBBTDo6U2Vzc2lvbklELCBjb25zdCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYs
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CisgICAgdm9pZCBzZXRGaXJzdFBhcnR5SG9z
dENOQU1FRG9tYWluRm9yVGVzdGluZyhQQUw6OlNlc3Npb25JRCwgU3RyaW5nJiYgZmlyc3RQYXJ0
eUhvc3QsIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiYgY25hbWVEb21haW4sIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoKT4mJik7CisgICAgdm9pZCBzZXRUaGlyZFBhcnR5Q05BTUVEb21haW5G
b3JUZXN0aW5nKFBBTDo6U2Vzc2lvbklELCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYmLCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogI2VuZGlmCiAKICAgICB2b2lkIHNldEFkQ2xp
Y2tBdHRyaWJ1dGlvbkRlYnVnTW9kZShib29sKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLm1lc3NhZ2VzLmluCmluZGV4IDcwMjIyODVl
MzY4ODVkZTg2ZjJkYWY2ODg4YjAyNDcyOTkzNWNmNjQuLjAwMmVjZGI4MzNiMjk0MWFlODYxM2Zh
NjRmMDFkZjg5ODk2ZGYzNDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvTmV0d29ya1Byb2Nlc3MubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5tZXNzYWdlcy5pbgpAQCAtMTQ4LDYgKzE0OCw4IEBAIG1l
c3NhZ2VzIC0+IE5ldHdvcmtQcm9jZXNzIExlZ2FjeVJlY2VpdmVyIHsKICAgICBTZXRTaG91bGRF
bmJsZVNhbWVTaXRlU3RyaWN0RW5mb3JjZW1lbnRGb3JUZXN0aW5nKFBBTDo6U2Vzc2lvbklEIHNl
c3Npb25JRCwgZW51bTpib29sIFdlYkNvcmU6OlNhbWVTaXRlU3RyaWN0RW5mb3JjZW1lbnRFbmFi
bGVkIGVuYWJsZWQpIC0+ICgpIEFzeW5jCiAgICAgU2V0Rmlyc3RQYXJ0eVdlYnNpdGVEYXRhUmVt
b3ZhbE1vZGVGb3JUZXN0aW5nKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgZW51bTp1aW50OF90
IFdlYkNvcmU6OkZpcnN0UGFydHlXZWJzaXRlRGF0YVJlbW92YWxNb2RlIG1vZGUpIC0+ICgpIEFz
eW5jCiAgICAgU2V0VG9TYW1lU2l0ZVN0cmljdENvb2tpZXNGb3JUZXN0aW5nKFBBTDo6U2Vzc2lv
bklEIHNlc3Npb25JRCwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4gZG9tYWluKSAtPiAoKSBB
c3luYworICAgIFNldEZpcnN0UGFydHlIb3N0Q05BTUVEb21haW5Gb3JUZXN0aW5nKFBBTDo6U2Vz
c2lvbklEIHNlc3Npb25JRCwgU3RyaW5nIGZpcnN0UGFydHlIb3N0LCBXZWJDb3JlOjpSZWdpc3Ry
YWJsZURvbWFpbiBjbmFtZURvbWFpbikgLT4gKCkgQXN5bmMKKyAgICBTZXRUaGlyZFBhcnR5Q05B
TUVEb21haW5Gb3JUZXN0aW5nKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgV2ViQ29yZTo6UmVn
aXN0cmFibGVEb21haW4gZG9tYWluKSAtPiAoKSBBc3luYwogI2VuZGlmCiAKICAgICBTZXRBZENs
aWNrQXR0cmlidXRpb25EZWJ1Z01vZGUoYm9vbCBkZWJ1Z01vZGUpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uLmNwcCBiL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24uY3BwCmluZGV4IDZiNjZiY2YyMjIwYzM1
YmFlYTZkMmJiNThlMTMwMTg4ZDE2NjY4YTguLmE3Y2IxNzQ0OWM0ZjQ3MjM4YjE1Y2RhOTY2NDEz
YzBmYjg2MWZkZTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0
d29ya1Nlc3Npb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29y
a1Nlc3Npb24uY3BwCkBAIC05MCw2ICs5MCw3IEBAIE5ldHdvcmtTZXNzaW9uOjpOZXR3b3JrU2Vz
c2lvbihOZXR3b3JrUHJvY2VzcyYgbmV0d29ya1Byb2Nlc3MsIGNvbnN0IE5ldHdvcmtTZXNzCiAg
ICAgLCBtX3NhbWVTaXRlU3RyaWN0RW5mb3JjZW1lbnRFbmFibGVkKHBhcmFtZXRlcnMucmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc1BhcmFtZXRlcnMuc2FtZVNpdGVTdHJpY3RFbmZvcmNlbWVudEVuYWJs
ZWQpCiAgICAgLCBtX2ZpcnN0UGFydHlXZWJzaXRlRGF0YVJlbW92YWxNb2RlKHBhcmFtZXRlcnMu
cmVzb3VyY2VMb2FkU3RhdGlzdGljc1BhcmFtZXRlcnMuZmlyc3RQYXJ0eVdlYnNpdGVEYXRhUmVt
b3ZhbE1vZGUpCiAgICAgLCBtX3N0YW5kYWxvbmVBcHBsaWNhdGlvbkRvbWFpbihwYXJhbWV0ZXJz
LnJlc291cmNlTG9hZFN0YXRpc3RpY3NQYXJhbWV0ZXJzLnN0YW5kYWxvbmVBcHBsaWNhdGlvbkRv
bWFpbikKKyAgICAsIG1fY25hbWVDbG9ha2luZ01pdGlnYXRpb25FbmFibGVkKHBhcmFtZXRlcnMu
cmVzb3VyY2VMb2FkU3RhdGlzdGljc1BhcmFtZXRlcnMuY25hbWVDbG9ha2luZ01pdGlnYXRpb25F
bmFibGVkKQogI2VuZGlmCiAgICAgLCBtX2FkQ2xpY2tBdHRyaWJ1dGlvbihtYWtlVW5pcXVlUmVm
PEFkQ2xpY2tBdHRyaWJ1dGlvbk1hbmFnZXI+KG5ldHdvcmtQcm9jZXNzLCBwYXJhbWV0ZXJzLnNl
c3Npb25JRCkpCiAgICAgLCBtX3Rlc3RTcGVlZE11bHRpcGxpZXIocGFyYW1ldGVycy50ZXN0U3Bl
ZWRNdWx0aXBsaWVyKQpAQCAtMjgwLDYgKzI4MSw0NCBAQCB2b2lkIE5ldHdvcmtTZXNzaW9uOjpz
ZXRTaG91bGRFbmJsZVNhbWVTaXRlU3RyaWN0RW5mb3JjZW1lbnQoV2ViQ29yZTo6U2FtZVNpdGVT
dAogICAgIGlmIChtX3Jlc291cmNlTG9hZFN0YXRpc3RpY3MpCiAgICAgICAgIG1fcmVzb3VyY2VM
b2FkU3RhdGlzdGljcy0+c2V0U2FtZVNpdGVTdHJpY3RFbmZvcmNlbWVudEVuYWJsZWQoZW5hYmxl
ZCk7CiB9CisKK3ZvaWQgTmV0d29ya1Nlc3Npb246OnNldEZpcnN0UGFydHlIb3N0Q05BTUVEb21h
aW4oU3RyaW5nJiYgZmlyc3RQYXJ0eUhvc3QsIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiYg
Y25hbWVEb21haW4pCit7CisjaWYgSEFWRShDRk5FVFdPUktfQ05BTUVfQU5EX0NPT0tJRV9UUkFO
U0ZPUk1fU1BJKQorICAgIGlmICghY25hbWVDbG9ha2luZ01pdGlnYXRpb25FbmFibGVkKCkpCisg
ICAgICAgIHJldHVybjsKKworICAgIEFTU0VSVCghZmlyc3RQYXJ0eUhvc3QuaXNFbXB0eSgpICYm
ICFjbmFtZURvbWFpbi5pc0VtcHR5KCkgJiYgZmlyc3RQYXJ0eUhvc3QgIT0gY25hbWVEb21haW4u
c3RyaW5nKCkpOworICAgIGlmIChmaXJzdFBhcnR5SG9zdC5pc0VtcHR5KCkgfHwgY25hbWVEb21h
aW4uaXNFbXB0eSgpIHx8IGZpcnN0UGFydHlIb3N0ID09IGNuYW1lRG9tYWluLnN0cmluZygpKQor
ICAgICAgICByZXR1cm47CisgICAgbV9maXJzdFBhcnR5SG9zdENOQU1FRG9tYWlucy5hZGQoV1RG
TW92ZShmaXJzdFBhcnR5SG9zdCksIFdURk1vdmUoY25hbWVEb21haW4pKTsKKyNlbHNlCisgICAg
VU5VU0VEX1BBUkFNKGZpcnN0UGFydHlIb3N0KTsKKyAgICBVTlVTRURfUEFSQU0oY25hbWVEb21h
aW4pOworI2VuZGlmCit9CisKK09wdGlvbmFsPFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluPiBO
ZXR3b3JrU2Vzc2lvbjo6Zmlyc3RQYXJ0eUhvc3RDTkFNRURvbWFpbihjb25zdCBTdHJpbmcmIGZp
cnN0UGFydHlIb3N0KQoreworI2lmIEhBVkUoQ0ZORVRXT1JLX0NOQU1FX0FORF9DT09LSUVfVFJB
TlNGT1JNX1NQSSkKKyAgICBpZiAoIWNuYW1lQ2xvYWtpbmdNaXRpZ2F0aW9uRW5hYmxlZCgpKQor
ICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAgYXV0byBpdGVyYXRvciA9IG1fZmly
c3RQYXJ0eUhvc3RDTkFNRURvbWFpbnMuZmluZChmaXJzdFBhcnR5SG9zdCk7CisgICAgaWYgKGl0
ZXJhdG9yID09IG1fZmlyc3RQYXJ0eUhvc3RDTkFNRURvbWFpbnMuZW5kKCkpCisgICAgICAgIHJl
dHVybiBXVEY6Om51bGxvcHQ7CisgICAgcmV0dXJuIGl0ZXJhdG9yLT52YWx1ZTsKKyNlbHNlCisg
ICAgVU5VU0VEX1BBUkFNKGZpcnN0UGFydHlIb3N0KTsKKyAgICByZXR1cm4gV1RGOjpudWxsb3B0
OworI2VuZGlmCit9CisKK3ZvaWQgTmV0d29ya1Nlc3Npb246OnJlc2V0Q05BTUVEb21haW5EYXRh
KCkKK3sKKyAgICBtX2ZpcnN0UGFydHlIb3N0Q05BTUVEb21haW5zLmNsZWFyKCk7CisgICAgbV90
aGlyZFBhcnR5Q05BTUVEb21haW5Gb3JUZXN0aW5nID0gV1RGOjpudWxsb3B0OworfQogI2VuZGlm
IC8vIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCiAKIHZvaWQgTmV0d29ya1Nlc3Np
b246OnN0b3JlQWRDbGlja0F0dHJpYnV0aW9uKFdlYkNvcmU6OkFkQ2xpY2tBdHRyaWJ1dGlvbiYm
IGFkQ2xpY2tBdHRyaWJ1dGlvbikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvTmV0d29ya1Nlc3Npb24uaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0
d29ya1Nlc3Npb24uaAppbmRleCAzODJiZjgwNTlmYzA5OGZlZGZhNTJhMTg4NTQxZTc0YmY5ZTc0
MzdkLi41ZDNlZjBlZjZlYjExZjUwMWNiZmM4NGIzODdhNzlhNDgzNmM5OWFjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uLmgKKysrIGIvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5oCkBAIC0xMDUsNiArMTA1
LDEzIEBAIHB1YmxpYzoKICAgICBib29sIHNob3VsZERvd25ncmFkZVJlZmVycmVyKCkgY29uc3Q7
CiAgICAgdm9pZCBzZXRUaGlyZFBhcnR5Q29va2llQmxvY2tpbmdNb2RlKFdlYkNvcmU6OlRoaXJk
UGFydHlDb29raWVCbG9ja2luZ01vZGUpOwogICAgIHZvaWQgc2V0U2hvdWxkRW5ibGVTYW1lU2l0
ZVN0cmljdEVuZm9yY2VtZW50KFdlYkNvcmU6OlNhbWVTaXRlU3RyaWN0RW5mb3JjZW1lbnRFbmFi
bGVkKTsKKyAgICB2b2lkIHNldENOQU1FQ2xvYWtpbmdNaXRpZ2F0aW9uRW5hYmxlZChXZWJDb3Jl
OjpDTkFNRUNsb2FraW5nTWl0aWdhdGlvbkVuYWJsZWQgdmFsdWUpIHsgbV9jbmFtZUNsb2FraW5n
TWl0aWdhdGlvbkVuYWJsZWQgPSB2YWx1ZTsgfQorICAgIGJvb2wgY25hbWVDbG9ha2luZ01pdGln
YXRpb25FbmFibGVkKCkgY29uc3QgeyByZXR1cm4gbV9jbmFtZUNsb2FraW5nTWl0aWdhdGlvbkVu
YWJsZWQgPT0gV2ViQ29yZTo6Q05BTUVDbG9ha2luZ01pdGlnYXRpb25FbmFibGVkOjpZZXM7IH0K
KyAgICB2b2lkIHNldEZpcnN0UGFydHlIb3N0Q05BTUVEb21haW4oU3RyaW5nJiYgZmlyc3RQYXJ0
eUhvc3QsIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiYgY25hbWVEb21haW4pOworICAgIE9w
dGlvbmFsPFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluPiBmaXJzdFBhcnR5SG9zdENOQU1FRG9t
YWluKGNvbnN0IFN0cmluZyYgZmlyc3RQYXJ0eUhvc3QpOworICAgIHZvaWQgc2V0VGhpcmRQYXJ0
eUNOQU1FRG9tYWluRm9yVGVzdGluZyhXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYmIGRvbWFp
bikgeyBtX3RoaXJkUGFydHlDTkFNRURvbWFpbkZvclRlc3RpbmcgPSBXVEZNb3ZlKGRvbWFpbik7
IH07CisgICAgT3B0aW9uYWw8V2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4+IHRoaXJkUGFydHlD
TkFNRURvbWFpbkZvclRlc3RpbmcoKSBjb25zdCB7IHJldHVybiBtX3RoaXJkUGFydHlDTkFNRURv
bWFpbkZvclRlc3Rpbmc7IH0KKyAgICB2b2lkIHJlc2V0Q05BTUVEb21haW5EYXRhKCk7CiAgICAg
dm9pZCBkZXN0cm95UmVzb3VyY2VMb2FkU3RhdGlzdGljcyhDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KCk+JiYpOwogICAgIHZvaWQgZmx1c2hBbmREZXN0cm95UGVyc2lzdGVudFN0b3JlKENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoKT4mJik7CiAjZW5kaWYKQEAgLTE2Niw2ICsxNzMsOSBAQCBwcm90ZWN0
ZWQ6CiAgICAgV2ViQ29yZTo6U2FtZVNpdGVTdHJpY3RFbmZvcmNlbWVudEVuYWJsZWQgbV9zYW1l
U2l0ZVN0cmljdEVuZm9yY2VtZW50RW5hYmxlZCB7IFdlYkNvcmU6OlNhbWVTaXRlU3RyaWN0RW5m
b3JjZW1lbnRFbmFibGVkOjpObyB9OwogICAgIFdlYkNvcmU6OkZpcnN0UGFydHlXZWJzaXRlRGF0
YVJlbW92YWxNb2RlIG1fZmlyc3RQYXJ0eVdlYnNpdGVEYXRhUmVtb3ZhbE1vZGUgeyBXZWJDb3Jl
OjpGaXJzdFBhcnR5V2Vic2l0ZURhdGFSZW1vdmFsTW9kZTo6QWxsQnV0Q29va2llcyB9OwogICAg
IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIG1fc3RhbmRhbG9uZUFwcGxpY2F0aW9uRG9tYWlu
OworICAgIFdlYkNvcmU6OkNOQU1FQ2xvYWtpbmdNaXRpZ2F0aW9uRW5hYmxlZCBtX2NuYW1lQ2xv
YWtpbmdNaXRpZ2F0aW9uRW5hYmxlZCB7IFdlYkNvcmU6OkNOQU1FQ2xvYWtpbmdNaXRpZ2F0aW9u
RW5hYmxlZDo6Tm8gfTsKKyAgICBIYXNoTWFwPFN0cmluZywgV2ViQ29yZTo6UmVnaXN0cmFibGVE
b21haW4+IG1fZmlyc3RQYXJ0eUhvc3RDTkFNRURvbWFpbnM7CisgICAgT3B0aW9uYWw8V2ViQ29y
ZTo6UmVnaXN0cmFibGVEb21haW4+IG1fdGhpcmRQYXJ0eUNOQU1FRG9tYWluRm9yVGVzdGluZzsK
ICNlbmRpZgogICAgIGJvb2wgbV9pc1N0YWxlV2hpbGVSZXZhbGlkYXRlRW5hYmxlZCB7IGZhbHNl
IH07CiAgICAgVW5pcXVlUmVmPEFkQ2xpY2tBdHRyaWJ1dGlvbk1hbmFnZXI+IG1fYWRDbGlja0F0
dHJpYnV0aW9uOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2Nv
YS9OZXR3b3JrRGF0YVRhc2tDb2NvYS5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9j
b2NvYS9OZXR3b3JrRGF0YVRhc2tDb2NvYS5oCmluZGV4IDJjMWQ4OGNhY2MzZTk5OTRmYTljODI5
NjEyODgxNGVjOWU5YTY3M2MuLjBmNTFjODM1MjhlMmE3MGI5ODE0MzNiZjdiMTllNTc5ZWM5NzY3
YjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29y
a0RhdGFUYXNrQ29jb2EuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29h
L05ldHdvcmtEYXRhVGFza0NvY29hLmgKQEAgLTM0LDYgKzM0LDEwIEBACiBPQkpDX0NMQVNTIE5T
SFRUUENvb2tpZVN0b3JhZ2U7CiBPQkpDX0NMQVNTIE5TVVJMU2Vzc2lvbkRhdGFUYXNrOwogCitu
YW1lc3BhY2UgV2ViQ29yZSB7CitjbGFzcyBSZWdpc3RyYWJsZURvbWFpbjsKK30KKwogbmFtZXNw
YWNlIFdlYktpdCB7CiAKIGNsYXNzIERvd25sb2FkOwpAQCAtODcsNiArOTEsMTAgQEAgcHJpdmF0
ZToKIAogI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCiAgICAgc3RhdGljIE5T
SFRUUENvb2tpZVN0b3JhZ2UgKnN0YXRlbGVzc0Nvb2tpZVN0b3JhZ2UoKTsKKyNpZiBIQVZFKENG
TkVUV09SS19DTkFNRV9BTkRfQ09PS0lFX1RSQU5TRk9STV9TUEkpCisgICAgdm9pZCB1cGRhdGVG
aXJzdFBhcnR5SW5mb0ZvclRhc2tBbmRTZXNzaW9uKGNvbnN0IFVSTCYpOworICAgIHZvaWQgYXBw
bHlDb29raWVQb2xpY3lGb3JUaGlyZFBhcnR5Q05BTUVDbG9ha2luZyhjb25zdCBXZWJDb3JlOjpS
ZXNvdXJjZVJlcXVlc3QmKTsKKyNlbmRpZgogICAgIHZvaWQgYmxvY2tDb29raWVzKCk7CiAgICAg
dm9pZCB1bmJsb2NrQ29va2llcygpOwogICAgIGJvb2wgbmVlZHNGaXJzdFBhcnR5Q29va2llQmxv
Y2tpbmdMYXRjaE1vZGVRdWlyayhjb25zdCBVUkwmIGZpcnN0UGFydHlVUkwsIGNvbnN0IFVSTCYg
cmVxdWVzdFVSTCwgY29uc3QgVVJMJiByZWRpcmVjdGluZ1VSTCkgY29uc3Q7CkBAIC0xMDIsNiAr
MTEwLDEwIEBAIHByaXZhdGU6CiAKICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNT
KQogICAgIGJvb2wgbV9oYXNCZWVuU2V0VG9Vc2VTdGF0ZWxlc3NDb29raWVTdG9yYWdlIHsgZmFs
c2UgfTsKKyNpZiBIQVZFKENGTkVUV09SS19DTkFNRV9BTkRfQ09PS0lFX1RSQU5TRk9STV9TUEkp
CisgICAgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4gbV9maXJzdFBhcnR5UmVnaXN0cmFibGVE
b21haW47CisgICAgU2Vjb25kcyBtX2FnZUNhcEZvckNOQU1FQ2xvYWtlZENvb2tpZXMgeyAyNF9o
ICogNyB9OworI2VuZGlmCiAjZW5kaWYKIAogICAgIGJvb2wgbV9pc0Zvck1haW5SZXNvdXJjZU5h
dmlnYXRpb25Gb3JBbnlGcmFtZSB7IGZhbHNlIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtEYXRhVGFza0NvY29hLm1tIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrRGF0YVRhc2tDb2NvYS5tbQppbmRleCA3
N2I3ZDEzNDU0NGMxNDQ2MmRmZDhhZTJmMDJmODNjZjllMzdkNjA0Li4yMWVkZWE5MzhmZmY2ZmZj
YWZiOGE0YzhiZmQ0MDA2M2YyNmVjODhmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL2NvY29hL05ldHdvcmtEYXRhVGFza0NvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya0RhdGFUYXNrQ29jb2EubW0KQEAgLTM4LDYg
KzM4LDcgQEAKICNpbXBvcnQgPFdlYkNvcmUvQXV0aGVudGljYXRpb25DaGFsbGVuZ2UuaD4KICNp
bXBvcnQgPFdlYkNvcmUvTmV0d29ya1N0b3JhZ2VTZXNzaW9uLmg+CiAjaW1wb3J0IDxXZWJDb3Jl
L05vdEltcGxlbWVudGVkLmg+CisjaW1wb3J0IDxXZWJDb3JlL1JlZ2lzdHJhYmxlRG9tYWluLmg+
CiAjaW1wb3J0IDxXZWJDb3JlL1Jlc291cmNlUmVxdWVzdC5oPgogI2ltcG9ydCA8cGFsL3NwaS9j
Zi9DRk5ldHdvcmtTUEkuaD4KICNpbXBvcnQgPHd0Zi9CbG9ja1B0ci5oPgpAQCAtMTI5LDYgKzEz
MCw4NiBAQCBOU0hUVFBDb29raWVTdG9yYWdlICpOZXR3b3JrRGF0YVRhc2tDb2NvYTo6c3RhdGVs
ZXNzQ29va2llU3RvcmFnZSgpCiAgICAgcmV0dXJuIHN0YXRlbGVzc0Nvb2tpZVN0b3JhZ2UuZ2V0
KCkuZ2V0KCk7CiB9CiAKKyNpZiBIQVZFKENGTkVUV09SS19DTkFNRV9BTkRfQ09PS0lFX1RSQU5T
Rk9STV9TUEkpCitzdGF0aWMgYm9vbCBoYXNDTkFNRUFuZENvb2tpZVRyYW5zZm9ybVNQSShOU1VS
TFNlc3Npb25EYXRhVGFzayogdGFzaykKK3sKKyAgICByZXR1cm4gW3Rhc2sgcmVzcG9uZHNUb1Nl
bGVjdG9yOkBzZWxlY3RvcihfY29va2llVHJhbnNmb3JtQ2FsbGJhY2spXQorICAgICAgICAmJiBb
dGFzayByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKF9yZXNvbHZlZENOQU1FQ2hhaW4pXTsK
K30KKworc3RhdGljIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIGxhc3RDTkFNRURvbWFpbihO
U0FycmF5PE5TU3RyaW5nKj4qIGNuYW1lcykKK3sKKyAgICBpZiAoYXV0byogbGFzdFJlc29sdmVk
Q05BTUVJbkNoYWluID0gW2NuYW1lcyBsYXN0T2JqZWN0XSkgeworICAgICAgICBhdXRvIGNuYW1l
ID0gU3RyaW5nKGxhc3RSZXNvbHZlZENOQU1FSW5DaGFpbik7CisgICAgICAgIGlmIChjbmFtZS5l
bmRzV2l0aCgnLicpKQorICAgICAgICAgICAgY25hbWUucmVtb3ZlKGNuYW1lLmxlbmd0aCgpIC0g
MSk7CisgICAgICAgIHJldHVybiBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbjo6dW5jaGVja2Vk
Q3JlYXRlRnJvbUhvc3QoY25hbWUpOworICAgIH0KKworICAgIHJldHVybiBXZWJDb3JlOjpSZWdp
c3RyYWJsZURvbWFpbjo6dW5jaGVja2VkQ3JlYXRlRnJvbUhvc3QoZW1wdHlTdHJpbmcoKSk7Cit9
CisKK3ZvaWQgTmV0d29ya0RhdGFUYXNrQ29jb2E6OnVwZGF0ZUZpcnN0UGFydHlJbmZvRm9yVGFz
a0FuZFNlc3Npb24oY29uc3QgVVJMJiByZXF1ZXN0VVJMKQoreworICAgIGlmICghaGFzQ05BTUVB
bmRDb29raWVUcmFuc2Zvcm1TUEkobV90YXNrLmdldCgpKSB8fCAhbmV0d29ya1Nlc3Npb24oKSB8
fCAhbmV0d29ya1Nlc3Npb24oKS0+bmV0d29ya1N0b3JhZ2VTZXNzaW9uKCkgfHwgIW5ldHdvcmtT
ZXNzaW9uKCktPm5ldHdvcmtTdG9yYWdlU2Vzc2lvbigpLT5yZXNvdXJjZUxvYWRTdGF0aXN0aWNz
RW5hYmxlZCgpIHx8ICFuZXR3b3JrU2Vzc2lvbigpLT5jbmFtZUNsb2FraW5nTWl0aWdhdGlvbkVu
YWJsZWQoKSB8fCByZXF1ZXN0VVJMLmhvc3QoKS5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybjsK
KworICAgIGF1dG8mJiBjbmFtZURvbWFpbiA9IGxhc3RDTkFNRURvbWFpbihbbV90YXNrIF9yZXNv
bHZlZENOQU1FQ2hhaW5dKTsKKyAgICBpZiAoIWNuYW1lRG9tYWluLmlzRW1wdHkoKSAmJiBjbmFt
ZURvbWFpbiAhPSBtX2ZpcnN0UGFydHlSZWdpc3RyYWJsZURvbWFpbikKKyAgICAgICAgbmV0d29y
a1Nlc3Npb24oKS0+c2V0Rmlyc3RQYXJ0eUhvc3RDTkFNRURvbWFpbihyZXF1ZXN0VVJMLmhvc3Qo
KS50b1N0cmluZygpLCBXVEZNb3ZlKGNuYW1lRG9tYWluKSk7Cit9CisKK3ZvaWQgTmV0d29ya0Rh
dGFUYXNrQ29jb2E6OmFwcGx5Q29va2llUG9saWN5Rm9yVGhpcmRQYXJ0eUNOQU1FQ2xvYWtpbmco
Y29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0KQoreworICAgIGlmICghaGFz
Q05BTUVBbmRDb29raWVUcmFuc2Zvcm1TUEkobV90YXNrLmdldCgpKSB8fCBpc1RvcExldmVsTmF2
aWdhdGlvbigpIHx8ICFuZXR3b3JrU2Vzc2lvbigpIHx8ICFuZXR3b3JrU2Vzc2lvbigpLT5uZXR3
b3JrU3RvcmFnZVNlc3Npb24oKSB8fCAhbmV0d29ya1Nlc3Npb24oKS0+bmV0d29ya1N0b3JhZ2VT
ZXNzaW9uKCktPnJlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkKCkgfHwgIW5ldHdvcmtTZXNz
aW9uKCktPmNuYW1lQ2xvYWtpbmdNaXRpZ2F0aW9uRW5hYmxlZCgpKQorICAgICAgICByZXR1cm47
CisKKyAgICBpZiAoaXNUaGlyZFBhcnR5UmVxdWVzdChyZXF1ZXN0KSkgeworICAgICAgICBtX3Rh
c2suZ2V0KCkuX2Nvb2tpZVRyYW5zZm9ybUNhbGxiYWNrID0gbmlsOworICAgICAgICByZXR1cm47
CisgICAgfQorCisgICAgLy8gQ2FwIGV4cGlyeSBvZiBpbmNvbWluZyBjb29raWVzIGluIHJlc3Bv
bnNlIGlmIGl0IGlzIGEgc2FtZS1zaXRlCisgICAgLy8gc3VicmVzb3VyY2UgYnV0IGl0IHJlc29s
dmVzIHRvIGEgZGlmZmVyZW50IENOQU1FIHRoYW4gdGhlIHRvcAorICAgIC8vIHNpdGUgcmVxdWVz
dCwgYS5rLmEuIHRoaXJkLXBhcnR5IENOQU1FIGNsb2FraW5nLgorICAgIGF1dG8gZmlyc3RQYXJ0
eVVSTCA9IHJlcXVlc3QuZmlyc3RQYXJ0eUZvckNvb2tpZXMoKTsKKyAgICBhdXRvIGZpcnN0UGFy
dHlIb3N0Q05BTUUgPSBuZXR3b3JrU2Vzc2lvbigpLT5maXJzdFBhcnR5SG9zdENOQU1FRG9tYWlu
KGZpcnN0UGFydHlVUkwuaG9zdCgpLnRvU3RyaW5nKCkpOworCisgICAgbV90YXNrLmdldCgpLl9j
b29raWVUcmFuc2Zvcm1DYWxsYmFjayA9IG1ha2VCbG9ja1B0cihbcmVxdWVzdFVSTCA9IGNyb3Nz
VGhyZWFkQ29weShyZXF1ZXN0LnVybCgpKSwgZmlyc3RQYXJ0eVVSTCA9IGNyb3NzVGhyZWFkQ29w
eShmaXJzdFBhcnR5VVJMKSwgZmlyc3RQYXJ0eUhvc3RDTkFNRSA9IGNyb3NzVGhyZWFkQ29weShm
aXJzdFBhcnR5SG9zdENOQU1FKSwgdGhpcmRQYXJ0eUNOQU1FRG9tYWluRm9yVGVzdGluZyA9IGNy
b3NzVGhyZWFkQ29weShuZXR3b3JrU2Vzc2lvbigpLT50aGlyZFBhcnR5Q05BTUVEb21haW5Gb3JU
ZXN0aW5nKCkpLCBhZ2VDYXBGb3JDTkFNRUNsb2FrZWRDb29raWVzID0gY3Jvc3NUaHJlYWRDb3B5
KG1fYWdlQ2FwRm9yQ05BTUVDbG9ha2VkQ29va2llcyksIHRhc2sgPSBtX3Rhc2tdIChOU0FycmF5
PE5TSFRUUENvb2tpZSo+ICpjb29raWVzU2V0SW5SZXNwb25zZSkgLT4gTlNBcnJheTxOU0hUVFBD
b29raWUqPiAqIHsKKyAgICAgICAgaWYgKCFbY29va2llc1NldEluUmVzcG9uc2UgY291bnRdKQor
ICAgICAgICAgICAgcmV0dXJuIGNvb2tpZXNTZXRJblJlc3BvbnNlOworCisgICAgICAgIGF1dG8g
Y25hbWVEb21haW4gPSBsYXN0Q05BTUVEb21haW4oW3Rhc2sgX3Jlc29sdmVkQ05BTUVDaGFpbl0p
OworICAgICAgICBpZiAoY25hbWVEb21haW4uaXNFbXB0eSgpKSB7CisgICAgICAgICAgICBpZiAo
IXRoaXJkUGFydHlDTkFNRURvbWFpbkZvclRlc3RpbmcpCisgICAgICAgICAgICAgICAgcmV0dXJu
IGNvb2tpZXNTZXRJblJlc3BvbnNlOworICAgICAgICAgICAgY25hbWVEb21haW4gPSAqdGhpcmRQ
YXJ0eUNOQU1FRG9tYWluRm9yVGVzdGluZzsKKyAgICAgICAgfQorCisKKyAgICAgICAgLy8gQ05B
TUUgY2xvYWtpbmcgaXMgYSBmaXJzdC1wYXJ0eSBzdWIgcmVzb3VyY2UgdGhhdCByZXNvbHZlcwor
ICAgICAgICAvLyB0aHJvdWdoIGEgQ05BTUUgdGhhdCBkaWZmZXJzIGZyb20gdGhlIGZpcnN0LXBh
cnR5IGRvbWFpbiBhbmQKKyAgICAgICAgLy8gYWxzbyBkaWZmZXJzIGZyb20gdGhlIHRvcCBmcmFt
ZSBob3N0J3MgQ05BTUUsIGlmIG9uZSBleGlzdHMuCisgICAgICAgIGlmICghY25hbWVEb21haW4u
bWF0Y2hlcyhmaXJzdFBhcnR5VVJMKSAmJiAoIWZpcnN0UGFydHlIb3N0Q05BTUUgfHwgY25hbWVE
b21haW4gIT0gKmZpcnN0UGFydHlIb3N0Q05BTUUpKSB7CisKKyAgICAgICAgICAgIE5TVUludGVn
ZXIgY291bnQgPSBbY29va2llc1NldEluUmVzcG9uc2UgY291bnRdOworICAgICAgICAgICAgLy8g
RG9uJ3QgdXNlIFJldGFpblB0ciBoZXJlLiBUaGlzIGFycmF5IGhhcyB0byBiZSByZXRhaW5lZCBh
bmQKKyAgICAgICAgICAgIC8vIGF1dG8gcmVsZWFzZWQgdG8gbm90IGJlIHJlbGVhc2VkIGJlZm9y
ZSByZXR1cm5lZCB0byB0aGUgY29kZQorICAgICAgICAgICAgLy8gZXhlY3V0aW5nIHRoZSBibG9j
ay4KKyAgICAgICAgICAgIGF1dG8qIGNhcHBlZENvb2tpZXMgPSBbW05TTXV0YWJsZUFycmF5IGFs
bG9jXSBpbml0V2l0aENhcGFjaXR5OmNvdW50XTsKKyAgICAgICAgICAgIGZvciAoTlNVSW50ZWdl
ciBpID0gMDsgaSA8IGNvdW50OyArK2kpIHsKKyAgICAgICAgICAgICAgICBOU0hUVFBDb29raWUg
KmNvb2tpZSA9IChOU0hUVFBDb29raWUgKilbY29va2llc1NldEluUmVzcG9uc2Ugb2JqZWN0QXRJ
bmRleDppXTsKKyAgICAgICAgICAgICAgICBjb29raWUgPSBXZWJDb3JlOjpOZXR3b3JrU3RvcmFn
ZVNlc3Npb246OmNhcEV4cGlyeU9mUGVyc2lzdGVudENvb2tpZShjb29raWUsIGFnZUNhcEZvckNO
QU1FQ2xvYWtlZENvb2tpZXMpOworICAgICAgICAgICAgICAgIFtjYXBwZWRDb29raWVzIGFkZE9i
amVjdDpjb29raWVdOworICAgICAgICAgICAgfQorICAgICAgICAgICAgcmV0dXJuIGNhcHBlZENv
b2tpZXM7CisgICAgICAgIH0KKworICAgICAgICByZXR1cm4gY29va2llc1NldEluUmVzcG9uc2U7
CisgICAgfSkuZ2V0KCk7Cit9CisjZW5kaWYKKwogdm9pZCBOZXR3b3JrRGF0YVRhc2tDb2NvYTo6
YmxvY2tDb29raWVzKCkKIHsKICAgICBBU1NFUlQoaGFzUHJvY2Vzc1ByaXZpbGVnZShQcm9jZXNz
UHJpdmlsZWdlOjpDYW5BY2Nlc3NSYXdDb29raWVzKSk7CkBAIC0yNjMsNiArMzQ0LDkgQEAgTmV0
d29ya0RhdGFUYXNrQ29jb2E6Ok5ldHdvcmtEYXRhVGFza0NvY29hKE5ldHdvcmtTZXNzaW9uJiBz
ZXNzaW9uLCBOZXR3b3JrRGF0YVQKICAgICB9CiAKICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9T
VEFUSVNUSUNTKQorI2lmIEhBVkUoQ0ZORVRXT1JLX0NOQU1FX0FORF9DT09LSUVfVFJBTlNGT1JN
X1NQSSkKKyAgICBhcHBseUNvb2tpZVBvbGljeUZvclRoaXJkUGFydHlDTkFNRUNsb2FraW5nKHJl
cXVlc3QpOworI2VuZGlmCiAgICAgaWYgKHNob3VsZEJsb2NrQ29va2llcykgewogI2lmICFSRUxF
QVNFX0xPR19ESVNBQkxFRAogICAgICAgICBpZiAobV9zZXNzaW9uLT5zaG91bGRMb2dDb29raWVJ
bmZvcm1hdGlvbigpKQpAQCAtMzQ1LDYgKzQyOSwxMCBAQCB2b2lkIE5ldHdvcmtEYXRhVGFza0Nv
Y29hOjpkaWRSZWNlaXZlRGF0YShSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmIGRhdGEpCiB2
b2lkIE5ldHdvcmtEYXRhVGFza0NvY29hOjpkaWRSZWNlaXZlUmVzcG9uc2UoV2ViQ29yZTo6UmVz
b3VyY2VSZXNwb25zZSYmIHJlc3BvbnNlLCBOZWdvdGlhdGVkTGVnYWN5VExTIG5lZ290aWF0ZWRM
ZWdhY3lUTFMsIFdlYktpdDo6UmVzcG9uc2VDb21wbGV0aW9uSGFuZGxlciYmIGNvbXBsZXRpb25I
YW5kbGVyKQogewogICAgIFdURkVtaXRTaWducG9zdChtX3Rhc2suZ2V0KCksICJEYXRhVGFzayIs
ICJyZWNlaXZlZCByZXNwb25zZSBoZWFkZXJzIik7CisjaWYgSEFWRShDRk5FVFdPUktfQ05BTUVf
QU5EX0NPT0tJRV9UUkFOU0ZPUk1fU1BJKQorICAgIGlmIChpc1RvcExldmVsTmF2aWdhdGlvbigp
KQorICAgICAgICB1cGRhdGVGaXJzdFBhcnR5SW5mb0ZvclRhc2tBbmRTZXNzaW9uKHJlc3BvbnNl
LnVybCgpKTsKKyNlbmRpZgogICAgIE5ldHdvcmtEYXRhVGFzazo6ZGlkUmVjZWl2ZVJlc3BvbnNl
KFdURk1vdmUocmVzcG9uc2UpLCBuZWdvdGlhdGVkTGVnYWN5VExTLCBXVEZNb3ZlKGNvbXBsZXRp
b25IYW5kbGVyKSk7CiB9CiAKQEAgLTM5OSw2ICs0ODcsOSBAQCB2b2lkIE5ldHdvcmtEYXRhVGFz
a0NvY29hOjp3aWxsUGVyZm9ybUhUVFBSZWRpcmVjdGlvbihXZWJDb3JlOjpSZXNvdXJjZVJlc3Bv
bnNlJgogICAgICAgICByZXF1ZXN0LnNldEZpcnN0UGFydHlGb3JDb29raWVzKHJlcXVlc3QudXJs
KCkpOwogCiAjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKKyNpZiBIQVZFKENG
TkVUV09SS19DTkFNRV9BTkRfQ09PS0lFX1RSQU5TRk9STV9TUEkpCisgICAgYXBwbHlDb29raWVQ
b2xpY3lGb3JUaGlyZFBhcnR5Q05BTUVDbG9ha2luZyhyZXF1ZXN0KTsKKyNlbmRpZgogICAgIGlm
ICghbV9oYXNCZWVuU2V0VG9Vc2VTdGF0ZWxlc3NDb29raWVTdG9yYWdlKSB7CiAgICAgICAgIGlm
IChtX3N0b3JlZENyZWRlbnRpYWxzUG9saWN5ID09IFdlYkNvcmU6OlN0b3JlZENyZWRlbnRpYWxz
UG9saWN5OjpFcGhlbWVyYWxTdGF0ZWxlc3MKICAgICAgICAgICAgIHx8IChtX3Nlc3Npb24tPm5l
dHdvcmtTdG9yYWdlU2Vzc2lvbigpICYmIG1fc2Vzc2lvbi0+bmV0d29ya1N0b3JhZ2VTZXNzaW9u
KCktPnNob3VsZEJsb2NrQ29va2llcyhyZXF1ZXN0LCBtX2ZyYW1lSUQsIG1fcGFnZUlELCBtX3No
b3VsZFJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nKSkpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGFyYW1ldGVycy5oIGIvU291cmNl
L1dlYktpdC9TaGFyZWQvUmVzb3VyY2VMb2FkU3RhdGlzdGljc1BhcmFtZXRlcnMuaAppbmRleCA2
MGRlMzVmNmFlOTU3ZDcwNjc1OTQ5NjQ3M2NlMzUxNjQyNDFlMmViLi5hY2IzNGVhYjExNjU3YzAz
M2M1MmFlM2FlYjAxODU4MjVlMGQ3NzhjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGFyYW1ldGVycy5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NQYXJhbWV0ZXJzLmgKQEAgLTQ1LDYgKzQ1LDcg
QEAgc3RydWN0IFJlc291cmNlTG9hZFN0YXRpc3RpY3NQYXJhbWV0ZXJzIHsKICNpZiBFTkFCTEUo
UkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQogICAgIFdlYkNvcmU6OlRoaXJkUGFydHlDb29raWVC
bG9ja2luZ01vZGUgdGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9kZSB7IFdlYkNvcmU6OlRoaXJk
UGFydHlDb29raWVCbG9ja2luZ01vZGU6OkFsbCB9OwogICAgIFdlYkNvcmU6OlNhbWVTaXRlU3Ry
aWN0RW5mb3JjZW1lbnRFbmFibGVkIHNhbWVTaXRlU3RyaWN0RW5mb3JjZW1lbnRFbmFibGVkIHsg
V2ViQ29yZTo6U2FtZVNpdGVTdHJpY3RFbmZvcmNlbWVudEVuYWJsZWQ6Ok5vIH07CisgICAgV2Vi
Q29yZTo6Q05BTUVDbG9ha2luZ01pdGlnYXRpb25FbmFibGVkIGNuYW1lQ2xvYWtpbmdNaXRpZ2F0
aW9uRW5hYmxlZCB7IFdlYkNvcmU6OkNOQU1FQ2xvYWtpbmdNaXRpZ2F0aW9uRW5hYmxlZDo6Tm8g
fTsKICNlbmRpZgogICAgIFdlYkNvcmU6OkZpcnN0UGFydHlXZWJzaXRlRGF0YVJlbW92YWxNb2Rl
IGZpcnN0UGFydHlXZWJzaXRlRGF0YVJlbW92YWxNb2RlIHsgV2ViQ29yZTo6Rmlyc3RQYXJ0eVdl
YnNpdGVEYXRhUmVtb3ZhbE1vZGU6OkFsbEJ1dENvb2tpZXMgfTsKICAgICBXZWJDb3JlOjpSZWdp
c3RyYWJsZURvbWFpbiBzdGFuZGFsb25lQXBwbGljYXRpb25Eb21haW47CkBAIC02Myw2ICs2NCw3
IEBAIHN0cnVjdCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGFyYW1ldGVycyB7CiAjaWYgRU5BQkxF
KFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKICAgICAgICAgZW5jb2RlciA8PCB0aGlyZFBhcnR5
Q29va2llQmxvY2tpbmdNb2RlOwogICAgICAgICBlbmNvZGVyIDw8IHNhbWVTaXRlU3RyaWN0RW5m
b3JjZW1lbnRFbmFibGVkOworICAgICAgICBlbmNvZGVyIDw8IGNuYW1lQ2xvYWtpbmdNaXRpZ2F0
aW9uRW5hYmxlZDsKICNlbmRpZgogICAgICAgICBlbmNvZGVyIDw8IGZpcnN0UGFydHlXZWJzaXRl
RGF0YVJlbW92YWxNb2RlOwogICAgICAgICBlbmNvZGVyIDw8IHN0YW5kYWxvbmVBcHBsaWNhdGlv
bkRvbWFpbjsKQEAgLTExNyw2ICsxMTksMTEgQEAgc3RydWN0IFJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NQYXJhbWV0ZXJzIHsKICAgICAgICAgZGVjb2RlciA+PiBzYW1lU2l0ZVN0cmljdEVuZm9yY2Vt
ZW50RW5hYmxlZDsKICAgICAgICAgaWYgKCFzYW1lU2l0ZVN0cmljdEVuZm9yY2VtZW50RW5hYmxl
ZCkKICAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICAgICAgT3B0aW9uYWw8
V2ViQ29yZTo6Q05BTUVDbG9ha2luZ01pdGlnYXRpb25FbmFibGVkPiBjbmFtZUNsb2FraW5nTWl0
aWdhdGlvbkVuYWJsZWQ7CisgICAgICAgIGRlY29kZXIgPj4gY25hbWVDbG9ha2luZ01pdGlnYXRp
b25FbmFibGVkOworICAgICAgICBpZiAoIWNuYW1lQ2xvYWtpbmdNaXRpZ2F0aW9uRW5hYmxlZCkK
KyAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiAjZW5kaWYKIAogICAgICAgICBPcHRp
b25hbDxXZWJDb3JlOjpGaXJzdFBhcnR5V2Vic2l0ZURhdGFSZW1vdmFsTW9kZT4gZmlyc3RQYXJ0
eVdlYnNpdGVEYXRhUmVtb3ZhbE1vZGU7CkBAIC0xNTAsNiArMTU3LDcgQEAgc3RydWN0IFJlc291
cmNlTG9hZFN0YXRpc3RpY3NQYXJhbWV0ZXJzIHsKICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9T
VEFUSVNUSUNTKQogICAgICAgICAgICAgV1RGTW92ZSgqdGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5n
TW9kZSksCiAgICAgICAgICAgICBXVEZNb3ZlKCpzYW1lU2l0ZVN0cmljdEVuZm9yY2VtZW50RW5h
YmxlZCksCisgICAgICAgICAgICBXVEZNb3ZlKCpjbmFtZUNsb2FraW5nTWl0aWdhdGlvbkVuYWJs
ZWQpLAogI2VuZGlmCiAgICAgICAgICAgICBXVEZNb3ZlKCpmaXJzdFBhcnR5V2Vic2l0ZURhdGFS
ZW1vdmFsTW9kZSksCiAgICAgICAgICAgICBXVEZNb3ZlKCpzdGFuZGFsb25lQXBwbGljYXRpb25E
b21haW4pLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUHJlZmVyZW5jZXMu
eWFtbCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlByZWZlcmVuY2VzLnlhbWwKaW5kZXggODhh
ZTZhZTJkOWEzOTc0NzYxY2I5NzI0NjQ3ZmIzNjEzZGNiNTc2Mi4uOWFhOWYwNjExNDAzNzdiMWY3
ZWMxMGZmNjQ3ZDg1OWM0M2Q5ZmVkOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQv
V2ViUHJlZmVyZW5jZXMueWFtbAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQcmVmZXJl
bmNlcy55YW1sCkBAIC0yMDU2LDYgKzIwNTYsMTMgQEAgSXNTYW1lU2l0ZVN0cmljdEVuZm9yY2Vt
ZW50RW5hYmxlZDoKICAgaHVtYW5SZWFkYWJsZURlc2NyaXB0aW9uOiAiRW5hYmxlIFNhbWVTaXRl
IHN0cmljdCBlbmZvcmNlbWVudCB0byBtaXRpZ2F0ZSBib3VuY2UgdHJhY2tpbmciCiAgIGNhdGVn
b3J5OiBleHBlcmltZW50YWwKIAorSXNDTkFNRUNsb2FraW5nTWl0aWdhdGlvbkVuYWJsZWQ6Cisg
IHR5cGU6IGJvb2wKKyAgZGVmYXVsdFZhbHVlOiBmYWxzZQorICBodW1hblJlYWRhYmxlTmFtZTog
IkVuYWJsZSBDTkFNRSBjbG9ha2luZyBtaXRpZ2F0aW9uIChJVFApIgorICBodW1hblJlYWRhYmxl
RGVzY3JpcHRpb246ICJFbmFibGUgdGhpcmQtcGFydHkgQ05BTUUgY2xvYWtpbmcgbWl0aWdhdGlv
biB3aGVuIEludGVsbGlnZW50IFRyYWNraW5nIFByZXZlbnRpb24gaXMgZW5hYmxlZCIKKyAgY2F0
ZWdvcnk6IGV4cGVyaW1lbnRhbAorCiBJc0xvZ2dlZEluQVBJRW5hYmxlZDoKICAgICB0eXBlOiBi
b29sCiAgICAgZGVmYXVsdFZhbHVlOiBmYWxzZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0MvV0tXZWJzaXRlRGF0YVN0b3JlUmVmLmNwcCBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9DL1dLV2Vic2l0ZURhdGFTdG9yZVJlZi5jcHAKaW5kZXggODAwZTc1NDll
YTE3OTZmM2U3ZGIxMzVkNmIxNzA0ZDBkOGZiOTYzZC4uZjM1NjNlOTQ0MWNlNmIxNGI0MmNmY2U4
NWYxOWQ5ZDkyOTAwZDM1MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0MvV0tXZWJzaXRlRGF0YVN0b3JlUmVmLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQy9XS1dlYnNpdGVEYXRhU3RvcmVSZWYuY3BwCkBAIC02MjgsNiArNjI4LDI4IEBAIHZv
aWQgV0tXZWJzaXRlRGF0YVN0b3JlU2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc1RvU2FtZVNpdGVT
dHJpY3RDb29raWVzRm9yVGVzdGluCiAjZW5kaWYKIH0KIAordm9pZCBXS1dlYnNpdGVEYXRhU3Rv
cmVTZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRmlyc3RQYXJ0eUhvc3RDTkFNRURvbWFpbkZvclRl
c3RpbmcoV0tXZWJzaXRlRGF0YVN0b3JlUmVmIGRhdGFTdG9yZVJlZiwgV0tTdHJpbmdSZWYgZmly
c3RQYXJ0eVVSTFN0cmluZywgV0tTdHJpbmdSZWYgY25hbWVVUkxTdHJpbmcsIHZvaWQqIGNvbnRl
eHQsIFdLV2Vic2l0ZURhdGFTdG9yZVNldFJlc291cmNlTG9hZFN0YXRpc3RpY3NGaXJzdFBhcnR5
SG9zdENOQU1FRG9tYWluRm9yVGVzdGluZ0Z1bmN0aW9uIGNvbXBsZXRpb25IYW5kbGVyKQorewor
I2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCisgICAgV2ViS2l0Ojp0b0ltcGwo
ZGF0YVN0b3JlUmVmKS0+c2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0ZpcnN0UGFydHlIb3N0Q05B
TUVEb21haW5Gb3JUZXN0aW5nKFVSTChVUkwoKSwgV2ViS2l0Ojp0b0ltcGwoZmlyc3RQYXJ0eVVS
TFN0cmluZyktPnN0cmluZygpKSwgVVJMKFVSTCgpLCBXZWJLaXQ6OnRvSW1wbChjbmFtZVVSTFN0
cmluZyktPnN0cmluZygpKSwgW2NvbnRleHQsIGNvbXBsZXRpb25IYW5kbGVyXSB7CisgICAgICAg
IGNvbXBsZXRpb25IYW5kbGVyKGNvbnRleHQpOworICAgIH0pOworI2Vsc2UKKyAgICBjb21wbGV0
aW9uSGFuZGxlcihjb250ZXh0KTsKKyNlbmRpZgorfQorCit2b2lkIFdLV2Vic2l0ZURhdGFTdG9y
ZVNldFJlc291cmNlTG9hZFN0YXRpc3RpY3NUaGlyZFBhcnR5Q05BTUVEb21haW5Gb3JUZXN0aW5n
KFdLV2Vic2l0ZURhdGFTdG9yZVJlZiBkYXRhU3RvcmVSZWYsIFdLU3RyaW5nUmVmIGNuYW1lVVJM
U3RyaW5nLCB2b2lkKiBjb250ZXh0LCBXS1dlYnNpdGVEYXRhU3RvcmVTZXRSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzVGhpcmRQYXJ0eUNOQU1FRG9tYWluRm9yVGVzdGluZ0Z1bmN0aW9uIGNvbXBsZXRp
b25IYW5kbGVyKQoreworI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCisgICAg
V2ViS2l0Ojp0b0ltcGwoZGF0YVN0b3JlUmVmKS0+c2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc1Ro
aXJkUGFydHlDTkFNRURvbWFpbkZvclRlc3RpbmcoVVJMKFVSTCgpLCBXZWJLaXQ6OnRvSW1wbChj
bmFtZVVSTFN0cmluZyktPnN0cmluZygpKSwgW2NvbnRleHQsIGNvbXBsZXRpb25IYW5kbGVyXSB7
CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGNvbnRleHQpOworICAgIH0pOworI2Vsc2UKKyAg
ICBjb21wbGV0aW9uSGFuZGxlcihjb250ZXh0KTsKKyNlbmRpZgorfQorCiB2b2lkIFdLV2Vic2l0
ZURhdGFTdG9yZVNldEFwcEJvdW5kRG9tYWluc0ZvclRlc3RpbmcoV0tBcnJheVJlZiBvcmlnaW5V
UkxzUmVmLCB2b2lkKiBjb250ZXh0LCBXS1dlYnNpdGVEYXRhU3RvcmVTZXRBcHBCb3VuZERvbWFp
bnNGb3JUZXN0aW5nRnVuY3Rpb24gY29tcGxldGlvbkhhbmRsZXIpCiB7CiAjaWYgUExBVEZPUk0o
Q09DT0EpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1dlYnNp
dGVEYXRhU3RvcmVSZWYuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLV2Vic2l0
ZURhdGFTdG9yZVJlZi5oCmluZGV4IGQ4YjhkMWY0MGI4NjU0MzhhMjg4MTQzODA5N2ViYzBmMGM3
ZTFmZGMuLmViODJmYWQ0NDY4ZjZmMzQ3YjBiZDhkNDYyNGZjNWFkNjVkNzk5OTcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLV2Vic2l0ZURhdGFTdG9yZVJlZi5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLV2Vic2l0ZURhdGFTdG9yZVJl
Zi5oCkBAIC0xMzAsNiArMTMwLDEwIEBAIHR5cGVkZWYgdm9pZCAoKldLV2Vic2l0ZURhdGFTdG9y
ZVNldFJlc291cmNlTG9hZFN0YXRpc3RpY3NGaXJzdFBhcnR5V2Vic2l0ZURhdGFSCiBXS19FWFBP
UlQgdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVTZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRmlyc3RQ
YXJ0eVdlYnNpdGVEYXRhUmVtb3ZhbE1vZGVGb3JUZXN0aW5nKFdLV2Vic2l0ZURhdGFTdG9yZVJl
ZiBkYXRhU3RvcmVSZWYsIGJvb2wgZW5hYmxlZCwgdm9pZCogY29udGV4dCwgV0tXZWJzaXRlRGF0
YVN0b3JlU2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0ZpcnN0UGFydHlXZWJzaXRlRGF0YVJlbW92
YWxNb2RlRm9yVGVzdGluZ0Z1bmN0aW9uIGNvbXBsZXRpb25IYW5kbGVyKTsKIHR5cGVkZWYgdm9p
ZCAoKldLV2Vic2l0ZURhdGFTdG9yZVNldFJlc291cmNlTG9hZFN0YXRpc3RpY3NUb1NhbWVTaXRl
U3RyaWN0Q29va2llc0ZvclRlc3RpbmdGdW5jdGlvbikodm9pZCogZnVuY3Rpb25Db250ZXh0KTsK
IFdLX0VYUE9SVCB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZVNldFJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NUb1NhbWVTaXRlU3RyaWN0Q29va2llc0ZvclRlc3RpbmcoV0tXZWJzaXRlRGF0YVN0b3JlUmVm
IGRhdGFTdG9yZVJlZiwgV0tTdHJpbmdSZWYgaG9zdE5hbWUsIHZvaWQqIGNvbnRleHQsIFdLV2Vi
c2l0ZURhdGFTdG9yZVNldFJlc291cmNlTG9hZFN0YXRpc3RpY3NUb1NhbWVTaXRlU3RyaWN0Q29v
a2llc0ZvclRlc3RpbmdGdW5jdGlvbiBjb21wbGV0aW9uSGFuZGxlcik7Cit0eXBlZGVmIHZvaWQg
KCpXS1dlYnNpdGVEYXRhU3RvcmVTZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRmlyc3RQYXJ0eUhv
c3RDTkFNRURvbWFpbkZvclRlc3RpbmdGdW5jdGlvbikodm9pZCogZnVuY3Rpb25Db250ZXh0KTsK
K1dLX0VYUE9SVCB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZVNldFJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NGaXJzdFBhcnR5SG9zdENOQU1FRG9tYWluRm9yVGVzdGluZyhXS1dlYnNpdGVEYXRhU3RvcmVS
ZWYgZGF0YVN0b3JlUmVmLCBXS1N0cmluZ1JlZiBmaXJzdFBhcnR5VVJMU3RyaW5nLCBXS1N0cmlu
Z1JlZiBjbmFtZVVSTFN0cmluZywgdm9pZCogY29udGV4dCwgV0tXZWJzaXRlRGF0YVN0b3JlU2V0
UmVzb3VyY2VMb2FkU3RhdGlzdGljc0ZpcnN0UGFydHlIb3N0Q05BTUVEb21haW5Gb3JUZXN0aW5n
RnVuY3Rpb24gY29tcGxldGlvbkhhbmRsZXIpOwordHlwZWRlZiB2b2lkICgqV0tXZWJzaXRlRGF0
YVN0b3JlU2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc1RoaXJkUGFydHlDTkFNRURvbWFpbkZvclRl
c3RpbmdGdW5jdGlvbikodm9pZCogZnVuY3Rpb25Db250ZXh0KTsKK1dLX0VYUE9SVCB2b2lkIFdL
V2Vic2l0ZURhdGFTdG9yZVNldFJlc291cmNlTG9hZFN0YXRpc3RpY3NUaGlyZFBhcnR5Q05BTUVE
b21haW5Gb3JUZXN0aW5nKFdLV2Vic2l0ZURhdGFTdG9yZVJlZiBkYXRhU3RvcmVSZWYsIFdLU3Ry
aW5nUmVmIGNuYW1lVVJMU3RyaW5nLCB2b2lkKiBjb250ZXh0LCBXS1dlYnNpdGVEYXRhU3RvcmVT
ZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzVGhpcmRQYXJ0eUNOQU1FRG9tYWluRm9yVGVzdGluZ0Z1
bmN0aW9uIGNvbXBsZXRpb25IYW5kbGVyKTsKIHR5cGVkZWYgdm9pZCAoKldLV2Vic2l0ZURhdGFT
dG9yZVNldEFwcEJvdW5kRG9tYWluc0ZvclRlc3RpbmdGdW5jdGlvbikodm9pZCogZnVuY3Rpb25D
b250ZXh0KTsKIFdLX0VYUE9SVCB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZVNldEFwcEJvdW5kRG9t
YWluc0ZvclRlc3RpbmcoV0tBcnJheVJlZiBvcmlnaW5VUkxzUmVmLCB2b2lkKiBjb250ZXh0LCBX
S1dlYnNpdGVEYXRhU3RvcmVTZXRBcHBCb3VuZERvbWFpbnNGb3JUZXN0aW5nRnVuY3Rpb24gY29t
cGxldGlvbkhhbmRsZXIpOwogdHlwZWRlZiB2b2lkICgqV0tXZWJzaXRlRGF0YVN0b3JlU3RhdGlz
dGljc1Jlc2V0VG9Db25zaXN0ZW50U3RhdGVGdW5jdGlvbikodm9pZCogZnVuY3Rpb25Db250ZXh0
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1By
b2Nlc3NQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQ
cm9jZXNzUHJveHkuY3BwCmluZGV4IDIyN2M1ZGM0YmNkNmZkMmM1NTI5NzMwOWM2ZjNlMmE4Zjhh
OGYyN2IuLjFmYTkyOTU2OWExMDEwOWMzYTc4ZDZlYzAyZjIwMjZkYThkNTc0NDIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1By
b3h5LmNwcApAQCAtMTE5NSw2ICsxMTk1LDI1IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6
c2V0VG9TYW1lU2l0ZVN0cmljdENvb2tpZXNGb3JUZXN0aW5nKFBBTDo6U2Vzc2lvbklEIHNlCiAg
ICAgc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzczo6U2V0VG9TYW1l
U2l0ZVN0cmljdENvb2tpZXNGb3JUZXN0aW5nKHNlc3Npb25JRCwgZG9tYWluKSwgV1RGTW92ZShj
b21wbGV0aW9uSGFuZGxlcikpOwogfQogCit2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OnNldEZp
cnN0UGFydHlIb3N0Q05BTUVEb21haW5Gb3JUZXN0aW5nKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25J
RCwgY29uc3QgU3RyaW5nJiBmaXJzdFBhcnR5SG9zdCwgY29uc3QgUmVnaXN0cmFibGVEb21haW4m
IGNuYW1lRG9tYWluLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRs
ZXIpCit7CisgICAgaWYgKCFjYW5TZW5kTWVzc2FnZSgpKSB7CisgICAgICAgIGNvbXBsZXRpb25I
YW5kbGVyKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBzZW5kV2l0aEFzeW5jUmVw
bHkoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzOjpTZXRGaXJzdFBhcnR5SG9zdENOQU1FRG9tYWlu
Rm9yVGVzdGluZyhzZXNzaW9uSUQsIGZpcnN0UGFydHlIb3N0LCBjbmFtZURvbWFpbiksIFdURk1v
dmUoY29tcGxldGlvbkhhbmRsZXIpKTsKK30KKwordm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5Ojpz
ZXRUaGlyZFBhcnR5Q05BTUVEb21haW5Gb3JUZXN0aW5nKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25J
RCwgY29uc3QgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mIGRvbWFpbiwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIGlmICghY2FuU2VuZE1l
c3NhZ2UoKSkgeworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcigpOworICAgICAgICByZXR1cm47
CisgICAgfQorCisgICAgc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vz
czo6U2V0VGhpcmRQYXJ0eUNOQU1FRG9tYWluRm9yVGVzdGluZyhzZXNzaW9uSUQsIGRvbWFpbiks
IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKK30KIHZvaWQgTmV0d29ya1Byb2Nlc3NQcm94
eTo6c2V0RG9tYWluc1dpdGhVc2VySW50ZXJhY3Rpb24oSGFzaFNldDxXZWJDb3JlOjpSZWdpc3Ry
YWJsZURvbWFpbj4mJiBkb21haW5zKQogewogICAgIHByb2Nlc3NQb29sKCkuc2V0RG9tYWluc1dp
dGhVc2VySW50ZXJhY3Rpb24oV1RGTW92ZShkb21haW5zKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuaCBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oCmluZGV4IDg1NDUw
MmNiYzZlZGE0YTYwMGZjODFiMWJjMmUwMDFjNjYzOGRhNDIuLmE0MDk0MDQxNjUwODVhMjhmNjI4
MDU4MmYxZjQwNTI0Yjc5NWQ5NDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oCkBAIC0xODUsNiArMTg1LDggQEAgcHVi
bGljOgogICAgIHZvaWQgc2V0U2hvdWxkRW5ibGVTYW1lU2l0ZVN0cmljdEVuZm9yY2VtZW50Rm9y
VGVzdGluZyhQQUw6OlNlc3Npb25JRCwgV2ViQ29yZTo6U2FtZVNpdGVTdHJpY3RFbmZvcmNlbWVu
dEVuYWJsZWQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAgdm9pZCBzZXRGaXJz
dFBhcnR5V2Vic2l0ZURhdGFSZW1vdmFsTW9kZUZvclRlc3RpbmcoUEFMOjpTZXNzaW9uSUQsIFdl
YkNvcmU6OkZpcnN0UGFydHlXZWJzaXRlRGF0YVJlbW92YWxNb2RlLCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKCk+JiYpOwogICAgIHZvaWQgc2V0VG9TYW1lU2l0ZVN0cmljdENvb2tpZXNGb3JUZXN0
aW5nKFBBTDo6U2Vzc2lvbklELCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoKT4mJik7CisgICAgdm9pZCBzZXRGaXJzdFBhcnR5SG9zdENOQU1FRG9tYWlu
Rm9yVGVzdGluZyhQQUw6OlNlc3Npb25JRCwgY29uc3QgU3RyaW5nJiBmaXJzdFBhcnR5SG9zdCwg
Y29uc3QgUmVnaXN0cmFibGVEb21haW4mIGNuYW1lRG9tYWluLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKCk+JiYpOworICAgIHZvaWQgc2V0VGhpcmRQYXJ0eUNOQU1FRG9tYWluRm9yVGVzdGluZyhQ
QUw6OlNlc3Npb25JRCwgY29uc3QgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogICAgIHZvaWQgc2V0RG9tYWluc1dpdGhVc2VySW50ZXJh
Y3Rpb24oSGFzaFNldDxXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbj4mJik7CiAjZW5kaWYKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCmluZGV4IDYzM2RiZjJh
MTA0OTE5NTU5MjY0OTk3Yjc4MzE4N2NhNTIxZjRkOGMuLjZkNmIzNGQ3YWZkZjRjZTY0MDU5YzA2
ZmQxYzg4ZDUwYWM2ODZjNzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YlByb2Nlc3NQb29sLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNz
UG9vbC5jcHAKQEAgLTYwMSw2ICs2MDEsNyBAQCBOZXR3b3JrUHJvY2Vzc1Byb3h5JiBXZWJQcm9j
ZXNzUG9vbDo6ZW5zdXJlTmV0d29ya1Byb2Nlc3MoV2Vic2l0ZURhdGFTdG9yZSogd2l0aAogI2lm
IEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCiAgICAgV2ViQ29yZTo6VGhpcmRQYXJ0
eUNvb2tpZUJsb2NraW5nTW9kZSB0aGlyZFBhcnR5Q29va2llQmxvY2tpbmdNb2RlID0gV2ViQ29y
ZTo6VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9kZTo6QWxsOwogICAgIFdlYkNvcmU6OlNhbWVT
aXRlU3RyaWN0RW5mb3JjZW1lbnRFbmFibGVkIHNhbWVTaXRlU3RyaWN0RW5mb3JjZW1lbnRFbmFi
bGVkID0gV2ViQ29yZTo6U2FtZVNpdGVTdHJpY3RFbmZvcmNlbWVudEVuYWJsZWQ6Ok5vOworICAg
IFdlYkNvcmU6OkNOQU1FQ2xvYWtpbmdNaXRpZ2F0aW9uRW5hYmxlZCBjbmFtZUNsb2FraW5nTWl0
aWdhdGlvbkVuYWJsZWQgPSBXZWJDb3JlOjpDTkFNRUNsb2FraW5nTWl0aWdhdGlvbkVuYWJsZWQ6
Ok5vOwogI2VuZGlmCiAgICAgV2ViQ29yZTo6Rmlyc3RQYXJ0eVdlYnNpdGVEYXRhUmVtb3ZhbE1v
ZGUgZmlyc3RQYXJ0eVdlYnNpdGVEYXRhUmVtb3ZhbE1vZGUgPSBXZWJDb3JlOjpGaXJzdFBhcnR5
V2Vic2l0ZURhdGFSZW1vdmFsTW9kZTo6QWxsQnV0Q29va2llczsKICAgICBXZWJDb3JlOjpSZWdp
c3RyYWJsZURvbWFpbiBzdGFuZGFsb25lQXBwbGljYXRpb25Eb21haW47CkBAIC02MzQsNiArNjM1
LDcgQEAgTmV0d29ya1Byb2Nlc3NQcm94eSYgV2ViUHJvY2Vzc1Bvb2w6OmVuc3VyZU5ldHdvcmtQ
cm9jZXNzKFdlYnNpdGVEYXRhU3RvcmUqIHdpdGgKICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9T
VEFUSVNUSUNTKQogICAgICAgICAgICAgdGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9kZSA9IG5l
dHdvcmtTZXNzaW9uUGFyYW1ldGVycy5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGFyYW1ldGVycy50
aGlyZFBhcnR5Q29va2llQmxvY2tpbmdNb2RlOwogICAgICAgICAgICAgc2FtZVNpdGVTdHJpY3RF
bmZvcmNlbWVudEVuYWJsZWQgPSBuZXR3b3JrU2Vzc2lvblBhcmFtZXRlcnMucmVzb3VyY2VMb2Fk
U3RhdGlzdGljc1BhcmFtZXRlcnMuc2FtZVNpdGVTdHJpY3RFbmZvcmNlbWVudEVuYWJsZWQ7Cisg
ICAgICAgICAgICBjbmFtZUNsb2FraW5nTWl0aWdhdGlvbkVuYWJsZWQgPSBuZXR3b3JrU2Vzc2lv
blBhcmFtZXRlcnMucmVzb3VyY2VMb2FkU3RhdGlzdGljc1BhcmFtZXRlcnMuY25hbWVDbG9ha2lu
Z01pdGlnYXRpb25FbmFibGVkOwogI2VuZGlmCiAgICAgICAgICAgICBmaXJzdFBhcnR5V2Vic2l0
ZURhdGFSZW1vdmFsTW9kZSA9IG5ldHdvcmtTZXNzaW9uUGFyYW1ldGVycy5yZXNvdXJjZUxvYWRT
dGF0aXN0aWNzUGFyYW1ldGVycy5maXJzdFBhcnR5V2Vic2l0ZURhdGFSZW1vdmFsTW9kZTsKICAg
ICAgICAgICAgIHN0YW5kYWxvbmVBcHBsaWNhdGlvbkRvbWFpbiA9IG5ldHdvcmtTZXNzaW9uUGFy
YW1ldGVycy5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGFyYW1ldGVycy5zdGFuZGFsb25lQXBwbGlj
YXRpb25Eb21haW47CkBAIC02NjEsNiArNjYzLDcgQEAgTmV0d29ya1Byb2Nlc3NQcm94eSYgV2Vi
UHJvY2Vzc1Bvb2w6OmVuc3VyZU5ldHdvcmtQcm9jZXNzKFdlYnNpdGVEYXRhU3RvcmUqIHdpdGgK
ICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQogICAgICAgICAgICAgdGhpcmRQ
YXJ0eUNvb2tpZUJsb2NraW5nTW9kZSA9IG5ldHdvcmtTZXNzaW9uUGFyYW1ldGVycy5yZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzUGFyYW1ldGVycy50aGlyZFBhcnR5Q29va2llQmxvY2tpbmdNb2RlOwog
ICAgICAgICAgICAgc2FtZVNpdGVTdHJpY3RFbmZvcmNlbWVudEVuYWJsZWQgPSBuZXR3b3JrU2Vz
c2lvblBhcmFtZXRlcnMucmVzb3VyY2VMb2FkU3RhdGlzdGljc1BhcmFtZXRlcnMuc2FtZVNpdGVT
dHJpY3RFbmZvcmNlbWVudEVuYWJsZWQ7CisgICAgICAgICAgICBjbmFtZUNsb2FraW5nTWl0aWdh
dGlvbkVuYWJsZWQgPSBuZXR3b3JrU2Vzc2lvblBhcmFtZXRlcnMucmVzb3VyY2VMb2FkU3RhdGlz
dGljc1BhcmFtZXRlcnMuY25hbWVDbG9ha2luZ01pdGlnYXRpb25FbmFibGVkOwogI2VuZGlmCiAg
ICAgICAgICAgICBmaXJzdFBhcnR5V2Vic2l0ZURhdGFSZW1vdmFsTW9kZSA9IG5ldHdvcmtTZXNz
aW9uUGFyYW1ldGVycy5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGFyYW1ldGVycy5maXJzdFBhcnR5
V2Vic2l0ZURhdGFSZW1vdmFsTW9kZTsKICAgICAgICAgICAgIHN0YW5kYWxvbmVBcHBsaWNhdGlv
bkRvbWFpbiA9IG5ldHdvcmtTZXNzaW9uUGFyYW1ldGVycy5yZXNvdXJjZUxvYWRTdGF0aXN0aWNz
UGFyYW1ldGVycy5zdGFuZGFsb25lQXBwbGljYXRpb25Eb21haW47CkBAIC03MDQsNiArNzA3LDcg
QEAgTmV0d29ya1Byb2Nlc3NQcm94eSYgV2ViUHJvY2Vzc1Bvb2w6OmVuc3VyZU5ldHdvcmtQcm9j
ZXNzKFdlYnNpdGVEYXRhU3RvcmUqIHdpdGgKICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFU
SVNUSUNTKQogICAgICAgICB0aGlyZFBhcnR5Q29va2llQmxvY2tpbmdNb2RlLAogICAgICAgICBz
YW1lU2l0ZVN0cmljdEVuZm9yY2VtZW50RW5hYmxlZCwKKyAgICAgICAgY25hbWVDbG9ha2luZ01p
dGlnYXRpb25FbmFibGVkLAogI2VuZGlmCiAgICAgICAgIGZpcnN0UGFydHlXZWJzaXRlRGF0YVJl
bW92YWxNb2RlLAogICAgICAgICBzdGFuZGFsb25lQXBwbGljYXRpb25Eb21haW4sCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9Db2NvYS9XZWJzaXRlRGF0
YVN0b3JlQ29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9Db2Nv
YS9XZWJzaXRlRGF0YVN0b3JlQ29jb2EubW0KaW5kZXggZmIzYjIxZmQ5MzYyOGEzNGFlM2Q0ZGVj
ZmQ0ZTc5N2NmNjUzMWY2NS4uMjU3ZmI3YTI5MDFhY2VmZTRjZGFkMzBiZTI0YTBiNjAwOTMxNjNj
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvQ29jb2Ev
V2Vic2l0ZURhdGFTdG9yZUNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YnNpdGVEYXRhL0NvY29hL1dlYnNpdGVEYXRhU3RvcmVDb2NvYS5tbQpAQCAtOTQsNiArOTQsNyBA
QCB2b2lkIFdlYnNpdGVEYXRhU3RvcmU6OnBsYXRmb3JtU2V0TmV0d29ya1BhcmFtZXRlcnMoV2Vi
c2l0ZURhdGFTdG9yZVBhcmFtZXRlcnMmCiAgICAgYm9vbCBzaG91bGRMb2dDb29raWVJbmZvcm1h
dGlvbiA9IGZhbHNlOwogICAgIGJvb2wgZW5hYmxlUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RlYnVn
TW9kZSA9IGZhbHNlOwogICAgIGF1dG8gc2FtZVNpdGVTdHJpY3RFbmZvcmNlbWVudEVuYWJsZWQg
PSBXZWJDb3JlOjpTYW1lU2l0ZVN0cmljdEVuZm9yY2VtZW50RW5hYmxlZDo6Tm87CisgICAgYXV0
byBjbmFtZUNsb2FraW5nTWl0aWdhdGlvbkVuYWJsZWQgPSBXZWJDb3JlOjpDTkFNRUNsb2FraW5n
TWl0aWdhdGlvbkVuYWJsZWQ6Ok5vOwogICAgIGF1dG8gZmlyc3RQYXJ0eVdlYnNpdGVEYXRhUmVt
b3ZhbE1vZGUgPSBXZWJDb3JlOjpGaXJzdFBhcnR5V2Vic2l0ZURhdGFSZW1vdmFsTW9kZTo6QWxs
QnV0Q29va2llczsKICAgICBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiByZXNvdXJjZUxvYWRT
dGF0aXN0aWNzTWFudWFsUHJldmFsZW50UmVzb3VyY2UgeyB9OwogI2lmIEVOQUJMRShSRVNPVVJD
RV9MT0FEX1NUQVRJU1RJQ1MpCkBAIC0xMDIsNiArMTAzLDkgQEAgdm9pZCBXZWJzaXRlRGF0YVN0
b3JlOjpwbGF0Zm9ybVNldE5ldHdvcmtQYXJhbWV0ZXJzKFdlYnNpdGVEYXRhU3RvcmVQYXJhbWV0
ZXJzJgogICAgIGlmIChbZGVmYXVsdHMgYm9vbEZvcktleTpbTlNTdHJpbmcgc3RyaW5nV2l0aEZv
cm1hdDpAIkV4cGVyaW1lbnRhbCVAIiwgV2ViUHJlZmVyZW5jZXNLZXk6OmlzU2FtZVNpdGVTdHJp
Y3RFbmZvcmNlbWVudEVuYWJsZWRLZXkoKS5jcmVhdGVDRlN0cmluZygpLmdldCgpXV0pCiAgICAg
ICAgIHNhbWVTaXRlU3RyaWN0RW5mb3JjZW1lbnRFbmFibGVkID0gV2ViQ29yZTo6U2FtZVNpdGVT
dHJpY3RFbmZvcmNlbWVudEVuYWJsZWQ6OlllczsKIAorICAgIGlmIChbZGVmYXVsdHMgYm9vbEZv
cktleTpbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpAIkV4cGVyaW1lbnRhbCVAIiwgV2ViUHJl
ZmVyZW5jZXNLZXk6OmlzQ05BTUVDbG9ha2luZ01pdGlnYXRpb25FbmFibGVkS2V5KCkuY3JlYXRl
Q0ZTdHJpbmcoKS5nZXQoKV1dKQorICAgICAgICBjbmFtZUNsb2FraW5nTWl0aWdhdGlvbkVuYWJs
ZWQgPSBXZWJDb3JlOjpDTkFNRUNsb2FraW5nTWl0aWdhdGlvbkVuYWJsZWQ6OlllczsKKwogICAg
IGlmIChbZGVmYXVsdHMgYm9vbEZvcktleTpbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpAIkV4
cGVyaW1lbnRhbCVAIiwgV2ViUHJlZmVyZW5jZXNLZXk6OmlzRmlyc3RQYXJ0eVdlYnNpdGVEYXRh
UmVtb3ZhbERpc2FibGVkS2V5KCkuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKV1dKQogICAgICAgICBm
aXJzdFBhcnR5V2Vic2l0ZURhdGFSZW1vdmFsTW9kZSA9IFdlYkNvcmU6OkZpcnN0UGFydHlXZWJz
aXRlRGF0YVJlbW92YWxNb2RlOjpOb25lOwogICAgIGVsc2UgewpAQCAtMTc4LDYgKzE4Miw3IEBA
IHZvaWQgV2Vic2l0ZURhdGFTdG9yZTo6cGxhdGZvcm1TZXROZXR3b3JrUGFyYW1ldGVycyhXZWJz
aXRlRGF0YVN0b3JlUGFyYW1ldGVycyYKICAgICBwYXJhbWV0ZXJzLm5ldHdvcmtTZXNzaW9uUGFy
YW1ldGVycy5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGFyYW1ldGVycy5zaG91bGRJbmNsdWRlTG9j
YWxob3N0ID0gc2hvdWxkSW5jbHVkZUxvY2FsaG9zdEluUmVzb3VyY2VMb2FkU3RhdGlzdGljczsK
ICAgICBwYXJhbWV0ZXJzLm5ldHdvcmtTZXNzaW9uUGFyYW1ldGVycy5yZXNvdXJjZUxvYWRTdGF0
aXN0aWNzUGFyYW1ldGVycy5lbmFibGVEZWJ1Z01vZGUgPSBlbmFibGVSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzRGVidWdNb2RlOwogICAgIHBhcmFtZXRlcnMubmV0d29ya1Nlc3Npb25QYXJhbWV0ZXJz
LnJlc291cmNlTG9hZFN0YXRpc3RpY3NQYXJhbWV0ZXJzLnNhbWVTaXRlU3RyaWN0RW5mb3JjZW1l
bnRFbmFibGVkID0gc2FtZVNpdGVTdHJpY3RFbmZvcmNlbWVudEVuYWJsZWQ7CisgICAgcGFyYW1l
dGVycy5uZXR3b3JrU2Vzc2lvblBhcmFtZXRlcnMucmVzb3VyY2VMb2FkU3RhdGlzdGljc1BhcmFt
ZXRlcnMuY25hbWVDbG9ha2luZ01pdGlnYXRpb25FbmFibGVkID0gY25hbWVDbG9ha2luZ01pdGln
YXRpb25FbmFibGVkOwogICAgIHBhcmFtZXRlcnMubmV0d29ya1Nlc3Npb25QYXJhbWV0ZXJzLnJl
c291cmNlTG9hZFN0YXRpc3RpY3NQYXJhbWV0ZXJzLmZpcnN0UGFydHlXZWJzaXRlRGF0YVJlbW92
YWxNb2RlID0gZmlyc3RQYXJ0eVdlYnNpdGVEYXRhUmVtb3ZhbE1vZGU7CiAgICAgcGFyYW1ldGVy
cy5uZXR3b3JrU2Vzc2lvblBhcmFtZXRlcnMucmVzb3VyY2VMb2FkU3RhdGlzdGljc1BhcmFtZXRl
cnMuc3RhbmRhbG9uZUFwcGxpY2F0aW9uRG9tYWluID0gV2ViQ29yZTo6UmVnaXN0cmFibGVEb21h
aW4geyBtX2NvbmZpZ3VyYXRpb24tPnN0YW5kYWxvbmVBcHBsaWNhdGlvblVSTCgpIH07CiAgICAg
cGFyYW1ldGVycy5uZXR3b3JrU2Vzc2lvblBhcmFtZXRlcnMucmVzb3VyY2VMb2FkU3RhdGlzdGlj
c1BhcmFtZXRlcnMubWFudWFsUHJldmFsZW50UmVzb3VyY2UgPSBXVEZNb3ZlKHJlc291cmNlTG9h
ZFN0YXRpc3RpY3NNYW51YWxQcmV2YWxlbnRSZXNvdXJjZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuY3BwCmluZGV4
IDFkYWFjNTQwMjA1ODFmN2FhN2Y4MTliNGI0NTAyY2U2Yzc5OGI4OTIuLjhlMDkxYjZiMTdjMDk0
MjU5NzcwOTU2ZWNlMTIyOWRlMDg2YWVjYWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuY3BwCkBAIC0xOTM2LDYg
KzE5MzYsMzYgQEAgdm9pZCBXZWJzaXRlRGF0YVN0b3JlOjpzZXRSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzVG9TYW1lU2l0ZVN0cmljdENvb2tpZXNGb3JUZXN0aW4KICAgICAgICAgICAgIG5ldHdvcmtQ
cm9jZXNzLT5zZXRUb1NhbWVTaXRlU3RyaWN0Q29va2llc0ZvclRlc3RpbmcobV9zZXNzaW9uSUQs
IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIHsgdXJsIH0sIFtjYWxsYmFja0FnZ3JlZ2F0b3Jd
IHsgfSk7CiAgICAgfQogfQorCit2b2lkIFdlYnNpdGVEYXRhU3RvcmU6OnNldFJlc291cmNlTG9h
ZFN0YXRpc3RpY3NGaXJzdFBhcnR5SG9zdENOQU1FRG9tYWluRm9yVGVzdGluZyhjb25zdCBVUkwm
IGZpcnN0UGFydHlVUkwsIGNvbnN0IFVSTCYgY25hbWVVUkwsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBpZiAoY25hbWVVUkwuaG9zdCgpICE9
ICJ0ZXN0d2Via2l0Lm9yZyJfcyAmJiBjbmFtZVVSTC5ob3N0KCkgIT0gIjNyZHBhcnR5dGVzdHdl
YmtpdC5vcmciX3MpIHsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKKyAgICAgICAgcmV0
dXJuOworICAgIH0KKworICAgIGF1dG8gY2FsbGJhY2tBZ2dyZWdhdG9yID0gQ2FsbGJhY2tBZ2dy
ZWdhdG9yOjpjcmVhdGUoV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOworCisgICAgZm9yIChh
dXRvJiBwcm9jZXNzUG9vbCA6IHByb2Nlc3NQb29scygpKSB7CisgICAgICAgIGlmIChhdXRvKiBu
ZXR3b3JrUHJvY2VzcyA9IHByb2Nlc3NQb29sLT5uZXR3b3JrUHJvY2VzcygpKQorICAgICAgICAg
ICAgbmV0d29ya1Byb2Nlc3MtPnNldEZpcnN0UGFydHlIb3N0Q05BTUVEb21haW5Gb3JUZXN0aW5n
KG1fc2Vzc2lvbklELCBmaXJzdFBhcnR5VVJMLmhvc3QoKS50b1N0cmluZygpLCBXZWJDb3JlOjpS
ZWdpc3RyYWJsZURvbWFpbiB7IGNuYW1lVVJMIH0sIFtjYWxsYmFja0FnZ3JlZ2F0b3JdIHsgfSk7
CisgICAgfQorfQorCit2b2lkIFdlYnNpdGVEYXRhU3RvcmU6OnNldFJlc291cmNlTG9hZFN0YXRp
c3RpY3NUaGlyZFBhcnR5Q05BTUVEb21haW5Gb3JUZXN0aW5nKGNvbnN0IFVSTCYgY25hbWVVUkws
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBp
ZiAoY25hbWVVUkwuaG9zdCgpICE9ICJ0ZXN0d2Via2l0Lm9yZyJfcyAmJiBjbmFtZVVSTC5ob3N0
KCkgIT0gIjNyZHBhcnR5dGVzdHdlYmtpdC5vcmciX3MpIHsKKyAgICAgICAgY29tcGxldGlvbkhh
bmRsZXIoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGF1dG8gY2FsbGJhY2tBZ2dy
ZWdhdG9yID0gQ2FsbGJhY2tBZ2dyZWdhdG9yOjpjcmVhdGUoV1RGTW92ZShjb21wbGV0aW9uSGFu
ZGxlcikpOworCisgICAgZm9yIChhdXRvJiBwcm9jZXNzUG9vbCA6IHByb2Nlc3NQb29scygpKSB7
CisgICAgICAgIGlmIChhdXRvKiBuZXR3b3JrUHJvY2VzcyA9IHByb2Nlc3NQb29sLT5uZXR3b3Jr
UHJvY2VzcygpKQorICAgICAgICAgICAgbmV0d29ya1Byb2Nlc3MtPnNldFRoaXJkUGFydHlDTkFN
RURvbWFpbkZvclRlc3RpbmcobV9zZXNzaW9uSUQsIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWlu
IHsgY25hbWVVUkwgfSwgW2NhbGxiYWNrQWdncmVnYXRvcl0geyB9KTsKKyAgICB9Cit9CiAjZW5k
aWYgLy8gRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKIAogdm9pZCBXZWJzaXRlRGF0
YVN0b3JlOjpzZXRDYWNoZU1heEFnZUNhcEZvclByZXZhbGVudFJlc291cmNlcyhTZWNvbmRzIHNl
Y29uZHMsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKQEAg
LTIyODMsNiArMjMxMyw3IEBAIFdlYnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJzIFdlYnNpdGVEYXRh
U3RvcmU6OnBhcmFtZXRlcnMoKQogI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1Mp
CiAgICAgICAgIHRoaXJkUGFydHlDb29raWVCbG9ja2luZ01vZGUoKSwKICAgICAgICAgV2ViQ29y
ZTo6U2FtZVNpdGVTdHJpY3RFbmZvcmNlbWVudEVuYWJsZWQ6Ok5vLAorICAgICAgICBXZWJDb3Jl
OjpDTkFNRUNsb2FraW5nTWl0aWdhdGlvbkVuYWJsZWQ6Ok5vLAogI2VuZGlmCiAgICAgICAgIGZp
cnN0UGFydHlXZWJzaXRlRGF0YVJlbW92YWxNb2RlLAogICAgICAgICBXVEZNb3ZlKHN0YW5kYWxv
bmVBcHBsaWNhdGlvbkRvbWFpbiksCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmgKaW5kZXggMGE3ZjgzZDJiN2RjNjM1Mzhj
ODU3ODgwMGU2MTdhZmZjNWQzZjE5ZC4uNGVjMTNlMTZmZTQ4MmQyNmEyZWFmYTMxMjNlMzIzM2E3
MzdjYjEyYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEv
V2Vic2l0ZURhdGFTdG9yZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVE
YXRhL1dlYnNpdGVEYXRhU3RvcmUuaApAQCAtMjAzLDYgKzIwMyw4IEBAIHB1YmxpYzoKICAgICB2
b2lkIHNldFJlc291cmNlTG9hZFN0YXRpc3RpY3NTaG91bGRFbmJsZVNhbWVTaXRlU3RyaWN0RW5m
b3JjZW1lbnRGb3JUZXN0aW5nKGJvb2wgZW5hYmxlZCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgp
PiYmKTsKICAgICB2b2lkIHNldFJlc291cmNlTG9hZFN0YXRpc3RpY3NGaXJzdFBhcnR5V2Vic2l0
ZURhdGFSZW1vdmFsTW9kZUZvclRlc3RpbmcoYm9vbCBlbmFibGVkLCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKCk+JiYpOwogICAgIHZvaWQgc2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc1RvU2FtZVNp
dGVTdHJpY3RDb29raWVzRm9yVGVzdGluZyhjb25zdCBVUkwmLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKCk+JiYpOworICAgIHZvaWQgc2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0ZpcnN0UGFydHlI
b3N0Q05BTUVEb21haW5Gb3JUZXN0aW5nKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eVVSTCwgY29uc3Qg
VVJMJiBjbmFtZVVSTCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKKyAgICB2b2lkIHNl
dFJlc291cmNlTG9hZFN0YXRpc3RpY3NUaGlyZFBhcnR5Q05BTUVEb21haW5Gb3JUZXN0aW5nKGNv
bnN0IFVSTCYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAgV2ViQ29yZTo6VGhp
cmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9kZSB0aGlyZFBhcnR5Q29va2llQmxvY2tpbmdNb2RlKCkg
Y29uc3Q7CiAgICAgYm9vbCBpc0l0cFN0YXRlRXhwbGljaXRseVNldCgpIGNvbnN0IHsgcmV0dXJu
IG1faXNJdHBTdGF0ZUV4cGxpY2l0bHlTZXQ7IH0KICAgICB2b2lkIHVzZUV4cGxpY2l0SVRQU3Rh
dGUoKSB7IG1faXNJdHBTdGF0ZUV4cGxpY2l0bHlTZXQgPSB0cnVlOyB9CmRpZmYgLS1naXQgYS9U
b29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggM2Y5YmNjM2I3YzJjZTllYzIy
YzU2MTUyNDIyMTY3ZTBhZmZjZjJlNi4uNDc5MDdhNGYwYTg3Nzk2M2FlYjFkMWJjN2I3OGQyZmJk
NWUzYjVmZiAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDM1IEBACisyMDIwLTA4LTA1ICBKb2huIFdpbGFuZGVyICA8d2lsYW5kZXJA
YXBwbGUuY29tPgorCisgICAgICAgIEV4cGVyaW1lbnRhbDogQ2FwIHRoZSBleHBpcnkgb2YgcGVy
c2lzdGVudCBjb29raWVzIHNldCBpbiAzcmQtcGFydHkgQ05BTUUgY2xvYWtlZCBIVFRQIHJlc3Bv
bnNlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE1
MjAxCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS81NzQ1NDYzMz4KKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIHBhdGNoIGFkZHMgdHdvIFRlc3RS
dW5uZXIgZnVuY3Rpb25zIHdoaWNoIGFsbG93cyBmb3IgdGVzdGluZworICAgICAgICB3aXRoIGRh
dGEgdGhhdCB3b3VsZCBvdGhlcndpc2UgY29tZSBmcm9tIEROUyByZXNvbHV0aW9uOgorICAgICAg
ICAtIHN0YXRpc3RpY3NTZXRGaXJzdFBhcnR5SG9zdENOQU1FRG9tYWluKCkKKyAgICAgICAgLSBz
dGF0aXN0aWNzU2V0VGhpcmRQYXJ0eUNOQU1FRG9tYWluKCkKKworICAgICAgICAqIFdlYktpdFRl
c3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQmluZGluZ3MvVGVzdFJ1bm5lci5pZGw6CisgICAgICAg
ICogV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5jcHA6Cisg
ICAgICAgIChXVFI6OkluamVjdGVkQnVuZGxlOjpkaWRSZWNlaXZlTWVzc2FnZVRvUGFnZSk6Cisg
ICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmNwcDoK
KyAgICAgICAgKFdUUjo6VGVzdFJ1bm5lcjo6c3RhdGlzdGljc1NldEZpcnN0UGFydHlIb3N0Q05B
TUVEb21haW4pOgorICAgICAgICAoV1RSOjpUZXN0UnVubmVyOjpzdGF0aXN0aWNzQ2FsbERpZFNl
dEZpcnN0UGFydHlIb3N0Q05BTUVEb21haW5DYWxsYmFjayk6CisgICAgICAgIChXVFI6OlRlc3RS
dW5uZXI6OnN0YXRpc3RpY3NTZXRUaGlyZFBhcnR5Q05BTUVEb21haW4pOgorICAgICAgICAoV1RS
OjpUZXN0UnVubmVyOjpzdGF0aXN0aWNzQ2FsbERpZFNldFRoaXJkUGFydHlDTkFNRURvbWFpbkNh
bGxiYWNrKToKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RS
dW5uZXIuaDoKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcDoK
KyAgICAgICAgKFdUUjo6VGVzdENvbnRyb2xsZXI6OnNldFN0YXRpc3RpY3NGaXJzdFBhcnR5SG9z
dENOQU1FRG9tYWluKToKKyAgICAgICAgKFdUUjo6VGVzdENvbnRyb2xsZXI6OnNldFN0YXRpc3Rp
Y3NUaGlyZFBhcnR5Q05BTUVEb21haW4pOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvVGVz
dENvbnRyb2xsZXIuaDoKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9u
LmNwcDoKKyAgICAgICAgKFdUUjo6VGVzdEludm9jYXRpb246OmRpZFJlY2VpdmVNZXNzYWdlRnJv
bUluamVjdGVkQnVuZGxlKToKKyAgICAgICAgKFdUUjo6VGVzdEludm9jYXRpb246OmRpZFNldEZp
cnN0UGFydHlIb3N0Q05BTUVEb21haW4pOgorICAgICAgICAoV1RSOjpUZXN0SW52b2NhdGlvbjo6
ZGlkU2V0VGhpcmRQYXJ0eUNOQU1FRG9tYWluKToKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVy
L1Rlc3RJbnZvY2F0aW9uLmg6CisKIDIwMjAtMDgtMDUgIEpvbmF0aGFuIEJlZGFyZCAgPGpiZWRh
cmRAYXBwbGUuY29tPgogCiAgICAgICAgIHJlc3VsdHMud2Via2l0Lm9yZzogUmV0dXJuIHdvcmtl
ciBzdGF0dXMgdG8gY2FsbGVyCmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0lu
amVjdGVkQnVuZGxlL0JpbmRpbmdzL1Rlc3RSdW5uZXIuaWRsIGIvVG9vbHMvV2ViS2l0VGVzdFJ1
bm5lci9JbmplY3RlZEJ1bmRsZS9CaW5kaW5ncy9UZXN0UnVubmVyLmlkbAppbmRleCA2Yjg5ODBm
NDkyODJiNTczZTEzZjA0NWNmZTBkNTZiYzY0NDdhZmJhLi5kYzYzYzVkZDhiYjRkODZiZTNmNjI3
MWFkYTI4OGY4N2ZkNDIwYTE5IDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0lu
amVjdGVkQnVuZGxlL0JpbmRpbmdzL1Rlc3RSdW5uZXIuaWRsCisrKyBiL1Rvb2xzL1dlYktpdFRl
c3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQmluZGluZ3MvVGVzdFJ1bm5lci5pZGwKQEAgLTM0Nyw2
ICszNDcsOCBAQCBpbnRlcmZhY2UgVGVzdFJ1bm5lciB7CiAgICAgdm9pZCBzZXRTdGF0aXN0aWNz
U2hvdWxkQmxvY2tUaGlyZFBhcnR5Q29va2llcyhib29sZWFuIHZhbHVlLCBvYmplY3QgY2FsbGJh
Y2ssIG9wdGlvbmFsIGJvb2xlYW4gb25seU9uU2l0ZXNXaXRob3V0VXNlckludGVyYWN0aW9uKTsK
ICAgICB2b2lkIHNldFN0YXRpc3RpY3NGaXJzdFBhcnR5V2Vic2l0ZURhdGFSZW1vdmFsTW9kZShi
b29sZWFuIHZhbHVlLCBvYmplY3QgY2FsbGJhY2spOwogICAgIHZvaWQgc3RhdGlzdGljc1NldFRv
U2FtZVNpdGVTdHJpY3RDb29raWVzKERPTVN0cmluZyBob3N0TmFtZSwgb2JqZWN0IGNhbGxiYWNr
KTsKKyAgICB2b2lkIHN0YXRpc3RpY3NTZXRGaXJzdFBhcnR5SG9zdENOQU1FRG9tYWluKERPTVN0
cmluZyBmaXJzdFBhcnR5VVJMU3RyaW5nLCBET01TdHJpbmcgY25hbWVVUkxTdHJpbmcsIG9iamVj
dCBjYWxsYmFjayk7CisgICAgdm9pZCBzdGF0aXN0aWNzU2V0VGhpcmRQYXJ0eUNOQU1FRG9tYWlu
KERPTVN0cmluZyBjbmFtZVVSTFN0cmluZywgb2JqZWN0IGNhbGxiYWNrKTsKICAgICB2b2lkIGxv
YWRlZFRoaXJkUGFydHlEb21haW5zKG9iamVjdCBjYWxsYmFjayk7CiAKICAgICAvLyBJbmplY3Rl
ZCBidW5kbGUgZm9ybSBjbGllbnQuCmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVy
L0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmNwcCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5u
ZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuY3BwCmluZGV4IGUyNTRjYTcyZGJjZjMx
MDI3NDFmY2YxN2MxNTI1NTQyNmQwZjVmMGUuLmFmNzQzYjYzZThmZjBhNDY2ZmQ0YTg5YWUwODUz
NmJmYzBkOGFiNTEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRC
dW5kbGUvSW5qZWN0ZWRCdW5kbGUuY3BwCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5q
ZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuY3BwCkBAIC0zNTksNiArMzU5LDE2IEBAIHZvaWQg
SW5qZWN0ZWRCdW5kbGU6OmRpZFJlY2VpdmVNZXNzYWdlVG9QYWdlKFdLQnVuZGxlUGFnZVJlZiBw
YWdlLCBXS1N0cmluZ1JlZiBtCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKKyAgICBpZiAoV0tT
dHJpbmdJc0VxdWFsVG9VVEY4Q1N0cmluZyhtZXNzYWdlTmFtZSwgIkNhbGxEaWRTZXRGaXJzdFBh
cnR5SG9zdENOQU1FRG9tYWluIikpIHsKKyAgICAgICAgbV90ZXN0UnVubmVyLT5zdGF0aXN0aWNz
Q2FsbERpZFNldEZpcnN0UGFydHlIb3N0Q05BTUVEb21haW5DYWxsYmFjaygpOworICAgICAgICBy
ZXR1cm47CisgICAgfQorCisgICAgaWYgKFdLU3RyaW5nSXNFcXVhbFRvVVRGOENTdHJpbmcobWVz
c2FnZU5hbWUsICJDYWxsRGlkU2V0VGhpcmRQYXJ0eUNOQU1FRG9tYWluIikpIHsKKyAgICAgICAg
bV90ZXN0UnVubmVyLT5zdGF0aXN0aWNzQ2FsbERpZFNldFRoaXJkUGFydHlDTkFNRURvbWFpbkNh
bGxiYWNrKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKICAgICBpZiAoV0tTdHJpbmdJc0Vx
dWFsVG9VVEY4Q1N0cmluZyhtZXNzYWdlTmFtZSwgIkNhbGxEaWRSZXNldFN0YXRpc3RpY3NUb0Nv
bnNpc3RlbnRTdGF0ZSIpKSB7CiAgICAgICAgIG1fdGVzdFJ1bm5lci0+c3RhdGlzdGljc0NhbGxE
aWRSZXNldFRvQ29uc2lzdGVudFN0YXRlQ2FsbGJhY2soKTsKICAgICAgICAgcmV0dXJuOwpkaWZm
IC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVy
LmNwcCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5j
cHAKaW5kZXggZDQzODZlNmY5ZjM1MGVlMDE5ODZiOTIwMWI5MDNiODA0MDI2NjRhNy4uMjk2NzJm
OWUxNTU5Y2EyZGUwYzY4OWE0NmMzZWEyYzU2MDFiNjBlOCAxMDA2NDQKLS0tIGEvVG9vbHMvV2Vi
S2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmNwcAorKysgYi9Ub29scy9X
ZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuY3BwCkBAIC03NTgsNiAr
NzU4LDggQEAgZW51bSB7CiAgICAgU3RhdGlzdGljc0RpZFNldFNob3VsZEJsb2NrVGhpcmRQYXJ0
eUNvb2tpZXNDYWxsYmFja0lELAogICAgIFN0YXRpc3RpY3NEaWRTZXRGaXJzdFBhcnR5V2Vic2l0
ZURhdGFSZW1vdmFsTW9kZUNhbGxiYWNrSUQsCiAgICAgU3RhdGlzdGljc0RpZFNldFRvU2FtZVNp
dGVTdHJpY3RDb29raWVzQ2FsbGJhY2tJRCwKKyAgICBTdGF0aXN0aWNzRGlkU2V0Rmlyc3RQYXJ0
eUhvc3RDTkFNRURvbWFpbkNhbGxiYWNrSUQsCisgICAgU3RhdGlzdGljc0RpZFNldFRoaXJkUGFy
dHlDTkFNRURvbWFpbkNhbGxiYWNrSUQsCiAgICAgQWxsU3RvcmFnZUFjY2Vzc0VudHJpZXNDYWxs
YmFja0lELAogICAgIExvYWRlZFRoaXJkUGFydHlEb21haW5zQ2FsbGJhY2tJRCwKICAgICBEaWRS
ZW1vdmVBbGxTZXNzaW9uQ3JlZGVudGlhbHNDYWxsYmFja0lELApAQCAtMjM2NCw2ICsyMzY2LDUy
IEBAIHZvaWQgVGVzdFJ1bm5lcjo6c3RhdGlzdGljc0NhbGxEaWRTZXRUb1NhbWVTaXRlU3RyaWN0
Q29va2llc0NhbGxiYWNrKCkKICAgICBjYWxsVGVzdFJ1bm5lckNhbGxiYWNrKFN0YXRpc3RpY3NE
aWRTZXRUb1NhbWVTaXRlU3RyaWN0Q29va2llc0NhbGxiYWNrSUQpOwogfQogCisKK3ZvaWQgVGVz
dFJ1bm5lcjo6c3RhdGlzdGljc1NldEZpcnN0UGFydHlIb3N0Q05BTUVEb21haW4oSlNTdHJpbmdS
ZWYgZmlyc3RQYXJ0eVVSTFN0cmluZywgSlNTdHJpbmdSZWYgY25hbWVVUkxTdHJpbmcsIEpTVmFs
dWVSZWYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgY2FjaGVUZXN0UnVubmVyQ2FsbGJhY2so
U3RhdGlzdGljc0RpZFNldEZpcnN0UGFydHlIb3N0Q05BTUVEb21haW5DYWxsYmFja0lELCBjb21w
bGV0aW9uSGFuZGxlcik7CisKKyAgICBWZWN0b3I8V0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+PiBr
ZXlzOworICAgIFZlY3RvcjxXS1JldGFpblB0cjxXS1R5cGVSZWY+PiB2YWx1ZXM7CisgICAgCisg
ICAga2V5cy5hcHBlbmQoYWRvcHRXSyhXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygiRmly
c3RQYXJ0eVVSTCIpKSk7CisgICAgdmFsdWVzLmFwcGVuZChhZG9wdFdLKFdLU3RyaW5nQ3JlYXRl
V2l0aEpTU3RyaW5nKGZpcnN0UGFydHlVUkxTdHJpbmcpKSk7CisgICAgCisgICAga2V5cy5hcHBl
bmQoYWRvcHRXSyhXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygiQ05BTUUiKSkpOworICAg
IHZhbHVlcy5hcHBlbmQoYWRvcHRXSyhXS1N0cmluZ0NyZWF0ZVdpdGhKU1N0cmluZyhjbmFtZVVS
TFN0cmluZykpKTsKKyAgICAKKyAgICBWZWN0b3I8V0tTdHJpbmdSZWY+IHJhd0tleXMoa2V5cy5z
aXplKCkpOworICAgIFZlY3RvcjxXS1R5cGVSZWY+IHJhd1ZhbHVlcyh2YWx1ZXMuc2l6ZSgpKTsK
KyAgICAKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGtleXMuc2l6ZSgpOyArK2kpIHsKKyAg
ICAgICAgcmF3S2V5c1tpXSA9IGtleXNbaV0uZ2V0KCk7CisgICAgICAgIHJhd1ZhbHVlc1tpXSA9
IHZhbHVlc1tpXS5nZXQoKTsKKyAgICB9CisKKyAgICBhdXRvIG1lc3NhZ2VOYW1lID0gYWRvcHRX
SyhXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygiU3RhdGlzdGljc1NldEZpcnN0UGFydHlI
b3N0Q05BTUVEb21haW4iKSk7CisgICAgYXV0byBtZXNzYWdlQm9keSA9IGFkb3B0V0soV0tEaWN0
aW9uYXJ5Q3JlYXRlKHJhd0tleXMuZGF0YSgpLCByYXdWYWx1ZXMuZGF0YSgpLCByYXdLZXlzLnNp
emUoKSkpOworICAgIFdLQnVuZGxlUG9zdE1lc3NhZ2UoSW5qZWN0ZWRCdW5kbGU6OnNpbmdsZXRv
bigpLmJ1bmRsZSgpLCBtZXNzYWdlTmFtZS5nZXQoKSwgbWVzc2FnZUJvZHkuZ2V0KCkpOworfQor
Cit2b2lkIFRlc3RSdW5uZXI6OnN0YXRpc3RpY3NDYWxsRGlkU2V0Rmlyc3RQYXJ0eUhvc3RDTkFN
RURvbWFpbkNhbGxiYWNrKCkKK3sKKyAgICBjYWxsVGVzdFJ1bm5lckNhbGxiYWNrKFN0YXRpc3Rp
Y3NEaWRTZXRGaXJzdFBhcnR5SG9zdENOQU1FRG9tYWluQ2FsbGJhY2tJRCk7Cit9CisKK3ZvaWQg
VGVzdFJ1bm5lcjo6c3RhdGlzdGljc1NldFRoaXJkUGFydHlDTkFNRURvbWFpbihKU1N0cmluZ1Jl
ZiBjbmFtZVVSTFN0cmluZywgSlNWYWx1ZVJlZiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBj
YWNoZVRlc3RSdW5uZXJDYWxsYmFjayhTdGF0aXN0aWNzRGlkU2V0VGhpcmRQYXJ0eUNOQU1FRG9t
YWluQ2FsbGJhY2tJRCwgY29tcGxldGlvbkhhbmRsZXIpOworCisgICAgYXV0byBtZXNzYWdlTmFt
ZSA9IGFkb3B0V0soV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoIlN0YXRpc3RpY3NTZXRU
aGlyZFBhcnR5Q05BTUVEb21haW4iKSk7CisgICAgYXV0byBtZXNzYWdlQm9keSA9IGFkb3B0V0so
V0tTdHJpbmdDcmVhdGVXaXRoSlNTdHJpbmcoY25hbWVVUkxTdHJpbmcpKTsKKyAgICBXS0J1bmRs
ZVBvc3RNZXNzYWdlKEluamVjdGVkQnVuZGxlOjpzaW5nbGV0b24oKS5idW5kbGUoKSwgbWVzc2Fn
ZU5hbWUuZ2V0KCksIG1lc3NhZ2VCb2R5LmdldCgpKTsKK30KKwordm9pZCBUZXN0UnVubmVyOjpz
dGF0aXN0aWNzQ2FsbERpZFNldFRoaXJkUGFydHlDTkFNRURvbWFpbkNhbGxiYWNrKCkKK3sKKyAg
ICBjYWxsVGVzdFJ1bm5lckNhbGxiYWNrKFN0YXRpc3RpY3NEaWRTZXRUaGlyZFBhcnR5Q05BTUVE
b21haW5DYWxsYmFja0lEKTsKK30KKwogdm9pZCBUZXN0UnVubmVyOjpzdGF0aXN0aWNzUmVzZXRU
b0NvbnNpc3RlbnRTdGF0ZShKU1ZhbHVlUmVmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIGNh
Y2hlVGVzdFJ1bm5lckNhbGxiYWNrKFN0YXRpc3RpY3NEaWRSZXNldFRvQ29uc2lzdGVudFN0YXRl
Q2FsbGJhY2tJRCwgY29tcGxldGlvbkhhbmRsZXIpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0
VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmggYi9Ub29scy9XZWJLaXRUZXN0
UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuaAppbmRleCAxZmUzNzlhNTdhYjgyZmZl
NDMxOWRhNDgwMGYwNDgzOTMwMDNmNzUxLi5hYjY1ZDQwZDQyMjY4MDkzNDA5MmNmM2Y4MmQ4MWM1
ZTlhYjIwZDAzIDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVu
ZGxlL1Rlc3RSdW5uZXIuaAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVu
ZGxlL1Rlc3RSdW5uZXIuaApAQCAtNDUzLDYgKzQ1MywxMCBAQCBwdWJsaWM6CiAgICAgdm9pZCBz
dGF0aXN0aWNzQ2FsbERpZFNldEZpcnN0UGFydHlXZWJzaXRlRGF0YVJlbW92YWxNb2RlQ2FsbGJh
Y2soKTsKICAgICB2b2lkIHN0YXRpc3RpY3NTZXRUb1NhbWVTaXRlU3RyaWN0Q29va2llcyhKU1N0
cmluZ1JlZiBob3N0TmFtZSwgSlNWYWx1ZVJlZiBjYWxsYmFjayk7CiAgICAgdm9pZCBzdGF0aXN0
aWNzQ2FsbERpZFNldFRvU2FtZVNpdGVTdHJpY3RDb29raWVzQ2FsbGJhY2soKTsKKyAgICB2b2lk
IHN0YXRpc3RpY3NTZXRGaXJzdFBhcnR5SG9zdENOQU1FRG9tYWluKEpTU3RyaW5nUmVmIGZpcnN0
UGFydHlVUkxTdHJpbmcsIEpTU3RyaW5nUmVmIGNuYW1lVVJMU3RyaW5nLCBKU1ZhbHVlUmVmIGNv
bXBsZXRpb25IYW5kbGVyKTsKKyAgICB2b2lkIHN0YXRpc3RpY3NDYWxsRGlkU2V0Rmlyc3RQYXJ0
eUhvc3RDTkFNRURvbWFpbkNhbGxiYWNrKCk7CisgICAgdm9pZCBzdGF0aXN0aWNzU2V0VGhpcmRQ
YXJ0eUNOQU1FRG9tYWluKEpTU3RyaW5nUmVmIGNuYW1lVVJMU3RyaW5nLCBKU1ZhbHVlUmVmIGNv
bXBsZXRpb25IYW5kbGVyKTsKKyAgICB2b2lkIHN0YXRpc3RpY3NDYWxsRGlkU2V0VGhpcmRQYXJ0
eUNOQU1FRG9tYWluQ2FsbGJhY2soKTsKICAgICB2b2lkIHN0YXRpc3RpY3NSZXNldFRvQ29uc2lz
dGVudFN0YXRlKEpTVmFsdWVSZWYgY29tcGxldGlvbkhhbmRsZXIpOwogICAgIHZvaWQgc3RhdGlz
dGljc0NhbGxEaWRSZXNldFRvQ29uc2lzdGVudFN0YXRlQ2FsbGJhY2soKTsKICAgICB2b2lkIGxv
YWRlZFRoaXJkUGFydHlEb21haW5zKEpTVmFsdWVSZWYgY2FsbGJhY2spOwpkaWZmIC0tZ2l0IGEv
VG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5jcHAgYi9Ub29scy9XZWJLaXRU
ZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcAppbmRleCBmYWZiOGNmNmI5NTJlM2MwNDg0NjNi
YTU3ZjVjNGNmNDgxMWRmZWFkLi5hNDNmYTgxMzRhN2FiNzZjM2EzYjdmODIwOGRjOTI2NjcyNzQ3
NDYxIDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNw
cAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcApAQCAtMzg2
Miw2ICszODYyLDIyIEBAIHZvaWQgVGVzdENvbnRyb2xsZXI6OnNldFN0YXRpc3RpY3NUb1NhbWVT
aXRlU3RyaWN0Q29va2llcyhXS1N0cmluZ1JlZiBob3N0TmFtZSkKICAgICBtX2N1cnJlbnRJbnZv
Y2F0aW9uLT5kaWRTZXRUb1NhbWVTaXRlU3RyaWN0Q29va2llcygpOwogfQogCit2b2lkIFRlc3RD
b250cm9sbGVyOjpzZXRTdGF0aXN0aWNzRmlyc3RQYXJ0eUhvc3RDTkFNRURvbWFpbihXS1N0cmlu
Z1JlZiBmaXJzdFBhcnR5VVJMU3RyaW5nLCBXS1N0cmluZ1JlZiBjbmFtZVVSTFN0cmluZykKK3sK
KyAgICBSZXNvdXJjZVN0YXRpc3RpY3NDYWxsYmFja0NvbnRleHQgY29udGV4dCgqdGhpcyk7Cisg
ICAgV0tXZWJzaXRlRGF0YVN0b3JlU2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0ZpcnN0UGFydHlI
b3N0Q05BTUVEb21haW5Gb3JUZXN0aW5nKHdlYnNpdGVEYXRhU3RvcmUoKSwgZmlyc3RQYXJ0eVVS
TFN0cmluZywgY25hbWVVUkxTdHJpbmcsICZjb250ZXh0LCByZXNvdXJjZVN0YXRpc3RpY3NWb2lk
UmVzdWx0Q2FsbGJhY2spOworICAgIHJ1blVudGlsKGNvbnRleHQuZG9uZSwgbm9UaW1lb3V0KTsK
KyAgICBtX2N1cnJlbnRJbnZvY2F0aW9uLT5kaWRTZXRGaXJzdFBhcnR5SG9zdENOQU1FRG9tYWlu
KCk7Cit9CisKK3ZvaWQgVGVzdENvbnRyb2xsZXI6OnNldFN0YXRpc3RpY3NUaGlyZFBhcnR5Q05B
TUVEb21haW4oV0tTdHJpbmdSZWYgY25hbWVVUkxTdHJpbmcpCit7CisgICAgUmVzb3VyY2VTdGF0
aXN0aWNzQ2FsbGJhY2tDb250ZXh0IGNvbnRleHQoKnRoaXMpOworICAgIFdLV2Vic2l0ZURhdGFT
dG9yZVNldFJlc291cmNlTG9hZFN0YXRpc3RpY3NUaGlyZFBhcnR5Q05BTUVEb21haW5Gb3JUZXN0
aW5nKHdlYnNpdGVEYXRhU3RvcmUoKSwgY25hbWVVUkxTdHJpbmcsICZjb250ZXh0LCByZXNvdXJj
ZVN0YXRpc3RpY3NWb2lkUmVzdWx0Q2FsbGJhY2spOworICAgIHJ1blVudGlsKGNvbnRleHQuZG9u
ZSwgbm9UaW1lb3V0KTsKKyAgICBtX2N1cnJlbnRJbnZvY2F0aW9uLT5kaWRTZXRUaGlyZFBhcnR5
Q05BTUVEb21haW4oKTsKK30KKwogc3RydWN0IEFwcEJvdW5kRG9tYWluc0NhbGxiYWNrQ29udGV4
dCB7CiAgICAgZXhwbGljaXQgQXBwQm91bmREb21haW5zQ2FsbGJhY2tDb250ZXh0KFRlc3RDb250
cm9sbGVyJiBjb250cm9sbGVyKQogICAgICAgICA6IHRlc3RDb250cm9sbGVyKGNvbnRyb2xsZXIp
CmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmggYi9U
b29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmgKaW5kZXggYTEzMDg0OWIzZDNh
ZWJhMmUyMWU2YTBhMzRkNDYyOTJlMTlkNGE1MC4uNzI0Y2QwMDRjMWI0MmU4MTVmZDUyMTU1Mzk5
ZmFlMDIxMDZjY2Y4MCAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29u
dHJvbGxlci5oCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuaApA
QCAtMjY2LDYgKzI2Niw4IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldFN0YXRpc3RpY3NTaG91bGRC
bG9ja1RoaXJkUGFydHlDb29raWVzKGJvb2wgdmFsdWUsIGJvb2wgb25seU9uU2l0ZXNXaXRob3V0
VXNlckludGVyYWN0aW9uKTsKICAgICB2b2lkIHNldFN0YXRpc3RpY3NGaXJzdFBhcnR5V2Vic2l0
ZURhdGFSZW1vdmFsTW9kZShib29sIHZhbHVlKTsKICAgICB2b2lkIHNldFN0YXRpc3RpY3NUb1Nh
bWVTaXRlU3RyaWN0Q29va2llcyhXS1N0cmluZ1JlZiBob3N0TmFtZSk7CisgICAgdm9pZCBzZXRT
dGF0aXN0aWNzRmlyc3RQYXJ0eUhvc3RDTkFNRURvbWFpbihXS1N0cmluZ1JlZiBmaXJzdFBhcnR5
VVJMU3RyaW5nLCBXS1N0cmluZ1JlZiBjbmFtZVVSTFN0cmluZyk7CisgICAgdm9pZCBzZXRTdGF0
aXN0aWNzVGhpcmRQYXJ0eUNOQU1FRG9tYWluKFdLU3RyaW5nUmVmIGNuYW1lVVJMU3RyaW5nKTsK
ICAgICB2b2lkIHNldEFwcEJvdW5kRG9tYWlucyhXS0FycmF5UmVmIG9yaWdpblVSTHMpOwogICAg
IHZvaWQgc3RhdGlzdGljc1Jlc2V0VG9Db25zaXN0ZW50U3RhdGUoKTsKIApkaWZmIC0tZ2l0IGEv
VG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlvbi5jcHAgYi9Ub29scy9XZWJLaXRU
ZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmNwcAppbmRleCBiNzNiMDk0NDFmMTc0YjU0MWVjZDY2
MzdhZWYwZjkxOTdkOGRlZjhmLi45MjlmODVhZjVmODIyZjkyZDYwZGFhYTQ0ZjA0Y2QxMzMzNzFl
ZjUzIDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmNw
cAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmNwcApAQCAtOTU3
LDYgKzk1NywyNyBAQCB2b2lkIFRlc3RJbnZvY2F0aW9uOjpkaWRSZWNlaXZlTWVzc2FnZUZyb21J
bmplY3RlZEJ1bmRsZShXS1N0cmluZ1JlZiBtZXNzYWdlTmFtZQogICAgICAgICByZXR1cm47CiAg
ICAgfQogCisgICAgaWYgKFdLU3RyaW5nSXNFcXVhbFRvVVRGOENTdHJpbmcobWVzc2FnZU5hbWUs
ICJTdGF0aXN0aWNzU2V0Rmlyc3RQYXJ0eUhvc3RDTkFNRURvbWFpbiIpKSB7CisgICAgICAgIEFT
U0VSVChXS0dldFR5cGVJRChtZXNzYWdlQm9keSkgPT0gV0tEaWN0aW9uYXJ5R2V0VHlwZUlEKCkp
OworICAgICAgICAKKyAgICAgICAgV0tEaWN0aW9uYXJ5UmVmIG1lc3NhZ2VCb2R5RGljdGlvbmFy
eSA9IHN0YXRpY19jYXN0PFdLRGljdGlvbmFyeVJlZj4obWVzc2FnZUJvZHkpOworICAgICAgICBX
S1JldGFpblB0cjxXS1N0cmluZ1JlZj4gZmlyc3RQYXJ0eVVSTFN0cmluZ0tleSA9IGFkb3B0V0so
V0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoIkZpcnN0UGFydHlVUkwiKSk7CisgICAgICAg
IFdLUmV0YWluUHRyPFdLU3RyaW5nUmVmPiBjbmFtZVVSTFN0cmluZ0tleSA9IGFkb3B0V0soV0tT
dHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoIkNOQU1FIikpOworICAgICAgICAKKyAgICAgICAg
V0tTdHJpbmdSZWYgZmlyc3RQYXJ0eVVSTFN0cmluZyA9IHN0YXRpY19jYXN0PFdLU3RyaW5nUmVm
PihXS0RpY3Rpb25hcnlHZXRJdGVtRm9yS2V5KG1lc3NhZ2VCb2R5RGljdGlvbmFyeSwgZmlyc3RQ
YXJ0eVVSTFN0cmluZ0tleS5nZXQoKSkpOworICAgICAgICBXS1N0cmluZ1JlZiBjbmFtZVVSTFN0
cmluZyA9IHN0YXRpY19jYXN0PFdLU3RyaW5nUmVmPihXS0RpY3Rpb25hcnlHZXRJdGVtRm9yS2V5
KG1lc3NhZ2VCb2R5RGljdGlvbmFyeSwgY25hbWVVUkxTdHJpbmdLZXkuZ2V0KCkpKTsKKyAgICAg
ICAgCisgICAgICAgIFRlc3RDb250cm9sbGVyOjpzaW5nbGV0b24oKS5zZXRTdGF0aXN0aWNzRmly
c3RQYXJ0eUhvc3RDTkFNRURvbWFpbihmaXJzdFBhcnR5VVJMU3RyaW5nLCBjbmFtZVVSTFN0cmlu
Zyk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpZiAoV0tTdHJpbmdJc0VxdWFsVG9V
VEY4Q1N0cmluZyhtZXNzYWdlTmFtZSwgIlN0YXRpc3RpY3NTZXRUaGlyZFBhcnR5Q05BTUVEb21h
aW4iKSkgeworICAgICAgICBBU1NFUlQoV0tHZXRUeXBlSUQobWVzc2FnZUJvZHkpID09IFdLU3Ry
aW5nR2V0VHlwZUlEKCkpOworICAgICAgICBXS1N0cmluZ1JlZiBjbmFtZVVSTFN0cmluZyA9IHN0
YXRpY19jYXN0PFdLU3RyaW5nUmVmPihtZXNzYWdlQm9keSk7CisgICAgICAgIFRlc3RDb250cm9s
bGVyOjpzaW5nbGV0b24oKS5zZXRTdGF0aXN0aWNzVGhpcmRQYXJ0eUNOQU1FRG9tYWluKGNuYW1l
VVJMU3RyaW5nKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKwogICAgIGlmIChXS1N0cmluZ0lz
RXF1YWxUb1VURjhDU3RyaW5nKG1lc3NhZ2VOYW1lLCAiU3RhdGlzdGljc1Jlc2V0VG9Db25zaXN0
ZW50U3RhdGUiKSkgewogICAgICAgICBpZiAobV9zaG91bGREdW1wUmVzb3VyY2VMb2FkU3RhdGlz
dGljcykKICAgICAgICAgICAgIG1fc2F2ZWRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzID0gVGVzdENv
bnRyb2xsZXI6OnNpbmdsZXRvbigpLmR1bXBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzKCk7CkBAIC0x
OTQ2LDYgKzE5NjcsMTggQEAgdm9pZCBUZXN0SW52b2NhdGlvbjo6ZGlkU2V0VG9TYW1lU2l0ZVN0
cmljdENvb2tpZXMoKQogICAgIFdLUGFnZVBvc3RNZXNzYWdlVG9JbmplY3RlZEJ1bmRsZShUZXN0
Q29udHJvbGxlcjo6c2luZ2xldG9uKCkubWFpbldlYlZpZXcoKS0+cGFnZSgpLCBtZXNzYWdlTmFt
ZS5nZXQoKSwgbnVsbHB0cik7CiB9CiAKK3ZvaWQgVGVzdEludm9jYXRpb246OmRpZFNldEZpcnN0
UGFydHlIb3N0Q05BTUVEb21haW4oKQoreworICAgIFdLUmV0YWluUHRyPFdLU3RyaW5nUmVmPiBt
ZXNzYWdlTmFtZSA9IGFkb3B0V0soV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoIkNhbGxE
aWRTZXRGaXJzdFBhcnR5SG9zdENOQU1FRG9tYWluIikpOworICAgIFdLUGFnZVBvc3RNZXNzYWdl
VG9JbmplY3RlZEJ1bmRsZShUZXN0Q29udHJvbGxlcjo6c2luZ2xldG9uKCkubWFpbldlYlZpZXco
KS0+cGFnZSgpLCBtZXNzYWdlTmFtZS5nZXQoKSwgbnVsbHB0cik7Cit9CisKK3ZvaWQgVGVzdElu
dm9jYXRpb246OmRpZFNldFRoaXJkUGFydHlDTkFNRURvbWFpbigpCit7CisgICAgV0tSZXRhaW5Q
dHI8V0tTdHJpbmdSZWY+IG1lc3NhZ2VOYW1lID0gYWRvcHRXSyhXS1N0cmluZ0NyZWF0ZVdpdGhV
VEY4Q1N0cmluZygiQ2FsbERpZFNldFRoaXJkUGFydHlDTkFNRURvbWFpbiIpKTsKKyAgICBXS1Bh
Z2VQb3N0TWVzc2FnZVRvSW5qZWN0ZWRCdW5kbGUoVGVzdENvbnRyb2xsZXI6OnNpbmdsZXRvbigp
Lm1haW5XZWJWaWV3KCktPnBhZ2UoKSwgbWVzc2FnZU5hbWUuZ2V0KCksIG51bGxwdHIpOworfQor
CiB2b2lkIFRlc3RJbnZvY2F0aW9uOjpkaWRSZXNldFN0YXRpc3RpY3NUb0NvbnNpc3RlbnRTdGF0
ZSgpCiB7CiAgICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+IG1lc3NhZ2VOYW1lID0gYWRvcHRX
SyhXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygiQ2FsbERpZFJlc2V0U3RhdGlzdGljc1Rv
Q29uc2lzdGVudFN0YXRlIikpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9U
ZXN0SW52b2NhdGlvbi5oIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlvbi5o
CmluZGV4IDYyMzFiMGMyMDQ0NDVhZDYwYzk1ZDNlODE3ZmIzMGY0NzZmOGUxYTUuLmU0N2M1YzA0
OWZiMDE2MThiZjBiODkxZTlmMmI5NTg4NmEwNGJmYjQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktp
dFRlc3RSdW5uZXIvVGVzdEludm9jYXRpb24uaAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVy
L1Rlc3RJbnZvY2F0aW9uLmgKQEAgLTc3LDYgKzc3LDggQEAgcHVibGljOgogICAgIHZvaWQgZGlk
U2V0U2hvdWxkQmxvY2tUaGlyZFBhcnR5Q29va2llcygpOwogICAgIHZvaWQgZGlkU2V0Rmlyc3RQ
YXJ0eVdlYnNpdGVEYXRhUmVtb3ZhbE1vZGUoKTsKICAgICB2b2lkIGRpZFNldFRvU2FtZVNpdGVT
dHJpY3RDb29raWVzKCk7CisgICAgdm9pZCBkaWRTZXRGaXJzdFBhcnR5SG9zdENOQU1FRG9tYWlu
KCk7CisgICAgdm9pZCBkaWRTZXRUaGlyZFBhcnR5Q05BTUVEb21haW4oKTsKICAgICB2b2lkIGRp
ZFJlc2V0U3RhdGlzdGljc1RvQ29uc2lzdGVudFN0YXRlKCk7CiAgICAgdm9pZCBkaWRTZXRCbG9j
a0Nvb2tpZXNGb3JIb3N0KCk7CiAgICAgdm9pZCBkaWRTZXRTdGF0aXN0aWNzRGVidWdNb2RlKCk7
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKaW5kZXggZTc1MzZkNjVlNzFhNmI3MTBjZjE1YTlkYTYxNGVhMDdiYTY2YjE4NC4uZTNlNjUz
MTA0ZWQ0ZmRhZjI5ZWYxOTA4NzhlYjY0OTMzYzk3Y2YwZSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMyIEBA
CisyMDIwLTA4LTA1ICBKb2huIFdpbGFuZGVyICA8d2lsYW5kZXJAYXBwbGUuY29tPgorCisgICAg
ICAgIEV4cGVyaW1lbnRhbDogQ2FwIHRoZSBleHBpcnkgb2YgcGVyc2lzdGVudCBjb29raWVzIHNl
dCBpbiAzcmQtcGFydHkgQ05BTUUgY2xvYWtlZCBIVFRQIHJlc3BvbnNlcworICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE1MjAxCisgICAgICAgIDxyZGFy
Oi8vcHJvYmxlbS81NzQ1NDYzMz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICAqIGh0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9jbmFtZS1j
bG9ha2luZy10b3AtY25hbWUtc3ViLTFwLWNuYW1lLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAg
ICAgICogaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL2NuYW1lLWNsb2FraW5nLXRv
cC1jbmFtZS1zdWItMXAtY25hbWUuaHRtbDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9y
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzL2NuYW1lLWNsb2FraW5nLXRvcC1jbmFtZS1zdWItM3AtY25h
bWUtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL3Jlc291cmNlTG9h
ZFN0YXRpc3RpY3MvY25hbWUtY2xvYWtpbmctdG9wLWNuYW1lLXN1Yi0zcC1jbmFtZS5odG1sOiBB
ZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvY25hbWUt
Y2xvYWtpbmctdG9wLWNuYW1lLXN1Yi1tYXRjaGluZy1jbmFtZS1leHBlY3RlZC50eHQ6IEFkZGVk
LgorICAgICAgICAqIGh0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9jbmFtZS1jbG9h
a2luZy10b3AtY25hbWUtc3ViLW1hdGNoaW5nLWNuYW1lLmh0bWw6IEFkZGVkLgorICAgICAgICAq
IGh0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9jbmFtZS1jbG9ha2luZy10b3AtY25h
bWUtc3ViLW5vLWNuYW1lLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0
cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL2NuYW1lLWNsb2FraW5nLXRvcC1jbmFtZS1zdWItbm8t
Y25hbWUuaHRtbDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0
aXN0aWNzL2NuYW1lLWNsb2FraW5nLXRvcC1uby1jbmFtZS1zdWItMXAtY25hbWUtZXhwZWN0ZWQu
dHh0OiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3Mv
Y25hbWUtY2xvYWtpbmctdG9wLW5vLWNuYW1lLXN1Yi0xcC1jbmFtZS5odG1sOiBBZGRlZC4KKyAg
ICAgICAgKiBodHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvY25hbWUtY2xvYWtpbmct
dG9wLW5vLWNuYW1lLXN1Yi0zcC1jbmFtZS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAq
IGh0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9jbmFtZS1jbG9ha2luZy10b3Atbm8t
Y25hbWUtc3ViLTNwLWNuYW1lLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvcmVz
b3VyY2VMb2FkU3RhdGlzdGljcy9jbmFtZS1jbG9ha2luZy10b3Atbm8tY25hbWUtc3ViLW5vLWNu
YW1lLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9yZXNvdXJjZUxv
YWRTdGF0aXN0aWNzL2NuYW1lLWNsb2FraW5nLXRvcC1uby1jbmFtZS1zdWItbm8tY25hbWUuaHRt
bDogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vaW9zLXdrMi9UZXN0RXhwZWN0YXRpb25zOgor
ICAgICAgICAgICAgTmV3IHRlc3RzIG1hcmtlZCBhcyBbIFBhc3MgXS4KKyAgICAgICAgKiBwbGF0
Zm9ybS9tYWMtd2syL1Rlc3RFeHBlY3RhdGlvbnM6CisgICAgICAgICAgICBOZXcgdGVzdHMgbWFy
a2VkIGFzIFsgUGFzcyBdIGZvciBCaWdTdXIrLgorICAgICAgICAqIHBsYXRmb3JtL3drMi9UZXN0
RXhwZWN0YXRpb25zOgorICAgICAgICAgICAgTmV3IHRlc3RzIG1hcmtlZCBhcyBbIFNraXAgXSBp
biBnZW5lcmFsLgorCiAyMDIwLTA4LTA1ICBMYXVybyBNb3VyYSAgPGxtb3VyYUBpZ2FsaWEuY29t
PgogCiAgICAgICAgIFtHVEtdW1dQRV0gbWVkaWEvbWVkaWEtc291cmNlL21lZGlhLXNvdXJjZS13
ZWJtLmh0bWwgaXMgdGltaW5nIG91dApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0
cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL2NuYW1lLWNsb2FraW5nLXRvcC1jbmFtZS1zdWItMXAt
Y25hbWUtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRT
dGF0aXN0aWNzL2NuYW1lLWNsb2FraW5nLXRvcC1jbmFtZS1zdWItMXAtY25hbWUtZXhwZWN0ZWQu
dHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjk0OGZiNWNjZDZlNTcxYjMzYzU3MmY1NmQyZjc2NmNlMDY2M2JhNGMK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0
YXRpc3RpY3MvY25hbWUtY2xvYWtpbmctdG9wLWNuYW1lLXN1Yi0xcC1jbmFtZS1leHBlY3RlZC50
eHQKQEAgLTAsMCArMSwxMCBAQAorVGVzdCBmb3IgQ05BTUUgQ2xvYWtpbmc6IE5vIGNvb2tpZSBl
eHBpcnkgY2FwcGluZyBpZiB0aGUgdG9wIGZyYW1lIGhhcyBhbiBhbHRlcm5hdGUgQ05BTUUgYW5k
IHRoZSBzdWIgcmVzb3VyY2UgaGFzIGFuIGFsdGVybmF0ZSBDTkFNRSB0aGF0IG1hdGNoZXMgdGhl
IGZpcnN0IHBhcnR5IChub3QgaXRzIENOQU1FKS4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2Vl
IGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUi
LgorCisKK1BBU1MgQ29va2llIG5hbWVkIGNuYW1lVGVzdENvb2tpZSBleHBpcmVzIGluIG1vcmUg
dGhhbiA2MDU0MDAgc2Vjb25kcy4KK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKwor
VEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3Jlc291
cmNlTG9hZFN0YXRpc3RpY3MvY25hbWUtY2xvYWtpbmctdG9wLWNuYW1lLXN1Yi0xcC1jbmFtZS5o
dG1sIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL2NuYW1l
LWNsb2FraW5nLXRvcC1jbmFtZS1zdWItMXAtY25hbWUuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44YzgzMDRi
MGI4OWM1NWYyZjcwY2Q4MDE2ODU0MDNkMjlkYmEyYTE3Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL2NuYW1lLWNsb2FraW5n
LXRvcC1jbmFtZS1zdWItMXAtY25hbWUuaHRtbApAQCAtMCwwICsxLDY4IEBACis8IURPQ1RZUEUg
aHRtbD4KKzxodG1sIGxhbmc9ImVuIj4KKzxoZWFkPgorICAgIDxtZXRhIGNoYXJzZXQ9IlVURi04
Ij4KKyAgICA8c2NyaXB0IHNyYz0iL2pzLXRlc3QtcmVzb3VyY2VzL2pzLXRlc3QuanMiPjwvc2Ny
aXB0PgorICAgIDxzY3JpcHQgc3JjPSIvY29va2llcy9yZXNvdXJjZXMvY29va2llLXV0aWxpdGll
cy5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9InJlc291cmNlcy91dGlsLmpzIj48L3Nj
cmlwdD4KKzwvaGVhZD4KKzxib2R5IG9ubG9hZD0icnVuVGVzdCgpIj4KKzxzY3JpcHQ+CisgICAg
ZGVzY3JpcHRpb24oIlRlc3QgZm9yIENOQU1FIENsb2FraW5nOiBObyBjb29raWUgZXhwaXJ5IGNh
cHBpbmcgaWYgdGhlIHRvcCBmcmFtZSBoYXMgYW4gYWx0ZXJuYXRlIENOQU1FIGFuZCB0aGUgc3Vi
IHJlc291cmNlIGhhcyBhbiBhbHRlcm5hdGUgQ05BTUUgdGhhdCBtYXRjaGVzIHRoZSBmaXJzdCBw
YXJ0eSAobm90IGl0cyBDTkFNRSkuIik7CisgICAganNUZXN0SXNBc3luYyA9IHRydWU7CisKKyAg
ICBmdW5jdGlvbiBmaW5pc2hUZXN0KCkgeworICAgICAgICByZXNldENvb2tpZXNGb3JDdXJyZW50
T3JpZ2luKCk7CisgICAgICAgIHNldEVuYWJsZUZlYXR1cmUoZmFsc2UsIGZ1bmN0aW9uKCkgewor
ICAgICAgICAgICAgZmluaXNoSlNUZXN0KCk7CisgICAgICAgIH0pOworICAgIH0KKworICAgIGZ1
bmN0aW9uIGNoZWNrQ29va2llRXhwaXJ5KGNvb2tpZURhdGEsIHNlY29uZHMsIHNob3VsZEJlTGVz
c1RoYW4pIHsKKyAgICAgICAgbGV0IG5vdyA9IG5ldyBEYXRlKCk7CisgICAgICAgIGxldCBleHBp
cnlEYXRlSW5NaWxsaXNlY29uZHMgPSBub3cuZ2V0VGltZSgpICsgKHNlY29uZHMgKiAxMDAwKTsK
KworICAgICAgICBpZiAoKGNvb2tpZURhdGFbImV4cGlyZXMiXSA8IGV4cGlyeURhdGVJbk1pbGxp
c2Vjb25kcykgPT09IHNob3VsZEJlTGVzc1RoYW4pCisgICAgICAgICAgICB0ZXN0UGFzc2VkKCJD
b29raWUgbmFtZWQgIiArIGNvb2tpZURhdGFbIm5hbWUiXSArICIgZXhwaXJlcyBpbiAiICsgKHNo
b3VsZEJlTGVzc1RoYW4gPyAibGVzcyIgOiAibW9yZSIpICsgIiB0aGFuICIgKyBzZWNvbmRzICsg
IiBzZWNvbmRzLiIpOworICAgICAgICBlbHNlCisgICAgICAgICAgICB0ZXN0RmFpbGVkKCJDb29r
aWUgbmFtZWQgIiArIGNvb2tpZURhdGFbIm5hbWUiXSArICIgZXhwaXJlcyBpbiAiICsgKHNob3Vs
ZEJlTGVzc1RoYW4gPyAibW9yZSIgOiAibGVzcyIpICsgIiB0aGFuICIgKyBzZWNvbmRzICsgIiBz
ZWNvbmRzLiIpOworICAgIH0KKworICAgIGNvbnN0IG9uZVdlZWtJblNlY29uZHMgPSA3ICogMjQg
KiA2MCAqIDYwOworICAgIGNvbnN0IG92ZXJPbmVXZWVrSW5TZWNvbmRzID0gb25lV2Vla0luU2Vj
b25kcyArIDYwMDsKKyAgICBjb25zdCBjb29raWVOYW1lID0gImNuYW1lVGVzdENvb2tpZSI7Cisg
ICAgY29uc3Qgc3ViUGF0aFRvU2V0Rmlyc3RQYXJ0eUNvb2tpZSA9ICJyZXNvdXJjZXMvc2V0LWNv
b2tpZS5waHA/bmFtZT0iICsgY29va2llTmFtZSArICImdmFsdWU9dmFsdWUmZHVtbXk9IiArIE1h
dGgucmFuZG9tKCk7CisKKyAgICBmdW5jdGlvbiBzZXRBbmRDaGVja0Nvb2tpZSgpIHsKKyAgICAg
ICAgZmV0Y2goc3ViUGF0aFRvU2V0Rmlyc3RQYXJ0eUNvb2tpZSkudGhlbihmdW5jdGlvbigpIHsK
KyAgICAgICAgICAgIGlmIChpbnRlcm5hbHMpIHsKKyAgICAgICAgICAgICAgICBsZXQgY29va2ll
cyA9IGludGVybmFscy5nZXRDb29raWVzKCk7CisgICAgICAgICAgICAgICAgaWYgKCFjb29raWVz
Lmxlbmd0aCkKKyAgICAgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiTm8gY29va2llcyBmb3Vu
ZC4iKTsKKyAgICAgICAgICAgICAgICBmb3IgKGxldCBjb29raWUgb2YgY29va2llcykgeworICAg
ICAgICAgICAgICAgICAgICBpZiAoY29va2llLm5hbWUgPT09IGNvb2tpZU5hbWUpIHsKKyAgICAg
ICAgICAgICAgICAgICAgICAgIGNoZWNrQ29va2llRXhwaXJ5KGNvb2tpZSwgb3Zlck9uZVdlZWtJ
blNlY29uZHMsIGZhbHNlKTsKKyAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAg
ICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoIlVua25vd24gY29va2llICIgKyBjb29raWUubmFt
ZSArICIgZm91bmQuIik7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9
CisgICAgICAgICAgICAgICAgZmluaXNoVGVzdCgpOworICAgICAgICAgICAgfQorICAgICAgICB9
KTsKKyAgICB9CisKKyAgICBjb25zdCBmaXJzdFBhcnR5ID0gImh0dHA6Ly8xMjcuMC4wLjE6ODAw
MCI7CisgICAgY29uc3QgZmlyc3RQYXJ0eUNOQU1FRm9yVGVzdGluZyA9ICJodHRwOi8vdGVzdHdl
YmtpdC5vcmciOworICAgIGNvbnN0IHRoaXJkUGFydHlDTkFNRUZvclRlc3RpbmcgPSBmaXJzdFBh
cnR5OworCisgICAgZnVuY3Rpb24gcnVuVGVzdCgpIHsKKyAgICAgICAgc2V0RW5hYmxlRmVhdHVy
ZSh0cnVlLCBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgIHRlc3RSdW5uZXIuc3RhdGlzdGljc1Nl
dEZpcnN0UGFydHlIb3N0Q05BTUVEb21haW4oZmlyc3RQYXJ0eSwgZmlyc3RQYXJ0eUNOQU1FRm9y
VGVzdGluZywgZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAgICAgdGVzdFJ1bm5lci5zdGF0aXN0
aWNzU2V0VGhpcmRQYXJ0eUNOQU1FRG9tYWluKHRoaXJkUGFydHlDTkFNRUZvclRlc3RpbmcsIGZ1
bmN0aW9uKCkgeworICAgICAgICAgICAgICAgICAgICBzZXRBbmRDaGVja0Nvb2tpZSgpOworICAg
ICAgICAgICAgICAgIH0pOworICAgICAgICAgICAgfSk7CisgICAgICAgIH0pOworICAgIH0KKzwv
c2NyaXB0PgorPC9ib2R5PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9yZXNv
dXJjZUxvYWRTdGF0aXN0aWNzL2NuYW1lLWNsb2FraW5nLXRvcC1jbmFtZS1zdWItM3AtY25hbWUt
ZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0
aWNzL2NuYW1lLWNsb2FraW5nLXRvcC1jbmFtZS1zdWItM3AtY25hbWUtZXhwZWN0ZWQudHh0Cm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjcxZjkzMzAzZTg1YWMwNmQyOTlhOWMwNWNmNjY1NmMwMWViOTc1NzgKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3Rp
Y3MvY25hbWUtY2xvYWtpbmctdG9wLWNuYW1lLXN1Yi0zcC1jbmFtZS1leHBlY3RlZC50eHQKQEAg
LTAsMCArMSwxMCBAQAorVGVzdCBmb3IgQ05BTUUgQ2xvYWtpbmc6IENvb2tpZSBleHBpcnkgY2Fw
cGluZyBpZiB0aGUgdG9wIGZyYW1lIGhhcyBhbiBhbHRlcm5hdGUgQ05BTUUgYW5kIHRoZSBzdWIg
cmVzb3VyY2UgaGFzIGEgZGlmZmVyZW50IGFsdGVybmF0ZSBDTkFNRS4KKworT24gc3VjY2Vzcywg
eW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRF
U1QgQ09NUExFVEUiLgorCisKK1BBU1MgQ29va2llIG5hbWVkIGNuYW1lVGVzdENvb2tpZSBleHBp
cmVzIGluIGxlc3MgdGhhbiA2MDU0MDAgc2Vjb25kcy4KK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2Vk
IGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRw
L3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvY25hbWUtY2xvYWtpbmctdG9wLWNuYW1lLXN1
Yi0zcC1jbmFtZS5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0
aXN0aWNzL2NuYW1lLWNsb2FraW5nLXRvcC1jbmFtZS1zdWItM3AtY25hbWUuaHRtbApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi5iNmFjNzgxZmY4MWMyMWZhYjk5OTU5OGUxZjY1ZDk1YWY3ZmRkZjk4Ci0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL2Nu
YW1lLWNsb2FraW5nLXRvcC1jbmFtZS1zdWItM3AtY25hbWUuaHRtbApAQCAtMCwwICsxLDc0IEBA
Cis8IURPQ1RZUEUgaHRtbD4KKzxodG1sIGxhbmc9ImVuIj4KKzxoZWFkPgorICAgIDxtZXRhIGNo
YXJzZXQ9IlVURi04Ij4KKyAgICA8c2NyaXB0IHNyYz0iL2pzLXRlc3QtcmVzb3VyY2VzL2pzLXRl
c3QuanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPSIvY29va2llcy9yZXNvdXJjZXMvY29v
a2llLXV0aWxpdGllcy5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9InJlc291cmNlcy91
dGlsLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5IG9ubG9hZD0icnVuVGVzdCgpIj4KKzxz
Y3JpcHQ+CisgICAgZGVzY3JpcHRpb24oIlRlc3QgZm9yIENOQU1FIENsb2FraW5nOiBDb29raWUg
ZXhwaXJ5IGNhcHBpbmcgaWYgdGhlIHRvcCBmcmFtZSBoYXMgYW4gYWx0ZXJuYXRlIENOQU1FIGFu
ZCB0aGUgc3ViIHJlc291cmNlIGhhcyBhIGRpZmZlcmVudCBhbHRlcm5hdGUgQ05BTUUuIik7Cisg
ICAganNUZXN0SXNBc3luYyA9IHRydWU7CisKKyAgICBmdW5jdGlvbiBmaW5pc2hUZXN0KCkgewor
ICAgICAgICByZXNldENvb2tpZXNGb3JDdXJyZW50T3JpZ2luKCk7CisgICAgICAgIHNldEVuYWJs
ZUZlYXR1cmUoZmFsc2UsIGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgZmluaXNoSlNUZXN0KCk7
CisgICAgICAgIH0pOworICAgIH0KKworICAgIGNvbnN0IG9uZVdlZWtJblNlY29uZHMgPSA3ICog
MjQgKiA2MCAqIDYwOworICAgIGNvbnN0IG92ZXJPbmVXZWVrSW5TZWNvbmRzID0gb25lV2Vla0lu
U2Vjb25kcyArIDYwMDsKKyAgICBjb25zdCB1bmRlck9uZVdlZWtJblNlY29uZHMgPSBvbmVXZWVr
SW5TZWNvbmRzIC0gNjAwOworCisgICAgZnVuY3Rpb24gY2hlY2tDb29raWVFeHBpcnkoY29va2ll
RGF0YSwgc2Vjb25kcywgc2hvdWxkQmVMZXNzVGhhbikgeworICAgICAgICBsZXQgbm93ID0gbmV3
IERhdGUoKTsKKyAgICAgICAgbGV0IGV4cGlyeURhdGVJbk1pbGxpc2Vjb25kcyA9IG5vdy5nZXRU
aW1lKCkgKyAoc2Vjb25kcyAqIDEwMDApOworCisgICAgICAgIGlmICgoY29va2llRGF0YVsiZXhw
aXJlcyJdIDwgZXhwaXJ5RGF0ZUluTWlsbGlzZWNvbmRzKSA9PT0gc2hvdWxkQmVMZXNzVGhhbikg
eworICAgICAgICAgICAgbGV0IHVuZGVyT25lV2Vla0V4cGlyeURhdGVJbk1pbGxpc2Vjb25kcyA9
IG5vdy5nZXRUaW1lKCkgKyAodW5kZXJPbmVXZWVrSW5TZWNvbmRzICogMTAwMCk7CisgICAgICAg
ICAgICBpZiAoY29va2llRGF0YVsiZXhwaXJlcyJdIDwgdW5kZXJPbmVXZWVrRXhwaXJ5RGF0ZUlu
TWlsbGlzZWNvbmRzKQorICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoIkNvb2tpZSBuYW1lZCAi
ICsgY29va2llRGF0YVsibmFtZSJdICsgIiB3YXMgY2FwcGVkIHRvbyBsb3cuIik7CisgICAgICAg
ICAgICBlbHNlCisgICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgiQ29va2llIG5hbWVkICIgKyBj
b29raWVEYXRhWyJuYW1lIl0gKyAiIGV4cGlyZXMgaW4gIiArIChzaG91bGRCZUxlc3NUaGFuID8g
Imxlc3MiIDogIm1vcmUiKSArICIgdGhhbiAiICsgc2Vjb25kcyArICIgc2Vjb25kcy4iKTsKKyAg
ICAgICAgfSBlbHNlCisgICAgICAgICAgICB0ZXN0RmFpbGVkKCJDb29raWUgbmFtZWQgIiArIGNv
b2tpZURhdGFbIm5hbWUiXSArICIgZXhwaXJlcyBpbiAiICsgKHNob3VsZEJlTGVzc1RoYW4gPyAi
bW9yZSIgOiAibGVzcyIpICsgIiB0aGFuICIgKyBzZWNvbmRzICsgIiBzZWNvbmRzLiIpOworICAg
IH0KKworICAgIGNvbnN0IGNvb2tpZU5hbWUgPSAiY25hbWVUZXN0Q29va2llIjsKKyAgICBjb25z
dCBzdWJQYXRoVG9TZXRGaXJzdFBhcnR5Q29va2llID0gInJlc291cmNlcy9zZXQtY29va2llLnBo
cD9uYW1lPSIgKyBjb29raWVOYW1lICsgIiZ2YWx1ZT12YWx1ZSZkdW1teT0iICsgTWF0aC5yYW5k
b20oKTsKKworICAgIGZ1bmN0aW9uIHNldEFuZENoZWNrQ29va2llKCkgeworICAgICAgICBmZXRj
aChzdWJQYXRoVG9TZXRGaXJzdFBhcnR5Q29va2llKS50aGVuKGZ1bmN0aW9uKCkgeworICAgICAg
ICAgICAgaWYgKGludGVybmFscykgeworICAgICAgICAgICAgICAgIGxldCBjb29raWVzID0gaW50
ZXJuYWxzLmdldENvb2tpZXMoKTsKKyAgICAgICAgICAgICAgICBpZiAoIWNvb2tpZXMubGVuZ3Ro
KQorICAgICAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJObyBjb29raWVzIGZvdW5kLiIpOwor
ICAgICAgICAgICAgICAgIGZvciAobGV0IGNvb2tpZSBvZiBjb29raWVzKSB7CisgICAgICAgICAg
ICAgICAgICAgIGlmIChjb29raWUubmFtZSA9PT0gY29va2llTmFtZSkgeworICAgICAgICAgICAg
ICAgICAgICAgICAgY2hlY2tDb29raWVFeHBpcnkoY29va2llLCBvdmVyT25lV2Vla0luU2Vjb25k
cywgdHJ1ZSk7CisgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAg
ICAgICAgICB0ZXN0RmFpbGVkKCJVbmtub3duIGNvb2tpZSAiICsgY29va2llLm5hbWUgKyAiIGZv
dW5kLiIpOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAg
ICAgICAgICAgIGZpbmlzaFRlc3QoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSk7CisgICAg
fQorCisgICAgY29uc3QgZmlyc3RQYXJ0eSA9ICJodHRwOi8vMTI3LjAuMC4xOjgwMDAiOworICAg
IGNvbnN0IGZpcnN0UGFydHlDTkFNRUZvclRlc3RpbmcgPSAiaHR0cDovL3Rlc3R3ZWJraXQub3Jn
IjsKKyAgICBjb25zdCB0aGlyZFBhcnR5Q05BTUVGb3JUZXN0aW5nID0gImh0dHA6Ly8zcmRwYXJ0
eXRlc3R3ZWJraXQub3JnIjsKKworICAgIGZ1bmN0aW9uIHJ1blRlc3QoKSB7CisgICAgICAgIHNl
dEVuYWJsZUZlYXR1cmUodHJ1ZSwgZnVuY3Rpb24oKSB7CisgICAgICAgICAgICB0ZXN0UnVubmVy
LnN0YXRpc3RpY3NTZXRGaXJzdFBhcnR5SG9zdENOQU1FRG9tYWluKGZpcnN0UGFydHksIGZpcnN0
UGFydHlDTkFNRUZvclRlc3RpbmcsIGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgICAgIHRlc3RS
dW5uZXIuc3RhdGlzdGljc1NldFRoaXJkUGFydHlDTkFNRURvbWFpbih0aGlyZFBhcnR5Q05BTUVG
b3JUZXN0aW5nLCBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgICAgICAgICAgc2V0QW5kQ2hlY2tD
b29raWUoKTsKKyAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgIH0pOworICAgICAgICB9
KTsKKyAgICB9Cis8L3NjcmlwdD4KKzwvYm9keT4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0
dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9jbmFtZS1jbG9ha2luZy10b3AtY25hbWUt
c3ViLW1hdGNoaW5nLWNuYW1lLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMv
cmVzb3VyY2VMb2FkU3RhdGlzdGljcy9jbmFtZS1jbG9ha2luZy10b3AtY25hbWUtc3ViLW1hdGNo
aW5nLWNuYW1lLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41ODE4YWUxMzQ1YWVjMmMwMjNmYjc2
N2Q2ZWM1YWIxZGFlZGRmZGVhCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL2NuYW1lLWNsb2FraW5nLXRvcC1jbmFtZS1zdWIt
bWF0Y2hpbmctY25hbWUtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTAgQEAKK1Rlc3QgZm9yIENO
QU1FIENsb2FraW5nOiBObyBjb29raWUgZXhwaXJ5IGNhcHBpbmcgaWYgdGhlIHRvcCBmcmFtZSBo
YXMgYW4gYWx0ZXJuYXRlIENOQU1FIGFuZCB0aGUgc3ViIHJlc291cmNlIGhhcyBtYXRjaGluZyBh
bHRlcm5hdGUgQ05BTUUuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAi
UEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNTIENv
b2tpZSBuYW1lZCBjbmFtZVRlc3RDb29raWUgZXhwaXJlcyBpbiBtb3JlIHRoYW4gNjA1NDAwIHNl
Y29uZHMuCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUK
KwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0
aWNzL2NuYW1lLWNsb2FraW5nLXRvcC1jbmFtZS1zdWItbWF0Y2hpbmctY25hbWUuaHRtbCBiL0xh
eW91dFRlc3RzL2h0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9jbmFtZS1jbG9ha2lu
Zy10b3AtY25hbWUtc3ViLW1hdGNoaW5nLWNuYW1lLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjlmYTFmMDNi
ZWZlZDQ2NmZlNjU1ZWJjNzYzM2VhM2JkZDVkYWQyOQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2h0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9jbmFtZS1jbG9ha2luZy10
b3AtY25hbWUtc3ViLW1hdGNoaW5nLWNuYW1lLmh0bWwKQEAgLTAsMCArMSw2OCBAQAorPCFET0NU
WVBFIGh0bWw+Cis8aHRtbCBsYW5nPSJlbiI+Cis8aGVhZD4KKyAgICA8bWV0YSBjaGFyc2V0PSJV
VEYtOCI+CisgICAgPHNjcmlwdCBzcmM9Ii9qcy10ZXN0LXJlc291cmNlcy9qcy10ZXN0LmpzIj48
L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNyYz0iL2Nvb2tpZXMvcmVzb3VyY2VzL2Nvb2tpZS11dGls
aXRpZXMuanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvdXRpbC5qcyI+
PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keSBvbmxvYWQ9InJ1blRlc3QoKSI+Cis8c2NyaXB0Pgor
ICAgIGRlc2NyaXB0aW9uKCJUZXN0IGZvciBDTkFNRSBDbG9ha2luZzogTm8gY29va2llIGV4cGly
eSBjYXBwaW5nIGlmIHRoZSB0b3AgZnJhbWUgaGFzIGFuIGFsdGVybmF0ZSBDTkFNRSBhbmQgdGhl
IHN1YiByZXNvdXJjZSBoYXMgbWF0Y2hpbmcgYWx0ZXJuYXRlIENOQU1FLiIpOworICAgIGpzVGVz
dElzQXN5bmMgPSB0cnVlOworCisgICAgZnVuY3Rpb24gZmluaXNoVGVzdCgpIHsKKyAgICAgICAg
cmVzZXRDb29raWVzRm9yQ3VycmVudE9yaWdpbigpOworICAgICAgICBzZXRFbmFibGVGZWF0dXJl
KGZhbHNlLCBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAgICAg
ICB9KTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBjaGVja0Nvb2tpZUV4cGlyeShjb29raWVEYXRh
LCBzZWNvbmRzLCBzaG91bGRCZUxlc3NUaGFuKSB7CisgICAgICAgIGxldCBub3cgPSBuZXcgRGF0
ZSgpOworICAgICAgICBsZXQgZXhwaXJ5RGF0ZUluTWlsbGlzZWNvbmRzID0gbm93LmdldFRpbWUo
KSArIChzZWNvbmRzICogMTAwMCk7CisKKyAgICAgICAgaWYgKChjb29raWVEYXRhWyJleHBpcmVz
Il0gPCBleHBpcnlEYXRlSW5NaWxsaXNlY29uZHMpID09PSBzaG91bGRCZUxlc3NUaGFuKQorICAg
ICAgICAgICAgdGVzdFBhc3NlZCgiQ29va2llIG5hbWVkICIgKyBjb29raWVEYXRhWyJuYW1lIl0g
KyAiIGV4cGlyZXMgaW4gIiArIChzaG91bGRCZUxlc3NUaGFuID8gImxlc3MiIDogIm1vcmUiKSAr
ICIgdGhhbiAiICsgc2Vjb25kcyArICIgc2Vjb25kcy4iKTsKKyAgICAgICAgZWxzZQorICAgICAg
ICAgICAgdGVzdEZhaWxlZCgiQ29va2llIG5hbWVkICIgKyBjb29raWVEYXRhWyJuYW1lIl0gKyAi
IGV4cGlyZXMgaW4gIiArIChzaG91bGRCZUxlc3NUaGFuID8gIm1vcmUiIDogImxlc3MiKSArICIg
dGhhbiAiICsgc2Vjb25kcyArICIgc2Vjb25kcy4iKTsKKyAgICB9CisKKyAgICBjb25zdCBvbmVX
ZWVrSW5TZWNvbmRzID0gNyAqIDI0ICogNjAgKiA2MDsKKyAgICBjb25zdCBvdmVyT25lV2Vla0lu
U2Vjb25kcyA9IG9uZVdlZWtJblNlY29uZHMgKyA2MDA7CisgICAgY29uc3QgY29va2llTmFtZSA9
ICJjbmFtZVRlc3RDb29raWUiOworICAgIGNvbnN0IHN1YlBhdGhUb1NldEZpcnN0UGFydHlDb29r
aWUgPSAicmVzb3VyY2VzL3NldC1jb29raWUucGhwP25hbWU9IiArIGNvb2tpZU5hbWUgKyAiJnZh
bHVlPXZhbHVlJmR1bW15PSIgKyBNYXRoLnJhbmRvbSgpOworCisgICAgZnVuY3Rpb24gc2V0QW5k
Q2hlY2tDb29raWUoKSB7CisgICAgICAgIGZldGNoKHN1YlBhdGhUb1NldEZpcnN0UGFydHlDb29r
aWUpLnRoZW4oZnVuY3Rpb24oKSB7CisgICAgICAgICAgICBpZiAoaW50ZXJuYWxzKSB7CisgICAg
ICAgICAgICAgICAgbGV0IGNvb2tpZXMgPSBpbnRlcm5hbHMuZ2V0Q29va2llcygpOworICAgICAg
ICAgICAgICAgIGlmICghY29va2llcy5sZW5ndGgpCisgICAgICAgICAgICAgICAgICAgIHRlc3RG
YWlsZWQoIk5vIGNvb2tpZXMgZm91bmQuIik7CisgICAgICAgICAgICAgICAgZm9yIChsZXQgY29v
a2llIG9mIGNvb2tpZXMpIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGNvb2tpZS5uYW1lID09
PSBjb29raWVOYW1lKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBjaGVja0Nvb2tpZUV4cGly
eShjb29raWUsIG92ZXJPbmVXZWVrSW5TZWNvbmRzLCBmYWxzZSk7CisgICAgICAgICAgICAgICAg
ICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJVbmtub3du
IGNvb2tpZSAiICsgY29va2llLm5hbWUgKyAiIGZvdW5kLiIpOworICAgICAgICAgICAgICAgICAg
ICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGZpbmlzaFRlc3QoKTsKKyAg
ICAgICAgICAgIH0KKyAgICAgICAgfSk7CisgICAgfQorCisgICAgY29uc3QgZmlyc3RQYXJ0eSA9
ICJodHRwOi8vMTI3LjAuMC4xOjgwMDAiOworICAgIGNvbnN0IGZpcnN0UGFydHlDTkFNRUZvclRl
c3RpbmcgPSAiaHR0cDovL3Rlc3R3ZWJraXQub3JnIjsKKyAgICBjb25zdCB0aGlyZFBhcnR5Q05B
TUVGb3JUZXN0aW5nID0gZmlyc3RQYXJ0eUNOQU1FRm9yVGVzdGluZzsKKworICAgIGZ1bmN0aW9u
IHJ1blRlc3QoKSB7CisgICAgICAgIHNldEVuYWJsZUZlYXR1cmUodHJ1ZSwgZnVuY3Rpb24oKSB7
CisgICAgICAgICAgICB0ZXN0UnVubmVyLnN0YXRpc3RpY3NTZXRGaXJzdFBhcnR5SG9zdENOQU1F
RG9tYWluKGZpcnN0UGFydHksIGZpcnN0UGFydHlDTkFNRUZvclRlc3RpbmcsIGZ1bmN0aW9uKCkg
eworICAgICAgICAgICAgICAgIHRlc3RSdW5uZXIuc3RhdGlzdGljc1NldFRoaXJkUGFydHlDTkFN
RURvbWFpbih0aGlyZFBhcnR5Q05BTUVGb3JUZXN0aW5nLCBmdW5jdGlvbigpIHsKKyAgICAgICAg
ICAgICAgICAgICAgc2V0QW5kQ2hlY2tDb29raWUoKTsKKyAgICAgICAgICAgICAgICB9KTsKKyAg
ICAgICAgICAgIH0pOworICAgICAgICB9KTsKKyAgICB9Cis8L3NjcmlwdD4KKzwvYm9keT4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9j
bmFtZS1jbG9ha2luZy10b3AtY25hbWUtc3ViLW5vLWNuYW1lLWV4cGVjdGVkLnR4dCBiL0xheW91
dFRlc3RzL2h0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9jbmFtZS1jbG9ha2luZy10
b3AtY25hbWUtc3ViLW5vLWNuYW1lLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iNjUyMGRlZTM5
MTVlNDIyZWNiMGNiNDk0ZGQ0OTQ3ZDI1OWE3NjY2Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL2NuYW1lLWNsb2FraW5nLXRv
cC1jbmFtZS1zdWItbm8tY25hbWUtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTAgQEAKK1Rlc3Qg
Zm9yIENOQU1FIENsb2FraW5nOiBObyBjb29raWUgZXhwaXJ5IGNhcHBpbmcgaWYgdGhlIHRvcCBm
cmFtZSBoYXMgYW4gYWx0ZXJuYXRlIENOQU1FIGFuZCB0aGUgc3ViIHJlc291cmNlIGhhcyBubyBh
bHRlcm5hdGUgQ05BTUUuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAi
UEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNTIENv
b2tpZSBuYW1lZCBjbmFtZVRlc3RDb29raWUgZXhwaXJlcyBpbiBtb3JlIHRoYW4gNjA1NDAwIHNl
Y29uZHMuCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUK
KwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0
aWNzL2NuYW1lLWNsb2FraW5nLXRvcC1jbmFtZS1zdWItbm8tY25hbWUuaHRtbCBiL0xheW91dFRl
c3RzL2h0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9jbmFtZS1jbG9ha2luZy10b3At
Y25hbWUtc3ViLW5vLWNuYW1lLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDFjYWQ0MzliN2ZjMTY3YTZjOTQ5
ZjcwYTkxMDBlNjlhN2NmYjIzNgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAv
dGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9jbmFtZS1jbG9ha2luZy10b3AtY25hbWUtc3Vi
LW5vLWNuYW1lLmh0bWwKQEAgLTAsMCArMSw2NSBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbCBs
YW5nPSJlbiI+Cis8aGVhZD4KKyAgICA8bWV0YSBjaGFyc2V0PSJVVEYtOCI+CisgICAgPHNjcmlw
dCBzcmM9Ii9qcy10ZXN0LXJlc291cmNlcy9qcy10ZXN0LmpzIj48L3NjcmlwdD4KKyAgICA8c2Ny
aXB0IHNyYz0iL2Nvb2tpZXMvcmVzb3VyY2VzL2Nvb2tpZS11dGlsaXRpZXMuanMiPjwvc2NyaXB0
PgorICAgIDxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvdXRpbC5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+
Cis8Ym9keSBvbmxvYWQ9InJ1blRlc3QoKSI+Cis8c2NyaXB0PgorICAgIGRlc2NyaXB0aW9uKCJU
ZXN0IGZvciBDTkFNRSBDbG9ha2luZzogTm8gY29va2llIGV4cGlyeSBjYXBwaW5nIGlmIHRoZSB0
b3AgZnJhbWUgaGFzIGFuIGFsdGVybmF0ZSBDTkFNRSBhbmQgdGhlIHN1YiByZXNvdXJjZSBoYXMg
bm8gYWx0ZXJuYXRlIENOQU1FLiIpOworICAgIGpzVGVzdElzQXN5bmMgPSB0cnVlOworCisgICAg
ZnVuY3Rpb24gZmluaXNoVGVzdCgpIHsKKyAgICAgICAgcmVzZXRDb29raWVzRm9yQ3VycmVudE9y
aWdpbigpOworICAgICAgICBzZXRFbmFibGVGZWF0dXJlKGZhbHNlLCBmdW5jdGlvbigpIHsKKyAg
ICAgICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAgICAgICB9KTsKKyAgICB9CisKKyAgICBmdW5j
dGlvbiBjaGVja0Nvb2tpZUV4cGlyeShjb29raWVEYXRhLCBzZWNvbmRzLCBzaG91bGRCZUxlc3NU
aGFuKSB7CisgICAgICAgIGxldCBub3cgPSBuZXcgRGF0ZSgpOworICAgICAgICBsZXQgZXhwaXJ5
RGF0ZUluTWlsbGlzZWNvbmRzID0gbm93LmdldFRpbWUoKSArIChzZWNvbmRzICogMTAwMCk7CisK
KyAgICAgICAgaWYgKChjb29raWVEYXRhWyJleHBpcmVzIl0gPCBleHBpcnlEYXRlSW5NaWxsaXNl
Y29uZHMpID09PSBzaG91bGRCZUxlc3NUaGFuKQorICAgICAgICAgICAgdGVzdFBhc3NlZCgiQ29v
a2llIG5hbWVkICIgKyBjb29raWVEYXRhWyJuYW1lIl0gKyAiIGV4cGlyZXMgaW4gIiArIChzaG91
bGRCZUxlc3NUaGFuID8gImxlc3MiIDogIm1vcmUiKSArICIgdGhhbiAiICsgc2Vjb25kcyArICIg
c2Vjb25kcy4iKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgdGVzdEZhaWxlZCgiQ29va2ll
IG5hbWVkICIgKyBjb29raWVEYXRhWyJuYW1lIl0gKyAiIGV4cGlyZXMgaW4gIiArIChzaG91bGRC
ZUxlc3NUaGFuID8gIm1vcmUiIDogImxlc3MiKSArICIgdGhhbiAiICsgc2Vjb25kcyArICIgc2Vj
b25kcy4iKTsKKyAgICB9CisKKyAgICBjb25zdCBvbmVXZWVrSW5TZWNvbmRzID0gNyAqIDI0ICog
NjAgKiA2MDsKKyAgICBjb25zdCBvdmVyT25lV2Vla0luU2Vjb25kcyA9IG9uZVdlZWtJblNlY29u
ZHMgKyA2MDA7CisgICAgY29uc3QgY29va2llTmFtZSA9ICJjbmFtZVRlc3RDb29raWUiOworICAg
IGNvbnN0IHN1YlBhdGhUb1NldEZpcnN0UGFydHlDb29raWUgPSAicmVzb3VyY2VzL3NldC1jb29r
aWUucGhwP25hbWU9IiArIGNvb2tpZU5hbWUgKyAiJnZhbHVlPXZhbHVlJmR1bW15PSIgKyBNYXRo
LnJhbmRvbSgpOworCisgICAgZnVuY3Rpb24gc2V0QW5kQ2hlY2tDb29raWUoKSB7CisgICAgICAg
IGZldGNoKHN1YlBhdGhUb1NldEZpcnN0UGFydHlDb29raWUpLnRoZW4oZnVuY3Rpb24oKSB7Cisg
ICAgICAgICAgICBpZiAoaW50ZXJuYWxzKSB7CisgICAgICAgICAgICAgICAgbGV0IGNvb2tpZXMg
PSBpbnRlcm5hbHMuZ2V0Q29va2llcygpOworICAgICAgICAgICAgICAgIGlmICghY29va2llcy5s
ZW5ndGgpCisgICAgICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoIk5vIGNvb2tpZXMgZm91bmQu
Iik7CisgICAgICAgICAgICAgICAgZm9yIChsZXQgY29va2llIG9mIGNvb2tpZXMpIHsKKyAgICAg
ICAgICAgICAgICAgICAgaWYgKGNvb2tpZS5uYW1lID09PSBjb29raWVOYW1lKSB7CisgICAgICAg
ICAgICAgICAgICAgICAgICBjaGVja0Nvb2tpZUV4cGlyeShjb29raWUsIG92ZXJPbmVXZWVrSW5T
ZWNvbmRzLCBmYWxzZSk7CisgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAg
ICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJVbmtub3duIGNvb2tpZSAiICsgY29va2llLm5hbWUg
KyAiIGZvdW5kLiIpOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQor
ICAgICAgICAgICAgICAgIGZpbmlzaFRlc3QoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSk7
CisgICAgfQorCisgICAgY29uc3QgZmlyc3RQYXJ0eSA9ICJodHRwOi8vMTI3LjAuMC4xOjgwMDAi
OworICAgIGNvbnN0IGZpcnN0UGFydHlDTkFNRUZvclRlc3RpbmcgPSAiaHR0cDovL3Rlc3R3ZWJr
aXQub3JnIjsKKworICAgIGZ1bmN0aW9uIHJ1blRlc3QoKSB7CisgICAgICAgIHNldEVuYWJsZUZl
YXR1cmUodHJ1ZSwgZnVuY3Rpb24oKSB7CisgICAgICAgICAgICB0ZXN0UnVubmVyLnN0YXRpc3Rp
Y3NTZXRGaXJzdFBhcnR5SG9zdENOQU1FRG9tYWluKGZpcnN0UGFydHksIGZpcnN0UGFydHlDTkFN
RUZvclRlc3RpbmcsIGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgICAgIHNldEFuZENoZWNrQ29v
a2llKCk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgfSk7CisgICAgfQorPC9zY3JpcHQ+Cis8
L2JvZHk+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0
YXRpc3RpY3MvY25hbWUtY2xvYWtpbmctdG9wLW5vLWNuYW1lLXN1Yi0xcC1jbmFtZS1leHBlY3Rl
ZC50eHQgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvY25h
bWUtY2xvYWtpbmctdG9wLW5vLWNuYW1lLXN1Yi0xcC1jbmFtZS1leHBlY3RlZC50eHQKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uYWJmYTI5OWNjYWQ3MGY2NTBlYjYwYTZlOTA4MWZiOTIyYzE3NDEzOQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9j
bmFtZS1jbG9ha2luZy10b3Atbm8tY25hbWUtc3ViLTFwLWNuYW1lLWV4cGVjdGVkLnR4dApAQCAt
MCwwICsxLDEwIEBACitUZXN0IGZvciBDTkFNRSBDbG9ha2luZzogTm8gY29va2llIGV4cGlyeSBj
YXBwaW5nIGlmIHRoZSB0b3AgZnJhbWUgaGFzIG5vIGFsdGVybmF0ZSBDTkFNRSBhbmQgdGhlIHN1
YiByZXNvdXJjZSBoYXMgYW4gYWx0ZXJuYXRlIENOQU1FIHRoYXQgbWF0Y2hlcyB0aGUgZmlyc3Qg
cGFydHkgKG5vdCBpdHMgQ05BTUUpLgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJp
ZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKwor
UEFTUyBDb29raWUgbmFtZWQgY25hbWVUZXN0Q29va2llIGV4cGlyZXMgaW4gbW9yZSB0aGFuIDYw
NTQwMCBzZWNvbmRzLgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENP
TVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvcmVzb3VyY2VMb2Fk
U3RhdGlzdGljcy9jbmFtZS1jbG9ha2luZy10b3Atbm8tY25hbWUtc3ViLTFwLWNuYW1lLmh0bWwg
Yi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvY25hbWUtY2xv
YWtpbmctdG9wLW5vLWNuYW1lLXN1Yi0xcC1jbmFtZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjI3Mzc0NjQ1
ODNiNWQ0ODA1YmViZjkzYTg0MGU1ZDA3NzY0NDg4ZjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvY25hbWUtY2xvYWtpbmct
dG9wLW5vLWNuYW1lLXN1Yi0xcC1jbmFtZS5odG1sCkBAIC0wLDAgKzEsNjUgQEAKKzwhRE9DVFlQ
RSBodG1sPgorPGh0bWwgbGFuZz0iZW4iPgorPGhlYWQ+CisgICAgPG1ldGEgY2hhcnNldD0iVVRG
LTgiPgorICAgIDxzY3JpcHQgc3JjPSIvanMtdGVzdC1yZXNvdXJjZXMvanMtdGVzdC5qcyI+PC9z
Y3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9Ii9jb29raWVzL3Jlc291cmNlcy9jb29raWUtdXRpbGl0
aWVzLmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3V0aWwuanMiPjwv
c2NyaXB0PgorPC9oZWFkPgorPGJvZHkgb25sb2FkPSJydW5UZXN0KCkiPgorPHNjcmlwdD4KKyAg
ICBkZXNjcmlwdGlvbigiVGVzdCBmb3IgQ05BTUUgQ2xvYWtpbmc6IE5vIGNvb2tpZSBleHBpcnkg
Y2FwcGluZyBpZiB0aGUgdG9wIGZyYW1lIGhhcyBubyBhbHRlcm5hdGUgQ05BTUUgYW5kIHRoZSBz
dWIgcmVzb3VyY2UgaGFzIGFuIGFsdGVybmF0ZSBDTkFNRSB0aGF0IG1hdGNoZXMgdGhlIGZpcnN0
IHBhcnR5IChub3QgaXRzIENOQU1FKS4iKTsKKyAgICBqc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKwor
ICAgIGZ1bmN0aW9uIGZpbmlzaFRlc3QoKSB7CisgICAgICAgIHJlc2V0Q29va2llc0ZvckN1cnJl
bnRPcmlnaW4oKTsKKyAgICAgICAgc2V0RW5hYmxlRmVhdHVyZShmYWxzZSwgZnVuY3Rpb24oKSB7
CisgICAgICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAgICAgICAgfSk7CisgICAgfQorCisgICAg
ZnVuY3Rpb24gY2hlY2tDb29raWVFeHBpcnkoY29va2llRGF0YSwgc2Vjb25kcywgc2hvdWxkQmVM
ZXNzVGhhbikgeworICAgICAgICBsZXQgbm93ID0gbmV3IERhdGUoKTsKKyAgICAgICAgbGV0IGV4
cGlyeURhdGVJbk1pbGxpc2Vjb25kcyA9IG5vdy5nZXRUaW1lKCkgKyAoc2Vjb25kcyAqIDEwMDAp
OworCisgICAgICAgIGlmICgoY29va2llRGF0YVsiZXhwaXJlcyJdIDwgZXhwaXJ5RGF0ZUluTWls
bGlzZWNvbmRzKSA9PT0gc2hvdWxkQmVMZXNzVGhhbikKKyAgICAgICAgICAgIHRlc3RQYXNzZWQo
IkNvb2tpZSBuYW1lZCAiICsgY29va2llRGF0YVsibmFtZSJdICsgIiBleHBpcmVzIGluICIgKyAo
c2hvdWxkQmVMZXNzVGhhbiA/ICJsZXNzIiA6ICJtb3JlIikgKyAiIHRoYW4gIiArIHNlY29uZHMg
KyAiIHNlY29uZHMuIik7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHRlc3RGYWlsZWQoIkNv
b2tpZSBuYW1lZCAiICsgY29va2llRGF0YVsibmFtZSJdICsgIiBleHBpcmVzIGluICIgKyAoc2hv
dWxkQmVMZXNzVGhhbiA/ICJtb3JlIiA6ICJsZXNzIikgKyAiIHRoYW4gIiArIHNlY29uZHMgKyAi
IHNlY29uZHMuIik7CisgICAgfQorCisgICAgY29uc3Qgb25lV2Vla0luU2Vjb25kcyA9IDcgKiAy
NCAqIDYwICogNjA7CisgICAgY29uc3Qgb3Zlck9uZVdlZWtJblNlY29uZHMgPSBvbmVXZWVrSW5T
ZWNvbmRzICsgNjAwOworICAgIGNvbnN0IGNvb2tpZU5hbWUgPSAiY25hbWVUZXN0Q29va2llIjsK
KyAgICBjb25zdCBzdWJQYXRoVG9TZXRGaXJzdFBhcnR5Q29va2llID0gInJlc291cmNlcy9zZXQt
Y29va2llLnBocD9uYW1lPSIgKyBjb29raWVOYW1lICsgIiZ2YWx1ZT12YWx1ZSZkdW1teT0iICsg
TWF0aC5yYW5kb20oKTsKKworICAgIGZ1bmN0aW9uIHNldEFuZENoZWNrQ29va2llKCkgeworICAg
ICAgICBmZXRjaChzdWJQYXRoVG9TZXRGaXJzdFBhcnR5Q29va2llKS50aGVuKGZ1bmN0aW9uKCkg
eworICAgICAgICAgICAgaWYgKGludGVybmFscykgeworICAgICAgICAgICAgICAgIGxldCBjb29r
aWVzID0gaW50ZXJuYWxzLmdldENvb2tpZXMoKTsKKyAgICAgICAgICAgICAgICBpZiAoIWNvb2tp
ZXMubGVuZ3RoKQorICAgICAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJObyBjb29raWVzIGZv
dW5kLiIpOworICAgICAgICAgICAgICAgIGZvciAobGV0IGNvb2tpZSBvZiBjb29raWVzKSB7Cisg
ICAgICAgICAgICAgICAgICAgIGlmIChjb29raWUubmFtZSA9PT0gY29va2llTmFtZSkgeworICAg
ICAgICAgICAgICAgICAgICAgICAgY2hlY2tDb29raWVFeHBpcnkoY29va2llLCBvdmVyT25lV2Vl
a0luU2Vjb25kcywgZmFsc2UpOworICAgICAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAg
ICAgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiVW5rbm93biBjb29raWUgIiArIGNvb2tpZS5u
YW1lICsgIiBmb3VuZC4iKTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAg
IH0KKyAgICAgICAgICAgICAgICBmaW5pc2hUZXN0KCk7CisgICAgICAgICAgICB9CisgICAgICAg
IH0pOworICAgIH0KKworICAgIGNvbnN0IGZpcnN0UGFydHkgPSAiaHR0cDovLzEyNy4wLjAuMTo4
MDAwIjsKKyAgICBjb25zdCB0aGlyZFBhcnR5Q05BTUVGb3JUZXN0aW5nID0gZmlyc3RQYXJ0eTsK
KworICAgIGZ1bmN0aW9uIHJ1blRlc3QoKSB7CisgICAgICAgIHNldEVuYWJsZUZlYXR1cmUodHJ1
ZSwgZnVuY3Rpb24oKSB7CisgICAgICAgICAgICB0ZXN0UnVubmVyLnN0YXRpc3RpY3NTZXRUaGly
ZFBhcnR5Q05BTUVEb21haW4odGhpcmRQYXJ0eUNOQU1FRm9yVGVzdGluZywgZnVuY3Rpb24oKSB7
CisgICAgICAgICAgICAgICAgc2V0QW5kQ2hlY2tDb29raWUoKTsKKyAgICAgICAgICAgIH0pOwor
ICAgICAgICB9KTsKKyAgICB9Cis8L3NjcmlwdD4KKzwvYm9keT4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2h0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9jbmFtZS1jbG9ha2luZy10
b3Atbm8tY25hbWUtc3ViLTNwLWNuYW1lLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2h0dHAv
dGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9jbmFtZS1jbG9ha2luZy10b3Atbm8tY25hbWUt
c3ViLTNwLWNuYW1lLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40NWQyZWQ2ZmQ3ZjYxYzYxZTdj
MDBiMmVlODU4ZGNhN2YzODE4ZGU0Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0
cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL2NuYW1lLWNsb2FraW5nLXRvcC1uby1jbmFt
ZS1zdWItM3AtY25hbWUtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTAgQEAKK1Rlc3QgZm9yIENO
QU1FIENsb2FraW5nOiBDb29raWUgZXhwaXJ5IGNhcHBpbmcgaWYgdGhlIHRvcCBmcmFtZSBoYXMg
bm8gYWx0ZXJuYXRlIENOQU1FIGFuZCB0aGUgc3ViIHJlc291cmNlIGhhcyBhbiBhbHRlcm5hdGUg
Q05BTUUuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVz
c2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNTIENvb2tpZSBuYW1l
ZCBjbmFtZVRlc3RDb29raWUgZXhwaXJlcyBpbiBsZXNzIHRoYW4gNjA1NDAwIHNlY29uZHMuCitQ
QVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL2NuYW1l
LWNsb2FraW5nLXRvcC1uby1jbmFtZS1zdWItM3AtY25hbWUuaHRtbCBiL0xheW91dFRlc3RzL2h0
dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9jbmFtZS1jbG9ha2luZy10b3Atbm8tY25h
bWUtc3ViLTNwLWNuYW1lLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYjVhYzQ5N2Y5MzM2ZTMyY2JiZmRhOTcz
ZTkwYzQwYTM3OTBkZThhNwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVz
dHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9jbmFtZS1jbG9ha2luZy10b3Atbm8tY25hbWUtc3Vi
LTNwLWNuYW1lLmh0bWwKQEAgLTAsMCArMSw3MSBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbCBs
YW5nPSJlbiI+Cis8aGVhZD4KKyAgICA8bWV0YSBjaGFyc2V0PSJVVEYtOCI+CisgICAgPHNjcmlw
dCBzcmM9Ii9qcy10ZXN0LXJlc291cmNlcy9qcy10ZXN0LmpzIj48L3NjcmlwdD4KKyAgICA8c2Ny
aXB0IHNyYz0iL2Nvb2tpZXMvcmVzb3VyY2VzL2Nvb2tpZS11dGlsaXRpZXMuanMiPjwvc2NyaXB0
PgorICAgIDxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvdXRpbC5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+
Cis8Ym9keSBvbmxvYWQ9InJ1blRlc3QoKSI+Cis8c2NyaXB0PgorICAgIGRlc2NyaXB0aW9uKCJU
ZXN0IGZvciBDTkFNRSBDbG9ha2luZzogQ29va2llIGV4cGlyeSBjYXBwaW5nIGlmIHRoZSB0b3Ag
ZnJhbWUgaGFzIG5vIGFsdGVybmF0ZSBDTkFNRSBhbmQgdGhlIHN1YiByZXNvdXJjZSBoYXMgYW4g
YWx0ZXJuYXRlIENOQU1FLiIpOworICAgIGpzVGVzdElzQXN5bmMgPSB0cnVlOworCisgICAgZnVu
Y3Rpb24gZmluaXNoVGVzdCgpIHsKKyAgICAgICAgcmVzZXRDb29raWVzRm9yQ3VycmVudE9yaWdp
bigpOworICAgICAgICBzZXRFbmFibGVGZWF0dXJlKGZhbHNlLCBmdW5jdGlvbigpIHsKKyAgICAg
ICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAgICAgICB9KTsKKyAgICB9CisKKyAgICBjb25zdCBv
bmVXZWVrSW5TZWNvbmRzID0gNyAqIDI0ICogNjAgKiA2MDsKKyAgICBjb25zdCBvdmVyT25lV2Vl
a0luU2Vjb25kcyA9IG9uZVdlZWtJblNlY29uZHMgKyA2MDA7CisgICAgY29uc3QgdW5kZXJPbmVX
ZWVrSW5TZWNvbmRzID0gb25lV2Vla0luU2Vjb25kcyAtIDYwMDsKKworICAgIGZ1bmN0aW9uIGNo
ZWNrQ29va2llRXhwaXJ5KGNvb2tpZURhdGEsIHNlY29uZHMsIHNob3VsZEJlTGVzc1RoYW4pIHsK
KyAgICAgICAgbGV0IG5vdyA9IG5ldyBEYXRlKCk7CisgICAgICAgIGxldCBleHBpcnlEYXRlSW5N
aWxsaXNlY29uZHMgPSBub3cuZ2V0VGltZSgpICsgKHNlY29uZHMgKiAxMDAwKTsKKworICAgICAg
ICBpZiAoKGNvb2tpZURhdGFbImV4cGlyZXMiXSA8IGV4cGlyeURhdGVJbk1pbGxpc2Vjb25kcykg
PT09IHNob3VsZEJlTGVzc1RoYW4pIHsKKyAgICAgICAgICAgIGxldCB1bmRlck9uZVdlZWtFeHBp
cnlEYXRlSW5NaWxsaXNlY29uZHMgPSBub3cuZ2V0VGltZSgpICsgKHVuZGVyT25lV2Vla0luU2Vj
b25kcyAqIDEwMDApOworICAgICAgICAgICAgaWYgKGNvb2tpZURhdGFbImV4cGlyZXMiXSA8IHVu
ZGVyT25lV2Vla0V4cGlyeURhdGVJbk1pbGxpc2Vjb25kcykKKyAgICAgICAgICAgICAgICB0ZXN0
RmFpbGVkKCJDb29raWUgbmFtZWQgIiArIGNvb2tpZURhdGFbIm5hbWUiXSArICIgd2FzIGNhcHBl
ZCB0b28gbG93LiIpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHRlc3RQYXNz
ZWQoIkNvb2tpZSBuYW1lZCAiICsgY29va2llRGF0YVsibmFtZSJdICsgIiBleHBpcmVzIGluICIg
KyAoc2hvdWxkQmVMZXNzVGhhbiA/ICJsZXNzIiA6ICJtb3JlIikgKyAiIHRoYW4gIiArIHNlY29u
ZHMgKyAiIHNlY29uZHMuIik7CisgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgdGVzdEZhaWxl
ZCgiQ29va2llIG5hbWVkICIgKyBjb29raWVEYXRhWyJuYW1lIl0gKyAiIGV4cGlyZXMgaW4gIiAr
IChzaG91bGRCZUxlc3NUaGFuID8gIm1vcmUiIDogImxlc3MiKSArICIgdGhhbiAiICsgc2Vjb25k
cyArICIgc2Vjb25kcy4iKTsKKyAgICB9CisKKyAgICBjb25zdCBjb29raWVOYW1lID0gImNuYW1l
VGVzdENvb2tpZSI7CisgICAgY29uc3Qgc3ViUGF0aFRvU2V0Rmlyc3RQYXJ0eUNvb2tpZSA9ICJy
ZXNvdXJjZXMvc2V0LWNvb2tpZS5waHA/bmFtZT0iICsgY29va2llTmFtZSArICImdmFsdWU9dmFs
dWUmZHVtbXk9IiArIE1hdGgucmFuZG9tKCk7CisKKyAgICBmdW5jdGlvbiBzZXRBbmRDaGVja0Nv
b2tpZSgpIHsKKyAgICAgICAgZmV0Y2goc3ViUGF0aFRvU2V0Rmlyc3RQYXJ0eUNvb2tpZSkudGhl
bihmdW5jdGlvbigpIHsKKyAgICAgICAgICAgIGlmIChpbnRlcm5hbHMpIHsKKyAgICAgICAgICAg
ICAgICBsZXQgY29va2llcyA9IGludGVybmFscy5nZXRDb29raWVzKCk7CisgICAgICAgICAgICAg
ICAgaWYgKCFjb29raWVzLmxlbmd0aCkKKyAgICAgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgi
Tm8gY29va2llcyBmb3VuZC4iKTsKKyAgICAgICAgICAgICAgICBmb3IgKGxldCBjb29raWUgb2Yg
Y29va2llcykgeworICAgICAgICAgICAgICAgICAgICBpZiAoY29va2llLm5hbWUgPT09IGNvb2tp
ZU5hbWUpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNoZWNrQ29va2llRXhwaXJ5KGNvb2tp
ZSwgb3Zlck9uZVdlZWtJblNlY29uZHMsIHRydWUpOworICAgICAgICAgICAgICAgICAgICB9IGVs
c2UgeworICAgICAgICAgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiVW5rbm93biBjb29raWUg
IiArIGNvb2tpZS5uYW1lICsgIiBmb3VuZC4iKTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAg
ICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBmaW5pc2hUZXN0KCk7CisgICAgICAgICAg
ICB9CisgICAgICAgIH0pOworICAgIH0KKworICAgIGNvbnN0IGZpcnN0UGFydHkgPSAiaHR0cDov
LzEyNy4wLjAuMTo4MDAwIjsKKyAgICBjb25zdCB0aGlyZFBhcnR5Q05BTUVGb3JUZXN0aW5nID0g
Imh0dHA6Ly8zcmRwYXJ0eXRlc3R3ZWJraXQub3JnIjsKKworICAgIGZ1bmN0aW9uIHJ1blRlc3Qo
KSB7CisgICAgICAgIHNldEVuYWJsZUZlYXR1cmUodHJ1ZSwgZnVuY3Rpb24oKSB7CisgICAgICAg
ICAgICB0ZXN0UnVubmVyLnN0YXRpc3RpY3NTZXRUaGlyZFBhcnR5Q05BTUVEb21haW4odGhpcmRQ
YXJ0eUNOQU1FRm9yVGVzdGluZywgZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAgICAgc2V0QW5k
Q2hlY2tDb29raWUoKTsKKyAgICAgICAgICAgIH0pOworICAgICAgICB9KTsKKyAgICB9Cis8L3Nj
cmlwdD4KKzwvYm9keT4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvcmVzb3Vy
Y2VMb2FkU3RhdGlzdGljcy9jbmFtZS1jbG9ha2luZy10b3Atbm8tY25hbWUtc3ViLW5vLWNuYW1l
LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlz
dGljcy9jbmFtZS1jbG9ha2luZy10b3Atbm8tY25hbWUtc3ViLW5vLWNuYW1lLWV4cGVjdGVkLnR4
dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi42MDVjOTljMDQ3NzAyNTM2YWU4MjcxZDZlZGEyOTFiMWQ0ZjQwYmVjCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0
aXN0aWNzL2NuYW1lLWNsb2FraW5nLXRvcC1uby1jbmFtZS1zdWItbm8tY25hbWUtZXhwZWN0ZWQu
dHh0CkBAIC0wLDAgKzEsMTAgQEAKK1Rlc3QgZm9yIENOQU1FIENsb2FraW5nOiBObyBjb29raWUg
ZXhwaXJ5IGNhcHBpbmcgaWYgdGhlIHRvcCBmcmFtZSBoYXMgbm8gYWx0ZXJuYXRlIENOQU1FIGFu
ZCB0aGUgc3ViIHJlc291cmNlIGhhcyBubyBhbHRlcm5hdGUgQ05BTUUuCisKK09uIHN1Y2Nlc3Ms
IHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJU
RVNUIENPTVBMRVRFIi4KKworCitQQVNTIENvb2tpZSBuYW1lZCBjbmFtZVRlc3RDb29raWUgZXhw
aXJlcyBpbiBtb3JlIHRoYW4gNjA1NDAwIHNlY29uZHMuCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNl
ZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0
cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL2NuYW1lLWNsb2FraW5nLXRvcC1uby1jbmFt
ZS1zdWItbm8tY25hbWUuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvcmVzb3VyY2VMb2Fk
U3RhdGlzdGljcy9jbmFtZS1jbG9ha2luZy10b3Atbm8tY25hbWUtc3ViLW5vLWNuYW1lLmh0bWwK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNjYzZjliZjY2Njg1Y2EwOTRhNDllNGZkYmNmODliOGVmNmI1M2Y5MQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlz
dGljcy9jbmFtZS1jbG9ha2luZy10b3Atbm8tY25hbWUtc3ViLW5vLWNuYW1lLmh0bWwKQEAgLTAs
MCArMSw2MCBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbCBsYW5nPSJlbiI+Cis8aGVhZD4KKyAg
ICA8bWV0YSBjaGFyc2V0PSJVVEYtOCI+CisgICAgPHNjcmlwdCBzcmM9Ii9qcy10ZXN0LXJlc291
cmNlcy9qcy10ZXN0LmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNyYz0iL2Nvb2tpZXMvcmVz
b3VyY2VzL2Nvb2tpZS11dGlsaXRpZXMuanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPSJy
ZXNvdXJjZXMvdXRpbC5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keSBvbmxvYWQ9InJ1blRl
c3QoKSI+Cis8c2NyaXB0PgorICAgIGRlc2NyaXB0aW9uKCJUZXN0IGZvciBDTkFNRSBDbG9ha2lu
ZzogTm8gY29va2llIGV4cGlyeSBjYXBwaW5nIGlmIHRoZSB0b3AgZnJhbWUgaGFzIG5vIGFsdGVy
bmF0ZSBDTkFNRSBhbmQgdGhlIHN1YiByZXNvdXJjZSBoYXMgbm8gYWx0ZXJuYXRlIENOQU1FLiIp
OworICAgIGpzVGVzdElzQXN5bmMgPSB0cnVlOworCisgICAgZnVuY3Rpb24gZmluaXNoVGVzdCgp
IHsKKyAgICAgICAgcmVzZXRDb29raWVzRm9yQ3VycmVudE9yaWdpbigpOworICAgICAgICBzZXRF
bmFibGVGZWF0dXJlKGZhbHNlLCBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgIGZpbmlzaEpTVGVz
dCgpOworICAgICAgICB9KTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBjaGVja0Nvb2tpZUV4cGly
eShjb29raWVEYXRhLCBzZWNvbmRzLCBzaG91bGRCZUxlc3NUaGFuKSB7CisgICAgICAgIGxldCBu
b3cgPSBuZXcgRGF0ZSgpOworICAgICAgICBsZXQgZXhwaXJ5RGF0ZUluTWlsbGlzZWNvbmRzID0g
bm93LmdldFRpbWUoKSArIChzZWNvbmRzICogMTAwMCk7CisKKyAgICAgICAgaWYgKChjb29raWVE
YXRhWyJleHBpcmVzIl0gPCBleHBpcnlEYXRlSW5NaWxsaXNlY29uZHMpID09PSBzaG91bGRCZUxl
c3NUaGFuKQorICAgICAgICAgICAgdGVzdFBhc3NlZCgiQ29va2llIG5hbWVkICIgKyBjb29raWVE
YXRhWyJuYW1lIl0gKyAiIGV4cGlyZXMgaW4gIiArIChzaG91bGRCZUxlc3NUaGFuID8gImxlc3Mi
IDogIm1vcmUiKSArICIgdGhhbiAiICsgc2Vjb25kcyArICIgc2Vjb25kcy4iKTsKKyAgICAgICAg
ZWxzZQorICAgICAgICAgICAgdGVzdEZhaWxlZCgiQ29va2llIG5hbWVkICIgKyBjb29raWVEYXRh
WyJuYW1lIl0gKyAiIGV4cGlyZXMgaW4gIiArIChzaG91bGRCZUxlc3NUaGFuID8gIm1vcmUiIDog
Imxlc3MiKSArICIgdGhhbiAiICsgc2Vjb25kcyArICIgc2Vjb25kcy4iKTsKKyAgICB9CisKKyAg
ICBjb25zdCBvbmVXZWVrSW5TZWNvbmRzID0gNyAqIDI0ICogNjAgKiA2MDsKKyAgICBjb25zdCBv
dmVyT25lV2Vla0luU2Vjb25kcyA9IG9uZVdlZWtJblNlY29uZHMgKyA2MDA7CisgICAgY29uc3Qg
Y29va2llTmFtZSA9ICJjbmFtZVRlc3RDb29raWUiOworICAgIGNvbnN0IHN1YlBhdGhUb1NldEZp
cnN0UGFydHlDb29raWUgPSAicmVzb3VyY2VzL3NldC1jb29raWUucGhwP25hbWU9IiArIGNvb2tp
ZU5hbWUgKyAiJnZhbHVlPXZhbHVlJmR1bW15PSIgKyBNYXRoLnJhbmRvbSgpOworCisgICAgZnVu
Y3Rpb24gc2V0QW5kQ2hlY2tDb29raWUoKSB7CisgICAgICAgIGZldGNoKHN1YlBhdGhUb1NldEZp
cnN0UGFydHlDb29raWUpLnRoZW4oZnVuY3Rpb24oKSB7CisgICAgICAgICAgICBpZiAoaW50ZXJu
YWxzKSB7CisgICAgICAgICAgICAgICAgbGV0IGNvb2tpZXMgPSBpbnRlcm5hbHMuZ2V0Q29va2ll
cygpOworICAgICAgICAgICAgICAgIGlmICghY29va2llcy5sZW5ndGgpCisgICAgICAgICAgICAg
ICAgICAgIHRlc3RGYWlsZWQoIk5vIGNvb2tpZXMgZm91bmQuIik7CisgICAgICAgICAgICAgICAg
Zm9yIChsZXQgY29va2llIG9mIGNvb2tpZXMpIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGNv
b2tpZS5uYW1lID09PSBjb29raWVOYW1lKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBjaGVj
a0Nvb2tpZUV4cGlyeShjb29raWUsIG92ZXJPbmVXZWVrSW5TZWNvbmRzLCBmYWxzZSk7CisgICAg
ICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0RmFp
bGVkKCJVbmtub3duIGNvb2tpZSAiICsgY29va2llLm5hbWUgKyAiIGZvdW5kLiIpOworICAgICAg
ICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGZpbmlz
aFRlc3QoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSk7CisgICAgfQorCisgICAgZnVuY3Rp
b24gcnVuVGVzdCgpIHsKKyAgICAgICAgc2V0RW5hYmxlRmVhdHVyZSh0cnVlLCBmdW5jdGlvbigp
IHsKKyAgICAgICAgICAgIHNldEFuZENoZWNrQ29va2llKCk7CisgICAgICAgIH0pOworICAgIH0K
Kzwvc2NyaXB0PgorPC9ib2R5PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vaW9z
LXdrMi9UZXN0RXhwZWN0YXRpb25zIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vaW9zLXdrMi9UZXN0
RXhwZWN0YXRpb25zCmluZGV4IDkzNjFjMjE2ZGUwYjM3NjljNDdhM2Y0ODM0NTdjOWRlYzcyMmE4
MzguLmE5ZjU4NWRhNmM2ZDVmNWM2M2EwODY2MjQ5Y2E4YmJhMWFjM2NkYzIgMTAwNjQ0Ci0tLSBh
L0xheW91dFRlc3RzL3BsYXRmb3JtL2lvcy13azIvVGVzdEV4cGVjdGF0aW9ucworKysgYi9MYXlv
dXRUZXN0cy9wbGF0Zm9ybS9pb3Mtd2syL1Rlc3RFeHBlY3RhdGlvbnMKQEAgLTgyLDYgKzgyLDE1
IEBAIHNjcm9sbGluZ2Nvb3JkaW5hdG9yL25vbi1mYXN0LXNjcm9sbGFibGUtcmVnaW9uLXRyYW5z
Zm9ybWVkLWlmcmFtZS5odG1sIFsgU2tpcCBdCiBodHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRp
c3RpY3Mvc3RyaXAtcmVmZXJyZXItdG8tb3JpZ2luLWZvci10aGlyZC1wYXJ0eS1yZWRpcmVjdHMu
aHRtbCBbIFBhc3MgXQogaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL3N0cmlwLXJl
ZmVycmVyLXRvLW9yaWdpbi1mb3ItdGhpcmQtcGFydHktcmVxdWVzdHMuaHRtbCBbIFBhc3MgXQog
CisjIFRoZSBDTkFNRSBhbmQgY29va2llIHRyYW5zZm9ybSBTUElzIGFyZSBvbmx5IGF2YWlsYWJs
ZSBpbiBpT1MgMTQgYW5kIGFib3ZlLgoraHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNz
L2NuYW1lLWNsb2FraW5nLXRvcC1jbmFtZS1zdWItMXAtY25hbWUuaHRtbCBbIFBhc3MgXQoraHR0
cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL2NuYW1lLWNsb2FraW5nLXRvcC1jbmFtZS1z
dWItM3AtY25hbWUuaHRtbCBbIFBhc3MgXQoraHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0
aWNzL2NuYW1lLWNsb2FraW5nLXRvcC1jbmFtZS1zdWItbWF0Y2hpbmctY25hbWUuaHRtbCBbIFBh
c3MgXQoraHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL2NuYW1lLWNsb2FraW5nLXRv
cC1jbmFtZS1zdWItbm8tY25hbWUuaHRtbCBbIFBhc3MgXQoraHR0cC90ZXN0cy9yZXNvdXJjZUxv
YWRTdGF0aXN0aWNzL2NuYW1lLWNsb2FraW5nLXRvcC1uby1jbmFtZS1zdWItMXAtY25hbWUuaHRt
bCBbIFBhc3MgXQoraHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL2NuYW1lLWNsb2Fr
aW5nLXRvcC1uby1jbmFtZS1zdWItM3AtY25hbWUuaHRtbCBbIFBhc3MgXQoraHR0cC90ZXN0cy9y
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzL2NuYW1lLWNsb2FraW5nLXRvcC1uby1jbmFtZS1zdWItbm8t
Y25hbWUuaHRtbCBbIFBhc3MgXQorCiAjLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
CiAjIEVuZCBwbGF0Zm9ybS1zcGVjaWZpYyBkaXJlY3Rvcmllcy4KICMvLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13
azIvVGVzdEV4cGVjdGF0aW9ucyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azIvVGVzdEV4
cGVjdGF0aW9ucwppbmRleCBlMzA4ZGZhODllZmM0ZThkYmJmY2E1N2ExNzY0YjQzZDIzMjI3ZmMx
Li4zNjlkMzNiMWVhMjAyOGY1YjYyNTRkOGM2Y2RkNmVhYmVlNTdiZjZjIDEwMDY0NAotLS0gYS9M
YXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2syL1Rlc3RFeHBlY3RhdGlvbnMKKysrIGIvTGF5b3V0
VGVzdHMvcGxhdGZvcm0vbWFjLXdrMi9UZXN0RXhwZWN0YXRpb25zCkBAIC03MTMsNiArNzEzLDE1
IEBAIGh0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9jYXAtY2FjaGUtbWF4LWFnZS1m
b3ItcHJldmFsZW50LXJlc291cmNlLmh0bWwKIFsgQ2F0YWxpbmErIF0gaHR0cC90ZXN0cy9yZXNv
dXJjZUxvYWRTdGF0aXN0aWNzL2VuZm9yY2Utc2FtZXNpdGUtc3RyaWN0LWJhc2VkLW9uLXRvcC1m
cmFtZS11bmlxdWUtcmVkaXJlY3RzLXRvLmh0bWwgWyBQYXNzIF0KIFsgQ2F0YWxpbmErIF0gaHR0
cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL2VuZm9yY2Utc2FtZXNpdGUtc3RyaWN0LWJh
c2VkLW9uLXRvcC1mcmFtZS11bmlxdWUtcmVkaXJlY3RzLXRvLWRhdGFiYXNlLmh0bWwgWyBQYXNz
IF0KIAorIyBUaGUgQ05BTUUgYW5kIGNvb2tpZSB0cmFuc2Zvcm0gU1BJcyBhcmUgb25seSBhdmFp
bGFibGUgaW4gbWFjT1MgQmlnIFN1ciBhbmQgYWJvdmUuCitbIEJpZ1N1cisgXSBodHRwL3Rlc3Rz
L3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvY25hbWUtY2xvYWtpbmctdG9wLWNuYW1lLXN1Yi0xcC1j
bmFtZS5odG1sIFsgUGFzcyBdCitbIEJpZ1N1cisgXSBodHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0
YXRpc3RpY3MvY25hbWUtY2xvYWtpbmctdG9wLWNuYW1lLXN1Yi0zcC1jbmFtZS5odG1sIFsgUGFz
cyBdCitbIEJpZ1N1cisgXSBodHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvY25hbWUt
Y2xvYWtpbmctdG9wLWNuYW1lLXN1Yi1tYXRjaGluZy1jbmFtZS5odG1sIFsgUGFzcyBdCitbIEJp
Z1N1cisgXSBodHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvY25hbWUtY2xvYWtpbmct
dG9wLWNuYW1lLXN1Yi1uby1jbmFtZS5odG1sIFsgUGFzcyBdCitbIEJpZ1N1cisgXSBodHRwL3Rl
c3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvY25hbWUtY2xvYWtpbmctdG9wLW5vLWNuYW1lLXN1
Yi0xcC1jbmFtZS5odG1sIFsgUGFzcyBdCitbIEJpZ1N1cisgXSBodHRwL3Rlc3RzL3Jlc291cmNl
TG9hZFN0YXRpc3RpY3MvY25hbWUtY2xvYWtpbmctdG9wLW5vLWNuYW1lLXN1Yi0zcC1jbmFtZS5o
dG1sIFsgUGFzcyBdCitbIEJpZ1N1cisgXSBodHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3Rp
Y3MvY25hbWUtY2xvYWtpbmctdG9wLW5vLWNuYW1lLXN1Yi1uby1jbmFtZS5odG1sIFsgUGFzcyBd
CisKICMgU2tpcHBlZCBpbiBnZW5lcmFsIGV4cGVjdGF0aW9ucyBzaW5jZSB0aGV5IG9ubHkgd29y
ayBvbiBpT1MgYW5kIE1hYywgV0syLgogbWVkaWEvZGVhY3RpdmF0ZS1hdWRpby1zZXNzaW9uLmh0
bWwgWyBQYXNzIF0KIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2syL1Rlc3RF
eHBlY3RhdGlvbnMgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93azIvVGVzdEV4cGVjdGF0aW9ucwpp
bmRleCBkMGQ4NmIxMDMzNjUzMmFlMjM5ZGMzZDI3ZGVkMjYxODkwYmZmODBmLi40ZWExNGJjZTU4
OGY1MjJmMWNhZjU5NjFhNmJlZjE2ODc2ZjFkMjUxIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9w
bGF0Zm9ybS93azIvVGVzdEV4cGVjdGF0aW9ucworKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93
azIvVGVzdEV4cGVjdGF0aW9ucwpAQCAtNzMwLDYgKzczMCwxNSBAQCBodHRwL3Rlc3RzL3Jlc291
cmNlTG9hZFN0YXRpc3RpY3Mvc2V0LWFsbC1jb29raWVzLXRvLXNhbWUtc2l0ZS1zdHJpY3QuaHRt
bCBbIFNraQogaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL2VuZm9yY2Utc2FtZXNp
dGUtc3RyaWN0LWJhc2VkLW9uLXRvcC1mcmFtZS11bmlxdWUtcmVkaXJlY3RzLXRvLmh0bWwgWyBT
a2lwIF0KIGh0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9lbmZvcmNlLXNhbWVzaXRl
LXN0cmljdC1iYXNlZC1vbi10b3AtZnJhbWUtdW5pcXVlLXJlZGlyZWN0cy10by1kYXRhYmFzZS5o
dG1sIFsgU2tpcCBdCiAKKyMgVGhlIENOQU1FIGFuZCBjb29raWUgdHJhbnNmb3JtIFNQSXMgYXJl
IG9ubHkgYXZhaWxhYmxlIGluIG1hY09TIEJpZyBTdXIgKyBpT1MgMTQgYW5kIGFib3ZlLgoraHR0
cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL2NuYW1lLWNsb2FraW5nLXRvcC1jbmFtZS1z
dWItMXAtY25hbWUuaHRtbCBbIFNraXAgXQoraHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0
aWNzL2NuYW1lLWNsb2FraW5nLXRvcC1jbmFtZS1zdWItM3AtY25hbWUuaHRtbCBbIFNraXAgXQor
aHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL2NuYW1lLWNsb2FraW5nLXRvcC1jbmFt
ZS1zdWItbWF0Y2hpbmctY25hbWUuaHRtbCBbIFNraXAgXQoraHR0cC90ZXN0cy9yZXNvdXJjZUxv
YWRTdGF0aXN0aWNzL2NuYW1lLWNsb2FraW5nLXRvcC1jbmFtZS1zdWItbm8tY25hbWUuaHRtbCBb
IFNraXAgXQoraHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL2NuYW1lLWNsb2FraW5n
LXRvcC1uby1jbmFtZS1zdWItMXAtY25hbWUuaHRtbCBbIFNraXAgXQoraHR0cC90ZXN0cy9yZXNv
dXJjZUxvYWRTdGF0aXN0aWNzL2NuYW1lLWNsb2FraW5nLXRvcC1uby1jbmFtZS1zdWItM3AtY25h
bWUuaHRtbCBbIFNraXAgXQoraHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL2NuYW1l
LWNsb2FraW5nLXRvcC1uby1jbmFtZS1zdWItbm8tY25hbWUuaHRtbCBbIFNraXAgXQorCiBodHRw
L3Rlc3RzL3dlYnNvY2tldC9jb25uZWN0aW9uLXJlZnVzYWwtaW4tZnJhbWUtcmVzb3VyY2UtbG9h
ZC1zdGF0aXN0aWNzLmh0bWwgWyBQYXNzIF0KICMgVGhlc2UgYXJlIG9ubHkgc3VwcG9ydGVkIGJl
aGluZCBhIGNvbXBpbGUgdGltZSBmbGFnIGluIG1hY09TIEhpZ2ggU2llcnJhICsgaU9TIDExLCBh
bmQgYWJvdmUuCiBodHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvY29va2llLWRlbGV0
aW9uLmh0bWwgWyBQYXNzIFRpbWVvdXQgXQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>406091</attachid>
            <date>2020-08-06 10:42:31 -0700</date>
            <delta_ts>2020-08-06 14:13:37 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-215201-20200806104231.patch</filename>
            <type>text/plain</type>
            <size>105554</size>
            <attacher name="John Wilander">wilander</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY1MzA4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDRiODFlZGU2ODU3NGFkNzZmOTk1NGQ3
NjhkODk3NzJkNDkzMTFlZmYuLjNjMjYyOWU3YmFhYzdjZWFhYjRkMDEwYTQ0NDM1N2M3MjRiOWMx
YzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMjAtMDgtMDYgIEpvaG4gV2lsYW5kZXIgIDx3aWxh
bmRlckBhcHBsZS5jb20+CisKKyAgICAgICAgRXhwZXJpbWVudGFsOiBDYXAgdGhlIGV4cGlyeSBv
ZiBwZXJzaXN0ZW50IGNvb2tpZXMgc2V0IGluIDNyZC1wYXJ0eSBDTkFNRSBjbG9ha2VkIEhUVFAg
cmVzcG9uc2VzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yMTUyMDEKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzU3NDU0NjMzPgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgY2hhbmdlIGRlZmluZXMg
SEFWRV9DRk5FVFdPUktfQ05BTUVfQU5EX0NPT0tJRV9UUkFOU0ZPUk1fU1BJLgorCisgICAgICAg
ICogd3RmL1BsYXRmb3JtSGF2ZS5oOgorCiAyMDIwLTA4LTA0ICBZdXN1a2UgU3V6dWtpICA8eXN1
enVraUBhcHBsZS5jb20+CiAKICAgICAgICAgW0pTQ10gVXNlIExhenlOZXZlckRlc3Ryb3llZCAm
IHN0ZDo6Y2FsbF9vbmNlIGZvciBjb21wbGV4IHNpbmdsZXRvbnMKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCAwYzU2
NjVkODFmYjQ2Nzc1MzI0ZjI3YmE4Y2JlNGZkMWQ2YzNhNzYzLi44MGE5ODMyMmJmYjEyOTEwNTI3
NGVjMWY5M2I3MGI2NmNhZTE5ZDFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VM
b2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzIgQEAKKzIwMjAt
MDgtMDYgIEpvaG4gV2lsYW5kZXIgIDx3aWxhbmRlckBhcHBsZS5jb20+CisKKyAgICAgICAgRXhw
ZXJpbWVudGFsOiBDYXAgdGhlIGV4cGlyeSBvZiBwZXJzaXN0ZW50IGNvb2tpZXMgc2V0IGluIDNy
ZC1wYXJ0eSBDTkFNRSBjbG9ha2VkIEhUVFAgcmVzcG9uc2VzCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTUyMDEKKyAgICAgICAgPHJkYXI6Ly9wcm9i
bGVtLzU3NDU0NjMzPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIFRlc3RzOiBodHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvY25hbWUtY2xv
YWtpbmctdG9wLWNuYW1lLXN1Yi0xcC1jbmFtZS5odG1sCisgICAgICAgICAgICAgICBodHRwL3Rl
c3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvY25hbWUtY2xvYWtpbmctdG9wLWNuYW1lLXN1Yi0z
cC1jbmFtZS5odG1sCisgICAgICAgICAgICAgICBodHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRp
c3RpY3MvY25hbWUtY2xvYWtpbmctdG9wLWNuYW1lLXN1Yi1tYXRjaGluZy1jbmFtZS5odG1sCisg
ICAgICAgICAgICAgICBodHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvY25hbWUtY2xv
YWtpbmctdG9wLWNuYW1lLXN1Yi1uby1jbmFtZS5odG1sCisgICAgICAgICAgICAgICBodHRwL3Rl
c3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvY25hbWUtY2xvYWtpbmctdG9wLW5vLWNuYW1lLXN1
Yi0xcC1jbmFtZS5odG1sCisgICAgICAgICAgICAgICBodHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0
YXRpc3RpY3MvY25hbWUtY2xvYWtpbmctdG9wLW5vLWNuYW1lLXN1Yi0zcC1jbmFtZS5odG1sCisg
ICAgICAgICAgICAgICBodHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvY25hbWUtY2xv
YWtpbmctdG9wLW5vLWNuYW1lLXN1Yi1uby1jbmFtZS5odG1sCisKKyAgICAgICAgKiBwYWdlL1Nl
dHRpbmdzLnlhbWw6CisgICAgICAgICAgICBBZGRlZCB0aGUgb2ZmLWJ5LWRlZmF1bHQgZmxhZyBp
c0NOQU1FQ2xvYWtpbmdNaXRpZ2F0aW9uRW5hYmxlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3
b3JrL05ldHdvcmtTdG9yYWdlU2Vzc2lvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3Jr
U3RvcmFnZVNlc3Npb246OnJlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkIGNvbnN0KToKKyAg
ICAgICAgICAgIE5ldyBnZXR0ZXIgZm9yIHRoZSBJVFAgc2V0dGluZy4KKyAgICAgICAgKiBwbGF0
Zm9ybS9uZXR3b3JrL05ldHdvcmtTdG9yYWdlU2Vzc2lvbi5oOgorICAgICAgICAqIHBsYXRmb3Jt
L25ldHdvcmsvY29jb2EvTmV0d29ya1N0b3JhZ2VTZXNzaW9uQ29jb2EubW06CisgICAgICAgIChX
ZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb246OmNhcEV4cGlyeU9mUGVyc2lzdGVudENvb2tp
ZSk6CisgICAgICAgICAgICBCcm9rZSB0aGlzIGZ1bmN0aW9uIG91dCBzbyB0aGF0IGl0IGNhbiBi
ZSByZXVzZWQuCisgICAgICAgIChXZWJDb3JlOjpwYXJzZURPTUNvb2tpZSk6CisgICAgICAgICAg
ICBIZXJlJ3MgZnJvbSB3aGVyZSB0aGUgZnVuY3Rpb24gYWJvdmUgd2FzIGJyb2tlbiBvdXQuCisg
ICAgICAgICAgICBUaGUgZXhpc3RpbmcgZnVuY3Rpb25hbGl0eSBoYXMgYSB0ZXN0IGNhc2UuCisK
IDIwMjAtMDgtMDUgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBB
ZGQgY29uc3RydWN0b3IgZm9yIER5bmFtaWNzQ29tcHJlc3Nvck5vZGUKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL1BBTC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvQ2hhbmdlTG9n
CmluZGV4IDUxNTkwNjcyNDUwNzI4ZTI0ZjcxNjQxMWUwNDI3OGRhNzdmNzMyMGEuLmYwZDBlNjM1
MGIwZjNjZmY5MmMzODFiNjBjMTA1ZWJlYjJiODIxNjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL1BBTC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvUEFML0NoYW5nZUxvZwpAQCAt
MSwzICsxLDE2IEBACisyMDIwLTA4LTA2ICBKb2huIFdpbGFuZGVyICA8d2lsYW5kZXJAYXBwbGUu
Y29tPgorCisgICAgICAgIEV4cGVyaW1lbnRhbDogQ2FwIHRoZSBleHBpcnkgb2YgcGVyc2lzdGVu
dCBjb29raWVzIHNldCBpbiAzcmQtcGFydHkgQ05BTUUgY2xvYWtlZCBIVFRQIHJlc3BvbnNlcwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE1MjAxCisg
ICAgICAgIDxyZGFyOi8vcHJvYmxlbS81NzQ1NDYzMz4KKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHBhbC9zcGkvY2YvQ0ZOZXR3b3JrU1BJLmg6Cisg
ICAgICAgICAgICBUaGlzIGNoYW5nZSBkZWNsYXJlcyB0d28gbmV3IHByb3BlcnRpZXMgb24gTlNV
UkxTZXNzaW9uVGFzazoKKyAgICAgICAgICAgIC0gIF9jb29raWVUcmFuc2Zvcm1DYWxsYmFjawor
ICAgICAgICAgICAgLSBfcmVzb2x2ZWRDTkFNRUNoYWluCisKIDIwMjAtMDgtMDQgIFBlciBBcm5l
IFZvbGxhbiAgPHB2b2xsYW5AYXBwbGUuY29tPgogCiAgICAgICAgIFtpT1NdIENoZWNrIHRoYXQg
QWNjZXNzaWJpbGl0eSBpcyBlbmFibGVkIHdoZW4gcmVjZWl2aW5nIHRoZSBlbmFibGUgQWNjZXNz
aWJpbGl0eSBub3RpZmljYXRpb24KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9n
IGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggNmVmNzU2NjU5ZDM4NzU0ZWRkYzQzMWZm
MDdlMjhkYjIzMzdjYmRjNC4uMTRkMDE4ZTkzNGZhN2NkZDI4MmI3NWVlMDA4NjI0MjkzODUxMDQz
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktp
dC9DaGFuZ2VMb2cKQEAgLTEsMyArMSw4OSBAQAorMjAyMC0wOC0wNiAgSm9obiBXaWxhbmRlciAg
PHdpbGFuZGVyQGFwcGxlLmNvbT4KKworICAgICAgICBFeHBlcmltZW50YWw6IENhcCB0aGUgZXhw
aXJ5IG9mIHBlcnNpc3RlbnQgY29va2llcyBzZXQgaW4gM3JkLXBhcnR5IENOQU1FIGNsb2FrZWQg
SFRUUCByZXNwb25zZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTIxNTIwMQorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNTc0NTQ2MzM+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBleHBlcmltZW50
YWwgZmVhdHVyZSBpcyBvZmYgYnkgZGVmYXVsdC4KKworICAgICAgICBDTkFNRSBjbG9ha2luZyBt
ZWFucyBhIGhvc3QgcmVzb2x2ZXMgdG8gYSBhIGRpZmZlcmVudCBkb21haW4sIHBvdGVudGlhbGx5
IGEKKyAgICAgICAgdGhpcmQtcGFydHkgZG9tYWluLCBhcyBwYXJ0IG9mIEROUyByZXNvbHV0aW9u
LgorCisgICAgICAgIFRoaXMgcGF0Y2ggbWFrZXMgV2ViS2l0OjpOZXR3b3JrRGF0YVRhc2tDb2Nv
YSBjYXB0dXJlIGFueSBDTkFNRSBjbG9ha2luZyBmb3IKKyAgICAgICAgdGhlIGZpcnN0IHBhcnR5
IGhvc3QgYW5kIHN0b3JlcyBpdCBpbiBhIHRhYmxlIGluIHRoZSBXZWJLaXQ6Ok5ldHdvcmtTZXNz
aW9uLgorICAgICAgICBJdCB0aGVuIGNoZWNrcyBmaXJzdCBwYXJ0eSBzdWJyZXNvdXJjZSBsb2Fk
cyB0byBzZWUgaWYgdGhleSByZXNvbHZlIHRvIGEKKyAgICAgICAgZGlmZmVyZW50IGRvbWFpbiBh
bmQgaWYgc28sIGNvbXBhcmUgdGhhdCBkb21haW4gdG8gYm90aCB0aGUgZmlyc3QgcGFydHkKKyAg
ICAgICAgZG9tYWluIGFuZCBpdHMgQ05BTUUgY2xvYWtpbmcgZG9tYWluLCBpZiB0aGVyZSBpcyBv
bmUuIElmIHRoZXJlJ3MgYQorICAgICAgICBtaXNtYXRjaCwgaXQncyBkZWVtZWQgYSBjYXNlIG9m
IHRoaXJkLXBhcnR5IENOQU1FIGNsb2FraW5nIGFuZCBhbnkgY29va2llcworICAgICAgICBzZXQg
aW4gdGhlIHJlc3BvbnNlIG9mIHRoZSBjbG9ha2VkIHN1YnJlc291cmNlIGxvYWQgd2lsbCBoYXZl
IHRoZWlyIGV4cGlyeQorICAgICAgICBjYXBwZWQgdG8gNyBkYXlzLgorCisgICAgICAgIFRoZSBj
YXNlcyBmb3IgY2FwcGluZyBleHBpcnkgbG9vayBsaWtlIHRoaXMgKGFuZCBhcmUgYmFja2VkIGJ5
IHRlc3QgY2FzZXMpOgorCisgICAgICAgIEZpcnN0LXBhcnR5IGhvc3QgIHwgRmlyc3QtcGFydHkg
c3ViZG9tYWluICAgICAgfCBDYXBwZWQgZXhwaXJ5CisgICAgICAgIC0tLS0tLS0tLS0tLS0tLS0t
LXwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfC0tLS0tLS0tLS0tLS0tCisgICAgICAgIE5v
IENOQU1FIGNsb2FraW5nIHwgTm8gQ05BTUUgY2xvYWtpbmcgICAgICAgICAgfCBObworICAgICAg
ICBObyBDTkFNRSBjbG9ha2luZyB8IEZpcnN0LXBhcnR5IENOQU1FIGNsb2FraW5nIHwgTm8KKyAg
ICAgICAgTm8gQ05BTUUgY2xvYWtpbmcgfCBUaGlyZC1wYXJ0eSBDTkFNRSBjbG9ha2luZyB8IFll
cworICAgICAgICBDTkFNRSBjbG9ha2luZyAgICB8IE5vIENOQU1FIGNsb2FraW5nICAgICAgICAg
IHwgTm8KKyAgICAgICAgQ05BTUUgY2xvYWtpbmcgICAgfCBNYXRjaGluZyBDTkFNRSBjbG9ha2lu
ZyAgICB8IE5vCisgICAgICAgIENOQU1FIGNsb2FraW5nICAgIHwgRmlyc3QtcGFydHkgQ05BTUUg
Y2xvYWtpbmcgfCBObworICAgICAgICBDTkFNRSBjbG9ha2luZyAgICB8IFRoaXJkLXBhcnR5IENO
QU1FIGNsb2FraW5nIHwgWWVzCisKKyAgICAgICAgVGhpcyBwYXRjaCBtYWtlcyB1c2Ugb2YgdHdv
IG5ldyBDRk5ldHdvcmsgU1BJcyBvbiBOU1VSTFNlc3Npb25UYXNrOgorICAgICAgICAtICBfY29v
a2llVHJhbnNmb3JtQ2FsbGJhY2sKKyAgICAgICAgLSBfcmVzb2x2ZWRDTkFNRUNoYWluCisKKyAg
ICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHA6CisgICAgICAgIChXZWJL
aXQ6Ok5ldHdvcmtQcm9jZXNzOjpyZXNldFBhcmFtZXRlcnNUb0RlZmF1bHRWYWx1ZXMpOgorICAg
ICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6c2V0SXNSdW5uaW5nUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc1Rlc3QpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6c2V0Rmlyc3RQ
YXJ0eUhvc3RDTkFNRURvbWFpbkZvclRlc3RpbmcpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3Jr
UHJvY2Vzczo6c2V0VGhpcmRQYXJ0eUNOQU1FRG9tYWluRm9yVGVzdGluZyk6CisgICAgICAgICog
TmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrUHJvY2Vzcy5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrU2Vzc2lvbi5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtTZXNzaW9uOjpOZXR3
b3JrU2Vzc2lvbik6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtTZXNzaW9uOjpzZXRGaXJzdFBh
cnR5SG9zdENOQU1FRG9tYWluKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Nlc3Npb246OmZp
cnN0UGFydHlIb3N0Q05BTUVEb21haW4pOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrU2Vzc2lv
bjo6cmVzZXRDTkFNRURvbWFpbkRhdGEpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdv
cmtTZXNzaW9uLmg6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtTZXNzaW9uOjpzZXRDTkFNRUNs
b2FraW5nTWl0aWdhdGlvbkVuYWJsZWQpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrU2Vzc2lv
bjo6Y25hbWVDbG9ha2luZ01pdGlnYXRpb25FbmFibGVkIGNvbnN0KToKKyAgICAgICAgKFdlYktp
dDo6TmV0d29ya1Nlc3Npb246OnNldFRoaXJkUGFydHlDTkFNRURvbWFpbkZvclRlc3RpbmcpOgor
ICAgICAgICAoV2ViS2l0OjpOZXR3b3JrU2Vzc2lvbjo6dGhpcmRQYXJ0eUNOQU1FRG9tYWluRm9y
VGVzdGluZyBjb25zdCk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya0Rh
dGFUYXNrQ29jb2EuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrRGF0
YVRhc2tDb2NvYS5tbToKKyAgICAgICAgKFdlYktpdDo6aGFzQ05BTUVBbmRDb29raWVUcmFuc2Zv
cm1TUEkpOgorICAgICAgICAoV2ViS2l0OjpsYXN0Q05BTUVEb21haW4pOgorICAgICAgICAoV2Vi
S2l0OjpOZXR3b3JrRGF0YVRhc2tDb2NvYTo6dXBkYXRlRmlyc3RQYXJ0eUluZm9Gb3JUYXNrQW5k
U2Vzc2lvbik6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtEYXRhVGFza0NvY29hOjphcHBseUNv
b2tpZVBvbGljeUZvclRoaXJkUGFydHlDTkFNRUNsb2FraW5nKToKKyAgICAgICAgKFdlYktpdDo6
TmV0d29ya0RhdGFUYXNrQ29jb2E6Ok5ldHdvcmtEYXRhVGFza0NvY29hKToKKyAgICAgICAgKFdl
YktpdDo6TmV0d29ya0RhdGFUYXNrQ29jb2E6OmRpZFJlY2VpdmVSZXNwb25zZSk6CisgICAgICAg
IChXZWJLaXQ6Ok5ldHdvcmtEYXRhVGFza0NvY29hOjp3aWxsUGVyZm9ybUhUVFBSZWRpcmVjdGlv
bik6CisgICAgICAgICogU2hhcmVkL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NQYXJhbWV0ZXJzLmg6
CisgICAgICAgIChXZWJLaXQ6OlJlc291cmNlTG9hZFN0YXRpc3RpY3NQYXJhbWV0ZXJzOjplbmNv
ZGUgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGFyYW1l
dGVyczo6ZGVjb2RlKToKKyAgICAgICAgKiBTaGFyZWQvV2ViUHJlZmVyZW5jZXMueWFtbDoKKyAg
ICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tXZWJzaXRlRGF0YVN0b3JlUmVmLmNwcDoKKyAgICAg
ICAgKFdLV2Vic2l0ZURhdGFTdG9yZVNldFJlc291cmNlTG9hZFN0YXRpc3RpY3NGaXJzdFBhcnR5
SG9zdENOQU1FRG9tYWluRm9yVGVzdGluZyk6CisgICAgICAgIChXS1dlYnNpdGVEYXRhU3RvcmVT
ZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzVGhpcmRQYXJ0eUNOQU1FRG9tYWluRm9yVGVzdGluZyk6
CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dLV2Vic2l0ZURhdGFTdG9yZVJlZi5oOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzc1Byb3h5OjpzZXRGaXJzdFBhcnR5SG9zdENOQU1FRG9t
YWluRm9yVGVzdGluZyk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzUHJveHk6OnNl
dFRoaXJkUGFydHlDTkFNRURvbWFpbkZvclRlc3RpbmcpOgorICAgICAgICAqIFVJUHJvY2Vzcy9O
ZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUHJv
Y2Vzc1Bvb2wuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6ZW5zdXJlTmV0
d29ya1Byb2Nlc3MpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJzaXRlRGF0YS9Db2NvYS9XZWJz
aXRlRGF0YVN0b3JlQ29jb2EubW06CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6
OnBsYXRmb3JtU2V0TmV0d29ya1BhcmFtZXRlcnMpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJz
aXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2Vic2l0ZURh
dGFTdG9yZTo6c2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0ZpcnN0UGFydHlIb3N0Q05BTUVEb21h
aW5Gb3JUZXN0aW5nKToKKyAgICAgICAgKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6c2V0UmVz
b3VyY2VMb2FkU3RhdGlzdGljc1RoaXJkUGFydHlDTkFNRURvbWFpbkZvclRlc3RpbmcpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjpwYXJhbWV0ZXJzKToKKyAgICAgICAgKiBV
SVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5oOgorCiAyMDIwLTA4LTA1ICBQ
ZXIgQXJuZSBWb2xsYW4gIDxwdm9sbGFuQGFwcGxlLmNvbT4KIAogICAgICAgICBbQ29jb2FdIFNh
bmRib3ggZXh0ZW5zaW9uIHRva2VuIG5vdCBjbGVhcmVkIGZyb20gbWVtb3J5CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybUhhdmUuaCBiL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3Jt
SGF2ZS5oCmluZGV4IDE3YWI4MjRkZTQ2MjRhYjQxNGI4NGIxMWYzYjkwYmVjM2M4NTJjZGEuLjA2
YjRkZTc0NDJmZDFkY2IwOWE3OTExZWQ4ZDgxZWQwODRhOTU0ZGUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XVEYvd3RmL1BsYXRmb3JtSGF2ZS5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtSGF2
ZS5oCkBAIC03MDcsMyArNzA3LDEwIEBACiAjaWYgKFBMQVRGT1JNKE1BQykgJiYgX19NQUNfT1Nf
WF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMTAwMDApCiAjZGVmaW5lIEhBVkVfTlNUQUJMRVZJ
RVdTVFlMRSAxCiAjZW5kaWYKKworI2lmIChQTEFURk9STShNQUMpICYmIF9fTUFDX09TX1hfVkVS
U0lPTl9NSU5fUkVRVUlSRUQgPj0gMTEwMDAwKSBcCisgICAgfHwgKChQTEFURk9STShJT1MpIHx8
IFBMQVRGT1JNKE1BQ0NBVEFMWVNUKSkgJiYgX19JUEhPTkVfT1NfVkVSU0lPTl9NSU5fUkVRVUlS
RUQgPj0gMTQwMDAwKSBcCisgICAgfHwgKFBMQVRGT1JNKFdBVENIT1MpICYmIF9fV0FUQ0hfT1Nf
VkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gNzAwMDApIFwKKyAgICB8fCAoUExBVEZPUk0oQVBQTEVU
VikgJiYgX19UVl9PU19WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxNDAwMDApCisjZGVmaW5lIEhB
VkVfQ0ZORVRXT1JLX0NOQU1FX0FORF9DT09LSUVfVFJBTlNGT1JNX1NQSSAxCisjZW5kaWYKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvc3BpL2NmL0NGTmV0d29ya1NQSS5oIGIv
U291cmNlL1dlYkNvcmUvUEFML3BhbC9zcGkvY2YvQ0ZOZXR3b3JrU1BJLmgKaW5kZXggM2UyYTdh
MzQxZWU2YWJhNzFlZmIzYmRiMGRkYjE2YTAwMzVjOThiZi4uMGZjYzVkMjEwYjdhMTYzMWJhNTk1
ZWY5NDZlZTg3NTY2OTcwMDc4NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvUEFML3BhbC9z
cGkvY2YvQ0ZOZXR3b3JrU1BJLmgKKysrIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9zcGkvY2Yv
Q0ZOZXR3b3JrU1BJLmgKQEAgLTI5Niw2ICsyOTYsMTEgQEAgZW51bSA6IE5TVUludGVnZXIgewog
ICAgIE5TSFRUUENvb2tpZUFjY2VwdFBvbGljeUV4Y2x1c2l2ZWx5RnJvbU1haW5Eb2N1bWVudERv
bWFpbiA9IDMsCiB9OwogCitAaW50ZXJmYWNlIE5TVVJMU2Vzc2lvblRhc2sgKCkKK0Bwcm9wZXJ0
eSAobm9uYXRvbWljLCBjb3B5LCBudWxsYWJsZSkgTlNBcnJheTxOU0hUVFBDb29raWUqPiogKF5f
Y29va2llVHJhbnNmb3JtQ2FsbGJhY2spKE5TQXJyYXk8TlNIVFRQQ29va2llKj4qIGNvb2tpZXMp
OworQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5LCBudWxsYWJsZSkgTlNBcnJheTxOU1N0
cmluZyo+KiBfcmVzb2x2ZWRDTkFNRUNoYWluOworQGVuZAorCiAjZW5kaWYgLy8gZGVmaW5lZChf
X09CSkNfXykKIAogI2VuZGlmIC8vIFVTRShBUFBMRV9JTlRFUk5BTF9TREspCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdzLnlhbWwgYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L1NldHRpbmdzLnlhbWwKaW5kZXggMjJjOWY2YWIyMzAwMWEyOTFjNWQzNDU3YzIxNGIzZTIwNTU5
ZmM4OC4uZDRjZmJjZWQ4Mzc2MzI5ODE1NDYzYmM2NmZmNWYyMmExMjFmMDA2ZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5ncy55YW1sCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvU2V0dGluZ3MueWFtbApAQCAtOTI4LDYgKzkyOCw5IEBAIGlzRmlyc3RQYXJ0eVdlYnNp
dGVEYXRhUmVtb3ZhbFJlcHJvVGVzdGluZ0VuYWJsZWQ6CiBpc1NhbWVTaXRlU3RyaWN0RW5mb3Jj
ZW1lbnRFbmFibGVkOgogICBpbml0aWFsOiBmYWxzZQogCitpc0NOQU1FQ2xvYWtpbmdNaXRpZ2F0
aW9uRW5hYmxlZDoKKyAgaW5pdGlhbDogZmFsc2UKKwogaXNMb2dnZWRJbkFQSUVuYWJsZWQ6CiAg
IGluaXRpYWw6IGZhbHNlCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvTmV0d29ya1N0b3JhZ2VTZXNzaW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvTmV0d29ya1N0b3JhZ2VTZXNzaW9uLmNwcAppbmRleCA2ODQ3YzRmNWU5NDliZjA3
YTljYmVmZGNkYTMwYjQyNWFjYjlmZmI2Li5jNTMzMjFlMWNiYTNkZDk3NGY5NzBjNzU5MTA2YTdm
ODE3ZTIwYjc4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL05l
dHdvcmtTdG9yYWdlU2Vzc2lvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9OZXR3b3JrU3RvcmFnZVNlc3Npb24uY3BwCkBAIC03Miw2ICs3MiwxMSBAQCB2b2lkIE5l
dHdvcmtTdG9yYWdlU2Vzc2lvbjo6c2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0VuYWJsZWQoYm9v
bCBlbmFibGVkKQogewogICAgIG1faXNSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRW5hYmxlZCA9IGVu
YWJsZWQ7CiB9CisKK2Jvb2wgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpyZXNvdXJjZUxvYWRTdGF0
aXN0aWNzRW5hYmxlZCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1faXNSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzRW5hYmxlZDsKK30KICNlbmRpZgogCiBib29sIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6
c2hvdWxkQmxvY2tUaGlyZFBhcnR5Q29va2llcyhjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgcmVn
aXN0cmFibGVEb21haW4pIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL05ldHdvcmtTdG9yYWdlU2Vzc2lvbi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9OZXR3b3JrU3RvcmFnZVNlc3Npb24uaAppbmRleCAyYzYxNWY0YzJjNzYyNzcz
MmIwYTExMmM1ZjFjYzdmMTEwZTQ3NDUxLi5mMDRjZjZjYzdlZWJlN2UzYTFhMDZkNDU2MTFmNGVk
MjNlMjBlY2RlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL05l
dHdvcmtTdG9yYWdlU2Vzc2lvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvTmV0d29ya1N0b3JhZ2VTZXNzaW9uLmgKQEAgLTg1LDYgKzg1LDcgQEAgZW51bSBjbGFzcyBJ
bmNsdWRlU2VjdXJlQ29va2llcyA6IGJvb2w7CiBlbnVtIGNsYXNzIEluY2x1ZGVIdHRwT25seUNv
b2tpZXMgOiBib29sOwogZW51bSBjbGFzcyBUaGlyZFBhcnR5Q29va2llQmxvY2tpbmdNb2RlIDog
dWludDhfdCB7IEFsbCwgQWxsRXhjZXB0QmV0d2VlbkFwcEJvdW5kRG9tYWlucywgQWxsT25TaXRl
c1dpdGhvdXRVc2VySW50ZXJhY3Rpb24sIE9ubHlBY2NvcmRpbmdUb1BlckRvbWFpblBvbGljeSB9
OwogZW51bSBjbGFzcyBTYW1lU2l0ZVN0cmljdEVuZm9yY2VtZW50RW5hYmxlZCA6IGJvb2wgeyBZ
ZXMsIE5vIH07CitlbnVtIGNsYXNzIENOQU1FQ2xvYWtpbmdNaXRpZ2F0aW9uRW5hYmxlZCA6IGJv
b2wgeyBZZXMsIE5vIH07CiBlbnVtIGNsYXNzIEZpcnN0UGFydHlXZWJzaXRlRGF0YVJlbW92YWxN
b2RlIDogdWludDhfdCB7IEFsbEJ1dENvb2tpZXMsIE5vbmUsIEFsbEJ1dENvb2tpZXNMaXZlT25U
ZXN0aW5nVGltZW91dCwgQWxsQnV0Q29va2llc1JlcHJvVGVzdGluZ1RpbWVvdXQgfTsKIGVudW0g
Y2xhc3MgU2hvdWxkQXNrSVRQIDogYm9vbCB7IE5vLCBZZXMgfTsKIApAQCAtMTg0LDExICsxODUs
MTUgQEAgcHVibGljOgogCiAjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKICAg
ICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldFJlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkKGJv
b2wpOworICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgcmVzb3VyY2VMb2FkU3RhdGlzdGljc0VuYWJs
ZWQoKSBjb25zdDsKICAgICBXRUJDT1JFX0VYUE9SVCBib29sIHNob3VsZEJsb2NrQ29va2llcyhj
b25zdCBSZXNvdXJjZVJlcXVlc3QmLCBPcHRpb25hbDxGcmFtZUlkZW50aWZpZXI+LCBPcHRpb25h
bDxQYWdlSWRlbnRpZmllcj4sIFNob3VsZFJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nKSBj
b25zdDsKICAgICBXRUJDT1JFX0VYUE9SVCBib29sIHNob3VsZEJsb2NrQ29va2llcyhjb25zdCBV
UkwmIGZpcnN0UGFydHlGb3JDb29raWVzLCBjb25zdCBVUkwmIHJlc291cmNlLCBPcHRpb25hbDxG
cmFtZUlkZW50aWZpZXI+LCBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4sIFNob3VsZFJlbGF4VGhp
cmRQYXJ0eUNvb2tpZUJsb2NraW5nKSBjb25zdDsKICAgICBXRUJDT1JFX0VYUE9SVCBib29sIHNo
b3VsZEJsb2NrVGhpcmRQYXJ0eUNvb2tpZXMoY29uc3QgUmVnaXN0cmFibGVEb21haW4mKSBjb25z
dDsKICAgICBXRUJDT1JFX0VYUE9SVCBib29sIHNob3VsZEJsb2NrVGhpcmRQYXJ0eUNvb2tpZXNC
dXRLZWVwRmlyc3RQYXJ0eUNvb2tpZXNGb3IoY29uc3QgUmVnaXN0cmFibGVEb21haW4mKSBjb25z
dDsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldEFsbENvb2tpZXNUb1NhbWVTaXRlU3RyaWN0
KGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsK
KyNpZiBQTEFURk9STShDT0NPQSkgfHwgVVNFKENGVVJMQ09OTkVDVElPTikKKyAgICBXRUJDT1JF
X0VYUE9SVCBzdGF0aWMgTlNIVFRQQ29va2llICpjYXBFeHBpcnlPZlBlcnNpc3RlbnRDb29raWUo
TlNIVFRQQ29va2llICosIFNlY29uZHMgY2FwKTsKKyNlbmRpZgogICAgIFdFQkNPUkVfRVhQT1JU
IGJvb2wgaGFzSGFkVXNlckludGVyYWN0aW9uQXNGaXJzdFBhcnR5KGNvbnN0IFJlZ2lzdHJhYmxl
RG9tYWluJikgY29uc3Q7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRQcmV2YWxlbnREb21h
aW5zVG9CbG9ja0FuZERlbGV0ZUNvb2tpZXNGb3IoY29uc3QgVmVjdG9yPFJlZ2lzdHJhYmxlRG9t
YWluPiYpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0UHJldmFsZW50RG9tYWluc1RvQmxv
Y2tCdXRLZWVwQ29va2llc0Zvcihjb25zdCBWZWN0b3I8UmVnaXN0cmFibGVEb21haW4+Jik7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL05ldHdvcmtT
dG9yYWdlU2Vzc2lvbkNvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9j
b2NvYS9OZXR3b3JrU3RvcmFnZVNlc3Npb25Db2NvYS5tbQppbmRleCBjYjk2ZDRhYWZkNWE0ZmEw
NmQ2YTcyMjEwMzIwMjc5OGQ5YTNhNjU3Li5lM2ZjMmQ4OWRmMThhNTFkZDc3OGJiM2QyMDdhMWJi
MjA5YTFmOWI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2Nv
Y29hL05ldHdvcmtTdG9yYWdlU2Vzc2lvbkNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvY29jb2EvTmV0d29ya1N0b3JhZ2VTZXNzaW9uQ29jb2EubW0KQEAgLTMw
OCw2ICszMDgsMTcgQEAgTlNBcnJheSAqTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpodHRwQ29va2ll
c0ZvclVSTChDRkhUVFBDb29raWVTdG9yYWdlUmVmIGNvb2tpZVMKICAgICByZXR1cm4gV2ViQ29y
ZTo6Y29va2llc0ZvclVSTChuc0Nvb2tpZVN0b3JhZ2UuZ2V0KCksIHVybCwgZmlyc3RQYXJ0eSwg
c2FtZVNpdGVJbmZvKTsKIH0KIAorTlNIVFRQQ29va2llICpOZXR3b3JrU3RvcmFnZVNlc3Npb246
OmNhcEV4cGlyeU9mUGVyc2lzdGVudENvb2tpZShOU0hUVFBDb29raWUgKmNvb2tpZSwgU2Vjb25k
cyBjYXApCit7CisgICAgaWYgKCFbY29va2llIGlzU2Vzc2lvbk9ubHldICYmICghY29va2llLmV4
cGlyZXNEYXRlIHx8IGNvb2tpZS5leHBpcmVzRGF0ZS50aW1lSW50ZXJ2YWxTaW5jZU5vdyA+IGNh
cC5zZWNvbmRzKCkpKSB7CisgICAgICAgIFJldGFpblB0cjxOU011dGFibGVEaWN0aW9uYXJ5PE5T
SFRUUENvb2tpZVByb3BlcnR5S2V5LCBpZD4+IHByb3BlcnRpZXMgPSBhZG9wdE5TKFtbY29va2ll
IHByb3BlcnRpZXNdIG11dGFibGVDb3B5XSk7CisgICAgICAgIFJldGFpblB0cjxOU0RhdGU+IGRh
dGUgPSBhZG9wdE5TKFtbTlNEYXRlIGFsbG9jXSBpbml0V2l0aFRpbWVJbnRlcnZhbFNpbmNlTm93
OmNhcC5zZWNvbmRzKCldKTsKKyAgICAgICAgW3Byb3BlcnRpZXMgc2V0T2JqZWN0OmRhdGUuZ2V0
KCkgZm9yS2V5Ok5TSFRUUENvb2tpZUV4cGlyZXNdOworICAgICAgICBjb29raWUgPSBbTlNIVFRQ
Q29va2llIGNvb2tpZVdpdGhQcm9wZXJ0aWVzOnByb3BlcnRpZXMuZ2V0KCldOworICAgIH0KKyAg
ICByZXR1cm4gY29va2llOworfQorCiBOU0FycmF5ICpOZXR3b3JrU3RvcmFnZVNlc3Npb246OmNv
b2tpZXNGb3JVUkwoY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mIHNh
bWVTaXRlSW5mbywgY29uc3QgVVJMJiB1cmwsIE9wdGlvbmFsPEZyYW1lSWRlbnRpZmllcj4gZnJh
bWVJRCwgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCwgU2hvdWxkQXNrSVRQIHNob3Vs
ZEFza0lUUCwgU2hvdWxkUmVsYXhUaGlyZFBhcnR5Q29va2llQmxvY2tpbmcgc2hvdWxkUmVsYXhU
aGlyZFBhcnR5Q29va2llQmxvY2tpbmcpIGNvbnN0CiB7CiAjaWYgRU5BQkxFKFJFU09VUkNFX0xP
QURfU1RBVElTVElDUykKQEAgLTQxNywxNSArNDI4LDkgQEAgc3RhdGljIE5TSFRUUENvb2tpZSAq
cGFyc2VET01Db29raWUoU3RyaW5nIGNvb2tpZVN0cmluZywgTlNVUkwqIGNvb2tpZVVSTCwgT3B0
aW8KICAgICBpZiAoW2Nvb2tpZSBpc0hUVFBPbmx5XSkKICAgICAgICAgcmV0dXJuIG5pbDsKIAot
ICAgIC8vIENhcCBsaWZldGltZSBvZiBwZXJzaXN0ZW50LCBjbGllbnQtc2lkZSBjb29raWVzIHRv
IGEgd2Vlay4KLSAgICBpZiAoY2FwcGVkTGlmZXRpbWUgJiYgIVtjb29raWUgaXNTZXNzaW9uT25s
eV0pIHsKLSAgICAgICAgaWYgKCFjb29raWUuZXhwaXJlc0RhdGUgfHwgY29va2llLmV4cGlyZXNE
YXRlLnRpbWVJbnRlcnZhbFNpbmNlTm93ID4gY2FwcGVkTGlmZXRpbWUtPnNlY29uZHMoKSkgewot
ICAgICAgICAgICAgYXV0byBwcm9wZXJ0aWVzID0gYWRvcHROUyhbW2Nvb2tpZSBwcm9wZXJ0aWVz
XSBtdXRhYmxlQ29weV0pOwotICAgICAgICAgICAgYXV0byBkYXRlSW5BV2VlayA9IGFkb3B0TlMo
W1tOU0RhdGUgYWxsb2NdIGluaXRXaXRoVGltZUludGVydmFsU2luY2VOb3c6Y2FwcGVkTGlmZXRp
bWUtPnNlY29uZHMoKV0pOwotICAgICAgICAgICAgW3Byb3BlcnRpZXMgc2V0T2JqZWN0OmRhdGVJ
bkFXZWVrLmdldCgpIGZvcktleTpOU0hUVFBDb29raWVFeHBpcmVzXTsKLSAgICAgICAgICAgIHJl
dHVybiBbTlNIVFRQQ29va2llIGNvb2tpZVdpdGhQcm9wZXJ0aWVzOnByb3BlcnRpZXMuZ2V0KCld
OwotICAgICAgICB9Ci0gICAgfQorICAgIC8vIENhcCBsaWZldGltZSBvZiBwZXJzaXN0ZW50LCBj
bGllbnQtc2lkZSBjb29raWVzLgorICAgIGlmIChjYXBwZWRMaWZldGltZSkKKyAgICAgICAgcmV0
dXJuIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6Y2FwRXhwaXJ5T2ZQZXJzaXN0ZW50Q29va2llKGNv
b2tpZSwgKmNhcHBlZExpZmV0aW1lKTsKIAogICAgIHJldHVybiBjb29raWU7CiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCmluZGV4IDc5MDg1
N2Q1NzZiMTU0NGYzMmMzMDA1YzhlMzc5YWU5ODNkMzNiYWUuLmQ1MzE0MmUxMjhmZjhlODQ4YjE4
MTk3NDg2MzI3N2JhMTcxNmVjN2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvTmV0d29ya1Byb2Nlc3MuY3BwCkBAIC04MTQsNiArODE0LDEwIEBAIHZvaWQgTmV0d29ya1By
b2Nlc3M6OmdldFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhU3VtbWFyeShQQUw6OlNlc3Npb25J
RCBzZXNzaW9uCiB2b2lkIE5ldHdvcmtQcm9jZXNzOjpyZXNldFBhcmFtZXRlcnNUb0RlZmF1bHRW
YWx1ZXMoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+
JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgaWYgKGF1dG8qIG5ldHdvcmtTZXNzaW9uID0g
dGhpcy0+bmV0d29ya1Nlc3Npb24oc2Vzc2lvbklEKSkgeworI2lmIEhBVkUoQ0ZORVRXT1JLX0NO
QU1FX0FORF9DT09LSUVfVFJBTlNGT1JNX1NQSSkKKyAgICAgICAgbmV0d29ya1Nlc3Npb24tPnJl
c2V0Q05BTUVEb21haW5EYXRhKCk7CisgICAgICAgIG5ldHdvcmtTZXNzaW9uLT5zZXRDTkFNRUNs
b2FraW5nTWl0aWdhdGlvbkVuYWJsZWQoV2ViQ29yZTo6Q05BTUVDbG9ha2luZ01pdGlnYXRpb25F
bmFibGVkOjpObyk7CisjZW5kaWYKICAgICAgICAgaWYgKGF1dG8qIHJlc291cmNlTG9hZFN0YXRp
c3RpY3MgPSBuZXR3b3JrU2Vzc2lvbi0+cmVzb3VyY2VMb2FkU3RhdGlzdGljcygpKQogICAgICAg
ICAgICAgcmVzb3VyY2VMb2FkU3RhdGlzdGljcy0+cmVzZXRQYXJhbWV0ZXJzVG9EZWZhdWx0VmFs
dWVzKFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKICAgICAgICAgZWxzZQpAQCAtODY2LDYg
Kzg3MCw5IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OnNldE5vdGlmeVBhZ2VzV2hlbkRhdGFSZWNv
cmRzV2VyZVNjYW5uZWQoUEFMOjpTZXNzaW9uSUQgc2VzCiB2b2lkIE5ldHdvcmtQcm9jZXNzOjpz
ZXRJc1J1bm5pbmdSZXNvdXJjZUxvYWRTdGF0aXN0aWNzVGVzdChQQUw6OlNlc3Npb25JRCBzZXNz
aW9uSUQsIGJvb2wgdmFsdWUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9u
SGFuZGxlcikKIHsKICAgICBpZiAoYXV0byogbmV0d29ya1Nlc3Npb24gPSB0aGlzLT5uZXR3b3Jr
U2Vzc2lvbihzZXNzaW9uSUQpKSB7CisjaWYgSEFWRShDRk5FVFdPUktfQ05BTUVfQU5EX0NPT0tJ
RV9UUkFOU0ZPUk1fU1BJKQorICAgICAgICBuZXR3b3JrU2Vzc2lvbi0+c2V0Q05BTUVDbG9ha2lu
Z01pdGlnYXRpb25FbmFibGVkKFdlYkNvcmU6OkNOQU1FQ2xvYWtpbmdNaXRpZ2F0aW9uRW5hYmxl
ZDo6WWVzKTsKKyNlbmRpZgogICAgICAgICBpZiAoYXV0byogcmVzb3VyY2VMb2FkU3RhdGlzdGlj
cyA9IG5ldHdvcmtTZXNzaW9uLT5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzKCkpCiAgICAgICAgICAg
ICByZXNvdXJjZUxvYWRTdGF0aXN0aWNzLT5zZXRJc1J1bm5pbmdUZXN0KHZhbHVlLCBXVEZNb3Zl
KGNvbXBsZXRpb25IYW5kbGVyKSk7CiAgICAgICAgIGVsc2UKQEAgLTEzNzksNiArMTM4NiwyMCBA
QCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpzZXRUb1NhbWVTaXRlU3RyaWN0Q29va2llc0ZvclRlc3Rp
bmcoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbgogICAgICAgICBjb21wbGV0aW9uSGFuZGxlcigpOwog
ICAgIH0KIH0KKwordm9pZCBOZXR3b3JrUHJvY2Vzczo6c2V0Rmlyc3RQYXJ0eUhvc3RDTkFNRURv
bWFpbkZvclRlc3RpbmcoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBTdHJpbmcmJiBmaXJzdFBh
cnR5SG9zdCwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mJiBjbmFtZURvbWFpbiwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIGlmIChhdXRv
KiBuZXR3b3JrU2Vzc2lvbiA9IHRoaXMtPm5ldHdvcmtTZXNzaW9uKHNlc3Npb25JRCkpCisgICAg
ICAgIG5ldHdvcmtTZXNzaW9uLT5zZXRGaXJzdFBhcnR5SG9zdENOQU1FRG9tYWluKFdURk1vdmUo
Zmlyc3RQYXJ0eUhvc3QpLCBXVEZNb3ZlKGNuYW1lRG9tYWluKSk7CisgICAgY29tcGxldGlvbkhh
bmRsZXIoKTsKK30KKwordm9pZCBOZXR3b3JrUHJvY2Vzczo6c2V0VGhpcmRQYXJ0eUNOQU1FRG9t
YWluRm9yVGVzdGluZyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFdlYkNvcmU6OlJlZ2lzdHJh
YmxlRG9tYWluJiYgZG9tYWluLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlv
bkhhbmRsZXIpCit7CisgICAgaWYgKGF1dG8qIG5ldHdvcmtTZXNzaW9uID0gdGhpcy0+bmV0d29y
a1Nlc3Npb24oc2Vzc2lvbklEKSkKKyAgICAgICAgbmV0d29ya1Nlc3Npb24tPnNldFRoaXJkUGFy
dHlDTkFNRURvbWFpbkZvclRlc3RpbmcoV1RGTW92ZShkb21haW4pKTsKKyAgICBjb21wbGV0aW9u
SGFuZGxlcigpOworfQogI2VuZGlmIC8vIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1Mp
CiAKIHZvaWQgTmV0d29ya1Byb2Nlc3M6OnNldEFkQ2xpY2tBdHRyaWJ1dGlvbkRlYnVnTW9kZShi
b29sIGRlYnVnTW9kZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya1Byb2Nlc3MuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1By
b2Nlc3MuaAppbmRleCA0ZGZhMTRjODc4M2RhMjI2YzMyODA0MGEzMmQ1OWM1YTU5MzcwNzM5Li5m
MjNmZDU4MGVmNTRjYWRmODBmNDY4MzY2NTZmYjIzZmQ0ZGRmMmZjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmgKKysrIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oCkBAIC0yNzMsNiArMjczLDggQEAg
cHVibGljOgogICAgIHZvaWQgc2V0U2hvdWxkRW5ibGVTYW1lU2l0ZVN0cmljdEVuZm9yY2VtZW50
Rm9yVGVzdGluZyhQQUw6OlNlc3Npb25JRCwgV2ViQ29yZTo6U2FtZVNpdGVTdHJpY3RFbmZvcmNl
bWVudEVuYWJsZWQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAgdm9pZCBzZXRG
aXJzdFBhcnR5V2Vic2l0ZURhdGFSZW1vdmFsTW9kZUZvclRlc3RpbmcoUEFMOjpTZXNzaW9uSUQs
IFdlYkNvcmU6OkZpcnN0UGFydHlXZWJzaXRlRGF0YVJlbW92YWxNb2RlLCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKCk+JiYpOwogICAgIHZvaWQgc2V0VG9TYW1lU2l0ZVN0cmljdENvb2tpZXNGb3JU
ZXN0aW5nKFBBTDo6U2Vzc2lvbklELCBjb25zdCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYs
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CisgICAgdm9pZCBzZXRGaXJzdFBhcnR5SG9z
dENOQU1FRG9tYWluRm9yVGVzdGluZyhQQUw6OlNlc3Npb25JRCwgU3RyaW5nJiYgZmlyc3RQYXJ0
eUhvc3QsIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiYgY25hbWVEb21haW4sIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoKT4mJik7CisgICAgdm9pZCBzZXRUaGlyZFBhcnR5Q05BTUVEb21haW5G
b3JUZXN0aW5nKFBBTDo6U2Vzc2lvbklELCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYmLCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogI2VuZGlmCiAKICAgICB2b2lkIHNldEFkQ2xp
Y2tBdHRyaWJ1dGlvbkRlYnVnTW9kZShib29sKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLm1lc3NhZ2VzLmluCmluZGV4IDcwMjIyODVl
MzY4ODVkZTg2ZjJkYWY2ODg4YjAyNDcyOTkzNWNmNjQuLjAwMmVjZGI4MzNiMjk0MWFlODYxM2Zh
NjRmMDFkZjg5ODk2ZGYzNDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvTmV0d29ya1Byb2Nlc3MubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5tZXNzYWdlcy5pbgpAQCAtMTQ4LDYgKzE0OCw4IEBAIG1l
c3NhZ2VzIC0+IE5ldHdvcmtQcm9jZXNzIExlZ2FjeVJlY2VpdmVyIHsKICAgICBTZXRTaG91bGRF
bmJsZVNhbWVTaXRlU3RyaWN0RW5mb3JjZW1lbnRGb3JUZXN0aW5nKFBBTDo6U2Vzc2lvbklEIHNl
c3Npb25JRCwgZW51bTpib29sIFdlYkNvcmU6OlNhbWVTaXRlU3RyaWN0RW5mb3JjZW1lbnRFbmFi
bGVkIGVuYWJsZWQpIC0+ICgpIEFzeW5jCiAgICAgU2V0Rmlyc3RQYXJ0eVdlYnNpdGVEYXRhUmVt
b3ZhbE1vZGVGb3JUZXN0aW5nKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgZW51bTp1aW50OF90
IFdlYkNvcmU6OkZpcnN0UGFydHlXZWJzaXRlRGF0YVJlbW92YWxNb2RlIG1vZGUpIC0+ICgpIEFz
eW5jCiAgICAgU2V0VG9TYW1lU2l0ZVN0cmljdENvb2tpZXNGb3JUZXN0aW5nKFBBTDo6U2Vzc2lv
bklEIHNlc3Npb25JRCwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4gZG9tYWluKSAtPiAoKSBB
c3luYworICAgIFNldEZpcnN0UGFydHlIb3N0Q05BTUVEb21haW5Gb3JUZXN0aW5nKFBBTDo6U2Vz
c2lvbklEIHNlc3Npb25JRCwgU3RyaW5nIGZpcnN0UGFydHlIb3N0LCBXZWJDb3JlOjpSZWdpc3Ry
YWJsZURvbWFpbiBjbmFtZURvbWFpbikgLT4gKCkgQXN5bmMKKyAgICBTZXRUaGlyZFBhcnR5Q05B
TUVEb21haW5Gb3JUZXN0aW5nKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgV2ViQ29yZTo6UmVn
aXN0cmFibGVEb21haW4gZG9tYWluKSAtPiAoKSBBc3luYwogI2VuZGlmCiAKICAgICBTZXRBZENs
aWNrQXR0cmlidXRpb25EZWJ1Z01vZGUoYm9vbCBkZWJ1Z01vZGUpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uLmNwcCBiL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24uY3BwCmluZGV4IDZiNjZiY2YyMjIwYzM1
YmFlYTZkMmJiNThlMTMwMTg4ZDE2NjY4YTguLmE3Y2IxNzQ0OWM0ZjQ3MjM4YjE1Y2RhOTY2NDEz
YzBmYjg2MWZkZTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0
d29ya1Nlc3Npb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29y
a1Nlc3Npb24uY3BwCkBAIC05MCw2ICs5MCw3IEBAIE5ldHdvcmtTZXNzaW9uOjpOZXR3b3JrU2Vz
c2lvbihOZXR3b3JrUHJvY2VzcyYgbmV0d29ya1Byb2Nlc3MsIGNvbnN0IE5ldHdvcmtTZXNzCiAg
ICAgLCBtX3NhbWVTaXRlU3RyaWN0RW5mb3JjZW1lbnRFbmFibGVkKHBhcmFtZXRlcnMucmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc1BhcmFtZXRlcnMuc2FtZVNpdGVTdHJpY3RFbmZvcmNlbWVudEVuYWJs
ZWQpCiAgICAgLCBtX2ZpcnN0UGFydHlXZWJzaXRlRGF0YVJlbW92YWxNb2RlKHBhcmFtZXRlcnMu
cmVzb3VyY2VMb2FkU3RhdGlzdGljc1BhcmFtZXRlcnMuZmlyc3RQYXJ0eVdlYnNpdGVEYXRhUmVt
b3ZhbE1vZGUpCiAgICAgLCBtX3N0YW5kYWxvbmVBcHBsaWNhdGlvbkRvbWFpbihwYXJhbWV0ZXJz
LnJlc291cmNlTG9hZFN0YXRpc3RpY3NQYXJhbWV0ZXJzLnN0YW5kYWxvbmVBcHBsaWNhdGlvbkRv
bWFpbikKKyAgICAsIG1fY25hbWVDbG9ha2luZ01pdGlnYXRpb25FbmFibGVkKHBhcmFtZXRlcnMu
cmVzb3VyY2VMb2FkU3RhdGlzdGljc1BhcmFtZXRlcnMuY25hbWVDbG9ha2luZ01pdGlnYXRpb25F
bmFibGVkKQogI2VuZGlmCiAgICAgLCBtX2FkQ2xpY2tBdHRyaWJ1dGlvbihtYWtlVW5pcXVlUmVm
PEFkQ2xpY2tBdHRyaWJ1dGlvbk1hbmFnZXI+KG5ldHdvcmtQcm9jZXNzLCBwYXJhbWV0ZXJzLnNl
c3Npb25JRCkpCiAgICAgLCBtX3Rlc3RTcGVlZE11bHRpcGxpZXIocGFyYW1ldGVycy50ZXN0U3Bl
ZWRNdWx0aXBsaWVyKQpAQCAtMjgwLDYgKzI4MSw0NCBAQCB2b2lkIE5ldHdvcmtTZXNzaW9uOjpz
ZXRTaG91bGRFbmJsZVNhbWVTaXRlU3RyaWN0RW5mb3JjZW1lbnQoV2ViQ29yZTo6U2FtZVNpdGVT
dAogICAgIGlmIChtX3Jlc291cmNlTG9hZFN0YXRpc3RpY3MpCiAgICAgICAgIG1fcmVzb3VyY2VM
b2FkU3RhdGlzdGljcy0+c2V0U2FtZVNpdGVTdHJpY3RFbmZvcmNlbWVudEVuYWJsZWQoZW5hYmxl
ZCk7CiB9CisKK3ZvaWQgTmV0d29ya1Nlc3Npb246OnNldEZpcnN0UGFydHlIb3N0Q05BTUVEb21h
aW4oU3RyaW5nJiYgZmlyc3RQYXJ0eUhvc3QsIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiYg
Y25hbWVEb21haW4pCit7CisjaWYgSEFWRShDRk5FVFdPUktfQ05BTUVfQU5EX0NPT0tJRV9UUkFO
U0ZPUk1fU1BJKQorICAgIGlmICghY25hbWVDbG9ha2luZ01pdGlnYXRpb25FbmFibGVkKCkpCisg
ICAgICAgIHJldHVybjsKKworICAgIEFTU0VSVCghZmlyc3RQYXJ0eUhvc3QuaXNFbXB0eSgpICYm
ICFjbmFtZURvbWFpbi5pc0VtcHR5KCkgJiYgZmlyc3RQYXJ0eUhvc3QgIT0gY25hbWVEb21haW4u
c3RyaW5nKCkpOworICAgIGlmIChmaXJzdFBhcnR5SG9zdC5pc0VtcHR5KCkgfHwgY25hbWVEb21h
aW4uaXNFbXB0eSgpIHx8IGZpcnN0UGFydHlIb3N0ID09IGNuYW1lRG9tYWluLnN0cmluZygpKQor
ICAgICAgICByZXR1cm47CisgICAgbV9maXJzdFBhcnR5SG9zdENOQU1FRG9tYWlucy5hZGQoV1RG
TW92ZShmaXJzdFBhcnR5SG9zdCksIFdURk1vdmUoY25hbWVEb21haW4pKTsKKyNlbHNlCisgICAg
VU5VU0VEX1BBUkFNKGZpcnN0UGFydHlIb3N0KTsKKyAgICBVTlVTRURfUEFSQU0oY25hbWVEb21h
aW4pOworI2VuZGlmCit9CisKK09wdGlvbmFsPFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluPiBO
ZXR3b3JrU2Vzc2lvbjo6Zmlyc3RQYXJ0eUhvc3RDTkFNRURvbWFpbihjb25zdCBTdHJpbmcmIGZp
cnN0UGFydHlIb3N0KQoreworI2lmIEhBVkUoQ0ZORVRXT1JLX0NOQU1FX0FORF9DT09LSUVfVFJB
TlNGT1JNX1NQSSkKKyAgICBpZiAoIWNuYW1lQ2xvYWtpbmdNaXRpZ2F0aW9uRW5hYmxlZCgpKQor
ICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAgYXV0byBpdGVyYXRvciA9IG1fZmly
c3RQYXJ0eUhvc3RDTkFNRURvbWFpbnMuZmluZChmaXJzdFBhcnR5SG9zdCk7CisgICAgaWYgKGl0
ZXJhdG9yID09IG1fZmlyc3RQYXJ0eUhvc3RDTkFNRURvbWFpbnMuZW5kKCkpCisgICAgICAgIHJl
dHVybiBXVEY6Om51bGxvcHQ7CisgICAgcmV0dXJuIGl0ZXJhdG9yLT52YWx1ZTsKKyNlbHNlCisg
ICAgVU5VU0VEX1BBUkFNKGZpcnN0UGFydHlIb3N0KTsKKyAgICByZXR1cm4gV1RGOjpudWxsb3B0
OworI2VuZGlmCit9CisKK3ZvaWQgTmV0d29ya1Nlc3Npb246OnJlc2V0Q05BTUVEb21haW5EYXRh
KCkKK3sKKyAgICBtX2ZpcnN0UGFydHlIb3N0Q05BTUVEb21haW5zLmNsZWFyKCk7CisgICAgbV90
aGlyZFBhcnR5Q05BTUVEb21haW5Gb3JUZXN0aW5nID0gV1RGOjpudWxsb3B0OworfQogI2VuZGlm
IC8vIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCiAKIHZvaWQgTmV0d29ya1Nlc3Np
b246OnN0b3JlQWRDbGlja0F0dHJpYnV0aW9uKFdlYkNvcmU6OkFkQ2xpY2tBdHRyaWJ1dGlvbiYm
IGFkQ2xpY2tBdHRyaWJ1dGlvbikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvTmV0d29ya1Nlc3Npb24uaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0
d29ya1Nlc3Npb24uaAppbmRleCAzODJiZjgwNTlmYzA5OGZlZGZhNTJhMTg4NTQxZTc0YmY5ZTc0
MzdkLi41ZDNlZjBlZjZlYjExZjUwMWNiZmM4NGIzODdhNzlhNDgzNmM5OWFjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uLmgKKysrIGIvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5oCkBAIC0xMDUsNiArMTA1
LDEzIEBAIHB1YmxpYzoKICAgICBib29sIHNob3VsZERvd25ncmFkZVJlZmVycmVyKCkgY29uc3Q7
CiAgICAgdm9pZCBzZXRUaGlyZFBhcnR5Q29va2llQmxvY2tpbmdNb2RlKFdlYkNvcmU6OlRoaXJk
UGFydHlDb29raWVCbG9ja2luZ01vZGUpOwogICAgIHZvaWQgc2V0U2hvdWxkRW5ibGVTYW1lU2l0
ZVN0cmljdEVuZm9yY2VtZW50KFdlYkNvcmU6OlNhbWVTaXRlU3RyaWN0RW5mb3JjZW1lbnRFbmFi
bGVkKTsKKyAgICB2b2lkIHNldENOQU1FQ2xvYWtpbmdNaXRpZ2F0aW9uRW5hYmxlZChXZWJDb3Jl
OjpDTkFNRUNsb2FraW5nTWl0aWdhdGlvbkVuYWJsZWQgdmFsdWUpIHsgbV9jbmFtZUNsb2FraW5n
TWl0aWdhdGlvbkVuYWJsZWQgPSB2YWx1ZTsgfQorICAgIGJvb2wgY25hbWVDbG9ha2luZ01pdGln
YXRpb25FbmFibGVkKCkgY29uc3QgeyByZXR1cm4gbV9jbmFtZUNsb2FraW5nTWl0aWdhdGlvbkVu
YWJsZWQgPT0gV2ViQ29yZTo6Q05BTUVDbG9ha2luZ01pdGlnYXRpb25FbmFibGVkOjpZZXM7IH0K
KyAgICB2b2lkIHNldEZpcnN0UGFydHlIb3N0Q05BTUVEb21haW4oU3RyaW5nJiYgZmlyc3RQYXJ0
eUhvc3QsIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiYgY25hbWVEb21haW4pOworICAgIE9w
dGlvbmFsPFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluPiBmaXJzdFBhcnR5SG9zdENOQU1FRG9t
YWluKGNvbnN0IFN0cmluZyYgZmlyc3RQYXJ0eUhvc3QpOworICAgIHZvaWQgc2V0VGhpcmRQYXJ0
eUNOQU1FRG9tYWluRm9yVGVzdGluZyhXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYmIGRvbWFp
bikgeyBtX3RoaXJkUGFydHlDTkFNRURvbWFpbkZvclRlc3RpbmcgPSBXVEZNb3ZlKGRvbWFpbik7
IH07CisgICAgT3B0aW9uYWw8V2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4+IHRoaXJkUGFydHlD
TkFNRURvbWFpbkZvclRlc3RpbmcoKSBjb25zdCB7IHJldHVybiBtX3RoaXJkUGFydHlDTkFNRURv
bWFpbkZvclRlc3Rpbmc7IH0KKyAgICB2b2lkIHJlc2V0Q05BTUVEb21haW5EYXRhKCk7CiAgICAg
dm9pZCBkZXN0cm95UmVzb3VyY2VMb2FkU3RhdGlzdGljcyhDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KCk+JiYpOwogICAgIHZvaWQgZmx1c2hBbmREZXN0cm95UGVyc2lzdGVudFN0b3JlKENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoKT4mJik7CiAjZW5kaWYKQEAgLTE2Niw2ICsxNzMsOSBAQCBwcm90ZWN0
ZWQ6CiAgICAgV2ViQ29yZTo6U2FtZVNpdGVTdHJpY3RFbmZvcmNlbWVudEVuYWJsZWQgbV9zYW1l
U2l0ZVN0cmljdEVuZm9yY2VtZW50RW5hYmxlZCB7IFdlYkNvcmU6OlNhbWVTaXRlU3RyaWN0RW5m
b3JjZW1lbnRFbmFibGVkOjpObyB9OwogICAgIFdlYkNvcmU6OkZpcnN0UGFydHlXZWJzaXRlRGF0
YVJlbW92YWxNb2RlIG1fZmlyc3RQYXJ0eVdlYnNpdGVEYXRhUmVtb3ZhbE1vZGUgeyBXZWJDb3Jl
OjpGaXJzdFBhcnR5V2Vic2l0ZURhdGFSZW1vdmFsTW9kZTo6QWxsQnV0Q29va2llcyB9OwogICAg
IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIG1fc3RhbmRhbG9uZUFwcGxpY2F0aW9uRG9tYWlu
OworICAgIFdlYkNvcmU6OkNOQU1FQ2xvYWtpbmdNaXRpZ2F0aW9uRW5hYmxlZCBtX2NuYW1lQ2xv
YWtpbmdNaXRpZ2F0aW9uRW5hYmxlZCB7IFdlYkNvcmU6OkNOQU1FQ2xvYWtpbmdNaXRpZ2F0aW9u
RW5hYmxlZDo6Tm8gfTsKKyAgICBIYXNoTWFwPFN0cmluZywgV2ViQ29yZTo6UmVnaXN0cmFibGVE
b21haW4+IG1fZmlyc3RQYXJ0eUhvc3RDTkFNRURvbWFpbnM7CisgICAgT3B0aW9uYWw8V2ViQ29y
ZTo6UmVnaXN0cmFibGVEb21haW4+IG1fdGhpcmRQYXJ0eUNOQU1FRG9tYWluRm9yVGVzdGluZzsK
ICNlbmRpZgogICAgIGJvb2wgbV9pc1N0YWxlV2hpbGVSZXZhbGlkYXRlRW5hYmxlZCB7IGZhbHNl
IH07CiAgICAgVW5pcXVlUmVmPEFkQ2xpY2tBdHRyaWJ1dGlvbk1hbmFnZXI+IG1fYWRDbGlja0F0
dHJpYnV0aW9uOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2Nv
YS9OZXR3b3JrRGF0YVRhc2tDb2NvYS5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9j
b2NvYS9OZXR3b3JrRGF0YVRhc2tDb2NvYS5oCmluZGV4IDJjMWQ4OGNhY2MzZTk5OTRmYTljODI5
NjEyODgxNGVjOWU5YTY3M2MuLjBmNTFjODM1MjhlMmE3MGI5ODE0MzNiZjdiMTllNTc5ZWM5NzY3
YjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29y
a0RhdGFUYXNrQ29jb2EuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29h
L05ldHdvcmtEYXRhVGFza0NvY29hLmgKQEAgLTM0LDYgKzM0LDEwIEBACiBPQkpDX0NMQVNTIE5T
SFRUUENvb2tpZVN0b3JhZ2U7CiBPQkpDX0NMQVNTIE5TVVJMU2Vzc2lvbkRhdGFUYXNrOwogCitu
YW1lc3BhY2UgV2ViQ29yZSB7CitjbGFzcyBSZWdpc3RyYWJsZURvbWFpbjsKK30KKwogbmFtZXNw
YWNlIFdlYktpdCB7CiAKIGNsYXNzIERvd25sb2FkOwpAQCAtODcsNiArOTEsMTAgQEAgcHJpdmF0
ZToKIAogI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCiAgICAgc3RhdGljIE5T
SFRUUENvb2tpZVN0b3JhZ2UgKnN0YXRlbGVzc0Nvb2tpZVN0b3JhZ2UoKTsKKyNpZiBIQVZFKENG
TkVUV09SS19DTkFNRV9BTkRfQ09PS0lFX1RSQU5TRk9STV9TUEkpCisgICAgdm9pZCB1cGRhdGVG
aXJzdFBhcnR5SW5mb0ZvclRhc2tBbmRTZXNzaW9uKGNvbnN0IFVSTCYpOworICAgIHZvaWQgYXBw
bHlDb29raWVQb2xpY3lGb3JUaGlyZFBhcnR5Q05BTUVDbG9ha2luZyhjb25zdCBXZWJDb3JlOjpS
ZXNvdXJjZVJlcXVlc3QmKTsKKyNlbmRpZgogICAgIHZvaWQgYmxvY2tDb29raWVzKCk7CiAgICAg
dm9pZCB1bmJsb2NrQ29va2llcygpOwogICAgIGJvb2wgbmVlZHNGaXJzdFBhcnR5Q29va2llQmxv
Y2tpbmdMYXRjaE1vZGVRdWlyayhjb25zdCBVUkwmIGZpcnN0UGFydHlVUkwsIGNvbnN0IFVSTCYg
cmVxdWVzdFVSTCwgY29uc3QgVVJMJiByZWRpcmVjdGluZ1VSTCkgY29uc3Q7CkBAIC0xMDIsNiAr
MTEwLDEwIEBAIHByaXZhdGU6CiAKICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNT
KQogICAgIGJvb2wgbV9oYXNCZWVuU2V0VG9Vc2VTdGF0ZWxlc3NDb29raWVTdG9yYWdlIHsgZmFs
c2UgfTsKKyNpZiBIQVZFKENGTkVUV09SS19DTkFNRV9BTkRfQ09PS0lFX1RSQU5TRk9STV9TUEkp
CisgICAgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4gbV9maXJzdFBhcnR5UmVnaXN0cmFibGVE
b21haW47CisgICAgU2Vjb25kcyBtX2FnZUNhcEZvckNOQU1FQ2xvYWtlZENvb2tpZXMgeyAyNF9o
ICogNyB9OworI2VuZGlmCiAjZW5kaWYKIAogICAgIGJvb2wgbV9pc0Zvck1haW5SZXNvdXJjZU5h
dmlnYXRpb25Gb3JBbnlGcmFtZSB7IGZhbHNlIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtEYXRhVGFza0NvY29hLm1tIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrRGF0YVRhc2tDb2NvYS5tbQppbmRleCA3
N2I3ZDEzNDU0NGMxNDQ2MmRmZDhhZTJmMDJmODNjZjllMzdkNjA0Li4yMWVkZWE5MzhmZmY2ZmZj
YWZiOGE0YzhiZmQ0MDA2M2YyNmVjODhmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL2NvY29hL05ldHdvcmtEYXRhVGFza0NvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya0RhdGFUYXNrQ29jb2EubW0KQEAgLTM4LDYg
KzM4LDcgQEAKICNpbXBvcnQgPFdlYkNvcmUvQXV0aGVudGljYXRpb25DaGFsbGVuZ2UuaD4KICNp
bXBvcnQgPFdlYkNvcmUvTmV0d29ya1N0b3JhZ2VTZXNzaW9uLmg+CiAjaW1wb3J0IDxXZWJDb3Jl
L05vdEltcGxlbWVudGVkLmg+CisjaW1wb3J0IDxXZWJDb3JlL1JlZ2lzdHJhYmxlRG9tYWluLmg+
CiAjaW1wb3J0IDxXZWJDb3JlL1Jlc291cmNlUmVxdWVzdC5oPgogI2ltcG9ydCA8cGFsL3NwaS9j
Zi9DRk5ldHdvcmtTUEkuaD4KICNpbXBvcnQgPHd0Zi9CbG9ja1B0ci5oPgpAQCAtMTI5LDYgKzEz
MCw4NiBAQCBOU0hUVFBDb29raWVTdG9yYWdlICpOZXR3b3JrRGF0YVRhc2tDb2NvYTo6c3RhdGVs
ZXNzQ29va2llU3RvcmFnZSgpCiAgICAgcmV0dXJuIHN0YXRlbGVzc0Nvb2tpZVN0b3JhZ2UuZ2V0
KCkuZ2V0KCk7CiB9CiAKKyNpZiBIQVZFKENGTkVUV09SS19DTkFNRV9BTkRfQ09PS0lFX1RSQU5T
Rk9STV9TUEkpCitzdGF0aWMgYm9vbCBoYXNDTkFNRUFuZENvb2tpZVRyYW5zZm9ybVNQSShOU1VS
TFNlc3Npb25EYXRhVGFzayogdGFzaykKK3sKKyAgICByZXR1cm4gW3Rhc2sgcmVzcG9uZHNUb1Nl
bGVjdG9yOkBzZWxlY3RvcihfY29va2llVHJhbnNmb3JtQ2FsbGJhY2spXQorICAgICAgICAmJiBb
dGFzayByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKF9yZXNvbHZlZENOQU1FQ2hhaW4pXTsK
K30KKworc3RhdGljIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIGxhc3RDTkFNRURvbWFpbihO
U0FycmF5PE5TU3RyaW5nKj4qIGNuYW1lcykKK3sKKyAgICBpZiAoYXV0byogbGFzdFJlc29sdmVk
Q05BTUVJbkNoYWluID0gW2NuYW1lcyBsYXN0T2JqZWN0XSkgeworICAgICAgICBhdXRvIGNuYW1l
ID0gU3RyaW5nKGxhc3RSZXNvbHZlZENOQU1FSW5DaGFpbik7CisgICAgICAgIGlmIChjbmFtZS5l
bmRzV2l0aCgnLicpKQorICAgICAgICAgICAgY25hbWUucmVtb3ZlKGNuYW1lLmxlbmd0aCgpIC0g
MSk7CisgICAgICAgIHJldHVybiBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbjo6dW5jaGVja2Vk
Q3JlYXRlRnJvbUhvc3QoY25hbWUpOworICAgIH0KKworICAgIHJldHVybiBXZWJDb3JlOjpSZWdp
c3RyYWJsZURvbWFpbjo6dW5jaGVja2VkQ3JlYXRlRnJvbUhvc3QoZW1wdHlTdHJpbmcoKSk7Cit9
CisKK3ZvaWQgTmV0d29ya0RhdGFUYXNrQ29jb2E6OnVwZGF0ZUZpcnN0UGFydHlJbmZvRm9yVGFz
a0FuZFNlc3Npb24oY29uc3QgVVJMJiByZXF1ZXN0VVJMKQoreworICAgIGlmICghaGFzQ05BTUVB
bmRDb29raWVUcmFuc2Zvcm1TUEkobV90YXNrLmdldCgpKSB8fCAhbmV0d29ya1Nlc3Npb24oKSB8
fCAhbmV0d29ya1Nlc3Npb24oKS0+bmV0d29ya1N0b3JhZ2VTZXNzaW9uKCkgfHwgIW5ldHdvcmtT
ZXNzaW9uKCktPm5ldHdvcmtTdG9yYWdlU2Vzc2lvbigpLT5yZXNvdXJjZUxvYWRTdGF0aXN0aWNz
RW5hYmxlZCgpIHx8ICFuZXR3b3JrU2Vzc2lvbigpLT5jbmFtZUNsb2FraW5nTWl0aWdhdGlvbkVu
YWJsZWQoKSB8fCByZXF1ZXN0VVJMLmhvc3QoKS5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybjsK
KworICAgIGF1dG8mJiBjbmFtZURvbWFpbiA9IGxhc3RDTkFNRURvbWFpbihbbV90YXNrIF9yZXNv
bHZlZENOQU1FQ2hhaW5dKTsKKyAgICBpZiAoIWNuYW1lRG9tYWluLmlzRW1wdHkoKSAmJiBjbmFt
ZURvbWFpbiAhPSBtX2ZpcnN0UGFydHlSZWdpc3RyYWJsZURvbWFpbikKKyAgICAgICAgbmV0d29y
a1Nlc3Npb24oKS0+c2V0Rmlyc3RQYXJ0eUhvc3RDTkFNRURvbWFpbihyZXF1ZXN0VVJMLmhvc3Qo
KS50b1N0cmluZygpLCBXVEZNb3ZlKGNuYW1lRG9tYWluKSk7Cit9CisKK3ZvaWQgTmV0d29ya0Rh
dGFUYXNrQ29jb2E6OmFwcGx5Q29va2llUG9saWN5Rm9yVGhpcmRQYXJ0eUNOQU1FQ2xvYWtpbmco
Y29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0KQoreworICAgIGlmICghaGFz
Q05BTUVBbmRDb29raWVUcmFuc2Zvcm1TUEkobV90YXNrLmdldCgpKSB8fCBpc1RvcExldmVsTmF2
aWdhdGlvbigpIHx8ICFuZXR3b3JrU2Vzc2lvbigpIHx8ICFuZXR3b3JrU2Vzc2lvbigpLT5uZXR3
b3JrU3RvcmFnZVNlc3Npb24oKSB8fCAhbmV0d29ya1Nlc3Npb24oKS0+bmV0d29ya1N0b3JhZ2VT
ZXNzaW9uKCktPnJlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkKCkgfHwgIW5ldHdvcmtTZXNz
aW9uKCktPmNuYW1lQ2xvYWtpbmdNaXRpZ2F0aW9uRW5hYmxlZCgpKQorICAgICAgICByZXR1cm47
CisKKyAgICBpZiAoaXNUaGlyZFBhcnR5UmVxdWVzdChyZXF1ZXN0KSkgeworICAgICAgICBtX3Rh
c2suZ2V0KCkuX2Nvb2tpZVRyYW5zZm9ybUNhbGxiYWNrID0gbmlsOworICAgICAgICByZXR1cm47
CisgICAgfQorCisgICAgLy8gQ2FwIGV4cGlyeSBvZiBpbmNvbWluZyBjb29raWVzIGluIHJlc3Bv
bnNlIGlmIGl0IGlzIGEgc2FtZS1zaXRlCisgICAgLy8gc3VicmVzb3VyY2UgYnV0IGl0IHJlc29s
dmVzIHRvIGEgZGlmZmVyZW50IENOQU1FIHRoYW4gdGhlIHRvcAorICAgIC8vIHNpdGUgcmVxdWVz
dCwgYS5rLmEuIHRoaXJkLXBhcnR5IENOQU1FIGNsb2FraW5nLgorICAgIGF1dG8gZmlyc3RQYXJ0
eVVSTCA9IHJlcXVlc3QuZmlyc3RQYXJ0eUZvckNvb2tpZXMoKTsKKyAgICBhdXRvIGZpcnN0UGFy
dHlIb3N0Q05BTUUgPSBuZXR3b3JrU2Vzc2lvbigpLT5maXJzdFBhcnR5SG9zdENOQU1FRG9tYWlu
KGZpcnN0UGFydHlVUkwuaG9zdCgpLnRvU3RyaW5nKCkpOworCisgICAgbV90YXNrLmdldCgpLl9j
b29raWVUcmFuc2Zvcm1DYWxsYmFjayA9IG1ha2VCbG9ja1B0cihbcmVxdWVzdFVSTCA9IGNyb3Nz
VGhyZWFkQ29weShyZXF1ZXN0LnVybCgpKSwgZmlyc3RQYXJ0eVVSTCA9IGNyb3NzVGhyZWFkQ29w
eShmaXJzdFBhcnR5VVJMKSwgZmlyc3RQYXJ0eUhvc3RDTkFNRSA9IGNyb3NzVGhyZWFkQ29weShm
aXJzdFBhcnR5SG9zdENOQU1FKSwgdGhpcmRQYXJ0eUNOQU1FRG9tYWluRm9yVGVzdGluZyA9IGNy
b3NzVGhyZWFkQ29weShuZXR3b3JrU2Vzc2lvbigpLT50aGlyZFBhcnR5Q05BTUVEb21haW5Gb3JU
ZXN0aW5nKCkpLCBhZ2VDYXBGb3JDTkFNRUNsb2FrZWRDb29raWVzID0gY3Jvc3NUaHJlYWRDb3B5
KG1fYWdlQ2FwRm9yQ05BTUVDbG9ha2VkQ29va2llcyksIHRhc2sgPSBtX3Rhc2tdIChOU0FycmF5
PE5TSFRUUENvb2tpZSo+ICpjb29raWVzU2V0SW5SZXNwb25zZSkgLT4gTlNBcnJheTxOU0hUVFBD
b29raWUqPiAqIHsKKyAgICAgICAgaWYgKCFbY29va2llc1NldEluUmVzcG9uc2UgY291bnRdKQor
ICAgICAgICAgICAgcmV0dXJuIGNvb2tpZXNTZXRJblJlc3BvbnNlOworCisgICAgICAgIGF1dG8g
Y25hbWVEb21haW4gPSBsYXN0Q05BTUVEb21haW4oW3Rhc2sgX3Jlc29sdmVkQ05BTUVDaGFpbl0p
OworICAgICAgICBpZiAoY25hbWVEb21haW4uaXNFbXB0eSgpKSB7CisgICAgICAgICAgICBpZiAo
IXRoaXJkUGFydHlDTkFNRURvbWFpbkZvclRlc3RpbmcpCisgICAgICAgICAgICAgICAgcmV0dXJu
IGNvb2tpZXNTZXRJblJlc3BvbnNlOworICAgICAgICAgICAgY25hbWVEb21haW4gPSAqdGhpcmRQ
YXJ0eUNOQU1FRG9tYWluRm9yVGVzdGluZzsKKyAgICAgICAgfQorCisKKyAgICAgICAgLy8gQ05B
TUUgY2xvYWtpbmcgaXMgYSBmaXJzdC1wYXJ0eSBzdWIgcmVzb3VyY2UgdGhhdCByZXNvbHZlcwor
ICAgICAgICAvLyB0aHJvdWdoIGEgQ05BTUUgdGhhdCBkaWZmZXJzIGZyb20gdGhlIGZpcnN0LXBh
cnR5IGRvbWFpbiBhbmQKKyAgICAgICAgLy8gYWxzbyBkaWZmZXJzIGZyb20gdGhlIHRvcCBmcmFt
ZSBob3N0J3MgQ05BTUUsIGlmIG9uZSBleGlzdHMuCisgICAgICAgIGlmICghY25hbWVEb21haW4u
bWF0Y2hlcyhmaXJzdFBhcnR5VVJMKSAmJiAoIWZpcnN0UGFydHlIb3N0Q05BTUUgfHwgY25hbWVE
b21haW4gIT0gKmZpcnN0UGFydHlIb3N0Q05BTUUpKSB7CisKKyAgICAgICAgICAgIE5TVUludGVn
ZXIgY291bnQgPSBbY29va2llc1NldEluUmVzcG9uc2UgY291bnRdOworICAgICAgICAgICAgLy8g
RG9uJ3QgdXNlIFJldGFpblB0ciBoZXJlLiBUaGlzIGFycmF5IGhhcyB0byBiZSByZXRhaW5lZCBh
bmQKKyAgICAgICAgICAgIC8vIGF1dG8gcmVsZWFzZWQgdG8gbm90IGJlIHJlbGVhc2VkIGJlZm9y
ZSByZXR1cm5lZCB0byB0aGUgY29kZQorICAgICAgICAgICAgLy8gZXhlY3V0aW5nIHRoZSBibG9j
ay4KKyAgICAgICAgICAgIGF1dG8qIGNhcHBlZENvb2tpZXMgPSBbW05TTXV0YWJsZUFycmF5IGFs
bG9jXSBpbml0V2l0aENhcGFjaXR5OmNvdW50XTsKKyAgICAgICAgICAgIGZvciAoTlNVSW50ZWdl
ciBpID0gMDsgaSA8IGNvdW50OyArK2kpIHsKKyAgICAgICAgICAgICAgICBOU0hUVFBDb29raWUg
KmNvb2tpZSA9IChOU0hUVFBDb29raWUgKilbY29va2llc1NldEluUmVzcG9uc2Ugb2JqZWN0QXRJ
bmRleDppXTsKKyAgICAgICAgICAgICAgICBjb29raWUgPSBXZWJDb3JlOjpOZXR3b3JrU3RvcmFn
ZVNlc3Npb246OmNhcEV4cGlyeU9mUGVyc2lzdGVudENvb2tpZShjb29raWUsIGFnZUNhcEZvckNO
QU1FQ2xvYWtlZENvb2tpZXMpOworICAgICAgICAgICAgICAgIFtjYXBwZWRDb29raWVzIGFkZE9i
amVjdDpjb29raWVdOworICAgICAgICAgICAgfQorICAgICAgICAgICAgcmV0dXJuIGNhcHBlZENv
b2tpZXM7CisgICAgICAgIH0KKworICAgICAgICByZXR1cm4gY29va2llc1NldEluUmVzcG9uc2U7
CisgICAgfSkuZ2V0KCk7Cit9CisjZW5kaWYKKwogdm9pZCBOZXR3b3JrRGF0YVRhc2tDb2NvYTo6
YmxvY2tDb29raWVzKCkKIHsKICAgICBBU1NFUlQoaGFzUHJvY2Vzc1ByaXZpbGVnZShQcm9jZXNz
UHJpdmlsZWdlOjpDYW5BY2Nlc3NSYXdDb29raWVzKSk7CkBAIC0yNjMsNiArMzQ0LDkgQEAgTmV0
d29ya0RhdGFUYXNrQ29jb2E6Ok5ldHdvcmtEYXRhVGFza0NvY29hKE5ldHdvcmtTZXNzaW9uJiBz
ZXNzaW9uLCBOZXR3b3JrRGF0YVQKICAgICB9CiAKICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9T
VEFUSVNUSUNTKQorI2lmIEhBVkUoQ0ZORVRXT1JLX0NOQU1FX0FORF9DT09LSUVfVFJBTlNGT1JN
X1NQSSkKKyAgICBhcHBseUNvb2tpZVBvbGljeUZvclRoaXJkUGFydHlDTkFNRUNsb2FraW5nKHJl
cXVlc3QpOworI2VuZGlmCiAgICAgaWYgKHNob3VsZEJsb2NrQ29va2llcykgewogI2lmICFSRUxF
QVNFX0xPR19ESVNBQkxFRAogICAgICAgICBpZiAobV9zZXNzaW9uLT5zaG91bGRMb2dDb29raWVJ
bmZvcm1hdGlvbigpKQpAQCAtMzQ1LDYgKzQyOSwxMCBAQCB2b2lkIE5ldHdvcmtEYXRhVGFza0Nv
Y29hOjpkaWRSZWNlaXZlRGF0YShSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmIGRhdGEpCiB2
b2lkIE5ldHdvcmtEYXRhVGFza0NvY29hOjpkaWRSZWNlaXZlUmVzcG9uc2UoV2ViQ29yZTo6UmVz
b3VyY2VSZXNwb25zZSYmIHJlc3BvbnNlLCBOZWdvdGlhdGVkTGVnYWN5VExTIG5lZ290aWF0ZWRM
ZWdhY3lUTFMsIFdlYktpdDo6UmVzcG9uc2VDb21wbGV0aW9uSGFuZGxlciYmIGNvbXBsZXRpb25I
YW5kbGVyKQogewogICAgIFdURkVtaXRTaWducG9zdChtX3Rhc2suZ2V0KCksICJEYXRhVGFzayIs
ICJyZWNlaXZlZCByZXNwb25zZSBoZWFkZXJzIik7CisjaWYgSEFWRShDRk5FVFdPUktfQ05BTUVf
QU5EX0NPT0tJRV9UUkFOU0ZPUk1fU1BJKQorICAgIGlmIChpc1RvcExldmVsTmF2aWdhdGlvbigp
KQorICAgICAgICB1cGRhdGVGaXJzdFBhcnR5SW5mb0ZvclRhc2tBbmRTZXNzaW9uKHJlc3BvbnNl
LnVybCgpKTsKKyNlbmRpZgogICAgIE5ldHdvcmtEYXRhVGFzazo6ZGlkUmVjZWl2ZVJlc3BvbnNl
KFdURk1vdmUocmVzcG9uc2UpLCBuZWdvdGlhdGVkTGVnYWN5VExTLCBXVEZNb3ZlKGNvbXBsZXRp
b25IYW5kbGVyKSk7CiB9CiAKQEAgLTM5OSw2ICs0ODcsOSBAQCB2b2lkIE5ldHdvcmtEYXRhVGFz
a0NvY29hOjp3aWxsUGVyZm9ybUhUVFBSZWRpcmVjdGlvbihXZWJDb3JlOjpSZXNvdXJjZVJlc3Bv
bnNlJgogICAgICAgICByZXF1ZXN0LnNldEZpcnN0UGFydHlGb3JDb29raWVzKHJlcXVlc3QudXJs
KCkpOwogCiAjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKKyNpZiBIQVZFKENG
TkVUV09SS19DTkFNRV9BTkRfQ09PS0lFX1RSQU5TRk9STV9TUEkpCisgICAgYXBwbHlDb29raWVQ
b2xpY3lGb3JUaGlyZFBhcnR5Q05BTUVDbG9ha2luZyhyZXF1ZXN0KTsKKyNlbmRpZgogICAgIGlm
ICghbV9oYXNCZWVuU2V0VG9Vc2VTdGF0ZWxlc3NDb29raWVTdG9yYWdlKSB7CiAgICAgICAgIGlm
IChtX3N0b3JlZENyZWRlbnRpYWxzUG9saWN5ID09IFdlYkNvcmU6OlN0b3JlZENyZWRlbnRpYWxz
UG9saWN5OjpFcGhlbWVyYWxTdGF0ZWxlc3MKICAgICAgICAgICAgIHx8IChtX3Nlc3Npb24tPm5l
dHdvcmtTdG9yYWdlU2Vzc2lvbigpICYmIG1fc2Vzc2lvbi0+bmV0d29ya1N0b3JhZ2VTZXNzaW9u
KCktPnNob3VsZEJsb2NrQ29va2llcyhyZXF1ZXN0LCBtX2ZyYW1lSUQsIG1fcGFnZUlELCBtX3No
b3VsZFJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nKSkpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGFyYW1ldGVycy5oIGIvU291cmNl
L1dlYktpdC9TaGFyZWQvUmVzb3VyY2VMb2FkU3RhdGlzdGljc1BhcmFtZXRlcnMuaAppbmRleCA2
MGRlMzVmNmFlOTU3ZDcwNjc1OTQ5NjQ3M2NlMzUxNjQyNDFlMmViLi5hY2IzNGVhYjExNjU3YzAz
M2M1MmFlM2FlYjAxODU4MjVlMGQ3NzhjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGFyYW1ldGVycy5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NQYXJhbWV0ZXJzLmgKQEAgLTQ1LDYgKzQ1LDcg
QEAgc3RydWN0IFJlc291cmNlTG9hZFN0YXRpc3RpY3NQYXJhbWV0ZXJzIHsKICNpZiBFTkFCTEUo
UkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQogICAgIFdlYkNvcmU6OlRoaXJkUGFydHlDb29raWVC
bG9ja2luZ01vZGUgdGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9kZSB7IFdlYkNvcmU6OlRoaXJk
UGFydHlDb29raWVCbG9ja2luZ01vZGU6OkFsbCB9OwogICAgIFdlYkNvcmU6OlNhbWVTaXRlU3Ry
aWN0RW5mb3JjZW1lbnRFbmFibGVkIHNhbWVTaXRlU3RyaWN0RW5mb3JjZW1lbnRFbmFibGVkIHsg
V2ViQ29yZTo6U2FtZVNpdGVTdHJpY3RFbmZvcmNlbWVudEVuYWJsZWQ6Ok5vIH07CisgICAgV2Vi
Q29yZTo6Q05BTUVDbG9ha2luZ01pdGlnYXRpb25FbmFibGVkIGNuYW1lQ2xvYWtpbmdNaXRpZ2F0
aW9uRW5hYmxlZCB7IFdlYkNvcmU6OkNOQU1FQ2xvYWtpbmdNaXRpZ2F0aW9uRW5hYmxlZDo6Tm8g
fTsKICNlbmRpZgogICAgIFdlYkNvcmU6OkZpcnN0UGFydHlXZWJzaXRlRGF0YVJlbW92YWxNb2Rl
IGZpcnN0UGFydHlXZWJzaXRlRGF0YVJlbW92YWxNb2RlIHsgV2ViQ29yZTo6Rmlyc3RQYXJ0eVdl
YnNpdGVEYXRhUmVtb3ZhbE1vZGU6OkFsbEJ1dENvb2tpZXMgfTsKICAgICBXZWJDb3JlOjpSZWdp
c3RyYWJsZURvbWFpbiBzdGFuZGFsb25lQXBwbGljYXRpb25Eb21haW47CkBAIC02Myw2ICs2NCw3
IEBAIHN0cnVjdCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGFyYW1ldGVycyB7CiAjaWYgRU5BQkxF
KFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKICAgICAgICAgZW5jb2RlciA8PCB0aGlyZFBhcnR5
Q29va2llQmxvY2tpbmdNb2RlOwogICAgICAgICBlbmNvZGVyIDw8IHNhbWVTaXRlU3RyaWN0RW5m
b3JjZW1lbnRFbmFibGVkOworICAgICAgICBlbmNvZGVyIDw8IGNuYW1lQ2xvYWtpbmdNaXRpZ2F0
aW9uRW5hYmxlZDsKICNlbmRpZgogICAgICAgICBlbmNvZGVyIDw8IGZpcnN0UGFydHlXZWJzaXRl
RGF0YVJlbW92YWxNb2RlOwogICAgICAgICBlbmNvZGVyIDw8IHN0YW5kYWxvbmVBcHBsaWNhdGlv
bkRvbWFpbjsKQEAgLTExNyw2ICsxMTksMTEgQEAgc3RydWN0IFJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NQYXJhbWV0ZXJzIHsKICAgICAgICAgZGVjb2RlciA+PiBzYW1lU2l0ZVN0cmljdEVuZm9yY2Vt
ZW50RW5hYmxlZDsKICAgICAgICAgaWYgKCFzYW1lU2l0ZVN0cmljdEVuZm9yY2VtZW50RW5hYmxl
ZCkKICAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICAgICAgT3B0aW9uYWw8
V2ViQ29yZTo6Q05BTUVDbG9ha2luZ01pdGlnYXRpb25FbmFibGVkPiBjbmFtZUNsb2FraW5nTWl0
aWdhdGlvbkVuYWJsZWQ7CisgICAgICAgIGRlY29kZXIgPj4gY25hbWVDbG9ha2luZ01pdGlnYXRp
b25FbmFibGVkOworICAgICAgICBpZiAoIWNuYW1lQ2xvYWtpbmdNaXRpZ2F0aW9uRW5hYmxlZCkK
KyAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiAjZW5kaWYKIAogICAgICAgICBPcHRp
b25hbDxXZWJDb3JlOjpGaXJzdFBhcnR5V2Vic2l0ZURhdGFSZW1vdmFsTW9kZT4gZmlyc3RQYXJ0
eVdlYnNpdGVEYXRhUmVtb3ZhbE1vZGU7CkBAIC0xNTAsNiArMTU3LDcgQEAgc3RydWN0IFJlc291
cmNlTG9hZFN0YXRpc3RpY3NQYXJhbWV0ZXJzIHsKICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9T
VEFUSVNUSUNTKQogICAgICAgICAgICAgV1RGTW92ZSgqdGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5n
TW9kZSksCiAgICAgICAgICAgICBXVEZNb3ZlKCpzYW1lU2l0ZVN0cmljdEVuZm9yY2VtZW50RW5h
YmxlZCksCisgICAgICAgICAgICBXVEZNb3ZlKCpjbmFtZUNsb2FraW5nTWl0aWdhdGlvbkVuYWJs
ZWQpLAogI2VuZGlmCiAgICAgICAgICAgICBXVEZNb3ZlKCpmaXJzdFBhcnR5V2Vic2l0ZURhdGFS
ZW1vdmFsTW9kZSksCiAgICAgICAgICAgICBXVEZNb3ZlKCpzdGFuZGFsb25lQXBwbGljYXRpb25E
b21haW4pLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUHJlZmVyZW5jZXMu
eWFtbCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlByZWZlcmVuY2VzLnlhbWwKaW5kZXggODhh
ZTZhZTJkOWEzOTc0NzYxY2I5NzI0NjQ3ZmIzNjEzZGNiNTc2Mi4uOWFhOWYwNjExNDAzNzdiMWY3
ZWMxMGZmNjQ3ZDg1OWM0M2Q5ZmVkOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQv
V2ViUHJlZmVyZW5jZXMueWFtbAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQcmVmZXJl
bmNlcy55YW1sCkBAIC0yMDU2LDYgKzIwNTYsMTMgQEAgSXNTYW1lU2l0ZVN0cmljdEVuZm9yY2Vt
ZW50RW5hYmxlZDoKICAgaHVtYW5SZWFkYWJsZURlc2NyaXB0aW9uOiAiRW5hYmxlIFNhbWVTaXRl
IHN0cmljdCBlbmZvcmNlbWVudCB0byBtaXRpZ2F0ZSBib3VuY2UgdHJhY2tpbmciCiAgIGNhdGVn
b3J5OiBleHBlcmltZW50YWwKIAorSXNDTkFNRUNsb2FraW5nTWl0aWdhdGlvbkVuYWJsZWQ6Cisg
IHR5cGU6IGJvb2wKKyAgZGVmYXVsdFZhbHVlOiBmYWxzZQorICBodW1hblJlYWRhYmxlTmFtZTog
IkVuYWJsZSBDTkFNRSBjbG9ha2luZyBtaXRpZ2F0aW9uIChJVFApIgorICBodW1hblJlYWRhYmxl
RGVzY3JpcHRpb246ICJFbmFibGUgdGhpcmQtcGFydHkgQ05BTUUgY2xvYWtpbmcgbWl0aWdhdGlv
biB3aGVuIEludGVsbGlnZW50IFRyYWNraW5nIFByZXZlbnRpb24gaXMgZW5hYmxlZCIKKyAgY2F0
ZWdvcnk6IGV4cGVyaW1lbnRhbAorCiBJc0xvZ2dlZEluQVBJRW5hYmxlZDoKICAgICB0eXBlOiBi
b29sCiAgICAgZGVmYXVsdFZhbHVlOiBmYWxzZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0MvV0tXZWJzaXRlRGF0YVN0b3JlUmVmLmNwcCBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9DL1dLV2Vic2l0ZURhdGFTdG9yZVJlZi5jcHAKaW5kZXggODAwZTc1NDll
YTE3OTZmM2U3ZGIxMzVkNmIxNzA0ZDBkOGZiOTYzZC4uZjM1NjNlOTQ0MWNlNmIxNGI0MmNmY2U4
NWYxOWQ5ZDkyOTAwZDM1MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0MvV0tXZWJzaXRlRGF0YVN0b3JlUmVmLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQy9XS1dlYnNpdGVEYXRhU3RvcmVSZWYuY3BwCkBAIC02MjgsNiArNjI4LDI4IEBAIHZv
aWQgV0tXZWJzaXRlRGF0YVN0b3JlU2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc1RvU2FtZVNpdGVT
dHJpY3RDb29raWVzRm9yVGVzdGluCiAjZW5kaWYKIH0KIAordm9pZCBXS1dlYnNpdGVEYXRhU3Rv
cmVTZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRmlyc3RQYXJ0eUhvc3RDTkFNRURvbWFpbkZvclRl
c3RpbmcoV0tXZWJzaXRlRGF0YVN0b3JlUmVmIGRhdGFTdG9yZVJlZiwgV0tTdHJpbmdSZWYgZmly
c3RQYXJ0eVVSTFN0cmluZywgV0tTdHJpbmdSZWYgY25hbWVVUkxTdHJpbmcsIHZvaWQqIGNvbnRl
eHQsIFdLV2Vic2l0ZURhdGFTdG9yZVNldFJlc291cmNlTG9hZFN0YXRpc3RpY3NGaXJzdFBhcnR5
SG9zdENOQU1FRG9tYWluRm9yVGVzdGluZ0Z1bmN0aW9uIGNvbXBsZXRpb25IYW5kbGVyKQorewor
I2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCisgICAgV2ViS2l0Ojp0b0ltcGwo
ZGF0YVN0b3JlUmVmKS0+c2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0ZpcnN0UGFydHlIb3N0Q05B
TUVEb21haW5Gb3JUZXN0aW5nKFVSTChVUkwoKSwgV2ViS2l0Ojp0b0ltcGwoZmlyc3RQYXJ0eVVS
TFN0cmluZyktPnN0cmluZygpKSwgVVJMKFVSTCgpLCBXZWJLaXQ6OnRvSW1wbChjbmFtZVVSTFN0
cmluZyktPnN0cmluZygpKSwgW2NvbnRleHQsIGNvbXBsZXRpb25IYW5kbGVyXSB7CisgICAgICAg
IGNvbXBsZXRpb25IYW5kbGVyKGNvbnRleHQpOworICAgIH0pOworI2Vsc2UKKyAgICBjb21wbGV0
aW9uSGFuZGxlcihjb250ZXh0KTsKKyNlbmRpZgorfQorCit2b2lkIFdLV2Vic2l0ZURhdGFTdG9y
ZVNldFJlc291cmNlTG9hZFN0YXRpc3RpY3NUaGlyZFBhcnR5Q05BTUVEb21haW5Gb3JUZXN0aW5n
KFdLV2Vic2l0ZURhdGFTdG9yZVJlZiBkYXRhU3RvcmVSZWYsIFdLU3RyaW5nUmVmIGNuYW1lVVJM
U3RyaW5nLCB2b2lkKiBjb250ZXh0LCBXS1dlYnNpdGVEYXRhU3RvcmVTZXRSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzVGhpcmRQYXJ0eUNOQU1FRG9tYWluRm9yVGVzdGluZ0Z1bmN0aW9uIGNvbXBsZXRp
b25IYW5kbGVyKQoreworI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCisgICAg
V2ViS2l0Ojp0b0ltcGwoZGF0YVN0b3JlUmVmKS0+c2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc1Ro
aXJkUGFydHlDTkFNRURvbWFpbkZvclRlc3RpbmcoVVJMKFVSTCgpLCBXZWJLaXQ6OnRvSW1wbChj
bmFtZVVSTFN0cmluZyktPnN0cmluZygpKSwgW2NvbnRleHQsIGNvbXBsZXRpb25IYW5kbGVyXSB7
CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGNvbnRleHQpOworICAgIH0pOworI2Vsc2UKKyAg
ICBjb21wbGV0aW9uSGFuZGxlcihjb250ZXh0KTsKKyNlbmRpZgorfQorCiB2b2lkIFdLV2Vic2l0
ZURhdGFTdG9yZVNldEFwcEJvdW5kRG9tYWluc0ZvclRlc3RpbmcoV0tBcnJheVJlZiBvcmlnaW5V
UkxzUmVmLCB2b2lkKiBjb250ZXh0LCBXS1dlYnNpdGVEYXRhU3RvcmVTZXRBcHBCb3VuZERvbWFp
bnNGb3JUZXN0aW5nRnVuY3Rpb24gY29tcGxldGlvbkhhbmRsZXIpCiB7CiAjaWYgUExBVEZPUk0o
Q09DT0EpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1dlYnNp
dGVEYXRhU3RvcmVSZWYuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLV2Vic2l0
ZURhdGFTdG9yZVJlZi5oCmluZGV4IGQ4YjhkMWY0MGI4NjU0MzhhMjg4MTQzODA5N2ViYzBmMGM3
ZTFmZGMuLmViODJmYWQ0NDY4ZjZmMzQ3YjBiZDhkNDYyNGZjNWFkNjVkNzk5OTcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLV2Vic2l0ZURhdGFTdG9yZVJlZi5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLV2Vic2l0ZURhdGFTdG9yZVJl
Zi5oCkBAIC0xMzAsNiArMTMwLDEwIEBAIHR5cGVkZWYgdm9pZCAoKldLV2Vic2l0ZURhdGFTdG9y
ZVNldFJlc291cmNlTG9hZFN0YXRpc3RpY3NGaXJzdFBhcnR5V2Vic2l0ZURhdGFSCiBXS19FWFBP
UlQgdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVTZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRmlyc3RQ
YXJ0eVdlYnNpdGVEYXRhUmVtb3ZhbE1vZGVGb3JUZXN0aW5nKFdLV2Vic2l0ZURhdGFTdG9yZVJl
ZiBkYXRhU3RvcmVSZWYsIGJvb2wgZW5hYmxlZCwgdm9pZCogY29udGV4dCwgV0tXZWJzaXRlRGF0
YVN0b3JlU2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0ZpcnN0UGFydHlXZWJzaXRlRGF0YVJlbW92
YWxNb2RlRm9yVGVzdGluZ0Z1bmN0aW9uIGNvbXBsZXRpb25IYW5kbGVyKTsKIHR5cGVkZWYgdm9p
ZCAoKldLV2Vic2l0ZURhdGFTdG9yZVNldFJlc291cmNlTG9hZFN0YXRpc3RpY3NUb1NhbWVTaXRl
U3RyaWN0Q29va2llc0ZvclRlc3RpbmdGdW5jdGlvbikodm9pZCogZnVuY3Rpb25Db250ZXh0KTsK
IFdLX0VYUE9SVCB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZVNldFJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NUb1NhbWVTaXRlU3RyaWN0Q29va2llc0ZvclRlc3RpbmcoV0tXZWJzaXRlRGF0YVN0b3JlUmVm
IGRhdGFTdG9yZVJlZiwgV0tTdHJpbmdSZWYgaG9zdE5hbWUsIHZvaWQqIGNvbnRleHQsIFdLV2Vi
c2l0ZURhdGFTdG9yZVNldFJlc291cmNlTG9hZFN0YXRpc3RpY3NUb1NhbWVTaXRlU3RyaWN0Q29v
a2llc0ZvclRlc3RpbmdGdW5jdGlvbiBjb21wbGV0aW9uSGFuZGxlcik7Cit0eXBlZGVmIHZvaWQg
KCpXS1dlYnNpdGVEYXRhU3RvcmVTZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRmlyc3RQYXJ0eUhv
c3RDTkFNRURvbWFpbkZvclRlc3RpbmdGdW5jdGlvbikodm9pZCogZnVuY3Rpb25Db250ZXh0KTsK
K1dLX0VYUE9SVCB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZVNldFJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NGaXJzdFBhcnR5SG9zdENOQU1FRG9tYWluRm9yVGVzdGluZyhXS1dlYnNpdGVEYXRhU3RvcmVS
ZWYgZGF0YVN0b3JlUmVmLCBXS1N0cmluZ1JlZiBmaXJzdFBhcnR5VVJMU3RyaW5nLCBXS1N0cmlu
Z1JlZiBjbmFtZVVSTFN0cmluZywgdm9pZCogY29udGV4dCwgV0tXZWJzaXRlRGF0YVN0b3JlU2V0
UmVzb3VyY2VMb2FkU3RhdGlzdGljc0ZpcnN0UGFydHlIb3N0Q05BTUVEb21haW5Gb3JUZXN0aW5n
RnVuY3Rpb24gY29tcGxldGlvbkhhbmRsZXIpOwordHlwZWRlZiB2b2lkICgqV0tXZWJzaXRlRGF0
YVN0b3JlU2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc1RoaXJkUGFydHlDTkFNRURvbWFpbkZvclRl
c3RpbmdGdW5jdGlvbikodm9pZCogZnVuY3Rpb25Db250ZXh0KTsKK1dLX0VYUE9SVCB2b2lkIFdL
V2Vic2l0ZURhdGFTdG9yZVNldFJlc291cmNlTG9hZFN0YXRpc3RpY3NUaGlyZFBhcnR5Q05BTUVE
b21haW5Gb3JUZXN0aW5nKFdLV2Vic2l0ZURhdGFTdG9yZVJlZiBkYXRhU3RvcmVSZWYsIFdLU3Ry
aW5nUmVmIGNuYW1lVVJMU3RyaW5nLCB2b2lkKiBjb250ZXh0LCBXS1dlYnNpdGVEYXRhU3RvcmVT
ZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzVGhpcmRQYXJ0eUNOQU1FRG9tYWluRm9yVGVzdGluZ0Z1
bmN0aW9uIGNvbXBsZXRpb25IYW5kbGVyKTsKIHR5cGVkZWYgdm9pZCAoKldLV2Vic2l0ZURhdGFT
dG9yZVNldEFwcEJvdW5kRG9tYWluc0ZvclRlc3RpbmdGdW5jdGlvbikodm9pZCogZnVuY3Rpb25D
b250ZXh0KTsKIFdLX0VYUE9SVCB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZVNldEFwcEJvdW5kRG9t
YWluc0ZvclRlc3RpbmcoV0tBcnJheVJlZiBvcmlnaW5VUkxzUmVmLCB2b2lkKiBjb250ZXh0LCBX
S1dlYnNpdGVEYXRhU3RvcmVTZXRBcHBCb3VuZERvbWFpbnNGb3JUZXN0aW5nRnVuY3Rpb24gY29t
cGxldGlvbkhhbmRsZXIpOwogdHlwZWRlZiB2b2lkICgqV0tXZWJzaXRlRGF0YVN0b3JlU3RhdGlz
dGljc1Jlc2V0VG9Db25zaXN0ZW50U3RhdGVGdW5jdGlvbikodm9pZCogZnVuY3Rpb25Db250ZXh0
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1By
b2Nlc3NQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQ
cm9jZXNzUHJveHkuY3BwCmluZGV4IDIyN2M1ZGM0YmNkNmZkMmM1NTI5NzMwOWM2ZjNlMmE4Zjhh
OGYyN2IuLjFmYTkyOTU2OWExMDEwOWMzYTc4ZDZlYzAyZjIwMjZkYThkNTc0NDIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1By
b3h5LmNwcApAQCAtMTE5NSw2ICsxMTk1LDI1IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6
c2V0VG9TYW1lU2l0ZVN0cmljdENvb2tpZXNGb3JUZXN0aW5nKFBBTDo6U2Vzc2lvbklEIHNlCiAg
ICAgc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzczo6U2V0VG9TYW1l
U2l0ZVN0cmljdENvb2tpZXNGb3JUZXN0aW5nKHNlc3Npb25JRCwgZG9tYWluKSwgV1RGTW92ZShj
b21wbGV0aW9uSGFuZGxlcikpOwogfQogCit2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OnNldEZp
cnN0UGFydHlIb3N0Q05BTUVEb21haW5Gb3JUZXN0aW5nKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25J
RCwgY29uc3QgU3RyaW5nJiBmaXJzdFBhcnR5SG9zdCwgY29uc3QgUmVnaXN0cmFibGVEb21haW4m
IGNuYW1lRG9tYWluLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRs
ZXIpCit7CisgICAgaWYgKCFjYW5TZW5kTWVzc2FnZSgpKSB7CisgICAgICAgIGNvbXBsZXRpb25I
YW5kbGVyKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBzZW5kV2l0aEFzeW5jUmVw
bHkoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzOjpTZXRGaXJzdFBhcnR5SG9zdENOQU1FRG9tYWlu
Rm9yVGVzdGluZyhzZXNzaW9uSUQsIGZpcnN0UGFydHlIb3N0LCBjbmFtZURvbWFpbiksIFdURk1v
dmUoY29tcGxldGlvbkhhbmRsZXIpKTsKK30KKwordm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5Ojpz
ZXRUaGlyZFBhcnR5Q05BTUVEb21haW5Gb3JUZXN0aW5nKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25J
RCwgY29uc3QgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mIGRvbWFpbiwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIGlmICghY2FuU2VuZE1l
c3NhZ2UoKSkgeworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcigpOworICAgICAgICByZXR1cm47
CisgICAgfQorCisgICAgc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vz
czo6U2V0VGhpcmRQYXJ0eUNOQU1FRG9tYWluRm9yVGVzdGluZyhzZXNzaW9uSUQsIGRvbWFpbiks
IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKK30KIHZvaWQgTmV0d29ya1Byb2Nlc3NQcm94
eTo6c2V0RG9tYWluc1dpdGhVc2VySW50ZXJhY3Rpb24oSGFzaFNldDxXZWJDb3JlOjpSZWdpc3Ry
YWJsZURvbWFpbj4mJiBkb21haW5zKQogewogICAgIHByb2Nlc3NQb29sKCkuc2V0RG9tYWluc1dp
dGhVc2VySW50ZXJhY3Rpb24oV1RGTW92ZShkb21haW5zKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuaCBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oCmluZGV4IDg1NDUw
MmNiYzZlZGE0YTYwMGZjODFiMWJjMmUwMDFjNjYzOGRhNDIuLmE0MDk0MDQxNjUwODVhMjhmNjI4
MDU4MmYxZjQwNTI0Yjc5NWQ5NDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oCkBAIC0xODUsNiArMTg1LDggQEAgcHVi
bGljOgogICAgIHZvaWQgc2V0U2hvdWxkRW5ibGVTYW1lU2l0ZVN0cmljdEVuZm9yY2VtZW50Rm9y
VGVzdGluZyhQQUw6OlNlc3Npb25JRCwgV2ViQ29yZTo6U2FtZVNpdGVTdHJpY3RFbmZvcmNlbWVu
dEVuYWJsZWQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAgdm9pZCBzZXRGaXJz
dFBhcnR5V2Vic2l0ZURhdGFSZW1vdmFsTW9kZUZvclRlc3RpbmcoUEFMOjpTZXNzaW9uSUQsIFdl
YkNvcmU6OkZpcnN0UGFydHlXZWJzaXRlRGF0YVJlbW92YWxNb2RlLCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKCk+JiYpOwogICAgIHZvaWQgc2V0VG9TYW1lU2l0ZVN0cmljdENvb2tpZXNGb3JUZXN0
aW5nKFBBTDo6U2Vzc2lvbklELCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoKT4mJik7CisgICAgdm9pZCBzZXRGaXJzdFBhcnR5SG9zdENOQU1FRG9tYWlu
Rm9yVGVzdGluZyhQQUw6OlNlc3Npb25JRCwgY29uc3QgU3RyaW5nJiBmaXJzdFBhcnR5SG9zdCwg
Y29uc3QgUmVnaXN0cmFibGVEb21haW4mIGNuYW1lRG9tYWluLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKCk+JiYpOworICAgIHZvaWQgc2V0VGhpcmRQYXJ0eUNOQU1FRG9tYWluRm9yVGVzdGluZyhQ
QUw6OlNlc3Npb25JRCwgY29uc3QgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogICAgIHZvaWQgc2V0RG9tYWluc1dpdGhVc2VySW50ZXJh
Y3Rpb24oSGFzaFNldDxXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbj4mJik7CiAjZW5kaWYKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCmluZGV4IDYzM2RiZjJh
MTA0OTE5NTU5MjY0OTk3Yjc4MzE4N2NhNTIxZjRkOGMuLjZkNmIzNGQ3YWZkZjRjZTY0MDU5YzA2
ZmQxYzg4ZDUwYWM2ODZjNzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YlByb2Nlc3NQb29sLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNz
UG9vbC5jcHAKQEAgLTYwMSw2ICs2MDEsNyBAQCBOZXR3b3JrUHJvY2Vzc1Byb3h5JiBXZWJQcm9j
ZXNzUG9vbDo6ZW5zdXJlTmV0d29ya1Byb2Nlc3MoV2Vic2l0ZURhdGFTdG9yZSogd2l0aAogI2lm
IEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCiAgICAgV2ViQ29yZTo6VGhpcmRQYXJ0
eUNvb2tpZUJsb2NraW5nTW9kZSB0aGlyZFBhcnR5Q29va2llQmxvY2tpbmdNb2RlID0gV2ViQ29y
ZTo6VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9kZTo6QWxsOwogICAgIFdlYkNvcmU6OlNhbWVT
aXRlU3RyaWN0RW5mb3JjZW1lbnRFbmFibGVkIHNhbWVTaXRlU3RyaWN0RW5mb3JjZW1lbnRFbmFi
bGVkID0gV2ViQ29yZTo6U2FtZVNpdGVTdHJpY3RFbmZvcmNlbWVudEVuYWJsZWQ6Ok5vOworICAg
IFdlYkNvcmU6OkNOQU1FQ2xvYWtpbmdNaXRpZ2F0aW9uRW5hYmxlZCBjbmFtZUNsb2FraW5nTWl0
aWdhdGlvbkVuYWJsZWQgPSBXZWJDb3JlOjpDTkFNRUNsb2FraW5nTWl0aWdhdGlvbkVuYWJsZWQ6
Ok5vOwogI2VuZGlmCiAgICAgV2ViQ29yZTo6Rmlyc3RQYXJ0eVdlYnNpdGVEYXRhUmVtb3ZhbE1v
ZGUgZmlyc3RQYXJ0eVdlYnNpdGVEYXRhUmVtb3ZhbE1vZGUgPSBXZWJDb3JlOjpGaXJzdFBhcnR5
V2Vic2l0ZURhdGFSZW1vdmFsTW9kZTo6QWxsQnV0Q29va2llczsKICAgICBXZWJDb3JlOjpSZWdp
c3RyYWJsZURvbWFpbiBzdGFuZGFsb25lQXBwbGljYXRpb25Eb21haW47CkBAIC02MzQsNiArNjM1
LDcgQEAgTmV0d29ya1Byb2Nlc3NQcm94eSYgV2ViUHJvY2Vzc1Bvb2w6OmVuc3VyZU5ldHdvcmtQ
cm9jZXNzKFdlYnNpdGVEYXRhU3RvcmUqIHdpdGgKICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9T
VEFUSVNUSUNTKQogICAgICAgICAgICAgdGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9kZSA9IG5l
dHdvcmtTZXNzaW9uUGFyYW1ldGVycy5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGFyYW1ldGVycy50
aGlyZFBhcnR5Q29va2llQmxvY2tpbmdNb2RlOwogICAgICAgICAgICAgc2FtZVNpdGVTdHJpY3RF
bmZvcmNlbWVudEVuYWJsZWQgPSBuZXR3b3JrU2Vzc2lvblBhcmFtZXRlcnMucmVzb3VyY2VMb2Fk
U3RhdGlzdGljc1BhcmFtZXRlcnMuc2FtZVNpdGVTdHJpY3RFbmZvcmNlbWVudEVuYWJsZWQ7Cisg
ICAgICAgICAgICBjbmFtZUNsb2FraW5nTWl0aWdhdGlvbkVuYWJsZWQgPSBuZXR3b3JrU2Vzc2lv
blBhcmFtZXRlcnMucmVzb3VyY2VMb2FkU3RhdGlzdGljc1BhcmFtZXRlcnMuY25hbWVDbG9ha2lu
Z01pdGlnYXRpb25FbmFibGVkOwogI2VuZGlmCiAgICAgICAgICAgICBmaXJzdFBhcnR5V2Vic2l0
ZURhdGFSZW1vdmFsTW9kZSA9IG5ldHdvcmtTZXNzaW9uUGFyYW1ldGVycy5yZXNvdXJjZUxvYWRT
dGF0aXN0aWNzUGFyYW1ldGVycy5maXJzdFBhcnR5V2Vic2l0ZURhdGFSZW1vdmFsTW9kZTsKICAg
ICAgICAgICAgIHN0YW5kYWxvbmVBcHBsaWNhdGlvbkRvbWFpbiA9IG5ldHdvcmtTZXNzaW9uUGFy
YW1ldGVycy5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGFyYW1ldGVycy5zdGFuZGFsb25lQXBwbGlj
YXRpb25Eb21haW47CkBAIC02NjEsNiArNjYzLDcgQEAgTmV0d29ya1Byb2Nlc3NQcm94eSYgV2Vi
UHJvY2Vzc1Bvb2w6OmVuc3VyZU5ldHdvcmtQcm9jZXNzKFdlYnNpdGVEYXRhU3RvcmUqIHdpdGgK
ICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQogICAgICAgICAgICAgdGhpcmRQ
YXJ0eUNvb2tpZUJsb2NraW5nTW9kZSA9IG5ldHdvcmtTZXNzaW9uUGFyYW1ldGVycy5yZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzUGFyYW1ldGVycy50aGlyZFBhcnR5Q29va2llQmxvY2tpbmdNb2RlOwog
ICAgICAgICAgICAgc2FtZVNpdGVTdHJpY3RFbmZvcmNlbWVudEVuYWJsZWQgPSBuZXR3b3JrU2Vz
c2lvblBhcmFtZXRlcnMucmVzb3VyY2VMb2FkU3RhdGlzdGljc1BhcmFtZXRlcnMuc2FtZVNpdGVT
dHJpY3RFbmZvcmNlbWVudEVuYWJsZWQ7CisgICAgICAgICAgICBjbmFtZUNsb2FraW5nTWl0aWdh
dGlvbkVuYWJsZWQgPSBuZXR3b3JrU2Vzc2lvblBhcmFtZXRlcnMucmVzb3VyY2VMb2FkU3RhdGlz
dGljc1BhcmFtZXRlcnMuY25hbWVDbG9ha2luZ01pdGlnYXRpb25FbmFibGVkOwogI2VuZGlmCiAg
ICAgICAgICAgICBmaXJzdFBhcnR5V2Vic2l0ZURhdGFSZW1vdmFsTW9kZSA9IG5ldHdvcmtTZXNz
aW9uUGFyYW1ldGVycy5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGFyYW1ldGVycy5maXJzdFBhcnR5
V2Vic2l0ZURhdGFSZW1vdmFsTW9kZTsKICAgICAgICAgICAgIHN0YW5kYWxvbmVBcHBsaWNhdGlv
bkRvbWFpbiA9IG5ldHdvcmtTZXNzaW9uUGFyYW1ldGVycy5yZXNvdXJjZUxvYWRTdGF0aXN0aWNz
UGFyYW1ldGVycy5zdGFuZGFsb25lQXBwbGljYXRpb25Eb21haW47CkBAIC03MDQsNiArNzA3LDcg
QEAgTmV0d29ya1Byb2Nlc3NQcm94eSYgV2ViUHJvY2Vzc1Bvb2w6OmVuc3VyZU5ldHdvcmtQcm9j
ZXNzKFdlYnNpdGVEYXRhU3RvcmUqIHdpdGgKICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFU
SVNUSUNTKQogICAgICAgICB0aGlyZFBhcnR5Q29va2llQmxvY2tpbmdNb2RlLAogICAgICAgICBz
YW1lU2l0ZVN0cmljdEVuZm9yY2VtZW50RW5hYmxlZCwKKyAgICAgICAgY25hbWVDbG9ha2luZ01p
dGlnYXRpb25FbmFibGVkLAogI2VuZGlmCiAgICAgICAgIGZpcnN0UGFydHlXZWJzaXRlRGF0YVJl
bW92YWxNb2RlLAogICAgICAgICBzdGFuZGFsb25lQXBwbGljYXRpb25Eb21haW4sCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9Db2NvYS9XZWJzaXRlRGF0
YVN0b3JlQ29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9Db2Nv
YS9XZWJzaXRlRGF0YVN0b3JlQ29jb2EubW0KaW5kZXggZmIzYjIxZmQ5MzYyOGEzNGFlM2Q0ZGVj
ZmQ0ZTc5N2NmNjUzMWY2NS4uMjU3ZmI3YTI5MDFhY2VmZTRjZGFkMzBiZTI0YTBiNjAwOTMxNjNj
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvQ29jb2Ev
V2Vic2l0ZURhdGFTdG9yZUNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YnNpdGVEYXRhL0NvY29hL1dlYnNpdGVEYXRhU3RvcmVDb2NvYS5tbQpAQCAtOTQsNiArOTQsNyBA
QCB2b2lkIFdlYnNpdGVEYXRhU3RvcmU6OnBsYXRmb3JtU2V0TmV0d29ya1BhcmFtZXRlcnMoV2Vi
c2l0ZURhdGFTdG9yZVBhcmFtZXRlcnMmCiAgICAgYm9vbCBzaG91bGRMb2dDb29raWVJbmZvcm1h
dGlvbiA9IGZhbHNlOwogICAgIGJvb2wgZW5hYmxlUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RlYnVn
TW9kZSA9IGZhbHNlOwogICAgIGF1dG8gc2FtZVNpdGVTdHJpY3RFbmZvcmNlbWVudEVuYWJsZWQg
PSBXZWJDb3JlOjpTYW1lU2l0ZVN0cmljdEVuZm9yY2VtZW50RW5hYmxlZDo6Tm87CisgICAgYXV0
byBjbmFtZUNsb2FraW5nTWl0aWdhdGlvbkVuYWJsZWQgPSBXZWJDb3JlOjpDTkFNRUNsb2FraW5n
TWl0aWdhdGlvbkVuYWJsZWQ6Ok5vOwogICAgIGF1dG8gZmlyc3RQYXJ0eVdlYnNpdGVEYXRhUmVt
b3ZhbE1vZGUgPSBXZWJDb3JlOjpGaXJzdFBhcnR5V2Vic2l0ZURhdGFSZW1vdmFsTW9kZTo6QWxs
QnV0Q29va2llczsKICAgICBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiByZXNvdXJjZUxvYWRT
dGF0aXN0aWNzTWFudWFsUHJldmFsZW50UmVzb3VyY2UgeyB9OwogI2lmIEVOQUJMRShSRVNPVVJD
RV9MT0FEX1NUQVRJU1RJQ1MpCkBAIC0xMDIsNiArMTAzLDkgQEAgdm9pZCBXZWJzaXRlRGF0YVN0
b3JlOjpwbGF0Zm9ybVNldE5ldHdvcmtQYXJhbWV0ZXJzKFdlYnNpdGVEYXRhU3RvcmVQYXJhbWV0
ZXJzJgogICAgIGlmIChbZGVmYXVsdHMgYm9vbEZvcktleTpbTlNTdHJpbmcgc3RyaW5nV2l0aEZv
cm1hdDpAIkV4cGVyaW1lbnRhbCVAIiwgV2ViUHJlZmVyZW5jZXNLZXk6OmlzU2FtZVNpdGVTdHJp
Y3RFbmZvcmNlbWVudEVuYWJsZWRLZXkoKS5jcmVhdGVDRlN0cmluZygpLmdldCgpXV0pCiAgICAg
ICAgIHNhbWVTaXRlU3RyaWN0RW5mb3JjZW1lbnRFbmFibGVkID0gV2ViQ29yZTo6U2FtZVNpdGVT
dHJpY3RFbmZvcmNlbWVudEVuYWJsZWQ6OlllczsKIAorICAgIGlmIChbZGVmYXVsdHMgYm9vbEZv
cktleTpbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpAIkV4cGVyaW1lbnRhbCVAIiwgV2ViUHJl
ZmVyZW5jZXNLZXk6OmlzQ05BTUVDbG9ha2luZ01pdGlnYXRpb25FbmFibGVkS2V5KCkuY3JlYXRl
Q0ZTdHJpbmcoKS5nZXQoKV1dKQorICAgICAgICBjbmFtZUNsb2FraW5nTWl0aWdhdGlvbkVuYWJs
ZWQgPSBXZWJDb3JlOjpDTkFNRUNsb2FraW5nTWl0aWdhdGlvbkVuYWJsZWQ6OlllczsKKwogICAg
IGlmIChbZGVmYXVsdHMgYm9vbEZvcktleTpbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpAIkV4
cGVyaW1lbnRhbCVAIiwgV2ViUHJlZmVyZW5jZXNLZXk6OmlzRmlyc3RQYXJ0eVdlYnNpdGVEYXRh
UmVtb3ZhbERpc2FibGVkS2V5KCkuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKV1dKQogICAgICAgICBm
aXJzdFBhcnR5V2Vic2l0ZURhdGFSZW1vdmFsTW9kZSA9IFdlYkNvcmU6OkZpcnN0UGFydHlXZWJz
aXRlRGF0YVJlbW92YWxNb2RlOjpOb25lOwogICAgIGVsc2UgewpAQCAtMTc4LDYgKzE4Miw3IEBA
IHZvaWQgV2Vic2l0ZURhdGFTdG9yZTo6cGxhdGZvcm1TZXROZXR3b3JrUGFyYW1ldGVycyhXZWJz
aXRlRGF0YVN0b3JlUGFyYW1ldGVycyYKICAgICBwYXJhbWV0ZXJzLm5ldHdvcmtTZXNzaW9uUGFy
YW1ldGVycy5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGFyYW1ldGVycy5zaG91bGRJbmNsdWRlTG9j
YWxob3N0ID0gc2hvdWxkSW5jbHVkZUxvY2FsaG9zdEluUmVzb3VyY2VMb2FkU3RhdGlzdGljczsK
ICAgICBwYXJhbWV0ZXJzLm5ldHdvcmtTZXNzaW9uUGFyYW1ldGVycy5yZXNvdXJjZUxvYWRTdGF0
aXN0aWNzUGFyYW1ldGVycy5lbmFibGVEZWJ1Z01vZGUgPSBlbmFibGVSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzRGVidWdNb2RlOwogICAgIHBhcmFtZXRlcnMubmV0d29ya1Nlc3Npb25QYXJhbWV0ZXJz
LnJlc291cmNlTG9hZFN0YXRpc3RpY3NQYXJhbWV0ZXJzLnNhbWVTaXRlU3RyaWN0RW5mb3JjZW1l
bnRFbmFibGVkID0gc2FtZVNpdGVTdHJpY3RFbmZvcmNlbWVudEVuYWJsZWQ7CisgICAgcGFyYW1l
dGVycy5uZXR3b3JrU2Vzc2lvblBhcmFtZXRlcnMucmVzb3VyY2VMb2FkU3RhdGlzdGljc1BhcmFt
ZXRlcnMuY25hbWVDbG9ha2luZ01pdGlnYXRpb25FbmFibGVkID0gY25hbWVDbG9ha2luZ01pdGln
YXRpb25FbmFibGVkOwogICAgIHBhcmFtZXRlcnMubmV0d29ya1Nlc3Npb25QYXJhbWV0ZXJzLnJl
c291cmNlTG9hZFN0YXRpc3RpY3NQYXJhbWV0ZXJzLmZpcnN0UGFydHlXZWJzaXRlRGF0YVJlbW92
YWxNb2RlID0gZmlyc3RQYXJ0eVdlYnNpdGVEYXRhUmVtb3ZhbE1vZGU7CiAgICAgcGFyYW1ldGVy
cy5uZXR3b3JrU2Vzc2lvblBhcmFtZXRlcnMucmVzb3VyY2VMb2FkU3RhdGlzdGljc1BhcmFtZXRl
cnMuc3RhbmRhbG9uZUFwcGxpY2F0aW9uRG9tYWluID0gV2ViQ29yZTo6UmVnaXN0cmFibGVEb21h
aW4geyBtX2NvbmZpZ3VyYXRpb24tPnN0YW5kYWxvbmVBcHBsaWNhdGlvblVSTCgpIH07CiAgICAg
cGFyYW1ldGVycy5uZXR3b3JrU2Vzc2lvblBhcmFtZXRlcnMucmVzb3VyY2VMb2FkU3RhdGlzdGlj
c1BhcmFtZXRlcnMubWFudWFsUHJldmFsZW50UmVzb3VyY2UgPSBXVEZNb3ZlKHJlc291cmNlTG9h
ZFN0YXRpc3RpY3NNYW51YWxQcmV2YWxlbnRSZXNvdXJjZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuY3BwCmluZGV4
IDFkYWFjNTQwMjA1ODFmN2FhN2Y4MTliNGI0NTAyY2U2Yzc5OGI4OTIuLjhlMDkxYjZiMTdjMDk0
MjU5NzcwOTU2ZWNlMTIyOWRlMDg2YWVjYWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuY3BwCkBAIC0xOTM2LDYg
KzE5MzYsMzYgQEAgdm9pZCBXZWJzaXRlRGF0YVN0b3JlOjpzZXRSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzVG9TYW1lU2l0ZVN0cmljdENvb2tpZXNGb3JUZXN0aW4KICAgICAgICAgICAgIG5ldHdvcmtQ
cm9jZXNzLT5zZXRUb1NhbWVTaXRlU3RyaWN0Q29va2llc0ZvclRlc3RpbmcobV9zZXNzaW9uSUQs
IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIHsgdXJsIH0sIFtjYWxsYmFja0FnZ3JlZ2F0b3Jd
IHsgfSk7CiAgICAgfQogfQorCit2b2lkIFdlYnNpdGVEYXRhU3RvcmU6OnNldFJlc291cmNlTG9h
ZFN0YXRpc3RpY3NGaXJzdFBhcnR5SG9zdENOQU1FRG9tYWluRm9yVGVzdGluZyhjb25zdCBVUkwm
IGZpcnN0UGFydHlVUkwsIGNvbnN0IFVSTCYgY25hbWVVUkwsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBpZiAoY25hbWVVUkwuaG9zdCgpICE9
ICJ0ZXN0d2Via2l0Lm9yZyJfcyAmJiBjbmFtZVVSTC5ob3N0KCkgIT0gIjNyZHBhcnR5dGVzdHdl
YmtpdC5vcmciX3MpIHsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKKyAgICAgICAgcmV0
dXJuOworICAgIH0KKworICAgIGF1dG8gY2FsbGJhY2tBZ2dyZWdhdG9yID0gQ2FsbGJhY2tBZ2dy
ZWdhdG9yOjpjcmVhdGUoV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOworCisgICAgZm9yIChh
dXRvJiBwcm9jZXNzUG9vbCA6IHByb2Nlc3NQb29scygpKSB7CisgICAgICAgIGlmIChhdXRvKiBu
ZXR3b3JrUHJvY2VzcyA9IHByb2Nlc3NQb29sLT5uZXR3b3JrUHJvY2VzcygpKQorICAgICAgICAg
ICAgbmV0d29ya1Byb2Nlc3MtPnNldEZpcnN0UGFydHlIb3N0Q05BTUVEb21haW5Gb3JUZXN0aW5n
KG1fc2Vzc2lvbklELCBmaXJzdFBhcnR5VVJMLmhvc3QoKS50b1N0cmluZygpLCBXZWJDb3JlOjpS
ZWdpc3RyYWJsZURvbWFpbiB7IGNuYW1lVVJMIH0sIFtjYWxsYmFja0FnZ3JlZ2F0b3JdIHsgfSk7
CisgICAgfQorfQorCit2b2lkIFdlYnNpdGVEYXRhU3RvcmU6OnNldFJlc291cmNlTG9hZFN0YXRp
c3RpY3NUaGlyZFBhcnR5Q05BTUVEb21haW5Gb3JUZXN0aW5nKGNvbnN0IFVSTCYgY25hbWVVUkws
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBp
ZiAoY25hbWVVUkwuaG9zdCgpICE9ICJ0ZXN0d2Via2l0Lm9yZyJfcyAmJiBjbmFtZVVSTC5ob3N0
KCkgIT0gIjNyZHBhcnR5dGVzdHdlYmtpdC5vcmciX3MpIHsKKyAgICAgICAgY29tcGxldGlvbkhh
bmRsZXIoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGF1dG8gY2FsbGJhY2tBZ2dy
ZWdhdG9yID0gQ2FsbGJhY2tBZ2dyZWdhdG9yOjpjcmVhdGUoV1RGTW92ZShjb21wbGV0aW9uSGFu
ZGxlcikpOworCisgICAgZm9yIChhdXRvJiBwcm9jZXNzUG9vbCA6IHByb2Nlc3NQb29scygpKSB7
CisgICAgICAgIGlmIChhdXRvKiBuZXR3b3JrUHJvY2VzcyA9IHByb2Nlc3NQb29sLT5uZXR3b3Jr
UHJvY2VzcygpKQorICAgICAgICAgICAgbmV0d29ya1Byb2Nlc3MtPnNldFRoaXJkUGFydHlDTkFN
RURvbWFpbkZvclRlc3RpbmcobV9zZXNzaW9uSUQsIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWlu
IHsgY25hbWVVUkwgfSwgW2NhbGxiYWNrQWdncmVnYXRvcl0geyB9KTsKKyAgICB9Cit9CiAjZW5k
aWYgLy8gRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKIAogdm9pZCBXZWJzaXRlRGF0
YVN0b3JlOjpzZXRDYWNoZU1heEFnZUNhcEZvclByZXZhbGVudFJlc291cmNlcyhTZWNvbmRzIHNl
Y29uZHMsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKQEAg
LTIyODMsNiArMjMxMyw3IEBAIFdlYnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJzIFdlYnNpdGVEYXRh
U3RvcmU6OnBhcmFtZXRlcnMoKQogI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1Mp
CiAgICAgICAgIHRoaXJkUGFydHlDb29raWVCbG9ja2luZ01vZGUoKSwKICAgICAgICAgV2ViQ29y
ZTo6U2FtZVNpdGVTdHJpY3RFbmZvcmNlbWVudEVuYWJsZWQ6Ok5vLAorICAgICAgICBXZWJDb3Jl
OjpDTkFNRUNsb2FraW5nTWl0aWdhdGlvbkVuYWJsZWQ6Ok5vLAogI2VuZGlmCiAgICAgICAgIGZp
cnN0UGFydHlXZWJzaXRlRGF0YVJlbW92YWxNb2RlLAogICAgICAgICBXVEZNb3ZlKHN0YW5kYWxv
bmVBcHBsaWNhdGlvbkRvbWFpbiksCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmgKaW5kZXggMGE3ZjgzZDJiN2RjNjM1Mzhj
ODU3ODgwMGU2MTdhZmZjNWQzZjE5ZC4uNGVjMTNlMTZmZTQ4MmQyNmEyZWFmYTMxMjNlMzIzM2E3
MzdjYjEyYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEv
V2Vic2l0ZURhdGFTdG9yZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVE
YXRhL1dlYnNpdGVEYXRhU3RvcmUuaApAQCAtMjAzLDYgKzIwMyw4IEBAIHB1YmxpYzoKICAgICB2
b2lkIHNldFJlc291cmNlTG9hZFN0YXRpc3RpY3NTaG91bGRFbmJsZVNhbWVTaXRlU3RyaWN0RW5m
b3JjZW1lbnRGb3JUZXN0aW5nKGJvb2wgZW5hYmxlZCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgp
PiYmKTsKICAgICB2b2lkIHNldFJlc291cmNlTG9hZFN0YXRpc3RpY3NGaXJzdFBhcnR5V2Vic2l0
ZURhdGFSZW1vdmFsTW9kZUZvclRlc3RpbmcoYm9vbCBlbmFibGVkLCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKCk+JiYpOwogICAgIHZvaWQgc2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc1RvU2FtZVNp
dGVTdHJpY3RDb29raWVzRm9yVGVzdGluZyhjb25zdCBVUkwmLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKCk+JiYpOworICAgIHZvaWQgc2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0ZpcnN0UGFydHlI
b3N0Q05BTUVEb21haW5Gb3JUZXN0aW5nKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eVVSTCwgY29uc3Qg
VVJMJiBjbmFtZVVSTCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKKyAgICB2b2lkIHNl
dFJlc291cmNlTG9hZFN0YXRpc3RpY3NUaGlyZFBhcnR5Q05BTUVEb21haW5Gb3JUZXN0aW5nKGNv
bnN0IFVSTCYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAgV2ViQ29yZTo6VGhp
cmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9kZSB0aGlyZFBhcnR5Q29va2llQmxvY2tpbmdNb2RlKCkg
Y29uc3Q7CiAgICAgYm9vbCBpc0l0cFN0YXRlRXhwbGljaXRseVNldCgpIGNvbnN0IHsgcmV0dXJu
IG1faXNJdHBTdGF0ZUV4cGxpY2l0bHlTZXQ7IH0KICAgICB2b2lkIHVzZUV4cGxpY2l0SVRQU3Rh
dGUoKSB7IG1faXNJdHBTdGF0ZUV4cGxpY2l0bHlTZXQgPSB0cnVlOyB9CmRpZmYgLS1naXQgYS9U
b29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggM2Y5YmNjM2I3YzJjZTllYzIy
YzU2MTUyNDIyMTY3ZTBhZmZjZjJlNi4uYWViNTczNDg5ZDBkMTc3NDI0NzMzZGMwZTdkZjE5NTM3
NDc1YmFjOCAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDM1IEBACisyMDIwLTA4LTA2ICBKb2huIFdpbGFuZGVyICA8d2lsYW5kZXJA
YXBwbGUuY29tPgorCisgICAgICAgIEV4cGVyaW1lbnRhbDogQ2FwIHRoZSBleHBpcnkgb2YgcGVy
c2lzdGVudCBjb29raWVzIHNldCBpbiAzcmQtcGFydHkgQ05BTUUgY2xvYWtlZCBIVFRQIHJlc3Bv
bnNlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE1
MjAxCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS81NzQ1NDYzMz4KKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIHBhdGNoIGFkZHMgdHdvIFRlc3RS
dW5uZXIgZnVuY3Rpb25zIHdoaWNoIGFsbG93cyBmb3IgdGVzdGluZworICAgICAgICB3aXRoIGRh
dGEgdGhhdCB3b3VsZCBvdGhlcndpc2UgY29tZSBmcm9tIEROUyByZXNvbHV0aW9uOgorICAgICAg
ICAtIHN0YXRpc3RpY3NTZXRGaXJzdFBhcnR5SG9zdENOQU1FRG9tYWluKCkKKyAgICAgICAgLSBz
dGF0aXN0aWNzU2V0VGhpcmRQYXJ0eUNOQU1FRG9tYWluKCkKKworICAgICAgICAqIFdlYktpdFRl
c3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQmluZGluZ3MvVGVzdFJ1bm5lci5pZGw6CisgICAgICAg
ICogV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5jcHA6Cisg
ICAgICAgIChXVFI6OkluamVjdGVkQnVuZGxlOjpkaWRSZWNlaXZlTWVzc2FnZVRvUGFnZSk6Cisg
ICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmNwcDoK
KyAgICAgICAgKFdUUjo6VGVzdFJ1bm5lcjo6c3RhdGlzdGljc1NldEZpcnN0UGFydHlIb3N0Q05B
TUVEb21haW4pOgorICAgICAgICAoV1RSOjpUZXN0UnVubmVyOjpzdGF0aXN0aWNzQ2FsbERpZFNl
dEZpcnN0UGFydHlIb3N0Q05BTUVEb21haW5DYWxsYmFjayk6CisgICAgICAgIChXVFI6OlRlc3RS
dW5uZXI6OnN0YXRpc3RpY3NTZXRUaGlyZFBhcnR5Q05BTUVEb21haW4pOgorICAgICAgICAoV1RS
OjpUZXN0UnVubmVyOjpzdGF0aXN0aWNzQ2FsbERpZFNldFRoaXJkUGFydHlDTkFNRURvbWFpbkNh
bGxiYWNrKToKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RS
dW5uZXIuaDoKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcDoK
KyAgICAgICAgKFdUUjo6VGVzdENvbnRyb2xsZXI6OnNldFN0YXRpc3RpY3NGaXJzdFBhcnR5SG9z
dENOQU1FRG9tYWluKToKKyAgICAgICAgKFdUUjo6VGVzdENvbnRyb2xsZXI6OnNldFN0YXRpc3Rp
Y3NUaGlyZFBhcnR5Q05BTUVEb21haW4pOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvVGVz
dENvbnRyb2xsZXIuaDoKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9u
LmNwcDoKKyAgICAgICAgKFdUUjo6VGVzdEludm9jYXRpb246OmRpZFJlY2VpdmVNZXNzYWdlRnJv
bUluamVjdGVkQnVuZGxlKToKKyAgICAgICAgKFdUUjo6VGVzdEludm9jYXRpb246OmRpZFNldEZp
cnN0UGFydHlIb3N0Q05BTUVEb21haW4pOgorICAgICAgICAoV1RSOjpUZXN0SW52b2NhdGlvbjo6
ZGlkU2V0VGhpcmRQYXJ0eUNOQU1FRG9tYWluKToKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVy
L1Rlc3RJbnZvY2F0aW9uLmg6CisKIDIwMjAtMDgtMDUgIEpvbmF0aGFuIEJlZGFyZCAgPGpiZWRh
cmRAYXBwbGUuY29tPgogCiAgICAgICAgIHJlc3VsdHMud2Via2l0Lm9yZzogUmV0dXJuIHdvcmtl
ciBzdGF0dXMgdG8gY2FsbGVyCmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0lu
amVjdGVkQnVuZGxlL0JpbmRpbmdzL1Rlc3RSdW5uZXIuaWRsIGIvVG9vbHMvV2ViS2l0VGVzdFJ1
bm5lci9JbmplY3RlZEJ1bmRsZS9CaW5kaW5ncy9UZXN0UnVubmVyLmlkbAppbmRleCA2Yjg5ODBm
NDkyODJiNTczZTEzZjA0NWNmZTBkNTZiYzY0NDdhZmJhLi5kYzYzYzVkZDhiYjRkODZiZTNmNjI3
MWFkYTI4OGY4N2ZkNDIwYTE5IDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0lu
amVjdGVkQnVuZGxlL0JpbmRpbmdzL1Rlc3RSdW5uZXIuaWRsCisrKyBiL1Rvb2xzL1dlYktpdFRl
c3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQmluZGluZ3MvVGVzdFJ1bm5lci5pZGwKQEAgLTM0Nyw2
ICszNDcsOCBAQCBpbnRlcmZhY2UgVGVzdFJ1bm5lciB7CiAgICAgdm9pZCBzZXRTdGF0aXN0aWNz
U2hvdWxkQmxvY2tUaGlyZFBhcnR5Q29va2llcyhib29sZWFuIHZhbHVlLCBvYmplY3QgY2FsbGJh
Y2ssIG9wdGlvbmFsIGJvb2xlYW4gb25seU9uU2l0ZXNXaXRob3V0VXNlckludGVyYWN0aW9uKTsK
ICAgICB2b2lkIHNldFN0YXRpc3RpY3NGaXJzdFBhcnR5V2Vic2l0ZURhdGFSZW1vdmFsTW9kZShi
b29sZWFuIHZhbHVlLCBvYmplY3QgY2FsbGJhY2spOwogICAgIHZvaWQgc3RhdGlzdGljc1NldFRv
U2FtZVNpdGVTdHJpY3RDb29raWVzKERPTVN0cmluZyBob3N0TmFtZSwgb2JqZWN0IGNhbGxiYWNr
KTsKKyAgICB2b2lkIHN0YXRpc3RpY3NTZXRGaXJzdFBhcnR5SG9zdENOQU1FRG9tYWluKERPTVN0
cmluZyBmaXJzdFBhcnR5VVJMU3RyaW5nLCBET01TdHJpbmcgY25hbWVVUkxTdHJpbmcsIG9iamVj
dCBjYWxsYmFjayk7CisgICAgdm9pZCBzdGF0aXN0aWNzU2V0VGhpcmRQYXJ0eUNOQU1FRG9tYWlu
KERPTVN0cmluZyBjbmFtZVVSTFN0cmluZywgb2JqZWN0IGNhbGxiYWNrKTsKICAgICB2b2lkIGxv
YWRlZFRoaXJkUGFydHlEb21haW5zKG9iamVjdCBjYWxsYmFjayk7CiAKICAgICAvLyBJbmplY3Rl
ZCBidW5kbGUgZm9ybSBjbGllbnQuCmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVy
L0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmNwcCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5u
ZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuY3BwCmluZGV4IGUyNTRjYTcyZGJjZjMx
MDI3NDFmY2YxN2MxNTI1NTQyNmQwZjVmMGUuLmFmNzQzYjYzZThmZjBhNDY2ZmQ0YTg5YWUwODUz
NmJmYzBkOGFiNTEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRC
dW5kbGUvSW5qZWN0ZWRCdW5kbGUuY3BwCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5q
ZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuY3BwCkBAIC0zNTksNiArMzU5LDE2IEBAIHZvaWQg
SW5qZWN0ZWRCdW5kbGU6OmRpZFJlY2VpdmVNZXNzYWdlVG9QYWdlKFdLQnVuZGxlUGFnZVJlZiBw
YWdlLCBXS1N0cmluZ1JlZiBtCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKKyAgICBpZiAoV0tT
dHJpbmdJc0VxdWFsVG9VVEY4Q1N0cmluZyhtZXNzYWdlTmFtZSwgIkNhbGxEaWRTZXRGaXJzdFBh
cnR5SG9zdENOQU1FRG9tYWluIikpIHsKKyAgICAgICAgbV90ZXN0UnVubmVyLT5zdGF0aXN0aWNz
Q2FsbERpZFNldEZpcnN0UGFydHlIb3N0Q05BTUVEb21haW5DYWxsYmFjaygpOworICAgICAgICBy
ZXR1cm47CisgICAgfQorCisgICAgaWYgKFdLU3RyaW5nSXNFcXVhbFRvVVRGOENTdHJpbmcobWVz
c2FnZU5hbWUsICJDYWxsRGlkU2V0VGhpcmRQYXJ0eUNOQU1FRG9tYWluIikpIHsKKyAgICAgICAg
bV90ZXN0UnVubmVyLT5zdGF0aXN0aWNzQ2FsbERpZFNldFRoaXJkUGFydHlDTkFNRURvbWFpbkNh
bGxiYWNrKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKICAgICBpZiAoV0tTdHJpbmdJc0Vx
dWFsVG9VVEY4Q1N0cmluZyhtZXNzYWdlTmFtZSwgIkNhbGxEaWRSZXNldFN0YXRpc3RpY3NUb0Nv
bnNpc3RlbnRTdGF0ZSIpKSB7CiAgICAgICAgIG1fdGVzdFJ1bm5lci0+c3RhdGlzdGljc0NhbGxE
aWRSZXNldFRvQ29uc2lzdGVudFN0YXRlQ2FsbGJhY2soKTsKICAgICAgICAgcmV0dXJuOwpkaWZm
IC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVy
LmNwcCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5j
cHAKaW5kZXggZDQzODZlNmY5ZjM1MGVlMDE5ODZiOTIwMWI5MDNiODA0MDI2NjRhNy4uMjk2NzJm
OWUxNTU5Y2EyZGUwYzY4OWE0NmMzZWEyYzU2MDFiNjBlOCAxMDA2NDQKLS0tIGEvVG9vbHMvV2Vi
S2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmNwcAorKysgYi9Ub29scy9X
ZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuY3BwCkBAIC03NTgsNiAr
NzU4LDggQEAgZW51bSB7CiAgICAgU3RhdGlzdGljc0RpZFNldFNob3VsZEJsb2NrVGhpcmRQYXJ0
eUNvb2tpZXNDYWxsYmFja0lELAogICAgIFN0YXRpc3RpY3NEaWRTZXRGaXJzdFBhcnR5V2Vic2l0
ZURhdGFSZW1vdmFsTW9kZUNhbGxiYWNrSUQsCiAgICAgU3RhdGlzdGljc0RpZFNldFRvU2FtZVNp
dGVTdHJpY3RDb29raWVzQ2FsbGJhY2tJRCwKKyAgICBTdGF0aXN0aWNzRGlkU2V0Rmlyc3RQYXJ0
eUhvc3RDTkFNRURvbWFpbkNhbGxiYWNrSUQsCisgICAgU3RhdGlzdGljc0RpZFNldFRoaXJkUGFy
dHlDTkFNRURvbWFpbkNhbGxiYWNrSUQsCiAgICAgQWxsU3RvcmFnZUFjY2Vzc0VudHJpZXNDYWxs
YmFja0lELAogICAgIExvYWRlZFRoaXJkUGFydHlEb21haW5zQ2FsbGJhY2tJRCwKICAgICBEaWRS
ZW1vdmVBbGxTZXNzaW9uQ3JlZGVudGlhbHNDYWxsYmFja0lELApAQCAtMjM2NCw2ICsyMzY2LDUy
IEBAIHZvaWQgVGVzdFJ1bm5lcjo6c3RhdGlzdGljc0NhbGxEaWRTZXRUb1NhbWVTaXRlU3RyaWN0
Q29va2llc0NhbGxiYWNrKCkKICAgICBjYWxsVGVzdFJ1bm5lckNhbGxiYWNrKFN0YXRpc3RpY3NE
aWRTZXRUb1NhbWVTaXRlU3RyaWN0Q29va2llc0NhbGxiYWNrSUQpOwogfQogCisKK3ZvaWQgVGVz
dFJ1bm5lcjo6c3RhdGlzdGljc1NldEZpcnN0UGFydHlIb3N0Q05BTUVEb21haW4oSlNTdHJpbmdS
ZWYgZmlyc3RQYXJ0eVVSTFN0cmluZywgSlNTdHJpbmdSZWYgY25hbWVVUkxTdHJpbmcsIEpTVmFs
dWVSZWYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgY2FjaGVUZXN0UnVubmVyQ2FsbGJhY2so
U3RhdGlzdGljc0RpZFNldEZpcnN0UGFydHlIb3N0Q05BTUVEb21haW5DYWxsYmFja0lELCBjb21w
bGV0aW9uSGFuZGxlcik7CisKKyAgICBWZWN0b3I8V0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+PiBr
ZXlzOworICAgIFZlY3RvcjxXS1JldGFpblB0cjxXS1R5cGVSZWY+PiB2YWx1ZXM7CisgICAgCisg
ICAga2V5cy5hcHBlbmQoYWRvcHRXSyhXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygiRmly
c3RQYXJ0eVVSTCIpKSk7CisgICAgdmFsdWVzLmFwcGVuZChhZG9wdFdLKFdLU3RyaW5nQ3JlYXRl
V2l0aEpTU3RyaW5nKGZpcnN0UGFydHlVUkxTdHJpbmcpKSk7CisgICAgCisgICAga2V5cy5hcHBl
bmQoYWRvcHRXSyhXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygiQ05BTUUiKSkpOworICAg
IHZhbHVlcy5hcHBlbmQoYWRvcHRXSyhXS1N0cmluZ0NyZWF0ZVdpdGhKU1N0cmluZyhjbmFtZVVS
TFN0cmluZykpKTsKKyAgICAKKyAgICBWZWN0b3I8V0tTdHJpbmdSZWY+IHJhd0tleXMoa2V5cy5z
aXplKCkpOworICAgIFZlY3RvcjxXS1R5cGVSZWY+IHJhd1ZhbHVlcyh2YWx1ZXMuc2l6ZSgpKTsK
KyAgICAKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGtleXMuc2l6ZSgpOyArK2kpIHsKKyAg
ICAgICAgcmF3S2V5c1tpXSA9IGtleXNbaV0uZ2V0KCk7CisgICAgICAgIHJhd1ZhbHVlc1tpXSA9
IHZhbHVlc1tpXS5nZXQoKTsKKyAgICB9CisKKyAgICBhdXRvIG1lc3NhZ2VOYW1lID0gYWRvcHRX
SyhXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygiU3RhdGlzdGljc1NldEZpcnN0UGFydHlI
b3N0Q05BTUVEb21haW4iKSk7CisgICAgYXV0byBtZXNzYWdlQm9keSA9IGFkb3B0V0soV0tEaWN0
aW9uYXJ5Q3JlYXRlKHJhd0tleXMuZGF0YSgpLCByYXdWYWx1ZXMuZGF0YSgpLCByYXdLZXlzLnNp
emUoKSkpOworICAgIFdLQnVuZGxlUG9zdE1lc3NhZ2UoSW5qZWN0ZWRCdW5kbGU6OnNpbmdsZXRv
bigpLmJ1bmRsZSgpLCBtZXNzYWdlTmFtZS5nZXQoKSwgbWVzc2FnZUJvZHkuZ2V0KCkpOworfQor
Cit2b2lkIFRlc3RSdW5uZXI6OnN0YXRpc3RpY3NDYWxsRGlkU2V0Rmlyc3RQYXJ0eUhvc3RDTkFN
RURvbWFpbkNhbGxiYWNrKCkKK3sKKyAgICBjYWxsVGVzdFJ1bm5lckNhbGxiYWNrKFN0YXRpc3Rp
Y3NEaWRTZXRGaXJzdFBhcnR5SG9zdENOQU1FRG9tYWluQ2FsbGJhY2tJRCk7Cit9CisKK3ZvaWQg
VGVzdFJ1bm5lcjo6c3RhdGlzdGljc1NldFRoaXJkUGFydHlDTkFNRURvbWFpbihKU1N0cmluZ1Jl
ZiBjbmFtZVVSTFN0cmluZywgSlNWYWx1ZVJlZiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBj
YWNoZVRlc3RSdW5uZXJDYWxsYmFjayhTdGF0aXN0aWNzRGlkU2V0VGhpcmRQYXJ0eUNOQU1FRG9t
YWluQ2FsbGJhY2tJRCwgY29tcGxldGlvbkhhbmRsZXIpOworCisgICAgYXV0byBtZXNzYWdlTmFt
ZSA9IGFkb3B0V0soV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoIlN0YXRpc3RpY3NTZXRU
aGlyZFBhcnR5Q05BTUVEb21haW4iKSk7CisgICAgYXV0byBtZXNzYWdlQm9keSA9IGFkb3B0V0so
V0tTdHJpbmdDcmVhdGVXaXRoSlNTdHJpbmcoY25hbWVVUkxTdHJpbmcpKTsKKyAgICBXS0J1bmRs
ZVBvc3RNZXNzYWdlKEluamVjdGVkQnVuZGxlOjpzaW5nbGV0b24oKS5idW5kbGUoKSwgbWVzc2Fn
ZU5hbWUuZ2V0KCksIG1lc3NhZ2VCb2R5LmdldCgpKTsKK30KKwordm9pZCBUZXN0UnVubmVyOjpz
dGF0aXN0aWNzQ2FsbERpZFNldFRoaXJkUGFydHlDTkFNRURvbWFpbkNhbGxiYWNrKCkKK3sKKyAg
ICBjYWxsVGVzdFJ1bm5lckNhbGxiYWNrKFN0YXRpc3RpY3NEaWRTZXRUaGlyZFBhcnR5Q05BTUVE
b21haW5DYWxsYmFja0lEKTsKK30KKwogdm9pZCBUZXN0UnVubmVyOjpzdGF0aXN0aWNzUmVzZXRU
b0NvbnNpc3RlbnRTdGF0ZShKU1ZhbHVlUmVmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIGNh
Y2hlVGVzdFJ1bm5lckNhbGxiYWNrKFN0YXRpc3RpY3NEaWRSZXNldFRvQ29uc2lzdGVudFN0YXRl
Q2FsbGJhY2tJRCwgY29tcGxldGlvbkhhbmRsZXIpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0
VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmggYi9Ub29scy9XZWJLaXRUZXN0
UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuaAppbmRleCAxZmUzNzlhNTdhYjgyZmZl
NDMxOWRhNDgwMGYwNDgzOTMwMDNmNzUxLi5hYjY1ZDQwZDQyMjY4MDkzNDA5MmNmM2Y4MmQ4MWM1
ZTlhYjIwZDAzIDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVu
ZGxlL1Rlc3RSdW5uZXIuaAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVu
ZGxlL1Rlc3RSdW5uZXIuaApAQCAtNDUzLDYgKzQ1MywxMCBAQCBwdWJsaWM6CiAgICAgdm9pZCBz
dGF0aXN0aWNzQ2FsbERpZFNldEZpcnN0UGFydHlXZWJzaXRlRGF0YVJlbW92YWxNb2RlQ2FsbGJh
Y2soKTsKICAgICB2b2lkIHN0YXRpc3RpY3NTZXRUb1NhbWVTaXRlU3RyaWN0Q29va2llcyhKU1N0
cmluZ1JlZiBob3N0TmFtZSwgSlNWYWx1ZVJlZiBjYWxsYmFjayk7CiAgICAgdm9pZCBzdGF0aXN0
aWNzQ2FsbERpZFNldFRvU2FtZVNpdGVTdHJpY3RDb29raWVzQ2FsbGJhY2soKTsKKyAgICB2b2lk
IHN0YXRpc3RpY3NTZXRGaXJzdFBhcnR5SG9zdENOQU1FRG9tYWluKEpTU3RyaW5nUmVmIGZpcnN0
UGFydHlVUkxTdHJpbmcsIEpTU3RyaW5nUmVmIGNuYW1lVVJMU3RyaW5nLCBKU1ZhbHVlUmVmIGNv
bXBsZXRpb25IYW5kbGVyKTsKKyAgICB2b2lkIHN0YXRpc3RpY3NDYWxsRGlkU2V0Rmlyc3RQYXJ0
eUhvc3RDTkFNRURvbWFpbkNhbGxiYWNrKCk7CisgICAgdm9pZCBzdGF0aXN0aWNzU2V0VGhpcmRQ
YXJ0eUNOQU1FRG9tYWluKEpTU3RyaW5nUmVmIGNuYW1lVVJMU3RyaW5nLCBKU1ZhbHVlUmVmIGNv
bXBsZXRpb25IYW5kbGVyKTsKKyAgICB2b2lkIHN0YXRpc3RpY3NDYWxsRGlkU2V0VGhpcmRQYXJ0
eUNOQU1FRG9tYWluQ2FsbGJhY2soKTsKICAgICB2b2lkIHN0YXRpc3RpY3NSZXNldFRvQ29uc2lz
dGVudFN0YXRlKEpTVmFsdWVSZWYgY29tcGxldGlvbkhhbmRsZXIpOwogICAgIHZvaWQgc3RhdGlz
dGljc0NhbGxEaWRSZXNldFRvQ29uc2lzdGVudFN0YXRlQ2FsbGJhY2soKTsKICAgICB2b2lkIGxv
YWRlZFRoaXJkUGFydHlEb21haW5zKEpTVmFsdWVSZWYgY2FsbGJhY2spOwpkaWZmIC0tZ2l0IGEv
VG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5jcHAgYi9Ub29scy9XZWJLaXRU
ZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcAppbmRleCBmYWZiOGNmNmI5NTJlM2MwNDg0NjNi
YTU3ZjVjNGNmNDgxMWRmZWFkLi5hNDNmYTgxMzRhN2FiNzZjM2EzYjdmODIwOGRjOTI2NjcyNzQ3
NDYxIDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNw
cAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcApAQCAtMzg2
Miw2ICszODYyLDIyIEBAIHZvaWQgVGVzdENvbnRyb2xsZXI6OnNldFN0YXRpc3RpY3NUb1NhbWVT
aXRlU3RyaWN0Q29va2llcyhXS1N0cmluZ1JlZiBob3N0TmFtZSkKICAgICBtX2N1cnJlbnRJbnZv
Y2F0aW9uLT5kaWRTZXRUb1NhbWVTaXRlU3RyaWN0Q29va2llcygpOwogfQogCit2b2lkIFRlc3RD
b250cm9sbGVyOjpzZXRTdGF0aXN0aWNzRmlyc3RQYXJ0eUhvc3RDTkFNRURvbWFpbihXS1N0cmlu
Z1JlZiBmaXJzdFBhcnR5VVJMU3RyaW5nLCBXS1N0cmluZ1JlZiBjbmFtZVVSTFN0cmluZykKK3sK
KyAgICBSZXNvdXJjZVN0YXRpc3RpY3NDYWxsYmFja0NvbnRleHQgY29udGV4dCgqdGhpcyk7Cisg
ICAgV0tXZWJzaXRlRGF0YVN0b3JlU2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0ZpcnN0UGFydHlI
b3N0Q05BTUVEb21haW5Gb3JUZXN0aW5nKHdlYnNpdGVEYXRhU3RvcmUoKSwgZmlyc3RQYXJ0eVVS
TFN0cmluZywgY25hbWVVUkxTdHJpbmcsICZjb250ZXh0LCByZXNvdXJjZVN0YXRpc3RpY3NWb2lk
UmVzdWx0Q2FsbGJhY2spOworICAgIHJ1blVudGlsKGNvbnRleHQuZG9uZSwgbm9UaW1lb3V0KTsK
KyAgICBtX2N1cnJlbnRJbnZvY2F0aW9uLT5kaWRTZXRGaXJzdFBhcnR5SG9zdENOQU1FRG9tYWlu
KCk7Cit9CisKK3ZvaWQgVGVzdENvbnRyb2xsZXI6OnNldFN0YXRpc3RpY3NUaGlyZFBhcnR5Q05B
TUVEb21haW4oV0tTdHJpbmdSZWYgY25hbWVVUkxTdHJpbmcpCit7CisgICAgUmVzb3VyY2VTdGF0
aXN0aWNzQ2FsbGJhY2tDb250ZXh0IGNvbnRleHQoKnRoaXMpOworICAgIFdLV2Vic2l0ZURhdGFT
dG9yZVNldFJlc291cmNlTG9hZFN0YXRpc3RpY3NUaGlyZFBhcnR5Q05BTUVEb21haW5Gb3JUZXN0
aW5nKHdlYnNpdGVEYXRhU3RvcmUoKSwgY25hbWVVUkxTdHJpbmcsICZjb250ZXh0LCByZXNvdXJj
ZVN0YXRpc3RpY3NWb2lkUmVzdWx0Q2FsbGJhY2spOworICAgIHJ1blVudGlsKGNvbnRleHQuZG9u
ZSwgbm9UaW1lb3V0KTsKKyAgICBtX2N1cnJlbnRJbnZvY2F0aW9uLT5kaWRTZXRUaGlyZFBhcnR5
Q05BTUVEb21haW4oKTsKK30KKwogc3RydWN0IEFwcEJvdW5kRG9tYWluc0NhbGxiYWNrQ29udGV4
dCB7CiAgICAgZXhwbGljaXQgQXBwQm91bmREb21haW5zQ2FsbGJhY2tDb250ZXh0KFRlc3RDb250
cm9sbGVyJiBjb250cm9sbGVyKQogICAgICAgICA6IHRlc3RDb250cm9sbGVyKGNvbnRyb2xsZXIp
CmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmggYi9U
b29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmgKaW5kZXggYTEzMDg0OWIzZDNh
ZWJhMmUyMWU2YTBhMzRkNDYyOTJlMTlkNGE1MC4uNzI0Y2QwMDRjMWI0MmU4MTVmZDUyMTU1Mzk5
ZmFlMDIxMDZjY2Y4MCAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29u
dHJvbGxlci5oCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuaApA
QCAtMjY2LDYgKzI2Niw4IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldFN0YXRpc3RpY3NTaG91bGRC
bG9ja1RoaXJkUGFydHlDb29raWVzKGJvb2wgdmFsdWUsIGJvb2wgb25seU9uU2l0ZXNXaXRob3V0
VXNlckludGVyYWN0aW9uKTsKICAgICB2b2lkIHNldFN0YXRpc3RpY3NGaXJzdFBhcnR5V2Vic2l0
ZURhdGFSZW1vdmFsTW9kZShib29sIHZhbHVlKTsKICAgICB2b2lkIHNldFN0YXRpc3RpY3NUb1Nh
bWVTaXRlU3RyaWN0Q29va2llcyhXS1N0cmluZ1JlZiBob3N0TmFtZSk7CisgICAgdm9pZCBzZXRT
dGF0aXN0aWNzRmlyc3RQYXJ0eUhvc3RDTkFNRURvbWFpbihXS1N0cmluZ1JlZiBmaXJzdFBhcnR5
VVJMU3RyaW5nLCBXS1N0cmluZ1JlZiBjbmFtZVVSTFN0cmluZyk7CisgICAgdm9pZCBzZXRTdGF0
aXN0aWNzVGhpcmRQYXJ0eUNOQU1FRG9tYWluKFdLU3RyaW5nUmVmIGNuYW1lVVJMU3RyaW5nKTsK
ICAgICB2b2lkIHNldEFwcEJvdW5kRG9tYWlucyhXS0FycmF5UmVmIG9yaWdpblVSTHMpOwogICAg
IHZvaWQgc3RhdGlzdGljc1Jlc2V0VG9Db25zaXN0ZW50U3RhdGUoKTsKIApkaWZmIC0tZ2l0IGEv
VG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlvbi5jcHAgYi9Ub29scy9XZWJLaXRU
ZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmNwcAppbmRleCBiNzNiMDk0NDFmMTc0YjU0MWVjZDY2
MzdhZWYwZjkxOTdkOGRlZjhmLi45MjlmODVhZjVmODIyZjkyZDYwZGFhYTQ0ZjA0Y2QxMzMzNzFl
ZjUzIDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmNw
cAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmNwcApAQCAtOTU3
LDYgKzk1NywyNyBAQCB2b2lkIFRlc3RJbnZvY2F0aW9uOjpkaWRSZWNlaXZlTWVzc2FnZUZyb21J
bmplY3RlZEJ1bmRsZShXS1N0cmluZ1JlZiBtZXNzYWdlTmFtZQogICAgICAgICByZXR1cm47CiAg
ICAgfQogCisgICAgaWYgKFdLU3RyaW5nSXNFcXVhbFRvVVRGOENTdHJpbmcobWVzc2FnZU5hbWUs
ICJTdGF0aXN0aWNzU2V0Rmlyc3RQYXJ0eUhvc3RDTkFNRURvbWFpbiIpKSB7CisgICAgICAgIEFT
U0VSVChXS0dldFR5cGVJRChtZXNzYWdlQm9keSkgPT0gV0tEaWN0aW9uYXJ5R2V0VHlwZUlEKCkp
OworICAgICAgICAKKyAgICAgICAgV0tEaWN0aW9uYXJ5UmVmIG1lc3NhZ2VCb2R5RGljdGlvbmFy
eSA9IHN0YXRpY19jYXN0PFdLRGljdGlvbmFyeVJlZj4obWVzc2FnZUJvZHkpOworICAgICAgICBX
S1JldGFpblB0cjxXS1N0cmluZ1JlZj4gZmlyc3RQYXJ0eVVSTFN0cmluZ0tleSA9IGFkb3B0V0so
V0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoIkZpcnN0UGFydHlVUkwiKSk7CisgICAgICAg
IFdLUmV0YWluUHRyPFdLU3RyaW5nUmVmPiBjbmFtZVVSTFN0cmluZ0tleSA9IGFkb3B0V0soV0tT
dHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoIkNOQU1FIikpOworICAgICAgICAKKyAgICAgICAg
V0tTdHJpbmdSZWYgZmlyc3RQYXJ0eVVSTFN0cmluZyA9IHN0YXRpY19jYXN0PFdLU3RyaW5nUmVm
PihXS0RpY3Rpb25hcnlHZXRJdGVtRm9yS2V5KG1lc3NhZ2VCb2R5RGljdGlvbmFyeSwgZmlyc3RQ
YXJ0eVVSTFN0cmluZ0tleS5nZXQoKSkpOworICAgICAgICBXS1N0cmluZ1JlZiBjbmFtZVVSTFN0
cmluZyA9IHN0YXRpY19jYXN0PFdLU3RyaW5nUmVmPihXS0RpY3Rpb25hcnlHZXRJdGVtRm9yS2V5
KG1lc3NhZ2VCb2R5RGljdGlvbmFyeSwgY25hbWVVUkxTdHJpbmdLZXkuZ2V0KCkpKTsKKyAgICAg
ICAgCisgICAgICAgIFRlc3RDb250cm9sbGVyOjpzaW5nbGV0b24oKS5zZXRTdGF0aXN0aWNzRmly
c3RQYXJ0eUhvc3RDTkFNRURvbWFpbihmaXJzdFBhcnR5VVJMU3RyaW5nLCBjbmFtZVVSTFN0cmlu
Zyk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpZiAoV0tTdHJpbmdJc0VxdWFsVG9V
VEY4Q1N0cmluZyhtZXNzYWdlTmFtZSwgIlN0YXRpc3RpY3NTZXRUaGlyZFBhcnR5Q05BTUVEb21h
aW4iKSkgeworICAgICAgICBBU1NFUlQoV0tHZXRUeXBlSUQobWVzc2FnZUJvZHkpID09IFdLU3Ry
aW5nR2V0VHlwZUlEKCkpOworICAgICAgICBXS1N0cmluZ1JlZiBjbmFtZVVSTFN0cmluZyA9IHN0
YXRpY19jYXN0PFdLU3RyaW5nUmVmPihtZXNzYWdlQm9keSk7CisgICAgICAgIFRlc3RDb250cm9s
bGVyOjpzaW5nbGV0b24oKS5zZXRTdGF0aXN0aWNzVGhpcmRQYXJ0eUNOQU1FRG9tYWluKGNuYW1l
VVJMU3RyaW5nKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKwogICAgIGlmIChXS1N0cmluZ0lz
RXF1YWxUb1VURjhDU3RyaW5nKG1lc3NhZ2VOYW1lLCAiU3RhdGlzdGljc1Jlc2V0VG9Db25zaXN0
ZW50U3RhdGUiKSkgewogICAgICAgICBpZiAobV9zaG91bGREdW1wUmVzb3VyY2VMb2FkU3RhdGlz
dGljcykKICAgICAgICAgICAgIG1fc2F2ZWRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzID0gVGVzdENv
bnRyb2xsZXI6OnNpbmdsZXRvbigpLmR1bXBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzKCk7CkBAIC0x
OTQ2LDYgKzE5NjcsMTggQEAgdm9pZCBUZXN0SW52b2NhdGlvbjo6ZGlkU2V0VG9TYW1lU2l0ZVN0
cmljdENvb2tpZXMoKQogICAgIFdLUGFnZVBvc3RNZXNzYWdlVG9JbmplY3RlZEJ1bmRsZShUZXN0
Q29udHJvbGxlcjo6c2luZ2xldG9uKCkubWFpbldlYlZpZXcoKS0+cGFnZSgpLCBtZXNzYWdlTmFt
ZS5nZXQoKSwgbnVsbHB0cik7CiB9CiAKK3ZvaWQgVGVzdEludm9jYXRpb246OmRpZFNldEZpcnN0
UGFydHlIb3N0Q05BTUVEb21haW4oKQoreworICAgIFdLUmV0YWluUHRyPFdLU3RyaW5nUmVmPiBt
ZXNzYWdlTmFtZSA9IGFkb3B0V0soV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoIkNhbGxE
aWRTZXRGaXJzdFBhcnR5SG9zdENOQU1FRG9tYWluIikpOworICAgIFdLUGFnZVBvc3RNZXNzYWdl
VG9JbmplY3RlZEJ1bmRsZShUZXN0Q29udHJvbGxlcjo6c2luZ2xldG9uKCkubWFpbldlYlZpZXco
KS0+cGFnZSgpLCBtZXNzYWdlTmFtZS5nZXQoKSwgbnVsbHB0cik7Cit9CisKK3ZvaWQgVGVzdElu
dm9jYXRpb246OmRpZFNldFRoaXJkUGFydHlDTkFNRURvbWFpbigpCit7CisgICAgV0tSZXRhaW5Q
dHI8V0tTdHJpbmdSZWY+IG1lc3NhZ2VOYW1lID0gYWRvcHRXSyhXS1N0cmluZ0NyZWF0ZVdpdGhV
VEY4Q1N0cmluZygiQ2FsbERpZFNldFRoaXJkUGFydHlDTkFNRURvbWFpbiIpKTsKKyAgICBXS1Bh
Z2VQb3N0TWVzc2FnZVRvSW5qZWN0ZWRCdW5kbGUoVGVzdENvbnRyb2xsZXI6OnNpbmdsZXRvbigp
Lm1haW5XZWJWaWV3KCktPnBhZ2UoKSwgbWVzc2FnZU5hbWUuZ2V0KCksIG51bGxwdHIpOworfQor
CiB2b2lkIFRlc3RJbnZvY2F0aW9uOjpkaWRSZXNldFN0YXRpc3RpY3NUb0NvbnNpc3RlbnRTdGF0
ZSgpCiB7CiAgICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+IG1lc3NhZ2VOYW1lID0gYWRvcHRX
SyhXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygiQ2FsbERpZFJlc2V0U3RhdGlzdGljc1Rv
Q29uc2lzdGVudFN0YXRlIikpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9U
ZXN0SW52b2NhdGlvbi5oIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlvbi5o
CmluZGV4IDYyMzFiMGMyMDQ0NDVhZDYwYzk1ZDNlODE3ZmIzMGY0NzZmOGUxYTUuLmU0N2M1YzA0
OWZiMDE2MThiZjBiODkxZTlmMmI5NTg4NmEwNGJmYjQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktp
dFRlc3RSdW5uZXIvVGVzdEludm9jYXRpb24uaAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVy
L1Rlc3RJbnZvY2F0aW9uLmgKQEAgLTc3LDYgKzc3LDggQEAgcHVibGljOgogICAgIHZvaWQgZGlk
U2V0U2hvdWxkQmxvY2tUaGlyZFBhcnR5Q29va2llcygpOwogICAgIHZvaWQgZGlkU2V0Rmlyc3RQ
YXJ0eVdlYnNpdGVEYXRhUmVtb3ZhbE1vZGUoKTsKICAgICB2b2lkIGRpZFNldFRvU2FtZVNpdGVT
dHJpY3RDb29raWVzKCk7CisgICAgdm9pZCBkaWRTZXRGaXJzdFBhcnR5SG9zdENOQU1FRG9tYWlu
KCk7CisgICAgdm9pZCBkaWRTZXRUaGlyZFBhcnR5Q05BTUVEb21haW4oKTsKICAgICB2b2lkIGRp
ZFJlc2V0U3RhdGlzdGljc1RvQ29uc2lzdGVudFN0YXRlKCk7CiAgICAgdm9pZCBkaWRTZXRCbG9j
a0Nvb2tpZXNGb3JIb3N0KCk7CiAgICAgdm9pZCBkaWRTZXRTdGF0aXN0aWNzRGVidWdNb2RlKCk7
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKaW5kZXggZTc1MzZkNjVlNzFhNmI3MTBjZjE1YTlkYTYxNGVhMDdiYTY2YjE4NC4uYmU4ZjQz
MTViNWEzODEwOGNjMGJjZWQ2Mjc3ODFmMGZjY2M3ZDUyMCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM0IEBA
CisyMDIwLTA4LTA2ICBKb2huIFdpbGFuZGVyICA8d2lsYW5kZXJAYXBwbGUuY29tPgorCisgICAg
ICAgIEV4cGVyaW1lbnRhbDogQ2FwIHRoZSBleHBpcnkgb2YgcGVyc2lzdGVudCBjb29raWVzIHNl
dCBpbiAzcmQtcGFydHkgQ05BTUUgY2xvYWtlZCBIVFRQIHJlc3BvbnNlcworICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE1MjAxCisgICAgICAgIDxyZGFy
Oi8vcHJvYmxlbS81NzQ1NDYzMz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICAqIGh0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9jbmFtZS1j
bG9ha2luZy10b3AtY25hbWUtc3ViLTFwLWNuYW1lLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAg
ICAgICogaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL2NuYW1lLWNsb2FraW5nLXRv
cC1jbmFtZS1zdWItMXAtY25hbWUuaHRtbDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9y
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzL2NuYW1lLWNsb2FraW5nLXRvcC1jbmFtZS1zdWItM3AtY25h
bWUtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL3Jlc291cmNlTG9h
ZFN0YXRpc3RpY3MvY25hbWUtY2xvYWtpbmctdG9wLWNuYW1lLXN1Yi0zcC1jbmFtZS5odG1sOiBB
ZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvY25hbWUt
Y2xvYWtpbmctdG9wLWNuYW1lLXN1Yi1tYXRjaGluZy1jbmFtZS1leHBlY3RlZC50eHQ6IEFkZGVk
LgorICAgICAgICAqIGh0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9jbmFtZS1jbG9h
a2luZy10b3AtY25hbWUtc3ViLW1hdGNoaW5nLWNuYW1lLmh0bWw6IEFkZGVkLgorICAgICAgICAq
IGh0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9jbmFtZS1jbG9ha2luZy10b3AtY25h
bWUtc3ViLW5vLWNuYW1lLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0
cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL2NuYW1lLWNsb2FraW5nLXRvcC1jbmFtZS1zdWItbm8t
Y25hbWUuaHRtbDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0
aXN0aWNzL2NuYW1lLWNsb2FraW5nLXRvcC1uby1jbmFtZS1zdWItMXAtY25hbWUtZXhwZWN0ZWQu
dHh0OiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3Mv
Y25hbWUtY2xvYWtpbmctdG9wLW5vLWNuYW1lLXN1Yi0xcC1jbmFtZS5odG1sOiBBZGRlZC4KKyAg
ICAgICAgKiBodHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvY25hbWUtY2xvYWtpbmct
dG9wLW5vLWNuYW1lLXN1Yi0zcC1jbmFtZS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAq
IGh0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9jbmFtZS1jbG9ha2luZy10b3Atbm8t
Y25hbWUtc3ViLTNwLWNuYW1lLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvcmVz
b3VyY2VMb2FkU3RhdGlzdGljcy9jbmFtZS1jbG9ha2luZy10b3Atbm8tY25hbWUtc3ViLW5vLWNu
YW1lLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9yZXNvdXJjZUxv
YWRTdGF0aXN0aWNzL2NuYW1lLWNsb2FraW5nLXRvcC1uby1jbmFtZS1zdWItbm8tY25hbWUuaHRt
bDogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vaW9zLTEzL1Rlc3RFeHBlY3RhdGlvbnM6Cisg
ICAgICAgICAgICBOZXcgdGVzdHMgbWFya2VkIGFzIFsgU2tpcCBdLgorICAgICAgICAqIHBsYXRm
b3JtL2lvcy13azIvVGVzdEV4cGVjdGF0aW9uczoKKyAgICAgICAgICAgIE5ldyB0ZXN0cyBtYXJr
ZWQgYXMgWyBQYXNzIF0gaW4gZ2VuZXJhbC4KKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMtd2syL1Rl
c3RFeHBlY3RhdGlvbnM6CisgICAgICAgICAgICBOZXcgdGVzdHMgbWFya2VkIGFzIFsgUGFzcyBd
IGZvciBCaWdTdXIrLgorICAgICAgICAqIHBsYXRmb3JtL3drMi9UZXN0RXhwZWN0YXRpb25zOgor
ICAgICAgICAgICAgTmV3IHRlc3RzIG1hcmtlZCBhcyBbIFNraXAgXSBpbiBnZW5lcmFsLgorCiAy
MDIwLTA4LTA1ICBMYXVybyBNb3VyYSAgPGxtb3VyYUBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtH
VEtdW1dQRV0gbWVkaWEvbWVkaWEtc291cmNlL21lZGlhLXNvdXJjZS13ZWJtLmh0bWwgaXMgdGlt
aW5nIG91dApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRT
dGF0aXN0aWNzL2NuYW1lLWNsb2FraW5nLXRvcC1jbmFtZS1zdWItMXAtY25hbWUtZXhwZWN0ZWQu
dHh0IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL2NuYW1l
LWNsb2FraW5nLXRvcC1jbmFtZS1zdWItMXAtY25hbWUtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
Ljk0OGZiNWNjZDZlNTcxYjMzYzU3MmY1NmQyZjc2NmNlMDY2M2JhNGMKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvY25hbWUt
Y2xvYWtpbmctdG9wLWNuYW1lLXN1Yi0xcC1jbmFtZS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwx
MCBAQAorVGVzdCBmb3IgQ05BTUUgQ2xvYWtpbmc6IE5vIGNvb2tpZSBleHBpcnkgY2FwcGluZyBp
ZiB0aGUgdG9wIGZyYW1lIGhhcyBhbiBhbHRlcm5hdGUgQ05BTUUgYW5kIHRoZSBzdWIgcmVzb3Vy
Y2UgaGFzIGFuIGFsdGVybmF0ZSBDTkFNRSB0aGF0IG1hdGNoZXMgdGhlIGZpcnN0IHBhcnR5IChu
b3QgaXRzIENOQU1FKS4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQ
QVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BBU1MgQ29v
a2llIG5hbWVkIGNuYW1lVGVzdENvb2tpZSBleHBpcmVzIGluIG1vcmUgdGhhbiA2MDU0MDAgc2Vj
b25kcy4KK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQor
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3Rp
Y3MvY25hbWUtY2xvYWtpbmctdG9wLWNuYW1lLXN1Yi0xcC1jbmFtZS5odG1sIGIvTGF5b3V0VGVz
dHMvaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL2NuYW1lLWNsb2FraW5nLXRvcC1j
bmFtZS1zdWItMXAtY25hbWUuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44YzgzMDRiMGI4OWM1NWYyZjcwY2Q4
MDE2ODU0MDNkMjlkYmEyYTE3Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL2NuYW1lLWNsb2FraW5nLXRvcC1jbmFtZS1zdWIt
MXAtY25hbWUuaHRtbApAQCAtMCwwICsxLDY4IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sIGxh
bmc9ImVuIj4KKzxoZWFkPgorICAgIDxtZXRhIGNoYXJzZXQ9IlVURi04Ij4KKyAgICA8c2NyaXB0
IHNyYz0iL2pzLXRlc3QtcmVzb3VyY2VzL2pzLXRlc3QuanMiPjwvc2NyaXB0PgorICAgIDxzY3Jp
cHQgc3JjPSIvY29va2llcy9yZXNvdXJjZXMvY29va2llLXV0aWxpdGllcy5qcyI+PC9zY3JpcHQ+
CisgICAgPHNjcmlwdCBzcmM9InJlc291cmNlcy91dGlsLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4K
Kzxib2R5IG9ubG9hZD0icnVuVGVzdCgpIj4KKzxzY3JpcHQ+CisgICAgZGVzY3JpcHRpb24oIlRl
c3QgZm9yIENOQU1FIENsb2FraW5nOiBObyBjb29raWUgZXhwaXJ5IGNhcHBpbmcgaWYgdGhlIHRv
cCBmcmFtZSBoYXMgYW4gYWx0ZXJuYXRlIENOQU1FIGFuZCB0aGUgc3ViIHJlc291cmNlIGhhcyBh
biBhbHRlcm5hdGUgQ05BTUUgdGhhdCBtYXRjaGVzIHRoZSBmaXJzdCBwYXJ0eSAobm90IGl0cyBD
TkFNRSkuIik7CisgICAganNUZXN0SXNBc3luYyA9IHRydWU7CisKKyAgICBmdW5jdGlvbiBmaW5p
c2hUZXN0KCkgeworICAgICAgICByZXNldENvb2tpZXNGb3JDdXJyZW50T3JpZ2luKCk7CisgICAg
ICAgIHNldEVuYWJsZUZlYXR1cmUoZmFsc2UsIGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgZmlu
aXNoSlNUZXN0KCk7CisgICAgICAgIH0pOworICAgIH0KKworICAgIGZ1bmN0aW9uIGNoZWNrQ29v
a2llRXhwaXJ5KGNvb2tpZURhdGEsIHNlY29uZHMsIHNob3VsZEJlTGVzc1RoYW4pIHsKKyAgICAg
ICAgbGV0IG5vdyA9IG5ldyBEYXRlKCk7CisgICAgICAgIGxldCBleHBpcnlEYXRlSW5NaWxsaXNl
Y29uZHMgPSBub3cuZ2V0VGltZSgpICsgKHNlY29uZHMgKiAxMDAwKTsKKworICAgICAgICBpZiAo
KGNvb2tpZURhdGFbImV4cGlyZXMiXSA8IGV4cGlyeURhdGVJbk1pbGxpc2Vjb25kcykgPT09IHNo
b3VsZEJlTGVzc1RoYW4pCisgICAgICAgICAgICB0ZXN0UGFzc2VkKCJDb29raWUgbmFtZWQgIiAr
IGNvb2tpZURhdGFbIm5hbWUiXSArICIgZXhwaXJlcyBpbiAiICsgKHNob3VsZEJlTGVzc1RoYW4g
PyAibGVzcyIgOiAibW9yZSIpICsgIiB0aGFuICIgKyBzZWNvbmRzICsgIiBzZWNvbmRzLiIpOwor
ICAgICAgICBlbHNlCisgICAgICAgICAgICB0ZXN0RmFpbGVkKCJDb29raWUgbmFtZWQgIiArIGNv
b2tpZURhdGFbIm5hbWUiXSArICIgZXhwaXJlcyBpbiAiICsgKHNob3VsZEJlTGVzc1RoYW4gPyAi
bW9yZSIgOiAibGVzcyIpICsgIiB0aGFuICIgKyBzZWNvbmRzICsgIiBzZWNvbmRzLiIpOworICAg
IH0KKworICAgIGNvbnN0IG9uZVdlZWtJblNlY29uZHMgPSA3ICogMjQgKiA2MCAqIDYwOworICAg
IGNvbnN0IG92ZXJPbmVXZWVrSW5TZWNvbmRzID0gb25lV2Vla0luU2Vjb25kcyArIDYwMDsKKyAg
ICBjb25zdCBjb29raWVOYW1lID0gImNuYW1lVGVzdENvb2tpZSI7CisgICAgY29uc3Qgc3ViUGF0
aFRvU2V0Rmlyc3RQYXJ0eUNvb2tpZSA9ICJyZXNvdXJjZXMvc2V0LWNvb2tpZS5waHA/bmFtZT0i
ICsgY29va2llTmFtZSArICImdmFsdWU9dmFsdWUmZHVtbXk9IiArIE1hdGgucmFuZG9tKCk7CisK
KyAgICBmdW5jdGlvbiBzZXRBbmRDaGVja0Nvb2tpZSgpIHsKKyAgICAgICAgZmV0Y2goc3ViUGF0
aFRvU2V0Rmlyc3RQYXJ0eUNvb2tpZSkudGhlbihmdW5jdGlvbigpIHsKKyAgICAgICAgICAgIGlm
IChpbnRlcm5hbHMpIHsKKyAgICAgICAgICAgICAgICBsZXQgY29va2llcyA9IGludGVybmFscy5n
ZXRDb29raWVzKCk7CisgICAgICAgICAgICAgICAgaWYgKCFjb29raWVzLmxlbmd0aCkKKyAgICAg
ICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiTm8gY29va2llcyBmb3VuZC4iKTsKKyAgICAgICAg
ICAgICAgICBmb3IgKGxldCBjb29raWUgb2YgY29va2llcykgeworICAgICAgICAgICAgICAgICAg
ICBpZiAoY29va2llLm5hbWUgPT09IGNvb2tpZU5hbWUpIHsKKyAgICAgICAgICAgICAgICAgICAg
ICAgIGNoZWNrQ29va2llRXhwaXJ5KGNvb2tpZSwgb3Zlck9uZVdlZWtJblNlY29uZHMsIGZhbHNl
KTsKKyAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgICAg
IHRlc3RGYWlsZWQoIlVua25vd24gY29va2llICIgKyBjb29raWUubmFtZSArICIgZm91bmQuIik7
CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAg
ICAgZmluaXNoVGVzdCgpOworICAgICAgICAgICAgfQorICAgICAgICB9KTsKKyAgICB9CisKKyAg
ICBjb25zdCBmaXJzdFBhcnR5ID0gImh0dHA6Ly8xMjcuMC4wLjE6ODAwMCI7CisgICAgY29uc3Qg
Zmlyc3RQYXJ0eUNOQU1FRm9yVGVzdGluZyA9ICJodHRwOi8vdGVzdHdlYmtpdC5vcmciOworICAg
IGNvbnN0IHRoaXJkUGFydHlDTkFNRUZvclRlc3RpbmcgPSBmaXJzdFBhcnR5OworCisgICAgZnVu
Y3Rpb24gcnVuVGVzdCgpIHsKKyAgICAgICAgc2V0RW5hYmxlRmVhdHVyZSh0cnVlLCBmdW5jdGlv
bigpIHsKKyAgICAgICAgICAgIHRlc3RSdW5uZXIuc3RhdGlzdGljc1NldEZpcnN0UGFydHlIb3N0
Q05BTUVEb21haW4oZmlyc3RQYXJ0eSwgZmlyc3RQYXJ0eUNOQU1FRm9yVGVzdGluZywgZnVuY3Rp
b24oKSB7CisgICAgICAgICAgICAgICAgdGVzdFJ1bm5lci5zdGF0aXN0aWNzU2V0VGhpcmRQYXJ0
eUNOQU1FRG9tYWluKHRoaXJkUGFydHlDTkFNRUZvclRlc3RpbmcsIGZ1bmN0aW9uKCkgeworICAg
ICAgICAgICAgICAgICAgICBzZXRBbmRDaGVja0Nvb2tpZSgpOworICAgICAgICAgICAgICAgIH0p
OworICAgICAgICAgICAgfSk7CisgICAgICAgIH0pOworICAgIH0KKzwvc2NyaXB0PgorPC9ib2R5
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0
aWNzL2NuYW1lLWNsb2FraW5nLXRvcC1jbmFtZS1zdWItM3AtY25hbWUtZXhwZWN0ZWQudHh0IGIv
TGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL2NuYW1lLWNsb2Fr
aW5nLXRvcC1jbmFtZS1zdWItM3AtY25hbWUtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjcxZjkz
MzAzZTg1YWMwNmQyOTlhOWMwNWNmNjY1NmMwMWViOTc1NzgKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9odHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvY25hbWUtY2xvYWtp
bmctdG9wLWNuYW1lLXN1Yi0zcC1jbmFtZS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxMCBAQAor
VGVzdCBmb3IgQ05BTUUgQ2xvYWtpbmc6IENvb2tpZSBleHBpcnkgY2FwcGluZyBpZiB0aGUgdG9w
IGZyYW1lIGhhcyBhbiBhbHRlcm5hdGUgQ05BTUUgYW5kIHRoZSBzdWIgcmVzb3VyY2UgaGFzIGEg
ZGlmZmVyZW50IGFsdGVybmF0ZSBDTkFNRS4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEg
c2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgor
CisKK1BBU1MgQ29va2llIG5hbWVkIGNuYW1lVGVzdENvb2tpZSBleHBpcmVzIGluIGxlc3MgdGhh
biA2MDU0MDAgc2Vjb25kcy4KK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVT
VCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3Jlc291cmNl
TG9hZFN0YXRpc3RpY3MvY25hbWUtY2xvYWtpbmctdG9wLWNuYW1lLXN1Yi0zcC1jbmFtZS5odG1s
IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL2NuYW1lLWNs
b2FraW5nLXRvcC1jbmFtZS1zdWItM3AtY25hbWUuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iNmFjNzgxZmY4
MWMyMWZhYjk5OTU5OGUxZjY1ZDk1YWY3ZmRkZjk4Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL2NuYW1lLWNsb2FraW5nLXRv
cC1jbmFtZS1zdWItM3AtY25hbWUuaHRtbApAQCAtMCwwICsxLDc0IEBACis8IURPQ1RZUEUgaHRt
bD4KKzxodG1sIGxhbmc9ImVuIj4KKzxoZWFkPgorICAgIDxtZXRhIGNoYXJzZXQ9IlVURi04Ij4K
KyAgICA8c2NyaXB0IHNyYz0iL2pzLXRlc3QtcmVzb3VyY2VzL2pzLXRlc3QuanMiPjwvc2NyaXB0
PgorICAgIDxzY3JpcHQgc3JjPSIvY29va2llcy9yZXNvdXJjZXMvY29va2llLXV0aWxpdGllcy5q
cyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9InJlc291cmNlcy91dGlsLmpzIj48L3Njcmlw
dD4KKzwvaGVhZD4KKzxib2R5IG9ubG9hZD0icnVuVGVzdCgpIj4KKzxzY3JpcHQ+CisgICAgZGVz
Y3JpcHRpb24oIlRlc3QgZm9yIENOQU1FIENsb2FraW5nOiBDb29raWUgZXhwaXJ5IGNhcHBpbmcg
aWYgdGhlIHRvcCBmcmFtZSBoYXMgYW4gYWx0ZXJuYXRlIENOQU1FIGFuZCB0aGUgc3ViIHJlc291
cmNlIGhhcyBhIGRpZmZlcmVudCBhbHRlcm5hdGUgQ05BTUUuIik7CisgICAganNUZXN0SXNBc3lu
YyA9IHRydWU7CisKKyAgICBmdW5jdGlvbiBmaW5pc2hUZXN0KCkgeworICAgICAgICByZXNldENv
b2tpZXNGb3JDdXJyZW50T3JpZ2luKCk7CisgICAgICAgIHNldEVuYWJsZUZlYXR1cmUoZmFsc2Us
IGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgZmluaXNoSlNUZXN0KCk7CisgICAgICAgIH0pOwor
ICAgIH0KKworICAgIGNvbnN0IG9uZVdlZWtJblNlY29uZHMgPSA3ICogMjQgKiA2MCAqIDYwOwor
ICAgIGNvbnN0IG92ZXJPbmVXZWVrSW5TZWNvbmRzID0gb25lV2Vla0luU2Vjb25kcyArIDYwMDsK
KyAgICBjb25zdCB1bmRlck9uZVdlZWtJblNlY29uZHMgPSBvbmVXZWVrSW5TZWNvbmRzIC0gNjAw
OworCisgICAgZnVuY3Rpb24gY2hlY2tDb29raWVFeHBpcnkoY29va2llRGF0YSwgc2Vjb25kcywg
c2hvdWxkQmVMZXNzVGhhbikgeworICAgICAgICBsZXQgbm93ID0gbmV3IERhdGUoKTsKKyAgICAg
ICAgbGV0IGV4cGlyeURhdGVJbk1pbGxpc2Vjb25kcyA9IG5vdy5nZXRUaW1lKCkgKyAoc2Vjb25k
cyAqIDEwMDApOworCisgICAgICAgIGlmICgoY29va2llRGF0YVsiZXhwaXJlcyJdIDwgZXhwaXJ5
RGF0ZUluTWlsbGlzZWNvbmRzKSA9PT0gc2hvdWxkQmVMZXNzVGhhbikgeworICAgICAgICAgICAg
bGV0IHVuZGVyT25lV2Vla0V4cGlyeURhdGVJbk1pbGxpc2Vjb25kcyA9IG5vdy5nZXRUaW1lKCkg
KyAodW5kZXJPbmVXZWVrSW5TZWNvbmRzICogMTAwMCk7CisgICAgICAgICAgICBpZiAoY29va2ll
RGF0YVsiZXhwaXJlcyJdIDwgdW5kZXJPbmVXZWVrRXhwaXJ5RGF0ZUluTWlsbGlzZWNvbmRzKQor
ICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoIkNvb2tpZSBuYW1lZCAiICsgY29va2llRGF0YVsi
bmFtZSJdICsgIiB3YXMgY2FwcGVkIHRvbyBsb3cuIik7CisgICAgICAgICAgICBlbHNlCisgICAg
ICAgICAgICAgICAgdGVzdFBhc3NlZCgiQ29va2llIG5hbWVkICIgKyBjb29raWVEYXRhWyJuYW1l
Il0gKyAiIGV4cGlyZXMgaW4gIiArIChzaG91bGRCZUxlc3NUaGFuID8gImxlc3MiIDogIm1vcmUi
KSArICIgdGhhbiAiICsgc2Vjb25kcyArICIgc2Vjb25kcy4iKTsKKyAgICAgICAgfSBlbHNlCisg
ICAgICAgICAgICB0ZXN0RmFpbGVkKCJDb29raWUgbmFtZWQgIiArIGNvb2tpZURhdGFbIm5hbWUi
XSArICIgZXhwaXJlcyBpbiAiICsgKHNob3VsZEJlTGVzc1RoYW4gPyAibW9yZSIgOiAibGVzcyIp
ICsgIiB0aGFuICIgKyBzZWNvbmRzICsgIiBzZWNvbmRzLiIpOworICAgIH0KKworICAgIGNvbnN0
IGNvb2tpZU5hbWUgPSAiY25hbWVUZXN0Q29va2llIjsKKyAgICBjb25zdCBzdWJQYXRoVG9TZXRG
aXJzdFBhcnR5Q29va2llID0gInJlc291cmNlcy9zZXQtY29va2llLnBocD9uYW1lPSIgKyBjb29r
aWVOYW1lICsgIiZ2YWx1ZT12YWx1ZSZkdW1teT0iICsgTWF0aC5yYW5kb20oKTsKKworICAgIGZ1
bmN0aW9uIHNldEFuZENoZWNrQ29va2llKCkgeworICAgICAgICBmZXRjaChzdWJQYXRoVG9TZXRG
aXJzdFBhcnR5Q29va2llKS50aGVuKGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgaWYgKGludGVy
bmFscykgeworICAgICAgICAgICAgICAgIGxldCBjb29raWVzID0gaW50ZXJuYWxzLmdldENvb2tp
ZXMoKTsKKyAgICAgICAgICAgICAgICBpZiAoIWNvb2tpZXMubGVuZ3RoKQorICAgICAgICAgICAg
ICAgICAgICB0ZXN0RmFpbGVkKCJObyBjb29raWVzIGZvdW5kLiIpOworICAgICAgICAgICAgICAg
IGZvciAobGV0IGNvb2tpZSBvZiBjb29raWVzKSB7CisgICAgICAgICAgICAgICAgICAgIGlmIChj
b29raWUubmFtZSA9PT0gY29va2llTmFtZSkgeworICAgICAgICAgICAgICAgICAgICAgICAgY2hl
Y2tDb29raWVFeHBpcnkoY29va2llLCBvdmVyT25lV2Vla0luU2Vjb25kcywgdHJ1ZSk7CisgICAg
ICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0RmFp
bGVkKCJVbmtub3duIGNvb2tpZSAiICsgY29va2llLm5hbWUgKyAiIGZvdW5kLiIpOworICAgICAg
ICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGZpbmlz
aFRlc3QoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSk7CisgICAgfQorCisgICAgY29uc3Qg
Zmlyc3RQYXJ0eSA9ICJodHRwOi8vMTI3LjAuMC4xOjgwMDAiOworICAgIGNvbnN0IGZpcnN0UGFy
dHlDTkFNRUZvclRlc3RpbmcgPSAiaHR0cDovL3Rlc3R3ZWJraXQub3JnIjsKKyAgICBjb25zdCB0
aGlyZFBhcnR5Q05BTUVGb3JUZXN0aW5nID0gImh0dHA6Ly8zcmRwYXJ0eXRlc3R3ZWJraXQub3Jn
IjsKKworICAgIGZ1bmN0aW9uIHJ1blRlc3QoKSB7CisgICAgICAgIHNldEVuYWJsZUZlYXR1cmUo
dHJ1ZSwgZnVuY3Rpb24oKSB7CisgICAgICAgICAgICB0ZXN0UnVubmVyLnN0YXRpc3RpY3NTZXRG
aXJzdFBhcnR5SG9zdENOQU1FRG9tYWluKGZpcnN0UGFydHksIGZpcnN0UGFydHlDTkFNRUZvclRl
c3RpbmcsIGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgICAgIHRlc3RSdW5uZXIuc3RhdGlzdGlj
c1NldFRoaXJkUGFydHlDTkFNRURvbWFpbih0aGlyZFBhcnR5Q05BTUVGb3JUZXN0aW5nLCBmdW5j
dGlvbigpIHsKKyAgICAgICAgICAgICAgICAgICAgc2V0QW5kQ2hlY2tDb29raWUoKTsKKyAgICAg
ICAgICAgICAgICB9KTsKKyAgICAgICAgICAgIH0pOworICAgICAgICB9KTsKKyAgICB9Cis8L3Nj
cmlwdD4KKzwvYm9keT4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvcmVzb3Vy
Y2VMb2FkU3RhdGlzdGljcy9jbmFtZS1jbG9ha2luZy10b3AtY25hbWUtc3ViLW1hdGNoaW5nLWNu
YW1lLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3Rh
dGlzdGljcy9jbmFtZS1jbG9ha2luZy10b3AtY25hbWUtc3ViLW1hdGNoaW5nLWNuYW1lLWV4cGVj
dGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi41ODE4YWUxMzQ1YWVjMmMwMjNmYjc2N2Q2ZWM1YWIxZGFlZGRm
ZGVhCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9yZXNvdXJjZUxv
YWRTdGF0aXN0aWNzL2NuYW1lLWNsb2FraW5nLXRvcC1jbmFtZS1zdWItbWF0Y2hpbmctY25hbWUt
ZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTAgQEAKK1Rlc3QgZm9yIENOQU1FIENsb2FraW5nOiBO
byBjb29raWUgZXhwaXJ5IGNhcHBpbmcgaWYgdGhlIHRvcCBmcmFtZSBoYXMgYW4gYWx0ZXJuYXRl
IENOQU1FIGFuZCB0aGUgc3ViIHJlc291cmNlIGhhcyBtYXRjaGluZyBhbHRlcm5hdGUgQ05BTUUu
CisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMs
IGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNTIENvb2tpZSBuYW1lZCBjbmFt
ZVRlc3RDb29raWUgZXhwaXJlcyBpbiBtb3JlIHRoYW4gNjA1NDAwIHNlY29uZHMuCitQQVNTIHN1
Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL2NuYW1lLWNsb2Fr
aW5nLXRvcC1jbmFtZS1zdWItbWF0Y2hpbmctY25hbWUuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAv
dGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9jbmFtZS1jbG9ha2luZy10b3AtY25hbWUtc3Vi
LW1hdGNoaW5nLWNuYW1lLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjlmYTFmMDNiZWZlZDQ2NmZlNjU1ZWJj
NzYzM2VhM2JkZDVkYWQyOQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVz
dHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9jbmFtZS1jbG9ha2luZy10b3AtY25hbWUtc3ViLW1h
dGNoaW5nLWNuYW1lLmh0bWwKQEAgLTAsMCArMSw2OCBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRt
bCBsYW5nPSJlbiI+Cis8aGVhZD4KKyAgICA8bWV0YSBjaGFyc2V0PSJVVEYtOCI+CisgICAgPHNj
cmlwdCBzcmM9Ii9qcy10ZXN0LXJlc291cmNlcy9qcy10ZXN0LmpzIj48L3NjcmlwdD4KKyAgICA8
c2NyaXB0IHNyYz0iL2Nvb2tpZXMvcmVzb3VyY2VzL2Nvb2tpZS11dGlsaXRpZXMuanMiPjwvc2Ny
aXB0PgorICAgIDxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvdXRpbC5qcyI+PC9zY3JpcHQ+Cis8L2hl
YWQ+Cis8Ym9keSBvbmxvYWQ9InJ1blRlc3QoKSI+Cis8c2NyaXB0PgorICAgIGRlc2NyaXB0aW9u
KCJUZXN0IGZvciBDTkFNRSBDbG9ha2luZzogTm8gY29va2llIGV4cGlyeSBjYXBwaW5nIGlmIHRo
ZSB0b3AgZnJhbWUgaGFzIGFuIGFsdGVybmF0ZSBDTkFNRSBhbmQgdGhlIHN1YiByZXNvdXJjZSBo
YXMgbWF0Y2hpbmcgYWx0ZXJuYXRlIENOQU1FLiIpOworICAgIGpzVGVzdElzQXN5bmMgPSB0cnVl
OworCisgICAgZnVuY3Rpb24gZmluaXNoVGVzdCgpIHsKKyAgICAgICAgcmVzZXRDb29raWVzRm9y
Q3VycmVudE9yaWdpbigpOworICAgICAgICBzZXRFbmFibGVGZWF0dXJlKGZhbHNlLCBmdW5jdGlv
bigpIHsKKyAgICAgICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAgICAgICB9KTsKKyAgICB9CisK
KyAgICBmdW5jdGlvbiBjaGVja0Nvb2tpZUV4cGlyeShjb29raWVEYXRhLCBzZWNvbmRzLCBzaG91
bGRCZUxlc3NUaGFuKSB7CisgICAgICAgIGxldCBub3cgPSBuZXcgRGF0ZSgpOworICAgICAgICBs
ZXQgZXhwaXJ5RGF0ZUluTWlsbGlzZWNvbmRzID0gbm93LmdldFRpbWUoKSArIChzZWNvbmRzICog
MTAwMCk7CisKKyAgICAgICAgaWYgKChjb29raWVEYXRhWyJleHBpcmVzIl0gPCBleHBpcnlEYXRl
SW5NaWxsaXNlY29uZHMpID09PSBzaG91bGRCZUxlc3NUaGFuKQorICAgICAgICAgICAgdGVzdFBh
c3NlZCgiQ29va2llIG5hbWVkICIgKyBjb29raWVEYXRhWyJuYW1lIl0gKyAiIGV4cGlyZXMgaW4g
IiArIChzaG91bGRCZUxlc3NUaGFuID8gImxlc3MiIDogIm1vcmUiKSArICIgdGhhbiAiICsgc2Vj
b25kcyArICIgc2Vjb25kcy4iKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgdGVzdEZhaWxl
ZCgiQ29va2llIG5hbWVkICIgKyBjb29raWVEYXRhWyJuYW1lIl0gKyAiIGV4cGlyZXMgaW4gIiAr
IChzaG91bGRCZUxlc3NUaGFuID8gIm1vcmUiIDogImxlc3MiKSArICIgdGhhbiAiICsgc2Vjb25k
cyArICIgc2Vjb25kcy4iKTsKKyAgICB9CisKKyAgICBjb25zdCBvbmVXZWVrSW5TZWNvbmRzID0g
NyAqIDI0ICogNjAgKiA2MDsKKyAgICBjb25zdCBvdmVyT25lV2Vla0luU2Vjb25kcyA9IG9uZVdl
ZWtJblNlY29uZHMgKyA2MDA7CisgICAgY29uc3QgY29va2llTmFtZSA9ICJjbmFtZVRlc3RDb29r
aWUiOworICAgIGNvbnN0IHN1YlBhdGhUb1NldEZpcnN0UGFydHlDb29raWUgPSAicmVzb3VyY2Vz
L3NldC1jb29raWUucGhwP25hbWU9IiArIGNvb2tpZU5hbWUgKyAiJnZhbHVlPXZhbHVlJmR1bW15
PSIgKyBNYXRoLnJhbmRvbSgpOworCisgICAgZnVuY3Rpb24gc2V0QW5kQ2hlY2tDb29raWUoKSB7
CisgICAgICAgIGZldGNoKHN1YlBhdGhUb1NldEZpcnN0UGFydHlDb29raWUpLnRoZW4oZnVuY3Rp
b24oKSB7CisgICAgICAgICAgICBpZiAoaW50ZXJuYWxzKSB7CisgICAgICAgICAgICAgICAgbGV0
IGNvb2tpZXMgPSBpbnRlcm5hbHMuZ2V0Q29va2llcygpOworICAgICAgICAgICAgICAgIGlmICgh
Y29va2llcy5sZW5ndGgpCisgICAgICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoIk5vIGNvb2tp
ZXMgZm91bmQuIik7CisgICAgICAgICAgICAgICAgZm9yIChsZXQgY29va2llIG9mIGNvb2tpZXMp
IHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGNvb2tpZS5uYW1lID09PSBjb29raWVOYW1lKSB7
CisgICAgICAgICAgICAgICAgICAgICAgICBjaGVja0Nvb2tpZUV4cGlyeShjb29raWUsIG92ZXJP
bmVXZWVrSW5TZWNvbmRzLCBmYWxzZSk7CisgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7Cisg
ICAgICAgICAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJVbmtub3duIGNvb2tpZSAiICsgY29v
a2llLm5hbWUgKyAiIGZvdW5kLiIpOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAg
ICAgICAgfQorICAgICAgICAgICAgICAgIGZpbmlzaFRlc3QoKTsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgfSk7CisgICAgfQorCisgICAgY29uc3QgZmlyc3RQYXJ0eSA9ICJodHRwOi8vMTI3LjAu
MC4xOjgwMDAiOworICAgIGNvbnN0IGZpcnN0UGFydHlDTkFNRUZvclRlc3RpbmcgPSAiaHR0cDov
L3Rlc3R3ZWJraXQub3JnIjsKKyAgICBjb25zdCB0aGlyZFBhcnR5Q05BTUVGb3JUZXN0aW5nID0g
Zmlyc3RQYXJ0eUNOQU1FRm9yVGVzdGluZzsKKworICAgIGZ1bmN0aW9uIHJ1blRlc3QoKSB7Cisg
ICAgICAgIHNldEVuYWJsZUZlYXR1cmUodHJ1ZSwgZnVuY3Rpb24oKSB7CisgICAgICAgICAgICB0
ZXN0UnVubmVyLnN0YXRpc3RpY3NTZXRGaXJzdFBhcnR5SG9zdENOQU1FRG9tYWluKGZpcnN0UGFy
dHksIGZpcnN0UGFydHlDTkFNRUZvclRlc3RpbmcsIGZ1bmN0aW9uKCkgeworICAgICAgICAgICAg
ICAgIHRlc3RSdW5uZXIuc3RhdGlzdGljc1NldFRoaXJkUGFydHlDTkFNRURvbWFpbih0aGlyZFBh
cnR5Q05BTUVGb3JUZXN0aW5nLCBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgICAgICAgICAgc2V0
QW5kQ2hlY2tDb29raWUoKTsKKyAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgIH0pOwor
ICAgICAgICB9KTsKKyAgICB9Cis8L3NjcmlwdD4KKzwvYm9keT4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2h0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9jbmFtZS1jbG9ha2luZy10
b3AtY25hbWUtc3ViLW5vLWNuYW1lLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2h0dHAvdGVz
dHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9jbmFtZS1jbG9ha2luZy10b3AtY25hbWUtc3ViLW5v
LWNuYW1lLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iNjUyMGRlZTM5MTVlNDIyZWNiMGNiNDk0
ZGQ0OTQ3ZDI1OWE3NjY2Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0
cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL2NuYW1lLWNsb2FraW5nLXRvcC1jbmFtZS1zdWItbm8t
Y25hbWUtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTAgQEAKK1Rlc3QgZm9yIENOQU1FIENsb2Fr
aW5nOiBObyBjb29raWUgZXhwaXJ5IGNhcHBpbmcgaWYgdGhlIHRvcCBmcmFtZSBoYXMgYW4gYWx0
ZXJuYXRlIENOQU1FIGFuZCB0aGUgc3ViIHJlc291cmNlIGhhcyBubyBhbHRlcm5hdGUgQ05BTUUu
CisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMs
IGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNTIENvb2tpZSBuYW1lZCBjbmFt
ZVRlc3RDb29raWUgZXhwaXJlcyBpbiBtb3JlIHRoYW4gNjA1NDAwIHNlY29uZHMuCitQQVNTIHN1
Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL2NuYW1lLWNsb2Fr
aW5nLXRvcC1jbmFtZS1zdWItbm8tY25hbWUuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMv
cmVzb3VyY2VMb2FkU3RhdGlzdGljcy9jbmFtZS1jbG9ha2luZy10b3AtY25hbWUtc3ViLW5vLWNu
YW1lLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uMDFjYWQ0MzliN2ZjMTY3YTZjOTQ5ZjcwYTkxMDBlNjlhN2Nm
YjIzNgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvcmVzb3VyY2VM
b2FkU3RhdGlzdGljcy9jbmFtZS1jbG9ha2luZy10b3AtY25hbWUtc3ViLW5vLWNuYW1lLmh0bWwK
QEAgLTAsMCArMSw2NSBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbCBsYW5nPSJlbiI+Cis8aGVh
ZD4KKyAgICA8bWV0YSBjaGFyc2V0PSJVVEYtOCI+CisgICAgPHNjcmlwdCBzcmM9Ii9qcy10ZXN0
LXJlc291cmNlcy9qcy10ZXN0LmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNyYz0iL2Nvb2tp
ZXMvcmVzb3VyY2VzL2Nvb2tpZS11dGlsaXRpZXMuanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQg
c3JjPSJyZXNvdXJjZXMvdXRpbC5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keSBvbmxvYWQ9
InJ1blRlc3QoKSI+Cis8c2NyaXB0PgorICAgIGRlc2NyaXB0aW9uKCJUZXN0IGZvciBDTkFNRSBD
bG9ha2luZzogTm8gY29va2llIGV4cGlyeSBjYXBwaW5nIGlmIHRoZSB0b3AgZnJhbWUgaGFzIGFu
IGFsdGVybmF0ZSBDTkFNRSBhbmQgdGhlIHN1YiByZXNvdXJjZSBoYXMgbm8gYWx0ZXJuYXRlIENO
QU1FLiIpOworICAgIGpzVGVzdElzQXN5bmMgPSB0cnVlOworCisgICAgZnVuY3Rpb24gZmluaXNo
VGVzdCgpIHsKKyAgICAgICAgcmVzZXRDb29raWVzRm9yQ3VycmVudE9yaWdpbigpOworICAgICAg
ICBzZXRFbmFibGVGZWF0dXJlKGZhbHNlLCBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgIGZpbmlz
aEpTVGVzdCgpOworICAgICAgICB9KTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBjaGVja0Nvb2tp
ZUV4cGlyeShjb29raWVEYXRhLCBzZWNvbmRzLCBzaG91bGRCZUxlc3NUaGFuKSB7CisgICAgICAg
IGxldCBub3cgPSBuZXcgRGF0ZSgpOworICAgICAgICBsZXQgZXhwaXJ5RGF0ZUluTWlsbGlzZWNv
bmRzID0gbm93LmdldFRpbWUoKSArIChzZWNvbmRzICogMTAwMCk7CisKKyAgICAgICAgaWYgKChj
b29raWVEYXRhWyJleHBpcmVzIl0gPCBleHBpcnlEYXRlSW5NaWxsaXNlY29uZHMpID09PSBzaG91
bGRCZUxlc3NUaGFuKQorICAgICAgICAgICAgdGVzdFBhc3NlZCgiQ29va2llIG5hbWVkICIgKyBj
b29raWVEYXRhWyJuYW1lIl0gKyAiIGV4cGlyZXMgaW4gIiArIChzaG91bGRCZUxlc3NUaGFuID8g
Imxlc3MiIDogIm1vcmUiKSArICIgdGhhbiAiICsgc2Vjb25kcyArICIgc2Vjb25kcy4iKTsKKyAg
ICAgICAgZWxzZQorICAgICAgICAgICAgdGVzdEZhaWxlZCgiQ29va2llIG5hbWVkICIgKyBjb29r
aWVEYXRhWyJuYW1lIl0gKyAiIGV4cGlyZXMgaW4gIiArIChzaG91bGRCZUxlc3NUaGFuID8gIm1v
cmUiIDogImxlc3MiKSArICIgdGhhbiAiICsgc2Vjb25kcyArICIgc2Vjb25kcy4iKTsKKyAgICB9
CisKKyAgICBjb25zdCBvbmVXZWVrSW5TZWNvbmRzID0gNyAqIDI0ICogNjAgKiA2MDsKKyAgICBj
b25zdCBvdmVyT25lV2Vla0luU2Vjb25kcyA9IG9uZVdlZWtJblNlY29uZHMgKyA2MDA7CisgICAg
Y29uc3QgY29va2llTmFtZSA9ICJjbmFtZVRlc3RDb29raWUiOworICAgIGNvbnN0IHN1YlBhdGhU
b1NldEZpcnN0UGFydHlDb29raWUgPSAicmVzb3VyY2VzL3NldC1jb29raWUucGhwP25hbWU9IiAr
IGNvb2tpZU5hbWUgKyAiJnZhbHVlPXZhbHVlJmR1bW15PSIgKyBNYXRoLnJhbmRvbSgpOworCisg
ICAgZnVuY3Rpb24gc2V0QW5kQ2hlY2tDb29raWUoKSB7CisgICAgICAgIGZldGNoKHN1YlBhdGhU
b1NldEZpcnN0UGFydHlDb29raWUpLnRoZW4oZnVuY3Rpb24oKSB7CisgICAgICAgICAgICBpZiAo
aW50ZXJuYWxzKSB7CisgICAgICAgICAgICAgICAgbGV0IGNvb2tpZXMgPSBpbnRlcm5hbHMuZ2V0
Q29va2llcygpOworICAgICAgICAgICAgICAgIGlmICghY29va2llcy5sZW5ndGgpCisgICAgICAg
ICAgICAgICAgICAgIHRlc3RGYWlsZWQoIk5vIGNvb2tpZXMgZm91bmQuIik7CisgICAgICAgICAg
ICAgICAgZm9yIChsZXQgY29va2llIG9mIGNvb2tpZXMpIHsKKyAgICAgICAgICAgICAgICAgICAg
aWYgKGNvb2tpZS5uYW1lID09PSBjb29raWVOYW1lKSB7CisgICAgICAgICAgICAgICAgICAgICAg
ICBjaGVja0Nvb2tpZUV4cGlyeShjb29raWUsIG92ZXJPbmVXZWVrSW5TZWNvbmRzLCBmYWxzZSk7
CisgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgICAgICB0
ZXN0RmFpbGVkKCJVbmtub3duIGNvb2tpZSAiICsgY29va2llLm5hbWUgKyAiIGZvdW5kLiIpOwor
ICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAg
IGZpbmlzaFRlc3QoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSk7CisgICAgfQorCisgICAg
Y29uc3QgZmlyc3RQYXJ0eSA9ICJodHRwOi8vMTI3LjAuMC4xOjgwMDAiOworICAgIGNvbnN0IGZp
cnN0UGFydHlDTkFNRUZvclRlc3RpbmcgPSAiaHR0cDovL3Rlc3R3ZWJraXQub3JnIjsKKworICAg
IGZ1bmN0aW9uIHJ1blRlc3QoKSB7CisgICAgICAgIHNldEVuYWJsZUZlYXR1cmUodHJ1ZSwgZnVu
Y3Rpb24oKSB7CisgICAgICAgICAgICB0ZXN0UnVubmVyLnN0YXRpc3RpY3NTZXRGaXJzdFBhcnR5
SG9zdENOQU1FRG9tYWluKGZpcnN0UGFydHksIGZpcnN0UGFydHlDTkFNRUZvclRlc3RpbmcsIGZ1
bmN0aW9uKCkgeworICAgICAgICAgICAgICAgIHNldEFuZENoZWNrQ29va2llKCk7CisgICAgICAg
ICAgICB9KTsKKyAgICAgICAgfSk7CisgICAgfQorPC9zY3JpcHQ+Cis8L2JvZHk+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvY25hbWUt
Y2xvYWtpbmctdG9wLW5vLWNuYW1lLXN1Yi0xcC1jbmFtZS1leHBlY3RlZC50eHQgYi9MYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvY25hbWUtY2xvYWtpbmctdG9w
LW5vLWNuYW1lLXN1Yi0xcC1jbmFtZS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYWJmYTI5OWNj
YWQ3MGY2NTBlYjYwYTZlOTA4MWZiOTIyYzE3NDEzOQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2h0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9jbmFtZS1jbG9ha2luZy10
b3Atbm8tY25hbWUtc3ViLTFwLWNuYW1lLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDEwIEBACitU
ZXN0IGZvciBDTkFNRSBDbG9ha2luZzogTm8gY29va2llIGV4cGlyeSBjYXBwaW5nIGlmIHRoZSB0
b3AgZnJhbWUgaGFzIG5vIGFsdGVybmF0ZSBDTkFNRSBhbmQgdGhlIHN1YiByZXNvdXJjZSBoYXMg
YW4gYWx0ZXJuYXRlIENOQU1FIHRoYXQgbWF0Y2hlcyB0aGUgZmlyc3QgcGFydHkgKG5vdCBpdHMg
Q05BTUUpLgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1l
c3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworUEFTUyBDb29raWUgbmFt
ZWQgY25hbWVUZXN0Q29va2llIGV4cGlyZXMgaW4gbW9yZSB0aGFuIDYwNTQwMCBzZWNvbmRzLgor
UEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9jbmFt
ZS1jbG9ha2luZy10b3Atbm8tY25hbWUtc3ViLTFwLWNuYW1lLmh0bWwgYi9MYXlvdXRUZXN0cy9o
dHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvY25hbWUtY2xvYWtpbmctdG9wLW5vLWNu
YW1lLXN1Yi0xcC1jbmFtZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjI3Mzc0NjQ1ODNiNWQ0ODA1YmViZjkz
YTg0MGU1ZDA3NzY0NDg4ZjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvY25hbWUtY2xvYWtpbmctdG9wLW5vLWNuYW1lLXN1
Yi0xcC1jbmFtZS5odG1sCkBAIC0wLDAgKzEsNjUgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWwg
bGFuZz0iZW4iPgorPGhlYWQ+CisgICAgPG1ldGEgY2hhcnNldD0iVVRGLTgiPgorICAgIDxzY3Jp
cHQgc3JjPSIvanMtdGVzdC1yZXNvdXJjZXMvanMtdGVzdC5qcyI+PC9zY3JpcHQ+CisgICAgPHNj
cmlwdCBzcmM9Ii9jb29raWVzL3Jlc291cmNlcy9jb29raWUtdXRpbGl0aWVzLmpzIj48L3Njcmlw
dD4KKyAgICA8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3V0aWwuanMiPjwvc2NyaXB0PgorPC9oZWFk
PgorPGJvZHkgb25sb2FkPSJydW5UZXN0KCkiPgorPHNjcmlwdD4KKyAgICBkZXNjcmlwdGlvbigi
VGVzdCBmb3IgQ05BTUUgQ2xvYWtpbmc6IE5vIGNvb2tpZSBleHBpcnkgY2FwcGluZyBpZiB0aGUg
dG9wIGZyYW1lIGhhcyBubyBhbHRlcm5hdGUgQ05BTUUgYW5kIHRoZSBzdWIgcmVzb3VyY2UgaGFz
IGFuIGFsdGVybmF0ZSBDTkFNRSB0aGF0IG1hdGNoZXMgdGhlIGZpcnN0IHBhcnR5IChub3QgaXRz
IENOQU1FKS4iKTsKKyAgICBqc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKworICAgIGZ1bmN0aW9uIGZp
bmlzaFRlc3QoKSB7CisgICAgICAgIHJlc2V0Q29va2llc0ZvckN1cnJlbnRPcmlnaW4oKTsKKyAg
ICAgICAgc2V0RW5hYmxlRmVhdHVyZShmYWxzZSwgZnVuY3Rpb24oKSB7CisgICAgICAgICAgICBm
aW5pc2hKU1Rlc3QoKTsKKyAgICAgICAgfSk7CisgICAgfQorCisgICAgZnVuY3Rpb24gY2hlY2tD
b29raWVFeHBpcnkoY29va2llRGF0YSwgc2Vjb25kcywgc2hvdWxkQmVMZXNzVGhhbikgeworICAg
ICAgICBsZXQgbm93ID0gbmV3IERhdGUoKTsKKyAgICAgICAgbGV0IGV4cGlyeURhdGVJbk1pbGxp
c2Vjb25kcyA9IG5vdy5nZXRUaW1lKCkgKyAoc2Vjb25kcyAqIDEwMDApOworCisgICAgICAgIGlm
ICgoY29va2llRGF0YVsiZXhwaXJlcyJdIDwgZXhwaXJ5RGF0ZUluTWlsbGlzZWNvbmRzKSA9PT0g
c2hvdWxkQmVMZXNzVGhhbikKKyAgICAgICAgICAgIHRlc3RQYXNzZWQoIkNvb2tpZSBuYW1lZCAi
ICsgY29va2llRGF0YVsibmFtZSJdICsgIiBleHBpcmVzIGluICIgKyAoc2hvdWxkQmVMZXNzVGhh
biA/ICJsZXNzIiA6ICJtb3JlIikgKyAiIHRoYW4gIiArIHNlY29uZHMgKyAiIHNlY29uZHMuIik7
CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHRlc3RGYWlsZWQoIkNvb2tpZSBuYW1lZCAiICsg
Y29va2llRGF0YVsibmFtZSJdICsgIiBleHBpcmVzIGluICIgKyAoc2hvdWxkQmVMZXNzVGhhbiA/
ICJtb3JlIiA6ICJsZXNzIikgKyAiIHRoYW4gIiArIHNlY29uZHMgKyAiIHNlY29uZHMuIik7Cisg
ICAgfQorCisgICAgY29uc3Qgb25lV2Vla0luU2Vjb25kcyA9IDcgKiAyNCAqIDYwICogNjA7Cisg
ICAgY29uc3Qgb3Zlck9uZVdlZWtJblNlY29uZHMgPSBvbmVXZWVrSW5TZWNvbmRzICsgNjAwOwor
ICAgIGNvbnN0IGNvb2tpZU5hbWUgPSAiY25hbWVUZXN0Q29va2llIjsKKyAgICBjb25zdCBzdWJQ
YXRoVG9TZXRGaXJzdFBhcnR5Q29va2llID0gInJlc291cmNlcy9zZXQtY29va2llLnBocD9uYW1l
PSIgKyBjb29raWVOYW1lICsgIiZ2YWx1ZT12YWx1ZSZkdW1teT0iICsgTWF0aC5yYW5kb20oKTsK
KworICAgIGZ1bmN0aW9uIHNldEFuZENoZWNrQ29va2llKCkgeworICAgICAgICBmZXRjaChzdWJQ
YXRoVG9TZXRGaXJzdFBhcnR5Q29va2llKS50aGVuKGZ1bmN0aW9uKCkgeworICAgICAgICAgICAg
aWYgKGludGVybmFscykgeworICAgICAgICAgICAgICAgIGxldCBjb29raWVzID0gaW50ZXJuYWxz
LmdldENvb2tpZXMoKTsKKyAgICAgICAgICAgICAgICBpZiAoIWNvb2tpZXMubGVuZ3RoKQorICAg
ICAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJObyBjb29raWVzIGZvdW5kLiIpOworICAgICAg
ICAgICAgICAgIGZvciAobGV0IGNvb2tpZSBvZiBjb29raWVzKSB7CisgICAgICAgICAgICAgICAg
ICAgIGlmIChjb29raWUubmFtZSA9PT0gY29va2llTmFtZSkgeworICAgICAgICAgICAgICAgICAg
ICAgICAgY2hlY2tDb29raWVFeHBpcnkoY29va2llLCBvdmVyT25lV2Vla0luU2Vjb25kcywgZmFs
c2UpOworICAgICAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICAg
ICAgdGVzdEZhaWxlZCgiVW5rbm93biBjb29raWUgIiArIGNvb2tpZS5uYW1lICsgIiBmb3VuZC4i
KTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAg
ICAgICBmaW5pc2hUZXN0KCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0pOworICAgIH0KKwor
ICAgIGNvbnN0IGZpcnN0UGFydHkgPSAiaHR0cDovLzEyNy4wLjAuMTo4MDAwIjsKKyAgICBjb25z
dCB0aGlyZFBhcnR5Q05BTUVGb3JUZXN0aW5nID0gZmlyc3RQYXJ0eTsKKworICAgIGZ1bmN0aW9u
IHJ1blRlc3QoKSB7CisgICAgICAgIHNldEVuYWJsZUZlYXR1cmUodHJ1ZSwgZnVuY3Rpb24oKSB7
CisgICAgICAgICAgICB0ZXN0UnVubmVyLnN0YXRpc3RpY3NTZXRUaGlyZFBhcnR5Q05BTUVEb21h
aW4odGhpcmRQYXJ0eUNOQU1FRm9yVGVzdGluZywgZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAg
ICAgc2V0QW5kQ2hlY2tDb29raWUoKTsKKyAgICAgICAgICAgIH0pOworICAgICAgICB9KTsKKyAg
ICB9Cis8L3NjcmlwdD4KKzwvYm9keT4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVz
dHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9jbmFtZS1jbG9ha2luZy10b3Atbm8tY25hbWUtc3Vi
LTNwLWNuYW1lLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvcmVzb3VyY2VM
b2FkU3RhdGlzdGljcy9jbmFtZS1jbG9ha2luZy10b3Atbm8tY25hbWUtc3ViLTNwLWNuYW1lLWV4
cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40NWQyZWQ2ZmQ3ZjYxYzYxZTdjMDBiMmVlODU4ZGNhN2Yz
ODE4ZGU0Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9yZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzL2NuYW1lLWNsb2FraW5nLXRvcC1uby1jbmFtZS1zdWItM3AtY25hbWUt
ZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTAgQEAKK1Rlc3QgZm9yIENOQU1FIENsb2FraW5nOiBD
b29raWUgZXhwaXJ5IGNhcHBpbmcgaWYgdGhlIHRvcCBmcmFtZSBoYXMgbm8gYWx0ZXJuYXRlIENO
QU1FIGFuZCB0aGUgc3ViIHJlc291cmNlIGhhcyBhbiBhbHRlcm5hdGUgQ05BTUUuCisKK09uIHN1
Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2Vk
IGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNTIENvb2tpZSBuYW1lZCBjbmFtZVRlc3RDb29r
aWUgZXhwaXJlcyBpbiBsZXNzIHRoYW4gNjA1NDAwIHNlY29uZHMuCitQQVNTIHN1Y2Nlc3NmdWxs
eVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL2NuYW1lLWNsb2FraW5nLXRvcC1u
by1jbmFtZS1zdWItM3AtY25hbWUuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvcmVzb3Vy
Y2VMb2FkU3RhdGlzdGljcy9jbmFtZS1jbG9ha2luZy10b3Atbm8tY25hbWUtc3ViLTNwLWNuYW1l
Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uYjVhYzQ5N2Y5MzM2ZTMyY2JiZmRhOTczZTkwYzQwYTM3OTBkZThh
NwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvcmVzb3VyY2VMb2Fk
U3RhdGlzdGljcy9jbmFtZS1jbG9ha2luZy10b3Atbm8tY25hbWUtc3ViLTNwLWNuYW1lLmh0bWwK
QEAgLTAsMCArMSw3MSBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbCBsYW5nPSJlbiI+Cis8aGVh
ZD4KKyAgICA8bWV0YSBjaGFyc2V0PSJVVEYtOCI+CisgICAgPHNjcmlwdCBzcmM9Ii9qcy10ZXN0
LXJlc291cmNlcy9qcy10ZXN0LmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNyYz0iL2Nvb2tp
ZXMvcmVzb3VyY2VzL2Nvb2tpZS11dGlsaXRpZXMuanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQg
c3JjPSJyZXNvdXJjZXMvdXRpbC5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keSBvbmxvYWQ9
InJ1blRlc3QoKSI+Cis8c2NyaXB0PgorICAgIGRlc2NyaXB0aW9uKCJUZXN0IGZvciBDTkFNRSBD
bG9ha2luZzogQ29va2llIGV4cGlyeSBjYXBwaW5nIGlmIHRoZSB0b3AgZnJhbWUgaGFzIG5vIGFs
dGVybmF0ZSBDTkFNRSBhbmQgdGhlIHN1YiByZXNvdXJjZSBoYXMgYW4gYWx0ZXJuYXRlIENOQU1F
LiIpOworICAgIGpzVGVzdElzQXN5bmMgPSB0cnVlOworCisgICAgZnVuY3Rpb24gZmluaXNoVGVz
dCgpIHsKKyAgICAgICAgcmVzZXRDb29raWVzRm9yQ3VycmVudE9yaWdpbigpOworICAgICAgICBz
ZXRFbmFibGVGZWF0dXJlKGZhbHNlLCBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgIGZpbmlzaEpT
VGVzdCgpOworICAgICAgICB9KTsKKyAgICB9CisKKyAgICBjb25zdCBvbmVXZWVrSW5TZWNvbmRz
ID0gNyAqIDI0ICogNjAgKiA2MDsKKyAgICBjb25zdCBvdmVyT25lV2Vla0luU2Vjb25kcyA9IG9u
ZVdlZWtJblNlY29uZHMgKyA2MDA7CisgICAgY29uc3QgdW5kZXJPbmVXZWVrSW5TZWNvbmRzID0g
b25lV2Vla0luU2Vjb25kcyAtIDYwMDsKKworICAgIGZ1bmN0aW9uIGNoZWNrQ29va2llRXhwaXJ5
KGNvb2tpZURhdGEsIHNlY29uZHMsIHNob3VsZEJlTGVzc1RoYW4pIHsKKyAgICAgICAgbGV0IG5v
dyA9IG5ldyBEYXRlKCk7CisgICAgICAgIGxldCBleHBpcnlEYXRlSW5NaWxsaXNlY29uZHMgPSBu
b3cuZ2V0VGltZSgpICsgKHNlY29uZHMgKiAxMDAwKTsKKworICAgICAgICBpZiAoKGNvb2tpZURh
dGFbImV4cGlyZXMiXSA8IGV4cGlyeURhdGVJbk1pbGxpc2Vjb25kcykgPT09IHNob3VsZEJlTGVz
c1RoYW4pIHsKKyAgICAgICAgICAgIGxldCB1bmRlck9uZVdlZWtFeHBpcnlEYXRlSW5NaWxsaXNl
Y29uZHMgPSBub3cuZ2V0VGltZSgpICsgKHVuZGVyT25lV2Vla0luU2Vjb25kcyAqIDEwMDApOwor
ICAgICAgICAgICAgaWYgKGNvb2tpZURhdGFbImV4cGlyZXMiXSA8IHVuZGVyT25lV2Vla0V4cGly
eURhdGVJbk1pbGxpc2Vjb25kcykKKyAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJDb29raWUg
bmFtZWQgIiArIGNvb2tpZURhdGFbIm5hbWUiXSArICIgd2FzIGNhcHBlZCB0b28gbG93LiIpOwor
ICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoIkNvb2tpZSBuYW1l
ZCAiICsgY29va2llRGF0YVsibmFtZSJdICsgIiBleHBpcmVzIGluICIgKyAoc2hvdWxkQmVMZXNz
VGhhbiA/ICJsZXNzIiA6ICJtb3JlIikgKyAiIHRoYW4gIiArIHNlY29uZHMgKyAiIHNlY29uZHMu
Iik7CisgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgdGVzdEZhaWxlZCgiQ29va2llIG5hbWVk
ICIgKyBjb29raWVEYXRhWyJuYW1lIl0gKyAiIGV4cGlyZXMgaW4gIiArIChzaG91bGRCZUxlc3NU
aGFuID8gIm1vcmUiIDogImxlc3MiKSArICIgdGhhbiAiICsgc2Vjb25kcyArICIgc2Vjb25kcy4i
KTsKKyAgICB9CisKKyAgICBjb25zdCBjb29raWVOYW1lID0gImNuYW1lVGVzdENvb2tpZSI7Cisg
ICAgY29uc3Qgc3ViUGF0aFRvU2V0Rmlyc3RQYXJ0eUNvb2tpZSA9ICJyZXNvdXJjZXMvc2V0LWNv
b2tpZS5waHA/bmFtZT0iICsgY29va2llTmFtZSArICImdmFsdWU9dmFsdWUmZHVtbXk9IiArIE1h
dGgucmFuZG9tKCk7CisKKyAgICBmdW5jdGlvbiBzZXRBbmRDaGVja0Nvb2tpZSgpIHsKKyAgICAg
ICAgZmV0Y2goc3ViUGF0aFRvU2V0Rmlyc3RQYXJ0eUNvb2tpZSkudGhlbihmdW5jdGlvbigpIHsK
KyAgICAgICAgICAgIGlmIChpbnRlcm5hbHMpIHsKKyAgICAgICAgICAgICAgICBsZXQgY29va2ll
cyA9IGludGVybmFscy5nZXRDb29raWVzKCk7CisgICAgICAgICAgICAgICAgaWYgKCFjb29raWVz
Lmxlbmd0aCkKKyAgICAgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiTm8gY29va2llcyBmb3Vu
ZC4iKTsKKyAgICAgICAgICAgICAgICBmb3IgKGxldCBjb29raWUgb2YgY29va2llcykgeworICAg
ICAgICAgICAgICAgICAgICBpZiAoY29va2llLm5hbWUgPT09IGNvb2tpZU5hbWUpIHsKKyAgICAg
ICAgICAgICAgICAgICAgICAgIGNoZWNrQ29va2llRXhwaXJ5KGNvb2tpZSwgb3Zlck9uZVdlZWtJ
blNlY29uZHMsIHRydWUpOworICAgICAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAg
ICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiVW5rbm93biBjb29raWUgIiArIGNvb2tpZS5uYW1l
ICsgIiBmb3VuZC4iKTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0K
KyAgICAgICAgICAgICAgICBmaW5pc2hUZXN0KCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0p
OworICAgIH0KKworICAgIGNvbnN0IGZpcnN0UGFydHkgPSAiaHR0cDovLzEyNy4wLjAuMTo4MDAw
IjsKKyAgICBjb25zdCB0aGlyZFBhcnR5Q05BTUVGb3JUZXN0aW5nID0gImh0dHA6Ly8zcmRwYXJ0
eXRlc3R3ZWJraXQub3JnIjsKKworICAgIGZ1bmN0aW9uIHJ1blRlc3QoKSB7CisgICAgICAgIHNl
dEVuYWJsZUZlYXR1cmUodHJ1ZSwgZnVuY3Rpb24oKSB7CisgICAgICAgICAgICB0ZXN0UnVubmVy
LnN0YXRpc3RpY3NTZXRUaGlyZFBhcnR5Q05BTUVEb21haW4odGhpcmRQYXJ0eUNOQU1FRm9yVGVz
dGluZywgZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAgICAgc2V0QW5kQ2hlY2tDb29raWUoKTsK
KyAgICAgICAgICAgIH0pOworICAgICAgICB9KTsKKyAgICB9Cis8L3NjcmlwdD4KKzwvYm9keT4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGlj
cy9jbmFtZS1jbG9ha2luZy10b3Atbm8tY25hbWUtc3ViLW5vLWNuYW1lLWV4cGVjdGVkLnR4dCBi
L0xheW91dFRlc3RzL2h0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9jbmFtZS1jbG9h
a2luZy10b3Atbm8tY25hbWUtc3ViLW5vLWNuYW1lLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42
MDVjOTljMDQ3NzAyNTM2YWU4MjcxZDZlZGEyOTFiMWQ0ZjQwYmVjCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL2NuYW1lLWNs
b2FraW5nLXRvcC1uby1jbmFtZS1zdWItbm8tY25hbWUtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEs
MTAgQEAKK1Rlc3QgZm9yIENOQU1FIENsb2FraW5nOiBObyBjb29raWUgZXhwaXJ5IGNhcHBpbmcg
aWYgdGhlIHRvcCBmcmFtZSBoYXMgbm8gYWx0ZXJuYXRlIENOQU1FIGFuZCB0aGUgc3ViIHJlc291
cmNlIGhhcyBubyBhbHRlcm5hdGUgQ05BTUUuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBh
IHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4K
KworCitQQVNTIENvb2tpZSBuYW1lZCBjbmFtZVRlc3RDb29raWUgZXhwaXJlcyBpbiBtb3JlIHRo
YW4gNjA1NDAwIHNlY29uZHMuCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RF
U1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9yZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzL2NuYW1lLWNsb2FraW5nLXRvcC1uby1jbmFtZS1zdWItbm8tY25hbWUu
aHRtbCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9jbmFt
ZS1jbG9ha2luZy10b3Atbm8tY25hbWUtc3ViLW5vLWNuYW1lLmh0bWwKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNjYz
ZjliZjY2Njg1Y2EwOTRhNDllNGZkYmNmODliOGVmNmI1M2Y5MQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2h0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9jbmFtZS1jbG9h
a2luZy10b3Atbm8tY25hbWUtc3ViLW5vLWNuYW1lLmh0bWwKQEAgLTAsMCArMSw2MCBAQAorPCFE
T0NUWVBFIGh0bWw+Cis8aHRtbCBsYW5nPSJlbiI+Cis8aGVhZD4KKyAgICA8bWV0YSBjaGFyc2V0
PSJVVEYtOCI+CisgICAgPHNjcmlwdCBzcmM9Ii9qcy10ZXN0LXJlc291cmNlcy9qcy10ZXN0Lmpz
Ij48L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNyYz0iL2Nvb2tpZXMvcmVzb3VyY2VzL2Nvb2tpZS11
dGlsaXRpZXMuanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvdXRpbC5q
cyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keSBvbmxvYWQ9InJ1blRlc3QoKSI+Cis8c2NyaXB0
PgorICAgIGRlc2NyaXB0aW9uKCJUZXN0IGZvciBDTkFNRSBDbG9ha2luZzogTm8gY29va2llIGV4
cGlyeSBjYXBwaW5nIGlmIHRoZSB0b3AgZnJhbWUgaGFzIG5vIGFsdGVybmF0ZSBDTkFNRSBhbmQg
dGhlIHN1YiByZXNvdXJjZSBoYXMgbm8gYWx0ZXJuYXRlIENOQU1FLiIpOworICAgIGpzVGVzdElz
QXN5bmMgPSB0cnVlOworCisgICAgZnVuY3Rpb24gZmluaXNoVGVzdCgpIHsKKyAgICAgICAgcmVz
ZXRDb29raWVzRm9yQ3VycmVudE9yaWdpbigpOworICAgICAgICBzZXRFbmFibGVGZWF0dXJlKGZh
bHNlLCBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAgICAgICB9
KTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBjaGVja0Nvb2tpZUV4cGlyeShjb29raWVEYXRhLCBz
ZWNvbmRzLCBzaG91bGRCZUxlc3NUaGFuKSB7CisgICAgICAgIGxldCBub3cgPSBuZXcgRGF0ZSgp
OworICAgICAgICBsZXQgZXhwaXJ5RGF0ZUluTWlsbGlzZWNvbmRzID0gbm93LmdldFRpbWUoKSAr
IChzZWNvbmRzICogMTAwMCk7CisKKyAgICAgICAgaWYgKChjb29raWVEYXRhWyJleHBpcmVzIl0g
PCBleHBpcnlEYXRlSW5NaWxsaXNlY29uZHMpID09PSBzaG91bGRCZUxlc3NUaGFuKQorICAgICAg
ICAgICAgdGVzdFBhc3NlZCgiQ29va2llIG5hbWVkICIgKyBjb29raWVEYXRhWyJuYW1lIl0gKyAi
IGV4cGlyZXMgaW4gIiArIChzaG91bGRCZUxlc3NUaGFuID8gImxlc3MiIDogIm1vcmUiKSArICIg
dGhhbiAiICsgc2Vjb25kcyArICIgc2Vjb25kcy4iKTsKKyAgICAgICAgZWxzZQorICAgICAgICAg
ICAgdGVzdEZhaWxlZCgiQ29va2llIG5hbWVkICIgKyBjb29raWVEYXRhWyJuYW1lIl0gKyAiIGV4
cGlyZXMgaW4gIiArIChzaG91bGRCZUxlc3NUaGFuID8gIm1vcmUiIDogImxlc3MiKSArICIgdGhh
biAiICsgc2Vjb25kcyArICIgc2Vjb25kcy4iKTsKKyAgICB9CisKKyAgICBjb25zdCBvbmVXZWVr
SW5TZWNvbmRzID0gNyAqIDI0ICogNjAgKiA2MDsKKyAgICBjb25zdCBvdmVyT25lV2Vla0luU2Vj
b25kcyA9IG9uZVdlZWtJblNlY29uZHMgKyA2MDA7CisgICAgY29uc3QgY29va2llTmFtZSA9ICJj
bmFtZVRlc3RDb29raWUiOworICAgIGNvbnN0IHN1YlBhdGhUb1NldEZpcnN0UGFydHlDb29raWUg
PSAicmVzb3VyY2VzL3NldC1jb29raWUucGhwP25hbWU9IiArIGNvb2tpZU5hbWUgKyAiJnZhbHVl
PXZhbHVlJmR1bW15PSIgKyBNYXRoLnJhbmRvbSgpOworCisgICAgZnVuY3Rpb24gc2V0QW5kQ2hl
Y2tDb29raWUoKSB7CisgICAgICAgIGZldGNoKHN1YlBhdGhUb1NldEZpcnN0UGFydHlDb29raWUp
LnRoZW4oZnVuY3Rpb24oKSB7CisgICAgICAgICAgICBpZiAoaW50ZXJuYWxzKSB7CisgICAgICAg
ICAgICAgICAgbGV0IGNvb2tpZXMgPSBpbnRlcm5hbHMuZ2V0Q29va2llcygpOworICAgICAgICAg
ICAgICAgIGlmICghY29va2llcy5sZW5ndGgpCisgICAgICAgICAgICAgICAgICAgIHRlc3RGYWls
ZWQoIk5vIGNvb2tpZXMgZm91bmQuIik7CisgICAgICAgICAgICAgICAgZm9yIChsZXQgY29va2ll
IG9mIGNvb2tpZXMpIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGNvb2tpZS5uYW1lID09PSBj
b29raWVOYW1lKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBjaGVja0Nvb2tpZUV4cGlyeShj
b29raWUsIG92ZXJPbmVXZWVrSW5TZWNvbmRzLCBmYWxzZSk7CisgICAgICAgICAgICAgICAgICAg
IH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJVbmtub3duIGNv
b2tpZSAiICsgY29va2llLm5hbWUgKyAiIGZvdW5kLiIpOworICAgICAgICAgICAgICAgICAgICB9
CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGZpbmlzaFRlc3QoKTsKKyAgICAg
ICAgICAgIH0KKyAgICAgICAgfSk7CisgICAgfQorCisgICAgZnVuY3Rpb24gcnVuVGVzdCgpIHsK
KyAgICAgICAgc2V0RW5hYmxlRmVhdHVyZSh0cnVlLCBmdW5jdGlvbigpIHsKKyAgICAgICAgICAg
IHNldEFuZENoZWNrQ29va2llKCk7CisgICAgICAgIH0pOworICAgIH0KKzwvc2NyaXB0PgorPC9i
b2R5PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vaW9zLTEzL1Rlc3RFeHBlY3Rh
dGlvbnMgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9pb3MtMTMvVGVzdEV4cGVjdGF0aW9ucwppbmRl
eCA0YzNiYTFlMDZiZmQzNjU1NjdkZTI3N2Q2YTY4YWYwNmQ0YzUwODRlLi40MmY0YWY5MGNjMDcw
MjAzZmRjMjQ1NGNkYWRlZGVmOGZiZjU4NTI1IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0
Zm9ybS9pb3MtMTMvVGVzdEV4cGVjdGF0aW9ucworKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9p
b3MtMTMvVGVzdEV4cGVjdGF0aW9ucwpAQCAtMSwzICsxLDEzIEBACiAjIENlcnRhaW4gdmVyc2lv
bnMgb2YgaU9TIHVzZSBkaWZmZXJlbnQgdGV4dCBzZWN1cml0eSBjaGFyYWN0ZXJzLgogd2Via2l0
Lm9yZy9iLzIwOTY5MiBwbGF0Zm9ybS9pb3MvZmFzdC90ZXh0L3RleHQtc2VjdXJpdHktZGlzYy1i
dWxsZXQtcHVhLWlvcy1uZXcuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQotd2Via2l0Lm9yZy9i
LzIwOTY5MiBmYXN0L3RleHQvdGV4dC1zZWN1cml0eS1kaXNjLWJ1bGxldC1wdWEuaHRtbCBbIElt
YWdlT25seUZhaWx1cmUgXQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKK3dlYmtpdC5vcmcv
Yi8yMDk2OTIgZmFzdC90ZXh0L3RleHQtc2VjdXJpdHktZGlzYy1idWxsZXQtcHVhLmh0bWwgWyBJ
bWFnZU9ubHlGYWlsdXJlIF0KKworCisjIFRoZSBDTkFNRSBhbmQgY29va2llIHRyYW5zZm9ybSBT
UElzIGFyZSBvbmx5IGF2YWlsYWJsZSBpbiBpT1MgMTQgYW5kIGFib3ZlLgoraHR0cC90ZXN0cy9y
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzL2NuYW1lLWNsb2FraW5nLXRvcC1jbmFtZS1zdWItMXAtY25h
bWUuaHRtbCBbIFNraXAgXQoraHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL2NuYW1l
LWNsb2FraW5nLXRvcC1jbmFtZS1zdWItM3AtY25hbWUuaHRtbCBbIFNraXAgXQoraHR0cC90ZXN0
cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL2NuYW1lLWNsb2FraW5nLXRvcC1jbmFtZS1zdWItbWF0
Y2hpbmctY25hbWUuaHRtbCBbIFNraXAgXQoraHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0
aWNzL2NuYW1lLWNsb2FraW5nLXRvcC1jbmFtZS1zdWItbm8tY25hbWUuaHRtbCBbIFNraXAgXQor
aHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL2NuYW1lLWNsb2FraW5nLXRvcC1uby1j
bmFtZS1zdWItMXAtY25hbWUuaHRtbCBbIFNraXAgXQoraHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRT
dGF0aXN0aWNzL2NuYW1lLWNsb2FraW5nLXRvcC1uby1jbmFtZS1zdWItM3AtY25hbWUuaHRtbCBb
IFNraXAgXQoraHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL2NuYW1lLWNsb2FraW5n
LXRvcC1uby1jbmFtZS1zdWItbm8tY25hbWUuaHRtbCBbIFNraXAgXQpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvcGxhdGZvcm0vaW9zLXdrMi9UZXN0RXhwZWN0YXRpb25zIGIvTGF5b3V0VGVzdHMv
cGxhdGZvcm0vaW9zLXdrMi9UZXN0RXhwZWN0YXRpb25zCmluZGV4IDkzNjFjMjE2ZGUwYjM3Njlj
NDdhM2Y0ODM0NTdjOWRlYzcyMmE4MzguLmE5ZjU4NWRhNmM2ZDVmNWM2M2EwODY2MjQ5Y2E4YmJh
MWFjM2NkYzIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2lvcy13azIvVGVzdEV4
cGVjdGF0aW9ucworKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9pb3Mtd2syL1Rlc3RFeHBlY3Rh
dGlvbnMKQEAgLTgyLDYgKzgyLDE1IEBAIHNjcm9sbGluZ2Nvb3JkaW5hdG9yL25vbi1mYXN0LXNj
cm9sbGFibGUtcmVnaW9uLXRyYW5zZm9ybWVkLWlmcmFtZS5odG1sIFsgU2tpcCBdCiBodHRwL3Rl
c3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3Mvc3RyaXAtcmVmZXJyZXItdG8tb3JpZ2luLWZvci10
aGlyZC1wYXJ0eS1yZWRpcmVjdHMuaHRtbCBbIFBhc3MgXQogaHR0cC90ZXN0cy9yZXNvdXJjZUxv
YWRTdGF0aXN0aWNzL3N0cmlwLXJlZmVycmVyLXRvLW9yaWdpbi1mb3ItdGhpcmQtcGFydHktcmVx
dWVzdHMuaHRtbCBbIFBhc3MgXQogCisjIFRoZSBDTkFNRSBhbmQgY29va2llIHRyYW5zZm9ybSBT
UElzIGFyZSBvbmx5IGF2YWlsYWJsZSBpbiBpT1MgMTQgYW5kIGFib3ZlLgoraHR0cC90ZXN0cy9y
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzL2NuYW1lLWNsb2FraW5nLXRvcC1jbmFtZS1zdWItMXAtY25h
bWUuaHRtbCBbIFBhc3MgXQoraHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL2NuYW1l
LWNsb2FraW5nLXRvcC1jbmFtZS1zdWItM3AtY25hbWUuaHRtbCBbIFBhc3MgXQoraHR0cC90ZXN0
cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL2NuYW1lLWNsb2FraW5nLXRvcC1jbmFtZS1zdWItbWF0
Y2hpbmctY25hbWUuaHRtbCBbIFBhc3MgXQoraHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0
aWNzL2NuYW1lLWNsb2FraW5nLXRvcC1jbmFtZS1zdWItbm8tY25hbWUuaHRtbCBbIFBhc3MgXQor
aHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL2NuYW1lLWNsb2FraW5nLXRvcC1uby1j
bmFtZS1zdWItMXAtY25hbWUuaHRtbCBbIFBhc3MgXQoraHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRT
dGF0aXN0aWNzL2NuYW1lLWNsb2FraW5nLXRvcC1uby1jbmFtZS1zdWItM3AtY25hbWUuaHRtbCBb
IFBhc3MgXQoraHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL2NuYW1lLWNsb2FraW5n
LXRvcC1uby1jbmFtZS1zdWItbm8tY25hbWUuaHRtbCBbIFBhc3MgXQorCiAjLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vCiAjIEVuZCBwbGF0Zm9ybS1zcGVjaWZpYyBkaXJlY3Rvcmll
cy4KICMvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL3BsYXRmb3JtL21hYy13azIvVGVzdEV4cGVjdGF0aW9ucyBiL0xheW91dFRlc3RzL3Bs
YXRmb3JtL21hYy13azIvVGVzdEV4cGVjdGF0aW9ucwppbmRleCBlMzA4ZGZhODllZmM0ZThkYmJm
Y2E1N2ExNzY0YjQzZDIzMjI3ZmMxLi4zNjlkMzNiMWVhMjAyOGY1YjYyNTRkOGM2Y2RkNmVhYmVl
NTdiZjZjIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2syL1Rlc3RFeHBl
Y3RhdGlvbnMKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMi9UZXN0RXhwZWN0YXRp
b25zCkBAIC03MTMsNiArNzEzLDE1IEBAIGh0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGlj
cy9jYXAtY2FjaGUtbWF4LWFnZS1mb3ItcHJldmFsZW50LXJlc291cmNlLmh0bWwKIFsgQ2F0YWxp
bmErIF0gaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL2VuZm9yY2Utc2FtZXNpdGUt
c3RyaWN0LWJhc2VkLW9uLXRvcC1mcmFtZS11bmlxdWUtcmVkaXJlY3RzLXRvLmh0bWwgWyBQYXNz
IF0KIFsgQ2F0YWxpbmErIF0gaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL2VuZm9y
Y2Utc2FtZXNpdGUtc3RyaWN0LWJhc2VkLW9uLXRvcC1mcmFtZS11bmlxdWUtcmVkaXJlY3RzLXRv
LWRhdGFiYXNlLmh0bWwgWyBQYXNzIF0KIAorIyBUaGUgQ05BTUUgYW5kIGNvb2tpZSB0cmFuc2Zv
cm0gU1BJcyBhcmUgb25seSBhdmFpbGFibGUgaW4gbWFjT1MgQmlnIFN1ciBhbmQgYWJvdmUuCitb
IEJpZ1N1cisgXSBodHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvY25hbWUtY2xvYWtp
bmctdG9wLWNuYW1lLXN1Yi0xcC1jbmFtZS5odG1sIFsgUGFzcyBdCitbIEJpZ1N1cisgXSBodHRw
L3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvY25hbWUtY2xvYWtpbmctdG9wLWNuYW1lLXN1
Yi0zcC1jbmFtZS5odG1sIFsgUGFzcyBdCitbIEJpZ1N1cisgXSBodHRwL3Rlc3RzL3Jlc291cmNl
TG9hZFN0YXRpc3RpY3MvY25hbWUtY2xvYWtpbmctdG9wLWNuYW1lLXN1Yi1tYXRjaGluZy1jbmFt
ZS5odG1sIFsgUGFzcyBdCitbIEJpZ1N1cisgXSBodHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRp
c3RpY3MvY25hbWUtY2xvYWtpbmctdG9wLWNuYW1lLXN1Yi1uby1jbmFtZS5odG1sIFsgUGFzcyBd
CitbIEJpZ1N1cisgXSBodHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvY25hbWUtY2xv
YWtpbmctdG9wLW5vLWNuYW1lLXN1Yi0xcC1jbmFtZS5odG1sIFsgUGFzcyBdCitbIEJpZ1N1cisg
XSBodHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvY25hbWUtY2xvYWtpbmctdG9wLW5v
LWNuYW1lLXN1Yi0zcC1jbmFtZS5odG1sIFsgUGFzcyBdCitbIEJpZ1N1cisgXSBodHRwL3Rlc3Rz
L3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvY25hbWUtY2xvYWtpbmctdG9wLW5vLWNuYW1lLXN1Yi1u
by1jbmFtZS5odG1sIFsgUGFzcyBdCisKICMgU2tpcHBlZCBpbiBnZW5lcmFsIGV4cGVjdGF0aW9u
cyBzaW5jZSB0aGV5IG9ubHkgd29yayBvbiBpT1MgYW5kIE1hYywgV0syLgogbWVkaWEvZGVhY3Rp
dmF0ZS1hdWRpby1zZXNzaW9uLmh0bWwgWyBQYXNzIF0KIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvcGxhdGZvcm0vd2syL1Rlc3RFeHBlY3RhdGlvbnMgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93
azIvVGVzdEV4cGVjdGF0aW9ucwppbmRleCBkMGQ4NmIxMDMzNjUzMmFlMjM5ZGMzZDI3ZGVkMjYx
ODkwYmZmODBmLi40ZWExNGJjZTU4OGY1MjJmMWNhZjU5NjFhNmJlZjE2ODc2ZjFkMjUxIDEwMDY0
NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93azIvVGVzdEV4cGVjdGF0aW9ucworKysgYi9M
YXlvdXRUZXN0cy9wbGF0Zm9ybS93azIvVGVzdEV4cGVjdGF0aW9ucwpAQCAtNzMwLDYgKzczMCwx
NSBAQCBodHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3Mvc2V0LWFsbC1jb29raWVzLXRv
LXNhbWUtc2l0ZS1zdHJpY3QuaHRtbCBbIFNraQogaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0
aXN0aWNzL2VuZm9yY2Utc2FtZXNpdGUtc3RyaWN0LWJhc2VkLW9uLXRvcC1mcmFtZS11bmlxdWUt
cmVkaXJlY3RzLXRvLmh0bWwgWyBTa2lwIF0KIGh0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlz
dGljcy9lbmZvcmNlLXNhbWVzaXRlLXN0cmljdC1iYXNlZC1vbi10b3AtZnJhbWUtdW5pcXVlLXJl
ZGlyZWN0cy10by1kYXRhYmFzZS5odG1sIFsgU2tpcCBdCiAKKyMgVGhlIENOQU1FIGFuZCBjb29r
aWUgdHJhbnNmb3JtIFNQSXMgYXJlIG9ubHkgYXZhaWxhYmxlIGluIG1hY09TIEJpZyBTdXIgKyBp
T1MgMTQgYW5kIGFib3ZlLgoraHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL2NuYW1l
LWNsb2FraW5nLXRvcC1jbmFtZS1zdWItMXAtY25hbWUuaHRtbCBbIFNraXAgXQoraHR0cC90ZXN0
cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL2NuYW1lLWNsb2FraW5nLXRvcC1jbmFtZS1zdWItM3At
Y25hbWUuaHRtbCBbIFNraXAgXQoraHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL2Nu
YW1lLWNsb2FraW5nLXRvcC1jbmFtZS1zdWItbWF0Y2hpbmctY25hbWUuaHRtbCBbIFNraXAgXQor
aHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL2NuYW1lLWNsb2FraW5nLXRvcC1jbmFt
ZS1zdWItbm8tY25hbWUuaHRtbCBbIFNraXAgXQoraHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0
aXN0aWNzL2NuYW1lLWNsb2FraW5nLXRvcC1uby1jbmFtZS1zdWItMXAtY25hbWUuaHRtbCBbIFNr
aXAgXQoraHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL2NuYW1lLWNsb2FraW5nLXRv
cC1uby1jbmFtZS1zdWItM3AtY25hbWUuaHRtbCBbIFNraXAgXQoraHR0cC90ZXN0cy9yZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzL2NuYW1lLWNsb2FraW5nLXRvcC1uby1jbmFtZS1zdWItbm8tY25hbWUu
aHRtbCBbIFNraXAgXQorCiBodHRwL3Rlc3RzL3dlYnNvY2tldC9jb25uZWN0aW9uLXJlZnVzYWwt
aW4tZnJhbWUtcmVzb3VyY2UtbG9hZC1zdGF0aXN0aWNzLmh0bWwgWyBQYXNzIF0KICMgVGhlc2Ug
YXJlIG9ubHkgc3VwcG9ydGVkIGJlaGluZCBhIGNvbXBpbGUgdGltZSBmbGFnIGluIG1hY09TIEhp
Z2ggU2llcnJhICsgaU9TIDExLCBhbmQgYWJvdmUuCiBodHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0
YXRpc3RpY3MvY29va2llLWRlbGV0aW9uLmh0bWwgWyBQYXNzIFRpbWVvdXQgXQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>406113</attachid>
            <date>2020-08-06 14:13:39 -0700</date>
            <delta_ts>2020-08-06 15:00:00 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-215201-20200806141338.patch</filename>
            <type>text/plain</type>
            <size>107213</size>
            <attacher name="John Wilander">wilander</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY1MzA4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDRiODFlZGU2ODU3NGFkNzZmOTk1NGQ3
NjhkODk3NzJkNDkzMTFlZmYuLjNjMjYyOWU3YmFhYzdjZWFhYjRkMDEwYTQ0NDM1N2M3MjRiOWMx
YzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMjAtMDgtMDYgIEpvaG4gV2lsYW5kZXIgIDx3aWxh
bmRlckBhcHBsZS5jb20+CisKKyAgICAgICAgRXhwZXJpbWVudGFsOiBDYXAgdGhlIGV4cGlyeSBv
ZiBwZXJzaXN0ZW50IGNvb2tpZXMgc2V0IGluIDNyZC1wYXJ0eSBDTkFNRSBjbG9ha2VkIEhUVFAg
cmVzcG9uc2VzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yMTUyMDEKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzU3NDU0NjMzPgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgY2hhbmdlIGRlZmluZXMg
SEFWRV9DRk5FVFdPUktfQ05BTUVfQU5EX0NPT0tJRV9UUkFOU0ZPUk1fU1BJLgorCisgICAgICAg
ICogd3RmL1BsYXRmb3JtSGF2ZS5oOgorCiAyMDIwLTA4LTA0ICBZdXN1a2UgU3V6dWtpICA8eXN1
enVraUBhcHBsZS5jb20+CiAKICAgICAgICAgW0pTQ10gVXNlIExhenlOZXZlckRlc3Ryb3llZCAm
IHN0ZDo6Y2FsbF9vbmNlIGZvciBjb21wbGV4IHNpbmdsZXRvbnMKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCAwYzU2
NjVkODFmYjQ2Nzc1MzI0ZjI3YmE4Y2JlNGZkMWQ2YzNhNzYzLi44MGE5ODMyMmJmYjEyOTEwNTI3
NGVjMWY5M2I3MGI2NmNhZTE5ZDFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VM
b2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzIgQEAKKzIwMjAt
MDgtMDYgIEpvaG4gV2lsYW5kZXIgIDx3aWxhbmRlckBhcHBsZS5jb20+CisKKyAgICAgICAgRXhw
ZXJpbWVudGFsOiBDYXAgdGhlIGV4cGlyeSBvZiBwZXJzaXN0ZW50IGNvb2tpZXMgc2V0IGluIDNy
ZC1wYXJ0eSBDTkFNRSBjbG9ha2VkIEhUVFAgcmVzcG9uc2VzCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTUyMDEKKyAgICAgICAgPHJkYXI6Ly9wcm9i
bGVtLzU3NDU0NjMzPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIFRlc3RzOiBodHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvY25hbWUtY2xv
YWtpbmctdG9wLWNuYW1lLXN1Yi0xcC1jbmFtZS5odG1sCisgICAgICAgICAgICAgICBodHRwL3Rl
c3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvY25hbWUtY2xvYWtpbmctdG9wLWNuYW1lLXN1Yi0z
cC1jbmFtZS5odG1sCisgICAgICAgICAgICAgICBodHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRp
c3RpY3MvY25hbWUtY2xvYWtpbmctdG9wLWNuYW1lLXN1Yi1tYXRjaGluZy1jbmFtZS5odG1sCisg
ICAgICAgICAgICAgICBodHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvY25hbWUtY2xv
YWtpbmctdG9wLWNuYW1lLXN1Yi1uby1jbmFtZS5odG1sCisgICAgICAgICAgICAgICBodHRwL3Rl
c3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvY25hbWUtY2xvYWtpbmctdG9wLW5vLWNuYW1lLXN1
Yi0xcC1jbmFtZS5odG1sCisgICAgICAgICAgICAgICBodHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0
YXRpc3RpY3MvY25hbWUtY2xvYWtpbmctdG9wLW5vLWNuYW1lLXN1Yi0zcC1jbmFtZS5odG1sCisg
ICAgICAgICAgICAgICBodHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvY25hbWUtY2xv
YWtpbmctdG9wLW5vLWNuYW1lLXN1Yi1uby1jbmFtZS5odG1sCisKKyAgICAgICAgKiBwYWdlL1Nl
dHRpbmdzLnlhbWw6CisgICAgICAgICAgICBBZGRlZCB0aGUgb2ZmLWJ5LWRlZmF1bHQgZmxhZyBp
c0NOQU1FQ2xvYWtpbmdNaXRpZ2F0aW9uRW5hYmxlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3
b3JrL05ldHdvcmtTdG9yYWdlU2Vzc2lvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3Jr
U3RvcmFnZVNlc3Npb246OnJlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkIGNvbnN0KToKKyAg
ICAgICAgICAgIE5ldyBnZXR0ZXIgZm9yIHRoZSBJVFAgc2V0dGluZy4KKyAgICAgICAgKiBwbGF0
Zm9ybS9uZXR3b3JrL05ldHdvcmtTdG9yYWdlU2Vzc2lvbi5oOgorICAgICAgICAqIHBsYXRmb3Jt
L25ldHdvcmsvY29jb2EvTmV0d29ya1N0b3JhZ2VTZXNzaW9uQ29jb2EubW06CisgICAgICAgIChX
ZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb246OmNhcEV4cGlyeU9mUGVyc2lzdGVudENvb2tp
ZSk6CisgICAgICAgICAgICBCcm9rZSB0aGlzIGZ1bmN0aW9uIG91dCBzbyB0aGF0IGl0IGNhbiBi
ZSByZXVzZWQuCisgICAgICAgIChXZWJDb3JlOjpwYXJzZURPTUNvb2tpZSk6CisgICAgICAgICAg
ICBIZXJlJ3MgZnJvbSB3aGVyZSB0aGUgZnVuY3Rpb24gYWJvdmUgd2FzIGJyb2tlbiBvdXQuCisg
ICAgICAgICAgICBUaGUgZXhpc3RpbmcgZnVuY3Rpb25hbGl0eSBoYXMgYSB0ZXN0IGNhc2UuCisK
IDIwMjAtMDgtMDUgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBB
ZGQgY29uc3RydWN0b3IgZm9yIER5bmFtaWNzQ29tcHJlc3Nvck5vZGUKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL1BBTC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvQ2hhbmdlTG9n
CmluZGV4IDUxNTkwNjcyNDUwNzI4ZTI0ZjcxNjQxMWUwNDI3OGRhNzdmNzMyMGEuLmYwZDBlNjM1
MGIwZjNjZmY5MmMzODFiNjBjMTA1ZWJlYjJiODIxNjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL1BBTC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvUEFML0NoYW5nZUxvZwpAQCAt
MSwzICsxLDE2IEBACisyMDIwLTA4LTA2ICBKb2huIFdpbGFuZGVyICA8d2lsYW5kZXJAYXBwbGUu
Y29tPgorCisgICAgICAgIEV4cGVyaW1lbnRhbDogQ2FwIHRoZSBleHBpcnkgb2YgcGVyc2lzdGVu
dCBjb29raWVzIHNldCBpbiAzcmQtcGFydHkgQ05BTUUgY2xvYWtlZCBIVFRQIHJlc3BvbnNlcwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE1MjAxCisg
ICAgICAgIDxyZGFyOi8vcHJvYmxlbS81NzQ1NDYzMz4KKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHBhbC9zcGkvY2YvQ0ZOZXR3b3JrU1BJLmg6Cisg
ICAgICAgICAgICBUaGlzIGNoYW5nZSBkZWNsYXJlcyB0d28gbmV3IHByb3BlcnRpZXMgb24gTlNV
UkxTZXNzaW9uVGFzazoKKyAgICAgICAgICAgIC0gIF9jb29raWVUcmFuc2Zvcm1DYWxsYmFjawor
ICAgICAgICAgICAgLSBfcmVzb2x2ZWRDTkFNRUNoYWluCisKIDIwMjAtMDgtMDQgIFBlciBBcm5l
IFZvbGxhbiAgPHB2b2xsYW5AYXBwbGUuY29tPgogCiAgICAgICAgIFtpT1NdIENoZWNrIHRoYXQg
QWNjZXNzaWJpbGl0eSBpcyBlbmFibGVkIHdoZW4gcmVjZWl2aW5nIHRoZSBlbmFibGUgQWNjZXNz
aWJpbGl0eSBub3RpZmljYXRpb24KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9n
IGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggNmVmNzU2NjU5ZDM4NzU0ZWRkYzQzMWZm
MDdlMjhkYjIzMzdjYmRjNC4uNzJlNWEyZDFmMjZhZjk0MWY0ZmExZTQ2MDhiNTUyYTVlNjQ4NzFj
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktp
dC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMjAgQEAKKzIwMjAtMDgtMDYgIEpvaG4gV2lsYW5kZXIg
IDx3aWxhbmRlckBhcHBsZS5jb20+CisKKyAgICAgICAgRXhwZXJpbWVudGFsOiBDYXAgdGhlIGV4
cGlyeSBvZiBwZXJzaXN0ZW50IGNvb2tpZXMgc2V0IGluIDNyZC1wYXJ0eSBDTkFNRSBjbG9ha2Vk
IEhUVFAgcmVzcG9uc2VzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMTUyMDEKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzU3NDU0NjMzPgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgZXhwZXJpbWVu
dGFsIGZlYXR1cmUgaXMgb2ZmIGJ5IGRlZmF1bHQuCisKKyAgICAgICAgQ05BTUUgY2xvYWtpbmcg
bWVhbnMgYSBob3N0IHJlc29sdmVzIHRvIGEgYSBkaWZmZXJlbnQgZG9tYWluLCBwb3RlbnRpYWxs
eSBhCisgICAgICAgIHRoaXJkLXBhcnR5IGRvbWFpbiwgYXMgcGFydCBvZiBETlMgcmVzb2x1dGlv
bi4KKworICAgICAgICBUaGlzIHBhdGNoIG1ha2VzIFdlYktpdDo6TmV0d29ya0RhdGFUYXNrQ29j
b2EgY2FwdHVyZSBhbnkgQ05BTUUgY2xvYWtpbmcgZm9yCisgICAgICAgIHRoZSBmaXJzdCBwYXJ0
eSBob3N0IGFuZCBzdG9yZXMgaXQgaW4gYSB0YWJsZSBpbiB0aGUgV2ViS2l0OjpOZXR3b3JrU2Vz
c2lvbi4KKyAgICAgICAgSXQgdGhlbiBjaGVja3MgZmlyc3QgcGFydHkgc3VicmVzb3VyY2UgbG9h
ZHMgdG8gc2VlIGlmIHRoZXkgcmVzb2x2ZSB0byBhCisgICAgICAgIGRpZmZlcmVudCBkb21haW4g
YW5kIGlmIHNvLCBjb21wYXJlIHRoYXQgZG9tYWluIHRvIGJvdGggdGhlIGZpcnN0IHBhcnR5Cisg
ICAgICAgIGRvbWFpbiBhbmQgaXRzIENOQU1FIGNsb2FraW5nIGRvbWFpbiwgaWYgdGhlcmUgaXMg
b25lLiBJZiB0aGVyZSdzIGEKKyAgICAgICAgbWlzbWF0Y2gsIGl0J3MgZGVlbWVkIGEgY2FzZSBv
ZiB0aGlyZC1wYXJ0eSBDTkFNRSBjbG9ha2luZyBhbmQgYW55IGNvb2tpZXMKKyAgICAgICAgc2V0
IGluIHRoZSByZXNwb25zZSBvZiB0aGUgY2xvYWtlZCBzdWJyZXNvdXJjZSBsb2FkIHdpbGwgaGF2
ZSB0aGVpciBleHBpcnkKKyAgICAgICAgY2FwcGVkIHRvIDcgZGF5cy4KKworICAgICAgICBUaGUg
Y2FzZXMgZm9yIGNhcHBpbmcgZXhwaXJ5IGxvb2sgbGlrZSB0aGlzIChhbmQgYXJlIGJhY2tlZCBi
eSB0ZXN0IGNhc2VzKToKKworICAgICAgICBGaXJzdC1wYXJ0eSBob3N0ICB8IEZpcnN0LXBhcnR5
IHN1YmRvbWFpbiAgICAgIHwgQ2FwcGVkIGV4cGlyeQorICAgICAgICAtLS0tLS0tLS0tLS0tLS0t
LS18LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXwtLS0tLS0tLS0tLS0tLQorICAgICAgICBO
byBDTkFNRSBjbG9ha2luZyB8IE5vIENOQU1FIGNsb2FraW5nICAgICAgICAgIHwgTm8KKyAgICAg
ICAgTm8gQ05BTUUgY2xvYWtpbmcgfCBGaXJzdC1wYXJ0eSBDTkFNRSBjbG9ha2luZyB8IE5vCisg
ICAgICAgIE5vIENOQU1FIGNsb2FraW5nIHwgVGhpcmQtcGFydHkgQ05BTUUgY2xvYWtpbmcgfCBZ
ZXMKKyAgICAgICAgQ05BTUUgY2xvYWtpbmcgICAgfCBObyBDTkFNRSBjbG9ha2luZyAgICAgICAg
ICB8IE5vCisgICAgICAgIENOQU1FIGNsb2FraW5nICAgIHwgTWF0Y2hpbmcgQ05BTUUgY2xvYWtp
bmcgICAgfCBObworICAgICAgICBDTkFNRSBjbG9ha2luZyAgICB8IEZpcnN0LXBhcnR5IENOQU1F
IGNsb2FraW5nIHwgTm8KKyAgICAgICAgQ05BTUUgY2xvYWtpbmcgICAgfCBUaGlyZC1wYXJ0eSBD
TkFNRSBjbG9ha2luZyB8IFllcworCisgICAgICAgIFRoaXMgcGF0Y2ggbWFrZXMgdXNlIG9mIHR3
byBuZXcgQ0ZOZXR3b3JrIFNQSXMgb24gTlNVUkxTZXNzaW9uVGFzazoKKyAgICAgICAgLSAgX2Nv
b2tpZVRyYW5zZm9ybUNhbGxiYWNrCisgICAgICAgIC0gX3Jlc29sdmVkQ05BTUVDaGFpbgorCisg
ICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpOZXR3b3JrUHJvY2Vzczo6cmVzZXRQYXJhbWV0ZXJzVG9EZWZhdWx0VmFsdWVzKToKKyAg
ICAgICAgICAgIFRoaXMgcmVzZXQgbm93IGNvdmVycyB0aGUgbmV3IENOQU1FIGNsb2FraW5nIG1l
bWJlciB2YXJpYWJsZXMuCisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpzZXRJc1J1
bm5pbmdSZXNvdXJjZUxvYWRTdGF0aXN0aWNzVGVzdCk6CisgICAgICAgICAgICBUaGlzIGZ1bmN0
aW9uIG5vdyBhbHNvIGVuYWJsZXMgdGhlIENOQU1FIGNsb2FraW5nIGNvZGUuCisgICAgICAgIChX
ZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpzZXRGaXJzdFBhcnR5SG9zdENOQU1FRG9tYWluRm9yVGVz
dGluZyk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpzZXRUaGlyZFBhcnR5Q05B
TUVEb21haW5Gb3JUZXN0aW5nKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJv
Y2Vzcy5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLm1lc3NhZ2Vz
LmluOgorICAgICAgICAgICAgTmV3IElQQyB0byBmb3J3YXJkIHRlc3QgY29uZmlndXJhdGlvbi4K
KyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5jcHA6CisgICAgICAgIChX
ZWJLaXQ6Ok5ldHdvcmtTZXNzaW9uOjpOZXR3b3JrU2Vzc2lvbik6CisgICAgICAgICAgICBOb3cg
cGlja3MgdXAgdGhlIGZsYWcgZm9yIHRoaXMgZmVhdHVyZS4KKyAgICAgICAgKFdlYktpdDo6TmV0
d29ya1Nlc3Npb246OnNldEZpcnN0UGFydHlIb3N0Q05BTUVEb21haW4pOgorICAgICAgICAgICAg
VGhpcyBpcyBjYWxsZWQgZnJvbSBOZXR3b3JrRGF0YVRhc2tDb2NvYTo6dXBkYXRlRmlyc3RQYXJ0
eUluZm9Gb3JUYXNrQW5kU2Vzc2lvbigpCisgICAgICAgICAgICB3aGVuIHRoZXJlIGlzIENOQU1F
IGNsb2FraW5nIGZvciB0aGUgZmlyc3QgcGFydHkgaG9zdC4gVGhpcyBpcyBkb25lIHRvIG1ha2Ug
aXQKKyAgICAgICAgICAgIHBvc3NpYmxlIHRvIG5vdCBjYXAgdGhlIGV4cGlyeSBvZiBjb29raWVz
IGlmIHN1YnNlcXVlbnQgc3VicmVzb3VyY2UgbG9hZHMgaGF2ZQorICAgICAgICAgICAgQ05BTUUg
Y2xvYWtpbmcgdGhhdCBtYXRjaGVzIHRoZSBmaXJzdC1wYXJ0eSBob3N0J3MgQ05BTUUgY2xvYWtp
bmcuIFRoaXMgaGFwcGVucworICAgICAgICAgICAgd2hlbiB3aG9sZSB3ZWJzaXRlcyBhcmUgaG9z
dGVkIG9uIGVkZ2UgbmV0d29ya3MuCisgICAgICAgICAgICBUaGlzIGZ1bmN0aW9uIGlzIGFsc28g
dXNlZCBieSB0aGUgdGVzdCBpbmZyYXN0cnVjdHVyZSB0byBtb2NrIHRoZSBETlMgcmVzb2x1dGlv
bgorICAgICAgICAgICAgZm9yIGEgZmlyc3QtcGFydHkgaG9zdC4KKyAgICAgICAgKFdlYktpdDo6
TmV0d29ya1Nlc3Npb246OmZpcnN0UGFydHlIb3N0Q05BTUVEb21haW4pOgorICAgICAgICAgICAg
VGhpcyByZXR1cm5zIGFueSBjYXB0dXJlZCBDTkFNRSBjbG9ha2luZyBmb3IgYSBob3N0LCBpZiB0
aGVyZSBpcyBvbmUuCisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtTZXNzaW9uOjpyZXNldENOQU1F
RG9tYWluRGF0YSk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24uaDoK
KyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Nlc3Npb246OnNldENOQU1FQ2xvYWtpbmdNaXRpZ2F0
aW9uRW5hYmxlZCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtTZXNzaW9uOjpjbmFtZUNsb2Fr
aW5nTWl0aWdhdGlvbkVuYWJsZWQgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrU2Vz
c2lvbjo6c2V0VGhpcmRQYXJ0eUNOQU1FRG9tYWluRm9yVGVzdGluZyk6CisgICAgICAgICAgICBU
aGlzIHRlc3QgZnVuY3Rpb25zIGFsbG93cyB1cyB0byBtb2NrIHRoZSBETlMgcmVzb2x1dGlvbiBm
b3IgYSBzdWJyZXNvdXJjZS4KKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Nlc3Npb246OnRoaXJk
UGFydHlDTkFNRURvbWFpbkZvclRlc3RpbmcgY29uc3QpOgorICAgICAgICAqIE5ldHdvcmtQcm9j
ZXNzL2NvY29hL05ldHdvcmtEYXRhVGFza0NvY29hLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nl
c3MvY29jb2EvTmV0d29ya0RhdGFUYXNrQ29jb2EubW06CisgICAgICAgIChXZWJLaXQ6Omhhc0NO
QU1FQW5kQ29va2llVHJhbnNmb3JtU1BJKToKKyAgICAgICAgKFdlYktpdDo6bGFzdENOQU1FRG9t
YWluKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0RhdGFUYXNrQ29jb2E6OnVwZGF0ZUZpcnN0
UGFydHlJbmZvRm9yU2Vzc2lvbik6CisgICAgICAgICAgICBUaGlzIGlzIGNhbGxlZCBieSBOZXR3
b3JrRGF0YVRhc2tDb2NvYTo6ZGlkUmVjZWl2ZVJlc3BvbnNlKCkgdG8gY2FwdHVyZSBhbnkKKyAg
ICAgICAgICAgIENOQU1FIGNsb2FraW5nIGZvciB0aGUgZmlyc3QtcGFydHkgaG9zdC4KKyAgICAg
ICAgKFdlYktpdDo6TmV0d29ya0RhdGFUYXNrQ29jb2E6OmFwcGx5Q29va2llUG9saWN5Rm9yVGhp
cmRQYXJ0eUNOQU1FQ2xvYWtpbmcpOgorICAgICAgICAgICAgVGhpcyBpcyBjYWxsZWQgaW4gdGhl
IE5ldHdvcmtEYXRhVGFza0NvY29hIGNvbnN0cnVjdG9yIGFuZCBpbgorICAgICAgICAgICAgTmV0
d29ya0RhdGFUYXNrQ29jb2E6OndpbGxQZXJmb3JtSFRUUFJlZGlyZWN0aW9uKCkgYW5kIHNldHMg
dGhlIG5ldworICAgICAgICAgICAgX2Nvb2tpZVRyYW5zZm9ybUNhbGxiYWNrIFNQSSBwcm9wZXJ0
eSBvbiB0aGUgdGFzayB3aGljaCB3aWxsIGNoZWNrIHRoZQorICAgICAgICAgICAgcmVzcG9uc2Ug
Zm9yIGFueSB0aGlyZC1wYXJ0eSBDTkFNRSBjbG9ha2luZyBhbmQgY2FwIHRoZSBleHBpcnkgb2Yg
aW5jb21pbmcKKyAgICAgICAgICAgIGNvb2tpZXMgYWNjb3JkaW5nbHkuCisgICAgICAgIChXZWJL
aXQ6Ok5ldHdvcmtEYXRhVGFza0NvY29hOjpOZXR3b3JrRGF0YVRhc2tDb2NvYSk6CisgICAgICAg
ICAgICBUaGlzIG5vdyBjYWxscworICAgICAgICAgICAgTmV0d29ya0RhdGFUYXNrQ29jb2E6OmFw
cGx5Q29va2llUG9saWN5Rm9yVGhpcmRQYXJ0eUNOQU1FQ2xvYWtpbmcoKS4KKyAgICAgICAgKFdl
YktpdDo6TmV0d29ya0RhdGFUYXNrQ29jb2E6OmRpZFJlY2VpdmVSZXNwb25zZSk6CisgICAgICAg
ICAgICBUaGlzIG5vdyBjYWxscworICAgICAgICAgICAgTmV0d29ya0RhdGFUYXNrQ29jb2E6OnVw
ZGF0ZUZpcnN0UGFydHlJbmZvRm9yVGFza0FuZFNlc3Npb24oKS4KKyAgICAgICAgKFdlYktpdDo6
TmV0d29ya0RhdGFUYXNrQ29jb2E6OndpbGxQZXJmb3JtSFRUUFJlZGlyZWN0aW9uKToKKyAgICAg
ICAgICAgIFRoaXMgbm93IGNhbGxzCisgICAgICAgICAgICBOZXR3b3JrRGF0YVRhc2tDb2NvYTo6
YXBwbHlDb29raWVQb2xpY3lGb3JUaGlyZFBhcnR5Q05BTUVDbG9ha2luZygpLgorICAgICAgICAq
IFNoYXJlZC9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGFyYW1ldGVycy5oOgorICAgICAgICAgICAg
Tm93IGhvbGRzIGEgV2ViQ29yZTo6Q05BTUVDbG9ha2luZ01pdGlnYXRpb25FbmFibGVkIGZsYWcu
CisgICAgICAgIChXZWJLaXQ6OlJlc291cmNlTG9hZFN0YXRpc3RpY3NQYXJhbWV0ZXJzOjplbmNv
ZGUgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGFyYW1l
dGVyczo6ZGVjb2RlKToKKyAgICAgICAgKiBTaGFyZWQvV2ViUHJlZmVyZW5jZXMueWFtbDoKKyAg
ICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tXZWJzaXRlRGF0YVN0b3JlUmVmLmNwcDoKKyAgICAg
ICAgKFdLV2Vic2l0ZURhdGFTdG9yZVNldFJlc291cmNlTG9hZFN0YXRpc3RpY3NGaXJzdFBhcnR5
SG9zdENOQU1FRG9tYWluRm9yVGVzdGluZyk6CisgICAgICAgICAgICBVc2VkIHRvIG1vY2sgQ05B
TUUgcmVzb2x1dGlvbiBkYXRhLgorICAgICAgICAoV0tXZWJzaXRlRGF0YVN0b3JlU2V0UmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc1RoaXJkUGFydHlDTkFNRURvbWFpbkZvclRlc3RpbmcpOgorICAgICAg
ICAgICAgVXNlZCB0byBtb2NrIENOQU1FIHJlc29sdXRpb24gZGF0YS4KKyAgICAgICAgKiBVSVBy
b2Nlc3MvQVBJL0MvV0tXZWJzaXRlRGF0YVN0b3JlUmVmLmg6CisgICAgICAgICogVUlQcm9jZXNz
L05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdv
cmtQcm9jZXNzUHJveHk6OnNldEZpcnN0UGFydHlIb3N0Q05BTUVEb21haW5Gb3JUZXN0aW5nKToK
KyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3NQcm94eTo6c2V0VGhpcmRQYXJ0eUNOQU1F
RG9tYWluRm9yVGVzdGluZyk6CisgICAgICAgICogVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1By
b2Nlc3NQcm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjplbnN1cmVOZXR3b3JrUHJvY2Vzcyk6Cisg
ICAgICAgICAgICBOb3cgaGFuZGxlcyB0aGUgV2ViQ29yZTo6Q05BTUVDbG9ha2luZ01pdGlnYXRp
b25FbmFibGVkIGZsYWcuCisgICAgICAgICogVUlQcm9jZXNzL1dlYnNpdGVEYXRhL0NvY29hL1dl
YnNpdGVEYXRhU3RvcmVDb2NvYS5tbToKKyAgICAgICAgKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9y
ZTo6cGxhdGZvcm1TZXROZXR3b3JrUGFyYW1ldGVycyk6CisgICAgICAgICAgICBOb3cgaGFuZGxl
cyB0aGUgV2ViQ29yZTo6Q05BTUVDbG9ha2luZ01pdGlnYXRpb25FbmFibGVkIGZsYWcuCisgICAg
ICAgICogVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjpzZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRmly
c3RQYXJ0eUhvc3RDTkFNRURvbWFpbkZvclRlc3RpbmcpOgorICAgICAgICAoV2ViS2l0OjpXZWJz
aXRlRGF0YVN0b3JlOjpzZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzVGhpcmRQYXJ0eUNOQU1FRG9t
YWluRm9yVGVzdGluZyk6CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6OnBhcmFt
ZXRlcnMpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3Jl
Lmg6CisKIDIwMjAtMDgtMDUgIFBlciBBcm5lIFZvbGxhbiAgPHB2b2xsYW5AYXBwbGUuY29tPgog
CiAgICAgICAgIFtDb2NvYV0gU2FuZGJveCBleHRlbnNpb24gdG9rZW4gbm90IGNsZWFyZWQgZnJv
bSBtZW1vcnkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtSGF2ZS5oIGIvU291
cmNlL1dURi93dGYvUGxhdGZvcm1IYXZlLmgKaW5kZXggMTdhYjgyNGRlNDYyNGFiNDE0Yjg0YjEx
ZjNiOTBiZWMzYzg1MmNkYS4uMDZiNGRlNzQ0MmZkMWRjYjA5YTc5MTFlZDhkODFlZDA4NGE5NTRk
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvUGxhdGZvcm1IYXZlLmgKKysrIGIvU291cmNl
L1dURi93dGYvUGxhdGZvcm1IYXZlLmgKQEAgLTcwNywzICs3MDcsMTAgQEAKICNpZiAoUExBVEZP
Uk0oTUFDKSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDExMDAwMCkKICNk
ZWZpbmUgSEFWRV9OU1RBQkxFVklFV1NUWUxFIDEKICNlbmRpZgorCisjaWYgKFBMQVRGT1JNKE1B
QykgJiYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMTAwMDApIFwKKyAgICB8
fCAoKFBMQVRGT1JNKElPUykgfHwgUExBVEZPUk0oTUFDQ0FUQUxZU1QpKSAmJiBfX0lQSE9ORV9P
U19WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxNDAwMDApIFwKKyAgICB8fCAoUExBVEZPUk0oV0FU
Q0hPUykgJiYgX19XQVRDSF9PU19WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSA3MDAwMCkgXAorICAg
IHx8IChQTEFURk9STShBUFBMRVRWKSAmJiBfX1RWX09TX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49
IDE0MDAwMCkKKyNkZWZpbmUgSEFWRV9DRk5FVFdPUktfQ05BTUVfQU5EX0NPT0tJRV9UUkFOU0ZP
Uk1fU1BJIDEKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUEFML3BhbC9zcGkv
Y2YvQ0ZOZXR3b3JrU1BJLmggYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL3NwaS9jZi9DRk5ldHdv
cmtTUEkuaAppbmRleCAzZTJhN2EzNDFlZTZhYmE3MWVmYjNiZGIwZGRiMTZhMDAzNWM5OGJmLi40
MGQ4YmE5ZjE5ZjUzOTM3ZDZkZjI5Mjk5MzAzMzg4ZjI4ZTMzMjcwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9QQUwvcGFsL3NwaS9jZi9DRk5ldHdvcmtTUEkuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9QQUwvcGFsL3NwaS9jZi9DRk5ldHdvcmtTUEkuaApAQCAtMjk2LDYgKzI5NiwxMyBAQCBl
bnVtIDogTlNVSW50ZWdlciB7CiAgICAgTlNIVFRQQ29va2llQWNjZXB0UG9saWN5RXhjbHVzaXZl
bHlGcm9tTWFpbkRvY3VtZW50RG9tYWluID0gMywKIH07CiAKKyNpZiBIQVZFKENGTkVUV09SS19D
TkFNRV9BTkRfQ09PS0lFX1RSQU5TRk9STSkKK0BpbnRlcmZhY2UgTlNVUkxTZXNzaW9uVGFzayAo
KQorQHByb3BlcnR5IChub25hdG9taWMsIGNvcHksIG51bGxhYmxlKSBOU0FycmF5PE5TSFRUUENv
b2tpZSo+KiAoXl9jb29raWVUcmFuc2Zvcm1DYWxsYmFjaykoTlNBcnJheTxOU0hUVFBDb29raWUq
PiogY29va2llcyk7CitAcHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHksIG51bGxhYmxlKSBO
U0FycmF5PE5TU3RyaW5nKj4qIF9yZXNvbHZlZENOQU1FQ2hhaW47CitAZW5kCisjZW5kaWYKKwog
I2VuZGlmIC8vIGRlZmluZWQoX19PQkpDX18pCiAKICNlbmRpZiAvLyBVU0UoQVBQTEVfSU5URVJO
QUxfU0RLKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5ncy55YW1sIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5ncy55YW1sCmluZGV4IDIyYzlmNmFiMjMwMDFhMjkx
YzVkMzQ1N2MyMTRiM2UyMDU1OWZjODguLmQ0Y2ZiY2VkODM3NjMyOTgxNTQ2M2JjNjZmZjVmMjJh
MTIxZjAwNmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3MueWFtbAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdzLnlhbWwKQEAgLTkyOCw2ICs5MjgsOSBA
QCBpc0ZpcnN0UGFydHlXZWJzaXRlRGF0YVJlbW92YWxSZXByb1Rlc3RpbmdFbmFibGVkOgogaXNT
YW1lU2l0ZVN0cmljdEVuZm9yY2VtZW50RW5hYmxlZDoKICAgaW5pdGlhbDogZmFsc2UKIAoraXND
TkFNRUNsb2FraW5nTWl0aWdhdGlvbkVuYWJsZWQ6CisgIGluaXRpYWw6IGZhbHNlCisKIGlzTG9n
Z2VkSW5BUElFbmFibGVkOgogICBpbml0aWFsOiBmYWxzZQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtTdG9yYWdlU2Vzc2lvbi5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtTdG9yYWdlU2Vzc2lvbi5jcHAKaW5k
ZXggNjg0N2M0ZjVlOTQ5YmYwN2E5Y2JlZmRjZGEzMGI0MjVhY2I5ZmZiNi4uYzUzMzIxZTFjYmEz
ZGQ5NzRmOTcwYzc1OTEwNmE3ZjgxN2UyMGI3OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9OZXR3b3JrU3RvcmFnZVNlc3Npb24uY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvTmV0d29ya1N0b3JhZ2VTZXNzaW9uLmNwcApAQCAtNzIs
NiArNzIsMTEgQEAgdm9pZCBOZXR3b3JrU3RvcmFnZVNlc3Npb246OnNldFJlc291cmNlTG9hZFN0
YXRpc3RpY3NFbmFibGVkKGJvb2wgZW5hYmxlZCkKIHsKICAgICBtX2lzUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc0VuYWJsZWQgPSBlbmFibGVkOwogfQorCitib29sIE5ldHdvcmtTdG9yYWdlU2Vzc2lv
bjo6cmVzb3VyY2VMb2FkU3RhdGlzdGljc0VuYWJsZWQoKSBjb25zdAoreworICAgIHJldHVybiBt
X2lzUmVzb3VyY2VMb2FkU3RhdGlzdGljc0VuYWJsZWQ7Cit9CiAjZW5kaWYKIAogYm9vbCBOZXR3
b3JrU3RvcmFnZVNlc3Npb246OnNob3VsZEJsb2NrVGhpcmRQYXJ0eUNvb2tpZXMoY29uc3QgUmVn
aXN0cmFibGVEb21haW4mIHJlZ2lzdHJhYmxlRG9tYWluKSBjb25zdApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9OZXR3b3JrU3RvcmFnZVNlc3Npb24uaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvTmV0d29ya1N0b3JhZ2VTZXNzaW9uLmgKaW5k
ZXggMmM2MTVmNGMyYzc2Mjc3MzJiMGExMTJjNWYxY2M3ZjExMGU0NzQ1MS4uOWMyNmFlMmVhZWJm
YzlmY2Y2YmI0YWM4ZDM4M2NlZGZjNDEwZDU5MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9OZXR3b3JrU3RvcmFnZVNlc3Npb24uaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtTdG9yYWdlU2Vzc2lvbi5oCkBAIC04NSw2ICs4
NSw3IEBAIGVudW0gY2xhc3MgSW5jbHVkZVNlY3VyZUNvb2tpZXMgOiBib29sOwogZW51bSBjbGFz
cyBJbmNsdWRlSHR0cE9ubHlDb29raWVzIDogYm9vbDsKIGVudW0gY2xhc3MgVGhpcmRQYXJ0eUNv
b2tpZUJsb2NraW5nTW9kZSA6IHVpbnQ4X3QgeyBBbGwsIEFsbEV4Y2VwdEJldHdlZW5BcHBCb3Vu
ZERvbWFpbnMsIEFsbE9uU2l0ZXNXaXRob3V0VXNlckludGVyYWN0aW9uLCBPbmx5QWNjb3JkaW5n
VG9QZXJEb21haW5Qb2xpY3kgfTsKIGVudW0gY2xhc3MgU2FtZVNpdGVTdHJpY3RFbmZvcmNlbWVu
dEVuYWJsZWQgOiBib29sIHsgWWVzLCBObyB9OworZW51bSBjbGFzcyBDTkFNRUNsb2FraW5nTWl0
aWdhdGlvbkVuYWJsZWQgOiBib29sIHsgWWVzLCBObyB9OwogZW51bSBjbGFzcyBGaXJzdFBhcnR5
V2Vic2l0ZURhdGFSZW1vdmFsTW9kZSA6IHVpbnQ4X3QgeyBBbGxCdXRDb29raWVzLCBOb25lLCBB
bGxCdXRDb29raWVzTGl2ZU9uVGVzdGluZ1RpbWVvdXQsIEFsbEJ1dENvb2tpZXNSZXByb1Rlc3Rp
bmdUaW1lb3V0IH07CiBlbnVtIGNsYXNzIFNob3VsZEFza0lUUCA6IGJvb2wgeyBObywgWWVzIH07
CiAKQEAgLTE4NCwxMSArMTg1LDE1IEBAIHB1YmxpYzoKIAogI2lmIEVOQUJMRShSRVNPVVJDRV9M
T0FEX1NUQVRJU1RJQ1MpCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzRW5hYmxlZChib29sKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBib29sIHJlc291cmNl
TG9hZFN0YXRpc3RpY3NFbmFibGVkKCkgY29uc3Q7CiAgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBz
aG91bGRCbG9ja0Nvb2tpZXMoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgT3B0aW9uYWw8RnJhbWVJ
ZGVudGlmaWVyPiwgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+LCBTaG91bGRSZWxheFRoaXJkUGFy
dHlDb29raWVCbG9ja2luZykgY29uc3Q7CiAgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBzaG91bGRC
bG9ja0Nvb2tpZXMoY29uc3QgVVJMJiBmaXJzdFBhcnR5Rm9yQ29va2llcywgY29uc3QgVVJMJiBy
ZXNvdXJjZSwgT3B0aW9uYWw8RnJhbWVJZGVudGlmaWVyPiwgT3B0aW9uYWw8UGFnZUlkZW50aWZp
ZXI+LCBTaG91bGRSZWxheFRoaXJkUGFydHlDb29raWVCbG9ja2luZykgY29uc3Q7CiAgICAgV0VC
Q09SRV9FWFBPUlQgYm9vbCBzaG91bGRCbG9ja1RoaXJkUGFydHlDb29raWVzKGNvbnN0IFJlZ2lz
dHJhYmxlRG9tYWluJikgY29uc3Q7CiAgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBzaG91bGRCbG9j
a1RoaXJkUGFydHlDb29raWVzQnV0S2VlcEZpcnN0UGFydHlDb29raWVzRm9yKGNvbnN0IFJlZ2lz
dHJhYmxlRG9tYWluJikgY29uc3Q7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRBbGxDb29r
aWVzVG9TYW1lU2l0ZVN0cmljdChjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoKT4mJik7CisjaWYgUExBVEZPUk0oQ09DT0EpCisgICAgV0VCQ09SRV9FWFBP
UlQgc3RhdGljIE5TSFRUUENvb2tpZSAqY2FwRXhwaXJ5T2ZQZXJzaXN0ZW50Q29va2llKE5TSFRU
UENvb2tpZSAqLCBTZWNvbmRzIGNhcCk7CisjZW5kaWYKICAgICBXRUJDT1JFX0VYUE9SVCBib29s
IGhhc0hhZFVzZXJJbnRlcmFjdGlvbkFzRmlyc3RQYXJ0eShjb25zdCBSZWdpc3RyYWJsZURvbWFp
biYpIGNvbnN0OwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0UHJldmFsZW50RG9tYWluc1Rv
QmxvY2tBbmREZWxldGVDb29raWVzRm9yKGNvbnN0IFZlY3RvcjxSZWdpc3RyYWJsZURvbWFpbj4m
KTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldFByZXZhbGVudERvbWFpbnNUb0Jsb2NrQnV0
S2VlcENvb2tpZXNGb3IoY29uc3QgVmVjdG9yPFJlZ2lzdHJhYmxlRG9tYWluPiYpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9OZXR3b3JrU3RvcmFn
ZVNlc3Npb25Db2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2Ev
TmV0d29ya1N0b3JhZ2VTZXNzaW9uQ29jb2EubW0KaW5kZXggY2I5NmQ0YWFmZDVhNGZhMDZkNmE3
MjIxMDMyMDI3OThkOWEzYTY1Ny4uYzI3NmNmMDZjMTQzZDYxOTAyNmNmZmQyNDMxMmU2YTc2Yzgz
NTJjOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9O
ZXR3b3JrU3RvcmFnZVNlc3Npb25Db2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL2NvY29hL05ldHdvcmtTdG9yYWdlU2Vzc2lvbkNvY29hLm1tCkBAIC0zMDgsNiAr
MzA4LDE3IEBAIE5TQXJyYXkgKk5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6aHR0cENvb2tpZXNGb3JV
UkwoQ0ZIVFRQQ29va2llU3RvcmFnZVJlZiBjb29raWVTCiAgICAgcmV0dXJuIFdlYkNvcmU6OmNv
b2tpZXNGb3JVUkwobnNDb29raWVTdG9yYWdlLmdldCgpLCB1cmwsIGZpcnN0UGFydHksIHNhbWVT
aXRlSW5mbyk7CiB9CiAKK05TSFRUUENvb2tpZSAqTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpjYXBF
eHBpcnlPZlBlcnNpc3RlbnRDb29raWUoTlNIVFRQQ29va2llICpjb29raWUsIFNlY29uZHMgY2Fw
KQoreworICAgIGlmICghW2Nvb2tpZSBpc1Nlc3Npb25Pbmx5XSAmJiAoIWNvb2tpZS5leHBpcmVz
RGF0ZSB8fCBjb29raWUuZXhwaXJlc0RhdGUudGltZUludGVydmFsU2luY2VOb3cgPiBjYXAuc2Vj
b25kcygpKSkgeworICAgICAgICBhdXRvIHByb3BlcnRpZXMgPSBhZG9wdE5TKFtbY29va2llIHBy
b3BlcnRpZXNdIG11dGFibGVDb3B5XSk7CisgICAgICAgIGF1dG8gZGF0ZSA9IGFkb3B0TlMoW1tO
U0RhdGUgYWxsb2NdIGluaXRXaXRoVGltZUludGVydmFsU2luY2VOb3c6Y2FwLnNlY29uZHMoKV0p
OworICAgICAgICBbcHJvcGVydGllcyBzZXRPYmplY3Q6ZGF0ZS5nZXQoKSBmb3JLZXk6TlNIVFRQ
Q29va2llRXhwaXJlc107CisgICAgICAgIGNvb2tpZSA9IFtOU0hUVFBDb29raWUgY29va2llV2l0
aFByb3BlcnRpZXM6cHJvcGVydGllcy5nZXQoKV07CisgICAgfQorICAgIHJldHVybiBjb29raWU7
Cit9CisKIE5TQXJyYXkgKk5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6Y29va2llc0ZvclVSTChjb25z
dCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYgc2FtZVNpdGVJbmZvLCBjb25z
dCBVUkwmIHVybCwgT3B0aW9uYWw8RnJhbWVJZGVudGlmaWVyPiBmcmFtZUlELCBPcHRpb25hbDxQ
YWdlSWRlbnRpZmllcj4gcGFnZUlELCBTaG91bGRBc2tJVFAgc2hvdWxkQXNrSVRQLCBTaG91bGRS
ZWxheFRoaXJkUGFydHlDb29raWVCbG9ja2luZyBzaG91bGRSZWxheFRoaXJkUGFydHlDb29raWVC
bG9ja2luZykgY29uc3QKIHsKICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQpA
QCAtNDE3LDE1ICs0MjgsOSBAQCBzdGF0aWMgTlNIVFRQQ29va2llICpwYXJzZURPTUNvb2tpZShT
dHJpbmcgY29va2llU3RyaW5nLCBOU1VSTCogY29va2llVVJMLCBPcHRpbwogICAgIGlmIChbY29v
a2llIGlzSFRUUE9ubHldKQogICAgICAgICByZXR1cm4gbmlsOwogCi0gICAgLy8gQ2FwIGxpZmV0
aW1lIG9mIHBlcnNpc3RlbnQsIGNsaWVudC1zaWRlIGNvb2tpZXMgdG8gYSB3ZWVrLgotICAgIGlm
IChjYXBwZWRMaWZldGltZSAmJiAhW2Nvb2tpZSBpc1Nlc3Npb25Pbmx5XSkgewotICAgICAgICBp
ZiAoIWNvb2tpZS5leHBpcmVzRGF0ZSB8fCBjb29raWUuZXhwaXJlc0RhdGUudGltZUludGVydmFs
U2luY2VOb3cgPiBjYXBwZWRMaWZldGltZS0+c2Vjb25kcygpKSB7Ci0gICAgICAgICAgICBhdXRv
IHByb3BlcnRpZXMgPSBhZG9wdE5TKFtbY29va2llIHByb3BlcnRpZXNdIG11dGFibGVDb3B5XSk7
Ci0gICAgICAgICAgICBhdXRvIGRhdGVJbkFXZWVrID0gYWRvcHROUyhbW05TRGF0ZSBhbGxvY10g
aW5pdFdpdGhUaW1lSW50ZXJ2YWxTaW5jZU5vdzpjYXBwZWRMaWZldGltZS0+c2Vjb25kcygpXSk7
Ci0gICAgICAgICAgICBbcHJvcGVydGllcyBzZXRPYmplY3Q6ZGF0ZUluQVdlZWsuZ2V0KCkgZm9y
S2V5Ok5TSFRUUENvb2tpZUV4cGlyZXNdOwotICAgICAgICAgICAgcmV0dXJuIFtOU0hUVFBDb29r
aWUgY29va2llV2l0aFByb3BlcnRpZXM6cHJvcGVydGllcy5nZXQoKV07Ci0gICAgICAgIH0KLSAg
ICB9CisgICAgLy8gQ2FwIGxpZmV0aW1lIG9mIHBlcnNpc3RlbnQsIGNsaWVudC1zaWRlIGNvb2tp
ZXMuCisgICAgaWYgKGNhcHBlZExpZmV0aW1lKQorICAgICAgICByZXR1cm4gTmV0d29ya1N0b3Jh
Z2VTZXNzaW9uOjpjYXBFeHBpcnlPZlBlcnNpc3RlbnRDb29raWUoY29va2llLCAqY2FwcGVkTGlm
ZXRpbWUpOwogCiAgICAgcmV0dXJuIGNvb2tpZTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAKaW5kZXggNzkwODU3ZDU3NmIxNTQ0ZjMyYzMw
MDVjOGUzNzlhZTk4M2QzM2JhZS4uZDUzMTQyZTEyOGZmOGU4NDhiMTgxOTc0ODYzMjc3YmExNzE2
ZWM3ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJv
Y2Vzcy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vz
cy5jcHAKQEAgLTgxNCw2ICs4MTQsMTAgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6Z2V0UmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc0RhdGFTdW1tYXJ5KFBBTDo6U2Vzc2lvbklEIHNlc3Npb24KIHZvaWQg
TmV0d29ya1Byb2Nlc3M6OnJlc2V0UGFyYW1ldGVyc1RvRGVmYXVsdFZhbHVlcyhQQUw6OlNlc3Np
b25JRCBzZXNzaW9uSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFu
ZGxlcikKIHsKICAgICBpZiAoYXV0byogbmV0d29ya1Nlc3Npb24gPSB0aGlzLT5uZXR3b3JrU2Vz
c2lvbihzZXNzaW9uSUQpKSB7CisjaWYgSEFWRShDRk5FVFdPUktfQ05BTUVfQU5EX0NPT0tJRV9U
UkFOU0ZPUk1fU1BJKQorICAgICAgICBuZXR3b3JrU2Vzc2lvbi0+cmVzZXRDTkFNRURvbWFpbkRh
dGEoKTsKKyAgICAgICAgbmV0d29ya1Nlc3Npb24tPnNldENOQU1FQ2xvYWtpbmdNaXRpZ2F0aW9u
RW5hYmxlZChXZWJDb3JlOjpDTkFNRUNsb2FraW5nTWl0aWdhdGlvbkVuYWJsZWQ6Ok5vKTsKKyNl
bmRpZgogICAgICAgICBpZiAoYXV0byogcmVzb3VyY2VMb2FkU3RhdGlzdGljcyA9IG5ldHdvcmtT
ZXNzaW9uLT5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzKCkpCiAgICAgICAgICAgICByZXNvdXJjZUxv
YWRTdGF0aXN0aWNzLT5yZXNldFBhcmFtZXRlcnNUb0RlZmF1bHRWYWx1ZXMoV1RGTW92ZShjb21w
bGV0aW9uSGFuZGxlcikpOwogICAgICAgICBlbHNlCkBAIC04NjYsNiArODcwLDkgQEAgdm9pZCBO
ZXR3b3JrUHJvY2Vzczo6c2V0Tm90aWZ5UGFnZXNXaGVuRGF0YVJlY29yZHNXZXJlU2Nhbm5lZChQ
QUw6OlNlc3Npb25JRCBzZXMKIHZvaWQgTmV0d29ya1Byb2Nlc3M6OnNldElzUnVubmluZ1Jlc291
cmNlTG9hZFN0YXRpc3RpY3NUZXN0KFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgYm9vbCB2YWx1
ZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAg
IGlmIChhdXRvKiBuZXR3b3JrU2Vzc2lvbiA9IHRoaXMtPm5ldHdvcmtTZXNzaW9uKHNlc3Npb25J
RCkpIHsKKyNpZiBIQVZFKENGTkVUV09SS19DTkFNRV9BTkRfQ09PS0lFX1RSQU5TRk9STV9TUEkp
CisgICAgICAgIG5ldHdvcmtTZXNzaW9uLT5zZXRDTkFNRUNsb2FraW5nTWl0aWdhdGlvbkVuYWJs
ZWQoV2ViQ29yZTo6Q05BTUVDbG9ha2luZ01pdGlnYXRpb25FbmFibGVkOjpZZXMpOworI2VuZGlm
CiAgICAgICAgIGlmIChhdXRvKiByZXNvdXJjZUxvYWRTdGF0aXN0aWNzID0gbmV0d29ya1Nlc3Np
b24tPnJlc291cmNlTG9hZFN0YXRpc3RpY3MoKSkKICAgICAgICAgICAgIHJlc291cmNlTG9hZFN0
YXRpc3RpY3MtPnNldElzUnVubmluZ1Rlc3QodmFsdWUsIFdURk1vdmUoY29tcGxldGlvbkhhbmRs
ZXIpKTsKICAgICAgICAgZWxzZQpAQCAtMTM3OSw2ICsxMzg2LDIwIEBAIHZvaWQgTmV0d29ya1By
b2Nlc3M6OnNldFRvU2FtZVNpdGVTdHJpY3RDb29raWVzRm9yVGVzdGluZyhQQUw6OlNlc3Npb25J
RCBzZXNzaW9uCiAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7CiAgICAgfQogfQorCit2b2lk
IE5ldHdvcmtQcm9jZXNzOjpzZXRGaXJzdFBhcnR5SG9zdENOQU1FRG9tYWluRm9yVGVzdGluZyhQ
QUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFN0cmluZyYmIGZpcnN0UGFydHlIb3N0LCBXZWJDb3Jl
OjpSZWdpc3RyYWJsZURvbWFpbiYmIGNuYW1lRG9tYWluLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgaWYgKGF1dG8qIG5ldHdvcmtTZXNzaW9u
ID0gdGhpcy0+bmV0d29ya1Nlc3Npb24oc2Vzc2lvbklEKSkKKyAgICAgICAgbmV0d29ya1Nlc3Np
b24tPnNldEZpcnN0UGFydHlIb3N0Q05BTUVEb21haW4oV1RGTW92ZShmaXJzdFBhcnR5SG9zdCks
IFdURk1vdmUoY25hbWVEb21haW4pKTsKKyAgICBjb21wbGV0aW9uSGFuZGxlcigpOworfQorCit2
b2lkIE5ldHdvcmtQcm9jZXNzOjpzZXRUaGlyZFBhcnR5Q05BTUVEb21haW5Gb3JUZXN0aW5nKFBB
TDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mJiBkb21h
aW4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAg
ICBpZiAoYXV0byogbmV0d29ya1Nlc3Npb24gPSB0aGlzLT5uZXR3b3JrU2Vzc2lvbihzZXNzaW9u
SUQpKQorICAgICAgICBuZXR3b3JrU2Vzc2lvbi0+c2V0VGhpcmRQYXJ0eUNOQU1FRG9tYWluRm9y
VGVzdGluZyhXVEZNb3ZlKGRvbWFpbikpOworICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7Cit9CiAj
ZW5kaWYgLy8gRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKIAogdm9pZCBOZXR3b3Jr
UHJvY2Vzczo6c2V0QWRDbGlja0F0dHJpYnV0aW9uRGVidWdNb2RlKGJvb2wgZGVidWdNb2RlKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5o
IGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oCmluZGV4IDRk
ZmExNGM4NzgzZGEyMjZjMzI4MDQwYTMyZDU5YzVhNTkzNzA3MzkuLmYyM2ZkNTgwZWY1NGNhZGY4
MGY0NjgzNjY1NmZiMjNmZDRkZGYyZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtQcm9jZXNzLmgKQEAgLTI3Myw2ICsyNzMsOCBAQCBwdWJsaWM6CiAgICAgdm9p
ZCBzZXRTaG91bGRFbmJsZVNhbWVTaXRlU3RyaWN0RW5mb3JjZW1lbnRGb3JUZXN0aW5nKFBBTDo6
U2Vzc2lvbklELCBXZWJDb3JlOjpTYW1lU2l0ZVN0cmljdEVuZm9yY2VtZW50RW5hYmxlZCwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKICAgICB2b2lkIHNldEZpcnN0UGFydHlXZWJzaXRl
RGF0YVJlbW92YWxNb2RlRm9yVGVzdGluZyhQQUw6OlNlc3Npb25JRCwgV2ViQ29yZTo6Rmlyc3RQ
YXJ0eVdlYnNpdGVEYXRhUmVtb3ZhbE1vZGUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7
CiAgICAgdm9pZCBzZXRUb1NhbWVTaXRlU3RyaWN0Q29va2llc0ZvclRlc3RpbmcoUEFMOjpTZXNz
aW9uSUQsIGNvbnN0IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZCgpPiYmKTsKKyAgICB2b2lkIHNldEZpcnN0UGFydHlIb3N0Q05BTUVEb21haW5Gb3JU
ZXN0aW5nKFBBTDo6U2Vzc2lvbklELCBTdHJpbmcmJiBmaXJzdFBhcnR5SG9zdCwgV2ViQ29yZTo6
UmVnaXN0cmFibGVEb21haW4mJiBjbmFtZURvbWFpbiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgp
PiYmKTsKKyAgICB2b2lkIHNldFRoaXJkUGFydHlDTkFNRURvbWFpbkZvclRlc3RpbmcoUEFMOjpT
ZXNzaW9uSUQsIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiYsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoKT4mJik7CiAjZW5kaWYKIAogICAgIHZvaWQgc2V0QWRDbGlja0F0dHJpYnV0aW9uRGVi
dWdNb2RlKGJvb2wpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrUHJvY2Vzcy5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya1Byb2Nlc3MubWVzc2FnZXMuaW4KaW5kZXggNzAyMjI4NWUzNjg4NWRlODZmMmRhZjY4
ODhiMDI0NzI5OTM1Y2Y2NC4uMDAyZWNkYjgzM2IyOTQxYWU4NjEzZmE2NGYwMWRmODk4OTZkZjM0
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vz
cy5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQ
cm9jZXNzLm1lc3NhZ2VzLmluCkBAIC0xNDgsNiArMTQ4LDggQEAgbWVzc2FnZXMgLT4gTmV0d29y
a1Byb2Nlc3MgTGVnYWN5UmVjZWl2ZXIgewogICAgIFNldFNob3VsZEVuYmxlU2FtZVNpdGVTdHJp
Y3RFbmZvcmNlbWVudEZvclRlc3RpbmcoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBlbnVtOmJv
b2wgV2ViQ29yZTo6U2FtZVNpdGVTdHJpY3RFbmZvcmNlbWVudEVuYWJsZWQgZW5hYmxlZCkgLT4g
KCkgQXN5bmMKICAgICBTZXRGaXJzdFBhcnR5V2Vic2l0ZURhdGFSZW1vdmFsTW9kZUZvclRlc3Rp
bmcoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBlbnVtOnVpbnQ4X3QgV2ViQ29yZTo6Rmlyc3RQ
YXJ0eVdlYnNpdGVEYXRhUmVtb3ZhbE1vZGUgbW9kZSkgLT4gKCkgQXN5bmMKICAgICBTZXRUb1Nh
bWVTaXRlU3RyaWN0Q29va2llc0ZvclRlc3RpbmcoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBX
ZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiBkb21haW4pIC0+ICgpIEFzeW5jCisgICAgU2V0Rmly
c3RQYXJ0eUhvc3RDTkFNRURvbWFpbkZvclRlc3RpbmcoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklE
LCBTdHJpbmcgZmlyc3RQYXJ0eUhvc3QsIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIGNuYW1l
RG9tYWluKSAtPiAoKSBBc3luYworICAgIFNldFRoaXJkUGFydHlDTkFNRURvbWFpbkZvclRlc3Rp
bmcoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiBk
b21haW4pIC0+ICgpIEFzeW5jCiAjZW5kaWYKIAogICAgIFNldEFkQ2xpY2tBdHRyaWJ1dGlvbkRl
YnVnTW9kZShib29sIGRlYnVnTW9kZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24uY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrU2Vzc2lvbi5jcHAKaW5kZXggNmI2NmJjZjIyMjBjMzViYWVhNmQyYmI1OGUxMzAx
ODhkMTY2NjhhOC4uYTdjYjE3NDQ5YzRmNDcyMzhiMTVjZGE5NjY0MTNjMGZiODYxZmRlNyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5jcHAKQEAg
LTkwLDYgKzkwLDcgQEAgTmV0d29ya1Nlc3Npb246Ok5ldHdvcmtTZXNzaW9uKE5ldHdvcmtQcm9j
ZXNzJiBuZXR3b3JrUHJvY2VzcywgY29uc3QgTmV0d29ya1Nlc3MKICAgICAsIG1fc2FtZVNpdGVT
dHJpY3RFbmZvcmNlbWVudEVuYWJsZWQocGFyYW1ldGVycy5yZXNvdXJjZUxvYWRTdGF0aXN0aWNz
UGFyYW1ldGVycy5zYW1lU2l0ZVN0cmljdEVuZm9yY2VtZW50RW5hYmxlZCkKICAgICAsIG1fZmly
c3RQYXJ0eVdlYnNpdGVEYXRhUmVtb3ZhbE1vZGUocGFyYW1ldGVycy5yZXNvdXJjZUxvYWRTdGF0
aXN0aWNzUGFyYW1ldGVycy5maXJzdFBhcnR5V2Vic2l0ZURhdGFSZW1vdmFsTW9kZSkKICAgICAs
IG1fc3RhbmRhbG9uZUFwcGxpY2F0aW9uRG9tYWluKHBhcmFtZXRlcnMucmVzb3VyY2VMb2FkU3Rh
dGlzdGljc1BhcmFtZXRlcnMuc3RhbmRhbG9uZUFwcGxpY2F0aW9uRG9tYWluKQorICAgICwgbV9j
bmFtZUNsb2FraW5nTWl0aWdhdGlvbkVuYWJsZWQocGFyYW1ldGVycy5yZXNvdXJjZUxvYWRTdGF0
aXN0aWNzUGFyYW1ldGVycy5jbmFtZUNsb2FraW5nTWl0aWdhdGlvbkVuYWJsZWQpCiAjZW5kaWYK
ICAgICAsIG1fYWRDbGlja0F0dHJpYnV0aW9uKG1ha2VVbmlxdWVSZWY8QWRDbGlja0F0dHJpYnV0
aW9uTWFuYWdlcj4obmV0d29ya1Byb2Nlc3MsIHBhcmFtZXRlcnMuc2Vzc2lvbklEKSkKICAgICAs
IG1fdGVzdFNwZWVkTXVsdGlwbGllcihwYXJhbWV0ZXJzLnRlc3RTcGVlZE11bHRpcGxpZXIpCkBA
IC0yODAsNiArMjgxLDQ0IEBAIHZvaWQgTmV0d29ya1Nlc3Npb246OnNldFNob3VsZEVuYmxlU2Ft
ZVNpdGVTdHJpY3RFbmZvcmNlbWVudChXZWJDb3JlOjpTYW1lU2l0ZVN0CiAgICAgaWYgKG1fcmVz
b3VyY2VMb2FkU3RhdGlzdGljcykKICAgICAgICAgbV9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzLT5z
ZXRTYW1lU2l0ZVN0cmljdEVuZm9yY2VtZW50RW5hYmxlZChlbmFibGVkKTsKIH0KKwordm9pZCBO
ZXR3b3JrU2Vzc2lvbjo6c2V0Rmlyc3RQYXJ0eUhvc3RDTkFNRURvbWFpbihTdHJpbmcmJiBmaXJz
dFBhcnR5SG9zdCwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mJiBjbmFtZURvbWFpbikKK3sK
KyNpZiBIQVZFKENGTkVUV09SS19DTkFNRV9BTkRfQ09PS0lFX1RSQU5TRk9STV9TUEkpCisgICAg
aWYgKCFjbmFtZUNsb2FraW5nTWl0aWdhdGlvbkVuYWJsZWQoKSkKKyAgICAgICAgcmV0dXJuOwor
CisgICAgQVNTRVJUKCFmaXJzdFBhcnR5SG9zdC5pc0VtcHR5KCkgJiYgIWNuYW1lRG9tYWluLmlz
RW1wdHkoKSAmJiBmaXJzdFBhcnR5SG9zdCAhPSBjbmFtZURvbWFpbi5zdHJpbmcoKSk7CisgICAg
aWYgKGZpcnN0UGFydHlIb3N0LmlzRW1wdHkoKSB8fCBjbmFtZURvbWFpbi5pc0VtcHR5KCkgfHwg
Zmlyc3RQYXJ0eUhvc3QgPT0gY25hbWVEb21haW4uc3RyaW5nKCkpCisgICAgICAgIHJldHVybjsK
KyAgICBtX2ZpcnN0UGFydHlIb3N0Q05BTUVEb21haW5zLmFkZChXVEZNb3ZlKGZpcnN0UGFydHlI
b3N0KSwgV1RGTW92ZShjbmFtZURvbWFpbikpOworI2Vsc2UKKyAgICBVTlVTRURfUEFSQU0oZmly
c3RQYXJ0eUhvc3QpOworICAgIFVOVVNFRF9QQVJBTShjbmFtZURvbWFpbik7CisjZW5kaWYKK30K
KworT3B0aW9uYWw8V2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4+IE5ldHdvcmtTZXNzaW9uOjpm
aXJzdFBhcnR5SG9zdENOQU1FRG9tYWluKGNvbnN0IFN0cmluZyYgZmlyc3RQYXJ0eUhvc3QpCit7
CisjaWYgSEFWRShDRk5FVFdPUktfQ05BTUVfQU5EX0NPT0tJRV9UUkFOU0ZPUk1fU1BJKQorICAg
IGlmICghY25hbWVDbG9ha2luZ01pdGlnYXRpb25FbmFibGVkKCkpCisgICAgICAgIHJldHVybiBX
VEY6Om51bGxvcHQ7CisKKyAgICBhdXRvIGl0ZXJhdG9yID0gbV9maXJzdFBhcnR5SG9zdENOQU1F
RG9tYWlucy5maW5kKGZpcnN0UGFydHlIb3N0KTsKKyAgICBpZiAoaXRlcmF0b3IgPT0gbV9maXJz
dFBhcnR5SG9zdENOQU1FRG9tYWlucy5lbmQoKSkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9w
dDsKKyAgICByZXR1cm4gaXRlcmF0b3ItPnZhbHVlOworI2Vsc2UKKyAgICBVTlVTRURfUEFSQU0o
Zmlyc3RQYXJ0eUhvc3QpOworICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisjZW5kaWYKK30KKwor
dm9pZCBOZXR3b3JrU2Vzc2lvbjo6cmVzZXRDTkFNRURvbWFpbkRhdGEoKQoreworICAgIG1fZmly
c3RQYXJ0eUhvc3RDTkFNRURvbWFpbnMuY2xlYXIoKTsKKyAgICBtX3RoaXJkUGFydHlDTkFNRURv
bWFpbkZvclRlc3RpbmcgPSBXVEY6Om51bGxvcHQ7Cit9CiAjZW5kaWYgLy8gRU5BQkxFKFJFU09V
UkNFX0xPQURfU1RBVElTVElDUykKIAogdm9pZCBOZXR3b3JrU2Vzc2lvbjo6c3RvcmVBZENsaWNr
QXR0cmlidXRpb24oV2ViQ29yZTo6QWRDbGlja0F0dHJpYnV0aW9uJiYgYWRDbGlja0F0dHJpYnV0
aW9uKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vz
c2lvbi5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5oCmlu
ZGV4IDM4MmJmODA1OWZjMDk4ZmVkZmE1MmExODg1NDFlNzRiZjllNzQzN2QuLjVkM2VmMGVmNmVi
MTFmNTAxY2JmYzg0YjM4N2E3OWE0ODM2Yzk5YWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uLmgKQEAgLTEwNSw2ICsxMDUsMTMgQEAgcHVibGljOgog
ICAgIGJvb2wgc2hvdWxkRG93bmdyYWRlUmVmZXJyZXIoKSBjb25zdDsKICAgICB2b2lkIHNldFRo
aXJkUGFydHlDb29raWVCbG9ja2luZ01vZGUoV2ViQ29yZTo6VGhpcmRQYXJ0eUNvb2tpZUJsb2Nr
aW5nTW9kZSk7CiAgICAgdm9pZCBzZXRTaG91bGRFbmJsZVNhbWVTaXRlU3RyaWN0RW5mb3JjZW1l
bnQoV2ViQ29yZTo6U2FtZVNpdGVTdHJpY3RFbmZvcmNlbWVudEVuYWJsZWQpOworICAgIHZvaWQg
c2V0Q05BTUVDbG9ha2luZ01pdGlnYXRpb25FbmFibGVkKFdlYkNvcmU6OkNOQU1FQ2xvYWtpbmdN
aXRpZ2F0aW9uRW5hYmxlZCB2YWx1ZSkgeyBtX2NuYW1lQ2xvYWtpbmdNaXRpZ2F0aW9uRW5hYmxl
ZCA9IHZhbHVlOyB9CisgICAgYm9vbCBjbmFtZUNsb2FraW5nTWl0aWdhdGlvbkVuYWJsZWQoKSBj
b25zdCB7IHJldHVybiBtX2NuYW1lQ2xvYWtpbmdNaXRpZ2F0aW9uRW5hYmxlZCA9PSBXZWJDb3Jl
OjpDTkFNRUNsb2FraW5nTWl0aWdhdGlvbkVuYWJsZWQ6OlllczsgfQorICAgIHZvaWQgc2V0Rmly
c3RQYXJ0eUhvc3RDTkFNRURvbWFpbihTdHJpbmcmJiBmaXJzdFBhcnR5SG9zdCwgV2ViQ29yZTo6
UmVnaXN0cmFibGVEb21haW4mJiBjbmFtZURvbWFpbik7CisgICAgT3B0aW9uYWw8V2ViQ29yZTo6
UmVnaXN0cmFibGVEb21haW4+IGZpcnN0UGFydHlIb3N0Q05BTUVEb21haW4oY29uc3QgU3RyaW5n
JiBmaXJzdFBhcnR5SG9zdCk7CisgICAgdm9pZCBzZXRUaGlyZFBhcnR5Q05BTUVEb21haW5Gb3JU
ZXN0aW5nKFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiYgZG9tYWluKSB7IG1fdGhpcmRQYXJ0
eUNOQU1FRG9tYWluRm9yVGVzdGluZyA9IFdURk1vdmUoZG9tYWluKTsgfTsKKyAgICBPcHRpb25h
bDxXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbj4gdGhpcmRQYXJ0eUNOQU1FRG9tYWluRm9yVGVz
dGluZygpIGNvbnN0IHsgcmV0dXJuIG1fdGhpcmRQYXJ0eUNOQU1FRG9tYWluRm9yVGVzdGluZzsg
fQorICAgIHZvaWQgcmVzZXRDTkFNRURvbWFpbkRhdGEoKTsKICAgICB2b2lkIGRlc3Ryb3lSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAgdm9p
ZCBmbHVzaEFuZERlc3Ryb3lQZXJzaXN0ZW50U3RvcmUoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgp
PiYmKTsKICNlbmRpZgpAQCAtMTY2LDYgKzE3Myw5IEBAIHByb3RlY3RlZDoKICAgICBXZWJDb3Jl
OjpTYW1lU2l0ZVN0cmljdEVuZm9yY2VtZW50RW5hYmxlZCBtX3NhbWVTaXRlU3RyaWN0RW5mb3Jj
ZW1lbnRFbmFibGVkIHsgV2ViQ29yZTo6U2FtZVNpdGVTdHJpY3RFbmZvcmNlbWVudEVuYWJsZWQ6
Ok5vIH07CiAgICAgV2ViQ29yZTo6Rmlyc3RQYXJ0eVdlYnNpdGVEYXRhUmVtb3ZhbE1vZGUgbV9m
aXJzdFBhcnR5V2Vic2l0ZURhdGFSZW1vdmFsTW9kZSB7IFdlYkNvcmU6OkZpcnN0UGFydHlXZWJz
aXRlRGF0YVJlbW92YWxNb2RlOjpBbGxCdXRDb29raWVzIH07CiAgICAgV2ViQ29yZTo6UmVnaXN0
cmFibGVEb21haW4gbV9zdGFuZGFsb25lQXBwbGljYXRpb25Eb21haW47CisgICAgV2ViQ29yZTo6
Q05BTUVDbG9ha2luZ01pdGlnYXRpb25FbmFibGVkIG1fY25hbWVDbG9ha2luZ01pdGlnYXRpb25F
bmFibGVkIHsgV2ViQ29yZTo6Q05BTUVDbG9ha2luZ01pdGlnYXRpb25FbmFibGVkOjpObyB9Owor
ICAgIEhhc2hNYXA8U3RyaW5nLCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbj4gbV9maXJzdFBh
cnR5SG9zdENOQU1FRG9tYWluczsKKyAgICBPcHRpb25hbDxXZWJDb3JlOjpSZWdpc3RyYWJsZURv
bWFpbj4gbV90aGlyZFBhcnR5Q05BTUVEb21haW5Gb3JUZXN0aW5nOwogI2VuZGlmCiAgICAgYm9v
bCBtX2lzU3RhbGVXaGlsZVJldmFsaWRhdGVFbmFibGVkIHsgZmFsc2UgfTsKICAgICBVbmlxdWVS
ZWY8QWRDbGlja0F0dHJpYnV0aW9uTWFuYWdlcj4gbV9hZENsaWNrQXR0cmlidXRpb247CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtEYXRhVGFz
a0NvY29hLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtEYXRh
VGFza0NvY29hLmgKaW5kZXggMmMxZDg4Y2FjYzNlOTk5NGZhOWM4Mjk2MTI4ODE0ZWM5ZTlhNjcz
Yy4uZjAxMzM0ODE0ZDNkZDA4ZGY1MTBhODgyZjM0MWY2NTYyYzU4NzRiYSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrRGF0YVRhc2tDb2NvYS5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya0RhdGFUYXNr
Q29jb2EuaApAQCAtMzQsNiArMzQsMTAgQEAKIE9CSkNfQ0xBU1MgTlNIVFRQQ29va2llU3RvcmFn
ZTsKIE9CSkNfQ0xBU1MgTlNVUkxTZXNzaW9uRGF0YVRhc2s7CiAKK25hbWVzcGFjZSBXZWJDb3Jl
IHsKK2NsYXNzIFJlZ2lzdHJhYmxlRG9tYWluOworfQorCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAog
Y2xhc3MgRG93bmxvYWQ7CkBAIC04Nyw2ICs5MSwxMCBAQCBwcml2YXRlOgogCiAjaWYgRU5BQkxF
KFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKICAgICBzdGF0aWMgTlNIVFRQQ29va2llU3RvcmFn
ZSAqc3RhdGVsZXNzQ29va2llU3RvcmFnZSgpOworI2lmIEhBVkUoQ0ZORVRXT1JLX0NOQU1FX0FO
RF9DT09LSUVfVFJBTlNGT1JNX1NQSSkKKyAgICB2b2lkIHVwZGF0ZUZpcnN0UGFydHlJbmZvRm9y
U2Vzc2lvbihjb25zdCBVUkwmKTsKKyAgICB2b2lkIGFwcGx5Q29va2llUG9saWN5Rm9yVGhpcmRQ
YXJ0eUNOQU1FQ2xvYWtpbmcoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0Jik7CisjZW5k
aWYKICAgICB2b2lkIGJsb2NrQ29va2llcygpOwogICAgIHZvaWQgdW5ibG9ja0Nvb2tpZXMoKTsK
ICAgICBib29sIG5lZWRzRmlyc3RQYXJ0eUNvb2tpZUJsb2NraW5nTGF0Y2hNb2RlUXVpcmsoY29u
c3QgVVJMJiBmaXJzdFBhcnR5VVJMLCBjb25zdCBVUkwmIHJlcXVlc3RVUkwsIGNvbnN0IFVSTCYg
cmVkaXJlY3RpbmdVUkwpIGNvbnN0OwpAQCAtMTAyLDYgKzExMCw5IEBAIHByaXZhdGU6CiAKICNp
ZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQogICAgIGJvb2wgbV9oYXNCZWVuU2V0
VG9Vc2VTdGF0ZWxlc3NDb29raWVTdG9yYWdlIHsgZmFsc2UgfTsKKyNpZiBIQVZFKENGTkVUV09S
S19DTkFNRV9BTkRfQ09PS0lFX1RSQU5TRk9STV9TUEkpCisgICAgU2Vjb25kcyBtX2FnZUNhcEZv
ckNOQU1FQ2xvYWtlZENvb2tpZXMgeyAyNF9oICogNyB9OworI2VuZGlmCiAjZW5kaWYKIAogICAg
IGJvb2wgbV9pc0Zvck1haW5SZXNvdXJjZU5hdmlnYXRpb25Gb3JBbnlGcmFtZSB7IGZhbHNlIH07
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtE
YXRhVGFza0NvY29hLm1tIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3
b3JrRGF0YVRhc2tDb2NvYS5tbQppbmRleCA3N2I3ZDEzNDU0NGMxNDQ2MmRmZDhhZTJmMDJmODNj
ZjllMzdkNjA0Li5iMmU5ZGJlNjM2MTgzNzdjNzdmOGRiYmNkNGNmYjRjMmYxZTRmMDJiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtEYXRhVGFz
a0NvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29y
a0RhdGFUYXNrQ29jb2EubW0KQEAgLTM4LDYgKzM4LDcgQEAKICNpbXBvcnQgPFdlYkNvcmUvQXV0
aGVudGljYXRpb25DaGFsbGVuZ2UuaD4KICNpbXBvcnQgPFdlYkNvcmUvTmV0d29ya1N0b3JhZ2VT
ZXNzaW9uLmg+CiAjaW1wb3J0IDxXZWJDb3JlL05vdEltcGxlbWVudGVkLmg+CisjaW1wb3J0IDxX
ZWJDb3JlL1JlZ2lzdHJhYmxlRG9tYWluLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1Jlc291cmNlUmVx
dWVzdC5oPgogI2ltcG9ydCA8cGFsL3NwaS9jZi9DRk5ldHdvcmtTUEkuaD4KICNpbXBvcnQgPHd0
Zi9CbG9ja1B0ci5oPgpAQCAtMTI5LDYgKzEzMCw4NyBAQCBOU0hUVFBDb29raWVTdG9yYWdlICpO
ZXR3b3JrRGF0YVRhc2tDb2NvYTo6c3RhdGVsZXNzQ29va2llU3RvcmFnZSgpCiAgICAgcmV0dXJu
IHN0YXRlbGVzc0Nvb2tpZVN0b3JhZ2UuZ2V0KCkuZ2V0KCk7CiB9CiAKKyNpZiBIQVZFKENGTkVU
V09SS19DTkFNRV9BTkRfQ09PS0lFX1RSQU5TRk9STV9TUEkpCisvLyBGSVhNRTogUmVtb3ZlIHRo
ZXNlIHNlbGVjdG9yIGNoZWNrcyB3aGVuIG1hY09TIEJpZyBTdXIgaGFzIHNoaXBwZWQuCitzdGF0
aWMgYm9vbCBoYXNDTkFNRUFuZENvb2tpZVRyYW5zZm9ybVNQSShOU1VSTFNlc3Npb25EYXRhVGFz
ayogdGFzaykKK3sKKyAgICByZXR1cm4gW3Rhc2sgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3Rv
cihfY29va2llVHJhbnNmb3JtQ2FsbGJhY2spXQorICAgICAgICAmJiBbdGFzayByZXNwb25kc1Rv
U2VsZWN0b3I6QHNlbGVjdG9yKF9yZXNvbHZlZENOQU1FQ2hhaW4pXTsKK30KKworc3RhdGljIFdl
YkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIGxhc3RDTkFNRURvbWFpbihOU0FycmF5PE5TU3RyaW5n
ICo+ICpjbmFtZXMpCit7CisgICAgaWYgKGF1dG8qIGxhc3RSZXNvbHZlZENOQU1FSW5DaGFpbiA9
IFtjbmFtZXMgbGFzdE9iamVjdF0pIHsKKyAgICAgICAgYXV0byBjbmFtZSA9IFN0cmluZyhsYXN0
UmVzb2x2ZWRDTkFNRUluQ2hhaW4pOworICAgICAgICBpZiAoY25hbWUuZW5kc1dpdGgoJy4nKSkK
KyAgICAgICAgICAgIGNuYW1lLnJlbW92ZShjbmFtZS5sZW5ndGgoKSAtIDEpOworICAgICAgICBy
ZXR1cm4gV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW46OnVuY2hlY2tlZENyZWF0ZUZyb21Ib3N0
KGNuYW1lKTsKKyAgICB9CisKKyAgICByZXR1cm4geyB9OworfQorCit2b2lkIE5ldHdvcmtEYXRh
VGFza0NvY29hOjp1cGRhdGVGaXJzdFBhcnR5SW5mb0ZvclNlc3Npb24oY29uc3QgVVJMJiByZXF1
ZXN0VVJMKQoreworICAgIGlmICghaGFzQ05BTUVBbmRDb29raWVUcmFuc2Zvcm1TUEkobV90YXNr
LmdldCgpKSB8fCAhbmV0d29ya1Nlc3Npb24oKSB8fCAhbmV0d29ya1Nlc3Npb24oKS0+bmV0d29y
a1N0b3JhZ2VTZXNzaW9uKCkgfHwgIW5ldHdvcmtTZXNzaW9uKCktPm5ldHdvcmtTdG9yYWdlU2Vz
c2lvbigpLT5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzRW5hYmxlZCgpIHx8ICFuZXR3b3JrU2Vzc2lv
bigpLT5jbmFtZUNsb2FraW5nTWl0aWdhdGlvbkVuYWJsZWQoKSB8fCByZXF1ZXN0VVJMLmhvc3Qo
KS5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybjsKKworICAgIGF1dG8gY25hbWVEb21haW4gPSBs
YXN0Q05BTUVEb21haW4oW21fdGFzayBfcmVzb2x2ZWRDTkFNRUNoYWluXSk7CisgICAgaWYgKCFj
bmFtZURvbWFpbi5pc0VtcHR5KCkpCisgICAgICAgIG5ldHdvcmtTZXNzaW9uKCktPnNldEZpcnN0
UGFydHlIb3N0Q05BTUVEb21haW4ocmVxdWVzdFVSTC5ob3N0KCkudG9TdHJpbmcoKSwgV1RGTW92
ZShjbmFtZURvbWFpbikpOworfQorCit2b2lkIE5ldHdvcmtEYXRhVGFza0NvY29hOjphcHBseUNv
b2tpZVBvbGljeUZvclRoaXJkUGFydHlDTkFNRUNsb2FraW5nKGNvbnN0IFdlYkNvcmU6OlJlc291
cmNlUmVxdWVzdCYgcmVxdWVzdCkKK3sKKyAgICBpZiAoIWhhc0NOQU1FQW5kQ29va2llVHJhbnNm
b3JtU1BJKG1fdGFzay5nZXQoKSkgfHwgaXNUb3BMZXZlbE5hdmlnYXRpb24oKSB8fCAhbmV0d29y
a1Nlc3Npb24oKSB8fCAhbmV0d29ya1Nlc3Npb24oKS0+bmV0d29ya1N0b3JhZ2VTZXNzaW9uKCkg
fHwgIW5ldHdvcmtTZXNzaW9uKCktPm5ldHdvcmtTdG9yYWdlU2Vzc2lvbigpLT5yZXNvdXJjZUxv
YWRTdGF0aXN0aWNzRW5hYmxlZCgpIHx8ICFuZXR3b3JrU2Vzc2lvbigpLT5jbmFtZUNsb2FraW5n
TWl0aWdhdGlvbkVuYWJsZWQoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKGlzVGhpcmRQ
YXJ0eVJlcXVlc3QocmVxdWVzdCkpIHsKKyAgICAgICAgbV90YXNrLmdldCgpLl9jb29raWVUcmFu
c2Zvcm1DYWxsYmFjayA9IG5pbDsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIC8vIENh
cCBleHBpcnkgb2YgaW5jb21pbmcgY29va2llcyBpbiByZXNwb25zZSBpZiBpdCBpcyBhIHNhbWUt
c2l0ZQorICAgIC8vIHN1YnJlc291cmNlIGJ1dCBpdCByZXNvbHZlcyB0byBhIGRpZmZlcmVudCBD
TkFNRSB0aGFuIHRoZSB0b3AKKyAgICAvLyBzaXRlIHJlcXVlc3QsIGEuay5hLiB0aGlyZC1wYXJ0
eSBDTkFNRSBjbG9ha2luZy4KKyAgICBhdXRvIGZpcnN0UGFydHlVUkwgPSByZXF1ZXN0LmZpcnN0
UGFydHlGb3JDb29raWVzKCk7CisgICAgYXV0byBmaXJzdFBhcnR5SG9zdENOQU1FID0gbmV0d29y
a1Nlc3Npb24oKS0+Zmlyc3RQYXJ0eUhvc3RDTkFNRURvbWFpbihmaXJzdFBhcnR5VVJMLmhvc3Qo
KS50b1N0cmluZygpKTsKKworICAgIG1fdGFzay5nZXQoKS5fY29va2llVHJhbnNmb3JtQ2FsbGJh
Y2sgPSBtYWtlQmxvY2tQdHIoW3JlcXVlc3RVUkwgPSBjcm9zc1RocmVhZENvcHkocmVxdWVzdC51
cmwoKSksIGZpcnN0UGFydHlVUkwgPSBjcm9zc1RocmVhZENvcHkoZmlyc3RQYXJ0eVVSTCksIGZp
cnN0UGFydHlIb3N0Q05BTUUgPSBjcm9zc1RocmVhZENvcHkoZmlyc3RQYXJ0eUhvc3RDTkFNRSks
IHRoaXJkUGFydHlDTkFNRURvbWFpbkZvclRlc3RpbmcgPSBjcm9zc1RocmVhZENvcHkobmV0d29y
a1Nlc3Npb24oKS0+dGhpcmRQYXJ0eUNOQU1FRG9tYWluRm9yVGVzdGluZygpKSwgYWdlQ2FwRm9y
Q05BTUVDbG9ha2VkQ29va2llcyA9IGNyb3NzVGhyZWFkQ29weShtX2FnZUNhcEZvckNOQU1FQ2xv
YWtlZENvb2tpZXMpLCB0YXNrID0gbV90YXNrXSAoTlNBcnJheTxOU0hUVFBDb29raWUqPiAqY29v
a2llc1NldEluUmVzcG9uc2UpIC0+IE5TQXJyYXk8TlNIVFRQQ29va2llKj4gKiB7CisgICAgICAg
IGlmICghW2Nvb2tpZXNTZXRJblJlc3BvbnNlIGNvdW50XSkKKyAgICAgICAgICAgIHJldHVybiBj
b29raWVzU2V0SW5SZXNwb25zZTsKKworICAgICAgICBhdXRvIGNuYW1lRG9tYWluID0gbGFzdENO
QU1FRG9tYWluKFt0YXNrIF9yZXNvbHZlZENOQU1FQ2hhaW5dKTsKKyAgICAgICAgaWYgKGNuYW1l
RG9tYWluLmlzRW1wdHkoKSkgeworICAgICAgICAgICAgaWYgKCF0aGlyZFBhcnR5Q05BTUVEb21h
aW5Gb3JUZXN0aW5nKQorICAgICAgICAgICAgICAgIHJldHVybiBjb29raWVzU2V0SW5SZXNwb25z
ZTsKKyAgICAgICAgICAgIGNuYW1lRG9tYWluID0gKnRoaXJkUGFydHlDTkFNRURvbWFpbkZvclRl
c3Rpbmc7CisgICAgICAgIH0KKworCisgICAgICAgIC8vIENOQU1FIGNsb2FraW5nIGlzIGEgZmly
c3QtcGFydHkgc3ViIHJlc291cmNlIHRoYXQgcmVzb2x2ZXMKKyAgICAgICAgLy8gdGhyb3VnaCBh
IENOQU1FIHRoYXQgZGlmZmVycyBmcm9tIHRoZSBmaXJzdC1wYXJ0eSBkb21haW4gYW5kCisgICAg
ICAgIC8vIGFsc28gZGlmZmVycyBmcm9tIHRoZSB0b3AgZnJhbWUgaG9zdCdzIENOQU1FLCBpZiBv
bmUgZXhpc3RzLgorICAgICAgICBpZiAoIWNuYW1lRG9tYWluLm1hdGNoZXMoZmlyc3RQYXJ0eVVS
TCkgJiYgKCFmaXJzdFBhcnR5SG9zdENOQU1FIHx8IGNuYW1lRG9tYWluICE9ICpmaXJzdFBhcnR5
SG9zdENOQU1FKSkgeworCisgICAgICAgICAgICBOU1VJbnRlZ2VyIGNvdW50ID0gW2Nvb2tpZXNT
ZXRJblJlc3BvbnNlIGNvdW50XTsKKyAgICAgICAgICAgIC8vIERvbid0IHVzZSBSZXRhaW5QdHIg
aGVyZS4gVGhpcyBhcnJheSBoYXMgdG8gYmUgcmV0YWluZWQgYW5kCisgICAgICAgICAgICAvLyBh
dXRvIHJlbGVhc2VkIHRvIG5vdCBiZSByZWxlYXNlZCBiZWZvcmUgcmV0dXJuZWQgdG8gdGhlIGNv
ZGUKKyAgICAgICAgICAgIC8vIGV4ZWN1dGluZyB0aGUgYmxvY2suCisgICAgICAgICAgICBhdXRv
KiBjYXBwZWRDb29raWVzID0gW05TTXV0YWJsZUFycmF5IGFycmF5V2l0aENhcGFjaXR5OmNvdW50
XTsKKyAgICAgICAgICAgIGZvciAoTlNVSW50ZWdlciBpID0gMDsgaSA8IGNvdW50OyArK2kpIHsK
KyAgICAgICAgICAgICAgICBOU0hUVFBDb29raWUgKmNvb2tpZSA9IChOU0hUVFBDb29raWUgKilb
Y29va2llc1NldEluUmVzcG9uc2Ugb2JqZWN0QXRJbmRleDppXTsKKyAgICAgICAgICAgICAgICBj
b29raWUgPSBXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb246OmNhcEV4cGlyeU9mUGVyc2lz
dGVudENvb2tpZShjb29raWUsIGFnZUNhcEZvckNOQU1FQ2xvYWtlZENvb2tpZXMpOworICAgICAg
ICAgICAgICAgIFtjYXBwZWRDb29raWVzIGFkZE9iamVjdDpjb29raWVdOworICAgICAgICAgICAg
fQorICAgICAgICAgICAgcmV0dXJuIGNhcHBlZENvb2tpZXM7CisgICAgICAgIH0KKworICAgICAg
ICByZXR1cm4gY29va2llc1NldEluUmVzcG9uc2U7CisgICAgfSkuZ2V0KCk7Cit9CisjZW5kaWYK
Kwogdm9pZCBOZXR3b3JrRGF0YVRhc2tDb2NvYTo6YmxvY2tDb29raWVzKCkKIHsKICAgICBBU1NF
UlQoaGFzUHJvY2Vzc1ByaXZpbGVnZShQcm9jZXNzUHJpdmlsZWdlOjpDYW5BY2Nlc3NSYXdDb29r
aWVzKSk7CkBAIC0yNjMsNiArMzQ1LDkgQEAgTmV0d29ya0RhdGFUYXNrQ29jb2E6Ok5ldHdvcmtE
YXRhVGFza0NvY29hKE5ldHdvcmtTZXNzaW9uJiBzZXNzaW9uLCBOZXR3b3JrRGF0YVQKICAgICB9
CiAKICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQorI2lmIEhBVkUoQ0ZORVRX
T1JLX0NOQU1FX0FORF9DT09LSUVfVFJBTlNGT1JNX1NQSSkKKyAgICBhcHBseUNvb2tpZVBvbGlj
eUZvclRoaXJkUGFydHlDTkFNRUNsb2FraW5nKHJlcXVlc3QpOworI2VuZGlmCiAgICAgaWYgKHNo
b3VsZEJsb2NrQ29va2llcykgewogI2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRAogICAgICAgICBp
ZiAobV9zZXNzaW9uLT5zaG91bGRMb2dDb29raWVJbmZvcm1hdGlvbigpKQpAQCAtMzQ1LDYgKzQz
MCwxMCBAQCB2b2lkIE5ldHdvcmtEYXRhVGFza0NvY29hOjpkaWRSZWNlaXZlRGF0YShSZWY8V2Vi
Q29yZTo6U2hhcmVkQnVmZmVyPiYmIGRhdGEpCiB2b2lkIE5ldHdvcmtEYXRhVGFza0NvY29hOjpk
aWRSZWNlaXZlUmVzcG9uc2UoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmIHJlc3BvbnNlLCBO
ZWdvdGlhdGVkTGVnYWN5VExTIG5lZ290aWF0ZWRMZWdhY3lUTFMsIFdlYktpdDo6UmVzcG9uc2VD
b21wbGV0aW9uSGFuZGxlciYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIFdURkVtaXRTaWdu
cG9zdChtX3Rhc2suZ2V0KCksICJEYXRhVGFzayIsICJyZWNlaXZlZCByZXNwb25zZSBoZWFkZXJz
Iik7CisjaWYgSEFWRShDRk5FVFdPUktfQ05BTUVfQU5EX0NPT0tJRV9UUkFOU0ZPUk1fU1BJKQor
ICAgIGlmIChpc1RvcExldmVsTmF2aWdhdGlvbigpKQorICAgICAgICB1cGRhdGVGaXJzdFBhcnR5
SW5mb0ZvclNlc3Npb24ocmVzcG9uc2UudXJsKCkpOworI2VuZGlmCiAgICAgTmV0d29ya0RhdGFU
YXNrOjpkaWRSZWNlaXZlUmVzcG9uc2UoV1RGTW92ZShyZXNwb25zZSksIG5lZ290aWF0ZWRMZWdh
Y3lUTFMsIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKIH0KIApAQCAtMzk5LDYgKzQ4OCw5
IEBAIHZvaWQgTmV0d29ya0RhdGFUYXNrQ29jb2E6OndpbGxQZXJmb3JtSFRUUFJlZGlyZWN0aW9u
KFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmCiAgICAgICAgIHJlcXVlc3Quc2V0Rmlyc3RQYXJ0
eUZvckNvb2tpZXMocmVxdWVzdC51cmwoKSk7CiAKICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9T
VEFUSVNUSUNTKQorI2lmIEhBVkUoQ0ZORVRXT1JLX0NOQU1FX0FORF9DT09LSUVfVFJBTlNGT1JN
X1NQSSkKKyAgICBhcHBseUNvb2tpZVBvbGljeUZvclRoaXJkUGFydHlDTkFNRUNsb2FraW5nKHJl
cXVlc3QpOworI2VuZGlmCiAgICAgaWYgKCFtX2hhc0JlZW5TZXRUb1VzZVN0YXRlbGVzc0Nvb2tp
ZVN0b3JhZ2UpIHsKICAgICAgICAgaWYgKG1fc3RvcmVkQ3JlZGVudGlhbHNQb2xpY3kgPT0gV2Vi
Q29yZTo6U3RvcmVkQ3JlZGVudGlhbHNQb2xpY3k6OkVwaGVtZXJhbFN0YXRlbGVzcwogICAgICAg
ICAgICAgfHwgKG1fc2Vzc2lvbi0+bmV0d29ya1N0b3JhZ2VTZXNzaW9uKCkgJiYgbV9zZXNzaW9u
LT5uZXR3b3JrU3RvcmFnZVNlc3Npb24oKS0+c2hvdWxkQmxvY2tDb29raWVzKHJlcXVlc3QsIG1f
ZnJhbWVJRCwgbV9wYWdlSUQsIG1fc2hvdWxkUmVsYXhUaGlyZFBhcnR5Q29va2llQmxvY2tpbmcp
KSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1Jlc291cmNlTG9hZFN0YXRpc3Rp
Y3NQYXJhbWV0ZXJzLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9SZXNvdXJjZUxvYWRTdGF0aXN0
aWNzUGFyYW1ldGVycy5oCmluZGV4IDYwZGUzNWY2YWU5NTdkNzA2NzU5NDk2NDczY2UzNTE2NDI0
MWUyZWIuLmFjYjM0ZWFiMTE2NTdjMDMzYzUyYWUzYWViMDE4NTgyNWUwZDc3OGMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NQYXJhbWV0ZXJz
LmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvUmVzb3VyY2VMb2FkU3RhdGlzdGljc1BhcmFt
ZXRlcnMuaApAQCAtNDUsNiArNDUsNyBAQCBzdHJ1Y3QgUmVzb3VyY2VMb2FkU3RhdGlzdGljc1Bh
cmFtZXRlcnMgewogI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCiAgICAgV2Vi
Q29yZTo6VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9kZSB0aGlyZFBhcnR5Q29va2llQmxvY2tp
bmdNb2RlIHsgV2ViQ29yZTo6VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9kZTo6QWxsIH07CiAg
ICAgV2ViQ29yZTo6U2FtZVNpdGVTdHJpY3RFbmZvcmNlbWVudEVuYWJsZWQgc2FtZVNpdGVTdHJp
Y3RFbmZvcmNlbWVudEVuYWJsZWQgeyBXZWJDb3JlOjpTYW1lU2l0ZVN0cmljdEVuZm9yY2VtZW50
RW5hYmxlZDo6Tm8gfTsKKyAgICBXZWJDb3JlOjpDTkFNRUNsb2FraW5nTWl0aWdhdGlvbkVuYWJs
ZWQgY25hbWVDbG9ha2luZ01pdGlnYXRpb25FbmFibGVkIHsgV2ViQ29yZTo6Q05BTUVDbG9ha2lu
Z01pdGlnYXRpb25FbmFibGVkOjpObyB9OwogI2VuZGlmCiAgICAgV2ViQ29yZTo6Rmlyc3RQYXJ0
eVdlYnNpdGVEYXRhUmVtb3ZhbE1vZGUgZmlyc3RQYXJ0eVdlYnNpdGVEYXRhUmVtb3ZhbE1vZGUg
eyBXZWJDb3JlOjpGaXJzdFBhcnR5V2Vic2l0ZURhdGFSZW1vdmFsTW9kZTo6QWxsQnV0Q29va2ll
cyB9OwogICAgIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIHN0YW5kYWxvbmVBcHBsaWNhdGlv
bkRvbWFpbjsKQEAgLTYzLDYgKzY0LDcgQEAgc3RydWN0IFJlc291cmNlTG9hZFN0YXRpc3RpY3NQ
YXJhbWV0ZXJzIHsKICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQogICAgICAg
ICBlbmNvZGVyIDw8IHRoaXJkUGFydHlDb29raWVCbG9ja2luZ01vZGU7CiAgICAgICAgIGVuY29k
ZXIgPDwgc2FtZVNpdGVTdHJpY3RFbmZvcmNlbWVudEVuYWJsZWQ7CisgICAgICAgIGVuY29kZXIg
PDwgY25hbWVDbG9ha2luZ01pdGlnYXRpb25FbmFibGVkOwogI2VuZGlmCiAgICAgICAgIGVuY29k
ZXIgPDwgZmlyc3RQYXJ0eVdlYnNpdGVEYXRhUmVtb3ZhbE1vZGU7CiAgICAgICAgIGVuY29kZXIg
PDwgc3RhbmRhbG9uZUFwcGxpY2F0aW9uRG9tYWluOwpAQCAtMTE3LDYgKzExOSwxMSBAQCBzdHJ1
Y3QgUmVzb3VyY2VMb2FkU3RhdGlzdGljc1BhcmFtZXRlcnMgewogICAgICAgICBkZWNvZGVyID4+
IHNhbWVTaXRlU3RyaWN0RW5mb3JjZW1lbnRFbmFibGVkOwogICAgICAgICBpZiAoIXNhbWVTaXRl
U3RyaWN0RW5mb3JjZW1lbnRFbmFibGVkKQogICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9w
dDsKKworICAgICAgICBPcHRpb25hbDxXZWJDb3JlOjpDTkFNRUNsb2FraW5nTWl0aWdhdGlvbkVu
YWJsZWQ+IGNuYW1lQ2xvYWtpbmdNaXRpZ2F0aW9uRW5hYmxlZDsKKyAgICAgICAgZGVjb2RlciA+
PiBjbmFtZUNsb2FraW5nTWl0aWdhdGlvbkVuYWJsZWQ7CisgICAgICAgIGlmICghY25hbWVDbG9h
a2luZ01pdGlnYXRpb25FbmFibGVkKQorICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsK
ICNlbmRpZgogCiAgICAgICAgIE9wdGlvbmFsPFdlYkNvcmU6OkZpcnN0UGFydHlXZWJzaXRlRGF0
YVJlbW92YWxNb2RlPiBmaXJzdFBhcnR5V2Vic2l0ZURhdGFSZW1vdmFsTW9kZTsKQEAgLTE1MCw2
ICsxNTcsNyBAQCBzdHJ1Y3QgUmVzb3VyY2VMb2FkU3RhdGlzdGljc1BhcmFtZXRlcnMgewogI2lm
IEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCiAgICAgICAgICAgICBXVEZNb3ZlKCp0
aGlyZFBhcnR5Q29va2llQmxvY2tpbmdNb2RlKSwKICAgICAgICAgICAgIFdURk1vdmUoKnNhbWVT
aXRlU3RyaWN0RW5mb3JjZW1lbnRFbmFibGVkKSwKKyAgICAgICAgICAgIFdURk1vdmUoKmNuYW1l
Q2xvYWtpbmdNaXRpZ2F0aW9uRW5hYmxlZCksCiAjZW5kaWYKICAgICAgICAgICAgIFdURk1vdmUo
KmZpcnN0UGFydHlXZWJzaXRlRGF0YVJlbW92YWxNb2RlKSwKICAgICAgICAgICAgIFdURk1vdmUo
KnN0YW5kYWxvbmVBcHBsaWNhdGlvbkRvbWFpbiksCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9XZWJQcmVmZXJlbmNlcy55YW1sIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUHJl
ZmVyZW5jZXMueWFtbAppbmRleCA4OGFlNmFlMmQ5YTM5NzQ3NjFjYjk3MjQ2NDdmYjM2MTNkY2I1
NzYyLi45YWE5ZjA2MTE0MDM3N2IxZjdlYzEwZmY2NDdkODU5YzQzZDlmZWQ4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQcmVmZXJlbmNlcy55YW1sCisrKyBiL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL1dlYlByZWZlcmVuY2VzLnlhbWwKQEAgLTIwNTYsNiArMjA1NiwxMyBAQCBJ
c1NhbWVTaXRlU3RyaWN0RW5mb3JjZW1lbnRFbmFibGVkOgogICBodW1hblJlYWRhYmxlRGVzY3Jp
cHRpb246ICJFbmFibGUgU2FtZVNpdGUgc3RyaWN0IGVuZm9yY2VtZW50IHRvIG1pdGlnYXRlIGJv
dW5jZSB0cmFja2luZyIKICAgY2F0ZWdvcnk6IGV4cGVyaW1lbnRhbAogCitJc0NOQU1FQ2xvYWtp
bmdNaXRpZ2F0aW9uRW5hYmxlZDoKKyAgdHlwZTogYm9vbAorICBkZWZhdWx0VmFsdWU6IGZhbHNl
CisgIGh1bWFuUmVhZGFibGVOYW1lOiAiRW5hYmxlIENOQU1FIGNsb2FraW5nIG1pdGlnYXRpb24g
KElUUCkiCisgIGh1bWFuUmVhZGFibGVEZXNjcmlwdGlvbjogIkVuYWJsZSB0aGlyZC1wYXJ0eSBD
TkFNRSBjbG9ha2luZyBtaXRpZ2F0aW9uIHdoZW4gSW50ZWxsaWdlbnQgVHJhY2tpbmcgUHJldmVu
dGlvbiBpcyBlbmFibGVkIgorICBjYXRlZ29yeTogZXhwZXJpbWVudGFsCisKIElzTG9nZ2VkSW5B
UElFbmFibGVkOgogICAgIHR5cGU6IGJvb2wKICAgICBkZWZhdWx0VmFsdWU6IGZhbHNlCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1dlYnNpdGVEYXRhU3RvcmVS
ZWYuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tXZWJzaXRlRGF0YVN0b3Jl
UmVmLmNwcAppbmRleCA4MDBlNzU0OWVhMTc5NmYzZTdkYjEzNWQ2YjE3MDRkMGQ4ZmI5NjNkLi5m
MzU2M2U5NDQxY2U2YjE0YjQyY2ZjZTg1ZjE5ZDlkOTI5MDBkMzUzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1dlYnNpdGVEYXRhU3RvcmVSZWYuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLV2Vic2l0ZURhdGFTdG9yZVJlZi5jcHAK
QEAgLTYyOCw2ICs2MjgsMjggQEAgdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVTZXRSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzVG9TYW1lU2l0ZVN0cmljdENvb2tpZXNGb3JUZXN0aW4KICNlbmRpZgogfQog
Cit2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZVNldFJlc291cmNlTG9hZFN0YXRpc3RpY3NGaXJzdFBh
cnR5SG9zdENOQU1FRG9tYWluRm9yVGVzdGluZyhXS1dlYnNpdGVEYXRhU3RvcmVSZWYgZGF0YVN0
b3JlUmVmLCBXS1N0cmluZ1JlZiBmaXJzdFBhcnR5VVJMU3RyaW5nLCBXS1N0cmluZ1JlZiBjbmFt
ZVVSTFN0cmluZywgdm9pZCogY29udGV4dCwgV0tXZWJzaXRlRGF0YVN0b3JlU2V0UmVzb3VyY2VM
b2FkU3RhdGlzdGljc0ZpcnN0UGFydHlIb3N0Q05BTUVEb21haW5Gb3JUZXN0aW5nRnVuY3Rpb24g
Y29tcGxldGlvbkhhbmRsZXIpCit7CisjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElD
UykKKyAgICBXZWJLaXQ6OnRvSW1wbChkYXRhU3RvcmVSZWYpLT5zZXRSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzRmlyc3RQYXJ0eUhvc3RDTkFNRURvbWFpbkZvclRlc3RpbmcoVVJMKFVSTCgpLCBXZWJL
aXQ6OnRvSW1wbChmaXJzdFBhcnR5VVJMU3RyaW5nKS0+c3RyaW5nKCkpLCBVUkwoVVJMKCksIFdl
YktpdDo6dG9JbXBsKGNuYW1lVVJMU3RyaW5nKS0+c3RyaW5nKCkpLCBbY29udGV4dCwgY29tcGxl
dGlvbkhhbmRsZXJdIHsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoY29udGV4dCk7CisgICAg
fSk7CisjZWxzZQorICAgIGNvbXBsZXRpb25IYW5kbGVyKGNvbnRleHQpOworI2VuZGlmCit9CisK
K3ZvaWQgV0tXZWJzaXRlRGF0YVN0b3JlU2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc1RoaXJkUGFy
dHlDTkFNRURvbWFpbkZvclRlc3RpbmcoV0tXZWJzaXRlRGF0YVN0b3JlUmVmIGRhdGFTdG9yZVJl
ZiwgV0tTdHJpbmdSZWYgY25hbWVVUkxTdHJpbmcsIHZvaWQqIGNvbnRleHQsIFdLV2Vic2l0ZURh
dGFTdG9yZVNldFJlc291cmNlTG9hZFN0YXRpc3RpY3NUaGlyZFBhcnR5Q05BTUVEb21haW5Gb3JU
ZXN0aW5nRnVuY3Rpb24gY29tcGxldGlvbkhhbmRsZXIpCit7CisjaWYgRU5BQkxFKFJFU09VUkNF
X0xPQURfU1RBVElTVElDUykKKyAgICBXZWJLaXQ6OnRvSW1wbChkYXRhU3RvcmVSZWYpLT5zZXRS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzVGhpcmRQYXJ0eUNOQU1FRG9tYWluRm9yVGVzdGluZyhVUkwo
VVJMKCksIFdlYktpdDo6dG9JbXBsKGNuYW1lVVJMU3RyaW5nKS0+c3RyaW5nKCkpLCBbY29udGV4
dCwgY29tcGxldGlvbkhhbmRsZXJdIHsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoY29udGV4
dCk7CisgICAgfSk7CisjZWxzZQorICAgIGNvbXBsZXRpb25IYW5kbGVyKGNvbnRleHQpOworI2Vu
ZGlmCit9CisKIHZvaWQgV0tXZWJzaXRlRGF0YVN0b3JlU2V0QXBwQm91bmREb21haW5zRm9yVGVz
dGluZyhXS0FycmF5UmVmIG9yaWdpblVSTHNSZWYsIHZvaWQqIGNvbnRleHQsIFdLV2Vic2l0ZURh
dGFTdG9yZVNldEFwcEJvdW5kRG9tYWluc0ZvclRlc3RpbmdGdW5jdGlvbiBjb21wbGV0aW9uSGFu
ZGxlcikKIHsKICNpZiBQTEFURk9STShDT0NPQSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9DL1dLV2Vic2l0ZURhdGFTdG9yZVJlZi5oIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0MvV0tXZWJzaXRlRGF0YVN0b3JlUmVmLmgKaW5kZXggZDhiOGQxZjQwYjg2
NTQzOGEyODgxNDM4MDk3ZWJjMGYwYzdlMWZkYy4uZWI4MmZhZDQ0NjhmNmYzNDdiMGJkOGQ0NjI0
ZmM1YWQ2NWQ3OTk5NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0Mv
V0tXZWJzaXRlRGF0YVN0b3JlUmVmLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0MvV0tXZWJzaXRlRGF0YVN0b3JlUmVmLmgKQEAgLTEzMCw2ICsxMzAsMTAgQEAgdHlwZWRlZiB2
b2lkICgqV0tXZWJzaXRlRGF0YVN0b3JlU2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0ZpcnN0UGFy
dHlXZWJzaXRlRGF0YVIKIFdLX0VYUE9SVCB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZVNldFJlc291
cmNlTG9hZFN0YXRpc3RpY3NGaXJzdFBhcnR5V2Vic2l0ZURhdGFSZW1vdmFsTW9kZUZvclRlc3Rp
bmcoV0tXZWJzaXRlRGF0YVN0b3JlUmVmIGRhdGFTdG9yZVJlZiwgYm9vbCBlbmFibGVkLCB2b2lk
KiBjb250ZXh0LCBXS1dlYnNpdGVEYXRhU3RvcmVTZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRmly
c3RQYXJ0eVdlYnNpdGVEYXRhUmVtb3ZhbE1vZGVGb3JUZXN0aW5nRnVuY3Rpb24gY29tcGxldGlv
bkhhbmRsZXIpOwogdHlwZWRlZiB2b2lkICgqV0tXZWJzaXRlRGF0YVN0b3JlU2V0UmVzb3VyY2VM
b2FkU3RhdGlzdGljc1RvU2FtZVNpdGVTdHJpY3RDb29raWVzRm9yVGVzdGluZ0Z1bmN0aW9uKSh2
b2lkKiBmdW5jdGlvbkNvbnRleHQpOwogV0tfRVhQT1JUIHZvaWQgV0tXZWJzaXRlRGF0YVN0b3Jl
U2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc1RvU2FtZVNpdGVTdHJpY3RDb29raWVzRm9yVGVzdGlu
ZyhXS1dlYnNpdGVEYXRhU3RvcmVSZWYgZGF0YVN0b3JlUmVmLCBXS1N0cmluZ1JlZiBob3N0TmFt
ZSwgdm9pZCogY29udGV4dCwgV0tXZWJzaXRlRGF0YVN0b3JlU2V0UmVzb3VyY2VMb2FkU3RhdGlz
dGljc1RvU2FtZVNpdGVTdHJpY3RDb29raWVzRm9yVGVzdGluZ0Z1bmN0aW9uIGNvbXBsZXRpb25I
YW5kbGVyKTsKK3R5cGVkZWYgdm9pZCAoKldLV2Vic2l0ZURhdGFTdG9yZVNldFJlc291cmNlTG9h
ZFN0YXRpc3RpY3NGaXJzdFBhcnR5SG9zdENOQU1FRG9tYWluRm9yVGVzdGluZ0Z1bmN0aW9uKSh2
b2lkKiBmdW5jdGlvbkNvbnRleHQpOworV0tfRVhQT1JUIHZvaWQgV0tXZWJzaXRlRGF0YVN0b3Jl
U2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0ZpcnN0UGFydHlIb3N0Q05BTUVEb21haW5Gb3JUZXN0
aW5nKFdLV2Vic2l0ZURhdGFTdG9yZVJlZiBkYXRhU3RvcmVSZWYsIFdLU3RyaW5nUmVmIGZpcnN0
UGFydHlVUkxTdHJpbmcsIFdLU3RyaW5nUmVmIGNuYW1lVVJMU3RyaW5nLCB2b2lkKiBjb250ZXh0
LCBXS1dlYnNpdGVEYXRhU3RvcmVTZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRmlyc3RQYXJ0eUhv
c3RDTkFNRURvbWFpbkZvclRlc3RpbmdGdW5jdGlvbiBjb21wbGV0aW9uSGFuZGxlcik7Cit0eXBl
ZGVmIHZvaWQgKCpXS1dlYnNpdGVEYXRhU3RvcmVTZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzVGhp
cmRQYXJ0eUNOQU1FRG9tYWluRm9yVGVzdGluZ0Z1bmN0aW9uKSh2b2lkKiBmdW5jdGlvbkNvbnRl
eHQpOworV0tfRVhQT1JUIHZvaWQgV0tXZWJzaXRlRGF0YVN0b3JlU2V0UmVzb3VyY2VMb2FkU3Rh
dGlzdGljc1RoaXJkUGFydHlDTkFNRURvbWFpbkZvclRlc3RpbmcoV0tXZWJzaXRlRGF0YVN0b3Jl
UmVmIGRhdGFTdG9yZVJlZiwgV0tTdHJpbmdSZWYgY25hbWVVUkxTdHJpbmcsIHZvaWQqIGNvbnRl
eHQsIFdLV2Vic2l0ZURhdGFTdG9yZVNldFJlc291cmNlTG9hZFN0YXRpc3RpY3NUaGlyZFBhcnR5
Q05BTUVEb21haW5Gb3JUZXN0aW5nRnVuY3Rpb24gY29tcGxldGlvbkhhbmRsZXIpOwogdHlwZWRl
ZiB2b2lkICgqV0tXZWJzaXRlRGF0YVN0b3JlU2V0QXBwQm91bmREb21haW5zRm9yVGVzdGluZ0Z1
bmN0aW9uKSh2b2lkKiBmdW5jdGlvbkNvbnRleHQpOwogV0tfRVhQT1JUIHZvaWQgV0tXZWJzaXRl
RGF0YVN0b3JlU2V0QXBwQm91bmREb21haW5zRm9yVGVzdGluZyhXS0FycmF5UmVmIG9yaWdpblVS
THNSZWYsIHZvaWQqIGNvbnRleHQsIFdLV2Vic2l0ZURhdGFTdG9yZVNldEFwcEJvdW5kRG9tYWlu
c0ZvclRlc3RpbmdGdW5jdGlvbiBjb21wbGV0aW9uSGFuZGxlcik7CiB0eXBlZGVmIHZvaWQgKCpX
S1dlYnNpdGVEYXRhU3RvcmVTdGF0aXN0aWNzUmVzZXRUb0NvbnNpc3RlbnRTdGF0ZUZ1bmN0aW9u
KSh2b2lkKiBmdW5jdGlvbkNvbnRleHQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAKaW5kZXggMjI3YzVkYzRiY2Q2
ZmQyYzU1Mjk3MzA5YzZmM2UyYThmOGE4ZjI3Yi4uZDEyNTAyMGE1OTVkMjk4ODk2OTNiNDIzMGMx
MDFkODMyNDNhZTNiZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29y
ay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9O
ZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwCkBAIC0xMTk1LDYgKzExOTUsMTUgQEAgdm9p
ZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpzZXRUb1NhbWVTaXRlU3RyaWN0Q29va2llc0ZvclRlc3Rp
bmcoUEFMOjpTZXNzaW9uSUQgc2UKICAgICBzZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6Ok5l
dHdvcmtQcm9jZXNzOjpTZXRUb1NhbWVTaXRlU3RyaWN0Q29va2llc0ZvclRlc3Rpbmcoc2Vzc2lv
bklELCBkb21haW4pLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiB9CiAKK3ZvaWQgTmV0
d29ya1Byb2Nlc3NQcm94eTo6c2V0Rmlyc3RQYXJ0eUhvc3RDTkFNRURvbWFpbkZvclRlc3Rpbmco
UEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBTdHJpbmcmIGZpcnN0UGFydHlIb3N0LCBj
b25zdCBSZWdpc3RyYWJsZURvbWFpbiYgY25hbWVEb21haW4sIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBzZW5kV2l0aEFzeW5jUmVwbHkoTWVz
c2FnZXM6Ok5ldHdvcmtQcm9jZXNzOjpTZXRGaXJzdFBhcnR5SG9zdENOQU1FRG9tYWluRm9yVGVz
dGluZyhzZXNzaW9uSUQsIGZpcnN0UGFydHlIb3N0LCBjbmFtZURvbWFpbiksIFdURk1vdmUoY29t
cGxldGlvbkhhbmRsZXIpKTsKK30KKwordm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpzZXRUaGly
ZFBhcnR5Q05BTUVEb21haW5Gb3JUZXN0aW5nKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29u
c3QgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mIGRvbWFpbiwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIHNlbmRXaXRoQXN5bmNSZXBseShN
ZXNzYWdlczo6TmV0d29ya1Byb2Nlc3M6OlNldFRoaXJkUGFydHlDTkFNRURvbWFpbkZvclRlc3Rp
bmcoc2Vzc2lvbklELCBkb21haW4pLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7Cit9CiB2
b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OnNldERvbWFpbnNXaXRoVXNlckludGVyYWN0aW9uKEhh
c2hTZXQ8V2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4+JiYgZG9tYWlucykKIHsKICAgICBwcm9j
ZXNzUG9vbCgpLnNldERvbWFpbnNXaXRoVXNlckludGVyYWN0aW9uKFdURk1vdmUoZG9tYWlucykp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJv
Y2Vzc1Byb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9j
ZXNzUHJveHkuaAppbmRleCA4NTQ1MDJjYmM2ZWRhNGE2MDBmYzgxYjFiYzJlMDAxYzY2MzhkYTQy
Li5hNDA5NDA0MTY1MDg1YTI4ZjYyODA1ODJmMWY0MDUyNGI3OTVkOTQyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuaApA
QCAtMTg1LDYgKzE4NSw4IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldFNob3VsZEVuYmxlU2FtZVNp
dGVTdHJpY3RFbmZvcmNlbWVudEZvclRlc3RpbmcoUEFMOjpTZXNzaW9uSUQsIFdlYkNvcmU6OlNh
bWVTaXRlU3RyaWN0RW5mb3JjZW1lbnRFbmFibGVkLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+
JiYpOwogICAgIHZvaWQgc2V0Rmlyc3RQYXJ0eVdlYnNpdGVEYXRhUmVtb3ZhbE1vZGVGb3JUZXN0
aW5nKFBBTDo6U2Vzc2lvbklELCBXZWJDb3JlOjpGaXJzdFBhcnR5V2Vic2l0ZURhdGFSZW1vdmFs
TW9kZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKICAgICB2b2lkIHNldFRvU2FtZVNp
dGVTdHJpY3RDb29raWVzRm9yVGVzdGluZyhQQUw6OlNlc3Npb25JRCwgY29uc3QgUmVnaXN0cmFi
bGVEb21haW4mLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOworICAgIHZvaWQgc2V0Rmly
c3RQYXJ0eUhvc3RDTkFNRURvbWFpbkZvclRlc3RpbmcoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFN0
cmluZyYgZmlyc3RQYXJ0eUhvc3QsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBjbmFtZURvbWFp
biwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKKyAgICB2b2lkIHNldFRoaXJkUGFydHlD
TkFNRURvbWFpbkZvclRlc3RpbmcoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFdlYkNvcmU6OlJlZ2lz
dHJhYmxlRG9tYWluJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKICAgICB2b2lkIHNl
dERvbWFpbnNXaXRoVXNlckludGVyYWN0aW9uKEhhc2hTZXQ8V2ViQ29yZTo6UmVnaXN0cmFibGVE
b21haW4+JiYpOwogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYlByb2Nlc3NQb29sLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQ
b29sLmNwcAppbmRleCA2MzNkYmYyYTEwNDkxOTU1OTI2NDk5N2I3ODMxODdjYTUyMWY0ZDhjLi42
ZDZiMzRkN2FmZGY0Y2U2NDA1OWMwNmZkMWM4OGQ1MGFjNjg2Yzc2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCkBAIC02MDEsNiArNjAxLDcgQEAgTmV0d29y
a1Byb2Nlc3NQcm94eSYgV2ViUHJvY2Vzc1Bvb2w6OmVuc3VyZU5ldHdvcmtQcm9jZXNzKFdlYnNp
dGVEYXRhU3RvcmUqIHdpdGgKICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQog
ICAgIFdlYkNvcmU6OlRoaXJkUGFydHlDb29raWVCbG9ja2luZ01vZGUgdGhpcmRQYXJ0eUNvb2tp
ZUJsb2NraW5nTW9kZSA9IFdlYkNvcmU6OlRoaXJkUGFydHlDb29raWVCbG9ja2luZ01vZGU6OkFs
bDsKICAgICBXZWJDb3JlOjpTYW1lU2l0ZVN0cmljdEVuZm9yY2VtZW50RW5hYmxlZCBzYW1lU2l0
ZVN0cmljdEVuZm9yY2VtZW50RW5hYmxlZCA9IFdlYkNvcmU6OlNhbWVTaXRlU3RyaWN0RW5mb3Jj
ZW1lbnRFbmFibGVkOjpObzsKKyAgICBXZWJDb3JlOjpDTkFNRUNsb2FraW5nTWl0aWdhdGlvbkVu
YWJsZWQgY25hbWVDbG9ha2luZ01pdGlnYXRpb25FbmFibGVkID0gV2ViQ29yZTo6Q05BTUVDbG9h
a2luZ01pdGlnYXRpb25FbmFibGVkOjpObzsKICNlbmRpZgogICAgIFdlYkNvcmU6OkZpcnN0UGFy
dHlXZWJzaXRlRGF0YVJlbW92YWxNb2RlIGZpcnN0UGFydHlXZWJzaXRlRGF0YVJlbW92YWxNb2Rl
ID0gV2ViQ29yZTo6Rmlyc3RQYXJ0eVdlYnNpdGVEYXRhUmVtb3ZhbE1vZGU6OkFsbEJ1dENvb2tp
ZXM7CiAgICAgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4gc3RhbmRhbG9uZUFwcGxpY2F0aW9u
RG9tYWluOwpAQCAtNjM0LDYgKzYzNSw3IEBAIE5ldHdvcmtQcm9jZXNzUHJveHkmIFdlYlByb2Nl
c3NQb29sOjplbnN1cmVOZXR3b3JrUHJvY2VzcyhXZWJzaXRlRGF0YVN0b3JlKiB3aXRoCiAjaWYg
RU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKICAgICAgICAgICAgIHRoaXJkUGFydHlD
b29raWVCbG9ja2luZ01vZGUgPSBuZXR3b3JrU2Vzc2lvblBhcmFtZXRlcnMucmVzb3VyY2VMb2Fk
U3RhdGlzdGljc1BhcmFtZXRlcnMudGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9kZTsKICAgICAg
ICAgICAgIHNhbWVTaXRlU3RyaWN0RW5mb3JjZW1lbnRFbmFibGVkID0gbmV0d29ya1Nlc3Npb25Q
YXJhbWV0ZXJzLnJlc291cmNlTG9hZFN0YXRpc3RpY3NQYXJhbWV0ZXJzLnNhbWVTaXRlU3RyaWN0
RW5mb3JjZW1lbnRFbmFibGVkOworICAgICAgICAgICAgY25hbWVDbG9ha2luZ01pdGlnYXRpb25F
bmFibGVkID0gbmV0d29ya1Nlc3Npb25QYXJhbWV0ZXJzLnJlc291cmNlTG9hZFN0YXRpc3RpY3NQ
YXJhbWV0ZXJzLmNuYW1lQ2xvYWtpbmdNaXRpZ2F0aW9uRW5hYmxlZDsKICNlbmRpZgogICAgICAg
ICAgICAgZmlyc3RQYXJ0eVdlYnNpdGVEYXRhUmVtb3ZhbE1vZGUgPSBuZXR3b3JrU2Vzc2lvblBh
cmFtZXRlcnMucmVzb3VyY2VMb2FkU3RhdGlzdGljc1BhcmFtZXRlcnMuZmlyc3RQYXJ0eVdlYnNp
dGVEYXRhUmVtb3ZhbE1vZGU7CiAgICAgICAgICAgICBzdGFuZGFsb25lQXBwbGljYXRpb25Eb21h
aW4gPSBuZXR3b3JrU2Vzc2lvblBhcmFtZXRlcnMucmVzb3VyY2VMb2FkU3RhdGlzdGljc1BhcmFt
ZXRlcnMuc3RhbmRhbG9uZUFwcGxpY2F0aW9uRG9tYWluOwpAQCAtNjYxLDYgKzY2Myw3IEBAIE5l
dHdvcmtQcm9jZXNzUHJveHkmIFdlYlByb2Nlc3NQb29sOjplbnN1cmVOZXR3b3JrUHJvY2VzcyhX
ZWJzaXRlRGF0YVN0b3JlKiB3aXRoCiAjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElD
UykKICAgICAgICAgICAgIHRoaXJkUGFydHlDb29raWVCbG9ja2luZ01vZGUgPSBuZXR3b3JrU2Vz
c2lvblBhcmFtZXRlcnMucmVzb3VyY2VMb2FkU3RhdGlzdGljc1BhcmFtZXRlcnMudGhpcmRQYXJ0
eUNvb2tpZUJsb2NraW5nTW9kZTsKICAgICAgICAgICAgIHNhbWVTaXRlU3RyaWN0RW5mb3JjZW1l
bnRFbmFibGVkID0gbmV0d29ya1Nlc3Npb25QYXJhbWV0ZXJzLnJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NQYXJhbWV0ZXJzLnNhbWVTaXRlU3RyaWN0RW5mb3JjZW1lbnRFbmFibGVkOworICAgICAgICAg
ICAgY25hbWVDbG9ha2luZ01pdGlnYXRpb25FbmFibGVkID0gbmV0d29ya1Nlc3Npb25QYXJhbWV0
ZXJzLnJlc291cmNlTG9hZFN0YXRpc3RpY3NQYXJhbWV0ZXJzLmNuYW1lQ2xvYWtpbmdNaXRpZ2F0
aW9uRW5hYmxlZDsKICNlbmRpZgogICAgICAgICAgICAgZmlyc3RQYXJ0eVdlYnNpdGVEYXRhUmVt
b3ZhbE1vZGUgPSBuZXR3b3JrU2Vzc2lvblBhcmFtZXRlcnMucmVzb3VyY2VMb2FkU3RhdGlzdGlj
c1BhcmFtZXRlcnMuZmlyc3RQYXJ0eVdlYnNpdGVEYXRhUmVtb3ZhbE1vZGU7CiAgICAgICAgICAg
ICBzdGFuZGFsb25lQXBwbGljYXRpb25Eb21haW4gPSBuZXR3b3JrU2Vzc2lvblBhcmFtZXRlcnMu
cmVzb3VyY2VMb2FkU3RhdGlzdGljc1BhcmFtZXRlcnMuc3RhbmRhbG9uZUFwcGxpY2F0aW9uRG9t
YWluOwpAQCAtNzA0LDYgKzcwNyw3IEBAIE5ldHdvcmtQcm9jZXNzUHJveHkmIFdlYlByb2Nlc3NQ
b29sOjplbnN1cmVOZXR3b3JrUHJvY2VzcyhXZWJzaXRlRGF0YVN0b3JlKiB3aXRoCiAjaWYgRU5B
QkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKICAgICAgICAgdGhpcmRQYXJ0eUNvb2tpZUJs
b2NraW5nTW9kZSwKICAgICAgICAgc2FtZVNpdGVTdHJpY3RFbmZvcmNlbWVudEVuYWJsZWQsCisg
ICAgICAgIGNuYW1lQ2xvYWtpbmdNaXRpZ2F0aW9uRW5hYmxlZCwKICNlbmRpZgogICAgICAgICBm
aXJzdFBhcnR5V2Vic2l0ZURhdGFSZW1vdmFsTW9kZSwKICAgICAgICAgc3RhbmRhbG9uZUFwcGxp
Y2F0aW9uRG9tYWluLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0
ZURhdGEvQ29jb2EvV2Vic2l0ZURhdGFTdG9yZUNvY29hLm1tIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2Vic2l0ZURhdGEvQ29jb2EvV2Vic2l0ZURhdGFTdG9yZUNvY29hLm1tCmluZGV4IGZi
M2IyMWZkOTM2MjhhMzRhZTNkNGRlY2ZkNGU3OTdjZjY1MzFmNjUuLjI1N2ZiN2EyOTAxYWNlZmU0
Y2RhZDMwYmUyNGEwYjYwMDkzMTYzYzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYnNpdGVEYXRhL0NvY29hL1dlYnNpdGVEYXRhU3RvcmVDb2NvYS5tbQorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9Db2NvYS9XZWJzaXRlRGF0YVN0b3JlQ29j
b2EubW0KQEAgLTk0LDYgKzk0LDcgQEAgdm9pZCBXZWJzaXRlRGF0YVN0b3JlOjpwbGF0Zm9ybVNl
dE5ldHdvcmtQYXJhbWV0ZXJzKFdlYnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJzJgogICAgIGJvb2wg
c2hvdWxkTG9nQ29va2llSW5mb3JtYXRpb24gPSBmYWxzZTsKICAgICBib29sIGVuYWJsZVJlc291
cmNlTG9hZFN0YXRpc3RpY3NEZWJ1Z01vZGUgPSBmYWxzZTsKICAgICBhdXRvIHNhbWVTaXRlU3Ry
aWN0RW5mb3JjZW1lbnRFbmFibGVkID0gV2ViQ29yZTo6U2FtZVNpdGVTdHJpY3RFbmZvcmNlbWVu
dEVuYWJsZWQ6Ok5vOworICAgIGF1dG8gY25hbWVDbG9ha2luZ01pdGlnYXRpb25FbmFibGVkID0g
V2ViQ29yZTo6Q05BTUVDbG9ha2luZ01pdGlnYXRpb25FbmFibGVkOjpObzsKICAgICBhdXRvIGZp
cnN0UGFydHlXZWJzaXRlRGF0YVJlbW92YWxNb2RlID0gV2ViQ29yZTo6Rmlyc3RQYXJ0eVdlYnNp
dGVEYXRhUmVtb3ZhbE1vZGU6OkFsbEJ1dENvb2tpZXM7CiAgICAgV2ViQ29yZTo6UmVnaXN0cmFi
bGVEb21haW4gcmVzb3VyY2VMb2FkU3RhdGlzdGljc01hbnVhbFByZXZhbGVudFJlc291cmNlIHsg
fTsKICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQpAQCAtMTAyLDYgKzEwMyw5
IEBAIHZvaWQgV2Vic2l0ZURhdGFTdG9yZTo6cGxhdGZvcm1TZXROZXR3b3JrUGFyYW1ldGVycyhX
ZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVycyYKICAgICBpZiAoW2RlZmF1bHRzIGJvb2xGb3JLZXk6
W05TU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCJFeHBlcmltZW50YWwlQCIsIFdlYlByZWZlcmVu
Y2VzS2V5Ojppc1NhbWVTaXRlU3RyaWN0RW5mb3JjZW1lbnRFbmFibGVkS2V5KCkuY3JlYXRlQ0ZT
dHJpbmcoKS5nZXQoKV1dKQogICAgICAgICBzYW1lU2l0ZVN0cmljdEVuZm9yY2VtZW50RW5hYmxl
ZCA9IFdlYkNvcmU6OlNhbWVTaXRlU3RyaWN0RW5mb3JjZW1lbnRFbmFibGVkOjpZZXM7CiAKKyAg
ICBpZiAoW2RlZmF1bHRzIGJvb2xGb3JLZXk6W05TU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCJF
eHBlcmltZW50YWwlQCIsIFdlYlByZWZlcmVuY2VzS2V5Ojppc0NOQU1FQ2xvYWtpbmdNaXRpZ2F0
aW9uRW5hYmxlZEtleSgpLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCldXSkKKyAgICAgICAgY25hbWVD
bG9ha2luZ01pdGlnYXRpb25FbmFibGVkID0gV2ViQ29yZTo6Q05BTUVDbG9ha2luZ01pdGlnYXRp
b25FbmFibGVkOjpZZXM7CisKICAgICBpZiAoW2RlZmF1bHRzIGJvb2xGb3JLZXk6W05TU3RyaW5n
IHN0cmluZ1dpdGhGb3JtYXQ6QCJFeHBlcmltZW50YWwlQCIsIFdlYlByZWZlcmVuY2VzS2V5Ojpp
c0ZpcnN0UGFydHlXZWJzaXRlRGF0YVJlbW92YWxEaXNhYmxlZEtleSgpLmNyZWF0ZUNGU3RyaW5n
KCkuZ2V0KCldXSkKICAgICAgICAgZmlyc3RQYXJ0eVdlYnNpdGVEYXRhUmVtb3ZhbE1vZGUgPSBX
ZWJDb3JlOjpGaXJzdFBhcnR5V2Vic2l0ZURhdGFSZW1vdmFsTW9kZTo6Tm9uZTsKICAgICBlbHNl
IHsKQEAgLTE3OCw2ICsxODIsNyBAQCB2b2lkIFdlYnNpdGVEYXRhU3RvcmU6OnBsYXRmb3JtU2V0
TmV0d29ya1BhcmFtZXRlcnMoV2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRlcnMmCiAgICAgcGFyYW1l
dGVycy5uZXR3b3JrU2Vzc2lvblBhcmFtZXRlcnMucmVzb3VyY2VMb2FkU3RhdGlzdGljc1BhcmFt
ZXRlcnMuc2hvdWxkSW5jbHVkZUxvY2FsaG9zdCA9IHNob3VsZEluY2x1ZGVMb2NhbGhvc3RJblJl
c291cmNlTG9hZFN0YXRpc3RpY3M7CiAgICAgcGFyYW1ldGVycy5uZXR3b3JrU2Vzc2lvblBhcmFt
ZXRlcnMucmVzb3VyY2VMb2FkU3RhdGlzdGljc1BhcmFtZXRlcnMuZW5hYmxlRGVidWdNb2RlID0g
ZW5hYmxlUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RlYnVnTW9kZTsKICAgICBwYXJhbWV0ZXJzLm5l
dHdvcmtTZXNzaW9uUGFyYW1ldGVycy5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGFyYW1ldGVycy5z
YW1lU2l0ZVN0cmljdEVuZm9yY2VtZW50RW5hYmxlZCA9IHNhbWVTaXRlU3RyaWN0RW5mb3JjZW1l
bnRFbmFibGVkOworICAgIHBhcmFtZXRlcnMubmV0d29ya1Nlc3Npb25QYXJhbWV0ZXJzLnJlc291
cmNlTG9hZFN0YXRpc3RpY3NQYXJhbWV0ZXJzLmNuYW1lQ2xvYWtpbmdNaXRpZ2F0aW9uRW5hYmxl
ZCA9IGNuYW1lQ2xvYWtpbmdNaXRpZ2F0aW9uRW5hYmxlZDsKICAgICBwYXJhbWV0ZXJzLm5ldHdv
cmtTZXNzaW9uUGFyYW1ldGVycy5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGFyYW1ldGVycy5maXJz
dFBhcnR5V2Vic2l0ZURhdGFSZW1vdmFsTW9kZSA9IGZpcnN0UGFydHlXZWJzaXRlRGF0YVJlbW92
YWxNb2RlOwogICAgIHBhcmFtZXRlcnMubmV0d29ya1Nlc3Npb25QYXJhbWV0ZXJzLnJlc291cmNl
TG9hZFN0YXRpc3RpY3NQYXJhbWV0ZXJzLnN0YW5kYWxvbmVBcHBsaWNhdGlvbkRvbWFpbiA9IFdl
YkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIHsgbV9jb25maWd1cmF0aW9uLT5zdGFuZGFsb25lQXBw
bGljYXRpb25VUkwoKSB9OwogICAgIHBhcmFtZXRlcnMubmV0d29ya1Nlc3Npb25QYXJhbWV0ZXJz
LnJlc291cmNlTG9hZFN0YXRpc3RpY3NQYXJhbWV0ZXJzLm1hbnVhbFByZXZhbGVudFJlc291cmNl
ID0gV1RGTW92ZShyZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFudWFsUHJldmFsZW50UmVzb3VyY2Up
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0
ZURhdGFTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJz
aXRlRGF0YVN0b3JlLmNwcAppbmRleCAxZGFhYzU0MDIwNTgxZjdhYTdmODE5YjRiNDUwMmNlNmM3
OThiODkyLi40ODg4NzIzZTBiZGE1NzgzOGMyODg3OWRjY2YyN2UxZTNiNDE0ZjIyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3Jl
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0
YVN0b3JlLmNwcApAQCAtMTkzNiw2ICsxOTM2LDMyIEBAIHZvaWQgV2Vic2l0ZURhdGFTdG9yZTo6
c2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc1RvU2FtZVNpdGVTdHJpY3RDb29raWVzRm9yVGVzdGlu
CiAgICAgICAgICAgICBuZXR3b3JrUHJvY2Vzcy0+c2V0VG9TYW1lU2l0ZVN0cmljdENvb2tpZXNG
b3JUZXN0aW5nKG1fc2Vzc2lvbklELCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiB7IHVybCB9
LCBbY2FsbGJhY2tBZ2dyZWdhdG9yXSB7IH0pOwogICAgIH0KIH0KKwordm9pZCBXZWJzaXRlRGF0
YVN0b3JlOjpzZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRmlyc3RQYXJ0eUhvc3RDTkFNRURvbWFp
bkZvclRlc3RpbmcoY29uc3QgVVJMJiBmaXJzdFBhcnR5VVJMLCBjb25zdCBVUkwmIGNuYW1lVVJM
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAg
aWYgKGNuYW1lVVJMLmhvc3QoKSAhPSAidGVzdHdlYmtpdC5vcmciICYmIGNuYW1lVVJMLmhvc3Qo
KSAhPSAiM3JkcGFydHl0ZXN0d2Via2l0Lm9yZyIpIHsKKyAgICAgICAgY29tcGxldGlvbkhhbmRs
ZXIoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGF1dG8gY2FsbGJhY2tBZ2dyZWdh
dG9yID0gQ2FsbGJhY2tBZ2dyZWdhdG9yOjpjcmVhdGUoV1RGTW92ZShjb21wbGV0aW9uSGFuZGxl
cikpOworCisgICAgZm9yIChhdXRvJiBwcm9jZXNzUG9vbCA6IHByb2Nlc3NQb29scygpKQorICAg
ICAgICBwcm9jZXNzUG9vbC0+ZW5zdXJlTmV0d29ya1Byb2Nlc3MoKS5zZXRGaXJzdFBhcnR5SG9z
dENOQU1FRG9tYWluRm9yVGVzdGluZyhtX3Nlc3Npb25JRCwgZmlyc3RQYXJ0eVVSTC5ob3N0KCku
dG9TdHJpbmcoKSwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4geyBjbmFtZVVSTCB9LCBbY2Fs
bGJhY2tBZ2dyZWdhdG9yXSB7IH0pOworfQorCit2b2lkIFdlYnNpdGVEYXRhU3RvcmU6OnNldFJl
c291cmNlTG9hZFN0YXRpc3RpY3NUaGlyZFBhcnR5Q05BTUVEb21haW5Gb3JUZXN0aW5nKGNvbnN0
IFVSTCYgY25hbWVVUkwsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFu
ZGxlcikKK3sKKyAgICBpZiAoY25hbWVVUkwuaG9zdCgpICE9ICJ0ZXN0d2Via2l0Lm9yZyIgJiYg
Y25hbWVVUkwuaG9zdCgpICE9ICIzcmRwYXJ0eXRlc3R3ZWJraXQub3JnIikgeworICAgICAgICBj
b21wbGV0aW9uSGFuZGxlcigpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgYXV0byBj
YWxsYmFja0FnZ3JlZ2F0b3IgPSBDYWxsYmFja0FnZ3JlZ2F0b3I6OmNyZWF0ZShXVEZNb3ZlKGNv
bXBsZXRpb25IYW5kbGVyKSk7CisKKyAgICBmb3IgKGF1dG8mIHByb2Nlc3NQb29sIDogcHJvY2Vz
c1Bvb2xzKCkpCisgICAgICAgIHByb2Nlc3NQb29sLT5lbnN1cmVOZXR3b3JrUHJvY2VzcygpLnNl
dFRoaXJkUGFydHlDTkFNRURvbWFpbkZvclRlc3RpbmcobV9zZXNzaW9uSUQsIFdlYkNvcmU6OlJl
Z2lzdHJhYmxlRG9tYWluIHsgY25hbWVVUkwgfSwgW2NhbGxiYWNrQWdncmVnYXRvcl0geyB9KTsK
K30KICNlbmRpZiAvLyBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQogCiB2b2lkIFdl
YnNpdGVEYXRhU3RvcmU6OnNldENhY2hlTWF4QWdlQ2FwRm9yUHJldmFsZW50UmVzb3VyY2VzKFNl
Y29uZHMgc2Vjb25kcywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5k
bGVyKQpAQCAtMjI4Myw2ICsyMzA5LDcgQEAgV2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRlcnMgV2Vi
c2l0ZURhdGFTdG9yZTo6cGFyYW1ldGVycygpCiAjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RB
VElTVElDUykKICAgICAgICAgdGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9kZSgpLAogICAgICAg
ICBXZWJDb3JlOjpTYW1lU2l0ZVN0cmljdEVuZm9yY2VtZW50RW5hYmxlZDo6Tm8sCisgICAgICAg
IFdlYkNvcmU6OkNOQU1FQ2xvYWtpbmdNaXRpZ2F0aW9uRW5hYmxlZDo6Tm8sCiAjZW5kaWYKICAg
ICAgICAgZmlyc3RQYXJ0eVdlYnNpdGVEYXRhUmVtb3ZhbE1vZGUsCiAgICAgICAgIFdURk1vdmUo
c3RhbmRhbG9uZUFwcGxpY2F0aW9uRG9tYWluKSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuaCBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuaAppbmRleCAwYTdmODNkMmI3
ZGM2MzUzOGM4NTc4ODAwZTYxN2FmZmM1ZDNmMTlkLi40ZWMxM2UxNmZlNDgyZDI2YTJlYWZhMzEy
M2UzMjMzYTczN2NiMTJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJz
aXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5oCkBAIC0yMDMsNiArMjAzLDggQEAgcHVibGlj
OgogICAgIHZvaWQgc2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc1Nob3VsZEVuYmxlU2FtZVNpdGVT
dHJpY3RFbmZvcmNlbWVudEZvclRlc3RpbmcoYm9vbCBlbmFibGVkLCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKCk+JiYpOwogICAgIHZvaWQgc2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0ZpcnN0UGFy
dHlXZWJzaXRlRGF0YVJlbW92YWxNb2RlRm9yVGVzdGluZyhib29sIGVuYWJsZWQsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAgdm9pZCBzZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
VG9TYW1lU2l0ZVN0cmljdENvb2tpZXNGb3JUZXN0aW5nKGNvbnN0IFVSTCYsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoKT4mJik7CisgICAgdm9pZCBzZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRmly
c3RQYXJ0eUhvc3RDTkFNRURvbWFpbkZvclRlc3RpbmcoY29uc3QgVVJMJiBmaXJzdFBhcnR5VVJM
LCBjb25zdCBVUkwmIGNuYW1lVVJMLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOworICAg
IHZvaWQgc2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc1RoaXJkUGFydHlDTkFNRURvbWFpbkZvclRl
c3RpbmcoY29uc3QgVVJMJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKICAgICBXZWJD
b3JlOjpUaGlyZFBhcnR5Q29va2llQmxvY2tpbmdNb2RlIHRoaXJkUGFydHlDb29raWVCbG9ja2lu
Z01vZGUoKSBjb25zdDsKICAgICBib29sIGlzSXRwU3RhdGVFeHBsaWNpdGx5U2V0KCkgY29uc3Qg
eyByZXR1cm4gbV9pc0l0cFN0YXRlRXhwbGljaXRseVNldDsgfQogICAgIHZvaWQgdXNlRXhwbGlj
aXRJVFBTdGF0ZSgpIHsgbV9pc0l0cFN0YXRlRXhwbGljaXRseVNldCA9IHRydWU7IH0KZGlmZiAt
LWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCAzZjliY2MzYjdj
MmNlOWVjMjJjNTYxNTI0MjIxNjdlMGFmZmNmMmU2Li5hZWI1NzM0ODlkMGQxNzc0MjQ3MzNkYzBl
N2RmMTk1Mzc0NzViYWM4IDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMzUgQEAKKzIwMjAtMDgtMDYgIEpvaG4gV2lsYW5kZXIgIDx3
aWxhbmRlckBhcHBsZS5jb20+CisKKyAgICAgICAgRXhwZXJpbWVudGFsOiBDYXAgdGhlIGV4cGly
eSBvZiBwZXJzaXN0ZW50IGNvb2tpZXMgc2V0IGluIDNyZC1wYXJ0eSBDTkFNRSBjbG9ha2VkIEhU
VFAgcmVzcG9uc2VzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0yMTUyMDEKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzU3NDU0NjMzPgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgcGF0Y2ggYWRkcyB0
d28gVGVzdFJ1bm5lciBmdW5jdGlvbnMgd2hpY2ggYWxsb3dzIGZvciB0ZXN0aW5nCisgICAgICAg
IHdpdGggZGF0YSB0aGF0IHdvdWxkIG90aGVyd2lzZSBjb21lIGZyb20gRE5TIHJlc29sdXRpb246
CisgICAgICAgIC0gc3RhdGlzdGljc1NldEZpcnN0UGFydHlIb3N0Q05BTUVEb21haW4oKQorICAg
ICAgICAtIHN0YXRpc3RpY3NTZXRUaGlyZFBhcnR5Q05BTUVEb21haW4oKQorCisgICAgICAgICog
V2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9CaW5kaW5ncy9UZXN0UnVubmVyLmlkbDoK
KyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxl
LmNwcDoKKyAgICAgICAgKFdUUjo6SW5qZWN0ZWRCdW5kbGU6OmRpZFJlY2VpdmVNZXNzYWdlVG9Q
YWdlKToKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5u
ZXIuY3BwOgorICAgICAgICAoV1RSOjpUZXN0UnVubmVyOjpzdGF0aXN0aWNzU2V0Rmlyc3RQYXJ0
eUhvc3RDTkFNRURvbWFpbik6CisgICAgICAgIChXVFI6OlRlc3RSdW5uZXI6OnN0YXRpc3RpY3ND
YWxsRGlkU2V0Rmlyc3RQYXJ0eUhvc3RDTkFNRURvbWFpbkNhbGxiYWNrKToKKyAgICAgICAgKFdU
Ujo6VGVzdFJ1bm5lcjo6c3RhdGlzdGljc1NldFRoaXJkUGFydHlDTkFNRURvbWFpbik6CisgICAg
ICAgIChXVFI6OlRlc3RSdW5uZXI6OnN0YXRpc3RpY3NDYWxsRGlkU2V0VGhpcmRQYXJ0eUNOQU1F
RG9tYWluQ2FsbGJhY2spOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5k
bGUvVGVzdFJ1bm5lci5oOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xs
ZXIuY3BwOgorICAgICAgICAoV1RSOjpUZXN0Q29udHJvbGxlcjo6c2V0U3RhdGlzdGljc0ZpcnN0
UGFydHlIb3N0Q05BTUVEb21haW4pOgorICAgICAgICAoV1RSOjpUZXN0Q29udHJvbGxlcjo6c2V0
U3RhdGlzdGljc1RoaXJkUGFydHlDTkFNRURvbWFpbik6CisgICAgICAgICogV2ViS2l0VGVzdFJ1
bm5lci9UZXN0Q29udHJvbGxlci5oOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvVGVzdElu
dm9jYXRpb24uY3BwOgorICAgICAgICAoV1RSOjpUZXN0SW52b2NhdGlvbjo6ZGlkUmVjZWl2ZU1l
c3NhZ2VGcm9tSW5qZWN0ZWRCdW5kbGUpOgorICAgICAgICAoV1RSOjpUZXN0SW52b2NhdGlvbjo6
ZGlkU2V0Rmlyc3RQYXJ0eUhvc3RDTkFNRURvbWFpbik6CisgICAgICAgIChXVFI6OlRlc3RJbnZv
Y2F0aW9uOjpkaWRTZXRUaGlyZFBhcnR5Q05BTUVEb21haW4pOgorICAgICAgICAqIFdlYktpdFRl
c3RSdW5uZXIvVGVzdEludm9jYXRpb24uaDoKKwogMjAyMC0wOC0wNSAgSm9uYXRoYW4gQmVkYXJk
ICA8amJlZGFyZEBhcHBsZS5jb20+CiAKICAgICAgICAgcmVzdWx0cy53ZWJraXQub3JnOiBSZXR1
cm4gd29ya2VyIHN0YXR1cyB0byBjYWxsZXIKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RS
dW5uZXIvSW5qZWN0ZWRCdW5kbGUvQmluZGluZ3MvVGVzdFJ1bm5lci5pZGwgYi9Ub29scy9XZWJL
aXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0JpbmRpbmdzL1Rlc3RSdW5uZXIuaWRsCmluZGV4
IDZiODk4MGY0OTI4MmI1NzNlMTNmMDQ1Y2ZlMGQ1NmJjNjQ0N2FmYmEuLmRjNjNjNWRkOGJiNGQ4
NmJlM2Y2MjcxYWRhMjg4Zjg3ZmQ0MjBhMTkgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RS
dW5uZXIvSW5qZWN0ZWRCdW5kbGUvQmluZGluZ3MvVGVzdFJ1bm5lci5pZGwKKysrIGIvVG9vbHMv
V2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9CaW5kaW5ncy9UZXN0UnVubmVyLmlkbApA
QCAtMzQ3LDYgKzM0Nyw4IEBAIGludGVyZmFjZSBUZXN0UnVubmVyIHsKICAgICB2b2lkIHNldFN0
YXRpc3RpY3NTaG91bGRCbG9ja1RoaXJkUGFydHlDb29raWVzKGJvb2xlYW4gdmFsdWUsIG9iamVj
dCBjYWxsYmFjaywgb3B0aW9uYWwgYm9vbGVhbiBvbmx5T25TaXRlc1dpdGhvdXRVc2VySW50ZXJh
Y3Rpb24pOwogICAgIHZvaWQgc2V0U3RhdGlzdGljc0ZpcnN0UGFydHlXZWJzaXRlRGF0YVJlbW92
YWxNb2RlKGJvb2xlYW4gdmFsdWUsIG9iamVjdCBjYWxsYmFjayk7CiAgICAgdm9pZCBzdGF0aXN0
aWNzU2V0VG9TYW1lU2l0ZVN0cmljdENvb2tpZXMoRE9NU3RyaW5nIGhvc3ROYW1lLCBvYmplY3Qg
Y2FsbGJhY2spOworICAgIHZvaWQgc3RhdGlzdGljc1NldEZpcnN0UGFydHlIb3N0Q05BTUVEb21h
aW4oRE9NU3RyaW5nIGZpcnN0UGFydHlVUkxTdHJpbmcsIERPTVN0cmluZyBjbmFtZVVSTFN0cmlu
Zywgb2JqZWN0IGNhbGxiYWNrKTsKKyAgICB2b2lkIHN0YXRpc3RpY3NTZXRUaGlyZFBhcnR5Q05B
TUVEb21haW4oRE9NU3RyaW5nIGNuYW1lVVJMU3RyaW5nLCBvYmplY3QgY2FsbGJhY2spOwogICAg
IHZvaWQgbG9hZGVkVGhpcmRQYXJ0eURvbWFpbnMob2JqZWN0IGNhbGxiYWNrKTsKIAogICAgIC8v
IEluamVjdGVkIGJ1bmRsZSBmb3JtIGNsaWVudC4KZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRl
c3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuY3BwIGIvVG9vbHMvV2ViS2l0
VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5jcHAKaW5kZXggZTI1NGNh
NzJkYmNmMzEwMjc0MWZjZjE3YzE1MjU1NDI2ZDBmNWYwZS4uYWY3NDNiNjNlOGZmMGE0NjZmZDRh
ODlhZTA4NTM2YmZjMGQ4YWI1MSAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9J
bmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5jcHAKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1
bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5jcHAKQEAgLTM1OSw2ICszNTksMTYg
QEAgdm9pZCBJbmplY3RlZEJ1bmRsZTo6ZGlkUmVjZWl2ZU1lc3NhZ2VUb1BhZ2UoV0tCdW5kbGVQ
YWdlUmVmIHBhZ2UsIFdLU3RyaW5nUmVmIG0KICAgICAgICAgcmV0dXJuOwogICAgIH0KIAorICAg
IGlmIChXS1N0cmluZ0lzRXF1YWxUb1VURjhDU3RyaW5nKG1lc3NhZ2VOYW1lLCAiQ2FsbERpZFNl
dEZpcnN0UGFydHlIb3N0Q05BTUVEb21haW4iKSkgeworICAgICAgICBtX3Rlc3RSdW5uZXItPnN0
YXRpc3RpY3NDYWxsRGlkU2V0Rmlyc3RQYXJ0eUhvc3RDTkFNRURvbWFpbkNhbGxiYWNrKCk7Cisg
ICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpZiAoV0tTdHJpbmdJc0VxdWFsVG9VVEY4Q1N0
cmluZyhtZXNzYWdlTmFtZSwgIkNhbGxEaWRTZXRUaGlyZFBhcnR5Q05BTUVEb21haW4iKSkgewor
ICAgICAgICBtX3Rlc3RSdW5uZXItPnN0YXRpc3RpY3NDYWxsRGlkU2V0VGhpcmRQYXJ0eUNOQU1F
RG9tYWluQ2FsbGJhY2soKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKwogICAgIGlmIChXS1N0
cmluZ0lzRXF1YWxUb1VURjhDU3RyaW5nKG1lc3NhZ2VOYW1lLCAiQ2FsbERpZFJlc2V0U3RhdGlz
dGljc1RvQ29uc2lzdGVudFN0YXRlIikpIHsKICAgICAgICAgbV90ZXN0UnVubmVyLT5zdGF0aXN0
aWNzQ2FsbERpZFJlc2V0VG9Db25zaXN0ZW50U3RhdGVDYWxsYmFjaygpOwogICAgICAgICByZXR1
cm47CmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rl
c3RSdW5uZXIuY3BwIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0
UnVubmVyLmNwcAppbmRleCBkNDM4NmU2ZjlmMzUwZWUwMTk4NmI5MjAxYjkwM2I4MDQwMjY2NGE3
Li4yOTY3MmY5ZTE1NTljYTJkZTBjNjg5YTQ2YzNlYTJjNTYwMWI2MGU4IDEwMDY0NAotLS0gYS9U
b29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuY3BwCisrKyBi
L1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5jcHAKQEAg
LTc1OCw2ICs3NTgsOCBAQCBlbnVtIHsKICAgICBTdGF0aXN0aWNzRGlkU2V0U2hvdWxkQmxvY2tU
aGlyZFBhcnR5Q29va2llc0NhbGxiYWNrSUQsCiAgICAgU3RhdGlzdGljc0RpZFNldEZpcnN0UGFy
dHlXZWJzaXRlRGF0YVJlbW92YWxNb2RlQ2FsbGJhY2tJRCwKICAgICBTdGF0aXN0aWNzRGlkU2V0
VG9TYW1lU2l0ZVN0cmljdENvb2tpZXNDYWxsYmFja0lELAorICAgIFN0YXRpc3RpY3NEaWRTZXRG
aXJzdFBhcnR5SG9zdENOQU1FRG9tYWluQ2FsbGJhY2tJRCwKKyAgICBTdGF0aXN0aWNzRGlkU2V0
VGhpcmRQYXJ0eUNOQU1FRG9tYWluQ2FsbGJhY2tJRCwKICAgICBBbGxTdG9yYWdlQWNjZXNzRW50
cmllc0NhbGxiYWNrSUQsCiAgICAgTG9hZGVkVGhpcmRQYXJ0eURvbWFpbnNDYWxsYmFja0lELAog
ICAgIERpZFJlbW92ZUFsbFNlc3Npb25DcmVkZW50aWFsc0NhbGxiYWNrSUQsCkBAIC0yMzY0LDYg
KzIzNjYsNTIgQEAgdm9pZCBUZXN0UnVubmVyOjpzdGF0aXN0aWNzQ2FsbERpZFNldFRvU2FtZVNp
dGVTdHJpY3RDb29raWVzQ2FsbGJhY2soKQogICAgIGNhbGxUZXN0UnVubmVyQ2FsbGJhY2soU3Rh
dGlzdGljc0RpZFNldFRvU2FtZVNpdGVTdHJpY3RDb29raWVzQ2FsbGJhY2tJRCk7CiB9CiAKKwor
dm9pZCBUZXN0UnVubmVyOjpzdGF0aXN0aWNzU2V0Rmlyc3RQYXJ0eUhvc3RDTkFNRURvbWFpbihK
U1N0cmluZ1JlZiBmaXJzdFBhcnR5VVJMU3RyaW5nLCBKU1N0cmluZ1JlZiBjbmFtZVVSTFN0cmlu
ZywgSlNWYWx1ZVJlZiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBjYWNoZVRlc3RSdW5uZXJD
YWxsYmFjayhTdGF0aXN0aWNzRGlkU2V0Rmlyc3RQYXJ0eUhvc3RDTkFNRURvbWFpbkNhbGxiYWNr
SUQsIGNvbXBsZXRpb25IYW5kbGVyKTsKKworICAgIFZlY3RvcjxXS1JldGFpblB0cjxXS1N0cmlu
Z1JlZj4+IGtleXM7CisgICAgVmVjdG9yPFdLUmV0YWluUHRyPFdLVHlwZVJlZj4+IHZhbHVlczsK
KyAgICAKKyAgICBrZXlzLmFwcGVuZChhZG9wdFdLKFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3Ry
aW5nKCJGaXJzdFBhcnR5VVJMIikpKTsKKyAgICB2YWx1ZXMuYXBwZW5kKGFkb3B0V0soV0tTdHJp
bmdDcmVhdGVXaXRoSlNTdHJpbmcoZmlyc3RQYXJ0eVVSTFN0cmluZykpKTsKKyAgICAKKyAgICBr
ZXlzLmFwcGVuZChhZG9wdFdLKFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJDTkFNRSIp
KSk7CisgICAgdmFsdWVzLmFwcGVuZChhZG9wdFdLKFdLU3RyaW5nQ3JlYXRlV2l0aEpTU3RyaW5n
KGNuYW1lVVJMU3RyaW5nKSkpOworICAgIAorICAgIFZlY3RvcjxXS1N0cmluZ1JlZj4gcmF3S2V5
cyhrZXlzLnNpemUoKSk7CisgICAgVmVjdG9yPFdLVHlwZVJlZj4gcmF3VmFsdWVzKHZhbHVlcy5z
aXplKCkpOworICAgIAorICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwga2V5cy5zaXplKCk7ICsr
aSkgeworICAgICAgICByYXdLZXlzW2ldID0ga2V5c1tpXS5nZXQoKTsKKyAgICAgICAgcmF3VmFs
dWVzW2ldID0gdmFsdWVzW2ldLmdldCgpOworICAgIH0KKworICAgIGF1dG8gbWVzc2FnZU5hbWUg
PSBhZG9wdFdLKFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJTdGF0aXN0aWNzU2V0Rmly
c3RQYXJ0eUhvc3RDTkFNRURvbWFpbiIpKTsKKyAgICBhdXRvIG1lc3NhZ2VCb2R5ID0gYWRvcHRX
SyhXS0RpY3Rpb25hcnlDcmVhdGUocmF3S2V5cy5kYXRhKCksIHJhd1ZhbHVlcy5kYXRhKCksIHJh
d0tleXMuc2l6ZSgpKSk7CisgICAgV0tCdW5kbGVQb3N0TWVzc2FnZShJbmplY3RlZEJ1bmRsZTo6
c2luZ2xldG9uKCkuYnVuZGxlKCksIG1lc3NhZ2VOYW1lLmdldCgpLCBtZXNzYWdlQm9keS5nZXQo
KSk7Cit9CisKK3ZvaWQgVGVzdFJ1bm5lcjo6c3RhdGlzdGljc0NhbGxEaWRTZXRGaXJzdFBhcnR5
SG9zdENOQU1FRG9tYWluQ2FsbGJhY2soKQoreworICAgIGNhbGxUZXN0UnVubmVyQ2FsbGJhY2so
U3RhdGlzdGljc0RpZFNldEZpcnN0UGFydHlIb3N0Q05BTUVEb21haW5DYWxsYmFja0lEKTsKK30K
Kwordm9pZCBUZXN0UnVubmVyOjpzdGF0aXN0aWNzU2V0VGhpcmRQYXJ0eUNOQU1FRG9tYWluKEpT
U3RyaW5nUmVmIGNuYW1lVVJMU3RyaW5nLCBKU1ZhbHVlUmVmIGNvbXBsZXRpb25IYW5kbGVyKQor
eworICAgIGNhY2hlVGVzdFJ1bm5lckNhbGxiYWNrKFN0YXRpc3RpY3NEaWRTZXRUaGlyZFBhcnR5
Q05BTUVEb21haW5DYWxsYmFja0lELCBjb21wbGV0aW9uSGFuZGxlcik7CisKKyAgICBhdXRvIG1l
c3NhZ2VOYW1lID0gYWRvcHRXSyhXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygiU3RhdGlz
dGljc1NldFRoaXJkUGFydHlDTkFNRURvbWFpbiIpKTsKKyAgICBhdXRvIG1lc3NhZ2VCb2R5ID0g
YWRvcHRXSyhXS1N0cmluZ0NyZWF0ZVdpdGhKU1N0cmluZyhjbmFtZVVSTFN0cmluZykpOworICAg
IFdLQnVuZGxlUG9zdE1lc3NhZ2UoSW5qZWN0ZWRCdW5kbGU6OnNpbmdsZXRvbigpLmJ1bmRsZSgp
LCBtZXNzYWdlTmFtZS5nZXQoKSwgbWVzc2FnZUJvZHkuZ2V0KCkpOworfQorCit2b2lkIFRlc3RS
dW5uZXI6OnN0YXRpc3RpY3NDYWxsRGlkU2V0VGhpcmRQYXJ0eUNOQU1FRG9tYWluQ2FsbGJhY2so
KQoreworICAgIGNhbGxUZXN0UnVubmVyQ2FsbGJhY2soU3RhdGlzdGljc0RpZFNldFRoaXJkUGFy
dHlDTkFNRURvbWFpbkNhbGxiYWNrSUQpOworfQorCiB2b2lkIFRlc3RSdW5uZXI6OnN0YXRpc3Rp
Y3NSZXNldFRvQ29uc2lzdGVudFN0YXRlKEpTVmFsdWVSZWYgY29tcGxldGlvbkhhbmRsZXIpCiB7
CiAgICAgY2FjaGVUZXN0UnVubmVyQ2FsbGJhY2soU3RhdGlzdGljc0RpZFJlc2V0VG9Db25zaXN0
ZW50U3RhdGVDYWxsYmFja0lELCBjb21wbGV0aW9uSGFuZGxlcik7CmRpZmYgLS1naXQgYS9Ub29s
cy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuaCBiL1Rvb2xzL1dl
YktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5oCmluZGV4IDFmZTM3OWE1
N2FiODJmZmU0MzE5ZGE0ODAwZjA0ODM5MzAwM2Y3NTEuLmFiNjVkNDBkNDIyNjgwOTM0MDkyY2Yz
ZjgyZDgxYzVlOWFiMjBkMDMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5q
ZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5oCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5q
ZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5oCkBAIC00NTMsNiArNDUzLDEwIEBAIHB1YmxpYzoKICAg
ICB2b2lkIHN0YXRpc3RpY3NDYWxsRGlkU2V0Rmlyc3RQYXJ0eVdlYnNpdGVEYXRhUmVtb3ZhbE1v
ZGVDYWxsYmFjaygpOwogICAgIHZvaWQgc3RhdGlzdGljc1NldFRvU2FtZVNpdGVTdHJpY3RDb29r
aWVzKEpTU3RyaW5nUmVmIGhvc3ROYW1lLCBKU1ZhbHVlUmVmIGNhbGxiYWNrKTsKICAgICB2b2lk
IHN0YXRpc3RpY3NDYWxsRGlkU2V0VG9TYW1lU2l0ZVN0cmljdENvb2tpZXNDYWxsYmFjaygpOwor
ICAgIHZvaWQgc3RhdGlzdGljc1NldEZpcnN0UGFydHlIb3N0Q05BTUVEb21haW4oSlNTdHJpbmdS
ZWYgZmlyc3RQYXJ0eVVSTFN0cmluZywgSlNTdHJpbmdSZWYgY25hbWVVUkxTdHJpbmcsIEpTVmFs
dWVSZWYgY29tcGxldGlvbkhhbmRsZXIpOworICAgIHZvaWQgc3RhdGlzdGljc0NhbGxEaWRTZXRG
aXJzdFBhcnR5SG9zdENOQU1FRG9tYWluQ2FsbGJhY2soKTsKKyAgICB2b2lkIHN0YXRpc3RpY3NT
ZXRUaGlyZFBhcnR5Q05BTUVEb21haW4oSlNTdHJpbmdSZWYgY25hbWVVUkxTdHJpbmcsIEpTVmFs
dWVSZWYgY29tcGxldGlvbkhhbmRsZXIpOworICAgIHZvaWQgc3RhdGlzdGljc0NhbGxEaWRTZXRU
aGlyZFBhcnR5Q05BTUVEb21haW5DYWxsYmFjaygpOwogICAgIHZvaWQgc3RhdGlzdGljc1Jlc2V0
VG9Db25zaXN0ZW50U3RhdGUoSlNWYWx1ZVJlZiBjb21wbGV0aW9uSGFuZGxlcik7CiAgICAgdm9p
ZCBzdGF0aXN0aWNzQ2FsbERpZFJlc2V0VG9Db25zaXN0ZW50U3RhdGVDYWxsYmFjaygpOwogICAg
IHZvaWQgbG9hZGVkVGhpcmRQYXJ0eURvbWFpbnMoSlNWYWx1ZVJlZiBjYWxsYmFjayk7CmRpZmYg
LS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcCBiL1Rvb2xz
L1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwCmluZGV4IGZhZmI4Y2Y2Yjk1MmUz
YzA0ODQ2M2JhNTdmNWM0Y2Y0ODExZGZlYWQuLmE0M2ZhODEzNGE3YWI3NmMzYTNiN2Y4MjA4ZGM5
MjY2NzI3NDc0NjEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRy
b2xsZXIuY3BwCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3Bw
CkBAIC0zODYyLDYgKzM4NjIsMjIgQEAgdm9pZCBUZXN0Q29udHJvbGxlcjo6c2V0U3RhdGlzdGlj
c1RvU2FtZVNpdGVTdHJpY3RDb29raWVzKFdLU3RyaW5nUmVmIGhvc3ROYW1lKQogICAgIG1fY3Vy
cmVudEludm9jYXRpb24tPmRpZFNldFRvU2FtZVNpdGVTdHJpY3RDb29raWVzKCk7CiB9CiAKK3Zv
aWQgVGVzdENvbnRyb2xsZXI6OnNldFN0YXRpc3RpY3NGaXJzdFBhcnR5SG9zdENOQU1FRG9tYWlu
KFdLU3RyaW5nUmVmIGZpcnN0UGFydHlVUkxTdHJpbmcsIFdLU3RyaW5nUmVmIGNuYW1lVVJMU3Ry
aW5nKQoreworICAgIFJlc291cmNlU3RhdGlzdGljc0NhbGxiYWNrQ29udGV4dCBjb250ZXh0KCp0
aGlzKTsKKyAgICBXS1dlYnNpdGVEYXRhU3RvcmVTZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRmly
c3RQYXJ0eUhvc3RDTkFNRURvbWFpbkZvclRlc3Rpbmcod2Vic2l0ZURhdGFTdG9yZSgpLCBmaXJz
dFBhcnR5VVJMU3RyaW5nLCBjbmFtZVVSTFN0cmluZywgJmNvbnRleHQsIHJlc291cmNlU3RhdGlz
dGljc1ZvaWRSZXN1bHRDYWxsYmFjayk7CisgICAgcnVuVW50aWwoY29udGV4dC5kb25lLCBub1Rp
bWVvdXQpOworICAgIG1fY3VycmVudEludm9jYXRpb24tPmRpZFNldEZpcnN0UGFydHlIb3N0Q05B
TUVEb21haW4oKTsKK30KKwordm9pZCBUZXN0Q29udHJvbGxlcjo6c2V0U3RhdGlzdGljc1RoaXJk
UGFydHlDTkFNRURvbWFpbihXS1N0cmluZ1JlZiBjbmFtZVVSTFN0cmluZykKK3sKKyAgICBSZXNv
dXJjZVN0YXRpc3RpY3NDYWxsYmFja0NvbnRleHQgY29udGV4dCgqdGhpcyk7CisgICAgV0tXZWJz
aXRlRGF0YVN0b3JlU2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc1RoaXJkUGFydHlDTkFNRURvbWFp
bkZvclRlc3Rpbmcod2Vic2l0ZURhdGFTdG9yZSgpLCBjbmFtZVVSTFN0cmluZywgJmNvbnRleHQs
IHJlc291cmNlU3RhdGlzdGljc1ZvaWRSZXN1bHRDYWxsYmFjayk7CisgICAgcnVuVW50aWwoY29u
dGV4dC5kb25lLCBub1RpbWVvdXQpOworICAgIG1fY3VycmVudEludm9jYXRpb24tPmRpZFNldFRo
aXJkUGFydHlDTkFNRURvbWFpbigpOworfQorCiBzdHJ1Y3QgQXBwQm91bmREb21haW5zQ2FsbGJh
Y2tDb250ZXh0IHsKICAgICBleHBsaWNpdCBBcHBCb3VuZERvbWFpbnNDYWxsYmFja0NvbnRleHQo
VGVzdENvbnRyb2xsZXImIGNvbnRyb2xsZXIpCiAgICAgICAgIDogdGVzdENvbnRyb2xsZXIoY29u
dHJvbGxlcikKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xs
ZXIuaCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuaAppbmRleCBhMTMw
ODQ5YjNkM2FlYmEyZTIxZTZhMGEzNGQ0NjI5MmUxOWQ0YTUwLi43MjRjZDAwNGMxYjQyZTgxNWZk
NTIxNTUzOTlmYWUwMjEwNmNjZjgwIDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVy
L1Rlc3RDb250cm9sbGVyLmgKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJv
bGxlci5oCkBAIC0yNjYsNiArMjY2LDggQEAgcHVibGljOgogICAgIHZvaWQgc2V0U3RhdGlzdGlj
c1Nob3VsZEJsb2NrVGhpcmRQYXJ0eUNvb2tpZXMoYm9vbCB2YWx1ZSwgYm9vbCBvbmx5T25TaXRl
c1dpdGhvdXRVc2VySW50ZXJhY3Rpb24pOwogICAgIHZvaWQgc2V0U3RhdGlzdGljc0ZpcnN0UGFy
dHlXZWJzaXRlRGF0YVJlbW92YWxNb2RlKGJvb2wgdmFsdWUpOwogICAgIHZvaWQgc2V0U3RhdGlz
dGljc1RvU2FtZVNpdGVTdHJpY3RDb29raWVzKFdLU3RyaW5nUmVmIGhvc3ROYW1lKTsKKyAgICB2
b2lkIHNldFN0YXRpc3RpY3NGaXJzdFBhcnR5SG9zdENOQU1FRG9tYWluKFdLU3RyaW5nUmVmIGZp
cnN0UGFydHlVUkxTdHJpbmcsIFdLU3RyaW5nUmVmIGNuYW1lVVJMU3RyaW5nKTsKKyAgICB2b2lk
IHNldFN0YXRpc3RpY3NUaGlyZFBhcnR5Q05BTUVEb21haW4oV0tTdHJpbmdSZWYgY25hbWVVUkxT
dHJpbmcpOwogICAgIHZvaWQgc2V0QXBwQm91bmREb21haW5zKFdLQXJyYXlSZWYgb3JpZ2luVVJM
cyk7CiAgICAgdm9pZCBzdGF0aXN0aWNzUmVzZXRUb0NvbnNpc3RlbnRTdGF0ZSgpOwogCmRpZmYg
LS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmNwcCBiL1Rvb2xz
L1dlYktpdFRlc3RSdW5uZXIvVGVzdEludm9jYXRpb24uY3BwCmluZGV4IGI3M2IwOTQ0MWYxNzRi
NTQxZWNkNjYzN2FlZjBmOTE5N2Q4ZGVmOGYuLjkyOWY4NWFmNWY4MjJmOTJkNjBkYWFhNDRmMDRj
ZDEzMzM3MWVmNTMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdEludm9j
YXRpb24uY3BwCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdEludm9jYXRpb24uY3Bw
CkBAIC05NTcsNiArOTU3LDI3IEBAIHZvaWQgVGVzdEludm9jYXRpb246OmRpZFJlY2VpdmVNZXNz
YWdlRnJvbUluamVjdGVkQnVuZGxlKFdLU3RyaW5nUmVmIG1lc3NhZ2VOYW1lCiAgICAgICAgIHJl
dHVybjsKICAgICB9CiAKKyAgICBpZiAoV0tTdHJpbmdJc0VxdWFsVG9VVEY4Q1N0cmluZyhtZXNz
YWdlTmFtZSwgIlN0YXRpc3RpY3NTZXRGaXJzdFBhcnR5SG9zdENOQU1FRG9tYWluIikpIHsKKyAg
ICAgICAgQVNTRVJUKFdLR2V0VHlwZUlEKG1lc3NhZ2VCb2R5KSA9PSBXS0RpY3Rpb25hcnlHZXRU
eXBlSUQoKSk7CisgICAgICAgIAorICAgICAgICBXS0RpY3Rpb25hcnlSZWYgbWVzc2FnZUJvZHlE
aWN0aW9uYXJ5ID0gc3RhdGljX2Nhc3Q8V0tEaWN0aW9uYXJ5UmVmPihtZXNzYWdlQm9keSk7Cisg
ICAgICAgIFdLUmV0YWluUHRyPFdLU3RyaW5nUmVmPiBmaXJzdFBhcnR5VVJMU3RyaW5nS2V5ID0g
YWRvcHRXSyhXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygiRmlyc3RQYXJ0eVVSTCIpKTsK
KyAgICAgICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+IGNuYW1lVVJMU3RyaW5nS2V5ID0gYWRv
cHRXSyhXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygiQ05BTUUiKSk7CisgICAgICAgIAor
ICAgICAgICBXS1N0cmluZ1JlZiBmaXJzdFBhcnR5VVJMU3RyaW5nID0gc3RhdGljX2Nhc3Q8V0tT
dHJpbmdSZWY+KFdLRGljdGlvbmFyeUdldEl0ZW1Gb3JLZXkobWVzc2FnZUJvZHlEaWN0aW9uYXJ5
LCBmaXJzdFBhcnR5VVJMU3RyaW5nS2V5LmdldCgpKSk7CisgICAgICAgIFdLU3RyaW5nUmVmIGNu
YW1lVVJMU3RyaW5nID0gc3RhdGljX2Nhc3Q8V0tTdHJpbmdSZWY+KFdLRGljdGlvbmFyeUdldEl0
ZW1Gb3JLZXkobWVzc2FnZUJvZHlEaWN0aW9uYXJ5LCBjbmFtZVVSTFN0cmluZ0tleS5nZXQoKSkp
OworICAgICAgICAKKyAgICAgICAgVGVzdENvbnRyb2xsZXI6OnNpbmdsZXRvbigpLnNldFN0YXRp
c3RpY3NGaXJzdFBhcnR5SG9zdENOQU1FRG9tYWluKGZpcnN0UGFydHlVUkxTdHJpbmcsIGNuYW1l
VVJMU3RyaW5nKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlmIChXS1N0cmluZ0lz
RXF1YWxUb1VURjhDU3RyaW5nKG1lc3NhZ2VOYW1lLCAiU3RhdGlzdGljc1NldFRoaXJkUGFydHlD
TkFNRURvbWFpbiIpKSB7CisgICAgICAgIEFTU0VSVChXS0dldFR5cGVJRChtZXNzYWdlQm9keSkg
PT0gV0tTdHJpbmdHZXRUeXBlSUQoKSk7CisgICAgICAgIFdLU3RyaW5nUmVmIGNuYW1lVVJMU3Ry
aW5nID0gc3RhdGljX2Nhc3Q8V0tTdHJpbmdSZWY+KG1lc3NhZ2VCb2R5KTsKKyAgICAgICAgVGVz
dENvbnRyb2xsZXI6OnNpbmdsZXRvbigpLnNldFN0YXRpc3RpY3NUaGlyZFBhcnR5Q05BTUVEb21h
aW4oY25hbWVVUkxTdHJpbmcpOworICAgICAgICByZXR1cm47CisgICAgfQorCiAgICAgaWYgKFdL
U3RyaW5nSXNFcXVhbFRvVVRGOENTdHJpbmcobWVzc2FnZU5hbWUsICJTdGF0aXN0aWNzUmVzZXRU
b0NvbnNpc3RlbnRTdGF0ZSIpKSB7CiAgICAgICAgIGlmIChtX3Nob3VsZER1bXBSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzKQogICAgICAgICAgICAgbV9zYXZlZFJlc291cmNlTG9hZFN0YXRpc3RpY3Mg
PSBUZXN0Q29udHJvbGxlcjo6c2luZ2xldG9uKCkuZHVtcFJlc291cmNlTG9hZFN0YXRpc3RpY3Mo
KTsKQEAgLTE5NDYsNiArMTk2NywxOCBAQCB2b2lkIFRlc3RJbnZvY2F0aW9uOjpkaWRTZXRUb1Nh
bWVTaXRlU3RyaWN0Q29va2llcygpCiAgICAgV0tQYWdlUG9zdE1lc3NhZ2VUb0luamVjdGVkQnVu
ZGxlKFRlc3RDb250cm9sbGVyOjpzaW5nbGV0b24oKS5tYWluV2ViVmlldygpLT5wYWdlKCksIG1l
c3NhZ2VOYW1lLmdldCgpLCBudWxscHRyKTsKIH0KIAordm9pZCBUZXN0SW52b2NhdGlvbjo6ZGlk
U2V0Rmlyc3RQYXJ0eUhvc3RDTkFNRURvbWFpbigpCit7CisgICAgV0tSZXRhaW5QdHI8V0tTdHJp
bmdSZWY+IG1lc3NhZ2VOYW1lID0gYWRvcHRXSyhXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmlu
ZygiQ2FsbERpZFNldEZpcnN0UGFydHlIb3N0Q05BTUVEb21haW4iKSk7CisgICAgV0tQYWdlUG9z
dE1lc3NhZ2VUb0luamVjdGVkQnVuZGxlKFRlc3RDb250cm9sbGVyOjpzaW5nbGV0b24oKS5tYWlu
V2ViVmlldygpLT5wYWdlKCksIG1lc3NhZ2VOYW1lLmdldCgpLCBudWxscHRyKTsKK30KKwordm9p
ZCBUZXN0SW52b2NhdGlvbjo6ZGlkU2V0VGhpcmRQYXJ0eUNOQU1FRG9tYWluKCkKK3sKKyAgICBX
S1JldGFpblB0cjxXS1N0cmluZ1JlZj4gbWVzc2FnZU5hbWUgPSBhZG9wdFdLKFdLU3RyaW5nQ3Jl
YXRlV2l0aFVURjhDU3RyaW5nKCJDYWxsRGlkU2V0VGhpcmRQYXJ0eUNOQU1FRG9tYWluIikpOwor
ICAgIFdLUGFnZVBvc3RNZXNzYWdlVG9JbmplY3RlZEJ1bmRsZShUZXN0Q29udHJvbGxlcjo6c2lu
Z2xldG9uKCkubWFpbldlYlZpZXcoKS0+cGFnZSgpLCBtZXNzYWdlTmFtZS5nZXQoKSwgbnVsbHB0
cik7Cit9CisKIHZvaWQgVGVzdEludm9jYXRpb246OmRpZFJlc2V0U3RhdGlzdGljc1RvQ29uc2lz
dGVudFN0YXRlKCkKIHsKICAgICBXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4gbWVzc2FnZU5hbWUg
PSBhZG9wdFdLKFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJDYWxsRGlkUmVzZXRTdGF0
aXN0aWNzVG9Db25zaXN0ZW50U3RhdGUiKSk7CmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0
UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmggYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZv
Y2F0aW9uLmgKaW5kZXggNjIzMWIwYzIwNDQ0NWFkNjBjOTVkM2U4MTdmYjMwZjQ3NmY4ZTFhNS4u
ZTQ3YzVjMDQ5ZmIwMTYxOGJmMGI4OTFlOWYyYjk1ODg2YTA0YmZiNCAxMDA2NDQKLS0tIGEvVG9v
bHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlvbi5oCisrKyBiL1Rvb2xzL1dlYktpdFRl
c3RSdW5uZXIvVGVzdEludm9jYXRpb24uaApAQCAtNzcsNiArNzcsOCBAQCBwdWJsaWM6CiAgICAg
dm9pZCBkaWRTZXRTaG91bGRCbG9ja1RoaXJkUGFydHlDb29raWVzKCk7CiAgICAgdm9pZCBkaWRT
ZXRGaXJzdFBhcnR5V2Vic2l0ZURhdGFSZW1vdmFsTW9kZSgpOwogICAgIHZvaWQgZGlkU2V0VG9T
YW1lU2l0ZVN0cmljdENvb2tpZXMoKTsKKyAgICB2b2lkIGRpZFNldEZpcnN0UGFydHlIb3N0Q05B
TUVEb21haW4oKTsKKyAgICB2b2lkIGRpZFNldFRoaXJkUGFydHlDTkFNRURvbWFpbigpOwogICAg
IHZvaWQgZGlkUmVzZXRTdGF0aXN0aWNzVG9Db25zaXN0ZW50U3RhdGUoKTsKICAgICB2b2lkIGRp
ZFNldEJsb2NrQ29va2llc0Zvckhvc3QoKTsKICAgICB2b2lkIGRpZFNldFN0YXRpc3RpY3NEZWJ1
Z01vZGUoKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3Rz
L0NoYW5nZUxvZwppbmRleCBlNzUzNmQ2NWU3MWE2YjcxMGNmMTVhOWRhNjE0ZWEwN2JhNjZiMTg0
Li5iZThmNDMxNWI1YTM4MTA4Y2MwYmNlZDYyNzc4MWYwZmNjYzdkNTIwIDEwMDY0NAotLS0gYS9M
YXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMzQgQEAKKzIwMjAtMDgtMDYgIEpvaG4gV2lsYW5kZXIgIDx3aWxhbmRlckBhcHBsZS5jb20+
CisKKyAgICAgICAgRXhwZXJpbWVudGFsOiBDYXAgdGhlIGV4cGlyeSBvZiBwZXJzaXN0ZW50IGNv
b2tpZXMgc2V0IGluIDNyZC1wYXJ0eSBDTkFNRSBjbG9ha2VkIEhUVFAgcmVzcG9uc2VzCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTUyMDEKKyAgICAg
ICAgPHJkYXI6Ly9wcm9ibGVtLzU3NDU0NjMzPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgICogaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNz
L2NuYW1lLWNsb2FraW5nLXRvcC1jbmFtZS1zdWItMXAtY25hbWUtZXhwZWN0ZWQudHh0OiBBZGRl
ZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvY25hbWUtY2xv
YWtpbmctdG9wLWNuYW1lLXN1Yi0xcC1jbmFtZS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBodHRw
L3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvY25hbWUtY2xvYWtpbmctdG9wLWNuYW1lLXN1
Yi0zcC1jbmFtZS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvcmVz
b3VyY2VMb2FkU3RhdGlzdGljcy9jbmFtZS1jbG9ha2luZy10b3AtY25hbWUtc3ViLTNwLWNuYW1l
Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGlj
cy9jbmFtZS1jbG9ha2luZy10b3AtY25hbWUtc3ViLW1hdGNoaW5nLWNuYW1lLWV4cGVjdGVkLnR4
dDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL2Nu
YW1lLWNsb2FraW5nLXRvcC1jbmFtZS1zdWItbWF0Y2hpbmctY25hbWUuaHRtbDogQWRkZWQuCisg
ICAgICAgICogaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL2NuYW1lLWNsb2FraW5n
LXRvcC1jbmFtZS1zdWItbm8tY25hbWUtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBo
dHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvY25hbWUtY2xvYWtpbmctdG9wLWNuYW1l
LXN1Yi1uby1jbmFtZS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL3Jlc291cmNl
TG9hZFN0YXRpc3RpY3MvY25hbWUtY2xvYWtpbmctdG9wLW5vLWNuYW1lLXN1Yi0xcC1jbmFtZS1l
eHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3Rh
dGlzdGljcy9jbmFtZS1jbG9ha2luZy10b3Atbm8tY25hbWUtc3ViLTFwLWNuYW1lLmh0bWw6IEFk
ZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9jbmFtZS1j
bG9ha2luZy10b3Atbm8tY25hbWUtc3ViLTNwLWNuYW1lLWV4cGVjdGVkLnR4dDogQWRkZWQuCisg
ICAgICAgICogaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL2NuYW1lLWNsb2FraW5n
LXRvcC1uby1jbmFtZS1zdWItM3AtY25hbWUuaHRtbDogQWRkZWQuCisgICAgICAgICogaHR0cC90
ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL2NuYW1lLWNsb2FraW5nLXRvcC1uby1jbmFtZS1z
dWItbm8tY25hbWUtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL3Jl
c291cmNlTG9hZFN0YXRpc3RpY3MvY25hbWUtY2xvYWtpbmctdG9wLW5vLWNuYW1lLXN1Yi1uby1j
bmFtZS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9pb3MtMTMvVGVzdEV4cGVjdGF0
aW9uczoKKyAgICAgICAgICAgIE5ldyB0ZXN0cyBtYXJrZWQgYXMgWyBTa2lwIF0uCisgICAgICAg
ICogcGxhdGZvcm0vaW9zLXdrMi9UZXN0RXhwZWN0YXRpb25zOgorICAgICAgICAgICAgTmV3IHRl
c3RzIG1hcmtlZCBhcyBbIFBhc3MgXSBpbiBnZW5lcmFsLgorICAgICAgICAqIHBsYXRmb3JtL21h
Yy13azIvVGVzdEV4cGVjdGF0aW9uczoKKyAgICAgICAgICAgIE5ldyB0ZXN0cyBtYXJrZWQgYXMg
WyBQYXNzIF0gZm9yIEJpZ1N1cisuCisgICAgICAgICogcGxhdGZvcm0vd2syL1Rlc3RFeHBlY3Rh
dGlvbnM6CisgICAgICAgICAgICBOZXcgdGVzdHMgbWFya2VkIGFzIFsgU2tpcCBdIGluIGdlbmVy
YWwuCisKIDIwMjAtMDgtMDUgIExhdXJvIE1vdXJhICA8bG1vdXJhQGlnYWxpYS5jb20+CiAKICAg
ICAgICAgW0dUS11bV1BFXSBtZWRpYS9tZWRpYS1zb3VyY2UvbWVkaWEtc291cmNlLXdlYm0uaHRt
bCBpcyB0aW1pbmcgb3V0CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3Jlc291
cmNlTG9hZFN0YXRpc3RpY3MvY25hbWUtY2xvYWtpbmctdG9wLWNuYW1lLXN1Yi0xcC1jbmFtZS1l
eHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3Rp
Y3MvY25hbWUtY2xvYWtpbmctdG9wLWNuYW1lLXN1Yi0xcC1jbmFtZS1leHBlY3RlZC50eHQKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uOTQ4ZmI1Y2NkNmU1NzFiMzNjNTcyZjU2ZDJmNzY2Y2UwNjYzYmE0YwotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGlj
cy9jbmFtZS1jbG9ha2luZy10b3AtY25hbWUtc3ViLTFwLWNuYW1lLWV4cGVjdGVkLnR4dApAQCAt
MCwwICsxLDEwIEBACitUZXN0IGZvciBDTkFNRSBDbG9ha2luZzogTm8gY29va2llIGV4cGlyeSBj
YXBwaW5nIGlmIHRoZSB0b3AgZnJhbWUgaGFzIGFuIGFsdGVybmF0ZSBDTkFNRSBhbmQgdGhlIHN1
YiByZXNvdXJjZSBoYXMgYW4gYWx0ZXJuYXRlIENOQU1FIHRoYXQgbWF0Y2hlcyB0aGUgZmlyc3Qg
cGFydHkgKG5vdCBpdHMgQ05BTUUpLgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJp
ZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKwor
UEFTUyBDb29raWUgbmFtZWQgY25hbWVUZXN0Q29va2llIGV4cGlyZXMgaW4gbW9yZSB0aGFuIDYw
NTQwMCBzZWNvbmRzLgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENP
TVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvcmVzb3VyY2VMb2Fk
U3RhdGlzdGljcy9jbmFtZS1jbG9ha2luZy10b3AtY25hbWUtc3ViLTFwLWNuYW1lLmh0bWwgYi9M
YXlvdXRUZXN0cy9odHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvY25hbWUtY2xvYWtp
bmctdG9wLWNuYW1lLXN1Yi0xcC1jbmFtZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjhjODMwNGIwYjg5YzU1
ZjJmNzBjZDgwMTY4NTQwM2QyOWRiYTJhMTcKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvY25hbWUtY2xvYWtpbmctdG9wLWNu
YW1lLXN1Yi0xcC1jbmFtZS5odG1sCkBAIC0wLDAgKzEsNjggQEAKKzwhRE9DVFlQRSBodG1sPgor
PGh0bWwgbGFuZz0iZW4iPgorPGhlYWQ+CisgICAgPG1ldGEgY2hhcnNldD0iVVRGLTgiPgorICAg
IDxzY3JpcHQgc3JjPSIvanMtdGVzdC1yZXNvdXJjZXMvanMtdGVzdC5qcyI+PC9zY3JpcHQ+Cisg
ICAgPHNjcmlwdCBzcmM9Ii9jb29raWVzL3Jlc291cmNlcy9jb29raWUtdXRpbGl0aWVzLmpzIj48
L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3V0aWwuanMiPjwvc2NyaXB0Pgor
PC9oZWFkPgorPGJvZHkgb25sb2FkPSJydW5UZXN0KCkiPgorPHNjcmlwdD4KKyAgICBkZXNjcmlw
dGlvbigiVGVzdCBmb3IgQ05BTUUgQ2xvYWtpbmc6IE5vIGNvb2tpZSBleHBpcnkgY2FwcGluZyBp
ZiB0aGUgdG9wIGZyYW1lIGhhcyBhbiBhbHRlcm5hdGUgQ05BTUUgYW5kIHRoZSBzdWIgcmVzb3Vy
Y2UgaGFzIGFuIGFsdGVybmF0ZSBDTkFNRSB0aGF0IG1hdGNoZXMgdGhlIGZpcnN0IHBhcnR5IChu
b3QgaXRzIENOQU1FKS4iKTsKKyAgICBqc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKworICAgIGZ1bmN0
aW9uIGZpbmlzaFRlc3QoKSB7CisgICAgICAgIHJlc2V0Q29va2llc0ZvckN1cnJlbnRPcmlnaW4o
KTsKKyAgICAgICAgc2V0RW5hYmxlRmVhdHVyZShmYWxzZSwgZnVuY3Rpb24oKSB7CisgICAgICAg
ICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAgICAgICAgfSk7CisgICAgfQorCisgICAgZnVuY3Rpb24g
Y2hlY2tDb29raWVFeHBpcnkoY29va2llRGF0YSwgc2Vjb25kcywgc2hvdWxkQmVMZXNzVGhhbikg
eworICAgICAgICBsZXQgbm93ID0gbmV3IERhdGUoKTsKKyAgICAgICAgbGV0IGV4cGlyeURhdGVJ
bk1pbGxpc2Vjb25kcyA9IG5vdy5nZXRUaW1lKCkgKyAoc2Vjb25kcyAqIDEwMDApOworCisgICAg
ICAgIGlmICgoY29va2llRGF0YVsiZXhwaXJlcyJdIDwgZXhwaXJ5RGF0ZUluTWlsbGlzZWNvbmRz
KSA9PT0gc2hvdWxkQmVMZXNzVGhhbikKKyAgICAgICAgICAgIHRlc3RQYXNzZWQoIkNvb2tpZSBu
YW1lZCAiICsgY29va2llRGF0YVsibmFtZSJdICsgIiBleHBpcmVzIGluICIgKyAoc2hvdWxkQmVM
ZXNzVGhhbiA/ICJsZXNzIiA6ICJtb3JlIikgKyAiIHRoYW4gIiArIHNlY29uZHMgKyAiIHNlY29u
ZHMuIik7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHRlc3RGYWlsZWQoIkNvb2tpZSBuYW1l
ZCAiICsgY29va2llRGF0YVsibmFtZSJdICsgIiBleHBpcmVzIGluICIgKyAoc2hvdWxkQmVMZXNz
VGhhbiA/ICJtb3JlIiA6ICJsZXNzIikgKyAiIHRoYW4gIiArIHNlY29uZHMgKyAiIHNlY29uZHMu
Iik7CisgICAgfQorCisgICAgY29uc3Qgb25lV2Vla0luU2Vjb25kcyA9IDcgKiAyNCAqIDYwICog
NjA7CisgICAgY29uc3Qgb3Zlck9uZVdlZWtJblNlY29uZHMgPSBvbmVXZWVrSW5TZWNvbmRzICsg
NjAwOworICAgIGNvbnN0IGNvb2tpZU5hbWUgPSAiY25hbWVUZXN0Q29va2llIjsKKyAgICBjb25z
dCBzdWJQYXRoVG9TZXRGaXJzdFBhcnR5Q29va2llID0gInJlc291cmNlcy9zZXQtY29va2llLnBo
cD9uYW1lPSIgKyBjb29raWVOYW1lICsgIiZ2YWx1ZT12YWx1ZSZkdW1teT0iICsgTWF0aC5yYW5k
b20oKTsKKworICAgIGZ1bmN0aW9uIHNldEFuZENoZWNrQ29va2llKCkgeworICAgICAgICBmZXRj
aChzdWJQYXRoVG9TZXRGaXJzdFBhcnR5Q29va2llKS50aGVuKGZ1bmN0aW9uKCkgeworICAgICAg
ICAgICAgaWYgKGludGVybmFscykgeworICAgICAgICAgICAgICAgIGxldCBjb29raWVzID0gaW50
ZXJuYWxzLmdldENvb2tpZXMoKTsKKyAgICAgICAgICAgICAgICBpZiAoIWNvb2tpZXMubGVuZ3Ro
KQorICAgICAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJObyBjb29raWVzIGZvdW5kLiIpOwor
ICAgICAgICAgICAgICAgIGZvciAobGV0IGNvb2tpZSBvZiBjb29raWVzKSB7CisgICAgICAgICAg
ICAgICAgICAgIGlmIChjb29raWUubmFtZSA9PT0gY29va2llTmFtZSkgeworICAgICAgICAgICAg
ICAgICAgICAgICAgY2hlY2tDb29raWVFeHBpcnkoY29va2llLCBvdmVyT25lV2Vla0luU2Vjb25k
cywgZmFsc2UpOworICAgICAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAg
ICAgICAgICAgdGVzdEZhaWxlZCgiVW5rbm93biBjb29raWUgIiArIGNvb2tpZS5uYW1lICsgIiBm
b3VuZC4iKTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgICAgICBmaW5pc2hUZXN0KCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0pOworICAg
IH0KKworICAgIGNvbnN0IGZpcnN0UGFydHkgPSAiaHR0cDovLzEyNy4wLjAuMTo4MDAwIjsKKyAg
ICBjb25zdCBmaXJzdFBhcnR5Q05BTUVGb3JUZXN0aW5nID0gImh0dHA6Ly90ZXN0d2Via2l0Lm9y
ZyI7CisgICAgY29uc3QgdGhpcmRQYXJ0eUNOQU1FRm9yVGVzdGluZyA9IGZpcnN0UGFydHk7CisK
KyAgICBmdW5jdGlvbiBydW5UZXN0KCkgeworICAgICAgICBzZXRFbmFibGVGZWF0dXJlKHRydWUs
IGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgdGVzdFJ1bm5lci5zdGF0aXN0aWNzU2V0Rmlyc3RQ
YXJ0eUhvc3RDTkFNRURvbWFpbihmaXJzdFBhcnR5LCBmaXJzdFBhcnR5Q05BTUVGb3JUZXN0aW5n
LCBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgICAgICB0ZXN0UnVubmVyLnN0YXRpc3RpY3NTZXRU
aGlyZFBhcnR5Q05BTUVEb21haW4odGhpcmRQYXJ0eUNOQU1FRm9yVGVzdGluZywgZnVuY3Rpb24o
KSB7CisgICAgICAgICAgICAgICAgICAgIHNldEFuZENoZWNrQ29va2llKCk7CisgICAgICAgICAg
ICAgICAgfSk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgfSk7CisgICAgfQorPC9zY3JpcHQ+
Cis8L2JvZHk+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3Jlc291cmNlTG9h
ZFN0YXRpc3RpY3MvY25hbWUtY2xvYWtpbmctdG9wLWNuYW1lLXN1Yi0zcC1jbmFtZS1leHBlY3Rl
ZC50eHQgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvY25h
bWUtY2xvYWtpbmctdG9wLWNuYW1lLXN1Yi0zcC1jbmFtZS1leHBlY3RlZC50eHQKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNzFmOTMzMDNlODVhYzA2ZDI5OWE5YzA1Y2Y2NjU2YzAxZWI5NzU3OAotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9jbmFt
ZS1jbG9ha2luZy10b3AtY25hbWUtc3ViLTNwLWNuYW1lLWV4cGVjdGVkLnR4dApAQCAtMCwwICsx
LDEwIEBACitUZXN0IGZvciBDTkFNRSBDbG9ha2luZzogQ29va2llIGV4cGlyeSBjYXBwaW5nIGlm
IHRoZSB0b3AgZnJhbWUgaGFzIGFuIGFsdGVybmF0ZSBDTkFNRSBhbmQgdGhlIHN1YiByZXNvdXJj
ZSBoYXMgYSBkaWZmZXJlbnQgYWx0ZXJuYXRlIENOQU1FLgorCitPbiBzdWNjZXNzLCB5b3Ugd2ls
bCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01Q
TEVURSIuCisKKworUEFTUyBDb29raWUgbmFtZWQgY25hbWVUZXN0Q29va2llIGV4cGlyZXMgaW4g
bGVzcyB0aGFuIDYwNTQwMCBzZWNvbmRzLgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1
ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMv
cmVzb3VyY2VMb2FkU3RhdGlzdGljcy9jbmFtZS1jbG9ha2luZy10b3AtY25hbWUtc3ViLTNwLWNu
YW1lLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3Mv
Y25hbWUtY2xvYWtpbmctdG9wLWNuYW1lLXN1Yi0zcC1jbmFtZS5odG1sCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmI2
YWM3ODFmZjgxYzIxZmFiOTk5NTk4ZTFmNjVkOTVhZjdmZGRmOTgKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvY25hbWUtY2xv
YWtpbmctdG9wLWNuYW1lLXN1Yi0zcC1jbmFtZS5odG1sCkBAIC0wLDAgKzEsNzQgQEAKKzwhRE9D
VFlQRSBodG1sPgorPGh0bWwgbGFuZz0iZW4iPgorPGhlYWQ+CisgICAgPG1ldGEgY2hhcnNldD0i
VVRGLTgiPgorICAgIDxzY3JpcHQgc3JjPSIvanMtdGVzdC1yZXNvdXJjZXMvanMtdGVzdC5qcyI+
PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9Ii9jb29raWVzL3Jlc291cmNlcy9jb29raWUtdXRp
bGl0aWVzLmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3V0aWwuanMi
Pjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHkgb25sb2FkPSJydW5UZXN0KCkiPgorPHNjcmlwdD4K
KyAgICBkZXNjcmlwdGlvbigiVGVzdCBmb3IgQ05BTUUgQ2xvYWtpbmc6IENvb2tpZSBleHBpcnkg
Y2FwcGluZyBpZiB0aGUgdG9wIGZyYW1lIGhhcyBhbiBhbHRlcm5hdGUgQ05BTUUgYW5kIHRoZSBz
dWIgcmVzb3VyY2UgaGFzIGEgZGlmZmVyZW50IGFsdGVybmF0ZSBDTkFNRS4iKTsKKyAgICBqc1Rl
c3RJc0FzeW5jID0gdHJ1ZTsKKworICAgIGZ1bmN0aW9uIGZpbmlzaFRlc3QoKSB7CisgICAgICAg
IHJlc2V0Q29va2llc0ZvckN1cnJlbnRPcmlnaW4oKTsKKyAgICAgICAgc2V0RW5hYmxlRmVhdHVy
ZShmYWxzZSwgZnVuY3Rpb24oKSB7CisgICAgICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAgICAg
ICAgfSk7CisgICAgfQorCisgICAgY29uc3Qgb25lV2Vla0luU2Vjb25kcyA9IDcgKiAyNCAqIDYw
ICogNjA7CisgICAgY29uc3Qgb3Zlck9uZVdlZWtJblNlY29uZHMgPSBvbmVXZWVrSW5TZWNvbmRz
ICsgNjAwOworICAgIGNvbnN0IHVuZGVyT25lV2Vla0luU2Vjb25kcyA9IG9uZVdlZWtJblNlY29u
ZHMgLSA2MDA7CisKKyAgICBmdW5jdGlvbiBjaGVja0Nvb2tpZUV4cGlyeShjb29raWVEYXRhLCBz
ZWNvbmRzLCBzaG91bGRCZUxlc3NUaGFuKSB7CisgICAgICAgIGxldCBub3cgPSBuZXcgRGF0ZSgp
OworICAgICAgICBsZXQgZXhwaXJ5RGF0ZUluTWlsbGlzZWNvbmRzID0gbm93LmdldFRpbWUoKSAr
IChzZWNvbmRzICogMTAwMCk7CisKKyAgICAgICAgaWYgKChjb29raWVEYXRhWyJleHBpcmVzIl0g
PCBleHBpcnlEYXRlSW5NaWxsaXNlY29uZHMpID09PSBzaG91bGRCZUxlc3NUaGFuKSB7CisgICAg
ICAgICAgICBsZXQgdW5kZXJPbmVXZWVrRXhwaXJ5RGF0ZUluTWlsbGlzZWNvbmRzID0gbm93Lmdl
dFRpbWUoKSArICh1bmRlck9uZVdlZWtJblNlY29uZHMgKiAxMDAwKTsKKyAgICAgICAgICAgIGlm
IChjb29raWVEYXRhWyJleHBpcmVzIl0gPCB1bmRlck9uZVdlZWtFeHBpcnlEYXRlSW5NaWxsaXNl
Y29uZHMpCisgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiQ29va2llIG5hbWVkICIgKyBjb29r
aWVEYXRhWyJuYW1lIl0gKyAiIHdhcyBjYXBwZWQgdG9vIGxvdy4iKTsKKyAgICAgICAgICAgIGVs
c2UKKyAgICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCJDb29raWUgbmFtZWQgIiArIGNvb2tpZURh
dGFbIm5hbWUiXSArICIgZXhwaXJlcyBpbiAiICsgKHNob3VsZEJlTGVzc1RoYW4gPyAibGVzcyIg
OiAibW9yZSIpICsgIiB0aGFuICIgKyBzZWNvbmRzICsgIiBzZWNvbmRzLiIpOworICAgICAgICB9
IGVsc2UKKyAgICAgICAgICAgIHRlc3RGYWlsZWQoIkNvb2tpZSBuYW1lZCAiICsgY29va2llRGF0
YVsibmFtZSJdICsgIiBleHBpcmVzIGluICIgKyAoc2hvdWxkQmVMZXNzVGhhbiA/ICJtb3JlIiA6
ICJsZXNzIikgKyAiIHRoYW4gIiArIHNlY29uZHMgKyAiIHNlY29uZHMuIik7CisgICAgfQorCisg
ICAgY29uc3QgY29va2llTmFtZSA9ICJjbmFtZVRlc3RDb29raWUiOworICAgIGNvbnN0IHN1YlBh
dGhUb1NldEZpcnN0UGFydHlDb29raWUgPSAicmVzb3VyY2VzL3NldC1jb29raWUucGhwP25hbWU9
IiArIGNvb2tpZU5hbWUgKyAiJnZhbHVlPXZhbHVlJmR1bW15PSIgKyBNYXRoLnJhbmRvbSgpOwor
CisgICAgZnVuY3Rpb24gc2V0QW5kQ2hlY2tDb29raWUoKSB7CisgICAgICAgIGZldGNoKHN1YlBh
dGhUb1NldEZpcnN0UGFydHlDb29raWUpLnRoZW4oZnVuY3Rpb24oKSB7CisgICAgICAgICAgICBp
ZiAoaW50ZXJuYWxzKSB7CisgICAgICAgICAgICAgICAgbGV0IGNvb2tpZXMgPSBpbnRlcm5hbHMu
Z2V0Q29va2llcygpOworICAgICAgICAgICAgICAgIGlmICghY29va2llcy5sZW5ndGgpCisgICAg
ICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoIk5vIGNvb2tpZXMgZm91bmQuIik7CisgICAgICAg
ICAgICAgICAgZm9yIChsZXQgY29va2llIG9mIGNvb2tpZXMpIHsKKyAgICAgICAgICAgICAgICAg
ICAgaWYgKGNvb2tpZS5uYW1lID09PSBjb29raWVOYW1lKSB7CisgICAgICAgICAgICAgICAgICAg
ICAgICBjaGVja0Nvb2tpZUV4cGlyeShjb29raWUsIG92ZXJPbmVXZWVrSW5TZWNvbmRzLCB0cnVl
KTsKKyAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgICAg
IHRlc3RGYWlsZWQoIlVua25vd24gY29va2llICIgKyBjb29raWUubmFtZSArICIgZm91bmQuIik7
CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAg
ICAgZmluaXNoVGVzdCgpOworICAgICAgICAgICAgfQorICAgICAgICB9KTsKKyAgICB9CisKKyAg
ICBjb25zdCBmaXJzdFBhcnR5ID0gImh0dHA6Ly8xMjcuMC4wLjE6ODAwMCI7CisgICAgY29uc3Qg
Zmlyc3RQYXJ0eUNOQU1FRm9yVGVzdGluZyA9ICJodHRwOi8vdGVzdHdlYmtpdC5vcmciOworICAg
IGNvbnN0IHRoaXJkUGFydHlDTkFNRUZvclRlc3RpbmcgPSAiaHR0cDovLzNyZHBhcnR5dGVzdHdl
YmtpdC5vcmciOworCisgICAgZnVuY3Rpb24gcnVuVGVzdCgpIHsKKyAgICAgICAgc2V0RW5hYmxl
RmVhdHVyZSh0cnVlLCBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgIHRlc3RSdW5uZXIuc3RhdGlz
dGljc1NldEZpcnN0UGFydHlIb3N0Q05BTUVEb21haW4oZmlyc3RQYXJ0eSwgZmlyc3RQYXJ0eUNO
QU1FRm9yVGVzdGluZywgZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAgICAgdGVzdFJ1bm5lci5z
dGF0aXN0aWNzU2V0VGhpcmRQYXJ0eUNOQU1FRG9tYWluKHRoaXJkUGFydHlDTkFNRUZvclRlc3Rp
bmcsIGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgICAgICAgICBzZXRBbmRDaGVja0Nvb2tpZSgp
OworICAgICAgICAgICAgICAgIH0pOworICAgICAgICAgICAgfSk7CisgICAgICAgIH0pOworICAg
IH0KKzwvc2NyaXB0PgorPC9ib2R5PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0
cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL2NuYW1lLWNsb2FraW5nLXRvcC1jbmFtZS1zdWItbWF0
Y2hpbmctY25hbWUtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9yZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzL2NuYW1lLWNsb2FraW5nLXRvcC1jbmFtZS1zdWItbWF0Y2hpbmctY25h
bWUtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjU4MThhZTEzNDVhZWMyYzAyM2ZiNzY3ZDZlYzVh
YjFkYWVkZGZkZWEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3Jl
c291cmNlTG9hZFN0YXRpc3RpY3MvY25hbWUtY2xvYWtpbmctdG9wLWNuYW1lLXN1Yi1tYXRjaGlu
Zy1jbmFtZS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxMCBAQAorVGVzdCBmb3IgQ05BTUUgQ2xv
YWtpbmc6IE5vIGNvb2tpZSBleHBpcnkgY2FwcGluZyBpZiB0aGUgdG9wIGZyYW1lIGhhcyBhbiBh
bHRlcm5hdGUgQ05BTUUgYW5kIHRoZSBzdWIgcmVzb3VyY2UgaGFzIG1hdGNoaW5nIGFsdGVybmF0
ZSBDTkFNRS4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBt
ZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BBU1MgQ29va2llIG5h
bWVkIGNuYW1lVGVzdENvb2tpZSBleHBpcmVzIGluIG1vcmUgdGhhbiA2MDU0MDAgc2Vjb25kcy4K
K1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvY25h
bWUtY2xvYWtpbmctdG9wLWNuYW1lLXN1Yi1tYXRjaGluZy1jbmFtZS5odG1sIGIvTGF5b3V0VGVz
dHMvaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL2NuYW1lLWNsb2FraW5nLXRvcC1j
bmFtZS1zdWItbWF0Y2hpbmctY25hbWUuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mOWZhMWYwM2JlZmVkNDY2
ZmU2NTVlYmM3NjMzZWEzYmRkNWRhZDI5Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL2NuYW1lLWNsb2FraW5nLXRvcC1jbmFt
ZS1zdWItbWF0Y2hpbmctY25hbWUuaHRtbApAQCAtMCwwICsxLDY4IEBACis8IURPQ1RZUEUgaHRt
bD4KKzxodG1sIGxhbmc9ImVuIj4KKzxoZWFkPgorICAgIDxtZXRhIGNoYXJzZXQ9IlVURi04Ij4K
KyAgICA8c2NyaXB0IHNyYz0iL2pzLXRlc3QtcmVzb3VyY2VzL2pzLXRlc3QuanMiPjwvc2NyaXB0
PgorICAgIDxzY3JpcHQgc3JjPSIvY29va2llcy9yZXNvdXJjZXMvY29va2llLXV0aWxpdGllcy5q
cyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9InJlc291cmNlcy91dGlsLmpzIj48L3Njcmlw
dD4KKzwvaGVhZD4KKzxib2R5IG9ubG9hZD0icnVuVGVzdCgpIj4KKzxzY3JpcHQ+CisgICAgZGVz
Y3JpcHRpb24oIlRlc3QgZm9yIENOQU1FIENsb2FraW5nOiBObyBjb29raWUgZXhwaXJ5IGNhcHBp
bmcgaWYgdGhlIHRvcCBmcmFtZSBoYXMgYW4gYWx0ZXJuYXRlIENOQU1FIGFuZCB0aGUgc3ViIHJl
c291cmNlIGhhcyBtYXRjaGluZyBhbHRlcm5hdGUgQ05BTUUuIik7CisgICAganNUZXN0SXNBc3lu
YyA9IHRydWU7CisKKyAgICBmdW5jdGlvbiBmaW5pc2hUZXN0KCkgeworICAgICAgICByZXNldENv
b2tpZXNGb3JDdXJyZW50T3JpZ2luKCk7CisgICAgICAgIHNldEVuYWJsZUZlYXR1cmUoZmFsc2Us
IGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgZmluaXNoSlNUZXN0KCk7CisgICAgICAgIH0pOwor
ICAgIH0KKworICAgIGZ1bmN0aW9uIGNoZWNrQ29va2llRXhwaXJ5KGNvb2tpZURhdGEsIHNlY29u
ZHMsIHNob3VsZEJlTGVzc1RoYW4pIHsKKyAgICAgICAgbGV0IG5vdyA9IG5ldyBEYXRlKCk7Cisg
ICAgICAgIGxldCBleHBpcnlEYXRlSW5NaWxsaXNlY29uZHMgPSBub3cuZ2V0VGltZSgpICsgKHNl
Y29uZHMgKiAxMDAwKTsKKworICAgICAgICBpZiAoKGNvb2tpZURhdGFbImV4cGlyZXMiXSA8IGV4
cGlyeURhdGVJbk1pbGxpc2Vjb25kcykgPT09IHNob3VsZEJlTGVzc1RoYW4pCisgICAgICAgICAg
ICB0ZXN0UGFzc2VkKCJDb29raWUgbmFtZWQgIiArIGNvb2tpZURhdGFbIm5hbWUiXSArICIgZXhw
aXJlcyBpbiAiICsgKHNob3VsZEJlTGVzc1RoYW4gPyAibGVzcyIgOiAibW9yZSIpICsgIiB0aGFu
ICIgKyBzZWNvbmRzICsgIiBzZWNvbmRzLiIpOworICAgICAgICBlbHNlCisgICAgICAgICAgICB0
ZXN0RmFpbGVkKCJDb29raWUgbmFtZWQgIiArIGNvb2tpZURhdGFbIm5hbWUiXSArICIgZXhwaXJl
cyBpbiAiICsgKHNob3VsZEJlTGVzc1RoYW4gPyAibW9yZSIgOiAibGVzcyIpICsgIiB0aGFuICIg
KyBzZWNvbmRzICsgIiBzZWNvbmRzLiIpOworICAgIH0KKworICAgIGNvbnN0IG9uZVdlZWtJblNl
Y29uZHMgPSA3ICogMjQgKiA2MCAqIDYwOworICAgIGNvbnN0IG92ZXJPbmVXZWVrSW5TZWNvbmRz
ID0gb25lV2Vla0luU2Vjb25kcyArIDYwMDsKKyAgICBjb25zdCBjb29raWVOYW1lID0gImNuYW1l
VGVzdENvb2tpZSI7CisgICAgY29uc3Qgc3ViUGF0aFRvU2V0Rmlyc3RQYXJ0eUNvb2tpZSA9ICJy
ZXNvdXJjZXMvc2V0LWNvb2tpZS5waHA/bmFtZT0iICsgY29va2llTmFtZSArICImdmFsdWU9dmFs
dWUmZHVtbXk9IiArIE1hdGgucmFuZG9tKCk7CisKKyAgICBmdW5jdGlvbiBzZXRBbmRDaGVja0Nv
b2tpZSgpIHsKKyAgICAgICAgZmV0Y2goc3ViUGF0aFRvU2V0Rmlyc3RQYXJ0eUNvb2tpZSkudGhl
bihmdW5jdGlvbigpIHsKKyAgICAgICAgICAgIGlmIChpbnRlcm5hbHMpIHsKKyAgICAgICAgICAg
ICAgICBsZXQgY29va2llcyA9IGludGVybmFscy5nZXRDb29raWVzKCk7CisgICAgICAgICAgICAg
ICAgaWYgKCFjb29raWVzLmxlbmd0aCkKKyAgICAgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgi
Tm8gY29va2llcyBmb3VuZC4iKTsKKyAgICAgICAgICAgICAgICBmb3IgKGxldCBjb29raWUgb2Yg
Y29va2llcykgeworICAgICAgICAgICAgICAgICAgICBpZiAoY29va2llLm5hbWUgPT09IGNvb2tp
ZU5hbWUpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNoZWNrQ29va2llRXhwaXJ5KGNvb2tp
ZSwgb3Zlck9uZVdlZWtJblNlY29uZHMsIGZhbHNlKTsKKyAgICAgICAgICAgICAgICAgICAgfSBl
bHNlIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoIlVua25vd24gY29va2ll
ICIgKyBjb29raWUubmFtZSArICIgZm91bmQuIik7CisgICAgICAgICAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgZmluaXNoVGVzdCgpOworICAgICAgICAg
ICAgfQorICAgICAgICB9KTsKKyAgICB9CisKKyAgICBjb25zdCBmaXJzdFBhcnR5ID0gImh0dHA6
Ly8xMjcuMC4wLjE6ODAwMCI7CisgICAgY29uc3QgZmlyc3RQYXJ0eUNOQU1FRm9yVGVzdGluZyA9
ICJodHRwOi8vdGVzdHdlYmtpdC5vcmciOworICAgIGNvbnN0IHRoaXJkUGFydHlDTkFNRUZvclRl
c3RpbmcgPSBmaXJzdFBhcnR5Q05BTUVGb3JUZXN0aW5nOworCisgICAgZnVuY3Rpb24gcnVuVGVz
dCgpIHsKKyAgICAgICAgc2V0RW5hYmxlRmVhdHVyZSh0cnVlLCBmdW5jdGlvbigpIHsKKyAgICAg
ICAgICAgIHRlc3RSdW5uZXIuc3RhdGlzdGljc1NldEZpcnN0UGFydHlIb3N0Q05BTUVEb21haW4o
Zmlyc3RQYXJ0eSwgZmlyc3RQYXJ0eUNOQU1FRm9yVGVzdGluZywgZnVuY3Rpb24oKSB7CisgICAg
ICAgICAgICAgICAgdGVzdFJ1bm5lci5zdGF0aXN0aWNzU2V0VGhpcmRQYXJ0eUNOQU1FRG9tYWlu
KHRoaXJkUGFydHlDTkFNRUZvclRlc3RpbmcsIGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgICAg
ICAgICBzZXRBbmRDaGVja0Nvb2tpZSgpOworICAgICAgICAgICAgICAgIH0pOworICAgICAgICAg
ICAgfSk7CisgICAgICAgIH0pOworICAgIH0KKzwvc2NyaXB0PgorPC9ib2R5PgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL2NuYW1lLWNs
b2FraW5nLXRvcC1jbmFtZS1zdWItbm8tY25hbWUtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL2NuYW1lLWNsb2FraW5nLXRvcC1jbmFt
ZS1zdWItbm8tY25hbWUtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmI2NTIwZGVlMzkxNWU0MjJl
Y2IwY2I0OTRkZDQ5NDdkMjU5YTc2NjYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9o
dHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvY25hbWUtY2xvYWtpbmctdG9wLWNuYW1l
LXN1Yi1uby1jbmFtZS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxMCBAQAorVGVzdCBmb3IgQ05B
TUUgQ2xvYWtpbmc6IE5vIGNvb2tpZSBleHBpcnkgY2FwcGluZyBpZiB0aGUgdG9wIGZyYW1lIGhh
cyBhbiBhbHRlcm5hdGUgQ05BTUUgYW5kIHRoZSBzdWIgcmVzb3VyY2UgaGFzIG5vIGFsdGVybmF0
ZSBDTkFNRS4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBt
ZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BBU1MgQ29va2llIG5h
bWVkIGNuYW1lVGVzdENvb2tpZSBleHBpcmVzIGluIG1vcmUgdGhhbiA2MDU0MDAgc2Vjb25kcy4K
K1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvY25h
bWUtY2xvYWtpbmctdG9wLWNuYW1lLXN1Yi1uby1jbmFtZS5odG1sIGIvTGF5b3V0VGVzdHMvaHR0
cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL2NuYW1lLWNsb2FraW5nLXRvcC1jbmFtZS1z
dWItbm8tY25hbWUuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wMWNhZDQzOWI3ZmMxNjdhNmM5NDlmNzBhOTEw
MGU2OWE3Y2ZiMjM2Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9y
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzL2NuYW1lLWNsb2FraW5nLXRvcC1jbmFtZS1zdWItbm8tY25h
bWUuaHRtbApAQCAtMCwwICsxLDY1IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sIGxhbmc9ImVu
Ij4KKzxoZWFkPgorICAgIDxtZXRhIGNoYXJzZXQ9IlVURi04Ij4KKyAgICA8c2NyaXB0IHNyYz0i
L2pzLXRlc3QtcmVzb3VyY2VzL2pzLXRlc3QuanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3Jj
PSIvY29va2llcy9yZXNvdXJjZXMvY29va2llLXV0aWxpdGllcy5qcyI+PC9zY3JpcHQ+CisgICAg
PHNjcmlwdCBzcmM9InJlc291cmNlcy91dGlsLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5
IG9ubG9hZD0icnVuVGVzdCgpIj4KKzxzY3JpcHQ+CisgICAgZGVzY3JpcHRpb24oIlRlc3QgZm9y
IENOQU1FIENsb2FraW5nOiBObyBjb29raWUgZXhwaXJ5IGNhcHBpbmcgaWYgdGhlIHRvcCBmcmFt
ZSBoYXMgYW4gYWx0ZXJuYXRlIENOQU1FIGFuZCB0aGUgc3ViIHJlc291cmNlIGhhcyBubyBhbHRl
cm5hdGUgQ05BTUUuIik7CisgICAganNUZXN0SXNBc3luYyA9IHRydWU7CisKKyAgICBmdW5jdGlv
biBmaW5pc2hUZXN0KCkgeworICAgICAgICByZXNldENvb2tpZXNGb3JDdXJyZW50T3JpZ2luKCk7
CisgICAgICAgIHNldEVuYWJsZUZlYXR1cmUoZmFsc2UsIGZ1bmN0aW9uKCkgeworICAgICAgICAg
ICAgZmluaXNoSlNUZXN0KCk7CisgICAgICAgIH0pOworICAgIH0KKworICAgIGZ1bmN0aW9uIGNo
ZWNrQ29va2llRXhwaXJ5KGNvb2tpZURhdGEsIHNlY29uZHMsIHNob3VsZEJlTGVzc1RoYW4pIHsK
KyAgICAgICAgbGV0IG5vdyA9IG5ldyBEYXRlKCk7CisgICAgICAgIGxldCBleHBpcnlEYXRlSW5N
aWxsaXNlY29uZHMgPSBub3cuZ2V0VGltZSgpICsgKHNlY29uZHMgKiAxMDAwKTsKKworICAgICAg
ICBpZiAoKGNvb2tpZURhdGFbImV4cGlyZXMiXSA8IGV4cGlyeURhdGVJbk1pbGxpc2Vjb25kcykg
PT09IHNob3VsZEJlTGVzc1RoYW4pCisgICAgICAgICAgICB0ZXN0UGFzc2VkKCJDb29raWUgbmFt
ZWQgIiArIGNvb2tpZURhdGFbIm5hbWUiXSArICIgZXhwaXJlcyBpbiAiICsgKHNob3VsZEJlTGVz
c1RoYW4gPyAibGVzcyIgOiAibW9yZSIpICsgIiB0aGFuICIgKyBzZWNvbmRzICsgIiBzZWNvbmRz
LiIpOworICAgICAgICBlbHNlCisgICAgICAgICAgICB0ZXN0RmFpbGVkKCJDb29raWUgbmFtZWQg
IiArIGNvb2tpZURhdGFbIm5hbWUiXSArICIgZXhwaXJlcyBpbiAiICsgKHNob3VsZEJlTGVzc1Ro
YW4gPyAibW9yZSIgOiAibGVzcyIpICsgIiB0aGFuICIgKyBzZWNvbmRzICsgIiBzZWNvbmRzLiIp
OworICAgIH0KKworICAgIGNvbnN0IG9uZVdlZWtJblNlY29uZHMgPSA3ICogMjQgKiA2MCAqIDYw
OworICAgIGNvbnN0IG92ZXJPbmVXZWVrSW5TZWNvbmRzID0gb25lV2Vla0luU2Vjb25kcyArIDYw
MDsKKyAgICBjb25zdCBjb29raWVOYW1lID0gImNuYW1lVGVzdENvb2tpZSI7CisgICAgY29uc3Qg
c3ViUGF0aFRvU2V0Rmlyc3RQYXJ0eUNvb2tpZSA9ICJyZXNvdXJjZXMvc2V0LWNvb2tpZS5waHA/
bmFtZT0iICsgY29va2llTmFtZSArICImdmFsdWU9dmFsdWUmZHVtbXk9IiArIE1hdGgucmFuZG9t
KCk7CisKKyAgICBmdW5jdGlvbiBzZXRBbmRDaGVja0Nvb2tpZSgpIHsKKyAgICAgICAgZmV0Y2go
c3ViUGF0aFRvU2V0Rmlyc3RQYXJ0eUNvb2tpZSkudGhlbihmdW5jdGlvbigpIHsKKyAgICAgICAg
ICAgIGlmIChpbnRlcm5hbHMpIHsKKyAgICAgICAgICAgICAgICBsZXQgY29va2llcyA9IGludGVy
bmFscy5nZXRDb29raWVzKCk7CisgICAgICAgICAgICAgICAgaWYgKCFjb29raWVzLmxlbmd0aCkK
KyAgICAgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiTm8gY29va2llcyBmb3VuZC4iKTsKKyAg
ICAgICAgICAgICAgICBmb3IgKGxldCBjb29raWUgb2YgY29va2llcykgeworICAgICAgICAgICAg
ICAgICAgICBpZiAoY29va2llLm5hbWUgPT09IGNvb2tpZU5hbWUpIHsKKyAgICAgICAgICAgICAg
ICAgICAgICAgIGNoZWNrQ29va2llRXhwaXJ5KGNvb2tpZSwgb3Zlck9uZVdlZWtJblNlY29uZHMs
IGZhbHNlKTsKKyAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAg
ICAgICAgIHRlc3RGYWlsZWQoIlVua25vd24gY29va2llICIgKyBjb29raWUubmFtZSArICIgZm91
bmQuIik7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAg
ICAgICAgICAgZmluaXNoVGVzdCgpOworICAgICAgICAgICAgfQorICAgICAgICB9KTsKKyAgICB9
CisKKyAgICBjb25zdCBmaXJzdFBhcnR5ID0gImh0dHA6Ly8xMjcuMC4wLjE6ODAwMCI7CisgICAg
Y29uc3QgZmlyc3RQYXJ0eUNOQU1FRm9yVGVzdGluZyA9ICJodHRwOi8vdGVzdHdlYmtpdC5vcmci
OworCisgICAgZnVuY3Rpb24gcnVuVGVzdCgpIHsKKyAgICAgICAgc2V0RW5hYmxlRmVhdHVyZSh0
cnVlLCBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgIHRlc3RSdW5uZXIuc3RhdGlzdGljc1NldEZp
cnN0UGFydHlIb3N0Q05BTUVEb21haW4oZmlyc3RQYXJ0eSwgZmlyc3RQYXJ0eUNOQU1FRm9yVGVz
dGluZywgZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAgICAgc2V0QW5kQ2hlY2tDb29raWUoKTsK
KyAgICAgICAgICAgIH0pOworICAgICAgICB9KTsKKyAgICB9Cis8L3NjcmlwdD4KKzwvYm9keT4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGlj
cy9jbmFtZS1jbG9ha2luZy10b3Atbm8tY25hbWUtc3ViLTFwLWNuYW1lLWV4cGVjdGVkLnR4dCBi
L0xheW91dFRlc3RzL2h0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9jbmFtZS1jbG9h
a2luZy10b3Atbm8tY25hbWUtc3ViLTFwLWNuYW1lLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5h
YmZhMjk5Y2NhZDcwZjY1MGViNjBhNmU5MDgxZmI5MjJjMTc0MTM5Ci0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL2NuYW1lLWNs
b2FraW5nLXRvcC1uby1jbmFtZS1zdWItMXAtY25hbWUtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEs
MTAgQEAKK1Rlc3QgZm9yIENOQU1FIENsb2FraW5nOiBObyBjb29raWUgZXhwaXJ5IGNhcHBpbmcg
aWYgdGhlIHRvcCBmcmFtZSBoYXMgbm8gYWx0ZXJuYXRlIENOQU1FIGFuZCB0aGUgc3ViIHJlc291
cmNlIGhhcyBhbiBhbHRlcm5hdGUgQ05BTUUgdGhhdCBtYXRjaGVzIHRoZSBmaXJzdCBwYXJ0eSAo
bm90IGl0cyBDTkFNRSkuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAi
UEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNTIENv
b2tpZSBuYW1lZCBjbmFtZVRlc3RDb29raWUgZXhwaXJlcyBpbiBtb3JlIHRoYW4gNjA1NDAwIHNl
Y29uZHMuCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUK
KwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0
aWNzL2NuYW1lLWNsb2FraW5nLXRvcC1uby1jbmFtZS1zdWItMXAtY25hbWUuaHRtbCBiL0xheW91
dFRlc3RzL2h0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9jbmFtZS1jbG9ha2luZy10
b3Atbm8tY25hbWUtc3ViLTFwLWNuYW1lLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjczNzQ2NDU4M2I1ZDQ4
MDViZWJmOTNhODQwZTVkMDc3NjQ0ODhmMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2h0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9jbmFtZS1jbG9ha2luZy10b3Atbm8t
Y25hbWUtc3ViLTFwLWNuYW1lLmh0bWwKQEAgLTAsMCArMSw2NSBAQAorPCFET0NUWVBFIGh0bWw+
Cis8aHRtbCBsYW5nPSJlbiI+Cis8aGVhZD4KKyAgICA8bWV0YSBjaGFyc2V0PSJVVEYtOCI+Cisg
ICAgPHNjcmlwdCBzcmM9Ii9qcy10ZXN0LXJlc291cmNlcy9qcy10ZXN0LmpzIj48L3NjcmlwdD4K
KyAgICA8c2NyaXB0IHNyYz0iL2Nvb2tpZXMvcmVzb3VyY2VzL2Nvb2tpZS11dGlsaXRpZXMuanMi
Pjwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvdXRpbC5qcyI+PC9zY3JpcHQ+
Cis8L2hlYWQ+Cis8Ym9keSBvbmxvYWQ9InJ1blRlc3QoKSI+Cis8c2NyaXB0PgorICAgIGRlc2Ny
aXB0aW9uKCJUZXN0IGZvciBDTkFNRSBDbG9ha2luZzogTm8gY29va2llIGV4cGlyeSBjYXBwaW5n
IGlmIHRoZSB0b3AgZnJhbWUgaGFzIG5vIGFsdGVybmF0ZSBDTkFNRSBhbmQgdGhlIHN1YiByZXNv
dXJjZSBoYXMgYW4gYWx0ZXJuYXRlIENOQU1FIHRoYXQgbWF0Y2hlcyB0aGUgZmlyc3QgcGFydHkg
KG5vdCBpdHMgQ05BTUUpLiIpOworICAgIGpzVGVzdElzQXN5bmMgPSB0cnVlOworCisgICAgZnVu
Y3Rpb24gZmluaXNoVGVzdCgpIHsKKyAgICAgICAgcmVzZXRDb29raWVzRm9yQ3VycmVudE9yaWdp
bigpOworICAgICAgICBzZXRFbmFibGVGZWF0dXJlKGZhbHNlLCBmdW5jdGlvbigpIHsKKyAgICAg
ICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAgICAgICB9KTsKKyAgICB9CisKKyAgICBmdW5jdGlv
biBjaGVja0Nvb2tpZUV4cGlyeShjb29raWVEYXRhLCBzZWNvbmRzLCBzaG91bGRCZUxlc3NUaGFu
KSB7CisgICAgICAgIGxldCBub3cgPSBuZXcgRGF0ZSgpOworICAgICAgICBsZXQgZXhwaXJ5RGF0
ZUluTWlsbGlzZWNvbmRzID0gbm93LmdldFRpbWUoKSArIChzZWNvbmRzICogMTAwMCk7CisKKyAg
ICAgICAgaWYgKChjb29raWVEYXRhWyJleHBpcmVzIl0gPCBleHBpcnlEYXRlSW5NaWxsaXNlY29u
ZHMpID09PSBzaG91bGRCZUxlc3NUaGFuKQorICAgICAgICAgICAgdGVzdFBhc3NlZCgiQ29va2ll
IG5hbWVkICIgKyBjb29raWVEYXRhWyJuYW1lIl0gKyAiIGV4cGlyZXMgaW4gIiArIChzaG91bGRC
ZUxlc3NUaGFuID8gImxlc3MiIDogIm1vcmUiKSArICIgdGhhbiAiICsgc2Vjb25kcyArICIgc2Vj
b25kcy4iKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgdGVzdEZhaWxlZCgiQ29va2llIG5h
bWVkICIgKyBjb29raWVEYXRhWyJuYW1lIl0gKyAiIGV4cGlyZXMgaW4gIiArIChzaG91bGRCZUxl
c3NUaGFuID8gIm1vcmUiIDogImxlc3MiKSArICIgdGhhbiAiICsgc2Vjb25kcyArICIgc2Vjb25k
cy4iKTsKKyAgICB9CisKKyAgICBjb25zdCBvbmVXZWVrSW5TZWNvbmRzID0gNyAqIDI0ICogNjAg
KiA2MDsKKyAgICBjb25zdCBvdmVyT25lV2Vla0luU2Vjb25kcyA9IG9uZVdlZWtJblNlY29uZHMg
KyA2MDA7CisgICAgY29uc3QgY29va2llTmFtZSA9ICJjbmFtZVRlc3RDb29raWUiOworICAgIGNv
bnN0IHN1YlBhdGhUb1NldEZpcnN0UGFydHlDb29raWUgPSAicmVzb3VyY2VzL3NldC1jb29raWUu
cGhwP25hbWU9IiArIGNvb2tpZU5hbWUgKyAiJnZhbHVlPXZhbHVlJmR1bW15PSIgKyBNYXRoLnJh
bmRvbSgpOworCisgICAgZnVuY3Rpb24gc2V0QW5kQ2hlY2tDb29raWUoKSB7CisgICAgICAgIGZl
dGNoKHN1YlBhdGhUb1NldEZpcnN0UGFydHlDb29raWUpLnRoZW4oZnVuY3Rpb24oKSB7CisgICAg
ICAgICAgICBpZiAoaW50ZXJuYWxzKSB7CisgICAgICAgICAgICAgICAgbGV0IGNvb2tpZXMgPSBp
bnRlcm5hbHMuZ2V0Q29va2llcygpOworICAgICAgICAgICAgICAgIGlmICghY29va2llcy5sZW5n
dGgpCisgICAgICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoIk5vIGNvb2tpZXMgZm91bmQuIik7
CisgICAgICAgICAgICAgICAgZm9yIChsZXQgY29va2llIG9mIGNvb2tpZXMpIHsKKyAgICAgICAg
ICAgICAgICAgICAgaWYgKGNvb2tpZS5uYW1lID09PSBjb29raWVOYW1lKSB7CisgICAgICAgICAg
ICAgICAgICAgICAgICBjaGVja0Nvb2tpZUV4cGlyeShjb29raWUsIG92ZXJPbmVXZWVrSW5TZWNv
bmRzLCBmYWxzZSk7CisgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAg
ICAgICAgICAgICB0ZXN0RmFpbGVkKCJVbmtub3duIGNvb2tpZSAiICsgY29va2llLm5hbWUgKyAi
IGZvdW5kLiIpOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAg
ICAgICAgICAgICAgIGZpbmlzaFRlc3QoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSk7Cisg
ICAgfQorCisgICAgY29uc3QgZmlyc3RQYXJ0eSA9ICJodHRwOi8vMTI3LjAuMC4xOjgwMDAiOwor
ICAgIGNvbnN0IHRoaXJkUGFydHlDTkFNRUZvclRlc3RpbmcgPSBmaXJzdFBhcnR5OworCisgICAg
ZnVuY3Rpb24gcnVuVGVzdCgpIHsKKyAgICAgICAgc2V0RW5hYmxlRmVhdHVyZSh0cnVlLCBmdW5j
dGlvbigpIHsKKyAgICAgICAgICAgIHRlc3RSdW5uZXIuc3RhdGlzdGljc1NldFRoaXJkUGFydHlD
TkFNRURvbWFpbih0aGlyZFBhcnR5Q05BTUVGb3JUZXN0aW5nLCBmdW5jdGlvbigpIHsKKyAgICAg
ICAgICAgICAgICBzZXRBbmRDaGVja0Nvb2tpZSgpOworICAgICAgICAgICAgfSk7CisgICAgICAg
IH0pOworICAgIH0KKzwvc2NyaXB0PgorPC9ib2R5PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL2NuYW1lLWNsb2FraW5nLXRvcC1uby1j
bmFtZS1zdWItM3AtY25hbWUtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9y
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzL2NuYW1lLWNsb2FraW5nLXRvcC1uby1jbmFtZS1zdWItM3At
Y25hbWUtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQ1ZDJlZDZmZDdmNjFjNjFlN2MwMGIyZWU4
NThkY2E3ZjM4MThkZTQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvY25hbWUtY2xvYWtpbmctdG9wLW5vLWNuYW1lLXN1Yi0z
cC1jbmFtZS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxMCBAQAorVGVzdCBmb3IgQ05BTUUgQ2xv
YWtpbmc6IENvb2tpZSBleHBpcnkgY2FwcGluZyBpZiB0aGUgdG9wIGZyYW1lIGhhcyBubyBhbHRl
cm5hdGUgQ05BTUUgYW5kIHRoZSBzdWIgcmVzb3VyY2UgaGFzIGFuIGFsdGVybmF0ZSBDTkFNRS4K
KworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywg
Zm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BBU1MgQ29va2llIG5hbWVkIGNuYW1l
VGVzdENvb2tpZSBleHBpcmVzIGluIGxlc3MgdGhhbiA2MDU0MDAgc2Vjb25kcy4KK1BBU1Mgc3Vj
Y2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9odHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvY25hbWUtY2xvYWtp
bmctdG9wLW5vLWNuYW1lLXN1Yi0zcC1jbmFtZS5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0
cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL2NuYW1lLWNsb2FraW5nLXRvcC1uby1jbmFtZS1zdWIt
M3AtY25hbWUuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iNWFjNDk3ZjkzMzZlMzJjYmJmZGE5NzNlOTBjNDBh
Mzc5MGRlOGE3Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9yZXNv
dXJjZUxvYWRTdGF0aXN0aWNzL2NuYW1lLWNsb2FraW5nLXRvcC1uby1jbmFtZS1zdWItM3AtY25h
bWUuaHRtbApAQCAtMCwwICsxLDcxIEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sIGxhbmc9ImVu
Ij4KKzxoZWFkPgorICAgIDxtZXRhIGNoYXJzZXQ9IlVURi04Ij4KKyAgICA8c2NyaXB0IHNyYz0i
L2pzLXRlc3QtcmVzb3VyY2VzL2pzLXRlc3QuanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3Jj
PSIvY29va2llcy9yZXNvdXJjZXMvY29va2llLXV0aWxpdGllcy5qcyI+PC9zY3JpcHQ+CisgICAg
PHNjcmlwdCBzcmM9InJlc291cmNlcy91dGlsLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5
IG9ubG9hZD0icnVuVGVzdCgpIj4KKzxzY3JpcHQ+CisgICAgZGVzY3JpcHRpb24oIlRlc3QgZm9y
IENOQU1FIENsb2FraW5nOiBDb29raWUgZXhwaXJ5IGNhcHBpbmcgaWYgdGhlIHRvcCBmcmFtZSBo
YXMgbm8gYWx0ZXJuYXRlIENOQU1FIGFuZCB0aGUgc3ViIHJlc291cmNlIGhhcyBhbiBhbHRlcm5h
dGUgQ05BTUUuIik7CisgICAganNUZXN0SXNBc3luYyA9IHRydWU7CisKKyAgICBmdW5jdGlvbiBm
aW5pc2hUZXN0KCkgeworICAgICAgICByZXNldENvb2tpZXNGb3JDdXJyZW50T3JpZ2luKCk7Cisg
ICAgICAgIHNldEVuYWJsZUZlYXR1cmUoZmFsc2UsIGZ1bmN0aW9uKCkgeworICAgICAgICAgICAg
ZmluaXNoSlNUZXN0KCk7CisgICAgICAgIH0pOworICAgIH0KKworICAgIGNvbnN0IG9uZVdlZWtJ
blNlY29uZHMgPSA3ICogMjQgKiA2MCAqIDYwOworICAgIGNvbnN0IG92ZXJPbmVXZWVrSW5TZWNv
bmRzID0gb25lV2Vla0luU2Vjb25kcyArIDYwMDsKKyAgICBjb25zdCB1bmRlck9uZVdlZWtJblNl
Y29uZHMgPSBvbmVXZWVrSW5TZWNvbmRzIC0gNjAwOworCisgICAgZnVuY3Rpb24gY2hlY2tDb29r
aWVFeHBpcnkoY29va2llRGF0YSwgc2Vjb25kcywgc2hvdWxkQmVMZXNzVGhhbikgeworICAgICAg
ICBsZXQgbm93ID0gbmV3IERhdGUoKTsKKyAgICAgICAgbGV0IGV4cGlyeURhdGVJbk1pbGxpc2Vj
b25kcyA9IG5vdy5nZXRUaW1lKCkgKyAoc2Vjb25kcyAqIDEwMDApOworCisgICAgICAgIGlmICgo
Y29va2llRGF0YVsiZXhwaXJlcyJdIDwgZXhwaXJ5RGF0ZUluTWlsbGlzZWNvbmRzKSA9PT0gc2hv
dWxkQmVMZXNzVGhhbikgeworICAgICAgICAgICAgbGV0IHVuZGVyT25lV2Vla0V4cGlyeURhdGVJ
bk1pbGxpc2Vjb25kcyA9IG5vdy5nZXRUaW1lKCkgKyAodW5kZXJPbmVXZWVrSW5TZWNvbmRzICog
MTAwMCk7CisgICAgICAgICAgICBpZiAoY29va2llRGF0YVsiZXhwaXJlcyJdIDwgdW5kZXJPbmVX
ZWVrRXhwaXJ5RGF0ZUluTWlsbGlzZWNvbmRzKQorICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQo
IkNvb2tpZSBuYW1lZCAiICsgY29va2llRGF0YVsibmFtZSJdICsgIiB3YXMgY2FwcGVkIHRvbyBs
b3cuIik7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgiQ29v
a2llIG5hbWVkICIgKyBjb29raWVEYXRhWyJuYW1lIl0gKyAiIGV4cGlyZXMgaW4gIiArIChzaG91
bGRCZUxlc3NUaGFuID8gImxlc3MiIDogIm1vcmUiKSArICIgdGhhbiAiICsgc2Vjb25kcyArICIg
c2Vjb25kcy4iKTsKKyAgICAgICAgfSBlbHNlCisgICAgICAgICAgICB0ZXN0RmFpbGVkKCJDb29r
aWUgbmFtZWQgIiArIGNvb2tpZURhdGFbIm5hbWUiXSArICIgZXhwaXJlcyBpbiAiICsgKHNob3Vs
ZEJlTGVzc1RoYW4gPyAibW9yZSIgOiAibGVzcyIpICsgIiB0aGFuICIgKyBzZWNvbmRzICsgIiBz
ZWNvbmRzLiIpOworICAgIH0KKworICAgIGNvbnN0IGNvb2tpZU5hbWUgPSAiY25hbWVUZXN0Q29v
a2llIjsKKyAgICBjb25zdCBzdWJQYXRoVG9TZXRGaXJzdFBhcnR5Q29va2llID0gInJlc291cmNl
cy9zZXQtY29va2llLnBocD9uYW1lPSIgKyBjb29raWVOYW1lICsgIiZ2YWx1ZT12YWx1ZSZkdW1t
eT0iICsgTWF0aC5yYW5kb20oKTsKKworICAgIGZ1bmN0aW9uIHNldEFuZENoZWNrQ29va2llKCkg
eworICAgICAgICBmZXRjaChzdWJQYXRoVG9TZXRGaXJzdFBhcnR5Q29va2llKS50aGVuKGZ1bmN0
aW9uKCkgeworICAgICAgICAgICAgaWYgKGludGVybmFscykgeworICAgICAgICAgICAgICAgIGxl
dCBjb29raWVzID0gaW50ZXJuYWxzLmdldENvb2tpZXMoKTsKKyAgICAgICAgICAgICAgICBpZiAo
IWNvb2tpZXMubGVuZ3RoKQorICAgICAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJObyBjb29r
aWVzIGZvdW5kLiIpOworICAgICAgICAgICAgICAgIGZvciAobGV0IGNvb2tpZSBvZiBjb29raWVz
KSB7CisgICAgICAgICAgICAgICAgICAgIGlmIChjb29raWUubmFtZSA9PT0gY29va2llTmFtZSkg
eworICAgICAgICAgICAgICAgICAgICAgICAgY2hlY2tDb29raWVFeHBpcnkoY29va2llLCBvdmVy
T25lV2Vla0luU2Vjb25kcywgdHJ1ZSk7CisgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7Cisg
ICAgICAgICAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJVbmtub3duIGNvb2tpZSAiICsgY29v
a2llLm5hbWUgKyAiIGZvdW5kLiIpOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAg
ICAgICAgfQorICAgICAgICAgICAgICAgIGZpbmlzaFRlc3QoKTsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgfSk7CisgICAgfQorCisgICAgY29uc3QgZmlyc3RQYXJ0eSA9ICJodHRwOi8vMTI3LjAu
MC4xOjgwMDAiOworICAgIGNvbnN0IHRoaXJkUGFydHlDTkFNRUZvclRlc3RpbmcgPSAiaHR0cDov
LzNyZHBhcnR5dGVzdHdlYmtpdC5vcmciOworCisgICAgZnVuY3Rpb24gcnVuVGVzdCgpIHsKKyAg
ICAgICAgc2V0RW5hYmxlRmVhdHVyZSh0cnVlLCBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgIHRl
c3RSdW5uZXIuc3RhdGlzdGljc1NldFRoaXJkUGFydHlDTkFNRURvbWFpbih0aGlyZFBhcnR5Q05B
TUVGb3JUZXN0aW5nLCBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgICAgICBzZXRBbmRDaGVja0Nv
b2tpZSgpOworICAgICAgICAgICAgfSk7CisgICAgICAgIH0pOworICAgIH0KKzwvc2NyaXB0Pgor
PC9ib2R5PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRT
dGF0aXN0aWNzL2NuYW1lLWNsb2FraW5nLXRvcC1uby1jbmFtZS1zdWItbm8tY25hbWUtZXhwZWN0
ZWQudHh0IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL2Nu
YW1lLWNsb2FraW5nLXRvcC1uby1jbmFtZS1zdWItbm8tY25hbWUtZXhwZWN0ZWQudHh0Cm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjYwNWM5OWMwNDc3MDI1MzZhZTgyNzFkNmVkYTI5MWIxZDRmNDBiZWMKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3Mv
Y25hbWUtY2xvYWtpbmctdG9wLW5vLWNuYW1lLXN1Yi1uby1jbmFtZS1leHBlY3RlZC50eHQKQEAg
LTAsMCArMSwxMCBAQAorVGVzdCBmb3IgQ05BTUUgQ2xvYWtpbmc6IE5vIGNvb2tpZSBleHBpcnkg
Y2FwcGluZyBpZiB0aGUgdG9wIGZyYW1lIGhhcyBubyBhbHRlcm5hdGUgQ05BTUUgYW5kIHRoZSBz
dWIgcmVzb3VyY2UgaGFzIG5vIGFsdGVybmF0ZSBDTkFNRS4KKworT24gc3VjY2VzcywgeW91IHdp
bGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09N
UExFVEUiLgorCisKK1BBU1MgQ29va2llIG5hbWVkIGNuYW1lVGVzdENvb2tpZSBleHBpcmVzIGlu
IG1vcmUgdGhhbiA2MDU0MDAgc2Vjb25kcy4KK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRy
dWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvY25hbWUtY2xvYWtpbmctdG9wLW5vLWNuYW1lLXN1Yi1u
by1jbmFtZS5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0
aWNzL2NuYW1lLWNsb2FraW5nLXRvcC1uby1jbmFtZS1zdWItbm8tY25hbWUuaHRtbApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi42NjNmOWJmNjY2ODVjYTA5NGE0OWU0ZmRiY2Y4OWI4ZWY2YjUzZjkxCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL2Nu
YW1lLWNsb2FraW5nLXRvcC1uby1jbmFtZS1zdWItbm8tY25hbWUuaHRtbApAQCAtMCwwICsxLDYw
IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sIGxhbmc9ImVuIj4KKzxoZWFkPgorICAgIDxtZXRh
IGNoYXJzZXQ9IlVURi04Ij4KKyAgICA8c2NyaXB0IHNyYz0iL2pzLXRlc3QtcmVzb3VyY2VzL2pz
LXRlc3QuanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPSIvY29va2llcy9yZXNvdXJjZXMv
Y29va2llLXV0aWxpdGllcy5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9InJlc291cmNl
cy91dGlsLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5IG9ubG9hZD0icnVuVGVzdCgpIj4K
KzxzY3JpcHQ+CisgICAgZGVzY3JpcHRpb24oIlRlc3QgZm9yIENOQU1FIENsb2FraW5nOiBObyBj
b29raWUgZXhwaXJ5IGNhcHBpbmcgaWYgdGhlIHRvcCBmcmFtZSBoYXMgbm8gYWx0ZXJuYXRlIENO
QU1FIGFuZCB0aGUgc3ViIHJlc291cmNlIGhhcyBubyBhbHRlcm5hdGUgQ05BTUUuIik7CisgICAg
anNUZXN0SXNBc3luYyA9IHRydWU7CisKKyAgICBmdW5jdGlvbiBmaW5pc2hUZXN0KCkgeworICAg
ICAgICByZXNldENvb2tpZXNGb3JDdXJyZW50T3JpZ2luKCk7CisgICAgICAgIHNldEVuYWJsZUZl
YXR1cmUoZmFsc2UsIGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgZmluaXNoSlNUZXN0KCk7Cisg
ICAgICAgIH0pOworICAgIH0KKworICAgIGZ1bmN0aW9uIGNoZWNrQ29va2llRXhwaXJ5KGNvb2tp
ZURhdGEsIHNlY29uZHMsIHNob3VsZEJlTGVzc1RoYW4pIHsKKyAgICAgICAgbGV0IG5vdyA9IG5l
dyBEYXRlKCk7CisgICAgICAgIGxldCBleHBpcnlEYXRlSW5NaWxsaXNlY29uZHMgPSBub3cuZ2V0
VGltZSgpICsgKHNlY29uZHMgKiAxMDAwKTsKKworICAgICAgICBpZiAoKGNvb2tpZURhdGFbImV4
cGlyZXMiXSA8IGV4cGlyeURhdGVJbk1pbGxpc2Vjb25kcykgPT09IHNob3VsZEJlTGVzc1RoYW4p
CisgICAgICAgICAgICB0ZXN0UGFzc2VkKCJDb29raWUgbmFtZWQgIiArIGNvb2tpZURhdGFbIm5h
bWUiXSArICIgZXhwaXJlcyBpbiAiICsgKHNob3VsZEJlTGVzc1RoYW4gPyAibGVzcyIgOiAibW9y
ZSIpICsgIiB0aGFuICIgKyBzZWNvbmRzICsgIiBzZWNvbmRzLiIpOworICAgICAgICBlbHNlCisg
ICAgICAgICAgICB0ZXN0RmFpbGVkKCJDb29raWUgbmFtZWQgIiArIGNvb2tpZURhdGFbIm5hbWUi
XSArICIgZXhwaXJlcyBpbiAiICsgKHNob3VsZEJlTGVzc1RoYW4gPyAibW9yZSIgOiAibGVzcyIp
ICsgIiB0aGFuICIgKyBzZWNvbmRzICsgIiBzZWNvbmRzLiIpOworICAgIH0KKworICAgIGNvbnN0
IG9uZVdlZWtJblNlY29uZHMgPSA3ICogMjQgKiA2MCAqIDYwOworICAgIGNvbnN0IG92ZXJPbmVX
ZWVrSW5TZWNvbmRzID0gb25lV2Vla0luU2Vjb25kcyArIDYwMDsKKyAgICBjb25zdCBjb29raWVO
YW1lID0gImNuYW1lVGVzdENvb2tpZSI7CisgICAgY29uc3Qgc3ViUGF0aFRvU2V0Rmlyc3RQYXJ0
eUNvb2tpZSA9ICJyZXNvdXJjZXMvc2V0LWNvb2tpZS5waHA/bmFtZT0iICsgY29va2llTmFtZSAr
ICImdmFsdWU9dmFsdWUmZHVtbXk9IiArIE1hdGgucmFuZG9tKCk7CisKKyAgICBmdW5jdGlvbiBz
ZXRBbmRDaGVja0Nvb2tpZSgpIHsKKyAgICAgICAgZmV0Y2goc3ViUGF0aFRvU2V0Rmlyc3RQYXJ0
eUNvb2tpZSkudGhlbihmdW5jdGlvbigpIHsKKyAgICAgICAgICAgIGlmIChpbnRlcm5hbHMpIHsK
KyAgICAgICAgICAgICAgICBsZXQgY29va2llcyA9IGludGVybmFscy5nZXRDb29raWVzKCk7Cisg
ICAgICAgICAgICAgICAgaWYgKCFjb29raWVzLmxlbmd0aCkKKyAgICAgICAgICAgICAgICAgICAg
dGVzdEZhaWxlZCgiTm8gY29va2llcyBmb3VuZC4iKTsKKyAgICAgICAgICAgICAgICBmb3IgKGxl
dCBjb29raWUgb2YgY29va2llcykgeworICAgICAgICAgICAgICAgICAgICBpZiAoY29va2llLm5h
bWUgPT09IGNvb2tpZU5hbWUpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNoZWNrQ29va2ll
RXhwaXJ5KGNvb2tpZSwgb3Zlck9uZVdlZWtJblNlY29uZHMsIGZhbHNlKTsKKyAgICAgICAgICAg
ICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoIlVu
a25vd24gY29va2llICIgKyBjb29raWUubmFtZSArICIgZm91bmQuIik7CisgICAgICAgICAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgZmluaXNoVGVzdCgp
OworICAgICAgICAgICAgfQorICAgICAgICB9KTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBydW5U
ZXN0KCkgeworICAgICAgICBzZXRFbmFibGVGZWF0dXJlKHRydWUsIGZ1bmN0aW9uKCkgeworICAg
ICAgICAgICAgc2V0QW5kQ2hlY2tDb29raWUoKTsKKyAgICAgICAgfSk7CisgICAgfQorPC9zY3Jp
cHQ+Cis8L2JvZHk+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9pb3MtMTMvVGVz
dEV4cGVjdGF0aW9ucyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2lvcy0xMy9UZXN0RXhwZWN0YXRp
b25zCmluZGV4IDRjM2JhMWUwNmJmZDM2NTU2N2RlMjc3ZDZhNjhhZjA2ZDRjNTA4NGUuLjUwN2I0
NzEwZGY4NDA1MDZjMjQ1ZDY5ZDZiYWUwNzQxNjM1ODk5NTQgMTAwNjQ0Ci0tLSBhL0xheW91dFRl
c3RzL3BsYXRmb3JtL2lvcy0xMy9UZXN0RXhwZWN0YXRpb25zCisrKyBiL0xheW91dFRlc3RzL3Bs
YXRmb3JtL2lvcy0xMy9UZXN0RXhwZWN0YXRpb25zCkBAIC0xLDMgKzEsMTIgQEAKICMgQ2VydGFp
biB2ZXJzaW9ucyBvZiBpT1MgdXNlIGRpZmZlcmVudCB0ZXh0IHNlY3VyaXR5IGNoYXJhY3RlcnMu
CiB3ZWJraXQub3JnL2IvMjA5NjkyIHBsYXRmb3JtL2lvcy9mYXN0L3RleHQvdGV4dC1zZWN1cml0
eS1kaXNjLWJ1bGxldC1wdWEtaW9zLW5ldy5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCi13ZWJr
aXQub3JnL2IvMjA5NjkyIGZhc3QvdGV4dC90ZXh0LXNlY3VyaXR5LWRpc2MtYnVsbGV0LXB1YS5o
dG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQord2Vi
a2l0Lm9yZy9iLzIwOTY5MiBmYXN0L3RleHQvdGV4dC1zZWN1cml0eS1kaXNjLWJ1bGxldC1wdWEu
aHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQorCisjIFRoZSBDTkFNRSBhbmQgY29va2llIHRyYW5z
Zm9ybSBTUElzIGFyZSBvbmx5IGF2YWlsYWJsZSBpbiBpT1MgMTQgYW5kIGFib3ZlLgoraHR0cC90
ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL2NuYW1lLWNsb2FraW5nLXRvcC1jbmFtZS1zdWIt
MXAtY25hbWUuaHRtbCBbIFNraXAgXQoraHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNz
L2NuYW1lLWNsb2FraW5nLXRvcC1jbmFtZS1zdWItM3AtY25hbWUuaHRtbCBbIFNraXAgXQoraHR0
cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL2NuYW1lLWNsb2FraW5nLXRvcC1jbmFtZS1z
dWItbWF0Y2hpbmctY25hbWUuaHRtbCBbIFNraXAgXQoraHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRT
dGF0aXN0aWNzL2NuYW1lLWNsb2FraW5nLXRvcC1jbmFtZS1zdWItbm8tY25hbWUuaHRtbCBbIFNr
aXAgXQoraHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL2NuYW1lLWNsb2FraW5nLXRv
cC1uby1jbmFtZS1zdWItMXAtY25hbWUuaHRtbCBbIFNraXAgXQoraHR0cC90ZXN0cy9yZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzL2NuYW1lLWNsb2FraW5nLXRvcC1uby1jbmFtZS1zdWItM3AtY25hbWUu
aHRtbCBbIFNraXAgXQoraHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL2NuYW1lLWNs
b2FraW5nLXRvcC1uby1jbmFtZS1zdWItbm8tY25hbWUuaHRtbCBbIFNraXAgXQpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vaW9zLXdrMi9UZXN0RXhwZWN0YXRpb25zIGIvTGF5b3V0
VGVzdHMvcGxhdGZvcm0vaW9zLXdrMi9UZXN0RXhwZWN0YXRpb25zCmluZGV4IDkzNjFjMjE2ZGUw
YjM3NjljNDdhM2Y0ODM0NTdjOWRlYzcyMmE4MzguLmE5ZjU4NWRhNmM2ZDVmNWM2M2EwODY2MjQ5
Y2E4YmJhMWFjM2NkYzIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2lvcy13azIv
VGVzdEV4cGVjdGF0aW9ucworKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9pb3Mtd2syL1Rlc3RF
eHBlY3RhdGlvbnMKQEAgLTgyLDYgKzgyLDE1IEBAIHNjcm9sbGluZ2Nvb3JkaW5hdG9yL25vbi1m
YXN0LXNjcm9sbGFibGUtcmVnaW9uLXRyYW5zZm9ybWVkLWlmcmFtZS5odG1sIFsgU2tpcCBdCiBo
dHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3Mvc3RyaXAtcmVmZXJyZXItdG8tb3JpZ2lu
LWZvci10aGlyZC1wYXJ0eS1yZWRpcmVjdHMuaHRtbCBbIFBhc3MgXQogaHR0cC90ZXN0cy9yZXNv
dXJjZUxvYWRTdGF0aXN0aWNzL3N0cmlwLXJlZmVycmVyLXRvLW9yaWdpbi1mb3ItdGhpcmQtcGFy
dHktcmVxdWVzdHMuaHRtbCBbIFBhc3MgXQogCisjIFRoZSBDTkFNRSBhbmQgY29va2llIHRyYW5z
Zm9ybSBTUElzIGFyZSBvbmx5IGF2YWlsYWJsZSBpbiBpT1MgMTQgYW5kIGFib3ZlLgoraHR0cC90
ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL2NuYW1lLWNsb2FraW5nLXRvcC1jbmFtZS1zdWIt
MXAtY25hbWUuaHRtbCBbIFBhc3MgXQoraHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNz
L2NuYW1lLWNsb2FraW5nLXRvcC1jbmFtZS1zdWItM3AtY25hbWUuaHRtbCBbIFBhc3MgXQoraHR0
cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL2NuYW1lLWNsb2FraW5nLXRvcC1jbmFtZS1z
dWItbWF0Y2hpbmctY25hbWUuaHRtbCBbIFBhc3MgXQoraHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRT
dGF0aXN0aWNzL2NuYW1lLWNsb2FraW5nLXRvcC1jbmFtZS1zdWItbm8tY25hbWUuaHRtbCBbIFBh
c3MgXQoraHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL2NuYW1lLWNsb2FraW5nLXRv
cC1uby1jbmFtZS1zdWItMXAtY25hbWUuaHRtbCBbIFBhc3MgXQoraHR0cC90ZXN0cy9yZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzL2NuYW1lLWNsb2FraW5nLXRvcC1uby1jbmFtZS1zdWItM3AtY25hbWUu
aHRtbCBbIFBhc3MgXQoraHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL2NuYW1lLWNs
b2FraW5nLXRvcC1uby1jbmFtZS1zdWItbm8tY25hbWUuaHRtbCBbIFBhc3MgXQorCiAjLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCiAjIEVuZCBwbGF0Zm9ybS1zcGVjaWZpYyBkaXJl
Y3Rvcmllcy4KICMvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azIvVGVzdEV4cGVjdGF0aW9ucyBiL0xheW91dFRl
c3RzL3BsYXRmb3JtL21hYy13azIvVGVzdEV4cGVjdGF0aW9ucwppbmRleCBlMzA4ZGZhODllZmM0
ZThkYmJmY2E1N2ExNzY0YjQzZDIzMjI3ZmMxLi4zNjlkMzNiMWVhMjAyOGY1YjYyNTRkOGM2Y2Rk
NmVhYmVlNTdiZjZjIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2syL1Rl
c3RFeHBlY3RhdGlvbnMKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMi9UZXN0RXhw
ZWN0YXRpb25zCkBAIC03MTMsNiArNzEzLDE1IEBAIGh0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3Rh
dGlzdGljcy9jYXAtY2FjaGUtbWF4LWFnZS1mb3ItcHJldmFsZW50LXJlc291cmNlLmh0bWwKIFsg
Q2F0YWxpbmErIF0gaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL2VuZm9yY2Utc2Ft
ZXNpdGUtc3RyaWN0LWJhc2VkLW9uLXRvcC1mcmFtZS11bmlxdWUtcmVkaXJlY3RzLXRvLmh0bWwg
WyBQYXNzIF0KIFsgQ2F0YWxpbmErIF0gaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNz
L2VuZm9yY2Utc2FtZXNpdGUtc3RyaWN0LWJhc2VkLW9uLXRvcC1mcmFtZS11bmlxdWUtcmVkaXJl
Y3RzLXRvLWRhdGFiYXNlLmh0bWwgWyBQYXNzIF0KIAorIyBUaGUgQ05BTUUgYW5kIGNvb2tpZSB0
cmFuc2Zvcm0gU1BJcyBhcmUgb25seSBhdmFpbGFibGUgaW4gbWFjT1MgQmlnIFN1ciBhbmQgYWJv
dmUuCitbIEJpZ1N1cisgXSBodHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvY25hbWUt
Y2xvYWtpbmctdG9wLWNuYW1lLXN1Yi0xcC1jbmFtZS5odG1sIFsgUGFzcyBdCitbIEJpZ1N1cisg
XSBodHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvY25hbWUtY2xvYWtpbmctdG9wLWNu
YW1lLXN1Yi0zcC1jbmFtZS5odG1sIFsgUGFzcyBdCitbIEJpZ1N1cisgXSBodHRwL3Rlc3RzL3Jl
c291cmNlTG9hZFN0YXRpc3RpY3MvY25hbWUtY2xvYWtpbmctdG9wLWNuYW1lLXN1Yi1tYXRjaGlu
Zy1jbmFtZS5odG1sIFsgUGFzcyBdCitbIEJpZ1N1cisgXSBodHRwL3Rlc3RzL3Jlc291cmNlTG9h
ZFN0YXRpc3RpY3MvY25hbWUtY2xvYWtpbmctdG9wLWNuYW1lLXN1Yi1uby1jbmFtZS5odG1sIFsg
UGFzcyBdCitbIEJpZ1N1cisgXSBodHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvY25h
bWUtY2xvYWtpbmctdG9wLW5vLWNuYW1lLXN1Yi0xcC1jbmFtZS5odG1sIFsgUGFzcyBdCitbIEJp
Z1N1cisgXSBodHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvY25hbWUtY2xvYWtpbmct
dG9wLW5vLWNuYW1lLXN1Yi0zcC1jbmFtZS5odG1sIFsgUGFzcyBdCitbIEJpZ1N1cisgXSBodHRw
L3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvY25hbWUtY2xvYWtpbmctdG9wLW5vLWNuYW1l
LXN1Yi1uby1jbmFtZS5odG1sIFsgUGFzcyBdCisKICMgU2tpcHBlZCBpbiBnZW5lcmFsIGV4cGVj
dGF0aW9ucyBzaW5jZSB0aGV5IG9ubHkgd29yayBvbiBpT1MgYW5kIE1hYywgV0syLgogbWVkaWEv
ZGVhY3RpdmF0ZS1hdWRpby1zZXNzaW9uLmh0bWwgWyBQYXNzIF0KIApkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvcGxhdGZvcm0vd2syL1Rlc3RFeHBlY3RhdGlvbnMgYi9MYXlvdXRUZXN0cy9wbGF0
Zm9ybS93azIvVGVzdEV4cGVjdGF0aW9ucwppbmRleCBkMGQ4NmIxMDMzNjUzMmFlMjM5ZGMzZDI3
ZGVkMjYxODkwYmZmODBmLi40ZWExNGJjZTU4OGY1MjJmMWNhZjU5NjFhNmJlZjE2ODc2ZjFkMjUx
IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93azIvVGVzdEV4cGVjdGF0aW9ucwor
KysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93azIvVGVzdEV4cGVjdGF0aW9ucwpAQCAtNzMwLDYg
KzczMCwxNSBAQCBodHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3Mvc2V0LWFsbC1jb29r
aWVzLXRvLXNhbWUtc2l0ZS1zdHJpY3QuaHRtbCBbIFNraQogaHR0cC90ZXN0cy9yZXNvdXJjZUxv
YWRTdGF0aXN0aWNzL2VuZm9yY2Utc2FtZXNpdGUtc3RyaWN0LWJhc2VkLW9uLXRvcC1mcmFtZS11
bmlxdWUtcmVkaXJlY3RzLXRvLmh0bWwgWyBTa2lwIF0KIGh0dHAvdGVzdHMvcmVzb3VyY2VMb2Fk
U3RhdGlzdGljcy9lbmZvcmNlLXNhbWVzaXRlLXN0cmljdC1iYXNlZC1vbi10b3AtZnJhbWUtdW5p
cXVlLXJlZGlyZWN0cy10by1kYXRhYmFzZS5odG1sIFsgU2tpcCBdCiAKKyMgVGhlIENOQU1FIGFu
ZCBjb29raWUgdHJhbnNmb3JtIFNQSXMgYXJlIG9ubHkgYXZhaWxhYmxlIGluIG1hY09TIEJpZyBT
dXIgKyBpT1MgMTQgYW5kIGFib3ZlLgoraHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNz
L2NuYW1lLWNsb2FraW5nLXRvcC1jbmFtZS1zdWItMXAtY25hbWUuaHRtbCBbIFNraXAgXQoraHR0
cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL2NuYW1lLWNsb2FraW5nLXRvcC1jbmFtZS1z
dWItM3AtY25hbWUuaHRtbCBbIFNraXAgXQoraHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0
aWNzL2NuYW1lLWNsb2FraW5nLXRvcC1jbmFtZS1zdWItbWF0Y2hpbmctY25hbWUuaHRtbCBbIFNr
aXAgXQoraHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL2NuYW1lLWNsb2FraW5nLXRv
cC1jbmFtZS1zdWItbm8tY25hbWUuaHRtbCBbIFNraXAgXQoraHR0cC90ZXN0cy9yZXNvdXJjZUxv
YWRTdGF0aXN0aWNzL2NuYW1lLWNsb2FraW5nLXRvcC1uby1jbmFtZS1zdWItMXAtY25hbWUuaHRt
bCBbIFNraXAgXQoraHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL2NuYW1lLWNsb2Fr
aW5nLXRvcC1uby1jbmFtZS1zdWItM3AtY25hbWUuaHRtbCBbIFNraXAgXQoraHR0cC90ZXN0cy9y
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzL2NuYW1lLWNsb2FraW5nLXRvcC1uby1jbmFtZS1zdWItbm8t
Y25hbWUuaHRtbCBbIFNraXAgXQorCiBodHRwL3Rlc3RzL3dlYnNvY2tldC9jb25uZWN0aW9uLXJl
ZnVzYWwtaW4tZnJhbWUtcmVzb3VyY2UtbG9hZC1zdGF0aXN0aWNzLmh0bWwgWyBQYXNzIF0KICMg
VGhlc2UgYXJlIG9ubHkgc3VwcG9ydGVkIGJlaGluZCBhIGNvbXBpbGUgdGltZSBmbGFnIGluIG1h
Y09TIEhpZ2ggU2llcnJhICsgaU9TIDExLCBhbmQgYWJvdmUuCiBodHRwL3Rlc3RzL3Jlc291cmNl
TG9hZFN0YXRpc3RpY3MvY29va2llLWRlbGV0aW9uLmh0bWwgWyBQYXNzIFRpbWVvdXQgXQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>406121</attachid>
            <date>2020-08-06 15:00:02 -0700</date>
            <delta_ts>2020-08-07 11:00:09 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-215201-20200806150001.patch</filename>
            <type>text/plain</type>
            <size>107092</size>
            <attacher name="John Wilander">wilander</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY1MzA4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDRiODFlZGU2ODU3NGFkNzZmOTk1NGQ3
NjhkODk3NzJkNDkzMTFlZmYuLjNjMjYyOWU3YmFhYzdjZWFhYjRkMDEwYTQ0NDM1N2M3MjRiOWMx
YzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMjAtMDgtMDYgIEpvaG4gV2lsYW5kZXIgIDx3aWxh
bmRlckBhcHBsZS5jb20+CisKKyAgICAgICAgRXhwZXJpbWVudGFsOiBDYXAgdGhlIGV4cGlyeSBv
ZiBwZXJzaXN0ZW50IGNvb2tpZXMgc2V0IGluIDNyZC1wYXJ0eSBDTkFNRSBjbG9ha2VkIEhUVFAg
cmVzcG9uc2VzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yMTUyMDEKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzU3NDU0NjMzPgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgY2hhbmdlIGRlZmluZXMg
SEFWRV9DRk5FVFdPUktfQ05BTUVfQU5EX0NPT0tJRV9UUkFOU0ZPUk1fU1BJLgorCisgICAgICAg
ICogd3RmL1BsYXRmb3JtSGF2ZS5oOgorCiAyMDIwLTA4LTA0ICBZdXN1a2UgU3V6dWtpICA8eXN1
enVraUBhcHBsZS5jb20+CiAKICAgICAgICAgW0pTQ10gVXNlIExhenlOZXZlckRlc3Ryb3llZCAm
IHN0ZDo6Y2FsbF9vbmNlIGZvciBjb21wbGV4IHNpbmdsZXRvbnMKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCAwYzU2
NjVkODFmYjQ2Nzc1MzI0ZjI3YmE4Y2JlNGZkMWQ2YzNhNzYzLi44MGE5ODMyMmJmYjEyOTEwNTI3
NGVjMWY5M2I3MGI2NmNhZTE5ZDFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VM
b2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzIgQEAKKzIwMjAt
MDgtMDYgIEpvaG4gV2lsYW5kZXIgIDx3aWxhbmRlckBhcHBsZS5jb20+CisKKyAgICAgICAgRXhw
ZXJpbWVudGFsOiBDYXAgdGhlIGV4cGlyeSBvZiBwZXJzaXN0ZW50IGNvb2tpZXMgc2V0IGluIDNy
ZC1wYXJ0eSBDTkFNRSBjbG9ha2VkIEhUVFAgcmVzcG9uc2VzCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTUyMDEKKyAgICAgICAgPHJkYXI6Ly9wcm9i
bGVtLzU3NDU0NjMzPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIFRlc3RzOiBodHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvY25hbWUtY2xv
YWtpbmctdG9wLWNuYW1lLXN1Yi0xcC1jbmFtZS5odG1sCisgICAgICAgICAgICAgICBodHRwL3Rl
c3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvY25hbWUtY2xvYWtpbmctdG9wLWNuYW1lLXN1Yi0z
cC1jbmFtZS5odG1sCisgICAgICAgICAgICAgICBodHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRp
c3RpY3MvY25hbWUtY2xvYWtpbmctdG9wLWNuYW1lLXN1Yi1tYXRjaGluZy1jbmFtZS5odG1sCisg
ICAgICAgICAgICAgICBodHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvY25hbWUtY2xv
YWtpbmctdG9wLWNuYW1lLXN1Yi1uby1jbmFtZS5odG1sCisgICAgICAgICAgICAgICBodHRwL3Rl
c3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvY25hbWUtY2xvYWtpbmctdG9wLW5vLWNuYW1lLXN1
Yi0xcC1jbmFtZS5odG1sCisgICAgICAgICAgICAgICBodHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0
YXRpc3RpY3MvY25hbWUtY2xvYWtpbmctdG9wLW5vLWNuYW1lLXN1Yi0zcC1jbmFtZS5odG1sCisg
ICAgICAgICAgICAgICBodHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvY25hbWUtY2xv
YWtpbmctdG9wLW5vLWNuYW1lLXN1Yi1uby1jbmFtZS5odG1sCisKKyAgICAgICAgKiBwYWdlL1Nl
dHRpbmdzLnlhbWw6CisgICAgICAgICAgICBBZGRlZCB0aGUgb2ZmLWJ5LWRlZmF1bHQgZmxhZyBp
c0NOQU1FQ2xvYWtpbmdNaXRpZ2F0aW9uRW5hYmxlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3
b3JrL05ldHdvcmtTdG9yYWdlU2Vzc2lvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3Jr
U3RvcmFnZVNlc3Npb246OnJlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkIGNvbnN0KToKKyAg
ICAgICAgICAgIE5ldyBnZXR0ZXIgZm9yIHRoZSBJVFAgc2V0dGluZy4KKyAgICAgICAgKiBwbGF0
Zm9ybS9uZXR3b3JrL05ldHdvcmtTdG9yYWdlU2Vzc2lvbi5oOgorICAgICAgICAqIHBsYXRmb3Jt
L25ldHdvcmsvY29jb2EvTmV0d29ya1N0b3JhZ2VTZXNzaW9uQ29jb2EubW06CisgICAgICAgIChX
ZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb246OmNhcEV4cGlyeU9mUGVyc2lzdGVudENvb2tp
ZSk6CisgICAgICAgICAgICBCcm9rZSB0aGlzIGZ1bmN0aW9uIG91dCBzbyB0aGF0IGl0IGNhbiBi
ZSByZXVzZWQuCisgICAgICAgIChXZWJDb3JlOjpwYXJzZURPTUNvb2tpZSk6CisgICAgICAgICAg
ICBIZXJlJ3MgZnJvbSB3aGVyZSB0aGUgZnVuY3Rpb24gYWJvdmUgd2FzIGJyb2tlbiBvdXQuCisg
ICAgICAgICAgICBUaGUgZXhpc3RpbmcgZnVuY3Rpb25hbGl0eSBoYXMgYSB0ZXN0IGNhc2UuCisK
IDIwMjAtMDgtMDUgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBB
ZGQgY29uc3RydWN0b3IgZm9yIER5bmFtaWNzQ29tcHJlc3Nvck5vZGUKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL1BBTC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvQ2hhbmdlTG9n
CmluZGV4IDUxNTkwNjcyNDUwNzI4ZTI0ZjcxNjQxMWUwNDI3OGRhNzdmNzMyMGEuLmYwZDBlNjM1
MGIwZjNjZmY5MmMzODFiNjBjMTA1ZWJlYjJiODIxNjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL1BBTC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvUEFML0NoYW5nZUxvZwpAQCAt
MSwzICsxLDE2IEBACisyMDIwLTA4LTA2ICBKb2huIFdpbGFuZGVyICA8d2lsYW5kZXJAYXBwbGUu
Y29tPgorCisgICAgICAgIEV4cGVyaW1lbnRhbDogQ2FwIHRoZSBleHBpcnkgb2YgcGVyc2lzdGVu
dCBjb29raWVzIHNldCBpbiAzcmQtcGFydHkgQ05BTUUgY2xvYWtlZCBIVFRQIHJlc3BvbnNlcwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE1MjAxCisg
ICAgICAgIDxyZGFyOi8vcHJvYmxlbS81NzQ1NDYzMz4KKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHBhbC9zcGkvY2YvQ0ZOZXR3b3JrU1BJLmg6Cisg
ICAgICAgICAgICBUaGlzIGNoYW5nZSBkZWNsYXJlcyB0d28gbmV3IHByb3BlcnRpZXMgb24gTlNV
UkxTZXNzaW9uVGFzazoKKyAgICAgICAgICAgIC0gIF9jb29raWVUcmFuc2Zvcm1DYWxsYmFjawor
ICAgICAgICAgICAgLSBfcmVzb2x2ZWRDTkFNRUNoYWluCisKIDIwMjAtMDgtMDQgIFBlciBBcm5l
IFZvbGxhbiAgPHB2b2xsYW5AYXBwbGUuY29tPgogCiAgICAgICAgIFtpT1NdIENoZWNrIHRoYXQg
QWNjZXNzaWJpbGl0eSBpcyBlbmFibGVkIHdoZW4gcmVjZWl2aW5nIHRoZSBlbmFibGUgQWNjZXNz
aWJpbGl0eSBub3RpZmljYXRpb24KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9n
IGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggNmVmNzU2NjU5ZDM4NzU0ZWRkYzQzMWZm
MDdlMjhkYjIzMzdjYmRjNC4uNzJlNWEyZDFmMjZhZjk0MWY0ZmExZTQ2MDhiNTUyYTVlNjQ4NzFj
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktp
dC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMjAgQEAKKzIwMjAtMDgtMDYgIEpvaG4gV2lsYW5kZXIg
IDx3aWxhbmRlckBhcHBsZS5jb20+CisKKyAgICAgICAgRXhwZXJpbWVudGFsOiBDYXAgdGhlIGV4
cGlyeSBvZiBwZXJzaXN0ZW50IGNvb2tpZXMgc2V0IGluIDNyZC1wYXJ0eSBDTkFNRSBjbG9ha2Vk
IEhUVFAgcmVzcG9uc2VzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMTUyMDEKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzU3NDU0NjMzPgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgZXhwZXJpbWVu
dGFsIGZlYXR1cmUgaXMgb2ZmIGJ5IGRlZmF1bHQuCisKKyAgICAgICAgQ05BTUUgY2xvYWtpbmcg
bWVhbnMgYSBob3N0IHJlc29sdmVzIHRvIGEgYSBkaWZmZXJlbnQgZG9tYWluLCBwb3RlbnRpYWxs
eSBhCisgICAgICAgIHRoaXJkLXBhcnR5IGRvbWFpbiwgYXMgcGFydCBvZiBETlMgcmVzb2x1dGlv
bi4KKworICAgICAgICBUaGlzIHBhdGNoIG1ha2VzIFdlYktpdDo6TmV0d29ya0RhdGFUYXNrQ29j
b2EgY2FwdHVyZSBhbnkgQ05BTUUgY2xvYWtpbmcgZm9yCisgICAgICAgIHRoZSBmaXJzdCBwYXJ0
eSBob3N0IGFuZCBzdG9yZXMgaXQgaW4gYSB0YWJsZSBpbiB0aGUgV2ViS2l0OjpOZXR3b3JrU2Vz
c2lvbi4KKyAgICAgICAgSXQgdGhlbiBjaGVja3MgZmlyc3QgcGFydHkgc3VicmVzb3VyY2UgbG9h
ZHMgdG8gc2VlIGlmIHRoZXkgcmVzb2x2ZSB0byBhCisgICAgICAgIGRpZmZlcmVudCBkb21haW4g
YW5kIGlmIHNvLCBjb21wYXJlIHRoYXQgZG9tYWluIHRvIGJvdGggdGhlIGZpcnN0IHBhcnR5Cisg
ICAgICAgIGRvbWFpbiBhbmQgaXRzIENOQU1FIGNsb2FraW5nIGRvbWFpbiwgaWYgdGhlcmUgaXMg
b25lLiBJZiB0aGVyZSdzIGEKKyAgICAgICAgbWlzbWF0Y2gsIGl0J3MgZGVlbWVkIGEgY2FzZSBv
ZiB0aGlyZC1wYXJ0eSBDTkFNRSBjbG9ha2luZyBhbmQgYW55IGNvb2tpZXMKKyAgICAgICAgc2V0
IGluIHRoZSByZXNwb25zZSBvZiB0aGUgY2xvYWtlZCBzdWJyZXNvdXJjZSBsb2FkIHdpbGwgaGF2
ZSB0aGVpciBleHBpcnkKKyAgICAgICAgY2FwcGVkIHRvIDcgZGF5cy4KKworICAgICAgICBUaGUg
Y2FzZXMgZm9yIGNhcHBpbmcgZXhwaXJ5IGxvb2sgbGlrZSB0aGlzIChhbmQgYXJlIGJhY2tlZCBi
eSB0ZXN0IGNhc2VzKToKKworICAgICAgICBGaXJzdC1wYXJ0eSBob3N0ICB8IEZpcnN0LXBhcnR5
IHN1YmRvbWFpbiAgICAgIHwgQ2FwcGVkIGV4cGlyeQorICAgICAgICAtLS0tLS0tLS0tLS0tLS0t
LS18LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXwtLS0tLS0tLS0tLS0tLQorICAgICAgICBO
byBDTkFNRSBjbG9ha2luZyB8IE5vIENOQU1FIGNsb2FraW5nICAgICAgICAgIHwgTm8KKyAgICAg
ICAgTm8gQ05BTUUgY2xvYWtpbmcgfCBGaXJzdC1wYXJ0eSBDTkFNRSBjbG9ha2luZyB8IE5vCisg
ICAgICAgIE5vIENOQU1FIGNsb2FraW5nIHwgVGhpcmQtcGFydHkgQ05BTUUgY2xvYWtpbmcgfCBZ
ZXMKKyAgICAgICAgQ05BTUUgY2xvYWtpbmcgICAgfCBObyBDTkFNRSBjbG9ha2luZyAgICAgICAg
ICB8IE5vCisgICAgICAgIENOQU1FIGNsb2FraW5nICAgIHwgTWF0Y2hpbmcgQ05BTUUgY2xvYWtp
bmcgICAgfCBObworICAgICAgICBDTkFNRSBjbG9ha2luZyAgICB8IEZpcnN0LXBhcnR5IENOQU1F
IGNsb2FraW5nIHwgTm8KKyAgICAgICAgQ05BTUUgY2xvYWtpbmcgICAgfCBUaGlyZC1wYXJ0eSBD
TkFNRSBjbG9ha2luZyB8IFllcworCisgICAgICAgIFRoaXMgcGF0Y2ggbWFrZXMgdXNlIG9mIHR3
byBuZXcgQ0ZOZXR3b3JrIFNQSXMgb24gTlNVUkxTZXNzaW9uVGFzazoKKyAgICAgICAgLSAgX2Nv
b2tpZVRyYW5zZm9ybUNhbGxiYWNrCisgICAgICAgIC0gX3Jlc29sdmVkQ05BTUVDaGFpbgorCisg
ICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpOZXR3b3JrUHJvY2Vzczo6cmVzZXRQYXJhbWV0ZXJzVG9EZWZhdWx0VmFsdWVzKToKKyAg
ICAgICAgICAgIFRoaXMgcmVzZXQgbm93IGNvdmVycyB0aGUgbmV3IENOQU1FIGNsb2FraW5nIG1l
bWJlciB2YXJpYWJsZXMuCisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpzZXRJc1J1
bm5pbmdSZXNvdXJjZUxvYWRTdGF0aXN0aWNzVGVzdCk6CisgICAgICAgICAgICBUaGlzIGZ1bmN0
aW9uIG5vdyBhbHNvIGVuYWJsZXMgdGhlIENOQU1FIGNsb2FraW5nIGNvZGUuCisgICAgICAgIChX
ZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpzZXRGaXJzdFBhcnR5SG9zdENOQU1FRG9tYWluRm9yVGVz
dGluZyk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpzZXRUaGlyZFBhcnR5Q05B
TUVEb21haW5Gb3JUZXN0aW5nKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJv
Y2Vzcy5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLm1lc3NhZ2Vz
LmluOgorICAgICAgICAgICAgTmV3IElQQyB0byBmb3J3YXJkIHRlc3QgY29uZmlndXJhdGlvbi4K
KyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5jcHA6CisgICAgICAgIChX
ZWJLaXQ6Ok5ldHdvcmtTZXNzaW9uOjpOZXR3b3JrU2Vzc2lvbik6CisgICAgICAgICAgICBOb3cg
cGlja3MgdXAgdGhlIGZsYWcgZm9yIHRoaXMgZmVhdHVyZS4KKyAgICAgICAgKFdlYktpdDo6TmV0
d29ya1Nlc3Npb246OnNldEZpcnN0UGFydHlIb3N0Q05BTUVEb21haW4pOgorICAgICAgICAgICAg
VGhpcyBpcyBjYWxsZWQgZnJvbSBOZXR3b3JrRGF0YVRhc2tDb2NvYTo6dXBkYXRlRmlyc3RQYXJ0
eUluZm9Gb3JUYXNrQW5kU2Vzc2lvbigpCisgICAgICAgICAgICB3aGVuIHRoZXJlIGlzIENOQU1F
IGNsb2FraW5nIGZvciB0aGUgZmlyc3QgcGFydHkgaG9zdC4gVGhpcyBpcyBkb25lIHRvIG1ha2Ug
aXQKKyAgICAgICAgICAgIHBvc3NpYmxlIHRvIG5vdCBjYXAgdGhlIGV4cGlyeSBvZiBjb29raWVz
IGlmIHN1YnNlcXVlbnQgc3VicmVzb3VyY2UgbG9hZHMgaGF2ZQorICAgICAgICAgICAgQ05BTUUg
Y2xvYWtpbmcgdGhhdCBtYXRjaGVzIHRoZSBmaXJzdC1wYXJ0eSBob3N0J3MgQ05BTUUgY2xvYWtp
bmcuIFRoaXMgaGFwcGVucworICAgICAgICAgICAgd2hlbiB3aG9sZSB3ZWJzaXRlcyBhcmUgaG9z
dGVkIG9uIGVkZ2UgbmV0d29ya3MuCisgICAgICAgICAgICBUaGlzIGZ1bmN0aW9uIGlzIGFsc28g
dXNlZCBieSB0aGUgdGVzdCBpbmZyYXN0cnVjdHVyZSB0byBtb2NrIHRoZSBETlMgcmVzb2x1dGlv
bgorICAgICAgICAgICAgZm9yIGEgZmlyc3QtcGFydHkgaG9zdC4KKyAgICAgICAgKFdlYktpdDo6
TmV0d29ya1Nlc3Npb246OmZpcnN0UGFydHlIb3N0Q05BTUVEb21haW4pOgorICAgICAgICAgICAg
VGhpcyByZXR1cm5zIGFueSBjYXB0dXJlZCBDTkFNRSBjbG9ha2luZyBmb3IgYSBob3N0LCBpZiB0
aGVyZSBpcyBvbmUuCisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtTZXNzaW9uOjpyZXNldENOQU1F
RG9tYWluRGF0YSk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24uaDoK
KyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Nlc3Npb246OnNldENOQU1FQ2xvYWtpbmdNaXRpZ2F0
aW9uRW5hYmxlZCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtTZXNzaW9uOjpjbmFtZUNsb2Fr
aW5nTWl0aWdhdGlvbkVuYWJsZWQgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrU2Vz
c2lvbjo6c2V0VGhpcmRQYXJ0eUNOQU1FRG9tYWluRm9yVGVzdGluZyk6CisgICAgICAgICAgICBU
aGlzIHRlc3QgZnVuY3Rpb25zIGFsbG93cyB1cyB0byBtb2NrIHRoZSBETlMgcmVzb2x1dGlvbiBm
b3IgYSBzdWJyZXNvdXJjZS4KKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Nlc3Npb246OnRoaXJk
UGFydHlDTkFNRURvbWFpbkZvclRlc3RpbmcgY29uc3QpOgorICAgICAgICAqIE5ldHdvcmtQcm9j
ZXNzL2NvY29hL05ldHdvcmtEYXRhVGFza0NvY29hLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nl
c3MvY29jb2EvTmV0d29ya0RhdGFUYXNrQ29jb2EubW06CisgICAgICAgIChXZWJLaXQ6Omhhc0NO
QU1FQW5kQ29va2llVHJhbnNmb3JtU1BJKToKKyAgICAgICAgKFdlYktpdDo6bGFzdENOQU1FRG9t
YWluKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0RhdGFUYXNrQ29jb2E6OnVwZGF0ZUZpcnN0
UGFydHlJbmZvRm9yU2Vzc2lvbik6CisgICAgICAgICAgICBUaGlzIGlzIGNhbGxlZCBieSBOZXR3
b3JrRGF0YVRhc2tDb2NvYTo6ZGlkUmVjZWl2ZVJlc3BvbnNlKCkgdG8gY2FwdHVyZSBhbnkKKyAg
ICAgICAgICAgIENOQU1FIGNsb2FraW5nIGZvciB0aGUgZmlyc3QtcGFydHkgaG9zdC4KKyAgICAg
ICAgKFdlYktpdDo6TmV0d29ya0RhdGFUYXNrQ29jb2E6OmFwcGx5Q29va2llUG9saWN5Rm9yVGhp
cmRQYXJ0eUNOQU1FQ2xvYWtpbmcpOgorICAgICAgICAgICAgVGhpcyBpcyBjYWxsZWQgaW4gdGhl
IE5ldHdvcmtEYXRhVGFza0NvY29hIGNvbnN0cnVjdG9yIGFuZCBpbgorICAgICAgICAgICAgTmV0
d29ya0RhdGFUYXNrQ29jb2E6OndpbGxQZXJmb3JtSFRUUFJlZGlyZWN0aW9uKCkgYW5kIHNldHMg
dGhlIG5ldworICAgICAgICAgICAgX2Nvb2tpZVRyYW5zZm9ybUNhbGxiYWNrIFNQSSBwcm9wZXJ0
eSBvbiB0aGUgdGFzayB3aGljaCB3aWxsIGNoZWNrIHRoZQorICAgICAgICAgICAgcmVzcG9uc2Ug
Zm9yIGFueSB0aGlyZC1wYXJ0eSBDTkFNRSBjbG9ha2luZyBhbmQgY2FwIHRoZSBleHBpcnkgb2Yg
aW5jb21pbmcKKyAgICAgICAgICAgIGNvb2tpZXMgYWNjb3JkaW5nbHkuCisgICAgICAgIChXZWJL
aXQ6Ok5ldHdvcmtEYXRhVGFza0NvY29hOjpOZXR3b3JrRGF0YVRhc2tDb2NvYSk6CisgICAgICAg
ICAgICBUaGlzIG5vdyBjYWxscworICAgICAgICAgICAgTmV0d29ya0RhdGFUYXNrQ29jb2E6OmFw
cGx5Q29va2llUG9saWN5Rm9yVGhpcmRQYXJ0eUNOQU1FQ2xvYWtpbmcoKS4KKyAgICAgICAgKFdl
YktpdDo6TmV0d29ya0RhdGFUYXNrQ29jb2E6OmRpZFJlY2VpdmVSZXNwb25zZSk6CisgICAgICAg
ICAgICBUaGlzIG5vdyBjYWxscworICAgICAgICAgICAgTmV0d29ya0RhdGFUYXNrQ29jb2E6OnVw
ZGF0ZUZpcnN0UGFydHlJbmZvRm9yVGFza0FuZFNlc3Npb24oKS4KKyAgICAgICAgKFdlYktpdDo6
TmV0d29ya0RhdGFUYXNrQ29jb2E6OndpbGxQZXJmb3JtSFRUUFJlZGlyZWN0aW9uKToKKyAgICAg
ICAgICAgIFRoaXMgbm93IGNhbGxzCisgICAgICAgICAgICBOZXR3b3JrRGF0YVRhc2tDb2NvYTo6
YXBwbHlDb29raWVQb2xpY3lGb3JUaGlyZFBhcnR5Q05BTUVDbG9ha2luZygpLgorICAgICAgICAq
IFNoYXJlZC9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGFyYW1ldGVycy5oOgorICAgICAgICAgICAg
Tm93IGhvbGRzIGEgV2ViQ29yZTo6Q05BTUVDbG9ha2luZ01pdGlnYXRpb25FbmFibGVkIGZsYWcu
CisgICAgICAgIChXZWJLaXQ6OlJlc291cmNlTG9hZFN0YXRpc3RpY3NQYXJhbWV0ZXJzOjplbmNv
ZGUgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGFyYW1l
dGVyczo6ZGVjb2RlKToKKyAgICAgICAgKiBTaGFyZWQvV2ViUHJlZmVyZW5jZXMueWFtbDoKKyAg
ICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tXZWJzaXRlRGF0YVN0b3JlUmVmLmNwcDoKKyAgICAg
ICAgKFdLV2Vic2l0ZURhdGFTdG9yZVNldFJlc291cmNlTG9hZFN0YXRpc3RpY3NGaXJzdFBhcnR5
SG9zdENOQU1FRG9tYWluRm9yVGVzdGluZyk6CisgICAgICAgICAgICBVc2VkIHRvIG1vY2sgQ05B
TUUgcmVzb2x1dGlvbiBkYXRhLgorICAgICAgICAoV0tXZWJzaXRlRGF0YVN0b3JlU2V0UmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc1RoaXJkUGFydHlDTkFNRURvbWFpbkZvclRlc3RpbmcpOgorICAgICAg
ICAgICAgVXNlZCB0byBtb2NrIENOQU1FIHJlc29sdXRpb24gZGF0YS4KKyAgICAgICAgKiBVSVBy
b2Nlc3MvQVBJL0MvV0tXZWJzaXRlRGF0YVN0b3JlUmVmLmg6CisgICAgICAgICogVUlQcm9jZXNz
L05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdv
cmtQcm9jZXNzUHJveHk6OnNldEZpcnN0UGFydHlIb3N0Q05BTUVEb21haW5Gb3JUZXN0aW5nKToK
KyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3NQcm94eTo6c2V0VGhpcmRQYXJ0eUNOQU1F
RG9tYWluRm9yVGVzdGluZyk6CisgICAgICAgICogVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1By
b2Nlc3NQcm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjplbnN1cmVOZXR3b3JrUHJvY2Vzcyk6Cisg
ICAgICAgICAgICBOb3cgaGFuZGxlcyB0aGUgV2ViQ29yZTo6Q05BTUVDbG9ha2luZ01pdGlnYXRp
b25FbmFibGVkIGZsYWcuCisgICAgICAgICogVUlQcm9jZXNzL1dlYnNpdGVEYXRhL0NvY29hL1dl
YnNpdGVEYXRhU3RvcmVDb2NvYS5tbToKKyAgICAgICAgKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9y
ZTo6cGxhdGZvcm1TZXROZXR3b3JrUGFyYW1ldGVycyk6CisgICAgICAgICAgICBOb3cgaGFuZGxl
cyB0aGUgV2ViQ29yZTo6Q05BTUVDbG9ha2luZ01pdGlnYXRpb25FbmFibGVkIGZsYWcuCisgICAg
ICAgICogVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjpzZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRmly
c3RQYXJ0eUhvc3RDTkFNRURvbWFpbkZvclRlc3RpbmcpOgorICAgICAgICAoV2ViS2l0OjpXZWJz
aXRlRGF0YVN0b3JlOjpzZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzVGhpcmRQYXJ0eUNOQU1FRG9t
YWluRm9yVGVzdGluZyk6CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6OnBhcmFt
ZXRlcnMpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3Jl
Lmg6CisKIDIwMjAtMDgtMDUgIFBlciBBcm5lIFZvbGxhbiAgPHB2b2xsYW5AYXBwbGUuY29tPgog
CiAgICAgICAgIFtDb2NvYV0gU2FuZGJveCBleHRlbnNpb24gdG9rZW4gbm90IGNsZWFyZWQgZnJv
bSBtZW1vcnkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtSGF2ZS5oIGIvU291
cmNlL1dURi93dGYvUGxhdGZvcm1IYXZlLmgKaW5kZXggMTdhYjgyNGRlNDYyNGFiNDE0Yjg0YjEx
ZjNiOTBiZWMzYzg1MmNkYS4uMDZiNGRlNzQ0MmZkMWRjYjA5YTc5MTFlZDhkODFlZDA4NGE5NTRk
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvUGxhdGZvcm1IYXZlLmgKKysrIGIvU291cmNl
L1dURi93dGYvUGxhdGZvcm1IYXZlLmgKQEAgLTcwNywzICs3MDcsMTAgQEAKICNpZiAoUExBVEZP
Uk0oTUFDKSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDExMDAwMCkKICNk
ZWZpbmUgSEFWRV9OU1RBQkxFVklFV1NUWUxFIDEKICNlbmRpZgorCisjaWYgKFBMQVRGT1JNKE1B
QykgJiYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMTAwMDApIFwKKyAgICB8
fCAoKFBMQVRGT1JNKElPUykgfHwgUExBVEZPUk0oTUFDQ0FUQUxZU1QpKSAmJiBfX0lQSE9ORV9P
U19WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxNDAwMDApIFwKKyAgICB8fCAoUExBVEZPUk0oV0FU
Q0hPUykgJiYgX19XQVRDSF9PU19WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSA3MDAwMCkgXAorICAg
IHx8IChQTEFURk9STShBUFBMRVRWKSAmJiBfX1RWX09TX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49
IDE0MDAwMCkKKyNkZWZpbmUgSEFWRV9DRk5FVFdPUktfQ05BTUVfQU5EX0NPT0tJRV9UUkFOU0ZP
Uk1fU1BJIDEKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUEFML3BhbC9zcGkv
Y2YvQ0ZOZXR3b3JrU1BJLmggYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL3NwaS9jZi9DRk5ldHdv
cmtTUEkuaAppbmRleCAzZTJhN2EzNDFlZTZhYmE3MWVmYjNiZGIwZGRiMTZhMDAzNWM5OGJmLi40
MGQ4YmE5ZjE5ZjUzOTM3ZDZkZjI5Mjk5MzAzMzg4ZjI4ZTMzMjcwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9QQUwvcGFsL3NwaS9jZi9DRk5ldHdvcmtTUEkuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9QQUwvcGFsL3NwaS9jZi9DRk5ldHdvcmtTUEkuaApAQCAtMjk2LDYgKzI5NiwxMyBAQCBl
bnVtIDogTlNVSW50ZWdlciB7CiAgICAgTlNIVFRQQ29va2llQWNjZXB0UG9saWN5RXhjbHVzaXZl
bHlGcm9tTWFpbkRvY3VtZW50RG9tYWluID0gMywKIH07CiAKKyNpZiBIQVZFKENGTkVUV09SS19D
TkFNRV9BTkRfQ09PS0lFX1RSQU5TRk9STSkKK0BpbnRlcmZhY2UgTlNVUkxTZXNzaW9uVGFzayAo
KQorQHByb3BlcnR5IChub25hdG9taWMsIGNvcHksIG51bGxhYmxlKSBOU0FycmF5PE5TSFRUUENv
b2tpZSo+KiAoXl9jb29raWVUcmFuc2Zvcm1DYWxsYmFjaykoTlNBcnJheTxOU0hUVFBDb29raWUq
PiogY29va2llcyk7CitAcHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHksIG51bGxhYmxlKSBO
U0FycmF5PE5TU3RyaW5nKj4qIF9yZXNvbHZlZENOQU1FQ2hhaW47CitAZW5kCisjZW5kaWYKKwog
I2VuZGlmIC8vIGRlZmluZWQoX19PQkpDX18pCiAKICNlbmRpZiAvLyBVU0UoQVBQTEVfSU5URVJO
QUxfU0RLKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5ncy55YW1sIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5ncy55YW1sCmluZGV4IDIyYzlmNmFiMjMwMDFhMjkx
YzVkMzQ1N2MyMTRiM2UyMDU1OWZjODguLmQ0Y2ZiY2VkODM3NjMyOTgxNTQ2M2JjNjZmZjVmMjJh
MTIxZjAwNmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3MueWFtbAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdzLnlhbWwKQEAgLTkyOCw2ICs5MjgsOSBA
QCBpc0ZpcnN0UGFydHlXZWJzaXRlRGF0YVJlbW92YWxSZXByb1Rlc3RpbmdFbmFibGVkOgogaXNT
YW1lU2l0ZVN0cmljdEVuZm9yY2VtZW50RW5hYmxlZDoKICAgaW5pdGlhbDogZmFsc2UKIAoraXND
TkFNRUNsb2FraW5nTWl0aWdhdGlvbkVuYWJsZWQ6CisgIGluaXRpYWw6IGZhbHNlCisKIGlzTG9n
Z2VkSW5BUElFbmFibGVkOgogICBpbml0aWFsOiBmYWxzZQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtTdG9yYWdlU2Vzc2lvbi5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtTdG9yYWdlU2Vzc2lvbi5jcHAKaW5k
ZXggNjg0N2M0ZjVlOTQ5YmYwN2E5Y2JlZmRjZGEzMGI0MjVhY2I5ZmZiNi4uYzUzMzIxZTFjYmEz
ZGQ5NzRmOTcwYzc1OTEwNmE3ZjgxN2UyMGI3OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9OZXR3b3JrU3RvcmFnZVNlc3Npb24uY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvTmV0d29ya1N0b3JhZ2VTZXNzaW9uLmNwcApAQCAtNzIs
NiArNzIsMTEgQEAgdm9pZCBOZXR3b3JrU3RvcmFnZVNlc3Npb246OnNldFJlc291cmNlTG9hZFN0
YXRpc3RpY3NFbmFibGVkKGJvb2wgZW5hYmxlZCkKIHsKICAgICBtX2lzUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc0VuYWJsZWQgPSBlbmFibGVkOwogfQorCitib29sIE5ldHdvcmtTdG9yYWdlU2Vzc2lv
bjo6cmVzb3VyY2VMb2FkU3RhdGlzdGljc0VuYWJsZWQoKSBjb25zdAoreworICAgIHJldHVybiBt
X2lzUmVzb3VyY2VMb2FkU3RhdGlzdGljc0VuYWJsZWQ7Cit9CiAjZW5kaWYKIAogYm9vbCBOZXR3
b3JrU3RvcmFnZVNlc3Npb246OnNob3VsZEJsb2NrVGhpcmRQYXJ0eUNvb2tpZXMoY29uc3QgUmVn
aXN0cmFibGVEb21haW4mIHJlZ2lzdHJhYmxlRG9tYWluKSBjb25zdApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9OZXR3b3JrU3RvcmFnZVNlc3Npb24uaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvTmV0d29ya1N0b3JhZ2VTZXNzaW9uLmgKaW5k
ZXggMmM2MTVmNGMyYzc2Mjc3MzJiMGExMTJjNWYxY2M3ZjExMGU0NzQ1MS4uOWMyNmFlMmVhZWJm
YzlmY2Y2YmI0YWM4ZDM4M2NlZGZjNDEwZDU5MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9OZXR3b3JrU3RvcmFnZVNlc3Npb24uaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtTdG9yYWdlU2Vzc2lvbi5oCkBAIC04NSw2ICs4
NSw3IEBAIGVudW0gY2xhc3MgSW5jbHVkZVNlY3VyZUNvb2tpZXMgOiBib29sOwogZW51bSBjbGFz
cyBJbmNsdWRlSHR0cE9ubHlDb29raWVzIDogYm9vbDsKIGVudW0gY2xhc3MgVGhpcmRQYXJ0eUNv
b2tpZUJsb2NraW5nTW9kZSA6IHVpbnQ4X3QgeyBBbGwsIEFsbEV4Y2VwdEJldHdlZW5BcHBCb3Vu
ZERvbWFpbnMsIEFsbE9uU2l0ZXNXaXRob3V0VXNlckludGVyYWN0aW9uLCBPbmx5QWNjb3JkaW5n
VG9QZXJEb21haW5Qb2xpY3kgfTsKIGVudW0gY2xhc3MgU2FtZVNpdGVTdHJpY3RFbmZvcmNlbWVu
dEVuYWJsZWQgOiBib29sIHsgWWVzLCBObyB9OworZW51bSBjbGFzcyBDTkFNRUNsb2FraW5nTWl0
aWdhdGlvbkVuYWJsZWQgOiBib29sIHsgWWVzLCBObyB9OwogZW51bSBjbGFzcyBGaXJzdFBhcnR5
V2Vic2l0ZURhdGFSZW1vdmFsTW9kZSA6IHVpbnQ4X3QgeyBBbGxCdXRDb29raWVzLCBOb25lLCBB
bGxCdXRDb29raWVzTGl2ZU9uVGVzdGluZ1RpbWVvdXQsIEFsbEJ1dENvb2tpZXNSZXByb1Rlc3Rp
bmdUaW1lb3V0IH07CiBlbnVtIGNsYXNzIFNob3VsZEFza0lUUCA6IGJvb2wgeyBObywgWWVzIH07
CiAKQEAgLTE4NCwxMSArMTg1LDE1IEBAIHB1YmxpYzoKIAogI2lmIEVOQUJMRShSRVNPVVJDRV9M
T0FEX1NUQVRJU1RJQ1MpCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzRW5hYmxlZChib29sKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBib29sIHJlc291cmNl
TG9hZFN0YXRpc3RpY3NFbmFibGVkKCkgY29uc3Q7CiAgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBz
aG91bGRCbG9ja0Nvb2tpZXMoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgT3B0aW9uYWw8RnJhbWVJ
ZGVudGlmaWVyPiwgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+LCBTaG91bGRSZWxheFRoaXJkUGFy
dHlDb29raWVCbG9ja2luZykgY29uc3Q7CiAgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBzaG91bGRC
bG9ja0Nvb2tpZXMoY29uc3QgVVJMJiBmaXJzdFBhcnR5Rm9yQ29va2llcywgY29uc3QgVVJMJiBy
ZXNvdXJjZSwgT3B0aW9uYWw8RnJhbWVJZGVudGlmaWVyPiwgT3B0aW9uYWw8UGFnZUlkZW50aWZp
ZXI+LCBTaG91bGRSZWxheFRoaXJkUGFydHlDb29raWVCbG9ja2luZykgY29uc3Q7CiAgICAgV0VC
Q09SRV9FWFBPUlQgYm9vbCBzaG91bGRCbG9ja1RoaXJkUGFydHlDb29raWVzKGNvbnN0IFJlZ2lz
dHJhYmxlRG9tYWluJikgY29uc3Q7CiAgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBzaG91bGRCbG9j
a1RoaXJkUGFydHlDb29raWVzQnV0S2VlcEZpcnN0UGFydHlDb29raWVzRm9yKGNvbnN0IFJlZ2lz
dHJhYmxlRG9tYWluJikgY29uc3Q7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRBbGxDb29r
aWVzVG9TYW1lU2l0ZVN0cmljdChjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoKT4mJik7CisjaWYgUExBVEZPUk0oQ09DT0EpCisgICAgV0VCQ09SRV9FWFBP
UlQgc3RhdGljIE5TSFRUUENvb2tpZSAqY2FwRXhwaXJ5T2ZQZXJzaXN0ZW50Q29va2llKE5TSFRU
UENvb2tpZSAqLCBTZWNvbmRzIGNhcCk7CisjZW5kaWYKICAgICBXRUJDT1JFX0VYUE9SVCBib29s
IGhhc0hhZFVzZXJJbnRlcmFjdGlvbkFzRmlyc3RQYXJ0eShjb25zdCBSZWdpc3RyYWJsZURvbWFp
biYpIGNvbnN0OwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0UHJldmFsZW50RG9tYWluc1Rv
QmxvY2tBbmREZWxldGVDb29raWVzRm9yKGNvbnN0IFZlY3RvcjxSZWdpc3RyYWJsZURvbWFpbj4m
KTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldFByZXZhbGVudERvbWFpbnNUb0Jsb2NrQnV0
S2VlcENvb2tpZXNGb3IoY29uc3QgVmVjdG9yPFJlZ2lzdHJhYmxlRG9tYWluPiYpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9OZXR3b3JrU3RvcmFn
ZVNlc3Npb25Db2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2Ev
TmV0d29ya1N0b3JhZ2VTZXNzaW9uQ29jb2EubW0KaW5kZXggY2I5NmQ0YWFmZDVhNGZhMDZkNmE3
MjIxMDMyMDI3OThkOWEzYTY1Ny4uYzI3NmNmMDZjMTQzZDYxOTAyNmNmZmQyNDMxMmU2YTc2Yzgz
NTJjOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9O
ZXR3b3JrU3RvcmFnZVNlc3Npb25Db2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL2NvY29hL05ldHdvcmtTdG9yYWdlU2Vzc2lvbkNvY29hLm1tCkBAIC0zMDgsNiAr
MzA4LDE3IEBAIE5TQXJyYXkgKk5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6aHR0cENvb2tpZXNGb3JV
UkwoQ0ZIVFRQQ29va2llU3RvcmFnZVJlZiBjb29raWVTCiAgICAgcmV0dXJuIFdlYkNvcmU6OmNv
b2tpZXNGb3JVUkwobnNDb29raWVTdG9yYWdlLmdldCgpLCB1cmwsIGZpcnN0UGFydHksIHNhbWVT
aXRlSW5mbyk7CiB9CiAKK05TSFRUUENvb2tpZSAqTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpjYXBF
eHBpcnlPZlBlcnNpc3RlbnRDb29raWUoTlNIVFRQQ29va2llICpjb29raWUsIFNlY29uZHMgY2Fw
KQoreworICAgIGlmICghW2Nvb2tpZSBpc1Nlc3Npb25Pbmx5XSAmJiAoIWNvb2tpZS5leHBpcmVz
RGF0ZSB8fCBjb29raWUuZXhwaXJlc0RhdGUudGltZUludGVydmFsU2luY2VOb3cgPiBjYXAuc2Vj
b25kcygpKSkgeworICAgICAgICBhdXRvIHByb3BlcnRpZXMgPSBhZG9wdE5TKFtbY29va2llIHBy
b3BlcnRpZXNdIG11dGFibGVDb3B5XSk7CisgICAgICAgIGF1dG8gZGF0ZSA9IGFkb3B0TlMoW1tO
U0RhdGUgYWxsb2NdIGluaXRXaXRoVGltZUludGVydmFsU2luY2VOb3c6Y2FwLnNlY29uZHMoKV0p
OworICAgICAgICBbcHJvcGVydGllcyBzZXRPYmplY3Q6ZGF0ZS5nZXQoKSBmb3JLZXk6TlNIVFRQ
Q29va2llRXhwaXJlc107CisgICAgICAgIGNvb2tpZSA9IFtOU0hUVFBDb29raWUgY29va2llV2l0
aFByb3BlcnRpZXM6cHJvcGVydGllcy5nZXQoKV07CisgICAgfQorICAgIHJldHVybiBjb29raWU7
Cit9CisKIE5TQXJyYXkgKk5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6Y29va2llc0ZvclVSTChjb25z
dCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYgc2FtZVNpdGVJbmZvLCBjb25z
dCBVUkwmIHVybCwgT3B0aW9uYWw8RnJhbWVJZGVudGlmaWVyPiBmcmFtZUlELCBPcHRpb25hbDxQ
YWdlSWRlbnRpZmllcj4gcGFnZUlELCBTaG91bGRBc2tJVFAgc2hvdWxkQXNrSVRQLCBTaG91bGRS
ZWxheFRoaXJkUGFydHlDb29raWVCbG9ja2luZyBzaG91bGRSZWxheFRoaXJkUGFydHlDb29raWVC
bG9ja2luZykgY29uc3QKIHsKICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQpA
QCAtNDE3LDE1ICs0MjgsOSBAQCBzdGF0aWMgTlNIVFRQQ29va2llICpwYXJzZURPTUNvb2tpZShT
dHJpbmcgY29va2llU3RyaW5nLCBOU1VSTCogY29va2llVVJMLCBPcHRpbwogICAgIGlmIChbY29v
a2llIGlzSFRUUE9ubHldKQogICAgICAgICByZXR1cm4gbmlsOwogCi0gICAgLy8gQ2FwIGxpZmV0
aW1lIG9mIHBlcnNpc3RlbnQsIGNsaWVudC1zaWRlIGNvb2tpZXMgdG8gYSB3ZWVrLgotICAgIGlm
IChjYXBwZWRMaWZldGltZSAmJiAhW2Nvb2tpZSBpc1Nlc3Npb25Pbmx5XSkgewotICAgICAgICBp
ZiAoIWNvb2tpZS5leHBpcmVzRGF0ZSB8fCBjb29raWUuZXhwaXJlc0RhdGUudGltZUludGVydmFs
U2luY2VOb3cgPiBjYXBwZWRMaWZldGltZS0+c2Vjb25kcygpKSB7Ci0gICAgICAgICAgICBhdXRv
IHByb3BlcnRpZXMgPSBhZG9wdE5TKFtbY29va2llIHByb3BlcnRpZXNdIG11dGFibGVDb3B5XSk7
Ci0gICAgICAgICAgICBhdXRvIGRhdGVJbkFXZWVrID0gYWRvcHROUyhbW05TRGF0ZSBhbGxvY10g
aW5pdFdpdGhUaW1lSW50ZXJ2YWxTaW5jZU5vdzpjYXBwZWRMaWZldGltZS0+c2Vjb25kcygpXSk7
Ci0gICAgICAgICAgICBbcHJvcGVydGllcyBzZXRPYmplY3Q6ZGF0ZUluQVdlZWsuZ2V0KCkgZm9y
S2V5Ok5TSFRUUENvb2tpZUV4cGlyZXNdOwotICAgICAgICAgICAgcmV0dXJuIFtOU0hUVFBDb29r
aWUgY29va2llV2l0aFByb3BlcnRpZXM6cHJvcGVydGllcy5nZXQoKV07Ci0gICAgICAgIH0KLSAg
ICB9CisgICAgLy8gQ2FwIGxpZmV0aW1lIG9mIHBlcnNpc3RlbnQsIGNsaWVudC1zaWRlIGNvb2tp
ZXMuCisgICAgaWYgKGNhcHBlZExpZmV0aW1lKQorICAgICAgICByZXR1cm4gTmV0d29ya1N0b3Jh
Z2VTZXNzaW9uOjpjYXBFeHBpcnlPZlBlcnNpc3RlbnRDb29raWUoY29va2llLCAqY2FwcGVkTGlm
ZXRpbWUpOwogCiAgICAgcmV0dXJuIGNvb2tpZTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAKaW5kZXggNzkwODU3ZDU3NmIxNTQ0ZjMyYzMw
MDVjOGUzNzlhZTk4M2QzM2JhZS4uNTMyODM2MGYzOTAwNzc2Y2IzNDBmN2E3ZTIyNTQ4OWVjNGVi
ZGVhMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJv
Y2Vzcy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vz
cy5jcHAKQEAgLTgxNCw2ICs4MTQsOCBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpnZXRSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzRGF0YVN1bW1hcnkoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbgogdm9pZCBO
ZXR3b3JrUHJvY2Vzczo6cmVzZXRQYXJhbWV0ZXJzVG9EZWZhdWx0VmFsdWVzKFBBTDo6U2Vzc2lv
bklEIHNlc3Npb25JRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5k
bGVyKQogewogICAgIGlmIChhdXRvKiBuZXR3b3JrU2Vzc2lvbiA9IHRoaXMtPm5ldHdvcmtTZXNz
aW9uKHNlc3Npb25JRCkpIHsKKyAgICAgICAgbmV0d29ya1Nlc3Npb24tPnJlc2V0Q05BTUVEb21h
aW5EYXRhKCk7CisgICAgICAgIG5ldHdvcmtTZXNzaW9uLT5zZXRDTkFNRUNsb2FraW5nTWl0aWdh
dGlvbkVuYWJsZWQoV2ViQ29yZTo6Q05BTUVDbG9ha2luZ01pdGlnYXRpb25FbmFibGVkOjpObyk7
CiAgICAgICAgIGlmIChhdXRvKiByZXNvdXJjZUxvYWRTdGF0aXN0aWNzID0gbmV0d29ya1Nlc3Np
b24tPnJlc291cmNlTG9hZFN0YXRpc3RpY3MoKSkKICAgICAgICAgICAgIHJlc291cmNlTG9hZFN0
YXRpc3RpY3MtPnJlc2V0UGFyYW1ldGVyc1RvRGVmYXVsdFZhbHVlcyhXVEZNb3ZlKGNvbXBsZXRp
b25IYW5kbGVyKSk7CiAgICAgICAgIGVsc2UKQEAgLTg2Niw2ICs4NjgsNyBAQCB2b2lkIE5ldHdv
cmtQcm9jZXNzOjpzZXROb3RpZnlQYWdlc1doZW5EYXRhUmVjb3Jkc1dlcmVTY2FubmVkKFBBTDo6
U2Vzc2lvbklEIHNlcwogdm9pZCBOZXR3b3JrUHJvY2Vzczo6c2V0SXNSdW5uaW5nUmVzb3VyY2VM
b2FkU3RhdGlzdGljc1Rlc3QoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBib29sIHZhbHVlLCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgaWYg
KGF1dG8qIG5ldHdvcmtTZXNzaW9uID0gdGhpcy0+bmV0d29ya1Nlc3Npb24oc2Vzc2lvbklEKSkg
eworICAgICAgICBuZXR3b3JrU2Vzc2lvbi0+c2V0Q05BTUVDbG9ha2luZ01pdGlnYXRpb25FbmFi
bGVkKFdlYkNvcmU6OkNOQU1FQ2xvYWtpbmdNaXRpZ2F0aW9uRW5hYmxlZDo6WWVzKTsKICAgICAg
ICAgaWYgKGF1dG8qIHJlc291cmNlTG9hZFN0YXRpc3RpY3MgPSBuZXR3b3JrU2Vzc2lvbi0+cmVz
b3VyY2VMb2FkU3RhdGlzdGljcygpKQogICAgICAgICAgICAgcmVzb3VyY2VMb2FkU3RhdGlzdGlj
cy0+c2V0SXNSdW5uaW5nVGVzdCh2YWx1ZSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwog
ICAgICAgICBlbHNlCkBAIC0xMzc5LDYgKzEzODIsMjAgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6
c2V0VG9TYW1lU2l0ZVN0cmljdENvb2tpZXNGb3JUZXN0aW5nKFBBTDo6U2Vzc2lvbklEIHNlc3Np
b24KICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKICAgICB9CiB9CisKK3ZvaWQgTmV0d29y
a1Byb2Nlc3M6OnNldEZpcnN0UGFydHlIb3N0Q05BTUVEb21haW5Gb3JUZXN0aW5nKFBBTDo6U2Vz
c2lvbklEIHNlc3Npb25JRCwgU3RyaW5nJiYgZmlyc3RQYXJ0eUhvc3QsIFdlYkNvcmU6OlJlZ2lz
dHJhYmxlRG9tYWluJiYgY25hbWVEb21haW4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBj
b21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBpZiAoYXV0byogbmV0d29ya1Nlc3Npb24gPSB0aGlz
LT5uZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQpKQorICAgICAgICBuZXR3b3JrU2Vzc2lvbi0+c2V0
Rmlyc3RQYXJ0eUhvc3RDTkFNRURvbWFpbihXVEZNb3ZlKGZpcnN0UGFydHlIb3N0KSwgV1RGTW92
ZShjbmFtZURvbWFpbikpOworICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7Cit9CisKK3ZvaWQgTmV0
d29ya1Byb2Nlc3M6OnNldFRoaXJkUGFydHlDTkFNRURvbWFpbkZvclRlc3RpbmcoUEFMOjpTZXNz
aW9uSUQgc2Vzc2lvbklELCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYmIGRvbWFpbiwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIGlmIChh
dXRvKiBuZXR3b3JrU2Vzc2lvbiA9IHRoaXMtPm5ldHdvcmtTZXNzaW9uKHNlc3Npb25JRCkpCisg
ICAgICAgIG5ldHdvcmtTZXNzaW9uLT5zZXRUaGlyZFBhcnR5Q05BTUVEb21haW5Gb3JUZXN0aW5n
KFdURk1vdmUoZG9tYWluKSk7CisgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKK30KICNlbmRpZiAv
LyBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQogCiB2b2lkIE5ldHdvcmtQcm9jZXNz
OjpzZXRBZENsaWNrQXR0cmlidXRpb25EZWJ1Z01vZGUoYm9vbCBkZWJ1Z01vZGUpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmggYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmgKaW5kZXggNGRmYTE0Yzg3
ODNkYTIyNmMzMjgwNDBhMzJkNTljNWE1OTM3MDczOS4uZjIzZmQ1ODBlZjU0Y2FkZjgwZjQ2ODM2
NjU2ZmIyM2ZkNGRkZjJmYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrUHJvY2Vzcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0
d29ya1Byb2Nlc3MuaApAQCAtMjczLDYgKzI3Myw4IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldFNo
b3VsZEVuYmxlU2FtZVNpdGVTdHJpY3RFbmZvcmNlbWVudEZvclRlc3RpbmcoUEFMOjpTZXNzaW9u
SUQsIFdlYkNvcmU6OlNhbWVTaXRlU3RyaWN0RW5mb3JjZW1lbnRFbmFibGVkLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKCk+JiYpOwogICAgIHZvaWQgc2V0Rmlyc3RQYXJ0eVdlYnNpdGVEYXRhUmVt
b3ZhbE1vZGVGb3JUZXN0aW5nKFBBTDo6U2Vzc2lvbklELCBXZWJDb3JlOjpGaXJzdFBhcnR5V2Vi
c2l0ZURhdGFSZW1vdmFsTW9kZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKICAgICB2
b2lkIHNldFRvU2FtZVNpdGVTdHJpY3RDb29raWVzRm9yVGVzdGluZyhQQUw6OlNlc3Npb25JRCwg
Y29uc3QgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KCk+JiYpOworICAgIHZvaWQgc2V0Rmlyc3RQYXJ0eUhvc3RDTkFNRURvbWFpbkZvclRlc3Rpbmco
UEFMOjpTZXNzaW9uSUQsIFN0cmluZyYmIGZpcnN0UGFydHlIb3N0LCBXZWJDb3JlOjpSZWdpc3Ry
YWJsZURvbWFpbiYmIGNuYW1lRG9tYWluLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwor
ICAgIHZvaWQgc2V0VGhpcmRQYXJ0eUNOQU1FRG9tYWluRm9yVGVzdGluZyhQQUw6OlNlc3Npb25J
RCwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgp
PiYmKTsKICNlbmRpZgogCiAgICAgdm9pZCBzZXRBZENsaWNrQXR0cmlidXRpb25EZWJ1Z01vZGUo
Ym9vbCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQ
cm9jZXNzLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
UHJvY2Vzcy5tZXNzYWdlcy5pbgppbmRleCA3MDIyMjg1ZTM2ODg1ZGU4NmYyZGFmNjg4OGIwMjQ3
Mjk5MzVjZjY0Li4wMDJlY2RiODMzYjI5NDFhZTg2MTNmYTY0ZjAxZGY4OTg5NmRmMzQ2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLm1lc3Nh
Z2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3Mu
bWVzc2FnZXMuaW4KQEAgLTE0OCw2ICsxNDgsOCBAQCBtZXNzYWdlcyAtPiBOZXR3b3JrUHJvY2Vz
cyBMZWdhY3lSZWNlaXZlciB7CiAgICAgU2V0U2hvdWxkRW5ibGVTYW1lU2l0ZVN0cmljdEVuZm9y
Y2VtZW50Rm9yVGVzdGluZyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGVudW06Ym9vbCBXZWJD
b3JlOjpTYW1lU2l0ZVN0cmljdEVuZm9yY2VtZW50RW5hYmxlZCBlbmFibGVkKSAtPiAoKSBBc3lu
YwogICAgIFNldEZpcnN0UGFydHlXZWJzaXRlRGF0YVJlbW92YWxNb2RlRm9yVGVzdGluZyhQQUw6
OlNlc3Npb25JRCBzZXNzaW9uSUQsIGVudW06dWludDhfdCBXZWJDb3JlOjpGaXJzdFBhcnR5V2Vi
c2l0ZURhdGFSZW1vdmFsTW9kZSBtb2RlKSAtPiAoKSBBc3luYwogICAgIFNldFRvU2FtZVNpdGVT
dHJpY3RDb29raWVzRm9yVGVzdGluZyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFdlYkNvcmU6
OlJlZ2lzdHJhYmxlRG9tYWluIGRvbWFpbikgLT4gKCkgQXN5bmMKKyAgICBTZXRGaXJzdFBhcnR5
SG9zdENOQU1FRG9tYWluRm9yVGVzdGluZyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFN0cmlu
ZyBmaXJzdFBhcnR5SG9zdCwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4gY25hbWVEb21haW4p
IC0+ICgpIEFzeW5jCisgICAgU2V0VGhpcmRQYXJ0eUNOQU1FRG9tYWluRm9yVGVzdGluZyhQQUw6
OlNlc3Npb25JRCBzZXNzaW9uSUQsIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIGRvbWFpbikg
LT4gKCkgQXN5bmMKICNlbmRpZgogCiAgICAgU2V0QWRDbGlja0F0dHJpYnV0aW9uRGVidWdNb2Rl
KGJvb2wgZGVidWdNb2RlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrU2Vzc2lvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdv
cmtTZXNzaW9uLmNwcAppbmRleCA2YjY2YmNmMjIyMGMzNWJhZWE2ZDJiYjU4ZTEzMDE4OGQxNjY2
OGE4Li5hN2NiMTc0NDljNGY0NzIzOGIxNWNkYTk2NjQxM2MwZmI4NjFmZGU3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uLmNwcApAQCAtOTAsNiAr
OTAsNyBAQCBOZXR3b3JrU2Vzc2lvbjo6TmV0d29ya1Nlc3Npb24oTmV0d29ya1Byb2Nlc3MmIG5l
dHdvcmtQcm9jZXNzLCBjb25zdCBOZXR3b3JrU2VzcwogICAgICwgbV9zYW1lU2l0ZVN0cmljdEVu
Zm9yY2VtZW50RW5hYmxlZChwYXJhbWV0ZXJzLnJlc291cmNlTG9hZFN0YXRpc3RpY3NQYXJhbWV0
ZXJzLnNhbWVTaXRlU3RyaWN0RW5mb3JjZW1lbnRFbmFibGVkKQogICAgICwgbV9maXJzdFBhcnR5
V2Vic2l0ZURhdGFSZW1vdmFsTW9kZShwYXJhbWV0ZXJzLnJlc291cmNlTG9hZFN0YXRpc3RpY3NQ
YXJhbWV0ZXJzLmZpcnN0UGFydHlXZWJzaXRlRGF0YVJlbW92YWxNb2RlKQogICAgICwgbV9zdGFu
ZGFsb25lQXBwbGljYXRpb25Eb21haW4ocGFyYW1ldGVycy5yZXNvdXJjZUxvYWRTdGF0aXN0aWNz
UGFyYW1ldGVycy5zdGFuZGFsb25lQXBwbGljYXRpb25Eb21haW4pCisgICAgLCBtX2NuYW1lQ2xv
YWtpbmdNaXRpZ2F0aW9uRW5hYmxlZChwYXJhbWV0ZXJzLnJlc291cmNlTG9hZFN0YXRpc3RpY3NQ
YXJhbWV0ZXJzLmNuYW1lQ2xvYWtpbmdNaXRpZ2F0aW9uRW5hYmxlZCkKICNlbmRpZgogICAgICwg
bV9hZENsaWNrQXR0cmlidXRpb24obWFrZVVuaXF1ZVJlZjxBZENsaWNrQXR0cmlidXRpb25NYW5h
Z2VyPihuZXR3b3JrUHJvY2VzcywgcGFyYW1ldGVycy5zZXNzaW9uSUQpKQogICAgICwgbV90ZXN0
U3BlZWRNdWx0aXBsaWVyKHBhcmFtZXRlcnMudGVzdFNwZWVkTXVsdGlwbGllcikKQEAgLTI4MCw2
ICsyODEsNDQgQEAgdm9pZCBOZXR3b3JrU2Vzc2lvbjo6c2V0U2hvdWxkRW5ibGVTYW1lU2l0ZVN0
cmljdEVuZm9yY2VtZW50KFdlYkNvcmU6OlNhbWVTaXRlU3QKICAgICBpZiAobV9yZXNvdXJjZUxv
YWRTdGF0aXN0aWNzKQogICAgICAgICBtX3Jlc291cmNlTG9hZFN0YXRpc3RpY3MtPnNldFNhbWVT
aXRlU3RyaWN0RW5mb3JjZW1lbnRFbmFibGVkKGVuYWJsZWQpOwogfQorCit2b2lkIE5ldHdvcmtT
ZXNzaW9uOjpzZXRGaXJzdFBhcnR5SG9zdENOQU1FRG9tYWluKFN0cmluZyYmIGZpcnN0UGFydHlI
b3N0LCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYmIGNuYW1lRG9tYWluKQoreworI2lmIEhB
VkUoQ0ZORVRXT1JLX0NOQU1FX0FORF9DT09LSUVfVFJBTlNGT1JNX1NQSSkKKyAgICBpZiAoIWNu
YW1lQ2xvYWtpbmdNaXRpZ2F0aW9uRW5hYmxlZCgpKQorICAgICAgICByZXR1cm47CisKKyAgICBB
U1NFUlQoIWZpcnN0UGFydHlIb3N0LmlzRW1wdHkoKSAmJiAhY25hbWVEb21haW4uaXNFbXB0eSgp
ICYmIGZpcnN0UGFydHlIb3N0ICE9IGNuYW1lRG9tYWluLnN0cmluZygpKTsKKyAgICBpZiAoZmly
c3RQYXJ0eUhvc3QuaXNFbXB0eSgpIHx8IGNuYW1lRG9tYWluLmlzRW1wdHkoKSB8fCBmaXJzdFBh
cnR5SG9zdCA9PSBjbmFtZURvbWFpbi5zdHJpbmcoKSkKKyAgICAgICAgcmV0dXJuOworICAgIG1f
Zmlyc3RQYXJ0eUhvc3RDTkFNRURvbWFpbnMuYWRkKFdURk1vdmUoZmlyc3RQYXJ0eUhvc3QpLCBX
VEZNb3ZlKGNuYW1lRG9tYWluKSk7CisjZWxzZQorICAgIFVOVVNFRF9QQVJBTShmaXJzdFBhcnR5
SG9zdCk7CisgICAgVU5VU0VEX1BBUkFNKGNuYW1lRG9tYWluKTsKKyNlbmRpZgorfQorCitPcHRp
b25hbDxXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbj4gTmV0d29ya1Nlc3Npb246OmZpcnN0UGFy
dHlIb3N0Q05BTUVEb21haW4oY29uc3QgU3RyaW5nJiBmaXJzdFBhcnR5SG9zdCkKK3sKKyNpZiBI
QVZFKENGTkVUV09SS19DTkFNRV9BTkRfQ09PS0lFX1RSQU5TRk9STV9TUEkpCisgICAgaWYgKCFj
bmFtZUNsb2FraW5nTWl0aWdhdGlvbkVuYWJsZWQoKSkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVs
bG9wdDsKKworICAgIGF1dG8gaXRlcmF0b3IgPSBtX2ZpcnN0UGFydHlIb3N0Q05BTUVEb21haW5z
LmZpbmQoZmlyc3RQYXJ0eUhvc3QpOworICAgIGlmIChpdGVyYXRvciA9PSBtX2ZpcnN0UGFydHlI
b3N0Q05BTUVEb21haW5zLmVuZCgpKQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAg
IHJldHVybiBpdGVyYXRvci0+dmFsdWU7CisjZWxzZQorICAgIFVOVVNFRF9QQVJBTShmaXJzdFBh
cnR5SG9zdCk7CisgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyNlbmRpZgorfQorCit2b2lkIE5l
dHdvcmtTZXNzaW9uOjpyZXNldENOQU1FRG9tYWluRGF0YSgpCit7CisgICAgbV9maXJzdFBhcnR5
SG9zdENOQU1FRG9tYWlucy5jbGVhcigpOworICAgIG1fdGhpcmRQYXJ0eUNOQU1FRG9tYWluRm9y
VGVzdGluZyA9IFdURjo6bnVsbG9wdDsKK30KICNlbmRpZiAvLyBFTkFCTEUoUkVTT1VSQ0VfTE9B
RF9TVEFUSVNUSUNTKQogCiB2b2lkIE5ldHdvcmtTZXNzaW9uOjpzdG9yZUFkQ2xpY2tBdHRyaWJ1
dGlvbihXZWJDb3JlOjpBZENsaWNrQXR0cmlidXRpb24mJiBhZENsaWNrQXR0cmlidXRpb24pCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uLmgg
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uLmgKaW5kZXggMzgy
YmY4MDU5ZmMwOThmZWRmYTUyYTE4ODU0MWU3NGJmOWU3NDM3ZC4uNWQzZWYwZWY2ZWIxMWY1MDFj
YmZjODRiMzg3YTc5YTQ4MzZjOTlhYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvTmV0d29ya1Nlc3Npb24uaApAQCAtMTA1LDYgKzEwNSwxMyBAQCBwdWJsaWM6CiAgICAgYm9v
bCBzaG91bGREb3duZ3JhZGVSZWZlcnJlcigpIGNvbnN0OwogICAgIHZvaWQgc2V0VGhpcmRQYXJ0
eUNvb2tpZUJsb2NraW5nTW9kZShXZWJDb3JlOjpUaGlyZFBhcnR5Q29va2llQmxvY2tpbmdNb2Rl
KTsKICAgICB2b2lkIHNldFNob3VsZEVuYmxlU2FtZVNpdGVTdHJpY3RFbmZvcmNlbWVudChXZWJD
b3JlOjpTYW1lU2l0ZVN0cmljdEVuZm9yY2VtZW50RW5hYmxlZCk7CisgICAgdm9pZCBzZXRDTkFN
RUNsb2FraW5nTWl0aWdhdGlvbkVuYWJsZWQoV2ViQ29yZTo6Q05BTUVDbG9ha2luZ01pdGlnYXRp
b25FbmFibGVkIHZhbHVlKSB7IG1fY25hbWVDbG9ha2luZ01pdGlnYXRpb25FbmFibGVkID0gdmFs
dWU7IH0KKyAgICBib29sIGNuYW1lQ2xvYWtpbmdNaXRpZ2F0aW9uRW5hYmxlZCgpIGNvbnN0IHsg
cmV0dXJuIG1fY25hbWVDbG9ha2luZ01pdGlnYXRpb25FbmFibGVkID09IFdlYkNvcmU6OkNOQU1F
Q2xvYWtpbmdNaXRpZ2F0aW9uRW5hYmxlZDo6WWVzOyB9CisgICAgdm9pZCBzZXRGaXJzdFBhcnR5
SG9zdENOQU1FRG9tYWluKFN0cmluZyYmIGZpcnN0UGFydHlIb3N0LCBXZWJDb3JlOjpSZWdpc3Ry
YWJsZURvbWFpbiYmIGNuYW1lRG9tYWluKTsKKyAgICBPcHRpb25hbDxXZWJDb3JlOjpSZWdpc3Ry
YWJsZURvbWFpbj4gZmlyc3RQYXJ0eUhvc3RDTkFNRURvbWFpbihjb25zdCBTdHJpbmcmIGZpcnN0
UGFydHlIb3N0KTsKKyAgICB2b2lkIHNldFRoaXJkUGFydHlDTkFNRURvbWFpbkZvclRlc3Rpbmco
V2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mJiBkb21haW4pIHsgbV90aGlyZFBhcnR5Q05BTUVE
b21haW5Gb3JUZXN0aW5nID0gV1RGTW92ZShkb21haW4pOyB9OworICAgIE9wdGlvbmFsPFdlYkNv
cmU6OlJlZ2lzdHJhYmxlRG9tYWluPiB0aGlyZFBhcnR5Q05BTUVEb21haW5Gb3JUZXN0aW5nKCkg
Y29uc3QgeyByZXR1cm4gbV90aGlyZFBhcnR5Q05BTUVEb21haW5Gb3JUZXN0aW5nOyB9CisgICAg
dm9pZCByZXNldENOQU1FRG9tYWluRGF0YSgpOwogICAgIHZvaWQgZGVzdHJveVJlc291cmNlTG9h
ZFN0YXRpc3RpY3MoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKICAgICB2b2lkIGZsdXNo
QW5kRGVzdHJveVBlcnNpc3RlbnRTdG9yZShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwog
I2VuZGlmCkBAIC0xNjYsNiArMTczLDkgQEAgcHJvdGVjdGVkOgogICAgIFdlYkNvcmU6OlNhbWVT
aXRlU3RyaWN0RW5mb3JjZW1lbnRFbmFibGVkIG1fc2FtZVNpdGVTdHJpY3RFbmZvcmNlbWVudEVu
YWJsZWQgeyBXZWJDb3JlOjpTYW1lU2l0ZVN0cmljdEVuZm9yY2VtZW50RW5hYmxlZDo6Tm8gfTsK
ICAgICBXZWJDb3JlOjpGaXJzdFBhcnR5V2Vic2l0ZURhdGFSZW1vdmFsTW9kZSBtX2ZpcnN0UGFy
dHlXZWJzaXRlRGF0YVJlbW92YWxNb2RlIHsgV2ViQ29yZTo6Rmlyc3RQYXJ0eVdlYnNpdGVEYXRh
UmVtb3ZhbE1vZGU6OkFsbEJ1dENvb2tpZXMgfTsKICAgICBXZWJDb3JlOjpSZWdpc3RyYWJsZURv
bWFpbiBtX3N0YW5kYWxvbmVBcHBsaWNhdGlvbkRvbWFpbjsKKyAgICBXZWJDb3JlOjpDTkFNRUNs
b2FraW5nTWl0aWdhdGlvbkVuYWJsZWQgbV9jbmFtZUNsb2FraW5nTWl0aWdhdGlvbkVuYWJsZWQg
eyBXZWJDb3JlOjpDTkFNRUNsb2FraW5nTWl0aWdhdGlvbkVuYWJsZWQ6Ok5vIH07CisgICAgSGFz
aE1hcDxTdHJpbmcsIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluPiBtX2ZpcnN0UGFydHlIb3N0
Q05BTUVEb21haW5zOworICAgIE9wdGlvbmFsPFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluPiBt
X3RoaXJkUGFydHlDTkFNRURvbWFpbkZvclRlc3Rpbmc7CiAjZW5kaWYKICAgICBib29sIG1faXNT
dGFsZVdoaWxlUmV2YWxpZGF0ZUVuYWJsZWQgeyBmYWxzZSB9OwogICAgIFVuaXF1ZVJlZjxBZENs
aWNrQXR0cmlidXRpb25NYW5hZ2VyPiBtX2FkQ2xpY2tBdHRyaWJ1dGlvbjsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya0RhdGFUYXNrQ29jb2Eu
aCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya0RhdGFUYXNrQ29j
b2EuaAppbmRleCAyYzFkODhjYWNjM2U5OTk0ZmE5YzgyOTYxMjg4MTRlYzllOWE2NzNjLi5mMDEz
MzQ4MTRkM2RkMDhkZjUxMGE4ODJmMzQxZjY1NjJjNTg3NGJhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtEYXRhVGFza0NvY29hLmgKKysrIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrRGF0YVRhc2tDb2NvYS5o
CkBAIC0zNCw2ICszNCwxMCBAQAogT0JKQ19DTEFTUyBOU0hUVFBDb29raWVTdG9yYWdlOwogT0JK
Q19DTEFTUyBOU1VSTFNlc3Npb25EYXRhVGFzazsKIAorbmFtZXNwYWNlIFdlYkNvcmUgeworY2xh
c3MgUmVnaXN0cmFibGVEb21haW47Cit9CisKIG5hbWVzcGFjZSBXZWJLaXQgewogCiBjbGFzcyBE
b3dubG9hZDsKQEAgLTg3LDYgKzkxLDEwIEBAIHByaXZhdGU6CiAKICNpZiBFTkFCTEUoUkVTT1VS
Q0VfTE9BRF9TVEFUSVNUSUNTKQogICAgIHN0YXRpYyBOU0hUVFBDb29raWVTdG9yYWdlICpzdGF0
ZWxlc3NDb29raWVTdG9yYWdlKCk7CisjaWYgSEFWRShDRk5FVFdPUktfQ05BTUVfQU5EX0NPT0tJ
RV9UUkFOU0ZPUk1fU1BJKQorICAgIHZvaWQgdXBkYXRlRmlyc3RQYXJ0eUluZm9Gb3JTZXNzaW9u
KGNvbnN0IFVSTCYpOworICAgIHZvaWQgYXBwbHlDb29raWVQb2xpY3lGb3JUaGlyZFBhcnR5Q05B
TUVDbG9ha2luZyhjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmKTsKKyNlbmRpZgogICAg
IHZvaWQgYmxvY2tDb29raWVzKCk7CiAgICAgdm9pZCB1bmJsb2NrQ29va2llcygpOwogICAgIGJv
b2wgbmVlZHNGaXJzdFBhcnR5Q29va2llQmxvY2tpbmdMYXRjaE1vZGVRdWlyayhjb25zdCBVUkwm
IGZpcnN0UGFydHlVUkwsIGNvbnN0IFVSTCYgcmVxdWVzdFVSTCwgY29uc3QgVVJMJiByZWRpcmVj
dGluZ1VSTCkgY29uc3Q7CkBAIC0xMDIsNiArMTEwLDkgQEAgcHJpdmF0ZToKIAogI2lmIEVOQUJM
RShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCiAgICAgYm9vbCBtX2hhc0JlZW5TZXRUb1VzZVN0
YXRlbGVzc0Nvb2tpZVN0b3JhZ2UgeyBmYWxzZSB9OworI2lmIEhBVkUoQ0ZORVRXT1JLX0NOQU1F
X0FORF9DT09LSUVfVFJBTlNGT1JNX1NQSSkKKyAgICBTZWNvbmRzIG1fYWdlQ2FwRm9yQ05BTUVD
bG9ha2VkQ29va2llcyB7IDI0X2ggKiA3IH07CisjZW5kaWYKICNlbmRpZgogCiAgICAgYm9vbCBt
X2lzRm9yTWFpblJlc291cmNlTmF2aWdhdGlvbkZvckFueUZyYW1lIHsgZmFsc2UgfTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya0RhdGFUYXNr
Q29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtEYXRh
VGFza0NvY29hLm1tCmluZGV4IDc3YjdkMTM0NTQ0YzE0NDYyZGZkOGFlMmYwMmY4M2NmOWUzN2Q2
MDQuLmIyZTlkYmU2MzYxODM3N2M3N2Y4ZGJiY2Q0Y2ZiNGMyZjFlNGYwMmIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya0RhdGFUYXNrQ29jb2Eu
bW0KKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrRGF0YVRh
c2tDb2NvYS5tbQpAQCAtMzgsNiArMzgsNyBAQAogI2ltcG9ydCA8V2ViQ29yZS9BdXRoZW50aWNh
dGlvbkNoYWxsZW5nZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9OZXR3b3JrU3RvcmFnZVNlc3Npb24u
aD4KICNpbXBvcnQgPFdlYkNvcmUvTm90SW1wbGVtZW50ZWQuaD4KKyNpbXBvcnQgPFdlYkNvcmUv
UmVnaXN0cmFibGVEb21haW4uaD4KICNpbXBvcnQgPFdlYkNvcmUvUmVzb3VyY2VSZXF1ZXN0Lmg+
CiAjaW1wb3J0IDxwYWwvc3BpL2NmL0NGTmV0d29ya1NQSS5oPgogI2ltcG9ydCA8d3RmL0Jsb2Nr
UHRyLmg+CkBAIC0xMjksNiArMTMwLDg3IEBAIE5TSFRUUENvb2tpZVN0b3JhZ2UgKk5ldHdvcmtE
YXRhVGFza0NvY29hOjpzdGF0ZWxlc3NDb29raWVTdG9yYWdlKCkKICAgICByZXR1cm4gc3RhdGVs
ZXNzQ29va2llU3RvcmFnZS5nZXQoKS5nZXQoKTsKIH0KIAorI2lmIEhBVkUoQ0ZORVRXT1JLX0NO
QU1FX0FORF9DT09LSUVfVFJBTlNGT1JNX1NQSSkKKy8vIEZJWE1FOiBSZW1vdmUgdGhlc2Ugc2Vs
ZWN0b3IgY2hlY2tzIHdoZW4gbWFjT1MgQmlnIFN1ciBoYXMgc2hpcHBlZC4KK3N0YXRpYyBib29s
IGhhc0NOQU1FQW5kQ29va2llVHJhbnNmb3JtU1BJKE5TVVJMU2Vzc2lvbkRhdGFUYXNrKiB0YXNr
KQoreworICAgIHJldHVybiBbdGFzayByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKF9jb29r
aWVUcmFuc2Zvcm1DYWxsYmFjayldCisgICAgICAgICYmIFt0YXNrIHJlc3BvbmRzVG9TZWxlY3Rv
cjpAc2VsZWN0b3IoX3Jlc29sdmVkQ05BTUVDaGFpbildOworfQorCitzdGF0aWMgV2ViQ29yZTo6
UmVnaXN0cmFibGVEb21haW4gbGFzdENOQU1FRG9tYWluKE5TQXJyYXk8TlNTdHJpbmcgKj4gKmNu
YW1lcykKK3sKKyAgICBpZiAoYXV0byogbGFzdFJlc29sdmVkQ05BTUVJbkNoYWluID0gW2NuYW1l
cyBsYXN0T2JqZWN0XSkgeworICAgICAgICBhdXRvIGNuYW1lID0gU3RyaW5nKGxhc3RSZXNvbHZl
ZENOQU1FSW5DaGFpbik7CisgICAgICAgIGlmIChjbmFtZS5lbmRzV2l0aCgnLicpKQorICAgICAg
ICAgICAgY25hbWUucmVtb3ZlKGNuYW1lLmxlbmd0aCgpIC0gMSk7CisgICAgICAgIHJldHVybiBX
ZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbjo6dW5jaGVja2VkQ3JlYXRlRnJvbUhvc3QoY25hbWUp
OworICAgIH0KKworICAgIHJldHVybiB7IH07Cit9CisKK3ZvaWQgTmV0d29ya0RhdGFUYXNrQ29j
b2E6OnVwZGF0ZUZpcnN0UGFydHlJbmZvRm9yU2Vzc2lvbihjb25zdCBVUkwmIHJlcXVlc3RVUkwp
Cit7CisgICAgaWYgKCFoYXNDTkFNRUFuZENvb2tpZVRyYW5zZm9ybVNQSShtX3Rhc2suZ2V0KCkp
IHx8ICFuZXR3b3JrU2Vzc2lvbigpIHx8ICFuZXR3b3JrU2Vzc2lvbigpLT5uZXR3b3JrU3RvcmFn
ZVNlc3Npb24oKSB8fCAhbmV0d29ya1Nlc3Npb24oKS0+bmV0d29ya1N0b3JhZ2VTZXNzaW9uKCkt
PnJlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkKCkgfHwgIW5ldHdvcmtTZXNzaW9uKCktPmNu
YW1lQ2xvYWtpbmdNaXRpZ2F0aW9uRW5hYmxlZCgpIHx8IHJlcXVlc3RVUkwuaG9zdCgpLmlzRW1w
dHkoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgYXV0byBjbmFtZURvbWFpbiA9IGxhc3RDTkFN
RURvbWFpbihbbV90YXNrIF9yZXNvbHZlZENOQU1FQ2hhaW5dKTsKKyAgICBpZiAoIWNuYW1lRG9t
YWluLmlzRW1wdHkoKSkKKyAgICAgICAgbmV0d29ya1Nlc3Npb24oKS0+c2V0Rmlyc3RQYXJ0eUhv
c3RDTkFNRURvbWFpbihyZXF1ZXN0VVJMLmhvc3QoKS50b1N0cmluZygpLCBXVEZNb3ZlKGNuYW1l
RG9tYWluKSk7Cit9CisKK3ZvaWQgTmV0d29ya0RhdGFUYXNrQ29jb2E6OmFwcGx5Q29va2llUG9s
aWN5Rm9yVGhpcmRQYXJ0eUNOQU1FQ2xvYWtpbmcoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1
ZXN0JiByZXF1ZXN0KQoreworICAgIGlmICghaGFzQ05BTUVBbmRDb29raWVUcmFuc2Zvcm1TUEko
bV90YXNrLmdldCgpKSB8fCBpc1RvcExldmVsTmF2aWdhdGlvbigpIHx8ICFuZXR3b3JrU2Vzc2lv
bigpIHx8ICFuZXR3b3JrU2Vzc2lvbigpLT5uZXR3b3JrU3RvcmFnZVNlc3Npb24oKSB8fCAhbmV0
d29ya1Nlc3Npb24oKS0+bmV0d29ya1N0b3JhZ2VTZXNzaW9uKCktPnJlc291cmNlTG9hZFN0YXRp
c3RpY3NFbmFibGVkKCkgfHwgIW5ldHdvcmtTZXNzaW9uKCktPmNuYW1lQ2xvYWtpbmdNaXRpZ2F0
aW9uRW5hYmxlZCgpKQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAoaXNUaGlyZFBhcnR5UmVx
dWVzdChyZXF1ZXN0KSkgeworICAgICAgICBtX3Rhc2suZ2V0KCkuX2Nvb2tpZVRyYW5zZm9ybUNh
bGxiYWNrID0gbmlsOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgLy8gQ2FwIGV4cGly
eSBvZiBpbmNvbWluZyBjb29raWVzIGluIHJlc3BvbnNlIGlmIGl0IGlzIGEgc2FtZS1zaXRlCisg
ICAgLy8gc3VicmVzb3VyY2UgYnV0IGl0IHJlc29sdmVzIHRvIGEgZGlmZmVyZW50IENOQU1FIHRo
YW4gdGhlIHRvcAorICAgIC8vIHNpdGUgcmVxdWVzdCwgYS5rLmEuIHRoaXJkLXBhcnR5IENOQU1F
IGNsb2FraW5nLgorICAgIGF1dG8gZmlyc3RQYXJ0eVVSTCA9IHJlcXVlc3QuZmlyc3RQYXJ0eUZv
ckNvb2tpZXMoKTsKKyAgICBhdXRvIGZpcnN0UGFydHlIb3N0Q05BTUUgPSBuZXR3b3JrU2Vzc2lv
bigpLT5maXJzdFBhcnR5SG9zdENOQU1FRG9tYWluKGZpcnN0UGFydHlVUkwuaG9zdCgpLnRvU3Ry
aW5nKCkpOworCisgICAgbV90YXNrLmdldCgpLl9jb29raWVUcmFuc2Zvcm1DYWxsYmFjayA9IG1h
a2VCbG9ja1B0cihbcmVxdWVzdFVSTCA9IGNyb3NzVGhyZWFkQ29weShyZXF1ZXN0LnVybCgpKSwg
Zmlyc3RQYXJ0eVVSTCA9IGNyb3NzVGhyZWFkQ29weShmaXJzdFBhcnR5VVJMKSwgZmlyc3RQYXJ0
eUhvc3RDTkFNRSA9IGNyb3NzVGhyZWFkQ29weShmaXJzdFBhcnR5SG9zdENOQU1FKSwgdGhpcmRQ
YXJ0eUNOQU1FRG9tYWluRm9yVGVzdGluZyA9IGNyb3NzVGhyZWFkQ29weShuZXR3b3JrU2Vzc2lv
bigpLT50aGlyZFBhcnR5Q05BTUVEb21haW5Gb3JUZXN0aW5nKCkpLCBhZ2VDYXBGb3JDTkFNRUNs
b2FrZWRDb29raWVzID0gY3Jvc3NUaHJlYWRDb3B5KG1fYWdlQ2FwRm9yQ05BTUVDbG9ha2VkQ29v
a2llcyksIHRhc2sgPSBtX3Rhc2tdIChOU0FycmF5PE5TSFRUUENvb2tpZSo+ICpjb29raWVzU2V0
SW5SZXNwb25zZSkgLT4gTlNBcnJheTxOU0hUVFBDb29raWUqPiAqIHsKKyAgICAgICAgaWYgKCFb
Y29va2llc1NldEluUmVzcG9uc2UgY291bnRdKQorICAgICAgICAgICAgcmV0dXJuIGNvb2tpZXNT
ZXRJblJlc3BvbnNlOworCisgICAgICAgIGF1dG8gY25hbWVEb21haW4gPSBsYXN0Q05BTUVEb21h
aW4oW3Rhc2sgX3Jlc29sdmVkQ05BTUVDaGFpbl0pOworICAgICAgICBpZiAoY25hbWVEb21haW4u
aXNFbXB0eSgpKSB7CisgICAgICAgICAgICBpZiAoIXRoaXJkUGFydHlDTkFNRURvbWFpbkZvclRl
c3RpbmcpCisgICAgICAgICAgICAgICAgcmV0dXJuIGNvb2tpZXNTZXRJblJlc3BvbnNlOworICAg
ICAgICAgICAgY25hbWVEb21haW4gPSAqdGhpcmRQYXJ0eUNOQU1FRG9tYWluRm9yVGVzdGluZzsK
KyAgICAgICAgfQorCisKKyAgICAgICAgLy8gQ05BTUUgY2xvYWtpbmcgaXMgYSBmaXJzdC1wYXJ0
eSBzdWIgcmVzb3VyY2UgdGhhdCByZXNvbHZlcworICAgICAgICAvLyB0aHJvdWdoIGEgQ05BTUUg
dGhhdCBkaWZmZXJzIGZyb20gdGhlIGZpcnN0LXBhcnR5IGRvbWFpbiBhbmQKKyAgICAgICAgLy8g
YWxzbyBkaWZmZXJzIGZyb20gdGhlIHRvcCBmcmFtZSBob3N0J3MgQ05BTUUsIGlmIG9uZSBleGlz
dHMuCisgICAgICAgIGlmICghY25hbWVEb21haW4ubWF0Y2hlcyhmaXJzdFBhcnR5VVJMKSAmJiAo
IWZpcnN0UGFydHlIb3N0Q05BTUUgfHwgY25hbWVEb21haW4gIT0gKmZpcnN0UGFydHlIb3N0Q05B
TUUpKSB7CisKKyAgICAgICAgICAgIE5TVUludGVnZXIgY291bnQgPSBbY29va2llc1NldEluUmVz
cG9uc2UgY291bnRdOworICAgICAgICAgICAgLy8gRG9uJ3QgdXNlIFJldGFpblB0ciBoZXJlLiBU
aGlzIGFycmF5IGhhcyB0byBiZSByZXRhaW5lZCBhbmQKKyAgICAgICAgICAgIC8vIGF1dG8gcmVs
ZWFzZWQgdG8gbm90IGJlIHJlbGVhc2VkIGJlZm9yZSByZXR1cm5lZCB0byB0aGUgY29kZQorICAg
ICAgICAgICAgLy8gZXhlY3V0aW5nIHRoZSBibG9jay4KKyAgICAgICAgICAgIGF1dG8qIGNhcHBl
ZENvb2tpZXMgPSBbTlNNdXRhYmxlQXJyYXkgYXJyYXlXaXRoQ2FwYWNpdHk6Y291bnRdOworICAg
ICAgICAgICAgZm9yIChOU1VJbnRlZ2VyIGkgPSAwOyBpIDwgY291bnQ7ICsraSkgeworICAgICAg
ICAgICAgICAgIE5TSFRUUENvb2tpZSAqY29va2llID0gKE5TSFRUUENvb2tpZSAqKVtjb29raWVz
U2V0SW5SZXNwb25zZSBvYmplY3RBdEluZGV4OmldOworICAgICAgICAgICAgICAgIGNvb2tpZSA9
IFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6Y2FwRXhwaXJ5T2ZQZXJzaXN0ZW50Q29v
a2llKGNvb2tpZSwgYWdlQ2FwRm9yQ05BTUVDbG9ha2VkQ29va2llcyk7CisgICAgICAgICAgICAg
ICAgW2NhcHBlZENvb2tpZXMgYWRkT2JqZWN0OmNvb2tpZV07CisgICAgICAgICAgICB9CisgICAg
ICAgICAgICByZXR1cm4gY2FwcGVkQ29va2llczsKKyAgICAgICAgfQorCisgICAgICAgIHJldHVy
biBjb29raWVzU2V0SW5SZXNwb25zZTsKKyAgICB9KS5nZXQoKTsKK30KKyNlbmRpZgorCiB2b2lk
IE5ldHdvcmtEYXRhVGFza0NvY29hOjpibG9ja0Nvb2tpZXMoKQogewogICAgIEFTU0VSVChoYXNQ
cm9jZXNzUHJpdmlsZWdlKFByb2Nlc3NQcml2aWxlZ2U6OkNhbkFjY2Vzc1Jhd0Nvb2tpZXMpKTsK
QEAgLTI2Myw2ICszNDUsOSBAQCBOZXR3b3JrRGF0YVRhc2tDb2NvYTo6TmV0d29ya0RhdGFUYXNr
Q29jb2EoTmV0d29ya1Nlc3Npb24mIHNlc3Npb24sIE5ldHdvcmtEYXRhVAogICAgIH0KIAogI2lm
IEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCisjaWYgSEFWRShDRk5FVFdPUktfQ05B
TUVfQU5EX0NPT0tJRV9UUkFOU0ZPUk1fU1BJKQorICAgIGFwcGx5Q29va2llUG9saWN5Rm9yVGhp
cmRQYXJ0eUNOQU1FQ2xvYWtpbmcocmVxdWVzdCk7CisjZW5kaWYKICAgICBpZiAoc2hvdWxkQmxv
Y2tDb29raWVzKSB7CiAjaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECiAgICAgICAgIGlmIChtX3Nl
c3Npb24tPnNob3VsZExvZ0Nvb2tpZUluZm9ybWF0aW9uKCkpCkBAIC0zNDUsNiArNDMwLDEwIEBA
IHZvaWQgTmV0d29ya0RhdGFUYXNrQ29jb2E6OmRpZFJlY2VpdmVEYXRhKFJlZjxXZWJDb3JlOjpT
aGFyZWRCdWZmZXI+JiYgZGF0YSkKIHZvaWQgTmV0d29ya0RhdGFUYXNrQ29jb2E6OmRpZFJlY2Vp
dmVSZXNwb25zZShXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYgcmVzcG9uc2UsIE5lZ290aWF0
ZWRMZWdhY3lUTFMgbmVnb3RpYXRlZExlZ2FjeVRMUywgV2ViS2l0OjpSZXNwb25zZUNvbXBsZXRp
b25IYW5kbGVyJiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgV1RGRW1pdFNpZ25wb3N0KG1f
dGFzay5nZXQoKSwgIkRhdGFUYXNrIiwgInJlY2VpdmVkIHJlc3BvbnNlIGhlYWRlcnMiKTsKKyNp
ZiBIQVZFKENGTkVUV09SS19DTkFNRV9BTkRfQ09PS0lFX1RSQU5TRk9STV9TUEkpCisgICAgaWYg
KGlzVG9wTGV2ZWxOYXZpZ2F0aW9uKCkpCisgICAgICAgIHVwZGF0ZUZpcnN0UGFydHlJbmZvRm9y
U2Vzc2lvbihyZXNwb25zZS51cmwoKSk7CisjZW5kaWYKICAgICBOZXR3b3JrRGF0YVRhc2s6OmRp
ZFJlY2VpdmVSZXNwb25zZShXVEZNb3ZlKHJlc3BvbnNlKSwgbmVnb3RpYXRlZExlZ2FjeVRMUywg
V1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogfQogCkBAIC0zOTksNiArNDg4LDkgQEAgdm9p
ZCBOZXR3b3JrRGF0YVRhc2tDb2NvYTo6d2lsbFBlcmZvcm1IVFRQUmVkaXJlY3Rpb24oV2ViQ29y
ZTo6UmVzb3VyY2VSZXNwb25zZSYKICAgICAgICAgcmVxdWVzdC5zZXRGaXJzdFBhcnR5Rm9yQ29v
a2llcyhyZXF1ZXN0LnVybCgpKTsKIAogI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJ
Q1MpCisjaWYgSEFWRShDRk5FVFdPUktfQ05BTUVfQU5EX0NPT0tJRV9UUkFOU0ZPUk1fU1BJKQor
ICAgIGFwcGx5Q29va2llUG9saWN5Rm9yVGhpcmRQYXJ0eUNOQU1FQ2xvYWtpbmcocmVxdWVzdCk7
CisjZW5kaWYKICAgICBpZiAoIW1faGFzQmVlblNldFRvVXNlU3RhdGVsZXNzQ29va2llU3RvcmFn
ZSkgewogICAgICAgICBpZiAobV9zdG9yZWRDcmVkZW50aWFsc1BvbGljeSA9PSBXZWJDb3JlOjpT
dG9yZWRDcmVkZW50aWFsc1BvbGljeTo6RXBoZW1lcmFsU3RhdGVsZXNzCiAgICAgICAgICAgICB8
fCAobV9zZXNzaW9uLT5uZXR3b3JrU3RvcmFnZVNlc3Npb24oKSAmJiBtX3Nlc3Npb24tPm5ldHdv
cmtTdG9yYWdlU2Vzc2lvbigpLT5zaG91bGRCbG9ja0Nvb2tpZXMocmVxdWVzdCwgbV9mcmFtZUlE
LCBtX3BhZ2VJRCwgbV9zaG91bGRSZWxheFRoaXJkUGFydHlDb29raWVCbG9ja2luZykpKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvUmVzb3VyY2VMb2FkU3RhdGlzdGljc1BhcmFt
ZXRlcnMuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NQYXJh
bWV0ZXJzLmgKaW5kZXggNjBkZTM1ZjZhZTk1N2Q3MDY3NTk0OTY0NzNjZTM1MTY0MjQxZTJlYi4u
YWNiMzRlYWIxMTY1N2MwMzNjNTJhZTNhZWIwMTg1ODI1ZTBkNzc4YyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9TaGFyZWQvUmVzb3VyY2VMb2FkU3RhdGlzdGljc1BhcmFtZXRlcnMuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGFyYW1ldGVycy5o
CkBAIC00NSw2ICs0NSw3IEBAIHN0cnVjdCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGFyYW1ldGVy
cyB7CiAjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKICAgICBXZWJDb3JlOjpU
aGlyZFBhcnR5Q29va2llQmxvY2tpbmdNb2RlIHRoaXJkUGFydHlDb29raWVCbG9ja2luZ01vZGUg
eyBXZWJDb3JlOjpUaGlyZFBhcnR5Q29va2llQmxvY2tpbmdNb2RlOjpBbGwgfTsKICAgICBXZWJD
b3JlOjpTYW1lU2l0ZVN0cmljdEVuZm9yY2VtZW50RW5hYmxlZCBzYW1lU2l0ZVN0cmljdEVuZm9y
Y2VtZW50RW5hYmxlZCB7IFdlYkNvcmU6OlNhbWVTaXRlU3RyaWN0RW5mb3JjZW1lbnRFbmFibGVk
OjpObyB9OworICAgIFdlYkNvcmU6OkNOQU1FQ2xvYWtpbmdNaXRpZ2F0aW9uRW5hYmxlZCBjbmFt
ZUNsb2FraW5nTWl0aWdhdGlvbkVuYWJsZWQgeyBXZWJDb3JlOjpDTkFNRUNsb2FraW5nTWl0aWdh
dGlvbkVuYWJsZWQ6Ok5vIH07CiAjZW5kaWYKICAgICBXZWJDb3JlOjpGaXJzdFBhcnR5V2Vic2l0
ZURhdGFSZW1vdmFsTW9kZSBmaXJzdFBhcnR5V2Vic2l0ZURhdGFSZW1vdmFsTW9kZSB7IFdlYkNv
cmU6OkZpcnN0UGFydHlXZWJzaXRlRGF0YVJlbW92YWxNb2RlOjpBbGxCdXRDb29raWVzIH07CiAg
ICAgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4gc3RhbmRhbG9uZUFwcGxpY2F0aW9uRG9tYWlu
OwpAQCAtNjMsNiArNjQsNyBAQCBzdHJ1Y3QgUmVzb3VyY2VMb2FkU3RhdGlzdGljc1BhcmFtZXRl
cnMgewogI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCiAgICAgICAgIGVuY29k
ZXIgPDwgdGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9kZTsKICAgICAgICAgZW5jb2RlciA8PCBz
YW1lU2l0ZVN0cmljdEVuZm9yY2VtZW50RW5hYmxlZDsKKyAgICAgICAgZW5jb2RlciA8PCBjbmFt
ZUNsb2FraW5nTWl0aWdhdGlvbkVuYWJsZWQ7CiAjZW5kaWYKICAgICAgICAgZW5jb2RlciA8PCBm
aXJzdFBhcnR5V2Vic2l0ZURhdGFSZW1vdmFsTW9kZTsKICAgICAgICAgZW5jb2RlciA8PCBzdGFu
ZGFsb25lQXBwbGljYXRpb25Eb21haW47CkBAIC0xMTcsNiArMTE5LDExIEBAIHN0cnVjdCBSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzUGFyYW1ldGVycyB7CiAgICAgICAgIGRlY29kZXIgPj4gc2FtZVNp
dGVTdHJpY3RFbmZvcmNlbWVudEVuYWJsZWQ7CiAgICAgICAgIGlmICghc2FtZVNpdGVTdHJpY3RF
bmZvcmNlbWVudEVuYWJsZWQpCiAgICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCisg
ICAgICAgIE9wdGlvbmFsPFdlYkNvcmU6OkNOQU1FQ2xvYWtpbmdNaXRpZ2F0aW9uRW5hYmxlZD4g
Y25hbWVDbG9ha2luZ01pdGlnYXRpb25FbmFibGVkOworICAgICAgICBkZWNvZGVyID4+IGNuYW1l
Q2xvYWtpbmdNaXRpZ2F0aW9uRW5hYmxlZDsKKyAgICAgICAgaWYgKCFjbmFtZUNsb2FraW5nTWl0
aWdhdGlvbkVuYWJsZWQpCisgICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogI2VuZGlm
CiAKICAgICAgICAgT3B0aW9uYWw8V2ViQ29yZTo6Rmlyc3RQYXJ0eVdlYnNpdGVEYXRhUmVtb3Zh
bE1vZGU+IGZpcnN0UGFydHlXZWJzaXRlRGF0YVJlbW92YWxNb2RlOwpAQCAtMTUwLDYgKzE1Nyw3
IEBAIHN0cnVjdCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGFyYW1ldGVycyB7CiAjaWYgRU5BQkxF
KFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKICAgICAgICAgICAgIFdURk1vdmUoKnRoaXJkUGFy
dHlDb29raWVCbG9ja2luZ01vZGUpLAogICAgICAgICAgICAgV1RGTW92ZSgqc2FtZVNpdGVTdHJp
Y3RFbmZvcmNlbWVudEVuYWJsZWQpLAorICAgICAgICAgICAgV1RGTW92ZSgqY25hbWVDbG9ha2lu
Z01pdGlnYXRpb25FbmFibGVkKSwKICNlbmRpZgogICAgICAgICAgICAgV1RGTW92ZSgqZmlyc3RQ
YXJ0eVdlYnNpdGVEYXRhUmVtb3ZhbE1vZGUpLAogICAgICAgICAgICAgV1RGTW92ZSgqc3RhbmRh
bG9uZUFwcGxpY2F0aW9uRG9tYWluKSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L1dlYlByZWZlcmVuY2VzLnlhbWwgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQcmVmZXJlbmNl
cy55YW1sCmluZGV4IDg4YWU2YWUyZDlhMzk3NDc2MWNiOTcyNDY0N2ZiMzYxM2RjYjU3NjIuLjlh
YTlmMDYxMTQwMzc3YjFmN2VjMTBmZjY0N2Q4NTljNDNkOWZlZDggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL1dlYlByZWZlcmVuY2VzLnlhbWwKKysrIGIvU291cmNlL1dlYktpdC9T
aGFyZWQvV2ViUHJlZmVyZW5jZXMueWFtbApAQCAtMjA1Niw2ICsyMDU2LDEzIEBAIElzU2FtZVNp
dGVTdHJpY3RFbmZvcmNlbWVudEVuYWJsZWQ6CiAgIGh1bWFuUmVhZGFibGVEZXNjcmlwdGlvbjog
IkVuYWJsZSBTYW1lU2l0ZSBzdHJpY3QgZW5mb3JjZW1lbnQgdG8gbWl0aWdhdGUgYm91bmNlIHRy
YWNraW5nIgogICBjYXRlZ29yeTogZXhwZXJpbWVudGFsCiAKK0lzQ05BTUVDbG9ha2luZ01pdGln
YXRpb25FbmFibGVkOgorICB0eXBlOiBib29sCisgIGRlZmF1bHRWYWx1ZTogZmFsc2UKKyAgaHVt
YW5SZWFkYWJsZU5hbWU6ICJFbmFibGUgQ05BTUUgY2xvYWtpbmcgbWl0aWdhdGlvbiAoSVRQKSIK
KyAgaHVtYW5SZWFkYWJsZURlc2NyaXB0aW9uOiAiRW5hYmxlIHRoaXJkLXBhcnR5IENOQU1FIGNs
b2FraW5nIG1pdGlnYXRpb24gd2hlbiBJbnRlbGxpZ2VudCBUcmFja2luZyBQcmV2ZW50aW9uIGlz
IGVuYWJsZWQiCisgIGNhdGVnb3J5OiBleHBlcmltZW50YWwKKwogSXNMb2dnZWRJbkFQSUVuYWJs
ZWQ6CiAgICAgdHlwZTogYm9vbAogICAgIGRlZmF1bHRWYWx1ZTogZmFsc2UKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLV2Vic2l0ZURhdGFTdG9yZVJlZi5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1dlYnNpdGVEYXRhU3RvcmVSZWYuY3Bw
CmluZGV4IDgwMGU3NTQ5ZWExNzk2ZjNlN2RiMTM1ZDZiMTcwNGQwZDhmYjk2M2QuLmYzNTYzZTk0
NDFjZTZiMTRiNDJjZmNlODVmMTlkOWQ5MjkwMGQzNTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9DL1dLV2Vic2l0ZURhdGFTdG9yZVJlZi5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tXZWJzaXRlRGF0YVN0b3JlUmVmLmNwcApAQCAtNjI4
LDYgKzYyOCwyOCBAQCB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZVNldFJlc291cmNlTG9hZFN0YXRp
c3RpY3NUb1NhbWVTaXRlU3RyaWN0Q29va2llc0ZvclRlc3RpbgogI2VuZGlmCiB9CiAKK3ZvaWQg
V0tXZWJzaXRlRGF0YVN0b3JlU2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0ZpcnN0UGFydHlIb3N0
Q05BTUVEb21haW5Gb3JUZXN0aW5nKFdLV2Vic2l0ZURhdGFTdG9yZVJlZiBkYXRhU3RvcmVSZWYs
IFdLU3RyaW5nUmVmIGZpcnN0UGFydHlVUkxTdHJpbmcsIFdLU3RyaW5nUmVmIGNuYW1lVVJMU3Ry
aW5nLCB2b2lkKiBjb250ZXh0LCBXS1dlYnNpdGVEYXRhU3RvcmVTZXRSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzRmlyc3RQYXJ0eUhvc3RDTkFNRURvbWFpbkZvclRlc3RpbmdGdW5jdGlvbiBjb21wbGV0
aW9uSGFuZGxlcikKK3sKKyNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQorICAg
IFdlYktpdDo6dG9JbXBsKGRhdGFTdG9yZVJlZiktPnNldFJlc291cmNlTG9hZFN0YXRpc3RpY3NG
aXJzdFBhcnR5SG9zdENOQU1FRG9tYWluRm9yVGVzdGluZyhVUkwoVVJMKCksIFdlYktpdDo6dG9J
bXBsKGZpcnN0UGFydHlVUkxTdHJpbmcpLT5zdHJpbmcoKSksIFVSTChVUkwoKSwgV2ViS2l0Ojp0
b0ltcGwoY25hbWVVUkxTdHJpbmcpLT5zdHJpbmcoKSksIFtjb250ZXh0LCBjb21wbGV0aW9uSGFu
ZGxlcl0geworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihjb250ZXh0KTsKKyAgICB9KTsKKyNl
bHNlCisgICAgY29tcGxldGlvbkhhbmRsZXIoY29udGV4dCk7CisjZW5kaWYKK30KKwordm9pZCBX
S1dlYnNpdGVEYXRhU3RvcmVTZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzVGhpcmRQYXJ0eUNOQU1F
RG9tYWluRm9yVGVzdGluZyhXS1dlYnNpdGVEYXRhU3RvcmVSZWYgZGF0YVN0b3JlUmVmLCBXS1N0
cmluZ1JlZiBjbmFtZVVSTFN0cmluZywgdm9pZCogY29udGV4dCwgV0tXZWJzaXRlRGF0YVN0b3Jl
U2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc1RoaXJkUGFydHlDTkFNRURvbWFpbkZvclRlc3RpbmdG
dW5jdGlvbiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9T
VEFUSVNUSUNTKQorICAgIFdlYktpdDo6dG9JbXBsKGRhdGFTdG9yZVJlZiktPnNldFJlc291cmNl
TG9hZFN0YXRpc3RpY3NUaGlyZFBhcnR5Q05BTUVEb21haW5Gb3JUZXN0aW5nKFVSTChVUkwoKSwg
V2ViS2l0Ojp0b0ltcGwoY25hbWVVUkxTdHJpbmcpLT5zdHJpbmcoKSksIFtjb250ZXh0LCBjb21w
bGV0aW9uSGFuZGxlcl0geworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihjb250ZXh0KTsKKyAg
ICB9KTsKKyNlbHNlCisgICAgY29tcGxldGlvbkhhbmRsZXIoY29udGV4dCk7CisjZW5kaWYKK30K
Kwogdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVTZXRBcHBCb3VuZERvbWFpbnNGb3JUZXN0aW5nKFdL
QXJyYXlSZWYgb3JpZ2luVVJMc1JlZiwgdm9pZCogY29udGV4dCwgV0tXZWJzaXRlRGF0YVN0b3Jl
U2V0QXBwQm91bmREb21haW5zRm9yVGVzdGluZ0Z1bmN0aW9uIGNvbXBsZXRpb25IYW5kbGVyKQog
ewogI2lmIFBMQVRGT1JNKENPQ09BKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0MvV0tXZWJzaXRlRGF0YVN0b3JlUmVmLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQy9XS1dlYnNpdGVEYXRhU3RvcmVSZWYuaAppbmRleCBkOGI4ZDFmNDBiODY1NDM4YTI4
ODE0MzgwOTdlYmMwZjBjN2UxZmRjLi5lYjgyZmFkNDQ2OGY2ZjM0N2IwYmQ4ZDQ2MjRmYzVhZDY1
ZDc5OTk3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1dlYnNp
dGVEYXRhU3RvcmVSZWYuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1dl
YnNpdGVEYXRhU3RvcmVSZWYuaApAQCAtMTMwLDYgKzEzMCwxMCBAQCB0eXBlZGVmIHZvaWQgKCpX
S1dlYnNpdGVEYXRhU3RvcmVTZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRmlyc3RQYXJ0eVdlYnNp
dGVEYXRhUgogV0tfRVhQT1JUIHZvaWQgV0tXZWJzaXRlRGF0YVN0b3JlU2V0UmVzb3VyY2VMb2Fk
U3RhdGlzdGljc0ZpcnN0UGFydHlXZWJzaXRlRGF0YVJlbW92YWxNb2RlRm9yVGVzdGluZyhXS1dl
YnNpdGVEYXRhU3RvcmVSZWYgZGF0YVN0b3JlUmVmLCBib29sIGVuYWJsZWQsIHZvaWQqIGNvbnRl
eHQsIFdLV2Vic2l0ZURhdGFTdG9yZVNldFJlc291cmNlTG9hZFN0YXRpc3RpY3NGaXJzdFBhcnR5
V2Vic2l0ZURhdGFSZW1vdmFsTW9kZUZvclRlc3RpbmdGdW5jdGlvbiBjb21wbGV0aW9uSGFuZGxl
cik7CiB0eXBlZGVmIHZvaWQgKCpXS1dlYnNpdGVEYXRhU3RvcmVTZXRSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzVG9TYW1lU2l0ZVN0cmljdENvb2tpZXNGb3JUZXN0aW5nRnVuY3Rpb24pKHZvaWQqIGZ1
bmN0aW9uQ29udGV4dCk7CiBXS19FWFBPUlQgdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVTZXRSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzVG9TYW1lU2l0ZVN0cmljdENvb2tpZXNGb3JUZXN0aW5nKFdLV2Vi
c2l0ZURhdGFTdG9yZVJlZiBkYXRhU3RvcmVSZWYsIFdLU3RyaW5nUmVmIGhvc3ROYW1lLCB2b2lk
KiBjb250ZXh0LCBXS1dlYnNpdGVEYXRhU3RvcmVTZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzVG9T
YW1lU2l0ZVN0cmljdENvb2tpZXNGb3JUZXN0aW5nRnVuY3Rpb24gY29tcGxldGlvbkhhbmRsZXIp
OwordHlwZWRlZiB2b2lkICgqV0tXZWJzaXRlRGF0YVN0b3JlU2V0UmVzb3VyY2VMb2FkU3RhdGlz
dGljc0ZpcnN0UGFydHlIb3N0Q05BTUVEb21haW5Gb3JUZXN0aW5nRnVuY3Rpb24pKHZvaWQqIGZ1
bmN0aW9uQ29udGV4dCk7CitXS19FWFBPUlQgdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVTZXRSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzRmlyc3RQYXJ0eUhvc3RDTkFNRURvbWFpbkZvclRlc3RpbmcoV0tX
ZWJzaXRlRGF0YVN0b3JlUmVmIGRhdGFTdG9yZVJlZiwgV0tTdHJpbmdSZWYgZmlyc3RQYXJ0eVVS
TFN0cmluZywgV0tTdHJpbmdSZWYgY25hbWVVUkxTdHJpbmcsIHZvaWQqIGNvbnRleHQsIFdLV2Vi
c2l0ZURhdGFTdG9yZVNldFJlc291cmNlTG9hZFN0YXRpc3RpY3NGaXJzdFBhcnR5SG9zdENOQU1F
RG9tYWluRm9yVGVzdGluZ0Z1bmN0aW9uIGNvbXBsZXRpb25IYW5kbGVyKTsKK3R5cGVkZWYgdm9p
ZCAoKldLV2Vic2l0ZURhdGFTdG9yZVNldFJlc291cmNlTG9hZFN0YXRpc3RpY3NUaGlyZFBhcnR5
Q05BTUVEb21haW5Gb3JUZXN0aW5nRnVuY3Rpb24pKHZvaWQqIGZ1bmN0aW9uQ29udGV4dCk7CitX
S19FWFBPUlQgdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVTZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
VGhpcmRQYXJ0eUNOQU1FRG9tYWluRm9yVGVzdGluZyhXS1dlYnNpdGVEYXRhU3RvcmVSZWYgZGF0
YVN0b3JlUmVmLCBXS1N0cmluZ1JlZiBjbmFtZVVSTFN0cmluZywgdm9pZCogY29udGV4dCwgV0tX
ZWJzaXRlRGF0YVN0b3JlU2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc1RoaXJkUGFydHlDTkFNRURv
bWFpbkZvclRlc3RpbmdGdW5jdGlvbiBjb21wbGV0aW9uSGFuZGxlcik7CiB0eXBlZGVmIHZvaWQg
KCpXS1dlYnNpdGVEYXRhU3RvcmVTZXRBcHBCb3VuZERvbWFpbnNGb3JUZXN0aW5nRnVuY3Rpb24p
KHZvaWQqIGZ1bmN0aW9uQ29udGV4dCk7CiBXS19FWFBPUlQgdm9pZCBXS1dlYnNpdGVEYXRhU3Rv
cmVTZXRBcHBCb3VuZERvbWFpbnNGb3JUZXN0aW5nKFdLQXJyYXlSZWYgb3JpZ2luVVJMc1JlZiwg
dm9pZCogY29udGV4dCwgV0tXZWJzaXRlRGF0YVN0b3JlU2V0QXBwQm91bmREb21haW5zRm9yVGVz
dGluZ0Z1bmN0aW9uIGNvbXBsZXRpb25IYW5kbGVyKTsKIHR5cGVkZWYgdm9pZCAoKldLV2Vic2l0
ZURhdGFTdG9yZVN0YXRpc3RpY3NSZXNldFRvQ29uc2lzdGVudFN0YXRlRnVuY3Rpb24pKHZvaWQq
IGZ1bmN0aW9uQ29udGV4dCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9O
ZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
TmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcAppbmRleCAyMjdjNWRjNGJjZDZmZDJjNTUy
OTczMDljNmYzZTJhOGY4YThmMjdiLi5kMTI1MDIwYTU5NWQyOTg4OTY5M2I0MjMwYzEwMWQ4MzI0
M2FlM2JlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdv
cmtQcm9jZXNzUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsv
TmV0d29ya1Byb2Nlc3NQcm94eS5jcHAKQEAgLTExOTUsNiArMTE5NSwxNSBAQCB2b2lkIE5ldHdv
cmtQcm9jZXNzUHJveHk6OnNldFRvU2FtZVNpdGVTdHJpY3RDb29raWVzRm9yVGVzdGluZyhQQUw6
OlNlc3Npb25JRCBzZQogICAgIHNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6TmV0d29ya1By
b2Nlc3M6OlNldFRvU2FtZVNpdGVTdHJpY3RDb29raWVzRm9yVGVzdGluZyhzZXNzaW9uSUQsIGRv
bWFpbiksIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKIH0KIAordm9pZCBOZXR3b3JrUHJv
Y2Vzc1Byb3h5OjpzZXRGaXJzdFBhcnR5SG9zdENOQU1FRG9tYWluRm9yVGVzdGluZyhQQUw6OlNl
c3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFN0cmluZyYgZmlyc3RQYXJ0eUhvc3QsIGNvbnN0IFJl
Z2lzdHJhYmxlRG9tYWluJiBjbmFtZURvbWFpbiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYm
IGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIHNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6
TmV0d29ya1Byb2Nlc3M6OlNldEZpcnN0UGFydHlIb3N0Q05BTUVEb21haW5Gb3JUZXN0aW5nKHNl
c3Npb25JRCwgZmlyc3RQYXJ0eUhvc3QsIGNuYW1lRG9tYWluKSwgV1RGTW92ZShjb21wbGV0aW9u
SGFuZGxlcikpOworfQorCit2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OnNldFRoaXJkUGFydHlD
TkFNRURvbWFpbkZvclRlc3RpbmcoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBXZWJD
b3JlOjpSZWdpc3RyYWJsZURvbWFpbiYgZG9tYWluLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+
JiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2Vz
OjpOZXR3b3JrUHJvY2Vzczo6U2V0VGhpcmRQYXJ0eUNOQU1FRG9tYWluRm9yVGVzdGluZyhzZXNz
aW9uSUQsIGRvbWFpbiksIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKK30KIHZvaWQgTmV0
d29ya1Byb2Nlc3NQcm94eTo6c2V0RG9tYWluc1dpdGhVc2VySW50ZXJhY3Rpb24oSGFzaFNldDxX
ZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbj4mJiBkb21haW5zKQogewogICAgIHByb2Nlc3NQb29s
KCkuc2V0RG9tYWluc1dpdGhVc2VySW50ZXJhY3Rpb24oV1RGTW92ZShkb21haW5zKSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJv
eHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94
eS5oCmluZGV4IDg1NDUwMmNiYzZlZGE0YTYwMGZjODFiMWJjMmUwMDFjNjYzOGRhNDIuLmE0MDk0
MDQxNjUwODVhMjhmNjI4MDU4MmYxZjQwNTI0Yjc5NWQ5NDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oCkBAIC0xODUs
NiArMTg1LDggQEAgcHVibGljOgogICAgIHZvaWQgc2V0U2hvdWxkRW5ibGVTYW1lU2l0ZVN0cmlj
dEVuZm9yY2VtZW50Rm9yVGVzdGluZyhQQUw6OlNlc3Npb25JRCwgV2ViQ29yZTo6U2FtZVNpdGVT
dHJpY3RFbmZvcmNlbWVudEVuYWJsZWQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAg
ICAgdm9pZCBzZXRGaXJzdFBhcnR5V2Vic2l0ZURhdGFSZW1vdmFsTW9kZUZvclRlc3RpbmcoUEFM
OjpTZXNzaW9uSUQsIFdlYkNvcmU6OkZpcnN0UGFydHlXZWJzaXRlRGF0YVJlbW92YWxNb2RlLCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogICAgIHZvaWQgc2V0VG9TYW1lU2l0ZVN0cmlj
dENvb2tpZXNGb3JUZXN0aW5nKFBBTDo6U2Vzc2lvbklELCBjb25zdCBSZWdpc3RyYWJsZURvbWFp
biYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CisgICAgdm9pZCBzZXRGaXJzdFBhcnR5
SG9zdENOQU1FRG9tYWluRm9yVGVzdGluZyhQQUw6OlNlc3Npb25JRCwgY29uc3QgU3RyaW5nJiBm
aXJzdFBhcnR5SG9zdCwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIGNuYW1lRG9tYWluLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOworICAgIHZvaWQgc2V0VGhpcmRQYXJ0eUNOQU1FRG9t
YWluRm9yVGVzdGluZyhQQUw6OlNlc3Npb25JRCwgY29uc3QgV2ViQ29yZTo6UmVnaXN0cmFibGVE
b21haW4mLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogICAgIHZvaWQgc2V0RG9tYWlu
c1dpdGhVc2VySW50ZXJhY3Rpb24oSGFzaFNldDxXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbj4m
Jik7CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJv
Y2Vzc1Bvb2wuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3Bw
CmluZGV4IDYzM2RiZjJhMTA0OTE5NTU5MjY0OTk3Yjc4MzE4N2NhNTIxZjRkOGMuLjZkNmIzNGQ3
YWZkZjRjZTY0MDU5YzA2ZmQxYzg4ZDUwYWM2ODZjNzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAKQEAgLTYwMSw2ICs2MDEsNyBAQCBOZXR3b3JrUHJvY2Vz
c1Byb3h5JiBXZWJQcm9jZXNzUG9vbDo6ZW5zdXJlTmV0d29ya1Byb2Nlc3MoV2Vic2l0ZURhdGFT
dG9yZSogd2l0aAogI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCiAgICAgV2Vi
Q29yZTo6VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9kZSB0aGlyZFBhcnR5Q29va2llQmxvY2tp
bmdNb2RlID0gV2ViQ29yZTo6VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9kZTo6QWxsOwogICAg
IFdlYkNvcmU6OlNhbWVTaXRlU3RyaWN0RW5mb3JjZW1lbnRFbmFibGVkIHNhbWVTaXRlU3RyaWN0
RW5mb3JjZW1lbnRFbmFibGVkID0gV2ViQ29yZTo6U2FtZVNpdGVTdHJpY3RFbmZvcmNlbWVudEVu
YWJsZWQ6Ok5vOworICAgIFdlYkNvcmU6OkNOQU1FQ2xvYWtpbmdNaXRpZ2F0aW9uRW5hYmxlZCBj
bmFtZUNsb2FraW5nTWl0aWdhdGlvbkVuYWJsZWQgPSBXZWJDb3JlOjpDTkFNRUNsb2FraW5nTWl0
aWdhdGlvbkVuYWJsZWQ6Ok5vOwogI2VuZGlmCiAgICAgV2ViQ29yZTo6Rmlyc3RQYXJ0eVdlYnNp
dGVEYXRhUmVtb3ZhbE1vZGUgZmlyc3RQYXJ0eVdlYnNpdGVEYXRhUmVtb3ZhbE1vZGUgPSBXZWJD
b3JlOjpGaXJzdFBhcnR5V2Vic2l0ZURhdGFSZW1vdmFsTW9kZTo6QWxsQnV0Q29va2llczsKICAg
ICBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiBzdGFuZGFsb25lQXBwbGljYXRpb25Eb21haW47
CkBAIC02MzQsNiArNjM1LDcgQEAgTmV0d29ya1Byb2Nlc3NQcm94eSYgV2ViUHJvY2Vzc1Bvb2w6
OmVuc3VyZU5ldHdvcmtQcm9jZXNzKFdlYnNpdGVEYXRhU3RvcmUqIHdpdGgKICNpZiBFTkFCTEUo
UkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQogICAgICAgICAgICAgdGhpcmRQYXJ0eUNvb2tpZUJs
b2NraW5nTW9kZSA9IG5ldHdvcmtTZXNzaW9uUGFyYW1ldGVycy5yZXNvdXJjZUxvYWRTdGF0aXN0
aWNzUGFyYW1ldGVycy50aGlyZFBhcnR5Q29va2llQmxvY2tpbmdNb2RlOwogICAgICAgICAgICAg
c2FtZVNpdGVTdHJpY3RFbmZvcmNlbWVudEVuYWJsZWQgPSBuZXR3b3JrU2Vzc2lvblBhcmFtZXRl
cnMucmVzb3VyY2VMb2FkU3RhdGlzdGljc1BhcmFtZXRlcnMuc2FtZVNpdGVTdHJpY3RFbmZvcmNl
bWVudEVuYWJsZWQ7CisgICAgICAgICAgICBjbmFtZUNsb2FraW5nTWl0aWdhdGlvbkVuYWJsZWQg
PSBuZXR3b3JrU2Vzc2lvblBhcmFtZXRlcnMucmVzb3VyY2VMb2FkU3RhdGlzdGljc1BhcmFtZXRl
cnMuY25hbWVDbG9ha2luZ01pdGlnYXRpb25FbmFibGVkOwogI2VuZGlmCiAgICAgICAgICAgICBm
aXJzdFBhcnR5V2Vic2l0ZURhdGFSZW1vdmFsTW9kZSA9IG5ldHdvcmtTZXNzaW9uUGFyYW1ldGVy
cy5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGFyYW1ldGVycy5maXJzdFBhcnR5V2Vic2l0ZURhdGFS
ZW1vdmFsTW9kZTsKICAgICAgICAgICAgIHN0YW5kYWxvbmVBcHBsaWNhdGlvbkRvbWFpbiA9IG5l
dHdvcmtTZXNzaW9uUGFyYW1ldGVycy5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGFyYW1ldGVycy5z
dGFuZGFsb25lQXBwbGljYXRpb25Eb21haW47CkBAIC02NjEsNiArNjYzLDcgQEAgTmV0d29ya1By
b2Nlc3NQcm94eSYgV2ViUHJvY2Vzc1Bvb2w6OmVuc3VyZU5ldHdvcmtQcm9jZXNzKFdlYnNpdGVE
YXRhU3RvcmUqIHdpdGgKICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQogICAg
ICAgICAgICAgdGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9kZSA9IG5ldHdvcmtTZXNzaW9uUGFy
YW1ldGVycy5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGFyYW1ldGVycy50aGlyZFBhcnR5Q29va2ll
QmxvY2tpbmdNb2RlOwogICAgICAgICAgICAgc2FtZVNpdGVTdHJpY3RFbmZvcmNlbWVudEVuYWJs
ZWQgPSBuZXR3b3JrU2Vzc2lvblBhcmFtZXRlcnMucmVzb3VyY2VMb2FkU3RhdGlzdGljc1BhcmFt
ZXRlcnMuc2FtZVNpdGVTdHJpY3RFbmZvcmNlbWVudEVuYWJsZWQ7CisgICAgICAgICAgICBjbmFt
ZUNsb2FraW5nTWl0aWdhdGlvbkVuYWJsZWQgPSBuZXR3b3JrU2Vzc2lvblBhcmFtZXRlcnMucmVz
b3VyY2VMb2FkU3RhdGlzdGljc1BhcmFtZXRlcnMuY25hbWVDbG9ha2luZ01pdGlnYXRpb25FbmFi
bGVkOwogI2VuZGlmCiAgICAgICAgICAgICBmaXJzdFBhcnR5V2Vic2l0ZURhdGFSZW1vdmFsTW9k
ZSA9IG5ldHdvcmtTZXNzaW9uUGFyYW1ldGVycy5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGFyYW1l
dGVycy5maXJzdFBhcnR5V2Vic2l0ZURhdGFSZW1vdmFsTW9kZTsKICAgICAgICAgICAgIHN0YW5k
YWxvbmVBcHBsaWNhdGlvbkRvbWFpbiA9IG5ldHdvcmtTZXNzaW9uUGFyYW1ldGVycy5yZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzUGFyYW1ldGVycy5zdGFuZGFsb25lQXBwbGljYXRpb25Eb21haW47CkBA
IC03MDQsNiArNzA3LDcgQEAgTmV0d29ya1Byb2Nlc3NQcm94eSYgV2ViUHJvY2Vzc1Bvb2w6OmVu
c3VyZU5ldHdvcmtQcm9jZXNzKFdlYnNpdGVEYXRhU3RvcmUqIHdpdGgKICNpZiBFTkFCTEUoUkVT
T1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQogICAgICAgICB0aGlyZFBhcnR5Q29va2llQmxvY2tpbmdN
b2RlLAogICAgICAgICBzYW1lU2l0ZVN0cmljdEVuZm9yY2VtZW50RW5hYmxlZCwKKyAgICAgICAg
Y25hbWVDbG9ha2luZ01pdGlnYXRpb25FbmFibGVkLAogI2VuZGlmCiAgICAgICAgIGZpcnN0UGFy
dHlXZWJzaXRlRGF0YVJlbW92YWxNb2RlLAogICAgICAgICBzdGFuZGFsb25lQXBwbGljYXRpb25E
b21haW4sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9D
b2NvYS9XZWJzaXRlRGF0YVN0b3JlQ29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJzaXRlRGF0YS9Db2NvYS9XZWJzaXRlRGF0YVN0b3JlQ29jb2EubW0KaW5kZXggZmIzYjIxZmQ5
MzYyOGEzNGFlM2Q0ZGVjZmQ0ZTc5N2NmNjUzMWY2NS4uMjU3ZmI3YTI5MDFhY2VmZTRjZGFkMzBi
ZTI0YTBiNjAwOTMxNjNjNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
c2l0ZURhdGEvQ29jb2EvV2Vic2l0ZURhdGFTdG9yZUNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL0NvY29hL1dlYnNpdGVEYXRhU3RvcmVDb2NvYS5tbQpA
QCAtOTQsNiArOTQsNyBAQCB2b2lkIFdlYnNpdGVEYXRhU3RvcmU6OnBsYXRmb3JtU2V0TmV0d29y
a1BhcmFtZXRlcnMoV2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRlcnMmCiAgICAgYm9vbCBzaG91bGRM
b2dDb29raWVJbmZvcm1hdGlvbiA9IGZhbHNlOwogICAgIGJvb2wgZW5hYmxlUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc0RlYnVnTW9kZSA9IGZhbHNlOwogICAgIGF1dG8gc2FtZVNpdGVTdHJpY3RFbmZv
cmNlbWVudEVuYWJsZWQgPSBXZWJDb3JlOjpTYW1lU2l0ZVN0cmljdEVuZm9yY2VtZW50RW5hYmxl
ZDo6Tm87CisgICAgYXV0byBjbmFtZUNsb2FraW5nTWl0aWdhdGlvbkVuYWJsZWQgPSBXZWJDb3Jl
OjpDTkFNRUNsb2FraW5nTWl0aWdhdGlvbkVuYWJsZWQ6Ok5vOwogICAgIGF1dG8gZmlyc3RQYXJ0
eVdlYnNpdGVEYXRhUmVtb3ZhbE1vZGUgPSBXZWJDb3JlOjpGaXJzdFBhcnR5V2Vic2l0ZURhdGFS
ZW1vdmFsTW9kZTo6QWxsQnV0Q29va2llczsKICAgICBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFp
biByZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFudWFsUHJldmFsZW50UmVzb3VyY2UgeyB9OwogI2lm
IEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCkBAIC0xMDIsNiArMTAzLDkgQEAgdm9p
ZCBXZWJzaXRlRGF0YVN0b3JlOjpwbGF0Zm9ybVNldE5ldHdvcmtQYXJhbWV0ZXJzKFdlYnNpdGVE
YXRhU3RvcmVQYXJhbWV0ZXJzJgogICAgIGlmIChbZGVmYXVsdHMgYm9vbEZvcktleTpbTlNTdHJp
bmcgc3RyaW5nV2l0aEZvcm1hdDpAIkV4cGVyaW1lbnRhbCVAIiwgV2ViUHJlZmVyZW5jZXNLZXk6
OmlzU2FtZVNpdGVTdHJpY3RFbmZvcmNlbWVudEVuYWJsZWRLZXkoKS5jcmVhdGVDRlN0cmluZygp
LmdldCgpXV0pCiAgICAgICAgIHNhbWVTaXRlU3RyaWN0RW5mb3JjZW1lbnRFbmFibGVkID0gV2Vi
Q29yZTo6U2FtZVNpdGVTdHJpY3RFbmZvcmNlbWVudEVuYWJsZWQ6OlllczsKIAorICAgIGlmIChb
ZGVmYXVsdHMgYm9vbEZvcktleTpbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpAIkV4cGVyaW1l
bnRhbCVAIiwgV2ViUHJlZmVyZW5jZXNLZXk6OmlzQ05BTUVDbG9ha2luZ01pdGlnYXRpb25FbmFi
bGVkS2V5KCkuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKV1dKQorICAgICAgICBjbmFtZUNsb2FraW5n
TWl0aWdhdGlvbkVuYWJsZWQgPSBXZWJDb3JlOjpDTkFNRUNsb2FraW5nTWl0aWdhdGlvbkVuYWJs
ZWQ6OlllczsKKwogICAgIGlmIChbZGVmYXVsdHMgYm9vbEZvcktleTpbTlNTdHJpbmcgc3RyaW5n
V2l0aEZvcm1hdDpAIkV4cGVyaW1lbnRhbCVAIiwgV2ViUHJlZmVyZW5jZXNLZXk6OmlzRmlyc3RQ
YXJ0eVdlYnNpdGVEYXRhUmVtb3ZhbERpc2FibGVkS2V5KCkuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQo
KV1dKQogICAgICAgICBmaXJzdFBhcnR5V2Vic2l0ZURhdGFSZW1vdmFsTW9kZSA9IFdlYkNvcmU6
OkZpcnN0UGFydHlXZWJzaXRlRGF0YVJlbW92YWxNb2RlOjpOb25lOwogICAgIGVsc2UgewpAQCAt
MTc4LDYgKzE4Miw3IEBAIHZvaWQgV2Vic2l0ZURhdGFTdG9yZTo6cGxhdGZvcm1TZXROZXR3b3Jr
UGFyYW1ldGVycyhXZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVycyYKICAgICBwYXJhbWV0ZXJzLm5l
dHdvcmtTZXNzaW9uUGFyYW1ldGVycy5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGFyYW1ldGVycy5z
aG91bGRJbmNsdWRlTG9jYWxob3N0ID0gc2hvdWxkSW5jbHVkZUxvY2FsaG9zdEluUmVzb3VyY2VM
b2FkU3RhdGlzdGljczsKICAgICBwYXJhbWV0ZXJzLm5ldHdvcmtTZXNzaW9uUGFyYW1ldGVycy5y
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGFyYW1ldGVycy5lbmFibGVEZWJ1Z01vZGUgPSBlbmFibGVS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGVidWdNb2RlOwogICAgIHBhcmFtZXRlcnMubmV0d29ya1Nl
c3Npb25QYXJhbWV0ZXJzLnJlc291cmNlTG9hZFN0YXRpc3RpY3NQYXJhbWV0ZXJzLnNhbWVTaXRl
U3RyaWN0RW5mb3JjZW1lbnRFbmFibGVkID0gc2FtZVNpdGVTdHJpY3RFbmZvcmNlbWVudEVuYWJs
ZWQ7CisgICAgcGFyYW1ldGVycy5uZXR3b3JrU2Vzc2lvblBhcmFtZXRlcnMucmVzb3VyY2VMb2Fk
U3RhdGlzdGljc1BhcmFtZXRlcnMuY25hbWVDbG9ha2luZ01pdGlnYXRpb25FbmFibGVkID0gY25h
bWVDbG9ha2luZ01pdGlnYXRpb25FbmFibGVkOwogICAgIHBhcmFtZXRlcnMubmV0d29ya1Nlc3Np
b25QYXJhbWV0ZXJzLnJlc291cmNlTG9hZFN0YXRpc3RpY3NQYXJhbWV0ZXJzLmZpcnN0UGFydHlX
ZWJzaXRlRGF0YVJlbW92YWxNb2RlID0gZmlyc3RQYXJ0eVdlYnNpdGVEYXRhUmVtb3ZhbE1vZGU7
CiAgICAgcGFyYW1ldGVycy5uZXR3b3JrU2Vzc2lvblBhcmFtZXRlcnMucmVzb3VyY2VMb2FkU3Rh
dGlzdGljc1BhcmFtZXRlcnMuc3RhbmRhbG9uZUFwcGxpY2F0aW9uRG9tYWluID0gV2ViQ29yZTo6
UmVnaXN0cmFibGVEb21haW4geyBtX2NvbmZpZ3VyYXRpb24tPnN0YW5kYWxvbmVBcHBsaWNhdGlv
blVSTCgpIH07CiAgICAgcGFyYW1ldGVycy5uZXR3b3JrU2Vzc2lvblBhcmFtZXRlcnMucmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc1BhcmFtZXRlcnMubWFudWFsUHJldmFsZW50UmVzb3VyY2UgPSBXVEZN
b3ZlKHJlc291cmNlTG9hZFN0YXRpc3RpY3NNYW51YWxQcmV2YWxlbnRSZXNvdXJjZSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0
b3JlLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRh
U3RvcmUuY3BwCmluZGV4IDFkYWFjNTQwMjA1ODFmN2FhN2Y4MTliNGI0NTAyY2U2Yzc5OGI4OTIu
LjQ4ODg3MjNlMGJkYTU3ODM4YzI4ODc5ZGNjZjI3ZTFlM2I0MTRmMjIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUu
Y3BwCkBAIC0xOTM2LDYgKzE5MzYsMzIgQEAgdm9pZCBXZWJzaXRlRGF0YVN0b3JlOjpzZXRSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzVG9TYW1lU2l0ZVN0cmljdENvb2tpZXNGb3JUZXN0aW4KICAgICAg
ICAgICAgIG5ldHdvcmtQcm9jZXNzLT5zZXRUb1NhbWVTaXRlU3RyaWN0Q29va2llc0ZvclRlc3Rp
bmcobV9zZXNzaW9uSUQsIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIHsgdXJsIH0sIFtjYWxs
YmFja0FnZ3JlZ2F0b3JdIHsgfSk7CiAgICAgfQogfQorCit2b2lkIFdlYnNpdGVEYXRhU3RvcmU6
OnNldFJlc291cmNlTG9hZFN0YXRpc3RpY3NGaXJzdFBhcnR5SG9zdENOQU1FRG9tYWluRm9yVGVz
dGluZyhjb25zdCBVUkwmIGZpcnN0UGFydHlVUkwsIGNvbnN0IFVSTCYgY25hbWVVUkwsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBpZiAoY25h
bWVVUkwuaG9zdCgpICE9ICJ0ZXN0d2Via2l0Lm9yZyIgJiYgY25hbWVVUkwuaG9zdCgpICE9ICIz
cmRwYXJ0eXRlc3R3ZWJraXQub3JnIikgeworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcigpOwor
ICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgYXV0byBjYWxsYmFja0FnZ3JlZ2F0b3IgPSBD
YWxsYmFja0FnZ3JlZ2F0b3I6OmNyZWF0ZShXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CisK
KyAgICBmb3IgKGF1dG8mIHByb2Nlc3NQb29sIDogcHJvY2Vzc1Bvb2xzKCkpCisgICAgICAgIHBy
b2Nlc3NQb29sLT5lbnN1cmVOZXR3b3JrUHJvY2VzcygpLnNldEZpcnN0UGFydHlIb3N0Q05BTUVE
b21haW5Gb3JUZXN0aW5nKG1fc2Vzc2lvbklELCBmaXJzdFBhcnR5VVJMLmhvc3QoKS50b1N0cmlu
ZygpLCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiB7IGNuYW1lVVJMIH0sIFtjYWxsYmFja0Fn
Z3JlZ2F0b3JdIHsgfSk7Cit9CisKK3ZvaWQgV2Vic2l0ZURhdGFTdG9yZTo6c2V0UmVzb3VyY2VM
b2FkU3RhdGlzdGljc1RoaXJkUGFydHlDTkFNRURvbWFpbkZvclRlc3RpbmcoY29uc3QgVVJMJiBj
bmFtZVVSTCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQor
eworICAgIGlmIChjbmFtZVVSTC5ob3N0KCkgIT0gInRlc3R3ZWJraXQub3JnIiAmJiBjbmFtZVVS
TC5ob3N0KCkgIT0gIjNyZHBhcnR5dGVzdHdlYmtpdC5vcmciKSB7CisgICAgICAgIGNvbXBsZXRp
b25IYW5kbGVyKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBhdXRvIGNhbGxiYWNr
QWdncmVnYXRvciA9IENhbGxiYWNrQWdncmVnYXRvcjo6Y3JlYXRlKFdURk1vdmUoY29tcGxldGlv
bkhhbmRsZXIpKTsKKworICAgIGZvciAoYXV0byYgcHJvY2Vzc1Bvb2wgOiBwcm9jZXNzUG9vbHMo
KSkKKyAgICAgICAgcHJvY2Vzc1Bvb2wtPmVuc3VyZU5ldHdvcmtQcm9jZXNzKCkuc2V0VGhpcmRQ
YXJ0eUNOQU1FRG9tYWluRm9yVGVzdGluZyhtX3Nlc3Npb25JRCwgV2ViQ29yZTo6UmVnaXN0cmFi
bGVEb21haW4geyBjbmFtZVVSTCB9LCBbY2FsbGJhY2tBZ2dyZWdhdG9yXSB7IH0pOworfQogI2Vu
ZGlmIC8vIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCiAKIHZvaWQgV2Vic2l0ZURh
dGFTdG9yZTo6c2V0Q2FjaGVNYXhBZ2VDYXBGb3JQcmV2YWxlbnRSZXNvdXJjZXMoU2Vjb25kcyBz
ZWNvbmRzLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCkBA
IC0yMjgzLDYgKzIzMDksNyBAQCBXZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVycyBXZWJzaXRlRGF0
YVN0b3JlOjpwYXJhbWV0ZXJzKCkKICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNT
KQogICAgICAgICB0aGlyZFBhcnR5Q29va2llQmxvY2tpbmdNb2RlKCksCiAgICAgICAgIFdlYkNv
cmU6OlNhbWVTaXRlU3RyaWN0RW5mb3JjZW1lbnRFbmFibGVkOjpObywKKyAgICAgICAgV2ViQ29y
ZTo6Q05BTUVDbG9ha2luZ01pdGlnYXRpb25FbmFibGVkOjpObywKICNlbmRpZgogICAgICAgICBm
aXJzdFBhcnR5V2Vic2l0ZURhdGFSZW1vdmFsTW9kZSwKICAgICAgICAgV1RGTW92ZShzdGFuZGFs
b25lQXBwbGljYXRpb25Eb21haW4pLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5oCmluZGV4IDBhN2Y4M2QyYjdkYzYzNTM4
Yzg1Nzg4MDBlNjE3YWZmYzVkM2YxOWQuLjRlYzEzZTE2ZmU0ODJkMjZhMmVhZmEzMTIzZTMyMzNh
NzM3Y2IxMmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRh
L1dlYnNpdGVEYXRhU3RvcmUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRl
RGF0YS9XZWJzaXRlRGF0YVN0b3JlLmgKQEAgLTIwMyw2ICsyMDMsOCBAQCBwdWJsaWM6CiAgICAg
dm9pZCBzZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU2hvdWxkRW5ibGVTYW1lU2l0ZVN0cmljdEVu
Zm9yY2VtZW50Rm9yVGVzdGluZyhib29sIGVuYWJsZWQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
KT4mJik7CiAgICAgdm9pZCBzZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRmlyc3RQYXJ0eVdlYnNp
dGVEYXRhUmVtb3ZhbE1vZGVGb3JUZXN0aW5nKGJvb2wgZW5hYmxlZCwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZCgpPiYmKTsKICAgICB2b2lkIHNldFJlc291cmNlTG9hZFN0YXRpc3RpY3NUb1NhbWVT
aXRlU3RyaWN0Q29va2llc0ZvclRlc3RpbmcoY29uc3QgVVJMJiwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZCgpPiYmKTsKKyAgICB2b2lkIHNldFJlc291cmNlTG9hZFN0YXRpc3RpY3NGaXJzdFBhcnR5
SG9zdENOQU1FRG9tYWluRm9yVGVzdGluZyhjb25zdCBVUkwmIGZpcnN0UGFydHlVUkwsIGNvbnN0
IFVSTCYgY25hbWVVUkwsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CisgICAgdm9pZCBz
ZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzVGhpcmRQYXJ0eUNOQU1FRG9tYWluRm9yVGVzdGluZyhj
b25zdCBVUkwmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogICAgIFdlYkNvcmU6OlRo
aXJkUGFydHlDb29raWVCbG9ja2luZ01vZGUgdGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9kZSgp
IGNvbnN0OwogICAgIGJvb2wgaXNJdHBTdGF0ZUV4cGxpY2l0bHlTZXQoKSBjb25zdCB7IHJldHVy
biBtX2lzSXRwU3RhdGVFeHBsaWNpdGx5U2V0OyB9CiAgICAgdm9pZCB1c2VFeHBsaWNpdElUUFN0
YXRlKCkgeyBtX2lzSXRwU3RhdGVFeHBsaWNpdGx5U2V0ID0gdHJ1ZTsgfQpkaWZmIC0tZ2l0IGEv
VG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDNmOWJjYzNiN2MyY2U5ZWMy
MmM1NjE1MjQyMjE2N2UwYWZmY2YyZTYuLmFlYjU3MzQ4OWQwZDE3NzQyNDczM2RjMGU3ZGYxOTUz
NzQ3NWJhYzggMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwzNSBAQAorMjAyMC0wOC0wNiAgSm9obiBXaWxhbmRlciAgPHdpbGFuZGVy
QGFwcGxlLmNvbT4KKworICAgICAgICBFeHBlcmltZW50YWw6IENhcCB0aGUgZXhwaXJ5IG9mIHBl
cnNpc3RlbnQgY29va2llcyBzZXQgaW4gM3JkLXBhcnR5IENOQU1FIGNsb2FrZWQgSFRUUCByZXNw
b25zZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIx
NTIwMQorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNTc0NTQ2MzM+CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBwYXRjaCBhZGRzIHR3byBUZXN0
UnVubmVyIGZ1bmN0aW9ucyB3aGljaCBhbGxvd3MgZm9yIHRlc3RpbmcKKyAgICAgICAgd2l0aCBk
YXRhIHRoYXQgd291bGQgb3RoZXJ3aXNlIGNvbWUgZnJvbSBETlMgcmVzb2x1dGlvbjoKKyAgICAg
ICAgLSBzdGF0aXN0aWNzU2V0Rmlyc3RQYXJ0eUhvc3RDTkFNRURvbWFpbigpCisgICAgICAgIC0g
c3RhdGlzdGljc1NldFRoaXJkUGFydHlDTkFNRURvbWFpbigpCisKKyAgICAgICAgKiBXZWJLaXRU
ZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0JpbmRpbmdzL1Rlc3RSdW5uZXIuaWRsOgorICAgICAg
ICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuY3BwOgor
ICAgICAgICAoV1RSOjpJbmplY3RlZEJ1bmRsZTo6ZGlkUmVjZWl2ZU1lc3NhZ2VUb1BhZ2UpOgor
ICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5jcHA6
CisgICAgICAgIChXVFI6OlRlc3RSdW5uZXI6OnN0YXRpc3RpY3NTZXRGaXJzdFBhcnR5SG9zdENO
QU1FRG9tYWluKToKKyAgICAgICAgKFdUUjo6VGVzdFJ1bm5lcjo6c3RhdGlzdGljc0NhbGxEaWRT
ZXRGaXJzdFBhcnR5SG9zdENOQU1FRG9tYWluQ2FsbGJhY2spOgorICAgICAgICAoV1RSOjpUZXN0
UnVubmVyOjpzdGF0aXN0aWNzU2V0VGhpcmRQYXJ0eUNOQU1FRG9tYWluKToKKyAgICAgICAgKFdU
Ujo6VGVzdFJ1bm5lcjo6c3RhdGlzdGljc0NhbGxEaWRTZXRUaGlyZFBhcnR5Q05BTUVEb21haW5D
YWxsYmFjayk6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0
UnVubmVyLmg6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5jcHA6
CisgICAgICAgIChXVFI6OlRlc3RDb250cm9sbGVyOjpzZXRTdGF0aXN0aWNzRmlyc3RQYXJ0eUhv
c3RDTkFNRURvbWFpbik6CisgICAgICAgIChXVFI6OlRlc3RDb250cm9sbGVyOjpzZXRTdGF0aXN0
aWNzVGhpcmRQYXJ0eUNOQU1FRG9tYWluKToKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL1Rl
c3RDb250cm9sbGVyLmg6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlv
bi5jcHA6CisgICAgICAgIChXVFI6OlRlc3RJbnZvY2F0aW9uOjpkaWRSZWNlaXZlTWVzc2FnZUZy
b21JbmplY3RlZEJ1bmRsZSk6CisgICAgICAgIChXVFI6OlRlc3RJbnZvY2F0aW9uOjpkaWRTZXRG
aXJzdFBhcnR5SG9zdENOQU1FRG9tYWluKToKKyAgICAgICAgKFdUUjo6VGVzdEludm9jYXRpb246
OmRpZFNldFRoaXJkUGFydHlDTkFNRURvbWFpbik6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5l
ci9UZXN0SW52b2NhdGlvbi5oOgorCiAyMDIwLTA4LTA1ICBKb25hdGhhbiBCZWRhcmQgIDxqYmVk
YXJkQGFwcGxlLmNvbT4KIAogICAgICAgICByZXN1bHRzLndlYmtpdC5vcmc6IFJldHVybiB3b3Jr
ZXIgc3RhdHVzIHRvIGNhbGxlcgpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9J
bmplY3RlZEJ1bmRsZS9CaW5kaW5ncy9UZXN0UnVubmVyLmlkbCBiL1Rvb2xzL1dlYktpdFRlc3RS
dW5uZXIvSW5qZWN0ZWRCdW5kbGUvQmluZGluZ3MvVGVzdFJ1bm5lci5pZGwKaW5kZXggNmI4OTgw
ZjQ5MjgyYjU3M2UxM2YwNDVjZmUwZDU2YmM2NDQ3YWZiYS4uZGM2M2M1ZGQ4YmI0ZDg2YmUzZjYy
NzFhZGEyODhmODdmZDQyMGExOSAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9J
bmplY3RlZEJ1bmRsZS9CaW5kaW5ncy9UZXN0UnVubmVyLmlkbAorKysgYi9Ub29scy9XZWJLaXRU
ZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0JpbmRpbmdzL1Rlc3RSdW5uZXIuaWRsCkBAIC0zNDcs
NiArMzQ3LDggQEAgaW50ZXJmYWNlIFRlc3RSdW5uZXIgewogICAgIHZvaWQgc2V0U3RhdGlzdGlj
c1Nob3VsZEJsb2NrVGhpcmRQYXJ0eUNvb2tpZXMoYm9vbGVhbiB2YWx1ZSwgb2JqZWN0IGNhbGxi
YWNrLCBvcHRpb25hbCBib29sZWFuIG9ubHlPblNpdGVzV2l0aG91dFVzZXJJbnRlcmFjdGlvbik7
CiAgICAgdm9pZCBzZXRTdGF0aXN0aWNzRmlyc3RQYXJ0eVdlYnNpdGVEYXRhUmVtb3ZhbE1vZGUo
Ym9vbGVhbiB2YWx1ZSwgb2JqZWN0IGNhbGxiYWNrKTsKICAgICB2b2lkIHN0YXRpc3RpY3NTZXRU
b1NhbWVTaXRlU3RyaWN0Q29va2llcyhET01TdHJpbmcgaG9zdE5hbWUsIG9iamVjdCBjYWxsYmFj
ayk7CisgICAgdm9pZCBzdGF0aXN0aWNzU2V0Rmlyc3RQYXJ0eUhvc3RDTkFNRURvbWFpbihET01T
dHJpbmcgZmlyc3RQYXJ0eVVSTFN0cmluZywgRE9NU3RyaW5nIGNuYW1lVVJMU3RyaW5nLCBvYmpl
Y3QgY2FsbGJhY2spOworICAgIHZvaWQgc3RhdGlzdGljc1NldFRoaXJkUGFydHlDTkFNRURvbWFp
bihET01TdHJpbmcgY25hbWVVUkxTdHJpbmcsIG9iamVjdCBjYWxsYmFjayk7CiAgICAgdm9pZCBs
b2FkZWRUaGlyZFBhcnR5RG9tYWlucyhvYmplY3QgY2FsbGJhY2spOwogCiAgICAgLy8gSW5qZWN0
ZWQgYnVuZGxlIGZvcm0gY2xpZW50LgpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5l
ci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5jcHAgYi9Ub29scy9XZWJLaXRUZXN0UnVu
bmVyL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmNwcAppbmRleCBlMjU0Y2E3MmRiY2Yz
MTAyNzQxZmNmMTdjMTUyNTU0MjZkMGY1ZjBlLi5hZjc0M2I2M2U4ZmYwYTQ2NmZkNGE4OWFlMDg1
MzZiZmMwZDhhYjUxIDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVk
QnVuZGxlL0luamVjdGVkQnVuZGxlLmNwcAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0lu
amVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmNwcApAQCAtMzU5LDYgKzM1OSwxNiBAQCB2b2lk
IEluamVjdGVkQnVuZGxlOjpkaWRSZWNlaXZlTWVzc2FnZVRvUGFnZShXS0J1bmRsZVBhZ2VSZWYg
cGFnZSwgV0tTdHJpbmdSZWYgbQogICAgICAgICByZXR1cm47CiAgICAgfQogCisgICAgaWYgKFdL
U3RyaW5nSXNFcXVhbFRvVVRGOENTdHJpbmcobWVzc2FnZU5hbWUsICJDYWxsRGlkU2V0Rmlyc3RQ
YXJ0eUhvc3RDTkFNRURvbWFpbiIpKSB7CisgICAgICAgIG1fdGVzdFJ1bm5lci0+c3RhdGlzdGlj
c0NhbGxEaWRTZXRGaXJzdFBhcnR5SG9zdENOQU1FRG9tYWluQ2FsbGJhY2soKTsKKyAgICAgICAg
cmV0dXJuOworICAgIH0KKworICAgIGlmIChXS1N0cmluZ0lzRXF1YWxUb1VURjhDU3RyaW5nKG1l
c3NhZ2VOYW1lLCAiQ2FsbERpZFNldFRoaXJkUGFydHlDTkFNRURvbWFpbiIpKSB7CisgICAgICAg
IG1fdGVzdFJ1bm5lci0+c3RhdGlzdGljc0NhbGxEaWRTZXRUaGlyZFBhcnR5Q05BTUVEb21haW5D
YWxsYmFjaygpOworICAgICAgICByZXR1cm47CisgICAgfQorCiAgICAgaWYgKFdLU3RyaW5nSXNF
cXVhbFRvVVRGOENTdHJpbmcobWVzc2FnZU5hbWUsICJDYWxsRGlkUmVzZXRTdGF0aXN0aWNzVG9D
b25zaXN0ZW50U3RhdGUiKSkgewogICAgICAgICBtX3Rlc3RSdW5uZXItPnN0YXRpc3RpY3NDYWxs
RGlkUmVzZXRUb0NvbnNpc3RlbnRTdGF0ZUNhbGxiYWNrKCk7CiAgICAgICAgIHJldHVybjsKZGlm
ZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5l
ci5jcHAgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIu
Y3BwCmluZGV4IGQ0Mzg2ZTZmOWYzNTBlZTAxOTg2YjkyMDFiOTAzYjgwNDAyNjY0YTcuLjI5Njcy
ZjllMTU1OWNhMmRlMGM2ODlhNDZjM2VhMmM1NjAxYjYwZTggMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dl
YktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5jcHAKKysrIGIvVG9vbHMv
V2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmNwcApAQCAtNzU4LDYg
Kzc1OCw4IEBAIGVudW0gewogICAgIFN0YXRpc3RpY3NEaWRTZXRTaG91bGRCbG9ja1RoaXJkUGFy
dHlDb29raWVzQ2FsbGJhY2tJRCwKICAgICBTdGF0aXN0aWNzRGlkU2V0Rmlyc3RQYXJ0eVdlYnNp
dGVEYXRhUmVtb3ZhbE1vZGVDYWxsYmFja0lELAogICAgIFN0YXRpc3RpY3NEaWRTZXRUb1NhbWVT
aXRlU3RyaWN0Q29va2llc0NhbGxiYWNrSUQsCisgICAgU3RhdGlzdGljc0RpZFNldEZpcnN0UGFy
dHlIb3N0Q05BTUVEb21haW5DYWxsYmFja0lELAorICAgIFN0YXRpc3RpY3NEaWRTZXRUaGlyZFBh
cnR5Q05BTUVEb21haW5DYWxsYmFja0lELAogICAgIEFsbFN0b3JhZ2VBY2Nlc3NFbnRyaWVzQ2Fs
bGJhY2tJRCwKICAgICBMb2FkZWRUaGlyZFBhcnR5RG9tYWluc0NhbGxiYWNrSUQsCiAgICAgRGlk
UmVtb3ZlQWxsU2Vzc2lvbkNyZWRlbnRpYWxzQ2FsbGJhY2tJRCwKQEAgLTIzNjQsNiArMjM2Niw1
MiBAQCB2b2lkIFRlc3RSdW5uZXI6OnN0YXRpc3RpY3NDYWxsRGlkU2V0VG9TYW1lU2l0ZVN0cmlj
dENvb2tpZXNDYWxsYmFjaygpCiAgICAgY2FsbFRlc3RSdW5uZXJDYWxsYmFjayhTdGF0aXN0aWNz
RGlkU2V0VG9TYW1lU2l0ZVN0cmljdENvb2tpZXNDYWxsYmFja0lEKTsKIH0KIAorCit2b2lkIFRl
c3RSdW5uZXI6OnN0YXRpc3RpY3NTZXRGaXJzdFBhcnR5SG9zdENOQU1FRG9tYWluKEpTU3RyaW5n
UmVmIGZpcnN0UGFydHlVUkxTdHJpbmcsIEpTU3RyaW5nUmVmIGNuYW1lVVJMU3RyaW5nLCBKU1Zh
bHVlUmVmIGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIGNhY2hlVGVzdFJ1bm5lckNhbGxiYWNr
KFN0YXRpc3RpY3NEaWRTZXRGaXJzdFBhcnR5SG9zdENOQU1FRG9tYWluQ2FsbGJhY2tJRCwgY29t
cGxldGlvbkhhbmRsZXIpOworCisgICAgVmVjdG9yPFdLUmV0YWluUHRyPFdLU3RyaW5nUmVmPj4g
a2V5czsKKyAgICBWZWN0b3I8V0tSZXRhaW5QdHI8V0tUeXBlUmVmPj4gdmFsdWVzOworICAgIAor
ICAgIGtleXMuYXBwZW5kKGFkb3B0V0soV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoIkZp
cnN0UGFydHlVUkwiKSkpOworICAgIHZhbHVlcy5hcHBlbmQoYWRvcHRXSyhXS1N0cmluZ0NyZWF0
ZVdpdGhKU1N0cmluZyhmaXJzdFBhcnR5VVJMU3RyaW5nKSkpOworICAgIAorICAgIGtleXMuYXBw
ZW5kKGFkb3B0V0soV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoIkNOQU1FIikpKTsKKyAg
ICB2YWx1ZXMuYXBwZW5kKGFkb3B0V0soV0tTdHJpbmdDcmVhdGVXaXRoSlNTdHJpbmcoY25hbWVV
UkxTdHJpbmcpKSk7CisgICAgCisgICAgVmVjdG9yPFdLU3RyaW5nUmVmPiByYXdLZXlzKGtleXMu
c2l6ZSgpKTsKKyAgICBWZWN0b3I8V0tUeXBlUmVmPiByYXdWYWx1ZXModmFsdWVzLnNpemUoKSk7
CisgICAgCisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBrZXlzLnNpemUoKTsgKytpKSB7Cisg
ICAgICAgIHJhd0tleXNbaV0gPSBrZXlzW2ldLmdldCgpOworICAgICAgICByYXdWYWx1ZXNbaV0g
PSB2YWx1ZXNbaV0uZ2V0KCk7CisgICAgfQorCisgICAgYXV0byBtZXNzYWdlTmFtZSA9IGFkb3B0
V0soV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoIlN0YXRpc3RpY3NTZXRGaXJzdFBhcnR5
SG9zdENOQU1FRG9tYWluIikpOworICAgIGF1dG8gbWVzc2FnZUJvZHkgPSBhZG9wdFdLKFdLRGlj
dGlvbmFyeUNyZWF0ZShyYXdLZXlzLmRhdGEoKSwgcmF3VmFsdWVzLmRhdGEoKSwgcmF3S2V5cy5z
aXplKCkpKTsKKyAgICBXS0J1bmRsZVBvc3RNZXNzYWdlKEluamVjdGVkQnVuZGxlOjpzaW5nbGV0
b24oKS5idW5kbGUoKSwgbWVzc2FnZU5hbWUuZ2V0KCksIG1lc3NhZ2VCb2R5LmdldCgpKTsKK30K
Kwordm9pZCBUZXN0UnVubmVyOjpzdGF0aXN0aWNzQ2FsbERpZFNldEZpcnN0UGFydHlIb3N0Q05B
TUVEb21haW5DYWxsYmFjaygpCit7CisgICAgY2FsbFRlc3RSdW5uZXJDYWxsYmFjayhTdGF0aXN0
aWNzRGlkU2V0Rmlyc3RQYXJ0eUhvc3RDTkFNRURvbWFpbkNhbGxiYWNrSUQpOworfQorCit2b2lk
IFRlc3RSdW5uZXI6OnN0YXRpc3RpY3NTZXRUaGlyZFBhcnR5Q05BTUVEb21haW4oSlNTdHJpbmdS
ZWYgY25hbWVVUkxTdHJpbmcsIEpTVmFsdWVSZWYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAg
Y2FjaGVUZXN0UnVubmVyQ2FsbGJhY2soU3RhdGlzdGljc0RpZFNldFRoaXJkUGFydHlDTkFNRURv
bWFpbkNhbGxiYWNrSUQsIGNvbXBsZXRpb25IYW5kbGVyKTsKKworICAgIGF1dG8gbWVzc2FnZU5h
bWUgPSBhZG9wdFdLKFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJTdGF0aXN0aWNzU2V0
VGhpcmRQYXJ0eUNOQU1FRG9tYWluIikpOworICAgIGF1dG8gbWVzc2FnZUJvZHkgPSBhZG9wdFdL
KFdLU3RyaW5nQ3JlYXRlV2l0aEpTU3RyaW5nKGNuYW1lVVJMU3RyaW5nKSk7CisgICAgV0tCdW5k
bGVQb3N0TWVzc2FnZShJbmplY3RlZEJ1bmRsZTo6c2luZ2xldG9uKCkuYnVuZGxlKCksIG1lc3Nh
Z2VOYW1lLmdldCgpLCBtZXNzYWdlQm9keS5nZXQoKSk7Cit9CisKK3ZvaWQgVGVzdFJ1bm5lcjo6
c3RhdGlzdGljc0NhbGxEaWRTZXRUaGlyZFBhcnR5Q05BTUVEb21haW5DYWxsYmFjaygpCit7Cisg
ICAgY2FsbFRlc3RSdW5uZXJDYWxsYmFjayhTdGF0aXN0aWNzRGlkU2V0VGhpcmRQYXJ0eUNOQU1F
RG9tYWluQ2FsbGJhY2tJRCk7Cit9CisKIHZvaWQgVGVzdFJ1bm5lcjo6c3RhdGlzdGljc1Jlc2V0
VG9Db25zaXN0ZW50U3RhdGUoSlNWYWx1ZVJlZiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBj
YWNoZVRlc3RSdW5uZXJDYWxsYmFjayhTdGF0aXN0aWNzRGlkUmVzZXRUb0NvbnNpc3RlbnRTdGF0
ZUNhbGxiYWNrSUQsIGNvbXBsZXRpb25IYW5kbGVyKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktp
dFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5oIGIvVG9vbHMvV2ViS2l0VGVz
dFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmgKaW5kZXggMWZlMzc5YTU3YWI4MmZm
ZTQzMTlkYTQ4MDBmMDQ4MzkzMDAzZjc1MS4uYWI2NWQ0MGQ0MjI2ODA5MzQwOTJjZjNmODJkODFj
NWU5YWIyMGQwMyAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1
bmRsZS9UZXN0UnVubmVyLmgKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1
bmRsZS9UZXN0UnVubmVyLmgKQEAgLTQ1Myw2ICs0NTMsMTAgQEAgcHVibGljOgogICAgIHZvaWQg
c3RhdGlzdGljc0NhbGxEaWRTZXRGaXJzdFBhcnR5V2Vic2l0ZURhdGFSZW1vdmFsTW9kZUNhbGxi
YWNrKCk7CiAgICAgdm9pZCBzdGF0aXN0aWNzU2V0VG9TYW1lU2l0ZVN0cmljdENvb2tpZXMoSlNT
dHJpbmdSZWYgaG9zdE5hbWUsIEpTVmFsdWVSZWYgY2FsbGJhY2spOwogICAgIHZvaWQgc3RhdGlz
dGljc0NhbGxEaWRTZXRUb1NhbWVTaXRlU3RyaWN0Q29va2llc0NhbGxiYWNrKCk7CisgICAgdm9p
ZCBzdGF0aXN0aWNzU2V0Rmlyc3RQYXJ0eUhvc3RDTkFNRURvbWFpbihKU1N0cmluZ1JlZiBmaXJz
dFBhcnR5VVJMU3RyaW5nLCBKU1N0cmluZ1JlZiBjbmFtZVVSTFN0cmluZywgSlNWYWx1ZVJlZiBj
b21wbGV0aW9uSGFuZGxlcik7CisgICAgdm9pZCBzdGF0aXN0aWNzQ2FsbERpZFNldEZpcnN0UGFy
dHlIb3N0Q05BTUVEb21haW5DYWxsYmFjaygpOworICAgIHZvaWQgc3RhdGlzdGljc1NldFRoaXJk
UGFydHlDTkFNRURvbWFpbihKU1N0cmluZ1JlZiBjbmFtZVVSTFN0cmluZywgSlNWYWx1ZVJlZiBj
b21wbGV0aW9uSGFuZGxlcik7CisgICAgdm9pZCBzdGF0aXN0aWNzQ2FsbERpZFNldFRoaXJkUGFy
dHlDTkFNRURvbWFpbkNhbGxiYWNrKCk7CiAgICAgdm9pZCBzdGF0aXN0aWNzUmVzZXRUb0NvbnNp
c3RlbnRTdGF0ZShKU1ZhbHVlUmVmIGNvbXBsZXRpb25IYW5kbGVyKTsKICAgICB2b2lkIHN0YXRp
c3RpY3NDYWxsRGlkUmVzZXRUb0NvbnNpc3RlbnRTdGF0ZUNhbGxiYWNrKCk7CiAgICAgdm9pZCBs
b2FkZWRUaGlyZFBhcnR5RG9tYWlucyhKU1ZhbHVlUmVmIGNhbGxiYWNrKTsKZGlmZiAtLWdpdCBh
L1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwIGIvVG9vbHMvV2ViS2l0
VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5jcHAKaW5kZXggZmFmYjhjZjZiOTUyZTNjMDQ4NDYz
YmE1N2Y1YzRjZjQ4MTFkZmVhZC4uYTQzZmE4MTM0YTdhYjc2YzNhM2I3ZjgyMDhkYzkyNjY3Mjc0
NzQ2MSAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5j
cHAKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5jcHAKQEAgLTM4
NjIsNiArMzg2MiwyMiBAQCB2b2lkIFRlc3RDb250cm9sbGVyOjpzZXRTdGF0aXN0aWNzVG9TYW1l
U2l0ZVN0cmljdENvb2tpZXMoV0tTdHJpbmdSZWYgaG9zdE5hbWUpCiAgICAgbV9jdXJyZW50SW52
b2NhdGlvbi0+ZGlkU2V0VG9TYW1lU2l0ZVN0cmljdENvb2tpZXMoKTsKIH0KIAordm9pZCBUZXN0
Q29udHJvbGxlcjo6c2V0U3RhdGlzdGljc0ZpcnN0UGFydHlIb3N0Q05BTUVEb21haW4oV0tTdHJp
bmdSZWYgZmlyc3RQYXJ0eVVSTFN0cmluZywgV0tTdHJpbmdSZWYgY25hbWVVUkxTdHJpbmcpCit7
CisgICAgUmVzb3VyY2VTdGF0aXN0aWNzQ2FsbGJhY2tDb250ZXh0IGNvbnRleHQoKnRoaXMpOwor
ICAgIFdLV2Vic2l0ZURhdGFTdG9yZVNldFJlc291cmNlTG9hZFN0YXRpc3RpY3NGaXJzdFBhcnR5
SG9zdENOQU1FRG9tYWluRm9yVGVzdGluZyh3ZWJzaXRlRGF0YVN0b3JlKCksIGZpcnN0UGFydHlV
UkxTdHJpbmcsIGNuYW1lVVJMU3RyaW5nLCAmY29udGV4dCwgcmVzb3VyY2VTdGF0aXN0aWNzVm9p
ZFJlc3VsdENhbGxiYWNrKTsKKyAgICBydW5VbnRpbChjb250ZXh0LmRvbmUsIG5vVGltZW91dCk7
CisgICAgbV9jdXJyZW50SW52b2NhdGlvbi0+ZGlkU2V0Rmlyc3RQYXJ0eUhvc3RDTkFNRURvbWFp
bigpOworfQorCit2b2lkIFRlc3RDb250cm9sbGVyOjpzZXRTdGF0aXN0aWNzVGhpcmRQYXJ0eUNO
QU1FRG9tYWluKFdLU3RyaW5nUmVmIGNuYW1lVVJMU3RyaW5nKQoreworICAgIFJlc291cmNlU3Rh
dGlzdGljc0NhbGxiYWNrQ29udGV4dCBjb250ZXh0KCp0aGlzKTsKKyAgICBXS1dlYnNpdGVEYXRh
U3RvcmVTZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzVGhpcmRQYXJ0eUNOQU1FRG9tYWluRm9yVGVz
dGluZyh3ZWJzaXRlRGF0YVN0b3JlKCksIGNuYW1lVVJMU3RyaW5nLCAmY29udGV4dCwgcmVzb3Vy
Y2VTdGF0aXN0aWNzVm9pZFJlc3VsdENhbGxiYWNrKTsKKyAgICBydW5VbnRpbChjb250ZXh0LmRv
bmUsIG5vVGltZW91dCk7CisgICAgbV9jdXJyZW50SW52b2NhdGlvbi0+ZGlkU2V0VGhpcmRQYXJ0
eUNOQU1FRG9tYWluKCk7Cit9CisKIHN0cnVjdCBBcHBCb3VuZERvbWFpbnNDYWxsYmFja0NvbnRl
eHQgewogICAgIGV4cGxpY2l0IEFwcEJvdW5kRG9tYWluc0NhbGxiYWNrQ29udGV4dChUZXN0Q29u
dHJvbGxlciYgY29udHJvbGxlcikKICAgICAgICAgOiB0ZXN0Q29udHJvbGxlcihjb250cm9sbGVy
KQpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5oIGIv
VG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5oCmluZGV4IGExMzA4NDliM2Qz
YWViYTJlMjFlNmEwYTM0ZDQ2MjkyZTE5ZDRhNTAuLjcyNGNkMDA0YzFiNDJlODE1ZmQ1MjE1NTM5
OWZhZTAyMTA2Y2NmODAgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENv
bnRyb2xsZXIuaAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmgK
QEAgLTI2Niw2ICsyNjYsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRTdGF0aXN0aWNzU2hvdWxk
QmxvY2tUaGlyZFBhcnR5Q29va2llcyhib29sIHZhbHVlLCBib29sIG9ubHlPblNpdGVzV2l0aG91
dFVzZXJJbnRlcmFjdGlvbik7CiAgICAgdm9pZCBzZXRTdGF0aXN0aWNzRmlyc3RQYXJ0eVdlYnNp
dGVEYXRhUmVtb3ZhbE1vZGUoYm9vbCB2YWx1ZSk7CiAgICAgdm9pZCBzZXRTdGF0aXN0aWNzVG9T
YW1lU2l0ZVN0cmljdENvb2tpZXMoV0tTdHJpbmdSZWYgaG9zdE5hbWUpOworICAgIHZvaWQgc2V0
U3RhdGlzdGljc0ZpcnN0UGFydHlIb3N0Q05BTUVEb21haW4oV0tTdHJpbmdSZWYgZmlyc3RQYXJ0
eVVSTFN0cmluZywgV0tTdHJpbmdSZWYgY25hbWVVUkxTdHJpbmcpOworICAgIHZvaWQgc2V0U3Rh
dGlzdGljc1RoaXJkUGFydHlDTkFNRURvbWFpbihXS1N0cmluZ1JlZiBjbmFtZVVSTFN0cmluZyk7
CiAgICAgdm9pZCBzZXRBcHBCb3VuZERvbWFpbnMoV0tBcnJheVJlZiBvcmlnaW5VUkxzKTsKICAg
ICB2b2lkIHN0YXRpc3RpY3NSZXNldFRvQ29uc2lzdGVudFN0YXRlKCk7CiAKZGlmZiAtLWdpdCBh
L1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdEludm9jYXRpb24uY3BwIGIvVG9vbHMvV2ViS2l0
VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlvbi5jcHAKaW5kZXggYjczYjA5NDQxZjE3NGI1NDFlY2Q2
NjM3YWVmMGY5MTk3ZDhkZWY4Zi4uOTI5Zjg1YWY1ZjgyMmY5MmQ2MGRhYWE0NGYwNGNkMTMzMzcx
ZWY1MyAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlvbi5j
cHAKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlvbi5jcHAKQEAgLTk1
Nyw2ICs5NTcsMjcgQEAgdm9pZCBUZXN0SW52b2NhdGlvbjo6ZGlkUmVjZWl2ZU1lc3NhZ2VGcm9t
SW5qZWN0ZWRCdW5kbGUoV0tTdHJpbmdSZWYgbWVzc2FnZU5hbWUKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KIAorICAgIGlmIChXS1N0cmluZ0lzRXF1YWxUb1VURjhDU3RyaW5nKG1lc3NhZ2VOYW1l
LCAiU3RhdGlzdGljc1NldEZpcnN0UGFydHlIb3N0Q05BTUVEb21haW4iKSkgeworICAgICAgICBB
U1NFUlQoV0tHZXRUeXBlSUQobWVzc2FnZUJvZHkpID09IFdLRGljdGlvbmFyeUdldFR5cGVJRCgp
KTsKKyAgICAgICAgCisgICAgICAgIFdLRGljdGlvbmFyeVJlZiBtZXNzYWdlQm9keURpY3Rpb25h
cnkgPSBzdGF0aWNfY2FzdDxXS0RpY3Rpb25hcnlSZWY+KG1lc3NhZ2VCb2R5KTsKKyAgICAgICAg
V0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+IGZpcnN0UGFydHlVUkxTdHJpbmdLZXkgPSBhZG9wdFdL
KFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJGaXJzdFBhcnR5VVJMIikpOworICAgICAg
ICBXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4gY25hbWVVUkxTdHJpbmdLZXkgPSBhZG9wdFdLKFdL
U3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJDTkFNRSIpKTsKKyAgICAgICAgCisgICAgICAg
IFdLU3RyaW5nUmVmIGZpcnN0UGFydHlVUkxTdHJpbmcgPSBzdGF0aWNfY2FzdDxXS1N0cmluZ1Jl
Zj4oV0tEaWN0aW9uYXJ5R2V0SXRlbUZvcktleShtZXNzYWdlQm9keURpY3Rpb25hcnksIGZpcnN0
UGFydHlVUkxTdHJpbmdLZXkuZ2V0KCkpKTsKKyAgICAgICAgV0tTdHJpbmdSZWYgY25hbWVVUkxT
dHJpbmcgPSBzdGF0aWNfY2FzdDxXS1N0cmluZ1JlZj4oV0tEaWN0aW9uYXJ5R2V0SXRlbUZvcktl
eShtZXNzYWdlQm9keURpY3Rpb25hcnksIGNuYW1lVVJMU3RyaW5nS2V5LmdldCgpKSk7CisgICAg
ICAgIAorICAgICAgICBUZXN0Q29udHJvbGxlcjo6c2luZ2xldG9uKCkuc2V0U3RhdGlzdGljc0Zp
cnN0UGFydHlIb3N0Q05BTUVEb21haW4oZmlyc3RQYXJ0eVVSTFN0cmluZywgY25hbWVVUkxTdHJp
bmcpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgaWYgKFdLU3RyaW5nSXNFcXVhbFRv
VVRGOENTdHJpbmcobWVzc2FnZU5hbWUsICJTdGF0aXN0aWNzU2V0VGhpcmRQYXJ0eUNOQU1FRG9t
YWluIikpIHsKKyAgICAgICAgQVNTRVJUKFdLR2V0VHlwZUlEKG1lc3NhZ2VCb2R5KSA9PSBXS1N0
cmluZ0dldFR5cGVJRCgpKTsKKyAgICAgICAgV0tTdHJpbmdSZWYgY25hbWVVUkxTdHJpbmcgPSBz
dGF0aWNfY2FzdDxXS1N0cmluZ1JlZj4obWVzc2FnZUJvZHkpOworICAgICAgICBUZXN0Q29udHJv
bGxlcjo6c2luZ2xldG9uKCkuc2V0U3RhdGlzdGljc1RoaXJkUGFydHlDTkFNRURvbWFpbihjbmFt
ZVVSTFN0cmluZyk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKICAgICBpZiAoV0tTdHJpbmdJ
c0VxdWFsVG9VVEY4Q1N0cmluZyhtZXNzYWdlTmFtZSwgIlN0YXRpc3RpY3NSZXNldFRvQ29uc2lz
dGVudFN0YXRlIikpIHsKICAgICAgICAgaWYgKG1fc2hvdWxkRHVtcFJlc291cmNlTG9hZFN0YXRp
c3RpY3MpCiAgICAgICAgICAgICBtX3NhdmVkUmVzb3VyY2VMb2FkU3RhdGlzdGljcyA9IFRlc3RD
b250cm9sbGVyOjpzaW5nbGV0b24oKS5kdW1wUmVzb3VyY2VMb2FkU3RhdGlzdGljcygpOwpAQCAt
MTk0Niw2ICsxOTY3LDE4IEBAIHZvaWQgVGVzdEludm9jYXRpb246OmRpZFNldFRvU2FtZVNpdGVT
dHJpY3RDb29raWVzKCkKICAgICBXS1BhZ2VQb3N0TWVzc2FnZVRvSW5qZWN0ZWRCdW5kbGUoVGVz
dENvbnRyb2xsZXI6OnNpbmdsZXRvbigpLm1haW5XZWJWaWV3KCktPnBhZ2UoKSwgbWVzc2FnZU5h
bWUuZ2V0KCksIG51bGxwdHIpOwogfQogCit2b2lkIFRlc3RJbnZvY2F0aW9uOjpkaWRTZXRGaXJz
dFBhcnR5SG9zdENOQU1FRG9tYWluKCkKK3sKKyAgICBXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4g
bWVzc2FnZU5hbWUgPSBhZG9wdFdLKFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJDYWxs
RGlkU2V0Rmlyc3RQYXJ0eUhvc3RDTkFNRURvbWFpbiIpKTsKKyAgICBXS1BhZ2VQb3N0TWVzc2Fn
ZVRvSW5qZWN0ZWRCdW5kbGUoVGVzdENvbnRyb2xsZXI6OnNpbmdsZXRvbigpLm1haW5XZWJWaWV3
KCktPnBhZ2UoKSwgbWVzc2FnZU5hbWUuZ2V0KCksIG51bGxwdHIpOworfQorCit2b2lkIFRlc3RJ
bnZvY2F0aW9uOjpkaWRTZXRUaGlyZFBhcnR5Q05BTUVEb21haW4oKQoreworICAgIFdLUmV0YWlu
UHRyPFdLU3RyaW5nUmVmPiBtZXNzYWdlTmFtZSA9IGFkb3B0V0soV0tTdHJpbmdDcmVhdGVXaXRo
VVRGOENTdHJpbmcoIkNhbGxEaWRTZXRUaGlyZFBhcnR5Q05BTUVEb21haW4iKSk7CisgICAgV0tQ
YWdlUG9zdE1lc3NhZ2VUb0luamVjdGVkQnVuZGxlKFRlc3RDb250cm9sbGVyOjpzaW5nbGV0b24o
KS5tYWluV2ViVmlldygpLT5wYWdlKCksIG1lc3NhZ2VOYW1lLmdldCgpLCBudWxscHRyKTsKK30K
Kwogdm9pZCBUZXN0SW52b2NhdGlvbjo6ZGlkUmVzZXRTdGF0aXN0aWNzVG9Db25zaXN0ZW50U3Rh
dGUoKQogewogICAgIFdLUmV0YWluUHRyPFdLU3RyaW5nUmVmPiBtZXNzYWdlTmFtZSA9IGFkb3B0
V0soV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoIkNhbGxEaWRSZXNldFN0YXRpc3RpY3NU
b0NvbnNpc3RlbnRTdGF0ZSIpKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIv
VGVzdEludm9jYXRpb24uaCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdEludm9jYXRpb24u
aAppbmRleCA2MjMxYjBjMjA0NDQ1YWQ2MGM5NWQzZTgxN2ZiMzBmNDc2ZjhlMWE1Li5lNDdjNWMw
NDlmYjAxNjE4YmYwYjg5MWU5ZjJiOTU4ODZhMDRiZmI0IDEwMDY0NAotLS0gYS9Ub29scy9XZWJL
aXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmgKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5l
ci9UZXN0SW52b2NhdGlvbi5oCkBAIC03Nyw2ICs3Nyw4IEBAIHB1YmxpYzoKICAgICB2b2lkIGRp
ZFNldFNob3VsZEJsb2NrVGhpcmRQYXJ0eUNvb2tpZXMoKTsKICAgICB2b2lkIGRpZFNldEZpcnN0
UGFydHlXZWJzaXRlRGF0YVJlbW92YWxNb2RlKCk7CiAgICAgdm9pZCBkaWRTZXRUb1NhbWVTaXRl
U3RyaWN0Q29va2llcygpOworICAgIHZvaWQgZGlkU2V0Rmlyc3RQYXJ0eUhvc3RDTkFNRURvbWFp
bigpOworICAgIHZvaWQgZGlkU2V0VGhpcmRQYXJ0eUNOQU1FRG9tYWluKCk7CiAgICAgdm9pZCBk
aWRSZXNldFN0YXRpc3RpY3NUb0NvbnNpc3RlbnRTdGF0ZSgpOwogICAgIHZvaWQgZGlkU2V0Qmxv
Y2tDb29raWVzRm9ySG9zdCgpOwogICAgIHZvaWQgZGlkU2V0U3RhdGlzdGljc0RlYnVnTW9kZSgp
OwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdl
TG9nCmluZGV4IGU3NTM2ZDY1ZTcxYTZiNzEwY2YxNWE5ZGE2MTRlYTA3YmE2NmIxODQuLmJlOGY0
MzE1YjVhMzgxMDhjYzBiY2VkNjI3NzgxZjBmY2NjN2Q1MjAgMTAwNjQ0Ci0tLSBhL0xheW91dFRl
c3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzNCBA
QAorMjAyMC0wOC0wNiAgSm9obiBXaWxhbmRlciAgPHdpbGFuZGVyQGFwcGxlLmNvbT4KKworICAg
ICAgICBFeHBlcmltZW50YWw6IENhcCB0aGUgZXhwaXJ5IG9mIHBlcnNpc3RlbnQgY29va2llcyBz
ZXQgaW4gM3JkLXBhcnR5IENOQU1FIGNsb2FrZWQgSFRUUCByZXNwb25zZXMKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxNTIwMQorICAgICAgICA8cmRh
cjovL3Byb2JsZW0vNTc0NTQ2MzM+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgKiBodHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvY25hbWUt
Y2xvYWtpbmctdG9wLWNuYW1lLXN1Yi0xcC1jbmFtZS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAg
ICAgICAqIGh0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9jbmFtZS1jbG9ha2luZy10
b3AtY25hbWUtc3ViLTFwLWNuYW1lLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMv
cmVzb3VyY2VMb2FkU3RhdGlzdGljcy9jbmFtZS1jbG9ha2luZy10b3AtY25hbWUtc3ViLTNwLWNu
YW1lLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9yZXNvdXJjZUxv
YWRTdGF0aXN0aWNzL2NuYW1lLWNsb2FraW5nLXRvcC1jbmFtZS1zdWItM3AtY25hbWUuaHRtbDog
QWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL2NuYW1l
LWNsb2FraW5nLXRvcC1jbmFtZS1zdWItbWF0Y2hpbmctY25hbWUtZXhwZWN0ZWQudHh0OiBBZGRl
ZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvY25hbWUtY2xv
YWtpbmctdG9wLWNuYW1lLXN1Yi1tYXRjaGluZy1jbmFtZS5odG1sOiBBZGRlZC4KKyAgICAgICAg
KiBodHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvY25hbWUtY2xvYWtpbmctdG9wLWNu
YW1lLXN1Yi1uby1jbmFtZS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVz
dHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9jbmFtZS1jbG9ha2luZy10b3AtY25hbWUtc3ViLW5v
LWNuYW1lLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3Rh
dGlzdGljcy9jbmFtZS1jbG9ha2luZy10b3Atbm8tY25hbWUtc3ViLTFwLWNuYW1lLWV4cGVjdGVk
LnR4dDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNz
L2NuYW1lLWNsb2FraW5nLXRvcC1uby1jbmFtZS1zdWItMXAtY25hbWUuaHRtbDogQWRkZWQuCisg
ICAgICAgICogaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL2NuYW1lLWNsb2FraW5n
LXRvcC1uby1jbmFtZS1zdWItM3AtY25hbWUtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAg
KiBodHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvY25hbWUtY2xvYWtpbmctdG9wLW5v
LWNuYW1lLXN1Yi0zcC1jbmFtZS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL3Jl
c291cmNlTG9hZFN0YXRpc3RpY3MvY25hbWUtY2xvYWtpbmctdG9wLW5vLWNuYW1lLXN1Yi1uby1j
bmFtZS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvcmVzb3VyY2VM
b2FkU3RhdGlzdGljcy9jbmFtZS1jbG9ha2luZy10b3Atbm8tY25hbWUtc3ViLW5vLWNuYW1lLmh0
bWw6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL2lvcy0xMy9UZXN0RXhwZWN0YXRpb25zOgor
ICAgICAgICAgICAgTmV3IHRlc3RzIG1hcmtlZCBhcyBbIFNraXAgXS4KKyAgICAgICAgKiBwbGF0
Zm9ybS9pb3Mtd2syL1Rlc3RFeHBlY3RhdGlvbnM6CisgICAgICAgICAgICBOZXcgdGVzdHMgbWFy
a2VkIGFzIFsgUGFzcyBdIGluIGdlbmVyYWwuCisgICAgICAgICogcGxhdGZvcm0vbWFjLXdrMi9U
ZXN0RXhwZWN0YXRpb25zOgorICAgICAgICAgICAgTmV3IHRlc3RzIG1hcmtlZCBhcyBbIFBhc3Mg
XSBmb3IgQmlnU3VyKy4KKyAgICAgICAgKiBwbGF0Zm9ybS93azIvVGVzdEV4cGVjdGF0aW9uczoK
KyAgICAgICAgICAgIE5ldyB0ZXN0cyBtYXJrZWQgYXMgWyBTa2lwIF0gaW4gZ2VuZXJhbC4KKwog
MjAyMC0wOC0wNSAgTGF1cm8gTW91cmEgIDxsbW91cmFAaWdhbGlhLmNvbT4KIAogICAgICAgICBb
R1RLXVtXUEVdIG1lZGlhL21lZGlhLXNvdXJjZS9tZWRpYS1zb3VyY2Utd2VibS5odG1sIGlzIHRp
bWluZyBvdXQKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvcmVzb3VyY2VMb2Fk
U3RhdGlzdGljcy9jbmFtZS1jbG9ha2luZy10b3AtY25hbWUtc3ViLTFwLWNuYW1lLWV4cGVjdGVk
LnR4dCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9jbmFt
ZS1jbG9ha2luZy10b3AtY25hbWUtc3ViLTFwLWNuYW1lLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li45NDhmYjVjY2Q2ZTU3MWIzM2M1NzJmNTZkMmY3NjZjZTA2NjNiYTRjCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL2NuYW1l
LWNsb2FraW5nLXRvcC1jbmFtZS1zdWItMXAtY25hbWUtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEs
MTAgQEAKK1Rlc3QgZm9yIENOQU1FIENsb2FraW5nOiBObyBjb29raWUgZXhwaXJ5IGNhcHBpbmcg
aWYgdGhlIHRvcCBmcmFtZSBoYXMgYW4gYWx0ZXJuYXRlIENOQU1FIGFuZCB0aGUgc3ViIHJlc291
cmNlIGhhcyBhbiBhbHRlcm5hdGUgQ05BTUUgdGhhdCBtYXRjaGVzIHRoZSBmaXJzdCBwYXJ0eSAo
bm90IGl0cyBDTkFNRSkuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAi
UEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNTIENv
b2tpZSBuYW1lZCBjbmFtZVRlc3RDb29raWUgZXhwaXJlcyBpbiBtb3JlIHRoYW4gNjA1NDAwIHNl
Y29uZHMuCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUK
KwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0
aWNzL2NuYW1lLWNsb2FraW5nLXRvcC1jbmFtZS1zdWItMXAtY25hbWUuaHRtbCBiL0xheW91dFRl
c3RzL2h0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9jbmFtZS1jbG9ha2luZy10b3At
Y25hbWUtc3ViLTFwLWNuYW1lLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOGM4MzA0YjBiODljNTVmMmY3MGNk
ODAxNjg1NDAzZDI5ZGJhMmExNwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAv
dGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9jbmFtZS1jbG9ha2luZy10b3AtY25hbWUtc3Vi
LTFwLWNuYW1lLmh0bWwKQEAgLTAsMCArMSw2OCBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbCBs
YW5nPSJlbiI+Cis8aGVhZD4KKyAgICA8bWV0YSBjaGFyc2V0PSJVVEYtOCI+CisgICAgPHNjcmlw
dCBzcmM9Ii9qcy10ZXN0LXJlc291cmNlcy9qcy10ZXN0LmpzIj48L3NjcmlwdD4KKyAgICA8c2Ny
aXB0IHNyYz0iL2Nvb2tpZXMvcmVzb3VyY2VzL2Nvb2tpZS11dGlsaXRpZXMuanMiPjwvc2NyaXB0
PgorICAgIDxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvdXRpbC5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+
Cis8Ym9keSBvbmxvYWQ9InJ1blRlc3QoKSI+Cis8c2NyaXB0PgorICAgIGRlc2NyaXB0aW9uKCJU
ZXN0IGZvciBDTkFNRSBDbG9ha2luZzogTm8gY29va2llIGV4cGlyeSBjYXBwaW5nIGlmIHRoZSB0
b3AgZnJhbWUgaGFzIGFuIGFsdGVybmF0ZSBDTkFNRSBhbmQgdGhlIHN1YiByZXNvdXJjZSBoYXMg
YW4gYWx0ZXJuYXRlIENOQU1FIHRoYXQgbWF0Y2hlcyB0aGUgZmlyc3QgcGFydHkgKG5vdCBpdHMg
Q05BTUUpLiIpOworICAgIGpzVGVzdElzQXN5bmMgPSB0cnVlOworCisgICAgZnVuY3Rpb24gZmlu
aXNoVGVzdCgpIHsKKyAgICAgICAgcmVzZXRDb29raWVzRm9yQ3VycmVudE9yaWdpbigpOworICAg
ICAgICBzZXRFbmFibGVGZWF0dXJlKGZhbHNlLCBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgIGZp
bmlzaEpTVGVzdCgpOworICAgICAgICB9KTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBjaGVja0Nv
b2tpZUV4cGlyeShjb29raWVEYXRhLCBzZWNvbmRzLCBzaG91bGRCZUxlc3NUaGFuKSB7CisgICAg
ICAgIGxldCBub3cgPSBuZXcgRGF0ZSgpOworICAgICAgICBsZXQgZXhwaXJ5RGF0ZUluTWlsbGlz
ZWNvbmRzID0gbm93LmdldFRpbWUoKSArIChzZWNvbmRzICogMTAwMCk7CisKKyAgICAgICAgaWYg
KChjb29raWVEYXRhWyJleHBpcmVzIl0gPCBleHBpcnlEYXRlSW5NaWxsaXNlY29uZHMpID09PSBz
aG91bGRCZUxlc3NUaGFuKQorICAgICAgICAgICAgdGVzdFBhc3NlZCgiQ29va2llIG5hbWVkICIg
KyBjb29raWVEYXRhWyJuYW1lIl0gKyAiIGV4cGlyZXMgaW4gIiArIChzaG91bGRCZUxlc3NUaGFu
ID8gImxlc3MiIDogIm1vcmUiKSArICIgdGhhbiAiICsgc2Vjb25kcyArICIgc2Vjb25kcy4iKTsK
KyAgICAgICAgZWxzZQorICAgICAgICAgICAgdGVzdEZhaWxlZCgiQ29va2llIG5hbWVkICIgKyBj
b29raWVEYXRhWyJuYW1lIl0gKyAiIGV4cGlyZXMgaW4gIiArIChzaG91bGRCZUxlc3NUaGFuID8g
Im1vcmUiIDogImxlc3MiKSArICIgdGhhbiAiICsgc2Vjb25kcyArICIgc2Vjb25kcy4iKTsKKyAg
ICB9CisKKyAgICBjb25zdCBvbmVXZWVrSW5TZWNvbmRzID0gNyAqIDI0ICogNjAgKiA2MDsKKyAg
ICBjb25zdCBvdmVyT25lV2Vla0luU2Vjb25kcyA9IG9uZVdlZWtJblNlY29uZHMgKyA2MDA7Cisg
ICAgY29uc3QgY29va2llTmFtZSA9ICJjbmFtZVRlc3RDb29raWUiOworICAgIGNvbnN0IHN1YlBh
dGhUb1NldEZpcnN0UGFydHlDb29raWUgPSAicmVzb3VyY2VzL3NldC1jb29raWUucGhwP25hbWU9
IiArIGNvb2tpZU5hbWUgKyAiJnZhbHVlPXZhbHVlJmR1bW15PSIgKyBNYXRoLnJhbmRvbSgpOwor
CisgICAgZnVuY3Rpb24gc2V0QW5kQ2hlY2tDb29raWUoKSB7CisgICAgICAgIGZldGNoKHN1YlBh
dGhUb1NldEZpcnN0UGFydHlDb29raWUpLnRoZW4oZnVuY3Rpb24oKSB7CisgICAgICAgICAgICBp
ZiAoaW50ZXJuYWxzKSB7CisgICAgICAgICAgICAgICAgbGV0IGNvb2tpZXMgPSBpbnRlcm5hbHMu
Z2V0Q29va2llcygpOworICAgICAgICAgICAgICAgIGlmICghY29va2llcy5sZW5ndGgpCisgICAg
ICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoIk5vIGNvb2tpZXMgZm91bmQuIik7CisgICAgICAg
ICAgICAgICAgZm9yIChsZXQgY29va2llIG9mIGNvb2tpZXMpIHsKKyAgICAgICAgICAgICAgICAg
ICAgaWYgKGNvb2tpZS5uYW1lID09PSBjb29raWVOYW1lKSB7CisgICAgICAgICAgICAgICAgICAg
ICAgICBjaGVja0Nvb2tpZUV4cGlyeShjb29raWUsIG92ZXJPbmVXZWVrSW5TZWNvbmRzLCBmYWxz
ZSk7CisgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgICAg
ICB0ZXN0RmFpbGVkKCJVbmtub3duIGNvb2tpZSAiICsgY29va2llLm5hbWUgKyAiIGZvdW5kLiIp
OworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAg
ICAgIGZpbmlzaFRlc3QoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSk7CisgICAgfQorCisg
ICAgY29uc3QgZmlyc3RQYXJ0eSA9ICJodHRwOi8vMTI3LjAuMC4xOjgwMDAiOworICAgIGNvbnN0
IGZpcnN0UGFydHlDTkFNRUZvclRlc3RpbmcgPSAiaHR0cDovL3Rlc3R3ZWJraXQub3JnIjsKKyAg
ICBjb25zdCB0aGlyZFBhcnR5Q05BTUVGb3JUZXN0aW5nID0gZmlyc3RQYXJ0eTsKKworICAgIGZ1
bmN0aW9uIHJ1blRlc3QoKSB7CisgICAgICAgIHNldEVuYWJsZUZlYXR1cmUodHJ1ZSwgZnVuY3Rp
b24oKSB7CisgICAgICAgICAgICB0ZXN0UnVubmVyLnN0YXRpc3RpY3NTZXRGaXJzdFBhcnR5SG9z
dENOQU1FRG9tYWluKGZpcnN0UGFydHksIGZpcnN0UGFydHlDTkFNRUZvclRlc3RpbmcsIGZ1bmN0
aW9uKCkgeworICAgICAgICAgICAgICAgIHRlc3RSdW5uZXIuc3RhdGlzdGljc1NldFRoaXJkUGFy
dHlDTkFNRURvbWFpbih0aGlyZFBhcnR5Q05BTUVGb3JUZXN0aW5nLCBmdW5jdGlvbigpIHsKKyAg
ICAgICAgICAgICAgICAgICAgc2V0QW5kQ2hlY2tDb29raWUoKTsKKyAgICAgICAgICAgICAgICB9
KTsKKyAgICAgICAgICAgIH0pOworICAgICAgICB9KTsKKyAgICB9Cis8L3NjcmlwdD4KKzwvYm9k
eT4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlz
dGljcy9jbmFtZS1jbG9ha2luZy10b3AtY25hbWUtc3ViLTNwLWNuYW1lLWV4cGVjdGVkLnR4dCBi
L0xheW91dFRlc3RzL2h0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9jbmFtZS1jbG9h
a2luZy10b3AtY25hbWUtc3ViLTNwLWNuYW1lLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43MWY5
MzMwM2U4NWFjMDZkMjk5YTljMDVjZjY2NTZjMDFlYjk3NTc4Ci0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL2NuYW1lLWNsb2Fr
aW5nLXRvcC1jbmFtZS1zdWItM3AtY25hbWUtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTAgQEAK
K1Rlc3QgZm9yIENOQU1FIENsb2FraW5nOiBDb29raWUgZXhwaXJ5IGNhcHBpbmcgaWYgdGhlIHRv
cCBmcmFtZSBoYXMgYW4gYWx0ZXJuYXRlIENOQU1FIGFuZCB0aGUgc3ViIHJlc291cmNlIGhhcyBh
IGRpZmZlcmVudCBhbHRlcm5hdGUgQ05BTUUuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBh
IHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4K
KworCitQQVNTIENvb2tpZSBuYW1lZCBjbmFtZVRlc3RDb29raWUgZXhwaXJlcyBpbiBsZXNzIHRo
YW4gNjA1NDAwIHNlY29uZHMuCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RF
U1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9yZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzL2NuYW1lLWNsb2FraW5nLXRvcC1jbmFtZS1zdWItM3AtY25hbWUuaHRt
bCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9jbmFtZS1j
bG9ha2luZy10b3AtY25hbWUtc3ViLTNwLWNuYW1lLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYjZhYzc4MWZm
ODFjMjFmYWI5OTk1OThlMWY2NWQ5NWFmN2ZkZGY5OAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2h0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9jbmFtZS1jbG9ha2luZy10
b3AtY25hbWUtc3ViLTNwLWNuYW1lLmh0bWwKQEAgLTAsMCArMSw3NCBAQAorPCFET0NUWVBFIGh0
bWw+Cis8aHRtbCBsYW5nPSJlbiI+Cis8aGVhZD4KKyAgICA8bWV0YSBjaGFyc2V0PSJVVEYtOCI+
CisgICAgPHNjcmlwdCBzcmM9Ii9qcy10ZXN0LXJlc291cmNlcy9qcy10ZXN0LmpzIj48L3Njcmlw
dD4KKyAgICA8c2NyaXB0IHNyYz0iL2Nvb2tpZXMvcmVzb3VyY2VzL2Nvb2tpZS11dGlsaXRpZXMu
anMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvdXRpbC5qcyI+PC9zY3Jp
cHQ+Cis8L2hlYWQ+Cis8Ym9keSBvbmxvYWQ9InJ1blRlc3QoKSI+Cis8c2NyaXB0PgorICAgIGRl
c2NyaXB0aW9uKCJUZXN0IGZvciBDTkFNRSBDbG9ha2luZzogQ29va2llIGV4cGlyeSBjYXBwaW5n
IGlmIHRoZSB0b3AgZnJhbWUgaGFzIGFuIGFsdGVybmF0ZSBDTkFNRSBhbmQgdGhlIHN1YiByZXNv
dXJjZSBoYXMgYSBkaWZmZXJlbnQgYWx0ZXJuYXRlIENOQU1FLiIpOworICAgIGpzVGVzdElzQXN5
bmMgPSB0cnVlOworCisgICAgZnVuY3Rpb24gZmluaXNoVGVzdCgpIHsKKyAgICAgICAgcmVzZXRD
b29raWVzRm9yQ3VycmVudE9yaWdpbigpOworICAgICAgICBzZXRFbmFibGVGZWF0dXJlKGZhbHNl
LCBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAgICAgICB9KTsK
KyAgICB9CisKKyAgICBjb25zdCBvbmVXZWVrSW5TZWNvbmRzID0gNyAqIDI0ICogNjAgKiA2MDsK
KyAgICBjb25zdCBvdmVyT25lV2Vla0luU2Vjb25kcyA9IG9uZVdlZWtJblNlY29uZHMgKyA2MDA7
CisgICAgY29uc3QgdW5kZXJPbmVXZWVrSW5TZWNvbmRzID0gb25lV2Vla0luU2Vjb25kcyAtIDYw
MDsKKworICAgIGZ1bmN0aW9uIGNoZWNrQ29va2llRXhwaXJ5KGNvb2tpZURhdGEsIHNlY29uZHMs
IHNob3VsZEJlTGVzc1RoYW4pIHsKKyAgICAgICAgbGV0IG5vdyA9IG5ldyBEYXRlKCk7CisgICAg
ICAgIGxldCBleHBpcnlEYXRlSW5NaWxsaXNlY29uZHMgPSBub3cuZ2V0VGltZSgpICsgKHNlY29u
ZHMgKiAxMDAwKTsKKworICAgICAgICBpZiAoKGNvb2tpZURhdGFbImV4cGlyZXMiXSA8IGV4cGly
eURhdGVJbk1pbGxpc2Vjb25kcykgPT09IHNob3VsZEJlTGVzc1RoYW4pIHsKKyAgICAgICAgICAg
IGxldCB1bmRlck9uZVdlZWtFeHBpcnlEYXRlSW5NaWxsaXNlY29uZHMgPSBub3cuZ2V0VGltZSgp
ICsgKHVuZGVyT25lV2Vla0luU2Vjb25kcyAqIDEwMDApOworICAgICAgICAgICAgaWYgKGNvb2tp
ZURhdGFbImV4cGlyZXMiXSA8IHVuZGVyT25lV2Vla0V4cGlyeURhdGVJbk1pbGxpc2Vjb25kcykK
KyAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJDb29raWUgbmFtZWQgIiArIGNvb2tpZURhdGFb
Im5hbWUiXSArICIgd2FzIGNhcHBlZCB0b28gbG93LiIpOworICAgICAgICAgICAgZWxzZQorICAg
ICAgICAgICAgICAgIHRlc3RQYXNzZWQoIkNvb2tpZSBuYW1lZCAiICsgY29va2llRGF0YVsibmFt
ZSJdICsgIiBleHBpcmVzIGluICIgKyAoc2hvdWxkQmVMZXNzVGhhbiA/ICJsZXNzIiA6ICJtb3Jl
IikgKyAiIHRoYW4gIiArIHNlY29uZHMgKyAiIHNlY29uZHMuIik7CisgICAgICAgIH0gZWxzZQor
ICAgICAgICAgICAgdGVzdEZhaWxlZCgiQ29va2llIG5hbWVkICIgKyBjb29raWVEYXRhWyJuYW1l
Il0gKyAiIGV4cGlyZXMgaW4gIiArIChzaG91bGRCZUxlc3NUaGFuID8gIm1vcmUiIDogImxlc3Mi
KSArICIgdGhhbiAiICsgc2Vjb25kcyArICIgc2Vjb25kcy4iKTsKKyAgICB9CisKKyAgICBjb25z
dCBjb29raWVOYW1lID0gImNuYW1lVGVzdENvb2tpZSI7CisgICAgY29uc3Qgc3ViUGF0aFRvU2V0
Rmlyc3RQYXJ0eUNvb2tpZSA9ICJyZXNvdXJjZXMvc2V0LWNvb2tpZS5waHA/bmFtZT0iICsgY29v
a2llTmFtZSArICImdmFsdWU9dmFsdWUmZHVtbXk9IiArIE1hdGgucmFuZG9tKCk7CisKKyAgICBm
dW5jdGlvbiBzZXRBbmRDaGVja0Nvb2tpZSgpIHsKKyAgICAgICAgZmV0Y2goc3ViUGF0aFRvU2V0
Rmlyc3RQYXJ0eUNvb2tpZSkudGhlbihmdW5jdGlvbigpIHsKKyAgICAgICAgICAgIGlmIChpbnRl
cm5hbHMpIHsKKyAgICAgICAgICAgICAgICBsZXQgY29va2llcyA9IGludGVybmFscy5nZXRDb29r
aWVzKCk7CisgICAgICAgICAgICAgICAgaWYgKCFjb29raWVzLmxlbmd0aCkKKyAgICAgICAgICAg
ICAgICAgICAgdGVzdEZhaWxlZCgiTm8gY29va2llcyBmb3VuZC4iKTsKKyAgICAgICAgICAgICAg
ICBmb3IgKGxldCBjb29raWUgb2YgY29va2llcykgeworICAgICAgICAgICAgICAgICAgICBpZiAo
Y29va2llLm5hbWUgPT09IGNvb2tpZU5hbWUpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNo
ZWNrQ29va2llRXhwaXJ5KGNvb2tpZSwgb3Zlck9uZVdlZWtJblNlY29uZHMsIHRydWUpOworICAg
ICAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICAgICAgdGVzdEZh
aWxlZCgiVW5rbm93biBjb29raWUgIiArIGNvb2tpZS5uYW1lICsgIiBmb3VuZC4iKTsKKyAgICAg
ICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBmaW5p
c2hUZXN0KCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0pOworICAgIH0KKworICAgIGNvbnN0
IGZpcnN0UGFydHkgPSAiaHR0cDovLzEyNy4wLjAuMTo4MDAwIjsKKyAgICBjb25zdCBmaXJzdFBh
cnR5Q05BTUVGb3JUZXN0aW5nID0gImh0dHA6Ly90ZXN0d2Via2l0Lm9yZyI7CisgICAgY29uc3Qg
dGhpcmRQYXJ0eUNOQU1FRm9yVGVzdGluZyA9ICJodHRwOi8vM3JkcGFydHl0ZXN0d2Via2l0Lm9y
ZyI7CisKKyAgICBmdW5jdGlvbiBydW5UZXN0KCkgeworICAgICAgICBzZXRFbmFibGVGZWF0dXJl
KHRydWUsIGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgdGVzdFJ1bm5lci5zdGF0aXN0aWNzU2V0
Rmlyc3RQYXJ0eUhvc3RDTkFNRURvbWFpbihmaXJzdFBhcnR5LCBmaXJzdFBhcnR5Q05BTUVGb3JU
ZXN0aW5nLCBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgICAgICB0ZXN0UnVubmVyLnN0YXRpc3Rp
Y3NTZXRUaGlyZFBhcnR5Q05BTUVEb21haW4odGhpcmRQYXJ0eUNOQU1FRm9yVGVzdGluZywgZnVu
Y3Rpb24oKSB7CisgICAgICAgICAgICAgICAgICAgIHNldEFuZENoZWNrQ29va2llKCk7CisgICAg
ICAgICAgICAgICAgfSk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgfSk7CisgICAgfQorPC9z
Y3JpcHQ+Cis8L2JvZHk+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3Jlc291
cmNlTG9hZFN0YXRpc3RpY3MvY25hbWUtY2xvYWtpbmctdG9wLWNuYW1lLXN1Yi1tYXRjaGluZy1j
bmFtZS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0
YXRpc3RpY3MvY25hbWUtY2xvYWtpbmctdG9wLWNuYW1lLXN1Yi1tYXRjaGluZy1jbmFtZS1leHBl
Y3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNTgxOGFlMTM0NWFlYzJjMDIzZmI3NjdkNmVjNWFiMWRhZWRk
ZmRlYQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvcmVzb3VyY2VM
b2FkU3RhdGlzdGljcy9jbmFtZS1jbG9ha2luZy10b3AtY25hbWUtc3ViLW1hdGNoaW5nLWNuYW1l
LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDEwIEBACitUZXN0IGZvciBDTkFNRSBDbG9ha2luZzog
Tm8gY29va2llIGV4cGlyeSBjYXBwaW5nIGlmIHRoZSB0b3AgZnJhbWUgaGFzIGFuIGFsdGVybmF0
ZSBDTkFNRSBhbmQgdGhlIHN1YiByZXNvdXJjZSBoYXMgbWF0Y2hpbmcgYWx0ZXJuYXRlIENOQU1F
LgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2Vz
LCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworUEFTUyBDb29raWUgbmFtZWQgY25h
bWVUZXN0Q29va2llIGV4cGlyZXMgaW4gbW9yZSB0aGFuIDYwNTQwMCBzZWNvbmRzLgorUEFTUyBz
dWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2h0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9jbmFtZS1jbG9h
a2luZy10b3AtY25hbWUtc3ViLW1hdGNoaW5nLWNuYW1lLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRw
L3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvY25hbWUtY2xvYWtpbmctdG9wLWNuYW1lLXN1
Yi1tYXRjaGluZy1jbmFtZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmY5ZmExZjAzYmVmZWQ0NjZmZTY1NWVi
Yzc2MzNlYTNiZGQ1ZGFkMjkKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvY25hbWUtY2xvYWtpbmctdG9wLWNuYW1lLXN1Yi1t
YXRjaGluZy1jbmFtZS5odG1sCkBAIC0wLDAgKzEsNjggQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0
bWwgbGFuZz0iZW4iPgorPGhlYWQ+CisgICAgPG1ldGEgY2hhcnNldD0iVVRGLTgiPgorICAgIDxz
Y3JpcHQgc3JjPSIvanMtdGVzdC1yZXNvdXJjZXMvanMtdGVzdC5qcyI+PC9zY3JpcHQ+CisgICAg
PHNjcmlwdCBzcmM9Ii9jb29raWVzL3Jlc291cmNlcy9jb29raWUtdXRpbGl0aWVzLmpzIj48L3Nj
cmlwdD4KKyAgICA8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3V0aWwuanMiPjwvc2NyaXB0PgorPC9o
ZWFkPgorPGJvZHkgb25sb2FkPSJydW5UZXN0KCkiPgorPHNjcmlwdD4KKyAgICBkZXNjcmlwdGlv
bigiVGVzdCBmb3IgQ05BTUUgQ2xvYWtpbmc6IE5vIGNvb2tpZSBleHBpcnkgY2FwcGluZyBpZiB0
aGUgdG9wIGZyYW1lIGhhcyBhbiBhbHRlcm5hdGUgQ05BTUUgYW5kIHRoZSBzdWIgcmVzb3VyY2Ug
aGFzIG1hdGNoaW5nIGFsdGVybmF0ZSBDTkFNRS4iKTsKKyAgICBqc1Rlc3RJc0FzeW5jID0gdHJ1
ZTsKKworICAgIGZ1bmN0aW9uIGZpbmlzaFRlc3QoKSB7CisgICAgICAgIHJlc2V0Q29va2llc0Zv
ckN1cnJlbnRPcmlnaW4oKTsKKyAgICAgICAgc2V0RW5hYmxlRmVhdHVyZShmYWxzZSwgZnVuY3Rp
b24oKSB7CisgICAgICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAgICAgICAgfSk7CisgICAgfQor
CisgICAgZnVuY3Rpb24gY2hlY2tDb29raWVFeHBpcnkoY29va2llRGF0YSwgc2Vjb25kcywgc2hv
dWxkQmVMZXNzVGhhbikgeworICAgICAgICBsZXQgbm93ID0gbmV3IERhdGUoKTsKKyAgICAgICAg
bGV0IGV4cGlyeURhdGVJbk1pbGxpc2Vjb25kcyA9IG5vdy5nZXRUaW1lKCkgKyAoc2Vjb25kcyAq
IDEwMDApOworCisgICAgICAgIGlmICgoY29va2llRGF0YVsiZXhwaXJlcyJdIDwgZXhwaXJ5RGF0
ZUluTWlsbGlzZWNvbmRzKSA9PT0gc2hvdWxkQmVMZXNzVGhhbikKKyAgICAgICAgICAgIHRlc3RQ
YXNzZWQoIkNvb2tpZSBuYW1lZCAiICsgY29va2llRGF0YVsibmFtZSJdICsgIiBleHBpcmVzIGlu
ICIgKyAoc2hvdWxkQmVMZXNzVGhhbiA/ICJsZXNzIiA6ICJtb3JlIikgKyAiIHRoYW4gIiArIHNl
Y29uZHMgKyAiIHNlY29uZHMuIik7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHRlc3RGYWls
ZWQoIkNvb2tpZSBuYW1lZCAiICsgY29va2llRGF0YVsibmFtZSJdICsgIiBleHBpcmVzIGluICIg
KyAoc2hvdWxkQmVMZXNzVGhhbiA/ICJtb3JlIiA6ICJsZXNzIikgKyAiIHRoYW4gIiArIHNlY29u
ZHMgKyAiIHNlY29uZHMuIik7CisgICAgfQorCisgICAgY29uc3Qgb25lV2Vla0luU2Vjb25kcyA9
IDcgKiAyNCAqIDYwICogNjA7CisgICAgY29uc3Qgb3Zlck9uZVdlZWtJblNlY29uZHMgPSBvbmVX
ZWVrSW5TZWNvbmRzICsgNjAwOworICAgIGNvbnN0IGNvb2tpZU5hbWUgPSAiY25hbWVUZXN0Q29v
a2llIjsKKyAgICBjb25zdCBzdWJQYXRoVG9TZXRGaXJzdFBhcnR5Q29va2llID0gInJlc291cmNl
cy9zZXQtY29va2llLnBocD9uYW1lPSIgKyBjb29raWVOYW1lICsgIiZ2YWx1ZT12YWx1ZSZkdW1t
eT0iICsgTWF0aC5yYW5kb20oKTsKKworICAgIGZ1bmN0aW9uIHNldEFuZENoZWNrQ29va2llKCkg
eworICAgICAgICBmZXRjaChzdWJQYXRoVG9TZXRGaXJzdFBhcnR5Q29va2llKS50aGVuKGZ1bmN0
aW9uKCkgeworICAgICAgICAgICAgaWYgKGludGVybmFscykgeworICAgICAgICAgICAgICAgIGxl
dCBjb29raWVzID0gaW50ZXJuYWxzLmdldENvb2tpZXMoKTsKKyAgICAgICAgICAgICAgICBpZiAo
IWNvb2tpZXMubGVuZ3RoKQorICAgICAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJObyBjb29r
aWVzIGZvdW5kLiIpOworICAgICAgICAgICAgICAgIGZvciAobGV0IGNvb2tpZSBvZiBjb29raWVz
KSB7CisgICAgICAgICAgICAgICAgICAgIGlmIChjb29raWUubmFtZSA9PT0gY29va2llTmFtZSkg
eworICAgICAgICAgICAgICAgICAgICAgICAgY2hlY2tDb29raWVFeHBpcnkoY29va2llLCBvdmVy
T25lV2Vla0luU2Vjb25kcywgZmFsc2UpOworICAgICAgICAgICAgICAgICAgICB9IGVsc2Ugewor
ICAgICAgICAgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiVW5rbm93biBjb29raWUgIiArIGNv
b2tpZS5uYW1lICsgIiBmb3VuZC4iKTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgICAgICBmaW5pc2hUZXN0KCk7CisgICAgICAgICAgICB9Cisg
ICAgICAgIH0pOworICAgIH0KKworICAgIGNvbnN0IGZpcnN0UGFydHkgPSAiaHR0cDovLzEyNy4w
LjAuMTo4MDAwIjsKKyAgICBjb25zdCBmaXJzdFBhcnR5Q05BTUVGb3JUZXN0aW5nID0gImh0dHA6
Ly90ZXN0d2Via2l0Lm9yZyI7CisgICAgY29uc3QgdGhpcmRQYXJ0eUNOQU1FRm9yVGVzdGluZyA9
IGZpcnN0UGFydHlDTkFNRUZvclRlc3Rpbmc7CisKKyAgICBmdW5jdGlvbiBydW5UZXN0KCkgewor
ICAgICAgICBzZXRFbmFibGVGZWF0dXJlKHRydWUsIGZ1bmN0aW9uKCkgeworICAgICAgICAgICAg
dGVzdFJ1bm5lci5zdGF0aXN0aWNzU2V0Rmlyc3RQYXJ0eUhvc3RDTkFNRURvbWFpbihmaXJzdFBh
cnR5LCBmaXJzdFBhcnR5Q05BTUVGb3JUZXN0aW5nLCBmdW5jdGlvbigpIHsKKyAgICAgICAgICAg
ICAgICB0ZXN0UnVubmVyLnN0YXRpc3RpY3NTZXRUaGlyZFBhcnR5Q05BTUVEb21haW4odGhpcmRQ
YXJ0eUNOQU1FRm9yVGVzdGluZywgZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAgICAgICAgIHNl
dEFuZENoZWNrQ29va2llKCk7CisgICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAgICB9KTsK
KyAgICAgICAgfSk7CisgICAgfQorPC9zY3JpcHQ+Cis8L2JvZHk+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvY25hbWUtY2xvYWtpbmct
dG9wLWNuYW1lLXN1Yi1uby1jbmFtZS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvY25hbWUtY2xvYWtpbmctdG9wLWNuYW1lLXN1Yi1u
by1jbmFtZS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYjY1MjBkZWUzOTE1ZTQyMmVjYjBjYjQ5
NGRkNDk0N2QyNTlhNzY2NgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVz
dHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9jbmFtZS1jbG9ha2luZy10b3AtY25hbWUtc3ViLW5v
LWNuYW1lLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDEwIEBACitUZXN0IGZvciBDTkFNRSBDbG9h
a2luZzogTm8gY29va2llIGV4cGlyeSBjYXBwaW5nIGlmIHRoZSB0b3AgZnJhbWUgaGFzIGFuIGFs
dGVybmF0ZSBDTkFNRSBhbmQgdGhlIHN1YiByZXNvdXJjZSBoYXMgbm8gYWx0ZXJuYXRlIENOQU1F
LgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2Vz
LCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworUEFTUyBDb29raWUgbmFtZWQgY25h
bWVUZXN0Q29va2llIGV4cGlyZXMgaW4gbW9yZSB0aGFuIDYwNTQwMCBzZWNvbmRzLgorUEFTUyBz
dWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2h0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9jbmFtZS1jbG9h
a2luZy10b3AtY25hbWUtc3ViLW5vLWNuYW1lLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvY25hbWUtY2xvYWtpbmctdG9wLWNuYW1lLXN1Yi1uby1j
bmFtZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjAxY2FkNDM5YjdmYzE2N2E2Yzk0OWY3MGE5MTAwZTY5YTdj
ZmIyMzYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3Jlc291cmNl
TG9hZFN0YXRpc3RpY3MvY25hbWUtY2xvYWtpbmctdG9wLWNuYW1lLXN1Yi1uby1jbmFtZS5odG1s
CkBAIC0wLDAgKzEsNjUgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWwgbGFuZz0iZW4iPgorPGhl
YWQ+CisgICAgPG1ldGEgY2hhcnNldD0iVVRGLTgiPgorICAgIDxzY3JpcHQgc3JjPSIvanMtdGVz
dC1yZXNvdXJjZXMvanMtdGVzdC5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9Ii9jb29r
aWVzL3Jlc291cmNlcy9jb29raWUtdXRpbGl0aWVzLmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0
IHNyYz0icmVzb3VyY2VzL3V0aWwuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHkgb25sb2Fk
PSJydW5UZXN0KCkiPgorPHNjcmlwdD4KKyAgICBkZXNjcmlwdGlvbigiVGVzdCBmb3IgQ05BTUUg
Q2xvYWtpbmc6IE5vIGNvb2tpZSBleHBpcnkgY2FwcGluZyBpZiB0aGUgdG9wIGZyYW1lIGhhcyBh
biBhbHRlcm5hdGUgQ05BTUUgYW5kIHRoZSBzdWIgcmVzb3VyY2UgaGFzIG5vIGFsdGVybmF0ZSBD
TkFNRS4iKTsKKyAgICBqc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKworICAgIGZ1bmN0aW9uIGZpbmlz
aFRlc3QoKSB7CisgICAgICAgIHJlc2V0Q29va2llc0ZvckN1cnJlbnRPcmlnaW4oKTsKKyAgICAg
ICAgc2V0RW5hYmxlRmVhdHVyZShmYWxzZSwgZnVuY3Rpb24oKSB7CisgICAgICAgICAgICBmaW5p
c2hKU1Rlc3QoKTsKKyAgICAgICAgfSk7CisgICAgfQorCisgICAgZnVuY3Rpb24gY2hlY2tDb29r
aWVFeHBpcnkoY29va2llRGF0YSwgc2Vjb25kcywgc2hvdWxkQmVMZXNzVGhhbikgeworICAgICAg
ICBsZXQgbm93ID0gbmV3IERhdGUoKTsKKyAgICAgICAgbGV0IGV4cGlyeURhdGVJbk1pbGxpc2Vj
b25kcyA9IG5vdy5nZXRUaW1lKCkgKyAoc2Vjb25kcyAqIDEwMDApOworCisgICAgICAgIGlmICgo
Y29va2llRGF0YVsiZXhwaXJlcyJdIDwgZXhwaXJ5RGF0ZUluTWlsbGlzZWNvbmRzKSA9PT0gc2hv
dWxkQmVMZXNzVGhhbikKKyAgICAgICAgICAgIHRlc3RQYXNzZWQoIkNvb2tpZSBuYW1lZCAiICsg
Y29va2llRGF0YVsibmFtZSJdICsgIiBleHBpcmVzIGluICIgKyAoc2hvdWxkQmVMZXNzVGhhbiA/
ICJsZXNzIiA6ICJtb3JlIikgKyAiIHRoYW4gIiArIHNlY29uZHMgKyAiIHNlY29uZHMuIik7Cisg
ICAgICAgIGVsc2UKKyAgICAgICAgICAgIHRlc3RGYWlsZWQoIkNvb2tpZSBuYW1lZCAiICsgY29v
a2llRGF0YVsibmFtZSJdICsgIiBleHBpcmVzIGluICIgKyAoc2hvdWxkQmVMZXNzVGhhbiA/ICJt
b3JlIiA6ICJsZXNzIikgKyAiIHRoYW4gIiArIHNlY29uZHMgKyAiIHNlY29uZHMuIik7CisgICAg
fQorCisgICAgY29uc3Qgb25lV2Vla0luU2Vjb25kcyA9IDcgKiAyNCAqIDYwICogNjA7CisgICAg
Y29uc3Qgb3Zlck9uZVdlZWtJblNlY29uZHMgPSBvbmVXZWVrSW5TZWNvbmRzICsgNjAwOworICAg
IGNvbnN0IGNvb2tpZU5hbWUgPSAiY25hbWVUZXN0Q29va2llIjsKKyAgICBjb25zdCBzdWJQYXRo
VG9TZXRGaXJzdFBhcnR5Q29va2llID0gInJlc291cmNlcy9zZXQtY29va2llLnBocD9uYW1lPSIg
KyBjb29raWVOYW1lICsgIiZ2YWx1ZT12YWx1ZSZkdW1teT0iICsgTWF0aC5yYW5kb20oKTsKKwor
ICAgIGZ1bmN0aW9uIHNldEFuZENoZWNrQ29va2llKCkgeworICAgICAgICBmZXRjaChzdWJQYXRo
VG9TZXRGaXJzdFBhcnR5Q29va2llKS50aGVuKGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgaWYg
KGludGVybmFscykgeworICAgICAgICAgICAgICAgIGxldCBjb29raWVzID0gaW50ZXJuYWxzLmdl
dENvb2tpZXMoKTsKKyAgICAgICAgICAgICAgICBpZiAoIWNvb2tpZXMubGVuZ3RoKQorICAgICAg
ICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJObyBjb29raWVzIGZvdW5kLiIpOworICAgICAgICAg
ICAgICAgIGZvciAobGV0IGNvb2tpZSBvZiBjb29raWVzKSB7CisgICAgICAgICAgICAgICAgICAg
IGlmIChjb29raWUubmFtZSA9PT0gY29va2llTmFtZSkgeworICAgICAgICAgICAgICAgICAgICAg
ICAgY2hlY2tDb29raWVFeHBpcnkoY29va2llLCBvdmVyT25lV2Vla0luU2Vjb25kcywgZmFsc2Up
OworICAgICAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICAgICAg
dGVzdEZhaWxlZCgiVW5rbm93biBjb29raWUgIiArIGNvb2tpZS5uYW1lICsgIiBmb3VuZC4iKTsK
KyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAg
ICBmaW5pc2hUZXN0KCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0pOworICAgIH0KKworICAg
IGNvbnN0IGZpcnN0UGFydHkgPSAiaHR0cDovLzEyNy4wLjAuMTo4MDAwIjsKKyAgICBjb25zdCBm
aXJzdFBhcnR5Q05BTUVGb3JUZXN0aW5nID0gImh0dHA6Ly90ZXN0d2Via2l0Lm9yZyI7CisKKyAg
ICBmdW5jdGlvbiBydW5UZXN0KCkgeworICAgICAgICBzZXRFbmFibGVGZWF0dXJlKHRydWUsIGZ1
bmN0aW9uKCkgeworICAgICAgICAgICAgdGVzdFJ1bm5lci5zdGF0aXN0aWNzU2V0Rmlyc3RQYXJ0
eUhvc3RDTkFNRURvbWFpbihmaXJzdFBhcnR5LCBmaXJzdFBhcnR5Q05BTUVGb3JUZXN0aW5nLCBm
dW5jdGlvbigpIHsKKyAgICAgICAgICAgICAgICBzZXRBbmRDaGVja0Nvb2tpZSgpOworICAgICAg
ICAgICAgfSk7CisgICAgICAgIH0pOworICAgIH0KKzwvc2NyaXB0PgorPC9ib2R5PgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL2NuYW1l
LWNsb2FraW5nLXRvcC1uby1jbmFtZS1zdWItMXAtY25hbWUtZXhwZWN0ZWQudHh0IGIvTGF5b3V0
VGVzdHMvaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL2NuYW1lLWNsb2FraW5nLXRv
cC1uby1jbmFtZS1zdWItMXAtY25hbWUtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmFiZmEyOTlj
Y2FkNzBmNjUwZWI2MGE2ZTkwODFmYjkyMmMxNzQxMzkKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvY25hbWUtY2xvYWtpbmct
dG9wLW5vLWNuYW1lLXN1Yi0xcC1jbmFtZS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxMCBAQAor
VGVzdCBmb3IgQ05BTUUgQ2xvYWtpbmc6IE5vIGNvb2tpZSBleHBpcnkgY2FwcGluZyBpZiB0aGUg
dG9wIGZyYW1lIGhhcyBubyBhbHRlcm5hdGUgQ05BTUUgYW5kIHRoZSBzdWIgcmVzb3VyY2UgaGFz
IGFuIGFsdGVybmF0ZSBDTkFNRSB0aGF0IG1hdGNoZXMgdGhlIGZpcnN0IHBhcnR5IChub3QgaXRz
IENOQU1FKS4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBt
ZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BBU1MgQ29va2llIG5h
bWVkIGNuYW1lVGVzdENvb2tpZSBleHBpcmVzIGluIG1vcmUgdGhhbiA2MDU0MDAgc2Vjb25kcy4K
K1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvY25h
bWUtY2xvYWtpbmctdG9wLW5vLWNuYW1lLXN1Yi0xcC1jbmFtZS5odG1sIGIvTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL2NuYW1lLWNsb2FraW5nLXRvcC1uby1j
bmFtZS1zdWItMXAtY25hbWUuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yNzM3NDY0NTgzYjVkNDgwNWJlYmY5
M2E4NDBlNWQwNzc2NDQ4OGYxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL2NuYW1lLWNsb2FraW5nLXRvcC1uby1jbmFtZS1z
dWItMXAtY25hbWUuaHRtbApAQCAtMCwwICsxLDY1IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1s
IGxhbmc9ImVuIj4KKzxoZWFkPgorICAgIDxtZXRhIGNoYXJzZXQ9IlVURi04Ij4KKyAgICA8c2Ny
aXB0IHNyYz0iL2pzLXRlc3QtcmVzb3VyY2VzL2pzLXRlc3QuanMiPjwvc2NyaXB0PgorICAgIDxz
Y3JpcHQgc3JjPSIvY29va2llcy9yZXNvdXJjZXMvY29va2llLXV0aWxpdGllcy5qcyI+PC9zY3Jp
cHQ+CisgICAgPHNjcmlwdCBzcmM9InJlc291cmNlcy91dGlsLmpzIj48L3NjcmlwdD4KKzwvaGVh
ZD4KKzxib2R5IG9ubG9hZD0icnVuVGVzdCgpIj4KKzxzY3JpcHQ+CisgICAgZGVzY3JpcHRpb24o
IlRlc3QgZm9yIENOQU1FIENsb2FraW5nOiBObyBjb29raWUgZXhwaXJ5IGNhcHBpbmcgaWYgdGhl
IHRvcCBmcmFtZSBoYXMgbm8gYWx0ZXJuYXRlIENOQU1FIGFuZCB0aGUgc3ViIHJlc291cmNlIGhh
cyBhbiBhbHRlcm5hdGUgQ05BTUUgdGhhdCBtYXRjaGVzIHRoZSBmaXJzdCBwYXJ0eSAobm90IGl0
cyBDTkFNRSkuIik7CisgICAganNUZXN0SXNBc3luYyA9IHRydWU7CisKKyAgICBmdW5jdGlvbiBm
aW5pc2hUZXN0KCkgeworICAgICAgICByZXNldENvb2tpZXNGb3JDdXJyZW50T3JpZ2luKCk7Cisg
ICAgICAgIHNldEVuYWJsZUZlYXR1cmUoZmFsc2UsIGZ1bmN0aW9uKCkgeworICAgICAgICAgICAg
ZmluaXNoSlNUZXN0KCk7CisgICAgICAgIH0pOworICAgIH0KKworICAgIGZ1bmN0aW9uIGNoZWNr
Q29va2llRXhwaXJ5KGNvb2tpZURhdGEsIHNlY29uZHMsIHNob3VsZEJlTGVzc1RoYW4pIHsKKyAg
ICAgICAgbGV0IG5vdyA9IG5ldyBEYXRlKCk7CisgICAgICAgIGxldCBleHBpcnlEYXRlSW5NaWxs
aXNlY29uZHMgPSBub3cuZ2V0VGltZSgpICsgKHNlY29uZHMgKiAxMDAwKTsKKworICAgICAgICBp
ZiAoKGNvb2tpZURhdGFbImV4cGlyZXMiXSA8IGV4cGlyeURhdGVJbk1pbGxpc2Vjb25kcykgPT09
IHNob3VsZEJlTGVzc1RoYW4pCisgICAgICAgICAgICB0ZXN0UGFzc2VkKCJDb29raWUgbmFtZWQg
IiArIGNvb2tpZURhdGFbIm5hbWUiXSArICIgZXhwaXJlcyBpbiAiICsgKHNob3VsZEJlTGVzc1Ro
YW4gPyAibGVzcyIgOiAibW9yZSIpICsgIiB0aGFuICIgKyBzZWNvbmRzICsgIiBzZWNvbmRzLiIp
OworICAgICAgICBlbHNlCisgICAgICAgICAgICB0ZXN0RmFpbGVkKCJDb29raWUgbmFtZWQgIiAr
IGNvb2tpZURhdGFbIm5hbWUiXSArICIgZXhwaXJlcyBpbiAiICsgKHNob3VsZEJlTGVzc1RoYW4g
PyAibW9yZSIgOiAibGVzcyIpICsgIiB0aGFuICIgKyBzZWNvbmRzICsgIiBzZWNvbmRzLiIpOwor
ICAgIH0KKworICAgIGNvbnN0IG9uZVdlZWtJblNlY29uZHMgPSA3ICogMjQgKiA2MCAqIDYwOwor
ICAgIGNvbnN0IG92ZXJPbmVXZWVrSW5TZWNvbmRzID0gb25lV2Vla0luU2Vjb25kcyArIDYwMDsK
KyAgICBjb25zdCBjb29raWVOYW1lID0gImNuYW1lVGVzdENvb2tpZSI7CisgICAgY29uc3Qgc3Vi
UGF0aFRvU2V0Rmlyc3RQYXJ0eUNvb2tpZSA9ICJyZXNvdXJjZXMvc2V0LWNvb2tpZS5waHA/bmFt
ZT0iICsgY29va2llTmFtZSArICImdmFsdWU9dmFsdWUmZHVtbXk9IiArIE1hdGgucmFuZG9tKCk7
CisKKyAgICBmdW5jdGlvbiBzZXRBbmRDaGVja0Nvb2tpZSgpIHsKKyAgICAgICAgZmV0Y2goc3Vi
UGF0aFRvU2V0Rmlyc3RQYXJ0eUNvb2tpZSkudGhlbihmdW5jdGlvbigpIHsKKyAgICAgICAgICAg
IGlmIChpbnRlcm5hbHMpIHsKKyAgICAgICAgICAgICAgICBsZXQgY29va2llcyA9IGludGVybmFs
cy5nZXRDb29raWVzKCk7CisgICAgICAgICAgICAgICAgaWYgKCFjb29raWVzLmxlbmd0aCkKKyAg
ICAgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiTm8gY29va2llcyBmb3VuZC4iKTsKKyAgICAg
ICAgICAgICAgICBmb3IgKGxldCBjb29raWUgb2YgY29va2llcykgeworICAgICAgICAgICAgICAg
ICAgICBpZiAoY29va2llLm5hbWUgPT09IGNvb2tpZU5hbWUpIHsKKyAgICAgICAgICAgICAgICAg
ICAgICAgIGNoZWNrQ29va2llRXhwaXJ5KGNvb2tpZSwgb3Zlck9uZVdlZWtJblNlY29uZHMsIGZh
bHNlKTsKKyAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAg
ICAgIHRlc3RGYWlsZWQoIlVua25vd24gY29va2llICIgKyBjb29raWUubmFtZSArICIgZm91bmQu
Iik7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAg
ICAgICAgZmluaXNoVGVzdCgpOworICAgICAgICAgICAgfQorICAgICAgICB9KTsKKyAgICB9CisK
KyAgICBjb25zdCBmaXJzdFBhcnR5ID0gImh0dHA6Ly8xMjcuMC4wLjE6ODAwMCI7CisgICAgY29u
c3QgdGhpcmRQYXJ0eUNOQU1FRm9yVGVzdGluZyA9IGZpcnN0UGFydHk7CisKKyAgICBmdW5jdGlv
biBydW5UZXN0KCkgeworICAgICAgICBzZXRFbmFibGVGZWF0dXJlKHRydWUsIGZ1bmN0aW9uKCkg
eworICAgICAgICAgICAgdGVzdFJ1bm5lci5zdGF0aXN0aWNzU2V0VGhpcmRQYXJ0eUNOQU1FRG9t
YWluKHRoaXJkUGFydHlDTkFNRUZvclRlc3RpbmcsIGZ1bmN0aW9uKCkgeworICAgICAgICAgICAg
ICAgIHNldEFuZENoZWNrQ29va2llKCk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgfSk7Cisg
ICAgfQorPC9zY3JpcHQ+Cis8L2JvZHk+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvY25hbWUtY2xvYWtpbmctdG9wLW5vLWNuYW1lLXN1
Yi0zcC1jbmFtZS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3Jlc291cmNl
TG9hZFN0YXRpc3RpY3MvY25hbWUtY2xvYWtpbmctdG9wLW5vLWNuYW1lLXN1Yi0zcC1jbmFtZS1l
eHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDVkMmVkNmZkN2Y2MWM2MWU3YzAwYjJlZTg1OGRjYTdm
MzgxOGRlNAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvcmVzb3Vy
Y2VMb2FkU3RhdGlzdGljcy9jbmFtZS1jbG9ha2luZy10b3Atbm8tY25hbWUtc3ViLTNwLWNuYW1l
LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDEwIEBACitUZXN0IGZvciBDTkFNRSBDbG9ha2luZzog
Q29va2llIGV4cGlyeSBjYXBwaW5nIGlmIHRoZSB0b3AgZnJhbWUgaGFzIG5vIGFsdGVybmF0ZSBD
TkFNRSBhbmQgdGhlIHN1YiByZXNvdXJjZSBoYXMgYW4gYWx0ZXJuYXRlIENOQU1FLgorCitPbiBz
dWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dl
ZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworUEFTUyBDb29raWUgbmFtZWQgY25hbWVUZXN0Q29v
a2llIGV4cGlyZXMgaW4gbGVzcyB0aGFuIDYwNTQwMCBzZWNvbmRzLgorUEFTUyBzdWNjZXNzZnVs
bHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2h0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9jbmFtZS1jbG9ha2luZy10b3At
bm8tY25hbWUtc3ViLTNwLWNuYW1lLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3Jlc291
cmNlTG9hZFN0YXRpc3RpY3MvY25hbWUtY2xvYWtpbmctdG9wLW5vLWNuYW1lLXN1Yi0zcC1jbmFt
ZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLmI1YWM0OTdmOTMzNmUzMmNiYmZkYTk3M2U5MGM0MGEzNzkwZGU4
YTcKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3Jlc291cmNlTG9h
ZFN0YXRpc3RpY3MvY25hbWUtY2xvYWtpbmctdG9wLW5vLWNuYW1lLXN1Yi0zcC1jbmFtZS5odG1s
CkBAIC0wLDAgKzEsNzEgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWwgbGFuZz0iZW4iPgorPGhl
YWQ+CisgICAgPG1ldGEgY2hhcnNldD0iVVRGLTgiPgorICAgIDxzY3JpcHQgc3JjPSIvanMtdGVz
dC1yZXNvdXJjZXMvanMtdGVzdC5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9Ii9jb29r
aWVzL3Jlc291cmNlcy9jb29raWUtdXRpbGl0aWVzLmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0
IHNyYz0icmVzb3VyY2VzL3V0aWwuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHkgb25sb2Fk
PSJydW5UZXN0KCkiPgorPHNjcmlwdD4KKyAgICBkZXNjcmlwdGlvbigiVGVzdCBmb3IgQ05BTUUg
Q2xvYWtpbmc6IENvb2tpZSBleHBpcnkgY2FwcGluZyBpZiB0aGUgdG9wIGZyYW1lIGhhcyBubyBh
bHRlcm5hdGUgQ05BTUUgYW5kIHRoZSBzdWIgcmVzb3VyY2UgaGFzIGFuIGFsdGVybmF0ZSBDTkFN
RS4iKTsKKyAgICBqc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKworICAgIGZ1bmN0aW9uIGZpbmlzaFRl
c3QoKSB7CisgICAgICAgIHJlc2V0Q29va2llc0ZvckN1cnJlbnRPcmlnaW4oKTsKKyAgICAgICAg
c2V0RW5hYmxlRmVhdHVyZShmYWxzZSwgZnVuY3Rpb24oKSB7CisgICAgICAgICAgICBmaW5pc2hK
U1Rlc3QoKTsKKyAgICAgICAgfSk7CisgICAgfQorCisgICAgY29uc3Qgb25lV2Vla0luU2Vjb25k
cyA9IDcgKiAyNCAqIDYwICogNjA7CisgICAgY29uc3Qgb3Zlck9uZVdlZWtJblNlY29uZHMgPSBv
bmVXZWVrSW5TZWNvbmRzICsgNjAwOworICAgIGNvbnN0IHVuZGVyT25lV2Vla0luU2Vjb25kcyA9
IG9uZVdlZWtJblNlY29uZHMgLSA2MDA7CisKKyAgICBmdW5jdGlvbiBjaGVja0Nvb2tpZUV4cGly
eShjb29raWVEYXRhLCBzZWNvbmRzLCBzaG91bGRCZUxlc3NUaGFuKSB7CisgICAgICAgIGxldCBu
b3cgPSBuZXcgRGF0ZSgpOworICAgICAgICBsZXQgZXhwaXJ5RGF0ZUluTWlsbGlzZWNvbmRzID0g
bm93LmdldFRpbWUoKSArIChzZWNvbmRzICogMTAwMCk7CisKKyAgICAgICAgaWYgKChjb29raWVE
YXRhWyJleHBpcmVzIl0gPCBleHBpcnlEYXRlSW5NaWxsaXNlY29uZHMpID09PSBzaG91bGRCZUxl
c3NUaGFuKSB7CisgICAgICAgICAgICBsZXQgdW5kZXJPbmVXZWVrRXhwaXJ5RGF0ZUluTWlsbGlz
ZWNvbmRzID0gbm93LmdldFRpbWUoKSArICh1bmRlck9uZVdlZWtJblNlY29uZHMgKiAxMDAwKTsK
KyAgICAgICAgICAgIGlmIChjb29raWVEYXRhWyJleHBpcmVzIl0gPCB1bmRlck9uZVdlZWtFeHBp
cnlEYXRlSW5NaWxsaXNlY29uZHMpCisgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiQ29va2ll
IG5hbWVkICIgKyBjb29raWVEYXRhWyJuYW1lIl0gKyAiIHdhcyBjYXBwZWQgdG9vIGxvdy4iKTsK
KyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCJDb29raWUgbmFt
ZWQgIiArIGNvb2tpZURhdGFbIm5hbWUiXSArICIgZXhwaXJlcyBpbiAiICsgKHNob3VsZEJlTGVz
c1RoYW4gPyAibGVzcyIgOiAibW9yZSIpICsgIiB0aGFuICIgKyBzZWNvbmRzICsgIiBzZWNvbmRz
LiIpOworICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgIHRlc3RGYWlsZWQoIkNvb2tpZSBuYW1l
ZCAiICsgY29va2llRGF0YVsibmFtZSJdICsgIiBleHBpcmVzIGluICIgKyAoc2hvdWxkQmVMZXNz
VGhhbiA/ICJtb3JlIiA6ICJsZXNzIikgKyAiIHRoYW4gIiArIHNlY29uZHMgKyAiIHNlY29uZHMu
Iik7CisgICAgfQorCisgICAgY29uc3QgY29va2llTmFtZSA9ICJjbmFtZVRlc3RDb29raWUiOwor
ICAgIGNvbnN0IHN1YlBhdGhUb1NldEZpcnN0UGFydHlDb29raWUgPSAicmVzb3VyY2VzL3NldC1j
b29raWUucGhwP25hbWU9IiArIGNvb2tpZU5hbWUgKyAiJnZhbHVlPXZhbHVlJmR1bW15PSIgKyBN
YXRoLnJhbmRvbSgpOworCisgICAgZnVuY3Rpb24gc2V0QW5kQ2hlY2tDb29raWUoKSB7CisgICAg
ICAgIGZldGNoKHN1YlBhdGhUb1NldEZpcnN0UGFydHlDb29raWUpLnRoZW4oZnVuY3Rpb24oKSB7
CisgICAgICAgICAgICBpZiAoaW50ZXJuYWxzKSB7CisgICAgICAgICAgICAgICAgbGV0IGNvb2tp
ZXMgPSBpbnRlcm5hbHMuZ2V0Q29va2llcygpOworICAgICAgICAgICAgICAgIGlmICghY29va2ll
cy5sZW5ndGgpCisgICAgICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoIk5vIGNvb2tpZXMgZm91
bmQuIik7CisgICAgICAgICAgICAgICAgZm9yIChsZXQgY29va2llIG9mIGNvb2tpZXMpIHsKKyAg
ICAgICAgICAgICAgICAgICAgaWYgKGNvb2tpZS5uYW1lID09PSBjb29raWVOYW1lKSB7CisgICAg
ICAgICAgICAgICAgICAgICAgICBjaGVja0Nvb2tpZUV4cGlyeShjb29raWUsIG92ZXJPbmVXZWVr
SW5TZWNvbmRzLCB0cnVlKTsKKyAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAg
ICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoIlVua25vd24gY29va2llICIgKyBjb29raWUubmFt
ZSArICIgZm91bmQuIik7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9
CisgICAgICAgICAgICAgICAgZmluaXNoVGVzdCgpOworICAgICAgICAgICAgfQorICAgICAgICB9
KTsKKyAgICB9CisKKyAgICBjb25zdCBmaXJzdFBhcnR5ID0gImh0dHA6Ly8xMjcuMC4wLjE6ODAw
MCI7CisgICAgY29uc3QgdGhpcmRQYXJ0eUNOQU1FRm9yVGVzdGluZyA9ICJodHRwOi8vM3JkcGFy
dHl0ZXN0d2Via2l0Lm9yZyI7CisKKyAgICBmdW5jdGlvbiBydW5UZXN0KCkgeworICAgICAgICBz
ZXRFbmFibGVGZWF0dXJlKHRydWUsIGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgdGVzdFJ1bm5l
ci5zdGF0aXN0aWNzU2V0VGhpcmRQYXJ0eUNOQU1FRG9tYWluKHRoaXJkUGFydHlDTkFNRUZvclRl
c3RpbmcsIGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgICAgIHNldEFuZENoZWNrQ29va2llKCk7
CisgICAgICAgICAgICB9KTsKKyAgICAgICAgfSk7CisgICAgfQorPC9zY3JpcHQ+Cis8L2JvZHk+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3Rp
Y3MvY25hbWUtY2xvYWtpbmctdG9wLW5vLWNuYW1lLXN1Yi1uby1jbmFtZS1leHBlY3RlZC50eHQg
Yi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvY25hbWUtY2xv
YWtpbmctdG9wLW5vLWNuYW1lLXN1Yi1uby1jbmFtZS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NjA1Yzk5YzA0NzcwMjUzNmFlODI3MWQ2ZWRhMjkxYjFkNGY0MGJlYwotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9jbmFtZS1j
bG9ha2luZy10b3Atbm8tY25hbWUtc3ViLW5vLWNuYW1lLWV4cGVjdGVkLnR4dApAQCAtMCwwICsx
LDEwIEBACitUZXN0IGZvciBDTkFNRSBDbG9ha2luZzogTm8gY29va2llIGV4cGlyeSBjYXBwaW5n
IGlmIHRoZSB0b3AgZnJhbWUgaGFzIG5vIGFsdGVybmF0ZSBDTkFNRSBhbmQgdGhlIHN1YiByZXNv
dXJjZSBoYXMgbm8gYWx0ZXJuYXRlIENOQU1FLgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUg
YSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIu
CisKKworUEFTUyBDb29raWUgbmFtZWQgY25hbWVUZXN0Q29va2llIGV4cGlyZXMgaW4gbW9yZSB0
aGFuIDYwNTQwMCBzZWNvbmRzLgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitU
RVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvcmVzb3Vy
Y2VMb2FkU3RhdGlzdGljcy9jbmFtZS1jbG9ha2luZy10b3Atbm8tY25hbWUtc3ViLW5vLWNuYW1l
Lmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvY25h
bWUtY2xvYWtpbmctdG9wLW5vLWNuYW1lLXN1Yi1uby1jbmFtZS5odG1sCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjY2
M2Y5YmY2NjY4NWNhMDk0YTQ5ZTRmZGJjZjg5YjhlZjZiNTNmOTEKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvY25hbWUtY2xv
YWtpbmctdG9wLW5vLWNuYW1lLXN1Yi1uby1jbmFtZS5odG1sCkBAIC0wLDAgKzEsNjAgQEAKKzwh
RE9DVFlQRSBodG1sPgorPGh0bWwgbGFuZz0iZW4iPgorPGhlYWQ+CisgICAgPG1ldGEgY2hhcnNl
dD0iVVRGLTgiPgorICAgIDxzY3JpcHQgc3JjPSIvanMtdGVzdC1yZXNvdXJjZXMvanMtdGVzdC5q
cyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9Ii9jb29raWVzL3Jlc291cmNlcy9jb29raWUt
dXRpbGl0aWVzLmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3V0aWwu
anMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHkgb25sb2FkPSJydW5UZXN0KCkiPgorPHNjcmlw
dD4KKyAgICBkZXNjcmlwdGlvbigiVGVzdCBmb3IgQ05BTUUgQ2xvYWtpbmc6IE5vIGNvb2tpZSBl
eHBpcnkgY2FwcGluZyBpZiB0aGUgdG9wIGZyYW1lIGhhcyBubyBhbHRlcm5hdGUgQ05BTUUgYW5k
IHRoZSBzdWIgcmVzb3VyY2UgaGFzIG5vIGFsdGVybmF0ZSBDTkFNRS4iKTsKKyAgICBqc1Rlc3RJ
c0FzeW5jID0gdHJ1ZTsKKworICAgIGZ1bmN0aW9uIGZpbmlzaFRlc3QoKSB7CisgICAgICAgIHJl
c2V0Q29va2llc0ZvckN1cnJlbnRPcmlnaW4oKTsKKyAgICAgICAgc2V0RW5hYmxlRmVhdHVyZShm
YWxzZSwgZnVuY3Rpb24oKSB7CisgICAgICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAgICAgICAg
fSk7CisgICAgfQorCisgICAgZnVuY3Rpb24gY2hlY2tDb29raWVFeHBpcnkoY29va2llRGF0YSwg
c2Vjb25kcywgc2hvdWxkQmVMZXNzVGhhbikgeworICAgICAgICBsZXQgbm93ID0gbmV3IERhdGUo
KTsKKyAgICAgICAgbGV0IGV4cGlyeURhdGVJbk1pbGxpc2Vjb25kcyA9IG5vdy5nZXRUaW1lKCkg
KyAoc2Vjb25kcyAqIDEwMDApOworCisgICAgICAgIGlmICgoY29va2llRGF0YVsiZXhwaXJlcyJd
IDwgZXhwaXJ5RGF0ZUluTWlsbGlzZWNvbmRzKSA9PT0gc2hvdWxkQmVMZXNzVGhhbikKKyAgICAg
ICAgICAgIHRlc3RQYXNzZWQoIkNvb2tpZSBuYW1lZCAiICsgY29va2llRGF0YVsibmFtZSJdICsg
IiBleHBpcmVzIGluICIgKyAoc2hvdWxkQmVMZXNzVGhhbiA/ICJsZXNzIiA6ICJtb3JlIikgKyAi
IHRoYW4gIiArIHNlY29uZHMgKyAiIHNlY29uZHMuIik7CisgICAgICAgIGVsc2UKKyAgICAgICAg
ICAgIHRlc3RGYWlsZWQoIkNvb2tpZSBuYW1lZCAiICsgY29va2llRGF0YVsibmFtZSJdICsgIiBl
eHBpcmVzIGluICIgKyAoc2hvdWxkQmVMZXNzVGhhbiA/ICJtb3JlIiA6ICJsZXNzIikgKyAiIHRo
YW4gIiArIHNlY29uZHMgKyAiIHNlY29uZHMuIik7CisgICAgfQorCisgICAgY29uc3Qgb25lV2Vl
a0luU2Vjb25kcyA9IDcgKiAyNCAqIDYwICogNjA7CisgICAgY29uc3Qgb3Zlck9uZVdlZWtJblNl
Y29uZHMgPSBvbmVXZWVrSW5TZWNvbmRzICsgNjAwOworICAgIGNvbnN0IGNvb2tpZU5hbWUgPSAi
Y25hbWVUZXN0Q29va2llIjsKKyAgICBjb25zdCBzdWJQYXRoVG9TZXRGaXJzdFBhcnR5Q29va2ll
ID0gInJlc291cmNlcy9zZXQtY29va2llLnBocD9uYW1lPSIgKyBjb29raWVOYW1lICsgIiZ2YWx1
ZT12YWx1ZSZkdW1teT0iICsgTWF0aC5yYW5kb20oKTsKKworICAgIGZ1bmN0aW9uIHNldEFuZENo
ZWNrQ29va2llKCkgeworICAgICAgICBmZXRjaChzdWJQYXRoVG9TZXRGaXJzdFBhcnR5Q29va2ll
KS50aGVuKGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgaWYgKGludGVybmFscykgeworICAgICAg
ICAgICAgICAgIGxldCBjb29raWVzID0gaW50ZXJuYWxzLmdldENvb2tpZXMoKTsKKyAgICAgICAg
ICAgICAgICBpZiAoIWNvb2tpZXMubGVuZ3RoKQorICAgICAgICAgICAgICAgICAgICB0ZXN0RmFp
bGVkKCJObyBjb29raWVzIGZvdW5kLiIpOworICAgICAgICAgICAgICAgIGZvciAobGV0IGNvb2tp
ZSBvZiBjb29raWVzKSB7CisgICAgICAgICAgICAgICAgICAgIGlmIChjb29raWUubmFtZSA9PT0g
Y29va2llTmFtZSkgeworICAgICAgICAgICAgICAgICAgICAgICAgY2hlY2tDb29raWVFeHBpcnko
Y29va2llLCBvdmVyT25lV2Vla0luU2Vjb25kcywgZmFsc2UpOworICAgICAgICAgICAgICAgICAg
ICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiVW5rbm93biBj
b29raWUgIiArIGNvb2tpZS5uYW1lICsgIiBmb3VuZC4iKTsKKyAgICAgICAgICAgICAgICAgICAg
fQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBmaW5pc2hUZXN0KCk7CisgICAg
ICAgICAgICB9CisgICAgICAgIH0pOworICAgIH0KKworICAgIGZ1bmN0aW9uIHJ1blRlc3QoKSB7
CisgICAgICAgIHNldEVuYWJsZUZlYXR1cmUodHJ1ZSwgZnVuY3Rpb24oKSB7CisgICAgICAgICAg
ICBzZXRBbmRDaGVja0Nvb2tpZSgpOworICAgICAgICB9KTsKKyAgICB9Cis8L3NjcmlwdD4KKzwv
Ym9keT4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2lvcy0xMy9UZXN0RXhwZWN0
YXRpb25zIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vaW9zLTEzL1Rlc3RFeHBlY3RhdGlvbnMKaW5k
ZXggNGMzYmExZTA2YmZkMzY1NTY3ZGUyNzdkNmE2OGFmMDZkNGM1MDg0ZS4uNTA3YjQ3MTBkZjg0
MDUwNmMyNDVkNjlkNmJhZTA3NDE2MzU4OTk1NCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxh
dGZvcm0vaW9zLTEzL1Rlc3RFeHBlY3RhdGlvbnMKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0v
aW9zLTEzL1Rlc3RFeHBlY3RhdGlvbnMKQEAgLTEsMyArMSwxMiBAQAogIyBDZXJ0YWluIHZlcnNp
b25zIG9mIGlPUyB1c2UgZGlmZmVyZW50IHRleHQgc2VjdXJpdHkgY2hhcmFjdGVycy4KIHdlYmtp
dC5vcmcvYi8yMDk2OTIgcGxhdGZvcm0vaW9zL2Zhc3QvdGV4dC90ZXh0LXNlY3VyaXR5LWRpc2Mt
YnVsbGV0LXB1YS1pb3MtbmV3Lmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KLXdlYmtpdC5vcmcv
Yi8yMDk2OTIgZmFzdC90ZXh0L3RleHQtc2VjdXJpdHktZGlzYy1idWxsZXQtcHVhLmh0bWwgWyBJ
bWFnZU9ubHlGYWlsdXJlIF0KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCit3ZWJraXQub3Jn
L2IvMjA5NjkyIGZhc3QvdGV4dC90ZXh0LXNlY3VyaXR5LWRpc2MtYnVsbGV0LXB1YS5odG1sIFsg
SW1hZ2VPbmx5RmFpbHVyZSBdCisKKyMgVGhlIENOQU1FIGFuZCBjb29raWUgdHJhbnNmb3JtIFNQ
SXMgYXJlIG9ubHkgYXZhaWxhYmxlIGluIGlPUyAxNCBhbmQgYWJvdmUuCitodHRwL3Rlc3RzL3Jl
c291cmNlTG9hZFN0YXRpc3RpY3MvY25hbWUtY2xvYWtpbmctdG9wLWNuYW1lLXN1Yi0xcC1jbmFt
ZS5odG1sIFsgU2tpcCBdCitodHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvY25hbWUt
Y2xvYWtpbmctdG9wLWNuYW1lLXN1Yi0zcC1jbmFtZS5odG1sIFsgU2tpcCBdCitodHRwL3Rlc3Rz
L3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvY25hbWUtY2xvYWtpbmctdG9wLWNuYW1lLXN1Yi1tYXRj
aGluZy1jbmFtZS5odG1sIFsgU2tpcCBdCitodHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3Rp
Y3MvY25hbWUtY2xvYWtpbmctdG9wLWNuYW1lLXN1Yi1uby1jbmFtZS5odG1sIFsgU2tpcCBdCito
dHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvY25hbWUtY2xvYWtpbmctdG9wLW5vLWNu
YW1lLXN1Yi0xcC1jbmFtZS5odG1sIFsgU2tpcCBdCitodHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0
YXRpc3RpY3MvY25hbWUtY2xvYWtpbmctdG9wLW5vLWNuYW1lLXN1Yi0zcC1jbmFtZS5odG1sIFsg
U2tpcCBdCitodHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvY25hbWUtY2xvYWtpbmct
dG9wLW5vLWNuYW1lLXN1Yi1uby1jbmFtZS5odG1sIFsgU2tpcCBdCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9wbGF0Zm9ybS9pb3Mtd2syL1Rlc3RFeHBlY3RhdGlvbnMgYi9MYXlvdXRUZXN0cy9w
bGF0Zm9ybS9pb3Mtd2syL1Rlc3RFeHBlY3RhdGlvbnMKaW5kZXggOTM2MWMyMTZkZTBiMzc2OWM0
N2EzZjQ4MzQ1N2M5ZGVjNzIyYTgzOC4uYTlmNTg1ZGE2YzZkNWY1YzYzYTA4NjYyNDljYThiYmEx
YWMzY2RjMiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vaW9zLXdrMi9UZXN0RXhw
ZWN0YXRpb25zCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2lvcy13azIvVGVzdEV4cGVjdGF0
aW9ucwpAQCAtODIsNiArODIsMTUgQEAgc2Nyb2xsaW5nY29vcmRpbmF0b3Ivbm9uLWZhc3Qtc2Ny
b2xsYWJsZS1yZWdpb24tdHJhbnNmb3JtZWQtaWZyYW1lLmh0bWwgWyBTa2lwIF0KIGh0dHAvdGVz
dHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9zdHJpcC1yZWZlcnJlci10by1vcmlnaW4tZm9yLXRo
aXJkLXBhcnR5LXJlZGlyZWN0cy5odG1sIFsgUGFzcyBdCiBodHRwL3Rlc3RzL3Jlc291cmNlTG9h
ZFN0YXRpc3RpY3Mvc3RyaXAtcmVmZXJyZXItdG8tb3JpZ2luLWZvci10aGlyZC1wYXJ0eS1yZXF1
ZXN0cy5odG1sIFsgUGFzcyBdCiAKKyMgVGhlIENOQU1FIGFuZCBjb29raWUgdHJhbnNmb3JtIFNQ
SXMgYXJlIG9ubHkgYXZhaWxhYmxlIGluIGlPUyAxNCBhbmQgYWJvdmUuCitodHRwL3Rlc3RzL3Jl
c291cmNlTG9hZFN0YXRpc3RpY3MvY25hbWUtY2xvYWtpbmctdG9wLWNuYW1lLXN1Yi0xcC1jbmFt
ZS5odG1sIFsgUGFzcyBdCitodHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvY25hbWUt
Y2xvYWtpbmctdG9wLWNuYW1lLXN1Yi0zcC1jbmFtZS5odG1sIFsgUGFzcyBdCitodHRwL3Rlc3Rz
L3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvY25hbWUtY2xvYWtpbmctdG9wLWNuYW1lLXN1Yi1tYXRj
aGluZy1jbmFtZS5odG1sIFsgUGFzcyBdCitodHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3Rp
Y3MvY25hbWUtY2xvYWtpbmctdG9wLWNuYW1lLXN1Yi1uby1jbmFtZS5odG1sIFsgUGFzcyBdCito
dHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvY25hbWUtY2xvYWtpbmctdG9wLW5vLWNu
YW1lLXN1Yi0xcC1jbmFtZS5odG1sIFsgUGFzcyBdCitodHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0
YXRpc3RpY3MvY25hbWUtY2xvYWtpbmctdG9wLW5vLWNuYW1lLXN1Yi0zcC1jbmFtZS5odG1sIFsg
UGFzcyBdCitodHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvY25hbWUtY2xvYWtpbmct
dG9wLW5vLWNuYW1lLXN1Yi1uby1jbmFtZS5odG1sIFsgUGFzcyBdCisKICMvLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8KICMgRW5kIHBsYXRmb3JtLXNwZWNpZmljIGRpcmVjdG9yaWVz
LgogIy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvcGxhdGZvcm0vbWFjLXdrMi9UZXN0RXhwZWN0YXRpb25zIGIvTGF5b3V0VGVzdHMvcGxh
dGZvcm0vbWFjLXdrMi9UZXN0RXhwZWN0YXRpb25zCmluZGV4IGUzMDhkZmE4OWVmYzRlOGRiYmZj
YTU3YTE3NjRiNDNkMjMyMjdmYzEuLjM2OWQzM2IxZWEyMDI4ZjViNjI1NGQ4YzZjZGQ2ZWFiZWU1
N2JmNmMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azIvVGVzdEV4cGVj
dGF0aW9ucworKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2syL1Rlc3RFeHBlY3RhdGlv
bnMKQEAgLTcxMyw2ICs3MTMsMTUgQEAgaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNz
L2NhcC1jYWNoZS1tYXgtYWdlLWZvci1wcmV2YWxlbnQtcmVzb3VyY2UuaHRtbAogWyBDYXRhbGlu
YSsgXSBodHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvZW5mb3JjZS1zYW1lc2l0ZS1z
dHJpY3QtYmFzZWQtb24tdG9wLWZyYW1lLXVuaXF1ZS1yZWRpcmVjdHMtdG8uaHRtbCBbIFBhc3Mg
XQogWyBDYXRhbGluYSsgXSBodHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvZW5mb3Jj
ZS1zYW1lc2l0ZS1zdHJpY3QtYmFzZWQtb24tdG9wLWZyYW1lLXVuaXF1ZS1yZWRpcmVjdHMtdG8t
ZGF0YWJhc2UuaHRtbCBbIFBhc3MgXQogCisjIFRoZSBDTkFNRSBhbmQgY29va2llIHRyYW5zZm9y
bSBTUElzIGFyZSBvbmx5IGF2YWlsYWJsZSBpbiBtYWNPUyBCaWcgU3VyIGFuZCBhYm92ZS4KK1sg
QmlnU3VyKyBdIGh0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9jbmFtZS1jbG9ha2lu
Zy10b3AtY25hbWUtc3ViLTFwLWNuYW1lLmh0bWwgWyBQYXNzIF0KK1sgQmlnU3VyKyBdIGh0dHAv
dGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9jbmFtZS1jbG9ha2luZy10b3AtY25hbWUtc3Vi
LTNwLWNuYW1lLmh0bWwgWyBQYXNzIF0KK1sgQmlnU3VyKyBdIGh0dHAvdGVzdHMvcmVzb3VyY2VM
b2FkU3RhdGlzdGljcy9jbmFtZS1jbG9ha2luZy10b3AtY25hbWUtc3ViLW1hdGNoaW5nLWNuYW1l
Lmh0bWwgWyBQYXNzIF0KK1sgQmlnU3VyKyBdIGh0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlz
dGljcy9jbmFtZS1jbG9ha2luZy10b3AtY25hbWUtc3ViLW5vLWNuYW1lLmh0bWwgWyBQYXNzIF0K
K1sgQmlnU3VyKyBdIGh0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9jbmFtZS1jbG9h
a2luZy10b3Atbm8tY25hbWUtc3ViLTFwLWNuYW1lLmh0bWwgWyBQYXNzIF0KK1sgQmlnU3VyKyBd
IGh0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9jbmFtZS1jbG9ha2luZy10b3Atbm8t
Y25hbWUtc3ViLTNwLWNuYW1lLmh0bWwgWyBQYXNzIF0KK1sgQmlnU3VyKyBdIGh0dHAvdGVzdHMv
cmVzb3VyY2VMb2FkU3RhdGlzdGljcy9jbmFtZS1jbG9ha2luZy10b3Atbm8tY25hbWUtc3ViLW5v
LWNuYW1lLmh0bWwgWyBQYXNzIF0KKwogIyBTa2lwcGVkIGluIGdlbmVyYWwgZXhwZWN0YXRpb25z
IHNpbmNlIHRoZXkgb25seSB3b3JrIG9uIGlPUyBhbmQgTWFjLCBXSzIuCiBtZWRpYS9kZWFjdGl2
YXRlLWF1ZGlvLXNlc3Npb24uaHRtbCBbIFBhc3MgXQogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9wbGF0Zm9ybS93azIvVGVzdEV4cGVjdGF0aW9ucyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL3dr
Mi9UZXN0RXhwZWN0YXRpb25zCmluZGV4IGQwZDg2YjEwMzM2NTMyYWUyMzlkYzNkMjdkZWQyNjE4
OTBiZmY4MGYuLjRlYTE0YmNlNTg4ZjUyMmYxY2FmNTk2MWE2YmVmMTY4NzZmMWQyNTEgMTAwNjQ0
Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL3drMi9UZXN0RXhwZWN0YXRpb25zCisrKyBiL0xh
eW91dFRlc3RzL3BsYXRmb3JtL3drMi9UZXN0RXhwZWN0YXRpb25zCkBAIC03MzAsNiArNzMwLDE1
IEBAIGh0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9zZXQtYWxsLWNvb2tpZXMtdG8t
c2FtZS1zaXRlLXN0cmljdC5odG1sIFsgU2tpCiBodHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRp
c3RpY3MvZW5mb3JjZS1zYW1lc2l0ZS1zdHJpY3QtYmFzZWQtb24tdG9wLWZyYW1lLXVuaXF1ZS1y
ZWRpcmVjdHMtdG8uaHRtbCBbIFNraXAgXQogaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0
aWNzL2VuZm9yY2Utc2FtZXNpdGUtc3RyaWN0LWJhc2VkLW9uLXRvcC1mcmFtZS11bmlxdWUtcmVk
aXJlY3RzLXRvLWRhdGFiYXNlLmh0bWwgWyBTa2lwIF0KIAorIyBUaGUgQ05BTUUgYW5kIGNvb2tp
ZSB0cmFuc2Zvcm0gU1BJcyBhcmUgb25seSBhdmFpbGFibGUgaW4gbWFjT1MgQmlnIFN1ciArIGlP
UyAxNCBhbmQgYWJvdmUuCitodHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvY25hbWUt
Y2xvYWtpbmctdG9wLWNuYW1lLXN1Yi0xcC1jbmFtZS5odG1sIFsgU2tpcCBdCitodHRwL3Rlc3Rz
L3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvY25hbWUtY2xvYWtpbmctdG9wLWNuYW1lLXN1Yi0zcC1j
bmFtZS5odG1sIFsgU2tpcCBdCitodHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvY25h
bWUtY2xvYWtpbmctdG9wLWNuYW1lLXN1Yi1tYXRjaGluZy1jbmFtZS5odG1sIFsgU2tpcCBdCito
dHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvY25hbWUtY2xvYWtpbmctdG9wLWNuYW1l
LXN1Yi1uby1jbmFtZS5odG1sIFsgU2tpcCBdCitodHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRp
c3RpY3MvY25hbWUtY2xvYWtpbmctdG9wLW5vLWNuYW1lLXN1Yi0xcC1jbmFtZS5odG1sIFsgU2tp
cCBdCitodHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvY25hbWUtY2xvYWtpbmctdG9w
LW5vLWNuYW1lLXN1Yi0zcC1jbmFtZS5odG1sIFsgU2tpcCBdCitodHRwL3Rlc3RzL3Jlc291cmNl
TG9hZFN0YXRpc3RpY3MvY25hbWUtY2xvYWtpbmctdG9wLW5vLWNuYW1lLXN1Yi1uby1jbmFtZS5o
dG1sIFsgU2tpcCBdCisKIGh0dHAvdGVzdHMvd2Vic29ja2V0L2Nvbm5lY3Rpb24tcmVmdXNhbC1p
bi1mcmFtZS1yZXNvdXJjZS1sb2FkLXN0YXRpc3RpY3MuaHRtbCBbIFBhc3MgXQogIyBUaGVzZSBh
cmUgb25seSBzdXBwb3J0ZWQgYmVoaW5kIGEgY29tcGlsZSB0aW1lIGZsYWcgaW4gbWFjT1MgSGln
aCBTaWVycmEgKyBpT1MgMTEsIGFuZCBhYm92ZS4KIGh0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3Rh
dGlzdGljcy9jb29raWUtZGVsZXRpb24uaHRtbCBbIFBhc3MgVGltZW91dCBdCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>406188</attachid>
            <date>2020-08-07 11:00:11 -0700</date>
            <delta_ts>2020-08-07 11:04:21 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-215201-20200807110010.patch</filename>
            <type>text/plain</type>
            <size>107740</size>
            <attacher name="John Wilander">wilander</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY1MzgwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDA4ZjlkODUxNzRhNjI0YTk2NTg5NzIw
YmI3ZDE5N2RhZWMyOTZmMTQuLjY4MWYzYzcyYTE1OWJlYjc1MTY0NzVkZDBhODYwN2U1ODk3MzA4
MTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMjAtMDgtMDcgIEpvaG4gV2lsYW5kZXIgIDx3aWxh
bmRlckBhcHBsZS5jb20+CisKKyAgICAgICAgRXhwZXJpbWVudGFsOiBDYXAgdGhlIGV4cGlyeSBv
ZiBwZXJzaXN0ZW50IGNvb2tpZXMgc2V0IGluIDNyZC1wYXJ0eSBDTkFNRSBjbG9ha2VkIEhUVFAg
cmVzcG9uc2VzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yMTUyMDEKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzU3NDU0NjMzPgorCisgICAgICAgIFJl
dmlld2VkIGJ5IEJyZW50IEZ1bGdoYW0uIEFsc28gcmV2aWV3ZWQgYW5kIGNvbW1lbnRlZCBvbiBi
eSBDaHJpcyBEdW1leiwgSml0ZW4gTWVodGEsIFNhbSBXZWluaWcsIGFuZCBBbGV4IENocmlzdGVu
c2VuLgorCisgICAgICAgIFRoaXMgY2hhbmdlIGRlZmluZXMgSEFWRV9DRk5FVFdPUktfQ05BTUVf
QU5EX0NPT0tJRV9UUkFOU0ZPUk1fU1BJLgorCisgICAgICAgICogd3RmL1BsYXRmb3JtSGF2ZS5o
OgorCiAyMDIwLTA4LTA3ICBSb2JpbiBNb3Jpc3NldCAgPHJtb3Jpc3NldEBhcHBsZS5jb20+CiAK
ICAgICAgICAgRml4IGluZXF1YWxpdHkgaW4gbmV3bHkgYWRkZWQgYXNzZXJ0aW9uCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cK
aW5kZXggMjE5NjI0YTBiMmVkOWY2ZTVjYzgwNTFiMDJjODQ1OWVlY2IxNmQ3ZC4uNDEyYzllOGE5
NjgyNDBjYWRiYTQ2MDRhZGEwNjBlMGY1NTc0ZWJjYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMy
IEBACisyMDIwLTA4LTA3ICBKb2huIFdpbGFuZGVyICA8d2lsYW5kZXJAYXBwbGUuY29tPgorCisg
ICAgICAgIEV4cGVyaW1lbnRhbDogQ2FwIHRoZSBleHBpcnkgb2YgcGVyc2lzdGVudCBjb29raWVz
IHNldCBpbiAzcmQtcGFydHkgQ05BTUUgY2xvYWtlZCBIVFRQIHJlc3BvbnNlcworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE1MjAxCisgICAgICAgIDxy
ZGFyOi8vcHJvYmxlbS81NzQ1NDYzMz4KKworICAgICAgICBSZXZpZXdlZCBieSBCcmVudCBGdWxn
aGFtLiBBbHNvIHJldmlld2VkIGFuZCBjb21tZW50ZWQgb24gYnkgQ2hyaXMgRHVtZXosIEppdGVu
IE1laHRhLCBTYW0gV2VpbmlnLCBhbmQgQWxleCBDaHJpc3RlbnNlbi4KKworICAgICAgICBUZXN0
czogaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL2NuYW1lLWNsb2FraW5nLXRvcC1j
bmFtZS1zdWItMXAtY25hbWUuaHRtbAorICAgICAgICAgICAgICAgaHR0cC90ZXN0cy9yZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzL2NuYW1lLWNsb2FraW5nLXRvcC1jbmFtZS1zdWItM3AtY25hbWUuaHRt
bAorICAgICAgICAgICAgICAgaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL2NuYW1l
LWNsb2FraW5nLXRvcC1jbmFtZS1zdWItbWF0Y2hpbmctY25hbWUuaHRtbAorICAgICAgICAgICAg
ICAgaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL2NuYW1lLWNsb2FraW5nLXRvcC1j
bmFtZS1zdWItbm8tY25hbWUuaHRtbAorICAgICAgICAgICAgICAgaHR0cC90ZXN0cy9yZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzL2NuYW1lLWNsb2FraW5nLXRvcC1uby1jbmFtZS1zdWItMXAtY25hbWUu
aHRtbAorICAgICAgICAgICAgICAgaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL2Nu
YW1lLWNsb2FraW5nLXRvcC1uby1jbmFtZS1zdWItM3AtY25hbWUuaHRtbAorICAgICAgICAgICAg
ICAgaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL2NuYW1lLWNsb2FraW5nLXRvcC1u
by1jbmFtZS1zdWItbm8tY25hbWUuaHRtbAorCisgICAgICAgICogcGFnZS9TZXR0aW5ncy55YW1s
OgorICAgICAgICAgICAgQWRkZWQgdGhlIG9mZi1ieS1kZWZhdWx0IGZsYWcgaXNDTkFNRUNsb2Fr
aW5nTWl0aWdhdGlvbkVuYWJsZWQuCisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9OZXR3b3Jr
U3RvcmFnZVNlc3Npb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNz
aW9uOjpyZXNvdXJjZUxvYWRTdGF0aXN0aWNzRW5hYmxlZCBjb25zdCk6CisgICAgICAgICAgICBO
ZXcgZ2V0dGVyIGZvciB0aGUgSVRQIHNldHRpbmcuCisgICAgICAgICogcGxhdGZvcm0vbmV0d29y
ay9OZXR3b3JrU3RvcmFnZVNlc3Npb24uaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2Nv
Y29hL05ldHdvcmtTdG9yYWdlU2Vzc2lvbkNvY29hLm1tOgorICAgICAgICAoV2ViQ29yZTo6TmV0
d29ya1N0b3JhZ2VTZXNzaW9uOjpjYXBFeHBpcnlPZlBlcnNpc3RlbnRDb29raWUpOgorICAgICAg
ICAgICAgQnJva2UgdGhpcyBmdW5jdGlvbiBvdXQgc28gdGhhdCBpdCBjYW4gYmUgcmV1c2VkLgor
ICAgICAgICAoV2ViQ29yZTo6cGFyc2VET01Db29raWUpOgorICAgICAgICAgICAgSGVyZSdzIGZy
b20gd2hlcmUgdGhlIGZ1bmN0aW9uIGFib3ZlIHdhcyBicm9rZW4gb3V0LgorICAgICAgICAgICAg
VGhlIGV4aXN0aW5nIGZ1bmN0aW9uYWxpdHkgaGFzIGEgdGVzdCBjYXNlLgorCiAyMDIwLTA4LTA3
ICBBbnR0aSBLb2l2aXN0byAgPGFudHRpQGFwcGxlLmNvbT4KIAogICAgICAgICBSRUdSRVNTSU9O
IChyMjYwMjc2KTogaW5zdHJ1Y3R1cmUuY29tIGN1c3RvbSBQREYgdmlld2VyIHN0b3BzIHNjcm9s
bGluZyAvIGxvYWRpbmcgYWZ0ZXIgc3dpdGNoaW5nIHRvIGFub3RoZXIgdGFiIHRoZW4gc3dpdGNo
aW5nIGJhY2sKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BBTC9DaGFuZ2VMb2cgYi9Tb3Vy
Y2UvV2ViQ29yZS9QQUwvQ2hhbmdlTG9nCmluZGV4IDY2MGI5MjA3YjA5MWZjODZlNzdkZTI3MDE5
ZDAyNjE3MWZhMGFkMGMuLjM4YzY3YjVlZDAyYzc0MWMzZTM1OGQ3YmVjM2IzYWI4ZTIzZmY4Yzgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BBTC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dl
YkNvcmUvUEFML0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2IEBACisyMDIwLTA4LTA3ICBKb2huIFdp
bGFuZGVyICA8d2lsYW5kZXJAYXBwbGUuY29tPgorCisgICAgICAgIEV4cGVyaW1lbnRhbDogQ2Fw
IHRoZSBleHBpcnkgb2YgcGVyc2lzdGVudCBjb29raWVzIHNldCBpbiAzcmQtcGFydHkgQ05BTUUg
Y2xvYWtlZCBIVFRQIHJlc3BvbnNlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjE1MjAxCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS81NzQ1NDYzMz4K
KworICAgICAgICBSZXZpZXdlZCBieSBCcmVudCBGdWxnaGFtLiBBbHNvIHJldmlld2VkIGFuZCBj
b21tZW50ZWQgb24gYnkgQ2hyaXMgRHVtZXosIEppdGVuIE1laHRhLCBTYW0gV2VpbmlnLCBhbmQg
QWxleCBDaHJpc3RlbnNlbi4KKworICAgICAgICAqIHBhbC9zcGkvY2YvQ0ZOZXR3b3JrU1BJLmg6
CisgICAgICAgICAgICBUaGlzIGNoYW5nZSBkZWNsYXJlcyB0d28gbmV3IHByb3BlcnRpZXMgb24g
TlNVUkxTZXNzaW9uVGFzazoKKyAgICAgICAgICAgIC0gX2Nvb2tpZVRyYW5zZm9ybUNhbGxiYWNr
CisgICAgICAgICAgICAtIF9yZXNvbHZlZENOQU1FQ2hhaW4KKwogMjAyMC0wOC0wNSAgVGltIEhv
cnRvbiAgPHRpbW90aHlfaG9ydG9uQGFwcGxlLmNvbT4KIAogICAgICAgICBSZW1vdmUgYWxsIHJl
ZmVyZW5jZXMgdG8gbm9uLWV4aXN0ZW50IDEwLjE2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGI0MDA2Nzk2YWYxZWFk
MjRkMDg5NDA1OTJiMDVlYmMzMTY4ZWQ4ZTIuLjYyNTFiZjQ0NTEwNjA4ZGQ0MmFkM2NhYTM1YzFk
ODgwMmJiNGM4MjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIwIEBACisyMDIwLTA4LTA3ICBKb2hu
IFdpbGFuZGVyICA8d2lsYW5kZXJAYXBwbGUuY29tPgorCisgICAgICAgIEV4cGVyaW1lbnRhbDog
Q2FwIHRoZSBleHBpcnkgb2YgcGVyc2lzdGVudCBjb29raWVzIHNldCBpbiAzcmQtcGFydHkgQ05B
TUUgY2xvYWtlZCBIVFRQIHJlc3BvbnNlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MjE1MjAxCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS81NzQ1NDYz
Mz4KKworICAgICAgICBSZXZpZXdlZCBieSBCcmVudCBGdWxnaGFtLiBBbHNvIHJldmlld2VkIGFu
ZCBjb21tZW50ZWQgb24gYnkgQ2hyaXMgRHVtZXosIEppdGVuIE1laHRhLCBTYW0gV2VpbmlnLCBh
bmQgQWxleCBDaHJpc3RlbnNlbi4KKworICAgICAgICBUaGlzIGV4cGVyaW1lbnRhbCBmZWF0dXJl
IGlzIG9mZiBieSBkZWZhdWx0LgorCisgICAgICAgIENOQU1FIGNsb2FraW5nIG1lYW5zIGEgaG9z
dCByZXNvbHZlcyB0byBhIGEgZGlmZmVyZW50IGRvbWFpbiwgcG90ZW50aWFsbHkgYQorICAgICAg
ICB0aGlyZC1wYXJ0eSBkb21haW4sIGFzIHBhcnQgb2YgRE5TIHJlc29sdXRpb24uCisKKyAgICAg
ICAgVGhpcyBwYXRjaCBtYWtlcyBXZWJLaXQ6Ok5ldHdvcmtEYXRhVGFza0NvY29hIGNhcHR1cmUg
YW55IENOQU1FIGNsb2FraW5nIGZvcgorICAgICAgICB0aGUgZmlyc3QgcGFydHkgaG9zdCBhbmQg
c3RvcmVzIGl0IGluIGEgdGFibGUgaW4gdGhlIFdlYktpdDo6TmV0d29ya1Nlc3Npb24uCisgICAg
ICAgIEl0IHRoZW4gY2hlY2tzIGZpcnN0IHBhcnR5IHN1YnJlc291cmNlIGxvYWRzIHRvIHNlZSBp
ZiB0aGV5IHJlc29sdmUgdG8gYQorICAgICAgICBkaWZmZXJlbnQgZG9tYWluIGFuZCBpZiBzbywg
Y29tcGFyZSB0aGF0IGRvbWFpbiB0byBib3RoIHRoZSBmaXJzdCBwYXJ0eQorICAgICAgICBkb21h
aW4gYW5kIGl0cyBDTkFNRSBjbG9ha2luZyBkb21haW4sIGlmIHRoZXJlIGlzIG9uZS4gSWYgdGhl
cmUncyBhCisgICAgICAgIG1pc21hdGNoLCBpdCdzIGRlZW1lZCBhIGNhc2Ugb2YgdGhpcmQtcGFy
dHkgQ05BTUUgY2xvYWtpbmcgYW5kIGFueSBjb29raWVzCisgICAgICAgIHNldCBpbiB0aGUgcmVz
cG9uc2Ugb2YgdGhlIGNsb2FrZWQgc3VicmVzb3VyY2UgbG9hZCB3aWxsIGhhdmUgdGhlaXIgZXhw
aXJ5CisgICAgICAgIGNhcHBlZCB0byA3IGRheXMuCisKKyAgICAgICAgVGhlIGNhc2VzIGZvciBj
YXBwaW5nIGV4cGlyeSBsb29rIGxpa2UgdGhpcyAoYW5kIGFyZSBiYWNrZWQgYnkgdGVzdCBjYXNl
cyk6CisKKyAgICAgICAgRmlyc3QtcGFydHkgaG9zdCAgfCBGaXJzdC1wYXJ0eSBzdWJkb21haW4g
ICAgICB8IENhcHBlZCBleHBpcnkKKyAgICAgICAgLS0tLS0tLS0tLS0tLS0tLS0tfC0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS18LS0tLS0tLS0tLS0tLS0KKyAgICAgICAgTm8gQ05BTUUgY2xv
YWtpbmcgfCBObyBDTkFNRSBjbG9ha2luZyAgICAgICAgICB8IE5vCisgICAgICAgIE5vIENOQU1F
IGNsb2FraW5nIHwgRmlyc3QtcGFydHkgQ05BTUUgY2xvYWtpbmcgfCBObworICAgICAgICBObyBD
TkFNRSBjbG9ha2luZyB8IFRoaXJkLXBhcnR5IENOQU1FIGNsb2FraW5nIHwgWWVzCisgICAgICAg
IENOQU1FIGNsb2FraW5nICAgIHwgTm8gQ05BTUUgY2xvYWtpbmcgICAgICAgICAgfCBObworICAg
ICAgICBDTkFNRSBjbG9ha2luZyAgICB8IE1hdGNoaW5nIENOQU1FIGNsb2FraW5nICAgIHwgTm8K
KyAgICAgICAgQ05BTUUgY2xvYWtpbmcgICAgfCBGaXJzdC1wYXJ0eSBDTkFNRSBjbG9ha2luZyB8
IE5vCisgICAgICAgIENOQU1FIGNsb2FraW5nICAgIHwgVGhpcmQtcGFydHkgQ05BTUUgY2xvYWtp
bmcgfCBZZXMKKworICAgICAgICBUaGlzIHBhdGNoIG1ha2VzIHVzZSBvZiB0d28gbmV3IENGTmV0
d29yayBTUElzIG9uIE5TVVJMU2Vzc2lvblRhc2s6CisgICAgICAgIC0gX2Nvb2tpZVRyYW5zZm9y
bUNhbGxiYWNrCisgICAgICAgIC0gX3Jlc29sdmVkQ05BTUVDaGFpbgorCisgICAgICAgICogTmV0
d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3Jr
UHJvY2Vzczo6cmVzZXRQYXJhbWV0ZXJzVG9EZWZhdWx0VmFsdWVzKToKKyAgICAgICAgICAgIFRo
aXMgcmVzZXQgbm93IGNvdmVycyB0aGUgbmV3IENOQU1FIGNsb2FraW5nIG1lbWJlciB2YXJpYWJs
ZXMuCisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpzZXRJc1J1bm5pbmdSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzVGVzdCk6CisgICAgICAgICAgICBUaGlzIGZ1bmN0aW9uIG5vdyBhbHNv
IGVuYWJsZXMgdGhlIENOQU1FIGNsb2FraW5nIGNvZGUuCisgICAgICAgIChXZWJLaXQ6Ok5ldHdv
cmtQcm9jZXNzOjpzZXRGaXJzdFBhcnR5SG9zdENOQU1FRG9tYWluRm9yVGVzdGluZyk6CisgICAg
ICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpzZXRUaGlyZFBhcnR5Q05BTUVEb21haW5Gb3JU
ZXN0aW5nKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oOgorICAg
ICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLm1lc3NhZ2VzLmluOgorICAgICAg
ICAgICAgTmV3IElQQyB0byBmb3J3YXJkIHRlc3QgY29uZmlndXJhdGlvbi4KKyAgICAgICAgKiBO
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdv
cmtTZXNzaW9uOjpOZXR3b3JrU2Vzc2lvbik6CisgICAgICAgICAgICBOb3cgcGlja3MgdXAgdGhl
IGZsYWcgZm9yIHRoaXMgZmVhdHVyZS4KKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Nlc3Npb246
OnNldEZpcnN0UGFydHlIb3N0Q05BTUVEb21haW4pOgorICAgICAgICAgICAgVGhpcyBpcyBjYWxs
ZWQgZnJvbSBOZXR3b3JrRGF0YVRhc2tDb2NvYTo6dXBkYXRlRmlyc3RQYXJ0eUluZm9Gb3JUYXNr
QW5kU2Vzc2lvbigpCisgICAgICAgICAgICB3aGVuIHRoZXJlIGlzIENOQU1FIGNsb2FraW5nIGZv
ciB0aGUgZmlyc3QgcGFydHkgaG9zdC4gVGhpcyBpcyBkb25lIHRvIG1ha2UgaXQKKyAgICAgICAg
ICAgIHBvc3NpYmxlIHRvIG5vdCBjYXAgdGhlIGV4cGlyeSBvZiBjb29raWVzIGlmIHN1YnNlcXVl
bnQgc3VicmVzb3VyY2UgbG9hZHMgaGF2ZQorICAgICAgICAgICAgQ05BTUUgY2xvYWtpbmcgdGhh
dCBtYXRjaGVzIHRoZSBmaXJzdC1wYXJ0eSBob3N0J3MgQ05BTUUgY2xvYWtpbmcuIFRoaXMgaGFw
cGVucworICAgICAgICAgICAgd2hlbiB3aG9sZSB3ZWJzaXRlcyBhcmUgaG9zdGVkIG9uIGVkZ2Ug
bmV0d29ya3MuCisgICAgICAgICAgICBUaGlzIGZ1bmN0aW9uIGlzIGFsc28gdXNlZCBieSB0aGUg
dGVzdCBpbmZyYXN0cnVjdHVyZSB0byBtb2NrIHRoZSBETlMgcmVzb2x1dGlvbgorICAgICAgICAg
ICAgZm9yIGEgZmlyc3QtcGFydHkgaG9zdC4KKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Nlc3Np
b246OmZpcnN0UGFydHlIb3N0Q05BTUVEb21haW4pOgorICAgICAgICAgICAgVGhpcyByZXR1cm5z
IGFueSBjYXB0dXJlZCBDTkFNRSBjbG9ha2luZyBmb3IgYSBob3N0LCBpZiB0aGVyZSBpcyBvbmUu
CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtTZXNzaW9uOjpyZXNldENOQU1FRG9tYWluRGF0YSk6
CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24uaDoKKyAgICAgICAgKFdl
YktpdDo6TmV0d29ya1Nlc3Npb246OnNldENOQU1FQ2xvYWtpbmdNaXRpZ2F0aW9uRW5hYmxlZCk6
CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtTZXNzaW9uOjpjbmFtZUNsb2FraW5nTWl0aWdhdGlv
bkVuYWJsZWQgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrU2Vzc2lvbjo6c2V0VGhp
cmRQYXJ0eUNOQU1FRG9tYWluRm9yVGVzdGluZyk6CisgICAgICAgICAgICBUaGlzIHRlc3QgZnVu
Y3Rpb25zIGFsbG93cyB1cyB0byBtb2NrIHRoZSBETlMgcmVzb2x1dGlvbiBmb3IgYSBzdWJyZXNv
dXJjZS4KKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Nlc3Npb246OnRoaXJkUGFydHlDTkFNRURv
bWFpbkZvclRlc3RpbmcgY29uc3QpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NvY29hL05l
dHdvcmtEYXRhVGFza0NvY29hLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0
d29ya0RhdGFUYXNrQ29jb2EubW06CisgICAgICAgIChXZWJLaXQ6Omhhc0NOQU1FQW5kQ29va2ll
VHJhbnNmb3JtU1BJKToKKyAgICAgICAgKFdlYktpdDo6bGFzdENOQU1FRG9tYWluKToKKyAgICAg
ICAgKFdlYktpdDo6TmV0d29ya0RhdGFUYXNrQ29jb2E6OnVwZGF0ZUZpcnN0UGFydHlJbmZvRm9y
U2Vzc2lvbik6CisgICAgICAgICAgICBUaGlzIGlzIGNhbGxlZCBieSBOZXR3b3JrRGF0YVRhc2tD
b2NvYTo6ZGlkUmVjZWl2ZVJlc3BvbnNlKCkgdG8gY2FwdHVyZSBhbnkKKyAgICAgICAgICAgIENO
QU1FIGNsb2FraW5nIGZvciB0aGUgZmlyc3QtcGFydHkgaG9zdC4KKyAgICAgICAgKFdlYktpdDo6
TmV0d29ya0RhdGFUYXNrQ29jb2E6OmFwcGx5Q29va2llUG9saWN5Rm9yVGhpcmRQYXJ0eUNOQU1F
Q2xvYWtpbmcpOgorICAgICAgICAgICAgVGhpcyBpcyBjYWxsZWQgaW4gdGhlIE5ldHdvcmtEYXRh
VGFza0NvY29hIGNvbnN0cnVjdG9yIGFuZCBpbgorICAgICAgICAgICAgTmV0d29ya0RhdGFUYXNr
Q29jb2E6OndpbGxQZXJmb3JtSFRUUFJlZGlyZWN0aW9uKCkgYW5kIHNldHMgdGhlIG5ldworICAg
ICAgICAgICAgX2Nvb2tpZVRyYW5zZm9ybUNhbGxiYWNrIFNQSSBwcm9wZXJ0eSBvbiB0aGUgdGFz
ayB3aGljaCB3aWxsIGNoZWNrIHRoZQorICAgICAgICAgICAgcmVzcG9uc2UgZm9yIGFueSB0aGly
ZC1wYXJ0eSBDTkFNRSBjbG9ha2luZyBhbmQgY2FwIHRoZSBleHBpcnkgb2YgaW5jb21pbmcKKyAg
ICAgICAgICAgIGNvb2tpZXMgYWNjb3JkaW5nbHkuCisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtE
YXRhVGFza0NvY29hOjpOZXR3b3JrRGF0YVRhc2tDb2NvYSk6CisgICAgICAgICAgICBUaGlzIG5v
dyBjYWxscworICAgICAgICAgICAgTmV0d29ya0RhdGFUYXNrQ29jb2E6OmFwcGx5Q29va2llUG9s
aWN5Rm9yVGhpcmRQYXJ0eUNOQU1FQ2xvYWtpbmcoKS4KKyAgICAgICAgKFdlYktpdDo6TmV0d29y
a0RhdGFUYXNrQ29jb2E6OmRpZFJlY2VpdmVSZXNwb25zZSk6CisgICAgICAgICAgICBUaGlzIG5v
dyBjYWxscworICAgICAgICAgICAgTmV0d29ya0RhdGFUYXNrQ29jb2E6OnVwZGF0ZUZpcnN0UGFy
dHlJbmZvRm9yVGFza0FuZFNlc3Npb24oKS4KKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0RhdGFU
YXNrQ29jb2E6OndpbGxQZXJmb3JtSFRUUFJlZGlyZWN0aW9uKToKKyAgICAgICAgICAgIFRoaXMg
bm93IGNhbGxzCisgICAgICAgICAgICBOZXR3b3JrRGF0YVRhc2tDb2NvYTo6YXBwbHlDb29raWVQ
b2xpY3lGb3JUaGlyZFBhcnR5Q05BTUVDbG9ha2luZygpLgorICAgICAgICAqIFNoYXJlZC9SZXNv
dXJjZUxvYWRTdGF0aXN0aWNzUGFyYW1ldGVycy5oOgorICAgICAgICAgICAgTm93IGhvbGRzIGEg
V2ViQ29yZTo6Q05BTUVDbG9ha2luZ01pdGlnYXRpb25FbmFibGVkIGZsYWcuCisgICAgICAgIChX
ZWJLaXQ6OlJlc291cmNlTG9hZFN0YXRpc3RpY3NQYXJhbWV0ZXJzOjplbmNvZGUgY29uc3QpOgor
ICAgICAgICAoV2ViS2l0OjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGFyYW1ldGVyczo6ZGVjb2Rl
KToKKyAgICAgICAgKiBTaGFyZWQvV2ViUHJlZmVyZW5jZXMueWFtbDoKKyAgICAgICAgKiBVSVBy
b2Nlc3MvQVBJL0MvV0tXZWJzaXRlRGF0YVN0b3JlUmVmLmNwcDoKKyAgICAgICAgKFdLV2Vic2l0
ZURhdGFTdG9yZVNldFJlc291cmNlTG9hZFN0YXRpc3RpY3NGaXJzdFBhcnR5SG9zdENOQU1FRG9t
YWluRm9yVGVzdGluZyk6CisgICAgICAgICAgICBVc2VkIHRvIG1vY2sgQ05BTUUgcmVzb2x1dGlv
biBkYXRhLgorICAgICAgICAoV0tXZWJzaXRlRGF0YVN0b3JlU2V0UmVzb3VyY2VMb2FkU3RhdGlz
dGljc1RoaXJkUGFydHlDTkFNRURvbWFpbkZvclRlc3RpbmcpOgorICAgICAgICAgICAgVXNlZCB0
byBtb2NrIENOQU1FIHJlc29sdXRpb24gZGF0YS4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0Mv
V0tXZWJzaXRlRGF0YVN0b3JlUmVmLmg6CisgICAgICAgICogVUlQcm9jZXNzL05ldHdvcmsvTmV0
d29ya1Byb2Nlc3NQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzUHJv
eHk6OnNldEZpcnN0UGFydHlIb3N0Q05BTUVEb21haW5Gb3JUZXN0aW5nKToKKyAgICAgICAgKFdl
YktpdDo6TmV0d29ya1Byb2Nlc3NQcm94eTo6c2V0VGhpcmRQYXJ0eUNOQU1FRG9tYWluRm9yVGVz
dGluZyk6CisgICAgICAgICogVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5o
OgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHA6CisgICAgICAgIChXZWJL
aXQ6OldlYlByb2Nlc3NQb29sOjplbnN1cmVOZXR3b3JrUHJvY2Vzcyk6CisgICAgICAgICAgICBO
b3cgaGFuZGxlcyB0aGUgV2ViQ29yZTo6Q05BTUVDbG9ha2luZ01pdGlnYXRpb25FbmFibGVkIGZs
YWcuCisgICAgICAgICogVUlQcm9jZXNzL1dlYnNpdGVEYXRhL0NvY29hL1dlYnNpdGVEYXRhU3Rv
cmVDb2NvYS5tbToKKyAgICAgICAgKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6cGxhdGZvcm1T
ZXROZXR3b3JrUGFyYW1ldGVycyk6CisgICAgICAgICAgICBOb3cgaGFuZGxlcyB0aGUgV2ViQ29y
ZTo6Q05BTUVDbG9ha2luZ01pdGlnYXRpb25FbmFibGVkIGZsYWcuCisgICAgICAgICogVUlQcm9j
ZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuY3BwOgorICAgICAgICAoV2ViS2l0OjpX
ZWJzaXRlRGF0YVN0b3JlOjpzZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRmlyc3RQYXJ0eUhvc3RD
TkFNRURvbWFpbkZvclRlc3RpbmcpOgorICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3Jl
OjpzZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzVGhpcmRQYXJ0eUNOQU1FRG9tYWluRm9yVGVzdGlu
Zyk6CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6OnBhcmFtZXRlcnMpOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmg6CisKIDIwMjAt
MDgtMDcgIFdlbnNvbiBIc2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CiAKICAgICAgICAg
UmVtb3ZlIFVJU2NyaXB0Q29udHJvbGxlci5yZW1vdmVBbGxEeW5hbWljRGljdGlvbmFyaWVzKCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtSGF2ZS5oIGIvU291cmNlL1dURi93
dGYvUGxhdGZvcm1IYXZlLmgKaW5kZXggZTQ0ODM4M2I2MWQxZmNmMTA4NmQyYzhhODhhNjI3NmVi
ZTQ4MzU4Yy4uNGVjNzdlNzYxNDYxMDhkMjU2MzkzNDJkMWEwZmYzYWFhYTJjNjFlYyAxMDA2NDQK
LS0tIGEvU291cmNlL1dURi93dGYvUGxhdGZvcm1IYXZlLmgKKysrIGIvU291cmNlL1dURi93dGYv
UGxhdGZvcm1IYXZlLmgKQEAgLTcwNywzICs3MDcsMTAgQEAKICNpZiAoUExBVEZPUk0oTUFDKSAm
JiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDExMDAwMCkKICNkZWZpbmUgSEFW
RV9OU1RBQkxFVklFV1NUWUxFIDEKICNlbmRpZgorCisjaWYgKFBMQVRGT1JNKE1BQykgJiYgX19N
QUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMTAwMDApIFwKKyAgICB8fCAoKFBMQVRG
T1JNKElPUykgfHwgUExBVEZPUk0oTUFDQ0FUQUxZU1QpKSAmJiBfX0lQSE9ORV9PU19WRVJTSU9O
X01JTl9SRVFVSVJFRCA+PSAxNDAwMDApIFwKKyAgICB8fCAoUExBVEZPUk0oV0FUQ0hPUykgJiYg
X19XQVRDSF9PU19WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSA3MDAwMCkgXAorICAgIHx8IChQTEFU
Rk9STShBUFBMRVRWKSAmJiBfX1RWX09TX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDE0MDAwMCkK
KyNkZWZpbmUgSEFWRV9DRk5FVFdPUktfQ05BTUVfQU5EX0NPT0tJRV9UUkFOU0ZPUk1fU1BJIDEK
KyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUEFML3BhbC9zcGkvY2YvQ0ZOZXR3
b3JrU1BJLmggYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL3NwaS9jZi9DRk5ldHdvcmtTUEkuaApp
bmRleCAzZTJhN2EzNDFlZTZhYmE3MWVmYjNiZGIwZGRiMTZhMDAzNWM5OGJmLi4xOWI0ZTA1YzMx
Y2IyMThjZGQ5YmM4OGQwZjk0NWMzYTczNjcyMzA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9QQUwvcGFsL3NwaS9jZi9DRk5ldHdvcmtTUEkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9QQUwv
cGFsL3NwaS9jZi9DRk5ldHdvcmtTUEkuaApAQCAtMjk2LDYgKzI5NiwxMyBAQCBlbnVtIDogTlNV
SW50ZWdlciB7CiAgICAgTlNIVFRQQ29va2llQWNjZXB0UG9saWN5RXhjbHVzaXZlbHlGcm9tTWFp
bkRvY3VtZW50RG9tYWluID0gMywKIH07CiAKKyNpZiBIQVZFKENGTkVUV09SS19DTkFNRV9BTkRf
Q09PS0lFX1RSQU5TRk9STV9TUEkpCitAaW50ZXJmYWNlIE5TVVJMU2Vzc2lvblRhc2sgKCkKK0Bw
cm9wZXJ0eSAobm9uYXRvbWljLCBjb3B5LCBudWxsYWJsZSkgTlNBcnJheTxOU0hUVFBDb29raWUq
PiogKF5fY29va2llVHJhbnNmb3JtQ2FsbGJhY2spKE5TQXJyYXk8TlNIVFRQQ29va2llKj4qIGNv
b2tpZXMpOworQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5LCBudWxsYWJsZSkgTlNBcnJh
eTxOU1N0cmluZyo+KiBfcmVzb2x2ZWRDTkFNRUNoYWluOworQGVuZAorI2VuZGlmCisKICNlbmRp
ZiAvLyBkZWZpbmVkKF9fT0JKQ19fKQogCiAjZW5kaWYgLy8gVVNFKEFQUExFX0lOVEVSTkFMX1NE
SykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3MueWFtbCBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3MueWFtbAppbmRleCAyMmM5ZjZhYjIzMDAxYTI5MWM1ZDM0
NTdjMjE0YjNlMjA1NTlmYzg4Li5kNGNmYmNlZDgzNzYzMjk4MTU0NjNiYzY2ZmY1ZjIyYTEyMWYw
MDZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdzLnlhbWwKKysrIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5ncy55YW1sCkBAIC05MjgsNiArOTI4LDkgQEAgaXNG
aXJzdFBhcnR5V2Vic2l0ZURhdGFSZW1vdmFsUmVwcm9UZXN0aW5nRW5hYmxlZDoKIGlzU2FtZVNp
dGVTdHJpY3RFbmZvcmNlbWVudEVuYWJsZWQ6CiAgIGluaXRpYWw6IGZhbHNlCiAKK2lzQ05BTUVD
bG9ha2luZ01pdGlnYXRpb25FbmFibGVkOgorICBpbml0aWFsOiBmYWxzZQorCiBpc0xvZ2dlZElu
QVBJRW5hYmxlZDoKICAgaW5pdGlhbDogZmFsc2UKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9OZXR3b3JrU3RvcmFnZVNlc3Npb24uY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9OZXR3b3JrU3RvcmFnZVNlc3Npb24uY3BwCmluZGV4IDY4
NDdjNGY1ZTk0OWJmMDdhOWNiZWZkY2RhMzBiNDI1YWNiOWZmYjYuLmM1MzMyMWUxY2JhM2RkOTc0
Zjk3MGM3NTkxMDZhN2Y4MTdlMjBiNzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvTmV0d29ya1N0b3JhZ2VTZXNzaW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtTdG9yYWdlU2Vzc2lvbi5jcHAKQEAgLTcyLDYgKzcy
LDExIEBAIHZvaWQgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpzZXRSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzRW5hYmxlZChib29sIGVuYWJsZWQpCiB7CiAgICAgbV9pc1Jlc291cmNlTG9hZFN0YXRpc3Rp
Y3NFbmFibGVkID0gZW5hYmxlZDsKIH0KKworYm9vbCBOZXR3b3JrU3RvcmFnZVNlc3Npb246OnJl
c291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9pc1Jl
c291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkOworfQogI2VuZGlmCiAKIGJvb2wgTmV0d29ya1N0
b3JhZ2VTZXNzaW9uOjpzaG91bGRCbG9ja1RoaXJkUGFydHlDb29raWVzKGNvbnN0IFJlZ2lzdHJh
YmxlRG9tYWluJiByZWdpc3RyYWJsZURvbWFpbikgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvTmV0d29ya1N0b3JhZ2VTZXNzaW9uLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtTdG9yYWdlU2Vzc2lvbi5oCmluZGV4IDJj
NjE1ZjRjMmM3NjI3NzMyYjBhMTEyYzVmMWNjN2YxMTBlNDc0NTEuLjljMjZhZTJlYWViZmM5ZmNm
NmJiNGFjOGQzODNjZWRmYzQxMGQ1OTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvTmV0d29ya1N0b3JhZ2VTZXNzaW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9OZXR3b3JrU3RvcmFnZVNlc3Npb24uaApAQCAtODUsNiArODUsNyBA
QCBlbnVtIGNsYXNzIEluY2x1ZGVTZWN1cmVDb29raWVzIDogYm9vbDsKIGVudW0gY2xhc3MgSW5j
bHVkZUh0dHBPbmx5Q29va2llcyA6IGJvb2w7CiBlbnVtIGNsYXNzIFRoaXJkUGFydHlDb29raWVC
bG9ja2luZ01vZGUgOiB1aW50OF90IHsgQWxsLCBBbGxFeGNlcHRCZXR3ZWVuQXBwQm91bmREb21h
aW5zLCBBbGxPblNpdGVzV2l0aG91dFVzZXJJbnRlcmFjdGlvbiwgT25seUFjY29yZGluZ1RvUGVy
RG9tYWluUG9saWN5IH07CiBlbnVtIGNsYXNzIFNhbWVTaXRlU3RyaWN0RW5mb3JjZW1lbnRFbmFi
bGVkIDogYm9vbCB7IFllcywgTm8gfTsKK2VudW0gY2xhc3MgQ05BTUVDbG9ha2luZ01pdGlnYXRp
b25FbmFibGVkIDogYm9vbCB7IFllcywgTm8gfTsKIGVudW0gY2xhc3MgRmlyc3RQYXJ0eVdlYnNp
dGVEYXRhUmVtb3ZhbE1vZGUgOiB1aW50OF90IHsgQWxsQnV0Q29va2llcywgTm9uZSwgQWxsQnV0
Q29va2llc0xpdmVPblRlc3RpbmdUaW1lb3V0LCBBbGxCdXRDb29raWVzUmVwcm9UZXN0aW5nVGlt
ZW91dCB9OwogZW51bSBjbGFzcyBTaG91bGRBc2tJVFAgOiBib29sIHsgTm8sIFllcyB9OwogCkBA
IC0xODQsMTEgKzE4NSwxNSBAQCBwdWJsaWM6CiAKICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9T
VEFUSVNUSUNTKQogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0UmVzb3VyY2VMb2FkU3RhdGlz
dGljc0VuYWJsZWQoYm9vbCk7CisgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCByZXNvdXJjZUxvYWRT
dGF0aXN0aWNzRW5hYmxlZCgpIGNvbnN0OwogICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgc2hvdWxk
QmxvY2tDb29raWVzKGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIE9wdGlvbmFsPEZyYW1lSWRlbnRp
Zmllcj4sIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiwgU2hvdWxkUmVsYXhUaGlyZFBhcnR5Q29v
a2llQmxvY2tpbmcpIGNvbnN0OwogICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgc2hvdWxkQmxvY2tD
b29raWVzKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eUZvckNvb2tpZXMsIGNvbnN0IFVSTCYgcmVzb3Vy
Y2UsIE9wdGlvbmFsPEZyYW1lSWRlbnRpZmllcj4sIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiwg
U2hvdWxkUmVsYXhUaGlyZFBhcnR5Q29va2llQmxvY2tpbmcpIGNvbnN0OwogICAgIFdFQkNPUkVf
RVhQT1JUIGJvb2wgc2hvdWxkQmxvY2tUaGlyZFBhcnR5Q29va2llcyhjb25zdCBSZWdpc3RyYWJs
ZURvbWFpbiYpIGNvbnN0OwogICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgc2hvdWxkQmxvY2tUaGly
ZFBhcnR5Q29va2llc0J1dEtlZXBGaXJzdFBhcnR5Q29va2llc0Zvcihjb25zdCBSZWdpc3RyYWJs
ZURvbWFpbiYpIGNvbnN0OwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0QWxsQ29va2llc1Rv
U2FtZVNpdGVTdHJpY3QoY29uc3QgUmVnaXN0cmFibGVEb21haW4mLCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKCk+JiYpOworI2lmIFBMQVRGT1JNKENPQ09BKQorICAgIFdFQkNPUkVfRVhQT1JUIHN0
YXRpYyBOU0hUVFBDb29raWUgKmNhcEV4cGlyeU9mUGVyc2lzdGVudENvb2tpZShOU0hUVFBDb29r
aWUgKiwgU2Vjb25kcyBjYXApOworI2VuZGlmCiAgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBoYXNI
YWRVc2VySW50ZXJhY3Rpb25Bc0ZpcnN0UGFydHkoY29uc3QgUmVnaXN0cmFibGVEb21haW4mKSBj
b25zdDsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldFByZXZhbGVudERvbWFpbnNUb0Jsb2Nr
QW5kRGVsZXRlQ29va2llc0Zvcihjb25zdCBWZWN0b3I8UmVnaXN0cmFibGVEb21haW4+Jik7CiAg
ICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRQcmV2YWxlbnREb21haW5zVG9CbG9ja0J1dEtlZXBD
b29raWVzRm9yKGNvbnN0IFZlY3RvcjxSZWdpc3RyYWJsZURvbWFpbj4mKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvTmV0d29ya1N0b3JhZ2VTZXNz
aW9uQ29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL05ldHdv
cmtTdG9yYWdlU2Vzc2lvbkNvY29hLm1tCmluZGV4IGNiOTZkNGFhZmQ1YTRmYTA2ZDZhNzIyMTAz
MjAyNzk4ZDlhM2E2NTcuLjU5MDliYTlmNDJkM2NkMzI2Yjk3Zjk4MDdkZGE0Njc5MzEwMTkyODgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvTmV0d29y
a1N0b3JhZ2VTZXNzaW9uQ29jb2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9jb2NvYS9OZXR3b3JrU3RvcmFnZVNlc3Npb25Db2NvYS5tbQpAQCAtMzA4LDYgKzMwOCwy
MCBAQCBOU0FycmF5ICpOZXR3b3JrU3RvcmFnZVNlc3Npb246Omh0dHBDb29raWVzRm9yVVJMKENG
SFRUUENvb2tpZVN0b3JhZ2VSZWYgY29va2llUwogICAgIHJldHVybiBXZWJDb3JlOjpjb29raWVz
Rm9yVVJMKG5zQ29va2llU3RvcmFnZS5nZXQoKSwgdXJsLCBmaXJzdFBhcnR5LCBzYW1lU2l0ZUlu
Zm8pOwogfQogCitOU0hUVFBDb29raWUgKk5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6Y2FwRXhwaXJ5
T2ZQZXJzaXN0ZW50Q29va2llKE5TSFRUUENvb2tpZSAqY29va2llLCBTZWNvbmRzIGNhcCkKK3sK
KyAgICBpZiAoW2Nvb2tpZSBpc1Nlc3Npb25Pbmx5XSkKKyAgICAgICAgcmV0dXJuIGNvb2tpZTsK
KworICAgIGlmICghY29va2llLmV4cGlyZXNEYXRlIHx8IGNvb2tpZS5leHBpcmVzRGF0ZS50aW1l
SW50ZXJ2YWxTaW5jZU5vdyA+IGNhcC5zZWNvbmRzKCkpIHsKKyAgICAgICAgYXV0byBwcm9wZXJ0
aWVzID0gYWRvcHROUyhbW2Nvb2tpZSBwcm9wZXJ0aWVzXSBtdXRhYmxlQ29weV0pOworICAgICAg
ICBhdXRvIGRhdGUgPSBhZG9wdE5TKFtbTlNEYXRlIGFsbG9jXSBpbml0V2l0aFRpbWVJbnRlcnZh
bFNpbmNlTm93OmNhcC5zZWNvbmRzKCldKTsKKyAgICAgICAgW3Byb3BlcnRpZXMgc2V0T2JqZWN0
OmRhdGUuZ2V0KCkgZm9yS2V5Ok5TSFRUUENvb2tpZUV4cGlyZXNdOworICAgICAgICBjb29raWUg
PSBbTlNIVFRQQ29va2llIGNvb2tpZVdpdGhQcm9wZXJ0aWVzOnByb3BlcnRpZXMuZ2V0KCldOwor
ICAgIH0KKyAgICByZXR1cm4gY29va2llOworfQorCiBOU0FycmF5ICpOZXR3b3JrU3RvcmFnZVNl
c3Npb246OmNvb2tpZXNGb3JVUkwoY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0
ZUluZm8mIHNhbWVTaXRlSW5mbywgY29uc3QgVVJMJiB1cmwsIE9wdGlvbmFsPEZyYW1lSWRlbnRp
Zmllcj4gZnJhbWVJRCwgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCwgU2hvdWxkQXNr
SVRQIHNob3VsZEFza0lUUCwgU2hvdWxkUmVsYXhUaGlyZFBhcnR5Q29va2llQmxvY2tpbmcgc2hv
dWxkUmVsYXhUaGlyZFBhcnR5Q29va2llQmxvY2tpbmcpIGNvbnN0CiB7CiAjaWYgRU5BQkxFKFJF
U09VUkNFX0xPQURfU1RBVElTVElDUykKQEAgLTQxNywxNSArNDMxLDkgQEAgc3RhdGljIE5TSFRU
UENvb2tpZSAqcGFyc2VET01Db29raWUoU3RyaW5nIGNvb2tpZVN0cmluZywgTlNVUkwqIGNvb2tp
ZVVSTCwgT3B0aW8KICAgICBpZiAoW2Nvb2tpZSBpc0hUVFBPbmx5XSkKICAgICAgICAgcmV0dXJu
IG5pbDsKIAotICAgIC8vIENhcCBsaWZldGltZSBvZiBwZXJzaXN0ZW50LCBjbGllbnQtc2lkZSBj
b29raWVzIHRvIGEgd2Vlay4KLSAgICBpZiAoY2FwcGVkTGlmZXRpbWUgJiYgIVtjb29raWUgaXNT
ZXNzaW9uT25seV0pIHsKLSAgICAgICAgaWYgKCFjb29raWUuZXhwaXJlc0RhdGUgfHwgY29va2ll
LmV4cGlyZXNEYXRlLnRpbWVJbnRlcnZhbFNpbmNlTm93ID4gY2FwcGVkTGlmZXRpbWUtPnNlY29u
ZHMoKSkgewotICAgICAgICAgICAgYXV0byBwcm9wZXJ0aWVzID0gYWRvcHROUyhbW2Nvb2tpZSBw
cm9wZXJ0aWVzXSBtdXRhYmxlQ29weV0pOwotICAgICAgICAgICAgYXV0byBkYXRlSW5BV2VlayA9
IGFkb3B0TlMoW1tOU0RhdGUgYWxsb2NdIGluaXRXaXRoVGltZUludGVydmFsU2luY2VOb3c6Y2Fw
cGVkTGlmZXRpbWUtPnNlY29uZHMoKV0pOwotICAgICAgICAgICAgW3Byb3BlcnRpZXMgc2V0T2Jq
ZWN0OmRhdGVJbkFXZWVrLmdldCgpIGZvcktleTpOU0hUVFBDb29raWVFeHBpcmVzXTsKLSAgICAg
ICAgICAgIHJldHVybiBbTlNIVFRQQ29va2llIGNvb2tpZVdpdGhQcm9wZXJ0aWVzOnByb3BlcnRp
ZXMuZ2V0KCldOwotICAgICAgICB9Ci0gICAgfQorICAgIC8vIENhcCBsaWZldGltZSBvZiBwZXJz
aXN0ZW50LCBjbGllbnQtc2lkZSBjb29raWVzLgorICAgIGlmIChjYXBwZWRMaWZldGltZSkKKyAg
ICAgICAgcmV0dXJuIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6Y2FwRXhwaXJ5T2ZQZXJzaXN0ZW50
Q29va2llKGNvb2tpZSwgKmNhcHBlZExpZmV0aW1lKTsKIAogICAgIHJldHVybiBjb29raWU7CiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNz
LmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCmlu
ZGV4IDc5MDg1N2Q1NzZiMTU0NGYzMmMzMDA1YzhlMzc5YWU5ODNkMzNiYWUuLjUzMjgzNjBmMzkw
MDc3NmNiMzQwZjdhN2UyMjU0ODllYzRlYmRlYTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCkBAIC04MTQsNiArODE0LDggQEAgdm9pZCBO
ZXR3b3JrUHJvY2Vzczo6Z2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFTdW1tYXJ5KFBBTDo6
U2Vzc2lvbklEIHNlc3Npb24KIHZvaWQgTmV0d29ya1Byb2Nlc3M6OnJlc2V0UGFyYW1ldGVyc1Rv
RGVmYXVsdFZhbHVlcyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBpZiAoYXV0byogbmV0d29ya1Nl
c3Npb24gPSB0aGlzLT5uZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQpKSB7CisgICAgICAgIG5ldHdv
cmtTZXNzaW9uLT5yZXNldENOQU1FRG9tYWluRGF0YSgpOworICAgICAgICBuZXR3b3JrU2Vzc2lv
bi0+c2V0Q05BTUVDbG9ha2luZ01pdGlnYXRpb25FbmFibGVkKFdlYkNvcmU6OkNOQU1FQ2xvYWtp
bmdNaXRpZ2F0aW9uRW5hYmxlZDo6Tm8pOwogICAgICAgICBpZiAoYXV0byogcmVzb3VyY2VMb2Fk
U3RhdGlzdGljcyA9IG5ldHdvcmtTZXNzaW9uLT5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzKCkpCiAg
ICAgICAgICAgICByZXNvdXJjZUxvYWRTdGF0aXN0aWNzLT5yZXNldFBhcmFtZXRlcnNUb0RlZmF1
bHRWYWx1ZXMoV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogICAgICAgICBlbHNlCkBAIC04
NjYsNiArODY4LDcgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6c2V0Tm90aWZ5UGFnZXNXaGVuRGF0
YVJlY29yZHNXZXJlU2Nhbm5lZChQQUw6OlNlc3Npb25JRCBzZXMKIHZvaWQgTmV0d29ya1Byb2Nl
c3M6OnNldElzUnVubmluZ1Jlc291cmNlTG9hZFN0YXRpc3RpY3NUZXN0KFBBTDo6U2Vzc2lvbklE
IHNlc3Npb25JRCwgYm9vbCB2YWx1ZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBs
ZXRpb25IYW5kbGVyKQogewogICAgIGlmIChhdXRvKiBuZXR3b3JrU2Vzc2lvbiA9IHRoaXMtPm5l
dHdvcmtTZXNzaW9uKHNlc3Npb25JRCkpIHsKKyAgICAgICAgbmV0d29ya1Nlc3Npb24tPnNldENO
QU1FQ2xvYWtpbmdNaXRpZ2F0aW9uRW5hYmxlZChXZWJDb3JlOjpDTkFNRUNsb2FraW5nTWl0aWdh
dGlvbkVuYWJsZWQ6Olllcyk7CiAgICAgICAgIGlmIChhdXRvKiByZXNvdXJjZUxvYWRTdGF0aXN0
aWNzID0gbmV0d29ya1Nlc3Npb24tPnJlc291cmNlTG9hZFN0YXRpc3RpY3MoKSkKICAgICAgICAg
ICAgIHJlc291cmNlTG9hZFN0YXRpc3RpY3MtPnNldElzUnVubmluZ1Rlc3QodmFsdWUsIFdURk1v
dmUoY29tcGxldGlvbkhhbmRsZXIpKTsKICAgICAgICAgZWxzZQpAQCAtMTM3OSw2ICsxMzgyLDIw
IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OnNldFRvU2FtZVNpdGVTdHJpY3RDb29raWVzRm9yVGVz
dGluZyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uCiAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7
CiAgICAgfQogfQorCit2b2lkIE5ldHdvcmtQcm9jZXNzOjpzZXRGaXJzdFBhcnR5SG9zdENOQU1F
RG9tYWluRm9yVGVzdGluZyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFN0cmluZyYmIGZpcnN0
UGFydHlIb3N0LCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYmIGNuYW1lRG9tYWluLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgaWYgKGF1
dG8qIG5ldHdvcmtTZXNzaW9uID0gdGhpcy0+bmV0d29ya1Nlc3Npb24oc2Vzc2lvbklEKSkKKyAg
ICAgICAgbmV0d29ya1Nlc3Npb24tPnNldEZpcnN0UGFydHlIb3N0Q05BTUVEb21haW4oV1RGTW92
ZShmaXJzdFBhcnR5SG9zdCksIFdURk1vdmUoY25hbWVEb21haW4pKTsKKyAgICBjb21wbGV0aW9u
SGFuZGxlcigpOworfQorCit2b2lkIE5ldHdvcmtQcm9jZXNzOjpzZXRUaGlyZFBhcnR5Q05BTUVE
b21haW5Gb3JUZXN0aW5nKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgV2ViQ29yZTo6UmVnaXN0
cmFibGVEb21haW4mJiBkb21haW4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0
aW9uSGFuZGxlcikKK3sKKyAgICBpZiAoYXV0byogbmV0d29ya1Nlc3Npb24gPSB0aGlzLT5uZXR3
b3JrU2Vzc2lvbihzZXNzaW9uSUQpKQorICAgICAgICBuZXR3b3JrU2Vzc2lvbi0+c2V0VGhpcmRQ
YXJ0eUNOQU1FRG9tYWluRm9yVGVzdGluZyhXVEZNb3ZlKGRvbWFpbikpOworICAgIGNvbXBsZXRp
b25IYW5kbGVyKCk7Cit9CiAjZW5kaWYgLy8gRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElD
UykKIAogdm9pZCBOZXR3b3JrUHJvY2Vzczo6c2V0QWRDbGlja0F0dHJpYnV0aW9uRGVidWdNb2Rl
KGJvb2wgZGVidWdNb2RlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrUHJvY2Vzcy5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
UHJvY2Vzcy5oCmluZGV4IDRkZmExNGM4NzgzZGEyMjZjMzI4MDQwYTMyZDU5YzVhNTkzNzA3Mzku
LmYyM2ZkNTgwZWY1NGNhZGY4MGY0NjgzNjY1NmZiMjNmZDRkZGYyZmMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmgKQEAgLTI3Myw2ICsyNzMsOCBA
QCBwdWJsaWM6CiAgICAgdm9pZCBzZXRTaG91bGRFbmJsZVNhbWVTaXRlU3RyaWN0RW5mb3JjZW1l
bnRGb3JUZXN0aW5nKFBBTDo6U2Vzc2lvbklELCBXZWJDb3JlOjpTYW1lU2l0ZVN0cmljdEVuZm9y
Y2VtZW50RW5hYmxlZCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKICAgICB2b2lkIHNl
dEZpcnN0UGFydHlXZWJzaXRlRGF0YVJlbW92YWxNb2RlRm9yVGVzdGluZyhQQUw6OlNlc3Npb25J
RCwgV2ViQ29yZTo6Rmlyc3RQYXJ0eVdlYnNpdGVEYXRhUmVtb3ZhbE1vZGUsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoKT4mJik7CiAgICAgdm9pZCBzZXRUb1NhbWVTaXRlU3RyaWN0Q29va2llc0Zv
clRlc3RpbmcoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWlu
JiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKKyAgICB2b2lkIHNldEZpcnN0UGFydHlI
b3N0Q05BTUVEb21haW5Gb3JUZXN0aW5nKFBBTDo6U2Vzc2lvbklELCBTdHJpbmcmJiBmaXJzdFBh
cnR5SG9zdCwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mJiBjbmFtZURvbWFpbiwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKKyAgICB2b2lkIHNldFRoaXJkUGFydHlDTkFNRURvbWFp
bkZvclRlc3RpbmcoUEFMOjpTZXNzaW9uSUQsIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiYs
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAjZW5kaWYKIAogICAgIHZvaWQgc2V0QWRD
bGlja0F0dHJpYnV0aW9uRGVidWdNb2RlKGJvb2wpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MubWVzc2FnZXMuaW4KaW5kZXggNzAyMjI4
NWUzNjg4NWRlODZmMmRhZjY4ODhiMDI0NzI5OTM1Y2Y2NC4uMDAyZWNkYjgzM2IyOTQxYWU4NjEz
ZmE2NGYwMWRmODk4OTZkZjM0NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrUHJvY2Vzcy5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLm1lc3NhZ2VzLmluCkBAIC0xNDgsNiArMTQ4LDggQEAg
bWVzc2FnZXMgLT4gTmV0d29ya1Byb2Nlc3MgTGVnYWN5UmVjZWl2ZXIgewogICAgIFNldFNob3Vs
ZEVuYmxlU2FtZVNpdGVTdHJpY3RFbmZvcmNlbWVudEZvclRlc3RpbmcoUEFMOjpTZXNzaW9uSUQg
c2Vzc2lvbklELCBlbnVtOmJvb2wgV2ViQ29yZTo6U2FtZVNpdGVTdHJpY3RFbmZvcmNlbWVudEVu
YWJsZWQgZW5hYmxlZCkgLT4gKCkgQXN5bmMKICAgICBTZXRGaXJzdFBhcnR5V2Vic2l0ZURhdGFS
ZW1vdmFsTW9kZUZvclRlc3RpbmcoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBlbnVtOnVpbnQ4
X3QgV2ViQ29yZTo6Rmlyc3RQYXJ0eVdlYnNpdGVEYXRhUmVtb3ZhbE1vZGUgbW9kZSkgLT4gKCkg
QXN5bmMKICAgICBTZXRUb1NhbWVTaXRlU3RyaWN0Q29va2llc0ZvclRlc3RpbmcoUEFMOjpTZXNz
aW9uSUQgc2Vzc2lvbklELCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiBkb21haW4pIC0+ICgp
IEFzeW5jCisgICAgU2V0Rmlyc3RQYXJ0eUhvc3RDTkFNRURvbWFpbkZvclRlc3RpbmcoUEFMOjpT
ZXNzaW9uSUQgc2Vzc2lvbklELCBTdHJpbmcgZmlyc3RQYXJ0eUhvc3QsIFdlYkNvcmU6OlJlZ2lz
dHJhYmxlRG9tYWluIGNuYW1lRG9tYWluKSAtPiAoKSBBc3luYworICAgIFNldFRoaXJkUGFydHlD
TkFNRURvbWFpbkZvclRlc3RpbmcoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBXZWJDb3JlOjpS
ZWdpc3RyYWJsZURvbWFpbiBkb21haW4pIC0+ICgpIEFzeW5jCiAjZW5kaWYKIAogICAgIFNldEFk
Q2xpY2tBdHRyaWJ1dGlvbkRlYnVnTW9kZShib29sIGRlYnVnTW9kZSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24uY3BwIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5jcHAKaW5kZXggNmI2NmJjZjIyMjBj
MzViYWVhNmQyYmI1OGUxMzAxODhkMTY2NjhhOC4uYTdjYjE3NDQ5YzRmNDcyMzhiMTVjZGE5NjY0
MTNjMGZiODYxZmRlNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrU2Vzc2lvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrU2Vzc2lvbi5jcHAKQEAgLTkwLDYgKzkwLDcgQEAgTmV0d29ya1Nlc3Npb246Ok5ldHdvcmtT
ZXNzaW9uKE5ldHdvcmtQcm9jZXNzJiBuZXR3b3JrUHJvY2VzcywgY29uc3QgTmV0d29ya1Nlc3MK
ICAgICAsIG1fc2FtZVNpdGVTdHJpY3RFbmZvcmNlbWVudEVuYWJsZWQocGFyYW1ldGVycy5yZXNv
dXJjZUxvYWRTdGF0aXN0aWNzUGFyYW1ldGVycy5zYW1lU2l0ZVN0cmljdEVuZm9yY2VtZW50RW5h
YmxlZCkKICAgICAsIG1fZmlyc3RQYXJ0eVdlYnNpdGVEYXRhUmVtb3ZhbE1vZGUocGFyYW1ldGVy
cy5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGFyYW1ldGVycy5maXJzdFBhcnR5V2Vic2l0ZURhdGFS
ZW1vdmFsTW9kZSkKICAgICAsIG1fc3RhbmRhbG9uZUFwcGxpY2F0aW9uRG9tYWluKHBhcmFtZXRl
cnMucmVzb3VyY2VMb2FkU3RhdGlzdGljc1BhcmFtZXRlcnMuc3RhbmRhbG9uZUFwcGxpY2F0aW9u
RG9tYWluKQorICAgICwgbV9jbmFtZUNsb2FraW5nTWl0aWdhdGlvbkVuYWJsZWQocGFyYW1ldGVy
cy5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGFyYW1ldGVycy5jbmFtZUNsb2FraW5nTWl0aWdhdGlv
bkVuYWJsZWQpCiAjZW5kaWYKICAgICAsIG1fYWRDbGlja0F0dHJpYnV0aW9uKG1ha2VVbmlxdWVS
ZWY8QWRDbGlja0F0dHJpYnV0aW9uTWFuYWdlcj4obmV0d29ya1Byb2Nlc3MsIHBhcmFtZXRlcnMu
c2Vzc2lvbklEKSkKICAgICAsIG1fdGVzdFNwZWVkTXVsdGlwbGllcihwYXJhbWV0ZXJzLnRlc3RT
cGVlZE11bHRpcGxpZXIpCkBAIC0yODAsNiArMjgxLDQ0IEBAIHZvaWQgTmV0d29ya1Nlc3Npb246
OnNldFNob3VsZEVuYmxlU2FtZVNpdGVTdHJpY3RFbmZvcmNlbWVudChXZWJDb3JlOjpTYW1lU2l0
ZVN0CiAgICAgaWYgKG1fcmVzb3VyY2VMb2FkU3RhdGlzdGljcykKICAgICAgICAgbV9yZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzLT5zZXRTYW1lU2l0ZVN0cmljdEVuZm9yY2VtZW50RW5hYmxlZChlbmFi
bGVkKTsKIH0KKwordm9pZCBOZXR3b3JrU2Vzc2lvbjo6c2V0Rmlyc3RQYXJ0eUhvc3RDTkFNRURv
bWFpbihTdHJpbmcmJiBmaXJzdFBhcnR5SG9zdCwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4m
JiBjbmFtZURvbWFpbikKK3sKKyNpZiBIQVZFKENGTkVUV09SS19DTkFNRV9BTkRfQ09PS0lFX1RS
QU5TRk9STV9TUEkpCisgICAgaWYgKCFjbmFtZUNsb2FraW5nTWl0aWdhdGlvbkVuYWJsZWQoKSkK
KyAgICAgICAgcmV0dXJuOworCisgICAgQVNTRVJUKCFmaXJzdFBhcnR5SG9zdC5pc0VtcHR5KCkg
JiYgIWNuYW1lRG9tYWluLmlzRW1wdHkoKSAmJiBmaXJzdFBhcnR5SG9zdCAhPSBjbmFtZURvbWFp
bi5zdHJpbmcoKSk7CisgICAgaWYgKGZpcnN0UGFydHlIb3N0LmlzRW1wdHkoKSB8fCBjbmFtZURv
bWFpbi5pc0VtcHR5KCkgfHwgZmlyc3RQYXJ0eUhvc3QgPT0gY25hbWVEb21haW4uc3RyaW5nKCkp
CisgICAgICAgIHJldHVybjsKKyAgICBtX2ZpcnN0UGFydHlIb3N0Q05BTUVEb21haW5zLmFkZChX
VEZNb3ZlKGZpcnN0UGFydHlIb3N0KSwgV1RGTW92ZShjbmFtZURvbWFpbikpOworI2Vsc2UKKyAg
ICBVTlVTRURfUEFSQU0oZmlyc3RQYXJ0eUhvc3QpOworICAgIFVOVVNFRF9QQVJBTShjbmFtZURv
bWFpbik7CisjZW5kaWYKK30KKworT3B0aW9uYWw8V2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4+
IE5ldHdvcmtTZXNzaW9uOjpmaXJzdFBhcnR5SG9zdENOQU1FRG9tYWluKGNvbnN0IFN0cmluZyYg
Zmlyc3RQYXJ0eUhvc3QpCit7CisjaWYgSEFWRShDRk5FVFdPUktfQ05BTUVfQU5EX0NPT0tJRV9U
UkFOU0ZPUk1fU1BJKQorICAgIGlmICghY25hbWVDbG9ha2luZ01pdGlnYXRpb25FbmFibGVkKCkp
CisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICBhdXRvIGl0ZXJhdG9yID0gbV9m
aXJzdFBhcnR5SG9zdENOQU1FRG9tYWlucy5maW5kKGZpcnN0UGFydHlIb3N0KTsKKyAgICBpZiAo
aXRlcmF0b3IgPT0gbV9maXJzdFBhcnR5SG9zdENOQU1FRG9tYWlucy5lbmQoKSkKKyAgICAgICAg
cmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICByZXR1cm4gaXRlcmF0b3ItPnZhbHVlOworI2Vsc2UK
KyAgICBVTlVTRURfUEFSQU0oZmlyc3RQYXJ0eUhvc3QpOworICAgIHJldHVybiBXVEY6Om51bGxv
cHQ7CisjZW5kaWYKK30KKwordm9pZCBOZXR3b3JrU2Vzc2lvbjo6cmVzZXRDTkFNRURvbWFpbkRh
dGEoKQoreworICAgIG1fZmlyc3RQYXJ0eUhvc3RDTkFNRURvbWFpbnMuY2xlYXIoKTsKKyAgICBt
X3RoaXJkUGFydHlDTkFNRURvbWFpbkZvclRlc3RpbmcgPSBXVEY6Om51bGxvcHQ7Cit9CiAjZW5k
aWYgLy8gRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKIAogdm9pZCBOZXR3b3JrU2Vz
c2lvbjo6c3RvcmVBZENsaWNrQXR0cmlidXRpb24oV2ViQ29yZTo6QWRDbGlja0F0dHJpYnV0aW9u
JiYgYWRDbGlja0F0dHJpYnV0aW9uKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrU2Vzc2lvbi5oCmluZGV4IDM4MmJmODA1OWZjMDk4ZmVkZmE1MmExODg1NDFlNzRiZjll
NzQzN2QuLjVkM2VmMGVmNmViMTFmNTAxY2JmYzg0YjM4N2E3OWE0ODM2Yzk5YWMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24uaAorKysgYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uLmgKQEAgLTEwNSw2ICsx
MDUsMTMgQEAgcHVibGljOgogICAgIGJvb2wgc2hvdWxkRG93bmdyYWRlUmVmZXJyZXIoKSBjb25z
dDsKICAgICB2b2lkIHNldFRoaXJkUGFydHlDb29raWVCbG9ja2luZ01vZGUoV2ViQ29yZTo6VGhp
cmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9kZSk7CiAgICAgdm9pZCBzZXRTaG91bGRFbmJsZVNhbWVT
aXRlU3RyaWN0RW5mb3JjZW1lbnQoV2ViQ29yZTo6U2FtZVNpdGVTdHJpY3RFbmZvcmNlbWVudEVu
YWJsZWQpOworICAgIHZvaWQgc2V0Q05BTUVDbG9ha2luZ01pdGlnYXRpb25FbmFibGVkKFdlYkNv
cmU6OkNOQU1FQ2xvYWtpbmdNaXRpZ2F0aW9uRW5hYmxlZCB2YWx1ZSkgeyBtX2NuYW1lQ2xvYWtp
bmdNaXRpZ2F0aW9uRW5hYmxlZCA9IHZhbHVlOyB9CisgICAgYm9vbCBjbmFtZUNsb2FraW5nTWl0
aWdhdGlvbkVuYWJsZWQoKSBjb25zdCB7IHJldHVybiBtX2NuYW1lQ2xvYWtpbmdNaXRpZ2F0aW9u
RW5hYmxlZCA9PSBXZWJDb3JlOjpDTkFNRUNsb2FraW5nTWl0aWdhdGlvbkVuYWJsZWQ6Olllczsg
fQorICAgIHZvaWQgc2V0Rmlyc3RQYXJ0eUhvc3RDTkFNRURvbWFpbihTdHJpbmcmJiBmaXJzdFBh
cnR5SG9zdCwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mJiBjbmFtZURvbWFpbik7CisgICAg
T3B0aW9uYWw8V2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4+IGZpcnN0UGFydHlIb3N0Q05BTUVE
b21haW4oY29uc3QgU3RyaW5nJiBmaXJzdFBhcnR5SG9zdCk7CisgICAgdm9pZCBzZXRUaGlyZFBh
cnR5Q05BTUVEb21haW5Gb3JUZXN0aW5nKFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiYgZG9t
YWluKSB7IG1fdGhpcmRQYXJ0eUNOQU1FRG9tYWluRm9yVGVzdGluZyA9IFdURk1vdmUoZG9tYWlu
KTsgfTsKKyAgICBPcHRpb25hbDxXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbj4gdGhpcmRQYXJ0
eUNOQU1FRG9tYWluRm9yVGVzdGluZygpIGNvbnN0IHsgcmV0dXJuIG1fdGhpcmRQYXJ0eUNOQU1F
RG9tYWluRm9yVGVzdGluZzsgfQorICAgIHZvaWQgcmVzZXRDTkFNRURvbWFpbkRhdGEoKTsKICAg
ICB2b2lkIGRlc3Ryb3lSZXNvdXJjZUxvYWRTdGF0aXN0aWNzKENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoKT4mJik7CiAgICAgdm9pZCBmbHVzaEFuZERlc3Ryb3lQZXJzaXN0ZW50U3RvcmUoQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKICNlbmRpZgpAQCAtMTY2LDYgKzE3Myw5IEBAIHByb3Rl
Y3RlZDoKICAgICBXZWJDb3JlOjpTYW1lU2l0ZVN0cmljdEVuZm9yY2VtZW50RW5hYmxlZCBtX3Nh
bWVTaXRlU3RyaWN0RW5mb3JjZW1lbnRFbmFibGVkIHsgV2ViQ29yZTo6U2FtZVNpdGVTdHJpY3RF
bmZvcmNlbWVudEVuYWJsZWQ6Ok5vIH07CiAgICAgV2ViQ29yZTo6Rmlyc3RQYXJ0eVdlYnNpdGVE
YXRhUmVtb3ZhbE1vZGUgbV9maXJzdFBhcnR5V2Vic2l0ZURhdGFSZW1vdmFsTW9kZSB7IFdlYkNv
cmU6OkZpcnN0UGFydHlXZWJzaXRlRGF0YVJlbW92YWxNb2RlOjpBbGxCdXRDb29raWVzIH07CiAg
ICAgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4gbV9zdGFuZGFsb25lQXBwbGljYXRpb25Eb21h
aW47CisgICAgV2ViQ29yZTo6Q05BTUVDbG9ha2luZ01pdGlnYXRpb25FbmFibGVkIG1fY25hbWVD
bG9ha2luZ01pdGlnYXRpb25FbmFibGVkIHsgV2ViQ29yZTo6Q05BTUVDbG9ha2luZ01pdGlnYXRp
b25FbmFibGVkOjpObyB9OworICAgIEhhc2hNYXA8U3RyaW5nLCBXZWJDb3JlOjpSZWdpc3RyYWJs
ZURvbWFpbj4gbV9maXJzdFBhcnR5SG9zdENOQU1FRG9tYWluczsKKyAgICBPcHRpb25hbDxXZWJD
b3JlOjpSZWdpc3RyYWJsZURvbWFpbj4gbV90aGlyZFBhcnR5Q05BTUVEb21haW5Gb3JUZXN0aW5n
OwogI2VuZGlmCiAgICAgYm9vbCBtX2lzU3RhbGVXaGlsZVJldmFsaWRhdGVFbmFibGVkIHsgZmFs
c2UgfTsKICAgICBVbmlxdWVSZWY8QWRDbGlja0F0dHJpYnV0aW9uTWFuYWdlcj4gbV9hZENsaWNr
QXR0cmlidXRpb247CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2Nv
Y29hL05ldHdvcmtEYXRhVGFza0NvY29hLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L2NvY29hL05ldHdvcmtEYXRhVGFza0NvY29hLmgKaW5kZXggMmMxZDg4Y2FjYzNlOTk5NGZhOWM4
Mjk2MTI4ODE0ZWM5ZTlhNjczYy4uZjAxMzM0ODE0ZDNkZDA4ZGY1MTBhODgyZjM0MWY2NTYyYzU4
NzRiYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3
b3JrRGF0YVRhc2tDb2NvYS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29j
b2EvTmV0d29ya0RhdGFUYXNrQ29jb2EuaApAQCAtMzQsNiArMzQsMTAgQEAKIE9CSkNfQ0xBU1Mg
TlNIVFRQQ29va2llU3RvcmFnZTsKIE9CSkNfQ0xBU1MgTlNVUkxTZXNzaW9uRGF0YVRhc2s7CiAK
K25hbWVzcGFjZSBXZWJDb3JlIHsKK2NsYXNzIFJlZ2lzdHJhYmxlRG9tYWluOworfQorCiBuYW1l
c3BhY2UgV2ViS2l0IHsKIAogY2xhc3MgRG93bmxvYWQ7CkBAIC04Nyw2ICs5MSwxMCBAQCBwcml2
YXRlOgogCiAjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKICAgICBzdGF0aWMg
TlNIVFRQQ29va2llU3RvcmFnZSAqc3RhdGVsZXNzQ29va2llU3RvcmFnZSgpOworI2lmIEhBVkUo
Q0ZORVRXT1JLX0NOQU1FX0FORF9DT09LSUVfVFJBTlNGT1JNX1NQSSkKKyAgICB2b2lkIHVwZGF0
ZUZpcnN0UGFydHlJbmZvRm9yU2Vzc2lvbihjb25zdCBVUkwmKTsKKyAgICB2b2lkIGFwcGx5Q29v
a2llUG9saWN5Rm9yVGhpcmRQYXJ0eUNOQU1FQ2xvYWtpbmcoY29uc3QgV2ViQ29yZTo6UmVzb3Vy
Y2VSZXF1ZXN0Jik7CisjZW5kaWYKICAgICB2b2lkIGJsb2NrQ29va2llcygpOwogICAgIHZvaWQg
dW5ibG9ja0Nvb2tpZXMoKTsKICAgICBib29sIG5lZWRzRmlyc3RQYXJ0eUNvb2tpZUJsb2NraW5n
TGF0Y2hNb2RlUXVpcmsoY29uc3QgVVJMJiBmaXJzdFBhcnR5VVJMLCBjb25zdCBVUkwmIHJlcXVl
c3RVUkwsIGNvbnN0IFVSTCYgcmVkaXJlY3RpbmdVUkwpIGNvbnN0OwpAQCAtMTAyLDYgKzExMCw5
IEBAIHByaXZhdGU6CiAKICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQogICAg
IGJvb2wgbV9oYXNCZWVuU2V0VG9Vc2VTdGF0ZWxlc3NDb29raWVTdG9yYWdlIHsgZmFsc2UgfTsK
KyNpZiBIQVZFKENGTkVUV09SS19DTkFNRV9BTkRfQ09PS0lFX1RSQU5TRk9STV9TUEkpCisgICAg
U2Vjb25kcyBtX2FnZUNhcEZvckNOQU1FQ2xvYWtlZENvb2tpZXMgeyAyNF9oICogNyB9OworI2Vu
ZGlmCiAjZW5kaWYKIAogICAgIGJvb2wgbV9pc0Zvck1haW5SZXNvdXJjZU5hdmlnYXRpb25Gb3JB
bnlGcmFtZSB7IGZhbHNlIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL2NvY29hL05ldHdvcmtEYXRhVGFza0NvY29hLm1tIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9jb2NvYS9OZXR3b3JrRGF0YVRhc2tDb2NvYS5tbQppbmRleCA3N2I3ZDEzNDU0NGMx
NDQ2MmRmZDhhZTJmMDJmODNjZjllMzdkNjA0Li5jMWM5MGY5NjExNmRjNmJlYWQyNTYwODliZGEy
MmUxZTE4OGVlZWUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2Nv
Y29hL05ldHdvcmtEYXRhVGFza0NvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvY29jb2EvTmV0d29ya0RhdGFUYXNrQ29jb2EubW0KQEAgLTM4LDYgKzM4LDcgQEAKICNp
bXBvcnQgPFdlYkNvcmUvQXV0aGVudGljYXRpb25DaGFsbGVuZ2UuaD4KICNpbXBvcnQgPFdlYkNv
cmUvTmV0d29ya1N0b3JhZ2VTZXNzaW9uLmg+CiAjaW1wb3J0IDxXZWJDb3JlL05vdEltcGxlbWVu
dGVkLmg+CisjaW1wb3J0IDxXZWJDb3JlL1JlZ2lzdHJhYmxlRG9tYWluLmg+CiAjaW1wb3J0IDxX
ZWJDb3JlL1Jlc291cmNlUmVxdWVzdC5oPgogI2ltcG9ydCA8cGFsL3NwaS9jZi9DRk5ldHdvcmtT
UEkuaD4KICNpbXBvcnQgPHd0Zi9CbG9ja1B0ci5oPgpAQCAtMTI5LDYgKzEzMCw4NiBAQCBOU0hU
VFBDb29raWVTdG9yYWdlICpOZXR3b3JrRGF0YVRhc2tDb2NvYTo6c3RhdGVsZXNzQ29va2llU3Rv
cmFnZSgpCiAgICAgcmV0dXJuIHN0YXRlbGVzc0Nvb2tpZVN0b3JhZ2UuZ2V0KCkuZ2V0KCk7CiB9
CiAKKyNpZiBIQVZFKENGTkVUV09SS19DTkFNRV9BTkRfQ09PS0lFX1RSQU5TRk9STV9TUEkpCisv
LyBGSVhNRTogUmVtb3ZlIHRoZXNlIHNlbGVjdG9yIGNoZWNrcyB3aGVuIG1hY09TIEJpZyBTdXIg
aGFzIHNoaXBwZWQuCitzdGF0aWMgYm9vbCBoYXNDTkFNRUFuZENvb2tpZVRyYW5zZm9ybVNQSShO
U1VSTFNlc3Npb25EYXRhVGFzayogdGFzaykKK3sKKyAgICByZXR1cm4gW3Rhc2sgcmVzcG9uZHNU
b1NlbGVjdG9yOkBzZWxlY3RvcihfY29va2llVHJhbnNmb3JtQ2FsbGJhY2spXQorICAgICAgICAm
JiBbdGFzayByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKF9yZXNvbHZlZENOQU1FQ2hhaW4p
XTsKK30KKworc3RhdGljIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIGxhc3RDTkFNRURvbWFp
bihOU0FycmF5PE5TU3RyaW5nICo+ICpjbmFtZXMpCit7CisgICAgaWYgKGF1dG8qIGxhc3RSZXNv
bHZlZENOQU1FSW5DaGFpbiA9IFtjbmFtZXMgbGFzdE9iamVjdF0pIHsKKyAgICAgICAgYXV0byBj
bmFtZSA9IFN0cmluZyhsYXN0UmVzb2x2ZWRDTkFNRUluQ2hhaW4pOworICAgICAgICBpZiAoY25h
bWUuZW5kc1dpdGgoJy4nKSkKKyAgICAgICAgICAgIGNuYW1lLnJlbW92ZShjbmFtZS5sZW5ndGgo
KSAtIDEpOworICAgICAgICByZXR1cm4gV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW46OnVuY2hl
Y2tlZENyZWF0ZUZyb21Ib3N0KGNuYW1lKTsKKyAgICB9CisKKyAgICByZXR1cm4geyB9OworfQor
Cit2b2lkIE5ldHdvcmtEYXRhVGFza0NvY29hOjp1cGRhdGVGaXJzdFBhcnR5SW5mb0ZvclNlc3Np
b24oY29uc3QgVVJMJiByZXF1ZXN0VVJMKQoreworICAgIGlmICghaGFzQ05BTUVBbmRDb29raWVU
cmFuc2Zvcm1TUEkobV90YXNrLmdldCgpKSB8fCAhbmV0d29ya1Nlc3Npb24oKSB8fCAhbmV0d29y
a1Nlc3Npb24oKS0+bmV0d29ya1N0b3JhZ2VTZXNzaW9uKCkgfHwgIW5ldHdvcmtTZXNzaW9uKCkt
Pm5ldHdvcmtTdG9yYWdlU2Vzc2lvbigpLT5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzRW5hYmxlZCgp
IHx8ICFuZXR3b3JrU2Vzc2lvbigpLT5jbmFtZUNsb2FraW5nTWl0aWdhdGlvbkVuYWJsZWQoKSB8
fCByZXF1ZXN0VVJMLmhvc3QoKS5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybjsKKworICAgIGF1
dG8gY25hbWVEb21haW4gPSBsYXN0Q05BTUVEb21haW4oW21fdGFzayBfcmVzb2x2ZWRDTkFNRUNo
YWluXSk7CisgICAgaWYgKCFjbmFtZURvbWFpbi5pc0VtcHR5KCkpCisgICAgICAgIG5ldHdvcmtT
ZXNzaW9uKCktPnNldEZpcnN0UGFydHlIb3N0Q05BTUVEb21haW4ocmVxdWVzdFVSTC5ob3N0KCku
dG9TdHJpbmcoKSwgV1RGTW92ZShjbmFtZURvbWFpbikpOworfQorCit2b2lkIE5ldHdvcmtEYXRh
VGFza0NvY29hOjphcHBseUNvb2tpZVBvbGljeUZvclRoaXJkUGFydHlDTkFNRUNsb2FraW5nKGNv
bnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCkKK3sKKyAgICBpZiAoIWhhc0NO
QU1FQW5kQ29va2llVHJhbnNmb3JtU1BJKG1fdGFzay5nZXQoKSkgfHwgaXNUb3BMZXZlbE5hdmln
YXRpb24oKSB8fCAhbmV0d29ya1Nlc3Npb24oKSB8fCAhbmV0d29ya1Nlc3Npb24oKS0+bmV0d29y
a1N0b3JhZ2VTZXNzaW9uKCkgfHwgIW5ldHdvcmtTZXNzaW9uKCktPm5ldHdvcmtTdG9yYWdlU2Vz
c2lvbigpLT5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzRW5hYmxlZCgpIHx8ICFuZXR3b3JrU2Vzc2lv
bigpLT5jbmFtZUNsb2FraW5nTWl0aWdhdGlvbkVuYWJsZWQoKSkKKyAgICAgICAgcmV0dXJuOwor
CisgICAgaWYgKGlzVGhpcmRQYXJ0eVJlcXVlc3QocmVxdWVzdCkpIHsKKyAgICAgICAgbV90YXNr
LmdldCgpLl9jb29raWVUcmFuc2Zvcm1DYWxsYmFjayA9IG5pbDsKKyAgICAgICAgcmV0dXJuOwor
ICAgIH0KKworICAgIC8vIENhcCBleHBpcnkgb2YgaW5jb21pbmcgY29va2llcyBpbiByZXNwb25z
ZSBpZiBpdCBpcyBhIHNhbWUtc2l0ZQorICAgIC8vIHN1YnJlc291cmNlIGJ1dCBpdCByZXNvbHZl
cyB0byBhIGRpZmZlcmVudCBDTkFNRSB0aGFuIHRoZSB0b3AKKyAgICAvLyBzaXRlIHJlcXVlc3Qs
IGEuay5hLiB0aGlyZC1wYXJ0eSBDTkFNRSBjbG9ha2luZy4KKyAgICBhdXRvIGZpcnN0UGFydHlV
UkwgPSByZXF1ZXN0LmZpcnN0UGFydHlGb3JDb29raWVzKCk7CisgICAgYXV0byBmaXJzdFBhcnR5
SG9zdENOQU1FID0gbmV0d29ya1Nlc3Npb24oKS0+Zmlyc3RQYXJ0eUhvc3RDTkFNRURvbWFpbihm
aXJzdFBhcnR5VVJMLmhvc3QoKS50b1N0cmluZygpKTsKKworICAgIG1fdGFzay5nZXQoKS5fY29v
a2llVHJhbnNmb3JtQ2FsbGJhY2sgPSBtYWtlQmxvY2tQdHIoW3JlcXVlc3RVUkwgPSBjcm9zc1Ro
cmVhZENvcHkocmVxdWVzdC51cmwoKSksIGZpcnN0UGFydHlVUkwgPSBjcm9zc1RocmVhZENvcHko
Zmlyc3RQYXJ0eVVSTCksIGZpcnN0UGFydHlIb3N0Q05BTUUgPSBjcm9zc1RocmVhZENvcHkoZmly
c3RQYXJ0eUhvc3RDTkFNRSksIHRoaXJkUGFydHlDTkFNRURvbWFpbkZvclRlc3RpbmcgPSBjcm9z
c1RocmVhZENvcHkobmV0d29ya1Nlc3Npb24oKS0+dGhpcmRQYXJ0eUNOQU1FRG9tYWluRm9yVGVz
dGluZygpKSwgYWdlQ2FwRm9yQ05BTUVDbG9ha2VkQ29va2llcyA9IGNyb3NzVGhyZWFkQ29weSht
X2FnZUNhcEZvckNOQU1FQ2xvYWtlZENvb2tpZXMpLCB0YXNrID0gbV90YXNrXSAoTlNBcnJheTxO
U0hUVFBDb29raWUqPiAqY29va2llc1NldEluUmVzcG9uc2UpIC0+IE5TQXJyYXk8TlNIVFRQQ29v
a2llKj4gKiB7CisgICAgICAgIGlmICghW2Nvb2tpZXNTZXRJblJlc3BvbnNlIGNvdW50XSkKKyAg
ICAgICAgICAgIHJldHVybiBjb29raWVzU2V0SW5SZXNwb25zZTsKKworICAgICAgICBhdXRvIGNu
YW1lRG9tYWluID0gbGFzdENOQU1FRG9tYWluKFt0YXNrIF9yZXNvbHZlZENOQU1FQ2hhaW5dKTsK
KyAgICAgICAgaWYgKGNuYW1lRG9tYWluLmlzRW1wdHkoKSkgeworICAgICAgICAgICAgaWYgKCF0
aGlyZFBhcnR5Q05BTUVEb21haW5Gb3JUZXN0aW5nKQorICAgICAgICAgICAgICAgIHJldHVybiBj
b29raWVzU2V0SW5SZXNwb25zZTsKKyAgICAgICAgICAgIGNuYW1lRG9tYWluID0gKnRoaXJkUGFy
dHlDTkFNRURvbWFpbkZvclRlc3Rpbmc7CisgICAgICAgIH0KKworICAgICAgICAvLyBDTkFNRSBj
bG9ha2luZyBpcyBhIGZpcnN0LXBhcnR5IHN1YiByZXNvdXJjZSB0aGF0IHJlc29sdmVzCisgICAg
ICAgIC8vIHRocm91Z2ggYSBDTkFNRSB0aGF0IGRpZmZlcnMgZnJvbSB0aGUgZmlyc3QtcGFydHkg
ZG9tYWluIGFuZAorICAgICAgICAvLyBhbHNvIGRpZmZlcnMgZnJvbSB0aGUgdG9wIGZyYW1lIGhv
c3QncyBDTkFNRSwgaWYgb25lIGV4aXN0cy4KKyAgICAgICAgaWYgKCFjbmFtZURvbWFpbi5tYXRj
aGVzKGZpcnN0UGFydHlVUkwpICYmICghZmlyc3RQYXJ0eUhvc3RDTkFNRSB8fCBjbmFtZURvbWFp
biAhPSAqZmlyc3RQYXJ0eUhvc3RDTkFNRSkpIHsKKworICAgICAgICAgICAgTlNVSW50ZWdlciBj
b3VudCA9IFtjb29raWVzU2V0SW5SZXNwb25zZSBjb3VudF07CisgICAgICAgICAgICAvLyBEb24n
dCB1c2UgUmV0YWluUHRyIGhlcmUuIFRoaXMgYXJyYXkgaGFzIHRvIGJlIHJldGFpbmVkIGFuZAor
ICAgICAgICAgICAgLy8gYXV0byByZWxlYXNlZCB0byBub3QgYmUgcmVsZWFzZWQgYmVmb3JlIHJl
dHVybmVkIHRvIHRoZSBjb2RlCisgICAgICAgICAgICAvLyBleGVjdXRpbmcgdGhlIGJsb2NrLgor
ICAgICAgICAgICAgYXV0byogY2FwcGVkQ29va2llcyA9IFtOU011dGFibGVBcnJheSBhcnJheVdp
dGhDYXBhY2l0eTpjb3VudF07CisgICAgICAgICAgICBmb3IgKE5TVUludGVnZXIgaSA9IDA7IGkg
PCBjb3VudDsgKytpKSB7CisgICAgICAgICAgICAgICAgTlNIVFRQQ29va2llICpjb29raWUgPSAo
TlNIVFRQQ29va2llICopW2Nvb2tpZXNTZXRJblJlc3BvbnNlIG9iamVjdEF0SW5kZXg6aV07Cisg
ICAgICAgICAgICAgICAgY29va2llID0gV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpj
YXBFeHBpcnlPZlBlcnNpc3RlbnRDb29raWUoY29va2llLCBhZ2VDYXBGb3JDTkFNRUNsb2FrZWRD
b29raWVzKTsKKyAgICAgICAgICAgICAgICBbY2FwcGVkQ29va2llcyBhZGRPYmplY3Q6Y29va2ll
XTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHJldHVybiBjYXBwZWRDb29raWVzOworICAg
ICAgICB9CisKKyAgICAgICAgcmV0dXJuIGNvb2tpZXNTZXRJblJlc3BvbnNlOworICAgIH0pLmdl
dCgpOworfQorI2VuZGlmCisKIHZvaWQgTmV0d29ya0RhdGFUYXNrQ29jb2E6OmJsb2NrQ29va2ll
cygpCiB7CiAgICAgQVNTRVJUKGhhc1Byb2Nlc3NQcml2aWxlZ2UoUHJvY2Vzc1ByaXZpbGVnZTo6
Q2FuQWNjZXNzUmF3Q29va2llcykpOwpAQCAtMjYzLDYgKzM0NCw5IEBAIE5ldHdvcmtEYXRhVGFz
a0NvY29hOjpOZXR3b3JrRGF0YVRhc2tDb2NvYShOZXR3b3JrU2Vzc2lvbiYgc2Vzc2lvbiwgTmV0
d29ya0RhdGFUCiAgICAgfQogCiAjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykK
KyNpZiBIQVZFKENGTkVUV09SS19DTkFNRV9BTkRfQ09PS0lFX1RSQU5TRk9STV9TUEkpCisgICAg
YXBwbHlDb29raWVQb2xpY3lGb3JUaGlyZFBhcnR5Q05BTUVDbG9ha2luZyhyZXF1ZXN0KTsKKyNl
bmRpZgogICAgIGlmIChzaG91bGRCbG9ja0Nvb2tpZXMpIHsKICNpZiAhUkVMRUFTRV9MT0dfRElT
QUJMRUQKICAgICAgICAgaWYgKG1fc2Vzc2lvbi0+c2hvdWxkTG9nQ29va2llSW5mb3JtYXRpb24o
KSkKQEAgLTM0NSw2ICs0MjksMTAgQEAgdm9pZCBOZXR3b3JrRGF0YVRhc2tDb2NvYTo6ZGlkUmVj
ZWl2ZURhdGEoUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiBkYXRhKQogdm9pZCBOZXR3b3Jr
RGF0YVRhc2tDb2NvYTo6ZGlkUmVjZWl2ZVJlc3BvbnNlKFdlYkNvcmU6OlJlc291cmNlUmVzcG9u
c2UmJiByZXNwb25zZSwgTmVnb3RpYXRlZExlZ2FjeVRMUyBuZWdvdGlhdGVkTGVnYWN5VExTLCBX
ZWJLaXQ6OlJlc3BvbnNlQ29tcGxldGlvbkhhbmRsZXImJiBjb21wbGV0aW9uSGFuZGxlcikKIHsK
ICAgICBXVEZFbWl0U2lnbnBvc3QobV90YXNrLmdldCgpLCAiRGF0YVRhc2siLCAicmVjZWl2ZWQg
cmVzcG9uc2UgaGVhZGVycyIpOworI2lmIEhBVkUoQ0ZORVRXT1JLX0NOQU1FX0FORF9DT09LSUVf
VFJBTlNGT1JNX1NQSSkKKyAgICBpZiAoaXNUb3BMZXZlbE5hdmlnYXRpb24oKSkKKyAgICAgICAg
dXBkYXRlRmlyc3RQYXJ0eUluZm9Gb3JTZXNzaW9uKHJlc3BvbnNlLnVybCgpKTsKKyNlbmRpZgog
ICAgIE5ldHdvcmtEYXRhVGFzazo6ZGlkUmVjZWl2ZVJlc3BvbnNlKFdURk1vdmUocmVzcG9uc2Up
LCBuZWdvdGlhdGVkTGVnYWN5VExTLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiB9CiAK
QEAgLTM5OSw2ICs0ODcsOSBAQCB2b2lkIE5ldHdvcmtEYXRhVGFza0NvY29hOjp3aWxsUGVyZm9y
bUhUVFBSZWRpcmVjdGlvbihXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJgogICAgICAgICByZXF1
ZXN0LnNldEZpcnN0UGFydHlGb3JDb29raWVzKHJlcXVlc3QudXJsKCkpOwogCiAjaWYgRU5BQkxF
KFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKKyNpZiBIQVZFKENGTkVUV09SS19DTkFNRV9BTkRf
Q09PS0lFX1RSQU5TRk9STV9TUEkpCisgICAgYXBwbHlDb29raWVQb2xpY3lGb3JUaGlyZFBhcnR5
Q05BTUVDbG9ha2luZyhyZXF1ZXN0KTsKKyNlbmRpZgogICAgIGlmICghbV9oYXNCZWVuU2V0VG9V
c2VTdGF0ZWxlc3NDb29raWVTdG9yYWdlKSB7CiAgICAgICAgIGlmIChtX3N0b3JlZENyZWRlbnRp
YWxzUG9saWN5ID09IFdlYkNvcmU6OlN0b3JlZENyZWRlbnRpYWxzUG9saWN5OjpFcGhlbWVyYWxT
dGF0ZWxlc3MKICAgICAgICAgICAgIHx8IChtX3Nlc3Npb24tPm5ldHdvcmtTdG9yYWdlU2Vzc2lv
bigpICYmIG1fc2Vzc2lvbi0+bmV0d29ya1N0b3JhZ2VTZXNzaW9uKCktPnNob3VsZEJsb2NrQ29v
a2llcyhyZXF1ZXN0LCBtX2ZyYW1lSUQsIG1fcGFnZUlELCBtX3Nob3VsZFJlbGF4VGhpcmRQYXJ0
eUNvb2tpZUJsb2NraW5nKSkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9SZXNv
dXJjZUxvYWRTdGF0aXN0aWNzUGFyYW1ldGVycy5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvUmVz
b3VyY2VMb2FkU3RhdGlzdGljc1BhcmFtZXRlcnMuaAppbmRleCA2MGRlMzVmNmFlOTU3ZDcwNjc1
OTQ5NjQ3M2NlMzUxNjQyNDFlMmViLi5hY2IzNGVhYjExNjU3YzAzM2M1MmFlM2FlYjAxODU4MjVl
MGQ3NzhjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9SZXNvdXJjZUxvYWRTdGF0
aXN0aWNzUGFyYW1ldGVycy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1Jlc291cmNlTG9h
ZFN0YXRpc3RpY3NQYXJhbWV0ZXJzLmgKQEAgLTQ1LDYgKzQ1LDcgQEAgc3RydWN0IFJlc291cmNl
TG9hZFN0YXRpc3RpY3NQYXJhbWV0ZXJzIHsKICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFU
SVNUSUNTKQogICAgIFdlYkNvcmU6OlRoaXJkUGFydHlDb29raWVCbG9ja2luZ01vZGUgdGhpcmRQ
YXJ0eUNvb2tpZUJsb2NraW5nTW9kZSB7IFdlYkNvcmU6OlRoaXJkUGFydHlDb29raWVCbG9ja2lu
Z01vZGU6OkFsbCB9OwogICAgIFdlYkNvcmU6OlNhbWVTaXRlU3RyaWN0RW5mb3JjZW1lbnRFbmFi
bGVkIHNhbWVTaXRlU3RyaWN0RW5mb3JjZW1lbnRFbmFibGVkIHsgV2ViQ29yZTo6U2FtZVNpdGVT
dHJpY3RFbmZvcmNlbWVudEVuYWJsZWQ6Ok5vIH07CisgICAgV2ViQ29yZTo6Q05BTUVDbG9ha2lu
Z01pdGlnYXRpb25FbmFibGVkIGNuYW1lQ2xvYWtpbmdNaXRpZ2F0aW9uRW5hYmxlZCB7IFdlYkNv
cmU6OkNOQU1FQ2xvYWtpbmdNaXRpZ2F0aW9uRW5hYmxlZDo6Tm8gfTsKICNlbmRpZgogICAgIFdl
YkNvcmU6OkZpcnN0UGFydHlXZWJzaXRlRGF0YVJlbW92YWxNb2RlIGZpcnN0UGFydHlXZWJzaXRl
RGF0YVJlbW92YWxNb2RlIHsgV2ViQ29yZTo6Rmlyc3RQYXJ0eVdlYnNpdGVEYXRhUmVtb3ZhbE1v
ZGU6OkFsbEJ1dENvb2tpZXMgfTsKICAgICBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiBzdGFu
ZGFsb25lQXBwbGljYXRpb25Eb21haW47CkBAIC02Myw2ICs2NCw3IEBAIHN0cnVjdCBSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzUGFyYW1ldGVycyB7CiAjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RB
VElTVElDUykKICAgICAgICAgZW5jb2RlciA8PCB0aGlyZFBhcnR5Q29va2llQmxvY2tpbmdNb2Rl
OwogICAgICAgICBlbmNvZGVyIDw8IHNhbWVTaXRlU3RyaWN0RW5mb3JjZW1lbnRFbmFibGVkOwor
ICAgICAgICBlbmNvZGVyIDw8IGNuYW1lQ2xvYWtpbmdNaXRpZ2F0aW9uRW5hYmxlZDsKICNlbmRp
ZgogICAgICAgICBlbmNvZGVyIDw8IGZpcnN0UGFydHlXZWJzaXRlRGF0YVJlbW92YWxNb2RlOwog
ICAgICAgICBlbmNvZGVyIDw8IHN0YW5kYWxvbmVBcHBsaWNhdGlvbkRvbWFpbjsKQEAgLTExNyw2
ICsxMTksMTEgQEAgc3RydWN0IFJlc291cmNlTG9hZFN0YXRpc3RpY3NQYXJhbWV0ZXJzIHsKICAg
ICAgICAgZGVjb2RlciA+PiBzYW1lU2l0ZVN0cmljdEVuZm9yY2VtZW50RW5hYmxlZDsKICAgICAg
ICAgaWYgKCFzYW1lU2l0ZVN0cmljdEVuZm9yY2VtZW50RW5hYmxlZCkKICAgICAgICAgICAgIHJl
dHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICAgICAgT3B0aW9uYWw8V2ViQ29yZTo6Q05BTUVDbG9h
a2luZ01pdGlnYXRpb25FbmFibGVkPiBjbmFtZUNsb2FraW5nTWl0aWdhdGlvbkVuYWJsZWQ7Cisg
ICAgICAgIGRlY29kZXIgPj4gY25hbWVDbG9ha2luZ01pdGlnYXRpb25FbmFibGVkOworICAgICAg
ICBpZiAoIWNuYW1lQ2xvYWtpbmdNaXRpZ2F0aW9uRW5hYmxlZCkKKyAgICAgICAgICAgIHJldHVy
biBXVEY6Om51bGxvcHQ7CiAjZW5kaWYKIAogICAgICAgICBPcHRpb25hbDxXZWJDb3JlOjpGaXJz
dFBhcnR5V2Vic2l0ZURhdGFSZW1vdmFsTW9kZT4gZmlyc3RQYXJ0eVdlYnNpdGVEYXRhUmVtb3Zh
bE1vZGU7CkBAIC0xNTAsNiArMTU3LDcgQEAgc3RydWN0IFJlc291cmNlTG9hZFN0YXRpc3RpY3NQ
YXJhbWV0ZXJzIHsKICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQogICAgICAg
ICAgICAgV1RGTW92ZSgqdGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9kZSksCiAgICAgICAgICAg
ICBXVEZNb3ZlKCpzYW1lU2l0ZVN0cmljdEVuZm9yY2VtZW50RW5hYmxlZCksCisgICAgICAgICAg
ICBXVEZNb3ZlKCpjbmFtZUNsb2FraW5nTWl0aWdhdGlvbkVuYWJsZWQpLAogI2VuZGlmCiAgICAg
ICAgICAgICBXVEZNb3ZlKCpmaXJzdFBhcnR5V2Vic2l0ZURhdGFSZW1vdmFsTW9kZSksCiAgICAg
ICAgICAgICBXVEZNb3ZlKCpzdGFuZGFsb25lQXBwbGljYXRpb25Eb21haW4pLApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUHJlZmVyZW5jZXMueWFtbCBiL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL1dlYlByZWZlcmVuY2VzLnlhbWwKaW5kZXggODhhZTZhZTJkOWEzOTc0NzYxY2I5
NzI0NjQ3ZmIzNjEzZGNiNTc2Mi4uYWJlNzJkNWZmODE3MjU0Nzk3NjAzZTdkMjJjOGQ3MmYyYjRk
MTUzZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUHJlZmVyZW5jZXMueWFt
bAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQcmVmZXJlbmNlcy55YW1sCkBAIC0yMDU2
LDYgKzIwNTYsMTMgQEAgSXNTYW1lU2l0ZVN0cmljdEVuZm9yY2VtZW50RW5hYmxlZDoKICAgaHVt
YW5SZWFkYWJsZURlc2NyaXB0aW9uOiAiRW5hYmxlIFNhbWVTaXRlIHN0cmljdCBlbmZvcmNlbWVu
dCB0byBtaXRpZ2F0ZSBib3VuY2UgdHJhY2tpbmciCiAgIGNhdGVnb3J5OiBleHBlcmltZW50YWwK
IAorSXNDTkFNRUNsb2FraW5nTWl0aWdhdGlvbkVuYWJsZWQ6CisgIHR5cGU6IGJvb2wKKyAgZGVm
YXVsdFZhbHVlOiBmYWxzZQorICBodW1hblJlYWRhYmxlTmFtZTogIkVuYWJsZSBDTkFNRSBjbG9h
a2luZyBtaXRpZ2F0aW9uIgorICBodW1hblJlYWRhYmxlRGVzY3JpcHRpb246ICJFbmFibGUgdGhp
cmQtcGFydHkgQ05BTUUgY2xvYWtpbmcgbWl0aWdhdGlvbiIKKyAgY2F0ZWdvcnk6IGV4cGVyaW1l
bnRhbAorCiBJc0xvZ2dlZEluQVBJRW5hYmxlZDoKICAgICB0eXBlOiBib29sCiAgICAgZGVmYXVs
dFZhbHVlOiBmYWxzZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0Mv
V0tXZWJzaXRlRGF0YVN0b3JlUmVmLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9D
L1dLV2Vic2l0ZURhdGFTdG9yZVJlZi5jcHAKaW5kZXggODAwZTc1NDllYTE3OTZmM2U3ZGIxMzVk
NmIxNzA0ZDBkOGZiOTYzZC4uZjM1NjNlOTQ0MWNlNmIxNGI0MmNmY2U4NWYxOWQ5ZDkyOTAwZDM1
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tXZWJzaXRlRGF0
YVN0b3JlUmVmLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1dlYnNp
dGVEYXRhU3RvcmVSZWYuY3BwCkBAIC02MjgsNiArNjI4LDI4IEBAIHZvaWQgV0tXZWJzaXRlRGF0
YVN0b3JlU2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc1RvU2FtZVNpdGVTdHJpY3RDb29raWVzRm9y
VGVzdGluCiAjZW5kaWYKIH0KIAordm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVTZXRSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzRmlyc3RQYXJ0eUhvc3RDTkFNRURvbWFpbkZvclRlc3RpbmcoV0tXZWJzaXRl
RGF0YVN0b3JlUmVmIGRhdGFTdG9yZVJlZiwgV0tTdHJpbmdSZWYgZmlyc3RQYXJ0eVVSTFN0cmlu
ZywgV0tTdHJpbmdSZWYgY25hbWVVUkxTdHJpbmcsIHZvaWQqIGNvbnRleHQsIFdLV2Vic2l0ZURh
dGFTdG9yZVNldFJlc291cmNlTG9hZFN0YXRpc3RpY3NGaXJzdFBhcnR5SG9zdENOQU1FRG9tYWlu
Rm9yVGVzdGluZ0Z1bmN0aW9uIGNvbXBsZXRpb25IYW5kbGVyKQoreworI2lmIEVOQUJMRShSRVNP
VVJDRV9MT0FEX1NUQVRJU1RJQ1MpCisgICAgV2ViS2l0Ojp0b0ltcGwoZGF0YVN0b3JlUmVmKS0+
c2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0ZpcnN0UGFydHlIb3N0Q05BTUVEb21haW5Gb3JUZXN0
aW5nKFVSTChVUkwoKSwgV2ViS2l0Ojp0b0ltcGwoZmlyc3RQYXJ0eVVSTFN0cmluZyktPnN0cmlu
ZygpKSwgVVJMKFVSTCgpLCBXZWJLaXQ6OnRvSW1wbChjbmFtZVVSTFN0cmluZyktPnN0cmluZygp
KSwgW2NvbnRleHQsIGNvbXBsZXRpb25IYW5kbGVyXSB7CisgICAgICAgIGNvbXBsZXRpb25IYW5k
bGVyKGNvbnRleHQpOworICAgIH0pOworI2Vsc2UKKyAgICBjb21wbGV0aW9uSGFuZGxlcihjb250
ZXh0KTsKKyNlbmRpZgorfQorCit2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZVNldFJlc291cmNlTG9h
ZFN0YXRpc3RpY3NUaGlyZFBhcnR5Q05BTUVEb21haW5Gb3JUZXN0aW5nKFdLV2Vic2l0ZURhdGFT
dG9yZVJlZiBkYXRhU3RvcmVSZWYsIFdLU3RyaW5nUmVmIGNuYW1lVVJMU3RyaW5nLCB2b2lkKiBj
b250ZXh0LCBXS1dlYnNpdGVEYXRhU3RvcmVTZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzVGhpcmRQ
YXJ0eUNOQU1FRG9tYWluRm9yVGVzdGluZ0Z1bmN0aW9uIGNvbXBsZXRpb25IYW5kbGVyKQorewor
I2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCisgICAgV2ViS2l0Ojp0b0ltcGwo
ZGF0YVN0b3JlUmVmKS0+c2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc1RoaXJkUGFydHlDTkFNRURv
bWFpbkZvclRlc3RpbmcoVVJMKFVSTCgpLCBXZWJLaXQ6OnRvSW1wbChjbmFtZVVSTFN0cmluZykt
PnN0cmluZygpKSwgW2NvbnRleHQsIGNvbXBsZXRpb25IYW5kbGVyXSB7CisgICAgICAgIGNvbXBs
ZXRpb25IYW5kbGVyKGNvbnRleHQpOworICAgIH0pOworI2Vsc2UKKyAgICBjb21wbGV0aW9uSGFu
ZGxlcihjb250ZXh0KTsKKyNlbmRpZgorfQorCiB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZVNldEFw
cEJvdW5kRG9tYWluc0ZvclRlc3RpbmcoV0tBcnJheVJlZiBvcmlnaW5VUkxzUmVmLCB2b2lkKiBj
b250ZXh0LCBXS1dlYnNpdGVEYXRhU3RvcmVTZXRBcHBCb3VuZERvbWFpbnNGb3JUZXN0aW5nRnVu
Y3Rpb24gY29tcGxldGlvbkhhbmRsZXIpCiB7CiAjaWYgUExBVEZPUk0oQ09DT0EpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1dlYnNpdGVEYXRhU3RvcmVSZWYu
aCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLV2Vic2l0ZURhdGFTdG9yZVJlZi5o
CmluZGV4IGQ4YjhkMWY0MGI4NjU0MzhhMjg4MTQzODA5N2ViYzBmMGM3ZTFmZGMuLmViODJmYWQ0
NDY4ZjZmMzQ3YjBiZDhkNDYyNGZjNWFkNjVkNzk5OTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9DL1dLV2Vic2l0ZURhdGFTdG9yZVJlZi5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLV2Vic2l0ZURhdGFTdG9yZVJlZi5oCkBAIC0xMzAsNiAr
MTMwLDEwIEBAIHR5cGVkZWYgdm9pZCAoKldLV2Vic2l0ZURhdGFTdG9yZVNldFJlc291cmNlTG9h
ZFN0YXRpc3RpY3NGaXJzdFBhcnR5V2Vic2l0ZURhdGFSCiBXS19FWFBPUlQgdm9pZCBXS1dlYnNp
dGVEYXRhU3RvcmVTZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRmlyc3RQYXJ0eVdlYnNpdGVEYXRh
UmVtb3ZhbE1vZGVGb3JUZXN0aW5nKFdLV2Vic2l0ZURhdGFTdG9yZVJlZiBkYXRhU3RvcmVSZWYs
IGJvb2wgZW5hYmxlZCwgdm9pZCogY29udGV4dCwgV0tXZWJzaXRlRGF0YVN0b3JlU2V0UmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc0ZpcnN0UGFydHlXZWJzaXRlRGF0YVJlbW92YWxNb2RlRm9yVGVzdGlu
Z0Z1bmN0aW9uIGNvbXBsZXRpb25IYW5kbGVyKTsKIHR5cGVkZWYgdm9pZCAoKldLV2Vic2l0ZURh
dGFTdG9yZVNldFJlc291cmNlTG9hZFN0YXRpc3RpY3NUb1NhbWVTaXRlU3RyaWN0Q29va2llc0Zv
clRlc3RpbmdGdW5jdGlvbikodm9pZCogZnVuY3Rpb25Db250ZXh0KTsKIFdLX0VYUE9SVCB2b2lk
IFdLV2Vic2l0ZURhdGFTdG9yZVNldFJlc291cmNlTG9hZFN0YXRpc3RpY3NUb1NhbWVTaXRlU3Ry
aWN0Q29va2llc0ZvclRlc3RpbmcoV0tXZWJzaXRlRGF0YVN0b3JlUmVmIGRhdGFTdG9yZVJlZiwg
V0tTdHJpbmdSZWYgaG9zdE5hbWUsIHZvaWQqIGNvbnRleHQsIFdLV2Vic2l0ZURhdGFTdG9yZVNl
dFJlc291cmNlTG9hZFN0YXRpc3RpY3NUb1NhbWVTaXRlU3RyaWN0Q29va2llc0ZvclRlc3RpbmdG
dW5jdGlvbiBjb21wbGV0aW9uSGFuZGxlcik7Cit0eXBlZGVmIHZvaWQgKCpXS1dlYnNpdGVEYXRh
U3RvcmVTZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRmlyc3RQYXJ0eUhvc3RDTkFNRURvbWFpbkZv
clRlc3RpbmdGdW5jdGlvbikodm9pZCogZnVuY3Rpb25Db250ZXh0KTsKK1dLX0VYUE9SVCB2b2lk
IFdLV2Vic2l0ZURhdGFTdG9yZVNldFJlc291cmNlTG9hZFN0YXRpc3RpY3NGaXJzdFBhcnR5SG9z
dENOQU1FRG9tYWluRm9yVGVzdGluZyhXS1dlYnNpdGVEYXRhU3RvcmVSZWYgZGF0YVN0b3JlUmVm
LCBXS1N0cmluZ1JlZiBmaXJzdFBhcnR5VVJMU3RyaW5nLCBXS1N0cmluZ1JlZiBjbmFtZVVSTFN0
cmluZywgdm9pZCogY29udGV4dCwgV0tXZWJzaXRlRGF0YVN0b3JlU2V0UmVzb3VyY2VMb2FkU3Rh
dGlzdGljc0ZpcnN0UGFydHlIb3N0Q05BTUVEb21haW5Gb3JUZXN0aW5nRnVuY3Rpb24gY29tcGxl
dGlvbkhhbmRsZXIpOwordHlwZWRlZiB2b2lkICgqV0tXZWJzaXRlRGF0YVN0b3JlU2V0UmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc1RoaXJkUGFydHlDTkFNRURvbWFpbkZvclRlc3RpbmdGdW5jdGlvbiko
dm9pZCogZnVuY3Rpb25Db250ZXh0KTsKK1dLX0VYUE9SVCB2b2lkIFdLV2Vic2l0ZURhdGFTdG9y
ZVNldFJlc291cmNlTG9hZFN0YXRpc3RpY3NUaGlyZFBhcnR5Q05BTUVEb21haW5Gb3JUZXN0aW5n
KFdLV2Vic2l0ZURhdGFTdG9yZVJlZiBkYXRhU3RvcmVSZWYsIFdLU3RyaW5nUmVmIGNuYW1lVVJM
U3RyaW5nLCB2b2lkKiBjb250ZXh0LCBXS1dlYnNpdGVEYXRhU3RvcmVTZXRSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzVGhpcmRQYXJ0eUNOQU1FRG9tYWluRm9yVGVzdGluZ0Z1bmN0aW9uIGNvbXBsZXRp
b25IYW5kbGVyKTsKIHR5cGVkZWYgdm9pZCAoKldLV2Vic2l0ZURhdGFTdG9yZVNldEFwcEJvdW5k
RG9tYWluc0ZvclRlc3RpbmdGdW5jdGlvbikodm9pZCogZnVuY3Rpb25Db250ZXh0KTsKIFdLX0VY
UE9SVCB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZVNldEFwcEJvdW5kRG9tYWluc0ZvclRlc3Rpbmco
V0tBcnJheVJlZiBvcmlnaW5VUkxzUmVmLCB2b2lkKiBjb250ZXh0LCBXS1dlYnNpdGVEYXRhU3Rv
cmVTZXRBcHBCb3VuZERvbWFpbnNGb3JUZXN0aW5nRnVuY3Rpb24gY29tcGxldGlvbkhhbmRsZXIp
OwogdHlwZWRlZiB2b2lkICgqV0tXZWJzaXRlRGF0YVN0b3JlU3RhdGlzdGljc1Jlc2V0VG9Db25z
aXN0ZW50U3RhdGVGdW5jdGlvbikodm9pZCogZnVuY3Rpb25Db250ZXh0KTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3Bw
CmluZGV4IDIyN2M1ZGM0YmNkNmZkMmM1NTI5NzMwOWM2ZjNlMmE4ZjhhOGYyN2IuLmQxMjUwMjBh
NTk1ZDI5ODg5NjkzYjQyMzBjMTAxZDgzMjQzYWUzYmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcApAQCAtMTE5
NSw2ICsxMTk1LDE1IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6c2V0VG9TYW1lU2l0ZVN0
cmljdENvb2tpZXNGb3JUZXN0aW5nKFBBTDo6U2Vzc2lvbklEIHNlCiAgICAgc2VuZFdpdGhBc3lu
Y1JlcGx5KE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzczo6U2V0VG9TYW1lU2l0ZVN0cmljdENvb2tp
ZXNGb3JUZXN0aW5nKHNlc3Npb25JRCwgZG9tYWluKSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxl
cikpOwogfQogCit2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OnNldEZpcnN0UGFydHlIb3N0Q05B
TUVEb21haW5Gb3JUZXN0aW5nKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgU3RyaW5n
JiBmaXJzdFBhcnR5SG9zdCwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIGNuYW1lRG9tYWluLCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgc2Vu
ZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzczo6U2V0Rmlyc3RQYXJ0eUhv
c3RDTkFNRURvbWFpbkZvclRlc3Rpbmcoc2Vzc2lvbklELCBmaXJzdFBhcnR5SG9zdCwgY25hbWVE
b21haW4pLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7Cit9CisKK3ZvaWQgTmV0d29ya1By
b2Nlc3NQcm94eTo6c2V0VGhpcmRQYXJ0eUNOQU1FRG9tYWluRm9yVGVzdGluZyhQQUw6OlNlc3Np
b25JRCBzZXNzaW9uSUQsIGNvbnN0IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiBkb21haW4s
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBz
ZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzOjpTZXRUaGlyZFBhcnR5
Q05BTUVEb21haW5Gb3JUZXN0aW5nKHNlc3Npb25JRCwgZG9tYWluKSwgV1RGTW92ZShjb21wbGV0
aW9uSGFuZGxlcikpOworfQogdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpzZXREb21haW5zV2l0
aFVzZXJJbnRlcmFjdGlvbihIYXNoU2V0PFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluPiYmIGRv
bWFpbnMpCiB7CiAgICAgcHJvY2Vzc1Bvb2woKS5zZXREb21haW5zV2l0aFVzZXJJbnRlcmFjdGlv
bihXVEZNb3ZlKGRvbWFpbnMpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
TmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmgKaW5kZXggODU0NTAyY2JjNmVkYTRhNjAwZmM4
MWIxYmMyZTAwMWM2NjM4ZGE0Mi4uYTQwOTQwNDE2NTA4NWEyOGY2MjgwNTgyZjFmNDA1MjRiNzk1
ZDk0MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3Jr
UHJvY2Vzc1Byb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3
b3JrUHJvY2Vzc1Byb3h5LmgKQEAgLTE4NSw2ICsxODUsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBz
ZXRTaG91bGRFbmJsZVNhbWVTaXRlU3RyaWN0RW5mb3JjZW1lbnRGb3JUZXN0aW5nKFBBTDo6U2Vz
c2lvbklELCBXZWJDb3JlOjpTYW1lU2l0ZVN0cmljdEVuZm9yY2VtZW50RW5hYmxlZCwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKICAgICB2b2lkIHNldEZpcnN0UGFydHlXZWJzaXRlRGF0
YVJlbW92YWxNb2RlRm9yVGVzdGluZyhQQUw6OlNlc3Npb25JRCwgV2ViQ29yZTo6Rmlyc3RQYXJ0
eVdlYnNpdGVEYXRhUmVtb3ZhbE1vZGUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAg
ICAgdm9pZCBzZXRUb1NhbWVTaXRlU3RyaWN0Q29va2llc0ZvclRlc3RpbmcoUEFMOjpTZXNzaW9u
SUQsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYm
KTsKKyAgICB2b2lkIHNldEZpcnN0UGFydHlIb3N0Q05BTUVEb21haW5Gb3JUZXN0aW5nKFBBTDo6
U2Vzc2lvbklELCBjb25zdCBTdHJpbmcmIGZpcnN0UGFydHlIb3N0LCBjb25zdCBSZWdpc3RyYWJs
ZURvbWFpbiYgY25hbWVEb21haW4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CisgICAg
dm9pZCBzZXRUaGlyZFBhcnR5Q05BTUVEb21haW5Gb3JUZXN0aW5nKFBBTDo6U2Vzc2lvbklELCBj
b25zdCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
KT4mJik7CiAgICAgdm9pZCBzZXREb21haW5zV2l0aFVzZXJJbnRlcmFjdGlvbihIYXNoU2V0PFdl
YkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluPiYmKTsKICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAKaW5kZXggNjMzZGJmMmExMDQ5MTk1NTkyNjQ5OTdi
NzgzMTg3Y2E1MjFmNGQ4Yy4uNmQ2YjM0ZDdhZmRmNGNlNjQwNTljMDZmZDFjODhkNTBhYzY4NmM3
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcApAQCAtNjAx
LDYgKzYwMSw3IEBAIE5ldHdvcmtQcm9jZXNzUHJveHkmIFdlYlByb2Nlc3NQb29sOjplbnN1cmVO
ZXR3b3JrUHJvY2VzcyhXZWJzaXRlRGF0YVN0b3JlKiB3aXRoCiAjaWYgRU5BQkxFKFJFU09VUkNF
X0xPQURfU1RBVElTVElDUykKICAgICBXZWJDb3JlOjpUaGlyZFBhcnR5Q29va2llQmxvY2tpbmdN
b2RlIHRoaXJkUGFydHlDb29raWVCbG9ja2luZ01vZGUgPSBXZWJDb3JlOjpUaGlyZFBhcnR5Q29v
a2llQmxvY2tpbmdNb2RlOjpBbGw7CiAgICAgV2ViQ29yZTo6U2FtZVNpdGVTdHJpY3RFbmZvcmNl
bWVudEVuYWJsZWQgc2FtZVNpdGVTdHJpY3RFbmZvcmNlbWVudEVuYWJsZWQgPSBXZWJDb3JlOjpT
YW1lU2l0ZVN0cmljdEVuZm9yY2VtZW50RW5hYmxlZDo6Tm87CisgICAgV2ViQ29yZTo6Q05BTUVD
bG9ha2luZ01pdGlnYXRpb25FbmFibGVkIGNuYW1lQ2xvYWtpbmdNaXRpZ2F0aW9uRW5hYmxlZCA9
IFdlYkNvcmU6OkNOQU1FQ2xvYWtpbmdNaXRpZ2F0aW9uRW5hYmxlZDo6Tm87CiAjZW5kaWYKICAg
ICBXZWJDb3JlOjpGaXJzdFBhcnR5V2Vic2l0ZURhdGFSZW1vdmFsTW9kZSBmaXJzdFBhcnR5V2Vi
c2l0ZURhdGFSZW1vdmFsTW9kZSA9IFdlYkNvcmU6OkZpcnN0UGFydHlXZWJzaXRlRGF0YVJlbW92
YWxNb2RlOjpBbGxCdXRDb29raWVzOwogICAgIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIHN0
YW5kYWxvbmVBcHBsaWNhdGlvbkRvbWFpbjsKQEAgLTYzNCw2ICs2MzUsNyBAQCBOZXR3b3JrUHJv
Y2Vzc1Byb3h5JiBXZWJQcm9jZXNzUG9vbDo6ZW5zdXJlTmV0d29ya1Byb2Nlc3MoV2Vic2l0ZURh
dGFTdG9yZSogd2l0aAogI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCiAgICAg
ICAgICAgICB0aGlyZFBhcnR5Q29va2llQmxvY2tpbmdNb2RlID0gbmV0d29ya1Nlc3Npb25QYXJh
bWV0ZXJzLnJlc291cmNlTG9hZFN0YXRpc3RpY3NQYXJhbWV0ZXJzLnRoaXJkUGFydHlDb29raWVC
bG9ja2luZ01vZGU7CiAgICAgICAgICAgICBzYW1lU2l0ZVN0cmljdEVuZm9yY2VtZW50RW5hYmxl
ZCA9IG5ldHdvcmtTZXNzaW9uUGFyYW1ldGVycy5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGFyYW1l
dGVycy5zYW1lU2l0ZVN0cmljdEVuZm9yY2VtZW50RW5hYmxlZDsKKyAgICAgICAgICAgIGNuYW1l
Q2xvYWtpbmdNaXRpZ2F0aW9uRW5hYmxlZCA9IG5ldHdvcmtTZXNzaW9uUGFyYW1ldGVycy5yZXNv
dXJjZUxvYWRTdGF0aXN0aWNzUGFyYW1ldGVycy5jbmFtZUNsb2FraW5nTWl0aWdhdGlvbkVuYWJs
ZWQ7CiAjZW5kaWYKICAgICAgICAgICAgIGZpcnN0UGFydHlXZWJzaXRlRGF0YVJlbW92YWxNb2Rl
ID0gbmV0d29ya1Nlc3Npb25QYXJhbWV0ZXJzLnJlc291cmNlTG9hZFN0YXRpc3RpY3NQYXJhbWV0
ZXJzLmZpcnN0UGFydHlXZWJzaXRlRGF0YVJlbW92YWxNb2RlOwogICAgICAgICAgICAgc3RhbmRh
bG9uZUFwcGxpY2F0aW9uRG9tYWluID0gbmV0d29ya1Nlc3Npb25QYXJhbWV0ZXJzLnJlc291cmNl
TG9hZFN0YXRpc3RpY3NQYXJhbWV0ZXJzLnN0YW5kYWxvbmVBcHBsaWNhdGlvbkRvbWFpbjsKQEAg
LTY2MSw2ICs2NjMsNyBAQCBOZXR3b3JrUHJvY2Vzc1Byb3h5JiBXZWJQcm9jZXNzUG9vbDo6ZW5z
dXJlTmV0d29ya1Byb2Nlc3MoV2Vic2l0ZURhdGFTdG9yZSogd2l0aAogI2lmIEVOQUJMRShSRVNP
VVJDRV9MT0FEX1NUQVRJU1RJQ1MpCiAgICAgICAgICAgICB0aGlyZFBhcnR5Q29va2llQmxvY2tp
bmdNb2RlID0gbmV0d29ya1Nlc3Npb25QYXJhbWV0ZXJzLnJlc291cmNlTG9hZFN0YXRpc3RpY3NQ
YXJhbWV0ZXJzLnRoaXJkUGFydHlDb29raWVCbG9ja2luZ01vZGU7CiAgICAgICAgICAgICBzYW1l
U2l0ZVN0cmljdEVuZm9yY2VtZW50RW5hYmxlZCA9IG5ldHdvcmtTZXNzaW9uUGFyYW1ldGVycy5y
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGFyYW1ldGVycy5zYW1lU2l0ZVN0cmljdEVuZm9yY2VtZW50
RW5hYmxlZDsKKyAgICAgICAgICAgIGNuYW1lQ2xvYWtpbmdNaXRpZ2F0aW9uRW5hYmxlZCA9IG5l
dHdvcmtTZXNzaW9uUGFyYW1ldGVycy5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGFyYW1ldGVycy5j
bmFtZUNsb2FraW5nTWl0aWdhdGlvbkVuYWJsZWQ7CiAjZW5kaWYKICAgICAgICAgICAgIGZpcnN0
UGFydHlXZWJzaXRlRGF0YVJlbW92YWxNb2RlID0gbmV0d29ya1Nlc3Npb25QYXJhbWV0ZXJzLnJl
c291cmNlTG9hZFN0YXRpc3RpY3NQYXJhbWV0ZXJzLmZpcnN0UGFydHlXZWJzaXRlRGF0YVJlbW92
YWxNb2RlOwogICAgICAgICAgICAgc3RhbmRhbG9uZUFwcGxpY2F0aW9uRG9tYWluID0gbmV0d29y
a1Nlc3Npb25QYXJhbWV0ZXJzLnJlc291cmNlTG9hZFN0YXRpc3RpY3NQYXJhbWV0ZXJzLnN0YW5k
YWxvbmVBcHBsaWNhdGlvbkRvbWFpbjsKQEAgLTcwNCw2ICs3MDcsNyBAQCBOZXR3b3JrUHJvY2Vz
c1Byb3h5JiBXZWJQcm9jZXNzUG9vbDo6ZW5zdXJlTmV0d29ya1Byb2Nlc3MoV2Vic2l0ZURhdGFT
dG9yZSogd2l0aAogI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCiAgICAgICAg
IHRoaXJkUGFydHlDb29raWVCbG9ja2luZ01vZGUsCiAgICAgICAgIHNhbWVTaXRlU3RyaWN0RW5m
b3JjZW1lbnRFbmFibGVkLAorICAgICAgICBjbmFtZUNsb2FraW5nTWl0aWdhdGlvbkVuYWJsZWQs
CiAjZW5kaWYKICAgICAgICAgZmlyc3RQYXJ0eVdlYnNpdGVEYXRhUmVtb3ZhbE1vZGUsCiAgICAg
ICAgIHN0YW5kYWxvbmVBcHBsaWNhdGlvbkRvbWFpbiwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL0NvY29hL1dlYnNpdGVEYXRhU3RvcmVDb2NvYS5tbSBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL0NvY29hL1dlYnNpdGVEYXRhU3Rv
cmVDb2NvYS5tbQppbmRleCBmYjNiMjFmZDkzNjI4YTM0YWUzZDRkZWNmZDRlNzk3Y2Y2NTMxZjY1
Li4yNTdmYjdhMjkwMWFjZWZlNGNkYWQzMGJlMjRhMGI2MDA5MzE2M2M2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9Db2NvYS9XZWJzaXRlRGF0YVN0b3Jl
Q29jb2EubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvQ29jb2Ev
V2Vic2l0ZURhdGFTdG9yZUNvY29hLm1tCkBAIC05NCw2ICs5NCw3IEBAIHZvaWQgV2Vic2l0ZURh
dGFTdG9yZTo6cGxhdGZvcm1TZXROZXR3b3JrUGFyYW1ldGVycyhXZWJzaXRlRGF0YVN0b3JlUGFy
YW1ldGVycyYKICAgICBib29sIHNob3VsZExvZ0Nvb2tpZUluZm9ybWF0aW9uID0gZmFsc2U7CiAg
ICAgYm9vbCBlbmFibGVSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGVidWdNb2RlID0gZmFsc2U7CiAg
ICAgYXV0byBzYW1lU2l0ZVN0cmljdEVuZm9yY2VtZW50RW5hYmxlZCA9IFdlYkNvcmU6OlNhbWVT
aXRlU3RyaWN0RW5mb3JjZW1lbnRFbmFibGVkOjpObzsKKyAgICBhdXRvIGNuYW1lQ2xvYWtpbmdN
aXRpZ2F0aW9uRW5hYmxlZCA9IFdlYkNvcmU6OkNOQU1FQ2xvYWtpbmdNaXRpZ2F0aW9uRW5hYmxl
ZDo6Tm87CiAgICAgYXV0byBmaXJzdFBhcnR5V2Vic2l0ZURhdGFSZW1vdmFsTW9kZSA9IFdlYkNv
cmU6OkZpcnN0UGFydHlXZWJzaXRlRGF0YVJlbW92YWxNb2RlOjpBbGxCdXRDb29raWVzOwogICAg
IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIHJlc291cmNlTG9hZFN0YXRpc3RpY3NNYW51YWxQ
cmV2YWxlbnRSZXNvdXJjZSB7IH07CiAjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElD
UykKQEAgLTEwMiw2ICsxMDMsOSBAQCB2b2lkIFdlYnNpdGVEYXRhU3RvcmU6OnBsYXRmb3JtU2V0
TmV0d29ya1BhcmFtZXRlcnMoV2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRlcnMmCiAgICAgaWYgKFtk
ZWZhdWx0cyBib29sRm9yS2V5OltOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAiRXhwZXJpbWVu
dGFsJUAiLCBXZWJQcmVmZXJlbmNlc0tleTo6aXNTYW1lU2l0ZVN0cmljdEVuZm9yY2VtZW50RW5h
YmxlZEtleSgpLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCldXSkKICAgICAgICAgc2FtZVNpdGVTdHJp
Y3RFbmZvcmNlbWVudEVuYWJsZWQgPSBXZWJDb3JlOjpTYW1lU2l0ZVN0cmljdEVuZm9yY2VtZW50
RW5hYmxlZDo6WWVzOwogCisgICAgaWYgKFtkZWZhdWx0cyBib29sRm9yS2V5OltOU1N0cmluZyBz
dHJpbmdXaXRoRm9ybWF0OkAiRXhwZXJpbWVudGFsJUAiLCBXZWJQcmVmZXJlbmNlc0tleTo6aXND
TkFNRUNsb2FraW5nTWl0aWdhdGlvbkVuYWJsZWRLZXkoKS5jcmVhdGVDRlN0cmluZygpLmdldCgp
XV0pCisgICAgICAgIGNuYW1lQ2xvYWtpbmdNaXRpZ2F0aW9uRW5hYmxlZCA9IFdlYkNvcmU6OkNO
QU1FQ2xvYWtpbmdNaXRpZ2F0aW9uRW5hYmxlZDo6WWVzOworCiAgICAgaWYgKFtkZWZhdWx0cyBi
b29sRm9yS2V5OltOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAiRXhwZXJpbWVudGFsJUAiLCBX
ZWJQcmVmZXJlbmNlc0tleTo6aXNGaXJzdFBhcnR5V2Vic2l0ZURhdGFSZW1vdmFsRGlzYWJsZWRL
ZXkoKS5jcmVhdGVDRlN0cmluZygpLmdldCgpXV0pCiAgICAgICAgIGZpcnN0UGFydHlXZWJzaXRl
RGF0YVJlbW92YWxNb2RlID0gV2ViQ29yZTo6Rmlyc3RQYXJ0eVdlYnNpdGVEYXRhUmVtb3ZhbE1v
ZGU6Ok5vbmU7CiAgICAgZWxzZSB7CkBAIC0xNzgsNiArMTgyLDcgQEAgdm9pZCBXZWJzaXRlRGF0
YVN0b3JlOjpwbGF0Zm9ybVNldE5ldHdvcmtQYXJhbWV0ZXJzKFdlYnNpdGVEYXRhU3RvcmVQYXJh
bWV0ZXJzJgogICAgIHBhcmFtZXRlcnMubmV0d29ya1Nlc3Npb25QYXJhbWV0ZXJzLnJlc291cmNl
TG9hZFN0YXRpc3RpY3NQYXJhbWV0ZXJzLnNob3VsZEluY2x1ZGVMb2NhbGhvc3QgPSBzaG91bGRJ
bmNsdWRlTG9jYWxob3N0SW5SZXNvdXJjZUxvYWRTdGF0aXN0aWNzOwogICAgIHBhcmFtZXRlcnMu
bmV0d29ya1Nlc3Npb25QYXJhbWV0ZXJzLnJlc291cmNlTG9hZFN0YXRpc3RpY3NQYXJhbWV0ZXJz
LmVuYWJsZURlYnVnTW9kZSA9IGVuYWJsZVJlc291cmNlTG9hZFN0YXRpc3RpY3NEZWJ1Z01vZGU7
CiAgICAgcGFyYW1ldGVycy5uZXR3b3JrU2Vzc2lvblBhcmFtZXRlcnMucmVzb3VyY2VMb2FkU3Rh
dGlzdGljc1BhcmFtZXRlcnMuc2FtZVNpdGVTdHJpY3RFbmZvcmNlbWVudEVuYWJsZWQgPSBzYW1l
U2l0ZVN0cmljdEVuZm9yY2VtZW50RW5hYmxlZDsKKyAgICBwYXJhbWV0ZXJzLm5ldHdvcmtTZXNz
aW9uUGFyYW1ldGVycy5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGFyYW1ldGVycy5jbmFtZUNsb2Fr
aW5nTWl0aWdhdGlvbkVuYWJsZWQgPSBjbmFtZUNsb2FraW5nTWl0aWdhdGlvbkVuYWJsZWQ7CiAg
ICAgcGFyYW1ldGVycy5uZXR3b3JrU2Vzc2lvblBhcmFtZXRlcnMucmVzb3VyY2VMb2FkU3RhdGlz
dGljc1BhcmFtZXRlcnMuZmlyc3RQYXJ0eVdlYnNpdGVEYXRhUmVtb3ZhbE1vZGUgPSBmaXJzdFBh
cnR5V2Vic2l0ZURhdGFSZW1vdmFsTW9kZTsKICAgICBwYXJhbWV0ZXJzLm5ldHdvcmtTZXNzaW9u
UGFyYW1ldGVycy5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGFyYW1ldGVycy5zdGFuZGFsb25lQXBw
bGljYXRpb25Eb21haW4gPSBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiB7IG1fY29uZmlndXJh
dGlvbi0+c3RhbmRhbG9uZUFwcGxpY2F0aW9uVVJMKCkgfTsKICAgICBwYXJhbWV0ZXJzLm5ldHdv
cmtTZXNzaW9uUGFyYW1ldGVycy5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGFyYW1ldGVycy5tYW51
YWxQcmV2YWxlbnRSZXNvdXJjZSA9IFdURk1vdmUocmVzb3VyY2VMb2FkU3RhdGlzdGljc01hbnVh
bFByZXZhbGVudFJlc291cmNlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5jcHAKaW5kZXggMWRhYWM1NDAyMDU4MWY3
YWE3ZjgxOWI0YjQ1MDJjZTZjNzk4Yjg5Mi4uNDg4ODcyM2UwYmRhNTc4MzhjMjg4NzlkY2NmMjdl
MWUzYjQxNGYyMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURh
dGEvV2Vic2l0ZURhdGFTdG9yZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
c2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5jcHAKQEAgLTE5MzYsNiArMTkzNiwzMiBAQCB2b2lk
IFdlYnNpdGVEYXRhU3RvcmU6OnNldFJlc291cmNlTG9hZFN0YXRpc3RpY3NUb1NhbWVTaXRlU3Ry
aWN0Q29va2llc0ZvclRlc3RpbgogICAgICAgICAgICAgbmV0d29ya1Byb2Nlc3MtPnNldFRvU2Ft
ZVNpdGVTdHJpY3RDb29raWVzRm9yVGVzdGluZyhtX3Nlc3Npb25JRCwgV2ViQ29yZTo6UmVnaXN0
cmFibGVEb21haW4geyB1cmwgfSwgW2NhbGxiYWNrQWdncmVnYXRvcl0geyB9KTsKICAgICB9CiB9
CisKK3ZvaWQgV2Vic2l0ZURhdGFTdG9yZTo6c2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0ZpcnN0
UGFydHlIb3N0Q05BTUVEb21haW5Gb3JUZXN0aW5nKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eVVSTCwg
Y29uc3QgVVJMJiBjbmFtZVVSTCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRp
b25IYW5kbGVyKQoreworICAgIGlmIChjbmFtZVVSTC5ob3N0KCkgIT0gInRlc3R3ZWJraXQub3Jn
IiAmJiBjbmFtZVVSTC5ob3N0KCkgIT0gIjNyZHBhcnR5dGVzdHdlYmtpdC5vcmciKSB7CisgICAg
ICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBh
dXRvIGNhbGxiYWNrQWdncmVnYXRvciA9IENhbGxiYWNrQWdncmVnYXRvcjo6Y3JlYXRlKFdURk1v
dmUoY29tcGxldGlvbkhhbmRsZXIpKTsKKworICAgIGZvciAoYXV0byYgcHJvY2Vzc1Bvb2wgOiBw
cm9jZXNzUG9vbHMoKSkKKyAgICAgICAgcHJvY2Vzc1Bvb2wtPmVuc3VyZU5ldHdvcmtQcm9jZXNz
KCkuc2V0Rmlyc3RQYXJ0eUhvc3RDTkFNRURvbWFpbkZvclRlc3RpbmcobV9zZXNzaW9uSUQsIGZp
cnN0UGFydHlVUkwuaG9zdCgpLnRvU3RyaW5nKCksIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWlu
IHsgY25hbWVVUkwgfSwgW2NhbGxiYWNrQWdncmVnYXRvcl0geyB9KTsKK30KKwordm9pZCBXZWJz
aXRlRGF0YVN0b3JlOjpzZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzVGhpcmRQYXJ0eUNOQU1FRG9t
YWluRm9yVGVzdGluZyhjb25zdCBVUkwmIGNuYW1lVVJMLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgaWYgKGNuYW1lVVJMLmhvc3QoKSAhPSAi
dGVzdHdlYmtpdC5vcmciICYmIGNuYW1lVVJMLmhvc3QoKSAhPSAiM3JkcGFydHl0ZXN0d2Via2l0
Lm9yZyIpIHsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKKyAgICAgICAgcmV0dXJuOwor
ICAgIH0KKworICAgIGF1dG8gY2FsbGJhY2tBZ2dyZWdhdG9yID0gQ2FsbGJhY2tBZ2dyZWdhdG9y
OjpjcmVhdGUoV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOworCisgICAgZm9yIChhdXRvJiBw
cm9jZXNzUG9vbCA6IHByb2Nlc3NQb29scygpKQorICAgICAgICBwcm9jZXNzUG9vbC0+ZW5zdXJl
TmV0d29ya1Byb2Nlc3MoKS5zZXRUaGlyZFBhcnR5Q05BTUVEb21haW5Gb3JUZXN0aW5nKG1fc2Vz
c2lvbklELCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiB7IGNuYW1lVVJMIH0sIFtjYWxsYmFj
a0FnZ3JlZ2F0b3JdIHsgfSk7Cit9CiAjZW5kaWYgLy8gRU5BQkxFKFJFU09VUkNFX0xPQURfU1RB
VElTVElDUykKIAogdm9pZCBXZWJzaXRlRGF0YVN0b3JlOjpzZXRDYWNoZU1heEFnZUNhcEZvclBy
ZXZhbGVudFJlc291cmNlcyhTZWNvbmRzIHNlY29uZHMsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKQEAgLTIyODMsNiArMjMwOSw3IEBAIFdlYnNpdGVEYXRh
U3RvcmVQYXJhbWV0ZXJzIFdlYnNpdGVEYXRhU3RvcmU6OnBhcmFtZXRlcnMoKQogI2lmIEVOQUJM
RShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCiAgICAgICAgIHRoaXJkUGFydHlDb29raWVCbG9j
a2luZ01vZGUoKSwKICAgICAgICAgV2ViQ29yZTo6U2FtZVNpdGVTdHJpY3RFbmZvcmNlbWVudEVu
YWJsZWQ6Ok5vLAorICAgICAgICBXZWJDb3JlOjpDTkFNRUNsb2FraW5nTWl0aWdhdGlvbkVuYWJs
ZWQ6Ok5vLAogI2VuZGlmCiAgICAgICAgIGZpcnN0UGFydHlXZWJzaXRlRGF0YVJlbW92YWxNb2Rl
LAogICAgICAgICBXVEZNb3ZlKHN0YW5kYWxvbmVBcHBsaWNhdGlvbkRvbWFpbiksCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3Jl
LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3Jl
LmgKaW5kZXggMGE3ZjgzZDJiN2RjNjM1MzhjODU3ODgwMGU2MTdhZmZjNWQzZjE5ZC4uNGVjMTNl
MTZmZTQ4MmQyNmEyZWFmYTMxMjNlMzIzM2E3MzdjYjEyYiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuaApAQCAtMjAz
LDYgKzIwMyw4IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldFJlc291cmNlTG9hZFN0YXRpc3RpY3NT
aG91bGRFbmJsZVNhbWVTaXRlU3RyaWN0RW5mb3JjZW1lbnRGb3JUZXN0aW5nKGJvb2wgZW5hYmxl
ZCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKICAgICB2b2lkIHNldFJlc291cmNlTG9h
ZFN0YXRpc3RpY3NGaXJzdFBhcnR5V2Vic2l0ZURhdGFSZW1vdmFsTW9kZUZvclRlc3RpbmcoYm9v
bCBlbmFibGVkLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogICAgIHZvaWQgc2V0UmVz
b3VyY2VMb2FkU3RhdGlzdGljc1RvU2FtZVNpdGVTdHJpY3RDb29raWVzRm9yVGVzdGluZyhjb25z
dCBVUkwmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOworICAgIHZvaWQgc2V0UmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc0ZpcnN0UGFydHlIb3N0Q05BTUVEb21haW5Gb3JUZXN0aW5nKGNvbnN0
IFVSTCYgZmlyc3RQYXJ0eVVSTCwgY29uc3QgVVJMJiBjbmFtZVVSTCwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZCgpPiYmKTsKKyAgICB2b2lkIHNldFJlc291cmNlTG9hZFN0YXRpc3RpY3NUaGlyZFBh
cnR5Q05BTUVEb21haW5Gb3JUZXN0aW5nKGNvbnN0IFVSTCYsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoKT4mJik7CiAgICAgV2ViQ29yZTo6VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9kZSB0aGly
ZFBhcnR5Q29va2llQmxvY2tpbmdNb2RlKCkgY29uc3Q7CiAgICAgYm9vbCBpc0l0cFN0YXRlRXhw
bGljaXRseVNldCgpIGNvbnN0IHsgcmV0dXJuIG1faXNJdHBTdGF0ZUV4cGxpY2l0bHlTZXQ7IH0K
ICAgICB2b2lkIHVzZUV4cGxpY2l0SVRQU3RhdGUoKSB7IG1faXNJdHBTdGF0ZUV4cGxpY2l0bHlT
ZXQgPSB0cnVlOyB9CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VM
b2cKaW5kZXggZjc1NGFkOTRiODI5MzE0NmZmZDY1Yzk0NTBhZmMzMDY2ZTc5NzljMS4uMzVmNzYw
YWM1ZmJhZTkxNThjYzE1OGU1MWIxOWU4YTJjYjg4YTAyNiAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hh
bmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM1IEBACisyMDIwLTA4LTA3
ICBKb2huIFdpbGFuZGVyICA8d2lsYW5kZXJAYXBwbGUuY29tPgorCisgICAgICAgIEV4cGVyaW1l
bnRhbDogQ2FwIHRoZSBleHBpcnkgb2YgcGVyc2lzdGVudCBjb29raWVzIHNldCBpbiAzcmQtcGFy
dHkgQ05BTUUgY2xvYWtlZCBIVFRQIHJlc3BvbnNlcworICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE1MjAxCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS81
NzQ1NDYzMz4KKworICAgICAgICBSZXZpZXdlZCBieSBCcmVudCBGdWxnaGFtLiBBbHNvIHJldmll
d2VkIGFuZCBjb21tZW50ZWQgb24gYnkgQ2hyaXMgRHVtZXosIEppdGVuIE1laHRhLCBTYW0gV2Vp
bmlnLCBhbmQgQWxleCBDaHJpc3RlbnNlbi4KKworICAgICAgICBUaGlzIHBhdGNoIGFkZHMgdHdv
IFRlc3RSdW5uZXIgZnVuY3Rpb25zIHdoaWNoIGFsbG93cyBmb3IgdGVzdGluZworICAgICAgICB3
aXRoIGRhdGEgdGhhdCB3b3VsZCBvdGhlcndpc2UgY29tZSBmcm9tIEROUyByZXNvbHV0aW9uOgor
ICAgICAgICAtIHN0YXRpc3RpY3NTZXRGaXJzdFBhcnR5SG9zdENOQU1FRG9tYWluKCkKKyAgICAg
ICAgLSBzdGF0aXN0aWNzU2V0VGhpcmRQYXJ0eUNOQU1FRG9tYWluKCkKKworICAgICAgICAqIFdl
YktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQmluZGluZ3MvVGVzdFJ1bm5lci5pZGw6Cisg
ICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5j
cHA6CisgICAgICAgIChXVFI6OkluamVjdGVkQnVuZGxlOjpkaWRSZWNlaXZlTWVzc2FnZVRvUGFn
ZSk6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVy
LmNwcDoKKyAgICAgICAgKFdUUjo6VGVzdFJ1bm5lcjo6c3RhdGlzdGljc1NldEZpcnN0UGFydHlI
b3N0Q05BTUVEb21haW4pOgorICAgICAgICAoV1RSOjpUZXN0UnVubmVyOjpzdGF0aXN0aWNzQ2Fs
bERpZFNldEZpcnN0UGFydHlIb3N0Q05BTUVEb21haW5DYWxsYmFjayk6CisgICAgICAgIChXVFI6
OlRlc3RSdW5uZXI6OnN0YXRpc3RpY3NTZXRUaGlyZFBhcnR5Q05BTUVEb21haW4pOgorICAgICAg
ICAoV1RSOjpUZXN0UnVubmVyOjpzdGF0aXN0aWNzQ2FsbERpZFNldFRoaXJkUGFydHlDTkFNRURv
bWFpbkNhbGxiYWNrKToKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxl
L1Rlc3RSdW5uZXIuaDoKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVy
LmNwcDoKKyAgICAgICAgKFdUUjo6VGVzdENvbnRyb2xsZXI6OnNldFN0YXRpc3RpY3NGaXJzdFBh
cnR5SG9zdENOQU1FRG9tYWluKToKKyAgICAgICAgKFdUUjo6VGVzdENvbnRyb2xsZXI6OnNldFN0
YXRpc3RpY3NUaGlyZFBhcnR5Q05BTUVEb21haW4pOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5u
ZXIvVGVzdENvbnRyb2xsZXIuaDoKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZv
Y2F0aW9uLmNwcDoKKyAgICAgICAgKFdUUjo6VGVzdEludm9jYXRpb246OmRpZFJlY2VpdmVNZXNz
YWdlRnJvbUluamVjdGVkQnVuZGxlKToKKyAgICAgICAgKFdUUjo6VGVzdEludm9jYXRpb246OmRp
ZFNldEZpcnN0UGFydHlIb3N0Q05BTUVEb21haW4pOgorICAgICAgICAoV1RSOjpUZXN0SW52b2Nh
dGlvbjo6ZGlkU2V0VGhpcmRQYXJ0eUNOQU1FRG9tYWluKToKKyAgICAgICAgKiBXZWJLaXRUZXN0
UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmg6CisKIDIwMjAtMDgtMDcgIEFha2FzaCBKYWluICA8YWFr
YXNoX2phaW5AYXBwbGUuY29tPgogCiAgICAgICAgIERvIG5vdCBlbWFpbCBib3Qgd2F0Y2hlciB3
aGVuIGZpcnN0IHJ1biBvZiBsYXlvdXQgdGVzdHMgZXhjZWVkcyBmYWlsdXJlIGxpbWl0CmRpZmYg
LS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0JpbmRpbmdzL1Rl
c3RSdW5uZXIuaWRsIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9CaW5k
aW5ncy9UZXN0UnVubmVyLmlkbAppbmRleCA2Yjg5ODBmNDkyODJiNTczZTEzZjA0NWNmZTBkNTZi
YzY0NDdhZmJhLi5kYzYzYzVkZDhiYjRkODZiZTNmNjI3MWFkYTI4OGY4N2ZkNDIwYTE5IDEwMDY0
NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0JpbmRpbmdzL1Rl
c3RSdW5uZXIuaWRsCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUv
QmluZGluZ3MvVGVzdFJ1bm5lci5pZGwKQEAgLTM0Nyw2ICszNDcsOCBAQCBpbnRlcmZhY2UgVGVz
dFJ1bm5lciB7CiAgICAgdm9pZCBzZXRTdGF0aXN0aWNzU2hvdWxkQmxvY2tUaGlyZFBhcnR5Q29v
a2llcyhib29sZWFuIHZhbHVlLCBvYmplY3QgY2FsbGJhY2ssIG9wdGlvbmFsIGJvb2xlYW4gb25s
eU9uU2l0ZXNXaXRob3V0VXNlckludGVyYWN0aW9uKTsKICAgICB2b2lkIHNldFN0YXRpc3RpY3NG
aXJzdFBhcnR5V2Vic2l0ZURhdGFSZW1vdmFsTW9kZShib29sZWFuIHZhbHVlLCBvYmplY3QgY2Fs
bGJhY2spOwogICAgIHZvaWQgc3RhdGlzdGljc1NldFRvU2FtZVNpdGVTdHJpY3RDb29raWVzKERP
TVN0cmluZyBob3N0TmFtZSwgb2JqZWN0IGNhbGxiYWNrKTsKKyAgICB2b2lkIHN0YXRpc3RpY3NT
ZXRGaXJzdFBhcnR5SG9zdENOQU1FRG9tYWluKERPTVN0cmluZyBmaXJzdFBhcnR5VVJMU3RyaW5n
LCBET01TdHJpbmcgY25hbWVVUkxTdHJpbmcsIG9iamVjdCBjYWxsYmFjayk7CisgICAgdm9pZCBz
dGF0aXN0aWNzU2V0VGhpcmRQYXJ0eUNOQU1FRG9tYWluKERPTVN0cmluZyBjbmFtZVVSTFN0cmlu
Zywgb2JqZWN0IGNhbGxiYWNrKTsKICAgICB2b2lkIGxvYWRlZFRoaXJkUGFydHlEb21haW5zKG9i
amVjdCBjYWxsYmFjayk7CiAKICAgICAvLyBJbmplY3RlZCBidW5kbGUgZm9ybSBjbGllbnQuCmRp
ZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0luamVjdGVk
QnVuZGxlLmNwcCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0
ZWRCdW5kbGUuY3BwCmluZGV4IGUyNTRjYTcyZGJjZjMxMDI3NDFmY2YxN2MxNTI1NTQyNmQwZjVm
MGUuLmFmNzQzYjYzZThmZjBhNDY2ZmQ0YTg5YWUwODUzNmJmYzBkOGFiNTEgMTAwNjQ0Ci0tLSBh
L1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuY3Bw
CisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5k
bGUuY3BwCkBAIC0zNTksNiArMzU5LDE2IEBAIHZvaWQgSW5qZWN0ZWRCdW5kbGU6OmRpZFJlY2Vp
dmVNZXNzYWdlVG9QYWdlKFdLQnVuZGxlUGFnZVJlZiBwYWdlLCBXS1N0cmluZ1JlZiBtCiAgICAg
ICAgIHJldHVybjsKICAgICB9CiAKKyAgICBpZiAoV0tTdHJpbmdJc0VxdWFsVG9VVEY4Q1N0cmlu
ZyhtZXNzYWdlTmFtZSwgIkNhbGxEaWRTZXRGaXJzdFBhcnR5SG9zdENOQU1FRG9tYWluIikpIHsK
KyAgICAgICAgbV90ZXN0UnVubmVyLT5zdGF0aXN0aWNzQ2FsbERpZFNldEZpcnN0UGFydHlIb3N0
Q05BTUVEb21haW5DYWxsYmFjaygpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgaWYg
KFdLU3RyaW5nSXNFcXVhbFRvVVRGOENTdHJpbmcobWVzc2FnZU5hbWUsICJDYWxsRGlkU2V0VGhp
cmRQYXJ0eUNOQU1FRG9tYWluIikpIHsKKyAgICAgICAgbV90ZXN0UnVubmVyLT5zdGF0aXN0aWNz
Q2FsbERpZFNldFRoaXJkUGFydHlDTkFNRURvbWFpbkNhbGxiYWNrKCk7CisgICAgICAgIHJldHVy
bjsKKyAgICB9CisKICAgICBpZiAoV0tTdHJpbmdJc0VxdWFsVG9VVEY4Q1N0cmluZyhtZXNzYWdl
TmFtZSwgIkNhbGxEaWRSZXNldFN0YXRpc3RpY3NUb0NvbnNpc3RlbnRTdGF0ZSIpKSB7CiAgICAg
ICAgIG1fdGVzdFJ1bm5lci0+c3RhdGlzdGljc0NhbGxEaWRSZXNldFRvQ29uc2lzdGVudFN0YXRl
Q2FsbGJhY2soKTsKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVz
dFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmNwcCBiL1Rvb2xzL1dlYktpdFRlc3RS
dW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5jcHAKaW5kZXggZDQzODZlNmY5ZjM1MGVl
MDE5ODZiOTIwMWI5MDNiODA0MDI2NjRhNy4uMjk2NzJmOWUxNTU5Y2EyZGUwYzY4OWE0NmMzZWEy
YzU2MDFiNjBlOCAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1
bmRsZS9UZXN0UnVubmVyLmNwcAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVk
QnVuZGxlL1Rlc3RSdW5uZXIuY3BwCkBAIC03NTgsNiArNzU4LDggQEAgZW51bSB7CiAgICAgU3Rh
dGlzdGljc0RpZFNldFNob3VsZEJsb2NrVGhpcmRQYXJ0eUNvb2tpZXNDYWxsYmFja0lELAogICAg
IFN0YXRpc3RpY3NEaWRTZXRGaXJzdFBhcnR5V2Vic2l0ZURhdGFSZW1vdmFsTW9kZUNhbGxiYWNr
SUQsCiAgICAgU3RhdGlzdGljc0RpZFNldFRvU2FtZVNpdGVTdHJpY3RDb29raWVzQ2FsbGJhY2tJ
RCwKKyAgICBTdGF0aXN0aWNzRGlkU2V0Rmlyc3RQYXJ0eUhvc3RDTkFNRURvbWFpbkNhbGxiYWNr
SUQsCisgICAgU3RhdGlzdGljc0RpZFNldFRoaXJkUGFydHlDTkFNRURvbWFpbkNhbGxiYWNrSUQs
CiAgICAgQWxsU3RvcmFnZUFjY2Vzc0VudHJpZXNDYWxsYmFja0lELAogICAgIExvYWRlZFRoaXJk
UGFydHlEb21haW5zQ2FsbGJhY2tJRCwKICAgICBEaWRSZW1vdmVBbGxTZXNzaW9uQ3JlZGVudGlh
bHNDYWxsYmFja0lELApAQCAtMjM2NCw2ICsyMzY2LDUyIEBAIHZvaWQgVGVzdFJ1bm5lcjo6c3Rh
dGlzdGljc0NhbGxEaWRTZXRUb1NhbWVTaXRlU3RyaWN0Q29va2llc0NhbGxiYWNrKCkKICAgICBj
YWxsVGVzdFJ1bm5lckNhbGxiYWNrKFN0YXRpc3RpY3NEaWRTZXRUb1NhbWVTaXRlU3RyaWN0Q29v
a2llc0NhbGxiYWNrSUQpOwogfQogCisKK3ZvaWQgVGVzdFJ1bm5lcjo6c3RhdGlzdGljc1NldEZp
cnN0UGFydHlIb3N0Q05BTUVEb21haW4oSlNTdHJpbmdSZWYgZmlyc3RQYXJ0eVVSTFN0cmluZywg
SlNTdHJpbmdSZWYgY25hbWVVUkxTdHJpbmcsIEpTVmFsdWVSZWYgY29tcGxldGlvbkhhbmRsZXIp
Cit7CisgICAgY2FjaGVUZXN0UnVubmVyQ2FsbGJhY2soU3RhdGlzdGljc0RpZFNldEZpcnN0UGFy
dHlIb3N0Q05BTUVEb21haW5DYWxsYmFja0lELCBjb21wbGV0aW9uSGFuZGxlcik7CisKKyAgICBW
ZWN0b3I8V0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+PiBrZXlzOworICAgIFZlY3RvcjxXS1JldGFp
blB0cjxXS1R5cGVSZWY+PiB2YWx1ZXM7CisgICAgCisgICAga2V5cy5hcHBlbmQoYWRvcHRXSyhX
S1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygiRmlyc3RQYXJ0eVVSTCIpKSk7CisgICAgdmFs
dWVzLmFwcGVuZChhZG9wdFdLKFdLU3RyaW5nQ3JlYXRlV2l0aEpTU3RyaW5nKGZpcnN0UGFydHlV
UkxTdHJpbmcpKSk7CisgICAgCisgICAga2V5cy5hcHBlbmQoYWRvcHRXSyhXS1N0cmluZ0NyZWF0
ZVdpdGhVVEY4Q1N0cmluZygiQ05BTUUiKSkpOworICAgIHZhbHVlcy5hcHBlbmQoYWRvcHRXSyhX
S1N0cmluZ0NyZWF0ZVdpdGhKU1N0cmluZyhjbmFtZVVSTFN0cmluZykpKTsKKyAgICAKKyAgICBW
ZWN0b3I8V0tTdHJpbmdSZWY+IHJhd0tleXMoa2V5cy5zaXplKCkpOworICAgIFZlY3RvcjxXS1R5
cGVSZWY+IHJhd1ZhbHVlcyh2YWx1ZXMuc2l6ZSgpKTsKKyAgICAKKyAgICBmb3IgKHNpemVfdCBp
ID0gMDsgaSA8IGtleXMuc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgcmF3S2V5c1tpXSA9IGtleXNb
aV0uZ2V0KCk7CisgICAgICAgIHJhd1ZhbHVlc1tpXSA9IHZhbHVlc1tpXS5nZXQoKTsKKyAgICB9
CisKKyAgICBhdXRvIG1lc3NhZ2VOYW1lID0gYWRvcHRXSyhXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4
Q1N0cmluZygiU3RhdGlzdGljc1NldEZpcnN0UGFydHlIb3N0Q05BTUVEb21haW4iKSk7CisgICAg
YXV0byBtZXNzYWdlQm9keSA9IGFkb3B0V0soV0tEaWN0aW9uYXJ5Q3JlYXRlKHJhd0tleXMuZGF0
YSgpLCByYXdWYWx1ZXMuZGF0YSgpLCByYXdLZXlzLnNpemUoKSkpOworICAgIFdLQnVuZGxlUG9z
dE1lc3NhZ2UoSW5qZWN0ZWRCdW5kbGU6OnNpbmdsZXRvbigpLmJ1bmRsZSgpLCBtZXNzYWdlTmFt
ZS5nZXQoKSwgbWVzc2FnZUJvZHkuZ2V0KCkpOworfQorCit2b2lkIFRlc3RSdW5uZXI6OnN0YXRp
c3RpY3NDYWxsRGlkU2V0Rmlyc3RQYXJ0eUhvc3RDTkFNRURvbWFpbkNhbGxiYWNrKCkKK3sKKyAg
ICBjYWxsVGVzdFJ1bm5lckNhbGxiYWNrKFN0YXRpc3RpY3NEaWRTZXRGaXJzdFBhcnR5SG9zdENO
QU1FRG9tYWluQ2FsbGJhY2tJRCk7Cit9CisKK3ZvaWQgVGVzdFJ1bm5lcjo6c3RhdGlzdGljc1Nl
dFRoaXJkUGFydHlDTkFNRURvbWFpbihKU1N0cmluZ1JlZiBjbmFtZVVSTFN0cmluZywgSlNWYWx1
ZVJlZiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBjYWNoZVRlc3RSdW5uZXJDYWxsYmFjayhT
dGF0aXN0aWNzRGlkU2V0VGhpcmRQYXJ0eUNOQU1FRG9tYWluQ2FsbGJhY2tJRCwgY29tcGxldGlv
bkhhbmRsZXIpOworCisgICAgYXV0byBtZXNzYWdlTmFtZSA9IGFkb3B0V0soV0tTdHJpbmdDcmVh
dGVXaXRoVVRGOENTdHJpbmcoIlN0YXRpc3RpY3NTZXRUaGlyZFBhcnR5Q05BTUVEb21haW4iKSk7
CisgICAgYXV0byBtZXNzYWdlQm9keSA9IGFkb3B0V0soV0tTdHJpbmdDcmVhdGVXaXRoSlNTdHJp
bmcoY25hbWVVUkxTdHJpbmcpKTsKKyAgICBXS0J1bmRsZVBvc3RNZXNzYWdlKEluamVjdGVkQnVu
ZGxlOjpzaW5nbGV0b24oKS5idW5kbGUoKSwgbWVzc2FnZU5hbWUuZ2V0KCksIG1lc3NhZ2VCb2R5
LmdldCgpKTsKK30KKwordm9pZCBUZXN0UnVubmVyOjpzdGF0aXN0aWNzQ2FsbERpZFNldFRoaXJk
UGFydHlDTkFNRURvbWFpbkNhbGxiYWNrKCkKK3sKKyAgICBjYWxsVGVzdFJ1bm5lckNhbGxiYWNr
KFN0YXRpc3RpY3NEaWRTZXRUaGlyZFBhcnR5Q05BTUVEb21haW5DYWxsYmFja0lEKTsKK30KKwog
dm9pZCBUZXN0UnVubmVyOjpzdGF0aXN0aWNzUmVzZXRUb0NvbnNpc3RlbnRTdGF0ZShKU1ZhbHVl
UmVmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIGNhY2hlVGVzdFJ1bm5lckNhbGxiYWNrKFN0
YXRpc3RpY3NEaWRSZXNldFRvQ29uc2lzdGVudFN0YXRlQ2FsbGJhY2tJRCwgY29tcGxldGlvbkhh
bmRsZXIpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRs
ZS9UZXN0UnVubmVyLmggYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rl
c3RSdW5uZXIuaAppbmRleCAxZmUzNzlhNTdhYjgyZmZlNDMxOWRhNDgwMGYwNDgzOTMwMDNmNzUx
Li5hYjY1ZDQwZDQyMjY4MDkzNDA5MmNmM2Y4MmQ4MWM1ZTlhYjIwZDAzIDEwMDY0NAotLS0gYS9U
b29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuaAorKysgYi9U
b29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuaApAQCAtNDUz
LDYgKzQ1MywxMCBAQCBwdWJsaWM6CiAgICAgdm9pZCBzdGF0aXN0aWNzQ2FsbERpZFNldEZpcnN0
UGFydHlXZWJzaXRlRGF0YVJlbW92YWxNb2RlQ2FsbGJhY2soKTsKICAgICB2b2lkIHN0YXRpc3Rp
Y3NTZXRUb1NhbWVTaXRlU3RyaWN0Q29va2llcyhKU1N0cmluZ1JlZiBob3N0TmFtZSwgSlNWYWx1
ZVJlZiBjYWxsYmFjayk7CiAgICAgdm9pZCBzdGF0aXN0aWNzQ2FsbERpZFNldFRvU2FtZVNpdGVT
dHJpY3RDb29raWVzQ2FsbGJhY2soKTsKKyAgICB2b2lkIHN0YXRpc3RpY3NTZXRGaXJzdFBhcnR5
SG9zdENOQU1FRG9tYWluKEpTU3RyaW5nUmVmIGZpcnN0UGFydHlVUkxTdHJpbmcsIEpTU3RyaW5n
UmVmIGNuYW1lVVJMU3RyaW5nLCBKU1ZhbHVlUmVmIGNvbXBsZXRpb25IYW5kbGVyKTsKKyAgICB2
b2lkIHN0YXRpc3RpY3NDYWxsRGlkU2V0Rmlyc3RQYXJ0eUhvc3RDTkFNRURvbWFpbkNhbGxiYWNr
KCk7CisgICAgdm9pZCBzdGF0aXN0aWNzU2V0VGhpcmRQYXJ0eUNOQU1FRG9tYWluKEpTU3RyaW5n
UmVmIGNuYW1lVVJMU3RyaW5nLCBKU1ZhbHVlUmVmIGNvbXBsZXRpb25IYW5kbGVyKTsKKyAgICB2
b2lkIHN0YXRpc3RpY3NDYWxsRGlkU2V0VGhpcmRQYXJ0eUNOQU1FRG9tYWluQ2FsbGJhY2soKTsK
ICAgICB2b2lkIHN0YXRpc3RpY3NSZXNldFRvQ29uc2lzdGVudFN0YXRlKEpTVmFsdWVSZWYgY29t
cGxldGlvbkhhbmRsZXIpOwogICAgIHZvaWQgc3RhdGlzdGljc0NhbGxEaWRSZXNldFRvQ29uc2lz
dGVudFN0YXRlQ2FsbGJhY2soKTsKICAgICB2b2lkIGxvYWRlZFRoaXJkUGFydHlEb21haW5zKEpT
VmFsdWVSZWYgY2FsbGJhY2spOwpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9U
ZXN0Q29udHJvbGxlci5jcHAgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVy
LmNwcAppbmRleCBmYWZiOGNmNmI5NTJlM2MwNDg0NjNiYTU3ZjVjNGNmNDgxMWRmZWFkLi5hNDNm
YTgxMzRhN2FiNzZjM2EzYjdmODIwOGRjOTI2NjcyNzQ3NDYxIDEwMDY0NAotLS0gYS9Ub29scy9X
ZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcAorKysgYi9Ub29scy9XZWJLaXRUZXN0
UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcApAQCAtMzg2Miw2ICszODYyLDIyIEBAIHZvaWQgVGVz
dENvbnRyb2xsZXI6OnNldFN0YXRpc3RpY3NUb1NhbWVTaXRlU3RyaWN0Q29va2llcyhXS1N0cmlu
Z1JlZiBob3N0TmFtZSkKICAgICBtX2N1cnJlbnRJbnZvY2F0aW9uLT5kaWRTZXRUb1NhbWVTaXRl
U3RyaWN0Q29va2llcygpOwogfQogCit2b2lkIFRlc3RDb250cm9sbGVyOjpzZXRTdGF0aXN0aWNz
Rmlyc3RQYXJ0eUhvc3RDTkFNRURvbWFpbihXS1N0cmluZ1JlZiBmaXJzdFBhcnR5VVJMU3RyaW5n
LCBXS1N0cmluZ1JlZiBjbmFtZVVSTFN0cmluZykKK3sKKyAgICBSZXNvdXJjZVN0YXRpc3RpY3ND
YWxsYmFja0NvbnRleHQgY29udGV4dCgqdGhpcyk7CisgICAgV0tXZWJzaXRlRGF0YVN0b3JlU2V0
UmVzb3VyY2VMb2FkU3RhdGlzdGljc0ZpcnN0UGFydHlIb3N0Q05BTUVEb21haW5Gb3JUZXN0aW5n
KHdlYnNpdGVEYXRhU3RvcmUoKSwgZmlyc3RQYXJ0eVVSTFN0cmluZywgY25hbWVVUkxTdHJpbmcs
ICZjb250ZXh0LCByZXNvdXJjZVN0YXRpc3RpY3NWb2lkUmVzdWx0Q2FsbGJhY2spOworICAgIHJ1
blVudGlsKGNvbnRleHQuZG9uZSwgbm9UaW1lb3V0KTsKKyAgICBtX2N1cnJlbnRJbnZvY2F0aW9u
LT5kaWRTZXRGaXJzdFBhcnR5SG9zdENOQU1FRG9tYWluKCk7Cit9CisKK3ZvaWQgVGVzdENvbnRy
b2xsZXI6OnNldFN0YXRpc3RpY3NUaGlyZFBhcnR5Q05BTUVEb21haW4oV0tTdHJpbmdSZWYgY25h
bWVVUkxTdHJpbmcpCit7CisgICAgUmVzb3VyY2VTdGF0aXN0aWNzQ2FsbGJhY2tDb250ZXh0IGNv
bnRleHQoKnRoaXMpOworICAgIFdLV2Vic2l0ZURhdGFTdG9yZVNldFJlc291cmNlTG9hZFN0YXRp
c3RpY3NUaGlyZFBhcnR5Q05BTUVEb21haW5Gb3JUZXN0aW5nKHdlYnNpdGVEYXRhU3RvcmUoKSwg
Y25hbWVVUkxTdHJpbmcsICZjb250ZXh0LCByZXNvdXJjZVN0YXRpc3RpY3NWb2lkUmVzdWx0Q2Fs
bGJhY2spOworICAgIHJ1blVudGlsKGNvbnRleHQuZG9uZSwgbm9UaW1lb3V0KTsKKyAgICBtX2N1
cnJlbnRJbnZvY2F0aW9uLT5kaWRTZXRUaGlyZFBhcnR5Q05BTUVEb21haW4oKTsKK30KKwogc3Ry
dWN0IEFwcEJvdW5kRG9tYWluc0NhbGxiYWNrQ29udGV4dCB7CiAgICAgZXhwbGljaXQgQXBwQm91
bmREb21haW5zQ2FsbGJhY2tDb250ZXh0KFRlc3RDb250cm9sbGVyJiBjb250cm9sbGVyKQogICAg
ICAgICA6IHRlc3RDb250cm9sbGVyKGNvbnRyb2xsZXIpCmRpZmYgLS1naXQgYS9Ub29scy9XZWJL
aXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmggYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rl
c3RDb250cm9sbGVyLmgKaW5kZXggYTEzMDg0OWIzZDNhZWJhMmUyMWU2YTBhMzRkNDYyOTJlMTlk
NGE1MC4uNzI0Y2QwMDRjMWI0MmU4MTVmZDUyMTU1Mzk5ZmFlMDIxMDZjY2Y4MCAxMDA2NDQKLS0t
IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5oCisrKyBiL1Rvb2xzL1dl
YktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuaApAQCAtMjY2LDYgKzI2Niw4IEBAIHB1Ymxp
YzoKICAgICB2b2lkIHNldFN0YXRpc3RpY3NTaG91bGRCbG9ja1RoaXJkUGFydHlDb29raWVzKGJv
b2wgdmFsdWUsIGJvb2wgb25seU9uU2l0ZXNXaXRob3V0VXNlckludGVyYWN0aW9uKTsKICAgICB2
b2lkIHNldFN0YXRpc3RpY3NGaXJzdFBhcnR5V2Vic2l0ZURhdGFSZW1vdmFsTW9kZShib29sIHZh
bHVlKTsKICAgICB2b2lkIHNldFN0YXRpc3RpY3NUb1NhbWVTaXRlU3RyaWN0Q29va2llcyhXS1N0
cmluZ1JlZiBob3N0TmFtZSk7CisgICAgdm9pZCBzZXRTdGF0aXN0aWNzRmlyc3RQYXJ0eUhvc3RD
TkFNRURvbWFpbihXS1N0cmluZ1JlZiBmaXJzdFBhcnR5VVJMU3RyaW5nLCBXS1N0cmluZ1JlZiBj
bmFtZVVSTFN0cmluZyk7CisgICAgdm9pZCBzZXRTdGF0aXN0aWNzVGhpcmRQYXJ0eUNOQU1FRG9t
YWluKFdLU3RyaW5nUmVmIGNuYW1lVVJMU3RyaW5nKTsKICAgICB2b2lkIHNldEFwcEJvdW5kRG9t
YWlucyhXS0FycmF5UmVmIG9yaWdpblVSTHMpOwogICAgIHZvaWQgc3RhdGlzdGljc1Jlc2V0VG9D
b25zaXN0ZW50U3RhdGUoKTsKIApkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9U
ZXN0SW52b2NhdGlvbi5jcHAgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9u
LmNwcAppbmRleCBiNzNiMDk0NDFmMTc0YjU0MWVjZDY2MzdhZWYwZjkxOTdkOGRlZjhmLi45Mjlm
ODVhZjVmODIyZjkyZDYwZGFhYTQ0ZjA0Y2QxMzMzNzFlZjUzIDEwMDY0NAotLS0gYS9Ub29scy9X
ZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmNwcAorKysgYi9Ub29scy9XZWJLaXRUZXN0
UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmNwcApAQCAtOTU3LDYgKzk1NywyNyBAQCB2b2lkIFRlc3RJ
bnZvY2F0aW9uOjpkaWRSZWNlaXZlTWVzc2FnZUZyb21JbmplY3RlZEJ1bmRsZShXS1N0cmluZ1Jl
ZiBtZXNzYWdlTmFtZQogICAgICAgICByZXR1cm47CiAgICAgfQogCisgICAgaWYgKFdLU3RyaW5n
SXNFcXVhbFRvVVRGOENTdHJpbmcobWVzc2FnZU5hbWUsICJTdGF0aXN0aWNzU2V0Rmlyc3RQYXJ0
eUhvc3RDTkFNRURvbWFpbiIpKSB7CisgICAgICAgIEFTU0VSVChXS0dldFR5cGVJRChtZXNzYWdl
Qm9keSkgPT0gV0tEaWN0aW9uYXJ5R2V0VHlwZUlEKCkpOworICAgICAgICAKKyAgICAgICAgV0tE
aWN0aW9uYXJ5UmVmIG1lc3NhZ2VCb2R5RGljdGlvbmFyeSA9IHN0YXRpY19jYXN0PFdLRGljdGlv
bmFyeVJlZj4obWVzc2FnZUJvZHkpOworICAgICAgICBXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4g
Zmlyc3RQYXJ0eVVSTFN0cmluZ0tleSA9IGFkb3B0V0soV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENT
dHJpbmcoIkZpcnN0UGFydHlVUkwiKSk7CisgICAgICAgIFdLUmV0YWluUHRyPFdLU3RyaW5nUmVm
PiBjbmFtZVVSTFN0cmluZ0tleSA9IGFkb3B0V0soV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJp
bmcoIkNOQU1FIikpOworICAgICAgICAKKyAgICAgICAgV0tTdHJpbmdSZWYgZmlyc3RQYXJ0eVVS
TFN0cmluZyA9IHN0YXRpY19jYXN0PFdLU3RyaW5nUmVmPihXS0RpY3Rpb25hcnlHZXRJdGVtRm9y
S2V5KG1lc3NhZ2VCb2R5RGljdGlvbmFyeSwgZmlyc3RQYXJ0eVVSTFN0cmluZ0tleS5nZXQoKSkp
OworICAgICAgICBXS1N0cmluZ1JlZiBjbmFtZVVSTFN0cmluZyA9IHN0YXRpY19jYXN0PFdLU3Ry
aW5nUmVmPihXS0RpY3Rpb25hcnlHZXRJdGVtRm9yS2V5KG1lc3NhZ2VCb2R5RGljdGlvbmFyeSwg
Y25hbWVVUkxTdHJpbmdLZXkuZ2V0KCkpKTsKKyAgICAgICAgCisgICAgICAgIFRlc3RDb250cm9s
bGVyOjpzaW5nbGV0b24oKS5zZXRTdGF0aXN0aWNzRmlyc3RQYXJ0eUhvc3RDTkFNRURvbWFpbihm
aXJzdFBhcnR5VVJMU3RyaW5nLCBjbmFtZVVSTFN0cmluZyk7CisgICAgICAgIHJldHVybjsKKyAg
ICB9CisKKyAgICBpZiAoV0tTdHJpbmdJc0VxdWFsVG9VVEY4Q1N0cmluZyhtZXNzYWdlTmFtZSwg
IlN0YXRpc3RpY3NTZXRUaGlyZFBhcnR5Q05BTUVEb21haW4iKSkgeworICAgICAgICBBU1NFUlQo
V0tHZXRUeXBlSUQobWVzc2FnZUJvZHkpID09IFdLU3RyaW5nR2V0VHlwZUlEKCkpOworICAgICAg
ICBXS1N0cmluZ1JlZiBjbmFtZVVSTFN0cmluZyA9IHN0YXRpY19jYXN0PFdLU3RyaW5nUmVmPiht
ZXNzYWdlQm9keSk7CisgICAgICAgIFRlc3RDb250cm9sbGVyOjpzaW5nbGV0b24oKS5zZXRTdGF0
aXN0aWNzVGhpcmRQYXJ0eUNOQU1FRG9tYWluKGNuYW1lVVJMU3RyaW5nKTsKKyAgICAgICAgcmV0
dXJuOworICAgIH0KKwogICAgIGlmIChXS1N0cmluZ0lzRXF1YWxUb1VURjhDU3RyaW5nKG1lc3Nh
Z2VOYW1lLCAiU3RhdGlzdGljc1Jlc2V0VG9Db25zaXN0ZW50U3RhdGUiKSkgewogICAgICAgICBp
ZiAobV9zaG91bGREdW1wUmVzb3VyY2VMb2FkU3RhdGlzdGljcykKICAgICAgICAgICAgIG1fc2F2
ZWRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzID0gVGVzdENvbnRyb2xsZXI6OnNpbmdsZXRvbigpLmR1
bXBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzKCk7CkBAIC0xOTQ2LDYgKzE5NjcsMTggQEAgdm9pZCBU
ZXN0SW52b2NhdGlvbjo6ZGlkU2V0VG9TYW1lU2l0ZVN0cmljdENvb2tpZXMoKQogICAgIFdLUGFn
ZVBvc3RNZXNzYWdlVG9JbmplY3RlZEJ1bmRsZShUZXN0Q29udHJvbGxlcjo6c2luZ2xldG9uKCku
bWFpbldlYlZpZXcoKS0+cGFnZSgpLCBtZXNzYWdlTmFtZS5nZXQoKSwgbnVsbHB0cik7CiB9CiAK
K3ZvaWQgVGVzdEludm9jYXRpb246OmRpZFNldEZpcnN0UGFydHlIb3N0Q05BTUVEb21haW4oKQor
eworICAgIFdLUmV0YWluUHRyPFdLU3RyaW5nUmVmPiBtZXNzYWdlTmFtZSA9IGFkb3B0V0soV0tT
dHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoIkNhbGxEaWRTZXRGaXJzdFBhcnR5SG9zdENOQU1F
RG9tYWluIikpOworICAgIFdLUGFnZVBvc3RNZXNzYWdlVG9JbmplY3RlZEJ1bmRsZShUZXN0Q29u
dHJvbGxlcjo6c2luZ2xldG9uKCkubWFpbldlYlZpZXcoKS0+cGFnZSgpLCBtZXNzYWdlTmFtZS5n
ZXQoKSwgbnVsbHB0cik7Cit9CisKK3ZvaWQgVGVzdEludm9jYXRpb246OmRpZFNldFRoaXJkUGFy
dHlDTkFNRURvbWFpbigpCit7CisgICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+IG1lc3NhZ2VO
YW1lID0gYWRvcHRXSyhXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygiQ2FsbERpZFNldFRo
aXJkUGFydHlDTkFNRURvbWFpbiIpKTsKKyAgICBXS1BhZ2VQb3N0TWVzc2FnZVRvSW5qZWN0ZWRC
dW5kbGUoVGVzdENvbnRyb2xsZXI6OnNpbmdsZXRvbigpLm1haW5XZWJWaWV3KCktPnBhZ2UoKSwg
bWVzc2FnZU5hbWUuZ2V0KCksIG51bGxwdHIpOworfQorCiB2b2lkIFRlc3RJbnZvY2F0aW9uOjpk
aWRSZXNldFN0YXRpc3RpY3NUb0NvbnNpc3RlbnRTdGF0ZSgpCiB7CiAgICAgV0tSZXRhaW5QdHI8
V0tTdHJpbmdSZWY+IG1lc3NhZ2VOYW1lID0gYWRvcHRXSyhXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4
Q1N0cmluZygiQ2FsbERpZFJlc2V0U3RhdGlzdGljc1RvQ29uc2lzdGVudFN0YXRlIikpOwpkaWZm
IC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlvbi5oIGIvVG9vbHMv
V2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlvbi5oCmluZGV4IDYyMzFiMGMyMDQ0NDVhZDYw
Yzk1ZDNlODE3ZmIzMGY0NzZmOGUxYTUuLmU0N2M1YzA0OWZiMDE2MThiZjBiODkxZTlmMmI5NTg4
NmEwNGJmYjQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdEludm9jYXRp
b24uaAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmgKQEAgLTc3
LDYgKzc3LDggQEAgcHVibGljOgogICAgIHZvaWQgZGlkU2V0U2hvdWxkQmxvY2tUaGlyZFBhcnR5
Q29va2llcygpOwogICAgIHZvaWQgZGlkU2V0Rmlyc3RQYXJ0eVdlYnNpdGVEYXRhUmVtb3ZhbE1v
ZGUoKTsKICAgICB2b2lkIGRpZFNldFRvU2FtZVNpdGVTdHJpY3RDb29raWVzKCk7CisgICAgdm9p
ZCBkaWRTZXRGaXJzdFBhcnR5SG9zdENOQU1FRG9tYWluKCk7CisgICAgdm9pZCBkaWRTZXRUaGly
ZFBhcnR5Q05BTUVEb21haW4oKTsKICAgICB2b2lkIGRpZFJlc2V0U3RhdGlzdGljc1RvQ29uc2lz
dGVudFN0YXRlKCk7CiAgICAgdm9pZCBkaWRTZXRCbG9ja0Nvb2tpZXNGb3JIb3N0KCk7CiAgICAg
dm9pZCBkaWRTZXRTdGF0aXN0aWNzRGVidWdNb2RlKCk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggNTI1NTE4ZjY0YzU2MzAy
YWZhYmNlYWViNTEzZTU2YWNiNWE2NGNiYy4uYmU2MTRhOWI4NTFlOWNmYmY2MDBmMmQ5ZDE0N2Nk
M2Y3OGU4YWU4OCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91
dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM0IEBACisyMDIwLTA4LTA3ICBKb2huIFdpbGFu
ZGVyICA8d2lsYW5kZXJAYXBwbGUuY29tPgorCisgICAgICAgIEV4cGVyaW1lbnRhbDogQ2FwIHRo
ZSBleHBpcnkgb2YgcGVyc2lzdGVudCBjb29raWVzIHNldCBpbiAzcmQtcGFydHkgQ05BTUUgY2xv
YWtlZCBIVFRQIHJlc3BvbnNlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MjE1MjAxCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS81NzQ1NDYzMz4KKwor
ICAgICAgICBSZXZpZXdlZCBieSBCcmVudCBGdWxnaGFtLiBBbHNvIHJldmlld2VkIGFuZCBjb21t
ZW50ZWQgb24gYnkgQ2hyaXMgRHVtZXosIEppdGVuIE1laHRhLCBTYW0gV2VpbmlnLCBhbmQgQWxl
eCBDaHJpc3RlbnNlbi4KKworICAgICAgICAqIGh0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlz
dGljcy9jbmFtZS1jbG9ha2luZy10b3AtY25hbWUtc3ViLTFwLWNuYW1lLWV4cGVjdGVkLnR4dDog
QWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL2NuYW1l
LWNsb2FraW5nLXRvcC1jbmFtZS1zdWItMXAtY25hbWUuaHRtbDogQWRkZWQuCisgICAgICAgICog
aHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL2NuYW1lLWNsb2FraW5nLXRvcC1jbmFt
ZS1zdWItM3AtY25hbWUtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3Rz
L3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvY25hbWUtY2xvYWtpbmctdG9wLWNuYW1lLXN1Yi0zcC1j
bmFtZS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRp
c3RpY3MvY25hbWUtY2xvYWtpbmctdG9wLWNuYW1lLXN1Yi1tYXRjaGluZy1jbmFtZS1leHBlY3Rl
ZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGlj
cy9jbmFtZS1jbG9ha2luZy10b3AtY25hbWUtc3ViLW1hdGNoaW5nLWNuYW1lLmh0bWw6IEFkZGVk
LgorICAgICAgICAqIGh0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9jbmFtZS1jbG9h
a2luZy10b3AtY25hbWUtc3ViLW5vLWNuYW1lLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAg
ICogaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL2NuYW1lLWNsb2FraW5nLXRvcC1j
bmFtZS1zdWItbm8tY25hbWUuaHRtbDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9yZXNv
dXJjZUxvYWRTdGF0aXN0aWNzL2NuYW1lLWNsb2FraW5nLXRvcC1uby1jbmFtZS1zdWItMXAtY25h
bWUtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL3Jlc291cmNlTG9h
ZFN0YXRpc3RpY3MvY25hbWUtY2xvYWtpbmctdG9wLW5vLWNuYW1lLXN1Yi0xcC1jbmFtZS5odG1s
OiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvY25h
bWUtY2xvYWtpbmctdG9wLW5vLWNuYW1lLXN1Yi0zcC1jbmFtZS1leHBlY3RlZC50eHQ6IEFkZGVk
LgorICAgICAgICAqIGh0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9jbmFtZS1jbG9h
a2luZy10b3Atbm8tY25hbWUtc3ViLTNwLWNuYW1lLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGh0
dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9jbmFtZS1jbG9ha2luZy10b3Atbm8tY25h
bWUtc3ViLW5vLWNuYW1lLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0
cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL2NuYW1lLWNsb2FraW5nLXRvcC1uby1jbmFtZS1zdWIt
bm8tY25hbWUuaHRtbDogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vaW9zLTEzL1Rlc3RFeHBl
Y3RhdGlvbnM6CisgICAgICAgICAgICBOZXcgdGVzdHMgbWFya2VkIGFzIFsgU2tpcCBdLgorICAg
ICAgICAqIHBsYXRmb3JtL2lvcy13azIvVGVzdEV4cGVjdGF0aW9uczoKKyAgICAgICAgICAgIE5l
dyB0ZXN0cyBtYXJrZWQgYXMgWyBQYXNzIF0gaW4gZ2VuZXJhbC4KKyAgICAgICAgKiBwbGF0Zm9y
bS9tYWMtd2syL1Rlc3RFeHBlY3RhdGlvbnM6CisgICAgICAgICAgICBOZXcgdGVzdHMgbWFya2Vk
IGFzIFsgUGFzcyBdIGZvciBCaWdTdXIrLgorICAgICAgICAqIHBsYXRmb3JtL3drMi9UZXN0RXhw
ZWN0YXRpb25zOgorICAgICAgICAgICAgTmV3IHRlc3RzIG1hcmtlZCBhcyBbIFNraXAgXSBpbiBn
ZW5lcmFsLgorCiAyMDIwLTA4LTA3ICBBbnR0aSBLb2l2aXN0byAgPGFudHRpQGFwcGxlLmNvbT4K
IAogICAgICAgICBSRUdSRVNTSU9OIChyMjYwMjc2KTogaW5zdHJ1Y3R1cmUuY29tIGN1c3RvbSBQ
REYgdmlld2VyIHN0b3BzIHNjcm9sbGluZyAvIGxvYWRpbmcgYWZ0ZXIgc3dpdGNoaW5nIHRvIGFu
b3RoZXIgdGFiIHRoZW4gc3dpdGNoaW5nIGJhY2sKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0
dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9jbmFtZS1jbG9ha2luZy10b3AtY25hbWUt
c3ViLTFwLWNuYW1lLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvcmVzb3Vy
Y2VMb2FkU3RhdGlzdGljcy9jbmFtZS1jbG9ha2luZy10b3AtY25hbWUtc3ViLTFwLWNuYW1lLWV4
cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45NDhmYjVjY2Q2ZTU3MWIzM2M1NzJmNTZkMmY3NjZjZTA2
NjNiYTRjCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9yZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzL2NuYW1lLWNsb2FraW5nLXRvcC1jbmFtZS1zdWItMXAtY25hbWUtZXhw
ZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTAgQEAKK1Rlc3QgZm9yIENOQU1FIENsb2FraW5nOiBObyBj
b29raWUgZXhwaXJ5IGNhcHBpbmcgaWYgdGhlIHRvcCBmcmFtZSBoYXMgYW4gYWx0ZXJuYXRlIENO
QU1FIGFuZCB0aGUgc3ViIHJlc291cmNlIGhhcyBhbiBhbHRlcm5hdGUgQ05BTUUgdGhhdCBtYXRj
aGVzIHRoZSBmaXJzdCBwYXJ0eSAobm90IGl0cyBDTkFNRSkuCisKK09uIHN1Y2Nlc3MsIHlvdSB3
aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENP
TVBMRVRFIi4KKworCitQQVNTIENvb2tpZSBuYW1lZCBjbmFtZVRlc3RDb29raWUgZXhwaXJlcyBp
biBtb3JlIHRoYW4gNjA1NDAwIHNlY29uZHMuCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0
cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0
cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL2NuYW1lLWNsb2FraW5nLXRvcC1jbmFtZS1zdWItMXAt
Y25hbWUuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGlj
cy9jbmFtZS1jbG9ha2luZy10b3AtY25hbWUtc3ViLTFwLWNuYW1lLmh0bWwKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
OGM4MzA0YjBiODljNTVmMmY3MGNkODAxNjg1NDAzZDI5ZGJhMmExNwotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9jbmFtZS1j
bG9ha2luZy10b3AtY25hbWUtc3ViLTFwLWNuYW1lLmh0bWwKQEAgLTAsMCArMSw2OCBAQAorPCFE
T0NUWVBFIGh0bWw+Cis8aHRtbCBsYW5nPSJlbiI+Cis8aGVhZD4KKyAgICA8bWV0YSBjaGFyc2V0
PSJVVEYtOCI+CisgICAgPHNjcmlwdCBzcmM9Ii9qcy10ZXN0LXJlc291cmNlcy9qcy10ZXN0Lmpz
Ij48L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNyYz0iL2Nvb2tpZXMvcmVzb3VyY2VzL2Nvb2tpZS11
dGlsaXRpZXMuanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvdXRpbC5q
cyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keSBvbmxvYWQ9InJ1blRlc3QoKSI+Cis8c2NyaXB0
PgorICAgIGRlc2NyaXB0aW9uKCJUZXN0IGZvciBDTkFNRSBDbG9ha2luZzogTm8gY29va2llIGV4
cGlyeSBjYXBwaW5nIGlmIHRoZSB0b3AgZnJhbWUgaGFzIGFuIGFsdGVybmF0ZSBDTkFNRSBhbmQg
dGhlIHN1YiByZXNvdXJjZSBoYXMgYW4gYWx0ZXJuYXRlIENOQU1FIHRoYXQgbWF0Y2hlcyB0aGUg
Zmlyc3QgcGFydHkgKG5vdCBpdHMgQ05BTUUpLiIpOworICAgIGpzVGVzdElzQXN5bmMgPSB0cnVl
OworCisgICAgZnVuY3Rpb24gZmluaXNoVGVzdCgpIHsKKyAgICAgICAgcmVzZXRDb29raWVzRm9y
Q3VycmVudE9yaWdpbigpOworICAgICAgICBzZXRFbmFibGVGZWF0dXJlKGZhbHNlLCBmdW5jdGlv
bigpIHsKKyAgICAgICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAgICAgICB9KTsKKyAgICB9CisK
KyAgICBmdW5jdGlvbiBjaGVja0Nvb2tpZUV4cGlyeShjb29raWVEYXRhLCBzZWNvbmRzLCBzaG91
bGRCZUxlc3NUaGFuKSB7CisgICAgICAgIGxldCBub3cgPSBuZXcgRGF0ZSgpOworICAgICAgICBs
ZXQgZXhwaXJ5RGF0ZUluTWlsbGlzZWNvbmRzID0gbm93LmdldFRpbWUoKSArIChzZWNvbmRzICog
MTAwMCk7CisKKyAgICAgICAgaWYgKChjb29raWVEYXRhWyJleHBpcmVzIl0gPCBleHBpcnlEYXRl
SW5NaWxsaXNlY29uZHMpID09PSBzaG91bGRCZUxlc3NUaGFuKQorICAgICAgICAgICAgdGVzdFBh
c3NlZCgiQ29va2llIG5hbWVkICIgKyBjb29raWVEYXRhWyJuYW1lIl0gKyAiIGV4cGlyZXMgaW4g
IiArIChzaG91bGRCZUxlc3NUaGFuID8gImxlc3MiIDogIm1vcmUiKSArICIgdGhhbiAiICsgc2Vj
b25kcyArICIgc2Vjb25kcy4iKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgdGVzdEZhaWxl
ZCgiQ29va2llIG5hbWVkICIgKyBjb29raWVEYXRhWyJuYW1lIl0gKyAiIGV4cGlyZXMgaW4gIiAr
IChzaG91bGRCZUxlc3NUaGFuID8gIm1vcmUiIDogImxlc3MiKSArICIgdGhhbiAiICsgc2Vjb25k
cyArICIgc2Vjb25kcy4iKTsKKyAgICB9CisKKyAgICBjb25zdCBvbmVXZWVrSW5TZWNvbmRzID0g
NyAqIDI0ICogNjAgKiA2MDsKKyAgICBjb25zdCBvdmVyT25lV2Vla0luU2Vjb25kcyA9IG9uZVdl
ZWtJblNlY29uZHMgKyA2MDA7CisgICAgY29uc3QgY29va2llTmFtZSA9ICJjbmFtZVRlc3RDb29r
aWUiOworICAgIGNvbnN0IHN1YlBhdGhUb1NldEZpcnN0UGFydHlDb29raWUgPSAicmVzb3VyY2Vz
L3NldC1jb29raWUucGhwP25hbWU9IiArIGNvb2tpZU5hbWUgKyAiJnZhbHVlPXZhbHVlJmR1bW15
PSIgKyBNYXRoLnJhbmRvbSgpOworCisgICAgZnVuY3Rpb24gc2V0QW5kQ2hlY2tDb29raWUoKSB7
CisgICAgICAgIGZldGNoKHN1YlBhdGhUb1NldEZpcnN0UGFydHlDb29raWUpLnRoZW4oZnVuY3Rp
b24oKSB7CisgICAgICAgICAgICBpZiAoaW50ZXJuYWxzKSB7CisgICAgICAgICAgICAgICAgbGV0
IGNvb2tpZXMgPSBpbnRlcm5hbHMuZ2V0Q29va2llcygpOworICAgICAgICAgICAgICAgIGlmICgh
Y29va2llcy5sZW5ndGgpCisgICAgICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoIk5vIGNvb2tp
ZXMgZm91bmQuIik7CisgICAgICAgICAgICAgICAgZm9yIChsZXQgY29va2llIG9mIGNvb2tpZXMp
IHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGNvb2tpZS5uYW1lID09PSBjb29raWVOYW1lKSB7
CisgICAgICAgICAgICAgICAgICAgICAgICBjaGVja0Nvb2tpZUV4cGlyeShjb29raWUsIG92ZXJP
bmVXZWVrSW5TZWNvbmRzLCBmYWxzZSk7CisgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7Cisg
ICAgICAgICAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJVbmtub3duIGNvb2tpZSAiICsgY29v
a2llLm5hbWUgKyAiIGZvdW5kLiIpOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAg
ICAgICAgfQorICAgICAgICAgICAgICAgIGZpbmlzaFRlc3QoKTsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgfSk7CisgICAgfQorCisgICAgY29uc3QgZmlyc3RQYXJ0eSA9ICJodHRwOi8vMTI3LjAu
MC4xOjgwMDAiOworICAgIGNvbnN0IGZpcnN0UGFydHlDTkFNRUZvclRlc3RpbmcgPSAiaHR0cDov
L3Rlc3R3ZWJraXQub3JnIjsKKyAgICBjb25zdCB0aGlyZFBhcnR5Q05BTUVGb3JUZXN0aW5nID0g
Zmlyc3RQYXJ0eTsKKworICAgIGZ1bmN0aW9uIHJ1blRlc3QoKSB7CisgICAgICAgIHNldEVuYWJs
ZUZlYXR1cmUodHJ1ZSwgZnVuY3Rpb24oKSB7CisgICAgICAgICAgICB0ZXN0UnVubmVyLnN0YXRp
c3RpY3NTZXRGaXJzdFBhcnR5SG9zdENOQU1FRG9tYWluKGZpcnN0UGFydHksIGZpcnN0UGFydHlD
TkFNRUZvclRlc3RpbmcsIGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgICAgIHRlc3RSdW5uZXIu
c3RhdGlzdGljc1NldFRoaXJkUGFydHlDTkFNRURvbWFpbih0aGlyZFBhcnR5Q05BTUVGb3JUZXN0
aW5nLCBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgICAgICAgICAgc2V0QW5kQ2hlY2tDb29raWUo
KTsKKyAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgIH0pOworICAgICAgICB9KTsKKyAg
ICB9Cis8L3NjcmlwdD4KKzwvYm9keT4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVz
dHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9jbmFtZS1jbG9ha2luZy10b3AtY25hbWUtc3ViLTNw
LWNuYW1lLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvcmVzb3VyY2VMb2Fk
U3RhdGlzdGljcy9jbmFtZS1jbG9ha2luZy10b3AtY25hbWUtc3ViLTNwLWNuYW1lLWV4cGVjdGVk
LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi43MWY5MzMwM2U4NWFjMDZkMjk5YTljMDVjZjY2NTZjMDFlYjk3NTc4
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRT
dGF0aXN0aWNzL2NuYW1lLWNsb2FraW5nLXRvcC1jbmFtZS1zdWItM3AtY25hbWUtZXhwZWN0ZWQu
dHh0CkBAIC0wLDAgKzEsMTAgQEAKK1Rlc3QgZm9yIENOQU1FIENsb2FraW5nOiBDb29raWUgZXhw
aXJ5IGNhcHBpbmcgaWYgdGhlIHRvcCBmcmFtZSBoYXMgYW4gYWx0ZXJuYXRlIENOQU1FIGFuZCB0
aGUgc3ViIHJlc291cmNlIGhhcyBhIGRpZmZlcmVudCBhbHRlcm5hdGUgQ05BTUUuCisKK09uIHN1
Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2Vk
IGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNTIENvb2tpZSBuYW1lZCBjbmFtZVRlc3RDb29r
aWUgZXhwaXJlcyBpbiBsZXNzIHRoYW4gNjA1NDAwIHNlY29uZHMuCitQQVNTIHN1Y2Nlc3NmdWxs
eVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL2NuYW1lLWNsb2FraW5nLXRvcC1j
bmFtZS1zdWItM3AtY25hbWUuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvcmVzb3VyY2VM
b2FkU3RhdGlzdGljcy9jbmFtZS1jbG9ha2luZy10b3AtY25hbWUtc3ViLTNwLWNuYW1lLmh0bWwK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uYjZhYzc4MWZmODFjMjFmYWI5OTk1OThlMWY2NWQ5NWFmN2ZkZGY5OAotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlz
dGljcy9jbmFtZS1jbG9ha2luZy10b3AtY25hbWUtc3ViLTNwLWNuYW1lLmh0bWwKQEAgLTAsMCAr
MSw3NCBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbCBsYW5nPSJlbiI+Cis8aGVhZD4KKyAgICA8
bWV0YSBjaGFyc2V0PSJVVEYtOCI+CisgICAgPHNjcmlwdCBzcmM9Ii9qcy10ZXN0LXJlc291cmNl
cy9qcy10ZXN0LmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNyYz0iL2Nvb2tpZXMvcmVzb3Vy
Y2VzL2Nvb2tpZS11dGlsaXRpZXMuanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPSJyZXNv
dXJjZXMvdXRpbC5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keSBvbmxvYWQ9InJ1blRlc3Qo
KSI+Cis8c2NyaXB0PgorICAgIGRlc2NyaXB0aW9uKCJUZXN0IGZvciBDTkFNRSBDbG9ha2luZzog
Q29va2llIGV4cGlyeSBjYXBwaW5nIGlmIHRoZSB0b3AgZnJhbWUgaGFzIGFuIGFsdGVybmF0ZSBD
TkFNRSBhbmQgdGhlIHN1YiByZXNvdXJjZSBoYXMgYSBkaWZmZXJlbnQgYWx0ZXJuYXRlIENOQU1F
LiIpOworICAgIGpzVGVzdElzQXN5bmMgPSB0cnVlOworCisgICAgZnVuY3Rpb24gZmluaXNoVGVz
dCgpIHsKKyAgICAgICAgcmVzZXRDb29raWVzRm9yQ3VycmVudE9yaWdpbigpOworICAgICAgICBz
ZXRFbmFibGVGZWF0dXJlKGZhbHNlLCBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgIGZpbmlzaEpT
VGVzdCgpOworICAgICAgICB9KTsKKyAgICB9CisKKyAgICBjb25zdCBvbmVXZWVrSW5TZWNvbmRz
ID0gNyAqIDI0ICogNjAgKiA2MDsKKyAgICBjb25zdCBvdmVyT25lV2Vla0luU2Vjb25kcyA9IG9u
ZVdlZWtJblNlY29uZHMgKyA2MDA7CisgICAgY29uc3QgdW5kZXJPbmVXZWVrSW5TZWNvbmRzID0g
b25lV2Vla0luU2Vjb25kcyAtIDYwMDsKKworICAgIGZ1bmN0aW9uIGNoZWNrQ29va2llRXhwaXJ5
KGNvb2tpZURhdGEsIHNlY29uZHMsIHNob3VsZEJlTGVzc1RoYW4pIHsKKyAgICAgICAgbGV0IG5v
dyA9IG5ldyBEYXRlKCk7CisgICAgICAgIGxldCBleHBpcnlEYXRlSW5NaWxsaXNlY29uZHMgPSBu
b3cuZ2V0VGltZSgpICsgKHNlY29uZHMgKiAxMDAwKTsKKworICAgICAgICBpZiAoKGNvb2tpZURh
dGFbImV4cGlyZXMiXSA8IGV4cGlyeURhdGVJbk1pbGxpc2Vjb25kcykgPT09IHNob3VsZEJlTGVz
c1RoYW4pIHsKKyAgICAgICAgICAgIGxldCB1bmRlck9uZVdlZWtFeHBpcnlEYXRlSW5NaWxsaXNl
Y29uZHMgPSBub3cuZ2V0VGltZSgpICsgKHVuZGVyT25lV2Vla0luU2Vjb25kcyAqIDEwMDApOwor
ICAgICAgICAgICAgaWYgKGNvb2tpZURhdGFbImV4cGlyZXMiXSA8IHVuZGVyT25lV2Vla0V4cGly
eURhdGVJbk1pbGxpc2Vjb25kcykKKyAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJDb29raWUg
bmFtZWQgIiArIGNvb2tpZURhdGFbIm5hbWUiXSArICIgd2FzIGNhcHBlZCB0b28gbG93LiIpOwor
ICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoIkNvb2tpZSBuYW1l
ZCAiICsgY29va2llRGF0YVsibmFtZSJdICsgIiBleHBpcmVzIGluICIgKyAoc2hvdWxkQmVMZXNz
VGhhbiA/ICJsZXNzIiA6ICJtb3JlIikgKyAiIHRoYW4gIiArIHNlY29uZHMgKyAiIHNlY29uZHMu
Iik7CisgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgdGVzdEZhaWxlZCgiQ29va2llIG5hbWVk
ICIgKyBjb29raWVEYXRhWyJuYW1lIl0gKyAiIGV4cGlyZXMgaW4gIiArIChzaG91bGRCZUxlc3NU
aGFuID8gIm1vcmUiIDogImxlc3MiKSArICIgdGhhbiAiICsgc2Vjb25kcyArICIgc2Vjb25kcy4i
KTsKKyAgICB9CisKKyAgICBjb25zdCBjb29raWVOYW1lID0gImNuYW1lVGVzdENvb2tpZSI7Cisg
ICAgY29uc3Qgc3ViUGF0aFRvU2V0Rmlyc3RQYXJ0eUNvb2tpZSA9ICJyZXNvdXJjZXMvc2V0LWNv
b2tpZS5waHA/bmFtZT0iICsgY29va2llTmFtZSArICImdmFsdWU9dmFsdWUmZHVtbXk9IiArIE1h
dGgucmFuZG9tKCk7CisKKyAgICBmdW5jdGlvbiBzZXRBbmRDaGVja0Nvb2tpZSgpIHsKKyAgICAg
ICAgZmV0Y2goc3ViUGF0aFRvU2V0Rmlyc3RQYXJ0eUNvb2tpZSkudGhlbihmdW5jdGlvbigpIHsK
KyAgICAgICAgICAgIGlmIChpbnRlcm5hbHMpIHsKKyAgICAgICAgICAgICAgICBsZXQgY29va2ll
cyA9IGludGVybmFscy5nZXRDb29raWVzKCk7CisgICAgICAgICAgICAgICAgaWYgKCFjb29raWVz
Lmxlbmd0aCkKKyAgICAgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiTm8gY29va2llcyBmb3Vu
ZC4iKTsKKyAgICAgICAgICAgICAgICBmb3IgKGxldCBjb29raWUgb2YgY29va2llcykgeworICAg
ICAgICAgICAgICAgICAgICBpZiAoY29va2llLm5hbWUgPT09IGNvb2tpZU5hbWUpIHsKKyAgICAg
ICAgICAgICAgICAgICAgICAgIGNoZWNrQ29va2llRXhwaXJ5KGNvb2tpZSwgb3Zlck9uZVdlZWtJ
blNlY29uZHMsIHRydWUpOworICAgICAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAg
ICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiVW5rbm93biBjb29raWUgIiArIGNvb2tpZS5uYW1l
ICsgIiBmb3VuZC4iKTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0K
KyAgICAgICAgICAgICAgICBmaW5pc2hUZXN0KCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0p
OworICAgIH0KKworICAgIGNvbnN0IGZpcnN0UGFydHkgPSAiaHR0cDovLzEyNy4wLjAuMTo4MDAw
IjsKKyAgICBjb25zdCBmaXJzdFBhcnR5Q05BTUVGb3JUZXN0aW5nID0gImh0dHA6Ly90ZXN0d2Vi
a2l0Lm9yZyI7CisgICAgY29uc3QgdGhpcmRQYXJ0eUNOQU1FRm9yVGVzdGluZyA9ICJodHRwOi8v
M3JkcGFydHl0ZXN0d2Via2l0Lm9yZyI7CisKKyAgICBmdW5jdGlvbiBydW5UZXN0KCkgeworICAg
ICAgICBzZXRFbmFibGVGZWF0dXJlKHRydWUsIGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgdGVz
dFJ1bm5lci5zdGF0aXN0aWNzU2V0Rmlyc3RQYXJ0eUhvc3RDTkFNRURvbWFpbihmaXJzdFBhcnR5
LCBmaXJzdFBhcnR5Q05BTUVGb3JUZXN0aW5nLCBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgICAg
ICB0ZXN0UnVubmVyLnN0YXRpc3RpY3NTZXRUaGlyZFBhcnR5Q05BTUVEb21haW4odGhpcmRQYXJ0
eUNOQU1FRm9yVGVzdGluZywgZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAgICAgICAgIHNldEFu
ZENoZWNrQ29va2llKCk7CisgICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAgICB9KTsKKyAg
ICAgICAgfSk7CisgICAgfQorPC9zY3JpcHQ+Cis8L2JvZHk+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvY25hbWUtY2xvYWtpbmctdG9w
LWNuYW1lLXN1Yi1tYXRjaGluZy1jbmFtZS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9odHRw
L3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvY25hbWUtY2xvYWtpbmctdG9wLWNuYW1lLXN1
Yi1tYXRjaGluZy1jbmFtZS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNTgxOGFlMTM0NWFlYzJj
MDIzZmI3NjdkNmVjNWFiMWRhZWRkZmRlYQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2h0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9jbmFtZS1jbG9ha2luZy10b3AtY25h
bWUtc3ViLW1hdGNoaW5nLWNuYW1lLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDEwIEBACitUZXN0
IGZvciBDTkFNRSBDbG9ha2luZzogTm8gY29va2llIGV4cGlyeSBjYXBwaW5nIGlmIHRoZSB0b3Ag
ZnJhbWUgaGFzIGFuIGFsdGVybmF0ZSBDTkFNRSBhbmQgdGhlIHN1YiByZXNvdXJjZSBoYXMgbWF0
Y2hpbmcgYWx0ZXJuYXRlIENOQU1FLgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJp
ZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKwor
UEFTUyBDb29raWUgbmFtZWQgY25hbWVUZXN0Q29va2llIGV4cGlyZXMgaW4gbW9yZSB0aGFuIDYw
NTQwMCBzZWNvbmRzLgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENP
TVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvcmVzb3VyY2VMb2Fk
U3RhdGlzdGljcy9jbmFtZS1jbG9ha2luZy10b3AtY25hbWUtc3ViLW1hdGNoaW5nLWNuYW1lLmh0
bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvY25hbWUt
Y2xvYWtpbmctdG9wLWNuYW1lLXN1Yi1tYXRjaGluZy1jbmFtZS5odG1sCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmY5
ZmExZjAzYmVmZWQ0NjZmZTY1NWViYzc2MzNlYTNiZGQ1ZGFkMjkKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvY25hbWUtY2xv
YWtpbmctdG9wLWNuYW1lLXN1Yi1tYXRjaGluZy1jbmFtZS5odG1sCkBAIC0wLDAgKzEsNjggQEAK
KzwhRE9DVFlQRSBodG1sPgorPGh0bWwgbGFuZz0iZW4iPgorPGhlYWQ+CisgICAgPG1ldGEgY2hh
cnNldD0iVVRGLTgiPgorICAgIDxzY3JpcHQgc3JjPSIvanMtdGVzdC1yZXNvdXJjZXMvanMtdGVz
dC5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9Ii9jb29raWVzL3Jlc291cmNlcy9jb29r
aWUtdXRpbGl0aWVzLmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3V0
aWwuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHkgb25sb2FkPSJydW5UZXN0KCkiPgorPHNj
cmlwdD4KKyAgICBkZXNjcmlwdGlvbigiVGVzdCBmb3IgQ05BTUUgQ2xvYWtpbmc6IE5vIGNvb2tp
ZSBleHBpcnkgY2FwcGluZyBpZiB0aGUgdG9wIGZyYW1lIGhhcyBhbiBhbHRlcm5hdGUgQ05BTUUg
YW5kIHRoZSBzdWIgcmVzb3VyY2UgaGFzIG1hdGNoaW5nIGFsdGVybmF0ZSBDTkFNRS4iKTsKKyAg
ICBqc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKworICAgIGZ1bmN0aW9uIGZpbmlzaFRlc3QoKSB7Cisg
ICAgICAgIHJlc2V0Q29va2llc0ZvckN1cnJlbnRPcmlnaW4oKTsKKyAgICAgICAgc2V0RW5hYmxl
RmVhdHVyZShmYWxzZSwgZnVuY3Rpb24oKSB7CisgICAgICAgICAgICBmaW5pc2hKU1Rlc3QoKTsK
KyAgICAgICAgfSk7CisgICAgfQorCisgICAgZnVuY3Rpb24gY2hlY2tDb29raWVFeHBpcnkoY29v
a2llRGF0YSwgc2Vjb25kcywgc2hvdWxkQmVMZXNzVGhhbikgeworICAgICAgICBsZXQgbm93ID0g
bmV3IERhdGUoKTsKKyAgICAgICAgbGV0IGV4cGlyeURhdGVJbk1pbGxpc2Vjb25kcyA9IG5vdy5n
ZXRUaW1lKCkgKyAoc2Vjb25kcyAqIDEwMDApOworCisgICAgICAgIGlmICgoY29va2llRGF0YVsi
ZXhwaXJlcyJdIDwgZXhwaXJ5RGF0ZUluTWlsbGlzZWNvbmRzKSA9PT0gc2hvdWxkQmVMZXNzVGhh
bikKKyAgICAgICAgICAgIHRlc3RQYXNzZWQoIkNvb2tpZSBuYW1lZCAiICsgY29va2llRGF0YVsi
bmFtZSJdICsgIiBleHBpcmVzIGluICIgKyAoc2hvdWxkQmVMZXNzVGhhbiA/ICJsZXNzIiA6ICJt
b3JlIikgKyAiIHRoYW4gIiArIHNlY29uZHMgKyAiIHNlY29uZHMuIik7CisgICAgICAgIGVsc2UK
KyAgICAgICAgICAgIHRlc3RGYWlsZWQoIkNvb2tpZSBuYW1lZCAiICsgY29va2llRGF0YVsibmFt
ZSJdICsgIiBleHBpcmVzIGluICIgKyAoc2hvdWxkQmVMZXNzVGhhbiA/ICJtb3JlIiA6ICJsZXNz
IikgKyAiIHRoYW4gIiArIHNlY29uZHMgKyAiIHNlY29uZHMuIik7CisgICAgfQorCisgICAgY29u
c3Qgb25lV2Vla0luU2Vjb25kcyA9IDcgKiAyNCAqIDYwICogNjA7CisgICAgY29uc3Qgb3Zlck9u
ZVdlZWtJblNlY29uZHMgPSBvbmVXZWVrSW5TZWNvbmRzICsgNjAwOworICAgIGNvbnN0IGNvb2tp
ZU5hbWUgPSAiY25hbWVUZXN0Q29va2llIjsKKyAgICBjb25zdCBzdWJQYXRoVG9TZXRGaXJzdFBh
cnR5Q29va2llID0gInJlc291cmNlcy9zZXQtY29va2llLnBocD9uYW1lPSIgKyBjb29raWVOYW1l
ICsgIiZ2YWx1ZT12YWx1ZSZkdW1teT0iICsgTWF0aC5yYW5kb20oKTsKKworICAgIGZ1bmN0aW9u
IHNldEFuZENoZWNrQ29va2llKCkgeworICAgICAgICBmZXRjaChzdWJQYXRoVG9TZXRGaXJzdFBh
cnR5Q29va2llKS50aGVuKGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgaWYgKGludGVybmFscykg
eworICAgICAgICAgICAgICAgIGxldCBjb29raWVzID0gaW50ZXJuYWxzLmdldENvb2tpZXMoKTsK
KyAgICAgICAgICAgICAgICBpZiAoIWNvb2tpZXMubGVuZ3RoKQorICAgICAgICAgICAgICAgICAg
ICB0ZXN0RmFpbGVkKCJObyBjb29raWVzIGZvdW5kLiIpOworICAgICAgICAgICAgICAgIGZvciAo
bGV0IGNvb2tpZSBvZiBjb29raWVzKSB7CisgICAgICAgICAgICAgICAgICAgIGlmIChjb29raWUu
bmFtZSA9PT0gY29va2llTmFtZSkgeworICAgICAgICAgICAgICAgICAgICAgICAgY2hlY2tDb29r
aWVFeHBpcnkoY29va2llLCBvdmVyT25lV2Vla0luU2Vjb25kcywgZmFsc2UpOworICAgICAgICAg
ICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgi
VW5rbm93biBjb29raWUgIiArIGNvb2tpZS5uYW1lICsgIiBmb3VuZC4iKTsKKyAgICAgICAgICAg
ICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBmaW5pc2hUZXN0
KCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0pOworICAgIH0KKworICAgIGNvbnN0IGZpcnN0
UGFydHkgPSAiaHR0cDovLzEyNy4wLjAuMTo4MDAwIjsKKyAgICBjb25zdCBmaXJzdFBhcnR5Q05B
TUVGb3JUZXN0aW5nID0gImh0dHA6Ly90ZXN0d2Via2l0Lm9yZyI7CisgICAgY29uc3QgdGhpcmRQ
YXJ0eUNOQU1FRm9yVGVzdGluZyA9IGZpcnN0UGFydHlDTkFNRUZvclRlc3Rpbmc7CisKKyAgICBm
dW5jdGlvbiBydW5UZXN0KCkgeworICAgICAgICBzZXRFbmFibGVGZWF0dXJlKHRydWUsIGZ1bmN0
aW9uKCkgeworICAgICAgICAgICAgdGVzdFJ1bm5lci5zdGF0aXN0aWNzU2V0Rmlyc3RQYXJ0eUhv
c3RDTkFNRURvbWFpbihmaXJzdFBhcnR5LCBmaXJzdFBhcnR5Q05BTUVGb3JUZXN0aW5nLCBmdW5j
dGlvbigpIHsKKyAgICAgICAgICAgICAgICB0ZXN0UnVubmVyLnN0YXRpc3RpY3NTZXRUaGlyZFBh
cnR5Q05BTUVEb21haW4odGhpcmRQYXJ0eUNOQU1FRm9yVGVzdGluZywgZnVuY3Rpb24oKSB7Cisg
ICAgICAgICAgICAgICAgICAgIHNldEFuZENoZWNrQ29va2llKCk7CisgICAgICAgICAgICAgICAg
fSk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgfSk7CisgICAgfQorPC9zY3JpcHQ+Cis8L2Jv
ZHk+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRp
c3RpY3MvY25hbWUtY2xvYWtpbmctdG9wLWNuYW1lLXN1Yi1uby1jbmFtZS1leHBlY3RlZC50eHQg
Yi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvY25hbWUtY2xv
YWtpbmctdG9wLWNuYW1lLXN1Yi1uby1jbmFtZS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYjY1
MjBkZWUzOTE1ZTQyMmVjYjBjYjQ5NGRkNDk0N2QyNTlhNzY2NgotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2h0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9jbmFtZS1jbG9h
a2luZy10b3AtY25hbWUtc3ViLW5vLWNuYW1lLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDEwIEBA
CitUZXN0IGZvciBDTkFNRSBDbG9ha2luZzogTm8gY29va2llIGV4cGlyeSBjYXBwaW5nIGlmIHRo
ZSB0b3AgZnJhbWUgaGFzIGFuIGFsdGVybmF0ZSBDTkFNRSBhbmQgdGhlIHN1YiByZXNvdXJjZSBo
YXMgbm8gYWx0ZXJuYXRlIENOQU1FLgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJp
ZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKwor
UEFTUyBDb29raWUgbmFtZWQgY25hbWVUZXN0Q29va2llIGV4cGlyZXMgaW4gbW9yZSB0aGFuIDYw
NTQwMCBzZWNvbmRzLgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENP
TVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvcmVzb3VyY2VMb2Fk
U3RhdGlzdGljcy9jbmFtZS1jbG9ha2luZy10b3AtY25hbWUtc3ViLW5vLWNuYW1lLmh0bWwgYi9M
YXlvdXRUZXN0cy9odHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvY25hbWUtY2xvYWtp
bmctdG9wLWNuYW1lLXN1Yi1uby1jbmFtZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjAxY2FkNDM5YjdmYzE2
N2E2Yzk0OWY3MGE5MTAwZTY5YTdjZmIyMzYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvY25hbWUtY2xvYWtpbmctdG9wLWNu
YW1lLXN1Yi1uby1jbmFtZS5odG1sCkBAIC0wLDAgKzEsNjUgQEAKKzwhRE9DVFlQRSBodG1sPgor
PGh0bWwgbGFuZz0iZW4iPgorPGhlYWQ+CisgICAgPG1ldGEgY2hhcnNldD0iVVRGLTgiPgorICAg
IDxzY3JpcHQgc3JjPSIvanMtdGVzdC1yZXNvdXJjZXMvanMtdGVzdC5qcyI+PC9zY3JpcHQ+Cisg
ICAgPHNjcmlwdCBzcmM9Ii9jb29raWVzL3Jlc291cmNlcy9jb29raWUtdXRpbGl0aWVzLmpzIj48
L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3V0aWwuanMiPjwvc2NyaXB0Pgor
PC9oZWFkPgorPGJvZHkgb25sb2FkPSJydW5UZXN0KCkiPgorPHNjcmlwdD4KKyAgICBkZXNjcmlw
dGlvbigiVGVzdCBmb3IgQ05BTUUgQ2xvYWtpbmc6IE5vIGNvb2tpZSBleHBpcnkgY2FwcGluZyBp
ZiB0aGUgdG9wIGZyYW1lIGhhcyBhbiBhbHRlcm5hdGUgQ05BTUUgYW5kIHRoZSBzdWIgcmVzb3Vy
Y2UgaGFzIG5vIGFsdGVybmF0ZSBDTkFNRS4iKTsKKyAgICBqc1Rlc3RJc0FzeW5jID0gdHJ1ZTsK
KworICAgIGZ1bmN0aW9uIGZpbmlzaFRlc3QoKSB7CisgICAgICAgIHJlc2V0Q29va2llc0ZvckN1
cnJlbnRPcmlnaW4oKTsKKyAgICAgICAgc2V0RW5hYmxlRmVhdHVyZShmYWxzZSwgZnVuY3Rpb24o
KSB7CisgICAgICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAgICAgICAgfSk7CisgICAgfQorCisg
ICAgZnVuY3Rpb24gY2hlY2tDb29raWVFeHBpcnkoY29va2llRGF0YSwgc2Vjb25kcywgc2hvdWxk
QmVMZXNzVGhhbikgeworICAgICAgICBsZXQgbm93ID0gbmV3IERhdGUoKTsKKyAgICAgICAgbGV0
IGV4cGlyeURhdGVJbk1pbGxpc2Vjb25kcyA9IG5vdy5nZXRUaW1lKCkgKyAoc2Vjb25kcyAqIDEw
MDApOworCisgICAgICAgIGlmICgoY29va2llRGF0YVsiZXhwaXJlcyJdIDwgZXhwaXJ5RGF0ZUlu
TWlsbGlzZWNvbmRzKSA9PT0gc2hvdWxkQmVMZXNzVGhhbikKKyAgICAgICAgICAgIHRlc3RQYXNz
ZWQoIkNvb2tpZSBuYW1lZCAiICsgY29va2llRGF0YVsibmFtZSJdICsgIiBleHBpcmVzIGluICIg
KyAoc2hvdWxkQmVMZXNzVGhhbiA/ICJsZXNzIiA6ICJtb3JlIikgKyAiIHRoYW4gIiArIHNlY29u
ZHMgKyAiIHNlY29uZHMuIik7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHRlc3RGYWlsZWQo
IkNvb2tpZSBuYW1lZCAiICsgY29va2llRGF0YVsibmFtZSJdICsgIiBleHBpcmVzIGluICIgKyAo
c2hvdWxkQmVMZXNzVGhhbiA/ICJtb3JlIiA6ICJsZXNzIikgKyAiIHRoYW4gIiArIHNlY29uZHMg
KyAiIHNlY29uZHMuIik7CisgICAgfQorCisgICAgY29uc3Qgb25lV2Vla0luU2Vjb25kcyA9IDcg
KiAyNCAqIDYwICogNjA7CisgICAgY29uc3Qgb3Zlck9uZVdlZWtJblNlY29uZHMgPSBvbmVXZWVr
SW5TZWNvbmRzICsgNjAwOworICAgIGNvbnN0IGNvb2tpZU5hbWUgPSAiY25hbWVUZXN0Q29va2ll
IjsKKyAgICBjb25zdCBzdWJQYXRoVG9TZXRGaXJzdFBhcnR5Q29va2llID0gInJlc291cmNlcy9z
ZXQtY29va2llLnBocD9uYW1lPSIgKyBjb29raWVOYW1lICsgIiZ2YWx1ZT12YWx1ZSZkdW1teT0i
ICsgTWF0aC5yYW5kb20oKTsKKworICAgIGZ1bmN0aW9uIHNldEFuZENoZWNrQ29va2llKCkgewor
ICAgICAgICBmZXRjaChzdWJQYXRoVG9TZXRGaXJzdFBhcnR5Q29va2llKS50aGVuKGZ1bmN0aW9u
KCkgeworICAgICAgICAgICAgaWYgKGludGVybmFscykgeworICAgICAgICAgICAgICAgIGxldCBj
b29raWVzID0gaW50ZXJuYWxzLmdldENvb2tpZXMoKTsKKyAgICAgICAgICAgICAgICBpZiAoIWNv
b2tpZXMubGVuZ3RoKQorICAgICAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJObyBjb29raWVz
IGZvdW5kLiIpOworICAgICAgICAgICAgICAgIGZvciAobGV0IGNvb2tpZSBvZiBjb29raWVzKSB7
CisgICAgICAgICAgICAgICAgICAgIGlmIChjb29raWUubmFtZSA9PT0gY29va2llTmFtZSkgewor
ICAgICAgICAgICAgICAgICAgICAgICAgY2hlY2tDb29raWVFeHBpcnkoY29va2llLCBvdmVyT25l
V2Vla0luU2Vjb25kcywgZmFsc2UpOworICAgICAgICAgICAgICAgICAgICB9IGVsc2UgeworICAg
ICAgICAgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiVW5rbm93biBjb29raWUgIiArIGNvb2tp
ZS5uYW1lICsgIiBmb3VuZC4iKTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgICAgICBmaW5pc2hUZXN0KCk7CisgICAgICAgICAgICB9CisgICAg
ICAgIH0pOworICAgIH0KKworICAgIGNvbnN0IGZpcnN0UGFydHkgPSAiaHR0cDovLzEyNy4wLjAu
MTo4MDAwIjsKKyAgICBjb25zdCBmaXJzdFBhcnR5Q05BTUVGb3JUZXN0aW5nID0gImh0dHA6Ly90
ZXN0d2Via2l0Lm9yZyI7CisKKyAgICBmdW5jdGlvbiBydW5UZXN0KCkgeworICAgICAgICBzZXRF
bmFibGVGZWF0dXJlKHRydWUsIGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgdGVzdFJ1bm5lci5z
dGF0aXN0aWNzU2V0Rmlyc3RQYXJ0eUhvc3RDTkFNRURvbWFpbihmaXJzdFBhcnR5LCBmaXJzdFBh
cnR5Q05BTUVGb3JUZXN0aW5nLCBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgICAgICBzZXRBbmRD
aGVja0Nvb2tpZSgpOworICAgICAgICAgICAgfSk7CisgICAgICAgIH0pOworICAgIH0KKzwvc2Ny
aXB0PgorPC9ib2R5PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9yZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzL2NuYW1lLWNsb2FraW5nLXRvcC1uby1jbmFtZS1zdWItMXAtY25hbWUt
ZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0
aWNzL2NuYW1lLWNsb2FraW5nLXRvcC1uby1jbmFtZS1zdWItMXAtY25hbWUtZXhwZWN0ZWQudHh0
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLmFiZmEyOTljY2FkNzBmNjUwZWI2MGE2ZTkwODFmYjkyMmMxNzQxMzkKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRp
c3RpY3MvY25hbWUtY2xvYWtpbmctdG9wLW5vLWNuYW1lLXN1Yi0xcC1jbmFtZS1leHBlY3RlZC50
eHQKQEAgLTAsMCArMSwxMCBAQAorVGVzdCBmb3IgQ05BTUUgQ2xvYWtpbmc6IE5vIGNvb2tpZSBl
eHBpcnkgY2FwcGluZyBpZiB0aGUgdG9wIGZyYW1lIGhhcyBubyBhbHRlcm5hdGUgQ05BTUUgYW5k
IHRoZSBzdWIgcmVzb3VyY2UgaGFzIGFuIGFsdGVybmF0ZSBDTkFNRSB0aGF0IG1hdGNoZXMgdGhl
IGZpcnN0IHBhcnR5IChub3QgaXRzIENOQU1FKS4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2Vl
IGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUi
LgorCisKK1BBU1MgQ29va2llIG5hbWVkIGNuYW1lVGVzdENvb2tpZSBleHBpcmVzIGluIG1vcmUg
dGhhbiA2MDU0MDAgc2Vjb25kcy4KK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKwor
VEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3Jlc291
cmNlTG9hZFN0YXRpc3RpY3MvY25hbWUtY2xvYWtpbmctdG9wLW5vLWNuYW1lLXN1Yi0xcC1jbmFt
ZS5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL2Nu
YW1lLWNsb2FraW5nLXRvcC1uby1jbmFtZS1zdWItMXAtY25hbWUuaHRtbApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4y
NzM3NDY0NTgzYjVkNDgwNWJlYmY5M2E4NDBlNWQwNzc2NDQ4OGYxCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL2NuYW1lLWNs
b2FraW5nLXRvcC1uby1jbmFtZS1zdWItMXAtY25hbWUuaHRtbApAQCAtMCwwICsxLDY1IEBACis8
IURPQ1RZUEUgaHRtbD4KKzxodG1sIGxhbmc9ImVuIj4KKzxoZWFkPgorICAgIDxtZXRhIGNoYXJz
ZXQ9IlVURi04Ij4KKyAgICA8c2NyaXB0IHNyYz0iL2pzLXRlc3QtcmVzb3VyY2VzL2pzLXRlc3Qu
anMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPSIvY29va2llcy9yZXNvdXJjZXMvY29va2ll
LXV0aWxpdGllcy5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9InJlc291cmNlcy91dGls
LmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5IG9ubG9hZD0icnVuVGVzdCgpIj4KKzxzY3Jp
cHQ+CisgICAgZGVzY3JpcHRpb24oIlRlc3QgZm9yIENOQU1FIENsb2FraW5nOiBObyBjb29raWUg
ZXhwaXJ5IGNhcHBpbmcgaWYgdGhlIHRvcCBmcmFtZSBoYXMgbm8gYWx0ZXJuYXRlIENOQU1FIGFu
ZCB0aGUgc3ViIHJlc291cmNlIGhhcyBhbiBhbHRlcm5hdGUgQ05BTUUgdGhhdCBtYXRjaGVzIHRo
ZSBmaXJzdCBwYXJ0eSAobm90IGl0cyBDTkFNRSkuIik7CisgICAganNUZXN0SXNBc3luYyA9IHRy
dWU7CisKKyAgICBmdW5jdGlvbiBmaW5pc2hUZXN0KCkgeworICAgICAgICByZXNldENvb2tpZXNG
b3JDdXJyZW50T3JpZ2luKCk7CisgICAgICAgIHNldEVuYWJsZUZlYXR1cmUoZmFsc2UsIGZ1bmN0
aW9uKCkgeworICAgICAgICAgICAgZmluaXNoSlNUZXN0KCk7CisgICAgICAgIH0pOworICAgIH0K
KworICAgIGZ1bmN0aW9uIGNoZWNrQ29va2llRXhwaXJ5KGNvb2tpZURhdGEsIHNlY29uZHMsIHNo
b3VsZEJlTGVzc1RoYW4pIHsKKyAgICAgICAgbGV0IG5vdyA9IG5ldyBEYXRlKCk7CisgICAgICAg
IGxldCBleHBpcnlEYXRlSW5NaWxsaXNlY29uZHMgPSBub3cuZ2V0VGltZSgpICsgKHNlY29uZHMg
KiAxMDAwKTsKKworICAgICAgICBpZiAoKGNvb2tpZURhdGFbImV4cGlyZXMiXSA8IGV4cGlyeURh
dGVJbk1pbGxpc2Vjb25kcykgPT09IHNob3VsZEJlTGVzc1RoYW4pCisgICAgICAgICAgICB0ZXN0
UGFzc2VkKCJDb29raWUgbmFtZWQgIiArIGNvb2tpZURhdGFbIm5hbWUiXSArICIgZXhwaXJlcyBp
biAiICsgKHNob3VsZEJlTGVzc1RoYW4gPyAibGVzcyIgOiAibW9yZSIpICsgIiB0aGFuICIgKyBz
ZWNvbmRzICsgIiBzZWNvbmRzLiIpOworICAgICAgICBlbHNlCisgICAgICAgICAgICB0ZXN0RmFp
bGVkKCJDb29raWUgbmFtZWQgIiArIGNvb2tpZURhdGFbIm5hbWUiXSArICIgZXhwaXJlcyBpbiAi
ICsgKHNob3VsZEJlTGVzc1RoYW4gPyAibW9yZSIgOiAibGVzcyIpICsgIiB0aGFuICIgKyBzZWNv
bmRzICsgIiBzZWNvbmRzLiIpOworICAgIH0KKworICAgIGNvbnN0IG9uZVdlZWtJblNlY29uZHMg
PSA3ICogMjQgKiA2MCAqIDYwOworICAgIGNvbnN0IG92ZXJPbmVXZWVrSW5TZWNvbmRzID0gb25l
V2Vla0luU2Vjb25kcyArIDYwMDsKKyAgICBjb25zdCBjb29raWVOYW1lID0gImNuYW1lVGVzdENv
b2tpZSI7CisgICAgY29uc3Qgc3ViUGF0aFRvU2V0Rmlyc3RQYXJ0eUNvb2tpZSA9ICJyZXNvdXJj
ZXMvc2V0LWNvb2tpZS5waHA/bmFtZT0iICsgY29va2llTmFtZSArICImdmFsdWU9dmFsdWUmZHVt
bXk9IiArIE1hdGgucmFuZG9tKCk7CisKKyAgICBmdW5jdGlvbiBzZXRBbmRDaGVja0Nvb2tpZSgp
IHsKKyAgICAgICAgZmV0Y2goc3ViUGF0aFRvU2V0Rmlyc3RQYXJ0eUNvb2tpZSkudGhlbihmdW5j
dGlvbigpIHsKKyAgICAgICAgICAgIGlmIChpbnRlcm5hbHMpIHsKKyAgICAgICAgICAgICAgICBs
ZXQgY29va2llcyA9IGludGVybmFscy5nZXRDb29raWVzKCk7CisgICAgICAgICAgICAgICAgaWYg
KCFjb29raWVzLmxlbmd0aCkKKyAgICAgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiTm8gY29v
a2llcyBmb3VuZC4iKTsKKyAgICAgICAgICAgICAgICBmb3IgKGxldCBjb29raWUgb2YgY29va2ll
cykgeworICAgICAgICAgICAgICAgICAgICBpZiAoY29va2llLm5hbWUgPT09IGNvb2tpZU5hbWUp
IHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNoZWNrQ29va2llRXhwaXJ5KGNvb2tpZSwgb3Zl
ck9uZVdlZWtJblNlY29uZHMsIGZhbHNlKTsKKyAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsK
KyAgICAgICAgICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoIlVua25vd24gY29va2llICIgKyBj
b29raWUubmFtZSArICIgZm91bmQuIik7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgICAgICB9CisgICAgICAgICAgICAgICAgZmluaXNoVGVzdCgpOworICAgICAgICAgICAgfQor
ICAgICAgICB9KTsKKyAgICB9CisKKyAgICBjb25zdCBmaXJzdFBhcnR5ID0gImh0dHA6Ly8xMjcu
MC4wLjE6ODAwMCI7CisgICAgY29uc3QgdGhpcmRQYXJ0eUNOQU1FRm9yVGVzdGluZyA9IGZpcnN0
UGFydHk7CisKKyAgICBmdW5jdGlvbiBydW5UZXN0KCkgeworICAgICAgICBzZXRFbmFibGVGZWF0
dXJlKHRydWUsIGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgdGVzdFJ1bm5lci5zdGF0aXN0aWNz
U2V0VGhpcmRQYXJ0eUNOQU1FRG9tYWluKHRoaXJkUGFydHlDTkFNRUZvclRlc3RpbmcsIGZ1bmN0
aW9uKCkgeworICAgICAgICAgICAgICAgIHNldEFuZENoZWNrQ29va2llKCk7CisgICAgICAgICAg
ICB9KTsKKyAgICAgICAgfSk7CisgICAgfQorPC9zY3JpcHQ+Cis8L2JvZHk+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvY25hbWUtY2xv
YWtpbmctdG9wLW5vLWNuYW1lLXN1Yi0zcC1jbmFtZS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvY25hbWUtY2xvYWtpbmctdG9wLW5v
LWNuYW1lLXN1Yi0zcC1jbmFtZS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDVkMmVkNmZkN2Y2
MWM2MWU3YzAwYjJlZTg1OGRjYTdmMzgxOGRlNAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2h0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9jbmFtZS1jbG9ha2luZy10b3At
bm8tY25hbWUtc3ViLTNwLWNuYW1lLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDEwIEBACitUZXN0
IGZvciBDTkFNRSBDbG9ha2luZzogQ29va2llIGV4cGlyeSBjYXBwaW5nIGlmIHRoZSB0b3AgZnJh
bWUgaGFzIG5vIGFsdGVybmF0ZSBDTkFNRSBhbmQgdGhlIHN1YiByZXNvdXJjZSBoYXMgYW4gYWx0
ZXJuYXRlIENOQU1FLgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBB
U1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworUEFTUyBDb29r
aWUgbmFtZWQgY25hbWVUZXN0Q29va2llIGV4cGlyZXMgaW4gbGVzcyB0aGFuIDYwNTQwMCBzZWNv
bmRzLgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGlj
cy9jbmFtZS1jbG9ha2luZy10b3Atbm8tY25hbWUtc3ViLTNwLWNuYW1lLmh0bWwgYi9MYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvY25hbWUtY2xvYWtpbmctdG9w
LW5vLWNuYW1lLXN1Yi0zcC1jbmFtZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmI1YWM0OTdmOTMzNmUzMmNi
YmZkYTk3M2U5MGM0MGEzNzkwZGU4YTcKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9o
dHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvY25hbWUtY2xvYWtpbmctdG9wLW5vLWNu
YW1lLXN1Yi0zcC1jbmFtZS5odG1sCkBAIC0wLDAgKzEsNzEgQEAKKzwhRE9DVFlQRSBodG1sPgor
PGh0bWwgbGFuZz0iZW4iPgorPGhlYWQ+CisgICAgPG1ldGEgY2hhcnNldD0iVVRGLTgiPgorICAg
IDxzY3JpcHQgc3JjPSIvanMtdGVzdC1yZXNvdXJjZXMvanMtdGVzdC5qcyI+PC9zY3JpcHQ+Cisg
ICAgPHNjcmlwdCBzcmM9Ii9jb29raWVzL3Jlc291cmNlcy9jb29raWUtdXRpbGl0aWVzLmpzIj48
L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3V0aWwuanMiPjwvc2NyaXB0Pgor
PC9oZWFkPgorPGJvZHkgb25sb2FkPSJydW5UZXN0KCkiPgorPHNjcmlwdD4KKyAgICBkZXNjcmlw
dGlvbigiVGVzdCBmb3IgQ05BTUUgQ2xvYWtpbmc6IENvb2tpZSBleHBpcnkgY2FwcGluZyBpZiB0
aGUgdG9wIGZyYW1lIGhhcyBubyBhbHRlcm5hdGUgQ05BTUUgYW5kIHRoZSBzdWIgcmVzb3VyY2Ug
aGFzIGFuIGFsdGVybmF0ZSBDTkFNRS4iKTsKKyAgICBqc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKwor
ICAgIGZ1bmN0aW9uIGZpbmlzaFRlc3QoKSB7CisgICAgICAgIHJlc2V0Q29va2llc0ZvckN1cnJl
bnRPcmlnaW4oKTsKKyAgICAgICAgc2V0RW5hYmxlRmVhdHVyZShmYWxzZSwgZnVuY3Rpb24oKSB7
CisgICAgICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAgICAgICAgfSk7CisgICAgfQorCisgICAg
Y29uc3Qgb25lV2Vla0luU2Vjb25kcyA9IDcgKiAyNCAqIDYwICogNjA7CisgICAgY29uc3Qgb3Zl
ck9uZVdlZWtJblNlY29uZHMgPSBvbmVXZWVrSW5TZWNvbmRzICsgNjAwOworICAgIGNvbnN0IHVu
ZGVyT25lV2Vla0luU2Vjb25kcyA9IG9uZVdlZWtJblNlY29uZHMgLSA2MDA7CisKKyAgICBmdW5j
dGlvbiBjaGVja0Nvb2tpZUV4cGlyeShjb29raWVEYXRhLCBzZWNvbmRzLCBzaG91bGRCZUxlc3NU
aGFuKSB7CisgICAgICAgIGxldCBub3cgPSBuZXcgRGF0ZSgpOworICAgICAgICBsZXQgZXhwaXJ5
RGF0ZUluTWlsbGlzZWNvbmRzID0gbm93LmdldFRpbWUoKSArIChzZWNvbmRzICogMTAwMCk7CisK
KyAgICAgICAgaWYgKChjb29raWVEYXRhWyJleHBpcmVzIl0gPCBleHBpcnlEYXRlSW5NaWxsaXNl
Y29uZHMpID09PSBzaG91bGRCZUxlc3NUaGFuKSB7CisgICAgICAgICAgICBsZXQgdW5kZXJPbmVX
ZWVrRXhwaXJ5RGF0ZUluTWlsbGlzZWNvbmRzID0gbm93LmdldFRpbWUoKSArICh1bmRlck9uZVdl
ZWtJblNlY29uZHMgKiAxMDAwKTsKKyAgICAgICAgICAgIGlmIChjb29raWVEYXRhWyJleHBpcmVz
Il0gPCB1bmRlck9uZVdlZWtFeHBpcnlEYXRlSW5NaWxsaXNlY29uZHMpCisgICAgICAgICAgICAg
ICAgdGVzdEZhaWxlZCgiQ29va2llIG5hbWVkICIgKyBjb29raWVEYXRhWyJuYW1lIl0gKyAiIHdh
cyBjYXBwZWQgdG9vIGxvdy4iKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICB0
ZXN0UGFzc2VkKCJDb29raWUgbmFtZWQgIiArIGNvb2tpZURhdGFbIm5hbWUiXSArICIgZXhwaXJl
cyBpbiAiICsgKHNob3VsZEJlTGVzc1RoYW4gPyAibGVzcyIgOiAibW9yZSIpICsgIiB0aGFuICIg
KyBzZWNvbmRzICsgIiBzZWNvbmRzLiIpOworICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgIHRl
c3RGYWlsZWQoIkNvb2tpZSBuYW1lZCAiICsgY29va2llRGF0YVsibmFtZSJdICsgIiBleHBpcmVz
IGluICIgKyAoc2hvdWxkQmVMZXNzVGhhbiA/ICJtb3JlIiA6ICJsZXNzIikgKyAiIHRoYW4gIiAr
IHNlY29uZHMgKyAiIHNlY29uZHMuIik7CisgICAgfQorCisgICAgY29uc3QgY29va2llTmFtZSA9
ICJjbmFtZVRlc3RDb29raWUiOworICAgIGNvbnN0IHN1YlBhdGhUb1NldEZpcnN0UGFydHlDb29r
aWUgPSAicmVzb3VyY2VzL3NldC1jb29raWUucGhwP25hbWU9IiArIGNvb2tpZU5hbWUgKyAiJnZh
bHVlPXZhbHVlJmR1bW15PSIgKyBNYXRoLnJhbmRvbSgpOworCisgICAgZnVuY3Rpb24gc2V0QW5k
Q2hlY2tDb29raWUoKSB7CisgICAgICAgIGZldGNoKHN1YlBhdGhUb1NldEZpcnN0UGFydHlDb29r
aWUpLnRoZW4oZnVuY3Rpb24oKSB7CisgICAgICAgICAgICBpZiAoaW50ZXJuYWxzKSB7CisgICAg
ICAgICAgICAgICAgbGV0IGNvb2tpZXMgPSBpbnRlcm5hbHMuZ2V0Q29va2llcygpOworICAgICAg
ICAgICAgICAgIGlmICghY29va2llcy5sZW5ndGgpCisgICAgICAgICAgICAgICAgICAgIHRlc3RG
YWlsZWQoIk5vIGNvb2tpZXMgZm91bmQuIik7CisgICAgICAgICAgICAgICAgZm9yIChsZXQgY29v
a2llIG9mIGNvb2tpZXMpIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGNvb2tpZS5uYW1lID09
PSBjb29raWVOYW1lKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBjaGVja0Nvb2tpZUV4cGly
eShjb29raWUsIG92ZXJPbmVXZWVrSW5TZWNvbmRzLCB0cnVlKTsKKyAgICAgICAgICAgICAgICAg
ICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoIlVua25vd24g
Y29va2llICIgKyBjb29raWUubmFtZSArICIgZm91bmQuIik7CisgICAgICAgICAgICAgICAgICAg
IH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgZmluaXNoVGVzdCgpOworICAg
ICAgICAgICAgfQorICAgICAgICB9KTsKKyAgICB9CisKKyAgICBjb25zdCBmaXJzdFBhcnR5ID0g
Imh0dHA6Ly8xMjcuMC4wLjE6ODAwMCI7CisgICAgY29uc3QgdGhpcmRQYXJ0eUNOQU1FRm9yVGVz
dGluZyA9ICJodHRwOi8vM3JkcGFydHl0ZXN0d2Via2l0Lm9yZyI7CisKKyAgICBmdW5jdGlvbiBy
dW5UZXN0KCkgeworICAgICAgICBzZXRFbmFibGVGZWF0dXJlKHRydWUsIGZ1bmN0aW9uKCkgewor
ICAgICAgICAgICAgdGVzdFJ1bm5lci5zdGF0aXN0aWNzU2V0VGhpcmRQYXJ0eUNOQU1FRG9tYWlu
KHRoaXJkUGFydHlDTkFNRUZvclRlc3RpbmcsIGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgICAg
IHNldEFuZENoZWNrQ29va2llKCk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgfSk7CisgICAg
fQorPC9zY3JpcHQ+Cis8L2JvZHk+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvY25hbWUtY2xvYWtpbmctdG9wLW5vLWNuYW1lLXN1Yi1u
by1jbmFtZS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3Jlc291cmNlTG9h
ZFN0YXRpc3RpY3MvY25hbWUtY2xvYWtpbmctdG9wLW5vLWNuYW1lLXN1Yi1uby1jbmFtZS1leHBl
Y3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNjA1Yzk5YzA0NzcwMjUzNmFlODI3MWQ2ZWRhMjkxYjFkNGY0
MGJlYwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvcmVzb3VyY2VM
b2FkU3RhdGlzdGljcy9jbmFtZS1jbG9ha2luZy10b3Atbm8tY25hbWUtc3ViLW5vLWNuYW1lLWV4
cGVjdGVkLnR4dApAQCAtMCwwICsxLDEwIEBACitUZXN0IGZvciBDTkFNRSBDbG9ha2luZzogTm8g
Y29va2llIGV4cGlyeSBjYXBwaW5nIGlmIHRoZSB0b3AgZnJhbWUgaGFzIG5vIGFsdGVybmF0ZSBD
TkFNRSBhbmQgdGhlIHN1YiByZXNvdXJjZSBoYXMgbm8gYWx0ZXJuYXRlIENOQU1FLgorCitPbiBz
dWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dl
ZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworUEFTUyBDb29raWUgbmFtZWQgY25hbWVUZXN0Q29v
a2llIGV4cGlyZXMgaW4gbW9yZSB0aGFuIDYwNTQwMCBzZWNvbmRzLgorUEFTUyBzdWNjZXNzZnVs
bHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2h0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9jbmFtZS1jbG9ha2luZy10b3At
bm8tY25hbWUtc3ViLW5vLWNuYW1lLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3Jlc291
cmNlTG9hZFN0YXRpc3RpY3MvY25hbWUtY2xvYWtpbmctdG9wLW5vLWNuYW1lLXN1Yi1uby1jbmFt
ZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjY2M2Y5YmY2NjY4NWNhMDk0YTQ5ZTRmZGJjZjg5YjhlZjZiNTNm
OTEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3Jlc291cmNlTG9h
ZFN0YXRpc3RpY3MvY25hbWUtY2xvYWtpbmctdG9wLW5vLWNuYW1lLXN1Yi1uby1jbmFtZS5odG1s
CkBAIC0wLDAgKzEsNjAgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWwgbGFuZz0iZW4iPgorPGhl
YWQ+CisgICAgPG1ldGEgY2hhcnNldD0iVVRGLTgiPgorICAgIDxzY3JpcHQgc3JjPSIvanMtdGVz
dC1yZXNvdXJjZXMvanMtdGVzdC5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9Ii9jb29r
aWVzL3Jlc291cmNlcy9jb29raWUtdXRpbGl0aWVzLmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0
IHNyYz0icmVzb3VyY2VzL3V0aWwuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHkgb25sb2Fk
PSJydW5UZXN0KCkiPgorPHNjcmlwdD4KKyAgICBkZXNjcmlwdGlvbigiVGVzdCBmb3IgQ05BTUUg
Q2xvYWtpbmc6IE5vIGNvb2tpZSBleHBpcnkgY2FwcGluZyBpZiB0aGUgdG9wIGZyYW1lIGhhcyBu
byBhbHRlcm5hdGUgQ05BTUUgYW5kIHRoZSBzdWIgcmVzb3VyY2UgaGFzIG5vIGFsdGVybmF0ZSBD
TkFNRS4iKTsKKyAgICBqc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKworICAgIGZ1bmN0aW9uIGZpbmlz
aFRlc3QoKSB7CisgICAgICAgIHJlc2V0Q29va2llc0ZvckN1cnJlbnRPcmlnaW4oKTsKKyAgICAg
ICAgc2V0RW5hYmxlRmVhdHVyZShmYWxzZSwgZnVuY3Rpb24oKSB7CisgICAgICAgICAgICBmaW5p
c2hKU1Rlc3QoKTsKKyAgICAgICAgfSk7CisgICAgfQorCisgICAgZnVuY3Rpb24gY2hlY2tDb29r
aWVFeHBpcnkoY29va2llRGF0YSwgc2Vjb25kcywgc2hvdWxkQmVMZXNzVGhhbikgeworICAgICAg
ICBsZXQgbm93ID0gbmV3IERhdGUoKTsKKyAgICAgICAgbGV0IGV4cGlyeURhdGVJbk1pbGxpc2Vj
b25kcyA9IG5vdy5nZXRUaW1lKCkgKyAoc2Vjb25kcyAqIDEwMDApOworCisgICAgICAgIGlmICgo
Y29va2llRGF0YVsiZXhwaXJlcyJdIDwgZXhwaXJ5RGF0ZUluTWlsbGlzZWNvbmRzKSA9PT0gc2hv
dWxkQmVMZXNzVGhhbikKKyAgICAgICAgICAgIHRlc3RQYXNzZWQoIkNvb2tpZSBuYW1lZCAiICsg
Y29va2llRGF0YVsibmFtZSJdICsgIiBleHBpcmVzIGluICIgKyAoc2hvdWxkQmVMZXNzVGhhbiA/
ICJsZXNzIiA6ICJtb3JlIikgKyAiIHRoYW4gIiArIHNlY29uZHMgKyAiIHNlY29uZHMuIik7Cisg
ICAgICAgIGVsc2UKKyAgICAgICAgICAgIHRlc3RGYWlsZWQoIkNvb2tpZSBuYW1lZCAiICsgY29v
a2llRGF0YVsibmFtZSJdICsgIiBleHBpcmVzIGluICIgKyAoc2hvdWxkQmVMZXNzVGhhbiA/ICJt
b3JlIiA6ICJsZXNzIikgKyAiIHRoYW4gIiArIHNlY29uZHMgKyAiIHNlY29uZHMuIik7CisgICAg
fQorCisgICAgY29uc3Qgb25lV2Vla0luU2Vjb25kcyA9IDcgKiAyNCAqIDYwICogNjA7CisgICAg
Y29uc3Qgb3Zlck9uZVdlZWtJblNlY29uZHMgPSBvbmVXZWVrSW5TZWNvbmRzICsgNjAwOworICAg
IGNvbnN0IGNvb2tpZU5hbWUgPSAiY25hbWVUZXN0Q29va2llIjsKKyAgICBjb25zdCBzdWJQYXRo
VG9TZXRGaXJzdFBhcnR5Q29va2llID0gInJlc291cmNlcy9zZXQtY29va2llLnBocD9uYW1lPSIg
KyBjb29raWVOYW1lICsgIiZ2YWx1ZT12YWx1ZSZkdW1teT0iICsgTWF0aC5yYW5kb20oKTsKKwor
ICAgIGZ1bmN0aW9uIHNldEFuZENoZWNrQ29va2llKCkgeworICAgICAgICBmZXRjaChzdWJQYXRo
VG9TZXRGaXJzdFBhcnR5Q29va2llKS50aGVuKGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgaWYg
KGludGVybmFscykgeworICAgICAgICAgICAgICAgIGxldCBjb29raWVzID0gaW50ZXJuYWxzLmdl
dENvb2tpZXMoKTsKKyAgICAgICAgICAgICAgICBpZiAoIWNvb2tpZXMubGVuZ3RoKQorICAgICAg
ICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJObyBjb29raWVzIGZvdW5kLiIpOworICAgICAgICAg
ICAgICAgIGZvciAobGV0IGNvb2tpZSBvZiBjb29raWVzKSB7CisgICAgICAgICAgICAgICAgICAg
IGlmIChjb29raWUubmFtZSA9PT0gY29va2llTmFtZSkgeworICAgICAgICAgICAgICAgICAgICAg
ICAgY2hlY2tDb29raWVFeHBpcnkoY29va2llLCBvdmVyT25lV2Vla0luU2Vjb25kcywgZmFsc2Up
OworICAgICAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICAgICAg
dGVzdEZhaWxlZCgiVW5rbm93biBjb29raWUgIiArIGNvb2tpZS5uYW1lICsgIiBmb3VuZC4iKTsK
KyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAg
ICBmaW5pc2hUZXN0KCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0pOworICAgIH0KKworICAg
IGZ1bmN0aW9uIHJ1blRlc3QoKSB7CisgICAgICAgIHNldEVuYWJsZUZlYXR1cmUodHJ1ZSwgZnVu
Y3Rpb24oKSB7CisgICAgICAgICAgICBzZXRBbmRDaGVja0Nvb2tpZSgpOworICAgICAgICB9KTsK
KyAgICB9Cis8L3NjcmlwdD4KKzwvYm9keT4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRm
b3JtL2lvcy0xMy9UZXN0RXhwZWN0YXRpb25zIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vaW9zLTEz
L1Rlc3RFeHBlY3RhdGlvbnMKaW5kZXggNGMzYmExZTA2YmZkMzY1NTY3ZGUyNzdkNmE2OGFmMDZk
NGM1MDg0ZS4uNTA3YjQ3MTBkZjg0MDUwNmMyNDVkNjlkNmJhZTA3NDE2MzU4OTk1NCAxMDA2NDQK
LS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vaW9zLTEzL1Rlc3RFeHBlY3RhdGlvbnMKKysrIGIv
TGF5b3V0VGVzdHMvcGxhdGZvcm0vaW9zLTEzL1Rlc3RFeHBlY3RhdGlvbnMKQEAgLTEsMyArMSwx
MiBAQAogIyBDZXJ0YWluIHZlcnNpb25zIG9mIGlPUyB1c2UgZGlmZmVyZW50IHRleHQgc2VjdXJp
dHkgY2hhcmFjdGVycy4KIHdlYmtpdC5vcmcvYi8yMDk2OTIgcGxhdGZvcm0vaW9zL2Zhc3QvdGV4
dC90ZXh0LXNlY3VyaXR5LWRpc2MtYnVsbGV0LXB1YS1pb3MtbmV3Lmh0bWwgWyBJbWFnZU9ubHlG
YWlsdXJlIF0KLXdlYmtpdC5vcmcvYi8yMDk2OTIgZmFzdC90ZXh0L3RleHQtc2VjdXJpdHktZGlz
Yy1idWxsZXQtcHVhLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KXCBObyBuZXdsaW5lIGF0IGVu
ZCBvZiBmaWxlCit3ZWJraXQub3JnL2IvMjA5NjkyIGZhc3QvdGV4dC90ZXh0LXNlY3VyaXR5LWRp
c2MtYnVsbGV0LXB1YS5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCisKKyMgVGhlIENOQU1FIGFu
ZCBjb29raWUgdHJhbnNmb3JtIFNQSXMgYXJlIG9ubHkgYXZhaWxhYmxlIGluIGlPUyAxNCBhbmQg
YWJvdmUuCitodHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvY25hbWUtY2xvYWtpbmct
dG9wLWNuYW1lLXN1Yi0xcC1jbmFtZS5odG1sIFsgU2tpcCBdCitodHRwL3Rlc3RzL3Jlc291cmNl
TG9hZFN0YXRpc3RpY3MvY25hbWUtY2xvYWtpbmctdG9wLWNuYW1lLXN1Yi0zcC1jbmFtZS5odG1s
IFsgU2tpcCBdCitodHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvY25hbWUtY2xvYWtp
bmctdG9wLWNuYW1lLXN1Yi1tYXRjaGluZy1jbmFtZS5odG1sIFsgU2tpcCBdCitodHRwL3Rlc3Rz
L3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvY25hbWUtY2xvYWtpbmctdG9wLWNuYW1lLXN1Yi1uby1j
bmFtZS5odG1sIFsgU2tpcCBdCitodHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvY25h
bWUtY2xvYWtpbmctdG9wLW5vLWNuYW1lLXN1Yi0xcC1jbmFtZS5odG1sIFsgU2tpcCBdCitodHRw
L3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvY25hbWUtY2xvYWtpbmctdG9wLW5vLWNuYW1l
LXN1Yi0zcC1jbmFtZS5odG1sIFsgU2tpcCBdCitodHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRp
c3RpY3MvY25hbWUtY2xvYWtpbmctdG9wLW5vLWNuYW1lLXN1Yi1uby1jbmFtZS5odG1sIFsgU2tp
cCBdCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9pb3Mtd2syL1Rlc3RFeHBlY3Rh
dGlvbnMgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9pb3Mtd2syL1Rlc3RFeHBlY3RhdGlvbnMKaW5k
ZXggYmJhYjRhYTdjODQ2NTU0YTUxMDZlMDY3MmFiNTI4Y2E1MTA4NmFmYS4uZDY0YjhiM2IxN2M3
MTY4NTcyZTMzOWIwYjgxNGU4NzAwOWMyZjk3MyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxh
dGZvcm0vaW9zLXdrMi9UZXN0RXhwZWN0YXRpb25zCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3Jt
L2lvcy13azIvVGVzdEV4cGVjdGF0aW9ucwpAQCAtODIsNiArODIsMTUgQEAgc2Nyb2xsaW5nY29v
cmRpbmF0b3Ivbm9uLWZhc3Qtc2Nyb2xsYWJsZS1yZWdpb24tdHJhbnNmb3JtZWQtaWZyYW1lLmh0
bWwgWyBTa2lwIF0KIGh0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9zdHJpcC1yZWZl
cnJlci10by1vcmlnaW4tZm9yLXRoaXJkLXBhcnR5LXJlZGlyZWN0cy5odG1sIFsgUGFzcyBdCiBo
dHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3Mvc3RyaXAtcmVmZXJyZXItdG8tb3JpZ2lu
LWZvci10aGlyZC1wYXJ0eS1yZXF1ZXN0cy5odG1sIFsgUGFzcyBdCiAKKyMgVGhlIENOQU1FIGFu
ZCBjb29raWUgdHJhbnNmb3JtIFNQSXMgYXJlIG9ubHkgYXZhaWxhYmxlIGluIGlPUyAxNCBhbmQg
YWJvdmUuCitodHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvY25hbWUtY2xvYWtpbmct
dG9wLWNuYW1lLXN1Yi0xcC1jbmFtZS5odG1sIFsgUGFzcyBdCitodHRwL3Rlc3RzL3Jlc291cmNl
TG9hZFN0YXRpc3RpY3MvY25hbWUtY2xvYWtpbmctdG9wLWNuYW1lLXN1Yi0zcC1jbmFtZS5odG1s
IFsgUGFzcyBdCitodHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvY25hbWUtY2xvYWtp
bmctdG9wLWNuYW1lLXN1Yi1tYXRjaGluZy1jbmFtZS5odG1sIFsgUGFzcyBdCitodHRwL3Rlc3Rz
L3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvY25hbWUtY2xvYWtpbmctdG9wLWNuYW1lLXN1Yi1uby1j
bmFtZS5odG1sIFsgUGFzcyBdCitodHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvY25h
bWUtY2xvYWtpbmctdG9wLW5vLWNuYW1lLXN1Yi0xcC1jbmFtZS5odG1sIFsgUGFzcyBdCitodHRw
L3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvY25hbWUtY2xvYWtpbmctdG9wLW5vLWNuYW1l
LXN1Yi0zcC1jbmFtZS5odG1sIFsgUGFzcyBdCitodHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRp
c3RpY3MvY25hbWUtY2xvYWtpbmctdG9wLW5vLWNuYW1lLXN1Yi1uby1jbmFtZS5odG1sIFsgUGFz
cyBdCisKICMvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KICMgRW5kIHBsYXRmb3Jt
LXNwZWNpZmljIGRpcmVjdG9yaWVzLgogIy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
LwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMi9UZXN0RXhwZWN0YXRp
b25zIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMi9UZXN0RXhwZWN0YXRpb25zCmluZGV4
IDNkNzhhMThkYTUzZGYzZjA4MGFhMTNhNjRhZjQwMGQyZGRkODVjYTAuLjc5YjY4YWVkZWYzMzQy
ZTA3ZjRjNTQ2Mzg4N2M2MzZkMzY1MTg5OGIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRm
b3JtL21hYy13azIvVGVzdEV4cGVjdGF0aW9ucworKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9t
YWMtd2syL1Rlc3RFeHBlY3RhdGlvbnMKQEAgLTcxMyw2ICs3MTMsMTUgQEAgaHR0cC90ZXN0cy9y
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzL2NhcC1jYWNoZS1tYXgtYWdlLWZvci1wcmV2YWxlbnQtcmVz
b3VyY2UuaHRtbAogWyBDYXRhbGluYSsgXSBodHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3Rp
Y3MvZW5mb3JjZS1zYW1lc2l0ZS1zdHJpY3QtYmFzZWQtb24tdG9wLWZyYW1lLXVuaXF1ZS1yZWRp
cmVjdHMtdG8uaHRtbCBbIFBhc3MgXQogWyBDYXRhbGluYSsgXSBodHRwL3Rlc3RzL3Jlc291cmNl
TG9hZFN0YXRpc3RpY3MvZW5mb3JjZS1zYW1lc2l0ZS1zdHJpY3QtYmFzZWQtb24tdG9wLWZyYW1l
LXVuaXF1ZS1yZWRpcmVjdHMtdG8tZGF0YWJhc2UuaHRtbCBbIFBhc3MgXQogCisjIFRoZSBDTkFN
RSBhbmQgY29va2llIHRyYW5zZm9ybSBTUElzIGFyZSBvbmx5IGF2YWlsYWJsZSBpbiBtYWNPUyBC
aWcgU3VyIGFuZCBhYm92ZS4KK1sgQmlnU3VyKyBdIGh0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3Rh
dGlzdGljcy9jbmFtZS1jbG9ha2luZy10b3AtY25hbWUtc3ViLTFwLWNuYW1lLmh0bWwgWyBQYXNz
IF0KK1sgQmlnU3VyKyBdIGh0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9jbmFtZS1j
bG9ha2luZy10b3AtY25hbWUtc3ViLTNwLWNuYW1lLmh0bWwgWyBQYXNzIF0KK1sgQmlnU3VyKyBd
IGh0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9jbmFtZS1jbG9ha2luZy10b3AtY25h
bWUtc3ViLW1hdGNoaW5nLWNuYW1lLmh0bWwgWyBQYXNzIF0KK1sgQmlnU3VyKyBdIGh0dHAvdGVz
dHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9jbmFtZS1jbG9ha2luZy10b3AtY25hbWUtc3ViLW5v
LWNuYW1lLmh0bWwgWyBQYXNzIF0KK1sgQmlnU3VyKyBdIGh0dHAvdGVzdHMvcmVzb3VyY2VMb2Fk
U3RhdGlzdGljcy9jbmFtZS1jbG9ha2luZy10b3Atbm8tY25hbWUtc3ViLTFwLWNuYW1lLmh0bWwg
WyBQYXNzIF0KK1sgQmlnU3VyKyBdIGh0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9j
bmFtZS1jbG9ha2luZy10b3Atbm8tY25hbWUtc3ViLTNwLWNuYW1lLmh0bWwgWyBQYXNzIF0KK1sg
QmlnU3VyKyBdIGh0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9jbmFtZS1jbG9ha2lu
Zy10b3Atbm8tY25hbWUtc3ViLW5vLWNuYW1lLmh0bWwgWyBQYXNzIF0KKwogIyBTa2lwcGVkIGlu
IGdlbmVyYWwgZXhwZWN0YXRpb25zIHNpbmNlIHRoZXkgb25seSB3b3JrIG9uIGlPUyBhbmQgTWFj
LCBXSzIuCiBtZWRpYS9kZWFjdGl2YXRlLWF1ZGlvLXNlc3Npb24uaHRtbCBbIFBhc3MgXQogCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93azIvVGVzdEV4cGVjdGF0aW9ucyBiL0xh
eW91dFRlc3RzL3BsYXRmb3JtL3drMi9UZXN0RXhwZWN0YXRpb25zCmluZGV4IGQwZDg2YjEwMzM2
NTMyYWUyMzlkYzNkMjdkZWQyNjE4OTBiZmY4MGYuLjRlYTE0YmNlNTg4ZjUyMmYxY2FmNTk2MWE2
YmVmMTY4NzZmMWQyNTEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL3drMi9UZXN0
RXhwZWN0YXRpb25zCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL3drMi9UZXN0RXhwZWN0YXRp
b25zCkBAIC03MzAsNiArNzMwLDE1IEBAIGh0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGlj
cy9zZXQtYWxsLWNvb2tpZXMtdG8tc2FtZS1zaXRlLXN0cmljdC5odG1sIFsgU2tpCiBodHRwL3Rl
c3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvZW5mb3JjZS1zYW1lc2l0ZS1zdHJpY3QtYmFzZWQt
b24tdG9wLWZyYW1lLXVuaXF1ZS1yZWRpcmVjdHMtdG8uaHRtbCBbIFNraXAgXQogaHR0cC90ZXN0
cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL2VuZm9yY2Utc2FtZXNpdGUtc3RyaWN0LWJhc2VkLW9u
LXRvcC1mcmFtZS11bmlxdWUtcmVkaXJlY3RzLXRvLWRhdGFiYXNlLmh0bWwgWyBTa2lwIF0KIAor
IyBUaGUgQ05BTUUgYW5kIGNvb2tpZSB0cmFuc2Zvcm0gU1BJcyBhcmUgb25seSBhdmFpbGFibGUg
aW4gbWFjT1MgQmlnIFN1ciArIGlPUyAxNCBhbmQgYWJvdmUuCitodHRwL3Rlc3RzL3Jlc291cmNl
TG9hZFN0YXRpc3RpY3MvY25hbWUtY2xvYWtpbmctdG9wLWNuYW1lLXN1Yi0xcC1jbmFtZS5odG1s
IFsgU2tpcCBdCitodHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvY25hbWUtY2xvYWtp
bmctdG9wLWNuYW1lLXN1Yi0zcC1jbmFtZS5odG1sIFsgU2tpcCBdCitodHRwL3Rlc3RzL3Jlc291
cmNlTG9hZFN0YXRpc3RpY3MvY25hbWUtY2xvYWtpbmctdG9wLWNuYW1lLXN1Yi1tYXRjaGluZy1j
bmFtZS5odG1sIFsgU2tpcCBdCitodHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvY25h
bWUtY2xvYWtpbmctdG9wLWNuYW1lLXN1Yi1uby1jbmFtZS5odG1sIFsgU2tpcCBdCitodHRwL3Rl
c3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvY25hbWUtY2xvYWtpbmctdG9wLW5vLWNuYW1lLXN1
Yi0xcC1jbmFtZS5odG1sIFsgU2tpcCBdCitodHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3Rp
Y3MvY25hbWUtY2xvYWtpbmctdG9wLW5vLWNuYW1lLXN1Yi0zcC1jbmFtZS5odG1sIFsgU2tpcCBd
CitodHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvY25hbWUtY2xvYWtpbmctdG9wLW5v
LWNuYW1lLXN1Yi1uby1jbmFtZS5odG1sIFsgU2tpcCBdCisKIGh0dHAvdGVzdHMvd2Vic29ja2V0
L2Nvbm5lY3Rpb24tcmVmdXNhbC1pbi1mcmFtZS1yZXNvdXJjZS1sb2FkLXN0YXRpc3RpY3MuaHRt
bCBbIFBhc3MgXQogIyBUaGVzZSBhcmUgb25seSBzdXBwb3J0ZWQgYmVoaW5kIGEgY29tcGlsZSB0
aW1lIGZsYWcgaW4gbWFjT1MgSGlnaCBTaWVycmEgKyBpT1MgMTEsIGFuZCBhYm92ZS4KIGh0dHAv
dGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9jb29raWUtZGVsZXRpb24uaHRtbCBbIFBhc3Mg
VGltZW91dCBdCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>406190</attachid>
            <date>2020-08-07 11:04:23 -0700</date>
            <delta_ts>2020-08-07 13:40:37 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-215201-20200807110422.patch</filename>
            <type>text/plain</type>
            <size>107791</size>
            <attacher name="John Wilander">wilander</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY1MzgwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDA4ZjlkODUxNzRhNjI0YTk2NTg5NzIw
YmI3ZDE5N2RhZWMyOTZmMTQuLjY4MWYzYzcyYTE1OWJlYjc1MTY0NzVkZDBhODYwN2U1ODk3MzA4
MTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMjAtMDgtMDcgIEpvaG4gV2lsYW5kZXIgIDx3aWxh
bmRlckBhcHBsZS5jb20+CisKKyAgICAgICAgRXhwZXJpbWVudGFsOiBDYXAgdGhlIGV4cGlyeSBv
ZiBwZXJzaXN0ZW50IGNvb2tpZXMgc2V0IGluIDNyZC1wYXJ0eSBDTkFNRSBjbG9ha2VkIEhUVFAg
cmVzcG9uc2VzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yMTUyMDEKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzU3NDU0NjMzPgorCisgICAgICAgIFJl
dmlld2VkIGJ5IEJyZW50IEZ1bGdoYW0uIEFsc28gcmV2aWV3ZWQgYW5kIGNvbW1lbnRlZCBvbiBi
eSBDaHJpcyBEdW1leiwgSml0ZW4gTWVodGEsIFNhbSBXZWluaWcsIGFuZCBBbGV4IENocmlzdGVu
c2VuLgorCisgICAgICAgIFRoaXMgY2hhbmdlIGRlZmluZXMgSEFWRV9DRk5FVFdPUktfQ05BTUVf
QU5EX0NPT0tJRV9UUkFOU0ZPUk1fU1BJLgorCisgICAgICAgICogd3RmL1BsYXRmb3JtSGF2ZS5o
OgorCiAyMDIwLTA4LTA3ICBSb2JpbiBNb3Jpc3NldCAgPHJtb3Jpc3NldEBhcHBsZS5jb20+CiAK
ICAgICAgICAgRml4IGluZXF1YWxpdHkgaW4gbmV3bHkgYWRkZWQgYXNzZXJ0aW9uCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cK
aW5kZXggMjE5NjI0YTBiMmVkOWY2ZTVjYzgwNTFiMDJjODQ1OWVlY2IxNmQ3ZC4uNDEyYzllOGE5
NjgyNDBjYWRiYTQ2MDRhZGEwNjBlMGY1NTc0ZWJjYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMy
IEBACisyMDIwLTA4LTA3ICBKb2huIFdpbGFuZGVyICA8d2lsYW5kZXJAYXBwbGUuY29tPgorCisg
ICAgICAgIEV4cGVyaW1lbnRhbDogQ2FwIHRoZSBleHBpcnkgb2YgcGVyc2lzdGVudCBjb29raWVz
IHNldCBpbiAzcmQtcGFydHkgQ05BTUUgY2xvYWtlZCBIVFRQIHJlc3BvbnNlcworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE1MjAxCisgICAgICAgIDxy
ZGFyOi8vcHJvYmxlbS81NzQ1NDYzMz4KKworICAgICAgICBSZXZpZXdlZCBieSBCcmVudCBGdWxn
aGFtLiBBbHNvIHJldmlld2VkIGFuZCBjb21tZW50ZWQgb24gYnkgQ2hyaXMgRHVtZXosIEppdGVu
IE1laHRhLCBTYW0gV2VpbmlnLCBhbmQgQWxleCBDaHJpc3RlbnNlbi4KKworICAgICAgICBUZXN0
czogaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL2NuYW1lLWNsb2FraW5nLXRvcC1j
bmFtZS1zdWItMXAtY25hbWUuaHRtbAorICAgICAgICAgICAgICAgaHR0cC90ZXN0cy9yZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzL2NuYW1lLWNsb2FraW5nLXRvcC1jbmFtZS1zdWItM3AtY25hbWUuaHRt
bAorICAgICAgICAgICAgICAgaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL2NuYW1l
LWNsb2FraW5nLXRvcC1jbmFtZS1zdWItbWF0Y2hpbmctY25hbWUuaHRtbAorICAgICAgICAgICAg
ICAgaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL2NuYW1lLWNsb2FraW5nLXRvcC1j
bmFtZS1zdWItbm8tY25hbWUuaHRtbAorICAgICAgICAgICAgICAgaHR0cC90ZXN0cy9yZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzL2NuYW1lLWNsb2FraW5nLXRvcC1uby1jbmFtZS1zdWItMXAtY25hbWUu
aHRtbAorICAgICAgICAgICAgICAgaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL2Nu
YW1lLWNsb2FraW5nLXRvcC1uby1jbmFtZS1zdWItM3AtY25hbWUuaHRtbAorICAgICAgICAgICAg
ICAgaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL2NuYW1lLWNsb2FraW5nLXRvcC1u
by1jbmFtZS1zdWItbm8tY25hbWUuaHRtbAorCisgICAgICAgICogcGFnZS9TZXR0aW5ncy55YW1s
OgorICAgICAgICAgICAgQWRkZWQgdGhlIG9mZi1ieS1kZWZhdWx0IGZsYWcgaXNDTkFNRUNsb2Fr
aW5nTWl0aWdhdGlvbkVuYWJsZWQuCisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9OZXR3b3Jr
U3RvcmFnZVNlc3Npb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNz
aW9uOjpyZXNvdXJjZUxvYWRTdGF0aXN0aWNzRW5hYmxlZCBjb25zdCk6CisgICAgICAgICAgICBO
ZXcgZ2V0dGVyIGZvciB0aGUgSVRQIHNldHRpbmcuCisgICAgICAgICogcGxhdGZvcm0vbmV0d29y
ay9OZXR3b3JrU3RvcmFnZVNlc3Npb24uaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2Nv
Y29hL05ldHdvcmtTdG9yYWdlU2Vzc2lvbkNvY29hLm1tOgorICAgICAgICAoV2ViQ29yZTo6TmV0
d29ya1N0b3JhZ2VTZXNzaW9uOjpjYXBFeHBpcnlPZlBlcnNpc3RlbnRDb29raWUpOgorICAgICAg
ICAgICAgQnJva2UgdGhpcyBmdW5jdGlvbiBvdXQgc28gdGhhdCBpdCBjYW4gYmUgcmV1c2VkLgor
ICAgICAgICAoV2ViQ29yZTo6cGFyc2VET01Db29raWUpOgorICAgICAgICAgICAgSGVyZSdzIGZy
b20gd2hlcmUgdGhlIGZ1bmN0aW9uIGFib3ZlIHdhcyBicm9rZW4gb3V0LgorICAgICAgICAgICAg
VGhlIGV4aXN0aW5nIGZ1bmN0aW9uYWxpdHkgaGFzIGEgdGVzdCBjYXNlLgorCiAyMDIwLTA4LTA3
ICBBbnR0aSBLb2l2aXN0byAgPGFudHRpQGFwcGxlLmNvbT4KIAogICAgICAgICBSRUdSRVNTSU9O
IChyMjYwMjc2KTogaW5zdHJ1Y3R1cmUuY29tIGN1c3RvbSBQREYgdmlld2VyIHN0b3BzIHNjcm9s
bGluZyAvIGxvYWRpbmcgYWZ0ZXIgc3dpdGNoaW5nIHRvIGFub3RoZXIgdGFiIHRoZW4gc3dpdGNo
aW5nIGJhY2sKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BBTC9DaGFuZ2VMb2cgYi9Tb3Vy
Y2UvV2ViQ29yZS9QQUwvQ2hhbmdlTG9nCmluZGV4IDY2MGI5MjA3YjA5MWZjODZlNzdkZTI3MDE5
ZDAyNjE3MWZhMGFkMGMuLjM4YzY3YjVlZDAyYzc0MWMzZTM1OGQ3YmVjM2IzYWI4ZTIzZmY4Yzgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BBTC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dl
YkNvcmUvUEFML0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2IEBACisyMDIwLTA4LTA3ICBKb2huIFdp
bGFuZGVyICA8d2lsYW5kZXJAYXBwbGUuY29tPgorCisgICAgICAgIEV4cGVyaW1lbnRhbDogQ2Fw
IHRoZSBleHBpcnkgb2YgcGVyc2lzdGVudCBjb29raWVzIHNldCBpbiAzcmQtcGFydHkgQ05BTUUg
Y2xvYWtlZCBIVFRQIHJlc3BvbnNlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjE1MjAxCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS81NzQ1NDYzMz4K
KworICAgICAgICBSZXZpZXdlZCBieSBCcmVudCBGdWxnaGFtLiBBbHNvIHJldmlld2VkIGFuZCBj
b21tZW50ZWQgb24gYnkgQ2hyaXMgRHVtZXosIEppdGVuIE1laHRhLCBTYW0gV2VpbmlnLCBhbmQg
QWxleCBDaHJpc3RlbnNlbi4KKworICAgICAgICAqIHBhbC9zcGkvY2YvQ0ZOZXR3b3JrU1BJLmg6
CisgICAgICAgICAgICBUaGlzIGNoYW5nZSBkZWNsYXJlcyB0d28gbmV3IHByb3BlcnRpZXMgb24g
TlNVUkxTZXNzaW9uVGFzazoKKyAgICAgICAgICAgIC0gX2Nvb2tpZVRyYW5zZm9ybUNhbGxiYWNr
CisgICAgICAgICAgICAtIF9yZXNvbHZlZENOQU1FQ2hhaW4KKwogMjAyMC0wOC0wNSAgVGltIEhv
cnRvbiAgPHRpbW90aHlfaG9ydG9uQGFwcGxlLmNvbT4KIAogICAgICAgICBSZW1vdmUgYWxsIHJl
ZmVyZW5jZXMgdG8gbm9uLWV4aXN0ZW50IDEwLjE2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGI0MDA2Nzk2YWYxZWFk
MjRkMDg5NDA1OTJiMDVlYmMzMTY4ZWQ4ZTIuLjYyNTFiZjQ0NTEwNjA4ZGQ0MmFkM2NhYTM1YzFk
ODgwMmJiNGM4MjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIwIEBACisyMDIwLTA4LTA3ICBKb2hu
IFdpbGFuZGVyICA8d2lsYW5kZXJAYXBwbGUuY29tPgorCisgICAgICAgIEV4cGVyaW1lbnRhbDog
Q2FwIHRoZSBleHBpcnkgb2YgcGVyc2lzdGVudCBjb29raWVzIHNldCBpbiAzcmQtcGFydHkgQ05B
TUUgY2xvYWtlZCBIVFRQIHJlc3BvbnNlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MjE1MjAxCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS81NzQ1NDYz
Mz4KKworICAgICAgICBSZXZpZXdlZCBieSBCcmVudCBGdWxnaGFtLiBBbHNvIHJldmlld2VkIGFu
ZCBjb21tZW50ZWQgb24gYnkgQ2hyaXMgRHVtZXosIEppdGVuIE1laHRhLCBTYW0gV2VpbmlnLCBh
bmQgQWxleCBDaHJpc3RlbnNlbi4KKworICAgICAgICBUaGlzIGV4cGVyaW1lbnRhbCBmZWF0dXJl
IGlzIG9mZiBieSBkZWZhdWx0LgorCisgICAgICAgIENOQU1FIGNsb2FraW5nIG1lYW5zIGEgaG9z
dCByZXNvbHZlcyB0byBhIGEgZGlmZmVyZW50IGRvbWFpbiwgcG90ZW50aWFsbHkgYQorICAgICAg
ICB0aGlyZC1wYXJ0eSBkb21haW4sIGFzIHBhcnQgb2YgRE5TIHJlc29sdXRpb24uCisKKyAgICAg
ICAgVGhpcyBwYXRjaCBtYWtlcyBXZWJLaXQ6Ok5ldHdvcmtEYXRhVGFza0NvY29hIGNhcHR1cmUg
YW55IENOQU1FIGNsb2FraW5nIGZvcgorICAgICAgICB0aGUgZmlyc3QgcGFydHkgaG9zdCBhbmQg
c3RvcmVzIGl0IGluIGEgdGFibGUgaW4gdGhlIFdlYktpdDo6TmV0d29ya1Nlc3Npb24uCisgICAg
ICAgIEl0IHRoZW4gY2hlY2tzIGZpcnN0IHBhcnR5IHN1YnJlc291cmNlIGxvYWRzIHRvIHNlZSBp
ZiB0aGV5IHJlc29sdmUgdG8gYQorICAgICAgICBkaWZmZXJlbnQgZG9tYWluIGFuZCBpZiBzbywg
Y29tcGFyZSB0aGF0IGRvbWFpbiB0byBib3RoIHRoZSBmaXJzdCBwYXJ0eQorICAgICAgICBkb21h
aW4gYW5kIGl0cyBDTkFNRSBjbG9ha2luZyBkb21haW4sIGlmIHRoZXJlIGlzIG9uZS4gSWYgdGhl
cmUncyBhCisgICAgICAgIG1pc21hdGNoLCBpdCdzIGRlZW1lZCBhIGNhc2Ugb2YgdGhpcmQtcGFy
dHkgQ05BTUUgY2xvYWtpbmcgYW5kIGFueSBjb29raWVzCisgICAgICAgIHNldCBpbiB0aGUgcmVz
cG9uc2Ugb2YgdGhlIGNsb2FrZWQgc3VicmVzb3VyY2UgbG9hZCB3aWxsIGhhdmUgdGhlaXIgZXhw
aXJ5CisgICAgICAgIGNhcHBlZCB0byA3IGRheXMuCisKKyAgICAgICAgVGhlIGNhc2VzIGZvciBj
YXBwaW5nIGV4cGlyeSBsb29rIGxpa2UgdGhpcyAoYW5kIGFyZSBiYWNrZWQgYnkgdGVzdCBjYXNl
cyk6CisKKyAgICAgICAgRmlyc3QtcGFydHkgaG9zdCAgfCBGaXJzdC1wYXJ0eSBzdWJkb21haW4g
ICAgICB8IENhcHBlZCBleHBpcnkKKyAgICAgICAgLS0tLS0tLS0tLS0tLS0tLS0tfC0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS18LS0tLS0tLS0tLS0tLS0KKyAgICAgICAgTm8gQ05BTUUgY2xv
YWtpbmcgfCBObyBDTkFNRSBjbG9ha2luZyAgICAgICAgICB8IE5vCisgICAgICAgIE5vIENOQU1F
IGNsb2FraW5nIHwgRmlyc3QtcGFydHkgQ05BTUUgY2xvYWtpbmcgfCBObworICAgICAgICBObyBD
TkFNRSBjbG9ha2luZyB8IFRoaXJkLXBhcnR5IENOQU1FIGNsb2FraW5nIHwgWWVzCisgICAgICAg
IENOQU1FIGNsb2FraW5nICAgIHwgTm8gQ05BTUUgY2xvYWtpbmcgICAgICAgICAgfCBObworICAg
ICAgICBDTkFNRSBjbG9ha2luZyAgICB8IE1hdGNoaW5nIENOQU1FIGNsb2FraW5nICAgIHwgTm8K
KyAgICAgICAgQ05BTUUgY2xvYWtpbmcgICAgfCBGaXJzdC1wYXJ0eSBDTkFNRSBjbG9ha2luZyB8
IE5vCisgICAgICAgIENOQU1FIGNsb2FraW5nICAgIHwgVGhpcmQtcGFydHkgQ05BTUUgY2xvYWtp
bmcgfCBZZXMKKworICAgICAgICBUaGlzIHBhdGNoIG1ha2VzIHVzZSBvZiB0d28gbmV3IENGTmV0
d29yayBTUElzIG9uIE5TVVJMU2Vzc2lvblRhc2s6CisgICAgICAgIC0gX2Nvb2tpZVRyYW5zZm9y
bUNhbGxiYWNrCisgICAgICAgIC0gX3Jlc29sdmVkQ05BTUVDaGFpbgorCisgICAgICAgICogTmV0
d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3Jr
UHJvY2Vzczo6cmVzZXRQYXJhbWV0ZXJzVG9EZWZhdWx0VmFsdWVzKToKKyAgICAgICAgICAgIFRo
aXMgcmVzZXQgbm93IGNvdmVycyB0aGUgbmV3IENOQU1FIGNsb2FraW5nIG1lbWJlciB2YXJpYWJs
ZXMuCisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpzZXRJc1J1bm5pbmdSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzVGVzdCk6CisgICAgICAgICAgICBUaGlzIGZ1bmN0aW9uIG5vdyBhbHNv
IGVuYWJsZXMgdGhlIENOQU1FIGNsb2FraW5nIGNvZGUuCisgICAgICAgIChXZWJLaXQ6Ok5ldHdv
cmtQcm9jZXNzOjpzZXRGaXJzdFBhcnR5SG9zdENOQU1FRG9tYWluRm9yVGVzdGluZyk6CisgICAg
ICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpzZXRUaGlyZFBhcnR5Q05BTUVEb21haW5Gb3JU
ZXN0aW5nKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oOgorICAg
ICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLm1lc3NhZ2VzLmluOgorICAgICAg
ICAgICAgTmV3IElQQyB0byBmb3J3YXJkIHRlc3QgY29uZmlndXJhdGlvbi4KKyAgICAgICAgKiBO
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdv
cmtTZXNzaW9uOjpOZXR3b3JrU2Vzc2lvbik6CisgICAgICAgICAgICBOb3cgcGlja3MgdXAgdGhl
IGZsYWcgZm9yIHRoaXMgZmVhdHVyZS4KKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Nlc3Npb246
OnNldEZpcnN0UGFydHlIb3N0Q05BTUVEb21haW4pOgorICAgICAgICAgICAgVGhpcyBpcyBjYWxs
ZWQgZnJvbSBOZXR3b3JrRGF0YVRhc2tDb2NvYTo6dXBkYXRlRmlyc3RQYXJ0eUluZm9Gb3JUYXNr
QW5kU2Vzc2lvbigpCisgICAgICAgICAgICB3aGVuIHRoZXJlIGlzIENOQU1FIGNsb2FraW5nIGZv
ciB0aGUgZmlyc3QgcGFydHkgaG9zdC4gVGhpcyBpcyBkb25lIHRvIG1ha2UgaXQKKyAgICAgICAg
ICAgIHBvc3NpYmxlIHRvIG5vdCBjYXAgdGhlIGV4cGlyeSBvZiBjb29raWVzIGlmIHN1YnNlcXVl
bnQgc3VicmVzb3VyY2UgbG9hZHMgaGF2ZQorICAgICAgICAgICAgQ05BTUUgY2xvYWtpbmcgdGhh
dCBtYXRjaGVzIHRoZSBmaXJzdC1wYXJ0eSBob3N0J3MgQ05BTUUgY2xvYWtpbmcuIFRoaXMgaGFw
cGVucworICAgICAgICAgICAgd2hlbiB3aG9sZSB3ZWJzaXRlcyBhcmUgaG9zdGVkIG9uIGVkZ2Ug
bmV0d29ya3MuCisgICAgICAgICAgICBUaGlzIGZ1bmN0aW9uIGlzIGFsc28gdXNlZCBieSB0aGUg
dGVzdCBpbmZyYXN0cnVjdHVyZSB0byBtb2NrIHRoZSBETlMgcmVzb2x1dGlvbgorICAgICAgICAg
ICAgZm9yIGEgZmlyc3QtcGFydHkgaG9zdC4KKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Nlc3Np
b246OmZpcnN0UGFydHlIb3N0Q05BTUVEb21haW4pOgorICAgICAgICAgICAgVGhpcyByZXR1cm5z
IGFueSBjYXB0dXJlZCBDTkFNRSBjbG9ha2luZyBmb3IgYSBob3N0LCBpZiB0aGVyZSBpcyBvbmUu
CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtTZXNzaW9uOjpyZXNldENOQU1FRG9tYWluRGF0YSk6
CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24uaDoKKyAgICAgICAgKFdl
YktpdDo6TmV0d29ya1Nlc3Npb246OnNldENOQU1FQ2xvYWtpbmdNaXRpZ2F0aW9uRW5hYmxlZCk6
CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtTZXNzaW9uOjpjbmFtZUNsb2FraW5nTWl0aWdhdGlv
bkVuYWJsZWQgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrU2Vzc2lvbjo6c2V0VGhp
cmRQYXJ0eUNOQU1FRG9tYWluRm9yVGVzdGluZyk6CisgICAgICAgICAgICBUaGlzIHRlc3QgZnVu
Y3Rpb25zIGFsbG93cyB1cyB0byBtb2NrIHRoZSBETlMgcmVzb2x1dGlvbiBmb3IgYSBzdWJyZXNv
dXJjZS4KKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Nlc3Npb246OnRoaXJkUGFydHlDTkFNRURv
bWFpbkZvclRlc3RpbmcgY29uc3QpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NvY29hL05l
dHdvcmtEYXRhVGFza0NvY29hLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0
d29ya0RhdGFUYXNrQ29jb2EubW06CisgICAgICAgIChXZWJLaXQ6Omhhc0NOQU1FQW5kQ29va2ll
VHJhbnNmb3JtU1BJKToKKyAgICAgICAgKFdlYktpdDo6bGFzdENOQU1FRG9tYWluKToKKyAgICAg
ICAgKFdlYktpdDo6TmV0d29ya0RhdGFUYXNrQ29jb2E6OnVwZGF0ZUZpcnN0UGFydHlJbmZvRm9y
U2Vzc2lvbik6CisgICAgICAgICAgICBUaGlzIGlzIGNhbGxlZCBieSBOZXR3b3JrRGF0YVRhc2tD
b2NvYTo6ZGlkUmVjZWl2ZVJlc3BvbnNlKCkgdG8gY2FwdHVyZSBhbnkKKyAgICAgICAgICAgIENO
QU1FIGNsb2FraW5nIGZvciB0aGUgZmlyc3QtcGFydHkgaG9zdC4KKyAgICAgICAgKFdlYktpdDo6
TmV0d29ya0RhdGFUYXNrQ29jb2E6OmFwcGx5Q29va2llUG9saWN5Rm9yVGhpcmRQYXJ0eUNOQU1F
Q2xvYWtpbmcpOgorICAgICAgICAgICAgVGhpcyBpcyBjYWxsZWQgaW4gdGhlIE5ldHdvcmtEYXRh
VGFza0NvY29hIGNvbnN0cnVjdG9yIGFuZCBpbgorICAgICAgICAgICAgTmV0d29ya0RhdGFUYXNr
Q29jb2E6OndpbGxQZXJmb3JtSFRUUFJlZGlyZWN0aW9uKCkgYW5kIHNldHMgdGhlIG5ldworICAg
ICAgICAgICAgX2Nvb2tpZVRyYW5zZm9ybUNhbGxiYWNrIFNQSSBwcm9wZXJ0eSBvbiB0aGUgdGFz
ayB3aGljaCB3aWxsIGNoZWNrIHRoZQorICAgICAgICAgICAgcmVzcG9uc2UgZm9yIGFueSB0aGly
ZC1wYXJ0eSBDTkFNRSBjbG9ha2luZyBhbmQgY2FwIHRoZSBleHBpcnkgb2YgaW5jb21pbmcKKyAg
ICAgICAgICAgIGNvb2tpZXMgYWNjb3JkaW5nbHkuCisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtE
YXRhVGFza0NvY29hOjpOZXR3b3JrRGF0YVRhc2tDb2NvYSk6CisgICAgICAgICAgICBUaGlzIG5v
dyBjYWxscworICAgICAgICAgICAgTmV0d29ya0RhdGFUYXNrQ29jb2E6OmFwcGx5Q29va2llUG9s
aWN5Rm9yVGhpcmRQYXJ0eUNOQU1FQ2xvYWtpbmcoKS4KKyAgICAgICAgKFdlYktpdDo6TmV0d29y
a0RhdGFUYXNrQ29jb2E6OmRpZFJlY2VpdmVSZXNwb25zZSk6CisgICAgICAgICAgICBUaGlzIG5v
dyBjYWxscworICAgICAgICAgICAgTmV0d29ya0RhdGFUYXNrQ29jb2E6OnVwZGF0ZUZpcnN0UGFy
dHlJbmZvRm9yVGFza0FuZFNlc3Npb24oKS4KKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0RhdGFU
YXNrQ29jb2E6OndpbGxQZXJmb3JtSFRUUFJlZGlyZWN0aW9uKToKKyAgICAgICAgICAgIFRoaXMg
bm93IGNhbGxzCisgICAgICAgICAgICBOZXR3b3JrRGF0YVRhc2tDb2NvYTo6YXBwbHlDb29raWVQ
b2xpY3lGb3JUaGlyZFBhcnR5Q05BTUVDbG9ha2luZygpLgorICAgICAgICAqIFNoYXJlZC9SZXNv
dXJjZUxvYWRTdGF0aXN0aWNzUGFyYW1ldGVycy5oOgorICAgICAgICAgICAgTm93IGhvbGRzIGEg
V2ViQ29yZTo6Q05BTUVDbG9ha2luZ01pdGlnYXRpb25FbmFibGVkIGZsYWcuCisgICAgICAgIChX
ZWJLaXQ6OlJlc291cmNlTG9hZFN0YXRpc3RpY3NQYXJhbWV0ZXJzOjplbmNvZGUgY29uc3QpOgor
ICAgICAgICAoV2ViS2l0OjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGFyYW1ldGVyczo6ZGVjb2Rl
KToKKyAgICAgICAgKiBTaGFyZWQvV2ViUHJlZmVyZW5jZXMueWFtbDoKKyAgICAgICAgKiBVSVBy
b2Nlc3MvQVBJL0MvV0tXZWJzaXRlRGF0YVN0b3JlUmVmLmNwcDoKKyAgICAgICAgKFdLV2Vic2l0
ZURhdGFTdG9yZVNldFJlc291cmNlTG9hZFN0YXRpc3RpY3NGaXJzdFBhcnR5SG9zdENOQU1FRG9t
YWluRm9yVGVzdGluZyk6CisgICAgICAgICAgICBVc2VkIHRvIG1vY2sgQ05BTUUgcmVzb2x1dGlv
biBkYXRhLgorICAgICAgICAoV0tXZWJzaXRlRGF0YVN0b3JlU2V0UmVzb3VyY2VMb2FkU3RhdGlz
dGljc1RoaXJkUGFydHlDTkFNRURvbWFpbkZvclRlc3RpbmcpOgorICAgICAgICAgICAgVXNlZCB0
byBtb2NrIENOQU1FIHJlc29sdXRpb24gZGF0YS4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0Mv
V0tXZWJzaXRlRGF0YVN0b3JlUmVmLmg6CisgICAgICAgICogVUlQcm9jZXNzL05ldHdvcmsvTmV0
d29ya1Byb2Nlc3NQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzUHJv
eHk6OnNldEZpcnN0UGFydHlIb3N0Q05BTUVEb21haW5Gb3JUZXN0aW5nKToKKyAgICAgICAgKFdl
YktpdDo6TmV0d29ya1Byb2Nlc3NQcm94eTo6c2V0VGhpcmRQYXJ0eUNOQU1FRG9tYWluRm9yVGVz
dGluZyk6CisgICAgICAgICogVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5o
OgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHA6CisgICAgICAgIChXZWJL
aXQ6OldlYlByb2Nlc3NQb29sOjplbnN1cmVOZXR3b3JrUHJvY2Vzcyk6CisgICAgICAgICAgICBO
b3cgaGFuZGxlcyB0aGUgV2ViQ29yZTo6Q05BTUVDbG9ha2luZ01pdGlnYXRpb25FbmFibGVkIGZs
YWcuCisgICAgICAgICogVUlQcm9jZXNzL1dlYnNpdGVEYXRhL0NvY29hL1dlYnNpdGVEYXRhU3Rv
cmVDb2NvYS5tbToKKyAgICAgICAgKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6cGxhdGZvcm1T
ZXROZXR3b3JrUGFyYW1ldGVycyk6CisgICAgICAgICAgICBOb3cgaGFuZGxlcyB0aGUgV2ViQ29y
ZTo6Q05BTUVDbG9ha2luZ01pdGlnYXRpb25FbmFibGVkIGZsYWcuCisgICAgICAgICogVUlQcm9j
ZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuY3BwOgorICAgICAgICAoV2ViS2l0OjpX
ZWJzaXRlRGF0YVN0b3JlOjpzZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRmlyc3RQYXJ0eUhvc3RD
TkFNRURvbWFpbkZvclRlc3RpbmcpOgorICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3Jl
OjpzZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzVGhpcmRQYXJ0eUNOQU1FRG9tYWluRm9yVGVzdGlu
Zyk6CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6OnBhcmFtZXRlcnMpOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmg6CisKIDIwMjAt
MDgtMDcgIFdlbnNvbiBIc2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CiAKICAgICAgICAg
UmVtb3ZlIFVJU2NyaXB0Q29udHJvbGxlci5yZW1vdmVBbGxEeW5hbWljRGljdGlvbmFyaWVzKCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtSGF2ZS5oIGIvU291cmNlL1dURi93
dGYvUGxhdGZvcm1IYXZlLmgKaW5kZXggZTQ0ODM4M2I2MWQxZmNmMTA4NmQyYzhhODhhNjI3NmVi
ZTQ4MzU4Yy4uNGVjNzdlNzYxNDYxMDhkMjU2MzkzNDJkMWEwZmYzYWFhYTJjNjFlYyAxMDA2NDQK
LS0tIGEvU291cmNlL1dURi93dGYvUGxhdGZvcm1IYXZlLmgKKysrIGIvU291cmNlL1dURi93dGYv
UGxhdGZvcm1IYXZlLmgKQEAgLTcwNywzICs3MDcsMTAgQEAKICNpZiAoUExBVEZPUk0oTUFDKSAm
JiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDExMDAwMCkKICNkZWZpbmUgSEFW
RV9OU1RBQkxFVklFV1NUWUxFIDEKICNlbmRpZgorCisjaWYgKFBMQVRGT1JNKE1BQykgJiYgX19N
QUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMTAwMDApIFwKKyAgICB8fCAoKFBMQVRG
T1JNKElPUykgfHwgUExBVEZPUk0oTUFDQ0FUQUxZU1QpKSAmJiBfX0lQSE9ORV9PU19WRVJTSU9O
X01JTl9SRVFVSVJFRCA+PSAxNDAwMDApIFwKKyAgICB8fCAoUExBVEZPUk0oV0FUQ0hPUykgJiYg
X19XQVRDSF9PU19WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSA3MDAwMCkgXAorICAgIHx8IChQTEFU
Rk9STShBUFBMRVRWKSAmJiBfX1RWX09TX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDE0MDAwMCkK
KyNkZWZpbmUgSEFWRV9DRk5FVFdPUktfQ05BTUVfQU5EX0NPT0tJRV9UUkFOU0ZPUk1fU1BJIDEK
KyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUEFML3BhbC9zcGkvY2YvQ0ZOZXR3
b3JrU1BJLmggYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL3NwaS9jZi9DRk5ldHdvcmtTUEkuaApp
bmRleCAzZTJhN2EzNDFlZTZhYmE3MWVmYjNiZGIwZGRiMTZhMDAzNWM5OGJmLi4xOWI0ZTA1YzMx
Y2IyMThjZGQ5YmM4OGQwZjk0NWMzYTczNjcyMzA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9QQUwvcGFsL3NwaS9jZi9DRk5ldHdvcmtTUEkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9QQUwv
cGFsL3NwaS9jZi9DRk5ldHdvcmtTUEkuaApAQCAtMjk2LDYgKzI5NiwxMyBAQCBlbnVtIDogTlNV
SW50ZWdlciB7CiAgICAgTlNIVFRQQ29va2llQWNjZXB0UG9saWN5RXhjbHVzaXZlbHlGcm9tTWFp
bkRvY3VtZW50RG9tYWluID0gMywKIH07CiAKKyNpZiBIQVZFKENGTkVUV09SS19DTkFNRV9BTkRf
Q09PS0lFX1RSQU5TRk9STV9TUEkpCitAaW50ZXJmYWNlIE5TVVJMU2Vzc2lvblRhc2sgKCkKK0Bw
cm9wZXJ0eSAobm9uYXRvbWljLCBjb3B5LCBudWxsYWJsZSkgTlNBcnJheTxOU0hUVFBDb29raWUq
PiogKF5fY29va2llVHJhbnNmb3JtQ2FsbGJhY2spKE5TQXJyYXk8TlNIVFRQQ29va2llKj4qIGNv
b2tpZXMpOworQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5LCBudWxsYWJsZSkgTlNBcnJh
eTxOU1N0cmluZyo+KiBfcmVzb2x2ZWRDTkFNRUNoYWluOworQGVuZAorI2VuZGlmCisKICNlbmRp
ZiAvLyBkZWZpbmVkKF9fT0JKQ19fKQogCiAjZW5kaWYgLy8gVVNFKEFQUExFX0lOVEVSTkFMX1NE
SykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3MueWFtbCBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3MueWFtbAppbmRleCAyMmM5ZjZhYjIzMDAxYTI5MWM1ZDM0
NTdjMjE0YjNlMjA1NTlmYzg4Li5kNGNmYmNlZDgzNzYzMjk4MTU0NjNiYzY2ZmY1ZjIyYTEyMWYw
MDZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdzLnlhbWwKKysrIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5ncy55YW1sCkBAIC05MjgsNiArOTI4LDkgQEAgaXNG
aXJzdFBhcnR5V2Vic2l0ZURhdGFSZW1vdmFsUmVwcm9UZXN0aW5nRW5hYmxlZDoKIGlzU2FtZVNp
dGVTdHJpY3RFbmZvcmNlbWVudEVuYWJsZWQ6CiAgIGluaXRpYWw6IGZhbHNlCiAKK2lzQ05BTUVD
bG9ha2luZ01pdGlnYXRpb25FbmFibGVkOgorICBpbml0aWFsOiBmYWxzZQorCiBpc0xvZ2dlZElu
QVBJRW5hYmxlZDoKICAgaW5pdGlhbDogZmFsc2UKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9OZXR3b3JrU3RvcmFnZVNlc3Npb24uY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9OZXR3b3JrU3RvcmFnZVNlc3Npb24uY3BwCmluZGV4IDY4
NDdjNGY1ZTk0OWJmMDdhOWNiZWZkY2RhMzBiNDI1YWNiOWZmYjYuLmM1MzMyMWUxY2JhM2RkOTc0
Zjk3MGM3NTkxMDZhN2Y4MTdlMjBiNzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvTmV0d29ya1N0b3JhZ2VTZXNzaW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtTdG9yYWdlU2Vzc2lvbi5jcHAKQEAgLTcyLDYgKzcy
LDExIEBAIHZvaWQgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpzZXRSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzRW5hYmxlZChib29sIGVuYWJsZWQpCiB7CiAgICAgbV9pc1Jlc291cmNlTG9hZFN0YXRpc3Rp
Y3NFbmFibGVkID0gZW5hYmxlZDsKIH0KKworYm9vbCBOZXR3b3JrU3RvcmFnZVNlc3Npb246OnJl
c291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9pc1Jl
c291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkOworfQogI2VuZGlmCiAKIGJvb2wgTmV0d29ya1N0
b3JhZ2VTZXNzaW9uOjpzaG91bGRCbG9ja1RoaXJkUGFydHlDb29raWVzKGNvbnN0IFJlZ2lzdHJh
YmxlRG9tYWluJiByZWdpc3RyYWJsZURvbWFpbikgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvTmV0d29ya1N0b3JhZ2VTZXNzaW9uLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtTdG9yYWdlU2Vzc2lvbi5oCmluZGV4IDJj
NjE1ZjRjMmM3NjI3NzMyYjBhMTEyYzVmMWNjN2YxMTBlNDc0NTEuLjljMjZhZTJlYWViZmM5ZmNm
NmJiNGFjOGQzODNjZWRmYzQxMGQ1OTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvTmV0d29ya1N0b3JhZ2VTZXNzaW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9OZXR3b3JrU3RvcmFnZVNlc3Npb24uaApAQCAtODUsNiArODUsNyBA
QCBlbnVtIGNsYXNzIEluY2x1ZGVTZWN1cmVDb29raWVzIDogYm9vbDsKIGVudW0gY2xhc3MgSW5j
bHVkZUh0dHBPbmx5Q29va2llcyA6IGJvb2w7CiBlbnVtIGNsYXNzIFRoaXJkUGFydHlDb29raWVC
bG9ja2luZ01vZGUgOiB1aW50OF90IHsgQWxsLCBBbGxFeGNlcHRCZXR3ZWVuQXBwQm91bmREb21h
aW5zLCBBbGxPblNpdGVzV2l0aG91dFVzZXJJbnRlcmFjdGlvbiwgT25seUFjY29yZGluZ1RvUGVy
RG9tYWluUG9saWN5IH07CiBlbnVtIGNsYXNzIFNhbWVTaXRlU3RyaWN0RW5mb3JjZW1lbnRFbmFi
bGVkIDogYm9vbCB7IFllcywgTm8gfTsKK2VudW0gY2xhc3MgQ05BTUVDbG9ha2luZ01pdGlnYXRp
b25FbmFibGVkIDogYm9vbCB7IFllcywgTm8gfTsKIGVudW0gY2xhc3MgRmlyc3RQYXJ0eVdlYnNp
dGVEYXRhUmVtb3ZhbE1vZGUgOiB1aW50OF90IHsgQWxsQnV0Q29va2llcywgTm9uZSwgQWxsQnV0
Q29va2llc0xpdmVPblRlc3RpbmdUaW1lb3V0LCBBbGxCdXRDb29raWVzUmVwcm9UZXN0aW5nVGlt
ZW91dCB9OwogZW51bSBjbGFzcyBTaG91bGRBc2tJVFAgOiBib29sIHsgTm8sIFllcyB9OwogCkBA
IC0xODQsMTEgKzE4NSwxNSBAQCBwdWJsaWM6CiAKICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9T
VEFUSVNUSUNTKQogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0UmVzb3VyY2VMb2FkU3RhdGlz
dGljc0VuYWJsZWQoYm9vbCk7CisgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCByZXNvdXJjZUxvYWRT
dGF0aXN0aWNzRW5hYmxlZCgpIGNvbnN0OwogICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgc2hvdWxk
QmxvY2tDb29raWVzKGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIE9wdGlvbmFsPEZyYW1lSWRlbnRp
Zmllcj4sIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiwgU2hvdWxkUmVsYXhUaGlyZFBhcnR5Q29v
a2llQmxvY2tpbmcpIGNvbnN0OwogICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgc2hvdWxkQmxvY2tD
b29raWVzKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eUZvckNvb2tpZXMsIGNvbnN0IFVSTCYgcmVzb3Vy
Y2UsIE9wdGlvbmFsPEZyYW1lSWRlbnRpZmllcj4sIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiwg
U2hvdWxkUmVsYXhUaGlyZFBhcnR5Q29va2llQmxvY2tpbmcpIGNvbnN0OwogICAgIFdFQkNPUkVf
RVhQT1JUIGJvb2wgc2hvdWxkQmxvY2tUaGlyZFBhcnR5Q29va2llcyhjb25zdCBSZWdpc3RyYWJs
ZURvbWFpbiYpIGNvbnN0OwogICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgc2hvdWxkQmxvY2tUaGly
ZFBhcnR5Q29va2llc0J1dEtlZXBGaXJzdFBhcnR5Q29va2llc0Zvcihjb25zdCBSZWdpc3RyYWJs
ZURvbWFpbiYpIGNvbnN0OwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0QWxsQ29va2llc1Rv
U2FtZVNpdGVTdHJpY3QoY29uc3QgUmVnaXN0cmFibGVEb21haW4mLCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKCk+JiYpOworI2lmIFBMQVRGT1JNKENPQ09BKQorICAgIFdFQkNPUkVfRVhQT1JUIHN0
YXRpYyBOU0hUVFBDb29raWUgKmNhcEV4cGlyeU9mUGVyc2lzdGVudENvb2tpZShOU0hUVFBDb29r
aWUgKiwgU2Vjb25kcyBjYXApOworI2VuZGlmCiAgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBoYXNI
YWRVc2VySW50ZXJhY3Rpb25Bc0ZpcnN0UGFydHkoY29uc3QgUmVnaXN0cmFibGVEb21haW4mKSBj
b25zdDsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldFByZXZhbGVudERvbWFpbnNUb0Jsb2Nr
QW5kRGVsZXRlQ29va2llc0Zvcihjb25zdCBWZWN0b3I8UmVnaXN0cmFibGVEb21haW4+Jik7CiAg
ICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRQcmV2YWxlbnREb21haW5zVG9CbG9ja0J1dEtlZXBD
b29raWVzRm9yKGNvbnN0IFZlY3RvcjxSZWdpc3RyYWJsZURvbWFpbj4mKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvTmV0d29ya1N0b3JhZ2VTZXNz
aW9uQ29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL05ldHdv
cmtTdG9yYWdlU2Vzc2lvbkNvY29hLm1tCmluZGV4IGNiOTZkNGFhZmQ1YTRmYTA2ZDZhNzIyMTAz
MjAyNzk4ZDlhM2E2NTcuLjU5MDliYTlmNDJkM2NkMzI2Yjk3Zjk4MDdkZGE0Njc5MzEwMTkyODgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvTmV0d29y
a1N0b3JhZ2VTZXNzaW9uQ29jb2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9jb2NvYS9OZXR3b3JrU3RvcmFnZVNlc3Npb25Db2NvYS5tbQpAQCAtMzA4LDYgKzMwOCwy
MCBAQCBOU0FycmF5ICpOZXR3b3JrU3RvcmFnZVNlc3Npb246Omh0dHBDb29raWVzRm9yVVJMKENG
SFRUUENvb2tpZVN0b3JhZ2VSZWYgY29va2llUwogICAgIHJldHVybiBXZWJDb3JlOjpjb29raWVz
Rm9yVVJMKG5zQ29va2llU3RvcmFnZS5nZXQoKSwgdXJsLCBmaXJzdFBhcnR5LCBzYW1lU2l0ZUlu
Zm8pOwogfQogCitOU0hUVFBDb29raWUgKk5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6Y2FwRXhwaXJ5
T2ZQZXJzaXN0ZW50Q29va2llKE5TSFRUUENvb2tpZSAqY29va2llLCBTZWNvbmRzIGNhcCkKK3sK
KyAgICBpZiAoW2Nvb2tpZSBpc1Nlc3Npb25Pbmx5XSkKKyAgICAgICAgcmV0dXJuIGNvb2tpZTsK
KworICAgIGlmICghY29va2llLmV4cGlyZXNEYXRlIHx8IGNvb2tpZS5leHBpcmVzRGF0ZS50aW1l
SW50ZXJ2YWxTaW5jZU5vdyA+IGNhcC5zZWNvbmRzKCkpIHsKKyAgICAgICAgYXV0byBwcm9wZXJ0
aWVzID0gYWRvcHROUyhbW2Nvb2tpZSBwcm9wZXJ0aWVzXSBtdXRhYmxlQ29weV0pOworICAgICAg
ICBhdXRvIGRhdGUgPSBhZG9wdE5TKFtbTlNEYXRlIGFsbG9jXSBpbml0V2l0aFRpbWVJbnRlcnZh
bFNpbmNlTm93OmNhcC5zZWNvbmRzKCldKTsKKyAgICAgICAgW3Byb3BlcnRpZXMgc2V0T2JqZWN0
OmRhdGUuZ2V0KCkgZm9yS2V5Ok5TSFRUUENvb2tpZUV4cGlyZXNdOworICAgICAgICBjb29raWUg
PSBbTlNIVFRQQ29va2llIGNvb2tpZVdpdGhQcm9wZXJ0aWVzOnByb3BlcnRpZXMuZ2V0KCldOwor
ICAgIH0KKyAgICByZXR1cm4gY29va2llOworfQorCiBOU0FycmF5ICpOZXR3b3JrU3RvcmFnZVNl
c3Npb246OmNvb2tpZXNGb3JVUkwoY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0
ZUluZm8mIHNhbWVTaXRlSW5mbywgY29uc3QgVVJMJiB1cmwsIE9wdGlvbmFsPEZyYW1lSWRlbnRp
Zmllcj4gZnJhbWVJRCwgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCwgU2hvdWxkQXNr
SVRQIHNob3VsZEFza0lUUCwgU2hvdWxkUmVsYXhUaGlyZFBhcnR5Q29va2llQmxvY2tpbmcgc2hv
dWxkUmVsYXhUaGlyZFBhcnR5Q29va2llQmxvY2tpbmcpIGNvbnN0CiB7CiAjaWYgRU5BQkxFKFJF
U09VUkNFX0xPQURfU1RBVElTVElDUykKQEAgLTQxNywxNSArNDMxLDkgQEAgc3RhdGljIE5TSFRU
UENvb2tpZSAqcGFyc2VET01Db29raWUoU3RyaW5nIGNvb2tpZVN0cmluZywgTlNVUkwqIGNvb2tp
ZVVSTCwgT3B0aW8KICAgICBpZiAoW2Nvb2tpZSBpc0hUVFBPbmx5XSkKICAgICAgICAgcmV0dXJu
IG5pbDsKIAotICAgIC8vIENhcCBsaWZldGltZSBvZiBwZXJzaXN0ZW50LCBjbGllbnQtc2lkZSBj
b29raWVzIHRvIGEgd2Vlay4KLSAgICBpZiAoY2FwcGVkTGlmZXRpbWUgJiYgIVtjb29raWUgaXNT
ZXNzaW9uT25seV0pIHsKLSAgICAgICAgaWYgKCFjb29raWUuZXhwaXJlc0RhdGUgfHwgY29va2ll
LmV4cGlyZXNEYXRlLnRpbWVJbnRlcnZhbFNpbmNlTm93ID4gY2FwcGVkTGlmZXRpbWUtPnNlY29u
ZHMoKSkgewotICAgICAgICAgICAgYXV0byBwcm9wZXJ0aWVzID0gYWRvcHROUyhbW2Nvb2tpZSBw
cm9wZXJ0aWVzXSBtdXRhYmxlQ29weV0pOwotICAgICAgICAgICAgYXV0byBkYXRlSW5BV2VlayA9
IGFkb3B0TlMoW1tOU0RhdGUgYWxsb2NdIGluaXRXaXRoVGltZUludGVydmFsU2luY2VOb3c6Y2Fw
cGVkTGlmZXRpbWUtPnNlY29uZHMoKV0pOwotICAgICAgICAgICAgW3Byb3BlcnRpZXMgc2V0T2Jq
ZWN0OmRhdGVJbkFXZWVrLmdldCgpIGZvcktleTpOU0hUVFBDb29raWVFeHBpcmVzXTsKLSAgICAg
ICAgICAgIHJldHVybiBbTlNIVFRQQ29va2llIGNvb2tpZVdpdGhQcm9wZXJ0aWVzOnByb3BlcnRp
ZXMuZ2V0KCldOwotICAgICAgICB9Ci0gICAgfQorICAgIC8vIENhcCBsaWZldGltZSBvZiBwZXJz
aXN0ZW50LCBjbGllbnQtc2lkZSBjb29raWVzLgorICAgIGlmIChjYXBwZWRMaWZldGltZSkKKyAg
ICAgICAgcmV0dXJuIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6Y2FwRXhwaXJ5T2ZQZXJzaXN0ZW50
Q29va2llKGNvb2tpZSwgKmNhcHBlZExpZmV0aW1lKTsKIAogICAgIHJldHVybiBjb29raWU7CiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNz
LmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCmlu
ZGV4IDc5MDg1N2Q1NzZiMTU0NGYzMmMzMDA1YzhlMzc5YWU5ODNkMzNiYWUuLjUzMjgzNjBmMzkw
MDc3NmNiMzQwZjdhN2UyMjU0ODllYzRlYmRlYTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCkBAIC04MTQsNiArODE0LDggQEAgdm9pZCBO
ZXR3b3JrUHJvY2Vzczo6Z2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFTdW1tYXJ5KFBBTDo6
U2Vzc2lvbklEIHNlc3Npb24KIHZvaWQgTmV0d29ya1Byb2Nlc3M6OnJlc2V0UGFyYW1ldGVyc1Rv
RGVmYXVsdFZhbHVlcyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBpZiAoYXV0byogbmV0d29ya1Nl
c3Npb24gPSB0aGlzLT5uZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQpKSB7CisgICAgICAgIG5ldHdv
cmtTZXNzaW9uLT5yZXNldENOQU1FRG9tYWluRGF0YSgpOworICAgICAgICBuZXR3b3JrU2Vzc2lv
bi0+c2V0Q05BTUVDbG9ha2luZ01pdGlnYXRpb25FbmFibGVkKFdlYkNvcmU6OkNOQU1FQ2xvYWtp
bmdNaXRpZ2F0aW9uRW5hYmxlZDo6Tm8pOwogICAgICAgICBpZiAoYXV0byogcmVzb3VyY2VMb2Fk
U3RhdGlzdGljcyA9IG5ldHdvcmtTZXNzaW9uLT5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzKCkpCiAg
ICAgICAgICAgICByZXNvdXJjZUxvYWRTdGF0aXN0aWNzLT5yZXNldFBhcmFtZXRlcnNUb0RlZmF1
bHRWYWx1ZXMoV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogICAgICAgICBlbHNlCkBAIC04
NjYsNiArODY4LDcgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6c2V0Tm90aWZ5UGFnZXNXaGVuRGF0
YVJlY29yZHNXZXJlU2Nhbm5lZChQQUw6OlNlc3Npb25JRCBzZXMKIHZvaWQgTmV0d29ya1Byb2Nl
c3M6OnNldElzUnVubmluZ1Jlc291cmNlTG9hZFN0YXRpc3RpY3NUZXN0KFBBTDo6U2Vzc2lvbklE
IHNlc3Npb25JRCwgYm9vbCB2YWx1ZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBs
ZXRpb25IYW5kbGVyKQogewogICAgIGlmIChhdXRvKiBuZXR3b3JrU2Vzc2lvbiA9IHRoaXMtPm5l
dHdvcmtTZXNzaW9uKHNlc3Npb25JRCkpIHsKKyAgICAgICAgbmV0d29ya1Nlc3Npb24tPnNldENO
QU1FQ2xvYWtpbmdNaXRpZ2F0aW9uRW5hYmxlZChXZWJDb3JlOjpDTkFNRUNsb2FraW5nTWl0aWdh
dGlvbkVuYWJsZWQ6Olllcyk7CiAgICAgICAgIGlmIChhdXRvKiByZXNvdXJjZUxvYWRTdGF0aXN0
aWNzID0gbmV0d29ya1Nlc3Npb24tPnJlc291cmNlTG9hZFN0YXRpc3RpY3MoKSkKICAgICAgICAg
ICAgIHJlc291cmNlTG9hZFN0YXRpc3RpY3MtPnNldElzUnVubmluZ1Rlc3QodmFsdWUsIFdURk1v
dmUoY29tcGxldGlvbkhhbmRsZXIpKTsKICAgICAgICAgZWxzZQpAQCAtMTM3OSw2ICsxMzgyLDIw
IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OnNldFRvU2FtZVNpdGVTdHJpY3RDb29raWVzRm9yVGVz
dGluZyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uCiAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7
CiAgICAgfQogfQorCit2b2lkIE5ldHdvcmtQcm9jZXNzOjpzZXRGaXJzdFBhcnR5SG9zdENOQU1F
RG9tYWluRm9yVGVzdGluZyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFN0cmluZyYmIGZpcnN0
UGFydHlIb3N0LCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYmIGNuYW1lRG9tYWluLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgaWYgKGF1
dG8qIG5ldHdvcmtTZXNzaW9uID0gdGhpcy0+bmV0d29ya1Nlc3Npb24oc2Vzc2lvbklEKSkKKyAg
ICAgICAgbmV0d29ya1Nlc3Npb24tPnNldEZpcnN0UGFydHlIb3N0Q05BTUVEb21haW4oV1RGTW92
ZShmaXJzdFBhcnR5SG9zdCksIFdURk1vdmUoY25hbWVEb21haW4pKTsKKyAgICBjb21wbGV0aW9u
SGFuZGxlcigpOworfQorCit2b2lkIE5ldHdvcmtQcm9jZXNzOjpzZXRUaGlyZFBhcnR5Q05BTUVE
b21haW5Gb3JUZXN0aW5nKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgV2ViQ29yZTo6UmVnaXN0
cmFibGVEb21haW4mJiBkb21haW4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0
aW9uSGFuZGxlcikKK3sKKyAgICBpZiAoYXV0byogbmV0d29ya1Nlc3Npb24gPSB0aGlzLT5uZXR3
b3JrU2Vzc2lvbihzZXNzaW9uSUQpKQorICAgICAgICBuZXR3b3JrU2Vzc2lvbi0+c2V0VGhpcmRQ
YXJ0eUNOQU1FRG9tYWluRm9yVGVzdGluZyhXVEZNb3ZlKGRvbWFpbikpOworICAgIGNvbXBsZXRp
b25IYW5kbGVyKCk7Cit9CiAjZW5kaWYgLy8gRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElD
UykKIAogdm9pZCBOZXR3b3JrUHJvY2Vzczo6c2V0QWRDbGlja0F0dHJpYnV0aW9uRGVidWdNb2Rl
KGJvb2wgZGVidWdNb2RlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrUHJvY2Vzcy5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
UHJvY2Vzcy5oCmluZGV4IDRkZmExNGM4NzgzZGEyMjZjMzI4MDQwYTMyZDU5YzVhNTkzNzA3Mzku
LmYyM2ZkNTgwZWY1NGNhZGY4MGY0NjgzNjY1NmZiMjNmZDRkZGYyZmMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmgKQEAgLTI3Myw2ICsyNzMsOCBA
QCBwdWJsaWM6CiAgICAgdm9pZCBzZXRTaG91bGRFbmJsZVNhbWVTaXRlU3RyaWN0RW5mb3JjZW1l
bnRGb3JUZXN0aW5nKFBBTDo6U2Vzc2lvbklELCBXZWJDb3JlOjpTYW1lU2l0ZVN0cmljdEVuZm9y
Y2VtZW50RW5hYmxlZCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKICAgICB2b2lkIHNl
dEZpcnN0UGFydHlXZWJzaXRlRGF0YVJlbW92YWxNb2RlRm9yVGVzdGluZyhQQUw6OlNlc3Npb25J
RCwgV2ViQ29yZTo6Rmlyc3RQYXJ0eVdlYnNpdGVEYXRhUmVtb3ZhbE1vZGUsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoKT4mJik7CiAgICAgdm9pZCBzZXRUb1NhbWVTaXRlU3RyaWN0Q29va2llc0Zv
clRlc3RpbmcoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWlu
JiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKKyAgICB2b2lkIHNldEZpcnN0UGFydHlI
b3N0Q05BTUVEb21haW5Gb3JUZXN0aW5nKFBBTDo6U2Vzc2lvbklELCBTdHJpbmcmJiBmaXJzdFBh
cnR5SG9zdCwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mJiBjbmFtZURvbWFpbiwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKKyAgICB2b2lkIHNldFRoaXJkUGFydHlDTkFNRURvbWFp
bkZvclRlc3RpbmcoUEFMOjpTZXNzaW9uSUQsIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiYs
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAjZW5kaWYKIAogICAgIHZvaWQgc2V0QWRD
bGlja0F0dHJpYnV0aW9uRGVidWdNb2RlKGJvb2wpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MubWVzc2FnZXMuaW4KaW5kZXggNzAyMjI4
NWUzNjg4NWRlODZmMmRhZjY4ODhiMDI0NzI5OTM1Y2Y2NC4uMDAyZWNkYjgzM2IyOTQxYWU4NjEz
ZmE2NGYwMWRmODk4OTZkZjM0NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrUHJvY2Vzcy5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLm1lc3NhZ2VzLmluCkBAIC0xNDgsNiArMTQ4LDggQEAg
bWVzc2FnZXMgLT4gTmV0d29ya1Byb2Nlc3MgTGVnYWN5UmVjZWl2ZXIgewogICAgIFNldFNob3Vs
ZEVuYmxlU2FtZVNpdGVTdHJpY3RFbmZvcmNlbWVudEZvclRlc3RpbmcoUEFMOjpTZXNzaW9uSUQg
c2Vzc2lvbklELCBlbnVtOmJvb2wgV2ViQ29yZTo6U2FtZVNpdGVTdHJpY3RFbmZvcmNlbWVudEVu
YWJsZWQgZW5hYmxlZCkgLT4gKCkgQXN5bmMKICAgICBTZXRGaXJzdFBhcnR5V2Vic2l0ZURhdGFS
ZW1vdmFsTW9kZUZvclRlc3RpbmcoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBlbnVtOnVpbnQ4
X3QgV2ViQ29yZTo6Rmlyc3RQYXJ0eVdlYnNpdGVEYXRhUmVtb3ZhbE1vZGUgbW9kZSkgLT4gKCkg
QXN5bmMKICAgICBTZXRUb1NhbWVTaXRlU3RyaWN0Q29va2llc0ZvclRlc3RpbmcoUEFMOjpTZXNz
aW9uSUQgc2Vzc2lvbklELCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiBkb21haW4pIC0+ICgp
IEFzeW5jCisgICAgU2V0Rmlyc3RQYXJ0eUhvc3RDTkFNRURvbWFpbkZvclRlc3RpbmcoUEFMOjpT
ZXNzaW9uSUQgc2Vzc2lvbklELCBTdHJpbmcgZmlyc3RQYXJ0eUhvc3QsIFdlYkNvcmU6OlJlZ2lz
dHJhYmxlRG9tYWluIGNuYW1lRG9tYWluKSAtPiAoKSBBc3luYworICAgIFNldFRoaXJkUGFydHlD
TkFNRURvbWFpbkZvclRlc3RpbmcoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBXZWJDb3JlOjpS
ZWdpc3RyYWJsZURvbWFpbiBkb21haW4pIC0+ICgpIEFzeW5jCiAjZW5kaWYKIAogICAgIFNldEFk
Q2xpY2tBdHRyaWJ1dGlvbkRlYnVnTW9kZShib29sIGRlYnVnTW9kZSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24uY3BwIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5jcHAKaW5kZXggNmI2NmJjZjIyMjBj
MzViYWVhNmQyYmI1OGUxMzAxODhkMTY2NjhhOC4uYTdjYjE3NDQ5YzRmNDcyMzhiMTVjZGE5NjY0
MTNjMGZiODYxZmRlNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrU2Vzc2lvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrU2Vzc2lvbi5jcHAKQEAgLTkwLDYgKzkwLDcgQEAgTmV0d29ya1Nlc3Npb246Ok5ldHdvcmtT
ZXNzaW9uKE5ldHdvcmtQcm9jZXNzJiBuZXR3b3JrUHJvY2VzcywgY29uc3QgTmV0d29ya1Nlc3MK
ICAgICAsIG1fc2FtZVNpdGVTdHJpY3RFbmZvcmNlbWVudEVuYWJsZWQocGFyYW1ldGVycy5yZXNv
dXJjZUxvYWRTdGF0aXN0aWNzUGFyYW1ldGVycy5zYW1lU2l0ZVN0cmljdEVuZm9yY2VtZW50RW5h
YmxlZCkKICAgICAsIG1fZmlyc3RQYXJ0eVdlYnNpdGVEYXRhUmVtb3ZhbE1vZGUocGFyYW1ldGVy
cy5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGFyYW1ldGVycy5maXJzdFBhcnR5V2Vic2l0ZURhdGFS
ZW1vdmFsTW9kZSkKICAgICAsIG1fc3RhbmRhbG9uZUFwcGxpY2F0aW9uRG9tYWluKHBhcmFtZXRl
cnMucmVzb3VyY2VMb2FkU3RhdGlzdGljc1BhcmFtZXRlcnMuc3RhbmRhbG9uZUFwcGxpY2F0aW9u
RG9tYWluKQorICAgICwgbV9jbmFtZUNsb2FraW5nTWl0aWdhdGlvbkVuYWJsZWQocGFyYW1ldGVy
cy5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGFyYW1ldGVycy5jbmFtZUNsb2FraW5nTWl0aWdhdGlv
bkVuYWJsZWQpCiAjZW5kaWYKICAgICAsIG1fYWRDbGlja0F0dHJpYnV0aW9uKG1ha2VVbmlxdWVS
ZWY8QWRDbGlja0F0dHJpYnV0aW9uTWFuYWdlcj4obmV0d29ya1Byb2Nlc3MsIHBhcmFtZXRlcnMu
c2Vzc2lvbklEKSkKICAgICAsIG1fdGVzdFNwZWVkTXVsdGlwbGllcihwYXJhbWV0ZXJzLnRlc3RT
cGVlZE11bHRpcGxpZXIpCkBAIC0yODAsNiArMjgxLDQ0IEBAIHZvaWQgTmV0d29ya1Nlc3Npb246
OnNldFNob3VsZEVuYmxlU2FtZVNpdGVTdHJpY3RFbmZvcmNlbWVudChXZWJDb3JlOjpTYW1lU2l0
ZVN0CiAgICAgaWYgKG1fcmVzb3VyY2VMb2FkU3RhdGlzdGljcykKICAgICAgICAgbV9yZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzLT5zZXRTYW1lU2l0ZVN0cmljdEVuZm9yY2VtZW50RW5hYmxlZChlbmFi
bGVkKTsKIH0KKwordm9pZCBOZXR3b3JrU2Vzc2lvbjo6c2V0Rmlyc3RQYXJ0eUhvc3RDTkFNRURv
bWFpbihTdHJpbmcmJiBmaXJzdFBhcnR5SG9zdCwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4m
JiBjbmFtZURvbWFpbikKK3sKKyNpZiBIQVZFKENGTkVUV09SS19DTkFNRV9BTkRfQ09PS0lFX1RS
QU5TRk9STV9TUEkpCisgICAgaWYgKCFjbmFtZUNsb2FraW5nTWl0aWdhdGlvbkVuYWJsZWQoKSkK
KyAgICAgICAgcmV0dXJuOworCisgICAgQVNTRVJUKCFmaXJzdFBhcnR5SG9zdC5pc0VtcHR5KCkg
JiYgIWNuYW1lRG9tYWluLmlzRW1wdHkoKSAmJiBmaXJzdFBhcnR5SG9zdCAhPSBjbmFtZURvbWFp
bi5zdHJpbmcoKSk7CisgICAgaWYgKGZpcnN0UGFydHlIb3N0LmlzRW1wdHkoKSB8fCBjbmFtZURv
bWFpbi5pc0VtcHR5KCkgfHwgZmlyc3RQYXJ0eUhvc3QgPT0gY25hbWVEb21haW4uc3RyaW5nKCkp
CisgICAgICAgIHJldHVybjsKKyAgICBtX2ZpcnN0UGFydHlIb3N0Q05BTUVEb21haW5zLmFkZChX
VEZNb3ZlKGZpcnN0UGFydHlIb3N0KSwgV1RGTW92ZShjbmFtZURvbWFpbikpOworI2Vsc2UKKyAg
ICBVTlVTRURfUEFSQU0oZmlyc3RQYXJ0eUhvc3QpOworICAgIFVOVVNFRF9QQVJBTShjbmFtZURv
bWFpbik7CisjZW5kaWYKK30KKworT3B0aW9uYWw8V2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4+
IE5ldHdvcmtTZXNzaW9uOjpmaXJzdFBhcnR5SG9zdENOQU1FRG9tYWluKGNvbnN0IFN0cmluZyYg
Zmlyc3RQYXJ0eUhvc3QpCit7CisjaWYgSEFWRShDRk5FVFdPUktfQ05BTUVfQU5EX0NPT0tJRV9U
UkFOU0ZPUk1fU1BJKQorICAgIGlmICghY25hbWVDbG9ha2luZ01pdGlnYXRpb25FbmFibGVkKCkp
CisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICBhdXRvIGl0ZXJhdG9yID0gbV9m
aXJzdFBhcnR5SG9zdENOQU1FRG9tYWlucy5maW5kKGZpcnN0UGFydHlIb3N0KTsKKyAgICBpZiAo
aXRlcmF0b3IgPT0gbV9maXJzdFBhcnR5SG9zdENOQU1FRG9tYWlucy5lbmQoKSkKKyAgICAgICAg
cmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICByZXR1cm4gaXRlcmF0b3ItPnZhbHVlOworI2Vsc2UK
KyAgICBVTlVTRURfUEFSQU0oZmlyc3RQYXJ0eUhvc3QpOworICAgIHJldHVybiBXVEY6Om51bGxv
cHQ7CisjZW5kaWYKK30KKwordm9pZCBOZXR3b3JrU2Vzc2lvbjo6cmVzZXRDTkFNRURvbWFpbkRh
dGEoKQoreworICAgIG1fZmlyc3RQYXJ0eUhvc3RDTkFNRURvbWFpbnMuY2xlYXIoKTsKKyAgICBt
X3RoaXJkUGFydHlDTkFNRURvbWFpbkZvclRlc3RpbmcgPSBXVEY6Om51bGxvcHQ7Cit9CiAjZW5k
aWYgLy8gRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKIAogdm9pZCBOZXR3b3JrU2Vz
c2lvbjo6c3RvcmVBZENsaWNrQXR0cmlidXRpb24oV2ViQ29yZTo6QWRDbGlja0F0dHJpYnV0aW9u
JiYgYWRDbGlja0F0dHJpYnV0aW9uKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrU2Vzc2lvbi5oCmluZGV4IDM4MmJmODA1OWZjMDk4ZmVkZmE1MmExODg1NDFlNzRiZjll
NzQzN2QuLjVkM2VmMGVmNmViMTFmNTAxY2JmYzg0YjM4N2E3OWE0ODM2Yzk5YWMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24uaAorKysgYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uLmgKQEAgLTEwNSw2ICsx
MDUsMTMgQEAgcHVibGljOgogICAgIGJvb2wgc2hvdWxkRG93bmdyYWRlUmVmZXJyZXIoKSBjb25z
dDsKICAgICB2b2lkIHNldFRoaXJkUGFydHlDb29raWVCbG9ja2luZ01vZGUoV2ViQ29yZTo6VGhp
cmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9kZSk7CiAgICAgdm9pZCBzZXRTaG91bGRFbmJsZVNhbWVT
aXRlU3RyaWN0RW5mb3JjZW1lbnQoV2ViQ29yZTo6U2FtZVNpdGVTdHJpY3RFbmZvcmNlbWVudEVu
YWJsZWQpOworICAgIHZvaWQgc2V0Q05BTUVDbG9ha2luZ01pdGlnYXRpb25FbmFibGVkKFdlYkNv
cmU6OkNOQU1FQ2xvYWtpbmdNaXRpZ2F0aW9uRW5hYmxlZCB2YWx1ZSkgeyBtX2NuYW1lQ2xvYWtp
bmdNaXRpZ2F0aW9uRW5hYmxlZCA9IHZhbHVlOyB9CisgICAgYm9vbCBjbmFtZUNsb2FraW5nTWl0
aWdhdGlvbkVuYWJsZWQoKSBjb25zdCB7IHJldHVybiBtX2NuYW1lQ2xvYWtpbmdNaXRpZ2F0aW9u
RW5hYmxlZCA9PSBXZWJDb3JlOjpDTkFNRUNsb2FraW5nTWl0aWdhdGlvbkVuYWJsZWQ6Olllczsg
fQorICAgIHZvaWQgc2V0Rmlyc3RQYXJ0eUhvc3RDTkFNRURvbWFpbihTdHJpbmcmJiBmaXJzdFBh
cnR5SG9zdCwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mJiBjbmFtZURvbWFpbik7CisgICAg
T3B0aW9uYWw8V2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4+IGZpcnN0UGFydHlIb3N0Q05BTUVE
b21haW4oY29uc3QgU3RyaW5nJiBmaXJzdFBhcnR5SG9zdCk7CisgICAgdm9pZCBzZXRUaGlyZFBh
cnR5Q05BTUVEb21haW5Gb3JUZXN0aW5nKFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiYgZG9t
YWluKSB7IG1fdGhpcmRQYXJ0eUNOQU1FRG9tYWluRm9yVGVzdGluZyA9IFdURk1vdmUoZG9tYWlu
KTsgfTsKKyAgICBPcHRpb25hbDxXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbj4gdGhpcmRQYXJ0
eUNOQU1FRG9tYWluRm9yVGVzdGluZygpIGNvbnN0IHsgcmV0dXJuIG1fdGhpcmRQYXJ0eUNOQU1F
RG9tYWluRm9yVGVzdGluZzsgfQorICAgIHZvaWQgcmVzZXRDTkFNRURvbWFpbkRhdGEoKTsKICAg
ICB2b2lkIGRlc3Ryb3lSZXNvdXJjZUxvYWRTdGF0aXN0aWNzKENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoKT4mJik7CiAgICAgdm9pZCBmbHVzaEFuZERlc3Ryb3lQZXJzaXN0ZW50U3RvcmUoQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKICNlbmRpZgpAQCAtMTY2LDYgKzE3Myw5IEBAIHByb3Rl
Y3RlZDoKICAgICBXZWJDb3JlOjpTYW1lU2l0ZVN0cmljdEVuZm9yY2VtZW50RW5hYmxlZCBtX3Nh
bWVTaXRlU3RyaWN0RW5mb3JjZW1lbnRFbmFibGVkIHsgV2ViQ29yZTo6U2FtZVNpdGVTdHJpY3RF
bmZvcmNlbWVudEVuYWJsZWQ6Ok5vIH07CiAgICAgV2ViQ29yZTo6Rmlyc3RQYXJ0eVdlYnNpdGVE
YXRhUmVtb3ZhbE1vZGUgbV9maXJzdFBhcnR5V2Vic2l0ZURhdGFSZW1vdmFsTW9kZSB7IFdlYkNv
cmU6OkZpcnN0UGFydHlXZWJzaXRlRGF0YVJlbW92YWxNb2RlOjpBbGxCdXRDb29raWVzIH07CiAg
ICAgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4gbV9zdGFuZGFsb25lQXBwbGljYXRpb25Eb21h
aW47CisgICAgV2ViQ29yZTo6Q05BTUVDbG9ha2luZ01pdGlnYXRpb25FbmFibGVkIG1fY25hbWVD
bG9ha2luZ01pdGlnYXRpb25FbmFibGVkIHsgV2ViQ29yZTo6Q05BTUVDbG9ha2luZ01pdGlnYXRp
b25FbmFibGVkOjpObyB9OworICAgIEhhc2hNYXA8U3RyaW5nLCBXZWJDb3JlOjpSZWdpc3RyYWJs
ZURvbWFpbj4gbV9maXJzdFBhcnR5SG9zdENOQU1FRG9tYWluczsKKyAgICBPcHRpb25hbDxXZWJD
b3JlOjpSZWdpc3RyYWJsZURvbWFpbj4gbV90aGlyZFBhcnR5Q05BTUVEb21haW5Gb3JUZXN0aW5n
OwogI2VuZGlmCiAgICAgYm9vbCBtX2lzU3RhbGVXaGlsZVJldmFsaWRhdGVFbmFibGVkIHsgZmFs
c2UgfTsKICAgICBVbmlxdWVSZWY8QWRDbGlja0F0dHJpYnV0aW9uTWFuYWdlcj4gbV9hZENsaWNr
QXR0cmlidXRpb247CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2Nv
Y29hL05ldHdvcmtEYXRhVGFza0NvY29hLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L2NvY29hL05ldHdvcmtEYXRhVGFza0NvY29hLmgKaW5kZXggMmMxZDg4Y2FjYzNlOTk5NGZhOWM4
Mjk2MTI4ODE0ZWM5ZTlhNjczYy4uZjAxMzM0ODE0ZDNkZDA4ZGY1MTBhODgyZjM0MWY2NTYyYzU4
NzRiYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3
b3JrRGF0YVRhc2tDb2NvYS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29j
b2EvTmV0d29ya0RhdGFUYXNrQ29jb2EuaApAQCAtMzQsNiArMzQsMTAgQEAKIE9CSkNfQ0xBU1Mg
TlNIVFRQQ29va2llU3RvcmFnZTsKIE9CSkNfQ0xBU1MgTlNVUkxTZXNzaW9uRGF0YVRhc2s7CiAK
K25hbWVzcGFjZSBXZWJDb3JlIHsKK2NsYXNzIFJlZ2lzdHJhYmxlRG9tYWluOworfQorCiBuYW1l
c3BhY2UgV2ViS2l0IHsKIAogY2xhc3MgRG93bmxvYWQ7CkBAIC04Nyw2ICs5MSwxMCBAQCBwcml2
YXRlOgogCiAjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKICAgICBzdGF0aWMg
TlNIVFRQQ29va2llU3RvcmFnZSAqc3RhdGVsZXNzQ29va2llU3RvcmFnZSgpOworI2lmIEhBVkUo
Q0ZORVRXT1JLX0NOQU1FX0FORF9DT09LSUVfVFJBTlNGT1JNX1NQSSkKKyAgICB2b2lkIHVwZGF0
ZUZpcnN0UGFydHlJbmZvRm9yU2Vzc2lvbihjb25zdCBVUkwmKTsKKyAgICB2b2lkIGFwcGx5Q29v
a2llUG9saWN5Rm9yVGhpcmRQYXJ0eUNOQU1FQ2xvYWtpbmcoY29uc3QgV2ViQ29yZTo6UmVzb3Vy
Y2VSZXF1ZXN0Jik7CisjZW5kaWYKICAgICB2b2lkIGJsb2NrQ29va2llcygpOwogICAgIHZvaWQg
dW5ibG9ja0Nvb2tpZXMoKTsKICAgICBib29sIG5lZWRzRmlyc3RQYXJ0eUNvb2tpZUJsb2NraW5n
TGF0Y2hNb2RlUXVpcmsoY29uc3QgVVJMJiBmaXJzdFBhcnR5VVJMLCBjb25zdCBVUkwmIHJlcXVl
c3RVUkwsIGNvbnN0IFVSTCYgcmVkaXJlY3RpbmdVUkwpIGNvbnN0OwpAQCAtMTAyLDYgKzExMCw5
IEBAIHByaXZhdGU6CiAKICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQogICAg
IGJvb2wgbV9oYXNCZWVuU2V0VG9Vc2VTdGF0ZWxlc3NDb29raWVTdG9yYWdlIHsgZmFsc2UgfTsK
KyNpZiBIQVZFKENGTkVUV09SS19DTkFNRV9BTkRfQ09PS0lFX1RSQU5TRk9STV9TUEkpCisgICAg
U2Vjb25kcyBtX2FnZUNhcEZvckNOQU1FQ2xvYWtlZENvb2tpZXMgeyAyNF9oICogNyB9OworI2Vu
ZGlmCiAjZW5kaWYKIAogICAgIGJvb2wgbV9pc0Zvck1haW5SZXNvdXJjZU5hdmlnYXRpb25Gb3JB
bnlGcmFtZSB7IGZhbHNlIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL2NvY29hL05ldHdvcmtEYXRhVGFza0NvY29hLm1tIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9jb2NvYS9OZXR3b3JrRGF0YVRhc2tDb2NvYS5tbQppbmRleCA3N2I3ZDEzNDU0NGMx
NDQ2MmRmZDhhZTJmMDJmODNjZjllMzdkNjA0Li44NGU1ZDQwY2EyNDNhZDkwNmY2MzY2MTY2ODQw
ZWNkZGM1OTg4ODNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2Nv
Y29hL05ldHdvcmtEYXRhVGFza0NvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvY29jb2EvTmV0d29ya0RhdGFUYXNrQ29jb2EubW0KQEAgLTM4LDYgKzM4LDcgQEAKICNp
bXBvcnQgPFdlYkNvcmUvQXV0aGVudGljYXRpb25DaGFsbGVuZ2UuaD4KICNpbXBvcnQgPFdlYkNv
cmUvTmV0d29ya1N0b3JhZ2VTZXNzaW9uLmg+CiAjaW1wb3J0IDxXZWJDb3JlL05vdEltcGxlbWVu
dGVkLmg+CisjaW1wb3J0IDxXZWJDb3JlL1JlZ2lzdHJhYmxlRG9tYWluLmg+CiAjaW1wb3J0IDxX
ZWJDb3JlL1Jlc291cmNlUmVxdWVzdC5oPgogI2ltcG9ydCA8cGFsL3NwaS9jZi9DRk5ldHdvcmtT
UEkuaD4KICNpbXBvcnQgPHd0Zi9CbG9ja1B0ci5oPgpAQCAtMTI5LDYgKzEzMCw4NyBAQCBOU0hU
VFBDb29raWVTdG9yYWdlICpOZXR3b3JrRGF0YVRhc2tDb2NvYTo6c3RhdGVsZXNzQ29va2llU3Rv
cmFnZSgpCiAgICAgcmV0dXJuIHN0YXRlbGVzc0Nvb2tpZVN0b3JhZ2UuZ2V0KCkuZ2V0KCk7CiB9
CiAKKyNpZiBIQVZFKENGTkVUV09SS19DTkFNRV9BTkRfQ09PS0lFX1RSQU5TRk9STV9TUEkpCisv
LyBGSVhNRTogUmVtb3ZlIHRoZXNlIHNlbGVjdG9yIGNoZWNrcyB3aGVuIG1hY09TIEJpZyBTdXIg
aGFzIHNoaXBwZWQuCisvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MjE1MjgwCitzdGF0aWMgYm9vbCBoYXNDTkFNRUFuZENvb2tpZVRyYW5zZm9ybVNQSShOU1VSTFNl
c3Npb25EYXRhVGFzayogdGFzaykKK3sKKyAgICByZXR1cm4gW3Rhc2sgcmVzcG9uZHNUb1NlbGVj
dG9yOkBzZWxlY3RvcihfY29va2llVHJhbnNmb3JtQ2FsbGJhY2spXQorICAgICAgICAmJiBbdGFz
ayByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKF9yZXNvbHZlZENOQU1FQ2hhaW4pXTsKK30K
Kworc3RhdGljIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIGxhc3RDTkFNRURvbWFpbihOU0Fy
cmF5PE5TU3RyaW5nICo+ICpjbmFtZXMpCit7CisgICAgaWYgKGF1dG8qIGxhc3RSZXNvbHZlZENO
QU1FSW5DaGFpbiA9IFtjbmFtZXMgbGFzdE9iamVjdF0pIHsKKyAgICAgICAgYXV0byBjbmFtZSA9
IFN0cmluZyhsYXN0UmVzb2x2ZWRDTkFNRUluQ2hhaW4pOworICAgICAgICBpZiAoY25hbWUuZW5k
c1dpdGgoJy4nKSkKKyAgICAgICAgICAgIGNuYW1lLnJlbW92ZShjbmFtZS5sZW5ndGgoKSAtIDEp
OworICAgICAgICByZXR1cm4gV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW46OnVuY2hlY2tlZENy
ZWF0ZUZyb21Ib3N0KGNuYW1lKTsKKyAgICB9CisKKyAgICByZXR1cm4geyB9OworfQorCit2b2lk
IE5ldHdvcmtEYXRhVGFza0NvY29hOjp1cGRhdGVGaXJzdFBhcnR5SW5mb0ZvclNlc3Npb24oY29u
c3QgVVJMJiByZXF1ZXN0VVJMKQoreworICAgIGlmICghaGFzQ05BTUVBbmRDb29raWVUcmFuc2Zv
cm1TUEkobV90YXNrLmdldCgpKSB8fCAhbmV0d29ya1Nlc3Npb24oKSB8fCAhbmV0d29ya1Nlc3Np
b24oKS0+bmV0d29ya1N0b3JhZ2VTZXNzaW9uKCkgfHwgIW5ldHdvcmtTZXNzaW9uKCktPm5ldHdv
cmtTdG9yYWdlU2Vzc2lvbigpLT5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzRW5hYmxlZCgpIHx8ICFu
ZXR3b3JrU2Vzc2lvbigpLT5jbmFtZUNsb2FraW5nTWl0aWdhdGlvbkVuYWJsZWQoKSB8fCByZXF1
ZXN0VVJMLmhvc3QoKS5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybjsKKworICAgIGF1dG8gY25h
bWVEb21haW4gPSBsYXN0Q05BTUVEb21haW4oW21fdGFzayBfcmVzb2x2ZWRDTkFNRUNoYWluXSk7
CisgICAgaWYgKCFjbmFtZURvbWFpbi5pc0VtcHR5KCkpCisgICAgICAgIG5ldHdvcmtTZXNzaW9u
KCktPnNldEZpcnN0UGFydHlIb3N0Q05BTUVEb21haW4ocmVxdWVzdFVSTC5ob3N0KCkudG9TdHJp
bmcoKSwgV1RGTW92ZShjbmFtZURvbWFpbikpOworfQorCit2b2lkIE5ldHdvcmtEYXRhVGFza0Nv
Y29hOjphcHBseUNvb2tpZVBvbGljeUZvclRoaXJkUGFydHlDTkFNRUNsb2FraW5nKGNvbnN0IFdl
YkNvcmU6OlJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCkKK3sKKyAgICBpZiAoIWhhc0NOQU1FQW5k
Q29va2llVHJhbnNmb3JtU1BJKG1fdGFzay5nZXQoKSkgfHwgaXNUb3BMZXZlbE5hdmlnYXRpb24o
KSB8fCAhbmV0d29ya1Nlc3Npb24oKSB8fCAhbmV0d29ya1Nlc3Npb24oKS0+bmV0d29ya1N0b3Jh
Z2VTZXNzaW9uKCkgfHwgIW5ldHdvcmtTZXNzaW9uKCktPm5ldHdvcmtTdG9yYWdlU2Vzc2lvbigp
LT5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzRW5hYmxlZCgpIHx8ICFuZXR3b3JrU2Vzc2lvbigpLT5j
bmFtZUNsb2FraW5nTWl0aWdhdGlvbkVuYWJsZWQoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAg
aWYgKGlzVGhpcmRQYXJ0eVJlcXVlc3QocmVxdWVzdCkpIHsKKyAgICAgICAgbV90YXNrLmdldCgp
Ll9jb29raWVUcmFuc2Zvcm1DYWxsYmFjayA9IG5pbDsKKyAgICAgICAgcmV0dXJuOworICAgIH0K
KworICAgIC8vIENhcCBleHBpcnkgb2YgaW5jb21pbmcgY29va2llcyBpbiByZXNwb25zZSBpZiBp
dCBpcyBhIHNhbWUtc2l0ZQorICAgIC8vIHN1YnJlc291cmNlIGJ1dCBpdCByZXNvbHZlcyB0byBh
IGRpZmZlcmVudCBDTkFNRSB0aGFuIHRoZSB0b3AKKyAgICAvLyBzaXRlIHJlcXVlc3QsIGEuay5h
LiB0aGlyZC1wYXJ0eSBDTkFNRSBjbG9ha2luZy4KKyAgICBhdXRvIGZpcnN0UGFydHlVUkwgPSBy
ZXF1ZXN0LmZpcnN0UGFydHlGb3JDb29raWVzKCk7CisgICAgYXV0byBmaXJzdFBhcnR5SG9zdENO
QU1FID0gbmV0d29ya1Nlc3Npb24oKS0+Zmlyc3RQYXJ0eUhvc3RDTkFNRURvbWFpbihmaXJzdFBh
cnR5VVJMLmhvc3QoKS50b1N0cmluZygpKTsKKworICAgIG1fdGFzay5nZXQoKS5fY29va2llVHJh
bnNmb3JtQ2FsbGJhY2sgPSBtYWtlQmxvY2tQdHIoW3JlcXVlc3RVUkwgPSBjcm9zc1RocmVhZENv
cHkocmVxdWVzdC51cmwoKSksIGZpcnN0UGFydHlVUkwgPSBjcm9zc1RocmVhZENvcHkoZmlyc3RQ
YXJ0eVVSTCksIGZpcnN0UGFydHlIb3N0Q05BTUUgPSBjcm9zc1RocmVhZENvcHkoZmlyc3RQYXJ0
eUhvc3RDTkFNRSksIHRoaXJkUGFydHlDTkFNRURvbWFpbkZvclRlc3RpbmcgPSBjcm9zc1RocmVh
ZENvcHkobmV0d29ya1Nlc3Npb24oKS0+dGhpcmRQYXJ0eUNOQU1FRG9tYWluRm9yVGVzdGluZygp
KSwgYWdlQ2FwRm9yQ05BTUVDbG9ha2VkQ29va2llcyA9IGNyb3NzVGhyZWFkQ29weShtX2FnZUNh
cEZvckNOQU1FQ2xvYWtlZENvb2tpZXMpLCB0YXNrID0gbV90YXNrXSAoTlNBcnJheTxOU0hUVFBD
b29raWUqPiAqY29va2llc1NldEluUmVzcG9uc2UpIC0+IE5TQXJyYXk8TlNIVFRQQ29va2llKj4g
KiB7CisgICAgICAgIGlmICghW2Nvb2tpZXNTZXRJblJlc3BvbnNlIGNvdW50XSkKKyAgICAgICAg
ICAgIHJldHVybiBjb29raWVzU2V0SW5SZXNwb25zZTsKKworICAgICAgICBhdXRvIGNuYW1lRG9t
YWluID0gbGFzdENOQU1FRG9tYWluKFt0YXNrIF9yZXNvbHZlZENOQU1FQ2hhaW5dKTsKKyAgICAg
ICAgaWYgKGNuYW1lRG9tYWluLmlzRW1wdHkoKSkgeworICAgICAgICAgICAgaWYgKCF0aGlyZFBh
cnR5Q05BTUVEb21haW5Gb3JUZXN0aW5nKQorICAgICAgICAgICAgICAgIHJldHVybiBjb29raWVz
U2V0SW5SZXNwb25zZTsKKyAgICAgICAgICAgIGNuYW1lRG9tYWluID0gKnRoaXJkUGFydHlDTkFN
RURvbWFpbkZvclRlc3Rpbmc7CisgICAgICAgIH0KKworICAgICAgICAvLyBDTkFNRSBjbG9ha2lu
ZyBpcyBhIGZpcnN0LXBhcnR5IHN1YiByZXNvdXJjZSB0aGF0IHJlc29sdmVzCisgICAgICAgIC8v
IHRocm91Z2ggYSBDTkFNRSB0aGF0IGRpZmZlcnMgZnJvbSB0aGUgZmlyc3QtcGFydHkgZG9tYWlu
IGFuZAorICAgICAgICAvLyBhbHNvIGRpZmZlcnMgZnJvbSB0aGUgdG9wIGZyYW1lIGhvc3QncyBD
TkFNRSwgaWYgb25lIGV4aXN0cy4KKyAgICAgICAgaWYgKCFjbmFtZURvbWFpbi5tYXRjaGVzKGZp
cnN0UGFydHlVUkwpICYmICghZmlyc3RQYXJ0eUhvc3RDTkFNRSB8fCBjbmFtZURvbWFpbiAhPSAq
Zmlyc3RQYXJ0eUhvc3RDTkFNRSkpIHsKKworICAgICAgICAgICAgTlNVSW50ZWdlciBjb3VudCA9
IFtjb29raWVzU2V0SW5SZXNwb25zZSBjb3VudF07CisgICAgICAgICAgICAvLyBEb24ndCB1c2Ug
UmV0YWluUHRyIGhlcmUuIFRoaXMgYXJyYXkgaGFzIHRvIGJlIHJldGFpbmVkIGFuZAorICAgICAg
ICAgICAgLy8gYXV0byByZWxlYXNlZCB0byBub3QgYmUgcmVsZWFzZWQgYmVmb3JlIHJldHVybmVk
IHRvIHRoZSBjb2RlCisgICAgICAgICAgICAvLyBleGVjdXRpbmcgdGhlIGJsb2NrLgorICAgICAg
ICAgICAgYXV0byogY2FwcGVkQ29va2llcyA9IFtOU011dGFibGVBcnJheSBhcnJheVdpdGhDYXBh
Y2l0eTpjb3VudF07CisgICAgICAgICAgICBmb3IgKE5TVUludGVnZXIgaSA9IDA7IGkgPCBjb3Vu
dDsgKytpKSB7CisgICAgICAgICAgICAgICAgTlNIVFRQQ29va2llICpjb29raWUgPSAoTlNIVFRQ
Q29va2llICopW2Nvb2tpZXNTZXRJblJlc3BvbnNlIG9iamVjdEF0SW5kZXg6aV07CisgICAgICAg
ICAgICAgICAgY29va2llID0gV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpjYXBFeHBp
cnlPZlBlcnNpc3RlbnRDb29raWUoY29va2llLCBhZ2VDYXBGb3JDTkFNRUNsb2FrZWRDb29raWVz
KTsKKyAgICAgICAgICAgICAgICBbY2FwcGVkQ29va2llcyBhZGRPYmplY3Q6Y29va2llXTsKKyAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgIHJldHVybiBjYXBwZWRDb29raWVzOworICAgICAgICB9
CisKKyAgICAgICAgcmV0dXJuIGNvb2tpZXNTZXRJblJlc3BvbnNlOworICAgIH0pLmdldCgpOwor
fQorI2VuZGlmCisKIHZvaWQgTmV0d29ya0RhdGFUYXNrQ29jb2E6OmJsb2NrQ29va2llcygpCiB7
CiAgICAgQVNTRVJUKGhhc1Byb2Nlc3NQcml2aWxlZ2UoUHJvY2Vzc1ByaXZpbGVnZTo6Q2FuQWNj
ZXNzUmF3Q29va2llcykpOwpAQCAtMjYzLDYgKzM0NSw5IEBAIE5ldHdvcmtEYXRhVGFza0NvY29h
OjpOZXR3b3JrRGF0YVRhc2tDb2NvYShOZXR3b3JrU2Vzc2lvbiYgc2Vzc2lvbiwgTmV0d29ya0Rh
dGFUCiAgICAgfQogCiAjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKKyNpZiBI
QVZFKENGTkVUV09SS19DTkFNRV9BTkRfQ09PS0lFX1RSQU5TRk9STV9TUEkpCisgICAgYXBwbHlD
b29raWVQb2xpY3lGb3JUaGlyZFBhcnR5Q05BTUVDbG9ha2luZyhyZXF1ZXN0KTsKKyNlbmRpZgog
ICAgIGlmIChzaG91bGRCbG9ja0Nvb2tpZXMpIHsKICNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQK
ICAgICAgICAgaWYgKG1fc2Vzc2lvbi0+c2hvdWxkTG9nQ29va2llSW5mb3JtYXRpb24oKSkKQEAg
LTM0NSw2ICs0MzAsMTAgQEAgdm9pZCBOZXR3b3JrRGF0YVRhc2tDb2NvYTo6ZGlkUmVjZWl2ZURh
dGEoUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiBkYXRhKQogdm9pZCBOZXR3b3JrRGF0YVRh
c2tDb2NvYTo6ZGlkUmVjZWl2ZVJlc3BvbnNlKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiBy
ZXNwb25zZSwgTmVnb3RpYXRlZExlZ2FjeVRMUyBuZWdvdGlhdGVkTGVnYWN5VExTLCBXZWJLaXQ6
OlJlc3BvbnNlQ29tcGxldGlvbkhhbmRsZXImJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBX
VEZFbWl0U2lnbnBvc3QobV90YXNrLmdldCgpLCAiRGF0YVRhc2siLCAicmVjZWl2ZWQgcmVzcG9u
c2UgaGVhZGVycyIpOworI2lmIEhBVkUoQ0ZORVRXT1JLX0NOQU1FX0FORF9DT09LSUVfVFJBTlNG
T1JNX1NQSSkKKyAgICBpZiAoaXNUb3BMZXZlbE5hdmlnYXRpb24oKSkKKyAgICAgICAgdXBkYXRl
Rmlyc3RQYXJ0eUluZm9Gb3JTZXNzaW9uKHJlc3BvbnNlLnVybCgpKTsKKyNlbmRpZgogICAgIE5l
dHdvcmtEYXRhVGFzazo6ZGlkUmVjZWl2ZVJlc3BvbnNlKFdURk1vdmUocmVzcG9uc2UpLCBuZWdv
dGlhdGVkTGVnYWN5VExTLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiB9CiAKQEAgLTM5
OSw2ICs0ODgsOSBAQCB2b2lkIE5ldHdvcmtEYXRhVGFza0NvY29hOjp3aWxsUGVyZm9ybUhUVFBS
ZWRpcmVjdGlvbihXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJgogICAgICAgICByZXF1ZXN0LnNl
dEZpcnN0UGFydHlGb3JDb29raWVzKHJlcXVlc3QudXJsKCkpOwogCiAjaWYgRU5BQkxFKFJFU09V
UkNFX0xPQURfU1RBVElTVElDUykKKyNpZiBIQVZFKENGTkVUV09SS19DTkFNRV9BTkRfQ09PS0lF
X1RSQU5TRk9STV9TUEkpCisgICAgYXBwbHlDb29raWVQb2xpY3lGb3JUaGlyZFBhcnR5Q05BTUVD
bG9ha2luZyhyZXF1ZXN0KTsKKyNlbmRpZgogICAgIGlmICghbV9oYXNCZWVuU2V0VG9Vc2VTdGF0
ZWxlc3NDb29raWVTdG9yYWdlKSB7CiAgICAgICAgIGlmIChtX3N0b3JlZENyZWRlbnRpYWxzUG9s
aWN5ID09IFdlYkNvcmU6OlN0b3JlZENyZWRlbnRpYWxzUG9saWN5OjpFcGhlbWVyYWxTdGF0ZWxl
c3MKICAgICAgICAgICAgIHx8IChtX3Nlc3Npb24tPm5ldHdvcmtTdG9yYWdlU2Vzc2lvbigpICYm
IG1fc2Vzc2lvbi0+bmV0d29ya1N0b3JhZ2VTZXNzaW9uKCktPnNob3VsZEJsb2NrQ29va2llcyhy
ZXF1ZXN0LCBtX2ZyYW1lSUQsIG1fcGFnZUlELCBtX3Nob3VsZFJlbGF4VGhpcmRQYXJ0eUNvb2tp
ZUJsb2NraW5nKSkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9SZXNvdXJjZUxv
YWRTdGF0aXN0aWNzUGFyYW1ldGVycy5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvUmVzb3VyY2VM
b2FkU3RhdGlzdGljc1BhcmFtZXRlcnMuaAppbmRleCA2MGRlMzVmNmFlOTU3ZDcwNjc1OTQ5NjQ3
M2NlMzUxNjQyNDFlMmViLi5hY2IzNGVhYjExNjU3YzAzM2M1MmFlM2FlYjAxODU4MjVlMGQ3Nzhj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9SZXNvdXJjZUxvYWRTdGF0aXN0aWNz
UGFyYW1ldGVycy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1Jlc291cmNlTG9hZFN0YXRp
c3RpY3NQYXJhbWV0ZXJzLmgKQEAgLTQ1LDYgKzQ1LDcgQEAgc3RydWN0IFJlc291cmNlTG9hZFN0
YXRpc3RpY3NQYXJhbWV0ZXJzIHsKICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNT
KQogICAgIFdlYkNvcmU6OlRoaXJkUGFydHlDb29raWVCbG9ja2luZ01vZGUgdGhpcmRQYXJ0eUNv
b2tpZUJsb2NraW5nTW9kZSB7IFdlYkNvcmU6OlRoaXJkUGFydHlDb29raWVCbG9ja2luZ01vZGU6
OkFsbCB9OwogICAgIFdlYkNvcmU6OlNhbWVTaXRlU3RyaWN0RW5mb3JjZW1lbnRFbmFibGVkIHNh
bWVTaXRlU3RyaWN0RW5mb3JjZW1lbnRFbmFibGVkIHsgV2ViQ29yZTo6U2FtZVNpdGVTdHJpY3RF
bmZvcmNlbWVudEVuYWJsZWQ6Ok5vIH07CisgICAgV2ViQ29yZTo6Q05BTUVDbG9ha2luZ01pdGln
YXRpb25FbmFibGVkIGNuYW1lQ2xvYWtpbmdNaXRpZ2F0aW9uRW5hYmxlZCB7IFdlYkNvcmU6OkNO
QU1FQ2xvYWtpbmdNaXRpZ2F0aW9uRW5hYmxlZDo6Tm8gfTsKICNlbmRpZgogICAgIFdlYkNvcmU6
OkZpcnN0UGFydHlXZWJzaXRlRGF0YVJlbW92YWxNb2RlIGZpcnN0UGFydHlXZWJzaXRlRGF0YVJl
bW92YWxNb2RlIHsgV2ViQ29yZTo6Rmlyc3RQYXJ0eVdlYnNpdGVEYXRhUmVtb3ZhbE1vZGU6OkFs
bEJ1dENvb2tpZXMgfTsKICAgICBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiBzdGFuZGFsb25l
QXBwbGljYXRpb25Eb21haW47CkBAIC02Myw2ICs2NCw3IEBAIHN0cnVjdCBSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzUGFyYW1ldGVycyB7CiAjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElD
UykKICAgICAgICAgZW5jb2RlciA8PCB0aGlyZFBhcnR5Q29va2llQmxvY2tpbmdNb2RlOwogICAg
ICAgICBlbmNvZGVyIDw8IHNhbWVTaXRlU3RyaWN0RW5mb3JjZW1lbnRFbmFibGVkOworICAgICAg
ICBlbmNvZGVyIDw8IGNuYW1lQ2xvYWtpbmdNaXRpZ2F0aW9uRW5hYmxlZDsKICNlbmRpZgogICAg
ICAgICBlbmNvZGVyIDw8IGZpcnN0UGFydHlXZWJzaXRlRGF0YVJlbW92YWxNb2RlOwogICAgICAg
ICBlbmNvZGVyIDw8IHN0YW5kYWxvbmVBcHBsaWNhdGlvbkRvbWFpbjsKQEAgLTExNyw2ICsxMTks
MTEgQEAgc3RydWN0IFJlc291cmNlTG9hZFN0YXRpc3RpY3NQYXJhbWV0ZXJzIHsKICAgICAgICAg
ZGVjb2RlciA+PiBzYW1lU2l0ZVN0cmljdEVuZm9yY2VtZW50RW5hYmxlZDsKICAgICAgICAgaWYg
KCFzYW1lU2l0ZVN0cmljdEVuZm9yY2VtZW50RW5hYmxlZCkKICAgICAgICAgICAgIHJldHVybiBX
VEY6Om51bGxvcHQ7CisKKyAgICAgICAgT3B0aW9uYWw8V2ViQ29yZTo6Q05BTUVDbG9ha2luZ01p
dGlnYXRpb25FbmFibGVkPiBjbmFtZUNsb2FraW5nTWl0aWdhdGlvbkVuYWJsZWQ7CisgICAgICAg
IGRlY29kZXIgPj4gY25hbWVDbG9ha2luZ01pdGlnYXRpb25FbmFibGVkOworICAgICAgICBpZiAo
IWNuYW1lQ2xvYWtpbmdNaXRpZ2F0aW9uRW5hYmxlZCkKKyAgICAgICAgICAgIHJldHVybiBXVEY6
Om51bGxvcHQ7CiAjZW5kaWYKIAogICAgICAgICBPcHRpb25hbDxXZWJDb3JlOjpGaXJzdFBhcnR5
V2Vic2l0ZURhdGFSZW1vdmFsTW9kZT4gZmlyc3RQYXJ0eVdlYnNpdGVEYXRhUmVtb3ZhbE1vZGU7
CkBAIC0xNTAsNiArMTU3LDcgQEAgc3RydWN0IFJlc291cmNlTG9hZFN0YXRpc3RpY3NQYXJhbWV0
ZXJzIHsKICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQogICAgICAgICAgICAg
V1RGTW92ZSgqdGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9kZSksCiAgICAgICAgICAgICBXVEZN
b3ZlKCpzYW1lU2l0ZVN0cmljdEVuZm9yY2VtZW50RW5hYmxlZCksCisgICAgICAgICAgICBXVEZN
b3ZlKCpjbmFtZUNsb2FraW5nTWl0aWdhdGlvbkVuYWJsZWQpLAogI2VuZGlmCiAgICAgICAgICAg
ICBXVEZNb3ZlKCpmaXJzdFBhcnR5V2Vic2l0ZURhdGFSZW1vdmFsTW9kZSksCiAgICAgICAgICAg
ICBXVEZNb3ZlKCpzdGFuZGFsb25lQXBwbGljYXRpb25Eb21haW4pLApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9TaGFyZWQvV2ViUHJlZmVyZW5jZXMueWFtbCBiL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL1dlYlByZWZlcmVuY2VzLnlhbWwKaW5kZXggODhhZTZhZTJkOWEzOTc0NzYxY2I5NzI0NjQ3
ZmIzNjEzZGNiNTc2Mi4uYWJlNzJkNWZmODE3MjU0Nzk3NjAzZTdkMjJjOGQ3MmYyYjRkMTUzZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUHJlZmVyZW5jZXMueWFtbAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQcmVmZXJlbmNlcy55YW1sCkBAIC0yMDU2LDYgKzIw
NTYsMTMgQEAgSXNTYW1lU2l0ZVN0cmljdEVuZm9yY2VtZW50RW5hYmxlZDoKICAgaHVtYW5SZWFk
YWJsZURlc2NyaXB0aW9uOiAiRW5hYmxlIFNhbWVTaXRlIHN0cmljdCBlbmZvcmNlbWVudCB0byBt
aXRpZ2F0ZSBib3VuY2UgdHJhY2tpbmciCiAgIGNhdGVnb3J5OiBleHBlcmltZW50YWwKIAorSXND
TkFNRUNsb2FraW5nTWl0aWdhdGlvbkVuYWJsZWQ6CisgIHR5cGU6IGJvb2wKKyAgZGVmYXVsdFZh
bHVlOiBmYWxzZQorICBodW1hblJlYWRhYmxlTmFtZTogIkVuYWJsZSBDTkFNRSBjbG9ha2luZyBt
aXRpZ2F0aW9uIgorICBodW1hblJlYWRhYmxlRGVzY3JpcHRpb246ICJFbmFibGUgdGhpcmQtcGFy
dHkgQ05BTUUgY2xvYWtpbmcgbWl0aWdhdGlvbiIKKyAgY2F0ZWdvcnk6IGV4cGVyaW1lbnRhbAor
CiBJc0xvZ2dlZEluQVBJRW5hYmxlZDoKICAgICB0eXBlOiBib29sCiAgICAgZGVmYXVsdFZhbHVl
OiBmYWxzZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tXZWJz
aXRlRGF0YVN0b3JlUmVmLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLV2Vi
c2l0ZURhdGFTdG9yZVJlZi5jcHAKaW5kZXggODAwZTc1NDllYTE3OTZmM2U3ZGIxMzVkNmIxNzA0
ZDBkOGZiOTYzZC4uZjM1NjNlOTQ0MWNlNmIxNGI0MmNmY2U4NWYxOWQ5ZDkyOTAwZDM1MyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tXZWJzaXRlRGF0YVN0b3Jl
UmVmLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1dlYnNpdGVEYXRh
U3RvcmVSZWYuY3BwCkBAIC02MjgsNiArNjI4LDI4IEBAIHZvaWQgV0tXZWJzaXRlRGF0YVN0b3Jl
U2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc1RvU2FtZVNpdGVTdHJpY3RDb29raWVzRm9yVGVzdGlu
CiAjZW5kaWYKIH0KIAordm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVTZXRSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzRmlyc3RQYXJ0eUhvc3RDTkFNRURvbWFpbkZvclRlc3RpbmcoV0tXZWJzaXRlRGF0YVN0
b3JlUmVmIGRhdGFTdG9yZVJlZiwgV0tTdHJpbmdSZWYgZmlyc3RQYXJ0eVVSTFN0cmluZywgV0tT
dHJpbmdSZWYgY25hbWVVUkxTdHJpbmcsIHZvaWQqIGNvbnRleHQsIFdLV2Vic2l0ZURhdGFTdG9y
ZVNldFJlc291cmNlTG9hZFN0YXRpc3RpY3NGaXJzdFBhcnR5SG9zdENOQU1FRG9tYWluRm9yVGVz
dGluZ0Z1bmN0aW9uIGNvbXBsZXRpb25IYW5kbGVyKQoreworI2lmIEVOQUJMRShSRVNPVVJDRV9M
T0FEX1NUQVRJU1RJQ1MpCisgICAgV2ViS2l0Ojp0b0ltcGwoZGF0YVN0b3JlUmVmKS0+c2V0UmVz
b3VyY2VMb2FkU3RhdGlzdGljc0ZpcnN0UGFydHlIb3N0Q05BTUVEb21haW5Gb3JUZXN0aW5nKFVS
TChVUkwoKSwgV2ViS2l0Ojp0b0ltcGwoZmlyc3RQYXJ0eVVSTFN0cmluZyktPnN0cmluZygpKSwg
VVJMKFVSTCgpLCBXZWJLaXQ6OnRvSW1wbChjbmFtZVVSTFN0cmluZyktPnN0cmluZygpKSwgW2Nv
bnRleHQsIGNvbXBsZXRpb25IYW5kbGVyXSB7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGNv
bnRleHQpOworICAgIH0pOworI2Vsc2UKKyAgICBjb21wbGV0aW9uSGFuZGxlcihjb250ZXh0KTsK
KyNlbmRpZgorfQorCit2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZVNldFJlc291cmNlTG9hZFN0YXRp
c3RpY3NUaGlyZFBhcnR5Q05BTUVEb21haW5Gb3JUZXN0aW5nKFdLV2Vic2l0ZURhdGFTdG9yZVJl
ZiBkYXRhU3RvcmVSZWYsIFdLU3RyaW5nUmVmIGNuYW1lVVJMU3RyaW5nLCB2b2lkKiBjb250ZXh0
LCBXS1dlYnNpdGVEYXRhU3RvcmVTZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzVGhpcmRQYXJ0eUNO
QU1FRG9tYWluRm9yVGVzdGluZ0Z1bmN0aW9uIGNvbXBsZXRpb25IYW5kbGVyKQoreworI2lmIEVO
QUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCisgICAgV2ViS2l0Ojp0b0ltcGwoZGF0YVN0
b3JlUmVmKS0+c2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc1RoaXJkUGFydHlDTkFNRURvbWFpbkZv
clRlc3RpbmcoVVJMKFVSTCgpLCBXZWJLaXQ6OnRvSW1wbChjbmFtZVVSTFN0cmluZyktPnN0cmlu
ZygpKSwgW2NvbnRleHQsIGNvbXBsZXRpb25IYW5kbGVyXSB7CisgICAgICAgIGNvbXBsZXRpb25I
YW5kbGVyKGNvbnRleHQpOworICAgIH0pOworI2Vsc2UKKyAgICBjb21wbGV0aW9uSGFuZGxlcihj
b250ZXh0KTsKKyNlbmRpZgorfQorCiB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZVNldEFwcEJvdW5k
RG9tYWluc0ZvclRlc3RpbmcoV0tBcnJheVJlZiBvcmlnaW5VUkxzUmVmLCB2b2lkKiBjb250ZXh0
LCBXS1dlYnNpdGVEYXRhU3RvcmVTZXRBcHBCb3VuZERvbWFpbnNGb3JUZXN0aW5nRnVuY3Rpb24g
Y29tcGxldGlvbkhhbmRsZXIpCiB7CiAjaWYgUExBVEZPUk0oQ09DT0EpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1dlYnNpdGVEYXRhU3RvcmVSZWYuaCBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLV2Vic2l0ZURhdGFTdG9yZVJlZi5oCmluZGV4
IGQ4YjhkMWY0MGI4NjU0MzhhMjg4MTQzODA5N2ViYzBmMGM3ZTFmZGMuLmViODJmYWQ0NDY4ZjZm
MzQ3YjBiZDhkNDYyNGZjNWFkNjVkNzk5OTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9DL1dLV2Vic2l0ZURhdGFTdG9yZVJlZi5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9DL1dLV2Vic2l0ZURhdGFTdG9yZVJlZi5oCkBAIC0xMzAsNiArMTMwLDEw
IEBAIHR5cGVkZWYgdm9pZCAoKldLV2Vic2l0ZURhdGFTdG9yZVNldFJlc291cmNlTG9hZFN0YXRp
c3RpY3NGaXJzdFBhcnR5V2Vic2l0ZURhdGFSCiBXS19FWFBPUlQgdm9pZCBXS1dlYnNpdGVEYXRh
U3RvcmVTZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRmlyc3RQYXJ0eVdlYnNpdGVEYXRhUmVtb3Zh
bE1vZGVGb3JUZXN0aW5nKFdLV2Vic2l0ZURhdGFTdG9yZVJlZiBkYXRhU3RvcmVSZWYsIGJvb2wg
ZW5hYmxlZCwgdm9pZCogY29udGV4dCwgV0tXZWJzaXRlRGF0YVN0b3JlU2V0UmVzb3VyY2VMb2Fk
U3RhdGlzdGljc0ZpcnN0UGFydHlXZWJzaXRlRGF0YVJlbW92YWxNb2RlRm9yVGVzdGluZ0Z1bmN0
aW9uIGNvbXBsZXRpb25IYW5kbGVyKTsKIHR5cGVkZWYgdm9pZCAoKldLV2Vic2l0ZURhdGFTdG9y
ZVNldFJlc291cmNlTG9hZFN0YXRpc3RpY3NUb1NhbWVTaXRlU3RyaWN0Q29va2llc0ZvclRlc3Rp
bmdGdW5jdGlvbikodm9pZCogZnVuY3Rpb25Db250ZXh0KTsKIFdLX0VYUE9SVCB2b2lkIFdLV2Vi
c2l0ZURhdGFTdG9yZVNldFJlc291cmNlTG9hZFN0YXRpc3RpY3NUb1NhbWVTaXRlU3RyaWN0Q29v
a2llc0ZvclRlc3RpbmcoV0tXZWJzaXRlRGF0YVN0b3JlUmVmIGRhdGFTdG9yZVJlZiwgV0tTdHJp
bmdSZWYgaG9zdE5hbWUsIHZvaWQqIGNvbnRleHQsIFdLV2Vic2l0ZURhdGFTdG9yZVNldFJlc291
cmNlTG9hZFN0YXRpc3RpY3NUb1NhbWVTaXRlU3RyaWN0Q29va2llc0ZvclRlc3RpbmdGdW5jdGlv
biBjb21wbGV0aW9uSGFuZGxlcik7Cit0eXBlZGVmIHZvaWQgKCpXS1dlYnNpdGVEYXRhU3RvcmVT
ZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRmlyc3RQYXJ0eUhvc3RDTkFNRURvbWFpbkZvclRlc3Rp
bmdGdW5jdGlvbikodm9pZCogZnVuY3Rpb25Db250ZXh0KTsKK1dLX0VYUE9SVCB2b2lkIFdLV2Vi
c2l0ZURhdGFTdG9yZVNldFJlc291cmNlTG9hZFN0YXRpc3RpY3NGaXJzdFBhcnR5SG9zdENOQU1F
RG9tYWluRm9yVGVzdGluZyhXS1dlYnNpdGVEYXRhU3RvcmVSZWYgZGF0YVN0b3JlUmVmLCBXS1N0
cmluZ1JlZiBmaXJzdFBhcnR5VVJMU3RyaW5nLCBXS1N0cmluZ1JlZiBjbmFtZVVSTFN0cmluZywg
dm9pZCogY29udGV4dCwgV0tXZWJzaXRlRGF0YVN0b3JlU2V0UmVzb3VyY2VMb2FkU3RhdGlzdGlj
c0ZpcnN0UGFydHlIb3N0Q05BTUVEb21haW5Gb3JUZXN0aW5nRnVuY3Rpb24gY29tcGxldGlvbkhh
bmRsZXIpOwordHlwZWRlZiB2b2lkICgqV0tXZWJzaXRlRGF0YVN0b3JlU2V0UmVzb3VyY2VMb2Fk
U3RhdGlzdGljc1RoaXJkUGFydHlDTkFNRURvbWFpbkZvclRlc3RpbmdGdW5jdGlvbikodm9pZCog
ZnVuY3Rpb25Db250ZXh0KTsKK1dLX0VYUE9SVCB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZVNldFJl
c291cmNlTG9hZFN0YXRpc3RpY3NUaGlyZFBhcnR5Q05BTUVEb21haW5Gb3JUZXN0aW5nKFdLV2Vi
c2l0ZURhdGFTdG9yZVJlZiBkYXRhU3RvcmVSZWYsIFdLU3RyaW5nUmVmIGNuYW1lVVJMU3RyaW5n
LCB2b2lkKiBjb250ZXh0LCBXS1dlYnNpdGVEYXRhU3RvcmVTZXRSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzVGhpcmRQYXJ0eUNOQU1FRG9tYWluRm9yVGVzdGluZ0Z1bmN0aW9uIGNvbXBsZXRpb25IYW5k
bGVyKTsKIHR5cGVkZWYgdm9pZCAoKldLV2Vic2l0ZURhdGFTdG9yZVNldEFwcEJvdW5kRG9tYWlu
c0ZvclRlc3RpbmdGdW5jdGlvbikodm9pZCogZnVuY3Rpb25Db250ZXh0KTsKIFdLX0VYUE9SVCB2
b2lkIFdLV2Vic2l0ZURhdGFTdG9yZVNldEFwcEJvdW5kRG9tYWluc0ZvclRlc3RpbmcoV0tBcnJh
eVJlZiBvcmlnaW5VUkxzUmVmLCB2b2lkKiBjb250ZXh0LCBXS1dlYnNpdGVEYXRhU3RvcmVTZXRB
cHBCb3VuZERvbWFpbnNGb3JUZXN0aW5nRnVuY3Rpb24gY29tcGxldGlvbkhhbmRsZXIpOwogdHlw
ZWRlZiB2b2lkICgqV0tXZWJzaXRlRGF0YVN0b3JlU3RhdGlzdGljc1Jlc2V0VG9Db25zaXN0ZW50
U3RhdGVGdW5jdGlvbikodm9pZCogZnVuY3Rpb25Db250ZXh0KTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwCmluZGV4
IDIyN2M1ZGM0YmNkNmZkMmM1NTI5NzMwOWM2ZjNlMmE4ZjhhOGYyN2IuLmQxMjUwMjBhNTk1ZDI5
ODg5NjkzYjQyMzBjMTAxZDgzMjQzYWUzYmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcApAQCAtMTE5NSw2ICsx
MTk1LDE1IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6c2V0VG9TYW1lU2l0ZVN0cmljdENv
b2tpZXNGb3JUZXN0aW5nKFBBTDo6U2Vzc2lvbklEIHNlCiAgICAgc2VuZFdpdGhBc3luY1JlcGx5
KE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzczo6U2V0VG9TYW1lU2l0ZVN0cmljdENvb2tpZXNGb3JU
ZXN0aW5nKHNlc3Npb25JRCwgZG9tYWluKSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwog
fQogCit2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OnNldEZpcnN0UGFydHlIb3N0Q05BTUVEb21h
aW5Gb3JUZXN0aW5nKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgU3RyaW5nJiBmaXJz
dFBhcnR5SG9zdCwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIGNuYW1lRG9tYWluLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgc2VuZFdpdGhB
c3luY1JlcGx5KE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzczo6U2V0Rmlyc3RQYXJ0eUhvc3RDTkFN
RURvbWFpbkZvclRlc3Rpbmcoc2Vzc2lvbklELCBmaXJzdFBhcnR5SG9zdCwgY25hbWVEb21haW4p
LCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7Cit9CisKK3ZvaWQgTmV0d29ya1Byb2Nlc3NQ
cm94eTo6c2V0VGhpcmRQYXJ0eUNOQU1FRG9tYWluRm9yVGVzdGluZyhQQUw6OlNlc3Npb25JRCBz
ZXNzaW9uSUQsIGNvbnN0IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiBkb21haW4sIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBzZW5kV2l0
aEFzeW5jUmVwbHkoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzOjpTZXRUaGlyZFBhcnR5Q05BTUVE
b21haW5Gb3JUZXN0aW5nKHNlc3Npb25JRCwgZG9tYWluKSwgV1RGTW92ZShjb21wbGV0aW9uSGFu
ZGxlcikpOworfQogdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpzZXREb21haW5zV2l0aFVzZXJJ
bnRlcmFjdGlvbihIYXNoU2V0PFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluPiYmIGRvbWFpbnMp
CiB7CiAgICAgcHJvY2Vzc1Bvb2woKS5zZXREb21haW5zV2l0aFVzZXJJbnRlcmFjdGlvbihXVEZN
b3ZlKGRvbWFpbnMpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdv
cmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29y
ay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmgKaW5kZXggODU0NTAyY2JjNmVkYTRhNjAwZmM4MWIxYmMy
ZTAwMWM2NjM4ZGE0Mi4uYTQwOTQwNDE2NTA4NWEyOGY2MjgwNTgyZjFmNDA1MjRiNzk1ZDk0MiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vz
c1Byb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJv
Y2Vzc1Byb3h5LmgKQEAgLTE4NSw2ICsxODUsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRTaG91
bGRFbmJsZVNhbWVTaXRlU3RyaWN0RW5mb3JjZW1lbnRGb3JUZXN0aW5nKFBBTDo6U2Vzc2lvbklE
LCBXZWJDb3JlOjpTYW1lU2l0ZVN0cmljdEVuZm9yY2VtZW50RW5hYmxlZCwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZCgpPiYmKTsKICAgICB2b2lkIHNldEZpcnN0UGFydHlXZWJzaXRlRGF0YVJlbW92
YWxNb2RlRm9yVGVzdGluZyhQQUw6OlNlc3Npb25JRCwgV2ViQ29yZTo6Rmlyc3RQYXJ0eVdlYnNp
dGVEYXRhUmVtb3ZhbE1vZGUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAgdm9p
ZCBzZXRUb1NhbWVTaXRlU3RyaWN0Q29va2llc0ZvclRlc3RpbmcoUEFMOjpTZXNzaW9uSUQsIGNv
bnN0IFJlZ2lzdHJhYmxlRG9tYWluJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKKyAg
ICB2b2lkIHNldEZpcnN0UGFydHlIb3N0Q05BTUVEb21haW5Gb3JUZXN0aW5nKFBBTDo6U2Vzc2lv
bklELCBjb25zdCBTdHJpbmcmIGZpcnN0UGFydHlIb3N0LCBjb25zdCBSZWdpc3RyYWJsZURvbWFp
biYgY25hbWVEb21haW4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CisgICAgdm9pZCBz
ZXRUaGlyZFBhcnR5Q05BTUVEb21haW5Gb3JUZXN0aW5nKFBBTDo6U2Vzc2lvbklELCBjb25zdCBX
ZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7
CiAgICAgdm9pZCBzZXREb21haW5zV2l0aFVzZXJJbnRlcmFjdGlvbihIYXNoU2V0PFdlYkNvcmU6
OlJlZ2lzdHJhYmxlRG9tYWluPiYmKTsKICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJQcm9jZXNzUG9vbC5jcHAKaW5kZXggNjMzZGJmMmExMDQ5MTk1NTkyNjQ5OTdiNzgzMTg3
Y2E1MjFmNGQ4Yy4uNmQ2YjM0ZDdhZmRmNGNlNjQwNTljMDZmZDFjODhkNTBhYzY4NmM3NiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcApAQCAtNjAxLDYgKzYw
MSw3IEBAIE5ldHdvcmtQcm9jZXNzUHJveHkmIFdlYlByb2Nlc3NQb29sOjplbnN1cmVOZXR3b3Jr
UHJvY2VzcyhXZWJzaXRlRGF0YVN0b3JlKiB3aXRoCiAjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURf
U1RBVElTVElDUykKICAgICBXZWJDb3JlOjpUaGlyZFBhcnR5Q29va2llQmxvY2tpbmdNb2RlIHRo
aXJkUGFydHlDb29raWVCbG9ja2luZ01vZGUgPSBXZWJDb3JlOjpUaGlyZFBhcnR5Q29va2llQmxv
Y2tpbmdNb2RlOjpBbGw7CiAgICAgV2ViQ29yZTo6U2FtZVNpdGVTdHJpY3RFbmZvcmNlbWVudEVu
YWJsZWQgc2FtZVNpdGVTdHJpY3RFbmZvcmNlbWVudEVuYWJsZWQgPSBXZWJDb3JlOjpTYW1lU2l0
ZVN0cmljdEVuZm9yY2VtZW50RW5hYmxlZDo6Tm87CisgICAgV2ViQ29yZTo6Q05BTUVDbG9ha2lu
Z01pdGlnYXRpb25FbmFibGVkIGNuYW1lQ2xvYWtpbmdNaXRpZ2F0aW9uRW5hYmxlZCA9IFdlYkNv
cmU6OkNOQU1FQ2xvYWtpbmdNaXRpZ2F0aW9uRW5hYmxlZDo6Tm87CiAjZW5kaWYKICAgICBXZWJD
b3JlOjpGaXJzdFBhcnR5V2Vic2l0ZURhdGFSZW1vdmFsTW9kZSBmaXJzdFBhcnR5V2Vic2l0ZURh
dGFSZW1vdmFsTW9kZSA9IFdlYkNvcmU6OkZpcnN0UGFydHlXZWJzaXRlRGF0YVJlbW92YWxNb2Rl
OjpBbGxCdXRDb29raWVzOwogICAgIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIHN0YW5kYWxv
bmVBcHBsaWNhdGlvbkRvbWFpbjsKQEAgLTYzNCw2ICs2MzUsNyBAQCBOZXR3b3JrUHJvY2Vzc1By
b3h5JiBXZWJQcm9jZXNzUG9vbDo6ZW5zdXJlTmV0d29ya1Byb2Nlc3MoV2Vic2l0ZURhdGFTdG9y
ZSogd2l0aAogI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCiAgICAgICAgICAg
ICB0aGlyZFBhcnR5Q29va2llQmxvY2tpbmdNb2RlID0gbmV0d29ya1Nlc3Npb25QYXJhbWV0ZXJz
LnJlc291cmNlTG9hZFN0YXRpc3RpY3NQYXJhbWV0ZXJzLnRoaXJkUGFydHlDb29raWVCbG9ja2lu
Z01vZGU7CiAgICAgICAgICAgICBzYW1lU2l0ZVN0cmljdEVuZm9yY2VtZW50RW5hYmxlZCA9IG5l
dHdvcmtTZXNzaW9uUGFyYW1ldGVycy5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGFyYW1ldGVycy5z
YW1lU2l0ZVN0cmljdEVuZm9yY2VtZW50RW5hYmxlZDsKKyAgICAgICAgICAgIGNuYW1lQ2xvYWtp
bmdNaXRpZ2F0aW9uRW5hYmxlZCA9IG5ldHdvcmtTZXNzaW9uUGFyYW1ldGVycy5yZXNvdXJjZUxv
YWRTdGF0aXN0aWNzUGFyYW1ldGVycy5jbmFtZUNsb2FraW5nTWl0aWdhdGlvbkVuYWJsZWQ7CiAj
ZW5kaWYKICAgICAgICAgICAgIGZpcnN0UGFydHlXZWJzaXRlRGF0YVJlbW92YWxNb2RlID0gbmV0
d29ya1Nlc3Npb25QYXJhbWV0ZXJzLnJlc291cmNlTG9hZFN0YXRpc3RpY3NQYXJhbWV0ZXJzLmZp
cnN0UGFydHlXZWJzaXRlRGF0YVJlbW92YWxNb2RlOwogICAgICAgICAgICAgc3RhbmRhbG9uZUFw
cGxpY2F0aW9uRG9tYWluID0gbmV0d29ya1Nlc3Npb25QYXJhbWV0ZXJzLnJlc291cmNlTG9hZFN0
YXRpc3RpY3NQYXJhbWV0ZXJzLnN0YW5kYWxvbmVBcHBsaWNhdGlvbkRvbWFpbjsKQEAgLTY2MSw2
ICs2NjMsNyBAQCBOZXR3b3JrUHJvY2Vzc1Byb3h5JiBXZWJQcm9jZXNzUG9vbDo6ZW5zdXJlTmV0
d29ya1Byb2Nlc3MoV2Vic2l0ZURhdGFTdG9yZSogd2l0aAogI2lmIEVOQUJMRShSRVNPVVJDRV9M
T0FEX1NUQVRJU1RJQ1MpCiAgICAgICAgICAgICB0aGlyZFBhcnR5Q29va2llQmxvY2tpbmdNb2Rl
ID0gbmV0d29ya1Nlc3Npb25QYXJhbWV0ZXJzLnJlc291cmNlTG9hZFN0YXRpc3RpY3NQYXJhbWV0
ZXJzLnRoaXJkUGFydHlDb29raWVCbG9ja2luZ01vZGU7CiAgICAgICAgICAgICBzYW1lU2l0ZVN0
cmljdEVuZm9yY2VtZW50RW5hYmxlZCA9IG5ldHdvcmtTZXNzaW9uUGFyYW1ldGVycy5yZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzUGFyYW1ldGVycy5zYW1lU2l0ZVN0cmljdEVuZm9yY2VtZW50RW5hYmxl
ZDsKKyAgICAgICAgICAgIGNuYW1lQ2xvYWtpbmdNaXRpZ2F0aW9uRW5hYmxlZCA9IG5ldHdvcmtT
ZXNzaW9uUGFyYW1ldGVycy5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGFyYW1ldGVycy5jbmFtZUNs
b2FraW5nTWl0aWdhdGlvbkVuYWJsZWQ7CiAjZW5kaWYKICAgICAgICAgICAgIGZpcnN0UGFydHlX
ZWJzaXRlRGF0YVJlbW92YWxNb2RlID0gbmV0d29ya1Nlc3Npb25QYXJhbWV0ZXJzLnJlc291cmNl
TG9hZFN0YXRpc3RpY3NQYXJhbWV0ZXJzLmZpcnN0UGFydHlXZWJzaXRlRGF0YVJlbW92YWxNb2Rl
OwogICAgICAgICAgICAgc3RhbmRhbG9uZUFwcGxpY2F0aW9uRG9tYWluID0gbmV0d29ya1Nlc3Np
b25QYXJhbWV0ZXJzLnJlc291cmNlTG9hZFN0YXRpc3RpY3NQYXJhbWV0ZXJzLnN0YW5kYWxvbmVB
cHBsaWNhdGlvbkRvbWFpbjsKQEAgLTcwNCw2ICs3MDcsNyBAQCBOZXR3b3JrUHJvY2Vzc1Byb3h5
JiBXZWJQcm9jZXNzUG9vbDo6ZW5zdXJlTmV0d29ya1Byb2Nlc3MoV2Vic2l0ZURhdGFTdG9yZSog
d2l0aAogI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCiAgICAgICAgIHRoaXJk
UGFydHlDb29raWVCbG9ja2luZ01vZGUsCiAgICAgICAgIHNhbWVTaXRlU3RyaWN0RW5mb3JjZW1l
bnRFbmFibGVkLAorICAgICAgICBjbmFtZUNsb2FraW5nTWl0aWdhdGlvbkVuYWJsZWQsCiAjZW5k
aWYKICAgICAgICAgZmlyc3RQYXJ0eVdlYnNpdGVEYXRhUmVtb3ZhbE1vZGUsCiAgICAgICAgIHN0
YW5kYWxvbmVBcHBsaWNhdGlvbkRvbWFpbiwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYnNpdGVEYXRhL0NvY29hL1dlYnNpdGVEYXRhU3RvcmVDb2NvYS5tbSBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL0NvY29hL1dlYnNpdGVEYXRhU3RvcmVDb2Nv
YS5tbQppbmRleCBmYjNiMjFmZDkzNjI4YTM0YWUzZDRkZWNmZDRlNzk3Y2Y2NTMxZjY1Li4yNTdm
YjdhMjkwMWFjZWZlNGNkYWQzMGJlMjRhMGI2MDA5MzE2M2M2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9Db2NvYS9XZWJzaXRlRGF0YVN0b3JlQ29jb2Eu
bW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvQ29jb2EvV2Vic2l0
ZURhdGFTdG9yZUNvY29hLm1tCkBAIC05NCw2ICs5NCw3IEBAIHZvaWQgV2Vic2l0ZURhdGFTdG9y
ZTo6cGxhdGZvcm1TZXROZXR3b3JrUGFyYW1ldGVycyhXZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVy
cyYKICAgICBib29sIHNob3VsZExvZ0Nvb2tpZUluZm9ybWF0aW9uID0gZmFsc2U7CiAgICAgYm9v
bCBlbmFibGVSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGVidWdNb2RlID0gZmFsc2U7CiAgICAgYXV0
byBzYW1lU2l0ZVN0cmljdEVuZm9yY2VtZW50RW5hYmxlZCA9IFdlYkNvcmU6OlNhbWVTaXRlU3Ry
aWN0RW5mb3JjZW1lbnRFbmFibGVkOjpObzsKKyAgICBhdXRvIGNuYW1lQ2xvYWtpbmdNaXRpZ2F0
aW9uRW5hYmxlZCA9IFdlYkNvcmU6OkNOQU1FQ2xvYWtpbmdNaXRpZ2F0aW9uRW5hYmxlZDo6Tm87
CiAgICAgYXV0byBmaXJzdFBhcnR5V2Vic2l0ZURhdGFSZW1vdmFsTW9kZSA9IFdlYkNvcmU6OkZp
cnN0UGFydHlXZWJzaXRlRGF0YVJlbW92YWxNb2RlOjpBbGxCdXRDb29raWVzOwogICAgIFdlYkNv
cmU6OlJlZ2lzdHJhYmxlRG9tYWluIHJlc291cmNlTG9hZFN0YXRpc3RpY3NNYW51YWxQcmV2YWxl
bnRSZXNvdXJjZSB7IH07CiAjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKQEAg
LTEwMiw2ICsxMDMsOSBAQCB2b2lkIFdlYnNpdGVEYXRhU3RvcmU6OnBsYXRmb3JtU2V0TmV0d29y
a1BhcmFtZXRlcnMoV2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRlcnMmCiAgICAgaWYgKFtkZWZhdWx0
cyBib29sRm9yS2V5OltOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAiRXhwZXJpbWVudGFsJUAi
LCBXZWJQcmVmZXJlbmNlc0tleTo6aXNTYW1lU2l0ZVN0cmljdEVuZm9yY2VtZW50RW5hYmxlZEtl
eSgpLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCldXSkKICAgICAgICAgc2FtZVNpdGVTdHJpY3RFbmZv
cmNlbWVudEVuYWJsZWQgPSBXZWJDb3JlOjpTYW1lU2l0ZVN0cmljdEVuZm9yY2VtZW50RW5hYmxl
ZDo6WWVzOwogCisgICAgaWYgKFtkZWZhdWx0cyBib29sRm9yS2V5OltOU1N0cmluZyBzdHJpbmdX
aXRoRm9ybWF0OkAiRXhwZXJpbWVudGFsJUAiLCBXZWJQcmVmZXJlbmNlc0tleTo6aXNDTkFNRUNs
b2FraW5nTWl0aWdhdGlvbkVuYWJsZWRLZXkoKS5jcmVhdGVDRlN0cmluZygpLmdldCgpXV0pCisg
ICAgICAgIGNuYW1lQ2xvYWtpbmdNaXRpZ2F0aW9uRW5hYmxlZCA9IFdlYkNvcmU6OkNOQU1FQ2xv
YWtpbmdNaXRpZ2F0aW9uRW5hYmxlZDo6WWVzOworCiAgICAgaWYgKFtkZWZhdWx0cyBib29sRm9y
S2V5OltOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAiRXhwZXJpbWVudGFsJUAiLCBXZWJQcmVm
ZXJlbmNlc0tleTo6aXNGaXJzdFBhcnR5V2Vic2l0ZURhdGFSZW1vdmFsRGlzYWJsZWRLZXkoKS5j
cmVhdGVDRlN0cmluZygpLmdldCgpXV0pCiAgICAgICAgIGZpcnN0UGFydHlXZWJzaXRlRGF0YVJl
bW92YWxNb2RlID0gV2ViQ29yZTo6Rmlyc3RQYXJ0eVdlYnNpdGVEYXRhUmVtb3ZhbE1vZGU6Ok5v
bmU7CiAgICAgZWxzZSB7CkBAIC0xNzgsNiArMTgyLDcgQEAgdm9pZCBXZWJzaXRlRGF0YVN0b3Jl
OjpwbGF0Zm9ybVNldE5ldHdvcmtQYXJhbWV0ZXJzKFdlYnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJz
JgogICAgIHBhcmFtZXRlcnMubmV0d29ya1Nlc3Npb25QYXJhbWV0ZXJzLnJlc291cmNlTG9hZFN0
YXRpc3RpY3NQYXJhbWV0ZXJzLnNob3VsZEluY2x1ZGVMb2NhbGhvc3QgPSBzaG91bGRJbmNsdWRl
TG9jYWxob3N0SW5SZXNvdXJjZUxvYWRTdGF0aXN0aWNzOwogICAgIHBhcmFtZXRlcnMubmV0d29y
a1Nlc3Npb25QYXJhbWV0ZXJzLnJlc291cmNlTG9hZFN0YXRpc3RpY3NQYXJhbWV0ZXJzLmVuYWJs
ZURlYnVnTW9kZSA9IGVuYWJsZVJlc291cmNlTG9hZFN0YXRpc3RpY3NEZWJ1Z01vZGU7CiAgICAg
cGFyYW1ldGVycy5uZXR3b3JrU2Vzc2lvblBhcmFtZXRlcnMucmVzb3VyY2VMb2FkU3RhdGlzdGlj
c1BhcmFtZXRlcnMuc2FtZVNpdGVTdHJpY3RFbmZvcmNlbWVudEVuYWJsZWQgPSBzYW1lU2l0ZVN0
cmljdEVuZm9yY2VtZW50RW5hYmxlZDsKKyAgICBwYXJhbWV0ZXJzLm5ldHdvcmtTZXNzaW9uUGFy
YW1ldGVycy5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGFyYW1ldGVycy5jbmFtZUNsb2FraW5nTWl0
aWdhdGlvbkVuYWJsZWQgPSBjbmFtZUNsb2FraW5nTWl0aWdhdGlvbkVuYWJsZWQ7CiAgICAgcGFy
YW1ldGVycy5uZXR3b3JrU2Vzc2lvblBhcmFtZXRlcnMucmVzb3VyY2VMb2FkU3RhdGlzdGljc1Bh
cmFtZXRlcnMuZmlyc3RQYXJ0eVdlYnNpdGVEYXRhUmVtb3ZhbE1vZGUgPSBmaXJzdFBhcnR5V2Vi
c2l0ZURhdGFSZW1vdmFsTW9kZTsKICAgICBwYXJhbWV0ZXJzLm5ldHdvcmtTZXNzaW9uUGFyYW1l
dGVycy5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGFyYW1ldGVycy5zdGFuZGFsb25lQXBwbGljYXRp
b25Eb21haW4gPSBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiB7IG1fY29uZmlndXJhdGlvbi0+
c3RhbmRhbG9uZUFwcGxpY2F0aW9uVVJMKCkgfTsKICAgICBwYXJhbWV0ZXJzLm5ldHdvcmtTZXNz
aW9uUGFyYW1ldGVycy5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGFyYW1ldGVycy5tYW51YWxQcmV2
YWxlbnRSZXNvdXJjZSA9IFdURk1vdmUocmVzb3VyY2VMb2FkU3RhdGlzdGljc01hbnVhbFByZXZh
bGVudFJlc291cmNlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNp
dGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
c2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5jcHAKaW5kZXggMWRhYWM1NDAyMDU4MWY3YWE3Zjgx
OWI0YjQ1MDJjZTZjNzk4Yjg5Mi4uNDg4ODcyM2UwYmRhNTc4MzhjMjg4NzlkY2NmMjdlMWUzYjQx
NGYyMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vi
c2l0ZURhdGFTdG9yZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURh
dGEvV2Vic2l0ZURhdGFTdG9yZS5jcHAKQEAgLTE5MzYsNiArMTkzNiwzMiBAQCB2b2lkIFdlYnNp
dGVEYXRhU3RvcmU6OnNldFJlc291cmNlTG9hZFN0YXRpc3RpY3NUb1NhbWVTaXRlU3RyaWN0Q29v
a2llc0ZvclRlc3RpbgogICAgICAgICAgICAgbmV0d29ya1Byb2Nlc3MtPnNldFRvU2FtZVNpdGVT
dHJpY3RDb29raWVzRm9yVGVzdGluZyhtX3Nlc3Npb25JRCwgV2ViQ29yZTo6UmVnaXN0cmFibGVE
b21haW4geyB1cmwgfSwgW2NhbGxiYWNrQWdncmVnYXRvcl0geyB9KTsKICAgICB9CiB9CisKK3Zv
aWQgV2Vic2l0ZURhdGFTdG9yZTo6c2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0ZpcnN0UGFydHlI
b3N0Q05BTUVEb21haW5Gb3JUZXN0aW5nKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eVVSTCwgY29uc3Qg
VVJMJiBjbmFtZVVSTCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5k
bGVyKQoreworICAgIGlmIChjbmFtZVVSTC5ob3N0KCkgIT0gInRlc3R3ZWJraXQub3JnIiAmJiBj
bmFtZVVSTC5ob3N0KCkgIT0gIjNyZHBhcnR5dGVzdHdlYmtpdC5vcmciKSB7CisgICAgICAgIGNv
bXBsZXRpb25IYW5kbGVyKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBhdXRvIGNh
bGxiYWNrQWdncmVnYXRvciA9IENhbGxiYWNrQWdncmVnYXRvcjo6Y3JlYXRlKFdURk1vdmUoY29t
cGxldGlvbkhhbmRsZXIpKTsKKworICAgIGZvciAoYXV0byYgcHJvY2Vzc1Bvb2wgOiBwcm9jZXNz
UG9vbHMoKSkKKyAgICAgICAgcHJvY2Vzc1Bvb2wtPmVuc3VyZU5ldHdvcmtQcm9jZXNzKCkuc2V0
Rmlyc3RQYXJ0eUhvc3RDTkFNRURvbWFpbkZvclRlc3RpbmcobV9zZXNzaW9uSUQsIGZpcnN0UGFy
dHlVUkwuaG9zdCgpLnRvU3RyaW5nKCksIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIHsgY25h
bWVVUkwgfSwgW2NhbGxiYWNrQWdncmVnYXRvcl0geyB9KTsKK30KKwordm9pZCBXZWJzaXRlRGF0
YVN0b3JlOjpzZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzVGhpcmRQYXJ0eUNOQU1FRG9tYWluRm9y
VGVzdGluZyhjb25zdCBVUkwmIGNuYW1lVVJMLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYg
Y29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgaWYgKGNuYW1lVVJMLmhvc3QoKSAhPSAidGVzdHdl
YmtpdC5vcmciICYmIGNuYW1lVVJMLmhvc3QoKSAhPSAiM3JkcGFydHl0ZXN0d2Via2l0Lm9yZyIp
IHsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0K
KworICAgIGF1dG8gY2FsbGJhY2tBZ2dyZWdhdG9yID0gQ2FsbGJhY2tBZ2dyZWdhdG9yOjpjcmVh
dGUoV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOworCisgICAgZm9yIChhdXRvJiBwcm9jZXNz
UG9vbCA6IHByb2Nlc3NQb29scygpKQorICAgICAgICBwcm9jZXNzUG9vbC0+ZW5zdXJlTmV0d29y
a1Byb2Nlc3MoKS5zZXRUaGlyZFBhcnR5Q05BTUVEb21haW5Gb3JUZXN0aW5nKG1fc2Vzc2lvbklE
LCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiB7IGNuYW1lVVJMIH0sIFtjYWxsYmFja0FnZ3Jl
Z2F0b3JdIHsgfSk7Cit9CiAjZW5kaWYgLy8gRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElD
UykKIAogdm9pZCBXZWJzaXRlRGF0YVN0b3JlOjpzZXRDYWNoZU1heEFnZUNhcEZvclByZXZhbGVu
dFJlc291cmNlcyhTZWNvbmRzIHNlY29uZHMsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBj
b21wbGV0aW9uSGFuZGxlcikKQEAgLTIyODMsNiArMjMwOSw3IEBAIFdlYnNpdGVEYXRhU3RvcmVQ
YXJhbWV0ZXJzIFdlYnNpdGVEYXRhU3RvcmU6OnBhcmFtZXRlcnMoKQogI2lmIEVOQUJMRShSRVNP
VVJDRV9MT0FEX1NUQVRJU1RJQ1MpCiAgICAgICAgIHRoaXJkUGFydHlDb29raWVCbG9ja2luZ01v
ZGUoKSwKICAgICAgICAgV2ViQ29yZTo6U2FtZVNpdGVTdHJpY3RFbmZvcmNlbWVudEVuYWJsZWQ6
Ok5vLAorICAgICAgICBXZWJDb3JlOjpDTkFNRUNsb2FraW5nTWl0aWdhdGlvbkVuYWJsZWQ6Ok5v
LAogI2VuZGlmCiAgICAgICAgIGZpcnN0UGFydHlXZWJzaXRlRGF0YVJlbW92YWxNb2RlLAogICAg
ICAgICBXVEZNb3ZlKHN0YW5kYWxvbmVBcHBsaWNhdGlvbkRvbWFpbiksCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmggYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmgKaW5k
ZXggMGE3ZjgzZDJiN2RjNjM1MzhjODU3ODgwMGU2MTdhZmZjNWQzZjE5ZC4uNGVjMTNlMTZmZTQ4
MmQyNmEyZWFmYTMxMjNlMzIzM2E3MzdjYjEyYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuaApAQCAtMjAzLDYgKzIw
Myw4IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldFJlc291cmNlTG9hZFN0YXRpc3RpY3NTaG91bGRF
bmJsZVNhbWVTaXRlU3RyaWN0RW5mb3JjZW1lbnRGb3JUZXN0aW5nKGJvb2wgZW5hYmxlZCwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKICAgICB2b2lkIHNldFJlc291cmNlTG9hZFN0YXRp
c3RpY3NGaXJzdFBhcnR5V2Vic2l0ZURhdGFSZW1vdmFsTW9kZUZvclRlc3RpbmcoYm9vbCBlbmFi
bGVkLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogICAgIHZvaWQgc2V0UmVzb3VyY2VM
b2FkU3RhdGlzdGljc1RvU2FtZVNpdGVTdHJpY3RDb29raWVzRm9yVGVzdGluZyhjb25zdCBVUkwm
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOworICAgIHZvaWQgc2V0UmVzb3VyY2VMb2Fk
U3RhdGlzdGljc0ZpcnN0UGFydHlIb3N0Q05BTUVEb21haW5Gb3JUZXN0aW5nKGNvbnN0IFVSTCYg
Zmlyc3RQYXJ0eVVSTCwgY29uc3QgVVJMJiBjbmFtZVVSTCwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZCgpPiYmKTsKKyAgICB2b2lkIHNldFJlc291cmNlTG9hZFN0YXRpc3RpY3NUaGlyZFBhcnR5Q05B
TUVEb21haW5Gb3JUZXN0aW5nKGNvbnN0IFVSTCYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4m
Jik7CiAgICAgV2ViQ29yZTo6VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9kZSB0aGlyZFBhcnR5
Q29va2llQmxvY2tpbmdNb2RlKCkgY29uc3Q7CiAgICAgYm9vbCBpc0l0cFN0YXRlRXhwbGljaXRs
eVNldCgpIGNvbnN0IHsgcmV0dXJuIG1faXNJdHBTdGF0ZUV4cGxpY2l0bHlTZXQ7IH0KICAgICB2
b2lkIHVzZUV4cGxpY2l0SVRQU3RhdGUoKSB7IG1faXNJdHBTdGF0ZUV4cGxpY2l0bHlTZXQgPSB0
cnVlOyB9CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5k
ZXggZjc1NGFkOTRiODI5MzE0NmZmZDY1Yzk0NTBhZmMzMDY2ZTc5NzljMS4uMzVmNzYwYWM1ZmJh
ZTkxNThjYzE1OGU1MWIxOWU4YTJjYjg4YTAyNiAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9n
CisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM1IEBACisyMDIwLTA4LTA3ICBKb2hu
IFdpbGFuZGVyICA8d2lsYW5kZXJAYXBwbGUuY29tPgorCisgICAgICAgIEV4cGVyaW1lbnRhbDog
Q2FwIHRoZSBleHBpcnkgb2YgcGVyc2lzdGVudCBjb29raWVzIHNldCBpbiAzcmQtcGFydHkgQ05B
TUUgY2xvYWtlZCBIVFRQIHJlc3BvbnNlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MjE1MjAxCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS81NzQ1NDYz
Mz4KKworICAgICAgICBSZXZpZXdlZCBieSBCcmVudCBGdWxnaGFtLiBBbHNvIHJldmlld2VkIGFu
ZCBjb21tZW50ZWQgb24gYnkgQ2hyaXMgRHVtZXosIEppdGVuIE1laHRhLCBTYW0gV2VpbmlnLCBh
bmQgQWxleCBDaHJpc3RlbnNlbi4KKworICAgICAgICBUaGlzIHBhdGNoIGFkZHMgdHdvIFRlc3RS
dW5uZXIgZnVuY3Rpb25zIHdoaWNoIGFsbG93cyBmb3IgdGVzdGluZworICAgICAgICB3aXRoIGRh
dGEgdGhhdCB3b3VsZCBvdGhlcndpc2UgY29tZSBmcm9tIEROUyByZXNvbHV0aW9uOgorICAgICAg
ICAtIHN0YXRpc3RpY3NTZXRGaXJzdFBhcnR5SG9zdENOQU1FRG9tYWluKCkKKyAgICAgICAgLSBz
dGF0aXN0aWNzU2V0VGhpcmRQYXJ0eUNOQU1FRG9tYWluKCkKKworICAgICAgICAqIFdlYktpdFRl
c3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQmluZGluZ3MvVGVzdFJ1bm5lci5pZGw6CisgICAgICAg
ICogV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5jcHA6Cisg
ICAgICAgIChXVFI6OkluamVjdGVkQnVuZGxlOjpkaWRSZWNlaXZlTWVzc2FnZVRvUGFnZSk6Cisg
ICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmNwcDoK
KyAgICAgICAgKFdUUjo6VGVzdFJ1bm5lcjo6c3RhdGlzdGljc1NldEZpcnN0UGFydHlIb3N0Q05B
TUVEb21haW4pOgorICAgICAgICAoV1RSOjpUZXN0UnVubmVyOjpzdGF0aXN0aWNzQ2FsbERpZFNl
dEZpcnN0UGFydHlIb3N0Q05BTUVEb21haW5DYWxsYmFjayk6CisgICAgICAgIChXVFI6OlRlc3RS
dW5uZXI6OnN0YXRpc3RpY3NTZXRUaGlyZFBhcnR5Q05BTUVEb21haW4pOgorICAgICAgICAoV1RS
OjpUZXN0UnVubmVyOjpzdGF0aXN0aWNzQ2FsbERpZFNldFRoaXJkUGFydHlDTkFNRURvbWFpbkNh
bGxiYWNrKToKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RS
dW5uZXIuaDoKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcDoK
KyAgICAgICAgKFdUUjo6VGVzdENvbnRyb2xsZXI6OnNldFN0YXRpc3RpY3NGaXJzdFBhcnR5SG9z
dENOQU1FRG9tYWluKToKKyAgICAgICAgKFdUUjo6VGVzdENvbnRyb2xsZXI6OnNldFN0YXRpc3Rp
Y3NUaGlyZFBhcnR5Q05BTUVEb21haW4pOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvVGVz
dENvbnRyb2xsZXIuaDoKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9u
LmNwcDoKKyAgICAgICAgKFdUUjo6VGVzdEludm9jYXRpb246OmRpZFJlY2VpdmVNZXNzYWdlRnJv
bUluamVjdGVkQnVuZGxlKToKKyAgICAgICAgKFdUUjo6VGVzdEludm9jYXRpb246OmRpZFNldEZp
cnN0UGFydHlIb3N0Q05BTUVEb21haW4pOgorICAgICAgICAoV1RSOjpUZXN0SW52b2NhdGlvbjo6
ZGlkU2V0VGhpcmRQYXJ0eUNOQU1FRG9tYWluKToKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVy
L1Rlc3RJbnZvY2F0aW9uLmg6CisKIDIwMjAtMDgtMDcgIEFha2FzaCBKYWluICA8YWFrYXNoX2ph
aW5AYXBwbGUuY29tPgogCiAgICAgICAgIERvIG5vdCBlbWFpbCBib3Qgd2F0Y2hlciB3aGVuIGZp
cnN0IHJ1biBvZiBsYXlvdXQgdGVzdHMgZXhjZWVkcyBmYWlsdXJlIGxpbWl0CmRpZmYgLS1naXQg
YS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0JpbmRpbmdzL1Rlc3RSdW5u
ZXIuaWRsIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9CaW5kaW5ncy9U
ZXN0UnVubmVyLmlkbAppbmRleCA2Yjg5ODBmNDkyODJiNTczZTEzZjA0NWNmZTBkNTZiYzY0NDdh
ZmJhLi5kYzYzYzVkZDhiYjRkODZiZTNmNjI3MWFkYTI4OGY4N2ZkNDIwYTE5IDEwMDY0NAotLS0g
YS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0JpbmRpbmdzL1Rlc3RSdW5u
ZXIuaWRsCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQmluZGlu
Z3MvVGVzdFJ1bm5lci5pZGwKQEAgLTM0Nyw2ICszNDcsOCBAQCBpbnRlcmZhY2UgVGVzdFJ1bm5l
ciB7CiAgICAgdm9pZCBzZXRTdGF0aXN0aWNzU2hvdWxkQmxvY2tUaGlyZFBhcnR5Q29va2llcyhi
b29sZWFuIHZhbHVlLCBvYmplY3QgY2FsbGJhY2ssIG9wdGlvbmFsIGJvb2xlYW4gb25seU9uU2l0
ZXNXaXRob3V0VXNlckludGVyYWN0aW9uKTsKICAgICB2b2lkIHNldFN0YXRpc3RpY3NGaXJzdFBh
cnR5V2Vic2l0ZURhdGFSZW1vdmFsTW9kZShib29sZWFuIHZhbHVlLCBvYmplY3QgY2FsbGJhY2sp
OwogICAgIHZvaWQgc3RhdGlzdGljc1NldFRvU2FtZVNpdGVTdHJpY3RDb29raWVzKERPTVN0cmlu
ZyBob3N0TmFtZSwgb2JqZWN0IGNhbGxiYWNrKTsKKyAgICB2b2lkIHN0YXRpc3RpY3NTZXRGaXJz
dFBhcnR5SG9zdENOQU1FRG9tYWluKERPTVN0cmluZyBmaXJzdFBhcnR5VVJMU3RyaW5nLCBET01T
dHJpbmcgY25hbWVVUkxTdHJpbmcsIG9iamVjdCBjYWxsYmFjayk7CisgICAgdm9pZCBzdGF0aXN0
aWNzU2V0VGhpcmRQYXJ0eUNOQU1FRG9tYWluKERPTVN0cmluZyBjbmFtZVVSTFN0cmluZywgb2Jq
ZWN0IGNhbGxiYWNrKTsKICAgICB2b2lkIGxvYWRlZFRoaXJkUGFydHlEb21haW5zKG9iamVjdCBj
YWxsYmFjayk7CiAKICAgICAvLyBJbmplY3RlZCBidW5kbGUgZm9ybSBjbGllbnQuCmRpZmYgLS1n
aXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxl
LmNwcCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5k
bGUuY3BwCmluZGV4IGUyNTRjYTcyZGJjZjMxMDI3NDFmY2YxN2MxNTI1NTQyNmQwZjVmMGUuLmFm
NzQzYjYzZThmZjBhNDY2ZmQ0YTg5YWUwODUzNmJmYzBkOGFiNTEgMTAwNjQ0Ci0tLSBhL1Rvb2xz
L1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuY3BwCisrKyBi
L1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuY3Bw
CkBAIC0zNTksNiArMzU5LDE2IEBAIHZvaWQgSW5qZWN0ZWRCdW5kbGU6OmRpZFJlY2VpdmVNZXNz
YWdlVG9QYWdlKFdLQnVuZGxlUGFnZVJlZiBwYWdlLCBXS1N0cmluZ1JlZiBtCiAgICAgICAgIHJl
dHVybjsKICAgICB9CiAKKyAgICBpZiAoV0tTdHJpbmdJc0VxdWFsVG9VVEY4Q1N0cmluZyhtZXNz
YWdlTmFtZSwgIkNhbGxEaWRTZXRGaXJzdFBhcnR5SG9zdENOQU1FRG9tYWluIikpIHsKKyAgICAg
ICAgbV90ZXN0UnVubmVyLT5zdGF0aXN0aWNzQ2FsbERpZFNldEZpcnN0UGFydHlIb3N0Q05BTUVE
b21haW5DYWxsYmFjaygpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgaWYgKFdLU3Ry
aW5nSXNFcXVhbFRvVVRGOENTdHJpbmcobWVzc2FnZU5hbWUsICJDYWxsRGlkU2V0VGhpcmRQYXJ0
eUNOQU1FRG9tYWluIikpIHsKKyAgICAgICAgbV90ZXN0UnVubmVyLT5zdGF0aXN0aWNzQ2FsbERp
ZFNldFRoaXJkUGFydHlDTkFNRURvbWFpbkNhbGxiYWNrKCk7CisgICAgICAgIHJldHVybjsKKyAg
ICB9CisKICAgICBpZiAoV0tTdHJpbmdJc0VxdWFsVG9VVEY4Q1N0cmluZyhtZXNzYWdlTmFtZSwg
IkNhbGxEaWRSZXNldFN0YXRpc3RpY3NUb0NvbnNpc3RlbnRTdGF0ZSIpKSB7CiAgICAgICAgIG1f
dGVzdFJ1bm5lci0+c3RhdGlzdGljc0NhbGxEaWRSZXNldFRvQ29uc2lzdGVudFN0YXRlQ2FsbGJh
Y2soKTsKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5l
ci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmNwcCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIv
SW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5jcHAKaW5kZXggZDQzODZlNmY5ZjM1MGVlMDE5ODZi
OTIwMWI5MDNiODA0MDI2NjRhNy4uMjk2NzJmOWUxNTU5Y2EyZGUwYzY4OWE0NmMzZWEyYzU2MDFi
NjBlOCAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9U
ZXN0UnVubmVyLmNwcAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxl
L1Rlc3RSdW5uZXIuY3BwCkBAIC03NTgsNiArNzU4LDggQEAgZW51bSB7CiAgICAgU3RhdGlzdGlj
c0RpZFNldFNob3VsZEJsb2NrVGhpcmRQYXJ0eUNvb2tpZXNDYWxsYmFja0lELAogICAgIFN0YXRp
c3RpY3NEaWRTZXRGaXJzdFBhcnR5V2Vic2l0ZURhdGFSZW1vdmFsTW9kZUNhbGxiYWNrSUQsCiAg
ICAgU3RhdGlzdGljc0RpZFNldFRvU2FtZVNpdGVTdHJpY3RDb29raWVzQ2FsbGJhY2tJRCwKKyAg
ICBTdGF0aXN0aWNzRGlkU2V0Rmlyc3RQYXJ0eUhvc3RDTkFNRURvbWFpbkNhbGxiYWNrSUQsCisg
ICAgU3RhdGlzdGljc0RpZFNldFRoaXJkUGFydHlDTkFNRURvbWFpbkNhbGxiYWNrSUQsCiAgICAg
QWxsU3RvcmFnZUFjY2Vzc0VudHJpZXNDYWxsYmFja0lELAogICAgIExvYWRlZFRoaXJkUGFydHlE
b21haW5zQ2FsbGJhY2tJRCwKICAgICBEaWRSZW1vdmVBbGxTZXNzaW9uQ3JlZGVudGlhbHNDYWxs
YmFja0lELApAQCAtMjM2NCw2ICsyMzY2LDUyIEBAIHZvaWQgVGVzdFJ1bm5lcjo6c3RhdGlzdGlj
c0NhbGxEaWRTZXRUb1NhbWVTaXRlU3RyaWN0Q29va2llc0NhbGxiYWNrKCkKICAgICBjYWxsVGVz
dFJ1bm5lckNhbGxiYWNrKFN0YXRpc3RpY3NEaWRTZXRUb1NhbWVTaXRlU3RyaWN0Q29va2llc0Nh
bGxiYWNrSUQpOwogfQogCisKK3ZvaWQgVGVzdFJ1bm5lcjo6c3RhdGlzdGljc1NldEZpcnN0UGFy
dHlIb3N0Q05BTUVEb21haW4oSlNTdHJpbmdSZWYgZmlyc3RQYXJ0eVVSTFN0cmluZywgSlNTdHJp
bmdSZWYgY25hbWVVUkxTdHJpbmcsIEpTVmFsdWVSZWYgY29tcGxldGlvbkhhbmRsZXIpCit7Cisg
ICAgY2FjaGVUZXN0UnVubmVyQ2FsbGJhY2soU3RhdGlzdGljc0RpZFNldEZpcnN0UGFydHlIb3N0
Q05BTUVEb21haW5DYWxsYmFja0lELCBjb21wbGV0aW9uSGFuZGxlcik7CisKKyAgICBWZWN0b3I8
V0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+PiBrZXlzOworICAgIFZlY3RvcjxXS1JldGFpblB0cjxX
S1R5cGVSZWY+PiB2YWx1ZXM7CisgICAgCisgICAga2V5cy5hcHBlbmQoYWRvcHRXSyhXS1N0cmlu
Z0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygiRmlyc3RQYXJ0eVVSTCIpKSk7CisgICAgdmFsdWVzLmFw
cGVuZChhZG9wdFdLKFdLU3RyaW5nQ3JlYXRlV2l0aEpTU3RyaW5nKGZpcnN0UGFydHlVUkxTdHJp
bmcpKSk7CisgICAgCisgICAga2V5cy5hcHBlbmQoYWRvcHRXSyhXS1N0cmluZ0NyZWF0ZVdpdGhV
VEY4Q1N0cmluZygiQ05BTUUiKSkpOworICAgIHZhbHVlcy5hcHBlbmQoYWRvcHRXSyhXS1N0cmlu
Z0NyZWF0ZVdpdGhKU1N0cmluZyhjbmFtZVVSTFN0cmluZykpKTsKKyAgICAKKyAgICBWZWN0b3I8
V0tTdHJpbmdSZWY+IHJhd0tleXMoa2V5cy5zaXplKCkpOworICAgIFZlY3RvcjxXS1R5cGVSZWY+
IHJhd1ZhbHVlcyh2YWx1ZXMuc2l6ZSgpKTsKKyAgICAKKyAgICBmb3IgKHNpemVfdCBpID0gMDsg
aSA8IGtleXMuc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgcmF3S2V5c1tpXSA9IGtleXNbaV0uZ2V0
KCk7CisgICAgICAgIHJhd1ZhbHVlc1tpXSA9IHZhbHVlc1tpXS5nZXQoKTsKKyAgICB9CisKKyAg
ICBhdXRvIG1lc3NhZ2VOYW1lID0gYWRvcHRXSyhXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmlu
ZygiU3RhdGlzdGljc1NldEZpcnN0UGFydHlIb3N0Q05BTUVEb21haW4iKSk7CisgICAgYXV0byBt
ZXNzYWdlQm9keSA9IGFkb3B0V0soV0tEaWN0aW9uYXJ5Q3JlYXRlKHJhd0tleXMuZGF0YSgpLCBy
YXdWYWx1ZXMuZGF0YSgpLCByYXdLZXlzLnNpemUoKSkpOworICAgIFdLQnVuZGxlUG9zdE1lc3Nh
Z2UoSW5qZWN0ZWRCdW5kbGU6OnNpbmdsZXRvbigpLmJ1bmRsZSgpLCBtZXNzYWdlTmFtZS5nZXQo
KSwgbWVzc2FnZUJvZHkuZ2V0KCkpOworfQorCit2b2lkIFRlc3RSdW5uZXI6OnN0YXRpc3RpY3ND
YWxsRGlkU2V0Rmlyc3RQYXJ0eUhvc3RDTkFNRURvbWFpbkNhbGxiYWNrKCkKK3sKKyAgICBjYWxs
VGVzdFJ1bm5lckNhbGxiYWNrKFN0YXRpc3RpY3NEaWRTZXRGaXJzdFBhcnR5SG9zdENOQU1FRG9t
YWluQ2FsbGJhY2tJRCk7Cit9CisKK3ZvaWQgVGVzdFJ1bm5lcjo6c3RhdGlzdGljc1NldFRoaXJk
UGFydHlDTkFNRURvbWFpbihKU1N0cmluZ1JlZiBjbmFtZVVSTFN0cmluZywgSlNWYWx1ZVJlZiBj
b21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBjYWNoZVRlc3RSdW5uZXJDYWxsYmFjayhTdGF0aXN0
aWNzRGlkU2V0VGhpcmRQYXJ0eUNOQU1FRG9tYWluQ2FsbGJhY2tJRCwgY29tcGxldGlvbkhhbmRs
ZXIpOworCisgICAgYXV0byBtZXNzYWdlTmFtZSA9IGFkb3B0V0soV0tTdHJpbmdDcmVhdGVXaXRo
VVRGOENTdHJpbmcoIlN0YXRpc3RpY3NTZXRUaGlyZFBhcnR5Q05BTUVEb21haW4iKSk7CisgICAg
YXV0byBtZXNzYWdlQm9keSA9IGFkb3B0V0soV0tTdHJpbmdDcmVhdGVXaXRoSlNTdHJpbmcoY25h
bWVVUkxTdHJpbmcpKTsKKyAgICBXS0J1bmRsZVBvc3RNZXNzYWdlKEluamVjdGVkQnVuZGxlOjpz
aW5nbGV0b24oKS5idW5kbGUoKSwgbWVzc2FnZU5hbWUuZ2V0KCksIG1lc3NhZ2VCb2R5LmdldCgp
KTsKK30KKwordm9pZCBUZXN0UnVubmVyOjpzdGF0aXN0aWNzQ2FsbERpZFNldFRoaXJkUGFydHlD
TkFNRURvbWFpbkNhbGxiYWNrKCkKK3sKKyAgICBjYWxsVGVzdFJ1bm5lckNhbGxiYWNrKFN0YXRp
c3RpY3NEaWRTZXRUaGlyZFBhcnR5Q05BTUVEb21haW5DYWxsYmFja0lEKTsKK30KKwogdm9pZCBU
ZXN0UnVubmVyOjpzdGF0aXN0aWNzUmVzZXRUb0NvbnNpc3RlbnRTdGF0ZShKU1ZhbHVlUmVmIGNv
bXBsZXRpb25IYW5kbGVyKQogewogICAgIGNhY2hlVGVzdFJ1bm5lckNhbGxiYWNrKFN0YXRpc3Rp
Y3NEaWRSZXNldFRvQ29uc2lzdGVudFN0YXRlQ2FsbGJhY2tJRCwgY29tcGxldGlvbkhhbmRsZXIp
OwpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0
UnVubmVyLmggYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5u
ZXIuaAppbmRleCAxZmUzNzlhNTdhYjgyZmZlNDMxOWRhNDgwMGYwNDgzOTMwMDNmNzUxLi5hYjY1
ZDQwZDQyMjY4MDkzNDA5MmNmM2Y4MmQ4MWM1ZTlhYjIwZDAzIDEwMDY0NAotLS0gYS9Ub29scy9X
ZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuaAorKysgYi9Ub29scy9X
ZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuaApAQCAtNDUzLDYgKzQ1
MywxMCBAQCBwdWJsaWM6CiAgICAgdm9pZCBzdGF0aXN0aWNzQ2FsbERpZFNldEZpcnN0UGFydHlX
ZWJzaXRlRGF0YVJlbW92YWxNb2RlQ2FsbGJhY2soKTsKICAgICB2b2lkIHN0YXRpc3RpY3NTZXRU
b1NhbWVTaXRlU3RyaWN0Q29va2llcyhKU1N0cmluZ1JlZiBob3N0TmFtZSwgSlNWYWx1ZVJlZiBj
YWxsYmFjayk7CiAgICAgdm9pZCBzdGF0aXN0aWNzQ2FsbERpZFNldFRvU2FtZVNpdGVTdHJpY3RD
b29raWVzQ2FsbGJhY2soKTsKKyAgICB2b2lkIHN0YXRpc3RpY3NTZXRGaXJzdFBhcnR5SG9zdENO
QU1FRG9tYWluKEpTU3RyaW5nUmVmIGZpcnN0UGFydHlVUkxTdHJpbmcsIEpTU3RyaW5nUmVmIGNu
YW1lVVJMU3RyaW5nLCBKU1ZhbHVlUmVmIGNvbXBsZXRpb25IYW5kbGVyKTsKKyAgICB2b2lkIHN0
YXRpc3RpY3NDYWxsRGlkU2V0Rmlyc3RQYXJ0eUhvc3RDTkFNRURvbWFpbkNhbGxiYWNrKCk7Cisg
ICAgdm9pZCBzdGF0aXN0aWNzU2V0VGhpcmRQYXJ0eUNOQU1FRG9tYWluKEpTU3RyaW5nUmVmIGNu
YW1lVVJMU3RyaW5nLCBKU1ZhbHVlUmVmIGNvbXBsZXRpb25IYW5kbGVyKTsKKyAgICB2b2lkIHN0
YXRpc3RpY3NDYWxsRGlkU2V0VGhpcmRQYXJ0eUNOQU1FRG9tYWluQ2FsbGJhY2soKTsKICAgICB2
b2lkIHN0YXRpc3RpY3NSZXNldFRvQ29uc2lzdGVudFN0YXRlKEpTVmFsdWVSZWYgY29tcGxldGlv
bkhhbmRsZXIpOwogICAgIHZvaWQgc3RhdGlzdGljc0NhbGxEaWRSZXNldFRvQ29uc2lzdGVudFN0
YXRlQ2FsbGJhY2soKTsKICAgICB2b2lkIGxvYWRlZFRoaXJkUGFydHlEb21haW5zKEpTVmFsdWVS
ZWYgY2FsbGJhY2spOwpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29u
dHJvbGxlci5jcHAgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcApp
bmRleCBmYWZiOGNmNmI5NTJlM2MwNDg0NjNiYTU3ZjVjNGNmNDgxMWRmZWFkLi5hNDNmYTgxMzRh
N2FiNzZjM2EzYjdmODIwOGRjOTI2NjcyNzQ3NDYxIDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRU
ZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVy
L1Rlc3RDb250cm9sbGVyLmNwcApAQCAtMzg2Miw2ICszODYyLDIyIEBAIHZvaWQgVGVzdENvbnRy
b2xsZXI6OnNldFN0YXRpc3RpY3NUb1NhbWVTaXRlU3RyaWN0Q29va2llcyhXS1N0cmluZ1JlZiBo
b3N0TmFtZSkKICAgICBtX2N1cnJlbnRJbnZvY2F0aW9uLT5kaWRTZXRUb1NhbWVTaXRlU3RyaWN0
Q29va2llcygpOwogfQogCit2b2lkIFRlc3RDb250cm9sbGVyOjpzZXRTdGF0aXN0aWNzRmlyc3RQ
YXJ0eUhvc3RDTkFNRURvbWFpbihXS1N0cmluZ1JlZiBmaXJzdFBhcnR5VVJMU3RyaW5nLCBXS1N0
cmluZ1JlZiBjbmFtZVVSTFN0cmluZykKK3sKKyAgICBSZXNvdXJjZVN0YXRpc3RpY3NDYWxsYmFj
a0NvbnRleHQgY29udGV4dCgqdGhpcyk7CisgICAgV0tXZWJzaXRlRGF0YVN0b3JlU2V0UmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc0ZpcnN0UGFydHlIb3N0Q05BTUVEb21haW5Gb3JUZXN0aW5nKHdlYnNp
dGVEYXRhU3RvcmUoKSwgZmlyc3RQYXJ0eVVSTFN0cmluZywgY25hbWVVUkxTdHJpbmcsICZjb250
ZXh0LCByZXNvdXJjZVN0YXRpc3RpY3NWb2lkUmVzdWx0Q2FsbGJhY2spOworICAgIHJ1blVudGls
KGNvbnRleHQuZG9uZSwgbm9UaW1lb3V0KTsKKyAgICBtX2N1cnJlbnRJbnZvY2F0aW9uLT5kaWRT
ZXRGaXJzdFBhcnR5SG9zdENOQU1FRG9tYWluKCk7Cit9CisKK3ZvaWQgVGVzdENvbnRyb2xsZXI6
OnNldFN0YXRpc3RpY3NUaGlyZFBhcnR5Q05BTUVEb21haW4oV0tTdHJpbmdSZWYgY25hbWVVUkxT
dHJpbmcpCit7CisgICAgUmVzb3VyY2VTdGF0aXN0aWNzQ2FsbGJhY2tDb250ZXh0IGNvbnRleHQo
KnRoaXMpOworICAgIFdLV2Vic2l0ZURhdGFTdG9yZVNldFJlc291cmNlTG9hZFN0YXRpc3RpY3NU
aGlyZFBhcnR5Q05BTUVEb21haW5Gb3JUZXN0aW5nKHdlYnNpdGVEYXRhU3RvcmUoKSwgY25hbWVV
UkxTdHJpbmcsICZjb250ZXh0LCByZXNvdXJjZVN0YXRpc3RpY3NWb2lkUmVzdWx0Q2FsbGJhY2sp
OworICAgIHJ1blVudGlsKGNvbnRleHQuZG9uZSwgbm9UaW1lb3V0KTsKKyAgICBtX2N1cnJlbnRJ
bnZvY2F0aW9uLT5kaWRTZXRUaGlyZFBhcnR5Q05BTUVEb21haW4oKTsKK30KKwogc3RydWN0IEFw
cEJvdW5kRG9tYWluc0NhbGxiYWNrQ29udGV4dCB7CiAgICAgZXhwbGljaXQgQXBwQm91bmREb21h
aW5zQ2FsbGJhY2tDb250ZXh0KFRlc3RDb250cm9sbGVyJiBjb250cm9sbGVyKQogICAgICAgICA6
IHRlc3RDb250cm9sbGVyKGNvbnRyb2xsZXIpCmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0
UnVubmVyL1Rlc3RDb250cm9sbGVyLmggYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250
cm9sbGVyLmgKaW5kZXggYTEzMDg0OWIzZDNhZWJhMmUyMWU2YTBhMzRkNDYyOTJlMTlkNGE1MC4u
NzI0Y2QwMDRjMWI0MmU4MTVmZDUyMTU1Mzk5ZmFlMDIxMDZjY2Y4MCAxMDA2NDQKLS0tIGEvVG9v
bHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5oCisrKyBiL1Rvb2xzL1dlYktpdFRl
c3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuaApAQCAtMjY2LDYgKzI2Niw4IEBAIHB1YmxpYzoKICAg
ICB2b2lkIHNldFN0YXRpc3RpY3NTaG91bGRCbG9ja1RoaXJkUGFydHlDb29raWVzKGJvb2wgdmFs
dWUsIGJvb2wgb25seU9uU2l0ZXNXaXRob3V0VXNlckludGVyYWN0aW9uKTsKICAgICB2b2lkIHNl
dFN0YXRpc3RpY3NGaXJzdFBhcnR5V2Vic2l0ZURhdGFSZW1vdmFsTW9kZShib29sIHZhbHVlKTsK
ICAgICB2b2lkIHNldFN0YXRpc3RpY3NUb1NhbWVTaXRlU3RyaWN0Q29va2llcyhXS1N0cmluZ1Jl
ZiBob3N0TmFtZSk7CisgICAgdm9pZCBzZXRTdGF0aXN0aWNzRmlyc3RQYXJ0eUhvc3RDTkFNRURv
bWFpbihXS1N0cmluZ1JlZiBmaXJzdFBhcnR5VVJMU3RyaW5nLCBXS1N0cmluZ1JlZiBjbmFtZVVS
TFN0cmluZyk7CisgICAgdm9pZCBzZXRTdGF0aXN0aWNzVGhpcmRQYXJ0eUNOQU1FRG9tYWluKFdL
U3RyaW5nUmVmIGNuYW1lVVJMU3RyaW5nKTsKICAgICB2b2lkIHNldEFwcEJvdW5kRG9tYWlucyhX
S0FycmF5UmVmIG9yaWdpblVSTHMpOwogICAgIHZvaWQgc3RhdGlzdGljc1Jlc2V0VG9Db25zaXN0
ZW50U3RhdGUoKTsKIApkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52
b2NhdGlvbi5jcHAgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmNwcApp
bmRleCBiNzNiMDk0NDFmMTc0YjU0MWVjZDY2MzdhZWYwZjkxOTdkOGRlZjhmLi45MjlmODVhZjVm
ODIyZjkyZDYwZGFhYTQ0ZjA0Y2QxMzMzNzFlZjUzIDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRU
ZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmNwcAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVy
L1Rlc3RJbnZvY2F0aW9uLmNwcApAQCAtOTU3LDYgKzk1NywyNyBAQCB2b2lkIFRlc3RJbnZvY2F0
aW9uOjpkaWRSZWNlaXZlTWVzc2FnZUZyb21JbmplY3RlZEJ1bmRsZShXS1N0cmluZ1JlZiBtZXNz
YWdlTmFtZQogICAgICAgICByZXR1cm47CiAgICAgfQogCisgICAgaWYgKFdLU3RyaW5nSXNFcXVh
bFRvVVRGOENTdHJpbmcobWVzc2FnZU5hbWUsICJTdGF0aXN0aWNzU2V0Rmlyc3RQYXJ0eUhvc3RD
TkFNRURvbWFpbiIpKSB7CisgICAgICAgIEFTU0VSVChXS0dldFR5cGVJRChtZXNzYWdlQm9keSkg
PT0gV0tEaWN0aW9uYXJ5R2V0VHlwZUlEKCkpOworICAgICAgICAKKyAgICAgICAgV0tEaWN0aW9u
YXJ5UmVmIG1lc3NhZ2VCb2R5RGljdGlvbmFyeSA9IHN0YXRpY19jYXN0PFdLRGljdGlvbmFyeVJl
Zj4obWVzc2FnZUJvZHkpOworICAgICAgICBXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4gZmlyc3RQ
YXJ0eVVSTFN0cmluZ0tleSA9IGFkb3B0V0soV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmco
IkZpcnN0UGFydHlVUkwiKSk7CisgICAgICAgIFdLUmV0YWluUHRyPFdLU3RyaW5nUmVmPiBjbmFt
ZVVSTFN0cmluZ0tleSA9IGFkb3B0V0soV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoIkNO
QU1FIikpOworICAgICAgICAKKyAgICAgICAgV0tTdHJpbmdSZWYgZmlyc3RQYXJ0eVVSTFN0cmlu
ZyA9IHN0YXRpY19jYXN0PFdLU3RyaW5nUmVmPihXS0RpY3Rpb25hcnlHZXRJdGVtRm9yS2V5KG1l
c3NhZ2VCb2R5RGljdGlvbmFyeSwgZmlyc3RQYXJ0eVVSTFN0cmluZ0tleS5nZXQoKSkpOworICAg
ICAgICBXS1N0cmluZ1JlZiBjbmFtZVVSTFN0cmluZyA9IHN0YXRpY19jYXN0PFdLU3RyaW5nUmVm
PihXS0RpY3Rpb25hcnlHZXRJdGVtRm9yS2V5KG1lc3NhZ2VCb2R5RGljdGlvbmFyeSwgY25hbWVV
UkxTdHJpbmdLZXkuZ2V0KCkpKTsKKyAgICAgICAgCisgICAgICAgIFRlc3RDb250cm9sbGVyOjpz
aW5nbGV0b24oKS5zZXRTdGF0aXN0aWNzRmlyc3RQYXJ0eUhvc3RDTkFNRURvbWFpbihmaXJzdFBh
cnR5VVJMU3RyaW5nLCBjbmFtZVVSTFN0cmluZyk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisK
KyAgICBpZiAoV0tTdHJpbmdJc0VxdWFsVG9VVEY4Q1N0cmluZyhtZXNzYWdlTmFtZSwgIlN0YXRp
c3RpY3NTZXRUaGlyZFBhcnR5Q05BTUVEb21haW4iKSkgeworICAgICAgICBBU1NFUlQoV0tHZXRU
eXBlSUQobWVzc2FnZUJvZHkpID09IFdLU3RyaW5nR2V0VHlwZUlEKCkpOworICAgICAgICBXS1N0
cmluZ1JlZiBjbmFtZVVSTFN0cmluZyA9IHN0YXRpY19jYXN0PFdLU3RyaW5nUmVmPihtZXNzYWdl
Qm9keSk7CisgICAgICAgIFRlc3RDb250cm9sbGVyOjpzaW5nbGV0b24oKS5zZXRTdGF0aXN0aWNz
VGhpcmRQYXJ0eUNOQU1FRG9tYWluKGNuYW1lVVJMU3RyaW5nKTsKKyAgICAgICAgcmV0dXJuOwor
ICAgIH0KKwogICAgIGlmIChXS1N0cmluZ0lzRXF1YWxUb1VURjhDU3RyaW5nKG1lc3NhZ2VOYW1l
LCAiU3RhdGlzdGljc1Jlc2V0VG9Db25zaXN0ZW50U3RhdGUiKSkgewogICAgICAgICBpZiAobV9z
aG91bGREdW1wUmVzb3VyY2VMb2FkU3RhdGlzdGljcykKICAgICAgICAgICAgIG1fc2F2ZWRSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzID0gVGVzdENvbnRyb2xsZXI6OnNpbmdsZXRvbigpLmR1bXBSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzKCk7CkBAIC0xOTQ2LDYgKzE5NjcsMTggQEAgdm9pZCBUZXN0SW52
b2NhdGlvbjo6ZGlkU2V0VG9TYW1lU2l0ZVN0cmljdENvb2tpZXMoKQogICAgIFdLUGFnZVBvc3RN
ZXNzYWdlVG9JbmplY3RlZEJ1bmRsZShUZXN0Q29udHJvbGxlcjo6c2luZ2xldG9uKCkubWFpbldl
YlZpZXcoKS0+cGFnZSgpLCBtZXNzYWdlTmFtZS5nZXQoKSwgbnVsbHB0cik7CiB9CiAKK3ZvaWQg
VGVzdEludm9jYXRpb246OmRpZFNldEZpcnN0UGFydHlIb3N0Q05BTUVEb21haW4oKQoreworICAg
IFdLUmV0YWluUHRyPFdLU3RyaW5nUmVmPiBtZXNzYWdlTmFtZSA9IGFkb3B0V0soV0tTdHJpbmdD
cmVhdGVXaXRoVVRGOENTdHJpbmcoIkNhbGxEaWRTZXRGaXJzdFBhcnR5SG9zdENOQU1FRG9tYWlu
IikpOworICAgIFdLUGFnZVBvc3RNZXNzYWdlVG9JbmplY3RlZEJ1bmRsZShUZXN0Q29udHJvbGxl
cjo6c2luZ2xldG9uKCkubWFpbldlYlZpZXcoKS0+cGFnZSgpLCBtZXNzYWdlTmFtZS5nZXQoKSwg
bnVsbHB0cik7Cit9CisKK3ZvaWQgVGVzdEludm9jYXRpb246OmRpZFNldFRoaXJkUGFydHlDTkFN
RURvbWFpbigpCit7CisgICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+IG1lc3NhZ2VOYW1lID0g
YWRvcHRXSyhXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygiQ2FsbERpZFNldFRoaXJkUGFy
dHlDTkFNRURvbWFpbiIpKTsKKyAgICBXS1BhZ2VQb3N0TWVzc2FnZVRvSW5qZWN0ZWRCdW5kbGUo
VGVzdENvbnRyb2xsZXI6OnNpbmdsZXRvbigpLm1haW5XZWJWaWV3KCktPnBhZ2UoKSwgbWVzc2Fn
ZU5hbWUuZ2V0KCksIG51bGxwdHIpOworfQorCiB2b2lkIFRlc3RJbnZvY2F0aW9uOjpkaWRSZXNl
dFN0YXRpc3RpY3NUb0NvbnNpc3RlbnRTdGF0ZSgpCiB7CiAgICAgV0tSZXRhaW5QdHI8V0tTdHJp
bmdSZWY+IG1lc3NhZ2VOYW1lID0gYWRvcHRXSyhXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmlu
ZygiQ2FsbERpZFJlc2V0U3RhdGlzdGljc1RvQ29uc2lzdGVudFN0YXRlIikpOwpkaWZmIC0tZ2l0
IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlvbi5oIGIvVG9vbHMvV2ViS2l0
VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlvbi5oCmluZGV4IDYyMzFiMGMyMDQ0NDVhZDYwYzk1ZDNl
ODE3ZmIzMGY0NzZmOGUxYTUuLmU0N2M1YzA0OWZiMDE2MThiZjBiODkxZTlmMmI5NTg4NmEwNGJm
YjQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdEludm9jYXRpb24uaAor
KysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmgKQEAgLTc3LDYgKzc3
LDggQEAgcHVibGljOgogICAgIHZvaWQgZGlkU2V0U2hvdWxkQmxvY2tUaGlyZFBhcnR5Q29va2ll
cygpOwogICAgIHZvaWQgZGlkU2V0Rmlyc3RQYXJ0eVdlYnNpdGVEYXRhUmVtb3ZhbE1vZGUoKTsK
ICAgICB2b2lkIGRpZFNldFRvU2FtZVNpdGVTdHJpY3RDb29raWVzKCk7CisgICAgdm9pZCBkaWRT
ZXRGaXJzdFBhcnR5SG9zdENOQU1FRG9tYWluKCk7CisgICAgdm9pZCBkaWRTZXRUaGlyZFBhcnR5
Q05BTUVEb21haW4oKTsKICAgICB2b2lkIGRpZFJlc2V0U3RhdGlzdGljc1RvQ29uc2lzdGVudFN0
YXRlKCk7CiAgICAgdm9pZCBkaWRTZXRCbG9ja0Nvb2tpZXNGb3JIb3N0KCk7CiAgICAgdm9pZCBk
aWRTZXRTdGF0aXN0aWNzRGVidWdNb2RlKCk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFu
Z2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggNTI1NTE4ZjY0YzU2MzAyYWZhYmNl
YWViNTEzZTU2YWNiNWE2NGNiYy4uYmU2MTRhOWI4NTFlOWNmYmY2MDBmMmQ5ZDE0N2NkM2Y3OGU4
YWU4OCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3Rz
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDM0IEBACisyMDIwLTA4LTA3ICBKb2huIFdpbGFuZGVyICA8
d2lsYW5kZXJAYXBwbGUuY29tPgorCisgICAgICAgIEV4cGVyaW1lbnRhbDogQ2FwIHRoZSBleHBp
cnkgb2YgcGVyc2lzdGVudCBjb29raWVzIHNldCBpbiAzcmQtcGFydHkgQ05BTUUgY2xvYWtlZCBI
VFRQIHJlc3BvbnNlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MjE1MjAxCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS81NzQ1NDYzMz4KKworICAgICAg
ICBSZXZpZXdlZCBieSBCcmVudCBGdWxnaGFtLiBBbHNvIHJldmlld2VkIGFuZCBjb21tZW50ZWQg
b24gYnkgQ2hyaXMgRHVtZXosIEppdGVuIE1laHRhLCBTYW0gV2VpbmlnLCBhbmQgQWxleCBDaHJp
c3RlbnNlbi4KKworICAgICAgICAqIGh0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9j
bmFtZS1jbG9ha2luZy10b3AtY25hbWUtc3ViLTFwLWNuYW1lLWV4cGVjdGVkLnR4dDogQWRkZWQu
CisgICAgICAgICogaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL2NuYW1lLWNsb2Fr
aW5nLXRvcC1jbmFtZS1zdWItMXAtY25hbWUuaHRtbDogQWRkZWQuCisgICAgICAgICogaHR0cC90
ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL2NuYW1lLWNsb2FraW5nLXRvcC1jbmFtZS1zdWIt
M3AtY25hbWUtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL3Jlc291
cmNlTG9hZFN0YXRpc3RpY3MvY25hbWUtY2xvYWtpbmctdG9wLWNuYW1lLXN1Yi0zcC1jbmFtZS5o
dG1sOiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3Mv
Y25hbWUtY2xvYWtpbmctdG9wLWNuYW1lLXN1Yi1tYXRjaGluZy1jbmFtZS1leHBlY3RlZC50eHQ6
IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9jbmFt
ZS1jbG9ha2luZy10b3AtY25hbWUtc3ViLW1hdGNoaW5nLWNuYW1lLmh0bWw6IEFkZGVkLgorICAg
ICAgICAqIGh0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9jbmFtZS1jbG9ha2luZy10
b3AtY25hbWUtc3ViLW5vLWNuYW1lLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogaHR0
cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL2NuYW1lLWNsb2FraW5nLXRvcC1jbmFtZS1z
dWItbm8tY25hbWUuaHRtbDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9yZXNvdXJjZUxv
YWRTdGF0aXN0aWNzL2NuYW1lLWNsb2FraW5nLXRvcC1uby1jbmFtZS1zdWItMXAtY25hbWUtZXhw
ZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRp
c3RpY3MvY25hbWUtY2xvYWtpbmctdG9wLW5vLWNuYW1lLXN1Yi0xcC1jbmFtZS5odG1sOiBBZGRl
ZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvY25hbWUtY2xv
YWtpbmctdG9wLW5vLWNuYW1lLXN1Yi0zcC1jbmFtZS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAg
ICAgICAqIGh0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9jbmFtZS1jbG9ha2luZy10
b3Atbm8tY25hbWUtc3ViLTNwLWNuYW1lLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVz
dHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9jbmFtZS1jbG9ha2luZy10b3Atbm8tY25hbWUtc3Vi
LW5vLWNuYW1lLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9yZXNv
dXJjZUxvYWRTdGF0aXN0aWNzL2NuYW1lLWNsb2FraW5nLXRvcC1uby1jbmFtZS1zdWItbm8tY25h
bWUuaHRtbDogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vaW9zLTEzL1Rlc3RFeHBlY3RhdGlv
bnM6CisgICAgICAgICAgICBOZXcgdGVzdHMgbWFya2VkIGFzIFsgU2tpcCBdLgorICAgICAgICAq
IHBsYXRmb3JtL2lvcy13azIvVGVzdEV4cGVjdGF0aW9uczoKKyAgICAgICAgICAgIE5ldyB0ZXN0
cyBtYXJrZWQgYXMgWyBQYXNzIF0gaW4gZ2VuZXJhbC4KKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMt
d2syL1Rlc3RFeHBlY3RhdGlvbnM6CisgICAgICAgICAgICBOZXcgdGVzdHMgbWFya2VkIGFzIFsg
UGFzcyBdIGZvciBCaWdTdXIrLgorICAgICAgICAqIHBsYXRmb3JtL3drMi9UZXN0RXhwZWN0YXRp
b25zOgorICAgICAgICAgICAgTmV3IHRlc3RzIG1hcmtlZCBhcyBbIFNraXAgXSBpbiBnZW5lcmFs
LgorCiAyMDIwLTA4LTA3ICBBbnR0aSBLb2l2aXN0byAgPGFudHRpQGFwcGxlLmNvbT4KIAogICAg
ICAgICBSRUdSRVNTSU9OIChyMjYwMjc2KTogaW5zdHJ1Y3R1cmUuY29tIGN1c3RvbSBQREYgdmll
d2VyIHN0b3BzIHNjcm9sbGluZyAvIGxvYWRpbmcgYWZ0ZXIgc3dpdGNoaW5nIHRvIGFub3RoZXIg
dGFiIHRoZW4gc3dpdGNoaW5nIGJhY2sKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVz
dHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9jbmFtZS1jbG9ha2luZy10b3AtY25hbWUtc3ViLTFw
LWNuYW1lLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvcmVzb3VyY2VMb2Fk
U3RhdGlzdGljcy9jbmFtZS1jbG9ha2luZy10b3AtY25hbWUtc3ViLTFwLWNuYW1lLWV4cGVjdGVk
LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi45NDhmYjVjY2Q2ZTU3MWIzM2M1NzJmNTZkMmY3NjZjZTA2NjNiYTRj
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRT
dGF0aXN0aWNzL2NuYW1lLWNsb2FraW5nLXRvcC1jbmFtZS1zdWItMXAtY25hbWUtZXhwZWN0ZWQu
dHh0CkBAIC0wLDAgKzEsMTAgQEAKK1Rlc3QgZm9yIENOQU1FIENsb2FraW5nOiBObyBjb29raWUg
ZXhwaXJ5IGNhcHBpbmcgaWYgdGhlIHRvcCBmcmFtZSBoYXMgYW4gYWx0ZXJuYXRlIENOQU1FIGFu
ZCB0aGUgc3ViIHJlc291cmNlIGhhcyBhbiBhbHRlcm5hdGUgQ05BTUUgdGhhdCBtYXRjaGVzIHRo
ZSBmaXJzdCBwYXJ0eSAobm90IGl0cyBDTkFNRSkuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNl
ZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRF
Ii4KKworCitQQVNTIENvb2tpZSBuYW1lZCBjbmFtZVRlc3RDb29raWUgZXhwaXJlcyBpbiBtb3Jl
IHRoYW4gNjA1NDAwIHNlY29uZHMuCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisK
K1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9yZXNv
dXJjZUxvYWRTdGF0aXN0aWNzL2NuYW1lLWNsb2FraW5nLXRvcC1jbmFtZS1zdWItMXAtY25hbWUu
aHRtbCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9jbmFt
ZS1jbG9ha2luZy10b3AtY25hbWUtc3ViLTFwLWNuYW1lLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOGM4MzA0
YjBiODljNTVmMmY3MGNkODAxNjg1NDAzZDI5ZGJhMmExNwotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2h0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9jbmFtZS1jbG9ha2lu
Zy10b3AtY25hbWUtc3ViLTFwLWNuYW1lLmh0bWwKQEAgLTAsMCArMSw2OCBAQAorPCFET0NUWVBF
IGh0bWw+Cis8aHRtbCBsYW5nPSJlbiI+Cis8aGVhZD4KKyAgICA8bWV0YSBjaGFyc2V0PSJVVEYt
OCI+CisgICAgPHNjcmlwdCBzcmM9Ii9qcy10ZXN0LXJlc291cmNlcy9qcy10ZXN0LmpzIj48L3Nj
cmlwdD4KKyAgICA8c2NyaXB0IHNyYz0iL2Nvb2tpZXMvcmVzb3VyY2VzL2Nvb2tpZS11dGlsaXRp
ZXMuanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvdXRpbC5qcyI+PC9z
Y3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keSBvbmxvYWQ9InJ1blRlc3QoKSI+Cis8c2NyaXB0PgorICAg
IGRlc2NyaXB0aW9uKCJUZXN0IGZvciBDTkFNRSBDbG9ha2luZzogTm8gY29va2llIGV4cGlyeSBj
YXBwaW5nIGlmIHRoZSB0b3AgZnJhbWUgaGFzIGFuIGFsdGVybmF0ZSBDTkFNRSBhbmQgdGhlIHN1
YiByZXNvdXJjZSBoYXMgYW4gYWx0ZXJuYXRlIENOQU1FIHRoYXQgbWF0Y2hlcyB0aGUgZmlyc3Qg
cGFydHkgKG5vdCBpdHMgQ05BTUUpLiIpOworICAgIGpzVGVzdElzQXN5bmMgPSB0cnVlOworCisg
ICAgZnVuY3Rpb24gZmluaXNoVGVzdCgpIHsKKyAgICAgICAgcmVzZXRDb29raWVzRm9yQ3VycmVu
dE9yaWdpbigpOworICAgICAgICBzZXRFbmFibGVGZWF0dXJlKGZhbHNlLCBmdW5jdGlvbigpIHsK
KyAgICAgICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAgICAgICB9KTsKKyAgICB9CisKKyAgICBm
dW5jdGlvbiBjaGVja0Nvb2tpZUV4cGlyeShjb29raWVEYXRhLCBzZWNvbmRzLCBzaG91bGRCZUxl
c3NUaGFuKSB7CisgICAgICAgIGxldCBub3cgPSBuZXcgRGF0ZSgpOworICAgICAgICBsZXQgZXhw
aXJ5RGF0ZUluTWlsbGlzZWNvbmRzID0gbm93LmdldFRpbWUoKSArIChzZWNvbmRzICogMTAwMCk7
CisKKyAgICAgICAgaWYgKChjb29raWVEYXRhWyJleHBpcmVzIl0gPCBleHBpcnlEYXRlSW5NaWxs
aXNlY29uZHMpID09PSBzaG91bGRCZUxlc3NUaGFuKQorICAgICAgICAgICAgdGVzdFBhc3NlZCgi
Q29va2llIG5hbWVkICIgKyBjb29raWVEYXRhWyJuYW1lIl0gKyAiIGV4cGlyZXMgaW4gIiArIChz
aG91bGRCZUxlc3NUaGFuID8gImxlc3MiIDogIm1vcmUiKSArICIgdGhhbiAiICsgc2Vjb25kcyAr
ICIgc2Vjb25kcy4iKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgdGVzdEZhaWxlZCgiQ29v
a2llIG5hbWVkICIgKyBjb29raWVEYXRhWyJuYW1lIl0gKyAiIGV4cGlyZXMgaW4gIiArIChzaG91
bGRCZUxlc3NUaGFuID8gIm1vcmUiIDogImxlc3MiKSArICIgdGhhbiAiICsgc2Vjb25kcyArICIg
c2Vjb25kcy4iKTsKKyAgICB9CisKKyAgICBjb25zdCBvbmVXZWVrSW5TZWNvbmRzID0gNyAqIDI0
ICogNjAgKiA2MDsKKyAgICBjb25zdCBvdmVyT25lV2Vla0luU2Vjb25kcyA9IG9uZVdlZWtJblNl
Y29uZHMgKyA2MDA7CisgICAgY29uc3QgY29va2llTmFtZSA9ICJjbmFtZVRlc3RDb29raWUiOwor
ICAgIGNvbnN0IHN1YlBhdGhUb1NldEZpcnN0UGFydHlDb29raWUgPSAicmVzb3VyY2VzL3NldC1j
b29raWUucGhwP25hbWU9IiArIGNvb2tpZU5hbWUgKyAiJnZhbHVlPXZhbHVlJmR1bW15PSIgKyBN
YXRoLnJhbmRvbSgpOworCisgICAgZnVuY3Rpb24gc2V0QW5kQ2hlY2tDb29raWUoKSB7CisgICAg
ICAgIGZldGNoKHN1YlBhdGhUb1NldEZpcnN0UGFydHlDb29raWUpLnRoZW4oZnVuY3Rpb24oKSB7
CisgICAgICAgICAgICBpZiAoaW50ZXJuYWxzKSB7CisgICAgICAgICAgICAgICAgbGV0IGNvb2tp
ZXMgPSBpbnRlcm5hbHMuZ2V0Q29va2llcygpOworICAgICAgICAgICAgICAgIGlmICghY29va2ll
cy5sZW5ndGgpCisgICAgICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoIk5vIGNvb2tpZXMgZm91
bmQuIik7CisgICAgICAgICAgICAgICAgZm9yIChsZXQgY29va2llIG9mIGNvb2tpZXMpIHsKKyAg
ICAgICAgICAgICAgICAgICAgaWYgKGNvb2tpZS5uYW1lID09PSBjb29raWVOYW1lKSB7CisgICAg
ICAgICAgICAgICAgICAgICAgICBjaGVja0Nvb2tpZUV4cGlyeShjb29raWUsIG92ZXJPbmVXZWVr
SW5TZWNvbmRzLCBmYWxzZSk7CisgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAg
ICAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJVbmtub3duIGNvb2tpZSAiICsgY29va2llLm5h
bWUgKyAiIGZvdW5kLiIpOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAg
fQorICAgICAgICAgICAgICAgIGZpbmlzaFRlc3QoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAg
fSk7CisgICAgfQorCisgICAgY29uc3QgZmlyc3RQYXJ0eSA9ICJodHRwOi8vMTI3LjAuMC4xOjgw
MDAiOworICAgIGNvbnN0IGZpcnN0UGFydHlDTkFNRUZvclRlc3RpbmcgPSAiaHR0cDovL3Rlc3R3
ZWJraXQub3JnIjsKKyAgICBjb25zdCB0aGlyZFBhcnR5Q05BTUVGb3JUZXN0aW5nID0gZmlyc3RQ
YXJ0eTsKKworICAgIGZ1bmN0aW9uIHJ1blRlc3QoKSB7CisgICAgICAgIHNldEVuYWJsZUZlYXR1
cmUodHJ1ZSwgZnVuY3Rpb24oKSB7CisgICAgICAgICAgICB0ZXN0UnVubmVyLnN0YXRpc3RpY3NT
ZXRGaXJzdFBhcnR5SG9zdENOQU1FRG9tYWluKGZpcnN0UGFydHksIGZpcnN0UGFydHlDTkFNRUZv
clRlc3RpbmcsIGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgICAgIHRlc3RSdW5uZXIuc3RhdGlz
dGljc1NldFRoaXJkUGFydHlDTkFNRURvbWFpbih0aGlyZFBhcnR5Q05BTUVGb3JUZXN0aW5nLCBm
dW5jdGlvbigpIHsKKyAgICAgICAgICAgICAgICAgICAgc2V0QW5kQ2hlY2tDb29raWUoKTsKKyAg
ICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgIH0pOworICAgICAgICB9KTsKKyAgICB9Cis8
L3NjcmlwdD4KKzwvYm9keT4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvcmVz
b3VyY2VMb2FkU3RhdGlzdGljcy9jbmFtZS1jbG9ha2luZy10b3AtY25hbWUtc3ViLTNwLWNuYW1l
LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlz
dGljcy9jbmFtZS1jbG9ha2luZy10b3AtY25hbWUtc3ViLTNwLWNuYW1lLWV4cGVjdGVkLnR4dApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi43MWY5MzMwM2U4NWFjMDZkMjk5YTljMDVjZjY2NTZjMDFlYjk3NTc4Ci0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0
aWNzL2NuYW1lLWNsb2FraW5nLXRvcC1jbmFtZS1zdWItM3AtY25hbWUtZXhwZWN0ZWQudHh0CkBA
IC0wLDAgKzEsMTAgQEAKK1Rlc3QgZm9yIENOQU1FIENsb2FraW5nOiBDb29raWUgZXhwaXJ5IGNh
cHBpbmcgaWYgdGhlIHRvcCBmcmFtZSBoYXMgYW4gYWx0ZXJuYXRlIENOQU1FIGFuZCB0aGUgc3Vi
IHJlc291cmNlIGhhcyBhIGRpZmZlcmVudCBhbHRlcm5hdGUgQ05BTUUuCisKK09uIHN1Y2Nlc3Ms
IHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJU
RVNUIENPTVBMRVRFIi4KKworCitQQVNTIENvb2tpZSBuYW1lZCBjbmFtZVRlc3RDb29raWUgZXhw
aXJlcyBpbiBsZXNzIHRoYW4gNjA1NDAwIHNlY29uZHMuCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNl
ZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0
cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL2NuYW1lLWNsb2FraW5nLXRvcC1jbmFtZS1z
dWItM3AtY25hbWUuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3Rh
dGlzdGljcy9jbmFtZS1jbG9ha2luZy10b3AtY25hbWUtc3ViLTNwLWNuYW1lLmh0bWwKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uYjZhYzc4MWZmODFjMjFmYWI5OTk1OThlMWY2NWQ5NWFmN2ZkZGY5OAotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9j
bmFtZS1jbG9ha2luZy10b3AtY25hbWUtc3ViLTNwLWNuYW1lLmh0bWwKQEAgLTAsMCArMSw3NCBA
QAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbCBsYW5nPSJlbiI+Cis8aGVhZD4KKyAgICA8bWV0YSBj
aGFyc2V0PSJVVEYtOCI+CisgICAgPHNjcmlwdCBzcmM9Ii9qcy10ZXN0LXJlc291cmNlcy9qcy10
ZXN0LmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNyYz0iL2Nvb2tpZXMvcmVzb3VyY2VzL2Nv
b2tpZS11dGlsaXRpZXMuanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPSJyZXNvdXJjZXMv
dXRpbC5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keSBvbmxvYWQ9InJ1blRlc3QoKSI+Cis8
c2NyaXB0PgorICAgIGRlc2NyaXB0aW9uKCJUZXN0IGZvciBDTkFNRSBDbG9ha2luZzogQ29va2ll
IGV4cGlyeSBjYXBwaW5nIGlmIHRoZSB0b3AgZnJhbWUgaGFzIGFuIGFsdGVybmF0ZSBDTkFNRSBh
bmQgdGhlIHN1YiByZXNvdXJjZSBoYXMgYSBkaWZmZXJlbnQgYWx0ZXJuYXRlIENOQU1FLiIpOwor
ICAgIGpzVGVzdElzQXN5bmMgPSB0cnVlOworCisgICAgZnVuY3Rpb24gZmluaXNoVGVzdCgpIHsK
KyAgICAgICAgcmVzZXRDb29raWVzRm9yQ3VycmVudE9yaWdpbigpOworICAgICAgICBzZXRFbmFi
bGVGZWF0dXJlKGZhbHNlLCBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgIGZpbmlzaEpTVGVzdCgp
OworICAgICAgICB9KTsKKyAgICB9CisKKyAgICBjb25zdCBvbmVXZWVrSW5TZWNvbmRzID0gNyAq
IDI0ICogNjAgKiA2MDsKKyAgICBjb25zdCBvdmVyT25lV2Vla0luU2Vjb25kcyA9IG9uZVdlZWtJ
blNlY29uZHMgKyA2MDA7CisgICAgY29uc3QgdW5kZXJPbmVXZWVrSW5TZWNvbmRzID0gb25lV2Vl
a0luU2Vjb25kcyAtIDYwMDsKKworICAgIGZ1bmN0aW9uIGNoZWNrQ29va2llRXhwaXJ5KGNvb2tp
ZURhdGEsIHNlY29uZHMsIHNob3VsZEJlTGVzc1RoYW4pIHsKKyAgICAgICAgbGV0IG5vdyA9IG5l
dyBEYXRlKCk7CisgICAgICAgIGxldCBleHBpcnlEYXRlSW5NaWxsaXNlY29uZHMgPSBub3cuZ2V0
VGltZSgpICsgKHNlY29uZHMgKiAxMDAwKTsKKworICAgICAgICBpZiAoKGNvb2tpZURhdGFbImV4
cGlyZXMiXSA8IGV4cGlyeURhdGVJbk1pbGxpc2Vjb25kcykgPT09IHNob3VsZEJlTGVzc1RoYW4p
IHsKKyAgICAgICAgICAgIGxldCB1bmRlck9uZVdlZWtFeHBpcnlEYXRlSW5NaWxsaXNlY29uZHMg
PSBub3cuZ2V0VGltZSgpICsgKHVuZGVyT25lV2Vla0luU2Vjb25kcyAqIDEwMDApOworICAgICAg
ICAgICAgaWYgKGNvb2tpZURhdGFbImV4cGlyZXMiXSA8IHVuZGVyT25lV2Vla0V4cGlyeURhdGVJ
bk1pbGxpc2Vjb25kcykKKyAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJDb29raWUgbmFtZWQg
IiArIGNvb2tpZURhdGFbIm5hbWUiXSArICIgd2FzIGNhcHBlZCB0b28gbG93LiIpOworICAgICAg
ICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoIkNvb2tpZSBuYW1lZCAiICsg
Y29va2llRGF0YVsibmFtZSJdICsgIiBleHBpcmVzIGluICIgKyAoc2hvdWxkQmVMZXNzVGhhbiA/
ICJsZXNzIiA6ICJtb3JlIikgKyAiIHRoYW4gIiArIHNlY29uZHMgKyAiIHNlY29uZHMuIik7Cisg
ICAgICAgIH0gZWxzZQorICAgICAgICAgICAgdGVzdEZhaWxlZCgiQ29va2llIG5hbWVkICIgKyBj
b29raWVEYXRhWyJuYW1lIl0gKyAiIGV4cGlyZXMgaW4gIiArIChzaG91bGRCZUxlc3NUaGFuID8g
Im1vcmUiIDogImxlc3MiKSArICIgdGhhbiAiICsgc2Vjb25kcyArICIgc2Vjb25kcy4iKTsKKyAg
ICB9CisKKyAgICBjb25zdCBjb29raWVOYW1lID0gImNuYW1lVGVzdENvb2tpZSI7CisgICAgY29u
c3Qgc3ViUGF0aFRvU2V0Rmlyc3RQYXJ0eUNvb2tpZSA9ICJyZXNvdXJjZXMvc2V0LWNvb2tpZS5w
aHA/bmFtZT0iICsgY29va2llTmFtZSArICImdmFsdWU9dmFsdWUmZHVtbXk9IiArIE1hdGgucmFu
ZG9tKCk7CisKKyAgICBmdW5jdGlvbiBzZXRBbmRDaGVja0Nvb2tpZSgpIHsKKyAgICAgICAgZmV0
Y2goc3ViUGF0aFRvU2V0Rmlyc3RQYXJ0eUNvb2tpZSkudGhlbihmdW5jdGlvbigpIHsKKyAgICAg
ICAgICAgIGlmIChpbnRlcm5hbHMpIHsKKyAgICAgICAgICAgICAgICBsZXQgY29va2llcyA9IGlu
dGVybmFscy5nZXRDb29raWVzKCk7CisgICAgICAgICAgICAgICAgaWYgKCFjb29raWVzLmxlbmd0
aCkKKyAgICAgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiTm8gY29va2llcyBmb3VuZC4iKTsK
KyAgICAgICAgICAgICAgICBmb3IgKGxldCBjb29raWUgb2YgY29va2llcykgeworICAgICAgICAg
ICAgICAgICAgICBpZiAoY29va2llLm5hbWUgPT09IGNvb2tpZU5hbWUpIHsKKyAgICAgICAgICAg
ICAgICAgICAgICAgIGNoZWNrQ29va2llRXhwaXJ5KGNvb2tpZSwgb3Zlck9uZVdlZWtJblNlY29u
ZHMsIHRydWUpOworICAgICAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAg
ICAgICAgICAgdGVzdEZhaWxlZCgiVW5rbm93biBjb29raWUgIiArIGNvb2tpZS5uYW1lICsgIiBm
b3VuZC4iKTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgICAgICBmaW5pc2hUZXN0KCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0pOworICAg
IH0KKworICAgIGNvbnN0IGZpcnN0UGFydHkgPSAiaHR0cDovLzEyNy4wLjAuMTo4MDAwIjsKKyAg
ICBjb25zdCBmaXJzdFBhcnR5Q05BTUVGb3JUZXN0aW5nID0gImh0dHA6Ly90ZXN0d2Via2l0Lm9y
ZyI7CisgICAgY29uc3QgdGhpcmRQYXJ0eUNOQU1FRm9yVGVzdGluZyA9ICJodHRwOi8vM3JkcGFy
dHl0ZXN0d2Via2l0Lm9yZyI7CisKKyAgICBmdW5jdGlvbiBydW5UZXN0KCkgeworICAgICAgICBz
ZXRFbmFibGVGZWF0dXJlKHRydWUsIGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgdGVzdFJ1bm5l
ci5zdGF0aXN0aWNzU2V0Rmlyc3RQYXJ0eUhvc3RDTkFNRURvbWFpbihmaXJzdFBhcnR5LCBmaXJz
dFBhcnR5Q05BTUVGb3JUZXN0aW5nLCBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgICAgICB0ZXN0
UnVubmVyLnN0YXRpc3RpY3NTZXRUaGlyZFBhcnR5Q05BTUVEb21haW4odGhpcmRQYXJ0eUNOQU1F
Rm9yVGVzdGluZywgZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAgICAgICAgIHNldEFuZENoZWNr
Q29va2llKCk7CisgICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAg
fSk7CisgICAgfQorPC9zY3JpcHQ+Cis8L2JvZHk+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9o
dHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvY25hbWUtY2xvYWtpbmctdG9wLWNuYW1l
LXN1Yi1tYXRjaGluZy1jbmFtZS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvY25hbWUtY2xvYWtpbmctdG9wLWNuYW1lLXN1Yi1tYXRj
aGluZy1jbmFtZS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNTgxOGFlMTM0NWFlYzJjMDIzZmI3
NjdkNmVjNWFiMWRhZWRkZmRlYQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAv
dGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9jbmFtZS1jbG9ha2luZy10b3AtY25hbWUtc3Vi
LW1hdGNoaW5nLWNuYW1lLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDEwIEBACitUZXN0IGZvciBD
TkFNRSBDbG9ha2luZzogTm8gY29va2llIGV4cGlyeSBjYXBwaW5nIGlmIHRoZSB0b3AgZnJhbWUg
aGFzIGFuIGFsdGVybmF0ZSBDTkFNRSBhbmQgdGhlIHN1YiByZXNvdXJjZSBoYXMgbWF0Y2hpbmcg
YWx0ZXJuYXRlIENOQU1FLgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2Yg
IlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworUEFTUyBD
b29raWUgbmFtZWQgY25hbWVUZXN0Q29va2llIGV4cGlyZXMgaW4gbW9yZSB0aGFuIDYwNTQwMCBz
ZWNvbmRzLgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRF
CisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlz
dGljcy9jbmFtZS1jbG9ha2luZy10b3AtY25hbWUtc3ViLW1hdGNoaW5nLWNuYW1lLmh0bWwgYi9M
YXlvdXRUZXN0cy9odHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvY25hbWUtY2xvYWtp
bmctdG9wLWNuYW1lLXN1Yi1tYXRjaGluZy1jbmFtZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmY5ZmExZjAz
YmVmZWQ0NjZmZTY1NWViYzc2MzNlYTNiZGQ1ZGFkMjkKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvY25hbWUtY2xvYWtpbmct
dG9wLWNuYW1lLXN1Yi1tYXRjaGluZy1jbmFtZS5odG1sCkBAIC0wLDAgKzEsNjggQEAKKzwhRE9D
VFlQRSBodG1sPgorPGh0bWwgbGFuZz0iZW4iPgorPGhlYWQ+CisgICAgPG1ldGEgY2hhcnNldD0i
VVRGLTgiPgorICAgIDxzY3JpcHQgc3JjPSIvanMtdGVzdC1yZXNvdXJjZXMvanMtdGVzdC5qcyI+
PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9Ii9jb29raWVzL3Jlc291cmNlcy9jb29raWUtdXRp
bGl0aWVzLmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3V0aWwuanMi
Pjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHkgb25sb2FkPSJydW5UZXN0KCkiPgorPHNjcmlwdD4K
KyAgICBkZXNjcmlwdGlvbigiVGVzdCBmb3IgQ05BTUUgQ2xvYWtpbmc6IE5vIGNvb2tpZSBleHBp
cnkgY2FwcGluZyBpZiB0aGUgdG9wIGZyYW1lIGhhcyBhbiBhbHRlcm5hdGUgQ05BTUUgYW5kIHRo
ZSBzdWIgcmVzb3VyY2UgaGFzIG1hdGNoaW5nIGFsdGVybmF0ZSBDTkFNRS4iKTsKKyAgICBqc1Rl
c3RJc0FzeW5jID0gdHJ1ZTsKKworICAgIGZ1bmN0aW9uIGZpbmlzaFRlc3QoKSB7CisgICAgICAg
IHJlc2V0Q29va2llc0ZvckN1cnJlbnRPcmlnaW4oKTsKKyAgICAgICAgc2V0RW5hYmxlRmVhdHVy
ZShmYWxzZSwgZnVuY3Rpb24oKSB7CisgICAgICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAgICAg
ICAgfSk7CisgICAgfQorCisgICAgZnVuY3Rpb24gY2hlY2tDb29raWVFeHBpcnkoY29va2llRGF0
YSwgc2Vjb25kcywgc2hvdWxkQmVMZXNzVGhhbikgeworICAgICAgICBsZXQgbm93ID0gbmV3IERh
dGUoKTsKKyAgICAgICAgbGV0IGV4cGlyeURhdGVJbk1pbGxpc2Vjb25kcyA9IG5vdy5nZXRUaW1l
KCkgKyAoc2Vjb25kcyAqIDEwMDApOworCisgICAgICAgIGlmICgoY29va2llRGF0YVsiZXhwaXJl
cyJdIDwgZXhwaXJ5RGF0ZUluTWlsbGlzZWNvbmRzKSA9PT0gc2hvdWxkQmVMZXNzVGhhbikKKyAg
ICAgICAgICAgIHRlc3RQYXNzZWQoIkNvb2tpZSBuYW1lZCAiICsgY29va2llRGF0YVsibmFtZSJd
ICsgIiBleHBpcmVzIGluICIgKyAoc2hvdWxkQmVMZXNzVGhhbiA/ICJsZXNzIiA6ICJtb3JlIikg
KyAiIHRoYW4gIiArIHNlY29uZHMgKyAiIHNlY29uZHMuIik7CisgICAgICAgIGVsc2UKKyAgICAg
ICAgICAgIHRlc3RGYWlsZWQoIkNvb2tpZSBuYW1lZCAiICsgY29va2llRGF0YVsibmFtZSJdICsg
IiBleHBpcmVzIGluICIgKyAoc2hvdWxkQmVMZXNzVGhhbiA/ICJtb3JlIiA6ICJsZXNzIikgKyAi
IHRoYW4gIiArIHNlY29uZHMgKyAiIHNlY29uZHMuIik7CisgICAgfQorCisgICAgY29uc3Qgb25l
V2Vla0luU2Vjb25kcyA9IDcgKiAyNCAqIDYwICogNjA7CisgICAgY29uc3Qgb3Zlck9uZVdlZWtJ
blNlY29uZHMgPSBvbmVXZWVrSW5TZWNvbmRzICsgNjAwOworICAgIGNvbnN0IGNvb2tpZU5hbWUg
PSAiY25hbWVUZXN0Q29va2llIjsKKyAgICBjb25zdCBzdWJQYXRoVG9TZXRGaXJzdFBhcnR5Q29v
a2llID0gInJlc291cmNlcy9zZXQtY29va2llLnBocD9uYW1lPSIgKyBjb29raWVOYW1lICsgIiZ2
YWx1ZT12YWx1ZSZkdW1teT0iICsgTWF0aC5yYW5kb20oKTsKKworICAgIGZ1bmN0aW9uIHNldEFu
ZENoZWNrQ29va2llKCkgeworICAgICAgICBmZXRjaChzdWJQYXRoVG9TZXRGaXJzdFBhcnR5Q29v
a2llKS50aGVuKGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgaWYgKGludGVybmFscykgeworICAg
ICAgICAgICAgICAgIGxldCBjb29raWVzID0gaW50ZXJuYWxzLmdldENvb2tpZXMoKTsKKyAgICAg
ICAgICAgICAgICBpZiAoIWNvb2tpZXMubGVuZ3RoKQorICAgICAgICAgICAgICAgICAgICB0ZXN0
RmFpbGVkKCJObyBjb29raWVzIGZvdW5kLiIpOworICAgICAgICAgICAgICAgIGZvciAobGV0IGNv
b2tpZSBvZiBjb29raWVzKSB7CisgICAgICAgICAgICAgICAgICAgIGlmIChjb29raWUubmFtZSA9
PT0gY29va2llTmFtZSkgeworICAgICAgICAgICAgICAgICAgICAgICAgY2hlY2tDb29raWVFeHBp
cnkoY29va2llLCBvdmVyT25lV2Vla0luU2Vjb25kcywgZmFsc2UpOworICAgICAgICAgICAgICAg
ICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiVW5rbm93
biBjb29raWUgIiArIGNvb2tpZS5uYW1lICsgIiBmb3VuZC4iKTsKKyAgICAgICAgICAgICAgICAg
ICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBmaW5pc2hUZXN0KCk7Cisg
ICAgICAgICAgICB9CisgICAgICAgIH0pOworICAgIH0KKworICAgIGNvbnN0IGZpcnN0UGFydHkg
PSAiaHR0cDovLzEyNy4wLjAuMTo4MDAwIjsKKyAgICBjb25zdCBmaXJzdFBhcnR5Q05BTUVGb3JU
ZXN0aW5nID0gImh0dHA6Ly90ZXN0d2Via2l0Lm9yZyI7CisgICAgY29uc3QgdGhpcmRQYXJ0eUNO
QU1FRm9yVGVzdGluZyA9IGZpcnN0UGFydHlDTkFNRUZvclRlc3Rpbmc7CisKKyAgICBmdW5jdGlv
biBydW5UZXN0KCkgeworICAgICAgICBzZXRFbmFibGVGZWF0dXJlKHRydWUsIGZ1bmN0aW9uKCkg
eworICAgICAgICAgICAgdGVzdFJ1bm5lci5zdGF0aXN0aWNzU2V0Rmlyc3RQYXJ0eUhvc3RDTkFN
RURvbWFpbihmaXJzdFBhcnR5LCBmaXJzdFBhcnR5Q05BTUVGb3JUZXN0aW5nLCBmdW5jdGlvbigp
IHsKKyAgICAgICAgICAgICAgICB0ZXN0UnVubmVyLnN0YXRpc3RpY3NTZXRUaGlyZFBhcnR5Q05B
TUVEb21haW4odGhpcmRQYXJ0eUNOQU1FRm9yVGVzdGluZywgZnVuY3Rpb24oKSB7CisgICAgICAg
ICAgICAgICAgICAgIHNldEFuZENoZWNrQ29va2llKCk7CisgICAgICAgICAgICAgICAgfSk7Cisg
ICAgICAgICAgICB9KTsKKyAgICAgICAgfSk7CisgICAgfQorPC9zY3JpcHQ+Cis8L2JvZHk+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3Mv
Y25hbWUtY2xvYWtpbmctdG9wLWNuYW1lLXN1Yi1uby1jbmFtZS1leHBlY3RlZC50eHQgYi9MYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvY25hbWUtY2xvYWtpbmct
dG9wLWNuYW1lLXN1Yi1uby1jbmFtZS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYjY1MjBkZWUz
OTE1ZTQyMmVjYjBjYjQ5NGRkNDk0N2QyNTlhNzY2NgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2h0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9jbmFtZS1jbG9ha2luZy10
b3AtY25hbWUtc3ViLW5vLWNuYW1lLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDEwIEBACitUZXN0
IGZvciBDTkFNRSBDbG9ha2luZzogTm8gY29va2llIGV4cGlyeSBjYXBwaW5nIGlmIHRoZSB0b3Ag
ZnJhbWUgaGFzIGFuIGFsdGVybmF0ZSBDTkFNRSBhbmQgdGhlIHN1YiByZXNvdXJjZSBoYXMgbm8g
YWx0ZXJuYXRlIENOQU1FLgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2Yg
IlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworUEFTUyBD
b29raWUgbmFtZWQgY25hbWVUZXN0Q29va2llIGV4cGlyZXMgaW4gbW9yZSB0aGFuIDYwNTQwMCBz
ZWNvbmRzLgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRF
CisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlz
dGljcy9jbmFtZS1jbG9ha2luZy10b3AtY25hbWUtc3ViLW5vLWNuYW1lLmh0bWwgYi9MYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvY25hbWUtY2xvYWtpbmctdG9w
LWNuYW1lLXN1Yi1uby1jbmFtZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjAxY2FkNDM5YjdmYzE2N2E2Yzk0
OWY3MGE5MTAwZTY5YTdjZmIyMzYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRw
L3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvY25hbWUtY2xvYWtpbmctdG9wLWNuYW1lLXN1
Yi1uby1jbmFtZS5odG1sCkBAIC0wLDAgKzEsNjUgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWwg
bGFuZz0iZW4iPgorPGhlYWQ+CisgICAgPG1ldGEgY2hhcnNldD0iVVRGLTgiPgorICAgIDxzY3Jp
cHQgc3JjPSIvanMtdGVzdC1yZXNvdXJjZXMvanMtdGVzdC5qcyI+PC9zY3JpcHQ+CisgICAgPHNj
cmlwdCBzcmM9Ii9jb29raWVzL3Jlc291cmNlcy9jb29raWUtdXRpbGl0aWVzLmpzIj48L3Njcmlw
dD4KKyAgICA8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3V0aWwuanMiPjwvc2NyaXB0PgorPC9oZWFk
PgorPGJvZHkgb25sb2FkPSJydW5UZXN0KCkiPgorPHNjcmlwdD4KKyAgICBkZXNjcmlwdGlvbigi
VGVzdCBmb3IgQ05BTUUgQ2xvYWtpbmc6IE5vIGNvb2tpZSBleHBpcnkgY2FwcGluZyBpZiB0aGUg
dG9wIGZyYW1lIGhhcyBhbiBhbHRlcm5hdGUgQ05BTUUgYW5kIHRoZSBzdWIgcmVzb3VyY2UgaGFz
IG5vIGFsdGVybmF0ZSBDTkFNRS4iKTsKKyAgICBqc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKworICAg
IGZ1bmN0aW9uIGZpbmlzaFRlc3QoKSB7CisgICAgICAgIHJlc2V0Q29va2llc0ZvckN1cnJlbnRP
cmlnaW4oKTsKKyAgICAgICAgc2V0RW5hYmxlRmVhdHVyZShmYWxzZSwgZnVuY3Rpb24oKSB7Cisg
ICAgICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAgICAgICAgfSk7CisgICAgfQorCisgICAgZnVu
Y3Rpb24gY2hlY2tDb29raWVFeHBpcnkoY29va2llRGF0YSwgc2Vjb25kcywgc2hvdWxkQmVMZXNz
VGhhbikgeworICAgICAgICBsZXQgbm93ID0gbmV3IERhdGUoKTsKKyAgICAgICAgbGV0IGV4cGly
eURhdGVJbk1pbGxpc2Vjb25kcyA9IG5vdy5nZXRUaW1lKCkgKyAoc2Vjb25kcyAqIDEwMDApOwor
CisgICAgICAgIGlmICgoY29va2llRGF0YVsiZXhwaXJlcyJdIDwgZXhwaXJ5RGF0ZUluTWlsbGlz
ZWNvbmRzKSA9PT0gc2hvdWxkQmVMZXNzVGhhbikKKyAgICAgICAgICAgIHRlc3RQYXNzZWQoIkNv
b2tpZSBuYW1lZCAiICsgY29va2llRGF0YVsibmFtZSJdICsgIiBleHBpcmVzIGluICIgKyAoc2hv
dWxkQmVMZXNzVGhhbiA/ICJsZXNzIiA6ICJtb3JlIikgKyAiIHRoYW4gIiArIHNlY29uZHMgKyAi
IHNlY29uZHMuIik7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHRlc3RGYWlsZWQoIkNvb2tp
ZSBuYW1lZCAiICsgY29va2llRGF0YVsibmFtZSJdICsgIiBleHBpcmVzIGluICIgKyAoc2hvdWxk
QmVMZXNzVGhhbiA/ICJtb3JlIiA6ICJsZXNzIikgKyAiIHRoYW4gIiArIHNlY29uZHMgKyAiIHNl
Y29uZHMuIik7CisgICAgfQorCisgICAgY29uc3Qgb25lV2Vla0luU2Vjb25kcyA9IDcgKiAyNCAq
IDYwICogNjA7CisgICAgY29uc3Qgb3Zlck9uZVdlZWtJblNlY29uZHMgPSBvbmVXZWVrSW5TZWNv
bmRzICsgNjAwOworICAgIGNvbnN0IGNvb2tpZU5hbWUgPSAiY25hbWVUZXN0Q29va2llIjsKKyAg
ICBjb25zdCBzdWJQYXRoVG9TZXRGaXJzdFBhcnR5Q29va2llID0gInJlc291cmNlcy9zZXQtY29v
a2llLnBocD9uYW1lPSIgKyBjb29raWVOYW1lICsgIiZ2YWx1ZT12YWx1ZSZkdW1teT0iICsgTWF0
aC5yYW5kb20oKTsKKworICAgIGZ1bmN0aW9uIHNldEFuZENoZWNrQ29va2llKCkgeworICAgICAg
ICBmZXRjaChzdWJQYXRoVG9TZXRGaXJzdFBhcnR5Q29va2llKS50aGVuKGZ1bmN0aW9uKCkgewor
ICAgICAgICAgICAgaWYgKGludGVybmFscykgeworICAgICAgICAgICAgICAgIGxldCBjb29raWVz
ID0gaW50ZXJuYWxzLmdldENvb2tpZXMoKTsKKyAgICAgICAgICAgICAgICBpZiAoIWNvb2tpZXMu
bGVuZ3RoKQorICAgICAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJObyBjb29raWVzIGZvdW5k
LiIpOworICAgICAgICAgICAgICAgIGZvciAobGV0IGNvb2tpZSBvZiBjb29raWVzKSB7CisgICAg
ICAgICAgICAgICAgICAgIGlmIChjb29raWUubmFtZSA9PT0gY29va2llTmFtZSkgeworICAgICAg
ICAgICAgICAgICAgICAgICAgY2hlY2tDb29raWVFeHBpcnkoY29va2llLCBvdmVyT25lV2Vla0lu
U2Vjb25kcywgZmFsc2UpOworICAgICAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAg
ICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiVW5rbm93biBjb29raWUgIiArIGNvb2tpZS5uYW1l
ICsgIiBmb3VuZC4iKTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0K
KyAgICAgICAgICAgICAgICBmaW5pc2hUZXN0KCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0p
OworICAgIH0KKworICAgIGNvbnN0IGZpcnN0UGFydHkgPSAiaHR0cDovLzEyNy4wLjAuMTo4MDAw
IjsKKyAgICBjb25zdCBmaXJzdFBhcnR5Q05BTUVGb3JUZXN0aW5nID0gImh0dHA6Ly90ZXN0d2Vi
a2l0Lm9yZyI7CisKKyAgICBmdW5jdGlvbiBydW5UZXN0KCkgeworICAgICAgICBzZXRFbmFibGVG
ZWF0dXJlKHRydWUsIGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgdGVzdFJ1bm5lci5zdGF0aXN0
aWNzU2V0Rmlyc3RQYXJ0eUhvc3RDTkFNRURvbWFpbihmaXJzdFBhcnR5LCBmaXJzdFBhcnR5Q05B
TUVGb3JUZXN0aW5nLCBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgICAgICBzZXRBbmRDaGVja0Nv
b2tpZSgpOworICAgICAgICAgICAgfSk7CisgICAgICAgIH0pOworICAgIH0KKzwvc2NyaXB0Pgor
PC9ib2R5PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRT
dGF0aXN0aWNzL2NuYW1lLWNsb2FraW5nLXRvcC1uby1jbmFtZS1zdWItMXAtY25hbWUtZXhwZWN0
ZWQudHh0IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL2Nu
YW1lLWNsb2FraW5nLXRvcC1uby1jbmFtZS1zdWItMXAtY25hbWUtZXhwZWN0ZWQudHh0Cm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLmFiZmEyOTljY2FkNzBmNjUwZWI2MGE2ZTkwODFmYjkyMmMxNzQxMzkKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3Mv
Y25hbWUtY2xvYWtpbmctdG9wLW5vLWNuYW1lLXN1Yi0xcC1jbmFtZS1leHBlY3RlZC50eHQKQEAg
LTAsMCArMSwxMCBAQAorVGVzdCBmb3IgQ05BTUUgQ2xvYWtpbmc6IE5vIGNvb2tpZSBleHBpcnkg
Y2FwcGluZyBpZiB0aGUgdG9wIGZyYW1lIGhhcyBubyBhbHRlcm5hdGUgQ05BTUUgYW5kIHRoZSBz
dWIgcmVzb3VyY2UgaGFzIGFuIGFsdGVybmF0ZSBDTkFNRSB0aGF0IG1hdGNoZXMgdGhlIGZpcnN0
IHBhcnR5IChub3QgaXRzIENOQU1FKS4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2Vy
aWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisK
K1BBU1MgQ29va2llIG5hbWVkIGNuYW1lVGVzdENvb2tpZSBleHBpcmVzIGluIG1vcmUgdGhhbiA2
MDU0MDAgc2Vjb25kcy4KK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBD
T01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3Jlc291cmNlTG9h
ZFN0YXRpc3RpY3MvY25hbWUtY2xvYWtpbmctdG9wLW5vLWNuYW1lLXN1Yi0xcC1jbmFtZS5odG1s
IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL2NuYW1lLWNs
b2FraW5nLXRvcC1uby1jbmFtZS1zdWItMXAtY25hbWUuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yNzM3NDY0
NTgzYjVkNDgwNWJlYmY5M2E4NDBlNWQwNzc2NDQ4OGYxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL2NuYW1lLWNsb2FraW5n
LXRvcC1uby1jbmFtZS1zdWItMXAtY25hbWUuaHRtbApAQCAtMCwwICsxLDY1IEBACis8IURPQ1RZ
UEUgaHRtbD4KKzxodG1sIGxhbmc9ImVuIj4KKzxoZWFkPgorICAgIDxtZXRhIGNoYXJzZXQ9IlVU
Ri04Ij4KKyAgICA8c2NyaXB0IHNyYz0iL2pzLXRlc3QtcmVzb3VyY2VzL2pzLXRlc3QuanMiPjwv
c2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPSIvY29va2llcy9yZXNvdXJjZXMvY29va2llLXV0aWxp
dGllcy5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9InJlc291cmNlcy91dGlsLmpzIj48
L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5IG9ubG9hZD0icnVuVGVzdCgpIj4KKzxzY3JpcHQ+Cisg
ICAgZGVzY3JpcHRpb24oIlRlc3QgZm9yIENOQU1FIENsb2FraW5nOiBObyBjb29raWUgZXhwaXJ5
IGNhcHBpbmcgaWYgdGhlIHRvcCBmcmFtZSBoYXMgbm8gYWx0ZXJuYXRlIENOQU1FIGFuZCB0aGUg
c3ViIHJlc291cmNlIGhhcyBhbiBhbHRlcm5hdGUgQ05BTUUgdGhhdCBtYXRjaGVzIHRoZSBmaXJz
dCBwYXJ0eSAobm90IGl0cyBDTkFNRSkuIik7CisgICAganNUZXN0SXNBc3luYyA9IHRydWU7CisK
KyAgICBmdW5jdGlvbiBmaW5pc2hUZXN0KCkgeworICAgICAgICByZXNldENvb2tpZXNGb3JDdXJy
ZW50T3JpZ2luKCk7CisgICAgICAgIHNldEVuYWJsZUZlYXR1cmUoZmFsc2UsIGZ1bmN0aW9uKCkg
eworICAgICAgICAgICAgZmluaXNoSlNUZXN0KCk7CisgICAgICAgIH0pOworICAgIH0KKworICAg
IGZ1bmN0aW9uIGNoZWNrQ29va2llRXhwaXJ5KGNvb2tpZURhdGEsIHNlY29uZHMsIHNob3VsZEJl
TGVzc1RoYW4pIHsKKyAgICAgICAgbGV0IG5vdyA9IG5ldyBEYXRlKCk7CisgICAgICAgIGxldCBl
eHBpcnlEYXRlSW5NaWxsaXNlY29uZHMgPSBub3cuZ2V0VGltZSgpICsgKHNlY29uZHMgKiAxMDAw
KTsKKworICAgICAgICBpZiAoKGNvb2tpZURhdGFbImV4cGlyZXMiXSA8IGV4cGlyeURhdGVJbk1p
bGxpc2Vjb25kcykgPT09IHNob3VsZEJlTGVzc1RoYW4pCisgICAgICAgICAgICB0ZXN0UGFzc2Vk
KCJDb29raWUgbmFtZWQgIiArIGNvb2tpZURhdGFbIm5hbWUiXSArICIgZXhwaXJlcyBpbiAiICsg
KHNob3VsZEJlTGVzc1RoYW4gPyAibGVzcyIgOiAibW9yZSIpICsgIiB0aGFuICIgKyBzZWNvbmRz
ICsgIiBzZWNvbmRzLiIpOworICAgICAgICBlbHNlCisgICAgICAgICAgICB0ZXN0RmFpbGVkKCJD
b29raWUgbmFtZWQgIiArIGNvb2tpZURhdGFbIm5hbWUiXSArICIgZXhwaXJlcyBpbiAiICsgKHNo
b3VsZEJlTGVzc1RoYW4gPyAibW9yZSIgOiAibGVzcyIpICsgIiB0aGFuICIgKyBzZWNvbmRzICsg
IiBzZWNvbmRzLiIpOworICAgIH0KKworICAgIGNvbnN0IG9uZVdlZWtJblNlY29uZHMgPSA3ICog
MjQgKiA2MCAqIDYwOworICAgIGNvbnN0IG92ZXJPbmVXZWVrSW5TZWNvbmRzID0gb25lV2Vla0lu
U2Vjb25kcyArIDYwMDsKKyAgICBjb25zdCBjb29raWVOYW1lID0gImNuYW1lVGVzdENvb2tpZSI7
CisgICAgY29uc3Qgc3ViUGF0aFRvU2V0Rmlyc3RQYXJ0eUNvb2tpZSA9ICJyZXNvdXJjZXMvc2V0
LWNvb2tpZS5waHA/bmFtZT0iICsgY29va2llTmFtZSArICImdmFsdWU9dmFsdWUmZHVtbXk9IiAr
IE1hdGgucmFuZG9tKCk7CisKKyAgICBmdW5jdGlvbiBzZXRBbmRDaGVja0Nvb2tpZSgpIHsKKyAg
ICAgICAgZmV0Y2goc3ViUGF0aFRvU2V0Rmlyc3RQYXJ0eUNvb2tpZSkudGhlbihmdW5jdGlvbigp
IHsKKyAgICAgICAgICAgIGlmIChpbnRlcm5hbHMpIHsKKyAgICAgICAgICAgICAgICBsZXQgY29v
a2llcyA9IGludGVybmFscy5nZXRDb29raWVzKCk7CisgICAgICAgICAgICAgICAgaWYgKCFjb29r
aWVzLmxlbmd0aCkKKyAgICAgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiTm8gY29va2llcyBm
b3VuZC4iKTsKKyAgICAgICAgICAgICAgICBmb3IgKGxldCBjb29raWUgb2YgY29va2llcykgewor
ICAgICAgICAgICAgICAgICAgICBpZiAoY29va2llLm5hbWUgPT09IGNvb2tpZU5hbWUpIHsKKyAg
ICAgICAgICAgICAgICAgICAgICAgIGNoZWNrQ29va2llRXhwaXJ5KGNvb2tpZSwgb3Zlck9uZVdl
ZWtJblNlY29uZHMsIGZhbHNlKTsKKyAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAg
ICAgICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoIlVua25vd24gY29va2llICIgKyBjb29raWUu
bmFtZSArICIgZm91bmQuIik7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAg
ICB9CisgICAgICAgICAgICAgICAgZmluaXNoVGVzdCgpOworICAgICAgICAgICAgfQorICAgICAg
ICB9KTsKKyAgICB9CisKKyAgICBjb25zdCBmaXJzdFBhcnR5ID0gImh0dHA6Ly8xMjcuMC4wLjE6
ODAwMCI7CisgICAgY29uc3QgdGhpcmRQYXJ0eUNOQU1FRm9yVGVzdGluZyA9IGZpcnN0UGFydHk7
CisKKyAgICBmdW5jdGlvbiBydW5UZXN0KCkgeworICAgICAgICBzZXRFbmFibGVGZWF0dXJlKHRy
dWUsIGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgdGVzdFJ1bm5lci5zdGF0aXN0aWNzU2V0VGhp
cmRQYXJ0eUNOQU1FRG9tYWluKHRoaXJkUGFydHlDTkFNRUZvclRlc3RpbmcsIGZ1bmN0aW9uKCkg
eworICAgICAgICAgICAgICAgIHNldEFuZENoZWNrQ29va2llKCk7CisgICAgICAgICAgICB9KTsK
KyAgICAgICAgfSk7CisgICAgfQorPC9zY3JpcHQ+Cis8L2JvZHk+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvY25hbWUtY2xvYWtpbmct
dG9wLW5vLWNuYW1lLXN1Yi0zcC1jbmFtZS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9odHRw
L3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvY25hbWUtY2xvYWtpbmctdG9wLW5vLWNuYW1l
LXN1Yi0zcC1jbmFtZS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDVkMmVkNmZkN2Y2MWM2MWU3
YzAwYjJlZTg1OGRjYTdmMzgxOGRlNAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0
dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9jbmFtZS1jbG9ha2luZy10b3Atbm8tY25h
bWUtc3ViLTNwLWNuYW1lLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDEwIEBACitUZXN0IGZvciBD
TkFNRSBDbG9ha2luZzogQ29va2llIGV4cGlyeSBjYXBwaW5nIGlmIHRoZSB0b3AgZnJhbWUgaGFz
IG5vIGFsdGVybmF0ZSBDTkFNRSBhbmQgdGhlIHN1YiByZXNvdXJjZSBoYXMgYW4gYWx0ZXJuYXRl
IENOQU1FLgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1l
c3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworUEFTUyBDb29raWUgbmFt
ZWQgY25hbWVUZXN0Q29va2llIGV4cGlyZXMgaW4gbGVzcyB0aGFuIDYwNTQwMCBzZWNvbmRzLgor
UEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9jbmFt
ZS1jbG9ha2luZy10b3Atbm8tY25hbWUtc3ViLTNwLWNuYW1lLmh0bWwgYi9MYXlvdXRUZXN0cy9o
dHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvY25hbWUtY2xvYWtpbmctdG9wLW5vLWNu
YW1lLXN1Yi0zcC1jbmFtZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmI1YWM0OTdmOTMzNmUzMmNiYmZkYTk3
M2U5MGM0MGEzNzkwZGU4YTcKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvY25hbWUtY2xvYWtpbmctdG9wLW5vLWNuYW1lLXN1
Yi0zcC1jbmFtZS5odG1sCkBAIC0wLDAgKzEsNzEgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWwg
bGFuZz0iZW4iPgorPGhlYWQ+CisgICAgPG1ldGEgY2hhcnNldD0iVVRGLTgiPgorICAgIDxzY3Jp
cHQgc3JjPSIvanMtdGVzdC1yZXNvdXJjZXMvanMtdGVzdC5qcyI+PC9zY3JpcHQ+CisgICAgPHNj
cmlwdCBzcmM9Ii9jb29raWVzL3Jlc291cmNlcy9jb29raWUtdXRpbGl0aWVzLmpzIj48L3Njcmlw
dD4KKyAgICA8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3V0aWwuanMiPjwvc2NyaXB0PgorPC9oZWFk
PgorPGJvZHkgb25sb2FkPSJydW5UZXN0KCkiPgorPHNjcmlwdD4KKyAgICBkZXNjcmlwdGlvbigi
VGVzdCBmb3IgQ05BTUUgQ2xvYWtpbmc6IENvb2tpZSBleHBpcnkgY2FwcGluZyBpZiB0aGUgdG9w
IGZyYW1lIGhhcyBubyBhbHRlcm5hdGUgQ05BTUUgYW5kIHRoZSBzdWIgcmVzb3VyY2UgaGFzIGFu
IGFsdGVybmF0ZSBDTkFNRS4iKTsKKyAgICBqc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKworICAgIGZ1
bmN0aW9uIGZpbmlzaFRlc3QoKSB7CisgICAgICAgIHJlc2V0Q29va2llc0ZvckN1cnJlbnRPcmln
aW4oKTsKKyAgICAgICAgc2V0RW5hYmxlRmVhdHVyZShmYWxzZSwgZnVuY3Rpb24oKSB7CisgICAg
ICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAgICAgICAgfSk7CisgICAgfQorCisgICAgY29uc3Qg
b25lV2Vla0luU2Vjb25kcyA9IDcgKiAyNCAqIDYwICogNjA7CisgICAgY29uc3Qgb3Zlck9uZVdl
ZWtJblNlY29uZHMgPSBvbmVXZWVrSW5TZWNvbmRzICsgNjAwOworICAgIGNvbnN0IHVuZGVyT25l
V2Vla0luU2Vjb25kcyA9IG9uZVdlZWtJblNlY29uZHMgLSA2MDA7CisKKyAgICBmdW5jdGlvbiBj
aGVja0Nvb2tpZUV4cGlyeShjb29raWVEYXRhLCBzZWNvbmRzLCBzaG91bGRCZUxlc3NUaGFuKSB7
CisgICAgICAgIGxldCBub3cgPSBuZXcgRGF0ZSgpOworICAgICAgICBsZXQgZXhwaXJ5RGF0ZUlu
TWlsbGlzZWNvbmRzID0gbm93LmdldFRpbWUoKSArIChzZWNvbmRzICogMTAwMCk7CisKKyAgICAg
ICAgaWYgKChjb29raWVEYXRhWyJleHBpcmVzIl0gPCBleHBpcnlEYXRlSW5NaWxsaXNlY29uZHMp
ID09PSBzaG91bGRCZUxlc3NUaGFuKSB7CisgICAgICAgICAgICBsZXQgdW5kZXJPbmVXZWVrRXhw
aXJ5RGF0ZUluTWlsbGlzZWNvbmRzID0gbm93LmdldFRpbWUoKSArICh1bmRlck9uZVdlZWtJblNl
Y29uZHMgKiAxMDAwKTsKKyAgICAgICAgICAgIGlmIChjb29raWVEYXRhWyJleHBpcmVzIl0gPCB1
bmRlck9uZVdlZWtFeHBpcnlEYXRlSW5NaWxsaXNlY29uZHMpCisgICAgICAgICAgICAgICAgdGVz
dEZhaWxlZCgiQ29va2llIG5hbWVkICIgKyBjb29raWVEYXRhWyJuYW1lIl0gKyAiIHdhcyBjYXBw
ZWQgdG9vIGxvdy4iKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICB0ZXN0UGFz
c2VkKCJDb29raWUgbmFtZWQgIiArIGNvb2tpZURhdGFbIm5hbWUiXSArICIgZXhwaXJlcyBpbiAi
ICsgKHNob3VsZEJlTGVzc1RoYW4gPyAibGVzcyIgOiAibW9yZSIpICsgIiB0aGFuICIgKyBzZWNv
bmRzICsgIiBzZWNvbmRzLiIpOworICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgIHRlc3RGYWls
ZWQoIkNvb2tpZSBuYW1lZCAiICsgY29va2llRGF0YVsibmFtZSJdICsgIiBleHBpcmVzIGluICIg
KyAoc2hvdWxkQmVMZXNzVGhhbiA/ICJtb3JlIiA6ICJsZXNzIikgKyAiIHRoYW4gIiArIHNlY29u
ZHMgKyAiIHNlY29uZHMuIik7CisgICAgfQorCisgICAgY29uc3QgY29va2llTmFtZSA9ICJjbmFt
ZVRlc3RDb29raWUiOworICAgIGNvbnN0IHN1YlBhdGhUb1NldEZpcnN0UGFydHlDb29raWUgPSAi
cmVzb3VyY2VzL3NldC1jb29raWUucGhwP25hbWU9IiArIGNvb2tpZU5hbWUgKyAiJnZhbHVlPXZh
bHVlJmR1bW15PSIgKyBNYXRoLnJhbmRvbSgpOworCisgICAgZnVuY3Rpb24gc2V0QW5kQ2hlY2tD
b29raWUoKSB7CisgICAgICAgIGZldGNoKHN1YlBhdGhUb1NldEZpcnN0UGFydHlDb29raWUpLnRo
ZW4oZnVuY3Rpb24oKSB7CisgICAgICAgICAgICBpZiAoaW50ZXJuYWxzKSB7CisgICAgICAgICAg
ICAgICAgbGV0IGNvb2tpZXMgPSBpbnRlcm5hbHMuZ2V0Q29va2llcygpOworICAgICAgICAgICAg
ICAgIGlmICghY29va2llcy5sZW5ndGgpCisgICAgICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQo
Ik5vIGNvb2tpZXMgZm91bmQuIik7CisgICAgICAgICAgICAgICAgZm9yIChsZXQgY29va2llIG9m
IGNvb2tpZXMpIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGNvb2tpZS5uYW1lID09PSBjb29r
aWVOYW1lKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBjaGVja0Nvb2tpZUV4cGlyeShjb29r
aWUsIG92ZXJPbmVXZWVrSW5TZWNvbmRzLCB0cnVlKTsKKyAgICAgICAgICAgICAgICAgICAgfSBl
bHNlIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoIlVua25vd24gY29va2ll
ICIgKyBjb29raWUubmFtZSArICIgZm91bmQuIik7CisgICAgICAgICAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgZmluaXNoVGVzdCgpOworICAgICAgICAg
ICAgfQorICAgICAgICB9KTsKKyAgICB9CisKKyAgICBjb25zdCBmaXJzdFBhcnR5ID0gImh0dHA6
Ly8xMjcuMC4wLjE6ODAwMCI7CisgICAgY29uc3QgdGhpcmRQYXJ0eUNOQU1FRm9yVGVzdGluZyA9
ICJodHRwOi8vM3JkcGFydHl0ZXN0d2Via2l0Lm9yZyI7CisKKyAgICBmdW5jdGlvbiBydW5UZXN0
KCkgeworICAgICAgICBzZXRFbmFibGVGZWF0dXJlKHRydWUsIGZ1bmN0aW9uKCkgeworICAgICAg
ICAgICAgdGVzdFJ1bm5lci5zdGF0aXN0aWNzU2V0VGhpcmRQYXJ0eUNOQU1FRG9tYWluKHRoaXJk
UGFydHlDTkFNRUZvclRlc3RpbmcsIGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgICAgIHNldEFu
ZENoZWNrQ29va2llKCk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgfSk7CisgICAgfQorPC9z
Y3JpcHQ+Cis8L2JvZHk+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3Jlc291
cmNlTG9hZFN0YXRpc3RpY3MvY25hbWUtY2xvYWtpbmctdG9wLW5vLWNuYW1lLXN1Yi1uby1jbmFt
ZS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRp
c3RpY3MvY25hbWUtY2xvYWtpbmctdG9wLW5vLWNuYW1lLXN1Yi1uby1jbmFtZS1leHBlY3RlZC50
eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNjA1Yzk5YzA0NzcwMjUzNmFlODI3MWQ2ZWRhMjkxYjFkNGY0MGJlYwot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3Rh
dGlzdGljcy9jbmFtZS1jbG9ha2luZy10b3Atbm8tY25hbWUtc3ViLW5vLWNuYW1lLWV4cGVjdGVk
LnR4dApAQCAtMCwwICsxLDEwIEBACitUZXN0IGZvciBDTkFNRSBDbG9ha2luZzogTm8gY29va2ll
IGV4cGlyeSBjYXBwaW5nIGlmIHRoZSB0b3AgZnJhbWUgaGFzIG5vIGFsdGVybmF0ZSBDTkFNRSBh
bmQgdGhlIHN1YiByZXNvdXJjZSBoYXMgbm8gYWx0ZXJuYXRlIENOQU1FLgorCitPbiBzdWNjZXNz
LCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAi
VEVTVCBDT01QTEVURSIuCisKKworUEFTUyBDb29raWUgbmFtZWQgY25hbWVUZXN0Q29va2llIGV4
cGlyZXMgaW4gbW9yZSB0aGFuIDYwNTQwMCBzZWNvbmRzLgorUEFTUyBzdWNjZXNzZnVsbHlQYXJz
ZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0
dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9jbmFtZS1jbG9ha2luZy10b3Atbm8tY25h
bWUtc3ViLW5vLWNuYW1lLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3Jlc291cmNlTG9h
ZFN0YXRpc3RpY3MvY25hbWUtY2xvYWtpbmctdG9wLW5vLWNuYW1lLXN1Yi1uby1jbmFtZS5odG1s
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjY2M2Y5YmY2NjY4NWNhMDk0YTQ5ZTRmZGJjZjg5YjhlZjZiNTNmOTEKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRp
c3RpY3MvY25hbWUtY2xvYWtpbmctdG9wLW5vLWNuYW1lLXN1Yi1uby1jbmFtZS5odG1sCkBAIC0w
LDAgKzEsNjAgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWwgbGFuZz0iZW4iPgorPGhlYWQ+Cisg
ICAgPG1ldGEgY2hhcnNldD0iVVRGLTgiPgorICAgIDxzY3JpcHQgc3JjPSIvanMtdGVzdC1yZXNv
dXJjZXMvanMtdGVzdC5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9Ii9jb29raWVzL3Jl
c291cmNlcy9jb29raWUtdXRpbGl0aWVzLmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNyYz0i
cmVzb3VyY2VzL3V0aWwuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHkgb25sb2FkPSJydW5U
ZXN0KCkiPgorPHNjcmlwdD4KKyAgICBkZXNjcmlwdGlvbigiVGVzdCBmb3IgQ05BTUUgQ2xvYWtp
bmc6IE5vIGNvb2tpZSBleHBpcnkgY2FwcGluZyBpZiB0aGUgdG9wIGZyYW1lIGhhcyBubyBhbHRl
cm5hdGUgQ05BTUUgYW5kIHRoZSBzdWIgcmVzb3VyY2UgaGFzIG5vIGFsdGVybmF0ZSBDTkFNRS4i
KTsKKyAgICBqc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKworICAgIGZ1bmN0aW9uIGZpbmlzaFRlc3Qo
KSB7CisgICAgICAgIHJlc2V0Q29va2llc0ZvckN1cnJlbnRPcmlnaW4oKTsKKyAgICAgICAgc2V0
RW5hYmxlRmVhdHVyZShmYWxzZSwgZnVuY3Rpb24oKSB7CisgICAgICAgICAgICBmaW5pc2hKU1Rl
c3QoKTsKKyAgICAgICAgfSk7CisgICAgfQorCisgICAgZnVuY3Rpb24gY2hlY2tDb29raWVFeHBp
cnkoY29va2llRGF0YSwgc2Vjb25kcywgc2hvdWxkQmVMZXNzVGhhbikgeworICAgICAgICBsZXQg
bm93ID0gbmV3IERhdGUoKTsKKyAgICAgICAgbGV0IGV4cGlyeURhdGVJbk1pbGxpc2Vjb25kcyA9
IG5vdy5nZXRUaW1lKCkgKyAoc2Vjb25kcyAqIDEwMDApOworCisgICAgICAgIGlmICgoY29va2ll
RGF0YVsiZXhwaXJlcyJdIDwgZXhwaXJ5RGF0ZUluTWlsbGlzZWNvbmRzKSA9PT0gc2hvdWxkQmVM
ZXNzVGhhbikKKyAgICAgICAgICAgIHRlc3RQYXNzZWQoIkNvb2tpZSBuYW1lZCAiICsgY29va2ll
RGF0YVsibmFtZSJdICsgIiBleHBpcmVzIGluICIgKyAoc2hvdWxkQmVMZXNzVGhhbiA/ICJsZXNz
IiA6ICJtb3JlIikgKyAiIHRoYW4gIiArIHNlY29uZHMgKyAiIHNlY29uZHMuIik7CisgICAgICAg
IGVsc2UKKyAgICAgICAgICAgIHRlc3RGYWlsZWQoIkNvb2tpZSBuYW1lZCAiICsgY29va2llRGF0
YVsibmFtZSJdICsgIiBleHBpcmVzIGluICIgKyAoc2hvdWxkQmVMZXNzVGhhbiA/ICJtb3JlIiA6
ICJsZXNzIikgKyAiIHRoYW4gIiArIHNlY29uZHMgKyAiIHNlY29uZHMuIik7CisgICAgfQorCisg
ICAgY29uc3Qgb25lV2Vla0luU2Vjb25kcyA9IDcgKiAyNCAqIDYwICogNjA7CisgICAgY29uc3Qg
b3Zlck9uZVdlZWtJblNlY29uZHMgPSBvbmVXZWVrSW5TZWNvbmRzICsgNjAwOworICAgIGNvbnN0
IGNvb2tpZU5hbWUgPSAiY25hbWVUZXN0Q29va2llIjsKKyAgICBjb25zdCBzdWJQYXRoVG9TZXRG
aXJzdFBhcnR5Q29va2llID0gInJlc291cmNlcy9zZXQtY29va2llLnBocD9uYW1lPSIgKyBjb29r
aWVOYW1lICsgIiZ2YWx1ZT12YWx1ZSZkdW1teT0iICsgTWF0aC5yYW5kb20oKTsKKworICAgIGZ1
bmN0aW9uIHNldEFuZENoZWNrQ29va2llKCkgeworICAgICAgICBmZXRjaChzdWJQYXRoVG9TZXRG
aXJzdFBhcnR5Q29va2llKS50aGVuKGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgaWYgKGludGVy
bmFscykgeworICAgICAgICAgICAgICAgIGxldCBjb29raWVzID0gaW50ZXJuYWxzLmdldENvb2tp
ZXMoKTsKKyAgICAgICAgICAgICAgICBpZiAoIWNvb2tpZXMubGVuZ3RoKQorICAgICAgICAgICAg
ICAgICAgICB0ZXN0RmFpbGVkKCJObyBjb29raWVzIGZvdW5kLiIpOworICAgICAgICAgICAgICAg
IGZvciAobGV0IGNvb2tpZSBvZiBjb29raWVzKSB7CisgICAgICAgICAgICAgICAgICAgIGlmIChj
b29raWUubmFtZSA9PT0gY29va2llTmFtZSkgeworICAgICAgICAgICAgICAgICAgICAgICAgY2hl
Y2tDb29raWVFeHBpcnkoY29va2llLCBvdmVyT25lV2Vla0luU2Vjb25kcywgZmFsc2UpOworICAg
ICAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICAgICAgdGVzdEZh
aWxlZCgiVW5rbm93biBjb29raWUgIiArIGNvb2tpZS5uYW1lICsgIiBmb3VuZC4iKTsKKyAgICAg
ICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBmaW5p
c2hUZXN0KCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0pOworICAgIH0KKworICAgIGZ1bmN0
aW9uIHJ1blRlc3QoKSB7CisgICAgICAgIHNldEVuYWJsZUZlYXR1cmUodHJ1ZSwgZnVuY3Rpb24o
KSB7CisgICAgICAgICAgICBzZXRBbmRDaGVja0Nvb2tpZSgpOworICAgICAgICB9KTsKKyAgICB9
Cis8L3NjcmlwdD4KKzwvYm9keT4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2lv
cy0xMy9UZXN0RXhwZWN0YXRpb25zIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vaW9zLTEzL1Rlc3RF
eHBlY3RhdGlvbnMKaW5kZXggNGMzYmExZTA2YmZkMzY1NTY3ZGUyNzdkNmE2OGFmMDZkNGM1MDg0
ZS4uNTA3YjQ3MTBkZjg0MDUwNmMyNDVkNjlkNmJhZTA3NDE2MzU4OTk1NCAxMDA2NDQKLS0tIGEv
TGF5b3V0VGVzdHMvcGxhdGZvcm0vaW9zLTEzL1Rlc3RFeHBlY3RhdGlvbnMKKysrIGIvTGF5b3V0
VGVzdHMvcGxhdGZvcm0vaW9zLTEzL1Rlc3RFeHBlY3RhdGlvbnMKQEAgLTEsMyArMSwxMiBAQAog
IyBDZXJ0YWluIHZlcnNpb25zIG9mIGlPUyB1c2UgZGlmZmVyZW50IHRleHQgc2VjdXJpdHkgY2hh
cmFjdGVycy4KIHdlYmtpdC5vcmcvYi8yMDk2OTIgcGxhdGZvcm0vaW9zL2Zhc3QvdGV4dC90ZXh0
LXNlY3VyaXR5LWRpc2MtYnVsbGV0LXB1YS1pb3MtbmV3Lmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJl
IF0KLXdlYmtpdC5vcmcvYi8yMDk2OTIgZmFzdC90ZXh0L3RleHQtc2VjdXJpdHktZGlzYy1idWxs
ZXQtcHVhLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBm
aWxlCit3ZWJraXQub3JnL2IvMjA5NjkyIGZhc3QvdGV4dC90ZXh0LXNlY3VyaXR5LWRpc2MtYnVs
bGV0LXB1YS5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCisKKyMgVGhlIENOQU1FIGFuZCBjb29r
aWUgdHJhbnNmb3JtIFNQSXMgYXJlIG9ubHkgYXZhaWxhYmxlIGluIGlPUyAxNCBhbmQgYWJvdmUu
CitodHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvY25hbWUtY2xvYWtpbmctdG9wLWNu
YW1lLXN1Yi0xcC1jbmFtZS5odG1sIFsgU2tpcCBdCitodHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0
YXRpc3RpY3MvY25hbWUtY2xvYWtpbmctdG9wLWNuYW1lLXN1Yi0zcC1jbmFtZS5odG1sIFsgU2tp
cCBdCitodHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvY25hbWUtY2xvYWtpbmctdG9w
LWNuYW1lLXN1Yi1tYXRjaGluZy1jbmFtZS5odG1sIFsgU2tpcCBdCitodHRwL3Rlc3RzL3Jlc291
cmNlTG9hZFN0YXRpc3RpY3MvY25hbWUtY2xvYWtpbmctdG9wLWNuYW1lLXN1Yi1uby1jbmFtZS5o
dG1sIFsgU2tpcCBdCitodHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvY25hbWUtY2xv
YWtpbmctdG9wLW5vLWNuYW1lLXN1Yi0xcC1jbmFtZS5odG1sIFsgU2tpcCBdCitodHRwL3Rlc3Rz
L3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvY25hbWUtY2xvYWtpbmctdG9wLW5vLWNuYW1lLXN1Yi0z
cC1jbmFtZS5odG1sIFsgU2tpcCBdCitodHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3Mv
Y25hbWUtY2xvYWtpbmctdG9wLW5vLWNuYW1lLXN1Yi1uby1jbmFtZS5odG1sIFsgU2tpcCBdCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9pb3Mtd2syL1Rlc3RFeHBlY3RhdGlvbnMg
Yi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9pb3Mtd2syL1Rlc3RFeHBlY3RhdGlvbnMKaW5kZXggYmJh
YjRhYTdjODQ2NTU0YTUxMDZlMDY3MmFiNTI4Y2E1MTA4NmFmYS4uZDY0YjhiM2IxN2M3MTY4NTcy
ZTMzOWIwYjgxNGU4NzAwOWMyZjk3MyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0v
aW9zLXdrMi9UZXN0RXhwZWN0YXRpb25zCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2lvcy13
azIvVGVzdEV4cGVjdGF0aW9ucwpAQCAtODIsNiArODIsMTUgQEAgc2Nyb2xsaW5nY29vcmRpbmF0
b3Ivbm9uLWZhc3Qtc2Nyb2xsYWJsZS1yZWdpb24tdHJhbnNmb3JtZWQtaWZyYW1lLmh0bWwgWyBT
a2lwIF0KIGh0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9zdHJpcC1yZWZlcnJlci10
by1vcmlnaW4tZm9yLXRoaXJkLXBhcnR5LXJlZGlyZWN0cy5odG1sIFsgUGFzcyBdCiBodHRwL3Rl
c3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3Mvc3RyaXAtcmVmZXJyZXItdG8tb3JpZ2luLWZvci10
aGlyZC1wYXJ0eS1yZXF1ZXN0cy5odG1sIFsgUGFzcyBdCiAKKyMgVGhlIENOQU1FIGFuZCBjb29r
aWUgdHJhbnNmb3JtIFNQSXMgYXJlIG9ubHkgYXZhaWxhYmxlIGluIGlPUyAxNCBhbmQgYWJvdmUu
CitodHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvY25hbWUtY2xvYWtpbmctdG9wLWNu
YW1lLXN1Yi0xcC1jbmFtZS5odG1sIFsgUGFzcyBdCitodHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0
YXRpc3RpY3MvY25hbWUtY2xvYWtpbmctdG9wLWNuYW1lLXN1Yi0zcC1jbmFtZS5odG1sIFsgUGFz
cyBdCitodHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvY25hbWUtY2xvYWtpbmctdG9w
LWNuYW1lLXN1Yi1tYXRjaGluZy1jbmFtZS5odG1sIFsgUGFzcyBdCitodHRwL3Rlc3RzL3Jlc291
cmNlTG9hZFN0YXRpc3RpY3MvY25hbWUtY2xvYWtpbmctdG9wLWNuYW1lLXN1Yi1uby1jbmFtZS5o
dG1sIFsgUGFzcyBdCitodHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvY25hbWUtY2xv
YWtpbmctdG9wLW5vLWNuYW1lLXN1Yi0xcC1jbmFtZS5odG1sIFsgUGFzcyBdCitodHRwL3Rlc3Rz
L3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvY25hbWUtY2xvYWtpbmctdG9wLW5vLWNuYW1lLXN1Yi0z
cC1jbmFtZS5odG1sIFsgUGFzcyBdCitodHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3Mv
Y25hbWUtY2xvYWtpbmctdG9wLW5vLWNuYW1lLXN1Yi1uby1jbmFtZS5odG1sIFsgUGFzcyBdCisK
ICMvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KICMgRW5kIHBsYXRmb3JtLXNwZWNp
ZmljIGRpcmVjdG9yaWVzLgogIy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMi9UZXN0RXhwZWN0YXRpb25zIGIv
TGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMi9UZXN0RXhwZWN0YXRpb25zCmluZGV4IDNkNzhh
MThkYTUzZGYzZjA4MGFhMTNhNjRhZjQwMGQyZGRkODVjYTAuLjc5YjY4YWVkZWYzMzQyZTA3ZjRj
NTQ2Mzg4N2M2MzZkMzY1MTg5OGIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21h
Yy13azIvVGVzdEV4cGVjdGF0aW9ucworKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2sy
L1Rlc3RFeHBlY3RhdGlvbnMKQEAgLTcxMyw2ICs3MTMsMTUgQEAgaHR0cC90ZXN0cy9yZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzL2NhcC1jYWNoZS1tYXgtYWdlLWZvci1wcmV2YWxlbnQtcmVzb3VyY2Uu
aHRtbAogWyBDYXRhbGluYSsgXSBodHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvZW5m
b3JjZS1zYW1lc2l0ZS1zdHJpY3QtYmFzZWQtb24tdG9wLWZyYW1lLXVuaXF1ZS1yZWRpcmVjdHMt
dG8uaHRtbCBbIFBhc3MgXQogWyBDYXRhbGluYSsgXSBodHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0
YXRpc3RpY3MvZW5mb3JjZS1zYW1lc2l0ZS1zdHJpY3QtYmFzZWQtb24tdG9wLWZyYW1lLXVuaXF1
ZS1yZWRpcmVjdHMtdG8tZGF0YWJhc2UuaHRtbCBbIFBhc3MgXQogCisjIFRoZSBDTkFNRSBhbmQg
Y29va2llIHRyYW5zZm9ybSBTUElzIGFyZSBvbmx5IGF2YWlsYWJsZSBpbiBtYWNPUyBCaWcgU3Vy
IGFuZCBhYm92ZS4KK1sgQmlnU3VyKyBdIGh0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGlj
cy9jbmFtZS1jbG9ha2luZy10b3AtY25hbWUtc3ViLTFwLWNuYW1lLmh0bWwgWyBQYXNzIF0KK1sg
QmlnU3VyKyBdIGh0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9jbmFtZS1jbG9ha2lu
Zy10b3AtY25hbWUtc3ViLTNwLWNuYW1lLmh0bWwgWyBQYXNzIF0KK1sgQmlnU3VyKyBdIGh0dHAv
dGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9jbmFtZS1jbG9ha2luZy10b3AtY25hbWUtc3Vi
LW1hdGNoaW5nLWNuYW1lLmh0bWwgWyBQYXNzIF0KK1sgQmlnU3VyKyBdIGh0dHAvdGVzdHMvcmVz
b3VyY2VMb2FkU3RhdGlzdGljcy9jbmFtZS1jbG9ha2luZy10b3AtY25hbWUtc3ViLW5vLWNuYW1l
Lmh0bWwgWyBQYXNzIF0KK1sgQmlnU3VyKyBdIGh0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlz
dGljcy9jbmFtZS1jbG9ha2luZy10b3Atbm8tY25hbWUtc3ViLTFwLWNuYW1lLmh0bWwgWyBQYXNz
IF0KK1sgQmlnU3VyKyBdIGh0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9jbmFtZS1j
bG9ha2luZy10b3Atbm8tY25hbWUtc3ViLTNwLWNuYW1lLmh0bWwgWyBQYXNzIF0KK1sgQmlnU3Vy
KyBdIGh0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9jbmFtZS1jbG9ha2luZy10b3At
bm8tY25hbWUtc3ViLW5vLWNuYW1lLmh0bWwgWyBQYXNzIF0KKwogIyBTa2lwcGVkIGluIGdlbmVy
YWwgZXhwZWN0YXRpb25zIHNpbmNlIHRoZXkgb25seSB3b3JrIG9uIGlPUyBhbmQgTWFjLCBXSzIu
CiBtZWRpYS9kZWFjdGl2YXRlLWF1ZGlvLXNlc3Npb24uaHRtbCBbIFBhc3MgXQogCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93azIvVGVzdEV4cGVjdGF0aW9ucyBiL0xheW91dFRl
c3RzL3BsYXRmb3JtL3drMi9UZXN0RXhwZWN0YXRpb25zCmluZGV4IGQwZDg2YjEwMzM2NTMyYWUy
MzlkYzNkMjdkZWQyNjE4OTBiZmY4MGYuLjRlYTE0YmNlNTg4ZjUyMmYxY2FmNTk2MWE2YmVmMTY4
NzZmMWQyNTEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL3drMi9UZXN0RXhwZWN0
YXRpb25zCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL3drMi9UZXN0RXhwZWN0YXRpb25zCkBA
IC03MzAsNiArNzMwLDE1IEBAIGh0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9zZXQt
YWxsLWNvb2tpZXMtdG8tc2FtZS1zaXRlLXN0cmljdC5odG1sIFsgU2tpCiBodHRwL3Rlc3RzL3Jl
c291cmNlTG9hZFN0YXRpc3RpY3MvZW5mb3JjZS1zYW1lc2l0ZS1zdHJpY3QtYmFzZWQtb24tdG9w
LWZyYW1lLXVuaXF1ZS1yZWRpcmVjdHMtdG8uaHRtbCBbIFNraXAgXQogaHR0cC90ZXN0cy9yZXNv
dXJjZUxvYWRTdGF0aXN0aWNzL2VuZm9yY2Utc2FtZXNpdGUtc3RyaWN0LWJhc2VkLW9uLXRvcC1m
cmFtZS11bmlxdWUtcmVkaXJlY3RzLXRvLWRhdGFiYXNlLmh0bWwgWyBTa2lwIF0KIAorIyBUaGUg
Q05BTUUgYW5kIGNvb2tpZSB0cmFuc2Zvcm0gU1BJcyBhcmUgb25seSBhdmFpbGFibGUgaW4gbWFj
T1MgQmlnIFN1ciArIGlPUyAxNCBhbmQgYWJvdmUuCitodHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0
YXRpc3RpY3MvY25hbWUtY2xvYWtpbmctdG9wLWNuYW1lLXN1Yi0xcC1jbmFtZS5odG1sIFsgU2tp
cCBdCitodHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvY25hbWUtY2xvYWtpbmctdG9w
LWNuYW1lLXN1Yi0zcC1jbmFtZS5odG1sIFsgU2tpcCBdCitodHRwL3Rlc3RzL3Jlc291cmNlTG9h
ZFN0YXRpc3RpY3MvY25hbWUtY2xvYWtpbmctdG9wLWNuYW1lLXN1Yi1tYXRjaGluZy1jbmFtZS5o
dG1sIFsgU2tpcCBdCitodHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvY25hbWUtY2xv
YWtpbmctdG9wLWNuYW1lLXN1Yi1uby1jbmFtZS5odG1sIFsgU2tpcCBdCitodHRwL3Rlc3RzL3Jl
c291cmNlTG9hZFN0YXRpc3RpY3MvY25hbWUtY2xvYWtpbmctdG9wLW5vLWNuYW1lLXN1Yi0xcC1j
bmFtZS5odG1sIFsgU2tpcCBdCitodHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvY25h
bWUtY2xvYWtpbmctdG9wLW5vLWNuYW1lLXN1Yi0zcC1jbmFtZS5odG1sIFsgU2tpcCBdCitodHRw
L3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvY25hbWUtY2xvYWtpbmctdG9wLW5vLWNuYW1l
LXN1Yi1uby1jbmFtZS5odG1sIFsgU2tpcCBdCisKIGh0dHAvdGVzdHMvd2Vic29ja2V0L2Nvbm5l
Y3Rpb24tcmVmdXNhbC1pbi1mcmFtZS1yZXNvdXJjZS1sb2FkLXN0YXRpc3RpY3MuaHRtbCBbIFBh
c3MgXQogIyBUaGVzZSBhcmUgb25seSBzdXBwb3J0ZWQgYmVoaW5kIGEgY29tcGlsZSB0aW1lIGZs
YWcgaW4gbWFjT1MgSGlnaCBTaWVycmEgKyBpT1MgMTEsIGFuZCBhYm92ZS4KIGh0dHAvdGVzdHMv
cmVzb3VyY2VMb2FkU3RhdGlzdGljcy9jb29raWUtZGVsZXRpb24uaHRtbCBbIFBhc3MgVGltZW91
dCBdCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>