<?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>219900</bug_id>
          
          <creation_ts>2020-12-15 10:29:28 -0800</creation_ts>
          <short_desc>Still can&apos;t login to my.playstation.com</short_desc>
          <delta_ts>2024-01-04 19:15:13 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>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>
          
          
          <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>
          
          <blocked>218760</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Kate Cheney">katherine_cheney</reporter>
          <assigned_to name="Kate Cheney">katherine_cheney</assigned_to>
          <cc>bfulgham</cc>
    
    <cc>cdumez</cc>
    
    <cc>darin</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>japhet</cc>
    
    <cc>wilander</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1714805</commentid>
    <comment_count>0</comment_count>
    <who name="Kate Cheney">katherine_cheney</who>
    <bug_when>2020-12-15 10:29:28 -0800</bug_when>
    <thetext>We closed https://bugs.webkit.org/show_bug.cgi?id=218471 after talking with Sony, however it seems we still need a quirk for part of the Playstation site.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1714806</commentid>
    <comment_count>1</comment_count>
    <who name="Kate Cheney">katherine_cheney</who>
    <bug_when>2020-12-15 10:30:24 -0800</bug_when>
    <thetext>&lt;rdar://problem/72062985&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1714878</commentid>
    <comment_count>2</comment_count>
      <attachid>416278</attachid>
    <who name="Kate Cheney">katherine_cheney</who>
    <bug_when>2020-12-15 12:29:48 -0800</bug_when>
    <thetext>Created attachment 416278
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1715192</commentid>
    <comment_count>3</comment_count>
      <attachid>416278</attachid>
    <who name="John Wilander">wilander</who>
    <bug_when>2020-12-16 12:28:18 -0800</bug_when>
    <thetext>Comment on attachment 416278
Patch

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

We&apos;re still limiting this to specific domains *in code*, right? So that manipulation of the database cannot be used to grant persistent third-party cookie access?

&gt; Source/WebCore/page/Quirks.cpp:1105
&gt; +                    // We will match Sony login domains up when prompting the user and storing the domains.

Does this mean if Sony calls the Storage Access API themselves, they&apos;d trigger that matching and get the special prompt?

&gt; Source/WebCore/page/Quirks.cpp:1109
&gt; +                            ResourceLoadObserver::shared().setDomainsWithCrossPageStorageAccess({{ domain, loginDomain }}, [&amp;element, platformEvent, eventType, detail, relatedTarget] {

domain instead of firstPartyDomain indicates that we would trigger the quirk even if the PlayStation site was embedded which we shouldn&apos;t do. We should always request storage access under the first party.

&gt; Source/WebCore/platform/network/NetworkStorageSession.cpp:219
&gt;  void NetworkStorageSession::grantCrossPageStorageAccess(const TopFrameDomain&amp; topFrameDomain, const SubResourceDomain&amp; resourceDomain)

As you can see here, the rest of the code assumes that it&apos;s being sent the first party domain. The type system doesn&apos;t guarantee that so we have to make sure ourselves. Down the road I&apos;d like to leverage the type system to get this enforced.

&gt; Source/WebCore/platform/network/NetworkStorageSession.cpp:417
&gt; +Optional&lt;RegistrableDomain&gt; NetworkStorageSession::findAdditionalLoginDomain(const RegistrableDomain&amp; subDomain, const RegistrableDomain&amp; topDomain)

I think the order of these parameters we mostly use is topDomain then subDomain. Please reverse since getting it wrong is very easy on the calling side without support from the type system.

&gt; Source/WebKit/UIProcess/Cocoa/UIDelegate.mm:348
&gt; +static String buildList(const WebCore::RegistrableDomain subDomainOne, const WebCore::RegistrableDomain subDomainTwo)

This is a very open ended function name. Could we make it more specific? Perhaps ...ForStorageAccessPrompt?

&gt; Source/WebKit/UIProcess/Cocoa/UIDelegate.mm:352
&gt; +    builder.append(String([NSString stringWithFormat:@&quot;â and â&quot;]));

I don&apos;t understand this. Some Unicode getting garbled?

&gt; Source/WebKit/UIProcess/Cocoa/WKStorageAccessAlert.mm:39
&gt; +static String buildList(const WebCore::RegistrableDomain subDomainOne, const WebCore::RegistrableDomain subDomainTwo)

Same comment on function name. Also, this is a copy of the code. Could we write once?

&gt; Source/WebKit/UIProcess/Cocoa/WKStorageAccessAlert.mm:43
&gt; +    builder.append(String([NSString stringWithFormat:@&quot;â and â&quot;]));

Same comment on weird characters.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1715212</commentid>
    <comment_count>4</comment_count>
    <who name="Kate Cheney">katherine_cheney</who>
    <bug_when>2020-12-16 13:14:31 -0800</bug_when>
    <thetext>(In reply to John Wilander from comment #3)
&gt; Comment on attachment 416278 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=416278&amp;action=review
&gt; 
&gt; We&apos;re still limiting this to specific domains *in code*, right? So that
&gt; manipulation of the database cannot be used to grant persistent third-party
&gt; cookie access?
&gt; 

I&apos;m not sure I understand exactly what you mean. These domains have to be stored in the database in order to be persistent between sessions, I don&apos;t think we can avoid that. 

&gt; &gt; Source/WebCore/page/Quirks.cpp:1105
&gt; &gt; +                    // We will match Sony login domains up when prompting the user and storing the domains.
&gt; 
&gt; Does this mean if Sony calls the Storage Access API themselves, they&apos;d
&gt; trigger that matching and get the special prompt?
&gt; 

Yes, if they are requesting storage access for sony.com or sonyentertainmentnetwork.com under playstation.com they will get the special prompt. I did consider this, but my understanding was they were migrating away from needing 3rd party cookies entirely so I thought this was fine for the quirk.

&gt; &gt; Source/WebCore/page/Quirks.cpp:1109
&gt; &gt; +                            ResourceLoadObserver::shared().setDomainsWithCrossPageStorageAccess({{ domain, loginDomain }}, [&amp;element, platformEvent, eventType, detail, relatedTarget] {
&gt; 
&gt; domain instead of firstPartyDomain indicates that we would trigger the quirk
&gt; even if the PlayStation site was embedded which we shouldn&apos;t do. We should
&gt; always request storage access under the first party.
&gt; 

Good point, I will change this to be first party only.

&gt; &gt; Source/WebCore/platform/network/NetworkStorageSession.cpp:219
&gt; &gt;  void NetworkStorageSession::grantCrossPageStorageAccess(const TopFrameDomain&amp; topFrameDomain, const SubResourceDomain&amp; resourceDomain)
&gt; 
&gt; As you can see here, the rest of the code assumes that it&apos;s being sent the
&gt; first party domain. The type system doesn&apos;t guarantee that so we have to
&gt; make sure ourselves. Down the road I&apos;d like to leverage the type system to
&gt; get this enforced.
&gt; 

Noted, I will fix the above code.

&gt; &gt; Source/WebCore/platform/network/NetworkStorageSession.cpp:417
&gt; &gt; +Optional&lt;RegistrableDomain&gt; NetworkStorageSession::findAdditionalLoginDomain(const RegistrableDomain&amp; subDomain, const RegistrableDomain&amp; topDomain)
&gt; 
&gt; I think the order of these parameters we mostly use is topDomain then
&gt; subDomain. Please reverse since getting it wrong is very easy on the calling
&gt; side without support from the type system.
&gt; 

OK, will reverse.

&gt; &gt; Source/WebKit/UIProcess/Cocoa/UIDelegate.mm:348
&gt; &gt; +static String buildList(const WebCore::RegistrableDomain subDomainOne, const WebCore::RegistrableDomain subDomainTwo)
&gt; 
&gt; This is a very open ended function name. Could we make it more specific?
&gt; Perhaps ...ForStorageAccessPrompt?
&gt; 

Good idea, will fix.

&gt; &gt; Source/WebKit/UIProcess/Cocoa/UIDelegate.mm:352
&gt; &gt; +    builder.append(String([NSString stringWithFormat:@&quot;â and â&quot;]));
&gt; 
&gt; I don&apos;t understand this. Some Unicode getting garbled?
&gt; 

Strange, it is converting slanty quotes to these characters. I wonder if it is only the diff technology that is showing them like that? Will investigate.

&gt; &gt; Source/WebKit/UIProcess/Cocoa/WKStorageAccessAlert.mm:39
&gt; &gt; +static String buildList(const WebCore::RegistrableDomain subDomainOne, const WebCore::RegistrableDomain subDomainTwo)
&gt; 
&gt; Same comment on function name. Also, this is a copy of the code. Could we
&gt; write once?

Probably, will adjust in the next upload.

&gt; 
&gt; &gt; Source/WebKit/UIProcess/Cocoa/WKStorageAccessAlert.mm:43
&gt; &gt; +    builder.append(String([NSString stringWithFormat:@&quot;â and â&quot;]));
&gt; 
&gt; Same comment on weird characters.

:( 


Thanks for the comments!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1715214</commentid>
    <comment_count>5</comment_count>
    <who name="John Wilander">wilander</who>
    <bug_when>2020-12-16 13:20:32 -0800</bug_when>
    <thetext>(In reply to katherine_cheney from comment #4)
&gt; (In reply to John Wilander from comment #3)
&gt; &gt; Comment on attachment 416278 [details]
&gt; &gt; Patch
&gt; &gt; 
&gt; &gt; View in context:
&gt; &gt; https://bugs.webkit.org/attachment.cgi?id=416278&amp;action=review
&gt; &gt; 
&gt; &gt; We&apos;re still limiting this to specific domains *in code*, right? So that
&gt; &gt; manipulation of the database cannot be used to grant persistent third-party
&gt; &gt; cookie access?
&gt; &gt; 
&gt; 
&gt; I&apos;m not sure I understand exactly what you mean. These domains have to be
&gt; stored in the database in order to be persistent between sessions, I don&apos;t
&gt; think we can avoid that. 

These are special, quirks permissions. We have to make sure to restrict those permissions are enforced in code and not just in the database. If the database says that ThirdParty.example should have persistent third-party cookie access under news.example, the code should reject it. We have to make sure in code to restrict this functionality only to the specific sites we build quirks for.

&gt; &gt; &gt; Source/WebCore/page/Quirks.cpp:1105
&gt; &gt; &gt; +                    // We will match Sony login domains up when prompting the user and storing the domains.
&gt; &gt; 
&gt; &gt; Does this mean if Sony calls the Storage Access API themselves, they&apos;d
&gt; &gt; trigger that matching and get the special prompt?
&gt; &gt; 
&gt; 
&gt; Yes, if they are requesting storage access for sony.com or
&gt; sonyentertainmentnetwork.com under playstation.com they will get the special
&gt; prompt. I did consider this, but my understanding was they were migrating
&gt; away from needing 3rd party cookies entirely so I thought this was fine for
&gt; the quirk.

Should be fine but it&apos;s something to keep in mind since we want developers to be able to use our APIs without hitting quirks.

&gt; &gt; &gt; Source/WebCore/page/Quirks.cpp:1109
&gt; &gt; &gt; +                            ResourceLoadObserver::shared().setDomainsWithCrossPageStorageAccess({{ domain, loginDomain }}, [&amp;element, platformEvent, eventType, detail, relatedTarget] {
&gt; &gt; 
&gt; &gt; domain instead of firstPartyDomain indicates that we would trigger the quirk
&gt; &gt; even if the PlayStation site was embedded which we shouldn&apos;t do. We should
&gt; &gt; always request storage access under the first party.
&gt; &gt; 
&gt; 
&gt; Good point, I will change this to be first party only.
&gt; 
&gt; &gt; &gt; Source/WebCore/platform/network/NetworkStorageSession.cpp:219
&gt; &gt; &gt;  void NetworkStorageSession::grantCrossPageStorageAccess(const TopFrameDomain&amp; topFrameDomain, const SubResourceDomain&amp; resourceDomain)
&gt; &gt; 
&gt; &gt; As you can see here, the rest of the code assumes that it&apos;s being sent the
&gt; &gt; first party domain. The type system doesn&apos;t guarantee that so we have to
&gt; &gt; make sure ourselves. Down the road I&apos;d like to leverage the type system to
&gt; &gt; get this enforced.
&gt; &gt; 
&gt; 
&gt; Noted, I will fix the above code.
&gt; 
&gt; &gt; &gt; Source/WebCore/platform/network/NetworkStorageSession.cpp:417
&gt; &gt; &gt; +Optional&lt;RegistrableDomain&gt; NetworkStorageSession::findAdditionalLoginDomain(const RegistrableDomain&amp; subDomain, const RegistrableDomain&amp; topDomain)
&gt; &gt; 
&gt; &gt; I think the order of these parameters we mostly use is topDomain then
&gt; &gt; subDomain. Please reverse since getting it wrong is very easy on the calling
&gt; &gt; side without support from the type system.
&gt; &gt; 
&gt; 
&gt; OK, will reverse.
&gt; 
&gt; &gt; &gt; Source/WebKit/UIProcess/Cocoa/UIDelegate.mm:348
&gt; &gt; &gt; +static String buildList(const WebCore::RegistrableDomain subDomainOne, const WebCore::RegistrableDomain subDomainTwo)
&gt; &gt; 
&gt; &gt; This is a very open ended function name. Could we make it more specific?
&gt; &gt; Perhaps ...ForStorageAccessPrompt?
&gt; &gt; 
&gt; 
&gt; Good idea, will fix.
&gt; 
&gt; &gt; &gt; Source/WebKit/UIProcess/Cocoa/UIDelegate.mm:352
&gt; &gt; &gt; +    builder.append(String([NSString stringWithFormat:@&quot;â and â&quot;]));
&gt; &gt; 
&gt; &gt; I don&apos;t understand this. Some Unicode getting garbled?
&gt; &gt; 
&gt; 
&gt; Strange, it is converting slanty quotes to these characters. I wonder if it
&gt; is only the diff technology that is showing them like that? Will investigate.

Thanks!

&gt; &gt; &gt; Source/WebKit/UIProcess/Cocoa/WKStorageAccessAlert.mm:39
&gt; &gt; &gt; +static String buildList(const WebCore::RegistrableDomain subDomainOne, const WebCore::RegistrableDomain subDomainTwo)
&gt; &gt; 
&gt; &gt; Same comment on function name. Also, this is a copy of the code. Could we
&gt; &gt; write once?
&gt; 
&gt; Probably, will adjust in the next upload.
&gt; 
&gt; &gt; 
&gt; &gt; &gt; Source/WebKit/UIProcess/Cocoa/WKStorageAccessAlert.mm:43
&gt; &gt; &gt; +    builder.append(String([NSString stringWithFormat:@&quot;â and â&quot;]));
&gt; &gt; 
&gt; &gt; Same comment on weird characters.
&gt; 
&gt; :( 
&gt; 
&gt; 
&gt; Thanks for the comments!

You&apos;re welcome! r=me with the above requested changes and requirements.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1715219</commentid>
    <comment_count>6</comment_count>
    <who name="Kate Cheney">katherine_cheney</who>
    <bug_when>2020-12-16 13:36:54 -0800</bug_when>
    <thetext>(In reply to John Wilander from comment #5)
&gt; (In reply to katherine_cheney from comment #4)
&gt; &gt; (In reply to John Wilander from comment #3)
&gt; &gt; &gt; Comment on attachment 416278 [details]
&gt; &gt; &gt; Patch
&gt; &gt; &gt; 
&gt; &gt; &gt; View in context:
&gt; &gt; &gt; https://bugs.webkit.org/attachment.cgi?id=416278&amp;action=review
&gt; &gt; &gt; 
&gt; &gt; &gt; We&apos;re still limiting this to specific domains *in code*, right? So that
&gt; &gt; &gt; manipulation of the database cannot be used to grant persistent third-party
&gt; &gt; &gt; cookie access?
&gt; &gt; &gt; 
&gt; &gt; 
&gt; &gt; I&apos;m not sure I understand exactly what you mean. These domains have to be
&gt; &gt; stored in the database in order to be persistent between sessions, I don&apos;t
&gt; &gt; think we can avoid that. 
&gt; 
&gt; These are special, quirks permissions. We have to make sure to restrict
&gt; those permissions are enforced in code and not just in the database. If the
&gt; database says that ThirdParty.example should have persistent third-party
&gt; cookie access under news.example, the code should reject it. We have to make
&gt; sure in code to restrict this functionality only to the specific sites we
&gt; build quirks for.

Oh! Yes, that is definitely enforced. It is not possible to manipulate the database to grant storage access for any other domains -- there are hard-coded checks for the Sony domains under playstation.com while reading data from the db into memory.


&gt; &gt; Thanks for the comments!
&gt; 
&gt; You&apos;re welcome! r=me with the above requested changes and requirements.

thanks! Will fix before landing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1715228</commentid>
    <comment_count>7</comment_count>
      <attachid>416278</attachid>
    <who name="Kate Cheney">katherine_cheney</who>
    <bug_when>2020-12-16 13:58:21 -0800</bug_when>
    <thetext>Comment on attachment 416278
Patch

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

&gt;&gt;&gt; Source/WebKit/UIProcess/Cocoa/UIDelegate.mm:352
&gt;&gt;&gt; +    builder.append(String([NSString stringWithFormat:@&quot;â and â&quot;]));
&gt;&gt; 
&gt;&gt; I don&apos;t understand this. Some Unicode getting garbled?
&gt; 
&gt; Strange, it is converting slanty quotes to these characters. I wonder if it is only the diff technology that is showing them like that? Will investigate.

Did some investigating -- see https://bugs.webkit.org/show_bug.cgi?id=197370. It is just the diff technology that makes the characters look strange. They are curly quotes when they print in the user-facing Storage Access prompt.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1715236</commentid>
    <comment_count>8</comment_count>
      <attachid>416364</attachid>
    <who name="Kate Cheney">katherine_cheney</who>
    <bug_when>2020-12-16 14:39:43 -0800</bug_when>
    <thetext>Created attachment 416364
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1715243</commentid>
    <comment_count>9</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2020-12-16 15:14:46 -0800</bug_when>
    <thetext>Committed r270912: &lt;https://trac.webkit.org/changeset/270912&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 416364.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1715257</commentid>
    <comment_count>10</comment_count>
      <attachid>416364</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-12-16 16:21:47 -0800</bug_when>
    <thetext>Comment on attachment 416364
Patch for landing

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

&gt; Source/WebKit/UIProcess/Cocoa/UIDelegate.mm:348
&gt; +static String buildListForStorageAccessPrompt(const WebCore::RegistrableDomain subDomainOne, const WebCore::RegistrableDomain subDomainTwo)

I think you left out some &amp; characters here.

&gt; Source/WebKit/UIProcess/Cocoa/UIDelegate.mm:354
&gt; +    StringBuilder builder;
&gt; +    builder.append(subDomainOne.string());
&gt; +    builder.append(String([NSString stringWithFormat:@&quot;â and â&quot;]));
&gt; +    builder.append(subDomainTwo.string());
&gt; +    return builder.toString();

This should be doable with makeString rather than StringBuilder, which is more efficient. Also, there’s no reason to use NSString here. Could just write this:

    return makeString(subdomainOne.string(), rightDoubleQuotationMark, &quot; and &quot;, leftDoubleQuotationMark, subdomainTwo.string());

But also, I am concerned about the way we are building this string. Does not seem localizable. It’s a bit of a hack to end and then reopen the quotation mark like this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1715282</commentid>
    <comment_count>11</comment_count>
    <who name="Kate Cheney">katherine_cheney</who>
    <bug_when>2020-12-16 18:08:48 -0800</bug_when>
    <thetext>Reopening to attach new patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1715283</commentid>
    <comment_count>12</comment_count>
      <attachid>416377</attachid>
    <who name="Kate Cheney">katherine_cheney</who>
    <bug_when>2020-12-16 18:08:50 -0800</bug_when>
    <thetext>Created attachment 416377
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1715284</commentid>
    <comment_count>13</comment_count>
      <attachid>416364</attachid>
    <who name="Kate Cheney">katherine_cheney</who>
    <bug_when>2020-12-16 18:09:30 -0800</bug_when>
    <thetext>Comment on attachment 416364
Patch for landing

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

&gt;&gt; Source/WebKit/UIProcess/Cocoa/UIDelegate.mm:348
&gt;&gt; +static String buildListForStorageAccessPrompt(const WebCore::RegistrableDomain subDomainOne, const WebCore::RegistrableDomain subDomainTwo)
&gt; 
&gt; I think you left out some &amp; characters here.

You&apos;re right, I removed this function entirely in my latest patch.

&gt;&gt; Source/WebKit/UIProcess/Cocoa/UIDelegate.mm:354
&gt;&gt; +    return builder.toString();
&gt; 
&gt; This should be doable with makeString rather than StringBuilder, which is more efficient. Also, there’s no reason to use NSString here. Could just write this:
&gt; 
&gt;     return makeString(subdomainOne.string(), rightDoubleQuotationMark, &quot; and &quot;, leftDoubleQuotationMark, subdomainTwo.string());
&gt; 
&gt; But also, I am concerned about the way we are building this string. Does not seem localizable. It’s a bit of a hack to end and then reopen the quotation mark like this.

Good point. Let me know what you think of the latest patch I uploaded, I think it should fix the localizable string issue.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1715415</commentid>
    <comment_count>14</comment_count>
      <attachid>416429</attachid>
    <who name="Kate Cheney">katherine_cheney</who>
    <bug_when>2020-12-17 09:32:57 -0800</bug_when>
    <thetext>Created attachment 416429
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1715449</commentid>
    <comment_count>15</comment_count>
      <attachid>416437</attachid>
    <who name="Kate Cheney">katherine_cheney</who>
    <bug_when>2020-12-17 11:02:17 -0800</bug_when>
    <thetext>Created attachment 416437
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1715466</commentid>
    <comment_count>16</comment_count>
      <attachid>416437</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-12-17 11:35:12 -0800</bug_when>
    <thetext>Comment on attachment 416437
Patch

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

&gt; Source/WebKit/UIProcess/Cocoa/WKStorageAccessAlert.mm:67
&gt; +#if PLATFORM(MAC)
&gt; +    NSString *alertTitle = [NSString stringWithFormat:WEB_UI_NSSTRING(@&quot;Do you want to allow â%@â and â%@â to use cookies and website data while browsing â%@â?&quot;, @&quot;Message for requesting cross-site cookie and website data access.&quot;), firstRequestingDomain.get(), secondRequestingDomain.get(), currentDomain.get()];
&gt; +#else
&gt; +    NSString *alertTitle = [NSString stringWithFormat:WEB_UI_NSSTRING(@&quot;Allow â%@â and â%@â to use cookies and website data while browsing â%@â?&quot;, @&quot;Message for requesting cross-site cookie and website data access.&quot;), firstRequestingDomain.get(), secondRequestingDomain.get(), currentDomain.get()];
&gt; +#endif
&gt; +
&gt; +    NSString *informativeText = [NSString stringWithFormat:WEB_UI_NSSTRING(@&quot;This will allow â%@â and â%@â to track your activity.&quot;, @&quot;Informative text for requesting cross-site cookie and website data access.&quot;), firstRequestingDomain.get(), secondRequestingDomain.get()];

I’m a bit puzzled about the use, here and elsewhere, of +[NSString stringWithFormat:] instead of +[NSString localizedStringWithFormat:] since these are uses of formatting for localization. It’s possible that this doesn’t matter in the case where the only format used is %@.

I’m also sort of wishing that a little bit more of this code was cross-platform.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1715519</commentid>
    <comment_count>17</comment_count>
    <who name="Kate Cheney">katherine_cheney</who>
    <bug_when>2020-12-17 13:19:18 -0800</bug_when>
    <thetext>(In reply to Darin Adler from comment #16)
&gt; Comment on attachment 416437 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=416437&amp;action=review
&gt; 
&gt; &gt; Source/WebKit/UIProcess/Cocoa/WKStorageAccessAlert.mm:67
&gt; &gt; +#if PLATFORM(MAC)
&gt; &gt; +    NSString *alertTitle = [NSString stringWithFormat:WEB_UI_NSSTRING(@&quot;Do you want to allow â%@â and â%@â to use cookies and website data while browsing â%@â?&quot;, @&quot;Message for requesting cross-site cookie and website data access.&quot;), firstRequestingDomain.get(), secondRequestingDomain.get(), currentDomain.get()];
&gt; &gt; +#else
&gt; &gt; +    NSString *alertTitle = [NSString stringWithFormat:WEB_UI_NSSTRING(@&quot;Allow â%@â and â%@â to use cookies and website data while browsing â%@â?&quot;, @&quot;Message for requesting cross-site cookie and website data access.&quot;), firstRequestingDomain.get(), secondRequestingDomain.get(), currentDomain.get()];
&gt; &gt; +#endif
&gt; &gt; +
&gt; &gt; +    NSString *informativeText = [NSString stringWithFormat:WEB_UI_NSSTRING(@&quot;This will allow â%@â and â%@â to track your activity.&quot;, @&quot;Informative text for requesting cross-site cookie and website data access.&quot;), firstRequestingDomain.get(), secondRequestingDomain.get()];
&gt; 
&gt; I’m a bit puzzled about the use, here and elsewhere, of +[NSString
&gt; stringWithFormat:] instead of +[NSString localizedStringWithFormat:] since
&gt; these are uses of formatting for localization. It’s possible that this
&gt; doesn’t matter in the case where the only format used is %@.
&gt; 

It seems like WEB_UI_NSSTRING performs the localization of the string. I am not sure why but [NSString localizedStringWithFormat:] is used in very few places.

&gt; I’m also sort of wishing that a little bit more of this code was
&gt; cross-platform.

me too. That is something to consider for a future upgrade to this code.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1715521</commentid>
    <comment_count>18</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2020-12-17 13:22:51 -0800</bug_when>
    <thetext>Committed r270942: &lt;https://trac.webkit.org/changeset/270942&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 416437.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1715524</commentid>
    <comment_count>19</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-12-17 13:40:40 -0800</bug_when>
    <thetext>(In reply to katherine_cheney from comment #17)
&gt; It seems like WEB_UI_NSSTRING performs the localization of the string.

Yes, that’s right.

&gt; I am
&gt; not sure why but [NSString localizedStringWithFormat:] is used in very few
&gt; places.

I think it mostly affects numeric formatting, like swapping the use of &quot;,&quot; and &quot;.&quot; in countries where one is the thousands separator vs. the decimal separator.

So probably no better than +[NSString stringWithFormat:] in most contexts. But I think I’d lean toward using it any time what we are formatting is a localized string for the user.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>416278</attachid>
            <date>2020-12-15 12:29:48 -0800</date>
            <delta_ts>2020-12-16 14:39:41 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-219900-20201215122947.patch</filename>
            <type>text/plain</type>
            <size>27688</size>
            <attacher name="Kate Cheney">katherine_cheney</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcwODM5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjk5YjViNTc0MmQzMTJl
NmNkZjk3N2VlNmJjY2Q1OTU1MzRkMDA4ZC4uZmJhOGY3ZGU3MWQzMjczZjlhNDgyMzQyMWE0NDFh
NGQ3M2YxZDg4YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU2IEBACisyMDIwLTEyLTE1ICBLYXRl
IENoZW5leSAgPGthdGhlcmluZV9jaGVuZXlAYXBwbGUuY29tPgorCisgICAgICAgIFN0aWxsIGNh
bid0IGxvZ2luIHRvIG15LnBsYXlzdGF0aW9uLmNvbQorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE5OTAwCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS83
MjA2Mjk4NT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBBZGFwdGVkIGZyb20gYW4gb3JpZ2luYWwgcGF0Y2ggYnkgSm9obiBXaWxhbmRlci4KKworICAg
ICAgICBUaGlzIGlzIGEgdGVtcG9yYXJ5IHF1aXJrIHRvIGFzc2lzdCBhIGhpZ2gtdHJhZmZpYyB3
ZWJzaXRlIHdoaWxlIHRoZXkKKyAgICAgICAgY29tcGxldGUgdGhlIGxhcmdlIHRhc2sgb2YgbWln
cmF0aW5nIGF3YXkgZnJvbSBsb2dpbiBmbG93cyB0aGF0CisgICAgICAgIHJlcXVpcmUgdGhpcmQg
cGFydHkgY29va2llcy4gVGhpcyBxdWlyayB3aWxsIGJlIHJlbW92ZWQgd2hlbiB0aGUgc2l0ZQor
ICAgICAgICBpcyB1cGRhdGVkLgorCisgICAgICAgIENyZWF0ZSBhIHF1aXJrIHRvIGNhbGwgdGhl
IFN0b3JhZ2UgQWNjZXNzIEFQSSBvbiBiZWhhbGYgb2YgU29ueS4gVGhpcworICAgICAgICBjYXNl
IGlzIHVuaXF1ZSBiZWNhdXNlIHBsYXlzdGF0aW9uLmNvbSByZXF1aXJlcyBzdG9yYWdlIGFjY2Vz
cyBmb3IgMgorICAgICAgICBsb2dpbiBkb21haW5zOiBzb255LmNvbSBhbmQgc29ueWVudGVydGFp
bm1lbnRuZXR3b3JrLmNvbS4gVGhpcyBwYXRjaAorICAgICAgICBoYW5kbGVzIHRoaXMgYnkgcmVx
dWVzdGluZyBzdG9yYWdlIGFjY2VzcyBmb3IgYm90aCBkb21haW5zIGlmIGVpdGhlcgorICAgICAg
ICBkb21haW4gaXMgcmVxdWVzdGVkIHRvIGF2b2lkIG1hc3NpdmUgY2hhbmdlcyB0byB0aGUgU3Rv
cmFnZSBBY2Nlc3MKKyAgICAgICAgY29kZSB0byBoYW5kbGUgbXVsdGlwbGUgZG9tYWlucyBhdCBv
bmNlLgorCisgICAgICAgIFRoaXMgcGF0Y2ggYWRqdXN0cyB0aGUgcXVpcmsgY29kZSBpbiBOZXR3
b3JrU3RvcmFnZVNlc3Npb24gdG8gaGFuZGxlCisgICAgICAgIG11bHRpcGxlIGxvZ2luIGRvbWFp
bnMgZm9yIGEgc2luZ2xlIGZpcnN0IHBhcnR5IGRvbWFpbi4KKworICAgICAgICBObyBuZXcgdGVz
dHMsIHNpdGUgc3BlY2lmaWMgcXVpcmsuCisKKyAgICAgICAgKiBsb2FkZXIvRG9jdW1lbnRMb2Fk
ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXI6OnJlc3BvbnNlUmVjZWl2
ZWQpOgorICAgICAgICAqIHBhZ2UvUXVpcmtzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmlzUGxh
eXN0YXRpb25Mb2dpbkVsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6UXVpcmtzOjpoYXNTdG9y
YWdlQWNjZXNzRm9yQWxsTG9naW5Eb21haW5zKToKKyAgICAgICAgKFdlYkNvcmU6OlF1aXJrczo6
dHJpZ2dlck9wdGlvbmFsU3RvcmFnZUFjY2Vzc1F1aXJrIGNvbnN0KToKKyAgICAgICAgQWRqdXN0
IHRoZSBleGlzdGluZyBxdWlya3MgdG8gaGFuZGxlIHRoZSBuZXcgZm9ybWF0IG9mIGEgSGFzaFNl
dCBvZgorICAgICAgICBsb2dpbiBkb21haW5zLCBhbmQgYWRkIHRoZSBuZXcgcGxheXN0YXRpb24u
Y29tIGNhc2UuCisKKyAgICAgICAgKiBwYWdlL1F1aXJrcy5oOgorICAgICAgICAqIHBsYXRmb3Jt
L25ldHdvcmsvTmV0d29ya1N0b3JhZ2VTZXNzaW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok5l
dHdvcmtTdG9yYWdlU2Vzc2lvbjo6Z3JhbnRDcm9zc1BhZ2VTdG9yYWdlQWNjZXNzKToKKyAgICAg
ICAgKFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6aGFzU3RvcmFnZUFjY2VzcyBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb246OnN0b3JhZ2VBY2Nl
c3NRdWlya3MpOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpsb2dp
bkRvbWFpbk1hdGNoZXNSZXF1ZXN0aW5nRG9tYWluKToKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdv
cmtTdG9yYWdlU2Vzc2lvbjo6bG9naW5Eb21haW5zRm9yRmlyc3RQYXJ0eSk6CisgICAgICAgIChX
ZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb246OmZpbmRBZGRpdGlvbmFsTG9naW5Eb21haW4p
OgorICAgICAgICBGdW5jdGlvbiB0byBtYXRjaCB1cCBTb255IGxvZ2luIGRvbWFpbnMgd2l0aCBv
bmUgYW5vdGhlciBhdCBzdG9yYWdlCisgICAgICAgIGVuZHBvaW50cyBhbmQgZm9yIHByb21wdGlu
ZyBzbyB3ZSBkb24ndCBuZWVkIHRvIHRocmVhZCB0aGVtIHRocm91Z2gKKyAgICAgICAgYWxsIG9m
IHRoZSBleGlzdGluZyBzdG9yYWdlIGFjY2VzcyBjb2RlLgorCisgICAgICAgIChXZWJDb3JlOjpO
ZXR3b3JrU3RvcmFnZVNlc3Npb246OmxvZ2luRG9tYWluRm9yRmlyc3RQYXJ0eSk6IFJlbmFtZWQg
dG8gYmUgcGx1cmFsLgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvTmV0d29ya1N0b3JhZ2VT
ZXNzaW9uLmg6CisgICAgICAgIEFkanVzdGVkIGV4aXN0aW5nIHF1aXJrIGNvZGUgdG8gaGFuZGxl
IGEgSGFzaFNldCBvZiBsb2dpbiBkb21haW5zCisgICAgICAgIGluc3RlYWQgb2YgYSBzaW5nbGUg
ZG9tYWluLgorCiAyMDIwLTEyLTE1ICBaYWxhbiBCdWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+CiAK
ICAgICAgICAgUkVHUkVTU0lPTjogYXBwbGUuY29tIHNpZ24taW4gcGFnZSBmb290ZXIgZG9lcyBu
b3Qgd3JhcCwgIlNpdGUgTWFwIiBvcHRpb24gcmVuZGVycyBvZmZzY3JlZW4uCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4
IGVhMDVkMjU0OGUyZTU3MzNhMzViMDgyMjFjOGRmODMwYmExMjc5MjEuLmI3OWNiNThiNWUyMmM5
MDBiMjkzMDdkYjEyODE1YjhjODVlZTkwNDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hh
bmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDAgQEAKKzIw
MjAtMTItMTUgIEthdGUgQ2hlbmV5ICA8a2F0aGVyaW5lX2NoZW5leUBhcHBsZS5jb20+CisKKyAg
ICAgICAgU3RpbGwgY2FuJ3QgbG9naW4gdG8gbXkucGxheXN0YXRpb24uY29tCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTk5MDAKKyAgICAgICAgPHJk
YXI6Ly9wcm9ibGVtLzcyMDYyOTg1PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIEFkYXB0ZWQgZnJvbSBhbiBvcmlnaW5hbCBwYXRjaCBieSBKb2huIFdp
bGFuZGVyLgorCisgICAgICAgIFRoaXMgaXMgYSB0ZW1wb3JhcnkgcXVpcmsgdG8gYXNzaXN0IGEg
aGlnaC10cmFmZmljIHdlYnNpdGUgd2hpbGUgdGhleQorICAgICAgICBjb21wbGV0ZSB0aGUgbGFy
Z2UgdGFzayBvZiBtaWdyYXRpbmcgYXdheSBmcm9tIGxvZ2luIGZsb3dzIHRoYXQKKyAgICAgICAg
cmVxdWlyZSB0aGlyZCBwYXJ0eSBjb29raWVzLiBUaGlzIHF1aXJrIHdpbGwgYmUgcmVtb3ZlZCB3
aGVuIHRoZSBzaXRlCisgICAgICAgIGlzIHVwZGF0ZWQuCisKKyAgICAgICAgQ3JlYXRlIGEgcXVp
cmsgdG8gY2FsbCB0aGUgU3RvcmFnZSBBY2Nlc3MgQVBJIG9uIGJlaGFsZiBvZiBTb255LgorCisg
ICAgICAgICogVUlQcm9jZXNzL0NvY29hL1VJRGVsZWdhdGUubW06CisgICAgICAgIChXZWJLaXQ6
OmJ1aWxkTGlzdCk6CisgICAgICAgIChXZWJLaXQ6OlVJRGVsZWdhdGU6OlVJQ2xpZW50OjpyZXF1
ZXN0U3RvcmFnZUFjY2Vzc0NvbmZpcm0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9XS1N0
b3JhZ2VBY2Nlc3NBbGVydC5tbToKKyAgICAgICAgKFdlYktpdDo6YnVpbGRMaXN0KToKKyAgICAg
ICAgKFdlYktpdDo6cHJlc2VudFN0b3JhZ2VBY2Nlc3NBbGVydCk6CisgICAgICAgIFByb21wdCBm
b3IgbXVsdGlwbGUgZG9tYWlucyBpZiBzaXRlLXNwZWNpZmljIHF1aXJrcyBhcmUgZW5hYmxlZCBh
bmQKKyAgICAgICAgZWl0aGVyIFNvbnkgbG9naW4gZG9tYWluIGlzIGJlaW5nIHJlcXVlc3RlZC4K
KworICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUmVzb3VyY2VMb2FkT2Jz
ZXJ2ZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJSZXNvdXJjZUxvYWRPYnNlcnZlcjo6aGFz
Q3Jvc3NQYWdlU3RvcmFnZUFjY2VzcyBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OldlYlJlc291
cmNlTG9hZE9ic2VydmVyOjpzZXREb21haW5zV2l0aENyb3NzUGFnZVN0b3JhZ2VBY2Nlc3MpOgor
ICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUmVzb3VyY2VMb2FkT2JzZXJ2
ZXIuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHA6CisgICAgICAg
IChXZWJLaXQ6OldlYlBhZ2U6OmFkZERvbWFpbldpdGhQYWdlTGV2ZWxTdG9yYWdlQWNjZXNzKToK
KyAgICAgICAgU3RvcmUgYm90aCBTb255IGxvZ2luIGRvbWFpbnMgYXMgaGF2aW5nIHBhZ2UgbGV2
ZWwgc3RvcmFnZSBhY2Nlc3MgaWYKKyAgICAgICAgcXVpcmtzIGFyZSBlbmFibGVkIGFuZCB0aGUg
ZG9tYWluIHBhc3NlZCBpcyBvbmUgb2YgdGhlIFNvbnkgbG9naW4KKyAgICAgICAgZG9tYWlucy4g
SW4gdGhpcyBjYXNlIHdlIGtub3cgdGhhdCBib3RoIGxvZ2luIGRvbWFpbnMgd2VyZSBwcm9tcHRl
ZAorICAgICAgICBmb3IuCisKIDIwMjAtMTItMTUgIFBlciBBcm5lIFZvbGxhbiAgPHB2b2xsYW5A
YXBwbGUuY29tPgogCiAgICAgICAgIFttYWNPU10gQWRkIHNhbmRib3ggcGFyYW1ldGVyIGZvciBt
ZXNzYWdlIGZpbHRlciBlbnRpdGxlbWVudCBzdGF0dXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9j
dW1lbnRMb2FkZXIuY3BwCmluZGV4IDI2ODk0ZjM5ZjRlNjlmZThiNzMwMDc4ZGI3ODFlYjJkZWZk
OGZmNTUuLmYxMTI4MDYzOTk2NjVhOGQ0ODc2Y2RkOTc3MDUzMzBlMjk5NGEyYTIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcApAQCAtODA0LDggKzgwNCw4IEBAIHZv
aWQgRG9jdW1lbnRMb2FkZXI6OnJlc3BvbnNlUmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2UmIHJlc291
cmNlLCBjb25zdCBSZXNvdXJjZVJlCiAgICAgICAgIGF1dG8mIGRvY3VtZW50ID0gKm1fZnJhbWUt
PmRvY3VtZW50KCk7CiAgICAgICAgIGlmIChRdWlya3M6OmlzTWljcm9zb2Z0VGVhbXNSZWRpcmVj
dFVSTChyZXNwb25zZS51cmwoKSkpIHsKICAgICAgICAgICAgIGF1dG8gZmlyc3RQYXJ0eURvbWFp
biA9IFJlZ2lzdHJhYmxlRG9tYWluKHJlc3BvbnNlLnVybCgpKTsKLSAgICAgICAgICAgIGlmIChh
dXRvIGxvZ2luRG9tYWluID0gTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpsb2dpbkRvbWFpbkZvckZp
cnN0UGFydHkoZmlyc3RQYXJ0eURvbWFpbikpIHsKLSAgICAgICAgICAgICAgICBpZiAoIVJlc291
cmNlTG9hZE9ic2VydmVyOjpzaGFyZWQoKS5oYXNDcm9zc1BhZ2VTdG9yYWdlQWNjZXNzKCpsb2dp
bkRvbWFpbiwgZmlyc3RQYXJ0eURvbWFpbikpIHsKKyAgICAgICAgICAgIGlmIChhdXRvIGxvZ2lu
RG9tYWlucyA9IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6bG9naW5Eb21haW5zRm9yRmlyc3RQYXJ0
eShmaXJzdFBhcnR5RG9tYWluKSkgeworICAgICAgICAgICAgICAgIGlmICghUXVpcmtzOjpoYXNT
dG9yYWdlQWNjZXNzRm9yQWxsTG9naW5Eb21haW5zKCpsb2dpbkRvbWFpbnMsIGZpcnN0UGFydHlE
b21haW4pKSB7CiAgICAgICAgICAgICAgICAgICAgIG1fZnJhbWUtPm5hdmlnYXRpb25TY2hlZHVs
ZXIoKS5zY2hlZHVsZVJlZGlyZWN0KGRvY3VtZW50LCAwLCBtaWNyb3NvZnRUZWFtc1JlZGlyZWN0
VVJMKCkpOwogICAgICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICAgICAgfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9RdWlya3MuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9RdWlya3MuY3BwCmluZGV4IDZjMDQ3YmZkZTJiZmUwZDQ0ZGJhNDVmZDFiZGMxMGFk
NTUyNzgzMGIuLmM2YzEwMjY1ZWQyZDNkNTYwYzNlOWYwMTI5N2I3MTQ3ZDZkMmMwZWUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUXVpcmtzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL1F1aXJrcy5jcHAKQEAgLTk4Myw2ICs5ODMsMjUgQEAgYm9vbCBRdWlya3M6OmlzTWlj
cm9zb2Z0VGVhbXNSZWRpcmVjdFVSTChjb25zdCBVUkwmIHVybCkKIHsKICAgICByZXR1cm4gdXJs
Lmhvc3QoKSA9PSAidGVhbXMubWljcm9zb2Z0LmNvbSJfcyAmJiB1cmwucXVlcnkoKS50b1N0cmlu
ZygpLmNvbnRhaW5zKCJSZXRyaWVkKzMrdGltZXMrd2l0aG91dCtzdWNjZXNzIik7CiB9CisKK3N0
YXRpYyBib29sIGlzUGxheXN0YXRpb25Mb2dpbkVsZW1lbnQoY29uc3QgRWxlbWVudCYgZWxlbWVu
dCkKK3sKKyAgICBpZiAoIWVsZW1lbnQuaGFzQ2xhc3MoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNl
OworCisgICAgYXV0byYgY2xhc3NOYW1lcyA9IGVsZW1lbnQuY2xhc3NOYW1lcygpOworICAgIHJl
dHVybiBjbGFzc05hbWVzLmNvbnRhaW5zKCJ3ZWItdG9vbGJhcl9fc2lnbmluLWJ1dHRvbiIpIHx8
IGNsYXNzTmFtZXMuY29udGFpbnMoInNiLXNpZ25pbi1idXR0b24iKTsKK30KKworYm9vbCBRdWly
a3M6Omhhc1N0b3JhZ2VBY2Nlc3NGb3JBbGxMb2dpbkRvbWFpbnMoY29uc3QgSGFzaFNldDxSZWdp
c3RyYWJsZURvbWFpbj4mIGxvZ2luRG9tYWlucywgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHRv
cEZyYW1lRG9tYWluKQoreworICAgIGZvciAoYXV0byYgbG9naW5Eb21haW4gOiBsb2dpbkRvbWFp
bnMpIHsKKyAgICAgICAgaWYgKCFSZXNvdXJjZUxvYWRPYnNlcnZlcjo6c2hhcmVkKCkuaGFzQ3Jv
c3NQYWdlU3RvcmFnZUFjY2Vzcyhsb2dpbkRvbWFpbiwgdG9wRnJhbWVEb21haW4pKQorICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAgICByZXR1cm4gdHJ1ZTsKK30KKwogI2VuZGlm
CiAKIFF1aXJrczo6U3RvcmFnZUFjY2Vzc1Jlc3VsdCBRdWlya3M6OnRyaWdnZXJPcHRpb25hbFN0
b3JhZ2VBY2Nlc3NRdWlyayhFbGVtZW50JiBlbGVtZW50LCBjb25zdCBQbGF0Zm9ybU1vdXNlRXZl
bnQmIHBsYXRmb3JtRXZlbnQsIGNvbnN0IEF0b21TdHJpbmcmIGV2ZW50VHlwZSwgaW50IGRldGFp
bCwgRWxlbWVudCogcmVsYXRlZFRhcmdldCkgY29uc3QKQEAgLTEwNjAsMTEgKzEwNzksMzQgQEAg
UXVpcmtzOjpTdG9yYWdlQWNjZXNzUmVzdWx0IFF1aXJrczo6dHJpZ2dlck9wdGlvbmFsU3RvcmFn
ZUFjY2Vzc1F1aXJrKEVsZW1lbnQmIGUKICAgICAgICAgLy8gRklYTUUoMjE4Nzc5KTogUmVtb3Zl
IHRoaXMgcXVpcmsgb25jZSBtaWNyb3NvZnQuY29tIGNvbXBsZXRlcyB0aGVpciBsb2dpbiBmbG93
IHJlZGVzaWduLgogICAgICAgICBpZiAoaXNNaWNyb3NvZnREb21haW4oZG9tYWluKSAmJiBpc01p
Y3Jvc29mdExvZ2luRWxlbWVudChlbGVtZW50KSkgewogICAgICAgICAgICAgYXV0byBmaXJzdFBh
cnR5RG9tYWluID0gTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjptYXBUb1RvcERvbWFpbihSZWdpc3Ry
YWJsZURvbWFpbjo6dW5jaGVja2VkQ3JlYXRlRnJvbUhvc3QobV9kb2N1bWVudC0+dG9wRG9jdW1l
bnQoKS5zZWN1cml0eU9yaWdpbigpLmhvc3QoKSkpOwotICAgICAgICAgICAgaWYgKGF1dG8gbG9n
aW5Eb21haW4gPSBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmxvZ2luRG9tYWluRm9yRmlyc3RQYXJ0
eShmaXJzdFBhcnR5RG9tYWluKSkgewotICAgICAgICAgICAgICAgIGlmICghUmVzb3VyY2VMb2Fk
T2JzZXJ2ZXI6OnNoYXJlZCgpLmhhc0Nyb3NzUGFnZVN0b3JhZ2VBY2Nlc3MoKmxvZ2luRG9tYWlu
LCBmaXJzdFBhcnR5RG9tYWluKSkgewotICAgICAgICAgICAgICAgICAgICBEb2N1bWVudFN0b3Jh
Z2VBY2Nlc3M6OnJlcXVlc3RTdG9yYWdlQWNjZXNzRm9yTm9uRG9jdW1lbnRRdWlyaygqbV9kb2N1
bWVudCwgV1RGTW92ZSgqbG9naW5Eb21haW4pLCBbZmlyc3RQYXJ0eURvbWFpbiwgbG9naW5Eb21h
aW4sICZlbGVtZW50LCBwbGF0Zm9ybUV2ZW50LCBldmVudFR5cGUsIGRldGFpbCwgcmVsYXRlZFRh
cmdldF0oU3RvcmFnZUFjY2Vzc1dhc0dyYW50ZWQgc3RvcmFnZUFjY2Vzc0dyYW50ZWQpIG11dGFi
bGUgeworICAgICAgICAgICAgaWYgKGF1dG8gbG9naW5Eb21haW5zID0gTmV0d29ya1N0b3JhZ2VT
ZXNzaW9uOjpsb2dpbkRvbWFpbnNGb3JGaXJzdFBhcnR5KGZpcnN0UGFydHlEb21haW4pKSB7Cisg
ICAgICAgICAgICAgICAgaWYgKCFoYXNTdG9yYWdlQWNjZXNzRm9yQWxsTG9naW5Eb21haW5zKCps
b2dpbkRvbWFpbnMsIGZpcnN0UGFydHlEb21haW4pKSB7CisgICAgICAgICAgICAgICAgICAgIGF1
dG8gbG9naW5Eb21haW4gPSBSZWdpc3RyYWJsZURvbWFpbigqbG9naW5Eb21haW5zLnZhbHVlKCku
YmVnaW4oKS5nZXQoKSk7CisgICAgICAgICAgICAgICAgICAgIERvY3VtZW50U3RvcmFnZUFjY2Vz
czo6cmVxdWVzdFN0b3JhZ2VBY2Nlc3NGb3JOb25Eb2N1bWVudFF1aXJrKCptX2RvY3VtZW50LCBX
VEZNb3ZlKGxvZ2luRG9tYWluKSwgW2ZpcnN0UGFydHlEb21haW4sIGxvZ2luRG9tYWluLCAmZWxl
bWVudCwgcGxhdGZvcm1FdmVudCwgZXZlbnRUeXBlLCBkZXRhaWwsIHJlbGF0ZWRUYXJnZXRdKFN0
b3JhZ2VBY2Nlc3NXYXNHcmFudGVkIHN0b3JhZ2VBY2Nlc3NHcmFudGVkKSBtdXRhYmxlIHsKKyAg
ICAgICAgICAgICAgICAgICAgICAgIGlmIChzdG9yYWdlQWNjZXNzR3JhbnRlZCA9PSBTdG9yYWdl
QWNjZXNzV2FzR3JhbnRlZDo6WWVzKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgUmVz
b3VyY2VMb2FkT2JzZXJ2ZXI6OnNoYXJlZCgpLnNldERvbWFpbnNXaXRoQ3Jvc3NQYWdlU3RvcmFn
ZUFjY2Vzcyh7eyBmaXJzdFBhcnR5RG9tYWluLCBsb2dpbkRvbWFpbiB9fSwgWyZlbGVtZW50LCBw
bGF0Zm9ybUV2ZW50LCBldmVudFR5cGUsIGRldGFpbCwgcmVsYXRlZFRhcmdldF0geworICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBlbGVtZW50LmRpc3BhdGNoTW91c2VFdmVudChwbGF0
Zm9ybUV2ZW50LCBldmVudFR5cGUsIGRldGFpbCwgcmVsYXRlZFRhcmdldCk7CisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAg
ICAgICAgICAgICAgIH0pOworICAgICAgICAgICAgICAgICAgICByZXR1cm4gUXVpcmtzOjpTdG9y
YWdlQWNjZXNzUmVzdWx0OjpTaG91bGRDYW5jZWxFdmVudDsKKyAgICAgICAgICAgICAgICB9Cisg
ICAgICAgICAgICB9CisgICAgICAgICAgICByZXR1cm4gUXVpcmtzOjpTdG9yYWdlQWNjZXNzUmVz
dWx0OjpTaG91bGROb3RDYW5jZWxFdmVudDsKKyAgICAgICAgfQorCisgICAgICAgIC8vIFNvbnkg
TmV0d29yayBFbnRlcnRhaW5tZW50IGxvZ2luIGNhc2UuCisgICAgICAgIC8vIEZJWE1FKDIxODc2
MCk6IFJlbW92ZSB0aGlzIHF1aXJrIG9uY2UgcGxheXN0YXRpb24uY29tIGNvbXBsZXRlcyB0aGVp
ciBsb2dpbiBmbG93IHJlZGVzaWduLgorICAgICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8UmVn
aXN0cmFibGVEb21haW4+IHBsYXlTdGF0aW9uRG9tYWluID0gUmVnaXN0cmFibGVEb21haW46OnVu
Y2hlY2tlZENyZWF0ZUZyb21SZWdpc3RyYWJsZURvbWFpblN0cmluZygicGxheXN0YXRpb24uY29t
Il9zKTsKKyAgICAgICAgaWYgKGRvbWFpbiA9PSBwbGF5U3RhdGlvbkRvbWFpbiAmJiBpc1BsYXlz
dGF0aW9uTG9naW5FbGVtZW50KGVsZW1lbnQpKSB7CisgICAgICAgICAgICBpZiAoYXV0byBsb2dp
bkRvbWFpbnMgPSBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmxvZ2luRG9tYWluc0ZvckZpcnN0UGFy
dHkoZG9tYWluKSkgeworICAgICAgICAgICAgICAgIGlmICghaGFzU3RvcmFnZUFjY2Vzc0ZvckFs
bExvZ2luRG9tYWlucygqbG9naW5Eb21haW5zLCBkb21haW4pKSB7CisgICAgICAgICAgICAgICAg
ICAgIC8vIFNlbmQgb25seSBvbmUgbG9naW4gZG9tYWluIHRvIGF2b2lkIGNoYW5naW5nIGV4aXN0
aW5nIFN0b3JhZ2UgQWNjZXNzIGNvZGUsIHdoaWNoIGNhbiBvbmx5IGhhbmRsZSBhIHNpbmdsZSBk
b21haW4uCisgICAgICAgICAgICAgICAgICAgIC8vIFdlIHdpbGwgbWF0Y2ggU29ueSBsb2dpbiBk
b21haW5zIHVwIHdoZW4gcHJvbXB0aW5nIHRoZSB1c2VyIGFuZCBzdG9yaW5nIHRoZSBkb21haW5z
LgorICAgICAgICAgICAgICAgICAgICBhdXRvIGxvZ2luRG9tYWluID0gUmVnaXN0cmFibGVEb21h
aW4oKmxvZ2luRG9tYWlucy52YWx1ZSgpLmJlZ2luKCkuZ2V0KCkpOworICAgICAgICAgICAgICAg
ICAgICBEb2N1bWVudFN0b3JhZ2VBY2Nlc3M6OnJlcXVlc3RTdG9yYWdlQWNjZXNzRm9yTm9uRG9j
dW1lbnRRdWlyaygqbV9kb2N1bWVudCwgV1RGTW92ZShsb2dpbkRvbWFpbiksIFtkb21haW4sIGxv
Z2luRG9tYWluLCAmZWxlbWVudCwgcGxhdGZvcm1FdmVudCwgZXZlbnRUeXBlLCBkZXRhaWwsIHJl
bGF0ZWRUYXJnZXRdKFN0b3JhZ2VBY2Nlc3NXYXNHcmFudGVkIHN0b3JhZ2VBY2Nlc3NHcmFudGVk
KSBtdXRhYmxlIHsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzdG9yYWdlQWNjZXNzR3Jh
bnRlZCA9PSBTdG9yYWdlQWNjZXNzV2FzR3JhbnRlZDo6WWVzKSB7Ci0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OnNoYXJlZCgpLnNldERvbWFpbnNXaXRo
Q3Jvc3NQYWdlU3RvcmFnZUFjY2Vzcyh7eyBmaXJzdFBhcnR5RG9tYWluLCAqbG9naW5Eb21haW4g
fX0sIFsmZWxlbWVudCwgcGxhdGZvcm1FdmVudCwgZXZlbnRUeXBlLCBkZXRhaWwsIHJlbGF0ZWRU
YXJnZXRdIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZXNvdXJjZUxvYWRPYnNlcnZl
cjo6c2hhcmVkKCkuc2V0RG9tYWluc1dpdGhDcm9zc1BhZ2VTdG9yYWdlQWNjZXNzKHt7IGRvbWFp
biwgbG9naW5Eb21haW4gfX0sIFsmZWxlbWVudCwgcGxhdGZvcm1FdmVudCwgZXZlbnRUeXBlLCBk
ZXRhaWwsIHJlbGF0ZWRUYXJnZXRdIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ZWxlbWVudC5kaXNwYXRjaE1vdXNlRXZlbnQocGxhdGZvcm1FdmVudCwgZXZlbnRUeXBlLCBkZXRh
aWwsIHJlbGF0ZWRUYXJnZXQpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pOwogICAg
ICAgICAgICAgICAgICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9R
dWlya3MuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUXVpcmtzLmgKaW5kZXggN2M1ZDA2ZjZlZGNj
NmM2MjkzMWU0OWVkOGQ1OGIyNzE5NDI4ZTIzYS4uNTExMWFiOGRlZTJhZjEzOTllZGQwNzI4Yzlm
MDBlYTU5M2E3ZWFjZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9RdWlya3MuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1F1aXJrcy5oCkBAIC0xMjQsNiArMTI0LDcgQEAgcHVi
bGljOgogCiAjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKICAgICBzdGF0aWMg
Ym9vbCBpc01pY3Jvc29mdFRlYW1zUmVkaXJlY3RVUkwoY29uc3QgVVJMJik7CisgICAgc3RhdGlj
IGJvb2wgaGFzU3RvcmFnZUFjY2Vzc0ZvckFsbExvZ2luRG9tYWlucyhjb25zdCBIYXNoU2V0PFJl
Z2lzdHJhYmxlRG9tYWluPiYsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJik7CiAjZW5kaWYKIAog
cHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvTmV0
d29ya1N0b3JhZ2VTZXNzaW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
TmV0d29ya1N0b3JhZ2VTZXNzaW9uLmNwcAppbmRleCAxYTY3ZjMzNmUzMjc3ZTk5MjI4OWI1NWMz
NjQyMTc0ODYxM2UwOTJlLi4yZjk3N2M0N2UwOTAzOTA2ZmQwMWU5ZmIzMzZhMDg5YjllN2IxMjQ4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtTdG9y
YWdlU2Vzc2lvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9OZXR3
b3JrU3RvcmFnZVNlc3Npb24uY3BwCkBAIC0yMTgsNyArMjE4LDE0IEBAIHZvaWQgTmV0d29ya1N0
b3JhZ2VTZXNzaW9uOjpzZXREb21haW5zV2l0aENyb3NzUGFnZVN0b3JhZ2VBY2Nlc3MoY29uc3Qg
SGFzaE1hcDxUCiAKIHZvaWQgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpncmFudENyb3NzUGFnZVN0
b3JhZ2VBY2Nlc3MoY29uc3QgVG9wRnJhbWVEb21haW4mIHRvcEZyYW1lRG9tYWluLCBjb25zdCBT
dWJSZXNvdXJjZURvbWFpbiYgcmVzb3VyY2VEb21haW4pCiB7Ci0gICAgbV9wYWlyc0dyYW50ZWRD
cm9zc1BhZ2VTdG9yYWdlQWNjZXNzLmFkZCh0b3BGcmFtZURvbWFpbiwgcmVzb3VyY2VEb21haW4p
OworICAgIG1fcGFpcnNHcmFudGVkQ3Jvc3NQYWdlU3RvcmFnZUFjY2Vzcy5lbnN1cmUodG9wRnJh
bWVEb21haW4sIFtdIHsgcmV0dXJuIEhhc2hTZXQ8UmVnaXN0cmFibGVEb21haW4+IHsgfTsKKyAg
ICAgICAgfSkuaXRlcmF0b3ItPnZhbHVlLmFkZChyZXNvdXJjZURvbWFpbik7CisKKyAgICAvLyBT
b21lIHNpdGVzIGhhdmUgcXVpcmtzIHdoZXJlIG11bHRpcGxlIGxvZ2luIGRvbWFpbnMgcmVxdWly
ZSBzdG9yYWdlIGFjY2Vzcy4KKyAgICBpZiAoYXV0byBhZGRpdGlvbmFsTG9naW5Eb21haW4gPSBm
aW5kQWRkaXRpb25hbExvZ2luRG9tYWluKHJlc291cmNlRG9tYWluLCB0b3BGcmFtZURvbWFpbikp
IHsKKyAgICAgICAgbV9wYWlyc0dyYW50ZWRDcm9zc1BhZ2VTdG9yYWdlQWNjZXNzLmVuc3VyZSh0
b3BGcmFtZURvbWFpbiwgW10geyByZXR1cm4gSGFzaFNldDxSZWdpc3RyYWJsZURvbWFpbj4geyB9
OworICAgICAgICAgICAgfSkuaXRlcmF0b3ItPnZhbHVlLmFkZCgqYWRkaXRpb25hbExvZ2luRG9t
YWluKTsKKyAgICB9CiB9CiAKIGJvb2wgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpoYXNTdG9yYWdl
QWNjZXNzKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiByZXNvdXJjZURvbWFpbiwgY29uc3QgUmVn
aXN0cmFibGVEb21haW4mIGZpcnN0UGFydHlEb21haW4sIE9wdGlvbmFsPEZyYW1lSWRlbnRpZmll
cj4gZnJhbWVJRCwgUGFnZUlkZW50aWZpZXIgcGFnZUlEKSBjb25zdApAQCAtMjQxLDcgKzI0OCw3
IEBAIGJvb2wgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpoYXNTdG9yYWdlQWNjZXNzKGNvbnN0IFJl
Z2lzdHJhYmxlRG9tYWluJiByZXNvdXJjZURvCiAgICAgICAgIH0KIAogICAgICAgICBhdXRvIGl0
ID0gbV9wYWlyc0dyYW50ZWRDcm9zc1BhZ2VTdG9yYWdlQWNjZXNzLmZpbmQoZmlyc3RQYXJ0eURv
bWFpbik7Ci0gICAgICAgIGlmIChpdCAhPSBtX3BhaXJzR3JhbnRlZENyb3NzUGFnZVN0b3JhZ2VB
Y2Nlc3MuZW5kKCkgJiYgaXQtPnZhbHVlID09IHJlc291cmNlRG9tYWluKQorICAgICAgICBpZiAo
aXQgIT0gbV9wYWlyc0dyYW50ZWRDcm9zc1BhZ2VTdG9yYWdlQWNjZXNzLmVuZCgpICYmIGl0LT52
YWx1ZS5jb250YWlucyhyZXNvdXJjZURvbWFpbikpCiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsK
ICAgICB9CiAKQEAgLTM3NCwxMiArMzgxLDE1IEBAIE9wdGlvbmFsPFNlY29uZHM+IE5ldHdvcmtT
dG9yYWdlU2Vzc2lvbjo6Y2xpZW50U2lkZUNvb2tpZUNhcChjb25zdCBSZWdpc3RyYWJsZURvCiAg
ICAgcmV0dXJuIG1fYWdlQ2FwRm9yQ2xpZW50U2lkZUNvb2tpZXM7CiB9CiAKLUhhc2hNYXA8UmVn
aXN0cmFibGVEb21haW4sIFJlZ2lzdHJhYmxlRG9tYWluPiYgTmV0d29ya1N0b3JhZ2VTZXNzaW9u
OjpzdG9yYWdlQWNjZXNzUXVpcmtzKCkKK0hhc2hNYXA8UmVnaXN0cmFibGVEb21haW4sIEhhc2hT
ZXQ8UmVnaXN0cmFibGVEb21haW4+PiYgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpzdG9yYWdlQWNj
ZXNzUXVpcmtzKCkKIHsKLSAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8SGFzaE1hcDxSZWdpc3Ry
YWJsZURvbWFpbiwgUmVnaXN0cmFibGVEb21haW4+PiBtYXAgPSBbXSB7Ci0gICAgICAgIEhhc2hN
YXA8UmVnaXN0cmFibGVEb21haW4sIFJlZ2lzdHJhYmxlRG9tYWluPiBtYXA7CisgICAgc3RhdGlj
IE5ldmVyRGVzdHJveWVkPEhhc2hNYXA8UmVnaXN0cmFibGVEb21haW4sIEhhc2hTZXQ8UmVnaXN0
cmFibGVEb21haW4+Pj4gbWFwID0gW10geworICAgICAgICBIYXNoTWFwPFJlZ2lzdHJhYmxlRG9t
YWluLCBIYXNoU2V0PFJlZ2lzdHJhYmxlRG9tYWluPj4gbWFwOwogICAgICAgICBtYXAuYWRkKFJl
Z2lzdHJhYmxlRG9tYWluOjp1bmNoZWNrZWRDcmVhdGVGcm9tUmVnaXN0cmFibGVEb21haW5TdHJp
bmcoIm1pY3Jvc29mdC5jb20iKSwKLSAgICAgICAgICAgIFJlZ2lzdHJhYmxlRG9tYWluOjp1bmNo
ZWNrZWRDcmVhdGVGcm9tUmVnaXN0cmFibGVEb21haW5TdHJpbmcoIm1pY3Jvc29mdG9ubGluZS5j
b20iX3MpKTsKKyAgICAgICAgICAgIEhhc2hTZXQgeyBSZWdpc3RyYWJsZURvbWFpbjo6dW5jaGVj
a2VkQ3JlYXRlRnJvbVJlZ2lzdHJhYmxlRG9tYWluU3RyaW5nKCJtaWNyb3NvZnRvbmxpbmUuY29t
Il9zKSB9KTsKKyAgICAgICAgbWFwLmFkZChSZWdpc3RyYWJsZURvbWFpbjo6dW5jaGVja2VkQ3Jl
YXRlRnJvbVJlZ2lzdHJhYmxlRG9tYWluU3RyaW5nKCJwbGF5c3RhdGlvbi5jb20iKSwgSGFzaFNl
dCB7CisgICAgICAgICAgICBSZWdpc3RyYWJsZURvbWFpbjo6dW5jaGVja2VkQ3JlYXRlRnJvbVJl
Z2lzdHJhYmxlRG9tYWluU3RyaW5nKCJzb255ZW50ZXJ0YWlubWVudG5ldHdvcmsuY29tIl9zKSwK
KyAgICAgICAgICAgIFJlZ2lzdHJhYmxlRG9tYWluOjp1bmNoZWNrZWRDcmVhdGVGcm9tUmVnaXN0
cmFibGVEb21haW5TdHJpbmcoInNvbnkuY29tIl9zKSB9KTsKICAgICAgICAgcmV0dXJuIG1hcDsK
ICAgICB9KCk7CiAgICAgcmV0dXJuIG1hcC5nZXQoKTsKQEAgLTM4Nyw4ICszOTcsOCBAQCBIYXNo
TWFwPFJlZ2lzdHJhYmxlRG9tYWluLCBSZWdpc3RyYWJsZURvbWFpbj4mIE5ldHdvcmtTdG9yYWdl
U2Vzc2lvbjo6c3RvcmFnZUFjYwogCiBib29sIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6bG9naW5E
b21haW5NYXRjaGVzUmVxdWVzdGluZ0RvbWFpbihjb25zdCBUb3BGcmFtZURvbWFpbiYgdG9wRnJh
bWVEb21haW4sIGNvbnN0IFN1YlJlc291cmNlRG9tYWluJiByZXNvdXJjZURvbWFpbikKIHsKLSAg
ICBhdXRvIGxvZ2luRG9tYWluID0gV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpsb2dp
bkRvbWFpbkZvckZpcnN0UGFydHkodG9wRnJhbWVEb21haW4pOwotICAgIHJldHVybiBsb2dpbkRv
bWFpbiAmJiByZXNvdXJjZURvbWFpbiA9PSBsb2dpbkRvbWFpbjsKKyAgICBhdXRvIGxvZ2luRG9t
YWlucyA9IFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6bG9naW5Eb21haW5zRm9yRmly
c3RQYXJ0eSh0b3BGcmFtZURvbWFpbik7CisgICAgcmV0dXJuIGxvZ2luRG9tYWlucyAmJiBsb2dp
bkRvbWFpbnMudmFsdWUoKS5jb250YWlucyhyZXNvdXJjZURvbWFpbik7CiB9CiAKIGJvb2wgTmV0
d29ya1N0b3JhZ2VTZXNzaW9uOjpjYW5SZXF1ZXN0U3RvcmFnZUFjY2Vzc0ZvckxvZ2luUHVycG9z
ZXNXaXRob3V0UHJpb3JVc2VySW50ZXJhY3Rpb24oY29uc3QgU3ViUmVzb3VyY2VEb21haW4mIHJl
c291cmNlRG9tYWluLCBjb25zdCBUb3BGcmFtZURvbWFpbiYgdG9wRnJhbWVEb21haW4pCkBAIC0z
OTYsNyArNDA2LDcgQEAgYm9vbCBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmNhblJlcXVlc3RTdG9y
YWdlQWNjZXNzRm9yTG9naW5QdXJwb3Nlc1dpdGhvdXRQcmlvclUKICAgICByZXR1cm4gbG9naW5E
b21haW5NYXRjaGVzUmVxdWVzdGluZ0RvbWFpbih0b3BGcmFtZURvbWFpbiwgcmVzb3VyY2VEb21h
aW4pOwogfQogCi1PcHRpb25hbDxSZWdpc3RyYWJsZURvbWFpbj4gTmV0d29ya1N0b3JhZ2VTZXNz
aW9uOjpsb2dpbkRvbWFpbkZvckZpcnN0UGFydHkoY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHRv
cEZyYW1lRG9tYWluKQorT3B0aW9uYWw8SGFzaFNldDxSZWdpc3RyYWJsZURvbWFpbj4+IE5ldHdv
cmtTdG9yYWdlU2Vzc2lvbjo6bG9naW5Eb21haW5zRm9yRmlyc3RQYXJ0eShjb25zdCBSZWdpc3Ry
YWJsZURvbWFpbiYgdG9wRnJhbWVEb21haW4pCiB7CiAgICAgYXV0byBpdCA9IHN0b3JhZ2VBY2Nl
c3NRdWlya3MoKS5maW5kKHRvcEZyYW1lRG9tYWluKTsKICAgICBpZiAoaXQgIT0gc3RvcmFnZUFj
Y2Vzc1F1aXJrcygpLmVuZCgpKQpAQCAtNDA0LDYgKzQxNCwxNyBAQCBPcHRpb25hbDxSZWdpc3Ry
YWJsZURvbWFpbj4gTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpsb2dpbkRvbWFpbkZvckZpcnN0UGFy
dHkoY29ucwogICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiB9CiAKK09wdGlvbmFsPFJlZ2lzdHJh
YmxlRG9tYWluPiBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmZpbmRBZGRpdGlvbmFsTG9naW5Eb21h
aW4oY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHN1YkRvbWFpbiwgY29uc3QgUmVnaXN0cmFibGVE
b21haW4mIHRvcERvbWFpbikKK3sKKyAgICBpZiAoc3ViRG9tYWluLnN0cmluZygpID09ICJzb255
LmNvbSJfcyAmJiB0b3BEb21haW4uc3RyaW5nKCkgPT0gInBsYXlzdGF0aW9uLmNvbSJfcykKKyAg
ICAgICAgcmV0dXJuIFJlZ2lzdHJhYmxlRG9tYWluOjp1bmNoZWNrZWRDcmVhdGVGcm9tUmVnaXN0
cmFibGVEb21haW5TdHJpbmcoInNvbnllbnRlcnRhaW5tZW50bmV0d29yay5jb20iX3MpOworCisg
ICAgaWYgKHN1YkRvbWFpbi5zdHJpbmcoKSA9PSAic29ueWVudGVydGFpbm1lbnRuZXR3b3JrLmNv
bSJfcyAmJiB0b3BEb21haW4uc3RyaW5nKCkgPT0gInBsYXlzdGF0aW9uLmNvbSJfcykKKyAgICAg
ICAgcmV0dXJuIFJlZ2lzdHJhYmxlRG9tYWluOjp1bmNoZWNrZWRDcmVhdGVGcm9tUmVnaXN0cmFi
bGVEb21haW5TdHJpbmcoInNvbnkuY29tIl9zKTsKKworICAgIHJldHVybiBXVEY6Om51bGxvcHQ7
Cit9CisKIFJlZ2lzdHJhYmxlRG9tYWluIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6bWFwVG9Ub3BE
b21haW4oY29uc3QgUmVnaXN0cmFibGVEb21haW4mIGRvbWFpblRvTWFwKQogewogICAgIHN0YXRp
YyBOZXZlckRlc3Ryb3llZDxIYXNoTWFwPFJlZ2lzdHJhYmxlRG9tYWluLCBSZWdpc3RyYWJsZURv
bWFpbj4+IG1hcCA9IFtdIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvTmV0d29ya1N0b3JhZ2VTZXNzaW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL05ldHdvcmtTdG9yYWdlU2Vzc2lvbi5oCmluZGV4IGNhMzRlODliNWM0MmU4MjQ2NmU2
MDFmZDQ0MDhlNWNiYzY5MzIyN2UuLjk5NzhhNjBjZmE5ODg1YTI3MDE3NDhkZTQ2NGUwZWU3ZGVl
MTdlNWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvTmV0d29y
a1N0b3JhZ2VTZXNzaW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9O
ZXR3b3JrU3RvcmFnZVNlc3Npb24uaApAQCAtMjE1LDExICsyMTUsMTMgQEAgcHVibGljOgogICAg
IFdFQkNPUkVfRVhQT1JUIHZvaWQgcmVzZXRDcm9zc1NpdGVMb2Fkc1dpdGhMaW5rRGVjb3JhdGlv
bkZvclRlc3RpbmcoKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldFRoaXJkUGFydHlDb29r
aWVCbG9ja2luZ01vZGUoVGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9kZSk7CiAKLSAgICBXRUJD
T1JFX0VYUE9SVCBzdGF0aWMgSGFzaE1hcDxSZWdpc3RyYWJsZURvbWFpbiwgUmVnaXN0cmFibGVE
b21haW4+JiBzdG9yYWdlQWNjZXNzUXVpcmtzKCk7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGlj
IEhhc2hNYXA8UmVnaXN0cmFibGVEb21haW4sIEhhc2hTZXQ8UmVnaXN0cmFibGVEb21haW4+PiYg
c3RvcmFnZUFjY2Vzc1F1aXJrcygpOwogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBib29sIGNh
blJlcXVlc3RTdG9yYWdlQWNjZXNzRm9yTG9naW5QdXJwb3Nlc1dpdGhvdXRQcmlvclVzZXJJbnRl
cmFjdGlvbihjb25zdCBTdWJSZXNvdXJjZURvbWFpbiYsIGNvbnN0IFRvcEZyYW1lRG9tYWluJik7
Ci0gICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIE9wdGlvbmFsPFJlZ2lzdHJhYmxlRG9tYWluPiBs
b2dpbkRvbWFpbkZvckZpcnN0UGFydHkoY29uc3QgUmVnaXN0cmFibGVEb21haW4mKTsKKyAgICBX
RUJDT1JFX0VYUE9SVCBzdGF0aWMgT3B0aW9uYWw8SGFzaFNldDxSZWdpc3RyYWJsZURvbWFpbj4+
IGxvZ2luRG9tYWluc0ZvckZpcnN0UGFydHkoY29uc3QgUmVnaXN0cmFibGVEb21haW4mKTsKICAg
ICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgYm9vbCBsb2dpbkRvbWFpbk1hdGNoZXNSZXF1ZXN0aW5n
RG9tYWluKGNvbnN0IFRvcEZyYW1lRG9tYWluJiwgY29uc3QgU3ViUmVzb3VyY2VEb21haW4mKTsK
ICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVnaXN0cmFibGVEb21haW4gbWFwVG9Ub3BEb21h
aW4oY29uc3QgUmVnaXN0cmFibGVEb21haW4mKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMg
T3B0aW9uYWw8UmVnaXN0cmFibGVEb21haW4+IGZpbmRBZGRpdGlvbmFsTG9naW5Eb21haW4oY29u
c3QgU3ViUmVzb3VyY2VEb21haW4mLCBjb25zdCBUb3BGcmFtZURvbWFpbiYpOworCiAjZW5kaWYK
ICAgICAKICNpZiBFTkFCTEUoQVBQX0JPVU5EX0RPTUFJTlMpCkBAIC0yNzksNyArMjgxLDcgQEAg
cHJpdmF0ZToKICAgICBIYXNoU2V0PFJlZ2lzdHJhYmxlRG9tYWluPiBtX3JlZ2lzdHJhYmxlRG9t
YWluc1dpdGhVc2VySW50ZXJhY3Rpb25Bc0ZpcnN0UGFydHk7CiAgICAgSGFzaE1hcDxQYWdlSWRl
bnRpZmllciwgSGFzaE1hcDxGcmFtZUlkZW50aWZpZXIsIFJlZ2lzdHJhYmxlRG9tYWluPj4gbV9m
cmFtZXNHcmFudGVkU3RvcmFnZUFjY2VzczsKICAgICBIYXNoTWFwPFBhZ2VJZGVudGlmaWVyLCBI
YXNoTWFwPFJlZ2lzdHJhYmxlRG9tYWluLCBSZWdpc3RyYWJsZURvbWFpbj4+IG1fcGFnZXNHcmFu
dGVkU3RvcmFnZUFjY2VzczsKLSAgICBIYXNoTWFwPFRvcEZyYW1lRG9tYWluLCBTdWJSZXNvdXJj
ZURvbWFpbj4gbV9wYWlyc0dyYW50ZWRDcm9zc1BhZ2VTdG9yYWdlQWNjZXNzOworICAgIEhhc2hN
YXA8VG9wRnJhbWVEb21haW4sIEhhc2hTZXQ8U3ViUmVzb3VyY2VEb21haW4+PiBtX3BhaXJzR3Jh
bnRlZENyb3NzUGFnZVN0b3JhZ2VBY2Nlc3M7CiAgICAgT3B0aW9uYWw8U2Vjb25kcz4gbV9jYWNo
ZU1heEFnZUNhcEZvclByZXZhbGVudFJlc291cmNlcyB7IH07CiAgICAgT3B0aW9uYWw8U2Vjb25k
cz4gbV9hZ2VDYXBGb3JDbGllbnRTaWRlQ29va2llcyB7IH07CiAgICAgT3B0aW9uYWw8U2Vjb25k
cz4gbV9hZ2VDYXBGb3JDbGllbnRTaWRlQ29va2llc1Nob3J0IHsgfTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1VJRGVsZWdhdGUubW0gYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9Db2NvYS9VSURlbGVnYXRlLm1tCmluZGV4IGZhZWQxMjg3N2IwNzViN2EwZTYy
OWEzMTM3MTI3Zjk2ZGIzOGJjYmUuLjY0N2U3Mjc4ZDQ3NWY4YWE3NzM1YTIwMzA2ZjJmM2Y2YTQ2
NjA3MWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1VJRGVsZWdh
dGUubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvVUlEZWxlZ2F0ZS5tbQpA
QCAtMzQ1LDcgKzM0NSwxNiBAQCB2b2lkIFVJRGVsZWdhdGU6OlVJQ2xpZW50OjpydW5KYXZhU2Ny
aXB0UHJvbXB0KFdlYlBhZ2VQcm94eSYgcGFnZSwgY29uc3QgV1RGOjpTdAogICAgIH0pLmdldCgp
XTsKIH0KIAotdm9pZCBVSURlbGVnYXRlOjpVSUNsaWVudDo6cmVxdWVzdFN0b3JhZ2VBY2Nlc3ND
b25maXJtKFdlYlBhZ2VQcm94eSYsIFdlYkZyYW1lUHJveHkqLCBjb25zdCBXZWJDb3JlOjpSZWdp
c3RyYWJsZURvbWFpbiYgcmVxdWVzdGluZ0RvbWFpbiwgY29uc3QgV2ViQ29yZTo6UmVnaXN0cmFi
bGVEb21haW4mIGN1cnJlbnREb21haW4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYg
Y29tcGxldGlvbkhhbmRsZXIpCitzdGF0aWMgU3RyaW5nIGJ1aWxkTGlzdChjb25zdCBXZWJDb3Jl
OjpSZWdpc3RyYWJsZURvbWFpbiBzdWJEb21haW5PbmUsIGNvbnN0IFdlYkNvcmU6OlJlZ2lzdHJh
YmxlRG9tYWluIHN1YkRvbWFpblR3bykKK3sKKyAgICBTdHJpbmdCdWlsZGVyIGJ1aWxkZXI7Cisg
ICAgYnVpbGRlci5hcHBlbmQoc3ViRG9tYWluT25lLnN0cmluZygpKTsKKyAgICBidWlsZGVyLmFw
cGVuZChTdHJpbmcoW05TU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCLigJwgYW5kIOKAnCJdKSk7
CisgICAgYnVpbGRlci5hcHBlbmQoc3ViRG9tYWluVHdvLnN0cmluZygpKTsKKyAgICByZXR1cm4g
YnVpbGRlci50b1N0cmluZygpOworfQorCit2b2lkIFVJRGVsZWdhdGU6OlVJQ2xpZW50OjpyZXF1
ZXN0U3RvcmFnZUFjY2Vzc0NvbmZpcm0oV2ViUGFnZVByb3h5JiB3ZWJQYWdlUHJveHksIFdlYkZy
YW1lUHJveHkqLCBjb25zdCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYgcmVxdWVzdGluZ0Rv
bWFpbiwgY29uc3QgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mIGN1cnJlbnREb21haW4sIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAg
YXV0byBkZWxlZ2F0ZSA9IG1fdWlEZWxlZ2F0ZS5tX2RlbGVnYXRlLmdldCgpOwogICAgIGlmICgh
ZGVsZWdhdGUpIHsKQEAgLTM2MCw4ICszNjksMTUgQEAgdm9pZCBVSURlbGVnYXRlOjpVSUNsaWVu
dDo6cmVxdWVzdFN0b3JhZ2VBY2Nlc3NDb25maXJtKFdlYlBhZ2VQcm94eSYsIFdlYkZyYW1lUHIK
ICAgICAgICAgcmV0dXJuOwogICAgIH0KIAorICAgIFN0cmluZyByZXF1ZXN0aW5nU3RyaW5nOwor
ICAgIC8vIFNvbWUgc2l0ZXMgaGF2ZSBxdWlya3Mgd2hlcmUgbXVsdGlwbGUgbG9naW4gZG9tYWlu
cyByZXF1aXJlIHN0b3JhZ2UgYWNjZXNzLgorICAgIGlmIChhdXRvIGFkZGl0aW9uYWxMb2dpbkRv
bWFpbiA9IFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6ZmluZEFkZGl0aW9uYWxMb2dp
bkRvbWFpbihyZXF1ZXN0aW5nRG9tYWluLCBjdXJyZW50RG9tYWluKSkKKyAgICAgICAgcmVxdWVz
dGluZ1N0cmluZyA9IGJ1aWxkTGlzdChyZXF1ZXN0aW5nRG9tYWluLCAqYWRkaXRpb25hbExvZ2lu
RG9tYWluKTsKKyAgICBlbHNlCisgICAgICAgIHJlcXVlc3RpbmdTdHJpbmcgPSByZXF1ZXN0aW5n
RG9tYWluLnN0cmluZygpOworCiAgICAgYXV0byBjaGVja2VyID0gQ29tcGxldGlvbkhhbmRsZXJD
YWxsQ2hlY2tlcjo6Y3JlYXRlKGRlbGVnYXRlLmdldCgpLCBAc2VsZWN0b3IoX3dlYlZpZXc6cmVx
dWVzdFN0b3JhZ2VBY2Nlc3NQYW5lbEZvckRvbWFpbjp1bmRlckN1cnJlbnREb21haW46Y29tcGxl
dGlvbkhhbmRsZXI6KSk7Ci0gICAgWyhpZCA8V0tVSURlbGVnYXRlUHJpdmF0ZT4pZGVsZWdhdGUg
X3dlYlZpZXc6bV91aURlbGVnYXRlLm1fd2ViVmlldyByZXF1ZXN0U3RvcmFnZUFjY2Vzc1BhbmVs
Rm9yRG9tYWluOnJlcXVlc3RpbmdEb21haW4uc3RyaW5nKCkgdW5kZXJDdXJyZW50RG9tYWluOmN1
cnJlbnREb21haW4uc3RyaW5nKCkgY29tcGxldGlvbkhhbmRsZXI6bWFrZUJsb2NrUHRyKFtjb21w
bGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCBjaGVja2VyID0gV1RG
TW92ZShjaGVja2VyKV0gKEJPT0wgcmVzdWx0KSBtdXRhYmxlIHsKKyAgICBbKGlkIDxXS1VJRGVs
ZWdhdGVQcml2YXRlPilkZWxlZ2F0ZSBfd2ViVmlldzptX3VpRGVsZWdhdGUubV93ZWJWaWV3IHJl
cXVlc3RTdG9yYWdlQWNjZXNzUGFuZWxGb3JEb21haW46cmVxdWVzdGluZ1N0cmluZyB1bmRlckN1
cnJlbnREb21haW46Y3VycmVudERvbWFpbi5zdHJpbmcoKSBjb21wbGV0aW9uSGFuZGxlcjptYWtl
QmxvY2tQdHIoW2NvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlciks
IGNoZWNrZXIgPSBXVEZNb3ZlKGNoZWNrZXIpXSAoQk9PTCByZXN1bHQpIG11dGFibGUgewogICAg
ICAgICBpZiAoY2hlY2tlci0+Y29tcGxldGlvbkhhbmRsZXJIYXNCZWVuQ2FsbGVkKCkpCiAgICAg
ICAgICAgICByZXR1cm47CiAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHJlc3VsdCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XS1N0b3JhZ2VBY2Nlc3NBbGVy
dC5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dLU3RvcmFnZUFjY2Vzc0FsZXJ0
Lm1tCmluZGV4IGE5Y2UwNzVhZGQwOTAxMWYwOGMxMjkzOGIzYWUyYmU2YjY3NjM1MWQuLjMyNjg5
MzMxOWQ4ZDFkODMzOTg1NmE1Njg5NGFhNTUzYTZjZTBjNmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dLU3RvcmFnZUFjY2Vzc0FsZXJ0Lm1tCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dLU3RvcmFnZUFjY2Vzc0FsZXJ0Lm1tCkBAIC0zMCwx
OCArMzAsMzMgQEAKIAogI2ltcG9ydCAiV0tXZWJWaWV3SW50ZXJuYWwuaCIKICNpbXBvcnQgPFdl
YkNvcmUvTG9jYWxpemVkU3RyaW5ncy5oPgorI2ltcG9ydCA8V2ViQ29yZS9OZXR3b3JrU3RvcmFn
ZVNlc3Npb24uaD4KICNpbXBvcnQgPFdlYkNvcmUvUmVnaXN0cmFibGVEb21haW4uaD4KICNpbXBv
cnQgPHd0Zi9CbG9ja1B0ci5oPgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAorc3RhdGljIFN0cmlu
ZyBidWlsZExpc3QoY29uc3QgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4gc3ViRG9tYWluT25l
LCBjb25zdCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiBzdWJEb21haW5Ud28pCit7CisgICAg
U3RyaW5nQnVpbGRlciBidWlsZGVyOworICAgIGJ1aWxkZXIuYXBwZW5kKHN1YkRvbWFpbk9uZS5z
dHJpbmcoKSk7CisgICAgYnVpbGRlci5hcHBlbmQoU3RyaW5nKFtOU1N0cmluZyBzdHJpbmdXaXRo
Rm9ybWF0OkAi4oCcIGFuZCDigJwiXSkpOworICAgIGJ1aWxkZXIuYXBwZW5kKHN1YkRvbWFpblR3
by5zdHJpbmcoKSk7CisgICAgcmV0dXJuIGJ1aWxkZXIudG9TdHJpbmcoKTsKK30KKwogdm9pZCBw
cmVzZW50U3RvcmFnZUFjY2Vzc0FsZXJ0KFdLV2ViVmlldyAqd2ViVmlldywgY29uc3QgV2ViQ29y
ZTo6UmVnaXN0cmFibGVEb21haW4mIHJlcXVlc3RpbmcsIGNvbnN0IFdlYkNvcmU6OlJlZ2lzdHJh
YmxlRG9tYWluJiBjdXJyZW50LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNvbXBs
ZXRpb25IYW5kbGVyKQogewogICAgIGF1dG8gY29tcGxldGlvbkJsb2NrID0gbWFrZUJsb2NrUHRy
KFtjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXShib29sIHNo
b3VsZEFsbG93KSBtdXRhYmxlIHsKICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoc2hvdWxkQWxs
b3cpOwogICAgIH0pOwogCi0gICAgYXV0byByZXF1ZXN0aW5nRG9tYWluID0gcmVxdWVzdGluZy5z
dHJpbmcoKS5jcmVhdGVDRlN0cmluZygpOworICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gcmVx
dWVzdGluZ0RvbWFpbjsKKyAgICAvLyBTb21lIHNpdGVzIGhhdmUgcXVpcmtzIHdoZXJlIG11bHRp
cGxlIGxvZ2luIGRvbWFpbnMgcmVxdWlyZSBzdG9yYWdlIGFjY2Vzcy4KKyAgICBpZiAoYXV0byBh
ZGRpdGlvbmFsTG9naW5Eb21haW4gPSBXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb246OmZp
bmRBZGRpdGlvbmFsTG9naW5Eb21haW4ocmVxdWVzdGluZywgY3VycmVudCkpCisgICAgICAgIHJl
cXVlc3RpbmdEb21haW4gPSBidWlsZExpc3QocmVxdWVzdGluZywgKmFkZGl0aW9uYWxMb2dpbkRv
bWFpbikuY3JlYXRlQ0ZTdHJpbmcoKTsKKyAgICBlbHNlCisgICAgICAgIHJlcXVlc3RpbmdEb21h
aW4gPSByZXF1ZXN0aW5nLnN0cmluZygpLmNyZWF0ZUNGU3RyaW5nKCk7CiAgICAgYXV0byBjdXJy
ZW50RG9tYWluID0gY3VycmVudC5zdHJpbmcoKS5jcmVhdGVDRlN0cmluZygpOwogCiAjaWYgUExB
VEZPUk0oTUFDKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVT
dXBwb3J0L1dlYlJlc291cmNlTG9hZE9ic2VydmVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJSZXNvdXJjZUxvYWRPYnNlcnZlci5jcHAKaW5kZXggMjZh
OTk3NTA0Zjc3MmM1MmI0ZDg0MzEzMDczY2EwM2Y1ODNmNTkzMC4uMjMxMzkzMjk5ZGE0OGIxZDdl
NGFjODU4MzNjY2NiY2QyOTIzMWY3MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlJlc291cmNlTG9hZE9ic2VydmVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUmVzb3VyY2VMb2FkT2JzZXJ2
ZXIuY3BwCkBAIC00MjMsMTYgKzQyMywyMyBAQCBib29sIFdlYlJlc291cmNlTG9hZE9ic2VydmVy
OjpoYXNDcm9zc1BhZ2VTdG9yYWdlQWNjZXNzKGNvbnN0IFN1YkZyYW1lRG9tYWluJiBzdQogICAg
IGF1dG8gaXQgPSBtX2RvbWFpbnNXaXRoQ3Jvc3NQYWdlU3RvcmFnZUFjY2Vzcy5maW5kKHRvcERv
bWFpbik7CiAKICAgICBpZiAoaXQgIT0gbV9kb21haW5zV2l0aENyb3NzUGFnZVN0b3JhZ2VBY2Nl
c3MuZW5kKCkpCi0gICAgICAgIHJldHVybiBpdC0+dmFsdWUgPT0gc3ViRG9tYWluOworICAgICAg
ICByZXR1cm4gaXQtPnZhbHVlLmNvbnRhaW5zKHN1YkRvbWFpbik7CiAKICAgICByZXR1cm4gZmFs
c2U7CiB9CiAKIHZvaWQgV2ViUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OnNldERvbWFpbnNXaXRoQ3Jv
c3NQYWdlU3RvcmFnZUFjY2VzcyhIYXNoTWFwPFRvcEZyYW1lRG9tYWluLCBTdWJGcmFtZURvbWFp
bj4mJiBkb21haW5zLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRs
ZXIpCiB7Ci0gICAgZm9yIChhdXRvJiB0b3BEb21haW4gOiBkb21haW5zLmtleXMoKSkKLSAgICAg
ICAgbV9kb21haW5zV2l0aENyb3NzUGFnZVN0b3JhZ2VBY2Nlc3MuYWRkKHRvcERvbWFpbiwgZG9t
YWlucy5nZXQodG9wRG9tYWluKSk7Ci0KKyAgICBmb3IgKGF1dG8mIHRvcERvbWFpbiA6IGRvbWFp
bnMua2V5cygpKSB7CisgICAgICAgIG1fZG9tYWluc1dpdGhDcm9zc1BhZ2VTdG9yYWdlQWNjZXNz
LmVuc3VyZSh0b3BEb21haW4sIFtdIHsgcmV0dXJuIEhhc2hTZXQ8UmVnaXN0cmFibGVEb21haW4+
IHsgfTsKKyAgICAgICAgICAgIH0pLml0ZXJhdG9yLT52YWx1ZS5hZGQoZG9tYWlucy5nZXQodG9w
RG9tYWluKSk7CisKKyAgICAgICAgLy8gU29tZSBzaXRlcyBoYXZlIHF1aXJrcyB3aGVyZSBtdWx0
aXBsZSBsb2dpbiBkb21haW5zIHJlcXVpcmUgc3RvcmFnZSBhY2Nlc3MuCisgICAgICAgIGlmIChh
dXRvIGFkZGl0aW9uYWxMb2dpbkRvbWFpbiA9IFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lv
bjo6ZmluZEFkZGl0aW9uYWxMb2dpbkRvbWFpbihkb21haW5zLmdldCh0b3BEb21haW4pLCB0b3BE
b21haW4pKSB7CisgICAgICAgICAgICBtX2RvbWFpbnNXaXRoQ3Jvc3NQYWdlU3RvcmFnZUFjY2Vz
cy5lbnN1cmUodG9wRG9tYWluLCBbXSB7IHJldHVybiBIYXNoU2V0PFJlZ2lzdHJhYmxlRG9tYWlu
PiB7IH07CisgICAgICAgICAgICAgICAgfSkuaXRlcmF0b3ItPnZhbHVlLmFkZCgqYWRkaXRpb25h
bExvZ2luRG9tYWluKTsKKyAgICAgICAgfQorICAgIH0KICAgICBjb21wbGV0aW9uSGFuZGxlcigp
OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvV2ViUmVzb3VyY2VMb2FkT2JzZXJ2ZXIuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJDb3JlU3VwcG9ydC9XZWJSZXNvdXJjZUxvYWRPYnNlcnZlci5oCmluZGV4IDgyZTAxNzhlNjdl
NDU5ZGY5YTA2ODEzYTdkNDkyMmYwN2E4MDJmZTcuLmJmMzc4ZTcyZjYyNjUxODgzYWM2MDIzN2Ez
M2IxZDA5MTM4NzA3YTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9XZWJSZXNvdXJjZUxvYWRPYnNlcnZlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJSZXNvdXJjZUxvYWRPYnNlcnZlci5oCkBAIC04
Nyw3ICs4Nyw3IEBAIHByaXZhdGU6CiAgICAgV2ViQ29yZTo6VGltZXIgbV9ub3RpZmljYXRpb25U
aW1lcjsKIAogICAgIEhhc2hTZXQ8V2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4+IG1fZG9tYWlu
c1dpdGhVc2VySW50ZXJhY3Rpb247Ci0gICAgSGFzaE1hcDxUb3BGcmFtZURvbWFpbiwgU3ViRnJh
bWVEb21haW4+IG1fZG9tYWluc1dpdGhDcm9zc1BhZ2VTdG9yYWdlQWNjZXNzOworICAgIEhhc2hN
YXA8VG9wRnJhbWVEb21haW4sIEhhc2hTZXQ8U3ViRnJhbWVEb21haW4+PiBtX2RvbWFpbnNXaXRo
Q3Jvc3NQYWdlU3RvcmFnZUFjY2VzczsKICNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKICAgICB1
aW50NjRfdCBtX2xvZ2dpbmdDb3VudGVyIHsgMCB9OwogICAgIHN0YXRpYyBib29sIHNob3VsZExv
Z1VzZXJJbnRlcmFjdGlvbjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYlBhZ2UuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
UGFnZS5jcHAKaW5kZXggYzZkODlkMDk3NjM1MzFjMzNlZGIyOGJmM2EwMDgxMzgyMDQwMmRiNi4u
ODBkZDRjZjRhOTk5MGEwYzk2YTAzNzJlNzBmMDNiYzhiZmQ1NmFmNiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKQEAgLTY2OTQsNiArNjY5NCwxMCBA
QCB2b2lkIFdlYlBhZ2U6OnJlcXVlc3RTdG9yYWdlQWNjZXNzKFJlZ2lzdHJhYmxlRG9tYWluJiYg
c3ViRnJhbWVEb21haW4sIFJlZ2lzdHJhYgogdm9pZCBXZWJQYWdlOjphZGREb21haW5XaXRoUGFn
ZUxldmVsU3RvcmFnZUFjY2Vzcyhjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgdG9wTGV2ZWxEb21h
aW4sIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiByZXNvdXJjZURvbWFpbikKIHsKICAgICBtX2Rv
bWFpbnNXaXRoUGFnZUxldmVsU3RvcmFnZUFjY2Vzcy5hZGQodG9wTGV2ZWxEb21haW4sIHJlc291
cmNlRG9tYWluKTsKKworICAgIC8vIFNvbWUgc2l0ZXMgaGF2ZSBxdWlya3Mgd2hlcmUgbXVsdGlw
bGUgbG9naW4gZG9tYWlucyByZXF1aXJlIHN0b3JhZ2UgYWNjZXNzLgorICAgIGlmIChhdXRvIGFk
ZGl0aW9uYWxMb2dpbkRvbWFpbiA9IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6ZmluZEFkZGl0aW9u
YWxMb2dpbkRvbWFpbihyZXNvdXJjZURvbWFpbiwgdG9wTGV2ZWxEb21haW4pKQorICAgICAgICBt
X2RvbWFpbnNXaXRoUGFnZUxldmVsU3RvcmFnZUFjY2Vzcy5hZGQodG9wTGV2ZWxEb21haW4sICph
ZGRpdGlvbmFsTG9naW5Eb21haW4pOwogfQogCiBib29sIFdlYlBhZ2U6Omhhc1BhZ2VMZXZlbFN0
b3JhZ2VBY2Nlc3MoY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHRvcExldmVsRG9tYWluLCBjb25z
dCBSZWdpc3RyYWJsZURvbWFpbiYgcmVzb3VyY2VEb21haW4pIGNvbnN0Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>416364</attachid>
            <date>2020-12-16 14:39:43 -0800</date>
            <delta_ts>2020-12-16 18:08:45 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-219900-20201216143942.patch</filename>
            <type>text/plain</type>
            <size>28477</size>
            <attacher name="Kate Cheney">katherine_cheney</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcwODM5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjk5YjViNTc0MmQzMTJl
NmNkZjk3N2VlNmJjY2Q1OTU1MzRkMDA4ZC4uZWE5ZWIzNmU1YzA0NzhhN2Y5NDhkZjJmOTUwMzc2
NmYxYjU1MGU4ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU2IEBACisyMDIwLTEyLTE1ICBLYXRl
IENoZW5leSAgPGthdGhlcmluZV9jaGVuZXlAYXBwbGUuY29tPgorCisgICAgICAgIFN0aWxsIGNh
bid0IGxvZ2luIHRvIG15LnBsYXlzdGF0aW9uLmNvbQorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE5OTAwCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS83
MjA2Mjk4NT4KKworICAgICAgICBSZXZpZXdlZCBieSBKb2huIFdpbGFuZGVyLgorCisgICAgICAg
IEFkYXB0ZWQgZnJvbSBhbiBvcmlnaW5hbCBwYXRjaCBieSBKb2huIFdpbGFuZGVyLgorCisgICAg
ICAgIFRoaXMgaXMgYSB0ZW1wb3JhcnkgcXVpcmsgdG8gYXNzaXN0IGEgaGlnaC10cmFmZmljIHdl
YnNpdGUgd2hpbGUgdGhleQorICAgICAgICBjb21wbGV0ZSB0aGUgbGFyZ2UgdGFzayBvZiBtaWdy
YXRpbmcgYXdheSBmcm9tIGxvZ2luIGZsb3dzIHRoYXQKKyAgICAgICAgcmVxdWlyZSB0aGlyZCBw
YXJ0eSBjb29raWVzLiBUaGlzIHF1aXJrIHdpbGwgYmUgcmVtb3ZlZCB3aGVuIHRoZSBzaXRlCisg
ICAgICAgIGlzIHVwZGF0ZWQuCisKKyAgICAgICAgQ3JlYXRlIGEgcXVpcmsgdG8gY2FsbCB0aGUg
U3RvcmFnZSBBY2Nlc3MgQVBJIG9uIGJlaGFsZiBvZiBTb255LiBUaGlzCisgICAgICAgIGNhc2Ug
aXMgdW5pcXVlIGJlY2F1c2UgcGxheXN0YXRpb24uY29tIHJlcXVpcmVzIHN0b3JhZ2UgYWNjZXNz
IGZvciAyCisgICAgICAgIGxvZ2luIGRvbWFpbnM6IHNvbnkuY29tIGFuZCBzb255ZW50ZXJ0YWlu
bWVudG5ldHdvcmsuY29tLiBUaGlzIHBhdGNoCisgICAgICAgIGhhbmRsZXMgdGhpcyBieSByZXF1
ZXN0aW5nIHN0b3JhZ2UgYWNjZXNzIGZvciBib3RoIGRvbWFpbnMgaWYgZWl0aGVyCisgICAgICAg
IGRvbWFpbiBpcyByZXF1ZXN0ZWQgdG8gYXZvaWQgbWFzc2l2ZSBjaGFuZ2VzIHRvIHRoZSBTdG9y
YWdlIEFjY2VzcworICAgICAgICBjb2RlIHRvIGhhbmRsZSBtdWx0aXBsZSBkb21haW5zIGF0IG9u
Y2UuCisKKyAgICAgICAgVGhpcyBwYXRjaCBhZGp1c3RzIHRoZSBxdWlyayBjb2RlIGluIE5ldHdv
cmtTdG9yYWdlU2Vzc2lvbiB0byBoYW5kbGUKKyAgICAgICAgbXVsdGlwbGUgbG9naW4gZG9tYWlu
cyBmb3IgYSBzaW5nbGUgZmlyc3QgcGFydHkgZG9tYWluLgorCisgICAgICAgIE5vIG5ldyB0ZXN0
cywgc2l0ZSBzcGVjaWZpYyBxdWlyay4KKworICAgICAgICAqIGxvYWRlci9Eb2N1bWVudExvYWRl
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudExvYWRlcjo6cmVzcG9uc2VSZWNlaXZl
ZCk6CisgICAgICAgICogcGFnZS9RdWlya3MuY3BwOgorICAgICAgICAoV2ViQ29yZTo6aXNQbGF5
c3RhdGlvbkxvZ2luRWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpRdWlya3M6Omhhc1N0b3Jh
Z2VBY2Nlc3NGb3JBbGxMb2dpbkRvbWFpbnMpOgorICAgICAgICAoV2ViQ29yZTo6UXVpcmtzOjp0
cmlnZ2VyT3B0aW9uYWxTdG9yYWdlQWNjZXNzUXVpcmsgY29uc3QpOgorICAgICAgICBBZGp1c3Qg
dGhlIGV4aXN0aW5nIHF1aXJrcyB0byBoYW5kbGUgdGhlIG5ldyBmb3JtYXQgb2YgYSBIYXNoU2V0
IG9mCisgICAgICAgIGxvZ2luIGRvbWFpbnMsIGFuZCBhZGQgdGhlIG5ldyBwbGF5c3RhdGlvbi5j
b20gY2FzZS4KKworICAgICAgICAqIHBhZ2UvUXVpcmtzLmg6CisgICAgICAgICogcGxhdGZvcm0v
bmV0d29yay9OZXR3b3JrU3RvcmFnZVNlc3Npb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6TmV0
d29ya1N0b3JhZ2VTZXNzaW9uOjpncmFudENyb3NzUGFnZVN0b3JhZ2VBY2Nlc3MpOgorICAgICAg
ICAoV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpoYXNTdG9yYWdlQWNjZXNzIGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6c3RvcmFnZUFjY2Vz
c1F1aXJrcyk6CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb246OmxvZ2lu
RG9tYWluTWF0Y2hlc1JlcXVlc3RpbmdEb21haW4pOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29y
a1N0b3JhZ2VTZXNzaW9uOjpsb2dpbkRvbWFpbnNGb3JGaXJzdFBhcnR5KToKKyAgICAgICAgKFdl
YkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6ZmluZEFkZGl0aW9uYWxMb2dpbkRvbWFpbik6
CisgICAgICAgIEZ1bmN0aW9uIHRvIG1hdGNoIHVwIFNvbnkgbG9naW4gZG9tYWlucyB3aXRoIG9u
ZSBhbm90aGVyIGF0IHN0b3JhZ2UKKyAgICAgICAgZW5kcG9pbnRzIGFuZCBmb3IgcHJvbXB0aW5n
IHNvIHdlIGRvbid0IG5lZWQgdG8gdGhyZWFkIHRoZW0gdGhyb3VnaAorICAgICAgICBhbGwgb2Yg
dGhlIGV4aXN0aW5nIHN0b3JhZ2UgYWNjZXNzIGNvZGUuCisKKyAgICAgICAgKFdlYkNvcmU6Ok5l
dHdvcmtTdG9yYWdlU2Vzc2lvbjo6bG9naW5Eb21haW5Gb3JGaXJzdFBhcnR5KTogUmVuYW1lZCB0
byBiZSBwbHVyYWwuCisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9OZXR3b3JrU3RvcmFnZVNl
c3Npb24uaDoKKyAgICAgICAgQWRqdXN0ZWQgZXhpc3RpbmcgcXVpcmsgY29kZSB0byBoYW5kbGUg
YSBIYXNoU2V0IG9mIGxvZ2luIGRvbWFpbnMKKyAgICAgICAgaW5zdGVhZCBvZiBhIHNpbmdsZSBk
b21haW4uCisKIDIwMjAtMTItMTUgIFphbGFuIEJ1anRhcyAgPHphbGFuQGFwcGxlLmNvbT4KIAog
ICAgICAgICBSRUdSRVNTSU9OOiBhcHBsZS5jb20gc2lnbi1pbiBwYWdlIGZvb3RlciBkb2VzIG5v
dCB3cmFwLCAiU2l0ZSBNYXAiIG9wdGlvbiByZW5kZXJzIG9mZnNjcmVlbi4KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXgg
ZWEwNWQyNTQ4ZTJlNTczM2EzNWIwODIyMWM4ZGY4MzBiYTEyNzkyMS4uM2VmMzA3YzIyZGUyNjRh
MTkwMzg1NTFmZmU4NDEwODNjZTM5ZWU3YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFu
Z2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzOSBAQAorMjAy
MC0xMi0xNSAgS2F0ZSBDaGVuZXkgIDxrYXRoZXJpbmVfY2hlbmV5QGFwcGxlLmNvbT4KKworICAg
ICAgICBTdGlsbCBjYW4ndCBsb2dpbiB0byBteS5wbGF5c3RhdGlvbi5jb20KKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxOTkwMAorICAgICAgICA8cmRh
cjovL3Byb2JsZW0vNzIwNjI5ODU+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgSm9obiBXaWxhbmRl
ci4KKworICAgICAgICBBZGFwdGVkIGZyb20gYW4gb3JpZ2luYWwgcGF0Y2ggYnkgSm9obiBXaWxh
bmRlci4KKworICAgICAgICBUaGlzIGlzIGEgdGVtcG9yYXJ5IHF1aXJrIHRvIGFzc2lzdCBhIGhp
Z2gtdHJhZmZpYyB3ZWJzaXRlIHdoaWxlIHRoZXkKKyAgICAgICAgY29tcGxldGUgdGhlIGxhcmdl
IHRhc2sgb2YgbWlncmF0aW5nIGF3YXkgZnJvbSBsb2dpbiBmbG93cyB0aGF0CisgICAgICAgIHJl
cXVpcmUgdGhpcmQgcGFydHkgY29va2llcy4gVGhpcyBxdWlyayB3aWxsIGJlIHJlbW92ZWQgd2hl
biB0aGUgc2l0ZQorICAgICAgICBpcyB1cGRhdGVkLgorCisgICAgICAgIENyZWF0ZSBhIHF1aXJr
IHRvIGNhbGwgdGhlIFN0b3JhZ2UgQWNjZXNzIEFQSSBvbiBiZWhhbGYgb2YgU29ueS4KKworICAg
ICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9VSURlbGVnYXRlLm1tOgorICAgICAgICAoV2ViS2l0Ojpi
dWlsZExpc3QpOgorICAgICAgICAoV2ViS2l0OjpVSURlbGVnYXRlOjpVSUNsaWVudDo6cmVxdWVz
dFN0b3JhZ2VBY2Nlc3NDb25maXJtKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvV0tTdG9y
YWdlQWNjZXNzQWxlcnQubW06CisgICAgICAgIChXZWJLaXQ6OnByZXNlbnRTdG9yYWdlQWNjZXNz
QWxlcnQpOgorICAgICAgICBQcm9tcHQgZm9yIG11bHRpcGxlIGRvbWFpbnMgaWYgc2l0ZS1zcGVj
aWZpYyBxdWlya3MgYXJlIGVuYWJsZWQgYW5kCisgICAgICAgIGVpdGhlciBTb255IGxvZ2luIGRv
bWFpbiBpcyBiZWluZyByZXF1ZXN0ZWQuCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVT
dXBwb3J0L1dlYlJlc291cmNlTG9hZE9ic2VydmVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2Vi
UmVzb3VyY2VMb2FkT2JzZXJ2ZXI6Omhhc0Nyb3NzUGFnZVN0b3JhZ2VBY2Nlc3MgY29uc3QpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJSZXNvdXJjZUxvYWRPYnNlcnZlcjo6c2V0RG9tYWluc1dpdGhD
cm9zc1BhZ2VTdG9yYWdlQWNjZXNzKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBw
b3J0L1dlYlJlc291cmNlTG9hZE9ic2VydmVyLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYlBhZ2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjphZGREb21haW5XaXRo
UGFnZUxldmVsU3RvcmFnZUFjY2Vzcyk6CisgICAgICAgIFN0b3JlIGJvdGggU29ueSBsb2dpbiBk
b21haW5zIGFzIGhhdmluZyBwYWdlIGxldmVsIHN0b3JhZ2UgYWNjZXNzIGlmCisgICAgICAgIHF1
aXJrcyBhcmUgZW5hYmxlZCBhbmQgdGhlIGRvbWFpbiBwYXNzZWQgaXMgb25lIG9mIHRoZSBTb255
IGxvZ2luCisgICAgICAgIGRvbWFpbnMuIEluIHRoaXMgY2FzZSB3ZSBrbm93IHRoYXQgYm90aCBs
b2dpbiBkb21haW5zIHdlcmUgcHJvbXB0ZWQKKyAgICAgICAgZm9yLgorCiAyMDIwLTEyLTE1ICBQ
ZXIgQXJuZSBWb2xsYW4gIDxwdm9sbGFuQGFwcGxlLmNvbT4KIAogICAgICAgICBbbWFjT1NdIEFk
ZCBzYW5kYm94IHBhcmFtZXRlciBmb3IgbWVzc2FnZSBmaWx0ZXIgZW50aXRsZW1lbnQgc3RhdHVz
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcAppbmRleCAyNjg5NGYzOWY0
ZTY5ZmU4YjczMDA3OGRiNzgxZWIyZGVmZDhmZjU1Li5mMTEyODA2Mzk5NjY1YThkNDg3NmNkZDk3
NzA1MzMwZTI5OTRhMmEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1l
bnRMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5j
cHAKQEAgLTgwNCw4ICs4MDQsOCBAQCB2b2lkIERvY3VtZW50TG9hZGVyOjpyZXNwb25zZVJlY2Vp
dmVkKENhY2hlZFJlc291cmNlJiByZXNvdXJjZSwgY29uc3QgUmVzb3VyY2VSZQogICAgICAgICBh
dXRvJiBkb2N1bWVudCA9ICptX2ZyYW1lLT5kb2N1bWVudCgpOwogICAgICAgICBpZiAoUXVpcmtz
Ojppc01pY3Jvc29mdFRlYW1zUmVkaXJlY3RVUkwocmVzcG9uc2UudXJsKCkpKSB7CiAgICAgICAg
ICAgICBhdXRvIGZpcnN0UGFydHlEb21haW4gPSBSZWdpc3RyYWJsZURvbWFpbihyZXNwb25zZS51
cmwoKSk7Ci0gICAgICAgICAgICBpZiAoYXV0byBsb2dpbkRvbWFpbiA9IE5ldHdvcmtTdG9yYWdl
U2Vzc2lvbjo6bG9naW5Eb21haW5Gb3JGaXJzdFBhcnR5KGZpcnN0UGFydHlEb21haW4pKSB7Ci0g
ICAgICAgICAgICAgICAgaWYgKCFSZXNvdXJjZUxvYWRPYnNlcnZlcjo6c2hhcmVkKCkuaGFzQ3Jv
c3NQYWdlU3RvcmFnZUFjY2VzcygqbG9naW5Eb21haW4sIGZpcnN0UGFydHlEb21haW4pKSB7Cisg
ICAgICAgICAgICBpZiAoYXV0byBsb2dpbkRvbWFpbnMgPSBOZXR3b3JrU3RvcmFnZVNlc3Npb246
OmxvZ2luRG9tYWluc0ZvckZpcnN0UGFydHkoZmlyc3RQYXJ0eURvbWFpbikpIHsKKyAgICAgICAg
ICAgICAgICBpZiAoIVF1aXJrczo6aGFzU3RvcmFnZUFjY2Vzc0ZvckFsbExvZ2luRG9tYWlucygq
bG9naW5Eb21haW5zLCBmaXJzdFBhcnR5RG9tYWluKSkgewogICAgICAgICAgICAgICAgICAgICBt
X2ZyYW1lLT5uYXZpZ2F0aW9uU2NoZWR1bGVyKCkuc2NoZWR1bGVSZWRpcmVjdChkb2N1bWVudCwg
MCwgbWljcm9zb2Z0VGVhbXNSZWRpcmVjdFVSTCgpKTsKICAgICAgICAgICAgICAgICAgICAgcmV0
dXJuOwogICAgICAgICAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
UXVpcmtzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUXVpcmtzLmNwcAppbmRleCA2YzA0N2Jm
ZGUyYmZlMGQ0NGRiYTQ1ZmQxYmRjMTBhZDU1Mjc4MzBiLi41NGU2ZGUwMzYyZjNjMDQwNjgwZjBh
NjcwODJhNTI3ZDlkZWJlODUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1F1aXJr
cy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9RdWlya3MuY3BwCkBAIC05ODMsNiArOTgz
LDI1IEBAIGJvb2wgUXVpcmtzOjppc01pY3Jvc29mdFRlYW1zUmVkaXJlY3RVUkwoY29uc3QgVVJM
JiB1cmwpCiB7CiAgICAgcmV0dXJuIHVybC5ob3N0KCkgPT0gInRlYW1zLm1pY3Jvc29mdC5jb20i
X3MgJiYgdXJsLnF1ZXJ5KCkudG9TdHJpbmcoKS5jb250YWlucygiUmV0cmllZCszK3RpbWVzK3dp
dGhvdXQrc3VjY2VzcyIpOwogfQorCitzdGF0aWMgYm9vbCBpc1BsYXlzdGF0aW9uTG9naW5FbGVt
ZW50KGNvbnN0IEVsZW1lbnQmIGVsZW1lbnQpCit7CisgICAgaWYgKCFlbGVtZW50Lmhhc0NsYXNz
KCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGF1dG8mIGNsYXNzTmFtZXMgPSBlbGVt
ZW50LmNsYXNzTmFtZXMoKTsKKyAgICByZXR1cm4gY2xhc3NOYW1lcy5jb250YWlucygid2ViLXRv
b2xiYXJfX3NpZ25pbi1idXR0b24iKSB8fCBjbGFzc05hbWVzLmNvbnRhaW5zKCJzYi1zaWduaW4t
YnV0dG9uIik7Cit9CisKK2Jvb2wgUXVpcmtzOjpoYXNTdG9yYWdlQWNjZXNzRm9yQWxsTG9naW5E
b21haW5zKGNvbnN0IEhhc2hTZXQ8UmVnaXN0cmFibGVEb21haW4+JiBsb2dpbkRvbWFpbnMsIGNv
bnN0IFJlZ2lzdHJhYmxlRG9tYWluJiB0b3BGcmFtZURvbWFpbikKK3sKKyAgICBmb3IgKGF1dG8m
IGxvZ2luRG9tYWluIDogbG9naW5Eb21haW5zKSB7CisgICAgICAgIGlmICghUmVzb3VyY2VMb2Fk
T2JzZXJ2ZXI6OnNoYXJlZCgpLmhhc0Nyb3NzUGFnZVN0b3JhZ2VBY2Nlc3MobG9naW5Eb21haW4s
IHRvcEZyYW1lRG9tYWluKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisgICAg
cmV0dXJuIHRydWU7Cit9CisKICNlbmRpZgogCiBRdWlya3M6OlN0b3JhZ2VBY2Nlc3NSZXN1bHQg
UXVpcmtzOjp0cmlnZ2VyT3B0aW9uYWxTdG9yYWdlQWNjZXNzUXVpcmsoRWxlbWVudCYgZWxlbWVu
dCwgY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50JiBwbGF0Zm9ybUV2ZW50LCBjb25zdCBBdG9tU3Ry
aW5nJiBldmVudFR5cGUsIGludCBkZXRhaWwsIEVsZW1lbnQqIHJlbGF0ZWRUYXJnZXQpIGNvbnN0
CkBAIC0xMDYwLDExICsxMDc5LDM1IEBAIFF1aXJrczo6U3RvcmFnZUFjY2Vzc1Jlc3VsdCBRdWly
a3M6OnRyaWdnZXJPcHRpb25hbFN0b3JhZ2VBY2Nlc3NRdWlyayhFbGVtZW50JiBlCiAgICAgICAg
IC8vIEZJWE1FKDIxODc3OSk6IFJlbW92ZSB0aGlzIHF1aXJrIG9uY2UgbWljcm9zb2Z0LmNvbSBj
b21wbGV0ZXMgdGhlaXIgbG9naW4gZmxvdyByZWRlc2lnbi4KICAgICAgICAgaWYgKGlzTWljcm9z
b2Z0RG9tYWluKGRvbWFpbikgJiYgaXNNaWNyb3NvZnRMb2dpbkVsZW1lbnQoZWxlbWVudCkpIHsK
ICAgICAgICAgICAgIGF1dG8gZmlyc3RQYXJ0eURvbWFpbiA9IE5ldHdvcmtTdG9yYWdlU2Vzc2lv
bjo6bWFwVG9Ub3BEb21haW4oUmVnaXN0cmFibGVEb21haW46OnVuY2hlY2tlZENyZWF0ZUZyb21I
b3N0KG1fZG9jdW1lbnQtPnRvcERvY3VtZW50KCkuc2VjdXJpdHlPcmlnaW4oKS5ob3N0KCkpKTsK
LSAgICAgICAgICAgIGlmIChhdXRvIGxvZ2luRG9tYWluID0gTmV0d29ya1N0b3JhZ2VTZXNzaW9u
Ojpsb2dpbkRvbWFpbkZvckZpcnN0UGFydHkoZmlyc3RQYXJ0eURvbWFpbikpIHsKLSAgICAgICAg
ICAgICAgICBpZiAoIVJlc291cmNlTG9hZE9ic2VydmVyOjpzaGFyZWQoKS5oYXNDcm9zc1BhZ2VT
dG9yYWdlQWNjZXNzKCpsb2dpbkRvbWFpbiwgZmlyc3RQYXJ0eURvbWFpbikpIHsKLSAgICAgICAg
ICAgICAgICAgICAgRG9jdW1lbnRTdG9yYWdlQWNjZXNzOjpyZXF1ZXN0U3RvcmFnZUFjY2Vzc0Zv
ck5vbkRvY3VtZW50UXVpcmsoKm1fZG9jdW1lbnQsIFdURk1vdmUoKmxvZ2luRG9tYWluKSwgW2Zp
cnN0UGFydHlEb21haW4sIGxvZ2luRG9tYWluLCAmZWxlbWVudCwgcGxhdGZvcm1FdmVudCwgZXZl
bnRUeXBlLCBkZXRhaWwsIHJlbGF0ZWRUYXJnZXRdKFN0b3JhZ2VBY2Nlc3NXYXNHcmFudGVkIHN0
b3JhZ2VBY2Nlc3NHcmFudGVkKSBtdXRhYmxlIHsKKyAgICAgICAgICAgIGlmIChhdXRvIGxvZ2lu
RG9tYWlucyA9IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6bG9naW5Eb21haW5zRm9yRmlyc3RQYXJ0
eShmaXJzdFBhcnR5RG9tYWluKSkgeworICAgICAgICAgICAgICAgIGlmICghaGFzU3RvcmFnZUFj
Y2Vzc0ZvckFsbExvZ2luRG9tYWlucygqbG9naW5Eb21haW5zLCBmaXJzdFBhcnR5RG9tYWluKSkg
eworICAgICAgICAgICAgICAgICAgICBhdXRvIGxvZ2luRG9tYWluID0gUmVnaXN0cmFibGVEb21h
aW4oKmxvZ2luRG9tYWlucy52YWx1ZSgpLmJlZ2luKCkuZ2V0KCkpOworICAgICAgICAgICAgICAg
ICAgICBEb2N1bWVudFN0b3JhZ2VBY2Nlc3M6OnJlcXVlc3RTdG9yYWdlQWNjZXNzRm9yTm9uRG9j
dW1lbnRRdWlyaygqbV9kb2N1bWVudCwgV1RGTW92ZShsb2dpbkRvbWFpbiksIFtmaXJzdFBhcnR5
RG9tYWluLCBsb2dpbkRvbWFpbiwgJmVsZW1lbnQsIHBsYXRmb3JtRXZlbnQsIGV2ZW50VHlwZSwg
ZGV0YWlsLCByZWxhdGVkVGFyZ2V0XShTdG9yYWdlQWNjZXNzV2FzR3JhbnRlZCBzdG9yYWdlQWNj
ZXNzR3JhbnRlZCkgbXV0YWJsZSB7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoc3RvcmFn
ZUFjY2Vzc0dyYW50ZWQgPT0gU3RvcmFnZUFjY2Vzc1dhc0dyYW50ZWQ6OlllcykgeworICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFJlc291cmNlTG9hZE9ic2VydmVyOjpzaGFyZWQoKS5zZXRE
b21haW5zV2l0aENyb3NzUGFnZVN0b3JhZ2VBY2Nlc3Moe3sgZmlyc3RQYXJ0eURvbWFpbiwgbG9n
aW5Eb21haW4gfX0sIFsmZWxlbWVudCwgcGxhdGZvcm1FdmVudCwgZXZlbnRUeXBlLCBkZXRhaWws
IHJlbGF0ZWRUYXJnZXRdIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxlbWVu
dC5kaXNwYXRjaE1vdXNlRXZlbnQocGxhdGZvcm1FdmVudCwgZXZlbnRUeXBlLCBkZXRhaWwsIHJl
bGF0ZWRUYXJnZXQpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pOworICAgICAgICAg
ICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuIFF1aXJrczo6U3RvcmFnZUFjY2Vzc1Jlc3VsdDo6U2hvdWxkQ2FuY2VsRXZl
bnQ7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgICAgcmV0dXJu
IFF1aXJrczo6U3RvcmFnZUFjY2Vzc1Jlc3VsdDo6U2hvdWxkTm90Q2FuY2VsRXZlbnQ7CisgICAg
ICAgIH0KKworICAgICAgICAvLyBTb255IE5ldHdvcmsgRW50ZXJ0YWlubWVudCBsb2dpbiBjYXNl
LgorICAgICAgICAvLyBGSVhNRSgyMTg3NjApOiBSZW1vdmUgdGhpcyBxdWlyayBvbmNlIHBsYXlz
dGF0aW9uLmNvbSBjb21wbGV0ZXMgdGhlaXIgbG9naW4gZmxvdyByZWRlc2lnbi4KKyAgICAgICAg
c3RhdGljIE5ldmVyRGVzdHJveWVkPFJlZ2lzdHJhYmxlRG9tYWluPiBwbGF5U3RhdGlvbkRvbWFp
biA9IFJlZ2lzdHJhYmxlRG9tYWluOjp1bmNoZWNrZWRDcmVhdGVGcm9tUmVnaXN0cmFibGVEb21h
aW5TdHJpbmcoInBsYXlzdGF0aW9uLmNvbSJfcyk7CisgICAgICAgIGlmIChkb21haW4gPT0gcGxh
eVN0YXRpb25Eb21haW4gJiYgaXNQbGF5c3RhdGlvbkxvZ2luRWxlbWVudChlbGVtZW50KSkgewor
ICAgICAgICAgICAgYXV0byBmaXJzdFBhcnR5RG9tYWluID0gUmVnaXN0cmFibGVEb21haW4obV9k
b2N1bWVudC0+dG9wRG9jdW1lbnQoKS51cmwoKSk7CisgICAgICAgICAgICBpZiAoYXV0byBsb2dp
bkRvbWFpbnMgPSBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmxvZ2luRG9tYWluc0ZvckZpcnN0UGFy
dHkoZmlyc3RQYXJ0eURvbWFpbikpIHsKKyAgICAgICAgICAgICAgICBpZiAoIWhhc1N0b3JhZ2VB
Y2Nlc3NGb3JBbGxMb2dpbkRvbWFpbnMoKmxvZ2luRG9tYWlucywgZmlyc3RQYXJ0eURvbWFpbikp
IHsKKyAgICAgICAgICAgICAgICAgICAgLy8gU2VuZCBvbmx5IG9uZSBsb2dpbiBkb21haW4gdG8g
YXZvaWQgY2hhbmdpbmcgZXhpc3RpbmcgU3RvcmFnZSBBY2Nlc3MgY29kZSwgd2hpY2ggY2FuIG9u
bHkgaGFuZGxlIGEgc2luZ2xlIGRvbWFpbi4KKyAgICAgICAgICAgICAgICAgICAgLy8gV2Ugd2ls
bCBtYXRjaCBTb255IGxvZ2luIGRvbWFpbnMgdXAgd2hlbiBwcm9tcHRpbmcgdGhlIHVzZXIgYW5k
IHN0b3JpbmcgdGhlIGRvbWFpbnMuCisgICAgICAgICAgICAgICAgICAgIGF1dG8gbG9naW5Eb21h
aW4gPSBSZWdpc3RyYWJsZURvbWFpbigqbG9naW5Eb21haW5zLnZhbHVlKCkuYmVnaW4oKS5nZXQo
KSk7CisgICAgICAgICAgICAgICAgICAgIERvY3VtZW50U3RvcmFnZUFjY2Vzczo6cmVxdWVzdFN0
b3JhZ2VBY2Nlc3NGb3JOb25Eb2N1bWVudFF1aXJrKCptX2RvY3VtZW50LCBXVEZNb3ZlKGxvZ2lu
RG9tYWluKSwgW2ZpcnN0UGFydHlEb21haW4sIGxvZ2luRG9tYWluLCAmZWxlbWVudCwgcGxhdGZv
cm1FdmVudCwgZXZlbnRUeXBlLCBkZXRhaWwsIHJlbGF0ZWRUYXJnZXRdKFN0b3JhZ2VBY2Nlc3NX
YXNHcmFudGVkIHN0b3JhZ2VBY2Nlc3NHcmFudGVkKSBtdXRhYmxlIHsKICAgICAgICAgICAgICAg
ICAgICAgICAgIGlmIChzdG9yYWdlQWNjZXNzR3JhbnRlZCA9PSBTdG9yYWdlQWNjZXNzV2FzR3Jh
bnRlZDo6WWVzKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgUmVzb3VyY2VMb2FkT2Jz
ZXJ2ZXI6OnNoYXJlZCgpLnNldERvbWFpbnNXaXRoQ3Jvc3NQYWdlU3RvcmFnZUFjY2Vzcyh7eyBm
aXJzdFBhcnR5RG9tYWluLCAqbG9naW5Eb21haW4gfX0sIFsmZWxlbWVudCwgcGxhdGZvcm1FdmVu
dCwgZXZlbnRUeXBlLCBkZXRhaWwsIHJlbGF0ZWRUYXJnZXRdIHsKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBSZXNvdXJjZUxvYWRPYnNlcnZlcjo6c2hhcmVkKCkuc2V0RG9tYWluc1dpdGhD
cm9zc1BhZ2VTdG9yYWdlQWNjZXNzKHt7IGZpcnN0UGFydHlEb21haW4sIGxvZ2luRG9tYWluIH19
LCBbJmVsZW1lbnQsIHBsYXRmb3JtRXZlbnQsIGV2ZW50VHlwZSwgZGV0YWlsLCByZWxhdGVkVGFy
Z2V0XSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsZW1lbnQuZGlzcGF0Y2hN
b3VzZUV2ZW50KHBsYXRmb3JtRXZlbnQsIGV2ZW50VHlwZSwgZGV0YWlsLCByZWxhdGVkVGFyZ2V0
KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgICAgICAg
ICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUXVpcmtzLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL1F1aXJrcy5oCmluZGV4IDdjNWQwNmY2ZWRjYzZjNjI5MzFlNDllZDhkNThi
MjcxOTQyOGUyM2EuLjUxMTFhYjhkZWUyYWYxMzk5ZWRkMDcyOGM5ZjAwZWE1OTNhN2VhY2UgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUXVpcmtzLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9RdWlya3MuaApAQCAtMTI0LDYgKzEyNCw3IEBAIHB1YmxpYzoKIAogI2lmIEVOQUJM
RShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCiAgICAgc3RhdGljIGJvb2wgaXNNaWNyb3NvZnRU
ZWFtc1JlZGlyZWN0VVJMKGNvbnN0IFVSTCYpOworICAgIHN0YXRpYyBib29sIGhhc1N0b3JhZ2VB
Y2Nlc3NGb3JBbGxMb2dpbkRvbWFpbnMoY29uc3QgSGFzaFNldDxSZWdpc3RyYWJsZURvbWFpbj4m
LCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYpOwogI2VuZGlmCiAKIHByaXZhdGU6CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtTdG9yYWdlU2Vzc2lv
bi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtTdG9yYWdlU2Vz
c2lvbi5jcHAKaW5kZXggMWE2N2YzMzZlMzI3N2U5OTIyODliNTVjMzY0MjE3NDg2MTNlMDkyZS4u
ZjU3MmRlYzMyNzA3ZDk4YzEwZjlkNzVlMGQ5MjdmMTk5Y2RiNGUxNyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9OZXR3b3JrU3RvcmFnZVNlc3Npb24uY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvTmV0d29ya1N0b3JhZ2VTZXNzaW9u
LmNwcApAQCAtMjE4LDcgKzIxOCwxNCBAQCB2b2lkIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6c2V0
RG9tYWluc1dpdGhDcm9zc1BhZ2VTdG9yYWdlQWNjZXNzKGNvbnN0IEhhc2hNYXA8VAogCiB2b2lk
IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6Z3JhbnRDcm9zc1BhZ2VTdG9yYWdlQWNjZXNzKGNvbnN0
IFRvcEZyYW1lRG9tYWluJiB0b3BGcmFtZURvbWFpbiwgY29uc3QgU3ViUmVzb3VyY2VEb21haW4m
IHJlc291cmNlRG9tYWluKQogewotICAgIG1fcGFpcnNHcmFudGVkQ3Jvc3NQYWdlU3RvcmFnZUFj
Y2Vzcy5hZGQodG9wRnJhbWVEb21haW4sIHJlc291cmNlRG9tYWluKTsKKyAgICBtX3BhaXJzR3Jh
bnRlZENyb3NzUGFnZVN0b3JhZ2VBY2Nlc3MuZW5zdXJlKHRvcEZyYW1lRG9tYWluLCBbXSB7IHJl
dHVybiBIYXNoU2V0PFJlZ2lzdHJhYmxlRG9tYWluPiB7IH07CisgICAgICAgIH0pLml0ZXJhdG9y
LT52YWx1ZS5hZGQocmVzb3VyY2VEb21haW4pOworCisgICAgLy8gU29tZSBzaXRlcyBoYXZlIHF1
aXJrcyB3aGVyZSBtdWx0aXBsZSBsb2dpbiBkb21haW5zIHJlcXVpcmUgc3RvcmFnZSBhY2Nlc3Mu
CisgICAgaWYgKGF1dG8gYWRkaXRpb25hbExvZ2luRG9tYWluID0gZmluZEFkZGl0aW9uYWxMb2dp
bkRvbWFpbih0b3BGcmFtZURvbWFpbiwgcmVzb3VyY2VEb21haW4pKSB7CisgICAgICAgIG1fcGFp
cnNHcmFudGVkQ3Jvc3NQYWdlU3RvcmFnZUFjY2Vzcy5lbnN1cmUodG9wRnJhbWVEb21haW4sIFtd
IHsgcmV0dXJuIEhhc2hTZXQ8UmVnaXN0cmFibGVEb21haW4+IHsgfTsKKyAgICAgICAgICAgIH0p
Lml0ZXJhdG9yLT52YWx1ZS5hZGQoKmFkZGl0aW9uYWxMb2dpbkRvbWFpbik7CisgICAgfQogfQog
CiBib29sIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6aGFzU3RvcmFnZUFjY2Vzcyhjb25zdCBSZWdp
c3RyYWJsZURvbWFpbiYgcmVzb3VyY2VEb21haW4sIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBm
aXJzdFBhcnR5RG9tYWluLCBPcHRpb25hbDxGcmFtZUlkZW50aWZpZXI+IGZyYW1lSUQsIFBhZ2VJ
ZGVudGlmaWVyIHBhZ2VJRCkgY29uc3QKQEAgLTI0MSw3ICsyNDgsNyBAQCBib29sIE5ldHdvcmtT
dG9yYWdlU2Vzc2lvbjo6aGFzU3RvcmFnZUFjY2Vzcyhjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYg
cmVzb3VyY2VEbwogICAgICAgICB9CiAKICAgICAgICAgYXV0byBpdCA9IG1fcGFpcnNHcmFudGVk
Q3Jvc3NQYWdlU3RvcmFnZUFjY2Vzcy5maW5kKGZpcnN0UGFydHlEb21haW4pOwotICAgICAgICBp
ZiAoaXQgIT0gbV9wYWlyc0dyYW50ZWRDcm9zc1BhZ2VTdG9yYWdlQWNjZXNzLmVuZCgpICYmIGl0
LT52YWx1ZSA9PSByZXNvdXJjZURvbWFpbikKKyAgICAgICAgaWYgKGl0ICE9IG1fcGFpcnNHcmFu
dGVkQ3Jvc3NQYWdlU3RvcmFnZUFjY2Vzcy5lbmQoKSAmJiBpdC0+dmFsdWUuY29udGFpbnMocmVz
b3VyY2VEb21haW4pKQogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogCkBAIC0zNzQs
MTIgKzM4MSwxNSBAQCBPcHRpb25hbDxTZWNvbmRzPiBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmNs
aWVudFNpZGVDb29raWVDYXAoY29uc3QgUmVnaXN0cmFibGVEbwogICAgIHJldHVybiBtX2FnZUNh
cEZvckNsaWVudFNpZGVDb29raWVzOwogfQogCi1IYXNoTWFwPFJlZ2lzdHJhYmxlRG9tYWluLCBS
ZWdpc3RyYWJsZURvbWFpbj4mIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6c3RvcmFnZUFjY2Vzc1F1
aXJrcygpCitIYXNoTWFwPFJlZ2lzdHJhYmxlRG9tYWluLCBIYXNoU2V0PFJlZ2lzdHJhYmxlRG9t
YWluPj4mIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6c3RvcmFnZUFjY2Vzc1F1aXJrcygpCiB7Ci0g
ICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEhhc2hNYXA8UmVnaXN0cmFibGVEb21haW4sIFJlZ2lz
dHJhYmxlRG9tYWluPj4gbWFwID0gW10gewotICAgICAgICBIYXNoTWFwPFJlZ2lzdHJhYmxlRG9t
YWluLCBSZWdpc3RyYWJsZURvbWFpbj4gbWFwOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxI
YXNoTWFwPFJlZ2lzdHJhYmxlRG9tYWluLCBIYXNoU2V0PFJlZ2lzdHJhYmxlRG9tYWluPj4+IG1h
cCA9IFtdIHsKKyAgICAgICAgSGFzaE1hcDxSZWdpc3RyYWJsZURvbWFpbiwgSGFzaFNldDxSZWdp
c3RyYWJsZURvbWFpbj4+IG1hcDsKICAgICAgICAgbWFwLmFkZChSZWdpc3RyYWJsZURvbWFpbjo6
dW5jaGVja2VkQ3JlYXRlRnJvbVJlZ2lzdHJhYmxlRG9tYWluU3RyaW5nKCJtaWNyb3NvZnQuY29t
IiksCi0gICAgICAgICAgICBSZWdpc3RyYWJsZURvbWFpbjo6dW5jaGVja2VkQ3JlYXRlRnJvbVJl
Z2lzdHJhYmxlRG9tYWluU3RyaW5nKCJtaWNyb3NvZnRvbmxpbmUuY29tIl9zKSk7CisgICAgICAg
ICAgICBIYXNoU2V0IHsgUmVnaXN0cmFibGVEb21haW46OnVuY2hlY2tlZENyZWF0ZUZyb21SZWdp
c3RyYWJsZURvbWFpblN0cmluZygibWljcm9zb2Z0b25saW5lLmNvbSJfcykgfSk7CisgICAgICAg
IG1hcC5hZGQoUmVnaXN0cmFibGVEb21haW46OnVuY2hlY2tlZENyZWF0ZUZyb21SZWdpc3RyYWJs
ZURvbWFpblN0cmluZygicGxheXN0YXRpb24uY29tIiksIEhhc2hTZXQgeworICAgICAgICAgICAg
UmVnaXN0cmFibGVEb21haW46OnVuY2hlY2tlZENyZWF0ZUZyb21SZWdpc3RyYWJsZURvbWFpblN0
cmluZygic29ueWVudGVydGFpbm1lbnRuZXR3b3JrLmNvbSJfcyksCisgICAgICAgICAgICBSZWdp
c3RyYWJsZURvbWFpbjo6dW5jaGVja2VkQ3JlYXRlRnJvbVJlZ2lzdHJhYmxlRG9tYWluU3RyaW5n
KCJzb255LmNvbSJfcykgfSk7CiAgICAgICAgIHJldHVybiBtYXA7CiAgICAgfSgpOwogICAgIHJl
dHVybiBtYXAuZ2V0KCk7CkBAIC0zODcsOCArMzk3LDggQEAgSGFzaE1hcDxSZWdpc3RyYWJsZURv
bWFpbiwgUmVnaXN0cmFibGVEb21haW4+JiBOZXR3b3JrU3RvcmFnZVNlc3Npb246OnN0b3JhZ2VB
Y2MKIAogYm9vbCBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmxvZ2luRG9tYWluTWF0Y2hlc1JlcXVl
c3RpbmdEb21haW4oY29uc3QgVG9wRnJhbWVEb21haW4mIHRvcEZyYW1lRG9tYWluLCBjb25zdCBT
dWJSZXNvdXJjZURvbWFpbiYgcmVzb3VyY2VEb21haW4pCiB7Ci0gICAgYXV0byBsb2dpbkRvbWFp
biA9IFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6bG9naW5Eb21haW5Gb3JGaXJzdFBh
cnR5KHRvcEZyYW1lRG9tYWluKTsKLSAgICByZXR1cm4gbG9naW5Eb21haW4gJiYgcmVzb3VyY2VE
b21haW4gPT0gbG9naW5Eb21haW47CisgICAgYXV0byBsb2dpbkRvbWFpbnMgPSBXZWJDb3JlOjpO
ZXR3b3JrU3RvcmFnZVNlc3Npb246OmxvZ2luRG9tYWluc0ZvckZpcnN0UGFydHkodG9wRnJhbWVE
b21haW4pOworICAgIHJldHVybiBsb2dpbkRvbWFpbnMgJiYgbG9naW5Eb21haW5zLnZhbHVlKCku
Y29udGFpbnMocmVzb3VyY2VEb21haW4pOwogfQogCiBib29sIE5ldHdvcmtTdG9yYWdlU2Vzc2lv
bjo6Y2FuUmVxdWVzdFN0b3JhZ2VBY2Nlc3NGb3JMb2dpblB1cnBvc2VzV2l0aG91dFByaW9yVXNl
ckludGVyYWN0aW9uKGNvbnN0IFN1YlJlc291cmNlRG9tYWluJiByZXNvdXJjZURvbWFpbiwgY29u
c3QgVG9wRnJhbWVEb21haW4mIHRvcEZyYW1lRG9tYWluKQpAQCAtMzk2LDcgKzQwNiw3IEBAIGJv
b2wgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpjYW5SZXF1ZXN0U3RvcmFnZUFjY2Vzc0ZvckxvZ2lu
UHVycG9zZXNXaXRob3V0UHJpb3JVCiAgICAgcmV0dXJuIGxvZ2luRG9tYWluTWF0Y2hlc1JlcXVl
c3RpbmdEb21haW4odG9wRnJhbWVEb21haW4sIHJlc291cmNlRG9tYWluKTsKIH0KIAotT3B0aW9u
YWw8UmVnaXN0cmFibGVEb21haW4+IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6bG9naW5Eb21haW5G
b3JGaXJzdFBhcnR5KGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiB0b3BGcmFtZURvbWFpbikKK09w
dGlvbmFsPEhhc2hTZXQ8UmVnaXN0cmFibGVEb21haW4+PiBOZXR3b3JrU3RvcmFnZVNlc3Npb246
OmxvZ2luRG9tYWluc0ZvckZpcnN0UGFydHkoY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHRvcEZy
YW1lRG9tYWluKQogewogICAgIGF1dG8gaXQgPSBzdG9yYWdlQWNjZXNzUXVpcmtzKCkuZmluZCh0
b3BGcmFtZURvbWFpbik7CiAgICAgaWYgKGl0ICE9IHN0b3JhZ2VBY2Nlc3NRdWlya3MoKS5lbmQo
KSkKQEAgLTQwNCw2ICs0MTQsMTcgQEAgT3B0aW9uYWw8UmVnaXN0cmFibGVEb21haW4+IE5ldHdv
cmtTdG9yYWdlU2Vzc2lvbjo6bG9naW5Eb21haW5Gb3JGaXJzdFBhcnR5KGNvbnMKICAgICByZXR1
cm4gV1RGOjpudWxsb3B0OwogfQogCitPcHRpb25hbDxSZWdpc3RyYWJsZURvbWFpbj4gTmV0d29y
a1N0b3JhZ2VTZXNzaW9uOjpmaW5kQWRkaXRpb25hbExvZ2luRG9tYWluKGNvbnN0IFRvcEZyYW1l
RG9tYWluJiB0b3BEb21haW4sIGNvbnN0IFN1YlJlc291cmNlRG9tYWluJiBzdWJEb21haW4pCit7
CisgICAgaWYgKHN1YkRvbWFpbi5zdHJpbmcoKSA9PSAic29ueS5jb20iX3MgJiYgdG9wRG9tYWlu
LnN0cmluZygpID09ICJwbGF5c3RhdGlvbi5jb20iX3MpCisgICAgICAgIHJldHVybiBSZWdpc3Ry
YWJsZURvbWFpbjo6dW5jaGVja2VkQ3JlYXRlRnJvbVJlZ2lzdHJhYmxlRG9tYWluU3RyaW5nKCJz
b255ZW50ZXJ0YWlubWVudG5ldHdvcmsuY29tIl9zKTsKKworICAgIGlmIChzdWJEb21haW4uc3Ry
aW5nKCkgPT0gInNvbnllbnRlcnRhaW5tZW50bmV0d29yay5jb20iX3MgJiYgdG9wRG9tYWluLnN0
cmluZygpID09ICJwbGF5c3RhdGlvbi5jb20iX3MpCisgICAgICAgIHJldHVybiBSZWdpc3RyYWJs
ZURvbWFpbjo6dW5jaGVja2VkQ3JlYXRlRnJvbVJlZ2lzdHJhYmxlRG9tYWluU3RyaW5nKCJzb255
LmNvbSJfcyk7CisKKyAgICByZXR1cm4gV1RGOjpudWxsb3B0OworfQorCiBSZWdpc3RyYWJsZURv
bWFpbiBOZXR3b3JrU3RvcmFnZVNlc3Npb246Om1hcFRvVG9wRG9tYWluKGNvbnN0IFJlZ2lzdHJh
YmxlRG9tYWluJiBkb21haW5Ub01hcCkKIHsKICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8SGFz
aE1hcDxSZWdpc3RyYWJsZURvbWFpbiwgUmVnaXN0cmFibGVEb21haW4+PiBtYXAgPSBbXSB7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtTdG9yYWdl
U2Vzc2lvbi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9OZXR3b3JrU3RvcmFn
ZVNlc3Npb24uaAppbmRleCBjYTM0ZTg5YjVjNDJlODI0NjZlNjAxZmQ0NDA4ZTVjYmM2OTMyMjdl
Li5iNDFhYzQwZTM1MTc3YzBjMjJjNWMwMzc4NDM3MjM4YzVlMWJiNzM1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtTdG9yYWdlU2Vzc2lvbi5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvTmV0d29ya1N0b3JhZ2VTZXNzaW9u
LmgKQEAgLTIxNSwxMSArMjE1LDEzIEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lk
IHJlc2V0Q3Jvc3NTaXRlTG9hZHNXaXRoTGlua0RlY29yYXRpb25Gb3JUZXN0aW5nKCk7CiAgICAg
V0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRUaGlyZFBhcnR5Q29va2llQmxvY2tpbmdNb2RlKFRoaXJk
UGFydHlDb29raWVCbG9ja2luZ01vZGUpOwogCi0gICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIEhh
c2hNYXA8UmVnaXN0cmFibGVEb21haW4sIFJlZ2lzdHJhYmxlRG9tYWluPiYgc3RvcmFnZUFjY2Vz
c1F1aXJrcygpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBIYXNoTWFwPFJlZ2lzdHJhYmxl
RG9tYWluLCBIYXNoU2V0PFJlZ2lzdHJhYmxlRG9tYWluPj4mIHN0b3JhZ2VBY2Nlc3NRdWlya3Mo
KTsKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgYm9vbCBjYW5SZXF1ZXN0U3RvcmFnZUFjY2Vz
c0ZvckxvZ2luUHVycG9zZXNXaXRob3V0UHJpb3JVc2VySW50ZXJhY3Rpb24oY29uc3QgU3ViUmVz
b3VyY2VEb21haW4mLCBjb25zdCBUb3BGcmFtZURvbWFpbiYpOwotICAgIFdFQkNPUkVfRVhQT1JU
IHN0YXRpYyBPcHRpb25hbDxSZWdpc3RyYWJsZURvbWFpbj4gbG9naW5Eb21haW5Gb3JGaXJzdFBh
cnR5KGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJik7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGlj
IE9wdGlvbmFsPEhhc2hTZXQ8UmVnaXN0cmFibGVEb21haW4+PiBsb2dpbkRvbWFpbnNGb3JGaXJz
dFBhcnR5KGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJik7CiAgICAgV0VCQ09SRV9FWFBPUlQgc3Rh
dGljIGJvb2wgbG9naW5Eb21haW5NYXRjaGVzUmVxdWVzdGluZ0RvbWFpbihjb25zdCBUb3BGcmFt
ZURvbWFpbiYsIGNvbnN0IFN1YlJlc291cmNlRG9tYWluJik7CiAgICAgV0VCQ09SRV9FWFBPUlQg
c3RhdGljIFJlZ2lzdHJhYmxlRG9tYWluIG1hcFRvVG9wRG9tYWluKGNvbnN0IFJlZ2lzdHJhYmxl
RG9tYWluJik7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIE9wdGlvbmFsPFJlZ2lzdHJhYmxl
RG9tYWluPiBmaW5kQWRkaXRpb25hbExvZ2luRG9tYWluKGNvbnN0IFRvcEZyYW1lRG9tYWluJiwg
Y29uc3QgU3ViUmVzb3VyY2VEb21haW4mKTsKKwogI2VuZGlmCiAgICAgCiAjaWYgRU5BQkxFKEFQ
UF9CT1VORF9ET01BSU5TKQpAQCAtMjc5LDcgKzI4MSw3IEBAIHByaXZhdGU6CiAgICAgSGFzaFNl
dDxSZWdpc3RyYWJsZURvbWFpbj4gbV9yZWdpc3RyYWJsZURvbWFpbnNXaXRoVXNlckludGVyYWN0
aW9uQXNGaXJzdFBhcnR5OwogICAgIEhhc2hNYXA8UGFnZUlkZW50aWZpZXIsIEhhc2hNYXA8RnJh
bWVJZGVudGlmaWVyLCBSZWdpc3RyYWJsZURvbWFpbj4+IG1fZnJhbWVzR3JhbnRlZFN0b3JhZ2VB
Y2Nlc3M7CiAgICAgSGFzaE1hcDxQYWdlSWRlbnRpZmllciwgSGFzaE1hcDxSZWdpc3RyYWJsZURv
bWFpbiwgUmVnaXN0cmFibGVEb21haW4+PiBtX3BhZ2VzR3JhbnRlZFN0b3JhZ2VBY2Nlc3M7Ci0g
ICAgSGFzaE1hcDxUb3BGcmFtZURvbWFpbiwgU3ViUmVzb3VyY2VEb21haW4+IG1fcGFpcnNHcmFu
dGVkQ3Jvc3NQYWdlU3RvcmFnZUFjY2VzczsKKyAgICBIYXNoTWFwPFRvcEZyYW1lRG9tYWluLCBI
YXNoU2V0PFN1YlJlc291cmNlRG9tYWluPj4gbV9wYWlyc0dyYW50ZWRDcm9zc1BhZ2VTdG9yYWdl
QWNjZXNzOwogICAgIE9wdGlvbmFsPFNlY29uZHM+IG1fY2FjaGVNYXhBZ2VDYXBGb3JQcmV2YWxl
bnRSZXNvdXJjZXMgeyB9OwogICAgIE9wdGlvbmFsPFNlY29uZHM+IG1fYWdlQ2FwRm9yQ2xpZW50
U2lkZUNvb2tpZXMgeyB9OwogICAgIE9wdGlvbmFsPFNlY29uZHM+IG1fYWdlQ2FwRm9yQ2xpZW50
U2lkZUNvb2tpZXNTaG9ydCB7IH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9Db2NvYS9VSURlbGVnYXRlLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvVUlE
ZWxlZ2F0ZS5tbQppbmRleCBmYWVkMTI4NzdiMDc1YjdhMGU2MjlhMzEzNzEyN2Y5NmRiMzhiY2Jl
Li5kMDcyMzIzODczMzRkZWIxYTg3ZjUwMjNiYzY0OTQ3YzAwNmVlNzAxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9VSURlbGVnYXRlLm1tCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0NvY29hL1VJRGVsZWdhdGUubW0KQEAgLTM0NSw3ICszNDUsMTYgQEAg
dm9pZCBVSURlbGVnYXRlOjpVSUNsaWVudDo6cnVuSmF2YVNjcmlwdFByb21wdChXZWJQYWdlUHJv
eHkmIHBhZ2UsIGNvbnN0IFdURjo6U3QKICAgICB9KS5nZXQoKV07CiB9CiAKLXZvaWQgVUlEZWxl
Z2F0ZTo6VUlDbGllbnQ6OnJlcXVlc3RTdG9yYWdlQWNjZXNzQ29uZmlybShXZWJQYWdlUHJveHkm
LCBXZWJGcmFtZVByb3h5KiwgY29uc3QgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mIHJlcXVl
c3RpbmdEb21haW4sIGNvbnN0IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiBjdXJyZW50RG9t
YWluLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQor
c3RhdGljIFN0cmluZyBidWlsZExpc3RGb3JTdG9yYWdlQWNjZXNzUHJvbXB0KGNvbnN0IFdlYkNv
cmU6OlJlZ2lzdHJhYmxlRG9tYWluIHN1YkRvbWFpbk9uZSwgY29uc3QgV2ViQ29yZTo6UmVnaXN0
cmFibGVEb21haW4gc3ViRG9tYWluVHdvKQoreworICAgIFN0cmluZ0J1aWxkZXIgYnVpbGRlcjsK
KyAgICBidWlsZGVyLmFwcGVuZChzdWJEb21haW5PbmUuc3RyaW5nKCkpOworICAgIGJ1aWxkZXIu
YXBwZW5kKFN0cmluZyhbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpAIuKAnCBhbmQg4oCcIl0p
KTsKKyAgICBidWlsZGVyLmFwcGVuZChzdWJEb21haW5Ud28uc3RyaW5nKCkpOworICAgIHJldHVy
biBidWlsZGVyLnRvU3RyaW5nKCk7Cit9CisKK3ZvaWQgVUlEZWxlZ2F0ZTo6VUlDbGllbnQ6OnJl
cXVlc3RTdG9yYWdlQWNjZXNzQ29uZmlybShXZWJQYWdlUHJveHkmIHdlYlBhZ2VQcm94eSwgV2Vi
RnJhbWVQcm94eSosIGNvbnN0IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiByZXF1ZXN0aW5n
RG9tYWluLCBjb25zdCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYgY3VycmVudERvbWFpbiwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAg
ICBhdXRvIGRlbGVnYXRlID0gbV91aURlbGVnYXRlLm1fZGVsZWdhdGUuZ2V0KCk7CiAgICAgaWYg
KCFkZWxlZ2F0ZSkgewpAQCAtMzUzLDE1ICszNjIsMjIgQEAgdm9pZCBVSURlbGVnYXRlOjpVSUNs
aWVudDo6cmVxdWVzdFN0b3JhZ2VBY2Nlc3NDb25maXJtKFdlYlBhZ2VQcm94eSYsIFdlYkZyYW1l
UHIKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICAKKyAgICBTdHJpbmcgcmVxdWVzdGluZ1N0
cmluZzsKKyAgICAvLyBTb21lIHNpdGVzIGhhdmUgcXVpcmtzIHdoZXJlIG11bHRpcGxlIGxvZ2lu
IGRvbWFpbnMgcmVxdWlyZSBzdG9yYWdlIGFjY2Vzcy4KKyAgICBpZiAoYXV0byBhZGRpdGlvbmFs
TG9naW5Eb21haW4gPSBXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb246OmZpbmRBZGRpdGlv
bmFsTG9naW5Eb21haW4oY3VycmVudERvbWFpbiwgcmVxdWVzdGluZ0RvbWFpbikpCisgICAgICAg
IHJlcXVlc3RpbmdTdHJpbmcgPSBidWlsZExpc3RGb3JTdG9yYWdlQWNjZXNzUHJvbXB0KHJlcXVl
c3RpbmdEb21haW4sICphZGRpdGlvbmFsTG9naW5Eb21haW4pOworICAgIGVsc2UKKyAgICAgICAg
cmVxdWVzdGluZ1N0cmluZyA9IHJlcXVlc3RpbmdEb21haW4uc3RyaW5nKCk7CisKICAgICBpZiAo
IW1fdWlEZWxlZ2F0ZS5tX2RlbGVnYXRlTWV0aG9kcy53ZWJWaWV3UmVxdWVzdFN0b3JhZ2VBY2Nl
c3NQYW5lbFVuZGVyRmlyc3RQYXJ0eUNvbXBsZXRpb25IYW5kbGVyKSB7CiAjaWYgIVBMQVRGT1JN
KFdBVENIT1MpICYmICFQTEFURk9STShBUFBMRVRWKQotICAgICAgICBwcmVzZW50U3RvcmFnZUFj
Y2Vzc0FsZXJ0KG1fdWlEZWxlZ2F0ZS5tX3dlYlZpZXcsIHJlcXVlc3RpbmdEb21haW4sIGN1cnJl
bnREb21haW4sIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKKyAgICAgICAgcHJlc2VudFN0
b3JhZ2VBY2Nlc3NBbGVydChtX3VpRGVsZWdhdGUubV93ZWJWaWV3LCByZXF1ZXN0aW5nU3RyaW5n
LCBjdXJyZW50RG9tYWluLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiAjZW5kaWYKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KIAogICAgIGF1dG8gY2hlY2tlciA9IENvbXBsZXRpb25IYW5k
bGVyQ2FsbENoZWNrZXI6OmNyZWF0ZShkZWxlZ2F0ZS5nZXQoKSwgQHNlbGVjdG9yKF93ZWJWaWV3
OnJlcXVlc3RTdG9yYWdlQWNjZXNzUGFuZWxGb3JEb21haW46dW5kZXJDdXJyZW50RG9tYWluOmNv
bXBsZXRpb25IYW5kbGVyOikpOwotICAgIFsoaWQgPFdLVUlEZWxlZ2F0ZVByaXZhdGU+KWRlbGVn
YXRlIF93ZWJWaWV3Om1fdWlEZWxlZ2F0ZS5tX3dlYlZpZXcgcmVxdWVzdFN0b3JhZ2VBY2Nlc3NQ
YW5lbEZvckRvbWFpbjpyZXF1ZXN0aW5nRG9tYWluLnN0cmluZygpIHVuZGVyQ3VycmVudERvbWFp
bjpjdXJyZW50RG9tYWluLnN0cmluZygpIGNvbXBsZXRpb25IYW5kbGVyOm1ha2VCbG9ja1B0cihb
Y29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSwgY2hlY2tlciA9
IFdURk1vdmUoY2hlY2tlcildIChCT09MIHJlc3VsdCkgbXV0YWJsZSB7CisgICAgWyhpZCA8V0tV
SURlbGVnYXRlUHJpdmF0ZT4pZGVsZWdhdGUgX3dlYlZpZXc6bV91aURlbGVnYXRlLm1fd2ViVmll
dyByZXF1ZXN0U3RvcmFnZUFjY2Vzc1BhbmVsRm9yRG9tYWluOnJlcXVlc3RpbmdTdHJpbmcgdW5k
ZXJDdXJyZW50RG9tYWluOmN1cnJlbnREb21haW4uc3RyaW5nKCkgY29tcGxldGlvbkhhbmRsZXI6
bWFrZUJsb2NrUHRyKFtjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRs
ZXIpLCBjaGVja2VyID0gV1RGTW92ZShjaGVja2VyKV0gKEJPT0wgcmVzdWx0KSBtdXRhYmxlIHsK
ICAgICAgICAgaWYgKGNoZWNrZXItPmNvbXBsZXRpb25IYW5kbGVySGFzQmVlbkNhbGxlZCgpKQog
ICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihyZXN1bHQpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV0tTdG9yYWdlQWNjZXNz
QWxlcnQuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dLU3RvcmFnZUFjY2Vzc0Fs
ZXJ0LmgKaW5kZXggY2MxOTMxYjMwZjhlNjM2MzUxZDIxZWZlMWMwMTAyNmI1MjA0NmNlOC4uNmI3
NzI5NjhjNDk5NzZlMTk0YjZhMjA0OGZjZDExOWM2ZmM2YTA1YSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV0tTdG9yYWdlQWNjZXNzQWxlcnQuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XS1N0b3JhZ2VBY2Nlc3NBbGVydC5oCkBAIC00MSw3
ICs0MSw3IEBAIGNsYXNzIFJlZ2lzdHJhYmxlRG9tYWluOwogCiBuYW1lc3BhY2UgV2ViS2l0IHsK
IAotdm9pZCBwcmVzZW50U3RvcmFnZUFjY2Vzc0FsZXJ0KFdLV2ViVmlldyAqLCBjb25zdCBXZWJD
b3JlOjpSZWdpc3RyYWJsZURvbWFpbiYgcmVxdWVzdGluZ0RvbWFpbiwgY29uc3QgV2ViQ29yZTo6
UmVnaXN0cmFibGVEb21haW4mIGN1cnJlbnREb21haW4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
Ym9vbCk+JiYpOwordm9pZCBwcmVzZW50U3RvcmFnZUFjY2Vzc0FsZXJ0KFdLV2ViVmlldyAqLCBj
b25zdCBTdHJpbmcmIHJlcXVlc3RpbmdTdHJpbmcsIGNvbnN0IFdlYkNvcmU6OlJlZ2lzdHJhYmxl
RG9tYWluJiBjdXJyZW50RG9tYWluLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsK
IAogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XS1N0b3Jh
Z2VBY2Nlc3NBbGVydC5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dLU3RvcmFn
ZUFjY2Vzc0FsZXJ0Lm1tCmluZGV4IGE5Y2UwNzVhZGQwOTAxMWYwOGMxMjkzOGIzYWUyYmU2YjY3
NjM1MWQuLjYyNzgyYTY2MDdjMjBkMWQ3ODYxNzY1MTA5MTY5ZmU2NTgwYmY1YTQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dLU3RvcmFnZUFjY2Vzc0FsZXJ0Lm1t
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dLU3RvcmFnZUFjY2Vzc0FsZXJ0
Lm1tCkBAIC0zMCwxOCArMzAsMTkgQEAKIAogI2ltcG9ydCAiV0tXZWJWaWV3SW50ZXJuYWwuaCIK
ICNpbXBvcnQgPFdlYkNvcmUvTG9jYWxpemVkU3RyaW5ncy5oPgorI2ltcG9ydCA8V2ViQ29yZS9O
ZXR3b3JrU3RvcmFnZVNlc3Npb24uaD4KICNpbXBvcnQgPFdlYkNvcmUvUmVnaXN0cmFibGVEb21h
aW4uaD4KICNpbXBvcnQgPHd0Zi9CbG9ja1B0ci5oPgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAot
dm9pZCBwcmVzZW50U3RvcmFnZUFjY2Vzc0FsZXJ0KFdLV2ViVmlldyAqd2ViVmlldywgY29uc3Qg
V2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mIHJlcXVlc3RpbmcsIGNvbnN0IFdlYkNvcmU6OlJl
Z2lzdHJhYmxlRG9tYWluJiBjdXJyZW50LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYm
IGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBwcmVzZW50U3RvcmFnZUFjY2Vzc0FsZXJ0KFdLV2Vi
VmlldyAqd2ViVmlldywgY29uc3QgU3RyaW5nJiByZXF1ZXN0aW5nLCBjb25zdCBXZWJDb3JlOjpS
ZWdpc3RyYWJsZURvbWFpbiYgY3VycmVudCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4m
JiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBhdXRvIGNvbXBsZXRpb25CbG9jayA9IG1ha2VC
bG9ja1B0cihbY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0o
Ym9vbCBzaG91bGRBbGxvdykgbXV0YWJsZSB7CiAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHNo
b3VsZEFsbG93KTsKICAgICB9KTsKIAotICAgIGF1dG8gcmVxdWVzdGluZ0RvbWFpbiA9IHJlcXVl
c3Rpbmcuc3RyaW5nKCkuY3JlYXRlQ0ZTdHJpbmcoKTsKKyAgICBhdXRvIHJlcXVlc3RpbmdEb21h
aW4gPSByZXF1ZXN0aW5nLmNyZWF0ZUNGU3RyaW5nKCk7CiAgICAgYXV0byBjdXJyZW50RG9tYWlu
ID0gY3VycmVudC5zdHJpbmcoKS5jcmVhdGVDRlN0cmluZygpOwogCiAjaWYgUExBVEZPUk0oTUFD
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dl
YlJlc291cmNlTG9hZE9ic2VydmVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9XZWJSZXNvdXJjZUxvYWRPYnNlcnZlci5jcHAKaW5kZXggMjZhOTk3NTA0Zjc3
MmM1MmI0ZDg0MzEzMDczY2EwM2Y1ODNmNTkzMC4uY2RlOTYwMWUzZDFjYzU0NTU3MmYwMTI3NDZj
MDU0ZjRjNDJmNjZiZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNv
cmVTdXBwb3J0L1dlYlJlc291cmNlTG9hZE9ic2VydmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUmVzb3VyY2VMb2FkT2JzZXJ2ZXIuY3BwCkBA
IC00MjMsMTYgKzQyMywyMyBAQCBib29sIFdlYlJlc291cmNlTG9hZE9ic2VydmVyOjpoYXNDcm9z
c1BhZ2VTdG9yYWdlQWNjZXNzKGNvbnN0IFN1YkZyYW1lRG9tYWluJiBzdQogICAgIGF1dG8gaXQg
PSBtX2RvbWFpbnNXaXRoQ3Jvc3NQYWdlU3RvcmFnZUFjY2Vzcy5maW5kKHRvcERvbWFpbik7CiAK
ICAgICBpZiAoaXQgIT0gbV9kb21haW5zV2l0aENyb3NzUGFnZVN0b3JhZ2VBY2Nlc3MuZW5kKCkp
Ci0gICAgICAgIHJldHVybiBpdC0+dmFsdWUgPT0gc3ViRG9tYWluOworICAgICAgICByZXR1cm4g
aXQtPnZhbHVlLmNvbnRhaW5zKHN1YkRvbWFpbik7CiAKICAgICByZXR1cm4gZmFsc2U7CiB9CiAK
IHZvaWQgV2ViUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OnNldERvbWFpbnNXaXRoQ3Jvc3NQYWdlU3Rv
cmFnZUFjY2VzcyhIYXNoTWFwPFRvcEZyYW1lRG9tYWluLCBTdWJGcmFtZURvbWFpbj4mJiBkb21h
aW5zLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7Ci0g
ICAgZm9yIChhdXRvJiB0b3BEb21haW4gOiBkb21haW5zLmtleXMoKSkKLSAgICAgICAgbV9kb21h
aW5zV2l0aENyb3NzUGFnZVN0b3JhZ2VBY2Nlc3MuYWRkKHRvcERvbWFpbiwgZG9tYWlucy5nZXQo
dG9wRG9tYWluKSk7Ci0KKyAgICBmb3IgKGF1dG8mIHRvcERvbWFpbiA6IGRvbWFpbnMua2V5cygp
KSB7CisgICAgICAgIG1fZG9tYWluc1dpdGhDcm9zc1BhZ2VTdG9yYWdlQWNjZXNzLmVuc3VyZSh0
b3BEb21haW4sIFtdIHsgcmV0dXJuIEhhc2hTZXQ8UmVnaXN0cmFibGVEb21haW4+IHsgfTsKKyAg
ICAgICAgICAgIH0pLml0ZXJhdG9yLT52YWx1ZS5hZGQoZG9tYWlucy5nZXQodG9wRG9tYWluKSk7
CisKKyAgICAgICAgLy8gU29tZSBzaXRlcyBoYXZlIHF1aXJrcyB3aGVyZSBtdWx0aXBsZSBsb2dp
biBkb21haW5zIHJlcXVpcmUgc3RvcmFnZSBhY2Nlc3MuCisgICAgICAgIGlmIChhdXRvIGFkZGl0
aW9uYWxMb2dpbkRvbWFpbiA9IFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6ZmluZEFk
ZGl0aW9uYWxMb2dpbkRvbWFpbih0b3BEb21haW4sIGRvbWFpbnMuZ2V0KHRvcERvbWFpbikpKSB7
CisgICAgICAgICAgICBtX2RvbWFpbnNXaXRoQ3Jvc3NQYWdlU3RvcmFnZUFjY2Vzcy5lbnN1cmUo
dG9wRG9tYWluLCBbXSB7IHJldHVybiBIYXNoU2V0PFJlZ2lzdHJhYmxlRG9tYWluPiB7IH07Cisg
ICAgICAgICAgICAgICAgfSkuaXRlcmF0b3ItPnZhbHVlLmFkZCgqYWRkaXRpb25hbExvZ2luRG9t
YWluKTsKKyAgICAgICAgfQorICAgIH0KICAgICBjb21wbGV0aW9uSGFuZGxlcigpOwogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUmVz
b3VyY2VMb2FkT2JzZXJ2ZXIuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9XZWJSZXNvdXJjZUxvYWRPYnNlcnZlci5oCmluZGV4IDgyZTAxNzhlNjdlNDU5ZGY5YTA2
ODEzYTdkNDkyMmYwN2E4MDJmZTcuLmJmMzc4ZTcyZjYyNjUxODgzYWM2MDIzN2EzM2IxZDA5MTM4
NzA3YTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9XZWJSZXNvdXJjZUxvYWRPYnNlcnZlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC9XZWJSZXNvdXJjZUxvYWRPYnNlcnZlci5oCkBAIC04Nyw3ICs4Nyw3
IEBAIHByaXZhdGU6CiAgICAgV2ViQ29yZTo6VGltZXIgbV9ub3RpZmljYXRpb25UaW1lcjsKIAog
ICAgIEhhc2hTZXQ8V2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4+IG1fZG9tYWluc1dpdGhVc2Vy
SW50ZXJhY3Rpb247Ci0gICAgSGFzaE1hcDxUb3BGcmFtZURvbWFpbiwgU3ViRnJhbWVEb21haW4+
IG1fZG9tYWluc1dpdGhDcm9zc1BhZ2VTdG9yYWdlQWNjZXNzOworICAgIEhhc2hNYXA8VG9wRnJh
bWVEb21haW4sIEhhc2hTZXQ8U3ViRnJhbWVEb21haW4+PiBtX2RvbWFpbnNXaXRoQ3Jvc3NQYWdl
U3RvcmFnZUFjY2VzczsKICNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKICAgICB1aW50NjRfdCBt
X2xvZ2dpbmdDb3VudGVyIHsgMCB9OwogICAgIHN0YXRpYyBib29sIHNob3VsZExvZ1VzZXJJbnRl
cmFjdGlvbjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YlBhZ2UuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAK
aW5kZXggYzZkODlkMDk3NjM1MzFjMzNlZGIyOGJmM2EwMDgxMzgyMDQwMmRiNi4uZmU3ZGY0MGZl
MTVhM2U2MjE1OGEwYTU1ODE3MjBkZDM3NGIyZWM3MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKQEAgLTY2OTQsNiArNjY5NCwxMCBAQCB2b2lkIFdl
YlBhZ2U6OnJlcXVlc3RTdG9yYWdlQWNjZXNzKFJlZ2lzdHJhYmxlRG9tYWluJiYgc3ViRnJhbWVE
b21haW4sIFJlZ2lzdHJhYgogdm9pZCBXZWJQYWdlOjphZGREb21haW5XaXRoUGFnZUxldmVsU3Rv
cmFnZUFjY2Vzcyhjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgdG9wTGV2ZWxEb21haW4sIGNvbnN0
IFJlZ2lzdHJhYmxlRG9tYWluJiByZXNvdXJjZURvbWFpbikKIHsKICAgICBtX2RvbWFpbnNXaXRo
UGFnZUxldmVsU3RvcmFnZUFjY2Vzcy5hZGQodG9wTGV2ZWxEb21haW4sIHJlc291cmNlRG9tYWlu
KTsKKworICAgIC8vIFNvbWUgc2l0ZXMgaGF2ZSBxdWlya3Mgd2hlcmUgbXVsdGlwbGUgbG9naW4g
ZG9tYWlucyByZXF1aXJlIHN0b3JhZ2UgYWNjZXNzLgorICAgIGlmIChhdXRvIGFkZGl0aW9uYWxM
b2dpbkRvbWFpbiA9IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6ZmluZEFkZGl0aW9uYWxMb2dpbkRv
bWFpbih0b3BMZXZlbERvbWFpbiwgcmVzb3VyY2VEb21haW4pKQorICAgICAgICBtX2RvbWFpbnNX
aXRoUGFnZUxldmVsU3RvcmFnZUFjY2Vzcy5hZGQodG9wTGV2ZWxEb21haW4sICphZGRpdGlvbmFs
TG9naW5Eb21haW4pOwogfQogCiBib29sIFdlYlBhZ2U6Omhhc1BhZ2VMZXZlbFN0b3JhZ2VBY2Nl
c3MoY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHRvcExldmVsRG9tYWluLCBjb25zdCBSZWdpc3Ry
YWJsZURvbWFpbiYgcmVzb3VyY2VEb21haW4pIGNvbnN0Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>416377</attachid>
            <date>2020-12-16 18:08:50 -0800</date>
            <delta_ts>2020-12-17 09:32:55 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-219900-20201216180849.patch</filename>
            <type>text/plain</type>
            <size>12384</size>
            <attacher name="Kate Cheney">katherine_cheney</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcwOTE2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZjFkMWI4NjA4YzQyOWVi
MGJkZTZkYjNkMTllNTRjZTk4ZTc0ZjNlMC4uNDhkODY3MTA3YzFhODVkZmY0ZWFiMGZjZGNhMTVm
YjI4ZmFjY2JhZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBACisyMDIwLTEyLTE2ICBLYXRl
IENoZW5leSAgPGthdGhlcmluZV9jaGVuZXlAYXBwbGUuY29tPgorCisgICAgICAgIEZvbGxvd3Vw
IHBhdGNoOiBTdGlsbCBjYW4ndCBsb2dpbiB0byBteS5wbGF5c3RhdGlvbi5jb20KKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxOTkwMAorICAgICAgICA8
cmRhcjovL3Byb2JsZW0vNzIwNjI5ODU+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgKiBlbi5scHJvai9Mb2NhbGl6YWJsZS5zdHJpbmdzOgorCiAyMDIw
LTEyLTE2ICBLYXRlIENoZW5leSAgPGthdGhlcmluZV9jaGVuZXlAYXBwbGUuY29tPgogCiAgICAg
ICAgIFN0aWxsIGNhbid0IGxvZ2luIHRvIG15LnBsYXlzdGF0aW9uLmNvbQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCA2
MDgyNGI5OTkxNDllNmVhOTMzOWNkYjJlMTMyOWNlOTJiZDM5MjZkLi42MWFjM2ZlOTU5Njc1ZTdm
NTVjYmI4OGFlZDM0ZTVkZjE0ZDA4ZTQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5n
ZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDI1IEBACisyMDIw
LTEyLTE2ICBLYXRlIENoZW5leSAgPGthdGhlcmluZV9jaGVuZXlAYXBwbGUuY29tPgorCisgICAg
ICAgIEZvbGxvd3VwIHBhdGNoOiBTdGlsbCBjYW4ndCBsb2dpbiB0byBteS5wbGF5c3RhdGlvbi5j
b20KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxOTkw
MAorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNzIwNjI5ODU+CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVXNpbmcgY3VybHkgcXVvdGVzIHdoZW4gY29u
c3RydWN0aW5nIHRoZSBTdG9yYWdlIEFjY2VzcyBwcm9tcHQgbWVzc2FnZQorICAgICAgICBtYXkg
Y3JlYXRlIGlzc3VlcyB3aXRoIGxvY2FsaXphYmxlIHN0cmluZ3MuIFdlIHNob3VsZCBtYWtlIGEg
c2VwYXJhdGUKKyAgICAgICAgbG9jYWxpemFibGUgc3RyaW5nIGZvciB0aGlzIHF1aXJrIGNhc2Ug
YW5kIHJlbW92ZSBpdCB3aGVuIFNvbnkKKyAgICAgICAgbWlncmF0ZXMgYXdheSBmcm9tIHRoaXJk
IHBhcnR5IGNvb2tpZXMgaW4gdGhlaXIgbG9naW4gZmxvdy4KKworICAgICAgICAqIFVJUHJvY2Vz
cy9Db2NvYS9VSURlbGVnYXRlLm1tOgorICAgICAgICAoV2ViS2l0OjpVSURlbGVnYXRlOjpVSUNs
aWVudDo6cmVxdWVzdFN0b3JhZ2VBY2Nlc3NDb25maXJtKToKKyAgICAgICAgKFdlYktpdDo6YnVp
bGRMaXN0Rm9yU3RvcmFnZUFjY2Vzc1Byb21wdCk6IERlbGV0ZWQuCisgICAgICAgICogVUlQcm9j
ZXNzL0NvY29hL1dLU3RvcmFnZUFjY2Vzc0FsZXJ0Lmg6CisgICAgICAgICogVUlQcm9jZXNzL0Nv
Y29hL1dLU3RvcmFnZUFjY2Vzc0FsZXJ0Lm1tOgorICAgICAgICAoV2ViS2l0OjpwcmVzZW50U3Rv
cmFnZUFjY2Vzc0FsZXJ0KToKKyAgICAgICAgKFdlYktpdDo6cHJlc2VudFN0b3JhZ2VBY2Nlc3NB
bGVydFF1aXJrKToKKyAgICAgICAgKFdlYktpdDo6ZGlzcGxheVN0b3JhZ2VBY2Nlc3NBbGVydCk6
CisKIDIwMjAtMTItMTYgIEthdGUgQ2hlbmV5ICA8a2F0aGVyaW5lX2NoZW5leUBhcHBsZS5jb20+
CiAKICAgICAgICAgU3RpbGwgY2FuJ3QgbG9naW4gdG8gbXkucGxheXN0YXRpb24uY29tCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lbi5scHJvai9Mb2NhbGl6YWJsZS5zdHJpbmdzIGIvU291
cmNlL1dlYkNvcmUvZW4ubHByb2ovTG9jYWxpemFibGUuc3RyaW5ncwppbmRleCA0NjZlMjIzNzll
YzFkMGNkZmVhNTA4NGZmZjZjMWFhZmYzMTZkMDk1Li42ZmM4MzA2NGU3ZGZiMjY0MjA0OGEzZTU3
ODNlYWJkZGQzNDhjMzcxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lbi5scHJvai9Mb2Nh
bGl6YWJsZS5zdHJpbmdzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VuLmxwcm9qL0xvY2FsaXphYmxl
LnN0cmluZ3MKQEAgLTEyNyw2ICsxMjcsOSBAQAogLyogTWVzc2FnZSBmb3IgcmVxdWVzdGluZyBj
cm9zcy1zaXRlIGNvb2tpZSBhbmQgd2Vic2l0ZSBkYXRhIGFjY2Vzcy4gKi8KICJBbGxvdyDigJwl
QOKAnSB0byB1c2UgY29va2llcyBhbmQgd2Vic2l0ZSBkYXRhIHdoaWxlIGJyb3dzaW5nIOKAnCVA
4oCdPyIgPSAiQWxsb3cg4oCcJUDigJ0gdG8gdXNlIGNvb2tpZXMgYW5kIHdlYnNpdGUgZGF0YSB3
aGlsZSBicm93c2luZyDigJwlQOKAnT8iOwogCisvKiBNZXNzYWdlIGZvciByZXF1ZXN0aW5nIGNy
b3NzLXNpdGUgY29va2llIGFuZCB3ZWJzaXRlIGRhdGEgYWNjZXNzIGZvciBtdWx0aXBsZSB0aGly
ZCBwYXJ0eSBkb21haW5zLiAqLworIkFsbG93IOKAnCVA4oCdIGFuZCDigJwlQOKAnSB0byB1c2Ug
Y29va2llcyBhbmQgd2Vic2l0ZSBkYXRhIHdoaWxlIGJyb3dzaW5nIOKAnCVA4oCdPyIgPSAiQWxs
b3cg4oCcJUDigJ0gYW5kIOKAnCVA4oCdIHRvIHVzZSBjb29raWVzIGFuZCB3ZWJzaXRlIGRhdGEg
d2hpbGUgYnJvd3Npbmcg4oCcJUDigJ0/IjsKKwogLyogTWVzc2FnZSBmb3IgdXNlciBtZWRpYSBw
cm9tcHQgKi8KICJBbGxvdyDigJwlQOKAnSB0byB1c2UgeW91ciBjYW1lcmEgYW5kIG1pY3JvcGhv
bmU/IiA9ICJBbGxvdyDigJwlQOKAnSB0byB1c2UgeW91ciBjYW1lcmEgYW5kIG1pY3JvcGhvbmU/
IjsKIApAQCAtMzE5LDYgKzMyMiw5IEBACiAvKiBNZXNzYWdlIGZvciByZXF1ZXN0aW5nIGNyb3Nz
LXNpdGUgY29va2llIGFuZCB3ZWJzaXRlIGRhdGEgYWNjZXNzLiAqLwogIkRvIHlvdSB3YW50IHRv
IGFsbG93IOKAnCVA4oCdIHRvIHVzZSBjb29raWVzIGFuZCB3ZWJzaXRlIGRhdGEgd2hpbGUgYnJv
d3Npbmcg4oCcJUDigJ0/IiA9ICJEbyB5b3Ugd2FudCB0byBhbGxvdyDigJwlQOKAnSB0byB1c2Ug
Y29va2llcyBhbmQgd2Vic2l0ZSBkYXRhIHdoaWxlIGJyb3dzaW5nIOKAnCVA4oCdPyI7CiAKKy8q
IE1lc3NhZ2UgZm9yIHJlcXVlc3RpbmcgY3Jvc3Mtc2l0ZSBjb29raWUgYW5kIHdlYnNpdGUgZGF0
YSBhY2Nlc3MgZm9yIG11bHRpcGxlIHRoaXJkIHBhcnR5IGRvbWFpbnMuICovCisiRG8geW91IHdh
bnQgdG8gYWxsb3cg4oCcJUDigJ0gYW5kIOKAnCVA4oCdIHRvIHVzZSBjb29raWVzIGFuZCB3ZWJz
aXRlIGRhdGEgd2hpbGUgYnJvd3Npbmcg4oCcJUDigJ0/IiA9ICJEbyB5b3Ugd2FudCB0byBhbGxv
dyDigJwlQOKAnSBhbmQg4oCcJUDigJ0gdG8gdXNlIGNvb2tpZXMgYW5kIHdlYnNpdGUgZGF0YSB3
aGlsZSBicm93c2luZyDigJwlQOKAnT8iOworCiAvKiBCdXR0b24gdGl0bGUgaW4gU3RvcmFnZSBB
Y2Nlc3MgQVBJIHByb21wdCAqLwogIkRvbid0IEFsbG93IChjcm9zcy1zaXRlIGNvb2tpZSBhbmQg
d2Vic2l0ZSBkYXRhIGFjY2VzcykiID0gIkRvbid0IEFsbG93IjsKIApAQCAtOTE5LDYgKzkyNSw5
IEBACiAvKiBJbmZvcm1hdGl2ZSB0ZXh0IGZvciByZXF1ZXN0aW5nIGNyb3NzLXNpdGUgY29va2ll
IGFuZCB3ZWJzaXRlIGRhdGEgYWNjZXNzLiAqLwogIlRoaXMgd2lsbCBhbGxvdyDigJwlQOKAnSB0
byB0cmFjayB5b3VyIGFjdGl2aXR5LiIgPSAiVGhpcyB3aWxsIGFsbG93IOKAnCVA4oCdIHRvIHRy
YWNrIHlvdXIgYWN0aXZpdHkuIjsKIAorLyogSW5mb3JtYXRpdmUgdGV4dCBmb3IgcmVxdWVzdGlu
ZyBjcm9zcy1zaXRlIGNvb2tpZSBhbmQgd2Vic2l0ZSBkYXRhIGFjY2Vzcy4gKi8KKyJUaGlzIHdp
bGwgYWxsb3cg4oCcJUDigJ0gYW5kIOKAnCVA4oCdIHRvIHRyYWNrIHlvdXIgYWN0aXZpdHkuIiA9
ICJUaGlzIHdpbGwgYWxsb3cg4oCcJUDigJ0gYW5kIOKAnCVA4oCdIHRvIHRyYWNrIHlvdXIgYWN0
aXZpdHkuIjsKKwogLyogVW5kbyBhY3Rpb24gbmFtZSAqLwogIlRpZ2h0ZW4gS2VybmluZyAoVW5k
byBhY3Rpb24gbmFtZSkiID0gIlRpZ2h0ZW4gS2VybmluZyI7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1VJRGVsZWdhdGUubW0gYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9Db2NvYS9VSURlbGVnYXRlLm1tCmluZGV4IGQwNzIzMjM4NzMzNGRlYjFhODdmNTAy
M2JjNjQ5NDdjMDA2ZWU3MDEuLjY4YmI3Mzk3ZjMyNzViNjkwY2U3YTI0ZWE5ZTY0MmYwZWVmYjBj
YWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1VJRGVsZWdhdGUu
bW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvVUlEZWxlZ2F0ZS5tbQpAQCAt
MzQ1LDE1ICszNDUsNiBAQCB2b2lkIFVJRGVsZWdhdGU6OlVJQ2xpZW50OjpydW5KYXZhU2NyaXB0
UHJvbXB0KFdlYlBhZ2VQcm94eSYgcGFnZSwgY29uc3QgV1RGOjpTdAogICAgIH0pLmdldCgpXTsK
IH0KIAotc3RhdGljIFN0cmluZyBidWlsZExpc3RGb3JTdG9yYWdlQWNjZXNzUHJvbXB0KGNvbnN0
IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIHN1YkRvbWFpbk9uZSwgY29uc3QgV2ViQ29yZTo6
UmVnaXN0cmFibGVEb21haW4gc3ViRG9tYWluVHdvKQotewotICAgIFN0cmluZ0J1aWxkZXIgYnVp
bGRlcjsKLSAgICBidWlsZGVyLmFwcGVuZChzdWJEb21haW5PbmUuc3RyaW5nKCkpOwotICAgIGJ1
aWxkZXIuYXBwZW5kKFN0cmluZyhbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpAIuKAnCBhbmQg
4oCcIl0pKTsKLSAgICBidWlsZGVyLmFwcGVuZChzdWJEb21haW5Ud28uc3RyaW5nKCkpOwotICAg
IHJldHVybiBidWlsZGVyLnRvU3RyaW5nKCk7Ci19Ci0KIHZvaWQgVUlEZWxlZ2F0ZTo6VUlDbGll
bnQ6OnJlcXVlc3RTdG9yYWdlQWNjZXNzQ29uZmlybShXZWJQYWdlUHJveHkmIHdlYlBhZ2VQcm94
eSwgV2ViRnJhbWVQcm94eSosIGNvbnN0IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiByZXF1
ZXN0aW5nRG9tYWluLCBjb25zdCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYgY3VycmVudERv
bWFpbiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikK
IHsKICAgICBhdXRvIGRlbGVnYXRlID0gbV91aURlbGVnYXRlLm1fZGVsZWdhdGUuZ2V0KCk7CkBA
IC0zNjEsMjMgKzM1MiwyMiBAQCB2b2lkIFVJRGVsZWdhdGU6OlVJQ2xpZW50OjpyZXF1ZXN0U3Rv
cmFnZUFjY2Vzc0NvbmZpcm0oV2ViUGFnZVByb3h5JiB3ZWJQYWdlUHJveAogICAgICAgICBjb21w
bGV0aW9uSGFuZGxlcihmYWxzZSk7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgCi0gICAg
U3RyaW5nIHJlcXVlc3RpbmdTdHJpbmc7CisKICAgICAvLyBTb21lIHNpdGVzIGhhdmUgcXVpcmtz
IHdoZXJlIG11bHRpcGxlIGxvZ2luIGRvbWFpbnMgcmVxdWlyZSBzdG9yYWdlIGFjY2Vzcy4KLSAg
ICBpZiAoYXV0byBhZGRpdGlvbmFsTG9naW5Eb21haW4gPSBXZWJDb3JlOjpOZXR3b3JrU3RvcmFn
ZVNlc3Npb246OmZpbmRBZGRpdGlvbmFsTG9naW5Eb21haW4oY3VycmVudERvbWFpbiwgcmVxdWVz
dGluZ0RvbWFpbikpCi0gICAgICAgIHJlcXVlc3RpbmdTdHJpbmcgPSBidWlsZExpc3RGb3JTdG9y
YWdlQWNjZXNzUHJvbXB0KHJlcXVlc3RpbmdEb21haW4sICphZGRpdGlvbmFsTG9naW5Eb21haW4p
OwotICAgIGVsc2UKLSAgICAgICAgcmVxdWVzdGluZ1N0cmluZyA9IHJlcXVlc3RpbmdEb21haW4u
c3RyaW5nKCk7CisgICAgaWYgKGF1dG8gYWRkaXRpb25hbExvZ2luRG9tYWluID0gV2ViQ29yZTo6
TmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpmaW5kQWRkaXRpb25hbExvZ2luRG9tYWluKGN1cnJlbnRE
b21haW4sIHJlcXVlc3RpbmdEb21haW4pKSB7CisgICAgICAgIHByZXNlbnRTdG9yYWdlQWNjZXNz
QWxlcnRRdWlyayhtX3VpRGVsZWdhdGUubV93ZWJWaWV3LCByZXF1ZXN0aW5nRG9tYWluLCAqYWRk
aXRpb25hbExvZ2luRG9tYWluLCBjdXJyZW50RG9tYWluLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5k
bGVyKSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CiAKICAgICBpZiAoIW1fdWlEZWxlZ2F0ZS5t
X2RlbGVnYXRlTWV0aG9kcy53ZWJWaWV3UmVxdWVzdFN0b3JhZ2VBY2Nlc3NQYW5lbFVuZGVyRmly
c3RQYXJ0eUNvbXBsZXRpb25IYW5kbGVyKSB7CiAjaWYgIVBMQVRGT1JNKFdBVENIT1MpICYmICFQ
TEFURk9STShBUFBMRVRWKQotICAgICAgICBwcmVzZW50U3RvcmFnZUFjY2Vzc0FsZXJ0KG1fdWlE
ZWxlZ2F0ZS5tX3dlYlZpZXcsIHJlcXVlc3RpbmdTdHJpbmcsIGN1cnJlbnREb21haW4sIFdURk1v
dmUoY29tcGxldGlvbkhhbmRsZXIpKTsKKyAgICAgICAgcHJlc2VudFN0b3JhZ2VBY2Nlc3NBbGVy
dChtX3VpRGVsZWdhdGUubV93ZWJWaWV3LCByZXF1ZXN0aW5nRG9tYWluLCBjdXJyZW50RG9tYWlu
LCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiAjZW5kaWYKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KIAogICAgIGF1dG8gY2hlY2tlciA9IENvbXBsZXRpb25IYW5kbGVyQ2FsbENoZWNrZXI6
OmNyZWF0ZShkZWxlZ2F0ZS5nZXQoKSwgQHNlbGVjdG9yKF93ZWJWaWV3OnJlcXVlc3RTdG9yYWdl
QWNjZXNzUGFuZWxGb3JEb21haW46dW5kZXJDdXJyZW50RG9tYWluOmNvbXBsZXRpb25IYW5kbGVy
OikpOwotICAgIFsoaWQgPFdLVUlEZWxlZ2F0ZVByaXZhdGU+KWRlbGVnYXRlIF93ZWJWaWV3Om1f
dWlEZWxlZ2F0ZS5tX3dlYlZpZXcgcmVxdWVzdFN0b3JhZ2VBY2Nlc3NQYW5lbEZvckRvbWFpbjpy
ZXF1ZXN0aW5nU3RyaW5nIHVuZGVyQ3VycmVudERvbWFpbjpjdXJyZW50RG9tYWluLnN0cmluZygp
IGNvbXBsZXRpb25IYW5kbGVyOm1ha2VCbG9ja1B0cihbY29tcGxldGlvbkhhbmRsZXIgPSBXVEZN
b3ZlKGNvbXBsZXRpb25IYW5kbGVyKSwgY2hlY2tlciA9IFdURk1vdmUoY2hlY2tlcildIChCT09M
IHJlc3VsdCkgbXV0YWJsZSB7CisgICAgWyhpZCA8V0tVSURlbGVnYXRlUHJpdmF0ZT4pZGVsZWdh
dGUgX3dlYlZpZXc6bV91aURlbGVnYXRlLm1fd2ViVmlldyByZXF1ZXN0U3RvcmFnZUFjY2Vzc1Bh
bmVsRm9yRG9tYWluOnJlcXVlc3RpbmdEb21haW4uc3RyaW5nKCkgdW5kZXJDdXJyZW50RG9tYWlu
OmN1cnJlbnREb21haW4uc3RyaW5nKCkgY29tcGxldGlvbkhhbmRsZXI6bWFrZUJsb2NrUHRyKFtj
b21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCBjaGVja2VyID0g
V1RGTW92ZShjaGVja2VyKV0gKEJPT0wgcmVzdWx0KSBtdXRhYmxlIHsKICAgICAgICAgaWYgKGNo
ZWNrZXItPmNvbXBsZXRpb25IYW5kbGVySGFzQmVlbkNhbGxlZCgpKQogICAgICAgICAgICAgcmV0
dXJuOwogICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihyZXN1bHQpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV0tTdG9yYWdlQWNjZXNzQWxlcnQuaCBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dLU3RvcmFnZUFjY2Vzc0FsZXJ0LmgKaW5kZXggNmI3
NzI5NjhjNDk5NzZlMTk0YjZhMjA0OGZjZDExOWM2ZmM2YTA1YS4uMTViNTNhZWMxNmRhODA2OWNk
ZGNiMzk5Y2M2OGVjZmM2MTljYTY5OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQ29jb2EvV0tTdG9yYWdlQWNjZXNzQWxlcnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9Db2NvYS9XS1N0b3JhZ2VBY2Nlc3NBbGVydC5oCkBAIC00MSw3ICs0MSw5IEBAIGNsYXNz
IFJlZ2lzdHJhYmxlRG9tYWluOwogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAotdm9pZCBwcmVzZW50
U3RvcmFnZUFjY2Vzc0FsZXJ0KFdLV2ViVmlldyAqLCBjb25zdCBTdHJpbmcmIHJlcXVlc3RpbmdT
dHJpbmcsIGNvbnN0IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiBjdXJyZW50RG9tYWluLCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsKK3ZvaWQgcHJlc2VudFN0b3JhZ2VBY2Nl
c3NBbGVydChXS1dlYlZpZXcgKiwgY29uc3QgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mIHJl
cXVlc3RpbmdEb21haW4sIGNvbnN0IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiBjdXJyZW50
RG9tYWluLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsKK3ZvaWQgcHJlc2VudFN0
b3JhZ2VBY2Nlc3NBbGVydFF1aXJrKFdLV2ViVmlldyAqLCBjb25zdCBXZWJDb3JlOjpSZWdpc3Ry
YWJsZURvbWFpbiYgZmlyc3RSZXF1ZXN0aW5nRG9tYWluLCBjb25zdCBXZWJDb3JlOjpSZWdpc3Ry
YWJsZURvbWFpbiYgc2Vjb25kUmVxdWVzdGluZ0RvbWFpbiwgY29uc3QgV2ViQ29yZTo6UmVnaXN0
cmFibGVEb21haW4mIGN1cnJlbnQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpOwor
dm9pZCBkaXNwbGF5U3RvcmFnZUFjY2Vzc0FsZXJ0KFdLV2ViVmlldyAqLCBOU1N0cmluZyAqLCBO
U1N0cmluZyAqLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsKIAogfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XS1N0b3JhZ2VBY2Nlc3NBbGVy
dC5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dLU3RvcmFnZUFjY2Vzc0FsZXJ0
Lm1tCmluZGV4IDYyNzgyYTY2MDdjMjBkMWQ3ODYxNzY1MTA5MTY5ZmU2NTgwYmY1YTQuLjQ1Yjcw
ZTc1ZDE2NTUxMzJkZWViZTU3MTlmNDM5MjJlOWJiMGZkMTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dLU3RvcmFnZUFjY2Vzc0FsZXJ0Lm1tCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dLU3RvcmFnZUFjY2Vzc0FsZXJ0Lm1tCkBAIC0zNiwx
MyArMzYsOSBAQAogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAotdm9pZCBwcmVzZW50U3RvcmFnZUFj
Y2Vzc0FsZXJ0KFdLV2ViVmlldyAqd2ViVmlldywgY29uc3QgU3RyaW5nJiByZXF1ZXN0aW5nLCBj
b25zdCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYgY3VycmVudCwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgcHJlc2VudFN0b3JhZ2VB
Y2Nlc3NBbGVydChXS1dlYlZpZXcgKndlYlZpZXcsIGNvbnN0IFdlYkNvcmU6OlJlZ2lzdHJhYmxl
RG9tYWluJiByZXF1ZXN0aW5nLCBjb25zdCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYgY3Vy
cmVudCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikK
IHsKLSAgICBhdXRvIGNvbXBsZXRpb25CbG9jayA9IG1ha2VCbG9ja1B0cihbY29tcGxldGlvbkhh
bmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oYm9vbCBzaG91bGRBbGxvdykgbXV0
YWJsZSB7Ci0gICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHNob3VsZEFsbG93KTsKLSAgICB9KTsK
LQotICAgIGF1dG8gcmVxdWVzdGluZ0RvbWFpbiA9IHJlcXVlc3RpbmcuY3JlYXRlQ0ZTdHJpbmco
KTsKKyAgICBhdXRvIHJlcXVlc3RpbmdEb21haW4gPSByZXF1ZXN0aW5nLnN0cmluZygpLmNyZWF0
ZUNGU3RyaW5nKCk7CiAgICAgYXV0byBjdXJyZW50RG9tYWluID0gY3VycmVudC5zdHJpbmcoKS5j
cmVhdGVDRlN0cmluZygpOwogCiAjaWYgUExBVEZPUk0oTUFDKQpAQCAtNTIsNiArNDgsMzMgQEAg
dm9pZCBwcmVzZW50U3RvcmFnZUFjY2Vzc0FsZXJ0KFdLV2ViVmlldyAqd2ViVmlldywgY29uc3Qg
U3RyaW5nJiByZXF1ZXN0aW5nLCBjb24KICNlbmRpZgogCiAgICAgTlNTdHJpbmcgKmluZm9ybWF0
aXZlVGV4dCA9IFtOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OldFQl9VSV9OU1NUUklORyhAIlRo
aXMgd2lsbCBhbGxvdyDigJwlQOKAnSB0byB0cmFjayB5b3VyIGFjdGl2aXR5LiIsIEAiSW5mb3Jt
YXRpdmUgdGV4dCBmb3IgcmVxdWVzdGluZyBjcm9zcy1zaXRlIGNvb2tpZSBhbmQgd2Vic2l0ZSBk
YXRhIGFjY2Vzcy4iKSwgcmVxdWVzdGluZ0RvbWFpbi5nZXQoKV07CisKKyAgICBkaXNwbGF5U3Rv
cmFnZUFjY2Vzc0FsZXJ0KHdlYlZpZXcsIGFsZXJ0VGl0bGUsIGluZm9ybWF0aXZlVGV4dCwgV1RG
TW92ZShjb21wbGV0aW9uSGFuZGxlcikpOworfQorCit2b2lkIHByZXNlbnRTdG9yYWdlQWNjZXNz
QWxlcnRRdWlyayhXS1dlYlZpZXcgKndlYlZpZXcsIGNvbnN0IFdlYkNvcmU6OlJlZ2lzdHJhYmxl
RG9tYWluJiBmaXJzdFJlcXVlc3RpbmcsIGNvbnN0IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWlu
JiBzZWNvbmRSZXF1ZXN0aW5nLCBjb25zdCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYgY3Vy
cmVudCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikK
K3sKKyAgICBhdXRvIGZpcnN0UmVxdWVzdGluZ0RvbWFpbiA9IGZpcnN0UmVxdWVzdGluZy5zdHJp
bmcoKS5jcmVhdGVDRlN0cmluZygpOworICAgIGF1dG8gc2Vjb25kUmVxdWVzdGluZ0RvbWFpbiA9
IHNlY29uZFJlcXVlc3Rpbmcuc3RyaW5nKCkuY3JlYXRlQ0ZTdHJpbmcoKTsKKyAgICBhdXRvIGN1
cnJlbnREb21haW4gPSBjdXJyZW50LnN0cmluZygpLmNyZWF0ZUNGU3RyaW5nKCk7CisKKyNpZiBQ
TEFURk9STShNQUMpCisgICAgTlNTdHJpbmcgKmFsZXJ0VGl0bGUgPSBbTlNTdHJpbmcgc3RyaW5n
V2l0aEZvcm1hdDpXRUJfVUlfTlNTVFJJTkcoQCJEbyB5b3Ugd2FudCB0byBhbGxvdyDigJwlQOKA
nSBhbmQg4oCcJUDigJ0gdG8gdXNlIGNvb2tpZXMgYW5kIHdlYnNpdGUgZGF0YSB3aGlsZSBicm93
c2luZyDigJwlQOKAnT8iLCBAIk1lc3NhZ2UgZm9yIHJlcXVlc3RpbmcgY3Jvc3Mtc2l0ZSBjb29r
aWUgYW5kIHdlYnNpdGUgZGF0YSBhY2Nlc3MuIiksIGZpcnN0UmVxdWVzdGluZ0RvbWFpbi5nZXQo
KSwgc2Vjb25kUmVxdWVzdGluZ0RvbWFpbi5nZXQoKSwgY3VycmVudERvbWFpbi5nZXQoKV07Cisj
ZWxzZQorICAgIE5TU3RyaW5nICphbGVydFRpdGxlID0gW05TU3RyaW5nIHN0cmluZ1dpdGhGb3Jt
YXQ6V0VCX1VJX05TU1RSSU5HKEAiQWxsb3cg4oCcJUDigJ0gYW5kIOKAnCVA4oCdIHRvIHVzZSBj
b29raWVzIGFuZCB3ZWJzaXRlIGRhdGEgd2hpbGUgYnJvd3Npbmcg4oCcJUDigJ0/IiwgQCJNZXNz
YWdlIGZvciByZXF1ZXN0aW5nIGNyb3NzLXNpdGUgY29va2llIGFuZCB3ZWJzaXRlIGRhdGEgYWNj
ZXNzLiIpLCByZXF1ZXN0aW5nRG9tYWluLmdldCgpLCBzZWNvbmRSZXF1ZXN0aW5nRG9tYWluLmdl
dCgpLCBjdXJyZW50RG9tYWluLmdldCgpXTsKKyNlbmRpZgorCisgICAgTlNTdHJpbmcgKmluZm9y
bWF0aXZlVGV4dCA9IFtOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OldFQl9VSV9OU1NUUklORyhA
IlRoaXMgd2lsbCBhbGxvdyDigJwlQOKAnSBhbmQg4oCcJUDigJ0gdG8gdHJhY2sgeW91ciBhY3Rp
dml0eS4iLCBAIkluZm9ybWF0aXZlIHRleHQgZm9yIHJlcXVlc3RpbmcgY3Jvc3Mtc2l0ZSBjb29r
aWUgYW5kIHdlYnNpdGUgZGF0YSBhY2Nlc3MuIiksIGZpcnN0UmVxdWVzdGluZ0RvbWFpbi5nZXQo
KSwgc2Vjb25kUmVxdWVzdGluZ0RvbWFpbi5nZXQoKV07CisgICAgCisgICAgZGlzcGxheVN0b3Jh
Z2VBY2Nlc3NBbGVydCh3ZWJWaWV3LCBhbGVydFRpdGxlLCBpbmZvcm1hdGl2ZVRleHQsIFdURk1v
dmUoY29tcGxldGlvbkhhbmRsZXIpKTsKK30KKwordm9pZCBkaXNwbGF5U3RvcmFnZUFjY2Vzc0Fs
ZXJ0KFdLV2ViVmlldyAqd2ViVmlldywgTlNTdHJpbmcgKmFsZXJ0VGl0bGUsIE5TU3RyaW5nICpp
bmZvcm1hdGl2ZVRleHQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxldGlv
bkhhbmRsZXIpCit7CisgICAgYXV0byBjb21wbGV0aW9uQmxvY2sgPSBtYWtlQmxvY2tQdHIoW2Nv
bXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKGJvb2wgc2hvdWxk
QWxsb3cpIG11dGFibGUgeworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihzaG91bGRBbGxvdyk7
CisgICAgfSk7CisKICAgICBOU1N0cmluZyAqYWxsb3dCdXR0b25TdHJpbmcgPSBXRUJfVUlfU1RS
SU5HX0tFWShAIkFsbG93IiwgIkFsbG93IChjcm9zcy1zaXRlIGNvb2tpZSBhbmQgd2Vic2l0ZSBk
YXRhIGFjY2VzcykiLCBAIkJ1dHRvbiB0aXRsZSBpbiBTdG9yYWdlIEFjY2VzcyBBUEkgcHJvbXB0
Iik7CiAgICAgTlNTdHJpbmcgKmRvTm90QWxsb3dCdXR0b25TdHJpbmcgPSBXRUJfVUlfU1RSSU5H
X0tFWShAIkRvbid0IEFsbG93IiwgIkRvbid0IEFsbG93IChjcm9zcy1zaXRlIGNvb2tpZSBhbmQg
d2Vic2l0ZSBkYXRhIGFjY2VzcykiLCBAIkJ1dHRvbiB0aXRsZSBpbiBTdG9yYWdlIEFjY2VzcyBB
UEkgcHJvbXB0Iik7CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>416429</attachid>
            <date>2020-12-17 09:32:57 -0800</date>
            <delta_ts>2020-12-17 11:02:15 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-219900-20201217093256.patch</filename>
            <type>text/plain</type>
            <size>12389</size>
            <attacher name="Kate Cheney">katherine_cheney</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcwOTE2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZjFkMWI4NjA4YzQyOWVi
MGJkZTZkYjNkMTllNTRjZTk4ZTc0ZjNlMC4uNDhkODY3MTA3YzFhODVkZmY0ZWFiMGZjZGNhMTVm
YjI4ZmFjY2JhZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBACisyMDIwLTEyLTE2ICBLYXRl
IENoZW5leSAgPGthdGhlcmluZV9jaGVuZXlAYXBwbGUuY29tPgorCisgICAgICAgIEZvbGxvd3Vw
IHBhdGNoOiBTdGlsbCBjYW4ndCBsb2dpbiB0byBteS5wbGF5c3RhdGlvbi5jb20KKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxOTkwMAorICAgICAgICA8
cmRhcjovL3Byb2JsZW0vNzIwNjI5ODU+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgKiBlbi5scHJvai9Mb2NhbGl6YWJsZS5zdHJpbmdzOgorCiAyMDIw
LTEyLTE2ICBLYXRlIENoZW5leSAgPGthdGhlcmluZV9jaGVuZXlAYXBwbGUuY29tPgogCiAgICAg
ICAgIFN0aWxsIGNhbid0IGxvZ2luIHRvIG15LnBsYXlzdGF0aW9uLmNvbQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCA2
MDgyNGI5OTkxNDllNmVhOTMzOWNkYjJlMTMyOWNlOTJiZDM5MjZkLi42MWFjM2ZlOTU5Njc1ZTdm
NTVjYmI4OGFlZDM0ZTVkZjE0ZDA4ZTQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5n
ZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDI1IEBACisyMDIw
LTEyLTE2ICBLYXRlIENoZW5leSAgPGthdGhlcmluZV9jaGVuZXlAYXBwbGUuY29tPgorCisgICAg
ICAgIEZvbGxvd3VwIHBhdGNoOiBTdGlsbCBjYW4ndCBsb2dpbiB0byBteS5wbGF5c3RhdGlvbi5j
b20KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxOTkw
MAorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNzIwNjI5ODU+CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVXNpbmcgY3VybHkgcXVvdGVzIHdoZW4gY29u
c3RydWN0aW5nIHRoZSBTdG9yYWdlIEFjY2VzcyBwcm9tcHQgbWVzc2FnZQorICAgICAgICBtYXkg
Y3JlYXRlIGlzc3VlcyB3aXRoIGxvY2FsaXphYmxlIHN0cmluZ3MuIFdlIHNob3VsZCBtYWtlIGEg
c2VwYXJhdGUKKyAgICAgICAgbG9jYWxpemFibGUgc3RyaW5nIGZvciB0aGlzIHF1aXJrIGNhc2Ug
YW5kIHJlbW92ZSBpdCB3aGVuIFNvbnkKKyAgICAgICAgbWlncmF0ZXMgYXdheSBmcm9tIHRoaXJk
IHBhcnR5IGNvb2tpZXMgaW4gdGhlaXIgbG9naW4gZmxvdy4KKworICAgICAgICAqIFVJUHJvY2Vz
cy9Db2NvYS9VSURlbGVnYXRlLm1tOgorICAgICAgICAoV2ViS2l0OjpVSURlbGVnYXRlOjpVSUNs
aWVudDo6cmVxdWVzdFN0b3JhZ2VBY2Nlc3NDb25maXJtKToKKyAgICAgICAgKFdlYktpdDo6YnVp
bGRMaXN0Rm9yU3RvcmFnZUFjY2Vzc1Byb21wdCk6IERlbGV0ZWQuCisgICAgICAgICogVUlQcm9j
ZXNzL0NvY29hL1dLU3RvcmFnZUFjY2Vzc0FsZXJ0Lmg6CisgICAgICAgICogVUlQcm9jZXNzL0Nv
Y29hL1dLU3RvcmFnZUFjY2Vzc0FsZXJ0Lm1tOgorICAgICAgICAoV2ViS2l0OjpwcmVzZW50U3Rv
cmFnZUFjY2Vzc0FsZXJ0KToKKyAgICAgICAgKFdlYktpdDo6cHJlc2VudFN0b3JhZ2VBY2Nlc3NB
bGVydFF1aXJrKToKKyAgICAgICAgKFdlYktpdDo6ZGlzcGxheVN0b3JhZ2VBY2Nlc3NBbGVydCk6
CisKIDIwMjAtMTItMTYgIEthdGUgQ2hlbmV5ICA8a2F0aGVyaW5lX2NoZW5leUBhcHBsZS5jb20+
CiAKICAgICAgICAgU3RpbGwgY2FuJ3QgbG9naW4gdG8gbXkucGxheXN0YXRpb24uY29tCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lbi5scHJvai9Mb2NhbGl6YWJsZS5zdHJpbmdzIGIvU291
cmNlL1dlYkNvcmUvZW4ubHByb2ovTG9jYWxpemFibGUuc3RyaW5ncwppbmRleCA0NjZlMjIzNzll
YzFkMGNkZmVhNTA4NGZmZjZjMWFhZmYzMTZkMDk1Li42ZmM4MzA2NGU3ZGZiMjY0MjA0OGEzZTU3
ODNlYWJkZGQzNDhjMzcxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lbi5scHJvai9Mb2Nh
bGl6YWJsZS5zdHJpbmdzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VuLmxwcm9qL0xvY2FsaXphYmxl
LnN0cmluZ3MKQEAgLTEyNyw2ICsxMjcsOSBAQAogLyogTWVzc2FnZSBmb3IgcmVxdWVzdGluZyBj
cm9zcy1zaXRlIGNvb2tpZSBhbmQgd2Vic2l0ZSBkYXRhIGFjY2Vzcy4gKi8KICJBbGxvdyDigJwl
QOKAnSB0byB1c2UgY29va2llcyBhbmQgd2Vic2l0ZSBkYXRhIHdoaWxlIGJyb3dzaW5nIOKAnCVA
4oCdPyIgPSAiQWxsb3cg4oCcJUDigJ0gdG8gdXNlIGNvb2tpZXMgYW5kIHdlYnNpdGUgZGF0YSB3
aGlsZSBicm93c2luZyDigJwlQOKAnT8iOwogCisvKiBNZXNzYWdlIGZvciByZXF1ZXN0aW5nIGNy
b3NzLXNpdGUgY29va2llIGFuZCB3ZWJzaXRlIGRhdGEgYWNjZXNzIGZvciBtdWx0aXBsZSB0aGly
ZCBwYXJ0eSBkb21haW5zLiAqLworIkFsbG93IOKAnCVA4oCdIGFuZCDigJwlQOKAnSB0byB1c2Ug
Y29va2llcyBhbmQgd2Vic2l0ZSBkYXRhIHdoaWxlIGJyb3dzaW5nIOKAnCVA4oCdPyIgPSAiQWxs
b3cg4oCcJUDigJ0gYW5kIOKAnCVA4oCdIHRvIHVzZSBjb29raWVzIGFuZCB3ZWJzaXRlIGRhdGEg
d2hpbGUgYnJvd3Npbmcg4oCcJUDigJ0/IjsKKwogLyogTWVzc2FnZSBmb3IgdXNlciBtZWRpYSBw
cm9tcHQgKi8KICJBbGxvdyDigJwlQOKAnSB0byB1c2UgeW91ciBjYW1lcmEgYW5kIG1pY3JvcGhv
bmU/IiA9ICJBbGxvdyDigJwlQOKAnSB0byB1c2UgeW91ciBjYW1lcmEgYW5kIG1pY3JvcGhvbmU/
IjsKIApAQCAtMzE5LDYgKzMyMiw5IEBACiAvKiBNZXNzYWdlIGZvciByZXF1ZXN0aW5nIGNyb3Nz
LXNpdGUgY29va2llIGFuZCB3ZWJzaXRlIGRhdGEgYWNjZXNzLiAqLwogIkRvIHlvdSB3YW50IHRv
IGFsbG93IOKAnCVA4oCdIHRvIHVzZSBjb29raWVzIGFuZCB3ZWJzaXRlIGRhdGEgd2hpbGUgYnJv
d3Npbmcg4oCcJUDigJ0/IiA9ICJEbyB5b3Ugd2FudCB0byBhbGxvdyDigJwlQOKAnSB0byB1c2Ug
Y29va2llcyBhbmQgd2Vic2l0ZSBkYXRhIHdoaWxlIGJyb3dzaW5nIOKAnCVA4oCdPyI7CiAKKy8q
IE1lc3NhZ2UgZm9yIHJlcXVlc3RpbmcgY3Jvc3Mtc2l0ZSBjb29raWUgYW5kIHdlYnNpdGUgZGF0
YSBhY2Nlc3MgZm9yIG11bHRpcGxlIHRoaXJkIHBhcnR5IGRvbWFpbnMuICovCisiRG8geW91IHdh
bnQgdG8gYWxsb3cg4oCcJUDigJ0gYW5kIOKAnCVA4oCdIHRvIHVzZSBjb29raWVzIGFuZCB3ZWJz
aXRlIGRhdGEgd2hpbGUgYnJvd3Npbmcg4oCcJUDigJ0/IiA9ICJEbyB5b3Ugd2FudCB0byBhbGxv
dyDigJwlQOKAnSBhbmQg4oCcJUDigJ0gdG8gdXNlIGNvb2tpZXMgYW5kIHdlYnNpdGUgZGF0YSB3
aGlsZSBicm93c2luZyDigJwlQOKAnT8iOworCiAvKiBCdXR0b24gdGl0bGUgaW4gU3RvcmFnZSBB
Y2Nlc3MgQVBJIHByb21wdCAqLwogIkRvbid0IEFsbG93IChjcm9zcy1zaXRlIGNvb2tpZSBhbmQg
d2Vic2l0ZSBkYXRhIGFjY2VzcykiID0gIkRvbid0IEFsbG93IjsKIApAQCAtOTE5LDYgKzkyNSw5
IEBACiAvKiBJbmZvcm1hdGl2ZSB0ZXh0IGZvciByZXF1ZXN0aW5nIGNyb3NzLXNpdGUgY29va2ll
IGFuZCB3ZWJzaXRlIGRhdGEgYWNjZXNzLiAqLwogIlRoaXMgd2lsbCBhbGxvdyDigJwlQOKAnSB0
byB0cmFjayB5b3VyIGFjdGl2aXR5LiIgPSAiVGhpcyB3aWxsIGFsbG93IOKAnCVA4oCdIHRvIHRy
YWNrIHlvdXIgYWN0aXZpdHkuIjsKIAorLyogSW5mb3JtYXRpdmUgdGV4dCBmb3IgcmVxdWVzdGlu
ZyBjcm9zcy1zaXRlIGNvb2tpZSBhbmQgd2Vic2l0ZSBkYXRhIGFjY2Vzcy4gKi8KKyJUaGlzIHdp
bGwgYWxsb3cg4oCcJUDigJ0gYW5kIOKAnCVA4oCdIHRvIHRyYWNrIHlvdXIgYWN0aXZpdHkuIiA9
ICJUaGlzIHdpbGwgYWxsb3cg4oCcJUDigJ0gYW5kIOKAnCVA4oCdIHRvIHRyYWNrIHlvdXIgYWN0
aXZpdHkuIjsKKwogLyogVW5kbyBhY3Rpb24gbmFtZSAqLwogIlRpZ2h0ZW4gS2VybmluZyAoVW5k
byBhY3Rpb24gbmFtZSkiID0gIlRpZ2h0ZW4gS2VybmluZyI7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1VJRGVsZWdhdGUubW0gYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9Db2NvYS9VSURlbGVnYXRlLm1tCmluZGV4IGQwNzIzMjM4NzMzNGRlYjFhODdmNTAy
M2JjNjQ5NDdjMDA2ZWU3MDEuLjY4YmI3Mzk3ZjMyNzViNjkwY2U3YTI0ZWE5ZTY0MmYwZWVmYjBj
YWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1VJRGVsZWdhdGUu
bW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvVUlEZWxlZ2F0ZS5tbQpAQCAt
MzQ1LDE1ICszNDUsNiBAQCB2b2lkIFVJRGVsZWdhdGU6OlVJQ2xpZW50OjpydW5KYXZhU2NyaXB0
UHJvbXB0KFdlYlBhZ2VQcm94eSYgcGFnZSwgY29uc3QgV1RGOjpTdAogICAgIH0pLmdldCgpXTsK
IH0KIAotc3RhdGljIFN0cmluZyBidWlsZExpc3RGb3JTdG9yYWdlQWNjZXNzUHJvbXB0KGNvbnN0
IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIHN1YkRvbWFpbk9uZSwgY29uc3QgV2ViQ29yZTo6
UmVnaXN0cmFibGVEb21haW4gc3ViRG9tYWluVHdvKQotewotICAgIFN0cmluZ0J1aWxkZXIgYnVp
bGRlcjsKLSAgICBidWlsZGVyLmFwcGVuZChzdWJEb21haW5PbmUuc3RyaW5nKCkpOwotICAgIGJ1
aWxkZXIuYXBwZW5kKFN0cmluZyhbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpAIuKAnCBhbmQg
4oCcIl0pKTsKLSAgICBidWlsZGVyLmFwcGVuZChzdWJEb21haW5Ud28uc3RyaW5nKCkpOwotICAg
IHJldHVybiBidWlsZGVyLnRvU3RyaW5nKCk7Ci19Ci0KIHZvaWQgVUlEZWxlZ2F0ZTo6VUlDbGll
bnQ6OnJlcXVlc3RTdG9yYWdlQWNjZXNzQ29uZmlybShXZWJQYWdlUHJveHkmIHdlYlBhZ2VQcm94
eSwgV2ViRnJhbWVQcm94eSosIGNvbnN0IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiByZXF1
ZXN0aW5nRG9tYWluLCBjb25zdCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYgY3VycmVudERv
bWFpbiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikK
IHsKICAgICBhdXRvIGRlbGVnYXRlID0gbV91aURlbGVnYXRlLm1fZGVsZWdhdGUuZ2V0KCk7CkBA
IC0zNjEsMjMgKzM1MiwyMiBAQCB2b2lkIFVJRGVsZWdhdGU6OlVJQ2xpZW50OjpyZXF1ZXN0U3Rv
cmFnZUFjY2Vzc0NvbmZpcm0oV2ViUGFnZVByb3h5JiB3ZWJQYWdlUHJveAogICAgICAgICBjb21w
bGV0aW9uSGFuZGxlcihmYWxzZSk7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgCi0gICAg
U3RyaW5nIHJlcXVlc3RpbmdTdHJpbmc7CisKICAgICAvLyBTb21lIHNpdGVzIGhhdmUgcXVpcmtz
IHdoZXJlIG11bHRpcGxlIGxvZ2luIGRvbWFpbnMgcmVxdWlyZSBzdG9yYWdlIGFjY2Vzcy4KLSAg
ICBpZiAoYXV0byBhZGRpdGlvbmFsTG9naW5Eb21haW4gPSBXZWJDb3JlOjpOZXR3b3JrU3RvcmFn
ZVNlc3Npb246OmZpbmRBZGRpdGlvbmFsTG9naW5Eb21haW4oY3VycmVudERvbWFpbiwgcmVxdWVz
dGluZ0RvbWFpbikpCi0gICAgICAgIHJlcXVlc3RpbmdTdHJpbmcgPSBidWlsZExpc3RGb3JTdG9y
YWdlQWNjZXNzUHJvbXB0KHJlcXVlc3RpbmdEb21haW4sICphZGRpdGlvbmFsTG9naW5Eb21haW4p
OwotICAgIGVsc2UKLSAgICAgICAgcmVxdWVzdGluZ1N0cmluZyA9IHJlcXVlc3RpbmdEb21haW4u
c3RyaW5nKCk7CisgICAgaWYgKGF1dG8gYWRkaXRpb25hbExvZ2luRG9tYWluID0gV2ViQ29yZTo6
TmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpmaW5kQWRkaXRpb25hbExvZ2luRG9tYWluKGN1cnJlbnRE
b21haW4sIHJlcXVlc3RpbmdEb21haW4pKSB7CisgICAgICAgIHByZXNlbnRTdG9yYWdlQWNjZXNz
QWxlcnRRdWlyayhtX3VpRGVsZWdhdGUubV93ZWJWaWV3LCByZXF1ZXN0aW5nRG9tYWluLCAqYWRk
aXRpb25hbExvZ2luRG9tYWluLCBjdXJyZW50RG9tYWluLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5k
bGVyKSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CiAKICAgICBpZiAoIW1fdWlEZWxlZ2F0ZS5t
X2RlbGVnYXRlTWV0aG9kcy53ZWJWaWV3UmVxdWVzdFN0b3JhZ2VBY2Nlc3NQYW5lbFVuZGVyRmly
c3RQYXJ0eUNvbXBsZXRpb25IYW5kbGVyKSB7CiAjaWYgIVBMQVRGT1JNKFdBVENIT1MpICYmICFQ
TEFURk9STShBUFBMRVRWKQotICAgICAgICBwcmVzZW50U3RvcmFnZUFjY2Vzc0FsZXJ0KG1fdWlE
ZWxlZ2F0ZS5tX3dlYlZpZXcsIHJlcXVlc3RpbmdTdHJpbmcsIGN1cnJlbnREb21haW4sIFdURk1v
dmUoY29tcGxldGlvbkhhbmRsZXIpKTsKKyAgICAgICAgcHJlc2VudFN0b3JhZ2VBY2Nlc3NBbGVy
dChtX3VpRGVsZWdhdGUubV93ZWJWaWV3LCByZXF1ZXN0aW5nRG9tYWluLCBjdXJyZW50RG9tYWlu
LCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiAjZW5kaWYKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KIAogICAgIGF1dG8gY2hlY2tlciA9IENvbXBsZXRpb25IYW5kbGVyQ2FsbENoZWNrZXI6
OmNyZWF0ZShkZWxlZ2F0ZS5nZXQoKSwgQHNlbGVjdG9yKF93ZWJWaWV3OnJlcXVlc3RTdG9yYWdl
QWNjZXNzUGFuZWxGb3JEb21haW46dW5kZXJDdXJyZW50RG9tYWluOmNvbXBsZXRpb25IYW5kbGVy
OikpOwotICAgIFsoaWQgPFdLVUlEZWxlZ2F0ZVByaXZhdGU+KWRlbGVnYXRlIF93ZWJWaWV3Om1f
dWlEZWxlZ2F0ZS5tX3dlYlZpZXcgcmVxdWVzdFN0b3JhZ2VBY2Nlc3NQYW5lbEZvckRvbWFpbjpy
ZXF1ZXN0aW5nU3RyaW5nIHVuZGVyQ3VycmVudERvbWFpbjpjdXJyZW50RG9tYWluLnN0cmluZygp
IGNvbXBsZXRpb25IYW5kbGVyOm1ha2VCbG9ja1B0cihbY29tcGxldGlvbkhhbmRsZXIgPSBXVEZN
b3ZlKGNvbXBsZXRpb25IYW5kbGVyKSwgY2hlY2tlciA9IFdURk1vdmUoY2hlY2tlcildIChCT09M
IHJlc3VsdCkgbXV0YWJsZSB7CisgICAgWyhpZCA8V0tVSURlbGVnYXRlUHJpdmF0ZT4pZGVsZWdh
dGUgX3dlYlZpZXc6bV91aURlbGVnYXRlLm1fd2ViVmlldyByZXF1ZXN0U3RvcmFnZUFjY2Vzc1Bh
bmVsRm9yRG9tYWluOnJlcXVlc3RpbmdEb21haW4uc3RyaW5nKCkgdW5kZXJDdXJyZW50RG9tYWlu
OmN1cnJlbnREb21haW4uc3RyaW5nKCkgY29tcGxldGlvbkhhbmRsZXI6bWFrZUJsb2NrUHRyKFtj
b21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCBjaGVja2VyID0g
V1RGTW92ZShjaGVja2VyKV0gKEJPT0wgcmVzdWx0KSBtdXRhYmxlIHsKICAgICAgICAgaWYgKGNo
ZWNrZXItPmNvbXBsZXRpb25IYW5kbGVySGFzQmVlbkNhbGxlZCgpKQogICAgICAgICAgICAgcmV0
dXJuOwogICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihyZXN1bHQpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV0tTdG9yYWdlQWNjZXNzQWxlcnQuaCBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dLU3RvcmFnZUFjY2Vzc0FsZXJ0LmgKaW5kZXggNmI3
NzI5NjhjNDk5NzZlMTk0YjZhMjA0OGZjZDExOWM2ZmM2YTA1YS4uMTViNTNhZWMxNmRhODA2OWNk
ZGNiMzk5Y2M2OGVjZmM2MTljYTY5OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQ29jb2EvV0tTdG9yYWdlQWNjZXNzQWxlcnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9Db2NvYS9XS1N0b3JhZ2VBY2Nlc3NBbGVydC5oCkBAIC00MSw3ICs0MSw5IEBAIGNsYXNz
IFJlZ2lzdHJhYmxlRG9tYWluOwogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAotdm9pZCBwcmVzZW50
U3RvcmFnZUFjY2Vzc0FsZXJ0KFdLV2ViVmlldyAqLCBjb25zdCBTdHJpbmcmIHJlcXVlc3RpbmdT
dHJpbmcsIGNvbnN0IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiBjdXJyZW50RG9tYWluLCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsKK3ZvaWQgcHJlc2VudFN0b3JhZ2VBY2Nl
c3NBbGVydChXS1dlYlZpZXcgKiwgY29uc3QgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mIHJl
cXVlc3RpbmdEb21haW4sIGNvbnN0IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiBjdXJyZW50
RG9tYWluLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsKK3ZvaWQgcHJlc2VudFN0
b3JhZ2VBY2Nlc3NBbGVydFF1aXJrKFdLV2ViVmlldyAqLCBjb25zdCBXZWJDb3JlOjpSZWdpc3Ry
YWJsZURvbWFpbiYgZmlyc3RSZXF1ZXN0aW5nRG9tYWluLCBjb25zdCBXZWJDb3JlOjpSZWdpc3Ry
YWJsZURvbWFpbiYgc2Vjb25kUmVxdWVzdGluZ0RvbWFpbiwgY29uc3QgV2ViQ29yZTo6UmVnaXN0
cmFibGVEb21haW4mIGN1cnJlbnQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpOwor
dm9pZCBkaXNwbGF5U3RvcmFnZUFjY2Vzc0FsZXJ0KFdLV2ViVmlldyAqLCBOU1N0cmluZyAqLCBO
U1N0cmluZyAqLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsKIAogfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XS1N0b3JhZ2VBY2Nlc3NBbGVy
dC5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dLU3RvcmFnZUFjY2Vzc0FsZXJ0
Lm1tCmluZGV4IDYyNzgyYTY2MDdjMjBkMWQ3ODYxNzY1MTA5MTY5ZmU2NTgwYmY1YTQuLjI1MjVh
YWJkMjY4MGY2NTZhYWZhM2JkNzM2NGI0ZDkyODc4MjA5NGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dLU3RvcmFnZUFjY2Vzc0FsZXJ0Lm1tCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dLU3RvcmFnZUFjY2Vzc0FsZXJ0Lm1tCkBAIC0zNiwx
MyArMzYsOSBAQAogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAotdm9pZCBwcmVzZW50U3RvcmFnZUFj
Y2Vzc0FsZXJ0KFdLV2ViVmlldyAqd2ViVmlldywgY29uc3QgU3RyaW5nJiByZXF1ZXN0aW5nLCBj
b25zdCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYgY3VycmVudCwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgcHJlc2VudFN0b3JhZ2VB
Y2Nlc3NBbGVydChXS1dlYlZpZXcgKndlYlZpZXcsIGNvbnN0IFdlYkNvcmU6OlJlZ2lzdHJhYmxl
RG9tYWluJiByZXF1ZXN0aW5nLCBjb25zdCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYgY3Vy
cmVudCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikK
IHsKLSAgICBhdXRvIGNvbXBsZXRpb25CbG9jayA9IG1ha2VCbG9ja1B0cihbY29tcGxldGlvbkhh
bmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oYm9vbCBzaG91bGRBbGxvdykgbXV0
YWJsZSB7Ci0gICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHNob3VsZEFsbG93KTsKLSAgICB9KTsK
LQotICAgIGF1dG8gcmVxdWVzdGluZ0RvbWFpbiA9IHJlcXVlc3RpbmcuY3JlYXRlQ0ZTdHJpbmco
KTsKKyAgICBhdXRvIHJlcXVlc3RpbmdEb21haW4gPSByZXF1ZXN0aW5nLnN0cmluZygpLmNyZWF0
ZUNGU3RyaW5nKCk7CiAgICAgYXV0byBjdXJyZW50RG9tYWluID0gY3VycmVudC5zdHJpbmcoKS5j
cmVhdGVDRlN0cmluZygpOwogCiAjaWYgUExBVEZPUk0oTUFDKQpAQCAtNTIsNiArNDgsMzMgQEAg
dm9pZCBwcmVzZW50U3RvcmFnZUFjY2Vzc0FsZXJ0KFdLV2ViVmlldyAqd2ViVmlldywgY29uc3Qg
U3RyaW5nJiByZXF1ZXN0aW5nLCBjb24KICNlbmRpZgogCiAgICAgTlNTdHJpbmcgKmluZm9ybWF0
aXZlVGV4dCA9IFtOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OldFQl9VSV9OU1NUUklORyhAIlRo
aXMgd2lsbCBhbGxvdyDigJwlQOKAnSB0byB0cmFjayB5b3VyIGFjdGl2aXR5LiIsIEAiSW5mb3Jt
YXRpdmUgdGV4dCBmb3IgcmVxdWVzdGluZyBjcm9zcy1zaXRlIGNvb2tpZSBhbmQgd2Vic2l0ZSBk
YXRhIGFjY2Vzcy4iKSwgcmVxdWVzdGluZ0RvbWFpbi5nZXQoKV07CisKKyAgICBkaXNwbGF5U3Rv
cmFnZUFjY2Vzc0FsZXJ0KHdlYlZpZXcsIGFsZXJ0VGl0bGUsIGluZm9ybWF0aXZlVGV4dCwgV1RG
TW92ZShjb21wbGV0aW9uSGFuZGxlcikpOworfQorCit2b2lkIHByZXNlbnRTdG9yYWdlQWNjZXNz
QWxlcnRRdWlyayhXS1dlYlZpZXcgKndlYlZpZXcsIGNvbnN0IFdlYkNvcmU6OlJlZ2lzdHJhYmxl
RG9tYWluJiBmaXJzdFJlcXVlc3RpbmcsIGNvbnN0IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWlu
JiBzZWNvbmRSZXF1ZXN0aW5nLCBjb25zdCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYgY3Vy
cmVudCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikK
K3sKKyAgICBhdXRvIGZpcnN0UmVxdWVzdGluZ0RvbWFpbiA9IGZpcnN0UmVxdWVzdGluZy5zdHJp
bmcoKS5jcmVhdGVDRlN0cmluZygpOworICAgIGF1dG8gc2Vjb25kUmVxdWVzdGluZ0RvbWFpbiA9
IHNlY29uZFJlcXVlc3Rpbmcuc3RyaW5nKCkuY3JlYXRlQ0ZTdHJpbmcoKTsKKyAgICBhdXRvIGN1
cnJlbnREb21haW4gPSBjdXJyZW50LnN0cmluZygpLmNyZWF0ZUNGU3RyaW5nKCk7CisKKyNpZiBQ
TEFURk9STShNQUMpCisgICAgTlNTdHJpbmcgKmFsZXJ0VGl0bGUgPSBbTlNTdHJpbmcgc3RyaW5n
V2l0aEZvcm1hdDpXRUJfVUlfTlNTVFJJTkcoQCJEbyB5b3Ugd2FudCB0byBhbGxvdyDigJwlQOKA
nSBhbmQg4oCcJUDigJ0gdG8gdXNlIGNvb2tpZXMgYW5kIHdlYnNpdGUgZGF0YSB3aGlsZSBicm93
c2luZyDigJwlQOKAnT8iLCBAIk1lc3NhZ2UgZm9yIHJlcXVlc3RpbmcgY3Jvc3Mtc2l0ZSBjb29r
aWUgYW5kIHdlYnNpdGUgZGF0YSBhY2Nlc3MuIiksIGZpcnN0UmVxdWVzdGluZ0RvbWFpbi5nZXQo
KSwgc2Vjb25kUmVxdWVzdGluZ0RvbWFpbi5nZXQoKSwgY3VycmVudERvbWFpbi5nZXQoKV07Cisj
ZWxzZQorICAgIE5TU3RyaW5nICphbGVydFRpdGxlID0gW05TU3RyaW5nIHN0cmluZ1dpdGhGb3Jt
YXQ6V0VCX1VJX05TU1RSSU5HKEAiQWxsb3cg4oCcJUDigJ0gYW5kIOKAnCVA4oCdIHRvIHVzZSBj
b29raWVzIGFuZCB3ZWJzaXRlIGRhdGEgd2hpbGUgYnJvd3Npbmcg4oCcJUDigJ0/IiwgQCJNZXNz
YWdlIGZvciByZXF1ZXN0aW5nIGNyb3NzLXNpdGUgY29va2llIGFuZCB3ZWJzaXRlIGRhdGEgYWNj
ZXNzLiIpLCBmaXJzdFJlcXVlc3RpbmdEb21haW4uZ2V0KCksIHNlY29uZFJlcXVlc3RpbmdEb21h
aW4uZ2V0KCksIGN1cnJlbnREb21haW4uZ2V0KCldOworI2VuZGlmCisKKyAgICBOU1N0cmluZyAq
aW5mb3JtYXRpdmVUZXh0ID0gW05TU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6V0VCX1VJX05TU1RS
SU5HKEAiVGhpcyB3aWxsIGFsbG93IOKAnCVA4oCdIGFuZCDigJwlQOKAnSB0byB0cmFjayB5b3Vy
IGFjdGl2aXR5LiIsIEAiSW5mb3JtYXRpdmUgdGV4dCBmb3IgcmVxdWVzdGluZyBjcm9zcy1zaXRl
IGNvb2tpZSBhbmQgd2Vic2l0ZSBkYXRhIGFjY2Vzcy4iKSwgZmlyc3RSZXF1ZXN0aW5nRG9tYWlu
LmdldCgpLCBzZWNvbmRSZXF1ZXN0aW5nRG9tYWluLmdldCgpXTsKKyAgICAKKyAgICBkaXNwbGF5
U3RvcmFnZUFjY2Vzc0FsZXJ0KHdlYlZpZXcsIGFsZXJ0VGl0bGUsIGluZm9ybWF0aXZlVGV4dCwg
V1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOworfQorCit2b2lkIGRpc3BsYXlTdG9yYWdlQWNj
ZXNzQWxlcnQoV0tXZWJWaWV3ICp3ZWJWaWV3LCBOU1N0cmluZyAqYWxlcnRUaXRsZSwgTlNTdHJp
bmcgKmluZm9ybWF0aXZlVGV4dCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21w
bGV0aW9uSGFuZGxlcikKK3sKKyAgICBhdXRvIGNvbXBsZXRpb25CbG9jayA9IG1ha2VCbG9ja1B0
cihbY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oYm9vbCBz
aG91bGRBbGxvdykgbXV0YWJsZSB7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHNob3VsZEFs
bG93KTsKKyAgICB9KTsKKwogICAgIE5TU3RyaW5nICphbGxvd0J1dHRvblN0cmluZyA9IFdFQl9V
SV9TVFJJTkdfS0VZKEAiQWxsb3ciLCAiQWxsb3cgKGNyb3NzLXNpdGUgY29va2llIGFuZCB3ZWJz
aXRlIGRhdGEgYWNjZXNzKSIsIEAiQnV0dG9uIHRpdGxlIGluIFN0b3JhZ2UgQWNjZXNzIEFQSSBw
cm9tcHQiKTsKICAgICBOU1N0cmluZyAqZG9Ob3RBbGxvd0J1dHRvblN0cmluZyA9IFdFQl9VSV9T
VFJJTkdfS0VZKEAiRG9uJ3QgQWxsb3ciLCAiRG9uJ3QgQWxsb3cgKGNyb3NzLXNpdGUgY29va2ll
IGFuZCB3ZWJzaXRlIGRhdGEgYWNjZXNzKSIsIEAiQnV0dG9uIHRpdGxlIGluIFN0b3JhZ2UgQWNj
ZXNzIEFQSSBwcm9tcHQiKTsKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>416437</attachid>
            <date>2020-12-17 11:02:17 -0800</date>
            <delta_ts>2020-12-17 13:22:52 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-219900-20201217110216.patch</filename>
            <type>text/plain</type>
            <size>12443</size>
            <attacher name="Kate Cheney">katherine_cheney</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcwOTE2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZjFkMWI4NjA4YzQyOWVi
MGJkZTZkYjNkMTllNTRjZTk4ZTc0ZjNlMC4uNDhkODY3MTA3YzFhODVkZmY0ZWFiMGZjZGNhMTVm
YjI4ZmFjY2JhZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBACisyMDIwLTEyLTE2ICBLYXRl
IENoZW5leSAgPGthdGhlcmluZV9jaGVuZXlAYXBwbGUuY29tPgorCisgICAgICAgIEZvbGxvd3Vw
IHBhdGNoOiBTdGlsbCBjYW4ndCBsb2dpbiB0byBteS5wbGF5c3RhdGlvbi5jb20KKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxOTkwMAorICAgICAgICA8
cmRhcjovL3Byb2JsZW0vNzIwNjI5ODU+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgKiBlbi5scHJvai9Mb2NhbGl6YWJsZS5zdHJpbmdzOgorCiAyMDIw
LTEyLTE2ICBLYXRlIENoZW5leSAgPGthdGhlcmluZV9jaGVuZXlAYXBwbGUuY29tPgogCiAgICAg
ICAgIFN0aWxsIGNhbid0IGxvZ2luIHRvIG15LnBsYXlzdGF0aW9uLmNvbQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCA2
MDgyNGI5OTkxNDllNmVhOTMzOWNkYjJlMTMyOWNlOTJiZDM5MjZkLi42MWFjM2ZlOTU5Njc1ZTdm
NTVjYmI4OGFlZDM0ZTVkZjE0ZDA4ZTQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5n
ZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDI1IEBACisyMDIw
LTEyLTE2ICBLYXRlIENoZW5leSAgPGthdGhlcmluZV9jaGVuZXlAYXBwbGUuY29tPgorCisgICAg
ICAgIEZvbGxvd3VwIHBhdGNoOiBTdGlsbCBjYW4ndCBsb2dpbiB0byBteS5wbGF5c3RhdGlvbi5j
b20KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxOTkw
MAorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNzIwNjI5ODU+CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVXNpbmcgY3VybHkgcXVvdGVzIHdoZW4gY29u
c3RydWN0aW5nIHRoZSBTdG9yYWdlIEFjY2VzcyBwcm9tcHQgbWVzc2FnZQorICAgICAgICBtYXkg
Y3JlYXRlIGlzc3VlcyB3aXRoIGxvY2FsaXphYmxlIHN0cmluZ3MuIFdlIHNob3VsZCBtYWtlIGEg
c2VwYXJhdGUKKyAgICAgICAgbG9jYWxpemFibGUgc3RyaW5nIGZvciB0aGlzIHF1aXJrIGNhc2Ug
YW5kIHJlbW92ZSBpdCB3aGVuIFNvbnkKKyAgICAgICAgbWlncmF0ZXMgYXdheSBmcm9tIHRoaXJk
IHBhcnR5IGNvb2tpZXMgaW4gdGhlaXIgbG9naW4gZmxvdy4KKworICAgICAgICAqIFVJUHJvY2Vz
cy9Db2NvYS9VSURlbGVnYXRlLm1tOgorICAgICAgICAoV2ViS2l0OjpVSURlbGVnYXRlOjpVSUNs
aWVudDo6cmVxdWVzdFN0b3JhZ2VBY2Nlc3NDb25maXJtKToKKyAgICAgICAgKFdlYktpdDo6YnVp
bGRMaXN0Rm9yU3RvcmFnZUFjY2Vzc1Byb21wdCk6IERlbGV0ZWQuCisgICAgICAgICogVUlQcm9j
ZXNzL0NvY29hL1dLU3RvcmFnZUFjY2Vzc0FsZXJ0Lmg6CisgICAgICAgICogVUlQcm9jZXNzL0Nv
Y29hL1dLU3RvcmFnZUFjY2Vzc0FsZXJ0Lm1tOgorICAgICAgICAoV2ViS2l0OjpwcmVzZW50U3Rv
cmFnZUFjY2Vzc0FsZXJ0KToKKyAgICAgICAgKFdlYktpdDo6cHJlc2VudFN0b3JhZ2VBY2Nlc3NB
bGVydFF1aXJrKToKKyAgICAgICAgKFdlYktpdDo6ZGlzcGxheVN0b3JhZ2VBY2Nlc3NBbGVydCk6
CisKIDIwMjAtMTItMTYgIEthdGUgQ2hlbmV5ICA8a2F0aGVyaW5lX2NoZW5leUBhcHBsZS5jb20+
CiAKICAgICAgICAgU3RpbGwgY2FuJ3QgbG9naW4gdG8gbXkucGxheXN0YXRpb24uY29tCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lbi5scHJvai9Mb2NhbGl6YWJsZS5zdHJpbmdzIGIvU291
cmNlL1dlYkNvcmUvZW4ubHByb2ovTG9jYWxpemFibGUuc3RyaW5ncwppbmRleCA0NjZlMjIzNzll
YzFkMGNkZmVhNTA4NGZmZjZjMWFhZmYzMTZkMDk1Li42ZmM4MzA2NGU3ZGZiMjY0MjA0OGEzZTU3
ODNlYWJkZGQzNDhjMzcxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lbi5scHJvai9Mb2Nh
bGl6YWJsZS5zdHJpbmdzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VuLmxwcm9qL0xvY2FsaXphYmxl
LnN0cmluZ3MKQEAgLTEyNyw2ICsxMjcsOSBAQAogLyogTWVzc2FnZSBmb3IgcmVxdWVzdGluZyBj
cm9zcy1zaXRlIGNvb2tpZSBhbmQgd2Vic2l0ZSBkYXRhIGFjY2Vzcy4gKi8KICJBbGxvdyDigJwl
QOKAnSB0byB1c2UgY29va2llcyBhbmQgd2Vic2l0ZSBkYXRhIHdoaWxlIGJyb3dzaW5nIOKAnCVA
4oCdPyIgPSAiQWxsb3cg4oCcJUDigJ0gdG8gdXNlIGNvb2tpZXMgYW5kIHdlYnNpdGUgZGF0YSB3
aGlsZSBicm93c2luZyDigJwlQOKAnT8iOwogCisvKiBNZXNzYWdlIGZvciByZXF1ZXN0aW5nIGNy
b3NzLXNpdGUgY29va2llIGFuZCB3ZWJzaXRlIGRhdGEgYWNjZXNzIGZvciBtdWx0aXBsZSB0aGly
ZCBwYXJ0eSBkb21haW5zLiAqLworIkFsbG93IOKAnCVA4oCdIGFuZCDigJwlQOKAnSB0byB1c2Ug
Y29va2llcyBhbmQgd2Vic2l0ZSBkYXRhIHdoaWxlIGJyb3dzaW5nIOKAnCVA4oCdPyIgPSAiQWxs
b3cg4oCcJUDigJ0gYW5kIOKAnCVA4oCdIHRvIHVzZSBjb29raWVzIGFuZCB3ZWJzaXRlIGRhdGEg
d2hpbGUgYnJvd3Npbmcg4oCcJUDigJ0/IjsKKwogLyogTWVzc2FnZSBmb3IgdXNlciBtZWRpYSBw
cm9tcHQgKi8KICJBbGxvdyDigJwlQOKAnSB0byB1c2UgeW91ciBjYW1lcmEgYW5kIG1pY3JvcGhv
bmU/IiA9ICJBbGxvdyDigJwlQOKAnSB0byB1c2UgeW91ciBjYW1lcmEgYW5kIG1pY3JvcGhvbmU/
IjsKIApAQCAtMzE5LDYgKzMyMiw5IEBACiAvKiBNZXNzYWdlIGZvciByZXF1ZXN0aW5nIGNyb3Nz
LXNpdGUgY29va2llIGFuZCB3ZWJzaXRlIGRhdGEgYWNjZXNzLiAqLwogIkRvIHlvdSB3YW50IHRv
IGFsbG93IOKAnCVA4oCdIHRvIHVzZSBjb29raWVzIGFuZCB3ZWJzaXRlIGRhdGEgd2hpbGUgYnJv
d3Npbmcg4oCcJUDigJ0/IiA9ICJEbyB5b3Ugd2FudCB0byBhbGxvdyDigJwlQOKAnSB0byB1c2Ug
Y29va2llcyBhbmQgd2Vic2l0ZSBkYXRhIHdoaWxlIGJyb3dzaW5nIOKAnCVA4oCdPyI7CiAKKy8q
IE1lc3NhZ2UgZm9yIHJlcXVlc3RpbmcgY3Jvc3Mtc2l0ZSBjb29raWUgYW5kIHdlYnNpdGUgZGF0
YSBhY2Nlc3MgZm9yIG11bHRpcGxlIHRoaXJkIHBhcnR5IGRvbWFpbnMuICovCisiRG8geW91IHdh
bnQgdG8gYWxsb3cg4oCcJUDigJ0gYW5kIOKAnCVA4oCdIHRvIHVzZSBjb29raWVzIGFuZCB3ZWJz
aXRlIGRhdGEgd2hpbGUgYnJvd3Npbmcg4oCcJUDigJ0/IiA9ICJEbyB5b3Ugd2FudCB0byBhbGxv
dyDigJwlQOKAnSBhbmQg4oCcJUDigJ0gdG8gdXNlIGNvb2tpZXMgYW5kIHdlYnNpdGUgZGF0YSB3
aGlsZSBicm93c2luZyDigJwlQOKAnT8iOworCiAvKiBCdXR0b24gdGl0bGUgaW4gU3RvcmFnZSBB
Y2Nlc3MgQVBJIHByb21wdCAqLwogIkRvbid0IEFsbG93IChjcm9zcy1zaXRlIGNvb2tpZSBhbmQg
d2Vic2l0ZSBkYXRhIGFjY2VzcykiID0gIkRvbid0IEFsbG93IjsKIApAQCAtOTE5LDYgKzkyNSw5
IEBACiAvKiBJbmZvcm1hdGl2ZSB0ZXh0IGZvciByZXF1ZXN0aW5nIGNyb3NzLXNpdGUgY29va2ll
IGFuZCB3ZWJzaXRlIGRhdGEgYWNjZXNzLiAqLwogIlRoaXMgd2lsbCBhbGxvdyDigJwlQOKAnSB0
byB0cmFjayB5b3VyIGFjdGl2aXR5LiIgPSAiVGhpcyB3aWxsIGFsbG93IOKAnCVA4oCdIHRvIHRy
YWNrIHlvdXIgYWN0aXZpdHkuIjsKIAorLyogSW5mb3JtYXRpdmUgdGV4dCBmb3IgcmVxdWVzdGlu
ZyBjcm9zcy1zaXRlIGNvb2tpZSBhbmQgd2Vic2l0ZSBkYXRhIGFjY2Vzcy4gKi8KKyJUaGlzIHdp
bGwgYWxsb3cg4oCcJUDigJ0gYW5kIOKAnCVA4oCdIHRvIHRyYWNrIHlvdXIgYWN0aXZpdHkuIiA9
ICJUaGlzIHdpbGwgYWxsb3cg4oCcJUDigJ0gYW5kIOKAnCVA4oCdIHRvIHRyYWNrIHlvdXIgYWN0
aXZpdHkuIjsKKwogLyogVW5kbyBhY3Rpb24gbmFtZSAqLwogIlRpZ2h0ZW4gS2VybmluZyAoVW5k
byBhY3Rpb24gbmFtZSkiID0gIlRpZ2h0ZW4gS2VybmluZyI7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1VJRGVsZWdhdGUubW0gYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9Db2NvYS9VSURlbGVnYXRlLm1tCmluZGV4IGQwNzIzMjM4NzMzNGRlYjFhODdmNTAy
M2JjNjQ5NDdjMDA2ZWU3MDEuLmQzYjc0MTg5NWE0YjI4ZmJlYmQzMTU4NjZhN2Y4OTUxNzQ4ZjBj
ZjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1VJRGVsZWdhdGUu
bW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvVUlEZWxlZ2F0ZS5tbQpAQCAt
MzQ1LDE1ICszNDUsNiBAQCB2b2lkIFVJRGVsZWdhdGU6OlVJQ2xpZW50OjpydW5KYXZhU2NyaXB0
UHJvbXB0KFdlYlBhZ2VQcm94eSYgcGFnZSwgY29uc3QgV1RGOjpTdAogICAgIH0pLmdldCgpXTsK
IH0KIAotc3RhdGljIFN0cmluZyBidWlsZExpc3RGb3JTdG9yYWdlQWNjZXNzUHJvbXB0KGNvbnN0
IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIHN1YkRvbWFpbk9uZSwgY29uc3QgV2ViQ29yZTo6
UmVnaXN0cmFibGVEb21haW4gc3ViRG9tYWluVHdvKQotewotICAgIFN0cmluZ0J1aWxkZXIgYnVp
bGRlcjsKLSAgICBidWlsZGVyLmFwcGVuZChzdWJEb21haW5PbmUuc3RyaW5nKCkpOwotICAgIGJ1
aWxkZXIuYXBwZW5kKFN0cmluZyhbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpAIuKAnCBhbmQg
4oCcIl0pKTsKLSAgICBidWlsZGVyLmFwcGVuZChzdWJEb21haW5Ud28uc3RyaW5nKCkpOwotICAg
IHJldHVybiBidWlsZGVyLnRvU3RyaW5nKCk7Ci19Ci0KIHZvaWQgVUlEZWxlZ2F0ZTo6VUlDbGll
bnQ6OnJlcXVlc3RTdG9yYWdlQWNjZXNzQ29uZmlybShXZWJQYWdlUHJveHkmIHdlYlBhZ2VQcm94
eSwgV2ViRnJhbWVQcm94eSosIGNvbnN0IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiByZXF1
ZXN0aW5nRG9tYWluLCBjb25zdCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYgY3VycmVudERv
bWFpbiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikK
IHsKICAgICBhdXRvIGRlbGVnYXRlID0gbV91aURlbGVnYXRlLm1fZGVsZWdhdGUuZ2V0KCk7CkBA
IC0zNjEsMjMgKzM1MiwyNCBAQCB2b2lkIFVJRGVsZWdhdGU6OlVJQ2xpZW50OjpyZXF1ZXN0U3Rv
cmFnZUFjY2Vzc0NvbmZpcm0oV2ViUGFnZVByb3h5JiB3ZWJQYWdlUHJveAogICAgICAgICBjb21w
bGV0aW9uSGFuZGxlcihmYWxzZSk7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgCi0gICAg
U3RyaW5nIHJlcXVlc3RpbmdTdHJpbmc7CisKICAgICAvLyBTb21lIHNpdGVzIGhhdmUgcXVpcmtz
IHdoZXJlIG11bHRpcGxlIGxvZ2luIGRvbWFpbnMgcmVxdWlyZSBzdG9yYWdlIGFjY2Vzcy4KLSAg
ICBpZiAoYXV0byBhZGRpdGlvbmFsTG9naW5Eb21haW4gPSBXZWJDb3JlOjpOZXR3b3JrU3RvcmFn
ZVNlc3Npb246OmZpbmRBZGRpdGlvbmFsTG9naW5Eb21haW4oY3VycmVudERvbWFpbiwgcmVxdWVz
dGluZ0RvbWFpbikpCi0gICAgICAgIHJlcXVlc3RpbmdTdHJpbmcgPSBidWlsZExpc3RGb3JTdG9y
YWdlQWNjZXNzUHJvbXB0KHJlcXVlc3RpbmdEb21haW4sICphZGRpdGlvbmFsTG9naW5Eb21haW4p
OwotICAgIGVsc2UKLSAgICAgICAgcmVxdWVzdGluZ1N0cmluZyA9IHJlcXVlc3RpbmdEb21haW4u
c3RyaW5nKCk7CisgICAgaWYgKGF1dG8gYWRkaXRpb25hbExvZ2luRG9tYWluID0gV2ViQ29yZTo6
TmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpmaW5kQWRkaXRpb25hbExvZ2luRG9tYWluKGN1cnJlbnRE
b21haW4sIHJlcXVlc3RpbmdEb21haW4pKSB7CisjaWYgIVBMQVRGT1JNKFdBVENIT1MpICYmICFQ
TEFURk9STShBUFBMRVRWKQorICAgICAgICBwcmVzZW50U3RvcmFnZUFjY2Vzc0FsZXJ0UXVpcmso
bV91aURlbGVnYXRlLm1fd2ViVmlldywgcmVxdWVzdGluZ0RvbWFpbiwgKmFkZGl0aW9uYWxMb2dp
bkRvbWFpbiwgY3VycmVudERvbWFpbiwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOworI2Vu
ZGlmCisgICAgICAgIHJldHVybjsKKyAgICB9CiAKICAgICBpZiAoIW1fdWlEZWxlZ2F0ZS5tX2Rl
bGVnYXRlTWV0aG9kcy53ZWJWaWV3UmVxdWVzdFN0b3JhZ2VBY2Nlc3NQYW5lbFVuZGVyRmlyc3RQ
YXJ0eUNvbXBsZXRpb25IYW5kbGVyKSB7CiAjaWYgIVBMQVRGT1JNKFdBVENIT1MpICYmICFQTEFU
Rk9STShBUFBMRVRWKQotICAgICAgICBwcmVzZW50U3RvcmFnZUFjY2Vzc0FsZXJ0KG1fdWlEZWxl
Z2F0ZS5tX3dlYlZpZXcsIHJlcXVlc3RpbmdTdHJpbmcsIGN1cnJlbnREb21haW4sIFdURk1vdmUo
Y29tcGxldGlvbkhhbmRsZXIpKTsKKyAgICAgICAgcHJlc2VudFN0b3JhZ2VBY2Nlc3NBbGVydCht
X3VpRGVsZWdhdGUubV93ZWJWaWV3LCByZXF1ZXN0aW5nRG9tYWluLCBjdXJyZW50RG9tYWluLCBX
VEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiAjZW5kaWYKICAgICAgICAgcmV0dXJuOwogICAg
IH0KIAogICAgIGF1dG8gY2hlY2tlciA9IENvbXBsZXRpb25IYW5kbGVyQ2FsbENoZWNrZXI6OmNy
ZWF0ZShkZWxlZ2F0ZS5nZXQoKSwgQHNlbGVjdG9yKF93ZWJWaWV3OnJlcXVlc3RTdG9yYWdlQWNj
ZXNzUGFuZWxGb3JEb21haW46dW5kZXJDdXJyZW50RG9tYWluOmNvbXBsZXRpb25IYW5kbGVyOikp
OwotICAgIFsoaWQgPFdLVUlEZWxlZ2F0ZVByaXZhdGU+KWRlbGVnYXRlIF93ZWJWaWV3Om1fdWlE
ZWxlZ2F0ZS5tX3dlYlZpZXcgcmVxdWVzdFN0b3JhZ2VBY2Nlc3NQYW5lbEZvckRvbWFpbjpyZXF1
ZXN0aW5nU3RyaW5nIHVuZGVyQ3VycmVudERvbWFpbjpjdXJyZW50RG9tYWluLnN0cmluZygpIGNv
bXBsZXRpb25IYW5kbGVyOm1ha2VCbG9ja1B0cihbY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3Zl
KGNvbXBsZXRpb25IYW5kbGVyKSwgY2hlY2tlciA9IFdURk1vdmUoY2hlY2tlcildIChCT09MIHJl
c3VsdCkgbXV0YWJsZSB7CisgICAgWyhpZCA8V0tVSURlbGVnYXRlUHJpdmF0ZT4pZGVsZWdhdGUg
X3dlYlZpZXc6bV91aURlbGVnYXRlLm1fd2ViVmlldyByZXF1ZXN0U3RvcmFnZUFjY2Vzc1BhbmVs
Rm9yRG9tYWluOnJlcXVlc3RpbmdEb21haW4uc3RyaW5nKCkgdW5kZXJDdXJyZW50RG9tYWluOmN1
cnJlbnREb21haW4uc3RyaW5nKCkgY29tcGxldGlvbkhhbmRsZXI6bWFrZUJsb2NrUHRyKFtjb21w
bGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCBjaGVja2VyID0gV1RG
TW92ZShjaGVja2VyKV0gKEJPT0wgcmVzdWx0KSBtdXRhYmxlIHsKICAgICAgICAgaWYgKGNoZWNr
ZXItPmNvbXBsZXRpb25IYW5kbGVySGFzQmVlbkNhbGxlZCgpKQogICAgICAgICAgICAgcmV0dXJu
OwogICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihyZXN1bHQpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV0tTdG9yYWdlQWNjZXNzQWxlcnQuaCBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dLU3RvcmFnZUFjY2Vzc0FsZXJ0LmgKaW5kZXggNmI3NzI5
NjhjNDk5NzZlMTk0YjZhMjA0OGZjZDExOWM2ZmM2YTA1YS4uMTViNTNhZWMxNmRhODA2OWNkZGNi
Mzk5Y2M2OGVjZmM2MTljYTY5OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
Q29jb2EvV0tTdG9yYWdlQWNjZXNzQWxlcnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9Db2NvYS9XS1N0b3JhZ2VBY2Nlc3NBbGVydC5oCkBAIC00MSw3ICs0MSw5IEBAIGNsYXNzIFJl
Z2lzdHJhYmxlRG9tYWluOwogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAotdm9pZCBwcmVzZW50U3Rv
cmFnZUFjY2Vzc0FsZXJ0KFdLV2ViVmlldyAqLCBjb25zdCBTdHJpbmcmIHJlcXVlc3RpbmdTdHJp
bmcsIGNvbnN0IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiBjdXJyZW50RG9tYWluLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsKK3ZvaWQgcHJlc2VudFN0b3JhZ2VBY2Nlc3NB
bGVydChXS1dlYlZpZXcgKiwgY29uc3QgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mIHJlcXVl
c3RpbmdEb21haW4sIGNvbnN0IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiBjdXJyZW50RG9t
YWluLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsKK3ZvaWQgcHJlc2VudFN0b3Jh
Z2VBY2Nlc3NBbGVydFF1aXJrKFdLV2ViVmlldyAqLCBjb25zdCBXZWJDb3JlOjpSZWdpc3RyYWJs
ZURvbWFpbiYgZmlyc3RSZXF1ZXN0aW5nRG9tYWluLCBjb25zdCBXZWJDb3JlOjpSZWdpc3RyYWJs
ZURvbWFpbiYgc2Vjb25kUmVxdWVzdGluZ0RvbWFpbiwgY29uc3QgV2ViQ29yZTo6UmVnaXN0cmFi
bGVEb21haW4mIGN1cnJlbnQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpOwordm9p
ZCBkaXNwbGF5U3RvcmFnZUFjY2Vzc0FsZXJ0KFdLV2ViVmlldyAqLCBOU1N0cmluZyAqLCBOU1N0
cmluZyAqLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsKIAogfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XS1N0b3JhZ2VBY2Nlc3NBbGVydC5t
bSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dLU3RvcmFnZUFjY2Vzc0FsZXJ0Lm1t
CmluZGV4IDYyNzgyYTY2MDdjMjBkMWQ3ODYxNzY1MTA5MTY5ZmU2NTgwYmY1YTQuLjI1MjVhYWJk
MjY4MGY2NTZhYWZhM2JkNzM2NGI0ZDkyODc4MjA5NGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0NvY29hL1dLU3RvcmFnZUFjY2Vzc0FsZXJ0Lm1tCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dLU3RvcmFnZUFjY2Vzc0FsZXJ0Lm1tCkBAIC0zNiwxMyAr
MzYsOSBAQAogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAotdm9pZCBwcmVzZW50U3RvcmFnZUFjY2Vz
c0FsZXJ0KFdLV2ViVmlldyAqd2ViVmlldywgY29uc3QgU3RyaW5nJiByZXF1ZXN0aW5nLCBjb25z
dCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYgY3VycmVudCwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgcHJlc2VudFN0b3JhZ2VBY2Nl
c3NBbGVydChXS1dlYlZpZXcgKndlYlZpZXcsIGNvbnN0IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9t
YWluJiByZXF1ZXN0aW5nLCBjb25zdCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYgY3VycmVu
dCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsK
LSAgICBhdXRvIGNvbXBsZXRpb25CbG9jayA9IG1ha2VCbG9ja1B0cihbY29tcGxldGlvbkhhbmRs
ZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oYm9vbCBzaG91bGRBbGxvdykgbXV0YWJs
ZSB7Ci0gICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHNob3VsZEFsbG93KTsKLSAgICB9KTsKLQot
ICAgIGF1dG8gcmVxdWVzdGluZ0RvbWFpbiA9IHJlcXVlc3RpbmcuY3JlYXRlQ0ZTdHJpbmcoKTsK
KyAgICBhdXRvIHJlcXVlc3RpbmdEb21haW4gPSByZXF1ZXN0aW5nLnN0cmluZygpLmNyZWF0ZUNG
U3RyaW5nKCk7CiAgICAgYXV0byBjdXJyZW50RG9tYWluID0gY3VycmVudC5zdHJpbmcoKS5jcmVh
dGVDRlN0cmluZygpOwogCiAjaWYgUExBVEZPUk0oTUFDKQpAQCAtNTIsNiArNDgsMzMgQEAgdm9p
ZCBwcmVzZW50U3RvcmFnZUFjY2Vzc0FsZXJ0KFdLV2ViVmlldyAqd2ViVmlldywgY29uc3QgU3Ry
aW5nJiByZXF1ZXN0aW5nLCBjb24KICNlbmRpZgogCiAgICAgTlNTdHJpbmcgKmluZm9ybWF0aXZl
VGV4dCA9IFtOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OldFQl9VSV9OU1NUUklORyhAIlRoaXMg
d2lsbCBhbGxvdyDigJwlQOKAnSB0byB0cmFjayB5b3VyIGFjdGl2aXR5LiIsIEAiSW5mb3JtYXRp
dmUgdGV4dCBmb3IgcmVxdWVzdGluZyBjcm9zcy1zaXRlIGNvb2tpZSBhbmQgd2Vic2l0ZSBkYXRh
IGFjY2Vzcy4iKSwgcmVxdWVzdGluZ0RvbWFpbi5nZXQoKV07CisKKyAgICBkaXNwbGF5U3RvcmFn
ZUFjY2Vzc0FsZXJ0KHdlYlZpZXcsIGFsZXJ0VGl0bGUsIGluZm9ybWF0aXZlVGV4dCwgV1RGTW92
ZShjb21wbGV0aW9uSGFuZGxlcikpOworfQorCit2b2lkIHByZXNlbnRTdG9yYWdlQWNjZXNzQWxl
cnRRdWlyayhXS1dlYlZpZXcgKndlYlZpZXcsIGNvbnN0IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9t
YWluJiBmaXJzdFJlcXVlc3RpbmcsIGNvbnN0IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiBz
ZWNvbmRSZXF1ZXN0aW5nLCBjb25zdCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYgY3VycmVu
dCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sK
KyAgICBhdXRvIGZpcnN0UmVxdWVzdGluZ0RvbWFpbiA9IGZpcnN0UmVxdWVzdGluZy5zdHJpbmco
KS5jcmVhdGVDRlN0cmluZygpOworICAgIGF1dG8gc2Vjb25kUmVxdWVzdGluZ0RvbWFpbiA9IHNl
Y29uZFJlcXVlc3Rpbmcuc3RyaW5nKCkuY3JlYXRlQ0ZTdHJpbmcoKTsKKyAgICBhdXRvIGN1cnJl
bnREb21haW4gPSBjdXJyZW50LnN0cmluZygpLmNyZWF0ZUNGU3RyaW5nKCk7CisKKyNpZiBQTEFU
Rk9STShNQUMpCisgICAgTlNTdHJpbmcgKmFsZXJ0VGl0bGUgPSBbTlNTdHJpbmcgc3RyaW5nV2l0
aEZvcm1hdDpXRUJfVUlfTlNTVFJJTkcoQCJEbyB5b3Ugd2FudCB0byBhbGxvdyDigJwlQOKAnSBh
bmQg4oCcJUDigJ0gdG8gdXNlIGNvb2tpZXMgYW5kIHdlYnNpdGUgZGF0YSB3aGlsZSBicm93c2lu
ZyDigJwlQOKAnT8iLCBAIk1lc3NhZ2UgZm9yIHJlcXVlc3RpbmcgY3Jvc3Mtc2l0ZSBjb29raWUg
YW5kIHdlYnNpdGUgZGF0YSBhY2Nlc3MuIiksIGZpcnN0UmVxdWVzdGluZ0RvbWFpbi5nZXQoKSwg
c2Vjb25kUmVxdWVzdGluZ0RvbWFpbi5nZXQoKSwgY3VycmVudERvbWFpbi5nZXQoKV07CisjZWxz
ZQorICAgIE5TU3RyaW5nICphbGVydFRpdGxlID0gW05TU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6
V0VCX1VJX05TU1RSSU5HKEAiQWxsb3cg4oCcJUDigJ0gYW5kIOKAnCVA4oCdIHRvIHVzZSBjb29r
aWVzIGFuZCB3ZWJzaXRlIGRhdGEgd2hpbGUgYnJvd3Npbmcg4oCcJUDigJ0/IiwgQCJNZXNzYWdl
IGZvciByZXF1ZXN0aW5nIGNyb3NzLXNpdGUgY29va2llIGFuZCB3ZWJzaXRlIGRhdGEgYWNjZXNz
LiIpLCBmaXJzdFJlcXVlc3RpbmdEb21haW4uZ2V0KCksIHNlY29uZFJlcXVlc3RpbmdEb21haW4u
Z2V0KCksIGN1cnJlbnREb21haW4uZ2V0KCldOworI2VuZGlmCisKKyAgICBOU1N0cmluZyAqaW5m
b3JtYXRpdmVUZXh0ID0gW05TU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6V0VCX1VJX05TU1RSSU5H
KEAiVGhpcyB3aWxsIGFsbG93IOKAnCVA4oCdIGFuZCDigJwlQOKAnSB0byB0cmFjayB5b3VyIGFj
dGl2aXR5LiIsIEAiSW5mb3JtYXRpdmUgdGV4dCBmb3IgcmVxdWVzdGluZyBjcm9zcy1zaXRlIGNv
b2tpZSBhbmQgd2Vic2l0ZSBkYXRhIGFjY2Vzcy4iKSwgZmlyc3RSZXF1ZXN0aW5nRG9tYWluLmdl
dCgpLCBzZWNvbmRSZXF1ZXN0aW5nRG9tYWluLmdldCgpXTsKKyAgICAKKyAgICBkaXNwbGF5U3Rv
cmFnZUFjY2Vzc0FsZXJ0KHdlYlZpZXcsIGFsZXJ0VGl0bGUsIGluZm9ybWF0aXZlVGV4dCwgV1RG
TW92ZShjb21wbGV0aW9uSGFuZGxlcikpOworfQorCit2b2lkIGRpc3BsYXlTdG9yYWdlQWNjZXNz
QWxlcnQoV0tXZWJWaWV3ICp3ZWJWaWV3LCBOU1N0cmluZyAqYWxlcnRUaXRsZSwgTlNTdHJpbmcg
KmluZm9ybWF0aXZlVGV4dCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0
aW9uSGFuZGxlcikKK3sKKyAgICBhdXRvIGNvbXBsZXRpb25CbG9jayA9IG1ha2VCbG9ja1B0cihb
Y29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oYm9vbCBzaG91
bGRBbGxvdykgbXV0YWJsZSB7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHNob3VsZEFsbG93
KTsKKyAgICB9KTsKKwogICAgIE5TU3RyaW5nICphbGxvd0J1dHRvblN0cmluZyA9IFdFQl9VSV9T
VFJJTkdfS0VZKEAiQWxsb3ciLCAiQWxsb3cgKGNyb3NzLXNpdGUgY29va2llIGFuZCB3ZWJzaXRl
IGRhdGEgYWNjZXNzKSIsIEAiQnV0dG9uIHRpdGxlIGluIFN0b3JhZ2UgQWNjZXNzIEFQSSBwcm9t
cHQiKTsKICAgICBOU1N0cmluZyAqZG9Ob3RBbGxvd0J1dHRvblN0cmluZyA9IFdFQl9VSV9TVFJJ
TkdfS0VZKEAiRG9uJ3QgQWxsb3ciLCAiRG9uJ3QgQWxsb3cgKGNyb3NzLXNpdGUgY29va2llIGFu
ZCB3ZWJzaXRlIGRhdGEgYWNjZXNzKSIsIEAiQnV0dG9uIHRpdGxlIGluIFN0b3JhZ2UgQWNjZXNz
IEFQSSBwcm9tcHQiKTsKIAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>